Squashed 'import-layers/yocto-poky/'.

dc8508f build-applance-image: Fix to use the release branch for morty
bf5dd36 build-appliance-image: Update to morty head revision
746c681 meta-yocto-bsp: linux-yocto: bump to the latest stable version for non-x86 BSPs
73aa36e linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
cddb7f1 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1
3999037 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.8
e09163a linux-yocto/4.8: sync preempt-rt with upstream project
2c0efd2 devtool: runqemu: work around runqemu script path assumption
fb1df18 image_types: Use softer setting of WKS_FILE
e127d01 ref-manual: Removed host package requirements for SDK
0915ee7 ref-manual: Applied minor corrections to 2.2 migration section.
7c3cdf8 yocto-project-qs: Created two sub-sections for the "Build" section.
9ae4ab5 yocto-project-qs: Fixed the example to use 'dd' instead of 'mkefidisk.sh'
e40a8d7 ref-manual: Added BBMULTICONFIG glossary description.
5e0d634 dev-manual: Added section for multi-configuration support
41e7488 ref-manual: Updated 2.2 migration for runqemu porting to python
952a47b buildstats: check IMAGE_ROOTFS exists before checking its size
74f30e9 build-appliance-image: add /sbin to PATH
143f9a3 linux-yocto/4.8: update to v4.8.3
4fd9b03 linux-yocto/4.1: fix CVE-2016-5195 (dirtycow)
d9f9b52 linux-yocto/4.4: update to v4.4.26
a8a4817 kern-tools: make patches with shell-unsafe characters valid
a32f8ce linux-yocto/4.4/4.8: kernel config warning cleanups
ef627ab local.conf.sample.extended: remove RM_OLD_IMAGE
9c04beb ref-manual: Removed RM_OLD_IMAGE variable description.
b6eef65 ref-manual: Added more to migration 2.2 runqemu ported to python.
f9ea0a8 ref-manual: Updated the 2.2 Migration section with review changes.
d669b83 ref-manual: Added links for migration BitBake change.
3a5b86e ref-manual: Fixed missing title for migration section.
a6752eb ref-manual: Added the 2.2 Migration guide section.
2b08a28 ref-manual: Added note to RM_OLD_IMAGE indicating redundancy
97ac701 ref-manual: Changed BB_SETSCENE_VERIFY_FUNCTION name
069adf7 build-appliance-image: Update to master head revision
4b94b49 bitbake: toaster: Update default release to Morty
3332426 bitbake: toaster: Update poky fixture for Morty release
7656dea bitbake: toaster: Update oe-core fixture for Morty release
0fc03be linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4 Upgrades to Linux 4.4.22
bf16e8b linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1 Upgrades to Linux 4.1.33
06e0718 README.hardware: update Edgerouter section
fb49654 edgerouter.conf: produce wic images for Edgerouter
8bc037f poky-tiny.conf: set QB_DEFAULT_FSTYPE to IMAGE_FSTYPES
cd271d2 README.hardware: update Beaglebone section
924ca10 bitbake: bb.event: fix infinite loop on print_ui_queue
24abb88 binutils: Fix gas error with cfi_section inconsistencies
be587db libxml2: Make tests non-executable
2a2592e bind: fix two CVEs
5dba357 rpm: prevent race in tempdir creation
901e632 insane.bbclass: fix package_qa_check_arch() for mips64-o32
34b16fe arch-mips.inc: remove duplicates from PACKAGE_ARCHS
8d3a272 ppp: fix building with linux-4.8
21d5c58 Revert "linux-libc-headers: fix in/if.h includes"
b2726f7 populate_sdk_ext: explicitly set DL_DIR
7052400 sqlite3: Revert ad601c7962 from 3.14.1 amalgamation package
d8adf58 linux-yocto.inc: ensure do_kernel_link_images runs before do_strip
76f42d6 binutils: fix for MIPS "Can't find matching LO16 reloc" errors
ee835e1 libgpg-error: Make case generic for MIPS
704c8b8 live-vm-common.bbclass: Allow to use different kernel image than KERNEL_IMAGETYPE for /vmlinuz
65eb514 image_types.bbclass: add dependency do_image_wic -> do_bootimg
1d3b825 libxcb: use python3 to build it
ede3319 xcb-proto: fix for python3
a489cb1 xcb-proto: create .pyc files for python2
49d189e package_tar: avoid chdir warnings and restore cwd after packaging
a618501 source-highlight: use with-boost-libdir
a35493d insane.bbclass: Additional "mips" and "mipsel" machine definitions
ca3c782 kernel-arch.bbclass: Add xtensa and arc into valid_archs table
9ab52c8 libxrender: remove spurious build dependency
d46883c libxext: remove spurious dependencies
95a7729 libxext: remove stale git recipe
4e1b9d5 cmake: improve CMAKE_SYSTEM_PROCESSOR assignment in nativesdk
62a0163 cmake: also set CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
b7b2e34 base-files: fix profile error under < /dev/null
f683658 x86-base: Update version to 4.8
7c32a77 pixbufcache: handle gdk-pixbuf not being present
76b0c18 librsvg: remove redundant assignment
751cb2c Remove RM_OLD_IMAGE, it's no longer useful
1a95d4a bitbake: bitbake-user-manual: Changed BB_SETSCENE_VERIFY_FUNCTION name
19d39be bitbake: bitbake-user-manual: Fixes small typos for 'addtask' section
ce70355 bitbake: bitbake-user-manual: Updated the [noexec] and [nostamp] flag descriptions
1d4031a bitbake: bitbake-user-manual: Fleshed out the "addtask" documentation
eedb264 bitbake: bitbake-user-manual: Updated the datastore functions
b2f1d21 dev-manual: Re-wrote the remote GDB debugging section.
551f7d8 dev-manual: Applied review comments to "Packaging Externally Produced Binaries"
cbc5986 bsp-guide: Updated the yocto-bsp create selections in the example.
4616a47 toaster-manual: Added video link to 2.2 Toaster Intro.
13033b2 yocto-project-qs: Fixed Minnow MAX build example
371ab63 build-appliance-image: Update to master head revision
a75bccd bitbake: runqueue.py: Remove redundant whitelist checks
f725929 classes/externalsrc: re-run do_configure when configure files change
2d60ffc poky.conf: fix DISTRO_VERSION
1c85c29 sdk-installer: Fix unclear SDK installer message
df80b81 sysklogd and busybox: ignore return code from init script stop
83e4e27 update-rc.d.bbclass: ignore init script return code
a003a92 insane: display names instead of ELF machine numbers
8419817 lib/oe/qa: add ELF machine to string function
1de0cc9 build-appliance-image: Update to master head revision
9304fcc vte: Build without vala by default
4a7eb4b build-appliance-image: Update to master head revision
1b1bc79 ref-manual: Updated the USERADD_ERROR_DYNAMIC and USERADDEXTENSION variables.
96b9007 dev-manual: Updated "Packaging Externally Produced Binaries"
2cd0125 bsp-guide: Updated the yocto-bsp create output in the example.
684a875 ref-manual: Added link in the SYSROOT_DIRS_NATIVE description
cda7141 ref-manual: Review edits to do_populate_sysroot and SYSROOT_DIRS_NATIVE
6be52dd ref-manual: Updated three SYSROOT_DIRS* variables.
d31a826 ref-manual: Updated the do_sysroot_populate task description.
1053502 ref-manual: Updated QA error message.
3b4987a ref-manual: Added note about bb.fatal() raising an exception.
b1e4d96 documentation: Updated Manual revision table for 2.2
8312ba8 ref-manual: Applied review changes to the STAGING_DIR_HOST
aaeb1ee ref-manual: Added a reference to viewing task variable dependencies.
2da62c5 yocto-project-qs: Altered MinnowBoard MAX example
ca2b282 mega-manual: Added new chapters to support building the manual
8e57e88 poky.ent: Updated the variables for Morty release.
5f146e5 dev-manual: Added new section on recipe style guidelines
81698ab dev-manual: Fixed missing quote in SRC_URI example.
ca85107 ref-manual: Updated build/tmp/cache/ reference section
7ff22fc sdk-manual: Fixed example in "Passing Host Options"
2083e83 ref-manual: Updated the STAGING_DIR_HOST variable description.
c2c052e ref-manual: Added explanation of the -C option
e2083c0 dev-manual: Fixed IMAGE_FEATURES examples in debug section.
6ec45ef dev-manual: Update to GPL file finder script.
45a8da9 poky.conf: Bump version for 2.2.0 morty release
9756e53 bitbake: bitbake: Update version to 1.32.0
45f7221 archiver: fix gcc-source handling
0f042b1 bitbake: depexp: Close UI with error message on NoProvider event
b8f4804 genericx86-common.inc: add dependency do_image_wic -> do_bootimg
d9809e9 README.hardware: Update Genericx86 section
68c6457 genericx86-common.inc: produce EFI wic image
58d0abe linux-yocto: linux 4.4: bump to the latest stable version for non-x86 BSPs
f51158b linux-yocto: linux 4.1: bump to the latest stable version for non-x86 BSPs
b8499e7 linux-yocto: linux 4.8: bump to the final v4.8 release for non-x86 BSPs
0f25619 net-tools: fix building with linux-4.8
40f262f Revert "linux-libc-headers: if_tunnel: remove include of if/ip/in6.h"
a8efeb7 canned-wks: use GPT partition table
a7648af systemd-bootdisk.wks: update kernel command line
55a8fe7 flex: Backport buffer overflow fix
2109c62 flex: Update upstream check uri
fbdeb3f gnutls: Backport certificate check fix
b9d6a7c bitbake: main: Check bitbake server-only port is a number
77e5619 bitbake: runqueue: Optimise task id string manipulations
146eb22 bitbake: toaster: fix cloning of git+ssh repositories
f436629 bitbake: bb.runqueue: fix unexpected process death logic
31aafe6 bitbake: ui/knotty.py: Fix signal handling of SIGWINCH in BBProgress
9489382 testimage: disable build tests for qemumips and qemumips64
b5e8924 mkgummidisk.wks: update kernel command line
2f7c6bb mklibs-native: update broken SRC_URI
8209a01 gcc-runtime.inc: Add CPP support for x86-64-x32 tune
1b55ee1 libgcc-common.inc: Fix broken symlinks for multilib SDK
65107a9 machine.cfg: Unset CONFIG_64BIT for qemu i386 architecture
b872e2b linux-yocto/4.8: Enable R8169 driver since its needed by supported platforms
ac647ea update-rc.d.bbclass: check that init script is executable before running it
3536271 classes/populate_sdk_ext: add symlinks and unfsd to support Eclipse plugin
78c0199 oeqa/sshcontrol: Handle interrupted system call error
3c1faa1 u-boot: Add support to use uboot-extlinux-config class
7df1951 classes/uboot-extlinux-config: Add class
09a9de4 wic: selftest: add test for sdimage-bootpart
bed4a13 wic: selftest: add test for systemd-bootdisk
33bed1e security_flags: Diable PIE for mesa-gl
926a1e6 mkefidisk.wks: update kernel command line
dc67037 mkefidisk.wks: use MSDOS partition table
12ea11e wic: rewrite MBR disk identifier
5763d8f9 wic: generate PARTUUID for MDOS partitions
e8ce508 wic: set PARTUUID only for gpt partition table
1ddd23c linuxloader.bbclass: Adjust mips to cover all mips/mips64
8be92dc arch-mips: Add mipsisa{32, 64}r6{el, } tunes
559f52f gcc-configure: Add mipsisa{32, 64}r6{el, } support
561e7e1 glibc: Add mipsisa{32, 64}r6{el, } support
4ab8b8f bitbake.conf: Add mipsisa{32, 64}r6{el, } support
80a4239 siteinfo.bbclass: Add mipsisa{32, 64}r6{el, } support
8535ed9 linuxloader.bbclass: Add mipsisa{32, 64}r6{el, } support
ba8bfee libc-package.bbclass: Add mipsisa{32, 64}r6{el, } support
caf7e84 kernel-arch.bbclass: Add mipsisa{32, 64}r6{el, } support
4ec02b3 insane.bbclass: Add mipsisa{32, 64}r6{el, }
0623259 pseudo: backport a patch to fix renameat()
e96af0c xmlto: Add libxslt to native DEPENDS
ef7828c utils.bbclass: add function to check for git config user
4454d02 bitbake: toaster: Update tests to reflect front end changes
7f67977 bitbake: toaster: Delete notification update front end implementation to design
8df5606 bitbake: toaster: importlayer Fix layer dependencies button state toggle
5e9b405 bitbake: toaster: checksettings Remove confusing startup messages
25ea0b6 bitbake: toaster: buildinfohelper: Use correct way to get message from LogMessage
fffce32 bitbake: toaster: api / project Cancel any in progress builds before project delete
8c4091a linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.8
510157e bitbake: bitbake-user-manual: Added new section on BB-style functions
04128a6 bitbake: bitbake-user-manual: Updated minor wordings.
7ab459d bitbake: bitbake-user-manual: Added examples for using overrides with functions.
dda8ed0 bitbake: bitbake-user-manual: Fixed grammar from missing word
f12825d scripts: Rename 'native' to 'oe-run-native'
ce7e025 uninative: users can override download site
35ca6ad icecc.bbclass: replace os.popen with subprocess.check_output
3c51b74 devtool: modify command fails to ignore source files
79286b4 populate_sdk_base.bbclass: Make do_populate_sdk depend on PACKAGE_EXCLUDE_COMPLEMENTARY
27d947c image.bbclass: Make do_rootfs depend on PACKAGE_EXCLUDE_COMPLEMENTARY
d067b0e package_manager.py: Allow multiple regexps in PACKAGE_EXCLUDE_COMPLEMENTARY
2334201 package_manager.py: Allow a leading - in PACKAGE_EXCLUDE_COMPLEMENTARY
b16001f oeqa.buildperf: measure apparent size instead of real disk usage
4189a19 bitbake: toaster: add Font Awesome license
7d27275 bitbake: bb.build: in _exec_task, catch errors from TaskStarted
1110dde bitbake: event: prevent unclosed file warning in print_ui_queue
079396f gtk+3: Backport treeview focus fix
5f6a62c linux-yocto/4.8: fix BUG_ON() in workingset_node_shadows_dec() triggers
84113ca pigz: Update SRC_URI
c43aed1 perf: Fix to obey LD failure
ff3c3b8 yocto-bsp: linux-yocto recipes update (4.4 to 4.8) for x86-64 arch
8cdef44 yocto-bsp: linux-yocto recipes update (4.4 to 4.8) for PowerPC arch
338c775 yocto-bsp: linux-yocto recipes update (4.4 to 4.8) for qemu arch
fc34ac0 yocto-bsp: linux-yocto recipes update (4.4 to 4.8) for i386 arch
f43da79 yocto-bsp: linux-yocto recipes update (4.4 to 4.8) for MIPS64 arch
eb62965 machine.conf: Remove duplicate xserver choices
fe18ded yocto-bsp: linux-yocto recipes update (4.4 to 4.8) for MIPS arch
6020616 yocto-bsp: linux-yocto recipes update (4.4 to 4.8) for arm arch
3812e9f bitbake: bitbake: Update version to 1.31.2
79012f9 bitbake: bb/event.py: fire_ui_handlers enable threading lock support
45f401a sanity: Update minimum version requirement to 1.31.2
f5f3ccf alsa-lib: allow building ARM thumb again
7923647 devtool: deploy-target: Avoid unnecessary dependency on awk on the target
ed12917 parselogs.py: Add disabling eDP error to x86_common whitelist
f205384 classes/sstate.bbclass: Enable thread lock when checkstatus
f1f6993 Revert "gst-player: Disable visualizations"
f63e8d2 xf86-video-intel: Upgrade to recent git
28ffbd4 matchbox-panel-2: Fix small systray icon drawing
389cfd2 Revert "connman-gnome: StatusIcon adapts to size changes"
bb7468e Revert "attr: Added ncurses to depends"
18caaca devtool: add: build nodejs-native if npm is needed and not available
ee697d8 devtool: add: display a warning for deprecated -f/--fetch option
0c5fd7a devtool: add: fix error message when only specifying a recipe name
dea7097 base-files: don't export TZ="UTC" from /etc/profile
d89e16d oeqa/selftest: Update test after fetcher error changes
1688288 systemtap: rationalise dependencies
25f3a3d json-c: add BBCLASSEXTEND for native and nativesdk
fb71f34 linux-libc-headers: if_tunnel: remove include of if/ip/in6.h
8c5ac48 linux-yocto/4.1/4.4: remove innappropriate standard/base patches
7c6b78a linux-libc-headers: fix in/if.h includes
f154229 linux-yocto/4.8: update to 4.8 -final release
5ffef79 linux-libc-headers: update to 4.8 final
e2290f0 linux-yocto/4.4: update to v4.4.22
d69f01e linux-yocto/4.1: update to 4.1.33
edf08e5 linux-yocto/4.8: mmc configuration for x86*
575ee2d cmake: Use bb.fatal() instead of raising FuncFailed
56be38f testimage.bbclass: Use bb.fatal() instead of raising FuncFailed
4768cd6 utility-tasks.bbclass: Use bb.fatal() instead of raising FuncFailed
4dbb0d7 package.bbclass: Use bb.fatal() instead of raising FuncFailed
4c25460 libc-package.bbclass: Use bb.fatal() instead of raising FuncFailed
c5823be testsdk.bbclass: Use bb.fatal() instead of raising FuncFailed
fe7a783 chrpath.bbclass: Use bb.fatal() instead of raising FuncFailed
39f80ce sstate.bbclass: Use bb.fatal() instead of raising FuncFailed
db6ae52 useradd.bbclass: Use bb.fatal() instead of raising FuncFailed
fadc4fc gtk-immodules-cache.bbclass: Use bb.fatal() instead of raising FuncFailed
823acf8 systemd.bbclass: Use bb.fatal() instead of raising FuncFailed
0aaa51e license.bbclass: Use bb.fatal() instead of raising FuncFailed
7f22c97 update-rc.d.bbclass: Use bb.fatal() instead of raising FuncFailed
f13bd4b gummiboot.bbclass: Use bb.fatal() instead of raising FuncFailed
d11b51d systemd-boot.bbclass: Use bb.fatal() instead of raising FuncFailed
4639810 syslinux.bbclass: Use bb.fatal() instead of raising FuncFailed
103ab2d grub-efi.bbclass: Use bb.fatal() instead of raising FuncFailed
255f260 useradd-staticids.bbclass: Use bb.fatal() instead of raising FuncFailed
fc3dc09 package_rpm.bbclass: Use bb.fatal() instead of raising FuncFailed
c7d522c package_deb.bbclass: Use bb.fatal() instead of raising FuncFailed
9efdd60 package_ipk.bbclass: Use bb.fatal() instead of raising FuncFailed
4359ef0 base.bbclass: Use bb.fatal() instead of raising FuncFailed
0c9ba38 binutils: apply RPATH fixes from our libtool patches
55e8c3a binutils: fix typo in libtool patch
922a745 classes/native: set lt_cv_sys_lib_dlsearch_path_spec
87acbfe classes/cross: set lt_cv_sys_lib_dlsearch_path_spec
3a73fe0 beaglebone.conf: produce wic images for Beaglebone
642197f bitbake: data: Fix handling of vardepvalueexclude
be873a0 machine-sdk: Clear ABIEXTENSION to avoid sstate checksum mismatch issues
2d7df9b oeqa/sstatetests: Add test for multilib allarch checksums
ff8fa4c boost: Ensure native recipes have consistent checksums
2ba0fbc gcc-cross: Stop target recipes depending on SDK_SYS
6f03af9 multilib.conf: Ensure sstate checksums don't change when using this include
a9b3a6d allarch: Fixes to stop rebuilds when change multilibs
d36c703 nativesdk: Don't enable MULTILIBS
7ae326c oeqa/utils: Add StreamHandler to logger
5d96223 subprocess: remove Popen in favor of check_output
1ab3a23 kbd: create ptest sub-package
3159738 mkefidisk.wks: use partition UUID and GPT partition table
7b31253 scripts: add new script 'native'
14cdcbc grub-efi.bbclass: Add a space between root and append parameter
a17ce35 build-perf-test-wrapper.sh: accept test case failures
e4e6ff3 oe-build-perf-test: return 2 if some tests failed
debb7bb multilib_header: avoid sstate checksum issues for -nativesdk recipes
4df4024 build-perf-test-wrapper.sh: show defaults for '-a' and '-w'
eb1c8cd build-perf-test-wrapper.sh: check for positional arguments
a8002cb runqemu: Add little endian variations for MIPS
4f58013 scripts/buildstats-diff: implement --multi option
a235c1b scripts/buildstats-diff: make logger msg format a bit more readable
cbbe51f scripts/buildstats-diff: use exception for internal error handling
4cdf47a scripts/buildstats-diff: add walltime to --diff-attr
c6047cd scripts/buildstats-diff: add read_ops and write_ops to --diff-attr
44bc3f4 scripts/buildstats-diff: add read_bytes and write_bytes to --diff-attr
01a2b58 scripts/buildstats-diff: introduce --diff-attr
e053091 scripts/buildstats-diff: do not hardcode field widths in output
7113ac9 scripts/buildstats-diff: implement BSTask class
4cc1c43 scripts/buildstats-diff: rename --min-time and --min-timediff args
58bd0fd scripts/buildstats-diff: check that the given directory exists
d887997 mips64-linux: set ac_cv_sizeof_ssize_t for mips64el
a3e5ebe image-buildinfo: restore trailing newline
2056bad linux-yocto.inc: Run kernel_version_sanity_check with final source
0cbd843 tzdata: update to 2016g
cdbdca1 tzcode-native: Update to 2016g
7aba4c9 pseudo: quiet diagnostics during startup for pseudo -d
4205c0b libxml-parser-perl: remove redundant expat-native dependency
d19645b wic: rename and amend systemd-boot wks file
fe01148 bootchart2: Allocate space on heap for collector chunks
a75b79a genericx86-64.conf: Add SERIAL_CONSOLES_CHECK = "ttyS0"
de34aab bitbake: toaster: make error message more informative
af0f679 bitbake: toaster: fix 'Unhandled MetadataEvent' error
c7b55ea bitbake: toaster: fix handling of EnvironmentError
cc4c02a bitbake: toaster: check if file exist
efa8cfb bitbake: toaster: stop modifying OEROOT in toaster script
5b035ed bitbake: toaster: layerdetails Update implementation of delete imported layer
ac5aba6 bitbake: toaster: customrecipe Add frontend feature to delete custom image recipe
5b23bf0 bitbake: toaster: importlayer Convert success import to new notification system
fbf7e14 bitbake: toaster: Add front end controls for deleting a build
44058c4 bitbake: toaster: Add backend API for deleting a build
d209f8b bitbake: toaster: alerts and modals Avoid modals and alerts overlaying each other
0d70606 bitbake: toaster: project page Implement front end feature to delete project
7ca44f5 bitbake: toaster: libtoaster Add a global notification set/show mechanism
8ba7ccd bitbake: toaster: move MostRecentBuildsView to its own widget
4d0bc8d bitbake: toaster: Clean up and convert to rest api project edit and get calls
0b17e6d bitbake: runqueue: Ensure worker failure is accounted for in task statistics
3b6ec40 db: Refresh patches
9393b16 db: Upgrade to 6.0.35
b625335 cross-canadian/libgcc-common: Fixes for arm multilib
e0e8cd0 parselogs: Update uvesafb errors in qemu whitelist
5753147 runqemu: explicitly set image format
b8f5fda qemuboot: don't fail when QB_DEFAULT_KERNEL isn't symlink
e01466f cve-check-tool: report progress when downloading CVE database
0466c81 cve-check-tool: convert do_populate_cve_db() from python to sh
5d8a968 dev-manual: Applied review changes to GNU debugging section.
75e60f1 ref-manual: Updated the DEPENDS variable description
b064c34 dev-manual: Updated the example to identify GPL files.
2199b68 dev-manual: Updated the devpyshell section
99b9efb dev-manual: Updates to the on-target debugging section.
e7e6150 ref-manual: Updated the DEPENDS variable description.
0d091db ref-manual: Applied small edits to the DEPENDS variable desc.
bbc7a64 ref-manual, dev-manual: Add information on devpyshell
9f2cf76 dev-manual: Added new GDB debug requirements section for target
924966f dev-manual: Updated the Known issue for QEMU not working in usermode
8a8349b ref-manual, dev-manual: Updates for "staging" discussion and variables.
1c59455 dev-manual: Added new "Dependencies" section to writing new rec.
cd2a26c ref-manual: Updated the DEPENDS variable description
b8ad433 dev-manual: Applied review edits to the "writing new recipe"
285931e dev-manual, sdk-manual: Applied review comments for SDK movement
f1b31e9 ref-manual: Updated the intro to the devtool quick reference.
58b1381 ref-manual: Fixed a typo.
13d47a1 ref-manual: Added two new tips
ad539f5 ref-manual: Added 'depchains' description for auto dep. mech.
8263839 ref-manual: Updated the PACKAGES variable description
89621b1 ref-manual: Updated "Viewing Variable Values" section.
959a062 sdk-manual, dev-manual: Applied SDK review edits.
4404fc3 ref-manual: Provided an introductory text to the devtool ref.
39639ad dev-manual: Updates to the "Writing a New Recipe" section.
fe8d575 sdk-manual: New Projet chapter added and other fixes
ed6a549 documentation: devtool upgrade and quick ref changes to mult manuals
38278f0 sdk-manual: Added the devtool upgrade command flow to the manual.
54a10ca dev-manual: Updated the devtool upgrade command flow
e2251b5 maintainers: Change maintainers for python(3) modules
3c1af2e maintainers: new maintainers in multiple recipes
3935476 maintainers.inc: Change perl maintainer
8b24b0c bitbake: build.py: fix os.getcwd() exception
1290534 oeqa/sstatetests: Ensure we cover deb packaging backend for sstate test
f420227 dpkg: Only set DEB_HOST_ARCH in target case
93d4250 populate_sdk_base.bbclass: fix broken variables
46c5e7a lib/oeqa: Regenerate galculator configure
c8089ae recipetool: newappend: drop _provide_to_pn
a713b78 perl: module-overload needs module-overloading
5268f78 perl: correct math-bigint dependency typo
206ad10 lttng-tools: fix ptest
d31bd86 linux-yocto/4.8: update to -rc8
425c614 openssl: Upgrade 1.0.2i -> 1.0.2j
390140e image_types.bbclass: remove redundant dependency
c6fbb37 linux-yocto: Move PREFERRED_PROVIDER check to be generic
04a3b6c scripts/cleanup-workdir: Adapt to SDK_ARCH -> SDK_SYS chanages for crosssdk
cf882b6 SDK: Allow changing SDKMACHINE without wiping TMP folder
2d35edf libsolv: enable MULTI_SEMANTICS
bb744b8 parselogs.py: Add amd_nb error to x86_common whitelist
850ded3 gst-player: Disable visualizations
013fff4 perl: fix CVE-2016-1238
fd4391d python: fix CVE-2016-1000110
b5a0033 archive.bbclass: fix do_ar_original archiving of multiple source repos
58866d6 archiver.bbclass: ignore unpack sub-directories in do_ar_original
e8426a5 linux-firmware: package Broadcom BCM43430 firmware
2e18c87 linux-firmware: update to revision 42ad5367
b7fac3f boost: add support for additional boost libs
55cab15 boost: disable pch when build boost-math
6c22e39 ptest-runner: recipe update related to minor fix.
527764b devtool: Add a line break to generated README
47abf98 prelink: Manipulate library paths to match the target system library setup
153da94 utils: Add all_multilib_tune_list function
de4fffe machine/qemu*: Add comment regarding the reason for virtio-rng-pci
72dc833 glibc-initial: use python3 instead of python (v2)
7ff051c autotools.bbclass: use python3 instead of python (v2)
8b5a62e uninative: Upgrade to 1.4
725e66e meta-environment: ensure corret TOOLCHAIN_CONFIGSITE_NOCACHE value
8dfcfbe arch-mips: Add mips64-o32 tunes
bad17ae tune-ppc[65]00.inc: Disable QEMU usermode usage
18afc88 qemu.bbclass: Allow use different QEMU binary depending of target
2305c00 pseudo: Fix problem where pseudo could kill a container init
1d1f94b scripts/runqemu: provide better error message on runqemu ifup fail
f82cc4b scons.bbclass: rework parameters for install task
37f7c03 cracklib: Apply patch to fix CVE-2016-6318
36accdb gnutls: Skip QA check for text relocation on x86
347316d wic: remove partition images
6b8d16c openssl.inc: avoid random ptest failures
d9e1bb6 openssl: update to 1.0.2i (CVE-2016-6304 and more)
2f4b80b arch-mips: Add mips64r2 tunes
0f16c90 lttng-tools: adds DEPENDS to util-linux
a9f4b94 lttng-tools: fixes a wrong header issue
7caf628 lib/oe/patch: improve accuracy of patch header extraction
f692840 lib/oe/patch: exclude "From <hash>" from commit message when PATCHTOOL is "git"
efa3c7d nativesdk-qemu-helper: drop old Zaurus flash tools
be642a6 bluez5: remove duplicated udev setting from FILES_${PN}
3d7a4f4 pcmciautils: remove duplicated udev setting from FILES_${PN}
fa78499 eudev: don't move udev directory
c0dbfc6 xf86-input-vmmouse: remove duplicated udev setting from FILES_${PN}
26a6e95 mdadm: remove duplicated udev setting from FILES_${PN}
4a071fb ofono: remove duplicated udev setting from FILES_${PN}
20d355b libinput: fix udevdir
544241e systemd: install udev.pc
5728255 bitbake.conf: add eudev's udevdir to FILES_${PN}
bd933a3 buildtools/uninative-tarball: Fix deployment overlap issues
b75ed25 toolchain-shar-relocate.sh: Fix typo
cea1d78 sdk-manual: Removed two Git tag developer notes.
394b909 sdk-manual: Removed notes about the BitBake Commander
0ac7b1e sdk-manual: Updated Passing host options example
ad1ba19 ref-manual: Updates to PKGDESTWORK and do_packagedata
5ec03cd dev-manual: Updated add and modify flows and text.
0c823cc sdk-manual: Updates to the devtool Finish command flow.
7d208c1 ref-manual: Applied review edits to auto added runtime deps
aba386b sdk-manual: Updated SDK workflow
6cecded sdk-manual, ref-manual: New variable for including toolchain
4824bb4 ref-manual: Added note to PREFERRED_VERSION
8bc6c1c ref-manual: New section and updates for runtime dep work
899ea9c ref-manual: Another edit to the oe-pkgdata-utils description
b247bae ref-manual: More wording changes to oe-pkgdata-util section.
79cb2ed ref-manual: Applied some re-writes to oe-pkgdata-util use section.
7267910 sdk-manual: Updated the connection steps for deployment
8c2172b ref-manual: New section on using oe-pkgdata-util
43b5d14 sdk-manual: Fixed spelling error.
72d1435 documentation: Added new description for the PACKAGECONFIG_CONFARGS variable.
066ecf6 mega-manual: Added the new mars appendix to the sdk-manual build section.
11e9d10 ref-manual: Added variable description for PACKAGECONFIG_CONFARGS
0637314 sdk-manual: Updated neon JDK requirements to be 1.8+
4317c65 sdk-manual: Updated legacy mars links to go to neon section.
3277d8d sdk-manual: Updates to "Working With Eclips" for Neon
8a3d542 ref-manual: Fixed typo for "debugging".
7791b32 poky.ent: Updated the essentials list variable for Fedora
77dee66 ref-manual: Changed command to install Fedora Python package
0de5767 yocto-project-qs, ref-manual: Updated Python requirement to 3.4.0
5f5671e ref-manual: Removed link to ROOTFS_RO_UNNEEDED.
2a2ccb0 ref-manual: Added new note item to the DEPENDS note box.
4b8e7d8 ref-manual: Updated the MLPREFIX variable description.
2c38cc6 dev-manual: Updated QEMU known issues for user-mode
007193c ref-manual: Added variable description for FORCE_RO_REMOVE.
c3adec9 ref-manual: Updated CLASSOVERRIDE with a new example.
d4cd787 yocto-project-qs, ref-manual: Removed Python 3.0 exclusion
3fa0f9d ref-manual: Updated the DISTROOVERRIDES variable description.
2233924 ref-manual: Updated the MACHINEOVERRIDES variable description
44b0b07 ref-manual: Rewrite of the CLASSOVERRIDE variable in the glossary
43b9962 ref-manual: Grammar fix in the OVERRIDES variable description.
9f0e068 ref-manual: Grammar fix in "Stamp Files and the Rerunning of Tasks"
e0347ec ref-manual: Clarified the OVERRIDES glossary description.
f187919 ref-manual: New section clarifying stamps, input checksums and sstate cache
ba8bc1b ref-manual: Updated systemd-boot documentation link.
9173b11 bitbake: knotty: ensure progress bar output is accounted for in display
0d76de8 bitbake: knotty: Show task elapsed time
c902e7b oeqa/selftest/base: backup and restore local configuration files
659fab4 testimage.bbclass: Add package manager dependency
0156812 scripts/runqemu: Using a cpio* rootfs has no special network
deba7ca runqemu: Move virtio RNG to machine configuration
8aa8d14 cmake-native: prefer native sysroot libraries over host
49d4477 gstreamer1.0-libav: Add 'valgrind' config option
8381125 wpa_supplicant: Security Advisory-CVE-2016-4477
9b78237 wpa_supplicant: Security Advisory-CVE-2016-4476
d2259ac encodings: Add dependency to mkfontdir-native
65a7b15 bitbake.conf: add a lazy default for SDKMACHINE
e08640b buildtools-tarball: improve stamp independence
cb1ffb8 toolchain-scripts-base: add base class for toolchain_create_sdk_version
8f85911 xserver-xorg: fix qa warnings
88df0e4 bitbake: cooker/providers: Only add target to world build if task exists
37d5307 bitbake: fetch2: handle absolute paths in subdir
7358cbf base.bbclass: Drop unnecessary dirs setting
577ff4e autotools/siteinfo: Tweak CONFIG_SITE handling for determism/races
99284c3 asciidoc: set CLEANBROKEN to fix rebuild
d6616a4 directdisk*.wks: add serial console support
ef942d6 perf: Fix to obey LD failure on qemux86-64
0f09354 libunwind: fix build by linking with bfd instead of gold
95da87e systemd: fix indentation
aa7f7b6 x264: add textrel to INSANE_SKIP
f5b1cd0 perl: fix CVE-2015-8607
c27660d perl: fix CVE-2016-6185
7a0fbb9 toolchain-shar-relocate.sh: Add error-handling
2a0f4e7 libnewt: link whiptail properly with libnewt
3c1807e uninative-tarball: Make stamp independent
46afeab bitbake: bitbake-user-manual: Added information for using single quotes
39828d3 bitbake: bitbake-user-manual: New section on functions you can call from Python
5503ed1 bitbake: bb.build: in _exec_task, catch BBHandledException
792c40c buildtools-tarball: add SDKMACHINE to stamps-extra-info
9294261 runqemu: don't fail during check_arg_machine()
5d3c56f runqemu: don't try and invoke bitbake when running in a toolchain env
c97912a runqemu: try and guess qemu-system binary when MACHINE isn't set
cd47b64 runqemu: validate paths and attempt to infer unset paths
7ab74d8 linux-yocto: Updates genericx86* SRCREVs for linux-yocto 4.8
7f44dde linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4 Upgrades to Linux 4.4.20
ec41b0d linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1 Upgrades to Linux 4.1.32
66abd36 meta-yocto-bsp: bump to linux-yocto 4.8 for the non-x86 BSPs
3cbf23a meta-yocto-bsp: linux 4.4: bump to the latest stable version for the non-x86 BSPs
d16b6dd meta-yocto-bsp: linux 4.1: bump to the latest stable version for the non-x86 BSPs
1fe840a genericx86-common.inc: produce wic images
425a38a genericx86-common.inc: support boot by runqemu
d3e6e10 bitbake: runqueue: Handle missing sstate dependencies better
a884c43 bitbake: toaster: buildinfohelper local layer don't construct path using git info
6066729 bitbake: toaster: Add tests to detect if we have missing db migrations
7a3cccb bitbake: toaster: unlock BuildEnvirnoment when build is done
ad04a63 bitbake: runbuilds: code cleanup - remove unused imports
5e88c4a bitbake: runbuilds: code cleanup - whitespaces, long lines
323b81a bitbake: runbuilds: process builds on start
64d284b bitbake: runbuilds: process builds on SIGUSR1
e9a12e5 bitbake: toaster: notify runbuilds when build status changes
2478a6f bitbake: toaster: implement signal_runbuilds function
483c16a bitbake: toaster: fix checking of repository url
08af663 bitbake: cookerdata.py: Catch BBHandledException, preventing a backtrace in an event
f1d8f1e bitbake: cooker.py: add LAYERRECOMMENDS processing
74acb91 bitbake: toaster: Remove duplicate layer information
07aa966 bitbake: toaster: Indicate active navigation element
67ce1ce bitbake: toaster: Fix links to tasks with specific outcome
ac2ac31 bitbake: uihelper: use elif instead of repeated if
cb169d3 linux-yocto/4.8: introduce preempt-rt
8692bed linux-yocto/4.8: integrate 4.8-rc7
b4cf3f3 linux-yocto/4.1: 4.1.32 content and configuration warning fixes
0eacf03 kernel.bbclass: Add kernel_version_sanity_check function
c2908e1 boost: Replace math::static_lcm with integer
b26926c uninative-tarball: add SDKMACHINE to stamps-extra-info
e29c460 populate_sdk_base: fix support for changing SDKMACHINE settings
a767c78 oeqa/selftest/lic-checksum: don't report the expected failure to errors.yp
ffdc23a openssl: fix do_configure error when cwd is not in @INC
1fe48d0 gcc-configure: Enable initfini-array
a8cf594 oeqa/runtime/parselogs.py: Add ignore of tsc calibration fail in x86
3f31981 enchant: add PACKAGECONFIG for *spell
506df09 boost: switch to using C++11 atomics when available
d8af0f2 runqemu: improve finding of rootfs, kernel and dtb
67cb116 linux-firmware: package carl9170 separately
fbb99b2 runqemu-gen-tapdevs: remove /etc/runqemu-nosudo when remove taps
fad4caf default-distrovars.inc: remove libidn from LGPLv2_WHITELIST_GPL-3.0
b2a6f9a openssh: fix potential signed overflow to enable compilation with -ftrapv
69005ae image_types: add parted-native to do_image_wic depends
9ead92a gawk-3.1.5: fix non-glibc & gcc >= v4 builds
0a04692 package_manager.py: Change diagnostic messages per IRC
f1e3dc0 package_manager.py: Adjust error message order
1a8e50e qemuboot.bbclass: don't fail on very first build
dbb76e2 externalsrc.bbclass: Make reparsing work for BBCLASSEXTENDed recipes
91347ed kernel.bbclass: assign INITRAMFS_BASE_NAME using ?=
f5062f0 dropbear: deterministic selection of system -vs- bundled libtom libs
472c245 dropbear: fix -ltomcrypt -ltommath order when using system libtom libs
5637f86 runqemu: use OECORE_NATIVE_SYSROOT from sdk
5060e66 runqemu: work even if a *.qemuboot.conf isn't found
239d170 runqemu: try symlinks when kernel or rootfs can't be found
52e04cd qemuboot: also write the kernel link name to the conf file
0fd7247 runqemu: clarify an INFO message
7352d35 qemuboot: write the full kernel filename, not the link name
2952aff runqemu: add guidance to resolve issues with missing files
383a4af devtool: add: drop superfluous validation for recipe name
ce1904a lib/oe/recipeutils: fix invalid character detection in validate_pn()
90f925c recipetool: create: support git short form URLs
147774f recipetool: create: tweak license crunching
198c6d5 recipetool: create: pick up AC_PROG_SWIG
1370edb recipetool: create: detect python autoconf macros
541c54e recipetool: create: fix error with git tree and no network
e30276c recipetool: create: fix name/version extraction from filename
9aa1cf3 recipetool: create: improve python recipe license handling
3a8a0bb recipetool: create: fix picking up name from local python source tree
6a5bd99 runqemu: acquire_lock() should fail when failed to open the file
286db04 qemuppc.conf: adjust kernel console
2833b40 groff: not ship /usr/bin/glilypond
e5de851 linux-firmware: Add missing ralink-firmware License
77a9472 linux-firmware: Correct the LICENSE setting of license packages
49a7839 build-appliance-image: Create image in correct location
5414b80 bitbake: cooker: check if target contains task
088d386 bitbake: cookerdata: allow multiple passes of config re-parsing
e3e239b bitbake: cookerdata: fire ConfigParsed event after re-parse
359feed scripts: add tool to scan for bashisms recipe shell scripts
a24b2fa sanity.bbclass: split out config re-parse check
5fc455e pulseaudio: add ${S}/LICENSE to LIC_FILES_CHKSUM
de154f0 useradd_base.bbclass: Do not mess with the gshadow file in the sysroot
a4f10da util-linux: Disable bfs support
e88cee8 util-linux: Disable minix support.
8d3f712 qemuboot-x86: Add task_timeout = -1 to uvesafb
bdb10d8 cmake-native: rationalise system/internal library dependencies
04cc7ab cmake: use convenience options for clarity
12cd9c0 scripts: introduce buildstats-diff
06e56ab package_manager.py: fix bitbake package-index failed
55bb15f shadow: use relaxed usernames
7ba62d6 oeqa/sdkext/devtool: use a smaller module to test node.js functionality
f9b18c3 makedevs: don't restrict device node paths to 40 characters
92862c6 qemurunner: print out the runqemu command
d0b4ac3 cve-check.bbclass: Add class
1896732 cve-check-tool: Add recipe
08dc55c cmake: don't inherit autotools
84e0260 openssl: Fix MIPS64be and add MIPS64le
a7a6d05 oeqa/oetest: show stderr when running commands
cfe4112 sanity: make license QA failures fatal again
2a2634e openjade/sgml-common: Add sstate postrm commands
0573dce sstate: Add postrm command support
0c1b8bf bitbake: Add missing file from 'toaster: Allow git information to be null for BRLayer'
53b1fa2 bitbake: build: Allow dirs/cleandirs to work for empty functions
c3f630d bitbake: bitbake: fetch2: Make SRCREV_FORMAT name substitution safer
d5698c0 bitbake: fetch2/npm: don't download same URL multiple times
d649c64 bitbake: event.py: output errors and warnings to stderr
62c45ff oeqa/utils/decorators: LogResults fix race condition in linkfile
b28e6d6 oe-selftest: check for coverage version before starting tests
405262d image.bbclass: add IMAGE_DEVICE_TABLE to rootfs[vardeps]
f7367de create-pull-request: remove output directory
5b5c426 ptest-runner: allow building from externalsrc
d03439e patchelf: Update to version 0.9
a6f0bce busybox: Avoid race building libbb
de915fb linux-yocto: Adds new bbappend for genericx86 and genericx86-64 BSPs to support kernel 4.8
56a4900 Revert "oeqa.runtime.smart: work around smart race issues"
0825fcf libdrm: Explicitly disable cunit tests
2e8c59d piglit: Backport linker flag patch
26e46e6 runqemu: fix a race issue on lockdir
edc92ea python-smartpm: use md5 as the digest for rpm_sys channel
3f95a21 lib/oe/copy_buildsystem: fix building eSDK with indirect paths in BBLAYERS
ca10752 classes/populate_sdk_ext: ensure we clean the right temporary TMPDIR path
533315b eudev: Add missing pkgconfig dependencies
c77f114 autotools: Correctly filter m4 files view to setscene dependencies
1373b52 kernel-yocto: remove do_shared_workdir from SRCTREECOVEREDTASKS
55dd3fa linux-yocto/4.1: update to 4.1.32
1542689 linux-yocto/4.4: update to 4.4.20
7576715 linux-yocto/4.8: update to v4.8-rc6
f08aeff gtk-doc: require perl-native only if api-documentation feature is enabled
04e3dc6 image.bbclass: also mask debugfs versions of masked images
dd50dec image.bbclass: do not check size of the debugfs image
5d13da4 valgrind: MIPS: Make toolchain basename generic
f603002 gst-player: specify PV
f5e2daf sstate.bbclass: normalize whitelisted paths
d115b12 gstreamer1.0-plugins-good.inc: Fix libv4l2 packageconfig dependency
05602d9 classes/populate_sdk_ext: exclude image tasks from locked signatures
7c2d197 classes/gobject-introspecton-data: lazy assign GI_DATA_ENABLED
fc9ddc2 classes/gtk-doc: lazy assign GTKDOC_ENABLED
02e6c1e meta: cleanup d.getVar(var, 0)
b8e2bab meta: cleanup d.getVar(var, 1)
32b8267 testimage: add createrepo-native to testimage depends
564a0d7 gstreamer1.0-plugins-bad: Fix packageconfigs and patches
473a479 gstreamer1.0-omx: inherit upstream-version-is-even
32d14e3 bitbake.conf: Add BBSERVER to HASHBASE_WHITELIST
2c7849f oeqa: Remove linux user utilized for rpm test.
0736079 oeqa.buildperf: another fix for splitting 'nevr' string
6b889ff libical: fix build failure after changing machine
25468b5 tiff: Update download URL
03fa820 rpm: remove redundant removals
059c556 glibc: remove hard-coded reference to gcc -E
d4583c9 libpcre: explicitely specify CCLD_FOR_BUILD for this recipe
c14dc1a rpm: manually cleanup sysck
cc27fa2 sanity: fix hardcoded references to gcc
9da9abd busybox: allow overriding compiler name in KConfig
3e6f3e0 linux-libc-headers: allow overriding compiler name in KConfig
270f423 linux-yocto: allow overriding compiler name in KConfig
ddc7bd7 cross: export CC family from BUILD_* for cross compilers
a1bcc48 gstreamer1.0-plugins-good: enable v4l2-probe
2b92328 u-boot: Set u-boot binary permissions to 0644
5f8c168 useradd: do not delete users and groups during configure
996aaf9 oeqa/parselogs: Don't use cwd for file transfers
4359f8c poky: add Fedora-24 to SANITY_TESTED_DISTROS
ece1156 maintainers.inc: add missing recipes
2679a34 maintainers.inc: rename gtk-doc-stub to gtk-doc, reassign to me
68e35c8 oeqa.runtime.smart: work around smart race issues
d399134 oeqa/runtime/smart: Prune feeds to save memory
ab3f239 gtk-doc: only depend on native gtk-doc for documentation generation
620e2bf gtk-doc: use pkg-config-native in native gtk-doc.m4
5041e68 gstreamer: remove packaged copy of gtk-doc.m4
f224154 gobject-introspection: set GI_SCANNER_DISABLE_CACHE for native
ca9ff8b distro-alias.inc: rename gtk-doc-stub to gtk-doc
03425de clutter-1.0: do not use the prepackaged clutter.types file when generating gtk-doc
9a8b392 pango: fix gtk-doc build when x11 is not in use
3ed15a8 util-linux: do not enable gtk-doc and explain why
c370dda p11-kit: enable gtk-doc
fe14b24 libsoup-2.4: enable gtk-doc
5c899de libtasn1: enable gtk-doc
b41127f gnutls: enable gtk-doc
3bea0e5 harfbuzz: enable gtk-doc
363b298 cairo: enable gtk-doc
fa351bc libenck3: enable gtk-doc
ff774d0 libgudev: enable gtk-doc
3cc2055 json-glib: enable gtk-doc
406a9b7 gnome-desktop3: enable gtk-doc
60604de gdk-pixbuf: enable gtk-doc
1cfdc18 libuser: enable gtk-doc
2d20b54 libidn: enable gtk-doc
b240b9b orc: enable gtk-doc
83301b4 dbus-glib: enable gtk-doc
063f84e webkitgtk: re-enable introspection on powerpc
38f2f51 gcr, libsecret, webkitgtk: disable gtk-doc on mips64
d6a1027 gcr: disable gtk-doc on x86_64
ae773d6 gtk+3: disable gtk-doc when x11 is not available
31029c8 webkitgtk: enable gtk-doc support
3878dac gstreamer1.0: enable gtk-doc support
e1aad9e libglade: remove the recipe
3a093d1 systemd: drop unused gtkdoc-related variable
6d26601 kmod: do not let gtkdocize fail
2167573 gtk-doc.bbclass: enable building gtk-doc based documentation
5029d1f gtk-doc: add a recipe, remove gtk-doc-stub
94317f5 source-highlight: add a recipe
8c46605 oeqa: Use snapshot instead of copying the rootfs image
0d21440 scripts/runqemu: Add snapshot support
b2dc9c7 runqemu: Enable virtio RNG for all platforms
eb1494f runqemu: Update to modern prefrerred net syntax
d1cb381 runqemu: Allow unique network interface MAC addresses
95331c6 qemurunner.py/qemutinyrunner.py: remove runqemu-internal
b18f8a5 nativesdk-qemu-helper: fix for new runqemu
d1303c2 runqemu: fix run from testimage with non-standard DEPLOY_DIR_IMAGE
8a8948e runqemu: fixes for when invoked during a bitbake run
d5d4869 runqemu: better handle running on a host with different paths
e162303 runqemu: assume artefacts are relative to *.qemuboot.conf
b405712 runqemu: refactor it and remove machine knowledge
638d19a qemu.inc: inherit qemuboot.bbclass
f9732b4 qemuppc: Use virtio networking instead of pcnet
18c7c0d qemuppc.conf: set vars for runqemu
09a7710 qemumips/qemumips64.conf: set vars for runqemu
64da0d7 qemux86.conf/qemux86-64.conf: set vars for runqemu
9b0a94c qemuarm64.conf: set vars for runqemu
8b6e772 qemuarm.conf: set PREFERRED_VERSION_linux-yocto
9b7614e qemuarm: Add DTB file new kernel
90ab47c qemuarm.conf: set vars for runqemu
605d8b1 qemuboot.bbclass: add it for runqemu
2984863 qemu: fix: cp command cannot find tests/Makeflie
e6c48b1 qemu: 2.6.0 -> 2.7.0
af7ec7a parselogs: Whitelist qemux86 error message with qemu 2.7.0
e399ca1 parselogs: Whitelist qemuppc error message with qemu 2.7.0
f6ff037 libwebp: sepcify neon availability for arm
4192e4b utils.bbclass: Added error checking for oe_soinstall
e912692 utils.bbclass: Remove trailing whitespace
3860224 watchdog-config: Add recipe
7a79aba watchdog: Add wd_keepalive package
f344440 linux-yocto: update LINUX_VERSION to -rc5
649d79d kconfig-frontends: inherit pkgconfig
0455444 kmod: inherit pkgconfig
e292f77 x11-common: Remove Xserver script
3b7cdff xserver-nodm-init: Deprecate /etc/X11/Xserver
37f4b39 kernel-module-split.bbclass: no need for running depmod
df1635e kernel-module-split.bbclass: generate dependencies across recipes
fe90376 module.bbclass: use Module.symvers for dependants
a296633 linux-yocto/4.4/4.8: uvesafb: provide option to specify timeout for task completion
f14532a linux-yocto: update to 4.8-rc5
27eacf6 kernel-yocto: restore missing configuration meta data
50c4c79 kernel-yocto: allow --allnoconfig and --alldefconfig as KCONFIG_MODES
81297ee kernel-yocto: restore kernel-meta data detection for SRC_URI elements
ce4ea7a recipetool: create: avoid extra blank lines in output recipe
ff259b0 recipetool: create: support node.js code outside of npm
fa90c2f recipetool: create: allow license variable handling to be rerun
b1c3e44 recipetool: create: add --keep-temp command line option
17afc80 recipetool: create: support git submodules
9885a9d recipetool: create: fix mapping python dependencies to python-dbg package
4da96ce recipetool: create: AX_PKG_SWIG should add dependency on swig-native
39d3aa2 devtool: update-recipe: support files with subdir=
94aefd9 lib/oe/patch: handle non-UTF8 encoding when reading patches
ead0545 bitbake: cooker: record events on cooker exit
b22a505 bitbake: toaster: don't kill all runserver processes
d2e7ed0 bitbake: toaster: remove handling of .toasterui.pid
8719012 bitbake: toaster: don't kill toaster on start
87cf84f bitbake: toaster: orm Update IMAGE_FSTYPES values
36fe748 bitbake: toaster: keep layer name in variable history path
8ba4f54 bitbake: toaster: Allow forward slash in variable names
b5070f5 bitbake: toaster: layer details Fix "edit" form interaction
23056fc bitbake: toaster: import layer Layout fixes
c4fcf41 bitbake: toaster: layer details Layout fixes
65e1d66 bitbake: toaster: configuration Provide machine help text
ebc6e84 bitbake: toaster: tasks Remove recipe version from defaults
ee7c6d0 bitbake: lib/bb/utils: edit_metadata() comment tweaks
d67e3b4 bitbake: fetch2/npm: clarify comment
3a0f5d9 bitbake: fetch2/npm: handle top-level shrinkwrap file
5ab6867 bitbake: fetch2/npm: support subdir= parameter
eb53750 bitbake: fetch2/npm: fix broken fetches if more than one npm URL fetched
1937b17 bitbake: fetch2/npm: explicitly specify workdir
144e7db file: build with c std as c99
9d4fd7d apt: add PACKAGECONFIG for lz4
98264a9 oeqa.buildperf: be sure to use the latest buildstats
b673a56 pciutils: fix PACKAGECONFIG
d021889 oeqa.buildperf: try harder when splitting 'nevr' string
4594f25 webkitgtk: 2.12.4 -> 2.12.5
f203e5b lighttpd: fix EXTRA_OECONF
79d45bf cmake.bbclass: avoid treating imports as system includes
23ec1fc python: recompile _sysconfigdata.py after modifying it
d41968d systemd_230.bb: Set journal RuntimeMaxSize to 64M as default
a477fcd busybox: avoid circular dependency when using initramfs
b4f2c76 libcap: Replace EXTRA_OECONF with PACKAGECONFIG_CONFARGS
f52cc8b autoconf: remove upstreamed patch
0d92f44 libffi: backport patch to fix building MIPS soft float
3e53ab2 gnutls: update to 3.5.3
f7ca989 oeqa.buildperf: correct globalres time format
1f70669 oe-build-perf-test: fix log file path
e8e8178 selftest/liboe: add a test for copyhardlinktree()
822c708 oe.path: fix copyhardlinktree()
f5b4ca2 lttng-modules: Do not fail if CONFIG_TRACEPOINTS is not enabled
7005018 lttng-modules: Bump to 6e4fc6f3 revision
0abb1d7 rpm: ensure rpm2cpio call rpm relocation code
92fc3ef coreutils: enable xattr for native
b9d90ac poky: Update to linux-yocto 4.8 for qemu* machines
6a49d3f sysstat: 11.3.5 -> 11.4.0
91ae039 build-perf-test-wrapper.sh: fix handling of -C argument
5f5115a ofono: RRECOMMENDS tun.ko & APN database
fb75cd2 e2fsprogs: packaging cleanups (compile_et & mk_cmds)
5b8206f boost: fix MIPS16e compilation
7e712e1 boost: fix mips soft float compilation
02d82ea boost: fix a musl compilation warning
d7268e9 valgrind: Disable for MIPS Soft Float
8edb53c packagegroup: Disable packages not available on mipsel
88b99a4 packagegroup-core-sdk: Disable sanitizers for mipsel
ed8ecea linux-yocto/4.1: backport virtio HW_RANDOM_VIRTIO config
42e2b97 oeqa/parselogs: Add qemuarm64 warning from 4.8 kernel to whitelist
d9c2c02 oeqa/parselogs/qemuarm: Whitelist amba and jitter for 4.8+ kernels
8078c5e cryptodev: Add backported patches for 4.6+ kernels
223eb65 linux-yocto/4.x: configuration updates
d152840 kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error
5ea48fa kernel-yocto: test for empty artifacts
942e2af linux-yocto/4.8: add qemuarm device tree specification
98d57df linux-libc-headers: Refresh musl patches against newer kernel headers version
ab338be libc-headers: update to v4.8
5cb0f38 linux-yocto-dev: bump to v4.8+
6298912 perf: adapt to Makefile.config
4d1a124 linux-yocto: introduce v4.8 recipes
9428b19 toaster: fire TaskArtifacts event
25c4677 buildtools-tarball/uninative-tarball: Fix for working with populate_sdk under sstate control
e1de696 populate_sdk_ext: Put populate_sdk_ext under sstate control
3c3962d populate_sdk_base: Put populate_sdk under sstate control
bc31120 sstate: Avoid duplicate README file errors for sdk under sstate control
def3485 image.bbclass: Put image_complete under sstate control
5f9889e populate_sdk_base: Deploy images to SDKDEPLOYDIR
9cc4492 image: Deploy images to IMGDEPLOYDIR
619d299 image/populate_sdk_base: Add *DEPLOYDIR variables
51afd45 arch-mips.inc: Disable QEMU usermode usage when building with n32 ABI
08acf58 busybox: fix "sed n (flushes pattern space, terminates early)" testcase failure
104eb57 kernel.bbclass: include signing keys when copying files required for module builds
0e38688 oeqa/selftest Adds eSDK test cases to devtool verification.
1da953d /oeqa/sdkext Adds verification for devtool on eSDK.
e616beb scripts: ensure tinfoil is shut down correctly
f2854c6 gcc-runtime.inc: add CPP support for mips64-n32 tune
c93ee72 kernel.bbclass: add user output to savedefconfig
34d0cf3 Fix out of tree builds of u-boot with gold linker
180eebf sstate.bbclass: skip packaging if SSTATE_SKIP_CREATION is set
ea1d3ff initscripts: Start devpts at 06 instead of 38
eda43ca lighttpd: control ipv6 support based on DISTRO_FEATURES
beda03b xhost: control ipv6 support based on DISTRO_FEATURES
c8f383a xauth: control ipv6 support based on DISTRO_FEATURES
c0ea54d wget: control ipv6 support based on DISTRO_FEATURES
4d0ab9c rsync: control ipv6 support based on DISTRO_FEATURES
cc3c028 rsync: use rsync.inc to avoid duplicated codes
7e157da pulseaudio: control ipv6 support based on DISTRO_FEATURES
d529fe5 psmisc: control ipv6 support based on DISTRO_FEATURES
ae139c6 nspr: control ipv6 support based on DISTRO_FEATURES
0dbd6e4 nfs-utils: control ipv6 support based on DISTRO_FEATURES
d4d2441 libxmu: control ipv6 support based on DISTRO_FEATURES
75f86b4 libxml2: control ipv6 support based on DISTRO_FEATURES
68e3f3f libxfont: control ipv6 support based on DISTRO_FEATURES
c1716f6 libsm: control ipv6 support based on DISTRO_FEATURES
3366467 libpcap: control ipv6 support based on DISTRO_FEATURES
92ce5fe libice: control ipv6 support based on DISTRO_FEATURES
2e478ff apr: control ipv6 support based on DISTRO_FEATURES
4a5aa7e scripts/contrib: update scripts for changes to internal API
1100af9 base-files: Add shell test quoting
c95af9c meta-ide-support: inherit nopackages
bacb105 flex: fix gcc-6 failure
fef13d8 gstreamer1.0-plugins-bad: add packageconfig for egl
4b43874 lib/oe/patch: commit with a dummy user/email when PATCHTOOL=git
e5f61f8 oe-selftest: devtool: fix test after recent change
bf1954c glibc-scripts: add RDEPENDS on libsotruss package required by sotruss script
71ffc92 webkitgtk: fix racy double build of WebKit2-4.0.gir
390d959 webkitgtk: upgrade to 2.12.4
c25d5ba asciidoc: fix upstream version check
1429d9d oeqa.selftest.liboe: add test for xattr in copytree
92f9308 oe.path: preserve xattr in copytree() and copyhardlinktree()
97677c1 oeqa.selftest: add a test for oe.path.copytree()
74d0a3d ltp: remove useless script STPfailure_report.pl
7d77c02 oeqa.buildperf: include commands log file name in results.json
c39db4b oeqa.buildperf: include buildstats file name in results.json
c5d1301 oeqa.buildperf: show skipped tests in results, too
81b8ccc oeqa.buildperf: convert buildstats into json format
f1fb013 oeqa.buildperf: measure io stat
0b33203 oeqa.buildperf: don't use Gnu time
33a38bc oeqa.buildperf: rename buildstats directories
6d75f39 oeqa.buildperf: separate output dir for each test
700ebe9 oeqa.buildperf: strip date from buildstats directory path
35ae939 oe-build-perf-test: rename log file and implement --log-file
e8c47a6 oeqa.buildperf: enable json-formatted results
4418893 oeqa.buildperf: add 'product' to test result data
e16f008 oe-build-perf-test: update globalres and git even if tests failed
899b174 oeqa.buildperf: treat failed measurements as errors
85b7b10 oeqa.buildperf: make tests independent
6722b04 oeqa.buildperf: fix checking of invalid results
40d8bef x264: remove EXTRA_OEMAKE workaround
b8b1edb systemtap: remove EXTRA_OEMAKE workaround
06415ab linux-libc-headers: remove EXTRA_OEMAKE workaround
2044c88 lsof: remove EXTRA_OEMAKE workaround
8ddb47b musl: remove EXTRA_OEMAKE workaround
270d6dd ifupdown: remove EXTRA_OEMAKE workaround
a267015 kernel.bbclass: remove EXTRA_OEMAKE workaround
d5b602c distutils-common-base.bbclass: remove EXTRA_OEMAKE workaround
734a49b autotools.bbclass: remove EXTRA_OEMAKE workaround
5686645 lttng-modules: Update 2.7.3 -> 2.8.0+master
c015522 lttng-tools: Add PACKAGECONFIG for manpages
e0acc0b lttng-tools: Update 2.7.1 -> 2.8.1
8f0ca9c lttng-ust: Update 2.7.1 -> 2.8.1
b0e7288 libyaml: update to 0.1.7
c32ce592 ffmpeg: update to 3.1.3
acc113c iso-codes: update to 3.70
0d755c6 gstreamer1.0: upgrade to 1.8.3
bc42617 sqlite3: upgrade to 3.14.1
8dcb8da base, autotools: Append PACKAGECONFIG_CONFARGS to EXTRA_OECONF only in autotools.bbclass
f7d8025 unzip: fixes strange output
c27e23c nss: update to 3.25
b1da441 mpg123: update to 1.23.6
7bb1907 lighttpd: update to 1.4.41
16fae9f gobject-introspection: odd versions are development snapshots
9587685 ffmpeg: update to 3.1.2
190895d bdwgc: Add missing include to avoid musl build failures
bd02a38 bdwgc: update to 7.6.0
32ac934 bash-completion: update to 2.4
31eadec iso-codes: upgrade to 3.69
673c007 btrfs-tools: update to 4.7.1
e5b80ab libwebp: upgrade to 0.5.1
ff0ebe9 libnl: fix RREPLACES and RCONFLICTS for libnl-genl
75610e2 libnl: backport musl fix (strerror_r / strerror_l)
126c4b2 libnl: update to v3.2.28
d1c566f libnl: fix packaging mistakes
5dcb2a1 image_types: check COMPRESS_DEPENDS for backwards compatibility
f2f177c bitbake: bb.fetch2.svn: correctly pass workdir when fetching
355e4ec bitbake: cooker.py: Catch when stdout doesn't have a file descriptor
de83a8a bitbake: toaster: localhostbecontroller Remove git assumption
ce592fc bitbake: toaster: Allow git information to be null for BRLayer
4daae79 bitbake: toaster: tests Add selenium test layer source switching layer details page
2318f92 bitbake: toaster: Move Custom image recipe rest api to api file
3b87f28 bitbake: toaster: Fix oe-core fixture
50a8d3a bitbake: toaster: layerdetails clean ups after integrating local layer changes
e99b4cd bitbake: toaster: update api to include local_source_dir
fa48ca6 bitbake: toaster: layerdetails js changes for switching layers
d9b5d11 bitbake: toaster: add switch of git and not-git layers imported
d2797b5 bitbake: buildinfohelper: discover kernel artifacts correctly
46bad46 bitbake: wget: allow basic http auth for SSTATE_MIRRORS
3658f6d bitbake: cookerdata/ast: Fail gracefully if event handler function is not found
412a26e bitbake: build/runqueue: Add noextra stamp file parameter to fix multiconfig builds
e7b2b7d bitbake: fetch2: Handle multiconfig fetcher issues
26aad57 bitbake: tinfoil: add a parse_recipe_file function
818a365 bitbake: cache: allow parsing a recipe with a custom config datastore
f551e67 bitbake: bitbake-diffsigs/bitbake-layers: Ensure tinfoil is shut down correctly
8f277fc bitbake: tinfoil: add context manager functions
2f33bb3 bitbake: bitbake-user-manual: Added "Exporting Variables to the Environment"
9b20975 bitbake: bitbake-user-manual: Corrected misspelled STAMPS_DIR
087c580 init-install: Fixes the install script failing when not finding any mmcblk devices
2fedd22 ref-manual: Fixed small wording in PKGR in the glossary
3b70c96 ref-manual: Replaced "bitbake-dumpsigs" with "bitbake-dumpsig".
08e3ef9 ref-manual: Updates to PKGV, PKGE, and PKGR.
9ba4fc0 dev-manual, ref-manual: Systemd-boot: Update documents for new EFI bootloader
ac0fa7a ref-manual: Added bitbake.conf to list of example conf files
1769e1a ref-manual: Suggested fleshing out of the sigdata/siginfo documentation
a2e8f19 ref-manual: Updated some variables in the glossary for nits.
b9df28b sdk-manual: Added developer note for updating to Neon
eb7781f sdk-manual: Updated boxes to check when installing pre-built mars yp plug-in
3a5397d sdk-manual: Removed "snapshot" in an example version string.
4d1e642 sdk-manual: Added note to link to the wiki on building an SDK
4bdd0cf sdk-manual: Added an example name for an extensible SDK
5393fd7 sdk-manual: Fixed a broken "do_install" task link
0d4510e sdk-manual: Fixed a broken link to the "base" class
3c77e18 sdk-manual: "Linkified" the CC variable in section 3.3.4
9359c10 sdk-manual: Grammar fix.
e990bce sdk-manual: Updated the extensible SDK installer example
66ca0c4 sdk-manual: Re-worded Step 6 for deploying image in eclipse flow.
7bbaab7 sdk-manual: Added note about building the image for QEMU use
151a129 sdk-manual: Removed bad link
766e91f sdk-manual: Provided better wording to intro running sdk env script.
4e0a0d1 sdk-manual: Added note about building and SDK
99d43e6 sdk-manual: Used &DISTRO; for some output release versions.
4d5dc4a sdk-manual: Created new Mars Eclipse appendix
a3f519e core-image-kernel-dev.bb: Standardize use of _append and leading space.
3ae2eef linux-firmware: set a preferred provider for brcmfmac-sdio.bin
051d7aa groff: correct the location path for awk
8232ce2 perl: Correct perl path for ptest
fb12fe9 lsbinitscripts: 9.64 -> 9.68
5bd1a35 systemd: split systemd-container
d45a344 rootfs.py: allow removal of unneeded packages
31982f1 unfs3: Simplify simultaneous usage of "_append" and "+="
96e68f1 build-perf-test-wrapper.sh: make workdir configurable
ee4c5f6 build-perf-test-wrapper.sh: make archive dir configurable
a34fd3c build-perf-test-wrapper.sh: allow saving results in Git
dc30252 build-perf-test-wrapper.sh: parse args with getopts
7155a9b oe-build-perf-test: add {git_commit_count} keyword for --commit-results-tag
d0bac25 oeqa.buildperf: add git commit count to result data
caf6ad8 oe-build-perf-test: new {tag_num} keyword for --commit-results-tag
06b2c75 oe-build-perf-test: tag results committed to Git
28333b3 oe-build-perf-test: pre-check Git repo when using --commit-results
6d9c52f oeqa.utils.git: implement init() method
96e8337 oe-build-perf-test: implement --commit-results-branch
8335422 oe-build-perf-test: support committing results data to Git
66540ae oeqa.buildperf: use term commit instead of revision
979c735 oeqa.utils.git.GitRepo: new arg to require topdir
618a2ed oeqa.utils.git: implement GitRepo.get_current_branch()
6cf7464 oeqa.utils.git: introduce GitRepo.rev_parse()
7fcc9f5 oeqa.utils.git: support git commands with updated env
665800f oe-build-perf-test: use absolute paths in cmdline args
c284616 oe-build-perf-test: implement --run-tests option
e484378 python-3.5-manifest: Add argparse module
4c184eb python-3.5-manifest: Rename Queue module to queue
c1f4bef useradd.bblass: Simplify target overrides
9b6bc21 gcc: Update to final 6.2.0 release
f5ccefd piglit: Add python3-argparse module to RDEPENDS
07ebdbe devtool: build_image: Fix recipe filter
d97aaac devtool: Use the wildcard flag in update_recipe_patch
3656481 nasm: 2.11.08 -> 2.12.02
5a35913 subversion: 1.9.3 -> 1.9.4
713b2e5 git: 2.9.2 -> 2.9.3
5bd808b systemd-compat-units: do not inherit allarch
bf23d4f bash-completion: add bash-completion to DEPENDS for target packages
ba736a3 utils: check_app_exists: strip whitespace from binary when searching
8670979 oeqa/runtime/rpm: use su instead of sudo
578f811 layer.conf: remove pointercal
9228f75 distro_alias.inc: remove xtscal, pointercal and tslib references
e373c7c pointercal: remove recipe
e389a96 tslib: remove recipe
d2531ac xtscal: remove recipe
23b11c2 packagegroup-core-x11-base.bb: remove pointercal
be554d7 x11-common: replace xtscal with xinput-calibrator
19214ae packagegroup-core-tools-testapps: remove tslib references
4f31b12 pointercal-xinput: add a dummy calibration file for qemu
3e97690 parselogs: Ignore uvesafb timeouts
e1ab839 image_types: use COMPRESSIONTYPES variable for backward compatibility
ffcc52e hdparm: set LICENSE correctly
988f77a license: simple verification of LICENSE_<pkg> values
831e983 license.bbclass: do not process LICENSE_pn variables
c222936 bitbake: fetch2: clean up remaining cwd saves/changes
970ff6c linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
5d23bac linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1
a81b326 combo-layer: python3: fix UnicodeDecodeError
94646f4 oeqa/buildiptables: Switch from netfilter.org to yoctoproject.org mirror
7e4d206 xserver-xf86-config: pre-load int10 and exa modules
7afa09d cmake.bbclass: call cmake with a relative path
5a3947c openssh: Upgrade 7.2p2 -> 7.3p1
2b7541d wayland-protocols: 1.5 -> 1.7
a850ba3 libinput: Upgrade 1.3.0 -> 1.4.1
86884f6 json-glib: Upgrade 1.2.0 -> 1.2.2
5818fec vte: Upgrade 0.44.1 -> 0.44.2
08d8afe gtk+3: Upgrade 3.20.6 -> 3.20.9
c0dcc5d gnome-themes-standard: Upgrade 3.18.0 -> 3.20.2
69d8707 fontconfig: Upgrade 2.12.0 -> 2.12.1
624597d libgcrypt: upgrade to 1.7.3
1a62096 rm_work: don't remove timestamps of image tasks
fd23044 python-3.5-manifest.inc: the signal module RDEPENDS on enum
19b2f7c libidn: 1.32 -> 1.33
e8168a5 useradd_base: avoid unintended expansion for useradd parameters
05c3022 xorg-proto: remove stale git recipes
bef6e62 inputproto: explicitly disable asciidoc to avoid floating dependency
053bafd gettext_0.16.1: whitespace changes to align with v0.19.8.1
5acf2f6 gettext_0.16.1: align configure options with v0.19.8.1 recipe
dff0cb4 gettext_0.16.1: fix lispdir configure option
bb96b16 gettext_0.16.1: use musl gettext implementation
edec1c4 insane: improve package_qa_clean_path
8616440 grub: fix load module all_video failed
ddaf84c bash: fix run-intl ptest failed
0db6b0f bootchart2: fixes a BOOTLOG_DEST typo
f0213bb adwaita-icon-theme: 3.18.0 -> 3.20
0d44584 initscripts: Check for logrotate in dmesg.sh
4945cdf python3-native: Extend python3-native rproviders
cf0e3d0 python3-native: Change code style for rprovides
9e4e6b9 grub-efi.bbclass: Fix path in startup.nsh for iso image.
63ac352 glibc: Fix scope resolution in glibc to be breadth first.
1bb1200 linux-yocto/4.4: fix configuration warnings
4b80b34 linux-yocto/4.1/4.4: -stable updates and configuration changes
7b97f59 maintainers.inc: update maintainers for Dengke
f078ccf bitbake: siggen: Fix file variable typo in compare_sigfiles
ab09541 bitbake: fetch2: preserve current working directory
eefb4b6 bitbake: dump_cache.py: use python3 as interpreter
9d09624 bitbake: toasterui, knotty: don't print taskid followed by taskstring which are now in most cases identical
0b40911 bitbake: tests: add unit tests for the usehead url parameter
c04468d bitbake: git: Allow local repos to use HEAD
4093f0b bitbake: bitbake-selftest: enable bitbake logging to stdout
9cce855 bitbake: bitbake-selftest: introduce BB_TMPDIR_NOCLEAN
81697a8 bitbake: bitbake-selftest: add help text for env variable(s)
9139d75 bitbake: bitbake-selftest: utilize unittest.main better
5471b2c Revert "local.conf.sample: Disable ARM and PPC due to prelink test case failures"
aaca17d packagefeed-stability.bbclass: cleansstate should remove pkgs from deploy dir
bc31551 libdrm: 2.4.68 -> 2.4.70
a2f9420 glib-2.0: 2.48.1 -> 2.48.2
e7ec6cf kbd: remove PARALLEL_MAKEINST = ""
1e211f3 kmod: upgrade to 23
a65de2b diffutils: upgrade to 3.4
c80af16 util-linux: upgrade to 2.28.1
e22daba bootchart2: Add ALTERNATIVE configuration for bootchartd
0c9f39c asciidoc-native: add dependency on docbook-xml-dtd4-native
fe4e56b openssl: fix add missing dependencies building for test directory
cd3c558 libffi: fix a typo (mips)
27c0e2f image-vm.bbclass: remove old images if RM_OLD_IMAGE is enabled
9cabc18 oeqa.buildperf: fix crash when creating globalres.log
b26c43c oe-build-perf-test: align log message format with testrunner output
f019bb9 syslinux.bbclass: ensure creation of output directory
f755bab busybox: Add parallel make fix
7283c14 sanity.bbclass: Ensure we expand BUILD_PREFIX
f038f06 local.conf.sample: Disable ARM and PPC due to prelink test case failures
63dcfa8 Revert "local.conf.sample: Disable prelink by default"
fc16cfc prelink: Move to latest version of prelink
b7157a2 gcc: Upgrade to 6.2 RC1
b360310 libunwind: Fix build race conflict with gcc and musl
c666836 ref-manual: swabber: remove from documentation
bfd0850 ref-manual: Update SERIAL_CONSOLES_CHECK description
dfb899d ref-manual: change SYSLINUX_ROOT to ROOT_VM for DISK_SIGNATURE variable
f1d2a93 ref-manual: Applied review edits to "Viewing Dependencies"
b249c8d ref-manual: Removed the "pid" stuff from viewing failed tasks
feda248 ref-manual: Various small corrections to package-related stuff
f82a657 ref-manual: Updated the "Viewing Logs from Failed Tasks" section.
3db5ff6 ref-manual: Updated the section on viewing dependencies
1a1fc42 ref-manual: Clarify and flesh out debugging using bitbake -e
813be27 dev-manual: Added a new "known issue" for running qemu.
72ebd62 ref-manual: Updated PROVIDES and FILES variable descriptions
5337ac9 ref-manual: Updated the SERIAL_CONSOLES_CHECK variable description.
efb6266 ref-manual: Changed the BPN variable description.
df33765 ref-manual: Updates to PARALLEL_MAKE, PARALLEL_MAKEINST, EXTRA_OEMAKE
836b80c ref-manual: Added note to PROVIDES variable description.
b88973f ref-manual: New "Fakeroot and Pseudo" section.
c78c500 ref-manual: Added new variable description EXTRANATIVEPATH.
9576ddc ref-manual: Applied review changes to INITRAMF_IMAGE variable.
2996779 ref-manual: Updated the INITRAMFS_IMAGE_BUNDLE variable description.
31b06fe ref-manual: Updated the do_compile task section.
85ce753 ref-manual: Updates to INITRAMFS_IMAGE and INITRAMFS_FSTYPES
4fc256d ref-manual: Updated the INITRAMFS_FSTYPES variable.
ffdba3f ref-manual: Updated the INITRAMFS_IMAGE variable.
dfd845a ref-manual: Updated the PROVIDES variable description.
70ccc66 systemd-compat-units: Only enable for systemd in DISTRO_FEATURES
bcc8b87 systemd-compat-units: pkg_postinst() does not work
6c24a64 sanity: Require bitbake 1.31.1 for multi-config changes
189371f devtool/recipetool/meta: Adapt to bitbake API changes for multi-configuration builds
8b35b03 bitbake: bitbake: Update version to 1.31.1
218b81a bitbake: bitbake: Initial multi-config support
fac16ff bitbake: siggen: properly close files rather than opening them inline
0eb6d70 bitbake: ast/ConfHandler: Add a syntax to clear variable
b50b14e bitbake: cache: Build datastores from databuilder object
b176189 bitbake: cache: Split Cache() into a NoCache() parent object
e79550e bitbake: cache/cooker: Pass databuilder into bb.cache.Cache()
97ce912 bitbake: cache: Make virtualfn2realfn/realfn2virtual standalone functions
4cd5647 bitbake: cache/ast: Move __VARIANTS handling to parse cache function
0ef16f0 bitbake: runqueue: Abstract worker functionality to an object/array
2496869 bitbake: cookerdata: Simplify prefiles/postfiles
3be73dc yocto-bsp/yocto-kernel: update to work with the latest kern-tools
26b0657 parselogs: Ignore amb_nb warning messages under qemux86*
56e53db parselogs.py: Add failed to setup card detect gpio error on x86
a9b2c9d parselogs.py: Add dmi and ioremap errors to ignore list for core2
e290a83 parselogs.py: Ignore Skylake graphics firmware load errors on genericx86-64
f479e38 testimage: allow using kvm when running qemux86* machines
ff3a455 image.bbclass: rename COMPRESS(ION) to CONVERSION
10e44fe grub: split grub-editenv into it's own package
2973bc2 bash: 4.3.39 -> 4.3.46
f4ad606 openssh: add ed25519 host key location to read-only sshd config
e27bfac connman: add missing space in _append
5ef0620 kernel-yocto: streamline patch, configuration and audit phases
028e133 linux-yocto/4.4: -rt update patch meta-data to remove ()
93ea3a5 linux-yocto/4.1: config updates
cb63dd1 linux-yocto/4.1: bump to v4.1.29
e7c6817 linux-yocto/4.1: netfilter: x_tables: fix stable backport
b6af219 dbus: 1.10.8 -> 1.10.10
d3d395b busybox: Backport makefile fix from upstream
d37837a gobject-introspection: Ensure prelink config file exists to avoid build failures
180a77c alsa-utils: 1.1.1 -> 1.1.2
400e262 alsa-lib: 1.1.1 -> 1.1.2
9800b4d oeqa.buildperf: use oe.path.remove()
51970d1 oeqa.buildperf: be more verbose about failed commands
818d4c2 oe-build-perf-test: simplify stderr log format
5039a91 oe-build-perf-test: set-up file logging as early as possible
74820e9 oe-build-perf-test: suppress logger output when tests are being run
d82a795 oeqa.buildperf: introduce runCmd2()
f4128f0 oe-build-perf-test: use new unittest based framework
979be84 oeqa.buildperf: convert test cases to unittest
09b9a4a oeqa.buildperf: add BuildPerfTestResult class
3acf648 oeqa.buildperf: add BuildPerfTestLoader class
3f519df oeqa.buildperf: derive BuildPerfTestCase class from unitest.TestCase
daee755 oeqa.buildperf: rename module containing basic tests
6203a77 buildperf: Add support for times without decimal part
a191285 lib/oeqa/selftest/bbtests: don't report expected failures
dde033a oeqa/runtime/syslog.py: Improve test_syslog_logger on systemd
0cff756 python3.5-manifest: Fixes several dependencies on the newest python3
cd20d76 ncurses: upgrade to 6.0+20160625
205418f gnupg: upgrade to 2.1.14
8ce7bc3 man-pages: upgrade to 4.07
b2e6ac6 python3-git: Fixes dependencies, avoiding to install python3-misc
97ddbc8 python3-gitdb: Fixes zlib missing dependency
cae5c74 gmp: Fix wrong detection of -march flag
a56f14e graph-tool: update to new networkx API, be iterative
a1f39e5 python-3.5-manifest: Add some missing RDEPENDS
a84bfd8 libpng: update 1.6.23 -> 1.6.24
b66ec0f libtasn1: Backport compiler warning fixes
af96bed ffmpeg: Pas CC and CXX to configure
c0ea62e curl: upgrade to 7.50.1
bba1b91 Use PYTHON_SITEPACKAGES_DIR insted of hard-coded *site-packages*
92f505b init-install*: /etc/mtab make a link rather than a copy
caaff71 npm: npm.bbclass now adds nodejs to RDEPENDS
322435b iproute2: update 4.6.0 -> 4.7.0
aa1b6cb sqlite3: update 3.13.0 -> 3.14.0
0b8ddf5 perl-native: backport libnm link fix
a6b26f8 xinput-calibrator: remove bash dependency
99d109c classes/populate_sdk_ext: drop duplicated error message
64ffbd4 classes/populate_sdk_ext: add some pre-install checks
cea1632 toolchain-shar-extract.sh: add option to list contents
7cd213d classes/populate_sdk_ext: properly determine buildtools filename
5895bb6 classes/populate_sdk_ext: properly handle buildtools install failure
7df442c lib/oe/copy_buildsystem: fix merging sstate directories for eSDK
37b8196 classes/populate_sdk_ext: sstate filtering fixes
53b7935 classes/populate_sdk_ext: handle lack of uninative when filtering sstate
cdd2460 classes/populate_sdk_ext: ensure eSDK can build without uninative enabled
0a78f98 gen-lockedsig-cache: ensure symlinks are dereferenced
65ff9f5 oe-buildenv-internal: hint at specifying bitbake path in error message
eea2de9 ccache.bbclass: don't remove CCACHE_DIR as part of do_clean
51d74f5 systemd: fix typo in avoid-using-system-auth.patch
993bfb5 init-install*: only pick root mmc devices
4b9c75a sanity.bbclass: Only verify /bin/sh link if it's a link
9375b7e tiff: Security fix CVE-2016-5323
1b03beb tiff: Security fix CVE-2016-5321
b762eb9 tiff: Security fix CVE-2016-3186
ecb7e52 tiff: Security fix CVE-2015-8784
dc75fc9 tiff: Security fix CVE-2015-8781
955d6cb e2fsprogs: Fix missing check for permission denied.
df6694b initrdscripts/init-install*: Add rootwait when installing to USB devices
08a5471 u-boot.inc: Enable out-of-tree builds
23afc33 dropbear/init: Allow extra arguments for key generation
4f9ddb6 initramfs-live-boot: Make sure we kill udev before switching root when live booting
7debab3 cross-canadian.bbclass: Add BASECANADIANEXTRAOS to specify main extraos
310d860 security_flags.inc: enable PIE for a few recipes
896f1c7 oeqa/oetest: Improve subprocess error reporting
a18e3c9 report-error: Fix tracebacks
fbc144d uninative: Update to 1.3
96a861e bitbake: bitbake-user-manual: Re-write "Dependencies Internal to the .bb File"
cbf8516 bitbake: bitbake-user-manual: Added setting variable for a single task
277a5a9 bitbake: bitbake-user-manual: Added more detail to anonymous Python functions.
3a1ae38 bitbake: bitbake-user-manual: Formatted all "flags" to be consistent
50d7813 bitbake: bitbake-user-manual: Added detail to [dirs] and [cleardirs] flags
500ebdd bitbake: bb/utils.py: export_proxies add GIT_PROXY_COMMAND
8a45291 bitbake: knotty: don't show number of running tasks in quiet mode
ea08000 bitbake: knotty: fix task progress bar not starting at 0%
1b6f701 bitbake: runqueue: fix two minor issues with the initialising tasks progress
407ba77 bitbake: lib/bb/tests/fetch: remove URL that doesn't exist anymore
40b655d bitbake: toaster: update web urls for openembedded-core's special case
6b66e93 Allow for simultaneous do_rootfs tasks with rpm
d11e8e1 systemd_boot: Enable module to test systemd bootloader
2c043e3 Revert "systemd_boot: Enable module to test systemd bootloader"
e274a51 bitbake: toaster: buildinfohelper Add handling local layers (i.e. non-git) layers
4ac57fb bitbake: toaster: bldcontrol model BRLayer Add corresponding local_source_dir
cb5ed74 bitbake: toaster: adapt xhr_import_layer test locally imported layer
5827ae0 bitbake: toaster: update build configuration page
f5acb42 bitbake: toaster: update recipe details page
875770d bitbake: toaster: update package detail page
3a50399 bitbake: toaster: updte build tables for locally imported layers
186320f bitbake: toaster: update the tables information
ef617e6 bitbake: toaster: collect details for local dir imported from ui
8cad519 bitbake: toaster: add local_source_dir field to model
494eae3 bitbake: toaster: add local directory to the db
b3fa98d bitbake: toaster: improve the display when local dir is added
331c1c6 bitbake: toaster: update css file for layer import
42d3a41 bitbake: toaster: add local_source_dir to the needed_fields
836f332 bitbake: toaster: control the selection of git and local repo
c2c58a1 bitbake: toaster: add import of local directory to UI
953ba7a bitbake: toaster: fix unhandled exception
f6261da bitbake: toasterui: ensure that the Build object is always available
f17ab95 bitbake: toaster-tests: add test for showing self-dependent task
98ef970 bitbake: toaster: prevent infinite loop when finding task dependencies
2ff892d bitbake: toaster-tests: add tests for reverting to default sort
dd78459 bitbake: toaster: reset table to default orderby when orderby column is hidden
01c8496 bitbake: toaster: show loading spinner after creating custom image
6172fb1 bitbake: toaster-tests: fix erroneous message when test fails
cf0b07c bitbake: toaster-tests: add tests for most recent builds state changes
36f71db bitbake: toaster-tests: add tests for build dashboard menu and summary visibility
504a858 bitbake: toaster-tests: add tests for build time links in the all builds page
2d80b90 bitbake: toaster: adjust build dashboard for failed builds
e387a7a bitbake: toaster: add started property to Build
dce5037 bitbake: toaster: remove links from time field on failed builds
9ed45f7 bitbake: toaster: tweak styling and typos in recent builds area
82d998d bitbake: toaster: show "Tasks starting..." until the first task completes
dd99cf9 bitbake: toaster: show progress of recipe parsing in recent builds area
952ffb3 bitbake: toaster: move most recent builds templating to client
c471740 bitbake: cooker: add BuildInit event
f4e65d1 bitbake: toaster: fixtures Add README
71f553b bitbake: toaster: Remove old toaster config loading mechanism
4903982 bitbake: toaster: lsupdates Add spinner for parsing/http fetch
33a4006 bitbake: toaster: checksettings call django's loaddata instead of custom command
72fa18f bitbake: toaster: Add poky and openembedded configuration fixtures
a1629a2 bitbake: toaster: tests test_new_project_page Catch button not enabled exception
cae9e6f bitbake: toaster: --help now returns 0 instead of 1
5d1d177 bitbake: siggen: Fix typo
9381793 bitbake: fetch2/gitannex.py: use 'git annex init' instead of 'git annex sync'
82da1e6 bitbake: persist_data: Fix py3 update stack overflow
12c8a50 maintainers.inc: add recently added recipes
33b0128 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
4534741 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1
dd53025 poky: update supported distros
a6630c2 bitbake: fetch: Fix use of tar's --exclude option for tar >= 1.29
87cb470 dbus: backport stdint.h build fix
5aca5bc base-files: restrict resize to run on serial consoles only in profile │·
b6ecbee libunwind: Do not use gold for linking
e0ad5a9 webkitgtk: Disable gold for mips/mips64
ad79a89 connman: clean up musl fixes
fc08ecf connman: disable version-scripts to fix crashes at startup
3ac3f3f oeqa: start() add remaining args SimpleRemoteTarget and QemuTinyRunner
4a4a24f busybox: Fix busybox-init on non-tty consoles
b51959e uboot-sign: do_concat_dtb(): cd to $B
c1a6945 uboot-sign: Handle .rom signing the same as .img
749d777 kernel-fitimage: Add x86 support
ec755d2 kernel-fitimage: add initramfs support
3153bd3 kernel-fitimage.bbclass: do_assemble_fitimage(): cd to $B
d90eaa8 linux-dtb.inc: Support for .dtbo files for dtb overlays
a960d9b packagefeed-stability.bbclass: fix multilib + rpm
ce8e654 runqemu: qemuzynqmp: Add Linux boot support
6f2fa0a package: correct subprocess.Popen.communicate() return values
b30aeb3 chrpath: correct subprocess.Popen.communicate() return values
a48fea2 license: improve handling of license files with identical basenames
da72327 sysvinit-inittab_2.88dsf.bb: Allow aliasing with SERIAL_CONSOLES_CHECK
95403e3 buildhistory: output package variables in a repeatable order
7b33b23 nettle: update LICENSE info for version 2.7.1
2be5ee7 gst-player: update the callback for delete-event
aca6dae dpkg: Avoid automatic target architecture detection
0e421c9 ca-certificates: remove -- separator
309a6e0 world-broken: Add libunwind for musl/arm
6d84986 strace: Fix build with mips/mips64 on musl
feb125e oeqa/utils/httpserver.py: HTTPServer enable thread connection handling
262c81e quilt/acl/attc/sed: Fix use of tar's --exclude option for tar >= 1.29
1f00fa1 alsa-utils: fix installed-vs-shipped for bat
50c23e6 openssl: fix add missing `make depend` command before `make` library
17d728d terminal: Add sleep in pid-monitor loop
ce1cf85 consolekit: don't ship /var/log/ConsoleKit
7633b81 package.bbclass: warn about files under symlinked directories
961b526 package.bbclass: better handling of middle-path dir symlinks
416c4bc util-linux: make prlimit a separate package
07d9c3a lzo: update ptest output format
9ec7cef oeqa/selftest: disable report-error class when builds are expected to fail
b26e09b pseudo: Add nobody user and group
b192bc0 python3: Upgrade from 3.5.1 to 3.5.2
3ab991b python3-native: Upgrade from 3.5.1 to 3.5.2
adf4266 python: upgrade from 2.7.11 to 2.7.12
db95088 python-native: Upgrade from 2.7.11 to 2.7.12
909e212 python-smartpm_git.bb: Add patch for debugging random errors
1650f67 libevent: update ptests fail condition
8efd482 package.bbclass: remove unneeded chmod() and chown()
591bd6b libgcrypt: upgrade to 1.7.2
f157570 procps: upgrade to 3.3.12
69735b9 curl: upgrade to 7.50.0
a4f0ae1 kernel.bbclass: add lzop dependency
3b064be piglit: fix build failure with gold linker
3e97d19 matchbox-panel-2: remove dangling patch
49b4df1 matchbox-desktop: remove dangling patch
2b8dd4c alsa-utils: remove dangling patch
cb188dc python-numpy: remove dangling patch
fe5f80b guile: remove dangling patch
8b88df3 openssl: remove dangling patch
f389433 gstreamer1.0-plugins-bad: remove two dangling patches
77e5a89 autotools.bbclass: remove intltool.m4 from ${S}
63cb0ee autotools: move aclocal-copy to WORKDIR
e1081f4 intltool: bump serial for aclocal --install
c5af754 yocto-uninative: bump to uninative tarball version 1.2
88a3d76 meta/classes: fix bb.build.FuncFailed typos
30ab044 binutils: Bump to 2.27
26c6b10 apt: Fix build in musl it was break due to upgrade to 1.2.12
e884cee glibc: Switch to 2.24 release branch
dfc016f maintainers.inc: remove augeas
a9681ef Revert "packagegroup-core-x11-base.bb: replace pointercal with pointercal-xinput"
a56fb90 base.bbclass wipe ${S} before unpacking source
3522a90 packagegroup-core-x11-base.bb: replace pointercal with pointercal-xinput
5745154 dpkg: put start-stop-daemon into a separate package
7759b48 perf: enable man pages for 'help' functionality
9ddb513 create-pull-request: set subject automatically for cover latter
1d7228c create-pull-request: read remote from env var CPR_CONTRIB_REMOTE
a158265 create-pull-request: add option -a to auto push
ca56459 cronie: upgrade to 1.5.1
1580eac Asciidoc: add it
a5eb998 augeas: remove from oe-core
9ac1500 tcl: 8.6.5 -> 8.6.6
46d5901 strace: 4.12 -> 4.13
7dbfe6f libcap-ng: 0.7.7 -> 0.7.8
1f1ac9f grub2.inc: run autogen.sh before configure
37f1e0c oeqa/utils/sshcontrol.py: Allows to copy symlinks to target
65459f5 oeqa/oetest.py: Allow to export packages using symlinks
65a03c3 oetest.py: Remove check for __init__.py
84d854c oetest.py: Add command line parameter support for tag in testexport
2d565fa bitbake.conf: set READELF for cross compilation
8b5f369 Fix random python backtrace in mutlilib handling code.
44ae828 selftest/runtime-test.py: Add test for testexport SDK feature
d2e5c93 dhcp: dhcrelay.service cannot start successfully
43a3933 meta: add more missing patch tags
6d59c5c cml1: fix tasks after default [dirs] changed
c00346d bitbake.conf/toolchain-scripts.bbclass: Remove debug prefix mappings in SDK
6cfd86f pseudo: update git recipe to include xattr perf fix
2726f91 pseudo: backport patch to fix xattr performance
d4040da mesa: Fix build when cross compiling with clang
50008ff gstreamer1.0-plugins-bad: Backport GstGLMemoryEGL implementation
a09a7b7 gdb: Cache gnu gettext config vars for musl builds
76fc5ab ffmpeg: Upgrade to 3.1.1
8b21a51 apt: Upgrade to 1.2.12
564657e groff_1.18.1.4: fix narrowing conversion error
b37463b python-pexpect: Upgrade to 4.2.0
1e555c0 glew: upgrade to 2.0.0
d753c91 apmd: use snapshot.debian.org for SRC_URI
a996ae6 linux-yocto/4.1: qemuppc and qemumips build fixes
453c174 linux-yocto/4.1: bug fixes and configuration changes
9dc4cfc linux-yocto/4.1: bump to v4.1.28
a3cad8f bitbake: bitbake-user-manual: Applied typo fix to "Override Style Operation Advantages"
ae427fb bitbake: bitbake-user-manual: Changed bitbake command example.
e205789 bitbake: bitbake-user-manual: Updated the PROVIDES variable
f0e73a4 bitbake: bitbake-user-manual: Added non-existant variable expansion
41b49ca bitbake: bitbake-user-manual: Applied some review comments
a3a7ddf bitbake: bitbake-user-manual: Updated the "Inline Python Variable Expansion" section.
eb282b7 bitbake: bitbake-user-manual: Fixed override operator syntax.
6aaf379 bitbake: bitbake-user-manual: Clarified override-style operators.
d1e3f0b bitbake: bitbake-user-manual: Updated the variable expansion section.
2652217 bitbake: Revert "bitbake-user-manual: Added new section on command-line execution"
5203cfe ref-manual: Removed redundant "and"
2322267 ref-manual: Removed stray parenthesis.
566ebc1 ref-manual: Updated the STAGING_DIR_HOST variable.
4396ffb ref-manual: Updated STAGING_DIR_TARGET and MULTIMACH* variables.
05beac3 ref-manual: Added a link to D variable and moved a task:
376a820 ref-manual: Augmented some STAGING_DIR_* variable descriptions:
599be67 Revert "ref-manual: Added new glossary entry for REMOVE_PKG_SUPPORT."
33b01c5 ref-manual: Added 3 new QA sanity checks.
f2fa3c5 ref-manual: Applied review edits to "Checking for Missing Build-Time Dependencies"
7c5a147 ref-manual: Applied review changes to the do_deploy task.
c9e3815 ref-manual: Added new "Checking for Missing Build-Time Dependencies" section.
fa0c574 ref-manual: Added link to the do_populate_sysroot task
6c302a4 ref-manual: Applied formatting to QA check string in do_install task
38c33b7 ref-manual: Fixed output example in the B variable.
30929cf ref-manual: Updated the do_deploy task reference section.
bc14368 ref-manual: Added detail to the populate_sysroot task.
bb16434 ref-manual: Updated the do_packages task.
4f27aa6 ref-manual: Updated the do_install reference section.
781bff8 ref-manual: Updated the do_configure task.
8f2d8c2 ref-manual: Fleshed out the do_compile task.
04c6112 ref-manual: Updated RDEPENDS variable description with note.
818e439 ref-manual: Applied review comments to logging mechanism section
2db1d3b foomatic-filters: Security fixes CVE-2015-8327
e07ebd0 foomatic-filters: Security fix CVE-2015-8560
f5a7cd4 at: use snapshot.debian.org for SRC_URI
eef97b3 mailx: use snapshot.debian.org for SRC_URI
27b49de libaio: use snapshot.debian.org for SRC_URI
1a740c6 blktool: use snapshot.debian.org for SRC_URI
ecde311 serf: use snapshot.debian.org for SRC_URI
5727f46 linuxdoc-tools: use snapshot.debian.org for SRC_URI
9cfb420 docbook-xml-dtd4: use snapshot.debian.org for SRC_URI
df4451c netbase: use snapshot.debian.org for SRC_URI
f6e53ac ossp-uuid: use snapshot.debian.org for SRC_URI
0966a83 linux-yocto/4.4: update to -r19
2c358b9 readline: don't install readline C examples
a9aef40 useradd-staticids.bbclass: trigger reparsing when table files change
1981ab0 oeqa/utils/commands.py: Command class improve validations/decoding in output
1648504 oeqa/runtime/syslog: test_syslog_logger Don't try to use logread when systemd is enabled
a86a1b2 classes/testimage: When image is systemd, enable debug log level
140f6c7 busybox-syslog.default: When systemd is enabled don't use circular buffer
b4ba36a oeqa/runtime/syslog.py: Improve test_syslog_logger
8b3f624 xorg-xserver: upgrade xserver version from 1.18.3 to 1.18.4
0ec45e9 tcf-agent: update to 1.4_neon_bugfix branch
3286f4f python-git: Upgrade python-git and python3-git to 2.0.7
d8cff60 python-numpy: upgrade to 1.11.1
5c2bc4d linux-yocto/4.4: mousedev and printk configuation streamlining
e647fe0 linux-yocto/4.4: lx-dialog and mei bug fixes
ec31f30 linux-yocto/4.4: bump to v4.4.15
6d2987c systemd-boot: use lnr instead of ln --relative
215687e gstreamer1.0-plugins-bad: add missing wayland-native dependency
f31683d selftest/runtime-test.py: Add test for import test from other layers
36b3e58 cmake: upgrade to 3.6.1
8c6371f libassuan: upgrade to 2.4.3
e7a0997 libgpg-error: upgrade to 1.24
3486b72 dropbear: upgrade to 2016.74
f55bf4e wayland-protocols: upgrade to 1.5
0ef807a libtasn1: upgrade to 4.9
c90d799 libsolv: upgrade to 0.6.23
75efb26 connman: upgrade to 1.33
081acd5 update-rc.d: Correct trivial typo in DESCRIPTION line.
556059a binutils: Cache gettext api version 1 and 2 support
8ab6c4a menu-cache: remove spurious dependency on intltool
6f1f317 sysprof: clean up FILES
1ebec49 tune-mips-24k: add QEMU_EXTRAOPTIONS for DSP and MIPS16e cores
b004e3a qemu: add patch to add mips 24KEc CPU definition
0152d75 bash: add patch to build w/ -Wformat-security
f4709b1 uncovered: list uncovered python modules
81580c5 screen: add back the patch for parallel build
b332b38 avahi-ui: use PACKAGECONFIG for gtk features
baaaea5 Revert "lttng-tools: filter random filename of ptest output"
2c01447 oe-selftest: simplifying log filenames
e91d0d5 oe-selftest: export test results via xmlrunner
cc3c276 oe-selftest: recipetool: add tests for git URL mangling
12fbed9 recipetool: create: fix greedy regex that broke support for github tarballs
be68ef5 useradd.bbclass: Fix delete user/group when more than one item
aa2d945 bitbake: lib/toaster: Fix missing new files from previous commits
5b61fa0 bitbake: toaster-tests: fix URL given for Chromedriver download
05f82e8 bitbake: toaster-tests: define capabilities for latest Firefox driver
2a849e7 bitbake: lib/bb/checksum: avoid exception on broken symlinks
ea23423 bitbake: lib/bb/utils: show subprocess output in stack traces
c42b533 bitbake: fetch2: fix pickle issues while switching from master to krogoth
039f47a uclibc: remove meta-yocto-bsp append
1d39e4c dpkg: use snapshot.debian.org for SRC_URI
7cb7ca9 babeltrace: remove unnecessary SRCREV
87678bbd rt-tests: rationalise compiler flags
3ec9a62 recipetool: record unknown license files
25507bf lib/oe/recipeutils: fix patch_recipe*() with empty input
dd85405 classes/buildhistory: ensure eSDK sstate lists sorted secondarily by name
82c7d0f classes/buildhistory: add additional variables for eSDK
4048af4 classes/populate_sdk_ext: add gdb to full extensible SDK
0b2ca66 classes/populate_sdk_ext: filter sstate within the extensible SDK
2ac1fdf scripts: add oe-check-sstate script
4253e2e classes/populate_sdk_ext: allow including toolchain in eSDK on install
f84b01b meta-extsdk-toolchain: add meta-recipe to install toolchain into eSDK
cb5d308 classes/populate_sdk_ext: set default for SDK_INCLUDE_PKGDATA
1b4dc78 oeqa/selftest/signing: check that we have GPG in setup
5218c24 oeqa/selftest/signing: use a temporary directory for GPG home
ab075b6 kdump: don't set default values for KDUMP_CMDLINE and KDUMP_KIMAGE
9b8b730 harfbuzz: upgrade to 1.3.0
8b0db50 bluez5: upgrade to 5.41
b261791 dhcp: remove dhclient-script bash dependency
21916fe net-tools: lib/inet6.c:INET6_rresolve() - various fixes
012262a gcc: Don't use vectorized builtins when Neon is not there
6660e95 sysprof: fix floating dependency on polkit
71d0c87 kernel.bbclass: explicitly set workdir in do_bundle_initramfs
4858c6b kernel-uimage.bbclass: indeed update var KERNEL_IMAGETYPE_FOR_MAKE
7178f07 musl: don't compile in mips16e mode
1131507 lib/oe/path: Fix tar invocation with --no-recursion
57bb38d gcc: Fix libgcc unresolved symbols with PIE on musl
13ee352 webkitgtk: Do not use gold with clang
7d04a4d insane: only check ${S} exists if we had sources to fetch
2eec44e lib/oe/gpg_sign: fix output in error paths
f02f0ed python-smartpm: add support to check signatures
2f6bbc7 openssh: conditional compile DES code.
2c2f22a packagefeed-stability.bbclass: copy all packages of a recipe
600f0b3 packagefeed-stability.bbclass: minor fixes
b36753b packagefeed-stability: add class to help reduce package feed churn
cbf7902 package_deb.bbclass/package_ipk.bbclass: sort RPROVIDES
9621959 build-compare: improve deb and ipk checking
ad6aae3 build-compare: fix checking for named pipe and others
fef5ae1 build-compare: make pkg-diff.sh 75% faster
495e2f8 build-compare: remove space at head
51b0883 rpm: make --nosignature work
2ab4926 package_deb.bbclass: fix Python 3 error
0e63414 piglit: Add build fix patch
ad625f7 avahi: fix resource temporarily unavailable issue
05dca6e pulseaudio: fix floating dependency on webrtc-audio-processing
7c9acf0 pulseaudio: 8.0 -> 9.0
328e249 libsndfile1: 1.0.26 -> 1.0.27
24f871c classes/populate_sdk_ext: show progress when preparing build system
1052fef layer.conf: bump version for uclibc removal and LSB update
bb9d9da uclibc: remove
5600778 LSB: 4.1.0 -> 5.0
e6e05a3 systemd_boot: Enable module to test systemd bootloader
efd7d6b webkitgtk: Switch the ARMv7 build to Thumb2 and enable back the JSC JIT.
b6aa976 quota: make compile pass when disable rpc
b7a2688 weston-init: De-couple framebuffer console from Weston for systemd startup
df9f8a8 weston-init: Fix weston-start to handle 0 or 1 args
9f7c1a5 weston-init: Fix weston-start to allow weston args without openvt args
c406e9a ccache: 3.2.4 -> 3.2.5
36f6219 gettext-minimal-native: 0.19.4 -> 0.19.8.1
cff2123 gettext: 0.19.6 -> 0.19.8.1
91a6f3a slang: 2.2.4 -> 2.3.0
2186bbc gnu-efi: 3.0.3 -> 3.0.4
6d9958e guile: 2.0.11 -> 2.0.12
cf03952 git: 2.8.4 -> 2.9.2
cea867b linux-yocto-dev: Ensure we don't reparse the recipe when its not being used (take 2)
e1fcb03 Revert "linux-yocto-dev: Handle performance regression"
31cef0d lib/oeqa/decorators: handle broken links when creating new symlink
ebc80fa siteinfo: Add mechanism to extend siteinfo information from BSP layer
e693f2e insane: Add mechanism to extend QA machine information from BSP layer
1393b23 bitbake: lib/bb/build: handle incomplete message fragments in log FIFO
9411e33 bitbake: toaster-tests: add tasks and recipes sub-page tests
4357d7a bitbake: toaster: set non-hideable columns for built recipes table
bd2cce0 bitbake: toaster: set non-hideable columns for build tasks table
83ccef3 bitbake: toaster: fix download URL for task logs
24905d3 bitbake: fetcher2/__init__: Print command in case of ExecutionError in runfetchcmd
729d9fc bitbake: toaster: loadconf Partially add back some of the layerSource parsing
04d1ad5 bitbake: toaster: admin Add Layer_Version to the admin-able models
97278fb bitbake: toaster: orm Remove the layerindex specific up_branch fields
8b31460 bitbake: toaster: lsupdates Add progress information and clean up logging
bb260e9 bitbake: toaster: tests: Remove references to LayerSource model
ef627d0 bitbake: toaster: Replace references to LayerSource models
ffc78d3 bitbake: toaster: lsupdates Add layerindex fetcher
853450b bitbake: toaster: models Remove LayerSource models and replace with enum
20f939f bitbake: toaster: bldcollector admin Remove LayerSourceAdmin
1477886 bitbake: toaster: loadconf remove Loading LayerSources
c27ae25 bitbake: lib/bb/progress: avoid possibility of start event being reported twice
5f4559b bitbake: knotty: don't display ETA for tasks with progress
23a551b bitbake: knotty: fix some minor bugs in BBProgress
0c3ce68 bitbake: fetch: copy files with -H
7f6b6b2 bitbake: cache: Don't interleave pickle cache file writing
5d41200 bitbake: cache: Add better cache loading sanity checks
40d45cf bitbake: cache: Drop/simplify pointless type checking
c9e65c5 bitbake: cache: Improve versions fields handling
09f6a56 bitbake: cache: Correctly handle missing extra caches
b2ef908 bitbake: cache: Move the parsing message to a more logical place
36feb38 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
f06b023 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1
3177082 bitbake: bitbake: implement idle timeout for xmlrpc server
4cba010 bitbake: bitbake: implement --foreground command line option
380b6e8 bitbake: bitbake-user-manual: Added new section on command-line execution
cb40ae4 bitbake: bitbake-user-manual: Applied review edits to "Recursive Dependencies"
80b1efb bitbake: bitbake-user-manual: Fixed typo in the BBDEBUG variable description.
9a9577e bitbake: bitbake-user-manual: Added review changes to BBCLASSEXTEND description
4bc1ee5 bitbake: bitbake-user-manual: Added review changes to recursive section.
35081f5 bitbake: bitbake-user-manual: Addeds support for the Perforce Fetcher
a6cffcf bitbake: bitbake-user-manual: Added clarifying note to BBCLASSEXTEND variable.
8c55a9c bitbake: bitbake-user-manual: Added a note providing examples of task dependencies
d918df7 bitbake: bitbake-user-manual: Updated dependency section for tasks
6743f12 bitbake: bitbake-user-manual: Updated the defaults for getVar and getVarFlag
8321d66 bitbake: bitbake-user-manual: Added new section on command-line execution
321f4e9 boost: fix CVE-2012-2677
d183d1e package_manager.py: Avoid installing an empty package list
56aa9c8 glibc: Update to 2.24 after hard-freeze
2d5b282 wic: rawcopy: make source filenames unique
788d6fb buildhistory-diff: reduce PKGR noise
d4d6021 systemd: allow add users to groups in rootfs postprocess
031c2f6 initrdscripts/init-install*: Select install target instead of looping through
8da54b4 oeqa/controllers: Add test target for Systemd-boot
cd78d87 oetest.py: Fix problem when there is more than one json file for package extraction
736eab6 oe-selftest: print errors when failed to find test
e1aa836 lib/oeqa/utils/commands.py: Move updateEnv() from runexported.py
9043691 bitbake: cooker: Fix incorrect dot file generation
1bf1e2c bitbake: toaster-tests: add class SeleniumTestCaseBase for browser tests
a61eb1f intltool: remove broken XML::Parser detection
ae39c3a intltool: merge .bb and .inc
bb42984 oeqa/recipetool: update recipe test to pass SHA
738f47a oeqa/devtool: update recipe test as libmatchbox changed
bf69538 xf86-input-libinput: Upgrade 0.16.0 -> 0.19.0
6c2f073 xf86-input-evdev: Upgrade 2.10.2 -> 2.10.3
e7d910b xkeyboard-config: Upgrade 2.17 -> 2.18
fded0a0 libxfixes: Upgrade 5.0.1 -> 5.0.2
a5392dd weston: Upgrade 1.10.0 -> 1.11.0
ddb0de6 wayland: Upgrade 1.10.0 -> 1.11.0
534cc86 wayland-protocols: Upgrade 1.3 -> 1.4
d18a28c mesa: Upgrade 11.2.2 -> 12.0.1
00191b8 mesa-demos: Require X11 distro feature
4518058 image: add do_image_qa task to run QA checks on the constructed image
d1fdd0a python3: Security fix CVE-2016-5636
81106cd python2: Security fix CVE-2016-5636
3aaf023 bzip2: Security fix CVE-2016-3189
c0dbed6 openssl: Security fix CVE-2016-2178
03f6074 openssl: Security fix CVE-2016-2177
61577c5 xmlto: only target requires coreutils
f74ddc6 piglit: Fix build on musl/arm
dbf53c9 xuser-account: remove GROUPADD_PARAM
e24bc6d recipes-graphics: Added native and nativesdk support for some libraries
69dfc58 tcl: fix sed command in do_install
bffb0fb oe-git-proxy: don't depend on syslinux
dd0474c sysstat: upgrade to 11.3.5
db0c499 sudo: upgrade to 1.8.17p1
35c9e2a cups: upgrade to 2.1.4
1854732 byacc: upgrade to 20160606
e53630e at: upgrade to 3.1.20
096b4c6 libxsettings-client: Remove as unneeded
49d3d7d libmatchbox: Upgrade 1.11 -> 1.12
b1d573b matchbox-keyboard: Upgrade to 0.1.1
16fa164 sato-screenshot: Upgrade 0.2 -> 0.3
8bf2692 matchbox-panel-2: Upgrade 2.10 -> 2.11
5484015 libpng: update to 1.6.23
11f23ec linux-firmware: update to revision cccb6a0da9
5813d40 nss: Fix build on mips/clang
0508464 wic: oe-selftest: build bmap-tools-native
ed319ff musl: Fix mips regressions in 1.1.15
bb915a1 binutils: backport fix for TLSDESC relocations with no TLS segment on arch64
4fdfee4 classes/license.bbclass: don't set [dirs] and [cleandirs]
6494a59 glibc: use the host locale archive in nativesdk builds
6047780 perl: fix CVE-2016-2381
ac0910e opkg: upgrade to v0.3.3
d62fd77 devtool: add finish subcommand
10a5af5 devtool: upgrade: record original recipe files
7af3295 devtool: update-recipe: refactor to allow calling separately
5d78525 devtool: reset: refactor to allow calling separately
7435cdf lib/oe/recipeutils: fix a few issues in find_layerdir()
c4297f3 devtool: update-recipe: don't copy local files that haven't changed
8be2077 devtool: update-recipe: find and use existing files directories
220a68b bash: fix string format errors when enabling security flags
2184694 bash: ensure LDFLAGS is passed when building ptest
d713c48 libevdev: Upgrade 1.5.1 -> 1.5.2
b66059b librsvg: Upgrade 2.40.15 -> 2.40.16
c124584 libgpg-error: Upgrade 1.22 -> 1.23
54d5009 freetype: Upgrade 2.6.3 -> 2.6.5
0a98691 fontconfig: Upgrade 2.11.95 -> 2.12.0
3eaf1ac cairo: Remove unnecessary UPSTREAM_CHECK_REGEX
b3e4044 expat: Upgrade 2.1.1 -> 2.2.0
5d5efbc packagegroup-core-tools-testapps: remove Piglit temporarily
c3753a8 piglit: Upgrade version, use python3
b384b72 oe/lib/package: handle shlibs files disappearing
72becf9 bitbake.conf: use ${prefix} to define exec_prefix
ad6aaae utils/qemurunner.py: QemuRunner.start() add support for specify extra kernel cmdline
e558b50 site: Move rsync_cv_HAVE_C99_VSNPRINTF to common-linux
17dcf19 nss: Fix build with clang
317447f python-six: Add to oe-core
89eab25 python3: update manifest RDEPENDS for importlib and compression packages
4a5de97 db: Use cross libtool
15ba3c1 initramfs-framework: make rootfs module optional
7eaf305 testimage.bbclass: INHERIT -> IMAGE_CLASSES
4574311 wic: mountpoint is an optional argument
65a0c27 report-error: replace build paths with markers not whitespace
3ad542a rpm: remove CVS-based recipe
d291ca3 recipes-sato: fix upstream version check
470558f python-numpy: fix upstream version check
447d715 python-scons: fix upstream version check
652cacc epiphany: update to 3.20.3
441a1fc libwnck3: upgrade to 3.20.1
15901eb desktop-file-utils-native: update to 0.23
f4cd97c bash-completion: update to 2.3
4c9b1a4 wic: clone gummiboot wks for systemd-boot
3091a8c wic: add systemd-boot option in EFI boot image plugin
a98a818 gcc-cross: default linker hash style to sysv
648fd33 gstreamer1.0-plugins-bad: Fix little rectangel appears at the center when use squeeze and tunnel effects
c62fd75 gstreamer1.0-plugins-bad: Use the newer texture() function in glcolorconvert
a933b78 gstreamer1.0-plugins-bad: Add glBindFragDataLocation in glshader
352acc9 gstreamer1.0-plugins-bad: Don't use the predefined variable name in glcolorconvert
365fdce gstreamer1.0-plugins-bad: Implement multiple render targets for GLES3
e1eca35 gstreamer1.0-plugins-bad: Enable gldeinterlace on OpenGL ES
b0d66a7 gettext_0.16.1: remove useless files to avoid sysroot conflicts
f583dad git: 2.8.4 -> 2.9.0
6ac1f90 sstate.bbclass: make PV to depend on PV variable value
5c545ca v86d: Accept aarch64 as build host
54fd9af libunwind: Port to ppc/musl
d2296ea webkitgtk: Fix build on ppc with musl
fa0b782 python{3}-numpy: Predefine of sizeof off_t on mips/mipsel/ppc
d55b765 linux-yocto: Enable debug/printk.scc KERNEL_FEATURE on qemuall machines.
e833508 nativesdk-packagegroup-sdk-host: Add wayland-scanner to the SDK native toolchain
9045e21 neard: upgrade to 0.16
01a3261 libidn: add license per package
42e870c image_types.bbclass: support template .wks.in files for wic
be90c3e image_types.bbclass: add intermediate var for WKS_FILE_CHECKSUM
8cc2f2c Revert "core-image-sato: add gtk+ for M1"
38d2c59 remove sukoku
ad0cfdb testimage: swap sudoku for galculator
9c4b143 oeqa/sdk: remove buildsudoku test
0b61f87 linux-yocto/4.1: pinctrl backports
200fcba linux-yocto: powerclamp and gpio configuration changes
8a4fb05 linux-yocto/4.4: pwm and mei updates
171d825 linux-yocto/4.4: update to v4.4.14
8e16152 linux-yocto/4.1: update to 4.1.27
6ae50db linux-yocto/config: mei, gpio and usb type c
0c5b11a linux-yocto/4.4: cpumask: Export cpumask_any_but()
59d3fb6 linux-yocto/4.1/4.1: mei, usb and extcon changes
92469ae linux-yocto/4.1/4.4: x86, power and usb-c mainline backports
63ff759 bitbake: bitbake: main: implement server autostart feature
b190c08 bitbake: bitbake: utils: add BBSERVER to the list of preserved variables
6597ba6 bitbake: bitbake: xmlrpc: implement check of connection to server
dead7b2 bitbake: lib/bb/utils: no need to unsetenv when manipulating os.environ
aae4c2a ref-manual: Updated the "Recipe Logging Mechanisms" section
451334a ref-manual: Applied review changes to the DEPENDS variable.
bdf9003 ref-manual: Added review changes to BBCLASSEXTEND description
acdfb5f ref-manual: Added notes to the DEPENDS variable description.
b09a3ad toaster-manual: Changed the Webport address:
640181c ref-manual: Added clarifying note to the BBCLASSEXTEND variable.
48336f5 ref-manual: Added cross-referencing to tasks and dependencies
cf3b80b ref-manual: Added new glossary entry for REMOVE_PKG_SUPPORT.
a814a61 toaster-manual: splitted long line
f649382 toaster-manual: point keywords to Django documentation
9a5af9c toaster-manual: Update toaster start documentation
e92b3a8 toaster-manual: add OpenSUSE to the list of distros
4e01774 toaster-manual: update runbuilds instructions
3d24037 toaster-manual: update apache configuration file
c3e076f toaster-manual: add instructions for OpenSUSE
aa42629 toaster-manual: change mysql driver
4b3c595 toaster-manual: add instructions to create user
14194fa toaster-manual: add list of packages for openSUSE
2134659 toaster-manual: update list of packages
b094b97 toaster-manual: update distro versions
64b8e17 toaster-manual: Switch to pip3 dependency installer
f6378c1 toaster-manual: add instructions to create user
444a80a ref-manual: Added a new section on setscene task variants
4fb1961 ref-manual: Fixed typo in the "Shared State" section.
b67f865 ref-manual: Review edits to the PR variable in glossary.
e5fabb9 ref-manual: Updated the RDEPENDS variable description in the glossary
b66e84e ref-manual: Updated the PR variable description.
33e1c39 dev-manual: Review edits to the package installation section
77031ba ref-manual: Updated the flag descriptions for shared state details
57acc32 dev-manual: Edits to the package feed creation section.
fc518b5 ref-manual: Updated the DISTRO_FEATURES description of Bluez5
45baa90 bitbake: fetch2: implement progress support
843f7ae toaster.bbclass: only scan files-in-image.txt if it exists
ac339ec toaster.bbclass: remove directory scan logic for detecting artifacts
8d08a73 bitbake: toaster-tests: package count/size shouldn't show for non-image builds
8ccf839 bitbake: toaster-tests: new custom image button shouldn't show for non-image builds
db5426b bitbake: toaster-tests: add tests for build artifact display on build dashboard
9475a68 bitbake: toaster: the customise image button shouldn't rely on targets
2db40e3 bitbake: toaster: add package manifest path to Target objects
1027e0e bitbake: toaster: better display of targets which produced no images
adbf206 bitbake: toaster: show manifests in their own section of the build dashboard
07a58a8 bitbake: toaster: only show "New custom image" button for builds with image targets
587275e bitbake: toaster: use has_images() methods to display images correctly
150e558 bitbake: buildinfohelper: only record image files for tasks which make images
00c2c0b bitbake: toaster: improve scan for SDK artifacts
f39ae14 bitbake: buildinfohelper: fix retrieval of targets
4125da7 bitbake: toaster: attach kernel artifacts to targets
e980857 bitbake: toaster: improve image file suffix retrieval
5dfa120 bitbake: toaster: do image and artifact scan on BuildCompleted
b0585e6 bitbake: toaster: display Target targets in build dashboard
844e1f9 bitbake: runqueue: improve exception logging
7a220ae bitbake: lib/bb/utils.py: return sorted OrderedDict in explode_dep_versions2
bc3a206 bitbake: knotty: avoid errors when fetching outside of a task
2afcbfe bitbake: build: don't use $B as the default cwd for functions
faa7268 bitbake: lib/bb/build.py: decode the command as UTF-8
b7a741c bitbake: lib/bb/utils: fix set_process_name
627d019 useradd-staticids: use map() instead of imap()
fd08714 python3: Add compression to python3-shell dependencies
4473e64 python3-native: Add "io" to rprovides
5e747eb python3: Add dependencies for python3-misc
114206f buildstats-summary: round the floating point percentage
029e3eb lib/oe/patch: handle encoding differences in patch files
f465039 recipetool: create: support specifying a file as the local source
54486a1 recipetool: create: fix handling of github URLs
2c9291d graph-tool: convert to python3
baed9bd scripts/contrib/devtool-stress: exclude more recipes by default
89f8348 scripts/contrib/devtool-stress: skip incompatible recipes
5c91537 devtool: return specific exit code for incompatible recipes
d56caf3 devtool: reset: allow reset to work if the recipe file has been deleted
117c80f devtool: update-recipe: fix --initial-rev option
7f6f998 gtk+3: update 0003-Add-disable-opengl-configure-option.patch
e5f9326 file: 5.27 -> 5.28
824e7f7 tzcode-native: update to 2016f
64c54ef tzdata: update to 2016f
56e23ae debianutils: 4.7 -> 4.8
4de8b37 gmp: 6.1.0 -> 6.1.1
65a8f24 libpcre: 8.38 -> 8.39
4dd3980 wget: 1.17.1 -> 1.18
c072b18 mtd-utils: build also for nativesdk
3e01371 linux-yocto-dev: Handle performance regression
6deadf5 gcc: CVE-2016-4490
661ff39 gcc-runtime: add SUMMARY values
1c0fc7f gcc: add runtime packages to RRECOMMENDS
7355e4e libgcc: remove duplicate configure options
a219424 glibc: add more Imagination Meta relocation to elf.h
ea43996 glibc: Upgrade to latest tip of master
ec33670 binutils: Upgrade to 2.26.1
d428f2e musl: Update to v1.1.15 release
6bb3069 tune-ppce500mc.inc: pass -mcpu=e500mc for ppce500mc kernel compile
586249a classes/libc-package: remove pointless copying when running localedef
e2a150b libc-package: remove obsolete do_configure_prepend
8c95d22 move directfb from oe-core
7852381 buildoptions.py: remove directfb image build test
e7ddecc distro_alias.inc: remove directfb related references
e91d0e8 remove core-image-directfb.bb
a526c31 remove packagegroup-core-directfb.bb
3a6f0b6 db: use S/B more idiomatically
b58c5dc libsolv: upgrade to 0.6.22
8501934 screen: upgrade to 4.4.0
3eb5cba libatomic-ops: upgrade to 7.4.4
578bc2b ethtool: upgrade to 4.6
5d34839 vala: update to 0.32.1
82f83f6 nss: update to 3.24
969ba57 mpg123: update to 1.23.5
a75183b btrfs-tools: update to 4.6.1
b141340 gnutls: update to 3.5.1
f31597a babeltrace: update to 1.4.0
c04d4a0 libarchive: update to 3.2.1
4d8a816 ffmpeg: update to 3.1
5c4e3b5 bdwgc: update to 7.4.4
d6abd75 terminal: Drop gnome-terminal --disable-factory workarounds
c706bfb terminal: Fix gnome-terminal to work with recent versions
9df3cdf pseudo: Upgrade to 1.8.1
a14d30f oe-selftest: drop test_prepare_unexpected
8dc159d bitbake: toaster: tests Add selenium test for layerdetails page
8813726 bitbake: toaster: add Layer delete front end feature to layerdetails
e1ba2fd bitbake: toaster: api Add util function for returning the error response
36dec68 bitbake: toaster: layerdetails api Fix saving of git revision of a layer
903c3c2 bitbake: buildinfohelper: ensure task datetimes are timezone-aware
78b3fe6 bitbake: eventreplay: rewrite the script
2b56c03 bitbake: eventreplay: reorganize imports
9431a6f bitbake: eventreplay: replace MockConfigParameters with namedtuple
70cc20d bitbake: eventreplay: fix event loading code
2199ff5 bitbake: eventprelay: implement setEventMask command
a1ceb0f bitbake: eventreplay: add MockConnection.getEventHandle method
ed9c309 bitbake: toaster: fix layout for command-line builds in recent builds area
7ed76e4 bitbake: bitbake-worker: don't reassign sys.stdout
dab3b1b bitbake: toaster: views Fix most frequently built target in project reporting
5018d5f bitbake: toaster: layerBtn avoid connecting handler to other build buttons
9d730f4 bitbake: bitbake: toaster-tests: tests for project config
dabb49b bitbake: toaster: fix validation checks for DL_DIR and SSTATE_DIR
be00eb2 bitbake: toaster: remove SSTATE_MIRRORS from projectconf
f433664 bitbake: toaster: remove SSTATE_MIRRORS from blacklists in views
b301251 bitbake: progress: Ensure missing start event is fired
1b5688e bitbake: knotty: Handle process indicators more gracefully
1b930b4 bitbake: runqueue: report progress for "Preparing RunQueue" step
f3b62c1 bitbake: runqueue: add ability to enforce that tasks are setscened
76feac3 bitbake: knotty: add quiet output mode
465f939 bitbake: knotty: show task progress bar
8d56d59 bitbake: knotty: add code to support showing progress for sstate object querying
0e3281f bitbake: lib/bb/progress: add MultiStageProgressReporter
ac5e720 bitbake: lib: implement basic task progress support
1cf6e14 bitbake: knotty: import latest python-progressbar
481048c bitbake: knotty: provide a symlink to the latest console log
312f1a5 bitbake: fetch2/wget: attempt checkstatus again if it fails
1bbd580 oeqa/selftest/bbtests: Fix failing test after progress changes
c7147ce oeqa/runtime/systemd: fix typo in skipUnlessPassed decorator
895353a service: obey CFLAGS, LDFLAGS
d6a43d2 initramfs-framework: Add support for PartUUIDs
ee6a6c3 initramfs-framework: add retry loop for slow boot devices (like USB)
e34eb01 lib/oe/path: remove oe.path.check_output
6a2753b scripts: Fixed typo in parameter that was causing exception
f8bdaf3 rt-tests: move ptest to python3
6074ed6 gcc: remove GCC 4.9
14c9011 gcc: remove unused patch
7b6f667 gcc-5.4: Fix hang with mmusl option on cmdline
b45155b pulseaudio: Disable unit tests
ac0e5e2 socat: remove the hardcoded shifting offset
dc626e3 runqemu: Avoid duplicating custom QEMU options for AArch64
e8e8d41 libpfm4: fix compile error
23ae622 classes/populate_sdk_ext: exclude initramfs images from locked signatures
c7ab9f3 classes/populate_sdk_ext: ensure tasks to build the image are included
1063622 recipetool: create: drop unused convert_pkginfo() function
75f1a0e recipetool: create: avoid decoding errors with Python 3
74c5cd0 autogen-native: fix script error when processing libguile
e4224fb l3afpad: add check for GTK3DISTROFEATURES
dca5d9d gettext: fix for low-version recipe
e1ca5d9 libidn: add patch to build w/ -Wformat-security
e49d337 meta: update patch metadata
e6ad36c run-postinsts: Correct comment misspelling, "rpm-posinsts".
94fb1a5 oepydevshell-internal: python3: encode/decode pty content
e8feb19 devpyshell: python3: flush stdout explicitly
250955a devshell.bbclass: fix double unbuffering
16df2b6 pseudo: drop recipe for old 1.6.7 version
4ebe0e1 classes/cmake: enable progress for do_compile
a702c68 classes/populate_sdk_ext: eliminate double execution on install
c24b651 toolchain-shar-extract.sh: allow TERM through into SDK installer env
af4d725 lib/oe/sstatesig: print locked sigs file message only when explicitly called
ff41cfb classes/testsdk: print output correctly on failure
6677dd3 classes/sstate: add a mode to error if sstate package unavailable
e769dce classes/sstate: show progress during sstate object availability check
4071217 classes/image: implement progress support for do_rootfs
8daa1b4 bitbake.conf: whitelist progress varflag
4e889c0 scripts/lib/bsp/help.py: Changed help of yocto-bsp to match latest syntax
479d15b yocto-bsp: Refactor script to use argparse instead of optparse
4ab8650 scripts/yocto-bsp: Removing version from yocto-bsp
4252ec7 scripts/lib/bsp/engine.py: Add error message for wrong input file
71bc7fd scripts/lib/bsp/help.py: Fixed pager for yocto-bsp help
2128272 scripts: Fixed typo in parameter that was causing exception
3f8fbdb meta-yocto: Delete PREFERRED_VERSION for obsolete version of U-Boot.
9d0e391 local.conf.sample.extended: drop RPM4 example
11af659 poky: drop unsupported distros
5c11e36 lib/oeqa: add Galculator to SDK and runtime tests
b305564 oeqa/runtime/syslog: remove redundant skipUnlessPassed
e0bcf33 toolchain-scripts: add sysroot/usr/share/pkgconfig to PKG_CONFIG_PATH
076a93e oeqa/utils/commands: fix single-character variable matching in get_bb_vars()
8f82db7 linux-yocto: bxt and input configuration changes
76332d9 linux-yocto/4.x: vfat feature cleanup
b80b543 linux-yocto/4.1/4.4: tpm, telemetry, acpi and cpuid changes
678a02e scripts/contrib: introduce build-perf-test-wrapper.sh
0c92770 oe-build-perf-test: add --out-dir command line argument
c3ee14e oe-build-perf-test: enable locking
eb36f00 oe-build-perf-test: implement --globalres-file option
8c59636 oeqa.buildperf: add git revision and branch to result data
964fffa oeqa.utils: add git module
8329d56 oe-build-perf-test: enable logging into file
5599645 oeqa.buildperf: archive build/conf into test results
da3b924 oeqa.buildperf: add test Test4
fe24b5a oeqa.buildperf: add test Test3
0b2fae8 oeqa.buildperf: add test Test2
1701a34 oeqa.buildperf: add test Test1P3
b5ca437 oeqa.buildperf: add test Test1P2
2c1b874 oeqa.buildperf: add test Test1P1
1d88659 oeqa.buildperf: implement BuildPerfTestRunner class
6512d69 oeqa.buildperf: add method for saving buildstats
45c6a04 oeqa.buildperf: add method for measuring file disk usage
1a0e205 oeqa.buildperf: add method to log shell commands
6e27b2a oeqa.buildperf: method for measuring system resource usage
1b10ded oeqa.buildperf: add BuildPerfTest class
cee685c oeqa.buildperf: functionality to drop kernel caches
7d42cea oe-build-perf-test: introduce oeqa.buildperf module
c855cb8 oe-build-perf-test: add pre-run sanity check
14108a8 scripts: introduce oe-build-perf-test
ec8be20 oeqa.utils.commands: runCmd: return stderr output, too
cf4c898 oeqa.utils.commands: use get_bb_vars() in get_bb_var()
c9639e6 oeqa.utils.commands: Introduce get_bb_vars()
58643b7 lib/oe/package_manager: keep platform_extra and default_platform_extra lists ordered
6d2bcc2 linux-libc-headers: Update doc for recipe depends
aa2da21 gstreamer1.0-libav_git: bump version to 1.8.2
2f5737c gstreamer1.0-plugins-ugly_git: bump version to 1.8.2
345edd4 gstreamer1.0-plugins-base_git: bump version to 1.8.2
5e22094 gstreamer1.0-plugins-bad_git: bump version to 1.8.2
b4fc653 gstreamer1.0-plugins-good_git: bump version to 1.8.2
869ad20 gstreamer1.0_git: bump to 1.8.2
6bfec95 gstreamer1.0: Upgrade to 1.8.2
3e74ef2 kernel-module-split.bbclass: add a prefix for module package name pattern
fff33f1 watchdog: Fix build with musl
1bf0944 gcc5: Upgrade to gcc 5.4
0412b6d uclibc: re-enable verbose compilation
c1dafd1 uclibc: backport patch to fix gdb 7.11 compilation
820a9d0 classes/kernel: fix symlink logic when bundling initramfs images
1b29aff binutils: backport patch to fix mipsel (malta) kernel compile
aa9fb3f glib: disable valgrind support when compiling in mips16e mode
fc97ef9 libffi: don't compile in mips16e mode
90bb7c1 uclibc: don't compile in mips16e mode
2c80ebf gmp: don't compile in mips16e mode
d81b918 json-c: backport patch to fix uClibc link issues
15c3c3e libidn: fix QA warning (uClibc)
83444bb classes/kernel: fix symlink creation in DEPLOYDIR for bundled initramfs
dc1b016 musl: Upgrade to tip
b84875f pythonnative.bbclass, python3native.bbclass: use DEPENDS_append instead of DEPENDS +=
98121ad recipetool: recognize less common makefile names
77b5728 systemd: upgrade to 230
f400833 bash-completion: delete files util-linux provides
73dcfb6 util-linux: upgrade to 2.28
52adfed test-dependencies.sh: Strip also '\.bb; .*' before adding failed recipe to list of failed
3b208bc libcap: fix the libcap-native building failure on CentOS 6.7
0658935 libsdl2: Add missing comma typo
cf1af6b pythonnative.bbclass, python3native.bbclass: export STAGING_INCDIR, STAGING_LIBDIR, PYTHON variables
83b11dc gdb-cross: do not hardcode the use of Python 2
a3869bf connman-gnome: StatusIcon adapts to size changes
0cef80f vte: don't build test app
2ebd117 gsettings-desktop-schemas: inherit upstream-version-is-even
d818cde cairo: inherit upstream-version-is-even
fd7a8b2 puzzles: Keep building even with deprecation warnings
ad439ce clutter-gtk-1.0: Upgrade 1.6.6 -> 1.8.0
e889651 at-spi2-atk: Upgrade 2.18.1 -> 2.20.1
169fbdb at-spi2-core: Upgrade 2.18.3 -> 2.20.2
478d446 atk: Upgrade 2.18.0 -> 2.20.0
33226ae gtk+3: Upgrade 3.18.8 -> 3.20.6
ef8bbc7 openssl: prevent warnings from openssl-c_rehash.sh
2fcece7 bitbake.conf: Drop BUILDSDK_LDFLAGS rpath, rpath-link
2ef717d qemu: add PACKAGECONFIG stanza for bzip2
ec64c9c u-boot: extend UBOOT_CONFIG format to support different binary name
f91a01b e2fsprogs: tweak mke2fs ext4 features
13eb4a8 gst-player: upgrade to latest HEAD
c6d50b2 bitbake: lib/bb/build.py: remove task flag in deltask()
6ae96f7 puzzles: fix Samba conflict, clean up recipe
8375252 linux-yocto/4.4: sensor driver backports
f28c266 linux-yocto/4.1: pstate backports
f775c27 linux-yocto/4.1: driver, mmc and power backports
48d7ebc linux-yocto/4.1: SPI, MFD, alsa and perf backports
deced08 linux-yocto/4.1: tpm2, pinctrl, powercap and watchdog backports
2f9b8e9 initramfs-framework: base: Ensures /run/lock is available
9623b23 initramfs-framework: mdev: Add a runtime dependency on busybox-mdev
0c8b264 linux-firmware: add iwlwifi-misc package for remaining iwlwifi firmware
c406763 linux-firmware: add iwlwifi virtual package of all iwlwifi firmwares
5f854c2 linux-firmware: fix typo in RDEPENDS line for iwlwifi-6000g2b-5
4c46ca1 linux-firmware: add LICENSE line for iwlwifi-license package
87dbb6b linux-firmware: fix typo in LICENSE line for iwlwifi-6000g2b-5
1960abc oeqa/targetbuild: use os.path.join instead of string concatenation
40268fe oeqa/targetbuild: add extra_cmds argument to run_configure
0aa028f oeqa/targetbuild: fix folder name estimate logic
c844230 tzdata: update to 2016e
4bd8e67 tzcode: update to 2016e
313ae0a qemu: Use Gtk+3, add configure patch to find vte
d8afd0c libmad: remove recipe
00fea48 gstreamer1.0-plugins-ugly: disable mad, enable mpg123
6085ce0 mpg123: add a recipe from meta-oe
ec96025 security_flags.inc: add python3-pycairo and libnewt-python to no-pie exception list
0881208 security_flags.inc: add SECURITY_NO_PIE_CFLAGS to libgcc and gcc-sanitizers
95cd78a bitbake.conf: don't set CCACHE_DIR to $HOME by default
51059ee binutils: configure with --enable-deterministic-archives
1bf1af5 dbus/dbus-test: upgrade to 1.10.8
1137709 opkg: upgrade to v0.3.2
772ba8d openssh: fix init script restart with read-only-rootfs
e6faa3d packagegroups: use new gst-player package name
79ca8d0 gstreamer1.0-plugins-bad: Upgrade to 1.8.1
a029113 expat: CVE-2016-0718
c0238cb linux-firmware: add iwlwifi-8000C-19 version
bf54af3 sysprof: fix pkgconfig packaging
e04da4b autotools: ensure Makefile exists in do_compile
c2acd4e package_manager.py: specify tmpdir for opkg
675843d oeqa: fix hasPackage, add hasPackageMatch
c65cf8e xcb-proto: use python3 instead of python2
1096a95 toasterconf: exclude releases Toaster can't build
5e86682 maintainers.inc: remove libmad, add mpg123
922294d maintainers.inc: reassign vala recipe
6f0c553 build-appliance-image: Update to master head revision
b6d61ec e2fsprogs: Manually bump PR due to PV change (work around sstate confusion)
84cce1d e2fsprogs: remove the extra dot from the recipe filename
a3494dd sdk-manual: Updated configure.ac file in helloworld example.
11b6dd1 ref-manual: Updated SSTATE_MIRRORS examples to match reality
0689732 dev-manual: Updated Runtime Testing for Package Installation
26d2f28 dev-manual: Updated the method to set SimpleHTTPServer for testing
fadcb31 ref-manual: Fixed a typo for installing "python3-git"
ca519a1 dev-manual: Applied edits to the package feed section.
6b3b444 ref-manual: Updated the UPSTREAM_CHECK_* variables.
ac8173e dev-manual: Updated Host Server Machine Setup for package feeds
52fc567 ref-manual: Added note about installing Git-Python package
f33db8b ref-manual: Updates to the UPSTREAM_CHECK_* variables
508e890 dev-manual: Review edits applied to the package feed build considerations.
cd7f787 ref-manual: Edits to UPSTREAM_CHECK_* variables.
c735ade ref-manual: Added descriptions for three UPSTREAM* variables.
7ef4a65 dev-manual: Updated Package Feed Creation sections
44f29bf ref-manual: Updated the INHIBIT_PACKAGE_STRIP variable
37ec030 build-appliance-image: Update to master head revision
e6d26f5 package_manager: Fix multilib package arch ordering issues
95f6e7b bitbake: cooker: clean up EvertWriter
f6fc25d bitbake: cooker: replace EventLogWriteHandler with namedtuple
a158388 bitbake: cooker: don't remove event file
e28b36e bitbake: cooker: encode event objects to base64
3e7edc3 bitbake: cooker: move EventLogWriteHandler to the top module level
90d7b09 bitbake: depexp.py: port to gtk+3
8d56c54 rootfs_rpm: Increase rootfs size
09d0834 Revert "cmake.bbclass: set the modules directory correctly"
7b9e1f5 cmake.bbclass: set the modules directory correctly
8f7f8f7 pseudo: remove rpath from libpseudo.so
3037e0d useradd-staticids.bbclass: Allow missing UIDs/GIDs to generate warnings
c99750d useradd-staticids.bbclass: Restore failure on missing UIDs/GIDs
4ed711a documentation.conf: Add information about USERADD variables
40f3099 base.bbclass: p4 fetcher supports srcrev
0006a7f packagegroup-self-hosted: add back Python 2
4799e1e gtk+3: Add patch for --disable-opengl
ce5523b bitbake: toaster: remove last css file with bootstrap v2 license
107d428 build-appliance-image: Add LC_ALL setting and drop pseudo pieces
9b32dd5 package_deb: Avoid chdir warnings and restore cwd after packaging
3dfe69b build-appliance-image: Install network components
f74ba25 bitbake: runqueue: Use tid instead of taskid in find_chains()
26447a0 bitbake: fetch2/perforce: Rework to support SRCREV and P4CONFIG
9f91785 bitbake: fetch2: fix unpacking of deb packages
34dc5b3 bitbake: toaster: fix typo which causes table searches to fail
d4a87b9 build-appliance-image: Update to master head revision
772e9b4 bitbake: bitbake: fix wrong usage of format_exc
39ed544 packagegroup-core-device-devel: add binutils-symlinks
2a85038 directfb: fix client->gfx_state initialisation
792fd38 package_ipk: restore cwd after packaging
70d6306 classes/package: save/restore cwd in split_and_strip_files
e2e6fe9 classes/kernel: remove path assumptions in compile_kernelmodules
6f7a3dc classes/image: don't chdir when creating symlinks
4e1a104 linux-yocto: Update SRCREV for genericx86* for 4.4 Upgrades to Linux version 4.4.13
f2cf71a linux-yocto: Update SRCREV for genericx86* for 4.1 Upgrades to Linux version 4.1.26
755bb55 conf/distro: remove oprofileui
6e53ab4 maintainers.inc: add missing recipes
282d5f7 core-image-sato: add gtk+ for M1
1c91694 make: 4.2 -> 4.2.1
a525a06 gnome-themes-standard: Use distro_features_check for GTK+2
27f62dc gtk-engines: Remove as unused
73e9f90 sato-icon-theme: remove as unused
3abdec9 gtk-sato-engine: Remove as unused
f5e4aa2 packagegroup-self-hosted: Remove unused theme, use Adwaita icons
f9c7851 matchbox-desktop: Add Sato folder configuration
bff5f0e matchbox-session-sato: Update session startup
dda59dd sysprof: Upgrade to git version slightly past 3.20
c072545 avahi-ui: Build with Gtk+3
7bcb1c5 webkitgtk: Disable Gtk2 plugin process by default
ef3d05a gtk+: RRECOMMEND adwaita theme
81d0b2d packagegroup-core-x11-sato: Remove gtk-sato-engine
14b8cb1 libowl: Remove as unused
e0ba559 libfm: switch to GTK3 version
1545d3a pcmanfm: switch to GTK3 version
79faec0 leafpad: Replace with L3afpad
920fc82 matchbox-config-gtk: Upgrade to 0.2
457f825 gst-player: Start building with Gtk+3
70f4651 puzzles: Use Gtk+3 by default
e4738fd matchbox-terminal: Upgrade to 0.1
ee0188f vte: Upgrade to 0.44.1
5b076f9 packagegroup-core-x11: Use adwaita icons instead of sato
c8044c4 matchbox-keyboard: Enable GTK+3 IM module
fdbf32b connman-gnome: Add patch to port to Gtk+3
8e71c58 matchbox-wm: Upgrade to 1.2.1
8072c70 settings-daemon: Upgrade to 0.0.2
f1dcc26 sato-screenshot: Upgrade to 0.2
ff6dd06 matchbox-panel-2: Upgrade to 2.10
7a69ef0 matchbox-desktop: Ugrade to 2.1
e618179 matchbox-theme-sato: Upgrade to 0.2
66c5a4a classes/license: handle EXDEV if hard link to license fails
4f8f3f6 classes/rm_work: use the idle I/O scheduler class
fe4184d python3: fix CROSSPYTHONPATH for cross builds
ce6e49a gcc: make sure header path is set correctly
66aebcc flex: Fix top_builddir path for flex's test-driver script
6a27517 linux-yocto/4.1: powerclamp: APL CPU
96a993b linux-yocto/4.1: Always Running Timer Support
30a289a linux-yocto/4.1: intel_idle: backport BXT CPU support
3dcbd12 linux-yocto/4.4: update to v4.4.13
62f4fa4 linux-yocto/4.1: bump to v4.1.26
7ccbe39 linux-yocto/4.1: serial, mmc, mtd mainline backports
280061c classes/sdl: remove pointless class
1ed0e8a update-rc.d.bbclass: Disable class when sysvinit is not in DISTRO_FEATURES
44ab979 qemu-native: set ld.bfd, fix cflags, and set some environment vars
8f9f48a oprofileui: remove
ff6d458 bitbake: parse/ast, event: Ensure we reset registered handlers during parsing
27fa181 bitbake: toaster: Remove mismerged files
af04a52 bitbake: taskdata/runqueue: Rewrite without use of ID indirection
29b4fb1 bitbake: runqueue: Change buildable/running lists to sets
7e54da0 bitbake: toaster: tests browser Fix selenium tests after bootstrap3 breakage
234a625 bitbake: toaster: tests Rename test settings to python compliant name and fix import
000d724 bitbake: toaster: selenium tests Fix all_projects page and sample tests
f48feeb bitbake: toaster: selenium tests Update unique custom image string and fix import
5ee6b70 bitbake: toaster: js tests Twitter typeahead library object is now ttTypeahead
aa6894a bitbake: toaster: fix wrong usage of print_exc and format_exc
eb634f9 bitbake: toaster: changed python version in shebang
0a7bd53 bitbake: toaster: toastergui tests Use new BeautifulSoup syntax
eba5321 bitbake: toaster: open image files in binary mode when sending in response
16df75d bitbake: toaster-tests: fix tests for latest Selenium version
6eefd9c bitbake: toaster: fix broken reference to urllib
79a3954 bitbake: toaster: fix test_toaster_tables
4422d26 bitbake: toaster: fix incorrect file mode
c28f918 bitbake: toaster: decode response content
1fd1600 bitbake: toaster: fix migrations
f0740b0 bitbake: toaster: replace viewkeys() -> keys()
5bebe39 bitbake: toaster: bin Use python 3 for our django modules check
e23faac bitbake: toaster: BuildTasksTable filters remove outcome NA option
0db23ae bitbake: toaster: BuiltPackagesTable format empty state in packages table
1a00cdb bitbake: toaster: build data Fix left navigation
a7d498d bitbake: toaster: port all build analysis pages to bootstrap 3
4627183 bitbake: toaster: buildtables Remove links from non name fields
de3984c bitbake: toaster: fix typo which prevents filters from working
ef72321 bitbake: toaster-tests: maximize browser window when running UI tests
dd76400 bitbake: toaster: Rework displaying package dependencies across Toaster
89433a3 bitbake: toaster: widgets ToasterTable Catch template rendering exceptions
82722cb bitbake: toaster: tests Add new build tables to tests
c42f1cc bitbake: toaster: table.js Add the ability to highlight a particular row
caae3b6 bitbake: toaster: port Installed packages table to ToasterTable
b2a68f5 bitbake: toaster: port Task tables to ToasterTables widget
32d1e2d bitbake: toaster: port Built recipes table to toastertables
a786ac1 bitbake: toaster: port table for Built packages to ToasterTable
b63f951 bitbake: toaster: ToasterTable widget add an 'a' to Name in Exception class
0bd6095 bitbake: toaster: toaster tables Enable complex empty states
443f7b3 bitbake: toaster: Migrate project configuration from bootstrap 2 to bootstrap 3
79e0eb9 bitbake: toaster: work-around our lack of a synchronous fetch for typeaheads
cd7b48c bitbake: toaster: migrate typeahead library
6462202 bitbake: toaster: tests Add a BuildTest helper class
6f924f3 bitbake: toaster: tweaks to recipe file downloads
abfd095 bitbake: toaster: testsjs Add call back to append elements on completion of tests
099f026 gzip: upgrade to 1.8
3274e76 ncurses: upgrade to 6.0+20160319
322ada3 pax-utils: upgrade to 1.1.6
8211709 man-pages: upgrade to 4.06
466428e libxml2: upgrade to 2.9.4
4e5128b libnewt/libnewt-python: upgrade to 0.52.19
f81a018 libgcrypt: upgrade to 1.7.0
72e560e help2man-native: upgrade to 1.47.4
a9d1786 gnugp: upgrade to 2.1.12
16fbcbb ghostscript: upgrade to 9.19
c6930da dhcp: upgrade to 4.3.4
7028192 image.bbclass: do exact match for rootfs type
672c024 xinput-calibrator: add missing dependency for xinput_calibrator_once.sh
5c94a49 libc-package: ensure glibc-locale package list is deterministic
87d4da4 webkitgtk: do not inherit pythonnative
367a102 python3-native Add RPROVIDES python3-importlib-native
873e56e python-ptyprocess: Extend to cover nativesdk
57bde45 testexport-tarball: Add default value for TEST_EXPORT_SDK_PACKAGES
b41b2fa scripts: ensure not specifying subcommand shows help text
5c1b9fd devtool: reset: allow specifying multiple recipes
dd6d61a devtool: tweak README in created workspace layer
a0006fd python-mako: rm -df -> rmdir
0918ac9 staging: Add BB_SETSCENE_VERIFY_FUNCTION2 for bitbake runqueue changes
f491996 binutils: fix the incorrect assembling for ppc wait instruction
559dba8 strace: 4.11 -> 4.12
632b773 tcl: 8.6.4 -> 8.6.5
e5043db libcap: 2.24 -> 2.25
791e18a libbsd: 0.8.2 -> 0.8.3
f221f33 e2fsprogs: 1.42.99+1.43+git -> 1.43
ce0a036 make: 4.1 -> 4.2
ca9af20 git: 2.8.2 -> 2.8.4
306e8b8 mklibs-native: 0.1.40 -> 0.1.41
e19af01 file: 5.25 -> 5.27
4690723 autogen-native: 5.18.6 -> 5.18.10
4b77707 resolvconf: upgrade to 1.79
ff1105f pciutils: upgrade to 3.5.1
ad63662 tar: upgrade to 1.29
df25fcd curl: upgrade to 7.49.1
d665bfb byacc: upgrade to 20160324
523382d sudo: upgrade to 1.8.16
2a6da10 sysstat: upgrade to 11.3.4
20a9c29 grep: upgrade to 2.25
e9987f6 systemd-boot: Set COMPATIBLE_HOST in recipe
71765a9 bitbake: cooker.py: fix warn() -> warning()
f2e5d88 bitbake: data_smart/utils: Add 'd' to the context used for better_eval in python expansion
a1a0ce1 scripts/lib/bsp/engine.py: Added missing parentheses to string formatting
7fc6c45 scripts/lib/bsp/kernel.py: python3: use explicit relative imports
dd20de9 scripts/lib/bsp/engine.py: Rename raw_input commands to input
0aa5c27 scripts/yocto-bsp: Fixed typo in parameter that was causing exception
9199a25 systemtap: add build dependency on ncurses
db84521 oe/distro_check.py: Fixes for python3
4c38798 useradd-staticids.bbclass: Avoid FutureWarning about split()
93698ac useradd-staticids.bbclass: Make sure opened files are closed
a912099 mips: add tunes for (some) 24K cores
7acb3db mips: add a tune for using MIPS16e ASE instructions
ef35fac uclibc: never build with SSP
b709c6c uclibc: no need for CONFIG_MIPS_ISA_xxx config options
9ac4c8b image/image_types.bbclass: fix fatal error during cpio debugfs creation
3332061 libjpeg-turbo: update to 1.5.0
4078b77 gnutls: update 3.4.9 -> 3.4.11
cfac890 weston: Fix bug causing the xwayland package to always be included
0c9c349 adwaita-icon-theme: Split symbolic icons into 2 packages
e501d6f gtk+3: Add RRECOMMENDS to match gtk+
b0c69fe gtk-immodules-cache: Support both GTKs at same time
b72c246 distcc: Disable GTK UI by default
7888c74 oh-puzzles: Remove as we're using puzzles now
f04d8bc packagegroup-core-x11-sato: Use puzzles instead of oh-puzzles
947d41a gnome-themes-standard: Add new GTK+2 theme
21343ac npm.bbclass: avoid str/byte conversion problems for PKGV and SUMMARY
b2b1a5f buildhistory-diff: suggest correct version of PythonGit
a6da506 weston-init: Don't change XDG_RUNTIME_DIR if it already exists
7950a90 weston-init: Use bitbake path variable
be82bdd x11-common: Fix XDG_RUNTIME_DIR typo
5edb12b python: Several recipes needed SRC_URI updating
61ba930 oe-pkgdata-util: new option to provide full info for binary package(s)
8a6c198 lib/oe/terminal.py: decode bytes variable before rstrip/split
09b9325 python3-pygobject: Upgrade from 3.18.2 to 3.20.1
cf12463 avahi: add extra path to GIR_EXTRA_LIBS_PATH
fed0933 python3-pygobject: only check for even upstream versions
bfade8c bash-completion: fix upstream version check
35fb16d python-numpy: Upgrade from 1.10.4 to 1.11.0
6aaeced python3-pip: Upgrade from 8.0.0 to 8.1.2
313a5f5 python-scons: Upgrade from 2.4.1 to 2.5.0
07c5fd7 python-pexpect: Upgrade from 4.0.1 to 4.1.0
84e9f80 python-mako: Upgrade python-mako and python3-mako to 1.0.4
03fa693 python-git: Upgrade from 1.0.2 to 2.0.5
f69acee python-setuptools: Upgrade to 22.0.5
3411d2d eudev: upgrade to 3.2
98fbdc7 runqemu-internal: Update the qemuzynq boot options
768dcc1 webkitgtk: disable gobject-introspection on mips64
abd5c11 packagegroup-self-hosted: port to Python 3
24dc5fc perl: fix several perl test failures
7ff9c5f perl: some perl tests require libssp
16f0c78 perl: set proper perl subversion number in config files
ff3bc6c runqemu: Add suport for qemuzynqmp
21fbcdb packagegroup-self-hosted.bb: remove unsuitable network related dependence
40e789d bitbake: lib/bb/main.py: Fix use of BBPOSTCONF and BBPRECONF
db7ec6c oe-pkgdata-util: fix AttributeError
4a842cc selftest/testexport.py: Add test test_testexport_basic
2228b16 testexport.bbclass: Create tarballs for easy release
120f706 testexport.bbclass: Add support for testexport-tarball
7d18d9f testexport-tarball.bb: Add recipe
cfe3efd testimage.bbclass: Make dependency of cpio when using RPMs
938f053 oetest.py: Add install/uninstall functionality for DUTs
d9b3ee8 lib/oeqa/otest.py: Fix import tests from other layers with python3
84441a9 oe/lib/pacakge_manager.py: Update missing pipeline decoding
d28781b alsa-plugins: 1.1.0 -> 1.1.1
4c63497 alsa-utils: 1.1.0 -> 1.1.1
c883f4c alsa-lib: 1.1.0 -> 1.1.1
adfec92 alsa: update BUGTRACKER links
b7cd72c opkg-utils: update SRCREV
d9e47a5 rm_work: exclude all kernel recipes
a2eb6d4 gobject-introspection: move to Python 3
794a23a db: add RECIPE_NO_UPDATE_REASON
aafcdd0 linux-yocto/4.4: mmc backports
7bb3651 yocto-bsps: add i2c definitions to beaglebone
87dc548 linux-yocto/4.4: bump to v4.4.12
a7ddbea meta: Drop swabber
c2dbcbb scripts/lib/bsp/engine.py: Added missing keyword to fix syntax error
cffea7f maintainers.inc: change maintainer of db package
9c75c64 kernel-dev: Fix the locations of .config and source directory
25d8fac profile-manual: Added cross-reference links to INHIBIT_PACKAGE_STRIP
ceb7c51 ref-manual: Fixed *[doc] string for INHIBIT_PACKAGE_DEBUG_SPLIT
6c5fea2 documentation: Prepared manuals for a 2.2 release.
8fc310c ref-manual: Added BlueZ version 5 feature to distro feature section.
6c5d7f1 lib/oe/package_manager: adapt for Python 3
5481363 libarchive: respect disable-acl configuration option
04319c0 image-buildinfo: Update to python3 syntax
928e133 libarchive: Add PACKAGECONFIG for lz4 to ensure determinism
81b59a1 dpkg: Upgrade to 1.18.7
b7644fc ofono: update to 1.18
25586a3 gnome-desktop3: update to 3.20.2
0fb7a43 watchdog: update to 5.15
d2d5bf5 systemtap: update to 3.0
41f1882 msmtp: update to 1.6.5
9b93787 libxslt: update to 1.1.29
eddd0ec libksba: update to 1.3.4
7183a89 kexec-tools: update to 2.0.12
878ca63 iso-codes: update to 3.68
d44fcb3 icu: update to 57.1
64e6409 mc: update to 4.8.17
2a16d50 gobject-introspection: update to 1.48.0
3b85abf gdb: fix upstream check
02d0933b gcc: fix upstream check for 5.x version
09f1f30 cantarell-fonts: update to 0.0.24
063d49b ffmpeg: update to 3.0.2
5200775 build-appliance-image: update version to 15.0.0
88ac059 btrfs-tools: update to 4.5.3
f6f7db7 boost: update to 1.61.0
7a0ef75 cantarell-fonts: fix upstream check
91874ce tzcode, tzdata: fix upstream version check
ce3ab76 cups: fix upstream version check
da4abff webkitgtk: upgrade to 2.12.3
2d97d69 rt-tests, hwlatdetect: upgrade to 2.0
9e29916 gdbm: upgrade to 1.12
4b4e182 toasterconf.json: exclude releases Toaster can't build
df963f5 scripts/pybootchart: Fix print statement
438ac32 bitbake: codeparser: Use hashlib for hashing, not hash()
5f2facf bitbake: codeparser: Small optimisation to stop repeated hash() calls
7e73990 scripts: python3: change python to python3 in shebang
3e309e0 scripts: python3: decode subprocess output
3af9f6b engine: python3: replace iteritems() -> items()
c675974 scripts: python3: replace exec statement with builtin
059dd9f scripts: python3: use explicit relative imports
d1421df engine.py: python3: rename sys.maxint to sys.maxsize
ecc9184 scripts: python3: use new metaclass syntax
5483fa2 scripts: python3: rename raw_input to input
02ac95a bitbake: fetch2: fix unpacking of deb packages
08c6808 bitbake: fetch2/git.py: References must match exactly
2660dde bitbake: cookerdata: print an error if layer dir does not exist
c8aad90 send-error-report: encode data to bytes
14b758b lib/oe/buildhistory_analysis: fix for Python 3
a8cf2ce security_flags.inc: add an entry for python3-numpy
91a7f54 testexport.bbclass: Update to use python3
1a2a69e dosfstools: Upgrade 3.0.28 -> 4.0
469e56b image-live, image-vm, wic: Remove fs size workaround
48bc623 mtools: Patch out a useless sanity check
309c0b6 ca-certificates: add dependency for native/nativesdk on openssl-native
cdff6bc scripts: python3: change python to python3 in shebang
4e36eee scripts: python3: decode subprocess output
a8314b9 combo-layer: python3: use tempfile.TemporaryFile
f1e85d4 dirsize: python3: fix TypeError: unorderable types
a404542 combo-layer: python3: import reduce
64987b2 scripts: python3: use new metaclass syntax
b05bf8c scripts: python3: get rid of __future__ imports
793b83a scripts: python3: rename raw_input to input
90e7fee ksize.py: python3: get rid of strings.join
f6f1085 scripts: python3: fix urllib imports
ee31bad scripts: python3: use new style except statement
07c97db scripts: python3: convert iterables to lists
1132970 automake: drop the Python scriptlets to determine Python's directories
5796328 python3-numpy: add a recipe
7f2ac59 hwlatdetect: move to Python 3
caf553b libcap-ng: move to Python 3
cc95c79 systemtap: move to Python 3
eb80ec9 lttng-ust: move to Python 3
8fdb4be lttng-tools: move to Python 3
76d6f00 gnome-doc-utils: remove recipe
296004a libnewt-python: move to Python 3
0789227 libuser: move to Python 3
444da83 python-docutils: move to Python 3
68cea00 python-imaging: remove unused recipe
5cd554f python-pyrex: remove unused recipe
991a713 swig: move to Python 3
609bf2e gdb: move to Python 3
ada03c3 bootchart2: move to Python 3
4672ffa python-pycairo: move to Python 3
a8d85cf util-linux: move to Python 3
8c1aa8b systemd: drop python dependency for ptests
96f8845 nfs-utils: switch to Python 3
6042021 packagegroup-core-full-cmdline: drop python-dbus from the list of services
0bde4b9 ofono: drop the custom-made revert to Python 2 from Python 3
5a3a4a7 connman: do not install Python test scripts
eb45d83 bluez5: switch to Python 3
48bd640 neard: do not package python test scripts
4de7a81 python-pygobject: port to Python 3
900674e dbus-test: remove unneeded pygobject dependency
2e5367e glib: move to Python 3
f5d36b1 python3: drop 110-enable-zlib.patch
141fa73 python-dbus: update to 1.2.4, port to python 3
a17e159 bind: switch Python dependency to Python 3.x
c71f5ab systemd: support systemd-boot as a stand-alone EFI bootloader
4082974 pango_1.40.1.bb: Fix compilation error
2ce2225 libpam: update dependency list
d62aed1 iw: update to version 4.7
b6951c7 libsdl2: Fix build with wayland 1.10
59b6a03 syslinux.bbclass: Added configurable SYSLINUX_ALLOWOPTIONS variable
0726b2d bitbake: bitbake-layers: show-layers: disable parsing
dcbfc72 poky: Add Ubuntu 16.04 to tested/supported list since I run it myself
5a9745d distro_check.py: Don't mix tabs and spaces
3a76339 bitbake: toaster: use python3 explicitly
2b362f6 bitbake: toaster: fix urllib imports
2de58c9 bitbake: toaster: don't use mru.count in the template
ce9cff5 bitbake: toaster: use // operator instead of /
9434eee bitbake: Revert "buildinfohelper: work around unicode exceptions"
2448df7 bitbake: xmlrpc: add parameter use_builtin_types
7cd7680 bitbake: toaster: use knotty when working with bitbake server
15bb3d4 bitbake: toaster: fix migrations
de21205 bitbake: toaster: moved import bb.server.xmlrpc
5074c60 bitbake: toaster: read timezone files in binary mode
cf454d7 bitbake: toaster: use re.sub() instead of translate()
d393fe6 bitbake: toaster: replace map with list comprehensions
314541f bitbake: toaster: use items and range instead of old APIs
96ce543 bitbake: toaster: use decode('utf-8') for binary data
46ed4ff bitbake: toaster: modified list of dependencies
9a3f2b3 bitbake: toaster: fix local imports
0224f75 bitbake: toaster: fix imports to work for python 3
bbc6e75 bitbake: toaster: get rid of using reduce
7c44d88 bitbake: toaster: use force_text instead of force_bytes
8a93f5f bitbake: goggle/image-writer: Drop since bitrotting and no longer used
685628e bitbake: image-writer/goggle: Disable pygtkcompat problems
e80a8c2 bitbake: lib/bb: Set required python 3 version to 3.4.0
a15e538 bitbake: data_smart: Simplify ExpansionError exception
0f2c593 bitbake: bitbake: Convert to python 3
ef1df51 bitbake: bitbake: Drop futures usage since we're python 3
deca147 bitbake: bitbake/pyinotify.py: Upgrade to py3 version
822eabf bitbake: bitbake/bs4: Upgrade 4.3.2 -> 4.4.1 (python 3 version)
4f89593 oeqa/selftest/recipetool.py: Tweak matching of warning line
440c681 qemurunner: Use surrogateescape decoding
76aefc4 devtool.py: Fix parsing of bitbake-layers' output
e2e3fa4 buildhistory_analysis: Convert stream data (bytes) to strings
89d40a1 selftest/devtool: Compare sets instead of arrays on AssertEqual
3b39971 classes/lib: Complete transition to python3
52c4b7f scripts: use python3 in shebang
0d7db8e scripts: Fix urlparse imports for python3
fa4275b scripts: Rename ConfigParser -> configparser for python3
3ee70cb scripts: Fix encoding errors for python3
ed7abe6 scripts: Replace basestring -> str for python3
7eab022 scripts: Fix deprecated dict methods for python3
63404ba qemurunner: convert data when working with socket
aa10d71 wic: encode help text
ddbd307 wic: use python3 in shebang
dca3aba sanity: Switch urlparse to urllib.parse
642a997 classes/lib: Update xrange -> range for python3
44e9a0d classes/lib: Update to explictly create lists where needed
8587bce classes/lib: Update to match python3 iter requirements
a7309d5 classes/lib: Update to use python3 command pipeline decoding
297438e classes/lib: Convert to use python3 octal syntax
c77e7b8 oe-buildenv-internal: Update to python3
3c42280 sanity: Drop setting C locale
ab75075 scripts: python3: Use print function
fc79776 scripts/lnr: update for python3
2e38804 scripts: python3: Use print function
79be110 systemd: allow add users as a rootfs postprocess cmd
cdd764c openssl: fix the dangling libcrypto.a symlink
af587b8 package.bbclass: fix strip and split logic
5efe4c9 perl-ptest.inc: fix tar call to prevent objcopy failure
37688b3 insane: return line-feeds to qa.log
51c6704 bluez5: update to 5.40
078b867 libpng: update to 1.6.22
763a3d4 unzip: fix security issues
c6e5c00 libarchive: Upgrade to v3.2.0
9d7867a python-numpy: move recipe to own directory
083d0aa python3: add = to -L linking option only when the path is absolute
a80a5b1 python3-nose: add a recipe
f540622 python3-mako: add a Python 3 recipe
be4e792 cracklib: disable building the python module
79797a8 subversion: remove unnecessary python dependency
2efef0c qemu: remove runtime python dependency
d78beb7 git: remove Python package (to which nothing was packaged)
3e03ca7 python3: manipulate all of the config*/Makefile files, not just config/Makefile
2fe44ef avahi-ui: remove support for building a python module
0b38900 sip.bbclass: remove
1c83fcd default-versions.inc: drop python-related defaults
03da683 python3-dir.bbclass: add a separate class for Python 3
78502a8 distutils-native-base.bbclass, distutils3-native-base.bbclass: remove
4977a07 python-native, python3-native: remove the use of exported HOST_SYS and BUILD_SYS variables
49557a5 recipetool / devtool: set a fixed SRCREV by default when fetching from git
0a7c699 recipetool: create: use ${BP} for subdir for binary packages
eb09735 recipetool: create: extract variable values from .deb/.ipk/.rpm
2b510f5 recipetool: create: support extracting SUMMARY and HOMEPAGE
c056dad lib/oe/recipeutils: fix insertion of variable values
9f56b98 lib/oe/recipeutils: patch_recipe_lines: allow omitting trailing newlines
c93602c lib/oe/recipeutils: split out patch_recipe_lines()
fcc2c3c yocto-bsps: Update to 4.1 to include musb fixes
04777ae yocto-bsps: update to 4.1.24
2b82b59 linux-yocto/4.1: fix musb compilation error
5224ac7 linux-yocto: only use intel branches for optimized platforms
141bf482 linux-yocto: create intel branches
4dc5ec2 linux-yocto:4.4: broxton backports
c1a4ddd layer.conf: Whitelist ca-certificate dependency on openssl
f8ff1f2 ca-certificates: Add openssl as a runtime dependency
f053b5f initscripts: check if swapon/swapoff exists before executing them
b426b2b uboot-sign: rebuild u-boot.img with signed dtb
8d7f58b u-boot: replace old-style shell syntax with the modern one
6b38e77 xcb-proto: remove stale git recipe and now redundant .inc
ea9d27a libxcb: upgrade to 1.12
621a038 xcb-proto: upgrade to 1.12
8c3add9 libsecret: upgrade to 0.18.5
ae7898c liburcu: upgrade to 0.9.2
e3ba64a gcr: upgrade to 3.20.0
8e23a04 babeltrace: upgrade to 1.3.2
8fd1a59 msmtp: upgrade to 1.6.4
1b71c59 gobject-introspection.bbclass: disable introspection for -native and -nativesdk recipes
0f64a71 lib/oe/package_manager.py: Add pkgpath to dict returned by package_info
d56ccf6 oetest.py: Add support to copy unextracted packages for runtime testing
92afca7 oetest.py: Add extract_packages() to RuntimeTestContext class
8a68910 oetest.py: Add json file support to specify packages needed in runtime tests
3a81a3d xmlto: xmlto needs tail to run
2dbd873 libgpg-error: Upgrade 1.21 -> 1.22
145d285 gnupg.org-hosted recipes: Change SRC_URI to https site
2e74e4c libevdev: Upgrade 1.4.6 -> 1.5.1
dff8ca2 gtk+: Upgrade 2.24.29 -> 2.24.30
1645e71 clutter-gst-3.0: Upgrade 3.0.16 -> 3.0.18
095f03c clutter-1.0: Upgrade 1.24.2 -> 1.26.0
c342731 coreutils: revert upstream commit causing havoc with ls output
91488e9 wic: bootimg-efi: include startup.nsh if it's available
837670e gummiboot.bbclass: also write startup.nsh for non-iso
dbee7ae grub-efi.bbclass: also write startup.nsh for non-iso
affb439 linux-firmware: update to git rev 80d463be82
87f0a82 libpam: update to 1.3.0
52d130d dropbear: Remove incorrect SFTPSERVER_PATH from CFLAGS
1eca8ea docbook-xsl-stylesheets: Upgrade 1.78.1 -> 1.79.1
c45c942 kernel: Make symbol link to vmlinuz in boot directory
0437a59 kernel: Add KERNEL_IMAGETYPES to build multi types kernel at one time
077377e cpio: Add native variant
6a7138e oeqa/utils/package_manager.py: Add get_package_manager()
daf0cc3 oetest.py: Move getTests() outside loadTests() method
549f134 testexport.bbclass: Stop exporting test context
c358ab5 nopackages.bbclass: deltask foo_setscene
fbb6775 libjpeg-turbo: set SUMMARY
2c7cf13 gobject-introspection: set SUMMARY and HOMEPAGE
4dd7a01 argp-standalone: set SUMMARY instead of DESCRIPTION
8e2617a signing-keys: set SUMMARY instead of DESCRIPTION
0c2972b fts: set SUMMARY instead of DESCRIPTION
3a31047 bsd-headers: set SUMMARY instead of DESCRIPTION
4d6f027 dhcp: fix non-deterministic libxml2 dependency
a0acd70 gcc: Backport nios2 gcc ICE fix
899358a npm: add target_arch flag to npm
7fed397 ghostcript: Set UPSTREAM_CHECK_URI variable
7b3061e sanity: check that the en_US.UTF-8 locale exists
4c3738c diffutils: Add patch to fix gplv2 version with gcc6
239efcc tcmode-default: Bump gcc
2718e84 yocto-bsps: update to 4.4.11
56ab1a5 linux-yocto/4.4: integrate v4.4.11
1e9c392 linux-yocto/4.4: beaglebone: build in the usb controller drivers
9a38dc6 linux-yocto/4.1: v4.1.24 and gcc6 powerpc fixes
ce37657 sqlite3: update to 3.13.0
9ade84b iproute2: upgrade to 4.6.0
44e4d20 matchbox-keyboard: Upgrade
b5fe460 mesa-demos: Upgrade 8.2.0 -> 8.3.0
6ec0804 fontconfig: Upgrade 2.11.94 -> 2.11.95
8aad230 dropbear: Upgrade 2015.71 -> 2016.73
8a97d9e mkelfimage: fix compile issues
06563e6 openssl: Ensure SSL certificates are stored on sysconfdir
0b1a03e ca-certificates: Use c_rehash utility
0a84108 openssl: Add Shell-Script based c_rehash utility
1cdd979 sstate.bbclass: Don't create symlinks, download to the correct location
2d0a5c8 devtool: upgrade: clarify help text for --srcrev option
93a1c01 devtool: upgrade: tweak conflict handling
ab22745 devtool: upgrade: handle upgrading recipes with a versioned inc file
c7e614c useradd: Fix infinite build loop
32bbf68 meta-yocto-bsp: Enable xf86 modeset for beaglebone
bd7b363 linux-yocto-rt, core-image-rt*: Explicitly skip when PREFERRED_PROVIDER_virtual/kernel isn't set to linux-yocto-rt
21af6c6 scripts/bitbake-whatchanged: migrate from optparse to argparse
aac3659 core-image-{minimal, testmaster}-initramfs: set COMPATIBLE_HOST
1974624 image.bbclass: additional output in create_symlinks
e7b5bd2 image.bbclass: support duplicate compression types
96b1eb4 coreutils: Fix rootfs creation errors
34d64f0 net-tools: Fix rootfs creation errors
f8aa96e shadow: Fix rootfs creation errors
b414b50 musl: Update to latest tip
ff35bfa qemu: Upgrade to 2.6.0
bc155f8 harfbuzz: update to 1.2.7
fb51dc9 libsolv: update to 0.6.21
133ad83 libsoup-2.4: provide PACKAGECONFIG for gssapi
2c1aa9c cmake: update to 3.5.2
9157c11 ghostscript: Update URL_SRI considered as 'old release'
f2092e6 systemd: re-enable mount propagation for udevd
13df45b package_manager: no need to output Note: in bb.note() calls
456b222 wipe-sysroot: fix wrong glob when removing manifests
f9b0781 scripts/oe-selftest: Remove inadvertant python3 specific change
66b484f python-smartpm: Avoid locale issue with bitbake python3
d57de67 bitbake.conf/toolchain-shar-extract: Use en_US.UTF-8 as locale
3ddde5f meta: Update to modern exception syntax
01d07f3 kernel-uimage: Fix python indentation
8897211 meta/scripts: python3: rename file -> open
ffe9604 meta/selftest/scripts: Use print function for python3 compatibility
0298688 devtool: sdk-update: drop support for local updates
0111181 nativesdk-glibc: Extend relocation support to locales
6b3ac01 glibc-locale: Enable binary locale generation for nativesdk-glibc
72fb52e build-appliance-image: use 'lnr' instead of 'ln -sr'
22a55ba lttng-modules: Upgrade to 2.7.3 release
fe70c06 mkelfimage: obey LDFLAGS, sort out HOST_ flags
d61d4ba core-image-weston: If X11 is enabled, add XWayland support
5fb0c1e weston-init: Use weston-launch when starting weston as the first windowing system
7b779c8 weston: Add Xwayland initialization support using weston-start
5afb6a9 weston-init: Add module support for the weston-start helper
71b3566 weston-init: Error out if loading a nested instance
2f0283a weston-init: Rework init sequence to avoid code duplication
d46c5be weston-init: Rework do_install to use install -D option
959237e weston: Provide a default version of weston-launch that doesn't require PAM
9a9f04f weston: Remove XWayland dependencies on PACKAGECONFIG
9b5abe2 weston: Enable XWayland when X11 and Wayland support are available
ecd8d88 weston: Add PACKAGECONFIG option for 'clients'
959bec1 weston: Fix SystemD service description
e2f31e1 weston: weston-launch: Handle invalid command line options
2192a48 bitbake: cooker: Fix parse progress for python3
e73a85b lib/oe/rootfs: Fix DEBUGFS generation, without openssl
bf4616d gdb: Backport patch to changes with AVX and MPX
070ea45 acl.inc, run-ptest: improve ptest functionality on limited rootfs
599933c mesa: fix mesa_populate_packages() when dri is disabled
70b0e62 wic: fix path parsing, use last occurrence
55159ef classes/kernel: check OLDEST_KERNEL at configure time
02587c4 classes/kernel: fix typo
55c383d bluez5: fixed path to bluetoothd in sysvinit script
b0207e7 qemu: Upgrade to 2.5.1.1 for fix CVE-2016-3710 and CVE-2016-3712
1bf7a81 openssh: update homepage and summary
fd436a2 classes/populate_sdk_ext: adjust variable blacklisting
711185d linux-dummy: set INHIBIT_DEFAULT_DEPS
d3a2da4 kernel: fitimage: Repair misuse of shell test command
5ca7cbf bluez5: move btmgmt to common READLINE section
de18e6b webkitgtk: turn off JIT on armv4 and armv7a
982b631 mesa-demos: provide option for disabling GLX demos
409c940 bitbake: toaster: tests builds Add SSTATE_MISS as a valid condition for tc=833
0664a89 bitbake: toaster: tests build Add a test for a build of core-image-minimal
085688c bitbake: toaster: tests Add a BuildTest helper class
5ce1adb bitbake: toaster: Add a specific test settings file
82dc991 bitbake: toaster: runbuilds move the execution sequence out of the poll loop
db84307 bitbake: toaster: Remove DATABASE_URL being passed around as an environment var
8fba59c bitbake: toaster-tests: tests for project config
1aab29e bitbake: toaster: projectconf Small tweaks to IMAGE_FSTYPES form
c81d03e bitbake: toaster: handle multiple imagefs types
5444aba kernel: moves KERNEL_SRC_PATH to bitbake.conf
a53a9dd zip: update SRC_URI
8949d25 unzip: update SRC_URI
7dbdef4 libgudev: fix upstream check
69dfa87 freetype: fix upstream check
9f447ba package_regex.inc: remove deprecated file
efd892b yocto-uninative: Update to 1.1 tarball (new version of glibc)
18eccfa rootfs.py: Unify _log_check_warn() and _log_check_error()
9948e0d rootfs.py: Reduce spam from _log_check_warn()
79d1778 rootfs.py: Exclude lines in _log_check_warn() as well
e3e8d50 rootfs.py: Use one way to exclude lines in _log_check_error()
a653f36 rootfs.py: Simplify the regular expression used in _log_check_warn()
d416a4e rootfs.py: Remove _log_check_error() from the RpmRootfs class
c60134f Revert "rootfs.py: add more info to the warning message"
458f824 sysprof: Disable nios2 support
e1ec420 elfutils-0.148: Fix build with gcc6
fd36a44 systemd: Create missing sysusers offline
553fa35 useradd.bbclass: Strip trailing ';' in cmd params
c9867c4 bitbake: cooker: Improve taskgraph file handling
2970800 bitbake: codeparser: Increase cache version after code parser dependency changes
1fb330b bitbake: bb.codeparser: track variable flag references
32ee30a bitbake: Provide LAYERDIR_RE for layer.conf
90bc9b4 bitbake: cache: Increase cache version after task checksum calculation changes
692b874 bitbake: Implement support for per-task exports
a809f1c bitbake: bb.cooker: show limited traceback for parsing ExpansionError
b00282f makedevs: fix security issues
c676d5d zip: fix security issues
8ed2551 stat: fix security issues
1613275 pixman: Fix build on arches not defining FE_INVALID exception
479780d buildtools-tarball: add nativesdk-locale-base-en-us
9f92167 buildtools-tarball: replace nativesdk-python with nativesdk-python3
a2e3f17 buildtools-tarball: remove nativesdk-python-pexpect
65ab096 python3-git: add it for buildtools-tarball
57c50be python3-gitdb: add it for python3-git
643b444 python3-async: add it for python3-gitdb
e0b7ecc python3-smmap: add it for python3-gitdb
1e24447 useradd: use bindir_native for pseudo PATH
90cb500 openssh: Backport fix for CVE-2015-8325
4d72f50 openssh: Upgrade 7.1p2 -> 7.2p2
ce2dd24 scripts/oe-selftest: Improve listing by reducing unneeded spacing
978d450 oe-selftest: wic: add test_bmap test case
471a816 wic: add help for --bmap commandline option
b580449 wic: implement --bmap option
a49d279 wic: add bmaptool to the list of utilities
37abaa3 mkefidisk.sh: mount images as read-only
e44c849 python-smartpm: Remove unnecessary error reporting improvement patch
be0cabf python-smartpm: Don't ignore error if RPM transaction fails without problems
e89c6c4 python-smartpm: Fix channel command --remove-all option (again)
350d939 python-numpy: fix build failure with python-matplotlib
b4c23e9 oetest.py: Use the real ExportTestContext in exported tests
86d65d7 oetest.py: Add default pscmd to oeTest
20afc59 testimage.bbclass: Remove exported test
41fbf2c oeqa/runexported.py: Remove host dumper
b3a6563 testexport.bbclass: Split testimage class
a9eb22e oeqa/oetest.py: Add class ExportTestContext
e090775 pseudo: Work around issues with glibc 2.24
3eb00d6 glibc: Add missing patch hunk back
7707cf6 sdk-manual: Fixed three broken links to sections within manual.
ba91c24 pkgconfig: Update AM_GLIB_GNU_GETTEXT macro
7cfaf9f gnome-doc-utils: Update AM_GLIB_GNU_GETTEXT macro
d972c62 weston: Upgrade 1.9.0 -> 1.10.0
aac99fb wayland-protocols: Add recipe
c88aee4 wayland: Upgrade 1.9.0 -> 1.10.0
93e7f38 glib-2.0: Upgrade 2.46.2 -> 2.48.1
6bbe4fe bitbake: bitbake-layers: convert to plugin-based
07eebc6 bitbake: knotty: Fix output buffering issues
62384f5 bitbake: siggen: Fixes to handle sigdata/siginfo files only containing basehash data
74ae91e bitbake: toaster: don't show "Rebuild" button for cancelled cli builds
d9d715b bitbake: toasterui: capture keyboard interrupts the same way as knotty
df0fc2d bitbake: buildinfohelper: add method to set current build as CANCELLED
3718f8d bitbake: toaster: toastergui tests Fix toastertable tests
54bf7cc bitbake: toaster: toastertables: Clean up and fix up a number of items
a906a09 gcc: Security fix CVE-2016-4490
a1928c8 gcc: Security fix CVE-2016-2226
23f0032 gcc: Security fix CVE-2016-4489
02321b6 gcc: Security fix CVE-2016-4488
e3eaef7 eudev: remove eudev-hwdb from RRECOMMENDS_eudev
3da513b mesa-demos: OpenVG demos with single frame need eglSwapBuffer
d28ab58 classes/base: get_lic_checksum_file_list imporve validaton of url's
4725d90 coreutils: fix for native and nativesdk
da53c7d oe-buildenv-internal: add BBPATH_EXTRA to BB_ENV_EXTRAWHITE_OE
46cf6f5 gnu-efi: set COMPATIBLE_HOST_armv4 to null
d34237c cogl-1.0: set COMPATIBLE_HOST_armv4 to null
a994ad9 openssh: change URI to http:
3fec661 perl: use PACKAGESPLITFUNCS instead of populate_packages_prepend
9e48d19 libsolv: upgrade to 0.6.20
53b05b5 libproxy: update to version 0.4.13
31af290 xproto: Upgrade 7.0.28 -> 7.0.29
d4099e1 expat: Upgrade 2.1.0 -> 2.1.1
169852e libsoup-2.4: Upgrade 2.52.2 -> 2.54.1
249dd79 json-glib: Upgrade 1.0.4 -> 1.2.0
b1f4932 inputproto: Upgrade 2.3.1 -> 2.3.2
d63463b gsettings-desktop-schemas: Upgrade 3.19.3 -> 3.20.0
7e96b68 gdk-pixbuf: Upgrade 2.32.3 -> 2.34.0
53c4318 pango: Upgrade 1.38.1 -> 1.40.1
29b9316 glib-networking: Upgrade 2.46.1 -> 2.48.2
7db0cc2 sstate: Ensure we sort the value used for SSTATETASKS for determinism
9094ea9 classes/oeqa: Update for print statements and file() -> open() for python3
ca2edae oeqa: Print function python3 fixes
52b3cc9 tcmode-default: Bump glibc,gdb
45da72b security_flags: Enable security flags on leafpad, ltp and libuser.
b830a97 leafpad: Fix security formating issues.
6523854 libuser: Fix security string formatting issues.
eecba71 ltp: Fixes security string printf on testcases/network/nfsv4/acl/acl1.c
574e9f4 linux-yocto/4.4: gcc6 build fixes (powerpc and mips)
531c354 glibc-initial.inc: fix py3 SyntaxError in cfgscript print()
144c517 autotools.bbclass: fix py3 SyntaxError in cfgscript print()
bb44e5b oeqa/decorators: Use wraps consistently
7a93223 linux-yocto: Update SRCREV for genericx86* for 4.4
ba36be6 linux-yocto: Update SRCREV for genericx86* for 4.1
0854035 bitbake: toaster: use new syntax of except statement
519a85e bitbake: toaster: use print function in toaster script
3249e33 bitbake: toaster: use 'in' instead of has_key
bfc21fd bitbake: server/process: Fix missing log messages issue
471310e bitbake: cooker/toasterui: Drop SEND_DEPENDS_TREE UI feature
da46751 bitbake: runqueue.py: always emit bb.event.DepTreeGenerated
ff5d6f8 selftest: add bmap test
39498d0 image types: add bmap generation option
8a8ed52 bmap-tools: initial commit, version 3.2
dc93972 image_types: add support for zip compression
c589aff wic: use next builtin instead of .next method
dd732ee wic: don't encode unicode strings
a173885 wic: decode output of subprocess.communicate
5f06463 wic: use // operator instead of /
bc89dc4 wic: use find_executable in favor of bb.utils.which
b6b5b5e wic: don't use L suffix for integers
5fedb5d wic: refactor pluginbase
d4ded7f wic: remove unused functions
e301be3 wic: use new syntax of 'except' statement
ed10a80 wic: remove with_statement imports
dac0e80 wic: don't inherit classes from object
52ce79d wic: don't use dict.keys and dict.has_key
e36d04a wic: use items instead of iteritems
0c57dd9 wic: replace print statements with print function
4dadbbd combo-layer: avoid too long command lines in update with history
659ed87 combo-layer: fix default "update" mode
f969ce9 python-native: Point to expat in native sysroot and add missing dep on expat-native
45dd3d2 feature-arm-vfp.inc: fix overzealous ARMPKGSFX_FPU modification
0c717ff gdb: Upgrade to 7.11
6d27c16 glibc: Add recipes for 2.24 release
9b25b35 gcc 4.9: backport gperf fixes
31f98f9 openjade-native: work around bug exposed by GCC 6
efe59db gcc-5.3: backport gperf fixes
97531ef report-error: Replace the build directory path in the error text
0ba9ce2 mmc-utils: update to latest git version
ad03e92 connman: update to version 1.32
0ff3f49 package_manager.py: Add extract() method for RPM package manager
b372a82 package_manager.py: Add extract() method for opkg and dpkg
c5aa524 package_manager.py: Move opkg_query() outside of Indexer class
e81c8fc pong-clock: obey CFLAGS, LDFLAGS
e593d3a ruby: obey LDFLAGS for the link of libruby
01cbd46 pseudo: obey our LDFLAGS
b39ddd9 image_types: adjust default level of XZ compression
36912cd cmake: enable verbose builds
3d11229 bitbake: toaster: fix progress bar in MySQL environment
c0db739 bitbake: main: Ensure exceptions are correctly displayed
2fc5d5d bitbake: cookerdata: Fix log messages and ensure we exit
a46d485 bitbake: event/msg: Pass formatted exceptions
ca824a9 bitbake: fetch: Use OrderedDict for url parameters
ef4a7c3 bitbake: main: Change warn() -> warning()
7c0a219 bitbake: cooker: Fix log message syntax
a0db121 bitbake: utils: Force bitbake to en_US.UTF-8 locale setting everywhere
221705a bitbake: bin/bitbake-worker: Fix invalid bb.msg.fatal usage
df15469 bitbake: contrib/dump_cache.py, cache: Fix to use python 3 syntax
7d06ec1 bitbake: knotty: Ensure consolelog file handle is closed
6cc6818 bitbake: runqueue: Improve timestamp comparisons
fce8da9 bitbake: daemonize/prserv/tests/fetch: Convert file() -> open()
9a30968 gcc-runtime, libgcc: Symlink c++ header and startup files in target_triplet for SDK use
7cabc9e mpfr: Upgrade to 3.1.4
0dcc42c ruby: Upgrade to 2.2.5
278f8e8 distcc: Upgrade to 3.2
3a167e6 mdadm: Fix build with clang
922c640 musl: Create symlinks for stub libraries
6d7cbc6 bitbake: Oldest kernel for nios2 is 3.19
f2f35cc gdb: Disable binutils components
26698cd libunwind: Add a confgure option for tests
f3c90e1 gdb,strace: Fix builds on ppc/musl
af6bfed libgcc: Ensure that gcc configure options are passed to libgcc too
cc86da0 libunwind: Upgrade to 1.2rc1+
fb6ee22 libgcc: Ensure that gcc configure options are passed to libgcc too
e260dc3 musl: Upgrade to tip of tree
54d06c0 bitbake.conf: Empty out BUILDSDK_CPPFLAGS
ca8ae66 libunwind: Upgrade to 1.2rc1+
08a9f5d grub_git: Upgrade to latest tip
e511478 conf: bump minimum kernel to 3.2.0
f99fb6a libc-common.bbclass: Use sed instead of grep
ec8c9eb busybox/mdev: Ensure /sys is mounted before using it
4eec0cb valgrind: Fix build with gcc6
a6f67e2 grub: Fix build with gcc-6
f0d2bd3 binutils: disable werror on native build
b83a808 pkgconfig: Fix build with gcc-6 and upgrade to 0.29.1
40abaa6 nss: Upgrade to 3.23
6ab12ea mdadm: Fix gcc 6 warnings
faf16fd oprofile: Fix with gcc6
268f66f webkitgtk: Upgrade to 2.12.1
b5c1f58 lzop: Fix build with gcc-6
54cbfa3 alsa-tools: Fix build with gcc6
b8e70ce rpm: Fix build with gcc6
24d9927 elfutils: Upgrade to 0.166
a088a41 glib-2.0: Ignore useless warning found with gcc-6
6ea164c gcc: Add gcc6 recipes
1f2108f linux-yocto/4.4: bump to v4.4.10
5968601 linux-yocto/4.4: beaglebone: Enable drm for omap
322a783 linux-yocto/4.4: update to v4.4.9
975fa0d linux-yocto/4.4: bump to v4.4.8
55f6cc4 font-util: Remove ${datadir}/fonts from SYSROOT_DIRS_BLACKLIST
fc8f228 libtool: Use SYSROOT_DIRS_BLACKLIST to exclude dirs from the sysroot
9390701 gcc-target.inc: Use SYSROOT_DIRS_BLACKLIST to exclude dirs from sysroot
2aa49bc gettext: Use SYSROOT_DIRS_BLACKLIST to exclude dirs from the sysroot
2997f01 grub2.inc: Use SYSROOT_DIRS_BLACKLIST to exclude dirs from the sysroot
4021e9b gobject-introspection: Use SYSROOT_DIRS to add dirs to stage in sysroot
df02994 vala.inc: Use SYSROOT_DIRS to add dirs to stage in sysroot
700ce6b signing-keys: Use SYSROOT_DIRS to add dirs to stage in sysroot
40d19d9 base-files: Use SYSROOT_DIRS to add dirs to stage in sysroot
138d161 depmodwrapper-cross: Use SYSROOT_DIRS to add dirs to stage in sysroot
c486741 shadow-sysroot: Use SYSROOT_DIRS to add dirs to stage in sysroot
f6ed023 tcl: Use SYSROOT_DIRS to add dirs to stage in sysroot
bc217a6 qemuwrapper-cross: Use SYSROOT_DIRS to add dirs to stage in sysroot
dad9316 libtool-cross: Use SYSROOT_DIRS to add dirs to stage in sysroot
97f6ed3 u-boot-fw-utils: Use SYSROOT_DIRS to add dirs to stage in sysroot
e839431 staging.bbclass: Make it easier to define which dirs to stage
5f6e5e4 pixman: Upgrade 0.32.8 -> 0.34.0
c2ceef3 mesa: Upgrade 11.1.1 -> 11.2.2
8505fde libdrm: Upgrade 2.4.67 -> 2.4.68
1c55101 libxkbcommon: Upgrade 0.5.0 -> 0.6.1
f9d5328 videoproto: Upgrade 2.3.2 -> 2.3.3
f264e09 xf86-input-evdev: Upgrade 2.10.1 -> 2.10.2
06b53bf libinput: Upgrade 1.1.4 -> 1.3.0
b74ee99 xkeyboard-config: Upgrade to 2.17
376bba7 xrandr: Upgrade to 1.5.0
2843331 bitbake: toaster: tests browser Add test for creating a project
cd4f0b3 bitbake: toaster: models Add missing import sys
7e2d501 bitbake: toaster: ui handles duplicate project name in project page
dc57476 bitbake: toaster: ui handles duplicate project name in new project page
9bdfed8 bitbake: toaster: projectNameValidation API added
cc2f136 bitbake: runqueue: Fix missing fakeworker under dry run
442acd2 bitbake: lib/bb/utils.py: Fix explode_dep_versions2() determinism issue
3795f4d bitbake: bin, toaster: Fix print and exception syntax
a9d90f7 bitbake: tests: assertEquals -> assertEqual
654eadf bitbake: bitbake: Update logger.warn() -> logger.warning()
5052bf9 oeqa/lic-checksum: Update after recent LIC_FILES_CHKSUM changes
8320293 devtool: Fix build-sdk when pn doesn't match filename
32d80fe Drop unneeded LIC_FILES_CHKSUM values
296c7e1 classes/insane: do not force LIC_FILES_CHKSUM unless SRC_URI is set
69cf7b3 lib/classextend: Fix determinism issue
f49be7e update-alternatives: Fix determinism issue
8a88c56 image: Fix IMAGE_FEATURES determinism issue
015266a bitbake.conf: add default for IMAGE_FSTYPES_DEBUGFS
88d5f56 metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo
361c5be lttng-tools: filter random filename of ptest output
c7bf1a8 feature-arm-neon.inc: restore vfpv3-d16 support
3333002 gcc: obey ldflags in the link of libgcc
47c994f populate_sdk_ext: Change lockedsigs task mismatch to a warning
1e88c74 xserver-xorg: update 1.18.3 and add PACKAGECONFIG for glamor
b86f8a0 populate_sdk_ext.bbclass : Show logfile in case the SDK EXT installation failed
d53ed05 combo-layer: implement "update with history"
107c35e combo-layer: runcmd() enhancements
aa4de3c combo-layer: dummy "update with history"
eb0ab04 sshcontrol.py: Add methods to copy dirs and delete files
e81d7a8 classes/image_vm: allow different filesystems to be used for VM images.
c1ce0d9 lib/oe/rootfs: Fix DEBUGFS generation for opkg & openssl-cnf
442fbdd linux-yocto-rt/4.1: update to rt23
834d316 linux-yocto/4.4: bump to v4.4.8
3730f6f linux-yocto/4.4: broxton enablement and refactoring
954bf18 linux-yocto/4.4: skylake configuration
6fd2ec9 linux-yocto/4.4: BXT mmc fixes + PUNIT, tubropower, and telemetry backport
3db6b64 linux-yocto/4.1: make ltsi content available
ccfa498 linux-yocto/4.1: update to v4.1.22
1ce221d kernel-yocto: allow branch auditing to be suspended
0e50f6f kern-tools: handle directories with, or without, trailing /
07f9133 linux-yocto/4.4: sched/cgroup: Fix/cleanup cgroup teardown/init
bfe3731 linux-yocto/uvesafb: print error message when task timeout occurs
9b9b983 image_types: fix image/compression dependency collection
cf17882 libpcre: Fix CVE-2016-3191
af4e319 image_types.bbclass: add WIC_CREATE_EXTRA_ARGS
5ae5fc7 openssl: Security fix via update to 1.0.2h
199b348 image-live.bbclass: make the INITRD optional
26bf0e9 librsvg: Security fixes via update to 2.40.15
01f6052 git: update to 2.8.2
c63c1aa qemu: updgrade to 2.5.1
6b0bdd6 alsa-lib: Fix incorrect appl pointer when mmap_commit() returns error.
8c1932e iproute2: upgrade to version 4.5.0
cc5e129 sqlite3: upgrade to 3.12.2
cb3b214 harfbuzz: upgrade to 1.2.6
64edecf orc: upgrade to 0.4.25
8d66086 mc: upgrade to 4.8.16
41a1bbf libtasn1: upgrade to 4.8
a5f82b4 pkgconfig: update to version 0.29.1
5a21422 ethtool: upgrade to 4.5
db36fc9 acpid: upgrade to 2.0.27
06aa0d4 gdb: fix QA warning (uClibc)
0aba7d5 base-files: add some safety checks in profile
548e55c bluez5: upgrade to 5.39
7ca60ec test-empty-image: Fix LIC_FILES_CHKSUM typo
912e372 scripts/lib/bsp/kernel.py: force patching when branch is machine branch is re-use
3cdecde meta-selftest/images: Add LIC_FILES_CHKSUM to images using image.bbclass
1ee4cc1 bitbake.conf: change APACHE_MIRROR to point at archive.apache.org
2329274 mesa: add PACKAGECONFIG for gbm
46bfdec libxsettings-client: fix COPYING file
b13367b meta-world-pkgdata: add LIC_FILES_CHKSUM
b31c7ab packagegroup-foo.bb: remove LICENSE = "MIT"
d38c923 packagegroup.bbclass: set LICENSE and LIC_FILES_CHKSUM
a8b3576 insane.bbclass: package_qa_check_license -> populate_lic_qa_checksum
24eb9b1 tune-mips32r2.inc: add soft-float variants
6e4b817 ddimage: if 'pv' is installed, use it
6ebe903 dbus-test: install executables not libtool wrapper scripts
b851cb0 mesa-demos: remove demos using obsolete screen surface
7f70b10 arch-powerpc64.inc: disable the use of qemu usermode on ppc64
1108bee eudev: add PACKAGECONFIG for hwdb
41f7160 libxml2: fix dependencies and QA Issues
1d9432a bash: fix dependencies and QA Issue
7ce949c popt: fix dependencies and QA Issue
0c26298 curl: add krb5 to PACKAGECONFIG
9efd547 oeqa/selftest/buildoptions: remove buildhistory signature test
692f9d4 mesa-gl: add missing MESA_CRYPTO to PACKAGECONFIG
5f14204 cross-localedef-native_2.22.bb: Use autotools configure
0bf6d57 insane.bbclass: remove workdir from package_qa_check_license()
30ba663 qemu: remove explicit but redundant native build dependencies
b73ebda webkitgtk: remove gnome-common dependency
1b6ffd9 gnome-desktop3: remove redundant gnome-common dependency
997beb0 python-pygobject: remove redundant gnome-common dependency
8f275ff recipetool: create: fix falling back to declared license for npm packages
6ddd408 recipetool: create: fix picking up false npm package directories
de75626 arch-armv7ve: inherit armv7a tunes file
f088e69 kernel: fitimage: basic support for fitimage signature
cb565d5 kernel: fitimage: support device tree compiler options
858ddd5 u-boot: deploy u-boot-nodtb and dtb files
d8ae396 u-boot: basic support of dtb append for verified boot
a78e4ad scripts/lib/argparse_oe: also change 'positional arguments' to 'arguments'
09cbec8 scripts/lib/argparse_oe: simplify options title change
3e79d54 scripts/lib/argparse_oe: show subparser help for unrecognized args
55c760b scripts/lib/argparse_oe: show self.prog in the error message
7669219 wic: use sparse_copy to preserve sparseness
db9557c wic: use sparse_copy to copy partitions
4b97156 wic: add sparse_copy API
a468d4b wic: add FIEMAP and SEEK_HOLE / SEEK_DATA APIs
f8959d4 wic: moved DiskImage to direct.py
f318015 wic: get rid of fs_related.makedirs
4daf903 wic: get rid of inheritance Disk->DiskImage
d03cbac wic: use truncate utility to create sparse files
e93254b autotools: add default for CACHED_CONFIGUREVARS
8d6bb65 packagegroup-core-lsb: fix whitespace in meta-qt* warnings
30f9a50 security_flags: turn potential string format security issues into an error
8fa797d sysvinit-inittab: restrict labels to 4 chars
36a2640 toolchain-scripts: replace source built-in call
a2526b5 gstreamer1.0-rtsp-server: upgrade to version 1.8.1
06f5b8a gstreamer1.0-libav: upgrade to version 1.8.1
b8dbd21 gstreamer1.0-plugins-ugly: upgrade to version 1.8.1
9f9e48c gstreamer1.0-plugins-good: upgrade to version 1.8.1
32a315a gstreamer1.0-plugins-base: upgrade to version 1.8.1
e9c85d5 gstreamer1.0: upgrade to version 1.8.1
c6394a5 bitbake: bb.{cooker, data}: only emit a var as python if 'func' is set
9465558 bitbake: bb.utils: let loaded plugins provide a plugin object
19e6fd5 bitbake: bb.utils: use imp.get_suffixes for load_plugins
7dc1211 bitbake: bb.utils: add load_plugins from scriptutils
39b79ef bitbake: bb.data_smart: use iter() for __len__
cd20dd0 bitbake: bb.event: handle __builtins__ as a module
2d2d312 bitbake: bb.build: handle __builtins__ as a module
4f4f1c1 bitbake: bitbake: fetch2: Safer check for BB_ORIGENV datastore
f00b4e4 bitbake: toaster: bin/toaster Fix noweb command
93853e0 bitbake: toaster: bin/toaster Add ability to specify port and address to bind to
4446b35 bitbake: toaster: bin/toaster Add help text for unrecognised command
be49d0a bitbake: bitake: main: fix line-too-long pytling warnings
b5af50e bitbake: bitbake: main: fix bad-continuation warnings
3437266 bitbake: bitbake: main: fix bad-witespace pylint warnings
24f5c32 bitbake: bitbake: main: set defaults from env variables
21b314d bitbake: bitbake: main: add 2 environment variables
fce42a2 bitbake: toaster: customrecipe Only show download icon or button if it's possible
d3b5b0b bitbake: toaster: orm Add get_base_recipe_file to CustomImageRecipe
f7b5208 poky: Switch to post release name/version
dfc5510 poky-tiny: Switch to using kernel 4.4 and busybox for init
a4cf8bc bitbake: bitbake: Switch to post release version
f9c623d bitbake: fetch2: export DBUS_SESSION_BUS_ADDRESS to support authentication agents
768c796 utils.bbclass: note for deprecated base_contains
f22380e oeqa/sstatetests: remove temporary DL_DIRs in noop_samesigs
10ebdbb attr: Remove redundant "+=" after "_append"
19d8760 oeqa/sstatetests: add http_proxy to no-op hash test
0579719 bluez5: enable out-of-tree builds
860dfaf mx: move to autotools instead of autotools-brokensep
c4ee663 mx-1.0: inherit gtk-doc
92f482b meta: add comments to explain autotools-brokensep use
7f8b975 cups.inc: Fix ldflags warning.
2daea56 wic: add help for --system-id option
5bc1e42 wic: set partition system id
514a878 wic: add system_id argument to Image.add_partition
8d747c8 wic: add system_id attribute to Partition
e6a5232 wic: add sfdisk to the list of utilities
a48630b wic: add --system-id wks option
4ed22ed wic: isoimage-isohybrid: fix splash file paths
d73b756 image.bbclass: don't execute compression commands multiple times
57136a6 grub_git: set COMPATIBLE_HOST_armv7a to null
222c5c6 wic: isoimage-isohybrid: add grubefi configfile support
5073e5b busybox: don't build ar
002847a autotools: warn when running intltoolize if intltool isn't a dependemcy
9563869 bash: fixed ptest run-builtins failed
9c812e7 libunwind: backport aarch64_be support
e7d3dcb image.bbclass: don't emit redundant IMAGE_CMD_xxx functions
2c9ead4 linux-firmware: break out bnx2 mips firmware and WHENCE license
f095fdc package: ensure do_split_packages doesn't return duplicates
4e0d9d1 kernel-uimage: change target image to vmlinux
5dc3f38 packagegroup-core-tools-profile: Enable valgrind on ARMv7a and above
a13343b directfb/pango/webkit: base_contains -> bb.utils.contains
cb61390 gcc-sanitizers: Depend on target gcc
510344f babeltrace: Let autotools.bbclass run autoreconf
a1d67b2 ref-manual: Added GObject Introspection to 2.1 migration section.
8aebd1c dev-manual: Added Gobject Introspection section.
ab3147e ref-manual: Added new 2.1 migration misc. Change
6429369 sdk-manual: Applied review edits throughout the manual.
d4c4b2f ref-manual: Applied 2.1 Migration section review edits.
1ae33ba sdk-manual: Updated the normal customization.xml file.
3f55657 ref-manual: Fixed a grammar consistency error
01df6a7 ref-manual: Applied review edit comments to the 2.1 migration section.
15a93e9 dev-manual: Updated the "varname" use to "VARNAME"
b98a834 sdk-manual: Updated eclipse customization file.
07286b6 build-appliance: Switch to master branch post release
90f2040 qemu: Security fix CVE-2016-2858
dbdf9bf qemu: Security fix CVE-2016-2857
a421090 busybox: musl mips64 ip fix
9f3d7ae busybox: Security fix CVE-2016-2147
2928ca4 busybox: Security Fix CVE-2016-2148
3c6ead9 openssh: Security Fix CVE-2016-3115
3f75a64 tiff: Security fixes CVE-2015-8665 and CVE-2015-8683
71979b2 rpm: explicitly disable tomcrypt
592e5a9 recipetool.newappend: fix syntax error for 'not path_ok' error
9de4e4a matchbox-panel-2: Depend on dbus-glib-native
567483f connman-gnome: Depend on dbus-glib-native
ea41b63 gobject-introspection: Depend on native flex and bison
7c1badf gobject-introspection: fix floating dep on python-mako
5bfd397 sdk.py: preserve packaging data when SDKIMAGE_FEATURES has "package-management"
69d3df9 lib/oe/rootfs: Fix DEBUGFS generation when using opkg
e717e28 boost: improve configure
ff61a85 boost: delete the build directory before rebuilding
a9b503b license.bbclass: make sure that image manifest dir exists
2755304 busybox: update flock behavior to match upstream
7da7587 valgrind: turn off the file level dependency
1bcdc89 tzdata: update to 2016d
b4057ae tzcode: update to 2016d
04f7e29 meta: add missing intltool-native dependency
2caf6e5 pulseaudio: Add intltool-native dependency
6c1c013 build-appliance-image: Update to krogoth head revision
5f84d65 syslinux.bbclass: Remove APPEND from variable dependency
d9dd864 bitbake: toaster-tests: tests for build dashboard
1cf8f21 bitbake: toaster: add modal to select custom image for editing
a40a3e6 bitbake: toaster: add build dashboard buttons to edit/create custom images
e65c980 bitbake: toaster-tests: make helper click on input before entering text
484cbf8 bitbake: toaster-tests: add tests for new custom image page
437b728 bitbake: toaster: prevent exception when Project.release is null
cfc22d3 bitbake: toaster: only prevent duplicate custom image names within a project
3036413 bitbake: toaster: disable/enable "Add layer" button according to input's content
040dbf6 bitbake: toaster: fix sorting after hiding a column in build tables
1b11b79 bitbake: toaster: ensure ToasterTable headings are reset when order by changes
9855840 image.bbclass: The wrong name is being used for the debug filesystem
38c7e2d image_types: Ensure rootfs dependencies cover DEBUGFS
0c3eaa7 syslinux.bbclass: The AUTO_SYSLINUXMENU value needs to be boolean
9c8a049 perf: pass DESTDIR in EXTRA_OEMAKE
9de7324 buildtools-tarball: set INHIBIT_DEFAULT_DEPS
ef09105 xf86-video-omapfb: remove EXTRA_OECONF_armv7a
c2f7da2 base.bbclass: Introduce PACKAGECONFIG_CONFARGS variable
e1c6890 git: update to 2.7.4
98bf7de license.bbclass: do write_deploy_manifest in image postprocessing
519600c devtool: sdk-update: fix handling of UNINATIVE_CHECKSUM changes
c7980b6 bitbake: main: fix processing of BBEVENTLOG
ee25d0e toasterconf.json: Update for krogoth release
b8e5de2 toasterconf.json: Remove fido from supported configurations
c59771e toasterconf.json: Update for krogoth release
d0bce0b toasterconf.json: Remove fido from supported configurations
d25eea3 poky-tiny.conf: set PREFERRED_VERSION_linux-yocto-tiny to 4.4
9f970b6 dev-manual, profile-manual, ref-manual: Purging Oprofile stuff
1d93104 ref-manual: Added description for the testsdk.bbclass.
db47094 ref-manual: Updated the remove-libtool.bbclass description.
a16eeca ref-manual: Added gobject-introspection.bbclass description.
3e761b4 ref-manual: Added reference for npm.bbclass.
5e50157 ref-manual: Fixed typo in the nopackages.bbclass description
f7b68c7 ref-manual: Added description for bash-completion.bbclass
ece900a ref-manual: Added nopackages.bbclass description. Fixed stray typo.
9143e9e ref-manual: Added description for the INSTALL_TIMEZONE_FILE variable.
6391dbf ref-manual: Updated the PREFERRED_PROVIDER variable with a note.
6d86f7a ref-manual: Dropped references to the autotools_stage class
4d5ff5e ref-manual, dev-manual: Scrubbed boot-directdisk and bootimg classes
cd2aaaa ref-manual: Updated the uninative.bbclass description.
e975d26 documentation: Converted "meta-yocto" to "meta-poky"
84452ee bsp-guide: Updated yocto-bsp create example output.
e00a62c ref-manual: Added the migration section for 2.1
02db9e6 yocto-project-qs, ref-manual: Upgraded minimum Git requirement
989841f ref-manual: Added rootfs-postcommands class description.
d06b343 ref-manual: Updated the EXTRA_OEMAKE variable description.
ecb2eb6 dev-manual: Updated "Additional Implementation Details" section
004b939 bitbake: lib/bb/utils: add docstring for contains()
524d04c ca-certificates: support Toybox
ecaf12e oetest: make console output more verbose
4946ecf dhcp: CVE-2016-2774
c219c6d buildtools-tarball: fix perl being included when building with ipk
9fe7738 buildtools-tarball.bb: fix unexpected operator
ed07f43 lib/oeqa/selftest/base.py: Correct a reference to meta/lib/oeqa/selftest
8953d83 oe-selftest: Correct the usage examples
dee47ad devtool: sdk-update: reset git metadata on update
396e64d build-appliance-image: Load TUN at startup
55068b1 default-providers.inc: set openssl PREFERRED_PROVIDER to openssl
74ab080 bind: CVE-2016-2088
d488d78 rpm: Disable __sync_add_and_fetch_8 on nios2
9d2d1ae kernel: fitimage: Fix do_deploy taskhash mismatch
4693593 images: zero out the rootfs_extra_space in initramfs images
8beb671 ext-sdk-prepare.py: exclude do_rm_work from unexpected output; create unit test
0262bc5 bitbake: bitbake-user-manual: Updated the 'bitbake -h' output example.
890ccd3 bitbake: bitbake-user-manual: Updated "Conditional Metadata" section
20a0121 bitbake: bitbake-user-manual: Updated discussion about using "inherit"
9f374c4 bitbake: providers: Add PREFERRED_RPROVIDER support
4b8b110 bitbake: providers: We don't depend on previous build results
8e7282c bitbake: cooker/knotty: Prefix parse logs with filename being parsed
1131303 bitbake: cooker: pass exception to finishAsyncCommand
ffa2ca0 fs-perms.txt: fix ROOT_HOME's permission
fd66a38 Revert "fs-perms.txt: fix ROOT_HOME's permission"
9ec9557 buildstats: Fix tracebacks for early task failures
7f9d01e default-providers: Update to use PREFERRED_RPROVIDER
76f4bbc oeqa/selftest/sstatetests: fix no-op sstate test
6326812 buildhistory: don't alter SDK creation stamps
bb40b5e dhcp: Enable update-rc.d service
27e202f meta/classes/qemu.bbclass: set -cpu of ppce5500/ppce6500 to e500mc
7c5823a shadow: Disable syslog for more commands
60a8719 devtool: upgrade: handle recipes where source is not first entry in SRC_URI
8353557 devtool: update-recipe: handle where SRC_URI is appended to with +=
aab3c8d linux-yocto: make aufs4 optional
d75d2be linux-yocto: tiny and pin ctrl config updates
8547cbf linux-yocto/4.4: BXT enablement
ffad386 linux-yocto/4.1: mainline SPI backports
4ba33a3 linux-yocto/4.4: gpio-pca953x: fix the "drive" property cannot read/write
86571db devtool: don't copy .git when building the eSDK
83eac65 package.bbclass: improve permission handling
eeae2ac fs-perms.txt: fix ROOT_HOME's permission
1db3dc8 runqemu: let ramfs equal to cpio.gz
a8c8e81 gcc-common.inc: String format tweak for available tunes
a7c426a pbzip2: fix LIC_FILES_CHKSUM following 1.1.12 -> 1.1.13 upgrade
1229009 pbzip2: don't skip do_configure
1e4ee30 useradd_base.bbclass: remove flock option '-w'
cb45ef3 matchbox-keyboard: Hide desktop launcher
69e20ca npm.bbclass: Stop packagenames containing underscores from being generated
c3c55478 bind: CVE-2016-1285 CVE-2016-1286
c4387a8 image.bbclass: add DEB_{PRE, POST}PROCESS_COMMANDS to rootfs_command_variables list
967bc74 rootfs.py: apply ROOTFS_POSTINSTALL_COMMAND to all package formats
f7352ca wic: fix bug in handling fsoptions
b2f5de5 buildtools-tarball.bb: set TOOLCHAIN_NEED_CONFIGSITE_CACHE to null
a460b04 rpm: more verbose errors in rpmTempFile
a43991d rootfs-postcommands: handle broken links when writing manifest
2c81e17 socat: Use c_ispeed and c_ospeed based upon libc
5c8124d archiver: Improve debug output
e912c46 kbd: remove uclibc-stdarg.patch
965fd3c image.bbclass: use max() instead of indexing booleans
6d85874 linux-yocto-tiny: fix KBRANCH
440d949 sudo: fix pam config on systemd systems
3fd5a6d sysvinit: make lastb.1 an alternative
175263e lib/oe/lsb: sanitise the distro identifier
9262d2f package.bbclass: handle links in sorted order
29cf263 sanity: allow sftp and ssh mirrors
f503317 toaster.bbclass: improve package information collection
88f4178 rsync: remove upstream's rebuild logic
8d59d06 rsync: pass cached configure values through the right variable
384e41c rsync: don't install acinclude.m4
e80800e Revert "oeqa/selftest/wic: add test case for sparse images"
45c0763 Revert "wic/utils/partitionedfs.py: assemble .wic images as sparse files"
e0e5426 bitbake: runqueue: Improve 'mulitiple .bb files are due to be built' message
380004b archiver: Ensure sstate-inputdir directory is created
3ad70a5 linux-yocto-tiny: fix COMPATIBLE_MACHINE
0e59727 glib-2.0: Put glib-compile-schemas back in -utils
d27ca36 oeqa/runexported.py: Fix exported test
85dbd7b oeqa/selftest/sstatetests: split 32/64 build host from no-op action tests
57be6dd util-linux: take ownership of hwclock if installed
acc1f96 meta: remove redundant ac_cv_sizeof_off_t assignments
92759d8 meta/site: remove sizeof_off_t
5602f64 archiver: Fix ASSUME_PROVIDED issues
fab626c distrodata: Exclude DATETIME reference from sstate checksum
faaeaf9 build-appliance-image: Support for VirtualBox guest additions
778121a local.conf.sample: Make it possible to override EXTRA_IMAGE_FEATURES
f947c27 poky.conf: add Fedora 23 to supported distros
f33a110 maintainers.inc: remove adt-installer
83d4fab local.conf.sample: remove reference to adt
52cfdb6 bitbake: toaster: fixes for customimage package not found
dae4ffb bitbake: data_smart: Restrict expansion regexp to not include : characters
7e739ac bitbake: tests/utils.py: test origvalue in a callback matches what is expected
e1e459e bitbake: lib/bb/utils.py: Fix a bug in edit_metadata() that could corrupt vars
43150ab oeqa/selftest/wic: add test case for sparse images
29bc2f7 wic/utils/partitionedfs.py: assemble .wic images as sparse files
7fdb061 image-vm.bbclass/image_types.bbclass: IMAGE_NAME -> IMAGE_LINK_NAME
04e1978 image_types.bbclass: fix elf
513ea49 image_types.bbclass: set nodesize for btrfs
bad434b libxml2: fix AM_PATH_XML2
9fe3d01 useradd_base.bbclass: prevent variable expansion in $opts
fb8e5f9 extrausers.bbclass: drop retry count for perform_user/group* calls
f737af4 build-perf-test: add eSDK installed size to metrics
50f5ca3 rpm: brace expansion is a bashism
66ecbd3 openssl.inc: minor packaging cleanup
e38ec0c systemd-systemctl-native: fix unit detection
4019058 apr-util: fix path in rules.mk for nativesdk
bdf453f bdwgc: installed-vs-shipped for nativesdk
12ca8df libsolv: fix installed-vs-shipped for nativesdk
c88c894 desktop-file-utils-native: disable emacs
d4f6c0e toaster: add DL_DIR and SSTATE_DIR to oe toasterconf
69b3f87 toaster.bbclass: strip task from the target
aa45c75 x11-common: Add PACKAGECONFIG for screen blanking
d366a33 opkg-utils: re-do find/ls code to not fail on filenames with spaces
5e360ca image-live.bbclass: fix iso + efi only
f5adb23 Add missing runtime dependency to python-pygobject
0720425 devtool: Create unlocked-sigs.inc containing items in the workspace
64cca7e sstatesig.py: Add a method to "unlock" recipes
1cb99dd populate_sdk_ext.bbclass: Enable locked sigs errors
2431ed7 sstatesig.py: Improve the SIGGEN_LOCKEDSIGS_TASKSIG_CHECK message
7e90280 sstatesig.py: Split single locked sigs check into multiple checks
7ce800c toasterconf.json: Set default distro to nodistro
1b7b548 dev-manual: Updated poky-floating-revisions file snippit example.
8d9e233 dev-manual: set correct task name for do_kernel_configme
6971029 poky-floating-revisions: Fix typo
14e2b90 toasterconf.json: Add DL_DIR and SSTATE_DIR to poky toasterconf
296dfbc build-appliance-image: Update to master head revision
00c4c9b poky: Convetion is 2.1, not 2.1.0
8cd1dec build-appliance-image: Update to master head revision
ecd58bb poky.conf: Bump version for 2.1.0 krogoth release
e955b5d bitbake: Update version to 1.30.0
4fd14e3 build-appliance-image: Update to master head revision
133224f documentation: Fixed references using the DISTRO_NAME variable
3831ca0 documentation: Updated release date in manual history tables.
b590fab dev-manual, ref-manual, sdk-manual: Removing oprofile references.
d2084cc Makefile: Removed adt-manual support
2677098 mega-manual: Removed the adt title .PNG file.
d9b4c80 README: Updated to remove the ADT manual and add the SDK manual.
9796cbb mega-manual.sed: Removed adt-manual processing
aa4b72b yocto-project-qs: Updated the minnowboard example.
f2505af poky.ent: Added lower-case distro name variable.
ee42a9b kernel-dev: Applied review comments to "Adding Recipe-Space Kernel Features"
d57fe7c ref-manual: Updated the PREFERRED_VERSION variable description.
53bade8 dev-manual: Added new section describing hardware and non-hardware config
763ae4e ref-manual: Updated verbiage on proxy handling
a1295ed ref-manual: Updated PREFERRED_VERSION variable description
879eec2 ref-manual: Updated debugging tips and tricks
23dbf81 kernel-dev: Added new "Adding Recipe-Space Kernel Features" section.
f30bfe9 kernel-dev: Updated the "Kernel Metadata Location" section.
53729bc sdk-manual: Removed three sections of writer notes.
9f0c571 sdk-manual: Applied review edits.
d4bdafa sdk-manual: Added sections in Appendix B.
d94fa00 dev-manual, profile-manual: Removed oprofile section and link
4f3dfa8 bitbake: bitbake: update LICENSE file with QUnit details
013984d bitbake: tests: browser Add test to run the js unit tests
7609888 bitbake: toaster: views jsunittest Add MACHINE and an extra layer to test project
fbc2c5d bitbake: toaster: tests Set MACHINE for the test projects
cb6b4eb bitbake: toaster: Add quint to project so that it can be used offline
18cb7fe bitbake: toaster: add rev dep column to image detail pages
7a309d9 bitbake: buildinfohelper: work around unicode exceptions
860cba8 bitbake: toasterui: update build in internal state
acb9407 bitbake: buildinfohelper: fix KeyError
52c8740 bitbake: toaster: get bitbake location from BBBASEDIR
f5d3ef6 bitbake: toaster: export BBBASEDIR variable
71ff9b9 bitbake: toaster: update projectconf.html for DL_DIR and SSTATE_DIR
705d44f bitbake: toaster: update view to support DL_DIR and SSTATE_DIR
4aafcae bitbake: toaster: use empty token
5ce4665 bitbake: toaster: runbuilds Clean up runbuilds
55b6fab bitbake: toaster: runbuilds Make runbuilds aware of the build CANCELLED state
f4cee88 bitbake: toaster: models Exclude the CANCELLED builds from get_number_of_builds
296d373 bitbake: toaster: mrb_section template Add build cancel button
f1b49dc bitbake: toaster: tables BuildsTable exclude cancelled builds
22242ae bitbake: buildinfohelper: Add handler for cancelling a build
9dcb9cb bitbake: toaster: bldcontrol models Add a cancelling state the BuildRequest
dfa8510 bitbake: toaster: models Add cancelled state to build outcome
5f862bb bitbake: toaster: update BuildEnvironmentController and BitbakeController
0db62c5 bitbake: toaster: libtoaster Update implementation of startABuild and cancelABuild
afab95c bitbake: toaster: xhr Update the implementation of the build cancellation request
eead032 bitbake: toaster: Move xhr calls for starting and stopping builds
f5aa970 bitbake: toaster: bldcontrol Add forceShutDown function to BitbakeController
d6992a8 bitbake: toasterui: shutdown on BuildCompleted event
c4ae028 bitbake: toaster: use bash explicitly
4adddfd bitbake: toaster: fix jethro build
b1a919a bitbake: toaster: update conf/local.conf
590a815 bitbake: toaster: stop bitbake server after the build
a8f6001 bitbake: toaster: add new parameter to _shellcmd
a43a16b bitbake: toaster: reimplement triggerBuild
ab18c20 bitbake: toaster: modified setLayers API
22fba9b bitbake: toaster: add brbe parameter to triggerBuild
829a0bd bitbake: toaster: remove release API
7068e8a bitbake: toaster: remove startBBServer API
9d4c62d bitbake: toasterui: fix brbe reporting
5bcce68 bitbake: buildinfohelper: improve handling of providermap
61b6b98 bitbake: uievent: improve BBUIEventQueue code
0b0d754 bitbake: toasterui: add brbe parameter to buildinfohelper
94ac3f0 bitbake: toaster: set BITBAKE_UI environment variable
e23a23b bitbake: toaster: get rid of noui option
f77baec bitbake: toaster: don't start bitbake server
4127fef image_types: use compress framework to produce checksums for images
60786b8 runqemu-gen-tapdevs: Add note about NetworkManager & tap devices
634aeed libtool: fix contaminated path to lt_truncate_bin
298d875 create-pull-request: fix for newer git
4faeff9 wget: fix build when len(TMPDIR) == 410
b667f4d sanity.bbclass: fix a hardcode in check_path_length()
94b3583 grub: remove unused 0001-Fix-build-with-glibc-2.20.patch
ef163ab glibc: remove unused CVE patches
b050ab2 clutter-gst-3.0: remove unused enable-tests.patch
064ebd5 cmake: remove unused dont-run-cross-binaries.patch
a71db4c tcl: remove unused fix-configure.patch
476eeea rpm: remove two unused patch
3d56864 ffmpeg, gstreamer1.0-libav: add textrel INSANE_SKIPs
8cc10a9 ffmpeg: Make configure options explicit
45c1944 bzip2: set correct soname
cbe33ec useradd.bbclass: remove user/group created by the package in clean* task
c115740 bitbake: fetch2/git.py: remove .indirectiondir workaround
4f07c22 bitbake: persist_data: Return str instead of unicode for sqlite3 text queries
d8f1f42 scripts/oe-selftest: avoid the creation of coverage file when coverage not installed
6e5e225 scripts/oe-selftest: remove coverage file if any coverage option is given
5edfec4 scripts/oe-selftest: remove unneeded coverage warning
8109e93 patch.bbclass: remove useless path assignment
7963613 gstreamer: remove now-redundant expansion in do_split_packages
37f4f5b package: do_split_packages: expand variables in extra_depends
2ed2089 xf86-video-intel: Add patch to fix some poor image quality
c1436b3 sanity: Increase minimum git version to 1.8.3.1
672545b scripts/oe-buildenv-internal: Fix regression in BB_ENV_EXTRAWHITE setting
f7fed7c license.bbclass: fix warnings when run in unprivileged "container" env
43071a0 externalsrc: avoid race in temporary git index file
f4f1d20 scripts/lib/bsp/help.py: Typo in help for yocto-bsp create
1bd2c8e bdwgc: use github repo for source location
0e6743b xf86-video-intel: Add patch to allow UXA to build
21e31c2 package_manager.py: better error handling in opkg's package listing
f2d5e20 systemd: make systemd-serialgetty optional
e699404 ncurses: reorder PACKAGES
f94ad4d bluez5.inc: remove obsolete workaround
a0cd8c0 buildtools-tarball: Add texinfo (for makeinfo)
9877795 cogl: fix G-I .typelib installation
b13184c classes/buildhistory: fix grammar in comments
e5c0a9f classes/buildhistory: fix filtering of depends-nokernel.dot
4d364f2 classes/buildhistory: optimise getting package size list
af5f423 bitbake: siggen: Ensure tainted stamps are accounted for with writing custom stamps
47e9e12 bitbake: siggen: Fix nostamp taint handling
8033627 bitbake: siggen: Add checksum recalculation/checking code
3e1b5e0 bitbake: siggen: Fix check calculation problem with file_checksums
39b637c bitbake: siggen: Drop misleading duplicate method
2c722e2 bitbake: tests/fetch.py: Improve unit tests for trusted network check
cf6d12d bitbake: fetch2: BB_ALLOWED_NETWORKS should not care about port numbers
158575c bitbake: toaster: orm better detect requires during CustomImageRecipe generation
c634473 bitbake: toaster: Correct typo on build form help text
c9ad1e6 bitbake: toaster: buildinfohelper Add additional metadata to the built layer
072a0b3 poky: Exclude DATE from DISTRO/SDK_VERSION checksums
f3c029f build-appliance-image: Exclude DDATETIME from task signature
7833eb4 image-vm: Exclude DISK_SIGNATURE_GENERATED from task signature
85ff4ff populate_sdk_ext: Exclude BBTASKDEPDATA from task signature
66412ab opkg-utils: opkg-build exit when fail to list files.
6b8f8a4 kernel-yocto: enforce SRC_URI specified branch
6ebd43c linux-yocto/4.4: UVC: Add support for R200 depth camera
6d2299f linux-yocto/4.4: fix PAT for 32bit x86
5559301 Revert "linux-yocto: Work around PAT issue on qemux86"
686c74f linux-yocto-dev: bump to v4.6-rcX
b3ba813 linux-yocto/4.1: ahci: backport AHCI runtime PM
8f7bbea linux-yocto/4.4: gpio-pca953x: add PCAL9535 interrupt support
4a50c05 linux-yocto/4.1: telemetry and dmaengine backports
31a10cb wic/isoimage-isohybrid.py: change cpio generated uid&gid to root
5cabf3b wic/isoimage-isohybrid.py: use glob to find initramfs location
5c60c36 bluez5: add ptest support
fc8b24d oe/patch: print cleaner error message when patch fails to apply
bf14014 oe/patch: more detailed error reporting
a2bf9e3 insane.bbclass: avoid false positives on library location
1f2f43c grub-efi.bbclass: use GRUB_ROOT rather than APPEND for root device
bf58526 bitbake.conf: Add BB_WORKERCONTEXT to HASHBASE_WHITELIST
1c1e851 gdb-cross-canadian: use PACKAGECONFIG for python and readline
370a50a base: Fixup PACKAGECONFIG incorrect mappings
dea3423 classes/packagegroup: Refactor code to be simpler
5defbcd default-distrovars.inc: remove libassuan from LGPLv2_WHITELIST_GPL-3.0
58d8123 libassuan: use package specific licensing
1f2a01b init-install-efi.sh: remove all root=foo from grub.cfg
3ce7d8c init-install.sh: fix disk_size
46eed0a ltp: fix test_proc_kill hanging
207ee90 ltp: add periodic output for memcg stress test
feafad1 epiphany: Depend on intltool-native for configure
2510239 image: Fix debugfs image type recursion loop
7dcb4c4 bitbake: toaster: tests Migrate landing page tests to Selenium
5b848fa bitbake: toaster: tests Migrate all projects page tests to Selenium
f2a38ea bitbake: toaster: tests Migrate project builds page tests to Selenium
961cd90 bitbake: toaster: tests Migrate all builds page and project page tests to Selenium
f859a3d bitbake: toaster: tests Migrate to Selenium for UI tests
965c72c yocto-bsp: Set correct default branches and branches base for i386, qemu and x86_64 archs
d110eba selftest/signing: Use packagedata to obtain PR value for signing test
34f11b5 lib/oe/packagedata: Add import os
0012b90 base.bbclass: avoid duplicate call to d.getVar('LICENSE', True)
efe73cb base.bbclass: drop obsolete HOSTTOOLS_WHITELIST_GPL-3.0
5293b83 man: use BUILD_CC and target include files for configure
5121705 scripts, lib: Don't limit traceback lengths to arbitrary values
3168134 bitbake: bitbake: Don't limit traceback lengths to arbitrary values
88ea0b9 image-vm.bbclass: remove invalid code
4d1df2c image-live.bbclass/image-vm.bbclass: remove duplicated code
d6d7526 bootimg.bbclass: merge it into image-live.bbclass
723fa56 boot-directdisk.bbclass: merge it into image-vm.bbclass
9e588481 man: fix several annoying compile/build warnings
aa13b97 image.bbclass: Make unneeded packages for a read-only rootfs configurable
4dde12f relocate_sdk: additional error checks
22bd875 systemd: fix build with gcrypt PACKAGECONFIG disabled
4b77909 devtool: modify: call shutdown on tinfoil when done
43da712 toolchain-shar-extract.sh: ensure all_proxy is allowed through
2aec71e oe-publish-sdk: exclude sstate-cache if publishing minimal SDK
8ef7016 oe-publish-sdk: prevent specifying a directory for the SDK argument
591b97c classes/populate_sdk_ext: support setting vars from environment at build time
c37d542 scripts, lib: Don't limit traceback lengths to arbitrary values
8049f25 pyton-numpy: Add definition of off_t size
b75505e image-live.bbclass: DEPENDS on syslinux
3ece012 ldconfig-native: Fix ELF flags on 64-bit binaries
d492aec recipes-support/rng-tools: Change runlevel start from S to 2, 3, 4, 5.
ab5c62e oeqa/runtime/parselogs.py: Add systemd unit circular dependencies errors.
9be3fb2 systemd-serialgetty: allow baud rate overriding
cf6788c psmisc: Remove including sys/user.h and __WORDSIZE
ede11b6 selftest: Added testcase decorator to tests
ccfe48c linux-yocto: add overlayfs feature
6ae0224 linux-yocto/4.4: broxton and usb type-c backports
e1ae3ee linux-yocto/4.4: drm/i915/skl: Fix DMC load on Skylake J0 and K0
0a1d621 linux-yocto/4.1: Intel Broxton: pwm backports
6ce8802 linux-yocto/4.1: Apollo Lake/Broxton mmc backports
a256628 linux-yocto/4.1: i2c: designware: Backport i2c patches
fbd209d linux-yocto/4.1: device property backports
ccf1b33 linux-yocto/qemuarm64: enable 32 bit compatibility
dacf9f2 linux-yocto/4.1: SMBus/iTCO backports
ab6fd48 default-distrovars.inc: remove gnutls + libtasn1 from LGPLv2_WHITELIST_GPL-3.0
2123a7e sanity.bbclass: Use pythonexception to raise real exceptions without backtraces
6af88d8 sanity: Require bitbake 1.29.1
1b2df6e uninative: Switch md5sum -> sha256
f719386 bitbake: cookerdata.py: remove slash in the end
e26087f bitbake: Bump version to 1.29.1
d73da22 bitbake: build/utils: Allow python functions to execute with real exception handling
672c07d bitbake: fetch2: Ensure that incorrect checksumed files are always renamed
2554be4 bitbake: cooker: fix CookerParser.shutdown()
53b5dc0 gcc: Fix musl ldso name for mips64
dd31bca selftest/buildoptions.py: use INHERIT +=
71db079 archiver.bbclass: addtask do_deploy_archives_setscene
1ca71e5 bitbake: cooker: Ensure bbappend order is deterministic
292c3e8 bitbake: checksum: In FileChecksumCache don't follow directory symlinks
326fc29 gcc-5.3/gcc-4.9: -fdebug-prefix-map support to remap relative path
9e20f94 ptest-runner_2.0.bb: Update recipe to point git.yoctoproject.org repo.
437841c man: fix src/Makefile to work with parallel make
abb5b46 oeqa/selftest/bbtests: Test bbappend order
ddbeb56 bitbake: cookerdata: Improve handling of ParseError
6dff639 gcc: Backport fixes for musl ssp configuration
ab20659 siteinfo: Fix musl 64bit targets
cd16b65 musl: Update to tip
0883aff buildhistory.bbclass: create image directory when needed
c093f7c runqemu: fix for iso
f1f9f89 init-live.sh: fix overlay fs
4e7eaed init-live.sh: fix ROOT_MOUNT
1622077 no-static-libs.inc: build static libusb1-native
b3e4a31 sstatesig: Ensure we keep native depends for allarch recipes
528a890 oe-selftest: generate .env only in test_image_env
21823cb build-appliance-image: Update to master head revision
7d251f7 build-appliance-image: Fix permissions
60656d0 bitbake: fetch2/wget.py: _check_latest_version_by_dir fix prefix detection
45ee2b1 bitbake: fetch2/wget.py: _check_latest_version_by_dir use group names
55cd35b conf/bitbake.conf package.bbclass: fix dbg package not contain sources while -fdebug-prefix-map used
e2b919c externalsrc: remove nostamp from do_configure
bbfc210 externalsrc: do not use do_configure[nostamp] for git srctrees
9ee403b archiver.bbclass: Just archive gcc-source for all gcc recipes
37683ef oeqa/utils/ftools: improve remove_from_file algorithm
3a934a8 scripts:/oe-selftest: Use timestamp instead of test names in coverage data file
71304d8 xcursor-transparent-theme: upgrade to latest git revision
7c5343a gdb: Fix build on mips64/musl
856be1f libunwind: Fix build on mips/mips64 for musl targets
dd61341 toolchain-shar-extract.sh: check the length for target_sdk_dir
c3c793b relocate_sdk: fixed .gccrelocprefix section handling
cc97d57 glib-2.0: Fix packaging
cef8bc9 gio-module-cache: Add class for Gio modules
0cda9d8 glib-2.0: Install gio-querymodules in main package
9ac1b6f oe-git-proxy: support username / password in http proxy
a15541d oe-git-proxy: also check all_proxy and http_proxy env variables
92b2bc5 wic: Update after task ordering changes
d6cb46c image.bbclass: run wicenv task only for wic images
5cb7705 wic: fix type of no-table option
1209eb2 matchbox-desktop: Do not close desktop on alt-F4
0361676 rootfs-postcommands: don't write manifest when IMAGE_MANIFEST empty
abd5b24 bitbake.conf: rename 'gobject-introspection-data' machine feature to 'qemu-usermode'
f81065f selftest/devtool: Update after make PROVIDER changes
25a04ee make, remake: make them properly exclude each other
f3a92ff kernel.bbclass: consider .csp firmware files
0569b69 tzdata: update to 2016c
a7e726a tzcode: update to 2016c
201d9d3 icecc.bbclass: replace icc with icecc
da00f6c icecc.bbclass: expand package arch
3f1702c icecc.bbclass: add icc_is_allarch inherit check
39170fe classes/sanity: use proper multi-line string literals
33a6135 oe-buildenv-internal: simplify derivation of BB_ENV_EXTRAWHITE
c6ab828 u-boot.inc: Add sub-dir support for SPL_BINARY
ddedab4 quilt: run ptest as normal user
afa4d5e site: Cache config vars for ccache
04344eb gdb-cross: use PACKAGECONFIG for python and readline
5005cab add !meta-poky to .gitignore file
1dd9348 scripts/lib/bsp/help.py: Add missing options to yocto-bsp help and usage
54eca75 poky-sanity.bbclass: update conf/templateconf.cfg for existing installations
2b992f3 site.conf.sample: fix reference to oe-git-proxy script
af63b49 conf-notes: remove reference to adt-installer
1d219ce linux-yocto: Update SRCREV for genericx86* for 4.4
8d4f43e linux-yocto: Update SRCREV for genericx86* for 4.1
84d5924 bitbake: fetch2: Handle lockfiles for file:// urls redirected to mirrors
b036afb bitbake: toaster: get all dependents for pkg for removal
9bf98a9 bitbake: toaster: new customise package-remove modal dlg
d5a419d bitbake: toaster: show full list of dependents to remove
fda94f4 bitbake: bitbake: fetch2/gitsm: Fix fetch when the repository contains nested submodules
1341c17 pseudo: backport a patch to fix xattr removal
07f0af3 uninative: don't try to relocate static binaries
c3c0d0a lib/oe/qa: add method to check if static or dynamic linked
10b6037 uninative: ensure patchelf errors are visible
86d7e44 libmad: remove use of obsolete _thumb over-ride
e7395c8 perf: package python modules into perf-python
b47225f perf: fix python scripts QA errors
ea8b914 linux-yocto/4.1: MFD backports
b6563a1 linux-yocto/4.1: device property : Backport device property patches
46baceb linux-yocto: ktypes/standard: Add tmpfs-posix-acl feature
bdf6b20 linux-firmware: Break out some additional firmware
6d8141f linux-firmware: Clean-up and sync license data
cea2a21 linux-firmware: Collapse iwlwifi firmware blobs for 7260 and 7265
3b3fe1d linux-firmware: Update to latest HEAD
d7cf2c3 archiver.bbclass: Fix tar name for git repositories
2cb4cb7 archiver.bbclass: Fix gcc-source corner case
c29eea0 archiver.bbclass: Fix use of ARCHIVER_WORKDIR and ARCHIVER_OUTDIR
8b7ee6e archiver.bbclass: Don't expand python functions in dumpdata
bc100b3 bind: /var/cache/bind
04d883c sysvinit: downgrade ALTERNATIVE_PRIORITY[mountpoint]
688d9a6 util-linux: split out util-linux-mountpoint
85ff75d gconf: fix buildpaths QA issue
7f7c9ab python-pygobject: use Python 2 instead of Python 3
e33124f sanity.bbclass: check host tool dependencies on change in NATIVELSBSTRING
4fe64d7 libunwind: Fix build with fstack-protector on musl
4aa08b8 ltp: Fix build on x86/musl
959b7f2 package.bbclass: Treat .node files same as .so when checking what to strip
e0bc781 bootimg.bbclass: only inherit syslinux when pcbios
1b1de89 grub-efi.bbclass: make it can build vm and live together
4ebaeb2 bootimg.bbclass: fix settings for grub-efi.bbclass
af1f77a pixz: Fix build on big-endian/musl systems
421289c sanity.bbclass cleanup
93e411e matchbox-wm: Update to fix XChangeProperty datatype issue
c843022 matchbox-panel-2: Fix Home-button icon load issue
01f6818 gstreamer1.0: fix introspection support also for git recipes
171adb1 gstreamer1.0-plugins-bad: fix incorrect handling of Cflags in gstreamer-gl.pc file
6462d08 x86-base.inc: suggest the latest kernel
c5c9ed6 at: fix configure option with/without-selinux
9b2b1f0 no-static-libs: just like target and native, nativesk-libcap doesn't like unrecognised options
bf90d0c linux-firmware: package firmware for Marvell 88W8688
cd17ab0 tune-arm926ejs: Handle missing thumb suffix
5b70c7e nativesdk-coreutils: a lot of warnings fixed
b47c53b runqemu-internal: split the code into functions
fae732f runqemu-internal: cleanup unsed code
e469bb7 runqemu: simplify checking for iso and ramfs
3610329 runqemu: add support for qcow2 and vdi
d85ca4a runqemu: remove ISO and RAMFS from help text
58bc854 runqemu: simplify the checking for vm images
6716eb2 runqemu: fix ROOTFS for vmdk
258cfa8 python(3): Disable tkinter
5988b5c selftest/signing.py: RPM_GPG_PASSPHRASE_FILE -> RPM_GPG_PASSPHRASE
3e5c5fe gpg_sign.py: get rid of pexpect
05d7e0d rpm: check _gpg_passphrase before ask for input
13a31b1 oe-publish-sdk: fix remote publishing
9926425 oe-publish-sdk: improve help output slightly
905286c oe-publish-sdk: drop SDK installer file from published output
0523378 devtool: add: create git repository if URL specified as positional argument
11c1d30 devtool: add: delete externalsrc files on npm recipe do_install
552a68a devtool: configure-help: fix error if do_configure not already run
eab3f06 bitbake.conf: whitelist proxy variables in config hash
58d2e56 classes/populate_sdk_ext: parse metadata on minimal SDK install
0684572 devtool: sdk-install: add option to allow building from source
50addfb classes/distutils*: don't hide logs when setup script fails
0ec30c7 classes/packagegroup: drop complementary -ptest if ptest not in DISTRO_FEATURES
d96ea29 classes/packagegroup: fix dbg/dev/ptest complementary packages
b58e5b1 bitbake: bitbake: xmlrpc: set single use mode differently
2df514b sdk-manual: Added note for running remote apps with SSH port forw enabled.
12f5c25 poky.ent: Added code name for 2.1 release to the variable
64241e0 sdk-manual: Applied more review edits to the manual per Eggleton.
b44d9e5 ref-manual: Created distrodata and checkpkg tasks, updated distrodata class
54050ff sdk-manual: Applied 2nd round of review edits.
6db8cbc sdk-manual: Applied review edits to the manual.
922eaeb sdk-manual: Updated the SDK devtool modify flow diagram.
2bbf77a dev-manual: Fixed a grammar error
286b76f sdk-manual, mega-manual: Updated the SDK devtool modify diagram
c3946bc dev-manual, profile-manual, ref-manual: Updates to remove meta-toolchain
7233e35 sdk-manual: Edits to add extensible SDK configuration sections.
b31bf7c ref-manual, sdk-manual: Changed section heading.
670735e ref-manual: Added some SDK manual support to introduction
266742b profile-manual: Updated screen output for oe-init-build-env
0654224 kernel-dev: Changed a link from an example to in-text.
19e3648 dev-manual: Edits from a 2.1 read-through.
a389684 poky.ent: Fixed a typo in one of the variables "ftar" to "tar"
b5d3065 poky.ent, bsp-guide: Removed eMenlow example and updated 2.1 variables
884b528 yocto-project-qs: Performed a read-through edit.
4b42385 poky.ent: Updated copyright year and version variables.
ae48b1f mega-manual: Added two new sections for the sdk manual
815d686 sdk-manual: Added some intro stuff about the SDK
4c5157f ref-manual: Resolving a conflict
4306f7f sdk-manual, mega-manual: Added new figure for Eclipse flow.
0bb6e48 sdk-manual: WIP on the book.
5a64701 sdk-manual, mega-manual, Makefile: Added new figures
32629e0 Makefile: Resolving a conflict
af40e9a sdk-manual: Added a new figure for installed extensible sdk directory.
6247788 sdk-manual: Applied some "red" text formatting to indicate notes
7ab8afa Makefile: Added the ".png" part to a figure I forgot.
fc43555 sdk-manual: Added a red-text "role" to the style sheet.
d07100d sdk-manual: Added new section detailing installed SDK directory.
b750729 sdk-manual-customization: Fixed XSL Appendix numbering parameter
ad7a994 Makefile: Updated the figure list for the mega-manual.
890f721 sdk-manual: WIP - Various small edits as WIP
f15f96c sdk-manual: New content for outline purposes.
4643b04 sdk-manual: Updated with two new appendices for new files.
d05566b sdk-manual: Added sdk-environment.png diagram.
0936eed sdk-manual: Added two appendix files to SDK Manual.
6996a1c Makefile: Added sdk-environment.png to figure list for SDK Manual
6cdb356 toaster-manual: Edits to a previous patch.
77594c0 mega-manual, Makefile: Added support for three new toaster figures.
00fe95d toaster-manual: Explain the local release
d06c7b8 documentation: remove all references to Hob
be8af37 ref-manual: Updated COREBASE_FILES variable.
5c7e5aa bitbake: bitbake-user-manual: include/require checks current directory
7ec8f28 bitbake: bitbake-user-manual: Updated the "inherit Directive" section.
75cba54 bitbake: bitbake-user-manual: Updated the copyright year to 2016
2918b50 bitbake: toasterui: remove ParseStarted from the event list
ab2abd4 bitbake: toasterui: Remove the excessive exception logging
d8137be bitbake: cache: Make BB_DONT_CACHE variable external
1d1aaa2 bitbake: toaster: orm generate CustomImageRecipe contents try secondary path
5c49230 bitbake: toaster: localhostbecontroller put generated layer in the builddir
b60c994 bitbake: toaster: localhostbecontroller Allow file:/// uri type for git repo
3025092 bitbake: toaster: orm Add a constant for the CustomImageRecipe's layer name
3df6551 bitbake: toaster: localhostbecontroller Don't clear out toaster custom layer dir
2f2f784 parselogs: add new whitelist entries to address 4.4.3 issues
8037ba4 bitbake: bb/tests/fetch: Update cups url
dab6d59 oe-buildenv-internal: Correct the sed expression which updates $PATH
068afc5 tzdata: update to 2016b
e140272 tzcode: update to 2016b
c0b3667 ffmpeg: Remove RSUGGEST=mplayer
e528a0a lttng-tools: Remove lttng-ust from PACKAGECONFIG for musl
42b9bdf packagegroup: Disable packages not available on musl
f148a2e world-broken: Add packages broken on musl
624ca6a siteinfo: Move apr configure cache to common-linux
90234f1 parselogs: add new whitelist entries to address 4.4.3 issues
13a2a3f u-boot: Upgrade to 2016.03 release
ecf3396 grub: add -Wno-error=trampolines to native CFLAGS
07515b0 dhcpd: create dhcpd user for dhcp dameon
b9ad80d valgrind: fix buildpath QA issue
7985006 gcc-5.3/gcc-4.9:Reuse -fdebug-prefix-map to replace -ffile-prefix-map
2faa718 gcc-5.3/gcc-4.9:replace build path with target path in __FILE__
76f10fd oe-buildenv-internal: Some clean up
4d1efc3 oe-buildenv-internal: Add variables individually to BB_ENV_EXTRAWHITE
39ac332 oe-buildenv-internal: Add paths to $PATH individually
dd5f2f7 oe-init-build-env*: Make them actually return failures
ea28de6 oe-init-build-env*: Remove unnecessary differences between the scripts
51aa00f oe-init-build-env*: Update/correct comment about specifying arguments
16fb9b8 oe-init-build-env*: Allow $OEROOT to be predefined
3173979 bluez5: allow D-Bus to spawn obexd in systems without systemd
10ef68f oeqa: remove RPM 4 self test
d915965 lib/package_manager: remove RPM4 support code
03fce73 smartpm: remove rpm4 patch
1e9de52 rpm: remove RPM 4
a7dd04d grub: fix documentation rebuilds
ee4f61b oe-selftest: Fixed --list-tests-by tag option
068e898 gcc-runtime.inc: set LICENSE for all gcc-runtime packages
788dfdd ParaTypeFFL-1.3: Add license file
62ddde6 externalsrc: use shared stamp directory if B=S
1969332 rpm: fix error when 'lua' is enabled
a31301e matchbox-keyboard: Update to latest HEAD to fix 64bit issue
40a55f1 oeqa/selftest/buildoptions: test read-only-rootfs
f64fdd2 oeqa/selftest/sstatetests: verify more variables don't impact the hash
ac347da gobject-introspection.bbclass: wrap comments at 80 columns
ae63b88 qemuarm64.conf: don't clear MACHINE_FEATURES
cad415d sanity.bbclass: allow customizing config file update error messages
96a5cb4 sanity.bbclass: fix success message when config file was updated
805aca8 sanity.bbclass: expand error messages for version checks
7d6801c lighttpd: fix /usr/lib/mod_cgi.so: undefined symbol: chunkqueue_written
5f7b9f0 valgrind: Disable nios2 support
aaaccc4 systemtap: Disable nios2 support
5857b20 lttng-modules: Add nios2 support
26248cd kexec: Disable on nios2
3e4d99b packagegroup-core-sdk: Disable sanitizers for nios2
797ffc8 bdgwc: Backport nios2 support
238e2c1 libatomic-ops: Backport nios2 support
7e83af3 selftest/buildoptions: Renamed one test case
0d9f515 python-numpy: Fix build on musl
e1f3f4c socat: Access c_ispeed and c_ospeed via APIs
bb4e6e0 watchdog: Disable nfs on musl targets
f00cca8 bdwgc: Check for getcontext() API during configure
51464e7 devtool: change config symlink name to .config.new
8c0148f systemd: Fix and expand ptests
427e369 oeqa/utils/testexport.py: add functionality for exporting binaries
2191623 init-live : make it easier to add custom boot targets
57a525c useradd_base.bbclass: replace retry logic with flock
5d06f00 image.bbclass: track ROOTFS_POSTUNINSTALL_COMMAND in do_rootfs vardeps
6129d86 eudev: split eudev-hwdb from eudev
9aa27fe openssl: don't move libcrypto to base_libdir
370419e xcb-util-image: Fix build with clang
8727975 musl: Update to get mips64 port
4653fdd dhcp: enable gentle shutdown
e382d96 coreutils: fix reporting 'unknown' by `uname -p' and `uname -i'
3b8cd1d ncurses_6: Improve installation
9cc65ed Revert "selftest: Added MACHINE = "qemux86" to tests that use runqemu"
3c5ee61 busybox: Drop -r passthrough patch
2c666af linux-yocto/4.1: usb: add usb_otg_caps to usb_gadget structure.
8dc9162 linux-yocto/4.1: Intel Broxton and Sunrisepoint-H: pinctrl and drm
99ad4c9 linux-yocto/4.1: powercap/RAPL: Backport powercap/RAPL
c4f544e linux-yocto/4.1: Thermal: Enable Broxton SoC thermal reporting device
123c2c6 linux-yocto/4.1: usb backports for Apollo Lake/Broxton
600b700 recipetool: create: don't create extra files directory unconditionally
8debfea local.conf.sample: Disable prelink by default
efa0881 oeqa/selftest/recipetool: Fix test_recipetool_create_simple
c9d269c Revert "packagegroup-core-x11-sato: add python-pygobject and gtk+3"
d24a39a oeqa/recipetool: Fix syntax error
55a1e52 oeqa/recipetool: Improve debugging output by adding dirlist
637b3c8 uninative: Add a fix for icu-native to use the correct ABI
9dbfbe9 scripts/oe-selftest: Add short names to most common options
681a452 gcc: Fix the license on GNU OpenMP
15c5b2a Revert "gcc: Fix the license on GNU OpenMP"
d5cdb48 perl: fix missing dependency for perl-misc
0eb52b9 classes/buildhistory: record a few more variables for extensible SDK
cbb4c5b package-deb: Ignore circular dependencies
fcc7ff0 package_deb: Fix python runtime error
9155b24 python-numpy: fix buildpaths QA issue
9e69963 python: move ast module into python-core
1a35166 xserver: require sufficiently new libdrm
36bf666 package_manager.py: Fix race condition in OpkgIndexer.write_index()
35be679 scripts/oe-selftest: Add search expression matching to run/list options
4489ef1 glib-2.0: relocate the GIO module directory for native builds
cf3402e image-buildinfo.bbclass: fix performance problems
e2fe28c linux-yocto/4.4: gpio-pca953x: add "drive" property
3d45853 python3: fix do_configure check platform triplet error
03b167d ncurses_6: Fix an install race condition
09eab6b build-appliance: make the inclusion of downloaded sources optional
8ea5cdc builder: remove hob from autostart
ff5d9f7 Revert "gstreamer1.0-plugins-XXX: move inherit gettext into common .inc file"
c99da8d musl: disable building of gobject introspection data
0dea50e machine/include/arch-x86: Make x32 ABI not supporting gobject-introspection-data
8c14c74 bitbake.conf: add 'gobject-introspection-data' to DISTRO/MACHINE_FEATURES_BACKFILL
2e27994 packagegroup-core-x11-sato: add python-pygobject and gtk+3
8b1fa2a webkitgtk: enable gobject introspection
7bd32b9 recipes-gnome: fix introspection support
efd37c5 python-pygobject: update to 3.18.2
ff3500b gnomebase.bbclass: do not disable gobject introspection
ac5cc0c gstreamer: enable gobject introspection
03cd714 libsoup-2.4: enable gobject introspection
c1d67e4 clutter: enable gobject introspection
0ec412b gtk+3: enable gobject-introspection
d6f8028 gtk+: enable gobject introspection
0d1e4b2 avahi: enable gobject-introspection
d2e0dc1 python-pygtk: remove the recipe
0c6d7cb avahi-ui: remove the dependency on python-pygtk by disabling avahi-discover
4fbf761 vala.bbclass: remove pre-packaged vapigen.m4 from tarballs
235455d vala: enable the use of vapigen by packages with vala support
d1b96f1 gobject-introspection.bbclass: add a class that enables gobject introspection
96b5847 gtk-doc-stub: remove introspection stubs
3a1d9fb gobject-introspection: Override GIO_MODULE_DIR when scanning
10e9977 gobject-introspection: add the recipe
3c66619 bitbake: fetch2/npm: fix ud.registry so that alternative registries can be handled
0155472 ref-manual: Updated "Application Development SDK" section.
4438460 ref-manual: Applied review edits to several SDK variables.
3c727ff ref-manual: Updated "Cross-Development Toolchain Development" section.
af1517c ref-manual: Updated "Build History SDK Information" section.
d9fc04b dev-manual, mega-manual: Updated "Application Development SDK" section.
357aa33 ref-manual, mega-manual: Updated "SDK Generation" section.
54490c0 ref-manual: Added several extensible SDK variables to glossary.
6dfd441 ref-manual: Updated IMAGE_PKGTYPE variable.
77f002c ref-manual: Updated "Cross-Development Toolchain Generation"
ee90cc6 ref-manual: Updated the "Build History SDK Information" section.
53dd8a0 dev-manual: Moved "Optionally Using an External Toolchain" to Tasks chapter.
9d76cfe meta: toolchain-shar-relocate.sh: Fix for extracting SDK in the same directory as SDK script.
054abad nettle: The variable named p in the patch file was incorrectly named.
93a5417 valgrind: Make dep on glibc-utils conditional on TCLIBC = glibc
40c9774 make 4.1: fix segfault when ttyname fails
7f27713 gcc: Disable libitm for MicroBlaze
81d58d6 sign_package_feed: add feed signature type
42f612c package_manager: sign IPK package feeds
c637783 signing-keys: create ipk package
14e809e gpg_sign: export_pubkey: add signature type support
0b088e0 gpg_sign: detach_sign: fix gpg > 2.1 STDIN file descriptor
2fccd8a gpg_sign: add local ipk package signing functionality
6bd6a2b systemd: add comment stating that resolved needs gcrypt
a5fd57d selftest/bblayers.py: Remove harcoded recipe files
dce7290 selftest/prservice.py: Sanitize package version when looking for stamp
cbd87f3 lsof: update UPSTREAM_CHECK_URI
57fb05a eudev: provide UPSTREAM_CHECK_URI
3f8d5bf toaster.bbclass: show packages that were setscened into existence too
39e1351 gcc: Fix the license on GNU OpenMP
c6aeef3 linux-yocto/4.4: Galileo updates
37b61b0 siteinfo: Add ppc64le support.
0265fcc nettle: disable static for 2.7.1
8660cd1 nettle: Security fix CVE-2015-8804
dae5715 nettle: Security fix CVE-2015-8803 and CVE-2015-8805
24aea3a glib-2.0: silence warnings when parsing headers for introspection
3331992 qemu: Limit paths searched during user mode emulation
b578a06 image-mklibs: handle position independent binaries
c706b5e libpam: define limits.conf as CONFFILES of package libpam-runtime
82dec46 perl-rdepends: Remove circular dependencies
815c36f rpm: Sync CVS to regular version
775f22e rpm: Fix musl integration with RPM5
001bdef gcc: Disable libitm for nios2
d53413d bitbake: server/process: Try connecting 4 times before giving up
0f01059 bitbake: toaster: models List only have the specified project's imported layers
0dcab02 bitbake: toaster: rework task buildstats storage and display
cc74a8a bitbake: toaster: use force_bytes to display non-ascii project names
aebc22d bitbake: fetch2: Make SRC_URI[md5sum] and SRC_URI[sha256sum] expand their values
d405f97 bitbake: xmlrpc: fix bug in setting XMLRPCServer.single_use
c50bdb3 bitbake: fetch2/npm: add missing URL argument to ParameterError
fbf27c4 bitbake: fetch2/npm: properly handle npm dependencies
ef6a451 bitbake: fetch2/npm: fix errors with some version specifications
ad50ce9 populate_sdk_ext: Correct commit 8b81bb56c69aabdea984352f8e267a9783c0bdbc
bc0e99d recipetool: create: shrinkwrap and lockdown npm modules
309b2e6 recipetool: create: support creation of additional files by plugins
2279eb2 recipetool: create: check if npm available if npm:// URL specified
9145500 recipetool: create: split npm module dependencies into packages
d46827c recipetool: create: add license file crunching
3fd244b recipetool: create: match *LICENSE* as a license file
2b6a352 recipetool: create: improve mapping for autotools program macros
1607fac recipetool: create: be more tolerant of spacing in configure.ac
9dca5c8 lib/sstatesig: skip shared_workdir when checking locked sigs
142bad3 python3: fix patching get_python_lib() in distutils/sysconfig.py
50d07e9 python3-native: use the previous version of python-config script
5dce2e3 qemu.bbclass: add qemu_wrapper_cmdline()
8b5afcd db: remove the NO_UPDATE_REASON and replace it a comment about RPM
5699c67 rpmresolve: It is not necessary to manually specify -lpopt
8ea55ba rpm: A number of the patches have been submitted upstream
6833c5d rpm: Enable specific crypto and digest settings via variables
59a4d99 security_flags.inc: Special flags are needed for RPM
007c284 rpm: Uprev to rpm-5.4.16 (pre) and rpm-5.4+cvs to current CVS head
a27ca6d yocto-bsp: Update templates to 4.4 kernel
2d0933c conf/distro/include: drop old recipes
1fd183e bblayers.conf.sample: remove BBLAYERS_NON_REMOVABLE
477b8fb poky: Enable uninative
1b7cc9c linux-yocto/4.4: explicitly enable ftrace in tracing fragment
aee7482 linux-yocto/4.4: iwlwifi: mvm: don't allow sched scans without matches to be started
2408f49 linux-yocto/kernel-meta: ktype refactoring: move DEBUG_KERNEL, EXPERT and EMBEDDED
9ac029b xmlto: tell xmlto where cp is
6d89b52 toaster.bbclass: improve how we gather buildstats for Toaster
4dd3e40 image-prelink: use STAGING_*_NATIVE variables
2193e9d strace: Backport fixes for compiling with clang
ee8ff42 ghostscript: 9.16 -> 9.18
3f5725c fontconfig: Revert changes made to FcConfigAppFontAddDir() recently
433d866 populate_sdk_ext: Make populate_sdk_ext nostamp
e186d6d systemd: binfmt should be added to SYSTEMD_PACKAGES only if binfmt is enabled
b051a95 license.bbclass: fix host contamination warnings for license files
f8a9774 oeqa/selftest/buildoptions: Test build does not fail without git rev
656aeff busybox.inc: add tail symlink so busybox can commit suicide cleanly
a321f4e avahi-ui: add dbus to PACKAGECONFIG
1bd4b72 avahi: add missing intltool-native build dependency
72f9e39 avahi: make dbus optional but default
424466b oe-setup-builddir: tidy up local.conf and bblayers.conf commentary
07919e9 net-tools: Add SCTP option support
e8254bc tune-corei7.inc: Fix PACKAGE_EXTRA_ARCHS for corei7-32
5346675 eudev: remove redundant udev_run assignment
adad264 xcursor-transparent-theme: use a version glob in the selftest bbappend
946d00c populate_sdk_ext: Update after uninative changes
ba57ba1 image.bbclass: support chaining compression (aka conversion) commands
5ac3dc7 image.bbclass: fix incomplete .rootfs customization
3322fa7 bitbake: toasterui: fix warning 'Unknown event'
621cbc8 bitbake: toasterui: exit on final events
8e138b7 bitbake: toasterui: make toasterui to work in build mode
0a61306 bitbake: toasterui: check if setEventMask succeeded
ac941ac bitbake: command: make setEventMask readonly
dd3da9a bitbake: toasterui: update list of events
f56fa5d bitbake: toasterui: reformat list of events
a71d32a bitbake: toaster: remove sshbecontroller module
3db71b4 bitbake: toaster: don't use sshbecontroller
790b2d1 bitbake: toaster: raise NotImplementedError
96535ba bitbake: toaster: bring back the strict directive
5b8b399 bitbake: toaster: change 'revision' to 'Git revision'
07ead98 bitbake: toaster: views api Package info return both kinds of RDEPENDS
9cda2ab bitbake: toaster: fixup dependency excludes for customimage
a54cebe bitbake: fetch2/npm: ignore unknown headers in tarballs
0cd1be1 bitbake: fetch2/npm: handle alternative dependency syntax
d999927 bitbake: fetch2/npm: fix indentation
26ee4dd image creation: allow overriding .rootfs suffix
e43fcdf scripts/hob: drop
59b4cef classes/packageinfo: remove
bbf2a5d conf/documentation.conf: remove BBLAYERS_NON_REMOVABLE
7054882 yocto-uninative: Add common include for uninative
d2c96ca mtools: Drop GCONV_PATH manipulation
d27644e uninative: Handle relocate of GCONV_PATH in libc
0523499 uninative: Add checksum support
73265d1 uninative: Refactor common code
4feb00d uninative: Use CXX11 ABI for interoperation between gcc4 and gcc5
013dd24 uninative: correctly enable uninative
034618d glibc: Add relocation of GCONV_PATH
8dca343 uninative-tarball: Add glibc-gconv-iso8859-1 for guile
1f50f29 dkpg: Use tar everywhere (not gtar)
b158d6c gtk3+: Add missing DEPENDS on wayland-native
e395e81 tune-cortexa17.inc: apply changes similar to a15
ea53d1e sstate: Allow late expansion of NATIVELSBSTRING
bd3a1d5 linux-yocto: Update SRCREV for genericx86* for 4.4
70c6df2 linux-yocto: Update SRCREV for genericx86* for 4.1
ae85c4b linuxloader/image-prelink/image-mklibs: Fix non-standard path prelinking
0b84897 insane/prelink: Handle nonstandard library paths
6b564ae ext-sdk-prepare: Catch setscene tasks which should have run but didn't
d8efd2e createrepo: Fix stat floating timestamps
ce5a9df xmlto: ensure /bin/bash is used as bash
70b4f36 openssl: add a patch to fix parallel builds
1632742 xdg-utils: remove trailing whitespace in multiline string
816391a btrfs-tools: Add libgcc to RDEPENDS
e467156 bitbake.conf: Add libgcc-native to ASSUME_PROVIDED
a91713f net-tools: Override CFLAGS/LDFLAGS in do_install too
fb0c3c5 nspr: Fix build regression on musl from last upgrade
37f5fb9 gdb: fix builds with internal readline and no static libraries
6518db4 feature-arm-thumb.inc: Fix thumb tune override warning
afb1d09 recipetool: create: fix support for AX_CHECK_LIBRARY
463fd5e formfactor: assume a keyboard is plugged in
e2107f5 acl: Fix re pattern in test cases
82a8064 gcc-runtime.inc: disable libitm for little endian MIPS too
25d9c4e devtool: add build-sdk subcommand
41eb36d devtool: build-image: rename module
82d0c8a oeqa/buildoptions: Improve unsafe references tests
4284fdf insane.bbclass: make the checking stricter for unsafe references in scripts
5cd71fe yocto-project-qs: Updated flow to mention Toaster
cd041b7 dev-manual: Applied review comments to the devshell section.
f54fe56 ref-manual: Updates for nativesdk clarifications.
a882267 dev-manual: Fixed typo in the devshell section.
70c7e36 dev-manual: Created devtool upgrade section.
b2b22d5 dev-manual, mega-manual, Makefile: Added support for new upgrade flow
0b7d8a4 dev-manual, mega-manual: Updated the workspace directory structure image
050e021 dev-manual: Applied review changes to the devtool section.
09ecf38 dev-manual, mega-manual: Updated three figures for devtool
f33ffaa dev-manual: Applied more review comments to the section.
fe70eb2 dev-manual, mega-manual: Updated the devtool modify flow diagram.
eb3b414 dev-manual, mega-manual: Updated the devtool add flow diagram.
4c5bd3f dev-manual, mega-manual: Updated the devtool workspace figure.
9cee16b dev-manual: Applied review comments to the devtool section
c678d1a dev-manual: Updated the devtool add section.
a09238a dev-manual, mega-manual: Updated devtool add flow diagram
7699f0a dev-manual: Added section for devtool modify flow
1eecaea dev-manual, mega-manual: Added new figure for devtool modify flow
9582da6 dev-manual: Edits to the devtool-add section.
740369f dev-manual, mega-manual: Updated the devtool add flow figure
a848e9f dev-manual, mega-manual: Updated the workflow layer content figure.
34e08b3 dev-manual: Added new "writernotes" style.
17a21e6 Makefile, dev-manual, mega-manual: Added new figure support
d346c35 dev-manual: Applied review comments to devshell section.
3b41049 ref-manual, dev-manual: Clarifying "native" and "sdknative"
a1970eb dev-manual: Updated devshell section.
a58cde0 toaster-manual: Updated how manage.py createsuperuser command is run
c5b4f69 ref-manual, dev-manual: Clarification of "native" and "sdknative"
952bcc7 toaster-manual: Removed prompts for json file.
34c75fa ref-manual: Updated the S variable description with feedback
2b2ced0 ref-manual: Updated the staging.bbclass description
b9dddd5 ref-manual: Updated the S variable description.
41e9f7c dev-manual, ref-manual: Updated licensing text information.
5066fbc ref-manual: Added order information for conf file parsing.
ad6b2f2 toaster-manual: Removed typo - double "allow" words.
c8c533e ref-manual: Updated the do_populate_sysroot task.
2a3942b dev-manual: Updated section on adding license text.
77b3d06 ref-manual: Updated the S variable entry in the glossary.
a1a4808 toaster-manual: Applied a patch to weed out build mode (modes).
353b755 bitbake: bitbake-user-manual: Added expand() function to list.
638ad17 bitbake: bitbake-user-manual: Added note for Python variable ref expansion.
da22add bitbake: bitbake-user-manual: Enhance environment variable discussion.
f11de9d e2fsprogs: do not enable non-stable features by default
b04280a sdk_update.py: Enable local sdk-update tests
14dd07c sdk.py: Fix undefined variable
c12e919 eudev: recipe formatting improvements
73a43fc openssl: Security fix Drown via 1.0.2g update
ed14aef layer.conf: Update after replacement of udev with eudev
e72233a bootimg: set default value for LABELS variable
4eaef67 sanity: Do not mistake meta-yocto-bsp for meta-yocto
86759de sanity.bbclass: remove conflict checking for image vm and live
bb1c719 syslinux.bbclass: make vm and live can be built together
5c5c13d recipetool: create: add basic support for new npm fetcher/class
2be37a9 recipetool: create: add basic support for generating linux kernel recipes
5cf15ff recipetool: create: add support for out-of-tree kernel modules
937ecd0 bitbake: toaster: cleanup of bin/toaster startup code
a7d1b95 bitbake: ui: remove the puccho ui
a9dc72f bitbake: hob: removal of hob ui and associated ui files
27468db bitbake: fetch2/npm: Add missing ParameterError import
44e3461 bitbake: npm: in cases where shrinkwrap resolved a git URL, ignore it and grab dist.tarball
2a73181 bitbake: fetch2: Fix unpack for absolute file urls
865d2fe bitbake: fetch2: fixes copying of file://dir; subdir=foo, bug 6128 and bug 6129
fb437d3 meta-yocto-bsp: bump to linux-yocto 4.4 for the non-x86 BSPs
fbedac4 maintainers.inc: Add new eudev package and change maintainership for udev
0138874 gcc: Add support for atomic opertions (libitm) where available
70153b4 classes/externalsrc: fix symlinking if symlink exists pointing to another path
eac4061 populate_sdk_ext: Only write LCONF_VERSION to bblayers if it is set
c366343 automake: don't delete .pyc files
d6e63be cracklib: fix Python packaging
a005d25 populate_sdk_base: handle empty SDK_PACKAGING_FUNC
ec3be9f linux-yocto/4.4: update to 4.4.3
6ed16ff linux-yocto/4.1: iwlwifi: mvm: don't allow sched scans without matches to be started
2497e80 linux-yocto/4.4: update to -stable 4.4.2
aa2c1f7 linux-yocto: braswell: Remove feature and move DRM_I915_PRELIMINARY_HW_SUPPORT option
702701d linux-yocto/4.4: yaffs2 build fixes
c2152b8 linux-yocto/4.1: update to 4.1.18
45d4cd7 linux-yocto/4.1: clkdev updates
79ecef6 linux-yocto/4.1: Galileo updates
5f61693 usbutils: Fix for new eudev implementation
c89b777 libgudev: Fix for new eudev implementation
3e5e540 eudev: Replaces udev with eudev for compatibility when using sysvinit on newer kernels
674e55f populate_sdk_ext: Delete the buildtools tar file after installation
d8acef2 libarchive: Set xattrs after setting times
431c1e1 combo-layer: handle empty commits during "init --history"
695cc45 classes/populate_sdk_ext: prepend to PATH rather than appending
b145480 classes/module: allow substitution of the modules_install target name
b03936c grub2.inc: drop bogus dependency on xz
7328765 grub2.inc: avoid passing -isystem to native builds
576587d grub2.inc: dont export TARGET_CFLAGS etc to grub2 configure
97a3322 harfbuzz: update 1.2.1 -> 1.2.3
edf93a0 gstreamer1.0-plugins-bad.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5
89140b0 dhcp: CVE-2015-8605
6ccd8cd sato/images: Add ptest image
f38debb layer.conf: Whitelist cantarell-fonts fontconfig dependency
b307937 pango: make ${PN}-ptest RDEPENDS on cantarell-fonts
0c80f29 cantarell-fonts: Add recipe
4006a7f sanity: Fix int verses string reference
2e27c4b bitbake: fetch2/npm: Enable fetcher
1c060d7 pseudo: Increase number of retries
030d920 bitbake: providers: Fix PREFERRED_VERSION lookup for '_' in PN
c679a3d bitbake: fetch2: Skip lockfiles and donestamps for local files
d01042e bitbake: fetch2/__init__.py: Error if lockfile path invalid
ab7b7bf bitbake: fetch2/__init__: Fix decodeurl to better handle urls without paths
06b4d8f bitbake: fetch2/wget: Set localfile for directories
8d7e799 genericx86-common: Update PREFERRED_VERSION_linux-yocto to 4.4
65d6a62 gstreamer1.0-plugins-bad.inc: enable webp PACKAGECONFIG by default
cd00748 gettext: Delete libintl.la file from install
b33efa9 systemctl: handle RequiredBy dependencies
8caa592 ffmpeg: add bzlib, lzma and xv PACKAGECONFIGs
0011760 rootfs-postcommands: fix ssh_allow_empty_password checking
96f5f89 musl: Add linux-libc-headers to deps
3354878 mesa: Fix build on musl
7651342 dosfstools_2.11: fix build following removal of -e from EXTRA_OEMAKE
6c8abea uclibc support for rng-tools
c7e5a38 oeqa/sdkext: Add sdk_update.SDKUpdateTest class.
738bd1a classes/testsdk: Pass tcname to SDK and SDKExt contexts
2a410b2 classes/testsdk: Move the removal of bitbake PATH to eSDK context only
eb1f8b9 classes/testsdk: Move code for avoid PATHs to oeqa.utils
55d4849 gstreamer1.0-plugins-XXX: control orc PACKAGECONFIG via GSTREAMER_ORC
083c63d boost.inc: fix BJAM_OPTS --build-dir option
f4e17c6 shared-mime-info: update to 1.6
4ffdfdf vala: update to 0.30.1
f53f374 python-git: update to 1.0.2
ec73437 pax-utils: update to 1.1.5
447ddb9 nettle: update to 3.2
26a3d25 ncurses: update to revision 20160213
dc42d30 libdrm: update to 2.4.67
0296e0a gtk+3: update to 3.18.8
e08ad62 gtk-icon-utils-native: update to 3.18.8
9daf153 git: update to 2.7.2
927dfaf gnupg: update to 2.1.11
2c39358 clutter-gst-3.0: update to 3.0.16
b8a1e59 ccache: update to 3.2.4
4d4aa1f libsolv: update to 0.6.19
8c2e420 ffmpeg: update to 3.0
afce247 nspr: update to 4.12
b19dbe5 pcmanfm: update to 1.2.4
6b41608 libfm: update to 1.2.4
325a9d3 epiphany: update to 3.18.4
d4da534 wic: don't throw away our created swap partition
5f82d17 automake: set test-driver path relative to top_builddir
b41862d uninative-tarball: respect SDKMACHINE when building
4d1c14f boost.inc: enable more verbose build logs
7f84ad0 gstreamer1.0-plugins-XXX: move inherit gettext into common .inc file
2ce48e6 gstreamer1.0.inc: add explicit PACKAGECONFIG init
935d88a gstreamer1.0-libav: move LIBAV_EXTRA_CONFIGURE_COMMON_ARG into .inc
3a8ff19 gstreamer1.0-libav_git: add --ranlib option to LIBAV_EXTRA_CONFIGURE_COMMON_ARG
b8bdb99 boost.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5
9ca8f30 populate_sdk_ext: Add images to SDK_INSTALL_TARGETS
07dc765 boot-directdisk.bbclass: drop IS_VM chechking
a87574c image-live/boot-directdisk.bbclass: remove AUTO_SYSLINUXCFG
76eb815 testimage.bbclass: reuse generic test suites
6571a84 testimage.bbclass: add generic, image test suites
8c45747 gconf: remove redundant dependencies
a74c389 gtk-doc-stub: don't inherit autotools
2269f90 os-release: sanitise VERSION_ID field
9d86b26 apr-util: add ldap crypto and sqlite3 to PACKAGECONFIG
d8d2f57 apr-util: fix loadable module packaging
77cfa2b glibc.inc: improve optimisation level sanity checking
04c4719 rsync: add native variant
2c20fe4 core-tools-profile: add lttng tools for aarch64
8a0b997 lttng-ust: add support for aarch64_be
6081c35 liburcu: add support for aarch64_be
07a3c71 harfbuzz: add explicit dependency on fontconfig
73cc8b8 harfbuzz: update 1.2.0 -> 1.2.1
bb151b8 fontconfig: Don't add font directories from host
e9f5134 musl: Upgrade to 1.1.14
bf4d380 oe-selftest: devtool: add an additional test for devtool upgrade
4bae2f2 oe-selftest: devtool: rework devtool upgrade test
10290f2 devtool: upgrade: print new recipe name
5cd3be3 devtool: upgrade: drop PR on upgrade
e6f684b devtool: upgrade: eliminate unnecessary datastore copy
860574e devtool: upgrade: fix several issues with extraction of new source
66a781c devtool: upgrade: fix constructing new branch from tarball releases
d30cc76 devtool: upgrade: fix renaming of recipe if PV is not in name
75eeeab devtool: upgrade: fix moving version-specific files directory
81ebb0b devtool: upgrade: fix version argument checking
e953b57 devtool: upgrade: drop superfluous call to validate_pn
492b1eb devtool: upgrade: make source tree path optional
942ae25 devtool: modify: fix source tree default name when mapping virtuals
e2334e1 devtool: add: tweak auto-determining name failure message
55ae566 uninative.bbclass: if the loader can't be found disable instead of failing
50b8740 uninative: use check_output instead of Popen directly
4495e8b lib/oe/qa: add explicit exception for 'file isn't an ELF'
4553bb1 libdrm: fix build with uclibc
4e5a871 strace: fix ptest execution
e8e0489 clutter-1.0: Fix confgure test errors found by clang
b748f40 oeqa/parselogs: Updated whitelist
4b32351 buildstats.bbclass: Don't assume /proc/<pid>/io present
07e1f10 sysvinit-inittab: Move start_getty scrip to base_bindir.
8d07e14 oeqa/selftest/prservice: Added new TC: check pr-server starts and stop correctly on localhost.
d2a563c oe-selftest: Add support for lib/oeqa/selftest subdirectories
7f58b92 musl: Upgrade to 1.1.14
73bf792 devtool: update-recipe: create config fragment
2fbd1d7 devtool: sync: update kernel config
26f951b git: fix installed-vs-shipped QA Issue
033db24 btrfs-tools: fix symlink creation multiple times
9af773f bison/gettext: add --with-bisonlocaledir to assign BISON_LOCALEDIR
b14e2ae gcc: use relative path for configure script
1f00fb2 depmodwrapper-cross: nopackages to avoid QA [buildpaths] issue
00a6f5a oeqa/utils: added new network module
3f7aa6f scripts/oe-selftest: Use site.USER_SITE to run coverage configuration code for sub-process
1c6c76e scripts/oe-selftest: Add filtering to the coverage data gathered by oe-selftest
4a21827 oeqa/selftest/signing: Added test for locked signatures
604dc1c package: check inherit instead of PN to decide if a recipe is a packagegroup
b4df005 tune-cortexa9.inc: add vfpv3 tunes
889a5cc mirrors/own-mirrors/sanity: Updates after npm fetcher addition
28d17cf npm.bbclass: Add npm class to match fetcher
bc5a1d1 base: Add nodejs-native dependency for npm:// urls
9d5483c meta-yocto: Rename to meta-poky to better match its purpose
ab3a718 adt-installer: Drop since its replaced by the extensible SDK
c1c6a9d sanity: Improve configuration upgrade capabilities (support meta-yocto -> poky transition)
2587101 image: Run do_rootfs_wicenv after do_image
e0fd964 bitbake: toaster: change 'delete layer' to 'remove layer'
6e82820 bitbake: toaster: rename 'run again' button
c8dd72c bitbake: toaster: fix banner after customimage package add
149f574 bitbake: toaster: custom breadcrumb for the default project
4a12865 bitbake: prserv: Add dump_db()
bdb51ab bitbake: toaster: remove custom images from Image Recipes
98d462c bitbake: toaster: show suffix for image files and basename for artifact files
88b5660 bitbake: toaster: add missing link to image recipe details
25b179d bitbake: toaster: adjust the search field width
a97081b bitbake: toaster: make 'configuration' the first tab
e1fc319 bitbake: toaster: link to configuration in all breadcrumbs
df2808f bitbake: toaster: reduce max height of modal dialogs
6c51f08 bitbake: toaster: disable add layer button on click
d4a663a bitbake: toaster: apply error class to name field
48f0ae2 bitbake: toaster: fix custom image name form
07eb4f2 bitbake: toaster: comment out project release change
12ade9b bitbake: fetch2/npm: Add mirroring support for npm fetcher
ca5b6d6 bitbake: fetch2/npm: Add npm fetcher
813bd1f bitbake: utils.py: Add sha1_file call
7bb9e8d signing-keys: Make signing keys the only publisher of keys
64ab17b systemd: Upgrade to 229
44248af harfbuzz: update to version 1.2.0
f4f5573 perf: add sysroot handling to subcmd
7a95c2c oeqa/selftest/buildoptions: build -minimal instead of -sato images
2980ac0 bitbake.conf: add findutils-native to ASSUME_PROVIDED
2e152ff findutils: upgrade to 4.6.0
951ce18 mesa: add missing space to RRECOMMENDS append
2305610 uclibc: Do not use immediate expansion operator
aab3900 security_flags: Disable ssp when compiling uclibc
afb954e rpm: fix building rpm 5 with internal beecrypt
069cdbe alsa-lib: topology: Add missing include sys/stat.h
b879aed libsdl2: Fix patch after upgrade
3d4f71d gstreamer1.0-libav_git: update 1.7.1 -> 1.7.2
9d83a3e gstreamer1.0-plugins-ugly_git: update 1.7.1 -> 1.7.2
6456a6f gstreamer1.0-plugins-bad_git: update 1.7.1 -> 1.7.2
821498f gstreamer1.0-plugins-good_git: update 1.7.1 -> 1.7.2
04e77c1 gstreamer1.0-plugins-base_git: update 1.7.1 -> 1.7.2
e67c91d gstreamer1.0_git: update 1.7.1 -> 1.7.2
ea8c34e libnewt: Fix build with PIE flags
66a833a pseudo: Fix build when security flags are enabled
91a1baa glibc: Upgrade to 2.23
c1f9507 no-static-libs: remove eglinfo
0ab67d6 freetype: use autotools instead of a manual do_configure
4883ccc classes/populate_sdk_ext: add a better config extension mechanism
524ee08 recipetool: create: improve CMake package mapping
7b6e5b0 recipetool: create: add additional extension mechanisms
b2d4472 devtool: modify: tweak help description for behaviour change
a8e0e5e devtool: deploy-target: preserve existing files
2059a34 devtool: undeploy-target: support undeploying all recipes
b95c72c devtool: deploy-target: write deployed files list to target
62989ef devtool: sdk-update: tweak command-line handling of updateserver
cada5a8 devtool: (un)deploy-target: add help descriptions
6bd88e6 scripts/lib/argparse_oe: tweak title above options
32ef523 devtool: categorise and order subcommands in help output
9f7df76 devtool: update-recipe: don't show workspace recipe warning if no update
51972ed devtool: reset: fix preserving patches/other files next to recipes
e54f9c1 devtool / recipetool: use common code for launching editor
dd35f69 devtool: minor fix for error message
41242a2 staging.bbclass: remove trail slash from SYSROOT_DESTDIR
aeb8964 terminal.bbclass: import oe.terminal for oe.terminal.prioritized()
bee556a recipe_sanity.bbclass: skip DataSmart in recipe_sanity_eh()
2d293bd image.bbclass: fix circular dependency when IMAGE_FSTYPES append hddimg
a332360 toolchain-scripts.bbclass: add three other path to PATH in env.sh
4d2910f libsoup-2.4: disable libsoup-gnome by default
619f6c6 libsoup-2.4: prevent PACKAGECONFIG dependant package renaming
13e726f libsoup-2.4: minor formatting improvements
dd0ef3c populate_sdk_ext.bbclass: Add SDK_RECRDEP_TASKS variable
4c5c40d devtool: Don't recursively look for .devtoolbase in --basepath
0220180 populate_sdk_ext: Don't ignore SDK_TARGETS value
8c0ba8d bitbake: toaster: toastergui Fix invalid char test and implementation
913e9b1 bitbake: toaster: PackagesTable show only installed packages
94bca58 bitbake: toaster: toastergui unit tests convert to use fixtures
8796ac8 bitbake: toaster: SoftwareRecipesTable apply default order_by
8469e58 bitbake: toaster: orm migrations Sort out migrations mess
78b6109 cml1/sstate: Fix missing getVar parameter
7e19f88 linux-yocto/4.1: capabilities backports
54bfbcc waf.bbclass: Remove --disable-static from EXTRA_OECONF
51fc304 gcc-5.3: backport fix for PR-target-65358
ed20c6c epiphany: Add libxml2-native to DEPENDS
2021f63 libsdl2: update to 2.0.4
947b3bf cmake: Update to 3.4.3.
4699483 sstate.bbclass: use oe.gpg_sign for gpg signing
db7c7c2 oe/gpg_sign: add 'passphrase' argument to detach_sign method
e845b75 sign_rpm.bbclass: do not store key details in signer instance
d5be866 oe/gpg_sign: add 'armor' argument to detach_sign()
03554b7 oe/gpg_sign: add verify() method
af7e516 ruby: break out ri-docs and rdoc into separate packages
8bcf139 insane.bbclass: print more info for build-deps and file-rdeps
5f3dfea curl: re-enable proxy support by default
1f61888 libtool: Don't hardcode grep paths
a3b996a cml1.bbclass: fix do_menuconfig
91bfe50 cups: upgrade to 2.1.3
eeac0a9 coreutils: upgrade to 8.25
01dc859 findutils: upgrade to 4.5.19
bf7d5f6 diffstat: upgrade to 1.61
247f3b4 grep: upgrade to 2.23
4e5e501 bitbake: data_smart: Drop default expand=False to getVarFlag [API change]
c7610aa bitbake: data_smart: Drop default expand=False to getVar [API change]
4f0ab27 bitbake: SignatureGeneratorBasic: make checksum cache file configurable
0cdf193 bitbake: MultiProcessCache: make cache filename configurable
ca552bb bitbake: FileChecksumCache: add get_checksums() method
8f61f2d bitbake: bb/runqueue: save task file dependency cache onto disk
5177b1e bitbake: SignatureGenerator: add method for saving the file checksum cache
97617fd bitbake: bb/cache: drop some unused arguments
5a87d8c bitbake: Allow Hob to run images on a custom simulator, other than qemu
7fc38ea gma500-gfx-check: Fixes infinite calling to modprobe gma500_gfx
be7b52a pulseaudio: 6.0 -> 8.0
c52b8f6 alsa-plugins: 1.0.29 -> 1.1.0
a231a4e alsa-utils: 1.0.29 -> 1.1.0
1adbb73 alsa-tools: 1.0.29 -> 1.1.0
3a82e2e avahi: update to version 0.6.32
14daeb5 no-static-libs.inc: Add libcap-native
c001863 libsdl2: Fix build with static libraries disabled
a46dc87 uboot-inc: Backport patch to fix Beaglebone Black bootloader
c7355b9 busybox: drop patches that are not valid anymore
47d0119 pcmciautils: Update SRC_URI
f37ac5b debianutils: Upgrade 4.5.1 -> 4.7
adfcaf2 busybox: Add musl config for _git recipe
46824dc debianutils: Fix SRC_URI to use debian snapshot
3df8701 nfs-utils: bugfix: adjust name of statd service unit
c15bf55 musl: Upgrade to 1.1.13+
07e7879 dpkg: Update to 1.18.4
5794b56 glew: upgrade to 1.13.0.
aea0746 glew: rewrite to use upstream build system
0b1c324 socat: Fix build with musl
04c6a48 binutils: Fix useless rpaths QA warning
eb6d14e image/populate_sdk: seprate variables to fix dependency
c9e5e34 gcc: Backport nios2 r31 fix
012460d sqlite3: update 3.10.2 -> 3.11.0
f770a6e insane: wrap autotools checks in inherits_class(autotools) checks
35011d9 cmake: don't inherit autotools
9cd64ed oeqa/selftest/bbtests: Test bitbake --setscene-only option
7e5b451 glew: don't put our CFLAGS into the pkgconfig file
b1145cc dbus: update large file patch
fad63e3 coreutils: fix problem with acl for 6.9 version
351039f gcc-4.9/5.3: Ignore -fdebug-prefix-map in producer string
7a11650 bitbake.conf: use target path as compile dir in debugging info
ef30119 glibc: Security fix CVE-2015-7547
c834ebc glibc: CVE-2015-8776
842177a glibc: CVE-2015-9761
efa1ae5 glibc: CVE-2015-8779
aefe1fa glibc: CVE-2015-8777.patch
152914f oeqa/parselogs: Whitelist dmi firmware failure message in 4.4 kernels
683ea31 rng-tools: Fix underquoted m4 and libgcrypt floating dependency
7a700f5 lib/qa.py: raise ValueError if file isn't an ELF
334e1b5 lib/oe/qa: ELFFile: check that a path is a file before opening it
11359e9 rng-tools: fix the build with musl
a258589 bitbake: bb.ui.knotty: prefix task messages with recipe/task
4bf8b21 bitbake: Move bb.{debug,note,..} into their own logging domain
3b35de3 layer.conf: Add gstreamer1.0-meta-base to SIGGEN_EXCLUDERECIPES_ABISAFE
14e9385 sstate: Add ca-certificates-native to postinst recipes list
73e53e4 nss: define RPATH variable for nss-native
6e4e9f7 Revert "lsbinitscripts: fix the path for mountpoint"
6db39e1 libunwind: Fix build on ppc
47896a7 dbus-glib: 0.104 -> 0.106
93d8fc1 conf/no-static-libs: add explicit rule for libical
637b44c runtime/systemd: Fix for boot time string parse error
ef5b8b4 security_flags: Add SECURITY_CFLAGS to TARGET_CC_ARCH for binutils
1387785 binutils: Use tip of 2.26 branch
da13f0b buildhistory.bbclass: remove out-dated information on request
a56da4a Remove obsolete references to exmap
8b21720 bitbake: knotty: Set exit failure code on runQueueTaskFailed events
a9223e2 bitbake: taskdata: Fix traceback issue with missing provider
7593756 bitbake: cooker: Improve cache handling
9cb38c1 poky: Disable static libs by default
f852014 bitbake.conf: Remove unhelpful default value for EXTRA_OEMAKE
b050c50 apmd: fix build with static libraries disabled
d585a71 oeqa: Update to handle domain specific references in build logs
9300749 libpng12: Handle no static libs
67ea65e ed_0.5: Handle --disable-static option
438d6d6 conf/distro/include: Add no-static-libs.inc
2eb19cc classes/buildhistory: fix for python function parsing change
1a3204c valgrind: Fix build with musl
e8b0da1 rpm: Fix build with musl
48144e0 gstreamer1.0-meta-base: Mark as machine specific due to COMBINED_FEATURES
ff8ca89 gdb-cross-canadian: Add missing virtual/* DEPENDS
120a160 e2fsprogs: Update to upstream version of a patch
5394ada gdb: Rationalise PACKAGECONFIG
ce0f8ab insane: Add --disable-static to UNKNOWN_CONFIGURE_WHITELIST
94abdb2 linux-yocto: Work around PAT issue on qemux86
6fb493a libgcrypt: update 1.6.4 -> 1.6.5
bf9ad22 musl: Upgrade to tip of tree
5d156bc oe-selftest: don't use specific tasks
80e8928 oe-selftest: pylinted wic tests
9b6dc9b wic-image-minimal: use uuid for root partition
ab7cb65 wic: fix processing of --use-uuid
51e0a8a oe-selftest: add new wic testcase
2100f82 wic-image-minimal: update .wks to boot by qemu
4b26601 wic-image-minimal: change IMAGE_FSTYPES
f799e21 oeqa/targetcontrol: support wic image type
7066f16 oeqa/targetcontrol: make ssh control optional
0ade658 qemurunner: add parameter to method 'start'
d083fec oe-selftest: remove unused parameter
c26a9c3 runqemu: support path/to/<image>-<machine>.wic
c7f0578 runqemu: don't set KERNEL for wic images
2c3a009 runqemu: add support for wic images
64d2f13 scripts/sstate-cache-management.sh: Change wording
6740dd5 qemu.inc: Add rng-tools to qemu images
ce3df21 rng-tools: Import recipe from meta-openembedded
36b43b2 lib/oe/terminal: set workdir for konsole terminal
03e1950 mmc-utils: upgrade to latest git version
b5b8003 ltp: Upgrade to 20160126 and fix build on musl
f6b3957 initscripts: start urandom after populate-volatiles
85ac8eb initscripts: populate-volatiles.sh: add mount-bind feature
be5b72c libdrm: don't detect components that have been disabled
5fc5996 buildhistory: Fix regex to handle versions without spaces
7c3d4c0 debian: Fix superfluous setting for RPROVIDES
2eba066 autotools: Fix interaction with bitbake -b
9c8fee9 autotools: Correct dependency search logic error
971fafb maintainers.inc: include libjpeg-turbo and mmc-utils
4e0b334 scripts/runqemu-internal: Work around qemux86 PAT bugs in linux 4.4.1
283a302 sanity: Bump minimum version to 1.29.0
1c2d632 bitbake: Bump version post release to 1.29.0
a12dcc4 base.bbclass: fix support for gitsm://
bc72f64 linux-yocto: Update SRCREV for genericx86* for 4.4
be89a1d linux-yocto: Update SRCREV for genericx86* for 4.1
4a8d20a poky: update qemu* to prefer 4.4 kernel
d255f4f linux-yocto/4.1: galileo backports and support
fdcb373 linux-yocto/4.1: update to v4.1.17
5688cab linux-yocto/4.4: update to v4.4.1
f9f93ae bitbake: cooker: gracefully shutdown parsers
1f7f077 bitbake: buildinfohelper: unset brbe variable when build finishes
9a6cb10 nativesdk-buildtools-perl-dummy.bb: Fix variable expansion in python code
5e978d7 classes/testsdk: do_testsdkext avoid STAGING_DIR/BASE_WORKDIR in PATH
f56e9aa freetype: update 2.6.2 -> 2.6.3
1ba1aa3 freetype: minor formatting improvements
0d5e611 piglit: upgrade SRCREV
72c6b62 libbsd: Security fix and update 0.8.2
78be954 gstreamer1.0-plugins-bad_git: fix gst_structure_get() etc compiler warnings
fdd8979 gstreamer1.0-plugins-good_git: fix gst_structure_get() compiler warning
a23a50e python-setuptools: Add python-compile on RDEPENDS
914ff14 qemu: Security fix CVE-2016-2198
0938353 qemu: Security fix CVE-2016-2197
1f3e1d1 curl: add PACKAGECONFIG options for less common / legacy protocols
19045ba toaster: tests Remove symlinks from toasteruitest folder
738a9b7 classes/sanity: check_perl_modules provide output when fail
e64ce73 oe-selftest: devtool: add another devtool add test
a5095d1 recipetool: create: set S when we set SRC_URI from local git repo
ca5a36c recipetool: create: convert http git URLs that don't end in .git but contain /git/
4c71afb recipetool: create: ensure URL parameters don't make it into the name
86f3464 devtool: add: fix adding from a local source directory
fa50153 devtool: modify: make -x the default behaviour
f767757 recipetool: create: determine name/version from github/bitbucket URLs
d94c7e3 recipetool: create: support cmake find_library directive
ddfe744 devtool: commit for extra tasks that modify source when extracting
e36cb6c classes/externalsrc: create symlinks for workdir and logs
20034c3 classes/externalsrc: disable rm_work when active
c38f253 uninative.bbclass: capture stdout/err from patchelf-uninative
9065222 db: update HOMEPAGE
f0d5478 mdadm: update to version 3.4
79d5041 iproute2: update to version 4.4.0
21e3b2a image_types_uboot: add cpio.gz.uboot to supported IMAGE_TYPES
6fab5fc recipetool.newappend: add -e/--edit argument
252f97e liburcu: Add nios2 support
e72ab70 strace: Fix build for arc, metag, nios2, or1k, tile
691277f udhcpc: specify full path for ip command calls
f141f0b alsa-lib: avoid including <sys/poll.h> directly
a1ad3d0 oprofile: Add nios2 support
fd7dd07 nspr: Add nios2 support
954dc45 guile: Fix nios2 support
611e3d8 binutils: Repair nios2 PLT and GP handling
027eac5 gstreamer1.0-meta-base: make gstreamer1.0-plugins-base-alsa conditional
056d82c curl: drop obsolete pkgconfig_fix.patch
0e62f01 iproute2: update to version 4.4.0
216e618 quota: update to version 4.03
25d2956 oeqa/selftest/sstatetests.py: check that PARALLEL_MAKE doesn't change signatures
2966016 bitbake.conf: remove unused ALLOWED_FLAGS
3bdeda5 libproxy: remove GPLv3 logic and spurious exports
86994fd libproxy: add PACKAGECONFIG control for gnome3
033d754 libproxy: replace PACKAGECONFIG equivalent with the real thing
e65a29e openssh: Properly skip ptrace test if tools are missing
e1a1e0b openssh: Fix regex that sets sftp-server path for tests
d7faf67 insane.bbclass: Support MicroBlaze with musl
9937c93 hdparm: Explicitly set EXTRA_OEMAKE as required
7475c4c qemu: Security fix CVE-2016-1568
4857511 xserver-xorg: Add PACKAGECONFIG for crypto libraries
34798fa mesa: upgrade 10.6.3 -> 11.1.1
7edea7c initrdscripts: fix mmc device as install target
c3ef2bb libsoup-2.4: Remove unnecessary gnutls dependency
04454b2 wpa-supplicant: Only depend on libgcrypt when needed
4de0ee6 systemd: Don't depend on gcrypt unnecessarily
0da96bf3 buildstats.bbclass: remove dead URL from comment
326592d Remove obsolete references to exmap
a0cc1c3 curl: update 7.47.0 -> 7.47.1
a0d3eb9 sign_package_feed.bbclass: fix task dependencies
8cb1e83 oe/gpg_sign: fix incorrect variable name
902a68f meta/conf/layer.conf: adapt to more flexible initramfs-framework RDEPENDS
5b2b343 tune-corei7.inc: tell qemu to emulate a matching processor
5b70ee4 pixz: fix upstream version check
62a6f97 webkitgtk: update to 2.10.7
1cd6912 libwnck3: update to 3.14.1
e53eef9 iso-codes: update to 3.65
30cf8aa bash-completion: fix upstream version check
8098256 gstreamer1.0: fix upstream check for unstable versions from git
c24b0ab ffmpeg: update to 2.8.6
9237097 python: merge python-elementtree into python-xml
5ac4172 piglit: add missing dependency on python-xml
4d3ca42 systemd: tighten timesyncd and journal-gateway user accounts
6be3031 systemd: extend PACKAGECONFIG flags
85728ec systemd: rename systemd-zsh to systemd-zsh-completion
22a2866 systemd: move some tools into systemd-extra-utils package
9909104 classes/useradd: handle whitespace only USERADD/GROUPADD/GROUPMEMS
e485686 systemd: realign packages list
41d0f83 systemd: move bash completion into separate package
9a80afd nettle.inc: drop duplicate LIC_FILES_CHKSUM and SRC_URI hashes
72ec267 gdb: drop unnecessary CC_FOR_BUILD etc exports
00d6b67 gdb: build fix for MIPS + musl libc
40e4e8c strace: build fix for MIPS + musl libc
299b426 uclibc: fetch from master branch not 1.0
4ac4d28 uclibc-ng: Bump up to 1.0.12 release
70bfd4c musl: Upgrade to tip of tree
d1496b4 e2fsprogs: Fix multiple xattr handling
9d4b526 cdrtools-native: Explicitly set EXTRA_OEMAKE as required
864797a oeqa/prservice: Fix whitespace problem
7cd8351 pseudo: uprev to 1.7.5
246b02e ptest-runner: Explicitly set EXTRA_OEMAKE as required
7932525 unzip: Explicitly set EXTRA_OEMAKE as required
4ef055c sysklogd: Explicitly set EXTRA_OEMAKE as required
625066b stat: Explicitly set EXTRA_OEMAKE as required
07e81c8 pigz: Explicitly set EXTRA_OEMAKE as required
936223b iputils: Explicitly set EXTRA_OEMAKE as required
1e3fdbb ed: Explicitly set EXTRA_OEMAKE as required
ef36b6f gptfdisk: Explicitly set EXTRA_OEMAKE as required
59ee206 dmidecode: Explicitly set EXTRA_OEMAKE as required
d17758a libacpi: Explicitly set EXTRA_OEMAKE as required
44e8d0f apmd: Explicitly set EXTRA_OEMAKE as required
961d898 perl: Explicitly set EXTRA_OEMAKE as required
ecb9c34 oeqa: Improve test failure messages
ae2f3a3 sstate: Ensure populate_lic sstate objects are cleaned
26f26e5 package_deb: Ensure allarch deb packages aren't target specific
b3a2065 base: Make do_cleansstate nostamp
37357ab classes/testimage: Fix exportTests function.
f895a61 classes/testsdk: Add help information on how to run tests.
e22fbce oeqa/sdkext/devtool.py: Add location test to ensure that devtool is the eSDK one.
92d0cc5 oeqa/sdkext: Add devtool basic tests for eSDK.
a619ea2 oeqa/oetest: Fix compatibility SDK tests using eSDK.
062dbd6 classes/populate_sdk_ext: Add SDK_EXT_TARGET_MANIFEST and SDK_EXT_HOST_MANIFEST
4cfdf17 testsdkext: Add skeleton for support Extensible SDK tests.
5580d7b classes/testsdk: Add compatibility SDK testsuite to eSDK
7181da7 oeqa/oetest: oeSDKTest when run a command redirect env output to null
f3c2ce2 classes/testsdk: Add function run_test_context
3577c35 oetest.py/TestContext: Move loadTests and runTests inside it.
8009418 testimage/testsdk: Move get test suites routine inside TestContext.
b588b80 testimage/testsdk: Modularize TestContext.
59791d1 toolchain-shar-extract.sh: Add proxy variable to new env.
abd8158 classes/testsdk: Add call to export_proxies on testsdkext.
42f2ac4 classes/testsdk: Add testsdkext task only install.
90590ab get_test_suites: Add sdkext type for load test suites.
2ecc319 populate_sdk_ext: Set TOOLCHAINEXT_OUTPUTNAME.
7b459be classes/testimage: Add defeault inherit for testsdk.
24326a9 classes/testsdk: Add new class testsdk.
3d1d30b testimage: Modularize helper functions for get test lists.
8b5ee36 bitbake.conf/base: Improve handling of SRCPV
947e526 oeqa: setup bitbake logger after tinfoil.shutdown
400f530 bitbake: build: Improve python execution tracebacks
aece748 bitbake: build/data: Don't expand python functions before execution [API change]
e39cfb1 bitbake: cooker: Don't expand python functions in variable dumps
f652b6b bitbake: data: Don't expand python functions for variable dependencies
d3e0c44 bitbake: data_smart: Avoid expanding anonymous python functions
e0eb2ea bitbake: toaster: models Remove manual transaction control from lsupdates
48622e1 bitbake: toaster: build section Improve display of builds when > 1 targets
4d0ba0f bitbake: toaster: templates make build data breadcrumb consistent
99184d7 bitbake: BBHandler/ast: Merge handMethod and handleMethodFlags
6ba69b4 bitbake: utils: Drop datastore function inspection during exception
f8a44b1 bitbake: cooker: extended dot styling
30c132b bitbake: toaster: Enable Image Customisation feature
5e14a8f bitbake: toaster: xhr_customrecipe_packages Add dependencies to included packages
749f5a6 bitbake: toaster: orm generate_recipe_content only exclude locale packages
6269411 bitbake: toaster: customrecipe page Add last successful build link and conditionals
8d5b61e bitbake: toaster: models Add update_package_list for CustomImageRecipe
86db0bd bitbake: toaster: orm Add last_updated field to CustomImageRecipe
18d8b17 bitbake: toaster: models add get_last_successful_built_target method
8885b7b bitbake: toaster: pkg_dependencies_popover just show direct dependencies
40f6eff bitbake: toaster: models add all_depends method for Package_DependencyManager
a8ab1c6 bitbake: toaster: buildinfohelper CustomImagePackage update dependency info
0fee829 bitbake: toaster: newcustomimage_modal add frontend name validation
cb6d290 bitbake: toaster: API CustomImageRecipe check the recipe name supplied is valid
5634a25 bitbake: toaster: views CustomRecipe API add size information to the package lists
6fbceb0 bitbake: toaster: models Invalidate ToasterTables cache when a m2m field changes
998f9af bitbake: toaster: customrecipe Add dependency tracking to package selection
9976e4f bitbake: toaster: tables move template logic into the pkg_add_rm_btn
d77c247 bitbake: toaster: CustomImageRecipe generate overwrite IMAGE_FEATURES
481dc11 bitbake: toaster: make locale packages uneditable in custom image page
a757d39 bitbake: toaster: include locale and packagegroup packages in custom image
baac458 bitbake: toaster: update custom image package table filters
efbffe3 bitbake: toaster: move recent builds query to model
b514785 bitbake: toaster: update customimagerecipe migration
df58f5b bitbake: toaster: add merge migration to resolve conflict
38f4913 bitbake: toaster: orm generate_recipe_file_contents Handler for require recipe
769017e bitbake: toaster: project builds Poll the server to get latest progress for build
971d65c bitbake: toaster: localhostbectrl Update the dirpath of customrecipe's base layer
6d9f342 bitbake: toaster: tables Check layer presence in project for customise_btn
76c0008 bitbake: toaster: toastergui tests Add addtional data to the setUp for new tables
70a078e bitbake: toaster: tables SelectPackagesTable rename recipe_id to custrecipeid
7e4c231 bitbake: toaster: toastergui tests Update package test to use CustomImagePackage
4b3c9d6 bitbake: toaster: customrecipe Add further front end features using new API
b213907 bitbake: toaster: xhr_customrecipe_packages add GET info for package response
a9668ee bitbake: toaster: xhr_customrecipe_id change to use CustomImagePackage
439314c bitbake: toaster: API allow CustomImageRecipe to be updated after creation
9ea4de6 bitbake: toaster: tables Change SelectPackagesTable to use ProjectPackage
20f400b bitbake: toaster: tables add recipe download link to CustomImagesTable
1c9ce1c bitbake: toaster: newcustomimage_modal use libtoaster method for new CustomRecipe
8b1d043 bitbake: toaster: libtoaster Add createCustomRecipe method
32048fa bitbake: toaster: orm Add convenience method to get all pkgs in a CustomImageRecipe
c80b7df bitbake: toaster: orm get_project_layer_versions to return layer_version objects
796e348 bitbake: toaster: toastergui tests Add unit test for download custom recipe
04d8c94 bitbake: toaster: toastergui tests Update to reflect changes to CustomImageRecipe
4e8a0aa bitbake: toaster: views xhr_customrecipe_packages clean up API
66b5608 bitbake: toaster: toastertable remove title from Show all in table
ce72896 bitbake: toaster: Add recipe details page
5f52614 bitbake: toaster: newcustomimage Move modal dialog out of newcustomimage template
2a3dd32 bitbake: toaster: Continue front end features to custom image recipe page.
d6e7e4a bitbake: toaster: tables Add table for Packages and update SelectPackagesTable
43f0a05 bitbake: toaster: views Add view to download custom recipe
2cf55af bitbake: toaster: move CustomImageRecipe generation to API entry point
c402ac2 bitbake: toaster: orm add CustomImageRecipe generate contents function
a6e4f94 bitbake: toaster: buildinfohelper Add the concept of CustomImagePackage
e1bfe1c bitbake: toaster: orm: Add db migration for new CustomImagePackage table
f760a78 bitbake: toaster: orm Add CustomImagePackage table
4117af2 bitbake: toaster: orm: Add db migration for new CustomImageRecipe inheritance change
1f10289 bitbake: toaster: orm make CustomImageRecipe inherit from Recipe
648753b bitbake: toaster: orm Add sum of dependencies size function to PackageDependencyManager
a92fc30 bitbake: toaster: tablejs Add an event handler to manually trigger a data reload
4c82878 bitbake: toaster: ToasterTables simplify filter function move common part to widget
3e1e8e6 bitbake: toaster: models fall back to a sensible string for no vcs reference
14d09c8 bitbake: toaster: localhostbecontroller CustomRecipe now base_recipe is Recipe
7d5d8d0 scripts/lib/bsp/engine: trailing whitespace cleanup
dfeda17 scripts/lib/bsp/engine: fix path separator
d482d84 maintainers: remove gtk-theme-torturer and gnome-mime-data
d0d85a4 bitbake: bb/fetch2: Move export_proxies function from wget to utils.
7226ce2 glibc-locale: fix QA warning
4a2f42f formfactor: add machconfig for Beaglebone
eb53c54 sstatetests: Fix after change to sstate populate_lic SWSPEC
a43b9ef gstreamer1.0-plugins-base: move freetype dependency into 1.6.3 recipe
fb4f05b gstreamer1.0-plugins-base_git: update to git master 1.7.1-79-g6414289
fc81c80 gstreamer1.0-plugins-bad_git: avoid including <sys/poll.h> directly
3f02474 gstreamer1.0-plugins-good_git: avoid including <sys/poll.h> directly
9b0a74a gstreamer1.0: avoid including <sys/poll.h> directly
f9e565e gmp_4.2.1: fix build for MIPS
6d570c8 gmp.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5
3aecdd9 gmp: move BBCLASSEXTEND = "native nativesdk" from gmp.inc into 6.1.0 recipe
263a65d gmp: move SRC_URI out of gmp.inc + minor reformatting
aacae25 image_types.bbclass: Embed IMAGE_NAME in ubinize config file
9c0d4ec toolchain-scripts: drop PYTHONHOME
6560f80 python: set PYTHONHOME for nativesdk
92ae4e2 gcc: musl related fixes for ppc/secure-plt and gthr
9e5222c gcc: Assume libssp and dl_iterate_phdr on musl
281bd41 security_flags: wipe security flags for gcc/glibc and related libraries
61a5875 security_flags: use -fstack-protector-strong
a07f2fd security_flags: ensure security flags only apply to target builds
8d57d1d gcc: Fix build on musl with -fstack-protector
eb134c6 isoimage-isohybrid.py: fix cpio working directory
8bedf76 glib-2.0: use the system libpcre
1ae132e libpcre: enable unicode properties by default
3adb8d5 python3: remove optimize by default patch
1df1ac9 security_flags.inc: don't do -pie for syslinux
562c75c neon: convert to PACKAGECONFIG
6228cf8 bitbake: toaster: reinstate ID on edit columns button
916c73d bitbake: cooker: shutdown cooker parser on shutdown
8857498 bitbake: fetch2/osc: Clean up old variable syntax
54da829 bitbake: fetch2/osc: Remove hardcoded url
c57ba52 cross-localedef-native: add ABI breaking glibc patch
0cc825f uninative: Improve error handling
576a248 patchelf: Add patch to handle large files
bbdbe00 package_manager.py: fix python indentation bug (opkg)
ea40a0b populate_sdk_ext: Make populate_sdk_ext depend on sdk_extra_conf
4f7656a populate_sdk_ext: Add support for a "minimal" type
71bb332 populate_sdk_ext: Don't set sdk_update_targets in the config
5b7a43e toolchain-scripts.bbclass: Use PYTHONPATH instead of PYTHONHOME
f1f8447 copy_buildsystem.py: Pass the nativelsb argument to gen-lockedsig-cache
b130805 gnome-mime-data: remove
12d5fa8 gtk-theme-torturer: remove from oe-core
659d755 openssl.inc: drop obsolete mtx-1 and mtx-2 over-rides
32b498c scripts/devtool: Add getVarFlag expand argument
ed5daa1 bitbake.conf/native/nativesdk: Set PKG_CONFIG_SYSTEM_ at top level
8fa2d52 pango: unset LDFLAGS when building gen_all_unicode
edfaa04 pango: merge bb and inc
00ccf51 e2fsprogs: Ensure we use the right mke2fs.conf when restoring from sstate
66a6ec2 nativesdk: Set PKG_CONFIG_SYSTEM_ variables
34e95b0 local.conf.sample.extended: Document HOW-TO enable systemd or busbox for init system
077d32e local.conf.sample: Remove trailing whitespaces
6ae662a bitbake: parse/ast: Mark anonymous functions as python functions
9913fd8 bitbake: codeparser: Improve handling of data.expand() dependencies
4628fe1 bitbake: lib/bb: Add expansion parameter to getVarFlag
b98866d bitbake: fetch2/gitsm: Fix when repository change submodules
390c2c1 bitbake: data_smart: Add missing expand parameter to getVar call
56454f6 bitbake: bitbake: prserv: do not clear umask when daemonizing
abf8a8f bitbake: bitbake: prserv: SIGTERM handling hung process
be032fc bitbake: bitbake: prserv: -wal and -shm sqlite lost when daemonizing
1e95ebd poky-tiny: Use musl for default system C library
6594bd5 maintainers.inc: Set me as Maintainer of QEMU.
86851d5 insane: Fix populate_sysroot sanity test path
d09a25e socat: upgrade to 1.7.3.1
fad264b libffi: move from recipes-gnome to recipes-support
d3753dd libffi: ensure sysroot paths are not in libffi.pc
c72614b syslinux: remove LDFLAGS manipulation
8ad11fc lttng-tools: Fix ptest installed la files
66ed16b gnutls: update 3.4.8 -> 3.4.9
149cb17 python-distutils: add missing dependency on python-email
3473962 nss-myhostname: Fix build on musl
42e37d7 linux-firmware: update to latest revision 52442afee
ce1bed7 license.bbclass: add LICENSE_CREATE_PACKAGE to perform_packagecopy vardeps
e43504b i2c-tools: point SRC_URI at Yocto source mirrors
2d7622c gnutls.inc: allow libidn support to be controlled via PACKAGECONFIG
60ebe1c gnutls.inc: add gmp to DEPENDS
935aa96 gnutls.inc: minor formatting improvements
3fa1c54 Revert "kernel/kernel-arch: Explicitly mapping between i386/x86_64 and x86 for kernel ARCH"
0b82af2 wic: isoimage-isohybrid: check for syslinux-native
9699441 formfactor: add machconfig for qemumips64
4701dc9 ncurses: use closing curly brackets in FILES_${PN}-tools variable
9d9f233 util-linux: Change ALTERNATIVE_PRIORITY above busybox
8f2306c mktemp: lower the priority of standalone mktemp package
6251846 libxsettings-client: drop obsolete disable_Os_option.patch
7894633 wic: default to empty bootloader config
090fb51 copy_buildsystem: add ability to exclude layers
8dc600f toaster.bbclass: reinstate scan for artifacts in the sdk directory
eee675b toaster.bbclass: attach image file scan postfunc to do_image_complete
0c0b072 meta: add ASSUME_PROVIDED dependency on wget-native for http fetches
f926610 gtk+3: Tweak getVar to use True, not 1
7fa6eeb classes/lib: Add expand parameter to getVarFlag
252e645 python-pycurl: remove unnecessary exports
9fd214d sstate: Fix SSTATE_SWSPEC only used by populate_lic tasks
4ea6a64 package.bbclass: Add data expansion to do_split_packages()
6ab5001 busybox/gtk/perl/base-passwd: Ensure data is correctly expanded
e8860f7 ref-manual: Fixed typo in FAQ 14.15 section.
9d2925e ref-manual: Updated FAQ entry regarding Proxy for SOCKS
29a44da ref-manual: Fixed type in LICENSE_CREATE_PACKAGE variable description
4181e58 ref-manual: Updated warning regarding libexecdir
0d8bd7d ref-manual: Added description for LICENSE_CREATE_PACKAGE variable.
6aca5b8 ref-manual: Added remove-libtool class
5e2201e toaster-manual: Updated the "Installation" to have TOASTER_DIR information
3aa162a p11-kit: fix packaging warnings
60c9759 piglit: don't use /tmp to write generated sources to
b33e440 libical: Work around hardcoded paths in pkgconfig file
a131b6e documentation.conf: align the documentation for DEBUG_OPTIMIZATION and FULL_OPTIMIZATION with bitbake.conf
974a8c0 pciutils: Explicitly set EXTRA_OEMAKE as required
2d3e6f3 openssl: Explicitly set EXTRA_OEMAKE as required
b07e161 dbus: add user sessions support
877eae1 dbus: use ${systemd_system_unitdir}
6010088 populate_sdk_ext: Add SSTATE_MIRRORS to config blacklist
70ec867 insane: add test for -dev packaging containing real libraries
38d6f1f python3: set INSANE_SKIP as libpython3.so is a trampoline library
4ac4023 p11-kit: fix module packaging
9a27010 libnl: package the libnl-cli modules in libnl-cli
111af1d remove-libtool: add new class
333dce4 gtk-immodules-cache.bbclass: fix immodules-cache path
b1e41f4 Revert "matchbox-keyboard: export GTK_IM_MODULE_FILE location"
ac1f311 directfb: use Yocto source mirrors for SRC_URI
4d80f7a gcc-configure-common.inc: drop --enable-target-optspace from configure
654eddc machine/include: drop tune-cortexm*.inc and tune-cortexr4.inc
322015a liboil: drop recipe from oe-core
41d50f9 boost: Fix build on soft-float ABI arm systems
07a91a6 libnss-mdns: Check for nss.h before using
1b34f55 db: Use cross libtool
64089c6 libtool-cross: Unset pre|post dep objects
457f417 docbook-xsl-stylesheets: create a link for easy refer
1ba62f9 pth: Remove dead code
a4a5d1f bitbake: cooker, bitbake-worker: Fix spelling of "received"
8f6b9c7 bitbake: cooker: Only start as many parse threads as we need
602da7c bitbake: knotty: Don't show errors for universe provider issues
1dd2d76 linux-yocto: Adds new genericx86 and genericx86-64 SRCREVs for kernel 4.4
b8fa9d3 poky: Add poky-world-exclude.inc and add qwt-as
5503a22 sstate: Revert using -m option to tar in sstate
6023798 libarchive-native: Disable libxml2 support
b09b054 pcmciautils: Fix makefile race
89df5f1 binutils: Use target provided zlib
c85c54f binutils: Upgrade to 2.26
ba2fdcd native.bbclass: Set CXXFLAGS from BUILD_CXXFLAGS not BUILD_CFLAGS
2394b15 gstreamer1.0-plugins-base: Add video crop supporting when convert frame
2724908 gstreamer1.0-plugins-bad: Fix memory leak of navigation thread
db81fc9 lib/oe/package_manager: remove package feed lists
c43da12 externalsrc: use shared CONFIGURESTAMPFILE if B=S
c6b8227 Make sure that the directory for CONFIGURESTAMPFILE exists
ca06179 autotools.bbclass: use oe_runmake instead of ${MAKE}
f4f9f2f gcc, qemuppc: Explicitly disable forcing SPE flags
691f7e4 pango.inc: misc dependency fixes
70efb8d pango.inc: limit ptest specific do_compile_prepend to target builds
c1273d4 systemtap_git.inc: do not immediate expand SELECTED_OPTIMIZATION
e631be2 glibc.inc: do not immediate expand SELECTED_OPTIMIZATION
770d9ff mkelfimage: fix target cflags leaks to host
c936bf0 base: Move COMPATIBLE_MACHINE out the scope of SOURCE_MIRROR_FETCH
3072361 bitbake: bitbake: BBUIHelper: Remove function findServerDetails
28c041c bitbake: fetch2: Simplify logic in verify_checksum()
5375e64 bitbake: bitbake: Set process names to be meaninful
5b234d1 bitbake: utils: Add ability to change the process name
0b06924 bitbake: data.py: avoid double newlines at the end of functions in emit_var()
68600ae bitbake: build.py: minor shell_trap_code() formatting tweaks
423a264 conf/distro/poky.conf: use example.com for connectivity check
6c058ce curl: update 7.46.0 -> 7.47.0 ( CVE-2016-0754 CVE-2016-0755 )
adbe63d openssl: update 1.0.2e -> 1.0.2f ( CVE-2016-0701 CVE-2015-3197 )
85b6679 autotools.bbclass: don't create subshell to delete configure scripts
2f1bcc1 sstate: Add back packagedata on packagedata dependencies
346b225 libical: update to 2.0.0
b696bb3 kexec: package kdump init script/configuration file correctly
51cebbf connman: fix crash with iptables 1.6
7f54fab autotools_stage.bbclass: remove it
07c4bc1 gdb-common.inc: add PACKAGECONFIG for readline
5869e35 tzdata: update to 2016a
c9cc707 tzcode: update to 2016a
aff2f58 glibc-testing.inc: drop pruning of PATCH_GET from the testglibc script
dfb9d41 gcc-cross.inc: drop pruning of PATCH_GET from the testgcc script
9e7d929 bitbake.conf: stop exporting PATCH_GET = "0"
5410aff sstate: Improve handling of useradd dependencies
9823802 gtk-icon-utils-native: Drop problematic dependency
6c04e0d glib.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5
83476b5 glib-2.0: drop add-march-i486-into-CFLAGS-automatically.patch
fab76ae glib-2.0: refresh configure-libtool.patch
593dcd4 systemd: fix systemctl enable script for template units
3c90507 glib: use bash-completion.bbclass
d88ed5d kmod: use bash-completion.bbclass
0f3780c git: use bash-completion.bbclass
9d20661 util-linux: use bash-completion.bbclass
0e5b0bf dbus-glib: use bash-completion.bbclass
9cddc0a bash-completion.bbclass: add class
ddb786c bash-completion: move in recipe from meta-oe
74e2f68 ffmpeg: add a recipe, and remove the libav recipe
eb7e554 lib/oe/patch: Make GitApplyTree._applypatch() support read-only .git/hooks
3ed566e gcc: fix hidden weak symbols by removing buggy gcc patch
51d9ba6 dpkg: fix CVE-2015-0860
f80d16e qemu.bbclass: clarify QEMU_EXTRAOPTIONS
3dca294 pango.inc: drop obsolete dependency on qemu-native
a16e9a2f dbus: upgrade to 1.10.6
7081458 buildhistory: fix the check for existence of a git repo
d74325e connman: tidy up connman-conf usage
79f4495 connman-conf: convert to systemd oneshot
5c35883 bitbake-whatchanged: avoid double do_ task name prefix
7881c02 netbase: add ipv6 host to /etc/hosts
93fcee6 linux-yocto/4.4: CVEs and preempt-rt update
07c182f linux-yocto/4.1: update to 4.1.16
7003698 gstreamer1.0-plugins-bad: fix compiler warnings with -Os in 1.7.1
6e90145 gstreamer1.0-plugins-good: fix compiler warnings with -Os in 1.7.1
3cd70c8 libsoup-2.4: add glib-2.0-native dependency
d5b3b97 libtirpc: remove stray .orig file from Use-netbsd-queue.h.patch
209066c ptest-runner: Add ptest-runner_2.0 recipe.
4953e26 musl: Upgrade to tip of tree
52413d0 libdrm: Refresh patch to match upstream submission
66e215f fts: Correct LIC_FILES_CHKSUM
be4c446 pth: Delete
df95988 elfutils: Fix build with uclibc/musl
047ad2c grub: Backport fix for largefile detection/use
956be0c oeqa/runtime/rpm: be more verbose if test_rpm_query_nonroot fails
3b5288f libc-package.bbclass: add LOCALE_UTF8_IS_DEFAULT
4f3ef90 ref-manual: Updated the BBMASK variable description.
b2b7214 dev-manual: Restored ptest-runner2 to ptest-runner
d484e58 ref-manual: Removed obsolete do_deploy statement from "Shared State"
7705b87 toaster-manual: Updated instructions for production setup.
4b4a8a6 ref-manual: Updated the SDK figure.
d7481ce ref-manual: Added do_image and do_image_complete tasks
d39e9d1 ref-manual: Rewrite of "Image Generation" and devtool text.
1e7735e ref-manual, mega-manual: Updated the Image Creation figure
fded4fa ref-manual: Updated configuration of auto.conf in closer look
9f192c8 dev-manual: Updated the devtool help examples.
4bbd39d dev-manual: Grammar fix to kickstart section.
75078dd dev-manual: Updated wic reference section
9ed7881 poky-ent: Grouped Fedora perl packages for niceness
3ac0416 local.conf.sample.extended: Update the info about BBMASK
d61d290 bitbake: bitbake-user-manual-ref-variables: Update the help for BBMASK
a948f52 bitbake: cooker: Allow BBMASK to contain multiple regular expressions
e82101a bitbake: bitbake-user-manual-metadata: Updated 'dir' flag
100d6c2 bitbake: bitbake-user-manual: Updated the example BitBake directory
11be341 documentation.conf: Update the help for BBMASK
3d2c0f5 cmake: update to 3.4.2
4364850 at-spi2-core: update to 2.18.3
c763940 webkitgtk: update to 2.10.5
1e95815 libsecret: update to 0.18.4
9259a43 freetype: update to 2.6.2
5ec6dbb gdk-pixbuf: update to 2.32.3
9c84fbc glib-2.0: update to 2.46.2
bd7278c gtk+3: update to 3.18.6
d609cd5 gtk+: update to 2.24.29
6197313 gtk-icon-utils-native: update to 3.18.6
1556f0e libsoup-2.4: update to 2.52.2
dff038a waffle: update to 1.5.2
89bd19f vala: update to 0.30.0
6c02099 rxvt-unicode: update to 9.22
245af2b btrfs-tools: Disable backtrace on musl
fa01d37 bsd-headers: Fix LICENCE and dev package RDEPENDS
05e11a5 gdb: Fix build failures on musl
72c1aa2 ltp: Add rdep on ldd
1d0332d argp-standalone: Fix build when S != B
9f22898 bitbake: fetch2/wget: fallback to GET if HEAD is rejected in checkstatus()
d11cc29 busybox: fix stop -vs- start typo in rcS script
9f4b088 mtools: keep v3.9.9 recipe in sync with the v4.0.18 version
2c14be3 gen-lockedsig-cache: fix bad destination path joining
9dea876 distutils-common-base: do not set PACKAGES - use defaults from bitbake.conf
4ead707 insane: remove unused variable assignment
44e9c3b meta: fix capitalisation in Upstream-Status
06b4572 pixman: only check even upstream versions
0f74387 gcr: check only even upstream versions
a2848ee avahi: Add patch to fix Win10 mDNS issues
04ef34f xf86-input-libinput: initial add 0.16.0
8a2dfa1 image.bbclass: check INITRAMFS_MAXSIZE
962cc37 systemd: make TEST_DIR configurable
9967746 bind: update to 9.10.3-P3
cac47db uninative: handle UNINATIVE_URL being file:///
9995814 uninative: fix path to patchelf-uninative
2495dfa scripts/wipe-sysroot: also delete uninative sysroot
bb97157 meta/lib: new module for handling GPG signing
aadb879 devtool: extract: use the correct datastore for builddir
fa801e7 busybox: backport upstream truncate open mode fix
6996b26 gstreamer1.0-plugins-base.inc: drop obsolete dependency on liboil
1c4a8cc e2fsprogs: disable blkid
0de8766 pango.inc: drop obsolete FULL_OPTIMIZATION over-ride
89a7ed5 devtool: add configure-help subcommand
84720c8 devtool: properly handle bb.build.FuncFailed when extracting source
c3f0f7b devtool: add: warn if modified recipe found in attic directory
e559b66 devtool: build-image: allow specifying packages to add to image
e00eac8 devtool: move edit-recipe to a separate module
6720bda image: Don't create tasks with '.' in the name
88ca227 rootfs-postcommands: fix allow-empty-password on read-only rootfs
fdac363 kernel: Clean DEPLOYDIR before do_deploy runs
c2231de gcc-cross-canadian: Add missing DEPENDS on virtual/${HOST_PREFIX}gcc-crosssdk
5fdedb6 libtirpc: Drop unneeded xz-native dependency
7a98fb7 libuser: Drop unneeded xz-native dependency
72f98ba bitbake: toaster: Update UI test runner
c192bd6 Revert "xz: Allow to work with ASSUME_PROVIDED xz-native"
6df607b acpid: upgrade to 2.0.26
7a52f67 build-perf-test.sh: add eSDK testing
5c367ec build-perf-test.sh: more generic timing function
44fee2b python3-pip: Upgrade to 8.0.0
9d95a9d orc: update HOMEPAGE
0c1c93e gstreamer1.0-plugins.inc: drop obsolete ${S}/po/Makefile.in.in workaround
be145ad busybox: Add support for busybox-init
716fa93 pulseaudio.inc: drop obsolete dependency on liboil
55bfaa2 sqlite3: update 3.10.0 -> 3.10.2
6bb1dd1 sqlite3.inc: add PACKAGECONFIG to support building against libedit
39f6a9e sqlite3.inc: dynamically link the sqlite3 command-line utility
9b2835e sqlite: formatting improvements, move more stuff into sqlite3.inc
89ed462 sqlite3.inc: drop obsolete config_BUILD_CC, etc exports
6188419 sqlite3.inc: fix readline PACKAGECONFIG
939de8d sqlite3: fix the parallel build fix patch
a304b82 weston: Add missing DEPENDS on wayland-native
4a5458f bitbake: fetch2: Don't show checksum warnings if a single checksum was supplied
e66599f uninative: Fix conflicts with normal sysroot
4833bee insane: Drop do_stage test
861c916 populate_sdk: Use pixz instead of xz
a1c35f3 lib/oe/sdk: Partially revert "sdk.py: fix conflicts of packages"
29c5eda uninative: Add fetch capability
b54fa25 pixz: Add 1.0.6
d47572d xz: Allow to work with ASSUME_PROVIDED xz-native
0aeb33f lib/oe/package_manager: prevent testing an undefined variable
c1f4e92 recipetool: create: better fix for fetch error handling
10c8d14 recipetool: create: fix extraction of name from URLs ending in /
b307e0a recipetool: create: extract SRC_URI from local git repositories
50e40fc devtool / recipetool: support specifying a subdirectory within the fetched source
7e1691d recipetool: create: strip quotes from values extracted from CMakeLists.txt
477fa84 gen-lockedsig-cache: copy correct native sstate into ext SDK
204e4ab toolchain-shar-extract.sh: improve behaviour when xz is not installed
979c8fb classes/populate_sdk*: add dependencies on script files
f220abc classes/populate_sdk_ext: drop ext-sdk-prepare.py when installing
b435225 devtool: add sdk-install subcommand
44d1a2a devtool: sdk-update: improve SDK update process robustness
3360baa devtool: sdk-update: improve temp directory handling
d193531 devtool: build: ensure pkgdata is written out
d3a4f72 classes/populate_sdk_ext: add option to bring in pkgdata for world
a9dfced linux-libc-headers: Port patches for linux-headers for musl
3cffa6d libsolv: Update to 0.6.17+
d9134cf glib-2.0: Fix locale location on musl
527cd95 syslinux: Set LD to avoid using build host ld
136db70 binutils: Fix gold linking errors due to unresolved R_ARM_MOVW_ABS_NC
704e342 puzzles: Silence warning on arm with clang
bee65f9 eglinfo: Fix build on raspberrypi
6296c0f mdadm: Fix build with musl
67eef11 gpgme: Define __error_t_defined on musl
368e838 console-tools: Fix header inclusion when not using glibc
5a8c935 uclibc: Update to 1.0.11
1113d58 unfs3: Depend on libtirpc when building on musl
2ecfc02 guile: Fix build with musl
2df08b8 bsd-headers: Package cdefs.h
29deaf0 musl: Create ld.so as a relative symlink
2d028b3 fts: Fix linker hash-style option
8dd1aa8 dosfstools: Correct cross-compile CFLAGS and fix build with musl
21550d1 nss: Undefine HAVE_SYS_CDEFS_H
92e6a7a apmd: Fix build with musl
5d661c5 pcmciautils: Fix parallel build and include sys/types.h
86795ff kexec-tools: Define _GNU_SOURCE for getting loff_t definition
ff8006f systemd: Skip parsing on musl based targets
f2856a1 oprofile: fix build with musl
226c450 portmap: Point to tirpc headers and libraries on musl
5512c2f nfs-utils: Disable tcp-wrappers for musl
06d0204 bsd-headers,musl: Add recipe for bsd missing features
c2c9202 tcf-agent: Implement canonicalize_file_name() for musl as well
f294813 chkconfig: Avoid using caddr_t
b2aca09 nspr: Drop older glibc code
c0976fc irda-utils: Fix header inclusions
a3f9721 iproute2: Fix build with musl
22333f0 libuser: Fix build when secure getenv is not there
ea9dc99 iputils: Use member based initialization for mrghdr struct
b207868 pax: Fix build with musl
1076499 tar: Fix build for musl based targets
e451023 rt-tests: Fix build with non-gcc compilers
68da390 webkitgtk: Fix build with clang/musl
da81635 console-tools: Include sys/types.h for u_char and u_short defs
205a07a sysklogd: untangle header inclusion maze
9f40dba babeltrace: Add missing header for MAXNAMLEN define
2458850 libunwind: backtrace APIs are glibc specific
abdfacb apt: Add support for building for musl targets
ec187d3 puzzles: Zero'ise structs before use
3cd0a8c dpkg: Add musleabi to known architectures
aaa8516 xinetd: Fix build with musl
93fb408 watchdog: Fix build with musl
7509ffd gzip: Fix build with musl
1d28cbc directfb: Fix build with musl
7b6b312 net-tools: Link with libintl on uclibc
ee1bfdb parted: Fix build with uclibc
ed5da2a mtools: Fix build with uclibc
5384f08 gnutls: Link with libuargp on uclibc
493e557 guile: Fix build with uclibc
1636f6f packagegroup-self-hosted.bb: Move glibc-gconv-ibm850 to glibc only case
3e7d7ab util-linux: Fix ptest builds on musl
77825f8 gnutls: Link with libargp on musl and depend on argp-standalone
1a6fe71 argp-standalone: Add recipe
a7d780c gdk-pixbuf: Fix latent build issue exposed by musl
f2cf5d3 xserver-xorg: Fix build with musl
b8de631 libcgroup: Add dependency on fts when building on musl
87c3e98 connman: include config.h for HAVE_STRUCT_IN6_PKTINFO_IPI6_ADDR
cc55fc7 fts: Add recipe
6e3950b tcp-wrappers: Fix build with musl
68f88a5 ppp: Fix build with musl
4972edd blktrace: Include <sys/types.h for dev_t
d629fa1 powertop: Include right headers for timval struct
063dc38 update-alternatives: when warning about alt_link==alt_target, say what PN
6baafa1 python-setuptools: Unify and upgrade python-setuptools and python3-setuptools to 19.4
f0e500e gstreamer1.0-libav: update git recipe to 1.7.1
90cbdfb gstreamer1.0-plugins-ugly: update git recipe to 1.7.1
6752484 gstreamer1.0-plugins-bad: update git recipe to 1.7.1
ad8f201 gstreamer1.0-plugins-good: update git recipe to 1.7.1
2ca9f20 gstreamer1.0-plugins-base: update git recipe to 1.7.1
3c7f2b8 gstreamer1.0: update git recipe to 1.7.1
7c810d0 gstreamer1.0-libav: update 1.6.2 -> 1.6.3
a4b8e9a gstreamer1.0-plugins-ugly: update 1.6.2 -> 1.6.3
8170e06 gstreamer1.0-plugins-bad: update 1.6.2 -> 1.6.3
497ebc9 gstreamer1.0-plugins-good: update 1.6.2 -> 1.6.3
3d87902 gstreamer1.0-plugins-base: update 1.6.2 -> 1.6.3
1e256ee gstreamer1.0: update 1.6.2 -> 1.6.3
dacf2aa gst-plugins-package.inc: drop perl RDEPEND for XXX-apps packages
676275f gstreamer1.0-plugins.inc: don't set base SRC_URI via python
852f098 gstreamer1.0-plugins.inc: drop obsolete lib-link.m4 workaround
a32ac26 gstreamer1.0-plugins-bad.inc: update hls dependency gnutls -> nettle
97e0752 gstreamer1.0-plugins-bad.inc: don't set ${S} or apply version specific patch
78e9361 gstreamer1.0-plugins-good.inc: remove duplicate --disable-examples
0edabfd gstreamer1.0-plugins.inc: convert GSTREAMER_1_0_DEBUG to a PACKAGECONFIG
81cd227 gstreamer1.0-plugins.inc: add missing glib-2.0-native dependency
a0b1e66 gstreamer1.0.inc: add missing glib-2.0-native dependency
e5fb79d gstreamer1.0-rtsp-server.inc: minor formatting improvements
434aa8e gstreamer1.0-omx: minor formatting improvements + update HOMEPAGE
69bcd33 gstreamer1.0-libav: minor formatting improvements + update HOMEPAGE
1d6e61a gstreamer1.0-plugins-ugly: minor formatting improvements
c45ce26 gstreamer1.0-plugins-bad: minor formatting improvements
c1ea981 gstreamer1.0-plugins-good: minor formatting improvements
beb8091 gstreamer1.0-plugins-base: minor formatting improvements
61f30b4 gstreamer1.0-plugins.inc: minor formatting improvements
981145a gstreamer1.0: minor formatting improvements
9f1a943 gst-plugins-package.inc: minor formatting improvements
9e08b69 gst-player: minor formatting improvements
a8ed2c8 valgrind: remove unused valgrind-remove-rpath.patch
e24123d emptytest: exclude from world builds
6808035 build-appliance-image: bump version to 14.0.0
eb418c3 insane.bbclass: fix package_qa_walk()
e185004 insane.bbclass: print all the QA messages
95fa36e weston: upgrade 1.8.0 -> 1.9.0
1bc0c89 wayland: upgrade 1.8.1 -> 1.9.0
03dae8e glib-2.0: fix the ptest
68c5e6d insane.bbclass:buildpaths: ignore ipkg/dpkg's CONTROL dir
258676b sstate: display the sysroot name when cleaning for clarity
f35b2e2 bitbake: set default libexecdir to $prefix/libexec
40f0c2d gawk: fix libexecdir/libdir/BPN confusion
2458f41 mesa: update SRC_URI
fdb12f9 e2fsprogs: set PV to 1.42.99+1.43+git${SRCPV}
9cf1ec0 valgrind: avoid neon for targets which don't support it
b191f58 valgrind: re-enable ARM intdiv and vcvt_fixed_float_VFP tests
b0b3412 valgrind: let valgrind determine its own optimisation flags
92abb5f meta/files/toolchain-shar-relocate.sh: Detect different python binaries and select one that exists.
924e2c3 python-nose: upgrade to 1.3.7
02440b5 python-native: Make python-native also RPROVIDE python-unittest-native
b7ca05d linux-libc-headers: update to 4.4
f73ee59 libpng12: upgrade to 1.2.56
3a59486 libpng: upgrade to 1.6.21
63a49f8 libtirpc: remove redundant va_list patch
55a8df2 perl: Upgrade to 5.22.1
a840588 oeqa/selftest/signing: use temporary rpmdb
65c1de9 kexec-tools: inherit update-rc.d
ba837f1 autotools: don't output the full config.log on configure failure
3e3cb62 bitbake.conf: Remove horrible variable expansion hacks
b963efb mesa: add missing wayland-native build dependency
9dd6c81 maintainers.inc: Correct maintainership for several packages
bd1a534 bitbake: toaster: run bitbake server with --read option
76a281c bitbake: taskdata: add the ability to access world targets list
11a1f49 bitbake: cache.py: check existence before add to cachedata.rproviders
05c1775 bitbake: taskdata.py: add RuntimeProviders to close matches
cf9cb65 bitbake: data_smart: Don't show exceptions for EOL literals
b80219e udev: Add 2 patches to support 4.4 kernel
1013385 gcc-runtime.inc: provide libquadmath
60b237f kexec: update supported architecture list
92a0032 strace: update 4.10 -> 4.11
0aa8169 strace: fix ARCH definition in tests/Makefile
2408149 strace: remove need for git-version-gen script
9ca6a5f strace: fix --disable-aio configure option
dd90f32 strace: drop unnecessary dependency on acl
aadae7b libnewt: Fix linking error due missing symbols
571289d lib/oe/package_manager.py: Remove list() from PkgsList class
6ebda8e lib/oe/rootfs: Use list_pkgs() instead of list()
03075f6 lib/oe/utils: Add function format_pkg_list()
c708411 lib/oe/package_manager: Add list_pkgs() to PkgsList class
113e136 python3: Minor upgrade 3.5.0 -> 3.5.1
918149d python-numpy: upgrade to 1.10.4
eae7584 swig: upgrade to 3.0.8
21f7677 python-scons: upgrade to 2.4.1
7721652 python-pycurl: upgrade to 7.21.5
2ef401f python-mako: upgrade to 1.0.3
2a608cc python-setuptools: Upgrade to 19.2
6395bc8 python3-setuptools: upgrade to 19.2
40738af python: Upgrade 2.7.9 > 2.7.11
35855a0 wic: pylinted ksparser module
e3b3bcf wic: add help for 'include' command
bfaabe5 wic: move parts of canned .wks into common.wks.inc
50a3dc5 wic: implement search of includes
15ea180 wic: refactor get_boot_config
d304162 wic: ksparser: add support for include
3fc6aaa wic: do not remove build dir in source plugins
8d34eea wic: use unique partition number
43b4058 wic: move wks parsing code to KickStart._parse
3860640 nss: update to 3.21
ea39ad0 libjpeg-turbo: fix upstream version check (sort of)
48a8a89 libical: fix upstream version check
c6f71c5 gnutls: update to 3.4.8
7a80f84 sysstat: fix upstream version check
2aabf9a pbzip2: update to 1.1.13
77aee28 ncurses: fix upstream version check
56e4ff6 libsolv: fix upstream version check
d46bc77 e2fsprogs: fix upstream version check
0436e3f build-appliance-image: bump version to 14.0
a206a19 btrfs-tools: update to 4.4
a1790bc bootchart2: update to 0.14.8
68c7113 poky.conf: Delete BB_SIGNATURE_HANDLER settings
0916235 rpm: remove bashisms: [ x == x ] -> [ x = x ]
2dbd61f uclibc: remove a use of immediate expansion and oe_filter_out ()
32eeb00 gcc-runtime: switch to removal override syntax to modify CXXFLAGS
c886a78 bitbake: tests/codeparser.py: Add filename/lineno flags to test variable
f130033 bitbake: toaster: write variables to toaster.conf
1835768 sstate: replace verbose manifest removal with a single count
d4c721a libdrm: Upgrade 2.4.65 -> 2.4.66
b5508a8 slang: Add dependency on ncurses
27b2df2 valgrind: make it explicit that valgrind supports armv7a and above
5dc38a3 sign_rpm.bbclass: fix task dependencies
27c39c4 opkg-utils: store alternatives in nonarch_libdir
77fde15 security_flags.inc: remove obsolete workarounds for curl
31ce027 cups: update systemd support
a4b48c2 coreutils: Add xattr PACKAGECONFIG
7a0b1c1 oeqa/runtime/parselogs: use -F to search fixed strings for grep
b8e11e2 libinput: Upgrade 0.21.0 -> 1.1.4
a9f2e87 postinst-intercepts: always use set -e
de0848f maintainers: mark Khem as nominal owner for uclibc
3235f5e formfactor: remove unused beagleboard configuration
6c64700 alsa-state: remove beagleboard configuration
f0d47a6 bitbake: Revert "runqueue.py: Ensure one setscene function doesn't mask out another which needs to run"
9e867ef sstate: Add packagedata to list of tasks not to recurse
5e881c1 classes/populate_sdk_ext: fix task dependency regression
2e9f092 image: Handle image types containing '-' correctly
0612ca4 oe-selftest: devtool: fix test_devtool_add_library if python was built first
c1492c4 recipetool: create: add a couple more license checksums
2c8c9fe recipetool: create: add basic support for extracting dependencies from cmake
3eb397f recipetool: create: force GL libraries to virtual/*
726dbda recipetool: create: move dependency mapping code to RecipeHandler
788e4bb recipetool: create: fix overzealous mapping of git URLs
ece0a2e recipetool: create: support additional autoconf macros from autoconf-archive
903d471 recipetool: create: detect flex/bison dependency
a66f4ac recipetool: create: pick up boost macros in configure.ac
dbe91a3 recipetool: create: improve extraction of pkg-config / lib deps
e7bedb9 wic: rename kickstarter.py -> ksparser.py
3bb6ea6 wic: override ArgumentParser.error
d652203 wic: removed unused imports
d2090a6 wic: improve processing of parseing errors
1ed97cc wic: catch KickStartError
bda77fd wic: add custom exception KickStartError
ef211a5 bootimg/image-vm/image-live: Improve image dependencies
0910bc6 image: Always run do_rootfs_wicenv
12e37e7 selftest/buildhistory: Improve test to remove sources of error
05716dd bootimg/image: Enhance bootimg to respect RM_OLD_IMAGE
1c869a9 rootfs-postcommands: Ensure license manifests respect RM_OLD_IMAGE
d27491b image: Ensure we don't expand TMPDIR in image commands
ce8a206 image: Fix instability of do_image_* checksums
fb1654f image: Fix wic environment issues
1da8f52 insane: Start to clean up do_configure_qa code
dd28695 insane: Clean up horrible return value processing code
839fb18 e2fsprogs: fix PV
b1236dc e2fsprogs: add PACKAGECONFIG for fuse
f98e11c bitbake: toastergui: make artifact download more robust
68f3e1e bitbake: toasterui: log OSErrorException metadata events
fb94754 bitbake: toasterui: listen for bb.event.MetadataEvent
a2f23fa openssh: CVE-2016-1907
320a319 license.bbclass: fix license manifest
4339a82 wic/help.py: document requirements for valid fstab generation
d688df8 glib-2.0: add dependency glib-2.0-native back
76e35f1 kernel-yocto.bbclass: move do_kernel_link_vmlinux() into kernel.bbclass
d453fa1 kernel-yocto.bbclass: remove do_kernel_link_vmlinux from SRCTREECOVEREDTASKS
2b92f88 libarchive: Add bsdtar and bsdcpio packages
e246905 toaster.bbclass: Separate artifact dump from image file dump
4f481bc pax-utils: 1.0.5 -> 1.1.4
f9974f2 sqlite3: upgrade to version 3.10.0
cd7910d connman: upgrade to 1.31
b9169b7 python3: add missing dependency on PN-misc to PN-modules
4b4dea7 useradd-staticids.bbclass: Remove unnecessary spaces
4f2c352 useradd-staticids.bbclass: Read passwd/group files before parsing
4cbdb15 useradd-staticids.bbclass: Simplify the logic for when to add groups
b18e40c useradd-staticids.bbclass: Simplify some logic
b689aa0 useradd-staticids.bbclass: Make --no-user-group have effect
c03ea8d useradd-staticids.bbclass: Treat mutually exclusive options as such
af8b005 wic: get rid of 2 getters
2573e28 wic: get rid of set_size and set_source_file setters
5cd222b wic: get rid of get_rootfs and set_rootfs
4d5d5dd wic: get rid of get_timeout getter
26fb2a1 wic: adjust code for new data structure
c827238 wic: remove pykickstart code
c15ea82 wic: use new kickstart parser
f572f44 wic: add kickstart parser module
e5e1905 wic: add partition module
180f170 alsa-lib: 1.0.29 -> 1.1.0
a8c25af matchbox-keyboard: export GTK_IM_MODULE_FILE location
d75cb1f xf86-input-evdev: upgrade to 2.10.1
2283732 menu-cache: upgrade to 1.0.1
ec7e406 libxi: upgrade to 1.7.6
86f3f25 librsvg: upgrade to 2.40.13
72dd806 libgpg-error: upgrade to 1.21
3c02fe0 libevdev: upgrade to 1.4.6
33e9930 libcroco: upgrade to 0.6.11
5b63c44 gsettings-desktop-schemas: upgrade to 3.19.3
dfff167 gpgme: upgrade to 1.6.0
5abb691 u-boot: Update to 2016.01 release
e9280d1 linux-yocto: introduce v4.4 standard/preempt-rt/standard kernel
8c3276e e2fsprogs: 1.42.9 -> 1.43 (master)
b248e55 bitbake.conf: rename python-native-runtime
65d0bfc net-tools_1.60-26.bb: Fix do_patch dependency error
99923fc ncurses: 5.9 0 -> 6.0
44d283a autotools.bbclass: use relative path to run configure script
b2f1de3 glibc-initial.inc: use relative path to run configure
0fe6e2d bitbake: toaster: increase timeout
a5f34bc poky.ent: Added "perl-bignum" package for Fedora
afc6cba dev-manual: Updated "Running ptset" section
ec047ad yocto-project-qs: Updated the "Next Steps" section
57ddbe8 ref-manual: Removed all variables related to "QMAKE"
7814b33 ref-manual: Updates to cull out qt4 stuff.
bf81969 toaster-manual: Updates on how to start Toaster.
798e8b8 bitbake: toastergui: code formatting and clean-up
c4b5011 bitbake: toaster tests: fix Django tests for new ToasterTable pages
88a262c bitbake: toastergui: remove unused views and template code
059a274 bitbake: toastergui: fix error and warning counts for builds
4103e0c bitbake: toastergui: make "Apply" button state depend on filter range
6c2d88f bitbake: toastergui: mute label for filter actions with no records
f08730a bitbake: toastergui: set default visible and hideable columns
112f374 bitbake: toastergui: serialise decimals correctly
e024aab bitbake: toastergui: streamline construction of filter objects
fcb20f9 bitbake: toastergui: ensure filter_value updates
f9c46f5 bitbake: toastergui: don't hide all elements with .col class
eaae82a bitbake: toastergui: convert project builds page to ToasterTable
33b011c bitbake: toastergui: implement "today" and "yesterday" filters
f8d383d bitbake: toastergui: implement date range filters for builds
b929889 bitbake: toastergui: show recent builds on all builds page
1a4b203 bitbake: toastergui: switch off filter highlights when inactive
809046c bitbake: toastergui: refactor ToasterTable filtering
294579b bitbake: toastergui: convert all builds page to ToasterTable
6c12ca7 bitbake: toastergui: use event delegates for hover help elements
ef93dce bitbake: toastergui: switch projects/ view to ToasterTable
417f1d3 bitbake: toaster: check inferred file suffixes against list of known types
c02ee05 bitbake: toaster: move image file suffix list to model
d29e4cd bitbake: toastergui: use ToasterTable for projects page
b1256db openssh: update to 7.1p2
c0e9f2d kernel/kernel-arch: Explicitly mapping between i386/x86_64 and x86 for kernel ARCH
f8508de bitbake: Revert "fetch/git: Change to use clearer ssh url syntax for broken servers"
b567235 image/image-live: Add back IMAGE_TYPES_MASKED support
e914e2a image.bbclass: Handle image base type dependency properly
ad32f65 autoconf: add missing perl-module-file-find to RDEPENDS
d83dfe6 ca-certificates: update to 20160104
4440560 epiphany: upgrade to 3.18.3
dcf54b4 iso-codes: upgrade to 3.64
d7bee35 lighttpd: upgrade to 1.4.39
08c8923 libwebp: upgrade to 0.5.0
cf0aea7 classes/populate_sdk_ext: avoid unnecessary sstate being brought in
ea29bec insane/package: Fix cases where QA errors aren't fatal
2e620a4 classes/populate_sdk_ext: check that extensible SDK prepared correctly
4685c33 classes/buildhistory: save auto.conf and bblayers.conf for extensible SDK
39f6472 classes/populate_sdk_ext: support auto.conf
91877aa classes/populate_sdk_ext.bbclass: handle if local.conf doesn't end with a newline
764c927 util-linux: create util-linux-runuser iff pam in DISTRO_FEATURES
95dce70 rsync: 3.1.1 -> 3.1.2
38aa0fc less: 479 -> 481
4cb2269 iputils: s20121221 -> s20151218
fe47dd7 wget: 1.17 -> 1.17.1
79886e9 git: 2.5.0 -> 2.7.0
d3e16b8 file: 5.24 -> 5.25
3549abc autogen-native: 5.18.5 -> 5.18.6
fb14627 curl: upgrade to 7.46
eaf88d7 xz: upgrade to 5.2.2
8516ff7 sysstat: upgrade to 11.2.0
ae73be1 at: upgrade to 3.18
21efab7 kmod: upgrade to 22
c88efae resolvconf: upgrade to 1.78
6729889 pciutils: upgrade to 3.4.1
edd319c gnupg: 2.1.7 -> 2.1.10
78b58b8 help2man-native: 1.47.1 -> 1.47.3
ac0e0d5 man-pages: 4.02 -> 4.04
1e0cbb9 libgcrypt: 1.6.3 -> 1.6.4
372c23d xmlto: 0.0.26 -> 0.0.28
aaafe33 elfutils: 0.163 -> 0.164
38901a7 dhcp: 4.3.2 -> 4.3.3
ea05e05 image.bbclass: Unconditional includes of populate_sdk_ext fails
c08f272 tcmode-default.inc: Fix preferred provider nativesdk-sdk_prefix-libc-initial
5d2f783 dhcp: search libxml2 for bind
b69652d tzdata: remove bashism
7c7c249 harfbuzz: update 1.1.2 -> 1.1.3
84623dc libpostproc: duplicate armv7a over-rides for armv7ve
1744198 libav.inc: duplicate armv7a over-rides for armv7ve
102dfa1 gcc-configure-common.inc: duplicate armv7a over-ride for armv7ve
b08dfb5 subversion: Upgrade 1.9.2 -> 1.9.3
d6fae0c lttng-ust: Upgrade to 2.7.1
a9cc9b5 lttng-tools: Upgrade to 2.7.1
6b02575 lttng-modules: Upgrade to 2.7.1
a378430 gdb: upgrade to 7.10.1
92cc02f linux-yocto: Update Genericx86* BSPs to 4.1.15
da43a56 bitbake: Revert "fetch2/local.py: avoid using PREMIRROR"
96a34e7 conf/distro/poky-tiny: correctly disable python in opkg-utils
1724ffd bitbake: fetch2/git.py: Add missing "errno" module import.
74fa824 bitbake: bitbake: clean up stamp-base related codes
f3f769a local.conf.sample: add qemumips64
43328fe bitbake: runqueue: Fix setscene task dependencies
7b905ca bitbake: toaster: settings Add uid to the toaster cache dir
dff7a27 bitbake: toaster: show 'satisfied via' text for reverse deps
89f4932 bitbake: toaster: show 'satisfied via' text for build deps
febb898 bitbake: toaster: show list of provides for the recipe
2ff4ccb bitbake: buildinfohelper: add provides info to the db
16a81fb bitbake: toaster: add Provider model
6a28ed3 bitbake: buildinfohelper: use providermap
f2b7252 bitbake: cooker: add providermap to dep_tree
7e380d4 bitbake: taskdata: refactor get_providermap
46731da bitbake: main/runqueue: Add --setscene-only option to bitbake
34f8db9 update_font_cache: only scan system font directories
e5c011b Add "CVE:" tag to current patches in OE-core
f04fb88 scripts/create-pull-request: fix git request-pull syntax
928ceb6 qt4: fix-for-mips-n32.patch: remove it
c4a3258 util-linux: create util-linux-runuser package
554ca68 valgrind: include aarch64 in COMPATIBLE_HOST
0ce775a valgrind: update to 3.11.0
21a94f6 valgrind: don't restrict to armv7a
b8ebac9 DpkgRootfs: Fix logcheck_error false-positive when use multilib
e265fbb package_deb.bbclass: add 'Multi-Arch: foreign' tag to allarch packages
4aeb69d package_manager.py: fixes for multilib deb packaging builds
9ea7428 package_deb.bbclass, cross-canadian.bbclass: DPKG_ARCH mapping function
72e6932 connman.inc: add missing RDEPENDS
675ff42 meta: rename perl-native-runtime
3f4fb39 dbus: support large-file for stat64
0d5e41f freetype: enable out-of-tree builds, and use host zlib
8f2ab19 bluez5: upgrade to 5.37
11f5a42 cogl-1.0: fix may be used uninitialized error
235606f oeqa/runtime/logrotate: fix hardcoded root directory
cce6c3e oeqa/runtime/smart: fix hardcoded root directory
cd2cf1f boost: update to 1.60.0
afc0255 bitbake.conf: remove 'stamp-base'
c8fef7f gcc5: Fix build on NIOS2
eda3947 rpmresolve.c: Fix unfreed pointers that keep DB opened
3c8a451 tzdata: Make /etc/timezone optional
b80da02 systemd: arrange for volatile /etc/resolv.conf
5548a76 systemd: add myhostname to nsswitch.conf
d6bc841 opkg-utils: add update-alternatives PACKAGECONFIG
c3b96ff linux-dtb.inc: use absolute upd-alt paths
3ad08c0 uclibc: Upgrade to 1.0.10
74c3667 populate_sdk_ext: Pass excluded_targets as a list to prune_lockedsigs
e306d54 populate_sdk_ext: Change to include siginfo and non sstate task sigs
e1a558a populate_sdk: Switch from bzip2 to xz
3341f3f classes: Fix do_rootfs references
0a4e1f9 image: Create separate tasks for rootfs construction
fdced52 image: Move pre/post process commands to bbclass
cdc0aee image.bbclass: Separate out image generation into a new task, do_image
0269219 populate_sdk_ext: Use new --setscene-only option to bitbake instead of workarounds
1ee0842 sstatesig: Handle special case of gcc-source shared-workdir for printdiff
d93c212 bitbake.conf: add virtual/libiconv-native to ASSUME_PROVIDED
b2fe2a8 devtool: build: support using BBCLASSEXTENDed names
38ed039 devtool: reset: support recipes with BBCLASSEXTEND
532f429 devtool: refactor code for getting local recipe file
ec90168 devtool: add: support adding a native variant
99e3872 devtool: reset: do clean for multiple recipes at once with -a
5ef716c recipetool: create: support creating standalone native/nativesdk recipes
1e503c0 recipetool: create: lower case name when determining from filename
4deed25 devtool: sdk-update: add option to skip preparation step
d586a11 devtool: sdk-update: fix error checking
c1b7d83 devtool: sdk-update: fix metadata update step
efead10 devtool: sdk-update: fix not using updateserver config file option
9348c91 classes/populate_sdk_ext: disable signature warnings
d44dcd7 classes/populate_sdk_ext: fix cascading from preparation failure
d11051c scripts/oe-publish-sdk: add missing call to git update-server-info
fbc2147 libbsd: upgrade to 0.8.1
221d864 bitbake: fetch/git: Change to use clearer ssh url syntax for broken servers
46d62d0 bitbake: knotty: Use non-interactive mode as fallback for dumb terminals
bfa7859 bitbake: cooker: fix findFilesMatchingInDir documentation
3d42737 bitbake: cooker: use in instead of count
0e83229 maintainers.inc: remove x11vnc
d914c7f meta-yocto: drop qt4 references
0f3ad7c scripts/yocto-layer: Avoids duplication of "meta-" prefix
220ef32 poky-lsb/poky-tiny: update preferred kernel to 4.1
b82e228 yocto-bsp: remove 3.14 and 3.19 bbappends
685daeb conf/local.conf.sample: comment out ASSUME_PROVIDED=libsdl-native
2c5e7e0 image: Really remove lockfiles flag
a500e3a boost: ensure boost to remain an empty metapackage
b151506 image_types.bbclass: Rebuild when WICVARS change
eb4159c gccmakedep: fix buildpaths qa check
f54e53c bash: fix buildpaths qa check error
6d111c8 testimage: remove VNC test, x11vnc isn't in oe-core anymore
8bec5c5 x11vnc: remove all references to moved package
8f865e2 x11vnc: move recipe to meta-oe
ae1fc96 classes/buildhistory: actually use KiB in extensible SDK sizes files
84f66b5 x11vnc: move recipe to meta-oe
c44599d readline: move inputrc into readline
f29d642 tune-*: use mcpu instead of mtune for ARM tunes
c6a1991 arch-armv7ve: add tune include for armv7ve and use it from cortexa7 and cortexa15
21d61fa cortexa{7,15,17}: add VFPv4 tunes
7f2cb68 feature-arm-vfp.inc: Further simplify with TUNE_CCARGS_MFLOAT
e9b2ffc feature-arm-{neon,vfp}.inc: refactor and fix issues
45f726c arch-armv7a.inc: add vfpv4 support also to softfp and big endiand tunes
ebe8358 arch-armv7a.inc: Fix PACKAGE_EXTRA_ARCHS for tune-armv7atb-vfpv3, tune-armv7atb-vfpv3d16, cortexa7thf-neon-vfpv4
9280a8e arch-armv5.inc: drop duplicate ARMPKGSFX_DSP and PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp
46d6b0e arch-armv[456]*.inc: improve indentation like armv7a
860663a arm/arch-arm*, tune-cortexa*, tune-thunderx.inc, powerpac/arch-powerpc64.inc: Use normal assignment
8c483a1 arch-armv7a, tune-cortexa*: improve indentation
7498b91 arch-armv7a, tune-cortexa*: improve comment VFP -> HF
bb9b581 arch-armv7a: add missing space before ?=
15f8344 tune-cortexr4.inc: fix PACKAGE_EXTRA_ARCHS
e2736f7 sanity.bbclass: add more information to error message about TUNE_PKGARCH missing in PACKAGE_ARCHS
b68d947 mkefidisk.sh: add boot log on console
62d7c97 mkefidisk.sh: add startup script for automated boot
5aa3b93 oeqa/selftest/recipetool: update for libjpeg-turbo migration
ffa7469 libjpeg: Replace libjpeg with libjpeg-turbo
29d273f python3: fix installed-vs-shipped when 64bit + multilib
db7cee6 pulseaudio: add PACKAGECONFIG for lirc
b900ec8 sstate-sysroot-cruft.sh: Extend the whitelist
20843fa iptables: upgrade to 1.6.0
c2bda6c scripts/oe-selftest: Allow to run tests on random/all MACHINEs
8e1435e selftest: Added testcase decorators for 2 tests
32f332c oe-selftest: New option --list-tests
17d886b oe-selftest: Improved --list-classes when determining test names
4ec2da7 selftest: moved tc test_buildhistory_does_not_change_signatures
02d259c scripts/oe-selftest: Remove extra coverage data added to unittests
30c06a4 expat: CVE-2015-1283
315bdc8 packagegroup-core-x11-sato: enable pcmanfm on mips
a3e26f9 wic: rawcopy: Copy source file to build folder
d6e0da4 grub2: Fix CVE-2015-8370
bb663b0 systemd: enable compatibility libraries by default
3fea163 systemd: add more compression and importd PACKAGECONFIGs
d462b70 gcc-sanitizers: link directly against sysroot libstc++
3eb6135 openjade: Fix build if not installing libtool .la files
6308c47 valgrind: Define __UCLIBC__ for uclibc based systems
3d19a1e security_flags.inc: disable -fstack-protector-XXX for valgrind
807ed8a meta/conf/layer.conf: bump layer version due to Qt4 removal
4fb3e05 packagegroup-core-lsb: treat qt4 packages same as qt3 packages
8b11ed8 qt4: remove recipes and classes
0baadc8 toaster-manual: Updates to toaster use chapter.
908bbff ref-manual: Updated the list of supported image types.
5d27451 dev-manual: Added the --configfile bootloader option.
7b3b1f9 dev-manual: Added three new wic option descriptions.
eeffa64 dev-manual: Added the --overhead-factor wic option description.
2beb19b dev-manual: Added the --extra-space wic option description.
95851df dev-manual: Added wic --notable option description.
88a2794 dev-manual:
8bdc707 sdk-manual: Initial Manual framework
f1f7625 bsp-guide: Updated the license statement.
6686a31 dev-manual: Correction to the KVM stuff in the runqemu commands.
ccc830d documentation: Prepare for 2.1 builds
7af9314 mega-manual: Added four new figures for GUI example.
f8185ff bitbake: ast: Add filename/lineno to mapped functions
a178c5a bitbake: main: kill server without queue setup
773700d bitbake: xmplrpc: split connect method
05b4fbc bitbake: uievent: refactor retry loop
ebc169c bitbake: uievent: get rid of EventHandler attribute
4e0de6e bitbake: uievent: add error to registerEventHandler return
01419d5 bitbake: cooker: add state.get_name method
763506d bitbake: fetch2/__init__.py: Add support for 7-Zip
f5bfc1c bitbake: utils: Remove double compile from better_compile
b4141f6 bitbake: fetch2/local.py: avoid using PREMIRROR
1ad3595 bitbake: siggen: Change exception note into a warning
4ba49ac bitbake: data: Drop misleading ExpansionError exception
2c94311 bitbake: cooker: Drop useless parsing exception
a16b543 bitbake: data: Pass lineno/filename data from build_dependencies
958f0ff bitbake: codeparser: Add support for correct linenumbers
db4376e udev-extraconf: introduce multiple blacklist files for more complex setups
a8fb429 uclibc: disable parallel builds
401c632 image: Condense do_rootfs function/flags
0051510 image/rootfs-postcommands: Separate out post rootfs commands to separate class
3428edd image: Remove pointless rootfs lock
eb5bb0e packagegroup-core-boot:replace busybox to variable
cc7bb6c initramfs-framework_1.0:replace busybox for variable.
d9ffa59 core-image-minimal-initramfs: replace base-utils
9349f42 base-utils:flexible dependency for command utilities
c44b76a orc: Add missing PACKAGES_DYNAMIC
2cd061a bluez5: include the patch only for 5.36
4c35473 meta-yocto-bsp: remove 3.14 and 3.19 bbappends
6af8981 meta-yocto-bsp: Remove uvesafb (v86d) from generic x86 features
614e9ec qemu: add PACKAGECONFIG for Nettle crypto support
09705a4 oeqa/selftest: support sets in devtool comparisons
4b543f7 packagegroup-core-x11-sato: include pulseaudio-misc
23302ee devtool: use cp instead of shutil.copytree
d6e7b5b xorg-lib: allow native building without x11 DISTRO_FEATURES
4cba706 busybox: generalize recipe to work with arbitrary install directories
9d001ae cairo: update 1.14.4 -> 1.14.6
6d561fb libdrm: Upgrade to 2.4.65
0f516f0 image-vm.bbclass: uses IMAGE_LINK_NAME
c851096 image-live.bbclass: uses IMAGE_LINK_NAME
907b87d rpm: Generate per distribution and multilib macro files
c910789 package_manager.py: add debugging support for rpm scriptlet execution
8dd27ef xinput-calibrator: get screen geometry when calibrating
e8d36f4 scripts: hand the TEMPLATECONF local over to setup-builddir
0f4fb26 util-linux: Fix floating dependency upon 'readline'
2cb434a linux-firmware: package Broadcom BCM43340 firmware
f70d46f rpcbind: Fix build with libtirpc 1.0.1
866c693 libtirpc: upgrade to 1.0.1
5754b83 gstreamer1.0-libav: upgrade to version 1.6.2
6ac601f gstreamer1.0-rtsp-server: upgrade to version 1.6.2
3ac3d33 gstreamer1.0-plugins-ugly: upgrade to version 1.6.2
823b623 gstreamer1.0-plugins-bad: upgrade to version 1.6.2
6d13f30 gstreamer1.0-plugins-good: upgrade to version 1.6.2
05896a5 gstreamer1.0-plugins-base: upgrade to version 1.6.2
a8eb77b gstreamer1.0: upgrade to version 1.6.2
dd5756b mirrors: add archive.apache.org to Apache mirrors
cfbd804 guile: remove redundant replacement of .pc file
c2e8079 bind: 9.10.2-P4 -> 9.10.3-P2
7204a0f libsndfile1: enable FLAC/Ogg/Vorbis support
35bd254 buildhistory: improve support for extensible SDK
ea0abcd buildhistory: fix not recording SDK information
b6d191d scripts/oe-selftest: Add support for selftest log with timestamp
ab79287 selftest: Added MACHINE = "qemux86" to tests that use runqemu
b09080d ncurses: fixes wrong paths in BINCONFIG
8df88fb xcb: don't build-depend on python-native
d7759a5 tcmode-default: Use glibc for nativesdk version even on uclibc and musl
a7eadc3 qemu: upgrade to 2.5.0
9988ab3 webkitgtk: update to 2.10.4
cedb027 epiphany: update to 3.18.2
6e27dd8 libwebp: update to 0.4.4
efcf4b4 libsecret: update to 0.18.3
0112274 gnome-desktop3: update to 3.18.2
88a656e gcr: update to 3.18.0
883193a linux-yocto: remove 3.14 and 3.19 recipes
4487e3a kernel-yocto: fix checkout bare-cloned kernel repositories
5161944 linux-yocto/4.1: update to v4.1.15
a462d16 linux-yocto-dev: bump to 4.4-rcX
862b3b3 lttng-modules: fix build issue against kernel 4.4
9563aa8 yaffs2: fix checkpoint functionality
cefc24d mobile-broadband-provider-info: update to tagged release 20151214
04aa27c icu: fix upstream version check
2865e5f btrfs-tools: update to 4.3.1
5beb3bc iso-codes: update to 3.63
503c08d kexec-tools: update to 2.0.11
4fa2e4b lighttpd: update to 1.4.38
f7a7796 tiff: update to 4.0.6
2498065 libassuan: update to 2.4.2
f2192fa msmtp: update to 1.6.3
7fc3066 liburcu: update to 0.9.1
10d14bc trace-cmd: update to 2.6
fc774e9 python3-pip: update to 7.1.2
c3330aa pytnon-pexpect: update to 4.0.1
aa90b5d ifupdown: update to 0.8.2
4c98105 gptfdisk: update to 1.0.1
edde9af cryptodev: update to 1.8
9da9308 oe-selftest: devtool: add more explicit check for ls output
c2435b1 oe-selftest: add tests for simple devtool add / recipetool create URL case
8916731 recipetool: create: fix error when extracting source to a specified directory
fe28c25 recipetool: create: improve autotools support
498e483 devtool: sync: tweak help / messages
b272c51 devtool: reset: print message about leaving source tree behind
95a234e devtool: status: list recipe file within workspace if one exists
e116739 devtool: modify: default source tree path
110f433 devtool: add: allow specifying URL as positional argument
ceaa4bf devtool: add: figure out recipe name from recipetool
ee0d5a1 devtool: add: allow source tree to be omitted
0d8751f scripts/lib/argparse_oe: handle intermixing of optional positional arguments
1bd7793 devtool: update-recipe: use correct method to get bbappend filename
2074654 devtool: split out function for naming bbappend
6acbdc9 devtool: add: tweak help text
316b57b devtool: edit-recipe: add new subcommand
ebe5f0b recipetool: create: basic extraction of name/version from filename
db5f964 recipetool: create: support extracting name and version from build scripts
6a7661b recipetool: create: set up priority system for recipe handlers
38803e3 recipetool: create: detect when specified URL returns a web page
e78a039 recipetool: create: prevent attempting to unpack entire DL_DIR
e61645b recipetool: create: minor fix for potential issue in python handling
ae2141b recipetool: create: fix do_install handling for makefile-only software
c2f1742 recipetool: create: avoid traceback on fetch error
470f20b recipetool: create: handle https://....git URLs
8e0a84c scripts: print usage in argparse-using scripts when a command-line error occurs
548d433 directfb.inc: enable bfd linker workaround for all arm targets
2381f4a devtool: sdk-update: fix traceback without update server set
7540550 classes/populate_sdk_ext: error out of install if buildtools install fails
ecce3d3 classes/populate_sdk_ext: hide build configuration in devtool build* output
fd84d0f classes/base: don't print header if BUILDCFG_HEADER not set
a4f496a classes/populate_sdk_ext: use uninative to set NATIVELSBSTRING
a6f8a3f toaster.bbclass: fix TypeError when parsing build stats
937b7fd libxcb: Add a workaround for gcc5 bug on mips
86c8b8b flex: update to 2.6.0
dad130b opkg: upgrade to v0.3.1
d2b770c systemd: remove merge conflicts accidently left in
ca69643 wic/help.py: document that mountpoint is optional for part command
5628dde pixman: check neon support via TUNE_FEATURES, not the _armv7a over-ride
9a74388 xdg-utils: Do not build the in-script documentation
520b37d gettext: Upgrade 0.19.4 -> 0.19.6
cae0e0f gcc-configure-common.inc: add gcc-runtime ABI fixes for armv7m and armv7r
cba8fb3 tune-cortexr4.inc: provide an _armv7r over-ride via MACHINEOVERRIDES
fd10723 tune-cortexm3.inc: provide an _armv7m over-ride via MACHINEOVERRIDES
b6fe440 feature-arm-thumb.inc: drop 'no-thumb-interwork' tuning feature
1d5a4cf feature-arm-thumb.inc: drop legacy _thumb and _thumb-interwork over-rides
ca64c16 feature-arm-thumb.inc: drop ARM -vs- thumb comments
95a79a5 rpm: Fix support for db5 and db6
75cec07 oe-buildenv-internal: fix return code
606c9e7 staging.bbclass: make already-stripped can be skipped
647e0e4 buildhistory-collect-srcrevs: hide empty sections
d4b5a1f selftest/buildhistory.py: Test buildhistory does not change sigs
4b83f1f gcc5: Upgrade gcc-5.2 -> gcc-5.3
0381b78 bitbake: event/utils/methodpool: Add a cache of compiled code objects
c61c1eb bitbake: BBHandler: Improve IN_PYTHON_EOF handling
2a94194 bitbake.conf: Add filename and lineno to BB_SIGNATURE_EXCLUDE_FLAGS
5f40691 bitbake: toaster: remove 2 confusing parameters
3960b6e bitbake: toaster: move setting of default values
b194c0c bitbake: toaster: move startup checks to a better place
064d2c7 bitbake: toaster: remove 2 unused functions
c505f24 bitbake: toaster: remove addtoConfiguration function
c7e4404 bitbake: toaster: updated header of the toaster script
af34920 bitbake: toaster: add MANAGE variable
563b786 bitbake: toaster: remove unused variable
aa3cc12 bitbake: toaster: split long lines, add/remove whitespace
8e4acac bitbake: toaster: check if address:port is in use
847b935 bitbake: toaster: implement checksocket command
9f3681d buildstats-summary/toaster: Cope with removal of get_bn()
522dcaa bitbake: knotty: Improve exception error message
01d67bf bitbake: knotty: Fix row/column function return value issue
6c12efa bitbake: buildinfohelper: Update for buildstats layout change
28ea1a1 bitbake: fetch: use orig localpath when calling orig method
5cb6d83 bitbake: utils: Improve traceback from better_exec internal errors
0019edc bitbake: ast/event/utils: Improve tracebacks to include file and line numbers more correctly
b14ccb2 bitbake: runqueue: Add support for <task>- syntax
5069ab6 m4: Drop unused/unreferenced patch
d7e766b toaster: Update for buildstats changes
adfdca4 buildstats: Improve to add getrusage data and corrected IO stats
3187647 buildstats: Separate out the build and task data to allow improvements
38a2553 buildstats: Clean up e.data and bb.data references
7b1e48f buildstats: Drop get_bn/set_pn and just use BUILDNAME
7837162 buildstats: Drop disk data from buildstats
030c033 nativesdk-buildtools-perl-dummy: Bump PR
e6f2761 combo-layer: Stop using filterdiff
f1f3716 meta: more removals of redunant FILES_${PN}-dbg
5fb8fea clutter-gst-3.0: add dependency on libgudev
54f01ca systemd: Upgrade to 228
63bdadc uclibc: Switch to using uclibc-ng
0b5cddd cdrtools-native: update to 3.01 final
c4dfb92 grep: update to 2.22
d8608bc procps: update to 3.3.11
52f6a01 babeltrace: update to 1.3.1
0c705d6 powertop: update to 2.8
516d8c9 nfs-utils: update to 1.3.3
9c39a4f systemtap: update to 2.9
fef0ec6 kbd: update to 2.0.3
8668e17 gmp: update to 6.1.0
86e02d0 docbook-xsl-stylesheets: fix UPSTREAM_CHECK_REGEX
f065766 mtd-utils: update to 1.5.2
5d32aeb unfs3: update to r497
4e653b5 python-numpy: update to 1.10.1
90b7212 libxml-simple-perl: update to 2.22
689db13 dmidecode: update to 3.0
d301451 cpio: update to 2.12
2bea006 puzzles: update to current commit
2d04c83 gnutls: update to 3.4.7
cf1eb2b libidn: add native and nativesdk support
dd58b3b libpng: Update SRC_URI to use GENTOO_MIRROR
b763668 libpng12: Upgrade 1.2.54 -> 1.2.55
91c92fc libical: Upgrade 1.0.0 -> 1.0.1
5c6ff26 libxslt: use proper SRC_URI
a444eb5 kexec-tools: added the script kdump
be9f7f9 ltp: Upgrade 20150420 -> 20150903
81f1e41 musl: Update to latest 1.1.12 release
c529e66 util-linux: Upgrade to 2.27.1
bdbc5ee packagegroup-core-sdk: Disable sanitizers for uclibc
692853d libsolv: add new recipe
8bba7de curl: upgrade to 7.45
2e3a172 libsndfile1: 1.0.25 -> 1.0.26
df18352 wget: Upgrade 1.16.3 -> 1.17
81eb101 unifdef: upgrade to 2.11
19c76ad sstate-sysroot-cruft: Add php, python, lua, fontcache generated files to whitelist
f80f8ba oeqa/selftest: Added testcase decorators for 2 testcases
a5dd1dd uninative.bbclass: Choose the correct loader based on BUILD_ARCH
388e580 license: Fix BB_TASKDEPDATA references
f19e8de coreutils/procps: Revert priority change since coreutils > busybox
455ff32 meta: more removals of redunant FILES_${PN}-dbg
e0890b6 meta: Drop now pointless manual -dbg packaging
b7766e4 package: Add auto package splitting of .debug files
89f13c7 meta/conf/toasterconf.json: remove SDKMACHINE variable as it no longer used
03d715e bitbake: toaster: tables Set a default order for the software recipes table
4ff0d60 bitbake: toaster: rework checking of Django version
4a78416 bitbake: toaster: monkey patch Queryset
c1c8eff bitbake: toaster: removed extra calls of migrate
507aafb bitbake: toaster: work around 'database is locked' error
322b470 bitbake: toaster: fixed format strings
84daa40 bitbake: toaster: use OneToOneField instead of ForeignKey
c464f34 bitbake: toaster: Amend regex for MySQL database URLs
f001a4a bitbake: toaster: Remove compatible_layerversions() method
0adffdf bitbake: toaster: Check Django version against toaster-requirements.txt
8d058cf bitbake: toaster: Update deprecated manage.py command
717c636 bitbake: toaster: Prevent deprecation warnings for RedirectView
0f602c1 bitbake: toaster: Update API used to make runbuilds methods run in transactions
93f5738 bitbake: toaster: rename get_query_set -> get_queryset
23c4806 bitbake: toaster: Start Django machinery for database access
7a0c45e bitbake: toaster: Create default project with get_or_create* method
9de8dfa bitbake: toaster: Fix references to app paths
535fc9b bitbake: toaster: Remove South migrations
8ca4664 bitbake: toaster: Upgrade to Django 1.8.6 and remove South
b322dec bitbake: toasterui: process SetBRBE event
0274b68 bitbake: toaster: trigger SetBRBE event
fdb8e74 bitbake: toaster: implement BitbakeController.triggerEvent
5de3800 bitbake: event: Fix subprocess event error traceback failures
0da1d71 nopackages: Add class for recipes which don't generate packages
5003d14 sstate: Ensure populate_lic dependencies are not followed
48aad51 populate_sdk_ext/sign_rpm/sign_package_feed: Add missing getVar parameter
98dcdcb autoconf: Disable macro which causes excessive delays when using dash as sh
28fa304 automake: Remove delays in configure scripts using automake
f5e681d site/common-linux: Add some macros to avoid sleeps during configure
93adf46 meta-yocto/conf/toasterconf.json: remove SDKMACHINE variable as it no longer used
b3d6872 lttng-tools: Revert wrong enforcement of Python 3.0 use
2c11bdd attr: Add patch to account for use of internal glibc header
f1c034b libpam: Fix build with musl
33bab59 openssl: Add musl configuration support
c4207ee busybox: Add config for musl
083d9d1 gettext: Delete libintl.h and charset.alias
3a0797f sysvinit: Fix build with musl
fd21402 musl: Add recipe
781d34f mtools: Use proper glibc override to add glibc packages to recommendations
1b90d67 squashfs-tools: Define FNM_EXTMATCH if not defined
36a709a mtd-utils: Backport and create patches to support musl
41fd73f gdb: Fix build with musl
1ee97d8 autoconf: Add musl support
a2ea58b gcc: Add support for building musl configuration
37c74e2 gstreamer1.0: Split bash completion information into separate package
fc32a3b attr: add attr dependency to attr-ptest
9205f0a valgrind: import Debian link_tool patch for MIPS
c27bbb4 slang: update upstream URI to (official) jedsoft.org
21e35df subversion: update to 1.9.2
39260c3 json-c: add manual upstream version check
4ff0017 mirrors: replace references to archive.apache.org
1672a18 mobile-broadband-provider-info: update to current commit
b699b15 nspr: update to 4.11
dec8d20 python-setuptools: update to 18.7.1
b3535e2 openssl: update to 1.0.2e
fce2ee7 dropbear.inc: drop legacy CFLAGS and LD tweaks
f87063b dropbear: update 2015.70 -> 2015.71
a520495 texinfo: don't create dependency on INHERIT variable
2b2774b sudo: upgrade to 1.8.15
5eb0e90 linux-firmware: update to latest revision bbe4917
c147782 bluez5: upgrade to 5.36
64c3a09 sudo: remove libdir INSANE_SKIP
b407a80 libsdl: expand PACKAGECONFIG and enable native builds
39facf9 buildtools-tarball.bb: 32bit tools need pseudo 32bit library
bc26a7d rpm: fix file conflicts for MIPS64 N32
01c0285 rpm: Enable MIPS64 N32 transactions
a742586 bash: fix testcase run-coproc/run-execscript/run-test/run-heredoc failed
a6bb872 cpio: fix test case of symlink-bad-length
787d82b linux-libc-headers: update default KORG_ARCHIVE_COMPRESSION bz2 -> xz
94c0332 linux-libc-headers.inc: remove '-e MAKEFLAGS=' from EXTRA_OEMAKE
c7ad779 gcc-4.9: import patch fixing compilation in thumb mode
1260ded gcc-5.2: import patch fixing compilation in thumb mode
b4db53a dropbear: Upgrade 2015.68 -> 2015.70
e0162c1 gcc-cross-initial: make dependency on gnu-config-native and autoconf-native explicit
fccb128 weston-init: add a native systemd unit file
a1fa8d9 python: Fix cross compiling issue
c9fdc1b icu: Upgrade 55.1 -> 56.1
95909bc kernel.bbclass: drop unnecessary 'eval' from kernel_do_configure()
ec79a19 insane: in libdir test allow libraries in libexecdir
9c0186f rootfs.py: Change logic to unistall packages
23083e7 oeqa/systemd: get runtest target boot time and log
c6330a2 oeqa/systemd: journalctl helper function
220a78b scripts: oe-selftest Added new features.
98d2485 oe-buildenv-internal: preserve existing BB_ENV_EXTRAWHITE
9cab798 toolchain-shar-extract.sh: fix ~ not working in path
f27401d nativesdk-buildtools-perl-dummy: properly set PACKAGE_ARCH
5e3e2e0 poky.conf: Bump for 2.1 development
7e8ff7b bitbake: toaster: toasterui Add ParseStarted/ParseProgress events to mask
f823601 build-appliance-image: Update to master head revision
992e577 linux-yocto: Update genericx86* BSPs to v4.1.13
b4f6950 cmake: Add nios2 support
27b9f04 boost: adjust hard-coded path after python3 upgrade
639cadd sdk.py / OpkgSdk: remove_packaging_data() after install
fd4894f devtool: extract: update SRCTREECOVEREDTASKS for kernel
34f1d81 devtool: extract: copy kernel config to srctree
6650357 lib/oe/package_manager: Introducing PACKAGE_FEED_BASE_PATHS/PACKAGE_FEED_ARCHS
d7baeb5 selftest/wic.py: Add test for custom bootloader config
8612f26 directdisk-bootloader-config.wks: Add example for custom bootloader config
c59dc3b wic/help.py: Document the new option "configfile"
7033873 wic: Allow to use a custom config for bootloaders
f95f729 wic/utils/misc.py: Added function to search for files in canned-wks
9773faa wic: Prepare wicboot to allow custom bootloader config
4515186 package_ipk: allow to specify OPKG_ARGS in local.conf
7cf7156 systemd.bbclass: Allow enabling of parameterised services
551cda0 base: check for existing prefix when expanding names in PACKAGECONFIG
c093fd8 linux-yocto/4.1: Fix kernel oops on qemuarm boot
cda3905 toolchain-shar-extract.sh: ensure cleaned environment will work for ext SDK
f9384b0 bitbake: knotty: Enforce terminal line limit to stop crazy scrolling
7a775a1 initramfs-framework: create directory /var/run
2861399 libpcre: drop UPSTREAM_CHECK_ variables
35c28e3 libpcre: upgrade to 8.38
d50ef65 libpng: update 1.6.19 -> 1.6.20 (CVE-2015-8126)
2b736f2 ghostscript: add dependency for pnglibconf.h
976f0e3 package_regex.inc: split the rest of the entries to their recipes
74bfa62 package_regex.inc: split entries which blacklist specific versions to their recipes
75c6929 package_regex.inc: split sourceforge related entries to their own recipes
cefeac2 package_regex.inc: split PyPi related entries to their own recipes
aa5df2a package_regex.inc: split Debian-related entries into their own recipes
12ba5cc package_regex.inc: split GITTAGREGEX entries into recipe files
642e92f package_regex.inc: split entries with odd-even versioning into their own recipes
96eac69 package_regex.inc: deprecate the file
b0bbea5 gstreamer: really fix the helper install race
b822216 neard: fix libdir/libexecdir confusion
cbfccc6 glibc: fix libdir/libexecdir path confusion
d0577f9 sudo: handle libexecdir != libdir/PN.
6f837cc util-linux: Add ptest
dbd02bd libav: Correctly handle prefix=""
fda9859 libav: Add PACKAGECONFIG options: avdevice, avfilter, avplay, gpl
7ba85f1 libav: Remove deprecated --disable-avserver
2739ed0 busybox: backport upstream fixes for unzip
6decbbb qt4-4.8.7: fix build for mips n32
f1e8938 gstreamer1.0: Convert tests and valgrind config opts to PACKAGECONFIGs
11b9524 cracklib: fix for base_libdir == libdir
d9f73ca libbsd: Upgrade to 0.8.0
10d6dc4 libcroco: Upgrade 0.6.8 -> 0.6.9
79b823a shared-mime-info: Upgrade 1.4 -> 1.5
f6ec8a4 xdg-utils: Upgrade to 1.1.1
a3f63f9 gsettings-desktop-schemas: Upgrade 2.16.1 -> 3.18.1
754f6b6 gnome-common: Upgrade 3.14.0 -> 3.18.0
75aba18 clutter-gtk-1.0: Upgrade 1.6.2 -> 1.6.6
c6a6212 clutter-gst-3.0: Upgrade 3.0.8 -> 3.0.14
2da6cd5 clutter-1.0: Upgrade 1.24.2
148c953 cogl-1.0: Upgrade 1.20.0 -> 1.22.0
f54d4e4 ghostscript: Add NIOS2 support
21ba42b harfbuzz: update 1.1.0 -> 1.1.2
058b91e xvideo-tests: move to the latest release
70d459c scripts/oe-pkgdata-util: sort the packages in list-pkg-files
80e3919 wic: insert local Python paths at front
9d788d7 toolchain-scripts.bbclass: unset command_not_found_handle
82ab99f waf.bbclass: remove unused parameter from get_waf_parallel_make()
68d3dfe toolchain-shar-extract.sh: proper fix for additional env setup scripts
0c5d239 base: Improve handling of switching virtual/x providers
3745479 bitbake: bitbake: rename REGEX, REGEX_URI, and GITTAGREGEX.
dd282d4 bitbake: toaster: return back 'New project' button
2a8e970 bitbake: toaster: tests Update UI tests to work with 2.0 changes
fe8a0a3 bitbake: toaster: tests Automated build-mode backend tests
0497b57 bitbake: toaster: unset environment variables
8b7a548 bitbake: toaster: get rid of complicated heuristics
556b8b6 bitbake: toaster: remove SDKMACHINE from project variables
4186f5b bitbake: toaster: stop using toaster-pre.conf
361faa3 bitbake: toaster: remove writeConfFile API
fcbba5a bitbake: toaster: set varibales on bitbake server
993bc7e bitbake: toaster: implement BitbakeController.getVariable
53e981e bitbake: toaster: buildinfohelper Broaden the toaster created recipe data case
57e5f24 bitbake: toaster: do not create duplicate HelpText objects
4c1e5ec bitbake: toaster: remove usage of BUILD_MODE variable
9902895 bitbake: toaster: do not terminate bb server
58765a8 bitbake: toaster: remove stopBBServer API
95a3cf7 bitbake: toaster: reimplemented startBBServer method
76d53b5 bitbake: toaster: remove _setupBE function
87b2f95 bitbake: toaster: implement 'toaster restart-bitbake'
891484a bitbake: toaster: implement start_bitbake function
bf25471 bitbake: toaster: implement stop_bitbake function
7c2b225 bitbake: toaster: update brbe and project attributes
de812d0 bitbake: toaster: start 'manage.py runbuilds' in the script
28e8ccf bitbake: toaster: make runbuilds to loop
a3871a3 bitbake: toaster: use parent of the build dir
2a96d35 bitbake: toaster: check for toaster configuration later
d87a534 bitbake: toaster: remove unused variable
dc6a489 bitbake: toaster: change toasterconf.json logic to use TEMPLATECONF, like oe-setup-builddir
5a42c2d bitbake: toaster: run bitbake the same way
cac91db bitbake: toaster: set DATABASE_URL in toaster script
a464bf2 bitbake: toaster: implement get-dburl command
e473151 bitbake: toaster: don't allow to run toaster as a script
4de214f bitbake: lib/bb/utils: improve edit_bblayers_conf() handling of bblayers.conf formatting
0debb11 bitbake: lib/bb/utils: fix error in edit_metadata() when deleting first line
9d19dd9 bitbake: wget.py: parse only <a> tags
71ede7b bitbake: toaster: toastergui tests Add generic test for ToasterTables widget
34b22cf bitbake: toaster: tables Fix invalid field name on NewCustomImagesTable
1c59846 bitbake: toaster: tables Add default_orderby field where it was missing or unset
d82c541 bitbake: toaster: CustomImageRecipe add search_allowed_fields to this model
bdf6241 bitbake: toaster: machines table Fix missing layers information needed for filter
b90a8dc bitbake: toaster: tablejs Make sure click handlers consume click event
c075bcf bitbake: toaster: projectpage Make sure build targets are space separated
698c74c libsdl: remove redundant configure_tweak patch
35945fd iw: upgrade to version 4.3
15969ae gstreamer1.0-plugins-good: fix PACKAGECONFIG for gudev and add one for v4l2 and libv4l2
e601b38 gstreamer1.0-plugins-bad: fix dependencies for uvch264 PACKAGECONFIG
ddf2501 gudev: Add from meta-oe
e406fa8 lsb: fix installed-vs-shipped for mips
39ecdce rpm: fix for N32 MIPS64
09b4da6 glibc/0029-fix-getmnt-empty-lines.patch: fix getmntent()
1781a9a init-install-efi: fix script for eMMC installation
f808747 init-install-efi: fix script for gummiboot loader
2a55036 linux-firmware: rtl8192cx: Add latest available firmware
b60af3b libsdl2: add missing dependency on libxkbcommon for PACKAGECONFIG[wayland]
ed31874 libxml2: upgrade to 2.9.3
ecb1c71 libxml2: merge pointless bb/inc split
19a626d openssh: redesign ssh-agent.sh regression test case
81b59e7 gcr: Require x11 DISTRO_FEATURE
934e486 psplash: update to latest git version
ccb2a57 sysvinit-inittab: Add wrapper script to verify console exists
b7f610d linux-yocto/4.1: Bluetooth:Fix the connection fail of 6lowpan over BT LE
d08e761 linux-yocto-rt/4.1: update to -rt15
6aa464c linux-yocto/4.1: fsl-mpc8315e-rdb: Enable EEPROM
bd29006 linux-yocto/4.1: update to v4.1.13
5561407 uClibc: enable utmp for shadow compatibility
533fc01 glibc: Backported a patch to fix glibc's bug(18589)
598e372 ncurses: update SRC_URI
51b64ee openssl: enable parallel make
88e45cd busybox: enable resize applet
87de4a1 busybox: disable support for mounting NFS file systems on Linux < 2.6.23
73cc839 busybox: update 1.23.2 -> 1.24.1
f8ac408 busybox: re-order defconfig to align with busybox 1.24.1
3648a37 busybox.inc: remove '-e MAKEFLAGS=' from EXTRA_OEMAKE
bf28ea9 busybox.inc: set CC=${CC} via make command line
f21dce1 busybox.inc: fix CONFIG_EXTRA_CFLAGS configmangle
6167669 busybox.inc: don't set .config CROSS_COMPILER_PREFIX
e1ecccd busybox: move EXTRA_OEMAKE etc into busybox.inc
0e63300 busybox.inc: don't export EXTRA_OEMAKE
3735776 busybox_git: Enable getopt applet
b1774f4 harfbuzz: update 1.0.6 -> 1.1.0
31f803a sqlite3: update 3.9.0 -> 3.9.2
7e3474c readline: apply missing upstream patches
99b9d52 readline: prepare for readline6.3 upstream patches
e0b6d0c dbus: merge .bb and .inc
d99958a pulseaudio: Fix HDMI profile selection
2ba954f initscripts: hide the error in case system is not writeable
4ed84ff nativesdk-buildtools-perl-dummy: fix rebuilding when SDKMACHINE changes
b8fdd09 xf86-video-vmware: Add vmwgfx PACKAGECONFIG option
dfd5c4d pkgconfig: merge .bb and .inc
61c6887 pkgconfig: upgrade to version 0.29
744e89f ofono: upgrade to version 1.17
996f843 libxml2: remove legacy LDFLAGS += "-ldl" workaround
dedabc1 apr: fix LTFLAGS to make it work with ccache
9470956 iproute2: install bridge tool by default
1b8f6a2 lttng-tools: add libgcc to RDEPENDS
22dd6e7 lttng-tools: Upgrade to 2.7 release
ef73f21 lttng-tools: Drop unused patch
c375976 lttng-ust: Upgrade to 2.7 release
f5c1b57 lttng-modules: Upgrade to 2.7 release
8d708a5 libunistring: upgrade to version 0.9.6
f840e59 libtasn1: upgrade to 4.7
012ca02 wpa-supplicant: upgrade to 2.5
872e153 mesa: Make gl libraries RRECOMMEND mesa-megadriver
a62fa23 directfb.inc: force bfd linker for armv7a
9b075ca libpng12: update to 1.2.54
6d1eb34 libpng: update to 1.6.19
92a881f orc: update to 0.4.24
2f479b1 libpcap: update to 1.7.4
bd4058f apr-util: add missing RDEPENDS for ptest
1408642 iproute2: update to 4.3.0
e677c25 ruby-native: Depend on openssl-native
9e37812 db: fix race issue for libdb-6.0.la
c19036a pango: use ptest-gnome
43b29d9 gst-plugins-bad: improve FILES variables
9fc877f gstreamer1.0-plugins-base: add PACKAGECONFIG for libvisual
7a2bb0d python3: fix building nativesdk-python3
2268a70 python3: Upgrade from 3.4.3 to 3.5
ed8d1be python-git: Add missing dependency
dee2a8c guile, mailx, gcc, opensp, gstreamer1.0-libav, libunwind: disable thumb where it fails for qemuarm
c0b822f icu: force arm mode
f42ef3f rpcbind: Security Advisory - rpcbind - CVE-2015-7236
04034e7 subversion: fix CVE-2015-3187
f91aedf subversion: fix CVE-2015-3184
40cd228 oeqa/sshcontrol: don't source profile
d39192a oeqa/runtime/multilib: refactor ELF class extraction
cc34104 oe-selftest: Enable code coverage on unit tests
06859de meta/conf/machine: use ' inside quoted values
6be94ec runqemu-internal: Replace wacom-tablet with tablet for usbdevice
0cc3810 recipetool: make plugin registration function name consistent with devtool
b381f80 recipetool: add setvar subcommand
1fbd760 lib/oe/recipeutils: refactor patch_recipe_file() to use edit_metadata()
0b850cb devtool: clarify help text
5001f23 devtool: build: enable showing default task in help
f79022d devtool: build: use bbappend to set PARALLEL_MAKE
21481bc lib/oe/recipeutils: check in validate_pn() for names instead of filenames
671f41e devtool: ensure we change back to the original dir on error
74505b4 devtool: search: print SUMMARY value
3f46af2 devtool: drop unused plugin_init() functions
176211a devtool: package: use DEPLOY_DIR_<pkgtype> to get deploy directory
0fe7426 devtool: disable creating workspace for extract and search subcommands
a360fa7 lib/oe/patch: improve extraction of patch header
f79cc4d devtool: upgrade: provide a means to update the source branch
b4d4d21 devtool: upgrade: fetch remote repository before checking out new revision
9b7d45c devtool: upgrade: remove erroneous error when not renaming recipe
9a70444 devtool: upgrade: fix updating PV and SRCREV
6a52c73 devtool: upgrade: fix removing other recipes from workspace on reset
44ef78a devtool: include do_patch in SRCTREECOVEREDTASKS
804f5b8 image.py: avoid mkdir race when building multiple images
312862f package_manager.py: define info_dir and status_file when OPKGLIBDIR isn't the default
b00f734 image.py: Avoid creating empty .env file in _write_wic_env
a88505b lib/oe/terminal: use C locale when determining version
8d784ba toolchain-shar-extract.sh: Ensure it's ran in clean environment
7f3c20f toolchain-shar-extract.sh: do not allow $ in paths for ext SDK
2d21e5d create-pull-request: handle empty ODIR
c63b36f scripts/gen-lockedsig-cache: improve output
67af6d6 wic: exec_native_cmd: implement support for pseudo
8ffba25 toolchain-shar-relocate: don't assume last state of env_setup_script is good
b8ee7ae sanity: don't enforce DISPLAY for testimage
b364183 oeqa/qemurunner: pass nographic to runqemu if DISPLAY isn't set
46755cc base: add automatic dependency on lzip-native for .lz SRC_URI
6ea39c2 base: decode SRC_URI before adding implicit fetch dependencies
eded9c2 buildhistory.bbclass: support extending the content of the build history
d95df11 license.bbclass: Create image license manifest
efdab52 license.bbclass: Add function get_deployed_files
cc0d044 license.bbclass: Added function get_deployed_dependencies
d45e10e license.bbclass: Added get_boot_dependencies function
8b1e7bc license.bbclass: Split license create manifest
1a210e6 license.bbclass: Write recipeinfo file in license folder
74c7cd5 populate_sdk_ext.bbclass: Be more permissive on the name of the buildtools
5ba6382 populate_sdk_base: Add sysroot symlink check
7fed655 classes/populate_sdk_ext: fail if SDK_ARCH != BUILD_ARCH
2948169 classes/populate_sdk_ext: tweak reporting of workspace exclusion
28a2ea7 classes/populate_sdk_ext: make it clear when SDK installation has failed
124c6aa classes/populate_sdk_ext: tidy up preparation log file writing
d348624 boot-directdisk.bbclass: remove HDDIMG before create
03f15e5 sstate: Ensure siginfo and sig files are also touched
615ccae weston: Add PACKAGECONFIG option for colord CMS
cdad67c opkg: add cache filename length fixes
2ec77de openjade-native: statically link local libs
29747d4 sysklogd: inhibit updatercd for non-sysvinit
add3451 connman: depend on readline
7a557a22 latencytop: obey LDFLAGS
8aeec87 tcf-agent: obey LDFLAGS
9025d2e blkspace: fix ldflags for iowatcher
1732a8a bluez5: enable sysvinit support
160fdd8 sysprof: use packageconfig for the gui
425d020 mc: upgrade to 4.8.15
7386647 packagegroup-core-directfb: Don't depend on pango-modules
ac5ed8e xkeyboard-config: Upgrade 2.15 -> 2.16
3a71fab xkbcomp: Upgrade 1.3.0 -> 1.3.1
b7cb308 xinput: Upgrade 1.6.1 -> 1.6.2
05eca73 xf86-video-omap: Upgrade 0.4.3 -> 0.4.4
cfcc5e5 xf86-input-synaptics: Upgrade 1.8.2 -> 1.8.3
4c9256f xf86-input-evdev: Upgrade 2.9.2 -> 2.10.0
96ddcc5 xorg-driver-input: add xorg configuration to FILES
a1003f5 xserver-xorg: Upgrade 1.17.2 -> 1.18.0
a336b8a libxcb: Remove unused git-version of the recipe
05ba0db libxcb: Upgrade 1.11 -> 1.11.1
44233d3 pixman: Upgrade 0.32.6 -> 0.32.8
7ab0466 libxi: Upgrade 1.7.4 -> 1.7.5
63feef0 gtk-icon-utils-native: Upgrade 3.16.6 -> 3.18.2
38924d9 package_regex.inc: Add gtk-icon-utils-native
060b482 gtk+3: Upgrade 3.16.6 -> 3.18.2
4f3d2b3 adwaita-icon-theme: Upgrade 3.16.2.1 -> 3.18.0
c8849ac librsvg: Upgrade 2.40.10 -> 2.40.11
81769ca pango: add RPROVIDES for removed packages
c9b06f5 pango: Upgrade 1.36.8 -> 1.38.1
ced8d49 gdk-pixbuf: Upgrade 2.30.8 -> 2.32.1
918c773 libsoup-2.4: Upgrade 2.50.0 -> 2.52.1
5bd9305 at-spi2-atk: Upgrade 2.16.0 -> 2.18.1
8eb0c8f atk-spi2-core: Upgrade 2.16.0 -> 2.18.1
78130eb atk: Upgrade 2.16.0 -> 2.18.0
e7141ab glib-networking: Upgrade 2.44.0 -> 2.46.1
fcd7494 glib-2.0: build dependency cleanup
5357764 glib-2.0: Enable more tests while cross-compiling
1e271af glib-2.0: Upgrade 2.44.1 -> 2.46.1
bc1be07 qemu: Backport malloc-trace disabling
bca5a7a logrotate: do not move binary logrotate to /usr/bin
0069c0d systemd: drop unneeded $D check in prerm
cd1f2b4 systemd: chown hwdb.bin to root:root for do_rootfs
7ca8cd9 systemd: for valgrind, define VALGRIND=1
46fa8ab systemd: make coredump a PACKAGECONFIG
ac34784 systemd: add machine-id to conffiles
04937cc systemd: ignore .so filenames in systemd-doc
6821854 systemd: fix Upstream-Status tag
82107b1 mdadm: fix CFLAGS and ptest issues
d8adfd2 gcc-4.9: Fix various _FOR_BUILD and related variables
8ae27fa devtool: add sync command
6bfa1dc boost.inc: remove unused parameter from get_boost_parallel_make()
16d7bfd wireless-tools: remove unused files
ee923bf gstreamer1.0: fix install race
0ae52c8 gcc-multilib-config: make aarch64 support multilib
8514d21 libxml2: fix CVE-2015-7942 and CVE-2015-8035
e864f71 terminal: Open a new window instead of split on older tmux versions (<1.9)
5056581 flex: fix test-bison-yylval and test-bison-yylloc failed
c54540e gdbm 1.8.3: install libgdbm_compat
b9f87ed harfbuzz: update to 1.0.6
3f75537 ethtool: bump version to 4.2
9a4da3c openssl: fix ptest issues
9163a5d base-files: stage /etc/skel
d60c5ff mktemp: raise the priority to avoid conflicting with coreutils
b06eacd libunwind: fix build for qemuarm
c4acace gma500_gfx: Avoid inserting gma500_gfx module for certain devices
6c3f680 libsndfile: fix CVE-2014-9756
aa07eb1 python-pycurl: update version to 7.19.5.2
696aa7e rt-tests: upgrade to version 0.96
6ec7dc2 rpcbind: don't use '-w' for starting rpcbind
eddd88f libsecret: add dependency on intltool-native
2e8efb1 openssl: use subdir= instead of moving files in do_configure_prepend()
036d2dc openssl: sanity check that the bignum module is present
cf366d8 libsdl2: require GLES when building Wayland support
4b38be6 meta: add some missing Upstream-Status tags to patches
42c75cd weston: delete unused patch
521fac6 glibc: fix Upstream-Status tag
44a7bbc linux-firmware: package Broadcom BCM4339 firmware
f9d51cd libusb1: fix make install race
cb01f6d libusb1: upgrade from 1.0.19 to 1.0.20
b4e6f63 perl: fix spaces in brackets while using CC version
a59d019 u-boot: Update to 2015.10 release
e67c5b0 bitbake-prserv-tool: check file name
4e2c5e1 recipetool.append: don't choke on a trailing ; in a url
a35f79d yocto-bsp: Set SRCREV meta/machine revisions to AUTOREV
9d585b5 yocto-bsp: Set KTYPE to user selected base branch
1542c2a yocto-bsp: Typo on the file extension
f674ffa yocto-bsp: Avoid duplication of user patches ({{=machine}}-user-patches.scc)
49a465c package_manager.py: Delete installed_pkgs.txt file
ace895d rootfs.py: Stop using installed_pkgs.txt
ccb1616 lib/oe/distro_check: don't set empty proxy keys
8137a84 lib/oe/copy_buildsystem: Don't expand BB_TASKDEPDATA
a6c68d8 oeqa/selftest/sstatetests: prettier output for allarch test
92328b4 oeqa/selftest/signing: Added new test for signing sstate.
fbb03a8 oeqa/selftest/signing: New test for Signing packages in the package feeds.
13a4c38 qemu.bbclass: fix vardeps of QEMU_OPTIONS
51bd011 qemu.bbclass: correct the fsl ppc QEMU_EXTRAOPTIONS
753f31e autotools: Allow recipe-individual configure scripts
e281791 allarch: Force TARGET_*FLAGS variable values
e28e17e distro/maintainers.inc: include stress package details
76d2e46 image_types: improve wks path specification
70ae7a6 insane.bbclass: Avoid libdir QA check if PACKAGE_DEBUG_SPLIT_STYLE='debug-file-directory'
cf0dfdb classes/cpan-base: fix libdir for nativesdk
a205c4c bbclass: fix spelling mistakes
cf218e5 rootfs_*.bbclass: don't add BUILDNAME to do_rootfs vardepsexclude
7d8616c insane: Don't depend on BB_TASKDEPDATA
a9cc27e kernel: fix race condition between compile_kernelmodules and shared_workdir
fecb077 classes: Ensure pass setVar/setVarFlag strings, not integers
9167f20 classes/license: fix intermittent license collection warning
43c8867 classes/metadata_scm: fix git errors showing up on non-git repositories
59b27d5 sstate: respect GPG_BIN and GPG_HOME
4415dc5 archiver.bbclass: add bbappend when do_ar_recipe kernel and gcc packages
2f0ff3a archiver.bbclass: fix previous issue regarding work-shared for linux-yocto
0cc4eef waf.bbclass: filter out non -j from PARALLEL_MAKE
95719b0 ptest-gnome: extend EXTRA_OECONF in all builds, not just target
1b25a70 yocto-project-qs, ref-manual, poky.ent: CentOS Package updates
2e649d7 dev-manual: Updated runqemu command options list
bd62289 toaster-manual: Removed SDKMACHINE from the json file example.
c674cd7 ref-manual: Updated list of supported distros.
33d8cff ref-manual: Updated the GCC 5 migration section for 2.0
d9aabf9 gcc: Drop 4.8
2cb1aee layer.conf: Correct gcc-cross dependency
88f9310 bitbake: toaster: builds pages Fix the download cooker log link
d04af8b bitbake: toaster: project pages Link to image recipes table in notifications
70465c7 bitbake: toaster: tests: Re-write some cases to make them more maintainable
536b73f bitbake: data_smart: Only support lowercase OVERRIDES
fb01a66 bitbake: fetch2: Remove crazy code in unpack
7db88aa bitbake: parse: Don't try to expand __base_depends/__depends
4c04ce0 bitbake: cache: Don't try to expand __inherit_data
9d8e36a bitbake: toaster: localhostbectrl Pass DATABASE_URL in via the process environment
4677d8b bitbake: toaster: Remove the new-build-input button widget
55f4494 bitbake: toaster: projecttopbar Use the project in context to get num builds
e9d4962 bitbake: toaster: projectpage Disable/Enable build input if we have 0 layers
5fa4c73 bitbake: toaster: orm Fix get_number_of_builds to count all apart from IN_PROGRESS
c4032f4 bitbake: codeparser: Only load the codeparser cache once
e3b66c1 maintainers: mass reassign and cleanup
37ddd3e Revert "local.conf.sample: Disable image-prelink by default"
9cc221d yocto-bsp: Default kernel version to 4.1 on x86_64
7100c42 scripts: runqemu: remove QEMUARCH from help message
f47e4ad cairo: update 1.14.2 -> 1.14.4
603b4de cairo.inc: drop obsolete CFLAGS += "-ffat-lto-objects" workaround
e8833a6 cmake: update 3.3.1 -> 3.3.2
8b2b068 oe-selftest: add test for bitbake-layers show-recipes
480bbae oeqa/selftest/layerappend: fix test if build directory is not inside COREBASE
a301f6e oeqa/selftest/devtool: fix test if build directory is not inside COREBASE
fd6bf77 classes/distrodata: split SRC_URI properly before determining type
7cebff6 classes/buildhistory: split package history values only once
10fc534 conf/distro/include: drop old recipes from include files
37cfd80 gitignore: fix overzealous exclusion
1f6599b meta: Fix typos in Upstream-Status labels
7cace4c meta/conf/layer.conf: fix typo
ca8e1e5 texinfo-dummy-native: set SUMMARY instead of DESCRIPTION
64cd113 gstreamer1.0-meta-base: set SUMMARY instead of DESCRIPTION
1d42d59 mmc-utils: set SUMMARY instead of DESCRIPTION
6692540 swig: set SUMMARY instead of DESCRIPTION
47ae8eb alsa-plugins: set SUMMARY instead of DESCRIPTION
eac5fa9 tzcode-native: set SUMMARY instead of DESCRIPTION
0a30a1f linux-yocto.inc: set SUMMARY instead of DESCRIPTION
19e1a73 python-nose: add SUMMARY
b5f58c1 stress: add SUMMARY
5f9392a libunwind: add SUMMARY
1460e01 gptfdisk: add SUMMARY
0821c36 verify-homepage: fix recipe file selection
0c48921 verify-homepage: tidy up output and comments
0e348e7 verify-homepage: get expanded HOMEPAGE value
caaca00 verify-homepage: use scriptpath to find bitbake path
649b6bc libaio: don't disable linking to the system libraries
11a9c24 runqemu: don't specify IP when starting a VNC server
3b95964 qemurunner: Remove the timeout in run_serial
bbd6d07 libxslt: CVE-2015-7995
a0d2ea9 gstreamer1.0-rtsp-server: upgrade to version 1.6.1
2459ec2 gstreamer1.0-libav: upgrade to version 1.6.1
bce06e7 gstreamer1.0-plugins-ugly: upgrade to version 1.6.1
0ec3c62 gstreamer1.0-plugins-bad: upgrade to version 1.6.1
ba1bc63 gstreamer1.0-plugins-good: upgrade to version 1.6.1
4a55d12 gstreamer1.0-plugins-base: upgrade to version 1.6.1
8360f23 gstreamer1.0: upgrade to version 1.6.1
8800033 prelink: Fix various prelink issues on IA32, ARM, and MIPS.
920fb96 gcc: Update default Power GCC settings to use secure-plt
7b1763a glibc: Fix ld.so / prelink interface for ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA
e63e191 qemurunner: Enable timestamps on kernel boot-up
a1ca788 openssl: fix mips64 configure support
5a10a6f at: modify sources in do_patch
78e0598 unzip: rename patch to reflect CVE fix
b80935a readline: rename patch to contain CVE reference
86d84ff qemu: upgrade to 2.4.0.1
4f0d756 gnome-desktop-testing: fix ptest output format
834de84 default-distrovars: remove less from WHITELIST_GPL-3.0
29bba95 lsof: don't export EXTRA_OEMAKE
3d37768 cmake.bbclass: don't duplicate CMAKE_C_FLAGS in CMAKE_C_FLAGS_RELEASE
efc07c2 rm_work.bbclass: Exclude do_rootfs stamp removal
5f9d16b cairo: fix license for cairo-script-interpreter
7328479 openssh: enable X11Forwarding if distro feature x11 is set
adeb820 acpid: Upgrade to 2.0.25
781dfd8 libidn: 1.30 -> 1.32
351c69a sqlite: 3.8.10.2 -> 3.9.0
c0fe43c rt-tests: bump to v0.94
cf972f9 gbm: Fix "configure: error: gbm requires --enable-dri"
17733cc xinetd: install xinetd supported services configuration
aa1844e combo-layer: introduce ability to exclude component from mass update
dcc446f linux-dtb.inc: refactor common code to function get_real_dtb_path_in_kernel
af9c7a4 linux-dtb.inc: refactor common code to function normalize_dtb
7eecb81 linux-dtb.inc: explicit test for empty string not needed
54df911 ptest-runner: Allow running of specific tests
54325b2 oeqa/testimage: Add support for test folder export.
ecbe135 oeqa/runtime/multilib: run the arch tests on connmand not connman-applet
2d1071e oeqa/runtime: remove dmesg test
42a5378 nfs-utils/statd: fix a segfault
77e3246 qemu: enable user mode for mips64 and mips64el
70600fb gnupg: fix find-version for beta checking
ab123ef rpm: define EM_AARCH64 for debugedit
af8c136 xserver-xorg: drop empty ${PN}-security-policy package
b667067 xserver-xorg: add Xwayland RRECOMMENDS
80f4d71 weston: add a PACKAGECONFIG option for xwayland support
883ab0f systemd: make dbus an optional build time dependency
2c5047f weston: add PACKAGECONFIG to build with systemd-login support
65ffeb5 systemd: add PACKAGECONFIG to build with compatibility libraries
4b29c80 os-release: put double-quotes around variable contents
0f516a5 cpio: fix testcase symlink-bad-lengths [ LIN8-947 ]
bceb9cb cpio: Fix symlink-bad-length test for 64-bit [ LIN8-947 ] architectures.
0ff3fc7 gtk+3: fix ALTERNATIVE_PRIORITY conflict with gtk+
eca12a6 coreutils: fix ALTERNATIVE_PRIORITY conflict with procps and mktemp
8de5315 util-linux: fix ALTERNATIVE_PRIORITY conflict with ncurses procps and e2fsprogs
3befb43 console-tools: fix ALTERNATIVE_PRIORITY conflict with kbd
5385ea8 debianutils: fix ALTERNATIVE_PRIORITY conflict with which
3a0bd40 linux-dtb.inc: use same variable name DTB for all elements of KERNEL_DEVICETREE
a879312 linux-dtb.inc: remove unneeded 'cd'
a23d1ca webkitgtk: Add upstream patch to fix build problem
69836e8 python: don't append -D__SOFTFP__ to TARGET_CC_ARCH for armv6/armv7a
38d1d63 prexport.bbclass: avoid export for native and crosssdk
d3da006 recipes: add distro_features_check for some packages
63690f0 scons.bbclass: SCons packages don't require do_configure
bffdc65 busybox: Schedule mdev after mountall
13ce7c2 busybox: Fix mdev block device automounting
b09f0f2 libarchive: rename patch to reflect CVE
116360f binutils: Fix XLP / Octeon 3 instruction clash
fd4f4d2 binutils: Fix octeon3 disassembly patch
fc45dea build-appliance-image: Update to jethro head revision
e14498b meta-yocto/distro: Updated SANITY_TESTED_DISTROS.
01bba74 meta-yocto/distro: Updated SANITY_TESTED_DISTROS.
e1aa897 build-appliance-image: Update to jethro head revision
96cab33 unzip: CVE-2015-7696, CVE-2015-7697
1b2a942 vte: fix DoS from malicious escape sequence (CVE-2012-2738)
370a291 build-appliance-image: Update to jethro head revision
00911c9 linux-yocto_4.1: Update SRCREV for genericx86*
c86957a glibc: Allow 64 bit atomics for x86
b02c5f6 local.conf.sample: Disable image-prelink by default
1630dbb ref-manual: Applied a correction to the GCC 5 migration 2.0 section.
37677d6 ref-manual: Updated ADT Installer Extras
a79e303 kernel-dev: Added cross-reference to .config information
e03b19b ref-manual: Applied review updates to 2.0 migration section.
a0791c1 bitbake: toasterui: Create per-build logs
290534d bitbake: build/utils: Add BB_TASK_IONICE_LEVEL support
3ebf761 bitbake: cooker: Ensure BB_CONSOLE remains correct over server resets
5b19b71 bitbake: bb/ui: Use getSetVariable command for BB_CONSOLELOG
acc7b4d bitbake: command: Add getSetVariable command
c8051c5 bitbake: bitbake-user-manual: Added new description for BB_TASK_IONICE_LEVEL
183290a bitbake: bitbake-user-manual: Added BBTARGETS variable description.
66d3c35 bitbake: toaster: templates Add meaningful title tags
5724b2a perl: Remove errornous extra path-specs for Module::Build based modules
884cf7a perl: Correct path for vendorlib, vendorarch, sitelib and sitearch
2d0c499 perl: fix Perl5 module builds
24cfcc4 runqemu-export-rootfs: update location of unfsd binary
da386d3 gtk-icon-cache: pass the native libdir to the intercept
63a0311 connman: Move wired-setup to ${datadir}
1c3c76d useradd-staticids.bbclass: Do not require trailing colons
8a0d8ee toaster manual: Updated the set up and use chapter
f19b52c ref-manual: Updates to the 1.8 to 2.0 Migration section.
b73da6b toaster-manual: Added new Toaster functionality descriptions.
947e156 ref-manual: Updated the rootfs*.bbclass description.
62e200e bitbake: toaster: orm Fix restrictive LogMessage message length
78f935d bitbake: toaster: Remove all navigation when not in build mode
c5f147b bitbake: toaster: Run tests in build mode
1d17109 bitbake: toaster: Hide builds for non-cli projects in analysis mode
a580479 bitbake: toaster: Hide top bar buttons in analysis mode
1ec2ec3 bitbake: toaster: Show mode-appropriate landing page
bbac0f0 bitbake: toaster: Add BUILD_MODE flag to context
851f0d8 bitbake: toaster: add get_or_create_targets API
dcd9cd0 bitbake: fetcher: svn: Add support for checkout to a custom path
4ab7202 bitbake: cooker: preserve pre and post configs
fdfdfc8 oeqa/utils/decorators: fix missing keyword arguments on decorators
a2d5b7a classes/gtk-icon-cache: don't pass STAGING_LIBDIR_NATIVE to intercepts
5171329 intercepts/update_icon_cache: use STAGING_DIR_NATIVE from environment
d18d902 lib/oe/rootfs: tell intercepts where the native sysroot is
9336e1f subversion: add explicit dependency on file-replacement-native for native builds
19358d0 rpm: add explicit dependency on file-replacement-native for native builds
698c3de file: don't replace host file when built natively
83a2bde sanity: check that the host has file installed
43c46e9 bitbake: add file-native to ASSUME_PROVIDED
2925cd9 Revert "runqemu-export-rootfs: update location of unfsd binary"
d023d99 populate_sdk_base: Ensure PKGDATA_DIR exists
9b956c4 Perl: Use CC version not $Config(gccversion)
0f75740 wic/utils/oe/misc.py: Preserve PATH when running native tools
273bcb4 mtools_4.0.18.bb: Use create_wrapper() for mcopy
031d464 scripts/oe-pkgdata-util: Fix variable name in error handling
d8d4ce7 Add 850 codepage to uninative-tarball
c1d5e89 e2fsprogs: backport a patch to fix filetype for hardlink
426a9b7 oeqa/selftest: Added testcase decorators.
835525c runqemu-ifup: Check if the tap interface is set up correctly
b13c0be qemurunner: Show the output of runqemu script
9846275 runqemu-internal: Enable support for use virtio devices.
304c956 linux-yocto{, -rt}: Enable support for virtio drivers in qemu machines.
eebcbe1 runqemu: Enable support for kvm without vhost in x86 and x86_64
135d094 prserv.bbclass: remove it since it is null
c509c78 initscripts/sysfs.sh: Mount devtmpfs on /dev/ if needed
022f8cc image-mklibs.bbclass: update i586 TARGET_ARCH test to i*86
d492a70 base.bbclass: considering multilib when setting LICENSE_EXCLUSION
54b7471 gcc-target.inc: Add support for executable thats may have a suffix
0d69a171 cairo: backport fix for compatibility with OpenGL ES 2.0
64b5e3e mesa-demos: fix deadlock in sharedtex_mt
dc8495f bzip2: fix bunzip2 -qt returns 0 for corrupt archives
5bf1430 gnome-desktop: add xkeyboard-config dependency
48443cc gtk+3: Do not try to initialize GL without libgl
59fdbae classes/insane: rename invalid-pkgconfig QA check to invalid-packageconfig
73e1d33 uclibc: Implement syncfs and AT_EMPTY_PATH for all and O_PATH for arm
2e4575d systemd: Fix build with uclibc
40911f4 libtirpc: Fix a bug exposed by uclibc
d90d3e8 libpam: Fix build with uclibc
32c8625 coreutils: Do not use host paths in getloadavg.m4
20b7d87 coreutils-6.9: Add missing dependency on virtual/libiconv
8bb6436 uclibc: Fix build with gcc5
e5e8fce libtirpc: Refresh uclibc patches
fd66dd1 rpcbind: Fix build with uclibc
369c536 scripts/oe-publish-sdk: create directory before making git repo
8a555fe rootfs.py: add more info to the warning message
787253f package signing: automatically export public keys
579e254 package_manager: fail if signed feeds are enabled for ipk or dpkg
835e755 Add new bbclass for package feed signing
822844d sign_rpm.bbclass: make RPM_GPG_NAME a mandatory setting
48d60fc sign_rpm.bbclass: be more verbose in case of error
dbb9af6 package_manager: support GPG_PATH variable
b682fca sign_rpm.bbclass: introduce GPG_PATH variable
8ccbc26 apr: remove conflict with ccache
5e42593 linux-yocto: nf_tables: Add nf_tables feature
1c2fdd9 linux-yocto/3.19: fix ARM boot with gcc5.x
3bab714 linux-yocto: skip kernel meta data branches when finding machine branch
1561d0d kern-tools: avoid duplicate .scc file processing
47dcee2 linux-yocto/4.1: drm/i915: Fix the VBT child device parsing for BSW
380f2c6 linux-yocto: axxia configuration updates
505a826 build-appliance-image: Update to jethro head revision
7d30d67 ref-manual: Updated the allarch class description.
a8674ae ref-manual: Updated the MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS variable
e7c8c79 ref-manual: Added the 1.8 to 2.0 migration section.
cd48ccc dev-manual: Added notes to clarify use of pkg-config
dc9e4cb ref-manual: Added correct class name as part of pkgconfig description
5bc8fa6 ref-manual: Fixed typo in 1.6 migration section for BitBake
2fe3809 ref-manual, dev-manual: Applied feedback to edit several classes
359b7fb ref-manual: Added three PACKAGE_FEED_* variable descriptions
2f4e90c toaster-manual: Updated the json file example bits to be current
66653cb ref-manual: Updated the image-swab.bbclass description
d66cf20 toaster-manual: New section on PREFERRED_VERSION
4b9daa8 ref-manual: Added many new class descriptions.
ae0d508 toaster-manual: Added note for creating virtual environment
98d7d24 toaster-manual: Updates to example toasterconf.json file
b263a3e dev-manual: Added CentOS packages to enable runtime tests on QEMU
9abc72c adt-manual: Fixed PMS typo
2e7d650 ref-manual: Updates to clarify Fetcher URL directory parameters
7facee6 toaster-manual: Updated the section for setting up virtual env.
10970a6 dev-manual: Added package requirements for runtime QEMU testing
acacf6b ref-manual: Added linuxloader.bbclass reference description.
8fc90a7 Makefile: Updated the make file to not create toaster-manual pdf
0889848 dev-manual: Updated devtool build --help example
1944d28 documentation: Updated files to support 2.0 release.
8d2a6f0 toaster-manual: Removed "dizzy" and replaced with "jethro"
3bff581 ref-manual: Added descriptions for 5 new variables and 2 tasks.
a87268e dev-manual: Updated the Marking Packages information.
1c7f462 ref-manual: Added oe-seltest package requirements sections.
3d82046 adt-manual: Updated the build toolchain section with more detail.
54b4aff adt-manual: Updated some hard-coded distro values
196210f dev-manual: Updated the multilib example.
3930f04 ref-manual: Updated the EXCLUDE_FROM_SHLIBS description
0d1c86b ref-manual: Updated EXCLUDE_FROM_SHLIBS description.
eea7521 ref-manual: Updated distrodata.bbclass example
2eaf843f ref-manual: Added new description for PACKAGE_EXCLUDE_COMPLEMENTARY
97298fb dev-manual: Fixed typo in path for wic plugins
05d8101 ref-manual: Added new EXCLUDE_FROM_SHLIB variable
316d432 ref-manual: Added new variable description for SKIP_FILEDEPS
a1b25e6 yocto-project-qs, ref-manual: Replaced "yum" with "dnf"
d284fba ref-manual: Added cross-reference phrase to some variables
5a226f7 dev-manual: Changed multilib example
6ca549f dev-manual: Added note about building out Autotools projects
92b26ad archiver.bbclass: Fixes and improves archiver class for kernel and gcc packages
2d00803 oeqa/selftest: improve config writing and cleanup
1881564 oeqa/selftest/wic: remove numbers from test names
2ac34d2 oeqa/selftest: clean up selftest.inc in teardown
a66ed33 oeqa/selftest/wic: fix cleaning
b67b1a4 oeqa/selftest/wic: corrected testcase decorator for test18_iso_image
e191120 oeqa/selftest: verify that devtool can use plugins in other layers
b8a9728 oeqa/selftest/buildoptions: Use the correct script for cleaning the workdir
94decbc oeqa/selftest/bbtests: Updated bitbake TCs
322c324 oeqa/selftest/bbtests: clean up local DL_DIR/SSTATE_DIR safely
cf311a7 oeqa/utils/ftools: From functions that expect data, check if None
900639c oeqa/utils/ftools: Ignore the exception if file does not exist
2e91cbd oeqa/selftest/manifest.py: Test support for manifests
c9bef34 useradd_base.bbclass: Do not warn without a reason
accb59e qemu: disable Valgrind
ac1bc7d i2c-tools: fix inverted RDEPENDS
35c043b rpm: remove spurious build dependencies
41cbfd7 gcc-5.2: Fix various _FOR_BUILD and related variables
a27da70 sudo: fix file permission for /etc/pam.d/sudo
abeaed9 openssh: fix file permission for /etc/pam.d/sshd
96a5cfd sanity.bbclass: expand warning when chmod fails
409e6e0 populate SDK: prepare calling of bb.utils for exceptions
db55d31 devtool: handle virtual providers
8578bc1 libc-package: Fix localedef multilib dependency issues
0942aff toolchain-shar-extract.sh: print full-length title underline
9630fc1 classes/populate_sdk_ext: detect and warn if running in OE environment
254ff38 classes/populate_sdk_ext: add note to env setup script
9a81ba7 classes/populate_sdk_ext: prevent image construction from executing on install
ec5ec35 classes/populate_sdk_ext: consistent indentation
b8f7042 oeqa/runtime: Fix setUp and tearDown methods
3327401 oetest: Add tearDownLocal class
3b7853a test-empty-image: rename from core-image-empty
5febb1d scripts/gen-lockedsig-cache: fix race with temp file creation
3b5d6ff image-live: make SYSLINUX_ROOT changable in image recipes
5009966 toolchain-shar-extract.sh: provide proper path for env_setup_script
ae7703f classes/base: provide hints on PACKAGECONFIG error
5a02ec2 devtool: extract: fix error handling
3aac110 metadata_scm: rewrite git hash logic
59668f2 linux-yocto-custom: fix typo in Upstream-Status tag
c52dcb0 grub-efi, gummiboot: Emit correct path in startup.nsh
f9d29ab coreutils: fix for native and nativesdk
b1a7405 gcc-4.x: fix wrong warning when using the universal zero initializer {0}
402723e tzdata: reinstate changes reverted in 2014c upgrade
3770461 build-compare: drop PATCHTOOL setting
4846260 common-licenses: use correct GFDL-1.1 license text
a9053ac bitbake: toaster: Add tests for error message display on the build dashboard
2517987 bitbake: toaster: Modify "New build" button behaviour for cli builds project
56d4c84 bitbake: toaster: Clean up template code
d96cedf bitbake: toaster: More linting of tests
7c8877e bitbake: toaster: Show tooltip next to cli builds project name in all builds
7670234 bitbake: toaster: Hide tabs and add info popups for command line builds
da4c614 bitbake: toaster: Make the builds view the project page for "command line builds"
ef6fc2b bitbake: toaster: Replace "Run again" button with help text for cli builds
7467b68 bitbake: toaster: Exclude "command line builds" project from projects typeahead
b5624c7 bitbake: toaster: Show 'not applicable' for default project machine and release
3c4c984 bitbake: toaster: Reorganise and lint tests
3ba43f2 bitbake: fetch2/hg: Include missing errno import
6fa3fec bitbake: cooker: normalize build targets
5effe8f bitbake: toaster: Allow any text input to machine configuration variable
320d05e bitbake: toaster: exit or return depending on the mode
2e2e40c bitbake: toaster: set TOASTER_MANAGED variable
a73895e bitbake: toaster: get rid of SRCFILE
779539c bitbake: toaster: use path to the script to guess config path
eb8b2b9 bitbake: toaster: Guard against builds with no targets
65e8bde bitbake: toaster: Remove Toaster exceptions section of build dashboard
93f0b61 bitbake: toaster: Record critical errors
069a611 bitbake: toaster: Test that exception isn't thrown by project page
026e981 bitbake: toaster: Check whether buildrequest exists before using it
1feeb8e bitbake: toaster: Always run bldcontrol migrations
ae82d77 bitbake: toaster: buildinfohelper Detect command line builds
596c219 bitbake: toaster: Disable add layer button when input is empty
24e5a17 bitbake: toaster: Have 'Version' next to recipe name
c895838 bitbake: toaster: Improve directory structure layout
2f52ef4 bitbake: toaster: importlayer Update property names for importlayer api calls
556c0ea lib/oe/image.py: Fix dependency handling for compressed types
d302c98 bitbake: toaster: Fix missing tooltips from layers on project configuration page
7e5464b bitbake: toaster: Fix broken test case
2e375e6 bitbake: toaster: exclude recipes with empty names
fa3e82d bitbake: toaster: delete recipe if it can't be saved
82675fc bitbake: toaster: Remove project name from latest project builds
6aeaca1 bitbake: toaster: test get_alldeps API
0fb6be0 bitbake: toaster: fix orm tests
dea679a bitbake: toaster: fix NameError
6e0c0fd bitbake: toaster: use get_alldeps in layerdetails renderer
bd2ec77 bitbake: toaster: implement API to get full list of deps
05594f8 bash: Disable custom memory allocator
adbbab7 icu: fix install race
b1d0aab webkitgtk, gcr, libsecret: force ARM mode
67d6500 gtk+3: gtk3-demo needs libgl
f385ed1 lib/oe/distro_check: Remove '_proxy' on dict values used by urllib.open
4bf7b7d cups: fix non-deterministic xinetd behaviour
32dbf71 cronie: clean up bugtracker info
6396d6a irda-utils: clean up bugtracker info
8d5878b screen: fix CVE-2015-6806
acdc2db kbd: provide a workaround for build failures
67959b9 machine/qemu: Fix OpenGL/GLX support with xserver-xorg.
fedff4f busybox.inc: remove redundant @DATADIR@ replacement
78b9d2d insane.bbclass: remove misleading path in warning
8995a30 iptables: only check libnetfilter-conntrack when libnfnetlink is enabled
e35c404 bitbake: toaster: Don't descend into directories for cached_layers
d9528d9 toasterconf: update meta-yocto to jethro and drop dizzy
2d6701f bitbake: toaster: Update JS unit tests
ab896df bitbake: toaster: Fix stale layer state buttons
41a5f82 bitbake: toaster: tables Add the recipe filter back into the Recipe table
2bebcd4 bitbake: toaster: Fix typo in returning pk list of layer versions in current project
d6d680d bitbake: toaster: layerdetails update build recipe button class name
7794b57 bitbake: toaster: Hide "Download build log" button if log doesn't exist
8c69539 bitbake: toaster: fix naming for clone directory
41286f4 bitbake: toaster: buildinfohelper Skip packages we have no build info about
97d0006 bitbake: toaster: buildinfohelper associate build data with built_recipe
0dcc963 bitbake: toaster: remove bashisms so script works in dash as well
8068aa3 bitbake: toaster: get rid of interactivity in bldcontrol
7d7823e bitbake: toaster: check for configuration file and exit if not found
315989c bitbake: toaster: remove layer and build dir interactive questions
489d5ff bitbake: toaster: removed superuser question from startup
c7d1dab bitbake: toaster: orm Machines filter don't pass self in as parameter
dd957fe bitbake: toaster: Rationalise mimetype guessing to fix artifact downloads
ce9011a bitbake: toaster: Use Python's mimetypes module
466bbec bitbake: toaster: display warnings for bad "IMAGE_FSTYPES" values
8b7d846 bitbake: toaster: Set default columns in recipes tables
9daf6ef bitbake: toaster: Comment out broken sorting and filters
b661f53 bitbake: toaster: Don't HTTP cache ToasterTable responses
a3742a0 bitbake: toaster: Don't add new history entries when table data loads
fa68ae0 bitbake: toaster: use meaningful logging levels
bd8b27b bitbake: toaster: ignore ReachableStamps event
ceeb52a linux-yocto: Update SRCREV for genericx86* BSPs
7766265 os-release: fix do_compile() when RPM signing is enabled
9a02df0 readline: actually apply readline63-003 (aka CVE-2014-2524)
a856580 rpm: fix return without value in patch
49bf4b1 Revert "qemu-native: Enable temporary debug info as default."
ad8c021 linux-yocto/4.1: drm/i915 backports
48e5579 oeqa/utils/qemurunner: Add support for Unicode from qemu
1f99452 report-error.bbclass: Support Unicode reports
b25af33 udev: add PROVIDES = "libgudev"
a0d9d2d lib/oe/image.py: Add image generation for companion debug filesystem
8ee9a93 package_manager.py: sort output of OpkgPkgsList().list
37c54af ThunderX: Add initial tune file
a0e7311 tzdata: update to 2015g
931dda4 tzcode: update to 2015g
8cacd22 recipetool: create: fix change in path structure if --extract-to path exists
e961688 devtool: update-recipe: avoid updating patches that have not changed
07fc8c2 oe-selftest: wic: fix LocalSetup
eac61f3 build-appliance-image: Update to jethro head revision
c9bdcf5 oeqa/runexported: Replaced optionparser with argparse.
038ae3f systemd: remove glib-2.0 build dependency
0516cd2 webkitgtk: Add some PACKAGECONFIG options.
dff30d2 fontcache: allow to pass extra parameters and environment to fc-cache
d5ce2f5 webkitgtk: Use ON/OFF for cmake switches.
ebd5035 testimage: Added IO commands to dumps
b73a35e distro-alias.inc: Updated for jethro 2.0 release
b7f9cde build-appliance-image: Update to jethro head revision
cf8ad8d toaster: Special case the openembedded-core layer to avoid duplicates
20b888b build-appliance-image: Update to jethro head revision
8fb5a5a bitbake: bitbake/lib: Update version to 1.28.0
0eca7ff build-appliance-image: Update to jethro head revision
34fede6 poky.conf: Bump version for 2.0 jethro release
a7329e1 Revert "oeqa/runtime: Added one runtime testcase in connman."
c2e78e3 qemu: Drop BROKEN usage
e788961 smart:cache.py: getPackages() matches name + arch
f3e57ba devtool: modify: use correct local files directory name
7cb0765 xuser-account: Take over xuser specific D-Bus policy
cdaa8fd bluez5: Use upstream D-Bus policy
e4a4961 ptest: run-ptest not required to run do_install_ptest
12cd705 distrodata: Take account proxies on distrodata tasks
f047ee8 devtool: update-recipe: enable var history tracking
979de77 lib/oeqa/selftest/yoctobsp: Basic tests for yocto-bsp script
e20d8b8 scripts/lib/bsp/engine: Indent the karch properties when stored into a file
f2933cc yocto-bsp: Update templates to 4.1 kernel
8283a57 scrips/lib/bsp/engine: List properties to stdout when output parameter is omitted
b355a5e scripts/yocto-bsp: Exit successfully when asking for help
ad9ee3d meta-yocto-bsp: bump to linux-yocto 4.1 for the non-x86 BSPs
cdc57f6 bitbake: siggen: Make it clear why nostamp tasks signatures don't match
1630f0a bitbake: runqueue: Add handling of virtual/xxx provider mappings
0b96e6f bitbake: taskdata: Add a function to return the virtual/ mapping data
40fae32 bitbake: cookerdata: Rename BBPKGS -> BBTARGETS
1e467b3 bitbake: bitbake-worker: Guard against multiprocessing corruption of event data
e5b9c2a oeqa/selftest/wic: Use SetupLocal instead of Setup
4266cc9 kernel.bbclass: fix the bug of checking the existing sections in do_strip()
ec1146e linux-yocto_{3.14,3.19,4.1}: qemuarm enable virtio drivers
2ea0e4c runqemu-internal: qemuarm enable usage of virtio devices
a23239a gnome-doc-utils: xslt - don't install Makefiles
f671163 apr-utils: cleanup buildpaths for target stuffs
f68d739 apr: cleanup buildpaths from target stuffs
a7ac905 curl: cleanup buildpaths from curl-config
833bfd3 dropbear: fix key generation when systemd is in use and rootfs is readonly
d592abd image.bbclass: tweak the key location for dropbear when rootfs is readonly
299806d openssh: fix sshd key generation when systemd is in use and rootfs is readonly
006497e image.bbclass: when building a readonly rootfs, tweak ssh settings regardless of init system in use
f1e2515 lttng-tools: Drop KERNELDIR reference
381a7bd meta-ide-support: No need to mark as nostamp anymore
ab9d2bb adt-installer: No need to mark as nostamp
d8ab563 distutils3: Avoid MACHINE specific checksums
a0d6322 gstreamer-omx: Improve variable expansion of ${S}
c71bd57 bitbake.conf: Exclude sstate-outputdirs flag from checksums
f02cbc6 deploy: Mark deploy tasks as MACHINE specific
a0435bf layer.conf: Add SIGGEN exclusion for oprofile kernel dependency
f4a8917 layer.conf: Improve siggen exclusion to handle virtual/libc
6fe4fd2 multilib_global: Add handling of SIGGEN variables for multilib
2c19695 lib/oe/sstate: Add tasks_resolved handler for virtual/xxx mappings
ff17f14 oeqa/selftest/sstatetests: Add test that MACHINE doesn't change target sigs
d822764 meta-selftest: Add qemux86copy machine
6cfc7c0 oeqa/selftest/sstatetests: Add check for same sigs for SDKMACHINE
5dbd061 multilib.conf: Ensure MACHINE doesn't change target sigs
71fdb36 gcc-multilib-config: Ensure SDK_ARCH doesn't change target sigs
c9ea0c6 lib/oe/package_manager: Handle empty package list in opkg case
ec504e0 oeqa/utils/decorators: Append the testname without the full path
8fe5b48 kern-tools: fix multi-layer patch application
b054506 linux-yocto/4.1: braswell bug fixes
c6c093b linux-yocto/4.1: update to 4.1.8 -stable
a502a2d linux-yocto-rt/4.1: integrate axxia BSP
38f0ffa meta: fix build with gettext 0.16.1
56c0fdf hostap-utils: Use C99 stddefs in defining local typedefs
34707c2 linux-yocto-custom: Update for newer kernel
df09a6f oetest: Change logic of a failed test
7a6cb2e cwautomacros: cleanup buildpath in autogen.sh
1222eb1 oeqa/runexported: Fix a problem with ssh_target_log existing in folder.
cb93670 qemurunner: Sanitize output from qemu and qemu pid
ba0f6ca oeqa/testimage: Add ability to run single test from suite.
3e40688 recipes-extended: remove duplicate recipe and .wks
6f2047a runqemu-internal: Make sure two serial ports always exist
385a5e8 cross-canadian.bbclass: big-endian ARM is also gnueabi.
7c96fcf openssl: fix ptest failures
d9ce095 python-async: inherit setuptools
adb6987 util-linux: add runuser PAM config files to fix runuser error
9549f57 oeqa/decorators: Fixed a problem with decorator logs link.
790b6c7 oeqa/selftest/wic: Added testcase decorator to all testcases + fixed minor typos.
ffd4bd6 toolchain-shar-extract: Correct environment-setup script names for multilib
249b810 lsb: add lsbinitscripts and util-linux rdepends
c7548b5 systemd: add PACKAGECONFIG for qrencode
3b04553 opkg: create opkg.lock in /run instead of /var/run
c275627 toolchain-shar-relocate.sh: make it faster
434665d populate_sdk_base: Simplify postprocess commands
5bfcd13 classes/meta: Add DISTRO_FEATURES check for gtk+/gtk3+
5b629a9 devtool: modify: make bitbake use local files from srctree
e9bae50 devtool: better support for local source files
a74fa38 devtool: file mover function that creates target dir
109c09b devtool: update_recipe: refactor patch generation
c976028 devtool: update-recipe: add new patches in correct order
2f8440b oe-selftest: devtool: add method for checking repo status
0a9f59e oe-selftest: devtool: add method for checking srctree repo
afb0142 oe-selftest: devtool: add setup() method
31c3078 oe.patch.GitApplyTree: add paths argument to extractPatches
d5e2dd4 recipeutils: implement get_recipe_local_files()
4bc3f09 bitbake: toaster: move clones into subdirectory
9e1516d bitbake: toaster: make clone directory name unique
552fd83 bitbake: toaster: fix reimporting module
55dc927 bitbake: toaster: fix bug in resetting git repository
6939340 bitbake: toaster: use git reset --hard instead of rebase
3d73dfa bitbake: toaster: don't use --single-branch when cloning
226e7da bitbake: utils: only add layer once in edit_bblayers_conf()
d48b7ef bitbake: toaster: display most recent builds for projects
f902dc6 bitbake: toaster: orm remove the complicated querying on the ORM
fe29297 bitbake: Revert "bitbake: toaster: don't re-create Target objects"
e6d967d bitbake: toaster: buildinfohelper Create a copy of the built layer and recipe
17fe16b bitbake: toaster: tables show all recipes in the layerdetails even duplicates
aed6d2e bitbake: toaster: Prioroitise the layer more generic vcs reference over the sha
922503f bitbake: toaster: Create a relationship between build information and toaster layers
0bc0a44 bitbake: toaster: Special case the openembedded-core layer to avoid duplicates
e68f63a bitbake: toaster: Add test cases for new Image customisation features
d98c771 bitbake: toaster: Add Image customisation frontend feature
37948cc bitbake: toaster: Add ToasterTables for Image customisation feature
a3ff4b2 bitbake: toaster: Add new ReST API for Image Customisation feature
28153ac bitbake: toaster: Fix indentation of jsunittests view
60f3ddb bitbake: toaster: implement decorator for REST responses
a7f43bd bitbake: toaster: add toggle for enabling image customisation feeature
3ff6401 bitbake: toaster: Add CustomImageRecipe model
8948d04 bitbake: toaster: ToasterTable remove unused class definition
c1157cf bitbake: toaster: add nocache option to the ToasterTable widget
1cafc39 bitbake: toaster: widgets ToasterTable Add more info to search field exception
c71bbad bitbake: toaster: widgets ToasterTable add logger to notify when cache hit
934f8d7 bitbake: toaster: create custom layer and recipes for Image customisation
340b398 bitbake: toaster: tables Move the title and name into the widget
e1851fe bitbake: toaster: make a workaround for old style index
f78f902 bitbake: prserv/serv.py: Better messaging when starting/stopping the server with port=0
134b267 bitbake: prserv/serv: Close the DB connection out of class destructor
caf422c multilib: Add TARGET_VENDOR to saved variables list
3af9f06 oeqa/sdk/gcc: Fix makefile test
00f0d2b gdk-pixbuf: Only apply native cleaning in normal task, not setscene
452237b runqemu-export-rootfs: update location of unfsd binary
aa1253f runqemu: don't complain about conflicting machines if they are equal
994915b oeqa/testimage: Remove absolute path to oeqa from json
f8da3b6 iproute2: fix the configure process
218d9f4 gcc-multilib-config: Expand ccargs variable
be13cdb Empty image: core-image-empty recipe
2bbec56 Empty image:rootfs.py:handle empty PACKAGE_INSTALL
4562f3f gstreamer1.0-plugins-bad: change glimagesink rank to marginal
677a463 linux-yocto/4.1: rt update to 4.1.x-rt8
cdd9c4c linux-yocto/4.1: common-pc-drivers: add CONFIG_PATA_SCH
9028d93 ltp: replace 'inline' with 'static inline' for gcc 5.x
5942dfe waffle: Fix build with musl
cfa3ed0 cups: fix pam configuration file's permission
8227d49 busybox: Use CC instead of bare LD to be the Linker
a3c4817 busybox: Use UTMPX instead of legacy UTMP
ea031f0 distrodata: handle recipes with empty or absent SRC_URI in checkpkg()
5cc44fe recipeutils.py: don't hardcode the upstream version as 1.0 when SRC_URI is empty or absent
320500e oeqa/parselogs: Updated log parser whitelist.
adeba9a connman: Don't use a blanket "allow" D-Bus policy
907c8a7 connman: Depend on xuser-account unconditionally
1b146c5 byacc: add missing patch header
5fd3089 sstate: run recipe-provided hooks outside of ${B}
3fb464f oeqa/decorators: Add timestamp to decorator logs.
5f371e5 image types: add hdddirect
ca52ca0 packagegroup-core-standalone-sdk-target: ensure libatomic is in SDK
6d68ba9 glibc/mmc-utils: Rename 'BRANCH' variable to 'SRCBRANCH' for clearness
c5aab3f sanity.bbclass: show warning when chmod fails
5702a19 systemd: apply persistent storage udev rules also for /dev/hd*
cb24cbb rpm: search for gpg if gpg2 is not found
217cccd openssl: Add mapping for nios2
3408d0d qemurunner: Handle qemu start failure correctly
79e3418 gcc-runtime: Add multilib C++ header mapping
09af262 oeqa/oetest: Fix SDK command execution
5d4f39f mulitlib: Ensure SDKTARGETSYSROOT is set correctly
c356961 gtk-icon-cache/pixbufcache: don't set GDK_PIXBUF_MODULEDIR
4a36842 librsvg: tell configure where gdk-pixbuf-query-loaders is
8a12632 gdk-pixbuf: move gdk-pixbuf-query-loaders to $libdir for multilib safety
b070778 gdk-pixbuf: move gdk-pixbuf-pixdata to gdk-pixbuf-dev
7fb583a multilib: Drop populate_sdk variable manipulation
eb7b1a5 package_manager.py: make rpm install mutilib pkgs corectly
5a51fb2 bitbake: prserv/serv: Start/Stop daemon using ip instead of host
2687b24 gdk-pixbuf: Avoid rebuild failures
94184a0 systemd: fix tmpfiles location when multilib in use
179ee77 p11-kit: configure without trust-paths
c7624b4 oe-pkgdata-util: avoid returning skipped packages
dd11f5c toolchain-shar-extract.sh: remove checkbashism
99fc786 archiver: stamp-base is dead, remove it
ce7bc12 gcc-shared-source: Set empty SRC_URI
47ef201 libgcc.inc: package baremetal multilib libraries
aff7e72 meta-selftest: add error recipe and error-image
261e68c libksba: fix pkgconfig patch
3235a64 systemd: disable problematic GCC 5.2 optimizations
6e7ed5e Revert "systemd: disable problematic GCC 5.2 optimizations"
9673278 oeqa/selftest/archiver: Test that archiver filters on recipe name
6807327 oeqa/utils/dump: Add default commands and directory
5d31e94 webkitgtk: add REQUIRED_DISTRO_FEATURES
8733b53 oeqa/runexported: Removed DEPLOY_DIR as mandatory.
f1e7fb0 oeqa/oetest: Remove bb as requirement for oetest.
d70c5cb gcc-5.2: disable isl
66dca4b kmod: Change SRCREV to fix return code in error path
61e77c7 oeqa/runtime/parselogs.py: Fix dmesg log retrieve in sato
dd26efb insane.bbclass: make package_qa_clean_path return a relative path
bdbd8b4 devtool: upgrade: use shutil.move instead of os.rename
346784b devtool: runqemu: avoid recipe parse
85d8b4a devtool: second fix for running from a different directory
6363a95 guile: cleanup buildpaths and add RDEPENDS on pkgconfig
6d1447b gmp: Use __gnu_inline__ attribute in 4.2.1
42dc902 pseudo_1.7.4.bb: fix f*open()
9f66aa1 bitbake: toaster: start script warning text formatting small improvement
c6eaef0 bitbake: tinfoil: remove logging handler at shutdown
fb26ea3 bitbake: toaster: remove time from builds in progress
15b482b bitbake: toaster: Add fake entry to Target_File for filesystem root
767fe69 bitbake: toaster: layerdetails Fix back button tab behaviour
4c0320f bitbake: toaster: UI test improvements
4c5af77 bitbake: toaster: support selenium testing from mac OS X
e6c4970 bitbake: toaster: add 2 UI tests
f6a70ad bitbake: toaster: change UI to show tasks
08000eb bitbake: toaster: don't re-create Target objects
ea37358 bitbake: toaster: store task name in Target objects
524ddd8 oeqa/utils/qemurunner.py: Remove duplicate message on LoggingThread start
376ce71 oeqa/utils/qemurunner.py: Fix HIGH CPU usage on LoggingThread
6c0066c devtool: add search command
0613301 devtool: add basic means of running runqemu within the extensible SDK
c4181c6 devtool / recipetool: add handling for binary-only packages
76084cd devtool: build-image: delete bbappend at end of build
ef197f9 devtool: build-image: improve image recipe handling
8f67bb7 devtool: build-image: tell user where to find output files
afb9340 devtool: build-image: fix recipe/package terminology
d736518 devtool: add: move important "recipe created" message to the end
3bd0f33 devtool: add: set up fetched source as a git repository by default
e759b0b devtool: better handling for recipes that don't unpack source
a34f733 devtool: fix extracting source for work-shared recipes
5bc437b devtool: show proper error when extracting source for recipes with disabled unpack task
210d959 recipetool: create: fix handling of URIs containing #
a35ad72 recipetool: create: fix creating empty shell functions
30c7e7a devtool: add: properly handle separate build directory
99fc284 devtool / lib/oe/recipeutils: ensure we can parse without bbappends
5d1a117 devtool: add: ensure --color=never turns off recipetool colour output
ae788fb devtool: check that source tree still exists
99cd79d scripts/contrib: add devtool stress tester
e0b9a96 lib/oe/patch: fix for git am not cleaning up after itself
8fb70c6 classes/externalsrc: fix setting of deps varflag as a string
586291f classes/externalsrc: scale back warning to a plain note
72810f9 toolchain-shar-extract.sh: show progress when extracting SDK
0dc9299 classes/populate_sdk_ext: drop work-config.inc
3a08728 classes/populate_sdk_ext: allow custom configuration for extensible SDK
b853dde classes/populate_sdk_ext: fix missing environment settings if running installer with sh
374e1fe lib/oe/recipeutils: properly split unexpanded variable values
7fb3fb9 linux-yocto/4.1: hid, bluetooth, aufs and yaffs2 updates
9241ec5 image_types.bbclass: Don't try to create ubi symlink twice
266e417 oeqa/selftest: buildoptions.py Removed unused imports
329d09f systemd: disable problematic GCC 5.2 optimizations
554c817 libgpg-error: Add support for nios2
84e1100 pixman: Fix missing FE_DIVBYZERO on nios2
9baffc1 libtool: Fix nios2 support
ba1e0ee linux-yocto: depend on libgcc for nios2
8efff24 kernel-arch: Add nios2 to valid archs
4d9af35 siteinfo: Add nios2-linux
76a8c74 insane: Add nios2 support
6adffd0 autotools: fix traversal bug in aclocal copying
6a02bbd python3-debugger: Adds pkgutils dependency to pdb
a7dd758 python3-debugger: fix importlib dependency
0e5a911 libsdl: depends on libglu when both x11 and opengl
d762ea1 lttng-tools: sessiond: disable: match app event by name
c8a7d76 testimage.bbclass: Fix break introduced with SIGTERM handling
7d166a6 sysstat: Include needed headers explicitly
d36384e connman: Fix build with musl
0df9b98 quota: Replace using -I= with STAGING_INCDIR
433a7a0 opkg: Include stdio.h for FILE definition
5aadabf syslinux: Dont bypass gcc driver for dependency generation options
05b9a0c gnu-efi, syslinux: Support gcc < 4.7
cdfd96e gummiboot: Fix build warnings seen with gcc5
0141652 qt4: Fix kmap2qmap build with clang
6b73a05 xz: Correctly specify GPL-3.0 with autoconf exception
a96069d insane.bbclass: drop extra line-feed in pkgname check
10fb575 insane.bbclass: show PN and relative path in package_qa_check_host_user
5624889 package.bbclass: add summary line to installed-vs-shipped QA check
d6e40e8 initramfs-framework: better error reporting for invalid root boot parameter
288a9ff initramfs-framework: fix "support dropping into shell on failure"
5ff7e8d qt4: remove already merged patch
9578b09 gdk-pixbuf: remove redundant libx11 DEPENDS line
fe70aa4 runqemu-internal: For qemumicroblaze use the QEMU provided device tree
9aaf7e3 runqemu-internal: Fix qemu networking for qemuzynq an qemumicroblaze
be493ba libpcre: Allow building 16 and 32bit libpcre versions
f32a6e1 oe-git-proxy: Allow socks4 as protocol in $ALL_PROXY
18309f0 oe-git-proxy: Correct the parsing of a port in $ALL_PROXY
c035f35 oe-git-proxy: Allow explicit IP addresses in $NO_PROXY
bbe06b4 oeqa/testimage: Enhance -v switch in testimage
e0b38f2 wic-image-minimal: add dependency to .wks
dd7726f wic: fix partition size calculation
219d73a wic: use ext4 in wic-image-minimal.wks
ce2cb45 wic: add dependencies to wic-image-minimal recipe
a66f586 testimage.bbclass: Don't require an image manifest
39c11d8 gstreamer1.0: Fix basesink drop buffer error
5f13793 grep: fix install if bindir == base_bindir
b17c02f gzip: fix install if bindir == base_bindir
b6f8ea1 cpio: fix install if bindir == base_bindir
fe0cdab tar: fix install if bindir == base_bindir
c6b52f3 bind: fix too long error from gen
81d65df ccache: fix file name too long
cdbe5c9 bitbake.conf: update APACHE_MIRROR
12772c8 linux-yocto/4.1: hid-core: Avoid uninitialized buffer access
88b11e6 kern-tools: optimize patching peformance
0864782 linux-yocto/4.1: aufs, yaffs2 and driver fixes
7b86c77 bitbake: bitbake: bb.fetch2.git: Import errno module
e993aa6 bitbake: toaster: hide irrelevant builds in the project builds view
5b4e380 bitbake: data_smart: Ensure OVERRIDES dependencies account for contains()
60d019d bitbake: data_smart: Correctly handle OVERRIDE values set using ??=
701ad76 bitbake: data_smart: When considering OVERRIDE dependencies, do so recursively
4325f6f bitbake: data_smart: Expand overrides cache recursively
3a5e46b bitbake: bb.fetch2.{git, hg}: remove tarball if it needs updating
441f04c bitbake: toaster: Simplify redirects when build page parameters are missing
30f9f79 bitbake: toaster: Fix date range pickers on the project builds page
047245f bitbake: toaster: Show correct builds count on project pages
5528f3a bitbake: toaster: hide irrelevant builds in the project builds view
2bb600a bitbake: tests/fetch.py: Fix recursion failure in url mapping
4c3d4ec bitbake: fetch2/__init__.py: uri_replace regex handling
460e4c2 bitbake: toaster: Don't def a function for each call to build_artifact()
b6d1d2a bitbake: toaster: Avoid unnecessary local to local copy of cooker log
8c63d60 bitbake: toaster: Read correct cooker log path from toasterui
013c030 bitbake: toaster: delete multiple builds cleanup
3165af3 bitbake: data_smart: Separate out update_overridevars into separate function
07aef86 bitbake: cache: Handle spaces and colons in directory names for file-checksums
9679500 autotools.bbclass: mkdir ${B} -> mkdir -p ${B}
c30ee2a perf: mkdir ${B} -> mkdir -p ${B}
d18612a recipetool: add 'newappend' sub-command
4727384 oeqa/sstatetests: Add test for nativesdk stamp invariance with MACHINE
56b2c53 glibc: Ensure OVERRIDES doesn't influence sstate checksum
1884550 image.py: Ensure base image size is an integer
ec72426 python: Add python-misc as rdependency to python-modules
c170f35 cryptodev-tests: don't use STAGING_KERNEL_DIR, fix re-packaging in multi-machine builds
2d7fe03 adwaita-icon-theme: RREPLACE gnome-icon-theme
94d280f mkelfimage: fix owner for /usr/sbin/mkelfImage
3323c3f nspr: fix SRC_URI
935a8bd mkefidisk: Create interactive menu for the script
6c05e6a image.bbclass: add do_rootfs vardeps for {COMPRESS, IMAGE}_CMD_*
82be1f3 squashfs-tools: make it be able to be compiled by gcc5 with "-O0"
dc3bc22 linux-firmware: package Broadcom BCM4354 firmware
db8f796 perf: fix the install-python_ext on upstream kernel
bfe2cd1 systemd: fix missing space in SRC_URI append
2515cf2 python: remove --with-wctype-functions configure option
17f5a5a kmod: fix link creation when base_bindir != /bin
e2cfe93 prelink: Move to latest release
32472dc glibc: don't require bash for nscd init script
d8eb9d4 oeqa/decorators: Added decorator to restart the DUT in case of test hang.
5acf99d init-install-efi.sh: Avoid /mnt/mtab creation if already present
ea562de qemu: Update to upstream patches
1d0b922 qemu: remove redundant lines in smc91c111_fix.patch
39b661e webkitgtk: Add patch to fix gcc5 compile issues
572e50d webkitgtk: add a new recipe for latest upstream version
7eabed3 distutils.bbclass: Handle python-backport modules
ca73270 xorg-driver: Fix logical && with bitwise and operation
b5a433f distro: update include files related to webkitgtk and epiphany addition
8fcb01c midori: remove the recipe and replace references to midori with epiphany
e552b25 webkit-gtk: remove the recipe for the obsolete version 1.8.3
23bf09b epiphany: add a recipe from meta-gnome
62fca97 image_types.bbclass: Restore compatibility with previous UBI filesystems
722aa22 image.py: Allow IMAGE_LINK_NAME to be empty
3006cb2 as-needed.inc: add babeltrace exception
75bad1b gcc: reformat 0063-nativesdk-gcc-support.patch
1c914a8 meta: Fix Upstream-Status statements
20d90af maintainers.inc: remove packages that are no longer in oe-core
2625fa5 poky-tiny.conf: Require utmpx, its needed for busybox
2e39f18 maintainers: add maintainer info for new webkitgtk, epiphany and their dependencies
68aefbb bitbake: bitbake-worker: Ensure pipe closure doesn't crash before killpg()
aaa48b6 bitbake: toaster: increase waiting time
58ef81c testimage: Handle core-image-lsb-sdk qemumips test restriction
ba17ce3 oeqa/targetbuild: Ensure we run gnu-configize so config files are up to date
7c2ff62 populate_sdk_base: Fix aarch64 OLDEST_KERNEL sdk issues
6a71f66 testimage: Fix SDK extraction error handling
06cde90 devtool: update-recipe: get srcuri parameters with decodeurl()
9cda8f7 Revert "ptest: use fakeroot for do_install_ptest_base"
10c4f1b u-boot.inc: Add host compiler flags and openssl-native dependency
29e94f6 build-compare: add support for examining deb and ipk packages
3a9e230 classes/sstate: break out function to get sstate manifest filename
2a05181 runqemu: avoid image file name mismatches
c2165c9 u-boot.inc: Add U-Boot ELF install and deploy
302ec46 connman: upgrade to 1.30
08ec92a initramfs-framework: support dropping into shell on failure
04f4ef9 initramfs-framework: support init boot parameter
77524d7 initramfs-framework: support ro boot parameter
d7508fe initramfs-framework: support rootflags and rootfstype boot parameter
f9d2302 directfb: Avoid using VLAs and printf formats
7d018a6 mdadm: Fix bugs exposed by clang
0749e35 sudo: Disable rsize_t deliberately
60a57c7 puzzles: Fix build with clang
decbbac kexec-tools: Pass -r directly to linker
5b97579 alsa-tools: Fix compiling with clang
3d8fd2f latencytop: Fix build with clang
c8f4822 ccache: Dont add LDFLAGS to compiler flags
81d1508 bdwgc: Include signal.h instead of hard asm/sigcontext.h
7e4cc98 minicom: Fix build with musl
f03b36b man: Use -DSYSV when builing for linux
0a67128 sudo: Include sys/types.h for id_t definition
27a850a slang: Fix namespace conflict vis-a-vis posix_close
5ee0383 irda-utils: Weak Define the build TARGETS
18aaf65 bjam-native: build and install bjam.debug
1f86887 gcc-5.2: remake 0040-nativesdk-gcc-support.patch
1dbb37d bind: fix compile failure when building path is long
48a144b sstate: only fetch remote signatures if verification is enabled
f7056fa Revert "boot-directdisk.bbclass: use rootfs UUID by default"
a2ec6d4 ptest: fix file ownerships in ${PTEST_PATH}
e0543d1 runqemu: Define OECORE_MACHINE_SYSROOT on setup_sysroot
30dc71d gnome-icon-theme: remove the recipe
89118a3 pcmanfm: add an icon theme dependency
a14c363 oeqa: Test failure/cleanup improvements
4c73aaf perf: fix the install-python_ext
d0abea0 packagegroup-core-nfs: provide the nfs-client IMAGE_FEATURES
59f822d gstreamer1.0: Fix QoS/lateness checking if subclass implements prepare/prepare_list vfuncs
f051f10 gstreamer1.0: Fix sticky events haven't been sent out when active track reach EOS
9a24b6b externalsrc.bbclass: better filtering of cleandirs
f0af24e buildstats: Outputs 'task recipe elapsed-time' from each buildstats' recipe
9485888 devtool: make plugin_init optional
996ec17 gnu-efi: Make setjmp.S portable to ARM
53e09c5 scripts: Move BUILDDIR chmod fix after checks in oe-setup-builddir
77523c0 gsettings-desktop-schemas: add a recipe from meta-gnome
c52f71c gnome-desktop3: add a recipe from meta-gnome
80ecafc libwnck3: add a recipe from meta-gnome
e28a9f2 gcr: add a recipe from meta-gnome
2096387 p11-kit: add a recipe from meta-oe
f17e1da libwebp: add a recipe from meta-oe
11e6aa6 libsecret: add a recipe from meta-gnome
206049f ruby: add a recipe from meta-ruby
5198ec9 libyaml: add a recipe from meta-oe
4e661a5 wic-image-minimal: add wic image recipe and .wks
32633f0 sanity.bbclass: remove abspath warning for SSTATE_MIRRORS
44ae903 oeqa/runtime/date: stop systemd-timesyncd during test
e20c9ea systemd: Implement OE-Specific systemd-sysv-install
6814767 systemd: Upgrade 219 -> 225
21fffde rootfs: Conditionally uninstall update-rc.d
4cccac9 Revert "rootfs: Do not uninstall update-rc.d"
d4585fa bsps: update 3.14 SRCREVs
4460700 bitbake: toaster: Changes to navigation
6271fcb bitbake: bitbake-worker: Handle SIGKILL of parent gracefully
3195cd9 bitbake: bitbake-worker: Simple code cleanup
85256c8 bitbake: prserv: SIGTERM and deamonization fixes
289007e bitbake: utils: Add signal_on_parent_exit() function
384533b bitbake: server/process: Handle SIGTERM more gracefully
dae69e6 ptest: use fakeroot for do_install_ptest_base
9bfaf59 oeqa/sstatettests: Improve output of assert
79af375 bind: update to 9.10.2-p4
e384b97 screen: backport to fix build error
69b7a61 devtool: fix running from a different directory
7b1f670 devtool: add package plugin that lets you create package via devtool
6d50a5e devtool: update-recipe: add a warning when recipe is inside the workspace
3dd9fc3 devtool: update-recipe: better 'auto' mode
0d0e508 devtool: Allow disabling make parallelism on build command
1a72181 devtool: Create a single file for the build devtool feature
8be95c5 devtool: add upgrade feature
7cde0eb devtool: improve modified file preservation to handle directory structures
ee0c11d scriptutils: split out simple fetching function from recipetool
3690281 devtool: modify: enable do_shared_workdir for kernel
baf39c8 kernel.bbclass: do not mv/link sources when externalsrc enabled
0ec0b17 kernel-yocto.bbclass: do_kernel_metadata depends on do_unpack
07ac146 extrernalsrc.bbclass: treat kernel meta like local source
08e0922 adt-installer: upgrade to opkg 0.3.0
dd075b9 oeqa/parselogs: Updated log error whitelist.
8a2edb9 binutils: Add thunderx support to gas
8ad2c02 linux-yocto/3.14: fix edgerouter (octeon) build
e87c182 qemurunner: Fix killpg pid usage
335260c qemurunner: Ensure runqemu doesn't survive SIGKILL
79bf3f7 rootfs.py: show intercept script output in log.do_rootfs
525979f package_manager.py: search provides when not found by pkgname
4031de5 wic: round variable before converting to int
a0590d1 rootfs: Do not uninstall update-rc.d
697428c busybox: Enable getopt applet
e3b5d8f qemurunner: Drop error to a warning to improve user feedback
fa2f7f9 qemu: Add fixes for smc91c11 qemu segfaults on arm
ee428e2 devtool: add mechanism for updating extensible SDK
2aaa59e oe-publish-sdk: add script
ad95963 Extensible SDK: allow for installation without preparing build system
9f670d1 populate_sdk_ext: don't remove the native qemu dependencies
164136d populate_sdk_ext: consider custom configuration in local.conf
d7efdfe copy_buildsystem: make sure bitbake directory is copied
479deeb populate_sdk_ext: install the latest buildtools-tarball
16d0df5 classes/populate_sdk_ext: avoid poky-specific buildtools naming
4587180 toolchain-shar-extract.sh: explain why we cannot use sudo in extensible SDK
08d0735 toolchain-shar-extract.sh: better default install path for extensible SDK
f5f9185 toolchain-shar-extract.sh: ensure extensible SDK install path obeys restrictions
6b41b7c testimage: handle SIGTERM to conclude runqemu
e570b32 postinst_intercept: allow to pass variables with spaces
ae00b59 rootfs.py: Allow to override postinst-intercepts location
db92bc2 bitbake: toaster: replace ETA with % of tasks done
c386abc bitbake: toaster: fix project names in latest builds
a4dbd4b bitbake: toaster: remove unnecessary white space
1e9ac4c bitbake: toastergui: Add missing files from 1c2f6b9b7b9e700146944b9d6d2114e0d014ee81
c1df471 pseudo_1.7.3.bb: New version of pseudo
e3feac1 sstate: implement basic signing/validation
3bafddb libinput: avoid --enable-event-gui=auto
afcd243 cross-canadian.bbclass: typo fix in comments (s/repsonsible/responsible/)
3b823fe boot-directdisk.bbclass: use rootfs UUID by default
6d7bcd4 boot loader: support root=UUID
5d79814 image-vm.bbclass: support specifying an initramfs
95bfdce image-vm.bbclass: avoid duplicating syslinux default values
82dd3fb initramfs-framework: handle kernel parameters with . inside
8582791 initramfs-live-boot: create /dev/console
cc9ff1a initramfs-framework: create /dev/console
8215c42 runqemu: support full-disk images
9337ce2 oprofileui: Use inherit gettext
4925fa0 oeqa/decorators: Fixed a problem with tests having the same names.
e59b817 libunique: remove the recipe
924348d report-error: send only last 5242000 characters in error logs
466eee6 procps: fix for base_sbindir == sbindir
1e9ed16 nfs-utils: don't force use of /sbin as sbindir
73a6fe9 pcmciautils: handle udev dir being 2 levels below /
b7a6484 bluez: handle udev dir being 2 levels below /
d1c2b4d pulseaudio: handle udev dir being 2 levels below /
d13bbbe alsa-utils: handle udev dir being 2 levels below /
cfdf5d4 systemd: remove hard-coded paths in FILES entries
cf5704e busybox: fixes for when base_bindir != /bin
ef0fe31 oeqa: Test failure/cleanup improvements
3d81a56 tcmode-default: Set gcc 5.2 as the default
a024631 bitbake: bb.fetch: don't remove the clone when an update fails
ba50c2f bitbake: bb.fetch: handle checksums consistently for mirrors
abba11d bitbake: bb.fetch.git: remove leading '.' from gitsrcname
7c4fdb8 bitbake: bb.cookerdata: include useful traceback for ExpansionError/ParseError
5fe590c bitbake: bb.data_smart: retain traceback from ExpansionError
7ef2f95 bitbake: cooker/runqueue: Allow bitbake commands starting with do_
ccc1d9a bitbake: toaster: improve explanation of checkout dir
4b9de76 bitbake: event/server: Add _uiready flag to handle missing error messages
7c07946 bitbake: utils: Fix a potential error in movefile
ea3384e qemu: Fix qemu_cpu_kick_thread on init
92f68b4 package_regex.inc: various updates to improve RRS accuracy
5799269 vte: add RECIPE_NO_UPDATE_REASON
e874dd2 remake: update to 4.1+dbg-1.1
5effdb3 python-smmap: update to 0.9.0
ed77a00 python-async: update to 0.6.2
ff100fd6 mkelfimage: add RECIPE_NO_UPDATE_REASON
bf362e4 net-tools: update to 1.60-25
1f5e747 mailx: update to 12.5-5
d025e78 ccache: update to 3.2.3
fac0d67e testimage: filter proper test cases by tags
1efd172 gcc-target.inc: Remove non-related gcc headers from include_fixed folder
2b6218d devtool: run kernel dependencies
3b3f9bb devtool: extract: correct initial rev for kernel packages
9e9fd09 devtool: make required tasks be run in kernel build
5cf3420 ifupdown: create alternative links
bf18f8a ifupdown: import recipe
338c325 lib/oe/package_manager: Include PACKAGE_FEED_PREFIX instead of hardcode paths
7f93052 libunwind: Security Advisory - libunwind - CVE-2015-3239
1362986 sdk.py: fix conflicts of packages
635d385 image.bbclass: add rootfs_check_host_user_contaminated
2d49767 insane.bbclass: add host-user-contaminated test
b95c340 insane.bbclass: handle tests which need fakeroot
31c231c binutils: Fix symbols with --dynamic-list when using gold linker
bc6a1a2 bitbake: toaster: Add tests for pages which show the default project
3b6d193 bitbake: toaster: Fix test for projects page JSON
3b233fc bitbake: toaster: Exclude default project unless it has builds
c9a05be bitbake: toaster: Only redirect to projects page if user has added projects
214ba67 bitbake: toaster: Improve how default project is identified and fetched
5b26bbd bitbake: toaster: Make 0021 migration compatible with MySQL
24d6d3f bitbake: toaster: show incomplete configuration warning
249f366 bitbake: toaster: disable build button as needed
c80b582 debianutils: create package for run-parts
d8caef4 Fix recursive mode -st on BUILDDIR setup
4287e5e qemu: enable alsa only if in DISTRO_FEATURES
097f36f qemurunner: Handle lack of data on run serial gracefully
a3fec07 image.py: rename _write_env -> _write_wic_env
791a391 wic: fix short variable names
14b47e2 wic: get rid of listing properties
1561970 wic: fix pylint warning redefined-builtin
e7287e5 wic: fix pylint warning unused-variable
e3a062a wic: fix pylint warning no-member
e85f807 wic: use optparse instead of cmdln
f1bcf47 wic: fix pylint warning multiple-statements
0fc551e wic: get rid of wildcard imports
c987683 wic: fix errors in partition.py module
90486ff wic: remove micboot.py
282fb04 wic: remove micpartition.py
2e2ac0c wic: fix typo
4fd65df wic: add test cases for 3 images
bf41b06 oe-selftest: wic: configure a build
7d4bb40 wic: get rid of scripts/lib/image
77561e7 wic: use ext4 in canned .wks files
2e7e720 sysstat: add systemd service files
1031ae3 valgrind: enable rt_sigpending syscall on ppc64 linux
a346a3c kernel.bbclass: add the runtime dependency on kernel-vmlinux for kernel-image
fc6e967 iproute2: upgrade to 4.1.1
636d247 insane.bbclass: Check for invalid characters (non UTF8) on recipe metadata
275fc5f screen: fix parallel build failure
3dd8c75 libnotify: add (R)PROVIDES/RCONFLICTS/RREPLACES for meta-gnome's libnotify
ae69b1f mtd-utils: add xattr PACKAGECONFIG and fix acl dependency
d0b71dd libvorbis: remove legacy options
59c7c7b package_manager: support for signed RPM package feeds
3983e3f os-release: add the public package-signing key
752736a package_rpm: support signing of rpm packages
103f0e5 createrepo: disable RPM signature validation
16bda74 pulseaudio: add 'autospawn-for-root' PACKAGECONFIG
7e11e81 pulseaudio: pass --with-systemduserunitdir
52b75fc packagegroup-core-x11-sato: obey the pulseaudio distro feature
a2b0d04 runexported: Make it compatible with host dump
53ab41a qemurunner: Added host dumps when there are errors
170b89d glibc: package nscd related files
3d75914 bitbake.conf: add MIRROR vars to SRC_URI vardeps
b5c6675 python: Fix python-distutils variables
3e6a5af python3: Fix python-distutils variables
d6b1171 opkg: upgrade to v0.3.0
ab50b1d libevent_2.0.22.bb: Add native and nativesdk support to the recipe.
f321655 bitbake: utils: Specify dest file name in movefile()
383450c bitbake: build: delete tasks thoroughly
71b0568 rt-tests: drop unnecessary added-missing-dependencies.patch
0491a7e openssh: Upgrade 7.0p1 -> 7.1p1
e444e84 dpkg: update to 1.18.2
eb45cd6 cmake: update to 3.3.1
bb72a86 package_regex.inc: updates to improve upstream tracking
ca1497b e2fsprogs: explain why there is no update for now
5e79211 libnotify: don't inherit unnecessary distro_features_check
abd9ae9 dropbear: update to 2015.68
c19225a upstream_tracking.inc: deprecate and move contents to recipes
8c40147 pulseaudio: improve PACKAGECONFIG for dbus/consolekit dependencies
b9cdd11 mirrors.bbclass: Update gnutls mirrors
2eb4b1e gnutls: Upgrade 3.3.14 -> 3.3.17.1
3a37c43 nettle: Add ptests
38f4e92 nettle: Add (LGPLv3) version 3.1.1
6fac60d gmp: Bring back version 4.2.1 (LGPL 2.1+)
b9ade91 nettle: Fix binary license to LGPLv2.1+
cd61c1a Fix mode +st on TMPDIR when creating it
79de172 packagegroup-base: pull in iw as well as wireless-tools
464f4e2 iw: support and enable separate build dir
fbb8b53 iw: obey our target path variables
eced780 iw: inherit pkgconfig
fc4a209 iw: add recipe from meta-networking
e8769bf bitbake: toaster: new Toaster image
3e27f92 bitbake: toastergui: remove old screenshots
22afc04 oe-selftest: test devtool build-image plugin
15526a8 devtool: build-image: add comments
2dac49d devtool: build-image: remove <image>.bbappend
9672624 devtool: build-image: add extra logging
45ebff4 devtool: build-image: generate notification callback
61ecb6c devtool: build-image: filter out recipes
214dd95 devtool: build-image: improve help and description
e9fbc7a devtool: build-image: rename LOG -> logger
7eb7dc8 Revert "devtool: make add_md5 a public API"
71fdc64 devtool: make 2 functions public
906f885 devtool: build-image: stop using add_md5
beea25e oe-selftest: wic: fix test19_image_env test case
67ed7c3 oeqa: Add allarch sstate sig test
fc8ceb7 layer.conf: Add missing dependency for allarch package initramfs-framework
7b421dc wic: use bitbake variable ROOTFS_SIZE
4f7b72a oe-selftest: test building wic image by bitbake
7c09401 wic-image-minimal: add wic image recipe and .wks
7053414 oe-selftest: test generation of <image>.env
7770281 image.py: write bitbake variables to .env file
8a5eb20 oeqa/utils/dump: Handle empty commandlist gracefully
0f84702 image_types.bbclass: add wic image type
530f3c5 wic: implement --vars option
5856f8f wic: implement getting variables from .env files
d80ad23 wic: set default image
95c6749 wic: add default_image attribute to BitbakeVars
e1fe347 wic: create new method _parse_line
58c3930 wic: add BitbakeVars class
92c3f03 linux-yocto-3.14: Use a revision thats on the branch for qemuppc
6b17c38 linux-yocto-3.14: Update to latest revisions
b0db6c2 linux-yocto/3.14/4.1: fix ARM boot with gcc 5.x
ac0b85d oeqa/runtime/multilib: add test for libc
277571b oetest: Fix regresion when testing real hardware
c78ba0d dump: allow to have datastore vars on dump commands
85fd1a7 dump: Created new classes for dump host and target
d14ffaf classes/buildhistory: add build result to commit message
734411a classes/buildhistory: include metadata revisions in commit message
2a08f4a classes/buildhistory: handle additional files at recipe level
846cb34 classes/buildhistory: fix permissions in package file listing
1bfae0f classes/buildhistory: tweak buildhistory_list_pkg_files
5d34d32 classes/buildhistory: indent recently added function consistently
ec412d5 classes/buildhistory: exclude . in file listings
e6c330c classes/buildhistory: ensure we push when "no changes" commits are made
9badc1c image.py: add script output to the rootfs log
5bcc423 image.py: set bitbake variable ROOTFS_SIZE
8313cea wic: deferred call of hlp.get_wic_plugins_help()
31324ed wic: rename variable
b41de12 wic: remove undescore from function name
e79a22e python-distribute, python-setuptools: Migrate to good old python-setuptools
48373be testimage: Run commands in target and host when test fails
f9f1643 byacc: fix compilation on Ubuntu 14.04
6874f5e autotools.bbclass: Allow dependency tracking option to be overridden
4292352 runqemu-internal: Fixes unary operator expected in new TCPSERIAL_PORTNUM
38bc164 linux-yocto-dev: update to 4.2-rc
6e0a563 linux-yocto/4.1: CIRRUS config and quark thermal support
474f66c linux-yocto/4.1: enable DRM_CIRRUS_QEMU and EXT4_USE_FOR_EXT23
6dd4209 linux-yocto/4.1: update to v4.1.6 and v4.1.6-rt5
d1d3b64 linux-yocto/3.14: cleanups and gcc5 ARM build fixes
ad4ab1b linux-yocto/4.1: quark configuration and thermal support
9815270 linux-yocto/3.19/4.1: add coretemp to intel-common-drivers
de7e449 linux-yocto/4.1: fix qemuarm preempt-rt configuration
9253e92 lib/oe/patch: handle patches that delete files with older git
fc209e9 os-release: Exclude DATETIME from sstate signature
4e02e5b layer.conf: Add several allarch dependency exclusions
66b7dfb package_*.bbclass: Ensure OVERRIDES doesn't change sstate signature
d105205 oeqa: Optimise sstate tests
b749251 jpeg: update to version 9a
650fe92 xf86-video-intel: fix missing fstat() prototype
a91e6f6 libatomic-ops: move to recipes-support, fix recipe name
3ffad2d libunwind: always depend on libatomics-ops
a753bc7 nativesdk.bbclass: set sbindir to bindir
67ecba4 update-rc.d.bbclass: explicitly dep on initscripts
b3d8b37 image.bbclass: re-run do_rootfs when feature packages change
641b2e2 bitbake.conf: set PATCHRESOLVE to noop by default
51f95df bitbake.conf: set USE_NLS based on DISTRO_FEATURES
83ac732 bitbake.conf: unexport SHELL
06b97ac systemd: Cache/define tool paths for target
2a9cf4d core-image-minimal: Add 4M extra space when using systemd
f457c98 diffstat: Add TOOLCHAIN_OPTIONS to Linker calls
a95269a liburcu: Fix atomic function parameter types in calls
506c564 systemd: Remove exporting special CPP
0630005 bitbake.conf: Define fallback DISTRO_NAME
36e8f93 mdadm: Upgrade mdadm_3.3.2.bb -> mdadm_3.3.4.bb
9d46958 psplash: Turn psplash_fb_plot_pixel() into static inline
99e67db libvorbis: Update libvorbis_1.3.4.bb -> libvorbis_1.3.5.bb
646a29c json-c: Include math_compat.c for NAN/INF values
0053600 sysvinit: Fix makefile bug found with clang
ff7a4ca cross-canadian.bbclass: support for TCLIBC="baremetal"
443c59b libgcc-common.inc: overrides for libc-baremetal
466684e gcc-cross.inc: overrides for libc-baremetal
260aa52 gcc-cross-canadian.inc: overrides for libc-baremetal
2dd0c1d tclibc-baremetal.inc: baremetal specific distro policy file
c2591e1 alsa-lib: Lift the limitation to use gcc only cross compiler
b2c1e64 devtool: implement build-image plugin
69c6372 devtool: make add_md5 a public API
491e86a harfbuzz: upgrade to 1.0.2
5a5cf2c btrfs-tools: 4.1.1 -> 4.1.2
1b00e85 tune-octeon.inc: add BASE_LIB settings
7635c1f tune-octeon.inc: correct packaging suffix
b5b3085 oprofile: 1.0.0 -> 1.1.0
79431e8 gnu-efi: 3.0.2 -> 3.0.3
db1b3df gnupg: 2.1.6 -> 2.1.7
14d4445 bitbake: toastergui: Add frontend javascript unit tests
ab9644f bitbake: toaster: fix global navigation
ae329b7 bitbake: toaster: adjust spacing in project pages
7957e1f bitbake: toaster: fix show / hide columns in all builds table
8e1f080 bitbake: toaster: Support environments which have proxies set
ce2a827 bitbake: toaster: Remove Log column from All builds page
f454fc5 bitbake: toaster: Fix extra checkbox in most recently built recipes section
d45ab49 bitbake: toaster: update directory tree expansion
294948c bitbake: lib/bb/cooker: add interrupted flag to BuildCompleted event
7ee503e bitbake: toastergui: change image in landing page
1fa9a0c qemu-native: Enable temporary debug info as default.
995b6d6 systemd: Increase devices timeout in QEMU machines to avoid failures on serial-getty
70b45d6 gcc-source: exlude from world
0cd5d6d Empty image: filesystem allocation
9b6bf6a Empty image: package list splitting and iteration
013f762 oeqa/runtime/multilib: fix and improve multilib test
f44e043 qemuarm64.conf: Make the second serial console /dev/hvc0
a8a061b sysvinit-inittab: Run ttys on ttys that don't have tty in the name
5c0e6f8 bind: remove dependency on bind in bind-dev
1e8d038 qemurunner: Don't loop on EWOULDBLOCK in logging thread.
63340ae runqemu-internal: Make sure tcpserial is always last
6de522e runtime/syslog.py: fix syslog test crash
393bd74 oeqa/oetest.py: add better package search for hasPackage()
315fb4c qemurunner: In the logging thread retry on EAGAIN, EWOULDBLOCK
778fc61 libnotify: update to version 0.7.6
55077ea qemurunner: Shut down logging thread successfully when test fails
15c8835 yocto-bsp / yocto-layer: fix template recipes
790b229 README.hardware: drop mention of binary-only drivers
e6a917d layer.conf: Increase layer version to 6
bb34181 bitbake: lib/bb/main: avoid importing all server/UI modules on every execution
d893a25 runqemu: Add a tcpserial option
fd164dc qemurunner: Use two serial ports and log console with a thread
8d05d8a qemurunner: Make create_socket() return data and use exceptions
62585cf qemurunner.py: Move some class variables that should only be local
8754a00 libcap-ng: add package 0.7.7
20c6c72 swig: add package 3.0.6
6b0768e xf86-video-intel: enable xvmc feature by default and fix dependency
311c428 package_rpm.bbclass : escape "%" in files and directories name
e062f01 packagegroup-qt*-toolchain-target: fix hard dependency on phonon library
0f42566 service: tweak example recipe
fde9969 hello-mod: drop PV and PR
21f9844 oe-selftest: replace assertTrue(False, ...) with fail(...)
d114b56 classes/insane: fix QA check message referring to nativesdk
025f759 scripts/create-recipe: drop
bb00ebc man-pages: update to 4.02
37b73ce lsbinitscripts: Upgrade 9.63 -> 9.64
b3db1f3 lsof: Upgrade 4.88 -> 4.89
c95e205 gstreamer1.0-plugins-*: Remove unused GSTREAMER_1_0_ORC variable
d51f314 gstreamer1.0-plugins: Ensure the native OE orcc is used
e4522a8 iso-codes: add a recipe from meta-oe
fdc8267 glib: add a warning suppression patch to glib
c89a1eb classes/cmake: add arch conversion routine
2b46af7 harfbuzz: enable icu feature
429985c classes/gnomebase: change tarball compression to xz
7ce9209 perl: Undefine finitel for uclibc
aced11f kernel-arch: Force BFD kernel when using gcc for linking
a6a0251 libinput: Upgrade 0.18.0 -> 0.21.0
e4cb847 wic: Test creation of iso image
1308e30 wic: add mkhybridiso kickstart file
de5bc1b wic: Add plugin for hybrid iso image
5c44238 parted: set VERSION number same as recipe's version
f62afbf glibc: use cross-rpcgen to replace host's rpcgen
ee80b72 openssh: build regression test binaries
1993c1f json-glib: inherit gnomebase instead of gnome
9697c58 gnome: move introspection options to gnomebase
e01f40f json-glib: enable native builds
a044db9 multilib: let pkg-config find architecture-independent .pc files
a3d228a bitbake: main: Handle RuntimeError exception in list_extension_modules
a01a33b linux-yocto-3.14: Update to branch HEADs
6b8bb44 genericx86*: Update BSPs to use 4.1 Kernel
6f176d4 bitbake: toastergui: fix projectbuilds page
ab13498 bitbake: toastergui: do not show in-progress builds in the table
25d4a35 bitbake: toaster logger: fix pylint issues
c9455a7 bitbake: toaster: fix pylint errors
07b58c9 bitbake: toaster: fix updates on failed build requests
242603e bitbake: toaster: replace raising Exceptions in loadconf
c159b3c bitbake: toaster: do not stop data import on bad data
be4636a bitbake: toastergui: rename variables in views.py
12c9cca bitbake: toaster: use loggers instead of prints
d18e630 bitbake: toaster: models field initialization
504396f bitbake: toaster: improve exception handling
99730d6 bitbake: toaster: checksettings: fix TEMPLATECONF detection
3a1af07 bitbake: toaster: checksettings: fix guesspath initialization
98dfa27 bitbake: toaster: pylint fixes
c8df847 bitbake: toasteruitest: Updated UI tests cases to use dom IDs and 1.9 UI changes
55f13d4 bitbake: toastergui: Call csrf function in all pages to ensure cookie is sent
ae7d048 bitbake: bitbake-layers: show-recipes: allow filtering by class inheritance
a3967e2 bitbake: bitbake-layers: fix mapping files to layers
22e8c6c bitbake: bitbake-layers: remove-layer: accept just layer directory
c4989e7 bitbake: bitbake-layers: ensure we exit if BBLAYERS_LAYERINDEX_URL is not set
5807ab3 bitbake: lib/bb/main: consolidate UI/server extension listing and loading
9b05ef5 bitbake: lib/bb/parse: properly handle OSError when updating mtime cache
9706775 bitbake: bitbake-layers: use "with open" consistently
90d97f7 bitbake: bitbake-layers: refactor show-appends to stop using cooker bbappends list
67a6a4d bitbake: bitbake-layers: Convert flatten to use collections.bbappends
3c3ff92 bitbake: cooker: drop appendlist
b84bf58 bitbake: cooker: drop appliedappendlist
e2ddc18 bitbake: Fix -m handling if cannot connect to server
7ce27b9 bitbake: cooker: ensure prefile/postfile can work in memory resident mode
37a2c06 bitbake: command: ensure sync commands that read configuration see updates
6e5ac6b bitbake: cooker: further limit inotify watches
e0daf78 bitbake: command: intercept SystemExit to avoid trashing the server
715d857 bitbake: Fix default function parameter assignment to a list
22a653d binconfig-disabled: write an message to stderr to help confused developers
c0dd559 oeqa/targetbuild: Remove bashism
c1e7995 glibc-package: use ${PN} in INSANE_SKIP
a21b047 rpm: opendb before rpmverifyscript to avoid null point input
7ed4a91 u-boot.inc: Add UBOOT_BINARY sym links for UBOOT_CONFIG types
d4618ff packagegroup-core-standalone-sdk-target: remove qemuwrapper-cross
dd7b869 toolchain-shar-extract.sh: add a space in the end
b961402 tune-octeon: add tune file for MIPS Octeon
86559e1 binutils: Add MIPS Octeon3
0f23a3a lib/oe/recipeutils: avoid parsing in get_var_files()
677e8c8 devtool: fix handling of BBCLASSEXTENDed recipes
48bb9ec devtool: extract: remove patches subdirectory when S == WORKDIR
5e88067 devtool: extract: prevent externalsrc from interfering with extraction
1019d8c package_deb.bbclass: Allow UTF-8 characters on control files
3898cc3 valgrind: build ptests without optimizations
c8b8749 openssh: Upgrade 6.9p1 -> 7.0p1
050629c gdk-pixbuf: Security Advisory - gdk-pixbuf - CVE-2015-4491
09ad7ca lz4: update to 131
76d7e8e archiver.bbclass: Run deploy_archives in $WORKDIR
d6eb9cc uclibc: Upgrade to tip of master
71e1835 lzop: Fix build with gcc5 on ppc
de17216 libunistring: Upgrade recipe 0.9.4 -> 0.9.5
a334395 guile: Specify directories to find proper libunistring, libgmp and libltdl
625e0ec glibc: Consider adding -Wno-error in cases when not using -O2
b7cd768 canned-wks: added a qemux86* directdisk recipe for wic
3aaea35 image_types.bbclass: allow replacing tar command
3753b51 tar-replacement-native: relocate via NATIVE_PACKAGE_PATH_SUFFIX
a56d7e9 qemu: upgrade to 2.4.0
c348fa5 bitbake: toaster: move code from setup_lv_tests to setUp
e5956a6 bitbake: toaster: remove ProjectLVSelectionTestCase
5638321 bitbake: toaster: add header to orm/test.py
50f9e20 bitbake: toaster: simplify testcase code
552b1fe bitbake: toaster: remove duplicated code
1f7d7bf bitbake: toaster: reuse common code
958696f bitbake: toaster: reformat LayerVersionEquivalenceTestCase
d637b91 bitbake: toaster: rewrite LILSUpdateTestCase
344ad2e bitbake: toaster: rewrite test for LayerSource model
11668e2 bitbake: toaster: fix test_build_layerversion test case
77ca551 bitbake: toaster: remove prints from the test code
645435a bitbake: toastergui: Added IDs to elements used in testing
91d8f88 bitbake: toastergui: Add tests for xhr_importlayer
c9d1cb2 bitbake: toaster: fix invalid fields in the package details page
8ab2101 bitbake: toaster: Fix typo in set up script output
783a76d adt-installer: use DEPLOY_DIR in ANT_DEPLOY expansion
cbf8dcc mtd-utils: keep xattr support enabled
dd8e385 package_regex.inc: fix regexes for adwaita-icon-theme, cairo and dhcp
918379a puzzles: switch svn for git, as upstream has done the same
6e1f77c tremor: update to 20150107 (svn r19427)
a25e8bd quilt: fix the deps for ptest
be158c8 curl: upgrade to 7.44
330340f libpfm4: Fix GNU_HASH warning.
e623c10 screen: Upgrade 4.0.3 -> 4.3.1
b3ec91d glibc: Package libmvec when built
cb7368c glibc: Upgrade 2.21 -> 2.22
0183d7c openssh: Upgrade 6.8p1 -> 6.9p1
00b7ea6 apmd: update to 3.2.2-15
5b9f451 blktool: update to 4-7
7cc816b build-appliance-image: use ext4 for rootfs
407d156 IMAGES_FSTYPES: default to EXT4
857da08 oetest.py: Don't wait to write dump files
9c72c1a oetest.py: Added method tearDown for oeRuntimeTest
51d8e8f qemurunner.py: Performance improvements in run_serial
c0c463b qemurunner.py: Added raw mode in run_serial
a5bfa11 qemurunner.py: Added login to start method
78e1c4f qemurunner.py: Add method run_serial
7ffb660 gnu-efi: BBCLASSEXTEND to native
73a876e qemu-native: Add debugging when qemu fails with qemu_cpu_kick_thread
6b16689 bash: append srcdir to run-ptest script
a62e073 systemd: update SRC_URI
4c35cd9 create-pull-request: cleanup bashisms
f535efb valgrind: Fix build with glibc 2.22
0e05155 librsvg: Upgrade 2.40.9 -> 2.40.10
a111555 nss: Upgrade 3.19.1 -> 3.19.2
d2164b7 mc: Fix QA warning depends on util-linux
97105c4 attr: narrow fix_symlink to populate_sysroot
07cbc40 meta-yocto-bsp: mpc8315e-rdb: Set KERNEL_DEVICETREE to mpc8315erdb.dtb
db8886d distro/include: Move files to OE-Core for support distrodata
95683e6 tzdata: update to 2015f
6754469 tzcode-native: update to 2015f
fd3dd25 kernel: Correct mishandling of linux.bin for building uImage
522af4f uclibc.inc: remove unused UCLIBC_EXTRA_LDFLAGS
c8b7f09 lib/oe/package_manager: fix opkg feed generation
d7581de upstream_tracking.inc: add no update reasons for base-passwd and chkconfig
6a024c2 distrodata: Make self-contained.
a533776 perf: fix build breakage on kernels after 4.1
0f7df92 clutter-gst: update to 3.0.8
161180b Revert "base.bbclass/blacklist.bbclass: remove doc item when d.getVarFlags()"
d6d7494 fotowall: update SRC_URI to use github instead of qt-apps.org
bda0ac2 distcc: update SRC_URI to not use Google Code
5b1d7ca xf86-video-omapfb: switch SRC_URI to debian git repo
b638fb2 stress: use BPN and BP in SRC_URI
be79a17 texinfo: Upgrade 5.2 -> 6.0
a7aab66 qmmp: Upgrade 0.8.5 -> 0.8.6
0a662f2 libepoxy: Upgrade 1.2 -> 1.3.1
6d8ace0 autogen: update to 5.18.5
9d32d93 apt: update to 1.0.10.1
654ac86 bluez5: update to 5.33
514077b cdrtools: update to 3.01a31
072330d nettle: clean up license information
44ee875 packagegroup-core-sdk: Disable sanitizers on musl
69790b0 cml1.bbclass: make menuconfig task configurable
d2598bf oeqa/selftest: remove tests for TCs that are no longer valid
61fe46d kernel.bbclass: dont assume ${B}/include/generated exists
f820d02 sanity.bbclass: check SSTATE_DIR, DL_DIR and *MIRROR for broken symlinks
9d8a725 gstreamer1.0-plugins-base: Need more buffers in output queue for better performance
e9a3cfa gstreamer1.0-plugins-base: Set need_segment after sink pad receive GST_EVENT_SEGMENT
96cc8de gstreamer1.0-plugins-base: Enhance SSA text lines parsing
41792fe gstreamer1.0-plugins-base: Don't set async of custom text-sink to false
48cfaec gstreamer1.0-plugins-base: Make memory copy when video buffer's memory is read only
19c96d7 gstreamer1.0-plugins-base: Do not change EOS event to GAP event
f0f8f90 gstreamer1.0-plugins-base: Keep sticky events around when doing a soft reset
30e6657 gstreamer1.0-plugins-base: Fix output buffer can't writable after frame_map() issue
ec5d33a gstreamer1.0-plugins-base: Update video alignment after video alignment
9a5a62a gstreamer1.0-plugins-base: Handle audio/video decoder error
bda68cc gstreamer1.0-plugins-base: Bug fix for id3demux issue
1f156ab gnu-config: Update git version to latest and use it
a71ef70 wpa-supplicant: Fix CVE-2015-4142
3b7a062 weston: improve parallel make race fixes
a8804b1 bootchart2: update to 0.14.7
627d183 mesa-demos: Fix dependency for 'vg' support
a16e0b4 bitbake: toaster: reduced amount of instance attributes
5fe1c19 bitbake: toaster: fix pylint warning 'no space allowed'
27a483d bitbake: toaster: fix test_get_json_call_returns_json again
3ba3cf2 bitbake: toaster: don't catch json.load exceptions
b3ab9b1 bitbake: toaster: add header and docstings
8ee14d5 bitbake: toaster: remove unused import
91fea09 bitbake: toaster: get rid of class attributes
8af82c2 bitbake: toaster: put all test cases into one class
2f8c8e4 bitbake: toaster: get rid of AllProjectsViewTestCase
13e0417 bitbake: toaster: wrap long lines
9e3c0ee bitbake: toaster: fix test_get_json_call_returns_json test
0b80ef5 bitbake: runqueue.py: Add provides to taskdepdata
9527cd0 bind: upgrade to 9.10.2-p3
309982f recipeutils.py: allow all characters in regexes used to parse version strings
aa8225f oprofile: reorder SRC_URI lines to fix upstream version check
13dce7c gptfdisk: update to 1.0.0
34b59db mesa: upgrade 10.5.8 -> 10.6.3
fbe44c4 xf86-input-vmmouse: Upgrade 13.0.0 -> 13.1.0
f0ad4ce pulseaudio: Add systemd to PACKAGECONFIG if enabled in DISTRO_FEATURES
3255d00 systemd.bbclass: Use systemd_system_unitdir
319a69f bitbake.conf: Add nonarch_libdir and base systemd vars on it
6617347 bootimg.bbclass:iso: determine the -iso-level only if there is a rootfs
d00f88b bash_3.2.48: dont include target CFLAGS in host LDFLAGS
101fac5 ca-certificates: Update 20141019 -> 20150426
7137a31 uclibc: backport upstream fix for SH4
670244e libiconv_1.11.1: merge build and packaging fixes from libiconv_1.14
2601d52 libiconv_1.11.1: fix LICENSE declaration, LGPL -> LGPLv2.0
5d03ba2 gettext_0.16.1: add -lrt and -lpthread to LDFLAGS for uclibc builds
c66aca7 gettext_0.16.1: remove obsolete uclibc specific patch
3893a4f which: Upgrade 2.20 -> 2.21
d70a3db vte: Fix LICENSE to LGPL2.0
acc0af6 fontconfig: Upgrade 2.11.93 -> 2.11.94
0bf30e5 gtk-icon-utils-native: Upgrade 3.16.4 -> 3.16.6
3205b86 gtk+3: Upgrade 3.16.4 -> 3.16.6
f41818c gstreamer1.0-plugins-base: Enable pango packageconfig by default
38d5255 initscripts: Fix regression for requiring /bin/bash
8b83808 qemu: upgrade to 2.4.0-rc4
b698e2e libinput: add configure arg and PACKAGECONFIG for libunwind
fcc3afc cups: upgrade to 2.0.4
5f1615e resolvconf: upgrade to 1.77
c4040ea binutils: 2.25 -> 2.25.1
31eb386 qemu: add ptest sub-package
800ebee rt-tests: fix redo install error
44bbb40 bash: 4.3 -> 4.3.30
280a895 libcheck: 0.9.14 -> 0.10.0
9d162de file: 5.23 -> 5.24
9170c34 git: 2.4.6 -> 2.5.0
a9b41db boost: add python3 support
c75cefe libpam: Fix patch broken during upgrade
ad841db security_flags.inc: disable -pie and -fpie from Python3 compilation.
9b97a06 wic: release 0.2.0
8ce8328 wic: code cleanup: pylint misc.py
8421e0e wic: code cleanup: remove unused code
87a846d wic: Report recipe name for native commands
daa8109 wic: Improve 'wic help overview' content
04c5307 wic: improved usage text
57b3e39 stress: update checksums to match upstream tarball
da0f503 create-pull-request: cd to relative directory
d31f89b wpa-supplicant: Fix CVE-2015-4141, CVE-2015-4143, CVE-2015-4144, CVE-2015-4145, CVE-2015-4146
177d463 xf86-video-intel: fix yocto/oe-core wreckage from libdrm upgrade
37e7846 oeqa/qemurunner: Improve runqemu log output debug
0968e3a runqemu: Handle device names like tapX@NONE
8020a9e runqemu: Add error handling for unexpected tap devices
ecec4af weston: Fix parallel make race
8b847ff combo-layer: fix action_pull for unknown branch
b2a0c2f combo-layer: enhance output in action_pull
0658434 qemurunner: Improves checking for server and target IPs on qemus parameters
58197f3 bitbake: toastergui: layerBtn Fix build trigger mechanism
a65099e bitbake: toastergui: Fix typo on layers in project filter condition
5194f04 bitbake: toastergui: Move click disabled check after table ready event
c1993d0 bitbake: toastergui: Machine select button url parameters change
b12e51c bitbake: toastermain: Add a longer default database timeout
af72d0f bitbake: toastergui: Move layerdetails view definition to the views.py
da4c663 bitbake: toastergui: Fix toastertable table header reference
e616c20 bitbake: toastergui: libtoaster typeahead Add in results highlighter
aad3800 bitbake: toastergui: libtoaster: typeahead resiliency for slow server
0494a27 bitbake: toastergui: tests Fix and more comprehensive typeahead unittest
4d7944d bitbake: toastergui: views Standardise the fields project layer response
951e40d bitbake: toasterui: views Remove unused xhr_typeahead view definition
1e7707b bitbake: toastergui: libtoaster Throw an exception no url is specified
aff29d2 bitbake: toastergui: Switch to using the new toaster typeahead widget
73367c2 bitbake: toastergui: Add typeaheads layers, machines, projects, recipes
f4e51ff bitbake: toastergui: widgets Add a typeahead widget
68128ad bitbake: toastergui: tables Use util functions for the common querysets
c4e7113 bitbake: toaster: orm Add util functions to return common querysets
d3b9927 bitbake: toaster: orm Add util function to return the url to layerversion
c8bc7ee bitbake: toastergui: add action to empty "most built" recipes
1a0fa6c bitbake: toastergui: fix spacing in the import layers page
0378aad bitbake: toastergui: remove project name from layer change notification
69c6f1f bitbake: toastergui: change link styles in alert-info
569567d bitbake: toastergui: breadcrumb fixes
d47358f bitbake: toastergui: spacing and top nav style change
a8b7234 bitbake: cooker: Resolve file monitoring race issues when using memres bitbake
55c662d builder: Fix multilib compile failure
22078d5 bitbake: bb.parse: properly error out on filesystem errors
75fc6bf bitbake: bb.cookerdata: don't show traceback for ParseError/ExpansionError
d2bf05f perl: fix build failure if building dir has the "blib" string
aaf1033 rootfs.py: fix PRE/POSTPROCESS_COMMANDS for rpm and deb
10196e3 python3: delete patches that don't get applied anywhere
b5e9dbb python3: remove 2to3 symlink from package python3-2to3
0b69680 python3: remove package python3-robotparser
3c53a2b python3: detect libraries in STAGING_LIBDIR
016f5ae builder: fix USERADD_PARAM
f292979 useradd_base.bbclass: do not warn when the user exists
fd92142 useradd_base.bbclass: print PN when bbnote/bbwarn/bbfatal
b741780 base.bbclass/blacklist.bbclass: remove doc item when d.getVarFlags()
1df8af4 base.bbclass: move invalid PACKAGECONFIG checking to insane.bbclass
6087a04 busybox: enable support for sha1sum and sha256sum applets
40d64a5 busybox: support mount via label for btrfs and squashfs
a2fad2b busybox: disable fatattr in defconfig
6618cb4 busybox: disable sha3sum in defconfig
35f02c9 busybox: refresh defconfig for busybox v1.23.2
7ea9595 busybox: re-order defconfig to align with busybox 1.23.2
be79846 busybox: remove CONFIG_FEATURE_VI_OPTIMIZE_CURSOR from defconfig
52328c2 dhcp: fix installed not shipped warning for lib32
5398b9d populate_sdk_ext: pass BBPATH to devtool --bbpath
84ad12e devtool: add --bbpath argument
2251f71 populate_sdk_ext: use lnr, not ln -sr, for portability
d16b62f python-scons: 2.3.4 -> 2.3.6
e91ce72 kexec-tools: 2.0.9 -> 2.0.10
020f33c mpfr: 3.1.2 -> 3.1.3
d0be3ae libmpc: 1.0.2 -> 1.0.3
e87b533 opkg: solve inconsistency of using different lists directories
5c76072 base.bbclass: Note when including pn with INCOMPATIBLE_LICENSES
445c49c init-install-efi.sh: Check if an installation device is present
e4a4c9b bitbake: bitbake-user-manual-fetching.xml: note about URLs with semi-colons
7f4eb55 bitbake: bitbake: toaster: Add is_image field to the Recipe model
9be8ea6 bitbake: bitbake: toaster: Uncomment logging messages
79c8ffa bitbake: bitbake: toaster: get rid of _createdirpath function
3b6e5df bitbake: bitbake: toaster: Fix usage of wrong variables
a403ddb bitbake: bitbake: toaster: Wait for toaster gui to come
e68370c bitbake: bitbake: toastergui: Toastertables don't replace dash in cache key
6520feb bitbake: toaster: toastergui: run pylint on the toaster files
1da5e0a bitbake: toaster: tts: execute tests in numeric order
e6419cc bitbake: toaster: tts: make sure to import data
ada494d bitbake: toaster: tts: delete the database only if created
ef70e13 bitbake: toaster: tts: delete pyc files before the tests start
f9eb958 bitbake: toaster: tts: fix startup and cleanup for managed mode
ba667a0 bitbake: toaster: tts: improve logging in urlcheck.py
faaa5d4 bitbake: toaster: tts: improve debugging information
f169733 bitbake: toaster tests: gitignore and use absolute path for log file
73f1497 bitbake: toaster: tts: clean up HTML5 compatible url list
1640a65 bitbake: toaster: tts: fix pylint warnings
160d610 bitbake: toastergui: Remove angularJS and projectapp based on angular
829fe32 bitbake: toastergui: project page Add inline project name change feature
c76137e bitbake: toastergui: layerBtn use libtoaster for change notification
b90a253 bitbake: toastergui: newbuildbutton Fix removed elements
11627fc bitbake: bitbake: toastergui: newbuildbutton Fix typo on project save function
c385f15 bitbake: toastergui: Change build button popover to a build-button
10ffe1b bitbake: toastergui: base Use removeAttr / attr
be2b423 bitbake: toastergui: Fix Duplicate layer importlayer api calls
1a2f120 bitbake: toastergui: libtoaster: Add guard against missing name property
a9549e8 bitbake: toastergui: libtoaster Make sure we always pass format=json
691d547 bitbake: toastergui: css Remove redundant css rules
80c1586 bitbake: toastergui: Add new project page and navigation
258c929 bitbake: toastergui: css Add new rules for new project page
9af7ce5 bitbake: toastergui: http api Add guard against incomplete change requests
7a589c0 bitbake: toastergui: tables Add name field to layers table
8ff56b0 bitbake: toastergui: libtoaster Add show change notification function
1b13222 bitbake: toastergui: Standardise the layer object property layerdetailurl
df999d2 bitbake: toastergui: Remove erroneous CSS property
dd8c78b bitbake: toastergui: importlayer Add format type to JSON calls
d826d4e bitbake: toastergui: base Fix html indentation
b06a633 bitbake: toastergui: Implement new project navigation
3d3a2db bitbake: toastergui: Implement new top navigation design
8acab25 bitbake: wget.py: fix incorrect regexes
4c2f28b bitbake: cooker: properly fix bitbake.lock handling
18dfdb0 oeqa/commands: Increase qemu boot timeout to match testimage.bbclass
b850da9 license_class: Fix choose_lic_set into incompatible license
4d027f0 distrodata.bbclass: drop the manual upstream version check logic
a1ec19c distrodata.bbclass: do not skip -native recipes in checkpkg task
b76c908 nss: advance to version 3.19.1
4c8f274 perf: add liblzma depdenency
77e3946 guilt-native: set PV in the recipe to allow upstream version check
5f9d379 stress: use developer's website for SRC_URI
1ef03d5 shared-mime-info: reorder SRC_URI lines to fix upstream version check
7258205 syslinux: drop v6.xx/ from directory path in SRC_URI
91c9532 pseudo: fix upstream SRC_URI to enable upstream version check
0bb94f4 libmad: use ftp instead of sourceforge for consistency with libid3tag
eac846b eglinfo: change version from 1.0 to 1.0.0 to match the upstream git tag
f606c52 ossp-uuid: update SRC_URI to not use Google Code
689dd4e adt-installer: update SRC_URI to not use Google Code
891ee70 libproxy: update SRC_URI to not use Google Code
79e41e3 oeqa/sstatetests.py: add annotator to test_sstate_32_64_same_hash [YOCTO #6006]
d1e2d28 oeqa/sstatetests.py: add decorator to test_sstate_nativelsbstring_same_hash
36eb8f9 alsa-utils: assume the alsa storing is success if machine has no sound card
dd8db95 tzdata: Add marking for config files in recipe
90bc2f3 create-pull-request: Implement -d option
363bec0 smartpm: set noprogress for pycurl
5452625 qemu: upgrade to 2.4.0-rc3
a1f78e4 guile: Add earlyclobber constraint to the SMULL outputs.
8f12739 dbus: upgrade to 1.8.20
f494fc2 gcc-multilib-config: Adapt mips for mips64 and different gcc versions
c125ef1 cross-canadian/gcc: Various mips64 fixes
7b56b2c glibc: don't override TUNE_CCARGS for MIPS
05879d6 cross.bbclass: override MULTIMACH_TARGET_SYS
25fad72 packagegroups-cross-canadian: don't override TRANSLATED_TARGET_ARCH
ec38dac arch-mips.inc: don't override TRANSLATED_TARGET_ARCH
ac692c6 multilib_global: Fix PREFERRED_VERSION mapping for gcc-cross-canadian
d3f991a cross-canadian: Add symlinks for multilib cases
c114833 libgcc: Fix symlink handling in cross-arch multilib cases
6c4b21d gcc-multilib-config: Tweak naming of options to match gcc's expectations
cc21092 gcc-cross-canadian: Add symlink to real-ld alongside other symlinks
c4e40a4 gcc: Add patch to handle on target multilibs better
a95a14a packagegroup-cross-canadian: Make the code more readable
146905a utils: Handle MLPREFIX in all_multilib_tune_values()
f351c03 testimage: testsdk fixes/improvements
93360e8 oe-selftest: devtool: fix teardown warning in test_devtool_update_recipe_append
9a672bd devtool: use tinfoil shutdown method
3167580 u-boot: fix extern inline build errors for gcc 5
3243682 poky: Fix SANITY_TESTED_DISTROS lsb name for openSUSE 13.2
9890344 upstream_tracking.inc: remove outdated information
87d6468 package_regex.inc: updates to fix upstream version checks for multple packages
e73ba3b distro_alias.inc: drop reference to Google Code
3d6893a distro/maintainers.inc: maintainer updates
405bb5b combo-layer: fix AttributeError traceback.
54c9219 sshcontrol: Use os.environ.copy() instead of copy.copy()
e384d9b pixbufcache: Use sceneQueueComplete event to simplify usage
64acfb3 arch-armv7a.inc, feature-arm-vfp.inc: add tunes for vfpv3 and vfpv3d16
8f270dc elfutils: fix stack usage warning
133ad63 bind: upgrade to 9.10.2-P2
6ff6cc4 pax-utils: 1.0.3 -> 1.0.5
855a442 man-pages: 4.00 -> 4.01
8998358 help2man-native: 1.46.4 -> 1.47.1
d1ee2d7 gnupg: 2.1.5 -> 2.1.6
45efeff cracklib: 2.9.4 -> 2.9.5
2b9dca1 less: 478 -> 479
4e87fef libuser: 0.61 -> 0.62
2d7a1a7 git: 2.4.4 -> 2.4.6
222b1a9 lsbtest: sync test suite packages version
60f6dcb qemu: add PACKAGECONFIG for gnutls
fc8902f qemu_git.bb: remove it
7635f09 lighttpd: 1.4.35 -> 1.4.36
96433ee opkg-utils: use ${bindir} instead of hardcoding /usr/bin
0e9a984 run-postinsts: use ${localstatedir} instead of hardcoding /var/lib
1ce5d59 initscripts: urandom: respect ${localstatedir} instead of hardcoding /var
6b4cfaa opkg: read config file from ${sysconfdir} instead of /etc
890f24a rsync: use ${sysconfdir} instead of hardcoding /etc
856082c libepoxy: Don't try to use python3 during configuration
d897507 toolchain-scripts: Extend to cover nativesdk compiler tools (e.g. nativesdk-gcc)
f66ead9 linux-firmware: upgrade to commit 75cc3ef8ba6712fd72c073b17a790282136cc743
dab511c gcc: Add support for nativesdk-gcc
3b7c384 binutils: Add nativesdk support
7f654dc lib/oe/classextend: Fix nativesdk double name mapping
eb1c88c distro/maintainers.inc: Fix parsing error due to lack of " at end.
19f77cf distro/maintainers.inc: remove Saul Wold from maintainership
798fc18 ref-manual: New description for KERNEL_CLASSES variable.
49bcb74 dev-manual: Applied review edits to devtool section.
ce97654 poky.ent: Added "findutils" and "which" packages to Fedora essentials.
c3ac09f kernel-dev: Added 'make defconfig' details for own source work
3b93408 dev-manual: Added a "biosfilename" item to the runqemu command section.
cb19478 ref-manual: Added glossary description for BB_ALLOWED_NETWORKS.
ab23dd9 yocto-project-qs and others: Rewrite of the QS
add1f73 ref-manual: Fix to QA error message.
3cd876d ref-manual: Updated the IMAGE_TYPES glossary description.
68620d5 ref-manual: Fixed grammar issue in the oelint.bbclass section.
282fe35 ref-manual: Updated UNKNOW_CONFIGURE_WHITELIST variable
926d70f kernel-dev: Added kernel-devsrc information for building on target
39bcabf toaster-manual: Removed the daemon requirement
3423f3b poky.ent: Updated the YOCTO_RELEASE_NOTES variable
9325599 ref-manual: Updated the UNKNOWN_CONFIGURE_WHITELIST variable.
5644756 kernel-dev: Added new requirement for working with yocto-linux-custom.bb
4764062 ref-manual: Updated ARCHIVER_MODE and archiver.bbclass
4ec8e88 documentation: Updated customization layers to point to XSL mirrors
2de3283 ref-manual: Fixed "TBD" section cross-reference in KBUILD_DEFCONFIG
f9df1a4 kernel-dev: Added new "in-tree" defconfig file section.
540b8ef dev-manual: Added new section on "defconfig" files.
7b1697b kernel-dev: Added detail to start of generating config file
7baadd8 ref-manual: Removed PRINC entry from the glossary
e52dd53 toaster-manual: Added detail for the URL to access Web Interface
ec068fe ref-manual: Added new variable description UNKNOWN_CONFIGURE_WHITELIST
744893b ref-manual: Updated EXTRA_IMAGE_FEATURES variable
64d7456 dev-manual: Updates to kernel configuration in the "Kernel Modification Workflow" section
3d2f2b6 dev-manual: Added a link to reference defconfig files.
8c43d0f dev-manual: Minor edits to "Configuring the Kernel" section.
72169b2 ref-manual: Added new glossary description for KBUILD_DEFCONFIG.
6e12a35 adt-manual: Updated the "Getting the Images" section for eclipse-debug
d9cf575 ref-manual: Added and updated variables to support calling functions
fb82bcb ref-manual: Added 'ptest' to the list of Distro Features
26f9777 ref-manual: Updates to the "Speeding Up the Build" section
e05c636 ref-manual, dev-manual: Added info about make race work-around
8c9fb71 ref-manual: Formatting fixes and tag fix.
935f5d7 ref-manual: Updates to BB_NUMBER_THREADS and PARALLEL_MAKE
113c427 ref-manual: Added descriptions for four new variables
2a95850 adt-manual: Emphasis on populate_sdk as bitbake method for building toolchain
95108a1 dev-manual: Updated requirements for writing a new test.
d0531db ref-manual: Added new variable description for ARCHIVER_MODE
46f8649 ref-manual: clarify allarch wrt RDPENDS and TUNE_PKGARCH
a894da0 ref-manual: fix example of setting root password using extrausers
5e357ed oe-selftest: restore gummiboot tests
1b88b74 bitbake: build: Exit scripts with result of last shell function
eeb412d harfbuzz: upgrade to 1.0.1
5d8739f opkg-utils: fix bashism in opkg-build
5981ccf cross-canadian: Put links in place for uclibc and musl
72777f4 toolchain-scripts: For non-glibc, pass compiler options to ensure the correct libc selection
ae344c1 oeqa/qemurunner: Fix AttributeError: QemuRunner instance has no attribute 'server_socket'
7c71bc8 nativesdk-qt4-tools: depend on nativesdk-qt4-tools only if DISTRO_FEATURES includes x11
997893e security-flags: Disable PIE for coreutils, elfutils, gcc, iptables
f4f72b1 qemurunner: Show last 25 line of log, not 5
e3aa7a3 targetcontrol: Improve logs by outputting qemu boot log in case of failure
edc7780 oeqa/selftest/devtool: use new runqemu function
c256bbc oeqa/selftest/imagefeatures: remove gummiboot tests
86f0232 oeqa/selftest/imagefeatures: fix RPM4 test
90a52ff oeqa/selftest/imagefeatures: fix SSH without password tests
76d8c4e oeqa/selftest/imagefeatures: Use QemuTarget code
01ccad1 oeqa/targetcontrol: write QemuRunner log output to a file
a6eb5ec oeqa/utils/qemurunner: fix error handling if runqemu exits with an error
7f9b42a oeqa/utils/qemurunner: avoid blocking on stty when running under oe-selftest
4855ec3 oeqa/utils/qemurunner: fix logging
69bae06 oeqa/targetcontrol: create test directory before copying rootfs image
67a3807 oe-selftest: add scripts/lib and bitbake/lib to path
3108e00 oeqa/recipetool: allow templayerdir override
7eb55b4 oeqa/recipetool: add tests for appendsrcfile(s)
6e7ee4e oeqa/recipetool: refactor / split out RecipetoolBase
51d760e oe-selftest: add libdirs from BBPATH to sys.path
d2023c3 oe-selftest: obey oeqa.selftest.__path__
0eb40ba devtool: also load plugins from BBPATH
da02f48 recipetool: parse global args early
7136678 recipetool: also load plugins from BBPATH
89878f5 recipetool.append: add extralines arg to appendsrc
e28c4ba recipetool: catch BBHandledException from parsing
813c417 toaster.bbclass: Fix ValueError
e86dc1a gcc-target 5.1: fix for libcc1
fd91e71 gcc5: Upgrade from 5.1 to 5.2
53caeeb sudo: upgrade to 1.8.14p3
898fd07 sed: Make locale depenencies glibc specific
d941141 updated-rc.d: Only add dependencies in target case
e9804c7 oeqa: Add exception handling around qemu process cleanup
6381d45 update-rc.d: Include updated-rc.d in DEPENDS
4ab6b46 qemu: change default version to 4.1
ad5414b yocto-bsps: add 3.14-rt configuration
3a4b0d6 linux-yocto: introduce 4.1 versioned recipes
f7ee1c9 kern-tools: standalone tree configuration
c29aac6 linux-yocto: split meta data from kernel repository
741a44c perf: Fix config file conflict with 4.1 kernels
12b5a44 byacc: upgrade to 20150711
2963cc2 image: Support for qcow2
6dcd355 qemu: upgrade to 2.4.0-rc2
ff037a6 boot-directdisk: Make kernel image inclusion conditional.
66bad55 diffstat: upgrade to 1.60
c9553b8 tcf-agent: Update to version 1.3
00a706e mklibs-native: Remove dependency on dpkg
9a539cb oeqa/qemurunner: don't assume hostname starts with qemu
b0f034e oeqa/runtime/parselogs: don't use uname to get MACHINE
46cb3f0 oeqa/selftest/imagefeatures: handle killpg victim not existing
7b33ced oeqa/runtime/parselogs: add more x86 log exceptions
672517e oeqa/sshcontrol: Ensure we don't trigger ssh-askpass
98b5364 sed: rrec on locale-base-ru-ru, not rdep
f5f6748 bitbake: data_smart: Improve override history logging
9901415 bitbake: data_smart: Improve performance of infer_caller_details()
67c6cc8 bitbake: data: Clean up datastore accesses and True/False values
fdfb3fd bitbake: data: Add newline after the last export in emit_func
ada9300 bitbake: tinfoil: Add shutdown method
901be2c bitbake: bitbake-selftest: Add -v option for verbosity
aaea533 bitbake: tests/parse: Add BBCLASSEXTEND multiple data store corruption reproducer
19f290f bitbake: data_smart: Add CoW approach for overridedata
9120130 linux-libc-headers: update to 4.1
c56cb31 recipetool: appendsrcfile: handle S == STAGING_KERNEL_DIR
5c080f7 recipetool: appendsrcfile: use -D, not -d for destdir
023e9b2 recipetool: appendsrcfile: fix duplicate SRC_URI check
51ae491 oeqa/buildoptions.py: automate test case 926, archive work dir and export source
d8c9810 oeqa/buildoptions.py: automate test case 563; build directfb image
99e39a1 common-glibc: define bash_cv_getcwd_malloc
1b17b58 oeqa/QemuRunner: don't use bb for logging
d87878e cronie: Upgrade v1.4.12 to v1.5.0
fbea156 bootimg: remove previous FATIMG before creating a new one
50b5186 mesa-demos: Fix building demos which require GLU.
3b7961f gtk+: require either x11 or directfb DISTRO_FEATURES to be set
08f0136 tune-cortexa17: add tunes for ARM Cortex-A17
fd31e62 ncurses-terminfo-base: include screen-256color
6e78cc4 *image.bbclass: Consolidate ROOTFS_POSTPROCESS_COMMANDs
061d6ec gtk+3: fix Wayland-only builds
271b9b6 lttng-ust: 2.6.1 -> 2.6.2
51b590d u-boot: Upgrade to 2015.07 release
99b082d volatile-binds: correct path of command umount
31531dd sqlite3: Upgrade 3.8.10.0 -> 3.8.10.2
83f19d4 oeqa/syslog: Removed a pointless testcase and added skip for another.
cc2202b oeqa/runtime: Added decorators for the remaining auto tests.
1bfb932 oeqa/runtime: Added a new automated rpm test.
0d1f10e oeqa/prservice: add useful failure messages to test cases
68f546e oeqa/recipetool: add useful failure messages to test cases
9d02d3f oeqa/pkgdata: add useful failure messages to test cases
7d01c59 oeqa/runtime: Added one runtime testcase in connman.
613cbe5 rpm4: Drop native RDEPENDS
6deffe1 recipeutils.py: get_recipe_pv_without_srcpv remove prefixes from pv
74240cc oe/recipeutils.py: get_recipe_upstream_info update to get revision
e28c1eb oe/recipeutils.py: get_recipe_upstream_info only use sfx and pfx when exits
205c39b bitbake: tests/fetch.py: Updated test name FetchMethodTest -> FetchLatestVersionTest
22d2f7b bitbake: fetch2/wget.py: latest_versionstring now returns (version, revision)
bd5167d bitbake: fetch2/git.py: latest_versionstring now returns (version, revision)
4bbc5dd bitbake: fetch2/git.py: latest_versionstring search in all tags
bc0f1cf libx11: update Upstream-Status on a merged patch
d6fa512 oeqa/selftest: Fix imagefeature testcases not to interfere with testimage on AB
aa05be4 distro: remove gamin metadata
94c50ef Revert "create-pull-request: Fix error on 2.0 versions of git"
0a5f2bc sanity.bbclass: Remove check if /tmp is writable
9f87dcf local.conf.sample: Added /tmp to BB_DISKMON_DIRS
f5206e8 bitbake: data_smart: Use deepcopy for overridedata
b68de1c native: Move virtclass override to earlier so DEPENDS is handled correctly
f8a6931 qemu: upgrade to 2.4.0-rc1
c5f1681 pseudo: 1.6.5 -> 1.6.7
9a92500 bitbake: toastergui: make our tables Chrome-happy
0c0ec86 bitbake: toaster: continue processing layer dependencies despite errors
0f8d89c core-image-lsb-sdk: use kernel-devsrc to ensure kernel module builds work
557bca8 kexec-tools: change powerpc memory size limit
c49cfc2 kexec-tools: disable the GCC's stack protection for purgatory code
88dd997 libpam: Upgrade v1.1.6 -> v1.2.1
e9b9f8c lttng-modules: 2.6.1 -> 2.6.2
8325277 btrfs-tools: 4.0.1 -> 4.1.1
d0ae6fa pulseaudio: rdepend on modules referenced by start-pulseaudio-x11
7942e64 neard: merge .inc file
a2d6745 neard: remove overridden do_install
6257bf7 gnome-icon-theme: clean up icon-naming search
350b73f python-smartpm: Improve warnings/errors consistency
fbec920 lib/oe/package_manager: Use log-level warning instead of quiet
0076525 package_ipk/deb: Drop version information from RPROVIDES
771126c debian: Add versions to RPROVIDES
920819f gamin: remove
2563aa5 extensible sdk: Error when trying to install as root.
873b8ed subversion_1.8.13.bb: Upstream-Status updated to Accepted
c54472c libcap: control attr PACKAGECONFIG via xattr DISTRO feature
2173c00 libcap: avoid losing default Large File Support CFLAGS
26b2db8 libcap: always link apps dynamically
058b53e linux-yocto/3.19: drm and axxia updates
d7c633c linux-yocto/3.14: fix gcc 4.9.4/5.1 build issues, yaffs2 memory leak
46720f0 qemu: upgrade to 2.4.0-rc0
56542b8 maintainers/distro-alias: rename gtk-update-icon-cache to gtk-icon-utils
5e7f26d gtk-icon-utils: Rename, upgrade, add binary
5863080 package_regex.inc: Add rules for clutter recipes
d3809b7 bitbake: lib/bb: provide mechanism to bypass UI log suppression
5261c5b bitbake: lib/bb/process: check output of select() before reading extrafiles
723411d lib/oe/recipeutils: fix replace_dir_vars to return the correct variables
7e7e123 sstate.bbclass: remove redundant cd and mkdir commands
4d77270 oeqa/devtool: add useful failure messages for some test cases
a7f23c6 bitbake.conf: fix qemu user mode linux for qemuarm64
77cd461 runqemu-internal: add temporary disk interface to qemuarm64
74dc0c8 oeqa/buildoptions: add useful failure messages for all test cases
eeed010 oeqa/bblayers.py: add useful failure messages to all test cases
2606cd2 oeqa/bbtests: add useful failure messages for all test cases
e20f810 connman-conf: fix SRC_URI_append
e60597a classes/logging: allow shell message functions to work in devshell
ddc1df3 Use die() or bbfatal_log() where the log should definitely be printed
757be60 classes/base: fix die() to print the full log
546bfe8 classes/useradd: don't read bbnote/bbwarn/bbfatal values
09fe2fd guile: Add explicit directories to guile_cross_config
bca59f9 chkconfig: use explicit directories in obey_variables()
4e9ea09 dmidecode: use absolute paths in fixup task
5352e65 depmodwrapper-cross: set S correctly
794ea78 qemuwrapper-cross: set S correctly
3172250 opkg-arch-config: set S correctly
9cbc0c1 systemd-compat-units: set S correctly
13dbdd4 gnupg: fix build of GPLv2 version of gnupg with gcc 5
aad604f lighttpd: Fix mod_cgi to avoid it buffers data without bound.
88d7df4 systemd: update the status of configurable root patch
c713a22 kernel: fix path assumptions in tasks
a08f8db libc-package: don't abuse B to change directory
af2deca python: add explicit directories in py_package_preprocess
62dae66 boost: add dirs flag to boostconfig task
c5c80d9 ptest: add dirs flag to ptest tasks
6e8313d create-pull-request: Fix error on 2.0 versions of git
1195b41 grep: use internal regex library with musl-libc
7e51763 systemd: add PACKAGECONFIG for valgrind
e47a97a piglit: Fix floating dependency on freeglut
fdbd322 systemd: recommend the vconsole setup units
df2e393 gnu-config: set noexec for do_compile
d890d81 glibc: print PN when bbwarn
1537381 newt: enable native builds
9f33c00 slang: enable native builds
8bffb5a mesa: respect MESA_EGL_NO_X11_HEADERS even with x11 in PACKAGECONFIG
3f9658a kernel-yocto: fix machine_srcrev check in do_patch
525ba4c initrdscripts: handle mmc device as installer medium
ca869fd gettext-minimal-native: use MKIDR_P in Makefile.in.in
2b811ee perf: Modify SPDX_S directory to avoid do_spdx error.
4012fd3 do_unpack: move qa check of unpack into insane.bbclass
c18fadb lttng: Fix timer calculation error
a117fd5 libdrm: Upgrade to 2.4.62
6c3c74f expect: replace the STAGING_INCDIR with includedir
ca789f0 midori: Depend on Adwaita, not gnome-icon-theme
80fdc5d sato-icon-theme: Inherit Adwaita, not gnome-icon-theme
7395925 matchbox-session-sato: set GTK_CSD env var
88ea874 gtk+3: Upgrade to 3.16.4
f71e473 adwaita-icon-theme: Add new icon theme for GTK+
b0079ec combo-layer: implement --hard-reset option
d1a1dbb combo-layer: only allow fast-forward when pulling
60cebe6 apr: Fix packet discards HTTP redirect
3f79bf7 python-io: Add runtime dependency on contextlib
45772ba sanity.bbclass: Check if /tmp is writable
b250b5c buildhistory.bbclass: Check output folder is present before creating files-in-$pkg.txt
a79007b dbus-ptest: set INSANE_SKIP for build-deps
49f1d97 xserver-xorg: remove invalid ac_cv_file__usr_share_sgml_X11_defs_ent
191e93a apt: remove invalid ac_cv_glibc_ver
db18fed glibc: remove invalid ac_cv_path_KSH
6ea080f git: remove invalid ac_cv_c_c99_format=yes
5ba0890 mc: Upgrade to release 4.8.14
1678926 alsa-plugins, pulseaudio: depend on speexdsp, not speex
505e1af speex: 1.2rc1 -> 1.2rc2
d8c3428 speexdsp: initial recipe
ba07a69 dpkg: Fix for Fedora22 and new versions of tar
bc2191d tar: Add symlink to tar from gtar
7f8286f classes/sstate.bbclass: Improve checkstatus using connection cache.
7699386 python-smartpm: Have native smart use nativepython
2ec97a2 opkg-build: Ignore tar error due to hardlinks issue when creating ipk files
f1bf0b4 gcc: remove EXTRA_OECONF_INTERMEDIATE
9fee217 netbase: add rpcbind as an alias to sunrpc
75c877b oe/recipeutils.py: get_recipe_upstream_version returns 1.0 when not SRC_URI
5d0f8a6 intltool: Upgrade 0.50.2 -> 0.51.0
450dd5a harfbuzz: upgrade to 0.9.41
c3ac850 classes/logging: make shell message functions output to the console
de2d643 qt4: fixes for sed command
e2cf270 cups: remove invalid sed command
301e73b perf: remove invalid sed command
3f71c88 python-pygtk: remove invalid sed command
d3904ca python: remove invalid sed command
ee5b19d perl: remove invalid sed command
d512cf2 mdadm: remove do_configure_prepend
911cb68 rpm: remove invalid sed command
8d1a344 qemu: remove invalid sed command
4e9c3db glibc-initial: remove invalid sed command
e1c9739 opkg: remove do_configure_prepend
af3f87c elfutils 0.163: remove do_configure_prepend
4a32362 i2c-tools: uprev to 3.1.2
1bd4ee1 gnome-icon-theme: inherit allarch
95083b2 archiver.bbclass: add do_deploy_all_archives
274389c populate_sdk_base.bbclass: don't inherit toolchain-scripts.bbclass
2d498b0 buildtools-tarball: Add inherit toolchain-scripts
960ed55 clutter-gtk-1.0: Upgrade 1.4.4 -> 1.6.2
d296521 clutter-1.0: Upgrade 1.20.0 -> 1.22.4
4094901 cogl-1.0: Upgrade 1.18.2 -> 1.20.0
383e48e xproto: Upgrade 7.0.27 -> 7.0.28
671a00b gcc-5: Backport patches for -Wno-narrowing behaviour fixes
ee9e365 gcc-4.9: Upgrade to 4.9.3
0ae9afd bluez5: upgrade to 5.32
e9817d5 oeqa/sstatetests: Add NATIVELSB sstate signature equivalence test
ee69463 recipetool/append: Fix selftest failure with multilib
b60521c lib/oe/recipeutils: Ensure order of data store doesn't influence the result
a730981 bitbake: tests/data: Add new data tests
4c386e1 bitbake: data_smart: Fix appendVar/prependVar
75a5855 bitbake: data_smart: Fix data expansion cache issues
a259968 bitbake: data_smart: Fix keys() missing overrides
816acb6 bitbake: data_smart: Cache set(self.overrides)
0ac9c80 bitbake: data_smart: Improve override recursion handling
2dbb067 bitbake: data_smart: Tweak OVERRIDES value cache for performance
d8ebb47 bitbake: data_smart: Seperate out the override cache
c690d5b bitbake: data_smart: VariableHistory: Ignore override duplicates and overlap with CoW functions
933e196 bitbake: parse/ast/data_smart: Add parsing flag to getVar/setVar
95be16f bitbake: data_smart: Move override handling to getVar
7fc6f6c bitbake: data_smart: Cache overrides and fix data store
35a6f7d bitbake: data_smart: Fix cache clearance problems
577f160 bitbake: data_smart: Improve override handling
e7ccd90 bitbake: data_smart: Remove need for update_data calls
42a5996 bitbake: data_smart: Defer append/prepend handling
5ae52ee bitbake: fetch2/wget.py: checkstatus disable SSL cert validation.
73b9cd9 bitbake: tests/fetch.py: FetchCheckStatusTest add cases for ftp and https.
804f1a2 bitbake: fetch2/wget.py: checkstatus fix using proxy handler
913631c bitbake: tests/fetch.py: Add FetchCheckStatusTest tests.
3b186fb bitbake: fetch2/wget.py: Add support of connection cache in checkstatus.
97c5ecf bitbake: fetch2/sftp: Set BatchMode=yes as argument to sftp
518abb7 bitbake: git.py: create a branch when checkout
61fbff2 bitbake: cooker/taskdata: Make NoProvider errors non-fatal to -e/-g options
625a6bf bitbake: prserv/db: Document history modes
3b50312 bitbake: lib/bb: set up infrastructure for shell message functions
8f8d336 wic: Set default set of bitbake variables
b80ddb0 openssl: upgrade to 1.0.2d
f9ea480 bitbake: fetch2: Add fetch parameter to checkstatus
bf6c21c bitbake: fetch2/__init__.py: Add FetchConnectionCache class
3b5b74b bitbake: knotty.py: Make sure bitbake.lock is unlocked before exiting
67eaefe bitbake: command.py: Unlock function included into CommandsSync class
7bccf59 bitbake: cooker.py: Lock/Unlock members function into BBCooker
4b9fc47 libtool: Fix regression from previous commit
d245899 testimage: Add support for test suites manifest files
129aed8 testimage: Support full TC path such oeqa.runtime.pnp.get_memory_size in TEST_SUITES
92c10c9 bootchart2: add runtime dependency
975cb96 oeqa/selftest: Added 2 testcases and updated setup for other two in imagefeatures.
1881c5e systemd: add PACKAGECONFIG selinux
fbe51e0 initscripts: add /sbin/sushell for systemd service debug-shell
fb9e697 opkg-build: Ignore tar error due to hardlinks issue when creating ipk files
64df5e5 coreutils: upgrade to 8.24
e2ac1e8 qemu: fix CVE-2015-3209
8b3666e rpm: disable external key server
925397f gdb: Fix detection of 64-bit PPC inferior in gdbserver
05b02d2 python-smartpm: 1.4.1 -> 1.5
f9ac3f3 elfutils: 0.162 -> 0.163
d32b383 less: 471 -> 478
5de2efa nfs-utils: fix to start nfs-server correctly in systemd
5a0f48f ltp: Add inhibit of split
32cd0c8 systemd: fix immediate unmount of mountpoints not in fstab
91c1574 report-error: expand all variables
7250010 bitbake.conf: Add BUILD_ARCH and SSTATE_PKGARCH to HASHBASE whitelist
3e4edfd pseudo: Exclude SITEINFO_BITS from checksums
9fa842a oeqa/sstatetests: Add test for comparing 32 and 64 bit sstate checksums
0aaa67a oeqa/bbtests: Fix to ensure DL_DIR is set
25702f3 bitbake: cooker: Improve DATE/TIME handling
eb068cc file: fix long-options
21bdccb ca-certificates: remove Debianism in run-parts invocation
9238984 image_types.bbclass: add support for multiple ubi sizes
d93171c subversion_1.8.13.bb: Regex modified to allow '-D' in paths
389d010 mklibs-native: two fixes
abe6459 security_flags: eliminate FORTIFY_SOURCE for debug builds
c4437f1 Update alternatives of man pages
44544fc man: replace ',' with '#'
09febe0 ldconfig-native: Add 64-bit flag for ELF64 entries
daec53e combo-layer: modified to generate better commit messages.
8a0cb22 mesa-demos: rename clear
4913e35 libdrm: remove git recipe, merge inc
86fc0b2 lsbinitscripts: avoid exit 1 in functions script
eb29cea rpm: check if the argument(rootpath) exists or be writable
09a5cb0 image_types_uboot: remove the middle file
d7826f2 libav: update i586 TARGET_ARCH test to also handle i686
090e957 lsb: update i586 TARGET_ARCH tests to also handle i686
a1bb764 gcc: update i586 TARGET_ARCH tests to also handle i686
d1874be multilib_global: expand multilib pref values properly
cb196d2 core-image-kernel-dev: Define a correct subset of TEST_SUITES to run for this image
992c02c perl: Undefine finitel for musl
ad11256 valgrind: build with altivec only if it supported
5e032f1 squashfs-tools: upgrade to newer revision from git
44f0c01 dhcp: modify dhcpd.service to make it start successfully and add systemd service files dhcpd6.service
ae5c24b grub-efi: Allow to use file name different from grub.cfg in GRUBCFG
923fb2e oeqa/selftest: Added new testsuite for image features.
75fa966 scripts/oe-selftest: Added mechanism for including/removing bblayers.inc
ffa54b9 oeqa/selftest: Added @testcase decorators to oeselftest testcases.
9f91aa6 oeqa/selftest: Add methods to manipulate bblayers.conf in base.py
cd37932 report-error.bbclass: Added file syncronization.
046f1ab volatile-binds: Set S to prevent QA warning
2513e02 systemd-serialgetty: Set S to prevent QA warning
18d71ed bitbake: main: add skeleton documentation for the recipe:do_task syntax
62caaa4 bitbake: fetch2: Checkout to correct ref begore init and update submodules
a24fdca oeqa/bbtests: Fix race over DL_DIR and SSTATE_DIR
929a109 libffi: fix typo in fix-libffi.la-location.patch
0e82f9f texinfo: fix typo in dont-depend-on-help2man.patch
da65172 valgrind: fix typo in valgrind-remove-rpath.patch
3990d42 rpm: fix typo in rpm-reloc-macros.patch
6fd8459 rpm: fix typo in rpm-realpath.patch
cb52477 python-numpy: fix typo in no-host-paths.patch
0436dc1 pkgconfig: fix typo in fix-glib-configure-libtool-usage.patch
a806971 flex: fix typo in do_not_create_pdf_doc.patch
d5e0177 dosfstools: fix typo in nofat32_autoselect.patch
a44f203 glibc: fix typo in add_resource_h_to_wait_h.patch
6edd1f0 base-passwd: fix typo in add_shutdown.patch
2dd57d9 dpkg: fix typo in tar-error-code.patch, Upsteam -> Upstream
67ab9eb distrodata.bbclass: fix typo, Upsteam -> Upstream
a49a850 maintainers.inc: reassign audio recipe maintainership
7a40230 distro/package_regex.inc: Use GNOME_STABLE rule for vala
5706b0c tune-core2.inc: set X86ARCH32 to i686 (instead of i586)
df61141 wayland: enable nativesdk builds
df7386e wayland: always build wayland-scanner
fa0845f mesa: Add blank r600 PACKAGECONFIG
d451627 cmake bbclass: fix support for native builds
6b76ee0 libinput: Upgrade 0.7.0 -> 0.18.0
43e5bf4 wayland: Upgrade 1.6.0 -> 1.8.1
3ff474c weston: Upgrade weston_1.6.0.bb -> weston_1.8.0.bb
edb240b libpciaccess: Upgrade to 0.13.4
7803567 gdb: Disable lttng support for musl
4a52eb5 feature-arm-thumb.inc: Fix ARMPKGSFX_THUMB value
cea2042 sanity.bbclass: Check if /tmp is writable
38d8f2e rootfs.py: Add check for kernel modules before running depmod
7e074c3 runqemu-internal: correctly set format for root FS as raw
a23d273 bootimg bbclass: don't hardcode 'bzImage' name
ffb64e3 documentation: document KERNEL_CLASSES
81ead6a ltp: vma03 fix the alginment of page size
00020fa wic: Code cleanup: unused imports
34172ef wic: Code cleanup: long lines, identation and whitespaces
335aa0f wic: Fix confusing error message
d88af4f wic: Remove __write_partition method
0ef9cdd wic: Refactor fstab update code
a49a422 wic: Add --uuid partition option
594dc72 wic: Fix naming conflict
4023377 wic: Remove duplicated code
b5dce25 wic: Refactor prepare_empty_partition API
052c819 wic: Call methods better way
73d0d23 wic: Get rid of useless variable 'image_rootfs'
1e307c3 wic: Rename partition images
e9237bf wic: Refactor prepare_rootfs API
992f789 wic: Turn off debug output for 'bitbake -e'
9ca3472 wic: Remove annoing debug message
1cabf09 wic: Include mount point into image report
aa470a1 wic: Refactor getting bitbake variables
6733434 wic: Test rootfs plugin using rootfs paths
ba23968 wic: Fix misleading message
b42d7d2 wic: Test rootfs plugin using image recipes
c86a0d2 bitbake: toaster: Fix build execution regression
5606687 bitbake: toaster: runbuilds Fix incorrect variable name
483b21b bitbake: toaster: Remove erroneously committed template include
cfc4f1b bitbake: toaster: Revert the addition of analysis project mode selection
3b3ef9c bitbake: toaster: Partial Revert "fixes after html5 compliance testing"
d73a813 cross.bbclass: delete package_qa task
b78b1a6 tune-i586-nlp: Add new tune file to support Quark/X1000 CPU
5c71337 bootimg.bbclass:hddimg: check the size of rootfs.img for hddimg
b3c79c4 bootimg.bbclass:iso: use mkisofs -iso-level 3 for large iso
53ddebe logrotate: 3.8.8 -> 3.9.1
563269f wpa-supplicant: Fix CVE-2015-4142
63873d0 nfs-utils: debianize start-statd
703108c nfs-utils: Reexport all directories when start
3c6ddc7 mklibs-native: avoid failure on symbol provided by application
71ceb8c unzip: drop 12-cve-2014-9636-test-compr-eb.patch
a386648 perl-native: Specifically undefine other gdbm paths
3360f93 oeqa/bbtests: Show useful failure message for gplv3 test
58ecd46 oeqa/bbtests: Improve error handling
dcd361f gdbm 1.8.3: install ndbm.h and dbm.h
2d65e23 openssl: upgrade to 1.0.2c
dc5813d perl: remove default byteorder from config.sh
f4248c6 perl: odbm.t: fix the path of dbmt_common.pl
d61804d perl: fix for ODBM_File.so
ae4e9de perl: fix test case switches.t
3020570 perl: use perl.inc for target and native perl
304ebe1 cpan_build.bbclass: remove libmodule-build-perl
3f7e55b perl: 5.20.0 -> 5.22.0
a01d406 curl: upgrade to 7.43.0
af193ea sysstat: upgrade to 11.1.5
b111b6b mmc-utils: fix the building failure when DEBUG_BUILD is 1
348c85c file: 5.22 -> 5.23
318687d gnupg: 2.1.4 -> 2.1.5
85b27b5 hdparm: 9.45 -> 9.48
2904802 git: 2.4.2 -> 2.4.4
da9b9ac elfutils: 0.161 -> 0.162
2578ff3 bitbake: codeparser: Add repr() methods
dcbbe54 bitbake: codeparser: Allow empty functions
43c6e8c bitbake: bitbake: fetch2/hg.py: fix unpack error and mirror tarball
3836d9b bitbake: fetch/perforce: Fix single file checkouts
4bc0fc7 oeqa/parselogs: Whitelist qemumips64 runtime error
b3b6483 testimage: Don't test xorg/vnc on qemuarm64
6dba7a0 oeqa/parselogs: Whitelist qemuarm64 runtime errors
e77c23c oeqa/recipetool: Fix symlink resolution
a3df479 gstreamer1.0-plugins-bad.inc: remove duplicate bzip2 dependency
e3b35f5 tiff: Update to 4.0.4
b3fc374 subversion: Fix subversion-native on Fedora22
608bf22 oeqa/parselogs: Fixed a problem in parselogs
871efa6 quota: fix quota do_install errors
c8042fd kmod: upgrade to 21
b428f88 recipetool: add appendsrcfile(s) sub-commands
49a089f recipetool.append: use argparse types for validation
83a6611 oe.recipeutils: fix line.split error in bbappend_recipe
01c9c73 buildhistory.bbclass: Create a files-in-<pkg>.txt containg recipe's pkg files
a053775 xf86-video-vesa: Upgrade 2.3.3 -> 2.3.4
f8b2537 xorg-xserver: Upgrade 1.17.1 -> 1.17.2
c11d4c9 mesa: Upgrade 10.5.6 -> 10.5.8
c812af4 freetype: Upgrade 2.5.5 -> 2.6
2eb1794 populate_sdk_base.bbclass: use pbzip2 to compress SDK tarfiles
a62cb8a image_types.bbclass: use pbzip2 for images requiring bz2 compression
bac6bb6 pbzip2: Fix native dependency on bzip2-native
a3a3376 pbzip2: add initial recipe, pbzip2 v1.1.12
64229cb run-postinsts: Fix ipk package management detection
b2c9e73 oe/rootfs.py: DpkgRootfs/OpkgRootfs add support for dependency handling in postinsts scripts.
f8661aa cmake: Upgrade 2.8.12.2 -> 3.2.2
b053b81 oe-selftest: timestamp the test runs
545ff77 uclibc: Cope with other mips32 variants
8b4f659 piglit: fix floating dependence on freeglut
6122446 gdb: Add missing runtime dependency for python option
d2a87aa unzip: fix four CVE defects
a1bac0f qemu: backport patches to fix CVE issues
a8ae731 terminal.py: Allow devshell/menuconfig on recent gnome-terminal
e8af6ad bluez5: upgrade to 5.31
c148ce5 linux-firmware: upgrade to commit 3161bfa479d5e9ed4f46b57df9bcecbbc4f8eb3c
7b2f30e weston: fix libdir/libexecdir confusion
8cef098 bluez5: fix lib/libexecdir confusion
98c2bdb testimage: Handle ipk/deb packaging format tests correctly
e6f29dd wic: oe-selftest: Test image compressing
a04ebe7 wic: Make code more pythonic
3476685 wic: Implement image compressing
597cba6 wic: Add new argument to direct plugin
40349f1 wic: Add new argument to wic_create function
13427e1 wic: Add --compress-with command line option
48b5ea6 sanity.bbclass: check /bin/sh is dash or bash
ad2bd4c toolchain-scripts: fix for multilib
8c3dd2d bitbake: event: Handle recursive events and the data store better
00ca43b bitbake: cooker: Fire BuildCompleted before finishing the command
d93bc4c bitbake: toaster: Add url pattern for backward compatibility
df48243 bitbake: toaster: split orm app into it's own module and app
62288a6 bitbake: toaster: bldcontrol Ignore toasterconf files in own directories
10e35ab bitbake: toaster: Restore 'in project' filters to main tables
4013784 bitbake: toaster: table.js fix filter visual indicator and interaction
d21e174 bitbake: toaster: toastertable Pass up the kwargs for setup_filter
93c54c2 bitbake: toaster: Enable toastertable cache
f28116e bitbake: toasterui: fixes after html5 compliance testing
583e320 bitbake: toasterui: verify variable before usage
8ef5165 bitbake: toaster: delete multiple builds
5d0abf1 bitbake: toastergui: select project types
70c4eb8 bitbake: toaster: refactor build model
287b49a bitbake: toaster: bring django-aggregate-if into the project
35fe311 bitbake: toaster: add django-aggregate-if
335c975 bitbake: toaster: fixes after replacing BuildRequest with Build
d7c8d95 bitbake: toaster: fill in build data from buildrequest
1605635 bitbake: toaster: refactor the builds pages
2c7ed96 bitbake: toaster: remove BuildRequest references
c362e61 bitbake: toaster: remove MANAGED references
b98a2fc bitbake: toaster: fixing undefined variables
933e4db bitbake: toastergui: enable strict variable checking
0b2e644 bitbake: toaster: improve the buildenvironment API
aad93dd bitbake: toastergui: fix angular error
ffd7cac oeqa/selftest/recipetool: Fix appendfile_binary test on opensuse131
e8c50a2 lib/devtool/standard: Fix patch cleanup
d85231e lib/oe/patch: Fix git patch application for source in subdirectory
615b351 oe/utils.py: Add support for init/end helper functions in ThreadWorker.
3fa3215 oe/utils.py: Fix thread leakage in ThreadPool
18e902b wpa-supplicant: Revert "Make SystemD D-Bus config conditional"
ef1a66b maintainers.inc: reassign GTK+ and X maintainership
70a1c1e apt-native: Drop obsolete symlinks
68a11a8 meta-environment: Ensure we append to the default TOOLCHAIN_NEED_CONFIGSITE_CACHE
6cfed59 toolchain-scrpts: Fix sitecache issues with multilib
fed80c3 staging: Strip files in sysroot
6f4304e bitbake: runqueue: Sanity check BB_NUMBER_THREADS
810bf00 bitbake: runqueue: Handle BBHandledException correctly
2ce9055 bitbake: server/process: Don't log BBHandledException
c6918b6 bitbake: runqueue: Improve handling of fakeworker failing to start
df123dd bitbake: event: Inject 'd' into event handlers
69b6919 bitbake: bitbake: Add explict getVar param for (non) expansion
86d30d7 meta: Add explict getVar param for (non) expansion
f98c849 distro/package_regex.inc: Fix dbus version pattern
a06a5ae bitbake: bitbake-user-manual-ref-variables: Added BBLAYERS_FETCH_DIR glossary item.
dcb441c neard: remove unused service file
c0123e5 rpm: Rebrand rpm custom macro paths to be distro specific
a990d21 rpm: Fix lua 'print' statement capture
db34474 rpm: Fix CVE-2013-6435
3886107 rpm: Fix CVE-2014-8118
5f0dfec distutils-common-base: add to, don't set, FILES_${PN}
bfa8ae9 python-2.7/3.4-manifest.inc: add missing dependencies for python-netserver
fbed86a python3-ctypes: Fix cross compilation for arm targets
81e469b wic: removed unused command line option
a4da21d wic: code cleanup: superfluous-parens
4862a4c wic: oe-selftest: Add 3 tests of 'wic help' command
40764a3 wic: Return error code when wic fails to invoke command
5daadf8 wic: Integrated plugin docstrings into 'wic help plugins' output
cfe6412 wic: Add missing docstrings to plugin classes
553f332 wic: Code cleanup: bad-classmethod-argument
9286213 wic: Document creation of empty partition
410e272 oe-selftest: wic: Fix testcase
2173a0e init-install: Properly delete partition table
68d8f6d init-install: code cleanup: replace /dev/$device -> $device
99a7c5b init-install: code cleanup: Replace tabs with spaces
a10c448 init-install: Specify partition name in parted command line
891cdac init-install: Specify filesystem type in parted command line
1f7d16b init-install: Implement UUID support
04bff65 init-install: Use GPT table with GRUB 2
78bacee init-install-efi: Implement UUID support
d040802 busybox: Enable UUID-related options
411c276 initramfs-live-install: Add blkid to initramfs
ff8ec3d image-live: Set syslinux timeout to 5s
74603c4 rt-tests: bump version to v0.92
b8d8d1d babeltrace: Fix invalid pointer free with trace collection
f3a1bec dbus-test: Upgrade 1.8.10 -> 1.8.18
955537c dbus: Upgrade 1.8.16 -> 1.8.18
9497345 packagegroup-core-tools-profile.bb: Remove oprofile.
5c1f244 packagegroup-core-sdk.bb: Drop distcc from the core-sdk.
840d055 runqemu-internal: set mutual exclusiveness for serial and nographic options
a155d24 runqemu-script: define console for qemuarm NFS booting
67b9643 runqemu-internal: add support to boot arm64 qemu target via NFS
8b1bc36 runqemu: fix MACHINE being detected as qemuarm for qemuarm64 kernel image
3739d36 qt4-4.8.7: restore arm64 patches which are dropped by mistake
b877c96 cups: upgrade from 2.0.2 to 2.0.3
83836c5 openssl: fix building on x32 systems
798daa7 Revert "distrodata: Remove unnecessary include of package_regex.inc"
41423d9 lttng-modules: drop makefile patch
f677b58 insane.bbclass: fix false negative in build-deps QA check
ae9102b copyleft_filter.bbclass: Allow to filter on name
b4c5f80 gtk+: Upgrade 2.24.27 -> 2.24.28
04a1fea base.class: warn for invalid PACKAGECONFIG
e344dc1 libpcap: add a dummy PACKAGECONFIG for bluez5
00a3872 bluez5: remove alsa from PACKAGECONFIG
695279b libsdl2: PACKAGECONFIGize
914278e neon: fix compat issues with gnutls 4.3
553305e logging.bbclass: avoid bashism in bbdebug()
4caed87 distutils: regenerate pyc files after being modified by sed
de18f75 security_flags.inc: remove duplicated over-rides
8ef99a0 libxml2: Security Advisory - libxml2 - CVE-2015-1819
64df52d piglit: Add missing inclusion of Xutil.h
6353ee6 tzdata: update to 2015e
eaf0980 tzcode-native: update to 2015e
2054b29 devtool: deploy: fix preservation of symlinks and permissions/ownership
e22c181 lib/oeqa/utils/commands: ensure get_bb_var() works when value contains =
0899d9a classes/externalsrc: handle tasks with existing lockfiles
32ed5f5 recipetool: appendfile: fix file command error handling
44e0369 recipetool: appendfile: clarify help text
07f7665 devtool: use DevtoolError for error handling
5648a79 devtool: remove some unused return values
6027809 devtool: split out 'patch' update mode into a separate function
18efa99 devtool: split out 'srcrev' update mode into a separate function
f5ea48c devtool: slight simplification of path splitting logic
962f8a4 devtool: simplify few conditionals a bit
1f48307 devtool: simplify the logic of determining patches to be removed
5d7437e devtool: update-recipe: do rev parsing in a separate function
f0ab93f devtool: refactor bb task execution into a separate class
6e039bf devtool: fix wrong indentation
7a98387 bitbake: bitbake-user-manual-ref-variables.xml: Added BB_ALLOWED_NETWORKS desc.
5efbaaf packagedata: Fix to ensure variables expand correctly
ed3b424 wayland: Fix hardlink corruption issue
04e2dd9 multilib_global: Stop empty space influencing RPROVIDES
af377d6 package_ipk/deb/rpm: Improve OVERRIDES handling
379a030 bitbake: toastergui: prevent contamination of libtoaster context
4f459fc bitbake: toaster: Add global ajaxError handler
0573e2d bitbake: toaster: Add ajax loading spinner
eb28534 bitbake: toaster: tables: Remove obsolete field_name for select column
5a013b5 bitbake: toaster: Make toaster script to work in dash
0eaf070 bitbake: toaster: Code cleanup: bashisms
58cd4a1 bitbake: toaster: fixes after refactoring
27f5137 bitbake: toastergui: remove xhr_datatypeahaed layerdeps call
a8be6d4 bitbake: toastergui: remove xhr_datatypeahead and xhr_XXXbuild
88dca45 bitbake: toaster: eliminate duplicate querysets
7c2b866 bitbake: toaster: add class template view for single-object pages
51ae1de bitbake: toaster: toastertables raise errors
c941743 bitbake: toaster: ToasterTables add computational fields
58600cf bitbake: toaster: toaster table add raw data
4a2a057 bitbake: toastergui: remove xhr_projectedit and xhr_projectinfo URLs
b1c91d0 bitbake: toastergui: use defaults on xhr_datatypeahead parameters
d9341d1 bitbake: toaster: toastertables REST refactoring
751e918 bitbake: convert all project-based view to JSON APIs
afe06e3 bitbake: toaster: move project data typeahead to the REST API
94aa0d5 poky-tiny: Update kernel to 3.19
f268480 pulseaudio: fix version when building inside a dirty git checkout
19d61b9 libpostproc: pass correct libdir
1d350d4 Add license file XFree86-1.0
e53c871 gcc-source.inc: fix STAMPCLEAN to avoid race issue
7a4d72d oeqa/parselogs: Added some more errors to the whitelist.
ee66396 oeqa/parselogs: The logs are now copied and parsed locally.
f355baa libatomic-ops: 7.2 -> 7.4.2
346769c piglit: upgrade to more recent srvrev
7b08012 cmake: extend CMAKE_MODULE_PATH instead of setting
ad0aa8d oeqa/utils: Added timeout decorator for testcases.
f08baee cracklib:Fix an error in the patch
8db97b5 libgpg-error: Upgrade 1.18 -> 1.19
b108e3e blktrace: 1.0.5 -> 1.1.0
f0651f4 sysstat: DEPENDS on base-passwd
4467c72 mtools: add PACKAGECONFIG for libbsd
041af82 multilib.bbclass: use package_qa_handle_error
ad9542c update-rc.d.bbclass: add MLPREFIX when set RRECOMMENDS
6119f30 bind: ensure searching for json headers searches sysroot
62136c0 xorg: fix VESA int10 error
c929827 neon: build the test suite to verify neon links
b012fc8 cups: clean up autotools use
8c9acb7 x264: r2265 -> r2491
e28c111 yasm: 1.2.0 -> 1.3.0
89734f8 libevdev: 1.3 -> 1.4.2
c516f5f qmmp: 0.7.7 -> 0.8.5
6aa3cdd gstreamer1.0-libav: fix build for i586 with gcc
6e54d3b gpgme: 1.4.3 -> 1.5.4
bd418a0 dropbear: 2014.66 -> 2015.67
daa597e augeas: 1.2.0 -> 1.4.0
3e42d79 clutter-gst-3.0: 3.0.4 -> 3.0.6
860265e libpfm4: 4.3.0 -> 4.6.0
d1fc21e busybox: fix the wrong help text for chown
47c4e76 busybox: fix double free error for ifconfig
7ab1ae6 busybox: sync the patches for git version
4fb4732 build-appliance-image: do_vmdkimg replaced by do_vmimg
a0b5164 boot-direct.bbclass: Add support for VDI images
fe0f643 sanity.bbclass: Prevent 'vdi' and 'live' to be built together
1177419 documentation.conf: Document do_vmimg
24be4df qemu: Add support for UUID
a13c51e image: Support for VDI
d59d876 wic: Move validation of --ptable option to wks parser
69bbf80 wic: Add help for --part-type and --use-uuid options
998273a wic: oe-selftest: Configure testing of gpt/UUID image
b71f4d0 wic: Use partition UUID in directdisk-gpt
708ce3f wic: Set type GUID and UUID for partition
9f40e6a wic: Add parameter 'uuid' to Image.add_partition method
c3148c6 wic: Refactored getting root device name
5b4ab4e wic: Fix format string
0510591 wic: Generate random uuid for partition
8535185 wic: Add --use-uuid partition option
0e36497 wic: pylinted partitionedfs.py
4f9fe5b wic: replaced __run_parted with exec_native_cmd
dec9156 wic: move checks to exec_native_cmd
77e9243 wic: removed exec_cmd_quiet and exec_native_cmd_quiet
921ea71 wic: Test creation of directdisk image with GPT table
ebc6936 wic: create directdisk-gpt.wks
9682d8f wic: Make _ptable_format public
179fb20 wic: Use gptmbr.bin MBR for gpt partitions
76f5035 wic: Add gpt to the list of supported partition table formats
b7b3e46 wic: check if part_type is set only for msdos partition table
0a13707 wic: set legacy_boot flag for gpt partitions
e5a1175 python-smartpm: change "already installed" warnings into info messages
0090170 lib/oe/rootfs: tidy up log warning reporting
63e6259 insane: errors out on binaries installed by allarch-inherit recipes
062678c sysvinit: Only enable recipe in builds where its applicable
a3e60c3 sanity.conf: Bump minimum bitbake version to 1.27.1 for sstate change
ccb2d1b sstate: Add eventhandler which cleans up stale recipe data
926de56 bitbake: bitbake: Bump version to 1.27.1
4bedfef bitbake: cooker/event: Add an event which lists all stamps reachable after parsing
c93f334 poky.conf: use correct GPLv3 license name
90b58da x264: use x86 over-ride instead of i586
c116da8 lame: use x86 over-ride instead of i586
cfd7d6e gstreamer1.0-plugins-base.inc: use x86 over-ride instead of i586
1f3b403 python-numpy: use x86 over-ride instead of i586
ba74614 scripts/jhbuild: remove
02a1a8f libsndfile: Security Advisory - libsndfile - CVE-2014-9496
e2603e5a autogen: redirect the log file to build dir
20a71d6 distrodata: Use Python CSV instead of did by hand
56072bb distrodata: checkpkg make usage of oe.recipeutils.get_recipe_upstream_version
2a4ee94 distrodata: Remove unnecessary include of package_regex.inc
a8c7467 recipeutils: Improve get_recipe_pv_without_srcpv function
9634494 xkeyboard-config: Upgrade 2.14 -> 2.15
1a6bcd7 xf86-video-vmware: Upgrade 13.0.2 -> 13.1.0
0131986 xf86-video-omap: Upgrade to 0.4.3
81b0a09 xf86-input-synaptics: Upgrade 1.8.1 -> 1.8.2
28d9b2d xf86-input-keyboard: Upgrade 1.8.0 -> 1.8.1
a2caca7 xf86-input-evdev: Upgrade 2.9.1 -> 2.9.2
09fd6c8 python3-pip: Adds recipe for python3-pip
c4553e0 python3-distribute: Upgrade to python3-setuptools 15.2
ae67f74 python3-io: Fixes compilation of python3 ssl module
3b1f687 python3: Fix distutils import error
84105eb python3: fix pyconfig.h installation on target
39abb87 rpm: remove extra dev and dbg packages
673a49a lsof: Remove LSOF_OS
554e255 libpam: Fix wrong crypt library detection
f73abe5 sgmlspl-native: 1.03ii -> 1.1
9c8ed1b cmake: Whitespace fix
759ac65 alsa-tools: add dependency glib-2.0
60d67fe alsa-plugins: enable alsa-plugins-pulseaudio-conf conditionally
ba93bdd qt4: upgrade to 4.8.7
20a3a36 scripts/combo-layer: Fix exit codes and tty handling
ffd9a4b bsps: update SRCREVs to the 3.19 latest
be0c6ec meta-yocto-bsp: bump to linux-yocto 3.19 for the non-x86 BSPs
ffaa0f1 bitbake: parse/BBHandler: Avoid repeatedly resetting FILE
7fff2ed xserver-xorg: always enable DRI2 by default
ea63603 linux-yocto: update beaglebone, mpc8315e and edgerouter to 3.19
fcc67ae xserver-xorg: Upgrade 1.16.3 -> 1.17.1 (OELAYOUT_ABI change)
8b5cb86 distro/package_regex: add stable branch regex for Pango
8313d6e dosfstools: Add recipe for v3.0.28
87d6717 glib-2.0: 2.44.0 -> 2.44.1
359585a ethtool: 3.16 -> 4.0
46ccf0a debianutils: 4.5 -> 4.5.1
5143631 python-nose: 1.2.1 -> 1.3.6
0c2f1ce python-mako: 0.9.1 -> 1.0.1
9052526 liberror-perl: 0.17023 -> 0.17024
f63e9b3 xserver-xorg: Upgrade 1.16.3 -> 1.17.1 (OELAYOUT_ABI change)
0420f7f distutils.bbclass: consistency between error message and setup.py's command
68ffb9a libav: upgrade to 9.18
86319df btrfs-tools: 3.18.2 -> 4.0.1
d66e6d5 alsa-plugins: Include missing sys/select.h
91b7c88 binutils: Update to tip of 2.25 branch
0d45914 gdb: Minor upgrade to 7.9.1
8a5df28 glibc: ignore for musl/uclibc but only for target recipes
9dbb2d2 glibc: remove duplicate --disable-nscd from EXTRA_OECONF
933aaf7 rsync: backport a patch to fix CVE-2014-8242
9ee388f gawk: upgrade to 4.1.3
ed3283b util-linux: upgrade to 2.26.2
1fd152f glibc: Fix __memcpy_chk on non-SSE2 CPUs
f21f0d7 packagegroup-core-full-cmdline: remove lighttpd
8c6bd8a recipeutils: Add get_recipe_upstream_version and get_recipe_pv_without_srcpv functions
7cd3c60 boost: fix build for mips
801436b sstate: Add note when performing sstate mirror checks
1f839f2 sstate: Parallelise checkstatus calls for sstate mirror
5331bbc oe/utils: Add simple threaded pool implementation
9fd3c7e soc-family.inc: Add a default SOC_FAMILY value
2389d4c base: Fix license checksum rebuild problems
5cc614e qt4: unconditionally disable gstreamer 0.10 support in qt webkit
1d0e217 xserver-nodm: Support reboot from inside X
1d22b56 gnutls: control zlib support via PACKAGECONFIG
1a180b6 gnutls: use pkg-config to locate zlib
e092f15 openssl: Backport upstreamed version of patch to fix build on mips64
db3aafa alsa-plugins: Install 99-pulseaudio-default.conf when pulseaudio is enabled
5973353 mesa: Upgrade 10.5.4 -> 10.5.6
63a409a python3: fix build for shared object
511865f alsa-tools: update makefile_no_gtk.patch
30adf4b grep: fix CVE-2015-1345
fb0da9e gpgme: fix CVE-2014-3564
1c5e37a security_flags: Add comment about what it does and who uses it
ac87ae7 lttng-ust: 2.6.0 -> 2.6.1
23371df nasm: 2.11.06 -> 2.11.08
b47ef4f gnupg: 2.1.2 -> 2.1.4
917ca4d man-pages: 3.83 -> 4.00
3ac8fb3 cracklib: 2.9.3 -> 2.9.4
df093b3 python-git: 1.0.0 -> 1.0.1
1b193fd git: 2.3.7 -> 2.4.2
b268343 debianutils: 4.4 -> 4.5
6e23a3d bitbake: toaster: more HTML5 fixes
225daf4 bitbake: toaster tests: enable url check test
2914391 bitbake: toaster/tts: Fix tests
356809f bitbake: toaster: enable no browser start
b3189f3 bitbake: orm: Fix all failing unit test
3480be7 bitbake: bldcontrol: Fix all failing unit tests
22a0d8a bitbake: toastergui: add tests for xhr_datatypeahead calls
65c805e bitbake: toastergui: tests for the all-projects API point
fea4a82 bitbake: toasterui: replace cookie-based preferences with session data
1b6a50c bitbake: toaster: refactor checksettings command
52fe880 bitbake: toastergui: Consider task name when restarting a build in /builds
6fab4cb bitbake: toaster-gui: Show task name for the builds in /builds
e5aa569 bitbake: toaster: Add an invalidate cache method on data update signal
2de01a6 bitbake: toaster: Port layerdetails to ToasterTables
a0ea663 bitbake: toaster: Add a simplified ToasterTable template
e3a4905 bitbake: toaster: Fix toastertable header
6a9efef bitbake: toastergui: show relative paths in configvars view
9dcfa32 bitbake: toastergui: table header bring back
56c5ff9 bitbake: toaster logger: assign projects to all builds
e3e85bd bitbake: toaster logger: refactor recipe and layer file paths
a5236be bitbake: toaster: enable server-side sessions for all usages
5da543c bitbake: toaster: Fix build button current project race
b8caddb bitbake: data: Make expandKeys deterministic
3db9d6e bitbake: ConfHandler: Fix bogus dependency problems
91c45c0 bitbake: BBHandler: Drop cwd from search path
08b77c8 bitbake: cooker/utils: Improve parsing profiling
553267d bitbake: tests/data: Add key expansion unit test
bde0f60 bitbake: tests/data: Add log parsing test code
8d8b02a bitbake: data: Revert expandKeys warning move
30cba37 bitbake: data: Clean up expandKeys None value handling
c7f01ce harfbuzz: upgrade to 0.9.40
46bca1b wpa-supplicant: upgrade to 2.4
2d2d5e6 ppp: Security Advisory - CVE-2015-3310
0bbd310 boost: extend libraries with log and random
68d7124 xkeyboard-config: bring back Philippines keyboard symbols
7a4c52c gcc-source.inc: set PATH for gnu-configize, not for cd
5a2d985 qemu: fix CVE-2015-3456
2efd475 apt: upgrade to 1.0.9.9
320d766 waffle: Upgrade 1.3.0 -> 1.5.1
346ef92 wic: refactored processing of wic exceptions
9761bec wic: do not strip traceback
3b627bb update-rc.d: Improve RRECOMMENDS handling
2f0fcb2 bitbake.conf: Use immediate expansion for os.uname()
ed1555c avahi: Fix key expansion variable masking
a05663b distro/upstream_tracking: remove stale update reasons
374064c distro/package_regex: Add extra patterns for GNOME stable release packages
d60a207 distro/package_regex: add patterns for GNOME stable releases
1604ca2 kernel: Build uImage only when really needed
a33a567 kernel: Add basic fitImage support
d2e26ef kernel: Build DTBs early
bb68c7c kernel: Separate out uboot_prep_kimage
7f131b8 kernel: Pull uImage generation into separate class
12f983b kernel: Pull out the linux.bin generation
88d79fe kernel: Rework do_uboot_mkimage
92864a9 kernel: Clean up KERNEL_IMAGETYPE_FOR_MAKE
af6405e grep: Fix LSB NG Cases for gplv2 version.
fe405a4 native: Improve PROVIDES handling
a9cb4dd autotools: Use space with prepend to clean up variable whitespace
a32937c bitbake: data: Move warning code to the first loop for performance
9e9d052 bitbake: siggen: Don't crash if number of task dependencies change
7fab819 bitbake: cache: Clean up getVar usage to modern syntax/style
5ee1222 bitbake: bitbake-worker: Fix regression with unbuffered logs
70c1d22 bitbake: fetch/hg: Disable checksums for archived downloads
51701777 bitbake: fetch2/git.py: Add gitpkgv_revision alternative version information
f03e108 bitbake: fetch2/__init__.py: Make get_srcrev output configurable
2db5dd7 packagegroup-core-x11-sato: add PulseAudio
bd9177c pulseaudio-client-conf-sato: initial recipe
862ce8a pulseaudio: conf-parser: add support for .d directories
5246fc0 pulseaudio: client-conf: Add allow-autospawn-for-root
5d71a49 alsa-plugins: initial recipe
55fe5a0 eglibc-use-option-groups: Conditionally exclude c++ tests
7a7c6b0 image.bbclass: Add a method for creating a companion debug filesystem
fa00c9a openssl: Fix build with gcc5 on mips64
d6e0c3f npth: Upgrade to 1.2
b6dc547 libassuan: Upgrade to 2.2.1
71b4ca3 boost/bjam-native: Upgrade to 1.58.0
d1ce219 valgrind: remove arm tests that don't compile
ace08a2 package.bbclass: Include missing variables on PACKAGEVARS
c49ff17 libpng: Upgrade 1.6.16 -> 1.6.17
5f60fd4 libpng12: Upgrade 1.2.52 -> 1.2.53
29d5503 oe-selftest: Build wic runtime requirements and images before testing
7a4d637 gettext-minimal-native: Disable the unnecessary check in iconv.m4
ef19b19 bitbake.conf: programatically generate COMBINED_FEATURES
a60aeca utils: add helper to perform the intersection of two string lists
a497998 openssl: drop the padlock_conf.patch
ea2428a packagegroup-core-qt4e: make phonon-gstreamer plugin optional
87d20e4 gnutls: remove --with-libz-prefix configure option
98a3f87 toolchain-scripts.bbclass: fix quoting for CCACHE_PATH
a55e99f squashfs-tools: build and install unsquashfs as well
74c7efb wic: Make sure file exists before removing it
1b2332d classes/buildhistory: ensure that git user email and name are set
e1de8af initrdscripts: make boot drive detection more generic
9da81df buildstats-summary: add eventmask
65c0027 rootfs.py: Make set -x not break rootfs creation
c1eefc5 libepoxy: make buildable for x11-less environments / update to latest version
887fcb5 linux-yocto/3.19: NFC config, Braswell fixes and axxia support
c1ed724 linux-yocto/3.19: CONFIG_ATA_BMDMA and gcc5 ARM64
be1442e linux-yocto/3.19: Braswell DRM fixes
03abfcb linux-yocto: drop suggestion of devshell for patch failures
203eadf linux-yocto-custom: clarify bbappend versus copy in comments
f92f336 linux-yocto/3.19: braswell DRM/i915 Graphics fixes
ada5e49 linux-yocto/3.14: cavium and configuration changes
2f41470 bitbake: bitbake-user-manual: Updated "Delete a Task" section for broken deps
decb28f genericx860common.inc: Enable using the 3.19 kernel
ef8a781 xvinfo: upgrade to 1.1.3
175c724 xkeyboard-config: upgrade to 2.14
b88a24a xdpyinfo: upgrade to 1.3.2
b7a051f puzzles: upgrade to latest srcrev
9d8c61a sanity.bbclass: import subprocess in correct function
45bf783 license_class: Add explicity avoid of CLOSED license in validations
b3fba03 gtk-engines: Make gtk-engines-dev installable by dropping dependency to not generated gtk-engines package.
a0cbb5b rootfs.py: Improve rpm log_check_regex
b29ca69 zlib: clean up base_libdir symlink
45b8e62 combo-layer: handle unset dest_dir in sanity_check()
c60aac5 distro: remove obsolete gstreamer 0.10 packages from distro configuration
bedf028 upstream_tracking.inc: Remove obsolete reasons
86a49aa libxdmcp: make libbsd usage deterministic
5bcf966 sstate: Add handling of do_shared_workdir task
b5ba70b sqlite3: upgrade to 3.8.10
2af3009 midori: fix build with GLib 2.44
929b179 testapps: remove old gst-meta-audio/video dependencies
66e2eef sanity.bbclass: improve the sanity check for PATH and BBPATH
9ceff87 pinentry: package update to 9.2
91681fe alsa-utils: upgrade to 1.0.29
1416986 alsa-tools: upgrade to version 1.0.29
3a864e5 vala: upgrade to version 0.28.0
f8232d7 gstreamer: remove 0.10 recipes
443d25a webkitgtk: disable audio and video support
4c67abd qt4: disable Phonon framework
b2365c4 qt4: remove Qt Mobility
50ce68a clutter-gst: update to latest upstream version 3.0.4
d30b1b0 python-gst: remove obsolete Python gstreamer 0.10 bindings
336ddb3 icu-native: fix hard paths in native icu
d642865 xkeyboard-config: remove GPLv3 files
0e38b69 libxx86vm: upgrade to 1.1.4
c096376 libxvmc: upgrade to 1.0.9
d561834 libxt: upgrade to 1.1.5
db6ca6b libxshmfence: upgrade to 1.2
a8a2b8d libxrender: upgrade to 0.9.9
0e99e1a libxrandr: upgrade to 1.5.0
f158d2e randrproto: upgrade to 1.5.0
3ddc5cb libxkbfile: upgrade to 1.0.9
c271fae libxfont: upgrade to 1.5.1
9c6576b libxdmcp: upgrade to 1.1.2
bfb1cf7 libx11: upgrade to 1.6.3
b52526d libfontenc: upgrade to 1.1.3
9fbfb5c font-util: upgrade to 1.3.1
3eab94c pcmciautils: fix the parallel building issue
7539c1f devtool: update-recipe: add option to write changes to bbappend
fbfc06a recipetool: add appendfile subcommand
c63adf5 oe-selftest: move recipetool tests to their own module
2298b4a lib/oe/patch: use with open() for all file operations
3d0418a devtool / recipetool: ensure bb.note() gets printed
f302457 msmtp: Upgrade to 1.6.2
e5ef343 liburcu: Upgrade to 0.8.7
6dcb8ef libinitscripts: Upgrade to 9.63
550a0ae libidn: Upgrade to 1.30
f49d90a libksba: Upgrade to 1.3.3
16caaab bitbake: bitbake-user-manual-customization.xsl: Pointing to mirrors for XSL files.
7310c3c bitbake: fetch/git: Fix uri in git checkstatus
8b8859a bitbake: toaster: Remove dependency on daemon application
37c0b98 bitbake: localhostbecontroller: Fix server search debug message
3371a7b bitbake: fetch2/hg.py: add clean function
aefc80c bitbake: lib/bb/utils: fix and extend edit_metadata_file()
ba0546b bitbake: lib/bb/utils: fix several bugs in edit_metadata_file()
0d9c452 bitbake: lib/bb/utils: add function to get layer containing a file
40b58b1 meta-yocto-bsp: Add genericx86* BSP to use 3.19
37fe48d glibc: CVE-2015-1781: resolv/nss_dns/dns-host.c buffer overflow
bc162d2 bitbake: tests/parse: Add file missing from previous commit
c2bb602 wic: remove intermediate partitions
71626c1 bitbake: tests/fetch: Add mirror of mirror tests
2be2271 bitbake: fetch2: Improve mirror building function error handling
b614049 bitbake: fetch2: Allow GIT_SMART_HTTP to be passed through
5d42679 useradd.bbclass: Remove base-passwd dependency
4075192 devtool: if workspace layer exists, still ensure it's in bblayers.conf
293c82b devtool: deploy-target: use tinfoil instead of bitbake -e
5796fe4 lib/oe/recipeutils: add a parse_recipe_simple() function
1bab18f devtool: fix build env command execution error handling
18114bb devtool: deploy plugin: fix bad indentation
7883af3 devtool: add missing docstrings
c977cdf devtool: rename unused variables
87fba31 devtool: remove unused imports / re-imports
89fb8c5 devtool: extract: remove patches when S=WORKDIR
4faa0cd gstreamer1.0-plugins-bad: Move EGL requirement for Wayland
05ea29b xserver-xorg: add PACKAGECONFIG for wayland and add xserver-xorg-xwayland
24b8347 native.bbclass: avoid unintended substring replacement when setting PROVIDES
cdf8180 lttng-modules: Update to stable version 2.6.1
e5f9a2c Revert "libsdl: depends on libglu when x11"
0cf9ef0 cairo: make xlib and libxcb dependencies explicit
26fcfbb base-files: Remove /proc/bus/usb from fstab.
3f8a47b automake: simplify perl location forcing logic
226ba5c autoconf: simplify perl location forcing logic
c41b5b6 bitbake: bitbake: fetch2/git: Add URL when latest_revision generates an exception.
2a56445 bitbake: tests/parse: Add very basic start of parse tests
fd73114 bitbake: BBHandler: Error for incomplete function definitions
c5316d4 bitbake: tests/fetch: ensure fetch tests preserve current dir
f5a87b4 bitbake: fetch2/git: ensure the unpacked origin remote points upstream
1dc2ee9 bitbake: runqueue: Handle cases where siginfo is now a parameter to the hashvadlidate function
a485c2b boost: properly fix do_boostconfig re-execution
79a2fc2 python3: Upgrade from 3.4.2 to 3.4.3
1237db6 sstate: Improve HASHCHECK function to make siginfo configurable
f5f2467 kernel/rm_work: Improve interaction
fab7da4 poky.conf: Fix git URL example
e05be1f bitbake: toastergui: tables updates for HTML5 compliance
80ca4f0 bitbake: toaster/contrib: adding TTS squashed patch
23f5b00 bitbake: toaster: Port All recipes, layers and machines to ToasterTables
7f8c447 bitbake: toaster: Add toaster table widget
2ac26e4 bitbake: toaster: managedcontextprocessor requires Project imported
ec8bd70 bitbake: toaster: Remove old bldviewer application
c5a1623 bitbake: toaster: fix html5 compliance
35d75c8 bitbake: toastergui: change the import layer action help text
534da08 base: Avoid find race
cf8c2e3 glibc: Fix x32 make race
3e7dde7 oeqa/utils: Fixed a problem with get_bb_var not returning right variable.
13fb855 libevent: add ptest
942ec74 systemd: removing workaround odering journal after remote-fs.target
11b8f34 alsa-tools: set CLEANBROKEN
0bc3a79 systemd.bbclass: drop has_exactly_one_service setting
3fb1532 strace: add PACKAGECONFIG for bluez
b92a75c socat: fix for parallel build
5f165e1 ghostscript: 9.15 -> 9.16
109d670 apr: 1.5.1 -> 1.5.2
27387f5 libpcre: 8.36 -> 8.37
bbb00e3 coreutils_6.9.bb: Fix LSB NG Cases.
7a483d1 bind: separate B and S
3cad583 xf86-video-cirrus: Upgrade 1.5.2 -> 1.5.3
0ac9aa1 packagegroup-core-qt: add x11 to REQUIRED_DISTRO_FEATURES
d003b90 at-spi2-atk: add x11 to REQUIRED_DISTRO_FEATURES
12d02d5 recipes-sato: add x11 to REQUIRED_DISTRO_FEATURES
3a0a27f gst-plugins-gl: add x11 to REQUIRED_DISTRO_FEATURES
b741051 recipes-graphics: add x11 to REQUIRED_DISTRO_FEATURES
f609f7a recipes-extended: add x11 to REQUIRED_DISTRO_FEATURES
41719e1 libowl/settings-daemon/libnotify: add x11 to REQUIRED_DISTRO_FEATURES
f744f0b libsdl: depends on libglu when x11
45c008b libglu: add x11 to REQUIRED_DISTRO_FEATURES
5f21aa0 mesa-demos: only enable glu when x11 in DISTRO_FEATURES
d5f7e09 mesa: fix do_install_append
212d9d4 libxml2: fix python path and add libxml2-python
52e465f ncurses: inherit pkgconfig
9f83916 qt4-x11-free: make virtual/libgl dependency conditional
f6e13ec sanity.bbclass: Increased verbosity for connectivity check
c9ec542 unzip: Security Advisory -CVE-2014-9636 and CVE-2015-1315
654f3e5 kernelshark: fix for rebuild
a3eda32 gcc-5: fix installed-vs-shipped
b12d79e module/module-base/lttng-modules: Improve kernel module dependencies
57aeb9e openssl/orc: virtclass-native -> class-native
7d02344 stat: fix SRC_URI
2682b78 elfutils: Disable the unnecessary check in iconv.m4
f65a682 gcc5: Add back g++ sysroot patch
80f59a3 meta-yocto/distro: Added Ubuntu 15.04 to SANITY_TESTED_DISTROS
099dbf3 maintainers.inc: update MAINTAINERS
4df4098 bitbake: toaster: adding art missing from Bootstrap
2d09cb2 gcc5: Add PR65779 patch to fix powerpc compile issues
e6bb5db insserv: Remove
464ee2e dbus: Fix do_install files outside ${D}
59ce7d0 bitbake: fetch2: Add BB_ALLOWED_NETWORKS support
9e24bde bitbake: fetch/hg: support submodules
d30aedc bitbake: fetch2: Allow git to use a different CA Bundle with private keys
cc63e15 bitbake: bitbake-user-manual-metadata.xml: Alphabetized varflag list.
0e8f83f bitbake: bitbake-user-manual-metadata.xml: Added two new varflag descriptions
3c4f377 bitbake: toastergui: removing unused views
e7f4d9c bitbake: toastergui: fix whitespace after URL
94d38a4 bitbake: toasterui: URL refactoring
a5193d3 bitbake: toastergui: Consider task name when restarting a build
44b7b67 bitbake: toaster: <Add class id to a few columns>
1e625fc bitbake: toaster: fix typo in format string
b546be9 bitbake: toaster: Code cleanup: indent
13e8814 bitbake: toaster: Make toaster script working in zsh
3b1bb2d bitbake: toastergui: decrease load time for configuration page
84a294e bitbake: toaster: clear up toaster shutdown for mac osx
2d69dd2 license_class: license_create_manifest improvment
b394cd4 license: Add support for handle INCOMPATIBLE_LICENSE in manifest creation
bb3469f license: Split visit_string in LicenseVisitor
8c7082d license_class: Generalize license_ok function
b971eb0 license_class: Reimplemented manifest creation in python
7405f47 distro_features_check: add any of test
dcb8f89 combo-layer: improve merge commit handling
5179d7c weston-init: support system's configuration file
54870dc dbus: upgrade to 1.8.16
4e5d6c7 gcc-4.9, gcc-5: Use variable SYSTEMLIBS_DIR instead of hardcoding it for aarch64
9ba0bf8 gcc: Add 5 recipes
a28371b kernel-yocto: propagate in tree defconfigs to WORKDIR
5929d94 linux-yocto/3.14: fix qemumips build error
c126709 linux-yocto: fix race between checkout and meta data generation
61e077e linux-yocto/3.19: Braswell support and bug fixes
fbbf054 xserver-xorg: Make xinerama selectable via PACKAGECONFIG
ccd0bed gstreamer1.0: Make check selectable via PACKAGECONFIG
5ac3e91 gstreamer1.0: convert GSTREAMER_1_DEBUG to PACKAGECONFIG
c4fc58e bind: disable the HTTP statistics service by default
4b042c2 bind: update libxml2 detection patch
0595667 bind: upgrade to 9.10.2
29c7111 bitbake: prserv: serv.py: remove unused and duplicate imports
1fe445d bitbake: toaster: filtersnippet remove redefinition of filter type key
286da98 bitbake: toaster: Add links to the layer add notification
bec5d16 bitbake: toaster: Refactor and expand layer add remove mechanism
a4cfca6 bitbake: toaster: projectapp Implement machine select command
ed26a06 bitbake: toaster: Move project context variables to common scope
4b59ba1 bitbake: toasterui: close build on BuildCompleted event
7759cd4 bitbake: toasterui: proper exit code on toaster errors
4a71102 oe-selftest: devtool: add a proper test to see if tap devices exist
1f15117 devtool: fix for rename of gcc-source
b7cff75 oe-selftest: devtool: fix broken URL in test_devtool_add_fetch
78ec80a bluez: update to 5.30
3176510 e2fsprogs: fix the CVE-2015-1572
781cd0d curl: upgrade to 7.42.1
0ea0f6d insane: Support aarch64 on musl
2a743d6 libart-lgpl: Fix cross compiling
02d0a00 kernel.bbclass: Fix race condition
e01db42 classes/buildstats: misc cleanups
9e9d25d classes/buildstats: don't catch all errors from mkdirhier
c045129 classes/buildstats: whitespace cleanup
6ca0be7 runqemu-internal: correctly set format for root FS as raw
19d5755 qemu: upgrade to 2.3.0
fc94b83 x11perf: Upgrade 1.5.4 -> 1.6.0
b98e993 xhost: Upgrade 1.0.6 -> 1.0.7
329245f xmodmap: Upgrade 1.0.8 -> 1.0.9
fea20fd xev: Upgrade 1.2.1 -> 1.2.2
14acb33 serf: update SRC_URI to use debian mirrors instead of googlecode
fd673b4 libarchive: fix out of tree builds
8381ffc kbproto: Upgrade 1.0.6 -> 1.0.7
c7e524c randrproto: Upgrade 1.4.0 -> 1.4.1
58830d3 xproto: Upgrade 7.0.26 -> 7.0.27
bebf1ce python3: Disable pip to fix issues on the Autobuilders
6599783 python3-native: Disable pip on native builds to fix Autobuilder issues
0be72c2 python3-native: Fix pip install issue due to unclean build directory
528a256 python3: Change python BASEVERSION to 3.4
2912ad7 generate-manifest-3.4.py: Add fractions to ${PN}-numbers
19149e6 python3: Upgrade from 3.3.3 to 3.4.2
b2b59b1 poky.conf: remove SVK mirror
fd584e0 connman: upgrade to 1.29
1f6d4cc connman: code cleanup
a2b98ef ghostscript: Add MicroBlaze support
51985eb siteinfo.bbclass: Add MicroBlaze big endian target info
8473de9 insane.bbclass: Add MicroBlaze big endian target info
55c96db kernel-arch: Update mapping for MicroBlaze architectures
09fa915 mirrors.bbclass: drop support for svk sources
c4359d1 shared-mime-info: Upgrade 1.3 -> 1.4
08d78e0 pseudo 1.6.5: less pointlessly chatty
eb4306e bitbake.conf/base.bbclass: Drop PRINC support
f841526 directfb: Correct bashism
7a8f37d dev-manual: Updates to add Luna support for Eclipse
b72cb0d ref-manual: Updated the "Image Features" section
6192753 ref-manual; mega-manual: Edits to further define packaging process
a2d770b poky-lsb: Select that latest LTSI, not a version which doesn't exist
6773af5 directfb: Improve CFLAGS handling for x86
d650772 security_flags: Add python-numpy to pie incompatible list
ee1c1ea bitbake.conf: backfill bluez5 feature
dbdf1ed bluez: remove bluez4 recipes
11981a5 bluez4: add proper systemd support
a7afc04 multilib: Tweak value of PN used for OVERRIDES
ed3321d systemd: bring back the patch to customise root's $HOME
39bd94a bind: remove 5 backport patches
daf5113 libart_lgpl: Allow art_config.h to be generated at compile time
29abd1f icu: Upgrade 54.1 -> 55.1
f0ac290 freetype: Upgrade 2.5.4 -> 2.5.5
8b96568 e2fsprogs: install populate-extfs.sh
9f40031 linux-yocto-dev: introduce 4.1-rc development kernel
358be3e perf: fix build (and feature tests) for 4.1-rcX
383fb05 linux-yocto: add core bluetooth support to qemux86* and common-pc*
e12d2be linux-yocto/3.14: refresh -rt support
d755e76 systemd: remove unused patches
90972c95 openssh: fix login fails for ssh -o Batchmode=yes with empty passwords
aa2b636 boost/libxslt: Enable nativesdk to unbreak <bitbake universe>
4255b32 wic: Add plugin for single partition disk
fd254d0 wic tests: Move wic tests to oe-selftest infra
6451c08 wic tests: Add docstrings to test methods
9fbfd40 wic tests: Add functional tests for directdisk
5bed033 qt4-embedded: add checking for AArch64 ilp32
eea3a90 libcap: Avoid passing "-e" to make
8bc5ccb oeqa/utils: Allow ~ in bblayers
0d9903d libtasn1: Upgrade 4.0 -> 4.5
014c9bc gnutls: Upgrade 3.3.12 -> 3.3.14
1643a7f oe-selftest: devtool: add some tests for devtool add -f
fa61a94 recipetool: allow specifying SRCREV via rev= in URI
4502dae devtool: add: use the appropriate file naming and versioning for SCM recipes
266ea28 devtool: add: add an option to fetch remote source
a4fca1d recipetool: ensure git clone is standalone when extracting
24e5ad2 recipetool: avoid second-level subdir when extracting
bae7794 package: Fix license exclusion packaging errors
24609d9 subversion: remove 1.6.X recipes
c1ac5a8 pigz: set ALTERNATIVE for nativesdk package to empty
145abfc elfutils: Security Advisory - CVE-2015-0255
927bc71 linux-firmware: add NO_GENERIC_LICENSE for all licenses
8651289 Revert "common-licenses: Add common license files for linux-firmware"
9c2e961 license.bbclass: allow copying license not in common licenses
462a873 pcmciautils: fix for parallel build
a185a09 bison: fix parallel issue
43a60fa rpcbind: 0.2.2 -> 0.2.3
18ed8ec ltp: 20150119 -> 20150420
1df3ea3 git: 2.3.5 -> 2.3.7
a69a4e8 man-pages: 3.82 -> 3.83
150fe37 dpkg: upgrade to 1.17.25
8ca6988 curl: Fix wrong assumption about sizeof off_t on largefile systems
aa38937 grub2: fix initrd size restriction bug
7fc174f elfutils: enable fix-build-gcc-4.8.patch
ddc6d09 texinfo: remove enumerate_greater_than_ten.patch
1bd0115 libaio: remove libaio-generic.patch
17f6cd2 lttng-modules: remove bio-bvec-iter.patch
636cbe6 openssl: remove 3 patches
2be3398 kmod: remove 0001-Makefile.am-fix-parallel-build-problem.patch
1903369 logrotate: remove logrotate-CVE-2011-1548.patch
7e23d9d libxml2: remove libxml2-CVE-2014-3660.patch
2e31add nspr: remove nspr-CVE-2014-1545.patch
31e6dda python3: remove sys_platform_is_now_always_linux2.patch
8cf04ed python-numpy: remove 2 dangling patches
f2db690 mesa: Upgrade 10.4.4 -> 10.5.4
44f5b0e default-distrovars: Clean up gcc license issues
bb77a36 libgcc-initial: Correctly reflect libgcc LICENSE
7b88042 gcc-shared-source: Add PV to PN
0321760 xserver-xorg: use GCC 5 patch from upstream
db40969 bitbake: bitbake: reset build mtime cache before the build
4eeae70 bitbake: bitbake: use sys.exit to simplify the code
37e46e4 bitbake: bitbake: Check if bitbake versions match
47e2dbd bitbake: bitbake: Handle BBMainException
74dc936 split_and_strip_files: regroup hardlinks to make build deterministic
9eb4222 lib/oe/package: Improve strip subprocess handling
26997d1 lib/oeqa: Add sdk tests for gcc/perl/python
527b28c autotools: Fix find races on source directory
e794d09 testimage: Improve sdk handling of TEST_SUITES
1ef8234 gpgme: Fix to use pkg-config in .m4 files
94ed114 oeqa/targetbuild: Use DL_DIR for downloads if present
591e6a6 sstate: Use SSTATE_DIR for FILESPATH
0007b5c testimage: Fix sdk test manifest handling
515a8b7 ref-manual: Updated the ELF Binary QA warning message
6e4a1a0 dev-manual; ref-manual: Fixed &dash; issue
ae736db libxfont: Security Advisory - libxfont - CVE-2015-1804
8f8858b libxfont: Security Advisory - libxfont - CVE-2015-1803
1abe116 libxfont: Security Advisory - libxfont - CVE-2015-1802
d812d32 kern-tools: unify meta directory detection
aee1b2a libarchive: Security Advisory - libarchive - CVE-2015-2304
0a6e3a9 less: fix CVE-2014-9488
b628843 rsync: backport a patch to fix CVE-2014-9512
c3537bd kernel-devsrc: depends on virtual/kernel:do_install
d6a579a gnu-efi: fix parallel issue
5c93858 icecc.bbclass: blacklist libgcc-initial
4817e01 libunwind: don't use gold for mips
e346628 mesa: respect x11 in PACKAGECONFIG not DISTRO_FEATURES
9686a10 udev-cache: improve error handling
c62828e udev-cache: Remove unnecessary tar read from stdin
b34412c alsa-utils: Remove double dependency on udev
a03039c subversion: upgrade it from 1.8.11 to 1.8.13
6bae518 populate_sdk_base: also record the host part into manifest
87de892 ptest: add recommends to ptest-runner
3ddd99d mkefidisk.sh: be more explicit with device error
50623fd mkefidisk.sh: fix hanging on non-writeable device
4d5c875 mkefidisk.sh: use script mode when running parted
216d26a devtool: update-recipe: check if source tree is a git repository
d6cd355 devtool: update-recipe: handle unversioned bbappends
1d40692 devtool: reset: avoid errors in case file no longer exists
e8db1cc devtool: add: use correct bbappend file name with -V option
f1f9fab devtool: handle . in recipe name
ca1f4d7 devtool: include bbappends in recipe parsing
a8c7558 oe-selftest: devtool: fix test_devtool_update_recipe_git
240b4ef devtool: modify: implement --no-same-dir
ee0ff82 devtool: modify: use B=S if that is the default for the recipe
46add1d xkeyboard-config: modified the license
a61234e sysstat: upgrade to 11.1.4
b92fd39 pciutils: upgrade to 3.3.1
34ddfb6 linux-yocto/3.19: configuration updates and stable integration
8c92444 tzdata: update to 2015d
b69bf51 tzcode: update to 2015d
b23855f insserv: Fix build with gcc5 and clang
09fab50 fontconfig: Fix pkgconfig file generation to not have absolute paths
7caffd2 fontconfig: Upgrade to 2.11.93
3ec67a9 pkgconfig: Upgrade to latest git tip
2a14041 gummiboot: upgrade 43 -> 48+git
3d2e60f grub: Backport const qualifier fix for gcc-5
fb4478e gtk+: Correct function prototype
4c74306 gnome-icon-theme: Needs nls.m4
9b19d65 subversion: Add -P to CPPFLAGS
35a2acd lttng-tools: Add extern qualifier to declarations in .h file
25105f8 mdadm: Fix inline semantics
77c2e2d u-boot-mkimage: Backport fix from upstream to fix build with gcc-5
44131ab xserver-xorg: Fix build with gcc-5
2bdbadd glibc, packagegroup-self-hosted, packagegroup-core-lsb: Consider non-glibc libcs
f6a2628 libsoup-2.4: Upgrade 2.46.0 -> 2.50.0
b4b46c0 librsvg: Upgrade 0.40.6 -> 0.40.9
0247a1e json-glib: Upgrade 1.0.2 -> 1.0.4
e070ff8 hicolor-icon-theme: Upgrade to 0.15
31e55d0 libxml-simple-perl/libconvert-asn1-perl: using PERLHOSTLIB
f003674 curl: upgrade to 7.42.0
7bfc989 systemd 219 -> system 219-stable
a6ad418 oeqa/selftest/toaster: fix bad indent
438b7e0 mtd-utils: enable mtd-utils-fix-corrupt-cleanmarker-with-flash_erase--j-command.patch
2f78aeb populate_sdk_base: avoid executing empty function
2d74cb4 uninative-tarball: delete the packagedata task
9a91a1f yocto-project-qs: Replaced GNOME Mobile with GTK+ wordings.
14d0b60 toaster-manual: Removed redundant video.
92d9a29 ref-manual: Removed FAQ question for GNOME Mobile.
ee19ce0 ref-manual: Fixed some dashes in the user input examples.
5c27b8b ref-manual: Fixed some formatting on a user-input example.
bed39bb ref-manual: Removed tag from profile-manual cross-ref
d0ba89a bsp-guide: Fixed link to the OpenEmbedded style guide.
e1518ee adt-manual: fixed formatting for user-supplied data in example.
9a054c4 dev-manual: Applied some formatting for user input.
87a60a2 dev-manual: Fixed link to Toaster Manual.
7e1a9d9 dev-manual: Fixed a cross-ref link that used "here" as the link.
acf537b dev-manual: Added Toaster to the list of ways to develop.
527cf82 dev-manual: Removed a cross-ref link to "here"
2747111 dev-manual: Updated branch descriptions for better manual maintenance
031aba2 ref-manual: Removed "Intel Corporation" from the "Links" section.
966dd98 dev-manual: Updated the poky definition in the "Terms" section.
447a351 ref-manual: Updates to ELF binary QA warning - review changes
d4dc2f8 dev-manual: Updated the "Enabling and Using the Tool" section
b8d0927 dev-manual: Updated "Requirements" section for creating partitioned images
7634512 ref-manual: Updates to the TCLIBC variable description
2eb48c2 ref-manual: Updates to ELF binary QA warning
f06cd40 ref-manual: Added glossary entry for EXTERNAL_KERNEL_TOOLS
ddafde3 ref-manual: Fixed style sheet
3985cef bash: explicitly define NON_INTERACTIVE_LOGIN_SHELLS in CFLAGS
d477da6 shadow: fix `su' behaviour
da1a288 gcc-4.9: backport from gcc trunk r212178
4af6384 siteinfo.bbclass: Added Epiphany archinfo
b16f22b insane.bbclass: Added Epiphany machine definitions
376b6b7 image: zap_empty_root_password doesn't handle passwd file in shadow case
bef3305 rootfsdebugfiles.bbclass: quick-and-dirty installation of additional files
e156b08 ghostscript: add objarch.h for armeb
f2a0a98 wic: code cleanup: wildcard imports
1d0c338 wic: code cleanup: undefined variables
eb9964e toolchain-shar-extract.sh: mention how to set up the SDK environment
f61e572 classes/populate_sdk_base: Show title in SDK installer
617a02d classes/populate_sdk_ext: add warning against editing configuration
0c09ff2 classes/populate_sdk_ext: disable network connectivity check
5b1a6ab devtool: force use of bash when running build within extensible SDK
d997e75 nss: improve the script signlibs.sh
9b1ad0e util-linux: Add lastb to alternatives
775dedb alsa-lib: 1.0.28 -> 1.0.29
b80a8fe u-boot.inc: make sure all counter variables are properly unset
781165b bison: don't depend on help2man
fc15878 init-install-efi.sh: fix gummiboot entry installation
6467ad4 txdata: update to 2015c
b3a9979 tzcode: update to 2015c
3a6f221 gcc-target: remove gcc-plugin-dev from PACKAGES
3189c5c libgcc: remove libgcov-dev from PACKAGES
6834c08 curl: remove extra dev and staticdev from PACKAGES
b07659e xz: remove liblzma-dev and liblzma-dbg from PACKAGES
6787dbc bison: 2.7.1 -> 3.0.4
2b49fba webkit-gtk: ANGLE doesn't build with bison 3
4f35838 gstreamer: change priv_gst_parse_yylex arguments
b20b0a6 python-git: 0.3.6 -> 1.0.0
4b295e5 tcl: 8.6.3 -> 8.6.4
243985f gnu-efi: 3.0.1 -> 3.0.2
29361a0 fontcache: allow to pass different fontconfig cache dir
71db576 oeqa/utils/decorators: Fix up frame selection
7283022 recipes: Fix charset.alias for musl
bd1aa28 mtd-utils: update to latest and fix static inlining
9e901d8 libnfsidmap: Include sys/types.h for u_int32_t
a4111d3 parted: Add patches to fix build on musl
114dd78 distcc:Include missing fcntl.h in zeroconf
c94d444 dosfstools: Fix build with musl
5688e6c openssh: Upgrade 6.7 - > 6.8
95f2534 coreutils: Add code to consider musl when selecting charsets
3dcaab5 at: Remove glibc specific code
1e4c6e8 strace: fixes for compilation failures with musl
869a770 e2fsprogs: add ptest
8fb1cd8 libunwind: use gold for all archs
25217da pax-utils: 0.9.2 -> 1.0.3
80d7ae1 liberror-perl: 0.17022 -> 0.17023
04419c1 cryptodev: 1.6 -> 1.7
6184951 dbus-glib: 0.102 -> 0.104
59abe83 ccache: 3.1.9 -> 3.1.11
aa091f9 directfb: 1.7.6 -> 1.7.7
05395a5 cracklib: 2.9.2 -> 2.9.3
fcc6092 sysvinit: Add lastb to alternatives
ca2948a udev: Add RCONFLICTS/RREPLACES for udev-utils
705f14d lz4: update package to 128 and SRC_URI
b35e311 upstream_tracking.inc: bluez4 removed from oe-core
e555851 maintainers.inc: remove info related to bluez4
50c2ef0 image.bbclass: Allow to remove do_rootfs -> virtual/kernel:do_packagedata dependency
167025e initscripts: Remove /etc/volatile.cache on upgrade
6f03a8d base-files: Check for /run and /var/lock softlinks on upgrade
72d88f2 bitbake: lib/bb/utils: add safeguard against recursively deleting things we shouldn't
f9b1605 bitbake: cookerdata: Allow ~ in bblayers
4c31f35 gmp: remove referencing paths from the build host
ccb2feb cairo_1.14.2: Modified the license of cairo-trace.
760dec2 libgcrypt: modified the license of dumpsexp.
01fec9e mdadm: add ptest
9a664b9 wic: try to find bitbake using find_executable API
d7a9b5e devtool: call parse_recipe with correct arguments
494bf2d classes/base: clarify S not set correctly warning
d92970f lib/oe/package_manager: avoid traceback with no packages
9fc5587 classes/package: clarify installed-vs-shipped message
a23c938 lsb: provide lsb-core-ARCH
32d2351 groff: fix RDEPENDS
fa391a5 busybox: remove CVE-2014-9645 patch (already upstream in 1.23.x)
bb9b0e3 strace: fix build for aarch64
f40a2d6 libunwind: fix build with aarch64
9a52901 aspell: inherit binconfig-disabled
529c4c0 libepoxy: DEPENDS on virtual/egl and virtual/libx11
21efa90 cracklib: add python support back
e1bf753 syslinux: Fix syslinux-nomtools permissions
203aaae bitbake: bitbake-user-manual: Cleaned up parallelism note and formatted user input
547b189 bitbake: bitbake-diffsigs: consider the situation where sigdata and siginfo files having the same hash values
abc7f15 bitbake: toaster: date range filter for project builds page
db254cb bitbake: toaster: recipe path broken in recipe detail page
77cad30 bitbake: toasterui: remove 'targets' from project notification
c655227 bitbake: toaster: searching all projects table resets page count
ac69236 bitbake: toaster: add layer source in admin throws an error
86f982c bitbake: toasterui: correct terminology in landing page
0405ef3 bitbake: toaster: BuildButton target input allow building targets with tasks
fab29bd bitbake: toaster: base.js minor jshint fixes
65e9859 bitbake: fetch/git: Remove a possible trailing '/' in subpath
3c0664b bitbake: toastergui: minor spelling fixes
02881a8 documentation: Preparation for 1.9 builds
65167a8 yocto-project-qs: Added MinnowBoard MAX example to "Super User"
d654160 adt-manual: Updated the Makefile-based project section.
941910f ref-manual: Updated the section on oe-init-build-env-memres
9d72edd ref-manual: Fixed two spelling errors.
59c09e3 toolchain-scripts: Allow the CONFIGSITE_CACHE variable to be overridden
7fe5976 gst-player: Fix typo
c012dcb elfutils: fix an incorrect patch for 0.161
1da17af crypto: use bigint in x86-64 perl
31b2c1f elfutils: fix build with -Os
1b4f717 syslinux: add syslinux-nomtools to PACKAGES
51a16b4 linux-firmware: fix the mess of licenses
7a1fb7a common-licenses: Add common license files for linux-firmware
7ad628e kmod: upgrade to 20
710b01e oeqa: Add test for layer append and FILESPATH tracking
e9fcc57 wic: Print bitbake error output
ea07f03 wic: use native parted
df9069d bitbake: bitbake-layers: ensure non-extended recipe name is preferred
8538c22 libgpg-error 1.18: simplify tupple handling and add armv8b support
42131b6 oe-init-build-env: fix for build dirs that have spaces in their path
0fa5b04 gdb: Refresh patches against git
683942b kbd: Mark glibc headers under __GLIBC__
4fb58a4 xserver-xf86-config: Preload graphics driver modules for musl
40db5c4 sudo: Disable hardening for musl
b8d9c04 pulseaudio: Fix build with musl
7b766ab xserver-xorg: Use __GLIBC__ instread of __linux__ to denote glibc dependent code
0b708c5 iptables: Fix build on musl
65b4ed6 perl: Fix build for musl
98f4f38 libfm-extra: Add own nls.m4
00adc1a vte: Pass _GNU_SOURCE via CFLAGS
d451fec musl: Enable NLS
a543a57 ppp: Add extra include dirs
76e8f21 libproxy: Include select.h for posix compliance
5dff87d groff: add runtime dependency on sed
7a5a20d bitbake.conf: add sed-native to ASSUME_PROVIDED
eb6d324 package_manager: RpmPM: Fix scriptlet for rpm 4
23a88e2 tiff: remove extra dev and dbg from PACKAGES
22af6a2 sysfsutils: remove libsysfs-dev and libsysfs-staticdev from PACKAGES
05a1f2b pciutils: remove libpci-dev and libpci-dbg from PACKAGES
b9fb704 opkg: remove libopkg-dev and libopkg-staticdev from PACKAGES
4a9b8e5 libxmu: remove libxmuu-dev from PACKAGES
f44aa10 libtool: remove libltdl-dev libltdl-dbg libltdl-staticdev from PACKAGES
e263083 elfutils: remove libdw-dev libasm-dev libelf-dev from PACKAGES
eb342b8 cogl: remove extra dev from PACKAGES
3e14122 augeas: remove extra dev and dbg from PACKAGES
f225880 apmd: remove libapm-dev and libapm-staticdev from PACKAGES
acaf702 aspell: remove libpspell-dev from PACKAGES
b515939 acl/attr: remove extra dev and staticdev from PACKAGES
672d38e bzip2: remove libbz2-dev libbz2-staticdev from from PACKAGES
9e80d79 wic: setup infrastructure for nosetests
3a60a23 wic: Add argv argument to main
7141e48 wic: Use __file__ instead of sys.argv[0]
d0d0ab8 wic:code cleanup: No space allowed
1521a3d insane.bbclass: Enhance file-rdeps QA check
86cbe08 generate-manifest-2.7.py: Add fractions to ${PN}-numbers
df59ac2 pcmciautils: fix for parallel build
5fd4453 grub-efi: add PACKAGECONFIG for grub-mount and device-mapper
9ee62f1 at-spi2-core: Upgrade to 2.16.0
bd7de7e libepoxy: Add as GTK+ 3.16 requirement
4a1b6ad at-spi2-atk: Upgrade to 2.16.0
1ee0907 atk: Upgrade to 2.16.0
0bfd63e cairo: Upgrade to 1.14.2
ebe931c glib-networking: Upgrade to 2.44.0
d61cba7 git: 2.3.1 -> 2.3.5
8e66ba1 wget: 1.16.2 -> 1.16.3
23a8493 groff: 1.22.2 -> 1.22.3
84e8b1b shadow: split files needed for PAM use into separate package
b77b25e bluez5: upgrade to 5.29
3d1106e oeqa/runtime: Boot test for poky-tiny.
38320db oeqa/utils: Add runner for poky-tiny qemu.
fa5970e oeqa/targetcontrol: Add support for poky-tiny in QemuTarget.
bcd9f05 mesa: Fix building with musl
62980ea at-spi2-core: Add nls.m4 from gettext
83f9ab7 bluez4: Fix encrypt symbol namespace collision
4ace5f8 quota: Fix build with musl
768794e binutils: Fix linking issue for R_ARM_REL32 relocs
252d566 ncurses: Upgrade 4.9 stable to latest patchlevel 20150329
f2d82a1 libusb-compat: Include sys/types.h in usb.h
472eaf1 util-linux: Upgrade to 2.26
b221140 quota: Upgrade quota_4.01.bb -> quota_4.02.bb
1f922cb libffi: Use proper compiler define for linux platform
e81e085 common-licenses: Add BSD-0-Clause
933967f libdaemon: Explicitly include unisttd.h instead of sys/unistd.h
16d8c89 wic: make error message more informative
0245140 wic: don't use host paths when looking for native tools
77a44c2 xorg-server: Security Advisory - xorg-server - CVE-2015-0255
6cbfe0f libpcap.inc: consolidate inherit and PACKAGECONFIG lines
ddb122f libpcap.inc: remove obsolete libnl1 PACKAGECONFIG
39d5666 oeqa/runtime/smart: Added new decorators for existing automated tests.
e58e983 oeqa/runtime/rpm: Added new decorators for existing automated tests.
3dabad4 oeqa/runtime/ping: Added new decorators for existing automated tests.
f33488a oeqa/runtime/parselogs: Added new decorators for existing automated tests.
d48df94 oeqa/runtime/ldd: Added new decorators for existing automated tests.
f626c58 testimage: sort modules based on dependencies
206d532 oeqa/runtime/systemd.py: skip instead of failing without avahi
058e75d oeqa/oetest.py: use bb logging
8284e3e gst-ffmpeg: fix internal-libav builds with inherit autotools-brokensep
d275504 gst-ffmpeg: remove bogus patch that leads to build failures
915712d gst-ffmpeg: fix libav-9.patch
c793501 dpkg: add triplet entry to fix build error for armeb
c0fc3c4 lib/oeqa/selftest/bblayers: improve test for add-layer and remove-layer
f23a3b6 shadow: add 'util-linux-sulogin' to RDEPENDS
8c24e4e util-linux: split out util-linux-sulogin
36e064a pango: fix postinst
0928eb7 tzdata: fix postinst
2b77579 libgpg-error: Fix native build on i686
bf8aa74 connman: Create connman.service at proper moment
21303a4 nss: Fix build in x32 ABI
7ab461c kexec-tools: Add support for build with x32 ABI in x86_64
66b39c8 gtk+: Upgrade to 2.24.27
17b0be5 xz: upgrade to 5.2.1
ec0f031 sysstat: upgrade to 11.1.3
465508d sudo: upgrade to 1.8.13
eac9603 busybox: upgrade to 1.23.2
462e7cc curl: upgrade to 7.41.0
6bd0df0 ref-manual: Corrected the "package_rpm.bbclass" section.
fa398ae ref-manual: Update to oe-init-build-env-memres description.
be1e182 ref-manual: Updates to "Kernel Build Changes" in the 1.8 migration section.
ab14596 toaster-manual: Fixed release month in the manual table.
48804ad toaster-manual: Added new video link for toaster configuration.
7fb6a6e upstream_tracking.inc: Add no-update reason for gdk-pixbuf
2dc3024 wic: Implement --build-rootfs command line option
939fca9 wic: support ontrackdm6aux3 partitions
8bf5afb wic: rawcopy: ensure comparison is done on int
dd6a152 wic: code cleanup: unused imports
ba9cde6 wic: code cleanup: bad indentation
7c63dc2 security_flags.inc: elfutils on ARM fails with PIE flags
f042708 file: add -P prompt into usage info
a686622 perl: module overload rdpends on overloading
a64aeb2 python: Change python 2.7.9 to use libffi from the system
9bad894 glib-2.0: 2.42.1 -> 2.44.0
e3704e8 binutils: Fix packaging now gold is always built
25ab65b tcmode-default: Pin gdb to 7.9
a146e8c bitbake: runqueue: pass finalized metadata to scenequeue callbacks
3ed754b gcc-4.8: Upgrade 4.8.2 -> 4.8.4
ca6b43c rpcbind: Fix build with musl
9a2768b libxml2: Contain glibc-extentions under __GLIBC__
ab16cd1 wpa-supplicant: Replace non-standard base defines with c99 compliant ones
de32267 pixman,libpciaccess: Fix build on musl
be8ffcd ofono: Disable backtrace for non-glibc libraries
f5e7eee man-pages: 3.76 -> 3.82
86e6a37 dhcp: 4.3.1 -> 4.3.2
8bdf8b9 socat: 1.7.2.4 -> 1.7.3.0
7d6f070 gnupg: 2.1.1 -> 2.1.2
b44d75e libgcrypt: 1.6.2 -> 1.6.3
2402fe8 patch: 2.7.1 -> 2.7.5
8feafde libuser: 0.60 -> 0.61
5169721 strace: 4.9 -> 4.10
6cd8c8d libunwind: Build with gold to avoid build failures
26648dc binutils: Allow gold to build even when not the default
33db621 u-boot: Avoid issues with binutils-2.25
3141e1e util-linux: add lastb.1 and nologin.8 to update-alternatives
13db7db prelink_git.bb: Update to latest cross-prelink version
fa43839 pinentry: update to 9.1
efb906a useradd_base.bbclass: typo fixes (s/scucess/success/)
87aedfb valgrind: add configure option to build only 32-bit or 64-bit components
ea4f0da libevent: update 2.0.21 -> 2.0.22
801269e libevent: control openssl support via PACKAGECONFIG
5ef9f03 oe.sstatesig: align swspec handling with sstate.bbclass
dd90ccf meta/lib/oe/utils.py: Corrected the return value of both_contain()
74e7f68 nss: generate debug info
60cea21 uclibc: fix undefinition of '_dl_strchr' in libdl.a
a940fcc piglit: add PACKAGECONFIG for freeglut
904e73f lzop: Fix build using x32 ABI
c3991d2 stress: add new package
00be85a hwlatdetect: upgrade to version 0.91
12f3850 rt-tests: bump version and enable ptest support
b559d7f binutils: Switch to using binutils stable/2.25 branch
1cb175f binutils: Fix ICE in gold
2be79f0 binutils: upgrade to 2.25
b3b6cfb gdb: Upgrade 7.8.1 -> 7.9
a50a01e git: 2.3.0 -> 2.3.1
3df7127 wget: 1.16.1 -> 1.16.2
d6d2dd5 tools: A real fix for thos mega-manual.sed file for Toaster.
810106a tools: Updated the mega-manual.sed file to include the Toaster manual.
51c68d7 toaster-manual: Review edits applied.
12f6c19 toaster-manual: Updated customization layer to not use local XSL file.
82fea80 dev-manual: Fixed bitbake -c populate_sysroot example.
cd0800f ref-manual: Edits to the 1.8 migration section.
d5abcfb toaster-manual: Applied final review edits.
079d6c9 ref-manual: Added new migration section for going to 1.8
9f08067 ref-manual: Added new bluetooth class.
b544b4b package_manager: call createrepo with --dbpath pointing inside WORKDIR
673d022 createrepo: Implement --dbpath command line option
1674b53 glibc: fix a typo
dc2d0e8 db: fix parallel issue
723c64b ref-manual: Updates to doc packages and reference links
c24b67d bsp-guide: removed the BBLAYERS_NON_REMOVABLE from the example code.
223d075 dev-manual: Removed the detailed section on how to set up and use Toaster
3bb1c76 dev-manual: Added a small section to note Toaster as a development model.
3237e33 dev-manual: Fixed a few broken links and added Toaster manual to list.
f1a2683 yocto-project-qs: Fixed broken link to AB nightly builds.
937c709 ref-manual: Updated the OE_TERMINAL variable description
575d464 ref-manual: Updated the supported distros list.
d083205 ref-manual: Backed out the bits for the context PNG images.
69121f2 dev-manual, yocto-project-qs: Dropped Python 2.6 as a requirement
a9d25bd toaster-manual: Made some updates for virtual environment section.
3fafd2b toaster-manual: Added a new video that shows fido features.
70ddcce ref-manual: Downplayed the BBLAYERS_NON_REMOVABLE variable.
ae4951d dev-manual: Updates to the devtool section.
c41b060 dev-manual: Updates to the receiptool section.
a92a203 toaster-manual: Created links to Youtube for the GUI vids
d0e413e toaster-manual: Added note telling user to initialize virtual env
2b82240 documentation: Updates to try to fix CentOS docs build errors
a4bd9cd dev-manual: Added footnote crediting Trevor Woerner for devtool addition.
e1ff065 dev-manual: Applied review edits to the devtool section.
abf3039 mega-manual: Added two figures to the figures directory.
45e9e79 mega-manual: Updated the chapter structure for the toaster manual.
1f63333 Makefile: Added figures to the mega-manual TARFILE list
a089bed Makefile: Added additional PNG files to toaster TARFILE list.
85a0b9b toaster-manual: Draft of Manual.
9e4adec distro_alias.inc: update/sort alias information.
fe9c5b1 bitbake: bin/image-writer: Add ext4 as a deployable image type
3cb8772 bitbake: cooker: Ensure bbappend files are processed in a determistic order
764fbea image_types: Add missing ext4 support
ce2573b bitbake: Revert "toaster: machine not searchable in all builds/projects"
e5a441c bitbake: toastergui: add ext4 option for IMAGE_FSTYPES
ddee53e bitbake: toasterui: rename 'targets' to 'recipes'
c6ea812 bitbake: toastergui: prevent error on empty build list
0d0d02a insane: Add baremetal mappings to the QA arch test
240a797 siteinfo: Add x86_64-elf support
6fd976f README.hardware: clarify NFS requirements for edgerouter
5bb5313 toaster: updating toasterconf.json for fido release
051ce59 populate_sdk_ext: Log the "Preparing build system" step
4073194 dpkg-native: Avoid 'file changed' errors from tar
3c284cf wpa-supplicant: Make SystemD D-Bus config conditional
a879c89 u-boot.inc: fix rename image error
dd52ac5 libart-lgpl: add art_config.h for armeb/aarch64be/aarch64be_32
240dade combo-layer: fix file_exclude for empty commits
3775c6e combo-layer: fix file_exclude for dest_dir = .
5508950 combo-layer: clean up dest_dir checking
47dedbc glibc-testing: Specify location of c++ header files
88340ad oe-git-proxy: Redirect error messages to STDERR
aa1438b autotools: Avoid find race for S = "${WORKDIR}"
c0e32b4 gcc: Tweak arm multilib endian patch for baremetal
6978d8a kernel-yocto: merge duplicate kernel_configme task definitions
a9025e8 linux-yocto: add kern-tools-native to kernel_metadata depends
feb84ef toaster: update toasterconf.json for fido release
6671089 toaster.bbclass: do not add symbolic links to artifacts
3837f29 cpio: fix CVE-2015-1197
c35aba3 patch: fix CVE-2015-1196
5c76ceb poky: Add 1.8 to sanity tested distro list
f08c349 poky.conf: Flip DISTRO_VERSION for post 1.8 release
e029d27 bitbake: Update to version 1.27.0 post 1.26 release
5756684 bitbake: Update to version 1.26.0
87c4e58 bitbake: toasterui: enable sanity checker
eeef93a bitbake: toaster: most-build-targets bug fixes
1a4c8a8 bitbake: toaster: PACKAGE_CLASSES variable does not show current value when editing
3190ab6 bitbake: toasterui: small changes to empty states
38c3f2e bitbake: toasterui: hide right column if empty
63510bf bitbake: toasterui: Improve messaging for empty layer details
7c3bdeb bitbake: toasterui: hide release when only one exists
fd4085f bitbake: toasterui: update links to Toaster manual
792716a bitbake: toastergui: changes to release change notifications
2b59512 bitbake: toaster: alert fixes for project release change
6a934f4 bitbake: toaster: build date range selections
e840b7a bitbake: toaster: build date range selections static sources
abcd979 bitbake: toaster: machine not searchable in all builds/projects
7cb05bf bitbake: toastergui: changes to the all projects table
fb7160e bitbake: toaster: Project page fix targets url and tooltip placement
e1a5d81 bitbake: toaster: layer-relative paths for config files
fa59513 bitbake: toastergui: give button nice rounded corners
1385f28 bitbake: uievent: catch and log exceptions in receiving events
4e18659 bitbake: bin/bitbake: Create bitbake_main API
f2ca8bc python-pygobject: Disable parallel make install in native case
a77f368 lttng-modules: Update along 2.6 stable branch
3a64656 uninative-tarball: fix dependency on patchelf
6e1ba48 skeleton: clarify linux-yocto-custom workflow
dbfafd8 linux-yocto/3.19: fixes for Intel core warnings
c0f931a linux-yocto/3.14: integrate korg stable and meta data changes
9dbc258 linux-yocto/3.19: configuration updates and stable import
4dbe239 kernel-yocto: allow in-tree defconfigs
df6d275 openssl: 1.0.2 -> 1.0.2a
62fdc7b gst-player: Add error messages for missing plugins
14098e3 package_deb: DpkgIndexer use apt-ftparchive that needs a valid config
d269075 image.bbclass: Empty /var/volatile if it is a mount point
96104b8 image: Ensure manifests end with a newline
c70dc37 libunwind: use xz, because it fails to detect liblzma provided by lzma
f94450a ca-certificates: clean up before do_compile()
f43d13c pigz: fix alternatives handling, use symlinks, provide zcat
4ca684a kernel-module-split.bbclass: Avoid bogus recommends for modules ending with -dev
f878ee5 valgrind: enable build for MIPS
43d84d8 connman: only depend on xuser-account if ROOTLESS_X is set
9782db0 libav: fix floating dependency on libasound
b31a0e3 python: fix cached config value for /dev/ptmx
7cb5ea0 qemu: Add patch to fix qemux86-64 EDSCA key problems
4439387 Revert "systemd: Fix the problem of an empty journal on boot"
68bc421 kernel-module-split.bbclass: fix autoloading from postinst script
65a8408 python: Fix PGEN linking errors
2a473ac update-alternatives.bbclass: alternatives should be removed in prerm
8b8d843 dpkg: Don't move update-alternatives to sbindir
ce9226f rootfs.py: Also uninstall update-alternatives and shadow for read-only-rootfs
349f3ab package.bbclass: Add SYSTEMD_SERVICE to list of package specific variables
7ecfaaa webkit-gtk: disable JIT for armv5/armv6
3699321 yocto-bsp: Update templates to 3.19 kernel
4bd886f systemd: fix firmware path to match linux-firmware
b528712 meta-yocto/distro: Updated SANITY_TESTED_DISTROS.
fdf383f poky.conf: Fix 'distro is not validated' warning for OpenSUSE
814252e systemd: restore userspace firmware loading support
bbc1396 tzdata: update to 2015b
21f4188 tzcode: update to 2015b
3acdd43 lib/oe/lsb.py: Prioritize parsing of /etc/os-release
cbce06a tar: set acpaths to avoid "Argument list too long" error
98487cc watchdog: Provide and install initscript
a1cb3b0 mtd-utils: minor recipe formatting cleanup
543d1bd postinst_intercept script: drop pipe
86aec93 rootfs.py: add log checking ability for deb and ipk
f4d90ec rootfs.py: two changes regarding log checking
5dc1f3d oelint.bbclass: remove duplicated code
7366894 oelint.bbclass: adjust task order
b457868 neard: fix the install path in init scripts
4f1ce61 nss: move /usr/bin/smime to nss-smime
dfa8034 directfb: define DEPENDS and EXTRA_OECONF via directfb.inc only
5e9d2d6 python-pexpect: Adds this module to buildtools, since it is needed by some of the automated runtime test code.
44c8637 python-pexpect: Creates a recipe for the pexpect python module
d70c981 license.bbclass: skip license checking if the package contains no file
19ad6b6 python-distribute: Adds netclient, email and shell runtime dependencies necessary to
72ead27 sanity.bbclass: vmdk and live can't be built together
38aff0d os-release: add LIC_FILES_CHKSUM
f987e92 tzdata: fix HOMEPAGE
75c16c0 groff: fix HOMEPAGE
2ade4b2 gawk: fix HOMEPAGE
c1e4e27 libav: add PACKAGECONFIG for VA-API
84e5007 e2fsprogs: Package resize2fs
94f5ce0 xserver-nodm-init: Change to vt1 when stop
3e9476e sysvinit-inittab: Fix no tty in runlevel 1.
3aad5e0 util-linux-native: Fixed conflicts with shadow-native and ncurses-native
b0b8f47 oeqa/runtime: Added a new auto rpm test
a8c98c3 oe-selftest: use spaces to indent python code, not tabs
4783ead dev-manual: Applied review edits to section on hostname changing
12c7efe bitbake: toaster: insure IMAGE_INSTALL_append values have a space prefix
d2b2046 bitbake: toaster: display machine and project values in input fields
1f1230c bitbake: toaster: tasks trigger the select related tables before ordering
3c5e291 bitbake: toaster: Add cancel build to latest build section
2f684f1 bitbake: toaster: Incorrect breadcrumb behaviour in the project page
8ff98c6 bitbake: toaster: leave cancel enabled for release change
5252c45 bitbake: toastergui: recipe and layer identification
9752757 bitbake: toasterui: fix error message parameter
0dc4a62 bitbake: toaster: do not throw exception on misconfigured data
934a974 bitbake: toastergui: builds and projects outcome filter
5d021f6 bitbake: toastergui: fix machines page search
ede212b bitbake: toaster: display bitbake output after process start
5b22f15 bitbake: toaster: targets page performance improvement
a273d8f bitbake: toasterui: improve info in the toaster_ui.log
c5e9654 scripts/combo-layer: Handle update with no repo/revision specified
db4f142 glibc: avoid configure stall by feeding prompt
92739ed gcc-cross-canadian: Enable stripping and packaging of binaries
31801c6 ltp: find all .debug directories
1a29b3b lsb: fix installed-vs-shipped when build with multilib
d6be13a gst-plugins-good: fix nondeterministic udev dependency
76930a5 pulseaudio: remove obsolete resampler patching
d342810 puzzles: Fix build in x32 ABI
4add6e3 systemtap: Fix build in x32 ABI
3732fde mdadm: Fix build in x32 ABI
8e19349 systemd: set the location of binaries used by service files
0f25dd5 base.bbclass: clean up warning message for 'S'
f14ef4d valgrind: enable building on 4.x kernel
740770c udev: remove 'modprobe' local rule
31f15d6 perf: add bash to RDEPENDS
76730a8 linux-yocto/3.19: integrate korg -stable update
ad6313d kernel-yocto: split meta data generation from patching phase
c328e2f kern-tools: fix iterative configuration runs
c5cfcb7 gstreamer1.0: Shorten __FILE__ in gst_debug_log output on all platforms.
8457e13 dbus-test: make do_install run to trigger the effect of cleandirs flag
6ecc468 tcmode-default: Define one gdb version
80c8372 pulseaudio: add system.pa to CONFFILES
cc7652f pulseaudio: move client.conf to libpulse
2ab66b8 package_manager: Create variable for install_dir_name
05471f8 lib/oeqa/selftest/lic-checksum: Add INHIBIT_DEFAULT_DEPS
8b8baf5 lib/oeqa/selftest/lic-checksum: Rename test_foo
a7701ba trace-cmd: remove unnecessary 'protocol=git' from SRC_URI
1219b63 mmc-utils: remove unnecessary 'protocol=git' from SRC_URI
6bd34e6 systemd: remove unnecessary 'protocol=git' from SRC_URI
52e9d2c u-boot-mkimage: remove unnecessary 'protocol=git' from SRC_URI
b647a06 u-boot-fw-utils: remove unnecessary 'protocol=git' from SRC_URI
6f6e866 oe-selftest: add missing dependency to test_recipetool_create_git
0a45ccb recipetool: fix duplicate licenses being picked up
4a8fec9 oe-selftest: add a test for devtool modify on recipes fetching local files
a976d63 oe-selftest: add a test for devtool deploy-target
a0b774e oe-selftest: support getting unexported variable values
3c4c63d gitignore: exclude meta-selftest, drop meta-hob
8123b4a devtool: deploy-target: add dry-run option
a504771 classes/externalsrc: fix for recipes that fetch local files
3d7777f devtool: deploy-target: add an option to disable quiet mode
3f370f8 devtool: deploy-target: detect and error if D is empty
ad57dab devtool: deploy-target: allow disabling host key checking
cb4b078 devtool: modify/extract: prevent usage with incompatible recipes
221705f devtool: modify: get correct initial revision from previously extracted source tree
9adae67 devtool: reset: add ability to reset entire workspace
e3cfb80 devtool: name command line parsers appropriately
4424440 devtool: deploy-target: fix deploying to previously deployed machine
be6289f combo-layer-hook-default.sh: handle patches without Signed-off-by
b4e78cf combo-layer-hook-default.sh: beware of embedded patches
ad0147a combo-layer-hook-default.sh: avoid duplicating prefix
e0d3cab combo-layer: partial import for '--history init'
14eac2a combo-layer: combine trees via replacement objects
dd985a2 combo-layer: init with full history
b4326bf combo-layer: update() also instance property
96b9845 combo-layer: exclude files
627e524 combo-layer: runcmd() with separate output
58c5bb2 combo-layer: make Signed-off-by optional
b1408ba combo-layer: let user choose where properties get updated
fd2823d runqemu-internal: Add cpio support for qemux86 so that we can boot poky-tiny images
b8107c5 scripts/runqemu: Allow FSTYPE to be changed from the environment
577f9f3 gst-player: Fix Pause/Play in GTK+ player
f4857dc xf86-input-synaptics: drop already applied patch
8b125fe opkg: drop already applied patch
2c11ccf packagegroup zeroconf: nss-mdns is libc dependant
cffacfb glibc/glibc-collateral.inc: Add LIC_FILES_CHKSUM to avoid warnings in manifest creation
b85ee03 unzip: Add ALTERNATIVE configuration
1e34e71 meta/lib/oe/package.py: fix files ownership in packages
b7a9a06 oeqa/runtime: Fixed a problem in logparser where it failed to whitelist some common errors.
6ad040a Add archiver folder to SSTATE_DUPWHITELIST
35fbb0f wic: Consider PSEUDO_* environment variables
40d3d7a rpcbind: don't try to enable rpcbind.socket twice
d0d404f systemctl: Don't try to remove directory which doesn't exist
7197dab gst-player: Depend on -libav if commercial license is enabled
c65e364 waffle: drop unneeded setting of EXTRA_OECMAKE
7f536ba oe-selftest: improve bitbake-layers tests
61e14ad oe-init-build-env-memres: Fix source check
0308f31 bitbake: knotty.py: fix indent
12b6cf0 poky-tiny: ext2 isn't enabled in the kernel so don't mention/build it
083d4a3 dev-manual: Added new section on changing default image hostname
1345195 documentation: Updated Manual revision tables with "April 2015"
186104e dev-manual: Backed out the half-done Eclipse Luna changes.
f7dbbd1 dev-manual: Removed inc PR step from Quilt workflow
40f3ca0 poky-ent: update OpenSUSE essentials
df0672b bitbake: toaster: Fix the orderkey to match the column
5c4b7e0 bitbake: toaster: projectconf fix typo of package name
c2a1e04 bitbake: toastergui: replace ETA with percentage
fb84086 bitbake: toastergui: fix mrb Run again buttons
25d2131 bitbake: toaster: localhost build increase timeout
887c1cb bitbake: toasterui: relative recipe paths
e4ff3ea bitbake: toastergui: improve toaster suggestion
c472208 bitbake: toastergui: dirinfo needs path separation
193989c bitbake: toastergui: tables display optimizations
2b629e6 bitbake: toastergui: project app build command fix
feb95bb bitbake: toastergui: update search fields
cca5170 bitbake: toasterui: identify proper layer in build mode
42d1b65 bitbake: toastergui: improve performance in the all targets page
50c5ca5 bitbake: toastergui: improve data suggestion
e5590bc bitbake: toastergui: fix project page layer branch names
cffc208 bitbake: toastergui: suggestion in alphabetical order
c8714ec bitbake: toastergui: project page - consistent error display
daaafb4 systemd: fix /var/log/journal ownership
da8a15a systemd: Fix journal "Failed to set file attributes:" warning
85532e0 curl: remove samba from PACKAGECONFIG[smb] DEPENDS
4811b04 e2fsprogs: CVE-2015-0247
59e01b0 linux-yocto-rt: removed duplicated line
f743cce mailx: disable parallel build
73dca1e util-linux: split libraries dynamically
b14dd6a util-linux: fix CVE-2014-9114
e5f9a67 sysprof: fix arm big-endian build.
3e8eb2d logrotate: Identify CONFFILES
1cdf386 nfs-utils: Identify CONFFILES
f6c9b4f nfs-utils: Install nfsmount.conf
4851a67 msmtp: add link file /usr/lib/sendmail
03ba0b7 lsb: update init-functions and remove sendmail
e67611b Revert "blktrace: fix and enable parallel build"
9afc9ea mtd-utils: disable parallel build
40e15f0 lttng: Add tracing group when building lttng-tools
3cbc509 kernel-devsrc: fix file ownership
c5fd577 util-linux: move getopt u-a link to base_bindir
c212977 liberation-fonts: inherit allarch as fonts are arch-independent
28c986c resolvconf: fix SRC_URI
6270510 net-tools: fix SRC_URI
18c6acd apt: fix SRC_URI
de2aad0 libevent: fix SRC_URI
b35689b xinetd: fix HOMEPAGE and SRC_URI
05a1691 libunwind: backport patch to link against libgcc_s intead of libgcc
38382e0 rootfs.py: fix logic error so that warnings are checked
c03c82a pixbufcache.bbclass: add harfbuzz-native to PIXBUFCACHE_SYSROOT_DEP
788fd5a kernelsrc.bbclass: fix KERNEL_VERSION
9157c1b chrpath.bbclass: handle RUNPATH as well as RPATH
05a69ed license.bbclass: set dirs for do_populate_lic_setscene
8a9ac1d devshell: allow the starting directory to be overridden
66a4d8b buildstats.bbclass: typecast argument to os.minor/os.major to long
9d0feb3 fontcache.bbclass: prepend to PACKAGEFUNCS instead of appending
d03e167 postinst-intercepts/update_font_cache: fix ownership of fontconfig cache
a30c6a5 nativesdk.bbclass: set PKGDATA_DIR explicitly
9a712be test-dependencies.sh: strip only .bb suffix
1d43c3c oe-setup-builddir: output message cleanup
18c1c51 bitbake.conf: use http:// for GNU_MIRROR instead of ftp://
cd5e168 lib/oeqa/runtime/systemd: Add a basic runtime test for the journal
313ad2a bitbake: bitbake-layers: use stdout instead of stderr for logging
855fc21 bitbake: knotty: Do not log show_versions output
0b5ab4d bitbake: knotty: Catch exceptions on broken pipes
7f30749 oeqa/parselogs: Skip hda opcode errors
0aff275 layer.conf: bump version as error-report interface changed
c60786c poky.conf: Update for post 1.7 release versioning
f67d496 kernel-dev: Fixed missed shortcut
78cecf7 kernel-dev: Updates to the "Using Kernel Metadata in a Recipe" section.
947cc83 kernel-dev: Correct reference to "files" directory, should be ${PN}", and update kernel version.
7727a16 ref-manual: Updated the KMACHINE variable description.
2a5344e yocto-project-qs: Added note to Debian package requirements section.
dae9b5f xserver-xorg: don't close already-closed connections
38cdb72 systemtap: Upgrade to 2.7
e75c95c systemd: Fix the problem of an empty journal on boot
d7fe8b4 mailx: fix SRC_URI
1662423 systemd: Fix runtime failures in systemd-tmpfiles-setup.service.
56f010f glibc: 'yes' within the path sets wrong variables
9e95469 opkg: Fix error when recompiled
d5fb9aa gdb: add whitespace to _append
44d763e systemd: correct permission mode of /var/volatile/tmp
664c1df systemd: Create packageconfig for ldconfig support
bd0ed7c image_types: Fix MIN_BTRFS_SIZE to be 1024 blocks to match ROOTFS_SIZE
d6a2a54 systemd: fix systemd-tmpfiles ACL issues
f5e4349 openssl: Upgrade to 1.0.2
7c504b4 bash 3.2.48: disable parallel build
370e730 create-pull-request: fix git GIT_VERSION
72ee285 pkg-config: strip system library paths reliably
8732930 rpm: don't put LDFLAGS into the .pc file
ddc8222 oeqa/selftest: Added a testcase to verify INCOMPATIBLE_LICENSE option.
f0f6b23 lib/oeqa/selftest/lic-checksum: Verify failure when checksum changes.
a39ce56 base.bbclass: Add LIC_FILES_CHKSUM files to checksum files.
3f8ce1e sed: Cope with ${bindir} and ${base_bindir} being the same
9d078a1 libtool: put libltdl.la in the right package.
6e539bf glibc_2.21.bb: Fix condition to skip parsing the recipe for non-glibc libc
bd193a0 libgpg-error: Add -P option to CPPFLAGS
1aa32a1 wic: rawcopy: support skipping
5e2dd63 wic: add fsimage plugin
0393438 wic: fix fstab generation
5cfac6b systemd: avoid parsing error when 'networkd' is enabled in PACKAGECONFIG
5818c0d gcc-source: fix bug to avoid building error.
ca3a3c0 meta/lib/oe/utils.py: properly implement both_contain()
d5a2858 report-error: Update information on the submission process
a8b1ded scripts/send-error-report: Rework script to support new features
ba78a36 recipes: add x11 to required DISTRO_FEATURES
0467d53 bitbake: cooker/server: Fix up 100% CPU usage at idle
8ce2f2c maintainers.inc: Became maintainer of python2 and python3
efc7f04 scripts/runqemu: clarify help text
21e2c03 qt4: add patch for BMP denial-of-service vulnerability
73be8c1 man: fix bugs of makewhatis script
36e47a9 bitbake: fetch2: Revalidate checksums, YOCTO #5571
3c641e7 bitbake: toaster: cached outcome download button
f5edfce bitbake: toaster: projectapp.js - clear up jslint warnings
0fa38bb bitbake: toaster: libtoaster Fix a few warnings picked up by jshint
41ebd51 bitbake: toaterui: shorten the unavailable artifact message
5a03a23 bitbake: toasterui: give some space to the download log button
74bb0fb bitbake: toasterui: apply correct class to latest builds targets
d2c9f70 bitbake: toasterui: fix the h1 in the project builds page
16c03f8 bitbake: toasterui: don't open layer details in a new tab
dcbfc74 bitbake: toaster: Enforce unique layer names
d8ae3ac bitbake: toaster: commit id format on layers page
4004aeb bitbake: toastergui: bring back base URLs for pages that need them
ece39b4 bitbake: toaster: reconcile non-manage-mode landing classes
4f36647 bitbake: toaster: hide special code for core vars not present, disable add button
48c48a4 bitbake: toaster: layer rev tooltip only if necessary
ec8e07f bitbake: toaster: add sort, search, paging to recipe package page
e248a50 bitbake: toaster: models.py do not use transactions
7d9dd12 bitbake: xmlrpc server: delete function on errors
b611de9 bitbake: cooker: make sure state is properly used to accept clients
8d87f70 bitbake: xmlrpcserver: do not connect client on error
69d13dc bitbake: toaster: delete test data
a9cd657 bitbake: cooker: read file watches on server idle
c504276 dev-manual, ref-manual: Replaced &dash;&dash; with "--"
a889cc0 yocto-project-qs: Added a cross-link to the wiki page for YP releases.
551edbd kernel-dev: Update name of build directory
a79cdb5 bsp-guide, kernel-dev, ref-manual: KERNEL_FEATURES should refer to .scc files.
f0b44ff kernel-dev: Applied some user-input formatting for some variables.
dc56adb kernel-dev: Substituted "emenlow" example for "fri2"
0401f07 kernel-dev: Added quotes around a section cross-reference.
14316cf kernel-dev: Fixed variable formatting.
42f5b11 dev-manual: Updates to the "Working Within Eclipse" section.
1beb6fc poky.ent: Added a new variable ECLIPSE_LUNA_URL
62e4d45 ref-manual: Updated the MACHINE variable description.
4a5f137 kernel-dev: Swapped out fri2 BSP for emenlow BSP in example.
82ad008 kernel-dev: Updated "Modifying Source Code" section.
86f4cf8 yocto-project-qs: Updates to add more explanations and navigation
8951db6 poky.ent: Changed the code name from "tbd" to "fido".
0a20913 dev-manual: Updates to Eclipse section
e7e5330 kernel-dev: Scrubbed out the 3.4 kernel references.
043e02c kernel-dev: Minor typo fixed and added LTSI link
a8f2196 kernel-dev, ref-manual: Edits to KBRANCH.
8ced82e kernel-dev, ref-manual: Scrubbed out the KBRANCH_DEFAULT variable.
fef68d3 ref-manual: Updated the KBRANCH variable description
b49a5cc kernel-dev: Clarify a couple minor things in kernel manual, ch 2.
bef8558 README: expand the Where To Send Patches section
5c1c8af build-appliance-image: Update to master head revision
d01cd53 systemd: fix tmpfiles error on images without PAM
8d4e621 gstreamer1.0-plugins-bad: disable Yadif on X32
ecd052e glibc: Fix check for -Os.
03a3577 gst-player: port to GTK+ 2
3fb3030 kern-tools: improve patch application performance
49d7aae linux-yocto/3.14: OcteonIII support
e02016e kernel-yocto: inhibit BSP description warnings for custom linux-yocto kernels
dd1d4e5 linux-yocto: fix qemux86-64 config warning
bf1a68e taglib: Fix cmake floating dependency on boost
bf59b22 security_flags: remove PIE flags from flex and gstreamer1.0-plugins-bad
4a26326 build-appliance-image: Update to master head revision
d273197 gst-player: only depend on -ugly plugins if commercial licenses enabled
89bf0bf build-appliance-image: Update to master head revision
9bd1da2 systemd: add PACKAGECONFIG for xkbcommon and iptables
aef3a58 systemd: use PACKAGECONFIG for PAM enable/disable
c0bd9e6 systemd: add missing util-linux build-dependency
a3fe99d owl-video: remove
646dfe0 packagegroups: use gst-player instead of owl-video
a240f08 sato: fix typo in packagegroup
5025479 build-appliance-image: Update to master head revision
8571027 ref-manual: Added variable description for FILES_SOLIBSDEV
4bdaa5c kernel-dev: Small fixes.
1a74c79 kernel-dev: Updated FILESEXTRAPATHS example in 2.2.3.
9c4574e python: Fix ctypes/libffi configure
51908e5 package_rpm.bbclass: support packaging of symlinks to directories
de638414 libpcap: add pkg-config support
7ce7756 systemd: Upgrade 218 -> 219
3af8d90 libgpg-error: Upgrade 1.17 -> 1.18
aecc63d bitbake: toaster: config var layout fixes
8c476c2 bitbake: toaster: all projects data and sorts
6768a30 bitbake: toastergui: add csrf tokens for AJAX calls
ee1af30 bitbake: toasterui: do not use transactions if the database autocommits
87c6a54 bitbake: toaster: order layers with same priority
f116c32 bitbake: toasterui: fix sstate task identification
2d1d6a8 bitbake: toastergui: stop covered task graph traversal early
63e5d47 bitbake: toaster: fix typo in models.py
e2b5d23 gaku: remove (replaced by gst-player)
b05a5a7 sato: use gtk-play (from gst-player) instead of Gaku
f8b5481 gst-player: add
6d7cf8e lib/oe/terminal: fix konsole terminal support for KDE 4.x
f160730 lib/oe/terminal: fix regressions
efd78e3 bitbake: bitbake-layers: fix wildcard support in remove-layer
40d80f9 build-appliance-image: Update to master head revision
b77596a ref-manual: Updates to scrub out 3.10 kernel.
f94b629 dev-manual: Adjusted text for deprecated 3.10 and 3.17 kernels.
a438aa3 bsp-guide: Removed 3.10 and 3.17 kernel references.
a0a1f17 ref-manual: Repositioned PNG files for context image.
0a8c08e ref-style.css: Added a new style to support glossary hanging indent
8aa9a23 bitbake: toasterui: fix ETA calculation
f120b78 bitbake: toastergui: performance improvements in task details page
cb23e30 bitbake: toasterui: disable autocommit for build logging
6de6739 bitbake: toaster: update requirement for Django 1.6
03c1e47 bitbake: toasterui: improving the latest builds consistency
1ea940f bitbake: toaster: Add machine selection notification
1e0e700 bitbake: toasterui: style the Toaster version information
4742ae9 bitbake: toaster: layerdetails Fix pagination controls
00e3545 bitbake: toaster: layerdetails Add link to machines file
e28097f bitbake: toaster: layerdetails summary/descriptions to be searchable
bd5087d bitbake: toastergui: fix spacing and input field sizes
43afafe terminal.py: No --disable-factory for gnome-terminal >= 3.10
9e9d6df systemd: Upgrade 216 -> 218
28618e4 util-linux: disable systemd
0481973 python-native: Fixes PGEN linking errors Changes Makefile rules to avoid parallel make races when trying to build Parser/PGEN
d6a2cf3 glibc: Help compile with -Os
4d83a90 gst-plugins-package.inc: Avoid dependency on ${PN} from ${PN}-<plugin>
d861cc4 recipes: Delete superfluous assignments, S = ${WORKDIR}/${BP}
f7c45a4 busybox:udhcpc: Remove the routes from the right interface
48fa868 busybox:udhcpc: Start with a metric of 10 for routes
0e04c93 base-files: clean up and clarify hostname logic
5456737 populate_sdk_ext: add extensible SDK
46ee86c scripts/oe-buildenv-internal: add means of skipping SDK check during setup
8e8e924 uninative-tarball: Actually use bzip2 for compression.
01c9f3b toolchain-shar-template.sh: Make relocation optional.
fe678e7 toolchain-scripts: Add parameters to toolchain_create_sdk_env_script.
1118c12 copy_buildsystem.py: Add methods to copy shared state.
d5d4b70 copy_buildsystem.py: Add a way to copy buildsystem to a directory.
91a9b3f sstatesig: Add ability to filter list of tasks for locked-sigs.inc
67c1d2e gen-lockedsig-cache: Allow cross-filesystem copies.
19e06e6 poky.conf: resolve mismatch between poky bblayers version and OE-Core
1bb0022 classes/sanity: avoid bblayers version issue when switching between poky and other DISTRO values
a509e27 Revert "bind: fix and enable parallel build"
04faba5 Revert "logrotate: 3.8.8 -> 3.8.9"
687c797 Revert "openssl: fix and enable parallel build"
360dbb5 python-native: Reverts usage of distutils.sysconfig On older versions of Python, sysconfig read the Makefile and Python.h, generated at build time now it uses _sysconfigdata which contains information about the HOST, erroneous in our case, this causes an error when bulding something using distutils since it obtains compiler information and such.
cb02ecb Python: Upgrade from 2.7.3 to 2.7.9:
122ee11 devtool: fix broken clones of git recipes
e7744de devtool: support source extraction for recipes that use a shared workdir
62a41b4 devtool: modify: handle recipes that use a shared workdir
e2ce29f devtool: prevent extract/modify use with image recipes
efedd43 devtool: update-recipe: add handling for git recipes
6015deb lib/oe/recipeutils: minor improvements to patch_recipe()
e5bf4ed devtool: build: run do_populate_sysroot instead of do_install
845efa4 devtool: reset: run bitbake -c clean on recipe
8e7437b devtool: add/modify: add option to build in same directory
4a2e42d classes/kernel-yocto: extend SRCTREECOVEREDTASKS
550d455 classes/externalsrc: show a warning on compiling
d4af8f0 classes/externalsrc: add workaround for recipes that use SRCPV in PV
db7f7b5 classes/externalsrc: fix source being wiped out on clean with kernel
f205cca lib/oe/patch: fix PATCHTOOL = "git" with source in a subdirectory
5eb9ffe recipetool: fix regression caused by previous commit
3c2f5fd pulseaudio: upgrade to 6.0
1726063 meta-yocto-bsps: remove 3.10 bbappend
f3e7955 meta-yocto: update qemu default kernel version to 3.19
dfa2848 bitbake: bitbake-layers: add ability to fetch layers and their dependencies from layer index
90ffdc0 bitbake: bitbake-layers: fix logging
4a32837 bitbake: bitbake-layers: refactor to use argparse instead of cmd
68f4dca runqemu: Specify rootfstype to qemu to avoid QA warnings
7dcf6c9 machine/qemu: Switch from ext3 to ext4
8506429 layer.conf: set a variable to map to the OE Layer Index name
48d0b3f bitbake.conf: Add two variables for layer index
f1daefb lib/oeqa/selftest/bblayers: use dashed subcommands
d4f11d6 glibc: Dont offer to be parsed for non-glibc TCLIBC selection
739b177 tclibc-musl: Use musl for providing virtual/libintl instead of gettext
982b5aa lttng-tools: add PACKAGECONFIG for kmod
1f6e644 build-compare: update Rename-rpm-check.sh-to-pkg-diff.sh.patch
e011e92 lib/oe/package_manager: Performance tweak in regex usage
efa7c29 e2fsprogs: Add a patch to speedup mkfs
c417736 arch-armv7a.inc, tune-arm920t.inc: Fix PACKAGE_EXTRA_ARCHS
fe66853 feature-arm-thumb.inc: respect ARM_INSTRUCTION_SET when adding thumb suffix
4b69d00 kexec-tools: fix build failure on aarch64_be architecture
b4a936a wic: Fix kernel dir location
629b91b xorg-font-common: fix sysroot injection for encoding maps
ab18ec7 font-util: remove MAPFILES_PATH override
f220b96 font-util: stage encoding maps into sysroot
bc309f0 opkg: fix systemd unit installation
76c8fad Revert "kernel-arch.bbclass: add arm64 support to U-Boot architecture map"
0a69248 logrotate: 3.8.8 -> 3.8.9
3124798 python-gitdb: 0.6.1 -> 0.6.4
3f99702 python-git: 0.3.3 -> 0.3.6
8611188 git: 2.2.1 -> 2.3.0
d078cae cups: 2.0.1 -> 2.0.2
aba8f4a quilt: 0.63 -> 0.64
e0a55a9 kernelshark: Update to version 2.5.3
6dc2030 trace-cmd: Update to version 2.5.3
b3e92f4 oeqa/parselogs: Add exception for new mips error message
726c6c1 linux-yocto: warn when a generated BSP description is used
7e6147b linux-yocto: introduce 3.19 versioned recipes
c75d6c8 linux-yocto: remove 3.10 and 3.17 recipes
dfa83e6 linux-yocto: make kernel configuration audit user visible
63dd5d0 linux-libc-headers: update to 3.19
5db6a27 bitbake: toaster: importlayer Remove description input field
d27893d bitbake: toasterui: remove layer directory in managed mode
50f11b9 bitbake: toasterui: style the Toaster version information
91e900f bitbake: toaster: layerdetails Don't show None type in description/summary
64fc177 bitbake: toaster: landing page when no build module
c856a4e bitbake: toaster: get proper version string
e133fbf bitbake: toasterui: UI query performance improvements
9c358bd bitbake: toasterui: fix time estimation in project page
6dbd214 bitbake: toaster: properly detect starting in rolling log file
c368d83 bitbake: toaster: bitbake cooker log saving and downloading
a574f29 glibc: Update to glibc 2.21 release tag
a488fd5 glibc: Upgrade 2.20 -> 2.21
dda70ca lzo: Upgrade to 2.09 and add ptest
3201818 bind: Fix parallel make issue
285966f btrfs-tools: fix for parallel build
da1259e busybox: update to 1.23.1 release
0a53957 openssl: disable SSLv3 by default
0aa5ea1 packaging: allow globs in CONFFILES
c4cc479 qt-mobility: Add patch to fix disabling bluez compile issues
26be755 oeqa/ptest: Fixed complementary package install detection and added ptest-runner exit code check
2f8e5a8 license.bbclass: fix unexpected operator for LICENSE values with space
c58a3ae valgrind: add glibc-2.21 to glibc.patch
9973ce1 useradd.bbclass: avoid do_rootfs error for debian package backend
3d7c798 update-rc.d: use '-f' option in updatercd_postrm
aa48c4f package_manager.py: use 'purge' instead of 'remove' in case of deb
876015d scripts: delete dummy help2man script
2fdc772 coreutils: import prebuilt manpages from Gentoo
a481686 coreutils: don't generate useless dummy stub manpages
2ca0339 utils.bbclass: fix create_cmdline_wrapper
51bdf3b ref-manual: Review edits to the AUTOREV variable.
f03c837 ref-manual: Updates to AUTOREV and SRCREV variable descriptions
586992d toaster-manual: 2nd draft for review.
3dad9aee adt-manual, ref-manual: Detail on using an external toolchain.
6d17aa0 ref-manual: Added 'debug-tweaks' fragmentation.
f63a3b6 ref-manual: Updates to some variables per review comments.
da3a489 ref-manual, mega-manual: Adjustments to variable context images
26a3df4 ref-manual: Updated the ASSUME_SHLIB variable.
5727058 ref-manual: Added new variable description for BUILD_VENDOR.
3c3e856 ref-manual: Added variable description for BUILD_PREFIX.
d089b7c ref-manual: Added new description for SDK_VENDOR.
b0ed0bc ref-manual: Edits to the SDK_SYS variable.
9525322 ref-manual: Added new variable description for SDK_SYS.
d8acb87 ref-manual: Added new description for SDK_OS.
35612bf ref-manual: Created new SDK_PREFIX glossary entry.
0410f36 ref-manual: Updates to TARGET_PREFIX and STAGING_DIR_HOST variables.
32f6b13 ref-manual: Updated the SOURCE_MIRROR_FETCH variable description.
022f5af ref-manual: Updated the Date variable description.
a7f992e ref-manual: Updated the BUILD_OS variable description.
a89f895 ref-manual: Updated the BUILD_ARCH variable description.
0ba32a6 ref-manual: Updated the ASSUME_SHLIBS variable.
46614da dev-manual: Edit to wording in "Avoid Duplicating Include Files"
8e8d9615 ref-manual: Updated the following variables based on review comments:
21fcd57 ref-manual: Updates to SDKTARGETSYSROOT and PKG_CONFIG_PATH variables.
f3410bf dev-manual: Updates to "Avoiding Duplicating Include Files" section.
ef959e6 ref-manual: Added "leakage" FAQ entry.
a0999ab toaster-manual: Updated tar contents to not include the PDF file.
481c178 mega-manual: Edits to fix titling
0c4e31c mega-manual: Fixed reference to style sheet.
1b719fa toaster-manual: Cleaned up the intro chapter
6d512bd mega-manual: Updated sed file to include the toaster manual.
dd62d57 mega-manual: Added toaster-title.png and code to include toaster-manual
ab2007d Makefile: Removed default PDF creation of Toaster Manual.
9d033d8 toaster-manual: Added two chapter files.
e2f004f toaster-manual: Changed from "current" to "1.76.1" XSL templates
7fe19fc toaster-manual: Edits to the intro chapter
464c1d9 toaster-manual: Added two chapters to the manual's book file.
0e3cb25 toaster-manual: WIP - Some placeholder introductory text.
cd31b93 documentation: Support files to build Toaster Manual.
4302376 toaster-manual: Initial file structure for new Toaster User Manual.
75206cc ref-manual: WIP - test for YOCTO #5600
d8e2874 mega-manual: New PNG file for mega-manual title page.
f1bb814 ref-manual: Fixed icecc example code
b83bed6 dev-manual: Fixed reference to TEST_SERIALCONTROL link
3c7ad6e dev-manual: Fixed tc attribute description
5d19f2b dev-manual: First draft of recipetool section.
b2a6806 dev-manual: Edits to Quilt and finding temporary source code sections
be7e182 documentation: Reverted back to the 1.76.1 XSL stylesheet
0a54446 mega-manual, Makefile, poky.ent: Added front matter to mega-manual
4a1ea28 documentation: First draft devtools.
b876909 adt-manual, ref-manual: Review edits for xcross-toolchain additions.
93052c9 adt-manual: Remaining mods to clarify xtoolchain env use
05feb96 adt-manual: Added file name for reference to the config file.
ce8ead3 adt-manual, ref-manual: Added missing variables and cross-links
9c27a91 adt-manual: Added a list of variables defined for ADT setup
4d12f8d adt-manual: Expanded note with a user configuration reference.
77a6283 adt-manual: Added missing period.
9dff02b adt-manual: Added some reasoning behind sourcing the xtoolchain env script
cc06786 adt-manual: Reword for how user-space tools are provided.
db030b1 dev-manual: Updated the OpenEmbedded build system term.
b0639bc adt-manual: Added cross-reference to OE build system term
7ca1a51 dev-manual: Added OpenEmbedded build system term, dumped build system
568224b adt-manual: Fixed hyphenation issue.
ee80485 dev-manual: Removed #!/bin/sh -e from the base script form
f50e412 dev-manual: Updated the QEMUARCH option in the runqemu command.
3ac2890 ref-manual: Removed the DISTRO_PN_ALIAS variable.
e0dbcbf ref-manual: Edits to SOURCE_MIRROR_FETCH variable and typo fix
44ddc35 ref-manual, dev-manual: Removed information about package name alias.
db874ed ref-manual, dev-manual, adt-manual, yocto-project-qs: scrub eglibc
9a47967 ref-manual, mega-manual: Updated buildhistory example figure
84647d5 ref-manual: scrubbed eglibc
84ee65a ref-manual: Edits to the TCLIBCAPPEND variable.
328b3bd ref-manual: Added 21 new variable to glossary.
70a2007 ref-manual: New variables added to the variable glossary
eafdfbf tools: Added new file update-documentation-conf
10b2504 ref-manual: Updated the [doc] string to include the & character.
c9b7007 ref-manual: Added warnings about using package_tar
4ab132a dev-manual, ref-manual, yocto-project-qs: Updates to parallelism variables
0a367c5 ref-manual: Updated text for speeding up builds.
d1bd81e dev-manual: Updated examples in "Splitting an Application into Multiple Packages"
281c472 dev-manual: Edits to add more detail to where patch files are
6a6687d dev-manual: Updated text to indicate patch files can end differently
3cd8d86 dev-manual: Removed unwanted characters from text.
f8245d9 dev-manual: Updated section on how checksums are dealt with
4492b37 dev-manual: Replaced lttng-control and lttng-viewer with lttng-tools.
2d54b1d ref-manual: Added CentOS 7.x to list of supported distros.
bc4858f dev-manual, ref-manual: Edits to dev manager section and USE_DEVFS var.
0e0a19a ref-manual: Added a cross-reference from the USE_DEVFS variable
da47cb7 dev-manual: New section on choosing a device manager added.
a23e76d dev-manual: repaired cross-line link for a <ulink></ulink> pair.
b273c25 ref-manual: Added USE_DEVFS variable description
8bb0ffb ref-manual: Re-ordered the UPDATERCPN variable.
f972db3 dev-manual: Updates to the "Locate a Base Recipe" section.
c037dd7 dev-manual: Updates to the "Using .bbappend Files" section.
1e0797a documentation: Removed redundant ID tags that were throwing warnings
48559ff ref-manual: Review edits to several glossary variables.
63750d8 dev-manual: Updates to using IMAGE_FEATURES and EXTRA_IMAGE_FEATURES
a0e8418 bsp-guide: Added a clarifying not about meta- in BSP layer names.
73588fa dev-manual: Updated sysroot location for Eclipse examples.
261fd1b bsp-guide: Replaced the Crown Bay example with the eMenlow.
2bf21c2 bsp-guide: Updated the output examples for bsp tools.
7d480c3 ref-manual: 13 new variables added to the glossary.
b83c526 Makefile: Modified to make 'pdf' target not part of 'all'
e318032 ref-manual: Updated the supported distro list.
e1f4ba8 poky.ent: Corrected two variables with typos
d250d38 documentation: Changed back to the "current" XSL style sheet.
66ad91b dev-manual: Rewrite of the section on customizing images with packagegroups
c8691a2 dev-manual, mega-manual: Updated kernel-overview-2-generic.png file.
0cec924 dev-manual: Applied wording to warn reader that wikis have dated info.
cd37517 dev-manual: Add ref to bitbake-layers "add-layer" and "remove-layer"
b7020b0 dev-manual: Added missing ending quotation to code snippet.
88f431c bitbake: toasterui: empty state for pages
208f40d bitbake: toaster: Set the machines page default pagesize to 100
baa38a1 bitbake: toaster: Remove filtering from layers,machines and targets
c5ba5ec bitbake: toaster: Remove Layer source from machines, layers and targets
82d2c50 bitbake: toaster: New build button allow arbitrary build targets
9819728 bitbake: toaster: Additional fixes for the project variable page
eba4e0f bitbake: toaster: layerdetails use new vcs reference api
3775265 bitbake: toaster: fix git checkout command
a07cf2e bitbake: toaster: properly detect failed server start
d8d0db1 bitbake: toaster: Use on input event for validation rather than keyup
fdb5639 lib/oe/package_manager: support exclusion from complementary glob process by regex
3d2d158 test-dependencies.sh: strip only .bb suffix
3f8c532 qt-mobility: select distro preference for bluez provider
9571ccb iputils: install clockdiff same as ubuntu and fedora
508509d populate_sdk: Handle OLDEST_KERNEL
d8d5fee default-providers: Set the preferred provider for bluez based on version
8633e18 connman: depend on distro provider of bluez
7800588 conf/distro/include/default-providers: updated bluez-hcidump providers
44b08f2 gstreamer1.0-plugins-bad: select distro preference for bluez provider
4e2642e ofono: select distro preference for bluez provider
8596c29 libpcap: select distro preference for bluez provider
47dea14 neard: select distro preference for bluez provider
0a4db94 pulseaudio: select distro preference for bluez provider
0c9d0e9 packagegroup-base: select distro preference for bluez provider
1139cc4 bluetooth.bbclass: simplify recipe inference of bluetooth provider
69c5e09 libtool: 2.4.5 -> 2.4.6
ad82508 neon: update 0.30.0 -> 0.30.1
6ae933b bitbake: tests/fetch.py: latest_versionstring add set of PN
1c1d9e3 bitbake: fetch2: wget remove scape of - in regexes don't needed
5a88664 bitbake: fetch2: wget _modelate_version improvments
22cebb8 bitbake: fetch2: wget latest_versionstring improvments in get version by dir
62e171b bitbake: fetch2: wget add _check_latest_version_by_dir
309d92e bitbake: fetch2: wget latest_versionstring _check_latest_version improvments
bed1b3f bitbake: fetch2: wget latest_versionstring improve _parse_path
c4da9b9 bitbake: cooker: rework LAYERDEPENDS versioning so that it is actually useful
758dc92 bitbake: tests: add tests for OE pre-release version formatting
93c3f39 bitbake: utils: ensure explode_dep_versions2 raises an exception on invalid/missing operator
b427750 bitbake: depexp.py: Fix segfault if DISPLAY is not set
a2bfd4b syslinux: support ext2/3/4 device
06ff3c4 e2fsprogs: Extend to add nativesdk for syslinux
a55d537 gcc: Upgrade 4.9.1 -> 4.9.2
18b3cfd gst-plugins-base: Fix mulitlib packaging
d88555b openssl: upgrade to 1.0.1k
4c00256 oeqa/ptest: Removed buildhistory as requirement for ptest
c74ee53 libassuan: add native build
cd34df3 gpgme: fix configuration by setting proper parameters instead of patching
6cac3ad oeqa/smart: Added some new test cases
c0a7941 build-compare: Add the build-compare_git.bb recipe.
c0a1f43 coreutils 6.9: fix unknown-configure-option
ce79eca libnewt-python: remove make var LIBNEWTSH
dc9c8bc icu: remove obsolete aclocal.m4 workaround (fixed upstream since v52.1)
abb6cde libaio: Backport generic arch detection patch
60ae5c2 meta: enable parallel build for several recipes
eee50b2 vala.bbclass: enable PARALLEL_MAKE
eacb5c5 pcmciautils: fix and enable parallel build
8d30c2a ghostscript: fix and enable parallel build
2d9763a blktrace: fix and enable parallel build
7502fa5 openssl: fix and enable parallel build
60b33e5 pth: fix and enable parallel build
5f5d0d8 mtools: fix and enable parallel build
208c9d3 at: fix and enable parallel build
5c87de1 tcp-wrappers: fix and enable parallel build
b003df0 bind: fix and enable parallel build
3dff11c openssl: Add mapping for microblaze architecture
f562905 btrfs-tools: remove nodocs.patch
f404ab2 neard: do not ship version.h
146f28a gcc-sanitizers: check gcc-build-internal before link
88ad298 rt-tests: fix gzip command
b3dab28 libtool: don't execute automake and autoconf on every invocation
00472a7 Revert "libtool: avoid running automake/autoconf --version"
ef07260 bluez5: upgrade to 5.28
51b6021 ofono: upgrade to 1.16
7d1e1fc python-pycurl: 7.19.5 -> 7.19.5.1
7b72a84 python-scons: 2.3.2 -> 2.3.4
ca88dd8 lttng-tools: 2.5.3 -> 2.6.0
6d247eb libpciaccess 0.13.2 -> 0.13.3
6f47148 lttng-ust: 2.5.2 -> 2.6.0
8b54cb7 subversion: 1.8.10 -> 1.8.11
1aa6b04 kexec-tools: 2.0.8 -> 2.0.9
2e608ec package_regex.inc: Cleanup and organize
73f7ced upstream_tracking.inc: Remove entries that now isn\'t needed
b7153be image: add new items to IMAGE_FEATURES[validitems] list
5476ce3 gstreamer-plugins: don't ship files in ${PN}
f749594 gst-plugins-good: ship equaliser presets in right package
8df03f4 gstreamer1.0-plugins-good: ship equaliser presets in right package
bfb4819 gstreamer1.0-plugins-base: move data to the right subpackage
34221ef gst-plugins-*, gstreamer1.0-plugins-*: fix main package binary components
1920ef3 oe-pkgdata-util: add some QA tests
cfc12df oe-pkgdata-util: add list-pkg-files subcommand
8d13d18 oe-pkgdata-util: add list-pkgs subcommand
4b33006 oe-pkgdata-util: allow reverse package name lookups
0f77efe oe-pkgdata-util: fix read-value to handle data with colons in the value
1fb1caf oe-pkgdata-util: make find-path show a proper error if no package found
9f03969 oe-pkgdata-util: improve command-line usage
675aa5f git: add basic tab completion support
9aafb02 git: expand recipe to take advantage of pre-gen'd manpages
af7fc22 lib/oe/lsb.py: Fix up for dash
842a332 image_types: Error out if BTRFS image is too small
e34a65f cryptodev-module: Fix build on kernel v3.19
ae977c5 xserver-xorg: Improvments in systemd-logind disable
84520a9 xserver-xorg: Update to 1.16.3
1cdaf20 base-files/profile: change EDITOR to not be busybox specific
34a4413 u-boot: update to version 2015.01
1993237 procps: disable fancy new top output mode
9e93803 connman: upgrade to 1.28
c22ba2d harfbuzz: upgrade to 0.9.38
8102bd0 wic: add GPT support
fa818fb wic: properly label filesystems
5c05635 wic: fix empty btrfs partitions
4dce5c4 wic: remove useless calls to __write_fstab
cf3e21e wic: allow to configure overhead factor per partition
d84742c wic: allow to configure extra space per partition
605627b wic: add rawcopy source plugin
0b156da wic: allow creation of partitions not in table
f923f0f toasterconf: update Toaster configuration file
53f3f61 mesa: update 10.4.3 -> 10.4.4
efd0e86 mesa: update --with-llvm-shared-libs configure option
548ab15 qemu: Update PACKAGECONFIG[xen] and add xen to defaults
62eb5e6 kern-tools: fix patch application error (preempt-rt)
edde3e5 runqemu: Add option for BIOS binary filename
98da500 btrfs-tools: update to 3.18.2
a298d8c qmake_base.bbclass: fix hardcoded paths in a generated qt.conf
23bf6bf gst-fluendo-mpegdemux: update to 0.10.85
4870290 rootfs.py: ignore "NOTE:" when catching warnings
2c2b003 dhcp-client: Ignore partial checksums
a849839 u-boot.inc: unbreak
ae32fed gcc-target: Don't install target gcc libdir files
cefc403 autotools/siteinfo: Avoid races over siteinfo files
231d4a9 bitbake: bitbake-user-manual: Removed errant writer note line.
9f562f8 bitbake: bitbake-user-manual: Added some links to some new variables.
d87805b bitbake: bitbake-user-manual: Added five new repo variables and links.
961e692 bitbake: Makefile: Updated the script to not create PDF version by default
1a740bb bitbake: toastergui: links outside Toaster should open in a new window
c8a8288 bitbake: toaster: All machines Fix filter counts
ea7d246 bitbake: toaster: All machines show results count if filtering or searching
2a3ca55 bitbake: toaster: All machines reset order_by if removing that column
203ac29 bitbake: toaster: all Machines exclude de-prioritised layer source items
a7ab4d0 bitbake: toaster: All Machines fix reset search link
9e8798f bitbake: toaster: models Allow the machine's layer name to be searched
d6868d5 bitbake: toaster: All machines Add filtering based on layer in project
50719af bitbake: toaster: All machines Add layer name order by functions
02b7704 bitbake: toaster: layerdetails Don't remove alert from dom on dismissal
a1347a1 bitbake: toaster: All machines Update layer notifications
479338c bitbake: toaster: All machines add a column to link back to machine conf
87074af bitbake: toaster: machines Make sure we don't overwrite the pagesize
8c25c34 bitbake: toaster: Add add/select functionality to machines page
6969a3d bitbake: toaster: machines Fix undefined variables
b2a903e bitbake: toastergui: add download task log icon to recipe details page
6877263 bitbake: toastergui: add the word 'compatible' to 'all' pages
42a7d91 bitbake: toastergui: set column heading to 'Revision'
d81e514 bitbake: toaster: display Toaster mode and version in debug mode
da8110a bitbake: toaster: improve logging facilities for toaster
0c89846 bitbake: toaster: enhancements for the startup sequence
202d808 bitbake: toastergui: improvements in layer selection logic
b741c9a bitbake: toaster: enable server-side caches and debug-panel
d72f198 bitbake: toastergui: fix loadconf error message
ed5c448 bitbake: toaster: correct typo in toaster script
514b7cf bitbake: toasterui: use text() instead of html()
16a9667 bitbake: toastergui: remove time link for failed build requests
cc5f804 libtool: Fix option parsing performance regression
870323c linux-yocto/3.14: fix qemumips build error
0357437 kern-tools: import patch performance improvements
9348049 linux-yocto-dev: update to v3.19+
4078802 lttng: update to 2.6.0-stable
46b1b96 linux-yocto: basic octeon III support
ef3fa60 linux-yocto/3.17: update to v3.17.8
d0fe36e linux-yocto/3.10: update to v3.10.65
5848c92 linux-yocto/3.14: update to 3.14.29
a7c428c kernel-dev: install all modules by default
dade54f libdrm: upgrade to 2.4.59
62cd5e7 flac: upgrade to 1.3.1
3145abf neard: upgrade to 0.15
4530a8f m4-native 1.4.9: remove it
586eab4 bison 2.3: disable native
90ca8d5 coreutils 6.9: disable native
9171652 elfutils 0.148: use BPN in SRC_URI
b5577e0 subversion 1.6.15: fix unknown-configure-option
8eadaec rxvt-unicode: fix for 9.20 and 9.21
594959e tar 1.17: fix unknown-configure-option
f4b1459 grep 2.5.1a: fix unknown-configure-option
1f9b782 gzip 1.3.12: a few fixes
8f2bda7 patch 2.5.9: fix unknown-configure-option
b92a619 m4 1.4.9: fix unknown-configure-option
82bc3fb findutils 4.2.31: fix SRC_URI
d31ec82 groff 1.18.1.4: fix HOMEPAGE and SRC_URI
60b932d xf86-video-intel 2.21.15: remove it
4557e95 matchbox-desktop: remove 0.9.1 and 2.0 version
f9db549 matchbox-wm 1.2: remove it
a960a14 which 2.18: fix SRC_URI
1b45a51 busybox: Include 'mesg' utility
a3dfb70 recipetool: improve command-line help
9433537 devtool: improve command-line help
7d73324 scripts/oe-selftest: add command line option to list test classes
336d28c scripts/oe-selftest: fix startup backtrace
eba9f8a wic: bootimg-partition: Stop removing whole workdir
080e3e4 wic: print partition alignment when available
602d90d wic: use kB for the partitions size
7c3b9a9 terminal.py: add tmux new window option
b7d91d3 openssh: Fix non-deterministic build behaviour
0de948f linux-yocto-tiny_3.17: Update to actually use 3.17 git repo
f6ec8df Revert "bitbake.conf: don't remove WARN_QA and ERROR_QA from hashes"
24d9d5a insane.bbclass: Added QA test for expanded ${D}
1c5be77 files/toolchain-shar-template.sh: fix replace target_sdk_dir twice in environment setup file
16a0178 mesa: Upgrade to 10.4.3
09fba50 wic: bail out on kickstart parse errors
24ffda5 glibc: Re-enable upstream __USE_KERNEL_XATTR_DEFS patch
1f29265 image.bbclass: don't let do_rootfs depend on BUILDNAME
d42963a core-image: split debug-tweaks into individual features
dbfed41 create-pull-request: Fix git request-pull
5a4e20a ca-certificates: Upgrade to 20141019 (git based)
308a7ea lsbinitscripts: Upgrade to 9.61
10f95ff nspr: Upgrade to 4.10.8
5ca2518 glew: Upgrade to 1.12
30a5c9e classes/license: tweak license format messages
617e2e9 binconfig-disabled.bbclass: fix echo command
775d467 gcc-configure-common.inc: remove ac_cv_path_SED
588342f valgrind: depends on boost when ptest
5fcb217 apr-util: Allow use in SDK
6b19a93 wic: fix extended/logical partition layout
eca277b u-boot.inc : add compile multiple u-boot feature
1e4ee4b uboot-config.bbclass: Allow multiple U-Boot config for machine
02a1e01 yocto-bsp: Add branch to SRC_URI for custom kernels
bf6f35b yocto-bsp: Add missing conf dir to arm template
1f53ede libtool: avoid running automake/autoconf --version
d8f0011 opkg-keyrings: New recipe
9d3e44d opkg: Backport improvements to opkg-key
c8c75ed poky-feed-config-opkg: Remove
e4d165d opkg: Merge in opkg-collateral
3d18626 opkg: Merge opkg.inc into recipe and tidy up
d07c9ad opkg-collateral: Simplify source files
d1373d4 opkg-arch-config: Renamed from opkg-config-base
cb6501a apr: Allow use in SDK
8ec0347 insane: add unknown-configure-option to default WARN_QA
9c9560f bitbake.conf: don't remove WARN_QA and ERROR_QA from hashes
ddb8d3f wayland: remove explicit class-native DEPENDS
8ac69a9 native: remove PN from DEPENDS automatically
7330a88 systemd: Backports fixes to 216
960dd0a lsbinitscripts: fix the path for mountpoint
da35877 lib/oe/terminal: add support for Terminology terminal emulator
95bf2ab piglit: add x11 to required DISTRO_FEATURES
4cc8614 xmlto-native: fixes slow creation of yocto docs
ee9acb1 xorg-driver: add x11 to required DISTRO_FEATURES
4385b3c package_manager.py: fix rootfs failure with multilib enabled
e4dc8fe openssh: configuration updates
93842f0 pigz: Upgrade to 2.3.3
57647c9 terminal.py: fixes launching multiple windows of gnome-terminal
f14e96a runqemu-internal: get rid of annoying but harmless error message
491d1db image.bbclass: make kernel depmod data optional
616696a busybox: cve-2014-9645
88a966a gnutls: update to 3.3.12
29d961a mingetty: fix SRC_URI
2bb31f1 pcmciautils: fix SRC_URI and HOMEPAGE
92cf495 latencytop: fix SRC_URI and HOMEPAGE
a4ae55d pax: fix SRC_URI and HOMEPAGE
7775537 man: fix SRC_URI
a375173 cwautomacros: fix SRC_URI and HOMEPAGE
b0a28c0 dosfstools: fix SRC_URI
eb0c8d5 base-passwd: fix SRC_URI
8c2c459 cdrtools-native: fix HOMEPAGE and SRC_URI
03038f3 perf: add LIBNUMA_DEFINES
312e8a1 screen: add PACKAGECONFIG for libutempter
5379ed8 dpkg: add perl to RDEPENDS
ca232b5 lib/oe/image.py: add error checking for missing IMAGE_CMD
26e5b0f classes/image: ensure uninstalled packages do not appear in manifests
69c588b classes/image: skip recipe on invalid IMAGE_FEATURES item
124f041 lib/oe/rootfs.py: rename _uninstall_uneeded to fix spelling error
4421239 classes/image: drop unused default of MACHINE_POSTPROCESS_COMMAND
3f739a8 recipetool: replace version in S value
bcfca54 libtool: Fix tools path issues
bd84192 report-error: Catch un-readable log data
013f7e2 poky.conf: use logic to edit WARN_QA and ERROR_QA
3ebb522 poky.conf: remove poky-feed-config-opkg from images
825c0a9 bitbake: data_smart: split expanded removal values when handling _remove
b00e781 bitbake: tests/data: add test for incorrect remove behaviour
22c38e2 build-appliance-image: Update to master head revision
e240435 libtool: 2.4.4 -> 2.4.5
1036630 python: Disables SSLv3
4213ccc sed-native: drop
47a5525 btrfs: create an empty file to build the fs in
823d2f9 tzdata: update to 2015a including leap second
d231cc4 tzcode: update to 2015a leap second changes too
6145832 build-appliance-image: update to head afe85485fe185b663a1285b5c27de3160bf06cf7
b4d01ec toasterconf.json update
c462ce6 maintainers.inc: Update some items for Randy Witt.
2237c9f bitbake: toaster: proper setup for build configuration
afe8548 bitbake: toaster: new layer checkout logic
c58c948 bitbake: toaster: update texts for the startup sequence
635130d bitbake: data_smart: Don't use mutable objects as default args
087424d bitbake: parse/ast: Fix issue if path contains '&'
4f71827 bitbake: toastergui: update project build listing
fefef50 bitbake: toasterui: do not filter images by extension
32b396b bitbake: toastergui: alignment fix
bc63d6b bitbake: toastergui: remove recipe id links to the layer index
a9c0865 bitbake: toastergui: consistent capitals in button
05f5435 bitbake: toastergui: hide table controls when when less than 10 entries
8a2ec99 bitbake: toastergui: set column width in layer details page
d4b9b0f bitbake: toastergui: add 'show all' link to no results page
c748c7e bitbake: toastergui: give the add dependencies form some breathing space
088c19d bitbake: toastergui: consistent add / remove layer notifications
571d551 bitbake: toastergui: remove redundant style declaration
c049775 bitbake: toastergui: Generic message for the layer details empty states
24979f5 bitbake: toaster: apply common styles to right hand column of detail pages
a11a34c bitbake: toaster: make layouts consistent
e2cffc0 scripts/send-error-report: Set exit code if error occurs
3f15d8a kernel: Fix depmod for multilib
36bd248 image: Add missing depends on virtual/kernel for depmod data
08c64b5 security_flags: disable PIE on expect
7bc6794 logrotate: fix missing acl and libselinux dependencies
474661b dpkg: fix host contamination
3592507 combo-layer: support updating up to arbitrary commit
62d94a4 combo-layer: minor refactor
f51e79b libunwind: Fix test case link failure on PowerPC with Altivec
8754c8a udev: remove obsolete dependency on acl
693d455 udev: fix missing dependency on glib-2.0-native
d963f3b bitbake.conf: add PKGDATA_DIR to BB_HASHBASE_WHITELIST
609898a linux-dummy: provide empty shared_workdir method
86c77ac elfutils_0.148.bb: CVE-2014-9447 fix
6e02676 recipes-qt: add x11 to required DISTRO_FEATURES
6618cff libpng: Upgrade to 1.6.16
c55165e gmp: Change the SRC_URI to reflect upstream changed location
dc11c0e icu: Upgrade to v54
ca1cd18 usbutils: Fix typo in md5sum
b7d334d xserver-xorg: Add the patch to fix subwindow in Xi emulated events
14ef8b9 udev-cache: avoid using '-L' for stat
2b7d311 util-linux: move readprofile to match busybox
0962b29 libsm: remove dependency on e2fsprogs
2e8b1b4 systemd: remove util-linux from DEPENDS
0f8c091 util-linux: upgrade to 2.25.2
09aa2b1 libav: drop older 0.8.* and use libav-9 by default
872b656 libpostproc: import from meta-oe
f78bf87 gst-ffmpeg: add dependency on libpostproc
57351e9 udev: don't keep ptest testdata laying around
0d5ac1a udev: fix ptest rule syntax check
29de3d2 ltp: update to 20150119 release
b688d55 orc : Update to 0.4.23.
af69192 kernel-yocto.bbclass: Bug Fix inside do_kernel_checkout()
3bf5b6d arch-mips.inc: Change definition of TRANSLATED_TARGET_ARCH
e558e54 feature-arm-thumb.inc: Remove extra space on thumb override
9e44be4 dmidecode: add powerpc64 to compatible host
6a41dd1 gcc-sanitizers: fix licensing
b2b62c3 binconfig-disabled: install config scripts in sysroot
5e6e95d binconfig-disabled: try harder to prevent usage of config scripts
0383bb8 lighttpd: Use PACKAGECONFIG to enable openssl
c453597 eglibc-use-option-groups.patch: Various fixups
2af94b0 python-smartpm: Fix attemptonly builds when file conflicts occur
5656567 u-boot-fw-utils: Fix the cross build
f687f99 libidn_0.6.14: fix the QA Issue
6a63df7 glibc: CVE-2014-9402 endless loop in getaddr_r
5db14d5 nss: update package to 3.17.3 and build fix
dacbc74 boost: Avoid to use local host configuration
43dc6b5 image_types.bbclass: manage 'cpio_append' directory
e598bd5 image_types.bbclass: fixed 'init' creation for cpio images
579aa72 kmod: new PACKAGECONFIG debug and logging to help reduce binary size.
db8e08c base-passwd: Don't replace $ variables in passwd and group files
99ee41b build-appliance-image: Upgrade for 1.8 Master
fd37993 mkfontscale: Upgrade to 1.1.2
2baa624 libxml-parser-perl: upgrade to 2.44
8bef633 gcc: ensure target gcc headers can be included
a3dbfc8 bind: fix typo chown->chmod
c4c885b distcc: fix initscript can not stop distcc daemon correctly
959759b gcc/libgcc-common.inc: Add missing 'fakeroot' to two tasks
867758c shadow: securetty: Add Xilinx Zynq SoC
2323efc pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4
07f2eca tiny-init: set proper S value
745cebd bitbake: siggen: Ensure taskdata default functions exist in base class
2b899a4 net-tools: Fix rerunning of do_patch task
11ef55a kernel/image/depmodwrapper: Fixups for depmod
46dba26 gcc-runtime: Remove libgfortran data from receipe
a9102e5 package.bbclass: Let PR server update PKGV, not PV
8bab098 lib/oe/package: Ensure strip breaks hardlinks
7f58a85 python-2.7-manifest: Add package for contextlib module
3948336 dhcp: not override site.h
bee37d4 dhcp: upgrade to 4.3.1
02ee240 rpcbind: add PACKAGECONFIG for systemd
38978ee rpcbind: upgrade to 0.2.2
3676378 man-pages: upgrade to 3.76
f733dad gnupg: upgrade to 2.1.1
e758eb5 xmlto: upgrade to 0.0.25
0421c67 elfutils: upgrade to 1.161
5832ed3 packagegroup-self-hosted: package all of Python
9839638 fix '[[: not found' error message using dash
c5fb558 packagegroup-core-sdk: add gcc-sanitizers to core SDK
166015c gcc-sanitizers: Enable GCC sanitizers
5b985fd oeqa/utils/decorators: Try and improve ugly _ErrorHandler tracebacks
52a837e perf: fix for rebuilding
f63f4b5 libav: drop unused FFMPEG_LIBS and move libpostproc only to 0.8.11
58d91fa xorg-app: add x11 to required DISTRO_FEATURES and cleanup dependencies
1b7b58a recipetool: add python dependency scanning support
e490d79 recipetool: add python buildsystem support
26f7732 perl: Backport fix for bug #123591
817606a grub-efi: bump the PR
e220207 neard: fix B != S
7cd7230 neard: fix parallel issue
940c417 guile: fix installed-vs-shipped error
b31e6e7 Revert "guile: fixed installed-vs-shipped error"
cf72ede base.bbclass: detect when S has been set incorrectly
4eb3db9 meta: set proper S value
00fbca6 xorg-minimal-fonts: set and handle S in a proper way
06a2dd7 lsof: handle S in a proper way
ed3ddd4 makedevs: set and handle S in a proper way
32fb1de gnutls: fix sed command
b2f8367 python3: fix for cross compiling
3873efd curl: Add PACKAGECONFIG for samba
8f9506b at-spi2-core: pass correct path to dbus-daemon
c929bd3 texi2html: update po_document/Makefile.in.in for new gettext
77125fe texinfo: update po_document/Makefile.in.in for new gettext
b3dd5ec gettext: upgrade to 0.19.4
edd91b4 opkg: fix libtoolize error
d4e1862 libtool: upgraded to 2.4.4
d977873 automake: upgrade to 1.15
0d93a58 mklibs-native: upgrade to 0.1.40
4a0386e autogen-native: upgrade to 5.18.4
cc0ee9b grub: remove autogen-native dependency for tarball recipes
6f19667 lib/oe/sdk.py: Add SDKIMAGE_INSTALL_COMPLEMENTARY capabilities to DpkgSdk
9538ee9 bitbake: cooker: Use expanded_data for ASSUME_PROVIDED
4eb3ffe bitbake: cooker: Rename event_data -> expanded_data
793f2f2 bitbake: server/process: Fix select call
d95e988 bitbake: toastergui: enable re-ordering when columns are hidden
02c49c2 bitbake: toastergui: all projects column show/hide
ca8c634 bitbake: toastergui: fix the second 'view all targets' link
2dba917 bitbake: toastergui: minor fixes
08e5a49 bitbake: toastegui: project page build selected targets
c546815 bitbake: toastergui: fix all targets page search
4571c82 bitbake: toastergui: fix all-targets redirect
8e3be3f bitbake: toaster: newproject default release selection fix
bdbc37f bitbake: toastergui: "Run again" button in build pages
99bbf30 bitbake: toastergui: fix duplicate IDs all builds page
c7af070 bitbake: toasterui: save event backlog to build
4dc8edb bitbake: toastergui: save cookie for orderby/page size settings
07bfa68 poky.conf: change case of Poky for DISTRO<->SANITY mismatch
d675932 upstream_tracking.inc: update entries for bash
8da8a0e bitbake: prserv/serv: Improve exit handling
6abcc61 bitbake: toaster: project configuration variables page
d1dbf4c bitbake: toaster: project builds page
9a51fb3 bitbake: fetcher: use os.path.splitext() instead of string.split()
f0d5edc bitbake: bin/bitbake: only check that /dev/shm is writable on Linux
a67b855 bitbake: bb/fetch2/wget.py: latest_versionstring escape packagename when built regex
c6f933e bitbake: cooker.py: trap the ENOSPC error and translate it
e63723f bitbake: cooker: Further optimise pyinotify
db45dde bitbake: command/cooker/knotty: Fix memres handling of command environment changes
3e4d84a arch-mips.inc: Add the MIPS ABIEXTENSION to toolchain name
3290dc9 maintainers: Clean up a couple items
08d3f44 bitbake: lib/fetch2: Tweak get_srcrev() function description
35c9fa0 maintainers: Update for non-maintained recipes
d9d5b8b depmodwrapper-cross: Update to use STAGING_KERNEL_BUILDDIR
1dfb903 lib/oe/rootfs.py: Fix reference to abiversion file location
7298317 xserver-xorg: Always disable systemd-logind.
42b7055 maintainers.inc: update it
08970d4 glibc: Fix up minimal build with libc-libm
2d58e62 msmtp: fix configure options
fde9288 kexec-tools: separate B and S
0a861d2 presentproto: separate B and S
a7f4a3a rpm: separate B and S
fb043c4 icon-naming-utils: separate B and S
e6fd674 libfm: separate B and S
972178d libfm-extra: separate B and S
03ab499 connman: fix B != S
55a4586 python: fix B != S
84a76b2 alsa-utils: fix B != S
15ce397 libcroco: separate B and S
0736edb gnome-desktop-testing: separate B and S
3a0c5de qemu: fix B != S
9d4cad3 apr-util: fix B != S
646230a expect: separate B and S
0c498a7 oprofile: separate B and S
3d0bf25 pinentry: separate B and S
de6e1fa bash: separate B and S
42947da gnutls: separate B and S
0e67d3c libgcrypt: separate B and S
ec65748 flac: separate B and S
e340a37 cracklib: separate B and S
bd52abb cmake: fix B != S
f7b94f6 bc: separate B and S
d625245 ghostscript: fix B != S
3b1324b nspr: fix B != S
92597b5 libnl: separate B and S
2e1bdff rxvt-unicode: Add Upgraded version 9.21
586c5bd dtc: Upgrade to 1.4.1 (git based)
36be2d6 msmtp: Upgrade to 1.6.1
4bbe189 autotools.bbclass: print make clean
41e6eae quilt: set CLEANBROKEN
8617fde mkelfimage: set CLEANBROKEN
4acf17f slang: set CLEANBROKEN
8910c5e libxml-parser-perl: fix LICENSE to be more accurate
fee4f23 libxml-simple-perl: fix LICENSE to be more accurate
b404dd3 perl: fix LICENSE to be more accurate
56e8fc5 pigz: add Apache-2.0 to LICENSE
ca6cb22 portmap: remove obsolete lines
8d8e035 man: remove fakeroot from do_install()
2acea20 cups: remove fakeroot from do_install()
93c9b3c libical: use BPN in SRC_URI
f3eb277 gnu-efi: upgrade to 3.0.1
63925b5 bluez5: upgrade to 5.27
bbd5fe6 libaio: Upgrade to 0.3.110
85326e2 security_flags: disable pie support for libaio, blktrace and ltp
399c0fa usbutils: Add version 008
1f63bd2 systemd: add missing RDEPENDS
e518d3e python-gitdb: upgrade to 0.6.1
3996f7a python-git: upgrade to 0.3.3
b39ebfd socat: forcibly disable use of libbsd
5e52a6c BAD_RECOMMENDATIONS also works for RPM packaging.
363100f curl: upgrade to 7.40
013de19 package.bbclass: Fix support for private libs
311d9d1 sysklogd: upgrade to 1.5.1
ce9cb7a coreutils: upgrade to 8.23
ce5cc41 sysstat: upgrade to stable version 11.0.2
5b7371b qt4-embedded: support c++0x stand for directfb
ac35e3c directfb: upgrade to 1.7.6
7b8c6b8 lz4: update to r127
ac867c3 grub 2.0: several fixes
175d162 pax-utils: RDEPENDS on python
23864d6 parted: parted-ptest RDEPENDS on python
ca133bc oprofile: disable documentation
c2c4579 icecc.bbclass: properly handle disabling of icecc
db2255d cross-canadian/meta-environment: Allow modification of TARGET_OS to be optional
0e35e33 openssh: deliver ssh-copy-id
2eaeba1 kernel-yocto: remove GUILT_BASE from terminal exports
34f3d55 kernel.bbclass: Update cleandirs to remove new kernel staging dirs
fddf343 kernel-devsrc: Depend on virtual/kernel:do_compile
14fa134 perf: Disable perf-libunwind
4e13036 perf: Add libdw unwind support to perf-libunwind feature
46cdaf1 kernel: move source and build output to work-shared
92725ad kernel.bbclass: When linux/version.h exists, copy it
1a0343a module.bbclass: Add KERNEL_SRC in EXTRA_OEMAKE
397f27c guile: fixed installed-vs-shipped error
4e20211 bitbake: toasterui: fix variable data error
2d78912 bitbake: toastergui: all builds page lists failed build requests
ce78487 bitbake: toaster: layerdetails Remove compatibility setting
025533d bitbake: toaster: Add layer details page feature
2a6f739 bitbake: ConfHandler: Clean up bogus imports
5c9e2b2 bitbake: ConfHandler: Rename oldfn to parentfn to be clearer
967f13f bitbake: cooker: Improve pyinotify performance
1083747 libxml2: Backport fix for CVE introduced entity issues
2b92504 poky.conf: add support for running mips64 qemu machine
eb7480f bitbake: cooker: Fix pyinotify handling of ENOENT issues
6c3c3e1 bitbake: cooker/cache/parse: Implement pyinofity based reconfigure
83f8a40 bitbake: bitbake: Add pyinotify to lib/
3cd31b1 bitbake: bb/fetch2/ssh.py: Fix urldata.localpath use os.path.normpath
83a30df bitbake: fetch/git: Improve ls-remote handling for latest_revision
c45589a poky.conf: mark all CentOS 6/7 versions as compatible
8763704 bitbake: toaster: implementation of project page
66e1b52 bitbake: toaster: branch name priority resolution
3e73af4 bitbake: toaster: do not launch web browser on noweb option
3c37669 bitbake: toaster: write pre-read conf file for build variables
ed9fa17 bitbake: toaster: Improve client side error handling
2e26745 bitbake: ast: Add error when trying to use dash in sh function names
97d44bf bitbake: cache/fetch2/siggen: Ensure we track include history for file checksums
26cd67e bitbake: wget: Add localpaths method which gives localpath with history
130958c bitbake: bitbake-worker: Use setsid() rather than setpgid()
1393e22 bitbake: cooker: Shut down the parser in error state
cbb4f57 bind: Update libxml2 check to make it deterministic.
33f8236 git: upgrade to 2.2.1
9a998a4 file: upgrade to 5.22
19399d5 oeqa/parselogs: Added a check in case the folder location does not contain any log files
9fee93d pcmanfm: update to 1.2.3
bb21377 menu-cache: update to 1.0.0
6450281 libfm: update to 1.2.3
41fa9bd base.bbclass: Avoid explicit ${MAKE} in do_configure
2aa210c rm_work: Fix RM_WORK_EXCLUDE for image/sdk recipes
292f32b glib-2.0: add HOMEPAGE
c366bcb cogl: fix .pc file packaging
02f010b cmake-native: disable check for acl.h
9cfe52d libgpg-error: Update to 1.17
1a3afca liburcu: Upgrade to 0.8.6
108b481 libksba: Upgrade to 1.3.2
be42ad1 libassuan: Upgrade to 2.2.0
0943983 libffi: Upgrade to 3.2.1
6ca44e2 lsbinitscripts: Upgrade to 9.60
86b24bc json-c: Upgrade to 0.12
5e2bf79 openssl: fix hard paths in native openssl
c4fc564 syslinux: Update to 6.0.3
31059be gnupg: Upgrade to 2.1.0
144630e cogl: enable egl-x11 when build with x11
188db83 cups: check avahi before use it
d1b523e qt4: Fix QT4 applications spamming "QWSLock::down(): Invalid argument"
fca3bc5 dropbear: upgrade to 2014.66
3fb5191 openssh: upgrade to 6.7p1
060e354 libevdev: upgrade to 1.3
3accae1 rgb: upgrade to 1.0.6.
b457fe5 xkbcomp: upgrade to 1.3.0
c8cf56b xinit: upgrade to 1.3.4
1db3472 xf86-video-modesetting: upgrade to 0.9.0
8db61a9 xf86-input-synaptics: upgrade to 1.8.1
57f2f85 xf86-input-evdev: upgrade to 2.9.1
593ad57 xf86-video-intel: upgrade to 2.99.917
86d1a86 freetype: upgrade to 2.5.4.
b186008 xkeyboard-config: upgrade to 2.13.
cd00f2a libpng12: upgrade to 1.2.52
67786c4 librsvg: upgrade to 2.40.6
450a4aa hicolor-icon-theme: upgrade to 0.14
e4aa242 json-glib: upgrade to 1.0.2
fad05a7 gst-fluendo-mp3: upgrade to 0.10.31
4935fe6 insane.bbclass: fix desktop
cc73622 kernel.bbclass: fix do_unpack function when S ends with slash
0e92cbc pulseaudio: use stricter PACKAGES_DYNAMIC
97ca1c3 poky.conf: add file-rdeps to WARN_QA
2674ddb dev-manual: Some minor fixes to some text.
cf17b6c dev-manual: Minor hyphenation fix.
060d30d bsp-guide: Added more detail for customizing a BSP recipe
54f98c0 bsp-guide: Cleaned up some examples affected by VESA-support
eae11ba bsp-guide: Updates to the "yocto-bsp" section.
bc42151 bsp-guide: Some minor fixes to the BSP Guide
e38e7e7 bsp-guide: Some corrections to the Crown Bay code examples.
63e4452 Makefile: Clean ups to the Makefile.
67f9fa9 poky.ent: Updated the high-end copyright date to "2015".
46f120c documentation: Updated all XSL style sheet imports to use 1.76.1 version
bfe7d30 gstreamer1.0-omx: use mulitple SCMs to fetch submodules
b3d517a image.bbclass: Remove 'set_image_autologin' function
ea06c15 telepathy: remove (moved to meta-oe)
d25f398 lttng-ust: Update to 2.5.2 version
1fc866e lttng-tools: Update to 2.5.3 version
b371b6b lttng-modules: Update to revision to 16d7431c3
93f902f libinput: update to 0.7.0
4ae6e8f mmc-utils: update to latest git version
8c9fb9d oeqa/selftest: fix test_incremental_image_generation for changes in log output
9c16a96 gstreamer1.0-rtsp-server: upgrade to 1.4.5
dabb7f6 gstreamer1.0-libav: upgrade to 1.4.5
7bdb55f gstreamer1.0-plugins-ugly: upgrade to 1.4.5
fbf32be gstreamer1.0-plugins-good: upgrade to 1.4.5
f5e4d7b gstreamer1.0-plugins-bad: upgrade to 1.4.5
88b6366 gstreamer1.0-plugins-base: upgrade to 1.4.5
8c42ad4 gstreamer1.0: upgrade to 1.4.5
4477069 oeqa/parselogs: Add harmless failure warning introduced by new qemu version on qemuppc
39dea06 qemu: upgrade to 2.2.0
5c8ef2b gstreamer1.0-plugins-base: Taglist will not be sent to downstream if all the frame corrupted
0b97142 gstreamer1.0-plugins-good: Decrease the rank as havn't this kind of decoder for asteriskh263
ff46a34 xcb-util-keysyms: upgrade to 0.4.0
f5cb9a7 xcb-util-image: upgrade to 0.4.0
5da3d30 xcb-util: upgrade to 0.4.0
b74c1ad xtrans: upgrade to 1.3.5
f551ab1 libxext: upgrade to 1.3.3
9e64b6d gtk+: upgrade to 2.24.25
db8bf52 pango: upgrade to 1.36.8
e81b8ab harfbuzz: upgrade to 0.9.37
538b6b6 cairo: upgrade to 1.12.8
515d71a at-spi2-atk: upgrade to 2.14.1.
cfc6154 at-spi2-core: upgrade to 2.14.1
344ce08 atk: upgrade to 2.14.0
d26dcd8 glib-2.0: Upgrade to 2.42.1
fa9777b sqlite3: Upgrade to 3.8.7.4
1e8147a mc: Upgrade to 4.8.13
0d58be6 lsof: Upgrade to 4.88
6e13bfb acpid: Upgrade to 2.0.23
4db2bdf xrandr: Upgrade to 1.4.3
e400e03 pciutils: change default value of PACKAGECONFIG
6ceceb1 bind: fix for CVE-2014-8500
4889478 diffutils & diffstat: fix up EXTRA_OECONF
8bd9b20 wpa-supplicant: avoid host contamination of drivers by libnl3
8de27f8 clutter: enable EGL backend by default
82a5df1 clutter-1.0: add ptest
66ede54 clutter-1.0: upgrade to v1.20.0
96f9761 local.conf.sample: Add qemuarm64
8b8d46f bitbake: utils: make edit_metadata_file() handle VARIABLE +=
b264f56 bitbake: bitbake-layers: fix error handling in add-layer / remove-layer
6dde745 binutils: several security fixes
508c95d m4: Disable searching for libsigsegv
4b2a1d8 diffutils: Disable searching for libsigsegv
16d74f8 grep: upgrade to 2.21
088d4bb xz: upgrade to latest stable release 5.2.0
8bc9af4 pciutils: add PACKAGECONFIG for 'hwdb'
39e21d1 pciutils: upgrade to 3.3.0
5f62b2c sudo: upgrade to latest state version 1.8.11p2
e3aa717 tar: upgrade to 2.18
09c1c79 kmod: upgrade to 19
c73a6ca boost : Add the atomic and chrono libraries to the build.
e3a623b runqemu-internal: increase memory for qemuarm64
575ba9a elfutils: Update PREFERRED_VERSION after upgrade
93ba8e0 oeqa/selftest: fix test_force_task so it doesn't taint the entire build
5268d8a oeqa/selftest: populate pkgdata/shlibs in test_recipetool_create_git
9c93079 oeqa/selftest: improve failure messages for devtool tests
41f3dd1 oeqa/selftest: skip test_incremental_image_generation if not using rpm
8bb5dcc oeqa/selftest: fix test_event_handler for changes in bitbake output
7d9b5fb oeqa/utils: fix testcase decorator to allow calling tests individually
d4d73b0 oeqa/utils: replace some tabs with spaces
e75139c bitbake: fetch2/wget: Fix horrible temp file handling
1d4908d bitbake: tests/data: Add a key deletion test
4d06fb7 bitbake: tests/fetch: Add versionstring tests to network tests list, fix print()
5445339 bitbake: data_smart: Ensure d.keys() doesn't list deleted variables
172ea4f dpkg: Upgrade to 1.17.21
f6cf293 pythonnative: set PYTHON_EXECUTABLE so that cmake can find it
052c67c wic: account for mmcblk device partition naming
51374d5 lsb: remove sendmail from sysroot
422c317 bind: fix conf.patch to add db.255 configuration file
b4499ec image.bbclass: avoid boot error on read-only systemd image
bcc548c license.bbclass: hardlink requires write permission
ccd2f54 opkg-collateral: Use new lists_dir syntax
d33bfe4 ppp: upgrade 2.4.7
4641f72 pax-utils: upgrade to 0.9.2
7296df4 apr-util: upgrade to 1.5.4
bd4052b libxml2: upgrade to 2.9.2
3ef9f83 license: Validate if LICENSE is well defined.
101c3bf license_class: fix license.manifest shows LICENSE field differently to recipe
c924c07 logrotate: upgrade to 3.8.8
01c7d08 lib/oe/image.py: Handle compressed IMAGE_TYPEDEP values
7856fb3 image_types.bbclass: Rework code to map types for 'ext3'
fc74b5d image_types.bbclass: Respect IMAGE_TYPEDEP dependencies
ac17cd3 poky.conf: Add qemuarm64 support
8c90663 bitbake: bb/fetch2/wget.py: latest_versionstring fix multithread and remove deprecated code
6b33e1a bitbake: ui/ncurses: Update ncurses ui to accept configParams
d31b7bd bitbake: cooker: add ability to ignore unmatched regexes in BBFILE_PATTERN
db3f589 bitbake: bitbake-layers: add commands for adding and removing layers
b1e5a67 bitbake: utils: add basic metadata manipulation functions
7b70d5e bitbake: siggen: ensure nostamp tasks force dependent tasks to re-execute
c91b10c init-ifupdown: Add missing script for qemuarm64
a273462 libpng 1.6.13: fix build for aarch64
f1d83b8 make: upgrade to 4.1
5756e07 git: upgrade to 2.2.0
9b49cfd rsync: upgrade to 3.1.1
9b6247b wget: add PACKAGECONFIG for util-linux
f3c615e wget: upgrade to 1.16.1
7d8fe6d file: upgrade to 5.21
e185893 runqemu-internal: Fix qemu networking for qemuarm64
eef1d41 linux-yocto: Fixup linux-yocto for aarch64
eba9c1b aarch-arm64: Update tune files
a1d75c2 glibc-package: aarch64 enable symlink for ABI compliance
3923f7e gcc: Disable aarch64 multilib options
5fd4e25 packagegroup-core-tools-profile: remove sysprof for aarch64
8bf791c kexec-tools: add aarch64 support
f78f9d7 runqemu: add qemuarm64 support.
b6663eb libunwind: add aarch64 support
4c2048f guile: allow compilation for aarch64
ba1db06 lttng: recognize aarch64
1ce4f04 sysprof: disable build for aarch64
fbfabde qt4: add aarch64 support
5b3107a libatomics-ops: add aarch64 target iniitial support
c4c7d86 glibc-locale.inc: add aarch64 to BINARY_LOCALE_ARCHES
275504e libc-package.bbclass: add aarch64 target to locale_arch_options
2637385 siteinfo: account for 32 and 64 bit arm
8781b49 Add machine qemuarm64
28ba4d3 linux-yocto: depend on libgcc for aarch64
2ca1870 python-2.7-manifest.inc: add stdlib argparse module
9a9a226 python-argparse: remove external argparse module
4a17e7c opkg-utils: Update SRCREV
f25fdec byacc: Upgrade to 20141128
d0e3099 cups: Upgrade to 2.0.1
5734086 less: Upgrade to 471
8d46255 devtool: add QA tests
0d686cc scripts/devtool: Support deploy/undeploy function
cd5ca4a scripts/devtool: add development helper tool
b7d53f2 scripts: add scriptutils module
5638ca2 scripts/recipetool: Add a recipe auto-creation script
f176b0c classes/externalsrc: set do_compile as nostamp
d7aec8c oeqa/utils: make get_bb_var() more reliable
15de188 kernel-devsrc: Ensure we have a dependency on the actual source
b99419f README.hardware: update beaglebone entry to match KERNEL_IMAGETYPE
1f5eaa3 beaglebone.conf: update KERNEL_IMAGETYPE to match u-boot
5d72743 meta-yocto/conf/distro/include: Update package_regex'es and upstream info.
b671847 sanity: TMPDIR ABI change for kernel process
db73bcc lib/oe: add recipeutils module
12bb32e lib/oe/patch: add support for extracting patches from git tree
50e771d lib/oe/patch.py: abort "git am" if it fails
37db9e6 lib/oe/patch: use --keep-cr with git am
400933b lib/oe/patch: auto-commit when falling back from git am
e03c047 lib/oe/patch: fall back to patch if git apply fails
de8730c classes/package: move read_shlib_providers() to a common unit
3e6e4e0 meta-environment: don't mark tasks as nostamp
54d5e74 core-image-sato-sdk: Use kernel-devsrc to ensure kernel module builds work
6ae253c boot-directdisk: Use kernel from DEPLOY_DIR_IMAGE, not sysroot
c5236d7 bootimg: Use deploy artefacts, not STAGING_KERNEL_DIR
1dd37a2 kernel: Fix non linux-yocto builds
6eb95d6 kernel-devsrc: Ensure we don't race against do_make_scripts from module-base.bbclass
da2764e kernel-devsrc: Handle ppc crtsaves.o explictly for now
76b7e81 kernel-devsrc: Inherit module-base
22246c6 kernelsrc.bbclass: Ensure fetch/unpack/patch tasks don't run
bc97e85 linux-libc-headers: Upgrade 3.17 -> 3.17.7
be50d1d linux-libc-headers: update to 3.17
c219f6b socat: fix compile erorr against 3.17+ kernel headers
fc152d9 linux-yocto/3.14: update to 3.14.26, integrate ltsi and -rt updates
88fb739 linux-yocto/3.10: update to v3.10.62
d02bb17 linux-yocto/3.17: update to v3.17.6
7a16c50 lttng-modules: fix mm_compaction_isolate_template build
662f39e linux-yocto/3.14: update to v3.14.24
bb98127 linux-yocto/3.10: update to v3.10.59
f0fe7dc linux-yocto/3.17: update to v3.17.2
33437d6 linux-yocto/3.17: update to v3.17.1
63695c6 kernel: Clean ${S} before unpack
d0857f4 sanity: TMPDIR ABI change for kernel process
6a5a2df kernel-yocto: make sure git tags get dereferenced properly in do_patch()
5b71b69 kernel-yocto: fix non-git builds
2214cb2 lttng/perf: depend on virtual/kernel:do_install
b829eaa images: introduce core-image-kernel-dev
a1c24ec kerneldev: create kernel-devsrc packaging
d1aced4 kernel: fix out of tree module builds
86893e4 kernel: Rearrange for 1.8
1ff64a7 image: Avoid race over directory creation
e2f68c0 dbus-test: Fix SRC_URI checksum to match dbus
900f27a report-error: Handle the case no logfile exists
88528a1 ref-manual: Update to the BOOT_IMAGE_FILES variable in the glossary
99bd2c4 ref-manual: Updates to some tuning variables in the glossary:
4f0fa92 Revert "yocto-project-qs, mega-manual: Conformed to YP book set"
d23e189 Revert "yocto-project-qs: Removed redundant code to display title image."
5c7acf0 yocto-project-qs: Removed redundant code to display title image.
c576556 yocto-project-qs, mega-manual: Conformed to YP book set
6ee3207 yocto-project-qs: Updated DocBook type declaration
2059a66 security_flags: Fix typo for cups
973c565 busybox-mdev: Support automatic mounting of block devices
6695f76 busybox-mdev: Add hotplug kernel module support to mdev.conf
f9392a5 busybox/find-touchscreen.sh: Simplify script and recognize USB devices
f50c622 busybox-mdev: Install missing find-touchscreen.sh
3ee4015 powertop: Fix build for !uclibc
88af919 common-licenses: add SMAIL_GPL
cff6c48 wic: add globbing support in IMAGE_BOOT_FILES entries
90487df wic: IMAGE_BOOT_FILES format checks in bootimg-partition source
94e1442 mesa: add PACKAGECONFIG support for gallium XA state tracker
7d495e5 vala: Add Upstream-Status to patch
3c55f44 oprofile: add missing Upstream-Status
77e1c5f which: add missing Upstream-Status
02e11ce udev-cache: refactor conditionals and error handling
408baa9 udev-cache: Update cache asynchronously
88c184a udev-cache: invalidate on rules.d changes
7c522ce udev-cache: always warn on console if invalidated
8b0be80 udev-cache: Clean up message when cache is invalidated
0002d46 udev-cache: refactor sysconf generation
c6e8f07 udev-cache: don't generate sysconf twice
7f8634c udev-cache: replace readfiles() with cmp
24a159e udev-cache: stop race between sysconf and cache generation
a957ff1 buildtools-tarball: restore missing git tools
d5e0cc7 systemd-systemctl: add handling of template unit files
0932d84 libproxy: let INCOMPATIBLE_LICENSE supports wildcard
b3c625a default-versions.inc: let INCOMPATIBLE_LICENSE supports wildcard
5f78cf9 base/license.bbclass: expand wildcards in INCOMPATIBLE_LICENSE
fc51832 gcc runtime: specify license on a per package basis
31e86e6 toaster.bbclass: trigger event for other image files
1f41cb6 systemd: backport patch to fix reading journal backwards
ef552b9 font-util: Fix incorrect PKG_CONFIG_PATH
244cb9b package.bbclass: do variable fixups even when FILES was set
48b3540 kernel.bbclass: Remove bashism
3195210 image_types.bbclass: Populate cpio /init as symlink
25a3ab1 shadow: disable nscd feature when glibc is not built with spawn posix functions
1b330a4 gnutls: upgrade to 3.3.11
3fb5467 packagegroup-core-tools-profile: allow lttng-modules for ARM
2cd226e glibc: CVE 2014-7817 and 2012-3406 fixes
d913c67 openssh: move setting LD to allow for correct override
48a0394 qemu: disable vte if gtk is also disabled
73388a1 gstreamer1.0-* fix configure for out of tree build on git recipes
f9ea938 connman: use PACKAGECONFIG to control systemd option
2c8be73 ofono: use PACKAGECONFIG for systemd and bluetooth
b9ed702 gst-plugins-bad: add PACKAGECONFIG for the RTMP plugin
8a4e32d gst-plugins: remove spurious whitespace
0a791e9 bitbake: data: escape '$' in shell variable assignment
bb83fcc bitbake: toaster: importlayer Tidy up the page initialisation
641c50d bitbake: toaster: Change the full stop to a colon
6f3f059 bitbake: toaster: Formatting changes to error messages
c89fd79 bitbake: toaster: projectapp Add links to the imported layers notify
8d96256 bitbake: toaster: importlayer Avoid namespace clash with layer name
dadc11a bitbake: toaster: Importlayer add notify exactly which layers changed
bd6b879 bitbake: toaster: tweaking the import layers form
1605cd3 bitbake: toaster: Add import layer feature.
13141af bitbake: toasterui: refactor project layer finding logic
7d5cd68 bitbake: toaster: libtoaster Add editProject and getLayerDepsForProject
d5fc4f7 bitbake: toaster: libtoaster Add a error handler to GET in makeTypehead
c058c37 bitbake: toaster: Initialise the 'change' icon tooltips
3910763 bitbake: toaster: base Only show change project icon when > one project
4061fcd bitbake: add POST endpoint for uploading eventlog files
aa9816a bitbake: toastergui: implement UI changes to allow file download
85a17f8 bitbake: add option to write offline event log file
d086fa3 bitbake: toasterui: add extra debug and development infos
f99f2cd bitbake: add build artifacts table and other improvements
c467bbd toasterconf: naming and description changes
fb76005 yocto-bsp: Get rid of 'strange' filenames in x86_64 templates
82e8b73 yocto-layer: Get rid of 'strange' filenames in templates
4b4eca1 yocto-bsp: Get rid of 'strange' filenames in powerpc templates
debb440 yocto-bsp: Get rid of 'strange' filenames in mips64 templates
4b82dab yocto-bsp: Get rid of 'strange' filenames in arm templates
6a10332 yocto-bsp: Get rid of 'strange' filenames in mips templates
37a6aff yocto-bsp: Get rid of 'strange' filenames in x86 templates
cac5446 yocto-bsp: Get rid of 'strange' filenames
ed99aee yocto-bsp: Add a processing pass to get rid of 'strange' filenames
8657c2f serf: readded md5sum
456ea67 gsettings-desktop-schemas: remove
87c310c npth: npth needs pthread in some cases
7ae7964 babeltrace: Update to 1.2.4
40304fc procps: Upgrade to 3.3.10
6bcd295 python-pycurl: build docstrings to fix rebuilds
b570d90 valgrind: update to 3.10.1
c72bada apr: avoid absolute paths for grep
bcc18fe midori: update to 0.5.8
b9001b6 cpio: fix bug CVE-2014-9112 for cpio-2.11
8018f61 cpio: fix bug CVE-2014-9112 for cpio-2.8
adb8c0d libxcb, xcbproto: upgrade to version 1.11
ae7bfb2 autoconf: disable checking for emacs
93f3754 bluez5: support experimental through PACKAGECONFIG
360064a bluez5: add a package for tools left in the build area
756cb16 bluez-hcidump: select provider as bluez4 or bluez5
74d4a5c python3-core: Fix minimal python3 install
2b945a9 python: add python-codecs runtime dependency for python-json
3499544 python: fix ssl import error
7f7d3b7 gstreamer1.0-libav: specify proper cross-prefix
acfb298 xorg-xserver: Upgrade to 1.16.2.
993989f mesa: Upgrade to 10.3.4.
fe4aa1a dtc: don't use autotools as this doesn't use autotools
5168672 distro/poky: Add Debian 8 (Jessie) as sanity tested
ec6377b bitbake: bitbake-user-manual-metadata.xml: Updated do_package_write example
d5a808d bitbake: bitbake-user-manual-metadata.xml: Added [eventmask] flag information.
1aae447 bitbake: runqueue: Fix 100% cpu use after keyboard interrupt
eb2ea6f bitbake: data: Handle BASH_FUNC shellshock implication
9c02ad9 bitbake: event: fix resetting class handlers object
c1ef10a bitbake: event: add a means of filtering events internally
eb0a6fc bitbake: fetch2: add means of disabling SRC_URI checksums
cde2848 bitbake: utils: add exec_flat_python_func()
8ff0840 bitbake: bitbake-user-manual: Updated copyright to 2015.
3a17209 dev-manual: Added link to ptest wiki page into Ptest section.
8165210 bsp-guide: Fixed ambiguous sentence.
400cb14 ref-manual: Created form for context images for variables
56d0995 ref-manual: Added XSERVER variable description to the glossary.
6a57cb1 dev-manual: Added more info to mulit-machine builds section.
117c9b4 dev-manual: Edits to the multi-machine builds section.
81fb49b ref-manual: Added info strings for variables in glossary.
5f4050f dev-manual: First draft of "multi-builds" section.
146d4bb ref-manual: WIP - Edits for the speed section.
62a67c8 ref-manual: WIP - New section on speeding up builds.
b813bde qemu/libc-package: Fix qemu option handling
da53141 libnewt: set CLEANBROKEN
764e08b libdrm: Upgrade to 2.4.58.
7930902 bzip2: use subdir SRC_URI param instead of adding tasks
9a79319 tcmode-default.inc: use GCCVERSION for gcc-source
0ca237d default-distrovars: add gcc-source recipe to the GPLv3 whitelist
450651b gcc: stub do_fetch instead of removing it
3d1199c cwautomacros: stub do_configure to avoid cleaning
814ad79 gnome-doc-utils: set CLEANBROKEN
a1abb63 autotools.bbclass: respect CLEANBROKEN
55db877 base.bbclass: fix CLEANBROKEN logic
bdadf2f coreutils-native: don't install groups
997fb34 gzip: fix MakeMaker issues with using wrong SHELL/GREP
984e17d lzo: add debian patch for alignment issue
3cbe382 util-linux: add switch_root to alternatives list
5e21592 Revert "busybox : fix do_compile failed on qemumips when DEBUG_BUILD (ICE)"
853e76f8 openssh: fix using the original config files in srcdir
615fb3b package_manager.py: fix arguments to string format
9fc63c5 eglibc: modified option-groups.h generation
0935937 mesa-demos: Move util to the front of the SUBDIRS variable.
ab4ed9c glew: Additional fix for generation of glew.pc.
95fcc67 image.bbclass: whitespace
d3b221d image.bbclass: remove comment that readonly only works for sysvinit
07f7764 qt4: disable webkit for mips64 n32 temporarily
8403b75 Revert "qt4*.bbclass: disable build qt on mips64 with 64 bits userspace"
05f206d bootchart2: fix to find collector correctly in case of multilib
845fc6f systemd: add PACKAGECONFIG for 'manpages'
8729809 libxslt: create wrapper to avoid host system referencing
8ad1d1d kernel-yocto.bbclass: fix shell syntax error
7d59e19 gnutls: disable tpm
93bf97b powertop: update version number from 2.6.1 to 2.7
4de97f7 gstreamer1.0-plugins-bad.inc: Disable cocoa on configure
60d504b cmake: supply CMAKE_AR in toolchain file
54d0203 valgrind: Upgrade to 3.10.0
ab70595 weston: fix plugin location in FILES
dec0b0f dbus: don't use PTEST_ENABLED as recipe doesn't inherit ptest
6b58ddb python: remove spurious nativesdk dependency
4835629 python: ensure all of Python is installed in nativesdk
bf0ec70 yocto-bsp: Add mips64 support
0cc9a12 yocto-bsp: Update templates to 3.17 kernel
4fa0f0c meta-yocto/distro: Updated SANITY_TESTED_DISTROS.
a862bf0 upstream_tracking.inc: update entries for dbus
9315a2b bitbake: bitbake: Update to 1.25.0 as development version after release
b92ec90 bitbake: data: rename defaultval to _defaultval
1332298 gdb: disable Guile
fcd72aa attr: use EXTRA_AUTORECONF to disable autoheader
8a21eee bash: use EXTRA_AUTORECONF to disable autoheader
1ecad61 toolchain-script: Add support for ccache builds with the SDK
1a46946 libpam: avoid overwritting editable files during package updating
b4f4d0f initscripts: avoid overwritting editable files during package updating
535afd4 base-files: avoid overwritting editable files during package updating
5007319 package_manager.py: check the result of create_index
5030c7f compress_doc.bbclass: support update-alternatives
887ffa0 compress_doc.bbclass: improve manual file detection
97d5b99 metadata_scm: Fix crash due to uncaught python exception
496a793 serf: fix 'ccache' builds
ec47811 package.bbclass: Create empty key/value if not there for shlib_provider
35e0a3e resolvconf: add fixes for busybox and make it work
bc9adc1 pseudo: remove older version and patches
85c4761 boost: Upgrade to 1.57
2f7c9fa npth: Upgrade to 1.1
2a7b875 babeltrace: Upgrade to 1.2.3
bcff2a7 curl: Ugrade to 7.38
49329f4 connman-gnome: fix dbus interface name
1654f38 dbus-glib: Upgrade to 0.102
89a8e1c dbus-test: Upgrade to 1.8.10
6e0f74a dbus: Upgrade to 1.8.10
ec6aeea libnewt/libnewt-python: upgrade to 0.52.18
4b938a6 cracklib: upgrade to 2.9.2
f821566 gcc: Rework shared work
893f9b2 bitbake.conf: remove internal flags from BB_SIGNATURE_EXCLUDE_FLAGS
77eebcc scripts: don't skip defaultval
e89a5d0 uboot-config.bbclass: don't skip defaultval
cd90414 base.bbclass: don't skip defaultval
daeb4a4 sanity.conf: Update to require bitbake 1.25.0 as minimum version
b863141 package_regex.inc: Update REGEX'es in order to find upstream versions correctly
2fc06a1 bitbake: cooker: Allow featureset in error state
b585c4b bitbake: fetch/wget: latest_versionstring clean improvments minor
0ce833d bitbake: tests/fetch: Update wget latest_versionstring cups case
158aee7 bitbake: fetch/wget: latest_versionstring remove newuri set because is previous set
75b82b0 bitbake: fetch/wget: latest_versionstring add support for search in RAW html lines
aa35076 bitbake: fetch/wget: latest_versionstring remove unnecessary usage for name in version comparision
4b29329 bitbake: fetch/wget: latest_versionstring improvments in searching
af47f14 bitbake: fetch/wget: latest_versionstring add package_custom_regex_comp
cd40af6 bitbake: fetch/wget: Improve REGEX_URI handling
a7bdd0e bitbake: fetch/wget: _init_regexes rename variables to be more consistent and move dirver_regex into it
35b7089 bitbake: fetch/wget: latest_versionstring create _init_regex method for have one place when regex'es are defined
6cecdd1 bitbake: toaster: remove the word 'project' from layers and machine
fee87cd bitbake: toaster: release name consistency
af51fb0 bitbake: toasterui: Compatibility patch for daisy and dizzy
dc1be9c bitbake: toaster: fix padding of build notifications
c31f309 bitbake: toaster: make 'latest builds' section consistent across pages
be2475b bitbake: toaster: fix errors and warnings display
126bca4 bitbake: toastergui: new project page
5790337 bitbake: toaster: fix loadconf path calculation
d9644d4 bitbake: toasterui: fix layer identification for managed builds
af1f9fd bitbake: toaster: display Toaster exceptions and other fixes
707a960 bitbake: toastergui: do not show project info in interactive mode
4c82dfb bitbake: toastergui: update layer search criteria
152e2d9 bitbake: toaster: base Only show New Build button when there are > 0 projects
49ac18d bitbake: toaster: use http proxies to fetch data
2192445 distrodata_class: checkpkg make usage of latest_versionstring methods in bitbake fetcher
fd9fc49 gcc-4.8: Drop unused patch
ef7ea38 qemu: Add missing wacom HID descriptor
c5ebca2 toaster.bbclass: use the openembedded-core name
e2cf2d1 toaster: naming and description changes
99262b6 toasterconf: fix localpath values
0bc03af maintainers.inc: update maintainers
ab63640 gdk-pixbuf: use ptest-gnome
f363c20 useradd.bbclass: set PSEUDO_PASSWD consistent with root directory
b0b468d bitbake.conf: pseudo fall back to last-resort passwd files
e96ac60 pseudo: provide fallback passwd and group files
4ad0821 pseudo: default --without-passwd-fallback
d1434d9 image.bbclass: search both rootfs and native staging for passwd files
835f5c8 pseudo: support multiple search directories in PSEUDO_PASSWD
d2b8576 pseudo: support --without-passwd-fallback configuration option
16e8b40 oeqa/runtime: Added some new filters for the log parser Including custom filters for edgerouter, minnow and jasperforest.
3857f24 procps: install symlink under /etc/sysctl.d in case of systemd
2e13f27 elfutils: upgrade to 0.160
fa234ef bind: clean host path in isc-config.sh
fc5ad52 e2fsprogs: clean host path in compile_et, mk_cmds
692950e bash: clean host path in bashbug
3fc5cfe gst-ffmpeg: fixes for CVE-2014-8548 and CVE-2014-8541
a2b7b6d opkg-utils: Update SRCREV
417ce46 opkg: Update patch status
0ee83d7 opkg: Upgrade to v0.2.4
11d9f02 libpam: Stop a QA WARNING when building multlib version
ce8c56f python3: several fixes for cross compiling
4a7446e cronie: Added default crontab
b4ba8d6 gnome-desktop: removed gnome-desktop recipe
44a8677 gnome-common: Upgrade to 3.14.0
4d9172d cronie: Upgrade to 1.4.12
1379659 nfs-utils: Upgrade to 1.3.1
16edf5c iproute2: upgrade to 3.17.0
2169801 libpcap: upgrade to 1.6.2
273572d netbase: upgrade to 5.3
89108b4 serf: 1.3.6 -> 1.3.8
322ba17 perl: fix PERL5LIB settings
67261e2 dtc: old SRC_URI died, changing to new working one
49547a6 toaster: add toaster layer configuration files
ae7c1e5 toaster: add toaster layer configuration files for meta-yocto
39bace0 bitbake: toaster: do not show target if target name is empty
f3ffeba bitbake: toaster: fix dependencies dialog layout
57b8ccc bitbake: toaster: add no results state to all layers page
2066b9b bitbake: toaster: Tiny refinements to the new build button dialog
3530316 bitbake: toaster: project page remove additional tooltip for Change pencil
f26c3cd bitbake: toaster: Add New Build Button feature
5b8a62d bitbake: toaster: libtoaster: Add getProjectInfo utility function
fa9206e bitbake: toaster: Create libtoaster.js with some utility functions
0b6859c bitbake: toastergui: layer name correlation
5b0616a bitbake: toaster: skip virtualenv when searching for django apps
2f3e40c bitbake: toaster: fix file name collision
c09e561 bitbake: bitbake-worker: exit normally when SIGHUP
7d559fc gtk+: drop part of patch adding useless file
69e388b xmodmap: drop already applied patch
0ed1983 cmake: drop already applied patches
4d67727 openssh: drop already applied patch
bc41835 cups: remove unrecognised option
3092f33 spdx.bbclass: improved error handling and code cleanup
0f5d0e9 postinst-intercept: rename recipe for nativesdk only
9ca0777 toolchain-shar-template.sh: fix the text files in the top dir
71df8a4 shadow-securetty: add ttyAM[0-3] serial ports
01e9ca3 bind: use PACKAGE_BEFORE_PN instead of PACKAGES_prepend
c360dcb gcc-4.9: fix the compile failure of 'defaults.h' not found
3e813f4 ethtool: Upgrade to 3.16
aa2c154 parted: upgrade to 3.2
8aa5f17 byacc: Upgrade to 20141006
bd45e51 tcl: Upgrade to 8.6.3
7ce2293 lsb: update RDEPENDS for broken-out util-linux-getopt
887c75a default-providers.inc: define VIRTUAL-RUNTIME_getopt
92afbae util-linux: break out util-linux-getopt
318730b rpm: fix the rpm addsign function
07a31ed python: Fix CVE-2014-7185
587b28b ghostscript: upgrade to 9.15
58bee16 systemd-serialgetty: Disable the carrier detect requirement for serial consoles
3a3e5ab sysvinit-inittab: Disable the carrier detect requirement for serial consoles
7bc2e2a toolchain-scripts.bbclass: Export KCFLAGS to ensure sysroot is provided
9544db4 xkeyboard-config: Inherit gettext
419a37e bluez5: fix QA error from configure option
fd338cf linux-firmware: upgrade to git rev 0e5f637
cdbcadf bluez5: upgrade to 5.25
9f2732b sbc: upgrade to 1.3
d681466 wpa-supplicant: upgrade to 2.3
3c7cf5d bitbake: bb.codeparser.py: Remove reference for oe.utils.contains
d895e96 bitbake: depexp: use stateForceShutdown instead of stateStop
edaeb89 bitbake: cooker.py: fix loginfo op being set to an invalid value
c5d19aa bitbake: toastergui: fix XSS injection points in projects page
326d5b1 bitbake: toaster: importing angular service
76f1800 bitbake: toastergui: Silly UI fixes
3a338a2 bitbake: toaster: Replace bootstrap js with the correct version
7b65fa9 bitbake: toastergui: changes for the Project page, round 3 of reviews
abf7551 bitbake: toaster: separate the load configuration file command
6f0496e bitbake: toaster: Update filter count labels when Add/Remove layers
6cfd8aa bitbake: toaster: Fix the table data so that it matches the column order
42afeb4 bitbake: toastergui: Various fixes for projects, layers and targets page
46f1fbe bitbake: adding angular-animate plugin
78e3a78 bitbake: toaster: update Release model to pinpoint to specific Branch
990fb9e bitbake: toaster: SQL query logging
3e9fc8d bitbake: toasterui: performance improvements
0ca70ce bitbake: toaster script: webport option and other improvements
baa1082 docbook-xsl-stylesheets: fix do_configure typo
15d7937 tzdata: update to 2014j
42444d3 tzcode: update to 2014j
5638e1f strace: add libunwind dependency
bb213d8 meta-environment: Fix config-site with a multilib config
8c240ad vala: upgrade to 0.26.1
92dd727 opkg-utils: Update SRCREV
2decbd0 nss: Upgrade to 3.17.2
7abfdd2 documentation.conf: add missing tasks / variables
2cdcd4b classextend: Do not extend for that already have multilib prefix
c5f8996 systemd: add PACKAGECONFIG for 'audit'
12fe05c apr-native: Set CONFIG_SHELL to /bin/bash
5c69e44 gptfdisk: add 0.8.10+git version
35c2ff7 qemu: remove task sanitize_sources
5c23ec6 u-boot: update to version 2014.07
2abfdcf systemd: avoid using system-auth
e9b729d libtool: remove build host paths from installed libtool
507947a beecrypt: add option --with-dev-dsp
c0dafd3 scripts: use '/usr/bin/env' in shebangs with python
3e06883 bitbake: progressbar: use '/usr/bin/env' in shebangs with python
6bb241a bitbake: fetch/wget: Add latest_versionstring method
7587877 bitbake: fetch/git: Add latest_versionstring method
95c7b39 maintainers: Update per replies on OE-Core
3c741a8 oprofile: 0.9.9 -> 1.0.0
77d62cc python-pygtk: Clean up incorrect "fix"
fb4d7ec populate_sdk_base: improve POSIXLY_CORRECT compat
a899e13 tcl: Upgrade to 8.6.2
24ad278 strace: Upgrade to 4.9
bfe16db byacc: Upgrade to 20140715
a485eb8 libpcre: Upgrade to 8.36
4d9771a lz4: update to version r123
59283bd pinentry: update 0.9
da6a4f6 ncurses, busybox, cml1.bbclass: Fix menuconfig display corruption
8f9ed24 nfs-utils: change owner/group of directories in do_install
5fe3954 perl: set the perl libraries search path
b3ea9b6 apt: Add missing running depency debianutils
9e3c886 debianutils: Add recipe from meta-oe
1d19791 package_manager: DpkgPM fix populate_sdk
ed3e253 image-buildinfo.bbclass: new class, writes build information to image
c582375 watchdog: Upgrade to 5.14
f5ecb75 man-pages: Upgrade to 3.75
739100c lsbinitscripts: Upgrade to 9.56.1
b166d5c less: Upgrade to 470
8523fd5 hdparm: Upgrade to 9.45
2ce92ad help2man: Upgrade to 1.46.4
0aca644 cups: Upgrade to 2.0.0
b230663 at: Upgrade to 3.1.16
2fa79a9 resolvconf: Upgrade to 1.76
1ec6ea1 libxkbcommon: Upgrade to 0.5.0
afd7e24 systemtap: Upgrade to 2.6 Git Version
58c76d1 libksba: Ugrade to 1.3.1
813718c libgcrypt: Ugrade to 1.6.2
ddc5abe liburcu: Ugrade to 0.8.5
5ff390f npth: Upgrade to 1.0
54cedb1 btrfs: Update to 3.17 version
78f6f53 libcap: Upgrade to 2.24
0ee5eb2 gcc: Fix intermittent failures during configure
b78e3e3 gdb: 7.7.1 -> 7.8.1
593f14b package/prserv: Merge two similar functions into one
d01b8d5 base: Make PRINC warning an error
cb4b12c perl: Enable rebuilds to account for configuration changes
e6cbda6 base: Improve makefile clean handling, introduce CLEANBROKEN variable
2020ba7 ltp: update to 20140828 release
45bb9e3 profile-manual: Updates to the LTTng Documentation section.
0d3e685 ref-manual: Fixed typo in the PACKAGE_EXTRA_ARCHS variable.
9104c1c dev-manual: Fixed broken link to the allarch class.
2f17b2c bitbake: data_smart.py: fix variable splitting at _remove mechanism
01a61c8 bitbake: siggen: Fix shared work checksum mismatch/rebuild issues
2db07ca bitbake: siggen: Add computed hash code to verify hash computation to dumpsig
636dcb8 bitbake: siggen: Ensure we output if the ordering of runtaskdeps changes
695d254 readline: Patch for readline multikey dispatch issue
7bd03ac bitbake: toastergui: fix invalid build url usage
fc75011 bitbake: toasterui: improvements in data reading
7105d44 bitbake: prserv: Use WAL mode
5dca71b bitbake: bitbake: Make printed 'runqueue' be consistently capitalized
25e3e57 bitbake: bs4: Add beautifulsoup 4.3.2 to assist the fetcher
bc6330c bitbake: fetch2/git: Allow other namespaces than refs/heads to be searched.
5fa2ce0 image_types.bbclass: whitespace and reorder
ad6fd2c weston: update to version 1.6.0, add libinput PACKAGECONFIG
ab3086f wayland: update version to 1.6.0
24dc5f4 libinput: add 0.6.0 version
8569e10 nss: Upgrade to 3.17
c1809c4 findutils: Upgrade to 4.5.14
1888739 vala: Update to 0.24.0
0d9a071 texinfo: integrate texinfo 4.8
c60fa73 insane.bbclass: add condition for build-deps
49d22ac gst-plugin-bluetooth: remove systemd service file
ddac00a qemu: upgrade to 2.1.2
c3d0cd9 psplash: update to latest git version
b7ae852 gcc: backport two patches to fix ICE in dwarf2out_var_location
40b3888 connman: upgrade to 1.26
a4db2d9 wget: upgrade to 1.16
07e8ae7 acl: add acl dependency to acl-ptest
6e055bb toaster.bbclass: read elapsed time from the stats file
6839a39 perl: Fix bug when installs SDK in custom directory
b0bbdf2 packagegroup-self-hosted: add git-perltools
e20a85d subversion: 1.8.9 -> 1.8.10
d19152d kexec-tools: 2.0.7 -> 2.0.8
e972fcf mdadm: 3.3.1 -> 3.3.2
f54fc65 python-pycurl: 7.19.3.1 -> 7.19.5
d38da0f libunistring: 0.9.3 -> 0.9.4
c4c7b0f nasm: 2.11.05 -> 2.11.06
0add8ab buildtools-tarball: package all of Python
7cde98f curl: Security Advisory - curl - CVE-2014-3620
9bfd0de poky-tiny.conf: remove inherit of blacklist
2380ebe bitbake: prserv/serv: Ensure sync happens in the correct thread
51f6cb0 mega-manual.sed: Updated to support the 1.8 release.
1484e62 documentation: Updated the manual revision history tables.
c2d6feb poky-ent: Updated variables to support the 1.8 release.
27754b2 docbook-xsl-stylesheets: add perl to RDEPENDS
f948dbf rootfs.py: tweak inner warn message catching
944fb2f python-smartpm: report warn rather than error during install with --attempt
fe244b2 man-pages/shadow: resolve man pages confliction
1c8040ef shadow: enable support for subordinate IDs
18f6c12 iproute2: backport a patch to make adding vxlan link success
8e14697 python-pygtk: Restore pkg-config file
69dd116 pciutils: Fix multilib header conflict - pci/config.h
72964fc python-2.7.3:remove BOM insertion code
d6fd303 image_types.bbclass: Make ubi depend on ubifs
8c051c8 license.bbclass: canonicalise the licenses named with 'X+'
014654f curl: Security Advisory - curl - CVE-2014-3613
9adfa08 kmod: fix debuginfo is missing in shared library
028a394 systemd: don't add files and dependencies from units Conflicts
365947e package_manager: Fix BAD_RECOMMENDATIONS for opkg
9e07fbb bind: fix to use correct environment file in service file
56fa8cd udev: fix uevent-helper disable
7e8ca6f BusyBox: Fixing broadcast address is not fed and rightly initialized
160b53b ldconfig-native: fix a endian-ness bug
a60af9a xinetd: add systemd unit file
0d339e2 gdb-cross: build with python support
41ae205 systemd: don't move libgudev around, it breaks libgudev-1.0.la
8619d93 multilib.bbclass/package_manager.py: fix <multilib>-meta-toolchain build failure
99b0f38 opkg: fix remove pkg with --force-removal-of-dependent-packages failed
b19d014 tzdata: update to 2014i
a5abc53 tzcode: update to 2014i
2eed76b mtd-utils: Fix alignment trap triggered by NEON instructions
bfd2afa python3: do not replace ccache in the middle of a path
a64e37a subversion: Security Advisory - subversion - CVE-2014-3528
514a91d subversion: Security Advisory - subversion - CVE-2014-3522
d962e45 mc: Update patch status
facfeb0 multilib.bbclass: fix incorrect TARGET_VENDOR in multilib image
150f0f5 classes/image: remove obsolete MULTILIB_VENDORS
f19b4e9 bitbake: bitbake: clarify startup message
24dab21 bitbake: toaster: update web vcs fields for layers
298c3d5 bitbake: toastergui: provide download file capability
2837b11 bitbake: toaster: change startup parameter passing to avoid race
a066071 bitbake: toaster: improvements for admin pages
97c0beb bitbake: toaster: use modified validators for git url fields
a1f7a09 bitbake: toaster: changes to the landing page
c7382db bitbake: toastergui: protect variable value reads
477587b bitbake: toastergui: refactor objects get in views.py
1b109c7 bitbake: toastergui: project edit capabilities in all layers page
960580c bitbake: toaster: fix Project page in order to trigger builds
1a463ab bitbake: toaster: fix layer source update code
b27fc6f bitbake: toaster: we add static copies of AngularJS and related libraries
f16f434 bitbake: toastergui: update breadcrumb in analysis pages
4f1390c bitbake: toasterui: save build id in build request on first chance
14e5b27 bitbake: toastergui: Show failed tasks in the build dashboard
324b277 bitbake: toastergui: Tiny change to help text
754f3e7 bitbake: toastergui: Remove extra <div> from build dashboard
ceb1139 bitbake: toastergui: Remove sorting from "Size over total" column
719f5e4 bitbake: toastergui: Fix blue highlight for failed tasks
927943b bitbake: toastergui: Fix reverse dependencies tab for packages included
7aaedc2 bitbake: toastergui: Add missing task descriptions
93835e7 bitbake: toastergui: Amend show rows options
daad086 bitbake: toastergui: Fix help text in packages 'Reverse runtime dependencies' tab
83edc57 bitbake: toasterbld: update checksettings command
d485279 maintainers.inc: Updated with some ownership for Aníbal Limón and Alejandro Hernandez.
7fb6b0f elfutils: fix elf_cvt_gnuhash
70ad050 which-2.18: Use foreign strictness to avoid automake errors
e962f99 hicolor-icon-theme: Deal with "make clean" breakage
b900a81 gnu-config: Deal with "make clean" breakage
d5881b7 wpa_supplicant: Improve rebuild handling
c1f4b1f cmake: Try and improve cleaning of builds when B==S
6bd2d9d base.bbclass: Enable using 'make clean' for rebuilds
444ae98 autotools: Use make clean for builds not supporting B != S
fcf5608 wic: Update bootimg-partition to use bootimg_dir
42d0334 wic: Remove special-case bootimg_dir
3840061 Revert "wic: set bootimg_dir when using image-name artifacts"
d1f8b8f wic: Update the help text to include -D (--debug)
005d81d wic: Use overhead factor when creating partitions from rootfs directories
334f83a wic: Don't allow mkfs to fail silently in partition command
87dec81 bitbake: buildinfohelper: Make sure we use the orm defined value for loglevel
c97194b image.py: Fix error in graph sorting
ef32b9f multilib.conf: set MULTILIB_GLOBAL_VARIANTS conditionally
55d66ed mklibs: Fix loader for mipsel
b8740fd glibc: Delete ldconfig when USE_LDCONFIG is not set
6476f0b rm_work: Speed up rootfs/populate_sdk removal
678e879 gcc: poison default sysroot path
4faca22 ref-manual: Updates to the migrating to YP 1.7 section.
a0aeeff dev-manual: Updates to "Performing Automated Runtime Testing"
0761eba ref-manual: Added some new test variables:
9908d9e ref-manual: Updated list of supported distros.
cf82c67 bitbake: prserv: don't wait until exit to sync
2794f91 bitbake: utils.py: don't use len() for truth value testing.
f5b9b38 bitbake: fetch2: add .lz compression support
dacc4ce nativesdk-cmake: Adjust toolchain paths dynamically
ce339dd poky-lsb: Set LTSI as base kernel for LSB
0cfb89b poky.conf: add Debian 7.7 to SANITY_TESTED_DISTROS
dd376e7 local.conf.sample.extended: update for RPM_PREFER_ELF_ARCH
11dafe8 kernel-yocto: fix branch validation for AUTOREV, non machine_meta kernels
2f93628 linux-yocto/3.17: v3.17 release and config
cdfe99f linux-yocto/3.10: 8250/8250_dw: fix compile failure due to stable/Yocto conflict
fc0a068 unifdef: remove fork, package upstream
ac638b7 native.bbclass: use BUILD_* variables
9f33c28 rpm: realpath is required before expanding _dbpath in chroot
4c222d3 kernel.bbclass: Create modules directory even if there is no modules installed
b05755c libxml2: fix CVE-2014-3660
0de79a7 nfs-utils: fix start-statd
38f02f1 cross-localedef-native: provide SRCREV_FORMAT
1a04850 archiver: fix truncation of src_rev
caebcda libaio: fix for mips64
c908f5e systemd: fix libidn floating dependency
c981ebb grub: add cmdpath to grub configuration file
f348071 spdx.bbclass: improved stability, fixed SPDX compliance issues. Changes are reflected in licenses.conf.
8882eaa default-versions.inc: match version of db and db-native while "AGPL-3.0" in ${INCOMPATIBLE_LICENSE}
7a206eb libtool: Extend fix-final-rpath.patch
12769d7 liburcu: revert ARM GCC blacklist commit
5269dfa nfs-utils: fix a Gcc undefined behavior
d7cb96f python-smartpm: Add checking for "rpm-ignoresize" option
fd50427 systemd: Use ${ROOT_HOME} instead of /root
ad065f9 ref-manual: Minor edits to variables.
78c5c17 ref-manual: Cleaned up wording in glossary for "inheriting"
38c853a ref-manual: Applied review edits for new classes and variables.
01f2e75 ref-manual: Added new uninative class.
1ea92a2 ref-manual: Added gummiboot class and four supporting variables.
82638ca ref-manual: Added copyleft_filter class description.
43b8f88 ref-manual: Added texinfo class and two new variables.
369f8d6 ref-manual: Added buildstats-summary.bbclass section.
41e7dd2 ref-manual: Added BINCONFIG variable and binconfig-disabled class.
567d9af ref-manual: Added ptest-gnome.bbclass section.
12fb49e ref-manual: Added compress_doc class and DOC_COMPRESS variable.
924da20 build-appliance-image: Update to dizzy head revision
f0a2a2f ref-manual: Updated the populate_sdk_* class
a424beb profile-manual: Scrubbed and fixed user-input formatting.
d6e89e7 kernel-dev: Scrubbed and fixed all user-supplied input formatting.
5f61389 adt-manual: Scrubbed and fixed user-supplied input formatting.
2eaf7e6 ref-manual: Scrubbed for variable (user) input.
b96378e ref-manual: Updated the introductory section list manual overview.
31d0bb2 ref-manual: Minor edits for review on new QA checks.
e5255cc ref-manual: Added [build-deps] QA error message.
d5d81af ref-manual: Added [file->rdeps] QA error message.
41173c8 ref-manual: Added new build-deps QA check to insane.bbclass.
3305c26 ref-manual: Added file-redeps QA check to the insane.bbclass.
8998871 ref-manual: Added new do_package_qa task entry to tasks chapter.
3c29495 ref-manual: Another change to the autotools class.
360ad12 ref-manual: Updated the autotools class.
e9ecf3f dev-manual, ref-manual: Updated 1.7 migration section with review comments
8eb706a ref-manual, dev-manual: Applied migration review edits.
323929d ref-manual, mega-manual: Updated build history figure
d8e41e8 ref-manual: Added new migration section for the 1.7 release.
a51b755 ref-manual: Updated the build history section for build-id.txt
ba0483c dev-manual: Updated the list of linux-yocto kernels
3d1820b ref-manual: Added cross-reference.
4b03b71 ref-manual: Updated the module_autoload variable.
c2e2eb7 ref-manual: Added new KERNEL_MODULE_AUTOLOAD variable.
d6c0a7d ref-manual: Added new KERNEL_MODULE_PROBECONF variable
55169b9 ref-manual: Updated module_conf variable
75fda35 gst-ffmpeg: Security Advisory - ffmpeg - CVE-2013-0869
3503fe8 gst-ffmpeg: Security Advisory - ffmpeg - CVE-2013-4358
e17e815 mtools: fix broken /usr/bin/lz
38968de gnupg_1.4.7: add package config libusb
5278071 openssl: upgrade to 1.0.1j
bacc657 readline: Security Advisory - readline - CVE-2014-2524
7a9f5c9 gnupg: CVE-2013-4242
754288c sstate.bbclass: Fix up white space lost in last commit.
0d761fc sstate.bbclass: specify func dirs for sstate_hardcode_path
8a475be file: add wrapper to nativesdk-file
a9dc143 openssh: avoid screen sessions being killed on disconnect with systemd
f95d3fc python: force off_t size to 8 to enable large file support
9c218a3 wic/bootimg-pcbios.py: checking the existance of syslinux
ccf5a4d build-appliance-image: Update to dizzy head revision
ef3755b bitbake: fetcher: fix getVar call due to incorrect argument datatype
0fb3552 gcc: backport patch for gcc bug 61144
c0b0f69 package_deb: skip pre/postrm scripts on upgrade, write only one shebang
6bc86e0 mesa_git.bb: Fix fetch and license errors.
0172cde build-appliance-image: Update to dizzy head revision
b2f1250 package_do_shlibs: Look for provider in the path thats in shlib_provider dictionary
e495d9c build-appliance-image: Update to dizzy head revision
f85455a build-appliance-image: Update to dizzy head revision
448549b ncurses: enable-pc-files requires PKG_CONFIG_LIBDIR existed
b934ba1 Revert "meta-yocto: make 3.17 the preferred qemu kernel version"
3e991ee ref-manual, template: Permalinks for QA errors and warnings
6f32f3c ref-manual: Fixed grammar use in "Image Features" list.
07de72c glibc: remove bad patch snippet that eglibc forward ported
f8d5bfb toolchains-scripts: Add support for target environment scripts
ea8a7c5 sdk.py: fix write target sdk manifest failed based on ipk
b718465 wpa-supplicant: fix for rebuild
dd79603 git: fix do_install error
afeb590 avahi-ui: fix for building systemd with multilib
08a86f8 nss-myhostname: skip it when systemd
90f3709 rpcbind: make service socket activated
d3a5658 sstate.bbclass: split the too long line
a200134 sstate.bbclass: the second bb.fatal not work
d8b5b26 valgrind: Enforce 30 seconds limit for each test
0aedb38 boost: fix build when ${PARALLEL_MAKE} contains '-l'
0cac199 dosfstools: place files in /sbin, not in /usr/sbin
b6b8029 python-pygobject: add libffi to DEPENDS
18b42b8 neard: update service file
3ce139b xserver-xorg: update patch to match upstream
1d00f3e oe-git-proxy: use SOCKS4a instead of SOCKS4
0843260 gnome-desktop-testing: Fix build on uclibc
c9ec325 curl: add PACKAGECONFIG option to use libssh2
cc2add2 xserver-xorg: report DRI3 and Present modules as present
6334380 latencytop: Creates x11 PACKAGECONFIG.
6ec3a0b libassuan: fix for rebuild
ddf7d2b meta-toolchain-qt: Fix environment population
ee0ab90 toolchain-scripts.bbclass: Allow sourcing of subscript for environment
505a6b6 bitbake: fetcher: fix BB_STRICT_CHECKSUM datatype check
09a51b9 package_ipk.bbclass: Fix SRC_URI whitespace handling
fc37a44 bash: update and CVE-2014-6278 fix
8ef4ded linuxdoc-tools-native: Makedoc.sh uses /tmp and fails w/ noexec mount
533a852 package.bbclass: Reverse runtime symlinks should be tied to package generation
5c0b727 LTP - realtime tests - fix bad robust mutex conditionals
fbcab6e LTP - realtime tests - fix bad PI mutex conditionals
94d2fea bash: Upgrade bash to latest patch level to fix CVEs
be2cf13 pseudo*.bb: update to pseudo 1.6.2
07ad00e cross-canadian: Disable the packagedata stamp-extra-info
c8b9996 meta-environment: Deal with machines which change TARGET_OS
64eca27 gcc-runtime: Add linux-gnuspe symlink to fix c++ headers
3224472 kernel.bbclass: enable a link for external module building
ff89dfb kernel: Added bc-native as DEPENDS
63a0781 adt-installer: Fix to work with meta-environment changes
6c3d119 documentation: Updated release date for manual rev tables.
e90f4a1 ref-manual: Minor edits to "Image Features" section.
0389b3b uninative-tarball: Update eglibc -> glibc
54a755b oeqa/dmesg: Whitelist usbhid failures
f246933 adt-installer: Set INHIBIT_DEFAULT_DEPS
5367855 build-appliance-image: Update to dizzy head revision
6a56492 meta-yocto: make 3.17 the preferred qemu kernel version
4a3e3db yocto-bsps: update h/w reference boards to the latest 3.14 SRCREVs
399192d oeqa/parselogs: Ignore qemu usbhid errors
0eeba11 gtk+3: Add missing MLPREFIX
5c16dcf meta-environment: Set libdir correctly to fix PKGCONFIG entries
ef44f39 apt: apt-key binary was not being installed, including it in the installation
319eb60 perf: fix undefined pr_* routines
96c46db linux-yocto/3.17: update to v3.17-rc7
f351b74 linux-yocto/3.14/3.17: allmodconfig/allyesconfig build fixes
1e3a3cd linux-yocto/3.14: revert BFP feature, and fix intel-common -rt
ce9f31a linux-yocto/3.14/3.17: menuconfig and cryptodev
448c1fc kern-tools: fix overly greedy path relocations
abf9372 build-appliance-image: Update to dizzy head revision
6d843e6 ref-manual: Edits to the "Image Features" section layout
380ec32 ref-manual: Fixed "debug-tweaks" typo.
328cb8c ref-manual: Updated the "Image Features" section.
4a90871 ref-manual: Updated list of Machine Features shipped with YP.
70faf99 ref-manual: Updated the IMAGE_BOOT_FILES variable.
0369712 ref-manual: Updated the bin_package class.
1fd575f ref-manual: Updated the IMAGE_BOOT_FILES variable description.
609c216 dev-manual: Updated the supported BSP bullet item.
d4cf38d local.conf.sample.extended: Document RPM4 setup
03813f4 perl: Improve sysroot regexp
3956c7b gdb-cross-canadian: Add to sstate whitelist
94503ca gtk-doc-stub: update to latest commit
41b420e mx: remove version from patch directory
58d9c4e rpm: add version 4.11.2
6be3386 python-smartpm: Add patches for rpm4
5ad57f4 rpm5: add python-rpm PROVIDES
c1b5dc2 nss: nss.pc is not target specific
576b8f4 tzdata: update to 2014h
91c2fc9 tzcode-native: update to 2014h
c34775f deb_packaging: Added support for multilib
a08bf9a ltp: Add additional m4 path to autoconf.
4572e4c sstate: Add rpm allarch to overwrite whitelist
ab2fcd2 ltp: add PACKAGECONFIG for numactrl
a032509 squashfs-tools_4.3: modify SPDX_S variable
4211d1b icu.inc: modify SPDX_S variable
6ec2470 db_6.0.30: modify SPDX_S variable
dbf6891 db_5.3.28: modify SPDX_S variable
0d3aac7 spdx.bbclass: Add SPDX-specific source tree variable.
b186c4a oprofile: eliminate git recipe
3b92eb9 rootfs.py: catch inner warn message
ecf0897 alsa-utils: interrupt streaming via signal
78b44ce kernel-yocto.bbclass: Fixup shell condition test syntax error
c81072b lttng-modules: fix build issues with the v3.17 kernel
6a30031 apt: fix for CVE-2014-0478
202ae5a base.bbclass: add SRCREV to do_fetch() hash
78a2c81 staging: Exclude MULTI_PROVIDER_WHISTLIST from do_populate_sysroot
78b2f5a meta-environment: Two critical fixes to unbreak toolchains
b2637ad babeltrace: Add missing bison/flex depensencies.
805f244 tcmode-default: Define PREFERRED_VERSION for binutils-native
c7c24cc boost: fix atomics for armv6
39ca8b4 bitbake: toastergui fix size rendering in dirinfo page
d6709b0 bash: Fix CVE-2014-7169
cab81b3 nss.inc: Fix LICENSE
215e7b9 bash: fix CVE-2014-6271
cf9fbf5 curl: add a PACKAGECONFIG for librtmp
49cbd6a licenses.conf: remove link to deleted License_Audit wiki page
236f382 meta-toolchain-qt: fix up old reference to Nokia and typo
ea8945b qt4: fix bug tracker URLs for patches
d7d028e qt-mobility: fix source URL
0d90e61 man/texinfo: conditionally add gzip/bzip2/xz to RDEPENDS
597b0c0 texinfo: fix QA Error while doc compress enabled
392026a git: add Git perl module to perltools package
576cb35 oeqa/utils: Added filter to LogResults decorator to enforce custom log level.
3ad2f85 sstate.bbclass: update the timestamps after install
38b8126 gnupg: add pinentry into RRECOMMENDS
e9d8cec pinentry: add recipes
c15ed36 dhcp: use ${PN} for SYSTEMD_SERVICES
3028c8e volatile-binds: use ${PN} for SYSTEMD_SERVICE
dc73940 acpid: use ${PN} for SYSTEMD_SERVICE
a7636ec packagegroup-core-standalone-sdk-target: Add libgcov-dev to on device SDK
5761032 gnomebase: fix indentation
6870dff syslog: Change unused variable declaration LOCAL=0 to LOG_LOCAL=1
020f4cb qtdemo-init: Make qtdemo startup correctly
8ff856a perf: fix issue about package splitting
cf558b4 libpam / xtests: remove bash dependency
5948287 gst-plugins-base: fix build failure for x86
a876a2b coreutils: selinux/flask.h should respect to with_selinux
f3e9be3 systemd: disable resolv.conf symlink unless resolved is enabled
5cc5917 sstate: Change overlapping files warning to a fatal error
e92e800 bitbake: prserv/serv: Improve error message when prserver cannot bind to supplied host address
438a508 bitbake: hob: Fix sstate mirrors mangling
8e4e03c bitbake: fetch: Extend testing of subdir unpack parameter and fix
1f4e751 bitbake: fetch: SRC_URI parameter "subdir" does not work for local files
249a0e9 bitbake: monitordisk: don't log when not monitoring a filesystem for inodes
8ac8eca build-appliance-image: Update to dizzy head revision
21df5ec poky.conf: Bump version for 1.7 dizzy release
c84b0c0 bitbake: bin/bitbake: Update to version 1.24.0
9a3781d sanity.conf: Update minimum bitbake version to 1.23.2 due to event changes
88f76f8 ref-manual: document IMAGE_BOOT_FILES
4995908 dev-manual: Added reference to the meta-selinux layer.
33cff3e layer.conf: Mark opkg-utils as ABISAFE for update-alternatives usage
4ebd2e49 update-rc.d/systemd: Remove OVERRIDES dependency
0aed04a layer.conf: Add in useradd dependencies as ABISAFE dependencies
78aeee1 man: fix not support xz/bz2 compression
75d6b2b ltp: make setregid02 be able to pass
c9dbd26 systemtap: disable libvirt
8207c90 beaglebone.conf: add IMAGE_BOOT_FILES
7291691 wic: add sdimage-bootpart kickstart file
6b03fc2 wic: add new bootimg-partition plugin
f24abaa documentation.conf: document IMAGE_BOOT_FILES
7ce1dc1 wic: set bootimg_dir when using image-name artifacts
48ff3fa wic: fix vfat partition sector count only if needed
0b3f477 wic: use IMAGE_EXTRA_SPACE for vfat rootfs
c94d8e9 wic: minor comment update
2cbab45 uninative: Add uninative - a way of reusing native/cross over multiple distros
a94574f bitbake: fetch2/perforce: Use replace (1 line) instead of find (3 lines)
7ca8b65 bitbake: fetch2/perforce: Fix localfile name if labels are used
ff5fba8 bitbake: knotty: Ensure commandline parameters are updated in memres server
b98bd94 irda-utils: remove inherit autotools
177af6e oe-init-build-env-memres: Fix automatic port usage
b65e3e2 linux-yocto/3.14: update to v3.14.19
ca4f364 linux-yocto/3.10: update to v3.10.55
001db84 linux-yocto/3.17: bump to v3.17-rc6
0243bcf linux-yocto/3.17: switch to dedicated 3.17 repository
cef6884 linux-yocto/3.17: update to v3.17-rc5
5b68bcf linux-yocto/3.14: update to v3.14.18 and -rt9
7040b6f linux-yocto/3.10: update to v3.10.54 and -rt55
afdbe31 bitbake: bitbake-worker: Fix bitbake -n
bff185f dev-manual: Added a note to the EXTERNALSRC example about the class
2acf47b dev-manual: Fixed typo in the make races section header.
ab7f117 dev-manual: Added a second EXTERNALSRC example.
79fd7f1 dev-manual: Updated another EXTERNALSRC example.
018c498 dev-manual: Updated EXTERNALSRC example for user-input formatting.
567c1ae ref-manual: Updated RRECOMMENDS variable description.
385f20b poky.ent: Updated the "tbd" name to "dizzy" for 1.7.
d269a45 ref-manual: Added new INHIBIT_PACKAGE_DEBUG_SPLIT variable to glossary.
c7dffc7 yocto-project-qs: Minor edits from a read-thru
b4c03a7 dev-manual: Added some formatting for user-supplied input.
f819f3d dev-manual: General edits to "Common Tasks" chapter.
c2e5449 dev-manual: Review edits for GDB without source
d0dda27 ref-manual: Added GLIBC_GENERATE_LOCALES variable.
9cc019b ref-manual: Added PACKAGE_DEBUG_SPLIT_STYLE variable.
05fabfc oeqa/selftest: Added decorators to buildoptions.py
5ceb02d kernel.bbclass: use one package split for all firmware filename extensions
4f0cbf5 u-boot: cleanup indentation and consolidate .inc file
955bf63 populate_sdk_base/meta-environment: Remove overlap from the two
6523bc1 meta-environment: Fix TARGET_OS problem for ppc
cc58218 gstreamer1.0-plugins-bad: disable libssh2
13d1209 perl: remove unneeded patches in ptest directory
adb3d77 python: obey LDFLAGS
93f7d09 irda-utils: obey LDFLAGS
eb55720 blktrace: obey LDFLAGS for btrecord
6bd98e8 hostap-utils: obey LDFLAGS
3c9bf23 setserial: obey LDFLAGS
5ed0721 ossp-uuid: obey LDFLAGS
e04fdb5 gdbm-1.8.3: obey LDFLAGS
d9ddf29 zlib: obey LDFLAGS for tests
6730378 ltp: Added zip-native as a DEPENDS
533af2d flex: fix the deps for ptest builds
3e6df77 cmake.bbclass : Add support for cmake projects that use .S files.
280b6d0 sstatesig: fix overrides behaviour to remove SIGGEN_LOCKEDSIGS_i586
7450ba4 sstate: set SIGGEN_LOCKEDSIGS_CHECK_LEVEL default to error
f9723a3 sstatesig.py: Replace '_'s with '-'s in SSTATE_LOCKEDSIGS* names.
abf0e7e sstatesig: Improve the support for locked down sstate cache usage
a08d7dc sstatesig: Improve to handle locking of multiple machines
c5cc499 sstatesig/sstate: Add support for locked down sstate cache usage
7d80f8e bitbake: data_smart: Clarify what 'computed' means in the data store history context
14ace86 gcc-configure/gcc-common: Move preconfigure definition to common include
0db15bb libgcrypt: Fix ARM assembly when building __PIC__
da36b0a build-appliance-image: remove hardwired path
50f8fb7 rsync: remove trailing whitespace
ed6b52c rsync: Add PACKAGECONFIG for acl/attr
a6d390a systemd: fix to use ${libdir} for libraries
a4cfa20 lttng-tools: add PACKAGECONFIG to support --enable-python-bindings and lttng-ust
04a3360 i2c-tools: create i2c-tools-misc package for perl scripts
14adc48 portmap: add systemd service file
d11ec7f portmap: fix INITSCRIPT_PARAMS
8e47b28 dropbear: add pam modules dependencies
eb6bf53 at-spi2-core: fix DBIND_CHECK_ALIGNOF m4 macro
23613ef grub-efi: Replace _BSD_SOURCE macro with _DEFAULT_SOURCE
f8d38d5 gstreamer1.0-plugins-bad.inc: Add rtmp support in gstreamer.
563ea5b sstate.bbclass: fix sstate_hardcode_path()
40e1c38 license: Improve disk usage
57edf59 sstate: Fix incorrect return value handling
7029032 shadow: Make useradd work correctly with --root again
fceef0c bitbake: data_smart: Fix remove operator and its interaction with data expansion
429802f classes/populate_sdk_base: enable adding custom commands to SDK install script
51e3921 bitbake: bin/bitbake: Update to version 1.23.2
bb54fd0 bitbake: siggen/runqueue/bitbake-worker: Improve siggen data transfer interface
9ebf982 xserver-xorg: remove aarch64.patch
3b37586 build-appliance-image: upgraded VMware machine config
bd1a3ab nspr: Upgrade to 4.10.7
9f9476f packagegroup-self-hosted: move graphics packages to graphics group
c2c8c02 packagegroup.bbclass: Use immediate expanded PACKAGE_ARCH value
7c16a53 oeqa/runtime: Automatic test for ptest
0a39472 oeqa/utils/logparser.py: results based log parser utility
1f5186e oeqa: Added package installer to oetest to aid in future automatic install of packages
7a497b8 linux-yocto-dev: bump to v3.17+
56e93f5 linux-yocto/3.14: configuration updates and feature merges.
e7d0486 linux-yocto/3.10: update valleyisland-io merge branch
4a82041 linux-yocto: introduce v3.17
6cb383c perf: fix v3.17 powerpc compilation issues
73ef403 lttng-modules: fix compilation for 3.17-rcX
e107239 linux-yocto/3.10: baytrail i/o updates
5dc9a8f e2fsprogs: update acinclude.m4
ec20c06 e2fsprogs: remove manual build of util/subst
cea6ad7 e2fsprogs: enable verbose build
0a74947 e2fsprogs: remove chmod
f1ce75e pcihp: fix possible array out of bounds, CVE-2014-5388
5e18549 bitbake.conf: use ??= for IMAGE_ROOTFS_SIZE
3a77693 kernel.bbclass: handle .dsp firmware
a41d97a classes/buildhistory: fix for sstate class change
0d3c795 glibc: Incremental bump to 2.20 release branch
a425639 gdb: allow compilation for __aarch64__
5bef322 wic: Completely remove all urlgrabber references
7576bd9 valgrind: backport enabling for glibc 2.20
ecb4014 systemd: disable resolved and networkd
f42d028 alsa-utils: hard-code alsa-utils in SRC_URI
7efad8a qemu.bbclass: add -r ${OLDEST_KERNEL} parameter
d8c8ea7 shadow: add Qualcomm and STMicroelectronics SoCs
c46a548 glib-2.0: fix mount detection
7736967 python-native: disable user site support
fe0f441 gstreamer: Set DEPENDS dynamically for plugins-ugly and plugins-bad
679b9fb bluez5: Allow method calls over dbus for bluetooth daemon
beff451 alsa-utils: upgrade to 1.0.28
54f58f1 systemd: Adding RRECOMMENDS for os-release
b092e55 os-release: Adding a new recipe for operating system identification
7df5910 pixman: upgrade to 0.32.6
28500e5 gtk+3: update to 3.12.2
4cdc9fd pango: update to 1.36.6
79900b8 libpng: update to 1.6.13
da5710d libpng: drop unnecessary automake requirement lowering patch
3e4cd04 gtk+2: update to 2.24.24
1f162cd libxkbcommon: Add missing dependency on xkeyboard-config
5f26c02 sstate: Add extra intercept functions SSTATEPOSTCREATEFUNCS
d06839e package_manager.py: use RPM_PREFER_ELF_ARCH
124ad80 perf: add libunwind support
9204cac libunwind: add recipes
69e7936 lighttpd: install config file without execute permissions
38a44d4 sudo: make sudoers a config file
60bfdb0 insane.bbclass: add QA check: file-rdeps
e7a78bd package_manager: RpmPkgsList: determine rpm version
1894522 bitbake: tinfoil: add a means of enabling variable history tracking
dfbb546 bitbake: toaster: fix some code spacing issues
69e5cbd bitbake: toaster: use cookies for count and sorting in templates tables
a6f1e31 bitbake: toaster: do not save objects in session
32a2793 bitbake: toaster: enable SSH-based remote build support
5bd2b3f bitbake: toaster: bitbake server listen on all interface
a287a6d bitbake: toaster: rename bldviewer projecttags custom tagset
a440062 distro/poky: Add Debian 7.5 and 7.6 version as validated
57b214d alsa-lib: libasound should runtime depends on alsa-conf
c7541a2 rpmresolve: ignore null requires
628875e systemtap: Cross compilation fix
af28cad systemtap: Fixed probe syscall.sendfile failure
b02da02 useradd-staticids.bbclass: Fix for Bug 6633
2f42ef8 package_rpm: Add optional improved directory handling
7b722c5 systemd: enable forwarding messages to syslog daemon
1ea5aad run-postinsts.service: remove redundant line
23c9436 modutils-initscripts: mask modutils in case of systemd
9105e9e psplash: mask psplash in case of systemd
2caee0c v86d: mask fbsetup when necessary
c57427b keymaps: mask keymap when necessary
3b00803 initscripts: mask several init scripts
f8f2ada packagegroup-core-boot: conditionally rdepend on VIRTUAL-RUNTIME_initscripts
bebf263 keymaps: remove dependency on initscripts
143e13a at: inherit update-rc.d to handle sysv init script
44be08b at: remove dependency on initscripts
ab4f1b2 rpcbind: avoid entering failed status after stopping daemon
eaa87ab cups: add systemd support
cd8255b cups: make cups daemon start correctly
f9c6b40 acpid: upgrade to 2.0.22 and add systemd support
9b5bc94 dhcp: add systemd service files
198ed4b systemd: add support for executing scripts under /etc/rcS.d
c39e263 v86d: set INHIBIT_UPDATERCD_BBCLASS if 'sysvinit' not in DISTRO_FEATURES
7580259 systemd: add kbd-keymaps to RRECOMMENDS of systemd-vconsole-setup
62fdd44 keymaps: fix for systemd
e3088a7 alsa-state: fix pkg_postinst and set INHIBIT_UPDATERCD_BBCLASS
ee05cc8 update-rc.d: fix logic in populate_packages_updatercd
16de99b systemd: make runlevel work in non-runlevel targets
2189b7e systemd: add PACKAGECONFIG for 'journal-upload'
6301fde systemd: upgrade to 216
b2a93ca qemu-native: only depends on libxext-native when x11
187c831 piglit: add bash to RDEPENDS_piglit
957753b scripts/contrib/build-perf-test: Update eglibc -> glibc
2b83ffe xserver-nodm-init: Only start in runlevel 5
e04230b rpcbind: Make user's home directory /
b15a703 classes/compress_doc.bbclass: compress man/info pages
9bf365c perf.bb: fix multilib build
cdb7752 pango / ptest: clean CFLAGS for host binary
60b8a57 scripts/create-recipe: minor fixes
45907b6 package_manager: Add rpm v4 support
c5dc664 package_rpm: Add builddir macro to define source directory
2668104 package_rpm: Add custom extension support for spec generation.
1a7ff8a lz4: update to version 122
83ebcb1 bitbake: process: Ensure abnormal exits set an error level
08ffc6b nettle: Add name to maintainers list
a4e6bc7 upstream_tracking: add lz4 version and date info for package
bb00d83 conf: Account for eglibc->glibc move
3150bdc python-numpy: Fix build for mips64
f61eac4 grub: Replace _BSD_SOURCE macro with _DEFAULT_SOURCE
9164912 xf86-video-intel/xf86-video-omapfb: Fix build with glibc 2.20
4d26851 xf86-input-synaptics/xf86-input-vmmouse: Fix build with glibc 2.20
5e328bf bitbake.conf: Use 2.6.32 for oldest supported kernel
09e3e78 recipes: Remove references to eglibc
573b743 oeqa: sstatetests should now look for glibc-initial
4e4e80e image-swab.bbclass: Account for eglibc -> glibc move
e64efe7 conf: Account for eglibc->glibc move
00f33ff distro: TCLIBC now defines glibc instead of eglibc
54a3375 glibc: Migrate eglibc 2.19 -> glibc 2.20
954e45b perl: add explicit configs for Time-HiRes
8a0a27d ghostscript: Don't build-depend on libgcrypt for the local cups
051f6a1 native.bbclass: deltask package_qa
4900d76 yocto-bsps: update SRCREVs to linux-yocto latest
834ab14 yocto-bsps: remove 3.4 bbappend
76f05ee linux-yocto: ensure that recipe specific defaults take precedence
92c1ece kernel-yocto: replace --is-ancestor with basic git porcelain commands
61c15c0 linux-yocto/3.4: remove 3.4 name recipes
05371f4 linux-yocto/3.14: update to v3.14.17
aeef310 linux-yocto/3.14: vhost, vxland, openvswitch and block/bfq updates
b7a16bb kern-tools: allow meta branch and meta data directory to differ
9a3292e kernel-yocto: convert echo statements to bb* equivalents
cf8a0ac kernel-yocto: remove KBRANCH_DEFAULT
63f2e18 kernel-yocto: allow custom non-meta, SRCREV format builds
ba7614b kernel-yocto: clean overly complex branch checkout
2aa7522 kernel-yocto: use show-ref instead of branch -a
4ee454d kernel-yocto: simplify branch SRCREV validation
3b3fe04 kernel-yocto: remove KBRANCH_DEFAULT
95bfc6a kernel-yocto: remove branch existence checking in do_validate_branches
254bc3a kernel-yocto: remove SRC_URI kbranch validation
8a5b1c7 kernel-yocto: remove containing branch check
7097cdf kernel-yocto: move SRCREV validation to patching phase
4e96983 kernel-yocto: use cat-file instead of git-show
6b294a0 kernel-yocto: remove redundant SRCREV check
50a8400 bitbake: knotty: ignore interrupted system calls
372c9d1 bitbake: toastergui: added pages for project details
acd4a17 bitbake: toaster: add project pages for machines, targets, layers
fd0398f poky-tiny: Fix qemu build failure
8b70d4b poky-tiny: Set native DISTRO_FEATURES
f1b41b9 tzcode: update to 2014g
d6bd8df tzdata: update to 2014g
823ba6e libpam: remove MLPREFIX from PN
08c8861 linux-libc-headers: update to 3.16
c07aa7e libpam: Fix multilib packaging
e145cd5 libpam: Fix runtime providers
e2d64c1 libical: upgrade to 1.0.0
243837b libpcap: upgrade to 1.6.1
b31b04d iproute2: upgrade to 3.16.0
7d8430f at: Upgrade to 3.1.15
d086917 libassuan: Upgrade to 2.1.2
83b4118 libxkbcommon: Upgrade to 0.4.3
04827ad man-pages: Upgrade to 3.71
864fdbb less: Upgrade to 466
af35986 alsa-utils: upgrade to 1.0.28
c74a6dd alsa-tools: upgrade to 1.0.28
b72ce82 alsa-lib: upgrade to 1.0.28
cc0a061 package_manager.py: enable smart non-interactive mode
4568f38 libtirpc: upgrade to 0.2.5
f01a156 gstreamer1.0-plugins-ugly: upgrade to 1.4.1
0fb00d4 gstreamer1.0-rtsp-server: upgrade to 1.4.1
797c793 gstreamer1.0-plugins-bad: upgrade to 1.4.1
2173b1b gstreamer1.0-plugins-good: upgrade to 1.4.1
8ce06de gstreamer1.0-plugins-base: upgrade to 1.4.1
4c8658e gstreamer1.0-libav: upgrade to 1.4.1
987fcaa gstreamer1.0: upgrade to 1.4.1
37fbf2b systemd: add PACKAGECONFIG for 'elfutils'
d8f60bb useradd: Add setscene dep on pseudo-native
1ea36c8 qemu-native: depends on libxext-native when enable sdl
9f36a3c package: Correct two typos in a comment
3b47aa1 lib/oe/utils: Make multiprocess_exec() return anything
91375af oeqa: xorg log test is being replaced by parselogs so remove
e50ebcc testimage: Add parselogs to the default tests for sato images
09296cd oeqa/pasrselogs: Improve the machine/string whitelist
c730c94 oeqa/runtime: Automatic test for parsing the logs on a machine and search for certain error keywords.
0031722 classes/cpan_build.bbclass: add EXTRA_CPAN_BUILD_FLAGS
fa9bb30 buildtools-tarball: export GIT_SSL_CAINFO
754a9c3 buildtools-tarball: include nativesdk-ca-certificates
39f77bb lttng-tools: fix ptest execution failure
fe2e53b bitbake: toaster: create Build methods for calculating progress and ETA
69955c7 bitbake: buildinfohelper: BuildRequest project file update soft linked
25a715a bitbake: toatergui: update pages to match project models
ee250eb bitbake: toaster: update the bldcontrol to the new orm models
95df542 bitbake: toaster: update checksettings command for auto-detection
565f692 bitbake: toaster: add all layers page
3a4356d bitbake: toaster: create project section navigation structure
5453000 bitbake: toaster: enable admin interface on select models
234226b bitbake: toaster: update orm models for layerindex compatibility
10019a6 bitbake: toaster: fix application discovery in settings.py
7eb3e45 bitbake: toasterui: refactor log saving and save out-of-build errors
669c07d bitbake: build/data: Write out more complete python run files
34226b8 bitbake: bitbake-worker: Extra profiling data dump
ac66e15 bitbake: utils: Improve profile log processing
c79b7f0 bitbake: fetch2/hg: Fix username/password handling
d1a133a bitbake: runqueue: Fix setscene tasks not running
859ad94 populate_sdk_base: Remap TOOLCHAIN_HOST_TASK variable
a9c628d python3-distribute: fix interpreter
bdf14c7 bootchart2: no bashism in bootchartd.in
b2dab1f sed: add sed to RDEPENDS sed-ptest
ac5aaf8 lsbtest: no bashism in LSB_Test.sh
36f6caa run-ptest: fix bashism
cdfc515 valgrind/oprofile/systemd: no bashism in run-ptest
1087a18 meta: fix RDEPNEDS for the test related pkgs
44f98bb ltp: fix RDEPENDS
8ffa79e ethtool: upgrade to 3.15
53fcc0a gstreamer1.0-plugins-bad: Add DEPENDS on jpeg
49ade79 gstreamer1.0-plugins-bad: Fix GL/GLES configuration
f0f50a9 gstreamer1.0-plugins-bad: Add DEPENDS on libpng
b5c2294 gstreamer1.0-omx: Add DEPENDS on gstreamer1.0-plugins-bad
1094091 gstreamer1.0-plugins-bad: add opencv haar cascade XML files to package
9c0d4f5 cpan.bbclass: matches more lines
89a2b84 perl-native: fixed bad interpreter error
38dbebf packagegroup-core-directfb: Set PACKAGE_ARCH to MACHINE_ARCH
778e892 ofono: upgrade to 1.15
b2b4057 bluez5: upgrade to 5.22
ddf2b0e harfbuzz: upgrade to 0.9.35
94a6ecf connman: upgrade to 1.25
a90346e patchelf: Add patchelf recipe
347f9c6 sstate: Add extra intercept functions
bbf1040 linux-dummy: bundle_initramfs should not be nostamp any more
c167954 qemu: add PACKAGECONFIG for numa
07ad83e libtiff: fix CVE-2013-1961
40771f3 systemd: Support building on uclibc
036644d uclibc: Support systemd builds
90f6566 uclibc: Upgrade to tip of master
6e7127d openssl: Re-add linux-uclibc tuple
3adf1f5 IBM power7 v2: Add new tune file for PPC power7
38c91f4 IBM power6 v2: Add new tune file for PPC power6
3daa219 IBM Power5 v2: Add new tune file for PPC power5 cpu
88a3c93 nss: CVE-2014-1544
2e8b702 logrotate: add packageconfigs
682933a logrotate: obey our flags
61e3e41 oeqa/sdk/buildsudoku.py: add setUpModule method to run only when gtk+ in installed.
e2b4dde oeqa/oetest.py: enable sdk tests to use hasFeature and hasPackage methods.
e04172d classes/testimage.bbclass: add more fields to the sdk TestContext
475e976 classes/populate_sdk_base.bbclass: add a manifest for target sdk
30c22a3 qemux86-64: support X11 when QEMU is emulating a different GPU than vmware
0e8d6de qemux86-64: xorg.conf: allow X.Org driver to be selected automatically.
9e8666c qemux86: support X11 when QEMU is emulating a different GPU than vmware
ae54f2b qemux86: xorg.conf: allow X.Org driver to be selected automatically.
a9085bf xorg-drivers: xf86-video-cirrus: add a recipe for the Cirrus Logic X.Org driver
a9b0804 archiver.bbclass: add revision to git tarfile name
3a1b605 hicolor-icon-theme: Upgrade to 0.13
754c983 xkeyboard-config: upgrade to 2.12
b2981a0 xf86-input-mouse: upgrade to 1.9.1
0a21d44 xf86-input-synaptics: upgrade to 1.8.0
726c08e psmisc: Update patch status
d09e6d8 native/nativesdk: Clear MACHINEOVERRIDES
8491ca5 sanity: refactor mirrors checks to be more pythonic
af6d668 sanity: fix support for regex schemes in mirrors check
d68255d sanity: handle both \n and \\n in mirror vars
52b788c autogen-native: inherit pkgconfig to fix a build failure
c58b4e4 libxml2: Explicitly enable zlib support
e601c8b buildhistory: Restore parsing time optimalization
c919acf poky-floating-revisions: SRCREV never worksin PREFERRED_VERSION, remove bad example
6d08e5b bitbake: lib/bb/*.py: Typo fixes/grammar/comment fixes, nothing functional.
91083de bitbake: depexp: don't use undefined variable 'logging'
6962cd8 bitbake.conf: Drop unused MKTEMP* variables
1a76648 package: Disable runtime mapping of RPROVIDES/RCONFLICTS/RREPLACES
ff6ab05 package: Don't remap names in packagegroup recipes
3694f05 debian: Set RPROVIDES to include the original packagename when renaming
c490ba0 sstatesig: Only squash dependencies for allarch packagegroups
9e213dd packagegroup: Move inherit packagegroup to after PACKAGE_ARCH
9541ec7 allarch: Add warning about packagegroup
4f3f34d packagegroup: Make allarch inherit conditional
be8a7ab nettle: add nettle to tracking
21f41f6 bitbake: cooker: tweak CookerCollectFiles::find_bbfiles
cf385a55 guile: workaround ice ssa corruption while DEBUG_BUILD
ffb4933 puzzles: fix do_compile failed when DEBUG_BUILD
28e3f8c fixup
f026b7a busybox : fix do_compile failed on qemumips when DEBUG_BUILD (ICE)
de96305 opkg: Add runtime dep on gnupg if 'gpg' is in PACAKGECONFIG
26b2233 gpgme: Add pkg-config file
94c9b02 bind: refer ubuntu/redhat to add bind user/group
7361876 ptest-runner: return 1 instead of zero if any test fails
fd0aa6a udev-cache: parametrize sysconf file paths
7c56a5e udev-cache: Don't ignore error messages from cache extract
ab5c95f udev-cache: omit sockets and filesystems mounted under /dev
79f5a3b udev-cache: strip timestamps on extract
4f597a8 busybox: enable `tar -m`
bcab1f8 udev-cache: choose a more descriptive cache filename
8c423bf udev-cache: Compress the cache
bd7fb7c udev-cache: Update cache tarball atomically
8d59fca linux-yocto/3.14: feature merges and configuration updates
29f428d linux-yocto/3.14: cgroups and hugetlb updates
2cc9643 linux-yocto/3.14: fix common clock framework support in PCI glue layer
4045d61 linux-yocto/3.14: KASLR and VDSO backports
d4fbc54 linux-yocto/3.14: update to v3.14.13
321cb59 linux-yocto/3.14: add ARM kprobes support
2ffbc27 linux-yocto: intel-common: Enable Industrial IO
0ae7b58 sanity.bbclass: check the format of MIRRORS
eb34d66 sanity.bbclass/kernel.bbclass: minor fixes
dfb5575 gmp: ppc64 build issue
c891078 mc: Fix musl build failure
65fa712 libc-common.bbclass: rename ALL the packages
c448f2d expect: fix shared object file cannot be opened
2bdd294 sudo: remove volatile configuration file
5a3a7e0 bitbake: siggen: Fix a subtle bug in hash calculation for shared work tasks
d33cc89 bitbake: process: Further improve robustness against server shutdown
8683c24 bitbake: utils: Add workaround for multiprocessing bug
ecf72a7 bitbake: command: Trigger updateCache to shut down any active parser threads
c501492 bitbake: bitbake-worker: Improve sigterm handler
a4f077b bitbake: knotty: Improve exception handling
db50630 bitbake: process: Deal with infinite looping of the server
b4ad9de bitbake.conf/debian.bbclass: Move AUTO_LIBNAME_PKGS definition to class file
62e3071 packagegroup-core-tools-debug: Drop MACHINE_ARCH as PACKAGE_ARCH
9412254 package.bbclass: Fixup for using common function
be1b198 lib/oe/utils: Add utils function for multiprocess execution
6ab380d bitbake.conf: Set PACKAGE_ARCH with ??=
f478602 oeqa/utils/httpserver: Reset SIGTERM handler
181bcbe archiver: delete the tail slash in directory name
cae5cf2 grub_2.00: strip the sparc64 files from building
a140514 mesa: fix Multilib QA Issue
bf6ad82 udev: fix /var/volatile/tmp permissions
a45cb30 grep: set CONFIG_SHELL to /bin/sh
e06238b gzip: set CONFIG_SHELL to /bin/sh
086936a xz: set CONFIG_SHELL to /bin/sh
ed3b6ed qemumips.conf: Default to (and support) mips32r2
f9e6b7e fix up eglibc-utils description to match what is actually included
f9619af qemu: Explicitly disable libiscsi, its not in DEPENDS
5dfec59 strace: fix ptest execution failure
e46011c perl: fix the output format of all tests
638ccc4 lttng-ust: add python-core to RDEPENDS_lttng-ust-bin
185eed0 syslinux: add perl to RDEPENDS_syslinux-misc
03d4906 aspell: add perl to RDEPENDS_aspell-utils
fb5f2bb rpm: add perl to RDEPENDS_rpm-build
faa4b0a gst-plugins-base: add perl to RDEPENDS_gst-plugins-base-apps
ad95a7b dtc: add bash to RDEPENDS_dtc-misc
2311f57 apr: add bash to RDEPENDS_apr-dev
a9a0246 pm-utils: add bash to RDEPENDS_pm-utils
63aa531 apt: add bash to RDEPENDS_apt
919a8e2 xmlto: add bash to RDEPENDS_xmlto
3c85381 kconfig-frontends: add bash to RDEPENDS_kconfig-frontends
fdf51aa pax-utils: add bash to RDEPENDS_pax-utils
f95e62b libtool: add bash to RDEPENDS_libtool
7d3d6a3 bitbake.conf: add bash-native to ASSUME_PROVIDED
cdb84ea openssl: add DEPENDS on openssl-native for rehash
87c748c dhcp: do not use ifconfig/route in dhclient-script
3531869 kernel: Prevent from installing so files into source dir
7b0137c nss-myhostname: fix postinst/prerm scripts
06d529c ethtool: Fix musl build failure
e335d95 psmisc: Fix musl build failure
0c6c0b6 procps: Fix musl build failure
50fbf19 wic: do not realign aligned partitions
5686b2d wic: do not steal sectors from the first partition
cb860e1 e2fsprogs: Backport fixes for building with musl
7607001 classes/autotools: avoid error if recipe is first in task dependency tree
6a6f50b sqlite3: Upgrade to 2.8.6.0
1fb5d64 gnupg: Upgrade to 2.0.26
088123d libidn: Upgrade to 1.29
1203e1e glew: Upgrade to 1.11.0
b1d8f59 boost: Upgrade to 1.56.0
b8dd7c8 libbsd: Upgrade to 0.7.0
0056492 cups: Upgrade to 1.7.5
3443667 bitbake: runqueue.py: Fix typoes/grammar in comments.
02455eb bitbake: fetch2/local.py: fix first line indent of search path debug output
f1dc26e bitbake: daemonize.py: Non-functional comment/aesthetic fixes.
8a91a24 bitbake: runqueue.py: Correct several misspellings of "notifing".
c3f7f4e bitbake: newbb.vim: remove PR
e89001c qemu: fix Darwin cross-compilation
be02588 classes/sstate: ensure do_package_qa_setscene doesn't pull in do_package_setscene
3223a70 buildhistory: rename build-id to build-id.txt and add more info
858846d librsvg: disable Bsymbolic if it is not supported on some hosts
b7e4518 site/common-darwin: Really fix common-darwin typo
abb7f5b oeqa/sdk/: add sdk tests for sudoku, iptables and cvs
fec293b oeqa/utils/targetbuild.py: add support for sdk tests
2999a7f oeqa/oetest.py: enable sdk testing
c8de46c meta/classes/testimage.bbclass: add testsdk task and enable functionality for it.
59b0f7f chrpath: Drop warning from darwn builds
d42794c glib-2.0: Add missing nativesdk-gettext DEPENDS
ea06e64 qemu.inc: Drop unneeded nativesdk-libsdl RDEPENDS
241bdb0 qemu-targets.inc: Update to handle mingw/darwin
77ebfe7 gst-ffmpeg: add PACKAGECONFIG for libav9 and patch from Gentoo
1e001d0 piglit: add dependency on libxrender
9e4be7f local.conf.sample: Append sdl to qemu-native* PACKAGECONFIG
7ae2008 avahi: Since ${PN} is empty, set -dev RDEPENDS
7095d8d crosssdk: Clear MACHINEOVERRIDES
5f69b66 openssl: Repace if-else with case and add musl triplet
00e054e syslinux: fix race issue
ecb6abe avahi-ui: drop rmdir localstatedir in bb recipe
093149d avahi: unset FILES_avahi to avoid packaging files there
ccec199 lttng-tools: update to version 2.5.0
3188e0b libxml2: port AM_PATH_XML2 to use pkg-config
2f8a72e coreutils/libpam: Add BBCLASSEXTEND nativesdk
f12ac61 wic: include partition label in fs image file name
4ac5071 gcc-cross-initial: Put limits.h in gccdir/include
1a1d641 lttng-ust/lttng-modules: Update LICENSE to reflect MIT
182cd38 lttng-tools/lttng-ust: Drop old 2.3.1 versions
1cbabcd lttng-ust: update to version 2.5.0
eed2270 toolchain-shar-template.sh: Limit xargs command line
298de65 bootchart2: fix installed-vs-shipped
f9f8183 libpam: Allow use during build and in SDK
52dbe71 attr: Allow use during build and SDK
ba9cb13 cracklib: Allow use in SDK
072657c wic: Add mkgummidisk kickstart file
32a5799 wic: Add sourceparams to mkefidisk.wks
6e328c9 wic: Add gummiboot support to bootimg-efi
8d0185f wic: Parse and pass sourceparams to partition plugin methods
e00e902 wic: Add sourceparam param to partition plugin methods
ef700ea wic: Add utility function for parsing sourceparams
3c90ee9 wic: Add '--sourceparams' partition option
c4f51a0 image.bbclass: image_types.bbclass is a must
25bf76a gmp: uprev it to 6.0.0
c23b321 Support image type "squashfs-lzo"
6ac0696 squashfs-tools: Add support for LZO and LZ4 compression
f21f385 strace: apply ptrace.h conflict workaround
295ce4a curl: --with-random is only applicable with openssl
c076959 curl: let configure find gnutls via pkg-config
89d3db7 curl: add zlib PACKAGECONFIG and remove hardcoded DEPENDS
ae8d3bc python-pygtk: fix native python path
9a30d34 consolekit: depend on glib-2.0-native
276285b consolekit: allow explicit enable/disable of polkit
0cd5af0 udev-extraconf: Unmount SD card after ejection
eb7a847 opkg: Protect add-exclude.patch from malloc failure
cb1ab74 multilib_global.bbclass: PREFERRED_PROVIDERS for multilibs
c0a071e gcc: update compiler architecture to match gcc-runtime (armv6, armv7a)
6573521 gcc: backport patch affecting Linux kernel builds
75191fc gcc: Abstract long double configuration into python function
14a2d1e sdk: change EXTRA_OECONF_FPU to EXTRA_OECONF_GCC_FLOAT
79e235c gcc-target: make --enable-clocale consistent with gcc-runtime
7a17a0d gcc: remove outdated configuration option
46a812f gcc-4.9: Ensure c++ includes are in /usr/include/c++/${BINV}
7b8b0af gcc: remove inappropriate patch
6d78f39 gcc: recipe whitespace changes
2783ee7 tcmode-default.inc: Add eglibc-scripts and eglibc-mtrace
221c11b prelink_git: Update to current head of cross-prelink development
8e46af2 autoconf: add rdep on perl-module-data-dumper
ba4eb6d gcc-cross-initial: Use good old bfd linker by default
b8a001d cmake: drop -fpermissive
bf07dcd gstreamer1.0-rtsp-server: Upgrade to 1.4.0
c1fe42c libgcrypt: Do not remove m4 files so aggressively
c742a6a python-scons-native: Make it useable if old host install exists
f1cdd6e glib-networking: Inherit gettext
06db5d9 libsoup-2.4: Inherit gettext
9f6d867 systemd: Inherit gettext
8247293 qemu: add PACKAGECONF lzo
d5b7327 qemu: enable aarch64 support
0670cec python: Fix build on musl
9c1ea58 gstreamer1.0-plugins-good: Add a PACKAGECONFIG for udev
19e9510 gdb: Add a dependency on zlib
a346777 cml1.bbclass: fix diffconfig diff command
58bd515 libav: update 9.x version to 9.16
ab8365b libav: update 0.8 version to 0.8.15
3939d66 qemu: Overwrite KVM explicitly for darwin/mingw
06d6608 qemu: Simplify DEPENDS
42f0ffe qemu: Add PACKAGECONFIG for glx
153773e qemu: Add alsa PACKAGECONFIG and cleanup native/nativesdk DEPENDS
1c1ce08 qemu: Fixup target sdl configuration to use PACKAGECONFIG
f4ff3d3 qemu: Move dtc(fdt) configuration to PACKAGECONFIG
57bdeec site: Add common-darwin
fa3df0e glib-2.0: Allow correct printf configuration on darwin/mingw
71135b3 glib-2.0: Make the gtester-report installation conditional
82b7504 populate_sdk_base: Move toolchain installation script to a separate file
2501287 rootfs_*: Refactor common depends/lockfile task flags
e6837f7 classes: Combine rootfs_<pkgtype> and populate_sdk_<pkgtype>
6882d2d yocto-project-qs, ref-manual: Added 'socat' package to essentials.
edd2532 ref-manual: Updated native.bbclass with grammar fix.
010d19e dev-manual: Misc edits to the model chapter (Chapter 4).
1ab0c8f dev-manual: Various small edits to Chapter 3.
4cc5cb1 dev-manual, mega-manual: Updated the downloads picture.
32b508e dev-manual: Misc edits to Chapter 2.
d677a68 dev-manual: Added Toaster to the list of other resources.
5370b58 dev-manual: Updated section on launching remote GDB.
632faca bsp-guide: Applied the <replaceable> tag as needed.
cb5c70d ref-manual: Fixed a couple links and made some minor corrections.
8732dab ref-manual: Minor edits for clarity.
2ef2b72 ref-manual: Updated "Images" chapter to remove listed dirs for recipes.
46fb10d ref-manual: Ordered images alphabetically.
15b0f8a ref-manual: Added "core-image-testmaster-initramfs" image
d211d47 ref-manual: INITRD var: make it a list of filesystem images.
80bd63b ref-manual: Updated the SRC_URI variable.
932b956 dev-manual: Minor edits to the section to add binaries to an image.
2058187 ref-manual: Edits to some FAQ entries.
a20e75f dev-manual: Review edits to how to find checksum values.
e2e0844 ref-manual: Review edits to new FAQ entries.
0467e3a dev-manual: Minor edits via patch to "common tasks" chapter.
93f0d03 dev-manual: Technical and text edits applied as patch.
99a3c19 dev-manual: Edits to several examples and some typos.
0346405 dev-manaul: Small edits to various examples.
a155083 ref-manual: Updated a couple FAQ entries.
0f24d9c SIGGEN_EXCLUDERECIPES_ABISAFE: add initscripts
d7fea14 oe.package_manager: fix use of PACKAGE_EXCLUDE for dpkg
4e3e0df python-dbus: use PACKAGECONFIG for doc generation
fe5b333 oeqa/runtime: add new cpp test and file
92785a1 lib/oeqa/selftest: Don't match log level in output
d43b439 sstate-sysroot-cruft.sh: Improve to use it from CI
f62150b qt4: Avoid duplicate flags in the g++-unix.conf
a37c81c tslib: Delete unnecessary "SRC_URI_OVERRIDES_PACKAGE_ARCH = 0"
f71208f trace-cmd: fix recompile error
4ca81d6 openssl: upgrade to 1.0.1i
2c175fc directfb: add PACKAGECONFIG for webp
c1a2482 kernelshark: add dependency on libxml2
f18ff5f gnupg: Added PACKAGECONFIG[curl]
ae10362 curl: add ssl to PACKAGECONFIG
a3d0a7b base.bbclass: Remove old-style definition of do_build() task.
786c445 guile: add dependency on ncurses and readline
9e8c8c3 midori: add dependency on libxscrnsaver
d150886 libarchive: add PACKAGECONFIG for nettle
984c6a4 mpeg2dec: add PACKAGECONFIG for x11 and fix dependencies
1636d23 gst-fluendo*: add --disable-debug only to gst-fluendo-mp3
a1fa222 test-dependencies, insane.bbclass: improve the message
f96432d directfb: add PACKAGECONFIG for drmkms and tiff
48989d3 Remove remnants of deleted "do_package_write" task.
d942d22 wic: Bump the version to 2.0
d8f9d05 wic: Rename /mic to /wic
a43c1f9 wic: Update Disk description
ff1aa23 wic: Rename MountError
312479c wic: Rename PartitionedMount
28453ae wic: Update/rename configure-related code
d02c91f wic: Update/rename install-related code
467bf7e wic: Update cleanup/unmount-related code
4d1f5ee wic: Update/rename/delete mount-related code
bd0dd44 wic: Remove Mount object
d74e7d3 wic: Remove unused conf support
554feee wic: Update 'Background and Motivation' help section
02ebd15 wic: Remove unused command versioning support
8678a6e wic: Clean up Creator
f12336a wic: Clean up PartitionedMount
1601821 wic: Clean up DirectImageCreator
6c6c96a wic: Clean up BaseImageCreator
df42125 wic: Remove unused plugin and error code
946dbec wic: Remove gpt_parser
5a8bcfb wic: Remove unused 3rdparty/commands
c9b5ea0 wic: Remove 3rdparty/urlgrabber
ba19b60 wic: Remove unused misc code
f0499a0 wic: Remove unused fs_related code
93a60f7 wic: Remove rpmmisc
ac2d312 wic: Remove proxy support
29fb556 wic: Remove grabber implementation
d9096a6 wic: Remove fiemap support
aac3223 wic: Remove bmap support
a935109 wic: Remove mic package managers
f1dbd46 wic: Remove rt_util
c0aa6cb wic: Remove mic chroot
d212000 wic: Remove mic bootstrap
bd9b934 wic: Remove packaging, config commands
36f4ede wic: Remove unused custom commands
68e6adf wic: Make exec_cmd() error out instead of warn
9636046 qemu: upgrade to 2.1
3b769f0 trace-cmd: Update to version 2.3.2
4380b1a perl-rdepends: add CPAN, CPAN::Meta requirements
47efe35 kexec-tools: reinstate 'kexec-tools' package
2917308 ubootchart: delete ubootchart recipe
23ff42e core-image.bbclass: Correct comment about packagegroups.
c8aba32 gstreamer1.0-plugins-good: fix the bug for gstrtpmp4gpay
b88b5b7 bootchart2: create recipe for bootchart2
a00dcf2 v86d: fix for systemd to load uvesafb module correctly
34ffa4e alsa-state: install init script only when 'sysvinit' is in DISTRO_FEATURES
f0c0040 syslinux: fix reinstall error
8371105 u-boot-mkimage: fix recompile error
dfc203c kernelshark: fix recompile error
78e127d kexec-tools: fix recompile error
866070c logrotate: fix recompile error
020f816 libnewt: fix recompile error
3f0bbf6 busybox: Add Upstream-Status to patch
2d77fbf sysvinit: allow stack size configuration from rcS
b32b819 wpa-supplicant: use PACKAGECONFIG for ssl selection
b6cdfec lz4: update to 120
0065258 boot-directdisk.bbclass: use local HDDDIR
7c872ea remake: fix build error
26c229c tzdata: update to 2014f
39d800d tzcode: update to 2014f
86afd7e ghostscript: Remove bogus gsfonts reference from DESCRIPTION
6cad939 documentation.conf: Small tweak to INITRD variable
bfa36a2 code cleanup for INITRD variable handing
73c481d base-files: set dynamic COLUMNS via resize command
a40db96 busybox: Make busybox connman aware
268688a oelint.bbclass: Check for ${PN} or ${P} usage
207e94d oelint.bbclass: add patch checking
7c85585 oelint.bbclass: make oelint bbclass work
c3dedbe curl: remove unused patch
6fa2d82 perf: fix indentation
522a808 perf: explicitly disable libunwind
3b019ed Add doc entry for "ptest-pkgs" in IMAGE_FEATURES list
6a77a1d scripts/send-error-report: fetch /Errors/ instead of /.
2dab9e6 gstreamer1.0-omx: Remove unnecessary dependency on plugins-bad.
74f0424 kexec-tools: Create separate package for vmcore-dmesg
a350f26 slang 2.2.4: fix the iconv existence checking
df3d7de cups: regen configure so cups-no-gcrypt.patch has an effect
6767cc1 cairo: explicitly disable LTO support by backporting patch which removes it
a0dcda8 tcp-wrappers: install /etc/hosts.allow and /etc/hosts.deny
1d75145 tcp-wrappers: fix do_install when $prefix == $base_prefix
1805ec8 formfactor: Grammar fix in recipe comment.
bd7b15b test-dependencies: don't override failed-recipes.log
aa87ead nss*: Replace hardcoded "/etc" with "${sysconfdir}"
ce7b1b0 alsa-lib: pcm_local.h: include <time.h> to enable CLOCK_MONOTONIC
a06c934 alsa-lib: fix hw_ptr exceed the boundary
9a923b9 alsa-lib: use get32_labels for multi-source
aa5fa26 psmisc: Typo in fuser makes -M on all the time
c91ed20 tcmode-default.inc: allow override of binutils-crosssdk
870bb8d local.conf.sample.extended: fix example for EXTRA_USERS_PARAMS
83775dc autotools: Exclude SDK_OS from autotools task signatures
b521321 package: Fix darwin shlibs code
0a7530f upstream-tracking: Add various CHECK_DATE and UPDATE_REASONs for my recipes
25129a6 bitbake: runqueue: Add sceneQueueComplete event
53eaed5 package: Convert dylib handling from .la to otool
c702039 package: Fix pkgdest for darwin shlibs code
55379f2 autotools: Fix warning for odctools-crosssdk
03af60e sstate: Allow switching between linux and non-linux SDK builds within the same tmpdir
34dc844 bdwgc: Upgrade 7.2d -> 7.4.2
4a22636 dev-manual: Updates for checksums and wic
d283686 dev-manual: Minor fixes.
e7dae57 ref-manual: Added two new FAQ entries.
152d307 dev-manual: Updated manual overview to include new QEMU chapter
fb46492 dev-manual: Edits to the wic reference section.
f937e05 dev-manual: Miscellaneous fixes in the newbie chapter.
3152e69 dev-manual: Created new chapter on QEMU.
5f31e28 dev-manual: Added support for new QEMU chapter.
25d7b0d dev-manual: Modified how to find checksums in the recipes
3be4af9 dev-manual: Applied review edits to the 'wic' section.
73abcb0 dev-manual: Fixed up the list of other references.
231fde5 dev-manual: Replaced "--" with &dash;&dash; throughout.
7ef076c dev-manual: Miscellaneous wic edits.
e0aa8f0 dev-manual: Miscellaneous updates from the wic help text.
b8a836c dev-manual: Added --fsoptions to wic
537e965 dev-manual: squashfs support added to wic section.
2a11e9d dev-manual: Created new "Plugins" section in the wic section.
1a82521 dev-manual: Updates to the creating partitioned images section.
4560e2f dev-manual: Added note and fixed a grammar spot.
b1a9074 dev-manual: Patch to fix some links and references.
6ebbf03 dev-manual: Updated example "foo" recipe name used in examples.
0221f8d poky: Enable build-deps QA test bu default
f401e8f bitbake: cooker: Get rid of duplicate 'import re'
70d0316 bitbake: knotty: Move second event check into a proper block
854d9e4 local.conf.sample.extended: update for preferred ABI
68eb17d bitbake: bitbake-user-manual-metadata.xml: Fixed variable flags example.
4643e6b bitbake: bitbake-user-manual-fetching.xml: Minor edits to clearcase fetcher
d0dec84 bitbake: bitbake-user-manual/bitbake-user-manual-intro.xml: Fixed link
53436d9 bitbake: bitbake-user-manual-fetching.xml: Added new clearcase fetcher module.
b75572d opkg-utils: Update SRCREV
7ff489d mesa-demos: upgrade to 8.2.0 and allow building without GLEW/GLU
8034d77 tune-mips*: Ensure tunes are inherited in order
fb8e2a8 gcc: Fix gcc-multilib-config comparison
bfb23e6 sanity.bbclass: Add ability to verify toolchain flags
cade601 init-install: Skip CDROM devices during probe
112674d init-install: Strip partition number from live_dev_name
7a81bd4 init-install-efi.sh: Verify /sys based files exist before displaying them
fd3d11f gcc: Upgrade 4.9.0 -> 4.9.1
a9c8767 package_manager.py: set preferred ABI for rpm
3c61104 libnl: Upgrade to 3.2.25
d468e24 libcheck: Upgrade to 0.9.14
2e880b6 lsbinitscripts: Upgrade to 9.55
87aed8a help2man-native: Upgrade to 1.46.1
c02d6b4 oeqa/utils/decorators.py: add import os
81d7adf qemu.inc: Allow optional use of pkg-config from the HOST
1fb8fdb gstreamer1.0-omx: upgrade to 1.2.0
b819924 gstreamer1.0-libav: upgrade to 1.4.0
d36561c gstreamer1.0-plugins-ugly: upgrade to 1.4.0
273c6ad gstreamer1.0-plugins-bad: upgrade to 1.4.0
4832b94 gstreamer1.0-plugins-good: upgrade to 1.4.0
23808f9 gstreamer1.0-plugins-base: upgrade to 1.4.0
7bdfef3 gstreamer1.0: upgrade to 1.4.0
593f00d i2c-tools: Uprev to 3.1.1
704dd12 alsa-lib: Add upgrade path for alsa-dev
3d1c670 python-smartpm: fix option typo of command channel
c07efbd python: python-pycairo: add python-pycairo-native
eecd637 image.bbclass: tweak read_only_rootfs_hook to also support systemd based systems
713f1fd systemd: add volatile-binds to RDEPENDS
db15e2d volatile-binds: add recipe
3b19f90 INITRD var: make it a list of filesystem images
463c9f4 wic: Various typo/grammar fixes to wic help text
b7528a4 wic: Add squashfs to --fstypes documentation
dcf7d98 wic: Add documentation for --fsoptions
3e237b1 wic: Fix plugin help text
e517b08 image-vmdk.bbclass: use sda rather than hda
2ca9406 gcc-4.9.inc: fix parallel building failure
2d16601 populate_sdk_base: Fix grep command usage on old hosts
d738109 selftest/buildoptions.py: fix QA_WARN test and add more output when failing
062bd81 libx11: Add missing NULL check
6a7b989 cml1: correct diffconfig output format
21b1cd1 nss: CVE-2013-5606
0685207 pulseaudio: fix CVE-2014-3970
c6a57f7 base-files: fix up misleading dir grouping names for lsb dirs
caea71f base-files: remove strange 2775 perms from dirs like /home
97cc497 base-files: actually install 2775 dirs as 2775, not 2755
3b1beeb libav: fix PACKAGECONFIG for theora and libvorbis
931fd01 autoconf: remove automake patch enforcing --foreign
addeef1 lib/oe/rootfs: Improve error message whitespace
cdb9b96 directfb-examples: Fix building with new autoconf
7952151 populate_sdk_deb: Fix non x86_64 SDK builds
4310088 apt-native: Add missing DEPENDS on db-native and curl-native
848cc27 populate_sdk_base: Include do_rootfs depends for do_populate_sdk
09def7a wic: do not overwrite autogenerated /etc/fstab with original too early
5627590 util-linux: break out new package util-linux-findfs
7cb16c8 util-linux: break out new package util-linux-hwclock
89d1788 bitbake: codeparser cache improvements
a05435f bitbake: cache: Optimise invalid cache file handling
97f4d8f bitbake: cache: Don't reload the cache file since we already have this data in memory
e2e8231 insane: Use a warning for FILEEXTRAPATHS issues for now
14a7cde lib/oeqa: Fix accidental revert of code
73ce04e wic: squashfs partition support
5e7de54 wic: --fsoptions handling
68bc4eb insane: add checking to standardize how .bbappend files do FILESEXTRAPATHS
8e26ab7 oeqa/rutime: Added testcase decorators for automated runtime tests. Also added LogResults decorator for oeTest class in oetest.py
242ccee alsa-lib: remove non PN based -dev packages
65e8bc4 cogl-1.0: Add libcogl-path package
419daaa autotools: Improve configure dependency code for finding m4 files
c1b244e wget: fix build error with gnutls
3754726 shadow-securetty: add freescale lpuart
da75a9a python: fix _json module arbitrary process memory read vulnerability
33a1a17 nspr: Fix for CVE-2014-1545
f6507d3 gcc-4.9.inc: fix parallel building failure
30ef7b2 perl: fix rebuid failed while ${CC} changed
5a7f510 autotools.bbclass: Enhance sed regexp to avoid extra subshell
984f034 oeqa/runtime: Added skipModule import for test modules that use it.
0c4dd0a oeqa: Refactor test skipping decorators to use the unittest result object
0565d8b gstreamer1.0-plugins-good: add missing dependency on libcap
02a15c0 gst-plugins-good: add missing dependency on libcap
8fdee05 pulseaudio: add missing dependency on libcap
e9008b0 debian.bbclass: inherit package
e2bd60a base-files: Don't export TZ if /etc/TZ exists
35f3f10 glib-2.0: use ptest-gnome
403aa97 ptest-gnome: add ptest helper for GNOME packages
050cbac shared-mime-info: upgrade to 1.3
c76ee2b xf86-video-evdev: upgrade to 2.9.0
7fa1294 libevdev: add new recipe (needed by xf86-input-evdev)
9fe836c libxi: upgrade to 1.7.4
99bffeb curl: Upgrade to 7.37.1
0eed506 cups: Upgrade to 1.7.4
2d7e6a0 binutils-cross-canadian: Explicitly DEPEND on nativesdk-flex, we require it anyway
63df03d qemu: Use PACKAGECONFIG for libusb to avoid floating dependency
c6211d8 gcc-multilib: Simply/fix MULTILIB_OPTIONS handling
42470aa lib/oe/classextend: Avoid early expansion of PR values
aee3b53 cross-canadian: Copy target_ definitions from cross.bbclass
d802443 populate_sdk_base: Extend TOOLCHAIN_TARGET_TASK to include multilib variants
8aeefd4 libomxil-0.9.3: Remove versioning for bellagio .so files.
c489b13 Revert "libomxil-0.9.3: Remove versioning for .so files."
df214ad allarch: Generate same package for MIPS and non-MIPS targets
80cfdfe libice: fix non-deterministic libbsd dependency
5f496b2 kern-tools: adjust to full history meta-data
bc76ecc linux-yocto/3.14: libata and generic CPU modalias handling
4033ca8 kernel: don't copy .so.dbg files into kernel source install
366e7a6 linux-yocto-dev: bump to v3.16+
d332ad7 linux-yocto: x86_64: expand kernel stack to 16K
32a20c3 lttng-modules: re-enable ARM builds
1681c88 lttng-modules: update to 2.5.0
d90124c linux-yocto/3.14: vexpress and MVM firmware support
a202f8a insane: Add build depends check
686037c ref-manual: Updated note in the "CentOS Packages" section.
8f52c69 bitbake: bitbake: remove choices for dump-signatures
1306f26 package_ipk.bbclass: Support hierarchical feed
1529ef0 bitbake.conf: move BB_NUMBER_THREADS and PARALLEL_MAKE to bitbake.conf
f833195 bitbake.conf: move BB_NUMBER_THREADS and PARALLEL_MAKE to bitbake.conf
91c845c gst-ffmpeg: Add CVE patches
b7f8fde serf: specify LIBDIR to avoid install issue
78a38c8 perf: remove CFLAGS override
be7eebe net-tools: ifconfig interface:0 del <IP> will remove the aliased IP on IA64
94b2718 toolchain-script: Really fix CANADIANEXTRAOE issues
3134ae1 sanity: Check for setgid/setuid TMPDIR
7c11b32 initscripts: fix bashism in bootmisc.sh
0cc5fa5 squashfs-tools: Add nativesdk in BBCLASSEXTEND
1330419 sysvinit: bootlogd: ensure /var/log/boot is created in volatiles
8076ab2 sysvinit: bootlogd: Don't run savelog if it's not installed
48641d5 sysvinit: bootlogd: Honor VERBOSE
063ee04 wic: Remove fstype from mkefidisk canned wks
aec05b6 wic: Add help entry for wic kickstart
a0e7d58 wic: Fix bad directory name in bootimg-efi
970de1b pango: upgrade to 1.36.5
252b7ee libxft: upgrade to 2.3.2
4bdd18e xcb-util-wm: upgrade to 0.4.1
93a31df xf86-video-vmware: update to 13.0.2
9c3aac1 gdk-pixbuf: upgrade to 2.30.8
c3601c8 libice: upgrade to 1.0.9
2c74aca gnome-common: upgrade to 3.12.0
4bad95b at-spi2-atk: upgrade to 2.12.1
da056f0 inputproto: upgrade to 2.3.1
84199cc libxfont: upgrade to 1.5.0
376ed31 fontsproto: upgrade to 2.1.3
4071033 kernel-module-split.bbclass: Allow autoloading multiple modules or modules where basename != module name
2c4d82b gstreamer1.0-plugins-base: get caps from src pad when query caps in gsttagdemux
5d7b5bb gstreamer1.0-plugins-base: do not change eos event to gap event if no data has passed to streamsynchronizer.
8040b2d gstreamer1.0: pass rate of input segment to output segment in gstbaseparse.
dcd0deb gstreamer1.0-libav: avoid using non-growable pool for videodec
4fc9259 gstreamer: fix a bug for gstbaseparse
036d9ab gst-plugins-good: fix integer overrun for mulawdec
fd1aacc adt-installer: fix sed input file error
dc6a9a9 systemd: change dependency relationships
0270b0e shadow: fix the behavior of su
cfa23a2 mkefidisk.sh: Add signal handling
ce38579 mkefidisk.sh: Fix redirection to 1
acfe054 busybox: mdev: Ensure /dev/initctl exists after tmpfs mount
034790d busybox: mdev: Use mdev.seq
67e1a52 busybox: mdev: Make /dev/shm world-writable
c294bbe mkefidisk.sh: Remove initrd entry for gummiboot
6ac058c connman: Fix PPTP VPN plugin QA issue
56bfda2 image.bbclass/rootfs.py: add variables to rootfs[vardeps]
f4456df bitbake: toasterui: fixing event.data clash
37d2066 bitbake: toaster-requirements.txt: document requirements for the python environment
1b9175a bitbake: toaster: properly set layers when running a build
6e71c27 bitbake: toaster: add project main edit page
8a3789a bitbake: toaster: move bldcontrol initial_data fixture to code
5aba3d7 bitbake: toaster: improved Project models
6cfb76f bitbake: toaster: add fields for sourcedir and builddir paths
5ba68f3 dev-manual: Added the section on "Creating Partitioned Images"
b72dc51 ref-manual: Provided canonical GP license names.
2dec5d5 ref-manual: Replace a couple old references to "task-*"
d77c4cb kernel-dev: Fixed a wording typo.
653b557 bitbake: "per-package" should say "per-recipe"
8b7116d bitbake: Updated the the example 'bitbake -h' output to match the actual output, which has been recently patched to fix the '-S SIGNATURE_HANDLER, --dump-signatures=SIGNATURE_HANDLER' option.
5bcda42 bitbake: fetch2: Add module for ClearCase (ccrc://)
13a03f2 bitbake: command/runqueue: Fix shutdown logic
4db62df wget: Remove unneeded DEPENDS line
ba3f990 kernel-dev: Fixed typo
ca4e42a kernel-dev: Fixed link to BitBake command:
6aeed29 ref-manual: Updated some glossary variables:
ed3cd02 dev-manual: Removed not to the PTEST_ENABLED variable.
93ad63c ref-manual: renamed "do_package_write" to "do_package_write_*"
8e280b4 yocto-project-qs: Updated the note on working with proxies.
ab3e880 ref-manual: Fixed grammar problem in FILES variable description.
1b7c45e ref-manual: Modified licensing verbiage for GPLv3
4767787 ref-manuala: Updates to support links to BB manual
1fc9548 ref-manual, yocto-project-qs: Fixed some references to BitBake Manual.
0558a37 alsa-tools: Disable use of GTK+ when not using X11
8933810 buildtools-tarball: Add wget to buildtools-tarball
ec70845 shadow: Add PACKAGECONFIG for acl/attr
0ef3734 libomxil-0.9.3: Remove versioning for .so files.
231c737 bitbake: bitbake: update help message for dump-signatures
d74b882 bitbake: bitbake-user-manual-metadata.xml: fixed some example whitespace issues
335defe bitbake: bitbake-user-manual-metadata.xml: KERNEL_FEATURES example updated.
c723fa0 bitbake: bitbake-user-manual-metadata.xml: Fixed whitespace
c08d724 bitbake: bitbake-user-manual-metadata.xml: Removed fakeroot from list
eb169fe bitbake: bitbake-user-manual-metadata.xml: Added second conditional metadata example.
49627bb bitbake: bitbake-user-manual-metadata.xml: Adding some flag examples.
e83032c bitbake: bitbake-user-manual-metadata.xml: Edits to some operators
af4f1f4 bitbake: bitbake-user-manual-execution.xml: Minor edits to execution chapter.
696973a bitbake: bitbake-user-manual-intro.xml: More edits to the intro chapter.
4df50d3 bitbake: bitbake-user-manual-intro.xml: Minor edits to start of intro chapter
b62b682 bitbake: bitbake-user-manual-metadata.xml: Replaced "populate_staging"
435e425 bitbake: bitmake-user-manual-fetching.xml: Added transportuser parameter for SVN
c270e24 poky.conf: Catch up with qemu-config rename -> packagegroup-core-device-devel
4d2ac6f rootfs: Remove the extraneous install directory
bcadbb6 pseudo: uprev to 1.6.1
5be57ba kernelshark: Remove trace-cmd from the kernelshark package
e26aae7 libatomics-ops: Extend to nativesdk
c79b452 grub_git: bump version, remove patch
551e456 xf86-video-intel: disable non-deterministic tests for libX11
ee2b26f qemu: security patch for CVE-2014-3471
348102a oprofile: backport two patches to support e500mc/e6500
91bafd5 strace: fix 64 bit process detection
ece74df python-numpy: add support for powerpc64 architecture
a237888 insane.bbclass: avoid QA errors for n32 kernel
478dbd3 diffstat: update to version 1.59
01e556c gcc: update *LIBC_* linker relocation reglex
c0585ca openssh: use pidfile in initscript
cd9ab37 eglibc: rewritten tzselect as posix sh and move it to tzcode package
8673b60 busybox: enable CONFIG_FEATURE_AWK_LIBM by default
c9a16c5 default-distrovars/multilib: update license whitelists to use canonical names
ba197e6 license.bbclass: canonicalise licenses when dealing with INCOMPATIBLE_LICENSE
a9710bc scripts/test-remote-image: use the scriptpath module
03e2fb2 scripts/oe-selftest: add command-line parsing and options
172c560 mkefidisk.sh: Reduce output and add verbose flag
049100a mkefidisk.sh: Make the rootfs copy the last step
db162c6 mkefidisk.sh: Add die() and cleanup() routines
fd8a230 mkefidisk.sh: Improve logging
da68264 mkefidisk.sh: Copy the EFI dir recursively
88045c9 mkefidisk.sh: Add gummiboot support
7f595ea mkefidisk.sh: Add mount error checking
3213ab4 mkefidisk.sh: Use all caps for volume names
b163ba1 initscripts: Add support for /etc/default/urandom
0327db6 initscripts: make hostname.sh coreutils-compatible
82ef864 initscripts: Use current date as an additional source of entropy
769b0f3 initscripts: parametrize random seed file location
00017b4 initscripts: save /etc/timestamp with seconds accuracy
b573ae8 initscripts: bootmisc.sh: Make sysctl -p honor VERBOSE
779f845 rpm: compile rpmqv.c instead of rpmqv.cc
6cb4ba9 libgpg-error: fix pkgconfig.patch
63ee154 grub-core: fix endianness problem
7d1fed2 lz4: update to latest
c71a1e1 common-mingw: force ac_cv_func_mmap_fixed_mapped=no
6403cd0 populate_sdk_base: ensure that filenames with empty space character are handled
f07c17d python-distribute: add nativesdk to BBCLASSEXTEND
d984fcf libdrm: enable freedreno experimental support
493e1db libdrm: upgrade to 2.4.54
449c535 subversion: Disable make install parallelism
04e45f0 license.bbclass: fix indentation in python function
1f45232 subversion: neon support was dropped, switch to serf
93bc890 serf: Add new recipe (needed by subversion for http support)
012c5c1 libatomic-ops: Add BBCLASSEXTEND for native (to support bdwgc-native)
0662aa8 bdwgc: Add PACKAGECONFIG for libatomic-ops
d66c567 oeqa/controllers/beaglebonetarget.py: fix deploy when kernel file is a broken link
929e48e oeqs/selftest: Added test case decorators for toaster
1bec8d6 gmp: use PACKAGECONFIG to address readline dependency
46ab196 flac: explicitly disable checking for nasm
14735be oeqa: fix return status in pam.py to match shadow-4.2.1
012a572 shadow: upgrade from 4.1.4.3 to 4.2.1
3ab35e4 man-pages: Upgrade to 3.70
9df9a8c libpod-plainer-perl: Upgrade to 1.04
704a4ba gnupg: Upgrade to 2.0.25
61d4e80 lzo: Upgrade to 2.08
774c339 squashfs-tools: Upgrade to 4.3
5effba2 kmod: Upgrade to latest git
4971feb kbd: Upgrade to 2.0.2
58e3c4d qemu: exclude some ARM EABI obsolete syscalls
97899bc eglibc: check for required distro features
d418bed python: Forcibly disable tk
fe14f99 xserver-xorg: Fix build determinism problem
a0b99a8 gnutls: Fix floating libidn dependency
f4bb0d0 libpcap: Fix floating dbus dependency
9837b8e fontcache: Fix build dependency errors
3363638 neard: Fix typo in patch leading to parallel make race
490431f btrfs-tools: Upgrade 3.12 -> 3.14.2
a00faba libconvert-asn1-perl: Upgrade 0.26 -> 0.27
289cf8d python-pycurl: Upgrade 7.19.3 -> 7.19.3.1
76f75e9 subversion: Upgrade 1.7.7 -> 1.8.9
24bee50 cross-canadian: Fix shlibs directory after recent shlibs changes
da223ec nasm: Update 2.11.02 -> 2.11.05
bb8573b powertop: Upgrade 2.5 -> 2.6.1
ba34cfc gccmakedep: Upgrade 1.0.2 -> 1.0.3
598357b mdadm: Upgrade 3.3 -> 3.3.1
eaae172 gdb: Upgrade 7.7 -> 7.7.1
9996548 python-scons: Upgrade 2.3.0 -> 2.3.2
c882d7f python-docutil: Upgrade 0.11 -> 0.12
b56d2f5 pkgconfig: Drop version from RPROVIDES
391704d libpcap: Avoid libpcap build error when libnl1 is involved
03c6fd0 ltp: use "foreign" automake strictness
68d1ee3 oprofile: use "foreign" automake strictness
9406b1f libmad: use "foreign" automake strictness
9da7e68 which: use "foreign" automake strictness
d779dce libid3tag: use "foreign" automake strictness
36360f2 bzip2: use "foreign" automake strictness
93f54c0 lz4: Add self to maintainers list
cd843b3 gstreamer1.0-omx: Use variables for CORE_NAME processing.
7023edc perl-rdepends: Add perl as perl-misc/${PN}-pod runtime dep
3fbfc6d setserial: add missing depends on groff-native
fd42fc4 libxml2: enable catalog support
fc4c43a xserver-xorg.inc: add missing dep for xmlto
53b68e0 xorg-lib-common.inc: add missing dep for xmlto
c61cc3c xorg-proto-common.inc: add missing dep for xmlto
03aa23a alsa-utils-native: add missing dep for xmlto
c95dec0 xmlto: add version 0.0.25
605e1f3 docbook-xml: add docbook-xml-dtd4
38d438c docbook-xml: add docbook-xsl-stylesheets 1.78.1
d2c59d3 scripts/test-remote-image: add --skip-download option
eb86725 file: remove dump and filesystems
4c78b0a file: fix perl reported as awk
2e822bf git: update to v2.0.1
bb0b765 classes/insane: Show QA check name
5b07620 Remove long-deprecated "task-core" backward compat for packagegroups.
be0fea1 pseudo_1.6.0.bb: uprev to pseudo 1.6
037aa4a groff: fix PERLPATH
562cc69 xorg-driver: use PACKAGEFUNCS instead of populate_packages_prepend
2db009d default-versions: remove xf86-video-intel
7b455c5 xf86-video-intel: upgrade to 2.99.912
eca8a56 wic: Error on zero-sized partitions
d08c2ce wic: Add kickstart reference to help system
d8b65a5 wic: Add wic overview to help system
83e5c09 wic: Add vfat support
f398687 wic: Error on parted non-zero error code
1dcdd87 bitbake: toasterui: fix build - project identification
e7fa0c3 bitbake: toaster: new project page implementation
d19b784 bitbake: toaster: whitespace fix
9cfa66b bitbake: toaster: add automated login in new project page
cff1935 bitbake: toaster: add project pages
6b62a0f bitbake: toasterui: Show in the log that ToasterUi is ready to receive events.
c35b678 bitbake: toaster: automatically enable applications
5790b60 bitbake: toaster: automatically discover urls.py files
1712c71 bitbake: toaster: remove strftime calls in filters
9e99bcf insane: Ensure do_package_qa happens after do_packagedata
1cb9f7b lib/oe/image.py: check the rootfs size against IMAGE_ROOTFS_MAXSIZE
d836437 oeqs/selftest: Added test case decorators for the rest of selftest testcases except toaster
79dae06 xserver-xorg.inc: add PACKAGECONFIG for xmlto
e56bc99 xorg-lib-common.inc: add PACKAGECONFIG for xmlto
91c7cba xorg-proto-common.inc: add PACKAGECONFIG for xmlto
8d7f9e6 alsa-utils: add PACKAGECONFIG for xmlto
4febf20 cups.inc: Delete obsolete "PROVIDES" line.
d8ef355 wic: Add general 'plugins' help topic
f2ab619 wic: Add dummy subcommand and usage strings
b5dceca wic: Print error if a partition specifies an invalid --source
1908751 wic: Add help text for 'wic list source-plugins'
40769b7 wic: Add command to list available source plugins
ae33bda rpm: disable -Wno-override-init
68df093 libnss-mdns: replace hardcoded /etc with ${sysconfdir}
aa460d8 libnss-mdns: support ipv6 in lookups
6156379 libpcap: fix depends on libnl
ba46e51 Move boot media to /media/realroot for easy access after boot.
360171c package.bbclass: add a stub implementation of package_name_hook
28270fc bootimg.bbclass: Add parameter to specify HDDIMG volume ID
2f7c92c init-install-efi.sh: improve hard drive searching process
ae724e4 init-install-efi.sh: fix to handle the boot partition correctly
90362a4 gcc: Ensure c++ includes are in /usr/include/c++/${BINV}
76940ed builder: removed setting of BB_NUMBER_THREADS and PARALLEL_MAKE
d3a3f4b weston: make webp explicitly configurable
4956ae7 cogl-1.0: update to 1.18.2
7b861d0 init-install.sh: Verify /sys based files exist before displaying them
949bf15 base-passwd: install passwd and group atomically
7e6eeee kernel.bbclass: update KERNEL_IMAGE_MAXSIZE
0903a6b gzip: move uncompress bin to avoid cross-fs link
e35d626 package.bbclass: Generate runtime-rprovides data
09898d6 insane: Split do_package_qa into a separate task (from do_package)
3ead62a package.bbclass: Rewrite shlib_provider handling to include RPATH
db788ac package.bbclass: Improve shlibs pkgdata file format
a20cc90 package.bbclass: Rewrite sonames data structure to include library path
adb89b1 package.bbclass: Improve shlibs needed data structure
6879c3c maintainers.inc: add info for libical
4730941 sanity.bbclass: Update minimum git version to 1.7.8
6686f75 adt_installer: not download repo page
018e85e adt_installer: check the result of updating opkg
f629045 adt_installer: fix syntax error
82999c1 adt_installer: remove unnecessary variable
5d179f6 binconfig-disabled: add a default value and comment for BINCONFIG
9192fc1 xserver-xorg: fix xshmfence autodetection
6bb1bef xserver-xorg: add PACKAGECONFIG for libunwind
5a194a3 bluez5: upgrade to 5.21
e206dfa libcroco: disable /usr/bin/croco-6.0-config
0a6dcf2 libcap: use PACKAGECONFIG for attr and pam configurations
42806c7 groff: fix bindir transaction error
5f27f55 rpm_5.4+cvs: Add RPM community tree for future development
7bf5341 package_rpm.bbclass: Should be using HOST_* not TARGET_*
f171799 rpm: Replace patch with backport from SCM version of RPM5
fe483ca rpm: Upgrade to 5.4.14
107ef51 db: Add version 6.0.30
e73deac perl, perl-native, perl-ptest: upgrade from 5.14.3 to 5.20.0
93d77b6 kexec-tools: upgrade to 2.0.7
02cdce9 libtasn1: update to 4.0
3d58c59 gnutls: update to 3.3.5
c8a68bb db_5.3.*: Upgrade to 5.3.28
a5531a2 bitbake: fetch2/svn: Add transportuser parameter
0538574 bitbake: lib: fix no newline at end of file
edf8cb1 bitbake: toaster: fix no newline at end of file
359f087 yocto-bsp: Drop GLIBC_ADDONS setting
05c47cc yocto-bsp: Update qemu inclusion lists
868a234 grubtarget.py: Change 'test' GRUB entry selection method
581a06a meta-yocto-bsp: oeqa/controllers: add GrubTarget
57bbb1a Revert "meta-yocto-bsp: oeqa/controllers: add GrubTarget"
b21f799 build-appliance-image: Update to master head revision
cc7d457 libxml-parser-perl: fix do_compile failed with unrecognized option '-Wl, -O1'
301c3f9 openssh: avoid checking empty passwords to mess up with PAM modules
9674819 autotools.bbclass: remove autotools_set_crosscompiling
fd4eca0 scripts/contrib/verify-homepage.py: add a script to verify HOMEPAGE
ab1dce9 bitbake.conf: automatically add libexecdir/BPN/.debug to -dbg
cc49165 glib-2.0: silence QA warnings about libraries outside ${libdir}
ae03111 Added testcase decorator to use in logging. Added class decorator LogResults that outputs test results in separate log file.
52a6d20 elfutils/elfutils-native: Fix patching generated files
2c59db6 lib/oe/package_manager.py: Fix _pkg_translate_smart_to_oe function
70c933e libav: add PACKAGECONFIG for theora, libvorbis, speex and openssl
5f1f863 gtk+: Add PACKAGECONFIG for directfb
aa76de9 adt_installer: Fix real envrionment script issues
6ebd0a8 toolchain-scripts: Add handling for CANADIANEXTRAOS
64e2bad meta: fix no newline at end of file
3bc357f runqemu-extract-sdk: normalize paths to improve output
fbe1291 qemu: fix qemu-native pkg-config paths
5aec84d init-install-testfs.sh: add '--hotkey x' to 'test' menuentry
49b416d bitbake: templates: Added newline character to end of script.
7043956 bitbake: bitbake-user-manual-ref-variables.xml: Edits to OVERRIDES variable.
0b96a4b bitbake: bitbake-user-manual-execution.xml: Minor fixes.
538cbf4 bitbake: bitbake-user-manual-intro.xml: Minor fixes mostly grammar adjustments.
ac8ac17 bitbake: bitbake-user-manual-fetching.xml: Small fix in Git Fetcher
3a7258a bitbake: bitbake-user-manual-execution.xml: Typo and grammar fixes.
00ade7e bitbake: bitbake-user-manual-execution.xml: Edits to "Providers and Preferences"
0736649 bitbake: bitbake-user-manual-fetching.xml: Small wording change.
157c80f bitbake: bitbake-user-manual-ref-variables.xml: Edits to PROVIDES variable.
41b46d7 bitbake: bitbake-user-manual-style.css: Added permalink style for display
d3e1ce6 bitbake: bitbake-user-manual-customization.xsl: Added support for variable permalinks.
dd09b07 bitbake: template: Added XSL template to support variable glossary permalinks.
ca77f37 bitbake: bitbake-user-manual-intro.xml: Edits to "Obtaining BitBake"
296bb74 bitbake: bitbake-user-manual-intro.xml: Basic proofreading, grammar fixes.
1adedec scripts: fix no newline at end of file
c8391d0 ref-manual, yocto-project-qs: Fixed required Git to 1.7.8+
d321a50 template: Added new line at end of file so vi does not throw error.
5bdb231 templates: Added new line to avoid vi save warning.
8c26482 ref-manual: Added USE_VT variable description.
9329d7c ref-manual: Added SYSVINIT_ENABLED_GETTYS variable description.
cc8c7da ref-manual: Added the INITRD_IMAGE variable description.
8d0d487 ref-manual, bsp-guide: Added cross-references for two variables.
980ad4e ref-manual: Added the LICENSE_FLAGS_WHITELIST glossary description.
68bd063 ref-manual, bsp-guide: Added several cross-references to LICENSE_FLAGS.
a53950a ref-manual: Added the LICENSE_FLAGS variable description.
08d68e5 ref-manual, dev-manual: Updates to support PTEST_ENABLED.
2284771 ref-manual: Edits to INITSCRIPT_PARAMS variable.
11bf70b dev-manual: Fixed a couple typos in the Template section.
c74284d ref-manual: Some minor fixes to the QA Checks chapter.
695946e ref-manual: Edits to OVERRIDES variable.
0a1d343 ref-manual: Fixed link back into the BB manual.
f8d3114 ref-manual: Edits to PROVIDES variable.
c5ca7cd mega-manual: Added support for variable permalinks in the glossary.
9eb3e85 documentation: Added permalink display styles to CSS files.
6b5398f ref-manual: Added support for variable permalinks in the glossary.
f47e967 template: Added an XSL template to support glossary variable permalinks
c13d40a ref-manual: Added the BASE_LIB variable to the glossary.
ece1d1a ref-manual: Added TUNE_PKGARCH_tune to the variable glossary.
0a45b37 ref-manual: Added ABIEXTENSION variable to the glossary.
9efc700 ref-manual: Added TUNEABI_OVERRIDE and TUNEABI_WHITELIST to glossary.
5e63079 ref-manual: Added TUNEABI to glossary.
359b9f4 ref-manual: Added TARGET_CC_KERNEL_ARCH variable to glossary.
0d287cd ref-manual: Added TUNECONFLICT[feature] to glossary.
2123c4d ref-manual: Added TUNEVALID[feature] variable to glossary.
81a065b ref-manual: Added three new tuning variables to glossary.
e2f04f4 ref-manual: Added TUNE_LDARGS and TARGET_LD_ARCH variables.
590b6cf ref-manual: Added TUNE_ASARGS and TARGET_AS_ARCH variables.
1c0229e ref-manual: Added TUNE_ARCH variable and edited TARGET_ARCH.
a548944 bsp-guide: Fixed typo.
2fb201e profile-manual: Fixed bad title.
01af798 dev-manual: Fixed a mult-line <ulink> cross-reference
418af20 mega-manual.sed: Added line to process profile-manual.
58744f8 groff: Fix build on Fedora 17 for 1.18.1.4
ffd4e50 gawk: fix optional dependency mpfr
8a18578 groff: remove redundant code snippet
0ed5a13 python3: fix builtins imports
247c9a1 adt_installer: Fix sed file not found error
9e1c869 oeqa/selftest/_toaster.py: fix 'IndentationError' issues
676c1f5 oeqa/selftest/toaster.py: renamed to _toaster.py
6b5484d Revert "libusb: add missing build dependency on udev"
61ab649 classes/kernel: Use full path for symlink in update-alternatives.
ddb70af populate_sdk_base: Remove confusing echo
b0a9f30 populate_sdk_base: add auto-completion in setup
4d96116 classes/report-error: tweak summary message
20561ed libusb: add missing build dependency on udev
dbb4c73 test-dependencies.sh: Return non-zero return code when there was some failure detected
4e2656d sstate-diff-machines.sh: Return non-zero return code when there was some failure detected
442efc3 patch.bbclass: unset TMPDIR after use
0ae5aad recipes-devtools: fix segfault in lib32-gcc with "." multilib_dir
184dddf initrdscripts: Try to boot if boot label is unknown
946fb18 distutils/distutils3: Fix bashism
68824d9 u-boot-fw-utils: install config file
c5713fe createrepo: RDEPENDS on libxml2-python
a3cbd2d sudo: upgrade from 1.8.10p2 to 1.8.10p3
8eea757 initramfs-framework: get rid of udev-utils
d3f11f8 systemd: remove udev-utils, move 'udevadm' to udev package
9bb5c74 udev: remove udev-utils, add 'udevadm' to udev package
2ecb899 udev-cache.default: set PROBE_PLATFORM_BUS to "yes" by default
e508220 udev: update init script for conditional probing of platform bus
3da0162 own-mirrors: Add gitsm:// mirror support
b7c077a gtk-doc: Add pkgconfig inherit
c3c1ceb libsdl: Convert to use pkg-config in internal m4 macros
0f182ed gst-openmax: Add missing pkgconfig inherit
94dbe85 lib/oe/package_manager.py: Add processing for alternative SDK_OS
e110809 gcc-cross-canadian: Add configure-target-libgcc
d9cdeac populate_sdk: Fix TOOLCHAIN_TARGET_TASK_ATTEMPTONLY implementation
03679b7 classes/package_rpm.bbclass: Fix SDK Suffix reference
9729482 curl: Convert CURLGNUTL to PACKAGECONFIG
224a183 ca-certificates: Update to 20140325
2f9fd47 mobile-broadband-provider-info: Update SRCREV
0edf844 man-pages: Update to 3.69
4bbfa0d xcb-util-renderutil: Update to version 0.3.9
6e392ab curl: Update to 7.37
ee14096 gnupg: Update to 2.0.23
9624793 liburcu: Update to 0.8.4
c23e597 libusb1: Update to 1.0.19
1bcd736 sqlite3: Update to 3.8.5.0
02a6b7b u-boot: Optionally deploy an environment or script file
f3d2e32 cmake.bbclass: restore OECMAKE_SOURCEPATH
540b7a1 binutils: Add fix for recent patch on older gcc
ad07178 binutils: Apply the proper fix for PR 16428
7f6a92b oe-pkgdata-util: fix help text
50264f7 list-packageconfig-flags: improve option parsing
1ed4c5d list-packageconfig-flags: filter out doc and defaultval varflags
2b4e150 scripts: consolidate code to find bitbake path
3c7b5ec syslinux: fix isohybird overflows on 32 bit system
cc480ea nfs-utils: fix the --with-statdpath= flag
df7f584 gummiboot.bbclass: Ensure MLPREFIX is applied to depends flag
6d20145 grub-efi.bbclass: Ensure MLPREFIX is applied to depends flag
e5b5239 syslinux.bbclass: Ensure MLPREFIX is applied to depends flag
cef0d82 eglibc (2.19): fix hardcoded /sbin path
d0f01d8 initscripts: update populate-volatile.sh
953b01e nss-3.15.1: fix CVE-2013-1739
b2aa82c mesa.inc: remove '-' suffix in substitution of package names
f197918 dbus-test: fix incorrect checksum
d340865 mkefidisk.sh: Allow symlink for device
1f0817c iproute2: upgrade to 3.15.0
135ad14 harfbuzz: upgrade to 0.9.29
0a4c876 bluez5: upgrade to 5.20
e612e18 scripts/test-remote-image: add value check for rootfs fstype, change method name used.
7b45316 oeqa/targetcontrol.py: Separate the matching of supported image fstypes from the resulting value check.
d7b3683 meta-yocto-bsp: oeqa/controllers: add GrubTarget
809350a init-install-testfs: create signature file for master image
a8f453d init-install-testfs: fix typo
566cba1 oe-core/init-install-testfs.sh: do not overwrite /etc/mtab if the link already exist
94fea43 init-install-testfs: add grub serial line support
7c1a975 bitbake: toaster: Fix spacing and layout in no image files notification
fee3a88 bitbake: toaster: display message if no images are generated
457091d bitbake: toaster: Add performance testing script
7ccbea9 bitbake: toaster: refactor the target page
f3d0846 bitbake: build.py: Ensure shared work siginfo files are written to the correct location
3df8773 sstatesig: Add try/except around the stat calls
2fcaad2 sstate: Fix shared work preconfigure task handling
d95ada9 poky.conf: Add gitsm PREMIRRORS
8afa4e7 local.conf.sample: Add sdl to nativesdk qemu PACKAGECONFIG
5b1c329 bitbake: bitbake-user-manual-fetching.xml: Grammar, typo, and tweaks.
8be77bb bitbake: bitbake-user-manual-style.css: Removed dead .PNG file
7455139 bitbake: bitbake-user-manual: Added permalink support.
c65de86 bitbake: bitbake-user-manual-customization.xsl: Removed stale TOC variable.
d87cb56 bitbake: bitbake-user-manual-fetching.xml: Edits to the Git Submodule fetcher section.
77166a2 bitbake: bitbake-user-manual-fetching.xml: Added new Git Submodule Fetcher section.
655e2ba dbus: don't override EXTRA_OECONF
dae258a kernel-module-split: Fix KERNEL_MODULE_AUTOLOAD handling
2934b25 lttng-modules: update to 2.4.1-stable latest
3d97232 ref-manual: Edits to several tasks that do a bit of "cleaning"
d785a16 dev-manual, yocto-project-qs: New section on working with source files.
45a1c42 kernel-dev: Edits to "Working with Out-of-Tree Modules"
5112dbd dev-manual: Edits to "Creating a Custom Template Configuration Directory"
99caeda ref-manual: Added new section on general migration points.
7dd70a8 ref-manual: Corrected wrong class name.
daf8183 ref-manual: Fixed a typo in the IMAGE_TYPES variable.
5a143d8 ref-manual: Edits to the FAQ entry on getting source and firewalls.
f82569f ref-manual: Fixed a link to the BitBake User Manual.
ac6bdb4 dev-manual, kernel-dev: Provides some cross-reference to "clean" stuff.
cf0be83 ref-manual: Expanded on the "clean" tasks.
a92fcf1 documentation: Updated style sheets to remove unused .PNG files.
d994d0b ref-manual: Edits to "atom-pc Board Support Package (BSP)" section.
72beb19 ref-manual: Added ptest default build info to migrating section.
4ff75a5 ref-manual: Fixed a typo in one of the QA descriptions.
ad76aa0 dev-manual: Small edit to locating the race failure.
7755de2 dev-manual: Second draft of make race section.
1daa2c0 dev-manual: First draft of new section on debugging race conditions.
a19f575 dev-manual, kernel-dev, ref-manual: Updated task name usage.
50af2dc ref-manuals: Edits to the STAGING_DIR_HOST variable.
088da28 ref-manual: Edits to some STAGING* variables.
1657abe ref-manual: Added 17 new STAGING* variables to the glossary:
66e3891 template: Removed the "d:" character namespace prefix.
0f6128e kernel-dev: Updated some TOC generation XSL parameters.
0614ea7 mega-manual: Added TOC control.
1d870a7 kernel-dev: Added an embedded section.
2f7fc00 mega-manual: edits to make the TOC better.
6aaab1a yocto-project-qs: Added XSL templates to support permalinks.
e62a5aa profile-manual: Added XSL templates to support permalinks.
8a072df kernel-dev: Added XSL templates to support permalinks.
3c22ec9 dev-manual: Added XSL templates to support permalinks.
705027d bsp-guide: Added XSL templates to support permalinks.
439c776 adt-manual: Added XSL templates to support permalinks.
5aa464c ref-manual-customization.xsl: Changes to custom layer to support permalinks.
90497d8 template: Added XSL stylesheets to support permalinks.
1f6c99d yocto-project-qs: Removed specific sato 50 Gbyte note
b503491 yocto-project-qs: Edits to "What You Need and How to Get It"
926a8ee bsp-guide: Edits to "BSP Layers" section adding locator info.
10996cc yocto-project-qs: Fixed inconsistency with storage spec.
d9ce6c7 dev-manual: Edit to "Package Archtiture" section.
65cf76c kernel-dev: Added new "Building Out-of-Tree Modules on the Target" section.
3cb0463 dev-manual: Edits to "Writing a New Recipe"
59b50ea dev-manual: Edits to "Creating a Custom Template Configuration Directory"
95a5fad dev-manual: Edits to the "Understanding Recipe Syntax" section.
d57b5e5 ref-manual: Updated the do_fetch closer look for checksum behavior.
a456afa dev-manual: Updates to the "Understanding Recipe Syntax" section.
84ee8c6 ref-manual, dev-manual: Updates for custom template configuration directory.
fae1d7d dev-manual: Added reference to QA checks in the "Packaging" section.
1b68137 ref-manual: Reorded LSB image types to be together.
f1dc91c ref-manual: Edits to the IMAGE_DEVICE_TABLES variable.
a3b8282 dev-manual: Edits to the "Making Images More Secure" section.
e891596 ref-manual: Edits to the "Images" section.
2aba525 ref-manual: Updates to several variables.
f339491 linux-yocto/3.10: update to v3.10.43
869e3d7 linux-yocto/3.14: enable mpc8315e NAND and Yaffs2 gcc 4.9 fix
3b65c42 linux-yocto/3.4: update to v3.4.91
c9743d3 linux-yocto/3.14: update to v3.14.5
ddab1a5 linux-yocto/3.10: update to v3.10.41
053620a meta-yocto-bsps: update 3.14 SRCREVs
79e7636 mpc8315e-rdb: add the example about booting from jffs2 root
e3dc178 mpc8315e-rdb: add the jffs2 image support
7eb1230 mpc8315e-rdb: bump to linux-yocto 3.14
55b4cff ghostscript: fix sizeof(GX_COLOR_INDEX_TYPE) not equal to ARCH_SIZEOF_GX_COLOR_INDEX on mips
24ca3ae ghostscript: upgrade to 9.14
1709ec7 qmmp: upgrade to 0.7.7
3ea6ebb directfb: upgrade to 1.7.4
cb25932 libnewt/libnewt-python: upgrade to 0.52.17
55c8588 controllers/edgeroutertarget.py: enable dynamical determination of rootfs type
1655fe2 controllers/beaglebonetarget.py: enable dynamical determination of rootfs type
d5deca2 beaglebonetarget.py: Add support for get_extra_files() classmethod
e105c82 maintainers: Update directfb/ghostscript/libnewt/qmmp ownership
02eb862 hwlatdetect: fix PV
a37e09e hwlatdetect 0.85: fix variable ordering
14058e8 dpkg: Security Advisory - CVE-2014-3127
4eea29a dpkg: Security Advisory - CVE-2014-0471
c44d7b5 libtiff: Security Advisory - CVE-2012-4564
9d40ce5 libpam: Security Advisory - CVE-2014-2583
6aa8d74 package_ipk.bbclass: Support hierarchical feed
5a6f1c0 perf: add slang to the dependencies
317224e Revert "populate_sdk: verify executable or dynamically linked library"
ee0f647 relocate_sdk: Skip to do relocation if the file size is less than 64 byte
9f7d599 cups: enable cups-str4402.patch
d69608c dbus-native: dbus-native: do_compile failed on selinux.c on CentOS 5.10
7f8a53a kexec-tools: fix warning about patch could not be found
01fb5bb wget: use GnuTLS instead of OpenSSL
4dae6c1 directfb: fix-compilation-with-zlib.patch merged upstream
c7bfbab gawk: ensure cross compiling doesn't try to remove host files
f6ca3ce tzcode: update to verison 2014e
b4b5443 tzdata: update to version 2014e
f2a104d archiver: create dir 'B' explicitly while WORKDIR changed
e95d2f2 image-vmdk.bbclass: set timeout to 1 second
48b1390 systemd: check IFLA_VLAN_PROTOCOL
362ef0a wpa-supplicant: upgrade to 2.2
763331d connman: upgrade to 1.24
79a3a77 gcc-configure-common: Address problems with gengtype
c56c9a2 kernel-module-split: Add support for KERNEL_MODULE_AUTOLOAD and KERNEL_MODULE_PROBECONF
3476a49 binconfig-disabled: Add class and use
3a88df9 alsa-tools: Add missing pkgconfg dependency
f736833 maintainers: Update package ownership
5cc9702 neard: fix more parallel build issues
a08ef9a native.bbclass: Properly define directories
6ad8d64 bitbake.conf/qemu: Move QEMU_OPTIONS to qemu.bbclass
0404123 qemuwrapper-cross: Use QEMU_OPTIONS
7b0e2e9 bitbake.conf: Add QEMU_OPTION for ppc7400 as used by qemuppc
ce4cd2c git: don't hardcode the full path to perl
9cfd10d buildstats-summary.bbclass: Import useful bbclass from meta-mentor
62cf222 git: revert to wrapper based relocation
5d6ffdc busybox: handle syslog related files properly
a7d0c85 curl: control ipv6 support based on DISTRO feature
d76e718 gstreamer1.0-rtsp-server: depends on libcgroup and gstreamer1.0-plugins-base
634c19e stat: use update-alt for stat
bcef589 e2fsprogs: use update-alt for chattr
03def88 texinfo-dummy-native: Fix dummy scripts failing when paths contain capital Es
5452824 default-distrovars.inc: Remove unused variable 'LIMIT_BUILT_LOCALES'
88b8075 default-distrovars.inc: Remove unused variable 'LIMIT_BUILT_LOCALES'
445bd3b dbus: fixed mode if systemd service file
b462621 dbus: disable usage of dbus-glib explicitly
9713dcc bluez5: Force obex.service in /usr/lib
6467fb3 elfutils: Fix debugedit failure in grub
ec22f56 git: fixed typo in 'libexecdir' varname
7c7a25c scripts/test-remote-image: Add script for running runtime tests on remotely built images
5456f0e controllers/masterimage.py: Make testimage kernel naming pattern universal
4bc0206 oeqa/controllers/testtargetloader.py: add 'import os'
a5aa889 targetcontrol.py: Add a classmethod to get extra files needed by the target controllers
ac75630 core-image-testmaster.bb: add bzip2 to image
41d3000 masterimage.py: enable dynamical determination of rootfs type
af38422 targetcontrol.py: make possible dynamical determination of rootfs type
60846a0 kexec-tools: Refine kdump device_tree sort
f51c639 oprofile: Determine the root home directory dynamically
36c3e92 perf: split packging
949953d perf: fix broken shell comparsion in do_install
82fc96d nfs-utils: Do not pass CFLAGS to gcc while building
6f0eb99 sed: enable ptest support
bdf7343 v4 cups: Shouldn't link against libgcrypt without using gcrypt functions
d58401c texinfo.bbclass: native/cross uses dummy texinfo; target uses host's Texinfo.
0a4ba77 texinfo-dummy-native: Create recipe w/ scripts to stand in for Texinfo utils.
a681558 texinfo: Use texinfo-replacement-native as an alias for texinfo-native.
51d450f rootfs.py: change the logic in _uninstall_unneeded
e163522 bitbake: toaster: build control functionality
87b9927 bitbake: toastergui: fix built ETA calculation
74cd8c3 bitbake: xmlrpc: add support for token reusing
c7ae6bd bitbake: toaster: add function to get the database url
3bd8e9a bitbake: toaster: create models for bldcontrol and enable it
e09cb40 bitbake: toaster: initial bldcontrol application
8e0c54c bitbake: bb/utils: fix contains_any()
2261e9f bitbake: bb/tests/data.py: add tests for contains() and contains_any()
065fb5d bitbake: cache.py: print debug info when EXCLUDE_FROM_WORLD
dd50dfe rpm: Fix cpio 32 bit overflow issues on 64 bit inode filesystems
b5a928a bitbake: toaster: add Project class models to orm
9c3b53f bitbake: toaster: comment out bldcontrol migration command
e0a3495 Revert "fontconfig: enable 64 bit file support"
f365b56 update-rc.d: Allow to use different initscripts provider
0ba1d79 nfs-utils: unset CFLAGS for testlk build
e922be5 oe-core/init-install.sh: do not overwrite /etc/mtab if the link already exist
df956a6 oprofile: Add PTEST regression testing to oprofile
54f1528 gawk: remove dgawk and pgawk packages, merge gawk-common into gawk
e1acb6d gawk: fix module paths
7d8a0af libgcrypt: fix do_configure failed
63f3c39 python-gst: link python shared library to config directory
0670dd1 xorg-font-common.inc: remove shell debug option
a934aeb oeqa/utils/commands.py: add support for postconfig option
aed4216 gawk: fix libexec of the old 3.1.5 version
f89b331 libgcrypt: workaround ICE failure on mips with '-O -g'
b5f7bb1 xorg-xserver: disable DRI3 by default
0db73b4 mesa: upgrade to 10.1.3
0219124 mesa: add build-dependency on libxml2-native
212f81d glib-2.0: fix paths to test binaries
0c8a8e8 gdk-pixbuf: fix paths to test binaries
23d8d2b openssl: fix ptests
3255d58 openssl: upgrade to 1.0.1h
66d5be2 bitbake: bitbake: show wildcard appends for bitbake-layers
36a5f66 bitbake: toasterui: fix django settings environment value
07cd9a3 bitbake: toaster: add project related models
b68b74d bitbake: toaster: update toaster to run in managed mode
b610aae bitbake: toaster: startup script standalone mode
05cf6fe bitbake: toaster: startup script noweb mode
89fe052 bitbake: toaster: read database settings from the environment
506b5bd bitbake: uievent: retry on handler registration failure
e89db13 bitbake: xmlrpc: client - remove fatal errors
a5d01e9 bitbake: bitbake: move configuration reading code
307d0e1 wic: check if BBLAYERS is valid before use
567fec4 wic: default plugin type directory should be added only once
dfd9aa5 gnutls: upgrade to 3.2.15
b6ef8dc busybox: put udhcpc in background
f39d876 update-rc.d/useradd: Add additional dependecies
5f0634a generate-manifest-2.7.py: Add importlib
22f422f autogen-native: upgrade from 2.18.2 to 2.18.3
7c127aa file: upgrade from 5.17 to 5.18
c2e6395 grub-2.00: remove our 40_custom
ec53bfd grub-2.00: remove our 40_custom
5a49a24 fontconfig: enable 64 bit file support
0b7ea2a freetype: enable 64 bit file support
e248594 autoconf: don't disable the autoheader warnings
f852934 libxml2: fix python packaging for nativesdk
f0b9a7c libarchive: avoid dependency on e2fsprogs
7c0aa8f neard: fix for parallel build
77a4ac2 gawk: upgrade from 4.0.2 to 4.1.1
0fbc24b generate-manifest-3.3.py: Add importlib
4e2cfdb gstreamer1.0-rtsp-server: Add recipe to support gst-rtsp-server
7279de7 Added new test cases for bitbake modes (-e -n -p -r -R -c -k)
85dea57 systemd: update a uclibc specific patch to avoid segment fault error
22ff50f apr: upgrade to 1.5.1
cc86e8b apr-util: upgrade to 1.5.3
ff12256 readline-5.2: exclude autoheader
00a8a54 readline-5.2: use upstream's aclocal.m4 as acinclude.m4
ea4024a grep: upgrade 2.18 to 2.19
6ae56f2 clutter: update to 1.18.2
b7a33b7 cogl: update to 1.18.0
c0a910b mesa-demos: Use DEMOS_DATA_DIR.
65a8c4b mesa-demos: Add missing data files.
4a440b0 mesa-demos: Build with system data files
920642b Update tzdata to 2014d
7e7a5de Update tzcode to 2014d for zic fix
e711404 busybox: fix meta-yocto's bbappend's FILESEXTRAPATH
f2b265f poky-tiny: Update kernel version to 3.14
f9ac0cb image_types: Fix ubi filesystem return codes
a681520 resolvconf: Update to 1.75
aa40f4f cups: Update to 1.7.3
2fe752c man-pages: Update to 3.68
dfc9f90 libffi: Update to 3.1
83e5ef8 libcheck: Update to 0.9.13
fc1ac79 libxkbcommon: Update to 0.4.2
d2e1238 x264: Update SRCREV to match commit in upstream git repo
d047de7 grub_git: fix build warning->error
1380d51 qt4: add patch for GIF denial-of-service vulnerability
5bd2950 qt4: upgrade to version 4.8.6
4b616f0 elfutils: upgrade to 0.158
5f45b00 sanity.bbclass: Add libsdl-native check
5c8effa oprofileui-server/oprofileui/pcmanfm: Add missing intltool-native DEPENDS
8eac4e7 libcroco/libfm/menu-cache: Add missing gtk-doc class dependencies
9955b77 gsettings-desktop-schemas: Add missing DEPENDS on gobject-introspection-stub-native
c1de48a lame: Add missing DEPENDS on gettext-native
e5cf31c recipes: Add missing pkgconfig class inherits
905061e libfm: Ensure m4 directory exists
4a6fb07 toaster.bbclass: exclude variable dependency on toaster postfunc
7b0e38b qemu: upgrade to 2.0.0
79ac26c v86d: fix for SeaBIOS VGA BIOS compatibility
99006ef oeqa/controllers/beaglebonetarget.py: fix conditions for files copied to /boot
af49a09 diffstat: patches have now been submitted upstream
f9ac8c5 diffstat: fix autoheader warning due to missing AC_DEFINE template
ae642d3 socat: upgrade to 1.7.2.4
fd4a918 lrzsz: fix autoheader warning due to missing AC_DEFINE template
32111c4 genericx86: switch to Linux 3.14 from 3.10
60c40e5 bitbake: siggen: Print warning about tainted tasks
8a43a6a bitbake: build/utils: Fix broken exception handling
4a78f52 bitbake: bb.fatal: Raise a BBHandledException instead of exiting
91a164c bitbake: event: Add SkipRecipe event to replace SkipPackage
044296c bitbake: event.py: Allow passthrough of BBHandledException events
ab29933 bitbake: cookerdata: Improve error handling
a266670 bitbake: event: Fix event handlers to raise SkipPackage
fec42d3 util-linux: add sulogin to alternatives list
df1dc4e systemd: Upgrade 212 -> 213
0716ce4 libogg: upgrade to 1.3.2
dfe49a1 weston: make lcms explicitly configurable
dd1dacf weston: fix make-lcms-configurable.patch
482857a weston: drop superfluous --disable-lcms
f11d67a gzip: Avoid host contamination during build
4489f20 bitbake.conf: Set a dafault value for TUNE_PKGARCH
fe5bc38 gcc: Clean up configure_prepend and fix for mingw
3caca17 classextend: Fix crosssdk remapping for multilib
dce200f opkg-utils: Update SRCREV
1ef8100 combo-layer: fix revlist taking into account file_filter
4562f06 update-rc.d: fix to handle priority numbers correctly
80aece0 eglibc: Fix configure when re-building with gold
1491c57 gcc, uclibc: Add/Fix Upstream-Status in patches
b6bdb2b layer.conf: Add musl to safe recipes for exclusion
32ed599 gnu-config: Let it recognise *-*-musl* triplets
d73709f cross-canadian.bbclass: Recognise musl
28bb9dd image.bbclass: Remove dependency on ldconfig-native for musl
7e84ec1 multilib_header: Do not install mutlilib headers for musl
e06c0a2 tclibc-musl.inc: Add musl specific distro policy file
56d4f91 siteinfo, insane: Recognize musl specific triplets
5d14f3c dev-manual: Updates to the "Making Images More Secure" section.
8beca34 ref-manual: Updated example in extrausers.bbclass.
74cd14c ref-manual: Fixed a link to the PACKAGE_ARCHS variable.
d4f1951 ref-manual: Edits to the PACKAGE_ARCHS variable.
a6db9e7 ref-manual: Edits to the SDK_PACKAGE_ARCHS variable.
d9727ab ref-manual: Added the SDK_PACKAGE_ARCHS variable.
78a88ea ref-manual: Further corrections to the PACKAGE_ARCH variable.
870b846 ref-manual: Edits to PACKAGE_ARCH variable.
98b42bc ref-manual: Added the PACKAGE_ARCHS variable.
cb5cf01 ref-manual: Added the MACHINE_ARCH variable.
0b3adff ref-manual: Added the SSTATE_MIRROR_ALLOW_NETWORK variable.
1ddf03c ref-manual: Added EXTRA_IMAGECMD variable.
e07d2ed ref-manual: Added IMAGE_CMD variable.
888daaa ref-manual: Added the IMAGE_DEVICE_TABLES variable.
6d7e85a ref-manual: Added the IMAGE_ROOTFS_ALIGNMENT variable.
87280e0 ref-manual: Edits to the PACKAGE_PREPROCESS_FUNCS variable.
c0e41a1 ref-manual: Added the PACKAGESPLITFUNCS variable.
13afa78 ref-manual: Added the PACKAGE_PREPROCESS_FUNCS variable.
bcd59ab ref-manual: Edits to the SDKMACHINE variable.
9cb506b ref-manual: Edits to the UBOOT_MACHINE variable.
4fac0dd ref-manual: Edits to the LDFLAGS variable.
3cf5fee ref-manual: Edits to the TARGET_CXXFLAGS variable.
d234817 ref-manual: Edits to the CFLAGS and CPPFLAGS variables.
0b69f06 ref-manual: Added BUILD_OPTIMIZATION variable to glossary.
1532bfd ref-manual: Edits to the SELECTED_OPTIMIZATION variable.
57bd61e ref-manual: Edits to the "Making Images More Secure" section.
bd5973e ref-manual: Edits to the ROOTFS_POSTPROCESS_COMMAND variable.
3de0d39 ref-manual: Removed some extra space beyond the literal example.
28d5925 dev-manual: Updated the "Making Images More Secure" section.
8e9bfa5 ref-manual: another minor fix to the CPPFLAGS variable.
92e80f2 ref-manual: Took out the links to the "Making Images Secure" section.
74e21f3 ref-manual: More edits to some compiler passing variables.
1a8718c ref-manual: Edits to a few variables in the glossary.
acdafd5 ref-manual: Edits to the QA checks message section and insane.bbclass.
3dd477c ref-manual: Applied review edits to QA messages and insane.bbclass.
5948338 ref-manual: Added PRIVATE_LIBS variable and supporting links.
566b9bc ref-manual: Added HOST_CC_ARCH variable.
6b8dc79 ref-manual: Added TUNE_CCARGS variable and supporting links.
40a1732 ref-manual: Added TARGET_CC_ARCH variable and supporting links.
76e6f65 ref-manual: Added variables that pass compilers and their supporting links.
1071980 ref-manual: Added BUILDSDK_LDFLAGS variable and supporting links.
da5d2af ref-manual: Added TARGET_LDFLAGS variable and supporting links.
19d2f6f ref-manual: Added the BUILD_LDFLAGS variable and supporting links.
66625b1 ref-manual: Added LDFLAGS variable and supporting links.
59d810e ref-manual: Added new chapter on QA error and warning messages.
ba2221f ref-manual: Updated reference sections for environment setup scripts.
c2852ea bitbake: utils: avoid printing traceback on ExpansionError during parsing
429bb2a bitbake: fetch2: improve handling of two classes of URL parameter mistakes
91b6edd bitbake: Revert "toaster: toaster oe-selftest support"
6c62836 toaster: toaster oe-selftest support
d87d9e6 Update tzcode to 2014c
5c0975f Update tzdata to 2014c
269c8a5 ethtool: use serial-tests config needed by ptest.
963c8ea sstatesig: Move saferecipedeps handling to be earlier
0aad3eb openssl: add openssl-CVE-2010-5298.patch SRC_URI
b066f87 readline: use upstream's aclocal.m4 as acinclude.m4
385b2d4 readline: exclude autoheader from autoreconf
70400ff readline: add missing STRUCT_DIRENT_D_* symbols to config.h.in
41ccbfc tcmode-default.inc: Default to using gcc 4.9
88ddb5a gcc: add patch to fix errors with Decimal64 type
c42df8c i2c-tools: Add i2c-tools to the core
46c2aa4 linux-yocto-dev: Dynamic SRCREV update
594097f linux-yocto/3.10: bump kver to v3.10.40
c539cb5 beaglebone: enable the nowayout option for the watchdog
b9cd001 linux-yocto-rt/3.14: update to 3.14-rt5
3869eba linux-yocto/3.14: update to v3.14.4
ce5aadc bitbake: fetch2/hg: Fix missing proto param for hg checkout with user and pw
8cdc792 bitbake: bitbake-layers: show-cross-depends: add support for RRECOMMENDS
8ae64ff bitbake: bitbake-layers: show-cross-depends: ignore self-satisfied RDEPENDS
603f3fb bitbake: bitbake-layers: show-cross-depends: ignore global inherits
e124c0f bitbake: bitbake-layers: show-cross-depends: add option to ignore a layer
235f6c4 lighthttp: Use pkg-config for pcre dependency
030e09f libarchive: Use pkg-config for libxml2 dependency
191a2d3 libksba: Use pkg-config for dependencies
3b3f0a6 gpgme: Update to ensure we pkg-config for dependencies
ae5c64f libgcrypt: Use pkg-config for dependencies
8557df1 libxslt: Use pkg-config for dependencies
834245f gnupg: Convert to use pkg-config for dependencies
81bb1ab libassuan: Improve pkgconfig support
55d0ae6 libgpg-error: Extend pkgconfig support to m4 macros
cd7b437 devshell: Add interactive python shell
3bf2418 pseudo: Honor umask again
da9dd69 cmake: Avoid accidentally including libacl.h
19c6c2e ddimage: Support Mac OS
f3d62a9 eglinfo: updated to compile with mesa10+
77841c9 libxshmfence: add it to oe-core
ea442cd dri3proto: add it to oe-core
e01c99e distro_features_check.bbclass: fix searching whole list
0882d26 weston: upgrade to 1.5.0
87e2ce6 wayland: upgrade to 1.5.0
2f4f644 perl: stop perl-modules recommending perl-ptest
aba63ba babeltrace: fix alignment issue
359d2de lttng-tools: fix alignment issue
779d496 bluez5: upgrade to 5.19
284a9b5 perl: fix for CVE-2010-4777
c8645ca pseudo: handle fchmodat better, mask out unwanted write bits
2b7f8db python-native : Add patch to fix configure error with gcc 4.8.
b5784fe bitbake.conf: add default ${CPAN_MIRROR}
5b8dbfd mirrors.bbclass: add ${CPAN_MIRROR} option
45bbe35 initramfs-live-install: avoid using grub.d/40_custom
ab33209 taglib: Force a disable of the floating dependency on boost
894df44 guile: Update to 2.0.11 version
da3a742 byacc: Update to 20140422 version
7310361 flex: Update to 2.5.39 version
7e7f6ef gst-ffmpeg: fix for Security Advisory CVE-2013-0849
c884618 gst-ffmpeg: fix for Security Advisory CVE-2013-0850
f52f366 gst-ffmpeg: fix for Security Advisory CVE-2013-0856
e510fe6 gst-ffmpeg: fix for Security Advisory CVE-2013-0854
34e1e94 gst-ffmpeg: fix for Security Advisory CVE-2013-0851
dda4671 gst-ffmpeg: fix for Security Advisory CVE-2013-0858
0255fd5 gst-ffmpeg: fix for Security Advisory CVE-2013-0852
3577342 gst-ffmpeg: fix for Security Advisory CVE-2013-0845
6a13411 gst-ffmpeg: fix for Security Advisory CVE-2013-0868
e1134f7 gst-ffmpeg: fix for Security Advisory CVE-2014-2099
7721eac gst-ffmpeg: fix for Security Advisory CVE-2013-0865
46a9ffc gst-ffmpeg: fix for Security Advisory CVE-2014-2263
1532ea0 distro_features_check.bbclass: fix wrong indentation
122079e bitbake: data_smart: Fix an unusual variable reference bug
bf9ff3d bitbake: toaster: reduce redundant foreign key lookups
defe227 bitbake: toaster: sort columns properly after edit columns
8a8d717 bitbake: toaster: toaster oe-selftest support
bb86520 cups: fix for cups not building without avahi
5eb03b6 harfbuzz: upgrade to 0.9.28
32a811f wic: add support to look in all layers and get plugins
8af57a6 wic: add support to look in all layers and get .wks file
ac9707c libav: upgrade 9.x version to 9.13
646fd85 libav: upgrade 0.8.x version to 0.8.11
cdaee02 runqemu-internal: add "console=ttyS0" to ramfs image kernel parameters
250b58a quilt: Update to 0.63 version
0a23586 libpcre: Update to 8.35 version
00846f6 openssl: fix for CVE-2010-5298
7719f58 tiff: fix for Security Advisory CVE-2013-4231
058ce93 nss: CVE-2013-1740
64f8174 nss: CVE-2014-1492
09f471b subversion: fix for Security Advisory CVE-2013-4277
ab6c322 subversion: fix for Security Advisory CVE-2013-1847 and CVE-2013-1846
128adcb subversion: fix for Security Advisory CVE-2013-1845
722ff43 subversion: fix for Security Advisory CVE-2013-4131
e8d6c87 subversion: fix for Security Advisory CVE-2013-4505
4fc1cff subversion: fix for Security Advisory CVE-2013-1849
210460d screen: fix for Security Advisory CVE-2009-1215
27aba0a Screen: fix for Security Advisory CVE-2009-1214
901a28b lttng-modules: Fix build with older kernels for 2.3.3 as 2.4.0
8293f56 initrdscripts: fix for /run/media
77b4b25 init-live.sh: list block devices correctly
1899511 udev-extraconf: fix the misuse of /run/media
438b866 packagegroup-core-lsb: fix warning text
31c338c pango: enable ptest
a62e952 syslinux-native: fix parallel building issue
b664c86 libusb1: disable floating dependency on udev
0e2777f maintainers.inc: js package removed
e759e4d README: add maintainers section for hardware reference boards
09edf20 bitbake: fetch2/gitsm: Documentation improvements for gitsm:// fetcher
874d81a gstreamer/lame: Better gcc 4.9 fix
4152ac0 rt-tests: restore erroneously deleted patch files
ac1acab curl: remove inapporpriate file from curl release
6744815 libusb1: Update to 1.0.18
85f51bb mips: add tune file for mips32r2 (only hard-float)
2134fe8 libsdl2: upgrade to 2.0.3
113d53a dropbear: add missing patch header
98c7754 nfs-utils: upgrade to 1.3.0
882f0aa ethtool: upgrade to 3.14
0158dea openssh: move packaging definitions to the end
944e261 openssh: update to 6.6p1
5c89748 glib-2.0: Do not use readlink to set target paths.
c5c11b0 bluez5: Update the bluetooth.conf
f7a74e2 freetype: disable harfbuzz
48fc1aa dbus: Update to 1.8.2 version
53082b1 licenses.conf: add AGPL variations
81cfed9 bzip2: fix ptest execution failure
d6900a5 wic: Extend indirect string connection to support image names and rootfs
bc10da0 wic: add find_artifact() to get a specific bitbake variable
8387f1f wic: Move find_bitbake_env_line() to oe.misc
bf7364e curl: make PACKAGES match with FILES/RRECOMMENDS
9d2221f ca-certificates: generate CAfile for -native in do_install
f518096 openssh: fix for CVE-2014-2653
fbf63c3 openssh: fix for CVE-2014-2532
939fce4 qemu: define PACKAGECONFIG[] for ssh2
579964a gdb: add PACKAGECONFIG for babeltrace
c989c6f mesa-demos: Specify the lib dir properly.
098372a rt-tests: Fix warning flag typo
1d13b58 pax-utils: upgrade to 0.8.1
9238e53 rpm: Fix rpm -V usage
fcd1491a adt_installer: run autoreconf before configuring opkg
362b677 eglibc: remove usage of FILESPATH
c631117 uclibc: remove usage of FILESPATH
6a43ad9 u-boot: remove unused FILESPATH
0c78776 python: remove usage of FILESPATH
dd0442a gcc: remove usage of FILESPATH
c8a6583 linuxdoc-tools: remove usage of FILESPATH
d45466c qemu: remove unused FILESPATH
7444b73 mesa: remove usage of FILESPATH
a5cc0f6 xorg-lib: remove usage of FILESPATH
bf35945 trace-cmd: refactoring recipe
845a253 gstreamer: remove unused FILESPATH
a20afe0 dbus: remove usage of FILESPATH
abf8f0f systemtap: remove usage of FILESPATH
56751ed git: Fix various makefile flags
61e8e0f systemd: remove tcp-wrappers option
92beb80 json-glib: upgrade to 1.0.0
60e5953 python-numpy: add Signed-off-by to patches
9fcc97c gdk-pixbuf: upgrade to 2.30.7
f7eac57 freetype: upgrade to 2.5.3
9557995 glib-2.0: upgrade to 2.40.0
d5958a9 gst-openmax: fix build with GLib 2.40 onwards
4055185 qemu/local.conf.sample: Add sdl PACKAGECONFIG
1e5c722 ref-manual: Edits to the task chapter.
7e5116d ref-manual: Bumped the YP revision in the note.
f3dc906 ref-manual: Added more detail to the tasks chapter.
084c784 kernel-dev: Added a link to the do_compile task.
8e90933 dev-manual: Added links to new do_* sections.
e867967 ref-manual: Added links to new do_* sections.
2f4d072 ref-manual: Added new chapter on task documentation
ab864d7 dev-manual: Edits to the "Understanding Recipe Syntax" section.
1744a1e dev-manual: Edits to the "Understanding Recipe Syntax" section.
f7a1612 dev-manual: Added new "Understanding Recipe Syntax" section.
9943e33 mega-manual.sed: Changed the version string to 1.7
d1594ea dev-manual: Added "Properly Versioning Pre-Release Recipes" section.
95c6c26 documentation: Updated the manual revision history tables for 1.7
0caa305 poky.ent: Changed variables to support the 1.7 release.
50067e0 bitbake: fetch2/perforce: Ensure command has a default
56cd778 bitbake: parse: Improve file inheritance logging
c0bdb81 bitbake: knotty: Fix output printed to the user at debug log levels
155e55e gstreamer1.0-plugins-good: add libxfixes and libxdamange to x11 depends
ec47185 gst-plugins-good: add PACKAGECONFIG for x11
2f5d519 gst-plugins-bad: add PACKAGECONFIG for schro, dc1394 and faac
bc39193 bitbake: parse/ast: Show append logging at lower log level
60436dc bitbake: fix cloning of mercurial repository with username and password specified in url
76fd64f mesa-demos: Specify the lib dir to locate glut libraries
bc19e91 classes/lib/oe: Fix cross/crosssdk references
fe0219c systemd: Upgrade past 212 release
a4d931e update-rc.d: Handle multilib case for initscripts
47013aa rt-tests: bump version 0.87 => 0.89
ebaf77d nettle: disable openssl
5b17c5d libpng12: upgrade to 1.2.51
a36f0b9 libsoup: upgrade to 2.46.0
9b1d466 libtasn1: upgrade to 3.5
f9421ca icu: upgrade to 53.1
1b82c73 chrpath: properly handle rootdir with '..' in path
a1bad24 libxcb: disable check to avoid floating dependencies
6fcd765 librsvg: upgrade to 2.40.2
c05066e util-linux: fix parallel build issure for PATHFILES
bcb30d8 mirrors.bbclass: Add mirror site for savannah
646b089 bitbake: toaster: modify SQL data type constraints
09a1ff9 bitbake: toaster: fix migration code for MySQL
1a10bd3 bitbake: toaster: fix span2 headings for packages
1278267 bitbake: toaster: Make sure layer branch only shows when not empty
961f622 bitbake: toaster: sort outcome and sstate columns by string value
138ed54 bitbake: Fix refetch of local files when they are read only
3189e74 attr: Fix uclibc builds
4666045 gcc: Handle uclibc linker relocation for multilib support
5992d29 openssh: add /var/log/lastlog to volatile list
a091b76 separatebuilddir.inc: Drop, now obsolete
43b0a2e sudo: upgrade from 1.8.9p5 to 1.8.10p2
e7e4334 libxml2: fix CVE-2014-0191
e846e0f kmod: update Upstream-Status for one patch
6e0d7de openssl: update upstream status for a patch
b537c2f perl: update ptest package dependency list
bc1f98d package_manager: Fix NoneType Object on do_populate_sdk
c100f0a package_manager: Fix Argument list too long
88593cd x-load: remove recipe
79cacae uclibc: Set MULTILIB_DIR based on baselib
d30a5c2 libiconv: Fix B != S with uclibc builds
a2e612c ptest: Work from PTEST_ENABLED, not DISTRO_FEATURES
37dcf14 scripts/runqemu: avoid pipe with sed
c6a5e6c initscripts: avoid pipe with sed
1150ef1 sysvinit-inittab: avoid pipe with grep
44ba076 dropbear: avoid pipe with sed
4dd22fe apmd: avoid pipe with sed
8de568a acpid: avoid pipe with sed
77790c4 *.bbclass (shell): avoid pipe with sed
5ae4aad tcl: cleanup
cc9d01f rxvt-unicode: upgrade to 9.20
cd6f819 babeltrace: upgrade to 1.2.1
9bf4e65 mmc-utils: fix compilation failure for mips64 target.
c13ffb9 ltp: enable PM and RT tests
b72ab99 perl: fix missing Module::Metadata
f3f7fec openssl: fix CVE-2014-0198
28798f1 python3: Revert python-config to distutils.sysconfig
bb07e85 python3: Substitute correct python version in shebang
f88e6e3 distutils.bbclass: only modify *.py file if it contains path to be removed
96e488b python3/gcc/autoconf: Fix Upstream-Status in some patches I authored
0b4d895 base.bbclass: Fix multilib PREFERRED_VERSION handling
a671ced bitbake: data_smart: Ensure all possible overrides are cached including those with '_' in the name
9392fa8 tcmode-default: Fix up sdk related PREFERRED_VERSION variables after toolchain changes
59ef976 tcmode-default.inc: Adjust for new toolchain component changes
e6e7c28 linux-firmware: upgrade to commit dec41bce44e0dff6a2c3358a958fadf22bf58858
df85f26 taglib: upgrade to 1.9.1
920ca71 linux-yocto/3.10: mei.cfg: enable Intel chipsets
8dc545c linux-yocto/3.14: update to v3.14.2
5fa2504 linux-yocto/3.10: update to v3.10.38
4aec869 linux-yocto/3.4: update to v3.4.88
70b11e5 linux-yocto-custom: provide defconfig guidance
ee4f09a kernel-yocto: quote kconfig mode check
8de1de8 qt4: Explicitly disable sqlite2
b84d791 ldconfig-native: also default to lib32 and lib64 directories
e32543e serial-getty service: Add xterm as default TERM
8b91e44 gdbm: enable ptest support
563c329 defaultsetup: enable blacklist by default
8592548 systemtap: update to 2.5 release
010e6f1 grub git: update to latest git (grub-2.02-beta2-81-g4b8b913)
1fe8f63 wpa-supplicant: add libgcrypt as a dependencie
37610cc gnutls: update to 3.2.13
220c7e0 nettle: add nettle to oe-core
08a9594 libgcrypt: update to 1.6.1
6464bcd xinput-calibrator: fix XDG launch
8fc255d xdg-utils: reinstall xdg-terminal
7743cd2 procps: Do not detect 32/64 bit compiler options
03ce8a7 lttng-modules_2.3.3.bb: Fix build on ARM/gcc-4.9
3a9092e mdadm: Fix build on gcc 4.9
5f897ef oprofile: Update to 0.9.9
3cf5a0e systemd: Fix build with gcc 4.9
ab6f21f binutils: Fix building nativesdk binutils with gcc 4.9
9f1f185 cairo: Fix build with gcc 4.9
3d09475 gcc: Add 4.9 recipes
7b78c364 cleanup-workdir: Fix crosssdk reference after addition of PN
56a39e9 sstatetests: Use TUNE_ARCH instead of TARGET_ARCH
5459af3 sstatetests: Update after binutils-cross name change with PN addition
530e66c curl: Backport a fix for a build issue
0304d92 bitbake: prserv/db: Avoid fsync() calls
99c9b33 bitbake: persist_data: Avoid fsync() calls
c1f4df4 bitbake: codeparser: Fix to better catch all getVar references
dabd58b gcc-common: Ensure checksums don't change to match old behaviour
a6df56d PR bumps to remove PRINC usage from meta-raspberrypi
64df4e4 Add texinfo.bbclass; recipes that use texinfo utils at build-time inherit it.
075e288 gcc-common: Only apply fpu settings to target gcc
5e4db52 gcc-cross: Drop TARGET_CC_ARCH
53ea374 cross: Update PKG_CONFIG variables after recent changes
37c498a layer.conf: Exclude gcc-cross dependencies from checksums
96ce3f2 base.bbclass: Silence PREFERRED_PROVIDER warnings for sdk builds
cf4d30f tcmode-default.inc: Add default SDK PREFERRED_PROVIDERS
f7bbe9c sanity: Bump BitBake minimal version to 1.23.0
afcf8e8 bitbake: bitbake: Bump version to 1.23.1
68efcde tcmode-default: Update PREFERRED_PROVIDERS
11202d9 alsa-tools: Enable GTK support for X11, Wayland and DirectFB
57acd08 meta-yocto-bsp: oeqa/controllers: add EdgeRouterTarget
ceb5c4d meta-yocto-bsp: oeqa/controllers: add BeagleBoneTarget
3a4bb1a oeqa: add proper handling for command errors where needed
9e7b0ca scripts/contrib/dialog-power-control: add a trivial power prompt script
d20eedb scripts/contrib/serdevtry: add script to handle transient serial terminals
abdd8e7 classes/testimage: if start fails, don't try to stop
74f2d8b oeqa/controllers/masterimage: more robust master image startup
6cd18d7 oeqa/controllers/masterimage: add a serial control command
bd64b91 oeqa/targetcontrol: restart method shouldn't be abstract
cc4234e oeqa/controllers/masterimage: add a base class for hw targets
d36c606 sqlite3: restore upstream version numbering
81c4c89 lighttpd: upgrade to 1.4.35
a4e61c6 gstreamer1.0-plugins-ugly: upgrade to 1.2.4
179a6ff gstreamer1.0-plugins-bad: upgrade to 1.2.4
4944ee8 gstreamer1.0-plugins-good: upgrade to 1.2.4
0e93e91 gstreamer1.0-plugins-base: upgrade to 1.2.4
e73fc82 gstreamer1.0-libav: upgrade to 1.2.4
42bd3d9 gstreamer1.0: upgrade to 1.2.4
943d593 telepathy-glib: upgrade to 0.24.0
c4207f0 fontconfig: upgrade to 2.11.1
e5423db xauth: upgrade to 1.0.9
dfb817e nasm: upgrade to 2.11.02
21a38eb kexec-tools: upgrade to 2.0.6
81b9516 xtrans: upgrade to 1.3.4
2d0fa5d xrandr: upgrade to 1.4.2
187d6fd xproto: upgrade to 7.0.26
707d147 gdb: upgrade to 7.7
0b362a4 python-pygobject: upgrade to 2.28.3
2a63f34 xserver-xorg: upgrade to 1.15.1
ef08481 libdrm: upgrade to 2.4.53
9aa7827 xf86-input-synaptics: upgrade to 1.7.4
ec9f2cb oprofileui*: Update to latest git
20634d1 lsbinitscripts: Update to 9.54
4e81f27 util-linux: Update to 2.24.2
ce2cf5e man-pages: Update to 3.65
560e0a1 lib/oe/sdk: Ensure target directory exists before creating the link
413ab0a base.bbclass: Update INCOMPATIBLE_LICENSE changes for gcc updates
ecf2a8c gcc: Drop ARCH_FLAGS_FOR_TARGET usage
f07b7c0 gcc-common/gcc-configure-common: Move gnu-configize to its own shared task
2b851b9 gcc-target: Limit compile to host targets, don't build runtimes.
e078edb binutils/gcc/gdb: Add TARGET_ARCH to PN for all cross recipes
03a0f8e cross: Drop virtclass-cross OVERRIDE
17daa2b bitbake: bb.utils, bb.codeparser: Add bb.utils.contains_any
f98159f feature-arm-thumb.inc: set ARMPKGSFX_THUMB only when thumb is in TUNE_FEATURES
985f818 feature-arm-thumb.inc: Suppress false warning
107269d bitbake: codeparser: don't interact with the cache for subshells
3d34b49 bitbake: fetch2: Cleanup file checksum generation, v2
0f717ea bitbake: HG Fetch with username and password in url
6ad25fc package_regex.inc: Changed, removed and added regexes
2b09f5c mc: update to 4.8.12
936218e systemd: Check for HAVE_POSIX_FALLOCATE
59738ff distrodata.bbclass: Fix checkpkg functionality
c0df4f6 ltp: update version to 20140422
2b822a8 oeqa/utils: sshcontrol: realtime logging of output
bdb07c6 tune-cortexr4.inc: Add thumb and arm to TUNE_FEATURES
d19e29a feature-arm-thumb.inc, arch-armv4.inc: Add "arm" to TUNE_FEATURES
af76e86 feature-arm-thumb.inc: Replace inner quotes with apostrophes
af49e60 openssl: enable ptest support
b3c688c sstate-cache-management: Minor cleanup of help text
183dac4 bitbake: Revert "fetch2: Cleanup file checksum generation"
a688c9c bitbake: bitbake-diffsigs: Fix runtime error when no arguments are given
d103530 bitbake: fetch2: Cleanup file checksum generation
c7c58db bitbake: fetch2/git: Stop git from triggering fsync() calls
20e439e cross: Drop package tasks
cc23069 uclibc: Add libgcc-initial to DEPENDS
c446d4e default-distrovars.inc: Add libgcc-initial to the GPLv3 whitelist (same as libgcc)
1528e59 Globally replace 'base_contains' calls with 'bb.utils.contains'
b5606f3 Globally replace 'base_contains' calls with 'bb.utils.contains'
eb76c48 Upstream-Status Cleanups
cbf4607 bumps to remove PRINC use in meta-fsl-ppc
6c931b4 initscripts: Fix PR reversal
2bef523 dbus: fix a hard dependency about dbus-ptest
20ded0a udev-extraconf: update mount.sh to use /run/media instead of /media
62238e1 files/device_table-minimal.txt: cleanup
3adc47f kernel: don't populate source symbolic link
6e03bfc bind: add support for read-only rootfs
9183987 opkg: Upgrade to v0.2.2
4c14b09 Globally replace 'base_contains' calls with 'bb.utils.contains'
08a38a7 Globally replace oe.utils.contains to bb.utils.contains
f11e9e2 openssh: enable ptest support
8a9c165 iproute2: upgrade to 3.14
9f0ef56 harfbuzz: upgrade to 0.9.27
380cb2d bluez5: upgrade to 5.18
d288f8c connman: upgrade to 1.23
5f993cb gcc-cross-initial: Separate out libgcc-initial
ee758b6 gcc-cross: Improve handling of unwind.h
44c8028 libgcc: Spit out common code into libgcc-common.inc
5c9025e gcc: Convert to use hardlinkdir
ded3fc6 utils: Add hardlinkdir shell function
3be0213 build-appliance-image: Update to head revision
370ae27 native.bbclass: Override TARGET_ flags too
7f138d6 cryptodev-tests: recipe for cryptodev test suite based on OpenSSL
8e12e0c cryptodev-module: recipe for out-of-tree cryptodev device driver
51c6c42 cryptodev-linux: create common .inc file to be shared by module and tests
3ee8805 cryptodev-linux: move to recipes-kernel to be shared with module and tests
40fd8e6 tcf-agent: add systemd support
870a316 ppp: add systemd support
b45533c bind: add systemd support
4593e1b cronie: add systemd support
b882c0f report-error: Add posting in the public note
965770c libnl: update to 3.2.24
2a30974 sqlite3: Update to 3080403
07d3c2f util-macros: update to 1.19.0
8d2c337 libxkbcommon: update to 0.4.1
49aa353 msmtp: update to 1.4.32
61b7a62 man-pages: update to 3.64
96f3279 lsbinitscripts: update to 9.53
f6741e4 cups: update to 1.7.2
d114770 help2man update to 1.44.1
92d5c07 gsettings-desktop-schemas: add missing dependency on intltool-native
66856e1 apr: do not try to use sctp.h
e45da21 PR bumps to remove PRINC use in meta-openpli
5c98e90 console-tools: Remove floating runtime dependency on flex
a111ca6 oprofileui-server_git: add avahi-daemon to RDEPENDS list
2b99c7d liberror-perl: add 0.17022
144296f libpng: bump to 1.6.10
2a129dd pixbufcache: add error exit in pixbufcache_sstate_postinst
69b6eac autotools: Enable separate builddir by default
68ef727 ref-manual: Added new section to the 1.6 migration section plus some 1.5 edits.
4b5e855 meta-bsps: update to v3.10.35
3be89ac yocto-bsps: update references to v3.4.85
81a1b83 bitbake: bitbake-worker: Drop BBHASH variables
249a24e bitbake: parse/ast: Optimise data finalisation
39c5cfb bitbake: runqueue: Do not write out stamp files in dry_run mode
75c6b78 bitbake: runqueue: Fix task weighting algorithm
d8ef08c bitbake: runqueue: Fix handling of zero priority task
5cbf231 bitbake: bitbake: toaster: Fix Empty tasks filter
5345985 bitbake: bitbake: toaster: Fix total number of tasks in build dashboard
8dd299b kmod: upgrade to v17 via git
8285e78 mtd-utils: upgrade to 1.5.1+gitAUTOINC+12158de
626458b at-spi2-core: upgrade to 2.12.0
8752cb1 at-spi2-atk: upgrade to 2.12.0
7455c17 atk: upgrade to 2.12.0
c931a1b curl: upgrade to 7.36.0
4cd6268 pango: upgrade to 1.36.3
1af448d mklibs-native: upgrade from 0.1.38 to 0.1.39
2732786 automake: upgrade from 1.14 to 1.14.1
6560fa4 wget: upgrade from 1.14 to 1.15
cf3d196 file: upgrade from 5.16 to 5.17
451c751 lttng-modules: update to 2.4.1 version
92bd019 grub-efi: Use a variable to specify built-in grub modules.
920bfc3 openssh-sshd: host contamination fix
edb5f34 grub git: workaround debugedit problems
bb3f5ce make menuconfig work for recent xfce environment
07cb1c0 linux-yocto/3.14: aufs, edgerouter config and -rt
2b9660c recipe_sanity.bbclass: avoid error when running 'bitbake -e'
e2661d7 scripts/send-error-report: simple hack to use proxy from the enviroment
1cb95f7 icecc: don't create unnecessary 'ice' dirs in sysroots when disabled
1f8d809 shadow: fix building systemd with useradd-staticids.bbclass enabled
b093750 selftest: DiskMonTest: use a high value for free space
4961972 libav: Add libsdl to DEPENDS only when x11 is enabled
4beb639 libnotify: add dbus-glib dependency
261b9e2 apr: remove the use of ${SHELL} to avoid bash/dash confliction
cf8446c build-appliance-image: Update to head revision
9035eb1 distro_alias.inc: update/sort alias information.
02384f0 ref-manual: Pulled the item for forked packages out.
57e8d56 bitbake: bitbake-user-manual-hello.xml: Edits to the "Hello World" Appendix.
61a680f bitbake: bitbake-user-manual-hello.xml: First draft of "Hello World" appendix
4687351 bitbake: bitbake-user-manual-hello.xml: Edits to environment for hello world.
f1b9c7e bitbake: bitbake-user-manual-metadata.xml: Added section on pathname syntax
ef7fac5 bitbake: bitbake-user-manual-ref-variables.xml: Edits to the BBPATH variable.
45880c7 bitbake: bitbake-user-manual-ref-variables.xml: Fixed BBPATH example
8f4b4e6 bitbake: user-manual-hello.xml: General edits
1313bac bitbake: bitbake-user-manual-hello.xml: Fixed two broken links.
ea4e822 bitbake: bitbake-user-manual-metadata.xml: New section on anonymous Python functions
9889a91 bitbake: bitbake-user-manual-metadata.xml: Edits to flexible inheritance section.
392de9d bitbake: doc: Rename user-manual -> bitbake-user-manual
982aa36 ref-manual: Added package change info to the migration section.
601d5f1 dev-manual: Fixed some "systemd" capitalization issues.
3f0a863 ref-manual: Updated the list of supported distributions.
0403353 documentation: Updated all the manual revision history tables.
2648f5d dev-manual: Updates to "Performing Automated Runtime Testing"
ac054da dev-manual: Changed GummiBootTarget to GummibootTarget.
b7a1413 ref-manual: Added review comments to core-image-testmaster image.
c4fec0d dev-manual: Edits to "Using the Error Reporting Tool"
bf633eb ref-manual: Added core-image-testmaster to the list of images.
15f128c dev-manual: Edits to "Using the Error Reporting Tool"
bbc6c67 ref-manual: Fixed typo
7ae3488 ref-manual: Re-ordered the insane.bbclass tests list.
66c78db ref-manual: Added symlink-to-sysroot insane.bbclass tests.
583ce2c dev-manual: Fixed typo for AUTOREV.
ce9fb83 dev-manual, ref-manual: Removed VIRTUAL-RUNTIME note from most places.
0c4d56c scripts/send-error-report: use a real server as the default
a2f3991 toaster.bbclass: do not fail on non-existent files
2cae5f7 u-boot: fix beaglebone boot issue with large kernel images
ea90bd0 poky.ent: Changed the YOCTO_DOCS_BB_URL location.
43de868 dev-manual: typo fixed.
f3dccea ref-manual, dev-manual: Edits to running tests on hardware
e63348f ref-manual: Edits to DISK_SIGNATURE variable.
0055a7e ref-manual: Added warning about forking packages when upgrading YP
ff50428 ref-manual: Updated the DISK_SIGNATURE description.
fee60fb ref-manual: Removed note limiting tests to QEMU.
a39e1f7 ref-manual: Edits to the module_autoload and module_conf variables.
cc3f382 ref-manual: Updates to deal with installing packages in initramfs
c42cadf ref-manual: Edits to module_autoload and module_conf variables.
d40aae9 ref-manual: added module_autoload and module_conf variables.
89dd163 bsp-guide: Updated the yocto-bsp example.
e371eaf bsp-guide: Updated the yocto-bsp example.
f5bd39b ref-manual: Updated KBRANCH to fix a reference to the linux kernel.
7ad0253 ref-manual: Updated KBRANCH variable description.
bebc72a bsp-guide: Updates to "Linux Kernel Configuration" section.
693156e bsp-guide: Updated the "Hardware Configuration Options" section.
680394f bsp-guide: Updated the "Example Filesystem Layout" section.
91a0cf7 ref-manual: Extended the D variable description.
750210b Extended description of the ${D} variable to better explain its purpose.
9659789 dev-manual: Grammar fix to the Toaster section.
ad3553b dev-manual: Applied Toaster section review edits.
55fc974 ref-manual: Added TEST_EXPORT_DIR to glossary.
028d760 ref-manual: Added TEST_EXPORT_ONLY to glossary.
85087c9 ref-manual: Added TEST_LOG_DIR to glossary.
a12b957 ref-manual: Added TEST_SERVER_IP to the variable glossary.
dfa1bd8 ref-manual: Added TEST_TARGET_IP to the variable glossary.
4db4dff ref-manual: Added TEST_TARGET variable description.
f0e3476 dev-manual: Added new "Exporting Tests" section.
ea11a0c dev-manual: Added new "Hardware" section for running tests.
cc80d05 dev-manual: Moved list of qemu-specific run information
7406f93 dev-manual: Updates to the "target" class attribute
285ffd8 dev-manual: Updated the "Class Methods" section.
eb578b0 dev-manual: Removed note about rm_work
ae64c92 ref-manual: Added DISK_SIGNATURE variable description to glossary.
9680453 yocto-project-qs: Substituting Beaglebone for Beagleboard.
863cc74 poky.conf: Post release version bump
1d2cfaa poky: Branch for 1.6 daisy release
4ba4ffe bitbake: bitbake: Update to version 1.23.0 for master
c3a216c bitbake: bitbake: Update to version 1.22.0
915ec3d bitbake: cache: don't trigger reparse on recipes with wildcards in SRC_URI
344feb1 linux-yocto/3.10: intel BSP configuration updates
7d58ef3 linux-yocto/3.14: beagleboard black: USB, DRM config tweaks
c3a0496 linux-yocto/3.14: intel configuration fixes
1ac45f7 linux-yocto/3.10: intel-common: Add preempt-rt ktype targets
4f62599 linux-yocto/3.10: v3.10.35 and emenlow boot fixes
4c6d49f linux-yocto/3.4: update to v3.4.85
0c282b6 sstate: Silence warnings when switching machines
b1cefd9 selftest: DiskMonTest: use POSIX output for df
3c77416 gcc: Fix a race over unwind.h
97fd8c0 vala: inherit pkgconfig
ee4f52e perf: Fix sysroot option to CC handling
2966593 kernelshark/trace-cmd: fix syntax error of shell
d1c17c5 openssh: fix sshd_config_readonly creation
b24f5e8 image.bbclass: improve sed expressions for ssh_allow_empty_password()
db80f79 README.hardware: update with Texas Instruments Beaglebone instructions
a7d978c beaglebone.conf: configuration updates
47bad42 poky.conf: Update SANITY_TESTED_DISTROS
1f42d82 edgerouter: clarify diskboot instructions
046a9ea bitbake: toaster: Allow toaster to start without pytz
1eb84a8 poky.conf: Update SANITY_TESTED_DISTROS
efa4a98 bitbake: toaster: add URI search path list
d3e5632 bitbake: toaster: sort on size in detail pages
dc7d3d2 bitbake: toaster: hide tasks without order or outcome
74e2f85 bitbake: toaster: regex alternation filter caused django error
f88a343 bitbake: toaster: fix filtering query for multiple filters
b14482e bitbake: toaster: keep number of rows across searches
5a29328 bitbake: toaster: show unique set-in files in configvar
4b17947 bitbake: toaster: disable 'size over total' sort
1d631fb bitbake: toaster: do not load all available timezones
70288db bitbake: bitbake-selftest: add tests for local fetching
68ec4c1 bitbake: bitbake-selftest: fix help message to include command line
b0bf001 libpam: fix 64-bit pam plugins not installed when add to 32-bit image
bb20d3a yocto-bsp: Update templates to 3.14 kernel
9eb5249 eglibc: __slow_ieee754_sqrt{, f} functions for ppc e6500-32b
467b19e busybox: fix a sh link wrong
e34ad1e python: Fix CVE-2014-1912
398a971 libx11: fix invalid preprocessing directive errors
d06a10a freetype: fix multilib header conflict - ftconfig.h
b3f7195 e2fsprogs: fix multilib header conflict - ext2_types.h
8f683bf bitbake: bitbake: knotty: Clear footer before outputting to stderr
327ed0b bitbake: fetch2: fix traceback when a wildcard matches a directory
991af87 bitbake: fetch2: handle wildcards correctly when recording file checksums
5dd1d75 openssl: Upgrade to v1.0.1g
c0ac09a cmake: Improve method for not building ccmake
68a55c8 ref-manual: Edits to fix up how GID and UIDs are handled.
90d52bd ref-manual: Added useradd-staticids class and edits to some variables.
9f1c18e dev-manual, kernel-dev: Replaced routerstationpro with edgerouter.
7f6d83a documentation: Beagleboard replaced with Beaglebone
cdbaa32 ref-manual: New variables to support static uid and gid values.
97d7aeb ref-manual: Edits to the image-live class description.
d4a2458 ref-manual: Updated the bootimg class description.
9814bdf dev-manual: Updates to the Toaster section.
4faffb0 ref-manual: Added new migration section on BB console output.
b36f26d ref-manual: Typo fix to CFLAGS 1.6 migration section.
a8a0e80 ref-manual: Edits to the 1.6 migration section.
b02932e dev-manual: Edits to "Providing the Source Code" section.
20c1cc0 ref-manual: Removed archive* class and replaced with archiver class.
0ff499a ref-manual: Edits to the copyleft_compliance class.
757344c ref-manual: Edits to the PYTHON_ABI and PYTHON_PN variables.
4644a88 ref-manual: Edits to distutils3 and setuptools3 class descriptions.
6c8b19b ref-manual: Added setuptools3 class description.
60041e0 ref-manual: Added distutils3 class.
5ce6d8a ref-manual: Updates to PYTHON_ABI and PYTHON_PN variables.
4db0d5f package.bbclass: Add CONFFILES to list of package specific variables
38ef912 toaster.bbclass: image file is missing a "/"
ac34639 documentation.conf (LICENSE): tiny addition
bbc9aaf bitbake: hob: add "recipes/images/" to BBFILES when Hob is launched
1094be0 bitbake: fetch2: avoid cache ignoring missing files
bb66113 bitbake: fetch2: Fix bug in file checksum generation
025021e test-dependencies.sh: Redirect stderr
cb68ed9 systemtap: Move to current HEAD
1bc2b2a sysvinit: fix the bootlogd init script header
e4ec48a busybox: Specify '-nostdlib' when linking to a .o file.
32acba5 busybox: Use CCLD
a8ab7a1 useradd_base.bbclass: avoid the traffic crowding
396e215 bitbake: toaster: added covered task list
1029726 bitbake: toaster: correct package count
9db4332 bitbake: toaster: Fixes to the build dashboard
37e2670 bitbake: toaster: Make tables happy in Chrome
7322ddd bitbake: toaster: Fix the empty packages alert
9e81244 bitbake: toaster: Fix "Recent builds" links
4707c7c bitbake: toaster: catch IndexError error in dictionary lookups
52ed413 bitbake: toaster: Changes to help text
6831b7a bitbake: toaster: Remove html validation errors in tasks.html
53b781f bitbake: toasterui: save warnings from non-build context
1afb2a2 bitbake: toasterui: avoid variable name conflict
86aefcd bitbake: toaster: Update API
0d39bee bitbake: toaster: link task order to right tasks page
bf8dcb4 siteconfig: Unbreak after sstate changes some time ago
d62302f sstate: Remove name sstate parameter
633818c sstate: Fix an error handling the taskname
dba6cdf README.hardware: tweak edgerouter instructions
fa3574b README.hardware: drop routerstationpro in favour of edgerouter
501ea83 local.conf.sample: drop routerstationpro in favour of edgerouter
1e1f252 routerstationpro: drop
09d5f9f ref-manual: Added PYTHON_ABI and PYTHON_PN variables to glossary.
5d6dcdb dev-manual, ref-manual: Added notes for Systemd-based images.
6ff92a6 dev-manual, ref-manual: Additions for making an image more secure.
ef7f9ab ref-manual: Edits to the SDKMACHINE variable.
35869b5 ref-manual: Updated the "x32" section.
72747d2 ref-manual: Updates to NOISO variable.
7b1fc30 ref-manual: Updated bad conf/distro/<distro>.conf directory.
89e4e72 ref-manual: Added the migration section for 1.6.
583b6a4 ref-manual: Edits to RDEPENDS variable.
2741cd5 ref-manual: Added links for some new variables.
4f086df ref-manual: Edits to the COPY_LIC_DIRS variable in the glossary.
3e52a18 ref-manual: New descriptions for IMAGE_TYPEDEF and COPY_LIC_DIRS.
f961183 ref-manual: Added COPY_LIC_MANIFEST variable to glossary.
56c776d bitbake: cooker: Overwrite IMAGE_BASENAME to default in custom image
0723102 bitbake: hob: fix customization of empty image recipe
f41241c bitbake: hob: adding INHERIT += " testimage " affects image recipes list
21f9cc2 gcc: enable multilib setup for powerpc64 arch
828b675 util-linux: fix parallel build issue
fffd116 SDK default deploy directory
660c27f poky.conf: added Poky 1.6 as tested distro
b5ebb5e poky-tiny: enable LFS for uclibc
082a417 bitbake: toaster: fix mis-detection of targets as images
432505d bitbake: toaster: fix help texts not showing for most tasks
fee85f0 gtk+3: set proper FLAGS for native
7c0ca0b coreutils: fix search paths for libstdbuf.so
90c2817 libarchive: Add PACKAGECONFIG for lzo
5d63aac selftest/sstatetests.py: Added 'populate_lic' to ignore_patterns
b996f22 python: fix build error with Readline 6.3
69a88da rootfs.py: introduce USE_DEVFS check
5d93e04 cmake: Remove dependency on ncurses
85783e5 cmake-native: Stop building ccmake
84aeaa4 Revert "qt-mobility: remove /usr/lib from ld rpath-link option"
d2c395a send-error-report: show response
de4d7c3 gcc-target: remove infodir
c04e085 ed: remove infodir
71bed65 cmake: Add ugly hack from meta-qt5 to prevent cmake trying to detect qt5
342322c sanity: testimage needs DISPLAY set only for qemu targets
6d6d0b8 systemd: backport patch to avoid assertion failures
d67e087 dbus: backport memory leak patch for error when listing services
ed7afe2 dbus: backport fix for bus activation under systemd session
cd13b76 alsa-tools: Fix build without x11
a5775ab bitbake: user-manual-metadata.xml: Added new section on mapping functions.
3e528d3 Make ppce300c3 tune hard-float by default
8b0ecee eglibc_2.19: Make ppc e300c3 benefit from 603e sqrt optimizations
1eae7d2 gdk-pixbuf: pass GDK_PIXBUF_FATAL_LOADER where relevant
41f2f8e gdk-pixbuf: add an option so that loader errors are fatal
a684808 libpam: fix multilib packaging issue for pam-plugins
8b63ff3 wayland-native: disable unused macro checks to fix build issue on Centos5.x
ae7a079 kmod: fix O_CLOEXEC not supported on old kernel
c48aff8 openssl: Fix pod2man des.pod error on Ubuntu 12.04
3d456fc Qemu:Arm:versatilepb: Add memory size checking
3008b12 qemu: Add addition environment space to boot loader qemu-system-mips
f4dc1e5 core-image-lsb: enforce pam as a needed distro feature
1588b02 image/image-prelink/image-mklibs/sanity: Drop pointless EXPORT_FUNCTIONS
02e455f qemux86-64: re-enable paravirt guest, bring it in sync with qemux86
377ce42 xorg: Fix for CVE-2013-6424
30959dd image.bbclass: add function to disable SSH DNS Lookup for Qemu
7f14950 gcc: changed multilib options handling
f688f6b bitbake: bitbake: cooker: mark setFeatures command as read-only
d5a0a6b documentation: Updates to get rid of PRINC variable.
9ba7a77 ref-manual: Updates to the IMAGE_TYPES variable description.
163a4e5 ref-manual: Updated to PACKAGE_GROUP and addition of FEATURE_PACKAGES.
5cf7a54 ref-manual: Added the build/tmp/work-shared directory.
f82e035 ref-manual: Added the build/tmp/sstate-control directory
ed997db ref-manual: Added the meta/conf/machine-sdk directory
e81d0bd dev-manual, ref-manual: Removed meta-hob layer from docs.
11dad29 ref-manual: Added top-level meta-selftest directory
4638e52 bitbake: toaster: secondary sort key as table's default order
362b71a bitbake: toaster: unbuilt package dependency formats
6985696 bitbake: toaster: Update help text in format_vpackage_namehelp tag
3e15609 bitbake: toaster: Match search results form to no results form
694da9c bitbake: toaster: Increase animation duration
c759892 bitbake: toaster: Fix the fade out animation
bb1e3de bitbake: toaster: Small tweaks to the packages included interface
a1e6fb2 bitbake: toaster: Remove trailing spaces from 'name'
3719ecf bitbake: toaster: Show "No builds found" in the builds table
7920219 bitbake: toaster: disable configvar sorts for value and files
fd4579e bitbake: toaster: use deploy_dir var to obtain the license.manifest path
85eb8db bitbake: toaster: Display task description
8f791ce bitbake: toaster: fix timezone detection
e1bfb5d bitbake: toaster: update saving sstate task data
cd8541b bitbake: runqueue: Address issues with incomplete sstate sets
d67f25d bitbake: runqueue: Fix sstate task dependency problems
dee07be beaglebone: fix typo in the U-Boot config name
a34497a meta-yocto-bsp: Bump layer version after the BSP changes
7254dfb Drop beagleboard, replaced by beaglebone
af1e58a local.conf.sample: Update for beagleboard -> beaglebone
8fe1e24 beaglebone: Switch to linux-yocto 3.14
76b1d59 beaglebone: add OE machine definition for use with linux-yocto kernels
bd072d8 poky: add edgerouter information to README.hardware
4226f9c yocto-bsps: edgerouter: explicitly set preferred version
09b489c yocto-bsps: Add a new BSP to support edgerouter
b8f2106 yocto-bsps: update reference BSPs to v3.10.34
316e058 poky: set qemu BSPs preferred version to 3.14
aa27260 meta-yocto-bsp: populate 3.14 bbappend
17a18b8 linux-libc-headers: remove 3.10 recipe
7eeaf1b libc-headers: set TC default to 3.14
0902f1f linux-libc-headers: add 3.14 libc headers
82e73ee linux-libc-headers: make compression format configurable
3746a51 linux-yocto/3.14: introduce versioned recipes
0906266 Revert "zisofs-tools-native: Add missing dependency on zlib-native"
3972259 lib/oeqa: add a test target controller for EFI targets
2764a40 recipes-extended: add master image for testing purposes
a4447e3 initrdscripts: add install scripts with a second rootfs
806e671 openssh: build without libbsd
49f2bc4 classes/sanity: check if SDKMACHINE setting has taken effect
79dc4f0 pseudo-1.5.1: keep install command directory mode
15056e2 libomxil-0.9.3: fix configure unrecognised option
1e51b5a toaster.bbclass: the license.manifest is located in DEPLOY_DIR
edd500e sstate.bbclass: update missed sstate event
cb0bb7c packagegroup-core-tools-testapps: Move GLTOOLS to X11GLTOOLS
8210928 yocto-bsps: remove linux-yocto 3.8 bbappend
4f80de9 linux-yocto/3.10: fix qemuarm build failure
b8584fe sstatesig: Anchor inherits class tests
790cc61 bitbake: user-manual-execution.xml: Added how BB processes curly braces.
34f4a9d bitbake: user-manual-execution.xml: Updated "Checksum (Signatures) section.
e7277a5 bitbake: user-manual-intro.xml: updated bitbake -h output
5192dfe ref-manual: Edits to the "Source Directory Structure" chapter.
e674668 ref-manual: Added placeholder sections for the "Migration" section.
c140238 ref-manual: grammar fix to "Licenses" section.
ace87ef ref-manual: Some link changes for "Wayland" section.
c43c228 ref-manual: Edits to "Shared State Cache" section.
9e19c9d ref-manual: Minor edits to "Cross-Development Toolchain Generation".
e2e3365 ref-manual: Edits to "Yocto Project Components" section.
ec27a78 ref-manual: Read-through edits to "Closer Look" chapter.
4a3a747 ref-manual: Edits to the "Using" chapter.
a4f8da5 ref-manual: Updated the "Introduction" section.
84229e1 ref-manual: Updated the laundry list of what sections are in the manual.
09e01be ref-manual: Removed the BitBake chapter.
338b500 bsp-guide, kernel-dev: Added Cross-references to "BitBake" term
df02dd8 dev-manual: WIP for YOCTO #5554.
f1e9e33 dev-manual, ref-manual: Added error reporting tool information
aa73618 dev-manual, ref-manual: Noting TMPDIR cannot be on NFS
ff5b58e ref-manual, dev-manual: Point out "xterm" needed for eclipse use.
c4f2191 xkeyboard-config: Add missing dependency on libxslt-native for xsltproc
e8f55d2 distro_alias.inc: remove packagegroup-toolset-native
fc49a6f bitbake: server/xmlrpc: Simlify featureset handling
adba3ed bitbake: bin/bitbake: Only try and process an event_queue if it exists
87fd184 bitbake: bitbake: toaster: do not trap SIGCHLD
6448634 bitbake: prserv: Fix exit race issues
ef28fcd bitbake: bin/bitbake/cooker: Ensure initial featureset is optimal
f80334d bitbake: cooker: Only change self.data if it exists
dd275f4 zisofs-tools-native: Add missing dependency on zlib-native
1d83256 e2fsprogs: Add e2fsprogs-mke2fs and e2fsprogs-e2fsck as recommend packages
a8d076f lttng-ust: add python to lttng-ust's RDEPENDS
6b1d027 libpcap: add PACKAGECONFIG for libnl1
e1876b6 syslinux.bbclass: Enable additional kernel parameters for syslinux
23f26b5 weston : refactor to identify EGL, cairoglesv2 support
3f0425d sstate-cache-management: rm_by_stamps - discover all suffixes like remove_duplicated does
fec6bd7 sstate-cache-management: skip populate_lic archives when removing duplicates
07e632a sstate-cache-management: rm_by_stamps - remove .siginfo and .done files
42b12dc sstate-cache-management: rm_by_stamps - include signatures of .sigdata. files
ba65fe6 wic: Extend --rootfs-dir to connect rootfs-dirs
3c00384 wic: Report all ROOTFS_DIR artifacts
13afd35 wic: Add option --rootfs-dir to --source
cbee7cb wic: Use partition label to be part of rootfs filename
550e931 wic: Add rootfs_dir argument to do_prepare_partition() method
25d16c4 wic: Hook up RootfsPlugin plugin
66bb67d wic: Add RootfsPlugin
42d0824 packagegroup-core-lsb: Limit mips64 issues to qt4 packages only
0bc2d87 libcap 2.22: fix, disable gperf detection
7cb6515 wic: Fix bitbake_env_command for 'None' case
b8fd50e packagegroup-toolset-native: remove it
2f66147 core-image-sato-sdk: Drop qt4 on mips64
8feed9d make-3.81: Fix build failures with newer makeinfo
c565d76 linux-yocto/3.8: remove versioned recipes
fb8b51c linux-yocto/3.10: fix drm build failure
d00ca40 linux-yocto/3.10: update intel common meta data
7f853aa linux-yocto/3.10: update to v3.10.34
400f831 linux-yocto/3.10: add valleyisland io
1b99904 linux-yocto/3.10: update to v3.10.33
09d875e linux-yocto/3.10: update EFI configuration
433768b linux-yocto/3.4: update mohonpeak.cfg for SATA, SMBus, LPC, WDT, crypto & highmem64g
3019972 linux-yocto/3.10: intel-core*/common configuration updates
5b59444 image.py: check file exists before deleting
0f757af package_*.bbclass: Simplify addtask
8f8e4f0 populate_sdk_*: Drop now unneeded recrdeptask flags
af528b0 populate_sdk_base: add dependency of do_package_write_* tasks
a56d8e9 rootfs.py: add new cleanup method
a5994c0 package_manager.py: leave the __db.00* files in place
6196e18 nss-3.15.1: fix CVE-2013-5605
6a3cade nss-3.15.1: fix CVE-2013-1741
c4c31eb libtiff: fix CVE-2013-4244
4f326c8 libarchive: fix CVE-2013-0211
bb3927d autoconf: new autotest/testsuite option to enable automake test result format
95cd568 bitbake: toaster: filter tasks with cache attempts for all attempts
c59e929 bitbake: toaster: fix dirinfo empty dir expansion
bae133a bitbake: toaster: added file types to the Outputs column in the build
877dcd7 bitbake: toaster: add support for empty states in pages
14a8443 bitbake: toaster: show installed package name
c07a294 bitbake: toaster: Fix typo in heading code
7643ba3 bitbake: toaster: insure _get_query returns distinct records
056fbc4 bitbake: toaster: blocks for custom/highlighted navigation and breadcrumb links
405e190 bitbake: toaster: add Image detail and multiple targets to dashboard
8c3eb5e packagegroup-toolset-native: Update after ocf-linux -> cryptodev-linux change
5eceedf ocf-linux: remove recipe
815798d openssl: replace dependency ocf-linux with cryptodev-linux
b895ee7 cryptodev-linux: add recipe
cbefaa3 run-postinsts: fix issue with checking IMAGE_FEATURES
ad1447d build-appliance-image: update to head ae938eba92b2c89a9fd91161e57c5dbc594ad4ad
e4fb1bd gummiboot: fix the installed but not shipped warning
55de991 gummiboot: use objcopy from the env
0e5f6e0 gummiboot: add COMPATIBLE_HOST
e69f308 gnu-efi: fix the LIBDIR
c4eeaa8 bitbake: knotty: Show a link to the logfile for failed setscene tasks
6ef47ec bitbake: knotty: Split error output onto stderr
6f29f7d bitbake: knotty: Ensure the progress bar shows on stdout
cf97773 bitbake: msg: Add stdout/stderr filters
18bbfc4 bitbake.conf: Adds bitbake qemu option for ppc e6500 & ppc e6500-64b.
8c1e43c bitbake: cooker/event: Overhaul sanity test mechanism
172095e bitbake: runqueue/siggen: Pass in commandline options to dump_sigs()
774eb75 bitbake: bitbake: Force -S option to take a parameter
604dd73 selftest/bbtests.py: Fixed regex and added bitbake output to test_warnings_errors
ebfd075 lsb: fix lsb_log_msg() implementation
61b088a image.bbclass: replace rootfs with /dev/root
b25e90f systemd-serialgetty: update to match systemd 211
3ae9225 git: Fix perl paths in scripts and population of the perltools package
dc29d2a base.bbclass: Merge two ConfigParsed event handlers
b015b64 sanity.bbclass: Update against bitbake sanity event changes
2651e11 scripts: Update after addtion of parameter to bitbake -S
0f77f3f base.bbclass: Run oe_import before other INHERITs
315542d meta-skeleton: Add name attribute to SRC_URI
7f880e2 wic: Add SD/MMC-Cards support to '--ondisk' param
68f3a57 apt/package_mamager: Ensure WORKDIR is used for lists directory
b503d35 package_manager: Fix apt-ftparchive index creation problems
da09709 package_manager: Ensure we don't process directories twice
9006f9b mmc-utils: Add user space mmc utilities for eMMC
2614e61 base-files: do_install.sigdata: remove the depends on DATE
f782e39 meta/conf/bitbake.conf: add STAMPCLEAN to BB_HASHBASE_WHITELIST
8add7ae util-linux-native: fix qsort_r for CentOS 5.10
cdf0d97 cpio rootfs build: Avoid modifying rootfs dir
0ba7839 gnupg: CVE-2013-4576
0abd941 gnupg: CVE-2013-4351
f6548c5 Security Advisory - openssl - CVE-2013-6449
61fd2e4 Security Advisory - openssl - CVE-2013-6450
3411716 Security Advisory - openssl - CVE-2013-4353
ae938eb local.conf.sample.extended: update it for the archiver
39846dd bitbake: data_smart: Fix caching issue for double remove references
7ae43dc bitbake: test/data: Add in test for append/prepend/remove override operations
7fa5131 bitbake: toaster: format packages with size = -1
64ba1fa bitbake: toaster: Small fixes in tasks UI
bca174a bitbake: toaster: Fix help text typos
b721972 bitbake: toaster: Remove commented-out code from views.py
7d9f1e2 bitbake: toaster: Change placeholder attribute in variables table
55f6a35 toaster.bbclass: update buildstats event data
ae79fa3 Enable yasm in gstreamer1.0-libav by default
6549a43 piglit: ship files with correct permissions
7881b30 bind: remove nslookup from FILES
895cf82 bind: fix no bind-utils package
ffa8bbf binutils: Add fixes for binutils issue 16428
8dd12d7 perl-native: fix path in Config.sh for sstate
d385bf1 tcl: fix path in Config.sh for sstate
0e58578 bitbake: runqueue: Fix sceneQueueEvent to use the correct hashes
41ed412 bitbake: hob: fix set_extra_setting function
22af803 bitbake: cooker: delVar in removeConfigurationVar
843e3ec bitbake: user-manual-metadata.xml: Added varflag for vardepvalueexclude.
37f7820 bitbake: user-manual-metadata.xml: Edits to "Basic Variable Setting"
c0a13d2 bitbake: user-manual-metadata.xml: Sections to handle variable setting added.
019c868 bitbake: Makefile: Added publish tag so the book can be published.
b80943f dev-manual: Added notes saying you need to work from same branches
b990aa8 ref-manual, yocto-project-qs: Notes and infor for buildtools issues
752bf31 ref-manual: Updated TMPDIR description for NFS issues.
0977097 ref-manual: Fixing whitespace.
20a17fd dev-manual: Added more detail for using an external SCM.
4a40d73 yocto-project-qs: Updated example toolchain command.
4597d2a adt-manual: Fixed example bitbake command.
ef627f8 yocto-project-qs, ref-manual: Fixed core number defaults
32890f2 adt-manual, ref-manual: Cross-toolchain details added. New class also.
c441f5f dev-manual, ref-manual: Changed core-image-basic to core-image-full-cmdline
7a5cd21 ref-manual, mega-manual: Added manifest file information
97cfb8c dev-manual: Added new summary parameter to do_split_packages list.
52a4508 ref-manual: Edits to "Running Specific Tasks"
e8c6097 dev-manual: Read-thru edits for "Maintaining Open Source License..."
c70b6e8 dev-manual: Read-thru edits to "Profiling with OProfile"
46330cd dev-manual: Read-thru edits to "Examining Builds Using the Toaster API"
eb0a5d5 dev-manual: Read-thru edits to "Debugging with the GNU..." section.
914b3e0 dev-manual: Read-thru edits for "Performing Automated Runtime Testing"
128cdcf dev-manual: Read-thru edits to "Creating a Read-Only Root Filesystem"
46a4fb2 dev-manual: Read-thru edits for "Using an External SCM"
d8b69fb dev-manual: Read-thru edits for "Selecting an Initialization Manager"
80e7223 dev-manual: Fixed a reference to the systemd class.
e462a1f dev-manual: Read-thru edits for "Building Software from an External Source"
fd2846c dev-manual: Read-thru edits to "Working With Packages"
a4103b8 dev-manual: Read-thru edits for "Building a Tiny System"
432138a dev-manual: Read-thru edits to "Creating Your Own Distribution"
24ee5fa dev-manual: Added yocto-layer script note and updated kernel version
fceba79 dev-manual: Typo fixed.
43d93f3 dev-manual: Read-thru edits to two sections - new machine and libs
58a7688 dev-manual: Read-thru edits to "Writing a New Recipe"
aca4b48 dev-manual: Read-through edits to "Customizing Images".
23da05f dev-manual: Read-through edits to "Understanding and Creating Layers".
c7fb9a6 dev-manual: Read-through edits applied to "Models" chapter.
ccd0e24 dev-manual: WIP - Some edits to Chapter 4 from the read-through.
4032e1a dev-manual: Added Haswell BSP to list of BSPs in meta-intel.
dd72756 dev-manual: Read-through edits to Chapter 3.
cee847a dev-manual, mega-manual: Updated the Git Workflow figure.
a61dd59 poky.ent: Fixed distro name variable to be "daisy" rather than "Daisy"
90dfac0 dev-manual: General edits to the getting started chapter.
2e56389 dev-manual, yocto-project-qs: Recommending 50Gbytes of free space now.
68943bc dev-manual: Added a cross-reference link to BitBake term.
4a6d886 dev-manual: Added cross-reference to the build system.
bda6b1a dev-manual: Minor edits to the "Introduction" chapter.
914b2ea adt-manual: Added a word for better grammar.
1b9e73e poky.ent: Added "Daisy" as the DISTRO_NAME variable.
5320b97 adt-manual: Fixed "autotools-based" to "Autotools-based".
79ac80d adt-manual: Fixed Cross-ref target title and applied minor formatting.
529b65a adt-manual: Fixed another instance of BitBake command.
08531f2 adt-manual: Minor edit to default installation directory.
8a8ae81 adt-manual: Fixed occurrences of "BitBake command".
e1c1615 adt-manual: Added bold formatting to list leaders.
215718f adt-manual: Minor formatting change.
02fa765 adt-manual: Added a link to BitBake term and fixed some formatting.
720cdab adt-manual: Edited the "Perf" bullet item.
2f0f79c adt-manual: Added cloning poky as a way to have QEMU available.
2edf033 adt-manual: Restructured opening organization.
8986c2e yocto-project-qs: Edits to opening paragraph.
0e8cb1f yocto-project-qs: Added a link to the BitBake section in ref-manual.
4741bb0 yocto-project-qs, poky.ent: Misc fixes in the Quick Start:
35e0265 yocto-project-qs: Added recommendation for cloning YP bits.
65cef19 yocto-project-qs: Eliminated "don't" contraction.
43fc5fd yocto-project-qs: Re-wording for the introductory video item.
ca3fbbc yocto-project-qs: Fixed link to go to Build Appliance page.
708dd32 ref-manual: New variables added and some edits as well
2f643ad kernel-dev: New step to "Generating Configuration Files" section.
a41113c ref-manual: Added CONFIG_INITRAMFS_SOURCE and edited INITRAMFS_IMAGE_BUNDLE variables.
bcd9917 ref-manual: Edits to "Understanding What the Build History Contains" section.
ad49ddd ref-manual: Edits to TOPDIR variable.
9953555 ref-manual: Edits to the "Maintaining Build Output Quality" section.
89de0ba ref-manual: Added BUILDHISTORY_PUSH_REPO to glossary.
3233859 ref-manual: Added BUILDHISTORY_COMMIT_AUTHOR to glossary.
47ca210 ref-manual: Added BUILDHISTORY_COMMIT to glossary.
f3927f3 ref-manual: Added BUILDHISTORY_IMAGE_FILES to glossary.
3e0d532 ref-manual: Updates to "Maintaining Build Output Quality"
2da4610 ref-manual: Added BUILDHISTORY_SDK variable.
98fee9b ref-manual: Edit to BUILDHISTORY_DIR_IMAGE variable.
5f36c00 ref-manual: Added BUILDHISTORY_DIR_PACKAGE to the glossary.
199a4b3 ref-manual: Added BUILDHISTORY_DIR_IMAGE to glossary.
6ee63d0 ref-manual: Added BUILDHISTORY_DIR to glossary.
4a39d82 ref-manual: Added BUILDHISTORY_FEATURES to glossary.
81f7ff3 documentation: Fixed "Relased date" for the 1.5.1 entry
57c0dd6 dev-manual: Added note about Project names in Eclipse.
5e2d6a3 ref-manual: Fixed error in example for export XDG_RUNTIME_DIR
2c92027 ref-manual: Added directfb to DISTRO_FEATURES list chapter.
93ad02d ref-manual: Edits to PARALLEL_MAKE in the glossary.
fdd99bc ref-manual: Added ICECC_PARALLEL_MAKE to glossary.
478f1b7 bitbake: toaster: replace package dependency tag w/ view queries
70f1a3d bitbake: toaster: clean exit on bb server shutdown
1913a17 bitbake: toasterui: save missed sstate tasks
1d20fc4 bitbake: toaster: select recipe based on PN name
a6c3cb7 bitbake: toaster: Remove circular dependecies from packages/recipes
da1b795 bitbake: toaster: combine ready functions
f5d616e bitbake: toaster: add search by section to all recipe page
9e376db bitbake: bitbake toaster: check the file_name with the content of the IMAGE_FSTYPES variable
2d4199b bitbake: toaster: apply filter only on selected attributes
4f44b8b bitbake: toaster: Change "0 found" to "No found"
cf3d6bd bitbake: toaster: Update local configuration counter
1b72110 bitbake: toaster: Add help text to filters
259611b bitbake: toaster: Fix alignment issue in searchform
ecfb339 bitbake: toaster: fix package size 1st sort order
0525edb bitbake: toaster: Change objectname 'packages' to 'packages built'
ef10636 bitbake: toaster: reset default filter for configvar page on new searches
4f02193 bitbake: toaster: warn new filter replaces existing filter
604d2c8 bitbake: toaster: Revert "added file types to the Outputs column in the build page"
888ceb1 tune-ppce6500: Fixes a typo in tune config file for e6500.
d777d4a glib-2.0-native: Fix DEPENDS
169d67e classes/binconfig: fix indentation in python function
5d8552e classes/staging: ensure do_populate_sysroot re-execs on changes to sysroot preprocessing funcs
ba6caa0 buildstats: use TaskBase time for elapsed time
bdbc158 staging: Save out provider information into the sysroot
21169c3 archiver.bbclass: emit patch series files for original src
4a91e14 archiver.bbclass: make it can filter the license
39ea974 gtk-engines: move engine schemas to a dedicated package
cd81724 gtk-engines: don't inherit gtk-icon-cache
1f85f07 util-linux: build setpriv requires libcap-ng
228abf2 connman: upgrade to 1.22
9b575fd libsoup-2.4: fix compiling failed while mips-gcc optimization enabled
db827dd acl: fix the order of expected output of getfacl
299fbbf bitbake: hob: output filenames based on initial recipe name
7dd4bf6 bitbake: fetch2.URI: Set username/password should not change the other
57484d6 bitbake: fetch2.URI: Support URIs with both query strings and params
aca2d14 bitbake: fetch2.URI: add support for query parameters
64fdd3a bitbake: tests.fetch: Remove debug assert
86860bb bitbake: fetch2.URI: Coerce urlparse to use netloc for all schemes
24979a1 busybox: disable fsck.minix and mkfs.minix
004f9be classes/image: ignore modules.* changing during multilib image construction
9ce1f7d classes/kernel: move module postinst commands to kernel-base
0c3d576 local.conf.sample.extended: update for the archiver
7c0a782 gtk-engines: removed gnome inheritance
e2d24f5 classes/image: disable pam nullok_secure with debug-tweaks
1f44904 archiver.bbclass: move a few code to copyleft_compliance.bbclass
2c7d20c package_rpm.bbclass: archive the source to srpm package
cbcf5b2 archiver.bbclass: refactor it
f0714d1 classes/archive*.bbclass: remove archive-*-source.bbclass
3175653 bitbake: toaster: fix task elapsed time calculation
4cdd56f bitbake: toaster: image information views
e94f0b4 bitbake: toaster: add jquery treetable plugin
6f5e196 bitbake: toaster: filter out setscene tasks in recipe details
d5ff301 bitbake: toaster: Amend failed tasks behaviour
3a36186 bitbake: toaster: Set display of "Cache attempt" column
496365c bitbake: toaster: Remove extra space in the breadcrumb
8936cec bitbake: toaster: Change "Package version" to "Version"
4f812cd bitbake: toaster: Remove trailing spaces from 'name'
c9065cb bitbake: toaster: Add link to the Toaster manual
f191ab0 bitbake: toaster: measure task duration with server-side timestamps
888683d bitbake: ConfHandlerr: Use full path in variable history
99c08ee gnome-doc-utils: removed gconf inheritance
31a19bc gsettings-desktop-schemas: removed unneeded class inheritance
82191fa gnome-mime-data: removed gconf and gtk-icon-cache inheritance
ac23389 gst-plugins-gl: removed gconf inheritance
6579bf7 gnome-desktop: removed gconf inheritance
dfb57a1 core-image-minimal: allow user to set size
7df7404 python3: sync module dependencies from 2.7
dd1e12a generate-manifest-3.3.py: sync descriptions with 2.7 version
8d078be libsdl: add missing libglu dependency for openGL
54beec1 kernel-arch.bbclass: add arm64 support to U-Boot architecture map
68acafd runqemu: Add option for custom BIOS directory
e8bc7a1 base-files: use /dev/root in /etc/fstab for systemd support
e6e4e0e tclibc-uclibc: Changing assignment to conditional variable assignment
35a49f6 pulseaudio: Upgrade 4.0 -> 5.0
da4c46f sstate: list missing files for toaster
4ce36a4 toaster.bbclass: read the data needed for license manifest path
ea8640e gcc-runtime: Build libatomic
38d669f image_types.bbclass: use 4096 instead of 8192 bytes-per-inode
2cf83f4 buildhistory.bbclass: create proper dependency files for SDK
0ec27e6 image.bbclass, license.bbclass: adjust the name of list_installed_packages()
483d5a4 rootfs.py, sdk.py: adjust/create the wrappers for creating installed packages list
d91e356 package_manager.py: create separate class for installed packages listing
5a78852 linux-dummy: provide kernel-modules (empty) package
93532df cogl-1.0 : Update to 1.16.2 release
5e4ca62 gsettings-desktop-schemas: Updated to 3.10.1.bb
af63a09 cairo: Add 'egl' and 'glesv2' PACKAGECONFIG options
0e849f0 scripts/cleanup-workdir: Fix a comment typo
21a3ffb e2fsprogs: return error when failed to populate fs
d5982a2 alsa-tools: fix build when x11 and gtk+ not available
08808c9 perf: add libexec and traceevent to packages
fe0287c fontcache.bbclass: add fontconfig-utils runtime dependency
e270076 genext2fs: remove it
b3f83a2 generate-manifest-2.7.py: sync with python-2.7-manifest.inc
6bffd21 generate-manifest-*.py: set SUMMARY instead of DESCRIPTION
7425f3b python: add python-mmap to python-multiprocessing RDEPENDS
77de11f x264: add perlnative to inherit
29ee5c1 useradd{-static}: Ignore useradds on nativesdk
49aad7d bitbake: runqueue: Remove use of waitpid on worker processes
99913df alsa-tools: fix build when x11 and gtk+ not available
a0c8357 sgml-common-native: fix the generation of sgml-docbook.cat
779f593 expect: fix do_install failure on SLED 11.2
aec1194 package_manager: Use apt-ftparchive for deb packages
5baa4d7 openssh: Update init file to add ED25519 Key generation
724cdda tar: add knob whether acl.h are checked
9e10db5 gettext-0.16.1: kill target m4 macros from sysroot
7fe34be pulseaudio: Make it compatible with systemd-209
2c10473 Upgrade to systemd 211+
ac4ff56 bitbake: runqueue: Revert child signal handler for now
ea52b5e bitbake: runqueue: Don't catch all child return codes
0150bc3 bitbake: runqueue: Really fix sigchld handling
cfd1c4e pixbufcache: Fix librsvg-native build
08303af autotools: Exclude variables from autotools_copy_aclocals
e58089b bitbake: runqueue: Ensure handler does not recurse
6bbb179 bitbake: runqueue: More carefully handle the sigchld handler
1f16ca9 bitbake: hob: sync after image deploy
92155fd bitbake: runqueue: Don't error if we never setup workers
e8476a9 gettext: upgrade from 0.18.3.1 to 0.18.3.2
bb9042a grep: upgrade from 2.16 to 2.18
1d82897 sudo: upgrade to 1.8.9p5
4aa61f2 alsa-tools: update to version 1.0.27
7f035ad directfb-examples: update to 1.7.0
a6ce5f4 directfb: update to 1.7.1
78565c8 qmmp: update to 0.7.5
3c70ad6 docbook-sgml-dtd-native: remove catalog file when do_clean
5760485 boost: Pass CFLAGS, CXXFLAGS and LDFLAGS correctly into boost.build
888447c packagegroup-core-tools-testapps: added connman tools and tests
4c48582 packagegroup-core-tools-testapp: added 3G tools
9f29b9f apt-native: Install apt-ftparchive
331962f mips64-linux: set ac_cv_sizeof_ssize_t
963374e make: add 'inherit pkgconfig'
2195006 linux-yocto-custom: Use SRCREV_machine
e73f0f1 lib/oe: turn oe into a namespace package
bb18b49 intltool: Define DATADIRNAME=share for uclibc based systems
d3ffa39 util-linux: scanf_cv_alloc_modifier changed from 'as' -> 'ms'
7d95e81 glib-2.0: Fix localedir expectations for uclibc
62b3851 gnutls: Link in pthread explicitly for uclibc
60e2df2 uclibc: Remove iconv.h
d8ebc75 uclibc: Implement clock_adjtime()
d40ac96 bitbake: toaster: added file types to the Outputs column in the build page
3cbe113 bitbake: toaster: Sort layers in alphabetical order
1caad7d bitbake: toaster: Remove the data-toggle attribute
c1f97ce bitbake: toaster: Don't show clear search button if text input field is empty
a3ccb73 bitbake: toaster: Fix Recipe sorting in tasks table
b2e5cab bitbake: toaster: Not using task_color tag for execution heading
d24584f bitbake: toaster: Presentation fixes for task.html
e3a92c1 bitbake: toaster: Shorten dependency labels
3bc398e bitbake: toaster: Give an extra space to the caret
f4755ed bitbake: toaster: Add no search results page
92c98c4 bitbake: toaster: Fixing "Show all builds" link
99f91e4 bitbake: toaster: Amend help text in package_built_detail.html
2873103 bitbake: toaster: Small tweaks to the no results page
d7fde8b bitbake: toaster: Replace hyphens with underscores in package name
2ac4387 bitbake: toaster: Format package size in recipe.html
bb7776a bitbake: toaster: Make Order column part of the minimum table
1f83c7f bitbake: toaster: Move <tbody> outside for statement
be778cd bitbake: toaster: improve recipe matching for native tasks
513722d bitbake: toaster: fix target file inode type information
e665de5 bitbake: bitbake: cooker: some IMAGE_FEATURES not recognized
d3d3a2c bitbake: toaster: add errors and warnings listing
1db32b0 bitbake: toaster: Add counters to filters
5396191 bitbake: toaster: add license manifest path to database
839f304 bitbake: toaster: populate target image file table
a3eb7da eglibc: Update SRC_URI to point to final download location
f7fabf1 wic: Use pseudo for ext mkfs command
2b4a00a wic: Use mke2fs to create the ext2/3/4 image
463cd34 Create gstreamer-1.0 package groups
6e483e9 gnomebase: remove trailing whitespace
9a928c5 oe-setup-builddir: small rework
9104a32 bitbake: runqueue: Improve sigchld handler
1960f6b populate_sdk_deb: Fix meta-toolchain-sdk with amd64 ARCH
d6dc48f lsbtest: fix comparison bashism
24d1724 btrfs: patch to allow for relative paths
5ab5b77 bind: Update to 9.9.5
f7557a1 dhcp: Update to 4.3.0
4a4be6f util-linux: Update to 2.24.1
deed314 populate_sdk_*.bbclass: remove old rootfs_list_installed_depends()
6029af2 buildhistory.bbclass: Fix dependency files creation
d1161cb bitbake: bitbake-worker: Ensure children have default sigterm handler
e1d7a45 bitbake: bitbake: fix typo in variable name
bf01a9a bitbake: toaster: fix 'show all' labels for tasks and variables
7af7e85 bitbake: toaster: add 'bblayers.conf' files to local config filter
324791a bitbake: toaster: add empty outcome support to task page
65c298d bitbake: toaster: Fix help text for task details outcome
6b4aedc bitbake: toaster: erase checks for stop command
bff408a bitbake: toaster: add commands to list and delete builds
00ca499 bitbake: toaster: write files-in-image to the database
7a0add7 bitbake: toaster: update database schema
5f05bdd classes: Add gummiboot class
9d04183 bootimg/grub-efi.bbclass: allow using a different class for EFI images
de18567 recipes-bsp: Add gummiboot recipe
b588a24 recipes-bsp: add gnu-efi recipe
798877e mtd-utils: Update version to include fixes after 1.5.0
7a8f3c7 e2fsprogs: fix cross compilation problem
614faa6 .templateconf: New file for customized template defaults
5662ab6 scripts/oe-setup-builddir: Keep track of TEMPLATECONF setting
61e8fdb oe-init-build-env: Improve script sourcing detection.
cdf4473 oeqa/utils/qemurunner: search for login string in the entire boot log
724b83d oeqa/targetcontrol: fix loading a controller using a class name
517bc16 oeqa/targetcontrol: allow a custom port for SimpleRemoteTarget
6d85ec3 diffutils: enable ptest support
fe81406 xf86-video-intel: add recipe for 2.99.910, remove the git one
a3f0852 classes/sstate: don't overwrite buildhistory vardepsexclude
ec8490a dmidecode: add powerpc to compatible host
abb1bde libsdl: bump PR
30f8ec5 kernel-yocto: replace '=' with '+='
1db8eb4 ptest: Don't enable ptest for nativesdk and cross-canadian packages
b130d75 eglibc: Fix build for FSL ppc/fpu
a511b25 ltp: Don't link against libfl
3beb482 package_deb: Map TARGET_ARCH x86_64 to DPKG_ARCH amd64
678cca4 oeqa/utils/qemurunner: use the right kill call so we don't send SIGTERM to bitbake-worker
5f81d9d bitbake: runqueue: Use SIGCHLD instead of polling waitpid
324969e bitbake: server/process: Optimise latency when finishing idle functions
5dcc20b bitbake: server/process: Drop unnecessary exit delay
efdc159 bitbake: server/process: Use a pipe for quit events instead of Event()
a445e03 bitbake: knotty: Remove latency when exiting
75b9f93 bitbake: knotty: Add missing continue statement for runQueueExitWait event
aadfea6 bitbake: providers/runqueue/taskdata: Optimise logger.debug calls
0b4ae1c bitbake: cooker: Handle SIGTERM more gracefully
6f3a537 bitbake: server/process: Deal more gracefully with SIGTERM
8fbe218 bitbake: server/process: Use the setFeatures command on the server instead of a manger
d51bf8d bitbake: cooker/command: Add setFeatures command
b28f007 bitbake: runqueue.py: Gracefully handle a missing worker process
bb335f9 bitbake: runqueue.py: Handle worker disappearing gracefully
1568879 bitbake: bitbake-worker: Gracefully handle SIGTERM
a7bc031 bitbake: knotty: Deal with exceptions not resetting terminal configuration
da6926b bitbake: user-manual: Review edits applied throughout from Paul Eggleton.
40ab940 bitbake: user-manual: Review edits applied from Paul Eggleton.
96294ee bitbake: user-manual: removed SVK references - all types.
ead6001 bitbake: user-manual-ref-variables.xml: Edits to BB_GENERATE_MIRROR_TARBALLS variable
c390221 bitbake: user-manual-metadata.xml: Added BB_ORIGENV example.
74d2a10 bitbake: user-manual-metadata.xml: Grammar fix.
197e7e3 bitbake: user-manual-execution.xml: Review edits for "Execution" chapter.
c509510 bitbake: user-manual: Review edits from Richard (second draft)
4cd882b bitbake: user-manual: Added "Hello World" Appendix.
9b3e31e bitbake: user-manual-fetching.xml: Re-write of the Fetching chapter.
cd0c067 bitbake: user-manual-metadata.xml: Title change, sections lifted.
b82b3d2 bitbake: user-manual-fetching.xml: Removed a link.
3801023 bitbake: user-manual-execution.xml: Review edits applied.
9996f31 bitbake: user-manual-intro.xml: Review edits to Introduction chapter.
0c5bf41 bitbake: user-manual-execution.xml: Draft of "Execution" chapter
013c9d9 bitbake: user-manual-intro.xml: Added sections
117726c bitbake: user-manual-bitbakecommand.xml: Added anchor tag for the chapter.
f3caa2b bitbake: user-manual-fetching.xml: Re-write of "File Download Support" chapter.
b4b3bf5 bitbake: user-manual: Added new chapter to cover BB execution.
34bcd96 bitbake: user-manual-intro.xml: Added an introduction to the manual.
8aaff25 bitbake: user-manual-ref-variables.xml: Added a note qualifying the variables.
0510569 bitbake: user-manual-metadata.xml: WIP - Some edits in the checksum area.
1d9c02e bitbake: user-manual-metadata.xml: Rewrite "Accessing Datastore Variables Using Python"
666a7b0 bitbake: user-manual-metadata.xml: Re-write the "Dependencies" section.
bfafc2f bitbake: user-manual-metadata.xml: Re-write of "Variants - Class Extension Mechanism" section.
3940d59 bitbake: user-manual-ref-variables.xml: Added BBVERSIONS variable.
233d644 bitbake: user-manual-metadata.xml: Re-write of "Events" section.
c0239ff bitbake: user-manual-metadata.xml: General cleanup to "Parsing and Execution"
80127f4 bitbake: user-manual-metadata.xml: Edits to "Variable Flags" section
ae96cbb bitbake: user-manual-metadata.xml: Rewrite of the "Tasks" section.
faaca84 bitbake: user-manual-metadata.xml: Rewrite of the "Functions" section.
d022ec3 bitbake: user-manual-ref-variables.xml: Edits to SRC_URI.
6f8f51f bitbake: user-manual-ref-variables.xml: Edits to BBCLASSEXTEND.
1e305ec bitbake: user-manual-metadata.xml: Edits to "Sharing Functionality"
dc42d88 bitbake: user-manual-metadata.xml: Add bare bones of a scheduler section
624e59f bitbake: user-manual-metadata.xml: Add details about general variables used by BitBake
bd23241 bitbake: user-manual-metadata.xml: Add details about environment variables used by BitBake
d327013 bitbake: toasterui: fix task identification
f3294d8 bitbake: toaster: fix issues in the build table
3f16624 bitbake: toasterui: fix status update on failed sstate tasks
24f0617 bitbake: toaster: update database schema
0bad725 bitbake: toaster: Move long content toggle to main.js
4717749 bitbake: toaster: implement the configuration pagedreyna/configure-detail-view
31d4bf8 bitbake: toaster: View detailed information about a task
2bd19cd bitbake: toaster: Bug fix in reload page with parameters
7661585 bitbake: toaster: Fix breadcrumb date format in detail pages
48a93d6 bitbake: toaster: Sort packages and dependencies in recipe.html
5a5e7c0 bitbake: toaster: Change popover headings in recipes table
5462bd0 bitbake: toaster: Change help text for Section
f0dce42 bitbake: toaster: Hide the applied filter tooltip on click
e01f790 bitbake: toaster: Add .muted class to disabled checkboxes
33203ce bitbake: toaster: Set the right styles for definition lists
fd52dfd bitbake: toaster: Set correct string for missed sstate attempts
a686734 bitbake: toaster: Remove inline styles in h1
438578e bitbake: toaster: extend Tasks to include Time, Disk IO, and CPU Usage
93aa4ab bitbake: toasterui: add asserts on expected values
0daa189 bitbake: toasterui: task data structure in toasterui
1660519 bitbake: bb/ui: store_dependency_information optimization
06f9059 bitbake: toaster: array-assignment fix from Chome
6fc2462 bitbake: toaster: mark dependency packages
3d0bb41 bitbake: toasterui: adding new task outcome empty
7008a24 bitbake: toastergui: fix task executed status display
4ae5981 bitbake: fetch2/wget: Fix downloadfilename functionality
aacc381 toaster.bbclass: read list of files in image
abe417e classes/uboot-config: ignore doc varflag
26b65aa documentation.conf: sync with the Yocto Project reference manual
3384659 documentation.conf: drop obsolete variables
cd1195b opkg/dpkg: remove the postinstalls
5159ddc run-postinsts: use it for opkg/dpkg too
635c08c grub-efi: add oe's kernel name to the conf file
f16fe3b grub git: add oe's kernel name to the conf file
155b010 grub 2.00: add oe's kernel name to the conf file
f9c7936 do_rootfs: Add PACKAGE_FEED_URIS as a vardep
7af3eb8 do_rootfs: Added PACKAGE_FEED_URIS functionality
ff8d8fb package.py: use subprocess.Popen for rpmdeps call
d31d2e8 insane: Special case kernel modules for x32 targets
01e5d7b package_manager.py: make list_installed() list pkg dependencies too
45bbd21 dhcp-client: fix invoke dhclient-script failed on Read-only file system
41917e8 grub-efi: use autotools-brokensep
2de0100 ncurses: use lnr instead of python code
1412dda scripts: add lnr (link relative)
a8dc6ae insane: check packages for absolute symlinks to the tmpdir
d152d03 oe-selftest: force some values in local.conf for _sstatetests_noauto.py
f5bb53a oe-selftest: optimize code in _sstatetests_noauto.py module
9c7477e consolekit: fix console-kit-log-system-start.service startup
c5c99de nfs-utils: run rpc.statd as rpcuser:rpcuser instead of rpcuser:root
fa7d335 rpcbind: add rpc user and run rpcbind daemon with rpc user
370717d perf: don't use oe.path.relative
baa8b03 gcc-cross: don't use oe.path.relative
b4455d8 lib/oe: drop custom implementation of oe.path.relative
eb1e41e pango: Fix postinst by adding missing qemu-native dependency
30b5a6e libgcc: make sure symlinks are created in a valid directory
8d4c4d1 python-numpy: fix build for qemumips and qemuppc
06ecf39 gstreamer: Fix valgrind determism problem in the same way as gstreamer 0.10
fcbb05c Upgrade to systemd-stable v208
229bcde classes/buildhistory: fix task signatures changing
0f96a83 bitbake.conf: add new vardepvalueexclude varflag to BB_SIGNATURE_EXCLUDE_FLAGS
14a1971 opkg-utils: Update to latest git master
7217f92 gcc: Add upstream fix for gcc bug 58595
755aaad lttng-ust: Disable doc/examples in the build
b465c0c lttng-modules: Fix 3.14 bio tracepoints
7a97440 lttng-modules: Exclude arm
c065103 lttng-ust: Add version 2.4.0
46959f1 lttng-tools: Add version 2.4.0
89f30af lttng-modules: Add version 2.4.0
7056054 js: remove
c7f0d76 zaurusd: remove
b65041b meta-yocto/conf/distro/include/*: update image/packagegroup entries
6304180 poky-tiny.conf: update for rename of core-image-basic
4b293da e2fsprogs: populate-extfs.sh: remove it
5809ce0 image_types.bbclass: use mke2fs -d to create the ext2/3/4 image
fb980f7 e2fsprogs: enable the "-d" related patches
b7afd10 e2fsprogs: mke2fs: update the manual for the -d option
8f0ef72 e2fsprogs: debugfs: use the functions in misc/create_inode.c
b489b94 e2fsprogs: mke2fs: handle hardlinks
9074906 e2fsprogs: mke2fs: add an option: -d root-directory
8b1553e e2fsprogs: mke2fs: set owner/mode/time for the inode
bc5d73d e2fsprogs: mke2fs: create directory
243cc2b e2fsprogs: mke2fs: copy regular file
ad2f1c3 e2fsprogs: mke2fs: create symlink
c93421a e2fsprogs: mke2fs: create special file
d8409f8 e2fsprogs: mke2fs: copy files recursively
6779ab6 e2fsprogs: mke2fs: add the ability to copy files from a given directory
c859853 kernel-yocto: fix diffconfig/kernel_configme breakage
e8c99b3 kernel-yocto: Disable ANSI escape codes from git branch
a820b3f image.py, rootfs.py, package_manager.py: redirect stderr to stdout when calling check_output()
7b70586 wayland: Add target sysroot scanner m4 macro
b7f1cca layer.conf: update LAYERVERSION_core for core-image-full-cmdline
d14090a Rename PACKAGE_GROUP variable to FEATURE_PACKAGES
874ab5a classes/image: support package-management in IMAGE_FEATURES
91c372f core-image-basic / packagegroup-core-basic: rename to *-full-cmdline
2f9bf7b PR bumps to remove PRINC use in meta-fsl-arm
e955446 bitbake: runqueue: Fix typo
003d317 bitbake: data: add vardepvalueexclude varflag
a01af02 recipes: bump PRs
1dc068c base: Show PRINC value in the warning message
a1e5348 gnutls: update regex
f57b3b7 base.bbclass: Deprecate the PRINC logic
338e97e build-appliance-image: upgraded to commit 54c2e993ec129563c7ae9f3fdee74ab60da28698
8053b21 mc: Add 'inherit pkgconfig'
f683023 oe-selftest: add test for image manifest file creation
79024ff gnutls: fix failure during do_compile
f75c7fb gnutls: Fixed bug that prevented the rejection of v1 intermediate CA certificates.
4988a8c gnutls: CVE-2014-0092 correct return codes
4df2d01 security_flags: Update to correctly link X modules
b1a75ba sanity.bbclass: support wildcards in SANITY_TESTED_DISTROS
593aef7 parted: add patch to handle deprecated readline function
da4c775 readline: drop readline-only-enable-meta-key-for-a-single-call-read.patch
eddaf70 readline: update configure-fix.patch
ad0b28b readline: upgrade to 6.3
3b56aa9 ppp: drop if_pppol2tp.h patches
6fe2315 ppp: drop enable-ipv6.patch
3bd5c23 ppp: upgrade to 2.4.6
5da3ba5 bash: update build-tests.patch
a163269 bash: upgrade to 4.3
f874ac6 mtdev: upgrade to 1.1.5
97289f7 package_manager.py: RpmPM: don't add smart channel if already added
61b8503 Revert "lib/oe/package_manager.py: RpmPM: fix issue with multilib builds"
1d2a6da gstreamer: Fix valgrind header detection
2973c12 sstate: Ensure SSTATEPOSTINSTFUNCS is accounted for in signatures
56636dd image.bbclass: add BAD_RECOMMENDATIONS/NO_RECOMMENDATIONS rootfs vardeps
f51294d testimage: add task level lock
8615d57 sstate-cache-management.sh: Don't use echo -n
99183f9 sstate-cache-management.sh: Allow to remove old .siginfo and .done files for all tasks
6bfa52a sstate-cache-management: improve shown numbers of removed files
8ae183d bitbake.conf: Drop -fpermissive
c2a17dc oprofile: Partially fix separate builddir support
12d613f alsa-tools/autotools: Ensure that aclocal files can be present with AUTOTOOLS_COPYACLOCAL variable
b924b49 autotools: Limit aclocal files to those in dependencies
b2d55fa openjade: Fix configure assumptions about file moves
f03d46f bzip: Add extra files as a specific task
f039550 Revert "ncurses: use ln -r to generate relative symlink"
54c2e99 bsps: update H/W reference boards to v3.10.32
9688673 bsps: update to 3.10.28
151eaca bitbake: fetch2: Drop svk fetcher
e955def bitbake: codeparser: Fix var_execs to append to execs, not references
69b4614 bitbake: fetch/wget: Separate out download and checkstatus functions
5f0e3a8 bitbake: fetch/wget: Start to clean up command construction
6265744 bitbake: wget: Drop usage of old style *COMMAND variables
c0bdd18 bitbake: fetch/svk: Drop usage of old style *COMMAND variable and MKTEMPDIRCMD
c547149 bitbake: fetch/perforce: Drop usage of old style *COMMAND variable and MKTEMPDIRCMD
1aab9c7 bitbake: fetch/git: Separate out an ls-remote function
4b048ac ltp: Work around parallel make race
7d949e5 python-native: remove unused and duplicated sitecustomize.py
2163893 oeqa/runtime/dmesg: Ignore DMA timeout errors
f363c36 ncurses: use ln -r to generate relative symlink
e6e5f64 wpa-supplicant: upgrade to 2.1
0d47ab7 dpkg: Use bzip2-replacement-native
6fab87e oe-selftest: Fix test_sstate_cache_management_script*
0c6ee42 dropbear: upgrade to 2014.63
5f4e1a9 chrpath: upgrade to 0.16
5419357 augeas: upgrade to 1.2.0
8c244c6 cmake: upgrade to 2.8.12.2
147e5ae ethtool: upgrade to 3.13
1964da1 openssh: upgrade to 6.5p1
8f36e1e poky.conf: add CentOS 6.5 to SANITY_TESTED_DISTROS
d6596f5 linux-yocto-dev: bump to v3.14-rc4
c2895ed bitbake: tests: add test for gitsm fetcher
0dd3a1b bitbake: tests: add missing import
2f8be92 bitbake: bitbake-selftest: enable specifying tests to run on command line
957c9a8 bitbake: fetch2: fix fetching git submodules with git 1.7.9.x or older
519f0a5 meta-hob: Drop as no longer needed
81f4dd6 bitbake: hob: append bbfiles to bblayers.conf instead of local.conf
2557667 bitbake: hob: remove the code that adds hob layer to bblayers
ed19ed0 bitbake: hob: create a base hob image used to create custom images
5105603 bitbake: build: filter out expanded empty strings for lockfiles flag
59be48d hob-image: Drop as no longer needed by bitbake
069de52 autotools-brokensep: Mark recipes with broken separate build dir support
5436de5 python3: Fix make race
3f0e3b5 python3: Fix QA warning
ce43612 libomxil: Fix link issue for gst-omx
bbe9cb7 python: Backport CVE-2013-1752 fix from upstream
617819a weston: fix build without wayland in distro_features
415e039 dpkg: Fix dpkg-native dependency on target xz
96f40b4 webkit-gtk: Fix separate builddir support
7d9f9ec man-pages: Update to 3.60
c7d9a07 linux-yocto/3.10: integrate latest LTSI changes
967fca6 linux-yocto/3.4: update to v3.4.82 and latest LTSI
771803e linux-yocto/3.10: update to v3.10.32
bd2665a kernel-yocto: always checkout machine branch when existing validate_branches
83b20f8 gcc: Enable SPE & AltiVec generation on powepc*linux target.
9744e0f oeqa/targetcontrol: make BaseTarget an abstract class
a18cd65 oe-selftest: Fix for test_rm_old_image
6a606f9 libnotify: don't use gnome.bbclass
ae59f6f qt-mobility: fix metaobjectbuilder build errors
b367545 mailx: fix the path to sendmail interface
643d3ab libnotify: Fix separate build dir support
1c592a8 telepathy-mission-control: upgrade to 5.16.1
116c1b5 telepathy-glib: upgrade to 0.23.2
44c690e bluez5: upgrade to 5.15
172d150 dbus: proper error handler should be given after send_negotiate_unix_fd failed
4259e6e uboot-config.bbclass: Skip the package if no valid configuration is found
8a33c5d python3: Fix race condition at high parallelism factor
5c6d9a1 adt_installer: fix issue with x86_64
8d13b43 core-image-minimal-initramfs: Use PACKAGE_INSTALL instead of IMAGE_INSTALL
d2f5f2b systemd: sed installed file instead of original
49cdb68 base-passwd: sed installed file instead of original
370b2d8 base-files: sed installed file instead of original
d9d6f01 initrdscripts: Add rootimage option
ad30740 base: Remove pointless createCopy/update_data calls
5ab9d7e security-flags: Avoid lttng-tools issue on arm
4f976b8 security-flags: Deal with powerpc build issues
8117e01 security_flags: disable PIE flags for cups builds
e47afff runqemu: Use readlink instead of realpath
a76ac78 dpkg-compiler.m4: remove -Wvla (fix build on CentOS 5.8)
da93a41 dpkg: fix a link problem for dpkg-native on CentOS 5.8
f66f4b0 grub: exclude .pc from POTFILES.in (fix build on CentOS 5.8)
9a2717f sqlite: rename to match upstream versioning
3ab2b7f oeqa/targetcontrol: properly get the host ip
16d271c package_manager.py: create index files for all backends in PACKAGE_CLASSES
72576e2 bitbake: hob: replace the use of hob-toolchain with populate_sdk task
fe4b1ca meta-hob: remove hob-toolchain since this is not needed anymore
38057c4 sqlite3: Update to 3080301
824cc75 package_manager.py: correctly handle empty opkg-query-helper.py output
1571cf6 poky-lsb.conf: fix the include path for security_flags
b3f1353 poky: Drop seperatebuilddir.inc, its included in the core now
bf33e93 distro/defaultsetup: Add seperatebuildddir.inc
05978b0 pango: upgrade to 1.36.2
bff8e35 curl: upgrade to 7.35.0
e4ef6bb sstate: Drop 'SafeDep' code from setscene validation function
4584968 package: Drop do_package_write task
9161a6f documentation.conf: add a few missing task descriptions
e4d1779 classes/utility-tasks: make do_listtasks a little more friendly
ae12658 classes/package_tar: fix conflicts with package_deb / package_ipk
d7eb0f5 classes/sstate: fix taints being undone on execution of sstate tasks
6189096 lib/oe/rootfs: Fix LDCONFIGDEPEND check
a1faa7d bitbake: fetch2: Fix mirror repo tarball creation
dd43700 bitbake: runqueue: Catch ValueError from pickle.loads
f5a3444 bitbake: ast: Fix support for anonymous methods in wildcard .bbappend files
2b7edd5 lz4: fix CC
6a708c3 x246: Disable Altivec asm when SPE is enabled.
8d7dd9a image_types.bbclass: fix cpio IMAGE_CMD to preserve working directory
6ffc156 manifest.py: remove redundant import line
3ccc90c rootfs.py: tweak _multilib_sanity_test for ipk incremental image generation
ec87d0c rootfs.py: support BAD_RECOMMENDATIONS for ipk incremental image generation
1d4462d rootfs.py: support ipk incremental image generation
af9e8e9 package_manager.py: support ipk incremental image generation
f4de839 manifest.py: add create_full for OpkgManifest class
363b7c9 psmisc: Update to 22.21
d48b9c9 libglade: don't use gnome.bbclass
425dc69 runqemu: Ensure ROOTFS path is absolute
dffa543 insserv: enable ptest support
4590a00 gtk+3: upgrade to 3.10.7
b8c50fb git: update to 1.9.0 release
40f3e48 openssh: enable PAM at runtime based on DISTRO_FEATURES
27b81ef update-rc.d.bbclass: fix inhibit check
df520a6 uclibc: Add new functionality needed for systemd 209
dc9f7d7 valgrind: integration of regression tests to ptest
bb0c269 wic: Make exec_native_command() fail if a command isn't found
8e894d1 wic: Fix exec_native_cmd() path
be98ee8 image-vmdk.bbclass: Don't force syslinux timeout
8e08ff4 opkg: Upgrade to v0.2.1
b88321a recipes: convert remaining SUMMARY/DESCRIPTION cosmetic issues (part 2)
7c75e86 package_manager.py: Fix $i -> %s in bb.note
e15bec0 libpcre: enable ptest support
d32189a opkg: Fix add-exclude.patch
00e503a gstreamer1.0-plugins-good: removed dependency on gconf
27a4be0 gstreamer1.0-libav: upgrade to 1.2.3
bfd5fa4 gstreamer1.0-plugins-bad: upgrade to 1.2.3
f616647 gstreamer1.0-plugins-ugly: upgrade to 1.2.3
36f9ea8 gstreamer1.0-plugins-good: upgrade to 1.2.3
5b1018a gstreamer1.0-plugins-base: upgrade to 1.2.3
0ce3a21 gstreamer1.0: upgrade to 1.2.3
80b1ddc libvorbis: upgrade to 1.3.4
bac8905 populate_sdk_*.bbclass: remove left over bash routines
7e595a5 buildhistory.bbclass: fix creation of installed packages list
1988f71 package_manager.py: fix installed package list creation for Opkg/Dpkg
84210fd lib/oe/image.py: add image dependency mechanism
f866b2e image*.bbclass, bootimg.bbclass: add image type dependencies
6664826 avahi: handle SO_REUSEPORT not being available
0bdf56f mesa: upgrade to 9.2.5
e49eff1 libxkbcommon: Add PACKAGECONFIG for x11
bc124da image_types: minor, inline CPIO_TOUCH_INIT()
4166062 cml1.bbclass: Add diffconfig task to cml1
07e59b5 kernel-yocto: Add do_diffconfig task
ccb0a58 lighttpd: introduce /etc/lighttpd.d subdir for config file includes
39b98e4 runqemu-export-rootfs: Fix missing # in comment
5456200 image_types.bbclass: Fix tar IMAGE_CMD to not change directories
3f9334b uclibc: Update to git tip
a8daee2 binutils: ld-is-gold should not affect native and crosssdk recipes
f5205c5 icu: Disable the default LDFLAGSICUDT for target compile
f9b100e rootfs.py: Check for LDCONFIGDEPEND being empty string
2e7dd29 eglibc: Upgrade from 2.18 -> 2.19
07f49c3 valgrind: Add glibc 2.19 awareness
9f77ba3 Revert "lib/oe/image.py: fix working directory"
ac499f0 dev-manual: Fixed code block example for ARCHIVER.
deb3859 bitbake: toaster: implement package summary page
77eeb42 bitbake: toaster: implement recipe summary page
994236e bitbake: toaster: Make popovers mutually exclusive
49a81f0 bitbake: toaster: Make popovers scrollable
ec79df9 bitbake: toaster: Make all targets links to the build dashboard
877f87b bitbake: toaster: Select a radio button by default in Filter Dialog
f8f448e bitbake: toaster: Fix for task_color tag
155302a bitbake: toaster: Apply error style to cell links
2e3fee7 bitbake: toaster: Make "Edit columns" multiselect
97c81e0 bitbake: toaster: fix javascript for table filters
4157c38 bitbake: toaster: Add clear filter button to filter tooltips
985017a bitbake: toaster: Clean up main.js
b4416e3 bitbake: toaster: Clean up default.css
620553d bitbake: toaster: Implementation of package detail views
4763437 bitbake: toaster: Added sorting to other columns in All tasks table
6f38844 bitbake: toaster: Fix builds view filter options to match changes in filter dialog
fd86e0e bitbake: toaster: Filter Dialog fix to display filter options as radio buttons
2b2d3d6 bitbake: toaster: Removed unused 'disabled' css class in Filter dialog
3f49597 lib/oe/image.py: fix working directory
d66b3d8 bitbake-prserv-tool: make help text show .conf suffix
46bc59d runqemu: add ability to skip using an existing tap device
b448cf7 openssl: Fix build on uclibc
94ba459 usbutils: Patch to detect iconv support
c33c645 rpm: fix a endian incompatible error in generating tag
0008cd6 bitbake: build: fix handling of task override for tasks with underscores in their names
a56bd81 bitbake: parse: make vars_from_file return None for non-recipes
e469b0a matchbox-keyboard: daemonize launch
b582957 classes/populate_sdk_base: optimise task dependencies
77a53c5 classes/populate_sdk_base: fix race condition with do_rootfs
8dff4af eglibc-locale: add eglibc-gconv to PACKAGES_DYNAMIC
9d2594e bitbake.conf: add BBINCLUDED and BB_INVALIDCONF to config hash whitelist
8664a2a recipes: convert remaining SUMMARY/DESCRIPTION cosmetic issues
e7d41d3 wayland: upgrade to 1.4.0
c8cf900 weston: upgrade to 1.4.0
a204c1e package.bbclass: do_split_packages should always return something.
8a0a958 nspr: Update to 4.10.3
b388acd libcheck: Update to 0.9.12
6168aff libxkbcommon: Update to 0.3.2
f73b951 man-pages: Update to 3.56
168d50e help2man: Update to 1.44.1
2d05f57 classes/cpan-base: fix signatures changing when perl is in sysroot
ef15760 diffstat: enable ptest support
0f03282 attr: enable ptest support
29a7e79 acl: enable ptest support
4dcd9d6 lib/oe/package_manager: Make empty package directories non-fatal
088642f adt-installer: Disable multilibs
3221d97 bitbake: runqueue: Fix silly variable overlap
155f8a4 package_manager.py: move multilib prefix list computation function to RpmIndexer
4b967d9 linux-yocto/3.10: enable CONFIG_FHANDLE for standard and preempt-rt kernels
9be7acc linux-yocto/3.10: add minnow-io feature to LTSI
3fefbe3 linux-yocto/3.10: arbitrary write with CONFIG_X86_X32 (CVE-2014-0038)
088677a linux-yocto/3.10: update to v3.10.28
94a9df2 systemtap_git: update to newer version to fix a build issue
b38c7cb socat: upgrade to 1.7.2.3
0db0bb6 image_types: sum.jffs2 is replaced by jffs2.sum
aed1f0c image_types bbclass: use compression framework for jffs2 sum images
b563b3b flex: enable ptest support
e089580 flex: upgrade to 2.5.38
cb0fe9b flac: upgrade to 1.3.0
da0a4c7 report-error.bbclass: new class to save build information when errors occur
4cc0a43 package_*.bbclass: remove references to the old bash indexing routines
56a866b package-index.bb: use the new python indexing routines
a0a0450 package_manager.py, rootfs.py, sdk.py: add Indexer class
aed96f6 systemd: Refresh patches for uclibc
b60ed2d bitbake: runqueue: Ensure we do run 'masked' setscene tasks if specified as targets
a2a20ad runqemu: enforce right CPU type for qemux86/x86-64
6a6cdad buildhistory.bbclass: create wrapper functions around buildhistory_get_sdk_installed
f8593b6 hwatdetect: Fix build failures from undeclared INC_PR
ee151ed lib/oe/rootfs.py: fix RPM multilib issue
abf22be Revert "nss: avoid to use the hardcode kernel version"
937a12d kernel.bbclass, base.bbclass: Fix support for old kernel configuration
adc2172 initscripts: fix syntax error in postinsts
01268c3 nss: avoid to use the hardcode kernel version
e091548 (image|rootfs_ipk).bbclass, rootfs.py: ipk multilib fixes
0fc98a6 puzzles: upgrade to r10116
d5909eb busybox-syslog: add more comments to systemd configuration file
4794dee sysstat: upgrade to 10.2.1
716557a package: Remove the before do_build constraint of the do_package task
4db39d2 meta/recipes: Remove virtclass references
3d0dccd oeqa/runtime: smart: don't run in auto mode when rpm is not the pm
bfed4c0 harfbuzz: upgrade to 0.9.26
5bffece telepathy-mission-control: typo in connectivity switch
b70a10c systemd-serialgetty: Update to match version in recent systemd
7b317cd initscripts: mask initscripts from systemd
92cad72 curl: fix https certificate problems
3273473 systemd: Enable building microhttpd via PACKAGECONFIG
f7b44fe gmp: add configure.ac patch to append user provided compilation flags
8d17c39 sstate: Exclude SSTATE_EXTRAPATH from checksums
4021080 classes/buildhistory: avoid buildhistory triggering rebuilds (again)
93a4de6 rt-tests: version bump to 0.87
f60f802 license.bbclass: Dont create a manifest when using BUILD_IMAGES_FROM_FEEDS
9c61b63 bitbake: user-manual-metadata.xml: Edits to the "Sharing Functionality" section.
d110f55 bitbake: user-manual-metadata.xml: Edits to "Conditional Syntax (Overrides)"
decc756 bitbake: user-manual-metadata.xml: Edits to "Defining Pure Python Functions"
2fc9281 bitbake: user-manual-metadata.xml: Edits through syntax section
a2e5746 bitbake: user-manual-intro.xml: General edits to Introduction chapter.
3cdf800 bitbake: user-manual-metadata.xml: Added "Checksums (Signatures)" section.
89058e1 bitbake: user-manual-ref-variables.xml: Review edits to several variables in glossary.
ddcd91c bitbake: user-manual-ref-variables.xml: Added 11 new variables to glossary.
081d31c bitbake: user-manual-ref-variables.xml: Edits to FILESPATH.
825366d bitbake: user-manual-ref-variables.xml: Added 6 new variables to glossary:
5f59a85 bitbake: user-manual-ref-variables.xml: Edits to PREFERRED_PROVIDER.
658d885 bitbake: user-manual-ref-variables.xml: Added PREFERRED_PROVIDERS to glossary.
dac581d bitbake: user-manual-ref-variables.xml: Added FAKEROOT* variables to glossary.
606e2cb bitbake: user-manual-ref-variables.xml: Added BB* variables to glossary.
799ba9a poky.conf: Add Debian-7.4 to SANITY_TESTED_DISTROS
287efe1 useradd-staticids: Adjust USERADD_ERROR_DYNAMIC condition and error message
39d9414 useradd-staticids: Fix groupadd when --user-group is selected
a146d50 ref-manual: Edits to OEROOT variable.
3e54f28 ref-manual: Added link to SDKPATH variable.
f670e3a ref-manual: Edits to ROOT_HOME
f084e33 ref-manual: Added ROOT_HOME to glossary.
776c33e ref-manual: Added SDKPATH to glossary.
ec0f9cf ref-manual: Updates to BB_NUMBER_THREADS and PARALLEL_MAKE.
beb54ff ref-manual: Adds x11 to Distro Feature list.
5518885 linux-yocto: Use PACKAGE_ARCH in build dir
ab9c345 linux-yocto/3.10: add powermanagement config to 32 bit common-pc
897d13a linux-yocto/3.10: integrate LTSI
afc4431 package.bbclass: fix strip and split logic
e9c1191 python-smartpm: really ignore conflicts during install with --attempt
f962396 conf/bitbake.conf: default HOMEPAGE to blank instead of unknown
2882b13 testimage: fail if no package manifest is found
6d0f1d3 oeqa/utils: targetbuild: take proxy into account
2bdc00f kernel: use oldnoconfig before yes '' | make oldconfig
b6bfcaa kernel: stop using -exec rm for deleting files
6bf21ce systemd: Fix misc journald memory bugs
410a3e1 bitbake: runqueue: Fix setscene hard dependency problems
b2c7cc7 image.py, package_manager.py, rootfs.py: dump command output on error
12f47c2 lib/oe/package_manager.py: RpmPM: fix issue with multilib builds
847591e lib/oe/package_manager.py: check that package list is not empty
f4fa44c rootfs.py, package_manager.py, sdk.py: Fix building from feeds feature for opkg
ab8cbf3 lib/oe/package_manager.py: OpkgPM, bad recommendation handling change
8af5565 lib/oe/package_manager.py: do not use stamps
d3a3b87 lib/oe/rootfs.py: OpkgRootfs, fix issue in _get_delayed_postinsts()
365b779 lib/oe/package_manager.py: OpkgPM/DpkgPM fixes
b76f240 lib/oe/image.py: fix image size calculation routine
ce12c1b lib/oe/package_manager.py: DpkgPM, use lock on deploy dir
a150272 scripts/postinst-intercepts: do not redirect errors to /dev/null
38ffed4 lib/oe/rootfs.py: warn the user if intercept hooks fail
65a2869 lib/oe/package_manager.py: RpmPM fixes
4a6596d lib/oe/package_manager.py: moving global SCRIPTLET_FORMAT and DB_CONFIG_CONTENT to RpmPM
c8f41d7 package_manger.py/rootfs.py: rename save_rpmpostinist with save_rpmpostinst
9d3c187 populate_sdk_rpm.bbclass: remove old shell code
ed89fd2 lib/oe/rootfs.py: fix invoking _run_intercepts failed
9c71ee0 lib/oe/package_manager.py: fix invoking rpm save_rpmpostinist failed
4df92c6 lib/oe/rootfs.py: fix invoking rpm _handle_intercept_failure failed
62c625e Cleanup rootfs_rpm,package_rpm bbclass files
4d8982a image.bbclass/populate_sdk_base.bbclass: shift position of sdk complementary install definition
ee175b5 lib/oe/sdk.py: support RpmRootfs
e28b78a license.bbclass: fix license_create_manifest failed
1a1ba04 image.bbclass/license.bbclass: ajustment list_installed_packages invoking
f5d35ab lib/oe/image.py: fix get rootfs_extra_space failed
3bc7a4f rootfs.py: strip kernel-abiversion useless readline
a49d9f8 rootfs.py: fix uninstall uneeded pkgs failed
9efc87a lib/oe/rootfs.py: Tweak the rootfs removing operation
f02cf46 lib/oe/rootfs.py: support RpmRootfs
c8103fb lib/oe/package_manager.py: support RpmPM
dff8a59 lib/oe/manifest.py: add rpm image manifest creation
cb13771 populate_sdk_(deb|ipk).bbclass: remove old shell code
e5a1642 image.bbclass: change POPULATE_SDK_POST_TARGET_COMMAND
039ba41 populate_sdk_base.bbclass: activate the new python routines
09c508a lib/oe/sdk.py: add SDK class
080ce63 lib/oe/package_manager.py: fixes for dpkg backend
0b47dc4 lib/oe/rootfs.py: use Manifest.INSTALL_ORDER
b91e800 lib/oe/manifest.py: create manifests for SDK too
aaa92a6 image.bbclass, lib/oe/rootfs.py: remove intercept_scripts directory
f52391a Cleanup image,rootfs_ipk,package_ipk bbclass files
31906d8 lib/oe/rootfs.py: add support for opkg backend
ed83ace lib/oe/package_manager.py: add support for opkg backend
2979098 lib/oe/package_manager.py: use the bitbake APT_ARGS variable
1b3e7f0 lib/oe/package_manager.py: add deploy dir locking mechanism
2ead36f lib/oe/manifest.py: create global variables for package types
ab14336 package_(deb|ipk).bbclass: remove the stamp when creating package from cache
fdd40ce oe/manifest.py: Add manifest creation for opkg
7fc9bda Activate the new python rootfs/image creation routines
85cc53a lib/oe/rootfs.py: add new library for rootfs creation
e1bb8a6 lib/oe/package_manager.py: add new package management library
5d34962 lib/oe/manifest.py: add library for image manifest creation
8cfe555 lib/oe/image.py: add new image creation library
7b84097 lib/oe/utils.py: add pre/post process helper function
095bb00 bitbake: bitbake: build.py: create separate function for shell trap creation code
5232ba8 useradd.bbclass: Add ability to select a static uid/gid automatically
edbf9ef python-pycurl: upgrade to 7.19.3
3bfb713 xserver-xorg: upgrade to 1.15.0
a493de4 xf86-video-intel: add compat patch for xorg >= 1.14.99.2
824d7a5 presentproto_git.bb: add recipe
214bf91 xf86-input-synaptics: upgrade to 1.7.3
2a5d40d libmpc: upgrade to 1.0.2
a57f2be xkeyboard-config: upgrade to 2.11
bafd0c1 libdrm: upgrade to 2.4.52
a1cc996 xtrans: upgrade to 1.3.3
c51f1b1 xcb-util-wm: upgrade to 0.4.0
21e0bd7 gdb: upgrade to 7.6.2
0ab75b9 xextproto: upgrade to 7.3.0
fa0c091 nasm: upgrade to 2.11
9203c87 binconfig: mangle ${base_libdir}
4bc6982 useradd.bbclass: Add ability to select a static uid/gid automatically
72288dd useradd.bbclass: Fix build time install issues
ac656fb scripts/oe-selftest: return based on the test results
ccb256e minicom: updated download link
ed2f7a2 gdk-pixbuf: enable ptest
3ec94b6 gnome-desktop-testing: upgrade to 2014.1
df634f3 wic: Honor --size for --source partititions
8d008aa jpeg and directfb: cosmetic, fix perms for patches
a1240a5 rootfs_deb: Fix whitespace issue
9776dbd systemtap: add aarch64 support
d7c0e00 oeqa/utils: targetbuild: don't use bb.fetch anymore
4354cb2 lib/oeqa: add module for running tests outside of the build system
731acba testimage: add ability to export tests
da1331b classes/populate_sdk_base: remove nostamp from do_populate_sdk
3a42fa6 bluez5: upgrade to 5.14
7496c64 sbc: upgrade to 1.2
3c9b3ef ossp-uuid: Use alternative source mirror
b1d29ef openssh: drag in required PAM modules.
231634d openssh: package sshd PAM config inside openssh-sshd package
4a85e26 binutils: Add backports to resolve systemd (from git) breakage
c7ee4de systemd-compat-units: Handle nfs scripts
3a590e8 build-appliance-image: Update to poky commit b37dd451a52622d5b570183a81583cc34c2ff555
d4a1eec package_regex.inc: fix a minor typo
d4456f5 pcmanfm: apply a patch to the source, not a generated file
b075ddb distcc: rename systemd service to distcc
bc7a5b9 glib-2.0: fix race in parallel builds
4217302 systemd: add a hard dependency on udev=$EXTENDPKGV
fa1b8ae iproute2: split out package for tc
45ccb49 systemd-compat-units: don't mask dbus, the recipe does this itself
3ca2ae1 dbus: mask the dbus-1 init script if using systemd
618931e classes/buildhistory: write out files in UTF-8 format
4e9eb77 sstate: Improve funciton checksums
707cdcf bitbake: data: Account for pre/postfunc functions when calculating dependencies
82f9c2b wic: Hook up --debug option
94b805f wic: Hook up BootimgEFIPlugin and BootimgPcbiosPlugin plugins
e663d2f wic: Add BootimgEFIPlugin and BootimgPcbiosPlugin
73ce090 wic: Add SourcePlugin class
363488f wic: Add wic-specific bootloader subclass
3cb9301 wic: Create and use new functions for getting bitbake variables
534d9ba wic: Move some common items to oe.misc
1ddc105 binutils: Package additional file when using ld-is-gold
c8962ab oeqa/runtime/systemd: remove race in settle()
6b7b9ea tcl-native: Depend on zlib-native
76f52a8 insane: Fix python function whitespace changes
220f4f5 classes/buildhistory: fix expansion of escape sequences
b37dd45 rootfs_ipk: Ensure that BAD_RECOMMENDATIONS are honoured for all architectures
6d989d0 lttng-ust: Move lttng-gen-tp to ${PN}-bin
cc169c9 image.bbclass: Also uninstall update-alternatives and shadow for read-only-rootfs
88a6b2b base-passwd: Remove unnecessary DEPENDS
9341575 wireless-tools: Upgrade 29 -> 30.pre9
0deebd1 libcgroup: Add bison-native and flex-native in depends
c99622e lib/oeqa: allow multiple layers to provide their own TEST_TARGET class
6e59874 glib-2.0: fix handling of skipped tests
152679d meta/recipes-core/base-passwd/base-passwd/noshadow.patch: Split it into two parts
b96375b libpng: upgrade to 1.6.8
d4b11e8 binutils: Upgrade to 2.24
a42f846 nss: Add nativesdk to BBCLASSEXTEND and bugfix
092afbc nspr: Added nativesdk to BBCLASSEXTEND
0b30e6e nativesdk-packagegroup-sdk-host: Adding nativesdk-postinst-intercept to SDK
8f76b91 postinst-intercept: New recipe to include postinstall intercepts in nativesdk
ad9b3e2 python-setuptools: Remove its provided by python-distribute
aacfd00 python-distribute: Add recipes for python2 and python3
6a539a7 python_2.7.3.bb: Inherit python-dir
1c8869b python3: Add target and native recipes
3f57c71 distutils: Introduce PYTHON_ABI variable
0221af0 classes: Add distutils for python3
8314590 classes/distutils: Introduce PYTHON_PN
867b1ee package_rpm.bbclass: Trigger the regexp on exact keyword match
962ea3d python3native.bbclass: Add python3 abstraction class
c1a3286d python-3.3-manifest: Add python3 manifest file
31a48f4 generate-manifest-3.3.py: Add script to generate python 3.3 manifests
358dd84 sstate-cache-management.sh: don't remove all packagedata sstate archives
7010358 sstate-cache-management.sh: Fix available architectures
6d295ce sstate-cache-management.sh: Show total number of files when showing how many will be deleted
a397dec sstate-cache-management.sh: Fix rm_by_stamps() to work after SSTATE_SWSPEC change
a8a7e7b sstate-cache-management.sh: Fix remove_duplicated() to work after SSTATE_SWSPEC change
731a745 scripts/cp-noerror: Avoid a race
48bcbc3 meta-yocto: rename busybox's bbappend file to match the current version
f7e6513 Revert "poky-tiny: Assume pkgconfig is provided"
b214684 apmd.service: Fix typo (not mandatory EnvironmentFile prefix)
7538e25 minicom: fix for multilib and x32 build crash
a1dff02 oeqa/runtime: syslog: update --help test
5baa8be procps: make the 'watch' command register to /bin/watch
95ff97e coreutils: move 'stat' to base_bindir_progs
d22f12c meta-skeleton: rename busybox's bbappend file
b1ea345 busybox: upgrade to stable 1.22.1
4720817 sanity.bbclass: check that TMPDIR is not located on nfs
3ab4a2b sysvinit: add initscripts-functions to RDEPENDS
021129a update-rc.d: automatically rdepend on initscripts-funtions
85b3ba9 Revert "Add missing RDEPENDS of initscripts-functions"
c2bb0ce parted: enable ptest support
7c66dcc curl:Fix multilib header conflict - curl/curlbuild.h
e65422f Add Cortex A7 support for NEONv2 & FPv4
c914e27 mdadm: fix build on qemumips64
1712cd6 e2fsprogs:fix build native package error
1dd7fd6 oeqa/utils: sshcontrol: rewrite the SSHControl class
e54c1ad quilt: add ac_cv_path_BASH to CACHED_CONFIGUREVARS also for native
81325a4 ltp: fix ffsb ftbfs on cross-compiled environment
815261a ltp: fix comment to refer to oe-core instead of poky
7f06b03 ltp: update ffsb-6.0-rc2 license file path
2cb8a4e ltp: drop do_unpack_append/do_extract_tarball
2752118 ltp: fix style using oe-stylize (no changes in the content of the recipe itself)
2e09b7c ltp: update SRC_REV to LTP 20140115 release
0031db1 kernel.bbclass: Fix empty modules directory QA issue
4a8ddd8 syslinux: fix booting memtest86+ using pxelinux regression
1ae1b28 unfs3: Fix compile regression from unfs3 port
d93620b bitbake: runqueue: Fix race against tasks sharing stamp files
5e6db9d gcc: Include patch scheduled for GCC 4.8.3 to fix epilogue on ARM
964a590 libtool: Set CONFIG_SHELL for nativesdk
56c21bd db: Fix libtool linking against local libstdc++.so
600dcd9 cogl: Place the patch in the correct directory
28ba0fb toaster.bbclass: save original package name
c31a045 documentation.conf: update task descriptions
3f8f70b package.bbclass: Show which files require given dependency in debug output
ee045ee package.bbclass: Don't search for providers of PRIVATE_LIBS
5f4fdf8 cogl: kms: include necessary header for size_t
d4e57a7 unzip: Pass LDFLAGS to the linker
a2cefa0 oeqa/runtime: smart: fix adding channels
db1a2a6 oeqa/runtime: drop restartTarget method
245ee16 qemu: Allow building without X11 support
8ef4a3c unfs3: Fix dependencies and allow target builds
321cd5a pkgconfig: Drop glibconfig from SRC_URI to unbreak builds after previous commit
9f6cd59 pkgconfig: remove out-dated configure options and dependencies
ced097e python-numpy: don't search host directories for libraries
9532004 scripts/runqemu-internal: use -cpu core2duo for qemux86-64
82893ff oeqa/runtime: rpm: fix finding the test rpm file
bfa46b6 bitbake: user-manual: Fix issue with previous revert
14778a8 bitbake: Revert "usermanual: Updated CC License to version 3.0"
37f6013 udev: fix typo
6eaf5b8 packagegroup-core-standalone-sdk-target: Add qemuwrapper-cross to target sysroot
7bbaf8b cml1.bbclass: Fix return code handling in do_menuconfig()
58df7bb wpa-supplicant: Add dependency on openssl
af1a44a multilib.bbclass: fix Multilib QA Issue
f328a9d buildhistory.bbclass: Improve robustness in image file listing
d955d6a bitbake: siggen.py: fix the SignatureGenerator()
30bfec0 bitbake: runqueue: Simplify pointless len() usage
9a46332 bitbake: hob: No need for enable_proxy and same_proxy in conf file
914e50e bitbake: hob: Don't always save proxy values in conf file
d246112 bitbake: hob: don't display interruptions as fails
1b6e11c bitbake: hob: unsetting busy cursor after hitting Stop button
14e548d bitbake: bitbake: hob: check if parser has attribute 'shutdown'
f43c2d8 bitbake: hob: change error_msg for CommandFailed event
3c5b683 bitbake: cooker: Add option of specifying indvidual tasks for targets
b3bb841 lib/oeqa: sshcontrol: Allow alternate port for SSHControl
51cccb7 combo-layer: Make directories only if they don't exisit yet
bede5a4 lz4: actually install things
933f6d4 rpcbind: fixes crash during start
2f4bddc tiff: flesh out PACKAGECONFIG
464c120 oe-selftest: New tests for sstate relocation
a329371 scons bbclass: enable parallel make
2fedfdc runqemu, runqemu-internal: Allow slirp for NFS and KVM use
96b24e7 runqemu-export-rootfs: update for unfs3
57d269a unfs-server: Remove unfs-server recipe and patches
8dd861d runqemu: Use the newer unfs3 for serving user space nfs
cac76ff unfs3, unfs-server: Replace all instances of unfs-server with unfs3
162dd38 unfs3: Add a NFSv3 user mode server for use with runqemu
b3bb9c7 dpkg: use systemd service for first boot configuration
1ec04bb image.bbclass: fix paths to run-postinsts
4186d78 systemd-compat-units: remove run-postints service
79f2bb4 run-postinsts: Add systemd service file
78484bf run-postinsts: remove the init script after a clean start-up
8b576ac sanity.bbclass: check required perl modules
ffecae7 linux-firmware: split out ATI/AMD Radeon firmware
a565ebd feature-arm-thumb: Fix missing t2 suffix for armv7a MACHINEs
76ea30f opkg-utils: Add RPROVIDES/RREPLACES/RCONFLICTS to fix upgrade-path
24fc116 connman: upgrade to 1.21
2eacc87 minicom: upgrade to 2.7
624c648 libpcap: upgrade to 1.5.3
6a7a210 neard: upgrade to 0.14
17e6df6 initscripts: define failure/success/warning/pass functions
e1780a2 gawk: enable ptest support
1f45bc3 libcgroup: Update to 0.41
e111e7e lsbinitscripts: Update to 9.52
909486e lib/oe/patch.py: Prefer "git am" over "git apply" when applying git patches
56236e7 cmake: Fix freetype detection
f805cff speex: configure in float or fixed mode based on TARGET_FPU
492240a alsa-utils: Add PACKAGECONFIG for udev
66055fb package_{ipk, deb, rpm}.bbclass: support additional user-defined metadata
be77f31 package.bbclass: add getter of additional metadata
c467a01 at: add systemd support
7c098b4 distcc: add systemd support
dbfcfbf openssh: fixes for systemd
ab2e677 dropbear: add systemd unit files
330e5eb apr-util: enable ptest support
8a30237 apr: enable ptest support
519ec0e systemd: fix ptest to make it able to run on target
5612e26 yocto-bsp: Add core2 and corei7 tune choice to x86_64
279af93 yocto-bsp: Update substrate to use the new x86 tune files
cb2b9b5 genericx86: Use require instead of include
0e0c9ed genericx86: Use new x86 tune files
9d66f32 genericx86-64: Use the core2-64 tune
a5b13d4 genericx86: Use the core2 tune file
ecb9813 local.conf.sample: Add automatic defaults for BB_NUMBER_THREADS and PARALLEL_MAKE
ff1bdc1 doc: Update profile-manual to use new core2_32 tune name
78bd3a1 eglibc-ld.inc: Update the inc file to match the new x86 tune
9261d58 qemux86_64: Use the core2-64 tune
a9e7868 tune: README: Typographical corrections
776a335 tune: README: Document best practice
e010be1 tune: README: Whitespace cleanup
beac8c5 tune: Remove tune-x86_64.inc
dff3daa tune-corei7: Add support for cpu-type corei7
bf3cb2c tune: Make 32b or 64b explicit in tune name for core2
4fdfeeb tune-core2: Only add the current ARCH to PACKAGE_EXTRA_ARCHS
31d3449 tune-core2: Replace -mtune=generic with -mtune=core2
3a39071 i586: Only add the current tune to PACKAGE_EXTRA_ARCHS
939fec6 x86: Replace ia32 with x86 when referring to the generic architecture
7217730 utils: Add a cpu_count wrapper function
5280192 bitbake: user-manual-ref-variables.xml: Added 10 new variables to the glossary.
6201d18 bitbake: user-manual-ref-variables.xml: Fixed references to "Build Directory".
37ab088 bitbake: user-manual-ref-variables.xml: Editing pass.
d51fb53 bitbake: template/titlepage.templates.xml: Suppress Title Text.
4fb4928 bitbake: user-manual-customization.xsl: Updated param list to pass
9dcd603 bitbake: user-manual-metadata.xml: Renamed section tag
e501280 bitbake: user-manual-ref-variavbles.xml: Added new glossary chapter.
bd41405 bitbake: user-manual-bitbakecommand: Various edits/cleanups
5cce95c bitbake: user-manual-bitbakecommand: Standardise on section tags, not example
2375f55 bitbake: user-manual-bitbakecommand: Replace screen tags with literallayout
64f66d7 bitbake: user-manual-bitbakecommand: Reform whitespace
32304ba bitbake: user-manual-bitbakecommand: Update help text output with that from bitbake master
1669f39 bitbake: user-manual-fetching: Editing pass over the manual chapter
123b978 bitbake: user-manual-fetching: Change varname/emphasis tags to filename
0de491b bitbake: user-manual-fetching: Change screen -> literallayout
d0c16f9 bitbake: user-manual-fetching: Change the file whitespace
552d54f bitbake: user-manual-metadata: Clean up task documentation
ac576f4 bitbake: user-manual-metadata: Clean up task flag section
7b99bc0 bitbake: user-manual-metadata: Expand parsing process docuemtnation
d6b8f74 bitbake: user-manual-metadata: Add section about layers
76072ea bitbake: user-manual-metadata: Add section about INHERIT
ab18cca bitbake: user-manual-metadata: Add section about running tasks and the environment
8705fe2 bitbake: user-manual-metadata: Rework section about shell/python functions
908fdb5 bitbake: user-manual-metadata: Add section about data store operations
c676bf8 bitbake: user-manual-metadata: Add lists of common events
c8892fc bitbake: user-manual-metadata: Editing pass over the manual chapter
98b41e4 bitbake: user-manual-metadata: Use filename tags instead of literal and varname tags
a0f3328 bitbake: user-manual-metadata: Replace screen tags with literallayout tags
0e90d0f bitbake: user-manual-metadata: Update whitespace (no content changes)
4dd8a0d bitbake: user-manual-metadata: Reorder sections to more logical order
633db4f bitbake: user-manual-metadata: Add section ids for most sections
437791a bitbake: user-manual-hello.xml: Added new chapter for "Hello World Example"
1b08402 bitbake: user-manual.xml: Cleanup on the title page.
3a9593d bitbake: user-manual-intro.xml: Re-write of BitBake introduction.
a713dad bitbake: user-manual-intro: Various minor cleanups/improvements
5b60a81 bitbake: user-manual-intro: Add obtaining bitbake and summary sections
e925730 bitbake: user-manual-intro.xml: Added "Concepts" section.
2038b85 bitbake: user-manual-intro: Update/improve whitespace
2ee7747 bitbake: user-manual-intro: Expand introduction and fix spelling mistakes
7c98419 bitbake: documentation: Add README based off the YP docs one
a43f1b2 bitbake: gitignore: Update for recent docs changes
bfa18b5 bitbake: user-manual: Separate out chapters into individual files
034e490 bitbake: user-manual: Import YP Docs templates for usermanual improvements
eeb4c71 bitbake: usermanual: Renamed manual dir to user-manual to be consistent.
afac3d8 bitbake: usermanual: Updated CC License to version 3.0
e5b3918 bitbake: toaster: fix package data gathering
9677275 bitbake: toaster: fix builds page CSS and functionality
594eeeb bitbake: toaster: Set .error styles for tables
47d1923 bitbake: toaster: All Tasks Feature with sorting and filtering
84b2390 bitbake: toaster: Implementation of recipe detail views
b45defd bitbake: toaster: Implementation of base build details page
05a684f bitbake: toaster: Added custom filter tags for use in templates.
87776ca bitbake: toaster: Base table fixes for header text, sort icon and filter icon
4acdf8a bitbake: toaster: Base html fix to set the page title
dfd7a8a bitbake: toaster: settings remove duplicate entry
baaab36 bitbake: toaster: Add initial tests
b0b1acb bitbake: toaster: Toaster GUI Build and Dashboard pages fixes
d27c7f2 bitbake: toaster: add jquery cookie plugin
15e5290 bitbake: toaster: add vim modelines for .py files
731a0ac bitbake: toaster: update Task classification fields
3e1dbed bitbake: toaster: update Simple UI references to avoid conflict
43a3f47 bitbake: runqueue: Only attempt to print closest matching task if there is a match
9a4855b bitbake: fetch2/wget: Check downloaded file isn't zero size
1a9226f libtool-cross/native: Force usage of bash due to sstate inconsistencies
d11d782 Revert "e2fsprogs/populate-extfs.sh: fix a problem on dash"
e40123a boot-directdisk: fix the support of vmdk
7b171ed pybootchartgui: Add option -T to allways use the full time
57c93e3 pybootchartgui: Adopt the width of the index in split output files
9d492a4 pybootchartgui: Simplify adding processes to the trace
ea27845 pybootchartgui: Correct the legend
34a5d1e pybootchartgui: Make the -s option work again
ff49d8e libtool: remove the unrecognized configure option
42e122d cmake.bbclass: fix note when warning about deprecated variables
1b0d621 adt_installer: do not install rootfs if target is not selected
e9fae95 lib/oeqa: sshcontrol: fix false timeout failures
a29d270 gdk-pixbuf: use PACKAGECONFIG to control loaders with external dependencies
1e162c0 gdk-pixbuf: don't forcibly disable GIO sniffing, use PACKAGECONFIG.
d59809c gdk-pixbuf: upgrade to 2.30.3
eda6733 libxcb: upgrade to 1.10
022e31f xcb-proto: upgrade to 1.10
00b6157 glproto: upgrade to 1.4.17
6e70474 poky.ent: Fixed broken OE_LISTS_URL.
0fa2144 dev-manual: Updated the section that describes finding source code.
76240de ref-manual: Updated the TCMODE variable.
29b2fb6 ref-manual: Updated the nativesdk class to have correct class.
350aeeb ref-manual: Updated native and nativesdk classes.
a8261e9 ref-manual: Small wording change to WORKDIR variable description.
96e3b42 ref-manual: Updated the WORKDIR variable description.
0829757 dev-manual: Another small fix to the EXTENDPE definition.
f477d27 dev-manual: Small fix to EXTENDPE definition in "Writing a New Recipe"
3528ab3 dev-manual: Review edits to "Writing a New Recipe" section.
b27a930 dev-manual: Added review comments to "Writing a New Recipe" section.
5837061 poky.ent: Updated lists.linuxtogo.org with lists.openembedded.org
52a17c7 mega-manual, dev-manual: Updated the recipe flow figure.
ff4d949 dev-manual: Minor re-wording to introduce recipe flow diagram.
ad54092 dev-manual: Edits to the "Writing a New Recipe" section.
6a2456a ref-manual: Fixed cross-reference anchor name.
3916613 ref-manual: Fixed cross-reference anchor name.
e987fa8 dev-manual: Edits to the "Writing a New Recipe" section.
a66675e ref-manual: Added note about curly brace parsing to BitBake chapter.
c113777 ref-manual: Edits to TCLIBC variable.
f0dff11 dev-manual: Edits to "Examples" and "Post-Installation" sections.
b0fd1c3 dev-manual: Edits to "Testing" section.
0d9959a dev-manual: Edits to "Packaging" section.
a3224b8 dev-manual: Edits to "Enabling System Services" section.
ab001ce dev-manual: Edits to "Installing" section.
b6c0bae dev-manual: Edits to "Compilation" section.
814e071 dev-manual: Edits to "Configuring the Recipe" section.
7856430 dev-manual: Edits to the "Licensing" section.
658761c ref-manual: Edits to the SPDXLICENSEMAP variable.
6d65a98 dev-manual: Edits to "Unpacking Code" section.
a1cb6db dev-manual: Edits to "Fetching Code" section.
32d6960 dev-manual: Edits to "Running a Build on the Recipe"
0e03166 dev-manual: Edits to "Storing and Naming the Recipe"
8657f00 dev-manual: Edits to "Locate a Base Recipe" section.
8eb6e7f dev-manual: Edits to "Locate a Base Recipe" section.
1105b46 poky.conf: Remove Debian Squeeze from SANITY_TESTED_DISTROS
a452c02 poky.conf: add Debian 7.3 to SANITY_TESTED_DISTROS
a6c6659 sstate.bbclass: remove previous version's stamp
4b62d9f e2fsprogs/populate-extfs.sh: fix a problem on dash
0205603 linux-firmware: package Marvell SD8797 firmware
ed9dca6 guile: don't use the identifier 'noreturn'
c81d3ad bitbake: fetch2/git: Dereference unresolved tags with ls-remote
d21c153 bitbake: fetch2/git: Anchor names when using ls-remote
594c2e0 bitbake: fetch2: Improve invalid SRCREV error message
453eb54 bitbake: fetch2: Sanity check SRCREV matches rev/tag parameter
721d3d6 bitbake: fetch2: Clean up srcrev_internal_helper
1180ec3 package.bbclass: show warning when package is providing already provided shlib
bd938fe package.bbclass: move reading shlibs providers to separate function
ea94e0f icecc: use exact match in blacklists, re-start with empty system_package_blacklist
033671d icecc: Fix allarch and native recipes having different signatures
cb714e1 icecc: use bb.utils.which also for 'as'
a7b97cb icecc: Don't replace non-empty PARALLEL_MAKE with empty ICECC_PARALLEL_MAKE
94802fd allarch: Set empty TARGET_PREFIX and TARGET_FPU
9abc002 sstatesig: include native/cross/nativesdk deps in target signatures
b908cac poky-tiny.conf: Add PACKAGECONFIG to disable opkg-utils python dependencies
e0d8e2c linux-yocto-bsps: update reference BSPs to v3.10.25
f3dbfbf opkg-utils: Remove strange PACKAGES native override
e612e83 opkg-utils: Add basic PACKAGECONFIG for python dependencies
6e15d32 glib-2.0: add explicit build dependency on DBus when ptest is enabled
c97d01d oe-selftest: Patch sstate tests to work with new sstate-cache naming and content
13c016e tcl: fix the TCL_INCLUDE_SPEC
6644dac opkg/opkg-utils/chkconfig: Clean up u-a-cworth references
11cff94 update-alternatives: We now use u-a in nativesdk so make sure the dependency is present
6ed41e2 linux-yocto-dev: bump version to 3.13+
bf7383d lib/oeqa: allow a layer to provide it's own TEST_TARGET class
650ee5e x11vnc: fix CAPS_LOCK issues
fa9f89c weston: depend on drm for 'launch' packageconfig enabled
c76bf26 opkg: No longer PROVIDES update-alternatives
ab5bea7 default-providers: Change update-alternatives provider to opkg-utils
6de6281 opkg-utils: Upgrade to latest git HEAD
cac6f81 wpa-supplicant-2.0: don't exit in pkg_postinst
e036f2a glib-2.0: fix mapped file ptest
49eaa0f glib-2.0: fix the dbus-appinfo test when running outside of X
6dcc4e7 bitbake: fetch2/__init__.py: let try_mirror_url return correct value
5e5a7fc bitbake: SignatureGenerator: Add empty implementation for dump_sigs
7b580cd bitbake: fetch2/gitsm: Use ud.basecmd instead of hardcoding git
a99fa6d bitbake: fetch2: Don't allow '/' in user:pass, fix branch containing '@'
19c75e9 bitbake: siggen: Remove fsync that is causing performance issues
cfd1520 oe-selftest: separated the SStateBase and SStateTests in different modules
9229f25 oe-selftest: renamed sstate.py module to sstatetests.py
31b8c56 oe-selftest: New object SStateBase cut off from SStateTests.
f1f0787 util-linux: add reset.1 manpage in update-alternatives
e917b07 initrdscripts: add $CMDLINE to init-live switch_root
e4319b6 package_rpm: Fix a race with package_deb/package_ipk
fd291d0 alsa-lib: remove hard-coded /usr/include in dev package
527ad1c linux-firmware: add firmware for additional iwlwifi devices
f6e170f nativesdk-packagegroup-sdk-host: reverse inherit order
63cde72 allarch.bbclass: set SDK_ARCH and SDK_CC_ARCH to "none"
e665db7 glib: add missing dependencies for ptest
e927fdf weston: cleanup mesa depends
e7f8537 linux-yocto/3.10: mohonpeak bsp config and scc files
a166c2e linux-yocto/3.10: update to 3.10.25
5d90065 linux-yocto/3.10: update meta data for media fragments
cea75f9 ltp: fix makefile race
375ac72 dbus-ptest: fix incorrect option name
97d7e86 systemd-compat-units: remove dnsmasq from sysv disabled list
21b4548 shutdown-desktop: use poweroff for the Exec field in the shutdown.desktop
f5b5edd dbus-ptest: disable systemd
e4c23f7 dropbear: Refresh pam patch so it applies against recent version
253a58c eglibc-locale: Fix multilib builds to depend on the correct binutils
ede5dbf python-nose: don't install as an Egg
9209641 eglibc-locale: Fix previous dependency change to properly work in nativesdk case
aafc91a python-nose: Add BBCLASSEXTEND for native/nativesdk
8069a88 harfbuzz: Move ancillary binaries to ${PN}-bin
e26908e security_flags: db can't use pie flags from gcc for security build
cfa396b packagegroup-core-tools-testapps: add Piglit
a61beff piglit: add (from meta-oe)
971c2e0 waffle: add (from meta-oe)
4ec9929 python-numpy: add (from meta-oe)
7282635 python-nose: add (from meta-oe)
d410a12 python-mako: add (from meta-oe)
18e62b8 cmake: specify all install paths
6d339b8 separatebuilddir: Drop cmake lines since cmake class has this as default now
a4bcb3f grub-efi: remove configure patch, simply seed the cache
5ccdc91 alsa-tools: fix the AUTOMAKE_DIR
66d59b3 nativesdk-packagegroup-sdk-host: Cleanup strange darwin override
8699cd4 ptest: d.keys() is slow, use a list instead
a0bbc06 eglibc-locale: Fix depends on binutils
b223b53 make: Disable floating guile dependency
47d9fa8 image_types bbclass: add support for tar.lz4 and cpio.lz4
2fa4364 kernel.bbclass: add support for LZ4 initramfs files
21551f6 distrodata bbclass: add support for lz4 archives
ff5a3e9 base bbclass: add support for lz4 compressed archives
f6d3fca lz4: add r112
d6ed40f cmake: default to out-of-tree builds
3c6fde0 separatebuilddir: build libproxy and taglib out of the source tree
6aafc52 cmake: respect ${S} and ${B}
d4ad8f7 grub git: update to latest git
90e8429 libproxy: Update to 0.4.11
a90fb7b libacpi: Fix GNU_HASH problem
a8a6ccb libidn: disable C# directly
5fc79e3 sudo: upgrade to 1.8.9p1
e13cb5a man-pages: upgrade to 3.56
ec7ad9a cups: upgrade to 1.7.1
616e5de util-linux: Add fstrim utility
0c68bcf libsdl2: upgrade to 2.0.1
64a7cce cdrtools-native: upgrade to 3.01a20
9c1c4ce chrpath: upgrade to 0.15
6c93994 dropbear: upgrade to 2013.62
ad6f3ea ptest.bblass: Fix package QA issues when disabled
f543a8e systemd-compat-units: do not mask available services
af5e693 dbus: Remove stray semicolon from SRC_URI
cc8170f oeqa/runtime/systemd: wait for services to start/fail
1b63617 bitbake: toaster: Toaster GUI, generic search, filter and order
5482409 bitbake: toaster: Build dashboard implementation
2251426 bitbake: toaster: Create the base page navigation structure
c2fc6ca bitbake: toaster: update static media for Toaster GUI
47621ec bitbake: toaster: clone Simple UI as base for Toaster GUI
8172f24 terminal.bbclass: do not export PS1
fef8709 package: Keep global pkgfiles[] up to date when snapping library symlinks
7ef0f55 binutils: Also add autoconf-native to DEPENDS
8b0be3f kernel-module-split: Remove extraneous call to depmod from module postinst
21c5cb7 libsoup: Remove libproxy from DEPENDS
96f7bd5 grub: add PACKAGECONFIG for device-mapper
54ee387 qemu: Remove stray .git files after unpacking
7be3064 busybox: lineedit: initialize delptr
b4f7995 shadow: set correct entries for pseudo terminals in /etc/securetty
41d7758 beecrypt: add ptest support
2b70203 busybox: enable SEAMLESS_XZ by default
e823383 libxfont: upgrade to 1.4.7
d863ae2 tcl: enable ptest support
a8a711c libsoup-2.4: upgrade to 2.45.3
afa7db3 libtasn1: upgrade to 3.4
37a0775 qemu: upgrade to 1.7.0
ae1ca61 netbase: upgrade to 5.2
753814a lighttpd: add www/{logs,var} symlinks
8d8bcc4 libarchive: Upgrade to v3.1.2
0509a60 base-passwd: upgrade to 3.5.29
6ee5d95 bitbake: fetch2/gitannex: Fix function arguments to match bitbake master
854daab bitbake: gitannex: Add missing file from previous commit
a2f5a61 adt-manual: Deleted mis-leading sentence from configure section.
6a6a05a poky.ent, ref-manual: Updated list of Fedora packages
3517a76 dev-manual: Edits to the "Post-Installation Scripts" section.
777601b ref-manual: Edits to KERNEL_SRC and KERNEL_PATH variables.
1cd9f2c dev-manual: Updated the LIC_FILES_CHKSUM example.
7e71031 ref-manual: Added new INITRAMFS_IMAGE variable description.
1e8ba08 ref-manual: Edits to the INITRAMFS_IMAGE_BUNDLE variable.
11d24f4 ref-manual: Added INITRAMFS_IMAGE_BUNDLE variable description.
c4bcaa3 bitbake: bitbake: fetch2/git: add description for nobranch
2bd4477 bitbake: bitbake: gitannex.py: Add Git Annex support
e93a345 sstate: add do_package to the noexec list in setscene_depvalid
100c883 bitbake: bitbake: fetch2/git: add nobranch option for SRC_URI to skip SHA validating for branch
1d3a139 bitbake: bitbake/lib/bb/build.py: fix the task flags cleandirs
4722965 bitbake: bitbake: usermanual.xml: fix a typo
6c294f0 bitbake: toaster: add two-stage commit startup logic
18d486c base.bbclass: pull in file-native for src.rpm
22764d3 sstate: Add optimizing logic for crosssdk setscene dependencies
7aa3b95 gstreamer1.0-plugins-good: upgrade to 1.2.2
cbd34ce gstreamer1.0-plugins-base: upgrade to 1.2.2
894c882 gstreamer1.0: upgrade to 1.2.2
df7b151 bluez5: upgrade to 5.13
de2f743 ofono: upgrade to 1.14
745ff50 gstreamer1.0-libav: upgrade to 1.2.2
ccb8493 gstreamer1.0-plugins-ugly: upgrade to 1.2.2
89c3875 gstreamer1.0-plugins-bad: upgrade to 1.2.2
0faeea0 screen: update debian patchset to version 4.0.3-14
5ef95e1 guile: fix the depends for target recipes
e7fcf1b python: explicitly disable bluetooth.h check
031d2ea xf86-video-modesetting: update to 0.8.1
b1bf8f7 grub: add git version
2acd617 kmod: Update to Rev 16 via git
741a894 libpthread-stubs: should set ALLOW_EMPTY
26a3116 grep: upgrade to 2.16
16080a3 Add missing RDEPENDS of initscripts-functions
acaf650 initscripts: split the functions script into a separate package
f4ae439 Revert "gconf.bbclass: remove --disable-schemas-install"
2ee78e3 upstream_tracking.inc: remove outdated glib-2.0 entry
23f2902 db : Include C++ binding library in Berkeley DB recipe.
0343546 quilt: enable ptest support
bcacd18 lib/oeqa/runtime: add test for python
3b0601a util-linux: remove non PN based -dev packages
12c181f libpcre: upgrade to 8.34
5b711eb kconfig-frontends: fix the incorrect depends on gperf
9a60c5e valgrind: rrecommend libc6-dbg on all architectures
81e1514 cdrtools-native: remove unused FILESPATH
33b9961 make: upgrade to 4.0
0cfb1e7 autogen-native: upgrade to 5.18.2
484727e autoconf: remove path_prog_fixes.patch
9c1d1dd automake: upgrade to 1.14
fc8931b logrotate: two minor fixes
907c8ce logrotate: upgrade to 3.8.7
6328170 e2fsprogs: upgrade to 1.42.9
5ddb7d4 mime.bbclass: remove the --disable-update-mimedb
31fe1b6 gconf.bbclass: remove --disable-schemas-install
acfd890 enchant: fix unrecognised option
6a02acb texinfo: Update to 5.2
663dad6 coreutils: upgrade to 8.22
e65fc0e curl: upgrade to 7.34.0
6fd9efc gdbm: upgrade to 1.11
fce8545 security_flags: add the rest of the grub-efi related packages
655b432 image.bbclass: add ability to set systemd default target
19254bd oe-selftest: New tests for sstate related operations
f33c990 maintainers.inc: reassign e2fsprogs
f4e85ca bitbake: bitbake/lib/bb/cooker.py: remove a duplicated self.data
17aa506 classes/package: set SUMMARY in do_split_packages()
6c6ae2a bitbake.conf: add full stop to default DESCRIPTION
3bf4f68 enchant: tidy up recipe
eaf4639 qmmp: add SUMMARY and tweak DESCRIPTION
8a59b94 alsa-utils: add missing individual package SUMMARY values
cb4500a Tweak SUMMARY
a22ee50 Update after toplevel LICENSE file checksum change
4bd0d31 ref-manual: Added more detail to BB_GENERATE_MIRROR_TARBALLS variable.
eb77bc6 profile-manual: Updated output from build env script.
ee0d303 dev-manual, mega-manual: Updated the recipe creation figure.
9cf6979 dev-manual: Removed left-over notes from "Unpacking Code" section.
05adf62 dev-manual: Changed "Compiling the Recipe" section to "Compilation"
58a4753 ref-manual: Updated FAQ entry cross-reference.
34c6547 dev-manual: Removed section on excluding a package from the build.
daa6066 dev-manual: Final merging of recipe stuff.
71460e5 dev-manual: Integrated Hello World section into new writing recipe section
3ad993d dev-manual: Completed first pass of review feedback.
9f51f11 dev-manual: Completed the "Fetching" and "Configuration" sections.
fac99a4 dev-manual: First complete draft of the "Writing a New Recipe" section.
3b908ee dev-manual: Re-wrote the installation part of "Writing a Recipe"
b55ffe7 dev-manual: Updates to "Writing a Recipe" section.
4abc384 dev-manual: Some review edits to the new writing a recipe section.
1e83889 dev-manual: Some development text for fetching source
5a3296c dev-manual: Put into place a rough draft of the "Writing Recipe" section
1bd23c8 dev-manual, mega-manual, Makefile: Added new recipe creation flow figure.
2cd87c8 ref-manual: Edits to LICENSE variable. Added SPDXLICENSEMAP variable.
d06cd4c ref-manual: Fixed typo in ICECC_DISABLED.
61597c4 ref-manual: Edits to the icecc class.
d2c89c7 ref-manual: Added new ICECC_DISABLED variable description.
efedaf9 ref-manual: Updated the FAQ entry for how to use an external toolchain.
5dd83ad ref-manual: Updated the TCMODE variable description.
2c9475e bitbake: bitbake: fetcher2: clean(): remove the .patch.done
d8d4b0e bitbake: bitbake: fetcher2: git.py: clean(): remove the .tar.gz.done
d305a05 bitbake: bitbake: replace 3 spaces with 4
3814e34 e2fsprogs: silence debugfs
da9b4fa wipe-sysroot: explain what is being deleted, and check for arguments
5165328 dbus: enable API entry point checks
d43adee dbus: use PACKAGECONFIG for X11 and systemd
ace1981 libxcb: don't hard-code package splitting
417f8c8 libxcb: don't disable parallel building
b8a3fb2 README: fix DISTRO = "" reference
ef91193 Fix license notices for OE-Core
4d093fe tzcode: Update to 2013i
ec52326 tzdata: Update to 2013i
6b04483 byacc: upgrade to 20140101
db7caba systemtap: Add --enable-prologues to configuration
3de579c meta/lib/oe/terminal.py: Don't pass non-supported '--disable-factory' flag to gnome-terminal
7774bdf kmod: fix zlib dependency
6710c39 test-dependencies.sh: avoid showing misleading error messages
19fc2ed git: upgrade to 1.8.5.2
52b9309 make: remove the obsolete SCCS.patch
4e1b958 poky: Add Fedora-20 to supported distros list
7579e19 quilt: upgrade to 0.61
1cca163 glib-2.0: add EXTRA_OECONF for uclibc
77fec45 tcl: Fix ${bindir}/tclsh symlink
e27f7d4 python: fix unrecognised options: --without-cxx --with-cyclic-gc
6ea42c0 sqlite: remove unrecognised options: --enable-tempstore
a3c5d82 maintainers.inc: reassign tzcode-native
5e80a34 upstream_tracking.inc: update entries
b1f3da9 eglibc: Remove older version 2.17
eae5422 gcc: Drop 4.7.2 version since 4.8 is stable now
87f74ca bitbake.conf: set a default for MACHINE_FEATURES
8ae3f22 pciutils: tidy up recipe
16a4390 opkg-utils: tidy up recipe
c81dd87 guilt-native: tidy up recipe
7dabe7b enchant: tidy up recipe
e49389a stat: tidy up recipe
b5edd1e adt-installer: tweak DESCRIPTION and add SUMMARY and HOMEPAGE
c5135e4 core-image-lsb: fix DESCRIPTION
35352b7 binutils: add/tweak SUMMARY
94dd065 icecc-create-env-native: add SUMMARY and tweak DESCRIPTION
f92ed88 gmp: set SUMMARY and DESCRIPTION
a326200 xf86-video-modesetting: set SUMMARY and DESCRIPTION
2e3396f xf86-video-fbdev: set SUMMARY and DESCRIPTION
5d7d2ae xf86-input-vmmouse: set SUMMARY and DESCRIPTION
a011d8a qt4: set SUMMARY and tweak DESCRIPTION
9f8f4fd Basic recipe formatting fixes
2de5f44 linux-dummy: set reasonable DESCRIPTION
bc16384 linux-dummy: set LICENSE to GPLv2 to avoid license warning
1b50dbc gawk: set reasonable SUMMARY and DESCRIPTION
535ebc9 xev: add proper SUMMARY and DESCRIPTION
40cbb12 libunique: fix HOMEPAGE and touch up DESCRIPTION
0c5366d bash: update HOMEPAGE
aee67ee startup-notification: fix HOMEPAGE
d6a19b0 lame: update HOMEPAGE
8e5a11d libsamplerate0: add HOMEPAGE
7c39630 telepathy-mission-control: fix HOMEPAGE
a231a0f gettext: set reasonable SUMMARY and DESCRIPTION
e792f54 Add missing SUMMARY values
cec8b23 Replace one-line DESCRIPTION with SUMMARY
63819fb Replace OpenedHand Bugzilla in BUGTRACKER
3575aee Drop empty/invalid BUGTRACKER values
3f0a760 speex: fix SRC_URI to use PV instead of hardcoding the version
64ffe91 mesa-demos: fix unrecognised options
cce0371 ghostscript: remove unrecognised option
27f3190 wget: remove unrecognised option
41b9a11 cups: remove unrecognised option
c49a693 enchant: fix unrecognised option
1d146a8 bluez-hcidump: remove unrecognised options
098fdf6 gstreamer1.0: remove unrecognised options
ac9e080 gstreamer1.0: remove unrecognised options
728f1c7 gstreamer: fix unrecognised options
54fe057 libid3tag: remove unrecognised option
8830498 dpkg: fix/remove unrecognised options
7267aa9 tremor: remove unrecognised option
aec6bc9 alsa-lib: remove unrecognised options
c7aa5bb flac: remove unrecognised options
005af45 bitbake: fetch2: avoid printing "no checksum" error message twice
1edb126 bitbake: fetch2: fail checksum validation if SRC_URI checksums set to ""
85ac394 openssl: use PACKAGECONFIG to disable perl bits
405c322 toaster.bbclass: fix crash on buildstats collection
2ccdb82 valgrind: upgrade to 3.9.0
63fb358 classes/insane: restore printing LIC_FILES_CHKSUM checksum if not specified
8ee784e libav: add libpostproc to PROVIDES (for 0.8.x version only)
325fb2b sstate: Use datastore copies due to data changes persisting
6aa4de3 externalsrc: Fix deltask usage
3946917 terminal: Exclude BB_ORIGENV from the signatures
08a8c90 yocto-bsp: Add missing interfaces file for qemu BSP templates
3ada51f sstate/sstatesig: Add populate_lic to list of arch invariant sstate tasks
9a1705e9 bitbake.conf: Exclude WORKDIR changes from sstate checksums
e5ee1b8 sstate: Convert to use ':' as a filename sperator and use SSTATE_SWSPEC globally
8685b5c libcap: Allow rebuilds to work correctly
a69ccc5 beecrypt: Allow PACKAGECONFIG to be overridden
0a57d5b harfbuzz: Allow PACKAGECONFIG to be overridden
553fa36 nfs-utils: modify the boot sequence of the init script
dd50c4d runqemu: Allow user to set -vga option with qemuparams
963b69b testimage: include traceback when loading a test fails
b24f217 lib/oeqa/runtime: rewrite the systemd test module
7c1c3d1 oe-selftest: added buildhistory buildtime tests in module buildoptions.py
6fe6a91 oe-selftest: New test module for OE scripts.
8379990 oe-selftest: New BuildhistoryBase object for buildhistory testing.
f703027 conf-notes: remove meta-toolchain-sdk references
c28a4a0 libtirpc: upgrade to 0.2.4
bd3fed5 sstatesig: Correctly handle matches spanning stamps and sstatedir
c61fe39 sstatesig: Update for the removal of sstate-name
b6b6d92 sstatesig: Ensure we return all matches for find_sigdata
d32d08f ptest: Disable for native recipes
f857b62 ptest: Fix dependency/ordering issue
64bb800 externalsrc: Use deltask API
14471d2 native: Use deltask to remove tasks which have no purpose
2c7276c sanity.conf: Require bitbake 1.21.1 as a minumum version for deltask functionality
8bbaed4 bitbake: Update to version 1.21.1 for master
0b5476a bitbake: siggen: Fix reversed difference output
eebe65c bitbake: runqueue: Further extend bitbake -S output to view signature differences
a4457cf bitbake: siggen: When printing signatures recursively, limit the output
6d2f344 bitbake: runqueue: Fix data being written into siginfo/sigdata files
bc1e359 meta-toolchain-sdk: Remove references from meta-yocto
2961b58 security_flags: more relocation issues
6e6613e dbus-ptest: Fix SRC_URI checksums
848961e bitbake: runqueue: Add output for -S option for listing the changepoints compared with an sstate cache
52ef6c2 bitbake: bb.fetch2.git: reuse basecmd attribute
498de04 bitbake: fetch2/git: Improve handling of unresolved names verses branches
ba82035 bitbake: build/ast: Create strong task add/del API in bb.build
8a82a38 bitbake: ast/BBHandler/build: Add support for removing tasks (deltask)
0f20411 Minicom depends on libiconv
1047f68 systemd-compat-units: drop machineid.service
3d6d5d7 systemd: delete files that end up in /var/volatile
402308c systemd: pass --root in prerm if running on host
3d2c33c dbus: upgrade to 1.6.18
7e17255 buildhistory: be quiet when garbage collecting the git repo
2a58f76 useradd.bbclass: add dependency on base-files
480bf03 sstate: Get rid of crazy name mapping
7935ae2 sstate/gcc: Fix shared workdir handling for siginfo files
88f0166 sstate: Write out siginfo files for non-sstate tasks
ebc7f3a pango: remove no update reason because it was updated
0af8bd9 openssl.inc: Install c_rehash utility with openssl
e1e59b6 pointercal-xinput: Mark as SIGGEN_EXCLUDERECIPES_ABISAFE
8a8a0c3 gcc-4.7/gcc: disable sdt from configure.ac to keep compatibility with configure
fd0d15f gcc-4.8/libstdc++-v3: disable sdt
cc93237 libsoup-2.4: add intltool-native to DEPENDS
d9da9cb grub: move xz to DEPENDS list from RDEPENDS list
1a0a0ea scripts/contrib: Add graph-tool
f773d90 bluez4: use legacy pygobject instead of gobject-introspection
8e21e3e bluez4: Install the test script
6284998 libpcap: upgrade to 1.5.2
4ed07c5 man-pages: upgrade to 3.55
0957eb6 lsbtest: add ppc64 support
b35283c LSB_Test.sh: update locales
d71314b LSB_Test.sh: check ldconfig before update cache
b34cc27 LSB_Test.sh: update rpm platform file when enable multilib
f939b6c lsb: update directory of install_initd and remove_initd
9daa1de qemu/local.conf.sample: Add sdl PACKAGECONFIG
cd5d65a insane: handle recursive configures when checking for unknown configure options
8babb8f busybox: get rid of nested functions in find
e230b44 pulseaudio: only package consolekit module when x11 is enabled
31f94de git: leverage upstream relocation support
4274ee5 libdrm: use RRECOMMENDS for libdrm-drivers
36632ed xz: make the LICENSE info more accurate
e2c2b5b nativesdk: Set LIBCOVERRIDE to a value
1dcbf30 gcc-crosssdk.inc: Fix missing dependencies (such as libmpc-native)
36fe775 useradd-example: add example for setting clear text password
c38fee2 image.bbclass: fix for zap_root_password
7b58b5f shadow-native: allow for setting password in clear text
1034518 image.bbclass: default USE_DEVFS to '1'
2b70a38 btrfs-tools: Update to 3.12
599eed2 lib/oeqa/runtime: systemd failure case improvements
bf595ca init-ifupdown: adjust priority of networking to fix system freeze problem
ab0c7af ltp: Use patch generated without -M
ab80273 gstreamer1.0-plugins-base: fix missing rprovides
447e4cf glib-2.0: upgrade to 2.38.2
e70fb78 rpcbind: upgrade to 0.2.1
9409039 bluez5: upgrade to 5.12
6bc2df5 oe-selftest: Add track_for_cleanup method to be used in cleanup tasks
90fa0fd oe-selftest: implement add_command_to_tearDown method
46215bd rpcbind: fix init status and exit code
9b43c57 libgcrypt: fix compile error with '-O2' in sysroot path
0101c26 cpan_build bbclass: do not install module into /usr/share
22dec67 perl: remove sysroot path leakage into packaged files
1cc8a01 distutils bbclass: delete site.py*
66a5f8d linux-libc-headers: fix MIPS klibc build error
4bb18c4 linux-yocto-dev: allow static SRCREVs via include
db4961b udev: Add ptest
b8e3996 iproute2: upgrade to 3.12.0
81b0b7e iptables: upgrade to 1.4.21
a48f701 cracklib: upgrade to 2.9.1
4abb031 dpkg: upgrade to 1.17.4
b7be318 xorg-lib: remove explicit --enable-malloc0returnsnull
c5b3851 util-macros: upgrade to 1.18.0
eef85f8 site: add xorg_cv_malloc0_returns_null
a90ad43 libav: Use "BP" and "libav" patch directory
c0d28b4 xinetd: add status of init.d command
b53a011 systemd-systemctl: Add preset capability
e0d4865 grub-efi: allow compilation without large model support
40b73e4 grub-efi: change to generate EFI image in target package
8275e0f ref-manual: Fixed the reference to the script for icecc class.
797a919 ref-manual: Reverted a patch that had added sdk-pms
f932163 ref-manual: Added module and module-base classes.
68fbbd1 shadow: change to use SHA512 password encryption
79e2bbd local.conf.sample.extended: restore some edits
d4327cb distro_alias.inc: drop external-*
bf71844 bitbake: data_smart: Fix hash corruption issue
7a345c3 maintainers.inc: update the the maintainers
ba8506e local.conf.extended: Bring into sync with OE-Core
2b38832 gdb-7.6.1: fix cygwin check in configure script
6b124ff sato-icon-theme: simplify icon-name-mapping lookup
07ce029 external-sourcery-toolchain: remove
b1b0c31 classes/module_strip: remove
bfec6b1 ref-manual: Removed "work" from the SDK_DEPLOY directory.
0f32d39 ref-manual: Edit to SDK_DEPLOY removing "temporary" from directory.
9548726 ref-manual: Edits to gnomebase class.
0091385 ref-manual: Edits to setuptools class.
26556a0 ref-manual: Minor edits to rootfs* class.
62e7ade ref-manual: Edits to GTKIMMODULES_PACKAGES variable.
9feb721 ref-manual: Added new SDK_DEPLOY variable description.
caf0dd0 ref-manual: Added more info to distrodata class.
b080c99 ref-manual: Added more info to gnomebase class.
c6d4c6a ref-manual: Fixed some broken cross-references.
98a70d8 ref-manual: Fixed double word error in EXTRA_QMAKEVARS_PRE variable.
44dd2fe ref-manual: Fixed double word in EXTRA_QMAKEVARS_POST variable.
d605e81 ref-manual: Edits to QMAKE_PROFILES variable.
d60f9b7 ref-manual: Fixed typo in PACKAGE_CLASSES variable.
80ce249 ref-manual: Edits to the IMAGE_PKGTYPE variable.
a545c85 ref-manual: Edits to PIXBUF_PACKAGES variable.
1762d18 ref-manual: Edits to the icecc class.
a711ebe ref-manual: Edits to GTKIMMODULES_PACKAGES variable.
3f81865 ref-manual: Edits to FONT_PACKAGES variable.
16626c3 ref-manual: Edits to the terminal class.
483fc48 ref-manual: Edits to the systemd class.
7853e3b ref-manual: Edits to the setuptools class.
6e91d5d ref-manual: Edits to the rootfs* class.
d76301b ref-manual: Edits to pixbufcache and pythonnative classes.
caf6752 ref-manual: Edits to the PIXBUF_PACKAGES variable.
4e83d80 ref-manual: Edits to the package_tar class.
51781b1 ref-manual: Updated the PACKAGE_CLASSES variable description.
18e1e8d ref-manual: Edits to PACKAGE_CLASSES variable.
b330c97 ref-manual: Edits to SYSTEMD_PACKAGES and SYSTEMD_SERVICES.
1c8b4dd ref-manual: Edits to the EXTRA_OESCONS variable.
489a438 ref-manual: Edits to the QMAKE_PROFILES variable.
9cfdf98 ref-manual: Edits to the EXTRA_QMAKEVARS_* variables.
8370e8f ref-manual: Edits to the SDK_DIR and SDK_OUTPUT variables.
56852f8 ref-manual: Edits to IMAGE_PKGTYPE variable.
1378121 ref-manual: More edits to PIXBUF_PACKAGES variable.
a2b7a7c ref-manual: Edits to PIXBUF_PACKAGES variable.
b152cfc ref-manual: Edits to INHERIT_DISTRO variable.
704c24c ref-manual: Updates to ICECC_USER_PACKAGE_BL and _WL variable.
b361db0 ref-manual: Edits to icecc class and removal of three variables.
88fb980 ref-manual: Minor edits to GTKIMMODULES_PACKAGES variable.
f779511 ref-manual: Minor edits to FONT_PACKAGES variable.
e0a456c ref-manual: Edits to SYSTEMD* variables.
348cec5 ref-manual: Added some references to variables in the useradd class.
b972f4b ref-manual: Review edits from "I" through "Z" classes.
b74db1f ref-manual: Fixed link back to own-mirrors class.
3b17557 ref-manual: Changed Gobject to GObject.
a6f4ea7 ref-manual: Edits to classes "I" through "K"
3a9d776 ref-manual: Review edits to classes "E" through "G"
3224ec9 ref-manual: Added new DEPLOYDIR variable.
644fdc4 ref-manual: Edits to bugzilla and deploy class.
55a5058 ref-manual: Review edits to the "C" and "D" classes.
bc6b005 ref-manual: Review edits to classes A through B
6b58ab3 ref-manual: Scrubbed the comment list of undocumented classes.
113077b ref-manual: Removed the section "Other Classes"
79ba3e4 ref-manual: Re-ordered externalsrc class into the "C"'s
de7ead9 ref-manual: Edits to externalsrc class.
36a9f7e ref-manual: Edits to useradd class.
1411329 ref-manual: Edits to update-rc.d class.
76a5d86 ref-manual: Edits to update-alternatives class.
58e3323 ref-manual: Re-ordered the classes that start with "U"
759c88f ref-manual: Edits to testimage class.
73ddfa2 ref-manual: Re-ordered classes that start with "T"
b43c26f ref-manual: Edits to siteinfo class.
4cdb34b ref-manual: Edits to sanity class.
cca4368 ref-manual: Re-ordered classes that start with "S".
bf7b6cf ref-manual: Edits to rootfs* class.
cd1581b ref-manual: Edits to rm_work class.
035caad ref-manual: Edits to classes-qt4* classes.
749f0c4 ref-manual: Edits to qmake* classes.
8847fd3 ref-manual: Edits to pkgconfig class.
53d0bde ref-manual: Edits to populate-sdk classes.
e0152fc ref-manual: Edits to packageinfo class.
f6826dd ref-manual: Edits to packagegroup class.
f1668bf ref-manual: Edits to packagedata class.
b027c7e ref-manual: Edits to package_tar class.
efa1700 ref-manual: Edits to package_rpm class.
01929d0 ref-manual: Edits to package_ipk class.
91b192c ref-manual: Edits to package_deb class.
06e1bfa ref-manual: Edits to package class.
08b634e ref-manual: Re-ordered classes that start with "P".
4688e76 ref-manual: Edits to ownmirrors class.
5ec09e0 ref-manual: Edits to oelint class.
2cc4dab ref-manual: Edits to nativesdk class.
951abfd ref-manual: Edits to native class.
aa7ba78 ref-manual: Edits to multilib classes.
52e3e79 ref-manual: Edits to mirrors class.
60f6c85 ref-manual: Edits to mime class.
95aa8bc ref-manual: Edits to metadata_scm class.
a17963f ref-manual: Edits to meta class.
d13d216 ref-manual: Edits to logging class.
5059d55 ref-manual: Edits to linux-kernel-base class.
fb25e08 ref-manual: Edits to license class.
94392c4 ref-manual: Edits to lib_package class.
2d557b6 ref-manual: Re-ordered classes that start with "L".
ca4fe92 ref-manual: Edits to kernel-yocto class.
eff9beb ref-manuals: Edits to kernel-module-split class.
7e69f3b ref-manual: Edits to kernel-arch class.
98e3d01 ref-manual: Edits to kernel class.
2610e84 ref-manual: Re-ordered classes that start with "K".
1450b54 ref-manual: Edits to insserve class.
19b37bd ref-manual: Edits to insane class.
80980ef ref-manual: Edits to image-vmdk class.
cbecea8 ref-manual: Edits to the image-swab class.
d704c53 ref-manual: Edits to image-prelink class.
564dd5f ref-manuals: Edits to image-mklibs class.
b19ba2d ref-manual: Edits to image-live class.
476a229 ref-manual: Edits to image_types_uboot class.
2b22c18 ref-manual: Edits to image_types class.
4c162b5 ref-manual: Edits to image class.
4ba8247 ref-manual: Edits to icecc class and re-order of "I" classes.
9d5ab21 ref-manual: Edits to gzipnative class.
8f09c72 ref-manual: Edits to gtk-immodules-cache class.
551ae6a ref-manual: Edits to gtk-icon-cache class.
7ca6bbd ref-manual: Edits to gtk-doc class.
9eabe58 ref-manual: Edits to gsettings class.
d1e046a ref-manual: Edits to grub-efi class.
e5f9f17 ref-manual: Edits to gnomebase class.
52abfce ref-manual: Edits to gnome class.
464730e ref-manual: Edits to gettext class.
87330b3 ref-manual: Edits to gconf class.
07d0b04 ref-manual: Edits to fontcache class.
05f51e4 ref-manual: Edits to extrausers class.
cfa459e ref-manual: Edits to distutils class.
ec4a49b ref-manual: Edits to distrodata class.
a0f8777 ref-manual: Edits to distro_features_check class.
a0d9e0f ref-manual: Edits to devshell class.
de84432 ref-manual: Edits to deploy class.
d7ec755 ref-manual: Edits to debian class.
32559a6 ref-manual: Re-ordered the classes that start with "D".
b281360 ref-manual: Edits to crosssdk class.
cdf3ca0 ref-manual: Edits to cross-canadian class.
ad81c79 ref-manual: Edits to cross class.
83c7c68 ref-manual: Edits to core-image class.
588bfe9 ref-manual: Edits to the copyleft_compliance class.
20f5384 ref-manual: Edits to cmake class.
7a3bf66 ref-manual: Edits to clutter class.
5967e69 ref-manual: Edits to chrpath class.
950dcd1 ref-manual: Edits to ccache class.
f8c5fa0 ref-manual: Edits to the cpan class.
91b8eff ref-manual: Re-ordered the classes that start with "C"
618fb69 ref-manual: Edits to buildstats class.
32f8cfa ref-manual: Edits to buildhistory class.
306650e ref-manual: Edits to bugzilla class.
774c7a7 ref-manual: Edits to bootimg class.
e63b4f2 ref-manual: Edits to boot-directdisk class.
1b7bf35 ref-manual: Edits to the blacklist class.
13b4fc5 ref-manual: Edits to binconfig class.
3fae906 ref-manual: Edits to the bin_package class.
d28082c ref-manual: Edits to base class.
4c7ff47 ref-manual: Edits to autotools class.
9506911 ref-manual: Edits to archive* classes.
889bb38 ref-manual: Added waf class.
654411e ref-manual: Added vala class.
aa9c2a1 ref-manual: Added utils class.
5fafc2d ref-manual: Added utility-tasks class.
9307442 ref-manual: Added uboot-config class.
31d0e41 ref-manual: Added typecheck class.
bfc10cf ref-manual: Added toolchain-scripts class.
9af661f ref-manual: Added toaster class.
b4fd227 ref-manual: Added tinderclient class.
376eb53 ref-manual: Added terminal class.
3623ba9 ref-manual: Added systemd class and three variables:
c35962a ref-manual: Added syslinux class and many variables.
944ee7f ref-manual: Added the staging class.
59e0a53 ref-manual: Added sstate class.
4253671 ref-manual: Added spdx class.
1287cff ref-manual: Added siteconfig class.
cd3f2e6 ref-manual: Added sip class.
16b628c ref-manual: Added setuptools class and edits to distutils class.
4c3eece ref-manual: Added sdl class.
39eaf30 ref-manual: Added scons class and EXTRA_OESCONS variable.
00652a8 ref-manual: Added relocatable class.
e30988b ref-manual: Added qt4* classes.
12c1680 ref-manual: Added qmake* class and three variables.
08f89d7 ref-manual: Added qemu class.
cde35ec ref-manual: Added pythonnative class.
aedf61f ref-manual: Added python-dir class.
ec256c0 ref-manual: Added ptest class.
31b5f49 dev-manual: Updated the "Working with a PR Service" section.
4f2fb32 ref-manual: Added prserv class and PRSERV_HOST variable.
b5a77f0 ref-manual: Added primport class.
77f8692 ref-manual: Added prexport class.
61edbfc ref-manual: Added populate_sdk_* class and some new variables.
e665692 ref-manual: Added populate_sdk class.
56429d3 ref-manual: Added pixbufcache class and PIXBUF_PACKAGES variable.
4ec758a ref-manual: Added the perlnative class.
14603f6 ref-manual: Added the patch class.
c981a85 ref-manual: Edits to the packageinfo class.
3a7ba51 ref-manual: Added the packageinfo class.
a758f31 ref-manual: Improved on package* class.
5b0367f ref-manual: Added the packagedata class.
ccca482 ref-manual: Added the ownmirrors class and the SOURCE_MIRROR_URL variable.
5c63b7a ref-manual: Added the oelint class.
d29666f ref-manual: Added the nativesdk class.
4fb42f3 ref-manual: Added the native class.
d754ddc bitbake: process: Add timeout to select call
4398019 libmatchbox: use PACKAGECONFIG
8bbd508 libmatchbox: fix libpng detection
c66ff8b icu: CVE-2013-2924
42cb2c9 acpid: CVE-2011-1159
bd477cd xinetd: CVE-2013-4342
d1cb9ec libtiff: CVE-2013-4243
3e46414 libtiff: CVE-2013-4232
6e89d26 libtiff: fix CVE-2013-1960
e7d1921 libav: Add v9.10
b9e1f11 buildhistory.bbclass: Specify lang in decoding strings
4848a52 ltp: set PREFERRED_PROVIDER and rename runtests_noltp.sh script
209eba7 multilib: Ensure we map the SYSTEMD_PACKAGES variable
5119975 meta/*: remove unnecessary patches
2b428f4 connman: upgrade to 1.20
0cfc4ea harfbuzz: upgrade to 0.9.25
c16467d freetype: upgrade to 2.5.2
2a3119e makedevs: Add trace option and fix permissions on files if they already exist
7b2be60 makedevs: Respect LDFLAGS
8760307 binutils: Add embedspu to standard binutils package
47d2089 libxcb: fix rebuild when MACHINE changes
62e8b4c distro-tracking: remove GMAE package groups
e3b9923 bitbake: hob: after adding a layer, hob do not parse the configuration
3f61189 bitbake: toaster: Add more information for tasks in Simple UI
192583a bitbake: toaster: add pagination to the Simple UI
415ebb7 bitbake: toaster: migrate orm models to South
81ebce0 bitbake: toaster: update to Django 1.5
5ab8545 bitbake: toasterui: do not link non-image targets
bb70ade bitbake: toasterui: fix version numbers for no PE specified
54d0e30 bitbake: toaster: change package storage model
f812098 bitbake: toaster: update build stats reading
ea307bb bitbake: toaster: move layer information reading code
6cbc83f bitbake: toaster: remove Author field in SimpleUI
7d24b00 bitbake: toaster: Analysis API variablehistory update
340c35e toaster.bbclass: read package and image information
5145b5a toaster.bbclass: read build stats
8ee7b08 toaster.bbclass: read layer information
853f5db nativesdk.bbclass: support nativesdk to override with the PACKAGES_DYNAMIC statement
fc0bb31 runqemu: remove core-image-* whitelist
cb9136d xorg-lib-common.inc: use REQUIRED_DISTRO_FEATURES variable
85bfdda documentation.conf: update for new image testing variables
40b173c buildhistory.bbclass/image.bbclass: remove obsolete codes
ded655a boost: Move files -> boost
5a018ee boost: updating to 1.55.0
1907b10 syslinux: add ability to compile with nativesdk
3439665 mtools: add ability to compile with nativesdk
d9dba45 nspr: Update to 4.10.2
93729f6 libxkbcommon: Update to 0.3.2
38dcefd file: Update to 5.16
adde744 acl: Update to 2.2.52
2ef65cc license.bbclass: fix copying license directories failed
fc0a1aa perf: Disable warnings as errors for kernels 3.1+
5debfa1 nfs-utils: explicitly rdepend on bash
c0e048d nfs-utils: separate package as Debain style
fedd84f shadow: remove reference to locale env files from login and su
1fd93bd qemu: add bash and python to qemu's RDEPENDS
8f98bb3 libidn: enable TLD
5a83652 grub: add explicit dependency on bison-native
22beb58 boot-directdisk: add the support of vmdk
80a9a79 .gitignore: Add meta-yocto-imported
4aac8d8 bitbake: data: Ensure we add the contains keys in a particular order
b7ff099 linux-libc-headers-yocto: Drop old 3.4+git version
184038b bitbake: fetch2/git: Ensure check is made in the correct directory
121dcd3 linux-yocto/*: restore branch designations
14c2326 python-imaging: fix compilation with Freetype 2.5.1
2b898fe python: Add missing RDEPENDS for python-unittest
66f28a9 tcl: fix tclConfig.sh to point to the correct private headers
5301c59 bitbake: toaster: exclude "set in documentation.conf" from variable history
2bd4c2b bitbake: hob: changes to INHERIT var should use "append" operation
f19546e bitbake: fetch2/git: Add sanity check to ensure we really did fetch the correct revisions
4bac6a8 mx/lttng-*: Fix git branch references
0b962a5 fstests: update to git master
67212c2 matchbox-keyboard: Use the branchname the revision is on
7310d23 prelink: Set the branch name correctly for the revision we're using
017f22c meta-yocto-bsp: Drop gmae bbappends to match OE-Core
2b99084 cogl-1.0: explicitly disable cairo
8dee338 lib/oeqa/runtime: output more logging from systemd when services have failed
5c58ba9 lib/oeqa/runtime: print connman status if connman failed to start
271c98a nativesdk-packagegroup-sdk-host: Added nativesdk-smartpm
5c69ae2 classes/buildhistory: fix reading of package-specific values from pkgdata
b2a9b91 gmae: remove GMAE toolchain and packagegroups
df1505e update-rc.d: process symlinks recursively
77c4f15 pulseaudio: fix RDEPENDS traversal for consolekit
abbc345 init-live.sh: remove the '-c /dev/console' for switch_root
e2e6756 libav: Update to v0.8.9
77c1320 rpm: Fixed Q&A Errors in netivesdk-rpm
aa61c61 freetype: upgrade to 2.5.1
472e6c4 xserver: remove unrecognised options
d8efb8d pixman: upgrade to 0.32.4
7df2cfc libxft: fix Freetype header inclusion
b9f9c29 pango: upgrade to 1.36.1
d8fa465 libarchive: add SUMMARY and fix HOMEPAGE
41f1731 openssh: remove unrecognised configure option
a6c2f3f gpgme: remove pth handling
aa40209 icecc-create-env-native: Drop FILESPATH, document PATCHTOOL
c295fe6 cpan-base: Add vardepvalue to get_perl_version function
f750d65 icecc.bbclass: Fix whitespace, improve comment
cae2315 bitbake.conf/native.bbclass: Use FC instead of F77 for fortran
5bde5d9 gcc: Allow fortran to build successfully in 4.8
a67654e lib/oeqa/selftest: add tests for PR service
347cc15 lib/oeqa/selftest: buildoptions: small fixes for some tests
6ab56c5 classes/recipes: More optimal DISTRO_FEATURES references
82233cd eglibc-options: Rewrite so it benefits from bitbake's contains handling
f17a693 lib/oeqa/selftest/base, scripts/oe-selftest: fix wrong remove path and do a complete cleanup at the end
c3c2cc4 qt4: fixed dependency on icu
3456bd3 gstreamer1.0-plugins-bad: add PACKAGECONFIG for librsvg
2ab24b1 gstreamer1.0-plugins-bad: respect directfb DISTRO_FEATURE
ecba848 security_flags: Add entry for openssl
ec80166 attr: Add patch tracking details
c8d1aa0 gst-plugins-good: Fix configure option
f21a3a4 leafpad: Fix configure flags
50be1a1 libxkbfile: Remove obsolete configure option
c51730a bitbake: Hob: check if warnings are related to package build
0a5fdfb bitbake: hob: fix package property dialog for changes to FILES_INFO
27ae687 bitbake: hob: name package files list variables appropriately
8a02406 bitbake: lib/bb/ui: handle PKGSIZE change to bytes
d1e6664 bitbake: cooker/command/hob: Cleanup configuration init/reset functions and commands
b8f0963 bitbake: hob: Use BASEDATASTORE_TRACKING feature
eba506b bitbake: codeparser/data_smart: Optimise parsing speed
b4b1c90 ptest: ensure do_install_ptest_base task runs in fakeroot context
65535bf populate_sdk: verify executable or dynamically linked library
44b2cf5 qemu: handle CLOEXEC/NONBLOCK if unavailable on host
4eab9d0 cairo: add/use packageconfig for valgrind support
1bc64ba python, python-native: fix PARALLEL_MAKEINST failure
82e373f quota: apply patch to obey tcp-wrappers config
3c94bfe subversion: fix build problem when sysroot contains '-D' or '-I'
6cdecac image-mklibs: ensure sysroot is correctly set when calling gcc
4653302 Don't set DESCRIPTION to the same value as SUMMARY
0954dde dropbear: set SUMMARY instead of DESCRIPTION
79db9ae eee-acpi-scripts: tidy up recipe
9dfcab3 alsa-utils-alsaconf: tidy up path setting
35a0825 squashfs-tools: set SUMMARY instead of DESCRIPTION
4e53364 squashfs-tools: drop FILESPATHPKG
17e3dc2 lib/oeqa: targetcontrol.py: add abstraction for running tests on different targets
b4d9b42 testimage: use the new targetcontrol.py module for running tests
fd2d165 kmod: avoid parallel-tests
68d40e2 python: do not replace ccache in the middle of a path
d4398d4 lib/oeqa: use the new manifest file for determining if a package is installed
1611b47 lib/oeqa/selftest: add test modules for expected bitbake output and bitbake-layers
f8ee108 lib/oeqa/selftest: buildoptions.py: add simple image build tests
b9afc0d meta-selftest: create a new test layer to be used by oe-selftest script
645dd61 scripts/oe-selftest: script to run builds as unittest against bitbake or various scripts
1fa51bf classes/buildhistory: do git garbage collection after committing
d51b3f3 classes/buildhistory: reduce parsing time
cdfef97 classes/buildhistory: improve collection of package info
0cb38ee classes/buildhistory: add additional variables to image information
1c37266 classes/buildhistory: drop cruft from old SRCREV tracking implementation
c36c198 classes/package: write PE and PKGE out to pkgdata
f4e9140 classes/package: record PKGSIZE as total file size in pkgdata
4a75e83 classes/package: fix FILES_INFO serialisation in pkgdata
a6450a9 ref-manual: Added the multilib* class.
ab2744b ref-manual: Added the mirrors class.
80342f0 ref-manual: Added the mime class.
0e9e1b2 ref-manual: Added the metadata_scm class.
6fb5661 ref-manual: Added the meta class.
926eb4b ref-manual: Added the logging class.
86c58a5 ref-manual: Edits to license class added INHERIT_DISTRO variable.
b465168 ref-manual: Added the license class.
abbc253 ref-manual: Added the linux-kernel-base class.
96ed7b9 ref-manual: Added the lib_package class.
842461e ref-manual: Added the kernel-yocto class.
11589c4 ref-manual: Added kernel module split class.
ed17902 ref-manual: Added kernel-arch class.
c3fd5f9 ref-manual: Added the insserve class.
8033de8 ref-manual: Added the image_types_uboot class.
67ecb81 ref-manual: Edits to image_types class.
a6a3c79 ref-manual: Added the image-types class.
8cdc2d5 ref-manual: Added the image-swab class.
89a3793 ref-manual: Added image-mklibs and image-prelink classes.
6b1b052 ref-manual: Added image-vmdk class.
5f20fb8 ref-manual: Added image-live class and updated IMAGE_FSTYPES variable.
bd0ab4e ref-manual: Added image-empty.bbclass to undocumented class list.
5ac2e26 ref-manual: Removed image-empty.bbclass from undocumented list.
223bfdc ref-manual: Placed the ICECC_CC variable as entry point for "I" variables.
cd83080 ref-manual: Added icecc class and several ICECC_* variables.
172cf55 ref-manual: Edits to the GRUB_GFXSERIAL variable.
b503308 ref-manual: Added gzipnative class.
11c3ed6 ref-manual: Added the gtk-immodules-cache class and GTKIMMODULES_PACKAGES variable.
02af524 ref-manual: Added gtk-icon-cache class.
694a171 ref-manual: Added gtk-doc class.
8d1637d ref-manual: Added gsettings class.
28a6b52 ref-manual: Added grub-efi class and supporting variables.
04d8460 ref-manual: Fixed class name gtext to gettext.
93267b7 ref-manual: Added gnome, gnomebase, gtk-icon-cache, and mime classes
65d7a93 ref-manual: Addedt gtext class.
8a5a6c3 ref-manual: Added gconf class.
d2d4feb ref-manual: Added fontcache class and FONT_PACKAGES variable.
3780240 ref-manual: Added extrausers class and EXTRA_USERS_PARAMS variable.
f7d0456 ref-manual: Added classes_distro_features class.
d68f52f ref-manual: Added distrodata class.
0423bb6 ref-manual: Added deploy class.
b1c1016 ref-manual: Added crosssdk class.
3aa57fe ref-manual: Added cross-canadian class.
b82ff9a ref-manual: Added cross class.
539351a ref-manual: Added core-image class.
b91a667 ref-manual: Added the copyleft_compliance class.
3361d01 ref-manual: Added the cml1 class.
8853195 ref-manual: Added the cmake class.
79bff74 ref-manual: Added the clutter class.
70b503d ref-manual: Added the chrpath class.
1ad623c ref-manual: Added the ccache class.
09ac6b5 ref-manual: Added BUILDSTATS_BASE variable description.
daa589d ref-manual: Added the buildstats class.
c33bbac ref-manual: Added the buildhistory class.
6531d22 ref-manual: Added bugzilla class.
5f6fc88 ref-manual: Added boot-directdisk class.
ace0b23 ref-manual: Added ROOTFS, NOHDD, and NOISO variable descriptions.
2e4a20d ref-manual: Upper-cased the term "ram".
74df25f ref-manual: Added INITRD variable to the glossary.
77f2a85 ref-manual: Added bootimg class description.
ff7f5da ref-manual: Added PNBLACKLIST variable to the glossary.
f8ac486 ref-manual: Added blacklist class description.
72562c4 ref-manual: Added bin_package.bbclass description.
fb72b61 ref-manual: Removed binconfig class from undocumented list.
ba57c9d ref-manual: Removed archive* type classes from the undocumented list.
0f7a5e2 ref-manual: Added allarch class description.
9a6d7e0 ref-manual: Updated the introduction text for Classes chapter.
0922d3c ref-manual: add usage NOTE to IMAGE_FSTYPES
63b2091 dev-manual: ksize.py and dirsize.py live in scripts/tiny
4cbf28c dev-manual: Add a reference to poky-bleeding distro
053d78d dev-manual: Documentation: More minor tweaks to dev manual for clarity
5156a38 dev-manual: Updated how to remove package management requirements
19e6f3f dev-manual: Changed wording of BBMASK example
b288fa4 dev-manual: Added note about naming your distribution
134c76e dev-manual: Re-worded menuconfig preparation
fe154e4 dev-manual: Re-ordered sections for customizing an image.
8275b92 ref-manual: Updates and additions to variable glossary:
47e7abc dev-manual: Number of minor tweaks to Dev Manual, Chapter 5.
4f7c366 ref-manual: Added new REQUIRED_DISTRO_FEATURES variable description.
acf9a04 ref-manual: Added new CONFLICT_DISTRO_FEATURES variable description.
031f188 ref-manual: Slight grammar edits.
3cd9b7e ref-manual: Edits to the COMBINED_FEATURES variable.
9a8d0ea ref-manual: Updated the intro text to "Distro Features" section.
bbd193d ref-manual: Some edits to the DISTRO_FEATURES variable.
7496f80 ref-manual: Updated the DISTRO variable description.
63de643 ref-manual: Edits to the DISTRO_FEATURES variable.
cf04241 ref-manual: re-ordered distro features and machine features sub-sections.
d856388 dev-manual, ref-manual: Updated some section titles.
302c2af ref-manual: Changed depends.dot filename to pn-depends.dot.
e4d0b54 ref-manual: Added the pn-buildlist file to list of files
936cc69 ref-manual: Cleaned up some instances of the term "working directory"
ee30c8b ref-manual: fixed typo
89fc8b8 ref-manual: Updated to *_FEATURES variables.
b2d0ff1 ref-manual: Review edits applied to UBOOT_LOCALVERSION variable.
341a685 ref-manual: Edits to the UBOOT_LOCALVERSION variable.
a880e6b ref-manual: Fixed typo in the UBOOT_CONFIG variable.
e6df367 ref-manual: Added new variable UBOOT_MAKE_TARGET.
a729e89 ref-manual: Added new UBOOT_SUFFIX variable description.
412abae ref-manual: Added new variable UBOOT_LOCALDEFINITION
ab4f352 ref-manual: Fixed misc. formatting by removing blank lines.
a18b4e3 ref-manual: Fixed typo.
f99c70c ref-manual: Reset the top "U" entry for glossary to UBOOT_CONFIG.
a16e9a20 ref-manual: Added glossary entry for UBOOT_CONFIG variable.
96b948a ref-manual: Expanded CLASSOVERRIDE variable example description.
21dde6f dev-manual: Updated EXTRA_IMAGE_FEATURES operater for read-only-rootfs example
0e65e79 dev-manual: Added "Task" term.
85e4bb6 dev-manual: Changed "Tasks" term into "Package Groups" term.
17ac9ee dev-manual: updated the ptest section
e83292a ref-manual: Added core-image-weston and core-image-directfb
755e23e dev-manual: Re-worded the "Customizing Images Using Custom .bb Files"
c95eca6 ref-manual: New glossary entries
cac929e ref-manual: Added other argument values to set variable
33c2d81 ref-manual: Fixed a typo.
b156232 profile-manual: Edits from Robert P. J. Day
46ac6c6 profile-manual: Review edits from Robert P. J. Day
bbc820e profile-manual: Small typo fixed.
f4d8358 dev-manual: More minor tweaks to development manual.
2e44a48 dev manual: Minor tweaks to first part of ch 5, dev-manual.
c65a2f1 dev-manual: Some minor tweaks to ch 4, development manual:
d054a45 dev-manual: Small number of tweaks to ch 3, development manual.
60e8b44 dev-manual: A few tweaks to Ch2 of dev-manual
6ac98af dev-manual: Updated Build Directory term
8831272 dev-manual: Reworded sentence for meta-intel setup
c241806 ref-manual: Removed FAQ entry about running on RHEL/CentOS 5.1.
33778bb ref-manual: Updated the FAQ entry about old Python version
dd6b2ef documentation: Scrubbed use of directory names
30d7f52 ref-manual: Tweaks to the structure chapter.
830c2df ref-manual: Removed the pseudodone section in the build structure
0290219 ref-manual: Updated the description for oe-init-build-env-memres
437bf60 ref-manual: Tweaks to a patch from Robert P. J. Day
c354dc6 ref-manual: Various tweaks/fixes for ch4. ref manual
cebf481 ref-manual: Updated bitbake/ section to remove wrapper script
c1f030f ref-manual: Couple innocuuous tweaks to migration chapter.
4a52822 ref-manual: Updates to "Variables" and "Building with No Dependencies"
f16706d ref-manual: re-wrote the "Invalidating Shared State" section
1c19d66 ref-manual: Updates to the FEED_DEPLOYDIR_BASE_URI variable.
90f80a7 dev-manual: Added a link for the FEED_DEPLOYDIR_BASE_URI variable
81a7812 ref-manual: Added FEED_DEPLOYDIR_BASE_URI variable description
a8388ac ref-manual: Small number of fixes to Ch1 of ref-manual
ae7c4d5 ref-manual: Pedonic tweaks to ref manual usingpoky.xml
2a8596d ref-manual: Grammar and typo edits to "Closer Look" section.
f3c4d68 dev-manual: package add using facilities in oe-core only.
c35d59f yocto-project-qs: Removed out-of-date links to distro requirement info
5823041 ref-manual: Removed out-of-date links in supported distros section.
5e715c5 ref-manual: Formatted "Caution" boxes
52ff43b poky.ent: Added gcc-multilib as an essential package
26b104b ref-manual: Patch for various fixes to glossary
b88c833 ref-manual: Edits to INITSCRIPT_NAME variable.
3abf9be ref-manual: Edits to the BBLAYERS_NON_REMOVABLE variable.
38853cf babeltrace: correct PV variable
da88c5f classes/icecc: fix typos in header comments
baf7765 linux-dummy: catch up with image.bbclass changes
a17ffbd bitbake: hob: fix rotating progress icon animation
35c2590 bitbake: imagedetailspage: Fix crash with more than 15 layers
a67fde0 bitbake: bitbake.lock: Add host:port to bitbake.lock for memres server
6ff9c9e bitbake: bitbake, xmlrpc.py: Implement memory resident auto port configuration/restart
0bea372 bitbake: bitbake: Add --status-only option
72e650d oe-init-build-env-memres: Add auto port functionality
644a1a2 oe-init-build-env: Allow startup with and without memres
a6b55d9 gcc-cross-canadian: Fix fortran build
a9d8f36 eglibc-initial.inc: Drop duplicate include
fabdf2f bitbake: hob: disable layer drag and drop outside the containing widget
f5f3ef7 bitbake: parse/ConfHander/BBHandler/utils: Fix cache dependency bugs
ea03ed0 qt4-x11-free: depend on ICU
8337aa3 sqlite3: Fix configure option warning
51d3285 util-linux: Remove obsolete configure options
04e3487 linux-yocto/3.10: -rt, ebtables and e1000 fixes
8bd91ec linux-yocto/3.4: update to v3.4.69
5745f59 linux/yocto-3.10: merge v3.10.19
63fbeba webkit/midori: block to build webkit on mips64 with libn32 ABI
44c6911 alsa-state: add status command
813aafe apmd: add status command
cb8e55c ppp: add status command
3c182d2 busybox: add busybox_git.bb recipe
ef71b02 linux-firmware: Remove bash scripts from target package
7cfee36 hdparm: make wiper appear before hdparm in PACKAGES
39bd9fb libsdl: Clean up configure option QA warnings
2a135de adt_installer: Fix missing autogen.sh error
f81aa8d lsb: de-bash scripts to remove bash dependency
32c5d84 image.bbclass: Depend on virtual/kernel:do_deploy
369772c poky: Add Ubuntu-13.10 to supported distros list
92f984d local.conf.sample: Fix typo
7b9f4b2 base/gcc-common: Ensure umask setting is consistent for shared workdir
80d522a sstatesig.py: Fix image regeneration issue
f91a3f4 bitbake: cooker: Fix support for wildcards in bbappend filenames
79fbb1f base.bbclass: Set umask 022 also for do_unpack task
d340d29 xinput-calibrator: add formfactor to RDEPENDS
977d623 module-base: Fix misleading comment
3f5e982 Revert "kernel: restore scripts in the sysroot"
3ee3d3a rpcbind: Fix rpcbind restart failure when rpcbind is not running
15bff74 elfutils: fix the condition check before remove eu-objdump
bd9f9ab libav: install libraries to right directory when multilib is enabled
75cc532 weston: upgrade to 1.3.1
6fcb960 chrpath: Improve crazy code
572a8eb icecc: Disable icecc for allarch recipes
1897cce cronie: fix init.d/crond status return value
ebe51c7 tcf-agent: add init.d/tcf-agent status command
013a828 zlib: Add ptest
f609852 tcl: fix version string and make recipe multilib build compatible
2e62e82 file: remove useless patches
5bfd377 clutter-1.0: upgrade to 1.16.2
48e1961 librsvg: upgrade to 2.40.1
4a4b36f fontconfig: upgrade to 2.11.0
b732052 pango: upgrade to 1.32.6
b03b338 libdrm: upgrade to 2.4.49
463e56f bitbake: crumbs/builder.py: Fix typo for indefinite article
32adaac libpng: set reasonable SUMMARY
a88271e xproto: upgrade to 7.0.25
a0e515f git: upgrade to 1.8.4.4
4661094 libxcb: upgrade to 1.9.3
3be9e24 xcb-proto: upgrade to 1.9
63335c8 powertop: upgrade to 2.5
9e74676 tar: upgrade to 1.27.1
bab3142 python-setuptools: upgrade to 1.4
87e1cca xtrans: upgrade to 1.3.2
d652549 systemtap: upgrade to 2.4
8bec473 libav: use CCLD as ld
a216cc1 libpng: upgrade to 1.6.7
e3c4124 coreutils 6.9: fix coreutils.texi
82ff33f bitbake: Hob: force notebook refresh
a10301f bitbake: data/codeparser: Improve handling of contains functions
d061692 bitbake: bitbake: Share BB_TASKDEPDATA with tasks
4c69970 bitbake: runqueue: Optimise next_buildable_task()
3ca58c7 bitbake: codeparser: Drop unneeded variable separation
960e305 classes/image: write image manifest
bbbd6fc harfbuzz: Add PACKAGECONFIG for icu
5048f59 beecrypt: Add PACKAGECONFIG for cplusplus
bd93f10 poky: enable unknown-configure-option QA test as a warning
1e084f9 qemu: add PACKAGECONFIG for vnc, libcurl, nss, uuid, curses, gtk+, libcap-ng
937663b bzip2: Remove stange copy line, automake does this for us anyway
381cd84 linux-firmware: add missing linux-firmware-iwlwifi-7260-7 package
447a057 sanity: Use random filename for maximum path length test
181875b sanity: Don't hard code value of ENAMETOOLONG
d62ced4 bluez4: added dependency on 'libsndfile1'
a6c4868 avahi: add leading space to RRECOMMENDS append
2eccff7 webkit/midori: fix COMPATIBLE_HOST
2d5b4af x264: install libraries to right directory when enable multilib
f5e7c84 attr: attr_2.4.47 release tarball missing configure.ac
0aef540 bitbake: fetch2: Correct a few calls to latest_revision()
64372fa bitbake: bitbake: fetch2: Remove the unused urldata from the git fetcher.
b1c15cb bitbake: data: Fix output inconsistencies for emit_var
6ddb9bf bitbake: perforce: Fix path subdirectory issues
4ca910d bitbake: bitbake-layers: avoid loading configuration when not needed
300b6f7 bitbake: HOB: Show warnings in Issues tab
381d592 bitbake: cooker: add support for using % as a wildcard in bbappend filename
bc267ef bitbake: runqueue/bitbake-worker: Fix dry run fakeroot issues
02a697c adt-installer: Switch from svn to tarball release for opkg
b62bdbd metadata_scm: Avoid crashing on new svn version layouts
6e8a4ef kernel.bbclass: Stop bundle_initramfs thwarting sstate cache and fix race
33db10a Revert "kernel.bbclass: move bundle_initramfs after kernel_link_vmlinux"
9814cbf kconfig-frontends: add python to kconfig-frontends's RDEPENDS
2b79088 initscripts: remove erroneous call to /etc/default/rcS in mountnfs.sh
27fb21d pciutils: upgrade to 3.2.1
d796b64 libsoup-2.4: upgrade to 2.44.2
dffdf30 lighttpd: upgrade to 1.4.33
62c50ee syslinux: use cross toolchain to compile
e9802e3 util-linux: Package readprofile into it's own package
4b6db00 security_flags: grub-efi-natve does not build with flags enabled
c536fe2 librsvg: move gdk-pixbuf-native dependency
6734f82 opkg: Don't use update-alternatives
9339da2 opkg: Add PACKAGECONFIG options
4fe0af5 opkg: Update to version 0.2.0
0dc6c96 json-c: do rm -f on config.status before do_configure
bc6a3cf gettext-minimal-native/iconv.m4: remove the test to convert euc-jp
33c97ee rootfs_*.bbclass: List which post-install scripts can not be run
739fba1 package_rpm.bbclass: Replace -linux-gnun32 with -linux.* in RPM platform file
074a0ab gst-ffmpeg: fix CVE-2013-3674
05e9f1f acpid: fix acpid break down
637ad2f acpid: fix acpid boot error
6a3a4ba base.bbclass: Fix incorrect setting of multilib PREFERRED_PROVIDER_virtual_pkg
6a8307c poky.conf: enable ptest distro feature
9d7f8e2 bitbake: fetch2: Stop passing around the pointless url parameter
4acc732 bitbake: fetch2: Clean up some url parameters to functions
fda7b7b ethtool: Fix ptest compile
e031a05 buildhistory/distrodata: Adapt to updated fetcher API
0d39f33 packagegroup-core-tools-profile: add systemd-analyze
afe82ef oeqa/connman: disable unique test
b4a0164 gcc: Upgrade to 4.8.2
fd32fcb ia32-base: Remove cpio and ext3 defaults
5968a7b matcbox-keyboard: bump SRCREV
d60b4ff yocto-bsp: Add missing format specifier in bblayers error message
2674ad5 genericx86-common.inc: add eee-acpi-scripts to MACHINE_EXTRA_RRECOMMENDS
725fae6 bitbake: toasterui: fix typo
e19ee57 bitbake: bitbake: cooker, toaster: mark interrupted builds as failed
10717e5 bitbake: build.py: add single-quotes around already-expanded directory name
852ba6c librsvg: upgrade to 2.40.0
b60666e kconfig-frontends: upgrade to 3.12.0.0
b2ff2d2 weston: remove reference to gles in PACKAGECONFIG
ef3b0b5 json-glib: upgrade to 0.16.2
42f1d64 sysvinit: use ALTERNATIVE to manage sulogin
c2cbe0f gstreamer1.0: upgrade to 1.2.0
7865ce6 util-linux: collect libs for related libxx-dev package
551fcea license.bbclass: fix missing of license files on ubuntu build host
489b5d0 liburcu: upgrade to 0.8.1
e0d0a4e at-spi2-core: upgrade to 2.10.2
f1cdef5 libjson: update to 0.11 and rename to json-c
a053eff btrfs-tools: Update to git HEAD
a50da2d image_types: newer btrfs.mkfs needs an empty file to build the disk in
c5227cb telepathy-idle: upgrade to 0.2.0
ae70c20 kernel.bbclass: move bundle_initramfs after kernel_link_vmlinux
4cf2d7c xorg-driver: fix qa issue while multilib enabled - contains Xorg driver but no xorg-abi
6af097c bitbake.conf: Remove obsolete/unused MIRROR cruft
f61e62c qemu: explicitly disable xen support
fe25744 initscripts: add missing dmesg.sh to run-level S
66fd6c4 kernel.bbclass: Use lzma not lzmash for decompressing
3a8b73f systemd: Fix packaging of pam config files.
27acf4f ia32-base.inc: remove eee-acpi-scripts from MACHINE_EXTRA_RRECOMMENDS
17c155b icecc: Use bb.utils.which instead of calling which
f2ed8fa distrodata.bbclass: Add fetch2 handlers to svn case in checkpkg
1c0c6dc dbus: Don't depend on dbus-ptest-ptest for the nativesdk-dbus package
5666f8c boost: Add patch to avoid undefined references to boost::atomic::lockpool::get_lock_for()
8d2b5f3 lttng-modules: Update to 2.3.3 version
7ef7e55 lttng-tools: Update to version 2.3.1
ea7aba7 lttng-ust: Update to version 2.3.1
182dc38 util-linux: Fix QA warnings about ALTERNATIVES
bcdda02 udev: remove extra -dev/-dbg packages
66a3db6 qemu-helper-native: remove unneeded FILESEXTRAPATH
94aa8d8 squashfs-tools: remove FILESEXTRAPATH and move patches directory
b609f91 libpcre: Cleanup FILESPATH
e3ff4a2 grub: add xz RDEPENDS
3cc043d lib32-qt4-examples: fix QA warnings and INSANE_SKIP not work
9a6ee8b flex: fix m4 issue on target
b74b235 expect: Add recipe
7579458 libnl: Fix random segfaults due to memory corruption
5505bde tcl: Install header into 8.6 instead of PN-PV in user/include
1ef7240 mdadm: flag __SANE_USERSPACE_TYPES__ to include int-ll64.h for powerpc64
943f4c1 kernel-grub.bbclass: support /boot area within root partition
dc80eea sysvinit: fix problem in switching runlevels
20efe19 libcheck: upgrade to 0.9.11
0079588 sysstat: upgrade to 10.2.0
bf7d135 bitbake: runqueue: Fix hole in setsceneverify skipped task logic
215dab8 bitbake: fetch2: Fix handling of SCM mirrors in MIRRORS
9ccfe66 bitbake: git: Use git branch for ancestor checks
e15893a bitbake: serv.py: Give pr-server up to 5 seconds to commit data
2354250 bitbake: git: Use merge-base instead of log for testing if a commit is present
e45d735 python: Fix ptest not working problems
f9729f4 sysvinit: unmount the psplash lazyily
b0281b3 pybootchartgui: Add option --minutes to show time in minutes
8c26891 pybootchartgui: Add a color for the package_write_* tasks
85fca34 pybootchartgui: Reorder the legend to match the task execution order
d5f88f0 pybootchartgui: Make bars without a specified color white
46c4585 pybootchartgui: Make "Show more" show all processes
65d4384 pybootchartgui: Draw a lot less ticks
80cce56 pybootchartgui: Disable options that do not make sense
730e350 pybootchartgui: No need to do a double list comprehension over files
c10abc7 pybootchartgui: Avoid having overlapping process bars
94caf6f pybootchartgui: Use correct header height
2020eb2 pybootchartgui: Correct the X offset for the chart
1a539bb pybootchartgui: Set the initial state of "Show more" correctly
cacd502 pybootchartgui: Make the horizontal scaling stay within bounds
d0e513d pybootchartgui: Import pybootchartgui 0.14.5
a52c9b9 mtdev: upgrade to 1.1.4
a95fcec libxrandr: upgrade to 1.4.1
be49e20 gdk-pixbuf: upgrade to 2.30.1
51feb29 nfs-utils: Add new option to disable nfsidmap and PACKAGECONFIG for that
9a9a597 lttng-tools: Fixes incorrect path of ptest cases
bba44c6 packagegroup-core-boot: Drop build-time dependency on virtual/kernel
646a3b5 ofono: upgrade to 1.13
36255d4 buildhistory_analysis: fix error when comparing image contents
d7ccfc7 kernel.bbclass: fix hardlink test
db7f8d4 kernel.bbclass: test for hardlinks before installing
9fdd8ad bitbake: cooker, toaster: variable definition tracking
5108437 bitbake: toaster: task with outcome 2 (sstate), should have sstate_result!=0
6f01250 bitbake: hob/hoblistmodel: check if vals of packages/recipes names are not None
ad65846 bitbake: cooker: warn if user specifies a target listed in ASSUME_PROVIDED
859b631 bitbake: hob: refresh tables when the user is redirected to Edit packages
5f98364 bitbake: toaster: fix path to buildstats file
533cf81 bitbake: toasterui: mark failed sceneQueue tasks as failed
9f1e696 bitbake: toaster: remove author field
2445b31 bitbake: toaster: fix tasks showing as NoExec
e1e1ee5 linux-yocto/3.10: meta: ARM: OMAP3: Add USB PHY driver for Beagleboard
1893d15 poky.conf: add Debian 7.2 to SANITY_TESTED_DISTROS
8babbd1 meta-yocto-bsp: update SRCREVs for 3.10.17 and beagleboard fixes
779dec9 linux-yocto-rt/3.10: fix ntp merge issue
89c986c linux-yocto/3.10: meta: ARM: OMAP3: Add USB PHY driver for Beagleboard
de5f4ff classes/license: use "1" to set boolean variables
152a1b5 classes/pkg_metainfo: remove
a6e3916 classes/pkg_distribute: remove
5f6ccc6 systemd: fix comments
8865681 classes/license: fix comments
920be20 gtk-immodules-cache: fix error message to use correct names
d1d26a2 bitbake.conf: remove CPU_FEATURES defaults
c028dcd classes/sanity: validate SDKMACHINE value
0b15220 bitbake.conf: remove BOOTSTRAP_EXTRA_* variable defaults
8692eeb classes/insane: improve LIC_FILES_CHKSUM messages
6f54fa2 scripts/create-recipe: fix handling of --help
9c27561 perl: perl-ptest.inc polutes package dependencies when ptest not enabled
bfc55b9 classes/image-empty: remove
931cf6e staging: Use hardlinking for sysroot_stage_dir
ea92671 bitbake: cooker: replace "w" file opening mode with "a" mode
8c53410 bitbake: toaster: convert build_package size to bytes to keep consistence
b9d8104 bitbake: newbb.vim: fix spelling
520f953 binutils: Add gnu-config-native to DEPENDS
790b75f insane, license: Trap MalformedUrl exceptions when parsing LIC_FILES_CHKSUM
3635f1f autogen-native: remove the unnecessary RDEPENDS
b66f3dc Revert "glib-2.0: Specify libiconv when building on uclibc"
40b3030 bitbake.conf: Default DISTRO to nodistro
442e2e7 e2fsprogs: fix tests/f_extent_oobounds
1c52c87 core-image-weston: add SSH and hwcodecs to the image
78c6e69 icecc: Fix race condition when packaging toolchain
0dbd545 icecc: Add package whitelist
19c65b2 icecc: Support shell evaluation of KERNEL_CC
d283bfd icecc: Enable icecc also for install step
be18197 icecc: Add dummy python version of set_icecc_env
54f52bc icecc: Add blacklist vars to BB_HASHBASE_WHITELIST
280a492 icecc: Reduce verbosity with empty PARALLEL_MAKE
79272eb icecc: Log reason in error cases
9f56718 qemu: use PACKAGECONFIG to address xfsprogs dependency
27c2cbb vala: cleanup DEPENDS
64194d5 wpa-supplicant: enable CONFIG_CTRL_IFACE_DBUS_NEW
f0aa0c2 packagegroup-core-basic: define VIRTUAL-RUNTIME_syslog
e2ea549 gcc-common: Enable building multiarch mips gcc
c7a80e4 systemd: Upgrade 206 -> 208
a678456 elfutils: remove eu-objdump if it does not work
0a08dc7 mklibs: add dependency on dpkg-native
6eb26f7 image-mklibs: Fix grep pattern when mklibs collects executables in rootfs
f312582 weston-init: use /run instead of /var/run
7fd8919 openssh: upgrade to 6.4p1
e6b7180 ethtool: upgrade to 3.12.1
54651f4 nfs-utils: upgrade to 1.2.9
2ba62cc cmake: upgrade to 2.8.12.1
5540693 clutter-gtk-1.0: upgrade to 1.4.4
feba094 freetype: upgrade to 2.5.0.1
65ca5cb syslinux: add APPEND to dependency list
df564c4 kernel: Use hardlinks for do_populate_sysroot for speed
db5d127 glib-2.0: move more logic to the .inc
c393536 lib/oe/path: Fixup handling of .* files in top level paths for copyhardlinktree()
8a07a17 lib/oe/path: Fix performance issue got copyhardlinktree()
5e73287 kernel: Use hardlinks during do_install for speed
4fdc3d7 kbd: Fix stdarg related errors on uclibc
4feed78 liburcu: upgrade to 0.8.0
32c1180 xserver-xorg: upgrade to 1.14.4
bd53283 avahi: fix avahi status command error prompt
4412197 weston-init: start weston on a new VT
f648488 weston: upgrade to 1.3.0
5177812 wayland: upgrade to 1.3.0
18ada13 clutter: upgrade
ae03f31 cogl: upgrade to 1.16.0
7c3986e cross-canadian: Let cross-canadian packages build for uclibc
67a7ac1 bitbake: HOB: HIG compliant message dialogs
34eb004 bitbake: depexp: Improve wording on requirements
437e916 orc: version 0.4.18 migrated from meta-oe
b9a660f binutils: remove embedspu
217a8de nspr: Update to 4.10.1
41f55f4 kbd: upgrade to 2.0.1
8a03d59 sysvinit: adjust boot sequence and remove hack from udev
f7140dc bootlogd: create log file if not present
1e16634 lib/oeqa/utils: sshcontrol: make timeout depend on output
26559c5 lib/oe/sstatesig: Ensure packagegroups don't continually rebuild
3a5ab77 ppp: Fix compilation errors in Makefile
530c87b eglibc_2.17.bb: accept make versions 4.0 and greater
3a162de eglibc_2.18.bb: accept make versions 4.0 and greater
2544359 makedevs: several fixes
575dc3b sqlite3: Add support for column metadata API
43cce83 binutils: Drop binutils-symlinks
77ff02f binutils: Use alternatives for the binutils-symlinks package.
d6cc7c8 toolchain-scripts/meta-environment: Further cleanup code duplication
0331fc2 package_deb/package_ipk: Cleanup control file handling/races
1eefcf0 package_rpm: Remove need for locking
d5a1538 toolchain-scripts: Drop darwin8 code
e52020e toolchain-scripts/meta-environment: Merge toolchain_create_sdk_env_script and the for_installer variant
5810d54 extrausers.bbclass: avoid infinite loop
3e6b57f mdadm: Disable the RUN_DIR check
ec57d68 zisofs-tools-native: add missing DEPENDS on zlib-native
59818a2 zisofs-tools-native: fix meta fields
16d18ef python-pycurl: upgrade to 7.19.0.2
b353269 diffstat: upgrade to 1.58
aaa4b6e xz: upgrade to 5.1.3alpha
039b8ec git: upgrade to 1.8.4.2
a2e3baa xtrans: upgrade to 1.3.0
4bffa07 xf86-input-keyboard: upgrade to 1.8.0
1c3a35f python-setuptools: upgrade to 1.1.7
e9ec153 linux-yocto/3.10: fix qemuarm boot and spurious mips build warning
6a3e200 qemu: upgrade to 1.6.1
1096136 ppp: Add two structures in if_pppol2tp.h
ef942e3 eglibc-locale: Does not create {localedir} if the toolchain has no files under it
19aeca1 lib/oeqa: add oeTest superclass
90c709d iproute2: de-bash its scripts to remove the bash dependency
a530781 kernel.bbclass: Delay rm_work to run after do_bundle_initramfs
8f84cc9 package.bbclass: Fix split_and_strip_files when file has single quote (')
e82320a db: Fix build with high PARALLEL_MAKE
57498ce bitbake: toaster: fix target package information
9160f37 bitbake: toaster: enable required classes in the toaster startup script
8cbd1ce bitbake: toaster: add variable description for prefixed/suffixed variables
16067d5 bitbake: toaster: server shutdown on terminal exit
af32d95 bitbake: toaster: fix timezone settings
0087db6 bitbake: cooker: do not recreate recipecache in buildfile mode
85b9194 bitbake: build, toaster: record proper task type
a670859 bitbake: cooker: add data to the dependency tree dump
f04a321 bitbake: toaster: fixes for null values from events
d870d3e toaster: add class to dump toaster-tracked data
fcce65d documentation.conf: update contents
4d7639e image_types: Improve dependency handling between types (and use for sum.jffs2)
baf005b linux-yocto/3.10: common-pc: add missing dependencies for BRCMSMAC
dd361f0 linux-yocto/3.8: add crystalforest bsp legacy block drivers configurations
1fe7bca linux-yocto/3.10: haswell-wc and crystalforest support
a23c7e9 linux-yocto-3.10: bump to 3.10.17 and -rt11
f354122 bitbake: hob: do not display the "Package list may be incomplete!" dialog
1c7bbf8 bitbake: fetch/hg: Improve user/password handling
fe3e265 bitbake: hob: populate error_msg when hob receives a CommandFailed event
de7e6ef bitbake: fetch2/svn.py: use log instead of info to retrieve revision
ba84fbe dev-manual: Updated the note about BB Commander/Eclipse WS locations
98f631a adt-manual: Added note for static builds using -c populate_sdk
3abf3a6 dev-manual: Updates to Toaster section
81cfd06 dev-manual: Edits to the toaster section
721abea ref-manual: Updated the "Development Checkouts" section
08b5e31 ref-manual: updated the list of where to get YP release
0ef2170 ref-manual: Updated link to build tools.
c9cf0cf dev-manual: Fixed grammar error.
f5180d7 dev-manual: Updated the layer.conf example
43469cd adt-manual, dev-manual: Removed the LatencyTop website link.
2e492c8 dev-manual, mega-manual: Updated kernel flow (text and figs)
15a28d7 dev-manual, mega-manual: Updated BSP Development figure
c922bfe dev-manual: Edits to the "Source Directory" term
0dd2fed dev-manual: Edits to "Yocto Project Source Repositories" section
d248c5d dev-manual: Removed tarball method for installing meta-intel
4d69fc1 dev-manual: Removed tarball method for poky in setup section
57d2417 dev-manual: Updates to toaster section
a26aff6 ref-manual: Edits to the IMAGE_FSTYPES variable
a73466a ref-manual: Updated IMAGE_FSTYPES variable description.
195266b adt-manual: Minor edits to Chapter 4
a508060 adt-manual: Edits to "Optionally Building a Toolchain Installer"
853df59 adt-manual: Edits to "Extracting the Root Filesystem" section
a8b0bc4 adt-manual: Edits to "Getting the Images" section
62881f1 adt-manual: Edits to "Using BitBake and the Build Directory" section.
443de92 adt-manual: Edits to the "Using a Cross-Toolchain Tarball" section.
4569cba adt-manual: Fixed toolchain path in example
122e688 adt-manual: Removed tarball method from "Getting the ADT Installer Tarball"
610ccdb adt-manual: Fixed wording for getting the ADT tarball
524f1f5 yocto-project-qs: Updated the "Super User" section for no tarballs
458cc5c yocto-project-qs: Fixed toolchain path
e3f634c yocto-project-qs: Removed note in "Downloading the Filesystem" section.
fbf0e60 yocto-project-qs: Fixed toolchain installer download path
37777b7 yocto-project-qs: Updated "Building an Image" example to use Git repo
f762d40 documentation: Changed Note for most recent manual
a2aeade ref-manual: Added sdk-pms to Distro Feature list.
1f290da kernel-dev: Corrected error in the FILESEXTRAPATHS example
fe02927 dev-manual: Added -ptest to list of complementarty packages
89c1047 dev-manual: Uncommented the Toaster GUI section.
fa1ba9b documentation: Updates to Manual revision tables
3d26d97 tools/mega-manual.sed: Updated to build for 1.6 release.
209f6c5 poky.ent: Updated variables for 1.6 release support.
94b5584 profile-manual: Added note about SystemTap ssh connectivity
a77c4c8 dev-manual: Added note for BB Commander project location.
75c87f0 dev-manual: Updates to section on using script to create general layer
95f17e0 dev-manual: Updated "Using .bbappend Files" section.
69eec3e dev-manual: Updates to "Best Practices to Follow When Creating Layers"
fc5b458 bsp-guide: Fixed some grammar and some filenames.
7059097 sgml-common: make postinst run successfully at rootfs time
2e0f7cf groff: fix pkg_postinst and remove unneeded do_install_prepend
a04b611 jpeg: enable postinst to run at rootfs time successfully
660304f busybox: fix sed auto insert newline testcase
fa91171 udev: fix typo in local.rules
2c99422 grub-efi.bbclass: Fix startup.nsh to work on more EFI revs
717c1ed update-rc.d.bbclass: Cleanup package scripts
452b23a rxvt-unicode: upgrade to 9.19
cc0baf1 grub-efi.bbclass: Fixes GRUB_IMAGE when using boot-directdisk class
678a4fa Mesa: upgrade to 9.2.2
9f7f7af irda-utils: restart irda daemon correctly
3129619 lttng-tools: make ptest able to work on target
c177fb6 elfutils-native: Update the patch to include the missing pieces needed for tests
a7ba2f9 syslinux.bbclass: Fix default serial port string
523f2a9 cross-canadian: Improve comment
57b2102 telepathy-glib: upgrade to 0.23.0
5a79e6f telepathy-mission-control: upgrade to 5.16.0
78c3a33 iproute2: upgrade to 3.11.0
1d30c64 libuser: upgrade to 0.60
0902b63 lsb: add begin function to lsb_log_message
3d204a5 libx11: upgrade to 1.6.2
1d8cfc7 shared-mime-info: upgrade to 1.2
b8c0b8f ncurses-terminfo: Remove bashism from basic terminfo installation
1b8bd9e e2fsprogs: Escape filenames in populate-extfs.sh
6ab2d46 coreutils: support command arch
15bc2dd vala.bbclass: add dependency on vala
bd1cf71 cross-canadian: Handle powerpc linux verses linux-gnuspe
3e629b2 systemd-compat-units: run-postinsts fix script link
aedf3d9 nfs-utils: modify nfsserver init script indent
52a3c78 classes/ptest: do not set EXCLUDE_FROM_WORLD
72d0504 classes/ptest: fix quoting
0cda4bb core-image-basic.bb: Allow user extensions
5e42796 recipes: Remove PR = r0 from all recipes
4d3c79d openssl: create package for openssl configuration file
af7a27b dbus: no messages of status command print
6583f62 attr: upgrade to 2.4.47
dd1d9bd gnupg: upgrade to 2.0.22
3f4d3ee cups: upgrade to 1.7.0
1a573bb udev: Update touchscreen rule for ID_INPUT_TOUCHSCREEN
534b447 connman: upgrade to 1.19
5361ed7 libcap: fix CAP_LAST_CAP
f232a94 glib-2.0: upgrade to 2.38.1
61af454 bluez5: upgrade to 5.10
b2e86f7 pixbufcache.bbclass: gdk-pixbuf-query-loaders depends on libz
f6053d8 sudo: upgrade to 1.8.8
5fb5243 curl: upgrade to 7.33.0
7330735 at: upgrade to 3.1.14
44e2ea5 opkg: putting the service files into PN
f8a9653 qt4: add upstream QTBUG-34218/QTBUG-34234 misaligned selection patch
2342fdc wic: Remove selinux_check()
bd1a423 strace: remove += assignment of a OVERRIDES variable
f7e849f pigz: Add pigz to buildtools tarball
cb5a224 debugedit: fix segment fault while file's bss offset have a large number
8ceb14a cogl-1.0: depend on virtual/mesa
2588a0f rpm: Fix FILES_${PN}
d69931d scripts/oe-pkgdata-util: fix global name 'debug' is not defined
76751a0 update-rc.d.bbclass: Fix host/target test in postinst
5e75eba pcmanfm: upgraded to 1.1.2
dce662a grep: upgrade to 2.15
91c00fb scripts: Add ksize.py and dirsize.py
7f1b40b libsoup: upgrade to 2.44.1
3075401 libxv: upgrade to 1.0.10
fcd931c pseudo: fix library path in FILES_${PN}
0cff01d pulseaudio: Fix build break on armeb
4b32447 tzcode & tzdata: update to 2013h
8f431d0 meta-toolchain-qt: put QT_CONF_PATH in environment script
60e271a nativesdk-qt4-tools: create qt.conf file
3ccc65f gnome: set UNKNOWN_CONFIGURE_WHITELIST
03ba78b xorg-proto-common: set UNKNOWN_CONFIGURE_WHITELIST
4a8d62c openssh: upgrade to 6.3p1
9c01b3b ethtool: upgrade to 3.11
c64bad9 cmake: upgrade to 2.8.12
97dd981 libgcrypt: remove --without-pth
9669889 gnome-common: inhert gnomebase not gnome
bad13be xorg-lib-common: set UNKNOWN_CONFIGURE_WHITELIST
6ce2879 scripts/oe-pkgdata-util: add ability to find a recipe from a target package
948a714 scripts/oe-pkgdata-util: add ability to look up runtime package names
48755f1 scripts/oe-pkgdata-util: add ability to search for a target path
4ec1f8c scripts/oe-pkgdata-util: check path arguments to ensure they exist
8b42409 scripts/oe-pkgdata-util: improve help text and command line parsing
9ce903b scripts/oe-pkgdata-util: remove remnants of former pkgdata structure
78b91ab pigz: bump to 2.3.1
31d041b harfbuzz: upgrade to upstream version 0.9.22
10f561f cairo: upgrade to upstream version 1.12.16
8bb28e3 gtk+: upgrade gtk+ to upstream version 2.24.22
9ad26e3 cracklib: cracklib-native should not depend on zlib
13dbf09 nfs-utils: nfsserver restart should kill and recreate nfsd kernel threads
72eadfc libfm: allow build with automake-1.14
41e5d52 libfm: upgrade to upstream version 1.1.2.2
b40ff31 libcheck: allow build with automake-1.14
95001f4 libxcb: fix build with automake-1.14
b82603b nfs-utils: Stop rpc.statd correctly
2570f13 perf: flag __SANE_USERSPACE_TYPES__ to include int-ll64.h for mips64
e75ea49 screen: dynamically add or remove a entry to/from /etc/shells
312cc0f bash: dynamically add or remove a entry to/from /etc/shells
be860ac base-files: remove invalid entries from /etc/shells
39356f6 relocate_sdk.py: Allow script to work with Python 2.4 and 3.
2e55755 rpm: Add nativesdk to BBCLASSEXTEND
7a2de00 runqemu-extract-sdk: add --numeric-owner option to tar command
e0152db gdk-pixbuf: use PACKAGECONFIG to control legacy X11 sub-library
d531a56 nss: don't need set SRC_URI with both += and _append
05efe6b mesa: fix dependency
ecf98b4 kernel-grub.bbclass: add a method to install/update for bzImage
6f50315 libarchive: replace += with _append for appending to OVERRIDES variables
bc2040d image_types.bbclass: fix endiannes for sumtool (jffs2 summary)
1c3c811 image_types.bbclass: do not force --no-cleanmarkers for jffs2
4af9886 dropbear: update to 2013.60 version
b831b8c bzip2: replace += with _append for appending to OVERRIDES variables
c0ab353 check: Remove duplicate recipe of libcheck
d555261 kbd: Use libcheck instead of check
9ff572a libcheck: Add native support for kbd-native
0816c57 openssl: switch ARM builds from linux-elf-arm to linux-armv4 config
137d141 openssl: use linux-generic64 target for Aarch64 (LE and BE)
c9fc9b9 mesa-gl: use base_set_filespath
526488c mesa: make runtime variables depend on PACKAGECONFIG
823299e clutter: remove usage of FILESPATH
f995feb buildhistory-diff: add ability to report version changes
bc77ea9 packagegroup-base: if zeroconf DISTRO_FEATURE enabled, add libnss-mdns
2ccb868 nspr: Add LDFLAGS to TARGET_CC_ARCH to fix warning
d4cc036 minicom: fix -v/-h return value
30bafdc gdb: upgrade to 7.6.1
4525157 mdadm: upgrade to 3.3
3347bc4 tcl: upgrade to 8.6.1
4d68d36 tar: upgrade to 1.27
810126d m4: upgrade to 1.4.17
d286942 xinit: upgrade to 1.3.3
8c1d95f python-setuptools: upgrade to 1.1.6
816593f xmodmap: upgrade to 1.0.8
754e876 base.bbclass: fix nondeterministic PACKAGECONFIG processing order
ffb440c midori: exclude from self-hosted for mips64
c367ebd initramfs-framework: fix test that filter backup module files
cf66584 wic: Update and generalize pseudo setup for rootfs generation
8ac5454 wic: Make find_binary_path() more user-friendly
cb0df94 wic: Remove binary dependencies
51fdae5 wic: Remove rpmmisc call from livecd
f2ca93e wic: Remove rpm and grabber dependencies from BaseImageCreator
39c9af5 wic: remove rpm warning code from BackendPlugin
2a83999 wic: Remove dependency on myurlgrab module
c4a4fc5 wic: Remove dependency on rpmmisc
db034f0 wic: eliminate module checks
ce2dabd wic: Remove dependency on rt_util module
a7b1ff8 upstream_tracking: Update manual check for minicom
56cc2f2 linux-yocto/3.10: MinnowBoard support
505114c wic: add pseudo to the populate-extfs step
8707c39 bitbake: monitordisk: lower inode check warning to note
a8b06e6 file: Add nativesdk in BBCLASSEXTEND
0b3bbef ossp-uuid: Add nativesdk in BBCLASSEXTEND
ddf4e89 smartpm: Add nativesdk in BBCLASSEXTEND
a73f180 rpmresolve: Add nativesdk in BBCLASSEXTEND
04d5d12 acl: Add nativesdk in BBCLASSEXTEND
05999d1 attr: Add nativesdk in BBCLASSEXTEND
cd75fad icu: Add nativesdk in BBCLASSEXTEND
2b7f388 popt: Add nativesdk in BBCLASSEXTEND
11fd886 beecrypt: Add nativesdk in BBCLASSEXTEND
63534ab openssh: fix sshd status command error prompt
d3cb369 lib/oeqa/runtime: build kernel module on target test
67378fb wic: Initialize return values in find_artifacts()
e22efb4 wic: Check for the existence/correctness of build artifacts
99d33f2 packagegroup-core-basic: libuser has a hard depenency on libpam
75b0fb2 udev: update local rules for new touchscreen device
9d8fc02 ca-certificates: Clarify in Description that certs are Debian based
8b3b1e7 base-passwd: upgrade to 3.5.28
81b0852 kbd: Update to 2.0.0
f2c4d80 check: add check recipe for kbd to use for creating unit tests
89b569b crond: remove UID check in init script
57f75d3 xf86-video-fbdev: upgrade to 0.4.4
46ae29d xprop: upgrade to 1.2.2
81ecf2b xinput: upgrade to 1.6.1
b9d8016 xf86-video-intel: upgrade to 2.21.15
c786249 xset: upgrade to 1.2.3
13f1007 libdrm: upgrade to 2.4.47
3070180 xf86-input-evdev: upgrade to 2.8.2
76b04f0 xauth: upgrade to 1.0.8
c17b080 xkeyboard-config: upgrade to 2.10.1
b0125ee byacc: upgrade to 20130925
db1d37a perf: flag __SANE_USERSPACE_TYPES__ to include int-ll64.h for powerpc64
acd1d30 initscripts: insure checkroot.sh runs before anything writing to the file
8bfa6d9 grub: add patch to support 256 byte inodes
88a8e96 cairo: add explicit dependency on zlib
cd414c0 kmod: Update to Rev 15 via git
e83640d kmod: Add patch to fix seperate build dir of ptest
ead4a7d xz: Add nativesdk for Python3 nativesdk dependency
99cfbe9 sysstat: upgrade to 10.1.7
803870d package-regex: Tweak python-docutils so it works correctly
a72aae1 local.conf.sample.extended: Add some additional comments for security flags
9a1dce1 bitbake: toaster: add Toaster UI interface
4e21d09 bitbake: toaster: adding frameworks for the Simple UI
164ab73 bitbake: toaster: add toaster code to bitbake
d0072fc bitbake: utils: Don't show stack traces for BBHandledException
529bf97 update-rcd.bbclass: fix host/target test
68a41d2 glib-2.0: fix build on Aarch64
40420b9 cross-canadian: Fix SHLIBSDIR when using multilib
4bece4b nativesdk: Fix pn check
024bd68 wic: Check for external modules
c7b0165 wic: Force lba off for FAT16 partitions
72b5535 busybox: Add depmod (adds 2240 bytes)
71454f9 wic: check passed-in build artifact directories
040bd3d wic: check for build artifacts
6a39441 bitbake.conf: add WARN_QA and ERROR_QA to the hash whitelist
2b5bac0 poky: Update Version post release
396d8f8 bitbake: bitbake: bitbake: bb: Drop deprecated functions
e9662e8 bitbake: siggen: handle recipe path changes in siginfo files
ce0a6f8 bitbake: hob: Hob should ask for ports only when Manual proxy is selected
3ca820d bitbake: cooker/command: Add error state for the server and use for pre_serve errors
f41922d bitbake: bitbake: Update post 1.20 to development version
5c63fc7 classes: add aarch64_be target
7eca052 libarchive: Add -native version needed for pixz
3d15fdc glib-networking: upgrade to 2.38.0 and PACKAGECONFIGise
b740c92 automake: update to upstream version 1.13.4
e604aee automake: unhardcode version number
79939e4 kconfig-frontends: Update to 3.11.0.0
3295750 sqlite3: update to 3.8.0.2
05a3ec2 libpng: Update to 1.6.6
1e02b0c lsbinitscripts: Update to 9.50
40b89fd tzdata: Update to 2013g
6515b64 tzcode: Update to 2013g
8642829 file: Update to 5.15
841ffcc util-macros: upgrade to 1.17.1
6882a5b rsync: upgrade to 3.1.0
29ae8a3 man-pages: upgrade to 3.54
d3d9834 libbsd: upgrade to 0.6.0
2fa7846 desktop-file-utils-native: upgrade to 0.22
5150187 cups: upgrade to 1.6.4
2cab29c at-spi2-gtk: upgrade to 2.10.0
70676e9 at-spi2-core: upgrade to 2.10.0.
b50e7ec atk: upgrade to 2.10.0.
7241b28 glib-2.0: upgrade to 2.28.0
d0b578d gnome-desktop-testing: add
05bbc3d xf86-video-vesa: upgrade to 2.3.3
552780d libxpm: upgrade to 3.5.11
5e8e405 libxmu: upgrade to 1.1.2
fa21d18 libsm: upgrade to 1.2.2
b9b3414 ltp: update to new release 20130904
ac40bd0 connman: Upgrade to v1.18
b843f7c sqlite3: update to version 3.8.0.1
9877df0 insane: configure option checking
f11cb8d image types: split live into iso and hddimg
6a6735c kernel: restore scripts in the sysroot
a839783 libxt: remove unused configure option
76fcef6 pango: fix x11 DISTRO_FEATURE check
b5fcad8 libmatchbox: remove unused configure options
298cf58 gtk+: remove unused configure options
86bb78c update-rc: Stop and remove service if updating package
7266015 qt4: add upstream QTBUG-31579 patch for QPainter regression
7939f6b connman: Remove obsolete configurations from EXTRA_OECONF
be7dbe6 separatebuilddir: remove entries for imake and xorg-cf-files
043b5c6 xorg-lib-common: fix malloc0returnsnull usage
ea4eafc libav: Add libswscale to PACKAGES_DYNAMIC
3e01f95 sysvinit-inittab: Fix getting tty device name from SERIAL_CONSOLES entries
0f431a3 kmod-native: use bswap to work on older Linux hosts
f33afad bitbake.conf: Remove double slash from PATH_prepend and PKG_CONFIG_DIR
0496277 device_table-minimal.txt: change group of /dev/hda back to disk
567754a classes/package: handle filenames containing wildcards
029b0fe kernel.bbclass: unset LDFLAGS when run devshell in kernel recipe
f4d3a3d telepathy-mission-control: Add PACKAGECONFIG for upower and connectivity
73cf58d matchbox-wm: Add dependency on libxfixes and libxcursor
dae0c67 uboot-config.bbclass: Raise an error for unknown configs
aeb7909 linux-yocto/3.10: integrate lxc kernel feature and 32 bit x86 config
73513f9 linux-yocto/3.10: boot-live.cfg: Add CONFIG_ZISO=y
ff843e5 linux-yocto/3.8: re-use common-pc-64 for hasswell-wc
0bd6312 utils.bbclass: Fix override ordering for FILESPATH
5e3ed0b alsa-state: Rename init script
1960f00 gcc: Fix strange C++ repo issues
0314b91 kernel-yocto: Add a missing '['
f93071f uboot-config.bbclass: Fix use without IMAGE_FSTYPES appending
bf19a86 lib/oe/path: Fix copytree functions for tar 1.27
d3846f0 classes: tar 1.27 fixes
faf8f86 build-appliance: Update SRCREV for release
ee9a3c1 toolchain-scripts: Fix TARGET_SYS reference
102bf5e build-appliance: Update SRCREV for release
bc37596 distro_alias.inc: better sort
c5a2104 distro_alias.inc: Package corrections
c042b16 ref-manual: Added new UBOOT_TARGET variable to glossary.
ac7522b ref-manual: Updated the PACKAGECONFIG variable description.
c65ae43 dev-manual: Tweaked the source code directory paths in the examples.
82846e6 dev-manual, mega-manual: Updated the generic kernel file figure
5948aaa dev-manual: Fixed anchor tag and added doc step for bug filing.
28bab2e dev-manual: updated the example list of branches for poky.
ceb56b7 dev-manual, mega-manual: Updated downloads figure and some links.
f52b7f2 dev-manual: Edits to the Getting Started Chapter.
75ac719 dev-manual: Some minor edits to Introduction chapter.
4570c2e dev-manual: Changed "$" to "#" for runtime packaging section
5dfb1de ref-manual: Updated files in the image part of build history
8229b47 ref-manual, dev-manual: Updated buildhistory figure
4404c69 ref-manual, dev-manual: Edits to runtime package management section.
b5ad5ba ref-manual: Fixed cross-reference to runtime package management
7754bd2 dev-manual: Patch applied to runtime package management.
5445f71 bitbake: hob: change tooltip for live images
5416b95 maintainers.inc: remove obsolete recipes
81e678b bitbake: bitbake: replace comment added in conf files
3c5b6af bitbake: bitbake-dumpsig: introduce command line and error handling
e57bd62 bitbake: bitbake-diffsigs: improve error handling
e0e30c6 bitbake: bitbake-diffsigs: refactor argument parsing slightly
7c72144 bitbake: bitbake-diffsigs: handle if task name is specified without do_ prefix
f18194c bitbake: bin/bitbake: Clarify server error message
06afe1f bitbake: bin/bitbake: Clear ui-queue when starting a server
266a7d8 bitbake: bin/bitbake: No need to show tracebacks for BBHandledExceptions
22d5782 bitbake: xmlrpc: Show a better error message for connection failures
a333693 bitbake: bin/bitbake: Catch establish connection log messages
ee7e64f bitbake: bitbake/hob: removing extra parameters from conf files using hob
45392cc bitbake: HOB: MACHINE should be saved in conf files using ?=
9591591 bitbake: utils: use logger.warn instead of print in copyfile
0b9c339 qemu: fix nativesdk build without x11
abeea1b systemd: Add PACKAGECONFIG for cryptsetup
816b6be subversion: Add dependency on file for libmagic
b77cb9b lame: Add dependency on ncurses
5f59b3c glib-networking: Add PACKAGECONFIG for p11-kit
7f88c9b x11vnc: Add PACKAGECONFIG for xinerama
280045c tcl: Add dependency on zlib
854fa8e wget: Add dependency on libpcre
69a9c18 gstreamer1.0-libav: Add PACKAGECONFIG for orc
105a709 libunique: Add PACKAGECONFIG for dbus
869d732 aspell: Add PACKAGECONFIG for curses
adf8a63 xf86-input-synaptics: Add dependency on libxtst
a72f4a9 xdpyinfo: Add dependency on libxcomposite
0c7b734 python: Ensure build completes before install
28eedee run-postinst: Ensure that the postinsts are ordered
a59aa9e package_rpm.bbclass: Workaround failure in attemptonly installs
acf5470 oe-init-build-env-memres: Unset BBSERVER if already set
540c279 connman-conf: add a global public DNS to network provisioning
113398d oe-init-build-env: unset BBSERVER
479fcbf udpated-rc.d: Track postinst/prerm/postrm in task checksum
47129f3 systemd: Track postinst/prerm in task checksum
0d8cbc3 systemd-compat-units: Use correct run-postinsts script link
17b5f2f kmod: ptest fixes
56ea7ac dbus: fix QA error building nativesdk-dbus
9d64f3de linux-yocto: enable CONFIG_INPUT_EVDEV as standard policy
9def5c9 license.bbclass: use shutil instead of bb.utils.copyfile
2a013e2 opkg: ignore result of opkg configure
20a86e1 cross-canadian: Fix TUNE_PKGARCH references
4e537df pixman: Fix nativesdk rebuilds for armv7a
f81f4c5 gcc-common: Improve fpu code checksum dependencies
6dff1bc cross/crosssdl/native/nativesdk: Fix do_packagedata stamps
d299444 boot-directdisk: avoid loop in MBR disk signature generation
104166c yocto-kernel: Use variable-substituted BBLAYERS
bdfd716 distro_alias: Fix missing =
e7a2023 maintainers: Add some maintainers
42b115b package_regex: Add python-docutils
35a74ee upstream_tracking: Update manual checked list
56f39bc bitbake: lib/bb/monitordisk.py: fix spelling in error text
a02280f README.hardware: update genericx86 hardware support
85a8645 distro_alias.inc: update distro_alias
20979ec distro_alias.inc: Sort entries
30f85ce poky.conf: Removed obsolete distros from SANITY_TESTED_DISTROS
43a960a linux-dummy.bb: Resolve missing task issues
b618f74 makedevs: Do not return error if the fifo exisits
d80472c dpkg: Add xz to RDEPENDS
75c143a wic: Add OpenEmbedded-specific implementation
9fc88f9 wic: Add mic w/pykickstart
53a1d9a wic: Initial code for wic (OpenEmbedded Image Creator)
e5d0976 yocto-project-qs: Minor formatting to filesystem image section.
62e0a4a yocto-project-qs: Added a link to MACHINE variable.
0f066bb yocto-project-qs: Updated instructions for downloading from website.
218d251 yocto-project-qs: Updated wording for required packages.
aa8edc0 yocto-project-qs: Removed redundant production note.
5b973c4 ref-manual: Added U-Boot variables
bdede3b ref-manual: Updated supported distros list.
1cd0b1e ref-manual: Updated the BBPATH glossary term
a81bfcb ref-manual: Edits to restore the supported Linux distro list.
6b9cff4 documentation: Updated Manual Revision History Tables
320f90d ref-manual: udated list of supported distros
22909d0 ref-manual: Applied review edits to migration section.
a8a2404 ref-manual: Updated 1.5 Migration section and COMPLEMENTARY_GLOB variable
0d194a8 dev-manual, ref-manual: Review edits for new variables.
df2e70a ref-manual: Updated the QA checks section in the 1.5 migration section.
2814418 ref-manual: Added the version-going-backwards test to insane
d8d5841 dev-manual: Edits to the "Setting Up Runtime Package Management" section.
ec84110 dev-manual: Updates to "Working with Eclipse" section.
e2dd4ee dev-manual: Update to "Toaster" section.
63bc84c poky.ent: Fixed variable for ADT Installer download link
ec51951 poky.ent: Changes to the Fedora essential packages for the host
7bd3a81 ref-manual: New migration section for 1.5 and new variables
155961d ref-manual: Updated the "Images" section.
89d3e75 ref-manual: Added some more undocumented classes
eb36aaa ref-manual, dev-manual: Edits to running automated tests section.
b8bdd92 ref-manual: Updated the bitbake --help listing.
7fa2c8f bsp-guide, dev-manual: Updated for 3.10 default kernel
18d6adb ref-manual: Updated the autotools.bbclass section
aca7aea ref-manual: Updates to DESTDIR areas.
fcc3b98 ref-manual: Updated the EXCLUDE_FROM_WORLD variable.
a8d5d06 ref-manual: Added new PARALLEL_MAKEINST variable description.
0f90262 ref-manual: Edits to PARALLEL_MAKE variable.
45ace75 ref-manual: Updated the PARALLEL_MAKE definition.
46b76d4 ref-manual: Updated the SERIAL_CONSOLE variable
5cb0828 ref-manual: Updated SRC_URI description
e44538f ref-manual, dev-manual: Applied review comments for test section
56c4de9 ref-manual: Added TEST_IMAGE variable description to glossary.
a1d9b6d pseudo: Fix race problems
b43c812 bitbake: HOB: Busy cursor when saving configuration
0fe5d9d qemu: Add fix for floating point issues on x86-64
331159d slang: fix sprintf bug concerning 8-bit characters
58825b9 nss: Fix return codes in postinstall
df18dc0 boot-directdisk: ensure generated MBR disk signature is non-zero
cf2ebed mkefidisk.sh: Allow using a loopback mounted file
072c4e1 kernel.bbclass: Allow INITRAMFS_TASK to trigger copy initramfs code
d273610 opkg: Use systemd service for first boot configuration
7509c0f sato-icon-theme: add more compatibility symlinks
d4b0a4b pcmanfm: hide the desktop preferences
2471296 psplash: copy image files from workdir instead of next to recipe
2e1cb79 libtool: Don't patch generated files
08d902a native: Use a native site file and ensure the correct sed is used
db51dd2 nativesdk-packagegroup-sdk-host: Add nativesdk-makedevs
f9c26fb systemd-compat-units: do not create runlevel command
4312f5a makedevs: rectify the exit codes and handle the invalid parameter
66bf656 makedevs: Add device_table-minimal.txt to the nativesdk sysroot
9f3706f dropbear: pass SFTPSERVER_PATH explicitly
1abb7e7 packagegroup-self-hosted: add xz to enable bootstrap
636cbfd eglinfo: drop machine-specific configuration from oe-core
e8e3b62 matchbox-panel: silence some pointless warnings
0ac8934 boot-directdisk.bbclass: Fix media generation problems with vmdk
ec9f4c3 syslinux.bbclass, syslinux: Update to syslinux 6.01
fde2911 bootimage.bbclass, zisofs-tools-native: add ability to compress ISO images
4a0ff9c syslinux.bbclass: Fix hard coding of console=tty*
5a2d11e grub-efi.bbclass: Add serial and graphics menu options
24ffda4 bootimage.bbclass, grub-efi.bbclass: Improve EFI & PCBIOS+EFI ISO support
197f1fe grub-efi-native: Add support for EFI ISO images
bb8e360 meta-yocto: updated SANITY_TESTED_DISTROS in poky.conf
b049d53 testimage: Exclude BB_ORIGENV variable
724a466 builder: register text files with leafpad
b88d1fb packagegroup-self-hosted: add leafpad text editor
2f64fae classes/package_rpm: fix bitbake package-index for RPM
1bff3fc oe-init-build-env-memres: use shell instead of Python to show the port number
e5fcc7e pseudo: warn twice if the 32-bit toolchain appears broken
601e1a7 pseudo: use bbnote/bbwarn instead of echo
68ec3d4 qt4-x11-free: disable QGtkStyle
32edeb3 gcc/libtool/perl: Fix various path to sed-native problems
b8819b0 runqemu: Use correct kvm CPU options for qemux86* with kvm
5454f92 busybox: update mdev.conf
41875fa linux-yocto/3.10: common-pc* config updates
d7e22e5 adt-installer: add warning if MACHINE is not set in adt-installer.conf
1ffa203 adt-installer: check if sudo is needed when installing target sysroot
2f8ce2c package.bbclass: Clear umask when using os.mkdir
41f88ee lib/oeqa/runtime: ping: wait for 5 echo replies
141d4f3 nativesdk-packagegroup-sdk-host: Add nativesdk-shadow
d43d7b1 shadow: Add nativesdk to BBCLASSEXTEND
5b5e1b9 relocate_sdk.py: make it work also with python 3
c54076e distutils: Replacing path to native path only to be done to non-native python packages
e58266d bind: port a patch to fix a build failure
4d8ab87 build-appliance: Update SRCREV
8bf8fe0 poky: Update to 1.5 release version
3059b09 bitbake: bitbake: Update to version 1.20.0
28af70d wget: remove po.m4 patch
68db43e texi2html: remove po.m4 patch
495d05c ptest-runner: compatibile with busybox
bd5c5f0 systemd: fix ptest support
a2a544d perl: do not use pushd
02af823 grub: don't patch generated configure to fix do_patch re-execution
f79b21a scripts/runqemu: write temp file into correct location
ebdc88a documentation.conf: update contents
e0a351b sysvinit: don't use useradd
5f9ee67 base-passwd: add shutdown group
139e887 shadow: Turn shadow-native into a BBCLASSEXTEND
9bed1a3 shadow: Move common code to shadow.inc
1146eeb webkit-gtk: limit ld memory requirement
1917544 init-install-efi.sh: Remove unnecessary udev rules file to avoid errors
e42fefe init-install-efi.sh: Fix root= specification
cbc12aa package_deb, apt.conf: fix apt failure in do_rootfs()
7290332 elfutils: remove configure bits from patch
a60c6b3 libpam: Avoid host contamination issue w. libprelude
ad311a1 makedevs: add nativesdk to BBCLASSEXTEND
49e754a autoconf: Add fix for sh verses bash issues
dd4b362 qemu: don't claim support for IrDA and PCMCIA
44d74f6 boost: set up PACKAGECONFIG for boost-python library
f9c1ac3 kern-tools: fix multi patch application without headers
c68888f telepathy-mission-control: do_compile failed (race issue)
a897186 libav: make X11 dependencies dependent on DISTRO_FEATURES
95455bc classes/testimage: add informational messages about tests and do some cleanup/formatting
8020349 image.bbclass: uninstall package only if it's already installed
8c5f345 sstate.bbclass: ignore the tar failure.
0fc8317 yocto-bsp: add 3.10/remove 3.8 kernel from templates
bf6b0d9 glib-2.0: fix broken python script header on machines using buildtools
954e349 avahi: bump INC_PR to avoid do_configure failure in existing workdir
bd46e2a dev-manual: Updated Git repo path for eclipse plugins.
b9bb278 ref-manual: New variable descriptions to support QEMU image tests
06cddeb ref-manual: Added a new entry for the testimage.bbclass.
35ec4d2 dev-manual: New section on running QEMU tests.
395486f dev-manual: First pass changes to support Kepler Eclipse
66e5feb poky.ent: Added a new variable for Kepler
f3455db dev-manual: Misc formatting and setup for Kepler support
9fbaa9b dev-manual, profile-manual: changed "plugin" to "plug-in"
d3bf6bd ref-manual: Added versioning to some R* variables
6084246 ref-manual, yocto-project-qs: Explanations for Git tarballs
3fa6a30 ref-manual: New BB_GENERATE_MIRROR_TARBALLS variable.
d7f340a ref-manual: fixed alphabetical order for glossary entries.
2effece ref-manual, mega-manual: Updates to the SDK Generation section
26354c2 ref-manual, mega-manual: Updates to "Image Generation"
33ed042 ref-manual: Updated the RDEPENDS variable to include syntax
9cef06f ref-manual: Update to the image generation section.
5cdf8a6 ref-manual: Updated *_POSTPROCESS_COMMAND variables
35bd82a ref-manual: New section on SDK generation
43c10b9 ref-manual, mega-manual, Makefile: New figure added for sdk
f5686c9 adt-manual: Updated location for toolball install scripts.
110e803 yocto-project-qs: Update to how toolchain installer scripts are named.
34c46b3 ref-manual, mega-manual: Updated the image generation figure
80c66fd ref-manual, mega-manual: Updates to the Image Generation section
070ab36 ref-manual: Updated IMAGE_CLASSES variable description.
fde7349 ref-manual: Updated the IMAGE_ROOTFS variable description.
44cc19d ref-manual: Updated the IMAGE_POSTPROCESS_COMMAND variable description.
597aceb ref-manual: Updated the ROOTFS_POSTPROCESS_COMMAND variable description.
7b0c340 Makefile: Updated ssh push string.
25bea91 ref-manual: Edits to the "Image Generation" section
72c73e6 ref-manual, mega-manual: Revised the image generation figure
b577e74 ref-manual: First draft of the "Image Generation" section
da7a072 dev-manual, ref-manual, Makefile: Added image generation figure
673b28f ref-manual, mega-manual: Updated figure for source fetching
caa29e6 ref-manual: Fixed "fsroot" typo to "rootfs".
b1d7cfa ref-manual: Added variable description for IMAGE_POSTPROCESS_COMMAND.
718fac6 ref-manual: Added variable description for ROOTFS_POSTPROCESS_COMMAND.
dc09cfe ref-manual: Added variable description for IMAGE_ROOTFS.
aef1326 ref-manual: Fixed IMAGE_FSTYPES to specify formats instead of format.
599209e ref-manual: Added three new variable descriptions to the glossary
053ee26 ref-manual: Updated the PATCHTOOL variable description.
6294f17 dev-manual: Updated the "Best Practices" section.
6bf4106 kernel-dev: Updated the in-tree metadata section
e3ed36e documentation: Updated poky.ent to have the YP 1.5 code name
dcefb7c dev-manual: Added new section on "Best Practices"
b1b9f43 dev-manual: Updated "Toaster" section to be API-only.
4e7dde7 conf/local.conf.sample: update for new testimage class
bead255 bblayers.conf.sample: use ##OEROOT## instead of ##COREBASE##
19ad80c distro: remove anjuta-remote-run from distro_alias and maintainers
d4b9713 bitbake: tests/data: Whitespace in key names is a really bad idea
d9955a1 bitbake: data_smart: Variable references don't contain newlines, spaces or tabs
3c41bea bitbake: hob: populate "Save image" dialog when saving changes to a custom image recipe
d28b181 bitbake: bin/bitbake: Improve --help text
35a1d37 bitbake: build: Add BB_TASK_NICE_LEVEL to task code
ace48c2 bitbake: bitbake: runqueue: add task hash to Queue events
24ae636 bitbake: bitbake: event: adding generic event for metadata usage
a05d474 bitbake: bitbake: cooker, command: add a command to return global data
0c51d61 bitbake: bitbake: cooker: get extra information from recipe cache
5ee82d4 bitbake: bitbake: build, runqueue: adds info to the *runQueue* events
f7621f4 bitbake: bitbake: cooker,runqueue: send the task dependency tree
ba83eb3 bitbake: bitbake: cooker,xmlrpc,servers: implement CookerFeatures
87e86d4 gcc-target: Fix libatomic dependency tracking issues
c2d5fa9 gzipnative: Ensure dependencies apply to do_unpack and do_populate_lic
f427614 btrfs-tools: Fix parallel make issue
5262ea1 uboot-config.bbclass: Handle UBOOT_MACHINE setting
14c6a82 u-boot, u-boot-fw-utils, u-boot-fw-utils-cross: Use uboot-config class
19174b0 uboot-config.bbclass: Use an annonymous python function
8f650f2 oprofileui-server: use two digit initscript sequene
fc91e06 libpam: only use pam_systemd.so if systemd is enabled
4209586 x11vnc: respect zeroconf DISTRO_FEATURE to enable Avahi support
139b44b pseudo: force NO32LIB to true for nativesdk
405be52 runqemu: set qemuarm memory size back to 128MB
d652987 classes/imagetest-qemu: remove old image testing class
595321a classes/sanity: test for DISPLAY being set with testimage class
a3558bf classes/testimage-auto: add class to allow automatically running image tests
eba2428 classes/testimage: remove odd characters in comments
ed81641 findutils_4.2.31: backport fixes for doc build errors
10c85f5 libunistring: remove the test to convert euc-jp in configure
8ce33c4 pciutils: remove pcimodules
ad77d10 lib/oeqa/runtime: cleanup and improve output readability for some tests
f3ab2fc lib/oeqa/utils: sshcontrol: log how long the last command take
cb2496c qt-mobility: fix build without X11
77ae0d9 wipe-sysroot: delete pkgdata stamps
06965e8 insane: don't abort if workdir is not TMPDIR/work
fa0fd37 bitbake.conf: define WORKDIR in terms of BASE_WORKDIR
7a3d2fb gcc-4.8: temporary disable thumb
b3c750e core-image-x11: Ensure x11 distro feature is enabled
853bc53 qemu: Fix broken patch
4ed858b linux-yocto/3.10: fix long perf compile times
2ad268f linux-yocto/3.10: mips configuration changes
6942108 linux-yocto/3.8: add haswell-wc board config and branch
99b4173 perf: Add LDFLAGS to allow build of old kernels without patching
4a224d3 qemurunner: disable grabs in automated testing
dd2b2f9 qemu: add option to disable X grabs
63cd03b u-boot-fw-utils: Skip package if UBOOT_MACHINE is unset
f1ff3c2 bitbake: data_smart: Fix variable reference issues
eaf06bc bitbake: cooker: return a copy checkPackages
825cfeb bitbake: usermanual.xml: Two new sections added to BitBake "Description"
e624d73 perf: Ensure we use CFLAGS and LDFLAGS settings from kernel build system
1db33e3 cmake-native: fix dependencies
442be3e mesa: add virtual/mesa provider
ac191eb libtool: fix resolve of lt_sysroot
da47077 avahi: fix and enable out-of-tree builds
37cb3e3 python-smartpm: truncate the filename to meet NAME_MAX
9a4169a u-boot-fw-utils: reinstate target recipe for fw_printenv
14fee32 oeqa/runtime/smart: Increase timeout to 1500 test
eae5f4b weston: change mesa dependency to virtual/mesa
ab9e266 xserver-xorg: change mesa dependency to virtual/mesa
015cb13 mesa-gl: add GL-only Mesa recipe
7303b67 linux-libc-headers: do_install: fix "Argument list too long" error
8dd7ab3 util-linux: move su to /bin for lsb command check test
a71761e shadow: move su to /bin for lsb command check test
44c65db busybox: move su to /bin for lsb command check test
bb93962 bitbake: Revert "bb.fatal: Raise a BBHandledException instead of exiting"
3091150 openssh: use volatiles for managing /var/run/sshd
242ad61 Revert "initrdscripts: look for new systemd-udevd location"
5eae2d5 imake: remove
9470f68 transfig-native: remove, nothing depends on it
bf413ad rpm: fix typo in PACKAGECONFIG
e3cacf1 python: fix failures of LSB python-runtime tests
7d60944 kbd: Allow resizecons on x86_64
0af5853 kbd: Fix coding sytle
63ae37f LSB 4.1 Library Check: fix unable to find library libqt-mt.so.3
85a5a2c cdrtools-native: Update from 3.00 to 3.01a17
c78c1f9 bootimage.bbclass: Move fat image creation into a function
238e9b5 coreutils: set acpaths to avoid "Argument list too long" error
2ac9925 vala: add bison-native depends for vala-native
b925c75 udev: avoid autosuspend of USB input devices
9592f31 linux-libc-headers: Fix comment typo spotted by Mark Hatle
1b7f829 webkit-gtk: remove compile-three-times hack
42ef04b connman: Try to figure out NFS root interface if using DHCP
06078af libxml2: remove patch for CVE-2012-2871
1bf8d83 utils: Update bb.which reference and other syntax cleanup
641a80d autotools: Remove .la files if rebuilding non out of tree software
912e8d5 meta-yocto/layer.conf: Bump LAYERVERSION_yocto
d96c512 bitbake: bb.fatal: Raise a BBHandledException instead of exiting
d15652d bitbake: data: Optimise flag exclusion list handling
9a32eca bitbake: data: Optimise flag lookup in build_dependencies
d7e7b99 bitbake: data: Optimise build_dependencies a little
d6ac67f bitbake: data_smart: Cache the fact a variable accesses another even if its unset
385bd44 bitbake: data_smart: Allow flags to use the expand cache
a61519f bitbake: data_smart: Allow expansion of flags in getVarFlags
0902850 bitbake: data_smart: Add explict None checks
66c9c01 bitbake: data: Cache an list of export variables
36b4fcd bitbake: data: Use direct iteration, not keys()
f78db82 bitbake: data_smart: use the expand_cache in VariableParse
43f1867 bitbake: data_smart: Improve variable expansion regexp
c971868 bitbake: siggen: Use lookup cache exclusively
43c670a bitbake: data: Be explicit in data_db check
602bb69 bitbake: cooker: Allow profiling of the parser in profile mode
eb4854f bitbake: cooker: Avoid duplication for taskdata creation
a828c89 bitbake: runqueue: add runQueueTaskSkipped event
1181e69 bitbake: build: Add logfile to add TaskBase events
5fca4d2 linux-yocto/3.10: genericx86 meta data factoring
366bd11 lttng: Enable ptest support.
f8ccaba systemd: add ptest
97f1c03 sysvinit: remove unused files
e909857 sysvinit: fix indentation
707da95 boot-directdisk: Allow for EFI-only boot direct disk images
a6974f2 elfutils-native: Fix build on distros with gcc 4.8
1875fb7 eglibc_2.18.bb: Fix IFUNC support for ARM REL relocations
99875e2 xf86-video-vmware: disable VMWGFX
019dafd systemd: link runlevel from systemctl
576a19e scripts/contrib/build-perf-test.sh: record size in kb and remove extra spaces
5fb63f6 apmd: Add systemd support
27bb9d0 oprofileui-server: Add systemd support
34e875e LSB Command Check: fix install_initd and remove_initd not found
58324d8 anjuta-remote-run: remove
3e31a50 adt-installer: fix opkg repo name
babbf7a linux-libc-headers: Add big warning about antisocial behaviour
214bb68 lib/oeqa/runtime: timeout increases
8ebe7be bitbake.conf/package: Collapse PKGDATA_DIR into a single machine specific directory
af5b3f3 layer.conf: Version bump for DEPLOY_DIR layout change
6670be7 bitbake.conf: include machine name in DEPLOY_DIR_IMAGE
ee7ccda icu-native: do_install: Segmentation fault
0c11a77 perf: source should be ready after do_unpack
4137f9a bb-matrix-plot: Use interpolation for sparse data
493e8b4 bitbake.conf: Stop providing ${P} and ${PF} by default
643252f bb-matrix: Clean before, rather than after, building
0acde33 sstate.bbclass: fix parallel building issue
ca1b5dd bitbake: cooker: updateCache should rause exceptions, not sys.exit
926b60f bitbake: knotty: Cleanup error/interruption handling
ef7e388 bitbake: command: Treat empty messages as failures, not CommandCompleted
0519d1a bitbake: cooker/command: Add finishcommand to reset cooker state
7663a52 bitbake: cooker: Rename confusing 'stop' state to 'forceshutdown'
2174a51 bitbake: cooker: Clean up init/reset configuration code
fe1258d bitbake: cooker: Drop obsolete worker test
a392877 bitbake: bitbake: xmlrpc: delete unused code BitBakeUIEventServer
dd36930 bitbake: data_smart: Account for changes in append/prepend/remove in the config hash
89ca973 ref-manual: Added information for OEROOT and build environment
3c4f2a6 ref-manual, mega-manual: Updated source input figure
c375134 dev-manual: Updated wording to be more professional for broken build.
775fbab dev-manual: Update to bblayers.conf example
91b9202 dev-manual, ref-manual: replaced "atom-pc" with "genericx86"
743106f ref-manual: Re-ordered some P* variables in the glossary.
de62377 dev-manual: Added new section on how to exclude a package
0ca3c5f ref-manual: Updated the screen help for bitbake command.
a266619 documentation: Added the memory-resident BitBake feature
cc26267 ref-manual: Re-ordered some B* variables to be in alphabetical order.
2fe0213 ref-manual, mega-manual: Updates to config and package splitting figs
973fd9b ref-manual, mega-manual: Updated two figures
fdc1ad2 ref-manual, mega-manual: Edits to figures
cc265bf ref-manual: Created new "Closer Look" chapter
7b70da9 ref-manual: Re-ordered flow for detailed process sections.
b359e9a ref-manual, mega-manual: Updates to process figures
78e209d ref-manual, mega-manual: Updated package-feeds diagram
6a18edd ref-manual, mega-manual: Updated the analysis figure.
661c27d ref-manual, mega-manual: Updated the configuration figure
8cb2038 ref-manual, mega-manual: Updated the patching figure
ddb29c5 ref-manual, mega-manual: Updated the source fetching figure
27b4998 ref-manual, mega-manual: Updated ADK figure
4cf514f yocto-project-qs: Added Creative Commons distribution blurb.
6a0c6ea ref-manual: edits to BAD_ and NO_RECOMMENDATIONS
69daf50 ref-manual: Variable adds and edits for package exclusion changes
d3a849f ref-manual: Updated DEPENDS and RDEPENDS variable descriptions.
4265649 ref-manual: Added section on linux kernel image names using PE
db678a1 ref-manual: Updated the PE variable description.
bd76847 libnewt-python: Don't write a whiptail package
01db559 populate_sdk_rpm: Only remove trailing whitespace, not all whitespace
566ca1e beagleboard: update the dts location
cdc3549 weston: as weston-launch depends on PAM, control it with a PACKAGECONFIG
1b25cf7 clutter: fix compilation when building without X11 backend
4540f6f x11vnc: add dependencies for xrandr/xfixes/xdamage/xtst
4496e34 populate_sdk_rpm: Ensure empty strings aren't passed to attemponly rpm code
46597b5 xf86-video-vmware: respect opengl DISTRO_FEATURE
8f9db77 bluez4/5: Add EXCLUDE_FROM_WORLD = 1
33e8896 xf86-video-intel: disable DRI2 tests if no DRI2 is available
3f0525d xf86-video-vesa: change depends to refect reality
d439758 ia32-base: only depend on GL if opengl DISTRO_FEATURE enabled
01135ee lib/oeqa/runtime: smart: limit channel add to useful ones
83b90e5 classes/package_rpm: remove unsed outdir variable
40232ed yocto-bsp: conditionalise mesa-swrast on opengl in templates
775bc29 ptest-runner: trivial fixes and refine
4c92281 libcroco: disable Bsymbolic if it is not supported on some hosts
4b2d9ac python-smartpm: Add an attempt install mode
19c3c6d bitbake: utils: Fix BB_PRESERVE_ENV
3e7d669 uclibc: Add missing DEPENDS on kern-tools-native
bd3164b image/populate_sdk: Ensure symlinks in target sysroot are relative
e7f3fee qemu: only depend on mesa-driver-swrast if opengl is enabled
4c3f8d2 init-live.sh: distinguish between a read-only image and a read-write image
b990585 midori: excluded from mips64 temporarily
6b4f7e4 systemd.bbclass: get the correct /lib directory
8dedc08 systemd: Remove base_libdir if installed only for systemd_unitdir
703104c nfs-utils: Add systemd support
06ecd68 rpcbind: Add systemd support
1661f5c lighttpd: Add systemd support
c6d25fb openssh: Add systemd support
42742e3 avahi: use correct names in SYSTEMD_SERVICE_* variables
a572d8a dbus-ptest: fix populate_sdk error
879ad05 initscripts: filter out empty lines from volatiles in check_requirements()
f7d1286 btrfs-tools: fix a parallel build issue
a5973ac meta-yocto-bsp: bump reference BSPs to v3.10.11
96eff4c mount.sh: automount cdrom device even if no ID_FS_TYPE available
82914e5 gstreamer-plugins: Change anonymous python structure
5f2748e cmake.bbclass: ensure CMAKE_SYSTEM_NAME is correct
5992830 adt-installer: allow installation of other machines
32090b6 meta-toolchain-qt: include the proper cross-canadian package
9d3d1a2 populate_sdk_base.bbclass: select the proper cross-canadian package
5d125f5 packagegroup-cross-canadian: change package name to include MACHINE
bd0fc8e meta-environment: change package name to include MACHINE
74f148c linux-yocto/3.10: bump kver to 3.10.11
4acfbb1 u-boot, u-boot-fw-utils-cross, u-boot-mkimage: Upgrade to 2013.07
aae576c systemd: Fix build with multilib
2044668 bitbake: bitbake: runqueue: add sceneQueueTaskCompleted event
a284f6c systemd: update patch header and comments
1492f43 xf86-video-intel: allow builds without opengl, add more options
0f34041 mesa: use distro_features_check to abort build without opengl feature
00b17ad kmod: avoid parallel-tests
fec8c28 lttng-modules: Update to version 2.3.0
e4d6925 lttng-tools: Update to version 2.3.0
341c085 lttng-ust: Update to version 2.3.0
8d82eae ptest.bbclass: add cleandirs flag to do_install_ptest_base
8905f77 ptest.bbclass: fix error on ubuntu host
0ca5d1f yocto-bsp: remove apm as a default MACHINE_FEATURE
b04b6f9 beagelboard.inc: remove apm as a MACHINE_FEATURE
87771db bitbake: runqueue.py: check whether multiple versions of the same PN are due to be built
0583714 bitbake: providers.py: enhance the runtime debug degbug messgae
5c5a3bf qemu.inc: remove apm as a MACHINE_FEATURE
2ab1bf2 bitbake: prserv: Ensure data is committed
31709ed cmake: set system name correctly
6bf6708 package.bbclass: skip already-stripped QA test if asked for
5ddec10 ghostscript: Add missing dependency to resolve parallel make issue
6d7062a meta-yocto-bsp: update h/w reference boards SRCREVs
6727d1d beagleboard: upgrade the kernel to 3.10.x
8102de6 mpc8315e-rdb: update to the 3.10 kernel
310f89a genericx86: Create a genericx86-common.inc base for the x86 BSPs
82ddcb1 uboot-config.bbclass: Allow choose of U-Boot config for machine
e296958 linux-firmware: Update SRCREV, pull in iwlwifi-7260 support
7bcec4a kern-tools: support no author patches
baba8cf kernel-yocto: improve error checking on non-git repos
fbd6297 linux-yocto/3.10: update meta SRCREV for beagleboard config changes
ea84943 bluez5: Rename tests package to testtools
9d33660 bluez5: Install the bluetooth library
76e8678 systemd: split out systemd-binfmt as a separate package
9b84fc7 lib/oeqa/qemurunner: Use a timeout in select() call
457e584 core-image-weston: Ensure wayland distro feature is enabled
3dcff8c core-image-directfb: Use 'distro_features_check' class
9f19820 resolvconf: specify configuration for systemd-tmpfiles --update
41d1c2d lib/oeqa/runtime: add basic scanelf test
1f6bd73 linux-firmware: package Marvell SD8787 firmware
9ebf8fb linux-firmware: correct name of Marvell license file
5963d24 devshell: Don't corrupt the fakeroot variables
75a1492 run-postinsts: move script execution from S98 to S99 in rcS.d
c734873 connman: Ignore the NFS root network interface in init script
12223c0 package_rpm.bbclass: Fix no_recommendations and package_exclude
f24dda3 useradd: Handle users from a package being used in others
0fa12e4 kernel.bbclass, image.bbclass: Implement kernel INITRAMFS dependency and bundling
95d413d gcc-runtime: Add packaging for libgfortran (and also tweak others)
835b5c1 local.conf.sample.extended: Add an example of how to enable fortran
faed110 oeqa/runtime/scp: replace dd call
fbb3e5e oeqa/utils/sshcontrol: tweak ssh options
f6fed84 oeqa/oetest: oeRuntimeTest: enable long messages
c33bf22 chkconfig: remove linuxstdbase symlinks
06dc3a9 boost: adding serialization to BOOST_LIBS
78296aa eglinfo: add recipes for x11 and fb backends
e4556e5 waf.bbclass: add waf build system class
43510e5 sysklogd: lower the ALTERNATIVE_PRIORITY in case of systemd
101662d busybox-syslog: add configuration file /etc/syslog.conf
18dfcc5 acpid: print message if rule directory is inexist
f438140 acpid: install events directory at default.
71d7751 irda-utils: add init.d/irattach status command for LSB compliance
e0d6665 distcc: add init.d/distcc status command for LSB compliance
eb34e8d pseudo: fix memory leak and missed privilege drop
3dccd57 bitbake: contrib/vim: merge changes from vim-bitbake repo
b093b6c bitbake: knotty: Reduce refresh of footer
373e209 bitbake: bitbake: Ensure ${DATE} and ${TIME} are consistent
c8957a4 bitbake: hob: remove custom image from the images list when not needed
b501b83 bitbake: hob: limit the description size when a custom image is saved
da29dcc bitbake: newbb.vim: Use 'git config' instead of git-config
e92b2db bitbake: data_smart: Move getVar expand cache handing to fix _remove operations
ed3ef08 qemumips: fix keyboard entry in graphical boots
cec4879 linux-yocto/3.10: update to v3.10.10
19904ae linux-yocto/3.10: fix YAFFS2 build issues
f41b7a7 bitbake: hob: remove PACKAGE_INSTALL variable setting from hob
e63c577 bitbake: bitbake-worker: ensure BUILDNAME is available during execution
12d003a scripts/runqemu: Fix MACHINE regex
7d8038d glib-2.0: fix a host contamination issue
93e7970 bitbake.conf: Add SDKPKGSUFFIX to hash whitelist
6d41d0d package.bbclass: Fix darwin shlib handling
990deb3 flex: Only use create_wrapper for native and nativesdk
f1c74a3 mpc8315e-rdb: Set PREFFERED_VERSION to 2013.07
3aa68fd beagleboard: upgrade u-boot to the latest version
e3bc93c lib/oeqa/runtime: smart: serve repo on host ip only and increase timeout
8318816 poky.conf: add version-going-backwards to ERROR_QA
755f7d9 pulseaudio: disable GTK+ by default
18fbaab elfutils: Drop do_autoreconf patches
6ccd4d6 runqemu: set memory size to 256M for most qemu machines
212f512 wipe-sysroot: fix removals
1b81449 bitbake: bitbake/cooker: fix some calls of cookerdata.findConfigFile method
c7994f8 bitbake: runqueue: Fix scenequeue to pass file descriptors, not a float
5894ac1 sanity: Don't make assumptions about cwd
554c892 meta: Don't use deprecated bitbake API
6d9e3a1 bitbake: server/xmlrpc: stop server on client exit
c7b3429 bitbake: prserv/serv: Settle on two threads for optimal performance
6e15fee bitbake: build: Fix profile file names
bd023ef bitbake: serv/db: Don't use BEGIN/COMMIT
883813d bitbake: serv/db: Take an excluside lock on the database
3e5abff bitbake: serv/db: Fix looping upon database locked issues
b306d7d bitbake: server/process, server/xmlrpc, runqueue: Use select.select() on fds, not time.sleep()
d63e6a9 ref-manual: Edits to figures
2ad4f5d ref-manual: Minor edit.
987f91e ref-manual, mega-manual: Edits for expanded packaging description
2abfe0c ref-manual: New variables descriptions for PKGDATA_DIR and PKGDESTWORK
efff0d5 lib/oeqa/runtime: ping: fix ping false fail
36fcb61 python: Backport 2 CVE from upstream
116441d perl: Backport 2 CVE Patches
25b8cc8 btrfs-tools: Add dependency on lzo acl e2fsprogs
55d0fca systemd: use /bin/mkdir instead of host mkdir path
03325fe gcc-4.8: fix ICE of cross-compile for PowerPC e500v2 targets
ada4bcc libsamplerate0: add PACKAGECONFIG for fftw
09d1761 mesa: add missing elfutils dependency for r600 PACKAGECONFIG
2163807 bluez4: fix network Connect parameter validation
4e7e542 multilib.bbclass: Expand the WHITELISTs with multilib prefix
118d74e oe-setup-rpmrepo: add native sysroot so nativepython can be found by env
4b2906d recipes: Ensure that we only apply poky changes when poky is selected
5fd04b0 bitbake: prserv: Allow 'table is locked' matching for retry loop
cb93941 bitbake: server/xmlrpc: Increase timeout to 60s
4322948 bitbake: cookerdata: Allow bblayers.conf to be found using BBPATH
c7a3897 bitbake: cookerdata: Set TOPDIR when using bblayers.conf
156baf8 web-webkit: Drop, we have midori now
b2a0e3a runqemu-ifdown: clean up the remaining iptables rules
5bffc4f runqemu-internal: provide more info if a preconfigured tap is used
a78bf1c runqemu-internal: don't bring down preconfigured tap interface
8f32af9 lib/oeqa/runtime: syslog: fix test for logger in case of systemd
926a117 list-packageconfig-flags.py: fix searching bitbake module failed
1370927 gtk+3: pull forward the gtk+2 hardcoded libtool patch
7034d50 gtk+3: only set GTKIMMODULES_PACKAGES if we have immodules
249dc82 lib/oeqa/utils: qemurunner: fix when runqemu errors out
8a90c8b lttng-ust: Update to version 2.2.1
4c138aa lttng-tools: Update to version 2.2.3
8e85362 util-linux: package mkfs.cramfs and fsck.cramfs
7be46d9 image_types.bbclass: use mkfs.cramfs instead of makecramfs
abfe9af busybox: configure system user id to range from 100 to 999
e38285f packagegroup-self-hosted: Add missing python code
9c0131d build-appliance-image: upgrade to commit 5745e45b18e5099e94b4d5a73bc97dc6d4cdc91f
88c5e10 remove the unnecessary protocol parameters
5c0e6cf builder: register html links and files with Midori
4f6358f packagegroup-self-hosted: integrate midori
c52981c lib/oeqa: move skeletoninit.py where it belongs
c03106d libnfsidmap: Add and modify idmapd.conf
3095ee5 busybox: set default log buffer size to 64 at compile time
5745e45 buildtools-tarball: Add python-pkgutil
d5e860b bitbake: prserv/serv: Multithread the server
06d7664 bitbake: prserv/db: Threading fixes
5fba9d8 classes/testimage: add support for finding tests in other layers
62d1418 classes/testimage: increase default boot timeout
4e62e9c lib/oeqa/runtime: remove some unnecessary checks from setUpModule
a79afb3 linux-yocto/3.4: v3.4.59, mohonpeak
8b36aa4 linux-yocto/3.10: fix ssh login and restore CC_OPTIMIZE_FOR_SIZE
2051e4d midori: use BPN instead of PN
84708a4 bitbake: serv.py: Fix regression from 972bc43e6d5b
4fd453e midori: add version 0.5.5 from meta-gnome
5aa0ece python-docutils: add version 0.11 from meta-oe
fd9a548 libnotify: add version 0.6.0 from meta-gnome
1655c2d vala.bbclass: add class from meta-oe
e35dfbb vala: add version 0.16 from meta-oe
f17404d dpkg: fix configuration issue for mips64
937968b systemd: Upgrade to 206
6950395 kmod: Upgrade to version 14
87f413f bitbake: data_smart: allow removal of multiple words at once with _remove
092190e bitbake: data_smart: use a split/filter/rejoin for _remove
9b05271 local.conf.sample: Add genericx86-64 machine to machine list
201e547 atom-pc: Purge straggling configuration files
6c3a029 meta-yocto-bsp: Add genericx86-64 machine
da6260f bitbake: serv.py: Fix hang when spawned dynamically with bitbake
c2533fb linux-yocto-rt: add qemumips and qemuppc to COMPATIBLE_MACHINES
325ee9b gcc-4.8.inc: Allow lto to be configurable
d638db8 perf: Ensure we general PIC code to avoid build failures
1472b9e bitbake: hob: fixes for image combo box
39052cd bitbake: hob: add event handlers filtering in Hob
8d134e9 bitbake: bitbake/event.py: UIhandler filter should work without a mask
a552fdc lttng-modules: Update to 2.2.1 based release
2942003 README.hardware: Replace atom-pc with genericx86
6edcb6f local.conf.sample: Replace atom-pc with genericx86
9b8c20e layer.conf: Bumping LAYERVERSION_yoctobsp to account for atom-pc
be5b808 meta-yocto-bsp: Purge atom-pc in favor of genericx86
ad88361 meta-yocto-bsp/genericx86: Update kernel, branch, KMACHINE, and SRCREV
36fc237 meta-yocto: change default kernel to 3.10
afda1bc linux-yocto: add bc-native dependency, and move to linux-yocto.inc
4379623 kern-tools: fix patch series to git tree validation
88e5aa6 bc: add bc-native
44c3f72 lib/oeqa/runtime: smart: add checks for smart output
a855180 lib/oeqa/runtime: multilib: fix typo
355a781 u-boot: update to 2013.07
b07d12d gettext: update to upstream version 0.18.3.1
c34bb76 bitbake: command.py: Call updateCache for all states != running
1dff47b read-only-rootfs-hook.sh: check before bind mounting /var/lib
e6e44cf checkroot.sh: check for conflicting configurations
6f25176 eglibc: fix directory cleanup for 2.17
a090406 SPDX:real-time license scanning and SPDX output.
daedc2f classess/testimage: change default test suites
d80a715 python-2.7-manifest: Add missing python-ctypes dependency to python-multiprocessing
6a78e22 image_types.bbclass: replace genext2fs with populate-extfs.sh
2dfc0e1 lib/oeqa: change behaviour for unskippable tests
d7077bc lib/oeqa/runtime: add iptables, cvs and sudoku projects build tests on target
c70bf65 lib/oeqa/utils: targetbuild: Add helper class for building packages on target
5158893 lib/oeqa: make it possible to restart the target
ecb21fd lib/oeqa/runtime: smart: add new smart tests
2c83398 lib/oeqa/utils: decorators: return the decorated method
a9dab56 lib/oeqa/utils: qemurunner: save host IP address
f16cc25 lib/oeqa/utils: new file: httpserver.py useful for serving files over HTTP to the target
db7e484 lib/oeqa/runtime: rpm: add install and erase tests
3d30fd2 lib/oeqa/runtime: add vncserver for target test
5e1b0cb lib/oeqa/runtime: add adjust date and time test
0ecc510 lib/oeqa/runtime: add new scp test
4ea9e94 lib/oeqa/runtime: add new PAM support test
748ddc3 lib/oeqa/runtime: add new skeletoninit test
b91969e lib/oeqa/runtime: add new logrotate test
3b47a0a lib/oeqa/runtime: add a test for ldd
dfd627d lib/oeqa/runtime: add test for perl
ec8aea9 lib/oeqa/runtime: add basic test for x32 images
1915459 connman-gnome: fix DHCP segfault
6056f12 opkg: add missing initialization of conf->exclude_list
b18b210 busybox: enable shared memory logging for systemd
1506d3a ccache: update to upstream version 3.1.9
71abcc9 libpam: add PACKAGECONFIG data concerning audit
0904469 cronie: add PACKAGECONFIG data
39d80f6 e2fsprogs: add populate-extfs.sh
1b21405 e2fsprogs: properly set up extent header in do_write
2cece57 e2fsprogs: only update the icache for ext2_inode
a758b93 e2fsprogs: let debugfs do sparse copy
f1e6091 e2fsprogs: the max length of debugfs argument is too short
66eac2d oe.types: add 'path' type
78012a2 stat: fix the wrong return code
04fd068 gtk-engines: fix build with automake-1.13
2526a17 pulseaudio: Fix up configure options and use gtk+3
764784c alsa-lib: fix function definitions error for mips
26fe976 connman: upgrade to 1.17
12d4ee1 harfbuzz: upgrade to v0.9.19
b55f923 gpgme: update to 1.4.3
26ce13b runqemu-ifup: when tunctl can't be found, say what package builds it
c82255d openssl: avoid NULL pointer dereference in three places
b9f0fc6 openssh: add init.d/sshd status command for LSB compliance
6d15552 at: add init.d/atd status command for LSB compliance
1b12507 sysvinit: add init.d/bootlogd status command for LSB compliance
00f0261 dbus: add init.d/dbus-1 status command for LSB compliance
f032008 nfs-utils: add init.d/nfsserver status command for LSB compliance
4309a9e sysklogd: add init.d/syslog status command for LSB compliance
2b7d2f8 glib-2.0: Specify libiconv when building on uclibc
b3357d5 yocto-bsp: add 3.10 bbappend and update routerstationpro's preferred version
d7571c0 bitbake: data_smart: Add _remove operator
69aab78 bitbake: bitbake: Add ui event handlers filtering
bfab986 bitbake: server/xmlrpc/prserv: Add sane timeout to default xmlrpc server
a03a423 bitbake: process: Improve exit handling and hangs
aa0b237 bitbake: parse: Return IOError when including file with absolute path
503daf2 nativesdk-ca-certificates: prepopulate ca-certificates.crt
2413ff0 ca-certificates: add recipe (version 20130610)
f541b73 xserver-nodm-init: improvements from meta-oe
93ec1e3 classes: Remove references to _remove in function names since this may become a bitbake keyword
3883187 linux-yocto: introduce v3.10
2c572bd gst-plugins-good: fix 3.10 libc-headers build failure
e67ce0d linux-libc-headers: Reinstate scripts-Makefile.headersinst-install-headers-from-sc.patch
1262275 linux-libc-headers: ptrace.h: remove ptrace_peeksiginfo_args
1f18e09 linux-libc-headers: update to v3.10
bfba970 guilt: update to latest git version
3b2b4ee kern-tools: usability, bug fixes and no guilt
5f2170b Add memory resident bitbake script
a50b933 ref-manual, mega-manual: Updated figure for conf/compile details
e901047 yocto-project-qs, adt-manual: Updates to toolchain installer script
648da6d poky.ent: Reset the toolchain variable.
7a655d5 poky.ent: Changed the toolchain variable
3420b3a Makefile: Added new figure for package creation.
6457ad3 ref-manual, mega-manual: New section on package creation
fff996f Makefile: Added figure to the ref-manual and mega-manual
bf91da6 ref-manual, mega-manual: new section on config/compile for expanded build
8870546 ref-manual, mega-manual: Updated figures
bc17391 Makefile: Updated with new figure.
06c124b ref-manual: New section on patching for expanded build process
a0eec0d ref-manual, Makefile: New section on BitBake for expanded build
39ee90b ref-manual: Fixed syntax in the S variable.
59e3953 adt-manual: Removed the gmae stuff
d265515 ref-manual, adt-manual: Minor edits from review.
e7ed0d5 ref-manual: updated the note about what distros we support
29d8f58 ref-manual: minor edit to the PKGDEST variable.
6ccc545 mpc8315e-rdb: Set PREFFERED_VERSION to a version thats known working
b467b99 linux-yocto: switch genericx86 to use common-pc
a88d63b linux-yocto: remove genericx86 support from 3.4
501e1a3 bitbake: prserv/serv: Fix pid file removal
25e410b bitbake: event/msg: Add primitive server side UI log record filtering
9f0f799 bitbake: build.py: create symlink for run.do_xxx scripts
4273aa4 sstate: Fix the relative symlink replacement code
445e1e5 xdg-utils: add runtime dependency on xprop
988a7bf packagegroup-self-hosted: pcmanfm and xdg-utils integration
09562cb recipes-graphics/builder: fix wrong user name
560575b packagegroup-self-hosted: Add the sato icon theme
7daf46f eglibc-options.inc: Fix string options
3a86c39 eglibc.inc: Remove quotation marks from OPTION_EGLIBC_NSSWITCH_FIXED_*
747f5be default-providers: Set the preferred provider for bluez
ae8e3b6 gcc-4.8: Add two patches to deal with cross-canadian build failures
9f67e31 chrpath: Add support for relocating darwin binaries
45de2c2 Drop darwin8/darwin9 usage
2da6d0b bitbake.conf: Work around dev symlink problems on darwin
861b0d5 gcc-common.inc: Drop unused LIBGCCS_VAR variable
5af02f2 gcc-cross.inc: Clean up after merge
8b855ad gcc-cross-canadian: Fold configure-sdk and package-sdk into the main .inc
aa77ec7 gcc-*-runtime.inc: Fold configuration into gcc-runtime.inc
2eb9c1c gcc-*-cross.inc: Fold common configuration into gcc-cross.inc
0dfc8aa gcc-target: Combine gcc-target-configure.inc, gcc-target-package.inc and other common code
deae329 libgcc: Move common code to libgcc.inc
6971023 gcc-runtime: Fold common configuration into gcc-configure-runtime.inc
c553019 gcc-cross-initial: Fold common configuration into gcc-cross-initial.inc
d39770e gcc-cross: Fold common configuration into gcc-cross.inc
5017061 bitbake.conf/classes/gcc: Don't hardcode -nativesdk
b64d6af Revert "nativesdk: inherit relocatable"
a966f30 gcc-cross-canadian: Merge 4.7 and 4.8 recipes into common include
1995053 gcc-cross-canadian-4.8: Add missing dependency on nativesdk-zlib
505634b gcc-cross-canadian-4.8: Allow elfutils to be a configurable dependency
bcdc1cd gcc: Drop gcc-cross4.inc, its pointless now
c63831c gcc-configure-sdk.inc: Don't build target-libgcc
eb99a30 gcc-package-sdk.inc: Allow executable extension to be overridden
f2985f0 gcc-package-sdk.inc: Use relative symlinks in libexec dir
ea220e4 gcc-cross-canadian-4.8: Enable PARALLEL_MAKE
9967b4e libiconv: Extend to nativesdk and support non-linux targets
24b1fe9 gettext: Improve USE_NLS handling for nativesdk/crosssdk/cross-canadian
7f5d712 populate_sdk_base: Allow sdk tar options to be overridden
16e59f3 crosssdk: Construct target_exec_prefix from prefix_nativesdk
694f034 package.bbclass: Fix handling of symlinks in debug packages
199b1a8 mkfontscale: This no longer needs a full libx11, xproto suffices
6bdf025 gnupg: Update to 2.0.21
30f85aa valgrind: Backport patch for eglibc 2.18
d429204 libsdl: Backport xData32 patch for x11 update
0bc5f7c libx11-diet: upgrade to 1.6.1
f0a690d libx11: upgrade to 1.6.1
81f9989 eglibc: Update SRC_URI and fix unpackaged empty dir
e498471 boost: fix build when PARALLEL_MAKE is not set
068069b libsdl2: add recipe
fef7b40 bc: add patch to fix segmentation fault
2d4b261 connman: fix systemd support for connman-* packages.
557d1c7 directfb: add fusion patch for hangs
f1bcf10 directfb: Upgrade to 1.6.3
0c3a3a5 mesa: enable additional drivers for gallium-llvm x86/x86-64
851163a builder: register directories with pcmanfm
07130f7 xf86-video-vesa: remove duplicate xf86driproto from DEPENDS
2bbb01d xf86-video-intel: remove duplicate xf86driproto from DEPENDS
88c568c gst-plugins-good: fix orc enabling via PACKAGECONFIG
58eb62b texinfo: correct dont-depend-on-help2man.patch
78de822 shadow: backport a patch to make newgrp work
26e543c distro_features_check.bbclass: Allow checking of required/conflicting features
db60ee7 package_ipk: Add support for PACKAGE_EXCLUDE
feae7a0 opkg: Add support for excluding packages from the install
e58d0fd package_ipk: Add support for NO_RECOMMENDATIONS
c52820b opkg: Add --no-install-recommends option.
3882788 package_deb: Add support for NO_RECOMMENDATIONS and PACKAGE_EXCLUDE
dc5f6c3 package_deb.bbclass: Use the WORKDIR not SYSROOT for temp files
7ba54b9 package_rpm.bbclass: NO_RECOMMENDATIONS support
33a3eac python-smartpm: Add support to disable installing recommends
479fc7c package_rpm.bbclass: Add support for PACKAGE_EXCLUDE to RPM installs
02c9677 python-smartpm: Add support for excluding package from the install
a6a3ec1 image.bbclass: Add basic support for PACKAGE_EXCLUDE
02521a4 busybox.inc: Avoid error when SYSLOG is not enabled
06f1ebf poky.conf: add Debian 7.1 to SANITY_TESTED_DISTROS
cb6f97b genericx86: disable USB autosuspend
9a3cdfe genericx86: add v86d to machine recommends so Vesa framebuffer works
b2d8f69 SDK_NAME: Change to include image name and tune arch
183e781 upstream_tracking: Update last check dates
c467d84 maintainers: give guilt-native to Bruce
d6dc332 upstream_tracking: add NO_UPDATE_REASON for gawk and pango
136cb5e bitbake: hob: changes to image combo box from image configuration page
8d1e77e bitbake: propertydialog.py : Scrollable windows for long tooltips
b2ff1ad poky.conf: Don't force the addition of extra DISTRO_FEATURES
f6ab927 bitbake: build.py: Provide useful diagnostics when exiting.
fe227a0 genext2fs: fix memory corruption on powerpc
3c1f166 linux-dtb.inc: Fix dtb generation for kernels newer than 3.8
8d6559c coreutils: allow for acl support
6ef217d coreutils: add PACKAGECONFIG info for acl support
005673f initscripts: remove obsolete device_table.txt
059db22 init-install.sh: fix to handle the boot partition correctly
d9e7fba init-install.sh: improve hard drive searching process
a42db11 tslib: update to 1.1
a8d686b default-distrovars.inc: Add 'DISTRO_FEATURES_DEFAULT' variable
1cf5a36 useradd.bbclass: add missing functions to preinst
41696b2 gettext: update to upstream version 0.18.3
f07123e gtk+: update to upstream version 2.24.20
e13de3e glib-2.0: update to upstream version 2.36.4
4bf64ec curl: update to upstream version 7.32.0
1b37bb4 pixman: update to upstream version 0.30.2
2cdfd09 glib-2.0: use trim_version() to get the source directory
8b07505 hello-mod: Add comment for kernel module package naming
0e78c29 Revert "hello-mod: Ensure the produced package name begins with kernel-module-"
dd1f60c texinfo: handle correctly @enumerate specification greater than 10
5cecdfe uclibc: Upgrade to latest on git
29361cd prelink: update to latest cross-prelink
c25fa77 qemuppc: Change default tune to 74xx
7d471bc tune-ppc7400.inc: Add tune file
11293d9 linux-yocto-3.8/meta: enable ALTIVEC for qemuppc
339ecae linux-yocto-3.8/meta: update drm and intel power management settings
6382979 cronie: fix out of tree build
2a48e90 qemu: Fix bit extraction for MTFSFI and MTFSF
752df39 buildhistory-collect-srcrevs: match new buildhistory-diff command line parsing
2a9d9b6 buildhistory-diff: improve command-line handling
c5d2e9c classes/buildhistory: avoid mangling names in dot graphs for images
1e8e243 classes/buildhistory: tag last 3 build revisions
742266d classes/buildhistory: show command line in commit message
855b325 classes/buildhistory: record size of installed package not compressed archive
23575b4 classes/buildhistory: remove default of BUILDHISTORY_CHECKVERBACKWARDS
de96147 cronie: upgrade to 1.4.11
660601b sudo: upgrade to 1.8.7
48bdcd7 maintainers.inc: add entries for libav, x264 and yasm
ff39c79 package_regex.inc: Add regex for atk
1b3f8ac bitbake: hob/retrieveimagedialog: change labels
840a427 bitbake: taskdata: report close matches with NoProvider errors
baaa7ad bitbake: runqueue: report close matches for an invalid task name
6b01c97 texinfo: add perl RDEPENDS and fix up packaging
2b20450 openssh: fix for read-only rootfs
0b66192 irda-utils: fix for read-only rootfs
4485cd9 populate-volatile.sh: use 'cp -a' to avoid potential problem
a7e8f83 runqemu-internal: fix to start X correctly in live images
0123eb9 populate-volatile.sh: don't spawn background process at rootfs time
43c5b5f populate-volatile.sh: use $ROOT_DIR/var/volatile/tmp as TMPDIR
11660bc udev: remove implicit dependency on initscripts
7ab93ec init-live.sh: make $ROOT_MOUNT/media writable when necessary
771f794 device_table-minimal.txt: use user/group names instead of uid/gid
033baea image.bbclass: create device table after package installation
36d622b makedevs: support using user/group names in device table files
ca367d0 wipe-sysroots: don't assume TMPDIR is under BUILDDIR
969f4ed qemu, default-providers: Add mesa as default virtual/egl
8db18b6 cmake.bbclass: Don't use packages from the native build machine
9f9cc59 matchbox-wm: fix icon handling on 64-bit hosts
060df94 libmatchbox: upgrade to 1.11
2176388 xrestop: add dependency on ncurses
0509aad xeyes: add dependency on libxrender
78dfc45 gst-plugins-gl: add dependency on glew
5314bd3 at-spi2-core: add intltool-native dependency
b2568fb nfs-utils: Replace spaces with tabs in shell function
e9d02d5 rpcbind: Replace spaces with tabs in shell function
04a9cff lighttpd: Replace spaces with tabs in shell function
4fc3788 opkg.inc: remove the obsolete POSTLOG variable
9146bb6 cogl: GL/GLX feature cleanup
03b3e4b linux-dtb: Use kernel build system to generate the dtb files
53729ac systemtap: upgrade to 2.3
c8eb33b meta-skeleton: layer.conf Should also have .bbappend in example
ff10f72 meta-skeleton: Add busybox config fragment example
352701f qemu: Skip it for mips64 target
18b9555 dpkg: fix include header caused compile error
70a16ef oe-setup-builddir: substitute ##OEROOT## when using templates
08aabd4 procps: Add cgroup support
9bb0b1c blacklist.bbclass: Avoid blacklist specific handle in base.bbclass
3aabe00 opkg: Fix possible installation of GPLv3 header
7590f69 kernel.bbclass: Correct post(inst|rm) package association
80f6f35 groff: Add GPLv2 version
7677dac groff: Fix License to be GPLv3
0bc564a image.bbclass: Move runtime_mapping_rename to avoid conflict w/ multilib
c8879e2 rpm: Enable compatibility with older RPM packages that have invalid platforms
bef0aab rpm: Change references from RPM_VENDOR_POKY to RPM_VENDOR_OE
5bac0df linux-dtb.inc: Replace /boot/ with /${KERNEL_IMAGEDEST}/
693e6a3 grub_0.97: Fix to correctly ship files under /usr/lib
dbee00c lib/oeqa/runtime: add new systemd tests
1990a6c lib/oeqa/runtime: rework syslog test
0ba78c1 oeqa/utils/qemurunner: get ip old fashioned way and use tcp serial console
bc4b98b classes/testimage: create a link for qemu boot log
32a36db mesa: fix and enable out-of-tree builds
07fdfd6 gst-ffmpeg: set SUMMARY instead of DESCRIPTION
7a07f71 gst-ffmpeg: enable using yasm during build
988f625 gst-ffmpeg: merge in bbappend from meta-oe
4acdab0 libav: add from meta-oe, update and tweak
7071131 x264: add from meta-oe, update and tweak
2d493e9 yasm: add from meta-oe and tweak
0c0ac7d ref-manual: Updates to insane.bbclass and two new variables added.
3565586 ref-manual: Review comments added, new variables added
b7c167a ref-manual: Small wording change to installed-vs-shipped test.
a89b418 ref-manual: Added more QA checks to the insane.bbclass.
e26f253 ref-manual: Review comments to a few variables.
d4ee32a ref-manual: updated the IPK_FEED_URIS variable.
ee96b1b ref-manual: updated LIC_FILES_CHKSUM exmaple
56e0326 dev-manual: udates to toaster section.
9de2165 ref-manual: Edits to the IMAGE_TYPES variable.
0615dc0 dev-manual, ref-manual, yocto-project-qs: Debian support added
e0fa185 yocto-project-qs: Fixed path typo for a download.
198d34d ref-manual: Edits to IMAGE_FSTYPES and IMAGE_TYPES variables.
7f7ede1 ref-manual: Added IMAGE_TYPES variable and updated IMAGE_FSTYPES.
f5c7a1f ref-manual: updates to TARGET_ARCH and KARCH variables.
a3d3c7d bsp-guide: Updated the returned KARCH list for yocto-bsp script.
f8d18fb yocto-project-qs: Updated section on toolchains.
4fc1cd4 ref-manual: Added new variable IPK_FEED_URIS.
61ce3fd ref-manual: Added BINCONFIG_GLOB variable and updated binconfig.bbclass
5056199 ref-manual: Applied review edits to several variable descriptions.
6f77a17 adt-manual: Organized building a toolchain installer into a section.
089fcba ref-manual: Edits and additions to glossary
e5b5b5a ref-manual: Updated the update-alternatives class
203b2f7 ref-manual: Edits to the binconfig.bbclass section.
4888d1e ref-manual, dev-manual: Review edits for Build Directory wording.
d22a390 ref-manual: Edits to OE_BINCONFIG_EXTRA_MANGLE and binconfig.bbclass
f9dc302 ref-manual: Added glossary entry for INHIBIT_DEFAULT_DEPS variable.
43bc43c ref-manual, dev-manual: Fixed links for SERIAL_CONSOLE
68dd731 ref-manual: Added glossary entry for SERIAL_CONSOLES variable.
dc02de3 ref-manual: Added glossary entry for SERIAL_CONSOLES_CHECK variable.
a799158 ref-manual: Added a glossary entry for the EXTENDPKGV variable.
585b2fe ref-manual: Added new glossary entry for PACKAGE_INSTALL variable.
367da91 ref-manual: Added new glossary entry for the PATCHTOOL variable.
af36d33 ref-manual: Added two links for FILESOVERRIDES and OVERRIDES
56b0a9c ref-manual: Added placeholder for BUILDHISTORY_CHECKVERBACKWARDS
de0b92f ref-manual: updated link
f0d805d ref-manual: New variable entries added.
d066247 ref-manual: Changes to the externalsrc.bbclass reference section.
76f5d3f dev-manual: updates to how to use externalsrc.bbclass
97ece25 ref-manual: Updates to the S variable description in the glossary.
2111a92 ref-manual: Added glossary description for OE_BINCONFIG_EXTRA_MANGLE variable.
48335a7 ref-manual: Added new glossary description for RM_OLD_IMAGE.
0bc4ce8 ref-manual: replaced linux_libc-headers with linux-libc-headers
1bedcb0 ref-manual: Edits to the TOPDIR glossary entry.
24dfbba ref-manual: More review edits to closer look section.
8a7e685 ref-manual: Small corrections to the TOPDIR variable description.
2a9ee7a ref-manual: Review comments for closer look at YP dev section
1b056af ref-manual: New COREBASE variable entry added to glossary.
106e89f ref-manual: Updated the TMPDIR description in the glossary.
93c76f4 ref-manual, mega-manual, Makefile: Updates to expanded dev section
4b23d26 ref-manual, mega-manual: New section for images/SDK
17ded75 ref-manual: New variables added to the glossary.
53c70de ref-manual: New glossary entry for DEPLOY_DIR.
40b9e61 ref-manual: Update to note regarding distros supported.
8f865d7 yocto-project-qs: Updated note about the distros supported.
34c68c5 ref-manual: Updated warning note in supported distro section.
3f127a5 ref-manual: Fixed typo
534ec3d ref-manual: New entry for OE_IMPORTS variable added to glossary.
f32e019 Makefile: Corrected figure file name.
d39c2e2 dev-manual: fixed a grammar issue.
194f2c1 ref-manual: Added note about not supporting rolling distros
d1cc158 ref-manual: Removed link to wiki page for tested distros.
5ebb6d8 mega-manual: Added five new figures to the figures folder
b57aa07 Makefile: Added new figures to the TARBALL variables.
affae18 ref-manual: Wording change for Images section.
96ce7dc ref-manual: New section on Package Feeds.
ef0be47 ref-manual: Typos fixed.
8007fef ref-manual: added opengl to distro feature list.
fd381a2 ref-manual: Added a section reference to external toolchain question.
eccd321 dev-manual: Changes "Webhob" to "Toaster"
b44a9ab dev-manual: First draft of webhob section
6987974 yocto-project-qs: Fixed CentOS packages section.
0a074d5 ref-manual: Edits to requirements section.
69b317f ref-manual: Edits to the "source" section of yp dev environment
dc7f6e7 ref-manual: First draft of the "Sources" section added.
f3b97fa ref-manual: Another round of edits from Paul implemented.
cb66b6e ref-manual: Review comments added.
c7ac885 ref-manual: Review comments for config and layer sections.
7c8831b ref-manual: Added new overview figure.
a9e5f08 dev-manual: Fixed some rogue characters.
1adebc0 ref-manual: Added new section for layer input detail.
20b0437 ref-manual: New figure added for Layer section.
25146ba ref-manual: Some additional edits
0345088 ref-manual: New user configuration figure added.
95cdad1 ref-manual: Start of new section on deeper look into dev env.
482943b ref-manual: Added URL for the pre-built buildtools tarball
485b35d documentation: Removed deprecated kernel-manual.
a44fc49 mega-manual.sed: Deleted kernel-manual line.
68752d7 mega-manual.sed: Removed the processing for kernel-manual
d917158 README: Updated the file to reflect current state of documentation
e5dae1b kernel-dev: Fixed link in title page to point to new manual.
4592adb dev-manual: Fixed reference to bug format.
b26af3c yocto-project-qs: Update to Linux Distribution Requirements
6546d5a dev-manual: Removed file.
e3550b4 dev-manual: Changed repo name.
c56c79f ref-manual: New section on building buildtools tarball
222a9cf ref-manual, adt-manual: Added links to SDKMACHINE variable.
b9bf10a ref-manual: Added SDKMACHINE variable description.
16d522b maintainers.inc: reassign maintainers, remove obsolete recipes
5695ec8 checkroot.sh: respect the value of ENABLE_ROOTFS_FSCK
3d1a60a build-appliance-image: upgrade to ac60aa8cf707eec58e2cb51e7c406250d0b43ef1 commit.
bc1996c mkfontscale: upgrade to 1.1.1
8429370 ed: upgrade to 1.9
33f6017 systemtap: fix build failure on host system with dyninst installed
86d8d89 busybox: remove syslog-startup.conf if sysvinit not in DISTRO_FEATURES
290a5ae qemu: pass CFLAGS via ./configure instead of a patch
afd80c0 separatebuilddir: add comments
6305e6a tzdata: upgrade to 2013d
3ca5ffa gst-fluendo-mpegdemux: upgrade to v0.10.72
3a8f3b8 net-tools: upgrade to v1.60-25
60bc7c1 sudo: quote BUILD_CC
d1fd10e bash: reference acl*.m4 from ${S}
5c7b8fc buildhistory: use bb.utils.mkdirhier instead of os.makedirs
560dac6 buildhistory: use package_qa_handle_error for version-going-backwards
712622e bitbake: hob: Add missing file from previous commit
f63e7f4 subversion: Add patch to use neon 0.30
7616bea tiny-init: fix bashism
b6e4989 maintainers.inc: Update ownership of recipes
30a3b12 package_regex.inc: Add/Update regexes
89f42c9 bitbake: depexp: fix typo in variable name
44db452 bitbake: depexp: insert data instead of append/set, for speed
3412a89 bitbake: depexp: make parse() a member function
e76fdac bitbake: hob/imageconfigurationpage: changes to image combobox
4182c53 bitbake: hob/imagedetailspage: add tooltip for save image recipe button
8db39d2 bitbake: hob: set focus on entry name when the name is not correct
ecc56f2 bitbake: cooker: save packages in IMAGE_INSTALL instead of PACKAGE_INSTALL
c83f818 bitbake: hob: implement the "retrieve image dialog" + changes to image combo box
42a4f33 bitbake: hob: retrieve file name of an image
4640fd0 bitbake: hob: changes to image combo box
63157e2 bitbake: hob/bitbake: when an image is saved, it should require an image from layers
08ccfac bitbake: hob: the saved image should be editable
3bef5a7 bitbake: hob: change the name and description for the saveimagedialog
bb8a265 bitbake: hob & bitbake: append a value to a variable from hob throught bitbake
116219c bitbake: hob: make changes in order to permit from UI to edit an image after saving it
564c83b bitbake: hob/bitbake: save the description of a custom image
140744c bitbake: hob/bitbake: create a template (a .bb file) from hob through bitbake
ee4fe5a bitbake: hob: create save image dialog used to save a template
843ef10 bitbake: hob: labelling changes in Hob
adcce84 bitbake: hob/packageslist: change image size label to estimated image size
4c96451 bitbake: hob/advancedsettings: change toolchain labels to sdk labels
62c0f6c man-pages: upgrade to 3.53
d4bb182 util-linux: upgrade to 2.23.2
313b088 mc: upgrade to 4.8.10
2ff2249 list-packageconfig-flags.py: add a script to list all PACKAGECONFIG flags
de17b59 base.bbclass: Fix PACKAGECONFIG usage comment
9b6fd47 kernel.bbclass: fix typo
f26c09e curl: upgrade to 7.31.0
9265340 liburcu: upgrade to 0.7.7
1019742 qt4: add upstream QTBUG-32534 patch for QHttpMultiPart upload corruption
6810129 telepathy-glib: upgrade to v0.20.4
f1a0743 gstreamer1.0-plugins-ugly: upgrade to v1.0.9
c57d05e neon: upgrade to v0.30.0
bd96581 libpng: package new tools into a libpng-tools package
b15101f texinfo: Fix path to perl for scripts
76f8dfe oeqa/utils/qemurunner: fix wrong var in message
3b0be88 btrfs-tools: upgrade to upstream revision.
6301717 mesa: update to 9.1.6
be13994 packagegroup-core-boot: correct runtime dependencies for non-sysvinit system
9e280a1 grub-efi-native: add flex patch to efi-native version also
d5ca5d8 apt-native: fix SRC_URI Checksum for update
54437d8 gdk-pixbuf: upgrade to 2.28.2
a772e06 gstreamer1.0-plugins-bad: upgrade to v1.0.9
e471457 gstreamer1.0-libav: upgrade to v1.0.9
44a4523 gstreamer1.0-plugins-good: upgrade to v1.0.9
0fe3618 gstreamer1.0-plugins-base: upgrade to v1.0.9
b14ac15 gstreamer1.0: upgrade to v1.0.9
9fc51c3 telepathy-idle: upgrade to v0.1.16
6b0b8d8 telepathy-mission-control: upgrade to v5.15.0
6eb01bf libc-package.bbclass: Add armeb architecture to locale_arch_options
60a8903 buildhistory: add a note when committing to buildhistory
2fd2c60 buildtools-tarball: do not export OECORE_NATIVE_SYSROOT
ca365c6 initramfs-framework: fix bashism
ae26fa4 xtscal: fix bashism
3d6ffb7 qtdemo-init: fix bashism
d55d458 scripts/contrib/mkefidisk.sh: fix bashism
4cff3de grep: Add patch for texinfo 5.1
5aff182 gcc-4.8: Fix meta-fsl-arm iperf build issue
82877a9 ofono: Enable test scripts by default
3cf0a54 ofono: Move bluetooth enabling to .inc file
973cfd8 ofono: Add systemd support
176ad0d grub: disable floating ncurses dependency for GPLv2 version
ac60aa8 classes/sanity: fix some grammatical errors in messages
9aba922 classes/sanity: check for suid root command evility
c56e470 mesa: inherit gettext
0224cb2 oe-find-native-sysroot: minor optimization
596a3b6 packagegroup-core-tools-testapps: isolate x11 dependent tools
a326594 u-boot: state the MACHINE when skipping u-boot
900ecba xorg-cf-files: upgrade to 1.0.5
f8781d3 resolvconf: upgrade to 1.74
0f5e881 libgcrypt: upgrade to 1.5.3
bc14915 glew: upgrade to 1.10.0
2a4c430 dpkg: Drop INC_PR as it's unused
c342715 dpkg: upgrade to 1.17.1
46e50e3 shadow: Fix build when DISTRO_FEATURES contains pam, libc-crypt
4813e2d alsa-utils: upgrade to 1.0.27.2
6d5d0c4 alsa-lib: upgrade to v1.0.27.2
8d68f16 apt: Upgrade from 0.9.8.2 to 0.9.9.4
338b0e7 grub_2.00: fix compilation when using flex 2.5.37
e75bbf9 flex: upgrade to 2.5.37
d4e26f9 makedepend: upgrade to 1.0.5
378d8f5 xhost: upgrade to 1.0.6
e97780c xf86-input-evdev: upgrade to 2.8.1
57033f6 xrandr: upgrade to 1.4.1
2dae94b libpciaccess: upgrade to 0.13.2
141e928 libdrm: upgrade to 2.4.46
1913659 powertop: upgrade to 2.4
e4a6815 nasm: upgrade to 2.10.09
8bebf2b git: upgrade to 1.8.3.4
4cb6c0e xf86-video-intel: upgrade to 2.21.13
175cad5 gst-plugins-gl: add explicit dependency on libpng
48763e9 opkg: Bump SRCREV as patch has been applied upstream
f890c73 qemu: remove unused SDL variable
a767e36 bluez5: Add obex-profiles as a PACKAGECONFIG, package obexd separately
159c1c8 avahi: Remove unnecessary runtime dependency on sysvinit-pidof
381566a opkg.inc: remove the obsolete REDIRECT_CMD
519a8ac adt_installer: allow specifying relative target sysroot paths
b8962ed oeqa/runtime/xorg: use the right ps command for xorg test
26d67b9 oeqa/utils/qemurunner: tweak console bootparam and ip command
fce0c99 oeqa/utils/qemurunner: add comment and header
e678a45 oeqa/utils/sshcontrol: increase and log timeout in output
9de0ad4 genericx86: ship all the driver firmware by default
5efc59a genericx86: disable rootless X
4ef3385 genericx86: add fbdev, modesettings and vesa Xorg drivers
e2010da local.conf.sample: add genericx86 reference
2bdb478 genericx86: add new BSP
06feb0e package_regex.inc: Add/Update REGEX and PRSPV variable
8af2565 layer.conf: make the yocto layer dependent on oe-core
8e324c7 poky-lsb: Enable GCC Security flags by default for LSB builds
888d1f3 bitbake: bitbake-worker: import needed signal module
d45486e bitbake: fetch2: fix unpack of .xz files
5472bdc texinfo: Update to 5.1
c291032 matchbox-wm: correct the SRC_URI and add checksums
c313d60 dbus: remove build host test in configure script
16ce101 busybox: move /bin/su to /usr/bin/su to match util-linux and shadow
9ed0a31 shadow: use u-a for su
b336264 util-linux: use u-a for su
55770c0 util-linux: Update for swapoff being a separate binary
82ac6aa libpam: deny all services for the OTHER entries
f02e5a6 libpng : upgrade to 1.6.3
f2b19ad csl-versions.inc: instruct user to check local.conf
683f454 distrodata.bbclass: Include PRSPV variable in upstream version checking
280b9a3 distrodata.bbclass: Remove whitespaces
b099c7b pseudo: Always try to build 32-bit libpseudo when NO32LIBS is set to 0
fe378e1 busybox: Add syslog-init alternative only if SysV in enabled
3b9b8d5 systemd: Remove init.d dir if systemd unit file is present and sysvinit not a distro feature
205ec43 v86d: mark as compatible with all x86, not just qemux86
d363660 iproute2: upgrade to v3.10.0
4b49ae1 syslinux: update to 4.07
7b1fc17 docbook-sgml-dtd-4.1-native: fix recipe name
3248efe docbook-sgml-dtd-3.1-native: fix recipe name
cc94000 lib/oe/terminal.py: add support for MATE desktop terminals
e472443 bluez5: Only install .conf files if found
05241f9 openssl: Fix multilib header conflict - opensslconf.h
d8e4a4b ccache: allow CCACHE_DIR to be overriden
bd1c441 bitbake: bitbake: runqueue: add warning if invalidating invalid task
0e9049a bitbake: hob: sstatemirror is standard also for file://.* regex
e28904e bitbake: hob: changed the split of SSTATE_MIRRORS variable
e605ecf bitbake: providers.py: print a debug message for dynamic pacakge
4df73c7 maintainers.inc: reshuffle maintainers
d1b189f external-sourcery: add missing providers
6784e26 apt: Add Upstream Status to patches
4e7d4aa openssh: Added Upstream Status to openssh-CVE-2011-4327
ec0e7f7 Revert "initrdscripts: mount / as read-only when live-booting"
f629afe classes/rootfs_rpm: implement BAD_RECOMMENDATIONS for RPM
face212 classes/image: ensure BAD_RECOMMENDATIONS supports pre-renamed package names
c1a7436 python-smartpm: add ignore-recommends package flag
e8dfbb0 python-smartpm: fix sometimes reporting no provider instead of conflict
1cbabdb util-linux: fix PACKAGECONFIG options
6911907 strace: Add ptest
2df842d mesa: add PACKAGEs and PACKAGECONFIG for xvmc
904f937 wpa-supplicant: enable required configuration options for connman
ac9d373 videoproto: Update from 2.3.1 to 2.3.2
dd810b8 libuser: Updated from 0.58 to 0.59
36ef2a7 libxxf86dga: Updated from 1.1.3 to 1.1.4
007592a libxrandr: Update from 1.4.0 to 1.4.1
a0487b0 libxfont: Update from 1.4.5 to 1.4.6
7e34865 rpm: remove the obsolete rpm-postinsts.bb
ab2a6a8 qemu: block to build it on mips64 arch
dc03e67 gettext: disable nls when INHIBIT_DEFAULT_DEPS is set
ac98301 gst-plugins-good: add PACKAGECONFIG for jpeg, wavpack, gdkpixbuf, v4l, bzip2, orc
9f734c6 gstreamer1.0-plugins-good: add PACKAGECONFIG for v4l
396d7c5 sudo: add PACKAGECONFIG for zlib
7386dba socat: add PACKAGECONFIG for tcp-wrappers
4154db3 python-imaging: add PACKAGECONFIG for lcms
6d89135 patch: add PACKAGECONFIG for attr
5fd58bb ltp: add acl, openssl dependency
bfd75e4 minicom: add configure option and PACKAGECONFIG for lockdev
331e651 mailx: remove support for autodetection of krb5
f2e84ad grub: add PACKAGECONFIG for grub-mount
bf37590 distcc: add PACKAGECONFIG for popt
9059398 directfb: add PACKAGECONFIG for jpeg2000
2198910 cups: add PACKAGECONFIG for acl
53efb96 ccache: add zlib dependency
9143917 xkeyboard-config: add missing dependency on util-macros
ce17978 gst-plugins-bad: add few more PACKAGECONFIGs
5c4513d test-dependencies: add simple script to detect missing or autoenabled dependencies
462acd2 linux-yocto/3.8: revert .gitignore: do not ignore meta directory
3e2a680 scripts/create-lsb-image: remove
7c1cb16 LSB_Test.sh: add -f option for curl
cb68f65 pulseaudio: upgrade to v4.0
4c58161 ptest: fix Upstream-status
a8f3dae rt-tests: add Upstream-Status for cyclictest patch
a9b98b6 weston: add pango dependency
8b7c6ef sanity.bbclass: mention version when erroring on LCONF_VERSION mismatch
63fd657 sysvinit: pidof add -m option for lsbinitscripts
5929854 lsbinitscripts: remove x permission on functions
fc8cb56 cups: Update to 1.6.3
6e87a6f mklibs-native: Update to 0.1.38
577c42e consolekit: Update to 0.4.6
3e3ab8e useradd.bbclass: fix traceback when inheriting useradd but not setting USERADD_PARAM or GROUPADD_PARAM
ee9bdf9 nss:fix postinst failed at rootfs time
fcfee5c readline: fix importing readline in python with probably escape sequence output
aa7bc3c run-postinsts: add more logging to the log file to make things clearer
49cd268 run-postinsts: fix comment
0a3d3b6 xinput-calibrator: move it from meta-oe to oe-core
054b932 package.bbclass: avoid packing debug sources from other packages
3f7e8ad bash: Add ptest
d921c0a connman: upgrade to v1.16
4b5a21d elfutils: fix backends' Makefile.am
a55fa3c dmidecode: add aarch64 and arm to compatible host
b71aa97 cpan.bbclass: Fail unless Makefile.PL generates Makefile
6bb09da dbus: add -o option into start-stop-daemon arguments
dd8865a gcc-4.8: fix compiling GCC when /usr/lib/libstdc++.so is present
67864ca systemd: Remove systemd_unitdir if systemd is not in distro features
c39bd69 glew: Update GLEW version number in autotools patch
4695231 mesa: add Upstream-Status
3522607 cups: add PACKAGECONFIG for avahi
3d6f866 subversion: add PACKAGECONFIG for sasl
813bf62 pulseaudio: add PACKAGECONFIG for jack
9cfd8e5 gst-plugins-ugly: add PACKAGECONFIG for x264, cdio, dvdread
7e7680b gst-plugins-good: add PACKAGECONFIG for jack
1d5d931 boot-directdisk: use awk instead of echo -ne for dash compatibility
1b01e39 remake: fix insufficient gettext dependency
f8baa35 mesa: use LLVM 3.3 by default
aaca675 wget: backport fixes for documentation build errors
6d42c27 extrausers.bbclass: add a new bbclass
50d2548 useradd.bbclass: add a new base class and code refactor
18f39e5 kmod: Add ptest
bbab6e7 directfb: don't patch pkg-config files
de52f89 python: Add ptest
4f9c5a0 mesa: upgrade to 9.1.5
248bb31 systemd: remove unneeded modprobe.rules
784d7b7 libpam: add a new 'nullok_secure' option support to pam_unix
7af92f8 initrdscripts: mount / as read-only when live-booting
e6f96e2 tremor: add a patch to build with arm thumb
b23423c docbook-sgml-dtd-4.5-native.bb: Add real PV inside the recipe
ba0640a lttng-modules: Append _git to recipe name and add GIT revision to PV variable
3c0300b kmod:add GIT revision to PV variable
a726633 adt_installer_internal: fix spelling error
0d8ee88 pigz: Fix typo in ALTERNATIVES line
31e6eee poky-tiny.conf: blacklist core-image-weston option
142d40e local.conf.sample.extended: add example for EXTRA_USERS_PARAMS
f23a47f curl: add upstream status to patch
8ebc333 pulseaudio: Removed avahi forced dependency
7156f30 scripts/contrib/*: fix arithmetic bashism
5a170bd linux-yocto/3.8: restore qemumips64 SRCREV
f7f9f16 linux-yocto/3.4: mips: fix gcc 4.8 compilation
d0947c9 linux-yocto/3.8: update META srcrev
f1f5f7d tar: remove an erroneous patch
16b411e rpm-postinsts.bb: Fix typo
8b57730 run-postinsts: Fix typo
681b605 eglibc-2.18: Update to latest snapshot
1c0c480 eglibc-2.18: Remove unused patches
095b1ef valgrind: added perl dependency
eb9b8a0 pulseaudio: Added cli-protocol-unix to pulseaudio-misc
eff0b05 bluez5: new package for v5.7
a527fe2 bluez4: conflicts with bluez5
37784b9 iproute2: Fix alternative link for ip command
26207e2 uclibc: Build ldd/ldcondif/iconv for main uclibc recipe
f582398 buildtools-tarball: testimage needs the mmap python-module
e23d5a0 xuser-account: add xuser to disk group
565956f udev-extraconf: allow users in disk group to write vfat filesystem
8db3642 populate_sdk_base.bbclass: use new perm option for find
16e1e1f oprofile: add Upstream-Status for several patches
21937da tcl: fix typo of upstream status in patch file
9d219d8 dbus-ptest: Disable python module check
fb58029 gcc-4.8: Fix on-device SDK C++ runtime issue
8f91b1c Upstream-Status: Correct capitalization
77742dd classes/insane: allow libdir QA check to be skipped using INSANE_SKIP
20d7b27 classes/insane: fix regression in libdir QA regex
314b92a wpa-supplicant: backport patch to fix dbus interface for autoscan functionality
e9b5ef1 busybox: fix ip reference in simple.script
3cef129 terminal.bbclass: Fix BB_RUNFMT processing
4a6f939 sanity.bbclass: Update gcc sanity check
344cf64 gdb: add PACKAGECONFIG for Python support
1820d33 qt-mobility: tighten up config generation and use PACKAGECONFIG
aef74ef dpkg: backport a patch to support mipsn32el and mips64el
3dee534 lib/oeqa: fix dependecy check
656a8b9 testimage.bbclass, lib/oeqa: add headers and comments
655da29 classes/testimage.bbclass: use a copy of rootfs for tests
2079a30 lib/oeqa/runtime: add tests for syslog and df
7f57d3c lib/oeqa/oetest.py: provide a ps command for all tests
b69f91f lib/oeqa/runtime/multilib.py: use readelf instead of file
9c4a02b testimage.bbclass, lib/oeqa/utils/qemurunner.py: make boot timeout configurable and increase it
1552f33 lib/oeqa/utils/sshcontrol.py: fix passing command to subprocess
46d3bb5 lib/oeqa/runtime/dmesg.py: whitelist dmesg message for systemd net interface name
8a971ae initscripts: Update to 9.48
206c3c7 mc: upgrade to 4.8.9
84b62e2 libidn: upgrade to 1.28
a8cd0fc core-image-lsb.bb: add 'package-management' to IMAGE_FEATURES
74e4037 yocto-kernel: make BBLAYERS parsing more robust
46818e5 package_regex.inc: Changes in regexes
06ae127 distrodata.bbaclass: change in git and svn package reporting
5c9281e qemu: QEMU fix libtool usage
caa4130 ncurses: add xterm-256color to terminfo-base
88ff9e0 pciutils: Add kmod dependency
6cf5b4b boost: backport glibc patch for new eglibc
a6c5549 dbus: upgrade to 1.6.10
0ef252e ethtool: add ptest
334a22f xdg-utils: upgrade to 1.1.0-rc1
02d5ea6 qt4-x11-free: fix post-processing of QtWebKit.pc
c540044 nss: fix incorrect shebang line of perl script
912efc0 nss: create checksum files for the nss libraries
e448ef6 nss: add version 3.15.1
9781b0d packagegroup-core-lsb: add nss for LSB library check
8080558 nspr: add native version
788f176 alsa-state: Provide an empty asound.conf by default
01d9d1b powertop: fix update-alternatives link
c1b0fae rxvt-unicode: Check existence of acinclude.m4
7d013f3 cogl-1.0: make building cogl-pango optional
9b6011c cogl-1.0: put each library into its own package
63645af package_rpm.bbclass: remove xx.spec before doing rpmbuild xx.src.rpm
2758fce libogg: upgrade to 1.3.1
b52d2bb boot-directdisk: allow specifying custom MBR disk signature
f9625c2 packagegroup-core-tools-profile: exclude systemtap and valgrind for mips64
f8bee41 xserver-xorg: extend packageconfig and dependencies
5d17796 diffutils: Upgrade to v3.3
5f86341 iputils: Upgrade to v20121221
db9775f pango: remove pango-module-basic-x RRECOMMENDS
a632299 meta-yocto-bsp: update reference board SRCREVs
723ab4a security_flags: Add addition recipes to the non pie list
1d10dc3 kconfig-frontends: Update to 3.10
73ebab2 tzcode-native: Update to 2013d
7f7fb8b cmake: Update to 2.8.11.2
c6d14c6 man-pages: Update to 3.52
b5c49e6 util-linux: Use PACKAGECONFIG to control pam and system config options
b472553 glib-2.0: add -march=i486 into CFLAGS automatically when needed.
258b8a2 package_deb.bbclass: make DESCRIPTION support newline
33cd81e package_ipk.bbclass: make DESCRIPTION support newline
477b2c9 package_rpm.bbclass: make DESCRIPTION support newline
29e8106 eglibc: Update 2.18 recipes to fix ppc/e500 failures
10cdbf1 qt4: add upstream QTBUG-31579 patch to fix polyline drawing regression
c44cb07 pango: drop unexplainable elfutils dependency
9190cfd gtkdoc: set the default docdir to ${S}, not ${B}
4b0ab26 libxml2: Add ptest
d8cba33 populate_sdk_base.bbclass: allow $OECORE_NATIVE_SYSROOT in sdk_env_script
09fea03 cmake: fix configure error if system Qt installation is broken
89a8dcc initscripts: add dmesg file to /var/log
5b44949 initscripts: overwrite default hostname.sh
6e08d01 qemu: use PACKAGECONFIG to address libaio/attr/libcap dependencies
3f9224c eglibc-locale: add missing dependency on virtual/${TARGET_PREFIX}binutils
c15d990 systemtap: inherit pkgconfig
c491477 libpam: inherit pkgconfig
195e098 quota: inherit pkgconfig
38639bd taglib: add missing dependency on zlib
70c1801 gst-plugins-base: add missing dependency on glib-2.0-native
0808adb gst-plugins-bad: inherit gsettings
9cc5201 (lib)telepathy*: add missing dependency on libxslt-native
4cabd89 usbutils: Upgrade to v007
88846af apr-util: Upgrade to v1.5.2
1f917bc apr: Upgrade to v1.4.8
2f0b5c1 libdmx: Upgrade to v1.1.3
19be8b3 ed: Upgrade to v1.8
c3df564 rxvt-unicode: Upgrade to v9.18
1f5bd76 elfutils: Upgrade to v0.155
749fcaf shutdown-desktop: give entire path in Exec field
ca48b14 xserver-nodm-init: remove xuser creation, RDEPEND on xuser-account
95ce63d connman: remove xuser creation, RDEPEND on xuser-account
79e948b xuser-account: create separate recipe for xuser creation
f638364 sysvinit: allow users in shutdown group to perform halt/reboot
1cf75b5 packagegroup-core-basic: remove libpam
da2f4a0 linux-yocto/3.4: update to v3.4.52
58002d1 ethtool: Updated from 3.9 to 3.10
22ee5af libxv: Updated from 1.0.8 to 1.0.9
eac1500 libxrender: Updated from 0.9.7 to 0.9.8
397845d libgpg-error: Updated from 1.11 to 1.12
eb5b86d libxi: Update from 1.7.1 to 1.7.2
8ec12b3 libxvmc: Update from 1.0.7 to 1.0.8
2805608 augeas: Update from 1.0.0 to 1.1.0
528bcdb libassuan: Updated from 2.1.0 to 2.1.1
5c30746 packagegroup-core-lsb: set COMPATIBLE_HOST to mips64
22ff68e webkit: set COMPATIBLE_HOST for mips64
28d8cbe e2fsprogs: upgrade to 1.42.8
2c4c06d glib-2.0: upgrade to 2.36.3
92d9ce3 populate_sdk_base: fix bashism
f6538c3 scripts/runqemu: Add support for 'qemumicroblaze' machine
4156338 scripts/runqemu: Add support for 'qemuzynq' machine
ce1638c systemd: Don't enable systemd services when native.
4285e85 lib/oeqa/runtime: add gcc test
06d6f9d lib/oeqa/runtime: image sanity tests
54f3848 lib/oeqa/utils/decorators.py: decorators for test methods
88a6eb8 lib/oeqa/utils/qemurunner.py: class to handle qemu instance
962c0a1 lib/oeqa/utils/oeqemuconsole.py: handle qemu serial console connection
ac341af lib/oeqa/utils/sshcontrol.py: helper module for running remote commands
12bf626 lib/oeqa/oetest.py: base module for all runtime unittests
1328d49 classes/testimage.bbclass: new class for image tests
dc86293 bitbake: HOB:Proper handle of SIGINT
1defbaf qt4: Take PV increase opportunity to drop PR
131e5e7 busybox: upgrade to stable 1.21.1
0463e5c qt4: upgrade to 4.8.5
262fa7e resolvconf: Update to 1.72
94eee2e remake: Update to latest 3.82_dbg-0.9 Tag
d7dbb52 swabber: Update to latest head
0b50730 dtc: Update to 1.4.0 Git Tag
2193241 boost: Update to 1.54
830e890 help2man: Update to 1.43.3
c81855b util-linux: disable runuser by default since it depends on PAM
8846267 packagegroup-core-basic: Only build libpam if it's enabled
5ad6081 distro/conf: Drop libc-libm-big
10b5910 Upstream_tracking: mark package as not upgradable due to PRS issues
07af0ec busybox.bbappend: upgrade to 1.21.1
cb6ce45 poky.conf: move libdir QA check to WARN_QA
f8c8c7d yocto-kernel: enforce exact match for BBLAYERS
04b36b1 yocto-bsp: filter out 'layer' from arch list
509ca80 tcmode-default: Pin eglibc to 2.18
5ad82c3 distro/conf: Drop libc-libm-big
12914a7 eglibc: Drop libc-libm-big
67c35e1 eglibc: Add 2.18 recipes
7450ff2 binutils: Backport emulation template fixes
470fe27 qt4: disable qmeegographicssystemhelper
4d326e5 sstate.bbclass: Add an extra check for sstate_mirrors
34e5f5d mesa: remove drirc file
4ec1014 mesa: bump SRCREV in git recipe, refresh patches
52892d6 mesa: fix pipe_loader_sw build without libx11
e4103bc mesa: Improve gallium PACKAGECONFIG options
efaa5ab layer.conf: Bumping LAYERVERSION_core
4770cff qt-mobility: fix build in the absence of xvideo
f7d5461 babeltrace: Update to 1.1.1 based release
30ff2e3 lttng-ust: Update to 2.2.0 based release
a3cf4a5 lttng-modules: Update to 2.2.0 based release
2615000 lttng-tools: Update to 2.2.0 based release
64745c2 insane.bbclass: Added QA warning for shipping /usr/share/info/dir
dc54356 packagegroups: Update for split mc packages
f4552c8 mc: Don't remove libdir and split helpers into packages
b9056fa xf86-video-modesetting: upgrade to 0.8.0
2f32ef9 classes/insane: fix libdir check regexes
fc82975 mkelfimage: switch to git repository
36afee1 apr_cv_mutex_recursive=yes added to apr_1.4.6.bb to make rosnodes work
8e10031 udev-extraconf: blacklist /dev/dm-*
cb53421 busybox: fix the on-target upgrade problem
e695d41 init-ifupdown: set kernel parameters firstly
8a186a6 bitbake: hob: save button from settings called a nonexisting method
eaa5df3 local.conf.sample.extended: Add example line for enabling security flags
dae98ef sysstat: backport a patch to fix a parallel building error
61bfb25 ghostscript: fix patch failure with some versions of patch
74a1426 classes/package: print command output when commands fail
209f92b rpm: add wrapper for debugedit executable
6c290e4 security_flags: Add the compiler and linker flags that enhance security
85f0cf9 qt4e.bbclass: export OE_QMAKE_QT_CONFIG
0214dba udev: Add RRECOMMENDS for udev-cache to enable the cache
1bcc7da packagegroup-core-basic: remove hardcode udev
8518630 TmuxRunning: handle multi-word commands
c9c70d6 terminal: Run command using a wrapper script
fba5c25 lttng-modules: allow building without tracepoints enabled in kernel
891ee9d webkit-gtk: add aarch64 support
23e87bd python-native: add python-codecs-native to RPROVIDES
61d051c connman: Set the VPN client program paths
889b451 bison: Delete unused patch
0ab7cfc uclibc: Remove 0.9.33 recipes
0188270 uclibc: Update to latest git/master version
c0d2328 linux-firmware: fix ralink license file name
a5a9403 linux-firmware: be consistent with license package naming
785b49e lib/oe/lsb.py: fall back to /etc/os-release for host distro ID
2ed1c03 base-files: remove the unnecessary /media/xxx directories
28786ec udev-cache: take a read-only rootfs into consideration
6ecba81 openssh: fix initscript restart command
8fc0d26 seperatebuilddir: cogl and clutter build out of tree
5da33c5 clutter: fix out-of-tree builds
73af7e2 gpgme: Updated from 1.4.1 to 1.4.2
70a2647 apt: Updated from 0.9.8.1 to 0.9.8.2
fcea0bb libxcb: Updated from 1.9 to 1.9.1
bffebe6 libxfixes: Updated from 5.0 to 5.0.1
f2f5809 libxxf86vm: Updated from 1.1.2 to 1.1.3
9aca5ce libxtst: Updated from 1.2.1 to 1.2.2
2b91ec9 libxv: Updated from 1.0.7 to 1.0.8
986de23 libxres: Updated from 1.0.6 to 1.0.7
abe17ce libxau: Updated from 1.0.7 to 1.0.8
cef8b87 libxinerama: Updated from 1.1.2 to 1.1.3
0f8fe0e libxcursor: Update from 1.1.13 to 1.1.14
e10e7d1 libxext: Update from 1.3.1 to 1.3.2
a662fa1 packagegroup-self-hosted: add python-git
bb06593 buildtools-tarball: add python-git
d70439a python-git: add recipe
8146519 python-gitdb: add recipe
3756452 python-smmap: add recipe
2e58f7d python-async: add recipe
80b2634 classes/insane: remove la2 check which no longer exists from ERROR_QA
c4c6e58 Disable build qt related packagegroups on mips64 with 64 bits userspace
c1df518 poky.conf: fix WARN_QA and ERROR_QA settings
48cb181 poky.conf: remove la2 check which no longer exists from ERROR_QA
67f76e6 python-multiprocessing: adding runtime dependencies
524572a python-argparse: adding runtime dependency on python-codecs
29e5599 init-live.sh: try to make a union mount when possible
76ccbba initrdscripts: unionfs cleanup
44b3c8d qt4*.bbclass: disable build qt on mips64 with 64 bits userspace
624160a bitbake: cookerdata: Improve message if BBPATH is unset and bblayers.conf not found
d3ce916 packagedata: Show error when trying to change PE/PV/PR from runtime/pkgdata
1cc0288 package: Ensure we iterate all the pool objects
09a4af2 tcmode-default: Set GCC 4.8 as default
3030bbd gcc-4.8: Fix ICE on ppc/spe targets
9b007f6 sanity.bbclass: Check for the known broken version of make
f744edc systemd: Ensure that we mount devtmpfs
b09bc24 autotools.bbclass: force copy Makefile.in.in to ${S}/po/
c62b1a3 useradd.bbclass: Add members to a group
1f7647c shadow-native: Add --root option in groupmems
b50d97c adt_installer_internal:add sudo when permission deny on installation directory
321134f adt_installer_internal:fix perl lib version mismatch
8b45f23 adt_installer_internal: fix perl modules relocated failed on older distributions
3907ed5 bzip2: Add ptest
d5d6114 groff: correct the install path of man.local
0450c31 image_types.bbclass: set 'filetype' ext4 feature
e474fd9 lsbtest: sync test suite packages version
171302f boost: Limit PARALLEL_MAKE by -j 64
aa8eba7 linux-yocto-dev: bump version to 3.10+
3fac79f linux-yocto/3.4: ltsi: sync to LTSI commit 5f05247ed
173a02c linux-yocto/3.8: add USB screen configuration and net sched options
c48b822 linux-yocto/3.4: allow kernel feature _appends to be overriden
d85a997 udev: only use devtmpfs for udev
b74e632 alsa-tools: Pass ACLOCAL_FLAGS so aclocal uses the right params
5e77e09 dbus-ptest: Install missing files
9106cfb libx11: enable Xcms by default
3371255 init-live.sh: fix automount failed occasionally
0422035 sanity.bbclass: Fix COREBASE sanity tests
10e44f1 bitbake: bitbake: python funcname can not include special character @
4852c4f bitbake: bitbake: adding a new comment should be placed on a new line
4707a74 sanity.bbclass: Add check for @ character in build directory name
8e9501f populate_sdk_base, adt_installer: abort install if path contains spaces
e3e9cf0 gdk-pixbuf: add a wrapper for gdk-pixbuf-pixdata
4401123 cleanup-workdir: fix typo
81fe6e4 base-files: create /usr/lib/locale dir
fb52e2f ghostscript: upgrade to 9.07
1f57651 chrpath: Fix SRC_URI to correct location
051eb15 buildtools-tarball: Add nativesdk-make
316e242 make: Fix second part of bug Savannah 30612
67d95bf busybox: Add ptest
eea24c6 buildtools-tarball: Change the way the SDK is sanitized
216e4dc gcc: When cross compiling a target gcc, target flags may be used on the host
65385d4 systemtap: Systemtap can not be build w -O0 optimization
23a86b2 linux-firmware: Package some iwlwifi firmware separately
b0892c9 gst-plugins-bad: element selection rationalisation
26c858a gst-plugins-base: element selection rationalisation
3a6f639 gst-plugins-bad: tremor was moved from here to -base
4a7d063 gst-plugins-bad: use correct option when enabling librsvg
a0d2cde bash ptest: Sed away the Makefile dependency to remove error messages.
f8c32f7 qt-mobility: remove /usr/lib from ld rpath-link option
1bbbf36 libbsd: Add recipes for libbsd - utility functions from BSD systems
f9eb803 gst-ffmpeg: fix libav config error for ppc
44c5b77 systemctl: Support all unit types in the directives.
5355311 ltp: update to new release
9d68aa5 udev-cache: fix to use udev-cache correctly
763ebb6 libpam: check if PAM is enabled when building
105cbfa libpam: fix whitespace in shell function
bac191a logrotate: fix for CVE-2011-1548
b8043be rt-tests: fix error check in hackbench
3d871dc libproxy_0.4.7 do_unpack failed of qemuppc_world
861db95 core-image-weston: add clutter examples
566f9c0 clutter: add Wayland support
40ce8cf cogl: add Wayland support
d02b545 weston: move mtdev dependency to the DRM backend, where it belongs
ee9d396 mesa: remove a redundant do_install tweak
9e28afb weston: add patches to make weston-launch work
fb6f0d4 weston-init: fix a typo in a user-visible message
6d5d49e python-pygtk: fix parallel compile issue
a0102b3 python-pygobject: disable parallel install
1ff6828 openjade-native: fix build failure
977fb9a tinylogin: remove recipe
8013f6e mingetty: lower the ALTERNATIVE_PRIORITY
d704b03 packagegroup-core-basic: set the default login manager
c31537a packagegroup-core-boot: use busybox as the default login manager
680ff55 busybox: add the ability to split the busybox binary
72d5bbe busybox: enable to list suid and non-suid app configs
3d230db busybox: add a config fragment to enable login utilities
7264837 busybox: add support for CONFIG_FEATURE_INDIVIDUAL
6984890 busybox: remove the postinst part of the recipe
87da290 sanity.bbclass: Various improvements
a355f13 sanity.bbclass: Drop horrible obsolete minversion hack
de6657e Sync with PRINC removal from meta-intel
edcbb79 ref-manual: Added note about issues on supported distros
95c46ae Makefile: Added figure cross-development-toolchains.png
07c9405 ref-manual: New section on cross-development toolchains added.
26a9dd8 dev-manual: Updates to the "Cross-Development Toolchain" term.
a4218c8 dev-manual: partial update to cross-development toolchain definition.
54884c0 psplash: Drop PRINC from bbappend
89023b7 yocto-bsp: Drop PRINC usage
d54e708 psplash: Bump PR to allow removal of PRINC from meta-yocto
302a039 strace: add configure options libaio and acl
4e5ba5f strace: update to 4.8
011608a bitbake: data_smart: Fix bug with overrides and weak default values
353212a bitbake: data_smart: Ensure variable flags are accounted for in config data hash
17b1507 base.bbclass: Ensure finalised data is displayed in build banner
ed4a919 qt4: add eglibc-gconv-utf-16 to QtCore RRECOMMENDS when using glibc
78bcf87 bitbake: hob: save variables in conf/ directory
f324695 bitbake: hob: replace the init cooker with reset in order to keep the history
71520c5 bitbake: bitbake: call the initConfiguration when reparsing
d3027b3 tcl: fix unit test boundary year issue
a58a1e6 tcl: remove hardcoded library install path
c5a5d23 bitbake: cooker: Ensure configuration matches variable tracking state
db6bd11 bitbake: build.py: Cleanup data store references
2a4d076 qemu: fix segfault in Xorg when not using kvm
7d02de8 bitbake: bitbake: remove the function for reparse because it does nothing
3a74f25 bitbake: Correct a typo
d1ad98b bitbake: Allow checksums to be used for files retrieved using SFTP
77264ca bitbake: hob: check if imageconfiguration page has the attribute 'warnings_bar'
01f9d1b bitbake: bitbake & hob: modify some commands and call them from hob
64eda3e bitbake: hob: remove the rest of the old template functionality
801fbe5 bitbake: fetch2: Enhance error message for BB_NO_NETWORK
5af68d4 bitbake: runqueue/build: Add recideptask flag
de1841d utility-tasks/distrodata: Add recideptask flag for fetchall/checkuriall
827400f classes/buildhistory: fix error when no packages are installed
e04e6da bdwgc-native: Add missing pkgconfig DEPENDS
8e8de62 classes/package_tar: fix file ownership within tarballs
56ff6931 wget: Add missing DEPENDS on zlib
be58154 autogen-native: fix build failure on overloaded hosts
cc53a1a libpam: Fix for CVE-2010-4708
3a06eb6 procps: fix that top will quit after cpu offline
590010a core-image-weston: add weston-examples to the image
5722129 systemd-udevd: fix invoking init script failed
fe77047 linux-yocto/3.8: fix gcc 4.8 ARM boot issues
2bdfdfe sato-screenshot: bump SRCREV for linkage fixes
e8581c4 matchbox-panel: bump SRCREV for linkage fixes
6038a40 gcc-4.8: Backport fix for ICE triggered in pixman
c91deb4 pseudo: drop version 1.4.5 recipe
692b751 opkg: put libopkg header files into libopkg-dev
ea42175 opkg: fix header installation for libopkg
bd30668 oe-buildenv-internal: Ensure error messages got to stderr
609a367 alsa-lib: check if wordexp is supported in libc
a40435e alsa-lib: Change function type to "static __inline__"
c281cd1 python: Add nativesdk wrapper to handle terminfo
2631eff utils.bbclass: Tweak create_wrapper
f6f5eed classes/externalsrc: enable global inherit and simplify usage
1dd643b licences: Add SGI license
6d1f9d5 atk: inherit gnomebase
37d244d libcap: do not pass CFLAGS to gcc
3870250 directfb:filter out -fno-omit-frame-pointer option on x86 arch
a83d489 openssh: obey 'tcp-wrappers' PACKAGECONFIG
5825612 openssh: fix a unaligned memory access issue
7346d89 openssl: Add fix for cipher des-ede3-cfb1
f74a631 bind: backport six CVE patches
e1baa0d archiver.bbclass: check if package contains a copyleft license
e5615e7 webkit-gtk: Support build on mips64
d807f7a dhcp: drop noattrmode.patch
cb16810 dhcp: drop fixincludes.patch
64ae544 gtk+3: fix repainting under Weston 1.1
1f0a4d7 gtk+3: clean up libtool link creation to avoid errors in configure log
7eab456 gtk+3: split into .bb/.inc
b10267f gtk+3: register GSetting schemas
16bb7ed gtk+: remove spurious libgcrypt dependency
cb591b2 gtk+3: add dependencies for gtk+3-demo
7e9fd6c gtk+3: respect x11 and wayland DISTRO_FEATURES
03aa2eb gtk+3: explicitly disable introspection
d5abb65 gtk+3: update to 3.8.2
91c347d at-spi2: add -core and -atk, for GTK+ 3.8
7f58f4c local.conf.sample: use ?= to assign BB_ENV_EXTRAWHITE variables
baff263 bitbake: bitbake: read BBSERVER environement for remote server
f5cadbe bitbake: knotty, bitbake: add option to terminate a remote server
3ea9d64 bitbake: knotty, xmlrpc: add observer-only mode
194b395 distrodata.bbclass: fix syntax errors
fee1032 dbus-wait: Upgrade to fix typo
7abcaf1 oe-buildenv-internal: Fix exit verses return
e023620 bitbake: utils: Fix multiprocessing pool reference
1e55bc4 dev-manual: Added definition for the term "Meta-Toolchain"
6ea2dd5 dev-manual: Updates to the term "Cross-Development Toolchain"
ffcb7c6 ref-manual: fixed caps problem with the word "numberS"
b38ed97 ref-manual: Fixed grammar in PREFERRED_VERSION glossary item.
cb427a6 dev-manual: fixed formatting of PREFERRED_PROVIDER variable.
1ff4961 ref-manual: Wayland section review draft
31c52bb ref-manual: updates to RDEPENDS and RM_WORK_EXLUDE variables.
69b36d1 ref-manual: Updates to the RDEPENDS variable entry.
d67aecf dev-manual: Fixed order for variables in ptest section.
4fec8e3 ref-manual: New glossary entry for the FILESOVERRIDES variable created.
5e32769 ref-manual: edits to FILESPATH and FILESEXTRAPATHS variables.
a8e62dd ref-manual: Added variable description for OVERRIDES.
eacc13a dev-manual: Updated reference to where licenses are kept
441c699 bitbake: compat/server/utils: Jettison pre python 2.7.3 workarounds
6c05834 bitbake: runqueue: Improve handling of failing setscene tasks with hard dependencies
f3e8982 documentation.conf: Drop variables for class that no longer exists in OE-Core
4aebdec bitbake: xmlrpc: removes the event servers controller
07ba793 qt4: set QMAKE_COMPILER to gcc in mkspec
33c762b qt4: disable gdb_dwarf_index
53841ce classes/conf: Add eventmasks for event handlers
98abb11 scripts/buildenv-internal/sanity: Update to python 2.7.3 as a minimum
2cc601c sanity: Drop pseudo test, now unneeded
bd07f35 scripts/bitbake: Drop horrible double execution mess
1920ba2 sanity.conf: Update minimum bitbake version requirement to 1.19.1 for bitbake-worker
ec7d935 scripts/oe-buildenv-internal bitbake: Migrate python version checks
cfbd13f scripts/bitbake sanity.bbclass: Migrate tests for git and tar versions
9d18a29 bitbake.conf: Add extra fakeroot parameters
5aa5fc4 bitbake: bitbake: Add event mask flag support
542d6a8 bitbake: bitbake: Update version to 1.19.1
8408f3d bitbake: bitbake: Bump minimum python version to 2.7.3
5ebd9bf bitbake: prserv: Adapt autostart to bitbake-worker
efb877b bitbake: runqueue: Spawn a separate worker for fakeroot tasks
0ee02ca bitbake: runqueue: Abstract the start and teardown worker functions
026c94b bitbake: runqueue: Move the bitbake-worker execution to a higher level
d0f0e5d bitbake: runqueue: Split runqueue to use bitbake-worker
cd7b7de bitbake: fetch2: Fix AUTOINC handling
534c4d0 buildtools-tarball: Add nativesdk-ncurses-terminfo-base
8d3397b python: -Wformat is needed by gcc 4.8
f6189cd mesa: introduce gallium-llvmpipe PACKAGECONFIG
f7db60e mesa: use PACKAGESPLITFUNCS
f98b968 mesa: introduce openvg PACKAGECONFIG
bcf3875 mesa: introduce gallium PACKAGECONFIG
6d2c16d mesa: remove more .la files
caf3df2 mesa: merge mesa-git.inc to mesa_git.bb
1027f98 mesa: move LIC_FILES_CHKSUM to .inc
e6ca54c mesa: use PACKAGECONFIG instead of DISTRO_FEATURES to define EGL_PLATFORMS
85cdc71 mesa: introduce PACKAGECONFIG for dri
6efefdf mesa: merge mesa-common.inc to mesa.inc
eba5d15 cogl: make cogl be able to build on ARM arch
23fd4d2 systemd: update install-quotaon-once.patch
04af378 classes/qmake_base: allow parallel make
9bb1ba4 qt: update qmake2 class to export qconfig.pri mkspec
4505618 gnome-doc-utils: drop the usage of create_wrapper
ec0b81a createrepo: drop the usage of create_wrapper
81c3428 python-native: add nativepython symlink
c88d417 dpkg: drop the usage of create_wrapper
30d3c8d scripts/contrib/build-perf-test.sh: fix passing arguments
b7308e7 scripts/contrib/build-perf-test.sh: add branch name and sizes to results
9d39cdc site: add more alignment values for at-spi2-core
68ffca3 runqemu: when tunctl can't be found, say what package builds it
8d577ab nspr: Update to 4.10
941e313 libusb: Update tp 0.1.5
30b9076 libxkbcommon: Update to 0.3.1
7b88998 sysstat: Update to 10.1.6
7481749 lsbinitscripts: Update to 9.47
507cf0a libidn: Update to 1.27
680c88f cups: Update to 1.6.2
8006eb9 cracklib: Update to 2.9.0
4f661f4 help2man: Update to 1.43.2
a7d2ab7 cmake: Update to 2.8.11.1
650f30c socat: Update to 1.7.2.2
b85b611 qemu: update to 1.5.0
a6daa83 gcc: Upgrade to 4.8.1
9d9150c ofono: Add run time dependency for ofono test scripts
cceb11f gzip : upgrade to 1.6
30fa8c7 libxt: upgrade to 1.1.4
7a6a993 libdrm: upgrade to 2.4.45
d514eb6 xwininfo: upgrade to 1.1.3
41eecdc xf86-video-intel: upgrade to 2.21.9
f934f38 xdpyinfo: upgrade to 1.3.1
8fef8f8 xkeyboard-config: upgrade to 2.9
ab6c91b xf86-input-synaptics: upgrade to 1.7.1
9013f81 libnewt: split python module into libnewt-python
670c651 latencytop: Deprecate tracing_enabled for tracing_on
70cf6ee util-linux: update to 2.23.1
35447ea wpa-supplicant: Enable EXTRA_CFLAGS
9458d72 maintainers: Added missing recipes with maintainers
10681b5 upstream_tracking: Update Manual recipes
13bd8ad tune-cortexa*.inc: fix tunings for cortex a5, a7, a8, a9, a15 machines.
b87429f bitbake: Add missing file that went out of sync
35ea198 buildtools-tarball: add difflib and pprint python modules
ad276d7 sanity.bbclass: non-zero status means that we need -march.
8c8483d packagegroup-base: s/dosfsprogs/dosfstools/
25ac4cf systemd: don't install quotaon.service twice
126844d copyleft_compliance: set 'dirs' flag on task
00c8834 sstate.bbclass: fetch archive+siginfo in a single pstaging_fetch
fbf6438 sstate.bbclass: kill MIRRORS and FILESPATH to speed up fetching
29f8701 copyleft_compliance: handle localpaths ending with '/'
9dba0eb gconf: inherit gettext
b1f2f49 avahi: inherit python classes, use PACKAGECONFIG
8331d0a license.bbclass: include all licenses in the manifest
e525ef9 packagegroup-core-tools-profile: don't exclude mips
d4a7820 insane.bbclass: quiet package errors not in *_QA
9db09a6 packagegroup-base-vfat: include dosfsprogs
4ecc2bf connman: use PACKAGECONFIG for WISPr support
f302eb4 mesa: remove unrecognized configure options
7a43480 glib-2.0: drop Makefile.in hunks from patch
1f99e74 handle two-word commands with tmux
69a6023 librsvg: configure needs a native gdk-pixbuf binary
d5f593c rpm: replace rpm-postinsts dependency with run-postinsts
75070d7 package_rpm.bbclass: handle pre/post remove scriptlets
e4a136a rootfs_rpm.bbclass: switch to using run-postinsts
76cd8a7 run-postinsts: make it generic
98ce0b7 core-image-minimal: do not remove packaging files in the rootfs postprocess
1ce182e image.bbclass: remove unneeded files from the image
b11f818 rootfs_*.bbclass: add some helper functions
fdb5c12 qt4: fix QMAKE_QT_CONFIG being overwritten with empty value
147b8dd qt4-native: update configure paths to match target
027358f classes/qmake_base: update .pro hack
1319e17 classes/qmake2: export OE_QMAKE_LCONVERT and OE_QMAKE_XMLPATTERNS
9496d9a qt4-native: build lconvert and xmlpatterns
407bce9 libxml2: added python dependency to nativesdk
f5c6663 classes/buildhistory: split SDK data by IMAGE_NAME
7c1a555 sudo : upgrade to 1.8.6p8
5531635 openssh : upgrade to 6.2p2
242d5fb cracklib: fix QA warning about unsafe references in binaries
eac6763 qt4-x11-free: update HOMEPAGE
b48b238 qt4-native: update HOMEPAGE
aca93b6 qt4-embedded: update HOMEPAGE
99d5c53 qt-mobility: update HOMEPAGE
e7d63bf nativesdk-qt4-tools.inc: update HOMEPAGE
9fcf4e9 trace-cmd: backport three patches
b4ad8ff PPP: add default configuration file and fix hard-coded CFLAGS
e486242 chkconfig: fix QA warning about unsafe references in binaries
95e23df socat: enable termios
a3bf47a ddimage: fix incompatibility with dash
6607979 init-live.sh: fix media automount failed after booting from usb-drive
9682f16 gnomebase.bbclass: add support for archive name different from BPN
706ce35 gnomebase.bbclass: implement gnome_verdir() using trim_version()
c7ebd7e gstreamer: added GStreamer 1.0 recipes
96b144a tar: don't mv tar for nativesdk
74d3a1a buildtools-tarball: Add json, unittest and compression python module packages
5128f0a bitbake: bitbake-layers: fix for move of data object to cooker
8bdbb71 bitbake: tinfoil: fix for move of data attribute to cooker
7bf5c38 base/useradd/sstate: Ensure do_package setscene has correct fakeroot dependencies
be78283 bitbake: lib/bb/cache.py: invalidate cache when file checksum entry no longer exists
3e94563 bitbake: cooker: Split data from configuration
2b2b3e8 python-external-tarball: Improve DESCRIPTION/SUMMARY
950b505 package_*.bbclass: Drop fakeroot from setscene calls
58feddb python-external-tarball: Modernise and rename
80d6316 git/tar/findutils: Add nativesdk versions
551a996 libxi: Add libxfixes as dependency
13b8798d self-hosted: Add libssp libraries to packagegroup/image
d3e72d0 zlib: update to upstream version 1.2.8
bff43fb tune-cortexa5.inc: Add tune file for cortex-a5
cb21024 tune-cortexa.inc: create a common include for cortex-a armv7a tuning
03fdd2c libpcap: upgrade to 1.4.0
d3e982a iptables: upgrade to 1.4.19.1
dfd0985 kernel.bbclass: Fix link for modules-${MACHINE}.tgz
1b22849 image_types.bbclass: add ubifs to IMAGE_TYPES
61ded4c python: enable IPv6 based on DISTRO_FEATURES
5a0f74a multilib.bbclass: fix the PACKAGEFUNCS_append
829d6bf insane/package: refactor packaging sanity tests
b4371dd defaultsetup.conf: remove INHERIT_INSANE
43713b9 insane/package: let package.bbclass inherit insane.bbclass
7a5a755 connman: update to 1.15
2a739ad weston: update to 1.1.0
7435185 wayland: update to 1.1.0
f8f1814 mesa: update git recipe to 9.1.3 release
7aa250c mesa: upgrade to 9.1.3
78e8ce4 pixman: update to upstream version 0.30.0
2e2633a icu: update to upstream version 51.2
81c3782 test_utils: import functions directly for conciseness
a32d16c test-utils: handle import bb failing and skip the test
0d98083 matchbox-terminal: Update to git HEAD 452bca253492a97a587f440289b9ab27d217353e
d832539 grub-0.97: fix the objcopy error in configure
cf2c4b0 bdwgc: enable full version name in recipe name
2ee0717 subversion: upgraded to 1.7.10
3d2b83a libpng : upgrade to 1.6.2
c99fd8d gdk-pixbuf: upgrade to 2.28.1
271ea8b weston: clean up and add comments
fcbf865 weston: add a weston-launch group
1377d9d weston: install the examples into weston-examples
a9f1a78 core-image-weston: basic image that boots directly to Weston
6a27d8b weston-init: basic init script to start Weston on KMS/DRM
ef2a7bc gstreamer: moved LIBV out of gst-plugins-package.inc file
32c7252 gstreamer: fixed -meta package rdepends
8ec642b libpcre: upgraded to 8.33
26133c2 diffstat: upgraded to 1.57
31073bc linuxdoc-tools-native : upgrade to 0.9.69
bccc74c zlib: update to upstream version 1.2.8
0ac7a18 bitbake: bitbake: Improve remote server handling
f549cdd bitbake: xmlrpc: Allow server to remain memory resident
748e3c1 bitbake: bitbake server: create common server infrastructure
a62aed4 lrzsz: check locale.h in configure
2aed898 gcc: add build directory to include directories
807476e gcc: Workaround for compiler flag mismatch
cd906fa util-linux: Add support for older hosts
a0219d8 udev: do not recommend pciutils/usbutils ids
697f749 bitbake: Drop bitbake-runtask (removed upstream a while ago)
158d9d8 alsa-tools: Fix configure race
1808552 autotools.bbclass: Factor out aclocal copying function
96edb20 yocto_kernel: modify the msg when adding duplicate items
c252ed9 xf86-video-modesetting: backport fix for graphics corruption
59bb8e1 makedevs: Make count actually behave as a count for device blocks
c81ecf9 sanity.bbclass: make sure python is a full install
e85876d cogl: add missing xrandr dependency
50fae52 sstate.bbclass: fixup extra hardcoded paths
9ba5ced classes/buildhistory: record removals in buildhistory directory
6fa824e gdb: don't build with LZMA
14010b4 binutils: fix compile error of complex expressions before @l/@h
66dfd49 apt-native: Fix incorrect checksums
73dae11 rpm: remove .real hacks in argument parsing
ea281d3 bitbake: Added distroy signal to information dialogs
b5255bb bitbake: lib/bb/cache.py: Change debugging note to a debug message
8144e16 findutils: backport more fixes for documentation build errors
aeead1f dev-manual, ref-manual, poky.ent: Fixed broken Release Note scheme
2944e07 ref-manual: Partial draft for the new Wayland support section.
afc4aec ref-manual: Added new THISDIR variable and fixed some minor issues.
4f41a86 dev-manual, kernel-manual: Added links to THISDIR variable
36828be tools: Bumped version to 1.5
59e4eb0 ref-manual: Updated note for FILESEXTRAPATHS variable.
e230049 dev-manual: Updated wording about Git
00c3a84 dpkg: Be deterministic about lzma dependency
7333045 linux-yocto: Drop 3.2 kernel bbappend for 3.2 kernel removal
11286b3 poky-lsb: make NFS kernel server support specific to linux-yocto
5a2e4f5 poky.conf: add qemumips64 preferred version
d8358a0 linux-yocto: remove 3.2 kernel recipes
696be94 kern-tools: expand kernel features that point to a directory name
eb87a30 qemu*: restrict NFSD to linux-yocto only
a43e43f linux-yocto: v3.8.13 and v3.4.46
254b932 file: remove obsolete version check patch
b98129c nfs-utils: obey 'tcp-wrappers' PACKAGECONFIG
291a3ad systemd: obey 'tcp-wrappers' PACKAGECONFIG
25bf08a portmap: obey 'tcp-wrappers' PACKAGECONFIG
d63a32b quota: obey 'tcp-wrappers' PACKAGECONFIG
eb38c40 rpcbind: obey 'tcp-wrappers' PACKAGECONFIG
647db80 hicolor-icon-theme: keep inherited dependencies and switch to gnomebase
3aaa4f7 utils.bbclass: ensure $0 is correct in wrapper scripts
29049da atk: upgrade to 2.8
ea886ed openssl: fix documentation build errors with Perl 5.18 pod2man
d66ecfa cogl: remove documentation hacks
7e3eb69 clutter: remove documentation hacks
4c6939f python-smartpm: add gettext-native to DEPENDS
7285246 yocto_kernel: check current items before add a new one
f929c3b upstream_tracking.inc: added no upgrade reason for python-pygobject
e2a8080 portmap: /etc/init.d/portmap restart complains "command not found"
0ef93c5 libarchive: Fix build dependencies
ba319bb makedevs: Avoid unnecessary timestamp calculation
c8bfe84 makedevs: Make the mode number readable in debug messages
4844884 makedevs: Correct the device number calculation for blocks of devices
6804eec makedevs: Create blocks of devices with the correct uid/gid
4128b21 ncurses: Fix problems expanding ncurses-libtinfo when in IMAGE_INSTALL
8c5bbbe libnl: fix two parentheses bugs in lib/cache_mngr.c file
2a82659 grep: fix for CVE-2012-5667
3f561e9 initscripts: let status return 0 when proc is running well
35c9b6e dbus-glib: use BPN instead of PN
f81b8fc acpid: modify CFLAGS
8874490 libxpm: inherit gettext
d4e632a guile: added runtime dependency on glibc-gconv-iso8859-1
c7473c8 librsvg: add sstate dependencies so that the SVG loader works at staging time
2ab5dfc pixbufcache: add more documentation
fcfba0d utils: add trim_version() function
f5d0f6b python-scons-native: fix invoking scons failed on Fedora-17
f1b8e24 qt4: fix path to demos documentation
7fafe05 powerpc64-linux: Update cached autoconf value for apr on powerpc64
ff9573f runqemu: Replaced "stty sane" with saved stty settings
e964815 pkg-config: remove obsolete AM_PROG_CC_STDC
a09c5e4 patch: use PACKAGECONFIG to ensure correct dependency for xattr
e69e756 systemd: add udev-utils dependency for udev-hwdb
9da8321 bitbake: prserv: Unbreak after bb.server changes
eeac1e9 bitbake: cookerdata: Fix tinfoil by adding missinge extra_caches default
d0861b7 bitbake: bitbake: xmlrpc remote server
0fc3a1e bitbake: bitbake: xmlrpc transport has identification token
b6b3009 bitbake: bitbake: move start server code in a separate function
e6a1b33 bitbake: bitbake: move extra cache collection out of cooker
e09a159 bitbake: bitbake: retrieve the entire ui module in launcher
52d0512 bitbake: fetch2: Fix missing function call
3fb25ef bitbake: server/bitbake: Remove launchUI method
e118ee3 bitbake: server: Remove none server
5cb59cc yocto-bsp: re-enable AutoAddDevices in xorg.conf for generated BSPs
2f06147 xserver-xf86-config: re-enable AutoAddDevices for beagleboard
9122ba8 bind: add ipv6 support
4eb49c0 util-linux: Add ability to compile with nativesdk
7dcb445 libpam: Avoid wildcards in the SRC_URI
84de4f5 cmake.bbclass: modify construction of compiler flags
e4967e6 dpkg-native: Fix native perl path
1515425 guile: don't search for libreadline in host libdir
c0b6f9b qmake_base.bbclass: Add linux-gnun32-oe-g++ to QMAKESPEC
f543969 siteinfo.bbclass: Add mips64 common siteinfo
aa6408b consolekit: remove /var/run from package
9623ccf resolvconf: remove /var/volatile/run/resolvconf/interface from package
4bdb3c5 cups: remove /var/run from package as cupsd will populate it on startup
2aa350a bind: remove empty /var/run directory
cd19f76 udev: do not create symbolic link from /run to /var/run
90b4d3d udev: do not create /var/volatile/run in init script
526ca27 systemd: remove old /var/run workarounds
93107a1 systemd: do not create symbolic link from /run to /var/run
6d897ea systemd: do not create /var/volatile/run and /var/volatile/lock
ea647cd base-files: add /run directory from FHS 3 draft specification
beea111 findutils: backport fixes for documentation build errors
5a607c1 cracklib: Allow byte order patch to work on older Linux hosts
0d2211a gdb-cross-canadian: use correct exec-prefix path for python
40187e5 binutils: add two AArch64 related backports to 2.23.2
7ba3615 libdrm: fix packaging after last upgrade
dad8709 freetype: update to upstream version 2.4.12
3426ee8 curl: update to upstream version 7.30.0
6c8dbc2 gtk+: update to upstream version 2.24.18
1b2e70c harfbuzz: update to upstream version 0.9.17
493556b autogen-native: upgraded to 5.17.4
5fa3649 python-dbus: upgraded to 1.2.0
6ff3a26 git: upgraded to 1.8.3
e1e9036 settings-daemon: Update to git HEAD 9a99528b02255450db81176abd9bbcc1dab9a4c1
c880bd0 libtasn1: Updated from 2.14 to 3.3
b752e18 apt: Updated from 0.9.7.8 to 0.9.8.1
0116e82 systemd: fix ordering for machineid and run-postinsts services
676fd3f dropbear: a fix for hang in dropbearkey, built for x32
0d32c34 linux-firmware: Split 'ar3k' in a linux-firmware-ar3k package
e0d79a6 systemd: forward port uclibc patches to 204
b08958b rm_work.bbclass: ignore failure for removing pseudo folder
7bb6021 systemd: update to 204
657e464 populate-volatile.sh: remove repeated leading slashes in TNAME
45bf114 dbus: remove /var/run from package as it is created on startup
3921415 binutils: the cat should always succeed when building config.cache
efbb9f8 wget: disable uuid by default
2129c5d cross: Clear do_populate_sysroot[stamp-extra-info] so that stamps are not MACHINE specific
4380876 busybox: backport sulogin empty root password fix
8f5abd2 qemu: Updated from 1.4.0 to 1.4.1
930c541 sqlite3: update to 3.7.17
e2aa060 kernel: Remove unnecessary cd and rm, fix MODULE_TARBALL_SYMLINK_NAME creation
70d4867 patch: diable xattr as default
d1a682d connman: upgrade to 1.14
73b7528 perl-tests: convert to ptest
ab31f43 sudo: set CFLAGS for build mksigname and mksiglist
b5044c3 clutter-gst: removed no longer required configure fragment
b7caa5e clutter: further improvements
32b4a4a clutter.bbclass: removed unused function
7c178fc cogl: further improvements
4462df6 runqemu: fix networking issues
40bc4ed resolvconf: Update to 1.72
24380e2 cmake: Update to 2.8.11
26147b2 mc: Update to 4.8.8
f533a38 libnl: Update to 3.2.22
1f2436e mklibs: Update to 0.1.37
54cf30d desktop-file-utils: Update to 0.21
fd0d4d7 gnupg: Update to 2.0.20
e10352e xserver-xorg: enable xvfb
52c9f66 SLiRP support in runqemu
600f4e3 kernel.bbclass: Add dependency on binutils
004439b glib-networking: update to 2.36.2
e6e29a7 glib-2.0: update to 2.36.2
fc7db05 librsvg: add sstate dependencies so that the SVG loader works at staging time
b6212cf librsvg: small cleanups
cf20613 librsvg: clean up native depends
30a3cfe librsvg: add more PACKAGECONFIG options
db95e61 gdk-pixbuf: remove native loader cache generation, use the class
204b92c pixbufcache: update the loader cache when installing natively
bd85102 util-linux: Update to 2.23
fe715c4 bitbake: cooker/cookerdata: Fix up event handling for hob
3b4b782 bitbake: build: Avoid empty promises
72accaf bitbake: bitbake-layers: fix show-appends and flatten for recent cooker changes
fa4b1fa bitbake: cooker/cookerdata: Improve configuration object handling
7cf87fc bitbake: fetch2: Fix missing assignment
507d5cc bitbake: cooker/cookerdata/event: Improve class handlers management
ea34691 bitbake: cooker/cookerdata/utils: Improve context management
b9bd05b bitbake: event: Drop Handled/NotHandled status return values
0130b4c bitbake: cooker.py: Remove global scope class event handlers
8bef99d bitbake: methodpool: Retire it, remove global method scope
3c5b9cf bitbake: methodpool: Conflicting methodnames should be a fatal error
56a2b28 sanity.bbclass: Drop dubious print
e819772 buildhistory: Sync with bitbake changes
f7b639e rpm-postinsts.bb: enable postinst logging
0bf2c0a opkg: modify the run-postinst script to enable postinst logging
45c37d6 dpkg: modify the run-postinst script to enable postinst logging
d837fb3 image.bbclass: add postinst_enable_logging
2108951 ref-manual: Added xmlto and dblatex packages for docs
68deb6c kernel-dev: Updates to "Creating the Append File" section.
b47c993 ref-manual: Added more detail to note for FILESEXTRAPATHS use.
97c48db kernel-dev: Updated changing the configuration section.
2998ba7 ref-manual: Added Ubuntu 12.04 (LTS) to list of supported distros.
32ba3c9 documentation/poky-ent: Updated to essential packages OpenSUSE
75fa205 ref-manual: Updated supported distros list
ea114c0 dev-manual: Edits to removing package management requirements
9910776 dev-manual: Applied review comments for eliminating packaging req.
b637518 dev-manual: Created new section to remove packaging requirements
3fd21c7 documentation: Updated poky.ent to use 1.5 as YOCTO_DOC_VERSION.
91ec8a8 documentation: Updates to properly build the 1.5 manuals
98d2211 documentation: Set up the 1.4.1 manual set.
2e6ca2c bsp-guide: Fixed syntax error in BBLAYERS example.
514176c dev-manual, ref-manual: Minor edits suggested by Bill Traynor
818ec77 bsp-guide, ref-manual: Various fixes from Robert P. J. Day review.
caa6e07 dev-manual, bsp-guide: Updates for init-ifupdown change.
06af7c1 dev-manual: Review edits applied to selecting init manager section.
d95a27b scripts/bitbake: Handle the case where git isn't installed cleanly
70e5a74 task.bbclass: Drop deprecated class
e0ffc1f update-alternatives: Drop deprecated code, update to show error message
3216f00 bitbake: hob: Table sorting criteria should not change after deselecting recipes/packages
da34a8d bitbake: hob: apply a fade out animation when deselecting from tables
25182cd bitbake: cookerdata: rename _parse to parse_config_file
a4bf490 bitbake: tinfoil: fix for changes to cooker config structure
25905ae bitbake: bitbake-layers: fix for move of calc_bbfile_priority within cooker
49f1278 bitbake: command: Fix function module reference after code rearrangement
0c0bb02 bitbake: runqueue.py: Ensure export flag is set for fakeroot environment variables
ba707d0 bitbake: bitbake/cookerdata: Explicitly specify cooker configuration options
26d1999 bitbake: cooker: Split configuration parsing code into cookerdata
f0930c8 bitbake: cooker: Move commandline parsing back into the UI/cookerdata
f242f50 bitbake: bitbake: Create cookerdata splitting config from cooker and bin/bitbake
308ae92 bitbake: bin/bitbake: Improve exception handling
77fc40a bitbake: fetch2: Shorten long srcrevs
d228f9d bitbake: fetch2/git: Clean up sortable_revision
6088213 bitbake: data: Ensure dependencies of subfunctions are accounted for
176a46b packagegroup-core-clutter: use clutter-1.0 packages
37619d9 mx: Update to improved naming scheme
59cea9c clutter-gtk: Replace with 1.4.2 version
e77a014 clutter-gst: Replace with 1.6.0 version
bcb0616 clutter: Replace with 1.14.4 version
e847bd9 cogl: Replace with 1.14.0 version
525771c clutter.bbclass: helper class for clutter and friends
6271ac3 zlib: put shared libraries in base_libdir
f6d4438 cdrtools-native : upgrade to 3.00
25e90a4 bind: use /var/run/named instead of /var/run/bind/run
5c43ee2 opkg: remove unnecessary extra leading slash in run-postinsts
b86fdc0 nfs-utils : upgrade to 1.2.8
503c669 qt: fix warning -Wunused-local-typedefs introduced by gcc 4.8
0948a23 image_types.bbclass: remove the old images
995c196 image_types.bbclass: remove the old images
350c36f bitbake: test/fetch: Allow the conditional network tests to work under python 2.6
c8ab3b0 bitbake: test/fetch: Split the network tests from the rest of the fetcher tests
4d3a53f bitbake: fetch2/utils: Clean up imports
0a52bdf bitbake: tests/fetch: Allow to work on python 2.6
ad35569 python-pygobject-native: fix build dependency on python-native
f371626 Revert "initramfs-live-install*: fix the "install" boot option"
6de55b6 rpm-postinst: remove un-needed RDEPENDS on base-files
7c0e7c2 libcroco: allow native builds
c362bda gtk+3: disable Xinerama support
a3e31a3 linux-yocto/3.8: set qemumips64 SRCREVs
a5f4e5f qemuimage-testlib: change default directory for target tests
c3fabef qemuimage-testlib: pass optional timeout to ssh function
2706948 qemuimage-testlib: add support for extra arguments passed to runqemu
046b0e1 tcf-agent: Use common two-digit sequence numbers for init script links
ad24f27 glib-2.0: drop dependency on python-argparse
e3a5e8e connman: replace hardcoded path in init script and systemd service
ec89446 systemd: make udev-hwdb postinstall run on host
39537e0 busybox-mdev: Startup at level S03 instead of S06
360bfe9 toolchain-scripts.bbclass:Add CROSS_COMPILE variable to environment-setup file
9fa1590 connman: Add PPTP support
6707538 connman: Add L2TP support
951aa13 connman: Add vpnc support
48d0f52 connman: Add OpenVPN support
7c41d83 connman: Add VPN support
ca64333 gpgme: Updated from 1.4.0 to 1.4.1
c066df8 pixman: Update from 0.29.2 to 0.29.4
996326c ethtool: Updated from 3.8 to 3.9
1317558 libfontenc: Updated from 1.1.1 to 1.1.2
c4b7356 json-glib: updated from 0.15.2 to 0.16.0
f070d03 libxi: updated from 1.7 to 1.7.1
51c3e9d bbclass: bb.fatal() clean up
bfaf6c5 xf86-video-modesetting: upgrade to 0.7.0
9584808 machine/qemumips64: Add machine definition
db66872 binutils: Add broadcom XLP support
a4c4f38 linux-yocto: add qemumips64 compatibility
4520fec runqemu: Replace use of ifconfig with ip
f259554 kern-tools: refresh and make dash compliant
c50b1fb pkgconfig: Update to 0.28
f5b103f boot-directdisk: Scope HDDDIR and HDDIMG variables to avoid conflicts
badd718 syslinux: Update to 4.06
fb89bb3 bitbake.conf: define empty EXTRA_IMAGE_FEATURES before using them
941584f cachedpath.py: global name 'error' is not defined
bd27cca bitbake: bin/bitbake: Fix queue import for pyhton 2 and 3
0c8173d image.bbclass: Add package-management image feature to validitems
4f07050 bitbake: hob: fix for XMLRPC mode
f0457e5 scripts/hob: enable additional arguments
5109ec9 poky.conf: Adjust DISTRO vars post 1.4 release
efb8a46 package.bbclass: Fix sources contents
a9f5bf0 sanity.bbclass: Attach the missing value to a format string.
96b4289 bitbake: cooker/bitbake-layers/tinfoil: Fix recipecache typo
f7afeeb bitbake: bitbake-layers/tinfoil: Catch up with status -> recpiecache rename
fe17af2 image-vmdk.bbclass: disable the NOISO = "1"
4cda8d7 libdrm: upgrade to 2.4.44
6491923 xproto: upgrade to 7.0.24
ea8bccc xf86-input-evdev: upgrade to 2.8.0
9265ce0 xf86-input-synaptics: upgrade to 1.7.0
92abdd5 xf86-input-mouse: upgrade to 1.9.0
06aaba7 xf86-input-keyboard: upgrade to 1.7.0
e41f95c xf86-video-intel: upgrade to 2.21.6
76a90f1 xf86-video-vmware: upgrade to 13.0.1
ea89950 Upstream-Status: Correct Capitalization
1810369 classes/core-image: drop apps-console-core IMAGE_FEATURES support
d63c8a1 classes/image: show an error on invalid IMAGE_FEATURES
7b3bf9a sbc: upgrade to 1.1
00aa0b3 image-vmdk: Fix error recreating symbolic link
c9e48bc gmp: updated to 5.1.1
092cc94 pciutils: updated from 3.1.10 to 3.2.
15e7b77 glib-2.0: upgrade to 2.36.1
cac01c0 tcl: upgraded to 8.6.0
02b0763 gdb-cross-canadian: set everything in gdb-cross-canadian.inc
2d912e2 gdb: add 7.6 version
01985fc mpfr: upgraded to 3.1.2
7a3ddc1 byacc: upgraded to 20130304
0d8b27b autogen: upgraded to 5.17.3
2e5617a iproute2: upgrade to 3.9.0
c11ce6d kexec-tools: upgraded to 2.0.4
f31c86e libtool-nativesdk: rename to nativesdk-libtool
d67e9bc subversion: upgraded to 1.7.9
23e850c libxml2: Update to 2.9.1
c13fc38 kconfig-frontends: Update to 3.9.0
8a35037 help2man: Update to 1.41.2
94c80c8 msmtp: Update to 1.4.31
dce2f05 mklibs: Update to 0.1.35
74d5aa7 tzcode: Update to 2013c
dd957f6 libcheck: Update to 0.9.10
6495b6e libgcrypt: Update to 1.5.2
c17268e libomxil (0.9.3): drop unecessary dependencies
468c6f8 neard: Split recipe to two parts
ea65bb4 iptables: upgrade to 1.4.18
37c284c bison: upgraded to 2.7.1
097e35d git: upgrated to 1.8.2.2
d556ca2 python-scons: upgraded to 2.3.0
821d036 libmpc: upgraded to 1.0.1
c4c053b librsvg: update gdk-pixbuf loader cache when staging native package
97490c4 bitbake.conf: export STRINGS
6ca781b tcp-wrappers: fix indentation
7802e5c tcp-wrappers: Rename conflicting variable STRINGS in Makefile
cef2446 imagetest-qemu.bbclass, qemuimage-testlib: add support for more FSTYPES
2c2dd5b runqemu-internal: support for ext2 and ext4 not only ext3
bc02e97 scripts/runqemu: add ext4 to the list of extracted extensions
5ea4d81 bitbake: cooker: Rename status variable to recipecache
9ed7cd1 bitbake: cooker: Rename confusing buildDepgraph task to handlePrefProviders
8c7a23e bitbake: cooker: Drop pointless variables
c035bf9 bitbake: cooker.py: Drop confusing updateCache calls
d8cf6e9 bitbake: cooker: Remove pointless repeated import
06aaf0d bitbake: cooker: Fix get_bbfiles()
51e54ed bitbake: cooker: Separate out collections handling code into its own class
6ebdeb4 bitbake: cooker: Drop unused variables from collect_bbfiles()
88a7b04 bitbake: pysh: Say what kind of token isn't implemented
d98419a bitbake: hob: assure consistency for image size label
9c60292 bitbake: hob: clicking on "cancel" should reset table sorting to default
24f0608 bitbake: hob: "Brought in by" sorting should take into account the (+#) information
39d3409 bitbake: hob: sort alphabetically results in groups of recipes/packages
6dab4d0 bitbake: Updated information in tooltips
b34cf7e rpm: ensure __mkdir_p matches __mkdir
2f7c588 python: remove the default optimization
a86b006 bitbake.conf: update way to set default ROOT_HOME
15aec44 classes/insane: add check for PN in OVERRIDES
e42f0ac classes/buildhistory: track contents of selected files in images
68f441e buildhistory-diff: improve bad command-line argument handling
843e422 boot-directdisk/bootimg/image-vmdk: remove more nostamps for image generation
642afb4 maintainers.inc: update alsa-utils-alsaconf pkg maintainer
47f121e maintainers.inc: update neard pkg maintainer
8d7d01d poky.conf: update SANITY_TESTED_DISTROS
3bae243 kernel.bbclass: make FILES package-specific
e5d077d bitbake: lib: print is a function in moderm python, covert remaining users
3e86a6c bitbake: lib: Use modern expcetion syntax
a823c88 bitbake: prserv: Drop StandardError usage
9b91357 bitbake: siggen: Add missing error message parameter
c6c341a bitbake: providers: Remove pointless lambda sort function
5c3944c bitbake: cooker: Remove deprecated operator
4a081b5 bitbake: lib: Clean up various file access syntax
7f2bf08 eglibc/machine-sdk: Drop SDK_GLIBC_ADDONS
f1a0635 imagetest-qemu: Fix indentation
566628d class/lib: Fix up various file access methods
d2ef952 buildstats: Drop spurious open() call
4a9daa9 useradd: Use modern join syntax
29f6ca7 powertop: inherit gettext
b54339d classes/lib: Fix getcmdstatus breakage
d529c11 bitbake: git: remove symling before updating mirror tarball
fd8dcd7 bitbake: bin/bitbake: add a check for /dev/shm existing
a189ec4 bitbake: utils: Improve better_compile error message
bc95dde bitbake: utils: Improve better_exec traceback handling
f58e82b bitbake: bin/bitbake: Ensure early errors are shown to the user
f81de1d bitbake.conf: Use casting to ensure valid comparision
8aa498d base.bbclass: Drop unused/obsolete import
534325f image/kernel-module-split/eglibc-ld.inc: Remove has_key() usage
e16faa5 sanity/patch.py: Remove commands module usage
e1b5647 insane: Open file in binary mode
feeffdb meta/lib/oe: Replace StandardError with Exception
3512f79 classes/lib: Update to use print as a function call
caa8b29 metadata_scm: Replace deprecated operator
9ebcb98 sanity.bbclass: Use open(), not file()
c3d18af classes/recipes/lib: Fix various python whitespace issues
db8217f classes: Use modern exception raising syntax
e0bd393 buildstats: Update to ensure files are closed
2ac4f8b clases/lib: Use modern exception syntax
00052fe core-image-minimal-initramfs: Remove odd quote characters
814d89b xserver-xorg: Add xkbcomp to RRECOMMENDS
40fe7ad gcc-configure-cross.inc: Remove info generation
19f71dd bootimg.bbclass: add comment for NOHDD
77d00c5 gnutls: upgrade to 2.12.23
1abffd2 oprofileui(-server): upgraded to GIT revision f168b8bf
b3a745c qt4: remove trailing slash from prefix
452f6b2 gdb: tabs -> spaces
e125870 gdb: AArch64 lacks lttng support
94d31b0 poky-lsb: Ensure kernel nfsd module is enabled
a50ffe6 craklib:fix testnum and teststr failed
a28959e cracklib: fix default dictionary should be generated for target endianness
48823c6 linux-yocto/3.8: udpate to v3.8.11
0768191 linux-yocto/3.4: update to v3.4.43, ltsi-65311d8 and v3.4.42-rt56
b3dc63c kern-tools: anchor and delimit regexs
8032447 linux-yocto/3.4: iwlwifi, ext4, brtfs warning and -rt fixes
b5d5b1b dmidecode: fix fetch path to use BP
1e7b9ef gcc-configure-target: Add --enable-dependency-tracking to EXTRA_OECONF
26923a4 tcmode-default.inc: Pin binutils to 2.23.2
483c900 binutils: backport whitespace fix
edcae40 binutils: Upgrade 2.23.1 -> 2.23.2
4bf8253 guile: Update to 2.0.9
abb69cd qemu: Ensure kernel nfsd module is enabled
d8afc32 gdb-cross: gdb-cross requires readline-native
5dde326 libgnome-keyring: remove, nothing in oe-core uses this anymore
b3528c6 gnome-keyring: remove, nothing uses it in oe-core
b86f89f3 libsoup: upgrade to 2.42.1
58b8401 packagegroup-core-x11-sato: Add udev-extraconf to maintain compatibility
3f55534 packagegroup-core-lsb: Add udev-extraconf for LSB compatibility
a1cd3aa udev: do not recommend udev-extraconf
234e671 systemd: do not recommend udev-extraconf for udev
3e0455f qemux86: disable paravirt guest in linux 3.4, causes test failures
9895d2c maintainers.inc: update sbc pkg maintainer
538dc8d upstream_tracking.inc: minicom check update
3438927 archive-*-source.bbclass: handle dependency in anonymous function
10219f0 cronie: Convert crontab to a system user
84d45db grub-efi-native: Cleanup whitespace
ec587c5 neard: Rename the recipe as we are already in 0.10
8fb24e1 buildhistory: change default BUILDHISTORY_DIR to TOPDIR
67ed18e bitbake: fetch2/svn: Do not save authentication
7709342 bitbake: bitbake: remove stack trace depth limitation
6db2025 bitbake: data_smart.py: add some internal bitbake variables to configuration hash
a4cc40c bitbake: prserv/cooker: Handle PRService errors cleanly
8779ebc bitbake: goggle: fix invalid error check
c88bfe2 bitbake: Update to version 1.19.0 for master
7464637 ia32-base.inc: remove inapropriate grub dependency
5874564 dmidecode: Add dmidecode to dev tools
3681c89 gcc-4.7: fix gcc ICE when building with gcc-4.8
53276bc fs-perms.txt: Don't tinker with file modes in /usr/src/debug
3dedd8f gcc-runtime: Avoid error when trying to remove nonexistent directories
a8eca39 archive-*-source.bbclass: have do_dumpdata_create_diff_gz task run before do_rootfs
140ba62 mesa-demos: Use PACKAGECONFIG to enable/disable features
bd35213 image_types: fix default location of kernel when generating elf images
db92131 image.bbclass: Don't mark do_rootfs and do_build as nostamp
58412ca classes/image: allow complementary package globs to be extended
61823f6 path.py: Deal with race issue
c09866b mkefidisk: Unmount after partitioning
8d3285f Make toolchain output name using SDK_VERSION instead of DISTRO_VERSION to be consistent [yocto #2342]
55d77f5 qt4: Fix sundry erroneous assumptions about ${prefix}
82a55f7 dpkg: Ensure target packages don't reference perlnative
c6a769e adt-installer: do not dereference symlinks when relocating
b899df8 netbase: upgrade to 5.1
6809549 systemd-serialgetty: change to handle SERIAL_CONSOLES
4ea0449 shadow-securetty: change to handle SERIAL_CONSOLES
c58cfce sysvinit-inittab: remove specific handling of SERIAL_CONSOLE
c09809f bitbake.conf: set SERIAL_CONSOLES from SERIAL_CONSOLE by default
b4aa6d3 sysvinit-inittab: ensure unique label for SERIAL_CONSOLES entries
2c5dbc9 xkeyboard-config: Remove xkbcomp from RDEPENDS_${PN}
c51e8b4 sstate.bbclass: make hard links for staging files
3dfbedb tune-thumb.inc: Remove, replaced by arm/feature-arm-thumb.inc
c42cc8f neard: add systemd unit file
9dae6e7 sudo: disable SSP for auxiliary build tools mksiglist and mksigname
556acba kernel 3.8: routerstationpro: use KERNEL_IMAGE_MAXSIZE to test the image
3542879 neard: re-order recipe so the statement order is logical
eb9e50d menu-cache: Fix segmentation fault
2346b46 distro_alias: update alias information.
17800b5 libpcap: Fix up patches
ac5b5be alsa-utils: Move alsaconf to its own recipe
9a3d8c2 connman: add PACKAGECONFIG options
d36cc47 matchbox-panel-2: bump srcrev to fix compile warnings
4a3d4b8 Pass the mlprefix to postinst_intercept script
1a438af scripts/postinst-intercepts: create separete hooks for multilib
cf76b42 Revert "qemu.bbclass: Use the correct qemu binary in multilib cases"
8f32a0f pango: fix postinstall when using multilib
fe24000 qemuwrapper: use fallback in case the ELF binary is wrong
18ea08c build-appliance: Add version info
559dd2d glib-networking: Update to 2.36
3040cfc glib-2.0: Update to 2.36
f1771b5 mesa-demos: Update to 8.1.0
d5bc211 glew: fix generation of glew.pc needed by mesa-demos
7e83fd7 libxkbcommon: Update to 0.3.0
a08dd5d pkgconfig: Move patches in prep for 0.28 update
2f3e9b3 libgcrypt: Update to 1.5.1
cf6be57 nspr: Update to 4.9.6
0440417 libffi: Update to 3.0.13
8507e78 file: Update to 5.14
b500994 dpkg: Update to 1.16.10
2b5653b resolvconf: Update to 1.71
75de611 dhcp: Update to 4.2.5-P1
791653f sqlite: Update to 3071602
2e0ed89 sysstat: Update to 10.1.5
2691ac1 lsbinitscripts: Update to 9.46
1831cbb less: Update to 458
5cb01c1 connman: update to 1.13
c67cdf5 glib: Add --disable-man to configure arguments
f18ba44 libpcre: Make readline dependency conditional on PACKAGECONFIG[pcretest-readline]
b48db72 gettext: Make ncurses dependency conditional on PACKAGECONFIG[msgcat-curses]
c296855 gdb: Disable hard-coding of library rpaths
735656b scripts/contrib/build-perf-test.sh: change the global results format
f58228f scripts/contrib/build-perf-test.sh: skip network sanity tests
04d552f scripts/contrib/build-perf-test.sh: use the same identation everywhere
eff37ec bitbake.conf: Don't add ${PN} to RRECOMMENDS_${PN}-dbg
c2835ac qemuimage-testlib-pythonhelper: Make the process detection more strict
213d204 dropbear: update to 2013.58
f94519c apt: update to 0.9.7.8
60589dd conf/machine: use .= instead of += in TUNE_CCARGS
46b021c eglibc: Avoid "installed but not shipped" warning for ld.so.conf
0825378 webkit-gtk: remove gnome-keyring dependency
ac273d6 gdb-cross: Adjust ${datadir} to avoid file conflicts in sysroot
f2f8356 rpm: change arch scoring items
3e79775 cpan.bbclass: use '|' as sed separator for entry with paths
2895bcf sstate: Set umask to 002 before packaging runs
999302e systemd-systemctl: parse unit files more correctly
499bb2c libxslt: Avoid regenerating manpage during "make install"
d853d5b mkefidisk: Attempt to automatically unmount target device
f9a0670 gpgme: add short SUMMARY
e179480 core-image-directfb: add SUMMARY
87b6abe ptest-runner: add SUMMARY, DESCRIPTION and HOMEPAGE
e53388a hwlatdetect: add SUMMARY and DESCRIPTION
07be27e gst-openmax: add SUMMARY, DESCRIPTION and HOMEPAGE
fc1b844 xeyes: add SUMMARY and DESCRIPTION
bb98dbd rgb: add SUMMARY and DESCRIPTION
ada6dce packagegroup-core-x11-xserver: set SUMMARY instead of SUMMARY_${PN}
56ebcdf gnome-doc-utils: add SUMMARY and DESCRIPTION
612ad98 python-smartpm: fix HOMEPAGE and adjust DESCRIPTION
1ef9b25 libxml-simple-perl: add SUMMARY, DESCRIPTION and HOMEPAGE
b74e927 which: use the same meta fields for both versions
b880008 mtools: use same SUMMARY as newer version of mtools recipe
6b73189 icon-naming-utils: add SUMMARY and DESCRIPTION
689d2b6 external-sourcery-toolchain: add SUMMARY
0d2a740 readline: add SUMMARY
5aca0e3 libcgroup: add SUMMARY and better DESCRIPTION
bce1f1b build-appliance-image: add SUMMARY, HOMEPAGE and improve DESCRIPTION
217b65e gettext-minimal-native: add SUMMARY and DESCRIPTION
e43af7f eglibc: add common HOMEPAGE and SUMMARY for eglibc-locale
ce726d9 connman-conf: add SUMMARY and DESCRIPTION
07ef66f routerstationpro: move board off 3.4 and onto the 3.8 kernel
5652086 kernel-arch: Always use ld.bfd to link the kernel
648c8cd icu: Remove unnecessary FULL_OPTIMIZATION_arm setting
3dd0810 openssl: Disable parallel make
d553d1a common-licenses: remove HTMLisms from OFL-1.1
810e784 common-licenses: fill in AGPL-3.0
cab467d udev: create /var/volatile/tmp to avoid dead link
41c9e42 ltp: upgrade to 20130109 release
5c70423 openssh : upgrade to 6.2p1
9bc16a0 pax-utils : upgrade to 0.7
6a7aa9c udev-extraconf: Avoid mounting unknown filesystems
35483a6 linux-firmware: Look for RTL license in the right directory
addcfcd glib-2.0: disable tests for native builds, and respect ptest for LSB
9d734f4 matchbox-session-sato: install GConf values directly instead of using schemas
361d686 elfutils: split libraries into separate packages
88a4fd8 gcc-4.8: Fix GCC ICE on arm
fd566d2 gcc-4.8: Refactor gcc-4.8.0 patch files.
c3cc4bf gcc-4.8: Add recipes
7195096 powertop: add 2.3
4178360 connman-gnome: Replace broken png files
5460086 gconf: silence some spurious errors
824962f package.bbclass: ensure license excluded files aren't packaged
fd4f354 package.bbclass: add LICENSE_EXCLUSION to vardeps
4e4050d png: fix over-zealous warnings about transforms
e0b4d0e cairo: drop transform patch, it's been rejected upstream
5af9ca5 u-boot: Add UBOOT_LOCALVERSION to control version string
6dc9a7e python-setuptools: Improving the runtime dependencies
ba807dc gnome-icon-theme: add missing icon-cache inherit
cb9987d grub-efi-native: fix build on modern distributions without gets()
26a9701 libpng: update to 1.6.1
3a4b728 lttng: updated lttng-ust to 2.1.2
433fbaf pulseaudio: install alsa mixer data files
d9f153f image.bbclass: change the logic when intercepts fail
5e702ed pixbufcache.bbclass: do not exit 1 after installing intercept hook
6304ba3 gtk-icon-cache.bbclass: do not exit 1 after installing intercept hook
9e729f1 fontcache.bbclass: do not exit with 1 after installing intercept hook
3b2d8e5 build-appliance: Update to latest dylan revision for release
c0f8159 dpkg: Correct paths in postinst
2464c63 systemd: depend on libgcrypt
4da0b79 udev: disable systemd support
9bdc6f0 udev: drop dependency on udev in libudev
09f0c9d xserver-xf86-config: set DefaultDepth to 16 for qemumips
87bf429 perf: Ensure license is handled correctly
412378b psplash: Fix multilib build
277cae2 package_ipk: Ensure the status file exists
8e74a97 package.bbclass: Add useradd variables to PACKAGEVARS
57fdbe9 multilib: Ensure we map the USERADD_PACKAGES variable
8280810 gst-plugins-bad: Disable neon, its not on DEPENDS
c97deb1 init-ifupdown: move network interfaces file for the beagleboard
90b9876 build-appliance: Update revision to dylan release
9fde303 systemd: Fix udevd init script so sysvinit in systemd mode works
57f4f86 util-linux: fix systemd service in multilib
bcd4d37 systemd: fix -dbg package with multilib
09b8918 busybox: hard-code the syslog service file
fd45a2d udev: explicitly package nonarch_base_libdir
5d3df29 systemd: Effectively revert the move to /sbin
72ea776 seperatebuilddir: add systemd
b06bd1d systemd: fix out of tree builds
f6ae645 udev: remove explicit path to udevadm
2cb729a alsa-utils: Use pkg-config instead of hardcoded udev paths
1261ecc packagegroup: Add init-manager sanity check
c71d1f4 udev: Effectively revert the move to /sbin
00aec10 pulseaudio: Set udev variables using pkg-config
f4ba9ef bluez4: Set udev variables using pkg-config
b24d284 pcmciautils: Use pkgconfig to set udev variables correctly
79a205b package.bbclass: Fix populate_packages for glob expansion issues
ef0e1cc busybox: fix mount issue
295db71 dev-manual: Fixed directory name used in example.
969218e dev-manual: Edits to "Set Up Your Layer for the Build" section.
6a3f129 dev-manual: Edits to "Using .bbappend Files"
a3d2886 kernel-dev: Edits to the "Changing the Configuration" section.
4bb60da ref-manual: Edits to SRC_URI, FILESPATH, and FILESEXTRAPATHS.
eedd602 ref-manual: Updates to the FILESPATH variable.
ef04b1d ref-manual: Edits to clear up the SRC_URI variable description.
f418e7f kernel-dev: Fixed another occurrence of ${FILES}
c159989 kernel-dev: Correction to where to place a .cfg file.
0478091 yocto-project-qs: Final edits for QS manual.
6cfbc41 adt-manual: Changed capitalization of list for consistency.
bdeedab adt-manual: Fixed formatting of filenames in a list.
3015438 adt-manual: Added quotes around cross-link section title.
92243fa adt-manual: Minor edits and links.
c29c155 adt-manual: minor updates.
5f08473 ref-manual: Minor edits to the supported distros list
75f85bd bsp-guide: Updated the yocto-kernel script example.
ce24b05 bsp-guide: Updated the help listing for the yocto-layer command.
3b83bc9 bsp-guide: Some minor edits.
61ab619 bsp-guide: Updated the yocto-bsp script output.
07450dc bsp-guide: Fixed "ARM" term appropriately.
958f9f8 bsp-guide: Fixed "QEMU" term appropriately.
126abc0 bsp-guide: Added a link to the oe-init-build-env script.
c980341 bsp-guide: Minor editing change.
b681eb8 bsp-guide: Removed a redundant note.
f1a29a8 bsp-guide: Added a note to reference the yocto-layer tool.
8232e1c bsp-guide: Minor edits to the yocto-bsp command description.
a19e3dd bsp-guide: Fixed another broken link to the Downloads page to the website.
aa56bc7 bsp-guide: Fixed a broken link to the "Downloads" page to the website.
02a5c92 bsp-guide: Changed wording due to 2 recommendations now exist.
e50ef9e bsp-guide: Minor edits
d9c3fef bsp-guide: Added quotes around wiki page title in a cross-link.
44293a2 bsp-guide: Better wording for VESA support.
80bfd00 bsp-guide: Added a link to the term "Metadata".
5271891 bsp-guide: Added complete list to sample structure for Crownbay
77e1079 kernel-dev: Spell checked the files and fixed appropriately.
6f2e173 kernel-dev: Removed a reference to sections that no longer exist.
ec435de kernel-dev: Inserted a cross-link to the term Build Directory.
7f60e93 kernel-dev: Removed the <word>/<word> construction.
c3d0974 kernel-dev: Removed another "don't" contraction.
a3e4478 kernel-dev: Removed a development note that was for Bruce Ashfield.
55ae73c kernel-dev: Removed the "don't" contraction.
9bf1cde kernel-dev: Eliminated a redundant paragraph.
6668012 kernel-dev: Fixed a broken link to a cross-section.
ce52a46 ref-manual: Generated and included new list of supported distros.
fe7fa4e dev-manual: Edits to "Providing Compilation Scripts and Source Code Modifications" section.
3762469 dev-manual: Edits to "Providing License Text" section.
4cf8642 dev-manual: Edits to "Providing the Source Code" section.
4c00602 dev-manual: Edits to "Maintaining Open Source License Compliance During Your Product's Lifecycle" section.
13dcc78 dev-manual: Edits to "Online Mode" section.
f4e04ab dev-manual: Edits to "Using OProfileUI" section.
0bef07d dev-manual: Edits to "Profiling with OProfile" section.
de72fa2 dev-manual: Edits to "Create the GDB Initialization File and Point to Your Root filesystem" section.
913a9ee dev-manual: Edits to "Build the Cross-GDB Package" section.
bc16410 dev-manual: Changed section title to be parallel.
b24987d dev-manual: Edits to "Launch GDB on the Host Computer" section.
229ed0a dev-manual: Edits to "Launching Gdbserver on the Target" section.
c566d3c dev-manual: Edits to "Set Up the Cross-Development Debugging Environment" section.
d2ebf82 dev-manual: Edits to "Debugging With the Gnu Project Debugger (GDB) Remotely" section.
e9d7fa3 dev-manual: Edits to "Post-Installation Scripts" section.
c7e81cc dev-manual: Edits to "Creating a Read-Only Root Filesystem" section.
eacedc0 dev-manual: Edits to "Excluding Recipes From the Build" section.
2cb80f2 dev-manual: Removed a couple of links to variables.
3a49e1d dev-manual: Edits to "Using systemd Exclusively" section.
f43ab89 dev-manual: Edits to "Selecting an Initialization Manager" section.
e04976e dev-manual: Edits to "Building Software from an External Source" section.
af71514 dev-manual: Fixed a section heading capitalization issue.
fa9e626 dev-manual: Edits to "Testing Packages with ptest" section.
a68970e dev-manual: Edits to "Making Sure the Packaging is Done" section.
6c5bb96 dev-manual: Edits to "Handling a Package Name Alias" section.
66114e0 dev-manual: Edits to "Manually Bumping PR" section.
5222e90 dev-manual: Edits to "Working With a PR Service" section.
8692ab0 dev-manual: Edits to "Look for Other Ways to Minimize Size" section.
ae53349 dev-manual: Edits to "Trim the Kernel" section.
f35f12d dev-manual: Edits to "Trim the Root Filesystem" section.
049904f dev-manual: Edits to "Understand What Gives Your Image Size" section.
ce8dbc8 dev-manual: Edits to "Creating Your Own Distribution" section.
cedb4ce ref-manual: Changes to the migration section
bf64daa dev-manual: Edits to systemd section.
1fbc3e9 dev-manual: Edits to "Boot the Image and Verify Your Changes" section.
1421c8f dev-manual: Rewrote section title.
079ec62 dev-manual: Updated section name for parallel construction.
af8f6b5 dev-manual: Edits to "Build and Booting the Modified QEMU Kernel Image" section.
5b37423 dev-manual: Edits to "Set Up for the Build" section.
c530f80 dev-manual, kernel-dev: Edits for changing a section head title.
0e47365 dev-manual: Edits to "Creating the Patch" section.
3781b86 dev-manual: Fixed section title capitalization issue.
67c503d dev-manual: Edits to "Fine-Tuning the Kernel Confguration File" section.
d70617f dev-manual: Edits to "Creating Configuration Fragments" section.
09415f5 dev-manual: Edits to "Using menuconfig" section.
edf49a5 dev-manual: Fixed section capitalization issue.
68b7bd5 dev-manual: Edits to "Preparing to use Multilib" section.
c20d3d5 dev-manual: Edits to "Combining multipel Versions of Library Files into One Image" section.
334c8ee dev-manual: Edits to "Including Static Library Files" section.
3e1871b dev-manual: Edits to "Adding a Formfactor Configuration File" section.
4757ccd dev-manual: Edits to "Adding the Machine Configuration File" section.
469068b dev-manual: Edits to "Post-Installation Scripts" section.
d333a90 dev-manual: Edits to "Splitting an Application into Multiple Packages" section.
94d1ab3 dev-manual: Edits to "Makefile-Based Package" section.
e7076de dev-manual: Edits to "Autotooled Package" section.
f79ff9b dev-manual: Edits to "Managing Layers"
ffb38ba dev-manual: Edits to "Using .bbappend Files"
be0bbb3 dev-manual: Edits to "Creating Your Own Layer" section.
875066f dev-manual: Edits to "Layers" section.
53ad9b2 ref-manual: Edits to teh "Archiving Sources - archive*.bbclass" section.
8226990 ref-manual: New class added for archive*.bbclass.
6720a6e dev-manual: Updates list of supported BSPs
c11ea04 dev-manual: Changed "Ptest" to "ptest"
1c597ac dev-manual, bsp-guide: Scrubbed the yocto-layer usage section.
b1ee347 dev-manual: Edits to the ptest section.
598089f dev-manual: Edits to the ptest section.
d1f324a ref-manual: Updated "Contributions" section
9ade10c dev-manual: Added cross-reference to section for finding maintainers
a5d8b9e dev-manual: Added methods to determine who a Maintainer is.
d78dcf5 augeas: Fix missing files with separate build directory
c1ac96d libpam: backport patches from upstream
8593ead consolekit: Fix ${S} != ${B} issues with pam enabled
595e92c systemd: Fix shell variable assignment spacing
c237e54 systemd: use AC_CHECK_TOOL instead of AC_PATH_TOOL when checking objcopy, strings, gperf
4b99217 separatebuilddir.inc: disable libmusicbrainz
db45a97 linux-yocto/3.8: Makefile: add -grecord-gcc-switches if using -mfentry
bef8d8d qt4-embedded: bump PR to allow removal of meta-oe bbappend
527ab19 packagegroup-qte-toolchain-target: bump PR to allow removal of meta-oe bbappend
bb71240 qt4-x11-free: bump PR to allow removal of meta-oe bbappend
92af7d9 wpa-supplicant: don't call DBus init script directly
d1d8b9c hicolor-icon-theme: bump PR to allow removal of duplicate from meta-gnome
03aaa55 avahi: don't call DBus init script directly
716bf31 xserver-xorg: fix segfaults for ARM SoCs
af9ed97 runqemu-internal: Drop distcc support
9e1753e cairo: fix builds with libpng 1.6
df2aeee README.hardware: Update mpc8315 load address
1695345 initramfs-live-install*: fix the "install" boot option
23eec72 mesa: don't fail if x11 isn't available
b6343dd openssl: update range information in man-section.patch
ae6d5f8 kern-tools: fix custom repository BSP generation
45c8cc1 poky.conf: add Poky 1.4 and CentOS 6.4 to SANITY_TESTED_DISTROS
0551b4a coreutils: add realpath to alternatives
1ebc904 connman: Fix wrong INC_PR reset
c9ce164 initramfs-live-boot: explicitly depend on udev-extraconf
9bbf6f3 bitbake: data: fix performance regression
07e83d0 bitbake: fetch2: rename file with bad checksum instead of removing it completely
3cc69d3 bitbake: hob: Refine sorting mechanisms in Hob
612c25c bitbake: monitordisk.py: disable inode checking for btrfs
f037008 systemd: fix bootup with 'ro' by re-adding util-linux-mount to RDEPENDS
aa1d7fa busybox: Add inetd related files
fc30d72 busybox: detects customized configs when do_install
0d9f790 allarch: Drop various problematic allarch usages
ba4f19e nfs-export-root: Update to use packagegroup naming
3cf3c8d qemuwrapper-cross: Inhibit default dependencies
b8f0895 encodings: Set RDEPENDS correctly
96b49a0 ttf-bitstream-vera: Use fontcache class for postinstall
b45615a update-alternatives: Ensure DEPENDS is correct in multilib case
b5845de kernel.bbclass: Ensure we have correct version information in deploy data
d61d0a1 oe.terminal: add tmux classes
79c2485 rpm-postinsts: remove erroneous call to /etc/default/rcS
068085f ref-manual: Review comments applied for patch session
424611a bsp-guide, ref-manual: Spell checks on some chapters.
326eb45 ref-manual: Added "Target Package Management with RMP" section.
ca9ca7b ref-manual: Added a link to the SANITY_TESTED_DISTROS variable.
b3a49b8 ref-manual, dev-manual: Added links to the RPROVIDES variable.
db4f0ea ref-manual: Added a cross-reference link to the RSUGGESTS variable.
a92c8ef ref-manual: Added two cross-references.
a8f1e2d ref-manual: Fixed section title capitalization.
424b041 ref-manual: Added a cross-link to the INSANE_SKIP variable.
fb156da ref-manual/ref-variables: add STAMPS_DIR and update STAMP entry
aee4e2d ref-manual/ref-variables: add LOG_DIR
58eaa40 ref-manual/ref-variables: clarify T definition
9e33c41 ref-manual/ref-variables: add SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS
f966fda ref-manual/ref-variables: add SIGGEN_EXCLUDERECIPES_ABISAFE
ba7fb31 ref-manual/ref-variables: add SANITY_TESTED_DISTROS and NATIVELSBSTRING
558d4ad ref-manual/ref-variables: add SYSROOT_PREPROCESS_FUNCS
50eb7e4 ref-manual/ref-variables: correct and extend DEFAULT_PREFERENCE entry
fb098b2 ref-manual/ref-variables: add KERNEL_EXTRA_ARGS
753bda1 ref-manual/ref-variables: add MODULE_TARBALL_DEPLOY
47cb481 ref-manual/ref-classes: minor typo fixes and clarifications
727b31c ref-manual/technical-details: remove outdated statement on BB_SIGNATURE_HANDLER
d1a4267 ref-manual/ref-variables: specify the value for INHIBIT_PACKAGE_STRIP
eb29a18 ref-manual/ref-variables: add PROVIDES
6cb93be ref-manual/ref-variables: add RPROVIDES
e90b2fb ref-manual/ref-variables: add RSUGGESTS
4fc7d04 ref-manual/ref-variables: correct and extend RREPLACES entry
a3a57c4 ref-manual/ref-variables: add COMPATIBLE_HOST and touch up COMPATIBLE_MACHINE
64b4e89 ref-manual/ref-variables: add RM_WORK_EXCLUDE
b9f5439 ref-manual/ref-variables: add IMAGE_LINGUAS
2cddc69 ref-manual/ref-variables: add INSANE_SKIP
411022f ref-manual/ref-classes: add note to insane.bbclass section on INSANE_SKIP
0ffd01f ref-manual/ref-classes: add missing QA checks
867abaa bsp-guide: fix reference to old netbase version
a75a9fd ref-manual/ref-variables: ensure values are quoted
7139c4d ref-manual/faq: virtualisation not visualisation
0f63639 ref-manual/faq: clarify that package management is optional
35c4e15 ref-manual: add more undocumented classes
c3ecfdb ref-manual: add documentation for rm_work.bbclass
52ac480 udev-extraconf: Add -o silent to auto mount for mount.util-linux
ea6e797 qemu: define fdt_t types in libfdt_env.h from qemu
27bb516 initrdscripts: look for new systemd-udevd location
b528fee systemd: move the binaries to /sbin/systemd
71aafc2 hello-mod: Ensure the produced package name begins with kernel-module-
27ad9ca classes/poky-sanity: fix handling of bblayers.conf updating
093dec1 package/image.bbclass: Fix multilib rprovides
db61a66 classes/sanity: fix handling of bblayers.conf updating
b9dde37 multilib.conf: Workaround opkg multilib issues
b378cb7 udev: Update initscript to check for devtmpfs
60651c1 gdk-pixbuf: Fix libpng determinism issues
cde94ff oprofile: Add Upstream-Status and description to patch
2bede7f qemu: Fix typo in patch header
9be73af dev-manual: Fixed typo for "&gt;".
af06402 dev-manual: Completed first draft of the new Ptest section.
b52a9cb dev-manual: First draft of new Ptest section.
c2c11c6 ref-manual: Updated the FILESEXTRAPATHS variable description.
c8fa22d kern-tools: fix non-local patch/config location
f5c9b48 mesa-demos: fix build with non-Mesa GL stacks
06cce09 wayland: only build the scanner in wayland-native
bd25074 sudo: update crypt.patch to use backport from upstream
8e5c349 xmodmap: fix compile with gcc 4.8
48f827e kernel.bbclass: Optionally create lib dir during deploy
56d53a9 util-linux: use $PN in SYSTEMD_PACKAGES
0575b79 systemd: use ${BPN} instead of ${PN} in FILES
2ef72c3 wayland: add necessary dependencies to fix build error
d1ff4b6 opkg.inc: don't hardcode /var/lib/opkg
f3dbf8f dpkg, opkg, rpm-postinsts: avoid repackaging when changing IMAGE_FEATURES
2d94f1b sudo: handle glibc 2.17 crypt semantics
230441f icecc: Allow to use this bbclass together with external toolchains
c567366 package_rpm.bbclass: fix build multilib image failed when PR Server enabled
092beec systemd: Fix path to systemd-analyze so it end up in the right package.
cea2759 dev-manual: Spell check.
1da26b7 dev-manual: Edits to "Using a Development Shell" section.
ec95ebf dev-manual: Edits to "Image Development Using Hob" section.
c064a96 dev-manual: Edits to "Using a Git Workflow" section.
d5084b2 dev-manual: Edits to "Using a Quilt Workflow" section.
5d69e33 dev-manual: Fixed section heading capitalization.
00d534c dev-manual: Edits to "Workflow Using Stand-Alone Cross-Development Toolchains" section.
fdcbc78 dev-manual: Edits to "Building and Customizing the Image Using Hob" section.
7afa648 dev-manual: Changed title - shouldn't say "Files".
12e28d7 dev-manual: Edits to "Editing the Metadata Files" section.
e0346e1 dev-manual: Edits to "Creating the Yocto BitBake Commander Project" section.
f351ed6 dev-manual: Edits to "Customizing an Image Using a BitBake Commander Project and Hob" section.
5d422c5 dev-manual: Fixed an occurence of "User Space" in a title.
ef14eb8 dev-manual: Edits to "Running User-Space Tools" section.
7bc64bd dev-manual: Edits to "Deploying and Debugging the Application" section.
a567be2 dev-manual: Edits to "Starting QEMU in User Space NFS Mode" section.
9d677a1 dev-manual: Edits to "Building the Project" section.
dfe04dc dev-manual: Edits to "Configuring the Cross-Toolchains" section.
f235bb4 dev-manual: Edits to "Creating the Project" section.
1befaf0 dev-manual: Configuring the Target Options" section.
4bb9b85 dev-manual: Configuring the Cross-Compiler Options" section.
cd18e0e dev-manual: Edits to "Configuring the Eclipse Yocto Plug-in" section.
5c84cb1 dev-manual: Edits to "Importing the Plug-in Project into the Eclipse Environment" section.
b26d8fc dev-manual: Edits to "Installing the Plug-in Using the Latest Source Code" section.
1b9df6c dev-manual: Edits to "Installing or Accessing the Eclipse Yocto Plug-in" section.
e2f8f64 dev-manual: Edits from "Configuring the Eclipse IDE (Indigo)" section.
c3c4665 dev-manual: Edits to "Configuring the Eclipse IDE (Juno)" section.
f4b5b53 dev-manual: Edits to "Installing the Eclipse IDE" section.
096e2c5 dev-manual: Edits to "Working Within Eclipse" section.
32fdd41 dev-manual: Edits to "Workflow Using the ADT and Eclipse" section.
52c835c dev-manual: Edits to "Application Development Workflow" section.
2dbcd33 dev-manual: Edits to "Kernel Modification Workflow" section.
c8c15c2 dev-manual: Edits to "Kernel Overview" section.
1ae6f9d dev-manual: Edits to remote GDB debugging section.
24eea96 dev-manual: Edits to "Developing a Board Support Package (BSP)" section.
5e81518 dev-manual: Edits to the chapter introductory section.
823ab7f dev-manual: Did a re-org on the subsections of remote DBG section.
a422394 dev-manual: Updates to the debugging using GDB section.
ae353c2 pulseaudio: remove spurious cd in do_compile_prepend
8b29120 dpkg, opkg, rpm-postinst: fix overwriting the run-postinstall script
44120a0 ptest bug fixes
b96ad97 poky.conf: update SANITY_TESTED_DISTROS
95b71d2 routerstationpro: strip the output kernel of .comment section
cd2f003 kernel.bbclass: do_strip: allow recipes to strip the kernel
4c02dd5 kern-tools: fix conditional configuration items
7c06aec linux-yocto/3.8: qemumips boot fixes and netfilter kernel features
2a3f677 linux-yocto/3.8: qemumips graphical boot
80ab72b linux-yocto/3.8: aufs, config processing, tiny, mips boot fixes
81e6b47 kern-tools: fix excluded configuration processing
c6017ff linux-yocto/3.8: atom-pc: Update atom-pc-preempt-rt.scc to reuse config from common-pc
9c22995 linux-yocto/3.8: fix atom-pc config audit warnings
15fb7e2 linux/yocto: update AUTOFS configuration
cb4db44 initscripts: fix read-only-rootfs-hook.sh to start earlier
1b7785c initscripts: fix read-only-rootfs-hook.sh to avoid using unionfs
cf569f5 rpm-postinsts: avoid errors during boot with read-only-rootfs enabled
aa22868 rpm-postinsts: don't create broken postinst script
b52a4d3 dev-manual: Edits to "Using Email to Submit a Patch" section.
26bf080 dev-manual: Edits to "How to Submit a Change" section.
3267968 dev-manual: Edits to "Tracking Bugs" section.
6fedf7b dev-manual: Edits to "Workflows" section.
78ec6f7 dev-manual: Edits to "Basic Commands" section.
f1c2fea dev-manual: Edits to "Repositories, Tags, and Branches" section.
47fda36 dev-manual: Edits to "Git" section.
3ac6406 dev-manual: Edits to "Licensing" section.
2477c9c dev-manual: Edits to "Yocto Project Terms" section.
c218ec6 dev-manual: Edits to "Yocto Project Source Repositories" section.
c589b85 dev-manual: Edits to "Summary" section.
b7b64ae dev-manual: Edits to "Policies and Change Flow" section.
f09cca6 dev-manual: Edits to "Autobuilders" section.
47b7e49 dev-manual: Edits to "Source Control Management (SCM)" section.
f04dc51 dev-manual: Some edits early in Chapter 3.
d8f9811 dev-manual: Spelling checks for Chapter 2.
29148bc dev-manual: Edits to the "Using Pre-Built Binaries and QEMU" section.
94b786b dev-manual: Updates to "Getting Set Up" section.
90170fe dev-manual: Fixed typo.
0490239 dev-manual: Updates to the "Other Information" section.
9dae23d dev-manual: Capitalization issue fixed.
00fea17 dev-manual: Edits to "What this Manual Provides" section.
772f064 dev-manual: Modified final paragraph of "Introduction".
999e4ee dev-manual: Edits to "Introduction" - better wording.
15699d3 documentation: Updated the release month to April in manual history tables.
76d4a9a dev-manual: Fixed typo for "init_manager" in VIRTUAL-RUNTIME variable.
64a5bec dev-manual: Initial draft of the new yocto-layer section
7f21c57 dev-manual: Re-wrote the intro to "Common Tasks" chapter.
482c6a7 dev-manual, ref-manual: Applied review comments for read-only-rootfs, etc.
4be429f ref-manual: Adjusted IMAGE_FEATURES and EXTRA_IMAGE_FEATURES notes
2580fcd dev-manual: Updated to customizing image through variables section.
3ccd6fd dev-manual: Changes to the read-only root filesystem section.
46a05ed ref-manual: Review comments from Paul Eggleton into the Migration section.
8acf96c ref-manual: New 1.4 Migration section added.
7b065b0 dev-manual: Applied Paul Eggleton's Build History Patch 5 of 5.
eb84088 ref-manual, dev-manual, bsp-guide: Applied Paul Eggleton Build history patch 4 of 5.
2b83480 ref-manual: Minor edits to patch 3 of 5 for build history.
14f33c1 ref-manual: Applied Paul Eggleton's Build History Patch 3 of 5.
e822444 ref-manual: Edits applied to buildhistory patch 2 of 5.
ea8e608 ref-manual: Applied Paul Eggleton's buildhistory patch 2 of 5.
67f4fd4 ref-manual: Edits to buildhistory patch 1 of 5.
58122bf ref-manual: buildhistory patch 1 of 5 applied.
ca6321f bitbake: Update to version 1.18.0
cfa2c54 tinylogin: Fix mix of tabs and spaces for SRC_URI indentation
e33e0a0 systemd: use update-alternatives.bbclass
05d4f94 bitbake: data.py: Add a warning when expandKeys overwrites an existing key
ac6392a README.hardware: bring up-to-date
8f64539 meta-yocto*/conf/layer.conf: tweak BBFILES comments
4b2f075 yocto-layer / yocto-bsp: tweak layer.conf comment
2a1b729 qemu script: explicitly set 32 bit depth for x86-64
ecd90bc busybox: fail on no media
2435d80 postinst-intercepts, qemu.bbclass: fix segfaults in postinstalls
8cab6d7 update-rc.d: correctly look up the initscript params with overrides
51cc49d initrdscripts: Add udev sbin based libexec path
1b93e2b bitbake: hob:Only display scrolled list of images if needed
4330e15 bitbake: bitbake:hob: use a socks proxy mechanism for git
f32d580 classes/license: remove outdated comment
78babc0 meta-*/conf/layer.conf: tweak BBFILES comment
a27557a meta/recipes.txt: add recipes-lsb4
307e860 udev: fix init script for the location of udevd
f6ae87e systemd.bbclass: restart service in postinst, not start
b49ddeb udev: Move udevd back to /sbin
9776a7e qemuimagetest/scenario: Move dmesg to end of test run
9bb5eb8 base.bbclass: Fix matching of MACHINEOVERRIDES in COMPATIBLE_MACHINE
977ea67 oe-buildenv-internal: Only add to $PATH if needed
42a72b1 libpng12: remove prefer version and add it to lsb packagegroup
ce4faa0 libpng12: rename libpng_1.2.50 to libpng12
f720f8f openssl: Upgrade to v1.0.1e
fb37dd6 classes/buildhistory: fix interaction with rm_work
51959f5 rpm: fix RDEPENDS
6ec99ee qemu: Add backported patch to address random segfaults
d852e0a oe-buildenv-internal: Only add to $PATH if needed
2dd134a alsa-tools: Fix sys/io.h patch
e57284a kernel.bbclass: do_sizecheck: update path to build image and do not delete
a650208 layer.conf: add systemd-serialgetty to SIGGEN_EXCLUDERECIPES_ABISAFE
61dfb80 scripts/oe-pkgdata-util: find complementary packages for split packages
90d38ab bluez4: add readline dependency
44b4eef systemd: Set the default firmware path to enable firmware loading in udev
9dccc97 tcf-agent: Use kill instead of killproc to stop agent
02ae9b3 smart: disable CHANNELSDIR
4e46d6f gtk-update-icon-cache-native: create wrapper script
51f8dff image.bbclass: fix postinstall intercepts fallback
a808efc gst-ffmpeg: fix --disable-yasm
647caeb insane.bbclass: Updated MicroBlaze machine definitions
6d4d42d qemuimage-tests/sanity/boot: Increase timeout
8131272 oe-init-build-env: Make it use the correct $OEROOT with zsh
a468b0d oe-setup-builddir: Allow $OECORENOTESCONF to not exist
f583587 curl: backport patch to fix segfaults
6eeb942 yocto-bsp: change qemu-based mips BSP default branch
7bff0d6 yocto-bsp: set SRCREV for arm-based qemu machines
e862011 yocto-bsp: qemu machine template updates
3b56472 yocto-bsp: use specific bsp metadata for qemu machines
00e2984 yocto-bsp: pass in file object to replace_file()
df1ad14 yocto-bsp: have replace_file() close file before copying
fd67cfd yocto-bsp: add linux-yocto-3.8-rt to templates
fd70772 yocto-bsp: add KBRANCH for existing kbranch cases
03b5c84 poky-tiny: Prefer linux-yocto-tiny_3.8
83784ee linux-yocto-tiny: Add 3.8.4 recipe
caa56bf package_regex.inc: add new regexes
d3ddccf local.conf.sample: Add info about -ptest package group
9fb13a3 linux-firmware: make the main package depend on all sub-packages
216d701 shadow: add patch to fix crypt: Invalid Argument
59c0735 tinylogin: fix segfault from crypt()
04b799b sanity/connman: when connman test fails, dump syslog
8f78158 qemuimage-testlib: add function to fetch the remote syslog
4b5001d qemuimage-testlib: silence some key warnings
3328d7c connman_test.sh: show all processes when dumping ps
9e9ea0a lib/oe/classextend.py: avoid extending any kernel package
1872ee3 postinst-intercepts, qemu.bbclass: fix issue on 32 bit hosts
419ef63 atom-pc: add i965 Mesa driver so GL works on i965 onwards
6ebbc07 site/common-uclibc: add predefined configure vars for coreutils
0b57f39 qemuimage-testlib-pythonhelper: Fix process mixups
f846195 scripts/sstate-cache-management.sh: fix return value by adding exit 0
c4329c9 site: add endianness information for libmemcached
cb4bba8 dbus: set INHIBIT_UPDATERCD_BBCLASS without sysvinit in features
5baac2d systemd: set INHIBIT_UPDATERCD_BBCLASS without sysvinit in features
0e904db utils: add helper to get all non-system packages
59e4254 oe.terminal: add tmux classes
078d3cb liberation-fonts: remove 1.06
c1a7676 libxcb: remove obsolete version 1.1.91
2e1b95d scripts/qemuimage-testlib: Dump extra info if the network doesn't come up
5444db0 ref-manual: Added preliminary migration raw text.
b11f27f ref-manual: More edits to the EXTRA_IMAGE_FEATURES variable.
5e4229e ref-manual: Edits to the IMAGE_FEATURES variable.
a1e8a7c ref-manual: Edits to the EXTRA_IMAGE_FEATURES variable.
3676e08 dev-manual: Edits to adding features through variables section.
56ce44a dev-manual: merged "updating images" into the "working with packages"
6f6d0a5 ref-manual, dev-manual: Applied review edits (read-only rootfs and package repo)
9a98f40 ref-manual, dev-manual: Review comments applied to package repository
c683dfb ref-manual: Minor edit to x32
9e5fd1c ref-manual: Edits the x32 section.
95c36b7 ref-manual: Added read-only-fsroot feature to list.
d861187 ref-manual: small corrections to the IMAGE_FEATURES variable.
c0d6c17 ref-manual: Re-write of the EXTRA_IMAGE_FEATURES variable.
46c17c9 ref-manual: Re-write of the IMAGE_FEATURES variable description.
93b9efe dev-manual: First draft of new customizing images with features section.
c47dfeb dev-manual: General clean-up edits to the customizing images section
0e0ee96 dev-manual, ref-manual: Changes to support runtime management
4ce46de ref-manual: Added Smart-enabled package feed info to section.
10da562 dev-manual: Updated the OE layer index link to existing layers.
1977dcf ref-manual: Added cross-reference link to term "Metadata".
aab8563 dev-manual, ref-manual: Rewrote the adding a package title
2ef6168 ref-manual: Updated a link because the section title changed.
b1916ac dev-manual: Updated the title for the adding a package section.
896bd5d dev-manual: Fixed punctuation.
7d78ef5 dev-manual: Added another summary bullet due to new section.
08938e6 dev-manual: fixed three grammar issues.
184a6f0 dev-manual: Applied review comments to building tiny section.
e4f0cc1 ref-manual: Edits to the "Contributing" chapter.
00e9b4e ref-manual: Spell check - fixed one typo.
63267ef ref-manual: Edits to the git rid of all output question.
3450742 ref-manual: Edits to the getting source from behind firewall question.
b866355 ref-manual: Edits to the using an external toolchain question.
59bc500 ref-manual: Edits to the spaces in pathnames question.
c010d90 ref-manual: Edits to the create more free space question.
51a17ad ref-manual: Edits to the connected network interfaces question.
eeb60d0 ref-manual: Edits to the disabling cursor question.
eb26831 ref-manual: Edits to the License Compliance question.
095e48f ref-manual: Edits to the random build error question.
a8093ea ref-manual: Edits to the behind the firewall proxy question.
6a01070 ref-manual: Edits to the machine-specific data in package question.
2462cfc ref-manual: Edits to 404 responses question.
cf3703c ref-manual: Edits to question about building on distributions.
0ec539c ref-manual: Edits to the reflash question.
bd869cf ref-manual: Edits to FAQ type of output question.
8e45b6d kernel-dev: Commented out some development notes to Darren.
a6a33e5 ref-manual: Edits to FAQ entries.
6f04a4c ref-manual: Mis-spelling corrected.
35d2925 ref-manual: Various edits the "Variable Context" chapter.
a189825 ref-manual: Various spellings corrected.
4b7512e ref-manual: Edits to TARGET_ARCH variable.
d4a0b61 ref-manual: Edits to T variable.
32123a9 ref-manual: Edits to SSTATE_MIRRORS variable.
d608b63 ref-manual: Edits to SSTATE_DIR variable.
98d10eb ref-manual: Edits to SRC_URI variable.
f66e7ff ref-manual: Edits to SDKIMAGE_FEATURES variable.
acae2ad ref-manual: Edits to S variable.
1f832c3 ref-manual: Edits to RREPLACES variable.
e0bc128 ref-manual: Edits to RRECOMMENDS variable.
17b09ef ref-manual: Edits to RDEPENDS variable.
0c6ec3e ref-manual: Edits to RCONFLICTS variable.
8428912 ref-manual: Edits to PREFERRED_VERSION variable.
f13352f ref-manual: Edits to PREFERRED_PROVIDER variable.
465f39a ref-manual: Edits to PRINC variable.
f86819d ref-manual: Edits to PF variable.
9875a46 ref-manual: Edits to PACKAGES_DYNAMIC variable.
bcc9239 ref-manual: Edits to PACKAGE_BEFORE_PN variable.
6818b8a ref-manual: Edits to MLPREFIX variable.
92c422d ref-manual: Edits to MACHINE_FEATURES_BACKFILL_CONSIDERED variable.
2878629 ref-manual: Edits to MACHINE_FEATURES_BACKFILL variable.
18aed29 ref-manual: Edits to MACHINE_EXTRA_RDEPENDS variable.
59c595a ref-manual: Edits to LINUX_KERNEL_TYPE variable.
a84d3c0 ref-manual: Edits to LIC_FILES_CHKSUM variable.
e7830e0 ref-manual: Edits to LAYERVERSION variable.
1bd8c3d ref-manual: Edits to LAYERDEPENDS variable.
96e6c35 ref-manual: Edits to KMACHINE variable.
b87ee62 ref-manual: Edits to KFEATURE_DESCRIPTION variable.
2cd3cc1 ref-manual: Edits to KERNEL_FEATURES variable.
393bf72 ref-manual: Edits to KARCH variable.
983a848 ref-manual: Edits to INITSCRIPT_PARAMS variable.
f98acd1 ref-manual: Edits to INITSCRIPT_NAME variable.
9bddea8 ref-manual: Edits to INITSCRIPT_PACKAGES variable.
fc6fffe ref-manual: Edits to INC_PR variable.
6317dba ref-manual: Edits to IMAGE_ROOTFS_SIZE variable.
a3f7e65 ref-manual: Edits to IMAGE_FEATURES variable.
fe59fed ref-manual: Edits to EXTRA_IMAGEDEPENDS variable.
f378dfb ref-manual: Edits to EXTRA_IMAGE_FEATURES variable.
e4b801a ref-manual: Edits to ENABLE_BINARY_LOCALE_GENERATION variable.
ea926b0 ref-manual: Edits to DL_DIR variable.
e2bdcaf ref-manual: Edits to DISTRO_FEATURES_BACKFILL_CONSIDERED variable.
1498124 ref-manual: Edits to DISTRO_FEATURES variable.
d14a0b1 ref-manual: Edits to DISTRO_EXTRA_RRECOMMENDS variable.
de0b671 ref-manual: Edits to DISTRO variable.
7e059f4 ref-manual: Edits to CORE_IMAGE_EXTRA_INSTALL variable.
18c0288 ref-manual: Edits to COMPATIBLE_MACHINE variable.
b3a4612 ref-manual: Edits to CFLAGS variable.
b1189b9 ref-manual: Edits to BUILDDIR variable.
33cd2a1 ref-manual: Edits to BPN variable.
1288312 ref-manual: Edits to BBFILES variable.
226de92 ref-manual: Edits to BBFILES variable.
80098bb ref-manual: Edits to BBFILE_PRIORITY variable.
15d7411 ref-manual: Edits to BBMASK variable.
2eb87e9 ref-manual: Edits to BBCLASSEXTEND variable.
3cb2451 ref-manual: Edits to BB_DISKMON_DIRS variable.
003392e ref-manual: Edits to BAD_RECOMMENDATIONS variable.
8947312 ref-manual: Edits to the B variable.
5d847ed ref-manual: Edits to the AUTOREV glossary entry.
c35b0e3 ref-manual: Edit to AUTHOR glossary entry.
d72c0e6 ref-manual: Edits to the "Images" section.
e73fc8e ref-manual: Edits to "Distro" section.
534be33 ref-manual: Edits to the introduction section.
d436614 ref-manual: Updates to the "Images" chapter.
a8532b0 dev-manual: Added some development notes on the systemd feature.
4a4d342 dev-manual: First draft of new init manager section.
072b38a ref-manual: Added new variable entry for BULIDDIR.
73d463c ref-manual: Some typos corrected via spell check.
c209bdc ref-manual: Added a note about what the chapter covers.
2cc1a1c ref-manual: Minor edits to "Using External Source - externalsrc.bbclass".
eb4d51a ref-manual: Added some links into the glossary.
c7ab29d ref-manual: Grammar and punctuation fixes.
cb234f5 ref-manual: Created a list as needed.
28ae8f9 ref-manual: Minor edits to "Packaging - package*.bbclass".
17bad27 ref-manual: Minor edits to "Package Groups - packagegroup.bbclass".
1b973be ref-manual: Substituted in a list as needed.
18437d1 ref-manual: Created a list where needed.
b92e6c2 ref-manual: Got rid of some ugly sentences.
b5792ec ref-manual: Removed non-word "subdirs".
5f480df ref-manual: Applied better wording.
658227f ref-manual: Minor edits to "Autotooled Packages - autotools.bbclass".
66e0744 ref-manual: Formatting fix for BUILDDIR variable.
e55f772 ref-manual: Added cross-reference to "Metadata" term.
594794b ref-manual: Punctuation correction.
8cefd2a ref-manual: Grammar fix.
ff02688 ref-manual: Grammar fix.
5f09310 ref-manual: Added cross-reference to term "Metadata" in intro.
64ce1b8 ref-manual: Corrected typo.
857a766 ref-manual: Added new "meta/recipes-lsb4/" entry.
5a626d8 ref-manual: Added "meta/lib/" directory and moved it.
ac04852 ref-manual: Grammar fix in "meta/recipes-support/".
2dc1756 ref-manual: Reword in "meta/conf/distro/".
8bd7304 ref-manual: Fixed syntax in "meta/conf/machine/".
4fadd75 ref-manual: Cleared up ambiguity in "meta/conf".
619e88f ref-manual: Added a link to "meta/classes/".
f06259c ref-manual: Added a link to "The Metadata - meta/" section.
87166fd ref-manual: Minor edits to "build/tmp/work/".
169d5ac ref-manual: Minor edits to "/build/tmp/deploy/images/".
adfbcde ref-manual: Added link to "build/tmp/deploy/licenses/".
4546aa1 ref-manual: Minor edits to "buid/tmp/deploy/".
6f594e9 ref-manual: Minor edits to "build/tmp/cache".
13e4ba8 ref-manual: Minor edits to "build/tmp".
7b74c75 ref-manual: Minor edits to "build/sstate-chache/".
f24c079 ref-manual: Minor edits to "bulid/downloads/".
355e35c ref-manual: Minor edits to "build/conf/sanity_info".
dd177d7 ref-manual: Minor edits to "build/conf/bblayers.conf".
6ce2cb9 ref-manual: Minor edits to "build/conf/local.conf".
dd54445 ref-manual: Added an intro to the build directory section.
47fb590 ref-manual: Changed wording for consistency.
e2e5cad ref-manual: Added an intro statement to "Top-Level Components".
d9b24ac ref-manual: Minor edits to "oe-init-build-env".
e99437d ref-manual: Minor edits to "scripts/".
8970eb2 ref-manual: Minor edits and fixes to "meta-hob/".
cd1906f ref-manual: Minor edits to "meta/" section.
fe7dd1c ref-manual: Minor edits to "build/" section.
dbcfb9e ref-manual: Minor edits to "bitbake/" section.
4277bc1 ref-manual: Fixed a typo "consits".
3cf9292 ref-manual: Minor edits to the "Migration" chapter.
afd862a ref-manual: Fixed typo "bitake" to "bitbake".
a917e79 ref-manual: Got rid of the contraction "doesn't".
88b6f72 ref-manual: Added a cross-ref to the term "Metadata"
4ca99d5 ref-manual: Fixed a typo.
cf6887d ref-manual: rewrite of license flags matching section.
30cdf93 ref-manual: Edits to the license flag matching section.
4b1833f ref-manual: small edits for variables related to licenses.
cebcfa2 ref-manual: Changed quotation characters for consistency.
8eee891 ref-manual: Edits to "Specifying the LIC_FILES_CHKSUM Variable Section"
f403f50 ref-manual: edits to "Invalidating Shared State" section.
826d56d ref-manual: Active voice applied to "Debugging" section.
36afaaf ref-manual: Minor edits to "Shared State" section.
8ddc1e3 ref-manual: Minor edits to "Checksums (Signatures) section.
881627c ref-manual: Minor edits to "Shared State Cache" section.
bd11c55 ref-manual: Restructured out the paranthetical.
0f7d5f7 ref-manual: Punctuation fix.
67c4996 ref-manual: Added a link to Metadata in the "Classes" section.
fcb34d5 ref-manual: Small fixes to the "Yocto Projects Components" section.
48d8ba7 ref-manual: Added additional topics to intro paragragh.
0f0fe73 ref-manual: Fixed typo.
c869fe5 ref-manual: Minor edits to "Enabling and Disabling Build History"
32d403e ref-manual: Edits to "Other Tips" section.
187ed1e ref-manual: Punctuation fix in "Logging With Bash" section.
b359ed8 ref-manual: Minor fixes in "Logging With Python" section.
0c0870c ref-manual: rewrite of the "Variables" section.
d9bfe5c ref-manual: Typo fixed.
4db0c32 ref-manual: Small updates to the "Running Specific Tasks" section.
8db644a ref-manual: Edits to the "Debugging Build Failures" section.
ae100bf ref-manual: Removed "/" as part of a sentence.
942f915 ref-manual: Various edits to the "Build Overview" section.
8bfd984 ref-manual: Fixed a cross-reference Heading to match.
c764672 ref-manual: Applied better wording.
99c6d51 ref-manual: Fixed typo.
0c30b61 ref-manual: List wording changes for brevity.
5d4e324 ref-manual: Capitalization fix.
72a3b4f ref-manual: Small edits to introduction paragraph.
02c6732 dev-manual: Cleaned up some "file system" "filesystem" terminology.
3362979 dev-manual: Edits to the Using GDB section
30a806d dev-manual: Applied review comments to poky-tiny section
de4f0d1 dev-manual: New section for installing different versions of a lib
d0edd46 dev-manual: Reorganization for section using libraries
ef0ef86 bitbake: propertydialog adjustments for package.bbclass
4dbdcf9 Add file information to package information window
8248561 linux-dtb: fix whitespace in bash functions
e16dc3d linux-dtb: Add simple DTB symlinks for devicetree
c1402d6 pointercal: Move override files from 'files' to 'pointercal' directory
66bee6a gcc: add patch to disable texinfo when texinfo is 5.0 or newer
dabf7a4 qemu: Add 2 patches to fix build with texinfo-5
6ad0467 qemu: Enabled SDL when compiling for target architecture
88f4466 python: adding missing runtime dependency python-io to python-pprint
b5f842a libproxy: add dependency on glib-2.0
b450344 rpm-postinsts: Split out run-postinsts
4d30973 gst-ffmpeg: configure-fix patch used wrong test
4ce8a67 icon-naming-utils: import version 0.8.90 from meta-oe
12c9f9a xserver-nodm-init: Add xuser to input group
530b3b3 udev-extraconf: Add rule adding input devices to input group
0d21708 base-passwd: Add input group
d040acb buildhistory: record tag names and show warning when the same tag corresponds to different revision
fe336b1 poky.conf: Use weaker assignment for PREMIRROR
9cd3816 routerstationpro: swap KERNEL_IMAGETYPE and KERNEL_ALT_IMAGETYPE
22133e5 poky.conf: added distro codename variable
8f262bf atom-pc: Update to linux-yocto_3.8 (3.8.4)
c7f5285 classes/sstate: avoid traceback when no files have been staged
6c22c59 qemu script: explicitly set 32 bit depth
ee22db4 gst-plugins-bad: disable librsvg when x11 is disabled
70a599a alsa-tools: fix build when x11 and gtk+ not available
2d4f1fd runqemu-internal: use MACHINE_SUBTYPE variable for qemuarm*
8866aee package_deb.bbclass: fix 'armel' override
94041f2 qt-mobility: added list of modules to be compiled
27296bd util-linux: Use u-a for getopt
3e4655d archiver: fix srpm archiving build errors
805eede base.bbclass: Update the preferred_ml_updates
fd4e5c6 meta-yocto/conf: Add conf-notes.txt
c0910f2 update-rc.d, systemd: redirect also stderr from type
c47b773 openssh: don't add update-rc.d to RDEPENDS
2375ff3 linux-firmware: Add missing license information for wl12xx
3ba2ad2 linux-firmware: Package vt6656, ath6k, ath9k and ar9170
19a6090 linux-firmware: Package Reaktek and Broadcom licenses
acd3735 linux-firmware: Remove duplicaed license from rtlwifi subdir
0079740 linux-firmware: Remove 'Makefile' from packages
280374f tcf-agent: Don't download epl-v10.html just for LIC_FILES_CHKSUM validation
69aaafe remove gtk-update-icon-cache-native virtuals
e1dbbdc gtk+: don't provide native build
23b9baa packagegroup-toolset-native: replace gtk+-native by gtk-update-icon-cache-native
13837e5 sstate.bbclass: remove reference to gtk+-native
46e1a4f seperatebuilddir.inc: remove reference to gtk+-native
3ee9d36 lsb: distro codename info added
238244c pcmciautils: fix segmentation fault of pccardctl command
510d8b5 connman: added wired setup for systemd
b50626c sstate: add -f to mv when moving sstate files into place
1f48f74 linux-yocto-rt: integrate 3.8.4-rt2
5638954 kernel-yocto: use KBRANCH as default build branch
8452199 linux-yocto/3.8: update mips SA_RESTORER fix
0d47a7d bitbake: hob: giving focus to the search field loses the table sorting
b5b1592 bitbake: hob: add tooltip on "clear search" button
19ebf1d bitbake: Removed popup when including a package
f988ca1 remake: Fix out of tree builds
f802d7f rpm: Ensure rpm depends on rpm-postinsts
c62d869 build-appliance-image: fix git proxy access
92aeb31 qemuimage-testlib: Fix quoting issue
cc7f542 qemuimage-testlib: Use ww option to ps to ensure command output isn't truncated
de208eb qemuimage-testlib: Increase qemu startup timeouts
e9866ee meta/lib/oe/lsb.py: extract only the needed info from lsb-release
851f1e3 scripts/contrib/build-perf-test.sh: add timings for bitbake -p
a105bc4 scripts/contrib/build-perf-test.sh: add option to allow cherry-picking of fix revisions
c6f9e4a scripts/contrib/build-perf-test.sh: add a global results file
5769b59 scripts/contrib/build-perf-test.sh: add a script for build performance tracking
fd900c1 systemd: Add new package systemd-kernel-install
911dbbd bitbake: bb.tests.fetch: Opt-out for unittests that require network
2f4fe1e bitbake: hob: Search strings and results should be persistent
e98716f bitbake: packageselectionpage.py : added information to hob
026914e bitbake: hoblistmodel.py : passing the package information to hob
d08acf9 bitbake: propertydialog.py : added 'Package files' functionality
6d9f418 bitbake: cooker.py : added variables related to cache_extra
43a3a4b bitbake: cache_extra.py : added package information
4a5751f coreutils: Fix out of tree builds
688c4e8 elfutils: remove i386_dis.h/x86_64_dis.h compilation targets
1e82bc1 packageinfo.bbclass : extended functionality
841ec52 coreutils: update to upstream version 8.21
741b8d7 dbus: Depend on dbus-ptest-ptest
8eb1fd4 image_types.bbclass: Replace squashfs-lzma with squashfs-xz
0051c32 libpng: add version 1.2 back
e0da509 init-install.sh: remove unnecessary udev rules file to avoid error messages
7698f26 dosfstools: really compile supporting large files
c9643b0 boost: Add real native support
a0bd02d oe-setup-builddir: Possibility to customize text.
c531851 wayland: upgrade to 1.0.6
53beaa6 weston: upgrade to 1.0.6
9a3fbf9 classes/buildhistory: improve SRCREV recording
38150f1 systemd: Upgrade to 199
4b50385 rpm: split out run-postinsts
bacdb99 meta/lib/oe/lsb.py: fix data extraction from /etc/lsb-release
4dc31a3 base.bbclass: When we use fakeroot, also use it for devshell
cbdbc54 package_regex.inc: Added regex for elfutils
813d44e poky.conf: enable Wayland DISTRO_FEATURE
1eb5214 qemuimage-testlib: Capture stderror in the logs as well as stdout
f173166 systemd: Upgrade to 198
eddba86 glib-networking: Disable libproxy and gnome-proxy since they're not in DEPENDS
9d77233 xserver-nodm: Correct initscript header
7b5f838 qemu: Add missing DEPENDS on dtc
1c7fc0a local.conf.sample.extended: remove obsolete DISTRO_FEATURES_INITMAN reference
5a1d4be classes/buildhistory: ensure SDK package lists include complementary pkgs
e42db96 psplash_git.bb: fix do_compile by correcting the script path
9915f94 qemux86*.conf: replace XSERVER weak assignment with a hard one
f9a92d9 sysvinit: rc: exit psplash correctly
10f40af nspr: Also update nspr.pc to 4.9.5
ff94f73 uclibc-git: Fix build on x86 and move to latest master
f76d4b3 udev: move /run volatile entry to udev instead of initscripts
ce10e5f busybox: order and group initscript variables logically
c5b6125 dbus: explicitly disable systemd when no systemd
6f77bf0 systemd: recommend systemd-compat-units
f2561f5 systemd-compat-units: disable dbus-1
aaaafaf Revert "base-files: add fstab for systemd based systems"
f2165d2 packagegroup-core-boot: revert to specifying sysvinit as default init manager
dd65d84 default-distrovars: remove obsolete DISTRO_FEATURES_INITMAN reference
326f8e3 bitbake.conf: explicitly backfill sysvinit, not DISTRO_FEATURES_INITMAN
bb3fa3e default-distrovars: don't add INITMAN to DISTRO_FEATURES and DISTRO_FEATURES_BACKFILL
d82e303 update-rc.d/systemd: change communication variable name
a89520f systemd: add udev init script for hybrid sysvinit/systemd usage
7bb060e systemd: check for systemctl first, and don't force systemd to be installed.
49ae578 update-rcd: drop depends to recommends, check for update-rcd in scripts
40a15da util-linux: split uuidd into it's own package, and enable for systemd
55ba8ea update-rcd.bbclass: handle both sysvinit and systemd features being present
e92dfa1 default-providers: change udev selection logic
88cea75 systemd: split out the hwdb data
b597539 systemd: don't depend on the PCI/USB databases
aeaee71 core-image-minimal-initramfs: don't install busybox-syslog
8502787 systemd: merge udev-systemd into udev
123e3c2 systemd: make xz support (compressed journal) optional, defaulting to on.
c2aab97 busybox: add strictatime support to mount
58a6a7c busybox: enable systemd integration for syslogd
bdca492 classes/rm_work: rename RM_WORK_WHITELIST to RM_WORK_EXCLUDE
a8f9229 binutils: Don't generate .PPC.EMB.apuinfo sections for 64-bit output
6da3aca rpm: Fix debugedit buildid processing
21288ac grub-efi-native_2.00.bb: fix a build issue
4bf20a3 linux-yocto/meta-yocto-bsps: update h/w references to v3.4.36
566e969 Added regex for gtk-update-icon-cache-native
27bc091 linux-yocto/3.8: qemuarm boot fix
64b3a37 linux-yocto/3.8: fix perf host contamination
16c2560 linux-yocto/3.4: import v3.4.36 -stable fixes
0a81ed2 kern-tools: initialization and meta branch fixes
24bc131 linux-yocto/3.8: introduce v3.8.4-rt1
86c59b1 linux/yocto-3.4: update to v3.8.4
ec92107 linux-yocto/3.8: allow kernel feature _appends to be overriden
720492d qemuimagetest: collect and print runqemu output
b45d63e qemuimagetest: fix erroneous ps errors when qemu couldn't be started
60c8b25 eglibc-locale: Ensure files have correct ownership
95990da font-alias: Add depends on font-util-native
a28005a opkg-utils: Update to newer git rev for bashism fix
3a78a23 package.bbclass: Correctly handle /usr/src/debug file ownership
f36926a docbook-utils-native: Unbreak the build after source and build dir split
18c888d at: Fix --with/without pam options
c376f1f package.bbclass: Ensure debug source file is generated correctly
88fa952 conf/machine: Clean up MACHINEOVERRIDES handling
7a8f3f7 package.bbclass: Handle subprocess errors correctly
d12980f gnupg: Add symlink for gpgv
5a9d83d rpm: Add workaround for debugedit-segv
5ec19c8 nspr: remove unnecessary files from the main package
a6c6a8d bitbake: bitbake/fetch: Add git submodules fetcher
8054716 bitbake: doc/bitbake.1: Update with missing parameters
9fa7608 packagegroup-core-lsb: add nspr
78f52c7 xf86-input-evdev: add mtdev dependency
d4b884d lttng: babeltrace: Update to upstream version 1.1.0
659aadb libxcb: fix repeated configures
3c5f4d5 separatebuilddir.inc: mxsldr should never have been added to this list, remove
9f438fc tcl: Fix the location of the installed headers
e6dad38 valgrind: Fix out of tree builds
554e3d2 package/populate_sdk: Move functions from package_* to populate_sdk_*
3fff11a libpcre: Fix BUILD_CFLAGS for out of tree support
8805fa2 sudo: Fix out of tree builds ${B} != ${S}
b27a0b7 Perl packages shouldn't be allarch
1eb2b3d packagegroup-core-tools-debug: split out Eclipse packages
e95ccb7 packagegroup-core-tools-debug: split out Eclipse packages
131b668 packagegroup-core-tools-debug: remove rsync
c2fd9a1 sudo: Compile mksigname and mksiglist for build host
619e1df polkit: remove
e887bd9 linux-firmware: Package Broadcom firmwares
30ad607 cairo: explicity disable lzo
4626289 classes/buildhistory: trim trailing spaces in file listings
59e4815 classes/buildhistory: implement history collection for SDKs
9e366e1 poky.conf: Include separatebuilddir.inc
2143c99 libuser: Use abs_srcdir instead of srcdir
031305f ref-manual: Edits to make section heads consistent capitalization
315a315 dev-manual: Updated the "Core System Development" section
89fa4b26 dev-manual: Wording change to GDB example.
240d78e dev-manual: Updated path in cross-GDB package example.
33f2c1a dev-manual: Reword for when to use BBMASK.
9114dfc profile-manual: Updated sysprof basic usage section
d6cd062 profile-manual: updated the Oprofile section
e5087d5 profile-manual: Updates to LTTng section setup
9c6a8b8 poky-ent: Updates for the 1.4 release.
7058363 dev-manual: second pass of poky-tiny section.
ac15c28 dev-manual: First pass at poky-tiny section.
9f1b358 dev-manual: Added more examples of non-poky distros to note.
6b4e25a adt-manual: Added note to indicate ADT is distribution neutral.
9a51d0a dev-manual: Applied review comments to creating distro section
a865315 dev-manual: applied review comments to create own distro
89b6819 dev-manual: Created list for other layer mods for other distros
ac18d66 dev-manual: Added notes about creating your own distro
e7df816 dev-manual: fixed broken links
cc79dfd dev-manual: Fixed two typos.
1996be8 dev-manual: First draft of "Creating your own distro" section.
e0144f2 (distro-alias|maintainers|package-regex).inc: mesa-dri -> mesa
0a57646 atom-pc.conf: replace mesa-dri with mesa
b304742 scripts/lib/bsp: replace mesa-dri with mesa in machine.conf files
a45c960 vte: Fix conflict between FILES_${PN}-dbg and FILES_vte-dbg
e66deb0 mesa: rename mesa-dri recipe to just mesa
c2f60b6 local.conf.sample.extended: update for disk monitor
2dd911d poky-floating-revisions.inc: remove the duplicated SRCREV_pn-exmap-console
5005857 maintainers.inc: remove several duplicated lines
5b5e038 fix march sanity check issue
c896db7 perl: remove the duplicated RDEPENDS
cc38db4 perl-native: remove duplicated LIC_FILES_CHKSUM
4088403 pm-utils: remove duplicated RDEPENDS
83716e4 routerstationpro: use KERNEL_IMAGE_MAXSIZE to test the image
dae3eec package_regex.inc: added new regexes
cd4f88e bitbake: Adjust spacing on information windows
860f826 bitbake: hob: implementation of search functionality in Hob
ab7d8bd bitbake: hob: Hob custom image build error
acc5f0d mkefidisk: Use msdos partition tables
663c39d mkefidisk: Remove startup.nsh
d20eea7 mkefidisk: Always use rootwait and document kernel parameters used
24cd3dd mkefidisk: Boot with ro kernel parameter instead of rw
ca67cd9 mkefidisk: Cleanup comment length
c38da26 mkefidisk: Always specify a root= kernel parameter
403d969 consolekit: don't inherit gnome
b10f2a7 package_{ipk, deb, rpm}: drop the TARGET_OS conditional
331c1f1 package_deb: don't install glibc-localedata-i18n separately
99f8d02 coreutils: disable ACL as we do not depend on it
cf3c96a perl: avoid splitting out .debug directories as packages
9299df1 connman-conf: Avoid appending IPv4 address
e93b637 connman-conf: Move the setup script into /usr/lib/connman
fdd76ea distrodata.bbclass: added some more git processing
0e72763 distro: Add separatebuilddir.inc
0b67992 apt: Fix case where ${B} != ${S}
6594412 base-passwd: Fix case where ${B} != ${S}
32dadb9 babeltrace: Fix case where ${B} != ${S}
dacf40d dhcp: Fix case where ${B} != ${S}
29a1c77d2 directfb: Fix case where ${B} != ${S}
dfc25eb mtdev: Fix case where ${B} != ${S}
55de04d pth: Fix case where ${B} != ${S}
224b0c3 lzop: Fix case where ${B} != ${S}
512b8d2 pm-utils: Fix case where ${B} != ${S}
902b785 rpm: Fix case where ${B} != ${S}
5306f72 python-pygtk: Fix case where ${B} != ${S}
21fd35a dpkg: Fix case where ${B} != ${S}
d988fe1 xinted: Fix case where ${B} != ${S}
4dce60b texinfo: Fix case where ${B} != ${S}
55f1e47 watchdog: Fix case where ${B} != ${S}
dbfb8dc pam: Fix case where ${B} != ${S}
211aecc libuser: Fix case where ${B} != ${S}
6211a2b scripts/qemu-testlib: Add more debugging information
9ffee9a scripts/runqemu-internal: Fix lock races
ecb30a9 alsa-tools: add patch for mips since it does not have io.h
e7f7fcb grep: Always use locale.h
998ec3b core-image-multilib-example: Location of core-image-sato.bb changed
ebf4d7a runqemu: Improve error handling/exit codes
8207e3f qemuimage-testlib: Add extra debugging and sanity check
a317cc9 qemuimage-testlib: Add delay to work around races in qemu startup
808967b qemuimage-testlib: Fix IP address handling
0ff4529 bitbake: runqueue: Use taskData.fn_index[depdata] instead of uninitialized dep
b844a42 bitbake: hob: some settings in Hob are not remembered
8852e51 scripts/qemutestlib: Add better process debugging and fix process group issue
ee416ad bitbake: utils.py: fix BB_ENV_WHITELIST
af9f584 bitbake: monitordisk.py: monitor disks based on path
37bfbd6 bitbake: crumbs/recipeselectionpage: added events for the "Package Groups" "All recipes
58115af bitbake: crumbs/packageselectionpage: added event for the "All packages" tab
3c5737a bitbake: crumbs/imageconfigurationpage: added information so that it displays correctly
5b5db02 bitbake: hobwidget: added functionality for the information dialogs.
a43792c bitbake: crumbs/hoblistmodel: added information columns needed for prop dialogs
0e17528 bitbake: hig/simplesettingsdialog: added entries for information dialogs
a4fdfa7 bitbake: hig/propertydialog: new class added for the property windows.
5b4b817 bitbake: hig/advancedsettingsdialog: Added information for the information dialogs
f4bc22c bitbake: crumbs/builder: Replaced the function that displayed tooltips
f988562 bitbake: cooker: Use extra cache information
e8b0e19 bitbake: cache_extra: Add extra variables
410d1e0 harfbuzz: update the license information
4b7a37e perf: Fix parsing error
a785a9d layer.conf: avoid unnecessary early expansion with :=
15ab960 perf: make PKGV match kernel version
05985a7 layer.conf: avoid unnecessary early expansion with :=
683abbc python: fix on-target use of distutils/setuptools by removing references to buildpaths
79ec8e2 tzcode & tzdata: update to 2013b versions
6c9743d qemu-testlib: Add python helper and simplify shell
87cfde2 syslinux.bbclass: Add a default serial console option and real boot menu support
04cd51c iptables: Turn ipv6 and libnfnetlink support into PACKAGECONFIG
3c0deeb neard: upgrade to 0.10
95bb9de mkefidisk.sh: create a proper ESP
21a1040 zaurusd: Update to new git version
add11fa package: Add cachedpath optimisation
cec0102 tcltk: Fix for ${B} != ${S}
a3409b9 image_types.bbclass: only create links if the target exists
e5a2702 libuucu: Remove the COMPATIBLE_HOST check
dcf4807 lttng-ust: remove the COMPATIBLE_HOST check
b5017ee babeltrace: remove the COMPATIBLE_HOST check
5bbc8ef lttng-tools: remove the COMPATIBLE_HOST check
a7847d9 lttng-modules: remove the COMPATIBLE_HOST check
8df3d86 distcc: Fix case where ${B} != ${S}
6ce799d xcursor-transparent-theme: Refresh patches and ${B} != ${S} fixes
b1eff13 libsdl: Fix ${B} != ${S} issues
2072e82 lttng-ust: Fix case where ${B} != ${S}
748085d libnewt: Fix ${B} != ${S} (partial)
6b94c4c icu: Fix case where ${B} != ${S}
3bddba8 libfakekey: Update to new revision to fix ${B} != ${S} issues
635f498 diffstat: Fix case where ${B} != ${S}
915e133 nasm: Fix case where ${B} != ${S} (partial)
6544a91 sudo: Fix case where ${B} != ${S}
95bf5b3 e2fsprogs: Fix case where ${B} != ${S}
ecee0e6 docbook-utils-native: Fix case where ${B} != ${S}
3121128 chrpath: Fix case where ${B} != ${S}
b345b7c sysfsutils: Fix case where ${B} != ${S}
265320d rpm: Fix case where ${B} != ${S}
6a45230 rsync: Fix case where ${B} != ${S}
b34fc1c valgrind: Fix case where ${B} != ${S}
297f6f5 psplash: Fix case where ${B} != ${S}
e924d5b binconfig: Handle the case where ${B} != ${S}
64cd985 ncurses: Fix case where ${B} != ${S}
de258a9 cross-localedef-native: Fix case where ${B} != ${S}
05239ff pigz: Update to 2.3
7a3d8f6 libenv-perl: Update to 1.04
1d6f4bc sysstat: Update to 10.1.4
511d3fc lsbinitscripts: Update to 9.45
460597f man-pages: Update to 3.50
188a521 kernel bbclass: return to original directory in do_deploy
5b594a3 documentation.conf: remove unused variable QA_LOG
bac0040 layer.conf: Add LAYERVERSION and LAYERDEPENDS
fde198b cracklib: Generate compiled dict using default dictionary
6019a36 linux-firmware: upgrade to git HEAD c530a75c1e6a472b0eb9558310b518f0dfcd8860
2468bd2 qt-mobility: Add pulseaudio dependency if DISTRO_FEATURES has pulseaudio
1b87b28 qt-mobility: Add bluez dependency if DISTRO_FEATURES has bluetooth
9c03dd6 nss-myhostname: add 0.3 version
cee862f mobile-broadband-provider-info: Upgrade to v20120614
0a2eed9 apr-util: Upgrade to v1.5.1
d597dd4 babeltrace: Upgrade to v1.0.3
c6100c7 liburcu: Upgrade to v0.7.6
b03402b systemtap: Upgrade to v2.1
f8a4b4a cronie: Upgrade to v1.4.9
64e00c3 hdparm: Upgrade to v9.43
228cced u-boot: Upgrade to v2013.01.01
c28dd9b u-boot-mkimage: Upgrade to v2013.01.01
c50fdf5 u-boo-fw-utils: Upgrade to v2013.01.01
36947ae ed: Upgrade to v1.7
27dd870 gawk: Upgrade to v4.0.2
d8d263a rxvt-unicode: Upgrade to v9.17
8340991 rm_work.bbclass: inhibit rm_work per recipe
5202649 archiver: fix archive filtering behavior
6b8ed06 archive-*-source.bbclass: fix scripts_with_logs build error
354bb63 image.bbclass: Drop legacy export of IMAGE_BASENAME
dbd4138 bison: Use PATH to locate m4
abaa178 mesa-common: Fix confused variable assignment/comment
9bfd922 gcc-common: Exclude AVAILTUNES from sstate checksums
ffd8752 tune-xscale: Drop unneeded optimisation overrides
4fb8376 openssl: build always with -Wa,--noexecstack
6d9a3ac upstream-tracking: added dbus no-update reason
8f464c7 tremor: added no update reason
01a249f upstream-tracking: added bluez no-update reason
7e03d11 upstream-tracking: added polkit no upgrade reason
7f2bdd1 upstream-tracking: added glib-2.0 no update reason
15043fa yocto-bsp: add machine-user-features.scc to templates
8c9320c yocto-kernel: add support for destroying recipe-space kernel features
5edc7af yocto-kernel: add support for creating recipe-space kernel features
2518215 yocto-kernel: add support for printing kernel feature descriptions
934f2ed yocto-kernel: add support for listing available kernel features
0bfe83e yocto-kernel: add support for kernel feature add/rm/list
6911fd0 yocto-bsp: upgrade i386 template with emgd 1.16
04d15f5 yocto-bsp: add support for linux-yocto-dev
f0f436e yocto-bsp: add support for tiny
8e47a95 yocto-bsp: update linux-yocto-rt_3.4 .bbappends
3eb5590 yocto-bsp: update machine-preempt-rt.scc
03a1091 yocto-bsp: update 3.4 .bbappends
7743ebd yocto-bsp: update machine-standard.scc
63f0834 scripts/lib/bsp/engine.py: add preempt-rt and tiny to map_standard_kbranch()
ead9ada yocto-bsp: use map_standard_branch()
64bdab9 scripts/lib/bsp/engine.py: update map_standard_kbranch()
60df8b4 yocto-bsp: update default custom kernel
32a3d0d yocto-bsp: add 3.8/remove 3.2 kernel from templates
b76d079 bitbake.conf: Add LICENSE_PATH to sstate whitelist
2381e46 util-linux: Update License Information (remove GPLv3 Licnese)
a6e5752 populate_sdk_base: search for perl scripts after symlinks are relocated
2c20165 gcc-cross-canadian: do not create symlinks to non-existent binaries
175c5ce elfutils: fix the num passed to memset in ar.c
23acf50 gnupg: fix PN -> BPN in do_install for multilibs
72e77b8 ttf-fonts: fix PN -> BPN in do_install for multilibs
ef2ce8f python-imaging: fix PN -> BPN in do_install for multilibs
abf8253 libatomics-ops: fix PN -> BPN in do_install for multilibs
b5e5d25 package_rpm: Ensure PV manipulations are correct
1ceb13d icecc: improve interaction with sstate
8a9a933 elfutils: Fix size passed to snprintf for invalid sh_name case
d350bb8 binutils: fix ineffectual zero of cache and array bounds issue
5b2aaa3 xf86-video-*: delete references to mibstore.h
2fbe818 xf86-video-intel: upgrade to 2.21.3
55cbf61 xserver-xorg: upgrade to 1.14.0
31c134b inputproto: upgrade to 2.3
ef730a2 neard: Update reference commit sha1 and install script
e609afe qemu-native:fix do_compile failed on SLED 11.2
bc7bbe9 watchdog: Upgrade 5.12 -> 5.13
64b43ac psplash : update to latest SRCREV afd4e228c606a9998feae44a3fed4474803240b7
92281f9 package.bbclass: add debug-without-src PACKAGE_DEBUG_SPLIT_STYLE
23c88bb systemd: remove libsystemd-daemon linkage in libudev
af7cf95 systemd: set the location of the kill binary
d8851ea systemd: remove util-linux-mount dependency
10b6264 systemd: busybox's swapon now supports -p
03e13d8 busybox: enable swapon -p (91 byte increase)
1dc26af systemd-compat-units: add missing systemd-systemctl-native dependency
e9fc232 xkeyboard-config: remove long-gone build dependencies
0e0e078 avahi: explicitly disable systemd if we don't want it enabled
3ace8b4 xf86-video-intel: add explicit dependency on udev
7a80810 polkit: explicitly disable systemd if we're using consolekit
423d68e connman: explicitly disable systemd if we don't want it enabled
796fc77 build-appliance-image: fix lost net connectivity after restart
24ec421 build-appliance-image: ethernet connection type is now bridged
5086eb7 build-appliance-image: upgrade to newer poky revision.
cfab6e1 libxi: upgrade to 1.7
dfc5928 libical: add recipe back in oe-core
7803f5f package_rpm: Ensure package dependencies have correct version numbers
05f231d external-python-tarball: rename output package
062a5f6 lib/oe/lsb: enable getting distro ID when lsb_release is not installed
4da406c gst-plugins-gl: allow empty packages
3ebcbd3 gst-plugins-package: return few ALLOW_EMPTY settings
e1efe76 linux-yocto/3.8: update EDF configuration
5aa490b linux-yocto/3.8: bump kver to v3.8.1
62e5e3e linux-yocto/3.4: update to v3.4.34 and LTSI refresh
a3116c1 libtirpc: Fix build on uclibc
29ec481 wpa-supplicant: avoid host contamination by libnl3
e4a1927 wpa-supplicant: reorder do_configure
39ae5b5 wpa-supplicant: change S to point to the top-level directory
f6cc25c gcc-4.7: Fix incorrect warning with -Wcast-qual
975e259 dpkg depends on ncurses
cdd1038 rootfs_xxx.bbclass: fix bitbake -S hashes mismatch error
d6a06cf musicbrainz: remove
365eb9b bitbake: bitbake-layers: fix duplicated help info
0aad8de base.bbclass: don't backfill features that already exist
9b4e10a tune-cortexa*: Fix TUNE_FEATURES and PACKAGE_EXTRA_ARCHS for thf-neon
b00c6f1 gconf: make polkit an option, and disable by default
8a32acf apt-native: fix checksums
9d076dc package_deb.bbclass: set DPKG_ARCH_arm to "armel"
fe614b1 consolekit: make policykit an option, and disable by default
fb9bd46 libsoup-2.4: make libsoup-gnome optional
1905f25 strace: fix kernel release string parsing
bdd6d45 perf: rename perf_3.4 to perf
b3be332 perf: rename perf.inc to perf-features.inc
4b9b66f adt-installer: remove patches and .pc directories from the shipped tarball
cf30a36 dropbear: update patch upstream status
5848c5c mkefidisk.sh: Cope with translations and modelnames with 'Disk' in it.
5ecdb3e soc-family: fix SOC_FAMILY override order
0c02924 upstream_tracking: update no-upgrade reasons
d823759 core-image.bbclass: support read-only rootfs
142ae3b image.bbclass: add a hook funtion to support readonly rootfs
5a58631 libgpg-error: upgrade to 1.11
0572657 sudo : upgrade to 1.8.6p7
8219b2b Resolve sysvinit and util-linux conflicting man pages.
750d475 kernel-module-split: append space to RDEPENDS
00b7714 bash: Use new _ptest functions
6819d00 glib: Use new _ptest functions
0917a24 dbus: Use new _ptest functions
bb49836 ptest: Move ptest checks from recipes to ptest.bbclass
9ed59a5 rpm: save output of postinstall scripts when image first boot
f9cfc9f dpkg: save output of postinstall scripts when image firstboot
0276db5 opkg: save output of postinst scripts when image first boot
d5cfb00 Near Field communication recipe for neard 0.9
45452bc pulseaudio: respect the systemd DISTRO_FEATURE
e0e5763 pulseaudio: rationalise existing configuration using PACKAGECONFIG
1e6d0da bitbake-whatchanged: print what is about to happen
4d5ef2a bitbake.conf: add STAMPS_DIR for constructing STAMP
d4e4703 buildhistory.bbclass: add support for SRCREV logging
6159ad1 connman: Wired inteface provisioned via qemu
3ab5908 connman: upgrade to 1.12
3be1c12 sanity.bbclass:check if necessary to add march to BUILD_CFLAGS
14cd284 iproute2: Fix build failure on ppc64
f4a10bb tune-cortexa7: add tunes for ARM Cortex-A7
3e32adc tune-cortexa15: add tunes for ARM Cortex-A15
995b04a shadow: add build dependency on shadow-native
6d5019a systemd: set the location of the kill binary
653f64f systemd: remove --with-distro option, it's not used
744eade systemd: remove unused cached configure variables
1d1d8f5 systemd: make gcrypt support (for signing the journal) optional
58b1ccf populate-volatile.sh: remove trailing whitespaces
297906d populate-volatile.sh: improve the handling of link config items
bf7a5b4 populate-volatile.sh: add ROOT_DIR variable to support running at rootfs time
164a4cb bitbake: Revert "cooker: parse using bb.compat.Pool"
ed76a48 bitbake: Revert "cooker: now that we use a Pool, raise the exceptions"
6663b79 libpcap: fix description variable
1c2d445 qt4.inc: package keyboard drivers
9589531 avahi: move systemd support where it belongs
712b42c gmp: fix missing PR after update to 5.1.0a
0f62ff3 gtk-doc: Fix B verses S issues
c8fa23f slang: Fix .debug packaging warning after debug striping was fixed
66ed85a sstate.bbclass: Enclose sstate search parameter with quotes
c446bbf insane.bbclass: Add ALLOW_EMPTY to list of package specific variables
51997fe packagegroup: Set ALLOW_EMPTY on a per package basis
81ac275 package.bbclass: Ensure all .so files get stripped
bfd9b03 avahi: fix installed but not shipped warning
3936a26 perf: disable PARALLEL_MAKE
1122a41 package.bbclass: Fix do_package variable dependencies
4c6cc0b alsa-utils: Remove bogus comment
44260c2 populate_sdk_base/image: Fix races for variable mappings
ba3318e sysprof: upgrade to 1.2.0
87f8f30 puzzles: upgrade to 9765
0fcb688 ethtool: upgrade to 3.8
9640e44 gpgme: upgrade to 1.4.0
47de85e libpng : update to 1.60.0
10de306 git: updated to 1.8.1.4
edd418a libtimedate-perl: updated to 2.30
5bc1925 gmp: updated to 5.1.0a
641446e lttng: updated lttng-ust and lttng-modules to 2.1.1
3cbd4be qemu: Upgrade to 1.4.0 release
9199c33 apt: upgrade to 0.9.7.7
7e2e2cf sstate: Add gtk-update-icon-cache-native to postinst recipes list
39d9aca gtk-icon-cache: use virtual/gtk-update-icon-cache-native instead of gtk+-native
4d367eb gtk+: mark as provider of virtual/gtk-update-icon-cache-native
f075150 default-providers: add default virtual provider for gtk-update-icon-cache
f9a94af gtk-update-icon-cache-native: add
b1a7b15 sstate.bbclass: consider postinstall dependencies too
a2d97d5 apr: add libtool to SSTATE_SCAN_FILES
da9a415 documentation: Fix P entry
f35ce02 buildhistory: Allow the version backwards check to be disabled
bd73fa6 recipes: Fix ALLOW_EMPTY with no package specified
db1d22a kernel-arch.bbclass: don't pass extra args to KERNEL_{CC, LD, AR}
e3bf3d2 oprofile: update patch for powerpc64
2d16066 libpfm4_4.3.0.bb: use compatible host to limit arches
8e10538 gcc-common.inc: handle case where tune is not defined
5084807 iproute2: Fix build failure on ppc
b24ef37 package_rpm.bbclass: Optimise per file dependency handling
2b8f2e7 kernel: extract functions for kernel modules to separate bbclass
93ec7b4 xserver-xf86-config: atom-pc doesn't need a xorg.conf
7ed4523 bitbake: siggen: add quotes around variable values to see whitespace
226c438 btrfs-tools: added PV to git package recipe
96d0ef1 Python: Fix for CVE-2012-2135
82cb88e weston: recommend some reasonable fonts so the terminal works
e4125ea weston: add dependency on xkeyboard-config
0a5ed73 meta-yocto/linux-yocto: update qemu BSPs to 3.8 kernel
1a467dc linux-yocto: remove 3.0 linux-yocto recipes
d5267af qemuimage-tests/dmesg: Add exception for error message on qemuarm with 3.8 kernel
68e1c56 linux-yocto: introduce 3.8 kernel recipe
d756b3f linux-libc-headers: update to v3.8
1f82167 kern-tools: import configuration, controls and audit updates
08385ae chkconfig-alternatives-native: just append to PROVIDES
53cdf7b eglibc: move RPROVIDES to eglibc-package
7633467 bitbake.conf: move PERSISTENT_DIR outside TMPDIR
f730a3a depmodwrapper-cross: Mark as machine specific
b892099 sanity.bbclass: always use oe.lsb.distro_identifier method
22b1f63 package_deb.bbclass:fix meta-toolchain-sdk fail on do_populate_sdk
8e73fb5 package_deb.bbclass:fix the arch (replace "_" with "-") in deb package control
fe39685 package_rpm.bbclass: Fix translate_smart_to_oe arch comparison
2997653 dev-manual: Added note about BitBake processing brace characters.
d8e26e2 adt-manual: Updates to de-emphasize opt/poky and include sysroot
b7397f3 dev-manual: Added multilib example references
94153bf dev-manual: Review comments applied for "Working in team" section
f7d2cea dev-manual: Review comments added to "Working in Team" section
63788f1 dev-manual: Edits to the "Working in a Team Environment" section.
b3b0317 poky.conf: update SANITY_TESTED_DISTROS for openSUSE
cab45ae remake: added PV to git package recipe
40f8412 qemu.inc: Non deterministic compile of qemu
52d2947 Add scratch directory for NFS upcall state storage
1242dc5 zip: explictly disable bzip2 support
84baa1a perf: add bash dependency
0661518 systemtap: add python and bash dependencies
bac332a Help ncurses-native find terminfo on RHEL 6
99ff74a eglibc: fix ldd RTLDLIST
f090c15 rm_work: remove package and packages-split dirs
e43dfc9 cups: remove old patch files
23c2bd0 pulseaudio: add config option to ensure valgrind is excluded
8264863 Add KERNEL_EXTRA_ARGS parameter
86d6ec5 module.bbclass: Create a new depmodwrapper to assist cross-installs
be248b02 poky.conf: update SANITY_TESTED_DISTROS
e5f3b99 sanity: use lsb distro_identifier
8506e4f package_rpm.bbclass: add more description for pre/post scriptlets
b7cb380 package_rpm.bbclass: name postinst files with package name
820a64b perl-nativesdk:fix toolchain relocation issues
aeb53bd populate_sdk_base.bbclass:fix toolchain relocation issues
298dabb matchbox-session-sato: do not rdepend on initscripts
cef8f6b shadow: remove grpconv argc check
54aae18 kernel.bbclass: Add missing modules.order and modules.builtins
4a00757 Update pseudo to 1.5.1
ec3d3fa v86d: compile against userspace safe kernel headers
cc1c217 linux-yocto/3.4: remove cedartrail machine
d9149a0 kernel-yocto: allow building from fetcher source dir
61001aa kernel-yocto: respect SRC_URI modified branch selection
2af2545 iproute2: don't use the kernel header tree
dce1da3 connman: add header to define in6_addr
22a5264 insane.bbclass: Merge linux-gnu entries in machine dictionary and add sh4 machine.
c2fefcd rootfs_rpm: move run-postinsts scripts to rpm recipe
0ca565d systemd.bbclass: fix bb.error
5b9b014 systemd: systemd uses libkmod instead of modprobe, remove dependencies
9d6fb02 rootfs_deb: remove run-postinsts from ROOTFS_PKGMANAGE
0bedc0b sudo : upgrade to 1.8.6p6
f83ac67 gconf: update to 3.2.6
e4b7b10 minicom: upgrade to 2.6.2
3497b29 libassuan: upgrade to 2.1.0
4d1792d kconfig-frontends: Update to 3.8
cdbe76a resolvconf: Update to 1.70
ef6e4e9 file: Update to 5.13
baa357e lsbinitscripts: Update to 9.44
ea488f8 man-pages: Update to 3.47
746c1e8 boost: Update to 1.53.0
0a435c8 socat: Update to 1.7.2.1
90a9df2 nspr: Update to 4.9.5
fdfa57a qt4-embedded: Enable Linux Input support
0d2b60e binutils: Delete recipes for 2.22
68ddf00 binutils: Fix build with newer texinfo 5.0+
f55f605 packagegroup-core-tools-testapps: connman-client added
3312a2f mini-x-session: Fix starting of x-session
16e8d79 sqlite: rename version to match upstream versioning change
d1e1f19 connman: enable connman client
399ca5d parted: fix several integer overflows
9f1c471 dbus: set correct address when using --address=systemd:
f436271 lsbtest: sync test suite packages version
a18e02b sstate-cache-management.sh: don't hardcode available sstate_suffixes
2032301 sstate-cache-management.sh:fix the incorrect usage of option `-d'
fa066de sstate-cache-management.sh: fix remove duplicate failed when multiple archs
7ae2251 distrodata: added some corner cases for svn and git repos
4926276 Add kernel arch variable in SDK environment variable list for supporting build external kernel module using SDK
b7c37e4 iproute2: upgraded to 3.8.0
146bff9 dbus-glib : upgrade to 1.100.2
a810e45 e2fsprogs : upgrade to 1.42.7
98d82a5 archive-*-source.bbclass: Handle all package classes
2b1afa1 archiver class: Use tasks with sstate instead of pre/post funcs
8e849a2 util-linux: Add package for libmount
d7b248e augeas: change SRC_URI
db3b539 lttng-ust: cannot find -llttng-ust-tracepoint
914e324 bitbake: cooker: now that we use a Pool, raise the exceptions
2cc4fe4 upstream_tracking.inc: Coonectivity and multimedia packages updates
35ed979 bitbake: perforce.py: fix the perforce fetcher
593ee36 siteinfo/insane: More n32 fixups
f2e58a1 python-argparse: add RDEPENDS on python-textutils
16bbc47 base-files: fix 'dash' expanding '\n'
ace5a94 tcp-wrappers: add socklen_t.patch
7c57659 meta-skeleton: Add example multilib usages
8918247 gconf: add patch to remove '+' from invalid characters list
e96d541 tiny-init: Mount devtmpfs manually
5b9f8ae atom-pc: Prefer linux-yocto_3.4
4f4d82c install: Look for grub2 files on the initramfs, not rootfs
c6209c9 rootfs_rpm.bbclass: Handle multilib configures with different OS values
5fa61e3 package_regex.inc: updated regexes
3624d89 external-python-tarball: code refactoring
f3fe7ef genext2fs.inc: Add nativesdk build capability
13bf43f man: Remove wildcard from SRC_URI
f841c83 linux-dtc: Make KERNEL_DEVICETREE_FLAGS configurable
f1f054e libtirpc: upgrade to 0.2.3
b2e4a96 rootfs_rpm.bbclass: Reorder feed priority based on multilib image setting
5e3bbb6 base-passwd.preinst:fix creating passwd and group error
e723d3b xserver-xf86-config: empty generic xorg.conf
4f977ab xserver-xf86-config: don't ship empty xorg.conf
f017eb3 package_deb: check CONFFILES exist before adding them to metadata
b1c8872 hwclock.sh: check for the existence of /etc/default/rcS
c1aef57 ptest: Add missed .debug path
abfc956 gst-plugins-gl: add package recipe
c071797 groff: upgrade to 1.22.2
e4d2044 shared-mime-info: upgrade to 1.1
7e6d1ab cairo: upgrade to 1.12.14
a0277dd augeas: upgrade to 1.0.0
e04afd8 pulseaudio: upgrade to 3.0
c24a12d sbc: Fix PN -> BPN for multilib
f7506f1 sbc: SBC audio codec
4baf4ca gnome-common: upgrade to 3.7.4
af3c53f xvinfo: upgrade to 1.1.2
35e4e9a xrandr: upgrade to 1.4.0
2d898ad curl: update to upstream version 7.29.0
05ad246 oprofileui-server: replace obsolete automake macros with working ones
5eb6a4a gtk-sato-engine: update to git repository head
d5e4f5d webkit-gtk: replace obsolete automake macros with working ones
5ba79ef matchbox-session-sato: start the keyboard applet if we have no keyboard
4cd94db matchbox-keyboard: add RRECOMMENDS to matchbox-keyboard-applet
1cdacff matchbox-keyboard: general clean up
4878b3c pakcage.bbclass:use a better way to cut -dev/-dbg suffix
406cb99 bitbake: build.py: avoid deleting taint files when writing stamps
7d22ef2 bitbake: Revert "fetch2: Adapt encode/decode url to use URI class"
6bf55c6 rootfs_ipkg: fix BAD_RECOMMENDATIONS handling
db0a024 toolchain-scripts.bbclass: add PYTHONHOME variable to environment-setup
c78cc05 bitbake: utils: Improve remove funciton to handle whitespace
72ebe0c bitbake: bitbake/fetch2: workaround urlparse in older python not support git
9a2a321 bitbake: wget: Improve mkdir handling
7ca6e97 distro: remove web and gtkhtml2 from distro tracking
325410e bitbake: cooker: parse using bb.compat.Pool
dde7a48 libsdl: Use 'virtual/nativesdk-libx11' instead of hardcoding nativesdk-libx11
0f8d6f8 dbus: Drop x11 support from nativesdk
1dc9e9c devshell.bbclass: Allow running devshell and fakeroot together
c723d1a populate_sdk_base.bbclass: fix SDKTARGETSYSROOT value
d10a2f9 sanity: check_path_length: replace tab with 8 spaces
ec4c1ee pseudo.inc: pseudo 1.5 uprev, support extra config flags
3b9636a meta-toolchain-qt.inc: Use CXX when linking
c7b23ab maintainers.inc: update ownership of recipes
7b59a34 bitbake: fetch2: Add SFTP fetcher
96f0a39 bitbake: fetch2: Add editor modelines for bb.tests.*
dc9d989 bitbake: fetch2: Adapt encode/decode url to use URI class
f860059 bitbake: fetch2: unittests for bb.fetch2.URI class
7feca4e bitbake: fetch2: Add a class representing a generic URI
46bd4fd bitbake: fetch2: Remove unused code in wget fetcher
e13755a package_tar: Fix so it actually works
8fb417a package_tar: Remove completely pointless code
7e629a3 package_tar: bb.mkdirhier -> bb.utils.mkdirhier
398a6dc package_tar: Fix whitespace
ba110d3 package_rpm/dev/ipk/tar: Drop unused functions
74938e3 package_rpm/deb/ipk: Error if we don't find packages when creating the package index
069a332 classes: Drop none package specific packaging variable accesses
68ceb02 conf: Remove unused ROOT_FLASH_SIZE variable from the config
00bbd21 perl: Add auto/XS/Typemap in perl-doc package
55d1757 bitbake: fetch2: Ensure directory for stampfile exists before trying to create it
f7836b1 bitbake: utils: Use rm -rf in remove()
5da2485 dropbear: use pidfile for daemon start/stop/restart
c677b7c tzcode-native: Fix SRC_URI checksum typo
21efb53 local.conf.sample: Enhance the SSTATE_MIRRORS example
3b909b3 systemd.bbclass: Dont use libdir and base_libdir for units
c4d16fc gnupg: fix CVE-2012-6085
2cbefb8 sanity.bbclass: when bblayers.conf is updated, it invokes a reparse
70b731c package_ipk: check CONFFILES exist before adding them to metadata
a9608dd scripts/bitbake: Remove all instances of paths to a layer's scripts directory.
a3ca3ec alsa-lib: upgrade to 1.0.26
c96768b systemd: add udev-extraconf and USB/PCI IDs to RRECOMMENDS
4eca6f4 libpng: update to upstream version 1.5.14
3a154fa harfbuzz: update to upstream version 0.9.12
822552d gtk+: update to upstream version 2.24.15
01dab75 webkit-gtk: update to upstream version 1.8.3
e9a2c04 xev: upgrade to 1.2.1
b47e7b8 xf86-video-vmware: upgrade to 13.0.0
685e9c4 xf86-input-synaptics: upgrade to 1.6.3
15da1e1 xkeyboard-config: upgrade to 2.8
3d1fb4c libdrm: upgrade to 2.4.42
5628ab1 xf86-input-vmmouse: upgrade to 13.0.0
001fce2 xf86-video-intel: upgrade to 2.21.0
b803007 qemu: upgrade to 1.3.1
07803d5 bitbake: hob: remove save/load template functionality
e36994f bitbake: knotty.py: fix unknown event bb.event.DiskFull
86ac3b5 bitbake: bitbake-layers: make show-cross-depends avoid long path
2c5ad40 bitbake: hob: remove parsing warnings when machine is changed
0e2ee5b bitbake: hob: no sanity checks re-run
b058707 bitbake: monitordisk.py: disable the inode checking for some fs
804d1d5 bitbake: fetch2: Improve lock/done stamp file paths for local files
95e7dae bitbake: bitbake & hob: reparse config files, when sanity check updates bblayers.conf
d5ef2e5 bitbake: fetch2: Ensure expansions happen in URL parameters in uri_replace
423dd2f bitbake: ConfHandler: Use re.X to make long regexp more readable
bc7c8fa bitbake: tests/codeparser: Hack around circular inclusion problem
07dcffe bitbake: wget: Only use -O option when not spidering
f966c54 bitbake: codeparser: Track bb.utils.contains usage
7e6f9ba bitbake: codeparser: Track appendVar and prependVar calls as we do for getVar
5a4ea38 poky.conf: Add Ubuntu 12.04.2 to sanity tested distros
a02d566 Solved package namespace errors in PRS
82f2c85 tzcode/tzdata: Update to 2012j
e4ae93a tzdata: Simplify code removing not used cases
789d577 tzdata: We shouldn't override the localtime if it is valid
444b6e1 Solved package namespace errors in PRS
5dab627 insane: remove unused variable
8c8b70c remake: do not create po files
72fdc8e yocto-docs: Fixup a couple of merge issues
e57f862 dev-manual: Revision of "Team Environment" section.
a005cda dev-manual, ref-manual: Cross-references between PR Service and cache
ee180d1 template: Changed the font color for footers and headers
cd474b0 dev-manual, bsp-guide: Added some links
b876146 dev-manual: Updated PR Service section with comments
ba9fc8a dev-manual: First draft of the PR Service section.
717c56c ref-manual: Created "Development Host System Issues" section
dc7221b dev-manual: Fixed <ulink> to be on a single line.
4e13ad9 documentation: Removed three figures from poky-ref-manual
5d5800e documentation: Part 2 of 2 for YP doc integration into Eclipse.
a41a805 documentation: Part 1 of 2 updates to integrating docs to Eclipse help.
7681523 adt-manual: Added cross-reference link for Cross-dev toolchain.
0ad26c6 dev-manual: Updates to expose cross-toolchain recipes.
3c984fd kernel-dev: Added note for YP release requirements.
1263e58 ref-manual: edits to update-alternatives.bbclass description.
40fde06 ref-manual: Edits to the question on how source code is fetched.
7183fe8 ref-manual: Updated SSTATE_MIRRORS glossary entry.
846a33e yocto-project-qs: Updates to how to use local directories for source
c6f133f ref-manual: added MIRRORS glossary definition.
38670f4 ref-manual: Added PREMIRRORS glossary entry.
c28948d dev-manual: Various typos fixed
05e2c47 dev-manual: Updates to "Using .bbappend Files" section
cf10be3 dev-manual: three typos fixed.
093b007 dev-manual, ref-manual: Updates for BBPATH.
718e3b4 ref-manual, dev-manual: Updates to BBMASK variable.
6a926df ref-manual: Updates to the FILESEXTRAPATHS variable.
58f61cf ref-manual: new BB_DANGLINGAPPENDS_WARNONLY variable added to glossary.
78f1065 documentation: Add chunk.quietly option to eclipse processing
e29a40c documentation/tools/eclipse-help.sed: Fix whitespace
fcb3952 documentation/Makefile: Fix copying of figures folder
6c057d0 documentation/Makefile: Clean up eclipse target and update help.
239b469 documentation/Makefile: Added conversion of links to other documentation parts.
a11f23b documentation/tools/eclipse-help.sed: Processes external links for eclipse html files
108ffcf documentation/Makefile: logic to make all for yocto-project-qs and cleanup
0f49fe1 documentation/yocto-project-qs/yocto-project-qs.xml: Convert fake-title section into articleinfo
72639b4 documentation/Makefile: Support for making Eclipse HTML yocto project qs manual
ea2e921 documentation/yocto-project-qs/yocto-project-qs-eclipse-customization.xsl: new file
941d5e2 documentation/yocto-project-qs: Added custom title page
bbe7cb4 documentation: Move yocto-project-qs global parameters to customization file
f4bcee6 documentation/Makefile: logic to make all for poky-ref-manual and cleanup
ac3d990 documentation/poky-ref-manual/poky-ref-manual.xml: Added Title tag
c6af0b9 documentation/Makefile: Support for making Eclipse HTML poky ref manual
990fb57 documentation/poky-ref-manual/poky-ref-manual-eclipse-customization.xsl: new file
e3980c4 documentation: Move poky-ref-manual global parameters to customization file
d90e93b documentation/Makefile: logic to make all for kernel-manual and cleanup
367d699 documentation/kernel-manual/kernel-manual.xml: Added Title tag
ea7905c documentation/Makefile: Support for making Eclipse HTML kernel manual
deac178 documentation/kernel-manual/kernel-manual-eclipse-customization.xsl: new file
da8cdf6 documentation: Move kernel-manual global parameters to customization file
8d54920 documentation/Makefile: logic to make all for bsp guide and cleanup
6485078 documentation/bsp-guide/bsp-guide.xml: Added Title tag
b73e6cb documentation/Makefile: Support for making Eclipse HTML bsp guide
d37c418 documentation/bsp-guide/bsp-guide-eclipse-customization.xsl: new file
81d2bcf documentation: Move bsp-guide global parameters to customization file
42b9f2c documentation/Makefile: logic to make all for dev manual and cleanup
c94fd49 documentation/dev-manual/dev-manual.xml: Added Title tag
964db71 documentation/Makefile: Support for making Eclipse HTML dev manual
e90dab9 documentation/dev-manual/dev-manual-eclipse-customization.xsl: new file
b3f1c60 documentation: Move dev-manual global parameters to customization file
9ab3c01 documentation/Makefile: logic to make all for adt manual and cleanup
c2c3b53 documentation/adt-manual/adt-manual.xml: Added Title tag
733a44d documentation/Makefile: Support for making Eclipse HTML adt manual
2586bd8 documentation/adt-manual/adt-manual-eclipse-customization.xsl: new file
551a5ee documentation: Move adt-manual global parameters to customization file
ff553c4 documentation/template/titlepage.templates.xml: Remove title info
b15730c mulitilib_header: Avoid sstate checksum issues for -native recipes
77a4497 kconfig-frontends: Depend on pkgconfig-native
34571f4 bitbake: Remove whitelisted vars from non-task deps
83e1015 bitbake: ConfHandler: Improve regexp to fix mis-parsing of += and no whitespace
56b8bb7 util-linux: Remove -systemd package
0be6d35 Python: Add missing dependency "textutils" to "io" package
e3f5d7d multilib: Fix an OVERRIDES expansion order issue
3ec4df5 pseudo_1.4.5.bb: Finish fixing linkat()
56dc172 busybox: add config fragments
a233998 gtkhtml2: remove, nothing depends on it
e9dd482 web: remove gtkhtml2 version
600dff4 pseudo_git.bb: Bump to pseudo 1.4.4.
80d0081 libtool-native_2.4.2.bb: Always use /bin/sed for SED
4c548f1 site/x32-linux: Specify double alignment
7ed7eae scripts/qemuimage-testlib: Use wide option to ps calls
f3df254 gtk+: use gtk-immodules-cache class
6cec82f gtk-immodules-cache: add weak asignment for GTKIMMODULES_PACKAGES
73c1f09 gnome-keyring: compile schemas on host
6e0a057 librsvg: use the new pixbufcache class
c70d167 gdk-pixbuf: use the new pixbufcache class
2b24160 Add pixbufcache class
b4c89bd fontcache.bbclass: use the postinst_intercept script
ceabaf6 gtk-icon-cache.bbclass: use postinst_intercept script
5bb362a rootfs_(ipk|deb|rpm).bbclass: check package installation status after ROOTFS_POSTPROCESS_COMMAND
6cca7ef image.bbclass: add fall-back functionality when running intercepts
7306dbe Add separate directory for postinstall intercepts
c77e1f4 Cleanup of upstream_tracking.inc file
02d2a5e distro_check: Remove creation of empty Meego filelist.
604568c mesa: upgrade to 9.0.2
656891d pixman: upgrade to 0.29.2
7d8a50e cairo: upgrade to 1.12.12
1c5702f gamin: replace obsolete automake macros with working ones
628fc90 diffutils: replace obsolete automake macros with working ones
311924f systemtap: replace obsolete automake macros with working ones
4104207 libidn: remove help2man dependency
15b0bdc texinfo: remove help2man dependency
17541be libevent: fix build with automake-1.13
40962b8 Write DPKG_ARCH to /etc/apt/apt.conf
c160a98 relocate_sdk.py: allow relocate_sdk.py to work with python 2.4.x
7d023f3 populate_sdk_base.bbclass: Improve debugging capabilities for SDK installer
3eb70c0 relocate_sdk.py: Fix corruption of sdk binaries
5472873 meta-yocto: Document new oe-git-proxy in site.conf.sample
2df83a5 oe-git-proxy*: Remove previous git proxy solutions
9902eb3 oe-git-proxy: Use socat instead of BSD nc
0c988bf oe-git-proxy: Add a new comprehensive git proxy script
c7c9f6c base.bbclass: Remove generate_git_config()
ebc4a61 oe-buildenv-internal: Add upper and lower case proxy vars to BB_ENV_EXTRAWHITE
e1fb5a9 oe-buildenv-internal: Remove GIT variables from BB_ENV_EXTRAWHITE
e6053e5 qt4: use system SQLite
5f05604 gcc-cross-canadian: enable multilib support
e9aa4c2 multilib.bbclass: save multilib variables before executing the gcc-cross-canadian statements
2c87657 systemd.bbclass: use PACKAGESPLITFUNCS instead of populate_packages_prepend
ce3d508 fontconfig: rename the patches directory
e767a2f fontconfig: drop explicit -native recipe
556217d fontconfig: remove unexplainable and broken build tweaking
8c22531 lib/oe/path.py: support missing directory components in realpath()
d518019 package.bbclass: support dangling path components
00a2411 libiconv: Remove RPATH from binaries
f9b894e glib-2.0: Fix ptest to build with uclibc.
21b6ff9 lib: implemented oe.path.realpath()
f2e16c6 package.bbclass: use oe.path.realpath()
a09c5d6 update-alternatives.bblcass: use oe.path.realpath()
1a80329 ncurses.inc: Fix display corruption and add fallback for sstate compiled paths
de160bc wpa-supplicant: Enabling with systemd
7c8160c connman: Enabling with systemd
3936cef update-rc.d: don't do anything if systemd.bbclass is inherited
aaa915b avahi: Enabling with systemd
66af82e systemd.bbclass: helper class for recipes with systemd units
05ee8bc nfs-utils: Create the default statdpath
f7273d1 buildhistory: record more R* variables
98755bd buildhistory_analysis: handle more R* variables
0d85fa5 python-smartpm: show friendly error if YAML output requested without PyYAML
06e2453 runqemu: add option to make the VNC server publically available
42f221f make-3.82: Add patch from git to fix parallel make race
cf8d4f7 udev: Cleanup .inc file
aac8870 udev: PR bump
bee0b38 udev: Modify init script to use the correct path of udevadm
3085f02 distro: remove orinoco-conf
78a1de8 distro: remove clutter-box2d
13bc04a distro: remove matchbox-stroke
b6d8f96 bitbake: bitbake/utils: Improve environment handling to allow UIs access to original environment
20b4dca dbus-native: Don't install dbus-launch
decf46b dbus: Drop old 1.5.12 version
a38e4d9 udev: Add start/stop/status/restart support to init script
2e913bc initscripts: Add status function to /etc/init.d/functions
9a7b076 libcgroup: fix failure for absolute path
20d88ff rt-tests: fix cyclictest reported 1 sec latencies
0ad5e67 coreutils: remove dependency on coreutils-native
eef73b4 eglibc-nativesdk: Fix buffer overrun with a relocated SDK
981bd3a ghostscript: fix endianness detection
858646c openssl: Add mips64 configure support.
b320c22 libart-lgpl: add art_config for mips64/mips64el
3fd9c56 ghostscript: add pregenerated objarch for mipsel/mips64/mips64el
fa6c12d populate_sdk_base.bbclass: add execution permission for self-extracting archive
82b2679 scripts/create-recipe: Bugfixes for create-recipe easy_install handling.
9ea8828 qemu: disable smartcard support
d69d193 Revert: update-rc.d: disable update-rc.d.bbclass when systemd enabled
2d35828 systemd_197.bb: Point to the place where we keep the /etc/rcN.d files
7ee0579 pseudo.inc: Fix sqlite libdir again, pseudo 1.4.3
dab4662 create-pull-request: Error message on missing -u
81117fd base.bbclass: remove redundant setting of MAKE
2e5b6a6 uclibc: turn on kernel module support
b228521 uclibc: add c6x arch
736383a base.bbclass: Commentary typo fix
b07759a yocto-bsp: prepend includes in machine.scc files with machine
8c26342 qemu.bbclass: fix segfaults when running through pseudo
9f5a6f8 qemu.bbclass: Use the correct qemu binary in multilib cases
c920f1a image.bbclass: Add MLPREFIX to DEPENDS
14fa964 qemuwrapper: Don't use STAGING_BINDIR_CROSS directly
5db5904 sanity.bbclass: Check for DISPLAY for qemutests in BB_ORIGENV now
a0ef94d directfb: Really disable mesa
8f476a7 poky: Enable pkgvarcheck warnings
1ef926c bitbake: prserv/serv.py: Fix logging in daemon mode
bdfc520 bitbake: bitbake: Always use separate process for PR Service
afd24fa imagetest-qemu: Adapt to bitbake environment changes
fef8454 terminal.bbclass: Use BB_ORIGENV to restore user environmental variables
bc2b60c bitbake.conf: Update hashconfig after BB_ORIGENV changes
43bc214 package.bbclass: Replace undefined 'src' with valid variable
7980773 package.bbclass: Ensure package_get_auto_pr is run at the correct point
3b39e53 bitbake-prserv-tool: show error when export file does not exist
2180cc3 initiscripts: Fix populate-volatiles.sh whitespace
56bc2bb insane.bbclass: Add missing R* variables to pkgvarcheck
8868530 libxscrnsaver: improve RREPLACES to add libxss only for PN
20dc0fc connman: be explicit when enabling ofono
451f2d0 package.bbclass: return list of packages created in do_split_packages
ccde53b sanity.conf: Update minimum bitbake version
945cd71 bitbake: Update version to 1.17.0
fe84fe0 bitbake: fetch2: Remove broken git variables from the environment
3863dfc bitbake: fetch2: Export upper and lower case environment variables
6fecb1a bitbake: cooker/utils: Drop custom 'interactive' variables list and store environment in BB_ORIGENV instead
1f192a7 bitbake: compat/utils: Add copy of python multiprocessing pool for pre 2.7.3 issues
bc8150d scripts/create-recipe: Python improvements for create-recipe.
5b7c822 package.bbclass: Pre-expand some variables to save time
78955b8 package.bbclass: Better document the different phases of operation
4cae28e package.bbclass: Add PACKAGESPLITFUNCS variable
1c906e7 package.bbclass: Simplify empty directory removal
48f8eec package.bbclass: Various minor performance tweaks
ee5e443 package.bbclass: Make use of cleandirs and dirs function flags
88badcf kernel.bbclass: Improve populate_packages_prepend
85b4891 package.bbclass: Rewrite split_and_strip_files
f2ee5b4 package.bbclass: Fix up bb.mkdirhier/bb.copyfile usage
f0bda89 update-rc.d: Drop OVERRIDES code
f8ea6a8 staging.bbclass: Drop unused/legacy function
1e593e9 staging/insane.bbclass: Move legacy do_stage check iinto insane.bbclass
9244e44 insane.bbclass: Add documentation headers for logical code blocks
61c51a1 insane.bbclass: Add pkgvarcheck to check for suboptimal usages of variables
bf25dd2 package.bbclass: use the multiprocess pool from bitbake
b34fd60 package: Process package stripping in parallel
e45db24 package: Don't export PATH
d81aa06 package.bbclass: Multithread per file dependency generation code
6c6f6b7 sstate.bbclass: Ensure build directory is cleaned to start with
dd61d22 sstate/path.py: Add copyhardlinktree() function and use for performance optimisation
6c7d6d6 systemd: remove /var/cache from volatiles
2a9dcc4 rpm: remove /var/volatiles/cache/rpm from the FILEs list
ebe0730 initscripts: remove /var/cache from volatiles
0bb5577 fs-perms: remove /var/cache from volatiles
e380838 base-files: remove /var/cache from volatiles
4832cd2 qt4: fix CVE-2013-0254
4cb7c9a netbase: split up in netbase and init-ifupdown
7c106a3 initscripts: add read-only-rootfs-hook.sh script
db5847d initscripts: let populate-volatile.sh create the /tmp link
f7bb0a9 sysvinit: add ROOTFS_READ_ONLY variable to rcS-default
ac2671a linux-yocto: KERNEL_FEATURES should reference full scc files
c5fe8bc linux-yocto/3.4: update to v3.4.28, 3.4.28-rt40
fe4af0a linux-yocto/dev: linux-yocto development tree tracking recipe
b2d06ba intltool: updated to 0.50.2
10f05d5 classextend.py: use explode_dep_versions2 in order to preserve versions too
f1dc17d oprofile: fix cross compile on powerpc and add libpfm4 dep
44f5f3f libpfm4_4.3.0.bb: add libpfm4 recipe needed by oprofile for ppc
0a1fa46 quota_4.01.bb: add e2fsprogs in DEPENDS
946e856 glib: disable selinux for native builds
df4f0c2 pulseaudio: do not postpone postinstall
e52c8b8 package_ipk, rootfs_ipk: remove the "set -x"
be82ae9 liberation-fonts: use the new fontcache.bbclass
e46f336 fontconfig: add sysroot option to fc-cache and fc-cat
5479aa4 image.bbclass: add a proper error message if hook script fails
f33014f qemu.bbclass: return qemuwrapper instead of qemu-allarch
49f5daf add qemuwrapper-cross recipe
c31bf65 add fontcache.bbclass
8f262e8 tcp-wrappers: remove size_t.patch
7f484df rpcbind: replace obsolete automake macros with working ones
30996a1 matchbox-wm: update to git master head
5549af4 opkg: replace obsolete automake macros with working ones
52b1b6c send-pull-request: add extra CC argument
77b1409 ipk: use OPKGLIBDIR in all places
626dc8b net-tools: upgrade to v1.60-24.2
4296d65 qmmp: update to 0.6.6 and fix
e2ade5e nativesdk-qt4-tools: fix DEPENDS, as nativesdk is now prefixed
ee1f126 bitbake: bitbake: fetch2: Print the complete SRCREV variable name when INVALID
97b7e4f crosstap: handle hyphenated x86_64 target arch
898a809 libgcc: Disable multilib install for nativesdk
7e9cb43 dropbear: fix RPROVIDES
04361bc openssh: fix RPROVIDES
36dd58a sip.bbclass: improve RDEPENDS to add python-sip only for PN
c6d843f v86d: Use BP instead of P
f7ed94c blktool: fix SRC_URI typo
f4b0cc5 gcc: target: fix libiberty removal
bf6c100 consolekit: add arch independent unpackaged files
c85c6ca run-postinsts: use BPN instead of PN
7cf289b taglib: use LIB_SUFFIX in order to determine the correct baselib
8572f07 foomatic-filters: fix CUPS directory config
70114d9 syslinux: use BPN instead of PN
ece7f0b sgml-common: use ${PN} instead of sgml-common
8834ca7 console-tools: fix linking when using the multilib compiler
685da74 enchant: use BPN instead of PN
0ce97e5 cpan-base.bbclass: Improve RDEPENDS to be package specific
2f497d0 initramfsframework: Improve RDEPENDS to be package specific
8a2d97e dbus-ptest: Improve RDEPENDS to be package specific
0514ec9 hwlatdetect: Improve RDEPENDS to be package specific
d5be193 libxml-sax-base-perl: Improve RDEPENDS to be package specific
b6bade2 initramfs-live-boot: Set RDEPENDS on the specific package that needs it
121e928 gdb-cross-canadian: Set RDEPENDS on the specific package that needs it
3b543d6 qemu: Set RDEPENDS on the specific package that needs it
3ed0077 v86d: Update SRC_URI to point to new file location.
be7cabb dpkg: Add missing pkgconfig dependency
ca97682 scripts/wipe-sysroot: add script to safely wipe the sysroots
4872ba3 package.bbclass: Allow per-package SKIP_FILEDEPS
aa653b9 kernel-yocto/linux-yocto-custom: support low bandwidth options
de22111 kernel-yocto: allow multiple / shared kernel feature directories
167e470 kernel-yocto: fix .scc and .cfg matching
996c3f8 kernel-yocto: make configuration audit details debug only
8d4b82e guilt: remove GIT_EXEC_BASE export
b624b06 polkit: Enable systemd support
d43cb49 matchbox-stroke: remove
da8c827 clutter-box2d: remove
a233b04 packagegroup-core-tools-testapps: remove clutter-box2d
1b3aad9 pax-utils : upgrade to 0.6
8a5fc57 orinoco-conf: remove
87cd4fc packagegroup-core-x11-sato: remove matchbox-stroke
691a990 distcc: updated to version 3.1
57bbb7d initramds-framework: add shutdown hook for udev
60f9aae (distro_alias|maintainers|recipe_color).inc: remove update-modules
ed523e1 Remove zypper from distro tracking files
1d376f9 pulseaudio_2.1: Remove the dependence of fftw.
3c1b131 cmake: reset B from autotools, as this class doesnt like it
e3b778a gdk-pixbuf: use correct build path when installing
01bf147 libpcap: fix relative path references
43e6131 gtk+: add missing $S references in do_install
4c01786 avahi: fix relative path in do_configure
285471c update-modules: remove recipe from oe-core
75f470c qt4: Add space for _appends
7a3d352 gtk-icon-cache: Fix rdepends construction
e6149ec qemux86-64: Disable paravirt guest, causes test failure on older kernels
920ddb4 e2fsprogs : upgrade to 1.42.6
20822de icu : upgrade to 50.1.2
947e95b eglibc: don't list the same path twice in RTLDLIST
703b70c gcc: enable multilib for target gcc
6228587 module-base.bbclass: Call make instead of oe_runmake in do_make_scripts
912ecff libfm: add dependency on libexif
966aa9e module.bbclass: Allow for modules to be packaged seperate from ${PN}
497ec60 gst-plugins-bad: remove musicbrainz build-dependency
f63db21 git: updated to 1.8.1.2
973e85c dhcp: Fix unshipped WARNINGS
da57e6b license: fix LICENSE_CREATE_PACKAGE to stay disabled by default
c0f4195 multilib.conf: add TARGET_ARCH & TARGET_SYS to MULTILIB_SAVE_VARNAME
4873366 autotools.bbclass: add EXTRACONFFUNCS variable
b11f1bf systemd: systemd-analyze remove python runtime dependencies
6ff6b79 systemd: systemd-analyse has moved to base_bindir
9926eb5 systemd: Drop ppc build breakage patch for test-unit-file
f95bbe3 systemd: bump PE to provide upgrade path from meta-systemd recipe
9ab151a xinetd: enable tcp-wrappers support
9f2784f Sudo : upgrade to 1.8.6p4
b5392a4 systemd: honor ROOT_HOME
8b8caef oprofile: remove AX_KERNEL_VERSION from acinclude.m4
e771031 oprofile: add kernel dependency
8f63fef busybox: update test case du-k-works
9a9848d python-smartpm: multilib fixes
bbc374a metacity: remove, migrated to meta-gnome
f938ef0 libcanberra: remove, migrated to meta-gnome
0516e9a Flex: use proper m4 binary on target
385854d rpcbind: Dont use nss with uclibc
a3525ea libevent : upgrade to 4.0.21
e71a622 blktool : upgrade to 4-6.1
1e03821 libnl: Update to 3.2.21
6ff77d2 sqlite3: Update to 3.7.15.2
26ea367 package.bbclass: Use expanded RDEPENDS in read_shlibdeps
244f107 package: Create global package file list and use throughout PACKAGEFUNCS
ed931d0 package.bbclass: Improve package_fixsymlinks
398d62f package.bbclass: Tweak PACKAGEFUNCS
b369a36 package.bbclass: Split out package_fixsymlinks function
f955e4e package.bbclass: Move PKG handling code to emit_pkgdata
8a0b457 package.bbclass: Avoid copying the datastore for FILES handling
b0a2f55 package.bbclass: Check FILES once, not once per loop iteration
ae8586c package.bbclass: Add a shortcut exit from the mkdir function
afb1b3f package.bbclass: Improve kernel module handling
fed8dff package: Rename splitfile functions to something more descriptive
8e5d8ed multilib.conf: Use BASELIB to set baselib, not hardcode the value
e984aee sqlite3: Ensure MLPREFIX is applied to AUTO_LIBNAME_PKGS
8eab3f5 QT4: use '-no-neon' if cpu does not support neon
19ac10a dpkg-native:fix dpkg-scanpackages error at deb image creation time on Fedora 17
982eefe mini-x-session: Fix runtime when using without session contents
3ca9ff7 connman-gnome: Add DEPENDS on intltool-native
9a9586c libaio: Fix MIPS system call interface
12e76e1 multilib: skip packages that provide virtual/kernel
dbfa6f9 kernel: avoid copying unnecessary files during do_install
4a4049b mesa-dri: add extra dri drivers
3f1280d insane.bbclass: removing outdated comment
f651a84 oprofile: avoid processing files under .pc
8d80483 bitbake: bitbake-layers: print the recipe's depends that crosses a layer boundary
d82eac8 bitbake: ssh.py: add example SRC_URI
9df0588 bitbake: ssh.py: throw ParameterError when someone tries ssh://foo; protocol=git
e863851 bitbake: ssh: fix fetcher
c30ef88 bitbake: hob: eliminate the "by recipe" grouping in the packages table
b2ab771 bitbake: hob: Use a GtkTreeView to present and configure the sstate mirrors
785e1ba bitbake: tinfoil: support other fds, enable color support
5deae14 bitbake: hob: small fixes to parsing warnings dialog
f0aef99 bitbake: bitbake & hob: implement functions to assure consistency for configuration files
33c6c41 harfbuzz: fix install of version.h
9a26b9c rpm: Ensure native binaries are correctly wrapped
df70804 dev-manual: Added text explaining "meta" is not required for layer name
eddb817 ref-manual: Updated FILESPATH glossary entry
bdc130b dev-manual: Qualified the use of meta-intel in the BSP workflow
90a183b dev-manual: clarify what source is being archived
e13a2ee dev-manual: fix gpl source release example
9a7bd85 dev-manual: use path independent bblayers.conf example
2373792 ref-manual: Changed the default BB Signature Handler
d70e93c mega-manual: Removed support for old kernel-manual.
eddb116 Makefile: Removed bits that support kernel-manual
5174240 kernel-dev: Added "-dirty String" section.
46dcd9f kernel-dev: Added "Inspecting Changes and Commits" section
d36e479 kernel-dev: Added "Maintenance" appendix.
805a36c ref-manual: Fixed broken link to "Build Directory" term.
a24cb73 kernel-dev: Added "Kernel Architecture" section.
36b5f97 kernel-dev: Changed the FAQ to be an appendix.
9ba5e61 kernel-dev: Updates to support new concepts appendix
d029e78 kernel-dev: Added new appendix for kernel concepts.
b80e983 kernel-dev: Added an AR to the beginning for Darren
c9ea3c2 package_ipk/deb/rpm: Ensure deploy staging directory is empty before rerunning task
fb2de94 directfb: Explictly disable mesa
643bac1 insane.bbclass: Fix incorrect getVar call
b01b1a7 sstate: Move debug comment to more logical place
53dec01 bitbake: cache.py: Drop support for BROKEN variable
b4f407c alsa-tools: upgrade to 1.0.26.1
27c8af1 module.bbclass: Don't add pkg_postinst/pkg_prerm to all packages in recipe
9618095 rootfs_rpm: Escape the backtick to ensure the ls runs on the target
cfb0829 bitbake: build.py: Dump out performance data of individual tasks
dd335b0 bitbake: utils.py: Add function for processing profile output
469bf3c mtools : upgrade to 4.0.18
f3dfb7c openssh : upgrade to 6.1p1
3ba2ce2 migrate_localcount.bbclass: use PRAUTOINX instead of PN & PV
30ec311 libcgroup: Update to 0.38
e1b9645 resolvconf: Update to 1.69
8d81257 util-linux: Update to 2.22.2
98a5433 dhcp: Update to 4.2.5
7fed403 file: Update to 5.12
6c11a8d cracklib: Update to 2.8.22
a495cc6 libidn: Update to 1.26
fffd4d6 man-pages: Update to 3.45
0b94ce4 mc: Update to 4.8.7
5640021 sysstat: Update to 10.1.3
9f45ab7 rgb: Update to 1.0.5
a4fbcfb libnl: Update to 3.2.19
de51b42 systemd: Upgrade to 197
f366fd3 icu: Fix build on uclibc
bf41d31 quota: inherit gettext
af6d093 eglibc: Backport upstream 2.17 patches
482a933 eglibc_2.17: Fix Tibetian locale generation error
d7b8ad5 eglibc: Upgrade recipes 2.16 -> 2.17
b71a16e package.bbclass: remove RRECOMMENDS on base packages for locale packages
52268c7 buildhistory.bbclass: track also complementary package information
e6cdf99 libcgroup: fix the QA issue for pam_cgroup.so*
43c2c5b sysvinit & initscripts: use update-rc.d
77eaad8 valgrind: update to 3.8.1
a921ed0 libaio: add aarch64 support
f876c13 mtd-utils: split into multiple packages
336d70c alsa-utils: upgrade to 1.0.26
98bee84 xorg-minimal-fonts: depend on font-alias instead of shipping fonts.alias
44f232f gtk-immodules-cache.bbclass:fix support postrm at image creation time
92209ae gtk-icon-cache.bbclass:fix support postrm at image creation time
15aa713 license.bbclass: package license texts to PN-lic when LICENSE_CREATE_PACKAGE is enabled
2daab0b license.bbclass: extract functionality to find license files to separate function
b2869b6 ref-manual: Added a general reference and link to kernel-dev
347e994 dev-manual: Scrub for correct YP manual cross-references.
9713fdc adt-manual: Added cross-references to profile-manual.
79d192f ref-manual: Added new KFEATURE_DESCRIPTION glossary entry.
5053b65 kernel-dev: General edits and links added.
dd46994 ref-manual: Added new variable KBRANCH_DEFAULT.
eb576ad kernel-dev: Links and edits to the Common Tasks chapter.
6493366 ref-manual: New KERNEL_PATH variable added to the glossary.
ce6ed21 ref-manual: New KERNEL_SRC variable added to glossary.
e6310f6 kernel-dev: Minor edits to the overview section.
a24c555 ref-manual: Set KARCH as the top "K" entry for the glossary.
8c58a9c dev-manual: Edits to "Metadata" term.
4f3fdc3 ref-manual: New variable descriptions for KTYPE and KARCH.
f37037f ref-manual: Edits to a couple variables in the glossary
afb26dd ref-manual: Edits to the LINUX_VERSION_EXTENSION variable.
4648e34 ref-manual: Edits to the LINUX_VERSION variable.
b4b1dc1 profile-manual: Fixed the "Tying it Together" side-lights.
f3cb977 profile-manual: Fixed typo in last section
7e091de profile-manual: Fixed "short" figures to remove space.
5cd5cb2 profile-manual: Added links for literall http:// strings.
34f0fc3 mega-manual: Added support to build profile-manual.
37b290f Makefile: Updated to support mega-manual build with profile-manual
0c43dbb mega-manual: Added the profile-manual figures
842e3b8 profile-manual: Added blktrace section.
e4746a5 profile-manual: Added LTTng section to usage chapter.
697b9ec profile-manual: Added Sysprof section to usage chapter.
acb86de profile-manual: Added oprofile usage section.
fcf6155 profile-manual: Systemtap section added.
44e838c profile-manual: Substituted real title image in.
82928e2 profile-manual: Added ftrace section to the manual.
41fe459 profile-manual: Corrected bad literallayout statement.
803ccdb profile-manual: Added profile-title.png to stylesheet
86478ff profile-manual: Updated indentation and sectioning
487a76f profile-manual: Correctly named "figures" folder.
1fbdf50 profile-manual: Rename of figures folder.
43f565a poky.ent: Added new YOCTO_DOCS_PROF_URL variable.
9bd5435 Makefile: Added support for the new profile-manual.
33b7996 profile-manual: Converted root XML file for profile-manual
7f64ad2 profile-manual: Second half of perf raw text entered.
89dbdec profile-manual: Adding raw text.
cdacd87 profile-manual: Copied in raw "Examples" chapter.
982637f profile-manual: Copied in this raw text.
0ac8eba profile-manual: Raw text for introduction chapter.
6b7ae32 profile-manual: Added basic XML files and updated the .gitignore
bc8c416 profile-manual: Created directory structure and loaded figures.
dfc8421 gettext: Fix build with uclibc remove upstreamed patches
0380c0f eglibc: fix evacuate_scripts for external toolchains
1ae72ff eglibc-scripts: don't package mtrace, RDEPEND on eglibc-mtrace instead, fix RDEPENDS
584e7ce eglibc-package: remove infodir/dir if it exists
5298d6f gcc-configure-runtime: always remove info/dir
e1c56ee automake: use autotools_do_install
a1ac22a valgrind: explicitly disable MPI2 support
1af44d1 gawk: Add missing dependency on readline
2a314eb libpcap: Turn canusb support into PACKAGECONFIG
5916dcc libtirpc: Disable DES functions on uclibc
16cd29b tcmode-default.inc: Switch to git version of uclibc by default
1406f08 uclibc-git/uClibc.distro: Enable UCLIBC_HAS_REENTRANT_RPC
461dc8d wpa-supplicant: upgrade to 2.0
bbd280b systemd: remove usbutils dependancy
ffff37f yocto-bsp: qualify user files with machine name
2f1aba5 prservice.py: fix NameError: global name 'host' is not defined
ff72823 bitbake: bitbake-diffigs: Don't pull in tinfoil unless we really need/plan to use it
34b4158 staging: Drop obsolete comments
b77d567 git: remove unpackaged perl-native files
7f08315 puzzles: upgrade to r9751
929ef59 cairo: upgrade to 1.12.10
5264982 perl: update to 5.14.3
e80f02a perl-native: update to 5.14.3:
4a7a476 meta: remove all mention of PCMCIA_MANAGER
0d2a301 sstate: Add optimisation for useradd injected dependencies
3247292 Split do_packagedata task from do_package
c13e458 cairo: use directfb instead of gtk-directfb
d3773da gtk+: remove directfb support
4111298 core-image-gtk-directfb: rename to core-image-directfb
07ab6f1 packagegroup-core-gtk-directfb: rename to packagegroup-core-directfb
f8a4a74 init-live.sh: move /media/xxx over to the real root filesystem
8aa5089 prserv: change PRSERV_HOST semantics
a25f99b base.bblass : Add support for cmake to PACKAGECONFIG.
8adcafc nfs-utils: Upgrade 1.2.3 -> 1.2.8-rc3
3991c55 gcc: Enable OpenMP compiling and library
dbb0083 perl-rprovides: Fix perl-module-config anf perl-module-build providers
749e67d perl: Add dyanloader build hack
ad17b18 perl-native: Add errno_ver.diff patch to native perl
240c552 cpan_build: Fix cmaker Build.PL module builds
a6d462b Maintainers.inc file update
9150594 prserv: change PRSERV_HOST format
4a09c91 bitbake: bitbake-layers: fix get_file_layer
3183902 bitbake: cache.py: remove the duplicated self.file_depends
03fee6c bitbake: hob: hob do not use .hob dir for variables from local.conf and bblayers.conf
1db3531 bitbake: prserv: use only PRSERV_HOST
6930251 rpm: properly disable perl file dependency checking for rpmdeps
f0e02dc sample.extended: Add DISTRO_FEATURES_INITMAN
34fb092 systemd: Fix build on ppc
5ec82dd libcheck: fix HOMEPAGE
f0c8897 classes/image-swab: remove zypper-related references
7b5b8d1 sat-solver: remove
fcdc8d7 libzypp: remove
e90fad5 zypper: remove
1f8f6fe packagedata: Add error message if multiple recipes try to write the same package
932a4cd sanity.bbclass: Ensure tmpdir exists when running the check
f19bdea core-image: Add hwcodecs IMAGE_FEATURE
b064818 packagegroup-core-x11-xserver: Add XSERVERCODECS variable
4db8a3d base: make feature backfilling happen earlier
c983634 bitbake.conf: unbreak all builds with custom DISTRO_FEATURES
4192520 core-image-lsb-sdk/dev: Inherit the base image instead of duplicating
8d6e55b prserv: add LOCALCOUNT to AUTOINCs migration feature
cb902c3 qemu.inc: Define preferred providers for libgl, libgles1 and libgles2
b1c7b57 systemd: Fix build on uclibc
74ec9ba uclibc-git: Upgrades to latest git
bd10a6d rootfs_rpm.bbclass: fix the unexpected postinst error
a789dc9 blktrace: add back do_install method
c325623 populate_sdk_base.bbclass: Allow installation of ix86 SDK on x86_64 host
cd9ff3c bitbake: crumbs: Add file lost from previous commit
0a0e039 createrepo-native: update dependency
ad1af9d bind: disable nslookup man page
685cde5 bitbake: hob: combo box updated correctly
5fc3fc3 bitbake: persist_data: add get_by_pattern method to API
1e50274 bitbake: parse_py: add ~ to config_regexp
37e025f bitbake: hob: Hob should display warnings generated during parsing
4c1ebc7 bitbake: hob: progress bar changed to busy cursor when you open log file
eb9d31d distro-tracking: remove e-d-s and libical
7f9bbcc systemd: remove unused SERIAL_CONSOLE variable
cd9483c systemd-serialgetty: skip package when not using systemd
1377a2d systemd-serialgetty: remove redundant statements
f2f0a1a perl: Fix errors if configure is reattempted
d1e6809 systemd: update uclibc patch headers
087e5e3 packagegroup-sdk-gmae: remove GUPnP stack as it's no longer in oe-core
dcf494f gupnp: remove, migrated to meta-multimedia
d3b84e7 site: add x86-32/64 alignment values for at-spi2-core
6b5e11d systemd: add missing patch headers
064d308 systemd: use new GTKDOC_DOCDIR and clean up
779d915 gtk-doc: parameterise the documentation directory
600ea90 systemd: fix typo in FILES
e07e0f8 udev: skip in systemd distros, to fix world builds
148bcc1 systemd: skip in non-systemd distros to fix world builds
a535851 bitbake: BBHandler/ConfHandler: Merge fix for multiline comments
73dc22b bitbake: bitbake: BBHandler/ConfHandler: Improve multiline comment handling
bac53df dbus: upgrade to 1.6.8
21d0493 boost: Upgrade 1.51 -> 1.52
3d35558 gtk+3: refresh cross.patch
4287f70 bb-matrix: Fix min and max calculations
4de6f9b oprofile: backport patches to fix ppc build issues
f63f387 package.bbclass: drop unnecessary and broken packages.remove()
be2a150 oprofile: set correct kernel path
e9b73c0 rpm2cpio: Update to match rpm4 specs for decompression
59e15f6 update-alternatives: Add a build-time dependency
3df0d23 populate_sdk_rpm: Re-add a few system provides to the SDK
37d295c scripts/lib/bsp/engine.py: add handling for JSON strings
1ca4b36 yocto-layer: add optional layer priority param
7b0026e scripts/lib/bsp/engine.py: refactor bsp-creation code
93d37a2 yocto-layer: add 'layer' template data
bd1cb7b yocto-layer: add help/usage
be42505 yocto-layer: new script
792b1bf scripts/lib/bsp/engine.py: add yocto_layer_create()
3b75d85 attr: convert to generic syscall numbers
c14d9d6 nspr: add aarch64 support
6404dd1 poky-bleeding: Ensure poky overrides are applied
4d37fd3 Added DISTRO var to poky-bleeding conf file
be319aa gtk-directfb: rename to directfb
0dedf2d Modified meta-yocto/conf/distro/include/package_regex.inc
b353c3f lttng: update references to legacy lttng recipes
208a641 maintainers.inc: updated package owners
651b168 linux-yocto/meta-yocto: update hardware reference BSPs to 3.4.26 and LTSI
8bb0353 cpan_build: Fix bashism
545b00a libtool-cross: Add missing libltdl components to install
4d8abe2 liburi-perl: Add BBCLASSEXTEND for native version
eabd860 package.bbclass: Fix shlibs cross package-arch contamination
4a61ee9 dropbear: Deal with truncated host keys by removing them
63ccf62 populate_sdk_base.bbclass: Work around bugs with gnu tar < 1.24
116fb4a package.bbclass: replace AUTOINC directly in PKGV
b5659b7 linux-yocto/3.4: update intel graphics features/configs
0fdb0ae linux-yocto/3.4: update to 3.4.26 and 3.4.25-rt37
e4410b5 consolekit_0.4.5.bb: Package unpackaged systemd files
a3ca06c kernel.bbclass, module-base.bbclass: Use CC to form KERNEL_CC
e344f3e libpam: register PAM session with logind
c55926c packagegroup-core-boot: only install initscripts if we're using sysvinit
20dc0a5 base-files: add fstab for systemd based systems
b94227f update-rc.d: disable update-rc.d.bbclass when systemd enabled
5b2e201 packagegroup-core-boot: install systemd-compat-units on systemd images
b1add7c default-providers: Add systemd option to PREFERRED_PROVIDER_udev
b8744d5 systemd: add systemd recipes
b18886d dbus: respect systemd distro feature
4c8b2dd default-providers: Automatically set PREFERRED_PROVIDER_udev
f8fb967 default-distrovars: Add DISTRO_FEATURES_INITMAN to DISTRO_FEATURES
349e5be guilt: add git 1.8.x support
09d0bc5 linux-yocto/3.4: integrate LTSI-3.4
97fdac7 linux-yocto/routerstationpro: enable GPIO_SYSFS
d6e2fff linux-yocto/meta: update include statements to explicit .scc format
486e19d kernel-yocto: add KBUILD_OUTPUT to OE_TERMINAL_EXPORTS
28fb81a linux-yocto: normalize repository naming and SRC_URI options
11bafde kernel-yocto: remove unnecessary non-bare warning
363cb2b libnss-mdns:fix support prerm at image creation time
ee5333b update-rc.d:fix support postrm at image creation time
fbfaefb bitbake.conf: remove update-modules from DISTRO_FEATURES
71537bb kernel.bbclass: remove references to update-modules
173a618 module.bbclass: do not use update-modules anymore
fb7ea95 hostap-conf: remove dependencies of update-modules
950704e orinoco-conf: remove dependencies of update-modules
36a6430 modutils-initscripts: improve modutils.sh
e7ebff0 initramfs-live-boot: handle multiple udev locations
26bddbd pango: use qemu_run_binary instead of pango-native
aac0365 base.bbclass: improve the incompatible license logic a bit
d597053 base.bbclass: use debug messages for INCOMPATIBLE_LICENSE
197a4d5 linux-firmware: use LICENSEs which can actually be parsed
cea9f48 license.bbclass: cleanly handle invalid licenses in incompatible_license
8491c2a license: correct re.search/fnmatch indentation
feca9f7 license.bbclass: check LICENSE_pkg, not LICENSE_pn-pkg
411413a classes/image: improve debug-tweaks ssh server configuration
955568d dropbear: allow configuring blank password option at runtime
8ca0d59 classes/rootfs_*: error out if postinstalls exist with read-only rootfs
5e4671b iptables: upgrade to 1.4.17
89031c2 ptest.bbclass: don't add to PACKAGES if disabled
7cdfbc6 weston: add reference Wayland compositor
1e3372b mesa-dri: enable the wayland-egl platform
cca05e3 wayland: add Wayland protocol library
1e1db84 x11-common: set XDG_RUNTIME_DIR if it isn't already set
2ad1894 bitbake: hob: Fix GTK+ and PyGtk version check error message to be more clear
94284f1 bitbake: hg.py: Fixed fetch failure that occurs when SRCREV is a tag.
0e408df bitbake: fetch2: Sort file checksums by value, not path
fe30cbc bitbake: bitbake: data_smart.py and friends: Track variable history
4dd6d91 bitbake: bitbake: data_smart.py and friends: Track file inclusions for bitbake -e
9753283 bitbake: BBHandler/data: Standardise some setVar access formats
3db277b update-rc.d: fix failure on target
200743b kernel.bbclass: don't depend on DATETIME
64592f7 libffi: add AArch64 support
9f263a6 oprofile: add AArch64 support
d701d98 kernel-dev: Links added for new glossary variable terms.
5087131 ref-manual: New glossary entry for SRCPV variable added.
11e9265 ref-manual: New LINUX_VERSION_EXTENSION variable glossary entry.
ba0524c ref-manual: New LINUX_VERSION glossary entry.
762e4f0 kernel-dev: Fixed a typo in question 4.6.
b43b8ef kernel-dev: Edits to the SCC reference section.
29d5511 kernel-dev: Edits to Advanced Metadata chapter
5487eeb kernel-dev: Edits to Introduction chapter.
a0ac336 kernel-dev: Edits to the "Incorporating Out-of-Tree Modules" section.
b34a140 kernel-dev: Edits to the "Working with your Own Sources" section.
ac5cee5 kernel-dev: transitory edits.
fcfa410 kernel-dev: Updates to "Using an Iterative Development Process"
095ee0a kernel-dev: Edits to "Modifying a Recipe" section.
d5e6f2a kernel-dev: Removed original text from "Applying Patches" section.
719824f kernel-dev: Created new "Creating the Append File" section.
2512cbf kernel-dev: Edits to "Modifying an Existing Recipe"
e4e2c72 kernel-dev: Edits to "Creating and Preparing a Layer"
c9f796d kernel-dev: Re-write of the "Organizing Your Source" section.
5b1098d kernel-dev: Intermediary edits to the "branches" section.
b663741 kernel-dev: Edits in the Branch section.
7eccfa6 kernel-dev: Created super section for Branches.
f42c87a kernel-dev: Removed recursive include statement from examples.
b56df97 kernel-dev: Re-write of the "BSP Description" section.
03dce08 kernel-dev: Re-write of the "Kernel Types" section.
48f8d9c kernel-dev: Re-write of the "Features" section.
472d58a kernel-dev: First re-write of the "Patches" section.
76f1ffe kernel-dev: Edits to the "Configuration" section.
d176d86 kernel-dev: edits to the "Kernel Metadata Syntax" section.
545f79b kernel-ref: Edits to Recipe-Space Metadata" section.
b63272c kernel-dev: General edits to "Kernel Metadata Location" section.
ced75ce kernel-dev: Edits to using metadata in a recipe section.
e826a50 kernel-dev: removed "many" based on Darren's Feedback.
f9a8256 kernel-dev: General edits during re-write.
467cb3d kernel-dev: Edits to the introduction chapter.
ea114c8 kernel-dev: Fixed the COMPATIBLE_MACHINE example.
826b9f2 kernel-dev: General edits for "Working with your own Sources"
00557ab kernel-dev: General edits up to section 2.4.
9a6c5e1 kernel-dev: Updates to the introduction chapter.
8d771b3 kernel-dev: Fixed some broken links.
b5337ad kernel-dev: Added support for the FAQ chapter.
28b6aab kernel-dev: Initial edits to the kernel-dev-faq.xml chapter.
3abb7da kernel-dev: Added a new file named "kernel-dev-faq.xml".
5b2ed2a kernel-dev: Formatted the "SCC Reference" section.
ece3e83 kernel-dev: Formatted "Feature Branches" section.
4916626 kernel-dev: Formatting "Machine Branches" section.
fe1b20f kernel-dev: Formatted the "BSP Descriptions" section.
d675ef0 kernel-dev: Formatted "Kernel Types" section.
caacd30 kernel-dev: Formatted "Features" section.
1fa2bef kernel-dev: Formatted the "Patches" section.
cc07a5e kernel-dev: Formatted the "Configuration" section.
ef4d985 kernel-dev: Formatted "Metadata Syntax" section.
e8dabb0 kernel-dev: Formatting "In-Tree Metadata" section.
4158e19 kernel-dev: Format of the "Recipe-Space Metadata" section.
7f62af0 kernel-dev: Formatting of the "Metadata Location" section.
ea6d5be kernel-dev: First edits to chapter 3 intro and section 3.1.
46b0fc3 kernel-dev: Updated the root file to include the metadata chapter.
7c5dfcb mega-manual: Updated the top-level XML file.
c9c0029 tools: Updated SED file that processes links for mega-manual
a2606d3 Makefile: Added the kernel-dev-title.png file to tarball.
7d46d48 mega-manual: Added the title figure for the new kernel-dev book.
76c2ace kernel-dev: general edits to the Introduction chapter.
142de60 kernel-dev: Added original text into "Preparing a Layer" section.
9a5376b kernel-dev: Re-write of "Incorporating Out-of-Tree Modules" section.
bb715c8 kernel-dev: Re-write of "Working With Your Own Sources" section.
1b23230 kernel-dev: Re-write the "Modifying Source Code" section.
2e106f9 kernel-dev: Re-write of the "Generating Configuration Files" section.
2c0358c kernel-dev: Re-write of "Iterative Development" section.
716306a kernel-dev: Re-write of the "Changing the Configuration" section.
74d43d3 kernel-dev: Re-write of the "Applying Patches" section.
1306d5c kernel-dev: Rewrite of the "Modifying an Existing Recipe" section.
1e76c5c kernel-dev: Rewrite of "Preparing a Layer" section.
974ef52 kernel-dev: Rough text in for new chapter. Makefile edited.
494e9ef yocto-docs: updated poky.ent to have a temporary URL for kernel-dev
d0858cc kernel-dev: Updates to get the new kernel-dev manual to make
6833ec8 kernel-dev: Edits to set up root .XML file for new kernel-dev manual.
5cbeb84 kernel-dev: Created file structure for new kernel-dev manual.
ea50862 lttng-ust: bump PE
7bfb985 bitbake: hig.py: refactor into individual components
a746719 yocto-bsp: add basic git connectivity check
e02b316 update-rc.d: check also that symlinks are valid
a2375f4 apmd: fix license segment md5sum boundary
06a0d4a dbus: fix license segment md5sum boundary
dc47fe7 libidn: fix license segment md5sum boundary
b1bd1cd gperf: fix license segment md5sum boundary
8cd639b ethtool: fix license segment md5sum boundary
5f8c1bf shadow: fix license segment md5sum boundary
d23be09 iptables: fix license segment md5sum boundary
87f778f gzip: fix license segment md5sum boundary
a7cbb2e libidn: add checksums to version 0.6.14 recipe
be161e0 ofono: replace obsolete automake macros with working ones
a8534b3 tremor: replace obsolete automake macros with working ones
452c3df alsa-utils: replace obsolete automake macros with working ones
1c5a07e bluez-hcidump: replace obsolete automake macros with working ones
83f1e69 curl: fix build with automake-1.13
0f948ba libtirpc: replace obsolete automake macros with working ones
d88f051 vte: replace obsolete automake macros with working ones
25d7771 sysfsutils: replace obsolete automake macros with working ones
0e43558 rgb: replace obsolete automake macros with working ones
81c78be libxsettings-client: replace obsolete automake macros with working ones
4eccc64 pango: replace obsolete automake macros with working ones
2465f17 polkit: replace obsolete automake macros with working ones
4642033 image_types.bbclass: Add and update comments regarding image types.
b1ae967 connman: upgrade to 1.10
7048fbd connman-conf: configures connman in qemu machines
e9a1696 Removed undisplayed picture from connman-gnome
0c1b609 runqemu scripts: add support for booting an ISO image
14363c3 recipes-kernel/lttng-2.0: rename to recipes-kernel/lttng
44a485f lttng2-ust: rename to lttng-ust
4a5ad28 lttng: remove 'legacy' lttng
c292504 quota: upgrade to 4.01
b17b87c xz: LICENSE field is wrong
1306286 iproute2: upgrade to v3.7.0
94cd6a1 distrodata: Updated checkpkg task
af430df db: upgrade to 5.3.21
880372e add meta-toolchain-qt
d66d8ae qemu: machine override ability added
5119330 ia32-base.inc: Add more macros for xf86 drivers
35e407d xf86-video-modesetting: new recipe for gma500
7641301 perl: fix installed but not shipped issue
9eb88ce connman: fixed init script so connman can runs over nfs
c7f170b initscripts: remove finish.sh
d638fee gitignore: only ignore meta- directories
583d2b8 quilt: Don't use BUILD_ROOT on darwin.
3f5a047 quilt: Remove non-gnu.patch, and added configure flags for darwin.
2c7bba5 sstate: Do not add the --no-run-if-empty arguement to xargs when on Darwin, as it is not supported.
66d0b1d gcc: add missing dependency (zlib)
f1fd0a2 bluez4: replace obsolete automake macros with working ones
42d2bee gmp: replace obsolete automake macros with working ones
45b958b gtk+: replace obsolete automake macros with working ones
2326328 startup-notification: replace obsolete automake macros with working ones
be2c9d3 gconf: replace obsolete automake macros with working ones
084f706 opensp: replace obsolete automake macros with working ones
dafbebc libvorbis: replace obsolete automake macros with working ones
0468add libmad: replace obsolete automake macros with working ones
5b91cdd libogg: replace obsolete automake macros with working ones
7879893 python: replace obsolete automake macros with working ones
f6bc657 alsa-lib: replace obsolete automake macros with working ones
c28b05f makedepend: replace obsolete automake macros with working ones
675a18d tslib: replace obsolete automake macros with working ones
7b87038 dbus-glib: replace obsolete automake macros with working ones
de8ec21 help2man: update to upstream version 1.40.13
3ec3216 coreutils: fix license segment md5sum boundary
d4397ab libxdamage: update to upstream version 1.1.4
53cc748 linux-libc-headers: fix headers install in long path name environments
5371d96 gtk+3: add 3.4.4
2a311dd gtk+: version installed gtk-update-icon-cache and use alternatives
c8e7c30 boost: Use PARALLEL_MAKE for bjam
d777af8 puzzles: upgrade to r9733
4739031 alsa-utils: add bash as a dependency of the alsa-utils-alsaconf rpm.
78e5426 apt-native: fix the creation of apt.conf.sample
60de86f pango: update to upstream version 1.32.5
9826ea1 harfbuzz: add recipe, version 0.9.10
0120167 directfb: fix build against Mesa 9
909b3be mesa: bump to 9.0.1
d5ce76d udev: Fix build with eglibc 2.17
a09fbc8 ofono: Fix build with eglibc 2.17
abc9273 valgrind: update configure for eglibc 2.17
bdb52d2 matchbox-keyboard: use the gtk-immodules-cache.bbclass
9129102 gtk-immodules-cache.bbclass: allow for offline cache generation
aab3c13 qemu.bbclass: add qemu_run_binary() function
f1b530f kernel.bbclass: Define MODULE_IMAGE_BASE_NAME for layer convenience.
ef97708 musicbrainz: handle rebuilds
6bd2fb8 pkg-config: replace obsolete automake macros with working ones
b03b351 flac: replace obsolete automake macros with working ones
e5cc7ad gnutls: replace obsolete automake macros with working ones
e7c6e6b libgcrypt: replace obsolete automake macros with working ones
5f792a0 libid3tag: replace obsolete automake macros with working ones
78dec5d pixman: replace obsolete automake macros with working ones
1b1e1b3 libusb: replace obsolete automake macros with working ones
f34fe18 libpng: replace obsolete automake macros with working ones
34a4408 libx11: disable tests
8e1ca4b glib-2.0: replace obsolete automake macros with working ones
58c76a2 popt: disable tests
2442964 file: replace obsolete automake macros with working ones
4bb6960 pkgconfig: add -native script that uses the native sysroot instead of target
b5fbf48 libnl: Update to 3.2.18
de446b7 bdwgc: updated to version 7.2d
531ccc8 lttng-2.0: components updated to version 2.1.0
b06f1f3 lsof: updated to 4.87
1226f29 nasm: updated to 2.10.07
4550b20 byacc: updated to 20121003
67e056a rootfs_rpm.bbclass: export INSTALL_PLATFORM_EXTRA_RPM
09ec2a4 kernel.bbclass: kernel_do_install fails with kernel <2.6.30
608b87e bluez-hcidump: updated to upstream version 2.5
a5f9540 gmp: add patch from upstream to unbreak AArch64
54021c2 python-smartpm: add dependency on python-pprint
25e5ba1 gettext-minimal: update files from gettext 0.18.2
024405c gettext: update to upstream version 0.18.2
7a5ed19 telepathy-mission-control: upgrade to 5.14.0
ebf8c55 telepathy-idle: upgrade to 0.1.14
0624d14 libtelepathy: python-native is now used during build
876aba0 libpcre: change BUILD_CPPFLAGS and BUILD_CFLAGS values
66f4c8a guile: add explicit dependency to avoid parallel build issue
be78e81 sstate.bbclass:specify function dirs to avoid race
66db852 site/common: deactivate a runtime check for ipv6-support in python >=2.7.1 that fails when cross-compiling
6f5d6e2 runqemu-internal: add 'debugshell' as a default kernel option
278a3c5 wpa-supplicant: Include wpa_supplicant.service file in package for dbus to work
036e8fc buildhistory-diff: prepend to sys.path
181e76c bash: fix mkbuiltins build failure
ebe201c .gitignore: Git ignore pull requests and built manuals
7e1f8fa perl: Remove bashism from perl-tests.inc
691a830 linux-libc-headers: make 3.7 the default and remove older libc-header recipes
2078ccf linux-libc-headers: add 3.7 version
4d40740 linux-yocto/3.4: update to v3.4.24
206ce57 linux-yocto/3.4: integrate v3.4.21, v3.4.22, v3.4.23
7d0d6f0 libart-lgpl: add AArch64 support
b51a877 xf86-video-intel: upgrade to 2.20.17
3cf3a95 ghostscript: add AArch64 support
a06958e qt4: blacklist untrusted SSL certificates
51ce143 libnl: Fix building using flex
39eb22b bitbake: build.py: Fix traceback when there are no dependencies
1d18845 gsettings-desktop-schemas: add missing elements from meta-gnome
5b65872 libgdata: finalize recipe removal
8ec1a47 dev-manual: Updated list of mailing lists to include listinfo
4c582a8 dev-manual: Various fixes for links, typos, and grammar
30c0c9e mega-manual: Fixed to include ref-manual.
a44106a tools: Updated the SED file that processes links in the mega-manual.
7aa9df2 tools: updated the .sed file that processes the links in mega-manual
e8ebe60 Documentation: ref-manual - Updated LIC_FILES_CHKSUM example.
2855f7e Documentation: Removing three unwanted files.
8753c6b Documentation: ref-manual - removing old poky-ref-manual files
bb8e9d0 Documentation: poky.ent - Updated the YOCTO_DOCS_REF_URL
5f69362 Documentation: Makefile - Changes to support ref-manual folder
ed0a240 documentation: Rename of poky-ref-manual folder to ref-manual.
af19d88 copyleft_compliance: force the symlink creation
db51e36 copyleft_compliance: grab the scm mirror tarballs
d05bc20 git: updated to 1.8.0.2
b94fd21 gcc: restore FILESPATH
c7041c7 oprofile: updated to 0.9.8
5648fec tcl: updated to version 8.5.13
9277733 nspr: added gnu-configize for AArch64 support
99c9cf3 libtasn1: remove help2man dependency
b3c980c bison: remove help2man dependency
efcb4fa libtool: remove help2man dependency
c12a973 libgdata: remove recipe
d036724 relocate_sdk.py: new interpreter string was not '\0' terminated
1cecbac util-linux: moved 'reset' into own subpackage
9f79f44 procps: initialized environment correctly (backported from classic)
41a15a9 image.bbclass: quote TARGET_VENDOR
1a27756 xserver-xorg: add AArch64 support
8ef71c0 base-files: Remove the redundant "/"
2ee93fe scons: updated to 2.2.0
54b8096 perl-rdepends: be more strict in multiline comment
dd98eea cmake: add AArch64 support
c2a87e8 libxcomposite: update to upstream version 0.4.4
5df4103 polkit: update SRC_URI and HOMEPAGE
ab7f34d directfb: Rename __no_instrument_function__ macro to avoid conflicting redefinitions
ca40915 prelink: update to git head
6852800 scripts/sstate-sysroot-cruft.sh: add simple script to find files in sysroots not tracked by sstate
6882eb5 scripts/sstate-diff-machines.sh: add simple script to compare sstate checksums between MACHINEs
09fe48b sed: upgrade to 4.2.2
3547f3e mutter: finalize mutter removal
f8e94c7 gthumb: finalize removal
a48efbf distro/poky: Add "Debian GNU/Linux 7.0 (wheezy)" as know distribution
71f2296 Added regex file in meta-yocto/conf/distro/include.
b03c418 icu: update to upstream version 50.1.1
faf94a9 package.bbclass: Skip testing "packages" a second time.
2d5781a vte: add missing unpackaged files
fe21ffd libnl: Update to 3.2.16
e38ce33 cairo: Adds libxext in X11DEPENDS.
d12bffc lib_package.bbclass: Correct comment referring to bin directories.
0f2614b mpfr: update to upstream version 3.1.1
35f0d0a chkconfig-alternatives-native-1.3.59: add recipe
eb91689 chkconfig: package the update-alternatives implementation
6c7ab51 chkconfig: obey sysconfdir, base_libdir
a045d23 chkconfig: don't inherit autotools
925ffcb opkg-native: obey virtual/update-alternatives-native
7f8eeda update-alternatives.bbclass: use absolute paths for link targets
14649c0 init-live.sh: avoid duplicate mount points for the same filesystem
9f5e0b8 gmp: update to upstream version 5.1.0
60284f0 gmp: update SRC_URI and HOMEPAGE
102c97b pcmanfm: upgrade to 1.1.0
f6f5382 libfm: upgrade to 1.1.0
f6da046 automake: update to upstream version 1.12.6
5ffe7a2 kernel.bbclass: include PE in KERNEL_IMAGE_BASE_NAME
296617d rpm: replace /usr/lib with ${libdir}
6870465 sysstat: fix sa_lib_dir
f92d88d eglibc-locale: enable multilib
94516ce package.bbclass: don't prepend MLPREFIX to LOCALEBASEPN
785512a libpam: enable multilib
4601eb9 perl: update dependency creating script
dd65b82 perl: update RPROVIDES and popuate_package script
61583fe perl: add sub-package perl-tests
52c6393 autoconf: update RDEDENDS
b03f4b7 Added ability to parse python sources to create-recipe
5d8a2e8 pango: have postinstalls run at do_rootfs time
09359e6 freetype: update to 2.4.11 which includes fixes for CVE-2012-{5668, 5669, 5670}
4b5705c webkit-gtk: fix build with bison-2.6+
5c0e660 iproute2: DEPENDS on iptables
c8bc7a7 sqlite: update to upstream version 3.7.15.1
1cfb12b curl: update to upstream version 7.28.1
b7515e2 xf86-video-omap: skip package if opengl isn't in DISTRO_FEATURES
83e8148 xorg-driver: enable multilib
5be92d4 xserver-xorg: enable multilib
1674541 multilib: fix allarch/kernel/module-base multilib issues
415c4fa eglibc: run libm-err-tab.pl with specific dirs in ${S}
9a1c999 replace portmap with rpcbind.
7f221da libcroco: fix license
9fc0588 shared-mime-info: upgrade to 1.0
645ccbb metacity: upgrade to 2.34.13
996be05 menu-cache: upgrade to 0.4.1
c31a72a matchbox-panel-2: fix PV
db1efda libuser: upgrade to 0.58
28dbb92 libsoup-2.4: upgrade to 2.40.2
283c7b8 libcroco: upgrade to 0.6.8
ce2414a json-glib: upgrade to 0.15.2
adaf352 gthumb: remove recipe
b48d38c gsettings-desktop-schemas: add recipe
4233009 gnome-doc-utils: upgrade to 0.20.10
ee00527 ethtool: upgrade to 3.7
4a36a32 libpng: fix packaging
9dc384d gtk-icon-cache: don't call gtk-update-icon-cache on files
36f8380 subversion: updated to 1.7.8
26b486f rpm: remove declaration of "sykcparse"
26dfd24 nasm: upgraded to 2.10.06
216bcec libmusicbrainz: upgrade to git SRCREV 0749dd0a35b4a543
aa90e60 iptables: upgrade to v1.4.16.3
ae84362 runqemu: change terminal's INTR key in 'serial' mode
4491154 bison: update to 2.7
7d450fb cml1: set and export TERMINFO, to handle ncurses-native relocation
845c2c0 oprofile: use dynamic root home directory
2af073a base-passwd: use configurable root home directory
07b842f base-files: use dynamic root home directory
de5b44a bitbake.conf: import var ROOT_HOME
1d55450 wireless-tools: Remove QA warning: No GNU_HASH in the elf binary
716578c blktrace: essentially rework the recipe, obey LDFLAGS
9d985e9 freetype: Update EXTRA_OECONF to use host gcc.
f83ff49 Add ptest for bash.
0c7da2f Add ptest for dbus.
ddce381 Add ptest for glib.
daad0d8 New package: ptest-runner
1d2c683 Add a new distro feature "ptest".
627e745 python: add -crypt as a dependency on -math
5cf8c95 telepathy-glib upgrade to 0.20.1
ff877a2 ofono: upgrade to 1.12
3c77b8c Fix typo in kvm capability detection in runqemu
abf0ad8 slang: added gnu-configize for AArch64 support
90c0eb2 rootfs_rpm.bbclass: remove debug code
957e090 cmake-native: add checksums
80bc9a0 icu: reduce what's needed for cross tools
6d0508a lsbinitscripts: Don't compile
4392663 initscripts/urandom: create directory before staging into it
681bfd4 neon: added --disable-gssapi
da89b4c libpng: update to upstream version 1.5.13
756d84a lsbinitscripts: update to 9.43
690265b dpkg: Update to 1.16.9
771d087 cmake: Update to 2.8.10.2
02491b4 cups: Update to 1.6.1
abbb4e1 less: Update to 457
2d96820 gconf: Update to 3.2.5
32b7b30 nspr: Update to 4.9.4
d0505b7 man: Update to 1.6g
3cdf7e2 sqlite: Update to 3.7.15.0
ed5d870 init-live: default to initrd shell if image isn't found
ccc394e matchbox-session-sato: use a proper schema file
bb0a66c xinetd: added gnu-configize for AArch64 support
9642794 net-tools: disable Token Ring and Strip support - both got removed in 3.7 kernel
e1269dd gcc-cross-canadian.inc: Add dependency on cross-gcc
9ed113a python-smartpm: improve error reporting
1874c8d package_rpm.bbclass: Refactor the attempt only install
84a5c63 classes/image: handle multilibs in complementary package lookup
caaabe6 packagegroup-base: use virtual runtime instead of keymap
632fefd udev: fix failed /dev/shm mount
07ac3e1 psplash: enable multilib
f144a97 polkit: fix multilib packaging issue
984d908 bluez: set correct udevdir
a1a48b8 pcmciautils: set correct udevdir and add missing debug files
805bbd1 alsa-utils: Pass udev-rules-dir as parameter
2c57f28 bitbake.conf: add nonarch_base_lib variable
9e41867 packagegroup-toolset-native: don't include mesa-dri-glsl-native
9596495 ICU: upgrade to 50.1.
c21f80b matchbox-theme-sato-2: remove, depends on matchbox-wm-2
7f2c15b matchbox-wm-2: remove
4bb1487 mutter: remove
6dbd1a3 xf86-video-intel: upgrade to 2.20.16
63e789a xserver-xorg: upgrade to 1.13.1
5f178fc gtk+-native: add gtk-update-icon-cache wrapper
359eb51 gconf: add gconftool-2 native wrapper
4606a8b distcc: use useradd.bbclass to add the distcc user
83242c8 avahi: use useradd.bbclass to add avahi-autoipd user
3929b60 pixman: update to upstream version 0.28.2
7dd275a gdb: update to upstream version 7.5.1
062604e gdk-pixbuf: update to upstream version 2.26.5
6065619 guile: update to upstream version 2.0.7
00dd34b patch: update to upstream version 2.7.1
b6db3f0 patch: drop global-reject-file patch
9e941bb gtk+: update to upstream version 2.24.14
7202ab6 fontconfig: update to upstream version 2.10.2
8c57766 iptables: include /usr/share/xtables/pf.os in PN if it's build
3d154ae kernel.bbclass: Allow modules*.tar.gz generation to be inhibited
79f31ad kernel.bbclass: use the same versioning schema for modules.tgz and provide link to latest
e3ce473 bitbake.conf: exclude DATETIME var dependency from IMAGE_NAME
5f25156 rootfs_*.bbclass: exclude BUILDNAME var dependency from do_rootfs
2a9c574 gst-openmax: fix build with newer GLib
91b6a48 gst-meta-base: don't rdepend on ximagesink/xvimagesink
d0f3520 bitbake: fetch2: remove localcount and use AUTOINC instead
f39e75d bitbake: data: Ensure emit_func honours vardeps flag
1e548a7 sstate.bbclass: Improve stamp-extra-info task handling to avoid warnings
2636cb1 sstate.bbclass: Remove unused/uneeded variable
d46766e sstate.bbclass: Simplify overcomplicated cleanall function
e651c1a lib/oe/patch: Use force option when creating symlinks to patches
5cf293b distutils: Replacing path to native python by path to python in the image to support python packages with console-script setup
47d6d15 xserver-xorg: add libgcrypt dependency
c511d0e cups CVE-2011-3170
cdb3989 cups - CVE-2011-2896
355fb13 librsvg: CVE-2011-3146
8780c5d libxml2 CVE-2012-2871
4371e8f cups: CVE-2012-5519
b2b1d86 linux-firmware: split out ralink drivers
02cb808 mesa: remove dependency on mesa-dri in mesa-dri-dev
c5d7ab6 autotools: copy also remove-potcdate.sin from ${STAGING_DATADIR_NATIVE}/gettext/po
9050f30 gettext: move remove-potcdate.sin from gettext-native to gettext-minimal-native
ea2a7ae ghostscript-native:fix host underlinking issues
5b3ffce squashfs: fix CVE-2012-4025
f023d05 iperf: pass in target path vars
ec70f9e perf: pass CFLAGS and LDFLAGS
eef3b8d perf: kill -Werror
40bb94f newt: enable python support
44c9d1f native tools set packagegroup
3fa98d1 package_rpm: Workaround for 'all' arch multilib package naming
2173ca2 package_rpm.bbclass: Add a simply way to enable RPM debugging
e1345b7 rpm/smart: Fix runtime-relocation issues w/ RPM and Smart
8b67164 package_rpm.bbclass: Add additional install error detection
4a7151b package_rpm.bbclass: Add support for incremental installs
f946417 package_rpm.bbclass: Add additional logging
06afdb8 package_rpm.bbclass: Fix the way the RPM platform file is generated
a6aa748 package_rpm: Update the way the multilib package names are translated
ba08a8c Update sanity tests to use smart instead of zypper
2997a70 classes/rootfs_rpm: install smart instead of zypper in rpm-based images
019ba25 classes/*_rpm: integrate Smart into RPM filesystem construction
b05efc2 runqemu: add support for FSTYPE=vmdk
b70784c mkelfimage-native:make failed if libz not in host
958162e bitbake: hob: use base image only if it was set
5ce8c7f populate_sdk_base: Add perl modules as needing to be relocated
4c299b7 libsoup: RRECOMMEND glib-networking
cf0692b beagleboard: use xf86-video-omapfb
24de240 e2fsprogs: fix out-of-tree builds
27b5b06 font-util: fix out-of-tree builds
d3b2edd base-passwd: fix out-of-tree builds
3639c65 libgcrypt: fix out-of-tree builds
250c4d2 gperf: fix out-of-tree builds
3f14074 ossp-uuid: fix out-of-tree builds
4fd512f pkgconfig: fix out-of-tree builds
38cac82 apr: fix out-of-tree builds
312dd2e curl: fix out-of-tree builds
f3f4ac3 Update the SRC_URI in systemtap recipe
f9d9cc8 bitbake: hob/bitbake: custom image is now using the base image
a947b54 bitbake: knotty: use bb.error instead of print
ad29d14 bitbake: git.py: A bit of tidying up regarding grammar and supported protocols.
6ec6bf4 bitbake: bitbake.vim: detect *.bbappend files in ftdetect automatically
aa27238 gitignore: Add hob-image-*.bb
853d707 bitbake: data_smart/BBHandler: Fix SkipParse exception handling
5d96836 bitbake: bin/bitbake, bb/__init__: Move BBDEBUG handling to bin/bitbake
dc637ae bitbake: command: Fix getCmdLineAction bugs
1572c15 bitbake: command: Add missing import traceback
1b0c0f2 Disabling audio on when running runqemu qemuarm
936c460 module.bbclass: make sure do_make_scripts() executes after do_patch()
0231336 chrpath.bbclass: Normalize rpath only of it doesn't contain ORIGIN variable
14f4cfc mesa-dri-git: remove patch that doesn't apply to 9.x
da598d4 eglibc: fix checksums of fetched patches
a0a265e poky-tiny.conf: blacklist inappropriate image options
0be41d6 yocto-kernel: add support for PRs of the form rN to pr_inc()
76b2ef2 yocto-bsp: remove patch-related SRC_URI processing
8a1d25c yocto-kernel: handle SRC_URIs in .bb files
6c7f426 yocto-kernel: remove assumption that kernel has a version
5fc9990 yocto-kernel: don't list comments in config and patch listings
be93447 yocto-kernel: create open_user_file() wrapper function
125eb6f yocto-bsp: add replace_file()
205872b yocto-bsp: add 'edit-file' input line
c08a4dc yocto-bsp: add 'edit-git-repo' input line
254bf8c yocto-bsp: update existing templates for linux-yocto-custom
4dc96e3 yocto-bsp: add 'custom' choice to kernels()
9753196 yocto-bsp: add custom kernel support
8669fec chrpath: normalize the paths
dc8bdc8 libacpi: Remove QA warning: No GNU_HASH in the elf binary
70593a1 mesa: package osmesa.pc
71594f8 coreutils_6.9: Update the older coreutils to no longer provide 'su'
1f476db rootfs_rpm.bbclass: Revert to default shell logging behavior
722430a bootimg: Use FAT 32 for images larger than 512MB
2f85e62 eglibc: remove dependency of eglibc-utils on bash
5693f3e tar: apply fedora patch for fortify sources sigabort
db07a94 matchbox-keyboard: fix the build with libpng15
d7bca38 libmatchbox: upgrade to 1.10, drop git
ebd508d libpng: enable nativesdk variant
8251685 create-pull-request: detect trailing white space
fad3986 eglibc: add AArch64 support
07dd59d gdk-pixbuf: handle postinstall errors differently
0496ba3 populate_sdk_(deb|ipk|rpm): export NATIVE_ROOT and INTERCEPT_DIR variables
4809890 telepathy-glib: remove pkgconfig dependency in pkgconfig
9820786 libpcre: Improve the recipe
f615f0c libpcre: upgrade to 8.32
b81f427 libuser: enable python support
505f88f qemu: upgrade to 1.3.0
24b4976 pixman: upgrade to 0.28.0
009d19a documentation-audit.sh: Add/fix checks for skipped lines.
4591512 Documentation: poky-ref-manual - Updates to WORKDIR structure
044a8f9 Documentation: poky-ref-manual - Updated STAMPS directory information
0173d4e documentation: poky-ref-manual - Fixed typo.
0b18e1d Documentation: yocto-project-qs - Removed all trailing whitespace.
73ffb82 Documentation: poky-ref-manual - Removed all trailing whitespace.
acb3f72 Documentation: kernel-manual - Removed all trailing whitespace.
72d01bf documentation: dev-manual - Removed all trailing whitespace.
eb8c9e1 Documentation: bsp-guide - Removed all trailing whitespace.
3bcdba6 documentation: adt-manual - Removed all trailing whitespace.
205c796 Documentation: dev-manual - Fixed maintainer link.
3dc3fe3 bitbake: BBhandler/data: Fix __inherit_cache duplication
8ead7dc bitbake: BBHandler/ast: Simplify/fix EXPORT_FUNCTIONS usage
f823f0a bitbake.conf/utils: Drop some OVERRIDES from FILESPATH
a190aba x11vnc: bind vnc server to port 5900
9240695 package.bbclass: prepend MLPREFIX to LOCALEBASEPN
2437aae multilib.bbclass: fix do_package_qa_multilib
ab0933e build-appliance: Updated to include bblayers.conf.sample fix
d4a4d00 build-appliance: provides git proxified acces
66d92cb mesa-dri: upgrade -git version to current master
a63dc47 mesa: upgrade to 8.0.5
cf94122 mesa: common packaging cleanup
74b2e40 mtd-utils:fix corrupt cleanmarker with flash_erase -j command
1386690 nativesdk-qt4-tools: fix do_configure to be reentrant
89230ea qt4: upgrade to 4.8.4
3488973 package.bbclass: make do_split_packages handle non-existent root directories
ec17940 base/license.bbclass: handle multiple INCOMPATIBLE_LICENSEs
82d6ef6 populate_sdk_deb.bbclass: put back INSTALL_PACKAGES_NORMAL_DEB
52a9ae6 hob-toolchain: Update for removal of dummy classes
c607095 bitbake: Revert "BBHandler: Ensure parser state engine is correctly reset for new parsing"
e353249 base.bbclass: Remove implicit dependency on license.bbclass
d175cf0 rt-tests: added missing dependencies in Makefile
260fd34 documentation: poky-ref-manual - Fixed grammar typo.
f00ba68 Documentation: dev-manual, bsp-guide, poky-ref-manual - bblayer.conf updates
ac1981e documentation: Makefile - Added tarfile to the clean target
6a6ebdb documentation: kernel-manual - removed white-space
a21cf1b documentation: kernel-manual - Fixed broken link.
1793879 documentation: poky-ref-manual - PACKAGECONFIG typo corrected.
377aee7 documentation: poky-ref-manual - PACKAGECONFIG edits
2320085 bitbake: BBHandler: Ensure parser state engine is correctly reset for new parsing
25bc944 rootfs_ipk/package_ipk: Simplify opkg commandline option variables
0e486c7 image/populate_sdk: Simplify imagetest inclusion and drop dummy class file
e3c2952 bootimg: Remove now unnecessary dummy inherit usage
f42e0ae license.bbclass: Including locale packages
1d61099 update-alternatives.bbclass: Add missing runtime dependency
d3154aa sstate: fix typo
dd3ad7f sstate: fix typo
68d62ff git: fix unpackaged python files
ade680a populate_sdk_base, adt_installer_internal: fix issue on older distributions
0b5772c mesa: remove atom-pc specific overrides
b660a10 buildhistory_analysis: fix broken list length checks
97a91e8 sstate: fetch .siginfo files from SSTATE_MIRROR
a2908e2 util-linux: Package systemd files correctly
6a86776 Added regex functionality to distrodata.bbclass
ae4a896 util-linux: rebase remove-lscpu patch
99e36ac qt4-native & ghostscript: update upstream status for their patches
6847325 zip: Remove QA warnings: No GNU_HASH in the elf binary
ff796ed babeltrace: upgrade to 1.0.0
2656c37 liburcu: upgrade to 0.7.4
59a7046 prs: use the PRServer to replace the BB_URI_LOCALCOUNT functionality
65049e9 nasm: upgrade to 2.10.05
0845bc2 libconvert-asn1-perl: upgrade to 0.26
6df2a60 libaio: Remove QA warning: No GNU_HASH in the elf binary
139efd1 quicky: tidy up inherit
49d58b3 python-smartpm: don't try to remove /usr/share/share twice
792fa1c at: change initscript dependency from build time to runtime
46eabf3 classes/binconfig.bbclass: Allow packages to add sed expressions
1e63822 libpcap: PR bump because of PU for libnl
052b662 wpa-supplicant: configured to work with libnl 3.2.14
f57bb21 libnl: upgrade to 3.2.14
ef05a7f qa.py: Toolchain path should not be hardcoded to execute objdump
bec5c30 libassuan: add pkgconfig support
1600f72 pth: add pkgconfig support
bd368cf ICU: add pkgconfig support
60fc9a9 libksba: add pkgconfig support
d20c23d linux-yocto/3.4: inform the fetcher if the meta branch changes
35d630e linux-yocto/3.4: emenlow: switch from psb to emgd graphics
48e7c26 linux-yocto/3.4: merge v3.4.19, v3.4.20
2907c80 puzzles: upgrade to r9712
efedbc4 lighttpd: upgrade to 1.4.32
bce1cce libxslt: upgrade to 1.1.28
53890fb libxcb: upgrade to 1.9
d4e8f72 ethtool: upgrade to 3.6
fb29d18 gconf.bbclass: run postinstalls at rootfs time
9764897 gdk-pixbuf: generate the pixbuf loader's cache ar rootfs time
dec1e7f gtk-icon-cache: run the icon generation at rootfs time
fd401f2 rootfs generation: export two new variables to postinst scriptlets
6b76f04 image.bbclass: run postinst scripts once, at rootfs time
dde5e64 license.bbclass: Avoid grep error message
4d4915a pkgconfig: Add a manual dependency of pkgconfig(pkg-config)
ca36d34 package_deb: Dependencies with a ( or ) in them are invalid in debs
2f5da1b shadow: add runtime dependency on base-passwd
2bc0834 python-smartpm: Fix incorrect comparison arguments
b3744b7 python-smartpm: allow setting arbitrary macros in smart config
8d9ee07 python-smartpm: support nolinktos and noparentdirs rpm options
4190b02 python-smartpm: don't create /var/tmp on every rpm database open
81dded6 python-smartpm: fix package metadata not being read from rpm-md feeds
e60be76 python-smartpm: style fixes
69b9c6b python-smartpm: add support for recommends
5443525 createrepo: implement support for recommends
a8cee41 rpm: Fix Upstream-Status fields
f47fa1a rpm: Fixup platform matching code
f8b2ec3 rpm: Fix rpm relocation macro usage
a6c86d1 rpm: Move rpmdb_loadcvt from base to dev package
140c7c8 rpm: enable _openall_before_chroot by default
80ad2af package_rpm.bbclass: Add the runtime dependencies to the pre/post scriptlets
990a17c tar: Split RMT from tar
dbadf6b cpio: Split RMT from cpio
5283be2 chkconfig: add link files install_initd and remove_initd
0f872d9 pulseaudio: explicitly set --with-database=simple
a8fa49f binutils_2.23.1.bb: Correct typo in enable-targets configure option
3ae71c7 tcmode-default.inc: Use binutils 2.23.1
0333796 oprofile: Include config.h before bfd.h
74c1731 binutils-2.23.1: Add recipes
30ce005 libusb-compat: Update to 0.1.4
381c4b6 sstate.bbclass: fix detection of owners matching sstate files
306761b sstate.bbclass: fixed file-conflict check
a5b720c util-linux: use u-a for eject
7fb6241 distutils: remove empty datadir/share after it's content is moved to datadir
eedb667 packagegroup-core-basic: use VIRTUAL-RUNTIME_initscripts and VIRTUAL-RUNTIME_init_manager
5b027d0 gst-meta-base: pull in X11 plugins when using X11
7f78064 qmmp: remove qmake2 from inherit
166a0ca fotowall: tidy up
3e47343 meta/lib/oe/sstatesig: fix locating stamp files
40b4bb0 populate_sdk_base: fix directory creation as normal user
600fde2 libxkbcommon: make the build do something
ce6199f bitbake: xmlrpc: Unbreak the transport by adding a missing logfile name
7e1e4ae bitbake: uievent: Fix an init race
e77f057 bitbake: hob: modified how the existence of a variable is checked
4bec4e7 populate_sdk_base: mkdir was missing $SUDO_EXEC prefix
2fc707a libxml2: update PR to contain INC_PR to reflect the update of inc file
fafc871 qa.py: Modify the env for the child process only
da6c266 xserver-xorg: restore packaging for the DRI/DRI2/DBE extensions
25f3c55 latencytop: add missing signed-off-by and re-add upstream status
e2e0942 kernel-yocto: checkout known branch before leaving do_validate_branches
5d8ddf4 libxml-sax-base-perl: add recipe for libxml-sax-perl
07d689a libproxy: Fix for CVE-2012-4504
bca7285 squashfs: fix for CVE-2012-4024
cab1983 libpng: fix license segment md5sum boundary
73f57eb bitbake: data_smart: Improve get_hash to account for overrides and key expansion
525cc08 bitbake: build.py: Preserve sigdata files in the stamps directory
7b0ad8e populate_sdk_base: Fix typo
40c57a4 populate_sdk_base.bbclass: make failure to find ld-linux.so a hard error
63de425 tune-cortexa*: add another TUNE which allows to enable cortexa* together with thumb and neon
584b3c4 arch-armv6: add tunes without vfp enabled
627ef2b arch-armv4.inc: add --fix-v4bx to TARGET_LD_KERNEL_ARCH only for armv4 and strongarm1100
d8bb18e arch-arm*: unify appending to TUNE_FEATURES
37af048 arch-armv[457]*: fix PACKAGE_EXTRA_ARCHS for bigendian TUNEs
b0e8c6a arch-armv5: fix missing thumb TUNE_FEATURE in armv5t-vfp and following tunes
6741748 tune-*: add PACKAGE_EXTRA_ARCHS entries starting with specific ARMPKGARCH
f06a11b tune-cortexa*, tune-xscale: fix ARMPKGARCH
b7a7e6e libxml2: add --with-fexceptions in configure flags to support exception handling in C++ programs
7f4262a libusb: Update to 1.0.9
2f2c630 msmtp: Update to 1.4.30
7b90941 less: Update to 456
86f32f6 ocf-linux: Update to 20120127
3d392f5 util-linux: Update to 2.22.1
cc24217 rsync doesn't create hardlinks for certain files
8880840 rootfs_rpm.bbclass: fix a regression introduced by list_installed_packages change
edd8d59 site/common-linux: move ac_cv_o_nonblock_inherited to site/common-linux
1b98ab7 populate_sdk_base:tarball installer:add sudo prompt
d55945c grep: update to upstream version 2.14
85fb3c4 build-appliance-image: Allow SRCREV to be overriden
6df7e34 sysvinit: Update ALTERNATIVES List for utmpdump
7a697d0 cmake: Update to 2.8.10.1
b19ac46 linux-yocto/3.4: move PREEMPT_NONE to beagleboard standard kernel only
c0c9688 libcgroup: fix INSANE_SKIP
59aaa92 gstreamer: Fix plugin builds
88a9f6d rootfs_ipk, package_ipk: drop --force-overwrite
d65514b readline: apply upstream patches
d0b157c glib-2.0: update to upstream version 2.34.3
1b99640 initramfs-framework: udev: Handle alternative binary paths
21cab67 net-tools: fix license segment md5sum boundary
2fbe17d glib-2.0: fix license segment md5sum boundary
9545e0b ltp: fix license segment md5sum boundary
91120a5 xcb: fix license segment md5sum boundary
1dbc684 libdaemon: fix license segment md5sum boundary
430d448 gmp: fix license segment md5sum boundary
108c9dd coreutils: fix license segment md5sum boundary
2c2dfe4 uclibc: fix license segment md5sum boundary
f6a2c74 pong-clock: fix license segment md5sum boundary
4aa17a3 xorg-app: fix license segment md5sum boundary
202f4ea qt4-native: make qt4-native work with long building path
e5f6b33 ghostscript: make ghostscript work with long building path
bc33a16 maintainers: Tweak ownership of recipes
951efac documentation: poky-ref--manual - Updated PACKAGECONFIG
dbab91a documentation: poky.ent - Added python-xml to OpenSUSE essentials
0f0db8a documentation: dev-manual - Updated installing YP eclipse plugin from code
7c88384 documentation: dev-manual - Updated collaboration section
518efae documentation: yocto-project-qs - Modified PREMIRRORS example
5b41087 documenation: dev-manual - Updates to dev shell section
095bdd8 documentation: poky-ref-manual - method for discovering features
5fd4f1a documentation: yocto-project-qs - Fixed two links.
429ce39 documentation: poky-ref-manual, dev-manual - deveshell handling
6e17ba9 documentation: poky-ref-manual, dev-manual - devshell behaviour
04cb323 documentationo: poky-ref-manual - Added example to MACHINE_FEATURES.
e1eb798 documentation: poky-ref-manual - edits to machine and distro features
4c2b2fc documentation: poky-ref-manual - new COMBINED_FEATURES variable.
6a29362 documentation: poky-ref-manual - typo fixed.
fa30b8b documentation: poky-ref-manual - edits to build history section.
decd778 documentation: adt-manual - Fixed autotools command-line example.
c11c2da documentation: adt-manual - Fixed configure command syntax
55530d4 documentation: adt-manual - autotools-based projects
e197fca documentation: poky-ref-manual - default info for BB_DISKMON_INTERVAL
ba0f4df documentation: poky-ref-manual, dev-manual - optional module packaging
c2f14db documentation: several manuals - Notes and links for filename space issue
dab49aa documentation: poky-ref-manual, mega-manual, Makefile - new variables
255ca14 documentation: poky-ref-manual - New Build History section added.
128b6be documentation: poky-ref-manual - Better wording for build section
f184d58 documentation: adt-manual - Added information for required packages
3ebfe99 documentation: poky-ent - changed 'awk' to 'gawk'
a01f335 documentation: prepare for 1.4
2e6924e guile: touch compiled modules on sstate install
48db13e guile: fix bashism in script
13180a9 pango: update to upstream version 1.30.1
3d943db initramfs-framework: init: Stop mount warnings during boot
48e657f rootfs_rpm.bbclass: normalize arch output of list_installed_packages
b751ec1 populate_sdk_base: tarball installer: SDK overwrite warning
5756d9f subversion: update to 1.7.7
965f7dd ccache: update to upstream version 3.1.8
9a97101 slang: explicity disable invoking onig module
3067a91 eglibc: Move compile with optimization handling to common code
1c7aa56 libpng: update to upstream version 1.2.50
8710407 cairo: update to upstream version 1.12.8
bcfb295 gtk+: do not prelight GtkButton in touchscreen mode
247b6a3 gstreamer, gst-plugins*: fix localdata
f931aeb rootfs_ipk.bbclass: add missing --force_postinstall option
9de0501 bitbake: build/siggen.py: Avoid removing too many stamps when cleaning
4493b10 bitbake: hob: when BBLAYERS_NON_REMOVABLE is not set hob shows an error
b629d94 openssh: CVE-2011-4327
8d1aed5 upstream_tracking.inc: ltp and connman
d0f68a3 autogen: use pkg-config directly instead of guile-config
75429c1 local.conf.sample: Enable disk space monitoring by default
82d05e2 bitbake.conf: Change build output message to list BUILD_SYS, TARGET_SYS and NATIVELSBSTRING
0060427 build-appliance-image: Updated to wget mixed-up commands fix
eeaad6f bblayers.conf: Add a new variable to prevent certain layers to be removed
cc1fcf7 sysprof: Fixes undefined  reference to `rmb'
a0cf759 bitbake: fetch2/wget: Fix for mixed-up wget commands
408a0d8 bitbake: fetch2/local: Fix bug introduced by expression ambiguity
73b9f64 bitbake: hob: make some layers non removable
c6dc0b9 bitbake: Update version to 1.17.0
6a2ce81 bitbake: fetch2: Avoid using FILESDIR in unpack
7420cf5 bitbake: fetch2/local: Improve handling of wildcard matches
13ecfdb packagegroup/allarch: Convert to use allarch class
668f7e3 allarch: Allow class to be included but overridden
e8be466 base.bbclass: Drop P and PN from FILESPATH
6514590 bitbake.conf: Simplify FILESPATH
26978d8 bitbake.conf: Drop obsolete FILESDIR setting
e2edcd9 sanity.conf: Increase minimum bitbake version requirement to 1.17.0 for FILESDIR updates
226e492 automake: update to upstream version 1.12.5
54ee29e tune-*: define more generic DEFAULTTUNE to share feed between machines
2c300bc arch-arm: define different ARMPKGARCH when different CCARGS are used
c5b670e arm/arch-arm*: define ARMPKGARCH_tune-* for default tunes
9be83df bitbake: knotty/msg: Avoid usage of curses initscr/endwin to avoid terminal corruption
8a3dd9e bitbake: hob/builder: Don't rerun sanity checks
f26d3e8 bitbake: hob: showing when build fails because out of disk space
7cbc3cf bitbake.conf: add TUNE_CCARGS[vardepvalue]
68c2a55 tune-cortexr4: fix march value
1c5fb74 tune-xscale: replace TUNE_CCARGS for webkit-gtk and cairo only with xscale in TUNE_FEATURES
99e0053 gst-plugins-base: add dep on libsm and libice
6944a3b license.bbclass: Collect LICENSE level packages
bc5bf6f archiver.bbclass: DISTRO is not required variable so deal with it
70e654a eglibc: always compile with optimization.
e63596e python-pygtk: add gtk-types.defs into gdk.c dependence
6f605de db: update gnu-config files in do_configure()
40c0dbc strace: backport AArch64 support
d48d44e curl: eliminate forced setting of -g0 when compiling
5c1c26a unzip: pay some attention to our CFLAGS
0311826 zip: pay some attention to our CFLAGS
eac24cb mingetty: replace cflags hard-coded into Makefile
d241626 iproute2: pass CFLAGS to Makefile\
10baa59 bind: make "/etc/init.d/bind stop" work
165ed25 procps: pass CFLAGS to make
a68c456 meta-toolchain-qte: add --sysroot option to OE_QMAKE_(CC|CXX|LD)
5e744f5 gtk+: update to upstream version 2.24.13
e0ca1c0 xf86-video-omap: drop RPROVIDES/RREPLACES/RCONFLICTS
fb403f2 xf86-video-omapfb: revive driver which actually works and is tested on real devices
957b835 xserver-xorg: disable dri2 too when building without glx PACKAGECONFIG
554bc89 xf86-video-omap: add xf86driproto dependency, drop --enable-neon and improve DESCRIPTION
df1a1dc perl: use the exported LDDLFLAGS in generate_config_sh script
3ac6238 kern-tools: report missing config fragments by name
8795797 linux-yocto-3.4: gcc optimization config feature
002f483 opkg: bump SRCREV and drop applied patches
9f836a4 lsbsetup: drop it
1d8580b packagegroup-core-lsb: remove lsbsetup
cffd1a9 lsb: move links from lsbsetup to here
d3dbfd6 gcc: Add --enable-linker-build-id
7a7f948 insane.bbclass : Disable tests for unsafe references in binaries and scripts.
f862f06 binutils-crosssdk: do not set .interp size to 0x1000 for partial linked objects
e2143b3 image classes: use PN for depends, not IMAGE_BASE_NAME
5ce6418 gcc-cross: Explicitly depend on linux-libc-headers
4fbcd24 sstate: Explicitly define populate_sysroot task relationships
4b45039 sstate: Add a rule for target sysroot requirements from cross dependencies
cf61ea2 build-appliance-image: Add explict dependency on do_unpack
56e3fcc scripts/sstate-cache-management.sh: Fix stamp handling after recent layout change
0c46dad scripts/cleanup-workdir: Adpat to new workdir layout
14f7c9c Revert "kern-tools: report missing config fragments by name"
7e2d4ea maintainers.inc: Update ownership of recipes
37c752a kern-tools: report missing config fragments by name
5fd5ba6 kernel-yocto: clarify KMETA branch comments
01ff700 linux-yocto/3.4: uprobes: reinstate config options for 'uprobe' feature
1e12ab7 linux-yocto/3.0: fix virtio configuration typo
fe21ace python-smart-backend: Remove bogus runtime virtual/
a01737e xf86-video-omapfb: drop
8043f45 xf86-video-omap: don't use AC_CHECK_FILE
0d7d413 build-appliance-image: Update to dee77eca39f406f90e60d9c5ef7a66fcc8f57dbf commit
06124db builder: fix adduser breakage with password
76950d3 Revert "bitbake.conf: Drop obsolete FILESDIR setting"
1b4dcf1 ldconfig/cdrtools/icecc-create-env/linuxdoc-tools/python: Set FILESPATH to find -native files
e917c7b classes: Drop do_package stamp-extra-info
73ef532 utils: Optimise looping in base_set_filespath
e6b313d libffi: Use a more standard layout for patch files
3e0cd7c trace-cmd: Simplify SRC_URI patch entry
bb748a1 matchbox-panel-2: Use a more standard layout for patch files
997ae28 bitbake.conf: Drop obsolete FILESDIR setting
05041d3 x-load: Replace FILESDIR with FILESPATH
42b9968 opkg: Drop unnecessary FILESDIR setting
9ed25ef qemu_git: Drop unnecessary FILESDIR setting
6177bfb gcc: Use FILESPATH instead of FILESDIR and cleanup/simplify
1574352 build-appliance-image: Simplify fetch/unpack execution
eaa7c3a opkg: drop PACKAGE_ARCH setting for update-alternatives-cworth
6809295 distutils-common-base: Create staticdev pacakge for static libraries
bf31c85 gnutls: Update to 2.12.21
34626c4 libksba: Update to 1.3.0
3f42e20 dhcp: Update to 4.2.4-P2
c6ea431 libxml2: Update to 2.9.0
787c8a7 resolvconf: Update to 1.68
9a34da5 mc: Update to 4.8.6
5c93c69 man-pages: Update to 3.44
aae8d68 tiff: Update to 4.0.3
3881a54 rt-tests/hwlatdetect: Update to 0.85
fbb1228 libdumpvalue-perl: Update to 1.17
d1f0ef5 libproxy: set LIBEXEC_INSTALL_DIR
d48eac8 libtasn1: Update to 2.14
e63c406 multilib.bbclass: Drop populate_sdk_base exclusion
c206007 libcheck: Add missing rdepends on gawk and set path correctly
dee77ec bitbake: server/process.py: Change timeout error handling
212397c package.bbclass: Adapt debugsrc code to workdir layout changes
6208572 mesa-dri: add correct RPROVIDES for the -dev packages
66861cc Revert "gcc: Use FILESPATH instead of FILESDIR and cleanup/simplify"
39ab3f1 ia32-base: fix typo in XSERVER_IA32_EXT definition
a859ba5 maintainers: Tweak ownership of recipes
f85e0ef qt4: remove qt4-x11-free bbappend
bad9765 yocto-bsp: upgdate configs after xf86-video-omapfb changed name
5cea09e yocto-bsp: update configs after xorg upgrade
9f5e0c6 qt4-x11-free: Switch to 4.8.3
cbdc814 bitbake: knotty: Colorize knotty interactive console output
e3bda7f bitbake: hob: warnings during the build should be displayed in the Issues tab
328f74a bitbake: runqueue: Allow partial setscene task coverage
5de7744 bitbake: parse/cache/cooker: Preserve order in the file inclusion list
e10bea3 libcheck: Update to 0.9.9
da3ac77 sqlite3: Update to 3.7.14.1
12bfb5b builder: Add password for user
9afb3fc sysstat: Update to 10.1.2
d9fe5c5 mesa: default to enabling EGL and GLES
7e0efe1 mesa: add -mesa suffix to GL packages, RPROVIDE their generic names
0ed7c53 xf86-video-omap: add new recipe to follow the maintained repo
f2be956 xf86-input-synaptics: add mtdev dependency
fe5256d xf86-video-vmware: Add compat API
69f1b45 xserver-xorg: upgrade to 1.13.0
cb758f9 libdrm: upgrade to 2.4.40
3491c88 xkeyboard-config: upgrade to 2.7
989bc4e guilt: change upstream tgz location
e85911e kern-tools: flexibility and usability enhancements
41d09ca kern-tools: kconf_check: fix find warning
2321677 linux-yocto/3.2: update to v3.2.32 and 3.2.32-rt48
04caf88 linux-yocto/3.4: v3.4.17, v3.4.18, -rt and config changes
e5d08fa linux-yocto/3.4: bump kver to v3.4.16
a7cd6e3 linux-yocto/3.4: efi/mmc fixes and fri2 updates
cd838e8 linux-yocto/3.4: nfsd, pci, fishriver and rangely config changes
c6c0809 license: We need to run this task before do_build, there is no dependency on do_package
f93f43c bitbake.conf/sanity: Separate versions and PN stamp components into separate directories for WORKDIR and STAMP
265f69a image.bbclass: Add missing dependency on do_package data
f32ef56 sstate: Implement a setscene dependency validation routine to allow skipping of some sstate installation
0772915 scripts/pybootchart: Allow minimum task length to be configured from the commandline
295f160 scripts/pybootchart: Fix missing entries bug
6e6dcbe flac: fix text relocations
264ca0f ncurses: update gnu-config files in do_configure()
9ee6b71 kmod: fix git repo URL
1f71583 qt4: remove 4.8.1
4e2de8f qt4: remove negative preference on 4.8.3
9061687 gcc: Use FILESPATH instead of FILESDIR and cleanup/simplify
9acfef9 yocto-bsp: update qemu machine.conf template
a0123b0 pulseaudio: explicitly disable xen, rather than letting it detect
527735d opkg: added alternatives-ln patch
5a9b80b binutils: fixed --enable-targets option
c2cb4c0 cmake.bbclass: use DEPENDS_prepend instead of += for cmake-native
2d234fb default-providers: add default provider for make
9e016c4 libcgroup/libxkbcommon: Use BPN in SRC_URI
0ef08c4 Fix the first line typo of adt-installer
ad0ea7e less: Update to 451
86204fb insane.bbclass: add qa package name check
2c82669 sstate: Drop now unneeded python whitelist entries
89bc43e python: Resolve intermediate staging issues
dadb3a7 packagegroup-self-hosted: add sftp server
e803ac0 psmisc: Update to 22.20
bc80f0e kconfig-frontends: Update to 3.6
1138523 mx: Update to 1.4.7
374960b pulse: fix Bashism in string test
4d019c0 make-3.82: Add patch for archive expression expansion issues
bd6c5ff xf86-input-synaptics: add mtdev dependency
394ba7a mdadm: upgrade to 3.2.6
657ed11 fontconfig: upgrade to 2.10.1
8b8fd8c xcb-proto: upgrade to 1.8
2ef5965 xf86-input-mouse: upgrade to 1.8.1
9e4ef9e xf86-video-intel: upgrade to 2.20.12
eed09cf xf86-video-vesa: upgrade to 2.3.2
a0d1ac7 python-smartpm: Add basic knowledge of RPMSENSE_MISSINGOK
11af6b0 rpm: Add additional RPMSENSE values to python module
3d8fd40 python-smartpm: Add smartpm recipe
4dd9d39 rpm: Slightly change the way python-rpm is constructed
9e0d3c0 sstate: Bump version number to deal with layout fixes
1fd9a16 bash: fix mkbuiltins build failure
aa75269 sstate: Fix various path manipulation issues
c176e5a bitbake: knotty: kill duplicated import of 'time'
68b7f18 utils.bbclass: Fix documentation of create_cmdline_wrapper
2c494b2 classes: Be consistent about sstate-inputdirs/outputdirs ending with '/'
19ecc26 sstate: Be consistent about sstate-inputdirs/outputdirs ending with '/'
78ac027 python.inc: make lsb override more concise
745b146 libc-common: Ensure sysconfdir exists before installing files to it
c2ea081 boost: Activate zlib and bzip2 because they now work.
41125dd bitbake: print clear message for "bitbake -e ASSUME_PROVIDED"
4e2b5a5 bitbake: hob: hob was freezing because it doesn't receives well the log file
7e1e306 mesa-demos: fix --with-glut check
fe16cbc initrdscripts: fix udevd in the live boot init scripts
9cc79b2 libunique: fix compilation with GLib 2.34
e5822cf poky.conf: Enable warning on textrel QA check
9603311 upstream_tracking.inc: update for 1.4 planning
eae032a upstream_tracking.inc: update according to YP 1.4
8e0d0c5 upstream_tracking.inc: Update hdparm
5e517c8 upstream_tracking: update for 1.4 planning
c476a8c upstream_tracking: Update for 1.4 Planning
fd17ed4 maintainers: Update file with missing maintainers
fa73df6 insane: detect and warn about relocations in .text
210839e libxslt: upgrade to 1.1.27
d69683f puzzles: upgrade to r9660
1815a99 mesa: remove python2 detection hack
c04f543 populate_sdk_base.bbclass: use SDK_ARCH instead of SDKMACHINE
35d5e2f glib-2.0: upgrade to latest stable, 2.34.1.
970aa6d glib-2.0: remove zip build dependency
7ee2410 qt4: remove -lGLU from QMAKE_LIBS_OPENGL in our linux.conf
e828faf xorg-driver-common: remove AC_CHECK_FILE workaround
7ea8496 meta: remove redundant _FOR_BUILD variables
85bfe3c autotools: set _FOR_BUILD variables here
78983e9 lib/oe/classextend: Ensure we don't extend expressions more than once
e421e95 gnome-desktop: Now we depend on gnome-common-native, use the correct sysroot
f3fc98d gnomebase: depend on gnome-common-native
ce7e817 populate_sdk_base.bbclass: check installation machine before installing SDK
97469db gnome-common: Fix license
4260403 bitbake.conf: Add udev rules into ${PN} files by default
e48fe4e create-recipe: update re pattern and output
7f6edde hwclock.sh: improve hwclock.sh script to use UTC variable
aea2d8c recipes-devtools: replace virtclass-native(sdk) with class-native(sdk)
d005b78 recipes-extended: replace virtclass-native(sdk) with class-native(sdk)
cc1f50f recipes-graphics: replace virtclass-native(sdk) with class-native(sdk)
5ddf857 recipes-support: replace virtclass-native(sdk) with class-native(sdk)
60c3bd4 recipes-gnome: replace virtclass-native(sdk) with class-native(sdk)
a59b113 recipes-kernel: replace virtclass-native(sdk) with class-native(sdk)
841107b recipes-connectivity: replace virtclass-native(sdk) with class-native(sdk)
51c7ad6 classes: replace virtclass-native(sdk) with class-native(sdk)
ffec48a conf: replace virtclass-native(sdk) with class-native(sdk)
5d94d29 recipes-core: replace virtclass-native(sdk) with class-native(sdk)
74bb195 babeltrace: fix depends
627fd60 packagegroup-core-tools-profile: include sysprof only if x11 is distro feature
141eceb latencytop: disable GTK and remove gtk+ dependacy
662a445 mesa: Build separate GLU library
ad9ad06 terminal: Ensure existing environment exports are preserved in devshell
05a1f4a terminal.bbclass: Ensure parent environment is set
c1c20c0 bitbake: command: add error to return of runCommand
99fa251 bitbake: hob: providing details about process state through porgress bar
e450b10 bitbake: bitbake/server: Remove dead console log code
f5acdd8 bitbake: cooker.py: Don't dump the environment into the console log file
6265106 bitbake: uihelper: Set update flag when start event encountered
44c5d3d bitbake: knotty: Ensure last tasks are disaplyed correctly in the footer
e9e3285 openssl: Use ${CFLAGS} not ${FULL_OPTIMIZATION}
4801ed7 udev: Ensure tmpfs are mounted and volatile/run exists
656979f udev: Use correct variable in udev.conf for run_path
cecba78 polkit: remove license.html from LIC_FILES_CHKSUM
93c04c1 bitbake: hob: reordering the layers in the Hob Layers dialog
30d1943 bitbake: hob/hig: Hob doesn't save properly proxy settings
55cdbd5 bitbake: hob: during recipe parsing, progress bar text provides details about the process state
a9c563b bitbake: hob: add a progress indicator when you select 'view log'
e281bb3 udev-extraconf: Don't mount root filesystem under /media
2e24eb2 busybox: add /usr/bin/stat applet
4b40886 lttng-modules: remove unused lttng-syscalls patch
ddd4dd8 bitbake.conf: Change systemd_unitdir definition
b4e48cc distro_identifier: replace slash with hyphen
32cec32 populate_sdk_base: allow SDK path of various level
39e8e06 ltp: add perl to RDEPENDS
6ec5640 sstate: add manifest info for shared file matches
115076c gst-meta-base: include ximagesink plugin when x11 is a feature
5bef184 pulseaudio: remove libpulse-browse, removed upstream in 2011
6b2db8b pulseaudio: fix library packaging
24807c6 pulseaudio: move helper binaries into the relevant module packages
8d4b851 pulseaudio: add GConf dependency
8d98171 insane.bbclass and friends: Fix sanity checks and multlib headers for n32
4940be5 populate_sdk_base: Ensure that the multilib cross-canadian tools are used
26d966f populate_sdk_base: Update extraction script for multilibs
7e2ff7c multilib - crosssdk: Stop building multilib for crosssdk packages
ea22010 multilib: Add support for cross-canadian multilib packages
511f7f9 zeroconf: remove
3f14eb3 poky.conf: Add multiarch to DISTRO_FEATURES
59943ca bitbake: bitbake: hob/builder: Hob crashes because of bad init
4d7b2d2 udev: upgrade to 182
ad39133 diffutils: fix rebuilds
c65e88b perl: update dependencies
c1da202 cogl/clutter: Explicitly depend on libdrm for GLX
33440ee bitbake: hob/settings: add a scroll bar for the box with mirrors
8cad1e3 bitbake: bitbake: hob/builder: Image selection is remembered while changing adv settings
a975e6b bitbake: hob/builddetailspage: set "Log" page as default
62e9f76 bitbake: hob/imageconfigurationpage: progress bar shows when recipe parsing is stopped
4a3b0d7 bitbake: bitbake: hob/hobwidget: "Brought in by" column is now displayed correctly
b3374db bitbake: hob: stop build without percentage shown
9cf6106 bitbake: hob: change behavior for "cancel" button from the Recipe selection page
759dadf bitbake: hob: image size displayed wrong size in edit packages screen
6cc2f06 bitbake: event/hob: Add a button for network tests in the proxy settings
d93898b automake: update dependencies
3533e80 autoconf: update runtime dependencies
f816625 perl: update dependencies among modules
645ba03 sato-icon-theme: merge sato-icon-theme.inc into recipe
5b1d45c sato-icon-theme: fix build
c8e2f14 gnome-icon-theme: remove unused configure variable
be3add2 gnome-icon-theme: fix icon mapping
feaff11 opkg-utils: bump SRCREV to latest
fdd6fb5 gst-plugins-good: disable taglib explicitly
df9bc28 bitbake.conf: break three very long lines
662189d xorg-driver: add xserver driver ABI dependencies
553d9db rootfs_rpm.bbclass: maybe no rpm postinst script
c45a7d1 terminal: Add support for running custom terminals.
6309eea shadow-securetty: add ARM AMBA serial ports
04d6b20 linux-firmare: upgrade to latest commit
54d42c1 gtk-immodules-cache: Add initial class to update gtk inputmethod module cache
dfc39d7 nativesdk-ncurses 5.9: files were installed but not shipped
b7e1845 lttng-2.0: fix srcrev/pv to match the recipe filenames
683d54a packagegroup-core-tools-profile: replace 'legacy' lttng with lttng 2.0
bb753ad opkg-utils: Add needed python modules as RDEPENDS
3cabe89 libxkbcommon: new window system-independent XKB library
fa471ac qemugl: Remove since support for it was removed from qemu
952b879 yocto-bsp: Fix git url parsing, allowing for local mirrors
a3d5e9e libical: remove
543b33d evolution-data-server: remove
b39ca7e gmae: remove Evolution Data Server
616642f uClibc: Resolve conflicting options when building for mips32
72d7f8d libsdl: fix inconditional alsa disabling.
8255558 rootfs_ipk.bbclass: Some extra spaces / tabs were removed / formated
e7f1ec9 rootfs_ipk.bbclass: Don't duplicate remove_packaging_data_files code
dd03773 opkg: Don't print empty PROVIDES
e702a1a opkg: Add patch to fix removing packages with recommends
2df8db4 insane: add a check for Xorg driver ABI dependencies
bc41dfb xserver-xorg: add runtime provides for the driver ABI version
e7bae18 mtdev: New recipe for mtdev
9af29d8 cpan-base: Add more debug paths to FILES
c25ed82 atk: Update to 2.6.0
d59d430 package: Hardlink debug source to improve performance
60a26d2 documentation: yocto-project-qs - Final changes before the 1.3 lockdown
a73fde8 documentation: poky-ref-manual - Final changes before the 1.3 lockdown.
2b51188 documentation: dev-manual - Final changes before 1.3 lockdown.
f3c1226 documentation: bsp-guide - Final edits before 1.3 lockdown
c26d20e documentation: adt-manual - final edits before 1.3 lockdown.
3374926 documentation: dev-manual - fixed capitalization on Source Directory.
9137117 documentation: kernel-manual - minor edits before lockdown
450f438 documentation: dev-manual - Updates to Git workflow and kernel patch
205db48 documentation: poky-ref-manual - new variable and edited variable
8ce23f5 xorg: remove XF86 BigFont extension
b5591d0 kernel.bbclass: Do not chdir to /boot before running update-alternatives
394f284 eglibc-2.16: Use tar ball instead of svn SRC_URI
59e3a13 eglibc: Move perl- and bash-using scripts to separate recipes
92b44ec package.bbclass: Exclude the PKGTRIPLETS variable
c4c37bc multilib/clsextend: Improve handling of regexps in PACKAGES_DYNAMIC
f07be9d yocto-bsp: set branches_base for list_property_values()
7090cbe documentation: dev-manual - removed the wip.png figure
2889498 documentation: poky-ref-manual - Updates to DEPENDS and RDEPENDS
50247c8 sstate: Improve handling of machine specific manifests
a68c7c7 package.bbclass: Switch shlibs to pkgdata directory and make package non-machine specific
9da9e5d lib/oe/packagedata: Use the PKGMLTRIPLETS variable
0c2c3b7 base.bbclass: Add PKGTRIPLETS and PKGMLTRIPLETS variables
072a6d3 perl: Fix perl module dependency issues
caba9cb kernel.bbclass: add kernel-modules to PACKAGES
fadb407 PACKAGES_DYNAMIC: use += instead of = in most cases
33b3164 PACKAGES_DYNAMIC: use regexp not glob
e993851 documentation: poky-ref-manual - edits to SUMMARY and DESCRIPTION
07884bd documenation: poky-ref-manual - updates to the LICENSE variable.
bff24c5 documentation: poky-ref-manual - updated the DESCRIPTION variable.
c3e04b6 documentation: poky-ref-manual - Updated SUMMARY variable description.
acbb915 documentation: dev-manual - Updated compliance section.
014f91c documentation: poky-ref-manual - Edits to feature backfill
c6ce06b documentation: poky-ref-manual - Backfill variables updated.
a048ed2 documenation: poky-ref-manual - updates to variables.
bbd299d documentation: poky-ref-manual - updates to distros and machines
9ea2919 documentation: poky-ref-manual - edits to the features backfill section.
1e642b1 documentation: poky-ref-manual - edits to *_FEATURES glossary
45b98aa documentation: poky-ref-manual - updates to feature backfill section.
93ecafc documentation: poky-ref-manual - Updates to MACHINE glossary entry.
f5ea427 console-tools: Fix build issues with make 3.82
4211de4 kernel.bbclass: remove explicit version.h target
51cbb5a perl: fix dependecies
ee8d3fb bison: Fix gplv2 version to work with recent gettext
e2dfa38 diffutils: Fix gplv2 version to work with recent gettext
fac5ca9 sed: Fix gplv2 version to work with recent gettext
1096942 grep: Fix gplv2 version to work with recent gettext
d497fe9 autotools: Use STAGING_DATADIR_NATIVE for config.rpath
e6e2b9b documentation: poky-ref-manual - edits to MACHINE type variables.
747088a documentation: poky-ref-manual - quoted section reference
fe56361 documentation: poky-ref-manual - Updated build/conf/local.conf
6339d90 documentation: poky-ref-manual - updated the STAMP glossary description.
3bf1848 sstate: when warnings about sysroot overwrites, say what the recipe was
a008df2 gconf: Avoid error when trying to delete files that don't exist
f0a56f6 lib/oe/qa: Trap exceptions when running objdump
0fd014e insane: Don't try to run objdump on symlinks
f8c90bc insane: Rationalise phdrs-based QA checks
96b8d72 gnome-icon-theme: update mapping program location
f0ec93c sato-icon-theme: update mapping program location
e5f9a9f qemu: don't ignore libexecdir in configure
c07e4ab perf: set the perfexecdir
d92cff6 ia32-base.inc: don't depend on mesa-dri
4445ffe sysklogd: fix update-rc.d handling
789ebb5 pulseaudio: add missing switch-on-port-available dependency to the server
ec0279a lttng: support more compatible hosts
e7f2b63 qt4: use extra variable for more QT_CONFIG_FLAGS fragments
2be7032 gtk-doc.bbclass: Run gtkdocize in ${S} not ${B}
ef9eac2 build-appliance: ensure zip file is linked locally
9fe0f62 buildhistory.bbclass: Fix hostname print for 'No changes' case
7950bdf autotools.bbclass: Fix gettext macro versions issues
c0bf723 autotools: Fix race over aclocal macro directory
81be7c8 scripts/cp-noerror: Try and use hardlinks if possible
e8338b7 scripts/cp-noerror: Copy the code from shutils.copytree, update not to error if the mkdir fails
25e060d texi2html: Add check for directory existence
1a731b5 diffutils: Remove rather bizzare gettext macros
eabcd31 kexec-tools: Add dependency on xz
216b88f gettext: Add config.rpath and Makefile.in.in to gettext-minimal-native
9ecacde console-tools: Clean up recipe
2ddf822 qemu: Explicitly disable bluez, its not in DEPENDS
1d18224 bitbake.conf: change libexecdir to ${libdir}/${BPN}
aee0f32 xorg-proto: remove evieext
9b9fad3 xorg: remove xf86rushproto
a3720a5 sanity.bbclass: trigger network tests explicitly
2d89cff sstate: Use -m option to tar when unpacking sstate
eb8a8fe libdrm: Add --disable-cairo-tests switch and update to upstream patch
4ebe9d1 libdrm: Bump git recipe to latest 2.4.39+ revision
214ad32 scipts/combo-layer: Fix check_rev_branch() for cases where the revision is on more than one branch
1a57708 lttng-tools: skip new libexec insane test
c57b610 qemu: add libexecdir to configure call
a6052d6 insane.conf: add new libexec test
7087e82 chkconfig: pass CFLAGS to Makefile
ca8edd6 packagegroup-self-hosted: recommend kernel modules instead of depending on them
ed79d5e Move 'tag=' to SRCREV in mtd-utils recipe
026ad49 Move 'tag=' to SRCREV in btrfs-tools recipe
bfa0fcd populate_sdk_base.bbclass: Make it possible to override the create_shar method of populate_sdk_base.
7817d91 gypsy: removed gypsy from meta/recipes-connectivity
2b5acdc recipe_sanity: Don't bother checking LICENSE
36d4dcf libnss-mdns: fix mDNS resolving speed
27def85 gnu-config: update to 2012.08.14 to get support for AArch64 architecture
5ba60ce pcmanfm: mark AArch64 as compatible
59e0301 packagegroups: disable kexec, valgrind, lttng, systemtap on AArch64
c489cb6 util-linux: add AArch64 support
1523d50 openssl: add AArch64 support
72188f5 insane.bbclass: add AArch64 support
128c390 kernel-arch.bblass: add AArch64 support
2715432 siteinfo.bbclass: add AArch64 support
3f516bb xorg: remove fontcache support
546f280 libxfont: remove spurious dependency on fontcacheproto
d6dc72c xorg: remove all traces of XPrint
f29e000 xserver-xorg: use INC_PR in PR
1e533ae xorg: remove XTrap
e7ee5be mesa: remove libegl-dbg, put all debugging into mesa-dri-dbg
9cc8a94 mesa: remove mesa-dri dependency in mesa-dri-dev
30f53b5 xf86-video-intel: bump to latest release
9d76559 xserver-xorg: upgrade to 1.11.4
fda7103 strace: Don't package strace-graph
0aad466 module.bbclass: Move do_make_scripts() to module-base
c942d52 xf86-input-keyboard: upgrade to 1.6.2
8f85691 kernel.bbclass, module.bbclass: Make update-modules optional
895994a gettext: Remove spurious-looking dependencies on libxml2-native
545f680 xf86-video-fbdev: bump to 0.4.3
f1d73fd xf86-input-evdev: bump to latest release
2637809 cpan_build: Unify directory layout for native and target builds
bf97b1a Add packagegroup-core-buildessential
bf3b850 libtool: Ensure the paths to sed are not hardcoded
bcc73d2 pkgconfig: Drop automatic pkgconfig RDEPENDS
a6f6d4f package: Recommend virtual-locale-*, don't depend on it
d38f055 libc-package: Drop bogus replacement operation
8b6e9b8 documentation: poky-ref-manual - small edit in wording.
ac7a354 documentation: poky-ref-manual - Added and updated variables.
90b7c0c documentation: dev-manual - Edits to "Patching the Kernel" section.
0163821 documentation: dev-manual - lttng and Git workflow changes
ca144a6 documentation: bsp-guide - minor edits.
fc76b3e documentation: poky-ref-manual - changes to required variables for recipes
3463593 documentation: dev-manual - small edit to compliance section.
b0c10ab documentation: dev-manual - edits to the compliance section.
aab60fa documentation: poky-ref-manual - added note about PATH
f42d97b documentation: Release date updated.
f1bb3fa documentation: poky-ref-manual - edits to migration chapter.
915b01e documentation: dev-manual - Removed whitespace.
eed512b documentation: poky-ref-manual - New chapter on migration added.
81a4c1d documentation: poky-ref-manual - moved SSTATE_DIR.
a117b4d documentation: poky-ref-manual - New glossary entry SSTATE_MIRRORS.
83448c4 documentation: kernel-manual - Fixed typo.
bd83f6a documentation: dev-manual - edits to kernel section and compliance
4c35e5a documentation: dev-manual - edits to the license compliance section.
715456a documentation: dev-manual - edits to the patching the kernel and model sections.
e44de7b documentation: poky-ref-manual, yocto-project-qs - supported distros
277e463 documentation: poky-ref-manual - Updates to the BPN variable.
c75c152 documentation: dev-manual - Added license compliance section.
3ec994e documentation: poky-ref-manual - Updates to the poky structure
059cfe1 documentation: poky-ref-manual - wording changes
87fb43c documentation: poky-ref-manual - change support to opkg from ipkg
9888c09 documentation: poky-ref-manual - Edits to fix default description
88924d6 documentation: poky-ref-manual - New backfill variables and section.
5abdefd documentation: poky-ref-manual - DISTRO description extended.
c4659cd documentation: poky-ref-manual - New PACKAGECONFIG glossary entry.
56bdedd documentation: poky-ref-manual - MACHINE definition extended.
65159bb documentation: poky-ref-manual - Variable descriptions edited.
1b67411 documentation: poky-ref-manual - LICENSE_PATH not LICENSE_DIR.
fa04150 documentation: dev-manual - Typo fixed.
c134f28 documentation: Makefile, dev-manual - edits to patching kernel
cf83acc local.conf.sample: add PATH to SSTATE_MIRRORS comments
0260bb5 gitignore: Fix for poky repository
df127c9 distro_alias: Update for Internal BOM tracking
a691562 gdbm: Resolve host contamination issue
d13e633 poky.conf: Bumping DISTRO/SDK values
c874b99 pkgconfig: Drop the RREPLACES for pkgconfig-dev
33aaa20 eglibc: force make to use /bin/bash
c2543b7 documentation: poky-ref-manual - Formatting fixes for variable names.
3c260e5 documentation: poky-ref-manual - new glossary entry for "T".
c201ab4 documentation: dev-manual - fixed typo.
dc8c3c7 documentation: dev-manual - edits to patching kernel section plus others
3108942 documentation: dev-manual, mega-manual - removed figure
68431a8 documentation: mega-manual - copied in new kernel flow diagram.
0bd7301 documentation: dev-manual, bsp-guide, kernel-manual - kernel workflow
8461d4a documentation: dev-manual - Removed figures no longer needed.
e3f3449 documentation: poky-ref-manual - variables defined.
b31fa1b documenation: dev-manual - re-ordered chapters.
8e33774 documentation: dev-manual - removed Appendix A.
e0f0335 documentation: dev-manual, bsp-guide - Removing/Moving Appendix A
274095d documentation: dev-manual - Updates to configuring Kernel section
d38325c perl: add archlib_exp variable used to generate ARCHLIB_EXP in config.h
c5fa8e2 sstate-cache-management: hide error message when one of possible layer location doesn't exist
cf24179 bitbake: hob-toolchain: task-core-standalone-sdk-target renamed to packagegroup-core-standalone-sdk-target
5f53136 bzip license: bzip2 not bzip.
52e67c5 gcc-cross-canadian: Fix gettext dependency
2c3e828 bitbake: hob/imageconfigurationpage: a 'hob-image' appears listed in the base image combo box
8d019a7 bitbake: hob/hobeventhandler: Describe the runCommand failure exception
a08139b linux-yocto-bsps/3.4: perf: parallel build and tools fixes
df9800c linux-yocto/3.4: perf: parallel build and tools fixes
04232f5 poky-tiny: Update the default kernel to linux-yocto-tiny_3.4
292f79a linux-yocto-bsps: update hardware reference BSPs to v3.4.11
792ae8d sstate: Also add datadir/sgl to sstate whitelist to avoid openjade warning
18be56b qemu: When applying qemu-mips workaround, check the file exists first
ae681c2 linux-yocto-tiny: Add tiny recipe for the 3.4 linux-yocto kernel
5bb773c nfs-export-root: add explict no_subtree-check to suppress warning
85ea375 linux-yocto/3.4: tiny: Add qemu KMACHINE to common-pc-tiny.scc
d518061 linux-yocto/3.4: fix kconfig warnings and unnecessary options
eb8ac50 documentation: dev-manual - mentioned SRC_URI in the kernel example
1efdf7e documentation: dev-manual - fixed KSRC variable in example
f32ee61 documentation: dev-manual - added OE_INIT_FILE and went to 3.4
6d5e836 documentation: dev-manual - Created generic figures
416433d documentation: dev-manual - Edits to setup part of example
5627ac2 documentation: dev-manual - fixed some links to the source directory term.
4364f11 documentation: Makefile, dev-manual - Updated kernel example repo figure
502b016 documentation: dev-manual - Added a note to point to yocto-kernel
98a41af documentation: poky-ref-manual, yocto-project-qs - Packages fixed
1bb1d2f oe-buildenv-internal: Add BB_NO_NETWORK to BB_ENV_EXTRAWHITE
5e1f39e pulseaudio: ensure X11 and consolekit are disabled
d3b08b4 package_rpm.bbclass: Fix an issue where complementary installs fail
415be86 sstate: Add extra entries to the sstate duplicate files whitelist
ab8d981 sstate: Normalise paths before comparing with the whitelist
7f4a8dd libdrm: Explicitly disable the cairo dependency
7b98031 poky.conf: fix Poky release info to include release number
679d76e toolchain-scripts.bbclass: Export M4
7d68b95 cross-canadian.bbclass: add native chrpath dependency
ee76b80 runqemu: allow multiple unfs instances to run simultaneously
746a867 runqemu-export-rootfs: improve rpcbind error detection
c435e4f runqemu-export-rootfs: use consistent whitespace
f60d41b common-licenses: Adding bzip
1f0a3c5 documentation: dev-manual - Removed Appendix A.
20a2dda documentation: bsp-guide, dev-manual, kernel-manual - Removed links
48d3b05 documentation: dev-manual - Updated BSP flow overview.
94cb42e documentation: poky-ref-manual, yocto-project-qs - Updates to packages
5757a25 documentation: bsp-guide - scrub edits for the BSP Tools section
d75b9fd documentation: dev-manual, poky-ref-manual - updated bblayers.conf
3aadcac documentation: dev-manual - Updated Enabling Your Layer section
f0db0f6 documentation: dev-manual - updated LCONF_VERSION in the example.
8db439a documentation: dev-manual - Updated bblayers.conf example
320e32e documentation: poky-ref-manual - Updated BBLAYERS variable.
81ce4a9 documentation: bsp-guide - Changed Source Directory capitalization.
1eb01b6 documentation: yocto-project-qs, yocto-project-ref - package re-org
528b0fe distro_alias: Update for 1.3 BOM Creation
8202e49 bitbake: hob/hobeventhandler: Throw an exception if runCommand fails
f540449 build-appliance-image: Fix spacing in DESCRIPTION
5d27c49 shutdown-desktop: ensure the postinst script succeeds
cf1f3f5 sato-icon-theme: use gtk-icon-cache helper class
09aaad1 distrodata: Update distrocheck functions
73182ed bitbake: hob/imagedetailspage: disable the deploy tool for qemu machines
9c7189d bitbake: hob/settings: alignment and spacing fixes on "Shared state" tab
93fdfaf bitbake: hob/image_details/run_image: Kernel must be set
0e6cc44 bitbake: fetch2: raise an exception if user specifies protocol=git with http://
27c30e4 rpmresolve: fix reporting of multiple matches error
3b664d0 buildhistory_analysis: update to use explode_dep_versions2()
ef5dcad qemu: Fixed running QEMU with virtio error reporting
595b119 wpa-supplicant: don't break the DBus service file
2f9328f bitbake: providers.py: Fix PREFERRED_VERSION containing epochs
423bb6b xf86-video-intel: drop libxvmc dependency
3f0591a distro-tracking: remove mesa-xlib
0d43dc7 qemu: add wrapper for qemu-mips binary
7da9f10 e2fsprogs: Don't install findfs
094c4a0 bzip2 and busybox: Incorrect LICENSE
6d1aa1d linux-yocto-custom: Clarify defconfig usage
71030c6 package.bbclass: Fix regression in -dbg packages introduced by explode_dep_versions change
e6663ff qt4: Avoid circular dependencies with multilib
8609051 bitbake.conf: Add CCACHE_DISABLE to BS_HASHBASE_WHITELIST
029a744 poky.conf: Remove git proxy configuration check url
7067717 documentation: poky-ref-manual - Updates to faq entry
5a18ea1 documentation: poky-ref-manual - Wording change for faq entry.
dd7db5c documentation: poky-ref-manual, dev-manual - added link to oe-core
56e07f6 documentation: poky-ref-manual - Updated faq entry
734d58c documentation: dev-manual - Wording changes for bumping PR
371a19f documentation: poky-ref-manual, bsp-guide - netbase version updated.
85e5dff documentation: poky-ref-manual - faq entry removed.
4afdff4 documentation: poky-ref-manual - Sentence corrections.
6c5691a documentation: poky-ref-manual - glossary entry for SDKIMAGE_FEATURES
99a1bf0 documentation: poky-ref-manual - Added staticdev-pkgs to list.
d46ab5a documentation: poky-ref-manual - GNU terminology fixed.
6c15b34 documentation: dev-manual - Added final SRCREV statements.
fd67c63 documentation: dev-manual - Changes from Crown Bay to fri2
876a87b documentation: dev-manual - branch fix and reference fix.
13d1471 documentation: dev-manual - Updated Git repo example
e6ed211 documentation: dev-manual - Fixed capitalization for term.
5fd5ef7 documentation: dev-manual - Changed wording to recipe
1628d3c documentation: dev-manual - Update to package/recipe wording
a32c0b2 documentation: dev-manual - updated some obsolete links.
5e1460d documentation: dev-manual - updated branch to use DISTRO_NAME
873ac6a documentation: dev-manual - minor edits.
2685ff4 documentation: dev-manual - Updated the Application Dev figure.
201bf86 documentation: dev-manual - Updates to kernel workflow summary
3388abd documentation: dev-manual - trademark added and reference updated.
9c7f3c3 documentation: dev-manual - Added reference to submit change section.
175e4bd documentation: dev-manual - Changes to "Source Directory" use.
fc50139 documentation: dev-manual - updated kernel flow figure.
965f760 documentation: dev-manual - corrected punctuation.
25141d5 documentation: dev-manual - clarified what files we are using.
dff62da documentation: dev-manual - Updated list of kernels
1b02ad9 documentation: dev-manual - updated list of BSPs in meta-intel.
eb9682f documentation: dev-manual - minor edits.
1040961 documentation: dev-manual - Updated overview for application flow
93e7454 documentation: dev-manual - Created list of option.
70c6572 documentation: dev-manual - grammar fix and SDK caps on.
418d7d6 documentation: dev-manual - caps for SDK when used in general.
f85c5a5 documentation: dev-manual - grammar correction.
050263f documentation: dev-manual - added cross-reference to PN.
cc5f361 documentation: dev-manual - minor wording change.
08996b3 documentation: dev-manual - minor edits and links added to glossary.
c63ff82 busybox: Add missing INITSCRIPT_NAME_${PN}-hwclock
999f7c2 bitbake: hob/hobpages: Generate the title label every time
42b3fc6 qt4: add 4.8.3 version with negative D_P
89386fd qt4: PR bumps
aea363a qt4: replace all local patches with git patches with headers
425df23 qt4: drop patches not used in any recipe
b0862a5 qt4: move patches from files to qt4-4.8.1
ee14710 qt-mobility: move qt-mobility patches to separate dir
d4ad1b7 qt4.inc: move more options to separate variables
a0a2922 qt4: rename qt-4.8.1 to qt4-4.8.1 to match other .inc and .bb
248e9f4 qt4: use releases.qt-project.org instead of get.qt.nokia.com
8ceea52 qt4-tools-nativesdk.inc: rename to nativesdk-qt4-tools.inc
9c3e605 libdrm: Remove Cairo dependency
5112da2 binutils.inc: add vardep on multiarch DISTRO_FEATURE
6e8d68d libx11.inc: fix build issues for older CentOS distros
be8dd82 Revert "initrd: Spawn an emergency shell when something goes wrong"
51ad952 nativesdk.bbclass: Ensure we have chrpath >=0.14
e2519ae chrpath: We should provide chrpath-replacement-native and install into a native specific directory
bf3d0ca gzip: The native version should provide gzip-replacement-native
40a3cf0 bitbake.conf: Add chrpath-native to ASSUME_PROVIDED
32cc952 scripts/oe-buildenv-internal: Ensure we detect the SDK/ADT and error out
34bd4e1 opkg: Convert select-higher-version option to prefer-arch-to-version
cbddb89 poky-sanity.bbclass: bblayers.conf should be updated automatically
7c2b1d5 bitbake: hob: Improved behavior for error reporting window
f18208a libart-lgpl: add art_config.h for mipsel
0ca8b62 opkg: Drop nogpg version since the main version now has nogpg too
57977d7 opkg-native: remove spurious dependency on curl-native
faee028 libpcap: add dependency on libnl
7c02bb4 galago: remove
2984c87 sanity.bbclass: Fix invalid test for network error
6494c05 bitbake: Update version to 1.16.0
876ef49 bitbake: hob: Further improvements to hob dialogs
a2783d2 bitbake: hob: Fix 'User selected' tag functionality
2df5a30 bitbake: hob/settings: Change the 'Delete' button behaviour in the shared state settings tab
58a99eb bitbake: hob/image_details: Remove kernel info from details
d3529e2 bitbake: tests/utils: Add test for explode_dep_versions2
c4d857d bitbake: utils: Add explode_dep_versions2 to replace explode_dep_versions
9a28351 bitbake: utils.py: Allow explode_dep_versions comparisons to have arbitrary whitespace
e7ba10c bitbake: utils.py: Check for duplicate dependency entries
5fdbda6 classes: Update to use corrected bb.utils.explode_dep_versions2 API
0bfb209 insane.bbclass: Remove copy and paste confusion when using OVERRIDES
35e6121 sanity.conf: Require bitbake 1.16.0 (stable series) prior to release (and for explode_dep_versions changes)
ae4552a gdk-pixbuf: Ensure gdk-pixbuf-native dependencies are correct with linuxstdbase
31dec3c opkg: Don't call sync() when installing into an offline root
97160f8 opkg: fix version constraints in conflicts, depends, replaces
31fcfef package_deb/ipk: Remap < and > to << and >>
56c677a multilib: Move redefinition of STAGING_DIR_KERNEL
cf7cff7 Cleanup: fix PN == BPN cases
eab4995 rpm: Implement workaround for DB_BUFFER_SMALL error
e602247 rpm: Add rpm patch to fix git_strerror issues
a2e7ada rpm: Fix file contention issue
fc3b665 rpm-native: Fix 'uuid_rc_t' undeclared error when compiling
6b76d9e libxcb: Update DEPENDS to avoid duplicate entries
b616c94 gst-ffmpeg: add LICENSE_FLAGS
95c0e78 poky.conf: supported distro warning update
7cf3214 poky.conf: Clarify DISTRO_NAME to be less confusing
42ac02e yocto-bsp: remove 'test' options from user-config.cfg
7855192 yocto-bsp: use FILESEXTRAPATHS for xserver-xf86-config bbappends
02a1ed4 documentation: dev-manual - minor edits.
24da1b8 documentation: dev-manual - Fixed a term for consistency.
a47106a documentation: dev-manual - more wording changes.
4b17b2d documentation: dev-manual - better wording for the .bb file
6acea58 documentation: deb-manual - updated list of layers in the repo
56ac2d9 documentation: dev-manual - fixed grammar.
ebd71dd documentation: dev-manual - Better description of location of scripts
4523324 documentation: dev-manual - wording change to remove ambiguity.
8cd203a documentation: dev-manual - formatting change.
5992839 documentation: dev-manual - Buzilla components updated to six.
d399b58 documentation: dev-manual - better wording.
12ba89a documentation: dev-manual - Added link to pull scripts.
332e696 documenation: dev-manual - added link to section on patching.
0792551 documentation: dev-manual - better terminology.
6bf96aa documenation: dev-manual - formatting fix.
8606f28 documenation: dev-manual - clarifies local branch.
78aedfa documentation: dev-manual - grammar fix.
a1fc37e documenation: dev-manual - updated the key tags example list.
5bd37e5 documentation: dev-manual - Better wording for repo setup
e25d32b documentation: dev-manual - updated string of example branches.
a206035 documenation: dev-manual - Added "the" in front of YP use.
2977ae4 documentation: dev-manual - grammar fix.
52780dd documentation: dev-manual - grammar fix.
ee19880 documentation: dev-manual - First re-write of "Package" term.
0101e9e documentation: dev-manual - Added QEMU for image target.
33547c2 documentation: dev-manual - grammar fix.
655264a documentation: dev-manual - Fixed buildbot target heading.
0824517 documentation: dev-manual - updated meta-intel repo example.
b7eb759 documentation: dev-manual - formatting change.
a8ceece documentation: dev-manual - Update poky-extras example
f38b88a documentation: dev-manual - changed 3.2 to 3.4 for kernel support
25fb8ec documentation: dev-manual - corrected heading for yocto linux kernel.
dce39b7 documentation: dev-manual - Added reference to supported distros.
5473c28 documentation: dev-manual - Defines QEMU acronym.
2b8d3c2 documentation: dev-manual - Fixed broken release notes link.
76dd4dd documentation: dev-manual - minor edits to manual limitations
7c39c87 documentation: adt-manual, yocto-project-qs - Added tarball installer info
b99414e documentation: poky.ent - updated distro to danny
691d462 documentation: adt-manual - updates to adt_installer location choice
43f295d documentation: adt-manual - Added dev package information
db70697 documentation: dev-manual - changed to directory for BSP example.
ed52eec documentation: poky-ref-manual - Edits to PRINC glossary entry
8943249 documentation: Final edits to INC_PR glossary entry
35800af documentation: fixes KERNEL_FEATURES example
af8a6a2 documentation: INC_PR glossary definition changes
8711ca8 documentation: PRINC variable glossary entry edits
71107aa bitbake: Fix bad merge of #2162
183ffd2 bitbake: hob: Error reports are done in a clearer way
1a85fc8 bitbake: hob/builddetailspage: fix failure_primary_action_button_clicked_cb
e2ac27c bitbake: hob/builddetailspage: remove "back" button
409859e yocto-bsp: fix dmaengine feature inclusion
facb5f9 yocto-bsp: make vfat feature inclusion conditional on kernel version
1ed2073 xserver-xorg: Remove RCONFLICTS against xserver-xorg
15216fc siteconfig: Clear cache before rebuilding
3d3893d perl: Fix substitution madness
c4788b7 flac_1.2.1.bb: use TUNE_FEATURES to enable/disable altivec
856d579 tune-ppce6500.inc: add e6500 tune files
81de52f arch-powerpc.inc: add altivec as a valid tune feature
7bdcc26 eglibc_2.16.bb: refresh fsl-ppc-no-fsqrt.patch for Freescale targets
3129c32 eglibc_2.16.bb: refresh ppc_slow_ieee754_sqrt.patch for Freescale targets
25804ed eglibc_2.16.bb: refresh ppc-sqrt_finite.patch for Freescale targets
001297e eglibc_2.16.bb: replace patch with updated version that supports e6500
574d728 boost: Support enums in hash
7c6d679 flex,bison: Add nativesdk variants
f88ee2e ltp: add dependency libcap
4964945 bitbake: knotty: Allow displaying of status when no tasks are active
b85c30b bitbake: parse/ConfHandler: Add negative lookahead to spot some quoting problems
649048e bitbake: hob: set modal flag on progress dialog
1ad5343 bitbake: hob/settings: implement a new tab in settings dialog to show SSTATE_MIRRORS
edb2890 sstate: Relax the duplicate file whitelist for now
a42dffc tcl: Fix dangerous do_install staging references
b0f4a5b xserver-xorg: Use rdepends to ensure xserver-xorg-module-exa match version
ad1aa81 license.conf/bbclass: Move globals to license.conf
0f9ca5d bitbake.conf: parse license config
4f82c4e license.bbclass: Variable standardization
7d95141 sanity: Added explicit network error status in SanityCheckFailed event
39a091f initramfs: Make mkdir not fail
ffb6928 initrd: Spawn an emergency shell when something goes wrong
6d3d4ba sanity.bbclass: bblayers.conf should be updated automatically
f786991 runqemu-internal: don't append an empty element to PATH
f31d114 oe-find-native-sysroot: show bitbake errors to user
71c0ff2 gst-plugins-good: make pulseaudio support dependent on DISTRO_FEATURES
629282e xserver-xorg: merge version-specific .inc into .bb
e1913fb eglibc: Fix for dynamic linker broken offset
ea5913f cogl: Add a missing depends on libxdamage
a8c78aa bitbake: Add missing file from previous commit
3c58f92 Revert "autotools.bbclass: using relative paths for acpaths"
f40bfd2 bitbake: hob/builder: When you stop a build, Hob should tell you stopping is happening
8160249 bitbake: lib/bb/data.py: improve output for expansion errors
31f0de4 bitbake: cooker: adjust layer dependency error messages
bc90ded bitbake: hob/recipeselectionpage: recipes should not be shown brought in by themselves
faaa065 bitbake: fetch2: add "-d" option to cpio
5c1345c bitbake: Multiple user interface fixes in settings
87a1f63 bitbake: hob/runningbuild: Add missing logging level argument
7414ba7 bitbake: Add sanity check progress screen
6fdff49 bitbake: hob/builddetailspage: change branch field
0e1a427 bitbake: hob: Buttons width and height are taken for host
4c22961 bitbake: hob/settings: implement a new tab in settings dialog to show SSTATE_MIRRORS
d658f48 sstate-cache-management: hide error message when one of possible layer location doesn't exist
dcd607e gnome-keyring: include unpackaged files with PAM enabled
d93a5e1 autotools.bbclass: using relative paths for acpaths
876ec81 perl: Fix nativesdk install path
30b0c3c dbus: disable all X11 when native
8bb52d8 eglibc: Remove bogus PACKAGES_DYNAMIC setting
6d7e9d4 xserver-xorg: use EXTENDPKGV instead of PV in RCONFLICTS_${PN}-module-exa
3d25fc9 cml1.bbclass: Convert tab indentation in python functions into four-space
0b09e50 busybox: Fix misplaced quote
5a18ffd util-linux: Remove static libraries from -dev packages
7d408d37 util-linux: Don't package chkdupexe
0c7ef52 package_rpm.bbclass: change the arch's "-" to "_" for platform
5985284 package_rpm.bbclass: no initial_solution in the second build
65d2b3a layer.conf: allow other layers to depend on this version
4f68dd9 iproute2: Use configured values for ${base_sbindir} and ${libdir}
6bc5925 SDK: trap any IO errors in the relocate script
04ced3d ossp-uuid: LICENSE type corrections.
8c32bcb at: atd remove useless --make-pidfile option.
074d49d sysvinit-inittab: fix hang issue of series consoles check
fd464e0 package_ipk: Remove spurious '-i' in grep command for log_check
0c34061 gcc-configure-cross: factor out --enable-threads argument into ${GCCTHREADS}
9eacffe sstate: Remove master manifest usage
42e8c80 packagedata/multilib: Fix search patch for multilib builds
8593c6c sstate: Fix SSTATE_DUPWHITELIST variable usage
acd52fd poky.conf: We need to clear WARN_QA to avoid the unsafe-references
a8edf79 bitbake: fetch2/git: Don't use deprecated API
e8738b8 bitbake: hob/packageselectionpage:cancel button should redirect to Image conf screen
a0bdb64 bitbake: hob/builddetailspage: change tooltips and remove a dialog from "Build stopped" message
0ab08f1 kexec-tools: admit mips as a COMPATIBLE_HOST
3c914fd beagleboard: update to 3.4
27874b7 linux-yocto/3.4: update beagleboard configs
3e7e0bd linux-yocto/3.4: update kver to v3.4.11
6ee9ebc Add and use 'localedir' variable
d02f029 gcc-common.inc: Consider multilib when renaming libgcc for debian'ness
4d7fb79 rpm: Add base-files as RDEPENDS
f32785a libcap: Fix erroneous path in last commit
8b3aa00 documentation/poky-ref-manual/ref-variables.xml: Update B variable
9bc3b44 documentation/dev-manual/dev-manual-common-tasks.xml: external SCM Update
249869e documentation/poky-ref-manual/ref-variables.xml: added BP variable glossary
f46d5b7 documentation/poky-ref-manual/ref-variables.xml: New P variable glossary
3232d19 documentation/poky-ref-manual/ref-variables.xml: new PRINC glossary term
09c0ccd documentation/poky-ref-manual/ref-variables.xml: PF added
69eb239 documentation/poky-ref-manual/ref-variables.xml: Edits to PN suffix
19bd5f0 documentation/poky-ref-manual: PN scrub
35abb93 documentation/poky-ref-manual/ref-variables.xml: re-write SRC_URI
b06035c documentation/poky-ref-manual/ref-variables.xml: Formatting change
451af65 documentation/poky-ref-manual/ref-variables.xml: Added new option.
11bc3ac documentation/poky-ref-manual/ref-variables.xml: SRC_URI glossary updated
a357e98 documentation/README: updated to include website information.
94ba719 documentation/adt-manual/adt-prepare.xml: replaced oe-init-build-env
7bff7a0 documentation/yocto-project-qs/yocto-project-qs.xml: Minor corrections
21ce4e4 documentation: Build example in QS and poky.ent variable added
88429f0 bitbake: bitbake: Unbuffer stdout for log files
98ac5e4 bitbake: event.py, knotty.py, ncurses.py, runningbuild.py: Add support for LogExecTTY event
eab93b0 bitbake: progress.py: Fix traceback when running goggle ui
eed98e4 bitbake: runqueue: Add --no-setscene to skip all setscene tasks
86cf6da terminal: Send LogExecTTY event to spawn screen
6e0713a terminal: pass data store all the way through to terminal class
e1c1ee1 bitbake: fetch2/git: Add missing mkdir
90b7683 bitbake: fetch2: improve error output for checksum failures
683d3b9 bitbake: fetch2: make fetch failure errors more readable
0bdde68 bitbake: lib/bb/runqueue.py: fix exceptions with -k and failed targets
1c2634c bitbake: hob: fix Gtk-WARNINGs due to invalid markup on Back button
c46c560 bitbake: hob: remove confirmation dialog on close
bf567b1 bitbake: hob: allow configuring default machine using HOB_MACHINE
9915572 bitbake: hob: don't show error dialog for errors during building
d875d62 bitbake: hob: The title of the packages screen depends on the screen you arrive from
64ea131 Fix Upstream-Status
d4384e1 binutils-2.22: Disable recent gold backports from 2.22 branch
0fb184d linux-yocto/meta-yocto/3.4: update machine SRCREVs
e911731 routerstation: Disable virtual terminal by default
af30de3 initscripts/sysfs.sh: mount debugfs if present
e36751c rootfs_ipk: Avoid leaving run-postinsts around if online package management is disabled
e46be72 runqemu: work with tap device names that end with a colon
2f0a82b qemu-native: fix build on hosts without libX11 installed
5378763 libcap: respect ${base_sbindir}
4d741c1 sqlite3: enable USE_PREAD
9ee8e2f classes/multilib: prevent multilib extension of nativesdk recipes
d27d9e8 classes/multilib: ensure MLPREFIX is set for image recipes
b5b0fc2 pulseaudio: Ensure openssl is disabled
82a99a4 autotools: Remove special handling for autoconf* and automake*
6f32c9c dbus: Remove hardcoded reference to /usr in System V startup script
ddd5508 arch-armv7a.inc: Don't disable vectorization
ae18a59 linux-yocto/3.4: Update fri2 and sys940x to emgd-1.14
8e3c10f lsbtest: update list file
d3e03ab util-linux: Ensure that ${sbindir} is respected
22a4046 bash: Make it possible to run bash 3.2.48 instead of 4.2.
b294e90 adt-installer: add sudo when relocating symlinks
df74f8d gcc: Use 4.7.2 release tarball
3c101af bitbake.conf/gcc-common.inc: Fix STAMPCLEAN expression
30b7781 insane.bbclass: Improve ability to detect enabled tests
65d1eb7 insane.bbclass: add library dir sanity check
2c9c911 linux-yocto/3.4: use profiling and latencytop features in yocto bsps
494fe41 SDK: allow toolchain installation from another directory
04877f7 SDK: relocate symlinks too
b6867e8 SDK: remove references to Poky distro from tarball installer
bf94f4d adt-installer: ensure directory exists before copying/removing
bd73a4b SDK: fix installation into symlinked directories
b9bd372 adt-installer: fix package installation issue
621fec0 intltool: include intltool.m4 and add missing rdepends
4946185 opkg svn: respect to the arch priority
0c6aec8 gdb: Upgrade 7.4 -> 7.5
32a0d1b opkg-nogpg: drop SRCREV
15b913d opkg: add patch to fix SIGSEGV when printing status file
305993d opkg: replace local patches with git patches submitted upstream
3e774a6 opkg 0.1.8: remove it since it doesn't work
51048ac qemux86-64: Support for KVM, paravirt and virtio added
ab2b2a1 qemux86: Support for KVM, paravirt and virtio added
32fdbd8 runqemu: show bitbake errors to user
be174d7 librsvg: make the libcroco dependency a PACKAGECONFIG option
faa2a29 mkefidisk.sh: Add script to do an EFI install on the host
5f3ae06 rpm 5.4.9: DEPENDS on bison-native
df5f9a3 gtk+: enable gtk+-native
42d91a7 Replace "echo -e" with "printf" to have the same behavior in dash or bash
82a08d4 byacc: update config.{sub, guess} before running configure
3356b81 xcursor-transparent-theme: switch SRC_URI as matchbox-project is dead
936d18a bitbake: hob: Don't set busy cursor on the root window, just our window
c0c04a5 bitbake: hob: add a top bar when building process is stopped
f77488e bitbake: cooker: Clarify package/recipe wording
1e8b535 bitbake: hob/packageselectionpage: "Cancel" button returns to "Image configuration" screen
3d62295 bitbake.conf/gcc: Add clean masks for stamp files
14a04ab bitbake: hob: report event handler failures
8d46be8 bitbake: hob/settings: Remove stray "distro" combobox from simple settings
d485d0b bitbake: build/siggen: Add support for stamp 'clean' masks
a4fd77d bitbake: fetch2/cvs: Fix parameter spacing
01606f2 bitbake: fetch2/cvs: Clean up various data store references
553a5b1 bitbake: fetch2/cvs: Fix localdata variable reference
05c1d32 bitbake: hob: Fix settings dialog issues
8c82b12 bitbake: hob: rename 'View log' to 'Open log'
749f4f6 bitbake: compat, event: use OrderedDict from py2.7 for the event handlers
f573925 poky.conf: Silence unsafe reference warnings
8ebed88 image_types: fix squashfs-lzma image creation
1c0f73b rootfs_rpm: Add Multilib prefix to installed_packages list
7cab823 eglibc: Do not use fsqrt in libm when building for fsl ppc with fpu
c98b7e8 eglibc: Fix fcntl.h for powerpc
7999c9b nfs-utils: add x32 patch to fix nfsctl issue
d72ed27 xserver-xorg: Modify RREPLACES for RCONFLICTS
807c93f util-linux: Fix bloken swapoff symlink
a6d808f grub: disable lzma, device-mapper, zfs and nvpair
48c01ee libtelepathy: PR bump to rebuild after libffi5 -> libffi6
5aa1f3a recipes: few more PR bumps to rebuild after libffi5 -> libffi6
2c5079b recipes: bump PR to rebuild after libffi5 -> libffi6
913944d upstream_tracking: update lsb and ltp
ea17310 local.conf.sample: change valgrind support architecture comment
ada2c27 patch.bbclass: increase security
c4a923b documentation: Toolchain corrections from tarball to .sh file
4c90692 documentation/dev-manual/dev-manual-model.xml: updates to project creation
b1f6ce1 documentation/adt-manual/adt-prepare.xml: Notes about installing sysroot
ccacc9c documentation/adt-manual/adt-prepare.xml: updated ADT Installer example
ef5017d documentation/adt-manual/adt-prepare.xml: Update adt_install example
7adb367 documentation/dev-manual/dev-manual-model.xml: Updates to plug-in install
fa2da88 documentation/dev-manual/dev-manual-bsp-appendix.xml: Fix repo example
2e16a75 documentation/poky-ref-manual/ref-variables.xml: Wording change PACKAGE_BEFORE_PN
1626fd5 documentation/poky-ref-manual/ref-bitbake.xml: Fix BB_ENV_EXTRAWHITE example
7a6e991 documentation/yocto-project-qs/yocto-project-qs.xml: Added glib-gettextize
cc8e7cc documentation/poky-ref-manual/ref-bitbake.xml: remove refs to Dates and Contacts
de8a9ba documentation/yocto-project-qs/yocto-project-qs.xml: Adjust GUI component feature listing
c5d94b7 documentation/poky-ref-manual/ref-images.xml: Update list of images
971a943 documentation/poky-ref-manual/ref-classes.xml: update undocumented classes
fe2ad76 documentation/poky-ref-manual/ref-classes.xml: Add packagegroup.bbclass
532aff1 documentation/poky-ref-manual/ref-variables.xml: variable edits
97fc511 documentation/poky-ref-manual/ref-variables.xml: PACKAGE_BEFORE_PN grammar edits
2f7553e documentation/poky-ref-manual: Section name change
43bbfc5 documentation/documentation/poky-ref-manual/ref-variables.xml: Update PACKAGES default
6ceecd0 documentation/poky-ref-manual/ref-variables.xml: replace reference to old files
63d3dac documentation/poky-ref-manual/ref-features.xml: edits to IMAGE_FEATURES list
b39457c documentation/dev-manual/dev-manual-common-tasks.xml: package group changes
84b3daa documentation/poky-ref-manual: fix for rename of task to packagegroup
a3de958 documentation: remove references to task bbappend
64b9137 documentation: Fixed links to BitBake User Manual
3fa4a6a documentation/dev-manual/dev-manual-common-tasks.xml: note on readme
b3ba9eb bitbake: Implement 'settings' dialog as designed
149c121 bitbake: cooker: Fix priority for virtual recipes
293764e bitbake: hob/builddetailspage: Add tooltips to the build failed notification
5b53671 bitbake: lib/bb/event: improve handling of event queue on exit
537dd88 bitbake: hob: format error messages properly
8314868 bitbake: hob/imagedetailspage: change "FileCreated" label to "Files created"
043ab54 bitbake: Fixed hob proxy tab tooltip text per review suggestions [YOCTO #2499]
78b1414 bitbake: hob: sort base image drop-down list
34cacbf bitbake: lib/bb/command.py: ensure setVariable only sets values as strings
beb6815 bitbake: hob: don't reorder layers list
ffc3b5d linux-yocto/3.4: make uprobes select perf events
db82b42 bitbake.conf: Assign SRCPV so that it will be tracked correcting in the sstate checksum
25af7f6 opkg: Fix package dependency issue for preinsts
0d67446 taglib: Update to v1.8
97bb9c5 binutils-2.22: Backport PR fixes from 2.22 branch
268177e linux-yocto: virtio and KVM guest configuration
3a6cebb kernel-yocto: fix kernel configuration audit for custom yocto kernels
4bb2ce4 pseudo_1.4.1.bb: update to pseudo 1.4.1, fixing 32-bit host problems
a2eab6b scripts/combo-layer: ensure we validate branch/revision on init
7ddf64d scripts/combo-layer: use last_revision if specified in init
87ec752 libffi upgrade to 3.0.11
447b53b gst-fluendo-mpegdemux: add LICENSE_FLAGS
f73e829 libx11: update patch to a backport from upstream git
1cc4bb4 librsvg: remove spurious popt dependency
1f6566c librsvg: --disable-gnome-vfs doesn't exist anymore, remove
56d8665 git: define NO_PYTHON=1 to stop git requiring python as a dependancy
30db398 image_types.bbclass: Round up ROOTFS_SIZE after base_size check
e556188 kernelshark: add missing ${D}
c9f9342 oprofileui: Add Icons to oprofileui-viewer package
5388847 valgrind_3.7.0.bb: fix missing leading space on _append
2a0d7ad patch.bbclass: Use one TMPDIR per patching process
d7ef15a runqemu: Explicitly specify MACHINE when calling bitbake
0496e28 uclibc: Revert systemd regressing patch from upsteam uclibc and uprev SRCREV
8f1f81b connman: remove trailing whitespace
7401ed0 Update to upstream_tracking.inc
fe0cc42 scripts: change default ARM BSP to use xserver-xorg, not -lite
c46ca06 distro-tracking; remove references to xserver-xorg-lite
af01997 distro-tracking: remove libx11-trim
b262fcd rt: Add hwlatdetect to rt images
b3155c8 rt-tests: Add hwlatdetect package
244dd76 rt-tests: Update to 0.84, use the kernel.org git repository
c2383a3 quota 4.00: add DEPENDS gettext-native
17b3c88 gst-plugins-good: fix compile error with recent linux-libc-headers
b7a81c5 valgrind: fix debug info reading error when do memcheck on ppc targets
fdf8724 libx11-trim: remove, it's the same as libx11 now
680ffe3 mesa-dri: remove DEFAULT_PREFERENCE, this is the preferred now
a6a18d4 mesa-xlib: remove, it serves no useful purpose
7ca0d77 libx11: revise keysymdef patch based on submission upstream
bbe27db libx11-diet: remove un-needed chunk from stubs patch
ad02e38 libx11: makekeys can be cross-compiled now, so don't hack around
c258559 libx11: drop makekeys_crosscompile.patch, effectively merged upstream
003c457 default-providers: default to libx11, not -trim
cc5557e libx11-diet: remove statements that are redundant
5842947 libx11: make bigfont an optional (disabled by default) packageconfig option
8427913 libx11: refresh dependencies, and centralise into libx11.inc
d7a03d5 libx11: merge patches into a single directory
8e6a6ec libx11: remove redundant license data
13ca58f libx11: move keysymdefdir option to .inc
c0fff56 libx11: move xcms disabling to PACKAGECONFIG in libx11.inc
85816c8 xorg-lib: move options to disable documentation to xorg-lib-common
8071888 libx11-diet: you can't disable UDC, because it's always disabled
71ba823 libx11-diet: you can't disable XCB anymore, so don't try
aa1744d libx11: use INC_PR
0359330 linux-yocto/3.4: add x32 configuration fragment
e3aa2e8 sysstat: upgrade to 10.1.1
39a30b8 libexif: upgrade to 0.6.21
83ba6c3 glew: upgrade to 1.9.0
5f42b9c boost: upgrade to 1.51.0
a3c257a classes/license: place all found licenses on one line
2ebe4d4 classes/license: correct license info in lisense.manifest
043df83 classes/license: account LICENSE_${pkg} values in manifest
ed4836d classes/license: remove redundant nested if statements
5dce00f classes/license: check license manifest for double records
dd1ee2a classes/license: define LICENSE_MANIFEST variable
c460737 eglibc: Restore ${PN} to before ${PN}-dev in PACKAGES
bb330fd sysvinit-inittab_2.88dsf.bb: only run serial checks at boot if we have items to check
1d3391b linux-yocto*: append to KERNEL_FEATURES instead of assigning
84f54d6 libgnome-keyring: add missing DEPENDS on intltool-native
844422d libgpg-error: Use the source file for the licence checksum
8b9b1ab autotools.bbclass: Add functionality to force a clean of ${B} when reconfiguring (and ${S} != ${B})
c8e3e01 nativesdk-qemu: fix SDK relocation issue
de69c6c classes/sanity: remove obsolete code
fd572e8 classes/sanity: skip tune checks if machine is invalid
f20b8ff gettext: Make gettext 0.16.1 extend native and nativesdk.
925594a linux-yocto/3.4: v3.4.10 and uprobes/kprobes configuration updates
42f0f96 gcc-4.7: Backport libgcc fixes to appease the new build sequence
86ae512 gcc-4.7: Fix build for armv4/EABI and ppc/Os
ed9bb94 telepathy-idle: fix parallel build
13221b2 webkit-gtk: work around Make bug by re-running make
69c4ddf shadow-native: Ensure that ${sbindir} and ${base_sbindir} are respected
02cc31e shadow: Fix various invalid assumptions about directory layout
6ccd988 perl-native: PROVIDE libmodule-build-perl-native for consistency with non-native perl
7cd1454 qt4: Update qt4.inc to remove staticdev deps in -dbg packages
9c2bb68 base-files: provide a mechanism to skip creation of the hostname file
03109ba package_rpm.bbclass: Avoid unnecessary installs in complementary pass
a6359e9 image.bbclass: Enable the complementary install to be called w/ globbing params
5a71f25 sstate: Append to EXTRASSTATEMAPS and add comment
7250638 upstream_tracking: Fix format issues
0ccef3b Manual updates to upstream_tracking.inc
2cbf4e6 bitbake: hob/packageselectionpage: restore selected packages
1b1b836 bitbake: hob: rename task -> packagegroup in recipe selection
5f40b7a bitbake: hob: ensure error message text is properly escaped
4ec3d72 bitbake: hob: use correct semantics for dealing with pkgdata
a4e3656 classes/packageinfo: use better method to check if package exists
fb44773 bitbake: tinfoil: Add file inadvertently not committed
440fba4 packagegroup-core-x11-xserver: remove redundant PACKAGES statement
ba8abac eglibc-initial-2.16: add kconfig-frontends-native to depends
2181635 bitbake: cooker: fix handling of exceptions during exception handling
4d8ba9a bitbake: fetch2: fix malformed URL causing a useless traceback
e843d56 bitbake: hob/imageconfigurationpage: remove or_label reference
27f842e lib/oe/sstatesig.py: add signature data query function
950c85e poky-tiny: Enable x86-64 to build eglibc correctly
2ce0e3c yocto-bsp: remove packagegroup-core-tools-profile.bbappend
3e1d3d3 runqemu-internal: New qemu calls it qemu-system-i386 for x86
7c4878e qemu-git: Move to tip of git past 1.2 release
11432c6 qemu: Update from 0.15 to 1.2
f6cc077 Add package wget and perl modules.
098beba libi18n-collate-perl: add it
0ca6015 libfile-checktree-perl: add it
14bf0b7 libenv-perl: add it
bee598c libdumpvalue-perl: add it
d04b95b libpod-plainer-perl: add it
8ced78d perl: package modules Pod-Html and Tie-Hash-NamedCapture
c3e066a libclass-isa-perl: add it
23a6f63 u-boot: Use fw_env.config if available.
2428874 core-image: allow root login when debug-tweaks is enabled
9b92449 xserver-xorg: make DRI/GLX options respect opengl distro feature
887a731 xserver-xorg-lite: remove
3668a2d autoconf: use --warning=cross only if supported
5cf953b machines/x86: Drop redundant glibc configure knobs
f23d843 kconfig-frontends: Create symlinks for conf and mconf
3cfc70f eglibc: Enable kconfig for option management
607a3d5 eglibc-2.16: Add kconfig infrastructure
4bca664 arch-armv4.inc: On armv4 add --fix-v4bx to linker flags for kernel
6ce6e3e pixman: ignore NEON, IWMMXT, LOONGSON_MMI variables for class-native
d822c8f pixman: merge meta-oe append into oe-core
092895c package_rpm.bbclass: fix incremental rpm image generation
d401258 lsb: update version
7174920 ltp: update
3526308 qemuimagetest: modifying the scenario file as per new test cases
913e2e2 qemuimagetest: add basic function to check syslogd
fe4dcbb qemuimagetest: add basic function to check enough disk space
ea55ec9 qemuimagetest: basic function to check bash exists
208ff62 bin_package.bbclass: binary package recipe class
4a015e5 package_rpm.bbclass: fix the arch (replace "-" with "_")
d011150 distrodata: replace Tab with Space
cfa6817 classes/mirrors: remove bogus gnutls mirror
5343cdb bitbake: fetch2: replace double slashes in paths in encodeurl()
5728518 bitbake: hob: print message when DISPLAY is not set
95ae927 bitbake: Hob: change view of 'recipes' and 'packages' tables as ui design
a32f551 mpc8315e-rdb: switch to ppce300c3 tuning
e58eb8c bitbake: bitbake-diffsigs: allow specifying task & follow deps recursively
d5226c9 bitbake: lib/bb/siggen.py: make signature dump/compare functions return a list
19d0abe bitbake: lib/bb/siggen.py: insert a colon between class and recipe name
b7bd852 bitbake: lib/bb/siggen: replace tabs with spaces
56a66a1 bitbake: tinfoil: create simple interface for bitbake-based utilities
e8d8784 bitbake: crumbs/hig: Save toolchain in settings
e2b0eae bitbake: hob: The 'run image' and 'deploy image' dialogs text and alignment corrections
ed17f44 bitbake: hob/imagedetailspage: "Image ready" icon appers only after the image was generated
40d55d3 bitbake: hobwidget: Button theme is taken from host, fix
7d8b49c bitbake: fetch2: unpack rpm, ipk and deb binary package
399d7f2 bitbake: hob/recipe&packageselectionpage: Change "Back" button to "Cancel" button
34c4b3a bitbake: hob/imageconfigurationpage: Set secondary action for "Edit image" button
0edb99f bitbake: hob/packageselectionpage: Add tooltips to 'Included' and 'All packages' tab and 'Search' field
b2e2bad bitbake: hob/packageselectionpage: Correctly restore previously selected packages
c8db2f6 bitbake: hob2: remove class hcc
da98edd bitbake: hob2: remove the hard-coded images map
15abf25 image_types.bbclass: add variable for Hob
1bb35c9 rsync: Add md5sum and sha256sum for the rsync_2.6.9
72dc770 conf/tune: add tune-ppce300c3
dd3edc9 beagleboard: change to xserver-xorg, not -lite
2c9864b gst-plugins-good: disable (uninstalled) examples
0fa17a7 classes/core-image: improve comments listing IMAGE_FEATURES
6d82da2 pulseaudio: remove ConsoleKit dependency
3100a5a gssdp: build examples which require GTK+ only if we have X11
800ce0f gcc-cross-initial: Reinstate limits.h generation fix
c92145c matchbox-session: Should have high ALTERNATIE_PRIORITY than mini-x-session
0f55a58 adt-installer: Allow changing YOCTOADT_REPO
c4c1ef0 pulseaudio: fix pulseaudio-server RDEPENDS
a4ce0e4 xserver-xorg-common: add RREPLACES on xserver-xorg to -module-exa
7e14b78 gsettings.bbclass: fix whitespace
a5ee5fe python-pygtk: Upgrade to 2.24
1d48619 packagegroup-core-x11: split machine specific parts to separate recipe packagegroup-core-x11-server
6554dbf packagegroup-core-x11: add upgrade path from meta-oe task-x11*
71d3d1a build-appliance-image: fix for packagegroup-apps-console removal
38e7173 packagegroup-(base|core-basic): add RREPLACES/RCONFLICTS
5084e47 linux-yocto-rt: 3.4.9-rt17 remaining changes
2000698 meta-yocto: Split into distro and bsp components
9d6630d classes/qmake_base: support linux-gnuspe/linux-uclibcspe TARGET_OS
8d6ecfb sanity.bbclass: Move back to running at ConfigParsed time
99c85ba build-appliance-image: Update to latest poky master
f0f23f1 linux-yocto/meta-yocto: update SRCREVs to 3.4.9, unionfs, perf and cfg
29c1946 packagegroup-*: add RREPLACES/RCONFLICTS
748e482 packagegroup-core-standalone-gmae-sdk-target: allow dbg package
15111f4 scripts/cleanup-workdir: change autoconf-nativesdk to nativesdk-autoconf
fc1cbc1 linux-yocto-rt: update to 3.4.9-rt17
e731ff2 udev: Remove files moved to udev-extraconf
c24beff linux-yocto/3.2/3.4: arm: Fix linking errors with binutils 2.23
80048ce linux-yocto/3.4: v3.4.9, unionfs, perf and configuration changes
df2e432 kern-tools: fix non-inheriting branch names
d7805cf linux-yocto: check for bad SRCREV before branch checks
611f16a linux-yocto: fix unapplied patch error message
1e196e6 kern-tools: fix forced branching
7bbe707 upstream_tracking.inc: Updates for upstream/check date
94c259e udev-extraconf: change LICENSE to MIT
0cc01a6 udev-extraconf: Merge with udev-extra-rules from meta-oe
c5003a4 bitbake.conf: FETCHCMD_svn add --non-interactive --trust-server-cert
6b641bb busybox: Add sign-off-by and upstream-status
a281963 grub: added upstream-status
cc1179e pango: Add missing sign-off-by and upstream-status
bb86a22 yocto-docs/.gitignore: Final fix to ignore mega-manual.
d806656 documentation/yocto-project-qs/yocto-project-qs.xml: removed fakeroot
5cd31e3 documentation/poky-ref-manual/ref-variables.xml: TCMODE edits
fc212a0 documentation/yocto-project-qs/yocto-project-qs.xml: added and removed packages
7913095 documentation/yocto-project-qs/yocto-project-qs.xml: added python-curses
d9b2cee documentation/mega-manual: New mega-manual directory
e4bb6b7 documentation/tools/mega-manual.sed: Processes external links in mega-manual
0278e3b documentation/dev-manual/dev-manual-newbie.xml: Edits to email patch section
d192e6f documentation: Section change for using email to submit patch
2595a2b documentation/dev-manual/dev-manual-newbie.xml: Updates to submitting patches
6b35765 documentation: Section Heading change for pushing commits
0c69e7b documentation/dev-manual/dev-manual-kernel-appendix.xml: Fix PARALLEL_MAKE
a177aad documentation/README: Updates for mega-manual
e19dfd1 documentation/Makefile: Added mega-file, comments, and publish test
d4a65ef documentation: Title changes
55cd232 documentation/dev-manual/dev-manual-model.xml: Fixed mis-named guide
9df4aa6 documentation: Manual reference fixes for mega-manual processing
9235634 documentation/dev-manual: Title Fixes
26409ca documentation/bsp-guide/bsp-guide.xml: Fixed title
03fd402 documentation: Fixes to note for mega-manual processing
2c6f72d documentation/dev-manual/dev-manual.xml: fixed so mega-manual works
b84383a documentation: Fixed references to the YP Dev Manual
b3ac19b documentation: fixed Quick Start references
fcfb087 documentation/Makefile: Changes for new style sheets and mega-manual
e4cb643 documentation: Style sheet naming changes
a3a84b3 documentation/yocto-project-qs/yocto-project-qs.xml: File name changed
24b14e3 documentation: tag change adt and kernel manuals
5c44309 documentation/kernel-manual: Fixed minor problems
08b7044 documentation/dev-manual/dev-manual-start.xml: Updated NFS server/QEMU info
4972e8f documentation: Added install and config steps for Juno 4.2
9674b1a meta-yocto: fix for task rename
ad3743d ghostscript: disable libidn support
25e35d6 msmtp: disable libidn support
80c1bbf wget: disable iri/idn support
b640604 tclibc-uclibc, tclibc-eglibc: Prefer nativesdk-eglibc to provide libintl
0740f82 sstate-cache-management.sh: fix remove_duplicated when multiple archs were built
40b1402 sstate-cache-management.sh: add option to enable debug output
40d2cbe sstate-cache-management.sh: don't hardcode available machines only to qemu*
6b3f042 sstate-cache-management.sh: look in meta* above oe-core dir when looking for available tunes
0b43a85 sstate-cache-management.sh: fix regexp in AVAILTUNES grep
c2a76d7 sstate-cache-management.sh: fix regexp in checksum grep
f357e0e xserver-xorg: remove HAL option, nothing uses HAL anymore
cbd1d86 qemu-config: turn into distcc-config and a package group
c8d7394 qemu-config: split out export of root via NFS to its own recipe
54b8e84 qemu-config: split out shutdown icon to its own recipe
c2e68c6 oprofileui-server: move initscript from qemu-config
1256507 qemu-config: split out anjuta-remote-run
80908c9 oprofileui: split server to separate recipe to avoid X11 dependency
f6ae5d8 qemu-config: relicense as MIT
4632f9b iproute2: upgrade to 3.5.1
1bb944a puzzles: upgrade to r9594
e1de7b4 freetype: upgrade to 2.4.10
0c2986f telepathy-glib: upgrade to 0.19.8
97e6fe5 man-pages: upgrade to 3.42
6a7eafb lsof: upgrade to 4.86
b6e3b73 libdrm: upgrade to 2.4.39
0dc523b gypsy: upgrade to 0.9
e7b20fa automake: upgrade to 1.12.3
4a0bec4 packagegroup-*: add RPROVIDES for backwards compatibility
5f0c2e3 core-image-basic: tidy up
2e9f540 packagegroup-core-lsb: rework
0892284 packagegroup-core-basic: tidy up
c946fc0 packagegroup-*: set reasonable SUMMARY/DESCRIPTION
de03909 ofono: add runtime dependency on dbus
dae1a12 connman: add runtime dependency on dbus
2a21c83 packagegroup-core-console: remove
86d4bb2 packagegroup-core-qt: rename -demos to -demoapps
e5f7edf packagegroup-core-clutter: remove empty -apps/-tests tasks
b9052ee packagegroup-*: drop LIC_FILES_CHKSUM
53284ed classes/packagegroup: disable superfluous tasks
9ca4f5e packagegroup-core-gtk-directfb: remove dropbear
13c5d12 packagegroup-base: remove openswan from packagegroup-base-ipsec
04c6a0f packagegroup-core-gtk-directfb: remove superfluous -base package
07db740 packagegroup-qt4e: tidy up and rename
8eba446 packagegroup-core-x11*: adjust X11 package groups
d56f6af core-image-core: rename to core-image-x11
ce1f150 packagegroup-core-x11: move out Sato applications
9bb6f42 packagegroup-*: change to inherit from packagegroup.bbclass
073a12c classes/packagegroup: add ability to disable complementary packages
af8c316 packagegroup-core-nfs: remove broken glibc-utils reference
14bf963 classes/packagegroup: Use package group nomenclature
ca8f7ec packagegroup-base: remove some useless items
272cb74 Rename task to packagegroup
f1df3f8 classes/core-image: remove erroneous nfs-server comment
153d413 classes/core-image: remove *_IMAGE_FEATURES variables
5f0e3d8 classes/core-image: remove SSHSERVER_IMAGE_FEATURES
a7c71ab uclibc-0.9.33: Update to latest on 0.9.33 branch
0155211 build-appliance: add zip-native, which is needed to build the final zip bundle
37c8597 distro-tracking: remove xserver-kdrive
ba46327 yocto-bsp: add new strip_base() function
7c5c1ad yocto-bsp: add a LICENSE_FLAGS_WHITELIST blurb for emgd to README
f6b2e90 yocto-bsp: update the help regarding the meta-intel layer
9c94bfc yocto-bsp: include meta-intel.inc if emgd selected
30eabff mpc8315e: switch to Xorg instead of kdrive
1fd59d3 routerstationpro: switch to Xorg instead of kdrive
cf7273d bsp: set default XSERVER for PowerPC and MIPS machines to Xorg
e14a30b local.conf.sample.extended: update the sample for archiver.bbclass
17b9777 crosstap: new script
0f9820f ofono: Fix build on uclibc
6b8b0be pulseaudio: Always enable NLS
5a758d6 eglibc: remove duplicate rquota files
175ba20 xserver-kdrive: remove.
8cb5c02 image.bbclass: Convert runtime_mapping_rename to event handler
c6fda19 connman: Don't start connmand when booting using nfsroot
60e503a kernelshark: remove duplicate trace-cmd plugins
831b204 elfutils: Fix build on uclibc
5b8e46d eglibc: Bring in the fix for glibc bug #14459, #14195
26fbe84 uclibc-git: Move to tip of master and sync mount.h
4759a71 package.bbclass: fix stripping for kernel modules
823a7f7 gettext: bump PR to avoid RPATH QA failure
02127c4 x11-common: don't prune .svn directories on install, we're in git now
aa212d2 x11-common: just support Xorg now that kdrive has been removed
dbc8cc4 task-core-x11: default to xserver-xorg instead of kdrive
50d5131 xserver-xorg: ship the exa module in a separate package
8e188a7 avahi: systemd postinst and postrm removed in favor of using systemd.bbclass
8dd8f56 tzdata: install /etc/localtime alongside /etc/timezone
5b1fbbe dpkg: upgrade to 1.16.8
1c64c6b sstate.bbclass: Remove hardcoded task mappings
c3bf244 perl: Fix various nativesdk build issues
ad23395 nativesdk: Switch to using nativesdk as a prefix, not a suffix
58a8a38 nativesdk: Convert to use classextend.py
9ba1e33 sstate: Ensure master.list exists if it doesn't already
c5ce287 bitbake: taskdata: Don't add dependencies on tasks that don't exist
d410ebb bitbake: bin/bitbake: Clarify wording in help output for -s
3ad2505 tzdata: this package isn't architecture specific
698f0df ltp: add dependency libaio
fd2a6c1 task-self-hosted: remove e2fsprogs-fsck from task list
43a7c66 sstate-cache-management.sh: fix it for downloaded file
59260f9 sstate.bbclass: Detect overwriting files in sstate controlled directories
cfb502c glib-2.0: don't disable all debugging functionality
1802da4 Update lttng-2.0 versions
f022384 sysstat: Explicitly disable sensors support.
bb0aab7 yocto-bsp: use KBRANCH_DEFAULT in 'newbranch' cases
6b96147 yocto-bsp: remove obsolete references
54a1665 gail: remove
eb77218 intltool: Add Upstream-Status and Signed-off-by to remove-xml-check.patch
92e40ec runqemu-export-rootfs and friends: don't put pseudo db in target fs
c0aa58f ethtool: package update 3.4.1 -> 3.5
36f054e perf: add bison and flex to DEPENDS
44b8c1b archiver.bbclass: fix the remove error
4396677 copyleft_compliance.bbclass: remove the duplicated code
436211f archiver.bbclass: remove the "upper()" function
3883f82 archiver.bbclass: fix the fakeroot and other issues
2ba95cc archiver.bbclass: fix the coding style
c96f6ee archiver.bbclass: indent fixes
a6588b8 ia32-base.inc: new include file
266d9ce staging.bbclass: Might as well drop the applications, fonts and pixmap directories from ${datadir}
8354db9 udev: Drop hid2hci, its provided by bluez4 now
93d6471 e2fsprogs: Drop fsck binary
45a6988 e2fsprogs: Fully remove/disable blkid
b74d54b bitbake: compile tar-replacement firstly
b4c5725 yocto-bsp: add missing xserver-xf86-config .bbappend for qemu
1139ab0 yocto-bsp: use base branches for qemu 'newbranch' case
ebf7942 yocto-bsp: remove YOCTO_KERNEL_EXTERNAL_BRANCH usage
4bb2e2f yocto-bsp: use emgd 1.14 for i386 template
d8b00e7 yocto-bsp: update standard branch mapping
4eb5ac8 yocto-bsp: add 3.4/remove 3.0 kernel from templates
738f77b yocto-bsp: generate default properties even if json specified
e352d26 yocto-bsp: use emgd 1.10 for i386 template
b8e6eb6 yocto-bsp: add i586 option for i386
10ffef3 yocto-bsp: add some standard policy
995a5ac yocto-bsp: remove 'branch' statements in .scc if reusing branch
e26589e yocto-bsp: use rstrip() for assignment lines
f32909a yocto-bsp: use standard branch mapping in bsp templates
859e0e7 yocto-bsp: add standard branch mapping
179109a yocto-bsp: use branches_base
7be2683 yocto-bsp: allow branch display filtering
0f34dd6 yocto-bsp: update default branch names
d35a34b yocto-bsp: strip '/base' from kernel branches in templates
3405a8b terminal.py: use unique ids for screen sessions
2ec6777 bitbake.conf: add variables to exclude from hash.
af7cd07 kernel-yocto: don't require meta branch for custom repos
01ce721 kernel-yocto: set master branch to a defined SRCREV
9a1705ef kernel.bbclass: fix INC directory for SLANG
a807818 grub-efi: fix Nothing PROVIDES 'grub-efi-x86_64-native'
1736b1d kmod-native_git.bb: fix builds for hosts with older libc
4d8ea02 base-passwd: upgrade to 3.5.26
5183f31 gdk-pixbuf: call gtk-update-icon-cache with -t in postinstall script
f699370 wget: upgrade to 1.14
6848280 npth: upgrade to 0.91
d04f754 kconfig-frontends: upgrade to 3.5
c33cfc6 dhcp : upgrade to 4.2.4-P1
a08e385 subversion: update to 1.7.6
c966945 runqemu: Move the KVM check after the MACHINE/KERNEL Checks
c13ee35 build-appliance-image: Update SRCREV for beta build
ef81059 task-core-lsb: Don't pull in eglibc-pic via RDEPENDS
6117379 libcap: fetch from Debian
86a6410 build-appliance-image: Add vmx* files and build zip file
d13d50a build-appliance-image: Update SRCREV to Denzil 1.2.1
d36ecc3 iputils: chmod in pkg_postinst are redundant
d28245d mc: upgrade to 4.8.4
dfc493e dbus-glib: upgrade to 0.100
2f958cb libnfsidmap: upgrade to 0.25
397650e foomatic-filters: upgrade to 4.0.17
ae751ab telepathy-idle: upgrade to 0.1.12
b9cf3bd telepathy-glib: update to 0.19.6
3ea34e0 distutils/steuptools: Fix files layout and unbreak builds
fc2cfbf mutter: Explictly disable libcanberra
16a7a61 gcc-4.7: Add fix for libtool rpath problems
deee2b2 libtool: update rpath normalization to use builtin
8592e82 ld: -rpath must search under sysroot
fed844e xev: Add missing dependencies on libxrandr and xproto
054d95e poky.conf: restore Ubuntu 12.04 LTS to tested distro list
4f84363 external-python-tarball: Blacklist recipe if ipk is not in the PACKAGE_CLASSES list
8a2664b libiconv: skip recipe if using eglibc
3fe5d09 busybox: Update to upstream 1.20.2
59f3fb9 cups: disable pdftops
48634df task-base: pull in the bluez asound module when appropriate
d48585c busybox: Upgrade to upstream 1.20.2
8e335f1 grub-efi-native: Update to version 2.00
1192ace grub: Update to upstream stable 2.00
eab2efc scripts/combo-layer: specify branch when getting current revision
528d5e1 grub-1.99: Add flex-native to DEPENDS
142a8d1 eglibc-2.15: Delete
93d71aa linux-yocto: Remove parens from COMPATIBLE_MACHINE regexp
fcdf262 runqemu: Honor KERNEL and ROOTFS settings from environment
3b05a9b mesa: clean up PACKAGECONFIG
1e59ae0 bitbake: ast: Store anonymous python function contents in the datstore
ce68232 bitbake: ast: Extract text variable in PythonMethodNode
9e8ba30 bitbake: ast: Rename PythonMethodNode define variable to modulename
c8cce4e bitbake: methodpool: Clean up the parsed module list handling to be slightly less insane
43cbd5a bitbake: methodpool: Remove unused check_insert_method function
ae71aa0 bitbake: cooker: Add explict handling of BBHandledException for parsing failures
4f3d486 bitbake: cooker: Ensure parsing failures stop the build
999ee04 bitbake: utils.py: Once we've printed errors messages, suppress the backtrace
64c0028 bitbake: utils.py: Try harder to extract good traceback information by querying the datastore
fddc169 bitbake: cooker: fix traceback when using -b with skipped recipe
8d33395 gmp-4.2.1: Set CC_FOR_BUILD to ensure the host system compiler is used, not the target one
19ff55a routerstationpro: move board off 3.0 and onto the 3.4 kernel
25e926e libtool: normalize link paths before considering for RPATH
c7cfe77 distutils.bblass: change order of args to install step
d15f126 README: Clarify where to send patches
a0a3a44 conf/bitbake.conf: allow cache reuse between bitbake, bitbake-layers and hob
84d8ef4 gcc: bump PR
21773a9 bitbake: event/ast: Use better_exec instead of simple_exec
1a7069e bitbake: ui: Improve error message if bitbake cannot import python curses module
1426e14 bitbake: bitbake-layers: use parsable title for show-appends
5d09fb0 bitbake: bitbake-layers: avoid full parse for show-layers subcommand
a46fac7 bitbake: bitbake/cooker: minor refactor of parseConfiguration()
980d658 bitbake: data_smart: skip all interal (underscored) flags in getVarFlags
49bc007 bitbake: data-smart: rename the 'content' internal variable to '_content'
164083d bitbake: Hob wizard-like reorganization
2a6818e bitbake: bitbake: hob: create console log directory before writing
bf64b6e classes/package: document do_packages_split arguments
603f6c6 atom-pc: Drop glibc --with-tls option, its now the only option for glibc
fe9a576 gcc-cross-intermediate, gcc-crosssdk-intermediate: Remove
ad5fe46 gcc-crosssdk-initial_4.7.bb: Add --with-native-system-header-dir to EXTRA_OECONF
99e9379 uclibc: Use gcc-cross-initial as staging compiler
9a33e7b uclibc.inc,uclibc-config.inc: Untabify python snippets
48df3fe eglibc: Fix eglibc-initial and let eglibc depend on it
b0faebd gcc-cross: Make gcc-cross-initial as the only intermediate gcc stage
91746ba eglibc-2.16: Update to top of 2.16 branch
709aac9 eglibc-2.16: Remove build dependency on libgcc_s and libgcc_eh
3435ce1 coreutils: fix to build with acl support
46b3ab1 package_rpm.bbclass: fix and enhance the incremental rpm generation
40d3579 insane.bbclass: Fix RPATH warning in the face of funny path strings
ec102f5 formfactor: Clean up errors on machines without framebuffers
4861995 meta/classes: Various python whitespace fixes
7c40daa qemu: Fix broken accidental path move
6163148 sstate-cache-management.sh: update for the SSTATE_MIRRORS
ba8ba42 classes/sanity: remove texi2html from required host utilities
2b6268b kernel.bbclass: Preserve generated headers only if they exist
07cc3dd scripts/runqueue-internal: Drop enable-gl option
2c43608 qemu-git: Drop GL passthrough support
0b0db81 qemu-0.15: Drop GL passthrough support
91ece5d libpam: Fix missing DESTDIR for a mkdir causing build failures
d7a6aaf randrproto: upgrade to 1.4.0
e2a9a88 avahi: fix packaging of avahi-autoipd
c49ecc9 libxrandr: upgrade to 1.4.0
973512c libpam: Update recipes from 1.1.5 -> 1.1.6
dbda8b5 unifdef-native: Correct LICENSE
d48235e core: Prefer mesa-dri as virtual/libopengles1/2 provider
2ea1268 linux-yocto/meta-yocto/3.4: BSP, uprobes, config and cleanups
2145f5b linux-yocto/3.0: update meta SRCREV
b96c388 linux-yocto-tiny: set default branch
926092b pseudo: Fix pseudo-native rebuild when triggered by dep change
641f582 runqemu: work with yocto-bsp created kernel filenames
d2737eb cross-localedef-native_2.16.bb: fix for CentOS 5.X
9e36b4f connman: upgrade to 1.4
488970d gst-fluendo-mpegdemux: upgrade to 0.10.71
9027ab0 gst-fluendo-mp3: upgrade to 0.10.19
570edd2 perf_3.4.bb: update to build against older kernels
05b343e mesa: enable EGL, with DRM and X11 platforms
7477153 mesa: respect x11 DISTRO_FEATURE
25db6dd mesa-demos: fix GLES2 build
3ea5c74 core: Prefer mesa-dri as virtual/libopengles1/2 provider
aef0371 mesa: enable GLES v1 and v2
eb768ce mesa: Add a mesa-dri-glsl-native_git recipe
c800fd8 ncurses: fix file names for update -alternatives
7209f75 kern-tools: fixes (branching,buildall) + cleanups (checkpoint,cleaner)
a9f1184 linux-yocto: explicitly export KMETA to scripts
d78662e linux-yocto/3.4: remove explicit KBRANCH designations
7a79f74 linux-yocto: make KBRANCH the exception and not the rule
9ede55a linux-yocto/3.4: BSP, uprobes, config and cleanups
101bdc6 linux-yocto: bump version to 3.4.7
0a0ffcf kernel.bbclass: Preserve generated headers
771f894 base.bbclass: fix PACKAGECONFIG handling code
61ed74a utility-tasks: Set T to alternate location during do_clean
96ece9a bitbake: build.py: Correct package to recipe in TaskBase events to use consistent terminology
a86bd42 bitbake: fetch2/git: Work around git confusion between foo.git and foo repositories
c7cadd1 libsamplerate: depends on libsdnfile
9235fc5 subversion: Inherit gettext as msgfmt is needed at compile time
be14147 busybox: Package hwclock.sh initscript separately
8fd4f55 task-core-boot: Add busybox-hwclock if MACHINE_FEATURES contains rtc
0c095f2 bitbake.conf: Add rtc to MACHINE_FEATURES_BACKFILL
c5dd7cf bitbake.conf: Add MACHINE_FEATURES_BACKFILL and append to MACHINE_FEATURES
0f1bbaf bitbake.conf: Use the new form of features_backfill function
6bfb0c2 utils.py: Modify and rename distro_features_backfill python function
d5fc43a pulseaudio: upgrade to 2.1
969953e iptables: upgrade to 1.4.15
802849d iproute2: upgrade to 3.5.0
52ea1f8 ofono: upgrade to 1.10
9964ea3 dbus: upgrade to 1.6.4
21dcd88 rootfs_deb: move the lock from WORKDIR to DEPLOY_DIR_DEB
0348e2c apt-native 0.7.14: remove an extra line from apt.conf
54b4c50 openssh: openssh's init fails to restart if sshd is not running
79512d5 pciutils: upgrade to 3.1.10
1356f8f Add MPL version 2.0 license in common-licenses dir as well as adding a non-SPDX license name in license.bbclass
fb187e7 subversion: two small fixes
4c70d7e libatomics-ops: update to the latest version 7.2
f31c96e prelink: Update to latest upstream prelink
3a51c0c distutils.bbclass: fix libdir for 64-bit python modules built with distutils
5bffd94 runqemu: support booting ramfs-based images
a102793 libowl-av: patches merged upstream, bump srcrev
75bb902 owl-video: patches pushed upstream, so bump srcrev
38adf05 clutter: DOLT isn't used anymore
0baa071 wpa-supplicant: fix paths in dbus/systemd *.service files
258277a glproto: upgrade to 1.4.16
d4d1de7 dri2proto: upgrade to 2.8
0c23d2a pixman: upgrade to 0.27.2
bfa522b package_rpm.bbclass: Fix attemptonly install failures
650227e chrpath.bbclass: Account for case when ORIGIN is in RPATH
b0b92d7 chrpath.bbclass: Ensure we only process tmpdir in paths which actually contain that path
e31d484 poky.conf: update distro ID string for Ubuntu 12.04.1 LTS
3c0451e bitbake: really remove knotty2
62f1ccb classes/chrpath: improve chrpath failure handling
bddd830 apr-util: fix the rules.mk with path to sysroot instead of the workdir of apr
9b6a3ff python: Add Upstream-Status entries for bsddb patches, no code changes
883d199 webkit-gtk: update to 1.8.2
3ba29d4 adt-installer: add support for relocatable SDK
21049ec package.bbclass: change RPATHs for cross-canadian binaries
1b60190 populate_sdk_base.bbclass: fix SDK relocation issues
35d9684 gtk+ remove 2.16.6
6e4bd68 gtk+: remove 2.12.7
e781fb6 bitbake: bin/bitbake: Remove knotty2 from the list of valid interfaces
e2f7351 base.bbclass: Work even when there's no PNBLACKLIST entries
af847d3 bitbake: bitbake: build.py: Add stampdir argument to cached_mtime_noerror
1fa112b bitbake: knotty: Fold knotty2 into knotty and make it the default
c49a252 bitbake: knotty2: Handle long lines of text and terminal window size changes
2718537 bitbake: build.py: Only execute mkdirhier if stampdir doesn't exist
e2d023f bitbake: bb/ui/uihelper.py: Ensure task current and total numbers are updated for setscene events too
4c4f714 bitbake: knotty: Chain the WINCH signal handler in progressbar so any other handler is preserved and called
b95356c distro: Remove Pimlico from distro-tracking
70b8740 classes/chrpath: trigger an error if chrpath fails
0c6ac62 documentation: remove references to Pimlico
5e775b5 pimlico: Remove
af8e6b6 gst-plugins-base: remove avahi from DEPENDS
f8d5e2b sstate-cache-management.sh: update it for the new layout
0e6e974 classes: add gsettings.bbclass
1ce0f3f rpmresolve: improve debug output
5c23b3c libdrm: package update 2.4.35 -> 2.4.37
0547b66 man: make man actually work by installing custom man.config
b6bbf40 kernel.bbclass: remove default module_autoload and module_conf values
2d1f0ca man: fix RDEPENDS and reformat recipe
311ba92 pigz: Update to upstream version 2.2.5
39e7812 sysklogd: removed tabs from syslog.conf
a47864d gettext-0.18: explicitly disable acl.
a8d2482 dbus: Fix pid file in dbus init script
13e2eff base.bbclass: Expand PNBLACKLIST across multilibs too
533b8b9 sysfsutils: install libs to base_libdir
69e8366 at 3.1.13: get 'at' depends on 'flex-native' explicitly
883c1e9 gdk-pixbuf: fix the postinstall script failure when no icon is installed
07faf20 gstreamer: gst-ffmpeg: fix build issues for libav
1834db1 pango: upgrade to upstream stable 1.30.0
5c96735 qemu: backport patch to fix pl031 RTC
0452d8b tcl: uncomment a line that causing TCL_SRC_DIR point to the workdir.
8472a79 layer.conf: add udev-extraconf to SIGGEN_EXCLUDERECIPES_ABISAFE
096306e base.bbclass: allow specifying an lsb distro hook via the metadata
5ec61a7 bitbake.conf: store cooker logs in subdirectory of LOG_DIR
dd28dee run-postinsts: Does not run any scripts on debian rootfs
264a6e4 net-tools: cleanup update-alternatives deprecated code
22f1c95 gawk: cleanup update-alternatives deprecated code
7d9c0be sed: cleanup update-alternatives deprecated code
5230b71 wget: cleanup update-alternatives deprecated code
81a9c13 time: cleanup update-alternatives deprecated code
03c4940 procps: cleanup update-alternatives deprecated code
38cab7c gzip: cleanup update-alternatives deprecated code
335fd22 hdparm: cleanup update-alternatives deprecated code
a26ab59 mingetty: cleanup update-alternatives deprecated code
9ed6b34 shadow: cleanup update-alternatives deprecated code
a260a6e less: cleanup update-alternatives deprecated code
1d12056 which: cleanup update-alternatives deprecated code
484e861 mktemp: cleanup update-alternatives deprecated code
f70db67 msmtp: cleanup update-alternatives deprecated code
9f64e13 pigz: cleanup update-alternatives deprecated code
cb4c91b metacity: cleanup update-alternatives deprecated code
69e1609 matchbox-session: cleanup update-alternatives deprecated code
0409ee3 matchbox-wm-2: cleanup update-alternatives deprecated code
1025e4a mutter: cleanup update-alternatives deprecated code
90bb29c powertop: cleanup update-alternatives deprecated code
41ab6b5 findutils: cleanup update-alternatives deprecated code
825929c findutils: refactor common code to findutils.inc
a4e13ed diffutils: cleanup update-alternatives deprecated code
ff5c7e2 diffutils: refactor to add a common diffutils.inc
6bb519b bc: cleanup update-alternatives deprecated code
53a6bc5 ubootchart: cleanup update-alternatives deprecated code
197c77b patch: cleanup update-alternatives deprecated code
cc0c08f tinylogin: cleanup update-alternatives deprecated code
80e764e kbd: cleanup update-alternatives deprecated code
d089963 console-tools: cleanup update-alternatives deprecated code
c21ce7b mini-x-session: cleanup update-alternatives deprecated code
1e3bbf7 openssh: cleanup update-alternatives deprecated code
7f515e9 rxvt-unicode: cleanup update-alternatives deprecated code
5b8a9e3 rxvt-unicode: remove setting of LD_LIBRARY_PATH
efcb0a8 documentation/poky-ref-manual/ref-structure.xml: deleting images
49e8c5a documentation/dev-manual/dev-manual-common-tasks.xml: Packages dir removed
eea510c documentation/dev-manual: modified SSH server discussion for QEMU Images
8b8748c rpmresolve: Ensure we call the rpm relocation code at init
d45bbc5 createrepo: add wrapper script to fix paths
61addcc rpmresolve: add wrapper script to fix paths
8daf311 watchdog: fix SRC_URI _ -> -
047db04 qemu.inc: disable curl for qemu-nativesdk
2dec760 foomatic: fix perl path for target
87ffccb automake: Fix version reference in path substitutions
61a43e5 linux-yocto-3.2: Apply slang workaround fixing perf builds to 3.2 kernels too
bf96b5c linux-yocto-3.0: Apply slang workaround fixing perf builds to 3.0 kernels too
d32e948 binutils: Enable threaded linking with gold
7e8b65b package-index: Remove the python hack, its not needed after the pythonnative changes
0162472 gcc: Disable use of sdt.h header
99e6ed0 iputils: Break libsysfs dependency
89886d9 linux-yocto-custom: Clarify usage and clear COMPATIBLE_MACHINE
d6ef548 image-mklibs: pass correct libdir to mklibs
f6763e9 python: Fix RPATH QA issue on non-gplv3 builds
41fc0ae linux-yocto-3.4: Disable extra slang header search path
ff6de61 linux-firmware: Ensure PR goes forward, not backwards after the revert
8c8312c Revert "linux-firware: use ${base_libdir} instead of /lib for packaging"
ef98412 kernel.bbclass: Revert ${base_libdir} change
e72a154 kernelshark: Inherit pythonnative
37da138 gdb-cross: Explicitly disable python
c86d26c subversion: Add missing build dependency on sqlite3
4590c0b findutils-4.4.2: add bison-native to DEPENDS
8030c3f bison: updated to 2.5.1
a71dfcc buildhistory: reduce the numeric delta to 10%
36c7c64 buildhistory: correctly handle reductions of numeric fields
bff36f1 libpam: disable NIS to not link with libtirpc when it is available
1b34870 gthumb: fix parallel build problems
3f8e65f babeltrace: Update to upstream stable versrion 0.12
e1868a1 atk: package update 2.2 -> 2.4
06ad59c classes/package: don't make locale pkgs depend on PN pkg if not in PACKAGES
b9fa9d7 classes/buildhistory: save metadata revisions
4bf1c0a buildhistory_analysis: ignore removal of self-dependencies
507dba6 buildhistory_analysis: tidy up duplicate split_version function
81485a4 classes/buildhistory: record PKG/PKGE/PKGV/PKGR
c0149ac classes/buildhistory: save preinst/postinst/prerm/postrm
78d8faf classes/buildhistory: remove unused functions
d0b07eb classes/buildhistory: ensure old package info is removed
2f6ceff classes/buildhistory: remove obsolete flat package history feature
227dafd mesa: 7.11 -> 8.0.4
e78843e curl: disable ldap/ldaps explicitly
2a88d4d mesa: Use 'require' instead of 'include'
c508448 mesa: Update to 8.0.4 (latest stable version)
abfa907 mesa: enable the Graphic Buffer Manager library
8b4015a mesa: add --enable-shared-glapi, and package it in libglapi
cf247a4 mesa: move glu.pc to libglu-dev
e35d9ff mesa: format the packages list nicely
efbf461 mesa: no need to depend on python-native, the class does that
db50930 linux-firware: use ${base_libdir} instead of /lib for packaging
5b8a479 kernel.bbclass: use ${base_libdir} and ${sysconfdir} instead of /lib and /etc
226ec65 lsb: use ${base_bindir} and ${sysconfdir} instead of /bin and /etc
7ada514 usbinit: use ${sysconfdir} instead of /etc for packaging
250dd22 lsbinitscripts: use ${sysconfdir} instead of /etc for packaging
cb8f382 rsync: use ${sysconfdir} instead of /etc for packaging
ed9fc6f man: use ${sysconfdir} instead of /etc for packaging
05e00a9 chkconfig: use ${sysconfdir} instead of /etc for packaging
b167ee0 qemu-config: use ${sysconfdir} instead of /etc for packaging
8353aa1 xserver-nodm-init: use ${sysconfdir} instead of /etc for packaging
8972009 builder: use ${sysconfdir} instead of /etc for packaging
7d17a8e x11-common: use ${sysconfdir} instead of /etc for packaging
4efdf2c libpam: use ${localstatedir} and ${sysconfdir} instead of /var and /etc
6c9d66b openssh: use ${localstatedir} instead of /var for packaging
23732f2 at: Use variables from the environment to override the makefile defaults
940fc19 mingetty: use ${base_sbindir} instead of /sbin for packaging
72d697e systemtap: use ${datadir} instead of /usr/share for packaging
781fe78 xkeyboard-config: use ${datadir} instead of /usr/share for packaging
0334d47 ubootchart: use variables instead of hardcoded paths
84728a1 useradd-example: use ${datadir} instead of /usr/share for packaging
344c40b cronie: use variables instead of hardcoded paths
dbabc44 lsbtest: use ${bindir} instead of /usr/bin for packaging
7191f4b sudo: use ${bindir} and ${sysconfdir} instead of /usr/bin and /etc
2bb6742 lsbsetup: use ${bindir} instead of /usr/bin for packaging
9d27075 alsa-state: use ${sbindir} instead of /usr/sbin for packaging
bfa808e xinetd: use ${sbindir} and ${sysconfdir} instead of /usr/sbin and /etc
77625e7 python: Fix to support the python module _bsddb built with db 5.3
941d107 psplash: Update to latest psplash version
29503fa glib-2.0-nativesdk: Add dependency on glib-2.0-native
bce9306 populate_sdk_rpm.bbclass: Depend do_populate_sdk task on createrepo-native
497d871 eglibc-locale: bump PR after fc4b138948656d482603b80f8c8e86fdbb185df4
98e2ebe bitbake.conf: exclude whole MACHINEOVERRIDES from OVERRIDES vardeps
8a4220a qt4-native: fix creating /include directory in build host root
3d07ef1 tcl: Add ${bindir_crossscripts}/tclConfig.sh to sysroot stage
e51d01a gdk-pixbuf: fix parallel install issue
ba218e7 busybox: fix du-k-works test case
c8815d2 gcc-cross-initial: Ensure it uses an isolated sysroot
ed6beed gcc: Bump PR since there have been several gcc changes and various problems reported and this should flush anything stale out
9df0a20 bitbake: data_smart: Fix unanchored regexp causing strange parsing issue
71cc9de bitbake: Fix script location after mishandled merge
2b720d6 gcc-cross-initial: Fix typo causing limits.h not to be present
85c005d tzdata: Upgrade tzdata to upstream 2012d
cecf2b4 bitbake: cooker: fix OVERRIDES in BB_SIGNATURE_HANDLER (to override value from DISTRO.conf from local.conf)
6ffb679 bitbake: fetch2/local: Add search paths to the debug log to improve log usefullness
43a25ff bitbake: fetch2/local.py: Provide better debug output when fetch of a local file fails
67bfb37 bitbake: runqueue.py: Clean up runqueue exception catching in the normal task failure case
5442b9a texi2html: Fix perl location on recent distros
d6f2cd7 gnome-desktop: Fix python location on recent distros
dee0730 runqemu-gen-tapdevs: add UID to CL options
c4a7517 Complete recipe enablement
9461854 bitbake: contrib/dump_cache.py: dump recipe -> packages mapping from bb_cache.dat
94f57a1 bitbake: bitbake-layers: fix help for show-overlayed to match behaviour
8a3ae43 bitbake: Hob: change the Build failure scenario as ui design
94e2a10 bitbake: Hob: log for Hob and allow users to show logs after successful build
5d952ba bitbake: fetch2: print checksums when they are different then expected
4208917 bitbake: fetch2: handle broken symlinks in local mirror handling
f1417a1 bitbake: knotty: ensure that directory for BB_CONSOLELOG exists before using it
9fb5c34 bitbake: fetch2/__init__.py: Add NoChecksumError exception
2db74c6 guile: updated to 2.0.6
a4b1e34 busybox: udhcpc shouldn't be a service
6a29398 bitbake: hob: deal event DiskFull
b2a959a bitbake: monitordisk: fire event DISKFULL when terminate build
0125438 dbus: Ensure dbus-nativesdk doesn't RPROVIDE dbus-x11
01524b4 python-setuptools: Fix setuptools install libdir != /usr/lib
e3a13b8 package.bbclass: change RPATHs for nativesdk packages
476ced1 relocatable.bbclass: split it up, to reuse code
44df019 populate_sdk_base.bbclass: create self-extracting archive
749b8a5 scripts: add script for relocating the SDK
77973e3 binutils: relocatable SDK: change PT_INTERP section size
e81441a eglibc: relocatable SDK changes
e172be5 kmod: Upgrade to upstream version 9.0
0db5532 send-pull-request: Make -a really imply -c
1b138d1 qt4: fix qt4-native build failure on SLED-11
438df0f sip.bbclass: fix sip-native dependency
516ce2f python-dbus: updated to 1.1.1
fe800ca watchdog: Upgrade to upstream v5.12
08d1621 usbutils: Upgrade usbutils to upstream v006
c1fb312 u-boot.inc: fix regexp used when ld-is-gold
62d42fe tiny-init: Setup /dev/ptmx in init
acde166 gcc-configure-target: Set native-system-header-dir for target gcc
5dc490c core-image.bbclass: Fix typo in comment, "IMAGE_FEAETURES"
dfd86b6 createrepo 0.4.11: create wrapper for python script
148e19e createrepo 0.4.11: add rpm-createsolvedb.py
fd6251e imagetest-qemu.bbclass: Fix whitespace issues
3309cf4 package_rpm.bbclass: Accomodate dash when using arrays
ad63b9b scripts/oe-pkgdata-util: exclude unpackaged in glob output
74aac73 combo-layer: ensure init works with split local config
f8d40ab dbus: include dbus-launch in the main dbus package
c5d8b0b glib-2.0-nativesdk: Fix build on ubuntu 11.10
5ab3a11 package.bbclass: fix TypeError in runstrip
8c7480e slang: change char type to signed char in macros
780ba46 scripts/bitbake: unbreak the git version comparison
5fe7d04 trace-cmd: Update for python-native changes
4f31d21 lib/oe/lsb.py: Map unknown distributions to 'Unknown'
de3abcf combo-layer: allow splitting out local config
6bea863 combo-layer: check that last_revision is valid
8140c5b combo-layer: improve patch list handling and output
2dc0b33 combo-layer: drop to a shell when apply fails during update
f558ecf combo-layer: ignore patch-* temp directories in dirty check
2ed3f63 combo-layer: allow component pull to be done separately
dad01a0 combo-layer: remove &> bashism
07c93ba qt4: make font packaging specific to embedded version
7273032 qt4: allow recipes building commercial edition
581af95 classes/populate_sdk_rpm: add depends on rpmresolve-native
9c96d34 classes/populate_sdk_base: don't break existing do_populate_sdk depends
b915fa4 kernel.bbclass: Copy bounds.h only if it exists, needed for 2.6.x.
bd72666 libxcb: Update for python-native changes
7411158 xcb-proto: Update for python-native changes
695ab4f libdrm: add DEFAULT_PREFERENCE = -1 to git recipe
edc2559 socat 1.7.2: add readline dependency
33157b1 guile:meta/Makefile change install-data-hook to install-exec-hook
d67c64e qt-mobility, xserver-xorg, ofono, bluez4, gst-plugins-good: bump PR to rebuild after libudev0 soname change to libudev1
3372d96 bison: move remove-gets.patch to BASE_SRC_URI, it's needed for bison-native too if host has (e)glibc-2.16
22965c4 classes/package: ensure pkgdata is cleaned out first
3d164f7 pseudo.inc/pseudo_1.4.bb: update pseudo to 1.4
a18b397 usbutils 0.91: Fix NULL pointer crash.
2b40ca1 libpciaccess: lpci access does not depend on X
495350c libdrm: Bump libdrm_git to 2.4.37
f8b2e3f libdrm: Put the license md5sum in the common include
9e1c7a8 libdrm: libdrm does not depend on xcb any more
b954613 drm: move to PR/INC_PR, starting at r1 as libdrm_git was at r1
f7750b2 ppp: bump PR to rebuild against libpcap1 instead libpcap
20ad566 buildhistory: improve performance of image info collection
98b0f95 classes/image: add staticdev-pkgs IMAGE_FEATURES feature
fa5640d Rework installation of dev, dbg, doc, and locale packages
a73c25d classes/rootfs_rpm: improve speed of RPM rootfs construction
656726a gconf: Clean up introspection disabling by using gobject-introspection-stub
b7a528b polkit/vte/gupnp/gssdp: Replace introspection hacks with gobject-introspection-stub
8809949 gtk-doc-stub: Add PROVIDES for gobject-introspection-stub and fix unpackaged files
17a07be gobject-introspection: Drop the recipe, it has never worked and if it does cross compile, we can add it back
e496e3d eds-tools: Drop this recipe, its inapproriate in OE-Core
366c7ee world-broken.inc: Remove clutter-box2d from the exclude list, it works
754d240 package.bbclass/eglibc-locale: Ensure the correct PN is used for locale packages
72ab286 sstate.bbclass: Add a string representing the lsb release to native/cross sstate
2045338 sstate: Add a two character subdirectory to the sstate directory layout
10b5ea7 base.bbclass: Set the NATIVELSBSTRING variable to represent the distro we're running on
f295e29 lib/oe/lsb: Add basic LSB functions
3f05622 bzip2-native: handling native path issue
6c93f70 image.bbclass: Fix a couple innocuous typoes, should cause no functional change
a5227e2 classes/package: reduce dbg package dependencies
58a7be4 gtk-doc.bbclass: unbreak dependency-chain for native recipes
a35f60a u-boot.inc: update linker arguments to pass --sysroot arg
76df449 insserv: define do_install_virtclass-native()
520c5d9 Update intltool to version 0.50.0
c3bb97b bluez4: use PACKAGECONFIG to control 'pie'
e95eff1 bitbake.conf: override -cpu for qemu on ppc with SPE
ce6d066 cmake: Upgrade recipes to 2.8.8
82aabbd qemu: Fix illegal instruction errors on e500 emulation
6475aae pkgconfig: Fix packaging issue
456b859 eglibc: Add patch to add sys/resource.h to wait.h
dc62568 tcmode-default: Bump EGLIBC Version to 2.16
fb53d69 documentation/dev-manual/dev-manual-intro.xml: typo fixed.
0565ae4 usbutils: avoid dependency on bash
e957380 classes/package: do not add self-dependencies to dev/dbg packages
3a4bb81 guile: Add continuation marker to create_wrapper
5157c85 base/perlnative/pythonnative/gzipnative: Add a new variable to enable easier handling of native path issues
f3d5e08 staging.bbclass: Add support for invalidtasks parameter (see bitbake change)
8067a78 Connectivity and multimedia manual packages
e62cc51 upstream_tracking.inc: update some packages
dc4e933 maintainers.inc: update some packages' maintainer info
8febf64 bitbake: fetch/local: Allow preservation of path components in relative file:// urls
c74f3d4 bitbake: runqueue.py: Wipe out the stamp cache between setscene and main task execution
0984853 bitbake: runqueue.py: Allow the setsceneverify function to have a list of tasks that are invalid and need to run
b22592a bitbake: runqueue.py: Ensure one setscene function doesn't mask out another which needs to run
58f0d04 bitbake: runqueue.py: Optimise the hashvalidate call to only process tasks we may actually want
dfdb2eb bitbake: runqueue.py: Gracefully exit if an exception occurs in the runqueue execution code
46d8d04 bitbake: runqueue.py: Fix a stamp comparision bug
2b6114d linux-yocto/rt: update BSP preempt-rt.scc files to enable live boot
268ea55 mtools: add glibc-gconv-* to RDEPENDS/RRECOMMENDS
66009e2 meta/lib: remove test.py
04ba76b telepathy-glib: fix a build race
11c1f94 readline: add missing macros in acinclude.m4
3708813 byacc: upgrade to ver. 20120526
3ca4f17 libpcap: upgrade to ver. 1.3
8462bcc iptables: upgrade to ver. 1.4.14
fd1a306 findutils: fix sort dir on updatedb
219583d slang 2.2.4: fix the pcre existence checking
4078b7a libpcre: upgrade to ver. 8.31
bd13f7a telepathy-mission-control: upgrade to ver. 5.13
eefbd2e liburi-perl: update to 1.60
5af0be9 ltp: update to version 20120614
c0c2a3e qmmp: update 0.6.1
b2ec781 documentation/poky-ref-manual: Removed included BSP Guide
a496b3a documentation/bsp-guide/bsp.xml: Fixed error in sample layer.conf file.
18de233 Add missing Upstream-Status to various patches.
2ccbf35 busybox:udhcpc: fix the root_is_nfs() function
1a4a077 xinit_1.3.2: Remove broken, superfluous 'FILES_${PN} += "${libdir}X11/xinit"'
30c618a busybox: fix the problem that mkfs.minix.tests fails on big endian platform
39c9b20 core-image: remove x11-netbook package group, it's unused
accbf87 eglibc: Fix build when OPTION_POSIX_WIDE_CHAR_DEVICE_IO is not set
aab76b3 gcc-cross-initial: Stage self sufficient fixed limits.h
fecb956 eglibc-initial: Fix build failure due to missing limits.h
d9a0e08 classes/package_deb: add PackageArch field
5334a93 package.bbclass: Create symlinks for packages with different packaged name
dcadeda kernel bbclass: Recreate uImage only when KEEPUIMAGE != "yes"
51bc0e4 libcgroup_0.37.1.bb: Add recipe
32ed8db remake: Add remake-native and remake
171cb46 cups_1.4.6.bb: Fix build on ppc64
bedae28 qemu.bbclass: Map the qemu binary name for powerpc64
b882a12 webkit-gtk: Replace superfluous "+=" with "=", and add leading space
70bc9cf libxp: Change superfluous "+=" to simple "=" when using _append
349c6e7 dhcp: remove dependency of dev/staticdev packages on main package
e7dd47d linux-yocto/3.4: 3.4.6 and 3.4.x-rt14
93060b6 shadow: use 'users' group by default
92cfb88 shadow-native: use 'users' group by default
9247550 kernel.bbclass: fix external module building
4113211 bash: fix warning about bashbug reference /usr/bin when installed in /bin
d9ad9bc libpcap: fix pcap-config to not return -Wl,-rpath
142ac1a initscripts: don't bg mk_dirs in populate-volatile
0ffb02e documentation: Updated the h6 style to use a larger font
41c7020 documentation: Moved the Eclipse chapter to the YP Dev Manual.
fad4b8f documentation: Changes to ADT Manual title
b742716 documentation/dev-manual/dev-manual-model.xml: Edits for Eclipse insertion
3853dc7 documentation/kernel-manual/kernel-doc-intro.xml: Fixed typo
444ad51 bitbake: bitbake wget fetcher: add parameter: downloadfilename
8a978ee bitbake: Change bzr fetcher to use branch instead of co. Fixes: bzr: ERROR: No pull location known or specified.
897d7d1 bitbake: cooker.py: Ensure we track parser errors and only show bbappend issues on complete parse
3049f6b libgcc: Add missing dependency on libc:do_package
7642d98 grub: Use COMPATIBLE_HOST variable instead of anonymous python
f4511f3 grub: Allow reautoconf with the correct parameters
315d529 Pyphon-native: Fix typo
5d9b2de python-native: Use append instead of += so the lsb override for EXTRA_OECONF works as expected
768cd7f gnome-doc-utils: Update to use python-native
655654d gtk-doc: Ensure we run gtkdocize else we could see build failures (e.g. evolution-data-server)
a92bce8 libgnome-keyring: Add missing DEPENDS on glib-2.0
3080243 kmod: Add missing DEPENDS on pkgconfig-native
e18ae61 sstate: Set SSTAGE_PKGARCH for allarch packages to allow reuse
7fb076a allarch: No need to make packaging machine specific
89b1dcb linux-yocto/3.4: emgd, mtd nand and kmemcheck fixes
beef126 kernel-yocto.bbclass: Delete superfluous creation of ${S}/.git directory
7d93e98 kernel-yocto.bbclass: Fix some obvious typoes in comments.
b2c094f openssl: upgrade to 1.0.0j
71105cc autoconf: updated to 2.69
28bc1f5 libxml2: Update for python-native changes
e4de1de perf: Update for python-native changes
f56064e gobject-introspection: Update for python-native changes
9e8129e mesa-common: Update for python-native changes
cf45948 telepathy-python: Update for python-native changes
e4551d1 mklibs-native: Update for python-native changes
8936145 python-pyrex-native: Update for python-native changes
62d2242 python-scons-native: Update for python-native changes
75b7c51 python: Update for python-native changes
093ed41 python-native: Put binaries in seperate directory
5bdd998 Remove gtk-doc
35b26fb vte: cleanup thanks to new gtk-doc.bbclass
6bc0b98 atk: cleanup thanks to new gtk-doc.bbclass
27b4cf2 webkit-gtk: cleanup thanks to new gtk-doc.bbclass
a2afa69 evolution-data-server: cleanup thanks to new gtk-doc.bbclass
7f42473 kmod: inherit gtk-doc, gnome-doc-utils-native isn't the package you were looking for
4a5f8d8 pango: cleanup thanks to new gtk-doc.bbclass
9f77978 clutter: cleanup thanks to new gtk-doc.bbclass
8bd2eb6 librsvg: cleanup thanks to new gtk-doc.bbclass
959bbba libglade: cleanup thanks to new gtk-doc.bbclass
9036331 gtk+: cleanup thanks to new gtk-doc.bbclass
4b84a87 libgnome-keyring: cleanup thanks to new gtk-doc.bbclass
6121945 libart-lgpl: Does not require gtk-doc
8ad0799 libart_lgpl: cleanup thanks to new gtk-doc.bbclass
cd93c56 gnome-keyring: cleanup thanks to new gtk-doc.bbclass
9cf7b01 gail: cleanup thanks to new gtk-doc.bbclass
9fef648 polkit-gnome: cleanup thanks to new gtk-doc.bbclass
4b7cab0 polkit: cleanup thanks to new gtk-doc.bbclass
85ee0a9 connman: cleanup thanks to new gtk-doc.bbclass
2e77788 gconf: cleanup thanks to new gtk-doc.bbclass
ac5ff72 gypsy: inherit gtk-doc
d0a8a0d cogl: cleanup thanks to new gtk-doc.bbclass
a7d5d61 gobject-introspection: cleanup thanks to new gtk-doc.bbclass
39d33aa gconf: cleanup thanks to new gtk-doc.bbclass
1f9c133 glib-2.0: cleanup thanks to new gtk-doc.bbclass
8744139 change gtk-doc.bbclass to pull in depends and oeconf
3e66106 Add gtk-doc-stub
0405621 documentation: Created cross-references to new KMACHINE glossary item
3b4c933 documentation/poky-ref-manual/ref-variables.xml: New KMACHINE gloss entry
15b9676 mpc8315: build u-boot v2012.04 by default.
98a1fd1 documentation: Config fragment sections updated
24340ed grub-efi-native: remove help2man dependency
d85216e sanity: display the parsed BBPATH when complaining about CWD elements
35a0c10 webkit-gtk: bump PR
ceb0f25 puzzles, mkelfimage: Use svn protocol instead of http
589a7fe binutils: Add missing target package dependencies
e62a5b0 createrepo 0.4.11: fix the RDEPENDS
eb5522e package_rpm: DEPLOY_DIR_RPM must exist before make index
a6898ff util-linux: register reset u-a to bindir like busybox does
64f7feb EFI: Make installer EFI aware
d36fa9a grub: fix error stating the root device
8adc595 grub: fix grub-mkconfig_lib install dir
638cd1a Upadate upstream_tracking.inc
950ae12 documentation/poky.ent: updated YOCTO_DOCS_RELEASE variable to 1.3
23df8e0 busybox: busybox wget -P option ignored
d1c9fab dbus-glib: add support for install regression tests
df64377 dbus-glib: fix compile error when enable-tests
4f2da78 wpa-supplicant: upgrade to 1.0
90fbd7f libcanberra: upgrade to 0.29
e26bce1 pulseaudio: upgrade to 2.0
6ad86c1 connman: fix crashes on startup on PPC/MIPS
9d83871 connman: Add patches to fix connman on fs with no d_type support
8e0f502 connman.inc: Add missing dependencies needed by some tests
85fd613 connman: Update to version 1.3
093410f iproute2: upgrade to 3.4.0
807ff46 Add console kernel options
99ed56f Multilib build fixes
05e2aa5 eggdbus: remove, nothing uses it
6185b8a polkit: remove dbus-glib and eggdbus dependencies, polkit uses gio for DBus
d7f1f1e libgnome-keyring: remove eggdbus dependency, it has an in-tree copy
a9b51e7 staging.bbclass: Also don't bother staging locale files, its pointless
ee2c57f avahi-ui: Remove the locale files and rely on the main avahi package for these
b13c344 eglibc-package.inc: Remove duplicate locale install
1ed15fb staging.bbclass: Ensure the task starts from a clean directory
52d1f7b staging.bbclass: Don't stage doc/manpage/info files
7f28f75 opkg-utils: UPdate to version with python 2.6 fix
2665be9 buildhistory.bbclass: Fix python whitespace
09d11c2 package_ipk.bbclass: Fix python whitespace
73cf033 Remove a number of unneeded import os/bb calls
7b2c678 toolchain-scripts: Remove extra - from ar/nm command names
1063f45 Remove the - between ${TARGET_PREFIX} and ar/nm for the env script, as this will make autotools look for arm-none-linux-gnueabi--ar instead of arm-none-linux-gnueabi-ar.
26ace2c bitbake: Update version to 1.15.3
798415b bitbake: bitbake: Warn upon finding tab indentation in python functions
6ab6080 sanity.conf: Increase bitbake minimum version to 1.15.3
bfd279d Convert tab indentation in python functions into four-space
99203ed boot-directdisk: Fix kernel location after STAGING_KERNEL_DIR change
28d29b4 tcl: fix tcl INCLUDE_SPEC and LIB_SPEC
7b57354 nasm: nasm has a build dependency on groff-native
3e89b62 gcc: remove 904-flatten-switch-stmt-00.patch
ac7a031 bitbake.conf: Define USRBINPATH globally instead of individually
63f545b qemu-nativesdk: fix the build failure that linux/kvm.h not found
8560197 sanity: display the parsed PATH when complaining about CWD elements
63acb55 binutils: package ld.gold symlink
b68fb41 watchdog: fix ping mode failure
6178359 bitbake.conf: Add git-native to ASSUME_PROVIDED
4f20d6e eglibc: Fix build for e500 cores
ecd5308 slang: add header to patch
55faaa0 fix my typos in patch headers
18d4ed7 puzzles, mkelfimage: Add protocol=http
12e68d4 webkit-gtk: remove spurious install_prepend hack
e4c43e2 webkit-gtk: remove no-parallel bodge
707cd32 scripts/bitbake: Check the git-native version and build it if necessary
63bfda7 recipes: svn SRC_URI s/proto=/protocol=/g
76a16c0 terminal.py: Fix Xfce on ubuntu/debian; some cleanup
04c2ee4 meta-ide-support: Add native qemu support for meta-ide-support
9a52725 tune-ppc476.inc: Support ppc476
4343662 web-webkit: don't link using g++, it's not needed anymore
12f5b06 web-webkit: push make whitespace fix upstream
e4ce4b4 web-webkit: remove unused dependencies (taken from the gecko-based recipe)
f7d7ebc psplash: use default OE vga logo (from kernel bootlogo)
4bb133b task-core-tools-testapps.bb: kexec-tools does not work on e5500-64b parts
e0e04c4 gcc-package-runtime.inc: Fix QA warning
14554f8 documentation/adt-manual/adt-package.xml: Edits to packaging chapter
bd45627 documentation/adt-manual/adt-prepare.xml: Edits affecting rename and clarity
bf1cc56 documentation/adt-manual/adt-intro.xml: Edits to introduction chapter
e6d3b5c documentation/adt-manual/adt-manual.xml: Title change for link.
9e734b2 documentation/adt-manual/figures/adt-title.png: Changed ADT Manual title
d5fb117 bitbake: fetch2/svn.py: Use protocol parameter to get the protocol
5ed19a4 toolchain-scripts: Sync the SDK/ADT values to the build system
0082a64 documentation/bsp-guide/bsp.xml: Updates to Kernel configuration section
4b95ba2 documentation: Changed link anchor for 'resourses' in QS
c574627 connman: fix build with automake 1.12
9eea1eb udev: don't mount with -o sync
219a855 useradd.bbclass: Fix for multilib builds
36a31b0 documentation/dev-manual/dev-manual-common-tasks.xml: Fixed reference
d7cf7ec documentation/poky-ref-manual: Converted resources appendix to chapter
1a39c85 documentation: Converted FAQ appendix to a chapter
0f4d220 documentation/poky-ref-manual: Converted ref-varlocality to chapter.
cfc1d50 documentation: converted ref-variables-gloss to chapter.
2db4088 documentation: converted ref-images and ref-features to chapters
6954204 documentation/poky-ref-manual: Converted ref-classes to chapter
709bc59 documentation/poky-ref-manual/ref-structure.xml: wording change to chapter.
8f5af19 documentation/poky-ref-manual: Converted ref-bitbake to chapter
3eae2a0 documentation/poky-ref-manual: Re-cast structure appendix as chapter
c20cdf6 documentation: Fixed the links to the BitBake Documentation page.
3a87636 documentation/poky.ent: Changed BITBAKE_DOCS_URL.
d9dc29c documentation/poky-ref-manual: Removed artifacts for dev chapter
e2935d3 documentation/poky-ref-manual/development.xml: Deleted development chapter
568b732 documentation/dev-manual/dev-manual-common-tasks.xml: Added external SCM
738d947 documentation/poky-ref-manual/development.xml: Removed devshell section
c6c2eba documentation/dev-manual/dev-manual-model.xml: Added devshell section
4023836 documentation/poky-ref-manual: Fixed various references to YP
30f4916 documentation/poky-ref-manual/faq.xml: Updates to external toolchain
7f998da documentation/yocto-project-qs/yocto-project-qs.xml: install toolchain details
582e29e documentation/poky-ref-manual/ref-variables.xml: Added KBRANCH entry
d4d4843 documentation/bsp-guide/bsp.xml: Changes to kernel config section.
4bd0338 bitbake: hob2: add elf to hcc supported image types
4b8f43a bitbake: siggen.py: Insure .siginfo files writes into shared sstate cache are atomic
05e5ec2 bitbake: runqueue.py: Improve error output to be more useful when non-existent tasks are found
ac8ec3b gcc-cross-initial.inc: Use BFD ld as default always
7765ad4 webkit-gtk: remove svn recipe
c9f855e webkit-gtk: add 1.8.1 recipe from tarball
fac419e gnutls: Fix build with automake 1.12.1
cac24ab lame: fix build with automake 1.12.x
20a04e3 sed-4.1.2: fix build with automake 1.12.x
1f04e52 gawk-3.1.5: fix build with automake 1.12.x
0bd3e2a tar: fix build with automake 1.12.x
c82ba68 gpgme: fix build with automake 1.12.x
d108b8a webgit-gtk: fix build with automake 1.12.1
08131d8 libidn: fix build with automake 1.12
a41f095 telepathy-python: fix build with automake 1.12
d434cb6 libunistring: fix build with automake 1.12
95c561f pango: fix dependencies to avoid build issue
1447362 libfm: fix build with automake 1.12.x
22ea83c xf86-video-vmware: fix build with automake 1.12.x
45d9171 telepathy-glib: fix build with automake 1.12.x
f91fbc6 libgcrypt: fix build with automake 1.12.x
fc537f3 evolution-data-server: fix build with automake 1.12.x
2bea94d librsvg: fix build with automake 1.12.x
6dfb17b dates: fix build with automake 1.12.x
2fa4618 avahi: fix build with automake 1.12.1
33ec0e1 pcmanfm: fix build with automake 1.12.x
cd3fcdd gnutls: Fix build with automake 1.12.1
e24ec0c jpeg: fix configure with automake 1.12.1
bf6786b automake: upgrade from 1.11.3 to 1.12.1
83dda47 eglibc: Add recipes for 2.16 release
85e5f2d mkelfimage: Fix cross build
0a925c9 kernel.bbclass: Dont package kxgettext.o
9302964 guile: Fix missing depends and broken arm build
eb6323c gcc: Switch to git SRC_URI
4240bd6 lib/oe/sstatesig.py: Exclude git-native from sstate checksum
ccaef5c qemu: Explicitly add --disable-gl-accel when gl is not enabled
3cf4c8d gcc: Refresh support for fsl E5500/E6500
656417a binutils: Backport the e5500/e6500 patches from mainline
aa31bcb gcc: Convert do_headerfix into a definitive patch
804cebc strace: Fix build on eglibc 2.16
19bf330 libpam: Fix build with eglibc 2.16
19fe059 valgrind: Fix build with eglibc 2.16
a096caa boost: Upgrade recipe to 1.50.0
06f6b54 grub,guile,cpio,tar,wget: Fix gnulib for absense of gets in eglibc
674e951 bison: Fix for gets being removed from eglibc 2.16
19875a0 gettext,m4,augeas,gnutls: Account for removal of gets in eglibc 2.16
734e1a9 udev: Fix build with eglibc 2.16
34d1281 diffutils: Fix build with eglibc 2.16
423d316 coreutils: Fix build with eglibc 2.16
0fef0ff glib: package bash-completion files in separate package and move ${PN}-codegen to .inc
a94e5d2 glib: upgrade to 2.32.4
0e53886 libx11: fix makekeys build
d627534 busybox: Include sys/resource.h for rusage definition
a7b443a gdb: Replace struct siginfo with proper siginfo_t
a9f6df2 mirrors: Add debian archive snapshot mirrors to search list
1269eb0 lsof: define linux C library type when using eglibc
f224240 base.bbclass: add GNUmakefile to the list of possible makefile names
d71a35d crosssdk/nativesdk: Ensure EXTRA_OECONF_FPU is unset
a09d55f python: Fix python-nativesdk variable contamination issue
72df57b sstate.bbclass: Move crosssdk before cross to ensure correct variables are set
eb19ce2 gmp: upgrade to 5.0.5
5e7d4ca sysvinit-inittab_2.88dsf.bb: Allow multiple serial port consoles to be defined
9e5bce8 runqemu: Fix running qemu when build without gl
e21c59e image_types.bbclass: Default XZ_COMPRESSION_LEVEL to -e -6
89dc64c image_types.bbclass: Add XZ variable to set number of threads to be used while compressing
5a281ea image_types.bbclass: Fix COMPRESS_CMD for xz to redirect compressed data to file
a5bb0bd cpan.bbclass: Fix CCFLAGS.
e789c1b puzzles: convert to use SVN
14c4a41 Update proto -> protocol for recipes
ab0401f xz: update to 5.1.2alpha
9d38697 task-core-sdk.bb: add libgomp and libgomp-dev by RECOMMENDS
c43abe1 python-dbus: upgrade to 1.1.0
4913b61 classes/rootfs_deb: use more reliable check for package existence
e242388 linux-libc-headers: updated to 3.4.3
07a9e9e package.bbclass: Allow overriding of debugedit starting path
521cf20 runqemu/mips: adjust runqemu script to support mipsel machine
6c401a9 slang: change char type to signed char in macros
e72157e gconf: Disable gtk support
6592209 rpm_5.4.9.bb: fix builds on systems with older libc
e5d3ed3 mkelfimage: Upstream fixed packaging issue so upgrade to e1e6a91
b1c2b57 package install failure on systems without /sbin/ldconfig
1f7f925 conf/machine: replace TUNE_CONFLICTS with TUNECONFLICTS
eb0cb7e perf: add perl, python to DEPENDS
8efb5fd linux-yocto: update mpc8315e-rdb linux-yocto-3.4 kernel SRCREV
89008d4 linux-yocto-3.0/meta-yocto: perf script fixes
8514aa9 linux-yocto-3.0/meta-yocto: perf script fixes
b1a6061 meta-yocto: mpc8315e-rdb change preferred version to 3.4
581b967 linux-yocto/3.0: perf scripting support
a3a697c bitbake: fetch2/__init__.py: Warn user if SRC_URI is using "proto" and not "protocol"
c26f6b2 bitbake: fetch2/bzr.py: Use "protocol" parameter to get the protocol
bd8d18f bitbake: fetch2/hg.py: Use "protocol" parameter to get the protocol
cf599d1 bitbake: fetch2/osc.py: Use "protocol" parameter to get the protocol
6a210e8 bitbake: bitbake: Abort build if runtime dependency conflict
3115501 connman-gnome: remove unused patches, they were all merged upstream
6382732 libgomp: add libgomp (openmp) library, and build for powerpc targets by default
b424a3a gcc: gcc-cross-canadian: use correct location for libraries for powerpc64
fd9a9a2 gcc-configure-common.inc: use --with-long-double-128 on powerpc to comply with ABI
38a0967 openjade-native_1.3.2.bb: fix typo and change the deps exclusion to correct var
ef8d669 dtc.inc: fix for libdir == /usr/lib64
82bdf46 valgrind: fix default.supp missing issue
125e702 directfb: disable imlib2 explicitly
5142a1e subversion: do_install failed (parallel issue)
8af21f1 gnupg: ensure deterministic build by disabling libcurl
6a98862 perf: add perf-tui feature
2dac207 perf: add perf-scripting feature
a8c3bc8 perf: add perf.inc
d668ed4 linux-yocto/3.4: perf, unionfs and yaffs2 fixes
7b31ae8 linux-yocto/3.2: perf: fix mips build
06348fe opkg: fix installation of dev / dbg packages
029e3ce bitbake: fetch2/wget: Use FETCHCMD_wget to provide the commandline and options
254488f bitbake: fetch2/cvs.py: Switch to use FETCHCMD_cvs and handle parameters in the fetcher itself
a5e31cb ccache: Ensure CCACHE_DIR is cleaned by do_clean task
064ef46 libxml2: Fix libzypp ansidecl related build failures
89ca570 bitbake.conf: Drop the remainder for the FETCH/CHECK/RESUMECOMMAND variables
addcefa bitbake.conf: Add passive-ftp option to the default FETCHCMD_wget
449732e bitbake.conf: Drop the old svn FETCH/UPDATE/RESUMECOMMAND variables
cf94f38 core-image-*.bb: Remove usage of EXTRA_IMAGE_FEATURES from some .bb files
adad292 core-image-*: remove copyright notices
d5f4227 core-image-minimal-dev: base on core-image-minimal
56e0835 libgsmd - remove
2e80a0b linux-yocto/3.2: perf scripting updates
90ad663 upstream_tracking: update boost
29aa1f3 maintainers: Update recipe ownership
041a0e8 bitbake: bitbake/cooker: Print which pkgs would be built in -g output
c857fa9 linux-yocto/3.4: perf scripting & unionfs fixes
17fcc39 psplash - Update to latest psplash version. LIC_CHKSUM Tweak
0c9195b kernel.bbclass: add non-santized kernel provides
cc646d8 connman: ship the empty plugins directory in the connman package
be696b3 connman: remove some obviously wrong (circa early-GNOME 2?) directories from FILES
6e41732 ncurses: fix packaging issue in multilib build
198d300 bluez4: fix packaging issue after update
6a60512 packagedata.py: Fix get_subpkgedata_fn for multilib
a294556 qemu-0.15.1: add patch to fix compilatation problems on powerpc
869d6f4 libxml-parser-perl_2.41.bb: fix MakeMaker issues with using wrong CC/LD/etc
2717309 utils.bbclass: add helper function to add all multilib variants of a specific package
fe5feba pseudo: Update to 1.3.1 (fixing chroot crash)
70067f0 grub-efi: Do not use help2man
7af1525 init-install: Clean up partition alignment
6f932f8 init-install: Correct ext2->ext3 typo in logging
ae18c85 init-install: Use swap_ratio in the calulation of swap_size
2fefa9c classes/license: fix manifest to work with deb
91a3a07 runqemu: fix support for ext4 rootfs images
24f02d5 runqemu: fix usage() help for MACHINE setting
2dee999 sanity.bbclass: the tmpdir can't be longer than 410
12c8d9d apt 0.7.14: runtime error: Method file has died unexpectedly
f06c1c3 apt 0.7.14: runtime error: filename too long (tmpdir length)
460119a curl: upgrade to 7.26.0
d090092 gcc-common: Don't use "is" for comparing strings, use "=="
e557af5 recipes.txt: Add entries for "recipes-rt" and "recipes-support"
254d225 pixman: upgrade to 0.26.2
da043d0 xinput: upgrade to 1.6.0
184959a libxi: upgrade to 1.6.1
a5180e4 libx11-diet: upgrade to 1.5.0
f013f72 libx11-trim: upgrade to 1.5.0
9d2e665 libx11: upgrade to 1.5.0
0ae1887 directfb-examples: upgrade to 1.6.0
7f906a7 directfb: upgrade to 1.6.1
e2b9acb multilib: Enable multilib remapping for SDK generation
f40ce3e package_rpm: Avoid duplicate package generation failures
54a18cc populate_sdk_rpm: Sync multilib configuration with rootfs_rpm
0e832ba rpm: Fix PACKAGECONFIG dependencies
e17ae2c gnutls: make sure native is patched for gettext version
7890697 lsbinitscripts: increase ALTERNATIVE_PRIORITY
d617051 initscripts: use update-alternative to handle file functions
fc17afa Upstream tracking partial updates
a7e2b56 upstream_tracking.inc: recipe upgrades and manual check updates
edeea67 upstream_tracking: Update manual checks and Header info
a40d398 documentation/bsp-guide/bsp.xml: Fixed referece to source directory
59a40f5 documentation/yocto-project-qs/yocto-project-qs.xml: edits to super user
cd0bc2d matchbox-panel-2: bump PR because libxcb-util soname was changed
64b20d1 startup-notification: bump PR because libxcb-util soname was changed
5051e98 bitbake: usermanual: Fix missing markup
b201616 documentation/yocto-project-qs/yocto-project-qs.xml: Some link fixes
9a4191f documentation/yocto-project-qs/yocto-project-qs.xml: Scrub and edit
e92e0c9 documentation/poky-ref-manual/technical-details.xml: Fixed various terms
2571a56 documentation/poky-ref-manual/faq.xml: Removed old YP Build Directory
229f7c5 documentation/poky-ref-manual/ref-structure.xml: log directory and typo
4239ff0 documentation/poky-ref-manual/ref-structure.xml: removed "/" from recipes.txt
cb2e0ee documentation/poky-ref-manual/ref-structure.xml: Edits to BitBake directory
ef098d5 documentation/poky-ref-manual/ref-structure.xml: Updated BitBake
d930230 bootimg: Use STAGING_KERNEL_DIR
b0510e5 documentation/poky-ref-manual/usingpoky.xml: added package-depends.dot
b502bc2 perf: remove unconditional python-ext install
39b5d50 dpkg 1.15.8.7: bad interpreter when long tmpdir
52c6977 netbase 4.47 -> 5.0
1e6343d documentation/poky-ref-manual/ref-structure.xml: Added meta/recipes-rt.
e0dc993 documentation/poky-ref-manual/ref-structure.xml: Added tmp/deploy/licenses
a8d7e14 netbase: update to ver. 5.0
d27b8dd bluez4: update to ver. 4.101
11a3e61 ofono: update to ver. 1.8
ad98a89 gst-plugin-bluetooth: update to ver. 4.101
84b0cf3 telepathy-glib: update to ver. 0.19.2
9d64d83 u-boot: make FILESDIR a shared setting via FILESPATH
68cdea6 linux-firware: bump PE because git SRC_URI was changed resulting in LOCALCOUNT reset
1367511 bitbake: data_smart: Fix multiple override interaction with append and prepend operators
bf9a8ec lib/oe/sstatesig.py: Exclude subversion-native from sstate checksums
e3b3aaf gcc: fix collect2 host contamination problem properly
3051f36 bitbake: runqueue.py: Fix recursive task pruning to only prune self referencing tasks
ee89e38 prexport.bbclass: Fix typo in warning: "AUROPR" -> "AUTOPR".
d83e034 lsbinitiscripts: Add glib-2.0 to DEPENDS list
fb8aaf6 qemumachines: make MACHINE_FEATURES append follow qemu.inc include
c964536 perf: add libexec/perf-core and contents
d4eaa2d perf: enable Perl binding
7a2cf86 perf: enable Python bindings
aeca651 perl: use @STAGINGDIR@ in config.sh
2cae5a9 perl: add @STAGINGDIR@ for config.sh substitions
7ebe4ca perl: keep original libperl location
39c819b mkelfimage: Add stable git build (initial recipe)
c9b01af image_types: Add elf image type
0a1d5f5 package.bbclass: enable the use of package_qa_handle_error
f47c151 oprofile: Change /root to /home/root
2933dc1 speex: use lib_package bbclass
5ce2100 gnutls: use lib_package bbclass
fb0b75a db: use lib_package bbclass
82b05d2 pulseaudio: use lib_package bbclass
b8d37a4 libacpi: use lib_package bbclass
7a16e34 lib_package: use PACKAGE_BEFORE_PN
0add8ba bitbake.conf: Add PACKAGE_BEFORE_PN to PACKAGES
68a8caa kernel: Add kernel headers to kernel-dev package
a0bbbdf linux-yocto-tiny: add KMETA specification
a3d231b linux-yocto/3.4: update preempt-rt to 3.4.4-rt13
5783db4 linux-yocto/3.4: v3.4.4 + configuration updates
60ea6f4 linux-yocto/3.4: add qemumipsel machine mapping
65d637b telepathy-glib: update to ver. 0.19.1
ef6e25a pcmcia-cs: Remove references to long-deprecated pcmcia-cs.
96ebfa7 lighttpd: upgrade to 1.4.31
5384eef xcb-util-keysyms: upgrade to 0.3.9
22801c1 xcb-util-image: upgrade to 0.3.9
bab167c xcb-util-wm: upgrade to 0.3.9
2d96a93 libxft: upgrade to 2.3.1
03c0c85 ethtool: upgrade to 3.4.1
e0ed10b libdrm: upgrade to 2.4.35
0ad5637 xcb-util: upgrade to 0.3.9
2f96fd0 xf86-input-synaptics: upgrade to 1.6.2
91a744e xf86-input-vmmouse: upgrade to 12.9.0
ddafc10 documentation/dev-manual/dev-manual-newbie.xml: Edits to submitting change
75d007b documentation/dev-manual/dev-manual-newbie.xml: edits to sending patch
bf753f8 documentation/dev-manual/dev-manual-newbie.xml: Fixed typo.
a7cf3cd documentation/poky-ref-manual/ref-variables.xml: Added link to PR
b64ad8b dev-manual: menuconfig now works properly
f7cce1b shared state memory -> shared state cache
9568530 dev-manual: correct SMP_CONFIG
257e61a dev-manual: tidy up "How to Submit a Change" section
dd5f6ae bitbake: fetch2/svn: Enhance to cope with subversion 1.7 upgrade
852266d bitbake: usermanual: Improve task dependency documentation to match reality
3488966 bitbake: runqueue.py: Allow recrdeptasks that have self references
5d79175 bitbake: Hob: fixed some variables not clean bug in detail page
86aeee9 bitbake: git: do not execute 'git remote prune'
5c581b2 meta/classes: Update recrdeptask fields for recursive dependency handling changes in bitbake
024d587 subversion-native: Enable subversion-native 1.7 and remove it from ASSUME_PROVIDED
bc6c985 poky-ref-manual: update mailing list info in ref manual
c3d6fb2 documentation/poky-ref-manual/ref-variables.xml: Fixed example.
5966b44 documentation/poky-ref-manual: Yocto Project scrub
7064538 documentation/poky-ref-manual/poky-ref-manual.xml: Removed comments
e70dc3a documentation/kernel-manual: Scrubbed the Yocto Project term
d779c83 documentation/dev-manual: Fixed "Linux Yocto" term
85673e5 documentation/dev-manual: Scrub for Yocto Project term
7606c30 documentation/dev-manual/dev-manual-bsp-appendix.xml: Yocto term scrub
b634676 task-core-tools-debug: Added openssh-sftp-server.
286b266 image/core-image: Handle conflicting IMAGE_FEATURES.
6121186 openjade-native: fix undefined Getopts error, use std namespace
8c87f25 base.bbclass: Add cross-canadian-${TRANSLATED_TARGET_ARCH} to the license exclusion list
b70c915 image.bbclass: Add support to build the SDK in parallel with the image
63c6f46 package.bbclass: Allow a package to skip per file dependency generation
6cb1387 libc-common: Allow -dbg package to append, and not just set package variables
b8bd56e autotools.bbclass: When configure fails, dump the config.log files the logs
b6cf8f9 u-boot: do not clobber PARALLEL_MAKE setting
feb06a0 u-boot: Don't make the -Os removal part of global settings.
01e891a populate_sdk: enable basic multilib support
66d3d3b populate_sdk_base.bbclass: Change to using task specific depends
41550ca populate_sdk: Allow for attempt only packages in the SDK
1d52711 populate_sdk.bbclass: Split into two parts
9870fbc Fix manual log file paths
bd2d601 core-image*sdk: Add kernel-dev to sdk images
cf65e4e linux-yocto-custom: Remove linux-tools
7449260 icu 3.6: do_install failed: Segmentation fault
44fe9de kconfig-frontends: New recipe
644ad4b documentation/bsp-guide/bsp.xml: Yocto term paring
58977a9 package.bbclass: Add missing PKGR, PKGV, PKGE and ALTERNATIVE variables from PACKAGEVARS
91a0772 package_deb: When searching for E:, anchor expression
4147d2e EXTRA_IMAGEDEPENDS is used to ensure things like qemu-native are built and these are not strictly dependencies of the do_rootfs task. This patch moves them to the do_build task allowing bitbake a little more flexibility about when things need to get built by.
1d9e129 kernel-arch: Remove test for long-dead arm26 architecture.
44b1803 irda-utils: Add missing "inherit update-rc.d" for INITSCRIPT_*
d53c80f site/common-linux: fix incorrect size of pid_t for apr
3a39cbc apr: add util-linux to DEPENDS for libuuid
bf04836 bitbake.conf: Tidy up a few comment typoes; no functional changes.
035503b documentation.conf: Improve PRIORITY documentation
9a4b266 runqemu: fix fedora pkg names when run fails
a5b2c1e bitbake: Hob: change 'run image' and 'deploy' Gui and work flow for building detail page
b3edfb1 build-appliance-image: rename from self-hosted-image
602808b linux-libc-headers-yocto: Do not include linux-yocto
347424e documentation/adt-manual: Adjustments to Yocto Project term
7a4cc0e mklibs-native: Upgrade to 0.1.34
552883c qt4e-demo-image: new description
d7bafd3 build-appliance-image: rename from self-hosted-image
934bb7b linux-yocto: Use INC_PR and move kernel require to linux-yocto.inc
11809e3 apr: Install apr-local libtool in build dir
c4c029a bison: link in librt on uclibc
56bcc2f uclibc-0.9.33: add posix_fallocate implementation
55e369d uclibc-git: Update for building systemd
e5c81d7 glib-2.0: Add missing dependency on virtual/libiconv
c5274b1 uclibc: Separate the bits between uclibc and uclibc-initial
cc6a65d eglibc: support mipsel little endian, filter out -march=mips32
a4d55aa eglibc-2.15: Update to latest on 2.15 branch
3916fb9 gcc-configure-sdk, gcc-configure-cross: Dont recompute USE_NLS
daed800 bitbake.conf: Add weak definition for USE_NLS
c27d535 libgcc: Remove unpackage unwind.h
6d96686 icu 3.6: dropp apply=yes from path
4d48398 local.conf.sample.extended: Add filtering function to archiver.bbclass
7afc6af documentation/poky-ref-manual/faq.xml: added FAQ on deleting tmp
5f36c2c documentation/poky-ref-manual/faq.xml: Clean up to ext. toolchain
060e7b4 documentation/poky-ref-manual/ref-variables.xml: Updates to TCMODE.
ffb7f52 documentation/poky-ref-manual/ref-variables.xml: Added link to TCLIBC.
8bcbd30 documentation/dev-manual/dev-manual-kernel-appendix.xml: Added branch step
2282764 documentation/adt-manual/adt-prepare.xml: Inserted note
4129d5d bitbake: runqueue.py: Handle multiple rdeptask entries
18e3b50 bitbake: fetch2: Revert the regexp removal for the type field and instead anchor regexp
c525c13 bitbake: test/fetch: Switch the comparision order to make test failures slightly clearer
b13951f bitbake: test/fetch: Ensure cwd is valud for the git clone
5fa6036 bitbake: runqueue: Reimplement recrdepends so it works more correctly
be22b92 bitbake: runqueue.py: Convert depends variable to use sets
edfb2ba bitbake: taskdata: Add gettask_id_fromfnid helper function
d498bd6 linux-yocto/3.0: update BSP descriptions to new kern-tools format
f64d68f bitbake.conf: disable ccache explicitly if it is not enabled
c3d8b10 archiver.bbclass: Add the function of filtering packages
fb4a1c8 libxml: disable lzma
d3343f7 gconf.bbclass: don't register schemas in the install stage
6b66a81 native.bbclass: correct PATH to have native-intercept be prepended
8c904eb linux-dtb: add multi-dtb build support
6c7fccb busybox: add correct ALTERNATIVE_TARGET for init.d/syslog
b8c9a59 systemtap: update to version 1.8
d7be5de linux-yocto/3.4: -rt build fixes + configuration audit (part2)
f6bc243 linux-yocto-rt/3.4: update qemuppc branch
3426c8b linux-yocto/3.4: update to v3.4.3
4f9f8c6 linux-yocto/3.4: update and categorize configuration options
641a709 kern-tools: add buildall and robustness fixes
41ed2e6 classes/image: Allow openssh empty passwords login.
2fa7732 mtd-utils: do not stage headers in sysroot
ea88444 mx: Upgrade to 1.4.6
bcc04b2 tiny-init: Basic init mechanism for poky-tiny
20a426b busybox: Introduce poky-tiny defconfig override
2a29b7d yocto-bsp: update yocto-bsp xorg.conf templates
cad078c yocto-bsp: update yocto-bsp machine.conf template
7c03f78 upstream_tracking: Update Upgraded and Manual Checked upstream
26e6b0a linux-libc-headers-yocto: update to v3.4 and remove unecessary code
58fcd84 linux-libc-headers-yocto: use kernel-arch to set ARCH
93d890f documentation/yocto-project-qs/yocto-project-qs.xml: Updated Fedora packages
123e4c2 documentation/poky-ref-manual/ref-images.xml: Fixed product name
a9f9eb2 documentation: Re-defined "Build Appliance" to mean the file
8ce8d25 sanity.bbclass: Increase LAYER_CONF_VERSION to match bblayers change
5e3a61b bblayers.conf.sample: Fix empty BBPATH entry warnings
4d76363 tcmode-default: Update gzip PREFERRED_VERSION to 1.15
67ee108 libtiff: Upgrade to 4.0.2
cf42eb9 libidn: Upgrade to 1.25
e178642 foomatic-filters: Upgrade to 4.0.16
4982a72 gnutls: Upgrade to 2.12.20
64af36d libtasn1: Upgrade to 2.13
d515502 resolvconf: Upgrade to 1.67
2a0e30f cracklib: Upgrade to 2.8.19
f679d15 libxml-simple-perl: Upgrade to 2.20
2ba070d libxml2: Update to 2.8.0
953d7e2 util-linux: Update to 2.21.2
e86032f sysstat: Update to 10.0.5
b2a5587 psmisc: Update to 22.19
a576f1a sqlite3: Update to 3.7.13
f80dfac distrodata: Fix missed VARIABLE name change
06fe8a9 qemu.inc: Fix packageconfig options
bd006a9 uclibc: Fix packaging to match the new package order
6e9606e linux-firmware: update to main repo on kernel.org
a01b7ce sudo: upgrade to 1.8.5p2
529d87e gzip: upgrade to 1.5
08e15c2 gcc: Remove csl gcc recipes
92e20d1 eglibc-2.13: Retire into toolchain layer
2ef14df gcc-4.6: Retire into toochain-layer
aecbfbc gpgme: updated to 1.3.2
0abfb69 runqemu-internal: qemu fails to run on ext2 image
7874440 xev: updated to 1.2.0
288dcf4 cml1.bbclass: Only delay exit if the command fails
3257a7c documentation/adt-manual/adt-eclipse.xml: Updated YP settings dialogue
13ae887 documentation/adt-manual/adt-eclipse.xml: Updated Yocto ADT Project item
9234b28 documentation/adt-manual/adt-prepare.xml: Re-worded toolchain generation
7341184 documentation/adt-manual/adt-eclipse.xml: Updated Yocto Project ADT item
c45ad31 documentation/adt-manual/adt-prepare.xml: grammar fix.
2e4bd35 bitbake: Fix for Hob bug #2323
b224ed2 bitbake: hig.py: use module tempfile to create temp file
72f04e7 bitbake: fetch2: Ensure star character doesn't end up in mirror tarball names
bd3fd17 bitbake: lib/bb/utils.py: remove unnecessary preserved variables
9334b0d bitbake: fetch2: Add new mirror syntax to simplify mirror specifications
e63dada bitbake: fetch2: Handle errors orruring when building mirror urls
a87aa7b bitbake: process: Improve _logged_communicate buffering
15a31a9 bitbake: taskdata.py: Add support for rdepends task flag
be98c1f bitbake: utils.py: Add function to set nonblocking operation on a file descriptor
e05b423 bitbake: git.py: Remove -l option, its not necessary
df929f4 bitbake: lib/bb/siggen.py: log when tainting the signature of a task
25441f4 bitbake: bitbake: tweak help text for -C slightly
eaf54b8 bitbake.conf/abi_version.conf: Update to use BasicHash signature generator
8b92304 layer.conf/bblayers.conf.sample: Fix empty BBPATH entry warnings
b876f42 guile: fix compilation on MIPS/PPC
6d0b60a sato-icon-theme: inherit the GNOME icon theme (Yocto #2594)
d1e5ce9 maintainers: Update for Transition
fa7c2b0 bitbake: fetch2/git.py: Optimize clone fall back when it is local
dee397a bitbake: ui/depexp.py: use the new progressbar in Hob
df0059b bitbake: fetch2: Update replace_uri to handle uri types explicitly
dd249eb bitbake: test/fetch: Add a couple of extra test cases
ad8d1d3 bitbake: test/fetch: Add in unit tests for uri_replace() and git premirrors
a627fe5 bitbake: fetch2: uri_replace() only consider ud.localpath where its a file
5484651 bitbake: fetch2: uri_replace() improve mirrortarball handling
83bbfa0 bitbake: fetch2: uri_replace() remove what amounts to a null operation and add some comments
196982a bitbake: fetch2: Add parameter handling to uri_replace()
bf85018 bitbake: fetch2: Remove basestring test and simplify uri_replace
a7d5c57 bitbake: fetch2: Simplify some looping constructs in uri_replace()
20649e9 bitbake: fetch2: Improve mirror looping to consider more cases
3f44176 bitbake: fetch2: Explicitly check for mirror tarballs in mirror handling code
f3fb4dc bitbake: fetch2: Split try_mirrors into two parts
927565c bitbake: fetch2: Ensure when downloading we are consistently in the same directory
3c8a561 bitbake: fetch2: Only cache data if fn is set, its pointless caching it against a None value
4a0dc38 bitbake: fetch2: Fix error handling in uri_replace()
85dc355 bitbake: fetch2/__init__: Make it clearer when uri_replace doesn't return a match
c072fa8 bitbake: bitbake: add -C option to invalidate a task and rebuild the target
5bd11a9 bitbake: bitbake: ensure -f causes dependent tasks to be re-run
abc0bef documentation/adt-manual/adt-prepare.xml: Added text about host gcc
f3e184a documentation/dev-manual/dev-manual-newbie.xml: Typos fixed.
a291d00 documenation//dev-manual: Typos fixed.
356ac1f documentation/poky-ref-manual/development.xml: Removed dbg and profile
b2f4ddd documentation/dev-manual/dev-manual-common-tasks.xml: Moved dbg and profile
6b8922d documentation/poky-ref-manual/development.xml: changed image name.
5f18bc5 evolution-data-server: updated to ver. 2.30_3
d4beac1 xinetd: Add default options.
a0ad64d Simplify "SRC_URI_append +=" to "SRC_URI_append ="
086a70567 connman-gnome: upgrade to 0.7, which works with connman 1.0
6afc231 connman-gnome: clean up runtime dependencies
1747ed4 connman-gnome: fix build depends (Yocto #2556)
84e5d58 connman: upgrade to 1.0
36f08d9 connman: add compat RPROVIDES for older packaging
89eebaa connman: rationalise configure options
1d86b2c gitignore: ignore build*/ entirely
984b0dc linux-libc-headers: use kernel-arch to set ARCH
c0b54eb gcc: Fix a case of sysroot with trailing / and gxx-include-dir leading slash
7fb442a gcc-4.7: Update to tip of gcc-4_7-branch since 4.7.1 has been out
50bc311 binutils: Enable plugins by default
e146139 binutils: Add with-sysroot to target binutils
be9756a uclibc-git: Upgrade to latest tip of master
d227070 recipes-kernel: remove linux-tools.inc
6b9c191 recipes-kernel: make perf a standalone package
a5b568e kernel: save $kerndir/tools and $kerndir/lib from pruning
9b8daa9 package_rpm.bbclass: fix incremental rpm generation
97dd7e1 opkg-utils: bump SRCREV
4abc933 gettext 0.16.1: Update FILES for post PACKAGE reoder
d6259dc libpcre: clean up FILE after PACKAGE reorder
d0c615e conf/bitbake.conf: fix reparsing after -p is used
66123b9 classes/cml1: ensure -c menuconfig forces a rebuild next time
e562052 openssl: add deprecated and unmaintained find.pl from perl-5.14 to fix perlpath.pl
262e5ac kernel.bbclass: pass KERNEL_VERSION to depmod calls in postinst
9ffec01 libpcre: Clean up FILES_* after PACKAGES reoder
ad130b9 libevent: disable openssl by default
948e3e4 PR bumps for PACKAGES reorder
6a5a4a1 curl: Clean up FILES_* after PACKAGES reoder
9bdb9c6 man-pages: Clean up FILES_* after PACKAGES reoder
b1ca0e3 hdparam: Clean up FILES_* after PACKAGES reoder
a0f804a grub: Clean up FILES_* after PACKAGES reoder
9aa4e69 libtool: add ${PN} in middle of package list to ensure .m4 get with ${PN}
30e52c5 webkit-gtk: remove /usr/libexec since it's empty
d421d03 js: clean up FILE after PACKAGE reorder
eed46b1 lttng-viewer: clean up FILE after PACKAGE reorder
2c11581 libidn: clean up FILE after PACKAGE reorder
d02f342 gtk-sato-engine: clean up FILE after PACKAGE reorder
d524486 freetype: clean up FILE after PACKAGE reorder
6d15bb2 gthumb: clean up FILE after PACKAGE reorder
a86e23e slang: clean up FILE after PACKAGE reorder
a07ee19 gnome-keyring: clean up FILE after PACKAGE reorder
43616aa procps: clean up FILE after PACKAGE reorder
28a1a0f cups: clean up FILE after PACKAGE reorder
b33b5e3 gettext: clean up FILE after PACKAGE reorder
461d0ab icu: clean up FILE after PACKAGE reorder
5658c12 groff: clean up FILE after PACKAGE reorder
52c72df libxml2: clean up FILE after PACKAGE reorder
28b6b28 libpng: clean up FILE after PACKAGE reorder
fbe245a db: Ensure the library version matches package version
e4f1184 gnutls: clean up FILE after PACKAGE reorder
1e53c0b gpgme: clean up FILE after PACKAGE reorder
14fde11 libgcrypt: clean up FILE after PACKAGE reorder
16d2c6e libgpg-error: clean up FILE after PACKAGE reorder
a28c118 libproxy: clean up FILE after PACKAGE reorder
c96179e libusb-compat: clean up FILE after PACKAGE reorder
4d881e9 pth: clean-up FILES list due to PACKAGE reorder
7a66997 taglib: correct location of taglib-config to -dev
da99f5d eglibc-package: Update PACKAGES and files based on new ordering
17d4fa0 pmutils: reorder file for correctness
fd259b8 bitbake.conf: add PN-bin and cleanup lib_package.bbclass
b11e5d7 lib_package: remove the -dev list
a5eb4d2 binconfig: add *-config files to the -dev package
f68cbf5 bitbake.conf: reorder PACKAGES list
504e373 curl: Use gnutls for target and openssl for native
e0a7054 perl: Allow perl to cross build and native build in a directory named "t"
83b53d3 libzypp: Fix build with uclibc
de8b25d lsbinitscripts: Add the header for functions.patch
05428da multilib.conf: Add the support of multilib for lsbinitscripts
993245d puzzles: upgrade to r9561
85c04b7 libzypp: Define OECMAKE_CXX_LINK_FLAGS when compiling for uclibc
c383a30 zypper: Fix build on uclibc
13136e4 rpm: pass lrt and lpthread to link step explicitly for uclibc
fd3e09c sat-solver: Fix build on uclibc
bdc73df rpm: Use link time check for libssp
eaedf2e rpm: Fix compilation on uclibc
5276472 site/x86_64-linux-uclibc: Cache definitions of guint32/guint64
cae148a uclibc_0.9.33.bb: Upgrade to latest git
6651761 debian.bbclass: invoke target objdump
85d7c01 tzdata, matchbox-session, mini-x-session: replace RCONFLICTS with RCONFLICTS_
79e4de8 recipes: replace CONFLICTS with RCONFLICTS_${PN}
0529f93 qt4-embedded: fix QT_ARCH usage in QT_CONFIG_FLAGS
bbd25aa mdadm: Don't depend on ansidecl.h header
6b93b86 directfb: fix Upstream-status -> Upstream-Status
a7f6b0a cleanup-workdir: update help text
3360a4f cleanup-workdir: only deal dirs related to current arch
21d84d2 cleanup-workdir: replace commands with subprocess
7dbc268 cleanup-workdir: update the way to check obsolete dirs
21bd455 meta-skeleton: add linux-yocto-custom reference recipe
eda6a52 libzypp: Fix build with uclibc
c16eddd busybox: Fix syslog configuration file
9890bf8 core-image-gtk-directfb, qt4e-demo-image: Remove module-init-tools from IMAGE_INSTALL list
a41c3e4 gcc-cross: argument list too long when do_install
4f65868 linux-yocto/meta-yocto: update yaffs2 and drop rc6
8cdb883 documentation/poky-ref-manual/development.xml: removed section
fef4f4e documentation/dev-manual: Moved temp source code mod into dev model
513af3c documentation/poky-ref-manual/development.xml: Removed Eclipse section
fa332a5 documentation/poky-ref-manual/development.xml: Removed toolchain dev section
91911f6 documentation/poky-ref-manual/ref-images.xml: removed links to section
45f26d5 documentation/bsp-guide/bsp.xml: Review comments to recommendations
363efd4 documentation/dev-manual/dev-manual-start.xml: Updates to pre-built section
857b2d4 documentation/poky-ref-manual/development.xml: Removed pre-built section
8f67927 documentation/bsp-guide/bsp.xml: Added note to BSP recommendations
0be4910 documentation/bsp-guide/bsp.xml: Updates to requirements section
4969df1 documentation/bsp-guide/bsp.xml: BSP recommendations section added
c29a721 documentation/kernel-manual/kernel-how-to.xml: Updates to showing changes
4bb7ef9 directfb: added missing Upstream-status
55a6587 pango: added upstream-status status.
4d8fa40 distrodata: cleanup after moving distro_tracking_fields
0cb6bc0 distro tracking files: Add seperated set of files
c8a22b7 strace: update to 4.7
6aabd47 beecrypt: add patch for build issue on Fedora 17
b42744f gcc-target: ensure target packages have the correct virtual package names
43c84ea eglibc: added ac_cv_path_ to CACHED_CONFIGUREVARS
ec07dfc quilt: added ac_cv_path_BASH to CACHED_CONFIGUREVARS
83fe2bb curl: enable ssl support
e90cfbd busybox: Add check for wifi/bluetooth to enable rfkill
2fa65dd opkg 0.1.8: do_fetch failed since no checksum specified
de4bd37 linux-yocto/3.4: create linux-yocto-rt recipe
d51d204 linux-yocto/3.4: update yaffs2 and drop rc6
1b112fa pybootchartgui: Fix the filename and add a default format
0ad3f75 pybootchartgui: split the output chart into multiple ones
bc5b86f pybootchartgui: make the build profiling in pictures
3d78bc1 pybootchartgui: add the original code
bc19f8b coreutils: Fix a typo in v6.9 (bracket not braket)
0affb56 libpcre: updated to version 8.30
066ec29 distro_tracking_fields: move to meta-yocto as seperate files
3f29273 gcc-configure-target: Fix sysroot option breakage I introduced (sorry)
4ff6160 methodpool: Improve method already seen error message
1faf025 fetch2/local: Ensure quoting is handled correctly from the url
d43d3b0 fetch2: Fix missing output from stderr in fetcher logs
ad78e3c Hob: fixed issue about 'select a base image' combo not sensitive
2295ef1 Hob: fixed an issue about no 'set_page' function in hob failed page show
79df635 image-writer: tweak some strings
d2bdfe0 ui/crumbs/hig.py: simplify subprocess call
a87ce43 ui/crumbs/hig.py: tweak strings
7f017ca connman: bump PR and add some comments
d8d95d1 sanity.bbclass: warn the user if BBPATH contains wrong entries
5a50eb1 webkit-gtk: Apply work around for all PowerPC targets
ca6d07c connman: make useradd parameters consistent with rootless X
5518a1a systemtap: update Upstream-Status and use correct syntax
e7d0a81 gcc-configure-common: Use build time sysroot for target gcc
9f47c0f lsof: Fix cross 32 -> 64bit ranlib host contamination problem
1a9ad7f poky-tiny: eliminate mtrace rdepends
6aff0d1 meta-yocto/linux-yocto: fix routerstationpro build
5ed855d openjade-native: Ensure we reautoconf the package
7e62e24 cmd1.bbclass: Ensure ncurses is built and used for menuconfig tasks
cc96daa qt-x11-free.bbappend: Update to 4.8.1
dfcfe11 qt4: Drop 4.7.4
d7b7f13 rpm: Ensure pkgconfig deps don't stray from the package being built
9786663 package_rpm: Verify that the package manifests are not empty
f182f53 createrepo: For compatibility w/ RPM 5.4.9 remove RPMVSF_NOSIGNATURES flag
43dd351 rootfs_rpm.bbclass: Update database configuration file
7fe15f0 rpm: Bump PR numbers on componets that require RPM
75c302c package_rpm: Add capability to directly query packageorigin
b81d788 ossp-uuid: Add oss-uuid package and RPM 5.4.9 integration
bc4a29d rpm: Upgrade RPM to 5.4.9
b2381b6 rpm: Upgrade RPM to 5.4.8 (db to 5.3.15)
99822cd gnomebase: add GNOME_COMPRESS_TYPE variable
60543b9 nasm: updated to 2.10.01
107b1b0 menu-cache: upgrade to 0.3.3
7d25922 ethtool: upgrade to 3.2
b2846ba tzdata: upgrade to 2012c
287fabd freetype: upgrade to 2.4.9
35c5a8c linux-libc-headers: set default LINUXLIBCVERSION to 3.4
a166085 v86d: Fix cross link using host-cross ar
616fab3 libnewt: Fix cross link using autoconf detected AR
d411e77 gitignore: add wildcard to match toplevel patch files
abcc436 augeas: Fix compilation failure
2215a96 task-self-hosted.bb,task-core-lsb.bb: Conditionalize pth inclusion
429004f cmake.bbclass: Add OECMAKE_C_LINK_FLAGS and OECMAKE_CXX_LINK_FLAGS variables
4b55c92 gcc-common: Replace use of TARGET_ARCH with TRANSLATED_TARGET_ARCH
53981ad gcc-common: Enable hardfloat ABI when target is arm
1a2f20d uclibc: Move to latest tip of master
2dcb935 gnupg-2.0.19: Depend on npth for uclibc
fb8fabb gpgme: Depend on npth for uclibc
de04115 npth: Add recipe
f6a4d74 libtool: Let -fstack-protector passed to link step
1988bc0 pth: Mark incompatible with uclibc
00330a3 binutils_2.22: Backport to fix bogus textrels
665f908 linux-yocto/3.2: fix meta SRCREV typo
0612cf3 hob2: create a standalone deploy image tool
7828e9e hob2: update DeployImageDialog for seperated tool
87ce7bd ui/crumbs/hig.py: check deploy process return value
0c99278 ui/crumbs/hig.py: remove extra spaces
0b6bb93 ui/crumbs/hig.py: fix run time error
ac7b964 ui/crumbs/utils.py: import module bb
574b5ec Hob: fixed the index issue when set actived item for base image combo
e91f1e2 Hob: Change 'run image' work flow and image detail screen as ui design
c0b9270 Hob: Interpret some special characters for label markup
25785d8 Hob: add versions for compatibility check between Hob and templates
efd9770 Hob: lower the limitation for PyGTK
9703dcb Hob: fixed a definition not match issue when click choose directflb in package page
c8c8d75 Hob: fix entry of recipe page can't be edited in case after clicked clear button
6ac1545 Hob: clear the repeated function get_kernel_file_name
7f806be meta-yocto: make 3.4 the default kernel for qemu*
70d7e13 linux-yocto/meta-yocto/3.2: fri2 and chiefriver machine updates
77d30c7 linux-yocto/meta-yocto: introduce 3.4 bbappend
5010afd linux-yocto/meta-yocto: add machine aliases for yocto BSPs
b6ceefc linux-yocto/meta-yocto: remove 2.6.37 bbappend
1c33c54 linux-yocto/meta-yocto: update to v3.2.18
c3d7493 linux-yocto/meta-yocto: update to v3.0.32
27c051f kern-tools: anchor KMACHINE test
7f44713 linux-yocto/3.0: add cedartrail kernel features
3290146 linux-yocto/3.2: fri2 and chiefriver machine updates
d0402c6 linux-yocto: add 3.4 recipe
9cf8501 linux-yocto: add machine aliases for yocto BSPs
b078910 linux-yocto: remove v2.6.37 recipe
b047060 linux-yocto/3.0: update to v3.0.32
5af9811 linux-yocto/3.2: update to v3.2.18
2da9191 kern-tools: remove unused code, meta branch and directory assumptions
ca0ce36 README: Correct documentation URL in top-level README file
e4f0176 gettext/shared-mime-info: Add missing patch upstream status field
ea2a850 rootfs_rpm.bbclass: save rpmlib rather than remove it
1e71397 apt 0.7.14: do_compile failed with gcc 4.7
9e7c915 apt-get 0.7.14: hangs at runtime
9a51999 archiver.bbclass: Reduce some duplication for function get_licenses
5be715a connman: Document the ACL-breaking sed
554afde connman: respect the 3g feature and enable/disable ofono support
1720705 insane.bbclass: Make ldd exec_prefix error reporting easier to read
570c542 gettext: install libgettextlib.a before removing it
5094da3 shared-mime-info: fix build race condition
3792f77 shadow-native: Disable nscd support
d56659e groff: Fix build on Fedora 17
c9c7fe8 beecrypt: disable java
6479164 runqemu-ifup: enable arp proxying
1a749e1 gnupg: disable CCID driver
038874c gnupg: add libusb to DEPENDS
47e954e telepathy-glib: update to 0.19.0
61e06d3 task-core-basic: drop portmap
f822034 rpcbind: add and use startup script, move binaries
fa3b18e systemtap: Unbreak build for systems with nss headers installed
df8f55a ltp: Add patch to correct failing build
a192569 pulseaudio: fix typo in the patch name, pulseaudo -> pulseaudio
ae6d342 lsbinitscripts: Missing popt DEPENDS
885e1f7 license.bbclass: optimize pkg runtime data
f25a6c0 license.bbclass: Adding PV to package.manifest
7f713b6 dbus: update to version 1.4.20
e618834 connman: just give xuser the extra rights it needs
34f819e archiver.bbclass: Improve the usability for the archiver classes
09a7dc9 generate-manifest-2.7.py: replace os.popen with os.unlink
d068a75 external-sourcery-toolchain: forcibly create usr/lib
b90cc2a tcmode-external-sourcery: pass -msgxx-glibc for x86
286a490 external-sourcery: extract src and dest sysroot paths from gcc
9205cba task-core-lsb: Add another initscripts to an lsb image
6e41674 lsbinitscripts: Patch file functions for confirming to an lsb image
d32f900 lsbinitscripts: Add initscripts to enhance init functions in an lsb image
718779e directfb-examples: upgrade to 1.5.3
96c65bd directfb: upgrade to 1.5.3
d0fac33 cpan.bbclass: Fix config error while patches to Makefile.PL
b1f7bb9 local.conf.sample.extended: Change the usage about arhiver.bbclass
0efe773 kernel.py: replace os.popen with subprocess.Popen
de4cdfd documentation/kernel-manual/kernel-how-to.xml: Updated to kernel 3.4
614308e documentation/dev-manual/dev-manual-kernel-appendix.xml: Comments removed
69536d4 documentation/dev-manual/dev-manual-kernel-appendix.xml: Updated Note
a23636b documentation/yocto-project-qs/yocto-project-qs.xml: pre-built example fix
230e325 documentation/dev-manual/dev-manual-bsp-appendix.xml: .bbappend example
31bfebd documentation/dev-manual/dev-manual-bsp-appendix.xml: Added note
ad93aae documentation/yocto-project-qs/yocto-project-qs.xml: Minor wording changes
fcea677 documentation/poky-ref-manual/ref-images.xml: images defined
0bf437b documentation/poky-ref-manual/ref-images.xml: Updated core-image-sato-dev
a13ad00 documentation/adt-manual/adt-eclipse.xml: Added not and updated version
3a062dd documentation/dev-manual/dev-manual-kernel-appendix.xml: Kernel example fixed
0957740 documentation: Added manual history for 1.3
b24d15c documentation/poky.ent: Updated for latest builds
9286a87 documentation/yocto-project-qs/yocto-project-qs.xml: Setup changes
348da93 webkit-gtk: Use glib as unicode backend to avoid browser crash
3e9f270 bitbake.conf: set an exclusion list for varflags in checksums
2f0303e bash: Update to new update-alternatives syntax
9bab122 bzip2: Update to new update-alternatives syntax
96a0135 kmod: Remove bashism from recipe
0b8d5da update-alternatives: Fix absolute symlink handling
b3e76b3 package.bbclass: Add warning about FILES containing '//'
8c2e3c9 layer.conf/bitbake.conf: Tweak PATH
534f319 bitbake: include varflags in checksums
43551f5 lib/bb/fetch2: ignore remote URIs when doing file checksums
bb81db6 cooker: report recipe being parsed when ExpansionError occurs
f0809ed cooker: fix UnboundLocalError when exception occurs during parsing
64f88bf lib/bb/data_smart.py: don't report variable in ExpansionError if not set
5a97523 hob: handle sanity check failures as a separate event
c8d78b2 Hob: add the 'build new' be as the primary action for 'Image detail' page
6609a81 Hob: Fixed a compatible issue for indicator icon view
cc3da12 HOB: 'str' object has no attribute 'close'
9b6d3f4 hob2: set beginning folders for FileChooserDialog
0d9e893 Revert "meta: replace os.popen with subprocess.Popen"
bc386b8 classes/sanity: fix a couple of grammatical errors in messages
0299499 ccache: Separate out into its own class
a92ff3a scripts/cp-noerror: Add a special copy function to fix autotools issues
b3e9a99 xz: updated to version 5.1.1alpha
d63298e qemu: Add an option to remove host sdl/gl checking
7a619c2 classes/sanity: send sanity check failure as a separate event for Hob
0fd6a47 foomatic-filters: update to version 4.0.15
42dec00 mtd-utils: Update to version 1.5.0
e95e077 man-pages: update to version 3.41
a8010cd classes/sanity: remove broken TARGET_ARCH check
b68e2d6 libpciaccess: upgrade to 0.13.1
7ed241c fontsproto: upgrade to 2.1.2
7bf02eb fontconfig: upgrade to 2.9.0
e8dac5a scripts/buildhistory-diff: add GitPython version check
1fe254f buildhistory_analysis: fix error when version specifier missing
5996b2b meta: replace os.popen with subprocess.Popen
d760fb9 scripts: replace os.system with subprocess.call
e40995e meta: replace os.system with subprocess.call
e4c3579 shadow-utils-native: remove unnecessary alternatives
9a686b3 kmod: use new update-alternatives
c17ae6f sysklogd: use new update-alternatives
5cbc486 psmisc: use new update-alternatives
ddcf94e iputils: use new update-alternatives
0b5c423 grep: use new update-alternatives
2851d75 cpio: use new update-alternatives
8a4a7a2 opkg: use new update-alternatives
6d76d52 tar: use new update-alternatives
76c08cc binutils: use new update-alternatives
cb2a93e util-linux: use new update-alternatives
18b6e5f psplash: use new update-alternatives
4ca029b ncurses: use new update-alternatives
07da870 dropbear: use new update-alternatives
3f810e2 coreutils: use new update-alternatives
92482cb busybox: use new update-alternatives
6b20156 openssh: use new update-alternatives
af3fc70 lrzsz: use new update-alternatives
b607fa7 sysvinit: use new update-alternatives
b630ee1 tinylogin: use BPN for alternatives
ad0f8b8 patch: use BPN for alternatives
4547096 less: use BPN for alternatives
7818699 mktemp: use BPN for alternatives
1a6f679 sed: use BPN for alternatives
079f2fb shadow: use BPN for alternatives
ae68cb6 time: use BPN for alternatives
1fa4e05 wget: use BPN for alternatives
4966bc5 which: use BPN for alternatives
e4449c9 update-alternatives.bbclass: Change from using PN to BPN
6ac7e9b update-alternatives.bbclass: Refactor the implementation
f28209d cooker.py: terminate the Parser processes
fcd8021 image.bbclass: Ensure ${S} is cleaned at the start of rootfs generation
0254e8d glib-2.0: Clean up OECONF flags into one variable
37cf162 libxml2/libxslt: Don't depend on ansidecl.h header
54cdbe6 ltp: Add attr to DEPENDS list
fed0638 binutils: Drop old/stale/broken csl recipe
de0d55c wpa-supplicant: don't let postinst fail when dbus-1 reload fails
d03e29f package.bbclass: Add additional debugging for dependencies
4f3f575 Updated distro-tracking-fields.inc
f887fd6 lttng-tools: updated to 2.0.1
02b91db lttng2-ust: updated to version 2.0.2
2f4eb46 avahi: fix install issue
bc56c04 make-3.81: fix build with automake 1.12
e9e2542 findutils-4.2.31: fix build with automake 1.12
dfbeec6 gawk-3.1.5: fix build with automake 1.12
58954a1 grep-2.5.1a: fix build with automake 1.12
8939db4 diffutils-2.8.1: fix build with automake 1.12
c170188 grub-0.97: fix build with automake 1.12
437f92c coreutils-native-6.9: fix build with automake 1.12
04bdcbe gmp-4.2.1: fix build with automake 1.12
2c90a0a libcroco: fix build with automake 1.12
204e2d6 libfm: fix build with automake 1.12
55e24a4 lighttpd: fix build with automake 1.12
244417d minicom: fix build with automake 1.12
a23a779 lrzsz: fix build with automake 1.12
133bff2 findutils: fix build with automake 1.12
2a952c5 glew: fix build with automake 1.12
625d974 libidn: fix build with automake 1.12
8d63ffe texinfo: fix build with automake 1.12
12f465d libcheck: fix build with automake 1.12
da1f0ef libmpc: fix build with automake 1.12
c4dde06 systemtap: fix build with automake 1.12
724f9ad libtasn1: fix build with automake 1.12
0d4d9bd shadow shadow-native: fix build with automake 1.12
2e45e31 libxml2: fix build with automake 1.12
85db7e7 rpm: fix build with automake 1.12
8512519 popt: fix build with automake 1.12
05fe6c0 mpfr: fix build with automake 1.12
fca50f0 gmp: fix build with automake 1.12
cd3c060 distro_tracking_fields: update information for ltp
cfc882e ltp: Upgrade LTP to version 20120401
ed14592 fontconfig-native: Be clear about FILE search path
277f18e wpa-supplicant: add wpa_supplicant.conf to CONFFILES and don't install it twice
45e6085 dropbear: fix include dependent PR generation
c071fd9 oe/process.py: remove it since it is unused and duplicated
70caf1e utils.bbclass: remove the unused oe_system
bbd07d1 opkg-nogpg: add file path
7f3ac86 sudo: fixed wrong `chmod` path
6b48551 bitbake.conf: add EXTERNAL_TOOLCHAIN to BB_HASHBASE_WHITELIST
af16b9f bitbake.conf: Improve wget timeouts
b52dfa2 lib/bb/fetch2: fix comments for verify_checksum
e6d9af1 bitbake/exceptions: Handle reports from the field of exception code failures
0b14db4 bitbake/utils.py: Ensure utils.which() returns full paths
2d3ff5e bitbake/cooker: Ensure matchFile returns full pathnames
f3a5ad1 Hob:fixed the issue of primary button is not an 'orange hob button'
994ce7b BBHandler: Tweak some data store access methods to the preferred syntax
6558abd qemu: disable vnc-jpeg compression
9180d38 qemu.inc: Remove mesa-xlib as PREFERRED_PROVIDER
f83cdef xserver-xf86-config: Add xorg.conf for arm,mips,ppc,sh qemu machines
71a4bf3 qemumachines: Enable xserver-xorg as default xserver
bdb1585 Update to distro_tracking_fields.inc
8604b4c xf86-input-synaptics: upgrade to 1.6.1
088fdc2 xf86-video-intel: upgrade to 2.19.0
43eb69b xf86-video-vesa: upgrade to 2.3.1
09928db xf86-input-mouse: upgrade to 1.7.2
3398915 xtrans: upgrade to 1.2.7
2312e14 libxt: upgrade to 1.1.3
40d230b xcb-proto: upgrade to 1.7.1
47ade55 recordproto: upgrade to 1.14.2
7a1eb3c scrnsaverproto: upgrade to 1.2.2
9dbfc17 xcmiscproto: upgrade to 1.2.2
f02e412 xextproto: upgrade to 7.2.1
0541ed4 kbproto: upgrade to 1.0.6
87ca28b xproto: upgrade to 7.0.23
27b6eaa libdrm: upgrade to 2.4.34
37cceb5 mdadm: upgrade to 3.2.5
019b9e9 valgrind: Enable valgrind for armv7
52c9511 gawk: update to 4.0.1
24038ec jpeg: update to upstream version 8d
319b6f2 glib-2.0: upgrade to 2.32.3
9ab9c52 sanity.bbclass: check sanity at BuildStarted rather than ConfigParsed
9509ed4 sanity.bbclass: catch an extra exception in check_create_long_filename
3898d08 sanity.bbclass: add extra information when SSTATE_CACHE unusable
13a86cb sanity.bbclass: add newline to check_create_long_filename failure message
2e12fcf sanity.bbclass: data.getVar(VAR, obj, exp) -> obj.getVar(VAR, exp)
1983045 sanity.bbclass: copy the data store and finalise before running checks
6a4c55d Revert "sanity.bbclass: check user can read and write to SSTATE_DIR"
e6de510 python: bump PR of packages after update of distutils.bbclass
dc290d1 distutils.bbclass: don't delete .pyo files
3db1525 netbase: merge init script updates from upstream
b099511 wpa-supplicant: fix packaging error since last commit
a397644 libnss-mdns: fix postinst scripts
dd42988 ppp: avoid host contamination
fce38e5 libtool: fixed parallel build related race
5022c3e ncurses: Avoid occasional builling failure when having parallel processable task
76e1d4a eglibc: package mtrace separately
bb4f829 rpm 5.4.0: respect to the arch when choose the alternatives
73538f5 package_rpm.bbclass: Fix incremental rpm image generation
66b0ece classes/base: add checksum file list at parse time
86d05a4 external-sourcery-toolchain: ignore GNU_HASH issues with its packages
f60b4cb Rename 'external-csl' to 'external-sourcery'
844df77 tcmode-external-csl: preferred external-csl-toolchain's gdbserver
23fd086 gcc: Grok for callconvention-hard to enable hard float
0fdd04f eglibc: Add ARM hf dynamic linker support
e108db7 gcc-4.7: Add knowledge about arm hf dynamic loader
49694d6 Hob: Adjust the progress bar and set 100% only when all is done.
799e076 build.py: Add support for log and run filename changes
63aaecb build.py: Add additional debug messages
d0de551 build.py: Cleanup exec_func_shell
c9e38ae build.py: Add a log to capture task execution order
094742b replace os.popen with subprocess.Popen
10a0f9e replace os.system with subprocess.call
358016f bitbake: support $BITBAKE_UI environment
8b8be74 bitbake: implement checksums for local files in SRC_URI
d7b818b bitbake: refactor out codeparser cache into a separate class
644b30a Hob: fixed the issue about the 'run image' page should have the primary bug
3ee1cfa Hob: fixed the line width of base image description view
0d210ff Hob: fixed the issue about bug 'running image' workflow and related view
374ad22 Hob: change the build failure scenario as ui design
39a9267 Hob: add '--select a machine--' and '--select a base image--' to GUI
532f96d fetch2: quote/unquote url paths
5c880fb Hob: Get image name internally when updating the image description
7690c45 Hob: Add filter for images listed in image combo
e069e53 Hob: reimplement the proxy page
33c4bf2 fetch2: Also exclude urls containing wildcards from checksumming for now
2219caa tune-mips64.inc: Add new tune file for mips64 big-endian
0d2b369 xserver-xorg: Fix build for mips64
21d5cf8 site/sh-common: Add missing caches variables to build glib-2.32
c141f96 netbase: Add interface files for qemumips64 and qemush4
f13ef77 runqemu: Add qemush4 and qemumips64 knowledge
4cbc27c libc-package: Add sh4 and mips64 to arch options
9ecb454 eglibc-2.15: Support mips64
8bc899a kernel-arch.bbclass: Map mips64{el} to mips KARCH
efcd382 binutils: Default to n64 when configured for mips64
6174900 gcc-4.6, gcc-4.7: Add support for building mips64 cross compiler
fbfa7b7 site: Add mips64 eglibc and uclibc site files
8262a67 insane.bbclass: Add mips64{el} to known machines
f99ac52 bb/fetch2/__init__.py: Don't try to compute checksums for directories
b4c8c74 hob: update required pygtk to 2.22.0 and gtk+ to 2.20.0
f9bffca lib/bb/ui/crumbs/[package|recipe]selectionpage: include button
f9aa3da lib/bb/ui/crumbs/imageconfiguration: fix combo boxes drop-down width
9e59dea lib/bb/ui/crumbs/hobwidget: use light text in HobIndicator
44a40f7 lib/bb/ui/crumbs/: replace custom HobNotebook
881b81f Hob:add function about clicked a row to load image file for 'my images' page
e80c1a3 Hob: Apply a line length to consistantly display image descriptions
05330d0 knotty2: return exit code
b0b9ee2 bitbake/fetch: Spell out which fetcher backends support and recommend checksums
311c68b bitbake/fetch: If checksums are available, check them for any file, local or remote
2f009e5 bitbake/fetch2: Improve visibility of checksum warnings when fetching from mirrors
d993f17 bitbake/fetch2: Improve stamp creation in mirror code
2a167cb bitbake/fetch2: Remove hardcoded file removal and use clean method
f24d8df sstate.bbclass: Make sure we don't have an empty fixmepath file
6d40b65 xserver-kdrive: Fix X server on PowerPC when built with GCC 4.7.x
0312f86 linux-yocto: policy cleanups
08a917a kern-tools: update LICENSE field to GPLv2
62c5e6a linux-yocto: intel BSP config changes
3e57b1d test-reexec: Add script to address issues when task re-execution
f3c07ac multilib.bbclass: Added multilib specific package QA.
0b2bbda multilib.conf: Added multilib support for kmod.
8de572f (libc-)package.bbclass: Added MLPREFIX to locale packages.
b7c1ac8 Revert "kmod: Use base_libdir for installing libkmod"
64a5952 xserver-xorg-lite: disable xmlto like full xserver-xorg does
c2df43b sanity.bbclass: check user can read and write to SSTATE_DIR
cedfe1d xf86-video-vmware: update package to 12.0.2
a97b9cb gnupg: Update to upstream version 2.0.19
3b481cc gnutls: update to 2.12.19
9477419 archiver.bbclass: Add two default set for avoiding error when missing assignment
441c1f8 meta/classes/sstate.bbclass: ensure sstate files have group R/W
6c0c7bb kernel.bbclass: add deploy link to KERNEL_IMAGETYPE
0c77200 oe.types: give the regex type more sane semantics
caee064 csl-versions: fix bb.process.CmdError reference
8da5fa8 xinetd: Update to 2.3.15
d4e2656 poky.conf: Change WARNS -> ERRORS
4910f28 fotowall: Add #include ui_wizard.h to ExportWizard.cpp
120e295 expat: update to upstream version 2.1.0
961db45 classes/mirrors.bbclass: Point snapshot.debian.org mirror to working location
f3ba3cb gdk-pixbuf: Fix lsb builds where dependency may be missing
9f930c5 tcmode-external-csl.inc: specify the path you couldn't find
fd4516c tcmode-external-csl.inc: Allow for overrides
75fcc7c sstate.bbclass: Optimize the generation and install path fixups
d09e4df bitbake.conf: Add CCACHE_DIR to BB_HASHBASE_WHITELIST
e50ecfb tcmode-external-csl: handle TUNE_PKGARCH=core2
7cf5fce tcmode-external-csl: avoid hardcoding a list of ia32 archs
ee245bd tcmode-external-csl: drop unnecessary cppflags/ldflags
cf0db01 gdk-pixbuf: Allow empty -xlib package
4416232 runqemu: replace bashism with working shell idiom
389de8a ofono: Add python-pygobject to ofono-tests package DEPENDS
12b4543 classes/rootfs_*: fix splitting package dependency strings
63ccc3f lib/bb/siggen.py: ensure dumped signatures have group R/W
fb7fa01 lib/bb/siggen: use open() rather than the file constructor
09b231d bitbake/tests: Add test of the git fetcher
36462d5 bitbake/fetch2/git: Set a default for the GITDIR variable
279d0af bitbake/fetch2/git: Don't set the branch name to None, that makes no sense
d93e43a gdk-pixbuf: Drop unneeded RPROVIDES
c73779d package.bbclass: Drop dubious use of packages[0] from do_split_packages and do_split_locales
8da9bbf oe-buildenv-internal: Fix BITBAKEDIR changes to work with existing autobuilder scritpts
e63b179 xserver-xorg: Fix build on powerpc
350a459 Add option to oe-buildenv-internal script to change bitbake location.
c08ee52 kernel-yocto: export GUILT_BASE to devshell
a246af9 package.bbclass: Drop EXPORT_FUNCTIONS use against mapping_rename_hook
a50af4d .gitignore: add /bitbake to the ignore list for external distributions
7816563 e2fsprogs: fix packaging error for libext2fs
b85bbc5 sstate.bbclass: Improve sstate_installpkg performance
31122b0 gdk-pixbuf: Add --with-x11 when building lsb image
f755582 task-core-lsb: Add libgdk-pixbuf-xlib to core-image-lsb
95be1d6 eglibc: fix build with poky-tiny distro
49afb62 typecheck.bbclass: update per current variable typing code
539849c uclibc.inc: uclibc rtld does support GNU_HASH
2e1974d eglibc: Add patch to fix /var installation location
b88a0e5 sanity.bbclass: Detect empty $PATH components too
4ba6a86 blacklist.bbclass: Refactor, use PNBLACKLIST[pn]
8664248 blacklist: fix typo in name
710f12e h264_qpel_mmx.patch: fix Upstream-Status tag
59ca57c bitbake/runqueue: Drop check_stamp_fn, it's obsolete and should not be used
be4f8e3 bitbake/runqueue: Drop check_stamps function, it is obsolete and unused
d48d8aa bitbake/runqueue: Fix 'full' stamp checking to be more efficient and cache results
4a2147f runqueue: drop unnecessary keys() in runqueue_process_waitpid
e2c58b4 runqueue: handle task exit due to signal/stop
6841abd Hob: change the workflow about click 'Run Image' to run directly after builded a qemu image
71b277a Hob: add group number show and 'bold' visible effect for Package view
a75562a Hob: add original url show function with the tooltip hyperlink for user
cb9be92 Hob: change the refresh icon speed to make it view clear
54a1cf2 eglibc: Add patch to fix /var installation location
9e26382 libc-package.bbclass: Add MLPREFIX while dynamically set RDEPENDS
c772981 image_types.bbclass: redefine EXTRA_IMAGECMD_jffs2 to leverage siteinfo
3c97806 zlib: upgrade to 1.2.7
3eff636 guile: upgrade from 2.0.3 to 2.0.5
1e6c116 openssl: Fix build for mips64(el)
36784da sanity.bbclass: Implement initial toolchain sanity checks
87b6197 qt4-graphics-system: set graphic system in profile instead of X11 session
f92f71c libatomics-ops: Make it build for SH4
bc84461 kmod: fix upgrade path from module-init-tools
6b5dbc8 kmod: Use base_libdir for installing libkmod
7f5e732 kmod: Update to .8+ release
8880407 kern-tools: fix do_patch errors
d36a73f kmod: include libkmod also from libdir
b186795 meta-yocto/linux-yocto-3.0: update branch mappings for new tools
bdc258e linux-yocto/3.0: mm/msync: tweak tmpfs patch for syscall msync
987c558 kern-tools: integrate minor fixes
921e67b linux-yocto: streamline support for multiple upstream repo types
6636f84 linux-yocto/3.2: configuration and pch merge
38467c4 pango: Fix modules load failure in multilib environment
c4a7a24 openssl: fix incorrect INC_PR
87741fd xcb-util-image: Add missing dependency on xcb-util
b0adc50 sed: Explicitly disable acl for deterministic builds
dd28963 libgdbus: delete from oe-core
110511c libsoup: delete from oe-core
4a15868 xeyes/pong-clock: Update recipes
67f6baa meta-demoapps: Remove except for xeyes and pong-clock
71e56f8 evolution-data-server: delete old 2.20.0 version
fb129e0 evolution-data-server: delete unused patch parallelmake.patch
cf4f260 dbus-glib: bump PR to rebuild after glib upgrade
4b88d37 distro_tracking: updates for upgraded recipes
cc9b58e opensp: upgrade to 1.5.2
e11c495 openssh: upgrade to 6.0p1
6497821 qt4: move functions from python to shell style
38da655 glib-2.0: Fix issues with libelf dependency creeping in
1826196 connman: Disable tist plugin on powerpc
f22cf1b image.bbclass,kernel.bbclass: Use kmod-native instead of module-init-tools-cross
884c7c6 module-init-tools: Delete
bc2c2fe kmod: disable man pages generation because we don't have working xsltproc
b4bc0a7 kmod: Add recipes
7903a28 libsoup: Fix for glib-2.0 2.32.2
22f682b libgdbus: Fix for glib-2.0 2.32.2
9355a8e evolution-data-server: enable deprecated glib API
3ea2db0 libsoup-2.4: upgrade to 2.38.1
b072f0c gobject-introspection: upgrade to 1.32.1
825e42f glib-2.0: upgrade to 2.32.2
2dc8246 glib-2.0: upgrade to 2.32.1
feee16b site/arm-common: alignment values for guin32, guin64 and unsigned long
3cd886a site/powerpc-common: alignment values for guin32, guin64 and unsigned long
7fecfa9 site/mips-common: alignment values for guin32, guin64 and unsigned long
7a49d88 Hob: Clear the building status if command failed
b478649 bitbake/tests/fetch: Add simple http fetcher tests
d4d4aab bitbake/fetch2/wget: Add fallback/default wget commands
c77bcfb bitbake/fetch2/wget: Remove unneeded function indirection and reindent
3d74d5e bitbake/fetch2/wget: Remove unnecessary use of OVERRIDES
c9da0e3 bitbake/fetch2: When unpacking, only use PATH variable if its set
2605ca1 bitbake/fetch2: Remove WORKDIR reference, should use passed parameter
3b78ad8 yocto-bsp: clarify help with reference to meta-intel
c0d92e5 yocto-kernel: use BUILDDIR to find bblayers.conf
db89f18 poky.conf: use correct version string for Ubuntu 12.04
203231f initrdscripts: Update install.sh to work with mmc devices
c048ff9 runqemu: be sh neutral
56f243e runqemu: minor tweaks
215a1ea runqemu: add and use error()
987bc36 runqemu: simplify process_filename()
e99f652 runqemu: use modern, single-char name of test(1)
97482d6 runqemu: Use OE_TMPDIR
0ff3fa7 gcc-4.6: disable cloog, change syntax to disable ppl
722d74e uclibc: Return correct endianness for mips64
23d1498 terminal.bbclass, oe-buildenv-internal: pass SCREENDIR environment variable
7b07812 conf/machine: Clean up configuration values.
7f11bbb bitbake: Fixup bitbake-selftest
12ebec4 bitbake: Add start of bitbake regression/self testing
2ee0d3f connman: enable TI shared transport plugin when wifi or bluetooth are requested
f60cdd4 busybox: port improvements to simple.script from Debian (udhcpc)
84eb62d busybox: remove unused patches for simple.script (udhcpc)
97911d3 gcc-4.6: explicitly disable ppl
3fd5d4d buildhistory: fix multiple commit of images and packages at the same time
dfd0116 bitbake/utils: Convert vercmp_string() to use vercmp internally
1c34d58 bitbake/fetch2: Fix spelling error in network access error message
ca8e06e fetch2/git: Allow file:// URLs without checking for network access
2e9bb9d gcc-package-target: add libexec for plugin
0de1832 kernel.bbclass: move kernel-vmlinux up in PACKAGES
76551e0 runqemu: Fix TAP='TUNSETGROUP: Invalid argument' by falling back to tunctl -u
e8005eb qt-4.8.1: fix creating /include directory in build host root
1cd72bd qt4: fix compilation issue
c9e9d8b site/ix86-common, site/x86_64-linux: alignment values for guin32, guin64 and unsigned long
74f4223 gtk-engines: fix build with glib-2.32
d3e0f1f nfs-utils: don't try to unload nfsd module
faf1a72 pulseaudio: disable tcpwrap by default
5e77a84 builder: Add Please Wait Dialog Box
188dff3 gnutls: Update to 2.12.18
68eadb4 xauth: Update to 1.0.7
a46a711 bigreqsproto: Update to 1.1.2
02a0202 xkbcomp: Update to 1.2.4
15c1c20 mc: Update to 4.8.3
034cebe util-linux: Update to 2.21.1
6362e9c cairo: Update to 1.12.2
db62a4f xhost: Update to 1.0.5
667ef5b xmodmap: Update to 1.0.7
fa7cd14 libtasn1: Update to 2.12
0d47891 resolvconf: Update to 1.65
0432cc1 distro-tracking: update as per recent recipe upgrades
7b08f6a9a1 python: upgrade from 2.7.2 to 2.7.3
4f4ab8b gdb: upgrade from 7.4 to 7.4.1
d911601 quilt: upgrade from 0.51 to 0.60
754667c makedepend: upgrade from 1.0.3 to 1.0.4
8dbb577 tcmode-external-csl: use the existing precompiled locale files
9c62f63 libc-package: rework ''precompiled' locale handling
b9918a3 tclibc-eglibc: drop hardcoded locale-base-en-us/en-gb
1fbde90 external-csl-toolchain: update SUPPORTED to match toolchain
fa51417 external-csl-toolchain: cleanup, simplify, use base_libdir
6b20562 external-csl-toolchain: silence .a/.debug QA warnings
6826ffe external-csl-toolchain: split out a libstdc++-staticdev package
c44aca8 csl-versions.inc: capture version in signatures
df91469 base.bbclass: use isinstance for base_eventhandler
5d540ca bitbake.conf: shift build config summary control to here
b877b1a libsndfile1: use PACKAGECONFIG for alsa distro feature
a8bd795 libpcap: use PACKAGECONFIG for bluetooth distro feature
f855c3e distcc: use PACKAGECONFIG for x11 distro feature
67228ab mesa: add missing flex-native/bison-native deps
98f21d6 create-recipe: base on autospectacle.pl to create recipe file
a5e76f3 autospectacle.pl: pull it from meego as a base
845bcf0 libgcc: Add MLPREFIX to sanity check skip
d89f7b9 documentation/Makefile: Fixed figures publishing bug
004a1f3 documentation/yocto-project-qs/yocto-project-qs.xml: added quotes
44be9bf documentation/dev-manual/dev-manual-kernel-appendix.xml: grammar fix
96645d1 documentation/dev-manual/dev-manual-kernel-appendix.xml: Removed KMACHINE
257fd0d documentation/dev-manual/dev-manual-kernel-appendix.xml: updated KSRC
a22b2a8 documentation/dev-manual/dev-manual-kernel-appendix.xml: added quotes
71f8025 documentation/dev-manual/dev-manual-kernel-appendix.xml: kernel machine update
c6a0cc9 documentation/dev-manual/dev-manual-kernel-appendix.xml: 3.0 to 3.2
ec4cb41 documentation/dev-manual/dev-manual-kernel-appendix.xml: formatting fix
6a415d2 documentation/dev-manual/dev-manual-kernel-appendix.xml: altered example
505e125 documentation/dev-manual/dev-manual-kernel-appendix.xml: updated cpuinit
5a4dc0f documentation/dev-manual/dev-manual-kernel-appendix.xml: output updated
9c6e16d documentation/Makefile: Added denzil specific .PNG file logic
db3de06 documentation/dev-manual: New figure just for denzil
7fd4991 documentation/dev-manual/dev-manual-bsp-appendix.xml: updated hddimg example
9770d73 documentation/dev-manual/dev-manual-bsp-appendix.xml: BBLAYER update
8596fb0 documentation/dev-manual/dev-manual-bsp-appendix.xml: wording updated
fbbe63c documentation/dev-manual/dev-manual-bsp-appendix.xml: mymachine.conf
d5198e6 documentation/dev-manual/dev-manual-bsp-appendix.xml: recipes-kernel update
3f9f899 documentation/dev-manual/dev-manual-bsp-appendix.xml: 3.2 for 3.0
e96c33b documentation/dev-manual/dev-manual-bsp-appendix.xml: added layerdepends
c7f56de documentation/dev-manual/dev-manual-bsp-appendix.xml: changed kernel
5b1738e documentation/dev-manual/dev-manual-bsp-appendix.xml: Output updated
726c279 documentation/dev-manual/dev-manual-bsp-appendix.xml: Bad variable
1abb969 documentation/dev-manual/dev-manual-bsp-appendix.xml: Added link
6f74c60 documentation/dev-manual/dev-manual-bsp-appendix.xml: typo corrected.
4d62356 documentation/dev-manual/dev-manual-bsp-appendix.xml: Bad variable
23eff79 documentation/dev-manual/dev-manual-model.xml: Fixed a bad link title.
52e4e82 documentation/dev-manual/dev-manual-model.xml: Better wording.
b85c4e5 documentation/dev-manual/dev-manual-model.xml: Added BitBake
b374926 documentation/dev-manual/dev-manual-model.xml: Fixed poor references.
065d5e3 documentation/dev-manual/figures/kernel-overview-3.png: Removed file
ab62371 documentation: release-specific figure needed for denzil in dev-manual
8cd58de documentation/dev-manual/dev-manual-model.xml: Wording change
7166e7d documentation/dev-manual/dev-manual-model.xml: Updated wording for list
2ffb797 documentation/dev-manual/dev-manual-model.xml: BSP Layer step updated
2329826 documentation/dev-manual/dev-manual-model.xml: Fixed link
8273cc0 documentation/dev-manual/dev-manual-common-tasks.xml: Font corrected.
6830a21 documentation/dev-manual/dev-manual-common-tasks.xml: Section name fixed.
6fe0548 documentation/dev-manual/dev-manual-common-tasks.xml: fixed path
6adda78 documentation/dev-manual/dev-manual-common-tasks.xml: link and output fixed
6f588de documentation/dev-manual/dev-manual-start.xml: shell output examples updated
d485185 documentation/dev-manual/dev-manual-start.xml: updated output for bare clone
661acae documentation/dev-manual/dev-manual-newbie.xml: Tag example fixed
88b3ff0 documentation/dev-manual/dev-manual-newbie.xml: Fixed branch example
0bb47e8 documentation/dev-manual/dev-manual-newbie.xml: Link added for TOPDIR
c8953cc documentation/dev-manual/dev-manual-intro.xml: Hob and BA added
491b291 documentation/dev-manual/dev-manual-start.xml: Misc fixes
5bcbfdb documentation/yocto-project-qs/yocto-project-qs.xml: Package requirements
0cd29aa documentation/dev-manual/dev-manual-common-tasks.xml: Fix cusomizing example
0c243d3 Update version to 1.15.2 (correspdoning to Yocto 1.2 release)
ba27fd8 eglibc-package: remove /var
5ef8c0b Fix a couple of missing Upstream-Status
84fe5c0 distro_tracking_fields: Change for ofono, iptables, etc
2227c5f alsa-tools: update to 1.0.25
e3a5089 opkg-collateral: import fixes from OE-Classic
275c2f8 opkg-utils: bump SRCREV for Packages cache fix and other fixes
76546d1 xorg: add more native BBCLASSEXTENDs from meta-oe
60e2345 busybox: Pass HOST_CC_ARCH through CONFIG_EXTRA_CFLAGS
cde6bce gdb: Add support for building gdb target for SH4
cc18e7c pcmanfm: Add sh3/sh4 to supported hosts
b11dc75 gcc-cross.inc: Fix cross testing script
3391541 gdb: Dont need lttng-ust for SH4
551f5d1 musicbrainz: Specify libpthread on cmdline for uclibc
1797037 gettext,m4: Add -lrt to LDFLAGS for uclibc
d1dfd24 glib-2.0: Dont disable iconv for uclibc
2baaea2 uclibc-0.9.33: Update to tip of 0.9.33 branch
2fc2dba uclibc-git: Update to latest git tip
df13d07 tune-sh4.inc: Fix spelling of big-endian feature set
88bb7ce ofono: upgrade to 1.6
813bbb8 iptables: upgrade to version 1.4.13
2e14c61 bluez-hcidump: upgrade to version 2.4
39ead67 telepathy-glib: upgrade to version 0.18.1
0597a49 telepathy-mission-control: upgrade to version 5.12.0
3d3726a gst-fluendo-mpegdemux: upgrade to version 0.10.70
f39ba52 qt-4.8.1: Fix compile failures on qemux86
c2e4b5d tcl: fix target recipe build issue on older distros
9da5a7b tcmode-default.inc: Update to eglibc 2.15 everywhere
4a0c704 package_rpm: Only rebuild the indexes if the packages have changed
53cf1a8 xorg-app: Use ${libdir} and ${datadir} for packaging.
e38bc26 avahi: not using hard coded libdir.
3ed11d6 popt: Fixing pkgconfig file installation issue.
7670afc qt4: Make 4.8.1 the default version
6723f6b qt4: Add missing patch headers
69dc3c3 Qt 4.8 GCC 4.7 fixes
e3bafe8 xf86-video-vesa: Add recommendation for xserver libint10 module which this driver needs
b67fccc package_rpm.bbclass: Replace shell provides/requires script with python version
c1c9144 mesa: Fix mklibs patch to simply remove troublesome uname usage
36361c0 tcmode-default.inc: Default to gcc 4.7
0611c3c gcc-package-sdk: Package plugin files generated by gcc-4.7
8250ca8 gcc-4.7: Do not use --with-header option for cross-gcc
9f32853 gcc-4.7: Let cpp specs honor include searches in relocated install tree
8e6a742 gcc-4.7: Use full relative path in require directive
38e961a libgcc-4.7: Package libgcov nativesdk correctly
79a5da9 gcc-4.7: Lower the internal consistency check level to release
529173a gcc-4.7: Disable cloog and ppl
4155ed4 gcc-package-target: Add the dangling files to specific packages
e6716c5 gcc-crosssdk-intermediate: Use --with-native-system-header-dir for 4.7
0e70f54 gcc-cross-canadian_4.7.bb: Override ARCH_FLAGS_FOR_TARGET
e06d1f2 gcc-4.7: Define own do_configure_prepend
aafa590 gcc-4.7: Add recipes
173f424 gcc-configure-common.inc: Use libc-uclibc override
1dd0545 gcc-4.6: Specify complete paths in require directive
85f8b5c gcc-4.6: Remove redundant overrides
271e4e0 libgcc_4.6: Package libgcov nativesdk correctly
9ce94ea gcc-configure: Render --with-local-prefix harmless
f7337ee gcc: Stash the gcc-cross builddir to reuse in libgcc and gcc-runtime
f66cc57 gcc-configure: Pass distinct target flags
49aeaa3 tcmode-default: Use SDKGCCVERSION ?= "${GCCVERSION}"
71b78f0 classes: Add recipe class to overrides
c47a869 netbase: Correctly set FILESEXTRAPATHS to include the version
a3d15ff poky-floating-revisions.inc: Catch up with eds-dbus rename
844149d bitbake.conf: use TUNE_PKGARCH instead of TARGET_ARCH in SDK_NAME
8809f2b xev: move from meta-demoapps
e3a6524 quilt: fix perl path in target perl scripts
c2b663f boost: Ensure we use our user-config.jam file
391ffb0 uclibc SDK not including libpthread_nonshared.a
4129635 evolation-data-server: Rename from eds-dbus
cc34134 u-boot: update 2012.04 to 2012.04.01 release
1b6cba6 u-boot-mkimage: update 2012.04 to 2012.04.01 release
967bd67 u-boot-fw-utils: update 2012.04 to 2012.04.01 release
baf99e6 distro_tracking_fields: manual checks for some recipes
0f95925 runqemu-ifup: enable ip masquerading for QEMU NAT addresses
2874efa openssl: upgrade to 1.0.0i
34e6d29 libpng: upgrade to 1.2.49
949f0ac python: Add patch to avoid warning about sunaudiodev module
27cd16f python: Add patch to avoid warning about _tkinter
3d82844 python: Add patch to avoid warning about bsddb module
1174fa7 python: Add patch to search for db.h in inc_dirs and remove warning
fcb368f python: Add patch for 64bit platform
77a3de5 boost: set python-root correctly
931910c {kernel, module}.bbclass: don't run depmod for module packages during do_rootfs
d7a6e09 kernel.bbclass: unify white spaces
03d978b kernel.bbclass: merge uboot_mkimage improvements from meta-oe
7ad4936 utils.bbclass: Testing via env in create_wrapper is a nice idea but breaks things
0816a3f libproxy: fix compilation with gcc 4.7
e79ecb1 distro_tracking: manual check updates
fb65e5b u-boot: add 2012.04 release
8545bea u-boot-mkimage: add 2012.04 release
79591eb u-boot-fw-utils: add 2012.04 release
01d57e6 u-boot.inc: fix compilation when using 'gold' as linker
8f0517a dpkg-native: fix deb-based rootfs construction failure on Fedora 16
2b05d35 bootimg.bbclass: Tweak iso images to become hybrid images
c65dc38 kernel: Fix packaging issue
8b6f915 distro_tracking: Update Manual Check
74b77be sqlite3: Upgrade to 3.7.11
6acd250 lame: Upgrade to 3.99.5
db6a6e7 sysstat: Upgrade to 10.0.3
b4d6ced quilt: move empty quiltrc to native sysconfdir
67fbab3 gcc: Add plugins package for ARM, fix /usr/incude packaging
08920d7 xserver-kdrive: Add xkb to existing docs list
af7caf9 libgcc: Package additional *crt*.o files for PPC
96268a4 binutils: add embedspu for ppc builds
898e1bf bluez4: make alsa support conditional upon DISTRO_FEATURES
b890955 bdwgc: Set ARM_INSTRUCTION_SET to "arm"
c312cf7 qt4-x11-free: enable -accessibility and -sm
688b1ca gthumb: Disable parallel make for gthumb install
6a39076 console-tools: Use update-alternatives
a253b0e kbd: Use update-alternatives
469a4b9 gzip: Use update-alternatives class
46ffeed findutils: Use update-alternatives
f264a10 shadow: Use update-alternatives
f517fb8 net-tools: Use update-alternatives
f8d6a50 hdparm: Use update-alternatives
967442e wpa-supplicant: move wpa_passphrase to bindir
81c02e0 wpa-supplicant: remove unused files
84fce2a python: use PKGSUFFIX for libpython2
4b3edb9 connman: backport test script fixes
c85de4b connman: Fix linking with gold linker
3fd422e augeas: Add libxml2 dependency
9f17530 automake: upgrade from 1.11.2 to 1.11.3
54a6f84 qt4: move from 4.8.0 to 4.8.1
343c85f libusb*: import native support from meta-oe
e910451 pango: import native support and --disable-introspection from meta-oe
e1d82bf tiff: import native support from meta-oe
009fa28 cairo: import native support from meta-oe
6ae4d4f pixman: add native support and perl-native to DEPENDS from meta-oe
1408f19 librsvg: import native support from meta-oe
755256c xcb-util-render: Add recipe that provides libxcb-render-util
43ed8bb xcb-util-image: Add recipe that provides libxcb-image.
fdc948f xcb-util-keysyms: Add recipe that provides libxcb-keysyms.
3bf4f5b xcb-util-wm: Add recipe that provides libxcb-icccm and libxcb-ewmh
99f4b6f xcb_util.inc: Remove packaging and modify SRC_URI for multiple ${BPN} names
2a4ccf5 xf86-input-evdev: Upgrade to 2.7.0
8e1d23d xf86-input-vmmouse: Upgrade to 12.8.0
c45085e xf86-video-vmware: Upgrade to 12.0.1
492a58c self-hosted-image: Update poky revision to point at the 1.2 release branch
cd591cc self-hosted-image: Update poky revision to point at the 1.2 release branch
f6864c1 sanity.bbclass: Add a new case to issue sanity_check()
2a6e1b0 Hob: Issue sanity check after parse is completed
544553b Hob: Add proxy setting into setting's md5
86abb36 event.py: Add SanityCheck and SanityCheckPassed events
f52d2dc self-hosted-image: Update poky revision to point at the 1.2 release branch
bd4b249 pseudo: PR bump.
f79aa01 documentation: Updated Manual Revision Tables again.
fd7c1df documentation: Replacements for "1.1" and "edison", etc.
564e311 documentation: Manual Revision Tables updated
73a2db9 documentation/yocto-project-qs/yocto-project-qs.xml: Added Build Appliance
1450c9e documentation/dev-manual/dev-manual-common-tasks.xml: removed kernel26
6b64283 documentation/poky-ref-manual/ref-images.xml: added link
4029726 scripts/hob: disable sanity checks when launching
4a22431 sanity.bbclass: add variable to disable the sanity checks
3639c6a python: Fix various contamination issues leading to broken/missing c modules
1ee9588 bitbake.conf: Add a STAGING_BASELIBDIR variable that recipes can use to find base_libdir
7ddb8c8 hob: enable sanity checks after launch
fb0d7fc self-hosted-image: Update poky revision to point at the 1.2 release branch
9018cc1 poky-tiny: Drop now unneeded DISTRO_FEATURES_LIBC_TOOLCHAIN (after gettext fix)
939e694 initramfs-live-boot: Disable unionfs until its issue with the system rootdir are resolved
604fc2a pseudo: Drop nativesdk wrapper and link against old memcpy symbol
ea3db01 pseudo: Fix bashisms
6123ee0 package.bbclass: Ensure kernel modules get stripped
6e5cb40 gettext.bbclass: Ensure we don't overwrite other DEPENDS_GETTEXT values
a4d913d qemu: Backport a patch to solve SSE2 instruction emulation issues
1a03b7d documentation/bsp-guide/bsp.xml: spelling corrected.
16645cc documentation/poky-ref-manual/ref-images.xml: Added self-hosted image
8da833f self-hosted-image: Update poky revision to point at the 1.2 release branch
647238f poky.conf: Update post release branching
d233c90 packageinfo.bbclass: A workaround for RPM architecture renaming
b765139 lsb: Fix PR bump, fix bashisms, correct dependency issue, tweak package description
d220e07 classes/sanity: import regular expression module in SuSE distro check
f4eed2b classes/sanity: trim trailing newline when reading /etc/redhat-release
d73e41f conf/distro/poky.conf: set SANITY_TESTED_DISTROS
5b78c7d libproxy: remove dependency on gconf when x11 not in DISTRO_FEATURES
abddce3 qemugl: make postinst run at first boot
a8c668c self-hosted-image: remove BB_NO_NETWORK and update Poky SRCREV
9656762 task-self-hosted: Add LSB for distro info
8e53c8c lsb: Add DISTRO Info to /etc/lsb-release file also add util-linux to DEPENDS
375e950 linux-yocto/meta: remove kernel config audit warnings
a230410 linux-yocto/meta: beagleboard: disable CONFIG_PREEMPT
0f8c8c8 linux-yocto: .diff is a valid patch extension
bb29296 matchbox-wm-2: Fix incorrect update-alternatives
fcd707e lrzsz: sz, sx and sb were linked incorrectly
20ff9db lib/bb/ui/crumbs/recipeselectionpage: fix type availabel->available
720fe9e meta-yocto: remove kernel26 machine feature usage
8e0751a yocto-bsp: remove kernel26 machine feature from templates
b9553be libproxy: Allow to build in non-gplv3 configuration
80e7bb8 gst-plugins-bad: Add missing PR bump after curl change
ad229f8 qemu: Disable curl explicitly, its not in DEPENDS
1e190ee sanity.bbclass: If the sanity tests fail, don't mark them as complete
8cc3b24 perl: fix re-execution of compile task
6004dc8 avahi-daemon: fix missing init script links
04d6aa1 bitbake-layers: hide deprecation warnings
993c467 hoblistmodel.py: description for selfcreated image
139a91d Hob: Set the "stop" button insensitive before hide it
c50d8b7 Hob: Enlarge the upper value of image size
c276557 data_smart: Improve the calculation of config hash
a6820f4 documentation/dev-manual/dev-manual-common-tasks.xml: Fixed example
cf05f09 poky-tiny: Separate the libc features required for meta-toolchain
c936fca bitbake.conf: Add PARALLEL_MAKE to BB_HASHBASE_WHITELIST
a228051 libzypp: add libproxy to DEPENDS
51f9cb0 distrodata.bbclass: fix comment typo
5612bf3 flex: backport Debian patches to fix generated code warnings
a5afc58 connman-gnome: fix segfault on connect
b6cbf1e automake-nativesdk: fix builds on fedora 17
5934845 autoconf-nativesdk: fix builds on fedora 17
ca14115 glib-2.0: fix builds on fedora 17
b99e2f2 perl: fix re-execution of patch/configure
8046fd4 core-image-sato-sdk: typo in DESCRIPTION
d2fca3d core-image-rt-*.bb: require munges DESCRIPTION
15b1606 autogen-native: Fix sstate relocation issue when reusing libguile
5326847 Hob: fixed a little view issue about package selection page
e966ae1 Hob: add the parent window to 'binb' popup window for managing it
6d7aae9 Hob: fixed the issue that the notebook overlay-scrollbar is overlapped
d5a9ff4 Hob: Fix contents in imagedetailsscreen
e8ab6ab meta-yocto: Move OELAYOUT_ABI definition to poky.conf
e737d01 bitbake.conf: Include abi_version.conf in a early stage
d1eba59 Multilib: Fix RDEPENDS in libc-package.bbclass, useradd.bbclass...
f139832 opkg-config-base/poky-feed-config-opkg: Always use ALL_MULTILIB_PACKAGE_ARCHS to build arch list
d431ef2 dropbear: Allow tasks to be safely re-executed
388bae1 docbook-utils-native: Fix re-execution of the unpack task
23f4288 sgml-common: Fix re-execution of the compile task
469d73a wget: Fix re-execution issue
ccc2b23 python: Fix re-execution problem due to patching configure and configure.in
2ddf7d3 gcc-configure-common.inc: Stop gcc looking at build system paths
f580ac6 gst-plugins-bad: add curl as build dependency
239e8b9 net-tools: Fix do_patch to be re-executable
dcaea14 man-pages: Fix to allow re-execution of tasks
f562e2a pseudo: Ensure the correct libraries are used at runtime
5c006a4 unfs-server: Fix do_configure so it can be re-executed safely
2e01a44 Hob: add exception handling
e3e6d2a Hob: Simplify the init process
74211e0 Hob: Handle NoProvider event in runningbuild module
a5210e4 guile: Fix binary relocation issue for precompiled guile objects
d979ee0 connman-gnome: connman 0.79 API fixes
9ff001c Hob: reset user recipe selection and package selection after settings are changed
62c908c Hob: remember layers and settings between Hob sessions
58544de grub: Add missing dependency on autogen-native to avoid build failures
4831503 distro_tracking: add entries for several new recipes
c393309 distro_tracking: add some additional DISTRO_ALIASES
d91b3f7 yocto-bsp: fix x86_64 tuning for qemu arch
0258ba5 yocto-bsp: fix multi-provider error in qemu arch template
774afe8 yocto-bsp: fix qemuarch test for xserver-xf86-config.bbappend
6f527e2 yocto-bsp: enable property value display of nested properties
0a4a757 mulitlib.bbclass: Ensure correct value of ALL_MULTILIB_PACKAGE_ARCHS is preserved
6ea6fac update-alternatives: Fix for compatibility with multilib recipes
dc2192c external-poky-toolchain: This is broken and confusing now, remove it
e024d40 Remove stray unwanted file
276b865 Hob: Use BB_DEFAULT_TASK as build task instead of hardcoded "build"
fdb2027 Hob: Build selected image if not customized
83cc0a1 Hob: Save the original image name into template
ac99863 Hob: A minor fix on tooltip
45da109 systemtap: Ensure FILESPATH is set so systemtap-uprobes can find patches
71b8383 eglibc: fix builds on fedora 17 alpha
fae4509 grub-1.99: fix configure error
3d23afd grub-efi-native, grub: fix build with gcc 4.7
53d6294 grub-1.99: use gcc-cross for building the target binaries
7503db6 nspr: fix package spliting
ffc9073 systemtap: disable document generation by default
3e3f774 systemtap: fix docproc build error
ee71422 linux-yocto: allow .cfg, .scc, .patch and defconfigs to be processed in order
25b48c6 linux-yocto/3.2: add igb support to romley
bc5d68e Revert "eglibc: fix perl path in target scripts on fedora 17 alpha"
60a7403 linux-yocto/meta-yocto: update hardware reference SRCREVs
04b16f1 rpm-native: Compile python rpm module (with-python)
5d41ccd package-index: Force NATIVE python to use modules from STAGING_DIR_NATIVE
132b12b createrepo: Python scripts should use the python interpreter from env
0d7b909 eglibc: fix perl path in target scripts on fedora 17 alpha
cc69136 eglibc: fix re-execution of task
396da97 boost: fix re-execution of task
60cf19a PR bump packages with gdbm in DEPENDS
996308a gdbm: Package compat libs in gdbm-compat
54c6e07 Revert "default-distrovars: remove NO32LIBS setting"
f09a5e1 opkg-utils: Update to include a fix for version comparision issues
22aac28 gcc-4.6: Add fix for relocation problem and ccache
7b22df2 default-distrovars: remove NO32LIBS setting
7cf26b2 pseudo: default NO32LIBS to 1
b4acabe base.bbclass: Fix PACKAGECONFIG issues with native and nativesdk BBCLASSEXTEND recipes (and multilib)
898bee7 mklibs-native 0.1.33: include unistd.h to fix build for gcc 4.7
100e3c9 rpm: Ensure that we check both providename and filepaths
554cac7 pseudo: Tell pseudo to avoid specifying an RPATH
fb918fb Hob: Added required packages for toolchain.
811f7d8 bb.utils: Modifed vercmp() to meet Debian rules.
4997801 Hob: forbid users to exit Hob directly when Hob is busy
9c1dcdc Hob: Implement Hob config parse hook
302f2cc ConfHandler.py: Add a hook for config parsing
6703173 package_rpm.bbclass: Set tmppath for rpm to somewhere which won't conflict with the rootfs
d74c5aa Hob: fix the missing functions
c37faea libunistring: Fix parallel make issue
b2ae65f linux-dtb: Ensure dtb files are covered by sstate
d6031ba documentation/yocto-project-qs/yocto-project-qs.xml: Added CentOS
853c561 documentation: Run-through changes for 1.2
17c4134 documentation/yocto-project-qs/yocto-project-qs.xml: fixed URL
a9be1ac poky.ent: Updating for coming release
58d2ff3 package_rpm.bbclass: Use the correct macros file to avoid empty solvedb path issues
7e5d41a packageselectionpage: add missing method
376bf4a builder: fix missing \ for if continuation
0923ee4 package_rpm: Fix useradd preinst ordering issues
9789ed6 hig/builder: use the new which_terminal() function
4be09ee ui/crumbs/utils.py: new file for choosing terminals
eaf2994 distro-tracking: Fix syslinux NO_UPDATE_REASON
75a604b insane.bbclass: Add missing variable bpn
00a6199 "The suite of statements in a function definition executes with a local namespace that is different from the global namespace. This means that all variables created within a function are local to that function. When the suite finishes, these working variables are discarded."
f03d66b python: multilib header support.
b23b2b4 initrdscripts: fix init-live.sh and use unionfs
88b399b tclibc-eglibc.inc: make locale packages dependency conditional
6abc4c4 linux-yocto/meta-yocto: update hardware reference boards to v3.0.24
0f21f39 beagleboard.conf: fix hardcode of virtual/xserver
8c48ab6 poky-tiny.conf: adjust eglibc options for poky-tiny
06a7ffd python: Fix host contamination issue
5fb36b0 archiver.bbclass: Amend the problem for moving tarballs in ${DL_DIR} to ${DEPLOY_DIR}/source when enable archiver
acdcb3c busybox: fix options -b, -a and -P
91a7702 classes/package_deb: create .gz index instead of .bz2
0dca188 task-self-hosted: Add vte and eglibc-gconv-ibm850
394445f boot-directdisk: remove the default setting of SYSLINUXCFG and SYSLINUXMENU
73aab2c connman: add ofono dependency.
9067f7b Hob:Fixed some incorrect values of Build configuration tab
6486d39 Hob: show those appliable buttons on the image details page only
ccf4f76 Hob: forget selected_recipes and selected_packages after users change the machine
793058e Hob: add tooltips into image details screen
0043ed8 Hob: tooltip change for "Build image" button
59cd6a5 Hob: clean up and reword stop_parse()
62e5a4d Hob: clean up generate_configuration()
655476f Hob: clean up cancel_build()
c5964a7 Hob: clean up request_package_info_async()
2176e14 Hob: clean up and unify get_parameters() to be get_parameters_sync()
f511b8c Hob: clean up to call clear_busy() in hobeventhandler.py
21901e0 Hob: clean up and unify the steps for IMAGE_GENERATING to call generate_image_async()
35317bd Hob: clean up and unify the steps for PACKAGE_GENERATING and FAST_IMAGE_GENERATING to call generate_packages_async() and fast_generate_image_async()
47caae2 Hob: clean up and unify the steps for RCPPKGINFO_POPULATING to call populate_recipe_package_info_async()
27caa6b Hob: clean up and unify the steps for CONFIG_UPDATE to call update_config_async()
8d35341 Hob: clean up and unify the steps for new build to call initiate_new_build_async()
e2c1092 Hob: correct indent
4495a73 Hob: Add the tooltips for recipe view page as request
e1d463e Hob: add fadeout display effection for package view include page
a46aafb Hob: add fadeout display effection for recipe view include page
9fd56fa Hob: Add an extra 50M space if zypper is selected
44b08a9 Hob: Fix tooltips in Settings dialog
f9d7043 Hob: Fix tooltips in image configuration page
4c72ee9 Hob: Fix the pattern patch for image name
c546037 Hob: Change base image to "Create your own image" if customized
0aff9a5 selectionpage: show persistent tooltips on click
df64e7f lib/bb/ui/crumbs/[recipe|package]selectionpage: fixed width Included col
4cf1aa5 lib/bb/ui/crumbs/recipeselectionpage: include 'Group' in 'Included' view
49cd60e lib/bb/ui/crumbs: only display one 'Brought in by' item in Hob trees
e5a63fd hob: update required versions of (py)gtk et al
0d001e8 lib/bb/ui/crumbs/hobwidget: replace new API
b2fb7dd lib/bb/ui/crumbs/persistenttooltip: replace 2.22 API
0d5e808 diskspace monitor: assign a default value when only of the interval is set
c0a812c documentation/bsp-guide/bsp.xml: Added a info about meta-intel layer
ec33e21 documentation/bsp-guide/bsp.xml: Edits to intro sections
273e05b documentation/bsp-guide/bsp.xml: Added new section
adc13fc hello-mod: Move hello-mod from meta to meta-skeleton
13d6210 syslinux: Update distro-tracking fields
5d3d753 at: Fix origin location of install pam.conf from from ${P} -> ${BP}
c397384 gdb: add --with-libexpat-prefix
547cb70 opkg: Add the condition for the content of arch.conf when enable multilib
aedff44 adt-installer: Fixed ppc kernel naming.
a0ccc1f meta-toolchain: runqemu falied on FC16/Opensuse12.1 x86_64
b055040 git 1.7.7: remove perl.mak before compile
c13afae grub-efi: Include GPT partition EXT FS support
fe0b333 qemu: Fix gl failure from 64b target on 32b host
c54831f shadow-native: disable logging to syslog
73e3fd8 mesa-common: package gl.pc in libgl-dev
177171c create-pull-request: Assume remote branch from local branch
190f6d7 runqemu-internal: Add console=tty for qemuppc and NFS
07c0a12 self-hosted-image: use Clearlooks theme
0f497f3 self-hosted-image: decrease reserved space to 0.5%
9198359 self-hosted-image: use the correct location of the file sudoers
a405ca2 connman: Fixed multilib support.
c7283aa package_ipk.bbclass: fixing muttilib prefix extracting.
df21414 u-boot: add machine name to spl image name
885485f linux-firmware: keep version string in libertas firmware
aed4211 package_ipk: don't generate Packages.filelist
c9173da Hob: Modify Image Descriptions
f4e2750 gst-plugins-base: fix build of subparse plugin
d103dae syslinux: Avoid using linux.ext2_fs.h if possible
0dacda9 gdbm: Activate -enable-libgdbm-compat and add symlinks to headers in include/gdbm
98291b5 Fix typo in user manual: "incarantion" -> "incarnation"
cb63e37 scripts: Clarify "help" info for yocto-bsp and yocto-kernel
1cf4440 Hob: a minor fix on pmake
3d9f67c Hob: a minor fix on image_fstypes
0d76c5b Hob: avoid the empty white space appearing on top of the gtk.ComboBox
5cad18b Hob: unify _size_to_string() and _string_to_size()
b9accbb Hob: handle exceptions when loading templates
36164b9 Hob: handle exceptions in get_parameters() from the bitbake
041cc16 Hob: Check "dummy" image while update_image_combo
cda92e2 Hob: Remove the recipe/task type for multilib
a84e353 lib/bb/ui/hob: exit cleanly if the required pygtk version isn't available
d2402f6 Hob: reset issue indication and build status before build starts on build details screen
3d594b7 Hob: remove grab_default() for deploy button
17db387 Hob: add the "info" indication icon for "information" in the dialogs.
c15d4a2 Hob: fix IMAGE_INSTALL setting while save template
7b56074 Hob: Fix toolchain build
f414dbb Hob: Set stop button sensitive after task started
048aa0d Hob: Remove duplication for certain bitbake variables
20ea123 Hob: Remove some calling of initiate_new_build()
9cc1e86 Hob: Update the cache when setting changed
c773211 Hob: Fix MACHINE setting
5607729 self-hosted-image: Increase space for build and allow builder user sudo access
af74a8f conf/machine/include: Update SH tunings to match README
449dae1 conf/machine/include: Cleanup ARM tunings to match README
78e1a7c conf/machine/include: Cleanup PowerPC tunings to match README
d328ae2 conf/machine/include: Cleanup MIPS tunings to match README
d6e7ebb conf/machine/include: Cleanup IA tunings to match README
62331ff conf/machine/include/README: Add readme to explain cpu tunings
c87b50e archive-patched-source.bbclass: Archive patched source
db7f5c4 Remove redundant reference to "task-self-hosted" from self-hosted-image.bb
ca0831d qt-4.7.4: Fix build with gcc 4.7
30b2b8f qt-mobility: Fix build with gcc 4.7
6228ba6 webkit: Fix build with gcc-4.7
0aaddbc archiver.bbclass: enhance code readability
6c73e45 eglibc packaging: locale packaging configuration
834a17d gcc-cross-intermediate: fix do_install for x32
8b797c6 package_{deb,ipk,rpm}: apply umask to files generated in do_package_write_{deb,ipk,rpm}
9ce92e4 copyleft_compliance: also print the reason for including a package
029f3c6 license.py: fix behaviour of copyleft_compliance
1dc560c license.bbclass: Check if copyfile succeeded with isfile
fedad51 binutils: Inform binutils that armv5e really is valid!
cd4d346 documentation/yocto-project-qs/yocto-project-qs.xml: Added CentOS distro
4c35d05 documentation/bsp-guide/bsp.xml: Patch to fix small issues
46600e3 elfutils: disable lzma (and bzip2 for native)
2c20a91 gdb: build with expat, add missing RRECOMMENDS_gdbserver
4fbc283 eglibc: SDK_GLIBC_ADDONS for eglibc-nativesdk.
7819e67 documentation/dev-manual/dev-manual-common-tasks.xml: removed MULTILIB_IMAGE_INSTALL
7ebbe69 documentation/dev-manual/dev-manual-common-tasks.xml: Edit to md5sum
f64aae0 documentation/dev-manual/dev-manual-common-tasks.xml: Updated makefile section
12e5386 documentation/bsp-guide/bsp.xml: Added some front-matter
3c56658 documentation/bsp-guide/bsp.xml: Removed Note
23e8590 documentation/bsp-guide/bsp.xml: Edits to the BSP Tools section
0be0e3b documentation/bsp-guide/bsp.xml: New section on using BSP tools.
723c912 gettext: Fix sysroot conflict over owner of macros
5dcac2b gst-ffmpeg: Fix build failures from sstate relocation
ce69eb9 gst-ffmpeg: Fix build with gcc 4.7
9d52646 apt: Fix a latent bug exposed by gcc 4.7
38ba438 tiny: Update linux-yocto-tiny to 3.2
126c5c0 linux-yocto: update tiny meta and configuration for kernel 3.2
2cf38f0 self-hosted-image: fix indentation: 8 spaces --> Tab
ac10ef7 builder: uncomment the settings for BB_NUMBER_THREADS and PARALLEL_MAKE
5b9b6a4 self-hosted-image: renew the poky src's SRCREV that's installed into the target
cf6b3fb self-hosted-image: improve do_populate_poky_src
79c806c genext2fs: support large files and filesystems without using large amounts of memory
84b7541 qemugl: Fix GL apps failure on Ubuntu 11 host with nVidia GLX driver
2592a11 buildhistory: make seperate commits for every changed top level entry in the buildhistory dir
bcd3db5 buildhistory: record all builds
7e7600f buildhistory: remove duplicate entries from dot graph
869dfae linux-yocto-tiny: Prefer 3.2
6a11c78 README.hardware: extend USB-ZIP instructions
501f0da README.hardware for mpc8315erdb incorrectly specified a null modem serial cable
8691a58 cross-canadian.bbclass: fix rpath for sdk executables
e008fc1 tune-cortexa8/9: fix PACKAGE tunes being all armv7at even for non-Thumb ones
1482da4 scripts/bitbake: add/fix some comments
43d819c scripts/bitbake: allow switching between build directories
299f890 scripts/bitbake: try harder to check if pseudo exists
6302003 nasm: fix issue with repeat configure
15e797c pkgconfig.bbclass: corrected dependency for -nativesdk.
6333c5f autotools.bbclass: Drop -nativesdk dependency to lib-cross.
3180dd2 crosssdk.bbclass: Set TUNE_PKGARCH to SDK_PKGARCH.
404cced nativesdk.bbclass: Set PACKAGE_ARCHS to SDK_PACKAGE_ARCHS.
d55db7b bitbake/cooker.py: Bring into sync with upstream bitbake (trivial difference)
06fc2d2 documentation/dev-manual/dev-manual-common-tasks.xml: Title change
60d4892 documentation/dev-manual/dev-manual-common-tasks.xml: edits to BBMASK
fdf7db7 documentation/dev-manual/dev-manual-common-tasks.xml: moved BBMASK
d19c8c8 documentation/dev-manual/dev-manual-common-tasks.xml: moved section
3eb0125 docbook-utils-native: fix syntax problem in jw.in
5cdb58f virtual/libgl: use mesa-xlib for qemuarm/qemumips/qemuppc
899aa3f adt-installer: Adapted environment file name for powerpc.
caf3f82 arch-armv7a.inc: fix PACKAGE_EXTRA_ARCHS after armv7.inc was removed
9cb1f86 gdk-pixbuf: Fix checksum warning issue
24f5fe8 sstate-cache-management.sh: fixes and enhancement
debd5d5 rootfs_ipk: don't echo opkg-cl output to log.do_rootfs
525275d Hob: In building log page, fixed the issue about 'endpath' not clear when next to start build
984c23f runqueue: wait and deal with those <defunct> sub-processes as soon as they are os.killed() when "Force stop"
35acc9e lib/bb/ui/crumbs/hoblistmodel: fix sorting of RecipeListModel
b9b0ff9 lib/bb/ui/crumbs/hobpages: change title from HOB to Hob
8c55365 Hob: tweak font sizes and layout
bcd4d14 libc-packgae.bbclass: Add i686 support in locale_arch_options
1fd8c6f bc: use update-alternatives to make dc play nice with busybox
dd4d49b gstreamer: Provide easy way to enable runtime debugging
3af7e95 runqemu: set console=ttyS0 when running with nographic option
db4c830 qemu.inc: Use '+=' for IMAGE_FSTYPES
64d9976 knotty: Add back getTasks() call to ensure we don't repeat messges
b5dad0e Hob: in build details page, change error icon to denied icon
2e6ea85 Hob: fixed the 'error' icon source picture and adjusted corresponding showed icon size
f717cd6 Hob: some color style changes to make HobTabBar more close to visual design
ad8fe62 Hob: make ORANGE to be the same as the color on the dialog
59ca1af Hob: Change "Just bake" to "Build image" as required
407c93d Hob: Change icon to error because parsing error is an error
1ea547c Hob: clear the building state after a successful build, as a failed build does
00e262e Hob: Replace "local.conf" in error message
1c3ff86 Hob: Fix the setting hash calculation
f5fd769 Hob: Change the format to store image_fstype variable
a8c0323 Hob: Remember user settings when reparse config
e24f10e Hob: Update configuration after parsing
d30b75f Hob: Inherit image_types.bbclass in set_user_config()
72bc345 Hob: Improve for init a new build
1da5045 command.py: Move triggerEvent to command async class
f73ea0e Hob: Improve the matching for runnable machine type
abcb2e0 Hob: Define a variable to store the image name and toolchain
345a2dd Hob: Fix adding duplicated meta-hob layer
8b26fdc Hob: Remove un-used signal and functions
71c1de3 lib/bb/ui/crumbs/hig: fix layers_changed test
57434b4 lib/bb/ui/crumbs: hob progress bar should not be red when user stops build
7463dd8 lib/bb/ui/crumbs/builder: allow user to cancel Layer selection dialogue
c489990 lib/bb/ui/crumbs/hobwidget: change text sizes in HobImageButton
25e9e16 lib/bb/ui/crumbs/imageconfigurationpage: add extra space between widgets
366bf75 lib/bb/ui/crumbs/hobwidget: add padding to HobImageButton
19a5489 Hob: change some words in settings dialog to make them consistent
96be713 Hob: change some words on recipes screen and package screen to make them consistent
3ac86ce Hob: change some words on image configuration screen to make them consistent
2aa1468 Hob: change some words for build configurations on build details screen
ff43873 Hob: add Templates and Settings on image details screen
3038c0c Hob: Set one of deployable images or runnable images as the default toggled item
eeb0529 ui/knotty: Add a footer to the build output for interactive terminals as knotty2 UI
5b84c90 uihelper: Keep track of pids in execution order
3774cf0 license.bbclass: remove existing license.manifest before appending new data
331f7fa ghostscript: Fix remaining CP_ prallel make races
4d16bc3 bb.build: use relative log links, not absolute
4d9f4d6 rpm: Ensure we depend on file
016cf3f eglibc-2.15: Update SRCREV
241140d documentation: Added TBD entry to 1.2 manual history table.
fef7a66 clutter: clutter_git is really clutter-1.8_git, rename
eeab5b2 tiff: Make builds deterministic
7fcb7c4 gcc-cross-intermediate: Ensure we move the libraries from the correct location
c39e0db ghostscript: Fixes for parallel_make
8b0bc59 Hob: allow users to setup the proxies
7990d36 Hob: fixed some not compatible places for make runningbuild.py can be reused by another application
26cce34 Hob: change the implementation way about get config info for building log
0443766 Hob: use hob icon checker to check the gtk icon for make the icon constaintly
278fcca Hob: change the recipe pasing error dialog icon from 'dialog-info' to 'dialog-error'
b99680f Hob: fixed visually differentiate warnings and errors icon in building log
673a8f4 Hob: add refresh icon as ui request in building log
ceee95e lib/bb/ui/crumbs/imagedetails: use secondary button style for 'View files'
9df6a79 lib/bb/ui/crumbs/imageconfigurationpage: ensure widgets stay positioned
58c1981 lib/bb/ui/crumbs: tweak build status display
eba155d lib/bb/ui/crumbs: apply primary/secondary dialogue button styling
265903b procps: don't print error message with kernel 3.0+
f1f7680 powerpc e500: set -mfloat-gprs=double
9192e49 external-csl: add mapping for powerpc-nf
9e9d3d4 scripts/bitbake: Update to help rebuild pseudo-native
c718c10 Pseudo: Update to 1.3
0ba97b4 local.conf.sample.extended: Add documentation of archive source code configuration
2f2ea4a zypper: Fix build with gcc 4.7
6515bea linux-yocto: support externalsrc builds
c73d382 tune/armv7: Delete
7b01671 nspr 4.8.9: failed to build on x86_64 board
c3c5e89 contacts.inc: conditionally install shema
21a314e contacts 0.9: failed to build
401129c image_types: remove duplicate setting of -i for inode count
e195338 builder: Enable auto starting of Hob
a58c372 vmdk: Update for direstdisk
337fbed boot-directdisk: Fix Block Calcuation
d2e7d49 image-vmdk: Add symbolic link for a short named vmdk image
a490a71 self-hosted-image: pre-populate the builder user with poky source
2e4ca98 gcc-cross-canadian: Clean non shipped empty directories.
d3e0bee guile: Deal with hardcoded path issues
3787338 documentation/adt-manual/adt-eclipse.xml: Added new commander section
d420de6 documentation/dev-manual/dev-manual-common-tasks.xml: Fixed link
75f5576 documentation/poky-ref-manual/ref-variables.xml: added CORE_IMAGE_EXTRA_INSTALL
c3aef26 documentation/poky-ref-manual: Removed some deprecated variables.
738a9f6 documentation/bsp-guide/bsp.xml: README file not optional
5c0b281 documentation/bsp-guide/bsp.xml: Readme description edits
e7cc307 documentation/bsp-guide/bsp.xml: Removal of certain layers
d5318a3 documentation/poky-ref-manual: Typos fixed.
5df1753 documentation/poky-ref-manual/ref-bitbake.xml: Fixed directory name
45bfc3e documentation/poky-ref-manual: changed "STAMPS" to "STAMP"
df7e75f documentation/poky-ref-manual/technical-details.xml: typo fixed.
c5d91b1 rootfs_ipk: replace 3 opkg-cl calls with one in get_package_filename
46f4df3 classes: scons: add EXTRA_OESCONS
dd61d59 archive-configured-source.bbclass: Archive configured source
0cc11b3 archive-original-source.bbclass: Archive original source
6dd4ddf archiver.bbclass:
6a99e0f package_rpm: Add srpm function to this bbclass
b711d7b src_distributelocal.bbclass: Remove src_distribute_local.bbclass
34c9323 src_distribute.bbclass: Remove src__distribute.bbclass
e4e1162 sourcepkg.bbclass: Remove sourcepkg.bbclass
2e3845c linux-yocto: common-pc: Add PCNET32 to the config
cafb94f kernel.bbclass: touch .scmversion also in ${S}
53f1446 Fix empty file case that caused build error at do_rootfs
62547e7 speex: fix FILES variables
db529f9 documentation/poky-ref-manual/development.xml: another env var clarification
15057c2 documentation/poky-ref-manual: cleared up environment variable ambiguity
264e597 documentation/poky-ref-manual/ref-structure.xml: Clearer reference to variable
ceaf19f documentation/poky-ref-manual/ref-structure.xml: Clearer variable ref
4096fb2 documentation/poky-ref-manual/development.xml: Typo fixed.
453ec12 documentation/poky-ref-manual/technical-details.xml: Nitin's review
49c911f documentation/adt-manual: Edits to fix ADT manual for 1.2 per bug 2025
c3fe9d7 documentation/poky-ref-manual/technical-details.xml: new x32 section added.
4a0720f python: fix packaging dependencies on minimal systems
5b86fb0 image_types.bbclass: Define runnable and deployable pattern
951aa5e Various typoes fixed, all comments or output strings.
1b5c52f busybox: move watch to /usr/bin for compatibility with procps
aff0f01 qemu: add fedora pkg names when build failed
1c0afb8 gcc-cross-canadian: Fixed packaging warnings.
fb3e59c core-image-minimal-mtdutils.bb: Simple DESCRIPTION grammar fix.
b8697c3 setserial: Correct LICENSE
ec0681f common-license: Add ICU generic
709d179 common-licenses: Adding GPL-2.0-with-OpenSSL-exception
7fdf6b5 license.bbclass: Style guide compliance
1fffeb0 util-linux: Example of pkg level INCOMPATIBLE_LICENSE
bdf2d94 INCOMPATIBLE_LICENSE: support for spdx and pkg licenses
a3da6c3 license.bbclass: Whitespace standardization
5de2b70 license.bbclass: Add spdx mapping to GPL-1.0
bc709ae PPP: Remove leftover reference to "nylon" distro from PPP recipe.
a80fc63 Hob: add build status labels in the build details screen to make it more close to the visual design
fb7eb75 lib/bb/ui/crumbs: use a PersistentTooltip for the Brought in by information
2206679 lib/bb/ui/crumbs/persistenttooltip: ensure a reasonable minimum size
188cf89 lib/bb/ui/crumbs/persistenttooltip: layout tweaks
61f039d lib/bb/ui/crumbs/hobwidget: convert button styling logic to static methods
d0bb6d2 lib/bb/ui/crumbs/builddetailspage: fix label on 'Back' button
61006cf lib/bb/ui/crumbs/hobwidget: HobAltButton different visual when insensitive
63defc9 lib/bb/ui/crumbs/hig: sort layers in Layer Selection dialogue
822af52 Fix typo: BB_NUMBER_THREAD -> BB_NUMBER_THREADS
e9a5de6 Hob: Avoid getting TMPDIR in hardcode
64cb3cd Hob: Set empty DISTRO if "defaultsetup" is selected
bc73876 Hob: runqemu and deployment functionality filter
9b4e160 Hob: Add a supported image type "vmdk"
f83586f Hob: Fix the workaround to get image types
5098c96 Hob: Change the Hob initialization process
9d3620f Hob: Initial an empty label in recipeselectionpage.py
a18a724 Hob: Cleanup for hobeventhandler.py
09b1609 Hob: Remove unnecessary PARSE_BBFILES command
1c19181 iptables: fix build error against 3.2+ kernel headers
6c77a0f taglib: Refresh patch after recent accidental breakage
ac56e2e linux-libc-headers-yocto: move to meta-yocto
0233e6b libzypp: Fix buiild with gcc 4.7
0dd02a5 kernel.bbclass: don't create /etc/modutils/*
caaa570 update-modules: update script to read /etc/modules-load.d/ directory
c73e50a kernel.bbclass: fix extra + in kernelrelease
39439da kernel.bbclass: use better number for KERNEL_PRIORITY
42fbace kernel.bbclass: use symlinks for modutils files
c6db496 kernel.bbclass: populate /etc/modules-load.d/ with module_autoload entries too
8132ac5 procps: use update-alternatives for pwdx, pgrep and watch
b2c6e1e sysvinit: use update-alternatives for mountpoint and runlevel
180d7d3 ppp: drop unneeded pkg-postinst
e86605c linux-libc-headers-yocto: remove from oe-core
12cd331 linux-libc-headers: set default LINUXLIBCVERSION to 3.2
e7a5236 linux-libc-headers: add 3.2 headers and remove 3.1
ad88a47 bitbake.conf: Add XAUTHORITY into config white list
ada5a02 python: remove a target dependency
ad5dd7d Hob: Change the descriptions for view_recipe_button and view_package_button
98fa27c Hob: add auto scroll to rows which be new appended in hob building log page
f427bfa Hob: reset the policy to forbid the horizontal scrolling for building log
63648b9 lib/bb/ui/crumbs/builder: change dialogue title to Layers
ac53520 lib/bb/ui/crumbs: make use of HobButton for existing primary action buttons
78fb409 lib/bb/ui/crumbs/hobwidget: add HobButton widget for the primary action
9dd7461 lib/bb/ui/crumbs: fix 'Back to image configuration' alt button text
cef911e lib/bb/ui/crumbs: add colour for HobAltButton per visual design
bad0a86 lib/bb/ui/crumbs/hig: tweak 'Add Layer' button per visual design
d4a087f lib/bb/ui/crumbs/builder: only show a close button on the Layer Selector
f76dcdb lib/bb/ui/crumbs: replace HobXpmLabelButtonBox with HobImageButton
ce914a6 lib/bb/ui/icons: add new icons for use in Hob, autocrop some existing ones
3d69d94 bitbake/fetch2: Ensure mirror tarballs have .done stamps so we don't redownload and corrupt them
67c83a8 documentation: Updated all style sheets for down-sized notes.
fd5c4cf documenation/dev-manual/dev-manual-model.xml: Hob section first draft
0f2f0f9 documentation/dev-manual/dev-manual-model.xml: Updated title
7c689aa documentation/dev-manual/dev-manual-model.xml: Blank Hob section added.
f98621f documenation/dev-manual/dev-manual-model.xml: Hob added to Intro
40a45af documentation/bsp-guide/bsp.xml: Edits to BSP Licensing section
2e0b901 documentation/poky-ref-manual/technical-details.xml: Review comments
9d2974a documentation/bsp-guide/bsp.xml: Patch applied for Licensing
9332e39 documentation/poky-ref-manual/technical-details.xml: Licensed recipe edits
4a6e43c documentation/yocto-project-qs/yocto-project-qs.xml: Fixed bad git command
7f102ae documentation/yocto-project-qs/yocto-project-qs.xml: two typos fixed.
b3d8c48 documentation/adt-manual/style.css: Added new style for Note headings
db22f39 documentation/dev-manual/dev-manual-common-tasks.xml: Spell check.
cb4b0aa documentation/yocto-project-qs/yocto-project-qs.xml: new expert section
3b95307 documentation/poky-ref-manual/technical-details.xml: Fix Checksums section
f99aa94 documentation/poky-ref-manual/ref-variables.xml: New ALLOW_EMPTY variable
542d163 documentation/README: Updates to explain development
0f25a65 documentation/dev-manual/dev-manual-newbie.xml: Added to append term
221d439 documentation/dev-manual/dev-manual-common-tasks.xml: added link
73aea6c documentation/dev-manual/dev-manual-bsp-appendix.xml: minor edits.
802ac5e documentation/dev-manual/dev-manual-bsp-appendix.xml: removed quotes
058b00c documentation/dev-manual/dev-manual-bsp-appendix.xml: Added .bbappend
99c1eb5 documentation/dev-manual/dev-manual-model.xml: Technical correction
83141b3 documentation/dev-manual/dev-manual-common-tasks.xml: Minor edit.
9ba2e3d documentation/dev-manual/dev-manual-common-tasks.xml: minor edits.
1ebf41e documentation/dev-manual/dev-manual-common-tasks.xml: minor edits.
1fc825e documentation/dev-manual/dev-manual-common-tasks.xml: Edits to append files
5ad47af documentation/dev-manual/dev-manual-common-tasks.xml: fixed typo
b059442 documentation/dev-manual/dev-manual-common-tasks.xml: Better .bbappend definition.
1c63d72 documentation/dev-manual/dev-manual-start.xml: Defined BitBake append file
333f776 documentation: Updates for [YOCTO #1717].
6392dff documentation/dev-manual/dev-manual-common-tasks.xml: More edits to layer
f202838 documentation/dev-manual/dev-manual-common-tasks.xml: Review edits
9bdc18a documentation/poky-ref-manual: Converted to use poky.ent variables.
9602c55 documentation/poky.ent: Fixed two variables
d048a99 documentation/kernel-manual: Converted to use variables from poky.ent.
aa3a201 documentation/dev-manual: Converted to use poky.ent
e9c32b6 documentation/poky.ent: Added a new variable.
7c12cb1 documentation/bsp-guide: Converted links to use poky.ent variables.
45bc21c gdb-cross-canadian: Fix linking issues when python support is enabled
bb1d7fa Revert "bitbake.conf/sstate.bbclass: Change PATH when installing sstate files to avoid issues"
d95f6d0 pigz: Add update-alternatives support since this otherwise conflicts with busybox/gzip
7bbb893 mirrors.bbclass: remove dead kernel.org mirrors
8dbbbff sstate.bbclass: Remove possibility of file corruption and make package writing atomic
8350c03 gst-plugins: remove obsolete orcc hack
ab69a16 scripts/combo-layer: handle diffs in commit messages
fd3f7d5 scripts/combo-layer: limit component repo dirty check
6a44fcb pixman: disable iwmmxt
c9537c5 useradd.bbclass: retry useradd/groupadd commands to avoid lock race issues
c65d82a package_rpm.bbclass: ensure base-passwd and shadow get installed first
74ee8de libgcc: corrected -nativesdk package namings.
552eea2 nativesdk/misc: set PKGSUFFIX for correct variable name expansion.
065a9a6 ncurses: ship clear/reset in package.
7987452 gdb-cross-canadian: not shipping libiberty.
a6ec59c pseudo: package the var/pseudo directory.
8447aa2 meta-toolchain: Popluated the libc siteconfig files.
5256a6b bitbake: Fix icon paths that were mismerged
cc93f3e gst-plugins-bluetooth: Don't install headers, man pages or .pc files
5a6ded1 yocto-kernel: new script
4fdaf05 yocto-bsp: new script
c01dec8 yocto-bsp: add some useful constants
095c80b yocto-bsp-tools: add help/usage
1e40e8a yocto-bsp: add kernel interface
cd8182e yocto-bsp: add templating engine
cf80db1 yocto-bsp-tools: add bsp library
f76161b yocto-bsp: add BSP template files
af193ae ddimage: Add script for writing images to boot media
7710639 task-self-hosted: add pseudo
16585f5 libc-common: Apply Debian-naming to libc debug symbols too
39c2e33 arch-powerpc.inc: use default value of TUNE_PKGARCH
961b149 consolekit: use systemd_unitdir
0a57e38 alsa-utils: use systemd_unitdir
4a78130 dbus: use systemd_unitdir
a4fcab8 ofono: use systemd_unitdir
fc580dc bluez4: use systemd_unitdir
04fe342 avahi.inc: use systemd_unitdir
3e80fcd bitbake.conf: add systemd_unitdir
9e3c79c Fix common typoes "existant", "dependant" and variations
54d61ed insane.bbclass: maybe no log.do_compile or log.do_install
58ce512 tcf-agent: Using git repository instead of svn.
0f49983 rt-tests: add patch to support passing CFLAGS/LDFLAGS
22cb225 rt-tests: replace dependency on eglibc with virtual/libc
e2e4e4a bitbake.conf: fix distro-less failure expanding FILESPATH
8dda137 Hob: Revert interfaces of callbacks for layer_button, view_recipes_button, and view_packages_button.
0ac021e lib/bb/ui/crumbs/hig: disable removal of meta-hob layer
1f3a637 ui/crumbs/hig: make the layer selection dialogue more closely match design
f950176 lib/bb/ui/crumbs: add icons for use in the layer dialogue
631f978 lib/ui/icons: autocrop images
21970f4 lib/bb/ui/crumbs: Add HobAltButton and use it
457ec75 ui/crumbs/persistenttooltip: fix whitespace
e587c1e ui/crumbs/persistenttooltip: fix colours on darker themes
f460c2f ui/crumbs/persistenttooltip: tweak borders
c9202eb ui/crumbs/hobwidget: add clear icon to search entries in HobNotebook
b681798 Hob: Use inherit information to judge if a recipe is image type
ef2e881 cooker: add inherit information when generating package tree
c70e761 Hob: Change the titles for recipe view and package view
b8cbd7e Hob: Change "View Packages" description
9e8e02c Hob: Change window title from HOB to Hob
df20012 Hob: Move "Create your own image" to the bottom of image list
31124e6 Hob: Change package selection tab order
8cc7b24 Hob: Change recipe selection tab order
ec62723 Hob: Change template button name from "Template" to "Templates"
5b98b26 Hob: change package classes selection GUI
8683fa2 Hob: Remove split model in GTK Hob
e9a9422 Hob: Still use initcmd != None as the if judgement
047ce54 xserver-kdrive: Fix packaging warnings
621e5cd readline: Fix RPATH Warnings for GPLv2
4cc2b9a lttng-ust: Increase PE due to incompatible version changes related to lttng-ust2
70a0375 Add bitbake-dumpsig to make it more obvious how to dump a signatures file
287d018 gettext/awk/sed/grep: Backport WARNING fixes to GPLv2 versions
40f9568 gzip/pigz-native: Install into a prefix to avoid clashing with system binaries
01218e2 bitbake.conf/sstate.bbclass: Change PATH when installing sstate files to avoid issues
42c445b buildhistory_analysis: avoid printing PE/PV/PR more than once
4db604c buildhistory_analysis: report if all items removed from a list
275ef49 buildhistory_analysis: skip FILELIST changes for dbg packages
9d8e5ab buildhistory_analysis: hide version number increases in dependencies
0b8a693 buildhistory_analysis: use bb.utils.explode_dep_versions
fb7eeb3 lttng-2.0/lttng-ust: Change recipe name to lttng2-ust.
5259a70 parted: update to version 3.1
e3a8486 syslinux: fix stripped file warnings
8ad75a6 libacpi: fix stripped file warning
2713908 hdparm: fix stripped file warning
ddfbae1 distro_tracking: update openssl
96dde95 openssl: upgrade to 1.0.0.h
ded4c8e scripts/qemuimage-testlib: fix typos
ba4e37a task-self-hosted: add nfs-utils and nfs-utils-client into the target
24703f8 cleanup-workdir: add a script to clean up WORKDIR
d4129c1 parted: update to version 3.1
86ff2d7 distro_tracking: updates for upgraded recipes and manual checks
a731d22 e2fsprogs: upgrade to 1.42.1
35ada8f distro-tracking: Remove trailing whitespace
ca0e59e distro-tracking: Update rt-tests, trace-cmd, and kernel shark
5eba491 libxxf86dga: Upgrade to 1.1.3
42cc9b7 distro_tracking: Update
562b6e8 resolvconf: Upgrade to 1.64
4cbf68c imake: Upgrade to 1.0.5
647ca07 gnutls: Update to 2.12.17
6c07b14 libxi: upgrade to 1.4.5
2a6611c libxcb: upgrade to 1.8.1
33ca082 font-util: upgrade to 1.3.0
1d4a448 inputproto: upgrade to 2.2
1e14106 libxres: upgrade to 1.0.6
253ba4c libxfont: upgrade to 1.4.5
469adf6 libXvMC: upgrade to 1.0.7
d0a99eb libxtst: upgrade to 1.2.1
796658c libxft: upgrade to 2.3.0
42c4d68 libdmx: upgrade to 1.1.2
f058ab6 libxau: upgrade to 1.0.7
f6c8b92 libxscrnsaver: upgrade to 1.2.2
ac08a35 libfontenc: upgrade to 1.1.1
96c0a7b libXmu: upgrade to 1.1.1
bef3721 libxt: upgrade to 1.1.2
04e4955 libXv: upgrade to 1.0.7
5eb8a94 libXext: upgrade to 1.3.1
5b1a362 libxpm: upgrade to 3.5.10
742e6d0 libXrender: upgrade to 0.9.7
ac1cf8e libXxf86vm: upgrade to 1.1.2
2a7e49a libxdmcp: upgrade to 1.1.1
87d4868 pixman: upgrade to 0.25.2
dc7ab6e libice: upgrade to 1.0.8
880739e libxkbfile: upgrade to 1.0.8
2781299 libsm: upgrade to 1.2.1
a440440 libxinerama: upgrade to 1.1.2
fcb6719 libxcursor: upgrade to 1.1.13
4ae214c util-macros: upgrade to 1.17
e8a238f tzdata: upgrade to 2012b
fbf503a minicom: upgrade to 2.6.1
87f284f apr: upgrade to 1.4.6
5f83df6 dropbear: upgrade to 2012.55
dba0656 curl: upgrade to 7.24.0
b52bd42 busybox: upgrade to 1.19.4
e556d90 libpcap: upgrade to 1.2.1
52365cc gst-plugins-ugly: upgrade to 0.10.19
de0e3e5 gst-plugins-bad: upgrade to 0.10.23
a25a6c6 gst-plugins-good: Fix packaging
fc44b2f gst-plugins-good: upgrade to 0.10.31
761b3c3 gst-plugins-base: upgrade to 0.10.36
7fffe07 gstreamer: upgrade to 0.10.36
1b083f3 gst-plugin-bluetooth: Fix package warnings
82df422 gst-plugin-bluetooth: upgrade to 4.99
24c233d bluez-hcidump: upgrade to 2.3
11897a9 bluez4: upgrade to 4.99
987d53f ofono: upgrade to 1.5
7e1c71a telepathy-mission-control: fix package warnings
44d6487 telepathy-mission-control: upgrade to 5.11.0
fc876fa telepathy-glib: upgrade to 0.17.5
9cb35be tremor: upgrade to 18221
704284e libvorbis: upgrade to 1.3.3
14df794 glproto: update its info in distro tracking
6e5446c gdk-pixbuf: upgrade to 2.24.1
9963fdb dbus-glib: upgrade to 0.98
3510a59 glib-2.0: upgrade to 2.30.3
224ff37 xserver-kdrive: compile xserver without dtrace support
17d42a4 sysvinit-inittab: Fixed license warning.
5b09f2c Hob: save CONF_VERSION and LCONF_VERSION into template
d03856c Hob: Fix advanced setting reparse mechanism
34b0f7a Hob: reset the selection if switch to a new base image
8a2f86a utils: Add split_version function for splitting a version into its components
d8b3caa ui/crumbs/persistenttooltip: try to reflect WM close button position
854f3a5 ui/crumbs/hobpage: no need to force a Toolbar button type
740bd44 ui/crumbs: remove unused return value from append_toolbar_button
1aa102b ui/crumbs/hig: use close rather than OK for dismis button
f1c35a6 Hob: fixed the tabbar search entry retaining focus when user has clicked off it issue
89a5428 Hob: fix static variable "self.search" to parameter "search" in signal callback function
2abdbaa Hob: change HobNoteBook tab edge color from green to gray
74c0098 Hob: add auto adjust background area function for long issue text
5e0461c Hob: Fixed the hobwidget code and make it like a pythonista
4dc552a Hob: remove the invalid code in hobwidget.py
491c87d Hob: fix '!= None' and '== None' in the code
9ecdbc3 Hob: change the code style to enumerate a list in a for-loop
dab638e Hob: show indicators on the tabs of the Hob notebook
c4017bc Hob: use HobNotebook to implement a notebook in build details page
88bbc0c Hob: implement a self-defined notebook visual component for Hob
8b206d3 Typo: "nonexistant" -> "non-existent"
30ff27a runningbuild.py: fix goggle ui
30e35fa bitbake-layers: fix traceback in show-overlayed with nothing overlayed
fd3514f blktrace: update to version 1.0.5
0e47116 qt-mobility: fix build in the absence of opengl
b3311a2 alsa-utils: move ${datadir}/init files to alsactl package.
2082a20 package_rpm.bbclass: fix bashims at rpm_common_comand() method
3ced64d bitbake.conf: Exclude some variables when calculating cache hash
5b67d64 native.bbclass: make TOOLCHAIN_OPTIONS empty
5bc142a gdk-pixbuf: Disable xlib library since we don't have anything needing this as yet and no libx11 DEPENDS
78f91f0 apt: Fix parallel make race
46b7131 Simple typo in qemuarm.conf file: "versaile" -> "versatile"
da07197 lttng-modules: fix compliation error with 3.2.x -stable kernels
a9873f1 pigz: Ensure DEPENDS on zlib exists for native and target versions
99b1c63 default-providers: Set pigz-native as the default provider for gzip-native
c17b692 distro_tracking: update the recipe info for manual check
c5b4b66 distro-tracking: update status of recipes
76bd437 distro_tracking: update sudo, at, base-passwd
2a7afb6 base-passwd: upgrade to 3.5.24
35c4c79 at: upgrade to 3.1.13
c5d1960 sudo: upgrade to 1.8.4p4
b4ee8b1 lttng-modules: Fix setting of KERNEL_DIR
1104171 slang: fix typo in rpathfix.patch
aa52518 ghostscript: fix typo in packaging
8b0b2d9 gnome-desktop: fix package warnings
6268c9e make 3.81: add GPLv2 version
7b6e4fe make: Add toplevel COPYING File and move BBCLASSEXTEND
02c2f51 mktemp: fix packaging warnings
4c26382 qt4: add RPROVIDES/RREPLACES for qmake2 recipe
d3c6832 iproute2: fix unpackaged files warning
fc4439b buildhistory: avoid reruns of do_package
ee8153e buildhistory: allow disabling image and/or package history
32483f0 buildhistory_analysis: fix duplicate PE/PV/PR in related fields
c569fce classes/image: avoid cp race condition when building multiple images
49f05af git: fix packaging warnings
4fa8a67 python-pycurl: fix packaging warnings
007ff7b python-pyrex: quite packaging warnings
ba53417 pciutils: fix a do_compile failure
acc1b66 python: fix install when libdir is not "lib"
f93c98e gawk: fix packaging warnings
7161e47 qemugl: Hide some GLX extensions by default
fcc7e80 linux-yocto/3.0: update to v3.0.24
81125c7 linux-yocto/3.2: update to v3.2.11
b5ed167 linux-yocto/3.2: update fri2 configuration
a02751a linux-yocto/3.0: update meta SRCREV
969bdb8 upgrade logrotate: update the distro_tracking_fields.inc
7f33f59 upgrade logrotate: update the recipe
a163d21 upgrade logrotate: split the old patch into 3
3f23b2f Add pigz as gzip-native alternative.
26a4693 bitbake/fetch2: Fix typo which broke use of tarballs
0676db7 tcl: Fix bad RPATH QA warning
c66786e wget: Fix bad RPATH QA warning
0fb6005 foomatic-filters: Ensure cups and ppr files are packaged
5ed180e cups: Ensure cups-config has correct target paths, not sysroot ones for cups_serverbin and cups_datadir variables
1871ec8 sed: Fix unpackaged files warnings
59313f2 cpio: Fix unpackaged files warnings
a7cd142 unzip: Fix unpackaged files warnings
61f50d8 tar: Fix unpackaged files warnings
b6154d4 directfb: Fix RPATH warnings
a6a866b grep: Fix QA warnings
c739e19 xf86-input-synaptics: Fix QA warnings
69db785 chkconfig: Fix unpackaged files warnings
6f76180 mobile-broadband-provider-info: Fix license warning
0422aca make: Fix license warning
28c755f flac: Fix license warning
98ce344 qt-mobility: fix QA warnings
be0f9dd python-imaging: bring in fixes from meta-oe
24d1560 util-linux: restore zlib and ncurses dependencies for native
510feb6 rt-tests: Add src/backfire to FILES_${PN}
4ca7075 runqueue.py: When checking whether stamps are valid for setscene, recurse
1d52c11 rpm: Fix FILE_ -> FILES_ packaging
9adf5c0 gtk-theme-torturer: Fix license warning
98c8b62 telepathy-glib: remove package warnings
88c9e4f texi2html: fix packages warning
79aa3f7 glib-networking: Fix packaging warnings
958e675 libnewt: fix license warnings
17895d3 watchdog: Fix License warning
f56eb88 wget: Fix License warning
837e8c7 usbinit: Fix License warning
b03be65 eee-acpi-scripts: Fix License warning
e07686e dtc: Fix License warning
44f50c3 bitbake.conf: Modify PACKAGE list ordering to insert -staticdev file before PN
87ef82d bitbake/fetch: Fix uri_replace
d3d9a37 parse/ast: Expand inherit statements before splitting them
b125696 ui/uihelper: Keep track of task numbers
82b6146 qt4: package static libraries correctly to fix warnings
93453f4 gmp: upgrade from 5.0.3 to 5.0.4
ce15081 ncurses: fix install error
ad81105 .gitignore: expand pyshtables.py ignoring
0be2788 mirrors.bbclass: remove dead GNU mirrors
50c0107 parted: don't pass --disable-Werror to configure
9be93e8 opensp: Fix unnecessary rpath warnings
602adb0 Hob: Change Box's padding value
7548697 Hob: improve recipe/package selection performance
ea8a7a8 Hob: Add stop button for parsing progress
a957dbd Hob: Emit command-failed signal even if error msg is None
c1cc10d Hob: Show recipe/package editing button after base image is selected
0fa748e Hob: Remove the recipe/package populated signal
552672a Hob: Remove the indication in machine/base image combobox
1dd648e Hob: Remove the reset button in recipe/package selection page
2064312 Hob: Fix the image installation dependency
8c6ce63 cooker: add package rdepends and rrecommends info
354f458 Hob: Disable the handling of "NoProvider" event
3fe627c Hob: add "Close" button to "BinbDialog"
8bae18b slang: Fix rpath QA warnings
50466b6 ghostscript: Fix patch related build issues
1eac51a PR bump for all recipes that DEPEND on ncurses
73371e1 ncurses: fix packaging of moved libraries
a17165a python: regenerate python-2.7-manifest.inc
e1c7636 gpgme: fix packaging warnings
7afeaf1 distro_tracking_fields: Fix EOL Comments and missing Quotes
f834d03 Revert "alsa-tools: update to 1.0.25"
cb771ef Revert "gcc-cross: aviod creating invalid symlinks"
f2bc4c6 alsa-utils: Add rename accidently dropped during patch merge
8a2dcd4 librsvg: really bump PR
5d5d5e1 perl-modules: Fix LICENSE fields to mention the correct license versions
3bbbfe4 xorg-cf-files: Fix unpackaged files warning
a802036 package.bbclass: do not split debug pkg when no debugsources.list
f65d96b chkconfig: update it from 1.3.57 to 1.3.58
c1076a0 ccache: update it from 3.1.6 to 3.1.7
7d6eb00 distro_tracking_fields: udpate package status
ae2c5f2 ghostscript: update to 9.05
e42e695 alsa-tools: update to 1.0.25
f7c7430 alsa-utils: update to 1.0.25
1a467d8 alsa-lib: update to 1.0.25
3882f40 libsdl: update to 1.2.15
897cdb6 newt: update to 0.52.14
43521d7 gobject-introspection: update to 1.31.20
d6426b6 gcc-cross: aviod creating invalid symlinks
089767f linux-yocto-tiny: add dependency on xz-native
d164674 ncurses: fix build when ENABLE_WIDEC is not set
fc33926 mx: add dependencies
cac1d9f gst-plugins-bad: disable directfb in configure
4992d99 pulseaudio: add X library dependencies
50e4d4c scripts/bitbake: ensure user is in build directory
5494bfc scripts/contrib/python/generate-manifest-2.7.py: Catch up with staticdev fixes
361d3b9 man: fix configure issue to solve warnings
b145814 libgalago: Fix package warnings by not packaging autopackage
59dbdf4 man-pages: Update to 3.36
e8d1d3d avahi: Update to 0.6.31
1bdd2e0 distro_tracking: Updates for manual checks
623da05 python: package static libraries correctly in -staticdev
05a360b rpm: Package python-rpm static archive correctly
0d1ea0d autoconf: remove emacs mode files to fix warnings
8776baa quilt: Fix docs packaging warnings
d467d90 ltp: Package static library in -staticdev
57cde08 owl-video: Fix unpackaged file warning
8e9f6fc dates: Fix unpackaged files warning
2a21ddf alsa-utils: Ensure state directory is packaged
29d054a ppp: Clean up PACKAGES vs. variable mismatch and drop unused RDEPENDS
0d9c60f ppp: Fix unpackaged files warnings
546032a libxslt: Fix unpackaged directory warning
0c79d71 xf86-video-vmware: Fix unpackaged driectory warning
7d8c72d matchbox-keyboard: Fix unpackaged files warning
67a51cd docbook-utils: Add check to not sed files twice
7cc0db7 gettext: Set the LICENSE field to GPLv3+
d90cfa7 initscripts: test whether /etc/init.d/hwclock.sh exists
d074b8a mtd-utils: clean up old files
7e48717 xinit: Update to 1.3.2 -- Typo fix.
c97557c Revert "gettext: do not set libncurses prefix explicitly"
19d4e0c linux-yocto/meta-yocto: v3.2.9, v3.0.23 + fixes and updates
af6881f gettext: do not set libncurses prefix explicitly
7ab3ab9 ncurses: move only libncurses and libtinfo to base_libdir
19e92df path.py: add make_relative_symlink method
5fff3ea python, python-native: bump PR
9ff71c3 python-native: distutils: don't use libdir, remove dead code path
475ecc5 python: depend on bzip2
c7ac3f4 python: regenerate plat-linux2/*.py
c8f2f58 python, python-native: always set platform to linux2
8f3aefa linux-firmware: fix permissions of installed files
7f784b6 util-linux: explicitly disable udev
b9027a9 package.bbclass: sort dynamically generated packages
e9fdfbb connman: update to 0.79
fd6696a image_types: ensure .rootfs.ext3 is created before vmdk is created.
e867a99 udev-164: fixup "don't hardcode path to pidof"
7b6cd92 qt4: fix deps in libQtWebkit.la and QtWebKit.pc
1a61109 image-vmdk: add NOISO to disable iso image creation since it's not needed
4ca1820 trace-cmd: modifying License information
96e88c5 dpkg: rename postinst trigger script
792d79f opkg: rename postinst trigger script
f473660 rootfs_rpm.bbclass: rename postinst trigger script
f9bdcb2 image.bbclass: fix rootfs generation without package management tools
717f974 run-postinsts: fix opkg data path
e26d3e6 glib-2.0: Add Upstream Status for nodbus.patch
0f64905 linux-yocto: respect FILESPATH directories
eed3746 xserver-xorg: Remove unneeded empty directory, fixing QA warning
00d64ef python-pycairo: Fix incorrect versions in license field
0342f7e rpm: Add rpmdeps-oecore to appropriate package
c5858a4 bluez4: Ensure the plugins directory is packaged to avoid warnings
f7945b8 qemu-config: Clarify license as GPLv2
e25a02e license.bbclass: Add mapping for LGPLv2.0, pango uses it
4ba6ff6 perl: Clarify LICENSE with versions. Yes, its really GPLv1
0f99e6b shadow: Correct license Artistic -> Artistic-1.0
8c218dd boost: Correct license name BSL-1 -> BSL-1.0
b2d4c6f gnome-doc-utils: Clarify license as GPLv2 and LGPLv2.1
d51e812 gtk-doc: Clarify license as GPLv2
374f060 wireless-tools: Clarify LICENSE field to avoid warnings
40aef31 matchbox-session: Clarify LICENSE as GPLv2
d72637c librsvg: Fix unpackaged directory warnings
a10c348 sato-screenshot: Remove unneeded .la file
7dfac86 xf86-input-vmmouse: Package unpackaged files
a62300a leafpad: Package currently unpackaged files.
5206688 cmake.bbclass: add ${base_libdir} to CMAKE_LIBRARY_PATH
bd2d890 xorg-xserver: Explictly disable dtrace, its not in DEPENDS
48633e5 mesa-dri-glsl-native: Avoid error when running configure a second time
c27b7aa codeparser: Call intern over the set contents for better cache performance
7bf0a79 codeparser: Compute extra cache components on the fly rather than later
c003a30 cooker.py: Allow parsing shutdown to be called more than once
fe06599 libx11-trim/diet: Ensure libx11-locale doesn't trigger multiple provider issues
664fb27 siggen.py: Use basehash if no taskhash
d599d90 bitbake/siggen: output filename on error in finalise
67b9706 ui/crumbs/hig: special case stock info icons in CrumbsMesssageDialog
fce8d37 ui/crumbs/hig: use HobInfoButton in place of gtk.Image with tooltip
ee0c302 ui/crumbs/imageconfigurationpage: make use of the HobInfoButton
26ff0fa ui/crumbs/hobwidget: implement HobInfoButton per Hob interaction design
9781b09 ui/icons: crop the info icons
8a8a656 crumbs/persistenttooltip: a new Gtk+ widget for use in Hob
19b38a6 package.bbclass: Drop python depends from rpmdeps
7eb3440 rpm 5.4.0: Add rpmdeps-oecore to replace rpmdeps for package.bbclass
2f4d784 package_ipk.bbclass: Ensure Source is set to something else packaging can fail
6bd23e0 adt-installer: Corrected wrong environment file names.
3f6ed2c formfactor: use full path to fbset
e189a71 prservice: Added sanity check for prservice connection.
10d6c4e bzip2: split into binary and library packages
c6bb463 documentation/dev-manual/dev-manual-start.xml: re-write of meta-intel
2ede6c8 documentation/adt-manual: Converted manual to use the poky.ent file
eebdda7 documentation/poky.ent: added new variable.
c25d7fc documentation/dev-manual/dev-manual-newbie.xml: Fixed typo.
7431a70 documentation: Updated copyright notices to 2012.
b8e1fb4 documentation/kernel-manual/kernel-manual.xml: Copyright updated.
ae647f6 documentation/dev-manual/dev-manual-common-tasks.xml: Review comments
1084bc5 documentation/yocto-project-qs/yocto-project-qs.xml: Misc. Edits
b257acf documentation/dev-manual/dev-manual-start.xml: Wording change
2cae64b documentation/dev-manual: Re-org of topics
25f74b3 documentation/dev-manual/dev-manual-newbie.xml: Fixed link
0b17271 documentation/dev-manual/dev-manual-common-tasks.xml: new section
4db23d6 documentation/poky-ref-manual/ref-variables.xml: New glossary entries
c38b2de documentation/dev-manual: New Layer section and metadata link anchor
eb829f2 documentation: Section change and cross-reference fixes
99d5ff0 documentation/dev-manual/dev-manual-common-tasks.xml: Moved Layer section
7018654 documentation/poky-ref-manual: Review edits on B and externalsrc.bbclass
e95d81a documentation/poky-ref-manual/ref-variables.xml: Changed examples
b206901 documentation/poky-ref-manual/development.xml: Fixed cross-reference
7aa91dd documentation/README: Created a README file
72a5684 documentation/yocto-project-qs/yocto-project-qs.xml: Title fixed
05cff8a documentation/poky-ref-manual/ref-variables.xml: B and BBCLASSEXTEND
36e3daf documentation/poky-ref-manual/ref-classes.xml: New externalsrc class
ad5de97 documentation/dev-manual/dev-manual-common-tasks.xml: New section
6aeeeba documentation/dev-manual: Added anchor point and edits to kernel config
758dd35 documentation/bsp-guide/bsp.xml: Edits to Misc Recipe Files
b0b5224 documentation: Edits to all style.css files
372fe9f documentation/yocto-project-qs/style.css: Changed notes, tips, etc.
0e640d4 documentation/yocto-project-qs/yocto-project-qs.xml: Welcome updated
2027c96 documentation/bsp-guide/bsp.xml: Edits to Display Support Files Section
cfbee01 documentation/bsp-guide/bsp.xml: Edits to Core Recipe Files section.
e856eed documentation/bsp-guide/bsp.xml: Edits to HW Configuration Options Section
d035bb8 documentation/bsp-guide/bsp.xml: Edits to "Layer Configuration File" section.
93ad9b5 documentation/bsp-guide/bsp.xml: Edits to pre-built user binaries section.
1764713 documentation/bsp-guide/bsp.xml: New "README.sources File" section added.
011738a documentation/bsp-guide/bsp.xml: Edits to point to files
be04e17 documentation/bsp-guide/bsp.xml: changes to Crownbay example
c0859cd documentation/dev-manual: Fixed YP Build Directory Term
ee69fb5 documentation/dev-manual/dev-manual-common-tasks.xml: bblayer.conf edit
a72bea5 documentation/dev-manual/dev-manual-common-tasks.xml: Review comments
8268a69 documentation/dev-manual/dev-manual-common-tasks.xml: review comments
9b5aedc documentation/dev-manual/dev-manual-common-tasks.xml: S variable edits
484cc84 documentation/poky-ref-manual/ref-variables.xml: Formatting changes.
87133d1 documentation/dev-manual/dev-manual-common-tasks.xml: Review comments
66ce594 documentation/dev-manual/dev-manual-newbie.xml: three small corrections
4cf3afb documentation/dev-manual/dev-manual-start.xml: Formatting correction. (From yocto-docs rev: 767ec4659e72622a08ff6d1923d14c46e6dd4331)
1b17e6a documentation/dev-manual/dev-manual-start.xml: Edits to BSP set up
7bc6ffe documentation/dev-manual/dev-manual-start.xml: Edits to poky-extras
2c52a78 documentation/dev-manual/dev-manual-start.xml: Edits to Kernel repo setup
bacff88 documentation/dev-manual/dev-manual-start.xml: Edits to YP files Git method
4dd2dc9 documentation/bsp-guide/bsp.xml: Edits for BSP Layer understanding
f7fb723 documentation/dev-manual/dev-manual-common-tasks.xml: review comments added
452d276 documentation/dev-manual/dev-manual-common-tasks.xml: re-write to 4.4
797fabd documentation/dev-manual/dev-manual-common-tasks.xml: Edits
70848f3 documentation/dev-manual/dev-manual-common-tasks.xml: Combined sections
7a88a29 documentation/dev-manual/dev-manual-common-tasks.xml: review comments applied
ea70ac5 documentation/dev-manual/dev-manual-common-tasks.xml: new section
d8b27b6 documentation/dev-manual/dev-manual-common-tasks.xml: Edits for links.
280addd documentation/poky-ref-manual/ref-variables.xml: Fixed typo.
c8d0eff documentation/poky-ref-manual/ref-variables.xml: Update S variable
e1b3ba8 documentation/poky-ref-manual/ref-variables.xml: Edits to WORKDIR glossary
5feff48 documentation/poky-ref-manual/ref-variables.xml: New TMPDIR glossary term.
a562fa6 documentation/poky-ref-manual/ref-variables.xml: new TOPDIR glossary entry.
7b5215b documentation/dev-manual/dev-manual-newbie.xml: edits to build dir term
1e60808 documentation/dev-manual/dev-manual-common-tasks.xml: re-write
9ad6975 documentation/dev-manual/dev-manual-newbie.xml: Added text anchor
7e23cd1 documentation/dev-manual/dev-manual-common-tasks.xml: Writer notes added.
eed1609 documentation/dev-manual/dev-manual-common-tasks.xml: Removed extra space.
43e6e25 documentation/dev-manual/dev-manual-newbie.xml: Edits to Git section
c74f732 documentation/bsp-guide/bsp.xml: qualified the commit ID difference
70ae82a documentation/kernel-manual/kernel-concepts.xml: New kernel section
3ecda3f documentation/bsp-guide/bsp.xml: Updated reference to manual
0bc0d35 documentation/bsp-guide/bsp.xml: Updated commit IDs
9dc84b7 documentation: Cross-referencing section fixed for consistency.
e8a6970 documentation/dev-manual/dev-manual-intro.xml: updated intro
6c9445e documentation/dev-manual/dev-manual-common-tasks.xml: fixed autobot link
b97cdc1 documentation/dev-manual: Reference link clean-up
646bda0 documentation/dev-manual/dev-manual-common-tasks.xml: links fixed.
797758c documentation/poky-ref-manual: Link updates
f908723 documentation: top-level manuals edited for new structure
a8108a2 documentation: File swap
4d09a3c documentation/dev-manual/dev-manual-bsp-appendix.xml: Edits to examples
deddea1 documentation/dev-manual/dev-manual-newbie.xml: Git section updated
babc066 documentation/dev-manual: Updates to names of bare clone and copy
9cfbefc documentation/dev-manual: Edits to clarify YP files
11c290c documentation/dev-manual/dev-manual-bsp-appendix.xml: tags/branches edits
e71d0af documentation/poky-ref-manual/ref-variables.xml: CONFFILES and FILES edits
7a5fa33 documentation/poky-ref-manual/ref-images.xml: Added three core-images
7b03d42 documentation/poky-ref-manual/ref-variables.xml: removed DISTRO_EXTRA_RDEPENDS
8769a25 documentation/poky-ref-manual/ref-variables.xml: Edits to CONFFILES and FILES
25cd1ba documentation/poky-ref-manual/ref-variables.xml: Edits to IMAGE_INSTALL
2e5e02a documentation/poky-ref-manual/ref-variables.xml: Added CONFFILES and FILES
739dad2 documentation/poky-ref-manual: Removed ROOT_FLASH_SIZE from document.
0da071e documentation/kernel-manual/kernel-concepts.xml: More intermittent edits
81629e3 documentation/dev-manual/dev-manual-bsp-appendix.xml: edits to poky repo setup
62907f7 documentation: More information about DL_DIR added.
ddaf79d documentation/poky-ref-manual/ref-variables.xml: Fixed broken reference.
ba0e818 documentation/poky-ref-manual: Updates to IMAGE_INSTALL
2a0a3d6 documentation/poky-ref-manual/extendpoky.xml: proposed section
57f3951 documentation/poky-ref-manual/ref-variables.xml: new BBMASK glossary entry
b94e910 documentation/kernel-manual/kernel-how-to.xml: edits to tree construction
8f9dc14 documentation/kernel-manual/kernel-concepts.xml: new section starting
4baaf11 documentation/yocto-project-qs/yocto-project-qs.xml: added xsltproc package
8cebd20 documentation/kernel-manual/kernel-how-to.xml: links to manuals removed
c671dde documentation/Makefile: new 'edison' variable for YP dev manual.
e66c7a5 documentation/Makefile: fixes for missing tarfiles
f8d248e documentation/dev-manual/dev-manual-kernel-appendix.xml: edits to example
fe11d65 documentation/dev-manual/dev-manual-kernel-appendix.xml: Fixes to examples
bee2988 documentation/yocto-project-qs/yocto-project-qs.xml: fop added to packages
4110fa7 documentation/poky-ref-manual/faq.xml: Fixed links to python
a9195b2 documentation/adt-manual/adt-command.xml: Corrected wording for setup
bc4b4a9 documentation/adt-manual/adt-eclipse.xml: Fixed yoctotools reference
855b56c documentation/adt-manual/adt-eclipse.xml: Fixed menu reference
03a69b6 documentation/adt-manual/adt-eclipse.xml: Added more info for example.
f6ffa12 documentation/adt-manual/adt-eclipse.xml: Removed redundant link
3d0ad29 documentation/adt-manual/adt-eclipse.xml: Updates to plug-in install
b95e549 documentation/adt-manual/adt-package.xml: Fixed reference to manual.
83e8921 documentation/poky-ref-manual/ref-variables.xml: PDF formatting fixed.
2df4570 documentation/poky-ref-manual/ref-variables.xml: updates to rootfs variables
4c6c766 documentation/adt-manual/adt-prepare.xml: added unpacking text
655f357 documentation/dev-manual/dev-manual-model.xml: Removed 1.1.1 strings
d783a68 documentation/adt-manual/adt-prepare.xml: update link to get ADT inst tarball
aa2df47 documentation/adt-manual/adt-intro.xml: Fixed broken perf link
01f0467 documentation/dev-manual/figures/kernel-example-repos.png: update figure
e26a00d documentation/dev-manual: Updates to index of releases
4f913c6 documentation/dev-manual/figures/index-downloads.png: updated picture
e1ebcbc documentation/dev-manual/dev-manual-kernel-appendix.xml: cleared up note
8d170fc documentation/dev-manual/dev-manual-start.xml: updated to clone output
40d0c8b documentation/dev-manual/dev-manual-start.xml: poky-extra output updated
226dfa1 documentation/dev-manual/dev-manual-kernel-appendix.xml: General Edits
57acbda documentation/dev-manual/dev-manual-model.xml: Fixed external link
c063c23 documentation/dev-manual/dev-manual-newbie.xml: Fixed broken link to Git
f6d3ca2 documentation/dev-manual/dev-manual-newbie.xml: fixed broken link
a5f400c documentation/dev-manual/figures/git-workflow.png: Updated figure flow
39b508f documentation: Variables for docs and QS variablized
bc911b8 bitbake.conf: use empty SRC_URI by default
20524e1 gtk+: Amend upstream status of configure-nm.patch
7172b4b gdk-pixbuf: Pick up ${NM} from the environment.
31a03ed kernel.bbclass: Remove warnings for modutils and modprobe.d
8cef3e5 external-csl-toolchain: override PKGV, not PKGV_${PN}
e1803f2 xz: split out liblzma as seperate packages
fef41fe polkit: Fix Upstream-Status tag
a79bddd valgrind: Support compilation without X11
d4d7461 mime.bbclass: Fix bracket error.
b417983 shadow-sysroot: Fix for multilib
da8dfd8 multilib: extend all recipes in multilib.conf
ec9d319 linux-yocto/rt: udpate SRCREVs to 3.2.9-rt16
f6bd7d3 linux-yocto/meta: fix incorrect config references
7931b64 psplash: Add mising commands module import.
8ed044e gcc: Upgrade to 4.6.3 release
d7663ff logrotate 3.7.9: Allow rotate log across filesystems
2129519 linux-yocto: v3.2.9, v3.0.23 + fixes and updates
a8e78d5 linux-yocto: use bareclone option
cddd52a image_types: add IMAGE_ROOTFS_ALIGNMENT
ce34212 libsdl: add DirectFB support
70cff1c bluez4: add dependency on libcheck to enable test modules
62a2a41 udev-164: don't hardcode path to pidof
a8dc76e base.bbclass: Fix PACKAGECONFIG handling when no flags are set
9195e96 polkit: Default to shadow, not none to fix build failures
5419dc1 bitbake: Drop fetch v1, v2 provides a much better codebase to build from
ff73b02 meta/classes: Convert to use appendVar and appendVarFlags
082cc60 libx11: reinstate PE=1 that got lost in the big meta-oe Xorg merge
d0c5202 gtk+ 2.24.8: bump PR to force rebuild and feed update
9da18ac polkit 0.104: add 2 backports from upstream to fix crashes during auth
f8c0e6e polkit 0.104: convert pam code to PACKAGECONFIG and adhere to OE recipe styleguide
b1aeaa8 meta: Replace bb.data.expand(xxx, d) -> d.expand(xxx)
22f0df2 sstate: Remove unecessary bb.data.expand()
06f2f8c meta: Convert getVar/getVarFlag(xxx, 1) -> (xxx, True)
d01dadf meta/classes: Convert to use appendVar and appendVarFlags
a439d32 soc-family.inc: to be included in machine.conf to add SOC_FAMILY to MACHINEOVERRIDE
9a6aadb libx11-trim: Add error information from LSB Test Suite to makekeys_crosscompile.patch
03abe80 libx11-1.4.4: Add patch "makekeys_crosscompile.patch"
65c9de5 libx11-1.4.4: Add patch makekeys_crosscompile.patch
d3b88ec gcc-cross.inc: Fix cross testing scripts to work with dash
b6d744a eglibc-testing: Fix testing script to work well with dash
48fe5bd wpa-supplicant: fix breakage during rebuild
98bb8f7 image_types: Ensure duplicate compressed types aren't created
1f03353 image_types.bbclass: We need to preserve order in the types variable and avoid set()
93b3692 base.bbclass: If unpacking again, wipe out ${S}/patches
d1168cc lib/oe/patch.py: Fix and improve PatchTree() resolver logic
01954b9 qt4: make pulseaudio support conditional upon DISTRO_FEATURES
2b918b6 stderr would previously be appended to stdout, corrupting the result when something was outputed to stderr but exit code was still 0 (non-fatal warning messages). This commit makes the code parse only stdout, but output stderr if an error happened.
d868624 bitbake/bitbake-prserv: Set file mode bits "x".
348ea45 initscripts: Create the volatiles cache atomically.
6c959b1 linux-yocto: update to v3.2.8
11f8de9 linux-yocto/meta: add pvr feature description
54d1f5f linux-yocto: make kernel_checkout reentrant
60eed31 sudo: upgrade to 1.8.4
78ae634 image_types: Ensure dependencies for compression types containing multiple dots are handled correctly
8ac3b74 V2 Fix libpam's chmod
6fd4699 scripts/oe-git-proxy-socks-command: Add fallback to use nc
64bd33d scripts/oe-git-proxy-socks-command: Improve error fallback/handling
6b6aa17 busybox: Restore 'date' compatability
8b07ab0 initscripts: Properly format date when set from timestamp
1abce24 libproxy: Fix build errors due to missing prototypes
7bb36e5 site.conf.sample: Fix broken SOCKS proxy setup and configuration
18af1f5 externalsrc.bbclass: Add class for handling external source trees
e682cdc toolchain-scripts: Exclude variables causing the recipe to become unecessarily machine specific
a747fd4 util-linux: Fix build when NLS is disabled
4583dcc distro_tracking: Upgrade and Manual Checks
100111f util-linux: Fix removal of lscpu for non-GPLv3 Build
a9101b1 pixman: updat to 0.24.4
6cdf714 glproto: Update to 1.4.15
24276c2 hdparm: update to 9.39
f0e0891 netbase: fix QA Warnings
51ab187 perl: remove empty directories to clean QA Warnings
bec2e54 libx11-trim: Drop obsolete 1.3.4 version
e28927d self-hosted-image: Create a VMDK image with correct SYSLINUX_* settings
0e56519 image-vmdk: Create image_vmdk class and setup image and image_types to use it
157b44c libx11-trim/diet: Add RPROVIDES for libx11-dev
60597ab image-live: Allow LABELS to be modified
e175f94 linux-libc-headers-yocto: bump to v3.2.8
da5236c bitbake/build: report TaskFailedSilent events as "Failed"
db4a199 bitbake/uihelper: restore line to record failed normal tasks
8078553 bitbake/runqueue: fix python error on scenequeue task failure
ba8538b runqueue.py: initialize rqexe at RunQueue's init function
13cad71 Hob: Fix pressing "stop" build
7ee14c1 Hob(crumbs/builder.py): adjust the main window's position and ignore the case lower than 1024x768.
d76e62f Hob: fix a bug that the image size is shown incorrectly in the image details page.
24883b4 Hob(crumbs/hoblistmodel.py): Add mapping for rprovides and pkg
61d2081 Hob(crumbs/hoblistmodel.py): Fix recipe's populate() function
ca56641 cooker: fix calculating of depends and rdepends
2d23943 cooker.py: Fix a bug due to variable name
612173b command.py: remove the resolve parameter in generateTargetsTree
222ec1c Hob(crumbs/builder.py): remove the code commented out in the builder.py
1faa0c5 crumbs/hig: tweak UI and layout of LayerSelectionDialog
776e507 hig: try to avoid setting explicit dialogue sizes
1f57d6c crumbs: fix button order in several dialogues
7ccdd20 crumbs: move towards more standard dialogue spacing
ec1b95f crumbs/builder: use the name Hob consistently
ae9539f crumbs: Factor common dialogue configuration out
5090837 Hob: enable indicators on the "Included" tab in the recipe selection page and the package selection page
69317f7 Hob: make the image configuration page not to flash the progress bar
23efe61 Hob: fix a bug in builder.configuration.curr_mach
edf3942 Hob: image configuration page doesn't need dialogs any more
53cc2c6 Hob: include hddimg and iso into image types.
73444fb Hob: cleanup those class methods in HobWidget
7f61657 Hob: fixed the issue in the brought-in-by dialog.
b8582dc Hob: avoid the image selection dialog to walk through all directories and its sub-directories, when users click "My images".
030ba4b Hob: make HobViewTable more general in hob and make the image selection dialog and the image details page reuse it.
8f07bdc image_types_uboot: Update to work after recent image_types changes
40b81c7 image_types: Correctness fixes
320558f More quoting fixes
0cfceaa parse/ConfHandler: Fix enthusiatic export regexp matching
7fee190 image_types.bbclass: fix bzip2 and xz compression commands
c97ebae image_types.bbclass: properly support IMAGE_LINK_NAME as empty
05c7d5d image.bbclass: do not create image manifest link if IMAGE_LINK_NAME is empty
a462406 syslinux: fix packaging of ${PN} and ${PN}-staticdev
426b7fd busybox: Enable 64 bit shell tests, and disable non-standard date format interpretation.
d86e308 licenses.conf: fix quotting of SRC_DISTRIBUTE_LICENSES
2474e6c tcl: Ensure native verison has correct dependencies and builds
7f67843 bootimg: Fix Quoting
2684714 syslinux: bump PR
0e39107 bitbake: implement BB_VERBOSE_LOGS
8fbdf5f tcl 8.5.11: fix packaging for native version
b82a793 More quoting fixes
f60a5d1 bitbake/ConfHandler: Be more strict about variable quoting
126f634 image_types: Refactor compression code into a generic compression solution
93d157b qemugl: Fix gl apps failure on qemu-x86-64
3152bae libskba: Fix for multilib
aebb13e gnupg: Fix for multilib
2902bbe tcl 8.5.11: fix packaging
695a609 gettext: Get gettext use its own libunistring
991e34c mtd-utils: Don't use host 'ranlib' or 'ar'.
13949f2 qt4.inc: depend on tiff
36a0bde tune-ppc*.inc: update to use new default value for TUNE_PKGARCH
1919ba2 bitbake.conf: add default value for TUNE_PKGARCH
b3f0555 multilib.bbclass: allow TARGET_VENDOR_virtclass-multilib to be overriden
e42bc47 tune-ppce5500: consolidate ppce5500 and ppc64e5500 into one tune file
df329ad arch-powerpc{, 64}.inc: update/add PACKAGE_EXTRA_ARCHS for powerpc/powerpc64
6beb61f linux-yocto: allow non-branched repositories to check out
84ad667 linux-yocto: update 3.2 kernel to v3.2.7
d1130b4 linux-yocto: update 3.0 kernel to v3.0.22
9fff795 bluez4: Fix build on x86/amd64 with gcc 4.7
7f27de5 distro_tracking: Account for updates and Manual Checking
6223271 bind: add DEPENDS for libcap
68f2485 tiff: Update to version 3.9.5
adc53a0 xf86-video-intel: Update to version 2.18.0
9a3d725 sqlite3: Update to version 3.7.10
d6e0cbc boost: Update to version 1.49.0
4ab5d64 mkfontscale: Update to version 1.1.0
4770a6e mkfontdir: Update to version 1.0.7
5fb90bc libdrm: Update to version 2.4.31
86d3f77 psmisc: Update to version 22.16
debd4da file: Update to version 5.11
79e8d53 util-linux: Update to 2.21
ef461c4 qemu: Add glib-2.0 as depends
caea5b9 gnupg: Add missing patch for curl_typeof_fix
0733f7a qt4-tools-nativesdk: improve and tidy up qmake build
afc6d1b qt4-tools-nativesdk: fix build of 4.7.4
6be627f qt4: build qmake for the target
76c1712 qt4: fix compile error in Qt 4.8.0 with gcc 4.6
cf87669 task-core-lsb: add lsbtest to RDEPENDS_task-core-misc list
835197d distro_tracking_fields: add information for lsbtest
36a2f33 lsbtest: Add recipe for LSB tests and automate test
c3a23ec scripts/prserv-tool: Adepted to new bitbake cache.
ce0ecf5 bitbake: fix setscene task start/failure handling
e7952c1 bitbake/runqueue: make dry-run do everything except execute
959981d bitbake: Added BBINCLUDED variable.
927bec5 bitbake.conf: Create a new filter variable BB_HASHCONFIG_WHITELIST
a295cdc data_smart.py: Uses BB_HASHCONFIG_WHITELIST to filter unnecessary variables
f420fb3 glib-2.0: Disable fam, we don't depend on it
6cf61b3 arch-armv7.inc: fix quoting
3349b88 More quoting fixes
36e918b Quoting fixes
21f2c0b pulseaudio: Really disable orc support
c02bea6 gnupg: Update checksum, fix configure and compliation issues
43d9193 syslinux: Package unpackaged files in -misc
eb8ce05 automake: omit compilation of pyc files on install
6aa3a09 xorg-lib: don't build libs unless requested by DISTRO_FEATURES (fix up)
1adeb37 qt4-native: set headerdir as done in regular builds
5ecae0b local.conf.sample.extended: Add config sample for disk space monitoring
9674ea2 V5 Disk space monitoring
aac4567 bitbake/runqueue: Ensure finish_now() sets the runqueue state consistently
1cb4614 gdb-cross-canadian: build gdb with python support
56bbea6 layer.conf: add keymaps to SIGGEN_EXCLUDERECIPES_ABISAFE
17fe296 sstatesig: add SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS option to exclude well defined recipe->dependency
745f5c3 bitbake.conf: remove TARGET_ARCH from in SDKPATH
7160f87 bitbake.conf: use weak assignment for BB_CONSOLELOG
be1443b cross-canadian: Set STAGING_DIR_HOST correctly
e17c709 glib: Drop dbus dependency, it isn't useful
a54932d poky-tiny: Assume pkgconfig is provided
2ff96d6 crumbs: add back progress implementation for depexp
c9e95d3 bitbake/cooker: terminate when errors found in layer configuration
e894f0e initscripts: mount and unmount cifs network filesystems
ee86f89 layer.conf: use += for SIGGEN_EXCLUDERECIPES_ABISAFE and split to multiple lines
b6bd0f8 useradd.bbclass: override USERADDSETSCENEDEPS to empty when building cross packages
d7cef16 license.bbclass: Symbolic links of generic license
5272e88 license.bbclass: Gather Pkg level licenses
cde2584 less_444.bb: Adding license email from author
3be2c7d distro_check: fix the fedora URL for rleases as they seem to have moved
21ddc96 scripts/hob: Launch the new hob
f496389 gst-plugin-bluetooth: upgrade to 4.98 and add checksums
3a20beb shadow-sysroot: disable package creation
656f9a0 Hob: A new implemetation (v2)
14df6d5 linux-yocto: improve checkout error handling and reporting
db94ad4 sstate.bbclass: improve performance of sstate package creation
c8af055 qemu: remove version 0.14.0
ef36dc8 libsdl: allow building without x11
189a854 qemu: enable building qemu-nativesdk without x11
dfd6c54 psplash: allow building multiple splash executables
5dc5153 psplash: use OpenEmbedded logo
16b715b meta-yocto: add bbappend to restore Yocto psplash image
408fd37 fetch2/git: create bareclone option
72ce5c4 conf/bitbake.conf: add DISTRO_FEATURES_BACKFILL
5ac604e glib-networking: Add intltools-native to DEPENDS
ae34e43 task-self-hosted: add hicolor-icon-theme and socat
c867e31 mpfr: add patch to fix build for thumb
7c46f0b package.bbclass: Add a sanity check to the debugsrcdir removal code
f017b9b libfm: Fix packaging and dependency issues
d02f7b4 runqueue: fire sceneQueueTaskStarted event when a setscene queue starts
e6230da image.bbclass: Ensure timestamp matches format used in initscripts after recent changes
5aca6a7 update-rc.d.bbclass: do nothing for extended cross packages
826c1a1 rootfs_ipk.bbclass: fix status file location in rootfs
cc2ef82 meta-hob: Add a new meta-hob layer
99c805a packageinfo.bbclass: add a new bbclass to pass package information
9531161 package.bbclass: set package size into pkgdata for hob2's use
f378918 gthumb: Resolve staticdev QA warnings
95eb87b autotools.bbclass: Make builds deterministic
6ad11cb insane.bbclass: Only depend on desktop-file-utils-native when we need it
2fb9aac package.bbclass: Remove empty directories created as part of srcdebug handling
e7caf3d dbus-glib: Correctly package bash completion pieces to avoid QA warning
fa10f79 glib-2.0: Fix unpackaged files warning
2065d39 cracklib: Fix unpackaged files warning by disabling autodetected python
68a738e libgcrypt: Fix unpackaged file warning
050be51 readline: Add a patch to remove the redundant rpath linker option
bd7f819 libusb-compat: Address unpackaged files warning
b899244 libusb1: Address unpackaged files warning
f409cf4 rpm: Fix LICENSE field
b1d418e eglibc: Fix package warning
1d7728e distro_tracking_fields: fix typos
da1b26c task-self-hosted: make the package lists alphabetical
1eec640 task-self-hosted: remove duplicate packages
6224e30 A script to clean obsolete sstate cache files
ef29851 openssl: Move libcrypto to base_libdir
136d9cd boot-directdisk: Use correct SYSLINUX_TIMEOUT and SYSLINUX_ROOT instead of APPEND
5d04c6e image-live: fix SYSLINUX_TIME and add SYSLINUX_ROOT instead of APPEND
1792a02 image_types: add vmdk type to use with VMware
8ea3bf3 syslinux: add SYSLINUX_ROOT to APPEND line
4fe569e syslinux: Use SYSLINUX_TIMEOUT and SYSLINUX_PROMPT to configure syslinux
dced0c1 ppp: Fix rp-pppoe plugin compilation
83d1d13 mpeg2dec: depend on libx11 conditionally
c6580ce gst-plugins-base: depend on libx11 and libxv conditionally
8d26a9f e2fsprogs: Cope with ${libdir} and ${base_libdir} being the same
578b6f2 busybox: don't create /etc/default
762966e dbus: Remove empty ${lindir}dbus-1.0/test directory as we don't build tests
566ae97 e2fsprogs: e2initrd_helper was moved in libdir but not packaged correctly in FILES_libext2fs
aba82ec nspr: Add patch in order to remove rpath from binaries
d8a78f3 nspr: Compile nspr with tests
af57b2e nspr: Integrate version 4.8.9
adbe094 dhcp: Update to 4.2.3-P2
a470400 autotools.bbclass: Don't copy into non-existant directory
a6fb193 wireless-tools: remove ldconfig call from install-libs
daeb5be initscripts: Make /etc/timestamp consistent again.
831e0b5 xorg-lib: don't build libs unless requested by DISTRO_FEATURES
5a4b06d e2fsprogs: remove ldconfig call from install-libs
30b709c sstate.bbclass: add *_config to SSTATE_SCAN_FILES
331540c apr: add apr_rules.mk to SSTATE_SCAN_FILES
9d6d5e3 libsdl 1.2.14: regenerate patch so it applies with 'patch' as well as 'git apply'
26882fdd sstatesig.py: Move package exclusion list to the layer config
77988c3 sstatesig.py: Add handling for machine specific module dependencies
2ede678 python: add Makefile to SSTATE_SCAN_FILES
571c9c7 lib/oe/utils.py: use bb.utils.vercmp_string
8fa3380 bitbake: change for adding progress bar in Hob2.
de77b97 command.py: add resolve option for generateTargetsTree API
85fa989 command.py: Add a new API triggerEvent()
cb87308 command.py: add new API to get the cpu count on the server
c42f973 bitbake: Add client socket info for BitBakeServerConnection
19089ac bitbake: add -B option to bind with interface
b70bcb3 event.py: Add new events RequestPackageInfo and PackageInfo
8e737db cache: Use configuration's hash value to validate cache
99d326a bitbake: add file and line number to ParseError
ebc0d42 bitbake: fix parse errors not being reported
4a1c163 siggen.py: Pass the datacache to signature generator classes
d8b3718 texi2html: Fix for multilib
65c1399 quicky: Fix for multilib
a578fbc netbase: remove redundant assignments
729a901 base.bbclass: check all entries of FILESPATH for MACHINE overrides
f409a49 external-csl-toolchain: skip parsing if CSL_VER_MAIN isn't set
8300757 sanity.bbclass: Add ABI version 8, used for transition from the OEBasic to OEBasicHash stamp layout
ea2c8de meta-yocto: Add abi_version setting version 8, to match the OEBasicHash change and trigger warnings for existing build directories
3a23386 meta-yocto/conf: Change default signature handler.
30d0bbf layer.conf: We really need to be able to override files in the core so reverse BBPATH priority
c8286e0 bitbake/ui/knotty: fix incorrect exit code
8e0c7b3 siggen: compare runtaskdeps dictionary even when they have the same size
e228289 bitbake/knotty: ensure CommandFailed increases error count
b62249f bitbake/knotty: ensure we return non-zero exit code on Ctrl+C
5210cc4 bitbake: show appropriate warnings for universe target
0aedc60 Fix parser hang at 0% with single-core machines
f7c0488 persist_data: survive if sqlite3 couldn't enable the shared cache
52ebd5f knotty: shut down more cleanly
cf60f95 cooker: roll our own process pool
87e32ed iputils: Add base_libdir to VPATH in order to find the crypto library
d27351a consolekit: depend on libx11
92dd65f udev.inc has a bad link for udev home page; update the link
9c16786 Add sanity checks for eglibc locale
b2a84e7 libsdl: add fix for new _XGetRequest symbol backported to libx11
888f9d5 eds-tools: Update it to fix the build error
5aec33b buildhistory_analysis: correctly split RDEPENDS/RRECOMMENDS
79eb4b8 buildhistory_analysis: avoid noise due to reordering
e155952 classes/buildhistory: fix splitting on + in package list fields
1b7014f classes/buildhistory: use hostname instead of reading /etc/hostname
04c290a classes/buildhistory: sort FILELIST in package info
3cce319 classes/buildhistory: sort and de-dupe dependency graphs
7b3ea97 classes/buildhistory: squash spaces out of image variables
9eab860 task-self-hosted: add connman and connman-plugin-ethernet
0f00536 mini-x-session: try to use a resolution that's big enough for hob2's window
ab5eed4 gcc: Excluding the DATE/SRCDATE from do_patch dependency.
2101ea6 rpcbind: add DEPENDS on quota for rpcsvc/rquota.h
63b680e u-boot-fw-utils: Add DEPEND on mtd-utils
b2196ca zlib: remove ldconfig call from install-libs
0761649 recipes: bump PR to rebuild .la files without libz.la
c3b3a68 scripts/combo-layer: allow updating a specific component(s) only
7f880ca conf/bitbake.conf: remove Opie definitions
362fd55 classes/sdl: remove Opie-specific desktop file/packaging
8a31618 stat: remove NATIVE_INSTALL_WORKS
cf10b9b scripts/combo-layer: add branch option to example config
8e7cd32 scripts/combo-layer: avoid saving last revision if unchanged
f273c04 scripts/combo-layer: avoid error when config file is outside repo
0656f57 scripts/bitbake: pass through debug options to initial pseudo build
41a83cc guile: fix cross configure failure
754847f Revert the switch to futures for now
d366c18 siggen.py: Handle cases where the input to symmetric_difference() may be None
d3d1101 valgrind: Fixed Added-support-for-PPC-instructions-mfatbu-mfatbl.patch Upstream-Status
a2a03ba gcc: Ensure same sstate hashes for shared soruce directory
c62296d gcc-4.6: Some small performance tweaks
12306d0 package.bbclass: Optimise the per file rpm handling
d609129 sstate.bbclass: Optimise sstate_hardcode_path
765547e gnupg: Add missing DEPENDS on libgcrypt
84983af sat-solver: Fix build with zlib 1.2.6
a142cbd zlib: Upgrade 1.2.5 -> 1.2.6
65d296a distro-tracking-fields: update clutter, clutter_git and mx
18c3197 clutter: upgrade git recipe to reflect 1.8.4 tag
970fcc8 mx: ensure gettext and dbus are present
15ff81b mx: update to 1.4.2
51c719d clutter-1.8: update to clutter-1.8.4
0de4750 powerpc64-linux: Update cached autoconf values for libpcap on powerpc64
c56792c u-boot-fw-utils: Add for v2011.06
433f2ea distutils.bbclass: override LDSHARED so we use the linker for this build and not the one used in sstate-cache
ef5bad0 cross.bbclass: add virtclass handler
af85900 useradd.bbclass: skip processing on virtclass-cross extended packages
d905653 external-csl-toolchain: fix mtd-user.h issue
8d41b0d bitbake-layers: add copyright notice
1e8b629 tcmode-default: add preference for gdb/gdbserver
1a35ed4 classes/buildhistory: sort list fields in package info
8653bf4 classes/buildhistory: sort image file list
4255cb8 external-csl-toolchain: split out gdbserver packages
57b7b8a external-csl-toolchain: correct binary packaging
b5b4066 external-csl-toolchain: set PKG/PKGV for staticdev
af1ddab task-core-tools-profile: fix valgrind for arm and systemtap for mips
8054217 poky.conf: Fix the MIRROR URI
be174f3 task-core-tools-profile: change to match oe-core
eb1be23 mirrors.bbclass: Add yp.org and oe.org to fallback mirrors
0c1386c uclibc: Upgrade recipes from 0.9.32 -> 0.9.33
b9ff968 dhcp: move dhcp leases files handling to postinst/postrm
54fd9ad gcc-cross-testing: Fix evaluation of user and target name
d6b885b classes,recipes: Replace POKY_* with CORE_IMAGE_*
41936cd pseudo: Wrap renameat and opendir
bdc50cb mtools-3.9.9: Use correct URI for the mirror
a50eeb8 libx11: Backport _XGetRequest API
a402167 libdrm: Fix build failure unearthed by uclibc
fadd554 python: Fix build failure of python-elementtree on x86_64
7d9ac1d gconf,consolekit: Avoid polkit when compiling with uclibc
fd2983e runqemu-internal: qemuarm can handle 256M
a481c10 Enable options needed for ltp to compile
7215c25 task-core-tools: Divide it into 3 recipes
8df37ad linux-yocto: fri2: use emgd-1.10
5d02d8d kern-tools: remove explicit 'yocto' references from auto-bsp handling
a6065e7 linux-yocto: rt compiliation fix
bb1e769 linux-yocto: meta updates for sys940x and cleanup
568bdc7 linux-yocto: locate and use out of tree features specified on the SRC_URI
44f0a2c xorg-apps: Bump PR to accomodate meta-oe recipe deletion
23c4961 udev: stop providing cache support by default
98a994a systemtap: build and install uprobes.ko
c2c215b systemtap: extend the recipe to build the native package
3709697 systemtap: bump SRCREV to grab version 1.7
ce0740f u-boot inc: update inc file for newer u-boot versions
5a33401 libcap: Cope with ${libdir} and ${base_libdir} being the same
f2b55ac libusb-compat: Cope with ${libdir} and ${base_libdir} being the same
83dcff4 libusb1: Cope with ${libdir} and ${base_libdir} being the same
e33f828 webkit-gtk: Make webgl support configurable via DISTRO_FEATURES.
cc036d4 webkit-gtk: Fix error.html resource path.
c54070c openssl-0.9.8: Remove in favor or 1.0.0
4825e2a gnupg-1.4.7: Update Patch Info
0e80bb7 busybox: Add flock utility to default configuration.
67cfa74 bootimg: Use the same OS files for each boot method
50a097b tune-mips32.inc: Add mips32-nf and mips32el-nf
cb89d43 libzypp: add missing runtime dependences on gzip and gnupg
8fcfbae gnupg: add 2.0.18 (initial recipe)
6034d1c libksba: add 1.2.0 (initial recipe)
3301dc4 shadow-securetty: allow root logins on usb serial gadget device
3b1ad76 classes/patch: optionally return non-patch sources
4be9d82 Add EXTERNAL_TOOLCHAIN to CMAKE_FIND_ROOT_PATH
a299396 external-csl-toolchain: extract version info from the toolchain
79e48d8 external-csl-toolchain: leverage eglibc's packaging for more granular output
cbe0a0d external-csl-toolchain: support ia32
c0d7e9b external-csl-toolchain: support mips/ppc/arm
b942a8e eglibc-package.inc: don't include debug files in -pic
34ba3b6 binutils: fixes for build with an external csl toolchain
6cafc00 LSB_Setup.sh: Add locale resources and startup script avahi-daemon
bb5704a init-functions: Add two functions
14e6b02 strace: add x32 support
e1be40c byacc: upgrade from 20111219 to 20120115
e87bbf1 distro_tracking: update for current upgrades
85beca9 python-dbus: upgrade from 0.84.0 to 1.0.0
f0262b7 quilt: upgrade from 0.50 to 0.51
a03c350 gdb: upgrade from 7.3.1 to 7.4
f5d505e gmp: upgrade from 5.0.2 to 5.0.3
0637f1b distro_track: Track Updates
6c988aa xf86-input-keyboard: Update to 1.6.1
e7973af xinit: Update to 1.3.2
735371d libdrm: Update to 2.4.30
6e28930 libidn: Update to 1.24
30049f0 file: Update to version 5.10
b1d4d35 gnupg: Add gplv2 version 1.4.7
954a0bf rxvt-unicode: Update to 9.15
cba606f gnutls: Update to 2.12.16
d54c972 openssl: Update to 0.9.8t (gplv2)
e2d9ed9 openssl: Update to 1.0.0g
7b36125 self-hosted-image: add package management for correct installation
31f3491 task-self-hosted: add python-pkgutil since it's required
45228d3 task-self-hosted: add disk partitioning tools
f7a1bd4 linux-yocto_3.2: Fix missing quote that was triggering parsing errors
a402d0e meta-yocto/local.conf.sample.extended: add LICENSE_FLAGS_WHITELIST section
15f09b1 atk: add native / disable introspection / merge atk.inc->recipe / change license
cd5225a gconf.bbclass: Add proper RDEPENDS to packages with gconf postinststep.
7bc766b distro_tracking_fields: take sysklogd off Saul's plate
5c3323b sysklogd: various fixes so it starts/stops cleanly
f408dd1 pciutils: fix configure script for dash
ac62f06 udev: improve udev-cache robustness
7923ba8 external-csl-toolchain: avoid the hardcoded version/prefix
ae21dc1 external-csl-toolchain: fixes for metadata changes
aa2c4e3 libc-package: fix typo in LOCALETREESRC default value
6028cd1 external-csl-toolchain: fix critical PATH manipulation bug
a95445c bitbake: Add description into the cache and clean up cache duplication
8d4d9a1 package bbclass: allow per package PRIVATE_LIBS
8ac227e Fix the issue that adt-installer tar ball is not regenerated if sstate is on, and other minor bug fixes
58026ec e2fsprogs: remove unneeded patch and re-enable PARALLEL_MAKE
7664058 pkgconfig: Ensure pkgconfig RDEPENDS are tracked
ef32862 opkg-utils: convert to git repo at git.yoctoproject.org
2175842 bootimg: Do not force FAT32 on all images, it violates the FAT specification
89b71a5 meta-yocto/poky.conf: set qemu* preferred linux-yocto version to 3.2
6719d3e linux-yocto/meta-yocto: create linux-yocto 3.2 bbappend
1655fd1 linux-yocto/meta-yocto: update to v3.0.18 + features
6466229 fetch2/git: Add workaround for clone using alternates problem
38daf8b cooker: add missing shutdowns to the exception handling
5552627 prserv: Do not ping PRService if not required
90e99a5 bitbake-layers: list overlayed classes in show-overlayed
86a5fcd bitbake-layers: add show-recipes subcommand
526264e bitbake-layers: improve show-overlayed output
3d2f6d5 bitbake-layers: use directory name as layer name
cf425a1 bitbake-layers: use dashes in subcommands
936aca7 rootfs_ipk: remove runtime_script_required usage
22181a7 gcc-runtime: fix override from poky-lsb to linuxstdbase
0de4137 default-providers: add kbd as PREFERRED_PROVIDER for console-tools
dc15367 gdb-common: Drop elfutils from DEPENDS
a092311 linux-yocto: update to v3.0.18 + features
e670fdc linux-yocto: add kernel 3.2.2 support
278e53c kern-tools: import config audit and branch manipulation updates
0d1dee2 tzdata_2011n: provide pkg_postinst and timezone defaults
ae3184c classes: replace 'Poky' with 'OE-core'
2805ff1 alsa-utils: make alsa-utils-alsactl recommend alsa-states
a26a2cb alsa-state: fix RDEPENDS assignment
37d93b9 qt4-tools-nativesdk-4.8.0: fix build
9123e9e genext2fs: fix inode computation
84e24f0 image_types.bbclass: refactor cpio images generation.
636d7e3 useradd.bbclass: Fix missing quote
b719d7e useradd: Ensure dependencies are only added for target recipes, not native or nativesdk
df823d5 distro_tracking_fields: fix the typos in the field of maintainer.
973f93c libtool 2.4.2: fix missing quote in FILES_libtldtl
75fcfde useradd.bbclass: Add explict setscene dependencies to ensure correct ordering of setscene tasks
3b47c53 useradd.bbclass: Ensure pseudo can load in the pseudo unloaded case
0a3a15c useradd.bbclass: Execute user addition code before do_package_setscene, not after do_populate_sysroot_setscene
9a58e31 sstate.bbclass: Add support for sstate preinst functions
de7a6ab runqueue.py: Add inter setscene task dependency handling
9aeb38a runqueue.py: Fix missing setscene dependencies
2a361cd data/runqueue.py: Fix commented out test code after variable name changes
238a47d shadow-sysroot: Simplfy login.defs installation
f54a443 libgcc: Add INSANE_SKIP of staticdev for libgcc-dev and libgcov-dev
7aa33db insane.bbclass: Add test for static .a libraries in non-staticdev packages
cd7da08 pm-utils: Add grep to RDEPENDS to avoid command failures.
494a500 linux-tools: don't build perf when GPLv3 in INCOMPATIBLE_LICENSE
3a9e568 uclibc-git: Update to latest RC
e60acb7 eglibc-2.15: Add upstream status for x86_fenv.patch
5ff048d uclibc: Dont package all .a in uclibc-dev
609f637 util-linux: Change SRC_URI to a fetchable location
d8aada2 ltp: Update recipe and fix building on uclibc
8549ebb distro-tracking-fields: update entries for clutter-gst-1.8
6882a60 clutter-gst: update to 1.4.6
0d7dfed cogl: update upstream status for build_for_armv4t.patch
0287f64 gcc-cross: Don't reference machine specific variables
8f55130 bootimg: Fix a math thinko in the block count calculation
0bf6f80 lib/oe/sstatesig.py: Exclude common machine specific dependencies from task signatures
7c88996 shadow: Split securetty into a separate recipe
6b2cb82 gcc-common.inc: Fix comment
ef3c1dd gcc-common.inc: Ensure WORKDIR doesn't adversly affect sstate checksums
f13ee1e guile: fix a quote in description
5c6aa87 ltp: disable elf binary stripping
1956131 distro_tracking.inc: update the info for recipes upgraded recently
803850a libsoup: update its info in distro_tracking.inc
87b3c3f strace: upgrade to 4.6
27aec8b pciutils: upgrade to 3.1.9
be76d89 ed: upgrade to 1.6
07b940b ofono: upgrade to 1.3
d6dcd8d mobile-broadband-provider-info: bring a new recipe into poky
d6a55ca iproute2: upgrade to 3.2.0
e96ec29 bluez4: upgrade to 4.98
a3c6899 bluez-hcidump: upgrade to 2.2
1483a6c kexec-tools: upgrade to 2.0.3
e36a3c1 tremor: upgrade to 18163 (20120122)
d70f34f iptables: upgrade to 1.4.12.2
71dbcbc polkit: upgrade to 0.104
35200aa libxcb: upgrade to 1.8
ab315a3 xcb-proto: upgrade to 1.7
12e10a6 pixman: upgrade to 0.24.2
80b9d51 util-macros: upgrade to 1.16.1
eccece9 gcc: move shared .a to their own package
307fcba libgcc: Seperate out libgcov.a from libgcc-dev
b227700 binutils: refactor packages for staticdev
7843f8e eglibc: refactor packages for staticdev
70b6b6b opkg: refactor packages for staticdev
930424b opkg: move common code & metadata into opkg.inc to reduce code duplication
c6c3f87 tcp-wrappers: refactor packages for staticdev
a64c2a9 syslinux: refactor packages for staticdev
6626660 libtool: refactor packages for staticdev
9ed7ac6 gstreamer: refactor packages for staticdev
14953b7 tiff: refactor packages for staticdev
50a073f mpeg2dec: refactor packages for staticdev
ed08326 apr-util: refactor packages for staticdev
a15f444 sqlite3: refactor packages for staticdev
8d54a0d libxft: refactor packages for staticdev
f514242 sysfsutils: refactor packages for staticdev
3507c03 libsoup: refactor packages for staticdev
3346afe augeas: refactor packages for staticdev
d74c852 avahi-ui: refactor packages for staticdev
bb52d38 apmd: refactor packages for staticdev
ca84860 Fix Upstream-Status entries
79af754 documentation-audit.sh: remove COMMERCIAL_LICENSE warning
7301b4c default-distrovars.inc: remove COMMERCIAL_LICENSE et al
2896b4a base.bbclass: replace COMMERCIAL_LICENSE code with LICENSE_FLAGS code
7b81ef8 Add LICENSE_FLAGS to packages mentioned in COMMERCIAL_LICENSE
b68ea54 license.bbclass: add support for LICENSE_FLAGS
127d1fd core-image-foo: add description to each image bb file
6b2b5d2 initscripts: remove space from shebang, just cosmetics
c6a2c30 initscripts: add shebang where it was missing completely
d4a942f qemuimage-testlib: rename qemuppc image
21b3f5d linux-yocto/qemuppc: fix console and ethernet
c47def3 gcc_4.6.bb: Drop duplicated SRC_URI component
4ad01bd gcc-package-cross.inc: Mark do_package* tasks as noexec
a7b32bd bitbake.conf: Switch to the OEBasic signature generator
85cf3ed lib/oe: Add sstatesig, OE specific signature generator classes
b454cb7 sanity.conf: Incrase bitbake minimum version requirement to 1.15.1
280e5fd gcc: Ensure that the shared source directory shared the same sstate hashes
76c16c4 Bump the version to 1.15.1
3fe81df distro_tracking: update libpng, libgdbus, opensp, nfs-utils manual check dates
3c5f108 prserv: fix import of sqlite3
7a8bae9 siggen.py: Abstract the runtime task dependency handling code in the generators
c4a8fab cooker.py: Allow siggen classes to be added by the metadata
8878ee8 bitbake/fetch2: allow resuming interrupted fetch
42645b0 bitbake/runqueue: always log tasks summary
f3e5186 siggen: Ensure correct runtask dependency output is shown for diffsigs
11cce80 usermanual: Correct "inherit" search to bbclass from oeclass
0779a90 cooker: use futures rather than a multiprocessing pool
299fa34 Add dependency on the backported python 3.2 concurrent.futures
7a8e1ef rspro-conf: remove usbgadget from routerstationpro
967de59 buildhistory_analysis: include related fields in output
11e5d7b classes/patch: avoid backtrace when patch does not apply
adb3ed2 task-base: rename VIRTUAL-RUNTIME-alsa-state to use underscore
dac8259 hdparm: remove PRIORITY
5cf2833 buildhistory_analysis: improve field handling robustness
c1cebf6 buildhistory_analysis: correctly handle whitespace when splitting lists
2f4f8ef buildhistory: record additional image info
ffa93f0 grub-efi-native: fix errors with automake 1.11.2
6ddf0b2 autogen-native: new recipe for grub-efi-native
34f4ab1 guile: new recipe for autogen
225a24a libunistring: new recipe for autogen
4cf1776 bdwgc: new recipe for autogen
d806311 enchant: refactor packages for staticdev
b44c25b boost: refactor packages for staticdev
38b0341 js: refactor packages for staticdev
cb06a5a db: refactor packages for staticdev
b5dee63 attr/acl: refactor packages for staticdev
cdd2f4e liba52: refactor packages for staticdev
40fcaac gst-openmax: refactor packages for staticdev
522c6b3 gnutls: Fix configure issue wrt to rm
5664e3c distro-tracking: add data for newer recipes
2280404 distro-tracking-fields: claim responsibility for udev, dpkg, apt, v86d
4f108e9 xinput: add utility for configuring and testing XInput devices.
c2a74cc e2fsprogs_1.42.bb: Fix build fallout for uclibc
89705ea adt-installer: install autoconf(/automake)-nativesdk
ea8e63d uclibc: Upgrade to latest master
13a6225 linux-yocto: restore WORKDIR as a patch source directory
80038a0 site/ix86-common: fix an error
05f421f pkgconfig: Move pkg.m4 from -dev to package
b19b276 gnutls: Fix compilation on uclibc
6455292 libsoup: Update package from v2.2.100 to v2.2.105
8a7a7fe chkconfig: Update package from v1.3.55 to v1.3.57
3ba7426 busybox: enable dropping of duplicates in syslog, off by default
35d1c68 busybox: change syslog default to log to a file
42f0d50 busybox: enable log level configuration in syslog-startup.conf and script
030bdde busybox: remove incorrect comments from syslog-startup.conf
cbc784f busybox: drop MARKINT option from init script and syslog-startup.conf
703e1f0 pango.inc: fix /etc/pango -> /${sysconfdir}/pango/*
4884ccd busybox: defconfig modified in order to activate CONFIG_EXPR_MATH_SUPPORT_64
f127738 m4: A better refactoring
1fedd16 bitbake/persist_data: Reconnect when DB is locked
5724ee9 package_rpm.bbclass: Add support for filenames with spaces
39a9918 beagleboard-audio: drop in favour of alsa-state
9ea681f alsa-state: add beagleboard specific asound.state
e2a3695 busybox/uglibc: remove obsolete check for "kernel24"
8773ebe gnutls.inc: set libz prefix
8ca0061 gnutls: add readline to DEPENDS and add --with-libreadline-prefix
925433d pango: create /etc/pango in module postinsts if it's missing
1ca0401 Revert "pango.inc: add directory "/etc/pango""
8b11a2f openssl-1.0.0: Update to 1.0.0e and fix QA Warning
ac27587 openssl-0.9.8: Update to 0.9.8s
7edf3dc valgrind: Update for eglibc 2.15
93d70e4 valgrind: Add mfatbu/mfatbl instructions support for pcc
e1d3a32 babeltrace: Integrated from version 0.8
95386cf lttng-modules: Update to 2.0
6d769b2 lttng-tools: Update to 2.0-pre16
6f3d52e lttng-ust: Update to 2.0
a9095e5 m4: refactor .bb and .inc files
f290935 classes/packagehistory: remove now obsolete class
ee7fb2b classes/package: remove out-of-date notice referring to the OE bugtracker
9d6bf93 conf/bitbake.conf: allow wget to output error messages
edef415 classes/base: note variable name in COMPATIBLE_* skip messages
3287e4b prelink: Update to latest version
b6b909a task-base: add VIRTUAL-RUNTIME_alsa-state to task-base-alsa
432c6cf alsa-state: move state files to localstatedir
c86797a alsa-state: add alsa-state from oe classic
79b6192 task-base: move default definition of VIRTUAL-RUNTIME_apm
f07793d distro_tracking: recipe upgrades and manual check info
464a2d6 e2fsprogs: upgrade to 1.42
6ce82ea libpam: upgrade to 1.1.5
35759f9 bitbake.conf: search /lib for -native builds
73a7876 libtool: Put all libltdl headers in the correct libltdl-dev package
023fe87 grub-efi-native: fix errors with automake 1.11.2
866ed43 package.bbclass: quote pathname given to objdump
f20d493 image_types_uboot.bbclass: Add uncompressed ext2 image option
2eb5811 image_types.bbclass: Fix generating uncompressed ext2 images
e0ae57d dbus-1.4.16: use INC_PR from dbus.inc to fix PR bump after dbus-launch-helper permission change
e7a31cf runqemu: Fix the wrong path of libGL.so in 64b Ubuntu 11.10
a521f9d distro_tracking_fields.inc: Modify the status of eds-tools and mingetty
5fabe90 xorg-*: disable xmlto where it was failing
1db019a alsa-utils: depend on libsamplerate0
1cabda9 bootimg: Account for FAT filesystem overhead in image size
19247e4 oe.license: avoid the need to catch SyntaxError
7ce9733 oe.license: add is_included convenience function
49a0821 copyleft_compliance: add debug message with the reason for exclusion
6d73a19 copyleft_compliance: add control of recipe types to include
7561d5b linux-yocto: consolidated fix SRCREV updates
bec7def tslib: enable big endian support for qemuppc
57e78fa qemuppc: add machconfig
b98851c qemuppc: add pointercal file
523f6b6 qemuppc: replace emulation of qemuppc from prep to mac99
573daf6 hdparm: upgrade to 9.37
7a20966 stat: add recipe stat with version 3.3
fb87847 distro-tracking: Update info for webkit-gtk, web-webkit
d0cc840 distro_tracking: update manual_check_date fields
f934088 btrfs-tools: upgrade to newer git commit
ccd2a31 libpcre: upgrade from 8.20 to 8.21
8f44e90 insane.bbclass: fix elf.arch not matching error for x32 kernel
dd04a42 diffstat: upgrade from 1.54 to 1.55
3754d75 locale: fix package's "provides" tag
4807e0b ncurses-native: install to libdir, not base_libdir
b5ad377 ghostscript: build cups filters
254b9de wpa-supplicant: Compile without CONFIG_GNUTLS_EXTRA (PR BUMP)
7c8ebf6 pango: Use gnomebase class, not gnome
b02e7d4 gconf: enable gtk+ 2.0 support to build gconf-sanity-check-2
f17c9d3 buildstats: tolerate absence of /proc/diskstats
18fe75d dhcp: package /var/lib/dhcp with dhcp-client rather than dhcp-server
16d911d cairo 1.10.2: enable tee backend
0941180 pango.inc: add directory "/etc/pango"
e2948fe cairo.inc: Change configuration of directfb to gtk-directfb
beb601f gtk.inc: Change configuration of directfb to gtk-directfb
684c6ef bitbake/knotty: print task failure summary
9fd17bb bitbake/cooker: avoid printing stack trace for -b match error
5f5ae14 bitbake/fetch2: reduce output for fetch failures
eb6291b bitbake/knotty: avoid printing full task log when error already printed
ecdfc1e bitbake/fetch2: correctly decode exit signal/status
4e8085c bitbake/runqueue: avoid "failed" in task summary if nothing did
dcf6b64 bitbake/fetch2: improve error formatting for fetcher errors
98a610b bitbake/knotty: don't count errors as warnings in summary
8a98af2 patch.bbclass: Ensure the DATE and SRCDATE variable exclusions apply to the correct function
0f4d99d multilib.conf: Clean up file and add missing entries for various dependencies
f1a0005 binutils-cross-canadian: Clear BBCLASSEXTEND as a native version of this recipe makes no sense
305d60f python-native: RPROVIDE python-core-native since pycurl-native depends on it
9cc67a0 libxft: Drop BBCLASSEXTEND nativesdk since dependencies freetype and fontconfig aren't class extended
f43afc3 lzo: Add BBCLASSEXTEND nativesdk so lzop nativesdk works (it depends on this)
83b91fc rpm: Fix magic file name magic -> magic.mgc
18c88fc package.bbclass: per recipe PRSERV_HOST support
a05e3a5 meta/PRService: Added export/import fuctions.
6bde156 Incremental rpm image generation(Add config sample)
9d1823b Incremental rpm image generation
489cde8 bitbake: Automatically start local PR service.
30a9bc6 bitbake/PRservice: Added no_hist mode and export/import.
4a8a3c5 Revert "site/common-uclibc: Cache gl_cv_func_wcwidth_works"
d8b4992 distro_tracking: update manual check info
4005c3f license.bbclass base.bbclass: support for 'or' operand in LICENSE and for SPDX license names
a546308 bitbake: Add BBHandledException exception class
e4a3650 bitbake/knotty: Show summary of warning/error messages shown
b838b89 bitbake-layers: close files in apply_append()
2a121d5 bitbake-layers: flatten: warn the user if output structure is incorrect
4137b51 bitbake-layers: flatten: allow specifying layers to flatten
89f2d11 distro_tracking_fields.inc: upgrade tcf-agent
3214f66 distro_tracking: Update Manual Checks
2bcdcce task-core-tools: adapt to kexec-tools package split
0c91196 kexec-tools: split packaging of kexec and kdump
3996288 util-linux: .pc files should go in the -dev packages for subpackages
de58f3c util-linux: Enable fallocate and use CACHED_CONFIGUREVARS
d11425d findutils: Use CACHED_CONFIGUREVARS to specify cached configure vars
469b134 uclibc: Configure UCLIBC_HAS_WCHAR based on libc-posix-clang-wchar distro feature
c9f68fc autotools.bbclass: Introduce CACHED_CONFIGUREVARS
ac7a6e7 libxml2: add shared library version info to libxml shared libraries
4b6df4f eglibc: Upgrade recipes 2.14 -> 2.15
f164a95 update-modules: don't run modutils.sh if systemd is installed
118a0af gtk-icon-cache.bbclass: add -f option to gtk-update-icon-cache in postinst
2a9e6f3 dbus: change permissions of dbus-daemon-launch-helper to 4755
d10d1e1 Remove last remnants of kernel26 MACHINE_FEATURES
efc0684 libusb-compat: keep *.la in base_libdir
42d1090 libusb1: keep *.la in base_libdir
f558210 libiconv_1.14.bb: Fix build failure
6f99591 site/common-uclibc: Cache gl_cv_func_wcwidth_works
783c6ef add sysroot support for meta-ide-support which is the toolchain within build env case
f1e5821 libxxf86dga: fix compilation with x32 toolchain
468998c command.py: add parseConfigurationFiles API
ce9e6ba bitbake: add a new option "--server-only"
eb2a8fe cooker: remove command import in cooker.py
4c30a7e cooker: remove command import in cooker.py
e69e5a7 xmlrpc: Change BitbakeServerInfo init function
cf13bfe command.py: add initCooker API
7d7d3a0 cooker: user bb.configuration.data to inject events
1c08843 command.py: Modify needcache value for certain functions
2b8bd22 base-files: filesystems: fix mount order
5599d3a documentation/yocto-project-qs/yocto-project-qs.xml: removed disable dash text
1930230 documentation/yocto-project-qs/yocto-project-qs.xml: Added libxml-parser-perl pkg
03df4ce documentation/poky-ref-manual/ref-variables.xml: image size glossary
01d5729 documentation/poky-ref-manual: Enabling recipes with commercial license requirements
40f44ec documentation/kernel-manual/kernel-how-to.xml: general edits
fbfb9b7 documentation/kernel-manual/kernel-concepts.xml: General edits.
ab808a9 documentation/kernel-manual/kernel-doc-intro.xml: General clean-up
279ad0f valgrind: add powerpc to the compatible host and add ${TCLIBC}-dbg in RRECOMMENDS-powerpc
9ce6464 bblayers.conf.sample: Use ?= to set BBLAYERS
5a03cf2 image.bbclass: Use ?= to set LINGUAS_INSTALL
72fc52b x11-common: remove extraneous BSP customizations
dfa7034 xorg-driver: add xf86-video-fbdev from meta-openembedded
011a495 systemtap: remove not needed fix for automake 1.11.2
801bd4b mc: remove not needed fix for automake 1.11.2
39d5655 automake-1.11.2: backport pkglibexec_SCRIPTS fix
3bdcad7 vte: update patch header
f3a21d5 libevent: fix compilation for x32
f2fb10e python-pycairo: fix for x32
8178e63 udev: ensure /dev/pts and /dev/shm does exists
f51ecaf initscripts: avoid mounting /sys if it is already mounted
ec28705 qt4-x11-free.inc: use QT_BASE_NAME from qt4x11.bbclass
83634c3 qt4-embedded.inc: use QT_BASE_NAME from qt4e.bbclass
e30de29 qt4x11.bbclass: add QT_BASE_NAME for use in recipes
6756bc0 qt4e.bbclass: add QT_BASE_NAME for use in recipes
e2ccea0 qt4-graphics-system: add
6fc0bfd linux-yocto: use src_patches for out of tree kernel feature support
a27ebca linux-yocto: bump kernel version to v3.0.14
b3cc230 kern-tools: import flexible branching support
9beabe3 classes/buildhistory: remove redundant package history checking stub
6542028 classes/buildhistory: make the package version backwards error non-fatal
c8d4807 classes/buildhistory: add hostname to commit message
fcc5f68 buildhistory: add script to check for significant changes
f22c292 gnutls: remove gettext patch for non-GPLv3
815c7e8 util-linux: Update patch for non-GPLv3
1d2451a distro: Update poky-tiny distro definition
7402c8a autoconf: fix nativesdk rdepends
5797fea image-mklibs/package_ipk: Remove bashisms
a10af67 distro: Add poky-tiny distro definition
c226ccb matchbox-wm: Remove x-session-manager handling
198f2ac libusb-compat: move libraries to base_libdir
0540982 insane.bbclass: use bb.process.Popen instead of subprocess.check_output
7f837eb bitbake/runqueue: Improve the setscene logging
8e43f9a multilib: Abstract class extension code into classextend.py
0fa52f7 native.bbclass: Fix variable remapping coverage
5aabdba core-image-gtk-directfb: add a bb file to build an image for gtk over directfb
2f60d9a binutils-cross-canadian: Allow ld-is-gold
7b15d99 Patch Upstream-Status Update
fc53fa7 udev: remove commented code from init script (no code changes)
27b45f6 udev: split utilities onto udev-utils
53efd43 udev: use 'echo' instead of 'echo -n' in init script
352b912 xserver-kdrive: work around issues with -Werror=address
28b6f1f opkg-utils: use /usr/bin/env python
6126f96 python-native: correct prefix handling for oe-core sysroot layout
29feb44 insane.bbclass: add QA tests for unsafe references to exec_prefix
d34292c libusb1: move libraries to base_libdir
67b66d5 e2fsprogs: move libraries to base_libdir
f5023f5 util-linux: move libraries to base_libdir
d1536ee libcap: move library to base_libdir
f8f5c05 ncurses: move libraries to base_libdir
db0f4a9 glib-2.0: ensure dtrace is diabled for all distro options and fix packaging
8b26d11 libxp: fix cast error
4de7aaf image_types: Fix rootfs size calcuation
c5996fd qt4: add Upstream-Status to recently added qt-4.8.0 patch
a6e61c0 conf/local.conf.sample: fix typos/grammar/formatting
2210623 README: add short description of OE-Core
464f847 classes/update-alternatives: fix typos and grammar
021848b valgrind: Fix for automake update
51d6445 fetch2/git: change colon to dot in ud.host
f540034 bitbake-layers: fix Python error during parse
e47a5da bitbake.conf: remove some redundant/unnecessary variable exports
c4de612 populate_sdk_ipk.bbclass: Ensure the correct environment is setup for postinstalls
3f4f440 poky-tiny: remove poky-tiny, it was added to the wrong accidentally
c26554a distro-tracking-fields: update qt recipe info
670706d qt4: add version 4.8.0
99a6e1a qt4: fix incorrect architecture for qt4 tools
120ea47 busybox: rename syslog.conf to syslog-startup.conf
9385536 vte: upgrade from 0.24.3 to 0.28.2
f212c81 prelink: also look at nonstandard lib paths
381a4a2 mc: fix configure with automake 1.11.2
00f0d4a cogl: ensure we can build on armv4
87babb7 linux-tools: add binutils to perf DEPENDS
0ff1d66 distro: Add poky-tiny distro definition
fdbb0d9 distro: Add POKY_DEFAULT_EXTRA_R* variables
1fcf1fa linux-yocto-rt/meta-yocto: add routerstationpro support
9e99322 linux-yocto/meta-yocto: routerstationpro/beagleboard: add 3.0.x support
f3a1a88 pseudo: ensure libs are included in package
17b399a glib-2.0: disable dtrace due to host contamination
78a3b1e gnutls: more gettext version fixes
8eb45ac btrfs-tools:Fix multithreaded building
761acbb automake: upgrade from 1.11.1 to 1.11.2
99e4a9a quilt upgreade from 0.48 to 0.50
d3609d0 btrfs-tools: add attr as dependency to fix compilation
d05dd52 texinfo: fix gettext patch
3923747 puzzles: fixed SRC_URI Checksums
3b798c8 elfutils: fix for dso link change in recent ld
fa03a6d rpm2cpio.sh: make compression tests case-insensitive
9c6601a libassuan: Upgrade to 2.0.3
cfa0eb3 apr-util: Upgrade to 1.4.1
e3928c5 lighttpd: Upgrade to 1.4.30
8a21b1d distro_tracking_fields.inc: update the info
1e62bfc util-macros: upgrade from 1.15.0 to the latest 1.16.0
2ed0506 libpciaccess: upgrade from 0.12.1 to 0.12.902
9272288 lttng-ust: upgrade from 0.15 to the latest 0.16
de364b1 liburcu: upgrade from 0.6.4 to the latest 0.6.7
9b32919 mdadm: upgrade to the latest version 3.2.3
a57cda0 buildhistory: improve git commit robustness
f724b7b distro_tracking_fields: update the info for this round of package upgrade
d33139b puzzles: upgrade to r9375.
26096cf watchdog: upgrade to 5.11
8cc94ca quota: upgrade to 4.00
c67877c matchbox-wm-2: ugrade to 01fa5465743c9ee43d040350f4405d35293e4869
c59b9d7 linux-firmware: upgrade to 15888a2eab052ac3d3f49334e4f6f05f347a516e
76d37ba libomxil: upgrade to 0.9.3
5e669dd oprofileui: upgrade to 82ecf8c6b53b84f80682a8312f9defa83a95f2a3
7463ae4 distro_tracking_fields: update the info for recipe upgrade.
91d9b9c procps: raise update-alternatives priority
ecad149 systemtap: fix configure with automake 1.11.2
1926297 avahi-ui: fix build with automake-1.11.2
f99917d gcc: mark upstream status for all patches
ca1311b perl: mark upstream status for all patches
8939bdd misc patches: fix patch headers
5b5914f avahi: fix configure with automake 1.11.2
5365bd6 jpeg: fix configure with automake 1.11.2
b334757 autotools.bbclass: fix cp error for empty dir
07d8391 rpm: fix build with automake-1.11.2
35c2d56 byacc: upgrade from 20110908 to 20111219
701f4da distro_tracking: Updated for Upgrades and Manual Check Dates
af16228 boost: Update to 1.48 and Clean ups
ece80fe Add Upstream-Status to patches
70c18f2 rxvt-unicode: Update to 9.14
0203b2b util-linux: Update to 2.20.1
60a8f94 python: add md5module support
aff9305 dropbear: fix CRYPTLIB patch
abd108a libiconv: Update to 1.14
8f6c10e resolvconf: Update to 1.63
199a909 wpa-supplicant - pulls GPLv3 license rpm in a non-GPLv3 build (libgnutls-extra)
2d8a747 gnome-keyring: fix gsettings_data_convert seg fault
a770fe0 glib-2.0: we need zlib
db36190 image_types: Ensure /init exists for cpio rootfs archives
b2266ed task-core-boot: Allow DISTRO to disable keymaps via VIRTUAL-RUNTIME_keymaps
95ba9b7 linux-yocto-tiny: New kernel recipe for tiny distros
b5d6121 udev: skip mounting /dev on tmpfs if it is on devtmpfs
d97d07c udev: use tabs for init script (no code changes)
e412dbf udev: reorganize files of 164 version
005b67f udev-extraconf: move mount.blacklist to udev-extraconf dir
f4e60ec udev: drop 145 version
a99a639 distro_tracking_fields: update the info for recipe upgrade.
86e3dff rpm: Fix rpm database files capacity issue.
38c2f66 classes/image: implement generic locale package installation
8a77467 u-boot: improved DESCRIPTION, fixed HOMEPAGE
5b337ae patch.bbclass: abstract out logic that determines patches to apply
bd36ddf libevent: upgrade to 2.0.16
e0ce1d7 chrpath: upgrade to 0.14
08beac8 distro_tracking_fields: update the info for recipe upgrade.
af8002b libsamplerate0: upgrade to 0.1.8
d590255 libical: upgrade to 0.48
1fe4b74 glib-2.0: upgrade to 2.30.2
fd36143 minicom: upgrade to 2.5
31cb9db freetype: upgrade to 2.4.8
2d45549 distro_tracking_fields: update the info for recipe upgrading
1d5f989 libpcap: upgrade to 1.2.0
940c1ad ofono: upgrade to 1.0
d4182a2 telepathy-glib: upgrade to 0.17.4
2ae7ca4 valgrind: upgrade to 3.7.0
121972e mtd-utils: upgrade to 1.4.9
9fd6587 gst-ffmpeg: upgrade to 0.10.13
c57aec1 gst-fluendo-mpegdemux: upgrade to 0.10.69
47cd257 gst-fluendo-mp3: upgrade to 0.10.16
632cfd0 gst-plugins-bad: upgrade to 0.10.22
81a427d gst-plugins-ugly: upgrade to 0.10.18
ce70592 polkit: upgrade to 0.103
6e3028c distro_tracking_fields: take the ownership of Mei Lei's
cee6349 distro_tracking_fields: update the info for the manual check list (2011/12/24)
00cfb14 buildhistory: avoid quoting issues with the layer list for build-id
7e66c3c base.bbclass: Allow buildstats to be optionally supplied
68ea0d5 self-hosted-image: Add builder user and mini X
4203c7b Add "builder" user for specific purpose.
192fbe7 Add mini X core tasks
4d13ca9 mini-x-session: Add this recipe as the session file for mini X
dc27861 linux-yocto: use PATH to locate kconf_check
6ede5cf kern-tools: update SRCREV to pickup git operation fixes
01a169b linux-yocto: update hardware reference boards to 3.0.12
2af383c linux-yocto: add cedartrail BSP support
77d845c classes/rootfs_rpm: handle recommends in query functions
663c893 webkit-gtk svn: update to r101488
551ffe9 prelink: update to latest git version
f5aa3bb coreutils: ensure --color works so DEPEND on libcap
188606b which: Disable iberty since its not listed in DEPENDS
f9b683c kernel.bbclass: fix pkg_postinst and pkg_postrm
9a3a4cf which: Add missing SRC checksums
5645aeb gperf: Add missing SRC checksum
f9557f3 udev: Remove linux-libc-headers dependency
4cbbf27 rpm_5.4.0: Fix configuration issue with native/nativesdk
71ed507 package_rpm.bbclass: Add RPMSPEC_PREAMBLE
77edb00 package.bbclass: Adjust RPM call to use dynamic location for magic files
79bb1cc Change -mno-thumb to -marm
1090bc4 qemu: explicitly disable kvm support for native without kvm header
d350b31 opkg: Fix installation order in feeds with mutiple providers of packages
0db3aad connman-gnome: update SRC_URI to new repo
197fe3d distro_tracking_fields: Update curl info and fix other recipes' typo issues
531843b curl: Upgrade from 7.22.0 to 7.23.1
985a5e7 bash: Add SRC_URI Checksums for GPLv2
b917222 zypper: add patch from libxml2
05eabde arch-powerpc: set PACKAGE_EXTRA_ARCHS
e979941 image-types: add btrfs as a supported fstype
ad73b12 binutils: fix building on distros with matching binutils version
b429ba9 gmp: Don't check "$CC $CFLAGS" for x32 in gmp configure
bb6f2fb wget: fix a host intrusion issue introduced by adding --with-ssl=openssl.
7bde933 socat: add the latest stable version 1.7.2.0
13d2dc2 libsync: move to git.yoctoproject.org
3c247d4 distro_tracking: Mark Upgrade Info
cd4beea libdrm: Upgrade to 2.4.29
4890cf6 texi2html: Upgrade to 5.0
15fcdd1 mc: Add version 4.8.1 now GPLv3
d120aa5 libidn: Upgrade to 1.23
56906d0 augeas: Upgrade to 0.10.0
99e14dc python-pycairo: Upgrade to 1.10.0
1ca8bb2 distro tracking: update man-pages, gts-plugin-bluetooth, usbutils,
dee0fc1 multilib.conf: Enable shadow-sysroot and libffi
212bd37 gypsy: fix LICENSE field
7b023ba udev: tidy the LICENSE fields
a23e9ee apt: clarify LICENSE as GPLv2.0
bbe1710 eds-dbus: replace o-hand example contact
633d7a7 mtools: fix SRC_URI for GPLv2 version
4260f03 libxsettings-client: fix SRC_URI
db1746b libmatchbox: fix SRC_URI
2f43113 matchbox-themes-extra: fix SRC_URI
813cc8e matchbox-desktop: fix SRC_URI
4536aef xrestop: fix SRC_URI and LICENSE
bd66d22 less: Correcting generic license
7a708b1 task-core-tools: add ltp to testapps list
1a260d0 distro_tracking_fields: add information for ltp
2d1a411 ltp: Add recipe from OE
2ee3156 license: Fix manifest conditional
e559160 ncurses: Allow override of ENABLE_WIDEC
b608f9e matchbox-session-sato: clarify LICENSE in GPLv2.0
908986e matchbox-desktop: clarify LICENSE is GPLv2.0+
3980c48 pango: clarify LICENSE is LGPLv2.0+
c6ecaf5 matchbox-wm: clarify LICENSE as GPLv2.0
58cfa4f cogl: clarify LICENSE as LGPLv2.1 and fix metadata
5b2452c clutter: clarify LICENSE as LGPLv2.1
bdf7a0f dpkg: clarify LICENSE as GPLv2.0
4648aad ui/crumbs/hobprefs: trigger a reparse after changing IMAGE_FSTYPES
25e449a ui/crumbs/runningbuild: handle InvalidTask events
94c916d vim/syntax: Recognize ?? operator
32acdda libsdl 1.2.14: fix packaging
45987c5 eglibc: Fixes for running regression tests
af9c75c gcc-4.6: Let G++ relocate gxx-include-dir when using --sysroot option
2480cc6 gcc-cross: Add cross testing driver for running regression testsuites
6082313 eglibc-testing: Clean the test before running them
aa37393 connman: disable 'alg-test' building
ba8f367 icecc.bbclass: also use icecc for kernel modules compilation
7c86057 libatomics-ops: move docs to correct directory
6ea9711 Add missing SUMMARY fields to various recipes
553302b mktemp: mark patch as upstreamed
1395111 opkg: Drop the offlineroot_varname patch
f4c80d6 opkg: Add logic to detect and creak circular dependencies
b281fd1 documentation/poky-ref-manual/technical-details.xml: edits per Richard Purdie
c7d2787 documentation/poky-ref-manual/ref-bitbake.xml: Updated BitBake Running a Task
64d5176 documenation/poky-ref-manual/technical-details.xml: Shared State
2ce852a documentation/poky-ref-manual/technical-details.xml: more on YOCTO #1500
4378fd2 documenation/poky-ref-manual/technical-details.xml: Some general edits.
93a78f4 documentation/poky-ref-manual/extendpoky.xml: Fixed typo
5e1255f documentation/poky-ref-manual/extendpoky.xml: intro changed and order changed
9f31ba9 documentation/poky-ref-manual/usingpoky.xml: updated intro paragraph
7098ae1 documentation/poky-ref-manual/introduction.xml: Added reference
31ddf65 documentation/poky-ref-manual/introduction.xml: added new chapter
a191e6e documentation/poky-ref-manual: New chapter introduced
9a99147 documentation/poky-ref-manual/usingpoky.xml: Removed comments
d122e37 documentation/poky-ref-manual/usingpoky.xml: partial for YOCTO #1500
4ae4f1d documenation/poky-ref-manual/ref-variables.xml: added LICENSE_DIR
1623596 documentation/poky-ref-manual/ref-classes.xml: insane.bbclass updated
ee2af26 license.bbclass: remove bashism
cdba397 readline: drop empty dir to shut up QA warning
db38fb3 libgcc: reintroduce debug package, containing symbols
b46e118 bitbake.conf, core-image-minimal-initramfs: add INITRAMFS_FSTYPES
45d3f0c update-rc.d.bbclass: override UPDATERCD for nativesdk
08b7b93 ed: Fix EXTRA_OECONF to ensure right compiler is found
7769180 libical: Fix deadlock in pthread
ccc84d9 xserver-nodm-init: Fix xuser creation
1855e94 opkg: Update svn 625 -> 633 and fix preinst issues
c7335bd nativesdk.bbclass: Remove historical FILES artifact
4d1c00f bootimg: Use mcopy to construct the hddimg
c1f3f3f bootimg: Use dosfsck to clean up the generated live image
02e01e6 grub-efi: specify prefix so it can find grub.cfg
9619f26 grub-efi: Add efi_gop module to payload for physical console support
4ea37a8 grub-efi: Use /EFI/BOOT now that mkdosfs -d works with directories
6036845 Patch Upstream Status Updates
984eb9e perl: add .pl, pm, pod, sh files to SSTATE_SCANE_FILES
228c43c libtool-cross: Add libtool & libtoolize to SSTATE_SCAN_FILES
54a0c2e gmp: Add gmp.h to SSTATE_SCAN_FILES
487adcd icu: Add Makefile.inc to SSTATE_SCAN_FILES
6b2027d sstate: Add SSTATE_SCAN_FILES
da23623 qt-mobility: Fix QA error for debug files
8413a9b dosfstools: fix populated image creation with dirs
7e0c29c cross-recipes: Disable nls in gettext bbclass
91367de initscripts: fix timestamp checking at bootmisc.sh
fe2d3c0 distro_tracking_fields: update cogl and clutter
d29ea11 clutter_git: update to 1.8.2 tag
b1ce937 cogl: update git recipe to 1.8.2
827dfe8 clutter: upgrade to 1.8.2
1409daf cogl: upgrade to latest stable cogl 1.8.2
10a0041 scripts/bitbake: add a version >= 2.6 check
44d8f38 scripts/runqemu: show an error if /dev/net/tun is unusable
bc13ebe qemu: for native, do not fail if kvm is unavailable
b5c9153 icecc-create-env-native_0.1.bb: drop 'PRIORITY = "optional"' as it is the default
9cd65cc grub_1.99.bb: drop 'PRIORITY = "optional"' as it is the default
cb39cfa grub-efi-native_1.99.bb: drop 'PRIORITY = "optional"' as it is the default
9d136b2 gdk-pixbuf: Ensure the binaries can be relocated
bf2ab7e python: bump PR due to arm OVERRIDES change
4707daf xf86-video-omapfb: bump PR due to arm OVERRIDES change
2c0c977 qt4: use armv6 override instead of armv6-vfp
e0a12db directfb-examples: add package directfb-examples to OE-core
995a09e dosfstools: Add patch to disable fat32 autoselection and behave as 2.10
bade85e boost : Do not use icu when building boost.
3994ad0 u-boot: renamed dir from uboot to the more appropriate u-boot
23f1ede qt4.inc : Add uic, moc, rcc, and lrelease to tools package.
cf00885 kernel.bbclass: Allow do_compile_kernelmodules to use PARALLEL_MAKE
ebe66be conf/machine/include/arm add extra MACHINEOVERRIDES like x86 does
406593f connman: improve packaging
d6860b2 task-core-gtk-directfb.bb: Add task list to run gtk over directfb
c9b1fed gtk: add demos to the configuation of gtk+
4bf7368 gtk.inc: add feature based on directfb
627b230 pango: Disable x11 when pango doesn't run over x11
f1a4878 cairo: add directfb DISTRO_FEATURE
6471e4c ed: remove unsupported option
779d07d bash: Add SRC_URI Checksums for GPLv2
63eebab gmp: Add SRC_URI Checksums for GPLv2
df35bf3 sed: Add SRC_URI Checksums for GPLv2
0a2ff4d gzip: Add SRC_URI Checksums for GPLv2
ced61e8 gawk: Add SRC_URI Checksums for GPLv2
8bab93a findutils: Add SRC_URI Checksums for GPLv2
4ae7e63 ed: Add SRC_URI Checksums for GPLv2
13594d6 readline: Add SRC_URI Checksums for GPLv2
5ac76dc coreutils: Add SRC_URI Checksums for GPLv2
ab31da7 eglibc: Generate cross testing script during install
9764432 task-core-nfs: Add nfs-utils-client to RDEPENDS
023368f qemu-0.15.1: Bump recipes from 0.15.0 to 0.15.1
bd75266 license: PR bump failure
e38c283 scripts/send-pull-request: fix typo
5cb246d x86 tune: fix TUNE_PKGARCH definition for proper PACKAGE_ARCH
6e8e25f openssl-1.0.0e: Update x32 Configure
5af89cd libacpi: Use the cross strip instead of host strip
d22f851 siteinfo: create a new siteinfo for x32-linux
800f7e4 pax: fix compilation with x32 toolchain
3424702 mesa: Properly create share library for x32
b9e3ddc findutils: Fix compilation for x32 toolchain
2e82fe1 libacpi: Fix libdir for x32
8ae6359 pulseaudio: fix compilation with x32 toolchain
cd044f6 mdadm: Make custom CC definition conditional
3c96a53 gst-fluendo.inc: remove unneccessary hack
0c45ecb dosfstools: update native to 2.11
896f2ab lzop-1.03: add recipe
7ec4499 task-self-hosted: Move tools to host-tools task
afbde63 task-self-hosted: Add host-tools task
623d65b task-self-hosted: Added perl-pod (slight reorder)
3d3c165 task-self-hosted: Reorder by Alpha
4f0092f texinfo: fix compile failure due target makedoc binary being used
ba006ea bitbake.conf: remove texinfo-native from ASSUME_PROVIDED
1d2908d ncurses: libcurses.so should link to libncurses.so
bbc8afb connman: Default to enabling ethernet interfaces
faac9ed scripts/runqemu-ifup: Ensure netmask is set correctly
924b1e4 license/copyleft: exception for ast parse
45f6a21 license.bbclass: remove deb exclusion
50195e4 license.bbclass: remove bashism.
43c99c9 classes/rootfs_deb: implement query functions for buildhistory
488e8ba connman: avoid checking for linux/if_alg.h header
af7fbd6 connman: disable ntp support
446d944 linux-yocto: update rt branches to 3.0.12 + rt30
241ceba linux-yocto: update META SRCREV for EFI changes
8819b15 linux-yocto: v3.0.12 + EFI fixes
1288313 connman: update to 0.78
9ebdfb0 connman: move files from connman-0.75 to connman dir
77ed881 connman: drop git version
8277ee9 scripts/send-pull-request: allow sending of patches without a cover letter
ca5ad87 gtk.inc: ship gtk-demo to independent package
12aba2f gconf: Disable dbus-x11 when x11 isn't in DISTRO_FEATURES
8de191d qemu-config: Disable dbus-x11 when no x11 in DISTRO_FEATURES
3030133 package.bbclass: Adding license collection
5eeea9e OECore license fixes: meta/*
cb91ef9 license: manifest and license path
c41b31e gettext-minimal-native: Fix License
d334527 Add copyleft compliance class
9fb67f8 oe.license: add license flattening code
a57de1a license: split license parsing into oe.license
9137883 oe.test_types: move into an oe.tests package
31ac06a sysstat: don't run populate-volatile.sh update in do_rootfs, first boot or without populate-volatile.sh
567ed28 wget: enable https and openssl
b41724d self-hosted-image: remove extra space since we use additional disk instead
b0de4b0 initrdscripts: add sleep to avoid kernel messages before install message
bd21ef9 grub: Create /etc/grub.d
ed2ac23 initramfs-framework: provides a modular initramfs
1e459c8 qt4: various tidy-ups
2e50e9b qt4: fix debug symbol stripping
2e02727 bitbake.conf/image.bbclass: Ensure images use the correct passwd/group files
cb5a16f distro_tracking_fields.inc: Update dropbear,iproute2,net-tools tracking information.
006e592 dropbear: Upgrade from 0.53.1 to 2011.54
87377c2 dpkg: Fix preinst execution
f6d6498 image_types.bbclass: disable cleanmarkers for jffs2 images
5e6261d image_types.bbclass: implement jffs2 summary images (sum.jffs2)
64ee1e6 rootfs_ipk: implement FEED_DEPLOYDIR_BASE_URI support
272f410 matchbox-session-sato: respect VIRTUAL-RUNTIME_initscripts settings
a8dd9bc subversion: update 1.7.0 to 1.7.2 and force libtool recreation
f17e0ae conf/machine: Don't poke around providers which aren't machine specific/safe
edc5467 conf/machine: Don't poke around providers which aren't machine specific/safe
e6bbe41 populate_sdk.bbclass: remap packages when generating sdk tarball
e679c35 wget: Fix wget alternative path to be /usr/bin not /bin
a9c1fca distro_tracking: fix manual entries
040bac5 buildhistory bbclass: avoid absolute paths for files-in-image.txt to avoid diff churn when relocating TMPDIR
a5f9706 eglibc: Update 2.14 recipes to latest SVN tip
bf6be18 gcc: Backport patch from trunk to fix ICE seen on armv7 with mesa-xlib
c7a91da tcmode-default: Remove pinning u-boot-mkimage-native to non-existing version
3859b14 gnutls: Fix fix-gettext-version.patch
359770f distrodata.bbclass:Fix some recipes upstream version check issue.
f199156 default-distrovars: missing checksums should raise an error
f9c9a62 omap3-sgx-modules: drop from oe-core, it lives in the meta-ti BSP nowadays
70b3434 clutter-gst: upgrade to 1.4.4
b83698e puzzles: set SRC_URI checksums
4bdc8b6 libsdl: Disable pulseaudio explicitly
e3a3845 libatomics-ops: patch source code for x32
f5c071d libaio: patch source code for x32
a3cd4f5 xproto: fix compilation with x32 toolchain
f3c0a02 liboil: patch source code for x32
b60d604 libxt: fix compilatoin with x32 toolchain
8966475 glib-2.0: fix compilatoin with x32 toolchain
a41df69 mesa-dri, mesa-xlib: fix compilation with x32 toolchain
13d0112 gmp: fix the recipe for x32 target
51bfed2 openssl-1.0.0e: fix to wotk with x32 toolchain
4eaa9ff classes/buildhistory: do not save old packagehistory files by default
4c9906c libx11-trim: Fix keysymdir configure option mismatch
e5b9ac3 mesa-xlib: Bump PR to resolve various package upgarde conflicts
ef1834e classes/buildhistory: merge in package history functionality
6ba6f4a classes/buildhistory: add new output history collection class
45c4f0a classes/packagehistory: fix and extend
4d6f8d4 siggen.py: If both sigs have a variable in it's whitelist then don't say it's changed
f6da26f bitbake.conf: add default PRINC 0 to be able to increment it
2dfe169 openjade-native_1.3.2.bb: remove CONFIGUREOPTS as vardep for do_configure
2639c37 Remove the async_cmds and sync_cmds from command.py
897d1cd fetch2: fix Exception parameters when BB_STRICT_CHECKSUM enabled
dccb9b9 Remove the duplicated assignments of self.configuration.cmd
9be6d59 dpkg-native: Fix perl path
6a18c3b bootimage: Use ${S} explicitly for generated config files
d428862 distro_tracking_fields.inc: update the info
94d49c2 lzo: remove the uncessary autoconf.patch
7b31027 libxfont: remove the unused no-scalable-crash.patch
e5b5c3a distro-tracking: Update info after last upgrade
7bdb97b x11vnc: Upgrade to 0.9.13
dc31d37 pcmanfm: Upgrade to 0.9.10
8ba7f13 libfm: Upgrade to 0.1.17
c16cd56 linux-yocto_2.6.34: remove bbappend
b5734ca kernel-yocto: fix extra CR in do_kernel_checkout
8885163 kern-tools: use Makefile provided install rules
19b4f42 kern-tools: add pre_config and merge_config.sh to the list of tools
1752107 linux-yocto: prefer in-tree tools to external ones
bb93ece linux-yocto: v3.0.10 + rt27
a6bd162 linux-yocto: v3.0.9 + enhancements
70e26e6 linux-yocto: remove 2.6.34 recipes
44cf077 kernel-yocto: support allnoconfig base configuration
77b0a2d mesa-demos: Bump PR after other mesa changes
bb054d5 distro tracking updates
0b90bb0 ubootchart: update to svn R12
26ce75d less: Update to 444
931295c sqlite3: Update to 3.7.9
be94a2f sysstat: Update to 10.0.3
1131efe psmisc: Update to 22.14
338f909 resolvconf: Update to 1.62
f142522 busybox: update to 1.19.3
5ff296e logrotate: Add dependency on popt lib.
9d6790c cooker.py: Allow the -e option to work with virtual classes and -b
b187b27 Revert "classes/buildhistory: add new output history collection class"
d8bee04 libtool: Upgrade from 2.4 -> 2.4.2
177b2e3 binutils: fix for .debug files QA warnings
ceaff6e gmp: also generate the libgmpcxx library & package it properly
c0e5906 metacity: bump PR for xcb-util change
208f8f9 zlib 1.2.5: install pkgconfig file, needed for e.g. modern webkit
1dcb2d8 classes/buildhistory: add new output history collection class
8e2c578 classes/base: split out metadata revision code to separate function
64f3e24 trace-cmd: Add blktrace_api compatibility for TC_BARRIER
a2070fb puzzles: Ensure to link against libm for math functions
bf45449 classes, conf: Exclude native and nativesdk recipes from libc specific override
f9e56d0 libc-package.bbclass: Fix typo in setVar usage
520f7b5 gnu-config: Only apply path transformations in the non-native/non-nativesdk case
7cffb5b gnome-desktop: Bump PR after xcb-util changes
012b4af distro_tracking_fields: update gthumb and claim some recipes
73c0fc0 gthumb: update to 2.12.4
413619b distro_trakcing_fields: update for glib, telepathy-idle, etc
481f6a0 telepathy-mission-control: upgrade to version 5.10.1
600afa2 glib-2.0: upgrade to version 2.30.1
ea4123d telepathy-glib: upgrade to version 0.17.0
c37f651 telepathy-idle: upgrade to version 0.1.11
1f8405e coreutils: fix u-a for base64, mktemp and df
d10d614 shadow: use u-a for /usr/bin/groups
1c62040 gconf: add polkit to DEPENDS only for target recipe and disable default-service for native
aab6939 build.py: Be determistic about a function's cwd
4c76300 pulseaudio 1.1: add filter-apply and filter-heuristics to pulseaudio-server RDEPENDS, it won't start without
5615998 pulseaudio 1.1: convert to useradd.bbclass
80986e1 trace-cmd: Update to 1.2 (includes kernelshark)
fa25490 make: expand MAKEFLAGS before we re-exec after rebuilding makefiles.
55c40d4 task-self-hosted: install sudo, tun.ko, iptables, libgl and libgl-dev into the target
9c13c3f matchbox-panel-2: add unpackaged .la files to PN-dev to fix QA warning
e387fac matchbox-panel-2: bump PR, because of xcb-util was renamed to libxcb-util0
dc7d442 startup-notification: bump PR, because of xcb-util was renamed to libxcb-util0
53a59dc apr-util: bump PR for gdbm SOVERSION change
cafe634 gst-plugins-good: bump PR for gdbm SOVERSION change
cd7d058 libffi: Update to 3.0.10
d60d726 gnutls: Update to 2.12.14
a7ca3b4 xserver-xorg*: Update to 1.11.2
d7cd934 squashfs-tools: fix PR, those should start with 'r'
a4b7188 Fix multiarch DISTRO_FEATURE
f340e39 consolekit: Fix ${localstatedir} race
73861c8 grub: Use COMPATIBLE_HOST
0d6c01c grub: Drop "apply=yes" from patch
4592af4 autotools.bbclass: Report the missing configure path
37f98f5 meta-environment: Fix a typo in do_populate_sysroot[noexec]
5de3e3d xcb-util: upgrade from 0.3.6 to 0.3.8
01e1f34 libxcursor: upgrade from 1.1.11 to 1.1.12
54eb22a libxfont: upgrade from 1.4.3 to 1.4.4
352d8e8 lzo: upgrade from 2.05 to the latest version 2.06
1c9ff48 libxrandr: upgrade from 1.3.1 to the latest version 1.3.2
3123025 pixman: upgrade from 0.22.0 to the latest stable 0.24.0
e4ba78f eee-acpi-scritps: Upgrade to 1.1.12 via git tag
961ee2f x11perf: Upgrade to 1.5.4
78fa814 libcroco: Upgrade to 0.6.3
2cae197 libsoup-2.4: Upgrade to 2.36.1
67d7e8d polkit-gnome: Upgrade to 0.102
a76c9ca xz: Upgrade to 5.0.3
26b667c gtk+: Upgrade to 2.24.8
77d5a0c bootimg: Allow for EFI-only boot images
eb4aa34 bootimg: Add grub-efi support
bcbd57a bootimg: Pull syslinux specific bits into syslinux.bbclass
4cdd02f bootimg: Refactor build_hddimg and build_iso routines
fcde2d6 grub-efi-native: New recipe to build GRUB EFI images
1098d8d mailx: Add missing openssl DEPENDS and bump PR after openssl 1.0
38be5d3 perl: bump PR for gdbm SOVERSION change
b480b6d pulseaudio: bump PR for gdbm SOVERSION change
9eecd86 gdbm 1.10: use lib_package.bbclass to match packaging with 1.8.x
e233887 libx11-trim: Change checksum
f92b2db distro-tracking-fields: update entries for clutter recipes
da1c3e3 clutter-box2d: drop unbuildable clutter-box2d-1.6_0.10.0
b231f14 clutter-box2d: fix LICENSE field - LGPL-2.1
e15ee3d clutter-box2d: Update git recipe
50e3204 clutter: move STDDEPENDS to inc
8e4e518 cogl: add missing depends on libxcomposite
1b4d7fc clutter-*-1.6: drop clutter 1.6 recipes
4f88296 mutter: switch to clutter-1.8 to satisfy dependency
1f70775 task-core-clutter: use clutter-1.8
812530c clutter: PROVIDES clutter-1.6
b8d6f36 multilib.conf: remove clutter-1.6 and add clutter-1.8
086fad7 clutter: drop unneeded bbappends
4314df7 gst-plugins-ugly: bump PR to rebuild after libid3tag fix
c6f80a6 libid3tag: add gperf to DEPENDS
87a33b4 libical: drop older version 0.46
b926e58 libical: add version 0.47
bfa270b ppp-dialin: use useradd.bbclass instead of hardcoded adduser/deluser calls
9f5bc21 cronie: use useradd.bbclass instead of hardcoded groupadd calls
3a70e77 mingetty: use u-a to provide /sbin/getty (also provided by util-linux-agetty and tinylogin)
8a58832 util-linux: use u-a to provide /sbin/getty from util-linux-agetty
c91fdcf tinylogin: use u-a for getty so we can provide /sbin/getty from util-linux-agetty too
4217c91 pulseaudio 1.1: replace hardcoded /etc with ${sysconfdir}
9922ac7 pulseaudio 1.1: only run volatiles script when populate-volatile.sh exists
dd860e9 clutter-1.8: package examples
3fa1559 image_types.bbclass: add xz-native to deps for lzma ext2.lzma images
15dd02a consolekit: package /var/log/Consolekit
1f2b546 task-sdk-host-nativesdk: add autotools nativesdk to meta-toolchain
3648d30 autoconf: Extend to provide nativesdk recipe
d8dddfa automake: Extend to provide nativesdk recipe
a042f7a m4: Extend to provide nativesdk recipe
d977988 gnu-config: Extend to provide nativesdk recipe
d759c8b iproute2: Upgrade from 3.0.0 to 3.1.0
7712104 Distro Tracking: Update Ownership and Update Dates
ebb15d2 PR Bump for OpenSSL 1.0
c2265d0 openssl: Add openssl 1.0
f73462c openssl-0.9.8: move parallel-make fix to 0.9.8
264dacf ocf-linux: Add ocf-linux to support openssl 1.0
77a02ae libtasn1: Update to 2.11
85e29a7 gdbm: Update to 1.10
58f7d5e lame: Update to 3.99.3
7c5d4de xf86-video-intel: Update to 2.17.0
c6f6b93 xf86-input-synaptics: Update to 1.5.0
2571caf xf86-input-mouse: Update to 1.7.1
bc4cfbe xwininfo: Update to 1.1.2
4e35303 xset: Update to 1.2.2
00ae5d6 xrandr: Update to 1.3.5
3d656f0 xprop: Update to 1.2.1
51a68d5 xkbcomp: Update to 1.2.3
fbb2d24 xinit: Update to 1.3.1
7fe0d35 xdpyinfo: Update to 1.3.0
e9b8a4c mkfontscale: Update to 1.0.9
8e79f83 libdrm: Update to 2.4.27
c2c5f09 json-glib: Update to 0.14.2
e5d2c20 wget: Update to 1.13.4
cf02474 qt-mobility: Add missing patch
9c8d335 libsdl: enable alsa based on PACKAGECONFIG and respect DISTRO_FEATURES
240d256 qt4: qt-mobility: fix QML video player crash
4f408de qt4: fix sed to have correct *.pc files
e82ae04 libsdl: replace tabs with spaces
faf8832 libsdl: enable cdrom, alsa and tslib, disable rpath and add few fixes from meta-oe
ee58c9e libsdl: rename files dir to libsdl-1.2.14 for faster lookup
93ca585 libsdl: drop unused files
972b40b eglibc-initial: Ensure symlinks point to the correct location when built from sstate cache
ec58c93 mesa-common: allow empty PN
31b57cb base-passwd: Fix race
0092c62 distro-tracking: update information for binutils & libtool
94cc386 binutils: upgrade from 2.21.1a to 2.22
c62bb97 distro_tracking: update tracking fields for gettext and eds-tools
1b868bb Self Hosted Image: Added Task and Images
ad1f3d9 intltool: remove XML::Parser check
c06eecf tzdata/tzcode: Update tzdata to 2011n
6034b5f mesa: package gl/egl/osmesa to separate packages
1bab507 distro_tracking_fields: update the status
bc802a7 distro_tracking: Update manual check dates (readline, gcrypt)
3d7d510 runqemu: look for *-image* to be more flexible for image names
20291f3 xserver-xorg: only use --disable-dga in xserver-xorg-lite
a791139 libx11-trim: update to 1.4.4
98e3709 rpm_5.4.0.bb: Build rpm without xz
7edf5cf Introduce multiarch DISTRO_FEATURE
f479184 opkg-utils: handle 6 digit UID fields properly
31e9982 python-native: Fix gcc compiler detecting logic
fbdbe8d toolchain-scripts.bbclass: Make it work when TCLIBC=uclibc
d7153d6 default-distrovars: Define SDK_VERSION and DISTRO_VERSION
5369fb3 pulseaudio: update to 1.1, delete 0.9.x
100b340 libjson: add 0.9
4cd9671 bitbake: Update users of getVar/setVar to use the data store functions directly
0a434ac getVar/setVar cleanups
71fded5 ghostscript: Ensure we run reautoconf
c56232f ghostscript-native: Ensure the sys/time/h fix is applied for native builds
b06b1b0 ghostscript: Really fix parallel make race
d7db368 documentation/adt-manual/adt-prepare.xml: Fixed bad URL for edison tarball
31c4229 documentation/dev-manual/dev-manual-newbie.xml: Updates to Bugzilla use
ac174aa documentation/poky-ref-manual/ref-variables.xml: EXTRA_IMAGEDEPENDS added.
affc8b9 documentation: BB_NUMBER_THREADS and PARALLEL_MAKE suggestions
4cb3862 documentation/adt-manual/adt-prepare.xml: Updated link to machines
e3dd0ba documenation/adt-manual/adt-prepare.xml: Fixed toolchain tarball name
ba05990 documentation/adt-manual/adt-prepare.xml: Updated link to toolchain and info
68f1fa0 documentation: Added footnote element to the stylesheets
9ef0206 documentation/yocto-project-qs/yocto-project-qs.xml: fixed broken link
39899b2 documentation/dev-manual: Edits from Tom Zanussi.
684c35b documentation: Changed all manual links to point to "latest"
8632404 documentation/yocto-project-qs/yocto-project-qs.xml: Updated packages section
c8fd49a documentation/poky-ref-manual: Minor wording fixes
90aff1c documentation/poky-ref-manual/introduction.xml: Fixed broken link
8c23011 documentation: Standardized on spelling of BitBake
c80e8dd ofono: Fix missing python dependency and package tests separately
4bf73cb bitbake/siggen.py: Don't backtrace if the taskhash data isn't present
37c4f37 bitbake: Update and fix bitbake-runtask
4ce5d30 Nothing uses USERNAME, remove it - can cause sstate-cache conflicts
3406571 Nothing uses USERNAME, remove it - can cause sstate-cache conflicts
1cfd618 gcc-package-target.inc: add the symbol link /lib/cpp
c27a005 site/x86_64-linux: add cvs config variables
6543f13 bitbake.conf: We only care about the absolute value of baselib
29a04dc avahi-ui: Fix packaging and conflict with the avahi recipe
1ec0cc3 eglibc.inc: Remove EGLIBPARALLELISM from deps for EXTRA_OEMAKE
6c7108f patch.bbclass: Add PATCHRESOLVE to excluded vars for generating sstate-cache
a87ec92 gtk+: Have gtk+ pick up ${NM} from the environment
e04de73 tslib: Set open mode for ts_calibate.c
32ee632 rpm: Flush old logs by change the DB_CONFIG
d24f8aa eglibc_2.13: update SRCREV
49c7815 base-passwd: add Upstream-Status to patches, remove unused patch
6979190 dosfstools: add Upstream-Status to patches
5f8b0ef bitbake.conf: Set BB_CONSOLELOG so we log console messages by default
c3d9b5b base.bbclass: Use bb.plain to print the build header
b62a755 data/siggen: Add vardepvalue mechanism to allow the variable dependency code to be forced to specific values
437928d fetch2: Improve uri_replace to handle paths with no trailing '/'
2d8e534 knotty: Add support for logging the console to logfile
ddd3f56 runqueue.py: Fix debug message to reference the correct task
8b0a893 fetch2/local: Don't default to files in DL_DIR for file:// urls
61c51bf libtool: Avoid relinking when cross compiling, its pointless
dc2d701 apt: Fix locale header and hardcoded libname issues
bb9dc86 directfb: change check sum
2485a81 siggen.py: sort task hash depedencies with basepath
a89443e bitbake: print out symmetric difference when comparing sigs
319ea22 runqueue.py: Ensure we fully process the covered list
aa9b10d distro_tracking_fields: Update after Manual Check
1eeb899 distro_tracking: update manual checks for recipes
ae0a685 distro_tracking: update manual checks for recipes
b8697fc distro_tracking: update manual checks for recipes
e1d2a6c at: update the upstream-status of patches
7af9b74 distro_tracking: update manual checks for various recipes
0ff799c distro_tracking: Refect Recipe Updates & Status
358ac45 gconf: Add note to header about patch filed upstream
46033c3 gconf: Ensure the correct backend directory is used
54217ee runqueue.py: Ensure setscene tasks don't break dependency order
89a5b47 gconf: Ensure that GCONF_SCHEMA_INSTALL_SOURCE uses correct paths
7e17205 matchbox-stroke: Update to latest git revision to add missing Xrender dependency
40fe645 matchbox-wm: Fix variable type in _NET_WORKAREA setting
47004df staging: Remove debug accidently left in
3ab018c staging.bbclass: Add BB_SETSCENE_VERIFY_FUNCTION function
7a2458f package.bbclass: Ensure paths to rpmmarcos and rpmpopt are set
d43175e bitbake/runqueue.py: Add BB_SETSCENE_VERIFY_FUNCTION hook
17a92c4 netbase: update 4.46 -> 4.47
7022a8f gcc-4.6: Fix gcc ICE on qt4-x11-free/armv7-a
9320b76 bitbake/runqueue.py: Sort the list of skipped tasks as it makes searching the list easier when debugging
14fbf3e bitbake/runqueue.py: Fix incorrect task number reference in debug message
e1c0d9b dbus: update to 1.4.16
e2d78c6 mime.bbclass: Add --disable-update-mimedb to EXTRA_OECONF
a403e9b pulseaudio-0.9.23: Fix build on uclibc
4c289c2 netbase: Update recipe 4.46 -> 4.47
a75f6f7 gettext_0.18.1.1: Fix QA Issue
fc744a7 package.bbclass: fix path for relative links on elf files, when moved to debugdir
85162b7 sstate.bbclass: Ensure we expand stamp-extra-info
5c64734 libtool-cross: Unbreak and actually use more of it
0b640a4 useradd: Ensure -native recipes don't depend on target recipes
6aa6584 mesa: fix calling host's commands
983ce7f shared-mime-info: fix ordering of PACKAGES
e1d4f7b bootimg: Create a valid boot sector for the iso image
81b6e54 glib-2.0: fix qsort_t testing for uclibc
9d4f955 parse_py: Use absolute paths for FILE
693dddd sanitytest: remove rpm/zypper tests if PACKAGE_CLASSES does not set package_rpm
c87a539 sanitytest: use different option for command ps from busybox and procps
c2ce638 package_rpm: Set _tmppath to avoid races over tmp files
49513a6 bitbake.conf: add a couple explicit vardeps
78c61ed btrfs-tools: update to the latest git commit
e5b6464 update distro tracking recipe information
79ec782 insane.bbclass: avoid errors for x32 kernel
13518fd python-gst: upgrade from 0.10.21 to 0.10.22
c42c487 tcl: upgrade from 8.5.10 to 8.5.11
e1f046c mpfr: upgrade from 3.0.1 to 3.1.0
f2ecc19 libpcre: upgrade from 8.12 to 8.20
28b0c29 libpcap: use binconfig class to deploy pcap-config
3148a61 siggen.py: Include list of variables in hashes
cb66eba siggen.py: Fix diffsigs output for filename comparisions
f2d0772 package.bbclass: Ensure we tell rpmdeps where to find its magic file
5e109fc update-alternatives: Various fixes
217a90f sanity.bbclass: No need to check for cvs any more
4fa4a4b bitbake.conf: Update ASSUME_PROVIDED
d4a31b7 gobject-introspection: update frome meta-oe
0f9c304 screenshot: rename to sato-screenshot
3674753 gcc-4.6: fix toolchain build for SH4
65333d2 boost: Update to 1.47.0 & Cleanup
7fb5294 gnu-config: Create 2011111 release
fc30aeb gnu-config: update to git HEAD
9a566d7 file: update to 5.09
7e2682d libgpg-error: add BBCLASSEXTEND native for libgcrypts and gnutls-native
434d53b libgcrypt: add BBCLASSEXTEND native for gnutls-native
bff4b2f directfb: update to 1.4.15
be24bd3 libx11-diet: update to 1.4.4
bc9c52c apr-util: extend sed call to fix libtool patch for case without SHELL in LIBTOOL variable
d6663c3 libconvert-asn1-perl/libtimedate-perl: Convert to use allarch
88f4568 base.bbclass: add subversion-native to DEPENDS if there is svn:// in SRC_URI
8daf454 bitbake.conf: Correct svn-native -> subversion-native so we use consistent names
1a16348 alsa-lib: add nativesdk BBCLASSEXTEND
3cbd20d libnss-mdns: avoid race condition in postinst
fa81f8d mime.bbclass: fix typo
9b6a548 alsa-lib: use PKGSUFFIX for every package to resolve multiple runtime providers from target and nativesdk
4ec1632 webkit-gtk: force arm mode to work around binutils segfault
97ca723 aspell: force ARM mode
3356d63 pulseaudio-0.9.23: force ARM mode
f33c31a libatomics-ops: force ARM mode
4cedec6 time: use u-a for time, conflicts with busybox
f7388d2 time: drop default S and 2 useless comments
ab2e1c1 time: rename files dir to time-1.7 for faster lookup
dc80635 kbd: use u-a for chvt, deallocvt, fgconssole, openvt, conflicts with busybox
d34eed9 util-linux: bump PR after u-a changes
bca2c0b util-linux: add missing u-a calls for setsid chrt
fa81447 util-linux: use u-a for flock and blockdev, conflicts with busybox
d489592 subversion: add 1.7.0 with native support and negative D_P for now
b538057 qt4-x11-free: bring back pkg-config fixups
022c358 dhcp: generate initial leases files for server
6c50812 dpkg/update-alternatives: Fix dpkg version of update-alternatives to be usable
d3c950e base-passwd: Move update-passwd into a separate package
d0151bc base-passwd: Fix the broken preinst/postinstall
a4ff4e9 syslinux: fix the SRC_URI by using the 4.xx directory
97a40ff lib/bb/runqueue: avoid marking runtime dependencies as covered
d8193f1 opkg: Ensure we use the uname/gname fields when extracting tarballs
8135963 rootfs_ipk.bbclass: Ensure bad recommendations persist in the status file
acbf65b xinit: rdepends on util-linux-mcookie to avoid brining whole util-linux
9ef8cb7 util-linux: split mcookie into a package
6d0ad5c sudo: Avoid post install scripts
af2a885 shadow: Generate the shadow files at rootfs construction
8c62391 wpa-supplicant: Avoid blocking the post install script at cross rootfs time.
71fd6c8 rootfs_rpm.bbclass: Turn off script debugging
ef1d61d rootfs_rpm.bbclass: Enable pre and post install scripts
2982782 qt-mobility: qa_configure stage failed
78d1b44 README.hardware: declare support for BeagleBoard xM rev B
3b65c3e README.hardware: update atom-pc instructions
0b0674e populate_*.bbclass: Correct INSTALL variable name after recent multilib changes
5bcb096 populate_*.bbclass: Drop pointless fakeroot attribute (fakeroot is at the task level)
ffa51f0 bitbake.conf: Unload pseudo when its not required for a given task
4a8678a xinit: Fix `startx` looking for `mcookie` in sysroot
adf45e7 linux-yocto: config cleanups + romely rt support
31c7b6f task-core-x11: use VIRTUAL-RUNTIME variables for xserver_common and graphical_init_manager
61127dd keymaps: depend on kbd instead of console-tools
0676522 task-core-boot, keymaps: add another VIRTUAL-RUNTIME to allow distributions to use different set of initscripts or no initscripts at all
e6c9784 kbd: add RREPLACES/RCONFLICTS/RPROVIDES for upgradeable path from console-tools
18e61c6 kbd: import from meta-oe
8b1159ef lame: update to 3.99.1
3e21bb4 python: bump PR
90c789e ncurses: refactor configure to avoid configuring widec when disabled
c7dc128 libtasn1: update to 2.10
cb8607b libxml2: use Copyright in LIC_FILES_CHKSUM instead of COPYING
c8dee9b Convert to use direct access to the data store (instead of bb.data.*Var*())
5d3860f Allow use of dash as /bin/sh
d9740cd qemu: Ensure an internal qemugl script uses bash as it has bashisms
c96e499 classes: Remove various bashisms
a3b987a scripts/qemuimage-testlib: Output a slightly better error if expect is missing
b6bc04d udev-extraconf: blacklist /dev/md
f48be2c Distro_tracking: Update Manual Check Date
4dbe3ac libarchive: Remove obsolete comment and empty line at the end
7dec9be Introduce new SERIAL_CONSOLES to add multiple consoles for your MACHINE
2203a31 data_smart: Add appendVar/prependVar functions
12c6bcb Add FAKEROOTNOENV variable
eda0ed9 cooker.py: Ensure only one copy of bitbake executes at once
d07473d utils.py: Fix lockfile retry handling
ab34882 codeparser: silence non-literal warnings for vardeps
7e436a9 codeparser: drop expand tracking
ae96ac1 codeparser: accept a name for better messages
48d7f52 codeparser: simplify how we compare the called node names
002451b codeparser: merge the nested python parsing classes
9e06f31 local.conf.sample.extended: Fix bug 1674
605d011 useradd: Add missing DEPEND on shadow
d847aba avahi: remove USERADDPN
bef492a useradd-example.bb: update example documentation comments
3b93447 useradd.bbclass: do not modify -nativesdk packages
67a2c35 useradd.bbclass: only modify packages in USERADD_PACKAGES
4fc4be6 gconf: Drop polkit dependency
d4d29f7 gconf: add upstream GNOME gconf 3.2.3 and drop gconf-dbus
1ab3d1b mime.bbclass: No need to import os.path, it then breaks the os module
f699875 classes/[gnome|gnomebase|mime]: enhance gnome related classes
cb1bc76 shared-mime-info: package runtime data separately
b81caca busybox: add grep to temporary links during uninstall
7b645ca classes/package_rpm: disable uninstall scripts for upgrades
23d2eaf python: skip setup.py 'import check' when cross-compiling
a021dae libzypp: fix mishandling of hyphenated arches
590acd8 gmp_5.0.2: Set CC_FOR_BUILD to BUILD_CC
c37b78d documentation/adt-manual/adt-prepare.xml: Fixed broken link
4115f94 Add new IMAGE_CLASSES variable for classes for image generation
261d611 distro_tracking_fields.inc: Modify the status of qmmp
5a9e41d qmmp: update to 0.5.2
55646b1 distro_tracking_fields.inc: update to libarchive to 2.8.5
7e75df1 libarchive: update to 2.8.5
6dfac91 dhcp: move server configuration to dhcp-server-config
27d84fa dhcp: rename dhcp4.inc to dhcp.inc
09fd35f dhcp: drop unused dhcp3.inc file
3e9cb80 files/device_table-minimal.txt: add /dev/kmsg
07222a1 libcap: fix sstate for native package
e1e8910 pseudo: Uprev pseudo to version 1.2
3f854ed clutter-1.8: this should be a bbappend
e5226b1 clutter-1.8: add bbappend for new clutter-1.8 recipe
e1ca9aa clutter-gst: fix patch filename
a756565 documentation/dev-manual/style.css: Fixed HTML output
ca38e7a documentation/dev-manual: Fixed PDF Note line breaks
ddb9351 documentation/dev-manual/style.css: added .footnote element
468c879 documentation/dev-manual/dev-manual-bsp-appendix.xml: Added footnote
e8f5b17 documentation/dev-manual/dev-manual-bsp-appendix.xml: Tom Zanussi edits.
02e5570 documentation/bsp-guide/bsp.xml: fix link - found by Robert P. J. Day
e7b5027 documentation/dev-manual/dev-manual-bsp-appendix.xml: Robert P. J. Day edits
ff644c9 documentation/dev-manual/dev-manual-bsp-appendix.xml: Added text to find t-ball
6ff754f documentation/dev-manual/dev-manual-bsp-appendix.xml: BSP example scrub
e64946e documentation/dev-manual/dev-manual-bsp-appendix.xml: Robert P. J. Day edits.
a8a2504 documentation/dev-manual/dev-manual-model.xml: Robert P. J. Day Edits
bf1e5c6 documentation/dev-manual/dev-manual-newbie.xml: Robert P. J. Edits
296fd7a documentation/dev-manual/dev-manual-newbie.xml: Robert P. J. Edits
54956b8 documentation/dev-manual/dev-manual-start.xml: Robert P. J. Edits
9f10361 Documentation/dev-manual/dev-manual-intro.xml: Edits to Intro section.
d5175bb useradd.bbclass: handle nativesdk case
1ef4425 multilib: Drop MULTILIB_IMAGE_INSTALL
f9735f3 contacts: fix packaging of icons
55a738e pulseaudio: make X11 dependencies optional and add gtk+
a1c15cb connman: split scripts into separate package
8b77079 gypsy: fix packaging
7a5f2fc libcanberra: add libvorbis to DEPENDS
d06c35d mx: add mx toolkit 1.3.2
febb65c clutter-gtk-1.8: add clutter-gtk 0.11.4
65ce67a clutter-gst-1.8: add 1.4.2 for use with clutter 1.8
22fcc7c clutter-1.8: add 1.8.0
7ac57ba cogl: add cogl 1.8.0 recipe
a9091c9 dbus: fix install for virtclass-nativesdk
27d70f9 useradd.bbclass: fix how RDEPENDS is setup
28940eb lighttpd 1.4.29: rename index.html to avoid clashes with DL_DIR
24fb621 qemugl: switch to new git repo
b4f471c core-image-minimal-initramfs: force IMAGE_FSTYPES
b963904 allarch.bbclass: disable shlib and debug symbol processing
c4b3a97 fotowall: disable videocapture since we do not have a webcam
2f8d7a3 linux-yocto_3.0: update base to v3.0.8 + meta config changes
021b9da libnl-2.0: add PE/PR bump for upgradable patch for meta-openembedded users
5de5534 libnl-2.0: split to more packages, as meta-openembedded does
754e262 libnl-2.0: add patch from meta-openembedded to fix pkg-config file
6a390d5 libnl-2.0: move fix-pktloc_syntax_h-race.patch to libnl-2.0 subdirectory and merge with fix-makefile.patch
163f7bd iproute2: update to 3.0.0 to fix build with updated iptables
4a279e2 connman 0.75: bump PR for iptables library change
8138eaf python: improve packaging
8b63b92 distro_tracking_fields: updates for sudo, mtools, grep, and openssh
03748f3 image_types bbclass: use 4k bytes per inode so we don't run out of space immediately
fc50781 libcense.bbclass: fix OpenSSL mapping
d70ba51 tslib: fix the bug with loading libts-1.0.so
49f9ca5 udev-164: Update init script to do an explicit add action
8f78cf2 buildstats: Fix for buildstats on tmpfs
953b458 dtc: Add patch to correctly install shared libraries and links
3557464 dtc: update to latest git version
f7196be cogl: COPYING file Updated FSF Address
ba5537d scripts/combo-layer: skip empty commits
c04305e scripts/combo-layer: improve some messages
f829830 scripts/combo-layer: auto-commit updated config file
948d28e scripts/combo-layer: fix dirty repo check
25fc202 scripts/combo-layer: make component repo branch configurable
cb21ff1 scripts/combo-layer: tidy up config example
fd471a1 scripts/combo-layer: make init set up initial component data
2293aca scripts/combo-layer: ignore merge commits
426ad82 bitbake.conf: Drop remaining TERMCMD pieces and document OE_TERMINAL usage instead
9d1f10e patch: Convert to use oe_terminal
3b856e1 bash: Ensure we fully reautoconf the recipes so site data is used
e48e2f2 rt-tests: update to 0.83
de0d9ae rootfs_ipk bbclass: special-case base-passwd preinst to run first
01f59c4 Increment version post release
5225328 Release 1.14.0
925184a codeparser: make var_expands actually hold useful information
53b3b40 avahi: fix useradd race condition
649ca88 machine/atom-pc: enable sound
9b76e6a meta: glib-2.0: don't apply qsort_r test removable patch for native version
b090fde gettext: Switch to disabling nls and reducing -native build dependencies to a set of pre built m4 macros
9497b27 lame: add SRC_URI checksums
5537ea2 libxslt: use Copyright in LIC_FILES_CHKSUM instead of COPYING
3736ab6 distro_tracking_fields: Update the Month to 'MMM'
013198b dbus: ensure that the useradd shell is set to /bin/false
1e9c1d5 connman: Use useradd to add the xuser for DBus
e8e37cf xserver-nodm-init: Use useradd to add the xuser for rootless X
d9fc7ba avahi: use useradd to create avahi user for avahi-daemon
4a951e0 Fix HOMEPAGE values in libzypp and sat-solver .bb files
023fd24 util-macros: Drop unneeded dependencies
8c11cbc documentation/yocto-project-qs/yocto-project-qs.xml: Robert P. J. Day Review
1d63630 linux-libc-headers: remove older recipes
eedae07 linux-libc-headers: provide 3.0.x and 3.1 headers
e422bb1 udev: Split out consolekit and udev-acl
418ee5a udev: Fix the packaging of libgudev
4950afe linux-libc-headers: factor common code into linux-libc-headers.inc
18ab6c9 dbus: Ensure localstatedir is added to the package
0182b2b package.bbclass: Fix various problems
ec20f0e dbus: Use $D not ${D} in the postinstall
3001a46 package_ipk: There is no longer any need to force owners/groups to root
91bc6fa gnome-doc-utils: Add missing glib-2.0 dependency
e15a2d1 coreutils: Add missing PR bump
0f24f2d lib/oe/terminal: add support for XFCE's terminal emulator
c3c7ff7 distro_tracking_fields.inc: standardize date format
2ddf05f connman: add xtables_version to fix xtables API change
0a4d877 iptables: upgrade to version 1.4.12.1
c8440dd bitbake.conf: drop STAGING_PYDIR
6ec0ce7 netbase.bbappend: Change to version 4.46 due to the upgrade
fea04bd distro_tracking: polkit, libsndfile, etc
86c3628 telepathy-mission-control: Upgrade to version 5.9.3
9ed40d1 telepathy-glib: upgrade to version 0.16.0
2fe5e65 telepathy-idle: upgrade to version 0.1.10
11e0cde libogg: upgrade to version 1.3.0
e64074e netbase: upgrade to version 4.46
19128b4 neon: upgrade to version 0.29.6
0cff101 libsndfile1: upgrade to version 1.0.25
bbbe1c1 polkit: upgrade to latest 0.102
f490be1 documentation/yocto-project-qs/yocto-project-qs.xml: fix tarball URL
4e04f61 documentation/yocto-project-qs/yocto-project-qs.xml: dyslexic statement fixed.
57e780f documentation/dev-manual: Bruce Ashfield's dev-manual comments added.
24fd69a documentation/poky-ref-manual/extendpoky.xml: punctuation fixed.
6943f79 documentation/poky-ref-manual/resources.xml: Fixed YP term usage.
3735f03 wget: Remove pointless code
8257349 documentation-audit.sh: script for auditing documentation build status
20f0794 distro_tracking_fields: update packages tracking fields
2690ab3 e2fsprogs: move mke2fs.conf to e2fsprogs-mke2fs package
a2eace2 util-linux: split out mkfs into its own package
2113fdf dbus: remove unused initscript
584a126 abiword: convert to svn
ca000ba libproxy: fix QA Packaging issues
9bf2eed libatomics-ops: fix QA Packaging issues
80d0610 mdadm: fix QA Packaging issues
8993a66 man: fix QA Packaging issues
4a5e104 at: fix QA Packaging issues
bc5f42a dbus-glib: fix QA Packaging issues
165f0f6 wget: Add recipe from OE
43d86cd Add new strace-graph package to avoid making perl a dependecy for all of strace
93d7624 python-dir: change PYTHON_BASEVERSION to 2.7
bc5dcd3 recipes: bump PR after python upgrade
6e16329 python-2.7.2: fix build issues when additional modules are linked against host or native libpython instead of target
b1dd5dd update python 2.7 manifest
53faafc python: update generate-manifest for 2.7 version and regenerate it
01103b2 python, python-native: upgrade from 2.6.6 to 2.7.2
0d18f03 clutter-gtk: add LIC_FILES_CHKSUM to include file
a47caad libcanberra: add new package for unpackaged files
cbc31ba libxslt: Fix packaging of xsltConf.sh
2691727 Add readline as dependecy for gdb-cross-canadian
9641538 Give coreutils a chance to build the df utility
8eb1010 openssh: upgrade to 5.9p1
c9ec9d4 mtools: upgrade to 4.0.17
f0ff43b grep: upgrade to 2.9
51df60e sudo: upgrade to 1.8.3
c5efbb5 Add new util-linux-chkdupexe package to avoid making perl a dependecy for all of util-linux
fc94f92 libxml-parser-perl, libxml-simple-perl, expat, sgmlspl-native, git: bump PR to rebuild after perl upgrade
53ee27a doc: update manual for checksum changes
cd1b272 fetch2: enable checksum definition as SRC_URI parameter
64a54db fetch2: improve usability of checksums
e9f66d9 hob: fix backtrace when dismissing open dialog
bbb45b6 gst-plugins-good: correctly handle gconf schema
ea8d1bc pulseaudio: inherit perlnative
b56be05 oprofile: Update to 0.9.7 and convert cvs->git
85b54b3 texi2html: Added recipe from OE
d1e278e default-providers: switch virtual/libgl from mesa-xlib to mesa-dri
eee0b5a coreutils: Upgrade recipe 8.12 -> 8.14
74d1c5e gcc-4.6: Backport fix for PR32219
8e14cee xserver-xorg: Add mesa-dri to depends instead of virtual/libgl
777049a subversion-1.6.15: add native support too
66a7de0 apr-util: add native support
7f30c4a neon: add native support
d6ba085 apr: add native support
4349f29 squashfs-tools: add recipe
dbf48ba dbus: use useradd class to allow use in read-only filesystems
b0dae14 base-passwd: move initial criation of group and passwd to preinst
5ea680a useradd.bbclass: check if a group already exists manually
29886aa bootimg.bbclass: add support to disable HDD image building
5f8f114 perl: upgrade from 5.12.3 to 5.14.2
53f7342 gcc-configure-sdk: Point sysroot to correct location
013452f binutils-cross-canadian: Point sysroot to correct location
5ea0808 tcmode-default.inc: Add TRANSLATED_TARGET_ARCH suffix to binutils-cross-canadian
5479d4b tcl: upgrade from 8.5.9 to 8.5.10
72a1e63 distro-tracking-fields: update fields for tzdata and gst-plugins-good
5b3b115 tzcode-native: update SRC_URI to new IANA location
f0f69ab tzdata: updated SRC_URI and update to 2011k
943ccd3 gst-plugins-good: update to 0.10.30
5509266 module.bbclass: add lock to prevent error bulding ext modules
43f4f31 chkconfig: Update to 1.3.55
e5f5a5d ccache: update to 3.1.6
5f0a801 distro_tracking_fields: update packages tracking fields
b4ac21c libsdl: update to 1.2.14
0c86421 liburi-perl: update to 1.59
2fb62c7 libxml-sax-perl: update to 0.99
8f02435 ghostscript: update to 9.04
2f21384 distro-tracking: update data for some toolchain recipes
a10af58 libxml-parser-perl: upgrade from 2.40 to 2.41
4fe4ef5 python-dbus: upgrade from 0.83.2 to 0.84.0
24f5652 python-scons: upgrade from 2.0.1 to 2.1.0
acf71bb x86 tune files: set baselib for x32 tune as libx32
c37b209 insane.bbclass: print full path on invalid LICENSE_FILES_CHKSUM
8cf683b ghostscript: renamed x86_64 to x86-64 for patch to work
6c0bf21 src_distribute.bbclass, src_distribute_local.bbclass: mostly rewritten
f9257c3 ghostscript: Disable parallel make due to install issues
180caee gcc-4.6: Backport PR46934 fix
6a85e28 gcc-4.6: Upgrade SRCREV to latest FSF 4.6 branch
92711d0 bluez4: Add glib-2.0 to DEPENDS
bce6dde poky: fix broken ubifs link in deploy folder
b475783 fontconfig: fix fix-pkgconfig.patch
deb2213 gst-plugins-good: add pulseaudio to DEPENDS
5a3f9b5 gst-plugins-base: update to 0.10.35
3c517bf bind 9.8.1: fix build after recent update
13cfd5a lsb: Change link of ${baselib} to lib64 for 64bits system
601077f screen: Add patch to fix parallel make install
1c892e8 mktemp: Add patch to fix parallel make install
576c8d1 sysprof: remove duplicated patch
4e8bc57 Distro Tracking: Fix dates
a21cc57 libomxil: Fix QA Package Errors
9da3cd4 glib-2.0: Add nativesdk depends for libffi
997fdc6 bluez4: disable hidd, pand & dund
07e9877 pulseaudio: make bluetooth support conditional upon DISTRO_FEATURES
a3a5e4c cmake : Disable building ccmake.
1b49585 qt4: Added support for QtMobility 1.2
f60b650 default-provider: also define a default provider for gconf-native
35b821b resolvconf: Update to 1.61
add6e67 bind: update to 9.8.1
468e216 mesa-dri: use DRIDRIVERS_append_arch to promote right usage for BSP layer maintainers
9448de6 xserver-xorg: remove glx-use-tls again
2fd6598 mesa-dri: Enable swrast only by default and intel drivers only on IA platform
6879750 arch-ia32: Add a generic x86 override (instead of i{3|4|5|6}86 and so on)
9c3d2b2 bitbake.conf: Use TRANSLATED_TARGET_ARCH in OVERRIDES since any variable with _ in it isuseless there (e.g. x86_64)
0d69a179 meta-yocto: Sync with mesa/xserver changes and fix machines
66bef6b bitbake.conf Exclude MACHINE from MACHINEOVERRIDE variable dependencies
ff17815 data.py: fixed message domain errors
fb8483e patch.py: fixed message domain errors
10c191b nfs-utils: separate nfs-utils-client and nfs-utils-stats
44b3dc3 distro_tracking_fields.inc: update qt4 related entries
416aa7a qt4: use 4.7.4 as default preference
44385cb clutter: Update bbappend after oe-core upgrade
c471b1c qemu.inc: qemu-native also needs glib-2.0 native
c973a6e qt4-x11-free: Fix broken regexes in qt4-x11-free's recipe.
88f81c7 eglibc-2.14: add patch to fix libdl crash
f617af4 pcmanfm: Upgrade to 0.9.9
e227eb8 libfm: Upgrade to 0.1.16
839f699 linux-yocto: config cleanup and streamlining
f30c3da bash: update to 4.2
3a1d27c rsync: Update to 3.0.9
6591efa rxvt-unicode: Update to 9.12
02ea19b libgcrypt: Update to 1.5.0
9ecb4ec augeas: Update to 0.9.0
4467ef6 libtiff: Update to 3.9.5
3697fdf libaio: Update to 0.3.109
87eabec v86d: update to 0.1.10
e495303 initramfs-live-boot: make it more generic and easy to use
cd898bf image-live.bbclass: allow override of initrd image
a8e6971 libnl2: Fix a race on route/pktloc_syntax.h
3124512 distro_tracking_fields.inc: Add maintainer for some packages without maintainer
2a810f5 bluez4: Add ending quote of FILES_${PN}-dbg
22d8978 qemu.inc: Add glib-2.0-nativesdk to qemu-nativesdk DEPENDS
f7cd813 glib-2.0: Extend to provide nativesdk recipe
677d033 qemu-0.15: Add recipe and forward port patches from 0.14
412a2dc autotools: fix multi-word arguments for EXTRA_OECONF
4eae8b3 autoconf: no need to hardcode the full path to m4
8f2f209 farsight2, ldconfig-native, gnutls: There is no GPLv2.1, correct the fields
4fad327 distro_tracking_fields: Updates
1578058 shadow-native: Bump PR for patch update
d141da2 mesa-git: fix LIC_FILES_CHKSUM
303df74 mesa-git: upgrade from 7.7+git to 7.11+git
d7761be mesa-git: lower D_P a bit more then all mesa-dri
c76eb50 mesa-git: move shared parts from mesa-dri_git to mesa-git.inc and add mesa-xlib_git
8193126 mesa-dri: LEAD_SONAME shouldn't be needed now, when we're packaging each lib in separate package
8a46f88 mesa-dri: move shared options to mesa-dri.inc
f7a51d7 mesa-xlib: move shared options to .inc
73e6612 mesa: move shared PROTO_DEPS, LIB_DEPS and DEPENDS to common .inc
33e0040 mesa-7.11: move shared DEPENDS, SRC_URI, checksums and do_configure_prepend to shared .inc file
5b7f5b5 mesa-common: MesaDemos is now separate recipes, bump PE, introduce INC_PR
183484c mesa-common: add common LIC_FILES_CHKSUM for newer mesa versions
77fa7e1 mesa: move common patches which could be used in both mesa-dri and mesa-xlib from mesa-dri to mesa
462f77a mesa-dri-glsl-native: fix LICENSE
f7b4881 xorg-driver-common: bump PE for upgrade path for meta-oe users
bbd2fc3 xserver-xorg: move PE to xserver-xorg-common and bump it
ab4584a xserver-xorg: drop xorg-minimal-fonts from RDEPENDS
1eebf67 gtk+: upgrade to 2.24.6
da07984 glib: upgrade to 2.30.0
263852e cogl: Add git recipe (required by clutter)
8dc24da clutter-1.6: update to 1.6.18
7442223 clutter: Update git recipe to more recent version
c0e04c4 gamin: Fix glib 2.30 deprecation issues
2912f89 pango: Update to work with glib-2.0
5072340 libunique: Update to work with glib-2.0
bef8010 eds: Update to work with glib-2.0
a74c33d Import python-setuptools from meta-oe (for glib-2.0)
abeb5d5 atk: Upgrade 1.32.0 -> 2.2.0
394dfe4 flac: Add missing gettext dependency (requires iconv)
5405efa autotools: Enhance gettext handling to better work with SCM versions of code
667f4eb xf86-video-intel_2.16.0: fix buildfix.patch to apply
094661e documentation/adt-manual/adt-eclipse.xml: Added missing section for plug-in
82f6242 documentation/adt-manual/adt-eclipse.xml: fixed indigo typos
2923cc2 documentation: Cleaned out bad links and replaced with good
1d06f45 documentation/dev-manual: Fixed five broken links and removed note
b92b776 meta-yocto: Catch up with xserver and mesa upgrades/rename
c53616d xf86-video-intel: Update 2.15.0 -> 2.16.0
7a97bf7 mesa: Update 7.8.2 -> 7.11
2cf9fb4 hal/hal-info: This is unsed in OE-Core and deprecated, drop
b04b8a4 qt4: Drop old version 4.7.3
77bbc22 gnome-vfs: This is now unused in OE-Core and deprecated, drop
d2b4818 gcc: Drop old version 4.5.1
9167557 eglibc: Drop 2.12
7dfb9ce shared-mime-info: Fix a parallel make race
8262a89 alsa-utils 0.10.24.2: fix systemd units when there's no asound.state
aaf52a5 linux-firmware: update, merge in OE classic updates, fix packaging
d824f46 python-argparse: import from meta-oe, needed for newer glib
51592e4 git: update to 1.7.7
df2a7db libx11-diet: move old patches used only by libx11-diet-1.3 to separate directory
2ee903a libx11-trim: move files for libx11-trim from libx11-1.3.4 to libx11-trim-1.3.4
dc64df6 libx11: drop old 1.2.2 git version
ef1fce9 libx11: remove older 1.3.4
d2aea41 libx11: add new version 1.4.4
af0a957 libx11: package xcb, merge few changes from meta-oe
b093169 xorg-driver-common.inc: bump INC_PR to rebuild drivers agains new xserver-xorg ABI
e382e64 xorg-driver-common.inc: use virtual/xserver instead of older virtual/xserver-xf86
e65e8ff xserver-kdrive: drop unused files (same files are in xserver-kdrive-1.7.99.2 directory
4c80e07 xserver-xorg: move patches to xserver-xf86-dri-lite-1.11.1 and use same directory from xserver-xf86-lite recipe
4981c2a xserver-xorg: drop unused files
927c922 xserver-xorg: remove COMPATIBLE_HOST
89cc588 xserver-xorg: remove old 1.10.1 version
7b826a9 xserver-xorg: add new version 1.11.1
4d0fbb1 xserver-xorg: move shared EXTRA_OECONF entries to shared .inc
8c4b9ae xserver-xorg: replace hardcoded --enable-glx-tls with glx-use-tls.inc, which doesn't enable it for uClibc
3476f15 xserver-xorg: remove FILES_${PN} += "${bindir}/Xorg ", now we have whole ${bindir} in FILES_ defined in shared .inc
73cfa3e xserver-xorg-common: move RDEPENDS_${PN} += xorg-minimal-fonts to shared .inc
7350b5b xserver-xorg-common: lower xserver-xf86-config and xkeyboard-config dependency to RRECOMMENDS and add few more recipes to RRECOMMENDS
fbf9e2f xserver-xorg-common: move shared PROTO_DEPS and LIB_DEPS from xserver-xorg.inc and xserver-xorg-lite.inc to xserver-xorg-common.inc
9e34241 xserver-xorg-common: improve packaging
73b9f8f xserver-xorg-common: Split out some bigger modules and extensions from the main package
4fa7554 xserver-xorg-common: move SRC_URI closer together
b0ea4f0 xserver-xorg-common: fix LIC_FILES_CHKSUM
a87ee71 glx-use-tls.inc: add include file to enable glx-tls only when TARGET_OS isn't uclibc
a4cbf47 xserver-xorg: remove old git recipe
c09f0eb xserver-xf86(-dri)-lite: rename to xserver-xorg and xserver-xorg-lite
3590061 util-linux 2.19.1: split blkid out into its own subpackage
c419e8a atk: add missing SOB line to remove.G_CONST_RETURN.patch
be9ee81 Fix typos in local.conf.sample and local.conf.sample.extended
0c05d53 Fix sysprof for powerpc64
6d21863 Fix mdadm for powerpc64
3a1fa7d shared-mime-info: Upgrade recipes from 0.90 -> 0.91
4050aa4 gdk-pixbuf: upgrade to 2.24.6
d760fcc zlib: fix inverted LFS logic
d90119a gstreamer: upgrade to 0.10.35
2542b2f libglade: add gdk-pixbuf dependency
3010bc0 Use useradd and update-rc.d classes in the OpenSSH recipe
73abadd Fix the --root option in shadow-native programs
ae61335 Allow user mode NFS server to run without rpcbind / portmap
639f138 font-alias: Convert to use allarch including a patch to disable compiler checks
80c844f hicolor-icon-theme: Convert to allarch
add6cf8 gcc/binutils: Disable NLS/gettext dependencies
8ea4349 libc-package.bbclass: Use a makefile for locale gernation to increase parallelization
24c803c connman: Drop hal dependency and udev configure option, neither is used
6c30df1 task-core-basic: Drop hal dependency, its deprecated
de75097 qt-demo-init/linux-firmware/adt-installer: Convert to Use allarch class file
dcf0c83 gnutls: Disable p11-kit dependency explicitly to resolve build failures
0d8c8cf mutter: update to 2.29.1 and fix SRC_URI
c677676 pkgconfig: Fix logic that was accidently leaving legacy pkg-config functionality enabled
318da9f util-linux: split fsck* into its own subpackage
880a506 acl/attr: don't make symlink if base_libdir = libdir
bde7d30 distro_tracking: Updates
10b4cce lsof: Update to 4.84
de511df tzdata: Update to 2011k
fba22e8 gnutls: Update to 2.12.11
d98b5e1 puzzles: Update to latest version
c05b45b boost-jam-native: Add SRC_URI Checksum
0dff4c2 gail: Add SRC_URI Checksum
66ddacd gconf-dbus: Add SRC_URI Checksum
0ee62a2 liburi-perl: Add SRC_URI Checksum
d1d5e66 libxml-perl: Add SRC_URI Checksum
1b5a546 icon-naming-utils: Add SRC_URI Checksum
97bbce2 mutter: Add SRC_URI Checksum
7f469f0 xserver-kdrive: Add SRC_URI Checksum
d3798b6 clutter-gst-1.6: Add SRC_URI Checksum
85ff328 eds-tools: Convert from BZR to GIT Repo
2c89e28 libx11-diet: Add SRC_URI Checksum
541c7c8 guilt-native: Add SRC_URI Checksums
eed0114 libx11-trim: Add SRC_URI Checksum
9c92435 dosfstools: Add SRC_URI Checksum
f6488ec grub: Add SRC_URI Checksum
173c35a xserver-xf86: Use PACKAGECONFIG for udev/hal choice and default to udev
d7babed native.bbclass: Ensure native recipes have a deterministic baselib value
439792e sstate.bbclass: Ensure machine specific stamps are only wiped for the current task
6706c7b image.bbclass: No need to run most tasks except do_rootfs
70acc4f base.bbclass: Implement PACKAGECONFIG
ac8e559 base.bbclass: Minor cleanup
d918698 meta-yocto/qt4: Update bbappend to new version
195cde3 local.conf.sample: Disable interactive patch resolution for now since doesn't work well
fe76b87 documentation/dev-manual/dev-manual-kernel-appendix.xml: config example
8d088b9 documentation/yocto-project-qs/yocto-project-qs.xml: release name and misc.
05f67ce documentation/dev-manual/figures/kernel-example-repos.png: updated figure
a3e4b6a documentation/dev-manual/dev-manual-kernel-appendix.xml: edits to the example
f54a78c documentation: Fixed links for yocto-1.1
2f4eecc webkit-gtk: Enable dependency tracking since the webkit makefiles have bugs
5ea73bd autotools.bbclass: Allow dependency tracking option to be easily overridden
0a5ae8c scripts/oe-buildenv-internal: Add SOCKS5_{USER, PASSWD} to BB_ENV_EXTRAWHITE
191e61a fetch2: Export additional variables to the fetchers
68d2796 gdb-cross-canadian: Fix source directory S
6d75e6f mtools: Disable parallel make install, its broken
53a9ffc kexec-tools: fix architecture mismatch QA error
68b9f16 documentation/dev-manual/figures/wip.png: new figure added.
109150d documentation/dev-manual/dev-manual-start.xml: console updates and tar update
b9a732d documentation/dev-manual/dev-manual-kernel-appendix.xml: general updates
bbd9bbe documenation/Makefile: Added a "WIP" figure dev manual for future work.
42f6bc4 documentation/dev-manual/dev-manual-bsp-appendix.xml: changes to references
addab8a documenation/dev-manual/dev-manual-bsp-appendix.xml: fixed reference form
71cfe03 documentation/dev-manual/dev-manual-bsp-appendix.xml: fixed typo.
e07033a runqemu-export-rootfs: Add HOW-TO for ubuntu 11.10 for rpcbind problem
b6b2ca0 bootimg.bbclass: fix comment typo
9d1502b image-live.bbclass: allow images to override ROOTFS and INITRD
2884c48 image.bbclass: improve comments regarding exported functions
341eab5 linux-yocto: update live boot configuration
9a7aee0 qt4-embedded: move qt4-embedded-conf from RDEPENDS to RRECOMMENDS
bad9759 qt4: packaging fixup
13e659f qt4: Fix translation support
c88b991 poky.conf: Increment DISTRO_VERSION
1c1b605 documentation/adt-manual: changes for Jessica's review.
611d92f documentation/dev-manual/dev-manual-start.xml: Updates for 1.1 repos names
8c10e06 documentation/dev-manual/dev-manual-bsp-appendix.xml: scrubbed example
031930d documentation/adt-manual/adt-eclipse.xml: edits to zip section
1a0e71f documentation/adt-manual/adt-eclipse.xml: updates to zip method of plugin install.
47b82c7 documentation/poky-ref-manual/extendpoky.xml: multilib edits
00f99cc documentation/adt-manual/adt-eclipse.xml: edits to the config steps
e017267 documentation/kernel-manual/kernel-how-to.xml: Updated build strategy
f527e3c documentation/adt-manual/adt-prepare.xml: updates to getting images.
1b1f8e5 documentation/adt-manual/adt-prepare.xml: Updated for building tcf-agent
8d689e3 documentation/poky-ref-manual/extendpoky.xml: Multilib section added
7621dc1 documentation/adt-manual/adt-prepare.xml: changed link
14be63e documentation: Updated title pages.
11f9e74 documentation/poky-ref-manual/ref-variables.xml: updated KERNEL_FEATURES
11815ab documentation/kernel-manual: Added some references to other areas of YP docs.
d546b8f documentation/kernel-manual: Scrub for 1.1
c47f8ed documentation/poky-ref-manual/ref-variables.xml: updates to KERNEL_FEATURES.
c89ebd8 documentation/poky-ref-manual/ref-variables.xml: Added KERNEL_FEATURES
c033447 documentation/poky-ref-manual/faq.xml: Removed wording that focues on GNOME
43eeb4f documentation/bsp-guide/bsp.xml: Added recipes-core section
4a0e09a documentation/yocto-project-qs/yocto-project-qs.xml: Supported Distros updated
8aa79d7 documentation/adt-manual/adt-eclipse.xml: Added zip method for plug-in install
1bc65c7 documentation/poky-ref-manual/ref-variables.xml: Variables updated
0fb1d6e documentation/poky-ref-manual: Updates to several variables.
5e06b9a documentation/poky-ref-manual/ref-variables.xml: update RDEPENDS and RRECOMMENDS
435e0ac documentation/poky-ref-manual/ref-variables.xml: update PREFERRED_VERSION
12b10aa documentation/poky-ref-manual/ref-variables.xml: update PREFERRED_PROVIDER
f0ea446 documentation/poky-ref-manual/ref-variables.xml: update TCLIBC and POKYLIBC
225a20b documentation/poky-ref-manual/ref-variables.xml: updates TCMODE and POKYMODE
78ddcae documentation/poky-ref-manual/ref-variables.xml: edits to FILESYSTEM_PERMS_TABLES.
3790c55 documentation/dev-manual/dev-manual-newbie.xml: added information for licenses
bc9951a documentation/poky-ref-manual/ref-variables.xml: updated RDEPENDS
9d66278 documentation: scrubbed out 'glibc' and replaced with 'eglibc'
8756644 documentation/poky-ref-manual/extendpoky.xml: New section on static library
fe209e4 documentation/poky-ref-manual/ref-variables.xml: added FILESYSTEM_PERMS_TABLES
70e154b populate_sdk_rpm: Add missing /bin/sh from rpm ignore list for the SDK
954d2c2 libproxy: upgrade to 0.4.7
bc164dd json-glib: upgrade to 0.14.0
e005072 hal-info: drop PACKAGE_ARCH all
9bf0d88 Improve handling of 'all' architecture recipes and their interaction with sstate
bcc8425 qt4: Update to latest version 4.7.4
2d05398 qt4: Fix translation support
3af27a3 qt4.inc: package qtdemo's docs in a separate package
14f65e4 qt4(embedded and x11): Disable neon for armv6-vfp
4c93866 qt4.inc: Remove the optional documentation package from the demo's RRECOMMENDS
8575c86 qt4: fix generated sdk
0ee37ea qt4e-demo-image: Improve image contents
fbf50a7 package_rpm: Ensure multilib code is only called in the multilib case
2708ce6 Fix lttng-ust for powerpc64
9493ccf Update gitignore to ignore all meta-* directories
55dcda0 rgb: import from meta-oe layer
c1a74b0 xserver/mesa: Bump PR after libdrm packaging changes
1c2753f libdrm: improve packaging
6697886 xf86-video-omapfb: bump SRCREV and add patch from meta-oe
7047b87 xorg-driver: rename .inc files and merge some changes from meta-oe
b887e7f xorg-app-common: merge some changes from meta-oe
c079b76 libxft, libxrender, renderproto: add native BBCLASSEXTEND
b6b0240 gdb: upgrade from 7.3a to 7.3.1
a0cff4e byacc: upgrade from 20101229 to 20110908
4c7c6ce oprofileui: Update SRCREV to reflect recent accpeted patches by upstream
98d050d atk: add patch to replace G_CONST_RETURN with const
b35a8ae distro_tracking_fields.inc: Update upgrade information
ff7f503 dropbear: Upgrade from 0.52 to 0.53.1
dcd82f7 diffutils: Upgrade from 3.0 to 3.2.
fa2a37d curl: Upgrade from 7.21.7 to 7.22.0
fea1749 bitbake.conf: Start using parallel make for do_install
cb97f7a base.bbclass: Drop unneeded dependency
9c8b066 autotools: Disable dependency tracking
2f8d643 Remove help2man dependency
ec8dd98 Fix flac build on e500mc cores
dd71f67 fetch2/git: Make git fetch run with -f so rebased branches don't fail
b0403ff beagleboard-audio: fix RDEPENDS on alsa-utils-amixer
9d1db6c python: fix sqlite RPATH issue
0b080c1 Add proper deps for nfs-utils, util-linux, and strace
bd3ac21 Fix sysklogd build on e500v2 cores
8418fe8 Add udev patch to compile against newer kernels
742df8f Fix HAL on newer kernels without header file
73120fb Fix ghostscript on powerpc64
8836afc Add support for generating ext2.lzma{, .u-boot} images
8240072 Add support for generating ext2.bz2{, .u-boot} images
1e5ee83 Add autoconf cache for screen on powerpc64
0694273 Fixup kexec-tools compatible host for powerpc
f4fcccd sysstat: update to 10.0.2
54e6a44 glew: update to 1.7.0
b5bdb6a insane: Promote most warnings into QA errors by default
72928ab util-linux: Ensure perl scripts reference the correct perl
0d3a864 mc: Ensure perl scripts reference the correct perl
f30344d openssl: Ensure perl scripts reference the correct perl
11d4356 gcc-4.6: Update to tip of FSF gcc-4_6-branch
f40b763 multilib: add MLPREFIX to deploy folder
0f7bf53 tune-i586: fix hardcoded TUNE_PKGARCH
ccf807a apmd: use ${HOST_SYS}-libtool
7425beb apr: use ${HOST_SYS}-libtool
2c4f258 libpam: add flex-native to DEPENDS
2d59e4d cmake.bbclass: adding extendable extra variable to root path
504ebf0 scripts/oe-setup-rpmrepo: use setup_tmpdir from runqemu
7d1e101 scripts: use OE_TMPDIR instead of TMPDIR external variable
47b1ea7 tune-cortexa9.inc: add tunefile for cortexa9 socs
a3bc561 bitbake.conf: Fix reversed linker hash style logic
997d9f4 Fixed a typo for setting up OECORE_ACLOCAL_OPTS for adt-installer case
f977512 kernel.bbclass: remove unshipped files in do_install
9bef7e5 kernel.bbclass: handle .cis firmware
b9c9225 kernel.bbclass: blacklist 'perf-dbg' as well for the modules metapackage
45f64a9 tables: remove it as obsolete recipe
0155f45 libgsf: remove dependence on gnome-vfs
1027545 oprofileui: remove dependence on gnome-vfs
0b4ef8a libc-package.bbclass: add MLPREFIX when set values to PACKAGES
fae0e6c package_rpm: combine normal and multilib solution manifest together
6f6863a multilib: remove the multilib handling to allarch
9184d80 multilib.bbclass: map RDEPENDS and LINGUAS_INSTALL for image recipes
ae29e8d distro_tracking: Update Manual Upgrade Checks
ea8a997 ghostscript: disable check for time.h
2a8a052 rpm: fix QA Warning on installed but not shipped staticdev filesw
887993a zypper & sat-solver: needs RDEPENDS on rpm-lib
a5cf5eb rpm: ensure that magic file is relocatable
3ae6040 eglibc: Add recipes for 2.14
46ad3b0 gcc-4.6: Use --with-linker-hash-style configure option
81d9b54 conf,recipes: Add new variable LINKER_HASH_STYLE
19a7e6c qt4-embedded: move qte.sh profile script into own package
a459ac7 meta: qt4: fix postprocessing of pkg-config files
6527c17 pseudo: Fix QA warnings
323e291 sqlite3: Fix nativesdk packaging/QA warnings
193f5ea grub: Fix insane/QA architecture warning
2829e21 gcc: Fix two QA issues
4833772 linux-yocto/meta: eg20t and live boot config changes
324cb49 avahi: fix avahi-systemd dependencies
7f05f9b blktrace: update to version 1.0.3
f44f9f6 sysprof: update to version 1.1.8
f8dbe51 libffi: really populate -dev package
413e1a8 gconf-dbus: packaging fixup
fd3a960 gcc: include libgcov.a into libgcc-dev package
9948a81 gcc: fix possible problems with nscd compilation during eglibc-nativesdk build
62ea046 icecc-create-env-native: provide the script right in the tree
8278506 bitbake.conf: change ccache path to use MULTIMACH_HOST_SYS
1451b9f gnome-doc-utils: Prepend PKG_CONFIG_SYSROOT_DIR to the path returned from PKG_CONFIG
e3c5d7a libtool: Fix an issue where unnecessary rpaths were being injected
1750e90 sstate: No need to spew out a debug message per file, summarise instead
cb19113 base.bbclass: Drop legacy code that is no longer useful/used
9fe66fd autotools.bbclass: Set the dynamic linker search path for libtool correctly
d39c673 matchbox: Upgrade SRCREV to reflect recent accpeted patches by upstream
114ade8 tcp-wrappers: Bump PR to make meta-oe merge
49ed1ca documentation/poky-ref-manual/ref-classes.xml: documented useradd.bbclass
46bd7cb documentation/poky-ref-manual/ref-variables.xml: added BAD_RECOMMENDATIONS
315cb8e documentation/poky-ref-manual/ref-classes.xml: fixed insane.bbclass added others
5a23ec2 documenation/poky-ref-manual/ref-variables.xml: debug-tweaks qualified
cd71ed5 documentation/adt-manual/adt-command.xml: Note about running configure
24eaac7 documentation/dev-manual/dev-manual-model.xml: edit pass
44963bd documentation/dev-manual/figures/app-dev-flow.png: Updated app flow image
cbcdc22 documentation/dev-manual: Added TM to first Eclipse in chapters.
c54fffe documentation/dev-manual/dev-manual-model.xml: Edits and start of app section.
dfad4db documentation/dev-manual/dev-manual-kernel-appendix.xml: added line break
42c8028 documentation/dev-manual: model changes and updated figure
15793a8 documentation/dev-manual/dev-manual-newbie.xml: note for maintainer
5031ba1 documentation/dev-manual/dev-manual-kernel-appendix.xml: Robert Berger feedback.
7021e04 documentation/dev-manual/dev-manual-newbie.xml: addes link to commit page
2a745da documentation/dev-manual/dev-manual-newbie.xml: edits and enhancements.
13f312a documentation/poky-ref-manual/resources.xml: Updates to mailing lists.
fea08c7 documentation/dev-manual/dev-manual-start.xml: formats and re-wordings.
90ed200 documentation/dev-manual/dev-manual-intro.xml: minor edits.
f00ad29 documentation/dev-manual/dev-manual-intro.xml: re-wrote the intro paragraphs.
2889d7d documentation/yocto-project-qs/yocto-project-qs.xml: Fixed text for filesystem
4a0f744 documentation/yocto-project-qs/yocto-project-qs.xml: General edits
a3e0cb6 documentation/adt-manual/adt-eclipse.xml: various minor clean ups.
8eb63b6 documentation/adt-manual/adt-prepare.xml: fixed broken cross-link.
468f2ff documentation/adt-manual/adt-prepare.xml: applied Jessica Zhang revisions
9960c92 documentation/adt-manual/adt-prepare.xml: Title correction
ba958cb documentation/adt-manual/adt-prepare.xml: toolchain enhancements
997bcb7 documentation/adt-manual/adt-prepare.xml: removed terms
d7dc960 documentation/dev-manual/dev-manual-newbie.xml: new terms
4b20f0f documentation/adt-manual/adt-eclipse.xml: Fixed the section formatting.
f7cb020 documentation/adt-manual/adt-eclipse.xml: writer note and re-wording
ace70b3 documentation/adt-manual/adt-prepare.xml: writer notes and section format
6d05d17 documentation/adt-manual/adt-eclipse.xml: minor edits
8995698 documentation/poky-ref-manual/resources.xml: re-wrote Contributions
524f577 documentation/dev-manual/dev-manual-newbie.xml: re-write change submit
080c6ec neon: Add libproxy to DEPENDS to ensure determinstic builds
e2f1a82 libsndfile1: Disable external codec librbaries since we don't list in DEPENDS
eb509c6 cairo: Disable bfd symbol loopup since we don't list it in DEPENDS
b390a5a gtk+: Explicitly disable xinerama since we don't have it as a DEPENDS
46bbdc1 gnome-desktop: Ensure we're deterministic about startup-notification dependency
dea2fd1 bitbake/lib/bb/msg.py: fix setting debug and verbosity levels
e271de0 hob: store recipe path at load time
7b578b9 hob: fix building with current selections after reparse
98a7620 ui/crumbs/hobeventhandler: fix variable name typo
f159dfb ui/crumbs/hobeventhandler: move remaining getVariable calls to init
118da17 attr/acl: add SSTATEPOSTINSTFUNC
e377f2b populate_sdk_rpm: add pkgconfig(pkg-config) to the list
ac97d42 populate_sdk_rpm: add items to the INSTALL_PROVIDESNAME_RPM list
dbe371d intltool: add libxml-parser-perl-native dependency to -native version
ea0b744 multilib.bbclass: Partially fix multlib image targets
ca64b2e qemu-config: use pkg_postinst to generate the proper shutdown.desktop
60d0c57 bluez4: split gstreamer plugin into a seperate recipe
0b9bd3c diffstat: Add missing file from previous commit
824b014 diffstat: Fix a build failure when using libdir=/usr/lib64
7eb6cf4 gnome-desktop: Fix python path in scripts to use target path
b1f7734 foomatic-filters: Disable filter checking
69672a4 cups: Fix recipe to use the correct cups directories
cb7cab3 eglibc-2.12: Fix build on powerpc/603e
2a78707 Revert "eglibc: fix packaging of some of nativesdk packages"
f4b4432 glib-2.0: Drop old 2.27.5 development version
0289683 qemugl: Use local variable rather than "push" to save register
f800862 eglibc: fix packaging of some of nativesdk packages
cac6eb9 gcc: include plugin-related headers into packaged SDK
96333e8 e2fsprogs: include devtools scripts
66aed14 glib-2.0: include glib-gettextize stuff
e0f32aa alsa-lib: Don't use versioned symbols on uclibc builds as it causes strange hangs
ff8f0ea libxml2: reinclude a -staticdev package
2da2247 gettext: shut up unshipped files warning
2179ede polkit: fixup packaging
28b0653 gtk+: packaging fixups
1e3644c libgpg-error: drop common-lisp files
c1cd38c avahi: include dbus interfaces definitions into daemon package
1b449dd insane.bbclass: don't warn on .so files in -nativesdk packages
72ff0c5 icecc.bbclass: fix handling of nativesdk and cross-canadian packages
3d69181 icecc-create-env: rename to -native
3ac49c3 python: Fix cgi.py runtime issue
e4c57fa task-core-lsb: Remove perl-dev
7042e14 sudo: Fix PAM dependencies
0f6ef5c perl: Fix a few perl binaries to use target interpreter paths
7f59cbc usbutils: Move the pkgconfig file(s) to the -dev package
a531369 bluez4: Replace deprecated configure switch
a502a18 libglade: fix the python environment settings
ee6e30a glib-2.0: Fix python paths in scripts to use target paths
f0b9d79 procps 3.2.8: remove initscript
d9d2c9c xserver-xf86-lite.inc: use ${datadir} instead of /usr/share
4d3bac9 xserver-xf86-dri-lite.inc: use ${datadir} instead of /usr/share
ad0c9a1 xserver-xf86-common.inc: use ${datadir} instead of /usr/share
093c27a linux-yocto: kernel configuration cleanups
03b8674 linux-yocto: add blktrace feature
4ea42b6 linux-yocto: simplify kernel configuration check expression
e7f40dd distro tracking: Update Distro Aliases
97bded5 rootfs_rpm: two step installation
bcfff45 Fix mercurial fetcher in fetch2
863f43a hob: fix opening of image output dir on image build completion
7dc4495 ui/crumbs/runningbuild: fix log messages right-click menu
6a2c85f libpng: Add RPROVIDES for backwards compatibiliy with previous libpng packaging
d887bac debian.bbclass: Fix hardcoded "lib" reference
737f8bb Update python dependencies to be simply to "python"
d380bb1 libpng: avoid dangling link in libpng package
c81cd24 oprofileui: Change avahi to avahi-ui depends
9aa8b76 Fix alsa-utils package dependencies
a0530fc multilib_global.bbclass: Fix non-multilib package provides
87849d8 busybox: Enhance to add dynamic per-file provides
2fa80ef Add a run-time dependency that eglibc support GNU_HASH
29aa617 Fix RPM dependencies
64ea342 multilib: install MULTILIB_IMAGE_INSTALL
719e1ed rpm: add multilib prefix for archs under deploy/rpm
59a0890 avahi: Refactor recipe to move UI to avahi-ui
efc88ff distrodata: fix distro_check code
c2db80b zypper: git repo moved to github
86d05bf sat-solver: git repo moved to github
8b96f55 libzypp: git repo moved to github
23773a8 deb packages support: switch from /var/dpkg to /var/lib/dpkg
f45ef8d scripts/combo-layer: fix still overzealous regex in default hook script
6bed96c hob: enable package only builds even if an image has been built
081990b hob: fix build again when building packages only
8ebca0c ui/crumbs/hobprefs: re-enable reloading of data after prefs changes
92015c7 fetch2/git: fix subpath destination directory
28c3aa8 fetch2/git: be more carefull in _contains_ref when checking git log output
35fdd5a fetch2/git: fix logger.debug
9e4dc60 fetch2/wget: make checkstatus() quieter
1fba7be freetype: disable bzip2 compressed font support
d2f34d3 libgnome-keyring: add libgcrypt to DEPENDS
934e9ba libgcrypt: add libcap to DEPENDS
2a09a93 taskdata: fix string formatting of an error message
7a0cbe6 cooker.py: Fix key expansion issues in showVersions
3a6a38e sanity.bbclass: add a sanity check for KDE 4.x konsole in TERMCMD
9b51752 lib/oe/terminal.py: declare konsole from KDE 4.x as unsupported
aed5247 texinfo: several changes to build without zlib and ncurses headers on host
f48f456 base.bbclass: add crosssdk items to INCOMPATIBLE_LICENSE exclude list
92518c5 git.py: Fix logging vs logger typo
dfc13c9 sanity: disable mirrors for connectivity check
6be4817 bugzilla.bbclass: add a class to report build problems to bugzilla
849bf66 icecc.bbclass: replace with updated version
596a197 icecc-create-env: a tool to create icecc toolchain tarballs
99dd3c0 image/package.bbclass: Revise multilib support for DEBIAN_NAME.
aab7107 Misc: Added MLPREFIX to final pkg names in case of DEBIAN_NAMES.
27f8868 debian/_ipk.bbclass: Added multilib support for package_name_hook()
f5a1b3c package.bbclass: fix spurious 'installed but not shipped' warning
bb0cc3c qemu: Fix reversed BGR values on ARM Versatile emulation
ce2b383 Prevent IMAGE_FEATURES from contaminating initrd
e4fe554 Set an explicit path for the initrd scripts
6f797c9 eglibc-2.13: Replace oewarn with bbwarn
0ecc7bb initramfs-live-install: add PN to RDEPENDS
a5de479 grub_1.99: add PN to RDEPENDS
000068e ttf-bitstream-vera_1.10: add PN to RDEPENDS
66f4ceb liberation-fonts_1.06: add PN to RDEPENDS
bf51268 liberation-fonts_1.04: add PN to RDEPENDS
5a489ec web: Fix SRCREV due to lost commit in web-sato
36aba35 distro-tracking: Update package alias
14666c0 liboil-0.3.17: add upstream Fix-enable-vfp-flag patch
0b9e2fa claws-mail: be carefull with # comments ending with backslash
6c4d3f5 abiword: be carefull with # comments ending with backslash
e6706bf subversion: remove neon-detection.patch and --with-neon option
49a34b1 task-core-boot: allow distributions to define login and init manager
0a27b8b openssh: update init script to create ECDSA keys if needed
bb4a5c4 linux-yocto: remove emenlow from meta-yocto bbappend (2.6.37 version)
fb8a0ad qt4-x11-free: remove emenlow reference from meta-yocto bbappend
e20ceb9 local.conf.sample: remove emenlow from example machines
04c66de cml1/kernel: Update do_menuconfig to use oe.terminal()
79e3952 distro-tracking: Update alias
4471d3d distro_tracking: update package alias
dd605b1 task-core-sdk: change task-core -> task-core-console
7b6b3b8 grub2: new recipe
bcd1bca initramfs-live-install: add support for grub2
978f48b linux-yocto-rt: correct 3.0.3->3.0.4 mismerge for, stop_machine.c
420a545 linux-yocto: split e100 and e1000 support
1080d52 linux-yocto: move common tasks to a common location
8c310ee task-core: split into task-core-console and task-core-x11
d1f4ceb distro_tracking_field: add distro checking field
b75cf8e qt4: add blacklist-diginotar-certs patch
c2bbc59 package_deb.bbclass, populate_sdk_deb.bbclass: fix meta-toolchain-gmae build
90ded12 Uprev to latest version of prelink_git, fixing TLS issues
ce66e2c core-image-minimal: Add missing POKY_EXTRA_IMAGE variable
a765b9a libzypp: move package-manger to it own package
7eea637 documentation/dev-manual/dev-manual-newbie.xml: Suggestions Robert Berger
a45fafc documentation/dev-manual/dev-manual-start.xml: Suggestions by Robert Berger
2f1d30a documentation/dev-manual/dev-manual-newbie.xml: Updates from Robert Berger
dab5ffc documentation/adt-manual/adt-prepare.xml: Added note about sato
a7d58b5 documentation/adt-manual/adt-eclipse.xml: Fixed ifconfig command.
0bd5bba documentation/adt-manual: Rewrite for Indigo version of Eclipse.
826a53a hob: correctly set the selected image when loading a recipe
684a7c6 hob: correctly handle an exception
58570ec ui/crumbs/hobeventhandler: don't check BBPATH and BBFILES each build
3d09687 ui/crumbs/hobeventhandler: fix test for BBFILES
a1c62ae dpkg: fix pkg_postinst_dpkg, don't supply {bindir}/update-alternatives
50e184e multilib: Remove recipe from multilib.conf that inherits allarch
3117530 base.bbclass: do not expand PREFERRED_PROVIDER for kernel recipe
aa203e4 Revert "pango: use qemu to generate pango.modules during rootfs construction"
cba78fe opensp: Fix hard path in native nsgmls.
20dbf00 runqueue.py: Ensure fakeroot variables are reflected in the datastore
acf62d3 shadow: add patch for useradd lossage
9c740e0 runqemu: improve auto-detection of rootfs filenames
c505815 bitbake.conf: Default to explicitly setting the variable to disable pseudo
5a83e50 runqemu-internal: Hide some harmless warning messages
32bb9c3 imagetest-qemu/runqueue: Since we no longer support BUILDDIR, use TMPDIR
b9386c6 Revert "opensp: Fix sstate relocation issue"
c6caa2e terminal.bbclass: Improve environment handling
fa07162 runqueue: Ensure task environment is correct
98c2da6 python-native: add link for python2
95d3988 base.bbclass: fix substring matching in COMMERCIAL_LICENSE
52835dd avahi: only use gtk if DISTRO_FEATURES includes x11
00b4770 useradd.bbclass: use correct value for $D in postinst functions
8712dfb resolvconf: switch to 1.59 as 1.58 was removed from debian ftp
129c98c sstate: Avoid contention between sstate packages
62892b2 beagleboard: document how to enable the hard floating point abi
f50a176 linux-yocto: remove emenlow from meta-yocto bbappend
e5e6e76 gettext: use included libxml and libcroco
0efd5b3 gcc: add patch for ice 50099, which caused lttng-ust not to build
7283bb9 meta/recipes.txt: correct Qt capitalisation
ac0b2cb sanity.bbclass: re-enable DISTRO check
0342cf8 core-image.bbclass: zap root password if debug-tweaks not enabled
f0d4906 hal: Add virtual/kernel as hal's build dependency
9e48dd7 multilib: Remove the multilib extension for linux-yocto
8d5c35b multilib_global.bbclass: handle kernel-module-* for multilib
8476005 telepathy-python: avoid duplicated installation of errors.py
4669760 cpan.bbclass: fix native perl issue
939b9c8 prelink: Update to latest upstream version
f048ccd glib-networking: Ensure certificates are consistently disabled
f6bebe5 package_deb.bbclass: put the stderr into log.do_xxx-attemptonly.xxx
921d73b populate_sdk_deb.bbclass: add the missing parameter - for tar
e691f43 busybox: update to 1.8.5
93ca6d3 site/x86_64: Add entries to fix conf error on x86_64
44fd68d xserver-nodm-init: Change hidraw mode to allow normal user access
dc3a827 initramfs-live-install: Be consistent with grub.
f85cb8f web: Update SRCREV to address ccs_parser_parse_stylesheet arg mismatch [YOCTO #1454]
8253571 mtd-utils: update to version to 1.4.6
b8b4a92 pango: use qemu to generate pango.modules during rootfs construction
168b89a linux-yocto: re-enable utrace
244ebdc linux-yocto: re-enable systemtap
dbff562 icu-3.6: fix building with big make -j
0126118 qt-demo-init: fix init script
4376a81 image_types: Fix ubi images creation
f8ba142 scripts/hob: notify the user when the GUI won't launch immediately
886440c scripts/hob: update to match recent hob changes
314131e linux-yocto: clean configuration for v3.0.4
b45e5a3 linux-yocto: update to v3.0.4
593b2e2 linux-yocto: generalize kernel config search pattern
654112e image_types.bbclass: use per-image dirs for extX.gz images generation
fa45552 runqemu: standardize ability to specify custom qemu/kenel boot options
334a2ef task-core-tools: add systemtap to qemuarm
6ca3b31 systemtap: upgrade to 1.6
b6aa703 qt4e-demo-image: Ensure a shell is present
726a9d2 git: fix sstate relocation for git-native
a6994f8 lib/bb/siggen.py: return a string from noop get_taskhash
a9325ec hob: fix segfault on second build
88852a5 hob: clear out temporary file list after deleting
09d7874 hob: disable removal of packages
38653d6 ui/crumbs/runningbuild: mask run_buildstats failure
c0cb486 ui/crumbs/hobprefs: disable 'build toolchain with headers'
9a67398 hob: add a test to ensure hob is run with the required pre and post files
7d3d3e9 hob: reflect defaultsetup being default distro
cffbab5 hob: use both pre and post files for hob configuration
ba91445 linux-yocto/meta-yocto: update SRCREV for v3.0.4
bb024d7 opensp: Fix sstate relocation issue
75ff724 groff: Fix sstate relocation issue
99cb233 YOCTO #1088: documentation - Added text to partially address package bug
ce0456d documentation/adt-manual/adt-prepare.xml: Updates to variable and other edits
e48d500 documentation/adt-manual/adt-prepare.xml: added reference to dev manual.
04ca8b2 YOCTO #1419: General edits and fix for oprofile-server rev requirements.
77d1ba4 documentation/adt-manual: General edits.
b214cdc documentation/bsp-guide/bsp.xml: Edits for Crownbay example in kernel recipes
4884e38 documentation/dev-manual/dev-manual-bsp-appendix.xml: Fixed BBFILES_COLLECTIONS.
31acde6 documentation/poky-ref-manual/usingpoky.xml: Edits per Darren Hart
0d6dc5c documentation/dev-manual/dev-manual-kernel-appendix.xml: moved statement
97768b8 documentation/dev-manual/dev-manual-model.xml: minor edits
8a4282d documentation/Makefile: Updated the dev-manual to include three new pics.
f3cb36b documentation/dev-manual/figures: Three figures for kernel added.
837a464 documentation/dev-manual/dev-manual-model.xml: Edits to Modifying Kernel
5da4d3e YOCTO #1426: documentation/yocto-project-qs/yocto-project-qs.xml: added xterm.
f7cb20c populate_sdk: We need to ensure that the SDK sysroot reflects PACKAGE_ARCH
de5d527 sanity.bbclass: fix splitting on newlines of SANITY_TESTED_DISTROS
050e43a useradd.bbclass: remove hardcoded reference to /usr/bin
c04ae9b gcc: Fix multilib baselib confusion
f9c3639 multilib: Only build one kernel
accab54 multilib: extend multilib prefix for libsdl
6ebcc6c multilib: Using different sysroot for multilib recipes
7046e28 rootfs_rpm: setting DEFAULTTUNE for multilib archs
37285ab hal: Remove build time dependency of virtual/kernel
9ba02cc dropbear: add missing files
380f38c tzcode: Update to 2011i
c4fbcc5 sato recipes: Update PR because of libowl conversion to git
99666e7 o-hand recipes: convert from svn.o-hand.org to git.yoctoproject.org
06a89cb util-linux: fix packaging of readprofile
c9c76ef bitbake/event: Allow event handlers to quietly raise SkipPackage events
4baae78 fetch2/git: Allow to specify the name of the checkout directory
d1a84c9 scripts: Show sensible warning messages if expected binaries don't exist
c0df2ab scripts: Don't show errors from which ifconfig failing
705ec50 poky.conf: perform network sanity check by default for poky distros
c1c52a8 Fix powerpc term and provide more template for different arches
ec28538 Revert "Fix adt-installer for consistent naming for powerpc and add all arch template for installation"
57aa993 libcap: only enable pam if DISTRO_FEATURES requests it
7a27253 shadow: Fix rpm failed dependencies when install
c9f5a4f dropbear: Change the path to find configuration file and add a configuration file for dropbear
d5edc9c qt-demo-init: Fix bug 999
e2ff508 connman-gnome: Fix WiFi security display issue
c9767ea gdb: Further S vs. PV fixups
8294f42 xserver-nodm: Disable dbus-wait as it causes users too much confusion
a8d5225 sanity.bbclass: Clean up various MACHINE checks
0c78dbc sanity.bbclass: Fix broken whitespace
8c1c37a sanity.bbclass: Fix broken indentation leading to code being skipped unintentionally
c7869b4 package.bbclass: Ensure task's variable dependencies are correctly caputred in the sstate checksum
9958a57 bitbake/fetch2/git: Ensure .gitconfig file is ignored
64327ba bitbake: Correctly handle multiline comments including whitespace
8a78ed6 intltool: Fix perl paths
9df3328 libc-package: restore correct mangling behavior for locale names
ac47c1b gdb: Fix broken source directory
b3922ca eglibc-locale.inc: Add eglibc-binaries, eglibc-localedatas, eglibc-gconvs and eglibc-charmps to variable PACKAGE
de4f814 gdb: upgrade from 7.3 to 7.3a
1975956 libidn_1.22: add SRC_URI checksums
a6b35d9 image.bbclass: use ${TARGET_PREFIX}depmod
d08f3f4 image_types_uboot: fix a number of issues
d15df2e image_types: add ext4 types from OE
ea71186 distro_tracking_fields: update binutils to 2.21.1a
38f03e2 tcmode-default: update binutils version
e853d0a ui/crumbs/tasklistmodel: don't add empty entries to COL_BINB
ea33ddc ui/crumbs/tasklistmodel: loop optimisation in include_item()
ed15be3 ui/crumbs/tasklistmodel: remove unnecessary check
bfdc8a2 ui/crumbs/tasklistmodel: optimise find_path_for_item()
9a04776 ui/crumbs/tasklistmodel: prevent packages depending on each other
e2a3f28 ui/crumbs/tasklistmodel: don't add same item to binb column more than once
76b228c YOCTO #1419: documentation/adt-manual/adt-eclipse.xml - re-word
ca975f5 documentation/bsp-guide/bsp.xml: Removed directory class
748afba documentation/bsp-guide/bsp.xml: Scrubbed Crownbay items.
fdbc652 documentation/poky-ref-manual: Removed "spitz" machine example.
4a39412 documentation/poky-ref-manual/ref-features.xml: typos fixed.
2b3563f documentation/Makefile: Updated comments for usage per Robert P. J. Day
d67201e documentation/poky-ref-manual/usingpoky.xml: Updated logging mechanism
ba3069c YOCTO #910 - documentation/poky-ref-manual/extendpoky.xml: point to dev manual.
c3e8327 documentation/dev-manual/dev-manual-newbie.xml: added more to contributing
79bd1a1 documentation/dev-manual/dev-manual-intro.xml: Added other information from ref
ffbed4c documentation/poky-ref-manual/resources.xml: re-write for today's world.
dd92838 documentation/poky-ref-manual/faq.xml: Scrubbed for term Poky.
0e87c3e documentation/poky-ref-manual/extendpoky.xml: Changed targe link title.
dfce269 data_smart.py: make use of expand cache in getVar()
5d75eb2 binutils: update to 2.21.1a
85cf4de ui/crumbs/runningbuild: add a 'Copy' item to the messages right-click menu
cd51ea6 ui/crumbs/tasklistmodel: don't add same item to binb column more than once
744f58f kernel.bbclass: Find the kernel consistently.
7d8d3e6 pango: make x11 support conditional on DISTRO_FEATURES
0963d51 opkg-utils: ignore packages disapperaring filelist generation
e4ebecd eglibc: fix gconv packaging after 5486cac29db6e67051fff7637a0abc9aeab661e5
7d017c3 multilib.bbclass: add renaming for INITSCRIPT related variables
0e7bcf1 multilib.bbclass: add "pkg_postinst" and "pkg_postrm" as renaming elements
45f805a multilib.bbclass: Fix renaming logic for "FILES_", "RDEPENDS_", etc
ae2a894 bitbake.conf: Use BPN in FILES paths
d205a16 base-passwd: Use BPN in FILES paths
73b8ac6 qt4e-demo-image: Fix bug 999
c7850dd linux-yocto-rt: qemumips: fix boot panic
8a8a3b3 scripts/runqemu: disable unfs boot mode for qemuppc
5633ac7 kernel.bbclass: support kernel image type of vmlinux.gz
e70a369 cmake-nativesdk: remove gcc standard paths
4d8b2da qt4-tools-nativesdk: remove gcc standard paths
9ce2cc6 bitbake.conf: set includedir_nativesdk
ae4ad20 Fix adt-installer for consistent naming for powerpc and add all arch template for installation
de36669 package.bbclass: Fix recrdeptask of image type recipes
84ef84d script/runqemu: change boot command line for qemuppc
5d46305 gcc-4.5.1: Drop gcc-poison-parameters.patch, replace with bug fix patch
36cda02 gcc-4.6: Drop gcc-poison-parameters.patch as its not need
6c2b7be classes/sanity: enhance the network connectivity test
c031954 linux-yocto: update meta SRCREV to sync version strings
9ca6806 docuementation/poky-ref-manual/ref-structure.xml: Changed SRCDATE reference
b5fc6d7 documentation/poky-ref-manual/faq.xml: Edits to scrub for Poky
8e0ba4e documentation/poky-ref-manual/faq.xml: Edits to scrub for Poky
d02e56f documentation: Changes to Paul Eggleton's edits for various manuals.
88dfc93 documentation: clarify specifying a specific package with -e
954444f documentation: update documentation for SRCREV variable
1e18d85 documentation: set titles for all documents
cf65497 documentation: update BBFILE_* variable documentation
75fc384 documentation: update for directdisk/live image changes
23a7eec documentation: update TERMCMD/TERMCMDRUN documentation
547ba60 documentation: ensure all examples have LIC_FILES_CHKSUM
3906b60 documentation: improve LIC_FILES_CHKSUM documentation
88c1694 documentation: SITEINFO_ENDIANESS -> SITEINFO_ENDIANNESS
e4e0d02 documentation: typo, spelling & minor grammar fixes
82fd055 documentation: manpage -> help output
6ca8903 documentation: correct QT to Qt
d1b1109 hob: disable some menu entries whilst build is in progress
39e90c8 bb/ui/crumbs/tasklistmodel: fix find_reverse_depends method
8ac3cec hob: don't set PARALLEL_MAKE and BB_NUMBER_THREADS based on cpu count
cd80b4f bb/fetch2/git: add checkstatus command
64c1f93 meta-toolchain/environment: Collected site config files in runtime.
c6b8084 toolchain-script.bbclass: Collected cached site config in runtime.
4c2baa2 libc-package bbclass: fix binary localedata dependency code
a097c26 terminal: fix issue with unset exportable env vars
f5cddf9 linux-yocto/2.6.37: apmd + get time of day fixes
f340011 linux-yocto: update machines and default configuration
d8ac3ed linux-yocto: update meta SRCREVs for beagleboard config changes
f6c1e8e meta-yocto: make qemu machines prefer linux-yocto_3.0
2ee520a linux-yocto/meta-yocto: update SRCREVs for 3.0.3 and consolidated fixes
f08b8c9 meta-yocto: atom-pc/mpc8315e-rdb change preferred version to 3.0
2c8120d linux-yocto-rt: update qemuppc support and streamline variables
d7b152d kern-tools: allow flexible branch points
4f4475f initrdscripts: fix init-live.sh for hddimg and livecd
6ba3b6b libpam: Setting suid bit for unix_chkpwd
45a0c38 cronie: Updates to cronie
9a623a6 mips32: add mips32el tuning
ed7affc procps: Fix lib path to support multilib
16ca6dd libtasn1: update SRC_URI
f8cddd7 mpc8315e-rdb: add kernel modules to rootfs
51351e3 documentation/yocto-project-qs/yocto-project-qs.xml: Fixed manual references
d02f6b0 documentation/poky-ref-manual/ref-variables.xml: Fixed links
94638de documentation/poky-ref-manual/ref-varlocality.xml: Reformatted
61d65d1 documentation/poky-ref-manual/introduction.xml: Title changed.
638ffa9 documentation/poky-ref-manual/ref-variables.xml: Fixed default format
70bd76e documentation/poky-ref-manual/ref-variables.xml: Scrubbed for Poky
7a59fbd documentation/poky-ref-manual/ref-variables.xml: partial edits.
87f4bfd documentation/poky-ref-manual/ref-features.xml: Cleaned up list formatting.
5b17172 documentation/poky-ref-manual/ref-images.xml: Reformats of the Docbook code.
95ef8d7 documentation/poky-ref-manual/ref-classes.xml: Scrubbed for Poky
32a8608 documentation/poky-ref-manual/ref-bitbake.xml: scrubbed for Poky
39de08c documentation/poky-ref-manual/ref-structure.xml: Scrubbed for Poky and edits
cde376c documentation/poky-ref-manual: Removed figures from file structure.
31d5948 documentation/bsp-guide/bsp.xml: General updates
8fd890a documentation/Makefile: Removed sato image from tarfile list in poky-ref-manual.
ec6b307 documentation/poky-ref-manual/figures/ss-sato.png: deleted figure.
10ddfd6 documentation/poky-ref-manual/extendpoky.xml: scrubbed for Poky
776834d documentation/poky-ref-manual/development.xml: Garman's partial review comments
ed4caad documentation/poky-ref-manual/development.xml: updates for YP terms
90d5834 documentation/poky-ref-manual/usingpoky.xml: small edits to list and title
e384051 documentation/poky-ref-manual/introduction.xml: re-write for YP
7f9b16d documentation/poky-ref-manual/resources.xml: Changed title
8aa163b documentation/poky-ref-manual: Changed top-level titles
295b855 documentation/poky-ref-manual/usingpoky.xml: re-write for Yocto
00d483d documentation/poky-ref-manual/usingpoky.xml: YOCTO #1001 - new section added
8165eef documentation/dev-manual/figures: Figure updates
96f0c57 documentation/poky-ref-manual/development.xml: re-write of software dev section
34de499 documentation/dev-manual/dev-manual-newbie.xml: Updated term list.
266b83c documentation/poky-ref-manual/development.xml: Updated software dev intro
45aa3ff documentation/poky-ref-manual/figures/poky-title.png: Changed Title
1e789e6 documentation/dev-manual: Incorporated Joshua Lock's review comments.
0a2e82c documentation/poky-ref-manual/usingpoky.xml: Fixed double dash display.
73be798 documentation/yocto-project-qs/yocto-project-qs.xml: fixed double dash
9346231 documentation/adt-manual/adt-prepare.xml: changed 1.0 to 1.1
5b5ace9 documentation/adt-manual/adt-eclipse.xml: Fixed double dash display.
cc340cd documentation/adt-manual/adt-command.xml: fixed double dash display.
cc4a9d7 documentation/yocto-project-qs/yocto-project-qs.xml: changed to 1.1.
7d465d6 documentation/kernel-manual/kernel-how-to.xml: command indentation fixed.
53dcd99 documentation/adt-manual/adt-package.xml: Fixed typo and long commands
472f050 image.bbclass, kernel.bbclass: remove non-standard -n option from cp command
9471db5 scripts/combo-layer: fix overzealous regex in default hook script
5f6dcb2 base.bbclass: clarify COMMERCIAL_LICENSE skip reason
ec63594 utils.bbclass: skip empty paths when handling FILESEXTRAPATHS
5c78d94 task-core-x11-sato: add libsdl into sato image
9a75040 libsdl: do not inherit nativesdk
1eb4426 scripts/combo-layer: fix configuration file handling
6f5066a scripts/runqemu: add support to pass bootparams to kernel
628d09c kernel.bbclass: save kernel image name into $kerneldir
505be75 Use OECORE_DISTRO_VERSION instead of POKY_DISTRO_VERSION
b6bd713 bitbake meta-toolchain with gcc 4.5.1 failed
ac77252 linux-yocto: update SRCREVs for 3.0.3
c52c2ac linux-yocto: move more default values into linux-yocto.inc
90d11a0 at: fix RDEPENDS -> RDEPENDS_${PN}
4403816 adt-installer: Removed the hard coded repo url.
67f5a95 image_types_uboot: add uboot mkimage fs types
7629ec7 rpm: be certain we don't prefix our binaries
86c9058 libpcre: the generated libtool uses HOST_SYS
a0dc330 recipes: Delete patch=1, its default and replace pnum with striplevel
e30a104 tune: Add hard floating point variants of cortexa8 tunes
1f26aa3 tune: add missing closing quote to arch-armv7a.inc for AVAILTUNES
b2266beeb usermanual: The git fetcher defaults to the git protocol (or file)
09761c9 fetch2/git: Add rsync as a valid git protocol
5c34022 bb/ui/hob: warn and prevent image build if no IMAGE_FSTYPE is set
ba63660 bb/ui/crumbs/hobprefs: fix setting IMAGE_FSYTPES
17bd3a0 bb/ui/crumbs/hobeventhandler: fix return values of *_image_output_type
a17e6c4 bb/ui/hob: fix package only build
4ea4f44 bb/ui/crumbs/tasklistmodel: track the PN for each entry in the model
989ce0c hob: don't try and build if user selects Bake with no selections made
b6009b2 bb/ui/crumbs/tasklistmodel: store all binb, not just the first
d2f1ede bb/ui/crumbs/tasklistmodel: remove useless items from dependency list
c1b31f8 bb/ui/crumbs/tasklistmodel: more robust checking for substrings
1082201 bb/ui/crumbs/runningbuild: hide the progress bar on cache load complete
38393fb bb/ui/crumbs/runningbuild: reduce number of messages after recent msg change
edd8e1e documentation/adt-manual/adt-command.xml: general edits.
cb8f3b1 documentation/adt-manual/adt-eclipse.xml: general edits and formatting.
7946934 documentation/adt-manual/adt-package.xml: Minor edits
d5d0f08 documentation/adt-manual/adt-prepare.xml: edit pass for new termninology
b29e5ba documentation/Makefile: added git-workflow.png and kernel-dev-flow-png to tarball list.
73b44c6 documentation/dev-manual/dev-manual-newbie.xml: added picture for newbie Git
ca9366e documentation/dev-manual/dev-manual-bsp-appendix.xml: Corrected the SRCREV statement
1ae239f documentation/dev-manual/dev-manual-kernel-appendix.xml: Added kernel reconfigure example.
958c355 documentation: updated the note in the front matter to use a link specific to manual.
7e8ae60 documentation/dev-manual/dev-manual.xml: updated note for latest documentation.
36396b6 xcb/libpthreads: Add BBCLASSEXTEND to resolve missing providers in world builds
03211ed bluez4: drop usbpath from DEPENDS
0427c2b libgcc: Remove fetch/unpack/patch noexec stamps
8aa14b4 newt: update distro tracking fields
89034c2 alsa-tools: update license and add distro tracking fields
c7016ba slang: add homepage and update distro tracking fields
b8a4d10 mailx: update license and distro tracking fileds
ddc01be eglibc: check dependencies among eglibc options
f6206cb acl: Use BPN instead of PN for style like lib${PN}
1216f6f attr: Use BPN instead of PN for style like lib${PN}
3b387d7 ea-acl: Use BPN instead of PN for style like lib${PN}
90d20d0 curl: Use BPN instead of PN for style like lib${PN}
30ba983 initrdscripts: fix init-live.sh
b174d51 bluez4: update recipe from meta-oe
a6e564b task-core-boot: allow distribution to override default dev_manager provider with VIRTUAL-RUNTIME_dev_manager
02a7028 gdb: Add lttng-ust to DEPENDS only for eglibc
e303a46 task-core-tools: Use LTTNGUST variable instead of hardcoding lttng-ust
357434d at: make at usable for common user
db530d7 libxslt: fix packaging of static libraries
1927021 scripts/runqemu: modify search paths for libgl
85a6d0c qemu: modify search paths for libgl
ce4c33e sysvinit: Change ${PN} to ${BPN} in file names
be71f55 busybox: Change ${PN} to ${BPN} in file names
d66c067 perl-native: Update find_perl to find the perl wrapper
ce1f028 glib-2.0: explicitly disable dtrace and systemtap for native varaint
5f32d1f qt4: allow a reduction in build time
e043c9d sanity.bbclass: add optional untested host distro warning
333d571 image.bbclass, kernel.bbclass: create warning file about deleting deploydir files
915f1e0 meta-yocto: add linux-yocto-rt support for all meta-yocto machines
e744900 meta-yocto: allow for virtual/kernel override
978cdd5 kernel: restore crtsavres.o to enable building external modules on powerpc
5ab332a shadow: switch to a fetchable SRC_URI
354bd05 poky.conf: add flag opengl into DISTRO_FEATURES
0671cf3 buildstats.bbclass: Fixing task endtime
718e076 ofono: conditionally enable bluetooth
c8294d1 create-pull-request: increase likelihood of detecting a rename
08a5e24 connman: use DISTRO_FEATURES to enable wifi and bluetooth
17f8e98 qmake_base: add uclibceabi
032f396 distro_tracking_fields.inc: update the info for the following recipes
99fbca7 dri2proto: upgrade from 2.4 to 2.6
4580761 glproto: upgrade from 1.4.13 to 1.4.14
f08d7da xproto: upgrade from 7.0.21 to 7.0.22
8c9add6 freetype: upgrade from 2.4.4 to 2.4.6
ce6a08c util-macros: upgrade from 1.14.0 to the latest version 0.15.0
7bf3c4f mdadm: upgrade mdadm from 3.2.1 to 3.2.2
87bffdb cronie: upgrade from 1.4.7 to 1.4.8
c94bc4d tcf-agent: add openssl into DEPENDS
ad96bb7 bluez-hcidump: upgrade from 2.0 to 2.1
57bd62a package(_ipk).bbclass: opkg using ALL_MULTILIB_PACKAGE_ARCHS
f759bde linux-yocto: meta SRCREV bump
d77948e qemu: change default kernel to 3.0.x
867032e linux-yocto: bump version string to 3.0.1
8004113 gtk-icon-cache: Adding MLPREFIX when dynamically set RDEPENDS
4219deb package_rpm: Fix package rename issue in multilib case
c228ffb package_rpm: enhance strip_multilib function
b51e834 rootfs_rpm: Fix DEFAULTTUNE setting in multilib case
5440cb5 qemu: Make qemu buildable inside qemux86/qemuppc target
2df5472 libxcb: enable native/nativesdk builds as was done previously in meta-oe
e1297d1 libproxy: remove dependency on X libs
b7937a4 cmake.bbclass, perlnative.bbclass: arrange for cmake to find perl-native
a21ff55 Fixup remaining bb.msg.domain users
a7e4747 documentation/dev-manual: Scott Garman's review comments.
8c45abc documentation/dev-manual/dev-manual-start.xml: Note added
e45f2aa documentation/dev-manual/dev-manual-model.xml: Comments from Ashfield
e04e02c documentation/dev-manual: Changed 2.6.37 to 3.0 for 1.1 release.
9584cb5 documentation/dev-manual/dev-manual-model.xml: rescaled kernel figure
a10057e documentation/dev-manual/dev-manual-newbie.xml: fixed git-format-email
c263dbd documentation/dev-manual/dev-manual-model.xml: Added optional wording.
4cf3cd4 documentation/dev-manual/dev-manual-model.xml: wording change.
fe155a1 documentation/dev-manual/dev-manual-newbie.xml: wording change.
65485af documentation/dev-manual/dev-manual-kernel-appendix.xml: structure added
3c631db documentation/dev-manual/dev-manual-kernel-appendix.xml: edit pass.
fe76c38 documentation/dev-manual/dev-manual-model.xml: re-write of the kernel dev overview
53a901e documentation/dev-manual/dev-manual-kernel-appendix.xml: added note
8d95334 documentation/dev-manual/dev-manual-kernel-appendix.xml: file name change
ae7a214 documentation/dev-manual/dev-manual-bsp-appendix.xml: changed file name
2647850 documentation/dev-manual: Positioned figures for PDF output
376a7e5 documentation/Makefile: Updated tarfile list
d328082 documentation/dev-manual/figures/kernel-example-repos.png: new figure
04c77b9 documentation/dev-manual/dev-manual-kernel-appendix.xml: re-write
d14ab10 documentation/dev-manual/dev-manual-start.xml: split out poky-extras
1cafae4 documentation/dev-manual/dev-manual-start.xml: Added to kernel source setup
f12904a documentation/dev-manual/dev-manual-kernel-appendix.xml: partial edits.
bfb2c2c documentation/dev-manual/dev-manual-kernel-appendix.xml: new section for image
572449b documentation/dev-manual/dev-manual-newbie.xml: Added anchor point
209158c documentation/yocto-project-qs/yocto-project-qs.xml: updated env and qemu start
c9b3c34 documentation/yocto-project-qs/yocto-project-qs.xml: updated the filesystem
55f384a documentation/yocto-project-qs/yocto-project-qs.xml: updated image download
b4da263 documentation/yocto-project-qs/yocto-project-qs.xml: updated toolchain section.
fa1fb04 documentation/dev-manual/dev-manual-kernel-appendix.xml: partial updates
07544de documentation/dev-manual/dev-manual-bsp-appendix.xml: better link added.
97f2475 documentation/dev-manual/dev-manual-model.xml: referenced cloning kernel files.
0fb815e documentation/dev-manual/dev-manual-start.xml: Added section for kernel files.
e60821b documentation/dev-manual/dev-manual-start.xml: removed "probably".
5756282 documentation/dev-manual/dev-manual-model.xml: removed image description list.
52435ce documentation/poky-ref-manual/ref-images.xml: Updated the list of images.
898e161 documentation/dev-manual/dev-manual-model.xml: Edit pass over the kernel flow.
12afc63 documentation/dev-manual/figures/bsp-dev-flow.png: Updated BSP flow diagram.
8fc3ea6 distro-tracking: Update info for gpgme, libassuan, apr... after last upgrade.
b10a2ba libx11-diet: Fix bug 1050
356ae25 The Skeleton initscript doesn't work on minimal image
16bbb31 qt4.inc: expand the package name for multilib case
c3a66d9 qt4.inc: revise RRECOMMENDS
92b2e94 libsdl: enable opengl for libsdl
9939c36 libsdl: add target version
8f56fc8 default-distrovars: add x11 to default DISTRO_FEATURES
98d201f dbus: only use x11 if DISTRO_FEATURES has selected it
3c1701b cairo: only use x11 if selected in DISTRO_FEATURES
0a5fe1c libx11: skip self if x11 not in DISTRO_FEATURES
254b09e pixman: remove spurious dependency on libx11
171efb2 intltool: Use nativeperl binary for PERL instead of 'perl'
5b4c0b3 qt4: delete unpackaged uic3 to avoid unpackaged file warning
f9e9d8d qt4: package QML plugins and correct their install directory
a7500e2 qt4-native: restore build of uic3, qdbuscpp2xml and qdbusxml2cpp
8cb51a5 qt4: replace qt4-tools-native with qt4-native
fb2dfe7 eglibc: Modify ldd script according to multilib config.
375cf15 utils.bbclass/multilib.class: Added misc supporting functions.
92ad22d valgrind: supporting on Linux kernel 3.x
c7dbcf8 bluez4: Added new recipe 4.96 and removed 4.82 version
e7981ad build.py: Fix cut and paste error
61d83c6 Ensure only the filtered environment variables are inherited from the OS
a6c4829 bitbake/msg.py: Drop manually created domain lists
09ce78c bitbake-layers: extend show_layers
6f32cb2 bitbake-layers: use logger.plain instead of info
6ba1beb bitbake-layers: show help with no command specified
dc2c873 bitbake-layers: improve default command help
1c30381 bb/ui/crumbs/tasklistmodel: simplify conditional in include_item
cf1cd31 bb/ui/crumbs/tasklistmodel: make package_model_filter a little safer
c82dc42 bb/ui/crumbs/tasklistmodel: optimise find_path_for_item
912a33b bb/ui/crumbs/tasklistmodel: include package level information
2bd2717 bb/crumbs/tasklistmodel: filter nativesdk packages out of views
7ee93b2 bitbake/logging: Overhaul internal logging process
fce0b96 lib/bb/providers: make "checking PREFERRED_PROVIDER_%s" a debug message
3038164 rt-tests: use an explicit commit ID
7eb72b0 lib/bb/ui/crumbs/hobprefs: fix erroneous save/reparse
b829654 bb/ui/crumbs/configurator: introduce writeConfFile method for all writes
fdcf262 bb/ui/crumbs/hobeventhandler: adapt to reset -> reparse change
1926591 bb/command|cooker: refactor the reparseFiles logic
57fd78e tune-ppce5500: Add a set of tune files for PowerPC e5500 core
246dcc3 tune-ppc: Update to pass glibc configure option to get cpu specific support
1319890 recipes-rt: add a README documenting the contents of recipes-rt
15c2a70 Move meta-rt recipes to oe-core (meta)
d9bf0a0 meta-rt: default KMACHINE and SRCREV_machine to avoid parsing errors
eca7687 meta-rt: add an -rt-sdk image
a197c6f meta-rt: rename minimal-rt images to -rt, drop live image
cb08a02 meta-rt: remove atom-pc support from the main layer
3a68590 meta-rt: add linux-yocto-rt_3.0 recipe
8f7cb53 meta-rt: canonicalize directory structure
b6c9c18 meta-rt: rt-tests v0.73 instead of AUTOREV
897f83e meta-rt: refresh linux-yocto-rt recipe
3e8a984 package_rpm: Fix attemptonly and suggest packages
86504a1 xcb-proto: update based on changes to python.m4 in automake
7449a37 automake: Update for python.m4 to respect libdir
577a914 init-install.sh: Fix make partition and make file system issues
83ada55 package_rpm.bbclass: Update the platform config and --target
9308457 rpm: Fix the canonical arch --target processing and cleanup
8bc2ebf linux-yocto: update SRCREVs for preempt-rt support + build fixes
4a99558 cross: also empty PACKAGES_DYNAMIC
ce110ed package: allow setting a section for locale packages
07de9dc package: include SECTION in the pkgdata
5ddbfab sanity: shift the required utils into a variable
f93ddea nativesdk: inherit relocatable
f1982df insane: add linux-gnu to the platform data
c45e315 busybox: don't strip the main binary
b85957b local.conf.sample: Cleanup and improve
d31d5e5 gnome-doc-utils: respect python-dir setting EXTRA_OECONF
e79534d Magic file path should be given for rpmbuild
0350be9 scripts/runqemu: Make it run on ubuntu 11.10
e8ca7c9 chkconfig: remove link for update-alternatives to disambiguate
6cfe8c0 scripts/combo-layer: a simple way to script the combo-layer conf
6ede105 sstate: Add level 2 debug so its possible to see what sstate is doing
8f8facb gcc: Various fixups to ensure consistent gcc builds
6697ce2 bitbake/usermanual: Update to be more in sync with bitbake codebase
1dd10a5 bitbake: Fix -e when used with -b option
eeaa87f bb/cache: rename confusing variable
33dc927 bb/ui/crumbs/tasklistmodel: don't include an item in its own depends
af8ef31 bb/ui/crumbs/tasklistmodel: correctly uniquify dependency list
858c79c bb/ui/crumbs/tasklistmodel: fix some typos and add comments to mark()
786033f bb/cooker: only emit ConfigFilePathFound for files which were parsed
6bb2a22 fetcher2: show warning message when checksum is mismatch
a43fcd1 bitbake/ui/knotty: Ensure previous failures aren't masked by a final successful command
83eacdc bitbake/ui/knotty: Ensure 'No Provider' errors set an exit code
1a3a1f1 eglibc: force GLIBC_EXTRA_OECONF to not be uset for nativesdk
d0552e9 oe.terminal: improve how we spawn screen
057cc1e Rework how the devshell functions
94faa71 core-image: adjust to use the new IMAGE_FEATURES support
a86252d image: add support for generally useful {dev,doc,dbg}-pkgs features
073caff image: implement IMAGE_FEATURES
b076147 scripts/oe-buildenv-internal: improve the error detecting for $BDIR
cf3ed82 tune-x86-64: Fix DEFAULTTUNE order so weak default to overrides the arch-ia32 version
18ec7f6 sqlite3: Ensure nativesdk package extension is handled correctly
2a0f785 base.bbclass: Add MULTI_PROVIDER_WHITELIST manipulation for multilib
7239530 default-distrovars.inc: Allow world builds to be successful
7898960 defaultsetup: Use .= to add TCLIBCAPPEND to TMPDIR
e154e51 qemu: Poke more paths for presence of libgl
6503452 bb/ui/hob: Restore toolchain relevant preference settings for build
d50bfaa bb/ui/hob: move some code around to avert a race
138178f bb/ui/crumbs/tasklistmodel: prevent hang when removing item
ecab5d6 uclibc_0.9.32: Sync mount.h from eglibc
ae213b2 base.bbclass: Ensure PREFERRED_PROVIDER and PREFERRED_VERSION values are set for multilibs
ff6b14d module-init-tools-cross: Clean the RDEPENDS value
b3dbcb0 gnome-doc-utils: Avoid RDEPENDS on bash in native case.
3808ff2 x86 tune inc files: add x32 abi tune parameters
153ae95 insane.bbclass: add entries for linux-gnux32
23c16e2 siteinfo.bbclass: add entries for new x86_64 ABI x32 target
ca39445 eglibc: remove PACKAGES from eglibc.inc
4ae834e multilib.conf: Supported multilib extend in more recipes.
3fad1d8 lsb: Fix hard code libdir issue for multilib
e27ff5a kernel-yocto: add CCACHE_DIR dependency to do_kernel_configme
098ae43 linux-yocto: merge v3.0.1
9e53f35 linux-yocto: update atom-pc preempt-rt definition
5e4a6bd linux-yocto: allow configuration of arbitrary branches
b0f12a1 linux-yocto: pass KMACHINE to updateme, not MACHINE
24e9522 lttng-control: Update to 0.89
d26c9bd lttng-ust: Update to 0.15
ab1e331 liburcu: Update to 0.6.4
7ae7e7e gdb: Update to 7.3
4a5336d gtk-icon-cache bbclass: don't assing to global RDEPENDS
2a4de1e apr-util: disable pqsql support to avoid configure error
74f64be python-native: Fix a compiler finding issue
2ac54c4 gst-plugins: partially sync packaging with OE .dev
35fa8dc gcc: use ${base_lib} to match gcc default configuration
2fa1f7d bitbake.conf/powerpc64: Set baselib to 'lib64' for ppc64
8358485 bb/cooker: mark parsed conf files as potential cache invalidators
040e26a bb/ui/hob: reset event handler once build complete
fe53449 task-core-boot.bb: Add PACKAGE definition to facilitate multilib
12cd07c eglibc-locale: Added ${MLPREFIX} for task dependency.
7f471e0 ghostscript: Fixed the incorrect DEPENDS.
773c555 Misc: Corrected the dependency on non-native for -native package.
2d9a3b7 qt4x11.bbclass: Using BPN instead of PN.
8c9fe92 tcp-wrappers: Using ${PN} in PACKAGES.
e3bdc68 SRC_URI: Using BPN instaed of PN.
999a84b gtk-icon-cache: add hicolor-icon-theme to DEPENDS
34bdd8b machine/include/arm/feature-arm-thumb: Allow thumb to be disabled
29208d2 local.conf.sample: Comment out BBMASK by default
e8f4566 kernel,module-base.bbclass: Improve KERNEL_LD & KERNEL_AR variables
d6bbdcc libzypp: Increase the size of the arch compat table
be030d3 linux-yocto_3.0: Fix SRC_URI to use yoctoproject.org
3a0942e dpkg: Update to use perlnative
acfcc85 image-mklibs.bbclass: Utilize ${base_libdir} instead of static /lib
05f8db8 image-mklibs.bbclass: Add powerpc64 arch support
7d3c85e gcc-4.6: Add support for the e5500 PowerPC core
06aee01 tune/arch-powerpc64: include arch-powerpc.inc to keep things in sync
e08ea67 prelink: Add lib64 dirs to prelink.conf
dc8bd9e libproxy: utilize libdir when configured
3f18bf1 libmusicbrainz: utilize base_libdir when configured
378151b coreutils: Fix build on uclibc
281fc55 autoconf: Remove code checking for hardcoded /usr/local
db6b664 autoconf: Remove patch=1 from SRC_URI
b525fc1 buildstats.bbclass: Adding disk io measurement
17e8d85 toolchain-scripts & other classes: add TARGET_LD_ARCH & TARGET_AS_ARCH vars
5561aaa eglibc: Fix patch merge breakage
9e5890d documentation/dev-manual/figures/bsp-dev-flow.png: Updated picture
5ce8039 documentation/dev-manual/dev-manual-newbie.xml: edits suggested by Dave Stewart.
71dc0c6 documentation/Makefile: Added figures to tarfile list.
e4448da documentation/dev-manual/dev-manual-newbie.xml: updated intro paragraph and figs
e3687ca documentation/dev-manual/figures: Added three figures for sources
0c38b24 documentation/dev-manual/dev-manual-start.xml: Wording change for running image.
dd2883b documentation/dev-manual/dev-manual-kernel-appendix.xml: minor edits
46af251 documentation/dev-manual/dev-manual-model.xml: first pass of kernel steps added. (From yocto-docs rev: a8354af008306f4deeae7b2167c3dbd604d8b275)
4285c3c documentation/dev-manual/dev-manual-start.xml: added anchor for reference.
ce9a0c1 documentation/dev-manual/figures/bsp-dev-flow.png: Updated figure
ea7d4cb documentation/dev-manual: replaced "&dash;" with "-".
bb91aa6 documentation/dev-manual/dev-manual-model.xml: Increased vertical image size
406824f documentation/yocto-project-qs/yocto-project-qs.xml: Added note to title page.
df815c1 documentation/poky-ref-manual/poky-ref-manual.xml: Added note to title page.
938d43d documentation/kernel-manual/kernel-manual.xml: Added note to title page.
aa764ce documentation/bsp-guide/bsp-guide.xml: Added note to title page.
33f9253 documentation/adt-manual/adt-manual.xml: Added note to title page.
343fc64 documentation/dev-manual/dev-manual.xml: Repositioned note.
896c9de documentation/dev-manual/dev-manual.xml: Added note to title page.
3f7385d documentation/Makefile: Added the figure bsp-dev-flow.png to tarlist.
68ee0fa documentation/dev-manual/dev-manual-model.xml: Added spot link to kernel section.
a246c30 documentation/dev-manual/dev-manual-model.xml: Minor edits.
fe51c0d documentation/dev-manual/figures/bsp-dev-flow.png: Updated the figure.
0fbbadb documentation/dev-manual/figures/bsp-dev-flow.png: New illustration
7865487 documentation/dev-manual/dev-manual-model.xml: added BSP flow illustration.
ebf0399 documentation/dev-manual: Added reference to example appendices
0bea49d documentation/dev-manual/dev-manual-cases.xml: Deleted this file.
93e530c documentation/dev-manual/dev-manual-kernel-appendix.xml: removed redundant id.
c28a189 documentation/dev-manual/dev-manual.xml: updated files to the book
eb7fe72 documentation/dev-manual/dev-manual-kernel-appendix.xml: added tags
568a15c documentation/dev-manual/dev-manual-kernel-appendix.xml: Added appendix
3a9da1c documentation/dev-manual/dev-manual-model.xml: Fixed a broken xref.
05b0b88 documentation/dev-manual/dev-manual-cases.xml: removed BSP overview.
4737719 documentation/dev-manual/dev-manual-model.xml: Added structure
3aef350 documentation/dev-manual/dev-manual-model.xml: Moved BSP dev summary here
6d7c8f6 documentation/dev-manual/dev-manual-start.xml: Added a note to reference Git.
fd02be8 documentation/dev-manual/dev-manual-bsp-appendix.xml: removed redundancies
5b8301a documentation/dev-manual/dev-manual-cases.xml: generalized the BSP case
b67922f documentation/dev-manual/dev-manual-bsp-appendix.xml: Added section hierarchy.
0dbc9ba documentation/dev-manual/dev-manual-bsp-appendix.xml: re-wrote the Base BSP
9709d13 documentation/dev-manual/dev-manual-start.xml: Added bsp naming scheme
49e6b1d documentation/dev-manual/dev-manual-start.xml: Added BSP file set up
60eb60c documentation/dev-manual/dev-manual-bsp-appendix.xml: Modified the setup section.
167f154 documentation/dev-manual/dev-manual-start.xml: Added note for terminology.
4281568 documentation/dev-manual/dev-manual-start.xml: Added examples for YP file setup
24cbfd4 documentation/dev-manual/dev-manual-bsp-appendix.xml: spacing fixed
bed9ff3 documentation/dev-manual/dev-manual-cases.xml: partial - kernel section added
5492fa3 documentation/dev-manual/dev-manual.xml: Added the new appendix for BSP.
313f932 documentation/dev-manual/dev-manual-bsp-appendix.xml: New appendix for BSP
2c7834c documentation/dev-manual/dev-manual-cases.xml: re-write of BSP example
e77f564 documentation/dev-manual/dev-manual-cases.xml: partial - edits to clean terms up.
fbe93b6 documentation/dev-manual/dev-manual-model.xml: removed blank lines.
0e697a6 documentation/dev-manual/dev-manual-newbie.xml: edits to how to submit change section.
5c67537 documentation/dev-manual/dev-manual-newbie.xml: edits to tracking bugs section.
70b317e documentation/dev-manual/dev-manual-newbie.xml: edits to workflow
c6a7a82 documentation/dev-manual/dev-manual-newbie.xml: new section on terms added
5c8f835 documentation/dev-manual/dev-manual-newbie.xml: edits to Git section.
f91f0c7 documentation/dev-manual/dev-manual-newbie.xml: re-writes of repo and license
fed0630 documentation/dev-manual/dev-manual-start.xml: Edits to clarify YP files
af22a8c documentation/dev-manual/dev-manual-intro.xml: wording change.
307b04d documentation/dev-manual/dev-manual-cases.xml: partial - finished edits to BSP section.
026f146 documentation/dev-manual/dev-manual-cases.xml: partial - more edits to the BSP case.
70e006e documentation/dev-manual/dev-manual-cases.xml: partial edits to procedures
468d789 documentation/dev-manual/dev-manual-cases.xml: partial kernel case
cf4ab53 bb/ui/hob: be clear that the image contents are an estimate
1c1e27a bb/ui/hob: only connect to the changed signal of image_combo once
6b95217 bb/ui/crumbs/hobeventhandler: use generic loading message once cache loaded
9610ab3 bb/ui/hob: prevent label on progress bar from changing rapidly when loading
9eb25be bb/ui/crumbs/tasklistmodel: fix regex used for loading image recipes
03ca33e bb/ui/hob: fix detection of whether GPLv3 is disabled
735e708 Various siteinfo: Drop rp-pppoe variables
b72e281 siteinfo: Add posix_getpwuid_r posix_getgrgid_r posix_getpwnam_r to uclibc
fbab04f site/common-linux: Add ac_cv_file__dev_zero=yes
2a5dab5 Various siteinfo files: Consolidate va_copy/__va_copy/va_val_copy
c02ce80 Various siteinfo files: Drop enca section
4ac307e Various siteinfo files: Consolidate ac_cv_func_getaddrinfo
c8f8ca9 Various site files: Drop monotone/mono
6f3597a tcl: Add tcl_cv_api_serial to siteinfo
92ed28c sudo: Drop sudo_cv_uid_t_len from site files
59be4fe eglibc_2.13: Add support for handling sqrt & sqrtf on powerpc
f3146ae eglibc: fix build for armv4 machines
d76a2ee libxt: Add depends for util-linux and libxcb
0d789a3 glibc: Remove unused version
10304e0 connman_test.sh: Rework for busybox 'ps'
5d87fb8 kernel.bbcalss: Added do_savedefconfig task.
cb3de7d xserver-nodm-init: Fix X start failure on some platform
422c7a5 apr-util: Upgrade to 1.3.12
af415b4 apr: Upgrade to 1.4.5
e69dd2f parted: Upgrade to 3.0
fa5d871 gpgme: Upgrade to 1.3.1
e3f0cff libassuan: Upgrade to 2.0.2
1094f15 libsoup-2.4: Upgrade to 2.34.2
6d3c262 lighttpd: Upgrade to 1.4.29
b77f1f3 kernel,cml1.bbclass: Move menuconfig to cml1
9a78cb7 environment files: Added and unified version related variables.
e57a0bd binutils: Add support for powerpc e5500 core
20ee0c7 gtk-icon-cache bbclass: only add runtime dependencies on hicolor-icon-theme when installing icons
0b4b8d8 bison: Add dependency on flex-native
79e36a3 aspell: upgrade from 0.60.6 to 0.60.6.1
a242da9 SRC_URI, S: use BPN instead of PN for multilib case
8a1114d libfm: depend on intltool-native instead of intltool
bfcf50a polkit: depend on intltool-native instead of intltool
dde02ad libnewt: update to 0.52.13
c5c9c53 font-util: The recipe produces binaries so don't mark as 'all' architecture
810259e eglibc-package.inc: Fixed error in referencing PKGSUFFIX
5fbac72 multilib: Use BPN instead of PN for style like lib${PN}
0a4953b openjade-native: Change RDEPENDS of sgml-common-native
ddb8aa2 libxml-simple-perl: Use BBCLASSEXTEND insteand of *-native recipe
37fb8cd eglibc-locale: Specially handle FILES_eglibc-gconv for multilib
889455c tcl: Fix packaging of platform independent files
6f93e34 atom-pc.conf: Add live image type
a01e312 libnss-mdns: dont use hard coded /lib path
8c21a0d bb/ui/crumbs/runningbuild: emit signal when command fails with exit signal
847d38e bb/ui/hob: disable editing in the build messages tree view
fd2cbd4 ui/crumbs/runningbuild: add optional readonly mode, default off
d86fdf1 bb/ui/hob: show build messages are displayed in the order they're received
f353148 bb/ui/crumbs/runningbuild: optionally create list entries sequentially
647643b bb/ui/hob: save changes to bblayers.conf when using Add Layer menu item
be1f70d gcc: Fix setting of GLIBC_DYNAMIC_LINKER
9a49eb7 automake: Fix issue with tar configure failing with large UID/GIDs
fb98479 package_rpm: Ensure alternatives links are reflected in rpm package dependencies
2377453 autotools.bbclass: Fix m4 file race
e8e06a4 bitbake.conf/qemux86-64: Automate TRANSLATED_TARGET_ARCH
b65fd46 libzypp: Correctly handle - in package architecture names
8c4598a hob: remove temporary directory on program shutdown
e03114b ui/crumbs/layereditor: if layer adding fails show an explanatory dialog
2da73ed ui/crumbs/configurator: tweak addLayerConf return values
fdece01 ui/crumbs/hobeventhandler: emit a signal when a command fails
5f33a63 ui/hob: show error and exit if we receive the fatal-error signal
1568906 ui/crumbs/hobeventhandler: emit a signal when there's a fatal-error
ade2a27 hob: unset busy cursor on exit
639e9d9 ui/crumbs/hobeventhandler: remove unused code
bfb25ea local.conf.sample: Fix TUNENAME reference (should be DEFAULTTUNE)
20f2857 tune/ppc: Fix various TUNE_PKGARCH issues
e5d2249 eglibc: Add missing ${PN} and ${PKGSUFFIX} usages
bb5a3ff package_ipk: SDK generation workaround
06d4cf0 populate_sdk_*: Sync SDK and regular rootfs functions
f9da3c2 bitbake.conf: Add SDK_PACKAGE_ARCHS
0d5dfb2 rootfs_rpm: Cleanup and minor bug fixes
be2a276 oe-init-build-env, scripts/oe-buildenv-internal: add error detecting for $BDIR
68bd815 scripts/runqemu: grep for line beginning with TMPDIR
46cf540 arch-armv7a.inc: fix armv7a-vfp-neon -> armv7a compat case
990b587 hob: fix save/restore of toolchain preferences
42fe3c6 hob: more reliable disabling of GPLv3 packages
a10fb4f package_rpm.bbclass: fix one typo
6243fb5 package_{deb, rpm, ipk}.bbclass: fix 'lingusa' typo
d8ddc1a rootfs_rpm.bbclass: Fix multilib configurations to use DEFAULTTUNE
79e7c68 sanity.bbclass: Add sanity check that TUNE_PKGARCH appears in PACKAGE_ARCHS
d774fac tune-ppce500mc: Adjust PowerPC e500mc tune file to correctly set hard fpu.
f4788df tune/arch-powerpc64: Remove support for soft-float from ppc64
977ea55 tune/arch-powerpc64: Fix typo with 64-bit TUNE_CCARGS handling
180937a sgml-common-native: Read a catalog backup to repopulate sgml-docbook.cat
f481486 openjade-native: Write a bak file for shared state
ca6740e docbook-dsssl-stylesheets-native: Write a bak file for shared state
09b382a docbook-sgml-dtd-native: Write a bak file for shared state
43d3061 libzypp: Fix variable substitution problem in do_archgen step
7dc2732 glibc: deleted
e464fb9 meta-environment: set correct *MULTIMACH_TARGET_SYS.
8685aa5 feature-arm-thumb: respect ARM_INSTRUCTION_SET
f1d3a94 tune-xscale: fix xscale/xscale-be confusion
2d94347b arch-armv6, arch-armv5-dsp: correct endianness confusion
1d6333a tune-cortex{m1, m3, r4}: correct spelling of "cortex"
50f021e bitbake.conf: remove PACKAGE_EXTRA_ARCHS_tune-XXX default
f94b781 poky.conf: explicitly referenced preferred linux-yocto version
4a83fb1 Update TERMCMD message to align with previous change
63bd988 rootfs_rpm: Disable debug messages
36bfaaa package_rpm.bbclass: Fix mistake reported by Mark Hatle
5d35385 bitbake/providers: list PREFERRED_VERSION candidates when unavailable
965fbe4 bitbake/taskdata: fix incorrect usage of rdependees instead of dependees
daed107 bitbake: show more information for NoProvider errors
60218d1 ui/crumbs/hobprefs: trigger reparse when package format changed
cd4141f cooker: populate rdepends-pkg in generatePkgDepTreeData
b004d8e hob: fix loading customised image recipe
6b10986 ui/crumbs/tasklistmodel: work around overly aggressive package removal
052f04e ghostscript: fix parallel build issue
7fcb8b5 opkg svn: bump SRCREV to 625
8e864c5 base bbclass: add TUNE_FEATURES to the default banner
1ab1c8b libpam 1.1.4: fix packaging
b943b05 connman: Change hard coded package name to support multilib
28543c5 package(rootfs)_ipk.bbclass: support multilib in opkg backend.
af1cd61 image.bbclass: Added variables for multilib support.
44b3590 package/rootfs_rpm: Implement RPM multilib package handling
fae1955 multilib: Add missing files from broken patch merge
0960f3e base.bbclass: Fix PACKAGE_ARCH typo
7a63a98 module-init-tools-cross: Drop static binaries patch as a better fix has been merged
6c936b4 gcc: Drop part of the 64bithack patch which is no longer used
6d82688 linux-yocto: revise the dependency for multilib
687efa2 eglibc: fix for multilib RPROVIDES issue
350a891 do_split_packages: revise for multilib case
9b227ae lib/oe/util.py: Add MLPREFIX support to prune_suffix()
c18aa8d multilib: Add support for compiling recipes against multiple ABIs
f5e9a39 linux-yocto: update SRCREVs
cec3932 linux-yocto/meta-yocto: create linux-yocto 3.0 bbappend
4130931 base.bbclass: Add compatibility package name mapping handler
4a75a37 cmake.bbclass: add ${libdir} for multilib case
ebfe9cd RPM: multilib file class/color
54da9dc distcc: fix makefile parameter order
9f54793 Add basic PowerPC core tune config
f06bce4 Add basic Mips core tune config
6afd21b Add ARM tune file overhaul based largely on work from Mark Hatle
30ddd02 package.bbclass: fixup_perms - change symlink processing
19715da ncurses: Resolve header and man page multilib conflicts
ac236b0 eglibc_2.13: Resolve multilib header conflicts
e17f834 linux-libc-headers: Fix file conflict -- ..install.cmd
eb7cd0c beecrypt: Fix multilib header conflict - beecrypt/gnu.h
911dc39 apr: Fix multilib header conflict - apr.h
5aef189 binutils: Fix multilib header conflict - bfd.h
a447c3e multilib_header.bbclass: Add oe_multilib_header wrapper
ba8a726 classes/image*: Revamp creation of live images
3913013 utils.bbclass: Don't forget to pass the cmdline options
a029f81 Remove -directdisk.bb recipes
7550be2 Remove -live.bb recipes
5068a8b siteinfo: Rework the siteinfo for powerpc to fix uclibc fallout
4193d0e siteinfo: Move (getpgrp|setpgrp|setgrent|*get{pwuid,grgid}) to common-libc
85a49c9 siteinfo: Move general realloc/malloc values to common-$libc
9bb070c siteinfo: Move certain db entries to common-linux
3944034 siteinfo: Move certain mysql entries to common-linux
2abeecd x86_64-linux siteinfo: Add bash info
b39491e siteinfo: Move certain bash entries to common-linux
07db8ce siteinfo: Move certain samba entries to common-linux
b876708 polkit: Support pam
cec1bc7 dropbear: Support pam
f491a7e openssh: Support PAM
a601df4 at: enable pam support
7772a88 shadow: update pam related configure files
0eac98e cronie: enable PAM support for cronie
4e489a0 sudo: add pam support
27b2d3d screen: add pam support
03bf55e cups: add pam support
b1a0206 libpam: update to 1.1.4 and add subpackage xtests
066f06c libcap: Update to 2.22 with License Clarification
73387f2 machine/qemu: set preferred linux-yocto kernel version
ee3304b scripts/combo-layer: keep carriage returns at the end of lines
89b30c3 eglibc: remove unnecessary FILESPATHPKG usage
70059b8 module-init-tools: do not build static utilities for -cross
6228e72 console-tools: removed wildcard from SRC_URI
0590ed1 dropbear: don't override DISTRO_TYPE if it is already set
9321db3 libxcb: Add missing DEPENDS on libxdmcp
c30e58c meta/conf/local.conf.sample: improve terminal examples/comments
9545c8b meta/conf/local.conf.sample: improve comments/layout
40c887a meta/conf/local.conf.sample: remove oprofileui-native related settings
9a90556 tune-core2.inc: Drop X86ARCH32 usage
860a41b arch-ia32.inc: Fix up TUNE_ARCH variable conflicts
49c01a8 ui/crumbs/tasklistmodel: fix loading a saved recipe
30a2ac4 ui/crumbs/tasklistmodel: don't iterate whole model in find_alt_dependency()
b169dad ui/crumbs/tasklistmodel: handle items added in by base image being removed
c884b52 ui/hob: enable building an image with minimal contents
20101e9 ui/hob: Force the 'Base image combo' to be drawn correctly
9e6f220 ui/hob: change wording in build complete dialog
40f0e6d ui/hob: don't offer to show built output if build fails
2d608f8 ui/hob: switch from buildFile to buildTargets for custom image builds
6d76379 ui/crumbs/hobeventhandler: reparse files before running other commands
5c3f42d ui/hob: replace the ugly static command map
f7233d7 classes/image_types: IMAGE_TYPES was missing some entries
7b441c2 upstream status: add for libsdl and xserver patches
ac3c03b Upstream-Status: Add Upstream-Status for some missing patches
be8f985 meta: Rename SITEINFO_ENDIANESS to SITEINFO_ENDIANNESS
922eaae cooker: only append files once
ba3aef9 command|cooker: Add reparseFiles command
0828e6c bitbake-layers: adapt to cooker change for saved environment
5001610 data|cooker: use saved environment variables when calling inheritFromOS
3300065 lib/oe/utils: 'Fix' oe.utils.contains() behaviour
b163a0b bitbake/utils: 'Fix' bb.utils.contains() behaviour
819f18f Move architecture specific TARGET_OS mangling into tune files
255719f conf/machine/include: Start to fill out architecture specific tune include files and tune features
d7c67a1 sanity: Increase bitbake minium version to 1.13.3 for bb.utils.contains() function
5aa96bd bitbake.conf/classes: Variable cleanup
4cb97ca perl-dynloader.patch: Fix multilib issue for perl
05ca275 Update version to 1.13.3
3fddac4 runqemu: report error if TMPDIR cannot be determined
e9e7779 docbook-dsssl-stylesheets-native: Add SYSROOT_PREPROCESS_FUNC
f9fe0ae docbook-sgml-dtd-native: Add SYSROOT_PREPROCESS_FUNC
afa695f openjade-native: Add SYSROOT_PREPROCESS_FUNC
d434373 gcc-4.6: Fix packaging of native toolchains
9af2b2f distro_tracking_fields.inc: update the info for tcf-agent
7f576fa tcf-agent: upgrade to the latest stable revision 0.0+svnr1855
e51d542 bitbake|cooker: save a copy of the environment when BitBake is started
72e0b43 bitbake-layers: remove unneeded do_EOF
d7e17ee bitbake-layers: add command help
27edc7c bitbake-layers: check for errors before parsing
bc4aeff adjust comments/messages for default server change
638f8ca bitbake/cooker: show a warning when -b is specified
93cc53f add note to -b option indicating no dependency handling
9adf01d hob: rework image output type setting
1f4e6d6 ui/crumbs/hobprefs: tweak the package format tooltip
bb5c7d5 ui/crumbs/hobprefs: set higher arbitrary limit on threads & parallelism
9cf5190 hob: only add new layer's to the UI
52e0be4 ui/hob: if the user clicks Stop a second time only offer 'Force Stop'
95d7895 ui/hob: clear the search entry when resetting
bcd6229 ui/crumbs/tasklistmodel: don't show native and cross recipes
bd1b9d6 hob: refer to tasks as Package Collections
3e0eb8a bitbake/cache: allow class names with arguments to be specified
4a7ddff bitbake/ast: include class name when arguments given in variant
04efff1 meta-yocto: Sync with TARGET_ARCH removal changes
d741764 conf/machine/include: Set TUNE_CCARGS instead of TARGET_CC_ARCH
039a2d0 conf/machine/tune: Overhaul tune include file variables
dffe253 bitbake.conf/cross.bbclass: Add ability to dynamically change library location
eea4bd7 mpc8315e-rdb: Set TARGET_FPU correct
ac70491 bitbake/utils: Add contains helper function from lib.oe.utils
14f3bab consolekit 0.4.5: fix PAM installation dir
cf927d8 gnome-keyring 2.32.1: fix PAM support and make it conditional on DISTRO_FEATURES
b42372a site/powerpc*-linux: refactor needed options that are common
69c0b35 site/powerpc64-linux: Start initial site config
960e1e6 site/powerpc32-linux: Update with ac_cv_sizeof_* from eglibc
5fde492 site/powerpc64: Update power64-linux to include powerpc-linux
fcb865a site/powerpc: Pull all powerpc config options into powerpc32-linux
616d711 openssl: Add handling for building on linux-powerpc64
81773ae libart-lgpl: Add missing config file - allows builds on PowerPC 64
dcedeff kernel-arch: Add handling of powerpc64
f0b0179 libc: Add handling of powerpc64
ea82aba insane.bbclass: Recognise powerpc64
da07669 fix Upstream-Status line for few patches
9d4f709 python: fix security vulnerability
a70c1f6 glib-2.0: fix a compilation issue due to dtrace
5151e2a tclibc-uclibc: Fix TARGET_OS for powerpc
6904f75 .gitignore: Update build ignores to have wildcard
e3e32fb util-linux: Replace sigsetmask with posix compliant functions
5136320 strace: Define own sigmask macro if not defined already in signal.h
42c3974 uclibc: Add patch header for sync_file_range2.patch
48966d9 task-core-tools.bb: Exclude lttng-ust for x86_64/uclibc
a9aa45c mesa-xlib, mesa-dri: Probe for newlocale() before using it.
c9610a3 default-versions: Update pulseaudio as arm no longer needs a seperate backport
a7d38bc kern-tools: update SRCREV
40b4ac7 dhcp: Fix libdir issue for multilib
2dd9a8f linux-yocto: kernel-3.0 support recipe
d5b665b kernel: copy defconfig to {B} vs {S}
f352f1b linux-yocto: update LICENSE to GPLv2
c9c14a1 Sync patches with DOS line endings that became corrupted
e803c58 libiconv: Fix build failure on 1.13.1
c97f136 Remove unused target tree data for Hob
97fb1fe event: fix the event display order when exiting early
e2d2377 ui/crumbs/tasklistmodel: ignore tasks and images when marking dependencies
2bdd518 ui/hob: don't crash if PARALLEL_MAKE doesn't include a space
4eeabbe ui/crumbs/configurator: write new lines after new entries
accd46c ui/hob: add more guidance to the stop dialog
a1e18b9 ui/crumbs/tasklistmodel: fix saving recipes
a78a99d ui/crumbs/hobprefs: add missing import
1df5ab5 parse/ConfHandler: Fix multiline variable corruption
9070e74 cache: fix remnant broken 'info' reference from recent cache changes
7170fe0 documentation/dev-manual/dev-manual-start.xml: Bad links fixed.
a220e42 documentation/dev-manual/dev-manual-newbie.xml: bad links corrected. (From yocto-docs rev: 77560db929ead2b4ce5cd04dd3a125b941cb4875)
be0aaef documentation/dev-manual/dev-manual-cases.xml: Docbook formatting completed.
6c2a07b documentation/yocto-project-qs/yocto-project-qs.xml: Various Robert P. J. Day fixes
028a37c documentation/yocto-project-qs/yocto-project-qs.xml: fixed zypper syntax
86a63fd documentation/dev-manual/dev-manual-cases.xml: Initial content added.
ca96753 documentation/dev-manual/dev-manual.xml: re-ordered the chapters for the make.
43cf166 documentation/dev-manual/dev-manual-model.xml: Added placeholder sections. (From yocto-docs rev: 65cf216b865b2ef4185aa4c7dcd292ae3cd4c5e7)
1523da3 documentation/dev-manual/dev-manual.xml: Added chapter
c112670 documentation/dev-manual/dev-manual-model.xml: Initial chapter
4b6d42f documentation/dev-manual/dev-manual-newbie.xml: Initial content added.
a0ff15a documentation/dev-manual/dev-manual-start.xml: Initial content added
387ed59 documentation/dev-manual/dev-manual-intro.xml: Initial content added.
55d9b84 documentation/dev-manual/dev-manual.xml: Initial file with new name.
3e4c27c documentation/dev-manual/dev-manual-start.xml: Initial file with new name.
e925bb2 documenation/dev-manual/dev-manual-newbie.xml: Initial file with new name.
702eb2f documentation/dev-manual/dev-manual-intro.xml: Initial file with new name.
23fe5fe documentation/dev-manual/dev-manual-customization.xsl: Initial file with new name.
635ea7b documentation/dev-manual/dev-manual-cases.xml: initial file with new name.
46bbeee documentation/dev-manual: Deleted files with bad names
4dc92fc documentation/yocto-project-qs/yocto-project-qs.xml: gmae -> sdk
73107a7 documentation/yocto-project-qs/yocto-project-qs.xml: wording change.
7741e10 documentation/documentation/yocto-project-qs/yocto-project-qs.xml: link typo fixed. (From yocto-docs rev: a73aa8d24023fb41a061b8d1a7a1a93c6b04b5b9)
3b70616 documentation/Makefile: Added support for YP Dev Manual.
eefc83b documentation/dev-manual/dev-man-cases.xml: Initial chapter creation. (From yocto-docs rev: a5c809d89eefafaf6c9f77931d5112f194eb064f)
79b846f documentation/dev-manual/dev-man-newbie.xml: Initial chapter creation. (From yocto-docs rev: f4e205816bd6805f6e45cc7b3fdf704368d83f1a)
7643666 documentation/dev-manual/dev-man-start.xml: Initial chapter creation. (From yocto-docs rev: c9dde4843a167bcb270f86baaaeef1265f3ab069)
03f6b16 documentation/dev-manual/dev-man-intro.xml: Initial chapter.
6efaa95 documentation/dev-manual/figures/dev-title.png: Initial file created. (From yocto-docs rev: dd336b3d12586661d30f6d22d709031266cf7ed2)
eb7ce5b documentation/dev-manual/dev-man.xml: Initial file created. (From yocto-docs rev: 2a9c3657a4815ba61a89a59ae74ae5493bdf4d24)
6289e8d documentation/dev-manual/style.css: Added title page figure. (From yocto-docs rev: e0bf4cde88e8d4ada5908b69b31cff5b14e53860)
3b76aa4 documentation/dev-manual: Added top-level directory for Dev Manual. (From yocto-docs rev: d85283b6c1d939909c46f94750e4ff36ee42cadb)
df44891 documentation/yocto-project-qs/yocto-project-qs.xml: changed build command
df7b4f1 documentation/bsp-guide/bsp.xml: Added a note stating no example here. (From yocto-docs rev: 1373b315bbe875840a75a80ea688eb025b6d80a1)
0a29457 documentation/bsp-guide/bsp.xml: Changed 'GIT' to 'Git' (From yocto-docs rev: c77a003b7c5410c1a9a4e8d3437b829c5dc07391)
762c0d0 documentation/bsp-guide/bsp.xml: updated path for yocto kernels
651119a documentation/bsp-guide/bsp.xml: Scrubbed "Poky" out of the manual. (From yocto-docs rev: b5e3c58dbdc82579920de07e8c1c76cfa42596a7)
51b3a23 documentation/kernel-manual/kernel-how-to.xml: Tree Construction section further explained
0a7b3f8 documentation/kernel-manual/kernel-how-to.xml: Defined audience for chapter
11ec976 documentation/kernel-manual/kernel-concepts.xml: General rewrite of Kernel tools.
96ab5a7 documentation/kernel-manual/kernel-concepts.xml: Added references to Git Documentation. (From yocto-docs rev: 6435bc8116a586d6a027b69b1df7a6d924f48ec8)
5e6f7fb documentation/kernel-manual/kernel-concepts.xml: Fixed typo (From yocto-docs rev: 333c647c9800d980a17a23b2e96b99a27b1ea656)
dc96712 documentation/kernel-manual/kernel-how-to.xml: Updated the create BSP section
72054b8 documentation/kernel-manual/kernel-how-to.xml: Added 'git' for a push example.
00d2062 documentation/kernel-manual/kernel-how-to.xml: Command line example fixes
74c120f documentation/kernel-manual/kernel-how-to.xml: changed git to Git as needed (From yocto-docs rev: 65a839ea3d8decd1dd3e95bfeeeb3f95cfa77ef4)
65d74d6 documentation/kernel-manual/kernel-doc-intro.xml: Changed git to Git as needed (From yocto-docs rev: 1ecd571c0317fc1de8408ba7fdbb25f5e24c765f)
6c70216 documentation/kernel-manual/kernel-concepts.xml: Changed git to Git as needed (From yocto-docs rev: 3e4f2e32c0b98ccbc1eaa370832c0147f1a48045)
7dbabd8 documentation/poky-ref-manual/extendpoky.xml: Changed bitbake to BitBake (From yocto-docs rev: 2b95f152d40aacc7d88e755a27154dfb3153c6ee)
e179c0b documentation/adt-manual/adt-prepare.xml: Changed Bitbake to BitBake (From yocto-docs rev: 611f44a66cceafbe7593fee702d7c19951d7c751)
7c12513 documentation/adt-manual/kernel-how-to.xml: Changed Bitbake to BitBake (From yocto-docs rev: c3b3d7f7b16bc222d599bdfb5e99c86694a1c865)
fb71e50 documentation/kernel-manual/kernel-how-to.xml: Partial - more general edits (From yocto-docs rev: 60d084a5b17bf78fafd8a4d13b9055093fca708a)
3120247 documentation/kernel-manual/kernel-how-to.xml: partial - more edits to BSP procedure (From yocto-docs rev: 694b00c080633be874f2842badedf1e453038f88)
fe43875 documentation/kernel-manual/kernel-how-to.xml: Partial - Re-write of BSP creation
1316648 documentation/kernel-manual/kernel-how-to.xml: Edits to "Build Strategy" (From yocto-docs rev: f98e4804da9477e260e24df1586b624e386a2dba)
f79f929 documentation/kernel-manual/kernel-how-to.xml: Edits to "Tree Construction" (From yocto-docs rev: 601e0fd1bb00c433716170a124b3ca32ca2cdcad)
893fa5b Make intltool use perlnative instead of perl on host
a0abef4 gettext: Add depends to gettext to avoid host contamination
51ff9ba clutter-box2d: fix isfinite.patch
1e261aee python: add patch to fix cross compilation on host with linux-3.0
760139c python: save Makefile.sysroot in do_compile
dda8265 eglibc-package: don't fail without localedef/gconv
b6cba47 tcmode-default: set preferred version also for (e)glibc-locale
997b1fc siteinfo.bbclass: Port over oe.dev logic for site files
fe7db14 icon-naming-utils-native: Fix long path to perl in icon-name-mapping
6a52bad cpan.bbclass: Perform more mangling for perl path
27ba6fb perl-native: Add a perl-native wrapper in the normal bindir
57f7711 gnome-doc-utils: Use /usr/bin/env python in xml2po, bump PR
198581f python-native: Mangle scripts to use /usr/bin/env python, bump PR
29ea036 Add endianess macros used by previous endian-ness_handling.patch
8af2868 README.hardware: update MPC8315E-RDB instructions
f19e54c local.conf.sample: Add a note about ASSUME_PROVIDED for help2man
76942c0 linux-yocto: update mpc8315erdb SRCREV
5608570 insane: improve diagnostic for redundant rpath
e697167 lsbsetup_1.0.bb: Change the hardcoded /usr/lib to support multilib
c0192fb libiconv: Fix SRC_URI checksums for 1.13.1 version
daad28c linux-yocto/meta-yocto: update SRCREVS
bc48729 libgcc: correct mode on libgcc_s.so.1 to ensure it gets stripped
5fdc8ab pseudo: fix uninitialised variable in realpath_fix.patch
73bc4c2 site/x86_64-linux-uclibc: Cache lf_cv_sane_realloc
28d52d9 task-core-tools: Exclude systemtap for uclibc
1ad8852 sysprof: Define NT_GNU_BUILD_ID if undefined
07fb426 clutter-box2d: Replace use of finite macro with C99 compliant isfinite()
c19d858 binutils: Fix build when compiling target binutils recipe with gcc 4.6
3eb49d2 pimlico/dates: Fix build on uclibc
59da55b powertop: Add lintl to linker commandline on uclibc
08bfdf9 oprofile: Fix build when query_module is not there
00463a3 uclibc_0.9.32: Implement sync_file_range2.
e182d21 task-core-x11-sato: Add empty NETWORK_MANAGER for uclibc
cbcb798 tzcode,tzdata: Update tzdata to 2011h
33467f8 libxdamage,libxft,libxrandr: Add missing dependency on virtual/libx11
b2c8f93 classes/gettext: Do not disable nls for non target recipes
caf22e3 acl,attr: Fix build failures when NLS is disabled on uclibc
0de9f32 default-distrovars: Add largefile and argp to DISTRO_FEATURES
98615f6 autotools.bbclass: Add help2man-native to the main DEPENDS tree
627a2f5 help2man-native: Add 1.38.2
4e77483 bitbake.conf, sanity.bbclass: Drop mercurial-native
ef2c0ef gcc_4.5.1: add pr45886.patch
eb83c44 gcc_4.5.1: add pr45052.patch
30c9f6c gcc_4.5.1: add pr45094.patch
b2e49a6 gcc_4.5.1: add pr44606.patch
44f59d2 gcc_4.5.1: add pr44290.patch
94a6e47 gcc_4.5.1: add pr43810.patch
aa18b3c gcc_4.5.1: fix arm_bswapsi2.patch
676e3e9 tune-ppce500mc: Add a tune file for PowerPC e500mc core
2097906 flac: fix build issues with e500v2 (gnuspe) toolchain
9f952b2 openssl: Add handling for linux-gnuspe-powerpc
350431d tune-ppce500v2: Add a tune file for PowerPC e500v2 cores
cc8a2a0 tclibc-*libc: Utilize TARGET_FPU for gnuspe setting
e10a1d6 gcc: Add gcc configure for PowerPC e500v2/SPE embedded floating point ABI
0db8fe9 btrfs-tools: Add util-linux to DEPENDS
47245e4 iptuils: Add sgmlspl-native to DEPENDS
b5d5a13 gnome-doc-utils: Package up python site packages, bump PR
0f44c18 metacity: Add gnome-doc-utils to DEPENDS
160d005 gdk-pixbuf(-native): Fix build by disabling introspection
d87bedc uclibc: improve packaging granularity
78396c1 perl: revise the RRECOMMENDS_perl-modules for multilib case
9fa68e8 pciutils: Change the hardcoded /usr/lib to support multilib.
16e29ba xcb-proto: add multilib support.
3f3cd73 distro-tracking: update libpng
f7b344e libpng: upgrade to v1.2.46
1dd5095 scripts/contrib: add build time regression test script
114960a alsa-tools: Fix recipe build error.
0931e85 Fixed concurrency problem for ZIP packed recipes.
f1d3dae meta-yocto/conf/local.conf.sample: Update SSTATE_MIRRORS comment to remove packaged-staging references
35f20c5 eglibc: Tighten LICENSE Fields
3c9206f gcc-package-target: don't fail if the .la files we try to delete are not there to start with
34cd3f7 unfs-server: add Upstream-Status field to patches
e47c1cf man: add Upstream-Status field to paches
96329f3 gdk-pixbuf: Fix QA issues and clean minor formatting
498ec50 bitbake.conf: Change TERM default fallback to XTERM instead of GNOME_TERM
2c472d3 oe-buildenv-internal: Replace POKYMODE POKYLIBC with TCMODE and TCLIBC
49b3743 ofono: fix test block syntax error
a17adf1 sanity, base: remove gcc3 check since qemu doesn't need it any more
012c4a4 libcap: pass prefix to "make install"
238ea4e linux-yocto/meta: update meta SRCREV for routerstation pro
ed5e3f1 send-pull-request: default to --supress-cc=all
d8a3cd5 classes: remove classes that don't belong in oe-core
e6cf0ba classes: remove obsolete classes
e375da8 kernel.bbclass: minor whitespace fixes
5112838 gcc-4.6: update to 4.6.1 release
5ec2132 scripts/hob: wrapper script to run hob gui with a UI specific config file
97098f3 distro tracking: Updates
32ca3e0 libiconv: add version 1.13.1
fa4bcfd bb-matrix: correct BB and PM number canonicalization
f7fd215 perl: Use SITEINFO variables not functions
54e8e04 scripts: Rename "adt-install" to "adt-installer" in user help.
30004ea eglibc: fix packaging of thread_db
ec3209c busybox: respect ${LDFLAGS}
0fc41bd cooker: only return *Found events if something was actually found
ffaf73e kernel.bbclass: remove unintended change of INITRAMFS_TASK
122ccf2 insane: make GNU_HASH check slightly more robust (avoids false negatives with gold); add check for useless rpaths
660093c openssl: pass ${mandir} explicitly to "make install"
f306906 ncurses: Fix site_config
f7418e2 libpcre: Add bzip2, zlib and readline to DEPENDS
b85a1e0 groff: Disable x11 support
f3004c7 hicolor-icon-theme: Use ${BPN}-${PV} not ${P} to unbreak nativesdk
4678e7a opkg-utils: Print out License field
653f195 package_ipk: add License field to control file
0688396 eglibc: fix runtime assertion failure
c661f8e eglibc: fix installed but not packaged files
ef0d0e1 binutils: package unpackaged files
1a19f82 pulseaudio: enable bluetooth support
5b1bc84 connman-gnome: run oe-stylize over recipe
1d6e661 ofono: fix packaging and clean up custom do_install
3fdd47a distro-tracking: add RECIPE_MANUAL_CHECK_DATE for various recipes
4a6109f Patches: Fix Upstream-Status info
8a3692d classes/image_types: add a variable to list available IMAGE_FSTYPE's
80441de ui/crumbs/tasklistmodel: fix automatic removal of orphaned items
e5c9617 ui/crumbs/tasklistmodel: update brought in by column when possible
4a438be glibc: fix false failure
e363567 kernel.bbclass: fix the broken lines
d3e6228 libzypp: fix for non /usr/lib libdir case
4e01f73 sat-solver: fix for non /usr/lib libdir case
c3a8e96 eglibc: ensure that NSS libs go into the right package when ${base_libdir} and ${libdir} are the same
6aa76f9 xserver-kdrive: add patch upstream status info
47fb894 python: Fix libdir usage which broke python packaging
bf8735f fetcher2: retry mirror if upstream checksum mismatch
d5651cb sato-sdk: add clutter for sato-sdk image
7354fc9 insane.bbclass: skip rdepends QA checks for kernel / modules
5275297 bluez-dtl1-workaround: deleted
88c6c7a kernel.bbclass, task-base: remove references to obsolete bluez-dtl1-workaround
9b36cd7 busybox: fix missing features due to lack of variable expansion
b8f6c22 bb-matrix: initial scripts to record TIME(1) metrics for BB and PM combinations
0c17ea1 pulseaudio: make it work out of the box
f8bf4e2 kernel.bbclass: handle embedding of initramfs images
9534a96 image_types.bbclass: add support for tar.xz, cpio.xz, cpio.lzma
1e433ee Add support for BAD_RECOMMENDATIONS to rootfs_ipk
b8e12e9 rpm: fix for non /usr/lib libdir case
7cbce4b libcap: fix for non /usr/lib libdir case
668d80e perl: fix for non /usr/lib libdir case
aeb29f5 python-native: fix for non /usr/lib libdir case
98d7597 python: fix for libdir=/usr/lib64 case
58ad25b openssl: fix for non /usr/lib libdir case
e90b231 native.bbclass: generate libdir from libdir_native
2429773 gcc: Fix packaging correctly
b36f998 webkit-gtk: update SRCREV
0155263 pulseaudio 0.9.15: delete, but keep 0.9.22 and 0.9.23
0be4b5b pulseaudio: try harder to disable HAL
ecb5359 cmake: update to 2.8.5 release
e8bb898 libarchive: remove undistributable copyright content from source
edb2423 sstate: Improve performance by moving files rather than using copy and delete
84d4af1 update-rc.d: Switch from a tag to a sepcific revision
d41f64b sysklogd: Drop ONLINE_PACKAGE_MANAGEMENT as per mailing list discussion
f974868 libx11: ensure nativesdk uses correct DEPENDS and XCB flags
8f49007 tcmode-default: update binutils version
9f4eaee libx11: enable xcb support
f0cd776 eglibc: add RDEPENDS for bash on eglibc-utils
171ed7f eglibc: unbash ldd (from oe.dev)
7061af3 rootfs_rpm: Add 50M to IMAGE_ROOTFS_EXTRA_SPACE for zypper /var space
ab7530a eglibc: avoid copying ${libdir} twice if it's the same as ${base_libdir}
104a1c2 libc-common.bbclass: Fix typo
b9ff62a combo-layer-tool: add tool to manipulate combo layers
4fadc30 bitbake cooker/ui: handle cmd line parsing result by individual UI.
18ce7e2 insane.bbclass: fix error/warning status being inverted
34ea005 insane.bbclass: allow dev-deps to be skipped via INSANE_SKIP
c2e6090 site/mips-common: Cache cvs_cv_func_printf_ptr
282725a eglibc: bump PR for OLDEST_KERNEL change
e0997b9 bitbake.conf: update OLDEST_KERNEL to 2.6.16
acc7563 fetch2/git: Tweak git fetcher to handling repo updates correctly
20e8208 lib/bb/ui/hob: don't error when dismissing save as dialog
9c03094 lib/bb/hob: fix changing base image
b212461 ui/crumbs/tasklistmodel: fix reset method
fb24f9b cmake: update to 2.8.5-rc3
4832e84 cmake: add nativesdk and target versions
e5fef6b libarchive: add 2.8.4 version
b626de0 usbutils: Add RDEPENDS on bash
21f1314 cmake.bbclass: use CPPFLAGS and CXXFLAGS
2c81d95 elfutils: fix compilations issue with the gcc 4.7
860d8fd gcc-runtime: fix installed but unpackaged files
434f328 distro tracking: update devel.toolchain recipes's fields
ed4398e gmp: upgrade from 5.0.1 to 5.0.2
3f4f5c1 binutils: upgrade from 2.21 to 2.21.1
cd16591 cmake: refactor recipe
2a52b01 console-tools: Add RDEPENDS on bash
c594b49 quilt: Add RDEPENDS on bash
f7b11f2 image.bbclass: Add LINGUAS_INSTALL to dependency list
8bf7a4c gnome-doc-utils: Add RDEPENDS on bash
2c79c9e pulseaudio: add 0.9.23
760eace pulseaudio: disable HAL support and enable udev support
e0c143e siteinfo: add microblaze little endian target info
0156ed6 insane: add microblaze little endian target info
b358424 kernel-arch: microblaze little endian fix kernel arch
e81bbc0 libxslt: Inherit from binconfig
32c3417 powertop: inherit update-alternatives and use a higher priority than busybox
04014b1 busybox: bump PR to ensure ipv4 is enabled
3a78d56 default-distrovars.inc: add ipv4 to DISTRO_FEATURES
d988cfb libQtOpenGL:Add libQtOpenGL to an lsb image
9569e2b sanity: implement network connectivity test
8338c2d tinylogin: use angstrom mirror for SRC_URI
764ce20 distro_tracking_fields.inc: Update recipes upgrade and manual check information
6bd31d7 gawk: Upgrade from 3.1.8 to 4.0.0
74daaf1 gupnp: Upgrade from 0.16.0 to 0.16.1
d8f1388 module-base: remove KERNEL-SOURCE
8b9fc55 task-base: remove unconditional inclusion of kernel-module-rtc-sa1100
38bd46e task-base: remove modutils reference.
0849277 module-init-tools-cross: add SRC_URI Checksums
0d029ba uboot: Add 2011.06 Version
7fefee4 uclibc-0.9.32: Implement execvpe and refresh scheduler functions
408d5f0 uclibc_git: Implement execvpe and refresh scheduler functions
07d0673 uclibc_git: Move SRCREV past 0.9.32 release
d0829ae tcmode-default: Define UCLIBCVERSION and set it to 0.9.32
db8a763 uclibc: Add recipes for 0.9.32 release
d099a9e openssh/dropbear: No need for each to PROVIDE ssh/sshd
3e82f14 x-load: Drop PR from PV and fix version to 1.5.0
0e236d0 kernel-yocto: Fix case where recipe is always reparsed
b5f288a chrpath: Ensure the package respects the docdir variable
48f06c0 opensp: Add unpackaged files
2cce411 kernelshark/trace-cmd: Clean up QA warnings including fising LDFLAGS issues
407c6c4 git: Package up python and gitweb files into appropriate packages
dbb0d56 apt: Package unpackaged files
dc9751d x11perf: Packaged unpackaged files
86704c5 gtk-engines: Package unpackaged files
65c8cb2 librsvg: Clean up unpackaged files
4b71ba4 telepathy-python: Remove unneeded and unpackaged files
e8755c7 qt4: Package debug source files
2114521 systemtap: Don't set prefix to a path including so examples get placed in the correct path and packaged correctly
826a7ef eds-dbus: Package unpackaged files
3944ed8 xcb-proto: Package unshipped files, create python-xcbgen package for python xcbgen code
dea71b0 btrfs-tools: Fix manpage creation directory
c47c0e0 tslib: Package unpackaged .la file
dcab57f connman: Package unpackaged .la file
42242d6 gcc: Fix unpackaged files warnings, broken symlink and superfluous files
7e12217 bitbake/process.py: Ensure queued UI events are queued right before we add our own handler
159aee2 cache.py: Ensure additional .bbappend files are accounted for
d4132fa ui/depexp: If we're parsing zero files we need to ensure the cache progress bar gets hidden
4cc291c hob: re-designed interaction and implementation
7fc9c34 bitbake-layers: fix error on startup caused by recent cooker change
c4b4e47 bitbake-layers: fix sorting by package name for cooker change
5168a50 libQtOpenGL: Install libQtOpenGL to an lsb image
93f6047 x-load: Update to 1.5.0
464ffb5 libmad: add SRC_URI Checksum
cbc751b mpeg2dec: add SRC_URI Checksum
e69f0f8 insane.bbclass: Fix indentation error
88ad4f3 insane.bbclass: Add warnings for packages which are not -dev packages which depend on -dev packages
a7a5d5e base.bbclass: show layer's branches/revisions in the banner info
0aa90b1 libxml-parser-perl: convert to BBCLASSEXTEND, merge in OE fixes
e8e6f9d package.bbclass: Make unshipped packages message more readable
7a2a24d bitbake/cooker, bitbake-layers: show the .bbappend files that matches no existing .bb recipe
deb1448 bitbake-layers: fix sorting of show_appends output
1164b76 bitbake-layers: add command to flatten layers into one
3bf2d21 bitbake/cooker: implement layer dependencies, make priority optional
44db5d5 bitbake-layers: add show_overlayed action
07dbea4 bitbake: track 'overlayed' recipes
8154530 bitbake: Switch to use process as the default server
0da7db1 qt4: ensure target packages don't include host binaries
cb5811b gettext: fix ERROR: QA Issue: gettext rdepends on gettext-dev
69277e4 db: Add INSANE_SKIP to avoid warning about .so file
fa62058 qemu: Clean up various QA warnings, add approproate INSANE_SKIP for firmware files, ensure files aren't stripped
d37e927 elfutils: Update INSANE_SKIP to new syntax
52e42f0 u-boot: Drop INSANE_SKIP since it insane no longer trips up on this recipe
463b38f gcc-package-cross: Switch to using pattern matching to detect when to stash libgcc into the sysroot
89e8be6 lttng-viewer: Fixup various QA warnings and a false positive
7e07f03 insane.bbclass: Allow INSANE_SKIP to work on a per test basis
2f22d86 gcc: Remove unneeded module .la file and .so link
d420b1c gettext: Disable both git and cvs for autopoint's archive format.
21effd6 gcc: Fix removal of libiberty.a
c2cb8d6 libgsmd: Fix QA warnings
056d7fb oprofile: Fix QA warnings
56e46f0 bitbake/ast: Fix ??= vs. ?= handling
c6dac09 xauth: upgrade from 1.05 to 1.06
9415924 sqlite: upgrade from 3.7.6.2 to 3.7.7.1
41d0d42 distro_tracking_field: update the manually check field
e2830aa libdrm: upgrade to 2.4.26
c4d062c libidn: upgrade from 1.20 to 1.22
9fc07c9 resolvconf: update to version 1.58.
6aa43ea distro_tracking_fields.inc: update recipes upgrade information
307dae6 coreutils: Upgrade from 8.9 to 8.12
e587c79 curl: Upgrade from 7.21.6 to 7.21.7
101098b poky.conf: add largefile support into DISTRO_FEATURES
ad23632 uclibc: Fix compilation in thumb mode
39de5f9 distro_tracking_fields: remove modutils.
40f93ae modutils: remove modutils
f370e45 kernel.bblass: remove get_kernelmajorversion
bdfbb1f modutils-initscripts: move recipe prior to modutils removal
c878cb8 modules-init-tools(-cross): update to 3.16
586ccf2 image|kernel.bblass|module-init-tools: do not use depmod-2.6
33ca841 Remove support for building 2.4 kernels
8511d1e Drop PRIORITY variable
31ea94b insane.bbclass: Start to rework this so specific checks can be easily made warnings/errors
ca4c7c4 beecrypt: Fix up packaging QA warnings
72a569d python: Ensure libpython.so ends up in the .dev package
9ea184d libpcre: Fix QA warnings
b3a4864 kernel.bbclass: Ensure kernel/* internal sysroot working directory don't get packaged
a272d98 cairo: Clean up packaging and fix warnings
a3afaba ppp: sync packaging with OE .dev
46c11ac perl: Fix package qa rpath warnings.
ffc7ca7 consolekit: Add glib-2.0 to DEPENDS
ea51884 bitbake: Add missing bracket, somehow lost by sync scripts
f3be8e9 bitbake: add -R option for loading configuration files after bitbake.conf
22d8fb1 cooker: switch to new universe target rather than world
97e0beb cooker: remove code duplication in non trivial functions
6c36f4a cooker|command|event: add new command findFilesMatchingInDir
9fe29fd command|cooker|event: add findConfigFilePath command
6769269 cooker: add generic method to locate configuration files
a8afb3b command|cooker: allow generating targets tree for specified pkgs
cbd00b8 bitbake: Make bitbake server type configurable.
94a57fd ui/hob: Fixed the "build again" hang.
3950256 useradd-example: example recipe for using inherit useradd
14be7db useradd.bbclass: new class for managing user/group permissions
a965a61 uclibc: Add default uClibc.machine files
1c1372e bitbake.conf: update PSEUDO_PASSWD variable
a875886 linux-firmware: Add Realtex rt8192* firmwares
c66a1d1 uclibc: Fix bug exposed by udev 168+ for mips architecture
8781c84 classes/package.bbclass: Add fixup_perms
b78173f binutils: allow distro to select gold as default linker
5e480e5 uclibc: Add UCLIBC_HAS_FLOATS=y to uClibc.distro
f89a21d uclibc_git.bb: Untether UCLIBC_HAS_FPU from UCLIBC_HAS_FLOATS
81fd1b9 uclibc.inc: Use ARCH_WANTS_{LITTLE|BIG}_ENDIAN to denote endian
a37fd58 uclibc-config.inc: Fix regexp to determine big-endian arm
0d03195 uclibc: Remove redundant machine/arch configs
5c7d37c shadow-native: fix creation of home directories
b2a047d Add OECORE_ACLOCAL_OPTS to env setup scripts for autotool project using correct libtool 2.4
c1fd6f0 consolekit 0.4.5: remove patch that forcibly disables consolekit
c3acb9c consolekit 0.4.5: add pam support based on distro features
fee83eb webkit-gtk: fix packaging
f830c94 dbus: update to 1.4.12
771f5d0 linux-libc-headers: add 2.6.39
409ac8f ccache: Remove duplicate 'ccache.inc' from 'meta/class/'
fec22b1 ccache: Add 'ccache' for SDK images
860eea2 ccache: Set CCACHE on a per recipe basis
b3847df ccache: Integrate ccache-native to poky
477f685 Add umask task control
b320f55 linux-firmware: Fix file permissions
d591e69 scripts/runqemu: enable btrfs
c9ed41a base-files: add btrfs to /etc/filesystems
55c3813 image_types.bbclass: enable btrfs as one of the image type
65c6892 image-types.bbclass: get the image size in the whole number
3e6746a sanity.bbclass: pass the data object to the less frequent test harnesses
49a9426 distro_tracking_field: update recipe maintainer
0c10be5 btrfs-tools: new recipe for tools to operate on btrfs images
6449763 kernel: move menuconfig task after configure
53dfb5f util-linux: Rebase remove-lscpu patch from non-gplv3
64be701 gcc-4.6: share work directories
e4f43aa gcc-4.5.1: share work directories
3e08c1f Share gcc work directories
e485b88 sanity.conf: Require bitbake version 1.13.2 at a minimum
a99b6d4 glibc-2.12: Add missing PR bump
a92449f eglibc-package.bbclass: Ensure localedef is only packaged in one location
35695ee eglibc-package.bbclass: Fix unintended code changes
e0fc42b distro_tracking_fields.inc: update RECIPE_MANUAL_CHECK_DATE for screen and tcf-agent
1de23cb lttng-ust: change the patch's Upstream-Status to Accepted.
776da95 grub: add -fno-reorder-functions into STAGE2_COMPILE
0c1f2d7 glib-2.0,intltool,rpm,sgmlspl-native: Bump PR to resolve perl-native issue
1dd8237 task-base: add 3G into DISTRO_FEATURE
69aac1a initscript: Change some order of init scripts
35d8474 connman-gnome: Add 3G configuration support
663373c ofono: upgrade to version 0.50
3755b43 wpa-supplicant: remove the 0.6.10 version.
53de954 connman: Upgrade to version 0.75
6873c1a distro_tracking: update some manual checking fields
9074c12 web-webkit: recommends glib-networking to access https web page
da62294 Upstream-Status: update the status for some patches
d18aba9 prelink_git.bb: Only block the postinst script when no image-prelink
dd31ff2 sstate.bbclass: Fix an issue if the config changes
ff997f4 fontconfig: specify font directory in EXTRA_OECONF
8064c63 systemtap: add sqlite3 to DEPENDS
6f0e589 libc locale split: fix some remaining problems
8bdb4de glibc/eglibc: Clean up package warnings and potentially broken data in -dev package
0401f41 libc-locale: Fixup various packaging warnings
2894dfb scripts/oe-setup-builddir: Fix Yocto documentation links and add a couple of other example targets
a4f3e00 u-boot-mkimage: bump version to 2011.03
eb1c557 libc-locale: Drop PN-locale packages
f0c5451 Update version to 1.13.2
a2b9ef9 bitbake/ast: Add optional argument for BBCLASSEXTEND
21c5985 bitbake/ast: Call expandkeys after the RecipePreFinalise event
1b5d7b5 bitbake/data_smart: Don't track overrides in deleted variable names
5c5b004 bitbake/data_smart: Don't export deleted/empty entries in the list of keys
cc2a8ff bitbake/data_smart: Optimise the data store iterator
fb38001 gcc-cross-kernel: update to match new toolchain sysroot layout
ff37094 Add PARALLEL_MAKE to BB_ENV_EXTRAWHITE
2bcbc9b base.bbclass: Back off the fatal error to a warning for now and try and recover
7aab545 distro-tracking: Update manual check date for puzzles, gpgme, x11vnc..
08b6d95 glib-networking: Add 2.28.7 as new recipe
d8f4a8b sanity.bbclass: only run check_pseudo_wrapper for bitbake
df01b50 gconf-dbus: Fix SRC_URI to tarball
6c19697 distro_tracking: update sudo tracking info
7c6f47b sudo: upgrade to v1.8.1p2
3b97ea1 oe.classutils: add module
1414451 distro_tracking: update mtools tracking info
435b413 mtools: upgrade to v4.0.16
27c1285 lib_package.bbclass: move static libraries to ${PN}-staticdev
7414953 libxml: extend nativesdk class
4f61b3d distrodata.bbclass: Get the extend recipe's information from non bbextended recipe
53c5f8b rpm: Change config option
9bd8876 msmtp: Disable gnome keyring
5fdbef9 prelink: Uprev prelink to latest version
dba9c14 dhcp: don't try to move files from ${sbindir} to ${base_sbindir} if they are the same
4c3691e libtirpc: Upgrade 0.2.1 -> 0.2.2
1ac7d1c base-passwd: remove login.defs references
c82a1b1 shadow-sysroot: new recipe for useradd.bbclass support
1d640c9 gcc: Fix file ownership
0496564 base/glib-2.0: Simplify USE_NLS handling for glib-2.0
1d2f395 classes/conf: Drop MULTIMACH_ARCH variable, it adds unused complexity and serves no useful purpose
371a224 base.bbclass: Since we require python 2.6 which always contains hashlib we can drop this fallback code
cc3455f base.bbclass: Drop old style SRCDATE handling, we have pn- overrides now
35e15c2 glibc/eglibc: Add missing PR bump
73a0088 eglibc: Fix version 2.12 after locale changes
9fc32c4 bitbake wrapper: exit if python v3 is detected
80beb67 libc-package.bbclass: Replace hard coded libdir.
8fa9d64 libc-locale: split locale handling from libc recipe.
671e580 bitbake: Add task specific stamp file support
a1f79a7 runqueue.py: Add umask task control
d08a341 qemuimagetest: update cvs and iptables to newer version for toolchain test
7b4eb14 documentation/adt-manual/adt-command.xml: Small edits for terminology (From yocto-docs rev: b32290b381a6ed2cbfe3e01b748c794ef6bc876b)
5ed6652 documentation/adt-manual/adt-eclipse.xml: General minor edits (From yocto-docs rev: c79d17e29d5690a8df9943836286232cd3aa8893)
95a3727 documentation/adt-manual/adt-eclipse.xml: misc wordings changed (From yocto-docs rev: c83d92d99bc1104169a06623c787b07a9d199039)
7adc615 documentation/adt-manual/adt-eclipse.xml: Updated new modes for tree
bba2e72 documentation/adt-manual/adt-eclipse.xml: Updates to choosing target options (From yocto-docs rev: b8f314fb3dc638c85bc9f860fb591ee3a8dad614)
21ae07a documentation/adt-manual/adt-eclipse.xml: Updated configuring sysroot
05f363f documentation/adt-manual/adt-eclipse.xml: Edits to SDK and Poky tree modes
1ffbbdf documentation/adt-manual/adt-eclipse.xml: changed CDT 7.0 to 8.0 for Indigo (From yocto-docs rev: 14173522e5d6d219c336d6dafafcb7d1c734c584)
2fab1f6 documentation/adt-manual/adt-eclipse.xml: recommending Indigo Eclipse (From yocto-docs rev: 0f052154a4c7456bf10a7151bd3d4e70f51be1b3)
38213f9 documentation/adt-manual/adt-eclipse.xml: Wording Change
c655092 documentation/adt-manual/adt-package.xml: Updates to configuring PMS
5a55f7f documentation/adt-manual/adt-prepare.xml: Clarified sysroot discussions
5534892 documentation/adt-manual/adt-package.xml: Updated PMS section
53f4e46 documentation/adt-manual/adt-prepare.xml: Updated kernel note
bb6c10c documentation/adt-manual/adt-prepare.xml: Corrected setup command
231f6bc documentation/adt-manual/adt-prepare.xml: Updates to ADT install steps
bb07dfe documentation/adt-manual/adt-intro.xml: Updated description of toolchain (From yocto-docs rev: 1ea4683eb41e4be334b053c622ed5bf08041d617)
21a4939 documentation/adt-manual/adt-intro.xml: updated QEMU overview
75f4b8c documentation/adt-manual/adt-intro.xml: Grammar correction (From yocto-docs rev: 738c4f25ba6bcc408789dda118b127d716c2f4c6)
982397c documentation/adt-manual/adt-intro.xml: changed definition of ADT
3f521ed documentation/yocto-project-qs/yocto-project-qs.xml: added libtool to packages
cfa74db documentation/yocto-project-qs/yocto-project-qs.xml: OS support added (partial)
eac2b4b documentation/yocto-project-qs/yocto-project-qs.xml: Updated package install
ca8b3a1 documentation/yocto-project-qs/yocto-project-qs.xml: zypper for OpenSUSE
54f43b6 documentation/yocto-project-qs/yocto-project-qs.xml: multi-core update
377acfc documentation/yocto-project-qs/yocto-project-qs.xml: Updated for Python 2.7
fad2e98 documentation/poky-ref-manual/faq.xml: Updated Python FAQ entry
64bac7f documentation/poky-ref-manual/ref-structure.xml: Fixed a type (From yocto-docs rev: b2f45f73832a2289158bfb89313957a48dded1cd)
72ed33f documentation/poky-ref-manual/extendpoky.xml: YOCTO #1104 EXTRA_IMAGE_FEATURES
3b67d8a documentation/poky-ref-manual/ref-varlocality.xml: YOCTO #1104 EXTRA_IMAGE_FEATURES
b46af8a documentation/poky-ref-manual/ref-features.xml: YOCTO #1104 EXTRA_IMAGE_FEATURES
4f7dd81 documentation/poky-ref-manual/ref-variables.xml: YOCTO #1104 EXTRA_IMAGE_FEATURES
497d774 documentation/poky-ref-manual/ref-variables.xml - YOCTO #1104 EXTRA_IMAGE_FEATURES
7cd2ac0 common-licenses: Additions and corrections
879a7f8 python: Add python to the dependency to pygobject
f955edf db: Fix file ownership
3233f4b gnome-doc-utils: Fix the owner/group on select files
ab8f202 tzdata: Ensure all files are owned by root:root
93dbe8d libtirpc: Fix owner/group of /etc/netconfig
f9c2ff4 ghostscript: Fix owner/group of /etc/cups
324913c base-passwd: Fix owners/groups
bee9120 resolveconf: Fix file owners
13f3607 native.bbclass: Add a simple chown intercept command
42df3f8 kernel.bbclass: Stop do_install poking directly into the sysroot and evading sstate
2fd3fc0 packagedata.py: Fix read_subpkgdata_dict()
b97b3e8 classes/package_rpm.bbclass: Change the way the PV is transformed
2b8a680 kernel.bbclass: Stage System.map with KERNEL_VERSION suffix
120b409 clutter: Use new git repo
bff293c kernel.bbclass: restore kernel-abiversion file
1bf6ab4 perf: Fix linux-tools to ensure perf is installed under "fakeroot"
d9fc516 kernel.bbclass: Add support for perf-dbg package
2eed6de sysfsutils: Fall back to default -dbg package
3c928be classes/package_rpm.bbclass: Enhance diagnostic messages
d155756 python: Switch to using the default -dbg package
35e622d python-pyobject: Remove unnecessary -dbg setting
4c8bd3e libxml-parser-perl: Fix debug package
fa38716 texinfo: Change to use the standard -dbg file
b14c56b psmisc: Remove custom -dbg packages, use default
f1d78df modutils: Add in missing -dbg package
3444e18 liba52: Remove custom -dbg, fall back to default
f011f60 python-gst: Add missing files to the -dbg package
f0bff52 mc: Add missing debug files to -dbg
52c96e3 gamin: Add missing debug files to -dbg
de8636c gthumb: Add missing debug files
4169431 systemtamp: Add missing debug files
d6f064d trace-cmd: Add missing debug files
fd63f1c gstreamer: Add missing debug files.
1569e74 gtk-sato-engine: Add missing debug files
ee7fd40 libproxy: Add missing debug files
0da06f2 wireless-tools: Avoid stripping binaries
5d53024 busybox: Avoid stripping binaries
d9949fb quota: Avoid stripping binaries
4bf6a73 sysstat: Avoid stripping binaries
6c27d99 db: Avoid stripping binaries
d905e91 unzip: Avoid stripping binaries
da7a1b4 dropbear: Don't patch in configure
c425c38 nasm: Fix aclocal
9633eeb boost: Move the do_configure_prepend to a seperate task
745fffc tinylogin: Avoid stripped binaries
a82642f tcmode-default.inc: use 4.6 for GCCVERSION and SDKGCCVERSION
0faa5f7 gcc-4.6: Switch to using svn SRC_URI for recipe
c2007ba poky-lsb.conf: Instead of += with _append
b914de5 Revert "eglibc: Upgrade recipes from 2.13 -> 2.14"
82e0e0a Revert "tcmode-default.inc: Bump EGLIBCVERSION to 2.14"
ee4dd30 linux-yocto/meta-yocto: update yocto/standard and beagleboard SRCREVs
7e5af81 linux-yocto: update meta and yocto/standard SRCREVs
58db68c linux-yocto: update meta SRCREV for new config groups
2e11835 linux-yocto/meta-yocto: update SRCREVs for utrace merge
60871cc linux-yocto: update SRCREVs for utrace merge
0aad8f3 qt4-tools-nativesdk: fix compile failure in src/dbus
d827764 qt4-tools-nativesdk: drop freetype include as we build with -no-freetype
4d7108f qt4-tools-nativesdk: fix unpack failure due to missing g++.conf
4cd373f beagleboard-audio: Set COMPATIBLE_MACHINE and also remove toolchain dependencies since its a config file
aaa4951 beagleboard: switch to xserver-xf86-lite
489fe5d beagleboard: add basic audio mixer defaults
0363835 beagleboard: cleanup machine config commentary
3d710d2 task-core-lsb: Add absent libraries and commands to task-core-lsb.bb
0250ece tcmode-default.inc: Bump EGLIBCVERSION to 2.14
16837d4 eglibc: Upgrade recipes from 2.13 -> 2.14
77c2dd9 eglibc-package.inc: Package newly added sotruss and supporting libraries
3071ceb binutils_2.21.bb: Fix ld segfault exposed by eglibc 2.14 on x86_64
dcd3cba uclibc.inc: libsegfault is only RPROVIDED by uclibc
7c8e4f1 uclibc: Add support for $ORIGIN
42e6094 uclibc/x86_64/uClibc.machine: Enable ARCH_USE_MMU
bde206b gettext-0.18.1.1: Remove unused patches
a82dd36 gnome-vfs: remove gnome-vfs as it is deprecated in favour of GVFS and GIO
9cea847 alsa-utils 1.0.24.2: fix packaging
5fbb1b7 doc/usermanual.xml: Tweaks for the manual
3c1a960 glib-2.0 2.28.x: update to 2.28.8
899dcfe gnome-keyring 2.32.1: fix packaging
48cd942 fetch2/git.py: improve error reporting when an invalid protocol is used
3b79156 u-boot: set SRCREV to a git revision instead of a tag reference
2163461 systemtap: remove non-core COMPATIBLE_MACHINES
dd91e6e bind: adjust hardcoded install path references
d5b82a2 eglibc: bump PR for SRCREV changes
f846186 eglibc_2.12.bb: Remove already upstreamed fix-for-make-3.82.diff
90dab97 process.py: Fix issue where early errors weren't making it to the console
e1f6ebb meta-yocto: use FILESEXTRAPATHS_prepend := in all bbappends
d96a8c9 dri2proto: Revert "dri2proto: make DRI2 swap event match GLX spec"
5192120 glproto: Revert "glxproto: make GLX swap event struct match spec"
28fff2f linux-yocto: update meta branch SRCREV
62d538f make exception handling syntax consistent
039798a codeparser: When loading the cache, ignore ValueError
7aa7673 meta-yocto/linux-yocto: update to match the renamed linux-yocto recipes
18ba9b3 bitbake: add local.conf.sample.extended
5d14238 base.bbclass: add support for SOC_FAMILY in COMPATIBLE_MACHINES
6b94fbd alsa-tools: Drop accidentally commited line
b59bc82 Revert "qemu.inc: append to IMAGE_FSTYPES instead of weakly assigning them"
f7c2ee9 Revert "uclibc.inc: libsegfault is only RPROVIDED by uclibc"
611aaca uclibc.inc: libsegfault is only RPROVIDED by uclibc
ab1171b busybox: backport distro-features handling from oe master
a205c32 qemu.inc: append to IMAGE_FSTYPES instead of weakly assigning them
1cf060e jsib-glib: Fix SRC_URI Checksum
6ab4745 alsa-tools: fix Checksums
ec9b6d0 gcc-4.6.0: Bring in patches from FSF 4.6 branch
fbc60cc eglibc: migrate configurability from oe
81d14f5 runqemu: take TMPDIR from bitbake
10fc86d eglibc 2.12/2.13: Upgrade SRCREV
bbedf4a libx11-diet: Fixed checksum and rebase patch
684a519 update-alternatives-dpkg: Fix SRC_URI Checksum
9017f19 connman-gnome 0.5: build from git
c69bbc0 rxvt-unicode: Fix SRC_URI & LIC_FILES Checksum
6e2f843 gettext_0.18.1.1.bb: Fix build on uclibc
73577ed util-macros_1.13.0.bb: Depend on virtual/gettext instead of gettext
e4293c5 clutter-box2d_git: Switch SRC_URI to git.gnome.org
f1a5694 json-glib: Fix up SRC_URI Checksums
e0a18dd import recipe_sanity.bbclass from oe master
194c672 uclibc: fix compile error on i586
ef8144b ghostscript: update SRC_URI
218bcd5 git: restore the dependency on perl-native
dcfb6e4 linux-yocto: rename recipes to explicitly indicate version
9031e7e uclibc: remove PACKAGE_ARCH
f5de11c uclibc: remove redundant python code
1d3cc59 uclibc: Cleanup the machine dependent config files
8f9d5d6 perl-native: fix download url
768f3fa autoconf/automake: Bump PR to resolve perl-native issue
91b28d8 distro_tracking_fields.inc: update the info for the following recipes
bfc5e54 libxi: upgrade from 1.4.2 to the latest version 1.4.3
f82e797 libxext: upgrade from 1.2.0 to the latest version 1.3.0
723f34a pixman: upgrade from 0.20.2 to the latest stable 0.22.0
d30eb74 inputproto: upgrade from 2.0.1 to the latest version 2.0.2
f2acbd9 glproto: upgrade from 1.4.12 to the latest version 1.4.13
7e4d042 dri2proto: upgrade from 2.3 to the latest version 2.4
8d26b85 resourceproto: upgrade from 1.1.1 to the latest version 1.2.0
72a9c4b util-macros: upgrade from 1.13.0 to the latest version 0.14.0
158bbf0 startup-notification: upgrade from 0.10 to the latest version 0.12
860e22a gnome-doc-utils: upgrade from 0.20.5 to the latest version 0.20.6
384c105 recipes: update Upstream-Status for multiple recipes' patches
3267279 tcmode-default: fix PREFERRED_VERSION_gcc-cross-canadian
0a641fe nativesdk.bbclass: Correct ordering of manipulations
e112d46 task-sdk-host: Add nativesdk to the task name so its clearer what the contents of the task represent
05b59a6 initrdscripts: Inhibit compiler/libc dependencies as this is just a configuration file
00d7ba1 sysvinit-inittab: Inhibit compiler/libc dependencies as this is just a configuration file
2c72fd6 initscripts: makedevs is no longer used anywhere so drop dependency. Also inhibit compiler/libc dependencies as they're unused
e2d72bd poky-feed-opkg: Disable default toolchain dependencies as these are just configuration files
485d30e base-files: Inherit toolchain dependencies as a compiler isn't used
942aa8e usbinit: Inherit allarch as its a generic script
6ba221b keymaps: Inhibit toolchain dependencies as its just configuration files
fb23f06 formfactor: Inhibit toolchain dependencies as its just a script
189174a pointercal: Inhibit toolchain dependencies as its just a script
a27fbe5 documentation/yocto-project-qs/yocto-project-qs.xml: removed 5.0 references
306e1a5 documentation: updated manual history
2adfc81 - documentation/Makefile: Cleaned up Makefile
18d42bd documentation/bsp-guide/Makefile: Fixed publish
37eedd0 documentation: [YOCTO #1025] build system for docs
baf6bf4 documentation/poky-ref-manual/faq.xml: Added new FAQ entry x-toolchain
4a7bf7d documentation/yocto-project-qs/yocto-project-qs.xml: replaced runqemu with poky-qemu
e5f3cc3 bitbake/fetch2: When replacing URLs in mirror handling mask out empty entries
ba5db2d bitbake/cooker: Fix -b option by ensuring the empty cache structure is present
b30cb58 Revert "gcc: rebase the patch to avoid patch rejection"
eb50e84 gcc: rebase the patch to avoid patch rejection
1b53eef native/nativesdk: Clean up the depends ordering after bitbake override handling updates
69c87c5 conf/sanity.conf: Set the minimum bitbake version correctly, we've needed recent bitbake features for a while
92e165c image_types.bbclass: Since we apply the override, look for the standard name variable, not the override name
a831dc1 Update version to 1.13.1
b8321c5 bitbake/event/ast: Add RecipePreFinalise event
af93b89 bitbake/parse/ast: We always need to finalize the default data since otherwise overrides to BBCLASSEXTEND may not be applied
eda2373 bitbake/data_smart: Change overrides behaviour to remove expanded variables from the datastore
73871c2 cache.py: fix bitbake -s command
4b66ce4 pseudo: Fix problem related to realpath
dc15ddd bitbake-layers: handle skipped recipes
81e2f52 track skipped packages
c9503d5 icon-naming-utils-native: inherit perlnative
a74e428 libxml-simple-perl: fix EXTRA_PERLFLAGS due the the perlnative change
f70eeea libconvert-asn1-perl: fix EXTRA_PERLFLAGS due to the perl-native change
ac4fba3 libxml-parser-perl: inherit perlnative
c13b10a cpan.bbclass, cpan-base.bbclas: update them for the perlnative change
38d0c60 perl: inherit perlnative
d1965ba webkit-gtk: should depend on perl-native-runtime rather than perl-native
f695cec dpkg: should depend on perl-native-runtime rather than perl-native
5af87ed coreutils: remove unnecessary dependency on perl
4c790ef git: should depend on perl-native-runtime rather than perl-native
ac21b3d openssl: should depend on perl-native-runtime rather than perl-native
a2f850d libcap: should depend on perl-native-runtime rather than perl-native
c7a7c5a gnu-config-native: should depend on perl-native-runtime rather than perl-native
89b91fd perlnative.bbclass: add the file
3ba6d01 perl-native: populate into its own dir
5565b30 native.bbclass: allow a native package to be populated into its own dir
7a086ab scripts/bitbake: Only build tar-replacement-native when the build system tar version < 1.24
5de3d14 core-image-lsb-sdk: ensure testapps is part of sdk image
644cc12 core-image-sato-sdk: ensure testapps is part of sdk image
163f4df task-core-tools: add mesa-demos to testapps list
b71f3e4 local.conf.sample: remove default EXTRA_IMAGE_FEATURES
43d84e6 metacity 2.30.3: fix build on GNOME-less hosts and fix packaging
b0c29c2 sysvinit: split inittab into it's own recipe
67119c5 consolekit: update to 0.4.5
f28c134 librsvg 2.32.1: fix loader packaging when using gtk >2.20
37524cb kexec-tools: don't depend on virtual/kernel
cd8694d iproute2: update to 2.6.38
e8b3a12 avahi: fix dbus system-service packaging and move more things to .inc
2c6ac68 distro_tracking_fields.inc: Fix a incorrect date format
4d9b298 udev: Fix udevd launch issue after system second boot
c647c7a pseudo: Update pseudo to 1.1.1 version
a91d498 distro_tracking_fields.inc: add pseudo
f865e83 bitbake.conf: Create staticdev pacakge for static libraries
10cf515 initramfs-live-install: comment out allarch inherit to resolve no provider
d2a9470 create-pull-request: Add URL documentation
1f0e242 package.bbclass: PACKAGELOCK is a shared lock file so inform sstate as such
3dc2615 sstate.bbclass: When removing files, take an exclusive lock, even for shared lockfiles
e55dc39 Drop psyco support
c7f76a1 bitbake/data/runqueue: Sync up with upstream to clean up environment variable handling
bdab8e9 bitbake/build.py: Drop exec_shell environment as its now unneeded
fe96722 runqueue.py: Wrap parsing with exception trapping
95f02a2 Shift traceback pre-formatting into LogHandler
355338c bitbake/cooker.py: Misc sync with upstream
9f33dde cooker: use BBHandler.inherit for INHERIT
88f4ba2 cooker: simplify self.configuration.data vs data usage
87dfc14 cooker: don't choke if we have nothing to parse
0f74a38 bb.exceptions: don't choke on frames without arguments
3fd3446 cooker: handle ExpansionError the same way we do ParseError
96e2ee1 Shift exception formatting into the UI
a3efbb9 cooker: don't show a traceback for ParseError
e121054 cooker: don't show a useless traceback for SyntaxError
97504f2 cooker: use logger.exception for config file parse errors
1749a73 cooker: pass traceback back from parsing thread
36d1dce cooker: show a useful message for ParsingFailure
2cf67a7 bb.exceptions: don't show a repr of 'self'
63d14f4 bb.exceptions: handle tb entries without context
5b4b6bc bb.exceptions: add to_string convenience function
22522d5 bb.exceptions: add code to create pickleable traceback entries
83708e4 bb.namedtuple_with_abc: add useful util from activestate
a702c3d bitbake-layers: Fixup after recent server changes
d276be6 bitbake/cooker.py: Fix debug message arguments
ed44d29 bitbake/lib/bb/__init__.py: Sync with upstream bitbake
6c286ed bitbake/bin/bitbake: Return an error if exceptions occur
5ded108 bitbake/server/xmlrpc: Fix typo
83c3f87 bitbake/server/process: Implement getEvent()
658ba77 bitbake/server/process: Update to new server API
8aabfed bitbake: Add process server from upstream bitbake
b34d662 bitbake none/xmlrpc servers: Only send pickled events to the xmlrpc server
cd3c429 bitbake: Cleanup bitbake server init process to be clearer to follow
e386fe4 bitbake: Sync up with upstream cosmetic changes for bin/bitbake
5af197b cache: Implement multiple extra cache fields request support
b3c41b1 Introduce new param caches_array into Cache impl.
43eb7d9 Introduce extra cache class for image creator
8df3551 cache.py: Refactory Current Cache implementation
911e8bb siggen: don't choke with traceback when data is None
3eed3aa parse: pass a useful (if mangled) key to bb.data.expand for :=
37d8388 linux-yocto/meta-yocto: make e1000e structure common [commit: bec3f1e8c]
5d22ea3 linux-yocto/meta-yocto: update target/meta SRCREVs
205a004 distro tracking: Manual Updates
c85e75f distro tracking: fixup some bad entries
03908ad util-linux: package agetty seperately
3263183 sqlite: remove dependency on tcl-native
3bb917d linux-yocto: make e1000e structure common [commit: bec3f1e8c]
ffa4177 linux-yocto: update target/meta SRCREVs
e36ab32 distro tracking: update Qing -> Saul
bd604d3 json-glib: Update to 0.12.4
f51576f distro-tracking: update openssh, tar, and grep
a314226 tar: upgrade to v1.26
757db8a grep: upgrade to v2.8
4555c2b openssh: upgrade to v5.8p2
9c425c3 distro-tracking: updates
7f34cd1 tzcode: Update to 2011g
c8bd9ff package_rpm.bbclass: make RPM use on-disk permissions
e3f56c0 bitbake.conf: set PSEUDO_PASSWD within FAKEROOTENV
133691c base-passwd: populate the target sysroot with passwd/group/login.defs
20ef342 shadow: add a -native recipe with customized utilities
109aa5c shadow: recipe and patch cleanup
1b817aa gcc-package-cross: also install the symlinks in libexec with target prefix
61bca46 xf86-driver-common.inc: remove .la files to avoid unpackaged warning
58e17f2 gnutls: add p11tool into gnutls-bin
048736c gnutls: use INC_PR on 2.12.5 version recipe
6e6fa7d base.bbclass: add cleansstate task between clean and cleanall
2b41c2a util-linux_2.19.1.bb: Fix compliation on uclibc
6f5a6e8 allarch.bbclass: Define BASE_PACKAGE_ARCH = "all"
90d5d3c bison: upgrade from 2.4.3 to 2.5
d0c2307 autoconf: upgrade from 2.65 to 2.68
5d35988 m4: upgrade from 1.4.15 to 1.4.16
6b5d323 event: don't catch systemexit from handler execution
18011c1 qmake_base.bbclass: fix lrelease/lupdate binary names
b0ed5af gettext: Add DEPENDS on git-native
5d9ea7d sysvinit: Mark as machine specific since there are machine specific components to this recipe
4547e5a libc-package: fix typo causing annoying diagnostic
ca7fd14 eglibc: fix mispackaging of libcidn
13bc4eb ghostscript: Fix up file locations and add i686
b3ca61b dbus: avoid dependency on x11 for -native build
65616ab gnutls: add --with-libdl-prefix and --with-libpthread-prefix
77eef5e rpm: avoid dependency on perl and python for -native build
7866ae0 send-pull-request: fix a small typo that fails the script
dba1a79 recipes: Upstream-status --> Upstream-Status: for multiple patches
06a03d7 libx11: fix libX11 keysyms to pass xts5 of lsb
c0867a1 task-core-lsb: add cups and ghostscript into image
83158a3 gcc: Fix volatile access issue for ARM
c51a6b5 avahi: enable service when using systemd
e244285 rootfs_ipk: delete opkg metadata if package management not required and all packages are configured
08bac9f shadow: remove selinux entry from pam.d/login
d8f8752 u-boot: package up u-boot.bin for field upgrades
10075c6 gettext-0.16.1: mark upstream status for gplv2 recipe's patches
df6d696 siteinfo: replace all-linux with allarch-linux to match 5d7d4e1ed9bedf2b6510796d76ea8f94739b9de2
484c4e7 clutter-1.6: Add patch to update gettext macro version
22f3c4e puzzles: Update to 9175
01cfae0 dbus 1.4.1: disable sysv script properly when using systemd
817a98d binconfig: improve handling of empty prefixes
e8ded5e create-pull-request: allow '+' in git PROTO_RE, ie for 'git+ssh://'
ab65c72 busybox: sync do_install() with oe master (mostly)
505ee4b sudo.inc: Add do_install_prepend () to sudo.inc
92a878e distro tracking: updates
057512f gnutls: update to 2.12.5
f236b1e rxvt-unicode: update to 9.11
4be541c qmmp: update to 0.5.1
4e510c5 alsa-tools: update to 1.0.24.1
3b95058 gthumb: update to 2.12.3
b326fa0 msmtp: update tof 1.4.24
59ab20e mc: update to 4.7.5.2
8707a2d mailx: update to 12.5
18940c7 chkconfig: update to 1.3.52
8d74723 update-alternatives-dpkg update to 1.16.0.3
c1b6e65 dtc: Cleanup and update recipe
fe96128 gobject-introspection: Update to 0.10.8 Git
39e10b5 gettext: Update to 0.18.1.1
cbaca4e glew: update to 1.6.0
a70cc53 util-linux: update to 2.19.1
2dfc95b newt: add Upstream-Status
8ddeef7 mpeg2dev: add Upstream-Status
7ab1360 libmad: add Upstream-Status
a655518 tzdata: update to 2011g
fb3c98c sysstat: update to 10.0.0
cb7b483 less: update to 443
5482512 poky.conf: Make qemu-config optional for non-GPLv3
802080e allarch.bbclass: A "all" TARGET_ARCH is dangerous as an OVERRIDE
fdead2b data_smart: Adding overrides of zero length is pointless so lets not
58bdecb bitbake: use layer priority when applying bbappends
dc65caa providers.py: Correct PREFERRED_VERSION handling
52295fa Improve handling of 'all' architecture recipes and their interaction with sstate
c3a7382 prelink: remove dependency on transfig-native
8074582 sysvinit: make pidof usuable in a standalone setting
24f8f69 bitbake/runqueue.py: Move BB_WORKERCONTEXT to a place where anonymous python can see it
949c352 linux-yocto: update meta SRCREV
cdc3397 bitbake.conf: make OVERRIDES match what people expect
ed93e02 gcc-cross-csl-2008q1: Drop last remaining fail-fast override use and make it unconditional
5456878 site/powerpc-common: remove the incorrect dlopen default setting
c412674 package.bbclass,prserv.bbclass: Compare USE_PR_SERV with "1" or "0"
8611987 uclibc: Add disabled COMPILE_IN_THUMB_MODE to uClibc.machine for all ARM configurations
d43fa5f license.bbclass: Infinite recursion of or nodes
1169f1b license.bbclass: Sane Parsing of licenses
deb3b03 uclibc_git.bb: Fix patch path in SRC_URI
eae918c gupnp-tools: Add gupnp-av to DEPENDS
59650ea beagleboard: specify UBOOT_MACHINE in machine conf
6401cf0 machine confs: Add xserver-kdrive as PREFERRED_PROVIDER
62e3f0f License Field Cleanup: Non-standard field names
5faff78 common-licenses: Adding new licenses and renaming
183ef12 fetch2/git: ensure network check log matches actual command
5a4b8ce fetch2/git: use logging.debug() and clarify messages
fd00566 bitbake/codeparser: Improve cache handling
c373727 bitbake/runqueue.py: Ensure existing setscene stamp files are taken into account
5573852 bitbake/utils.py: Add option to lockfiles to return immediately rather than wait
00c7113 bitbake/cooker.py: Ensure BBFILES is processed in order
65b5553 bitbake/cooker.py: Fix -b option regexp handling
a667251 fetch2/git: enhance the unpack by using "git checkout"
3466f21 fetch2/git: add document for git fetcher supported options
086479f fetch2/git: unify the nocheckout option format
8a12fad fetch2/git: change default protocol from rsync to git
adbc121 meta-yocto/local.conf.sample: Added PRSERV_HOST and PRSERV_PORT.
16f06f7 classes/package_xxx.class: Use PKGE/PKGV/PKGR.
66d2743 classes/package(prserv).bbclass: Get PRAUTO and use PKGV/PKGR.
f906608 conf/bitbake.conf: Added variables for PR service.
ecdbd6a Add PR service deamon to bitbake
859e21a shared-mime-info_0.90.bb: Fix more parallel build issues
5b0900b uclibc.inc: Set COMPILE_IN_THUMB_MODE in .config if ARM_INSTRUCTION_SET != arm
7cab66c uclibc_git.bb: Fix compilation on arm when using thumb instruction set
e94e86c utils.bbclass: make FILESEXTRAPATHS colon delimited
3a45478 u-boot: rename u-boot_git.bb to u-boot_${PV}.bb
7f75045 u-boot: remove UBOOT_MACHINE and COMPATIBLE_MACHINES
3faabbf dbus 1.4.1: create UUIDDIR in postinst
b8b479e xorg.conf: update keyboard config with evdev
6015a10 rpm: fix fprint pointer issue
57684a7 libcap: add native BBCLASSEXTEND to fix gnutls-native after ffc32d6436bcd11bd9a431affb9d2508fdb3992e
e944838 avahi: enable systemd support, but package systemd files seperately
9bccbc5 tcmode-default: workaround for gcc 4.6.0 failure on beagleboard
3b084de rm_work: keep all sigdata files in stamps dir
ba9f2fb Revert "createrepo: Update to 0.9.9"
fe91703 gnutls: Add libcap to DEPENDS
0eb4895 bitbake.conf: change IMAGE_ROOTFS_EXTRA_SPACE to soft (?=) default
6486450 console-tools: use u-a also for fgconsole otherwise it collides with busybox
a57a1db dbus: Fix commit typo, I mixed the patch versions up
bd97aa3 x11-common: fix dbus-launch RDEPENDS
eed619c dbus: clean up dbus-x11 packaging
5168b14 dbus 1.4.1: enable systemd support, but package systemd files seperately
da1a404 x11-common 0.1: add runtime dep on dbus-x11
12f5845 qemu-config: add runtime dep on dbus-x11
8dc4899 dbus: split X11 dependant dbus-launch into its own subpackage
2458da2 README.hardware: update installation instructions for beagleboard
5d56586 binutils: Add missing dependency on zlib-native
42076dc cooker.py: Don't show spurious warnings for collections of .bbappend files
fe5f742 build/siggen: Ensure a task signature file is generated for each task that is executed
1607d7b IMAGE_ROOTFS_SIZE: Cleanup machine conf files
4da5ff7 python-2.6.6: py_package_preprocess should change Makefile only in PKGD not D
b543da3 uclibc: rename bbappend in meta-yocto to match version in oe-core
24def0d task-poky-sdk-gmae: rename bbappends to task-core-sdk-gmae in meta-yocto
89f9d57 qt4: remove obsolete 4.6.3 bbappend from meta-yocto
be9787a clutter: remove obsolete 1.4 bbappend from meta-yocto
5d1fcb1 rootfs_ipk: issue a diagnostic if rootfs is declared read-only and not all maintainer scripts could be applied offline
a3d6def image_types: add IMAGE_ROOTFS_EXTRA_SPACE
470c0fe IMAGE_ROOTFS_SIZE Cleanup
5566567 eglibc.inc: Transfer PARALLEL_MAKE to PARALLELMFLAGS
a49cc20 elfutils_0.148.bb: Fix compilation on uclibc
c792ca0 gst-plugins-base: Add tremor to DEPENDS
9cc034b distro-tracking: update toolchain recipe fields
d236f9c python-pygpbject: upgrade from 2.27 to 2.27.91
b021481 byacc: upgrade from 20101127 to 20101229
bcb1eb8 libpcre: upgrade from 8.10 to 8.12
542c93f git: upgrade from 1.7.4.3 to 1.7.5.1
567f171 create-pull-request: generalize the repository URL parsing
c2d1870 ghostscript: fix run failure on mpc8315e
98e8faa pulseaudio: package udev rules
90981bb syslinux: rdepends on mtools
7fd97dd send-pull-request: drop sendemail checks
8e341a6 update-alternatives-dpkg: Update to dpkg base 1.15.8.7
2d7798a gail: update gail to 1.20.2
32a4e74 codeparser.py: fix syntax error in exception handling
3504c3a documentation/yocto-project-qs/yocto-project-qs.xml: fixed build env script
b8b9667 BUGID#_1083 - documentation/yocto-project-qs/yocto-project-qs.xml: Added -k option
0eb4932 BUGID#_1083 - documentation/poky-ref-manual/usingpoky.xml: -k option added
4ea8b2f uclibc: Upgrade to 0.9.32-rc3
ed6f039 qemu machines: drop MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "qemu-config"
be7020c poky.conf: Add qemu-config dependencies to qemu images at the distro level
e2648e2 distcc_2.18.3.bb: Fix compilation on uclibc
bd47ca4 gplv2 recipes update upstream status of patches
7772680 tcmode-default: switch to gcc 4.6.0 for ppc & mips also
86771cd tcmode-default: switch to eglibc 2.13 from 2.12
806698a opkg_svn.bb: Install rcS.d into $D instead of $IMAGE_ROOTFS
5148a49 puzzles: update to r9173
d773518 packagedata: don't choke on empty PACKAGES
e3d0d98 Move packagedata code into oe.packagedata (sync from OE)
2a05bd9 oe.packagegroup: add code for package groups (sync from OE)
fc55b22 base.bbclass: use oe.data for OE_IMPORTS
adceb2e Shift oe import logic out of the event handler
6bdfae9 base.bbclass: switch to current OE's imports handling
4da8c86 oe.data: expand the flags
e4921fd Implement variable typing (sync from OE)
4f5209c kernel.bbclass: pass KERNEL_VERSION through legitimize_package_name
2f4c803 Revert "u-boot: fix LIC_FILE_CHKSUM"
1c4a605 ed (GPLv2): remove --disable-silent-rules
2cccc12 modutils-cross: fix install issue
cc46019 tcmode-default: switch to gcc 4.6.0 for x86, x86-64 & arm
6557b59 uclibc/site_config/funcs: getloadavg is unimplemented
c166eb1 nfs-utils_1.2.3.bb: Fix compile failure on uclibc
7576968 opkg-utils: Synchronise with OE
9fbd9b9 package-index.bb: add support for deb and rpm.
5956184 gettext (gplv2): add virtual/gettext to PROVIDES list
2d2563a u-boot: fix LIC_FILE_CHKSUM
7706d5d linux-yocto/meta-yocto: fix gcc 4.6.0 compilation failures
624263c distro/defaultsetup.conf: Append TCLIBC to TMPDIR by default
09862c4 poky.conf: Poky doesn't support parallel builds of libc at this point
f6f898a default-distrovars.inc: Do not add DISTRO_EXTRA_RDEPENDS and DISTRO_EXTRA_RRECOMMENDS
86e6d45 poky.conf: Set DISTRO_EXTRA_RDEPENDS/DISTRO_EXTRA_RRECOMMENDS
2bc011d *pull-request: add copyright, license, and descriptions
943951b send-pull-request: streamline git-send-email usage
8402e22 create-pull-request: add untested oe repository support
b131ca1 create-pull-request: add GitHub remote support
5f9f218 create-pull-request: do not check certificate
a13fe8e send-pull-request: verify git sendemail config
2b56f7b send-pull-request: don't send all patches to everyone even with -a
ad6335a send-pull-request: fix greedy auto-cc regex
58f901b send-pull-request: remove local mta support
b158757 send-pull-request: whitespace cleanup
dca0c48 create-pull-request: provide an RFC mode via -c argument
5ad2eba create-pull-request: rewrite known private URLs to public URLs
65c2d1e create-pull-request: use git request-pull and arbitrary remotes
e39bb8c create-pull-request: whitespace cleanup
8a64780 create-pull-request: alphabetize arguments
282b967 qt4-tools-native: Fix the patch location
bc386f6 utils.bbclass: modify create_wrapper to correctly follow symlinks
30358f0 Add adt repo checking
d1df751 extract bitbake config setting into data_define, use more variables replacing hardcoded values
720b5db lsbsetup: Rename this file and add a link for lsb test
0b5b26b linux-yocto: fix gcc 4.6.0 compilation failures
e6d9d2c tcp-wrappers: fix libc overrides
dfa5735 sysstat: fix libc overrides
55007ca lsof: fix libc overrides
e9e2473 findutils: fix libc overrides
9e27763 diffutils: fix libc overrides
8b2e973 create-pull-request: switch URL from git.pokylinux.org/poky-contrib to git.openembedded.org/openembedded-core-contrib
8efa3a2 mklibs-native: Update to 0.1.33
a1120d4 usbutils: Update to 0.91
c6dde32 u-boot: update SRCREV to 2011.03
ccfd344 utils.bbclass: modify create_wrapper to correctly follow symlinks
1ef9f10 u-boot: Don't add PR in PV, its pointless
3ea694c qt4: re-enable two 4.6.x patches in 4.7.3
18b0ade qt4: add comments and Upstream-Status to all patches
0f574cc qt4: remove Qt 4.6.3
000368f gst-openmax: Add patch for GCC 4.6.0
04e3654 qemu: Fix Dependency and compatible machines
e080d8e gcc: remove unused patches and move patches in proper dir
725acfa Couple minor fixes for the OECORE rename
a0da8e7 recipes: add Upstream-Status to various recipe patches
ffef4da Add a skeleton for init scripts
0424560 Add pidofproc to ${sysconfdir}/init.d/functions
0b175c4 Cleanup the whitespace in functions
728cec9 Add the layer meta-skeleton
c21770f world-broken: remove non-existent items
21606d3 task-core-clutter: Update to 1.6
0d29487 clutter: Clean up old recipes
3fcdbf9 gcc: Move 4.3.3 and Special kernel 3.4.4 to meta-extras
7aabd71 yaffs2: Remove yaffs2 from oe-core
8fdd65f gtk+: Ensure that the default dependencies are ones that exist in OE-Core
21b0a2a sanity.bbclass: Disable the is DISTRO set check since we can now run distro-less
0f2e555 scripts/oe-buildenv-internal: Improve message when bitbake is missing
025821a update-rc.d: fix after repo move
189fa6b documentation/bsp-guide/bsp.xml: Updated Example Filesystem Layout
aff8c57 documentation/poky-ref-manual/faq.xml: Added FAQ entry for filename spaces
dd3cd02 documentation/bsp-guide/bsp.xml: Updated link to BSP Download site
a106f41 documentation/bsp-guide/bsp.xml: Updated /binary explanation
cf3d261 documentation/bsp-guide/bsp.xml: BBFILES statement corrected.
211d5a3 documentation/bsp-guide/bsp.xml: bsp exmaple name fixed
b35a95f documentation/yocto-project-qs/figures/yocto-environment.png: New figure
375935d BUGID#_ 1068 - documentation/poky-ref-manual/extendpoky.xml: updated hello ex.
1947b17 documentation/yocto-project-qs/yocto-project-qs.xml: changed build command
9fe00e1 recipes: Add upstream status information for patches
7cc5910 image-prelink: remove hardcoded path assumptions, don't generate cache file
63f8d85 task-core-lsb: Add libQtOpenGL.so* library to lsb-image
1c5dd2b lsbsetup: Add a link for lsb test
9f14474 lsb: Install init-functions to rpm package
df2a37a git fetcher: add support for rebaseable git repo
8bb06fd bitbake.conf: set TARGET_VENDOR to '-oe' and remove it from defaultsetup.conf
f5cc1f2 backport USE_LDCONFIG and PACKAGE_SNAP_LIB_SYMLINKS from oe master
f93d687 update patch upstream status
ba3995d guilt-native: eliminate hardcoded "/usr" in do_install
ceeb54d Upstream-Status: Update patch upstream-status for GPLv2 recipes
97868af eglibc: backport fix from oe master to stop libc.so leaking into ${PN}
5527983 task-core-nfs/image.bbclass: Fix some libc overrides
594d886 image.bbclass: use soft assignment for LDCONFIGDEPEND
8b32cd9 openssl: backport fix for empty prefix from oe master
8197f4d update-rc.d: point SRC_URI to new devel repo
e62569a license bbclass: put licenses in DEPLOY_DIR/licenses to avoid sstate problems when MACHINE is part of DEPLOY_DIR_IMAGE
72931d1 linux-yocto: update meta SRCREV
5a3d24e perl-native: create_wrapper on perl${PV} too
9d42473 openssh: Don't use ${libdir}exec
339d493 base.bbclass: Fix PR increment bug when PR number is a single digit
60ab6fc Add a new task checklicense and fix some bugs in distro_check.py
afe43ed linux-yocto: detect and avoid branch revision checking for AUTOREV
7a0d252 Upstream-Status: Update patch upstream-status for libfm, eggdbus, screenshot...
2ce14da Upstream-Status update for several recipes
0dbd791 recipes: Add Upstream-Status to various recipe patches
9e45491 mutter: Recipe Update for clutter 1.6 update
6b8f009 e2fsprogs_1.41.14.bb: Package libraries into separate packages
4911ad1 opkg: Bump SRCREV to 609
eb01cda task-core-nfs: fix a bitbake error
5251d9d bitbake/ui: Fix Gtk+ GUI's after recent cache changes
aa721aa cmake: add support for oe qt4 tools names
4d62860 conf/distrosetup: Clean up default libc config and sync with OE-Core (artifact of merge issue)
f10292a foomatic-filters: add a link to pass LSB printing test
d2de82e util-linux: inherit pkgconfig
9248bf0 conf/bitbake.conf: Add MACHINEOVERRIDES variable
ff15645 glib-2.0: use PN instead of glib-2.0 in PACKAGES and FILES
04b79d9 lib/oe/process.py: import from OE
add4df4 qt4: split out SQL driver config flags to QT_SQL_DRIVER_FLAGS
0bd9538 distro_tracking_fields.inc: update for qt 4.7.3 upgrade
0de1bd8 qt4: update from 4.7.2 to 4.7.3
a69153b lsbsetup: recreate locale fr_FR
3bfbeff task-core-lsb: add packages into lsb image
3ceeebe libxml-sax-perl: added to create LSB olver test report
31a763d Qt4OpenGL: Enable libopengl for platform emenlow and mpc8315e-rdb
65e5ebc tcmode-default: fix a typo
42d2170 recipes: Update upstream-status of patches
9233fdc gcc 4.5.1 4.6.0: remove unused patches
9deb373 update patch upstream status
f838217 qt4-tools-nativesdk: -arch is required for nativesdk build
021e792 gcc: fix target gcc runtime issue
b0e6fc7 kern-tools: error if features are not found
31f4fa1 bash: enable update-alternative to use bash as default shell
79031b0 recipes: Add Upstream-Status to multiple recipes
fc1859e recpies: add Upstream-Status for multiple recipes' patches
6a7b1fe recipes: Add Upstream-Status for multiple recipes
62e9c9e recipes: add Upstream-Status for multiple recipes
43607eb distcc: Update SRC_URI
477934e codeparser.py: Ignore incomplete cache files
bc36752 Add files missing from previous change
ad0594f procps: use u-a for pmap, otherwise conflicts with pmap from busybox
661b5fc tcmode-default: lock also versions for eglibc
2e4518b recipes: Fix the Upstream-Status format
cba146c libzypp: fix compilatoin with gcc 4.6.0
9582e90 kexec-tools: fix compiler errors with gcc 4.6.0
e90cc99 systemtap: fix for compilation with gcc 4.6.0
ac3dce4 pax: fix for compiling with gcc 4.6.0
b6e4c1a mdadm: compilation fix for gcc 4.6.0
64a47c3 dtc: fix compilation with gcc 4.6.0
da4795c zaurusd: fix a typo in Makefile
c4d7659 web: fix typo in Makefile
5df6f79 matchbox-wm-2: fix typo in Makefile
b200501 libunique: Fix for compilation with gcc 4.6.0
e8fd633 tcmode-default: Fix defaults for libgcc recipes
a2e232e qemu: Upgrade qemu git to the latest 0.14 branch
7f7de31 clutter-cairo: remove remaining files from this obsolete recipe
6941efa python-native: Add ctypes patch to native build (as in cross-compilation)
ef768be lsbsetup: Add link for sendmail
1809999 init-functions: Conforming applications may install one or more initialization scripts
1320cad wq!lsb: Add init-functions to lsb-image
57d50ba xserver-xf86-lite: upgrade to from 1.7 RC2 to 1.10.1
495c109 xserver-xf86-dri-lite_git: upgrade to 1.10.2 RC1 snapshot
c532f96 xserver-xf86-dri-lite: upgrade from 1.9.3 to 1.10.1
03439a3 sqlite: upgrade from 3.7.5 to 3.7.6.2
4c96cce xf86-video-intel: upgrade from 2.14.0 to 2.15.0
50e7a78 git: RDEPENDS are transitive, so remove tk so it builds with just OE-core
7badcf0 readline: Upgrade 6.1 -> 6.2
754b178 qmake_base.bbclass: add generate_qt_config_file task
9c272d9 cmake.bbclass: fix qmake and rpath issues
37f4319 siteinfo.bbclass: Add powerpc-linux-gnuspe.
0813e05 conf/distro/include: Remove old prebuilt OE toolchain support (replaced by sstate) and oabi config (obsolete)
80ebce8 distro/tclibc-uclibc: Append uclibc to key path names to allow parallel uclibc and eglibc builds
bdc2e59 conf/bitbake.conf: use --no-check-certificate to avoid errors when wgetting from https
456f8f9 meta/conf/layer.conf: Remove packages/*bb from BBFILES
f21b091 metadata_scm.bbclass: Use COREBASE to grok for SCM operations
0504d36 bitbake.conf: Drop unused *GUI* and MACHINE_DISPLAY variables
c444341 preferred-xorg-versions.inc: Drop this, it makes no sense given we only have one version of these recipes
f60f3f1 conf/distro/include/default-distrovars.inc: Create set of default 'distro' variable values
367a139 machine/qemu: Add qemu-config as an essential machine speicfic dependency and drop specific distro config
e27f339 distro: Add defaultsetup.conf, a set of default configuration providing sane overrridable default for commonly used options
5a606ef matchbox-theme-sato/pseudo: Add DEFAULT_PREFERENCE = -1 for SCM recipes
0448533 bitbake.conf: Include the new default-providers.inc and default-versions.inc files
16cfbd6 poky-floating-revisions: Move to meta-yocto
e92a198 linux-yocto: Fix COMPATIBLE_MACHINE so core machines aren't overwritten
622fb696 atom-pc: use linux-yocto (2.6.37) kernel
ef8291f conf/machine: Drop unused *GUI* variables
bc729d2 documentation: Removed hardcoded user name from publish option
93f2f1b documentation/adt-manual/Makefile: removed hardcoded name from publish
c7c40a3 BUGID#_807: documentation/poky-ref-manual/ref-variables.xml: BBFILE_PRIORITY updated
aa0575c documentation/poky-ref-manual: Removed the PNG files in screenshots
4ff1f64 documentation/poky-ref-manual: Added new title graphic
4100eba documentation/poky-ref-manual/figures/ss-sato.png: Added this file.
fccb51c documentation/poky-ref-manual: Figures cleanup
92690ef BUGID#_956: documenation/poky-ref-manual/Makefile: Updated publish
3c59043 documentation/kernel-manual: removed a figure and updated makefile
f55fec8 BUGID#_956: documentation/kernel-manual/Makefile: Updated publish option
53dfcb4 documentation/kernel-manual/figures/yocto-project-transp.png: Removed
f7b1705 BUGID#_956 - documentation/bsp-guide/Makefile: Updated for publish process
35751b9 documentation/bsp-guide/figures/poky-ref-manual.png: Removed figure
f5cf435 toolchain-qte: include cross-compiler and fix env script
2277c30 libxmu: Add native function
7a78b21 oe/patch.py: Remove series file during Clean()
7f92587 fuse: drop since it is not used by other recipes
e646a99 insane.bbclass: skip license checksum if LICENSE is "CLOSED"
dc34eff libxkbfile: disable xcb
bcd7f10 busybox: add support to mdev
c533f60 meta/conf/local.conf.sample: fix mklibs comment line split and typo
5aa69f2 linux-yocto: error if meta data not present
b4dcf0d linux-yocto: remove non-core (qemu) machine compatibility
94c73db gtkhtml2: Update to 1161
54c422a web-sato: Update for svn -> git transtion
ed18794 gnome-doc-utils: Add additional missing -nonet options to xsltproc
60c1542 syslinux: improve packaging
915f491 scripts/oe-setup-builddir: fix typo
9ebafcf package_rpm: use target vendor information
9f2d50c image-mklibs: add microblaze arch support
5bd9671 linux-libc-headers: add microblaze ARCH definition
7b01b1e siteinfo: add microblaze target info
49d21ed kernel-arch: add microblaze to valid archs
3e1f013 insane: add micrblaze target info
196f689 lttng-ust_0.12.bb: Fix compilation on uclibc
4401c94 liburcu_0.5.4.bb: Let it build on uclibc targets
3fbb7b5 libgalago_0.5.2.bb: Fix compile for uclibc
630a645 recipes: Replace gconf-dbus with gconf
e2f1638 qemu-script: Fix qemu seg fault if install Nvidia proprietary driver.
cd4a94d rsync (GPLv2): fix security vulnerability CVE-2007-4091
32e63c2 linux-yocto: move non-core machines to meta-yocto
f285547 documentation/yocto-project-qs/Makefile: BUGID#_956 - Modified Publish
660fb42 documentation/yocto-project-qs/figures: Removed two figures
3c7c0db documentation/yocto-project-qs/yocto-project-qs.xml: fixed typo
ec7059c documentation/adt-manual/Makefile: BUGID#_956 - Changes to push to website
7adc70b documentation/adt-manual/figures/yocto-project-transp.png: removed file
112adfc documentation/yocto-project-qs/Makefile: BUGID#_956 - fixed remote publish URL
1eb81c8 documentation/poky-ref-manual/Makefile: BUGID#_956 - fixed publish URL
3171f03 documentation/kernel-manual/Makefile: BUGID#_956 - fixed publish URL
aaf8954 documentation/bsp-guide/Makefile: BUGID#_956 - fixing publish process
5b1f8a2 documentation/adt-manual/Makefile: Updated publish
9aa2ef7 documentation: Update publishing location
7accf4b documentation/poky-ref-manual/resources.xml: removed referenct to poky linux site
720e6e1 documentation/poky-ref-manual/extendpoky.xml: removed pokylinux.org link
a838bca documentation/poky-ref-manual/ref-images.xml: [BUGID#_1004] - EXTRA_IMAGE_FEATURE
55aacbc u-boot: correct COPYING MD5SUM
c08d4cf gettext.bbclass, bitbake.conf: Append nls options to EXTRA_OECONF instead of +=
c099dc0 bash.inc: Add bison-native to DEPENDS
6dfa294 sysstat.inc: Switch to inherit gettext
610ba36 binutils.inc: Switch to TARGET_PREFIX not TARGET_SYS
6e884c3 gcc-package-target: Switch to TARGET_PREFIX in symlinks
6e50e0c package.bbclass: convert unpackaged file message from 'info' to 'warn' so that it shows up on the console
25f4a0e conf/layer.conf: Use .= to append to BBPATH and += for BBFILES
605141a gnu-config-native: add dependency on perl-native
839de46 binutils: update upstream status of patches
73bb65d gcc-4.5.1: update upstream status of patches
f73fe92 sat-solver: fix compilation issue with gcc 4.6.0
22d6a13 subversion: update upstream status for patches
4784dd8 python-imaging: update upstream status for patches
a5cd66b patch: update upstream status for patches
cf24b29 patch-2.6.1: update patch upstream status
134419f libpcre: update upstream status for patches
ded9071 gtkhtml2, web: Sync version for API Change
2831f15 clutter-gst-1.4: Add missing patch
b8124c4 git: make it work on the target
2fcf5a7 sanity.bbclass: Add cpio to list of required utilities tested for
506241c bitbake: Add missing file
0788081 Enable some DeprecationWarnings
0cc52ef bitbake: Sync fetch back with upstream
d2c925f fetch.git: fix a remnant wrt persist + keyerror
f1c0c97 bitbake/persist_data: Sync file with upstream bitbake
754d1c6 persist_data: implement comparison, same as dict
824acff persist_data: don't allow non-string keys/values
d43e7a9 persist_data: add has_key
7fc020a persist_data: raise KeyError on missing elements
fc801b9 event: improve output for syntax errors in handlers
37cb4cc event: improve output when eventhandler exec fails
8cf28d7 event: register event handler functions, not code objects
2d73cd1 build: fix dir removal traceback
8b938dc build: in exec_func, mkdirhier ${T}
88dbb05 Initial work on getting bitbake working under pypy
628bd54 cooker: fix -b with BBCLASSEXTEND
6074329 bitbake manual: fix typo
7287549 bitbake/codeparser: Correctly handle a missing/empty cache file
e72210c netbase: automatically bring up usb0 on BeagleBoard xM
001a555 bitbake/cache.py: Ensure skipped recipes make it into the cache to avoid reparsing
c8928e9 bitbake/cooker/codeparser: Ensure the code parser cache is saved for each parsing process
9211fd9 bitbake/ast.py: Only run finalise() for the specified variant
8b32d40 bitbake/runqueue.py: Remove old log file handling remnants
a90914c boot-directdisk: fix bzImage source location
6f16bbf linux-yocto: update SRCREVs
1e54b75 linux-yocto: safely process unbranched repositories
1fc3964 linux-yocto: apply meta data to external repos
f20edfe gnome-doc-utils: Add -nonet option to xsltproc
2d4513f yaffs2-utils_cvs: fix the SRCDATE typo
c83d7ac web: fix SRCREV
a4b61fb gypsy_0.8.bb: Fix build with gcc 4.6
f014269 eglibc-2.13: Add recipes for eglibc 2.13
a00b11b yaffs2: Update patch and checksums
3748180 clutter-gtk-1.4: Rebase patches
9bb5a68 clutter-gst-1.4: Rebase patches and update checksum
ca63a01 ghostscript: added to pass LSB commands check
2ebb1fb foomatic-filters: added to pass LSB commands check
478deec gcc-4.6.0: Backport FSF 4.6 branch patches
d42dccf gcc-4.6.0: Add missing recipes for gcc-cross-canadian and gcc-crosssdk
32240fd lttng-viewer: explicitly add linkage to lttvwindow
c4d01fc task-core-tools.bb: properly enable lttng-ust for ARM
3a41c1e initscripts: remove -i from halt/reboot arguments and allow override
e178de7 util-linux.inc: remove virtual/libintl from DEPENDS
bbd6999 Remove distro-specific metadata for distros not in oe-core
cdf8783 Remove machine-specific metadata for machines no longer in oe-core
5331f47 meta-yocto: add pieces removed from oe-core for beagleboard & atom-pc
61018fd poky-default-revisions: move the SRCREV to recipe file
b5adb30 python: Unbreak Python third-party extensions
d2e078a qemuimagetest: Add executable permission to test scripts for toolchain
ea4857a qemuimagetest: Enable toolchain automation tests in qemuimagetest
49e2fcc perl: fix Configure-multilib.patch
7050587 perl-native_5.12.2.bb: Fix compliation on ubuntu 11.04-alpha
7755614 libsoup-2.4: Update to 2.34.1
c525f41 linuxdoc-tools-native: add groff-native to DEPENDS
2cfc993 puzzles: update to r9163
c09c603 alsa-utils_1.0.24.2.bb: Fix build for uclibc targets
6e0cede libx11: Use inherit gettext
499a7b9 insane.bbclass: Checking for NLS too when checking gettext dependency
5ce6cc4 git: use DESTDIR=$D instead prefixing all variables by $D
6add850 LSB_Setup.sh: Add character set to lsb-image
53907b8 task-core-lsb.bb: Add packages liberation-fonts to lsb-imag
5515f7b libcap: upgrade to version 2.20
f063ff7 lzo: upgrade to version 2.05
f61514e shared-mime-info: upgrade to version 0.90
a29b96e busybox: upgrade to version 1.18.4
b9e63d9 curl: upgrade to version 7.21.6
3ef65ef augeas: upgrade to version 0.8.1
5e9bd90 acl: upgrade to version 2.2.51
d41c3a8 attr: upgrade to version 2.4.46
f8e02f3 create-lsb-iamge:Fix bugs
ea0e291 netbase: fix check for nfsroot in if-pre-up.d script
7ec1a51 logging: delete the oe(note|warn|fatal|debug) functions
fc934af logging: update existing oe* logging users to the bb* interface
0e2eb05 distro_check.py: Fix some bugs in distro_check.py
8e55193 Fix matchbox-panel-2 compile error
5d73784 task-core-lsb: add xdg-utils into lsb image
5cd5efb lsbsetup: add commands install_initd and remove_initd
d2c84ea groff: update to 1.20.1
288638e liberation-fonts: postinst can't be called offline
f564954 core-image-directdisk: add LIC_FILES_CHECKSUM
0e89459 gettext.bbclass: Updates to better handle gettext alternatives
39e469c base.bbclass: Create a BASEDEPENDS variable other classes can use to add to the base dependencies, avoiding native/nativesdk issues
0c28d5b libnss-mdns: add $D to postinst paths
a2030c8 git fetcher: make tag back to work, fix Yocto bug 972
29ea5ad Need override for TEMPLATECONF
28e7041 universe target: add a new target to collect all recipe targets
3279737 linux-yocto: create SMP config fragment
fbdbdb1 perl_5.12.2.bb: Undefine features not found in uclibc
5f37ef4 qemu: Fix non-sdl/opengl build
5d92f33 world-broken: add older clutters since we don't want clutter confusion
1942549 alsa-tools: Add checksums
e51bd9b tidy: move old clutter demo to meta-demoapps
aa7ec17 table: move old clutter demo to meta-demoapps
777f1a3 clutter-box2d: add DEPENDS for clutter-1.6
197557b alsa-utils_1.0.23.bb: Fix compilation for uclibc targets
e3e96e6 glib-2.0: Inherit gettext should provide right libintl so remove from DEPENDS
b65c8e6 poky-default.inc: Weakly assign gettext to provide virtual/gettext
582dfde gettext_0.17.bb: PROVIDE virtual/gettext and RCONFLICT with proxy-libintl
d31c443 gettext: Divide packaging into gettext-runtime and rest
34e8e9e autotools.bbclass: Copy gettext files only if --disable-nls is not set
01102bd insane.bbclass: Move code to add function to tasks toward the end
0bed0db libsdl: add SRC_URI Checksums
753bc3e logging: add bb* logging mechanisms for bash recipe functions
52026ef logging: remove unused BBDEBUG from local.conf.sample
4349374 logging: fix oedebug loglevel test
d0382d5 distro_tracking_fields.inc: add cdrtools recipe
af40ff0 cdrtools: recipe and patch cleanup
7bd1a63 python: add missing cytpes modules
c9107cd linux-tools.inc: Dummify do_compile_perf and do_install_perf for uclibc
1ac90a3 attr: Fix compilation on uclibc
e45f225 xorg-lib: inherit gettext class instead of adding gettext to DEPENDS directly
bffd29b perl_5.12.2.bb: Undefine features not found in uclibc
78cb6b1 elfutils_0.148.bb: Fix compilation issues on uclibc
dff516e libiconv: update from 1.9.2 -> 1.11.1
673c85a sstate.bbclass: Reduce SSTATE_MANIFESTS assignment to be weak
cc0ae4b distro_tracking_fields: cwautomacros, valgrind, etc
68942a6 cwautomacros: upgrade to version 20110201
440aba7 alsa-utils: upgrade to version 1.0.24.2
d5ae54e libsamplerate0: upgrade to version 0.1.7
e6cf2bc gst-fluendo-mpegdemux: upgrade to version 0.10.67
1eff536 polkit: upgrade to version 0.101.
38fd4ce libfm: Remove the flag of G_DISABLE_DEPRECATED
6d3de3f glib-2.0: upgrade to version 2.28.6
60cf466 libsndfile1: upgrade to version 1.0.24
0cad3af gupnp-av: upgrade to version 0.8.0
42c940b bluez-hcidump: upgrade to version 2.0
aeee3fb valgrind: upgrade to version 3.6.1
722d95c rxvt-unicode: upgrade to version 9.10
e8a1130 cpio-2.8 (GPLv2) bug fix
1b283ce tar-1.17 (GPLv2) bugfix
335ff67 web: update svn to 131 to fix build issue
8e261fa gdb: set --without-ust for EXTRA_OEFLAGS
829b985 perl: upgrade from 5.12.2 to 5.12.3
3669de7 gcc: Add recipes for 4.6.0
07a6bec quilt: fix test for target build
181d5f5 sat-solver: fix arch=all packages
927d33c task-base: allow distribution to define apm provider
40f226e create-lsb-image:Rename creat-lsb-image and fix some bugs
91556f8 librsvg 2.32.1: fix postinst script
6da7fc5 pcmciautils: Upgrade 017 -> 018
30b44d9 lsbsetup: add some workaround for LSB tests
f56f164 qemu-helper-nativesdk: Update LIC_FILE_CHKSUM for renamed helper
440f2f5 distro_tracking: recipe information update
af25aea libxml-parser-perl: upgrade from 2.36 to 2.40
cd5a32e cpan.bbclass: export PERLHOSTLIB for perl modules
345de20 perl-5.12.2: use of PERLHOSTLIB var fix
4ffd8a2 python-pycairo: fix installation path of __init__.py
db18200 git: upgrade from 1.7.3.4 to 1.7.4.3
5621123 python-gst: upgrade from 0.10.19 to 0.10.21
60bb07d mpfr: upgrade from 3.0.0 to 3.0.1
f12a489 ofono: add bluez4 to DEPENDS list
ee2ff2a linux-tools.inc: turn off newt and dwarf for perf
8667ea0 puzzles: Upgrade to svn r9151 (from r9084)
5b661fc distro_tracking_fields.inc: update the info for the following recipes
f0752b4 lttng-viewer: upgrade from 0.12.36 to the latest version 0.12.38
320a641 task-poky-tools.bb, task-sdk-gmae.inc: enable lttng-ust for ARM
b4a88a5 lttng-ust: upgrade from 0.11 to the latest version 0.12
6890094 liburcu: upgrade from 0.5.2 to 0.5.4
d08d843 mdadm: upgrade from 3.1.4 to the latest version 3.2.1
e6ca7cc preferred-xorg-versions.inc: update libxfixes, util-macros, xorg-cf-files
87ad1ed util-macros: upgrade from 1.11.0 to 1.13.0
59bf813 libxfixes: upgrade from 4.0.5 to the latest version 5.0
eb0deae qemu: disable sdl for target build
8e7f1b4 Control over when package init scripts are run
46197c4 modutils-initscripts: fix wrong order of module loading happening in udev
679a4b2 jpeg: Upgrade to 8c (from 8b)
fbca2e9 libgpg-error: Upgrade to 1.10 (from 1.9)
d952463 consolekit: Upgrade to 0.4.4 (from 0.4.3)
7849a88 avahi: Upgrade to 0.6.30 (from 0.6.28)
9a6e635 tasks: Upgrade to 0.19 (from 0.18)
b1c6f70 slang: Fix host contamination issue
37ac9a0 scripts/oe-setup-builddir: Fix up OE-Core/Poky mismatch for now (and fix permissions)
8d40582 Rename poky-image.bbclass to core-image.bbclass
fa8b2c8 Rename poky-extract-sdk to runqemu-extract-sdk
e9b17e3 Rename poky-image-* -> core-image-* and task-poky-* -> task-core-*
b3d84fb Replace POKYBASE with COREBASE
c1f79ab Rename poky-qemu to runqemu
6d49cb5 Rename poky-init-build-env to oe-init-build-env
a891299 README: Update to reflect what Poky is today
215898b sanity.bbclass: Fixup Poky references
d3c4fa4 lib/oe/distro_check.py: Fixup Poky references
0a9b84a rpm: Refer to the yoctoproject.org bugzilla
65f4b65 Further cleanup of various poky references
91d72e6 scripts/runqemu.README: Clean this up to accurately reflect what the runqemu command now does
6b46c2a runqemu-extra-sdk: Update function usage to clearly reflect its meaning
01f83c9 Rename ~/.poky-sdk/ temp workdir to ~/.runqemu-sdk/
b9fbc85 bitbake.conf: Only very weakly assign SRCREV to the default of INVALID
1288b8d bitbake.conf: Set MAINTAINER to a non-poky default of the OE-Core mailing list
c74a688 bitbake.conf: Set SDK_VENDOR to -oesdk
7342b41 cronie 1.4.7: fix packaging
aabad28 poky.conf: Set SDK_VENDOR
765d380 meta-yocto: Catch up with OE-Core renaming
949645e sanity.conf: Rename POKY_CONF_VERSION -> LOCALCONF_VERSION and make sanity versions weak assignment allowing the distro to override
6af27de adt_installer_internal: Remove hardcoded Poky references
fc2cee5 Rename poky-lsb override to linuxstdbase
aec20af Rename poky-image.bbclass to core-image.bbclass
972ebfe POKY_QEMU_IFUP -> RUNQEMU_IFUP
2c2e617 Rename the remaining poky-* scripts to oe-* or runqemu-*
0b70e29 Catch task-poky -> task-core renaming
5164821 Fix git.pokylinux.org urls to git.yoctoproject.org
b8a0717 .gitignore: Drop stale entries
d889a75 distro_tracking_fields.inc: Replace Poky with OE-Core
3ba0b82 poky-setup-builddir: Rename to oe-setup-builddir and clean up POKY variable references
e7126c1 Replace POKY_KVM_WIKI -> YOCTO_KVM_WIKI
7469527 POKY_NATIVE_SYSROOT -> OECORE_NATIVE_SYSROOT
0441fe2 oe-init-build-env: Fix typo
6e95cb2 Rename poky-image-* -> core-image-* and task-poky-* -> task-core-*
4d609d5 Replace POKYBASE with COREBASE
8ceb769 Remove obsolete scripts/classes
08127d4 Rename poky-qemu to runqemu
46d0cc3 Rename poky-init-build-env to oe-init-build-env
211ae3b initscripts: Drop outdated machine specific files
cd5e586 kernel-rt: use correct branch names and new git SRC_REV format
c437113 bitbake/fetch2: Fix the problems introduced by the git fetcher AUTOREV fix
f3ade6b clutter-1.6: update to 1.6.14
059539f clutter-1.6: drop no longer required patch
3bd2c0a json-glib: new recipe required by clutter
af7f734 linux-yocto-stable: Update repository url
2d2d072 bitbake/fetch2/git: Fix a bug where AUTOREV and the git fetcher interact badly
029635e kernel: Remove debug statements
ae440cd kernel: Copy over bzImage to sysroots during install
903806a psmisc: Upgrade from 22.2 to 22.13
1d3d3aa e2fsprogs: Upgrade from 1.41.12 to 1.41.14
06e3d5a libidn: upgrade from 1.19 to 1.20
203da6b distro tracking: reassign Kevin's recipe
a2545c4 mesa: cleanup and remove the old version 7.5, 7.7 and 7.8.2
a0c0e89 mesa 7.10.2: add python-native dependency
e3f62f3 python-dir.bbclass: define default PYTHON_BASEVERSION
0864632 x11vnc: fix SRC_URI
2ee0be8 bitbake: correct typo in ??= documentation
9fb4c74 jpeg: add link libjpeg.so.62 for LSB library test
c510611 slang: Update to 2.2.4
72ff136 netbase: add /etc/network/interfaces file for qemumips & qemuppc
409544d netbase: automatically bring up eth0
f86b7c5 documentation/kernel-manual/kernel-how-to.xml: replaced 'pokylinux' with 'yoctoproject'
3b94eb0 documentation/adt-manual/adt-eclipse.xml: Fixed URL with pokylinux.org
c904c99 documentation/adt-manual/adt-prepare.xml: Fixed URL for nightly builds
fdf077d rsync: upgrade to version 3.0.8
47cb36d openssl: upgrade to version 0.9.8r
2f3c46d libxml2: upgrade to version 2.7.8
305fad5 libexif: upgrade to 0.6.20
feeb3a4 poky-lsb: Add "largefile" feature for LSB distro.
7b59ebe gcc: Add "--enable-clocale=gnu" option for LSB.
7a96ee0 task-poky-lsb.bb:Add locale resoures which is needed by LSB Test Suite
eed3bee qemu: Fix the qemu GL application start failure.
b0ac556 pango: upgrade from 1.28.3 to 1.28.4
009f88f xf86-input-mouse: upgrade from 1.6 to 1.7
c00288e mesa: upgrade to 7.10.2
d890254 libdrm: upgrade from 2.4.23 to 2.4.25
d02a174 libnewt: fix parallel-make issue
86549fa clutter-1.6: fix tarball md5sum and add json-glib to dependencies
77d2110 xkbcomp: upgrade from 1.2.0 to 1.2.1
010cef6 xf86-input-keyboard: upgrade from 1.5.0 to 1.6.0
15d2144 evieext: upgrade from 1.1.0 to 1.1.1
256c40a xf86-input-vmmouse: upgrade from 12.6.10 to 12.7.0
9145e46 xf86-input-synaptics: upgrade from 1.3.0 to 1.4.0
ce38d36 distro_tracking_fields.inc: update the info for the following recipes
3d43974 preferred-xorg-versions.inc: update libxt, libxi, fixesproto, xproto, xextproto and libpciaccess
481e3cd cronie: upgrade from 1.4.6 to the latest version 1.4.7
f4f2790 libpciaccess: upgrade from 0.12.0 to the latest version 0.12.1
9522cfb xextproto: upgrade from 7.1.2 to the latest version 7.2.0
0c61863 gnome-doc-utils: upgrade from 0.20.4 to the latest version 0.20.5
dce8dc3 xproto: upgrade from 7.0.20 to the latest version 7.0.21
ee20b38 fixesproto: upgrade from 4.1.2 to the latest version 5.0
040e23f libxi: upgrade from 1.4.0 to the latest version 1.4.2
fc1c209 libxt: update from 1.0.9 to the latest version 1.1.1
7fafbe2 oprofileui: upgrade to latest git version
351df14 polkit-gnome: Upgrade to 0.101 (from 0.99)
d261874 xz: Upgrade to 5.0.2 (from 5.0.0)
73c8ac9 libcanberry: Upgrade to 0.28 (from 0.26)
8ca68f6 x11perf: Upgrade to 1.5.3 (from 1.5.2)
91ffe00 libsoup-2.4: Upgrade to 2.32.2 (from 2.32.1)
298f1ba documentation/adt-manual/adt-eclipse.xml: Fixed link to autotools.
0e5558a distro_tracking_fields: update for gstreamer, gupnp, telepathy-glib, etc
3abaef5 gupnp: upgrade to version 0.16.0
8d93f7a gssdp: upgrade to version 0.10.0
327c327 telepathy-mission-control: upgrade to version 5.7.9
77546a8 telepathy-idle: upgrade to version 0.1.8
6b788b9 telepathy-glib: upgrade to version 0.14.3
d3c2bcd alsa-lib: upgrade to version 1.0.24.1
6694c35 ofono: upgrade to version 0.45
84e6537 gst-plugins-ugly: upgrade to version 0.10.17
91006c4 gst-plugins-bad: upgrade to version 0.10.21
48b5f10 gst-plugins-good: upgrade to version 0.10.28
4983494 gst-plugins-base: upgrade to version 0.10.32
687f34c gstreamer: upgrade to vesion 0.10.32
6bf6aec gst-plugins-good: add dependency on libsoup-2.4
da2852b README.hardware: automate boot process for router station pro
31bc011 qt4-x11-free: add virtual/libgl for opengl dependency
10a52e0 clutter-1.6: fix SRC_URI[md5sum]
a52663e eglibc-package.inc: Add eglibc-binaries, eglibc-localedatas, eglibc-gconvs and eglibc-charmps to variable PACKAGE
a67707b Allow JFFS2 image options to be overridden
c879c63 autotools: Pass --disable-silent-rules to configure
90f803d ncurses: Remove unwanted package config from previous .inc merge
55d60b1 external-python-tarball: Drop FAKEROOT usage in favour of explicit options to tar
14f4918 bitbake.conf: Drop FAKEROOT variable since its replaced with FAKEROOTENV
309e6f7 bitbake.conf: fix PACKAGE_ARCH[vardepsexclude]
b0bf7ef keymaps: Fix MACHINE -> MACHINE_ARCH
2588569 ncurses: Update to 5.9
5a780eb Update trace-cmd and kernelshark distro_tracking
c9028da Update distro-tracking-fields.inc for recent qt4 changes
a76e81b lsb: fix lic_files_chksum
576de81 distro tracking update
7850838 liburi-perl: update to 1.58
4344df2 chkconfig: Update to 1.3.51
0f673c7 mc: update to version 4.7.5.1
17a6d70 gthumb: update to 2.12.2
f70c25c qmmp: update to version 0.5.0
67a6799 directfb: Update to 1.4.12
7576eba createrepo: Update to 0.9.9
7ddc746 sstate: ensure an ordered mapping between SSTATETASKS and SSTATETASKNAMES
e5a40cd qt4: security advisory - blacklist fraudulent comodo certificates
ea738ee qt4: replace 4.7.1 with version 4.7.2
21f483a documentation/yocto-project-qs/Makefile: Updated Makefile to include PDF in tar
da83cea documentation/kernel-manual/Makefile: Updated Makefile so PDF is in tarball
6a0d070 documentation/poky-ref-manual/ref-bitbake.xml: style tags updated
1cd9b0c documentation/poky-ref-manual/ref-bitbake.xml: BitBake parsing section update
e3618e1 documentation/poky-ref-manual/ref-variables.xml: added SSTATE_DIR variable
cb2a3e3 documentation/poky-ref-manual/ref-structure.xml: Edits for Rel 1.0
72d7e27 documentation/poky-ref-manual/ref-classes.xml: tag updates
bed5b96 documentation/poky-ref-manual/ref-classes.xml: re-write of autotooled packages
efaf5d0 documentation/poky-ref-manual/ref-classes.xml: Fix to <filename> tag
5bbffff document/poky-ref-manual/ref-classes.xml: removed <function> tag
da283ba documentation/poky-ref-manual/ref-bitbake.xml: type fixed
4ba1991 documentation/poky-ref-manual/ref-bitbake.xml: Grammar fix
3e56fd1 documentation/poky-ref-manual/ref-bitbake.xml: removed 'varname' style
2981801 documentation/poky-ref-manual/ref-structure.xml: bitbake section updated
f720dea documentation/poky-ref-manual/development.xml: OProfileUI section updated
108990f documentation/poky-ref-manual/development.xml: Corrected command syntax
a771ef7 documentation/adt-manual/Makefile: Added PDF file to the tarball
e5e5ff3 elfutils: remove unused variables to fix compilation with GCC 4.6
537e485 desktop-file-utils: Add SRC_URI checksums
44dabb2 distrodata.bbclass: Merge the get_pkg_info.log into checkpkg.csv
c5e6ef2 documentation/adt-manual/adt-eclipse.xml: Updated repo URL for Eclipse Plug-in
20c9be4 LSB_Setup.sh: Add function to install all test packages
5983fe1 gst-meta-base: Support http/https remote streams
f67fe6f xdg-utils: add xdg-utils to pass the lsb test
751f42b image.bbclass: Disable ldconfig-native when using uclibc
889551a native, nativesdk, crosssdk: reset TARGET_FPU
f897723 ldconfig-native-2.12.1: newer recipe with eglibc sources
1418414 libxcb: fix for broken library link in the image
d0adbfd image.bbclass: make execution ldconfig verbose
76185eb xproto: Fix configure commandline option whitespace
bfcd5d9 docbook-dsssl-stylesheets-native: run install-catalog only during do_populate_sysroot
733c9b9 openjade-native: run install-catalog only during do_populate_sysroot
67f3496 docbook-sgml-dtd-native.inc: run install-catalog only during do_populate_sysroot
e659426 Revert "elfutils: fix builds with gcc 4.6"
a0933f0 qemu-nativesdk: fix do_configure
22c7a3a qemuppc: add libqtopengl4 for ppc
6cd2074 documentation/poky-ref-manual/development.xml: Edits for Eclipse and Anjuta
5215126 documentation/poky-ref-manual/poky-ref-manual.xml: Updated rev-history table
de3e3e2 bitbake.conf: fix MACHINE_ARCH
b2d4c65 linux-yocto/meta: cleanup and streamline kernel meta data
0ac1c27 linux-yocto/crownbay: update configuration
b77e9b6 db: Switch to patchdir rather than applying in do_configure
4febd37 patch.bbclass: allow importing patches into other dirs
9b2210c xserver-xf86: explicitly disable fop document generation
07dfc5c openjade: fix build with GCC 4.6
9a45389 libx11: disable building of specs
9487fbe xorg-[lib-common|proto-common]: disable use of fop document generation
115ffb9 libx11: add missing SRC_URI hashes
33b4076 python-native: add missing SRC_URI hashes
d00a02d elfutils: fix builds with gcc 4.6
1cf0664 libexif_0.6.16.bb: inherit gettext class instead of adding gettext to DEPENDS directly
2e60e62 libcap.inc: Pass SYSTEM_HEADERS to make
182b7a2 gnutls.inc: inherit gettext class instead of adding gettext to DEPENDS directly
1f0e574 gstreamer_0.10.31.bb: inherit gettext class instead of adding gettext to DEPENDS directly
16544ab3 util-macros_1.11.0.bb: inherit gettext class instead of adding gettext to DEPENDS directly
5c494ec libxcb.inc: Replace XCBPROTO_XCBPYTHONDIR to point to staging area
5f12582 clutter.inc: inherit gettext class instead of adding gettext to DEPENDS directly
55a8009 libgpg-error: inherit gettext class instead of adding gettext to DEPENDS directly
7bb111d popt_1.16.bb: inherit gettext class instead of adding gettext to DEPENDS directly
b05845f libgdata_0.7.1.bb: inherit gettext class instead of adding gettext to DEPENDS directly
d73500f gdk-pixbuf_2.22.1.bb: inherit gettext class instead of adding gettext to DEPENDS directly
f9625d2 xz_5.0.0.bb: inherit gettext class instead of adding gettext to DEPENDS directly
a48b13c libzypp_git.bb: inherit gettext class instead of adding gettext to DEPENDS directly
f8fa83c libuser_0.57.1.bb: inherit gettext class instead of adding gettext to DEPENDS directly
6bcb66d chkconfig_1.3.49.bb: inherit gettext class instead of adding gettext to DEPENDS directly
0a1b99b sed: inherit gettext class instead of adding gettext to DEPENDS directly
be9d2ae xorg-proto: inherit gettext class instead of adding gettext to DEPENDS directly
1413f2b gcc-runtime_4.5.1.bb: Do not filter out -feliminate-dwarf2-dups
59565d7 flex.inc: inherit gettext class instead of adding gettext to DEPENDS directly
067d8ac e2fsprogs.inc: inherit gettext class instead of adding gettext to DEPENDS directly
438ec9c liboil_0.3.17.bb: Enable x86_64 unaligned memory access
45e0eab libpam_1.1.3.bb: Fix compilation on uclibc when innetgr is absent
6de1c9a diffstat_1.54.bb: inherit gettext class instead of adding gettext to DEPENDS directly
aa0772c bison: Make compilable on uclibc
69f1a6d binutils: Use arm*-*-linux-uclibceabi instead of arm*-*-linux-uclibcgnueabi
08a6cdc gettext_0.17.bb: Use linux-uclibceabi instead of linux-uclibcgnueabi
e4ccab9 coreutils_6.9.bb: Remove gettext from DEPENDS
6cbb559 console-tools_0.3.2.bb: inherit gettext
cbffd7f telepathy-glib_0.13.6.bb: inherit gettext class instead of adding gettext to DEPENDS directly
e172889 galago: inherit gettext class instead of adding gettext to DEPENDS directly
b31f9f2 avahi.inc: Conditionalize RECOMMENDS by using overrides
3909b76 recipes: Use -uclibceabi instead of -uclibcgnueabi
434f139 conf/distro/poky.conf: Use -uclibceabi instead of -uclibgnuceabi
023637d site: Add mips-linux-uclibc site file and add to x86_64-linux-uclibc
511abe9 classes: Use linux-uclibceabi instead of linux-uclibgnuceabi for os portion of triplet
c888325 sanity.bbclass: Use SSTATE_MANIFESTS instead of hard coding sstate-control
9f20f5e qemu-nativesdk: Refresh glflags patch
bcc817e documentation/yocto-project-qs/yocto-project-qs.xml: Edits plus Matt Madison note regarding older host systems
4a38ab5 documentation/yocto-project-qs/yocto-project-qs.xml: cleaned out another "YP"
0e16551 documentation/bsp-guide/Makefile: Updated to include PDF in tarball
cb13b57 documentation/poky-ref-manual/usingpoky.xml: [BUGID# 929] - Note added warning about switching up GPL versions
9b046f6 qemu: Add dropped glflags.patch
a9441d4 qemu.inc: Add sh4,sh4eb,mips64,mips64el targets
6714db4 scripts/poky-qemu-internal: call stty sane before exit
7e6fb92 README.hardware: remove u-boot flashing instructions for mpc8315e-rdb
37f3ef2 Workaround for Global C++ Constructor problem on ARM
41efbe1 Fix integration of zypper and sat-solver
133f7e8 Fix sat-solver & RPM5 integration issue
2ac89c2 linux-yocto: update base to 2.6.37.6
cddd882 linux-yocto/qemux86-64: enable profiling and latency
0b420da qemu-config: Enable for qemumips/qemuppc
db29001 gthumb: Add missing DEPENDS on gst-plugins-base as otherwise gstreamer isn't enabled
2b70d0c bitbake/runqueue.py: Ensure fakeroot env variables make it to the child process
43fe018 poky.conf: Specify QEMU_TARGETS explicitly for now
c564fb0 runqueue: simplify fakeroot environment handling
31521d7 More 'is' fixups
67fac77 Fix more incorrect usages of 'is'
626b96e codeparser: use ==, not 'is' to compare strings
af0163c bb.siggen: import os
8fae39c utils: fix typo in lockfile
d38968c lockfile: ask for forgiveness, not permission
77513ee goggle: exit quietly on ^C
6f4fbfe clutter-box2d: add version 0.10.0 for use with clutter 1.6
71e8cc5 clutter-gtk: remove duplicate gtk+ DEPENDS entry
077f96a clutter-gst: add 1.3.6 for use with clutter 1.6
c35a59b clutter: add 1.6.8
7af9e33 documentation/yocto-project-qs/yocto-project-qs.xml: removed (YP) acronym
b4268c0 bitbake/runqueue: fix clash when setscene & real tasks done in same build
68baef9 package_rpm: Ensure we take the sstate shared lockfile in the place we write files
2f0c06a sstate: Add support for taking shared lockfiles
e7f52f8 image.bbclass: Remove uneeded do_populate_sysroot requirement for images
89fee17 image.bbclass: Add dependencies on native versions of update-alternatives and updated-rc.d explicitly
b5e03a1 base/kernel/image.bbclass: Clean up do_deploy ordering to ensure it just happens before a build completes
4d04155 bitbake.conf: Disable -feliminate-dwarf2-dups flag until it works with prelink and other issues are resolved
9281315 linux-yocto/meta: fix SRCREV
e41671e Revert "bitbake/gcc: Enable a shared common source tree"
bf799e3 poky.conf: Add missing POKY_EXTRA_RDEPENDS qemu changes for mipc/ppc
5748758 qemu: Fix file rename from version upgrade
12b163d bitbake/gcc: Enable a shared common source tree
afd2859 documentation/adt-manual/adt-prepare.xml: Added instruction for building ADT tarball
0cb23cb poky.conf: Bump to post 1.0 version
38dec4f documentation/yocto-project-qs/yocto-project-qs.xml: [BUGID# 931] - Removed Fedora 14 bitbake native note
b187d59 documentation/yocto-project-qs/yocto-project-qs.xml: Bug reference added courtesy Colin Walters
fee7f56 README.hardware: add Freescale MPC8315E-RDB; other minor tweaks
7c62b36a qemu: Upgrade 0.13.0 -> 0.14.0
fcb1b5a gnutls: add BBCLASSEXTEND = native
74e58bb linux-yocto: update to 2.6.37.5
fd42d1c image_types.bbclass: Drop IMAGE_EXTRA_OPTION in favour of the more standard EXTRA_IMAGECMD
ed41be0 bitbake.conf/image.bbclass: Move image type information into image_types.bbclass
f853923 base-files: Remove sysctl.conf file. This is now provided by the procpc recipe.
adac5a6 image.bbclass: Move ROOTFS_SIZE into runimagecmd() function
b94de9a image.bbclass: Improve readability of the image generation code
25a6e5f sstate: use only unique set of SSTATETASK
c106bb6 kernel.bbclass: blacklist 'kernel-misc' from kernel-modules
b6b9f7a gcc-runtime_4.5.1.bb: Fix ICE in gcc-runtime with -feliminate-dwarf2-dups
54d46cb machine/include/tune-atom.inc: Remove FULL_OPTIMIZATION_pn-gtk+
5ea06dc bitbake.conf: Prune global OPTIMIZATION flags
a93b0e7 coreutils: Switch to disabling gmp support
36f899f checksums.ini: Delete
158de41 Various: Switch to SOURCEFORGE_MIRROR
d56080f Various: Update KERNELORG_MIRROR for consistency
4f85b60 Various: Switch to KERNELORG_MIRROR
bc7967f Various: Switch to using GNU_MIRROR
92e8ef0 Various: Switch to GNOME_MIRROR
081adf9 net-tools: Switch to using DEBIAN_MIRROR
0af5e13 perl-native_5.12.2.bb: Fix compliation on ubuntu 11.04-alpha
112f153 scripts/poky-qemu-internal: Add rw to KERNCMDLINE for non nfs boots as well
3b0fa0f scripts/poky-qemu-internal: Pass -m <mem_size> always on commandline
7eab4ae lib/oe/patch.py: Cosmetic change to avoid bitbake warning
354d85d oe.utils: add inherits (sync from OE)
c9d1e20 oe.path: sync up with current OE
21a3b6d oe.patch: add missing imports
fb02ca3 oe.utils: add bb, bb.data imports
dd3a1d3 Shift a few env bits into scripts/bitbake
99aaf15 scripts/bitbake: add -g/--graphviz to NO_BUILD_OPTS
bfd7283 native: empty PACKAGES_DYNAMIC the way we do PACKAGES
d5f96d2 poky-init-build-env: unbork for zsh
2661565 bitbake.conf: replace unused/broken E_CVS/E_URI with E_MIRROR/E_SVN used in OE
a295a04 bitbake.conf/tune files: Adjust PACKAGE_EXTEA_ARCHS
3b49416 kernel/bbclass: rework kernel and module classes to allow for building out-of-tree modules
ab44c22 msmtp: add link sendmail for lsb command check
38a5f61 qemu: enabling the alsa driver needs alsa in DEPENDS, add it
34c644e alsa-lib: extend to -native for qemu-native
aeaa356 xserver-nodm-init: Mark as machine specific after recent rootless X changes
273cfec sstate: Ensure a clean removes setscene stamps as well as the main task stamps
6243230 - documentation/poky-ref-manual: Notes added for non-GPLv3 builds
c029855 qemu: make warning messages consistent in format
dd2f9f6 qemu: warn user if nVidia libGL is detected (leads to qemu segfault)
94786e1 db: Fix path of arm-thumb patch
debcc6c initscripts: Make umountfs a bit more robust, bump PR
07f7dc4 nfs-utils: fix "sh: bad number" error on start/stop of nfsserver
c52c66b busybox: enable unmount all feature
0a209fe documentation/yocto-project-qs/yocto-project-qs.xml: Note added about proxy
a11c6b2 documentation/yocto-project-qs/yocto-project-qs.xml: Added references to FAQs
8bfcc85 documentation/yocto-project-qs/yocto-project-qs.xml: 1.0 edits applied to examples
dcf0091 documentation/yocto-project-qs/style.css: Updated note text color
54060da documentation/yocto-project-qs/style.css: Updated styles
d3e1e52 - documentation/yocto-project-qs/yocto-project-qs.xml: added groff package
16e1f10 sstate.bbclass: Turn absolute symbolic links into relative ones for sstate packages
d2658c8 README.hardware: update for 1.0 release
cb5e513 documentation/poky-ref-manual/faq.xml: Added entry about proxy and firewall
a0f3430 documentation/poky-ref-manual/extendpoky.xml: Formfactor path corrected
f228642 documentation/poky-ref-manual/extendpoky.xml: small edits
8e05cca documentation/poky-ref-manual/usingpoky.xml: Small edits
d3491aa documentation/poky-ref-manual/faq.xml: Added three FAQ entries
2a144f8 documentation/poky-ref-manual/usingpoky.xml: More BitBake changes
fa272d0 documentation/poky-ref-manual/usingpoky.xml: grammar fix and BitBake fix
a415263 documentation/poky-ref-manual/introduction.xml: Wording and release update
28a9824 documentation/poky-ref-manual/introduction.xml: Removed link
58280a6 documentation/poky-ref-manual/faq.xml: Spell Check
98d2039 documentation/poky-ref-manual/poky-ref-manual.xml: Updated title page
a8927a0 documentation/poky-ref-manual/style.css: Updated to match other manuals
885415f documentation/poky-ref-manual/extendpoky.xml: Spell check
5622f54 - documentation/poky-ref-manual/extendpoky.xml: Added text for choosing server
75c5760 bitbake.conf: Increase image overhead factor to account for rpm/zypper database size
e235357 sanity.bbclass: check for duplicates in PACKAGE_ARCHS
aa51d03 documentation/kernel-manual/kernel-how-to.xml: Spell checked
b631f48 documentation/kernel-manual/kernel-manual.xml: Updated the title page
eab4c5c documentation/bsp-guide/bsp.xml: Spell check
57ef2ef documentation/bsp-guide/style.css: Updated Style Sheet
609e497 documentation/bsp-guide/bsp-guide.xml: Updated Title Page
f85645d documentation/bsp-guide/figures/bsp-title.png: Updated PNG file for title
4957992 util-linux: Setup for GPLv2 Recipe
21d5d3c coreutils-6.9: fix man page building for the gplv2 recipe
97d3dde toolchain-scripts.bbclass: Added --sysroot to CPPFLAGS.
34869c6 slang: specify --x-includes to pass qa sanity check
2a3ff59 bitbake.conf: add POKYBASE to BB_HASHBASE_WHITELIST
3072c24 gettext: Upgrade GPLv2 version to 0.16.1
490bbfb poky.conf: remove gnome-common from WHITELIST_GPLV3
59b059d poky.conf: add additional Libraries to the LGPLv2 Whitelist
7958e40 poky-image-basic: remove POKY_BASE_INSTALL
8c9385c extended tasks: move binutils from basic to lsb
caf671e gnome-vfs: Force acl to be disabled since its not a dependency
a440c63 ADT: bug fix for nameing and do_patch sequence
06c755c gnu-config: Use perl from the environment, not a hardcoded path
7e2d385 gtk+: remove per-machine gtk+ FULL_OPTIMIZATION in favor of tune-atom.inc
3526000 atom-pc: work around gcc bug for core2
e657801 m4: bring back GPLv2 version 1.4.9 of m4 recipe
9ee33a8 bison: bring back GPLv2 version 2.3 of bison recipe
ac9b83e documentation/adt-manual/adt-manual.xml: Updated front matter
d2c0ce4 documentation/adt-manual/adt-eclipse.xml: Re-inserted Autotools plug-in requirement.
3046a96 sanity: detect if bitbake wrapper is not being used or pseudo is broken
275241e sat-solver: Fix solution DB generation and general cleanup
129c624 openjade-native: Run make depend to ensure dependencies are correct and avoid parallel make failures
7517529 package.bbclass: Fix missing debug src files
f8ba275 rpm: Disable repackage on upgrade/erasure by default
4397400 sat-solver: Add workaround for RPM 5 db construction
5485746 sat-solver: uprev to the latest version
2a852d0 libzypp: Fix release query
ff03a51 rootfs_rpm.bbclass: Add additional system configuration to RPM space
b26640f bitbake docs: use dblatex to build the pdf bitbake manual
b65a336 oprofileui: upgrade to latest git version.
0c6a50b poky-image-basic: add ssh-server-openssh to IMAGE_FEATURES
e004e51 poky-image-lsb: add ssh-server-openssh to IMAGE_FEATURES
3201ab7 poky-image.bbclass: add ssh-server-dropbear to SATO_IMAGE_FEATURES
3f1e50b poky-image.bbclass: add new IMAGE_FEATURES for ssh servers
6b088d6 task-poky-ssh-openssh: new task recipe for openssh ssh
0c62497 task-poky-ssh-dropbear: new task recipe for dropbear ssh
849c862 task-base, task-poky-basic, task-poky: Remove hard-coded references to dropbear
a1f722a slang: export INST_LIB_DIR to fix compile problems
2bbeab2 formfactor: Assume HAVE_TOUCHSCREEN=0
9a9ebb0 documentation/adt-manual/adt-eclipse.xml: Specified qemu options outside of brackets.
082adfc documentation/adt-manual/adt-eclipse.xml: Removed Autotools plug-in requirement
d9775d5 documentation/adt-manual/adt-command.xml: Initial draft of command line chapter
f30b84c documentation/adt-manual/adt-eclipse.xml: Initial draft for Eclipse chapter.
ff51a34 documentation/adt-manual/adt-package.xml: Initial file
2f45421 documentation/adt-manual/adt-prepare.xml: Initial draft of preparation chapter
b9217b5 documentation/adt-manual/adt-intro.xml: Initial text
8ff09c0 documentation/adt-manual/style.css: Changed PNG file in the title page style
4a8b398 documentation/adt-manual: cleaned up labels in chapter files
a875b2e documentation/adt-manual/Makefile: Initial Makefile
3bc2668 documentation/adt-manual/adt-manual.xml: Initial file
8605fee documentation/adt-manual/figures: Added title PNG file, deleted kernel title PNG file.
3258234 documentation/adt-manual: New file structure for ADT Manual
a4c6bcb matchbox-desktop: add configure event handler to fix bug 658
9a1ee6d send-pull-request: Fetch TO email address from git config if specified
c6d6e49 u-boot.inc: allow variable make targets
bd161f7 tune-atom.inc: Remove duplicate TARGET_ARCH entry to avoid ipk rootfs issues as temp workaround for problems pending a proper fix
e70f689 package-index.bb: Added missing dependencies.
6b16a5f xserver-nodm-init: add xuser to group audio
ed1cbc9 sstate.bbclass: always delete stamp files in sstate_clean
cbbf658 sstate.bbclass: avoid deleting unrelated stamp files
cc4bf81 task-poky-lsb: Add some packages required by lsb test suite
509364e kernel bbclass: split do_compile into do_compile and do_compile_modules
ae92383 util-linux: move remaining files from files directory to util-linux-2.17.2 for faster lookup
c52c218 util-linux: remove unused files from util-linux-2.17.2 directory
2fd7022 util-linux: remove unused files from files directory
9d9c68e bitbake/runqueue: show correct task name for setscene task failure
4c695db bblayers.conf.sample: include meta-yocto in default layers
50bb373 qemux86-64: Enable latencytop and profiling (temporary)
ff1ab05 own-mirrors.bbclass: Bring own-mirrors.bbclass from oe commit 0ef914b250df46a41348479446214575668943fb
3c54f46 netbase: Upgrade version 4.44 to 4.45
fe3cc9a cairo_1.10.2: Fix DEPENDS to include glib-2.0
de796d5 sanity.bbclass: Fix inverted mmap_min_addr logic
257a9ed Update SRC_URIs to use BPN instead of PN
4f5b57c documentation: Kernel Manual fixes
5ef65bd documentation: BSP Developer's Guide fixes
f11e479 poky-qemu-internal: force oprofile into using timer interrupt mode for qemux86/qemux86-64 for now
1db41d8 adt: fix ppc/powerpcc naming bug
367db42 qemux86-64: set qemux86_64 as package arch name
d578d74 zypper: add machine arch support
764f68c libzypp: add machine arch support
023c43b sat-solver: add machine arch support
7da9f27 bitbake/xmlrpc: only use BBTransport for affected Python versions
e58b3a4 bitbake/bitbake-layers: fix to run with recent changes
ff3e326 bitbake/hob: fix cancel button
3c113f3 bitbake/cooker: don't error in prepareTreeData for unbuildable targets
4817a48 perl: another set of parallel build fixes
43a2d09 openssh: allow the openssh meta package to be empty
84b877b gcc-runtime: Fix dbg files
c180383 package_rpm: Fix rootfs generation
d8a82c2 package.bbclass: Change the debug directory to avoid conflicts
ea99160 linux-yocto: update to 2.6.37.3
08ae53f gst-plugins-good: remove dependency on hal
b369300 autotools.bbclass: Fix automake file race issues
f776bc6 Disable wget server side cache
30dbfde gst-plugins-bad: add missing dependency librsvg
70cd64a gcc/collect2: Added --sysroot support into collect2 in gcc.
10ce85a tinylogin: Fix rotate passwd check logic
2c52b65 gcc-runtime: Ensure that gcc-runtime builds a debug package
360f082 telepathy-python: Fix parallel make issue.
45a5104 distro_tracking_fields.inc: update the info for oprofileui
b8da666 oprofileui: upgrade to the latest version maintained by the Yocto project
5a7466a gcc-configure-runtime.inc: Add immediate evaluation otherwise it ends in circular dependency
0c6595a distutils-base: Only RDEPEND python-core on target packages
1697ae6 debian.bbclass: call auto_libname in reverse sorted AUTO_LIBNAME_PKGS
a54f4b6 python: add generate-manifest-2.6.py script and regen python-2.6-manifest.inc
cbbfbfc gcc-runtime: fix LSB library checks for libstdc++.so.6
4f28cd2 bitbake/fetch2/local: Fix inverted update required logic
fab742b quilt: add autotools inheritance
0a011ca util-macros: fix DEPENDS for nativesdk
a778fb3 bitbake/fetch2: Allow local file:// urls to be found on mirrors
fc1b893 sstate: Ensure the SRCURI fetcher cache is not used for sstate
6030fd7 sanity.bbclass: Check for /proc/sys/vm/mmap_min_addr to be >= 65536
bd32707 sanity.bbclass: some multilib systems have symlink /lib -> /lib64
6360097 poky-default.inc: Change LINUXLIBCVERSION "2.6.36" -> "2.6.37.2"
7b72bbc adt: removed unused repo source and opkg options
8828e75 cpio: Fix the SHA256 Checksum for the src tarball
61125e0 connman: add xuser to the dbus permission list
56e4179 adt: Update to svn r596 to fix symbolic link issues
4f87eef lsb-live image: add lsb-live and lsb-sdk-live image types
7c474dc attr: Added ncurses to depends
f127151 gst-plugins: Added hal to DEPENDS
9ebf8f9d linuxdoc-tools-native: Fix build error with txt documentation
b43e5d3 toolchain-script.bbclass: Added --sysroot to LDFLAGS.
2a285e6 util-macros: add libgpg-error to DEPENDS list
4709af7 lsbsetup: Fix LIC_FILE_CHKSUM
2fc03ae elfutils: add bzip2 to DEPENDS
dc7e00d task-poky-lsb: Remove new eglibc-* packages
ae2896a linux-yocto: update machine configurations
abea71b task-poky-lsb: Add packges needed by LSB Test Suite
f092542 creat-lsb-image: Add some functions for creating a appropriate image to make lsb test
b816034 documentation/kernel-manual: Kernel manual Style changes
cae622c documentation/kernel-manual/figures/kernel-title.png: Updated title graphic
87290a8 x11vnc: fix the endian issue in mips for bug 782
0bc2441 qemu-script: Remove mmap_min_addr check
ed735a4 task-poky-lsb: add python-misc
2140c9d hello-mod: add a module for testing module.bbclass
5c0df11 module: build hostprogs for each module
60ce101 LSB_Setup.sh:Install LSB Test Suite and set lsb test environment
8af3868 distrodata.bbclass: Get git repo tag information
4e1ba86 distro tracking: Updates to Tracking infor for clutter and other changes
5b23b7f meta-yocto: Add layer.conf
b0dec83 meta-yocto: Move files inappropriate to OE-Core from meta
dabd5de Fixup merge error and apply cleanups
bd9b65d rpm: Fix linking error encountered in rpm-native
18420c4 qa.py: Fix a typo when evaluating bitsize
d94abab poky-env-internal: Add FETCH2 enablement
a7d8613 task-poky-lsb: add chkconfig
02b49e3 recipe: add slang from OE
7eccde3 recipe: add newt from OE
b9c46b3 recipe: add chkconfig for LSB command test
9e6b1ac ADT: Bug fix for Suse Linux
e4ca5a0 Add libtool-nativesdk for ADT
1c48f52 gstreamer: install the sound card driver of es1370
72afe30 sato-icon-theme: Explictly use "Sato" as gtk icon theme
7e850ac x11vnc: Fix the start failure
763d783 libpcre: fix the name collision with libc
05d1ac2 bitbake-layers: drop 2.6 from #!, per Joshua Lock
54e1012 fetch, fetch2: Get rid of DeprecationWarning notice
c07a153 build: add missing newline
043b704 build: switch to old cwd handling
78c2b79 insane.bbclass: Fix ELF bitsize comparison
23ecbad kernel: remove explicit bash call in do_menuconfig
4b912a5 screenshot: change the order of LDADD arguments
bc009ed gcc: take out libiberty files from gcc packages
1672546 zypper: add util-linux-uuidgen to RRECOMMENDS
c52f8f4 util-linux: split out uuidgen to a separate package
eccbe89 documentation/bsp-guide/bsp-guide.xml: Updated revision history on title page.
5aa6e52 documentation/bsp-guide/bsp-guide.xml: Updated RP email address
86c7761 - documentation/bsp-guide/figures/bsp-title.png: Updated title graphic
7d4fd5f - documentation/bsp-guide/bsp.xml: Re-write of click-through
07b557f - documentation/poky-ref-manual/resources.xml: Fixed pokylinux URL
bcef6f9 documentation/poky-ref-manual/resources.xml: Text addtions in Links section in Appendix I
b9032a2 - documentation/poky-ref-manual/resources.xml: Fixed pokylinux URL
fa927ab - documentation/poky-ref-manual/faq.xml: Fixed pokylinux.org reference
2206fe6 - documentation/poky-ref-manual/development.xml: Fixed pokylinux.org URL
e20dbfc - documentation/poky-ref-manual/development.xml: Fixed pokylinux URLs
f3818a3 - documentation/poky-ref-manual/introduction.xml: fixed pokylinux.org URL
4a1f8f6 - documentation/poky-ref-manual/introduction.xml: Fixed pokylinux.org URL
74ed1b4 documentation/poky-ref-manual/introduction.xml: [BUGID# 553] - Fixed pokylinux URL
b4d564c documentation/poky-ref-manual/introduction.xml: [BUGID# 553] - Fixed pokylinux.org link in Nightly Build section
2a2e324 documentation/poky-ref-manual/ref-images.xml: Update to Images Appendix
fb7955b sqlite3: Update version 3.7.3 -> 3.7.5
ea63409 qemu-0.13.0: Add patch to avoid mmap_min_addr
9a448fb linux-libc-headers_2.6.37.2.bb: Add checksums
d868a6a lib/oe/path.py: Use bb.utils.mkdirhier instead of bb.mkdirhier
0f44acf u-boot: remove do_install from u-boot.inc
cad40f4 ADT: Fix several bugs for adt installer
f3a482b shadow: upgrade to 4.1.4.3 to fix security vulnerability
0e1f8c2 ncurses: Change ncurses patch SRC_URI location
1044dad attr: Change SRC_URI to a correct location
f8ca238 base/utility-tasks.bbclass: Drop do_setscene and do_rebuild
dfc6cce distro_tracking_fields.inc: add transfig and linuxdoc-tools recipes
a3ce87b distro_tracking: update for newer packages added
aa2aa9c populate_sdk_rpm.bbclass: Add the necessary solvedb lock
1b08a7e bitbake/cache/runqueue.py: Move workload for recipe parsing to the child process
d5e12a1 task-poky-lsb: libqtopenqgl4 should be for qemux86 and atom-pc only
5659f96 linux-yocto: add crownbay BSP infrastructure
136ba6a Fixing type: license.bbclass
4e779e8 Fix to the libtool LICENSE field: libtool.inc
d041ab3 Fixing my bad license parsing: license.bbclass
00dee01 libxml-parser-perl: remove FILES_${PN}
58b56fe task-poky-lsb: add necessary packages name
4a1e2b1 prelink: Add missing macro.prelink file
3c0522e [BUG:650] Fix LICENSE parsing: license.bblcass
16b8f96 linuxdoc-tools-native: disable doc builds requriing latex and dvips
7943338 file: add wrapper to file-native
9c63e3f utils.bbclass: add new wrapper script
73553e7 rpm: Fix rpm-dbg package split
6c6d4f4 rpm: Fix rpm usage of prelink on the target
08c8f7b rootfs_rpm: Fix rootfs generation using RPM packages
a157aab linux-yocto: update to 2.6.37.2
7738e86 bitbake/hob: only show one progress dialog when changing machine
3edadc9 package.bbclass: Rewrite package_do_filedeps() to reduce the amount of subprocesses created and improve speed
e26e8ea conf/machine: Use linux-libc-headers instead of linux-libc-headers-yocto
6ec769f linux-libc-headers: Update to 2.6.37.2
b40b193 package.bbclass: Fix debug sources directory creation to reference the target system
40ea19d package.bbclass: Refactor split and strip function
16102e1 Revise stripping and splitting of debug information
2d87d52 poky-image-lsb-sdk.bb: add image for LSB SDK Build
9166b9e bitbake/utils.py: Only try and add read access to a file if we don't have it
b931aaa documentation/yocto-project-qs/yocto-project-qs.xml: Added Copyright dates
f6fdcb6 documentation/kernel-manual/kernel-manual.xml: Updated copyright date
efab5b1 documentation/bsp-guide/bsp-guide.xml: Updated copyright
fa07928 documentation/poky-ref-manual/poky-ref-manual.xml: updated copyright date
020967e Emenlow Removal from Poky Core: meta-emenlow
0897b00 poky-qemu: handle cases where an nfs directory contains -image-
1cf7d6c libuser: enable documentation
d7d53a5 linuxdoc-tools-native: new recipe v0.99.6
fa1e7d5 package.bbclass: Ensure dependency version information is preserved
2069a29 bitbake/utils.py: Allow join_deps to return a list that isn't comman separated
0d0279a package.bbclass: Use hard link for package split instead of copy
aba80f5 dropbear: add SRC_URI checksums
92d5e6c bitbake/codeparser: fix raising of ShellSyntaxError
0b17cbc package.bbclass: Unbreak per file dependencies and blacklist doc packages
2f6b66b gtk+: disable build of faq and tutorial docs
efce51e Suppress useless warnings during udev startup
9eb9125 perl: import parallel build fixes from upstream git tree
0023e32 poky-qemu: Update -sdk image name due to recent change to sato-sdk
2052224 poky-setup-builddir: Update references to the manual
08c7a59 bitbake/cache: bump cache version after recent changes
f258ced bitbake/progress: make progress dialog modal for parent window
6dbceb0 bitbake: Add new UI hob, a prototype Gtk+ GUI for creating images
c2814ca bitbake/cooker: don't drop possible_world ref count
fb62c54 bitbake/progress: add method to pulse the progress bar
7f8aa69 bitbake/crumbs: update documentation header
b14cda6 bitbake/event: fix some whitespace issues
9b43eaf bitbake: introduce crumbs.TaskListModel a gtk.ListStore subclass
a13304e bitbake/[cooker|cache]: cache summary, license and group. Add to targets tree
3c1a3b0 bitbake/cooker: reduce code duplication
dcfc5ae bitbake/cooker: add generateTargetsTree method
3939a21 bitbake: implement command to find configuration files for a config variable
1b3eb0c bitbake: implement command to get all possible targets and their dependencies
920c402 bitbake/cache: store a list of inherited files in the cache
6d261a5 Ensure Bash is used when spawning terminals
edd64c7 bitbake/server/none: fix getEvent() to return events
febb7f2 bitbake/server/none: remove leftover XMLRPC bits from none server
c6406a0 poky-lsb.conf: remove OVERRIDES
982955e mtd-utils: Set the revision to use explicitly else failures occur with BB_NO_NETWORK
5a8ffee poky.conf: Weakly set PREMIRRORS
33fbf0f poky-lsb.conf: Add DISTROOVERRIDES variable for poky
404afff bitbake.conf: Add DISTROOVERRIDES variable
e98c515 xserver-nodm-init: add rootless-x support
8d1847a xf86-video-intel: add config option to support rootless X
0697f34 documentation/poky-ref-manual/faq.xml: [BUGID# 628] - Added new question for Python 2.6 requirement.
92de0ed documentation/yocto-project-qs/yocto-project-qs.xml: [BUGID# 628] - Added note about Python 2.6 bitbake requirement
adbaae2 distrodata.bbclass: Fix some issues when checking upstream version on sourceforge
6abfee7 linux-yocto: enable audio for selected qemu targets
dca876b openjade-native: run install-catalog from SSTATEPOSTINSTFUNCS
ceb8863 docbook-dsssl-stylesheets-native: run install-catalog from SSTATEPOSTINSTFUNCS
8cc18e6 docbook-sgml-dtd-native.inc: run install-catalog from SSTATEPOSTINSTFUNCS
fa6e786 sstate.bbclass: add SSTATEPOSTINSTFUNCS
91c0b3a bitbake/build.py: Fix TaskFailed parameters
101b599 bitbake/data_smart: Improve Variable expansion error handling
6ea24f0 bitbake/data_smart: Improve the way lazyassignment works
707132c bitbake/fetch2: Ensure SRCREV_pn-PN is checked for a revision when the SRC_URI is unnamed
56a9210 bitbake/cooker: Fix parsing failure zombie problem
c0f0a8e bitbake/BBHandler: Improve handling of multiline comments and warn users of the change
be92622 Remove all comments from multiline expressions (as mentioned in bug #704)
d26cbff qemu: enable audio support
e2dbad7 mklibs-native: fix the build on Ubuntu 9.04 by defining STT_GNU_IFUNC
9a28ad6 package_deb.bbclass: Place the whole task under fakeroot context to fix build failures
b43af18 gst-meta-base: add uridecodebin library support
e79a8a6 linux.inc: remove the obsolete linux.inc kernel recipe include
3b16625 linux-2.6.33.2: remove linux-2.6.33.2 recipe
0fff049 linux-2.6.23: remove the linux-2.6.23 recipe
7bae946 zaurus: remove zaurus linux includes
7537f44 ADT: Fix check_result script cond comparison bug
6148562 distrodata.bbclass: Fix some bugs for rpm,icu and quicky recipe when checking upstream version
489465b libtool: avoid absolute pathnames of general utils
3c314b9 linux-yocto: update to 2.6.37.1
4b6de47 bitbake/runqueue: Drop PATH override. This was needed for the exec() change but not now we use fork()
ac7aa94 tar.inc: Fix unintended damage
f6ae606 tar-replacement-native: Fix install
577dd4b tar-replacement-native: Add a target to replace the default tar
05c4692 siggen: add bb.data, bb.parse imports
c538800 uihelper: import bb.build, kill commented lines
5f73918 runqueue: simplify RunQueueStats.copy
0f42f6b runqueue: pass a copy of the RunQueueStats to events
ec071ac rm_work.bbclass: Improve handling of noexec tasks
b42273a lib/oe/path.py: Add expection class to handle the output argument
0a8f4f4 rpm: Increase the number of solvedb's allowed
9f0f7c4 documentation/kernel-manual/kernel-how-to.xml: Changes to section 3.4.4 and new 3.4.5
07c159f documentation/kernel-manual/kernel-how-to.xml: fix to step 3 and 4 of section 3.4.4
6500cef documentation/kernel-manual/kernel-how-to.xml: Fix to step 3 of section 3.4.4
7c06c4f documentation/kernel-manual/kernel-how-to.xml: Fix to step 1 of section 3.4.4
c168c52 meta/lib/oe/path: Use check_output for subprocess so we can see error info. Import code to be python 2.6 compatible.
8048b71 local.conf.sample: Handle the case the user incomments a machine entry and expects it to override the default
673abd9 conf/machine: Drop older machines with no recent updates
fed61be local.conf.sample: Update MACHINE list to match our website and documented supported list
359a4d8 bitbake/runqueue.py: Move SIGCHLD handler to wrap none server sleep call
1575113 gstreamer: reenable PARALLEL_MAKE
3810796 openssl: fix parallel make
c35d910 connman-gnome: Enable config menu popup even services are not available
6f286cc recipe-core/meta/meta-toolchain.bb: Set correct value for CONFIG_SITE.
6dc50b1 toolchain-script/populate_sdk/meta-toolchain: moving common code.
f09f8f4 toolchain-scripts.bbclass: Added libtool sysroot support.
40ed271 gtk+: Fix build of documentation
0bc7de5 docbook-utils-native: set SGML_EXTRA_CATALOGS in jw
6547f62 openjade-native: Set datadir explicitly
561c7a8 docbook-dsssl-stylesheets-native: add missing files to install
265bd1c perl-native: fix parallel build
27894c5 libc-package.bbclass: Disable lib packaging dependenies for libc-initial versions
107f25a buildstats.bbclass: Remove unneeded debug output
d5de622 gypsy: Convert SRCREV to a git revision instead of an svn one after recipe migration
7b9ae9c perl perl-native: turn on parallel make
582ec95 lttng-viewer: Fix rootfs contruction
fb9dd99 iputils: enable generation of man pages
f5d2b58 opensp: improve configuration and install steps
1cd61f6 docbook-utils-native: new recipe v0.6.14
1e24e9c sgml-common-native: fix license info and checksum fields
e4031f8 texinfo: recipe cleanup, add native support
5df1534 eds-dbus: reenable PARALLEL_MAKE
bcb5695 pango: reenable PARALLEL_MAKE
485aa3a ncurses: reenable PARALLEL_MAKE
d559134 gettext: reenable PARALLEL_MAKE
afd4169 linux-libc-headers-yocto: Added RPROVIDES.
10c7ca4 poky.conf: make the WHITELIST for INCOMPATIBLE_LICENSE overridable
ab0e1be package_rpm: Fix solverdb generation
110f1f9 image.bbclass: Disable shell debug messages
4ac789b rpm: Avoid fsync when writing files
ca649ef rpm: Add the ability to use the platform file during install
0e4aa13 Doing uname without subprocess: buildstats.bbclass
095944a mkfontdir/font-alias: Fix native RDEPENDS
5a7024e sqlite3-native: Drop dependencies on ncurses and readline plus enable in memory temporary tables
3ef2d39 bitbake/fecth2: Ensure BB_FETCH_PREMIRRORONLY being set as false is handled correctly
7e4c694 bitbake/runqueue.py: Ensure child has the default SIGCHLD handler restored
974ea1a bitbake/runqueue: When we successfully fork off a task and there are more processes we can start do so immediately
5a178b5 bitbake/runqueue: When we have successfully collected a pid value return True to ensure we don't sleep in the main loop
03d40a4 bitbake/runqueue: Add a SIGCHLD handler to ensure we wake from sleeps for SIGCHLD events
579eccc bitbake/cooker: Ensure delays are accurately transfered to the idle loops from runqueue
5c4e290 buildstats.bbclass: Fix expand call syntax
770f832 buildstats.bbclass: Save ended time in TaskFinished events
58e878c linux-yocto: add jasperforest BSP and fix lttng NMI bug
f7cb823 README.hardware: update the beagleboard serial port documentation
e0f49d2 linux-libc-headers-yocto: disable device tree generation
a824232 buildstats: Disable uname subprocess call for now since it appears to be breaking runqueue somehow
21c112c Merge branch 'srifenbark/docs' of ssh://git.pokylinux.org/poky-contrib
e5e02f3 gypsy: Change gypsy upstream repo address
4110560 Buildstats commit: buildstats.bbclass
647aaad documentation/kernel-manual/kernel-how-to.xml: More changes to the creating BSP section.
05ac368 documentation/kernel-manual/kernel-how-to.xml: Fixed type
09e2aac documentation/kernel-manual/kernel-how-to.xml: - Condense and merge example changed.
2a8c4a3 documentation/kernel-manual/kernel-how-to.xml: [BUGID# 597] Reversing common-pc-standard
f8c5a63 documentation/yocto-project-qs/yocto-project-qs.xml: [BUGID# 631] - Added tip for saving disk space during a build.
721a934 documentation/kernel-manual/kernel-how-to.xml:  [BUGID# 597] Fixed common_pc
6cb8fd6 process.py: Avoid deprecation warning
ebe2a5d xpsb-glx: add libxfixes and libxdamages to DEPENDS
c600ea7 libva: add libxfixes to DEPENDS
e95ab29 kernel.bbclass: add approproate X Environment variables to allow xterm to start
a26163b bitbake.conf: change revision fetching to use newer fetch2 code
d050560 distro tracking: minor fix to mc lastest version
f87603f dbus: change owner and mode for dbus-daemon-launch-helper in postinst
44e17ea wpa-supplicant: change dbus interface
b9a97e0 bitbake/fetch2: Revert part of the unpack change until the issues with it are resolved
92a9d59 recipes: pre/post actions
6f6bffe package.bbclass: Breakout the strip from the populate_packages
9849e70 busybox: Rework busybox to fix limitations in initscripts
3faa635 fetch2: unpack revision
e56f63a openjade: fix build issues
293b023 mirrors.bbclass: Ensure we don't overwrite any existing MIRRORS variable
029f19b bitbake/fetch2: Add explict network access exception and handling to give users usable error messages
4a22646 bitbake/fetch2: Fix message about md5 checksums when sha256 is incorrect
0f6efe9 lttng-control: Fix SRC_URL to point at lttng.org
dc9cae2 puzzles: Update to r9084
132ec8d bitbake/fetch2: Fix patch merge error
a72d494 bitbake/fetch2: Add some debug output so its clear when PREMIRRORS, upstream and MIRRORS are being used
20afb21 bitbake/fetch2: Ensure network access status is reset for each loop iteration in download()
49a18f1 sstate: Fix bugs after new fetcher
05d8b64 bitbake/fetch2/wget: Fix missing string parameter reference
ea70c43 bitbake/fetch2: Ensure failed fetch attempts are logged in the debug logs
7f30131 bitbake/fetch2: Correctly handle git mirror tarball fetching
20ab1cb bitbake/fetch2: Pass over malformatted (empty) mirror url lines
96aeec4 meta: Update mirror urls to new format and update yocto project urls
8e93b53 linux-dtb.inc: Fix package name to match PACKAGES
b42ba2f bitbake: Remove bad commit hunk from old cvs fetcher
14dea89 fetch2: Correct the clean() mechanism for the fetcher2 code
f1bbea4 Export KRB5CCNAME variable
aacbe3f Fix comparison with SRCREVINACTION constant
c68c5f6 persist_data: kill unreachable break line
afdbb02 bitbake-layers: fix bug with env vars leaking in
882ac1a cache: fix docstring usage
68bd406 Add initial bitbake-layers script
1385162 persist_data: loop on database lock for table creation
4af3191 xkeyboard-config: make depend on intltool-native
2501ff2 local.conf.sample: Drop some comments about things that either no longer apply or are obsoleted (now we have -dbg packages)
d2cfd3c qemuimagetest: Rename test scenario file from poky-image-sdk to poky-image-sato-sdk
33df485 mesa-dri-7.10: add missing dependency makedepend
8c2f3e0 mesa-xlib-7.10: add missing dependency makedepend
59a0826 bitbake/fetch2/git: Write mirror tarballs if enabled and they don't exist, also set a default value for mirror tarball generation
5cac571 rm_work.bbclass: Fix typo for package task directory preservation
9d7aa10 task-poky-apps-x11-pimlico: Webkit is huge and the compile time means it doesn't make sense in our demo sato image
7b4150f util-linux: Correctly prepend to PACKAGES and stop corrupting linux-util-native PACKAGES variable
3323759 ncurses: Apply unifdef-native dependency to the task that uses it, not globally
d1a1635 package.bbclass: Only set recrdeptask for do_build if packaging is enabled for the recipe
388a92b debian.bbclass: Only set rdeptask for do_package if packaging is enabled
b1c0b3d pseudo: Add and use the 1.0 release version
0b50dc8 lttng-ust: fix ppc build by removing ppc specific time reading function
296866c image-swab: Convert to attach strace to the process to obtain the required swabber data
d3d236b Misc hard link fixes
3e6d91e package.bbclass: Preserve hard links!
58ae42c lib.oe.path: Update copytree function to call shell commands since its twice as fast
bb3db51 talloc: remove talloc recipe
577c893 mesa-xlib: upgrade to 7.10
97e288f mesa-7.10: set mesa 7.10 as default instead of 7.8.2
d64460a mesa-dri-7.10: replace GPLv3 talloc with MIT-x licensed ralloc
0684172 image-mklibs.bbclass: add the library optimization functionality
cfc4041 makedepend: remove # from the beginning of DESCRIPTION lines
b0c2d6f xserver-kdrive.inc: add openssl to DEPENDS
2fbcf14 prelink: add transfig-native to DEPENDS
c7de365 transfig: new recipe v3.2.5d
fbf6c30 imake: add native support to recipe and update DEPENDS
98dec6e libxpm: add native support to recipe
26e3ce2 libxext: add native support to recipe
38eaf20 xorg-cf-files: new recipe v1.0.4
27b3f08 uboot: move license data into recipe with SRC_URI
6b76cee uboot: build with -O2 on all architectures
ba163a4 kernel.bbclass: use defconfig if it exists
8d1b4fe linux.inc: don't overwrite an existing uImage
d0eb679 u-boot: compile with -O2 on PowerPC
8bf1bf2 u-boot: add LIC_FILES_CHKSUM
5f2cf65 linux/u-boot: Update LICENSE fields to specify GPL version
07da500 linux: add LIC_FILES_CHKSUM
082aff4 Merge branch 'jzhang/i686' of ssh://git.pokylinux.org/poky-contrib
092f132 Merge branch 'jzhang/adt-repo' of ssh://git.pokylinux.org/poky-contrib
ad987ff mpc8315-rdb: add dtb generation configuration
15cce57 dtc: add LIC_FILES_CHKSUM to dtc-native
970f395 linux: factor dts/dtc/dtb handling into a specific include
1de7185 linux-yocto: streamline BSP bootstrapping
9ce72c2 linux-yocto: streamline BSP bootstrapping
3150c5a binutils-cross-canadian.inc: disable -werror like -cross does
a20600d bitbake.conf: fix SDK_NAME
4ed19cf adt-installer: change to adopt the adt public repo directory layout
29ed2c6 bitbake/fetch2: Fix negated if check for BB_FETCH_PREMIRRORONLY
33b3e59 local.conf: change i586 to i686 for 32bit SDK
906285f fetch2: Add SRPM knowledge
2f3a734 insane.bbclass: Fix config.log error message
07088f7 bitbake/utils.py: add glob name matching to remove
aa45760 bitbake/fetch2: Ignore UnboundLocalError in exception handler in try_mirror
ee1a9c0 bitbake/fetch2: Move symlink handling into try_mirror where is belongs instead of the main download function
c4e66a7 bitbake/fetch2: When using BB_FETCH_PREMIRRORONLY, set BB_NO_NETWORK after premirrors as there could be data processing needed by the real fetcher
91eeb9b bitbake/fetch2: Ensure we only remove files, not directories when fetch failures occur
0713fb6 bitbake/fetch2: Ensure original ud is preserved in try_mirror
38878db linux-yocto-stable: Fix meta branch name
65712be kernel-yocto: Ensure python code has awlays run before SRCPV is expanded
bd2fd82 kernel-yocto/poky-default-revisions: Ensure SRCREV_machine is set for the kernels
a235c67 bitbake/fetch2/git: Fix broken variable reference
5920e85 bitbake/fetch2/git: Ensure unresolved branches are translated into revisions
1544aa8 fetch2: add try/finally to ensure lockfile is unlocked on failure
232b6f3 fetch2: add runfetchcmd to import for fetchers
6ec0e55 init-live.sh: add 'coldplug' udev trigger
36efa89 rpm: catch up with fetcher2
500c663 bitbake/fetch2:Fetch Make using the fn based cache optional
d4b4b48 bitbake/fetch2: Fix pickling issues with fetcher exceptions
94faffd bitbake/fetch2: Update mirror processing to ensure we look for mirror tarballs
37624b9 bitbake/fetch2: Update forcefetch and mirror handling to clean up, simplfy and bug fix the code
1d3fdc8 beagleboard: allow kernel provider override
76c3514 linux-yocto: uprev lttng to 2.6.37-lttng-0.242
4816a02 mesa-demos: fix build issue with gcc dso linking change
d372ead util-linux: Add mount lock patch
fdb6a23 sysfsutils: Merge bug fix
522d16a coreutils: Add various bug fixes
427472e busybox: Support DHCP refresh without restarting the interface
5ade6c7 pseudo: Uprev pseudo and fix a few minor bugs
7586adb bitbake/msg: Ensure lower level debug messages have DEBUG prefix and reuse log level values from formatter
ded83ff bitbake/fetch2: Match Fetcher log domain to that in bb.msg
d7eebbe bitbake:__init__.py: Fix debug log level handling to correct debug output
fb9c5a1 bitbake: event/build: Drop stdout specific handling for python messages as this is no longer needed with newer log handling
af6480b distrodata: Update to new fetcher API
fbebb9a utility-tasks: Update checkuri to new fetcher API
681bcf4 bitbake/fetch2/git: use clonedir as ud.localfile too since the mirror tarball may not exist
3308868 bitbake/fetch2/git.py: Ensure that forcefetch operates in the correct directory for calling _contains_ref()
32dbc70 kernel-yocto: 'standard' isn't a valid git branch name for a SRCREV, fix
917d3e9 bitbake/fetch2/git: Fix localpath to point at the clone repo since we no longer always generate a mirror tarball and it isn't a good guide to fetcher success
8e070a9 rpm: Update extra unpack code after fetcher changes
7202a77 bitbake/fetch2: Use True instead of integer values
8f2abf4 bitbake/fetch2: Drop name/override ordering backwards compatibility code
ee6f344 bitbake/fetch2/svn: The concept of using dates with svn is totally insane, drop support
984e90f meta/classes: Update classes to use new fetcher API
ca7adf7 bitbake/fetch2: Define a new interface to the fetcher code though the 'Fetch' class
08a9fef bitbake/fetch2: Fix typo
806d1c2 bitbake/fetch2: Drop legacy CVSDATE support
f60d9d6 bitbake/fetch2: Move getSRCDate to FetchData class where is more appropriate
831c6c1 bitbake/fetch2: Make srcrev_internal_helper a normal function, doesn't belong in the FetchMethod class
ab0dd13 bitbake/fetch2: Rename Fetch class to FetchMethod
74b7186 bitbake/fetch2: Drop old md5 handling code
d08397b bitbake/fetch2: Rewrite and improve exception handling, reusing core functions for common operations where possible
f6eefb3 bitbake/fetch2: Have all fetcher exceptions derived from a common BBFetchException class
604037d base.bbclass: Update after fetcher changes
8daab5b bitbake/fetch2: Drop unused parameter for localpath() and update comments
7e4fbfc bitbake/fetch2: Simplfy setup_srcrevs
49a022d bitbake/fetch2: Simplify localpath variable handling FetchData init
5a52cb8 bitbake/fetch2: Define a sane localpath function and remove code duplication
972eb5f bitbake/fetch2: Move ud.localfile setup into urldata_init
0e5404c bitbake/fetch2: Drop horrible SRCREV hack which is no longer needed
b93683c bitbake.conf: Force git fetches to a new location after fetcher layout changes
5038757 poky.conf: Turn off mirror tarball generation by default
e4c1e99 bitbake/fetch2/git: Switch to completely use bare clones
66e6a97 prelink: Temporary workaround for documentation build
192f631 fetch2/git.py: Fix problem when fetching with no origin
96810ca bitbake/fetch2/git: Ensure we prune origin to remove stale branches
0fdcc50 Revert "iputils: enable generation of man pages"
4cac153 Revert "docbook-utils: new recipe v0.6.14"
7c64981 Revert "docbook-utils: fix build errors"
51d7e31 package.bbclass: Optimise file dependency calculations to ignore locales and kernel modules as these never have dependencies we'd detect anyway
dfc5faf bitbake/fetch2/git: Ensure deleted branches upstream are removed, all branch tags are forced to the upstream revisions and all revisions and tags are always fetched
3a70078 beagleboard: set kernel provider to linux-yocto (2.6.37)
8a52fda bitbake.conf & package.bbclass: Use default SUMMARY and DESCRIPTION
282a828 bitbake/fetch2: Remove old local file acceleration code
fa9fda0 bitbake/fetch2: Ensure that mirror fetches are symlinked from the download directory
7f99605 bitbake/fetch2: When encoding a file:// url, drop user and host information
9ee3c77 recipes-graphics: Add more detailed SUMMARY and DESCRIPTIONS
30f5eea bitbake.conf: Fix missing NM definition
4714d02 linux-yocto: BSP updates
acfef93 gobject-introspection: fix DEPENDS
dc9f4de mailx: Disable parallel make
9b2fd4b license.bbclass: Add coverage by sstate code (also use cleandirs and dirs task attribures for directory handling)
1a559cb rm_work: Retain package and package-split directories to be consistent with sstate code
4b793ff rootrs_rpm.bbclass: Disable createrepo for now due to this error:
3eef847 docbook-utils: fix build errors
efbaabd wpa-supplicant 0.7.3: fix packaging of dbus service files and fix layout variables
a55d86b bitbake/lib/bb/fetch2: Assign a default name in the names array as empty strings as names cause problems for python
08cd6c1 bitbake/fetch2: Add missing parameter to localcount_internal_helper
5a16cb5 libconvert-asn1-perl: upgrade from 0.21 to 0.22
3212190 subversion: upgrade from 1.6.13 to 1.6 15
adfa6c4 bitbake/fetch2/git: Ensure target directory exists when copying files
43addfd linux-yocto-stable: Update SRC_URI after fetcher changes
8b5b3cc linux-yocto/linux-libc-headers-yocto: Adjust to git fetcher improvements
0e837e6 fetch2: Allow multiple src rev to be used in one src_uri
affcfe4 git.py: Remove the source tree tarball archives
05048e0 bitbake/fetch2/git: Add nocheckout option to disable checkouts and always add scm data to checkouts
3a3fc6b bb.fetch2: Add git unpack
d1ed188 autotools.bbclass: Drop info directory listings as they're going to be broken if generated at this point and cause file conflicts
95f13b1 package.bbclass: Ensure SUMMARY is written to pkgdata as well as DESCRIPTION
1d3face cross-localedef-native: Fix do_move_ports since the definition of  changes. Raises the question of whether we even need ports for this?
c636efa scripts/poky-env-internal: We set LC_ALL in the core so no need to set LANG here now
f33685f bitbake.conf: Set LC_ALL instead of requring bitbake or env scripts to do this
cb8153c elfutils: Clean up old versions which are no longer required
6f6a203 distro_Tracking: update as per current devel/toolchain recipes
ecac1c7 documentation/poky-ref-manual/extendpoky.xml:  Fixed make problem
845d49d gnome-doc-utils.inc: inherit gettext instead of DEPENDS
95366e4 linux-yocto: export kernel configuration audit to the console
e4a4d9e mpc8315e-rdb: set UBOOT_ENTRYPOINT
d71f6ff rpm: Add relocation to rpm-native
c224842 glib-2.0: Add stable version 2.26.1
50b9f87 libfm: remove add_missing.patch as part of glib-2.0 downgrade
a196ab0 distro_tracking: update distro tracking fields
4db9831 opkg: Update to svn r596 to fix segfault when upgrading packages
e1a9c8f mklibs-native: new recipe for optimizing size of library files
0322d4c distro_tracking: update latest upstream versions
bbfd012 cups: add cups 1.4.6
c081167 libxml2: Enable "--with-legacy" for LSB test.
0a12a3c msmtp: add msmtp 1.4.23
2254fd9 mailx: add mailx 12.4
ab31618 at: allow normal user to use 'at'
ede0009 cronie: enable multi-user crontab usage and make cron environment complete
d0bf83c distro_tracking_fields.inc: update pixman
cfe1327 pixman: downgrade from development release 0.21.4 to stable release 0.20.2
18acdfb mutter: Upgrade to 2.29.1 via git
fd03e8a gdk-pixbuf: Fix the native png load error and remove duplicated recipe
4e8e8a7 clutter-box2d: Upgrade to 0.10.1 via git
551174c clutter-gst-1.0: Upgrade to 1.3.4 (clutter 1.4 series)
1357d22 clutter-gtk-1.0: Upgrade to one version prior to 0.90.2 (clutter 1.4 series)
3bb0b9a clutter-1.0: Upgrade to 1.4 - latest stable version
ba06cc8 distrodata.bbclass: Imporve the checkpkg task more precisely and generate data for pkg-report-system
d22b435 populate_sdk.bbclass/meta-toolchain: Made populate_sdk task more generic
63e220c populate_sdk_ipk.bbclass: Added ipk support in populate_sdk task.
5571753 populate_sdk_deb.bbclass: Added deb support for populate_sdk task.
8b6626a populate_sdk_rpm.bbclass: Added rpm support for populate_sdk task.
382075a rootfs_rpm/package_rpm.bbclass: Move func from rootfs_rpm to package_rpm
b94f9cc rootfs_ipk/package_ipk.bbclass: Move func from rootfs_ipk to package_ipk
f23e67f rootfs_deb/package_deb.bbclass: move func from rootfs_deb to package_deb
cc0b8f4 gdk-pixbuf: add jpeg into DEPENDS
dbcddc3 xkeyboard-config: upgrade from 2.0 to 2.1
1e48275 distro_tracking_fields.inc: added docbook-utils and dependencies
62337be iputils: enable generation of man pages
8b5e600 docbook-utils: new recipe v0.6.14
3c71831 openjade: new recipe v1.3.2
edca982 opensp: new recipe v1.5
60450eb sgmlspl: new recipe, v1.03ii
942b3b1 docbook-dsssl-stylesheets: new recipe v1.79
b2abf1c docbook-sgml-dtd: new recipes - v3.1, v4.1, v4.5
b8bb770 sgml-common: new recipe v0.6.3
05954ef bitbake/fetch2: Ensure the local revision counter takes a default value of 0, not None
c7c4c66 Revert "perl-native: Update for userelocatableinc and non-shared libperl"
4c8f498 qt4: set RRECOMMENDS correctly for qt4 demos and examples packages
19e1f4f meta-toolchain-qte: Append to the toolchain env script and remove code duplication
ec740ac Revert "quilt: fix patch version detection"
f33d78f qt4: Add meta-toolchain-qte and dependent tasks from OpenEmbedded
f0a81bb avahi: prevent unnecessary runtime dependency on gtk+
c75ad46 package.bbclass: add nodeprrecs flag to RRECOMMENDS_pkgname
7a0c927 qt4: Add qt4-tools-nativesdk based on qt4-tools-sdk from OpenEmbedded
0e6608b dbus: extend to nativesdk
7bb96b8 glib-2.0: extend to nativesdk
abb87d4 qt4-tools-native: update from OpenEmbedded
51b5081 qt4: add 4.7.1 version from meta-openembedded
7263add qt4: add qt4-embedded 4.6.3 from meta-openembedded
c5998e6 qt4: Bring in improvements from meta-openembedded
70ce049 Add directfb 1.4.6 from meta-openembedded
bc31351 quilt: fix patch version detection
d6f4d68 site/x86_x64: add entry to fix x86_64 compile errors
47f8b56 libxft: Drop explict package_do_package call and use anonymous python instead
2d9cc7e kernel.bbclass: Add fix from OE.dev for tmpnam() usage
5b7e96d image/package_xx/rootfs_xx.bbclass: move rootfs_xx_log_check().
21f2dae libgcc: Explicitly wait for the libc packaging to occur before libgcc packages
0e70557 poky-{glibc,uclibc}.inc: Add libc-foo OVERRIDES
fe59ca3 perl-native: Update for userelocatableinc and non-shared libperl
a9dda28 createrepo: fix native binary
eed008b package.bbclass: Disable EXPORT_FUNCTIONS for do_package
eb879e2 license.bbclass: don't mark it as 'nostamp'
7e206c6 scripts/bitbake: remove bashisms
92f1b49 license.bbclass: handle | (or) in the LICENSE field
612d59f package_rpm: Fix package-split summary
e676987 creating the rpmrepo metadata
f6fc1f3 createrepo: add new recipe
114cee7 zypper: upgrade to newer git version
483ee17 libzypp: upgrade to newer git version
2c32f49 sat-solver: upgrade to newer git version
ffd12fc sat-solver: Add db as DEPENDS and bump PR
78569af linux_2.6.33.2: Add LIC_FILES_CHKSUM
74cffe7 poky-image.bbclass: If not including package management, ensure the basics to handle postinstalls in images are present
36f8aa6 poky-image-minimal: Since we don't include package system data, we only need the package system bootstrap dependencies
be4ad69 rootfs_rpm: Drop bogus inclusion of the run-postinsts package
fc5b38e rpm: suggested change
e7fb63b rootfs_rpm: Setup the platform configuration
f6ddba2 rpm: Uprev to RPM 5.4.0
a606ad5 poky.conf: Update gdk-pixbuf provider after gtk+ upgrade
97d80dd x11-common: Fix unusable serial console
a7937d7 apt-native: Added licence checksum.
e8dfc44 cross-canadian.bbclass: Correct deb package arch.
673f7ab distro_tracking_fields.inc: update the info for some recipes
65a5c10 preferred-xorg-versions.inc: remove libfs, update xvinfo, pixman, dmxproto, printproto, xineramaproto, xf86driproto, xf86vidmodeproto, libxp
c27622e libunique: update DESCRIPTION, HOMEPAGE, BUGTRACKER
3fbe386 libxp: upgrade from 1.0.0 to 1.0.1
e692278 xf86vidmodeproto: upgrade from 2.3 to 2.3.1
cf3106d xf86driproto: upgrade from 2.1.0 to 2.1.1
9d9edb4 xineramaproto: upgrade from 1.2 to 1.2.1
25e7822 printproto: upgrade from 1.0.4 to 1.0.5
98d5a20 dmxproto: upgrade from 2.3 to 2.3.1
903ef26 pixman: upgrade from 0.21.2 to 0.21.4
7e2f368 lttng-viewer: upgrade from 0.12.35 to 0.12.36
e8f2bfc lttng-ust: upgrade from 0.8 to 0.11
8aaa0f6 liburcu: upgrade from 0.4.8 to 0.5.2
0b60fa1 freetype: upgrade from 2.4.3 to 2.4.4
af5cdac gnome-doc-utils: upgrade from 0.20.2 to 0.20.4
0e879c2 xf86-video-omapfb: upgrade to 044617665d6737f4909aab96
4bda50f Initial commit of license reporting:
c7b489c task-poky-sdk: add 'file' and 'ldd'
ce9d6eb bash: use /bin/bash as default shell when bash is included
abc25cb base-files: remove ending colon from default $PATH for root user
1b26bce matchbox: Convert all the matchbox components' repo from svn to git including: matchbox-wm matchbox-panel-2 matchbox-terminal matchbox-config-gtk matchbox-stroke matchbox-desktop matchbox-keyboard matchbox-themes-extra libfakekey settings-daemon
5612838 distro tracking: Add info after upgrading gtk+, libuser and leafpad
7951a7b libuser: Upgrade from 0.56.18 to 0.57.1
9eb6dbc leafpad: Upgrade from 0.8.17 to 0.8.18.1
bce90ed scripts/bitbake: If pseudo isn't in staging for some reason, force a build of it directly
7261f25 scripts/bitbake: We only need pseudo-native in the sysroot, we can ignore any other pieces of the dependency tree
8cae183 staging.bbclass: Only clean out the sysroot if we rerun configure, not at setscene time
c7ad2da sstate: Ensure stale stamp files are removed as part of sstate_clean()
06c6db7 bitbake/runqueue.py: Avoid starvation of events to the server
754047b sstate.bbclass: Fix stupid typo
021cf7d sstate.bbclass: No need to dump the contents of the sstate package to stdout
bb7a42e sstate.bbclass: Handle whitespace in the list of files to 'fixup' to resolve log warning
e77207c BerkleyDB: Uprev db from 4.2 to 5.1.19
156405e ofono: Fix missing dependency on udev
3cc784e iputils: upgrade to s20101006
deec6fa webkit-gtk: upgrade to 1.3.7
ef6cc9a eds-dbus: Do not disable old API after upgrading gtk+
7c9c78b gtk+: Update to 2.22.1
8a6e862 sstate.bbclass: Optimise to check if the manifest exists without taking locks
a17dc8b external-python-tarball: include multiprocessing module
b02a4ad perl: Remove ${MACHINE} dependency in compile and package.
c34913e bitbake/build.py: When looking up extra stamp info for setscene tasks, use the real taskname
e8e9f56 rm_work.bbclass: Update to convert stamps to setscene stamps
7476df3 autotools.bbclass: Drop unused autotools_stage_dir dummy function
35d44a4 autotools.bbclass: Only include aclocal directories if the exist, no point in creating them
4e23e8f send-pull-request: ensure a proper FROM header is included
8ae1f88 meta-toolchain: Fix tar command
5f866ac bitbake/unlockfile: Fix exception handling
6a0abfa crosssdk: Drop PACKAGES setting as its set in cross.bbclass already
4c55d2b sstate.bbclass: Correctly handle empty sstate packages
82745e4 cross.bbclass: Move sysroot_stage_all function to the only place that uses it now (gcc-cross-intermediate)
70301cc staging.bbclass: No need to create these directories any more, also remove invalid comment
87a258f meta-toolchain: Use --owner and --group options instead of using pseudo's overhead for a simple task
d332f18 perl: Remove MACHINE reference in do_configure, it causes perl to be rebuild many times
db9b8bc kern-tools: update to the new repository
74c24e0 documentation/yocto-project-qs/yocto-project-qs.xml:  Added note to poky-qemu command
63e6319 documentation/yocto-project-qs/yocto-project-qs.xml: Updated <arch> value for environment setup command
bcce31b documentation/yocto-project-qs/yocto-project-qs.xml: Updated list introducing pre-built section
dc12430 documentation/yocto-project-qs/yocto-project-qs.xml:  Added sub-sections to pre-built image section
d0be418 documentation/yocto-project-qs/yocto-project-qs.xml: Corrected environment setup command
c8f4bb5 linux-yocto/stable: perf: hard-code NO_LIBPERL/NO_LIBPYTHO
e60cbed util-linux.inc: Fix DEPENDS on gettext for native case
567958d distro_tracking: Update for poky-image-sdk renaming
4c0448f poky-image-sdk* renamed to poky-image-sato-sdk*
ad4b709 meta-toolchain-sdk: Rename meta-toolchain-sdk to meta-toolchain-gmae
630b5de util-linux: tidy up metadata
222796e sanity/sstate: Due to the sysroot layout changes, the toolchain bootstrap process changes and the recent pseudo bug, bump the tmpdir layout version number and the sstate version numbers
029f858 bitbake/fetch2: Instrument fetchers when making network access
098e8de bb.fetch2: add "BB_NO_NETWORK" option
733de75 bb.fetch2: remove the obsolate Fetch.try_mirrors referrence
ef918a7 git.py: split download to download() and build_mirror_data()
e2ac26e base/sstate.bbclass: Rename fetcher "go" method to "download" when using fetch v2
e059189 bb.fetch2: rename "go" with "download" to better reflect its functionality
8615b0e base.bbclass: use bb.fetch2 unpack API
f12e714 bb.fetch: add fetch version to distinguish bb.fetch and bb.fetch2
84ff794 bb.fetch2: revise the Fetch.unpack API
d8698b9 bb.fetch2: add unpack method in fetcher
6dc6791 emenlow: Change PACKAGE_EXTRA_ARCHS and BASE_PACKAGE_ARCH to core2
7f41f1a bitbake: machine specific sysroots implementation
b0df35f base-files: Add to make some directories needed by LSB.
5627894 liburi-perl: Rename liburi-perl
3b37116 pseudo: Revert msg cache changes
c0e1272 gcc/libc: Change bootstrap to use an intermediate sysroot and hence no longer overwrite files
23cb814 gcc-cross-intermediate, gcc-crosssdk-intermediate: change CROSS_TARGET_SYS_DIR and install into new locations
34729e4 gcc-cross-initial, gcc-crosssdk-initial: change CROSS_TARGET_SYS_DIR and insall into new locations
46395d4 sstate.bbclass: allow each step of toolchain bootstrap processes to do populate_sysroot independently
7109712 cross.bbclass: make MULTIMACH_TARGET_SYS adjustable for bindir, libdir, libexecdir
beb9166 distro_tracking_fields: Updated sudo tracking data
9eb6df7 sudo: upgrade to 1.7.4p6
c52e13a beagleboard: Not ready for 2.6.37 kernel yet, use stable instead
5233908 linux-yocto: update SRCREVs for emenlow
97cb312 linux-yocto: allow multiple BSPs per branch
e144427 update-rc.d.bbclass: Changed RDEPENDS for native
94629f2 send-pull-request: send all patches as the local user
75748b6 send-pull-request: unset $TO and $CC from environment
aee1d50 linux-yocto/stable: update beagleboard SRCREV
575d8bf linux-yocto/stable: update crownbay kernel configuration
e1c7800 linux-yocto/stable: update beagleboard SRCREV
d47d9aa distro tracking: Add more info for qemu, gdk-pixbuf...., after last interation of upgrade
3b980c5 nfs-utils, e2fsprogs, mtd-utils, libsm: bump PR
a377ce0 gst-plugins-base: add util-linux to DEPENDS
a9cb5cb util-linux: fix lscpu packaging
8ee25e2 util-linux: fix dangling symlinks
036e4a9 util-linux: separately packaging blkid and uuid
ff02b36 apt: revert the dso_linking_change patch as the new linker fixes it
6281264 libzypp: revert the dso_linking_change patch as the new linker fixes it
1ef7057 libmusicbrainz: revert the dso_linking_change patch as the new linker fixes it
57392af poky-extract-sdk: allow relative paths for extract-dir
74783fe bitbake/utils: Ignore OSError in unlockfile
a3cb784 Drop remaining bootcdx86 references, the -live images for qemux86 and atom-pc replace this
070b7ee package_deb: Remove access to the D directory which isn't used and might not exist (same problem as the previous patch to package_ipk fixes)
9e7eb59 package_ipk: Do not depend on the existence of "D" to create ipk package
f3677d6 glib-2.0: Add missing DEPENDS on dbus
6702c43 dbus: Drop now unneeded DEPENDS on glib-2.0
e40c2ca util-linux: Drop now unneeded DEPENDS on udev
daabbc6 poky-image*-dev: Add -dev Images contianing headers and libraries
bc9d2fb staging: Use relative path in sysroot-destdir for target recipes
b1025bd distro tracking: add graphics recipes tracking data
0ca7384 README.hardware: add beagleboard documentation
5da38d2 u-boot-omap3: remove in favor of upstream u-boot
f190297 overo: use the new upstream u-boot recipe
fb07e93 beagleboard: add x-load and u-boot depends
f2dc7fa u-boot: Add a new upstream u-boot recipe
b6cbf22 x-load: us TI upstream repository, update recipes accordingly
bcb1873 siggen.py: better print for task hash comparison
6299e96 bitbake.conf: add USERNAME to BB_HASHBASE_WHITELIST
1c0f01f resolvconf: upgrade to version 1.48
3900a23 zaurusd: upgrade to svn revision 426
310556e dbus: upgrade to version 1.4.1
13e92c8 libnfsidmap: upgrade to version 0.24
c0d1cca coreutils: upgrade to version 8.9
5ee3d09 distro-tracking: update some tracking fields
6d8fe5b poky-default.inc: bump binutils preferred version to 2.21
4d387c3 binutils: fix library RPATHs
68a9d3d binutils: Fix QA staging errors for target binutils
ce175a9 binutils: forward-port the binutils-poison.patch
c15f20a binutils: upgrade to 2.21 and add libtool sysroot support
6656381 insane.bbclass: skip checks on .la installed status
1477020 staging.bbclass, utils.bbclass: remove la mangling code
1a7509d autotools.bbclass: libtool sysroot support changes
ded899b libtool: fix library RPATHs
62dc239 libtool: Changes to enable sysroot support
66988ee libtool: Move common version specific data to a common include file
4a62f3f libtool: Small cleanups of metadata
576e136 qemu: Upgrade from 0.12.4 to 0.13.0
7d9a8fc distrodata.bbclass: add .xz file type
20925a6 meta-environment: Remove the recursive dependency on do_compile
5da9423 bitbake: fix parameter order for flaglist()
d4f5379 bitbake/providers.py: Fix runtime providers problems
1d1f2d3 poky.conf: Correctly set gdk-pixbuf PREFERRED_PROVIDER
f3f89be opkg: Stop opkg-nativesdk providing update-alternatives-cwrorth and libopkg
60ee8b5 eglibc-package.inc: Stop eglibc-nativesdk providing eglib-thread-db and locale-base-*
d1597fa poky.conf: Add PREFERRED_PROVIDERs for gdk-pixbuf-loaders after gdk-pixbuf updates
546ef7b apt: fix build issue with gcc dso linking change
746173d zypper: fix build issue with gcc dso linking change
cff6729 libzypp: fix build issue with gcc dso linking change
a849ef5 screenshot: fix build issue with gcc dso linking change
a698372 matchbox-stroke: : fix build issue with gcc dso linking change
e6d4c25 dates: fix build issue with gcc dso linking change
958fd5a fstests: fix build issue with gcc dso linking change
2560d0e blktrace: fix build issue with gcc dso linking change
52691e7 xtscal: fix build issue with gcc dso linking change
5a91224 matchbox-desktop: fix build issue with gcc dso linking change
8327a9d settings-daemon: fix build error with new gcc dso linking change
d9276d4 oprofileui: fix the build failure after gcc dso change
f7c5689 libmusicbrainz: fix the build failure caused by gcc dso linkcing change
59986bd sat-solver: fix the build failure caused by gcc dso linkcing change
95fc6ae gcc_4.5.1: add DSO linking change patch
b46ce7c gdk-pixbuf-native: add jpeg-native as a dependency
d075d14 perl: Add GDBM module for perl
e261c17 python: Fix failures of LSB python-runtime tests.
426de65 poky-lsb: Add poky-lsb.conf as distro of lsb image
39e239b libxml2: Enable "--with-docbook --with-debug --with-catalog" for LSB test.
df38d6c glib-2.0: Enable debug option for LSB test.
811a9f7 qt4: Enable accessibility and sm option for LSB.
9da1e13 documentation/yocto-project-qs/figures/using-a-pre-built-image.png:  Updated figure
75ee154 documentation/yocto-project-qs/yocto-project-qs.xml: General edits to YP QS.
6d5adf1 documentation/poky-ref-manual: expand discussion of PR and INC_PR
321d70e documentation/bsp-guide/bsp.xml: fix typo in variable name
6f31e13 distutils(-common-base) bbclass: sync with OE
943f80f python-dir bbclass: import from OE
7cb39ad setuptools bbclass: import from OE
fe9f716 sanity.bbclass: remove SDK_ARCH check
a1ab102 linux-igep: Add required LIC_FILES_CHKSUM
81f1457 openssl: drop the valgrind patch that introduce a security hole
05cb09b linux-dummy: add license and LIC_FILES_CHKSUM
297f2a7 base.bbclass: fix parse error on recipes with '++' in their name
238c13f meta-rt: atom-pc support
8734754 machine/qemu: Allow for users to override the preferred kernel version
212b687 meta-rt/poky-image-*rt: Add initial PREEMPT_RT image recipes
0b17496 meta-rt/rt-tests: add the PREEMPT_RT rt-tests testsuite and recipes-tests directory
0d7d566 meta-rt: Initial PREEMPT_RT layer and kernel recipes
4de5440 sanity.bbclass: Disable TERMCMD checking with noop patching
5246c99 libtool: Adjusted content of various libtool packages.
8cd693f task-poky-tools: move systemtap to machine specific tasks
96e513f systemtap: new package
3e05291 qemuimagetest: Use same image during sanity testing instead of copying a new image for each case
50b2086 apr-util: Update to 1.3.10
aa36087 apr: Update to 1.4.2
552169e gdk-pixbuf: Add 2.22.1 as new recipe
8f23c14 linux-yocto: update validate_branches to detected invalid commit IDs
432e761 linux-yocto: streamline new BSP creation
37c4345 linux-yocto: beagleboard enablement
fd88588 bitbake/utils.py: Teach unlockfile about shared mode lockfiles
542cebb sstate.bbclass: Ensure clean/setscene sstate functions run under appropriate locking
ede381d package.bbclass: Take a shared lock when reading to improve do_package parallelism
7857834 bitbake/utils.py: Add option of holding shared lockfiles
e5a629f psplash_svn.bb: Change poky boot logo to yocto logo
51a2afe distro-tracking: update manual checking
ec3b440 puzzles: SRC_URI Checksum disabled
163581f documentation/yocto-project-qs:  Updated the Packages section.
a72f0aa Workaround issue with latest version of pseudo.
2639601 pseudo: Update to the latest upstream version
57bab33 xserver-xf86-dri-lite: upgrade to 1.9.3
5a93778 mesa: add mesa 7.8.2
20bdd17 mesa-glsl: add mesa glsl 7.8.2
0b62bd8 mesa: upgrade to mesa 7.10
82c8fde cairo: upgrade to 1.10.2
9ffa1a7 xf86-video-intel: upgrade to 2.14.0
1029b86 xwininfo: upgrade to 1.1.1
63fa986 libdrm: upgrade to 2.4.23
89ca547 xf86-input-synaptics: upgrade to 1.3.0
b75c4db xf86-input-evdev: upgrade to 2.6.0
75e9e0a xkbcomp: upgrade to 1.2.0
a447c32 xf86-input-keyboard: upgrade to 1.5.0
2a69187 xdpyinfo: upgrade to 1.2.0
bacfa12 mkfontscale: upgrade to 1.0.8
00ecccc xprop: upgrade to 1.2.0
70fe429 bigreqsproto: upgrade to 1.1.1
c39b3aa xinit: upgrade to 1.3.0
d7c300f mkfontdir: upgrade to 1.0.6
5f1d51e xhost: upgrade to 1.0.4
d3341e3 task-sdk-host: add libtool-nativesdk to meta-toolchain
241d553 meta-environment.bb: fix comments typos
80cf3e4 bitbake: Introduce stamp-extra-info task flag into stamp filenames
740ea68 poky-init-build-env: unset BBPATH
72b452e bitbake/build.py: Allow FuncFailed error to have an optional message
4cd1118 staging: relocate *.la paths in destination dirs
dca67e0 libc-package.bbclass: should not rm scsi/*.h
0df3c48 libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
2ce2c1e linux-yocto: enable arch ARM config settings for KARCH based boards
2fa6f42 linux-yocto-stable: add atom-pc preempt_rt support
55ab96d linux-yocto: add systemtap config to -stable and -dev kernels
0388f07 bitbake/build.py: Rename message field to avoid DeprecationWarning: BaseException.message warning
a7fa6db perl-native: Ensure the wrapper appends to any existing PERL5LIB
d38ad32 linux-yocto: hard-code NO_LIBPERL/NO_LIBPYTHON
9c6b313 puzzles: Update SRC_URI Checksum
2119274 qemuimagetest: Use the same image in sanity testing to fix the timeout issue on autobuilder
8975306 external-python-tarball: add LIC_FILES_CHKSUM
e427f25 image.bbclass: Use the dedicated BB_WORKERCONTEXT, not bitbake internals to detect context
aa45f90 glib-2.0: Fix path problems with libtool 2.4
b939ff5 insane.bbclass: Make sure QA issues are reported as warnings
d82f205 dpkg: Add dependency on perl since otherwise the module can be installed to an incorrect directory leading to build failures
34bf835 kernel.bbclass: Remove a binary generated by recent kernel versions
fad5c8a perl-native: Wrap the perl binary and set the LIB directory correctly removing the need to hardcode the paths and rebuild it
17d13a5 bitbake.conf: Whitelist FILESPATH as a variable not to include in taskhashes
4988dd7 bitbake.conf: Whitelist MACHINE variable in PACKAGE_ARCHS
25b3d39 bitbake/siggen.py: Fix whitelisted variable handling
041adc9 kernel bbclass: add 'perf' to kernel-modules blacklist
bff1d2b build: remove duplicate import of utils
2ef204d *: use utils.remove() some more
c405a3a codeparser: fix spacing in diagnostic messages
3f08b7f bitbake/knotty.py: Ensure task note messages are only surpressed at default log levels
d4731a3 Adding check for DL_DIR permissions: sanity.bbclass
ac5c28a bitbake/goggle: don't drop events
e21150f bitbake/depexp: closing progress dialog kills gui
c9bb30b bitbake/goggle: closing the progress dialog kills the UI
749ca68 bitbake/uievent: fix queueing of events for xmlrpc before UI has loaded
f5a1f1d meta-environment: Remove c++ include dir from CXXFLAGS.
060a9d0 wpa-supplicant 0.7.3: fix dbus service activation
1717cd9 wpa-supplicant 0.7: fix GNU HASH QA issue
e5e3fb2 bbvars.py: add a script to look for undocumented variables
514e59c adt-intaller feature implementation, including the bitbake recipe file for creating the intaller tar file under /tmp/deploy/sdk, and the adt-installer script files and config files, set the reference to adt repo entry empty before it's setup
0307210 linux-yocto: add routerstation pro and mpc8315e-rdb support
deca05d trace-cmd: Bump SRCREV and recipe PV and PR values.
cebc043 libxml-simple-perl: fix build failure with perl 5.12.2
d52b9ff cpan.bbclass: add a new parameter EXTRA_PERLFLAGS
83796ed cpan.bbclass: use LIBDIR instead of DATADIR
f57e9da perl, perl-native: upgrade from 5.8.8 to 5.12.2
fde91ac puzzles: update SRC_URI Checksum due to file changing upstream
4b055ed runqueue.py: Renable check_stamp_fn() for now since we still fork for task execution (as per bitbake-upstream)
0b3d443 bitbake/runqueue.py: Simplify hashdata storage since we're not using an external script for tasks anymore, in line with bitbake-upstream
4428aab msg: no need to hardcode the logging levels
d967f3b vim: properly highlight python inside of ${@}
cbcd8e5 vim: handle highlighting exports without assignment
55606ce vim: add an ftplugin for indentation settings
810e139 Inject taskpid into log records via our log handler
48e567b bitbake/runqueue.py: Fix del_stamp calls and -f option to bitbake with the BasicHash siggen code
2bd6e7c Merge branch 'srifenbark/docs' of ssh://git.pokylinux.org/poky-contrib
084dd95 linux-yocto: update to 2.6.37
e9e966e kern-tools: create generic variables for platform/board/kernel
3f2902c linux-yocto: update SRCREV to pickup debug/ftrace config changes
a9f5fea routerstation: disable command line overrides
1759fee kernel-yocto: pass the build directory to configme
2b2dbf7 Fetcher: only set __BB_DONT_CACHE when SRCREV = "${AUTOREV}"
1589a11 Fetcher: break the "SRCREVINACTION" deadlock
550c3bd bb.fetch2.bzr: add bzr urldata_init
f684ff1 bb.fetch2.hg: add hg urldata_init
7420e70 bb.fetch2.svn.py: add urldata_init
54e34f6 bb.fetch2.git.py: add git urldata_init
2892cbf bb.fetch2: add urldata_init call for Fetch class
9e3a92c BBHandler: remove bb.fetch referrence
38b25ee machines: move PACKAGE_EXTRA_ARCHS to tune files
c02f89f bitbake: For poky only, force the use of fetch2 codebase
af06e4a bitbake: Switch to fetch2 fetcher code based on the environment variable BBFETCH2
c64b445 bb.fetch2: replace bb.fetch with bb.fetch2 in the bb.fetch
6b212ad bitbake/fetch/git: Add backwards compatibility code for branch name handling
4dccd92 bitbake: copy bb.fetch to bb.fetch2 as initial code base for fetcher overhaul
f46cdcb bitbake/poky.conf: Add TARGET_LINK_HASH_STYLE option to TARGET_LDFLAGS as per OE.dev
c036d1a bitbake/codeparser: Fix import to match upstream bitbake
a17d271 utils: show the actual exception in better_exec
cd382f9 runqueue.py: Drop unneeded import and improve quieterrors handling as per upstream bitbake
2c2d160 bitbake: Update event queue handling to match upstream bitbake
9336ba1 bitbake/runqueue.py: Sync with changes in upstream bitbake
5cc720a bitbake/fetch: Sync up logger/whitespace improvements
8d6800b bitbake/utils.py: Drop unused function extend_deps()
c186419 bitbake: Sync environment handling function names and comments with upstream alterations
b127874 parse: pass filename, lineno into the ast
f305e95 cache: don't expand variables for skipped recipes
b22e345 bitbake/knotty.py: Don't show log messages of NOTE and below for task processes
f8e7215 bitbake/__init__.py: Add taskpid to all LogRecords (subclassed to be BBLogRecords)
a13352c bitbake/msg.py: Add named definitions for all logging levels
b7eb324 xserver-xf86-common: Remove COMPATIBLE_HOST as it was wrong solution
26cd5c2 insane.bbclass: Enable the package_qa_hash_style check
5c69fab bitbake/runqueue.py: Remove duplicate TaskStarted event fire()
359e31c xvinfo: Fix LIC_FILES_CHKSUM
6fe79e2 libcanberra: Fix LIC_FILES_CHKSUM
5da9747 bitbake/build.py: Fix del_stamp work correctly after recent stamp function changes
0e26f53 bitbake/cooker.py: Fix merge conflict with upstream which was preventing clean bitbake shutdown
847b717 bitbake/cache.py: Expansion of variables in skipped recipes should not be attempted as they can trigger errors
6f454c1 bitbake/data.py: corrected the output for shell syntax.
dc10e16 bison-native: create a wrapper script for sstate installation
d835488 flex-native: create a wrapper script for sstate installation
16fa641 perl: use ${CCLD} instead of its own LD definition
97789a1 bitbake/siggen.py: Add a signature generator which adds the hash to the stamp files
bcb5849 documentation/yocto-project-qs/yocto-project-qs.xml:  Corrections to Using Pre-Built Binaries and QEMU section.
bc127e0 documentation/bsp-guide/bsp.xml:  Commented out three sections.
3f78c07 base.bbclass: Use the new stampfile function in bitbake to determine the path to the stampfile
df8569b bitbake/runqueue.py: Fix a bug where do_setscene dependencies would be ignored
66c6200 bitbake build/siggen/runqueue: Fix stampfile parameters
ec6e479 bitbake build.py: Stamp handling improvements
4a10a5b bitbake build.py: Use localdata for stamp handling, not d
81e29fb poky-ref-manual: Fix my email address
51a2e87 bitbake/build.py: Ditch the extract_stamp function as its just going to complicate improving the stamp handling functions
37391f6 parse.ast: drop __word__ regular expression
1204ed7 parse.ast: avoid code duplication for inherit
7465316 event: use BBLogFormatter in print_ui_queue
e7febaa build: use logger.isEnabledFor, not getEffectiveLevel
9b5c770 recpies: use SRCPV instead of SRCREV for PV
601af9f qemuimagetest: Remove connman test for lsb image and fix one warning in Test_Create_Qemu
d2d5456 insane.bbclass: Fix message for LIC_FILES_CHKSUM Errors
b91c0f4 python-dbus: upgrade from 0.83.1 to 0.83.2
5611fe8 byacc: upgrade recipe from 20100610 to 20101127
a4976d5 git: upgrade from 1.7.3.2 to 1.7.3.4
76b5dc8 distro-tracking: update recently updated recipes
34b067e modutils: Extend gcc4 patch for obj_ppc.c
1539ecf xserver: Add COMPATIBLE_MACHINE
c3a14b3 rpm: Bump PR to force rebuild due to new beecrypt
2ee6b1a distro_tracking_fields.inc: update apmd, blktool, dbus-glib, libgdbus, and pax-utils
27bdee5 dbus-glib: upgrade to version 0.92
2aa8ebb dbus-glib: delete unused patch
47a1cc9 libgdbus_git: metadata fixes and minor formatting changes
39387f3 blktool: minor formatting changes
4842fc5 apmd: added HOMEPAGE, minor formatting changes
0aa3472 apmd: delete unused patch
6f774d3 pax-utils: upgrade to version 2.2.2
73cc149 binutils: use default ${CC} instead of defining it own
3930538 kernelshark: add ftrace gui viewer
6564097 glib-2.0: fix g_once_init_enter compile failure
40be3e1 trace-cmd: license file updates
b4090f2 trace-cmd: fix cross-compilation
baab6f6 distro_tracking_fields.inc: update for lastest package updates
26a0877 preferred-xorg-versions.inc: updated for lastest package updates
f11bcc1 librsvg: upgrade from 2.32.0 to 2.32.1
a86c5de libxxf86misc: upgrade from 1.0.2 to 1.0.3
e166d62 libdmx: upgrade from 1.1.0 to 1.1.1
e348e6e pixman: upgrade from 0.20.0 to 0.21.2
840ca22 scrnsaverproto: upgrade from 1.2.0 to 1.2.1
ca4f109 resourceproto: upgrade from 1.1.0 to 1.1.1
3512680 compositeproto: upgrade from 0.4 to 0.4.2
c7ca70e xproto: upgrade from 7.0.19 to 7.0.20
b08bfda inputproto: upgrade from 2.0 to 2.0.1
cd9ae99 renderproto: upgrade from 0.11 to the latest version 0.11.1
6f7ee84 matchbox-wm-2: Upgrade to svn r2106
1afd9d9 metacity: Upgrade to 2.30.3
fbd6f9f libcanberra: Upgrade to 0.26
c19c5b4 xvinfo: Upgrade to 1.1.1
b0783ec beecrypt: Update to 4.2.1
21fafc8 rootfs_rpm: fix rootfs generation rm error
5e38403 rootfs_rpm.bbclass: Remove temporary work files in install directory, saving the manifests as logfiles into ${T}
6ded4e0 bitbake: build.py: Logging of None was losing the logs so force this to stdout so we can see function execution failures
a47c641 scripts/bitbake: Skip building pseudo if necessary.
d7a6a01 usbutils: Don't install the uncompressed version of usb.ids, the compressed version will suffice
a3158fa pciutils: Don't install the uncompressed version of pci.ids, the compressed version will suffice
0f70631 bitbake: Misc syncups with bitbake upstream, mostly whitespace and a missed line from the last UI commit
2e0ef25 Resurrect alternative UIs
25ac24e bitbake: build.py logging updates
0367936 bitbake: Fix process.py to accept None as the log option
e9f4ed0 Update persist_data usage to the new API
478677f persist_data: resurrect the lock wait for selects
2671bb4 Rework the persist_data API
3069c0b Revert "persist_data: cache connection and use cursor"
30d2711 base.bbclass: add lock file for do_unpack task
ca148f4 sstate.bbclass: fix multimachine builds when PACKAGE_ARCH = MACHINE_ARCH
641fc9b ConfHandler: commentary typo fixes
c0a11db event: fix unicode handler registration
aae8532 cache: defer marking fn as clean
c9d4807 BBHandler: use basename directly in handler()
83f0b79 data: fewer newlines for (un)export
9ed8e9f parse: Use constants from stat instead of magic numbers
0090a79 bitbake: Sync a load of whitespace and other non-functionality changes with bitbake uptream
e8c48e6 bitbake/contrib: Sync with bitbake upstream
043adbf process: fix handling of the input argument
572bf4b depexp: add sorting of all package lists
8eee422 pysh: add missing os.path import
1949d4f runqueue: fix typo in documentation of calculate_task_weights
4d4d135 runqueue: use fewer newlines in error path
4a6d4d2 logger usage cleanup
e890b86 utils: fix typo in error message
d951aa4 Move LAYERDIR expansion hack into DataSmart
717f13d parse: use bb.utils.which
760b82e Fix logging level names for post-server-ui-split
93e20c5 Use os.devnull, not /dev/null
4dc97cb utils: don't overwrite builtin dir() function
9bf3cf1 bzr: use utils.remove instead of os.system
240b597 utils: drop unnecessary debug msgs from mkdirhier
2735a70 Show the user progress when loading the cache
89a1b59 knotty: exit with 1 if we see a critical log message
2984877 cooker: don't swallow recipe parse errors
2f0c23d manual: document scmdata=keep for CVS, SVN and Git
bd34e7d fetchers: Add parameter scmdata=keep to include .git/ and others in generated tarballs.
7bbde5b build: fix FuncFailed for the no logfile case
ddf2c68 process: handle OSErrors other than file not found
3d51fd2 build: ensure LogTee has a valid name property
ea91b1d Fix PWD issue with new exec_func_shell
9260c08 Ensure that the invalid UI error goes to stderr
e05d6fa build: set PWD in the subprocess preexec hook
2b7c2a8 bitbake: Transfer noexec runqueue messages to the UI
fcba92f Move the runq task start/failed messages to the UI
23735bb Silence python 2.7 nested context manager warning
098f63d Rename command events, adjust compareRevisions
5a92e67 event: use cPickle for events
d2123cc utils: fix 'lock' variable reference
212414b bb.event: fix MsgBase ref in fire_class_handlers
3d3af81 Kill the uncaught exception handler
6f80455 build: fix -D with shell functions
aaa5588 build: send logging messages to the log file for python functions
25e519a utils: fix calls to close() in the lock/unlock functions
e2363f3 build: use a contextmanager for locks
b4eff9f build: use bb.process instead of os.system
87b6cdf process: add subprocess-based bits
c8d2dad Rename the ui 'init' method to 'main'
72c6953 cooker: use re match, not search in re_match_strings
431160c taskdata: use 'any' in re_match_strings
246bd18 cooker: add shutdown/stop methods
825e504 cooker: merge cookerState and cookerAction
ac4d926 cooker: use a pool, abort on first parse error
e5624a4 knotty: use enumerate for task waiting
7ffd6f8 knotty: shift non-interactive progress into a class
7ea3c96 Fix the <100 recipe progress fix
1e3b83f Error more pleasantly when trying to use python2.4
7481c11 Don't show a traceback for a python version error
c4e07bc cooker: don't choke on <100 recipes to parse
b8aedaa cooker: no cached in progressbar and add ETA
b890c19 cache: change to more incremental format
5bff229 cooker: pass back child exceptions to the server
8faec0b vercmp: don't choke on empty first version components
6810622 Use __file__, not sys.argv[0]
8a938d5 cache: ensure 'pn' is included in the pkgvars
a92caf4 knotty: drop the ETA from the progressbar for now
7a7e2f4 cooker: ensure that the cache sync completes
f4a06aa cooker: get number of threads in constructor
a519031 cooker: don't add info for skipped recipes
60226ff cooker: show progress bar before initializing the cache
6cd15a1 cooker: save progress chunk value (total/100)
739bb5a cooker: stop loading the cache for -b
065da89 cooker: don't fire unnecessary parse progress events
7846d8d cache: don't add info to cache if cache is disabled
7c9444e cache: sync the cache file to disk in the background
95d2f56 Simplify cache syncing
9ffbd9f Experimental usage of the 'progressbar' module
32ea766 Implement parallel parsing support
570bec3 cache: don't write out the cache unnecessarily
acca344 cache: create and use a RecipeInfo class
c632856 Prefer xrange over range for small performance gain.
e81fc74 Revert "svn fetcher: warn people to switch to SRCREV"
66b364c cache: make loadDataFull a classmethod
81a81a1 svn fetcher: warn people to switch to SRCREV
4df0d6a fetch: be more pythonic
b7d667f fetch: use os.path.join
87b6f7d fetch: add common helper _strip_leading_slashes()
d0d67a9 fetch: rename suppports_srcrev to supports_srcrev
814c80f cache: Add debug msg for a nonexistant dep file
84f0283 cache: use new style classes
c4d9390 cache: pyflakes/pep8/pylint cleanup
77d52cb cache: use set for clean, checked
f207bb7 cache: make use of defaultdict
9c7c18d Pre-explode rundeps/runrecs in CacheData
3a2176f persist_data: handle locked db for SELECT
f565258 BBHandler: use os.path in inherit()
b44100e BBHandler: simplify supports()
1d8a9b8 bb.cache: only log if the respective action was taken
7e1b709 bb.pysh: add Case support to format_commands
32b4bd9 bb.pysh: fix writing pyshtables all over the place
4addbd1 Move the pysh package into the bb package
489d175 Allow mercurial fetcher to follow tip
17ea152 Fix GraphViz .dot output for rdepends and rrecs
14889f9 Make 'cache is clean' message debug
3f7000c bitbake: lib/bb/fetch/hg: fix fetching from a mercurial repository
493f0cf Resurrect display of failed files
283b0a2 Access metadata vars as locals in python snippets
f3406dd Fix __getitem__ for DataSmart
6491ed9 fetchers: Use tar --exclude pattern to remove SCM files
c81cd1b Fix syntax issue and don't include 'd' in ui_queue
26eda93 Queue up events before the UI is spawned
30cef6b Fix another little bug with undefined var from cache
a964761 bb.cache: fix bug from last commit with loading from cache
3f40a2e Reduce bb.cache memory usage a bit
6665139 Fix FuncFailed construction
136a631 Restore FuncFailed argument compatibility
311c9f5 Only reference logfiles that exist
c90bfa5 Fix bitbake -k issue introduced by build exception cleanup
bfe4bec Don't show tracebacks for SystemExit or KeyboardInterrupt
7afe34e Fix exit code display for task failure
7011ae3 FIXUP: runqueue bb.debug refs
9897d56 Simplify build exception handling
1e7204a Turn Event into a new style class
39d61dc Work around issue with pickling of traceback objects
0533a84 Don't show uncaught exception message for KeyboardInterrupt
a4b195f Apply fix for issue where the loggers were constructed with the wrong class
9c2bcae Fix providerlog NameError
fc27334 Drop 'fn' arguments to bb.msg functions
55c0b36 Add pending deprecation warnings to the bb.msg functions
ecc68fa Switch bitbake internals to use logging directly rather than bb.msg
d3a45c7 Use logging in the knotty ui, and pass the log record across directly
4855548 Use the python logging module under the hood for bb.msg
3e57e63 Allow %20 in a file name in the SRC_URI
5c50d43 Ignore python warnings that come from places we don't care about
2dd8c01 Make DataSmart inherit the MutableMapping ABC
ebe3850 Split out 'find next buildable task' into a separate generator function
0d1034d Let the RunQueueScheduler control the number of active tasks
384c5cc Add the ability to use runqueue schedulers from the metadata
902b5da misc: Update the email address to a working one.
3631811 Fix IndexError encountered when a 'depends' flag references a nonexistant task
151c4a7 Drop the 'ui failed to start' message, as the ui_init does more in knotty
bac0c60 Make realfile optional for better_exec, using the existing fn in the code object
947577a linux-yocto/stable: update SRCREVs for 2.6.34.x -stable update
abebeca dtc: add patch to remove -Os for PPC
33d91c0 xserver-kdrive: add DEPENDS for libdrm
78cb0e6 mutter: Add COMPATIBLE_MACHINE list to prevent PPC build
f93fd69 lttng-ust: add COMPATIBLE_HOST to prevent ARM/MIPS world build
d6c4b83 linux-yocto: update to 2.6.37-rc8
d02e19a lzo: upgrade to version 2.04
5a859fc ncurses: upgrade to version 5.7
f13cb20 gcc-4.5.1: make c++ include path relative to "--sysroot"
2e3cdcb qemuimagetest: Add basic function check for connman
62caed8 qemuimagetest: Add basic function check for gcc/g++/make command in target
bcf8853 qemuimagetest: Add basic function check for rpm command
f6442e6 qemuimagetest: Add basic function check for zypper command
4c6d5a6 augeas: upgrade to version 0.7.4
6db06e1 gnutls: upgrade to version 2.10.4
a3a94a9 libtasn1: upgrade to version 2.9
8dcba80 parted: upgrade to version 2.3
a2d0921 distro_tracking_fields.inc: add fields for sysprof
560591e distro_tracking_fields.inc: add fields for blktrace
e5e1730 man-pages: fixup LIC_FILES_CHKSUM
cb79459 base.bbclass: Add error message for base_do_unpack failures
9e912c7 unfs-server: Fix PV issues
96e7518 When shutting down, send SIGTERM, not SIGINT
5850783 python-pygobject: Fix DEPENDS and RDEPENDS for native recipe
8f7fc82 gtk+: Fix BASE_RECOMMENDS, it doesn't need a PN suffix
278aad4 base.bbclass: Correct bb.debug parameters
33f67ee classes: Drop Handled/NotHandled eventhandler keywords, they don't do anything
b75330e bitbake.conf: Set a default hash policy globally, not just in the poky distro config
a270c0e patch.bbclass: Move vardepsexclude flag to be along side the function using the variable
78584e1 distro_tracking: update pulseaudio, ofono, netbase, etc.
2bf07e7 connman-gnome: update service name
a6faa8f connman: upgrade to version 0.65
fef3f7d tremor: upgrade to rev 17636
c7b9695 linux-firmware: upgrade to rev 40c0f950be7040614dc45df54e25e54d00e3b73b
e3cdcea libogg: upgrade to version 1.2.2
5ca4069 telepathy-mission-control: upgrade to version 5.7.1
37b15d1 glib-2.0: upgrade to version 2.27.5
ea9f82f dpkg: upgrade to version 1.15.8.7
cd522f9 telepathy-python: upgrade to version 0.15.19
55643cc telepathy-idle: upgrade to version 0.1.7
69c1e98 telepathy-glib: upgrade to version 0.13.6
2ad649c gst-plugins-good: upgrade to version 0.10.26
a943bea gst-plugins-base: upgrade to version 0.10.31
494b678 gstreamer: upgrade to version 0.10.31
aba871f bluez4: upgrade to version 4.82
cf359fb netbase: upgrade to version 4.44
675541b ofono: upgrade to version 0.37
ac36c63 pulseaudio: upgrade to version 0.9.22
40806b1 distro tracking updates
f1f14be man-pages: update to 3.32
4c96022 gthumb: update to 2.12.1
68fa944 libgdata: Updated to 0.7.1
5dd8644 bind: update to 8.7.2-P3
8494db7 man: updated to 1.6f, fixed patches
c0e6d3e matchbox-theme-sato-2: Updated to svn rev164 and add patch
3f07975 qt: add fotowall back into qt task
16cd831 qmmp: Update qmmp to 0.4.1
a5370af mc: update to 4.7.3
1b765b3 linux-tools.inc: Userspace tools should be compiled with the userspace compiler, not the kernel one
14762f7 kernel.bbclass: Ensure TOOLCHAIN_OPTIONS is passed to KERNEL_CC and KERNEL_LD
59ad91a unfs-server: Fix PV so it obeys the version number policy
acf3b8e gtk+.inc: Drop stale moblin override
8e7680b update-rc.d: Allow the primary deamon package to be specified in UPDATERCPN, update gsmd to use this
0e8f0f0 RDEPENDS, RRECOMMENDS -> RDPEPENDS_${PN}, RRECOMMENDS_${PN}
35e3443 task-poky-tools.bb: re-enable blktrace
3156e75 blktrace: Fix parallel make issue
6ee0c26 bb.utils: check if lock file is writable, to fix bug 606
93043c5 yocto/meta: update to 2.6.37-rc7
54d4b8e yocto-kernel: fix kmachine to deal with overrides
22cf272 attr: fix SRC_URI
3996510 acl: use correct Savannah download link
c7718d8 cdrtools: Fix LIC_FILES_CHKSUM
badecca cdrtools: add LIC_FILES_CHKSUM
3c87fa5 xserver-xf86: fix LIC_FILES_CHKSUM spelling and location
e4a8d4f poky-image-live.inc: Add LIC_FILES_CHKSUM
b089cf9 libsdl: Add LIC_FILES_CHKSUM
e54f08d meta-toolchain Add LIC_FILES_CHKSUM
a6bdae0 qemu-helper-nativesdk: Add LIC_FILES_CHKSUM and update LICENSE
c6fae98 task-sdk-host: Add LIC_FILES_CHKSUM
30d01a6 task-cross-canadian: Add LIC_FILES_CHKSUM
08e3d29 xserver-kdrive: Add missing DEPENDS on pixman
9951a44 u-boot: add LIC_FILES_CHKSUM
f6e8c33 xserver-kdrive: add LIC_FILES_CHKSUM
f54168b ldconfig-native: Add LIC_FILES_CHKSUM
a173551 poky-image.bbclass: Set LIC_FILES_CHKSUM
67d1fd9 distro_tracking: Add RECIPE_LAST_UPDATE info
8c3a7eb rootfs_ipk: The most recent opkg errors upon file overwrite. Until we fix package conflicts, disable this for now
cab983b qemuimage-testlib: Improve quoting causing problems under certain circumstances
6e63f4e linux-yocto: Fix branch name on behalf of Bruce after recent renaming
11833f7 qemuimage-testlib: Fix the check for running qemu processes
df74cf2 qemuimage-testlib: Ensure TOPDIR/BUILDDIR are set
d210909 qmmp: fix dependencies and packaging
db2389e quicky: fix Qt4 runtime dependencies
ba3e466 fotowall: fix runtime Qt4 dependencies
6a3b7c6 qmake2.bbclass: add space to end of DEPENDS_prepend
b3a195d binutils*.inc: Recipe format cleanup
674f999 binutils: delete unused patches
236face qemuimage-testlib: Add check for existence of image and correctness of ip address
2ed75cf apr-util: add --without-odbc to EXTRA_OECONF
b0a2c6d unifdef: add LIC_FILES_CHKSUM
7ac4b54 qemu-helper: add LIC_FILES_CHKSUM
6dca143 eglibc: Only package ld.so.conf, not /etc/rpc which then conflicts with netbase
21bc438 cross-localedef: add LIC_FILES_CHKCSUM
89fc010 linux-yocto: Add LIC_FILES_CHKSUM
45e0265 xserver-xf86: Add LIC_FILES_CHKSUM
564b778 gtk: Add LIC_FILES_CHKSUM
e553c79 qemu-helper: Add LIC_FILE_CHKSUMS
84c5aac gdb: Add LIC_FILE_CHKSUMS
cd3708a bootst-jam:  Add LIC_FILES_CHKSUM
3fbbb69 tzcode: Add LIC_FILES_CHKSUM
6af0877 unifdef Add LIC_FILES_CHKSUM
4df3466 python: Add LIC_FILES_CHKSUM
2b95a00 icon-naming-utils: Add LIC_FILES_CHKSUM
46adc1e desktop-file-utils: Add LIC_FILES_CHKSUM
4773a66 guilt: add LIC_FILES_CHKSUM
4b53a2e python-pygobject: remove older install of generate-constants and add BBCLASSEXTEND
8b08c0d perl: Add LIC_FILES_CHKSUM to native recipe
635fd19 xf86-input-vmmouse: add COMPATIBLE_HOST set to x86*
8330be8 db: add LIC_FILES_CHKSUM
3f6b329 connman: Update to 0.64 to solve build issue with .37 kernel headers
5929ead apr: add configure for NODELAY to mips-common
1c75a5d insane.bbclass: make LIC_FILES_CHKSUM failures report errors
06b7c2e linux-yocto: add dropped qemuppc configuration
983bd9a qemu: Add some checks before enabling KVM
3aa1cfc matchbox-stroke: Make as singleton
4efbda8 matchbox-keyboard: Make as singleton
9bf19c0 linux-yocto: update to 2.6.37-rc6
88d27ef qemu: match kernel headers to preferred kernel
f931476 linux-yocto-stable: fix qemux86 branch name
b241f63 apr: update x86_64 site config file
66fd56d apt: update use-host patch to support x86_64
585c506 send-pull-request: allow users to select git-send-email or sendmail
eca21e6 meta-emenlow: update to the new BSP layout
ab83f5f bitbake/depexp: fix early exit
b1a2255 opkg: Update to svn r590 to fix symbolic link issues
01cb362 owl-video-widget: bump PR after recent patch
642dd32 poky.bbclass: Move mirrors/premirrors to poky.conf
3bda5b1 bitbake/fetch: Fix fetch error
9c4e63b gnome-doc-utils: use BBCLASSEXTEND for native variant
68030f4 sanity.bbclass: Add check for '.' in PATH and error if found (see bug #572)
a034fad documentation/bsp-guide/bsp.xml:  Spell checked the file.
94f7dd2 documentation/bsp-guide/bsp.xml:  Updated Linux Kernel Configuration section.
1d671c4 documentation/bsp-guide/bsp.xml:  replaced the append file line in the template
6224858 documentation/bsp-guide/bsp.xml:  Updated the Linux Kernel Configuration section
885dbc7 documentation/bsp-guide/bsp.xml: Added reference to Kernel documentation.
3ad6173 documentation/bsp-guide/bsp.xml:  Updated Linux Kernel Configuration section.
5b5fe28 documentation/bsp-guide/bsp.xml:  Updated Display Support Files section.
6534947 documentation/bsp-guild/bsp.xml: Updated Miscellaneous Recipe Files section
8505df2 documentation/bsp-guide/bsp.xml: Updated Layer Configuration File Section
8e947f9 documentation/bsp-guide/bsp.xml:  Changed numbering scheme.
27ff33f documentation/bsp-guide/bsp.xml:  Commented out three sections.
7f18ffe documentation/bsp-guide/bsp.xml:  Updated Linux Kernel Configuration section.
23f5c94 documentation/bsp-guide/bsp.xml: Added a Display Support Files section.
6eed8ff documentation/bsp-guide/bsp.xml:  Removed the recipes-bsp/formfactor directory from the common structure.
eddd579 documentation/bsp-guide/bsp.xml:  Added a Miscellaneous Recipe Files section
7527f75 documentation/bsp-guide/bsp.xml:  Updated the Hardware Configuration Options section
1e68ee5 documenation/bsp-guide/bsp.xml:  Updated the Layer Configuration File section.
b3b9476 documentation/bsp-guide/bsp.xml:  Updated the Pre-built User Binaries section.
e71027e documentation/bsp-guide/bsp.xml:  Added the README section.
0ab1b2c documentation/bsp-guide/bsp.xml:  Added new "License Files" section.
cd9dc32 documentation/bsp-guide/bsp.xml:  Updated the introductary paragraph to the sections.
581bf7f documentation/bsp-work/bsp.xml:  Added crownbay BSP example to section 1.1.
6e82f12 documentation/bsp-guide/bsp.xml:  Updated common form for file structure.
91cf263 documentation/bsp-guide/bsp.xml:  Inserted text before the file structure example
49ebf6b documentation/bsp-guide/bsp.xml:  Created better BSP example base names
e2b180a documentation/bsp-guide/bsp.xml:  Added information about /binary
775b4ae documentation/bsp-guide/bsp.xml:  Fixed typo
5405b3d documentation/bsp-guide/bsp.xml:  Added note qualifying BSP file structure.
7e4b55b documentation/bsp-guide/bsp.xml:  Changed meta naming convention
4cd40db Revert "consolekit: Update to 0.4.3" - was a duplicate commit
127b82b task-poky-clutter: remove clutter-box2d from default build
5f50a9f libacpi: remove patch that is no longer needed by upstream
7b93c57 python-pygobject: add --disable-introspection
0077ae6 python-pygobject: Fix SRC_URI checksums
e591958 puzzles: Fix SRC_URI checksums
d1a225c patch: Fix SRC_URI[sha256]
5cfc36b web-webkit: Updated SVN Rev to 130 & added LIC_FILES_CHKSUM
fbf360b gtk-theme-darkilouche: moved to meta-extras
cb1f3e0 connman-gnome: Remove the applet and properties desktop icons
eb74a05 linux-yocto: remove or adjust to _ in branch names
703148f send-pull-request: Use current date in mail headers
2d65d83 gettext: Add source and license checkums
a09fbe3 gnome-doc-utils: ensure a native variant exists for document generation
3b54615 gnome-common: add native variant via BBCLASSEXTEND
c914a02 gst-plugins: fix for make 3.82
6a31a2a meta-environment: Added package of meta-environment-${TARGET_ARCH} for environment files.
05963b0 runqueue.py: set BB_TASKHASH approriately after moving to fork()
67d6814 rm_work: With the recent pseudo changes, this no longer makes sense
2d1007b bitbake/fetch: Only checksum downloads when they're first downloaded and a checksum is present
52aada2 bitbake/runqueue.py: Somehow the python environment mapping is failing so do it manually
60ccdaa poky-init-build-env: Enable all POSIX shells
86b6b09 poky-init-build-env: Breakup the environment script
9975c00 perl-native: Make the sstate checksum for perl depend on the hardcoded path until this is fixed
2e94e9a kernel.bbclass: Use KERNEL_IMAGE_BASE_NAME variable instead of the expanded equivalent. Fixes sstate rebuild issue
1e40bc8 rootfs_rpm: Add --ignoresize option when performing DB operations on a rootfs
0fb111b fakeroot/fakechroot: These have been replaced by pseudo, move to meta-extras
3f814ff sstate.bbclass: delete sstate files when doing cleanall
d4ba59c bitbake/fetch: Add missing return so if a checksum isn't present, it isn't checked
7abdf3e bitbake/fetch: Checksum validity fixes
cf41054 shasum-native: Drop recipe since we have internal handling in python for this now
edd290b base/utils.bbclass: Drop former checksum code now bitbake is handling this for us
b8d69d6 FetchData: add SRC_URI checksum
670c18c sanity.bbclass: add check for creation of long filenames
1993ca1 sanity.bbclass: allow minimisation of impact of more invasive sanity checks
2ec7757 sanity.bbclass: make indenting consistent
834f0c5 siggen.py: print taskname when seeing mismatched hash in cache
63dcec9 distro_tracking: change owner of some recipe
2e73759 distro_tracking: Fix name inconsistency
995d467 ed: Change bin path
eac0898 documentation/yocto-project-qs/yocto-project-qs.xml: Fixed grammar problem
ba3b0db documentation/kernel-manual/figures/kernel-architecture-overview.png: updated figure
1f3e313 bitbake Revert bitbake exec() and go back to fork() for performace wins (first draft)
81f3d46 pseudo: Fixup for cache problem
3abc81b bitbake.conf/poky-env-internal: Adjust PSEUDO variables to match pseudo enabled/disabled modes
f04e6a5 scripts/bitbake: Add wrapper script which ensures pseudo is built and available
38a4698 poky-default-revisions.inc: Update pseudo revision to include exec/fork improvements and speed optimisations
68ddced poky-env-internal: Search scripts before the bitbake directory so we can override bitbake's main script
a86f960 bitbake/runqueue: Revert previous setscene noexec changes and ensure setscene stamp exists for setscene noexec tasks
56ef2a0 bitbake/runqueue: Clean up message log levels
b7b40ed Update to the latest swabber.
84263db Calculate CCACHE_DIR by calling host's ccache config.
4c72af6 Swabber's update_distro automatically updates the blob now.
b544d01 Stop using hardcoded paths, use new Ubuntu and generic filters.
8021200 lsbsetup: add missing directory install
137286b distro_tracking: update status for upgraded recipes
111146c distro_tracking_fields: Update entries with corrections
3a569bb Revert "gst-plugins: fix for make 3.82"
ac43646 gst-plugins-base: add avahi to DEPENDS
06570b8 gst-plugins: fix for make 3.82
258f8ce contacts: fix for make 3.82
3f64aed dates: fix for Make 3.82
3188c6a web-webkit: fix for make 3.82
a9ce04f owl-video-widget: fix Makefile for super strict make 3.82
67622b4 libowl-av: fix for Make 3.82
8fc07ca gstreamer: fix to comply with make 3.82's stricter parser
ece252c udev: Add rule to create /dev/fb to fix igep0020 platform X boot issue
d9314e1 distro_tracking: update status for upgraded recipes
3df335a python-pygobject: upgrade from 2.21.1 to 2.27.0
d476a23 gcc_4.5.1: Move the license related information in the right file
3faa3c7 distrodata: fix message
d436d3b eglibc: organize the recipes lic and other meta data in common file
310b6e4 README.hardware: Add Atom PC image flashing documentation
6ae9a63 world-broken.inc: Fix override values to include correct prefix
31d804f fstests: upgrade to svn revision #426
a7f3a2f patch-2.6.1: implement new patch recipe with latest upstream
f528a15 patch_2.5.9: clean up the recipe
e9d82df gst-ffmpeg: upgrade to version 0.10.11
e78d586 Introduce SDK_VERSION which is based on DISTRO_VERSION for fixing bug 586
fcd14a2 external-python-tarball: add chrpath to the tarball
c2f93b9 chrpath: add nativesdk variant
ae4f5c9 Add extra parameters options for poky-qemu scripts
fded753 distrodata: add eventhandler for checkpkg task
605f8c9 distro_tracking: fix VERSION Misspellings and add missing recipe versions
af3be58 recipes-multimedia: Update SUMMARY and DESCRIPTIONS
5c85064 recipes-kernel: Update SUMMARY and DESCRIPTION
cda749d recipes-graphics: Add SUMMARY and update DESCRIPTION
04e811c recipes-gnome: Add Summary and Description information
f992d6b recipes-extended: Add Summary information
8bcb64c recipes-devtools: Add Summary information
2e0a8af avahi: Fix typo in summary
2c37d41 Add glossary for PACKAGE_DESCRIPTION and PACKAGE_SUMMARY for binary packaging
cc8ea76 kernel.bbclass: Set vardepsexclusive for KERNEL_IMAGE_BASE_NAME
c9df637 kernel.bbclass: Rename do_deploy so the function can be overridden in recipes
aa1a780 siggen.py: make sure stamp directory existing
15f45b3 openssl: restore -Wall flag
b99fd03 sanity.bbclass: Check if DISPLAY is set when IMAGETEST is set
ace52b0 bitbake/runqueue.py: We should just failoutright in scenequeue for noexec tasks, not skip them so stamps are created
e497b89 scripts/poky-qemu: Improve tmp layout assumption
bb783af runqueue.py: use correct task ID when checking validity of setscene tasks
5fadc9b poky.conf: adjust variable whitelisting to fix sstate checksums
80e6408 bitbake: add optional expansion to getVarFlag()
a52e406 bitbake: allow excluding dependencies of variables
27c1171 documentation/bsp-guide/bsp.xml:  General edits.
e7f5bc2 bsp-guide: correct BBPATH example
ef8e0d6 documentation/kernel-manual/kernel-how-to.xml:  added newline character
22cd27d documentation/kernel-manual/kernel-how-to.xml:  fixed typo bug 588
e8017dc gnome-desktop: add --disable-desktop-docs
497b759 linux-yocto/stable: add blktrace configuration to standard branch
a836ac4 rpm: Fix LIC_FILES_CHKSUM to use COPYING.LIB
526da3b lsbsetup: fix install process
b3b25c8 clutter-box2d: Add LIC_FILES_CHKSUM
2f845ae libsoup: Add LIC_FILES_CHKSUM
8d77988 libexif: Add LIC_FILES_CHKSUM
f69986d gst-meta-base: Add LIC_FILES_CHKSUM
4f25751 libxscrnsaver: Add LIC_FILES_CHKSUM
b100969 task-poky-clutter: Add LIC_FILES_CHKSUM
e1e5c83 mutter: Add LIC_FILES_CHKSUM
198baaf table: Add LIC_FILES_CHKSUM
c6115dc clutter: Add LIC_FILES_CHKSUM
9ad63ed gtkhtml2: Add LIC_FILES_CHKSUM
8da7be2 rpm: Add LIC_FILES_CHKSUM
153d79a patch: Add LIC_FILES_CHKSUM
984162e meta-ide-suppport: Add LIC_FILES_CHKSUM
69ad383 linux-yocto: fix machine compatibility
a6e6af9 qemuppc: update 2.6.37 SRCREV
3a78838 usbinit: Fix License checksum issue
a15eff0 qemu-config: Fix License checksum issues
56973ee update-modules/udev-extraconf: Fix license checksum handling
98d5b91 linux-libc-headers: Correct license checksum
fd3e7d3 tcl: Correct license checksums
03ae4a6 Correct LIC_FILES_CHKSUM typos
042ba68 image-swab: Correct PARALLEL_MAKE typo
d9573b4 Correct DESCRIPTION typos in various recipes
1b26331 distro_tracking_fields: added missing quote
33fccd7 task-poky-lsb: removing missing packages
f39dae9 creat-lsb-image: download lsb test suite and creat a image with lsb test suite
bc61818 lsbsetup: Set up lsb test environment on target platform
aac5f5c qemu: update arm timer handling
48d00ad linux-libc-headers-yocto: use common linux-yocto routines
0e7d995 yocto-kernel: factor common routes, update to 2.6.37 and branch renaming
3ca38b7 update-modules: update license info
a14c385 usbinit: update license info
f68895d qemu-config: update license info
f3fa12b udev-extraconf: add license info
937812c diffutils: upgrade to version 3.0
b341207 fakechroot: upgrade to version 2.13.1
082c4e2 fakeroot: upgrade to version 1.14.5
1901134 udev: upgrade to version 164
8d702d7 sysprof: add system-wide performance profiler for Linux.
732a117 documentation/poky-ref-manual/ref-bitbake.xml:  Completed general edits.
be622ae documentation/kernel-manual/kernel-concepts.xml:  Re-worded a note to state best practices for organizing shared features.
579b5c2 documentation/kernel-manual:  Added Bruce Ashfields review comments.
9f4c630 documentation/poky-ref-manual:  changes applied from a patch submitted by Cyril Humbert.
111f067 documentation/poky-ref-manual:  General edits up the Parsing section.
fcbacff documentation/poky-ref-manual: Changed spelling of bitbake to "BitBake" when used in text.
252cecf3 documentation/poky-ref-manual:  English scrub performed for consistency.
57d38a7 documentation/poky-ref-manual:  Updated Mailing Lists and IRC sections in Appendix I
11cdfab documentation/yocto-project-qs:  Added the gnome-doc-utils package to the Fedora required pacakge list.
4fe7cb5 documentation/poky-ref-manual:  Fixed two typo's
2f4db31 documentation/poky-ref-manual:  Fixed to mis-spellings
6d46bc3 documentation/poky-ref-manual:  Updated the list of links to include a link to the Yocto Project site.
23dcc1b documentation/kernel-manual:  Added an image to the authorgroup so a title would display in the HTML version of the manual.
ddbd172 documentation/kernel-manual/kernel-how-to.xml:  Completed scrub to the text.
5bda926 documentation/kernel-manual/kerenel-how-to.xml:  Edits to clean up text.
1722898 documentation/kernel-manual/kernel-manual.xml:  Changed the copyright statement to conform to sharing.
14a8edb documentation/kernel-manual/kernel-concepts.xml:  Updated the text so that the conceptual figure showing the kernel is out.
15cf572 documentation/kernel-manual:  Modified to call new chapter structure.
2a993a0 documentation/kernel-manual: Added these files so the book could have chapters.
d2e5401 documentation/kernel-manual/yocto-project-kernel-manual.xml:  Removed this file so manual could be structured into a book with chapters.
c272830 documentation/poky-ref-manual/poky-ref-manual.xml:  Changed the revision date to 24 November 2010
62ef8bd documentation/kernel-manual/Makefile:  changed the pdf, tgz, and html output files to be named "kernel-manual"
ce3f71a poky/.gitignore:  updated the lines for the kernel manual
05c8e13 documentation/kernel-manual/Makefile:  changed the name of the PDF output file to "kernel-manual.pdf"
c479301 documentation/kernel-manual/kernel-manual.xml: added this file so that PDF could be built.
fe994de poky/.git/.gitignore:  added the yocto-project-kernel-manual.pdf file
d468cc4 documentation/kernel-manual/yocto-project-kernel-manual.xml:  removed the code that inserts the image.
5ed39a3 documentation/kernel-manual/Makefile: Added code to create a PDF version.
5d64bb0 documentation/kernel-manual/figures/kernel-title.png:  Added a PNG file to display in the PDF version on the title page.
b89a971 documentation/kernel-manual/yocto-project-kernel-manual.xml: Added a new section called "BSP: Creating:
7dbdd91 documentation/kernel-manual/style.css:  Changed h2 through h6 styles.
5b10a72 documentation/kernel-manual/yocto-project-kernel-manual.xml:  Removed sections not fit for 0.9 release.
db82144 .git/.gitignore:  Added files for the new kernel document.
2982e7c documentation/kernel-manual/yocto-project-kernel-manual.xml and yocto-project-kernel-manual-customization.xsl:  Renamed files with correct spelling for kernel.
bad46ab documentation/kernel-manual/yocto-project-kernal-manual.xml: and yocto-project-kernal-manual-customization.xsl removed from tree.
3e7a8a6 documentation/kernel-manual/Makefile:  fixed mis-spelling of kernel for files
000f052 documentation/kerenl-manual:  New directory and files for kernel manual.
aa58345 documentation/yocto-project-qs/yocto-project-qs.xml:  Corrected poky-qemu command example in the 'Using Pre-Build Binaries and QEMU' section.
eccaafa documentation/poky-ref-manual/development.xml:  Fixed orderedlist and itemizedlist spacing.
a20a167 Poky Reference Manual:  General edits to the developing chapter.
8feae13 Poky Reference Manual: Added INC_PR documentation.
e7e1248 BSP Guide and BSP Chapter:  Sync'ed these two files
12d1378 BSP Developers Guide:  Edits to text
0e4df95 Enable '-opengl' option for qt4 in order to generate libQtOpenGL.so qt4-x11-free: Only build opengl for x86 platforms since only these have GL support at present
4806041 liburi-perl: Add perl-uri
d905d18 libxml-perl: Add libxml-perl
0d5e71e libxml-parser-perl: Fix bug of empty package of libxml-parser-perl.
6e4bfac perl: Fix adding GDBM_File module for LSB test.
56c897d texinfo: Add new package
47a1f50 consolekit: Update to 0.4.3
f07b1a2 Drop variables that do nothing
05053ef cross-canadian: Update after PN changes to include TARGET_ARCH
88ee037 task-cross-canadian: Ensure it reflects TARGET_ARCH in PN
2021e2a Using TRANSLATED_TARGET_ARCH instead of TARGET_ARCH.
322d6ab cross-canadian: pkg name includes target arch
c47cfc5 bitbake/bitbake-runtask: Since the parent has set the environment up cleanly we don't need to filter this ourselves anymore
47efcfd poky.conf: move the SDK install into version directories
a1175b8 qemu: Enable KVM support on x86/x86-64 host
3d08b9f SRC_URI Checksums Additionals
ba5e0b9 Make poky-qemu and related scripts work with arbitrary SDK locations
7581654 poky-env-internal: Allow the environment variable POKYCONF to provide the basis for the working "conf" directory.
c91caee devshell: Clean up devshell code so this task doesn't polute the global namespace
0ba9a9f bitbake: Overhaul environment handling
39dd604 poky.conf: add more hash whitelist
4745ff6 hostap-conf: update LICENSE and LIC_FILES_CHKSUM info
73232c7 bluez-dtl1-workaround: update LIC_FILES_CHKSUM info
3c4ebf0 orinoco-conf: update LICENSE and LIC_FILES_CHKSUM info
409ac23 makedevs: update LIC_FILES_CHKSUM info
c538ef3 bitbake/cooker: fix idle command processing in servers
fdd034d world-broken: Update with Clutter items
0896127 openssl-native: disable execstack flag to prevent problems with SELinux
0f716e6 xserver-xf86-config: add license checksum
a1d635b xserver-nodm-init: add license checksum
c344349 x11-common: add license checksum
b9694bd distro_tracking: update gupnp, gst-ffmpeg, gst-fluendo-mp3, etc.
033e430 pulseaudio: upgrade to version 0.9.21
2c05c86 gst-fluendo-mpegdemux: upgrade to version 0.10.62
71e11d6 gst-fluendo-mp3: upgrade to version 0.10.15
f84c6d2 gupnp: upgrade to version 0.14.0
2628ea7 gssdp: upgrade to version 0.9.0
b45b75b modutils-initscripts:Add license checksum to bb file
6592cdc libart-lgpl: add mips art_config.h
918ebfb telepathy-python: Make sure py files are packages correctly
aa5822b gnome-icon-theme: Disable PACKAGE_ARCH='all' until we unbreak it for multiarch builds
2feaffa poky.conf: add BB_TASKHASH to BB_HASHBASE_WHITELIST
5526a64f bitbake/goggle: add a ProgressBar for parse progress
48e2757 bitbake/goggle: automatically show most recently added  message
b9617bf bitbake/xmlrpc: Modify xmlrpc server to work with Python 2.7
84384aa bitbake/crumbs: add optional pbar parameter to RunningBuild.handle_event()
1307d64 bitbake/depexp: Factor ProgressBar into a separate class in crumbs/
8cbaa9f bitbake/goggle: interaction tweaks
cb6eff7 bitbake/crumbs: fix the event name determination
bd8ff30 bitbake/crumbs: do the test for ignored messages sooner
96da2ea bitbake/crumbs: Fix crumbs UI for bitbake event class name changes
4336d67 siggen.py: fix the wrong usage on BB_TASKHASH_WHITELIST
55859b9 imagetest-qemu: Allow the task to run after any rootfs is created and also standalone
7aacc31 bitbake/data_smart: Refactor _append/_prepend code to remove duplication
c354955 bitbake/data_smart: Fix append/prepend/override ordering issue
9d0d2b0 Remove unused tunctl-src/Makefile from scripts/
01da080 Add sanity test scenarios for -lsb images
47cb074 task-poky-tools: disable blktrace due to build failures
392b3ea gupnp: add gnome-icon-theme to DEPENDS
63b85e7 sanity.bbclass: Warn people when TERMCMD is set to a non-installed program
d5f0807 local.conf.sample: Note extra variables required when disabling en_US locale
1b679bf libart-lgpl: Add config.h for x86_64
b407939 libnl: fix typo in the Makefile fix
6940c96 preferred-xorg-versions: Update to match new versions
beb4b51 eee-acpi-scripts: Update to 1.1.11
5878737 distro_tracking_fields: update fields for devel/toolchain recipes
bc02b53 subversion: upgrade from 1.5.5 to 1.6.13
f20cb30 gtk-engines: Update to 2.20.2
06aacf6 gnome-icon-theme: Update to 2.31.0
b8b13dc gnome-desktop: Update to 2.32.1
b651203 web: Update to svn r129
25283b9 x11vnc: Update to 0.9.12
d0c0128 x11perf: Update to 1.5.2
48ba76a puzzles: Update to svn r9023
ccdd26d ethtool: Update to 2.6.36
f49a3c4 consolekit: Update to 0.4.3
4fd6d32 acpid: update to 1.0.10
3e597cd tidy: Add license checksum
443178d pointercal: Add license checksum
88697ed bluez-hcidump: update LICENSE and LIC_FILES_CHKSUM info
4bbb8a9 task-poky-boot: update LIC_FILES_CHKSUM info
cb2c6b8 task-poky-nfs: update LIC_FILES_CHKSUM info
f3dc033 ppp-dialin: update LIC_FILES_CHKSUM info
e24849e task-poky-qt: update LIC_FILES_CHKSUM info
a26cd44 task-poky-standalone-sdk-target: update LIC_FILES_CHKSUM info
95a9d52 task-poky-apps-x11-pimlico: update LIC_FILES_CHKSUM info
4371159 telepathy-glib: update LIC_FILES_CHKSUM info
4f6cde5 task-poky-basic: update LIC_FILES_CHKSUM info
58dac9a task-poky-sdk-gmae: update LIC_FILES_CHKSUM info
90b69e9 task-poky-standalone-gmae-sdk-target: update LIC_FILES_CHKSUM info
28cd1e7 task-poky-tools: update LIC_FILES_CHKSUM info
0c7a4e0 task-base: update LIC_FILES_CHKSUM info
a02edf1 task-poky-x11-sato: update LIC_FILES_CHKSUM info
7d6f03c formfactor: update LIC_FILES_CHKSUM info
2e671b5 task-poky-sdk: update LIC_FILES_CHKSUM info
3b32beb task-poky-lsb: update LIC_FILES_CHKSUM info
f003c9f task-poky: update LIC_FILES_CHKSUM info
70c63bb run-postinsts: update LIC_FILES_CHKSUM info
da81545 distro_tracking_fields: update fields for devel/toolchain recipes
4b79150 tcl: upgrade from 8.5.8 to 8.5.9
37b6d8b git: upgrade from 1.7.2.1 to 1.7.3.2
bd72444 makedepend: upgrade from 1.0.2 to 1.0.3
01e53ca m4: upgrade from 1.4.13 to 1.4.15
88dbadf distro_tracking_fields.inc: update insserv and libatomics-ops
3432984 libatomics-ops: recipe updates, fix build for mips
1f42782 insserv: upgrade to version 1.14.0
9aef79e keymaps:Add license checksum and update the GPL information
32662fd fstests:Add license checksum and update the GPL information
d1cd2fd initramfs-live-boot:Add license checksum to bb file
a12aa5a initramfs-boot:Add license checksum to bb file
7adf2aa initramfs-live-install:Add license checksum to bb file
e78c789 initscripts:Add a patch of GPLv2 license and its checksum to bb file
ccd590b siggen.py: set 'runtaskdeps' correctly
a0033b6 bitbake/utils.py: Improve traceback to be more helpful/clear to users
1a0c39e0 bitbake/utils.py: Ensure the last lines of functions are printed in tracebacks
a80a839 Drop AUTOTOOLS_STAGE_PKGCONFIG variable as its not used anywhere
1d505f2 Revert "qemugl: upgrade to git commit 33466cd83c2a9d7d3fb9fe437fb6a4d6fbd866b9"
13edb27 Revert "gssdp: Upgrade to version 0.9.0"
0284df3 Revert "gssdp: Disable gobject introspection explicitly"
cdc640f libart-lgpl: Add missing config file - allows builds on PowerPC
5592bf2 librsvg: fix gdk-pixbuf-query-loaders not found in path
d2de3dc libnl: fix parallel make
b82ef69 opkg-config-base:Add license checksum to bb file
35c948f gssdp: Disable gobject introspection explicitly
0dc6070 table move missing patch back to correct location
0c1d76f task-poky-clutter: remove cairo packages
0dddee5 preferred-xorg-versions: updated for lastest package updates
b60681e world-broken: cleanup post reorg and world cleanup
7e4e45a dhcp: fix cross build
070f173 bind: add new recipe
d36f6f4 table.inc: correct version number
b721e08 eds-tools: Fix SRCREV and add LIC_FILE_CHKSUM
ce4d631 gobject-introspection: Fix pathfix.patch to correct glibconfig.h location
4bcba3f qemugl: upgrade to git commit 33466cd83c2a9d7d3fb9fe437fb6a4d6fbd866b9
a3a4960 mesa-dri-glsl-native: upgrade from 7.8.2 to 7.9
5358036 mesa-demo: add new recpies mesa demo 8.0.2
3562f2b glew: add new recipes glew 1.5.7
5d17116 mesa: enable glu
770cbc0 mesa-xlib: upgrade from 7.8.2 to 7.9
742f217 mesa-dri: upgrade from 7.8.2 to 7.9
2e95941 talloc: add new recipes talloc 2.0.1
0325530 libxml2-native: remove the --without-debug option
af03613 sqlite: upgrade from 3.6.23 to 3.7.3
21866d7 zeroconf: Fix LICENSE and LIC_FILES_CHKSUM info
ba500f0 telepathy-idle: Fix LICENSE and LIC_FILES_CHKSUM info
192c44e pulseaudio: Fix LICENSE and LIC_FILES_CHKSUM info
7bd5e70 libtelepathy: Fix LICENSE and LIC_FILES_CHKSUM info
f58ff34 libsamplerate0: Fix LICENSE and LIC_FILES_CHKSUM info
cebfbae libomxil: Fix LICENSE and LIC_FILES_CHKSUM info
0f95bdb gupnp: Update LICENSE and LIC_FILES_CHKSUM info
a3c1bb3 gst-fluendo-mpegdemux: Fix LICENSE info
1d579ec gst-fluendo-mp3: Update LICENSE and LIC_FILES_CHKSUM info
fa3f028 gst-ffmpeg: Update LICENSE and LIC_FILES_CHKSUM info
efc0643 clutter-gst: Update LICENSE and LIC_FILES_CHKSUM info
9cdb0ad linux-firmware: Update LIC_FILES_CHKSUM info
57fdd84 gthumb:Add license checksum to bb file
429a526 qemu: Add license checksum
aabb6ee matchbox-stroke: Add license checksum
6697812 matchbox-session-sato: Add license checksum
20c52b0 libfakekey: Add license checksum
d505b06 xvinfo: Add license checksum
027c385 metacity: Add license checksum
818cb80 matchbox-wm-2: Add license checksum
5209a73 libgalago: Add license checksum
d41496a libcanberra: Add license check sum
4bcce42 gtk-theme-torturer: Add license check sum
a9ad725 gtk-doc: Add license checksum
cab03ef distro_tracking: gupnp-av, gupnp-tools, ofono, etc.
760675e libgsmd: Upgrade to rev 5394
363fd6e gupnp-av: Upgrade to version 0.7.0
a52de6f ofono: Upgrade to version 0.33
0cd2a26 gssdp: Upgrade to version 0.9.0
91eec68 gupnp-tools: Upgrade to version 0.8
a2042b5 gst-openmax: Upgrade to version 0.10.1
c5cfd67 wpa-supplicant: Upgrade to version 0.7.3
35793fd minicom: Upgrade to version 2.4
a5de5a7 connman: Upgrade to version 0.63
8399ca4 telepathy-mission-control: Upgrade to version 5.7.0
d239fef telepathy-python: Upgrade to version 0.15.18
63aaa4e gypsy: Upgrade to version 0.8
07d5f6c cmake-native: Upgrade to version 2.8.3
36baa90 flex:Add license checksum and add the license information
c942f83 base-files:Add license checksum to bb file
00c5be8 qmmp:Add license checksum to bb file
e2444d6 mc:Add license checksum to bb file
6d70138 libxml-simple-perl:Add license checksum to bb file
a82702d libtheora:Add license checksum to bb file
dcf68c3 dtc:Add license checksum and add the GPL information
c373cfc lsof:Add license checksum to bb file
85266fa make:Add license checksum and update the GPL information
c4c11d9d quilt:Add license checksum and update the GPL information
d5132c5 python-scons:Add license checksum and update the GPL information
5d378ef python-pyrex:Add license checksum and update the License information
f48c8d8 python-pygtk:Add license checksum and update the GPL information
d5e9c26 python-pygobject:Add license checksum and update the GPL information
373e5c2 python-imaging:Add license checksum to bb file
6b306bc python-dbus:Add license checksum to bb file
75f93fe python:Add license checksum to bb file
246daac prelink:Add license checksum to bb file
96a1ab0 perl:Add license checksum to bb file
7eca517 mpfr:Add license checksum and update the GPL information
7a2f8ad xf86-video-omapfb: add license checksum
499b73a xf86-video-intel: add license checksum
155b0aa xf86-input-synaptics: add license checksum
4d22fc5 xf86-video-vesa: add license checksum
05c4828 qemugl: add license checksum
e8127b7 libdrm: add license checksum
b6f8686 iputils: add license checksum
5f4801b fotowall: add license checksum
3c3c8d7 libgdata: Add 0.6.5 as new recipe
97f78fe gcc:Add license checksum and update the GPL information
ed40911 gdb:Add license checksum and update the GPL information
8eea67c gnu-config:Add license checksum and update the GPL information
0727e29 libconvert-ans1-perl:Add license checksum and update the GPL information
9a5cf01 libtimedate-perl:Add license checksum and update the GPL information
41b9ce7 libxml-parser-perl:Add license checksum to bb file
8d23d2a console-tools:Add license checksum and update the GPL information
6230d87 gobject-introspection:Add license checksum to bb file
76ca305 consolekit:Add license checksum to bb file
b4b4f02 poky-feed-config-opkg: Add license checksum to bb file
7bb3e4f opkg-collateral:Add license checksum to bb file
2de0ee1 modutils-collateral:Add license checksum to bb file
16c22c6 quicky:Add license checksum to bb file
b9e4001 u-boot-mkimage: update license info
409b710 ubootchart: update license info
f5c6912 yaffs2-utils: update license info
b9031a6 zaurusd: update license info
f03b233 v86d: update license info
713262b tinylogin: update license info
39611d3 tiff: update license info
02807a0 setserial: update license info
3fe1902 resolvconf: update license info
e90278a parted: update license info
f8fe648 ncurses: update license info
bc1d78d hdparm: update license info
7fdffff fakechroot: update license info
11566ac diffutils: update license
97951e9 aspell: update license
611ea2f xrandr: fix License Checksum
386a1f7 xproto: disable spec generation
b7ab194 libfontenc: add dependency on font-util
9e87cbd librsvg: append SRC_URI after inherit
1089257 font-alias: Drop patch already applied upstream
9a3f25d package-index: Fix after noexec changes
6e440f8 native.bbclass: Mark various package functions as noexec since they don't do any work
58396a5 bitbake/runqueue: Teach scenequeue about noexec tasks (since they don't do anything we can assume they're always successful
8044fc3 native.bbclasS: Add handing to remap RDEPENDS fields and avoid crossed target and native dependency trees
2bcbb2f font-alias: Set RDEPENDS to exclude encodings in the native case
a146aa1 font-util: Set RDEPENDS for virtclass-native to exclude encodings to copy DEPENDS
d4125bc bitbake: Simplfy pre and post cooker hooks
c020207 utility-tasks: Switch listtasks to use bb.plain() for printing output
8a391c3 rm_work: Set BB_SCHEDULER as done in OE.dev to ensure disk space is freed sooner rather than at the end of the build
144d1b5 qemu: fix failure to find zlib header files during configure
91ef6ae curl: Fix gnutls option (append ordering was incorrect)
971fc21 scripts: Remove obsolete stage-manager scripts
e1ab1e9 scripts/poky-env-internal: Further cleanups
f5e142a scripts/poky-env-internal: Remove unset variables
bfa6649 scripts/poky-env-internal/image-swab.bbclass: Remove OEROOT references
a39f335 bitbake/runqueue.py: Fix stamp handling for noexec tasks
32d1125 distro_tracking_fields.inc: update sudo, libpam, and mtools
70be879 mtools: add version 4.0.15
698cef8 libpam: upgrade to version 1.1.3
c144f16 sudo: upgrade to version 1.7.4p4
345f777 preferred-xorg-versions: Updated to reflect recipe updates
80f592c liberation-fonts: Added version 1.06, PREFERRED_VERSION is still 1.04
b43d82d gnome-doc-utils: Update to version 0.20.2
5094074 cronie: Update to version 1.4.6
333ca67 libgnome-vfs: Update to version 2.24.4
b3934f3 libart-lgpl: Update to version 2.3.21
4127ac1 librsvg: Update to version 2.32.0
cfb06f9 freetype: Update to version 2.4.3
da7c644 libxcb: Update to version 1.7
eb0ca3f xrandr: Update to version 1.3.4
c653713 encodings: Update to version 1.0.4
96dc0e2 font-alias: Update to version 1.0.3
3b044b6 font-util: Update to version 1.2.0
46f5228 libfontenc: Update to version 1.1.0
000eb8a libice: Update to version 1.0.7
8debd91 libpciaccess: Update to version 0.12.0
ffb24af libsm: Update to version 1.2.0
3ecef76 libxau: Update to version 1.0.6
fb0bd9a libxcomposite: Update to version 0.4.3
80d2d05 libxcursor: Update to version 1.1.11
767ba22 libxdamage: Update to version 1.1.3
cd60f3d libxdmcp: Update to version 1.1.0
08f3edf libxext: Update to version 1.2.0
d65517a libxfixes: Update to version 4.0.5
9e79a55 libxfont: Update to version 1.4.3
ca1f5d4 libxft: Update to version 2.2.0
287ec4b libxi: Update to version 1.4.0
0071b8b libxinerama: Update to version 1.1.1
5f6f886 libxkbfile: Update to version 1.0.7
69cdecf libxmu: Update to version 1.1.0
0ad8d9a libxpm: Update to version 3.5.9
e966497 librandr: Update to version 1.3.1
690c9bd librender: Update to version 0.9.6
23737dc libres: Update to version 1.0.5
eb8aa75 libxt: Update to version 1.0.9
129a3a8 libxtst: Update to version 1.2.0
aea4b37 libxv: Update to version 1.0.6
5d83b77 xkeyboard-config: Update to version 2.0
56e6da4 libxxf86dga: Update to version 1.1.2
d184078 libxxf86vm: Update to version 1.1.1
ed874ed xtrans: Update to version 1.2.6
3e07bee xproto: Update to version 7.0.19
2b4650f util-macros: Update to version 1.11
df8d889 lttng-control: Update to version 0.88
af67762 lttng-ust: Update to version 0.8
5de3fbc liburcu: Update to version 0.4.8
f35839e makedepend:Add license checksum to bb file
0b43623 m4:Add license checksum to bb file
7ef481c libpcre:Add license checksum to bb file
d4d2e21 libmpc:Add license checksum and update the GPL information
693e593 intltool:Add license checksum to bb file
2cad70d gmp:Add license checksum and add the GPL information
4928ad8 distcc:Add license checksum to bb file
cb45aa0 diffstat:Add license checksum to bb file
d68efb6 byacc:Add license checksum and add the GPL information
a9489ba bison:Add license checksum to bb file
c8efa81 automake:Add license checksum to bb file
dae0331 autoconf:Add license checksum and add the GPL information
0b87aa1 psmisc:Add license checksum to bb file
9e4e8ce pax-utils:Add license checksum to bb file
ab2596d mtools:Add license checksum to bb file
20fbe9f modutils:Add license checksum to bb file
56fa05a libpam:Add license checksum to bb file
0b35808 libgdbus:Add license checksum and update the GPL information
890e14c libffi:Add license checksum to bb file
5e1c8ff libatomics-ops:Add license checksum and update the GPL information
429d583 libacpi:Add license checksum to bb file
b2ff1cd insserv:Add license checksum and update the GPL information
483ab5b gssdp:Add license checksum and update the GPL information
f3a3b93 expat:Add license checksum to bb file
a391494 dosfstools:Add license checksum and update the GPL information
8ca67f7 chrpath:Add license checksum and update the GPL to bb file
78801f4 beecrypt:Add license checksum and update the GPL to bb file
7592186 apt:Add license checksum to bb file
7f9cf21 apr-util:Add license checksum to bb file
0ec2c23 apr:Add license checksum to bb file
8ad0cb0 acpid: Add license checksum to bb file
b2470c8 minicom: Add license file checksum and update the GPL information to bb file
69c4983 dpkg:Add license file checksum to bb file
7d3a380 lttng:Add license file checksum and update the GPL information
2d72fd5 libxtrap:Add license file checksum to bb file
91c1a0f ttf-bitstream-vera:Add license file checksum to bb file
d383c46 libxprintutil:Add license checksum to bb file
a347504 libxprintapputil:Add license checksum to bb file
5b38a2a libxpm: Add license file checksum to bb file
2050a72 libunique:Add license file checksum to bb file
e2b9cab liberation-fonts:Add license file checksum to bb file
533a003 libart-lgpl:Add license file checksum and update the GPL information
4cf8bff gnome-doc-utils:Add LGPL file and GPL file checksum to bb file
34d0256 gccmakedep: Add license checksum to bb file
67b232f galago-daemon: Add license file checksum and update GPL information
d249f41 task-poky-tools: fix up blktool
998ceae blktrace: new package
34660ef libsndfile: remove patches that are no longer required by upstream
53aff7d utility-tasks.bbclass: Move distro related tasks to distrodata.bbclass
836b290 imake: upgrade from 1.0.2 to 1.0.4
8de3400 pango: upgrade from 1.28.0 to 1.28.3
e9d144f cairo: upgrade from 1.8.10 to 1.10.0
89ab1ac curl: fix native dependency
4d6a8d2 sanity.bbclass: add wget to required utilities
94b1fda web_svn: Fixup Patching and add libowl
cfe12ef Meta: Recipe Reogranization
762fd6b pimlico-tasks: remove patch
f92b248 ed: fix patch and LIC_FILES_CHKSUM
869a677 libfm: rename patch directory for package update
228159f distro tracking: Updates for libgpg-error...
77bc8d2 pcmanfm: Update to 0.9.8
b2277d1 libfm: Update to 0.1.14
deb39ec gnome-keyring: Update to 2.32.1
cbd12b4 libgnome-keyring: Update to 2.32.0
ea8a7e7 matchbox-panel-2: Update to svn r2111
e0a2dfd libsoup-2.4: Update to 2.32.1
45d3350 atk: Update to 1.32.0
5b74c13 tasks: Update to 0.18
c4fe987 libowl-av: Update to svn r416
6ea9cb9 avahi: Update to 0.6.28
e101a71 ed: Update to 1.5
32860b9 xz: Update to 5.0.0
411d399 libuser: Update to 0.56.18
83586fb libassuan: Update to 2.0.1
f8e4c11 libgpg-error: Update to 1.9
5d5db6c pixman: upgrade from 0.18.2 to 0.20.0
161490f xrandr: upgrade from 1.3.2 to 1.3.4
685cfa9 xserver-xf86-dri-lite: upgrade from 1.9.0 rc4 to 1.9.2
1e2f122 xf86-video-intel: upgrade from 2.12.0 to 2.13.0
41111d4 libdrm: upgrade from 2.4.21 to 2.4.22
063dae4 distro_tracking_fields.inc: update tar and openssh
f8afc36 tar: upgrade to version 1.25
aa70226 distro_tracking: Update distro tracking fields for pm-utils, netbase, etc.
433447c polkit-gnome: Upgrade to version 0.99
db3ce4f polkit: Upgrade to version 0.99
878878a msynctool: Upgrade to version 0.38
9cc3ea6 mtd-utils: Upgrade to version 1.4.1
a2ede09 netbase: Upgrade to version 4.43
d80c854 pm-utils: Upgrade to version 1.4.1
4ad2019 poky.conf: add "virtual:native:" to BB_HASHTASK_WHITELIST
ad0e271 update-alternatives.bbclass: don't expand var when appending do_install
bd3b631 linux-emenlow: Correct KMACHINE after kernel rename
f6e0a5b libxvmc: Upgrade to 1.0.6
48a6e9c glproto: fix LIC_FILES_CHKSUM
9b9472a distro_tracking_fields.inc: remove some invalid packages information from it
dfc8bf3 libfm: add missing definitions and declarations
a79165c matchbox-panel: Change function name "sync" to avoid conflict
0a751b7 gst-plugins-base: Fix build error
aef25de Distro Tracking: update distro tracking field for recipes of Graphics libs
3311471 xextproto: upgrade from 7.1.1 to the latest version 7.1.2
a6810e6 xcmiscproto: upgrade from 1.2.0 to the latest version 1.2.1
24c4edc videoproto: upgrade from 2.3.0 to the latest version 2.3.1
9445404 scrnsaverproto: upgrade from 1.2.0 to the latest version 1.2.1
4438620 recordproto: upgrade from 1.14 to the latest version 1.14.1
882d8e8 randrproto: upgrade from 1.3.1 to the latest version 1.3.2
ca4e362 kbproto: upgrade from 1.0.4 to the latest version 1.0.5
3500a64 glproto: upgrade from 1.4.11 to the latest version 1.4.12
480cf8c fontsproto: upgrade from 2.1.0 to the latest version 2.1.1
c081c06 fixesproto: upgrade from 4.1.1 to the latest version 4.1.2
0272e24 damageproto: upgrade from 1.2.0 to the latest version 1.2.1
5c1e52c openssl: upgrade to version 0.9.8p
9600b79 sysstat: upgrade to version 9.1.5
8afecaa dhcp: upgrade to version 4.2.0
7227aaf dbus-glib: upgrade to version 0.88
9c0cecb dbus: upgrade to version 1.4.0
aaa29ff busybox: upgrade to version 1.17.3
07b8765 syslinux: upgrade to version 4.03
a57838d libtasn1: upgrade to version 2.8
a7db6e8 libnl: upgrade to version 2.0
621f573 taglib: fix SRC_URI
ba6a6da taglib: Change upstream location due to failing fetch
5958098 linux-libc-headers: upgrade from 2.6.34 to 2.6.36
563953d libtool upgrade from 2.2.10 to 2.4
aa5befa poky-default.inc: update gcc & linux-libc-headers versions
b1dd356 gcc: upgrade from 4.5.0 to 4.5.1
caf8fe3 task-poky-sdk: add tcl package in the sdk image
0c02e2d clutter-gtk-1.0: Fix build issues for world build
32f0537 python-gst: Fix the configure patch & add LIC_FILE_CHKSUM
252a424 .gitignore: update for new bsp-guide location
227c1f8 web_svn: make it buildable for world build
9807ad2 subversion: Fix host contamination
1b3dab5 telepathy: Update telepathy-glib and telepathy-idle for world build
041fc75 libsndfile: Upgrade to 1.0.23
48c8100 distro_tracking_fields.inc: remove some packages information from it
cd3daab distro_tracking: update distro tracking fileds for bluez4, neon, etc.
d4cebfa libmusicbrainz: Upgraded to version 3.0.3
21f7117 taglib: Upgraded to version 1.6.3
494afcb glib-2.0: Upgraded to version 2.27.3
f4c8146 valgrind: Upgraded to version 3.6.0
726746f tremor: Upgraded to rev 17572 (2010/10/27)
bfc2842 libproxy: Upgraded to version 0.4.6
7d0a0f9 libical: Upgraded to version 0.46
d97ea06 kexec_tools: Upgraded to version 2.0.2
3936e0a quota: Upgraded to version 4.00-pre1
28d05b7 libvorbis: Upgraded to version 1.3.2
edc7f3e libogg: Upgrade to version 1.2.1
170985e neon: Upgraded to version 0.29.5
f7b3469 bluez4: Upgraded to version 4.79.
2376935 distro tracking: update the info for upgrade recpies
20b05e5 cracklib: upgrade from 2.8.16 to 2.8.18
c70816c linux-wrs: rename to linux-yocto
771d890 eglibc: rebase a nativesdk patch to the newer code
eaa188f siggen.py: fix comparison around runtaskdeps
62f93ac Poky Reference Manual:  General edits up to the "Debugging with GDB Remotely" section.
175be12 Poky Reference Manual:  Added a glossary definition for BBPATH.
444597f Poky Reference Manual:  Task wording made consistent
8914519 Poky Reference Manual:  General edits for English.
c2f7ed4 Poky Reference Manual:  Removed the bsp.xml file.
b1f6928 BSP Guide and BSP Chapter in Poky Reference Manual:  Changed wording
2cf5aaf Poky Reference Manual:  Changed source location of the bsp.xml file
4e6a821 Poky Reference Manual:  Fixed list tag.
f30a2a7 BSP Guide:  Fixed tag mis-match.
2d6441d BSP Guide and BSP Chapter:  Sync'ed these two files
89e64db Poky Reference Manual:  Added XSL Customization layer file
c08140c Poky Reference Manual:  Added XSL Customization layer use
0a23df9 Poky Reference Manual:  Clean up Makefile
5dc7082 Poky Reference Manual:  Fixed broken link in Ref Images appendix.
b978c8e Poky Reference Manual:  Added BBFILE_PRIORITY glossary term.
ab92ec1 Poky Reference Manual:  Added BBFILE_COLLECTIONS glossary term.
4a671e5 Poky Reference Manual:  Added BBLAYERS to glossary.
731cedf Poky Reference Manual:  Spell check performed.
3f9700a Poky Reference Manual:  Added consistency to literallayout text.
a915d01 Poky Reference Manual:  Cleaned up and checked all XML tags.
00b5b4d Poky Reference Manual: XML tag clean up and command example text indentation.
d16bbc0 Poky Reference Manual:  A couple more minor fixes.
bf3ae7f Poky Reference Manual:  Clean up of the XML tags
63596cb BSP Guide:  Updated xsltproc command to pass the bsp-guide-customization.xsl style sheet.
6e3576c BSP Guide:  I created a new figure for the title page.
d68613e BSP Guide:  Created new file for XSL customization expansion.
5ca54c6 BSP guide:  Updated the book id.
440894b BSP Guide Makefile:  HTML generation debugging edits.
7066eff BSP Developers Guide:  Edits to text
d7f70e0 Added a new PNG file into the tar command.
00c2310 Added a new PNG file (bsp-title.png) as the imagedata tag.
7c2735f Added a new PNG file into the tar command.
a4a8961 poky-qemu: Fix issues when running Yocto 0.9 release images
c01e2a6 linux-wrs: BSP bootstrap
9aaa15c linux-wrs: implement BSP bootstrapping via fallback branches
0ec9475 image-swab: update swabber command for latest version
6e3a1cd poky-default-revisions: bump swabber version
9f0e146 gitignore: ignore the default downloads directory
d77e755 image-swab: introduce a class for generating swabber reports
9545130 bitbake-runtask-strace: simple shell script to wrap tasks in a strace call
b7ce757 poky-fixed-versions: update version for python recipe
20298d1 distro_tracking: update as per current state of devel/toolchain recipes
c02fae6 eglibc: update svn checkout commit
d94f4c6 lsof: upgrade from 4.83 to 4.84
793bb46 python, python-native upgrade from 2.6.5 to 2.6.6
a7af5c5 python-gst: upgrade from 0.10.18 to 0.10.19
e5f5090 gdb upgrade from 7.1 to 7.2
5319e5f diffstat: upgrade from 1.47 to 1.54
13c47d7 Make upgrade from 3.81 to 3.82
bebb90b bison upgrade from 2.4.2. to 2.4.3
5171c07 distro_tracking: Update distro tracking for gstreamer and gst-* recipes
f96088a xauth: upgrade from 1.0.4 to 1.0.5
cf062bf xset: upgrade from 1.1.0 to 1.2.1
d67ede7 xwininfo: upgrade from 1.0.5 to 1.1.1
72ce1a2 xf86-input-vmmouse: upgrade from 12.6.9 to 12.6.10
614f946 xf86-video-vmware: upgrade from 11.0.1 to 11.0.3
cf17e43 xf86-input-mouse: upgrade from 1.5.0 to 1.6.0
7844f7a xf86-input-evdev: upgrade from 2.4.0 to 2.5.0
c3db9a6 xmodmap: upgrade from 1.0.4 to 1.0.5
7576039 gst-plugins-ugly: Upgraded to version 0.10.16
4a0bc34 gst-plugins-bad: Upgraded to version 0.10.20
c6145ce gst-plugins-good: Upgraded to version 0.10.25
0362b29 gst-plugins-base: Upgraded to version 0.10.30
cb7df0c gstreamer: Upgrade to version 0.10.30
7e7bb24 sstate.bbclass: Remove the temp sstate-build-* directories in WORKDIR
2c1792f task-poky-lsb: add new LSB Recipe
03d9a14 LSB: Add a new package
3810bdf iproute2: update LIC_FILES_CHKSUM
8e3046d git: Update recipe for git to include configure options
d64c7ae imagetest-qemu: Add sanity test cases for scp/shutdown in target
2078af3 image.bbclass/initscripts: Make /etc/timestamp usage consistent.
85bd3d6 insane.bbclass: fix qa_configure and qa_staging
7f4f40f libnss-mdns: fix package removal
3155cde procps: upgrade to version 3.2.8
1a76da9 iptables: upgrade to version 1.4.9
ec7811e iproute2: upgrade to version 2.6.35
b24ca39 pciutils: upgrade to version 3.1.7
efa037b nfs-utils: upgrade to version 1.2.3
8c89891 curl: upgrade to version 7.21.2
f12f38a tzdata: upgrade to version 2010o
f9c840f shared-mime-info: upgrade to version 0.80
5091132 base.bbclass/poky.conf: Fix INCOMPATIBLE_LICENSE Whitelist checking
ddbf5e9 poky-init-build-env: Fix to show the error message with simple sh based shells
e445fcf poky-ref-manual: Drop non-commercial clause
05ba6fc bitbake: Rewrite profiling code so its functional for both none and xmlrpc backends
89929e1 bitbake/fetch: Allow checking of a single url at a time (massive sstate speed improvement)
caa7fe2 bitbake/fetch: Fix handling of mirrors when checking for url validity
d6e8f7d sstate.bbclass: Only create symlinks to different localpath urls if the fetch succeeded
7333328 Revert "bitbake/fetch/local: Also check DL_DIR for files since they could already exists there"
aa81dda Revert "bitbake/fetch/local: Fix os.exists reference"
f8e3397 bitbake/fetch/local: Fix os.exists reference
ae98f7e bitbake/fetch/local: Also check DL_DIR for files since they could already exists there
857534f procps: fix for build against make 3.82
2e0ab8c git-pull: add send-pull-request script
1f0e2cf git-pull: add the new create-pull-request script
09ee361 git pull: remove the existing create_pull_request script
a5bbeee tcltk: Fix moving libtcl8.5.so into tcl-lib.
422a017 kernel: prefer the kernel produced uImage
570cf02 linux-wrs: rename force_revisions and allow override
bca56bf wrs_meta: add USB options for wacom tablet support
e0194e3 qemumips: re-enable wacom and standard USB UI options
a8b1164 tslib: 32bit big endian support
93eae97 Added qemumips /etc/pointercal file for touchscreen calibration
32f241a quilt: Fixed configure test for patch --version.
77cb80c poky.conf: Default Locale Generation
ffce440 eglibc: add en-us locale generation
5ea9313 eglibc: install the missing /etc/ld.so.conf into target
ff2448a ld.so.conf: create empty file
da99708 busybox: enable more options for tar to support more file formats.
a0fb0c2 bzip2: upgrade to version 1.0.6
12a8613 imagetest-qemu: Add test case for dmesg check in target
53b775b poky.conf: Change default locale to POSIX
d856b80 task-sdk-gmae: fix typo in SDK-EXTRAS and convert to ?= for assignment
25c00da python: Fix hardcoded python references which should refer to PN, removing duplicate providers warning
4f6d91e busybox: import upstream patch for make 3.82
6ac1365 eglibc: fix build of eglibc-initial for make 3.82
d9ff2f8 package.bbclass: make sure 'sysroots' created before lockfile
26ade54 poky.conf: add PWD to BB_HASHBASE_WHITELIST
5ae5a14 bitbake.runqueue.py: Fix no exec task handling to correct counter housekeeping
8e2150e meta/classes: Mark do_package_write and do_build as noexec tasks
b80a8d2 bitbake: Add support for 'noexec' tasks
a59935f bitbake/siggen: Allow siggen code to control final stampfile format
87c2b70 .gitignore: Update after documentation layout changes
be132ca docmentation/poky-ref-manual: Remove unused Indexes title
4243a61 Performed general edits to this chapter.
09ef6a4 Poky Reference Manual: Completed editing pass of Chapter 3.
890a794 Created a new folder to hold the BSP Guide
4b7f1ee General edits to the using poky and Extending Poky chapters.
30e9272 General text edits through section 2.4.4 "General Bitbak Problems"
ceef5c2 Changed a source command to have the correct source.
f7a3a5f Changed the title and wording of the section about pre-built binaries.
e534706 Editing pass through the Introduction chapter.
81d3811 Figure changed for building an image and yoctolinux removed
8e51f52 cross-canadian bbclass: replace hardcoded -pokysdk with SDK_VENDOR
eb9c2b0 openssl: Use STAGING_BINDIR_NATIVE as the path to perl, not bindir which can point to incorrect places
ecf2eb1 sstate: Provide a temporary mechanism to stop collisions between toolchain components in builds from scratch using sstate
88f6f3f bitbake/siggen: Provide better warnings about empty tasks
6a8fec9 external-python-tarball: Include SDKMACHINE in tarball name
d45af98 external-python-tarball: Add ability to generate an externally usable standalone python tarball
30feed7 openssl/db/gdbm: Extend to provide BBCLASSEXTEND nativesdk
8238ee6 python: Remove hardcoded python references and replace with PN, allowing use of BBCLASSEXTEND=nativesdk
a9c46e4 base/utils.bbclass: Sync up overlapping functions
26a4b23 utils.bbclass: Add functions from OE.dev
c299112 gnome.bbclass: Remove autotools_stage reference
5599963 gnome.bbclass: Use BPN instead of PN and set SRC_URI name similar to OE.dev
01518ad meta-emenlow: Rename packages to recipes in line with main repository
c90c0ce base-files: Allow a basic issue file to be extended by the code, following the method now used by OE
904ccfe base-files: Allow issue and hostname generation to be overridden
f71326e src_distribute: Set EXPORT_FUNCTIONS correctly
dc13a61 bitbake/siggen: Fix finalise call arguments
7240881 Poky -> Yocto name change
5dfe9b7 documentation: Update copyright to the Linux Foundation
9fbef50 documentation/yocto-qs: Fix references to a poky-qemu package and replace with the yocto toolchain tarball
d9fea40 Removed text from section 5.1.2.1.1.
4ededb2 Corrected the package command for Debian-based hosts.
fd832c0 Added package installation requirements.
86384c1 Re-inserted Poky Image as part of the front matter.
b7ae212 documentation/poky-ref-manual: Fix image makefile to reference the image
bf77ed9 Moved the Poky image file to the "Figures" folder.
2ccf2b3 Re-installed the Poky Handbook image at the top of the manual
27e2d19 Updated the yocto-environment picture and added example command edits.
aea5da0 docmentation/yocto-project-qs: Fix Yocto Environment graphic
e4d0ba8 Removed first link to openembedded and replaced with more general text.
ca822c5 Updated the first figure in the quick start.
03c72a9 Corrected link to the yocto website.
7fba85a Updated supporting text to reflect new poky-4.0-build directory in example
5bebcef documentation-project-qs: Remove stray ]
962e548 documentation/qs-guide: Fix urls for release
7af5e26 Edits as described below:
5434a49 Review changes applied.
11686d0 Updated figure.
9692685 Updated this figure to correctly capaitalize opkg, zyper, and app-get
cb9376f Removed reference to pre-build in section 5.3.2, "Using OprofileUI".
95a85f5 Added the Anjuta Plug-in information
4999f78 documentation/pokt-ref-manual: Update with Yocto branding
00e061b documentation: Add Yocto quickstart guide
74e47d4 rm_work.bbclass: Handle case where pseudo directory doesn't exist
c5fab99 bitbake/fetch: When fetchers return errors, ensure any partial download is cleared
ab718b3 package_deb: The packaging command itself is run under fakeroot so these lines are totally unneeded
8109db2 Fix adding new contact failure when starting contacts for the 1st time
48b42da classes: Only enable fakeroot on setscene tasks with packaging
535a77a bitbake/fetch: Make URL checking slightly less verbose (distracting with the sstate code)
3f599b3 sstate: Fix mirror handling for file:// urls
eef1d81 documentation/bsp: update to reference FILESEXTRAPATHS
36f1ae4 pseudo/fakeroot: Move the pseudo directory creation into bitbake
00a96a2 package_deb: Fix a typo meaning the debian packaging was not running in the fakeroot evnironment
13f116b package_rpm: Don't check for the existence of dvar as its never used
6e277cb base.bbclass: Ensure an empty do_build tasks exists to silence a warning
f806c49 sstate: Fix broken plaindirs support
08425b5 at: Fix nonstripbinaries.patch
0068e55 libtheora: add DEPENDS on libogg
fd44571 base/sstate: Add cleanall task to remove downloads and sstate cached files
2a69c58 local.conf.sample: Default to not building 32 bit libs on 64 bit systems as most people don't need it and it confuses them
d5504a4 metadata_scm: Ensure that if an SCM isn't present, we dont print a revision of 'fatal:' as it looks bad
f1a209b busybox/sysklogd: syslog.conf files
70c7712 gst-ffmpeg: powerpc build errors
8aa0c8c mpc8315e-rdb: align PACKAGE_EXTRA_ARCHS with tuning
0e0d14e at: remove nonrootinstall patch and modify some relevant files
27d0685 gnome-icon-theme: fix build
980e0ce bash: There is no such configure option as --with-ncurses and --with-curses breaks the build
1d5567c poky-default-revisions: define SRCREV for pseudo-nativesdk
5ee6384 nfs-utils: fix nfs server initscript
9393ff8 bash: fix job control
340ff26 task-sdk: Fix lttng-ust dependency to include the -dev version so headers are included
4f7d621 sysklogd: correct the syslog link and conf file
c41fe30 wrs_meta: emenlow updates
6562e7c documentation/poky-ref-manual: Update packages references to recipes and make sure bbappend files are included in example BBFILES lines
08cec50 bitbake/fetch/git: Ensure fullclone repositories are fully fetched
05c8ee6 bitbake/fetcher: Deal with a ton of different bugs
1077021 bitbake/fetch/git.py: Fix git fetcher to correctly use mirror tarballs
ef67016 rpm: Change pcre to use internal library [BUGID #404]
daca4c7 sed: use ALTERNATIVE_LINK
644e54f gstreamer: add support for theora plugins
f8c6335 wrs_meta: update SRCREV for netfilter options
3d91a51 kernel tools: update SRCREV
64bb014 linux-wrs: pass netfilter options as an addon feature
1dc2a4c linux-wrs: allow optional features via KERNEL_FEATURES variable
77176d5 distrodata: Modify Distro tracking spreadsheet
2c40e13 distro_tracking: Update Distro Aliases
8fc871a task-poky-sdk: Add lttng-ust
fd59449 libtasn1: Comment out the RREPLACES as it causes problems with rpm backend
d3099f8 poky.conf: Add qemu-config dependency for qemux86-64
20b4aa3 shared-mime-info: Don't run the util for the native version of the package
80eba26 documentation/poky-ref-manual: Various tweaks to the text
0be66f0 documentation/tools: Add comments to script
879ac8f libffi: fix the uri
95cf36f documentation: Complete poky-handbook -> poky-ref-manual rename
37eb4e2 documentation/handbook: Tweak Makefiles and paths after path changes
94c2a3c handbook/poky-ref-manual: Makefile tweaks
2208328 handbook: Move into documentation directory
13a702e Use gdk_threads_enter/gdk_threads_leave to ensure gtk multithread safe
485839d libffi: bumpt to version 3.0.9
d036f97 make: enable make-native
ce8932d handbook: Fix the Ubuntu version requirement
f0500bc handbook: Fix section numbering
03ecd2a atom-pc: remove kernel video mode parameters
3a8d109 linux-wrs: update SRCREV for mpc8315e-rdb
12477ad gupnp: fix broken SRC_URIs
95fb69b emenlow: add 8250 serial options
9a2ae44 poky-qemu-internal: make the -no-reboot qemu option mandatory
7d7d35f poky-qemu: miscellaneous bugfixes
af404b1 poky-qemu: add nographic option for disabling video console
65954ba atom-pc: get rid of undefined video mode prompt on bootup
deba7ad sysvinit: add check for no X11 to disbale psplash
cb34a14 task-poky-qt: Re-Enable MIPS Build and disable fotowall
229b663 bitbake-runtask: Ensure logging settings take effect in the worker process (and pass verbose setting)
fa91404 pseudo: Update to revision 489ed5e89f040febcb605f22187968f597211205
462aef7 eglibc-nativesdk: Add patch to change the search path of the dynamic linker
9eb2de9 Revert "meta-toolchain: Update the way ld.so.cache is handled"
a2337a3 linux-wrs: update SRCREVs
cbeb72b atom-pc: switch to the atom-pc branch
48755c4 emenlow/linux-wrs: merge emenlow configuration
5e558a1 linux-wrs: remove external x86 config fragment
d3fbeb9 emenlow: update formfactor keyboard setting
41ad946 libowl-av: Fix music player crash if adding unknown type files
e1f257a tzdata: install zone.tab and iso1366.tab
b2c3ce6 meta-toolchain: Update the way ld.so.cache is handled
271bd9d sanity.bbclass: ensure 32it libc is correctly detected
d393edd poky-qemu-internal: enforce a 128M memory limit for qemuarm
99c0cbd rm_work: Fix interaction issues with pseudo
1958497 poky-default-revisions: fixups
27e785c swabber: new recipe
c6a6eb1 strace: use BBCLASSEXTEND to enable a native package
812f883 bitbake/runqueue: make the runtask program configurable
35f36ba Update gitignore
04ace83 Add recipe for sdk directdisk target
c9b6051 linux-wrs: add initial beagleboard support
5ae1e2c mpc8315e-rdb: create machine and tuning configuration
149f226 routerstationpro: create machine conf and compatibility
b5f744c python: fix for host contamination issue while cross compiling
6b53fbc xpsb-glx: Fix compile issues on 64 bit machines without 32 bit headers/binaries
364aaa6 poky-qemu: fix for handling full path to rootfs
cecd1bd qemugl: remove obsolate /usr/X11R6/lib lib directory
75732f5 recipes-connectivity: Cleanup package descriptions and summaries
daa21c1 recipes-bsp: Cleanup package descriptions and summaries
fa647b9 recipes-core: Cleanup package descriptions and summaries
b2f2590 Add Summary/Description support to packaging
5783e71 Subject: [PATCH] emenlow: add kernel config options for sdk tools
86b30f7 emenlow: fix SRC_URI in linux-wrs_git.bbappend
d4c8679 linux-wrs/emenlow: Fix FILESPATH so as not to corrupt other machines
56be122 linux-wrs: move config fragment to the correct location
d14f9bf bitbake/build.py: Write logfiles on a per task basis, not per function
ff539b1 bitbake-runtask: Ensure logging options are inherited from the parent
efe55d7 linux-wrs: Change the kernel configuration to enable psplash.
771fb55 connman: Do not take over ethernet interface if target is boot by nfs
ded2919 rootfs: Update ROOTFS_PKGMANAGE to include atp/zypper
df41bd4 package_rpm: Disable nativesdk/canadian package indexes for now as these are being incorrectly used for target rootfs generation, breaking the images
e9af61e dpkg-native: Don't install update-alternatives as it isn't cross rootfs capable
b9728f6 dpkg: fix package_deb error for linux-wrs
7836c45 linux-wrs: emenlow has its own branch, use it
115514b bitbake/fetch: Ensure SRCREV is still set correctly if the pn-X override has been expanded
a743e82 base.bbclass: Fix spelling mistakes and change log level
b8ce8c7 poky-default-revisions.inc: Work around weak assignment operator bad interaction with SRCREV
b825feb linux-wrs/emenlow: Set WRMACHINE
2f55ec4 atom-pc: Switch from linux-netbook to linux-wrs
b8d75d2 emenlow: switch kernel from "linux" to "linux-wrs"
627fb75 emenlow: remove psb-kernel-source dependency from xserver-psb package
ee1c802 emenlow: add linux-wrs_git.bbappend
fe9c556 atom-pc: enable CONFIG_FRAMEBUFFER_CONSOLE
6f66fc1 Add default revision for linux-wrs common_pc-standard HEAD
d7a1ebc atom-pc: 8250 config fragment
1bc3825 linux-wrs: Add support for atom-pc
ca664ee dpkg: upgrade to version 1.15.8.5
144e7b4 udev: Don't install unused links.conf file (thanks Joe Sauer for spotting)
939e2fe gettext: Move files to the correct place
530fb7f linux-wrs: fix emenlow and wrs_meta SRCREV values
30f77f6 distro_tracking_fields: remove the duplicate line for oprofile
1d7c9a9 attr: fix the hardcoded search path in the AC_PATH_PROG
c805a6e poky-qemu-internal: implement file locking in bash
7cd824a poky-qemu: fix handling of some rootfs types
e72e7b2 rootfs_deb: Fix problem with pseduo and rootfs location
0ae7e9e dpkg: upgrade to version 1.15.8.5
c449c78 Rename MACHINE=netbook to MACHINE=atom-pc
5f17c07 gststream commercial: modified recipes and tasks to add commercial identifier
7d42965 base.bbclass: add support for commercial license check
c47132a gettext: Add GPLv2 version 0.14.1
45e05c1 meta-toolchain: Fix symlink path
ad042da meta-toolchain: Fix libGL.so not found issues
93c19ab unfs-server: Fix DEPENDS for native/nativesdk cases
2f19e2a libc-package.bbclass, eglibc, glibc: enable locales generation using cross-localedef
2e04061 cross-localedef-native: tool for cross generation of locales
7b079e1 Update meta-ide-support dependencies
bda24ca poky-fixed-revisions.inc: Clean up pointless PREFERRED_VERSION statements
ddb5d4c librsvg: Drop old versions
519b7c0 pulseaudio: Add back after it was lost in meta-moblin removal (and dependencies)
02445fc poky-default-revisions.inc: Move SRCREV settings into this file
0f973ed Merge runqemu features into poky-qemu
e70c898 Allow running of multiple QEMU nfs instances
8532405 poky-gen-tapdevs: script to create a 'bank' of tap interfaces
62625d0 poky-qemu-internal: use lockfile-progs for network interface locking
fcbd67c poky-qemu: integrate userspace nfsroot support
c8a181e poky-qemu-ifup/ifdown: Require root privileges to run
fb24302 kern_tools: update SRCREV for defconfig fixes
bf1a37e xf86-video-intel_git: fix COMPATIBLE_HOST definition
f938a41 syslinux: fix COMPATIBLE_HOST definition
50ba9c4 nasm: fix COMPATIBLE_HOST definition
8a4298c libacpi: fix COMPATIBLE_HOST definition
7160dce formfactor: mv emenlow formfactor config to machconfig
bee7c21 bitbake/runqueue.py: Fix invalid variable reference fixing the -f option with setscene tasks
240b663 sstate: Fix SSTAGE_MIRRORS handling and improve example in local.conf.sample
24ad639 bitbake/fetch/__init__.py: Abstract mirror variable handling and enhance to accept \n delimitation in variables
0e0fadb rootfs_rpm: Add lock file in the rpm deploy directory to allow mutliple rootfs creation tasks to coexist without breaking each other
fafb403 gcc: Fix c++ search path for target system compiler making everything consistent
11ebcec local.conf.sample: Until bug 227 is resolved, ipk packaging is needed for meta-toolchain so enable by default
0a20caf Export ALL_PROXY for bitbake commands
e12c57e handbook: corrent RRECOOMENDS spelling in ref-variables
60beb39 pseudo: Update to the latest version of pseudo
5eee854 qt4-tools-native: Fix compile failures
35d095c bitbake/sstate: Implement a lookup function to speed up setscene processing
2d93cb0 Revert "classes: Disable setscene tasks for initial testing"
425435f base.bbclass: Implement PRINC, a way to increment the PR variable in .bbappend files
904ae4a Improve FILESPATH usage in .bbappend recipes
0ee7a9e bitbake/fetch: if mirror fetching fails, ensure exception is raised
8e5c084 rootfs_deb: fix parsing a shell cmd
a4f2e2a kernel: update SRCREVs for emenlow and blacksand/Kconfig
12b0f49 createme/patchme: use kgit-checkpoint to restore meta data
1225cc4 kern_tools: allow patching on autocreated/empty branches
2fac07a qemumips: Add formfactor file so the mouse works correctly
546ffc5 x11-common: correct the syntax for the -mouse arg to Xfbdev
ce7101b qemumips: override default UI options.
8223e50 ncurses: Fix export of LD_LIBRARY_PATH.
31bd141 gitignore: Add meta-extras and meta-m2
ce25e93 meta-openmoko: Drop as this code is very stale
0cab41a meta-gnome: Remove libgnome, libgnoneui and update gthumb adding libunique dependency
4163767 ncurses: Only set LD_LIBRARY_PATH within the do_install
dd81d58 insane: Update the insane class to check for host contamination
8e429ac build.py: Add a symlink for the logging
df07008 python-pygtk: Use correct paths at build time
ce5e891 Python gst package needs pygtk at runtime
b936974 poky-qemu-internal: only check mmap_min_addr when running arm images
8fdc5ff Fix packaging error (util-linux-sfdisk could not be built)
7cdddd1 local.conf.sample: include notes on generating fewer LIBC locales
c112368 siteconfig: Fix mkdir
4a19330 binutils: Update the poison patch
23f522e gcc: Update poisoned include path checking
9a1d4d0 augeas: Add missing dependency on readline
ca5fff3 sstate: Deal with a potential race when cleaning packages
c0c657b Split meta-extras and meta-moblin out of the main repository
e71a306 task-base: Drop wifi fw
c09cae5 Move prism-firmware, spectrum-fw, python-urlgrabber, python-iniparse and yum-metadata to meta-extras
a51df11 Distro Tracking: Remove private directory since it's merged to one file now
e3d7890 Make invalid LICENSE fields fatal
c0281fa libopensync: Fixup a couple of LICENSE fields
008c59c external-toolchain: Set LICENSE
9623589 moblin-proto: Move to meta-extras
27b68f9 qemu: introduce vmware vga FIFO rewind patch to fix qemu hang
7f17d12 linux-libc-header: Sync CONNECTOR_MAX_MSG_SIZE with wrs kernel
9c9c8eb gdb: add EXPAT to resolve gdbserver comm issues
bf1747b gst-openmax: Add LICENSE field
a4762f9 gobject-introspection: Add LICENSE
84a4ef2 spectrum-fw: Set LICENSE
4ec740d puzzles: Set LICENSE
d4feb66 libfribidi: added LICENSE field
d891515 beeycrypt: added LICENSE field
c649698 libffi: added LICENSE field
a00a840 tzcode-native: added LICENSE field
784f0cf polkit-gnome: added LICENSE field
8c7dfe8 diffstat: Added LICENSE field
3e5cf5f libopensync: Added LICNESE fields to plugins
fe64be2 farsight: Added LICENSE field
6b1c260 elfutils: add zlib into DEPENDS
2a066e7 gcc: fix check for target libc ssp support
b07cc5a initrdscripts: remove the incorrect moblin message (Bug 368)
aca435f qmmp: add qmmp into image (Bug 301)
1526b9d kern-tools: add BSP bootstrap support
5848cc4 linux-wrs: pass ARCH to updateme
8d5b222 linux-wrs: validate commits when forcing branches
06c19f0 mc: add to extended, but not part of any image
4c9f98b Distro tracking: Add info for lighttpd
41f1934 rpm_5.1.10.bb: The upstream location has changed rpm_5.1.10.bb: bump PR [BUGID #357]
ce373c7 rpm_5.1.10: Disable dependency loop message
fad896d rootfs_rpm.bbclass: Add Dirnames configuration
c9e6f53 distro_tracking_fields: Updated with distro alias information
82a42c6 pointercal: Add LICENSE field
66bb71a udev-extraconf: Fix LICENSE field
041fe17 pong-clock: Fix LICENSE field
ced8cb0 signgp: Add licence info from OE.dev
bb1b3cf task-poky-lsb/basic: Add LICENSE fields
69c650c run-postinsts: Add LICENSE
1d52fa5 bitbake/bitbake-sigdiff: Extend to handle dumping single state siginfo files
1c91f32 bitbake/siggen: Fix issue where excluded dependencies caused exceptions
adcb01d poky.conf: Add BB_HASHBASE_WHITELIST to ignore variables which don't influence sstate packages (Initial Population)
7f7c185 Revert "Drop vm_mmap_min_addr checks from scripts and sanity class"
62fe6dc sstate: list directories in child first order in the manifest file
e88a895 procps: use new batch update-alternatives feature
b797a84 diffutils: use new batch update-alternatives feature
2b18117 bzip2: use new batch update-alternatives feature
22cbcd9 update-alternative.bbclass: add batch alternatives support
5f289ac e2fsprogs: Don't change ownership of the patches directory
53bfbe6 gstreamer: Ensure correct orcc version is used
a598c15 handbook/bsp-guide: Fix typo
2624b61 poky-doc-tools: Remove unnecessary autotools usage and simplfy structure
1e0e6f1 sstate.bbclass: Add signature hash to sstate package names
624924b bitbake/bitbake-runtask: Signatures are needed in task context and have little overhead so enable in worker context
97dec84 sstate.bbclass: Update to use SSTATE variables everywhere and remove the now unneeded complicated paths from the sstate files
dd28a9c sstate.bbclass: pstage -> sstate name changes (no global implications)
7087fb7 sstate.bbclass: Rename PSTAGE2 -> SSTATE
9747616 bitbake/siggen: Ensure full signature data is not held unless needed, reducing memory consumption
8976fa6 connman: fix the issue that connman could not disconnect from shutdown AP
65ace92 task-poky-basic.bb: fix lighttpd typo
d6c4088 task-poky-basic.bb: add lighttp to basic image type for webserver
8860ef2 local.conf.sample: set RPM as default package and rootfs image creation
a1d1e4e lighttpd: Add 1.4.28 as new recipe.
ec4d6b9 bitbake: Pass task hash information to subprocesses
15ceaaa bitbake/fetch: fix logic to prevent fetches when the file already exists
d85dc37 codeparser.py: Fix storing of hash values as object references can be corrupted
cf09c7a iproute2: Disable PARALLEL_MAKE
dd5ad18 eglibc: add FILESPATH to avoid failure on unpack
aa8dea4 poky-default.inc: change the hardcoded glibc-initial to ${POKYLIBC}-initial
2cb33a9 distro_tracking_fields.inc: update cpio info
928e6ca cpio: add version 2.11 (GPLv3)
661e864 trace-cmd_git.bb: remove DEPENDS of glibc since there is a system default for
3b7110b distro_tracking_fields.inc: update grep info
5c46570 grep: add version 2.7 (GPLv3)
62432db task-poky-clutter.bb: removed examples
63ec0c2 distro_tracking: Update tracking info
055a720 distro_check.py: Added additional support for distro checking
7531480 QEMU: Fix the mouse shadow issue (bug 170)
5964697 qemux86-64: remove -march for 64bit common pc
998a831 task-poky-tools: add rsync in target image
0f55d28 glibc & eglibc: fix mips DT_MIPS_RLD_MAP checking
5c8fad6 poky-qemu-internal: Add userspace nfs support for mips and ppc
ce45630 gcc: enable poison parameters detection
b3ef7f5 xtscal: Fix the endless loop when starting X
239a368 netbook: Correct netbook build by moving netbook configuration from moblin to meta
c5b9525 taglib: move from moblin to recipes-support to support qmmp
09f1f69 man-pages_3.25.bb: Fix SRC_URI to contain Archive directory
233af81 distro_tracking_fields.inc: merged fixes
460954b upgrade gcc to 4.5.0 for mips architecture
b804830 meta-ide-support: Fix PKG_CONFIG_SYSROOT_DIR and PKG_CONFIG_PATH
c9e52b0 qemuarm: remove NFS_ROOT override
efd2590 Add DISTRO_PN_ALIAS for 95 packages
23bfe02 [#BUG298]:Fix some bugs during compiling based on x86_64 fix a problem that compliation failed for groff on machine x86_64 Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
3c5984a bitbake.conf/documentation.conf: Start using SUMMARY variable and document it
4a10634 Correct js jsautocfg.h and install jsproto.tbl
1cf4566 Wrap output at 80 columns for poky-env-internal
f342f3b poky.conf: use eglibc rather than glibc
8c33bfc [e]glibc-package.inc: fix multiple providers for glibc-gconv-iso8859-1
11a9205 poky-eglibc.inc: fix multiple providers for virtual/libc-nativesdk and other
73049a3 handbook: add BSP click-through licensing section
c031749 Fix some typos and grammatical errors in Poky handbook
7450c1a linux-wrs: update SRCREVs
68772b9 zypper: fix runtime dependency
eede720 libzypp: RDEPENDS sat-solver
d8137c0 eglibc: Add in libc_cv_slibdir setting as used by glibc to fix 64 bit builds
d08f922 recipes-tbd: Drop old external CSL toolchains and no obsolete staging-linkage recipe
79a4501 Complete packages -> recipes transition
03d9669 distro_track: add dpkg, m4, and cmake tracking fields
0ff070b  gcc: upgrade gcc for powerpc to version 4.5.0
8e9caaf formfactor: Add machconfig in qemux86-64 to avoid HAVE_KEYBOARD unset. This prevent matchbox-kerboard starting as daemon automatically.
a50dd61 perf: Add libelf to dependencies
87cac1d bblayers.conf.sample: remove meta-moblin from default layers
0be9298 poky-qemu-internal: fix locking of tap lockfile
a67d9dc distro_tracking_fields.inc: Merged tracking data
089b186 Distro tracking: update mdadm, screen, oprofile; add libsdl
ad972a7 Distro Tracking: Updated and add Poky Alias info
3a0b3da distro-track: zypper related packages
7c99ba8 avahi: explicit depends on libcap
6295c9a distro field: add distro fields for some graphcis recipes
83c005d distro tracking: Add info for gobject-introspection, gdk-pixbuf-csource-native and qemu-helper-native...
3197bcf distro data: Update distro data tracking data
d1ff9aa toolchain-scripts: Add POKY_TARGET_SYSROOT variable for SDK usage
5b02bbc local.conf.sample: Fix commented value to match the default download directory
f47ae20 toolchain-scripts: Export TARGET_PREFIX and GDB variables for SDK usage
fe0f86e bitbake/runqueue: Remove now unneeded indentation
474c2a2 bitbake/runqueue.py: Optimise delay values to avoid unneeded delays
e888596 sstate: Trigger generation of siggen info when building sstate packages
19d9435 bitbake/siggen: Allow generation of siggen data from task context
89c7260 bitbake/build.py: Set BB_FILENAME to represent the .bb file being built (including any virtual prefix)
d94f0f7 bitbake/siggen.py: Improve debugging of checksums
4aec215 bitbake/data.py: Allow variables to suplement dependencies using the vardep flag
c01e876 bitbake/fetch: ensure the go() method completes when not using premirrors
dc4d33c poky-default-revisions.inc: Add missing SRCREV for dtc-native
919ae74 qemu_x86_64/conf: enable E1000 by default
6a16ff4 dtc: Drop unneeded SRCREV
6cbc2c3 dtc: device tree compiler recipes
c541b59 poky-default-revisions: set default dtc srcrev
9619df0 linux: add binary devicetree generation
be11510 ncurses: rename site_config that was mis-merged when ncurses moved
2e9d981 autotools: enable siteconfig by default eglibc glibc ncurses uclibc zlib: remove explicit siteconfig
c3269e2 siteinfo: add SITECONFIG_SYSROOTCACHE definition in place of hard-coded path siteconfig: use SITECONFIG_SYSROOTCACHE and use sstate-interceptfuncs
27dd7f8 sstate: Add sstate-interceptfuncs called between install and package
d6e8013 [e]glibc-package.inc: fix providers for libsegfault and other
b273ca2 libc-package.bbclass: fix qemu issue with pseudo
b4c5b95 pseudo: Update pseudo to latest revision
d87034e rootfs_rpm: Fix workaround
75bffcd handbook: Drop USB Networking section, its no longer appropriate
ad30f2c handbook: Various minor fixes
0a217cd handbook: review and update CH1(introduction) and CH2(using Poky)
8627258 handbook: review and modify Appendix A, D and E
8c7e1ac handbook: review and modify CH4 (BSP) and Appendix B
2beaecb handbook: Fix some errors in Appendix F/G
276abb1 handbook: review and correct CH5(development)
a6e7652 handbook: update appendix C/H/I
3c6e1d7 handbook: review and correct CH3(extend poky) in handbook
7ef8658 linux-wrs/meta: fix qemuarm boot issues with 2.6.34.6
1ea9ad4 qemu: add qemu-mipsel to the list of simulators
30c2b0b connman-gnome: Add some functionality.
566de26 bitbake: Add proxy variables to standard export list
3a530fb Fix the matchbox-panel seg fault on netbook & emenlow
c4fb698 netbase: Don't hardcode the qemu IP config
f7f044c scripts/runqemu: Drop broken toolchain symlink code
c4ff5f3 scripts/poky-qemu-ifup: Ensure the host has a route to it
8e43883 scrtips/poky-qemu: Fix network interface device numbering
3dd36ab poky-qemu-internal: Fix ifdown script to use the correct variable
3d4089c gnu-config: Fix target version to contain all the substitutions and not overwrite the first half with the second set of changes
082976c libzypp: change /usr/lib64 to /usr/lib
9402f93 linux-wrs: Update now SRCREV variable order is fixed
8fe347a linux-wrs: validate branches against known revisions
be74657 poky-default-revisions.inc: Fix variable order for linux-wrs recipes
f7b1c10 bitbake/__init__.py: Fix named SRCREVS variable name ordering with backwards compatibility
1e65495 trace-cmd: add to profiling recommends
5b803e6 task-poky-lsb: Remove man-pages due to build failures
102e24d task-poky-lsb: add man-pages, which will pull man and groff
1f65837 image.bbclass: change IMAGE_EXTRA_SPACE to IMAGE_OVERHEAD_FACTOR
7400ece man-pages:Add new man-pages package
ef8d4dc groff:Add new groff package
3f71edc man: Add new man package
e3f4926 Distro tracking: add package aliases
b98154a at: Disable PARALLEL_MAKE for at and add back to task-basic
cdbbc68 gcc_4.5.0: add --enable-poison-system-directories option to cross recipes
75b90f1 binutils: add binutils_poison.patch
3e7db72 bitbake: save the initial PATH for use when starting a subprocess
8be5593 kernel.bbclass/linux-wrs: move definition of perf package to kernel class
fac3ca9 package.bbclass: Ensure all packages package when running a build
04b8511 bitbake/fetch/git: fix try_premirror() definition .Method takes 4 parameters.
3341e47 bitbake/fetch: fix by moving try_premirror() to the right place
3010c96 powertop: fix a typo: REPENDS ==> RDEPENDS
c519aec libzypp: workaround to pass mips build
7892add sat-solver: change /usr/lib64 to /usr/lib
7117a44 bitbake/fetch: add try_premirror method and special case git fetcher
7b580b4 bitbake/bitbake-runtask: Ensure signals to the parent don't pass to the children directly
7ef6559 qemu: Apply fix for armv6 locale generation using TLS registers
51dd026 ldconfig-native: Set LICENSE
e8518d4 poky-image: Set LICENSE field for the image recipes (note this doesn't apply to the image contents, just the recipe and code used
fb617be poky-image: Set LICENSE field for the image recipes (note this doesn't apply to the image contents, just the recipe and code used
8ee9aff tasks: Set LICENSE field
b49bfb2 QT4 mips: disable the LDFLAGS "-Bsymbolic-functions"
b86a597 linux: Fix the compulab image post deploy function by making it a postfunc
e8fdc98 sstate: Make sure the sstate function is the last to run, not the first
7e46fc8 pseudo: Honour the NO32LIBS variable
6477130 bitbake/codeparser: Deal with functions with trailing whitespace
1c24729 udev: Drop old versions
85cf6f3 poky-default.inc: Use standard udev version for PPC, seems to work fine
9b800fe scripts: use the exported POKY_NATIVE_SYSROOT variable
c97f3a5 toolchain-scripts: export extra variables for use by scripts
13ef707 runqemu-nfs: check for required programs
f57a3d9 linux-wrs: Ensure S directory exists else task can fail
d17a093 gcc-crosssdk-initial: Ensure native dependencies are built, these can differ accross different gcc versions causing build failures
fea28c2 kernel/wrs: update SRCREV for v2.6.34.6 + changes
e359e25 task-poky-tools.bb: avoid multiple RRECOMMENDS to override each other
95b2d93 poky-default-revisions.inc: Move SRCREVs to correct locations, fix whitespace
b78d536 fetch: fix setting of localpath in SRC_URI parameters
aa3d81f poky-default.inc: Make sure sdk version of gcc is fixed and doesn't change
e013185 tasks-poky-basic and tasks-poky-qt: bump PR and remove at
18ea4d2 task-poky-qt.bb: Exclude mips from building
d970584 clutter-mozembed: move patches back into meta-moblin
c849ec7 rpm: Fix autoconf/libtool usage
a9b7157 rootfs_rpm: Workaround for checksum changes
7b01719 zypper: add new package
162c652 libzypp: add new package
1fb94b7 sat-solver: added new package
079b70a augeas: add new package
63f7b0a Fix broken references to libcheck
0843607 rpm: Change the way the python version is determined so its sane and works with checksumming
3e38d63 task-poky-qt: create a task and add to poky-image-sdk
41d02d40 bootmisc.h: use "date -s" to set time
e5fe433 distro-tracking: update lttng-ust, lttng-viewer
02c122c lttng-viewer: upgrade to the latest version 0.12.35
ee3e622 lttng-ust: upgrade to the latest version 0.7
33e2b4a poky.conf: Set hash policy
8d764de bitbake: Add missing signature files
43595fa bitbake: Implement signatures
453d8f4 bitbake/codeparser: Ensure cached sheel entries return the correct dependencies
e8ed145 bitbake/ast: Ensure function definitions are always added to the dictonary
a6ce10e sstate: Handle symlink directory entries correctly
7e36135 rpm: Raise the number of potential rescans before aborting with a dep loop
a211686 eglibc: Add siteconfig cache generation
1f1aac7 uclibc: Add siteconfig cache generation
cd9379c ncurses: Add siteconfig cache generation
7f286e2 zlib: Add siteconfig cache generation
f538926 glibc: Add siteconfig cache generation
d2febcc siteconfig: generate configuration data caches for autoconf siteinfo: Use configuration caches when available
d6c45f0 rootfs_rpm: Support install_all_locales
2f68de1 roots_rpm: Enable installation of recommended packages
84e1f5a package_rpm: Start packaging directories
9f60a6f glibc-package.inc: disable build-time locale generation for nativesdk
3d7431b eglibc: Set BBCLASSEXTEND to include nativesdk
7e80c6e udev: don't reference parent sysfs node directly
5c1638c kern-tools: add dependency on guilt-native
9bf90ab rpcbind: move patch to correct location
8937133 linux-libc-headers: update hayes-gone patch to remove HAYES ioctls from mips
c840412 setserial: add patch to fix missing stdlib header
3be379d mingetty: Add new mingetty package
47423b5 logrotate: Add new logrotate package
dea8d65 distro-tracking: update cronie
c398c16 cronie: add the latest version 1.4.4
883b09f task-poky-basic: add cron, logrotate, mingetty
2eeb094 at: fix for parallel build issue & bug #180
558ef57 rpcbind: add patch to fix host include path
a6c83e0 qemu: build qemu-x86-64 binary for use in locale generation
1ff9c93  updateme: detect and prepare patches
80993c4 qemuimage-testlib: kill qemu process according to its pid, instead of process name
4b611b6 package_rpm: Enable debian style tags
379ba0e rootfs_rpm: Optimize rpm database processing
84f7f70 package_rpm: Enable per file dependencies
431c975 Add qemu-ppc in qemu-native, required by eglibc
0d7bcdf libmatchbox: Fix the matchbox environment start failure on x86-64 target.
36aa00b pointercal: add config file for x86-64 target
a7e1451 distro tracking field: add NO_UPDATE_REASON for cairo
7b3f400 distro-tracking: update devel/toolchain data
561d875 libc-package.bbclass: merge glibc & eglibc class files
436d590 openssh: new recipe addition
a206fce task-poky-lsb: add sysklogd, libaio, mdadm, screen, watchdog
a8339e5 tcl: fix from missing sys/fpu.h and undefined mipsCR
d3fd98e distro_tracking: add alias for bluez4, libgsmd, and zeroconf
748b7da distro_tracking: sed, rpcbind, libtirpc
429015a rpcbind: add new recipe version 0.2.0
0bd7fc5 libtirpc: add new recipe version 0.2.1
3f7f13d which (GPLv3): inherit update-alternatives to handle install priority
c4ecd35 sed: Upgraded to the latest version 4.2.1
8232e01 sed: Inherit update-altenatives to handle the install priority
c56bab6 dpkg: fix powerpc and mips build failure
2c54c55 at: gplv2 recipe at version 3.1.12
e384d62 at: remove GPLv3 version
ff9f102 mdadm: add patch to fix passing linker options to cc
118c364 libaio: add new recipe
dd55094 valgrind: fix perl scripts
33ed325 distro-tracking: update powertop, lttng-ust, lttng-viewer, liberation-fonts
6c098eb powertop: fix segfault in dump mode
f201131 powertop: upgrade from 1.11 to the latest version 1.13
df894c6 sysklogd: add sysklogd 1.5
8cbf96a runqemu: add poky-image-basic and poky-image-lsb to recognized images
45c8f61 distro-tracking: add mdadm and screen
2426f14 screen: add the latest version 4.0.3
8289cd4 mdadm: add the latest version 3.1.4
93914e1 distro tracking: Add info for libuser and xz
094d5d7 Distro tracking: Add package alias for xf86-video-intel
131d268 Distro tracking: Add package alias for puzzles, eds-dbus...
65a4905 distro-track: add ownership for 4 recipes
a4141e1 xset: move DISTRO_PN_ALIAS to distro .inc file
6838545 distro_check: fix for natives, cross, and initial recipe types
444e448 distro_check: use space as the delimiter for aliases
d594565 distro-track: add alias name for 89 recipes
c52fcaf DistroData: add eventhandler to correctly setup log file
d62ee7e packages: Separate out most of the remaining packages into recipes
caab7fc Drop chroot usage as its not well used, tested and is broken
232ef84 bitbake/fetch: ensure the mirrored repository is updated as required
5c229f9 bitbake/git: define a forcefetch method
b54e95f bitbake/fetch: Respect forcefetch even when pulling from a mirror
94f2946 powerpc-common: add working_getline to gettext
d5bc208 which (GPLv2): inherit update-alternatives
dc5f45c lttng-viewer: upgrade from 0.8.84 to 0.10.0
b36e980 task-poky-basic.bb: add at and watchdog
8a13529 at: run daemon as root user
43938f1 sqlite3: fix multiple provider warning
9c1d256 gawk: add gawk 3.1.8, GPLv3 version move to meta/recipes
1a326e9 gst-meta-base: Enable some video and audio codec
be29199 cmake.bbclass: sync from openembedded
a0b72c2 rpm: compatiblity and header fix
adfd0e0 boost: upgrade to 1.44.0
d1f7c3f libcheck: upgrade to version 0.9.8
09bffb7 Add qemu-i386 in qemu-native, required by eglibc
1f0ba7c sed: Fix ppc build failure
4c00be1 distro_tracking_fields.inc: add distro_commands.inc
c595743 toolchain-scripts.bbclass: inherit siteinfo
e055544 sstate: fix dir name in manifest
03983e9 sstate: make do_cleanup really working
3aa6e46 pseudo: Update to latest version
9897b81 bitbake/codeparser: Implement persistent cache
332c33a bitbake/data.py: Add emit_func() and generate_dependencies() functions
3492bff bitbake: Add codeparser for parsing shell and python functions
13fdd4a bitbake/BBHandler: Save python functions into the dictonary
f7627e4 bitbake/data_smart.py: Allow the data expand function to keep track of references (including those from python code)
e656632 meta/classes: Fix whitespace mismatch and broken functions
e300aa0 libproxy: disable perl bindings
4a65458 distro_tracking: connman, connman-gnome, wpa-supplicant, etc.
ca4a58a connman: Use connman as default network management tool
f6917ad wpa-supplicant: Add latest stable version 0.6.10
29d6678 Major layout change to the packages directory
da49de6 quicky: add QT app quicky, a simple note-taking application
923f920 qmmp: add QT app qmmp, an QT audio-player
43e62c4 fotowall: add QT app fotowall, an QT photo tool
46bdf06 qt4 core lib: add qt4 core library x11 version.
51e05bb qmake2.bbclass: update for QT4
7aa5f11 qt-tools-native: add QT4 tool to build qt application
dd30a64 grep: new recipe v2.5.1a
119b69d distro_commands.inc: Add maintainer information
4c86c99 readline: Split GPLv2 version from shared inc file
98bd03a coreutils (GPLv3): add latest version (8.5)
cc0a703 sysstat: add sysstat 9.1.4
5bb5561 cmake.bbclass: sync from openembedded
6bfeb80 gawk: add 3.1.5 (GPLv2 version)
8927e93 cpio: new recipe v2.8
7c301b9 at.inc: remove unneeded LIBS setting
e08ae7e tar_1.17: eliminate a patch by setting CFLAGS instead
9a60cbc file: reinstate 5.04 upgrades with modifications
6b039d0 libuser: add 0.56.16 as new recipe
c3232ed base.bbclass: Add xz-native as depends when finding *.xz in SRCURI
63f33ef xz: add 4.999.9beta as new recipe
cb73e94 bash (GPLv2): remove metadata sharing from GPLv3 recipe
37f914d findutils (GPLv2): remove metadata sharing from GPLv3 recipe
084eb5a rsync: split GPLv2 version from GPLv3 by fixing the GPLv2 recipe
9f03fdd which: add GPLv2 version 2.18
03df313 coreutils: upgrade to latest GPLv2 version (6.9)
7303807 test: Add scenario file for each target and support single case running
192d699 task-poky-basic: added new packages to basic task for LSB
e76f76a ftrace: add trace-cmd for ftrace control and config
70cd1ff linux-wrs: update to 2.6.34.5
4b2a355 sstate/utility-tasks: Ensure do_clean functions correctly and removes shared state
5c7531f sstate: Run sstate_cleanall() as part of do_setscene()
4a310f2 qemu: On some older machines SDL is available
18c0da3 pseudo: Update to the latest git version of pseudo
dd0fb80 meta-toolchain: fix for recent opkg change
e10703a meta-toolchain: update to reflect opkg state directory move
8ea7fa6 opkg: finalize the change to var directory
d46c362 sstate: fix architecture of sstate archives
b66dc67 xf86-video-intel: fix COMPATIBLE_HOST entry, this was preventing building
66790ec poky-qemu: check for existence of required libraries
196f6f2 qemu.inc: ensure helper programs are built when building for qemu machines
1d0757f opkg: use var for state files, not libdir
53ff069 bitbake/runqueue.py: Ensure rqexe always exists and that empty task lists cause a graceful exit
9a8b644 package_rpm: Temporary workaround for perfile dependencies
59a3e98 rootfs_rpm: Enable multi dep solverdbs
55a046b package_rpm: Rewrite the way the spec files are generated
f29f936 package.bbclass: Fix per-file dependency generation
e37ee51 rpm_5.1.10.bb: Update macros
f0f911a rpm: use rpm-5.1.10 from SNAPSHOT URI.
0741c3b Ensure all packages which should have x86_64 in COMPATIBLE_HOST
ca95d02 package.bbclass: Fix shlibs race
203bf3f bitbake.conf: Add DESCRIPTION for -dev, -dbg and -doc packages
47f704e insane.bbclass: Update to match the packaging classes when handling OVERRIDES
b9f4ff1 package.bbclass: Fix do_shlibs
5977534 devshell.bbclass: export the FAKEROOTENV so it can be accessed within the devshell task
71a46a4 utils.py: Fix bb.copyfile to change the permissions of the file back correctly
86c2b56 package.bbclass: If files are unreadable, add read access for stripping
ac9e682 lib/oe/path: Use bb.utils.copyfile as shutils can't cope with copying unreadable files
87dba42 utils.py: Add a new extend_deps() to easily merge two dependency lists
54e3a82 package.bbclass: Add perfile dependency identification
b4bef9a bitbake.conf: Add shared/pkgconfig files to standard -dev glob
5d2e88c rpm: Update the rpm integration to support per-file dependencies
6c12afd glibc: bring back needed patches from older recipes
179e056 base.bbclass: Initial work to add GPLv2 Only Build with Whitelist for GPLv3 Native tools
e7e01e7 linux-wrs: allow packed refs to be present
a33579d kernel: update branch revisions for 2.6.34.4
2cf104f guilt: import guilt for kernel patch management
1554301 distro-tracking: add info for watchdog
91818ff watchdog: add the latest version 5.9
e8231e0 poky-qemu-internal: fix the echo of KERNCMDLINE
9cb1b87 distro tracking: Add info for pax
ce2e0a0 distro tracking: Updated version info for owl-video, matchbox-desktop, webkit-gtk...
d7d803f poky-qemu-internal: fix broken call to poky-qemu-ifup
3a0eeb8 python-pycairo: upgrade to 1.8.10
89ae217 iputils: add iputils package
070096e runqemu-nfs: boot QEMU using nfsroot and local unfs export
313bda1 poky-export-rootfs: script for exporting userspace nfsroots
c23da3d poky-extract-sdk: script for extracting sdk images using pseudo
f203df8 poky-qemu-internal: fixes for userspace NFS booting
81ff1ee poky-qemu-internal: Support use of a preconfigured tap device
4df9f11 poky-qemu-internal: Support NFS boots better
6ea1ed5 poky-qemu-[ifup|ifdown]: Use native tunctl
f35a8d4 poky-find-native-sysroot: helper script for locating the native sysroot path
e4bc3e3 tunctl: Added an tunctl which supports TUNSETGROUP
d9aa25a poky-qemu-ifup: allow multiple tap devices
c791544 qemu: Use a TAP device instead of slirp for networking
b5b3825 unfs-server: new userspace nfs recipe
7352105 glibc: remove all old recipes
7e8f14d valgrind: upgrade for eglibc 2.12
4cdaa17 gdb: disable installation of bfd/iberty/opcodes
75b57d5 bitbake/utils.py: Allow copyfile to copy files which aren't readable
ac3452c bitbake/utils.py: Improve better_exec debug output
616e755 bitbake: Correctly route events from the worker to the server
9708f9c bitbake/knotty: Exiting as soon as a fatal is seen is not desirable as the stacktrace won't be seen
ca09a6f bitbake/cooker.py: Don't init the fetcher in the worker case
fac06aa bitbake/persist_data: Attempt to fix locking issues
604f127 bitbake/data.py: Handle exceptions in export_bars in the same way as emit_var()
9b8ae6b bitbake/server: Raise a shutdown event if we're seeing exceptions
4a8fe7f bitbake/runqueue.py: Ensure the flush happens as late as possible to avoid data mixups
6e3a381 bitbake/utils.py: Give useful debug information when no lineno information is available
f070ee9 Rename packaged-staging2 -> sstate and remove the old empty class
657188b Revert "base.bbclass: Temporarily disable fakeroot for install/package until other fixes get merged"
084ec86 classes: Disable setscene tasks for initial testing
7a0f6ce sanity.bbclass: Don't run the handler in worker context
3c539be package_*.bbclass: Always run these tasks under fakeroot
6739a62 bitbake/runqueue.py: Fix runqueue UI issues
b6bfe14 bitbake: Switch to use subprocess for forking tasks and FAKEROOTENV to run shell and python under a fakeroot environment
a45e1d5 Remove packaged-staging.bbclass
3699201 deploy.bbclass: use new style staging for deploy tasks
29ca893 package.bbclass: Implement packaged-staging2
c28973c staging.bbclass: Convert to packaged-staging
0769e84 package_(deb|rpm): Update to use packaged-staging2
1480119 package_ipk.bbclass: Convert to new task based staging
c7a8029 Start sstate Add pre clean hook Add sstate_installpkg sstate: Tie all pieces together with a setscene function Use pythonic functions rather than os.system() Implement sstate_clean function package_ipk: clean shared state in prestate packaged-staging2: implement fetching packages from mirror Copy add staging_fetch() from packaged-staging.bbclass packaged-staging2: make the output slightly friendlier packaged-staging2: handle directories in the shared state Add directories to the manifest when installing and remove them if empty when cleaning. Move most of the sstate code into the class itself removing the need for heavy boilderplate
787c1cf bitbake: Initial scenequeue implementation (needs major fixes)
41a364f gcc_4.5.0: fix for arm kernel failure
84d96ba elfutils: Add GNU_HASH support to elf*_xlatetof
f5dcdf9 net-tools: add new recipe (1.60-23)
26f3409 pax: add 3.4 as new recipe
f626b8f gzip: Add 1.3.12(GPLv2) as new recipe
6752cdf distr-tracking: add MAINTAINER and version info for rest recipes
86af749 xinetd: Drop INHIBIT_AUTO_STAGE, this does nothing in Poky
23552a4 xinetd: add xinetd
90e8bc7 autotools.bbclass: Drop a number of legacy functions that shouldn't be (and aren't) used in poky now
372f2f4 mktemp: add mktemp package
ec22c62 cracklib: add new package
a57add5 ed: add GPLv2 version.
8cfecea eglibc: recipe cleanup
75c781a distro_tracking: update maitanier for toolchain/devel recipes
e6743f8 rsync: explicitly disable xattr and acl
30b01f9 gamin: add glib-2.0 as dependency
3ce480d bitbake/runqueue.py: Factor task skipping code into a function
65b068a bitbake/runqueue.py: Create RunQueueExecute and RunQueueExecuteTasks classes, further splitting up runqueue
96ec9f8 bitbake/cooker.py: Allow idle handlers to pass through a true value
1db9ee5 bitbake/runqueue.py: Drop duplicated class
d39434b task-poky-tools: Add perf to tools-profile package
efadb43 native.bbclass: Ensure EXTRA_NATIVE_PKGCONFIG_PATH has a default value
84d31b8 apmd: Add back libtool patch as the issue the patch fixed reappeared
22bf334 xserver-xf86-dri-lite: xorg-minimal-fonts is responsible for this symlink
418cce9 bitbake.conf: Set FAKEROOTENV
9ba6043 linux-wrs: Make sure kern-tools-native is built before do_patch
5d9f378 bitbake: Split Runqueue into two classes, a data processor and the execution part
d7bc9b8 DistroData: Cleanup Version numbers and add DistroData Parser
26350bb aspell: moved from meta-moblin to meta to support enchant dependency
912480a distro tracking fix: cairo qemugl
72ccda6 distro-tracking: fix versions format   dbus-wait   shadow
54d6d75 update-rc.d.bbclass: adjust order on tweaking postinst
7025e64 pam: add missing bits from previous commit
db5c145 udev: use relative path when creating dev.tar
07adcba lttng-ust: disable MIPS build since liburcu doesn't build on MIPS
94f63fa gcc_4.5.0: import a missing patch from gcc_4.3.3
514d768 poky-default: fix a warning caused by preferred libc-initial being unset
67239d4 kernel.bbclass: Fix adding module dependencies to RDEPENDS
cb5d51a cross-canadian.bbclass: Set TOOLCHAIN_OPTIONS to point at the correct sysroot
e624b27 build/conf: move sample conf files to meta/conf
2225e12 base.bbclass: Temporarily disable fakeroot for install/package until other fixes get merged
a4aaaee tcl: fix native build
8e8316c bitbake/utils.py: Allow explode_dep_versions to handle the commas join_deps can introduce into strings
bfaeda0 binutils: fix the installed location of libiberty.a file
8c498e5 testlib: Add support for qemumips/qemuppc/qemux86-64, and add support for testing with images from autobuilder
6fc5bdd task-poky-basic: enabled ethtool as part of build
03ee906 distro_x11_apps_1.inc, distro_x11_ux.inc: Add maintainer info
cedd774 distro_tracking: Add maintainer information
b8f64fe distro_x11_core.inc, distro_x11_apps_2.inc: add maintainer info
26db53b gmp: add GPLv2 version (4.2.1)
f53504d ethtool: add new recipe 2.6.34
2d394b2 distro-tracking: update MAINTAINER info for base group
675259c sdk-task: make libc dependancies generic
512d3b7 eglibc: import eglibc_2.12 recipe from OE
2c11926 procps: Move from meta-moblin to meta-lsb
e8ac5a7 Add glossary entry for SUMMARY for binary packaging
a2e6b26 tcl: fix a build issue
aeb73bd linux-wrs: Fix qemux86-64
1c4cc60 kernel-arch: x86-64 is no longer a valid architecture, map it to x86
2e0d6df git: update to get features required for wr-kernel-tools
bdb9da4 emenlow: add support for the r8169 network card
ed51940 emenlow: Add Intel sound support
bb75c18 Move byacc, which, libconvert-asn1-perl and libtimedate-perl to meta-lsb
5abb132 distro-tracking: update MAINTAINER info for base group
1766b2b tasks: updated tasks and images to reflect distro lsb requirments
cca5090 distro-tracking: update MAINTAINER info for x11_libs and sdk_tools.
7b6700f distro tracking: add liburcu, lttng-ust, upgrade lttng-control and lttng-viewer
295e142 task-poky-tools: fix RDEPENDS_task-poky-tools-profile and add lttng-ust into it
56c5f2a lttng-ust: add the latest version 0.5
80ec777 liburcu: add the latest version 0.4.6
5f199e8 distro-track: add maintainer info
0eb96ab gamin: put into meta-lsb
3a7c857 distro-track: tcp-wrappers
304f88f nfs-utils: enable tcp-wrappers support
22ae6b1 portmap: enable tcp-wrappers support
6ffc4f2 tcp-wrappers: add new package
199177b distro-tracking: update tracking fields for libpam and shadow
f6535ea shadow: add new recipe 4.1.4.2
44d7c56 staging.bbclass: mangle *.la for ${base_libdir} too
46771a8 pam: rename to libpam and add core config files
59e30ad distro_tracking: add meta data for additional devel packages
72aa55b libconvert-asn1-perl: create new recipe
4f90c0c libtimedate-perl: create a new recipe
ab902e0 byacc: added new recipe in to the tree
eaf2a94 libproxy: upgrade from 0.4.2 to 0.4.3
e5052c4 minicom: Update to 2.3 (from OE)
1280503 minicom: move from meta-extras to meta-lsb
858c0d9 Distro tracking: Update tracking fields for bc and ed
a1a35a3 ed: add 1.4 as new recipe
a44754d distro_tracking: enchant, cwautomacros, which, and quota
806cc3d which: Add new recipe
070f8f5 distro-track: new package placeholder
4897393 distro-track: update for package upgrades
0e60d04 linux-wrs: Enable tracking of the secondary wrs_meta branch in PV
6cbd557 base: Allow unpack to handle localpath=None
f3292fa bitbake/git.py: Make sure different branches can have different revisions without triggering build count increases
a18e9b4 bitbake/git.py: Allow tracking of branches in SRC_URI without cloning for use with fullclone
0ea4b89 bitbake/git.py: Make sure a full clone checkout always updates
76a17c1 meta-ide-support: don't pull in unneeded nativesdk tasks
2e0e656 dbus-wait: Updated License File Checksum
07582c7 pseudo: Fix pseudo build
28d70bc pseudo: Fix segfaults
6c7bc9e package.bbclass: Document the process followed in the class from a high level
268b8cf dbus-wait: Update LICENSE after changes upstream
d428c9f prelink: Enable image wide prelinking
1c9f061 pseudo: Upgrade pseudo and correct problems
e101642 populate-volatile.sh: cleanup duplicated invocations and remove boot warning
cf1e754 libxml2: fix python binding
bb175ec bitbake.conf: Fix up OVERRIDES documentation (some bits from OE) and also add forcevariable OVERRIDE
9ef9b5e bitbake/build.py: Note when calling functions that don't exist. Should probably error
36e81a8 bitbake/cooker: Make sure no locks are held before we start forking workers
e4c1c8c utility-tasks.bbclass: Use python functions for do_clean instead of os.system, remove pointless [dirs] flag
19be6b4 lib/oe/path.py: Add copytree function that works
a5884df lib/oe: support wildcards in path.remove
dfd7e1f bitbake/build.py: Set the current taskname in the BB_CURRENTTASK variable
a525b27 relocatable.bbclass: Cover libexecdir
9e9d451 bitbake.conf: Set PKG_CONFIG_LIBDIR
889c8ed sato-icon-theme: Make sure the native icon mapping script is found and used correctly
6124ccc bitbake.conf: Always specific the sysroot in TOOLCHAIN_OPTIONS
9e2600b gcc-package-cross: Make the libexec symlinks use relative paths so they're reclocatable
53f22c9 gdb: Make sure expat is not accidentally included
f05fd8d meta-ide-support: A dummy recipe to install everthing for target development
69ac39b kernel.bbclass: do_deploy should use ${B}, not ${S} (which is what ${B} defaults to)
cb67b6d kern-tools-native: add scc
15bf2d5 gcc: Fix 4.5.0 patch rejects
a0dd61e package.bbclass: Use --preserve-dates option when stripping kernel modules
c335297 pciutils: upgrade to version 3.1.5
650319c kernel.bbclass: Exclude scripts/dtc object files
6ef17f4 poky-default.inc: Make gcc 4.5.0 the default but not for mips and powerpc yet
1842635 gcc-4.5.0: import some ppc & mips fixes from oe recipes
8fd7cc3 gcc-4.5.0: newer patch for svn revision 162697
d3630f8 kernel/package.bbclass: Handle kernel module stripping centrally
708db1e kernel.bbclass: Clean up kernel packaging output
f25d26d js: fix configure
15ecd98 linux-wrs: perf needs python and perl at runtime, not buildtime
a52dc8a linux-wrs: Make sure install_perf runs before do_package
e710b42 linux-wrs: Make sure install_perf happens for do_package
7994c9a kern_tools: update default revision
a924ea5 perf: performance analysis tools for Linux
55011c1 kern_tools: add updateme and patchme
eaacd25 kernel: add dynamic configuration and patching
601464b nfsroot: allow nfsroot to survive netbase init
bca2836 pseudo: Only build 32 bit lib version if 32 bit development headers are available
0025bbb acl: add new package
607709f xserver-xf86-config: add qemux86-64 xorg.conf
f4cb087 module-init-tools: fix depmod caused segfault issue
45d237b quote/cwautomacros: Move to meta-lsb
8f284e4 bc: add 1.06 version as new recipe
0cc9ac7 quota: Add new recipe
a9d468c cwautomacros: Add new recipe.
bdcf666 enchant: Upgraded to version 1.6.0
662f136 udev: enable udev-extras
0bb1016 usbutils: upgrade to version 0.86
680f8bf attr: various improvements
28d52a2 js: upgrade to version 1.8.0~rc1
56bbb27 pcmanfm: re-update it to 0.9.7
2c2e5dc pseudo: Enable dual 32-bit and 64-bit support
4e2c84f pseudo: Change pseudo integration to better support local DBs
aed7ee0 base.bbclass: Enable fakeroot (pseudo) usage during install and packaging
f4322c6 package_ipk.bbclass: Fix variable name
16d299c cooker.py: Fix case of -b option with a full filepath
8105d43 *: Fix typo in documentation
9383074 gcc: Fix dynamic linker location for x86_64
1fbcd2c lib/oe: sync with OE.dev
7b74364 icu: Make sure changes apply to Makefile and Makefile.in to fix build failure
12f8876 package_ipk: Clean up initial variables
0f516fe bitbake/build.py: Add support for pre and postfuncs for tasks
b83179c kernel.bbclass: Simplify shell syntax so pysh can cope with it
f6ae8a4 packaged-staging: Fix architecture of nativesdk and cross-canadian packages. Also remove now unneeded path from native packages
ec8f529 cross-canadian: Move binaries into a subdirectory of bin to allow multimachine installs and update users accordingly
b3e41b5 packaged-staing.bbclass: Make sure python function is marked as such
ad8c5b6 utils: Fix number of arguments to bb.msg functions
0e3fc6d *: cosmetic whitespace removal
191a288 Add pysh, ply, and codegen to lib/ to prepare for future work
e6b6767 Let the runqueue find the user selected scheduler dynamically
29b4c29 apt: fix builds with modern GCC
fa8c028 scripts: add qemux86-64 support to the qemu scripts
d9b1d43 mesa-dri: fix x86-64 target compilation
a235e41 hal: PR needs to be bumped for change to take effect
983b094 opkg: take out the bad patch on crack
fe69012 libgcrypt: upgrade from 1.4.5 to 1.4.6
24132e4 libmad: fix for building on mips with gcc-4.5.0
4460087 enchant: fix a dependancy issue affecting the build
40f5030 emenlow: Add BASE_PACKAGE_ARCH and modification to hal.inc for emenlow
54bb4b4 site/x86_64: Add entries to allow various programs to compile
ba6a07b local.conf.sample: Use ?= when setting SDKMACHINE
e4d743e xserver-xf86-config: netbook - merge the two ServerFlags sections
71bf22d distro tracking field: iputils, mktemp, xinetd, cracklib
8f756a7 distro-tracking: for new packages 	gzip 	iptables 	ethtool 	net-tools 	shadow 	coreutils 	libuser 	bc 	ed 	pax 	quota 	which 	watchdog
b8589c9 iptables: new package 1.4.8
754c548 pam: use volatile to avoid /var/run population in do_rootfs
8362a98 tcf-agent: fix the init script: remove the "-s SSL:" option
cdece36 distro tracking: add distro_sdk_tools.inc, add lttng-ust
5fba534 dhcp: fix $PATH environment for dhclient-script
1acae1c libmusicbrainz: fix a build issue with gcc 4.5.0
620aece gcc-4.5.0: import an arm fix patch from OE
7325781 gcc-4.5.0: apply the lib64 path 64bithack.patch
067863d distro tracking: add tracking for libmpc
8658f47 rootfs_ipk.bbclass: add keyword "Collected errors" for log error check
16877ce avahi: fix the /var/run conflict with other package
ae035f1 emenlow - boot to a GUI
d9f22d4 binutils: Fixed cross-compile issue for 64b build + arm target
da1332a bonono/orbit2: Move to meta-extras
7f8c1bf libjana: Drop duplicate copy from meta-openmoko
049aaa0 staging: Remove now unused legacy staging code
ab37f53 xserver-xf86-config: Add a netbook xorg.conf with an extra option
9d4a429 emenlow: linux - add enough config options to boot a live image
637ad7e bitbake.conf: change inode calculation for genext2fs [BUGFIX#138]
218e441 utility-tasks.bbclass: miscellaneous fix
ea3cfba cmake: only search root directory for FIND_***
106de1f distro tracking: add tcf-agent
90e80aa tcf-agent: add the latest version 0.3.0+svnr1078
c62be53 site/x86_64: Add missing site config for glib-2.0
fb10983 qemux86-64: Add new emulation machine for 64bit x86
752435e x86-64: Fix up COMPATIBLE_HOST defintions for x86-64
4a51ea5 xspb-glx: Fix libdrm naming issues
95e40d3 libdrm-poulsbo: Fix naming to be consistent
b01f7d7 libva: Add missing DEPENDS on libxext
faf6b2d cross-canadian.bbclass: Tweak secondary toolchain path component to account for multimachine
2685863 rm_work.bbclasS: Don't remove the pseudo database as it causes problems with meta-toolchin
7829212 emenlow.conf: All tune-atom users need to share the same TARGET_ARCH, fix. Need to revisit this issue later
7a18558 gcc: For 64 bit targets don't use lib64
43b8e66 Revert "pcmanfm: Update to 0.9.7"
7edde59 bitbake: cache: If one virtual of a recipe is uncached, remove all versions from the cache
36cfff8 bitbake: fetch: Only mark srcrev recipes as uncached when outside of SRCREV caching mode
0babe2c cross-canadian.bbclass: Add in the target compiler paths as well as the sdk compilers
0b60744 gcc-configure-sdk.inc: Remove hardcoded util paths
42df9e9 cross-canadian: Fix toolchain path
3a52615 gcc-runtime: Fix stashed libs path for nativesdk
ae28366 pseudo: Fix path length issues and resulting chdir issues
ff0e858 gcc-cross: Remove obsolete hacks from 4.5 version
2e5df82 nativesdk.bbckass: Fix toolchain path
53b1161 pseudo: Make sure log/pid/lock/socket files are covered by data directory moves
bcba451 binutils: Remove zlib DEPENDS as it causes circular references
c28cbe7 emenlow: Change libdrm-poulsbo to libdrm_poulsbo
1732634 elfutils: add nativesdk target
c7c5c34 gcc family : upgrade to 4.5.0
722e27e libmpc: bring for gcc 4.5.0
4f19548 prelink: Add prelink-native
5e3da1b elfutils: add elfutils native
33ee407 binutils: Add native version and tweak
8b3f94e binutils: Set DEPENDS correctly and remove unneeded PACKAGES setting
7069fb8 binutils: Drop FILESPATHPKG, its no longer needed
62540b2 meta/conf/bitbake.conf: Configure pseudo to not expand symlinks
d668b80 meta/classes/rootfs_rpm.bbclass: re implement base on rpm5
8760cde rpm: switch to using RPM 5
60fa21d beecrypt: upgrade to version 4.1.2
9fcba30 libpcre: move from meta-moblin to meta and update to 8.10
a4fb2c9 pseudo: Enhancements
7de5081 task-poky-basic: Enable at and tar for basic image
ac5a021 tar: New recipe additions 1.17 and 1.23
8098644 at: New recipe additions 3.1.10.2 and 3.1.12
d6ba72a pcmanfm: Update to 0.9.7
cbea4ae udev: upgrade to version 158
3a1c456 webkit-gtk: Update to 1.3.2
b0b3468 tar: New recipe additions 1.17 and 1.23
0d33329 at: New recipe additions 3.1.10.2 and 3.1.12
6da4a66 meta-lsb: Add basic infrastructure to create lsb image
18b33a2 distro tracking: Additional core command packages
36186e8 distro_tracking: fix tracking field for db
0ff62b0 expat: use gzip-native for unpack
f23b594 gzip: new package
d91b4f5 opengl: audit the bb file
d007137 distro-track: update hal, udev et al
95bb97a dhcp: upgrade to 4.1.1-P1
00a42b7 util-linux: upgrade to version 2.17.2
ec6705a hal-info: upgrade to version 20091130
8bad275 hal: upgrade to version 0.5.14
63d5652 libusb-compat: upgrade to version 0.1.3
74388f7 libusb1: upgrade to version 1.0.8
6b1dae9 distro tracking: Updated version info for oh-puzzles, dates, contacts...
623017e libfm: Add 0.1.12 as new recipe
e1a6b73 menu-cache: add 0.3.2 as new recipe
cf3f5de startup-notification: Drop unneeded do_configure_prepend
e7dc96a distro tracking: add xcb-util and startup-notification, fix xorg-minimal-fonts
4129415 startup-notification: upgrade to the latest version 0.10
e4f9809 xcb-util: add the latest version 0.3.6
39d8556 gst-meta-base: Fix vorbis plugin reference
a167678 gaku: Fix plugin name
c0a63c5 gst-plugins: Fix module splitting
95454d7 linux-wrs: Bump PR and fix some quoting
4c37304 webkit: Bump PR
0665356 binutils: Disable libbfd and remove unneeded copies of tools in dangerous paths. gcc now has symlinks to handle this
28f8e30 binutils.inc: This bug has since been fixed, drop the hack
66d7b58 bitbake.conf/cross.bbclass: Inject MULTIMACH_TARGET_SYS into the toolchain paths to prevent multimachine cross contamination
bf80232 gcc-package-cross.inc: Setup symlinks in the libexec directory to our cross tools so the toolchain finds them correctly
ab82312 gcc-cross-intermediate.inc: Make sure libgcc goes into the target sysroot
23f94ad gcc-cross-initial/intermediate: Drop now unneeded symlink hacks
989d2f7 gcc-cross: Use MULTIMACH_TARGET_SYS instead of TARGET_SYS in staging path
3f5d3d7 gcc-configure-common.inc: Disable multilib for now
b98e3e9 poky-env-internal: re-add OEROOT to the whitelisted environment variables
fbf2022 sanity.conf: Update layer version after the last commit
2efba78 Add meta-emenlow to the default layers list
f887d02 bitbake.conf: Increase the image generation free space
dbc8892 latencytop: Move from meta-moblin to meta
833390e libdrm-poulsbo: Provide libdrm-poulsbo instead of libdrm
b18f121 package_deb.bbclass: Make sure the controldir is always cleaned out
7459068 scripts/poky-env-internal: preserve the git proxy env var
0d18597 rootfs_ipk: error when dependencies cannot be satisfied
c017d0e eds-dbus: Add missing DEPENDS on gperf-native
b4cc2b7 pkgconfig_staging.bbclass: remove it
1808105 distro tracking: fix font-alias
b7be3ba font-alias: fix metadata
5eb1eec distro tracking data: fix gconf-dbus, vte, xserver-nodm-init, qemugl, spectrum-fw
671f05a distro_tracking: Fix tracking fields for networkmanager, networkmanager-applet, and glibc
23707b0 distro tracking: Updated version info for oh-puzzles, dates, contacts...
3391145 distro-tracking: fix two typos
408f124 handbook: update SDK paths
410fc8d meta-toolchain: set appropriate compiler flags in the environment script
c9602c5 emenlow: Set COMPATIBLE_MACHINE where needed
e35762d xpsb-glx: Add missing dependency on makedepend-native
90ac746 xserver-xf86-config: Fix emenlow append to coexist with existing users
dc54b77 meta-emenlow/formfactor: Make sure the files work well with the existing recipe files
83cc549 poky-env-internal: Print some further information for the user
9832fd3 poky-env-internal: Cleanup after the recent layer improvements
c2f71a8 poky-env-internal/runqemu: Move BUILD_SYS handling which is runqemu specific into runqemu
2b84008 moblin.conf: Collapse to an overlay of poky.conf
7af8cb9 poky.conf: gcc 2.95 died a long time ago, thankfully
6d3a5ac meta/layer.conf: Fix PATH to use POKYBASE
ade4c8a meta-moblin: Remove now unneeded moblin POKYMODE
7219087 Move less useful xorg-app and xorg-data to meta-extras
d977cb2 meta-extras: Remove obsolete android goldfish code
3073a73 mc: 4.6.0 -> 4.7.3 with significant recipe cleanups and updates
c907634 meta-moblin: Remove old psb driver
897a8b5 stagemanager: Move functionality into the scripts directory
dc807f5 Finally deprecate all legacy do_stage functions. This changes the existing warning into a fatal error if any legacy do_stage functions are found.
5c63f8a poky-env-internal: unbreak existing build setups
d9babfe latencytop: add dependency on gtk+ and bump PR
ba8fad4 opkg-utils: add do_install after NATIVE_INSTALL_WORKS
b02be74 Drop old broken menlow machine (replaced by emenlow)
c358150 emenlow: Make sure the provider of virtual/kernel is set
595bdde opkg-utils: Set NATIVE_INSTALL_WORKS otherwise we'd use legacy staging which is not correct
bbdc798 linux-wrs: Add COMPATIBLE_MACHINE definition to stop parsing errors on unsupported machines
e8e3ac9 meta-emenlow: Layer for eMenlow-based systems.
0c3b1aa scripts/runqemu: Path fixes
1df4e34 distro-tracking: correction for previous recipes
d8db718 sqlite3: no need to inherit pkgconfig_stage
b376a80 module-init-tools: upgrade to 3.12
8a251ac libpng: upgrade to 1.2.44
d86e127 libidn: upgrade to 0.6.14(GPLv2), and 1.19 (GPLv3)
856769b gperf: upgrade to 3.0.4
98cdb30 dbus-glib: add license checksum
afdebdb dbus: add license checksum
75fff51 apmd: upgrade to 3.2.2-14
cb249ed cmake.bbclass: Make sure EXTRA_OECMAKE has a sane default
0e08301 libproxy: Disabled webkit support
314fbb1 gcc-cross-canadian/meta-toolchain: Fix C++ compiler location and path issues
1d0d3e4 distro tracking: gconf-dbus, elfutils, spectrum-fw and sqlite3
929169b sqlite3: upgrade to 3.6.23.1
12c9296 spectrum-fw.bb: Change SRC_URI to somewhere fetchable.
f193588 elfutils: upgrade to version 0.148
6cb27d8 gconf-dbus: upgrade to SVN r705
9f5e302 distro_tracking: Add tracking field for db, opkg, and opkg-utils
cb1a0a4 opkg-utils: Upgraded to revision 4747
36bc459 opkg: Upgraded to version 0.1.8
21fae7e distro tracking: Update fileds for gnome-vfs, avahi, libassuan, liboil...
7dcb5a2 gpgme: Update to 1.3.0
3668c10 libassuan: Update to 2.0.0
4c2bb35 libgpg-error: Update to 1.8
9618d56 liboil: Fix the meta data
2601e6d avahi: Update to 0.6.27
1763f00 gnome-vfs: Update to 2.24.3
3deb487 distro tracking: update distro tracking field for font-alias and liberation-fonts.
6b2eec3 linux: 2.6.33.2: turn on CONFIG_OPROFILE and CONFIG_LATENCYTOP for netbook and qemux86
31c0972 distro tracking: add distro tracking field for oprofileui, powertop, latencytop.
fcabff2 task-poky-tools: add latencytop into RDEPENDS_task-poky-tools-profile
912a5c9 latencytop: upgrade from 0.4 to the latest version 0.5
61d808b powertop: upgrade from 1.10 to the latest version 1.11
e2fa1ec oprofile: fix metadata
47a60cc oprofileui: upgrade from r194 to the latest version r197
fb92046 task-poky-tools: fix RDEPENDS_task-poky-tools-profile_qemux86
ce8cb73 Distro tracking: Update the eds-dbus, jpeg, webkit-gtk....
b8b678f jpeg: Update to 8b
37eb359 eds-dbus: Update to 2.30.2 from git repo
2d63185 web-webkit: Update to 110
dc5bcf7 oh-puzzles: Fix the meta data
521edcf distro_tracking: valgrind, formfactor, makedevs, and bluez-dtl1-workaround.
5f3e66d valgrind_3.5.0.bb: Fix recipe metadata
c7c3b48 makedevs_1.0.0.bb: Fix recipe metadata
69c907d formfactor_0.0.bb: Fix recipe metadata
ad0ac0e pseudo: Uprev to the latest git version
9719075 Enable build dir outside of the poky directory
50629b3 bitbake.conf: move PSTAGE_DIR and DL_DIR with build output
df563f0 linux_wrs: update SRCREVs for 2.6.34.1
f5495cf linux_wrs: remove duplicate PV
4dc54a2 layer.conf: Set BBPATH correctly
d39ae18 qemu/mips: arrange for vmlinux to be bootable
ae6c323 qemu: update kernel mapping to return x86 for i586 TARGET_ARCH
9ee1fbb qemu machines: Switch to use linux-wrs
f0af0ba kernel: create base recipe for Wind River Linux kernel building
15624d1 kern_tools: wrs kernel manipulation tools
3e86c5e linux-libc-headers: create a libc-headers based on Wind River kernel
68974e8 vte: upgrade to 0.24.3 to fix security vulnerability
6915c7e cpan-base.bbclass: fix perl version finding function
a30162b distro-track: update fields for base section
549a171 rsync: upgrade to version 3.0.7
dd05d05 pcmciautils: upgrade to version 017
e17f8f7 shared-mime-info: upgrade to version 0.71
46039a3 pkgconfig: upgrade to version 0.25
231f585 genext2fs: upgrade to version 1.4.1
aff5193 distro tracking field: fix xserver-xf86-config version
b3e901c xserver-nodm-init: fix distro tracking data
5e53061 xf86-input-vmmouse: upgrade to 12.6.9
8078a30 distro tracking: add distro tracking field for qemugl, vte and web-webkit
84efdfb distro_tracking: Add/change tracking fields for glibc, tremor, libproxy
e4f0d88 wpa-supplicant: Upgraded to version 0.7.2
397793a libproxy: Upgraded to version 0.4.2
d47fc7a cmake-native: Upgraded to version 2.8.2
a6ba63c Distro Tracking: update distro tracking field for recipes of Graphics libs
0ba8e6f xorg-minimal-fonts: fix metadata
2df46a3 distro_tracking: note devel upgrades so far
648d76b mpfr: upgrade from 2.3.1 to 3.0.0
41e668e gmp: upgrade from 4.2.4 to 5.0.1
227fd49 distro_tracking: add gmp & mpfr packages in the devel tracking file
4661367 python-pygobject: upgrade from 2.16.0 to 2.21.1
77dff52 python-pygtk: upgrade from 2.10.4 to 2.17.0
1d1a559 python-scons: upgrade from 0.97 to 1.3.0
1564ef9 python-pyrex: upgrade from 0.9.8.5 to 0.9.9
692065d python-iniparse: upgrade from 0.2.3 to 0.3.2
9710898 python-imaging: upgrade from 1.1.6 to 1.1.7
97e7eed python-dbus: upgrade from 0.83.0 to 0.83.1
f828c0f yum-metadata-parser : upgrade from 1.1.2 to 1.1.4
29d5edf Use pseudo rather than fakeroot for fake root privileges
1b6535d pseudo: various enhancements to integrate with Poky
f23aa92 staging: fix staging of empty directories and add localstatedir
63e6ba8 bitbake: Add support for .bbappend files (see mailing lists for detais)
c4fde24 *: use print() as a function
2fc283c gst-meta-base: Update ivorbis plugin name
5e34400 gaku: Fix ivorbis plugin name
6598f98 bitbake: runqueue: Allow passing of success/failure handlers to runqueue_process_waitpid()
8c23850 bitbake: runqueue: Allow taskname to be passed to check_stamp_task()
009343b bitbake: runqueue: Make child process error scary so user is less likely to ignore
2d26384 bitbake: runqueue: Fix number of running tasks accounting (include failed tasks)
3cd042f bitbake: runqueue: Remove unneeded exception catching from fork_off_task()
5c44f9a bitbake: runqueue: Separate out task forking code into a new function
8a5b508 bitbake: runqueue: Combine the waitpid result handling code into a function
90db9f3 bitbake: Remove two layers of unnecessary functions from task execution
2fa0c30 libtool: update patches
23363c9 insane.class: print the recipe name in the warning.
2295705 sysvinit - Remove sulogin dependency on /usr/lib*/libcrypt.a
fd1d661 test: add automation framework and sanitytest
bd19169 poky-qemu-internal: Use 128MB memory for qemumips/qemuppc
2194912 qemu-scripts: Add support for mips and powerpc machines, update qemuarm
88dd324 qemu-native/powerpc: add qemu 0.12.4 powerpc support
8686172 binutils: Drop old versions
0f19ae1 binutils-cross: fix '-fPIE' on mips platform
baf69e6 binutils/gcc-crosssdk: Fix hardcoded path layout assumptions for cross toolchains
c50e585 gcc-cross-canadian: Don't build target libs as we don't use them
ab4ee45 cross-canadian: Fix sysroot path
cc86905 bitbake.conf: Add base_libdir_nativesdk
3b154ff crosssdk.bbclass: Ensure target layout variables are set correctly
04472ec insane.bbclass: move license check to after configure
8fe2bb0 glibc: Ensure libc is built in the correct directory by setting slibdir
f9262fa bitbake.conf: Update sdk build flags after layout changes
f60aa08 Revert "file: upgrade to version 5.04"
abf39a1 sanity.bbclass: Fix SDKMACHINE sanity check. We need to check the SDK_ARCH variable, not SDKMACHINE directly.
3b25e33 gaku: Fix gst plugins names
f0ebbd2 atk: Fix the PREFERRED_VERSION
d673ad0 gdk-pixbuf-csource-native: Fix multiple providers warning
e1ed390 gst-plugins: fix multiple providers warning
e388cb1 gcc: Add patch to fix sparseset.o rule
9522930 gst-plugins-bad: Disable apexsink since we don't have openssl in DEPENDS causing build failures
2592f1c psplash: Update to svn revision 424
8994ce3 distro-fixed.inc: create as last means for package version check
bdcecea distro-tracking: use correct override format
78f2a2c python-pygobject: add glib-2.0 dependency
168bf73 distro-tracking: update tracking fields based on current progress
41acb50 dbud-glib: upgrade to 0.86
67eeb71 dbus: upgrade to 1.2.24
85d83ab Distro tracking fields: Update some info after package update
be1279f libgnome-keyring: Fix the dependency to avoid compile error sometimes.
0e7e3ae gtk+: Update to 2.20.1
b64111f libgnome-keyring: Add 2.30.1 into poky
7a5eeeb libxslt: Update to 1.1.26
b4a1dc5 libsoup-2.4: Update to 2.31.2
bb2c557 pcmanfm: Update to 0.5
73914a8 hicolor-icon-theme: Update to 0.12
c66a05a gnome-keyring: Update to 2.31.4
4cbef85 matchbox-wm: Update to 1819
de590e0 matchbox-stroke: Update to 1820
718510f matchbox-keyboard: Update to 2075
7a92d32 matchbox-panel-2: Update to 2109
14e9002 matchbox-config-gtk: Update to 2081
13a8dc5 gtk-sato-engine: Update to 0.3.2
608909d libglade: Update to 2.6.4
92bc561 gnome-common: update to 2.28.0
689eecf Distro Tracking: add distro tracking field for recipes of Graphics libs
da28607 libx11-trim: upgrade to the latest version 1.3.4
fb02061 libx11: upgrade to the latest version 1.3.4
40421c1 librsvg: upgrade to the latest version 2.26.3
cd890ce glibc: Upgraded to version 2.10.1
119b8bf epdfview: add epdfview recipe from OE by Manuel Teira
9b7907f libtool family: fix build failure caused by previous libtool commit.
4e80041 libtool: Only apply prefix.patch to the non-target versions of libtool
b342712 python-gst: upgrade from 0.10.8 to 0.10.18
d42466e libtool family: upgrade from 2.2.6 to 2.2.10
f516cfc siteinfo.bbclass: add mips-common to mips targets
e18aba5 python: upgrade from 2.6.2 to 2.6.5
936a73e gdb family: upgrade from 6.8 to 7.1
da46e7f xf86-intel-video: upgrade to 2.12.0
24ea9ad distro tracking field: add graphics core distro tracking filed
c0a3d22 vte: upgrade to 0.24.2
f7a9890 xserver-xf86-dri-lite: upgrade to 1.8.99.904 (1.9 RC4)
3e9592e libxfont: upgrade libxfont to 1.4.2
d1993fa mesa: upgrade to 7.8.2
7b46397 distro-track: update for nfs-utils related pkgs
3451dc8 nfs-utils: upgrade to version 1.2.2
5bd2ba7 libnfsidmap: add new package
8f033f5 libevent: add new package
bbd9ebf libcap: add new package
23dd725 attr: add new package
a604cb7 distro-track: update for base section
424278c gnutls: upgrade to version 2.8.6
8a556a8 syslinux: use /usr/lib/syslinux as AUXDIR
72210f8 libnss-mdns: upgrade to version 0.10
62136a8 findutils: upgrade to version 4.2.31 and 4.4.2
90ceeff utility-tasks.bbclass: add automatic version check for GIT/SVN proto
43bd793 fakeroot: upgrade to 1.14.4
59df5a4 pam: upgrade to 1.1.1
5dcefd1 expat: upgrade to 2.0.1
cf3796f base-passwd: upgrade to 3.5.22
fae8d5e insane.bbclass: Relax fatal errors for now until we get have time to work through the backlog
ee4fc42 Revert "meta/site/common: Globally disable rpath option for all gettext packages"
4e3cb2a Merge branch 'tk/master'
da9f079 meta/site/common: Globally disable rpath option for all gettext packages
b44d32e insane.bbclass: Portions of code were not running, fix this and sync with OE.dev. Also add tests for bad sysroot rpaths in binaries
2e04ea8 prelink: upgrade from 20061027 to 20100106
7fa2815 libtasn1: upgrade to version 2.7
69a86f9 disto-track: update fields for base groups
fd8cf68 v86d: upgrade to version 0.1.9
37e6594 libpthread-stubs: upgrade to version 0.3
f481c5d zip: upgrade to version 3.0
21d586b file: upgrade to version 5.04
71466ea less: upgrade to version 436
9e8ffdc popt: upgrade to version 1.16
0976252 unzip: upgrade to version 6.0
01af31a strace: fix metadata
0f8810e dropbear: upgrade to version 5.02
47b2545 tzdata: upgrade to version 2010j
b56df3f busybox: upgrade to 1.16.2
330e32d netbase: upgrade to 4.41
4d4b792 package_*.bbclass: Only set pkg in overrides. These are the only values we're interested in expanding and this makes sure we obtain the expected data
1497af0 Revert "classes/package_ipk|_deb|_rpm.bbclass: Fix setting of OVERRIDES when packaging"
a644cd1 preferred-xorg-versions: fix some versions
d0eabcb local.conf.sample: add igep0020 and igep0030 as supported machines.
053e64e igep0030: add new OMAP3 IGEP module.
e5520e2 igep0020: add MACHINE_EXTRA_RRECOMMENDS on linux-firmware-sd8686.
34e45d5 linux-igep2: drop linux-igep2 in favour to generic linux-igep recipe.
d42035d igep0020: use linux-igep for preferred kernel provider.
a367934 linux-igep: Add common 2.6 Linux Kernel for all IGEP based platforms.
f594a11 mtd-utils: update to 1.3.1 to allow UBI support.
1d22846 linux-firmware: add firmware files for use with Linux kernel (based on OE.dev)
912e9d2 igep0020: set default TARGET_FPU to 'hard'.
d4a6c9e distro tracking field: add distro tracking filed for graphic core/app
52759ea pango: upgrade to version 1.28.0
8f88fd5 xrandr: upgrad to version 1.3.2
cd7a91e xf86-input-evdev: upgrade to version 2.4.0
4568423 xf86-video-vmware: upgrade to version 11.0.1
669491b python-pycairo: upgrade to version 1.8.8
7ccf7af cairo: upgrade cairo to 1.8.10
020022a distro-tracking: correct the latest for perl
6a5a351 qmake2-cross: update the 2.10a recipe
a60863a distro_tracking: Adding tracking fields for upgraded recipes
763be1f nektworkmanager-applet.bb: Fix recipe metadata
614b28d networkmanager_svn.bb: Fix recipe metadata
9bd229b libproxy_0.2.3.bb: Fix recipe metadata
128a2f7 kexec-tools: Upgraded to version 2.0.1
15c9e54 preferred-xorg-versions: update versions after latest recipe bumps
819a34a Distro Tracking: add distro tracking field for recipes of Graphics libs
82597d3 librsvg: fix metadata
322b26a liberation-fonts: fix metadata
ee97395 xorg-minimal-fonts: fix metadata
2836e04 font-alias: fix metadata
e028878 freetype: upgrade to the latest version 2.3.12
efdb82b fontconfig and fontconfig-native: upgrade to the latest version 2.8.0
95bc479 util-macros: upgrade to the latest version 1.10.0
d6615c2 xkeyboard-config: upgrade to the latest version 1.9
d1b1378 libpciaccess: upgrade to the latest version 0.11.0
f76cd26 rpm: fix metadata
5d1a64a shared-mime-info: fix metadata
c3a2031 tzdata: fix metadata
788ffb7 vte: fix metadata
f0c6692 strace: fix metadata
ffa0f79 unzip: fix metadata
471892e pcmciautils: fix metadata
dfe9854 js: fix metadata
715e033 libusb-compat: fix metadata
d65c827 avahi: fix metadata
4e71fc7 hal-info: fix metadata
06ecb32 hal: fix metadata
5061f7b nfs-utils: fix metadata
912f5b1 rsync: fix metadata
4d16090 file: fix metadata
64e5dd1 findutils: fix metadata
2cfe0ca genext2fs: fix metadata
bbd41f4 less: fix metadata
47cc37d pkgconfig: fix metadata
1478977 gconf-dbus: fix metadata
9bb0fa9 libpthread-stubs: fix metadata
b649f5c startup-notification: fix metadata
54f41e2 popt: fix metadata
bd6b465 libnss-mdns: fix metadata
0f321c8 distro-track: update track info of base packages
9f2b765 distro-tracking: add overrides for previous packages
bac29db libidn: fix metadata
adcfc07 libpng: fix metadata
dd0760a gperf: fix metadata
a234ac0 apmd: fix metadata
b1c7410 base-passwd: fix metadata, indention and patch parameters
5d4ab79 base-files: fix indention
22e877d libgpg-error: fix SRC_URI indention
46140e8 module-init-tools: fix SRC_URI indention
c19e4d2 dbus: fix SRC_URI indention
31180a5 glib-2.0: upgrade to 2.24.1
6b81c6d sudo: upgrade to 1.7.2p7
14df571 bitbake: Fix handling of empty variables in local config files
04b2a78 Add a warning if a BBFILE_PATTERN doesn't match any bb files
ecbd5ca 3.0 prep
ef1de9e Apply some 2to3 refactorings
20dc452 Drop a couple usages of readlines
b9f8af1 Until the interactive mode is fixed, kill it from the valid options, to avoid confusion
aa538a4 Fix syntax error in shell.py
fe9172e Add missing 'return False' to the SystemExit handler in runAsyncCommand
526837e Move serverConnection.terminate() back into the finally
2f0a485 Limit the traceback length in the default exception handler
56f083a Switch from our own 'dummywrite' class to StringIO
6be4fa5 Switch a fatal usage to SystemExit ("T" not set)
ce42c24 Resurrect the excepthook, this time just sending the info with bb.fatal
6c33866 remove return in finally statement
39f6ec5 cooker: Kill __getitem__ usage on exception objects (python 3 prep)
ef835bf Handle SystemExit and KeyboardInterrupt sanely when executing a command
562fd5f Drop unnecessarly duplicated messages wrt FuncFailed
6092312 knotty: use the future division to prep for 3.x
8a9a474 Kill the unnecessary setVarFlag debugging message
dabe4a3 knotty: stop freaking out and dying when bb.build has removed the empty logfile
e886ec2 Use bb.utils.mkdirhier in bb.cache to shut up the pending deprecation warning
8f9bdd6 Use PendingDeprecationWarning for functions moved from bb to bb.utils
0c5b5b2 Start ditching fatal() calls in favor of raising appropriate exceptions
77a6052 Drop the non-debug traceback suppressor, at this point I think it does more harm than good
40d7de8 Change wget fetcher to use the runfetchcmd
88a2576 Show a traceback when a task fails due to an exception
c63278b parser: fix harmless typo in variable name
3beecc6 Fix the silent exit when the specified task doesn't exist
7e53a3b Move the output of no provider and multiple provider messages into the UI
75d4984 Reorganize the main exception handling so an attribute exception raised in the ui isn't misinterpreted
1b6af27 Make knotty ignore the NoProvider event
4fac507 Don't tell the user we're sending SIGINT to the remaining 0 tasks
186f857 cooker: use time.strftime() instead of spawing sh with date
0405011 Adjust the exception handling based on Cliff Brake's patch
6ab1dbb Fix a couple typos in the CVS Fetcher section.
16553b8 cache: do not chdir unnecessarily
726802b persist_data: cache connection and use cursor
30216c6 cache: use a set() for __depends
cf79cf1 cache: use max() to determine newest_mtime
81d13cb cache: use os.path ops instead of stat
9d32ff0 Make the file not found error actually useable.
85ca18f fetch: commentary typo fix in fetcher_init()
6c37c32 cache: fix typo in error message of cacheValidUpdate()
a7ad7cf fetch: documentation typo fix
f7e6c5a fetch: Check for existence of tar file along with md5 signature
50006b4 Revert "In expand, drop the unnecessary second regular expression match"
d217bed Don't emit vars starting with __, as those are internal
d00b54b In expand, drop the unnecessary second regular expression match
e07a5b1 Simplify _findVar a bit
66d66cb Fix major bug that slipped in when moving update_data
4802a9d Move a var definition in cooker.parse_next
8bc7ebb Enhance the expansion exception message
1e7a03c For ${@}, run str() on the result
15248f3 Allow emission of non-string objects in emit_var, instead running str() on it first
9d3f301 emit_env: clean up, iterate once
6f52061 Fix the debug level check in print_exception
c3eae29 Don't try to expand non-string values
214d1f7 Move the python version check into the python package
231d3a5 Drop an unnecessary second python version check and use the less ugly sys.version_info
bdbeaf4 Bump version to 1.11.0
5186405 Move the python version check before the module imports, in case the modules utilize the newer python features
c04cee7 Search up the directory tree for bblayers.conf
3238125 Add a hack to avoid the req that all vars using LAYERDIR be immediately expanded
dc39ebe Move the unset BBPATH sanity check after the bblayers processing
22a2179 Kill unnecessary usages of the types module
1180bab Apply some 2to3 transforms that don't cause issues in 2.6
5b216c8 Add __contains__ to COWDictMeta
d5927a7 Drop unused bb.data.expandData function
ba6df17 Ignore deprecation warnings for now
bcd9c57 Switch some references to moved functions
c770c62 Add a missing import of print_function
ad543e2 Apply the 2to3 print function transform
978b5c9 Deprecate the usage of certain objects via certain modules
cbc8140 Exception handling fixups
cf58d41 Add some missing docstrings
0b4ad70 Drop __all__ usage
266f416 Drop some unused functions
bbc565e Drop some unused classes
51f5346 Drop some unused vars
1c74fd7 Import fixups
7acc132 Formatting cleanups
bbf83fd Drop doctest, as we aren't utilizing it
8306ba5 Don't run metadata event handlers for bb.msg events
6623d79 Stop using functions via 'bb' that were moved from there to other modules
1569c1a Add a function to get the debug level, without poking into debug_levels manually
c8498f5 Fix invalid logging domain warning
316ab4b Bump minimum python version check to 2.6.
350c312 Make the default domain a proper domain, not a string
943ece8 Implement bb.msg.domain as a named tuple, drop the Enum class
9f2d7d8 Fix an error in the ncurses UI
a91d123 Display python warnings via bb.msg
146046b Immediately display messages if no UI handlers are installed yet
21a9692 Use __import__ for the ui rather than exec
8c5108f Fix the task event handling in the ncurses UI
87f62d7 Ensure we always utilize the correct messaging domains
ac170b0 bb.event: NotHandled and Handled are on the way out
0d25a51 Rename the finalise method for consistency
c9c230b Move update_data into the DataSmart class as a finalize() method
00e3915 Initialize pkgs_to_build in the BBConfiguration constructor
a21841f Drop doctest, as we aren't utilizing it
ca9a956 Made '-b' work with BBCLASSEXTEND
a7f05ea Resurrect the old bb.vercmp as bb.utils.vercmp, and its deps
2cd1611 Pass the config metadata into the Cache constructor rather than the cooker
c926e87 Resurrect merged anonfunc execution
3995546 Add & utilize a simple_exec utility function
94b60d1 Consolidate the exec/eval bits, switch anonfunc to better_exec, etc
eb16773 Pass an empty locals dict in expansion, since list comprehensions apparently leak their '_' helper variable
d8c8612 Two minor changes to the way python snippet expansion happens
f8a8ec5 linux-libc-headers: upgrade from 2.6.33 to 2.6.34
4d5ad73 dbus: fix metadata
63ca907 libgpg-error: fix metadata
c927c50 module-init-tools: fix metadata
610f560 distro_tracking: Adding tracking fields for upgraded packages
2b533d0 libmusicbrainz: Upgraded to 3.0.2
b82851a neon: Upgraded to 0.29.3
057d630 ppp: Upgraded to version 2.4.5
4cf7528 distro-tracking: update tracking fields for previous recipes after fixing metadata
61326bf matchbox-wm: Fix the meta data
680f615 matchbox-stroke: Fix the metadata
ea1f53d matchbox-panel-2: Fix the metadata
b2a2e19 matchbox-keyboard: Fix the metadata
0768dff matchbox-config-gtk: Fix the metadata
ab6fd57 libxslt: Fix the metadata
437fb07 libsoup-2.4: Fix the metadata
c2ba02c libglade: Fix the metadata
6db5edd libfakekey: Fix the metadata
c9e0659 jpeg: Fix the metadata
00844cd hicolor-icon-theme: Fix the metadata
8a48d66 gtk-sato-engine: Fix the metadata
bc41e65 gnome-keyring: Fix the metadata
60bb010 eds-dbus: Fix the metadata
ad0f645 webkit-gtk: Fix the metadata
8a2b4e2 gnome-common: Fix the metadata
5f1f17f gtk+: Fix the metadata
d29f2cc pcmanfm: Fix the metadata
17b2ce5 distro_tracking: update latest release for prelink
061df5a meta-toolchain: Improve layout
4e0ee64 image.bbclass: Don't perform mapping renaming until we're running the task itself.
e0a1238 siteinfo.bbclass: remove duplicated 'common' appendent
e96dc90 populate-volatile.sh: add "clearcache" cmdline option
968d00d package_deb.bbclass: Fix packaging functions to use versioned dependency package functions correctly
8a02043 bitbake: providers.py: Fix typo
3abe7a0 classes/package_ipk|_deb|_rpm.bbclass: Fix setting of OVERRIDES when packaging
934bb71 preferred-xorg-versions: update versions after latest recipe bumps
fc663f9 poky.conf: define PREFERRED_PROVIDER_opkg-nativesdk to silence a warning
d92a3c0 libpcap: Upgraded to version 1.1.1
64b82f8 bison: upgrade from 2.3 to 2.4.2
8738175 elfutils: add a patch to fix latest prelink build
7e01b2f nasm: upgrade from 0.98.38 to 2.07
ea7fbed tcl: upgraded from 8.4.19 to 8.5.8
31c0e3d quilt: upgrade from 0.47 to 0.48
3881d4c oprofile: upgrade from 0.9.4 to 0.9.6
d590333 lttng-viewer: upgrade from 0.8.83 to 0.8.84
38bf4fc lttng-control: upgrade from 0.67 to 0.87
c2289c5 lsof: upgrade from 4.78 to 4.83
03837af intltool: upgrade from 0.40.5 to 0.40.6
5cfe04d gnu-config: upgrade from 20050701 to 20080123
d74cf86 flex: upgrade from 2.5.31 to 2.5.35
f2f0e69 diffstat: upgrade from 1.39 to 1.47
2422400 distro-tracking: add tracking fields for previous recipes
391e6d6 dbus-glib: fix metadata
81a16e5 expat: fix metadata
e957ffe gpgme: fix metadata
2136f75 fakeroot: fix metadata
0093d52 pam: fix metadata
2bed076 busybox: fix metadata
ed252e7 Distro Tracking: add distro tracking field for Graphics Apps
6aa746c encodings: Specify encodingsdir as the default was being detected incorrectly resulting in an empty package
9f3e0c1 distro-tracking: update tracking fields for previous upgraded recipes
bb860ee speex: Upgraded to version 1.2rc1
a5b6355 distro_tracking_fields: add meta data for graphic core and app
372f7f1 Distro Tracking: add distro tracking field for recipes of Graphics libs
dbfc18f libxmu: upgrade to the latest version 1.0.5
b51a4a6 xtrans: upgrade to the latest version 1.2.5
c648850 pixman: upgrade to the latest version 0.18.2
f04f7f8 libxkbfile: upgrade to the latest version 1.0.6
c4f3c3e libxft: upgrade to the latest version 2.1.14
e114928 libxfixes: upgrade to the latest version 4.0.4
84664ef libxext: upgrade to the latest version 1.1.2
903097f libxdmcp: upgrade to the latest version 1.0.3
a683a28 libxdamage: upgrade to the latest version 1.1.2
3536e99 libxcursor: upgrade to the latest version 1.1.10
743d7e1 libxxf86vm: upgrade to the latest version 1.1.0
9a77ba2 libxxf86misc: upgrade to the latest version 1.0.2
68e66b8 libxvmc: upgrade to the latest version 1.0.5
ba45b06 libxv: upgrade to the latest version 1.0.5
e3d0810 libxt: upgrade to the latest version 1.0.8
7383d31 libxres: upgrade to the latest version 1.0.4
11f2a12 libxrender: upgrade to the latest version 0.9.5
6704e49 libxrandr: upgrade to the latest version 1.3.0
e125dd0 libxcomposite: upgrade to the latest version 0.4.1
aa7c195 libxcb: upgrade to the latest version 1.6
c858c1f libxcalibrate: upgrade to the latest version 209d83af61ed38a002c8096377deac292b3e396c
f902292 libxau: upgrade to the latest version 1.0.5
5c2e6fa libsm: upgrade to the latest version 1.1.1
0012b7c libice: upgrade to the latest version 1.0.6
fa9c8a0 libxfont: upgrade to the latest version 1.4.1
3cbc9de libfontenc: upgrade to the latest version 1.0.5
50dbbec xproto: upgrade to the latest version 7.0.17
6f5ebf1 xf86vidmodeproto: upgrade to the latest version 2.3
76a6828 xextproto: upgrade to the latest version 7.1.1
fa23bdf xcb-proto: upgrade to the latest version 1.6
b007125 dri2proto: upgrade to the latest version 2.3
d480304 distro-tracking: update tracking fields for previous upgraded recipes
17a0eba netbase: fix metadata
4057e1a insane.bbclass: allow reporting all md5 mismatch warnings
3b78d2e distro-track: upgrade base_{utils,libs}_2
47c3dd4 curl: upgrade to version 7.21.0
c4713d0 openssl: upgrade to version 0.9.8o
7ec15f4 lzo: upgrade to version 2.03
d6b8b66 libgcrypt: upgrade to version 1.4.5
e1cac2f sysfsutils: upgrade to version 2.1.0
10cce8e sysvinit: upgrade to version 2.88dsf
60255c8 syslinux: upgrade to versin 3.86
e7bcb12 bash: upgrade to version 4.1
6d275f7 readline: update to version 6.1
90747bc libxml2: upgrade to version 2.7.7
afe4dec zlib: upgrade to version 1.2.5
8617183 distro_tracking_fileds: Update metadata
12c692d xvideo-tests_svn.bb: Fix recipe metadata
2478c71 xvideo-tests: Change the version to 270
5304abe gaku_svn.bb: Fix recipe metadata
2848e5e gaku: Upgraded to version 399
546926a tremor_20100422.bb: Fix recipe metadata
0bcc994 tremor: Upgraded to version 20100422
6daa344 alsa-lib_1.0.23: Fix recipe metadata
f7ae2c8 alsa-lib: Upgraded to version 1.0.23
258974c alsa-utils_1.0.23.bb: Fix recipe metadata
7f1d42b alsa-utils: Upgraded to version 1.0.23
74221a4 bluez4_4.66.bb: Fix recipe metadata
a5af9cf bluez4: Upgraded to version 4.66
342c016 gst-plugins.inc: Fix recipe metadata
384be68 gst-plugins-bad_0.10.19.bb: Fix recipe metadata
fcb88ea gst-plugins-bad: Upgraded to version 0.10.19
d7d147b gst-plugins-ugly_0.10.15.bb: Fix recipe metadata
3bd948b gst-plugins-ugly: Upgraded to version 0.10.15
833366f gst-plugins-good_0.10.23.bb: Fix recipe metadata
b5077b1 gst-plugins-good: Upgraded to version 0.10.23
eb3cff6 gst-plugins-base_0.10.29.bb: Fix recipe metadata
3308780 gst-plugins-base: Upgraded to version 0.10.29
037cc59 gstreamer_0.10.29.bb: Fix recipe metadata
2c2b1e5 gstreamer: Upgraded to version 0.10.29
52f5ad8 mpeg2dec_0.4.1.bb: Fix recipe metadata
6b58719 mpeg2dec: Upgraded to version 0.4.1
1407c7d libogg_1.2.0.bb: Fix recipe metadata
408008a libogg: Upgraded to version 1.2.0
9f3641c libvorbis_1.3.1.bb: Fix recipe metadata
0411d67 libvorbis: Upgraded to version 1.3.1
6dc309f flac_1.2.1.bb: Fix recipe metadata
eda72fb flac: Upgraded to version 1.2.1
923f141 lame_3.98.4.bb: Fix recipe metadata
b639d30 lame: Upgraded to 3.98.4
71ba0a8 irda-utils_0.9.18.bb: Fix recipe metadata
a1fb73e irda-utils: upgraded to version 0.9.18
01c5b29 atk: Update to 1.30.0
9815595 leafpad: Update to 0.8.17
db44420 libcroco: Update to 0.6.2
c25e992 dates: update to 0.4.11
75bd3e6 contacts: Update to 0.12 from git
fd32855 tasks: update to 0.16
53556dd screenshot: Update to svn_r292
99d883f classes/package_ipk|_deb.bbclass: Make sure versions correctly make it into output packages
9a543b7 bitbake: Add bb.utils.join_deps to handle creation of dependency strings with versions
b180d7f iproute: upgrade to 2.6.34
7510eb1 xcursor-transparent-theme: Fix meta data
3dc7be6 tslib: Fix meta data
779c58d sato-icon-theme: Fix meta data
15da3d0 matchbox-theme-sata: Fix meta data
58d1a6e matchbox-terminal: Fix meta data
0b4a869 matchbox-session-sato: Fix meta data
43cec00 matchbox-session: Fix meta data
4bf6605 matchbox-desktop-sato: Fix meta data
1f8a50f matchbox-desktop: Fix meta data
eb25db6 libowl-av: Fix meta data
486d52c libowl: Fix meta data
3f7790d libmatchbox: Fix meta data
4f95e0b gnome-mime-data: Fix meta data
1633f68 xrestop: Fix meta data
2038319 xtscal: Fix meta data
8ff65f3 owl-video: Fix meta data
53afb95 distro-tracking: update tracking fields for previous upgraded recipes
15bb705 libdaemon: upgrade to 0.14
14767a3 blktool: upgrade to 4-6
3627ee3 pax-utils: upgrade to 0.2.1
f91911a xwininfo: upgrade to latest version 1.0.5
b20f725 xset: upgrade to latest 1.1.0
7189a0f xprop: upgrade to latest version 1.1.0
6abf79d xmodmap: upgrade to latest version 1.0.4
d0fcdab xkbcomp: upgrade to latest version 1.1.1
10f2beb xinit: upgrade to latest version 1.2.1
876c8df xhost: upgrade to latest version 1.0.3
1572a23 xdpyinfo: upgrade to latest version 1.1.0
ec68b8a xauth: upgrade to latest version 1.0.4
dccc9dd xorg-app-common.inc: add BUGTRACKER
34ba2c6 libxfontcache: upgrade to latest version 1.0.5
5e21620 libdrm: upgrade to latest version 2.4.21
663fddc libdrm: meta data update
2987e50 distro_tracking_field: add distro tracking field for graphic core and app receips
74c5ebf Distro Tracking: add distro tracking field for recipes of Graphics libs
5b74118 font-util: fix LICENSE to "BSD & MIT-style & Unicode"
6ca31b0 xorg-xserver: move older xserver's to meta-extras
b6fcd71 linux: move some older kernels to meta-extras
5dab2c9 Move some machines which no longer build to meta-extras
6418d04 bitbake: create cooker object after cleaning the environment
f9d7e9e bitbake: Move the logger initialization from cooker to utils
132122e busybox: fix unexpected "done" in /etc/udhcpc.d/50default script.
0f806df qemux86/xorg.conf: no DefaultDepth for VMware SVGA driver
9207cd4 qemu: fix VMware VGA depth calculation error
bb3e4dd gcc: Add patch to allow disabling of libstdc++ linkage and hence fix gcc-runtime which was having broken configure tests due to the linker failures and assuming maths primitives were not in libm
43f0d63 bitbake: allow fakeroot functionality to be provided by an alternative program
4f14e0a pkgconfig: add patch to disable legacy scripts such as glib-config
c27b951 handbook: PR should always be set, even if to 0
b8e1640 cross-canadian: ensure package dependencies are generated correctly
0d62b8d handbook: update the required dependencies list
824895f qemu: Enable ppc system emulation and fix ppc build
01e54ff gdb-cross-canadian: build with the host-triplet prefix
698dab0 kernel.bbclass: Remove additional binaries from staging
c9e77c1 qemu: fix sloppy merge
8ce8508 qemu: Work around the crash seen on Ubuntu.
a1d913a linux-omap: fix build failure with gcc-4.3.3
3ceb999 binutils: add newer versions for crosssdk and cross-canadian
3939b9c linux-libc-headers: delete include/scsi/scsi.h, it's not for userspace
d2920a0 Distro Tracking: move to private directory and split into sections
181455c base-files: fix LICENSE from 'GPL' to 'GPLv2'
2233d2e opkg-config-base: add LICENSE as 'MIT'
14bb154 network-suspend-scripts: fix LICENSE from 'GPL' to 'GPLv2'
86568bc initscripts: fix LICENSE from 'GPL' to 'GPLv2'
bb1c803 initramfs-live-install: add LICENSE as 'MIT'
2e82436 initramfs-live-boot: add LICENSE as 'MIT'
f4ceddf initramfs-boot: add LICENSE as 'MIT'
4c9946b e2fsprogs: fix sub-pacakge license fields
8decbce icu: fix metadata
0ff5ca8 portmap: use NO_TCP_WRAPPER instead of local patch
db74847 update-rc.d: fix metadate
1e04b2d update-modules: fix metadata
eb5ed41 yum: fix metadata
d0ebebd grub: fix metadata
6c6ae8d libnl: fix metadata
dac5590 libusb: fix metadata
3d4e130 xf86-input-vmmouse: add license checksum
4bf8a29 xf86-input-mouse: add license checksum
c848d6d xf86-input-keyboard: add new license checksum
e66624a mkfontscale: add license checksum
3f12612 mkfontdir: add license check
b57e551 x11-common: change license from GPL to GPLv2
50b99d9 libxxf86dga: add license checksum
f419cbb evieext: add description and license checksum
630fd09 bigreqsproto: add description and license checksum
81f5a41 task-poky-x11-sato: fix metadata
139b4f2 task-poky-apps-x11-pimlico: fix metadata
b9c5f24 gst-meta-base: fix metadata
5c21558 task-poky-tools: fix metadata
0db46a3 task-poky-nfs: fix metadata
b82e9a3 task-poky-boot: fix metadata
6aa2818 task-base: fix metadata
3e83969 bluez-dtl1-workaround: fix metadata
239cf34 wireless-tools: fix metadata
7c45018 xineramaproto: fix metadata
7704eab xf86rushproto: fix metadata
f8f89f2 xf86miscproto: fix metadata
731c4a7 xf86driproto: fix metadata
37d1122 xf86dgaproto: fix metadata
30bbb59 xf86bigfontproto: fix metadata
23a4a96 xcmiscproto: fix metadata
1173f6b videoproto: fix metadata
2f340b0 trapproto: fix metadata
12903e4 scrnsaverproto: fix metadata
0815a69 resourceproto: fix metadata
ab12524 renderproto: fix metadata
94a9669 recordproto: fix metadata
65a8a57 randrproto: fix metadata
d1564ab printproto: fix metadata
6ae9b35 libxtst: fix metadata
0fae559 libxp: fix metadata
f5e0b36 libxinerama: fix metadata
1a1d6e6 libxi: fix metadata
8fe708e libdmx: fix metadata
e4c3b7e kbproto: fix metadata
f02f19d inputproto: fix metadata
2b8d375 glproto: fix metadata
e7e5947 fontsproto: fix metadata
47da7e7 fontcacheproto: fix metadata
45df656 fixesproto: fix metadata
aee6d6d dmxproto: fix metadata
03f5289 damageproto: fix metadata
dc98b21 compositeproto: fix metadata
7132e90 calibrateproto: fix metadata
52e12bd xorg-proto-common.inc: fix metadata
f0c12ae module-init-tools: fix metadata
6f80a52 psplash: fix metadata
54bf2b7 polkit: fix metadata
2fab4c6 eggdbus_0.6.bb: fix metadata
ed1d07d font-util: fix metadata
5ada684 encodings: fix metadata
f3bc4cb xorg-font-common.inc: fix metadata
31bc90f settings-daemon: fix metadata
f879d7d libxsettings-client: fix metadata and add MIT-style-license
cea3fe7 binutils: remove older versions
30e98b4 linux-libc-headers: Remove ioctls for deleted driver
c87bf0c qemu: Fix linking of the native package on Fedora 13
5101076 handbook: Fix stylesheet
c350927 sanity.bbclass: Fix test for i686 SDKMACHINE
5735f03 handbook: Fix typo in last commit
45a26b9 handbook: fix extraction command
85982ab handbook: fix version reference
c3e0980 handbook: Fix references to the stable release
71d24f5 Merge branch 'distro/master' of ssh://git.pokylinux.org/poky-contrib
d906219 handbook: Fix generation of HTML handbook
da81394 Update version after Green release
c7f6eab packaged-staging.bbclass: fix typo in scan_cmd
836bddc xserver-kdrive: Disable dolt to fix build failures
ee13bb0 linux-moblin-2.6.33.2: Enable trackpads for netbooks
11d8097 site/powerpc: Add popt site options
2e62c64 gnome-keyring: Add missing DEPENDS on gconf
d6bda45 qemuppc: Add ppc603e to PACKAGE_EXTRA_ARCHS, fixing image builds
b5fc6ab poky.bbclass: Add second fall-back sources mirror
155770a task-poky-tools: Disable kexec for powerpc
482b3ef gypsy: Fix broken SRC_URI
c32daf4 icu-native: LD_LIBRARY_PATH is required
fc2e5e0 Fix my own type of BPV -> BPN
fd49240 Add an entry for ${BPN} in the handbook
10a23e8 Fixed bzip SRC_URI with ${BPN}
c18e886 Revert LICENSE fields for binutils recipe files
b43fd54 scripts/create_pull_request fix a typo
1d64687 update create_pull_request for distro/master
046ed7e update distro tracking fields for libtool recipe
177a696 Add distro tracking fields for gnu-config recipe
04b3026 gnu-config recipe: fix SECTION field
31e522c Add distro tracking fields for more recipes
9a50a58 Add distro tracking fields for more recipes
172944c Add distro tracking fields for some recipes
a40c5e7 Fix metadata for libmad
6f4ef9d Fix metadata for libid3tag
ecfeed0 Fix metadata for liba52
e3e37fd Fix metadata for libical
1d8873d Fix metadata for hostap-utils
c655e04 Fix metadata for lrzsz
ab26892 Add distro tracking for previous metadata fixes
f2cab62 fix metadata for portmap
68de40a fix metadata for bzip2
42881b8 fix metadata for python-pycurl
5c92b10 fix metadata for pth
e24d833 fix metadata for gdbm
db28428 fix metadata for time
94a06ed add distro tracking fields for more recipes
df11273 lttng-viewer_0.8.83.bb: Fix SRC_URI
f8acca9 Add distro tracking fields for more recipes
3d5e9f0 flex.inc : update HOMEPAGE metadata field
2dcd861 make 2.20.1 as new default version for binutils
7c9ec39 binutils: upgrade to version 2.20.1
75ea847 distro_tracking_fields.inc: new file for tracking
3421414 Add distro overrides for previous metadata fixes
cf01e50 Fix metadata for e2fsprogs
50d8843 Fix metadata for dbus-wait
57c7dda js: Fix mips build and other architecture inconsistency
ea45876 icu: Fix LD_LIBRARY_PATH corruption causing build failures
beef002 lib/oe/patch.py: Fix patch application failure interaction handling
453ee8d poky-env-internal: fix a typo
d92a12f poky-evn-internal: Add some documentation about the config file and commonly used build targets
b5a3709 opkg: ensure the data directory is created
eb3c93f rootfs_ipk.bbclass: ensure the package manager can create lock files
12a9dea qemu-nativesdk: Make sure the compiler prefix is set fixing cross sdk builds
6a7549f packaged-staging.bbclass: Use a differnet opkg.conf for each TARGET_ARCH
8273262 qemu-helper-nativesdk: Fix after file:// url handling changes
07b4e14 m4: Set further site entries
80878da LICENSE: Clarify the license recipe source code is under
24ace6b linux-2.6.33.2: Ensure enable QEMU network drivers for qemux86
2e0e24e scripts: Fix setting up links to cc and gcc in runqemu
61a7301 kernel.bbclass: Drop code which is duplicated later in the function, fixing older kernel builds
f38160b bootcdx86: This is dropped in favour of netbook iso images
9b60f0d poky-image-sato-cd: This has been replaced by the -live image
8eea156 xserver-kdrive-xomap: Bandaid for configure issues and modern autotools
3ff7892 gcc-4.3.3: Drop unused patches
c2569a7 udev: bump PR after cache fixes
1c803f3 Fix the boot process udev warning
efc47a8 pciutils: Stop build breakage if HOST is set in the environment
26a6079 curl: Fix configure issue on mips
99954da linux: bump PR of linux-2.6.3243.2 after the fix for RTC
52de674 busybox: bump the PR after the syslog fix
aa91353 Fix the syslog starting failure
2e54470 Fix the issue of /dev/misc/rtc missing from hwclock.sh
6f28a05 m4: Drop broken custom do_configure which stops site cache taking effect (amongst other issues) and drop duplicate PR setting
247da03 site/common-glibc: Add entries for m4
fa64e20 linux-moblin: Drop old versions (2.6.31.5 and 2.6.29.1)
3a8ee58 gcc: Drop 4.2.3 as its unused
47e5d86 metadata_scm.bbclass: Make errors quiet if we're not in a git based scm
f47eedd gcc-runtime: Various bug fixes
d579b7c gcc-configure-sdk.inc: local-prefix should be in SDKPATH, not a build patch
e77506b gcc-configure-cross.inc: local-prefix should be the target exec_prefix
a06a85a cross/cross-canadian.bbclass: Save target_exec_prefix variable
fcd220b handbook: document the LAYERDIR variable
49df0b8 .gitignore: Ignore the built bsp-guide
79f330c handbook: point out required Python version
3a6948a handbook: add documentation for layers
6a9312c sanity.bbclass: Check for Python 2.6 or newer
8f34dcf handbook: Use new style patch application syntax
40b0d41 task-poky-standalone-sdk-target: Add libgcc-dev and libstdc++-dev to allow compiling in meta-toolchain to work
f8c0b93 gcc-cross: Fix install path typo.
1a53b52 linux-moblin: Fix defconfig-netbook
2f7b3e3 gcc-runtime: Make sure multiple target builds work correctly
6118da2 syslinux: Fix native install to use the correct paths
2160ddd base.bbclass: Fix after bb.decodeurl was fixed
c4a0b54 sanity.bbclass: version each of the files in the build/conf/ directory
cab1009 Fixes for Qemu to use VGA and Touch Screen
bf59d21 qemu: Update to 0.12.4
fc81ca7 insane.bbclass: Throw better error if path is bad
c3682bf bitbake decodeurl: fix the file:// url handling
807e983 e2fsprogs: Remove all mention of anything associated with uuids
42e7e4f wpa-supplicant: Don't run populate-volatile.sh on the build system
8f367b6 packaged-staging: Add the correct architectures to the opkg conf
1ccbc15 handbook: use XML catalogues to make building work on all(?) distros
f5d0471 busybox: Fix redirection of fd 0 in ash interactive
fe4e6fc module-init-tools: Don't cross-build static binaries
3161c9b utility-tasks.bbclass: automatic upstream version check
50224b5 libtool-cross: Allow the compile to run else we can generate invalid (unpatched) libtool files
9d9b64a bitbake.conf: Remove util-linux from ASSUME_PROVIDED
17f3c54 util-linux: bump to 2.17 based on OE recipe
c4476f7 e2fsprogs: add util-linux to depends
7ada79d sanity.bbclass: check for invalid characters in OEROOT
9ea69b1 utility-tasks: Remove unneeded addtask parameter
6b82b70 Handbook: Documentation for DISTRO_PN_ALIAS
682983b xset: Defining DISTRO_PN_ALIAS for distro_check
2ccd2e6 Handbook: Documentation for LIC_FILES_CHKSUM
5ae3f65 do_distro_check: Recipe exists in other distros?
8514bcf iproute2: fix an issues with DATETIME
2ddc6c4 bitbake.conf: add the LOG_DIR variable
648290d libtool: Make sure ltmain.sh is always regenerated. We can't just remove it since it has to be present to run configure
420b1d8 initscripts: Tweak checkroot to work with recent versions of busybox
5b1c702 e2fsprogs: Upgrade 1.41.5 -> 1.45.12
fe37d67 gcc-configure-runtime: Make sure the sysroot is configured
7dcf1e4 sanity.bbclass: Check for SDKMACHINE=i686 and error if found
7f01812 dropbear: don't apply no-password patch
e2598fe busybox: disable mdev, we use udev
09536a7 patch.bbclass: Merge patch enhancements from OE by Chris Larson
1f26469 pm-utils: Upgrade to 1.3.0 and fix SRC_URI not to point at SCM generated tarballs
3cbbd0b eds-dbus: Disable parallel make
2700a62 qemu: add some extra ldflags to make it link succesfully
138df21 Drop vm_mmap_min_addr checks from scripts and sanity class
32a85c1 qemu: reduce duplication, use an inc file and share common patches
3d6e7e7 qemu: Update the static recipe to 0.12.0
4de4707 qemu: updated the glflags patch, which is needed by qemusdk.
1de1ac2 lib/oe/patch.py: Fix datastore references in error paths
d630317 handbook: Add alpha verison of a BSP specification
a49e605 qemu: Updated to 0.12.0
eb69ecd poky-default.inc: Bump linux-libc-headers to 2.6.33
f24f836 strace: bump from 4.15.18 to 4.15.20
615a98e busybox: bump to 1.15.3 from OE
cd62d69 relocatable.bbclass: reduce the amount of output
9210ae6 poky-default.inc: roll-back preferred linux-libc-headers to 2.6.30
9f23e3e Update directdisk images to use common inc files
6bf1f8c kernel.bbclass: Simplify the current external module code
78988bb eggdbus: Disable PARALLEL_MAKE
4bcf9c7 xserver-kdrive-glamo: Fix broken SRC_URI
ae9174e kernel.bbclass: Stop staging binaries within scripts/
5bec733 kernel.bbclass: tidy up staging of headers
d887296 linux-libc-headers: add 2.6.33 headers
2c3437d kernel-arch.bbclass: merge improved arch detection from OE.dev
769cf0b kernel.bbclass: Package Kernel firmware
3da120a linux-kernel-base.bbclass: merge version detection updates from upstream
e30c5a2 kernel.bbclass: match x86 header installation to other architectures
7a4f1ad linux: Bump to 2.6.33.2
5e8c7c5 linux-moblin: add 2.6.33.2 kernel from MeeGo 1.0
5e07bc9 kernel.bbclass: fix installing of kernels 2.6.34 and above
53d98d7 Move all QEMU machines to use a common kernel recipe set and version
bad2fe6 add a new scripts create-pull-request
ebed561 Add recipe for X vesa driver package
c74035a Add recipe for moblin-image-netbook.directdisk
b2c4aee poky-qemu-internal Add -show-cursor to qemux86
f71a4b9 handbook: Add section to Poky manual about contributions and certificate of origin
a722741 Merge branch 'tk/head' of ssh://git.pokylinux.org/poky-contrib
dfd1472 Merge branch 'nitin/lic1' of ssh://git.pokylinux.org/poky-contrib
505c269 linux: Ensure we have buildable kernel recipes for each machine
ad136dd Revert "poky-env-internal: Disable automatic adding of meta environments to BBPATH"
5a3f17e poky-env-internal: unset variables to avoid disturbing new GIT clone
8825d4d License Checking: convert an error into warning
b6c6913 mtd-utils: Fix mtd-utils-native do_install task to install binaries into the correct place rather than using hardcoded paths
ba804d1 poky-env-internal: Disable automatic adding of meta environments to BBPATH
2ca1f78 License Change checking:
c89362c openssl: Fix build of openssl-native on x86_64 with recent binutils
229c80a xf86-input-vmmouse: bump version to 12.6.6
cd8de7b moblin: drop moblin.conf and inherit poky for mirror configuration
3b9ac3f pax-utils: Sync with OE.dev fixing native version
28ca131 Fix build problem with GCC-4.3.3 on PowerPC
e150e90 Latest versions of GCC are safe on PowerPC
e7fa352 Update classes to use lib/oe
ac023d7 lib/oe: Import oe lib from OE.dev
14196cb base.bbclass: Sync minor layout changes with OE.dev
89497d80 xfce.bbclass: Fix SRC_URI (from OE.dev)
753b4a3 poky-default-revisions.inc: Add linux-omap3-pm revision to ensure offline builds at least parse even if the revision is invalid
37858f5 handbook: Add new FAQs
d37f265 unifdef-native: Fix staging reference in do_install (noticed from OE.dev)
d0f555c unifdef-native: Fix staging reference in do_install (noticed from OE.dev)
d425fac sanity.bbclass: fix typo in earlier commit
70a930f Remove meta-cross-linkage recipe, we no longer have a cross directory
fbe3d41 Version the build configuration directory
69d788a Fix sanity check for new abi
19a8165 Bump the ABI to alert people that cross has gone
6458da8 Fix references to CROSS_DIR now that it has been removed
29813a4 cross.bbclass: inherit relocatable to post-process cross binaries
c22ab5f Install cross-packages into the native sysroot
00c5c97 gcc: Fix packaging of cross for PPC
4d1f39a autotools: deprecate autotools_stage class
95f2dd7 poky-default.inc: set PPC preferred version for gcc-runtime
5fb1069 conf/poky-default.inc: Fix PPC preferred binutils
d2c6f3e scripts/pstage-scanner: new script to sanity test the contents of pstage
23ff2e0 relocatable.bbclass: Normalise the generated path
d1f413f sanity.bbclass: handle lack of permission to read /proc/sys/vm/mmap_min_addr
6763d75 polkit: fix DEPENDS, requires intltool
7f01951 Move STAGING_BINDIR_CROSS into target sysroot, instead of native
e866ea6 packaged-staging.bbclass: Fix architecture field
6727d5a poky-image-sato-directdisk: directdisk variant of Sato image
4c00f55 pixman: explicitly disable Gtk+ tests
36652f5 qemu_git: Ensure we have the required dependencies for a native build
d3fbb56 relocatable.bbclass: Actually skip symlinks
4f1ec31 gpgme: STAGING_DIR_HOST != STAGING_DIR/HOST_SYS and this causes subtle cross contamination between certain machines. Fix.
1ac0a1a relocatable.bbclass: ignore symlinks
10b6d14 relocatable.bbclass: Handle files which don't have read/write permissions
572f86c packaged-staging.bbclass: Remove hardcoded paths in binfiles for target packages
aa19314 igep0020: Rename files for IGEP v2 boards, prepare for support Hw rev. B and rev. C
c45c860 linux-igep2: update to latest stable version 2.6.28-3
eb8be45 psuedo: We don't use lib64
43b5d13 psuedo: Add missing install function
b43b80c relocatable: Handle directories having subdirectories of binaries
cf92949 gcc-cross-initial/gcc-cross-intermediate: Add missing EXTRA_OECONF variables
18bdffa python-pycurl: Set NATIVE_INSTALL_WORKS
bcdfa2a encdev-updater: Set NATIVE_INSTALL_WORKS
369f4dc liblbxutil: Fix cross compile issues
9b6287c python-pycurl: Fix building
0f4202f gcc: Don't create links in base-libdir
715b0a8 gcc-crosssdk: Remove bogus require
50022b1 poky-moblin.inc: Set provider for virtual/TARGETcompilerlibs
2fc8da5 gcc-runtime: Add 4.2.3 version
eca7e8c gcc-crosssdk: Create common include files
c155b71 gcc-cross.inc: Move do_compile
70abb2e gcc-cross: Use NATIVEDEPS
fb5b562 gcc: Move -native dependencies into the base gcc version configuration file and create and use EXTRA_OECONF_INITIAL and EXTRA_OECONF_INTERMEDIATE variables
5b5a069 gcc-cross-kernel: Remove unneeded requires
95fd994 gcc-runtime: Move core code to the main include file
ccebaa6 gcc-cross: Simplify require statements
e9522df gcc: Drop 4.1.2 as its unused
cc0bd4b gcc: Drop 3.4.4/3.4.6 and gcc-native as all are now unused
4821286 gcc-csl: Drop old version
9c77464 gcc-runtime: Handle libgcc headers correctly and set c++ include patch for packages correctly
c75c0d6 gcc-runtime: Fix c++ include path
0cf4a98 gcc-package-cross.inc: Only stage gcc-runtime headers for gcc-cross
847324b classes/conf: Update to handle gcc-runtime
cdaf6c8 gcc-runtime: Add initial recipe
7a7c234 gcc-4.3.3: Add patch for issue PR35942 to fix libstdc++ build issues with certain host cross compile combinations
fcfbc7b autotools.bbclass: Allow extraction of the configure arguments for use in strange testcases
93f357d relocatable.bbclass: we need to process library files too
1ee8863 rootfs_rpm: Explicitly add runtime dependencies to depends
34a24c2 createrepo: Fix dependencies, yum at runtime and libxml2 at build
ad07d79 .gitignore: Add packaged staging directory to ignore list
5eb169b python-urlgrabber: Update to 3.9.1 with extra patches from Fedora
8114971 python-native: Fix DEPENDS by adding sqlite3
678537c pyton-pycurl: Add new recipe from OE.dev
a2d5806 curl: Bump to 7.20
555f60f yum: Fix installation of python modules
9b3a51f handbook: Update links to Anjuta plugin
72af5b2 fakechroot: Fix patch application
d3d36d9 bitbake/event.py: Run class eventhandlers in the task context but ensure UI handlers run in the server context
871f731 bitbake/cooker.py: Finishing the command needs to happen after the BuildCompleted event else the cooker can shutdown first
fb245be cache.py: Bump the cache version after the BBVERSIONS update
881caec bb.manifest: Drop, its unused and obsolete. No point in having dead code around
19d5f2b BBFILES: use a set to remove duplicates when collecting.
adbfce3 bb/command was importing bb and accessing some of its own classes indirectly as bb.command.<class>
1e2f64a Why is bb/__init__.py importing bb?
964085f data_smart: be explicit about what we make available to eval'd python code
6028dae Fix 7 references to undefined variables, as spotted by pyflakes
c6940a9 bb.utils: remove old portage remnants
ec3f908 bb.utils: utilize string.letters and string.digits
80a52e7a bb.which: fix broken direction/reverse argument
b5f8ce0 crumbs: fix hassattr typo
c244243 Implement BBVERSIONS
cefeeb1 usermanual.xml: Add documentation on bblayers.conf
5060280 Expand PREMIRRORS
5d90d90 utils: improve wording of error message
c328f16 bootimg.bbclass: Fix dependency name
5cda1b7 parted: Add BBCLASSEXTEND native
f89cd31 bootimg/boot-directdisk.bbclass: Update afer syslinux changes, fix mbr.bin location and fix dependencies
91f093a syslinux: Convert to BBCLASSEXTEND, clean up recipe and staging function
7ccc046 scm-revisions: Always use ??= operator
6797465 meta-openmoko: Add layer configuration
00d0202 meta-moblin/layer.conf: Fix layer location
4e821de meta-extras: Add layer configuration
e941ff6 poky-image-minimal-directdisk: Add directdisk image example
027c167 boot-directdisk.bbclass: Add direct disk image creation class
f30bf93 bootimg.bbclass: Improve documentation
589df80 bitbake: Gross hack to fix packaged-staging with BBCLASSEXTEND packages
0449c26 packaged-staging.bbclass: Revert accidental damage
9ce6198 packaged-staging.bbclass: Fix mkdir to actually create the destination directory
ae04c7f encdev-native: Convert to BBCLASSEXTEND
ff5e6f4 yum: Update yum and createrepo to latest version
1a13610 .gitignore: ignore bblayers.conf
d02c604 linux-nokia800_2.6.21: Remove legacy staging function
e78c12d u-boot: remove legacy staging
e3c4237 fakechroot: Update to 2.9 and add a patch from Debian
1d05e3a pseudo: Add recipe
006510c layer.conf: Fix filename conflict
d158569 Move default SCM versions into separate meta directory specific files to improve maintainability
90040ce Switch to bblayers configuration
666c753 bitbake/cooker.py: Add support for a bblayers.conf file
a4008b8 utility-tasks.bbclass: Remove unneeded base_ prefix since we don't EXPORT these functions any longer
70141cb bitbake/providers: Fix merge error
04263dc cooker: bail out early if no files to build
2f9e15a Fix issues with BBCLASSEXTEND set by anonymous python, and rename some variables to improve code clarity
57044b9 Implement ??= operator
ada2a84 Avoid unnecessary calls to keys() when iterating over dictionaries.
9d9b47b knotty: tweak failure phrase
a7d5f73 Fix ud.basecmd error introduced by the FETCHCMD_git commit
dea828c Add initial 'repo' fetcher
d8b12d4 Re-getVar BBCLASSEXTEND after finalise()
73a12b9 Error early if BBPATH is unset, rather than falling back to share/bitbake
9998b45 Kill unused projectdir in bb package.
8f83be3 Fix msg usage in the moved utility functions.
f8c6db9 Move most utility functions from bb into bb.utils.
b7d175a Move compat imports in the bb package to avoid circular dep issues.
ac392b6 Move encodeurl, decodeurl into bb.fetch.
a3012e1 Move MalformedUrl, VarExpandError into appropriate modules.
9a0da38 Add FETCHCMD parameter for git
e17a0bd sanity.bbclass: Add a note about using dpkg-reconfigure
9c5386c base.bbclass: Split up as per the patch in OE.dev by Chris Larson making code more readable and modularised
185cb38 base.bbclass: Really drop siteinfo by default
a30f6e9 base.bbclass: Don't inherit siteinfo in base.bbclass [based on an OE patch from Chris Larson]
8d5f122 .gitignore: Add handbook generated files to the ignore list
6cd2b26 xcmsdb: Add libxdmcp to DEPENDS
d296df4 claws-mail: Fix building with new automake
34e1b3e poky-fixed-revisions: Bump twitter-glib to a buildable version
8659148 poky-fixed-revisions: Align Clutter revisions with Moblin distro
6526d31 clutter: Fix building version 0.8
98d29b8 syncevolution: Fix DEPENDS
2060121 libsynthesis: Fix DEPENDS
c00070d luit: add libxdmcp to DEPENDS
380346e libxscrnsaver: bump version to 1.2.0
b7783b3 liblbxutil: Bump version and fix dependencies
62cd0ea handbook: remove OpenedHand contact information
5b5f1ba handbook: Add a section on extending images using packages
b3f5e55 handbook: Publishing tweaks
d280581 handbook: Add missing tag
de9c12b handbook/faq: Add entry about building on NTFS
c21aed8 task-poky: No longer need to exclude pcmanfm on powerpc
757fd87 pcmanfm: Allow package to build on PowerPC
e844f9b zoom2.conf : switch to using the TI integration tree for kernel
af1488e linux-omap-zoomsync_2.6.32.bb : add kernel from TI zoom2 integration tree
61423e1 bison: 2.0 -> 2.3
1eb0939 handbook: Correction, we're building QEMU x86 not QEMU Arm image
208f6a9 handbook: update references of stable version number
ffb5db2 handbook: Clean up OpenedHand references
05324ae handbook: Various tweaks for recent fop/pdf generation
4c07b33 poky-doc-tools: Update to work with fop >= 0.95
701e5bd eds-dbus: Add parallel make fixes from Pango
d59a1a1 task-poky: Disable pcmanfm on powerpc (until confirmed it works)
8ddb306 Add i686 SDK machine
382a630 bitbake fetch/__init__.py: Failing urls should raise errors, not fatal exceptions
28f7dd3 packaged-staging: tweak previous fix to accomodate possible changes to CROSS_DIR
538087d packaged-staging: Fix packagaging of cross packages
211f928 packaged-staging: Fix typo, grep not qrep ...
424375b xf86-video-omapfb: Bump revision.
b8637a9 xserver-xf86-config: Do not set default depth to 16 for IGEP v2.
80f1baf xserver-xf86-lite: Fix compilation break for ARM architecture.
bda8282 gcc: Fix fail to compile since they can't find limits.h include.
07207b0 liboil: 0.3.14 -> 0.3.17
bb59464 eds-dbus: Disable parallel make build problem
c02ea00 tasks: Bump to version 0.15
12eed15 gdb-cross: Allow to build after recent gettext changes
cb8ae04 packaged-staging: post-process non-binary files to fix paths in native packages
fce742a handbook: tmp/staging was renamed to tmp/sysroots - update references
3e39dac preferred-xorg-versions: Bump versions to match available recipes
28d9065 linux-omap: Build fix
185819a poky-moblin.inc: Move to meta-moblin
d9d4540 glibc: Allow 2.9 to work with binutils 2.20 (patch from OE.dev)
2bbf5ce poky/moblin: Switch to binutils 2.20
8d38280 binutils: Add 2.20 (patchset from OE.dev)
2baf8bb libpcap: Update to 1.0.0 and sync with OE.dev
75fbd88 portmap: Sync with OE.dev
32a44f4 a52dec: Clean up CFLAGS
e3eb128 perl: Update to work with native binary relative path locations
7a60d37 relocatable.bbclass: Clean up indentation
df76efb relocatable.bbclass: Handle symlinks correctly
814c3ef cross.bbclass: Note that relocatable binaries disabled for a reason
de2138b linux: Enable linux-2.6.32 for qemux86 and qemuppc
ef246b4 relocatable.bbclass: Enhancements to rpath replacement algorithm
b694d3c bitbake: Revert "providers.py: sort eligible providers by DEFAULT_PREFERENCE"
a88950c eggdbus: Add missing dbus-glib DEPENDS
ba60f7b qmake-naitve: Fix do_install
defa54d bitbake: [cache] copy instead of deepcopy in sync
f037692 bitbake: [parse] In ast, make StatementGroup inherit list, and add a AstNode base class.
c675bfd bitbake: [parse] Use bb.which in resolve_file
7b57ad9 bitbake: [parser] Make resolve_file only resolve the path
83ec5ea bitbake: [parser] Cache parsed .inc and .bbclass files for a parse speedup
c011d42 bitbake: [parser] prepare to cache some .bbcclass and .inc files
793c88d bitbake: [parser] Remove the "data" from feeder, evaluate after parsing a file
3eb2e6c bitbake: [parse] Move vars_from_file from bb.parse.BBHandler into bb.parse.
6f52a15 bitbake: [parse] Don't use relative import of parse_py.
3f1ca0a bitbake: [parse] Move the last method to the AST...
baf2395 bitbake: [parser] Move more methods to the ast scheme
d84b7c5 bitbake: [parser] Move one more item to the ast
a5bb5d6 bitbake: [parser] Move methodflags over to the ast
7cfe3a5 bitbake: [parser] Build fix
8eaaf66 bitbake: [parser] Move more statements over the two phase AST
d2bf3f0 bitbake: [parse] Change handling include through the AstNode
8072cf0 bitbake: [parser] Call eval and remove non ast code
118161f bitbake: [parser] Call eval immeditaley to test this code
a201058 bitbake: [parser] Prepare to cease out getFunc
269d4d5 bitbake: [parser] Preserve include vs. require behaviour
71a1938 bitbake: [parser] Firs set of AST nodes with construction and eval
df8f770 bitbake: [parser] Add documentation about usage of this code
4320386 bitbake: [parser] Move the finalise into the ast as well
4b25b51 bitbake: [parser] Cary a Statement Node through the parsing
5bac340 bitbake: [parser] Move evaluating into the ast class...
e9d8dd2 bitbake: providers.py: sort eligible providers by DEFAULT_PREFERENCE
de7c939 bitbake: runqueue.py: improve printing dependent tasks
e39d89e bitbake: taskdata.py: fix typo in debug message
da10a2a sanity.bbclass: Add chrpath to the required utilities
7b4e80b relocatable.bbclass: Tidy up class
12325e3 chrpath: Only set the chrpath binary for the native package
f1a87fa relocatable.bbclass: Improve logic and style
62c103c bitbake: utils.py: Don't error if an exported environment variable is unset (i.e. None)
6e1cc7c relocatable.bbclass: remove hard-coded rpaths from native binaries
a079589 xserver-nodm-init: Make sure kdrive servers have the console keyboard enabled
e49fcdc xserver-kdrive: Add keyboard fix (partially from OE.dev
6054d36 preferred-xorg-versions: Update xserver-kdrive version
216f9f0 xserver-xf86: Drop old versions and update xserver-xf86-lite version
25e0acc xserver-kdrive: Add 1.7.99.2
2146902 calibrateproto: Add missing length fields to X_Replies
c33fa35 sharp-flash-header: Convert from leagacy staging
633e0ff binutils: Apply cross compiling changes to libtool since we don't autoreconf
6877acc keymaps: Use RDEPENDS_${PN}
0307f80 linux-libc-headers: extend nativesdk for 2.6.29
bc1ae94 preferred-xorg-versions.inc: bump preferred util-macros
99b4b10 bitbake: BBHandler: pass lineno and fn to handleMethod
d5519d4 bitbake: parse_py/ConfHandler.py: missing colon after else
7a4579e bitbake: ConfHandler: Fix require vs. include behaviour
fb918a7 bitbake: [parser] Move more stuff out the feeder
b045ab3 bitbake: [parse] Move inherit handling to method
7477c0d bitbake: [parsers] Move out more functions
e3c9a34 bitbake: [parser] Move more stuff out to separate methods...
169e719 bitbake: [parser] Move the handling of a method to a function
913e788 bitbake: [parse] Unify opening a file...
242a036 bitbake: [parser] Kill obtain/localpath from the parser
bf6a4fd bitbake: usermanual.xml: Add section for ?= var setting.
6ae3907 distros: set xserver-xf86 as default PREFERRED_PROVIDER for virtual/xserver
bf422fc qemux86: fix setting of preferred provider for virtual/xserver
62ab7da moblin-fixed-revisions: bump libdrm version
0ff3de8 preferred-xorg-versions: increase various components to match Moblin distro
2c29947 libdrm: bump version to 2.4.17 as required by mesa 7.7
391fda5 poky-default: bump preferred glibc version to 2.9 for Poky distro
8a8094a ofono: bump to 0.17
f1ee04b connman: bump to 0.48
109f750 eds-dbus: Fix DEPENDS, add gnome-keyring and use libsoup-2.4 not libsoup
e8241d7 libpcap: Fix PR
6895486 libpcap: fix configure with newer autofoo and fix inherit
b81b391 xorg-macros: 1.5.0 -> 1.6.0
466043e moblin-panel-myzone: Add DEPENDS on libical
6d2b2b2 libical: Add from OE.dev with cleanup
e93ccce eds-dbus: Pull from git, not svn
96cdddc moblin-bleeding: Don't enable a browser for now
f19bbd5 task-moblin-x11-netbook: Allow browser choice to be overridden
bb1427f moblin-floating-revisions: Use mx branch for moblin-web-browser
851267d mesa-dri-git: Handle cross compiling of the glsl utils
173f02f moblin-fixed-revisions.inc: Update libsocialweb revision
52cbb07 bitbake: fix invalid method and logic
ec92133 bitbake: Test premirrors and mirrors in checkstatus()
b596530 bognor-regis: Add missing bickley DEPENDS
e5be372 mesa-dri: Use master branch for git versions
8886fa1 xserver-xf86-dri-lite: Update git recipe for latest versions
03890f3 makedepend/xorg-cf-files: Upgrade to new point releases
ce6ae67 util-macros: 1.4.1 -> 1.5.0
219b89e python.inc: Disable parallel make
3a15c0e dpkg: Make sure the -native version doesn't have strange RDEPENDS
f6f1066 libjana: Use gnome git, not svn
422c5f7 tracker: 0.6.95 -> 0.7.18
4dd0575 moblin-panel-git: Update DEPENDS for libsocialweb
def3967 Add libsocialweb
780d218 clutter-gst: Update revision
c9fd126 bitbake: Fix try_mirrors() logic, was only trying the first mirror.
72495b5 task-moblin-standalone-sdk-target: Update clutter-gst/-gtk dependencies
32f61e5 hornsey: Update DEPENDS of recent git versions
5b3397a Tweak gettext usage
5af4d6a gmime: Add from OE.dev with tweaks
893bc3e gamin: Add from OE.dev
42d7275 tracker: Add from OE.dev
fa2470c clutter-gst/clutter-gtk: Add API versions to the package names and update to the latest code
99e23d6 pango-1.22.2: Fix autoconf/automake issue with double header reference
1556e81 poky-default: Upgrade binutils to 2.19
71b1add moblin-floating-revisions: Fix missing quote
afe1242 bitbake: if PREMIRRORS set test for local file in FetchData.setup_localpath
b571168 bitbake: Enhance the fetchers' support for local mirrors
095347f poky.bbclass: Use pokylinux.org stashes as PREMIRRORS for vcs'
8235389 conf: remove references to SRC_TARBALL_STASH
0737552 bitbake: unify mirror support and make it independant of the fetcher
0b52537 twitter-glib: Drop merged patch and update revision
d19b114 moblin-fixed-revisions: Update moblin-app-installer version
ef670e0 xorg-proto: Always depend on util-macros, update gettext dependencies to be inherits
4cb5879 xorg: Bulk version upgrades
5daaa63 hornsey: Add mixxing xtst DEPENDS
28a8d15 mozilla-headless: Add missing autoconf patch hunk
4d80441 mx: Disable gesture support
4f0499f autoconf: Add missing patch
29d1df5 autoconf/automake: Switch to 2.65 and 1.11.1
fa9f399 libtool: Add missing patch
3813e33 mozilla-headless: Add patch to enable builds with recent autoconf/automake
11044cb xserver-xf86-dri: Fix for recent autoconf+automake
9d22556 kexec-tools: Fix synatx error with recent autoconf+automake
18ba0bc libatomics-ops: Fix with recent autoconf/automake
625ae51 libtool: Fix a bug where trailing slash characters could break path comparisions
80c7c52 twitter-glib: Add fix for recent autoconf/automake
99643e5 taglib: 1.5 -> 1.6.1 (and apply autoconf/automake fixes)
dd5269c parted: 1.88 -> 1.9.0 (works with recent autoconf/automake)
10b89e8 m4: 1.4.12 -> 1.4.13
ca51dda libsndfile1: Add infinite recursion fix for recent autotools
5cf94e1 libtelepathy: Fix double referenced file causing autoconf/automake issues
769baa1 autoconf-2.65: Ensure autoconf sees our site cache
09ab7da autoconf-2.65: Drop unneeded patches
daabf19 e2fsprogs: Fix configure quoting to work with recent autoconf/automake
89bee8a Add *~ to .gitignore
bb217b6 libxslt: Fix double defintion problem which breaks recent autoconf/automake
da21a63 gettext: Apply upstream fix to work with recent autoconf/automake
116e25e bzip2: Fix double defintion problem which breaks recent autoconf/automake
be2a5df task-poky-tools: kexec-tools don't support mips|mipsel, so make it optional
2e84247 pcmanfm: support mips|mipsel
301744d site/mipsel-linux: add eds-dbus variables
9999f0a site/mipsel-linux: add popt variables
0c4ead0 site/mipsel-linux: add glib-2.0 variables
413f235 udev: Add DEPENDS on glib-2.0 after recent changes
b604fe9 networkmanager: Fix polkit dependency
dfcc15e autoconf: Don't use 2.65 yet
08f4cc9 automake: Add 1.11.1 using BBCLASSEXTEND (not default)
50d9304 autoconf: 2.63 -> 2.65 (not default)
4420ddc autoconf: 2.63 -> 2.65 (not default)
1c870f0 moblin-fixed-revisions.inc: Bump clutter-1.0 revision
c6afdeb xf86-video-intel: 2.7.1 -> 2.10.0
1e4ec62 pkgconfig: Add SCM version for testing purposes (not default)
2f280c1 packagekit: Use 0.5.6 and gnome-packagekit 2.28.2
7e38b6f devicekit: Add 003 release and devicekit-power (from OE.dev with fixes/improvements)
c18b2b5 policykit: Rename to polkit to match upstream and upgrade
ecc9880 udev: Enable gudev
e5c96dd eggdbus: Add from OE.dev with dependency fixes
058b96d mutter-moblin-git: Add missing require
50ffb99 packaged-staging: basic support for pulling staging packages from a mirror
0e4111c bitbake.conf: quieten wget fetches
b2c8430 packaged-staging: Move packaged staging directory outside of DEPLOY_DIR
9ff3045 packaged-staging: fix up handling of crosssdk packages
9737011 opkg: We must always include a valid arch.conf file
eb6d6f3 opkg: Fix header problem
6ca0e13 packagekit: 0.4.9 -> 0.6.0 (with fixes for opkg)
db39d57 mesa: Add 7.7
f020fe5 libx11-trim: Update patch
aa49e73 poky-external-eabi: Rename to poky-external-default
589a797 conf/distro/poky: Rename poky-eabi to poky-default to make more sense
3ce2be9 conf/distro/include: Drop poky-eabiX files, they no longer serve a purpose
e309024 poky-eabi.inc: Massive cleanup
3697f64 poky-moblin: Set gcc version correctly
db99dab gcc: Drop 4.3.1 and 4.3.2
23d8841 gcc: Make sure target_* variables are set, fixing gcc search path issues
6793dca opkg: Fix native and nativesdk configuration options
fdf134a bitbake/build.py: No need for this gross hack now
c6868ce libdrm: Create a common include file and att virtual/libx11 to DEPENDS
4340e3e qemu.inc: Set xserver preferred provider correctly
1980555 bitbake.conf: Add virtual/xserver to MUTLI_PROVIDER_WHITELIST
39d8c0f opkg: add openssl to DEPENDS
67fbc5c opkg: Update to latest svn and apply patch to enable readable logfiles
6391725 libdrm: 2.4.7 -> 2.4.15
91066e8 site/mips-linux: Add entry for eds-dbus
fd34f26 insane.bbclass: Since we have no legacy packaging, no need to repeatedly scan staging
684d263 linux-moblin: Add 2.6.31.5
3a32c2c yum: Fix DEPENDS (no python-shlex)
5790800 yum: Fix DEPENDS (no python-bzip)
b623ced bitbake.conf: Add virtual/libintl-nativesdk to MULTI_PROVIDER_WHITELIST
75f682d fakeroot: Stop setting LD_LIBRARY_PATH as it breaks things (see patch description)
b9d958c bitbake: Don't import xmlrpc server unless needed
aedf7d3 bin/bitbake: Add import server
7e80254 bitbake/cooker: Drop unneeded import
37f8e24 bitbake: Fix UI failure exception handling with python 2.6
5ebad0d knotty: Improve task failure message handling using the uihelper code
5c62833 runqueue.py: Use fcntl to make the worker pipes non-blocking
fd42ffa bitbake/event: If the server disappears, we just exit too
d7c9b7d runqueue: When a task fails, make sure the server still processes events from other workers
867b01c bitbake/__init__.py: Fix bb.plain and bb.warn function, initial patch from Petri Lehtinen <petri.lehtinen+bitbake-dev@inoi.fi>
c69797d bitbake/git: remove repodir usage (from bitbake master)
573f612 bitbake/runqueue: Fix typo
22c29d8 bitbake: Switch to bitbake-dev version (bitbake master upstream)
1bfd6ed bitbake-dev: Sync with bitbake upstream
d6c7a44 gcc-cross-canadian: Fix include paths and hence c++ compiler issues
3139368 bitbake.conf: Add virtual/libintl-native to MUTLI_PROVIDER_WHITELIST
b65e8ec bitbake-dev: Sync again with upstream after fixes from Poky bitbake 1.8 were merged
4378860 linux-2.6.32: Add defconfig for qemuppc
c94707a qemuppc: Add qemuppc machine
92df15e poky-eabi: Temporarily add non-standard PREFERRED_VERSIONS for PowerPC
f97e684 u-boot-mkimage: Update 2009.08 recipe
b731a08 linux-2.6.32 (for mpc8313erdb)
bd37507 u-boot-mkimage-2009.08 (and BBCLASSEXTEND native nativesdk)
3d3053e Add crosssdk and cross-canadian gcc 4.2.3 recipes
306756b glibc-2.6.1: add BBCLASSEXTEND nativesdk
48007a0 linux-libc-headers-2.6.20 fixed headers_install path and extend as nativesdk
8fa52fb lzo: fix building for powerpc
0bddf1c task-poky-tools: kexec-tools doesn't work on Mips so make it optional
22a271a bitbake-dev: Sync with upstream
cefe87f pcmanfm: Add COMPATIBLE_HOST line for arch's with inotify/fam
fd165bb tasks/task-poky: make the file manager a conditional part of the task
e77bc0b kexec-tools: Set COMPATIBLE_HOST as mips is unsupported
ba66481 site/mips-linux: add readline
b0bda60 qemu: build mips system support in qemu
dfe7231 distros: fix mistake in opkg-native PREFERRED_PROVIDER
b02a125 preferred-xorg-versions: bump util-macros version
e081a82 distros: Fix some warnings by setting PREFERRED_PROVIDER's
22aadfc glib-2.0-native: Fix DEPENDS
60251ac pango: Disable PARALLEL_MAKE
170e071 dpkg: Add missing -native DEPENDS
f00e5cf bitbake-dev: Sync with upstream
a774049 poky-eabi.inc: Use glibc 2.9 for mips
feed2e2 cross.bbclass: Set BASEPKG_HOST_SYS to a sane value
2debb77 libx11-git: Disable dolt
b07628b util-macros: 1.3.0 -> 1.4.1
50d9ca7 qemu: Add small fix to gl patch
24c24ec gnome-terminal: temporarily disable scrollkeeper
6816e5a empathy: append to EXTRA_OECONF, don't override
7b41d2b scripts/runqemu: Fix some typos
ce687c2 package_ipk.bbclass: Tweak handling for all/any/noarch and nativesdk
adede58 package_ipk.bbclass: Add handling for all/any/noarch and nativesdk
9bad537 empathy: Remove stale package and fix build
46a26dc poky-fixed-revisions: Update clutter gst/gtk/mozembed revisions
94006b8 poky-fixed-revisions: Update moblin revisions
2634976 gnome-terminal: Apply patch from upstream to fix doc build issues
ed2be0f insane.bbclass: Fix typo
9604ad0 cross-canadian: Fix gettext issues
5afaf16 gdb-cross-canadian: Add missing gettext-nativesdk DEPENDS
0b724f9 gcc-cross-canadian: Add gettext-nativesdk DEPENDS
58ef914 binutils-cross-canadian: DEPEND on gettext-nativesdk
523439f gcc-crosssdk: Fix DEPENDS for gettext
07046f3 dpkg: Convert to BBCLASSEXTEND
5c0a06b openssl: Convert to BBCLASSEXTEND
441006c db: Convert to BBCLASSEXTEND
705fe2f glib-2.0: Convert to BBCLASSEXTEND
a717961 opkg: Convert to use BBCLASSEXTEND
357282e freetype: Convert to BBCLASSEXTEND
88872c0 gcc-crosssdk-intermediate: Add missing gettext-native dependency
f911c26 xkeyboard-config: Merge recipes (and fix DEPENDS)
89ab1a2 meta-moblin:Tweak PVs
6baeede meta-moblin: Update to Moblin 2.1 released versions
3fce6c2 libx11_git: Update PV
9a66ae0 mutter: Add 2.28.1 release
813e135 gupnp-av: 0.5 -> 0.5.2 and add 0.4
3ef9c4c nbtk: Add 1.2.3 release
4108af2 carrick: Add 1.1.13 release version and prefer over the git version for moblin
cf91cfa bitbake: Apply modified version of a patch from Martin Jansa <martin.jansa@gmail.com> to allow wildcards at the end of PREFERRED_VERSION strings
5ab4428 gettext: extend nativesdk
b8e0c83 claws-plugins: Add missing gettext inherits
2a30f28 gupnp-tools: Fix filename
7ae983c aspell: Add missing gettext inherit
2491731 claws-mail: Add missing gettext inherit
fbf9d75 coreutils: Add missing gettext inherit
a06263e make: Add missing gettext inherit
1b20976 gcc: Use DEPENDS += to preseve gettext dependency
2f78c4d xkeyboard-config: Add DEPENDS on glib-2.0 (for glib-gettext)
957863b rpm-native: Add DEPENDS on gettext-native
795e22c moblin-menus: Add DEPENDS on glib-2.0 (for glib-gettext)
d702e01 blktool: Add missing DEPENDS on glib-2.0
ace4de1 bognor-regis: Add missing gupnp and gupnp-av DPENDS
1f343e2 gupnp: Update to latest releases
4863664 Merge branch 'master' of ssh://gitserver@git.pokylinux.org/poky
7111f83 diffutils: Add missing gettext dependency
d273811 site/mips-linux: add popt variables
9f73ec3 libxcb: add xcb-proto-native to DEPENDS
5504082 xcb-proto: support building native packages of each version
fc20223 qemumips: Use the linux-rp kernel by default
e4f4259 linux-rp: Support a 2.6.29 kernel for qemumips
955c7aa qemumips: Add qemumips machine from OE.dev
aef159c insane.bbclass: Fix multiline string
aee835b insane.bbclass: enhance gettext error message
4dac8ed pam: fix inherit, add gettext and change autotools
b1b5194 libidn: fix inherit, add gettext and change autotools
1ce4a01 gst-plugins-ogg/bad/ugly: Add missing inherit gettext
a1e9d39 avahi: Add missing inherit gettext
7cbbccf parted: Add missing inherit gettext
e83d48c gst-plugins-base: Inherit gettext
c37037d gettext.bbclass: Set the gettext dependencies correctly for target, cross and native packages
f309274 tzcode/tzdata: Drop unneeded gettext DEPENDS
8a7fd14 insane.bbclass: special case gettext as it can't depend on itself
91d2e7d gcc: add gettext to dependencies
69f7bf8 sed: add gettext to dependencies
eb27ddf python: remove unneeded gettext dependancy
ccf2e8c gdbm: remove unneeded gettext dependancy
5522e48 update-rc.d: remove unneeded gettext dependancy
5ad2aa2 ofono: remove unneeded gettext dependancy
e3f37d6 mutter: remove unneeded gettext dependancy
2d82287 loudmouth: remove unneeded gettext dependancy
a15166c libpng: remove unneeded gettext dependancy
dc415f5 jpeg: remove unneeded gettext dependancy
3e12340 gnutls: add gettext to dependencies
67883ba connman: remove unneeded gettext dependancy
e33839b clutter: remove unneeded gettext dependancy
dc07c33 binutils: add gettext to depends
4965a74 nbtk: remove unneeded gettext dependancy
8c3f554 mx: remove unneeded gettext dependancy
cf33df3 libccss: remove unneeded gettext dependancy
588e1c1 clutter-imcontext: remove unneeded gettext dependancy
9717322 check: remove unneeded gettext dependancy
2be6580 insane.bbclass: Fix gettext test
52b821a tzdata: 2008b -> 2009s
a4ba37e tzcode: 2007h -> 2009r
fe55fe7 base.bbclass: Fix missing argument
1ec8526 base.bbclass: Fix indentation error
70a3946 ofono: add gettext to DEPENDS
5bc6539 nbtk: add gettext to DEPENDS
daae258 mx: add gettext to DEPENDS
c52ad72 mx: Add Mx based on nbtk recipe
e1baebd nbtk: update fixed revision to 1.2.3 git tag
a1c4e3b handbook: Minor tweaks
8904028 ofono: Initial recipe for ofono
69027cd Remove use of gconnman as it's no longer maintained nor used
9f5e04a taskdata.py: Improve error message if a task dependency has an incorrect format
dbd66fc bitbake/BBHandler: Only add do_ prefix to tasks if its not already present
29ae46a kernel.bbclass: Use B, not S in KERNEL_VERSION
e90771c glibc-package.inc: Remove hardcoded path reference (from OE.dev)
9a2f361 devshell.bbclass: Merge tweaks from OE.dev
22429b6 base.bbclass: Partially sync branch/scm handling functions with OE.dev
b28aa01 glib-2.0: add gettext to DEPENDS
26d2071 xorg-util: add gettext to DEPENDS where required
5fda6f9 xorg-proto: add gettext to DEPENDS where required
b54602d xorg-libs: Add gettext to DEPENDS where required
41f43e1 python: add gettext to DEPENDS
4ae547d telepathy-glib: add gettext to DEPENDS
eb12b04 telepathy-glib: Update 0.9.0 -> 0.9.2
8076573 update-rc.d: add gettext to DEPENDS
f35aab2 mutter: add gettext to DEPENDS
b703ee6 loudmouth: add gettext to DEPENDS
674c9e5 libpng: add gettext to DEPENDS
d6cbbec jpeg: add gettext to DEPENDS
7188bb4 gdbm: add gettext to DEPENDS
fc2ba9a connman: add gettext to DEPENDS
5cd6d10 connman: Updates and a recipe for the latest release
2aa6a8a poky-fixed-revisions.inc: Fix preferred version for dbus-glib
2286ffb clutter: add gettext to DEPENDS
fb34cbd nbtk: add gettext to DEPENDS
508dacc libccss: add gettext to DEPENDS
29a65ec check: add gettext to DEPENDS
33e1378 clutter-imcontext: add gettext to DEPENDS
4859945 insane.bbclass: Handle native packages in the gettext test
459861b bitbake/data_smart.py: Fix error where update-rc.d would not get added to the dependency tree
71e21a7 insane.bbclass: Check whether gettext is required but not in DEPENDS
aa65b67 chrpath: Add chrpath 0.13 based on recipe from OE.dev
dd2a0e0 console-tools: Add missing gettext dependency
ceb91f7 scripts: preserve BB_NUMBER_THREADS when sanitising environment
51497a7 kernel.bbclass: Sync with OE.dev
62ab23e insane.bbclass: Skip arch check for Cross Canadian
61d608e local.conf: Fix cross canadian variable, it's SDKMACHINE not SDK_ARCH
1183aff bitbake/git.py: Typo fix
b80f6d8 bitbake/git.py: Add support for fullclone parameter
a94737f bitbake/git.py: Move variable init into the localpath function
7d937f0 qemugl: Only directly install for -nativesdk version
bf69b8b local.conf: mention the Canadian Cross variable; SDK_ARCH
30b6c9b local.conf: use qemux86 as default target
2c5ae3e handbook: point people at purple in the introduction
cb8684f bitbake/cooker.py: Fix handling of extra configuration files
c02e389 git.py: Improve command failure error messages
72327cb moblin-web-browser: Fix xpidl patch to make sure idl include files are found
d5ad487 mozilla-headless: Fix xulrunner version references
1805dbd dbus-glib: 0.78 -> 0.82
12691f2 mozilla-headless: Set PKG_CONFIG_ALLOW_SYSTEM_LIBS to avoid host libraries being found
ac39732 moblin-floating-revisions: Set fixed revision for bisho
fd2e201 moblin-app-installer: Fix syntax error
d2e8c1f moblin-app-installer: Update patch against latest git
386d564 moblin-fixed-revisions: Bump clutter revision
507dcf9 meta-moblin: Switch to gtk+ 2.18.5
db2e750 gtk+: Add 2.18.5
bd874fa poky-fixed-revisions.inc: Update glib-2.0 revision
35e8e3f gtk-doc: Update gtk-doc.m4
eee88f3 glib-2.0: 2.20 -> 2.22
e5a21c4 moblin-web-browser: Update patch
57bf2cf clutter: Fix locked down revision patch
5386327 udev: Add local.rules for the IGEP v2 to symlink the first framebuffer to /dev/fb
9bd948e bognor-regis: Add missing DEPENDS on libnotify
8caa290 rpm: Update for python 2.6
13ee301 moblin-floating-revisions: Enable floating revisions for mozilla-headless
7ab7ad8 mozilla-headless: Update to work with recent git changes
9e27801 sqlite3: Add missing DEPENDS on tcl-native
f4674fa tcl: Add tcltk from OE.dev but with legacy staging function removed and converted to BBCLASSEXTEND
7b8e1ef mojito: Add RDEPENDS on connman and set configure flags to match, also disable shave
21c54dd sqlite3: 3.6.16 -> 3.6.20
c924e98 leadpad/pcmanfm/puzzles: Make libowl optional
aeabb07 tasks: Fix missing quote
ad51b8c poky-fixed-revisions.inc: Update dates revision
3ab04a9 pimlico: Clean up libowl handling to be consistent
e584e7c libowl: Remove stale comments and enable packaging
288e62a distutils: Sync with OE.dev
c7d4ad8 gdb: Make sure cross-candian version does not provide gdbserver
98192bf site/ix86-common: Add moz variables
ba1c4fa python: Update 2.5 -> 2.6 (from OE.dev)
3b5336f python: Update 2.5 -> 2.6 (from OE.dev)
de73c65 alsa-utils/xdg-user-dirs/diffstat: Add missing DEPENDS on gettext
73e514b rpm: Bump PR
1678395 libtool: Fix sysroot preprocess function
28fc110 nativesdk.bbclass: Disable debug
82fd3bd nativesdk.bbclass: Fix DEPENDS handling
7bb37ff gdb: Clean up recipe and don't inherit cross for cross-canadian
4248fbe cross-canadian: Set PKGHIST_DIR to a correct value
18bd183 libexif: Add gettext DEPENDS
515b0f1 util-linux: Fix DEPENDS on gettext
f866f51 gstreamer: Fix DEPENDS on gettext
68518c4 popt: Fix DEPENDS on gettext
a76bdfb libgpg-error: Add missing DEPENDS on gettext
8917b6e libidl: Add missing DEPENDS on flex
212dedc flex: Add missing DEPENDS on gettext
ac0788e bison: Add missing DEPENDS on gettext
5bc0235 clutter-git: Update patch
6661806 rpm: Disable dwarfdebug
0ad571d clutter-git: Disable DOLT
66c952c autotools.bbclass: Make sure config.rpath is present if needed
dfd32b4 base.bbclass: Stage etc directory for native packages
659d4e2 mutter: Bump PR
414f9e8 gdk-pixbuf-csource: Make sure a loaders file is generated after recent staging changes
6348b70 libtool-cross: Don't allow bad staging files break libtooL
15b5395 libtool: Only apply sysroot mangling to libtool itself (not native/cross/nativesdk)
35433ab rpm: Bump PR
7cf518c gvfs: Add missing DEPEND on gnome-keyring and disable libarchive
499c15a pycairo: Fix staging
67a8d2d ribosome: Build workarounds
20abebf xapps: Add configure sed to remove problems with the XAW_CHECK_XPRINT_SUPPORT macro
3d5a8ff clutter-gst: Bump PR
4fb92e7 clutter-gst: Disable DOLT
400f1ca libtool: Allow ltdl to stage only
8e33642 Add missing patches
6e6320b gupnp: Fix staging preprocess function
63d30e3 clutter-1.0: Disable DOLT
463f99c clutter-1.0: Disable DOLT
78ed945 syncevolution: Correct branchname
1b0fd59 moblin-floating-revisions.inc: Disable head revisions for now
e1e3621 moblin-fixed-revisions.inc: Update gtk+ version
ad2dfda subversion: Bump PR
8265d8d gnu-config: Add missings sed command
a813f23 libtool: Don't install into staging since we need libtool-cross there
c770141 e2fsprogs: Fix typo and bump appropriate PRs
e8c26e1 xclipboard/xclock/xkbprint/xkbutils: Upgrade to lastest releases
3f27fda xserver-xf86-dri-lite: Add m4_pattern_allow
441446c gtk+: 2.16.4 -> 2.16.6
6834d3c xserver-xf86-dri-lite: Fix typo
0d4c056 xserver-xf86-dri-lite: Fix macro in .m4 file
011557c bitbake: Fix dict changing size problems
71b10e3 poky-init-build-env: Remove now unneeded return
2893322 distro/poky: Set EXTRAOPKGCONFIG
b46f349 Add poky-feed-config-opkg (based off moblin version)
87113e4 xserver-kdrive-1.3.0.0: Add randr12 fix from OE
2c1211b scripts/poky-qemu-internal: Make sure qemuarm cursor is visible
f0d2b37 libxcalibrate: Fix with xcb
f721f7b pointercal: Update qemuarm calibration files after recent qemu changes to wacom code
43dd23b udev-141: Backport fix from 145 which is also needed here
b6b45ca runqemu: staging -> sysroots
4ee3295 apmd/jpeg: libtool is on STAGING_BINDIR_CROSS
1b8493a qemu: Update to 0.10.6 and add fix wacom emulation issues
429837b udev: Fix touchscreen link creation with latest version
663dc36 sato: move policykit from meta-moblin to met
2163649 sato: move pam from meta-moblin to meta
5892090 external-toolchain-csl: Convert to use glibc-package
246dbec package.bbclass: Clear package directory copy before installing new files to prevent stale data
6ebcb57 glibc-package.bbclass: Fix the case PN == glibc
46fbe4c glibc-package.bbclass: Add GLIBC_INTERNAL_USE_BINARY_LOCALE precompiled mode
7379ee7 glibc: Add missing .inc file from last commit
1e549b9 glibc: Separate out core glibc packaging functionality into a class
ebf6159 tune-atom.inc: Improve optmisation flags
0ad4a95 genext2fs: The makefile is broken, just do the correct thing ourselves
0037679 stagemanager-native: Set NATIVE_INSTALL_WORKS
aa20954 mozilla-headless: Convert to use SYSROOT_PREPROCESS_FUNCS
a6f36ae apt: Stage include headers in do_install and drop custom staging function
24f0ecb apt-native: Use do_install for staging
bb9a858 stagemanager-native: Set PSTAGING_DISABLED and drop unused staging function
43bee8b Disable packaged-staging for cross-linkage/staging-linkage and external-poky-toolchain
40a88a1 poky-external-toolchain: Alter staging in do_install step
b90e556 cross-linkage/staging-linkage: Convert to mangle staging in do_install step
affbcf3 kernel.bbclass: Merge do_stage into do_install
3a2ad83 osc-native: Stage using do_install (and add SRCREV)
47c19bb python: Drop staging functions. If failures occur we just need to improve do_install
5716a14 package.bbclass: Fix runtime_maping_rename so version information isn't removed
0846d1f python: Drop custom staging function
0309edc python-native: Convert to use do_install for staging
5b44fa1 perl: Updates to ensure Config-heavy-target.pl is found
ca5f36e perl: Update from OE.dev and convert to use do_install for staging
06685d7 libapci: Remove unneeded staging function
b977fca tzcode-native: Set NATIVE_INSTALL_WORKS
0d51d80 xerces-c: Patch out local linking directories
bc111fc xerces-c: Reuse do_install for staging
892ff04 libol: Drop custom staging function
659717f samba: Remove unneeded custom staging function
770af5b gettext: Convert to use BBCLASSEXTEND
5e6726d dfu-util: Remove unneeded staging functions
6e7cac9 uicmoc3-native: Set NATIVE_INSTALL_WORKS
dd9e54d boost-jam-native: Use do_install for staging
84a7f89 boost: Switch to using do_install for staging
6b05a7a qmake-native: Convert to use do_install for staging
54682f2 libpcre: Drop staging function
9fe6114 uicmoc3-native: Convert to use do_install for staging
354221d moblin-feeds: Remove unneeded staging function
d265968 linux-dummy: Drop do_stage
57a7346 libiconv: Convert to use autotools_stage
90a50d5 e2fsprogs: Drop unneeded custom staging function by improving do_install and convert to use BBCLASSEXTEND for -native recipe
e4d0c64 gcc-native: Convert to stage using do_install
8d5f7fa binutils: Remove unneeded staging functions
bf9725e dbus-native: Convert to use do_install for staging
be033d2 dbus: Remove unneeded staging function
7bf17e8 alsa-oss: Drop unneeded custom staging function
c5f2ff9 u-boot-mkimage-native: Convert to use do_install for staging
b36dcf3 signgp-native: Convert to use do_install for staging
d715026 update-alternatives-dpkg: Convert to BBCLASSEXTEND
a002937 gnome-doc-utils: Convert staging function to a do_install_append
dc607cf qemugl: This package is usually installed as an alternative so no need to use the package postinstall. Remove staging function
f8eb8a3 insserv: Convert to BBCLASSEXTEND, mark do_install as safe for native staging
e2b66cc wireless-tools: Drop custom staging function
bd91009 yaffs2-utils: Convert to BBCLASSEXTEND and drop custom staging function
a09fcd0 uicmoc4: Set NATIVE_INSTALL_WORKS
de19e4b gtk-doc: Set NATIVE_INSTALL_WORKS
54c9e93 syslinux/syslinux-installer-native: Convert to stage with do_install
fe89792 gtk-doc: Drop custom staging functions as now unneeded
6cad69b libusb/libusb0: Drop unneeded custom staging functions
6327525 libsdl-natvesdk: Drop unneeded stage_append
0d816ac uclibc: Upgrade 0.9.29 -> 0.9.30.1 (from OE.dev) and massively cleanup the recipes, using install step for staging
2ce975d automake-native: Remove unneeded staging function
a1f2ed6 matchbox-desktop: Drop custom staging function
089e29b uicmoc4-native: Convert to use install step for staging
40abdea helix-libs/ribosome: Convert to use do_install for staging
cb5f3a4 freetype: Drop unneeded custom staging functions
06b28b5 db: Convert to use staging from install
833152e cmake-native: Drop unneeded staging function and use do_install
e9a1c2f apr: Convert staging mangling to a sysroot_preprocess function
559aa18 intltool: Use autotools_stage
b3ccc4e bzip2: Use do_install for staging
bf75477 libxaw: Add symlinks in do_install step and use this for staging
22569b8 ncurses: Use do_install (and add missing symlink)
e82831c lirc: Drop unneeded custom staging function
89e1fb0 libassuan: Drop unneeded custom staging function
032ef48 js: Use do_install for staging
dab103f liba52: Drop unneeded custom staging function
aec1e12 gdbm: Drop unneeded custom staging function
4c57e93 libfribidi: Drop unneeded custom staging function
9de4ef4 tzcode-native: Convert to use do_install for staging
49abf93 genext2fs: Convert to use do_install for staging and use BBCLASSEXTEND for native recipe
a7d453b udev: Convert old versions to use do_install for staging
1384179 gnome-common: Drop unneeded custom staging function
4359a22 glibc: Convert to use do_install for staging
9734c51 external-csl-toolchain: Drop uneeded staging functions (a make sure mangling happens in do_install)
45fbc1c package-index/run-postinsts: Drop staging functions
ed0a52a openssl: Convert to use do_install for staging
6a54171 dosfstools: Convert to use install step for staging
551e0bb cdrtools-native: Use install for staging
a04941c lame: Use autotools_stage_all
b73a731 module-init-tools-cross: Use do_install for staging
040cf26 modutils-cross: Use do_install for staging
a78d298 qmake2-cross: Use do_install for staging
7d9e2e5 cross.bbclass: Adjust the core class staging method as all users have been vetted and won't be affected
d560f9f gdb: Clean up do_install and convert to use install for staging
5b8b6c6 libtool: Convert various varients to use do_install for staging
b6a0684 linux-libc-headers: Drop unneeded custom staging functions
ec22e23 gcc: Convert cross recipes to stage in do_install. Also moves stdc++ and other libs into the sysroot
977b3fe cross.bbclass: Add defitions of target_*dir variables and improve sysroot_stage_all to cope with mixed packages as found in cross recipes
94577a7 glib-2.0: Clean up staging functions and convert to do_install
6349b2b fontconfig: Update staging to use do_install
3ba6fce libmad: Drop custom staging function
7edbe81 gupnp: Convert to new staging method
0d5818e pcap: Drop custom staging function and use autotool_stage_all. Some hopefully legacy leftovers remain commented
79c0a43 elfutils: Convert to autotools_stage_all
76d9b6e native.bbclass: Make sure PACKAGES is empty in case _prepend or _append are used
6568a6d base.bbclass: Drop unused PSTAGE_BROKEN_DESTDIR variable and run sysroot_prehook at the right point
7096a54 packaged-staging.bbclass: Fix staging reference -> sysroots
9a3da23 dbus-glib-native: Convert to use do_install for staging
6341ebc unifdef-native: Convert to use do_install for staging
70fbc88 pkgconfig: Drop pointless staging function
699c0aa apmd: Convert to use do_install for staging
2f435da ldconfig-native: Convert to use do_install for staging
2b62b6e quilt: Convert to use install step for staging and cleanup the include files a bit
7d353d3 gtk+/gdk-pixbuf-csource-native: Convert to staging from do_install
81d1490 gpgme: Convert to autotools_stage_all
668ae67 update-rc.d: Add native version, add native dependency to class, convert staging function
d89b641 sha-native: Update staging function
3044578 pth: Drop custom staging function
1c9d2ba ppp: Drop custom staging function
31ad2cf gnutls: Convert to autotools_stage
c0a972e gpg-error: Convert to autotools_stage
7807791 tiff: Convert to autotools_stage
84c2500 libxsettings-client: Convert to autotools_stage
5c0dce8 fakeroot: Remove leagacy staging function and improve installed -dev package
7acfa94 perl: Standardise config.sh location
5c0111c lib_package.bbclass: Sync with OE.dev to remove hardcoded layout assumption
5f22458 debian/kernel/gconf/gtk-icon-cache: PKGDESK/PKG fixes
01f75c1 rootfs_rpm/icecc: Sync whitespace with OE.dev
a59f67f gtk-icon-cache.bbclass: Fix hardcoded PKGDEST reference and operate on directories other than hicolor (from OE.dev)
67fa7a1 gconf.bbclass: Fix hardcoded PKGDEST reference
7da2f8c packaged-staging: Fix libdir references to use libdir_native
c226b38 package_ipk.bbclass: Fix typo
30087f8 binutils-cross-canadian.inc: Convert to use sysroot staging approach
94ceada binutils-cross.inc: Convert to use sysroot staging approach
9198908 cross.bbclass: Override the sysroot_stage_all to work appropriately for cross packages
e267747 base.bbclass: Add special stage keyword to override leagcy mode
b772c8c bitbake.conf/base.bbclass: Rename the staging directory to sysroots and the populate_staging task to populate_sysroot
6c92cfc glibc-package.bbclass: Operate on PKG, not D after package.bbclass updates
7ad1784 gtk-icon-cache.bbclass: Drop unneeded module import
c8dc392 gconf.bbclass: Drop unneeded module import
d4f23b6 icu: Fix typo
7b849ae native.bbclass: Fix DEPENDS handling for BBCLASSEXTEND use
e782788 gnu-config: Don't run sed substituation for perl location in native case
c6f8605 base/autotools.bbclass: Make sure extra dependencies are not lost for native and nativesdk BBCLASSEXTEND. Ugly but no simpler/neater way seems possible
aa08ac8 libtool: Drop unneeded include
c541174 classes: Remove and sanitise import statements
80d55bb base.bbclass: Drop import bb and import os as no longer needed
f1faef3 icu: Fix -native version so it doesn't use target substituions in configure step
22ddc76 gconf-dbus: Convert to BBCLASSEXTEND and drop custom staging append since its no longer needed
b26b8f4 native.bbclass: Improve DEPENDS mangling code so sub matches don't break upon substitutions
abe3902 bitbake.conf: Add virtual/libintl-native to ASSUME_PROVIDED
d594dcf pax-utils: Convert to BBCLASSEXTEND
e1ba0ea gmp: Convert to BBCLASSEXTEND
0b1aee3 nasm: Convert to BBCLASSEXTEND
5b2610a m4: Drop 1.4.9 version, convert to autotools_stage
f2a5be4 libx11: Convert -native/-nativesdk versions to BBCLASSEXTEND
5308a1d sqlite3: Cleanups - use BBCLASSEXTEND, drop strange compile bugfix (now unneeded?), convert to autotools_stage class
03ed0db xcb-proto: Drop custom staging function
4523bc1 xcb-proto: Convert to BBCLASSEXTEND
f9a857d libxslt: Convert to BBCLASSEXTEND
f8e5205 autoconf: Convert to BBCLASSEXTEND
71b09b0 mtd-utils: Convert to BBCLASSEXTEND
f74f080 libusb: Convert to BBCLASSEXTEND
837dabc Drop gcc-native 3.4.4
7541841 libxml2: Convert to BBCLASSEXTEND (and drop unneeded custom staging function
b9cac51 gettext: Drop old version
aee10f3 makedevs: Convert to BBCLASSEXTEND
1d82f91 jpeg: Convert to BBCLASSEXTEND (and drop unneeded custom staging function
65d097c gperf: Convert to BBCLASSEXTEND
b8def21 qemu: Convert to BBCLASSEXTEND (git version only, drop 0.9.1 native/nativesdk versions)
ffb2301 git: Convert to BBCLASSEXTEND
18fe7ed intltool: Convert to BBCLASSEXTEND
88de83a intltool: Drop old version
9a17752 shared-mime-info: Convert to BBCLASSEXTEND
6e642b4 readline: Convert to BBCLASSEXTEND
3baff56 beecrypt: Convert to BBCLASSEXTEND
29327b9 mtools: Convert to BBCLASSEXTEND
3d6e246 libidl: Convert to BBCLASSEXTEND
3a201d0 pkgconfig: Convert to BBCLASSEXTEND
cfc57fd ncurses: Convert to BBCLASSEXTEND
c304734 libpng: Convert to BBCLASSEXTEND and drop custom staging function as unneeded
afc22e5 curl: Convert to BBCLASSEXTEND
039a1b4 bison: Convert to BBCLASSEXTEND
5c83405 icu: Convert to BBCLASSEXTEND
170604d gdbm: Convert to BBCLASSEXTEND
315d4ab file: Convert to BBCLASSEXTEND
2a4760d popt: Convert to use BBCLASSEXTEND
6771023 gnu-config: Convert to use BBCLASSEXTEND
20f3597 bzip-full-native: Convert to use BBCLASSEXTEND
cd7f623 lzo: Convert to use BBCLASSEXTEND
91a071b unzip: Convert to use BBCLASSEXTEND
bb4dfbf zip: Convert to use BBCLASSEXTEND
b5a059f fetch/__init__.py: Try and make the sortable_revision code mode readable
aaf9b6a base.bbclass: Add an option of forcing the new staging mechanism
08d949e base.bbclass: Fix do_populate_staging to operating on TMPDIR, not STAGING_DIR_TARGET
379bc47 classes: Various staging improvement fixups
d7399bd base.bbclass: Rework staging function to use a DESTDIR style configuration based on the data from the do_install step. This falls back to any standard do_stage function if defined, see the mailing list for more info.
a1d93ee packaged-staging.bbclass: Use a variable for the location of the staging lock file
3c83bae native.bbclass: If do_stage isn't overridden, allow do_install to run for native packages
7c97538 binconfig/pkgconfig.bbclass: Convert staging functions into SYSROOT_PREPROCESS_FUNCS operating on SYSROOT_DESTDIR
6ea78d6 autotools.bbclass: Separate out useful staging functions into base.bbclass and call from autotools classes
1383f0f autotools.bbclass: No need to fork sed each time
cbcad72 autotools.bbclass: Convert .la file mangling to package preprocessing hook
99cdb59 binconfig.bbclass: Convert do_install_append() into a PACKAGE_PREPROCESS_FUNCS
7501b62 package.bbclass: Add the option to declare package preprocess function hooks
4b0332c package.bbclass: Change to operate on a copy of the install directory instead of directly. Also take the opportunity to rename the temp directories so their function is clear
0eee29e package.bbclass: Remove hardcoded use of PKGDEST variable
4f4a3da package.bbclass: Move variable checks to one place making the code more readable
764f73a base.bbclass: Only run do_stage if its been overwritten as the default is empty and its pointless to run it
483f858 bitbake: Sync various functions with those from bitbake-dev and bitbake upstream
c2b5a61 bitbake: Sync module import cleanups back from bitbake trunk
1fd3265 build.py: Fix zero size logfile problems
58c01c1 xfce.bbclass: Sync with OE.dev
96ece54 dbus: Disable X for -native versions, also explicitly disable libaudit
a338a7a dbus: Improve fix deamon install patch to use automake magic to avoid installing wrapper scripts
ce3ef9f dbus-native: Apply install fix patch to ensure the version of dbus-daemon in staging is not a wrapper
b5b6b22 bitbake.conf: Drop SHELLCMDS quoting fixing menuconfig task
073faab linux-igep2: Fix audio capture, the capture result is always silence
7a86606 igep0020b.conf: Fix missing u-boot entrypoint
988e4dd poky-init-build-env: Update for BASH 4 Bourne Shell semantics
117b91a m4: Apply config_links patch to non-native version as well (from Esben Haabendal <eha@doredevelopment.dk>)
23a64bc m4-native: Fix building on Ubuntu 9.10
2dddd57 meta-moblin: Drop mux as now obsolete
08cd59f poky: add support for changing bootsplash application
e3c01a6 xorg: Fixup DEPENDS on util-macros
099fa67 gcc 3.4.4: fixed Ubuntu 9.10 build
ae0e1ad package.bbclass: Cleanup getVar syntax to use True, not 1 as third argument
83a6400 packaged-staging: Whitelist the empty base_do_stage function as it does nothing and locks need not be held
c078d4c poky.conf: Update source tarball stash url and variable name
8ceb125 gcc-4.1.2: Add missing patch (from OE.dev)
eb0d2f2 bitbake-dev: Fix a couple of bugs that crept in breaking runtime
a1a308c Merge branch 'marcin/trunk' of git://git.pokylinux.org/poky-contrib
699fb85 bluez4: 4.39 -> 4.56
559cb33 linux-libc-headers_2.6.20.bb : more modern glibc expose getline from stdio.h rename the function so not to cause a clash
908fa82 libsynthesis/syncevolution: Switch to 0.9 release branch
0704ef9 poky-fixed-revisions.inc: Remove stray # character
f310816 bitbake: hg fetcher - sync bitbake-dev and remove debug
d4fe9e7 task-moblin-x11-netbook: Bump PR
4f6fee8 mozilla-headless: Bump PV
0e22712 poky-fixed-revisions.inc: Update mozila-headless SRCREV
3c0dd2d moblin-fixed-revisions.inc: Set mozilla-headless SRCREV correctly
b8f69f7 mozilla-headless: Convert to auto revisioning
717d71b bitbake: Add hg fetcher auto revisioning, patch from Carl Simonson <simonsonc@gmail.com>
96fc6f4 moblin-floating-revisions: Bump Mozilla headless revision
4d9309a poky-fixed-revisions.inc: Set SRCREV for missing packages
cb62df1 xserver-xf86-lite.inc: Make sure the correct RDEPENDS variable is appended too (thanks Enric)
7465fba mutter-moblin: Add missing DEPENDS on bognor-regis (thanks Enric)
ac4d25c bitbake: Fix svk fetcher
627d9b1 bitbake-dev: Sync with changes upstream
f1216d2 udev: Remove broken exec_prefix which fixes file layout and stages libudev correctly
9b53d44 xserver-xf86-dri-lite: Fix RDEPENDS as RDEPENDS_PN is set and this overrides the base variable
65b24a0 xserver-xf86-config: Add version for IGEP v2 board
f4ccb8f formfactor: Add version for IGEP v2 board
af13264 linux-igep2: kernel recipe for IGEP v2 board
6598379 igep0020b.conf: Initial IGEP v2 board support
5a8dd65 xf86-video-omapfb: Add X.Org driver for TI OMAP framebuffers
7642529 bitbake: Anonymous funciton improvements - use methodpool to allow cached code and remove anonymous function indentation mismatch problems
4454977 bitbake: Add bb and os to __builtins__, not the exec function global
74016da bitbake: Remove unused and hence pointless internal__functions__ variable
dbf6a79 mobile-broadband-provider-info: Set PV correctly
07c0fc0 moblin-floating-revisions.inc: Bump mozilla-headless revision
279afff prefferred-xorg-versions: Update util-macros
82d0344 carrick: Add missing DEPENDS on mobile-broadband-provider-info
d1b315d Add mobile-broadband-probider-info
6f5fd5b pango: Add 1.26.0
424441d carrick: Add librest and libnotify to DEPENDS
fec7fde connman: Add option to enable tests
9996221 xf86-video-intel: Drop patches from git version
127797d moblin-floating-revisions: Bump for mozilla-headless
2ddd5a8 packagekit: Make sure connman is used, not network manager
9c00056 telepathy-glib: 0.7.29 -> 0.9.0
f6db09f util-macros: 1.2.1 -> 1.3.0
e57be74 moblin-app-installer: Add package
220533a packagekit: 0.3.8 -> 0.4.9 (and sync with OE.dev) and add gnome-packagekit from OE.dev)
b819bd9 libsexy: Add along with dependencies (aspell + enchant) from OE.dev
5ce319a gnome-menus: 2.24.0 -> 2.24.1
3aa68f1 opkg: Switch to google svn and patch to export a version comparision function (patches taken from OE.dev)
67a79c7 bitbake.conf: Fix STAGING_BINDIR_CROSS to point to the location before the layout_* changes
2c6494b policykit-gnome: Add from OE.dev with tweaks and fixed DEPENDS
1a92cb6 tasks: Update SRCREV
d326382 bitbake/build.py: Remove zero sized log files
bec200b bitbake/cache.py: Add warnings for leakage of SRCREVINACTION magic value
8138603 bitbake/fetch: Ensure SRCREVINACTION always resets the core flags even when parsing failes by using a try/finally
1bc5ed0 bitbake-dev: Sync exported variables with bitbake
d3d2bb6 moblin-fixed-revisions.inc: Update connman revision to avoid parallel make races
1d4f93e Add SDKMACHINE to simplify SDK control and add to CACHE paths to allow environmental variable control
8aa3e16 nativesdk.bbclass: Drop ineffective dynamic linker flag
7663a6e task-sdk-host: Add gdb-cross-canadian
9943a3e gcc-crosssdk: Add code to change the deafult linker path in the case of sdk binaries
a4c57e2 gdb: Add cross-canadian recipe
cd93271 ncurses: Fix up BUILD_LDFLAGS variable corrupting builds
3831d44 qemu-nativesdk: Use HOST_CC to build parse_gl_h
0eb3586 gcc-configure-common.inc: Fix to use target system paths
3fbbc44 nativesdk/package_ipk.bbclass: Clean up sdk package architectures
1c1305d meta-toolchain: Don't ship libGL
43a6e66 qemu-nativesdk: Add patch to fix linkage
b4def68 qemugl: Relax COMPATIBLE_MACHINE slightly for x86_64 case
0756b31 external-poky-toolchain: Don't inherit nativesdk
191b030 gcc-cross-sdk.inc: Drop no unused file
4f8e5ed qemu-nativesdk: Add qemugl-nativesdk to DEPENDS
9f5ef81 qemugl: Add staging function
1353bc0 glibc-2.6.1: Fix accidental unintended change
7a382df task-sdk-host: Use cross-canadian packages
3e33f7f qemu-nativesdk: Use a specific gcc as otherwise configure tests break
5369137 libx11-nativesdk: No need to hardcode DEPENDS/PROVIDES
ffc3e23 gmp-nativesdk: Don't hardcode PV
a51362c package_ipk.bbclass: Convert to use SDK_ARCH
9fba0f4 bitbake.conf: Update SPECIAL_PKGSUFFIX to include crosssdk/cross-canadian and drop -cross-sdk
9174f71 gcc-configure-sdk: Tweak compiler options for working canadian cross compiles
192709c gcc-configure-common: Allow the sysroot layout seen by the compiler to be configured (based on a patch from OE.dev but improved)
7efbf5c gcc-configure-common.inc: Allow the multilib option to be changed
835bc8f meta-toolchain: Fix --build CONFIGURE_FLAG and add a target prefix to scripts
abfe859 bitbake.conf: Add SDK variable definitions
31a82c6 gcc-package-cross: Cope with lib64 binaries
00127b3 packaged-staging.bbclass Use libdir_native for opkg paths in directory creation
5912ab1 native.bbclass: Use prefix_native variable
0768f59 poky-fixed-revisions.inc: Rename -sdk to -nativesdk
ca66713 nativesdk: Convert to use crosssdk toolchain and remove binutils/gcc nativesdk recipes
afa02c5 cross-canadian: Add cross-canadian class with gcc and binutils recipes
c906f2b crosssdk: Add crosssdk class with gcc and binutils recipes
eb1e80f Extend various packages to use nativesdk using BBCLASSEXTEND
f7fddc1 mpfr: Convert to use BBCLASSEXTEND
bc5afa6 nativesdk: Don't use search and replace on DEPENDS field
0d7207c sdk.bbclass: Rename to nativesdk.bbclass
af85ce4 Remove layout_* variables
046ae6a poky/moblin: Update SDKPATH and SDK_NAME to use SDK_ARCH and remove pointless path addition
6024456 bitbake.conf: Use BASE_PACKAGE_ARCH as the default, not HOST_ARCH
3b8b3f7 bitbake.conf: Add SDK variable definitions
f1c780d glibc: Use PN instead of hardcoded package name
cf9a7f9 inputproto: Add missing DEPENDS on util-macros
c5fb62b gnome-settings-daemon: Fix problems with bad paths creeping into the configure paths
2161f50 sysfsutils: Drop custom staging function and broken includedir change
285cd93 moblin-floating-revisions.inc: Release nbtk/carrick versions
2756d7d carrick: Add missing DEPENDS on mutter-moblin
3ec66b0 moblin-floating-revisions: Lock down carrick to to pre nbtk API change
7b6110d moblin-floating-revisions: Lock down nbtk to pre API change
2e7e072 gcc-4.3.3: Sync patchset with OE.dev
8f96edf glibc-2.9: Sync with OE.dev and update patchset
48a278e glibc-stage.inc: Massively simplify and speedup by just copying the data generated in the do_install stage
ea5d780 glibc-package.bbclass: Sync with OE.dev and remove hardcoded path references
846794c bitbake.conf: Rename SDK_PREFIX SDKPATH
d671955 binutils-cross: Remove uneeded custom staging functions
1f8a1ea meta-toolchain: Exclude from world builds
e4e019b carrick: Make sure the build/autotools directory exists or errors occur
16d7767 libnl: Fix compile header problems
0e842cf zeroconf: Fix compile issue
a340d3c valgrind: 3.3.0 -> 3.5.0
bc0b233 bitbake cache: Add code to catch a nasty cache corruption issue to aid in tracking it down
e425d3c moblin-floating-revisions.inc: Lock down clutter-gst
25d9413 tasks: Fix owl patch for latest git versions
4426c30 dates: Fix owl patch
43fa53c patch.bbclass: Merge in git resolver changes from OE.dev. Catch all exceptions rather than print horrid backtraces
0deeea4 poky.conf: Set SDK_NAME to include BUILD_ARCH, not HOST_ARCH
09ed7a4 Lock down udev versions correctly for the versions of glibc in poky vs. moblin distros
2557eb1 meta-toolchain: Set --build flag to configure in CONFIGURE_FLAGS
bdbabcb clutter-gtk: Append to DEPENDS, don't overwrite
0533fa7 task-moblin-standalone-sdk-target: Add more moblin libraries
1151312 moblin: Set toolchain SDK target to a moblin specific one
d418150 gcc-package-sdk.inc: Make sure include-fixed headers are included with the toolchain
d8cc366 preferred-xorg-versions.inc: Fix native/sdk versions
82e4926 moblin-floating-revisions: Fix fixed clutter-ftk SRCURI
3645a17 Merge branch 'mturquette/zoom2' of git://pokylinux.org/poky-contrib
bfcf816 clutter-gtk: Lock down version due to unstable gtk dependency
d09e6fa hornsey: Add clutter-gtk to DEPENDS
faec274 mesa-dri: Update patch against git
d5341fb Add poky-trim-schemas post install script to remove unneeded schema locale translations from images (credit to Ross Burton for the initial script)
69af3cc linux-omap3-pm: remove 1 unneeded patch
1937c08 util-linux: Bump PR
c33873a e2fsprogs: Don't install blkid.pc file
c5983de opkg-utils: Update changing .ipk avoidence patch
670a7ee poky-fixed-revisions: Update hal version
431ebea util-linux: Stage files
45d44d3 hal: Add 0.5.13
9374840 anerley: Add missing DEPENDS on eds-dbus
27881ba dhcp: Fix to work with glibc 2.9
21c622d acpid: Fix issues with glibc 2.9 and remove old versions
0445add linux-libc-headers: Fix missing include for 2.6.30
ec1d478 udev: Add 145
c2a128e poky-moblin.inc: Use glibc 2.9, linux-libcheaders 2.6.30
b410b2e glibc: Add 2.9 from OE.dev
71e4d73 linux-libc-headers: Add 2.6.30
479d7f1 opkg-utils: Further missing files tweaks
2498dd2 Add poky-autobuilder to .gitignore
06b2913 moblin-web-browser: Make sure dbus service files are packaged
b8187a1 opkg-utils: Add patch to avoid errors when packages change while rebuilding the package indexes
3f8afe4 linux-omap3-pm: refresh patches and remove some sed magic to boot zoom2
db4cd6d tune-cortexa8.inc: don't auto-vectorize, remove package overrides, some cleanup
59040b5 __init__.py: export GIT_PROXY_COMMAND for those behind draconian proxies
4eee576 linux-omap3-pm: remove 0001-OMAP3-MMC-Add-mux-for-pins.patch
5680a1d hornsey: bump fixed revision to version 0.3
ba3735e clutter-gst: Bump moblin fixed revision to 0.10.0
82013e7 nbtk: bump fixed revision to 1.0.0
b65f2d5 clutter-imcontext: bump fixed revision to 0.1.4
0f2df9e base.bbclass: Don't retrieve SRC_URI when not necessary
65bf6c9 base.bbclass: packages pulling a mercurial tree should depend on mercurial
c2b4308 base.bbclass: Use subprocess rather than os.system for do_unpack
7859b4c gettext: Fix path to ncurses library
539eb28 moblin-feed-config-opkg: Bump PR
5f1a5e3 nbtk: Disable introspection
18f0cec Add moblin-feed-incremental-bleeding class
3feb78c moblin-panels: Update DEPENDS
484c2e5 connman: Update patch and bump revision
1a338f5 clutter-mozembed: Depend on clutter-1.0
fe0b8a2 clutter-gst/gtk: Depend on clutter 1.0
a9dac74 Add xbacklight 1.1
efb47fe dalston: Add missing DEPENDS on mutter-moblin
932f143 package-index: Mark as exluded from world builds
983a3af libgalego: Add patch for mkinstalldirs problems
bcd55cb farsight2: Bump PR
64eaabe farsight2: Fix rpm glob failure
5a826d3 findutils: Add patch for mkdir issue and use BBCLASSEXTEND for the native version
0dc18c5 Add python-dbus, python-pyrex from OE.dev
79542c9 e2fsprogs: Fix MKINSTALL issues
32678f5 task-moblin-x11-netbook: Add empathy and gnome-terminal
b64e331 Add procps from OE.dev
d0d2cda telepathy: Sync recipes/versions with OE.dev
214e407 Add farsight2 and libnice from OE.dev
331cd03 gobject-introspection: Update revision
e8618a1 Add gnome-terminal
714204f vte: Upgrade 0.16.9 -> 0.20.5
26b814e gstreamer, gst-plugins-base: Upgrade to 0.10.22
92da203 task-moblin-x11-netbook: Add natilus to images
2c0cee1 nautilus: Add based roughly on OE.dev recipe
d398307 Add gettext 0.17 (from OE.dev)
b2d1956 poky-fixed-revisions: Update matchbox-terminal SRCREV to get desktop file fixes
aa50690 moblin-icon-theme: Add applications-games icon symlink
a4d9c0c task-moblin-x11-netbook: Add gnome-settins-deamon, drop settings-daemon, matchbox-config-gtk and xcursos-transparent-theme
9e58848e gnome: Promote gnome-settings-daemon and dependencies into meta/. Also remove now unneeded custom staging functions
c41f317 puzzles: Make the owl menu poky distro specific
6912b5d Make the owl menu poky distro specific
d8869f3 pimlico: Convert recipes to gnome git
14321b4 mesa-dri: Fix patch list
e96829a moblin-web-browser: Fix locked down patch
bd11232 moblin-web-browser: Add DEPENDS on mutter-moblin
259498f moblin-revisions: Switch to mesa 7.5 and git versions of mesa-dri, xserver-xf96-dri-lite and xf86-video-intel
152b8d7 Various PR bumps
d713443 json-glib: Disable introspection explicitly
a19a75f Various PR bumps
69005b2 mutter: Depend on clutter-1.0
28e4e3b xserver-xf86-dri-lite: Update patches
7f47198 xserver-xf86-dri-lite: Update patches
a0a9a2c mesa: Update mesa-dri git recipe and add recipe for 7.5
c57e2d6 x11-common: Disable mipmapped text for now until problems with mesa are resolved
d57c0cb matchbox-session-netbook: Disable mipmapped text for now until problems with mesa are resolved
5959860 moblin-icon-theme: 0.3 -> 0.7
5c3a5e9 moblin-web-browser: Update patch against master
5a5fdd7 task-moblin-x11-netbook: Add droid-fonts to the image
5918fbc Add droid-fonts
b8398e1 autotools.bbclass: Remove pointless inherit
db549cd binconfig.bbclass: Remove pointless inherit
98c561b package_ipk.bbclass: Place configuration files in WORKDIR, not staging
3a680d2 bitbake.conf: Create the rootfs in WORKDIR, not directly in TMPDIR allowing creation of more than one rootfs at once
dc6cb53 moblin-floating-revisions: Unlock clutter-1.0 version
a1ff3f1 moblin-floating-revisions: Fix clutter-1.0 until fixed, free mojito
2532cdb moblin-fixed-revisions: Update anerley revision
f63a149 moblin-fixed-revisions: Update mutter revision
e61d88e moblin-fixed-revisions: Update clutter-gtk revision
4c94f1f moblin-fixed-revisions: Update mozilla-headless-services revision
d1c6ef8 moblin-fixed-revisions: Update moblin-web-browser and clutter-mozembed
24ad1ad poky-fixed-revisions: Add SRCREV for new recipes
31d133c moblin-fixed-revisions: Update revisions
f56add4 Merge branch 'mturquette/zoom2' of git://git.pokylinux.org/poky-contrib
083745a moblin: Convert to depend on clutter-1.0
3dac2aa task-moblin-x11-netbook: Add moblin-panels
775e051 moblin-panel: Add recipes for moblin-panel applications
37d2d56 moblin-floating-revisions: Add new SRCREVs and lock down mojito
2c259b0 clutter: Add recipe for 1.0 release branch
f0b0502 clutter-mozembed: Update patches after source layout change
3a2a3d7 clutter-imcontext: Drop unneeded patch
dccd40d moblin-web-browser: Drop unneeded patch
f860c8f clutter-mozembed: Drop unneeded patch
63dffac linux-omap3-pm: OMAP3 kernel recipe to build Kevin Hilman's linux-omap-pm tree
5e88a54 zoom2.conf: initial zoom2 board support
51536c8 opensync: Remove further old code
e2182c5 gmp: 4.2.2 -> 4.2.4 (parts from OE.dev)
aa5cf6c moblin-web-browser: Fix pkgconfig dependency
952eb75 clutter-mozembedd: Update clutter 1.0 patch
be8558d moblin-web-browser: Cope with clutter 1.0
beefb3d clutter-imcontext: Update patch
ca9ae01 clutter-imcontext: Update SRC_URI revision information
e9e5bf6 moblin-fixed-revisions.inc: Change clutter-imcontext revision to work around build issues
b3194b9 gypsy: Fix DEPENDS on bluez
50c3af1 bluez-hcidump: Fix DEPENDS on bluez4
1aaa18b opensync: Remove old versions
c45fda1 libopensync-plugin-syncml: Update to 0.38
e831c3e clutter-imcontext: Fix for clutter 1.0
de7a002 clutter-mozembed: Fix for clutter 1.0
9078d4a libsyncml: 0.4.7 -> 0.5.4
456d919 openobex: 1.2 -> 1.5
433c2d2 bitbake: Remove persist_data domain renaming code as it appears to expose sqlite bugs and data consistency issues
ef9c095 bitbake: Make sure tables exist when renaming
64b0468 bitbake: Add a --revisions-changed commandline option to indicate when floating srcrevs have changed
231b5f6 bitbake: Add renameDomain and getKeyValues functions to the persistent data code
47fb695 bitbake runqueue: Add a minor speedup to the runqueue code
a6d608e bitbake runqueue: Add a minor speedup to the runqueue code
9930c66 libid3tag: Improve pkgconfig file handling and use autotools_stage class
9e9663a packagehistory.bbclass: Make package history package architecture specific
10a989f pcmciautils: Make sure to use flex
e1370cd connman-gnome: Convert to SRCPV
4909fcd libsynthesis: Drop patch since upstream has made similar changes now
31a29d2 pcmciautils: Bump PR after dependency changes since configure task can be influenced by this
388e267 clutter: Fix packaging of examples packages for 0.6 and 0.8 versions
52a7853 gail: Remove now unneeded custom staging function
a079b4c mozilla-headless-services: Convert to SRCPV
8e73d3d web: Fix owlmenu patch
ae6e0e2 pcmciautils: Add DEPENDS on flex-native
66c819f connman: Switch to SRCPV and bump PV
7369653 json-glib: Update version to 0.7.2
62d184e meta-moblin: Increase PV of SRCPV packages
d7d49ad meta-moblin: Increase PV of SRCPV packages
60688d8 meta-moblin: Convert remaining git packages to SRCPV
f9686c4 mozilla-headless: Allow PV to forwards
2e4fbb1 meta-moblin: Update SRCREVs
5c7facc mozilla-headless: Drop no merged patch
7370f7e connman: Update patchset
dc50ffb clutter-mozembed: Update patches
d776c57 poky-fixed-revisions.inc: Update and sync with meta-moblin revisions
1379a98 bitbake-dev: Remve the need for the cache for -e -b options
255f45b bitbake-dev: Improve showEnvironment functionality
e912493 bitbake-dev: xmlrpcserver - disable some verbose debug
eeb6556 bitbake-dev: Add taskdata infinite loop fix from upstream
60ba2a6 bitbake-dev: Fix cooker parser for cases there are no recipes
4ef8555 moblin-fixed-revisions.inc: Set revisions for libsynthesis and syncevolution
699ad05 bitbake: Make sure regexp patterns are consistent in providers.py
d02379d bitbake: Add a cache around PACKAGES_DYNAMIC regexps to help performance a bit
a6ca63d bitbake-dev: Note that python 2.6 is needed
94fe172 bitbake-dev: Catch up with bitbake changes
fa5d458 bitbake: Factor some runqueue code into common functions making things more readable
502bd2e bitbake: Fix a bug in runqueue and optimise slightly further
8f5363d bitbake: Optimise runqueue recursive dependency calculations removing a bottleneck in world builds
133e9e6 moblin-floating-revisions.inc: Add libsynthesis and syncevoltion
9439e99 autotools.bbclass: Fix to work with configure files with leading whitespace
ceb58d4 Add syncevoltion, libsynthesis
d4d60b9 Add libpcre from OE.dev
43e9441 Add boost from OE.dev
4108e6f moblin-fixed-revisions.inc: Fix broken moblin-gtk-engine SRCREV
710d5b5 root_ipk.bbclass: Give EXTRAOPKGCONFIG a default value
32d5444 bognor-regis: Add missing DEPENDS on gtk+
efd0004 rootfs_ipk.bbclass: Don't generate the arch.conf file, provide this as a packaged file in future
a0a195d moblin-floating-versions.inc: Allow clutter version to float again
6e58ebd Add moblin-feed-config-opkg (loosely based on angstrom recipes)
1893aa6 distro/moblin/include: Update fixed revisisons to a more recent known to work combination
b4bc6f9 poky-eabi.inc: Use gcc 4.3.3 for all machines
6aa20d9 moblin-floating-revisions: Tweak to a working configuration
5d51a7e packagehistory: Make sure package is inherited beforehand to preserve the PACKAGEFUNCS variable
fbee24d mutter-moblin: Add init script for plugins and populate the nbtk cache
3c47e34 libowl: Bump PR after staging changes
86e45a8 libowl: Use autotools_stage instead of broken custom staging function
915d918 libfakekey: Use autotools_stage instead of broken custom staging function
0a155f0 gnome.bbclass: Convert to autotools_stage
b006d15 libart-lgpl: Use autotools_stage
966ae73 gtkhtml: Use autotools_stage
ffe979a Add package_history.bbclass which checks generated package against previous package looking for problematic changes
f5d0882 xserver-xf86-config: The simplified xorg.conf shouldn't use legacy drivers, it confuses the xserver with multiple keyboards
1df8cad moblin-floating-revisions.inc: Fix clutter revision to avoid breakage
433f504 bitbake-dev: Turn parsing into a server idle callback allowing the client to interrupt parsing and improving user interactvity. Also now specify whether async commands need the cache or not
67d169a bitbake-dev: Fix to work with python 2.6 by dropping the now uneeded get_request overloaded function and using timeouts instead
41ff874 matchbox-session-netbook: Fix mutter commandline
303b091 mutter-moblin: Update after metacity -> mutter rename
7649c9d moblin-floating: Revert to release xorg versions for now
a2d95a6 mutter-moblin: Package plugin after metacity -> mutter rename
ef41659 libmatchbox: Drop 1.7 (old version), use autotools_stage instead of broken custom staging function
2b78868 package_ipk.bbclass: Solve opkg-make-index locking problem using flock
e7f1993 linux: Fix kernel.org mirror urls
1f86370 bitbake: Fix wget fetcher bug when only checking URIs and the download doesn't exist
1e63832 moblin-floating-revisions.inc: Set some revisions to make buildable config
db9e25c moblin-fixed-revisions.inc: Prefer gtk 2.16.4
df5bef3 gtk+: Add 2.16.4
8aaffe7 drm/mesa: Bump PR due to pkgconfig changes
f9f0753 connman: Drop now unneeded patch
b8b7652 pkgconfig.bbclass: No longer default to pkgconfig_stage code (breaks libdrm)
b2112e9 mutter: Update after recent upstream changes and renaming
87de4bd kexec: Update recentheader.patch to fix missing header
2133e2d moblin-floating-revisions.inc: Lock down mesa-dri for now due to upstream issues
ff077bc libxext: Update SRCREV
e2e8689 task-base: Remove sets usage, deprecated in python
a909986 xorg: Update to a buildable configuration
b3fd223 xextproto 7.0.4 -> 7.0.5
c6109ae pong-clock: Fix DEPENDS
efdb254 connman-gnome: Add missing DEPENDS on gtk+
3abe41b libx11-trim: Fix patches properly this time
3f8c6e6 inputproto 1.5.0 -> 1.9.99.12
4853c36 Drop libx11-trim patches
32cb1b0 moblin-gtk-engine: Add DEPENDS on gtk+
e2580df patch.bbclass: Fix up the environment for the patch resolution code
d5a1374 bitbake: Add build_environment function for building an environment based on the data dictonary
03873c0 preferred_versions_xorg.inc: Update git revisions to newer released versions
ea4be0e bitbake.conf: Sync with changes in OE.dev
41836f2 Add libext 1.0.5 and libxi 1.2.1
5377e4f libx11 1.1.5 -> 1.2.1
136fecf xorg: Convert SRCREV -> SRCPV
1661219 xserver-xf86-dri-lite: Convert to SRCPV
d27a265 mesa-dri: Update to SRCPV
264534d moblin-floating-revisions.inc: Add libxcb and xcb-proto versions, let mesa-dri float
254c710 Restore libxcb 1.1.91 and xcb-proto 1.2 for now
b93a3d1 patch.bbclass: Sync with OE.dev
54c44cb moblin-*-revisions.inc: Fix xf86-input-keyboard typo
f79c285 moblin-menus: Only apply patch against fixed revision now after upstream changes
3c1434d clutter-gst: Update patch against upstream
409cca8 mutter: Add a note about zenity
0e64c40 mutter-moblin: Package extra theme files and add bickley to DEPENDS
f0da36b moblin-web-browser: Adjust after upstream directory renaming
3f75df2 matchbox-netbook-session: Add pokyuser to the video group for access to dri
e95e065 moblin-floating-revisions.inc: Add floating versions for xf86-video-intel, xserver-xf86-dri-lite, libdrm, xorg-input-keyboard, dri2proto and libx11-trim. Bump mozilla-headless source revision
b05d6c2 moblin-fixed-revisions.inc: Set PREFERRED_VERSIONs for mesa-dri, xf86-video-intel, xserver-xf86-dri-lite, libdrm, dri2proto, xorg-input-keyboard
12f7cfe xserver-xf86-dri-lite_git: Drop DEFAULT_PREFERENCE
a299d7b xf86-video-intel_git: Drop DEFAULT_PREFERENCE
9999c8e dri2proto_git: Update PV
b523f9d scb-proto: 1.2 -> 1.5
817a58e libxcb: 1.1.91 -> 1.3
00145d9 icu: Add patch to fix issue with #elif and recent gcc versions
7cecb5b sqlite3: 3.6.10 -> 3.6.16
a36becf drm/mesa/xorg-video-inte/xorg-xserver: Update PV revisions
3cb7d38 poky-fixed-revisions.inc: Set SRCREVs for new meta-moblin packages
bdc3ec1 mutter-moblin: Package extra new files
895455b xserver-xorg: Add RDEPENDS on xkeyboard-config since the world is kxb centric
ebfc798 xserver-xf86-config: Clean up xorg conf file
b69163a xkeyboard-config: Add sylink rule configure option to work well with xserver
48870f6 nbtk: Add DEPENDS on clutter-imcontext
579e850 moblin-web-browser: Update against latest SCM changes
03cd4f4 meta-moblin/conf: Set SRCREV for clutter-imcontext
c8b8d8a clutter-imcontext: Add git version
0f05557 mozilla-headless: Add patches for revision a3e7c6626661
18b5cd7 clutter-gst: Fix to work with SRCREV 9db4a61a25677764bb927369c5c68ada958fb65c
96f56b2 patch.bbclass: Allow a patch to be applied or not applied against a specific srcrev
c68dd4f moblin-bleeding: Add bleeding moblin configuration
33beaee moblin-floating-revisions.inc: Add floating SCM version definitons
72c1f1d moblin-fixed-revisions.inc: Add initial locked down versions
e2dd24f task-moblin-x11-packages: Add newly added packages
cd60a7e meta-moblin: Add recipes for most moblin beta components
19e1d23 bitbake: puccho: Fix glade file location
ce55609 json-glib: Update gtk-doc workaround
0bf673e cdrtools-native: Add a patch from Richard to work around a glibc name conflict
7948c08 task-sdk-gmae.inc: update after bluez changes
aa16a97 mozilla-headless: Add patch to remove bad rpath-link options from the linker commands
865381d lttng-control: Fix missing recipe
ca2538b python-pygobject: Export STAGING_INCDIR and STAGING_LIBDIR to fix python-config failures
1c543df distutils.bbclass: Sync with OE
7901380 glibc: Add patch to avoid header issues after linux-libc-headers update
1acaab0 qemu: Fix a GL passthrough bug
1275962 lttng-control: 0.43 -> 0.67
7ea5d80 mutter: Switch to moblin repository, drop zenity requirement as its not used
e595bc1 poky-autobuild-notifier.bbclass: Remove unneeded recipients
30f949e clutter-gst: Update patch against upstream changes
2300c64 mozilla-headless: Update configurefix patch
e1ee329 mozilla-headless: Catch up with upstream changes
19592cf flac: Convert to autotools_stafe
826ed80 libsamplerate0: Convert to autotools_stafe
5dd9134 pkgconfig.bbclass: Fix typo
b6913a2 libpng: Use pkgconfig_stage
60c4cb5 openssl: Use pkgconfig_stage
82f808f sqlite3: Use pkgconfig_stage
d555a21 libgcrypt: Use pkgconfig_stage
65395e2 gtk+: Use pkgconfig_stage
3449884 dbus: Use pkgconfig_stage
1bc8523 gnutls: Use pkgconfig_stage
83e3a45 fontconfig: Stage .pc files
1247e2b pkgconfig.bbclass: Split out the staging function into its own class (pkgconfig_stage)
5d09a6b gnome-mime-data: Fix pkgconfig file path, use autotools_stage
c3e0da1 libcroco: Convert to use autotools_stage
078d43d telepathy-glib: Use autotools_stage_all now (its been fixed)
d950827 matchbox-panel-2: Convert to use autotools_stage
c4fc9e0 libdaemon: Convert to use autotools_stage
2684b19 packaged-staging.bbclass: Fix for packages which don't stage anything
0134269 task-moblin-tools: Drop old lttng from tools package for now
7e0fe46 libsndfile1: Convert to use autotools_stage
5009d0b alsa-lib: Convert to use autotools_stage
6f8d9ed mpeg2dec: Convert to use autotools_stage
c6b3f2d kexec-tools: Update after linux-libc-headers changes
e7be8af hal: Use autotools_stage_all
d0c00fd Redland is no longer a part of moblin so move to meta-extras
1dfc30d Remove depends on Redland as Bickley no longer uses it
de8ba46 glib-2.0-native: Stage .pc files
1f9196b quilt: Mark as broken for packaged staging acceleration
3a309d2 packaged-staging.bbckass: Add option of setting PSTAGE_BROKEN_DESTDIR to disable packaged staging acceleration for packages with broken DESTDIR handling
1f4391b poky-moblin.inc/poky-eabi.inc: Update linux-libc-headers PREFERRED_VERSION
d684d43 packaged-staging.bbclass: Turn off debug
5a4c688 packaged-staging.bbclass: Detect when we're using autotools_stage_all and don't hold the lock for as long when that is the case giving a significant performance boost with less lock contention and staging area file timestamp checking required
4d503cf native.bbclass: Drop INHIBIT_NATIVE_STAGE_INSTALL function and wrap logic in a do_stage_native() wrapper which packaged-staging can detect
f80563c cpan_build.bbclass: Just write a do_stage function, INHIBIT_NATIVE_STAGE_INSTALL isn't particuarly useful
83d4a2b libpng-native: Just write out a do_stage function, INHIBIT_NATIVE_STAGE_INSTALL is pointless
1c549c4 linux-libc-headers: 2.6.24 -> 2.6.29
f187869 pkgconfig.bbclass: Drop strange unneeded inherit base
5234f57 preferred-xorg-versions.inc: Tweak xf86-video-intel version number
e4a43a1 Add gnome-settings-daemon and libgnomekbd from OE but with fixed dependencies
4378f77 gnome-desktop: 2.26.0 -> 2.26.2
720909c libxklavier: 3.7 -> 3.9, stage correctly and fix pkgconfig file
c4bc453 clutter-mozembed: Fix patch against upstream changes
acc137c pulseaudio: Fix typo causing missing hal dependency
a76e86b mozilla-headless: Take the revision from a SRCREVMOZILLAHEADLESS variable
a70605c poky-fixed-revisions.inc: Set SRCREVMOZILLAHEADLESS
dbdf1c7 bitbake: Disable sortable revision for now
12d6acb0 python-gobject: 2.12.3 -> 2.16.0
de68762 scripts: Update qemux86 to use the vmmouse driver, not wacom and find moblin images
824dce8 Add linux-rp 2.6.29 (qemux86 only for now)
2715db5 mozilla-headless-services: Add json-glib to DEPENDS
191dee9 clutter: Convert SRCREV -> SRVPV
8dae438 bickley: Depend on clutter-gst, not clutter-gst-0.8
522cffd bitbake: Add PN to SRCREV keyhash in the persistent database to avoid conflicts between pacckages (from upstream bitbake)
5f37dfd Add meta-gnome overlay information for gnome packages which aren't part of standard Poky (based on OE.dev but with additions/modifications)
d10060c gtk-doc: Sync with OE but also convert to use BBCLASSEXTEND with overrides magic
a1830ff libgnomecanvas: Sync with OE.dev (and remove old version)
67955bf gail: Sync with OE.dev
8643766 bitbake.conf: Add definition of SRCPV so git revisions can be incrementaly numbered. Influence for this comes from Openmoko.
1e71be8 qemux86: Add xf86-input-vmmouse, swrast dri fallback, switch back to mesa-dri as the GL provider and drop synaptics input driver
be24aaa qemu: Drop a ton of old now mostly inappropriate patches and update the qemugl passthrough patch
3ac19a4 xserver-xf86-config: Set a netbook suitable resolution
9c57e46 xf86-input-vmmouse: Add RDEPENDS on xf86-input-mouse
f4d34a0 qemugl: Use mesa-dri as the main gl provider and just swap libs at runtime
111ea0d xorg.conf: Use vmmouse for qemux86
34a8958 Add xf86-input-vmmouse
c676e81 mojito: Drop unneeded gconf keys and remove undeeded sqlite3 dependency
f1619b3 packaged-staging.bbclass: Fix accidental debug addition
7c0eb93 gettext: Fix library packaging so -dev packages aren't pulled in
a25e703 mojito: Fix gconf name typo
1a21e6e packaged-staging.bbclass: Add support for mangling .la files so the staging directory path can change. Someday libtool will support sysroot but until then...
093a11c mesa-dri: Set to use the glx state tracker and don't package the EGL librbary versions in git version
c680236 dri2proto: Fix strange filename
4f3f5e4 formfactor: Add verison for menlow (leave cursor visible for now)
e9832b1 xf86-video-intel: Disable xvmc explicitly and don't use dolt in the git version
176fad8 xf86-input-keyboard: Upate git version PV
c74b9ae Add xkeyboard-config
a8427b9 xserver-xf86-dri-lite: Update git recipe (dependency on xkeyboard-config and need to enable dga for the intel 2D driver
46cbf48 xserver-xf86-common.inc: Make sure directory exists before installing
497fe49 xserver-xf86-config: Set AllowEmptyInput to no fixing chaned defaults in modern xservers
ae950c8 gtk+: Fix a string referencing bug (path sent upstream)
0223f45 unifdef: rename getline function to avoid conflicts with stdio.h definitions from glibc
9bb7f47 pulseaudio: Fix packaging of core/common libraries and stop development libs from entering images
72f6458 task-moblin-apps-x11-pimlico: No need to include web-webkit in the images anymore
412d815 connman: Start after dbus and use full path for binary in initscript
4ae5537 bluez: Update bluez4 version from OE.dev and drop bluez 3.x
3051258 task-base: Switch to bluez4
6a11cf7 bitbake.conf: Set PERSISTENT_DIR for the cache location so its common to all builds of different machines
b22b970 qemugl: Include headers and a pkgconfig file (from mesa) and add libxfixes to DEPENDS
87b512f connman: Start earlier in the init sequence
ea26c21 xserver-xf86: Split xorg.conf from main xserver package
185d8b0 udev: Allow standard users to access shared memory
c5e3def xf86-intel-video: 2.7.0 -> 2.7.1
2f6ad80 linux-moblin: Update menlow defconfig
8df390e poky-fixed-revisions: Remove duplicate (and incorrect) mutter SRCREV entry and bump psplash 421 -> 422
05cf769 dhcp: Use autotools class and remove broken configure call
7951647 xserver-kdrive: Add missing DEPENDS on bigreqsproto xcmiscproto
f2a9705 sanity.bbclass: Really fix TMPDIR change warning message
05a296b scripts/poky-env-internal: Add BB_SRCREV_POLICY to BB_ENV_WHITELIST
fc9d919 busybox: Add missing path in uducpc script
9b9152e bickley: Add runtime dependency on xdg-user-dirs
a47ba31 Add recipe for xdg-user-dirs
b63ec22 pulseaudio: Backport some patches from git trunk and add module-alsa-card to required modules list
ed0dea8 pulseaudio: Add hal-detect module and package pactl binary in the server
6ed027a xserver-nodm-init: Add ability to run X as a non-root user
8f32595 x11-common: Remove unused Xinit file, remove hardcoded user assumptions
5c96414 sudo: Add from OE.dev with tweaks to SRC_URI
14f39f3 connmand: Drop patch merged upstream
ba7f2cc initramfs-live-install: Update script to handle udev automounter issues and mount point name that doesn't clash
91bbdf2 xserver-xf86-dri-lite: Add missing DEPENDS on dri2proto
4e1e405 xserver-xf86-dri-lite: Add missing DEPENDS on dri2proto
5adadc3 dhcp: 3.0.2 -> 4.1.0
1dfcc21 connman: Various fixes so it starts working properly
c321cda u-boot-omap3: Fix SRC_URI
4f5d44c initscripts: Check link exists in volatiles script
5638a3e poky-fixed-revisions: Bump psplash SRCREV
5381d16 json-glib: Fix SRCREV
fbb79a7 poky/moblin-fixed-revisions.inc: Make sure SRCREVs are set appropriately
35bb05b task-moblin-x11-netbook: Drop missing matchbox-session-netbook for now, add bickley and mojito
79850d0 Add redland
8818107 busybox: Disable parallel make
236b0c2 packagekit: Disable browser plugin
b0ced1c netbook/menlow: Don't generate jffs2 images by default
81acc39 poky-image-sdk: Drop dbg-pkgs, they're just too large to make sense all in one
2f67d40 moblin-image-sdk: Drop dbg-pkgs, they're just too large to make sense all in one
e8201f5 clutter-cairo: From clutter 0.9 onwards, cairo is part of clutter itself
6a444ca gst-ffmpeg: Bump PR after configure changes
9e73dde task-poky-tools: Drop exmap for now
2ed6c62 poky-fixed-revisions: Update SRCREVs for clutter packages
342a1a5 monint: Don't try and strip bianries
14a5b7d gst-ffmpeg: Disable pic due to register issues (fixing build problems)
e0839cf world-broken: Exclude exmap-console and xf86-video-psb from world builds
fb26ad8 clutter-0.6: Fix symbol conflict with libc headers
a844e01 rt2860: Drop since there is a better version in the kernel staging tree now
3c759ae clutter-mozembed: Add missing DEPENDS on clutter
7556381 qemu: Fix for machines without zlib headers/library installed
362d388 alsa-utils: Fix ncurses build failures
4e3afe5 qemu: Switch to git and version 0.10.5
79b7a56 opkg: Disable Werror, too many false positives with gcc 4.3.3
d874966 opkg-sdk: Bump PR after recent changes
619c133 alsa-tools: Add missing DEPENDS on ncurses
ec4d79d sanity.bbclass: Fix the warning message above tmpdir moving to point to the correct path
8587862 opkg: Fix sighandler compile error (patch from upstream)
525edb3 opkg: Fix sighandler compile error (patch from upstream)
7f4d8d1 settings-daemon: Add sound theme gconf key handling
2b6bce3 speex: Make sure all libraries are packaged
f06e99d as-needed.inc: Blacklist pulseaudio due to its circular librbary dependencies
98d05be moblin-fixed-revisions.inc: Fix hal-info version typo
856af3f libcanberra: Add patch to fix failures when the fallback theme is missing
7d3cc76 task-moblin: Add alsamixer and pulseaudio-server
45543f7 consolekit: Add 0.3.0 from OE but disable policykit interaction
d7568d3 pulseaudio: 0.9.12 -> 0.9.15 plus several build/packaging fixes and enabling dbus/consolekit/hal/x functionality
ddc0eec e2fsprogs: Don't install blkid as its now provided by util-linux
e6a3149 gcc: Add 4.3.3 and switch to for Moblin
f887fcd linux-moblin: Improve defconfig for netbook
af4155d connman: Install test scripts
7a3ad27 udev-141: Add missing udev rules
edc9a00 qemu-sdk/qemu-native: No longer need to depend on gcc 3.x
3af2755 pulseaudio: Allow empty main package for dependency chains
5b5ed4c libatomic-ops: Allow empty main package for packages dependency (library is only static)
114158d mozilla-headless: Make sure JS_THREADSAFE is always set
c431f2b libgdbus: Fix SRC_URI
f5cf7ef alsa: Upgrade to 1.0.20
6c5d819 mozilla-headless: Hardcode compiler options for now
25185d5 xserver-dri-lite: Drop dri2 version and enable dri2 by default
14cba80 udev: Add 141
d6cfaee util-linux: Fix compile of libblkid (from patches from OE.dev)
99f66c1 linux-moblin: Enable staging drivers in the kernel
b0eb2f4 moblin-fixed-revisions.inc: Use the more recent dbus
7d2f5ce mozilla-headless: Bump revision used
40afa0a initscripts: Since ld.so.cache is in /var/run, make sure the version in /etc/ is used as a fallback
18f401d connman: Improve the configure options
cda31eb clutter-mozembed: Package some missing files
e7f4dd8 psplash: Bump SRCREV 412 -> 420
8534b09 dbus: Add 1.2.14
b15cfd5 ldconfig-native: Make it work for 32 bit targets from 64 bit build machines
a811131 base.bbclass: Update to work with systems where install won't overwrite files
514afcb xf86-video-psb: Fix SRC_URI
bc1c9bc world-broken.inc: Fix syntax
e297c2f world-broken.inc: Add helix-libs and clutter-helix
c5c33ef libcanberra: Pass the --disable-ltdl-install configure option and DEPEND on libtool
6c59a75 hal-info: 20080508 -> 20090414
24bd005 hal: 0.5.11 -> 0.5.12rc1
e010c6c e2fsprogs: 1.41.2 -> 1.42.5
e2eaac6 util-linux 2.12r -> util-linux-ng 2.15
02def14 mozilla-headless: Remove strange hardcoded paths
92facff poky-moblin.inc: Set gcc versions correctly
a8f6bcf glibc: Add support for /etc/ld.so.conf.d/ files
dd0b54d samba: Fix header file to include signal.h, fixing compile failures
df0d349 poky-fixed-revisions.inc: Update glib-2.0 versions
4d4c8f5 mozilla-headless: Add an ld.so.conf.d addition to make sure its libraries are found
27aeae5 glib-2.0: 1.18.1 -> 2.20.2
81edb3c x11-common: Add support for starting xdg autostart .desktop files
5c11f31 task-moblin-x11-netbook: Drop networkmanager-applet
9356620 xdriinfo: Use virtual/libgl instead of mesa
814700d Move libsampletate and libsndfile from meta-openmoko -> meta-moblin
b8abc2d libnotify: Add missing DEPENDS on dbus-glib
3593279 poky.conf: Switch from libx11-diet to libx11-trim for less headaches
17ab356 poky-fixed-revisions.inc: Set some extra SRCREVs
f067655 world-broken.inc: Add gobject-introspection, drop helix as COMPATIBLE_HOST should take care of that
b21b339 clutter-helix: Set COMPATIBLE_HOST
e223f6a libx11: Exclude from world builds so muliple versions aren't built. When needed the correct version will be automatically built
5fcdc32 mozilla-headless: Bump SRCREV
5e986a2 bickley: Add DESCRIPTION
0808818 conf/distro: Update PREFERRED_VERSIONs
0d3b185 gnutls: Disable guile
b4980e3 clutter: As standard DEPEND on virtual/libgl, not mesa
6aa642c qemugl: Fix DEPENDS on virtual/xserver to be on virtual/libx11
0f3cf65 connman: Update to point at the correct upstream
4519a40 connman-gnome: Add
8f66ea0 icon-naming-utils-native: 0.8.2 -> 0.8.7
0e96baf Add libffi 3.0.8
86984e2 e2fsprogs-native: Actually stage the useful binaries
40bb7a3 networkmanager: Update to work with recent libnl
e423ead gtk+: Install the gtk-builder-convert python script somewhere where the system will find it
8cec085 libnl: 1.0-pre8 -> 1.1
ff59ace clutter-mozembed: Add missing dependency on mozilla-headless-services
b7a77fa bickley: Add missing dependency on samba for libtdb and package dbus services files
57b5ef0 libnotify: Add from OE
6cce850 samba: Add from OE but split libtdb out into its own package
cd5fa1e telepathy-glib: 0.7.11 -> 0.7.29
c2ac572 networkmanager: Add DEPENDS on policykit
9020811 gobject-introspection: Add an initial version, not functional yet
29fb246 netbook: Disable rt2860 for now
e6d9631 mozilla-headless: Convert to hg and add mozilla-headless-services
59bb17f clutter-gtk: Disable introspection
ffc7e98 clutter: Disable introspection
7af06db clutter-mozembed: Update patch against latest git
f5e55e0 mojito: Add missing dependency on gnome-keyring
fe45700 libccss: Use upstream for source
81ff3a9 bitbake: Update to work without warnings with python 2.6
22a4c4d gtk+: Append to PACKAGES_DYNAMIC, don't overwrite the default
542eb3b eee901: Drop eee901 as superseeded by netbook
9539b49 gnome-keyring: 2.20 -> 2.26.1
e17a3ce libtasn1: Add from OE.dev with improvements for Poky
d9e6cab mutter: Disable introspection for now
f6cb822 twitter-glib: Disable shave and introspection to avoid build breakage
9db2b57 python-native: Fix the _ctypes module (and remove some dead files)
06e878c sato-icon-theme: Remove recursive include. How this never errored before now, I have no idea...
c009172 bitbake-dev: Sync with upstream
107a9da bitbake: Merge further fixes from upstream 1.8 branch
1ca9806 bitbake: Sync git fetcher with changes upstream
62d3720 scripts: Remove autobuilder scripts
44a8819 bitbake: Make sure existing environment variables are properly exported
6a6f5cc Merge branch 'marcin/trunk' of git://git.pokylinux.org/poky-contrib
0adc74b beagleboard: added 2.6.29 kernel from OE
a8e1e02 xserver-dri-lite: Add version 1.6.0
4f83464 handbook: Add more information about extending Poky
3927e38 Merge ssh://gitserver@git.pokylinux.org/poky
d65be3d initramfs-live-boot: Fix script when multiple mounts are present and the last one isn't the correct one
ed419e2 tasks-netbook: Catch up with metacity-clutter -> mutter renaming
2096c31 bitbake.conf: Always add full debug information and increase the default image slack space
b2a619b metacity-clutter: Rename to mutter and point at the new upstream
ef5600c conf/distro/include: Update various versions after recent changes
912a522 libunique: Add 1.0.6
d880beb clutter: Refresh patch
bb2ce06 clutter-mozembed: Refresh patch
622368d mojito: Package the dbus files
a1b04df mozilla-headless: Use the upstream hg repository now and add missing DEPENDS on libidl
9399253 libsoup: Add missing DEPENDS on sqlite3
5c185c4 json-glib: Make sure the autotools m4 files are found, unbreaking the build
5264d4b bitbake: Fix a bug in the hg fetcher
5df6dea puslseaudio: Upgrade to 0.9.10
12856d9 sqlite: 3.6.7 -> 3.6.10
1370ba3 libdrm: Package test utils
31f3e71 xf86-video-intel: 2.6.99.903 -> 2.7.0
ad0c05d libnl: 1.0-pre6 -> 1.0-pre8
f114fd2 linux-moblin: Switch to 2.6.29.1
e23c356 libjana: revision 732 -> 749
9c4f33a mojito: Disable PARALLEL_MAKE, the autofoo is broken around the generated files
80b4dd2 xserver-xf86-dri-lite: Use the virtual mesa dependency instead of hardcoded mesa-dri
d620ad6 libdrm: 2.4.4 -> 2.4.7
1b4c8ad xf86-input-evdev: 2.1.1 -> 2.2.1
52cd772 xf86-input-synaptics 0.99.3 -> 1.1.0
1106f8a xf86-input-synaptics 0.99.3 -> 1.1.0
3f438ba xf86-intel-video: Drop now unneeded dri2 version
ebc082e xf86-video-intel: 2.6.0 -> 2.6.99.903
dfcd318 mesa-dri: Use master branch for git version
25dc55d mesa: Drop stale files
7d5759a mesa: Upgrade 7.2 -> 7.4
5a2365d mojito: Update FILES after recent source changes
bdc077b libsoup-2.4: Add 2.25.29 (still 2.4 ABI)
01b99d5 Add libproxy
f94bd6b package bbclass: add an 'allow_links' param to get symlinks packaged, usefull for splitting out libraries
58ffd5a base.bbclass: Add subdir feature to SRC_URI entries (from OE)
9b6df99 e2fsprogs-native: stage everything like it is done wuth non-native recipe
784e113 libice: added native version
a102c05 libsm: added native version
3c8898c libxt: added native version
7a5b041 Merge commit '84f0e3128b1ac1d2299e0a3ebb7117c775dfe16f'
88d8974 linux-moblin: Build fix
49ca46f Merge ssh://gitserver@git.pokylinux.org/poky
00dccf4 linux-moblin: Update psb driver
84f0e31 dbus: make dbus-native do not use update-rc.d (removes harmless warning)
caa983d checksums.ini: added some new entries
861933a checksums.ini: merge entries from BUG Linux
440ac10 meta-moblin: Add bickley, json-glib, libccss, librest, moblin-menus, twitter-glib
a397fbc linux-moblin: Update patches
ccfff6c Merge branch 'fix-opkg-build' of git://git.lespiau.name/poky
1e4f72f linux-moblin: Add 2.6.28+2.6.29-rc2 version
10f46e0 linux-moblin: Cleanup patch whitespace
53973f2 opkg: fix build with gcc 4.3.2
09bf864d libidl: 0.8.3 -> 0.8.12
be10b46 base.bbclass: Use explode_deps from bb.utils and remove the obsolete base.bbclass version
c2c16bc base.bbclass: Move package metadata handling functions into their own class file
0903f6a linux-rp: Update qemuarmv6/qemuarmv7 defconfigs
a6789f5 libdrm: Cleanup poulsbo patch slightly further
637183e qemu: Update 6374 -> 6477 to fix absolute position device issues
942c232 mesa: Drop 7.0.2
f06b34b libdrm: Add patch for poulsbo
5638322 menlow: Update to use the same xserver/mesa as netbook
31ab259 xf86-video-psb: Update to work with modern xservers
a1b17ee linux-moblin: Update psb driver patch
cc01c77 meta-moblin: Drop now uneeded libdrm-psb
e5f1566 meta-moblin: Drop now uneeded xserver-xf86-lite
bcf14a3 sanity.bbclass: Fix error message when not having g++ on build
af90308 shell.py: stage is called populate_staging
80f0032 poky-moblin.inc: Switch to gcc 4.3.2
5a9a480 netbook/menlow: Add core2 as an architecture
6147dc3 menlow.conf: Prefer linux-moblin as the kernel
8e2451f linux-psb-modules: Drop as now uneeded
c9f9486 linux-moblin: Add patch to add the psb driver directly to the kernel instead of being standalone
837119e linux-mid: Drop as linux-moblin now supports menlow
514aa59 libdrm-psb: Update to use a 2.6.27 kernel and simplify patches
4b7ef3d Add clutter-mozembed
53314a0 Add mozilla-headless
463c2d6 metacity-clutter: Add cross compile patch so compiles on x86_64 work for i386 targets
d9c8f31 metacity-clutter: Fix after recent updates
deadb52 mesa: Exclude mesa packages from world builds to reduce breakage
e1d6280 bitbake.conf: add IMAGE_ROOTFS_SIZE (from OE)
edbdbd1 exmap-console: Add missing DEPENDS on glib-2.0 (from OE)
4d7b70c base-files: Add /etc/shells file
c92acf4 image.bbclass: Use IMAGE_ROOTFS_SIZE if the image will fit into it and only add extra space if the image is too small (ported from OE by hrw)
7b6ad5b Fix postinstall scripts not to use IMAGE_ROOTFS direction by use D instead. Based on a patch from Carl Simonson <simonsonc@gmail.com>
75f3ca5 networkmanager: Add a missing configure dependency
b74734d poky-image/moblin-image.bbclass: Fix a typo noticed by Mike Turquette
063f2ef Add 2008q3 CSL toolchain support
aa8de0e mozilla.bbclass: Fix pkgconfig usage for pkgconfig sysroot
072545b scripts/poky-qemu-internal: Add support for GL passthrough in qemux86 images
b7fd2b7 qemux86: Convert to se xserver-xf86-dri-lite
db3dd3a qemu: Upgrade to svn revision 6374 for working passthrough
a13faf3 qemugl: Install the library in the standard location
d2ebf91 Add  xf86-video-vmware driver
e121f9e scripts/runqemu: Factor image location code into a shell function
0e22433 qemu: Add x86_64-softmmu target
1884c24 clutter: Revert to a revision known to work for various subpackages
0d5a260 qemu-sdl: Remove i386-linux-user target for now
544361e clutter: Fix various missing DEPENDS on clutter and update clutter SRCREV
b1bf5e4 poky-fixed-revisions.inc: Add SRCREV for qemugl
ec39185 Add qemugl
f6ea2f8 qemu: Add host gl support for qemu x86
7fc734e world-broken.inc: Add minimo, helix-libs and xlogo
2da9038 poky-floating-revisions: Disable PREFERRED_VERSION statements for now
bb98685 bitbake: fetch/init: Add 'HOME' to list of variables exported when runnig fetcher commands
294a1ee libxi: Increase SRCREV
41523a7 clutter-0.8: Increase the git revision used
6b375ac libjana: Switch to gnome svn and update the revision
4614e87 Drop matchbox-session-netbook
ae80a42 meta-moblin: Drop various matchbox packages from 'moblin' images
f0a876b Add latencytop 0.4
0e7c836 meta-moblin: Convert from recipes to use the autotools_stage class
cd9ad54 meta-extras: Convert from recipes to use the autotools_stage class
4cdb611 Drop sqlite3 from meta-extras
e9ee1e5 xserver-xf86-dri-lite: Add patch to disable dolt and fix build breakage
b010c24 poky-fixed-revisions.inc: Update xserver-xf86-dri and inputproto revisions
05c1fab menlow: Add xf86-input-evdev to list of drivers to load
d97dbdd xf86-video-intel: 2.4.2 -> 2.6.0
de44ac8 conf/distro/include: Update PREFERRED_VERSIONS after various recent changes
2db2959 libxcb: Add xcb-proto-native to DEPENDS
d290698 randrproto: 1.2.2 -> 1.2.99.3
74a6e3e dri2proto: 1.1 -> 1.99.3
b974901 libxrandr: 1.2.3 -> 1.2.99.4
e022281 xf86-input-mouse: 1.3.0 -> 1.4.0
ef24ac2 xf86-input-keyboard: 1.3.1 -> 1.3.2
8ed9449 xf86-input-synaptics: 0.15 -> 0.99.3
7c73052 xf86-input-evdev: 2.0.4 -> 2.1.1
d7c383f xcb-proto: Add 1.3 (non-default)
1ce1d4d libxcb: Add 1.1.91 and 1.1.93 versions to replace 1.0. .93 can't be default as the xserver doesn't support it yet
98fa049 sdk.bbclass: Ignore -sdk suffix warnings for gcc-cross-sdk
7e0dfa2 Drop unneeded tune-atom.inc file
5d12760 libdrm: 1.4.0 -> 1.4.4
68cc158 moblin-fixed-revisions.inc: Drop unneeded versions settings
f3edcec hal: Delete old hal and hal-info versions
29fd473 util-macros: Add hack for the loss of the xaw.m4 file until xorg-apps are released which don't use it
b10b195 dbus-glib: 0.76 -> 0.78
932fc6a apr: Disable checks for a system libtool, we don't need that
123b099 task-moblin-x11-netbook: Bump PR
ef0b90b gupnp: Update to latest releases, add gupnp-av, stage the binding tool into native staging (its a script so thats allowed)
0acce24 Drop linux-moblin obsolete kernels
f51973f apr/apr-util: Fix some other config path gremlins breaking builds
a43863b apr: Remove workdir path references from installed apr files
669aeb7 dbus-glib: Use the binding tool from PATH
1daca59 subversion 1.4.5 -> 1.5.5
9602318 task-moblin-sdk: Add subversion and git
eb72830 Add apr, apt-util and subversion based on recipes from OE with tweaks from Josh/me
3023816 image.bbclass: Generate the image after running the kernel modules and ldconfig commands, not before
b402db4 gnome-vfs: Only apply the RRECOMMENDS to the main package, not for example the -doc package
0341841 update-rc.d.bbclass: Only change the main package RDEPENDS, not all the RDEPENDS as this affects things like the -doc packages
8101d6f gcc: Disable patches not needed for 4.3.x
bd43b80 git: Add a non-native git package for moblin-sdk
b040233 omap3-sgx-modules: recipe to build sgx modules using the kbuild system from the GPL'ed imgtec sources (from OE.dev with added COMPATIBLE_MACHINE)
3ec9a7d bitbake: Fix wget fetcher to better handle urls with ; followed by parameters in the url
fa89b73 scripts/poky-autobuild-moblin: Add moblin-uricheck target support
a65bb50 dbus-glib: Fix introspection configure option
48b487d e2fsprogs: Add darwin override for EXTRA_OECONF
7b281a3 native.bbclass: Add virtclass-native to OVERRIDES and use in fakeroot to function correctly
34fa658 dbus-native: Bump PR
f0b6ce8 dbus-glib: Factor into a common .inc file and cleanup the recipe using autotools staging
0d8a8c8 dbus-native: Generate the dbus-bus-introspect.xml so dbus-glib recipes don't have to find the dbus source. Pass the location of the file to dbus-glib* with the --with-introspect and drop the now unneeded patch
eae7eb5 scripts: Update qemu scripts with changes in recent qemu calling conventions and the switch to ext3 images
e45a4a8 libx11-sdk: Provide the correct virtual package
e247f22 sdk.bbclass: Don't special case virtual/ dependencies as this breaks things like libx11
fb9196d native.bbclass: Handling remapping of PROVIDES similar to sdk.bbclass
55be33f qemu: Upgrade to latest svn removing a ton of merged patches (yay)
5273e39 metacity-clutter: Add intltool to DEPENDS
86ee539 metacity-clutter_git: Set correct gconf keys after installation for compositing.
78f5f8d Various fixes after recent commit breakage
bb2a5c9 glib-2.0: Revert glib-2.0 S variable removal
f091e6c Remove unneeded S variables
467b5bc coreutils: Convert to BBCLASSEXTEND
66b6014 fakeroot: Clean up and convert to BBCLASSEXTEND
8bc4105 fakechroot: Clean up and convert to BBCLASSEXTEND
d0cff01 flex: Clean up and convert to BBCLASSEXTEND
a4ef0bb e2fsprogs: Drop stale unused patches, clean out unneeded metadata
1dc1601 expat: Upgrade native/sdk versions to 2.0.0, use BBCLASSEXTEND, drop 1.95.7 version, clean up recipe massively
aa82010 bzip2: Drop 1.0.2 version
575235f curl: Get rid of old fashioned broken stage functions
c4a39f6 zlib: Clean up recipe and use BBCLASSEXTEND for native and sdk versions
64c7fa4 xorg: Remove unneeded XORG_PN settings and replace some native/sdk recipes with BBCLASSEXTEND
772ec7d bitbake-dev: Add BBCLASSEXTEND support
ee0faf1 native/sdk.bbclass: Handle DEPENDS and PROVIDES fields magically, remove a number of xorg sdk and native packages replacing with BBCLASSEXTEND
ade351e bitbake: Add in code to support the BBCLASSEXTEND variable. Virtual native/sdk recipes then become possible
28fd9da bitbake/cache.py: Simplify logic
250b021 bitbake/BBHandler.py: Move handler finalisation code into a separate function
bb80287 bitbake: Sync with upstream after 2.8.12 release
8fa334d dbus: Drop old 1.0.* and 1.1.* versions
23486c1 gtk+: Drop old 2.10.* and 2.13* versions
cf093fa autoconf: Add 2.63 (leaving GPLv2 2.61) leaving 2.61 as default since glib-2.0 breaks with 2.63 (site files aren't being included)
2d749dc xorg-*common.inc: Use BPN instead of PN
f8a2303 Drop now unneeded FILESDIR and S variables from various recipes
61d8ea7 bitbake.conf: In SPECIAL_PKGSUFFIX -cross-sdk must come before -cross and -sdk or it doesn't work as expected
62f16a6 libtool-native: Stage libltdl headers (from OE)
8ce2175 Add m4 1.4.12 but leave 1.4.9 as its GPLv2
ba2b8cb automake: 1.10.1 -> 1.10.2
4bb83f1 quilt: 0.45 -> 0.47
01e0758 libtool: Drop old version 1.5.10
01793c5 base.bbclass: Remove pointless expand call
3ab2ff7 base.bbclass: Add metadata revision handling for git (from OE)
1d89595 base.bbclass: Add unpack handling for .jar files (from OE)
6552990 bitbake.conf: Default to an IMAGE_FSTYPES of tar.gz instead of the less useful jffs2
01ceeed bitbake.conf: Rename DEBPV to EXTENDPV to sync up with OE
94c895a bitbake.conf: Create BPN variable containing the pruned version of PN with various suffixes removed and use this for S and FILESPATH. This uses naming from OE but with improved code
fe0e39d pax-utils: Upgrade 0.1.13 -> 0.1.19
93df528 binutils: Drop versions 2.17 and earlier
3fc0469 bintuils: Add 2.19 (from OE)
f8e4a75 poppler: 0.6 -> 0.9.2
9d88f99 resolvconf: 1.42 -> 1.43
7695704 bitbake: Add bb.utils.prune_suffix()
2c70bf4 bitbake.conf: Drop stale unused MANIFEST variable
102a842 libsm: Add missing DEPENDS on e2fsprogs for uuid
3f4a6d8 gcc: Drop unneeded patch
1fc2929 libpciaccess: Drop unneeded patch
f8daac5 pciutils: Upgarde 2.2.4 -> 3.0.3
78456fa strace: Fix SRC_URI
1357f75 strace: Upgrade to 4.5.18
83494fc sqlite3: Upgrade to 3.6.7, drop old versions
141b7fc xextproto: Remove patch added upstream and now unneeded
71fc43d xorg-proto: Upgrade various packages to the latest releases
711650f poky-fixed-revisions/preferred-xorg-versions.inc: Update PREFERRED_VERSIONS to reflect changed package versions in recent updates
2a94861 xorg: Update various packages to the latest releases and remove old versions
5954823 task-moblin-boot: Fix COMPATIBLE_MACHINE issues
f08f0ff cairo: Remove now unneeded do_stage function
ece77e6 pixman: Drop old version
fd0f817 pango: Drop old versions
82cdeb2 atk: Remove old versions
fd37f94 glib-2.0: Drop old version
d1b0e1e Drop unneeded mtn2git files
72a7dc3 dpkg: Drop old version
4f2bb36 cairo: Drop old versions
90f97b6 moblin-images-live: Move common code to the .inc file
323ba21 moblin-image-live: Drop since this is the same as moblin-image-netbook-live
d170d89 check: Drop old version and use autotools_stage
433fca7 Set COMPATIBLE_MACHINE for menlow recipes
0f4433e task-moblin-x11-netbook: Bump PR
c8a24cd meta-moblin: Add initial menlow support
459a7f4 poky-fixed-revisions.inc: Add entry for mesa-xlib
ae64de5 mesa: Set PROVIDES correctly and alow building of an empty PN package for now
fcb1791 classes/autotools_stage.bbclass: Add autotools_stage class to further recipes to simplify recipes using standard autotools
e380b48 classes/autotools_stage.bbclass: Add autotools_stage class to simplify recipes using standard autotools
f9f549d distro/poky.conf: Disable svn revision handling since svn is obsolete and no git revision handling function is present yet
428e022 image-minimal-initramfs: Add base-passwd to images to avoid udev complaints
48c50c2 hicolor-icon-theme: add size/stock directories to hicolor for compatibility with OpenMoko
a42718c scripts/poky-autobuild-postprocess-moblin: Share toolchain/sdk output
01121bc clutter: Fix enable_tests patch for recent changes
0f918b4 scripts/poky-autobuild-moblin: Update to share moblin-incremental images
be30e75 task-moblin-x11-netbook: Allow the user to append to the list of moblin packages
c29128b poky-fixed-revisions.inc: Fix whitespace problem
81ddcf3 poky-fixed-revisions.inc: Fix tidy SRCREV
48d2165 poky-fixed-revisions.inc: Set SRCREV for tidy, aaina and table properly
fc859a8 clutter: Convert from svn to git
c3f6d46 scripts/poky-autobuild-moblin: Add rm_work
dd34449 metacity-clutter: Fix .pc file issue
bc1ce63 scripts/autobuild-moblin: Configuration fixups
1dd27ec librsvg: Set a SRCREV (and also for tasks)
1acc612 poky-fixed-revisions.inc: Update metacity-clutter SRCREV
0dd091d librsvg: Add 2.22.3 and svn versions
5486cc4 meta-moblin: Add gnome-menus 2.24.0 (from OE)
36636a9 meta-moblin: Add libjana (from meta-openmoko)
57ba4a2 meta-moblin: Add taglib 1.5
fe338b3 pimlico: Update pimlico packages to reflect the new upstream svn urls
7ffb598 intltool: 0.37.1 -> 0.40.5
ee1f065 bitbake: Make sure the git remote head viewer preserves the username
f9dbbf4 gitignore: Update entries to match various meta repositories
7504867 hicolor-icon-theme: ship a custom index.theme which includes the Hildon icon sizes
9ca832b openmoko-icon-theme-standard2: add a compat package which symlinks the new icons into hicolor
da743fb scripts/poky-qemu-internal: Add usb commandline to nfs mounted images
ffdec42 bitbake/bitbake-dev: Sync with upstream
4be017e poky-external.inc: No need to the TARGET_*_prepend directives after the external-poky-toolchain recipe changes
f1bac68 external-poky-toolchain: Add include and lib files to the staging sysroot removing the need to link against two trees at the same time
73b2200 handbook: Correct a bunch of misc typos.
bcb58a0 meta-toolchain: Fix problems introduced by prefix variable value changes
1732e55 Bump matchbox-desktop srcrev
c1a12b7 Adds username support to the git fetcher, and exports SSH_AGENT_PID + SSH_AUTH_SOCK
a8b0e8a scripts/poky-env-internal: Add SSH_AUTH_SOCK and SSH_AGENT_PID to BB_ENV_WHITELIST
63c279e Move check, policykit and xerces-c to meta-moblin
8a7ecd5 handbook/faq.html: Fix cut and paste error
f6c65b8 distro/include: Add poky-external-csl2007q3
b3e49b6 external-csl-toolchain: Add 2007q3-51 and update 2006q3-27
7cd5d53 handbook/faq.xml: Add entry about Ubuntu Intrepid
5b44f42 udev-124: Fix firmware loader script name and bump package PR
d38f630 meta-moblin/xorg-app: Add missing include file
70203a0 Move pam, packagekit, monit and gnet to meta-moblin
11f0e58 libsoup: Remove strange staging hacks fixing incompatibilities with libsoup-2.4
181042f handbook: Reference git instead of svn
f379d79 meta-moblin: Remove files already in meta
d0e82a3 Moved gypsy from meta-extras to meta and upgraded it to 0.6
4a4eaec meta-moblin: Add extra xorg-app, xorg-data and gvfs packages from OE
d7aaf31 meta-moblin: Add basic qt support (from OE)
14ecbd6 Skip useless and memory-based folder when create the initial file list.
199828c bitbake-dev: Add basics of "puccho" image builder UI
340b2b5 bitbake-dev: Refactor goggle to pull out useful components.
49e8c06 bitbake.conf: Allow TMPDIR and DEPLOY_DIR_IMAGE to be overridden
f94ff99 bluez4: Bump to 4.17
fdc8250 upgrade hal to 0.5.11 and hal-info to 20080508(from OE)
1eb0272 upgrade sqlite to 3.6.4
93ae0be upgrade PR of sreadahead_0.02.bb
6f7afab sreadahead: Add a patch to set the app to io-idle running status.
0c2a3df upgrade eds-dbus to 2.20.0
0e89124 upgrade dbus to 1.2.4
d3bd1e8 upgrade pango to 1.22.2; disable pango tests
d12f673 upgrade cairo to 1.8.2; add patch to fix its libtool issue
ba60140 upgrade pixman to 0.12.0
57efa3c upgrade atk to 1.24.0
5698e0b Fix qemu build on 2.6.27
13ee303 image.bbclass: Fix typo
793dc94 image.bbclass: Add function to write out an image manifest
e437435 bootimg: Let mkdosfs choose between fat12 and fat16
2685507 initrdscripts: Fix the init scripts to support the no fb case.
cf96c4c psplash: Bump SVN revision to support the no fb case.
31aee0a image.bbclass: Add routine for disabling x startup when needed
1782861 Add missing ";" to the ROOTFS_POSTPROCESS_COMMAND string
69fb780 meta-toolchain: Make sure the opkg config files are clean to start with when rebuilding them
b618bcf gstreamer: Fix a problem with configure if check has already been built
5751ea7 Poppler moved from meta-extras to meta.
2761f49 New recipe for Smart 1.1.
6f92ab0 bitbake-dev: Ignore SkipPackage and FunFailed errors when looking for python task failures
4f5bb46 bitbake-dev: Fix python function task execution failure handling
6d7f3cb qmake2-cross: Fix the driectory the qmake binaries are installed into
fc50fe5 bitbake-dev: Always include logs for now
826cd19 meta/classes/rootfs_*.bbclass: Fix unset variable
ab3b457 bitbake-dev: Fix knotty fatal message handling and ignore configparsed events
5ef71a4 distutils.bbclass: Remove .pyo object files before packaging.
5be6bb0 bitbake-dev: Handle fatal events correctly
f3a6210 mtpfs: removing package
94fed7b conf/distro/include/poky-fixed-revisions.inc: Set revision for gnet
88cc024 gnet: Use SRCREV, not SRCDATE and use http protocol for svn
35994a0 Merge branch 'master' of git@moblin-mdi.jf.intel.com:poky
f473d75 bluez: Upgrade to more recent 3.x versions and add bluez 4 from OE
5be917f libusb: Add versions required for recent bluez
1c05260 librds: Initial commit, version 0.0.1
e7e2009 bitbake-dev: Fix exit code value handling
67aaaca mtpfs: Initial commit
186d324 fuse: Initial commit, version 2.7.2
c79b332 bluez-utils: Bump to 3.30
13bbd6e gnet: Fix pkgconfig issue
fffba25 Merge branch 'ivi'
690562b libexif 0.6.16 from OE
47b05da gnet from OE plus a configure fix for cross-compile environments.
436c5f4 classes: Add mechanism to install packages into images only if they've been built
1e967ea scripts/poky-env-internal: Fix PATH
1e6f214 monit 4.10.1 from OE
4a04f29 .gitignore: Add extra entries
9715260 scripts/poky-env-internal: Automatically add in additional meta- repositories if found
9e8d22a linux-moblin-2.6.27-rc6: Fix rc6 patch URL
faae7d3 bootimg: As image size grows, we want to switch to FAT16
0e5bc87 moblin.conf: Use package_ipk as well as rpm, just for now
fa7a4cd Merge branch 'master' of ssh://git@git.moblin.org/poky
3ae3b2b moblin-image-sdk: Should use NETBOOK_IMAGE_FEATURES not SATO_IMAGE_FEATURES.
b6b37f0 bitbake: Improve error message for missing class files
4ba6a52 qemu.inc: Use ext3 images for qemu, not ext2 ones
4d24b9d Add xeyes (from OE)
dd36b62 bitbake.conf: Fix CHECK_COMMAND_wget quoting
bbac24b task-base: Removed RDEPEND on task-poky-boot
7e6ddbd linux-moblin: Tweak defconfig to improve kernel boot time
f667a06 Merge branch 'master' of ssh://git@git.moblin.org/poky
47e825a moblin-image-netbook-install: deleted.
6e70612 initrdscripts: Add the simplest init script
97cbee6 task-moblin-tools: moving sreadahead to task-moblin-boot
610b53f bitbake: Optionally take username/password options from url parameters
33b4017 packagekit: Fix after polkit was renamed
9ffb170 xf86-input-mouse: Fix header files included
d9dfbf4 xserver-x86: Fix m4 autoconf macro
f8e9dcb libgtkstylus: rpm can't cope with these expressions so avoid them for now
76bf51b packagekit: fix typo in folder name
d422ac1 Merge branch 'master' of ssh://git@git.moblin.org/poky
3937aef polkit: Rename polkit to policykit
51db609 packagekit: Disable gstreamer plugin (gstreamer is not in DEPENDS)
4b0098b packagekit: Fix DEPENDS and configure
76e51a8 polkit: Fix DEPENDS
94b3998 drm: Fix libpthreads-stubs name in DEPENDS
510d5d7 bitbake wget.py: Fix problem with empty proxy variables
973bba1 pam: Fix use of binary built with the native compiler
559cbf2 sreadahead: Mark as x86 only
9586e75 scripts/poky-autobuild-moblin: Update the proxy config and add rpm packages to the build list
f869e70 syslinux-installer-native: Add missing DEPENDS
9d0ed30 libdrm: Add missing DEPENDS on pthread-stubs
7fdff0f base.bbclass: Improve the git proxy syntax to match the http/ftp syntax too
c2ef2d4 bitbake: Improve proxy handling got wget so urls can be excluded from the proxy
2bd4344 .gitignore: Add build/conf/local.conf
e0dab8b packaged-staging.bbclass: Ignore errors resulting from parallel threads clashing
dc0f956 e2fsprogs: Bump version after the last commit to fix uuid librbary problems
e38ae8f uuid: Drop in favour of the e2fsprogs version
4a3a35f autotools.bbclass: Handle /lib as well as /usr/lib in autotools_stage_all
74e5d02 Merge branch 'master' of ssh://git@git.moblin.org/poky
fd4b88a poky-floating-revisions: Comment out SRCDATE_oprofile.
8dd388c parted: Disable use of check, even its its detected since its not in DEPENDS (and isn't needed)
777f269 scripts/poky-autobuild-moblin: Add GIT PROXY variables
4c62623 base.bbclass: Set GIT_CONFIG correctly
66481d6 base.bbclass: Fix whitepsace damage
2a0c668 base.bbclass: Create ~/.gitconfig if it doesn't already exist
51be1fa linux-simtec: Update simtec1 -> simtec3 and add COMPATIBLE_MACHINE
f27cbd1 Add depicture machine with patches from SimTec
1b7873f task-moblin-tools: Add sreadahead to the package list
bebb376 sreadahead: Initial commit
7b5d03d linux-moblin: Add super readahead ext3 specific patch
b249501 scripts/poky-autobuild-moblin: Set GIT_PROXY_COMMAND
4f083a4 packaged-staging.bbclass: Make sure target directory exists, fixing build failures
10fd960 sdk.bbclass: Fix PKG_CONFIG_DIR value
9ebe8de .gitignore: Fix directory reference issue
582b71a moblin-fixed-revisions: Added and preferred over poky-fixed-revisions
76a7b78 roots_rpm.bbclass: Use opkg-native to get update-alternatives
25e5b72 libxml2: Fix a compilation error when using -D_FORTIFY_SOURCE=2 thanks Chenglan Huang
17bb673 package pam correctly
efbd5e5 base.bbclass: Fix infinite loop
af861ca base.bbclass: Fix typo
921cbb2 base.bbclass: Fix the git config file writing code
b1046ef bitbake: Don't export the GIT_PROXY_COMMAND in the fetcher code since it means selective proxying isn't possible
0e9f111 wpa_supplicant: Use volatiles for managing /var/run/wpa_supplicant
03d16ab networkmanager: Remove conflicting directories (managed by volatiles)
1f833df fontconfig: Use volatiles for managing /var/cache/fontconfig
57fbc64 base.bbclass: Fix getVar call
175b45b base.bbclass: Add missing import os
d487dac base.bbclass: Add missing import bb
e265dbe added packages: PolicyKit and PackageKit
7705e1e New package: pam
d410789 linux-moblin: 2.6.27-rc6 is not the default
fa88660 scripts/poky-autobuild-moblin: Add extra variables to the whitelist
35b85e9 [task-moblin] bumps PR, so that machine mods to XSERVER get noticed
147f91a This removes xtrans 1.2.1 since we now have xtrans 1.2.2
47de743 Deletes libdrm_2.3.1 since we now have libdrm_2.4.0
bcb38a8 Bumps revisions for various X packages
156a992 [xserver-xf86-dri2-lite_git] Removes the PE=1
4b41085 Adds xf86-video-intel_git.bb
b74cb8a [xserver-xf86-dri-lite_git.bb] bumps the PR
5321ad4 Adds a new xserver-xf86-dri2-lite_git.bb package for building the X server with dri2 enabled
9807c58 [xserver-xf86-dri-lite] Bumps the PV and explicitly disables dri2
5924dde [xf86-video-intel-dri2] Updates 004_reduce_driver_boottime.patch
c36db8d [xf86-video-intel-dri2] comments out reduce_driver_boottime.patch
43015b4 [poky-fixed-revisions.inc] Updates Git versions for various X packages
d5b1c1d [bitbake.conf] Removes the MACHINE_DRI_MODULES var since it's no longer used by mesa
8231fc1 [netbook.conf] removes MACHINE_DRI_MODULES, use xf86-video-intel (not dri2) default
5924520 [mesa dri] Adds splitting of dri drivers into seperate packages
c50e010 [moblin.conf] Adds quotes for PREFERRED_PROVIDER_xf86-video-intel ?= "xf86-video-intel"
057abf0 Makes PREFERRED_PROVIDERs in machine/netbook.conf overrideable via ?= operator
d514eee base.bbclass: Additional git proxy support.
4b93bb3 yum: Make the volatile configuration file available
b32d59f e2fsprogs-lib: Remove unnecessary package (e2fsprogs can take it's place)
3ad92d8 parted: Depend on e2fsprogs rather than e2fsprogs-libs
0dc1dc4 poky-env-internal: Add quoting to support zsh.
524323b poky-fixed-revisions: Set a SRCREV on xf86-video-intel-dri2
8cafc7c sysvinit: Manage /sbin/poweroff with update-alternatives
6c298ce rpm: Don't create a /var/tmp directory (clashes with basefiles)
b906b0c rootfs_rpm.bbclass: Disable non Poky repositories.
d02483f yum: Use volatiles for the yum cache directory
db5f7b9 packages: check, uuid and xerces.
410141a createrepo-native: Fix SRC_URI.
e61ea24 Merge branch 'pli1/X11-rework' of git@moblin-mdi.jf.intel.com:poky-staging into master-dev
3e7b691 task-moblin-tools: bumping PR
f21745f xf86-video-intel-dri2: delete 007_disable_tiling_and_enable_UXA.patch
37ea0ee xf86-video-intel-dri2: rebase X fastboot patches
6f65d5b task-moblin-tools: Removed exmap and sreadahead
e76840f netbook.conf : change xf86-video-intel to xf86-video-intel-dri2
4ef8d5c xf86-video-intel-dri2: don't apply patch "007_disable_tiling_and_enable_UXA"
0e2ba7a xf86-video-intel-dri2: update PV
8fea3fa xserver-xf86-dri-lite : apply xserver-boottime.patch
e16d2b9 xtrans: add xtrans_1.2.2.bb
d7f6212 meta-moblin/packages/tasks/task-moblin-tools.bb: fix typo in filename.
98e6b81 Tidy up images and tasks in meta and meta-moblin.
d0e6c71 local.conf.sample: Append to BBFILES instead of overwriting
1d6b543 gtk+: Add moblin override
e92cc8f Add poky-image-sdk-live to meta/
7994045 kernel.bbclass: We dont want to tar lib/ if we dont have any modules
fd38c1b meta-moblin: Add moblin-image-minimal image
8d50257 conf/distro/include/world-broken.inc: Exclude clutter-helix from world builds
b296ae2 bitbake: Add tryaltconfigs option to disable the alternative configuration attempts and make the 'continue' more aggresive
db140d9 scripts/poky-env-internal: Add POKYMODE to BB_ENV_WHITELIST
2ff5dac conf/distro/include/world-broken.inc: Add abiword and abiword-embedded for now
ea868f9 package_rpm.bbclass: Don't use the system wide RPM macros.
1045eaa matchbox-panel-applet-2: Update SRCREV to fix breakage on non-APM platforms
47c42b6 conf/distro: Create a moblin distro config file based on the Poky one
3a73995 bitbake-dev: Renamed to match the UI name
774485d image.bbclass: Add INHIBIT_DEFAULT_DEPS
526d996 bitbake-dev: Use the default task if 'None' asked for
0b6fdfb bitbake-dev: Refactor configuration file parsing
0b9da42 bitbake-dev: Save the cooker log into the working directory.
23f08fd scripts/poky-env-internal: Unset BDIR after use
4041c25 helix-libs, ribosome: Set COMPATIBLE_HOST since x86 only
262e18f drm : add libdrm_2.4.0.bb
f19e435 bootimg: copy rootfs to ISO image
dae95a7 tasks: apps-x11-pimlico renaming typo
0472967 tasks: fix moblin-tools task name typo
f5c494b bitbake-dev: Remove use of self.configuration.cmd as state from shell
790ed68 bitbake-dev: Remove implicit task from generateDepTree/generateDotGraphFiles
22a3265 bitbake-dev: Make the "buildFile" command use the task parameter
c790192 bitbake-dev: Make the task a parameter of the "tryBuild" command
2684070 bitbake-dev: Include target/command (from -c) in "buildTargets" command
acdff2b images: put poky-image-live back to meta/
d5417e5 meta-moblin: rename images and tasks from poky-* to moblin-*
0f9a47a bitbake: Fix the wget fetcher so parameter portions of uris are ignored
08197d6 Merge branch 'master' of ssh://git@git.moblin.org/poky
fbfc669 bitbake-dev: add a setVariable command
e84e951 meta-molbin/images: Add poky-image-sdk-live.bb
07b4c06 spectrum-fw: Use the standard fetcher process
b8ff2b6 base.bbclass/bitbake.conf: Fix some string quoting to handle more unusual URLs
e4aa77e scripts/build: Update the git proxy setup instructions
87fe772 bitbake-dev: rename readVariable to getVariable
d3bf789 poky-image-openmoko.bb: remove matchbox-applet-startup-monitor
45f4be4 poky-image-openmoko.bb: remove unused PR
c26d6cf bitbake-dev: Change terminology online/offline to sync/async
f0b1d56 bitbake: Preserve http_proxy and ftp_proxy in fetcher command execution
0cc119f opkg: Really fix the prototype problem (and an invalid call)
842606b opkg: Fix incomplete function prototype
4815f7b bitbake: Remove bogus test code
ede20a3 bitbake: Improve proxy variable handling in fetchers
4329a29 scripts/poky-env-internal: Add proxy variables to the enviornment whitelist (and OEROOT)
2236c01 scripts: Fix variable quoting
ebb74a6 scripts: Add moblin autobuilder support scripts
be2ad3b * Fixing the helix-player.pc to include a -lstdc++ * Adding clutter-helix recipe
d4f444a Add meta-moblin-internal to gitignore
ca7fa46 * Adding initial ribosome (helix build system) and helix-libs recipes
06db259 bitbake-dev: add goggle - an experimental GTK UI.
f51afdc bitbake-dev: Include the worker's PID in events
e1155bc linux-moblin: We dont need the defconfig-eee901 files anymore
e169b23 linux-moblin: Add 2.6.27 moblin kernel
e5c53ce netbook: changed platform name from eee901 to netbook
3e04579 bitbake-dev: Dynamically load the UI module.
7ddbeb2 packaged-staging.bbclass: Avoid removing the staging.lock lock file.
c9fe18a syslinux: Add COMPATIBLE_HOST
c53608b bitbake utils.py: Merge prunedir symlink fix from bitbake upstream
8bb2cd7 libacpi: Add COMPATIBLE_HOST
5e97882 poky.conf: Fix world excludes typo
7a0ee99 libsyncml: Remove insane piece of strange assembler
78fd54f poky.conf: Exclude linsync from world builds
a7dea06 poky.conf: Update libopensync world exclude list
83dd9c7 libopensync-plugin: Upgrade file and vformat to 0.37
f5eeae1 msynctool: Upgrade 0.36 -> 0.37
14e3c93 libopensync-plugin-evolution2: Fix to work with libopensync 0.37
22170fe syslinux: Various cleanups and add back some missing staging pieces
f105cdc bitbake-dev: Remove the Pkg{Started, Failed, Succeeded} events and their handling in the UI
a864492 base.bbclass: Output notes only on BB <= 1.8.x
3f93ed6 syslinux-native: Try to make syslinux cross-compile friendly.
4cb6598 Enables support for root over NFS in the linux-moblin defconfig
85e2dcb Add libopesync 0.37
0d25b9f libxslt: Fix pkgconfig patch for exslt
e1720d8 bootimg: Add symbolic links to iso and hddimg
7a4b36a bitbake: Add some sanity checks to the lockfile functions
8dd58f5 meta-toolchain: Don't inherit sdk
e0c1bd1 sdk.bbclass: Rewrite PACKAGE_ARCHS
f838503 qemu-sdk: Pass the disable-vnc-tls option since we don't have gnutls-sdk
d636d1b bitbake-dev: Don't fallback if the UI fails to start; give an error message on UI exception
bd63867 bitbake-dev: Move the ncurses TTY check into the UI plugin itself.
39ad2b3 Update the ignore file so that it also includes VIM swap files
696d4f0 bitbake: Refactor the environment variable handling
9294b95 bitbake-dev: Refactor the environment variable handling.
603ae24 Add .gitignore
8c32e37 libx11: Clean up all the git recipes into a common include file
da30379 libx11_git: Cleanup duplicate metadata
f4b04c9 poky-image-minimal-live: Set LABELS to fix image generation
9a38dbd syslinux.bbclass: Clean up boot menu title
1a5f96a libx11-trim: Fix git version DEPENDS
aadd0fd libx11-trim: Fix FILESPATH
b4a4291 Add libx11-trim git
14d3569 u-boot: Set COMPATIBLE_MACHINE
0024d1a x-load: Set COMPATIBLE_MACHINE
819e489 libx11-sdk: added git version (based on libx11-diet)
d0d47cb libsyncml: updated to 0.4.7 which builds with libsoup 2.4
48e3baa libxtst: bumped PR to force rebuild with newer libxi
e58db30 libxtst: depend on libxi to get XInput.h
5f12963 checksums.ini: added some entries
f79e825 libx11: fixed PV in git versions
4afe85d preferred-xorg-versions.inc: updated xdpyinfo version
8d3672c poky-fixed-revisions.inc: added some entries
c772ed9 This documents that PE defaults to 0 not 1 as previously written
100f4af xexproto: renamed directory to make xextproto-* working
3ccabe8 libowl: delete only libowl.* instead of libowl* on clean-up.
7ec0191 xserver-kdrive: added patch for 1.3.0.0 to get it built with x11/git
7457fcc xdpyinfo: updated to 1.0.3
df8421a xextproto: added patch from upstream GIT to unbreak xdpyinfo (and others)
433f9d8 poky: use libx11-diet from GIT
8e98e1f libx11-diet: added GIT version
13a115a preferred-xorg-versions.inc: fix libxcb version
6e56c4f preferred-xorg-versions.inc: prefer GIT versions of x11 libraries
4bfd39f poky-fixed-revisions.inc: added SRCREVs for x11 libraries
f57ecf3 xcb-proto-native: added to get libxcb buildable
f732fed xcb-proto: added GIT version
8159255 libxcb: added GIT version
c8acd24 libx11: added GIT version
780b158 libxi: added GIT version
6e046c7 libxext: added GIT version
b718096 e2fsprogs: Add ext3 headers to the exported list.
eacf14f Various X package updates to deal with XInput.h being removed in the latest inputproto package.
cd2ce19 Drop linux-omap-2.6.25
44bc791 linux-omap-2.6.24.7: Update defconfig to fix various issues
9d70f04 Use ?= for setting IMAGE_FSTYPES in eee901.conf so it can be overriden in a local.conf
1065021 Adds support for GEM + DRI2
4c7fc91 avahi: create/remove 'avahi-autoipd' user (from OE)
5c7adfa task-base: build Bluetooth/Wifi support only for distros which feature them
2e900b0 apmd: drop obsolete zaurus 2.4 kernels hack
f0676a3 automake: Fix patch
b2396b6 automake: 1.10 -> 1.10.1
985681c libtool_2.2.6: Fix SRC_URI
457ae5a Add overo
fe795de package_ipk.bbclass: Simplify variable expansion
e360961 libtool: Upgrade to 2.2.6
3860dec gcc: Improve the build containment failure error message to be more user friendly
fc46731 image.bbclass: Make the kernel depmod dependent on the presence of a kernel - some images eg an initramfs don't have this
1ef8ccb exmap-console: Bump PR for new moblin kernel
a2d782b rt2860: Bump PR for new moblin kernel
d89d52d linux-moblin: 2.6.27-rc6 kernel
3d40acd devicekit: Disable man page generation
2eadfa9 image.bbclass: generate modules.dep
51268c1 rootfs_ipk.bbclass: Don't error if the file doesn't exist
7daedbf package_ipk.bbclass: Fix opkg config file generation
fb439d9 package_ipk/rootfs_ipk.bbclass: Update image from feed handling
3dc1ade eee-acpi: power button support
93cd991 devicekit: initial package
986e49c matchbox-panel: enable the relevant battery plugin depending on the machine features
2452ba4 gupnp: add gssdp, gupnp, gupnp-tools
52268b5 initramfs-live-install: Add COMPATIBLE_HOST
eb599a9 e2fsprogs: enable dynamic libs, and package libuuid separately
4d3d6fb syslinux: We forward the LABEL through cmdline
62ece10 initrdscripts: init can now launch the installation script
460d934 poky-image-netbook: Add installation script
864a4ad initramfs-live-install: Initial commit
1ed1a58 busybox: Add the halt command
228f25b bitbake: cooker.py: Fix the point the configuration __depends is renamed
23a18eb e2fsprogs: Bump to 1.41.2
d33aedc poky-eabi.inc: No need for parted as-needed exception anymore
acb3bfa parted: Now readline is fixed, no need for weird EXTRA_OECONF options
3abb779 linux-omap-2.6.24.7: Fix compile failure
0223c7c Enable 2.6.24.7 for the omap-3430sdp, even if it won't compile.
4ae7845 gdk-pixbuf-csource-native: Add libx11-native to DEPENDS and explicitly set X search paths
25e4a63 readline: Add configure fix to solve missing symbol issues
2ab7811 exmap-console: Bump PR after readline version changes
e5f329f poky-eabi: as-needed breaks parted configure stage
ade5e73 parted: Initial commit
bfeacba grub: Initial commit
ba9e4ed gdb: Bump PR after readline library changes
0a13784 e2fsprogs-libs: Initial commit
1922777 readline: bump readline-native to the latest 5.2
95857f6 readline: bump to the latest 5.2
c16dee4 scripts/pokyABConfig.py: Add poky-image-netbook-live
c8a3fab rootfs_rpm.bbclass: added code to generate images from feeds
ab995b8 poky.conf: added RPM feeds example
0ea7472 rootfs_rpm.bbclass: added generation of feed entries
d1a327b rootfs_rpm.bbclass: remove temporary yum config - rootfs has one from yum package
f9b9e31 rootfs_rpm.bbclass: fix platform so rpm will be usable on device
21cdfe2 Replaces = with ?= in preferred-xorg-version so versions can be overridden
d151a7b yum: added one more python package - shlex
1a2cd2f python: package elementtree and shlex in separate packages
ceb27d5 python: package bzip2 support into separate package
b7aed5e yum: added all required Python modules to dependencies
bc6e408 yum: fixed packaging
559a522 base.bbclass: Add automatic osc-native dependencies for osc:// recipes
9d46f76 ncurses.inc: Make sure paths start with /
61ec403 rpm: Add python module packaging
ceb7254 scripts/poky-autobuild-postprocess: Add eee901 minimal image
8d90e33 scripts/poky-autobuild-postprocess: Add eee901
43a3302 poky-eabi.inc: Set gcc-cross-sdk version
7676511 Add gmp-sdk
27d572b Add mpfr-sdk
8a76c9c gcc-cross-sdl 4.3.1: Merge in two fixes from OE, DEPEND on mpfr-sdk and gmp-sdk, use LD_LIBRBARY_PATH to fine libmpfr
4d2a3b6 bitbake providers.py: Fix message typo and improve debug info
f4337b9 bitbake utils.py: Fix ocassional locking glitch with a better retrying mechanism
527b337 patch to allow the moblin proto to run without shader support
690a699 package_rpm.bbclass: save value of RPMBUILDPATH as it is needed for packaging
e71b701 rootfs_rpm.bbclass: remove lock files to get rpm working on device
47f77ae clutter-0.6: Bump PR
811ee11 clutter-0.6: Bump PR
789d16f clutter-cairo: Set S correctly
a953836 libxt: Use STAGING_INCDIR_NATIVE, not STAGING_INCDIR. Also fix error handling.
dddac8f linux-moblin: Remove the obsolete IRQ_BALANCE option
8e466ad linux-moblin2: Use a more generic name
6c807a6 powertop: Remove 1.9
1dc91f0 fetch/__init__.py: Add in hooks to make sure osc fetcher is seen
369a30a poky.conf: matchbox-wm PREFERRED_PROVIDER is not needed
e373a4e matchbox-wm: Remove pointless PROVIDES
628db3a package.bbclass: Ignore virtual-locale- packages when building -dev and -dbg dependency chains
a61f5b0 rootfs_rpm.bbclass: Set YUM_ARCH_FORCE
19855de package_rpm.bbclass: Fix dependency rebuilding bug
aea4958 yum-native: Fix hacks.patch to handle architecture detection issues
537ff09 yum: Don't apply hacks.patch, its only needed for the native version
e668b91 Some build fixes for clutter-cairo-0.6, and clutter-gtk_svn
785f33d package_rpm.bbclass: Fix package version fixing for PKG renamed packages
8a49dd2 yum: do not hardcode arm architecture - rootfs_rpm provide arch info
e5e21ca rootfs_rpm: set target architecture and do not tell yum which arch we will use
3c5eae8 package_rpm.bbclass: Improve handling of '-' characters in Requires and Recommends fields
6e62524 base.bbclass: Add read_subpkgdata_dict function
5bcae48 package.bbclass: Write out extra useful data into the pkgdata files
0856501 shared-mime-info: fixed dependencies for native version
2d4b12e rootfs_rpm.bbclass: use more efficient way to copy packages
aabd91e yum-metadata-parser: fixed dependencies
c856d8b - This adds clutter-{gst,gtk,cairo}-0.8 recipes and clutter-{gst,gtk,cairo}-0.6 recipes. - It removes the 0.4 recipes. - It renames things so that the major.minor revision is now part of the package name.   This lets us correctly specify SRCREVs for each branch, and allows parallell install. - All the SRCREVs have been updated to the heads of their corresponding branches
dfffc40 python-native: Add sqlite3-native to DEPENDS
096b0cd packaged-staging.bbclass: Add rpm package coverage
66d1347 classes: Split rpm feeds by PACKAGE_ARCH
9c63c7e rootfs_rpm.bbclass: ship rpm and yum in target images
94fa2b9 yum: added 3.2.18
8626cf5 rootfs_ipk.bbclass: Fix shell commands
1d18282 task-base: bumped PR due to poky config change
f467b97 poky: added pci to distro features
beee0c5 rootfs_ipk.bbclass: Improve image from feed generation
39b0cfa Rename FEED_URIS -> IPK_FEED_URIS
18104e1 rootfs_ipk.bbclass: Add the hard bit of image generation from feeds, controlled by a BUILD_IMAGES_FROM_FEEDS variable
d96b9e3 powertop: Add latest stable release
9b52d24 rt2860: Fix iwpriv oops
f36ea09 bootimg.bbclass: Set nostamp for the bootimg task
cd87211 bitbake: Fix nostamp flag handling bug
4089a43 matchbox-session-netbook: Bump PR
8f00ab4 ncurses: Really drop broken files
5999a43 libx11-diet: Enable xkb
fcb3dfa libacpi: fixed packaging
fb20bb3 ncurses: Bump PR to fix bogus commit fallout
3c7454c bitbake/bitbake-dev: Bump cache version after AUTOREV DONT_CACHE changes
3db5955 gconf.bbclass: depend also on gconf-native
6e5e000 clutter: added libxi to dependencies
1bc1337 gconf-dbus-native: fix dependencies
ff247ac gconf-dbus-native: required by metacity/contacts and few more
e33ca0e matchbox-session-netbook: Remove the --titlebar option
9a711ae poky-fixed-revisions.inc: Bump mb-panel SRCREV
0749420 Fix a typo in the COMPATIBLE_MACHINE list
db1e886 linux-moblin2: Bumping PR for the new eee901 defconfig.
845d298 Revert unintended commits
979f987 bitbake cache.py: When SRCREV autorevisioning for a recipe is in use, don't cache the recipe. Based on work from Heikki Paajanen
e2d3210 Add OEROOT to preserved_envvars_list.
efe3d75 bitbake: Sync with upstream
419f184 Fix better_exec error message to actually report filename.
f0e249f scripts/poky-env-internal: Add MACHINE, DISTRO and POKYLIBC to the environment whitelist for starters
2e18284 bitbake/bitbake-dev: Allow much better control of which variable influence bitbake from the environment
221ac2b bitbake/bitbake-dev: Sync with upstream
dc98b2c bitbake: Sync with 1.8 branch upstream
f393763 AUTHORS: update my email in BitBake
ff56ee3 matchbox-netbook: We can safely include the brightness applet.
65722fb eee901: We now use the intel FB driver.
2c1c5db linux-moblin2: More eee901 goodies
cbaab65 Merge changes from Poky bitbake 1.8
d54280d bitbake-dev: Update against bitbake trunk
4e522e0 poky.conf: Add packaged-staging by default now
c30eddb Add bitbake-dev to allow ease of testing and development of bitbake trunk
5ef0510 git: depend on native perl and use it
de39802 eee901: We use ACPI for battery status reading
c127548 task-base: Adding libacpi to the acpi task.
a2985cb libacpi: First poky commit
1d0070a xf86-video-intel: DEPEND on virtual/libgl, not mesa
f8df3fc libx11.inc: Fix error handling logic for makekeys generation
287ef55 libx11-trim: Add missing xproto-native DEPENDS
e4ac360 zlib: Fix autotools off64_t patch logic fixing darwin builds
ce846ca libx11-diet: Fix require, drop unneeded PEs
6de25dd libx11: Update include_fix.patch
18b5ccc mesa-dri: Bump PR
c1f1195 poky.conf/preferred-xorg-versions.inc: Catch up with libx11 changes
05107cf xserver-xf86-lite: Add a non-dri version of the server for use when dri/gl isn't appropriate
897f193 xserver-xf86-common: Fix PROVIDES to include PN
fc06875 libxcb.inc: Fix bogus reference to STAGING_DIR/HOST_SYS
3081d60 libx11: Upgrade to 1.1.5, rename diet-x11 to libx11-diet for consistent naming. Create common .inc file for diet,trim and full-fat version versions
ef3ef90 poky.conf: Remove bogus EXCLUDE_FROM_WORLD
e22a186 xserver-xf86-dri-lite.inc: Add COMPATIBLE_HOST
99d447c poky.conf: Add mesa-dri to EXCLUDE_FROM_WORLD
343d7bd mess-dri: Add missing expat DEPENDS
796d014 xf86-video-common.inc: Fix typo that revmoved the xserver DEPENDS leading to build failures
c569e23 libxext: Add missing DEPENDS on libxdmcp
450fcec libxt: Add missing DEPENDS on libxdmcp
07e8801 omap-3430: Generate jffs2 images
2d89305 linux-omap-3430ldp: Build jffs2 support in.
0307391 netbase: Disable networkmanager for eth0 on qemux86/qemuarm
86ab8c8 libnotify: move from meta-extras to meta-openmoko
9d8971d matchbox-desktop: update SRCREV.
f9bc87b task-poky-sdk-gmae: fix sqlite-dev name
f21f937 libgcrypt: add pkg-config file info dev package
56e5e1d checksums.ini: added some entries
405e761 gnutls: add 2.4.2 (latest stable)
062b2e1 gnutls: drop 2.2.5
c4e9ad6 Fixes the metacity-clutter revision; packages the plugins; and adds a post install section to use gconftool-2 to enable the "simple" plugin by default.
52734d2 task-sdk-gmae.inc: update to reflect GNOME Mobile 2.24
b0432f7 removes SubSection "Display" from xorg.conf
503cb72 fixes noPanoramiXExtension missing symbol problem when server tries to load libdri
fc3d94f poky-fixed-revisions.inc: bump matchbox-wm-2 for work area fixes
dd465f2 avahi: Move bshell into the avahi-ui-utils package
9b906c8 mesa-dri: mark as x86 only
297f268 libpthread-stubs: Fix -dev and -dbg dependencies
5529d5e linux-moblin2: do not compile kernel with debug infos
13c0576 clutter.inc: use eglnative on 3430sdp
536e19f xserver-kdrive: Feed xrandr calls to the framebuffer driver in case it can do better than software rotation
59754ee dialer: specify revision instead of using autorev
10b4923 eee-acpi-scripts: Set PV correctly
951142f eee-acpi-scripts: SRCREV should be in the distro config files
78abb40 Update fixed revision for the latest, greatest, metacity-clutter.
d708880 xcb-proto: Fix -dev and -dbg dependencies
7970ac7 eee901: Add acpi and eee-acpi-scripts
4a91a28 eee-acpi-scripts: Initial commit
d3636b1 pm-utils: Initial commit
f65b9db acpid: Initial poky commit
6ae402e image.bbclass: make ext2/ext3 images autoresize
2c002e3 qemu targets: added IMAGE_ROOTFS_SIZE for ext3 filesystems
92116e3 Netbooks will use Sato too for now.
8f8fbef Initial support for netbooks with a poky-image-netbook(-live) image target. This needs much love from folk with UI and WM skills.
c8ece75 libx11-trim: Add missing dep on xf86bigfontproto
2f52c8c qemu-sdk: Build i386 QEMU for inclusion in the sdk.
775eda0 gtk-engines-2.12: remove
fb1907d gtk-engines_2.14.0.bb: add PACKAGES_DYNAMIC
0ed09c3 gtk-engines-2.10.2: remove old release
9f09bda matchbox-themes-gtk: fixed dependencies after clearlooks cleanup
c6a6eb4 jpeg: added native version
0b751d3 metacity(-clutter): use gdk-pixbuf-csource-native
b40263e gdk-pixbuf-csource: added 2.12.7
e64f44b gtk-theme-darkilouche.bb: depend on gtk-engines so that clearlooks is built, and rdepend on the engine not the theme
d1bd228 gtk-engines: set PACKAGES_DYNAMIC
9221934 gtk-clearlooks-engine_0.6.2.bb: remove old version
e409c10 gtk-industrial-engine: remove ancient package
c55be22 added recipe for metacity-clutter
7857985 libtiff: set LICENSE
887b8de gtk+: Add gtk+ 2.14.2
57fbca3 libxklavier: add libxklavier 3.7 (XKB wrapper library)
e1852a5 mesa-dri: make it non-default for targets other then EeePC 901
59e0767 mesa-xlib: added non-dri version of mesa
f3c9ce9 xf86-video-intel: mark as x86 only
accea02 mesa-dri: fix packaging so test apps will really land in own package
05908af iso-codes: Make PACKAGE_ARCH=all
395a25b intltool: Update to intltool 0.37.1
663e3ea iso-codes: Add iso-codes package
5d82d23 metacity: do not require gdk-pixbuf-csource
b64f913 checksums.ini: added some entries
6518356 glib-2.0: Remove old bleeding version.
f259954 glib-2.0: Update default revision to 2.18.1
879f6e0 glib-2.0: Add 2.18.1 (new stable release)
7426229 poky-fixed-revisions.inc: fix typo
69bcf13 poky-fixed-revisions.inc: bump matchbox-desktop srvrev to fix icon loading bug
fab1928 gnome-icon-theme: add an RRECOMMENDS on librsvg-gtk
e419523 Add a bzip2-full-native recipe and make the python-native recipe depend on it. Yum requires bzip2 support in Python so our native Python package needs something to provide it.
6e1a993 Makes metacity install as an alternative x-window-manager
604df9a Bumps the mesa-dri revision to 7.2 and adds a mesa-xdemos package including e.g glxinfo
9954f13 Ensures the themes get packaged with metacity
0caca44 Adds eee901 specific support into clutter.inc and adds a new virtual/libgl for clutter to depend on which all mesa build variants provide.
bc88c3a increments task-poky revision, which fixed a dependency problem for me and may help with similar problems others are seeing with the new X builds. (The problem seemed to be related to the XSERVER variable which is referred to in task-poky.bb)
9e00baf libxrender: added missing dependencies
a4fcdac libx11-trim: added missing dependencies
7178ed1 connman: Initial poky commit
08012fd resolvconf: Adding resolvconf as connman needs it
422985c libgdbus: Add latest git as SRCREV
b5833ef libgdbus: Adding libgdbus as connman needs it
37f772f Add the Darkilouche dark theme
561f4d0 Update to gtk-engines 2.14
4353685 Some fixes for the xorg.conf for xserver-xf86-dri-lite
500a924 libsoup-2.4: add libsoup 2.4
cf69f37 gnome-icon-theme: add
1c2a783 Basic recipe for Metacity. Needs some tweaking to strip out themes into separate packages and strip some unneeded binaries.
dd204d5 added missing dri2proto dependency
8321809 libx11-trim: fix location on keysymdef.h
5651807 xf86-video-intel: add missing dependencies
2297ec9 xkeyboard-config: provide 'xorg' rules which are link to 'base' ones
f77a127 xkeyboard-config: add keymaps for X11
ad239c2 xkbcomp: added 1.0.5 required by xkeyboard-config
af096d2 libxkbfile-native: needed by xkbcomp-native
a521e64 Move libsoup to its own directory
f2bbf7b libx11-native: do not provide virtual/libx11
90ebfbb libxdmcp-native: do not provide xdmcp
3de4627 Adds recipes to support building X servers based on the xfree86 DDX instead of kdrive and building mesa. It's a big commit and it's still rather rough around the edges, but there is a desire to get this in early so people can review the work and help polish the changes.
9b6a24b cdrtools-native: Don't look for headers in /usr/src/linux, that would be crazy
dc2a130 tune-xscale.inc: Compile cairo for armv4 to avoid alighment trap issues with double instruction
b7b2755 gcc: Add 4.3.2 recipes
571ddc9 Fetch implementation for the OpenSuse build service.
166a1ac Native pacage for the OpenSuse build service client.
5744c24 Make the eee use the correct DPI.
0576faf poky-eabi.conf: add dialer to as-needed blacklist
cd937b6 ConfHandler.py: revert accidental commit
31511eb bitbake parse/__init_.py: Add missing update_mtime function fixing bitbake shell reparse failures
1048185 poky-fixed-revisions.inc: bump matchbox-desktop srvrev
57915de poky-fixed-revisions: bump libowl srvrev
c3bea64 poky-fixed-revisions.inc: bump matchbox-wm-2
ce91157 ref-variables.xml: Add POKY_EXTRA_INSTALL
61af678 handbook/faq.xml: Add a QA about proxy server setup
ef1315e handbook/quickstart: Improve documentation on the options available in local.conf
96a71ae local.conf.sample: Make the parallel threads documentation more visible and update with a quadcore example
fc6f464 rt2860: Set COMPATIBLE_MACHINE for now to avoid builds with elderly kernels
93807d5 eds-dbus: add libedataserverui to PACKAGES, fixing the borked packaging
107efab eee901: Add wifi support
680a0e5 eds-dbus: package the glade files into libedataserverui
d2c6e8a rt2860: Support for the rt2860 RaLink 802.11n chipset
93159c9 eds-dbus: Add missing DEPENDS on libglade
06b2ec9 local.conf.sample: Add comment about eee901
f03756b poky-eabi.inc/poky-fixed-revisions.inc: Bump the matchbox-wm-2 revision and remove from the asneeded blacklist
0dbd5e5 image-live: exclude from world builds
2269949 pokyABConfig.py: Add eee901 builds
5931e8a gst-plugins-good: Remove bogus RPROVIDES and add to PACKAGES instead now the package class can handle this
9a21f65 package.bbclass: Adjust to handle split packages already being present in PACKAGES
81824cd exmap-console: Bump to the latest SVN
adf85c0 poky-image-live.inc: Only run the FSTYPES check when the task is run
6b2db1e Added live USB poky images
9bdc5a0 initrdscripts: Simple init files for initrd/initramfs images
71a2e0d bootimg: Adding a rootfs to the disk image
8615c21 eee901: Add video kernel options, vesa for now.
22e0395 bitbake hg fetcher: Add fix from Matt Hoosier
f09c00e gaku: clean up depends/recommends
16f7d67 formfactor: Add eee901 config file
db323e3 eee901: Initial support
4f82c50 linux-moblin2: Add moblin2 kernel
f680c85 eds-dbus: update to current and refactor the patches that get applied.
eecb3f9 poky-eabi.inc: Blacklist matchbox-wm-2 for broken as needed handling
7e3f8e5 matchbox-wm-2: Package libmatchbox2, enable the simple manager, fix other packaging issues
0785687 eds-dbus:Update the built in contact patch to reflect changed paths.
7b7d83c libsndfile1: Add missing DEPENDS on sqlite3
9836ab8 matchbox-wm: provide matchbox-wm to complete the virtual mojo
9bef0ee poky.conf: make matchbox-wm a virtual
1367165 rootfs_rpm.bbclass: Add recommends handling
7c72bf7 yum: Add yum-install-recommends.py script to handle installing Recommends
da34e32 bitbake.conf: Fix typo introduced in r3774, thanks to Cyril Humbert for spotting
5b24b9c poky.bbclass: Add https mirror source
2c832c5 rpm: Add missing patches
e1af8de hg fetcher: Apply fixes from Matt Hoosier
4be407b rpm: Handle PYTHONVER differently in EXTRA_OECONF to stop gettext/uclibc failures during parsing
4a2e4c7 puzzles: Bump PR after asneeded change
491cbea poky-eabi.inc: Add puzzles to asneeded blacklist
d396ff1 minimo: Bump PR after ASNEEDED changes
e23fe47 pciutils: Bump PR after ASNEEDED changes
21ea5a3 poky-eabi.inc: Add minimo and pciutils to asneeded blacklist
bbd6158 openobex: Bump PR after ASNEEDED change
7192a61 poky-eabi.inc: Increase ASNEEDED packages blacklist
344a927 matchbox-session-sato: fix typos in session script
23c36b0 rootfs_rpm.bbclass: Fixup broken symlinks due to fakechroot and run any leftover postinstalls on real hardware at first boot
5d0f675 createrepo-native: added dependency on Python
a3a3360 poky-eabi.inc: Add distcc to ASNEEDED blacklist
ef1e2b9 yum-metadata-parser-native: depend on GLib 2.0 native
0fb48f7 python-native: depend on OpenSSL native to get python-urlgrabber-native buildable
f46cad8 poky-eabi.inc: Start using the --as-needed flag when linking to reduce uneeded link time dependencies
9a90cab gconf.bbclass: Drop configure/install/upgarde checks since not all SCMs support these in postinstalls
15e4284 matchbox-sato: Remove empty directories
50ae58e task-poky: Add a more definite dependency on dbus in console and x11 images
8821664 rootfs_rpm.bbclass: Add basic postinstall handling during image creation
a6f3e46 yum-native: Add extract-postinst.awk script for use during rootfs generation
f9cefb6 rpm-native: Set varprefix to get the rpm database in a sane location
36d8198 package_rpm.bbclass: Add support for postinst and preinst scripts
aae958d yum-native: Add NOPOST and NOTRIGGERS flags when installing packages
6269c57 package_rpm.bbclass: Fix problems with package version with '-' in the version (replace with '+'), improve the Requires and Recommends generation code
5d24ea8 bitbake utils.py: Add explode_dep_versions, an improved version of explode_deps
6209435 syslinux.bbclass: Update to use more modern and efficient functions
91c830c clutter.inc: revert the zoom board to eglnative, and eglx is so broken
d85997f bitbake providers.py: Sync with upstream
75df743 matchbox-wm-2: stage the headers and so on
a24fec2 poky-fixed-revisions: bump mbwm2 revision
629494a gst-plugins-ugly: update to 0.10.9
36e803e libxml2-native: actually fix depends to python-native
33061d6 matchbox-wm-2: enable libmatchbox and the png theme
dcce679 libxml2-native: fix python packaging, thanks Matt Hoosier
0801fa7 yum-native: add depends on libxml2-native
502d161 python-native: remove libxml2-native depends
b8ce2fb package_rpm.bbclass: files needs to start from /
102af61 fakechroot: fix duplicated readlink
1ec9176 Fix typo in ldp machine name
99e44d2 rpm: Add recommends support from suse rpm patches
375bf90 rootfs_rpm.bbclass: Remove the feed directory before packaging the image
b7b95fa package_rpm.bbclass: Stop autogenerated dependencies for now, its not functioning correctly
8c33755 yum-native: Add some hacks to make yum work better in the cross build case
38d1870 yum-native: Add patch to fix install paths
020a00a createrepo-native: Add fix for empty data fields when creating repositories
fe22fab bitbake.conf: Add  to PATH
bbdeccf sanity.bbclass: Provide preserving the mmap_min_addr setting over reboots
a707851 python-native: Add libxml2-native to DEPENDS
82d0172 python: Fix -native package staging functions
fc2e56f rpm: Tweak patches to remove popt problem
85efc57 Move libtiff to meta from meta-extras
15af82a Add rootfs_rpm.bbclass, a start at image generation from rpms. Its not expected to be entirely functional yet.
317a847 package_rpm.bbclass: Fix empty package handling, handle package dependency renaming by adding a missing function call and expand RPMBUILD before changing the dictonary so local PV/PR changes don't break the WORKDIR variable expansion
bae5aaf libxml2-native: Enable python extensions
666c695 Add yum-native and createrepo
2b67142 Add python-urlgrabber, python-iniparser, yum-metadata-parser and native varients
bb6a165 fakechroot: Add from OE.dev
f57852e sqlite: Add 3.5.6 and sqlite-native from OE.dev
0f9c34a zlib: Upgrade from 1.2.3 to 1.2.3.3 to add 64 bit extensions and improve operation on recent 64 bit platforms
603e247 rpm: Enable python extensions and improve cross compiling patches
16e6877 python: Promote from meta-extras to meta
07eeb6a python: Remove empty directories
15c905c insserv: Fix a cross compile issue on i386 machines
aa7d993 poky.conf: Exclude libxml-simple-perl from world builds
af1c282 Fix up /etc/profile to source files from the right path.
083c456 glibc: Disable hwcaps for speed
8d772b1 wireless-tools: Drop scripts we don't seem to need
14f2b65 rpm: Patch out some Makefile strangeness causing build failures
210f011 networkmanager/matchbox-keyboard: Use exec to run the final programs
76b5863 psplash: Remove pointless cat calls, promote to .sh initscript
04066bd base-files: Remove fork from profile, no need to use ls here
513bf3a xserver-nodm: Remove another fork, no need to use cat here
37d9ffa dbus: Add volatiles configuration
e80d0ca initscripts: Remove pointless forks from timestamp code
8821332 netbase: Drop options file and options handling code, its replaced by sysctl.conf
2bee9ce base-files: Install a sysctl.conf file
a456aba base-files: Don't fork to call id in profile
9469a08 xtscal: Convert session script to an sh script so it can be sourced reducing forks
7b49a5b networkmanager-applet: Start after the desktop has loaded by using dbus-wait
4453d53 matchbox-keyboard: Change session script to start it after the desktop using dbus-wait removing the dodgy sleep call
b116e40 xserver-kdrive-common: Add in support for shbg files, shell scripts to be started in the background
893b354 librsvg: update the loader database when installing the svg loader
23d43ca moblin-proto: update srcrev and fix build
9add0a8 rpm/rpm-native: Add recipe for 4.4.2.3
e8f85b3 beecrypt: Add based on OE.dev recipes with fixes
ded39e2 package_rpm.bbclass: Update against recent packaging changes and start to implement dependency handling. Drop pointless rpm_core class.
c87b3a8 package_ipk/package_deb.bbclass: Make sure control files are properly removed fixing problems with files leaking into packages. Use core bitbake function for directory pruning
5ca5663 bitbake/utils.py: Add prunedir function to utils collection
77c0101 udev: Drop the standard persistent rules, they're useless on embedded hardware
941aea7 psplash: Bump revision
58f3b79 busybox: Allow a builtin echo for speed
a452505 poky-fixed-revisions.inc: Update psplash revision to gain fifo handling changes
cc1783b sysvinit: Use echo to change the psplash progress fifo instead of forking
7e2a8eb portmap: Remove uneeded initscript forks
244474d clutter.inc: Fix typos
25c4145 poky-fixed-revisions.inc: Add moblin-proto
5bbdd31 Add moblin-proto, drop ununused clutter-box2d patch
67e520f clutter.inc: Add ipodtouch to compatible machines list
f18adf3 poky.conf: Allow clutter, clutter-gst, clutter-cairo and clutter-box2d in world builds
fe3d0cb poky-fixed-revisions.inc: Bump aaina and table versions so they're at least clutter 0.6
a13b006 clutter.inc: Set COMPATIBLE_MACHINE and default to mesa/glx for unknown platforms allowing qemuarm/x86 to at least build for build testing purposes. It is *NOT* expected to run well
449860b mesa: Add from OE.dev
fc05d61 clutter-*: Updates to work with clutter 0.8 and later svn
b1b30e6 poky-fixed-revisions.inc: Update various clutter and clutter related revisions
90ff1cb omap-3430ldp: Add extra machine specific kernel module RRECOMMENDS
43bd216 matchbox-session-sato: make the session script executable
f9281be clutter: Use elgx flavour with omap3
cfb6c0d linux-omap-2.6.24.7: Tweak defconfig to display module symbol versioning
bec2223 Move dialer to openmoko for now, as it depends on pulse
3478f41 matchbox-session-sato: magically munge the session script to remove applets depending on the machine features
e14a39f Add dialer_git.bb, a moko-free port of openmoko-dialer2
a5be289 clutter.inc: package redhand.png
081c41a clutter_0.6: remove do_stage, clutter.inc has one too
1e69b97 openmoko-panel-gsm: add openmoko-panel-gsm, om-panel-plugin.bbclass, and srvrev
1e3ea15 gsmd2: install the system service dbus files
3cf90d1 libgsm: use GTA01 machine for the Zoom board, it's close enough
17ae3ee openmoko-dialer3: add rdepends on gsmd2
ab0297c checksums.ini: added some new entries
86555b2 gcc-cross-initial: disable decimal float in 4.3.1 to fix x86 build
75f5fd2 checksums.ini: added some new entries
acb222d liberation-fonts: update to 1.04 from Fedora
5c93b2c js: fix SRC_URI
714a5e1 rsync: fix SRC_URI
12f914d libpcap: fix SRC_URI
26e4df8 x11vnc: fix SRC_URI
cf6d4fa webkit: webkit.inc is no longer used
9c65649 udev: improved mount.sh
2934660 poky-nokia800-flashutil: merged offsets from Andrew script and added Diablo notes
17606f8 Added support for the "qvga" MACHINE FEATURE
387c360 Added support for the "qvga" MACHINE FEATURE
34cb63b matchbox-sato: update postinst to work with new initscript functions
dae8dc2 task-sdk-gmae.inc: Add libxi-dev
f643fcb matchbox-panel-hacks: remove empty directory
03d6f2a omap-3430ldp.conf: remove irda machine feature
ebb3325 omap-3430ldp.conf: add phone machine feature
4f1efa2 initscripts: merge OE change of cpuinfo_id to machine_id, fixing gsmd's startup
cf55538 libgsmd: add device configuration for omap3430-ldp
450c47d gst-plugins-bad: upgrade to 0.10.8
ad77fb0 gst-plugins-good: upgrade to 0.10.9
c81d0fe tslib: Disable all leagacy plugins, we don't need them
5ff2a13 formfactor: Add beagleboard config
1ada01f linux-omap2: More beagleboard updates from OE.dev
5e4da78 linux-omap2-git: Sync with OE.dev, add fixes to compile correctly with gcc 4.3.1
6dda6e3 linux-omap-2.6.22.19: Backport rootwait feature, make some further parts of the kernel modular
feedc99 Add linux-omap-2.6.24.7 based on the ldp 1.4 kernel
9f55811 gsmd: add a patch to fix initialisation segfault
6f62619 qemu-config: added initscript dependencies and dropped killproc in favour of functions from initscripts
fda9855 nfs-utils: added initscript dependencies
6a6090c initscripts: added initscript dependencies
aa315fb irda-utils: added initscripts dependencies
429ea69 distcc: added initscript dependencies
e2637a1 initscripts: functions file is not initscript
8ef4870 bluez-utils: added dependencies and restart function to init script
de9da95 sysvinit: Remove cruft from rc we don't need
940cd85 opkg: remove duplicated / from postinst
ba8644b initscripts: Remove empty directories
0b70a10 initscripts: Make rm nologin a .sh script
a67fb6c gsmd2: install dbus system configuration file
a934255 openmoko-dialer3: added libjana to deps
907a3ec bitbake.conf: added freesmartphone.org git mirror
1125bc8 Drop vincent, it doesn't work at present
2d5d1ef gcc-cross: remove not used symlinking for cross builds
5b06f27 xserver-nodm-init: make the init script depend on dbus, because the session needs it
ed1b1e9 udev: add init script header so that insserv does the right thing (fixing mountall/devpts ordering issues)
6239bc4 Use the correct tty for Nokia800 machines.
49521c2 openmoko-dialer3: added
3d3fd4c poky-fixed-revisions: added openmoko-dialer3
e4643ae shared-mime-info: fix install
6a6bb07 glib-2.0-native: stage libgio
1aa265e shared-mime-info: build mime database on host instead on device
0fd3035 shared-mime-info: upgraded to 0.51
eaafef7 linux-rp: fix sound on corgi: ARM patch 5174/1
ff065ce linux-rp: disable OABI support for non-qemu targets
a257966 linux-rp: refreshed sharpsl-rc patch
f7ba3aa linux-rp: really use 2.6.26
5e12400 update-rc.d.bbclass: add code at start of post install scripts so it will be called on host
34d7e09 site/common-glibc: Set ac_cv_check_sjlj since system headers can otherwise break the setting in pth
d21dbe2 glib-2.0: update native to 2.16.5
cc33fc0 python-native: update from OE and fix build after staging layout change
c4d370a python-scons-native: fix after staging layout change
957b04b zope: fix build with new layout of staging
a1c0e2c distutils.bbclass: fix build with new layout of staging
dedc620 poky-floating-revisions.inc: Disable opkg/opkg-utils since upstream will break poky from this point onwards
7a5b0f0 glib-2.0: upgrade bleeding to 2.17.4
76d54d6 glib-2.0: upgrade to 2.16.5
a4c341a dbus-wait: bump to latest srvrev, using autotools
fbfee20 linux-omap-2.6.22.19: Tweak kernel defconfig
1befcc0 xserver-nodm-init: rdepend on dbus-wait and wait for the desktop signal before continuing boot
a228c31 matchbox-desktop: bump srcrev, and enable DBus
e72a9df tslib: do not create two development packages
b8a25e4 glibc: bump PR due to recent toolchain changes
2476a44 poky-eabi: use elfutils 0.131 with gcc 4.3.1
20d9950 elfutils: added 0.131 with Debian patches to build with gcc 4.3.1
41d6612 libspiff: update to 0.8.3 to get gcc 4.3.1 fixes
9b547ec icu: use -Os for arm to make it build with gcc 4.3.1
86cc4b3 linux-openmoko: fix build with gcc 4.3.1
6857ef4 avahi: disable libssp
05b0a21 uclibc/meta-toolchain: Catch up with toolchain changes
87796f6 gcc: Add toolchain build process changes from OE which adds gcc-cross-intermediate and removes glibc-intermediate based on a patch from Khem Raj as will be aplied to OE.dev making the build process much more rebust/stable/correct.
f9651fa udev: Sync the rules with the versions from a more recent udev, optimise the boot process slightly by skipping boring ttys earlier
ffc2de5 avahi: upgrade to 0.6.23
dba4931 scripts/poky-qemu-internal: Fix networking on qemuarm ext2 images
e0fdf7f packaged-staging.bbclass: Add OELAYOUT_ABI to the package paths so staging packages become abi specific
8beb43c Move SANITY_ABI to its own file and give a more general name
09d8aa0 busybox: enable microcom
c391403 meta-extras: Add minicom (from OE)
a6b0bc0 linux-omap-2.6.22.19: Tweak the defconfig to unbreak the usb driver a bit and fix boot from mmc
a3dd711 poky-fixed-revisions: added gsmd2
43aab47 gsmd2: taken from OE, cleaned, fixed deps/building, improved packaging
0a968ee linux-omap-2.6.22.19: Enable APM
99b8409 netbase: added qemuarmv6/7 support
1df8293 poky: ship qemu-config package for qemuarmv6/7 too
da820a1 pointercal: added entries for qemuarmv6/v7
9a74694 formfactor: added qemuarmv6/7
cf9ecba poky-qemu-internal: added support for qemuarmv6/7
50e3ea7 linux-rp: added armv7a fix from linux-omap to make qemuarmv7 build
44abf32 linux-rp: added qemuarmv6/7 machines support
84d5380 opkg: qemuarmv7 also use gcc 4.3.1
dc82b9f poky-eabi: qemuarmv7 also require gcc 4.3.1
fc6fd10 openmoko-today2-folders: fix conflicts as we moved some components of Sato desktop
6867529 bitbake.conf: Default to SRCREV of INVALID
63e451e __init__.py: Error if SRCREV == INVALID
dba215e gtk+: added libxrandr dependency
ec1e837 native.bbclass: Also override BASE_PACKAGE_ARCH
e5bc471 native.bbclass: Override BASEPKG_HOST_SYS and TARGET_SYS in the native case
a16f50c poky-image.bbclass: Add POKY_EXTRA_INSTALL variable
8885ae6 linux-rp: 2.6.25+2.6.26-rc4 -> 2.6.26 and apply the i2c suspend/resume fix for zaurus devices
8b1c5c4 clutter.inc: add depends for 3430-ldp
8f6086d dbus-wait: fix build
1bcc0f7 poky-fixed-revisions.inc: Add dbus-wait
582c57c Add dbus-wait
b4ddca7 clutter-box2d: Mark as machine specific
6fc273a bitbake.conf: Add nasty workaround to deal with machine specific and 'all' architecture packages. This problem needs to be revisisted
2e56dd0 loudmouth: upgraded to 1.4.0
c731df8 telepathy-glib: upgraded to 0.7.11
f4cc988 telepathy-gabble: upgraded to 0.7.6
4a32f7d libtelepathy: upgraded to 0.3.3
7062297 empathy: upgraded to 0.23.4
f02f67c telepathy-mission-control: upgraded to 4.61
5c76228 handbook: added 2008 to copyright
3eb7dc4 handbook: fixed typo
7c1f208 meta-toolchain: Fix pkgdata location
9d4dd6d sharp-flash-header:  Install into machine specific staging area so do_rootfs can find it
110830d sdk.bbclass Fix after the staging layout changes
fc128ab udev: Move machine specific parts into a separate extra package
78c793f bitbake.conf: Add CO_DIR and STAGING_EXECPREFIXDIR from OE
df39b9e cross.bbclass: Preserve BASE_PACKAGE_ARCH variable when chaging HOST_ARCH
a566074 bitbake.conf: Split STAGING and CROSS to become target specific so armv5 binaries don't mix with armv6 or v7, likewise with the cross compilers themselves. Also move pkgdata our of staging since it follows a totally different directory structure to staging. These changes break ABI so change the ABI number
7471ff9 gnome-common: PACKAGE_ARCH=all isn't appropriate since STAGING_DATADIR is target specific
af361db opkg: Only add no-array-bounds option for armv7 machines
e36b4c3 opkg: Bump PR after CFLAGS change
51593c2 linux-omap-2.6.25: Fix compile with gcc 4.3.1
e801147 opkg: Add Wno-array-bounds to opkg CFLAGS to avoid bogus errors with Werror and gcc 4.3.1
2708171 linux-omap_2.6.22.19: Fix patch order
cc8e31c poky-floating-revisions.inc: Allow oprofile version to float in bleeding builds
17268d4 linux-omap-2.6.22.19: Apply fixes for gcc 4.3.1 and to fix the pixclock allowed values range
dc1789a scripts/pokyABConfig.py: Add 3430ldp and beagleboard
ac757c1 musicbrainz: Fix compile issues with gcc 4.3.1
b60a7b4 libmad: Remove bogus option which breaks gcc 4.3.1 builds
031748a machine/armv7*: Enable the cortexa8 tune file for the appropriate machines
9124b01 tune-cortexa1.inc: Rationalise options, at least until gcc support for the others improves
756a1d7 poky-eabi.inc: Use gcc 4.3.1 for armv7-a targets
4fcf8e1 poky-fixed-revisions.inc: Update oprofile versions
b45b2c2 oprofile: Update to 0.9.4 making it the default and remove merged patches from cvs version
e8bda85 gcc 4.3.0 -> 4.3.1 (from OE)
f204c83 binutils: Add csl 2008q1 version
a9da1c7 opkg-utils: Switch to svn
8b1f2c4 poky-fixed-revisions.inc: Add opkg-utils SRCREVs
2d39cfb netbase: Disable networkmanager control of eth0 on omap sdp/ldp boards
ba2831f gcc-common.inc: Use STAGING_DIR_TARGET instead of a more hardcoded path
7b19ef1 linux.inc: Fix whitespace
78fc9af linux-omap2: Add from OE for beagleboard
e9ebcc4 conf/machine: Add beagleboard from OE.dev
aafb4d6 tune-cortexa8.inc: Remove tree vectorization option for now, it causes too many problems
94241d9 Add gcc CSL 2008q1 from OE.dev
382427b Drop ipkg-utils
d12df54 Switch from ipkg-utils to opkg-utils
7332ac9 Add opkg-utils
ba539ab bitbake.conf: Set MULTIMACH_ARCH to a default value
5b799cc bitbake.conf: Add PACKAGES_DYNAMIC for PN-locale packages
375f699 bitbake.conf: Add QEMU_OPTIONS for armv7a
767d9ca Merge multimachine class into bitbake.conf and create singlemachine.bbclass as a backwards compatibility option
45d0dac1 bitbake.conf/tune.conf: Set BASE_PACKAGE_ARCH and build PACKAGE_ARCH from this
a906cd2 apt: stage headers/libs
ab4f8bb gtk+: moved cairo dependency to common file
66ad7f3 gtk+: stage few extra headers required by libhildonfm
50fd5b1 checksums.ini: some new entries
b0e21e2 poky-fixed-revisions: fixed oprofile PREF_VER
175c36c xserver-nodm-init: fixed start level to 9 as 09 was treated as octal
8df11e5 poky-revisions.inc: Drop owl-video-widget, update opkg SRCREV
ebb08f0 stage-manager-ipkg: Use head -n1. not head -1
cd42b9b owl-video-widget: Split into owl-video and libowl-av
134c555 poky-revisions.inc: Add libowl-av and owl-video
6da21d0 clutter-box2d: Hack to make it work with clutter 0.8
0ef4807 netbase: Disable networkmanager on eth0 for omap-3430ldp
33d9938 networkmanager: Add a method to stop network manager controlling selected network interfaces
a3d88b4 fontconfig: Disable parallel make
d0ba74c hal-info: do not depend on HAL - it is circular dependency
b17cdb2 udev no longer symlinks for udevcontrol, udevsettle and udevtrigger. Modify init script to use udevadm [action]
b645d5c Make udev-124 the default.
ba239b0 package.bbclass: Skip symlinks when searching for shlib dependencies since we can cross into the build system binaries
47780f8 Recipe for udev-124
4c78c04 oprofile: Fix patches to work with a more recent version
1166e11 poky-fixed-revisions.inc: Bump oprofile and web-webkit revisions/dates
1765792 webkit-gtk: Disable the internal 'fast-malloc' and use the perfectly adequate system malloc
39a81a4 tune-xscale.inc: Compile webkit-gtk for armv4t since there are massive alignment issues with double word instructions with webkit on armv5
29b0344 gnutls: Stop gnutls using the build system zlib
351dd33 glib-2.0: upgrade to 2.17.3 in bleeding
285ac1c Add insserv
bd26751 networkmanager-applet: use a .sh session script
670fd32 networkmanager: use a proper init script with depends
56ff3a1 gdb-cross-sdk: Add missing dependency on expat-sdk
b8fe224 expat: Add -sdk version
a86d34a initscripts: don't check for devfs, it's gone
ff5679f Bump OProfileUI revision. Bump Clutter revision.
976e3b9 nokia800: Fix machine description
02f6573 pointercal: This calibration applies to the ldp, not the sdp
2c46d61 formfactor: Add omap3430ldp based on the sdp
f66e079 Add the omap-34030ldp machine
d04db3c linux-omap: Differentiate between the 3430ldp and the 3430sdp kernels
0a62277 matchbox-keyboard; don't spawn a subshell
7ff4da3 portmap: remove unused patch
fa001bc xrdb: use .sh session script
8fab210 xserver-kdrive-common: change 12keymap and 90XWindowManager to .sh
3c181f4 glib-2.0: upgrade to glib 2.16.4
62cf617 settings-daemon: use a .sh session script
0504f93 xserver-kdrive-common: don't use run-parts but instead exec or source scripts
da7a051 portmap: add init script depends
fef1266 dbus: add init script depends
24c9b5d modutils-initscripts: add init script depends
8499da7 busybox: add init script depends
8c28cb5 xserver-nodm-init: add init script depends
267f97e dropbear: add init script depends
9ae4645 netbase: add init script depends
95eb982 psplash: add init script depends
1f36523 avahi: add init script depends
26628bf apmd: add init script depends
bde70a9 initscripts: add dependency headers
2a7b3ad poky-fixed-revisions.inc: bump desktop srcrev
1bb8542 initscripts: do not check for kernels <2.4 on mounting swap
a243bf5 keymaps: initscript can be sourced
4322a92 modutils-initscripts: do not call depmod on boot time if not needed
bca3ead dpkg: rm rcS.d/S98configure to not run it on non-first boot
d44b557 dbus: start at rc5.d/S02 instead of S20
15cc35e xserver-nodm: sleep for 20s after X11 start to give time for x11 userland to boot
a0094b2 xserver-nodm: do not run itself in background
457dc1c xserver-nodm: start at rc5.d/S09 not S99
faf85bc Move avahi UI tools to a separate binary package.
0a9f1a2 pcmanfm: added missing dependency
398512e udev: use init script from OLPC
5e2864a vincent: added missing dependency on x11
4fb5a5a syslog-ng: added missing dependency on glib-2.0
0c01acd matchbox-applet-volume: added missing dependency on gtk+
abba46a libtool-sdk: create directories before staging into them
254aa06 libopensync: added missing dependency on zlib
655559f moko-gtk-engine: added missing dependency on gtk+
1b16736 libsync: added missing dependency on avahi
65950aa matchbox-wm-2: added missing dependency on gtk
9723000 openmoko-mediaplayer2: added missing dependency
5246cd0 liburiparser: added from OE (needed by openmoko-mediaplayer2)
44b8971 libspiff: added from OE (needed by openmoko-mediaplayer2)
3a7ed03 gccmakedep: added missing dependency on util-macros
08b2c3b imake: added missing dependency on util-macros
797944f networkmanager: added missing dependency on gnome-common
d1c8fbb lndir: added missing dependencies
853c881 puzzles: added missing dependency on libxt
9361ec0 oh-puzzles: added missing dependency on libowl
fe4bd95 matchbox-panel-2: added missing dependency on dbus-glib
59d28e0 wbxml2: added missing dependency on expat
2f19d88 libnotify: added missing dependency on dbus-glib
1a8244a libmokopanelui2: added missing dependency on dbus
5beb432 libcroco: added missing dependency on zlib
a89ebcb kf: added missing dependency on libglade
b43138a libgalago: added missing dependency on dbus-glib
4e7c418 gypsy: added missing dependency on dbus-glib
f7f367d contacts: disable GNOME-VFS
7c2d406 dates: added missing dependency on libowl
1dfb747 clipboard-manager: added missing dependency on x11
d512da6 contacts: added missing dependency on libowl
4a38dab packaged-staging.bbclass: force symlinking as ipkg->opkg link can be present
7344690 sqlite3: stage headers in do_stage task
bc0a19c vte: added missing dependency on ncurses
32b7efc fstests: added missing dependencies
7f8da38 packaged-staging: allow to set DEPLOY_DIR_PSTAGE in local.conf
8344c7b fontconfig: updated to 2.6.0
98b1bac fontconfig: drop freetype-native dependency
954f1cc Bump oprofileui revision
83ea1f3 apt-native: create var/log/apt/ dir so rootfs building will work
47885dc rootfs_deb: use dpkg-scanpackages as our apt-native does not have apt-ftparchive anymore
c12a908 dpkg: ncurses were needed only for dselect
bc194fe apt-native: remove db-native and curl-native dependencies
5ec2c0b apt: moved apt dependencies to apt recipe
d6c1ea9 ipkg-link: Drop
d5d1466 handbook: Update to reference opkg. not ipkg
8e9f535 oprofile: Add RRECOMMENDS for kernel-vmlinux
a6e8538 linux-rp 2.6.26-rc4: fix c7x0 config, added patch for unbreaking CPUFreq
87905fd linux-rp: mark 2.6.26-rc4 as default for c7x0
8ce2e75 webkit-gtk: For now, don't pull in gstreamer plugins or gnome-vfs on darwin
4f471c9 site/arm-darwin: Add/fix various entries
1308e6e site/common-uclibc: Add some extra entries
8722fb9 bzip2: Add 1.0.5 and autotool it
85221a3 clutter: Add missing patch
f4f936a clutter-svn: Update enable-tests patch after recent svn changes
932d0b0 Use /sbin/iptables if which iptables fails.
41d987a nokia8x0: Serial console is on ttyS1
b3fb3cc linux-nokia800: Add diablo n800/n810 kernel
a954363 apt: bump PR after last change
bcfd6c0 apt: unbreak host checking
1d73583 initscripts: don't exit in sysfs.sh as this is sources
6b0a796 initscripts: remove obsolete tests
6cd4260 initscripts: don't create subshells for simple tests
5da8c4a xserver-kdrive-common, xtscal: move the X session script from former to latter
31006b9 xserver-kdrive-common: remove the xrdb session script, the xrdb package has it now
01c743d xrdb: move the xrdb xsession from xserver-kdrive-common to here
9b63c68 xorg-app: remove unused patch files
f6e7776 udev: save another fork in mount.sh
9f5ec59 poky-fixed-revisions.inc: bump panel version
424de08 gtk: upgrade to 2.13.3 in bleeding
43f5623 vte: ship the pty helper
7717814 udev: don't fork so much in mount.sh
f25cb73 ubootchart: increase priority of ubootchartd so it replaces init
bedf34b poky-fixed-revisions.inc: bump matchbox-desktop version
1f96af0 formfactor: add omap-3430sdp
c8bccd9 apt: added forgotten patch
d1cee61 pointercal: add omap 3430/zoom calibration
91d7c5b apt: update to 0.7.14
7e8cf4d dpkg: upgrade to 1.14.19
2bbbafb gst-plugins-base: upgrade to 0.10.20
f2797b3 liboil: update to 0.3.14
27ca3c3 opkg: S98configure script is needed only on first boot
ba3f99d gstreamer: upgrade to 0.10.20, drop merged patches
0f31e7d gst-plugins-base: pass -f to rm to avoid failure if reconfiguring
a9151d4 poky.conf: changed comment about opensync
9b2c23f libsync: update dependencies to OpenSync 0.36 components
16f77e2 poky.conf: re-enable OpenSync components for world builds
08e1e60 opensync: drop SVN recipes
323cb70 syncml-client: drop as it is not fetchable anymore and OpenSync has own plugin for SyncML
e108246 cmake: remove non-native one as cmake cannot be cross-compiled yet
d3f559d package.bbclass: changed library regexp to get dependencies for opensync plugins properly
347ed8a checksums.ini: added some new entries
b032203 msynctool: added 0.36
bd9cc19 libopensync: added check to dependencies and patch to get rid of Python
42243f8 libopensync: allow to build plugins in their source dir
3a9ee10 libopensync: zlib is not required
c6e9ca1 opensync: add 0.36 (latest stable)
6c0e524 libsyncml: added 0.4.6
da3040f cmake.bbclass: added version from OE + cross-compilation support
d03024f cmake: added 2.6.0 (based on OE 2.4.8 recipes)
a1f24d1 opensync: set SVN versions as non-default
50f13f9 opensync/syncml: Sync with changes in layout upstream
30d39ad poky-autobuild-notifier.bbclass: Make sure the message is sent to all recipients
1033722 poky-autobuild-notifier.bbclass: Fix parse error
e38122a scripts/poky-autobuild: Activate poky-autobuild-notifier
a833e9a classes: Add poky-autobuild-notifier class
afe20e4 settings-daemon: drop the use of xrdb as its old school
51948ab lirc: 0.7.1 -> 0.8.3
ba66617 Drop empty directories
005c666 bash: update patches to 039
90bafd3 speex: Drop 1.1.12+1.2beta2
778546e Drop empty directories
99efd20 lzo: Drop 1.08
322393c linux-hotplug: Drop, we don't support 2.4 kernels
5b286d9 linux-libc-headers: Clear out old versions
fa3ae72 linux-libc-headers: Clear out old versions
25c0b97 linux-libc-headers: Clear out old versions
018963d gtk-engines: Drop 2.7.1, make 2.12 default
9c0b1af db: Drop 4.1.25
59ac2af apt: Remove 0.7.2
5d4591b valgrind: Drop 3.2.1
bcbc39b syslinux-native: Drop old versions
8376756 task-poky-x11-sato: Remove matchbox-themes-gtk, its not needed
0d00736 gtk+: remove 2.6.10
0a2c4cd gnome-keyring: remove old 0.8.1 version
4f44cc1 contacts: update to 0.9 and refresh patches
5b6fb58 vala(-native): added to satisfy dependencies of openmoko-terminal2
af93369 openmoko-terminal2: fix name of Liberation fonts package in RDEPENDS
c931b75 tiff: make it work after libtool upgrade
3c58460 meta-toolchain: Fix to use layout_libdir
2c74c80 meta-toolchain: Make sure lockfiles directory exists
19968fa poky-fixed-revisions.inc: upgrade e-d-s to r676
6a7b00d poky-fixed-revisions.inc: bump gconf-dbus version to 693
74df02e gnome-vfs: remove 2.18.1, unused now
9745db6 packaged-staging.bbclass: Fix indentation
168fda4 packaged-staging.bbclass: create the opkg directories as required (from Richard)
f12d247 glib,atk,pango,gtk+: add unstable releases and use in poky-bleeding
4d650a7 dbus-glib: upgrade to 0.76
f37e581 initscripts: use pidof command in killproc() function
7f5b6f9 initscripts: rename simple shell scripts to *.sh so they are sourced instead of forking
b357bf3 initscripts: dropped suport for mtdram style ramdisk
123cce0 initscripts: do not install 'devices' initscript - we do not support devfsd
a8cda2f libtool: changed staging - will unbreak pulseaudio
f3d0826 pango-1.18.3: move the SRC_URI defintion to the bb files as the patches to apply are not correct for all versions
4ffff2e pango-1.16.5: remove, it isn't used
a55c18a atk_1.18.0.bb: remove as it is unused
4353e39 poky-fixed-revisions.inc: Update SRCREV for opkg 4467 -> 4488
7fc8a73 gst-plugins-good: Add RPROVIDES for gst-plugin-id3demux
7438d56 image.bbclass: Make sure DEPLOY_DIR_IMAGE exists before running image generation
75d7e7c popt: 1.13 -> 1.14 to fix uclibc issues
50d816f Add formfactor to handbook todo list
1679f80 clutter: Prefer svn version
2a8cda9 clutter.inc: Add omap-3430sdp options
1ef9efb task-poky-nfs: Fix for uclibc
deb75e0 gtk+.inc: Handle uclibc case correctly
f057afb local.conf.sample: Use pokylinux.org
822ea0e bitbake: apply r1075 from upstream to get postinsts working again
d99418a poky.bbclass: Use pokylinux.org as the source mirror
f873d55 prelink: Merge DTPOFF32 fix into main patch
5d40cb0 prelink: Add fix to correctly handle R_ARM_TLS_DTPOFF32 symbols
7f0ef9e poky-fixed-revisions.inc: Bump matchbox-desktop to get as-needed fixes
96fa4cd glibc-2.6.1: Add include-fixed,patch to fix issues with recent gcc
64a6478 gcc-cross-configure.inc: Move libssp to staging directory
3bac7a0 tune-cortexa8.inc: Disable -ftree-vectorize option for libxcursor for now
8dde4c7 linux-omap: Add 2.6.22.19 version
d2ae519 conf/machine/include: Add tuning .inc files from OE.dev
343c2cf poky-external-csl2006q3.inc: Set TOOLCHAIN_OPTIONS so the sysroot is set correctly
3c2996b avahi.inc: Add missing libglade dependency
3dbb2c0 Newer versions of gcc have multiple internal header directories and when glibc builds using -nostdinc, it must also add all these internal directories via -system.
dd5ed4b Adds a patch for glibc-2.5 so as to no longer reference linux's private asm/procinfo.h and instead use a glibc internal definition for HWCAP_VFP.
94d87fa avahi: enable GTK support (required by OProfileUI)
f3d5c0f distcc: ship fixed desktop file to get QA happy
23603c7 mtd-utils: move tag to current HEAD - fix build error on Fedora 9 (reported by prpplague)
bb3a13b vte: libvte package should not contain libvte.so
ee47fe0 Add eabi7 POKYMODE for csl2007 toolchain for experimentation
d03981d gcc: Add csl 2007q3 from OE.dev
76c8b40 opkg prints 'loading conf' informations so we get two lines each time
8009f0e rootfs_ipk.bbclass: do grep in install_all_locales just once
99e0700 rootfs_ipk.bbclass: reformatted install_all_locales function
eedc6b9 rootfs_ipk: added ROOTFS_POSTINSTALL_COMMAND
d35ae18 poky-floating-revisions.inc: Disable webkit-gtk
bb0b617 stage-manager-ipkg: Fix quoting in sed expression fixing sed errors
dedaeb4 packaged-staging.bbclass: Tweak package install command
65ff103 pulseaudio: add forgotten patches
b6f01d3 poky-floating-revisions: Prune pointless PREFERRED_VERSIONs
7186fa2 poky-fixed-revisions: Prune pointless PREFERRED_VERSIONs
efbf8bc poky.conf: Move fixed revisions to a separate file, add floating revisions file merging in older file contents. Set bleeding builds to use the floating revisions.
aa6d1a3 task-poky: Split task-poky-x11-sato into a separate file
2e38d27 task-poky: Split task-poky-apps-x11-pimlico into a separate file
d4e39f9 rootfs_ipk.bbclass: Fix for use with lock capable opkg
f6d53bb libatomic_ops: added forgotten patch
8678ec5 rootfs_ipk.bbclass: remove opkg lists later as some rootfs postprocessing may require them
626a4ac rootfs_ipk.bbclass: added install_all_locales function
14b747c rootfs_ipk.bbclass: do not install glibc-localedata-i18n separately - language support will fetch it automatically
31a8eb3 linux-rp_2.6.25+2.6.26-rc4: Bump PR after kernel.bbclass changes
7a9da6a kernel.bbclass: Sync with OE and get recent kernel i386 -> x86 fixes
e284465 v86d: Force the correct configure options since it doesn't give sane defaults when cross compiling
2b2c8ec poky.conf: Update exmap-console SRCREV
0700c75 renames CVS_TARBALL_STASH to SRC_TARBALL_STASH which does the same thing but just has a slightly nicer name.
bcc0079 qemu-config: Add extra options to the default exports file
342914e poky.conf: Update opkg and derivatives from 4209 to 4467
820bfa7 bitbake.conf: Fix PARALLEL_MAKE
6316aa9 checksums.ini: added some new entries
3f2be0f linux-rp-2.6.25+2.6.26-rc4: Drop unused patch
763cea2 linux-openmoko: do not provide broken symlink to latest image - kernel.bbclass do that better
2410184 linux-rp: Add 2.6.25+2.6.26-rc4, make default for qemuarm, qemux86 and spitz
2ef11ee linux-rp: Sync recipes with OE.dev
3618a08 linux-rp-2.6.23: Add patches from OE.dev
fe8d060 linux-rp-2.6.24: Add patches from OE.dev
47a464d linux-rp-2.6.24: Add patches from OE.dev
ecec2e5 linux-rp-2.6.24: Sync defconfigs with OE.dev
2850555 linux-rp-2.6.23: Sync defconfigs with OE.dev
04e4de5 v86d: 0.1.3 -> 0.1.5
578d807 libpng12: 1.2.16 -> 1.2.20
e154555 qemu: Fix SRC_URI
9e6cfe2 base.bbclass: Disable do_mrproper - it doesn't do anything sane/useful
6a86b13 Add TI OMAP 3430SDP Kernel and machine file.
6bb1c61 Remove 'bogus' kernel for LogicPD Zoom. Should be provided through standard 3430SDP support.
b024871 Remove 'bogus' machine file. Zoom support should be possible through standard 3430SDP.
16b22d2 Add machine file for LogicPD OMAP3430 Zoom Kit
fe878ed Add kernel for LogicPD OMAP3430 Zoom Kit
391e762 libtool: do not stage - libtool-cross stage proper m4 macros
f83b1de Bumps the psplash SRCREV and removes the fbdev pixel format patch that has now been applied upstream.
d723f42 libtool: stage headers
dee07ad poky: update revisions of openmoko components
2d2c9c5 poky-image-openmoko: use webkit version of web
56bd25c openmoko: merge with OE
fb8af86 poky: sort SRCREV alphabetically
f4db03f pulseaudio: merge with OE + patches for libtool 2.2
d4740e0 libsndfile: merge with OE
27e194b libsndfile: there are c++ files in sources - fix configure.ac
10f85ff task-poky: Fix variable
f983d43 Actually make NETWORK_MANAGER overrideable.
acd0039 Make NetworkManager overrideable for machines.
bd07290 Adds support for changing the fbdev pixel format when the default (e.g. 8bpp pallet mode) isn't supported.
1db5747 openssl: Sync with OE.dev
83b46eb pokyABConfig.py: Add om-gta02
d604b45 machine/om-gta*.conf: Sync with OE.dev
887c877 poky.conf: Update libgsmd and add xserver-kdrive-glamo
39eb232 libgsmd: Sync with OE.dev
691f2eb Add xserver-kdrive-glamo from OE.dev
0ce2f38 gst-plugins-ugly: upgrade to 0.10.6
ce433ab formfactor: Rename fic-gta01 to om-gta01 as per upstream
8b243f4 poky-qemu.README: Minor updates
e95249b Rename fic-gta01 to om-gta01 as per upstream
c56b95f Rename fic-gta01 to om-gta01 as per upstream
2c4695a gcc-cross-initial-4.3.0: Add DEPENDS on mpfr-native and gmp-native
820845f packaged-staging.bbclass: The staging_packager function should not be installing the package, that is the job of the staging_package_installer() function which is called with the correct locks held
7b6f1b8 build.py: Fix task override handling (breaks compatibility but it didn't work at all before)
9d81637 event.py: Revert accidental but harmless commit
019392e Drop bbimage
c209f85 image.bbclass: Drop bbimage command
b85bc27 devshell.bbclass: Export needed variables
f7dd25d image.bbclass: Fix whitespace
240f403 checksums.ini: added some entries
8ca802e gnutls: update to 2.2.5 (security updates)
b3f86c3 bitbake.conf: Properly export the PATH variable
fe1c075 rootfs_deb.bbclass: Use DPKG_ARCH for the architecture field, not TARGET_ARCH since it breaks x86
831cf52 poky-image-minimal: Fix IMAGE_INSTALL
37f3bba module.bbclass: Fix external module version dependencies
bfe8092 poky-image.bbclass: Correctly handle inserting package-managers into images by making it an image feature
03c0969 poky-image.bbclass: Remove DISTRO_TASKS variable and replace with POKY_BASE_INSTALL
9519898 linux-mx31: disable CONFIG_LOCALVERSION_AUTO
fd7396b linux-mx31: disable CONFIG_LOCALVERSION_AUTO
a62a583 linux-nokia800: disable CONFIG_LOCALVERSION_AUTO
c5acfef linux-rp: disable CONFIG_LOCALVERSION_AUTO
6a468ef rootfs_deb.bbclass: Use /var/dpkg for dpkg status data
76df5ab base-files/initscripts: Switch to using /var/volatile for volatiles in common with OE.dev
1cc5d12 sysvinit: Enable volatiles caching
c87c8e4 initscripts: Sync populate-voltiles.sh performance improvements from OE.dev
b8d979b run-postinsts: Handle dpkg based images too
8b600697 rootfs_deb: Export OPKG_OFFLINE_ROOT for update-alternatives fixing dpkg rootfs generation
d35f304 gtk-icon-cache.bbclass: Using dashes in shell function names is a really bad idea
f1e89b2 bitbake: Sync with upstream
4bf7ed5 gcc-package-sdk.inc: Make sure c++ headers are included
7b86677 gcc-configure-*.inc: Fix up local-prefix and gcc-include-dir options
2036836 clutter-box2d: Install the file accounting for libtool
0b891ed task-poky-clutter: Add clutter-box2d
816639f task-poky: Split out tools tasks to a separate file
33826e0 task-poky: Split out nfs tasks to a separate file
dc101b0 clutter-box2d: Install blockbox example
a528013 poky.conf: Bump clutter-box2d SRCREV
7d4beb2 packaged-staging.bbclass: Make the class compatible with opkg, ipkg and ipkg-sh and allow auto switching between whichever is available. Fix task dependencies in BB_STAMP_POLICY == whitelist case. Remove now unneeded basic dependencies.
aa3141e image.bbclass: Fix locking so multiple image targets work
0394980 stagemanager-native: This uses no patches do don't depend on any patch tools
9909e98 patch.bbclass: Make it possibe to override the patch dependency
f0e154b packaged-staging.bbclass: Execute staging_helper earlier to make sure the configuration file exists when needed. When installing the package after building make sure the control and list files are created. Use stage-manager-ipkg-build instead of needing ipkg-utils-native
0b54064 stagemanager-native: Add stage-manager-ipkg and stage-manager-build
43a9974 gcc: Sync libssp changes from OE.dev
3c35b00 gcc: Sync with OE.dev
4c664f6 packaged-staging.bbclass: Improve postamble exit code handling
1cde663 Add clutter-box2d
703394c site/arm-darwin: Add ac_cv_va_copy
9bc7b7c meta-toolchain: Fix typo
0a4ca92 clutter: Use gtk-doc.bbclass
9b6d8f4 classes: Add gtk-doc.bbclass
baadb35 meta-toolchain: Fix symlink for darwin
1d4c242 meta-toolchain: Tweak CONFIGURE_FLAGS
3c819c6 meta-toolchain: Add some extra useful configuration variables and darwin specific tweaks
a71df55 packaged-staging.bbclass: Add code to handle checking the stamp dependency tree properly
217b864 Use /sbin/fdisk because not all systems has /sbin in PATH
71cb5a5 mtd-utils: update to newer snapshot
167052a bitbake: build.py: Need to run expandKeys before launching tasks
c7c7454 libetpan: mark cxx-is-here as a patch
9365115 libetpan: updated to 0.54, added curl/expat to dependencies
6f726d6 openssl: update to 0.9.8g (from OE)
e14d7dc bitbake: Sync with 1.8 branch
152f14b gnutls: update to 2.2.3
f59c859 checksums.ini: added gmp 4.2.2 and libtool 2.2.4
7564d63 base.bbclass: Add sanity check for multiple file matches to oe_libinstall from OE.dev
b6fefce7 autotools.bbclass: Switch stage_autotools_all to change la files itself and to stop using oe_libinstall
9b3ef75 initscripts: Remove mtab madness from checkroot.sh since it doesn't work with busybox mount and a symlink to proc is much easier
909ea43 poky-qemu-ifup: added NAT setup
afec17a jpeg: Drop more cruft from the debian patch
63109d8 libtool-cross: Add dependency on libtool-native
33fd511 meta-toolchain: Fix status file path and hence extras tarball generation
bae94f8 ipkg-utils: added quick hack to get images built under Fedora 9
1d4d53e jpeg-native: Drop, we don't need it?
4415259 jpeg: Rip out debian libtool hacks and use libtool-cross from staging. Also set tag mode to avoid issues with modern libtool
1b969af sanity.bbclass: Sync with OE, introduce TMPDIR ABI versioning, drop bitbake 1.8.6 cruft, only run the mmap_min_addr check on ARM when we need to run binary locale generation
63d1296 sanity.conf: Sync with OE, introduce ABI versioning for TMPDIR, bump minimum bitbake version
f7cabaa sanity.bbclass: Add check of the /proc/sys/vm/mmap_min_addr value and warn if its potentially problematic
6c004de uclibc: Add qemuarm machine conig
bad655b uclibc: Drop default uCibc.machine to make misconfigurations more obvious
09cc7bd uclibc.inc: Add note about enabling logs
8076a7b base.bbclass: don't add shasum-native dependency if we are building shasum-native
71f9395 task-poky-standalone-sdk-target: Drop uclibc-utils
be886a8 autotools.bbclass: There is no need to use the strange -t option to cp anymore
699b6f9 libtool-sdk: Make sure target directories exist
f6d5b98 scripts/poky-qemu-internal: Check /proc/sys/vm/mmap_min_addr value and error if its potentially problematic
584aeb5 libtool-sdk: Fix staging function
82c04d1 scripts/pokyABConfig.py: Add meta-toolchain-sdk to darwin builds too
f1432a3 task-sdk-host: Add libtool-sdk to darwin8 host packages
4a0a09e libtool: Add libtool-sdk
e60c8bb lame: bandaid configure
3f92181 scripts/pokyABConfig.py: Add meta-toolchain to darwin builds
2dad466 meta-toolchain: Don't remove .la files, try and fix them
12ea926 task-sdk-host: Add darwin8 override
b7e4fab meta-toolchain-sdk: Allow the default task to be overridden
b7c0867 site: Add arm-darwin8
3b53488 bitbake.conf/siteinfo.bbclass/package.bbclass: Add in support for 'darwin8'
fee0c6a icu-native: Bandaid do_configure
1fb007d freetype: Fix configure statement ordering to work with libtool changes
b15f41a portmap: do not install initscript with world-writable permissions
2e6d580 libtool: Upgrade 2.2.2 -> 2.2.4
2fdb008 poky.bbclass: Fix mirror URLs
01bb9af runqueue.py: Fix default whitelist variable value
f715ee6 poky-qemu-internal: give 128M for qemux86 - otherwise generating of locales fails
d6addd4 bitbake: Sync with 1.8 branch upstream for PREFERRED_PROVIDERS message improvements and BB_STAMP_WHITELIST functionality
cd4e478 packaged-staging.bbclass: Set BB_STAMP_WHITELIST with packaged-staging tasks, update package location code to deal with packaged which don't exist, preserve stamp timestamps when copying them
f674f81 libx11-sdk: Add xproto-native to DEPENDS
be66182 zlib-sdk: Make sure STAGING_INCDIR exists
317b536 sdk.bbclass: Instead of changing HOST_VENDOR which badly affects gcc compilation, modify STAGING_DIR_HOST.
a16b7a1 libtool-2.2.2: Add fix for patch from upstream
eaf9aa4 libtool-2.2.2: Cleanup patches
1122b00 packaged-staging.bbclass: Fixup do_prepackaged_stage references
97c2950 clutter: Update to latest trunk
648cb99 clutter: Fix configure with trunk
3f3eaca scripts/pokyABConfig.py: Change darwin builds back to full instead of incremental
d367e44 scripts/poky-autobuild: Correctly update the extra meta-darwin checkout
c812124 cairo: Add 1.4.14 back for now
cfa81e6 libx11: Add xproto-native to DEPENDS
b4b5d07 libx11: Fix command ordering
16e8921 libx11: Fix do_compile hack to use native headers and allow do_compile to run more than once
b110812 libtool-2.2.2: Add fixes for darwin, drop uclibc patch as it should no longer be needed
06fd2b6 base.bbclass: only depend on shasum-native if we don't have hashlib
6697984 sanity.bbclass: we don't use the md5sum binary any more, remove it
9fb8bc4 When checksuming tarballs use bb.utils.*_sum instead of calling commands directly
8bfb925 Use bb.utils.md5_file isntead of calling md5sum
a74658d Add md5_file and sha256_file checksum methods which use the builtin Python checksum code
d85e5ff scripts/pokyABConfig.py: Make darwin autobuild incremental temporarily
5e7604a gtk+: fix a warning when creating the file chooser
d14f7bd scripts/poky-autobuild: Fix quoting
21d5869 scripts/poky-autobuild: Fix darwin code to append, not overwrite
d9bb811 scripts: Add meta-darwin build to the autobuilder
732e3ca scripts/poky-autobuild: Really fix return value
7a0c34a gypsy: bump SRCREV to 147
14ccccf gmp-native: Fix PV
57d9d26 gmp: 4.2.1 -> 4.2.2
b4ebeec packaged-staging.bbclass: Fix variable name typo
04c650a scripts/poky-autobuild: Preserve exit code
7b717d2 pokyABConfig.py: Fix typo
a010a4c scripts/pokyABConfig.py: Add checkuriall test for qemuarm world
da27611 poky-autobuild: Attempt to clean up scripts slightly
5d5fab7 scripts: Allow passing multiple parameters to the autobuilder
3d7c155 uclibc-initial: Add ncurses-native to DEPENDS (from OE)
01daae9 scripts/poky-autobuild-postprocess: Ignore chmod failures
6a64dc6 scripts/poky-autobuild-postprocess: Don't clean the destination directory
aab46e6 scripts/poky-autobuild-postprocess: Remove paths from script
ff05951 scripts/poky-autobuild-postprocess: Fix typo
15218d4 scripts/poky-autobuild: Further path fixes
f466228 scripts/poky-autobuild: Fix directory expectations of the postprocess scripts
40d86fd scripts/poky-autobuild: Fix ordering
46e8a36 scripts/poky-autobuild: Source the environmental setup script earlier
6b8df05 scripts: Update autobuilder scripts to run postprocess after each task completes
e88c641 scripts: Add extra autobuilder config
9b0fe9f packaged-staging.bbclass: Fix install race, improve staging cleaning functions.
116861d handbook: s/COMPATIBLE_MACHINES/COMPATIBLE_MACHINE/
e1fcc01 base.bbclass: Remove unneeded imports
a0fe51b openswan: Fix SRC_URI
acc62fc bitbake: Tweak new URI checkstatus code slightly fixing two corner cases.
d10b266 base.bbclass: Add checkuri/checkuriall tasks to check validity of upstream source URLs
748039c bitbake: Sync with bitbake 1.8 branch
192e4fb base.bbclass: Add setscene task to handle preparing the work area at the start of a given task, fixing the handling of the rebuild task. This task removes the need for do_prepackaged_stage in packaged-staging.bbclass.
04e667e qemu: Fix arm exception handling missing symbol
64d3fee local.conf.sample: Don't ASSUME_PROVIDED gcc3-native anymore
7a0f31b poky.conf: Upgrade qemu r4027 -> r4242
389dc8c qemu: List and refresh the revert_arm_tcg patch
10e72e4 Bump SRCREV for clutter.
f3e36a1 Refresh enable_tests.patch for clutter trunk.
df99aab bitbake.conf: Add quoting to the CVSROOT option for the cvs fetch command fixing proxy server issues (thanks to Mike Turquette for the patch)
0e3508c qemu: Add revert_arm_tcg patch, drop gcc3 check patch
b1c880f gcc: Add 3.4.6 gcc-native
54b240e base.bbclass: Prefer gcc 3.4.6/7 over 3.4
869b97b qemu: Really use gcc 3.x
07a4980 qemu: Reenable gcc3
8d5784b qemu: Restore qemu r4027 until i686 issues are resolved
c060372 openobex: fix parse error
b5a8a56 qemu: Patch out gcc3 checks, limit the target list
3523d22 qemu: Move the gcc 3.4 checks to 0.9.1 only
13fccc7 qemu: drop unused insane patch
56a4a6f scripts/poky-qemu-internal: Enable n800 networking
927ad49 qemu-svn: Upgrade from r4027 -> 4242. Removes the need for gcc 3.x, adds USB networking for the n800
0e1fe20 qemu: Add two qemu usermode fixes
755df3a xserver-kdrive-common: do not load xmodmap - it breaks on 1.3.0.0
aa03bca checksums.ini: added some new entries
e02398f Fix runqemu to handle clearing args
8504906 Allow user-specified options to be passed to qemu via poky-qemu
5e6ec76 task-poky-standalone-sdk-target: Fix up to work with uclibc
5fd1cfb xserver-kdrive: added missing file
073895b uclibc: Add ncurses-native to DEPENDS
ea8f8be uclibc.inc: Fix HOSTCFLAGS change
b37a067 qemu: added SVN recipes
a2513fb xserver-kdrive: use extra-kmodes.patch for 1.4.99.901, changed status of patches
fe4ec82 qemu: switched to SVN
c7aafce xserver-kdrive-common: merged KDrive 1.4 support from OE
b07a4ad xserver-kdrive: mark merged patches
ff2e381 xserver-kdrive: added 1.4.99.901 (1.5-rc) from OE
6543b12 poky-nokia800-flashutil: Remove .16k file
8add63f scripts/poky-qemu: Add support for the nokia800-maemo machine
c7005b7 packaged-staging: Make sure the task is part of the default tasks chain
1cea70a libvorbis: Remove now uneeded hack
9fac1c5 prelink: Drop no unmeeded hack
c79d9c1 libtool-2.2.2: Add patch from upstream to fix -all-static flag issues
4f42e4f poky.conf: Drop QA_LOG, add QA_LOGFILE
1e53b0f insane.bbclass: Drop pointless QA_LOG variable, add QA_LOGFILE so QA errors can optionally end up logged in one place for ease of reference. Add sanity check searching for tmpdir references within built packages, not fatal at present.
9dc0c9f classes: Add packaged-staging.bbclass (from OE.dev)
90e7d08 libtool: Disable a section of the libdir-la patch since its doing more harm than good. This should fix sdk .la files at the expense of having to mangle files being installed into staging
a06b6cb base.bbclass: Fix dependency_libs libtool mangling regexp
bba4120 gdb-cross-sdk: Add missing ncurses-sdk dependency
d1440e6 ncurses: Add sdk version and tweak common files to adapt for this
5357a94 uclibc: add STAGING_INCDIR to host C flags to make it build on systems without ncurses-dev
8bd2f38 poky.conf: prefer full version of opkg to not build opkg and opkg-nogpg in one run
82ad25c networkmanager-applet: disable libnotify if we do not depend on it
a7acabe poky.conf: we use cairo 1.6.4 now so updated PREFERRED_VERSION_cairo
eab49b0 cairo: Bump PR after DEPENDS changes to cleanup the autobuilder
7445d67 sanity.bbclass: Add a check for dash as /bin/sh and error if found
00bbe8d gtk+: Fix libtool issue causing dynamic module loading to be disabled
a6bc7ad apmd: Improve libtool usage
efba2e5 libxt: Add STAGING_INCDIR to the cflags for compiling makestrs
a21dec2 cairo: added missing dependency on pixman
a3d63a9 linux-openmoko: switch to 2.6.24 (from OE)
e5444b0 poky.conf: generate UTF-8 locales only
2e83937 libx11: Add -I to the makekeys hack
eebe267 cairo: updated to 1.6.4
58d88ce meta-toolchain: Fix up various paths and file locations to be more consistent
28f93a6 meta-toolchain: use opkg*.conf
698f1b1 poky-eabi: use gcc 4.2.3
66df6d1 gcc: upgrade 4.2.2 -> 4.2.3
abca3ca tiff: upgraded to 3.8.2
54ba5b9 vincent: added patch for libtool 2.2.2
ef9f598 vincent: switched to SRCREV
69dad36 poky.conf: set SRCREV for vincent
6b43567 libtool: Make 2.2.2 the default
7818320 libusb: Tweak libtool 2.2.2 fix
8c47575 prelink: Add hack for libtool 2.2.2
8f60c0e libsdl-sdk: Add a configure prepend to make sure the custom acinclude.m4 is used
acd2ae1 pkgconfig-sdk: Fix duplicate patch application
76be5f4 libtvorbis: Fix with libtool 2.2.2
142d32e gettext: Add missing patch
46a5cd5 conf/machine/mx31*: Add armv6 to PACKAGE_EXTRA_ARCHS
05d6ea5 claws-mail: Drop uneeded custom do_configure from plugins
a8ed061 gettext: Backport updated macros from gettext 0.17 to avoid conflicts with libtool
fe074c7 poky.conf: Increase SRCREV for libfakekey, gaku and matchbox-desktop to gain libtool 2.2.2 fixes
6a87048 python-pygtk: unbreak
e5e8dd3 freetype: Add --force option to libtoolize
52f94fa fontconfig: Tweak configure for libtool 2.2.2
993b552 libpng: Fix makefile for libtool 2.2.2
461d3b4 libusb: Revert patch for now
4c6ff89 cario: Add fixes for libtool 2.2.2
b38bc53 claws-mail: Drop strange custom do_configure, fixing libtool 2.2.2
782b9d4 gst-ffmpeg: Patch out beos bits from ffmpeg which break libtool 2.2.2
9bedb92 pkgconfig: Remove custom do_configure from pkgconfig-native, tweak autofoo.patch to fix some missing quotes apply autofoo.patch to all versions
04f6ecb libusb: Add patch to fix issues with libtool 2.2.2
8bf48df hal: Add fix for libtool 2.2.2
a905da3 tasks-0.13: Add configure fix for libtool 2.2.2 (already merged into svn)
ce7bf0a freetype: Call libtoolize in custom do_configure to unbreak libtool 2.2.2 builds
4ce65a3 bluez-utils: libtool 2.2.2 puts files in different places, workaround...
ca0f459 gstreamer: Remove horrible lib-link.m4 macro file which breaks libtool 2.2.2 with search path insanity
50f74c5 ncurses: Enable using libtool, fix makefiles so libtool works
fd84c3e ncurses: Drop unused patches
d6c7475 web-webkit: Add patch to configure for linking with g++ tweak else it breaks with libtool 2.2.2
0ba7ff1 networkmanager: Fix broken makefile for libtool 2.2.2
5255947 opkg: added version without GPG dependencies
59c131d opkg: really disable GPG in native and sdk
d32078c site/arm-darwin: Add ac_cv_func_posix_getgrgid_r result
00f2aa5 glib-2.0: Update patch to work with libtool 2.2.2
d12aa66 webkit: updated to r31859 and disabled SVG fonts
0e55205 libtool-2.2.2: Update further patches
21c0f07 libtool: Add 2.2.2 (not default)
2e46a28 libtool-1.5.10: Drop unused patch
02a180a package.bbclass: unbreak
4f2380b llvm-native: Export the LDFLAGS, we do need them regardless of what the llvm devs think
ef949a6 Add llvm-native
028178b package.bbclass: Add patch to try and handle dynamic librbary dependencies on darwin through libtool
f09d3d9 task-poky: Add webkit back in, we have the rootfs space now
cb1897b bitbake.conf: Add tar-native to ASSUME_PROVIDED, add FETCHOPTION_checkonly_wget
f721fdc qemu: Add qemu-sdk cvs version
4b229ab poky.conf: Set SRCDATE for qemu-sdk and qemu
d92851a libtool-cross: unbreak dolt.m4
0f331d1 libtool-cross: Enable using dolt for the cases where it works, work around broken libtool fallback handling
92e6c2c checksums.ini: added some new entries
644a8c7 qemu: Prefer cvs version
40a6551 scripts/poky-qemu: Add nokia800 support
faf5513 scripts: Add support for nokia800 to runqemu
5091c0b qemu-cvs: Add nokia800 emulation
37ddd00 poky.conf: Set SRCDATE for qemu-native cvs version
d1a700a qemu: Update cvs version to 20080308
fb45df8 qemu-0.9.1: Remove hacky patch and call configure correctly
26a637a mtd-utils: update to git HEAD
6c55027 external-csl-toolchain: Fix debug package creation
8f0ca1d matchbox-session-sato: fix postinst
c42d54f task-poky: matchbox-sato was renamed
d843068 task-poky: install matchbox-session in base X11 task
c9ecfc0 matchbox-session-sato: start Sato components
ac82765 matchbox-session: basic Matchbox session start script
a42d7d3 matchbox-(wm/sato): moved creation of x-session-manager to matchbox-sato
f0c6b03 poky: prefer xtrans 1.0.4
ee0426b xorg-headers-native: Drop, its not needed
90c8615 image.bbclass: Run runtime_mapping_rename over PACKAGE_INSTALL so debian renaming doesn't break the variable
1803f03 kernel-arch.bbclass: Sync with OE.dev
30f83b3 kernel.bbclass: Use INHIBIT_DEFAULT_DEPS to drop virtual/libc dependency since the kernel doesn't need it
63c1c2a apmd: merge recipe cleanup with OE
2c147f8 atk: merge unification from OE
b796776 coreutils: cosmetic merge with OE (no changes)
06976c6 fakeroot: merge 1.9.4 from OE
b3dddcd gmp: do not build with ARM Thumb
0fd6b09 gtkhtml2: added maxrev informations to all merged patches
325d3a9 initscripts: show banner when console is on serial - close #3767 (from OE)
294782d kexec-tools: merged unification from OE
3e5ee5a task-base: sync with OE
5be12a8 setserial: merge with OE (no code changes)
32cb209 xorg-lib-common.inc: Remove xorg-headers-native, we shouldn't need this...
abb1097 glib-2.0: upgrade to 2.16.3
27331b1 poky.conf: Bump oh-puzzles SRCREV
f73c0e4 Add site.conf.sample showing examples of proxy server configuration
67d5f04 bitbake: Improve fetcher runcmd function so error messages are visable and various variables are exported for the benefit of the git fetcher
a546b63 scripts: Add git proxy script
be963bf bitbake: Add proxy support to CVS fetcher (patch from Cyril Chemparathy)
d9c27b9 Fix Phytec MX31 recipe
688af77 Update Phytec kernel to the latest BSP drop.
ebc31ae xtrans: Remove bogus patch reference
0b0cf02 gcc: Add 4.3.0 from OE.dev (not default)
1f8b969 xtrans-native: Revert to 1.0.4
175e3be xtrans: Revert 1.1 to 1.0.4 to fix abstract socket breakage and fix the toolchain
b4927ba meta-toolchain: Use layout_libdir in PKG_CONFIG_PATH
cdc9910 meta-toolchain: Remove all problematic .la files
fdf78e2 gst-plugins-bad: Disable cdaudio
d7b04be Update the PKG_CONFIG_PATH in the environment-setup script to reflect the new path.
a3b7d74 xserver-kdrive-common: check for execute bit on dbus-launch, not just presence
ea0ec5a xserver-kdrive-common: always start a session bus when X starts, as X is the session
f29e0ad matchbox-wm: install matchbox-session as the x-session-manager alternative
feb437e xserver-kdrive-common: try running x-session-manager on startup before x-window-manager
5c3b29a qemu-helper-sdk: Add poky-qemu-ifdown (#863)
8ed65ea gdb: it is GPLv3+ now
a0f23c6 gdb: upgraded to 6.8
98eb6fe python-native: added forgotten patches
2f3ca93 matchbox-theme-sato: unify recipes
cdaaa55 gtk-sato-engine: unify recipes, bump PV in svn recipe
5121d33 gtk-sato-engine: make gtk-theme-sato depend on engine
fcce99b matchbox-common: moved to meta-extras
3502262 matchbox-panel1 (and applets): moved to meta-extras
634eb19 vte: package minimal termcap to get mb-terminal working
4622d4d flumotion: improve packaging
69d4a92 libxosd: merge with OE (switched to SRCREV, fixed packaging)
a177388 poky: added SRCREV for libxosd
27f3b8d python: upgraded to 2.5.2 (merged from OE)
4d10f01 python-imaging: added from OE (required for flumotion update)
dc5aa58 libtiff: added 3.7.2 from OE (required by python-imaging)
4d6f846 flumotion: merged OE improvements (fixed packaging, more revdeps)
fd652de insane.bbclass: use 'desktop-file-validate' from staging not from host system
1fb5af0 flumotion: python-pygtk2 is now python-pygtk
2c22638 python-pycairo: nasty pkg-config fix from OE
46e13ce python-pygtk: imported changes from OE
6569da9 zope: merged fixes from OE
5675f40 gstreamer: adapt po-makefile-fix patch a bit
40eb81c cpan.bbclass: remove bashisms
49f680f run-postinsts: switch to opkg
133a314 webkit: upgraded to rev 31467, enabled SVG fonts
544fa41 poky: bump WebKit to rev 31467
d4847af gstreamer:patch to fix problem with mkinstalldirs (from OE)
841b37b bitbake: Fix a bug where changed files weren't getting spotted and an invalid cache was being used
ea20fb8 checksums.ini: added some new entries
0b285f9 preferred-xorg-versions: sync with updates
62c1e87 printproto: upgraded to 1.0.4
f54550a libxinerama: upgraded to 1.0.3
8e3e466 libx11: upgraded to 1.1.4
c81efe4 libxscrnsaver: upgraded to 1.1.3
3d4ffa2 libxkbfile: upgraded to 1.0.5
4276b1c libxv: upgraded to 1.0.4
ba57c48 pixman: upgraded to 0.10.0
25b0897 xinit: upgraded to 1.0.8
7543adc xrdb: upgraded to 1.0.5
9981f89 xset: upgraded to 1.0.4
6fe21f6 xrandr: upgraded to 1.2.3
d9e7625 xprop: upgraded to 1.0.4
270f331 xev: upgraded to 1.0.3
74abe03 xauth: upgraded to 1.0.3
2d3c00b x11perf: upgraded to 1.5
76beedc tzdata: upgrade to 2008b and merged few changes from OpenEmbedded: - added three unique Australian timezones which were not covered by any other   cities already in the main package. - every entry in PACKAGES is by default in PROVIDES, so remove the bogus PROVIDES
129ba27 gettext: switch to autotools_stage_all
cd22fcc pkgconfig: Fix problems with the sysroot implementation merged upstream, switch pkgconfig to link against an external glib-2.0
c3735c4 pkgconfig: and fix the patch, not my day...
2e5c5b9 pkgconfig.inc: Fix glib version
dffb3e8 pkgconfig: Drop the right patch
5be3cd8 pkgconfig: Update to 0.23, drop merged sysroot patch
d019cee diffutils: use update-alternatives for cmp (also provided with busybox 1.9.1)
069bb40 bash: fix postinst to not touch host system
513eb4b mtools: do not use X11 for non-native version too
4bca8a4 mtools: do not link with X11
678bf73 linux-mx31: bump PR due to last kernel.bbclass change
e06e7e8 kernel.bbclass: use u-boot-mkimage-native for uImage kernels (from linux.inc)
ecc896b linux.inc: use u-boot-mkimage-native for uImages
85e3e72 u-boot-mkimage-native: use 1.3.2 version instead of Openmoko patched version
c642220 xtrans: Add patch from upstream to fix abstract socket handling
a0d0bd2 gpgme: split packaging to package per library
b33f6c2 pth: keep binconfig in -dev package
8f84474 neon: upgraded to 0.28.1
8d715a2 autotools.bbclass: Drop enable-maintainer-mode until such times as its been tested properly
d128d6f rootfs_ipk.bbclass: new update-alternatives script use OPKG_OFFLINE_ROOT (from OE)
121b6e1 autotools.bbclass: fix typo in --enable-maintainer-mode
e790b1a speex: upgrade to 1.2beta3 and disable floating point usage
fa33400 automake: finish updating to 1.10, move some content between files to clean up
1e90da6 git: upgraded to 1.5.4.4
0f6cdfe curl: upgraded to 7.18.0 (latest stable)
3b6a4f9 gnutls: upgraded to 2.2.2 (latest stable)
a9c49dd automake: upgraded to 1.10
e8efeb3 kernel.bbclass: Add staging hooks
fece08f icon-naming-utils-native: bump PR due to staging updates
013882e autotools.bbclass: Add autotools_stage_dir to help staging directories and increase list of directories to stage (include base_sbin, base_bin and libexec)
33010a8 gcc-configure-cross.inc: Fix intertask gcc dependency
849af9b native.bbclass: fix do_stage (s/"]/" ]/) - taken from OE
dd89cae neon: Add missing patch
b4fd5ce neon: Work around pkgconfig issues
08e51e1 bintuils-cross.inc: Merge improvements from OE.dev
e746654 gst-ffmpeg: Add missing patch
ad621cb gst-ffmpeg: Run autoreconf instead of a broken custom do_configure
19f05c6 gst-fluendo: Run autoreconf to fix configure's libtool and unbreak the packages
4647fc8 tremor: Use autotools_stage_all
4e2e099 libgcrypt: Sync with OE and fix patch
b431cdd telepathy-mission-control: Fix pkgconfig file
1607c8f gnutls: Fix pkgconfig patch
b1d71fa libgalago: Fix pkgconfig, use autotools_stage_all
72e2faa wv: Fix DEPENDS and pkgconfig file
7377fc1 openssl: Remove uneeded library linking directory
1cdaf69 db-native: Add custom stage function
ce1e2f2 libgcrypt: Upgrade to 1.2.4 and add pkgconfig support
d36c1d8 autotools.bbclass: Some further tweaks to autotools_stage_all
69215b0 autotools.bbclass: Fix typos
80ec669 autotools.bbclass: Handle case where  is an empty directory
b26a7c4 autotools.bbclass: autotools_stage_all - improve handling of datadir
13de832 gcc-3.4.4: Add missing patch
b02d95a autotools.bbclass: Add handling binary staging capability to autotools_stage_all for compatible binaries fixing various -native package issues
498b4af libxslt: Add missing patch
c3a4acb libxslt: Upgrade to 1.1.22 with pkgconfig fixes
ab5c2b9 xsp, xpext: Use autotools_stage_all
df37962 vte.inc: Don't RDEPEND on termcap
e5694cf vte: Merge from OE.dev, upgrade to 0.16.9 with fixes
dc9026d curl: merged 7.16.4 from OE
df498e4 poky.conf: fixed update-alternatives-native provider
e292c51 gnutls: Sync with OE for enhanced configure patch, remove unused file
61d6810 Remove unused patches
1c7de99 popt: upgrade to 1.13
51fc436 base.bbclass: Sync with OE.dev
4b55118 cpan.bbclass: Fix native staging functions (sync with OE.dev)
7c097c7 package.bbclass: Sync with OE.dev
75d9692 poky.conf: Enable QA_LOG
b1e715e insane.bbclass: Sync with OE.dev
44b538e update-alternatives-cworth: dropped as they are now generated with opkg recipe
fe96342 opkg: provide update-alternatives(-native)
2f696d3 opkg-sdk: fixed directory for opkg informations
38854a1 autotools.bbclass/native.bbclass: Use autotools_stage_all instead of oe_runmake install for staging autotooled native packages (from OE.dev)
90552a3 gcc-cross-kernel: Add missing patches
845ac92 mtools-native: Don't build X11 components
a99199d insane.bbclass: find desktop-file-validate on the path, so it can be added to ASSUME_PROVIDED
aee156e gcc-package-target.inc: Add back precompiled header fix lost in the gcc changes
6068746 update-alternatives-cworth: switched to opkg
322fe39 opkg: depend on update-alternatives
be6e02a gcc-cross-kernel 3.4.4-csl-2005q3: unbreak after gcc changes
3853440 xtrans: remove unneeded patch
2e9db06 dbus-native: fix builds without X11
e52c496 glibc-initial: Stage stdio_lim.h header
14d5f58 image.bbclass: s/ipkg/opkg/ - spotten by Koen Kooi
c2c6f59 rootfs_deb.bbclass: s/ipkg/opkg/ - spotten by Koen Kooi
935a4d1 gcc-csl-arm-2005q3: Tweak PV for csl 2005 toolchain
fc8e9ff gcc: Drop gcc 4.0.2, nothing uses it
1f909ea gcc-configure-cross.inc: Remove inter-task dependency for now
b905e04 gcc: Add missing files + changes from the last commit
1255ee6 gcc: Merge in the major cleanup I made in OE.dev
402c7dc external-poky-toolchain: package-status doesn't exist any more
c52bb0c external-poky-toolchain: Fix circular references
eec0604 opkg-ipkg-compat: remove as we do not need it
f6b3acd opkg-collateral: missing rename
25e3666 ipkg: drop empty dirs
615844a task-sdk-host: switched to opkg
7177c20 meta-toolchain: switched to opkg
c006615 ipkg: dropped
2d1abf5 task-base: bump PR due to opkg switch
280f86e rootfs_ipk/image.bbclass: removing of opkg lists data to rootfs_ipk class where it should belong
beb83fd opkg-collateral: moved from ipkg-collateral
346dec3 rootfs_ipk.bbclass: switched to opkg
15f1fd7 package_ipk.bbclass: switched to opkg
e6746ff opkg: added forgotten file
f608d3f opkg: fixed opkg-native to not create /usr/lib/opkg/opkg/ directory
23684b6 opkg: moved common stuff to opkg.inc, added S98configure
7ed9468 poky.conf: added SRCREV for opkg-sdk
2274035 opkg-sdk: added version for meta-toolchain
f7be49a curl-sdk: added 7.16.2 required by opkg-sdk
a619546 gcc: Drop 3.3.4
f2888e8 poky.conf: fix gnome-vfs preferred version
45bed45 zaurus-updater: Add deploy before populate_staging
2d849a9 gnome-vfs: upgrade to 2.22.0
251979e fic-gta0x: disable EXTRA_IMAGEDEPENDS
2c74957 meta-toolchain: many changes to make it expandable with ipkg
6b77c9e task-sdk-host: added ipkg-sdk
846e9b5 ipkg-sdk: added for meta-toolchain
3a2d92f ipkg: move PACKAGES mangling into ipkg itself
64c7b6e poky.conf: bump opkg SRCREV to get our fixes
0896690 db: switch sleepycat.com SRC_URIs to oracle.com
ffc5880 bitbake.conf: Sync with OE.dev
853280f bitbake: Update with changes from bitbake 1.8 branch
097076d stage-manager: Sync with OE for various fixes
5f391a1 poky: bump SRCREV for opkg to 4206
3a75fb3 poky.conf: added SRCREV=4142 for opkg
fe4cd71 pth: upgraded to 2.0.7
814e308 pth: added 2.0.2 (from OE)
362ccc1 site: merged ac_cv_func_posix_getgrgid_r from OE (needed by glib 2.15.6+)
a2f942c site: merged common-glibc from OE
646f207 gpgme: removed libassuan dependency as it is needed only for gpgsm which we do not build
83bf46f gpgme: moved gpgme-config into gpgme-dev package
2567946 gpgme: reformatted
70483e4 glib: upgrade from 2.14.6 to 2.16.1
1fe9669 libassuan: added 0.6.9 (from OE)
e210441 opkg: added from OE
3f65998 gpgme: added 1.1.4 (from OE)
11ca8a4 libgpg-error: upgraded to 1.6
d0de533 gst-ffmpeg: added gst-plugins-base dependency
329e6b5 bootimg.bbclass: removed bootsplash task support - we do not have such one
024567e cross-linkage: Add improvements from OE
95d8d6b staging-linkage: Add from OE
beeeb78 poky.conf: Use += with INHERIT
c80c235 gcc-package.inc: Drop libgcc-dev package since its part of the main gcc package
2f2086c task-poky-sdk: Remove libgcc-dev, its empty and now part of gcc
f54f499 dbus: Add missing libsm DEPENDS
570f12e base.bbclass: Let unpack task remove S beforehand which fixes clean handling. Optimise some expand and getVar calls
cd11b9e libtool-cross: Ensure staged libtool is the patched version
0e82382 qemu machines: enlarge rootfs to 280M
883cf6f base-files: added GPL-3 LGPL-3 GFDL-1.2 licenses
cd0038b less: upgrade to 418
0560f38 poky.conf: we are after release so update DISTRO_VERSION
307bc14 tune-arm1136jf-s.inc: fix arm/thumb switching
68e1ac6 ohm: Fix configure problems
e3c007f stage developent files for tidy
4d19e95 linux-mx31: bump PR to get mkimage problem fixed
f70ffd8 u-boot-mkimage-openmoko-native: stage mkimage instead of deploying - should fix linux-mx31 build
64e621c gcc: remove precompiled c++ headers as they take lot of space and are not required
96c6976 preferred-xorg-versions.inc: bump libxfont
e786d90 gcc-cross: do not generate *-dev packages as they are broken (proper ones are generated by gcc recipe)
e67be26 preferred-xorg-versions.inc: updates
9872ff2 checksums.ini: added new entries
b3f5ec3 util-macros: upgrade to 1.1.6
60bae70 inputproto: upgrade to 1.4.3
712e7d1 xproto: upgrade to 7.0.12
79f10c5 xtrans: upgrade to 1.1
0f8d8a8 libxfont: upgrade to 1.3.2
e4b9f10 elfutils: disable -Werror for 0.108 due to 'C99 inline functions are not supported; using GNU89' warnings
2f93fee preferred-xorg-versions.inc: renderproto 0.9.2 is preferred
c347eaa strace: unbreak - patch from Debian
89fdbff renderproto: downgrade to 0.9.2 to unbreak xserver-kdrive
40f6fd6 poky.conf: bump web-webkit to version which builds with newer WebKit
75cf979 bitbake.conf: set CPU_FEATURES before it is used not after
a2f0a2e coreutils: fix futimens error
56432da valgrind: added 3.3.0
bd75cbe bitbake.conf: enable VFP support for ARM machines (used by armv6 only)
25f62c4 armv6 machines: use armv6 tuning
75b40f1 xserver-nodm-init: use pidof instead of ps|grep|grep|sed to get PID of xinit
68fb848 machines: remove comment about building feeds for strongarm - OpenZaurus times are over
af49a11 pixman: drop patch
c9c661e preferred-xorg-versions: sync with latest changes
dbd79b2 libxaw: dropped 1.0.3
01a16ee pixman: upgrade to 0.9.6
ba27083 pixman: upgraded to 0.9.6
5256c46 libx11: upgrade to 1.1.3
1ff07ca libxrender: upgraded to 0.9.4
c21d274 libxxf86dga: upgraded to 1.0.2
00ee543 libxrandr: upgraded to 1.2.2
41ba9ba libxext: upgraded to 1.0.3
fbd1592 libxtst: upgraded to 1.0.3
1850554 libxpm: upgraded to 3.5.7
aea6e62 libice: upgraded to 1.0.4
c8f42e6 libxcursor: upgraded to 1.1.9
6ebc2d7 libxmu: upgraded to 1.0.4
193deff xtrans: upgrade to 1.0.4
114011f libxi: upgraded to 1.1.3
6972a8b xproto: upgrade sdk to 7.0.11
761108c xf86dgaproto: upgraded to 2.0.3
1eea7db inputproto: upgraded to 1.4.2.1
bf15d0e renderproto: upgrade to 0.9.3
ff95a9c xproto: upgraded to 7.0.11
9b91eba glproto: upgraded to 1.4.9
80d909a xvinfo: upgrade to 1.0.2
51ceaa9 xmodmap: upgrade to 1.0.3
0d44914 xrdb: upgrade to 1.0.4
ed3c222 xset: upgrade to 1.0.3
d552879 xinit: upgrade to 1.0.7
5ab50f9 webkit: update to 30762 from OE
a31ec3d Enable OProfile for MX31 ADS.
bba3603 libsdl-sdk: disable svga output
b991033 qemux86: use march=i586 when compiling - should unbreak glibc
3fc975f task-base:added dtl1_cs workaround for 'bluetooth' FEATURE and more modules for 'wifi'
1135efb task-base: move avahi to 'zeroconf' DISTRO_FEATURE, fix 'smbfs' DISTRO_FEATURE
952fa1e mpfr: update to 2.3.1
db497d9 poky: bump matchbox-panel-2
ae7ce77 dbus: unbreak buildbot
5b5e1a3 Spit out tidy-examples package with the tests in.
73a457e dbus: renamed 1.1.4 -> 1.1.20 and added missing patch
fdb0029 poky: use dbus 1.1.20 by default
21d430e poky-eabi: switch to gcc 4.2.2, glibc 2.6.1, linux-libc-headers 2.6.24
68fe3dc linux-libc-headers: added 2.6.24
0a7e1e3 dbus: upgrade 1.1.4 to 1.1.20 (from OE)
dfb52ce debian.bbclass: merge DEBIANNAME support from OE
68e4dbb glibc: added 2.6.1 from OE
4c117c1 gcc: added 4.2.2 from OE
e14e1e2 desktop-file-utils-native: update to 0.15
d728063 poky.conf: exclude tidy from world builds
64f00bc linux-nokia800: added ext2/ext3/fuse/nfs/cifs into kernel - tested on device
8ef8bc7 Add Tidy.
e2d6705 Update Clutter to 0.6
98555dd bitbake: Sync bbimage with upstream
1a59c52 base.bbclass: Sync with OE
39a089a bitbake: Bump cache version
ab191d2 bitbake: Update to bitbake 1.8 branch head
e88b475 busybox: removed not used files
624549a busybox.inc: remove dead code
198a63f busybox: update from 1.8.2 to 1.9.1 (from OE)
6314103 busybox: drop 1.01, make 1.8.2 default
9f9900b gtk+: Updated filechooser size patch from Thomas
639f382 handbook/Makefile: Add missing tarball files
d0eff13 handbook/Makefile: Add tarball target
dd048e6 2008-02-29  Matthew Allum  <mallum@openedhand.com>
698f430 networkmanager-applet: Remove VPN connections menu
25081db gtk+-2.12: Tweak filechooser size patch
2e296ba gtk+-2.12: Add patch to tweak the filechooser sizing from Thomas
566df3c Fix broken string with weird characters.
2e73486 poky-handbook: Add screenshots, change development section order, tweak css for screenshots
af790c3 poky.conf: bump gaku srcrev to fix single instance
ea5b925 dbus: sneak in the security fix release
1bfa9b7 Fix patch.
a721897 Bump PR for 0.8 and also add patch to the SVN version.
ddb2364 Add a patch that avoids the entry getting focus and thus bringing up the keyboard.
212bd6f Switch to Dates 0.4.6.
944f5d0 eds-dbus: enable libsoup, so we have the webcal backend
82b4e38 oh-puzzles: don't ship mines, ship slant instead
ed555de Remove generated file
18a758b README*: Update after addition of manual
b2bdf19 README*: Update after addition of manual
882e9cd Add Poky handbook
7197110 puzzles: split into oh-puzzles and oh-puzzles-extra, so there is a reasonable number installed by default
ca8c337 poky.conf: bump gaku srcrev to add single instance flag
a7c0b36 Bump web-webkit's SRCREV.
81a3a66 * Update sato-icon-theme version to 0.4.1 * Remove redundant SRCREV for sato-icon-theme
445f3b4 rxvt-unicode: added fix from OE for building on systems where host ncurses != ncurses-native
36ed211 scripts: Mark qemu scripts as bash specific to avoid dash problems and error if a suitable qemu binary can't be found
2084d46 poky.conf: Prepare for release, set DISTRO_VERSION=3.1
8994c32 README.hardware: Add note about Phytec board
beab252 gtk-sato-engine: update to 0.3.1
935584b meta-toolchain-sdk: Use ?= when setting TOOLCHAIN_TARGET_TASK
934183e Add em-x270 instructions.
4dccc91 glib/freetype/gtk+/pango: Use SOLIBS in FILES
7a8e799 Bump sato-icon-theme to 0.4
3df547e libsdl-sdk: Fix configure.in and use autotools do_configure, not a broken imitation
37d5e5d poky.conf: update panel srcrev for the magic icon naming
f6908cf README.hardware: Document htcuniversal booting
ee0fb85 Add patch to fix crashes caused by udevtrigger on startup.
21c0c98 Bump psplash SRCREV.
efb6eae Bump psplash SRCREV.
6bd30d0 Drop obsolete linux-cmx270 kernels
fd37b16 linux-openmoko: Break immediate suspend on resume cycle
2e7d772 linux-nokia800: Add suspend/resume button support
d1a1ed1 xserver-kdrive-xomap: Really disable xkb, fixing keys
9c932b8 Update instructions for MX31ADS board including NAND details.
f845355 em-x270.conf: Correct kernel name inside the updater package
afc5aa3 poky.conf: update panel srcrev, to get borders on notify windows
96e1d04 local.conf.sample: Limit extra packages for mx31ads
2b29ac6 task-poky: Remove web-webkit from more machines with limited flash space
210c945 linux-openmoko: Add input subsys -> APM bridge and tweak power driver key events
7fdad72 Bump matchbox-desktop SRCREV.
1c6b369 poky.conf: bump panel srvrev to get fixed icons
f39405d matchbox-sato: don't use the startup icon, use notification banners
4de2204 ipkg: Fix version comparisions
84e7b04 linux-rp-2.6.23: Keypad driver for Zylonite. This is a backport from Eric Miao's patchset.
74de793 matchbox-panel: update to latest srcrev, with new icons and new applets
f1607f0 gtk-sato-engine: bump to 0.3
e7a2337 base.bbclass: align build configuration dump properly
fa36fa2 gtk+: merge two related patches into a single file
c7e79ab sato-icon-theme: update to latest sato-icon-theme
cb7d25e meta-toolchain: Add version data to the sdk tarballs
094234f base.bbclass: Drop _FUNCTION suffix to METADATA_REVISION
35d364f base.bbclass: Show svn revision of poky being used
53e5a89 qemu: Update series file
15bdeaa README.hardware: Add mx31lite documentation
10e1e2c local.conf.sample: added list of supported machines
e408f5c task-poky: do not install Web browser on c7x0
d61547a poky.conf: Update zaurusd to gain mixer fixes
6c2b6f2 formfactor: Add cm-x270
32a4e06 tslib: Check touchscreen exists before setting TSLIB_TSDEVICE
838c47c xserver-kdrive-common: Remove xserver flags for cm-x270 since its using standard Xfbdev
fb40ee0 linux-2.6.23: Add 16bpp tweak to cm-x270 kernels so it uses 16bpp instead of 8bpp
1bb290a poky-uclibc.inc: Tweak deploy directory so it doesn't clash with glibc packages
0578c88 cm-x270.conf: Remove touchscreen from machine features list. Default to the W model, not L
cc62bad gtk-sato-engine: fix
4488bb3 README.hardware: c700 is PXA250
092b8ee README.hardware: another docbook removed
25ce5f7 README.hardware: remove docbook tags from FIC-gta01
bf9c1e8 gtk-sato-engine: make it REALLY 0.2
84c8373 Add README.hardware
7ed1aef gcc-4.1.2: Disable thumb mode for 4.1.2 since it doesn't compile
bad1fc4 poky.conf: Add POKYMODE and POKYLIBC to CACHE path
eb49c16 uicmoc4-native: set library path to grab zlib-native
ffa4a99 Add poky-image-minimal-mtdutils (from cm-x270)
825a03b busybox: Enable TFTP put/get
54566e6 uclibc: Sync patches with OE, fix KERNEL variables to match sysroot changes, add patch to fix alignment problems on armv5e devices
b0a6e92 uclibc.distro: Disable stripping since it interferes with -dbg packages
89213d9 linux-rp-2.6.23: Add zyonite touchscreend driver forward port
f090aee linux-rp: enlarge bootcdx86 ramdisk size to 80M
597d1fb bootcdx86: reduce list of MACHINE_FEATURES to the one covered by kernel
f55e142 bootcdx86: remove any extra IMAGE_FEATURES (debug, testapps, profile)
7c81b11 bootcdx86: bump ext2 size to 70M
b868ea1 checksums.ini: added bash patches and libxfont 1.3.1
911e176 bash: apply upstream patches 026-033
b92884d linux-rp-2.6.23: Add patch to get zylonite mtd working (forward ported 2.6.14 driver) and set display to VGA
faed8fc matchbo-panel: ship the battery images
04d1879 poky: gtk-sato-engine version update
8a85235 gtk-sato-engine: upgraded to 0.2
e6a720a formfactor: rotate X11 on Neo1973
04d7d53 poky.conf: update panel2 srvrev
deb4b8b diet-x11: Use the libx11 patches and fix build failures
387121d libxft: Convert to SOLIBS
47ecd7c lib_package.bbclass: Convert to use SOLIBS
0cf79cd libpng: Update libpng-native 1.2.12 -> 1.2.16, convert to use SOLIBS variables
fbd561a bitbake.conf: Account for different shared library extensions on darwin in default FILES expressions, add layout_base_prefix to some extra layout variables
c47528d package_tar.bbclass: Make the output slightly less verbose
a6d3ffd xtscal: Bump PR to work around libxcalibrate verison issues
e4c5a6d preferred-xorg-versions.inc: Update libxfont versions
37c202f libxfont-native: 1.3.0 -> 1.3.1 to match libxfont change
501663a Remove more stale X patches
0f776c5 icu: Disable PARALLEL_MAKE
162f879 Patch re-jiggle to remove unused and duplicates
c490cc5 libxfont: update to 1.3.1, so we can drop a merged patch
ff9db54 Remove unused patch
de8dfb8 libxcalibrate: fix package versions, and update to latest git which has our patches merged
d7753c6 Rename calibrateproto version from oh to poky
94eca02 calibrateproto: Switch to SRCREV, remove merged patch
6ac3680 bitbake: Sync with upstream 1.8 branch for git fetcher and --continue mode fix
e6a50a8 libxcalibrate: update to latest srcrev
2b5ffbc contacts: disable schemas installation
c48757b autotools.bbclass: enable maintainer mode when configuring
9832013 oh-puzzles: disable schemas installation
880e17d gnome.bbclass: disable GConf schema installation
724c7a3 task-base: bump PR for af-packet module change
31f96fa poky.conf: recommend af-packet kernel module
cfa8d22 gettext: Really disable java
251ff09 Don't allow custom GConf schema paths to get into the system
0e8d904 matchbox-sato: use Sans/6 on FIC-gta01
d0e95b3 matchbox-keyboard: autostart keyboard on keyboardless devices
150b951 oprofile-cvs: Remove applied patch
219e6f4 poky.conf: Update web-webkit, oprofile and oprofileui to latest versions fixing various issues
82da29d task-base: bump PR to get usbinit on fic-gta01 and nokia n8x0
3da9f94 nokia n8x0: add usbinit
48052b1 fic-gta01: add usbinit
54d5555 qemu-helper: Fix symlinks
e87e94b qemu-helper-sdk: Add raw2flash / flash2raw converter
ae8fe4d site/x86_64: Add some extra entries
c560178 sdk.bbclass: Set PKG_CONFIG_SYSROOT_DIR correctly
7ea9cc3 gtk+.inc: Don't hardcode paths
96c423f xorg-proto: Set some XORG_PN values explicitly
6326621 freetype: Drop old version
033c32b glib-2.0: Set FILESDIR and merge patches directories
6c117e9 checksums.ini: some new entries
e85a50c eabi6: use linux-libc-headers 2.6.20 to get HAL built
3ad2c9a task-poky: Switch web -> web-webkit
9808d08 webkit-gtk: Add im hook
cf6db2d cx3110x: fix version 2.0.15
d268f49 task-poky: Add networkmanager-appler to standard images
0dbb639 linux-openmoko: removed not needed deploy task
1498e12 cx3110x: Fix PR
867712c cx3110x: Enable 2.0.15 for nokia800
821d6b8 linux-nokia800: Stage extra header, enable APM
61f22b5 cx3110x: added 2.0.15 version from Chinook (marked as broken for now)
85b6649 eabi5: fixed gcc name, added sdk versions
85f1639 dhcp: Move from meta-extras to meta
f3d2ad4 iproute2: Move from meta-extras to meta
7fed31d Move libnl from meta-extras to meta
fd700bb networkmanager-applet: Add startup script to Xsession.d directory
f2d7bf4 gcc: unbreak csl 2006q1 (fortran is fortran not f95)
095f9f6 pointercal: Drop nokia800 pointercal file since it varies between the 800 and the 810 and otherwise the same image works on both
18aa85b meta-toolchain: Install -dbg packages into standalone toolchains and sdk
8dac31d package.bbclass: Avoid double suffix depchain packages
9f9ebe2 poky.conf: Update version for matchbox-keyboard, libowl, web-webkit
e600587 networkmanager: Move from meta-extras to meta
fc20c6c web-webkit: Enable libowl
be7c007 task-poky-standalone-sdk: Generate -dbg package counterparts
ff88289 cx3110x: -dev and -dbg packages don't make sense
dd954f6 gcc-cross csl 2006q1: fix build
767710d Remove matchbox-poky, its been replaced by matchbox-sato
4b5b460 libxsettings-client: add patch to fix missing linking to X11, spotted by --as-needed
11dc865 task-poky: don't build matchbox-applet-startup-monitor
4b9288b vte: Add missing intltool depends
6a40f09 gstreamer: package the debug symbols for the core elements
950e912 gconf-dbus: update srvrev and remove merged patches
7fcc995 gcc-csl 2006q1: added makeinfo patch
262d304 poky-eabi-csl2005q3-2: set proper versions of (gcc|binutils)-cross-sdk
fcfb291 checksums.ini: some new entries
a0c44e0 sanity.bbclass: Fix typo
51fd745 sanity.bbclass: Fix qemu check
4627103 glib: update to 2.14.6
fa42d29 binutils 2.16 csl-2005e3: added makeinfo patch
e62eab8 binutils 2.16.91.0.7: added makeinfo patch
e29154f binutils 2.17+csl 2006q1: add makeinfo patch
7693a4f networkmanager-applet: Remove animated icons improving functionality with sato
5d2296c netbase: Cleanup qemu network config, add for nokia800
9993c7f nokia770-init: Attempt to ifconfig up the wifi
fa015a3 linux-nokia800: Enable logging on tty0 to make kernel errors user visible for now
5d4bb4b pointercal: Update nokia800 pointercal after recent kernel changes seemingly broke it
7f5b199 Drop old sato-icon-theme version
6834c40 Drop old broken linux-nokia770
ca4b408 linux-rp: disable VGA framebuffer for bootcdx86
7ecb2b2 linux-nokia800: Enable automatic screen updates, framebuffer console and make 2.6.21 the default for the nokia800
a9ccb68 bootcdx86: set ext2 images size to 60M to get it booting properly
da5bdff linux-rp: enable userspace VESA framebuffer for bootcdx86 machine
f571897 linux: removed deploy task - kernel.bbclass has own version now
0f2c511 linux-rp: removed deploy task - kernel.bbclass has own version now
82eaabc kernel.bbclass: added deploy task from linux.inc recipe
f1d8a0f kernel.bbclass: indent sizecheck function like rest of file
1f1bd04 scripts/poky-qemu-internal: Fix no-reboot option handling for qemuarm
049c3c9 poky.conf: Update sato-icon-theme version
1d4973e qemu-config: Update to use system-shutdown icon
3f4d548 sato-icon-theme: Add 0.3.1, drop broken svn version
48f8cda Rename gcc-native3 -> gcc3-native for consistency and update sanity.bbclass to account for gcc3 changes
8f12b46 libsdl-sdk: Unset PARALLE_MAKE, sdl can't cope with it
b9c9360 scripts/runqemu: Append to CROSSPATH after creating symlinks
ca2c506 scripts/poky-qemu-internal: Fix PATH usage to find qemu binary
1888ad6 qemu-sdk.inc: Fix zlib DEPENDS
a3f7808 zlib: Add -sdk version
5f24997 libtool: Create common .inc file
d360aa0 qemu: Add missing patch
8a11c60 qemu: Add no-strip patch from OE fixing strip problems
8c42510 qemu: Fix writev syscall null value handling, fixes glibc LC_CTYPE errors during locale generation
30d7bf9 Add icon-naming-utils-native 0.8.2
891e34f libxml-simple-perl: Remove bogus EXTRA_CPANFLAGS
44c830b Add libxml-simple-perl
9de36a0 libxml-parser-perl-native: Remove expat from DEPENDS
06b097f poky-chroot-setup: Copy hosts resolv.conf into the guest system to make DNS resolution work
d38751f gcc-cross-sdk: Totally rewrite packaging so it consists of a single package. Disable shlibs code causing build breakage. Add useful symlinks to gcc and cc
c51985f binutils-cross-sdk: Add symlinks to the cross tools instead of shipping duplicate binaries. Also simplifies packaging.
b31d310 binutils: Simplify PACKAGES in old binutils versions
5bc44c7 scripts: Fix sdk compiler location handling
23ee199 poky: bump web-webkit revision to get fixed desktop files
6f1924f web-webkit: link with g++
d0dae3b scripts: Always try to start distccd, improve distccd cleanup, add SDK directory to the search path so any cross compiler installed in /usr/local/poky is found and used, add ifdown script to avoid warning messages
4592a9b nokia machines: set maximal kernel size to 2MB
2779308 sanity.bbclass: Check TMPDIR doesn't change, error if it does
d6e99e2 linux-rp: added another Prism2 card to HostAP driver (patch acked by upstream)
55386c9 checksums.ini: added some new entries
321fc54 hal: split libraries to separate packages
74fb622 wpa-supplicant: do not start at boot - it is started on wlan0 if-up
3e37cc1 irda-utils: use update-rc.d class (from OE)
ca9794b flac: merge with OE (PowerPC only related)
f7ee69e e2fsprogs: stage libblkid
6324a8e webkit-gtk: merge with OE
5d57d6e poky: revert part of last commit - DISTRO_FEATURES 'nfs zeroconf' will be pushed separatelly
0a95707 web-webkit: added WebKit branch of OH Web browser
3fe67b2 poky: added SRCREV for web-webkit
0e969d8 poky: bump WebKit revision to same as in OE
b6bb167 Switch to using dbus.inc
b24a3ca dbus.inc: somewhat merge with OE
50ef39f dbus: enable checks, disable asserts. Anything else is madness.
8cf1159 dbus: enable X support so that the session bus terminates when X does
d963046 scripts/poky-chroot-run: Make sure Xephyr and chrootuid are installed
8656619 qemu-config: Fix poky-chroot-launch to stop dbus system bus correctly
17c753a libidl: switched to autotools_stage_all, removed Firefox related note
2713386 scripts: Add poky-chroot scripts (credit should mainly go to Ross)
f55e6e4 Add chroot scripts to qemu-config package
66bc1c7 gst-plugins-base: updated, ABI breakage in 0.10.16
d1a924f gstreamer: update to latest upstream, fix doesn't effect us bit it doesn't hurt to be current
7b8c366 poky.conf: Simpify POKY_EXTRA_RDEPENDS for qemu
1ad9a0a qemu-config: Add rsync and bash to RDEPENDS
ee9652c gtk+: update to brown-paper-bag release 2.12.7
1fd6bb1 autotools.bbclass: Ensure the current working directory is preserved in autotools_stage_all
26b3e20 libsdl-sdk: Use full paths for staging
3b79bc6 autotools.bbclass: Fix so libraries in directories are handled correctly with oe_libinstall, fixing staging QA issues. Thanks go to Ross for the basic patch.
4469013 gst-plugins-base: update to latest point release
fa66e62 gstreamer: bump to latest point release
740ad70 Add newer strace package
01f7f25 gaku: update to latest srcrev
83313df gtk+: update to latest point release
f1cfdb5 qemu: Drop 20070613 version, add gcc-native3 dependency
d28ecd2 local.conf.sample: Add ASSUME_PROVIDED for gcc-native3
bcea3b9 gcc-native-3.4.4: Add PROVIDES gcc-native3
93240b5 fakeroot: Add .so file to the the normal package so it works
c17b326 preferred-xorg-versions.inc: Fix libx11-native version
86b43e8 gst-plugins-good: enable more plugins
2c92130 poky-eabi6.inc: Remove rename-registers option from optimisations in eabi6 mode since 3.4.4-csl breaks with it
5eb1000 Add TARGET_LDFLAGS override to workaround toolchain sysroot bugs for eabi6 mode
f56af60 gstreamer: Disable parallel make
e9ba02e meta-toolchain: Separate out extra files to reduce base toolchain/sdk size
9993a69 checksums.ini: some new entries
68e5b6c poky-eabi.inc: Fix gcc-cross-initial version
bda47c0 gcc-cross-sdk-4.1.2: Bump PR
81b3dcf linux-nokia800: use proper GCC
3a66dc9 gcc4-build-sdk.inc: Fix sysroot option
ebdb14c linux-nokia800: added 2.6.21 kernel from OS2008
2722168 linux-rp: Update to 2.6.24
e994842 poky-oabi.inc: Set sdk package versions
ee11c2f Add binutils-cross-sdk 2.15.94.0.1
6181925 gcc: Add missing sdk 3.4.4 and initial 4.1.2
c673a12 gcc: Remove 3.4.3 and 4.1.1, add missing sdk 3.4.4 and initial 4.1.2
dc87a5f gcc: Remove broken no-fortran package .inc files
8bc881f poky-oabi.inc: Fix gcc -mtune option for gcc 3.x
bad1deb qemu: Fix build problems in paths with symlinks
379cac8 poky.conf: update matchbox-desktop srcrev
101aab0 gconf-dbus: fix watch expressions so that every client doesn't get the server messages
7d85c6b binutils-cross-sdk: Really fix debug file packaging
fb8b73f gconf-dbus: don't start in the X session, gconf can be autostarted
9cf26bd Remove unused patches
1e5d025 binutils-cross-sdk.inc: Fix debug package
37d1c4c poky-eabi6.inc: Fix gcc version, set sdk versions
913adea binutils: Factor common sdk code into binutils-cross-sdk.inc
9519cc5 gcc: Remove unneeded versions, add csl 2005q3-2 sdk version
e0b6b52 gcc: Clean up 2005q3-2 version
22e48d7 gcc-package.inc: Override SHLIBSDIR to TARGET_SYS until a better fix is found
69683bf package.bbclass: Abstract shlibs path to SHLIBSDIR variable
2144136 qemu-config: Autostart oprofile-server in qemu images
a9a84bf poky.conf: bump gconf-dbus srvrev
8840cd2 qemu-config: Add shutdown desktop file for qemu images
e06f2c7 powertop: fix crash in dump mode
551987f poky-qemu-internal: Add -no-reboot option for poky-qemu-internal since can't halt
a9a2389 task-sdk-host: Add qemu-helper-sdk
718f1e5 Add qemu-helper-sdk
10390fa qemu-config: Add anjuta-remote-run script
0b465bf glibc: Fix patches (remove bogus glibc-2.5 directory)
78c5462 glibc: Support backported eabi kernels
57b10da xserver-kdrive: add a patch from git master to reduce scheduling
5bf734f Add powertop recipe, and add to profiling task
77c6b60 qemu-sdk: Limit to arm emulation, set RDEPENDS
6820673 meta-toolchain: Fix target and host file separation so sdk installed files are handled correctly
8c25ace linux-rp-2.6.23+2.6.24: Further defconfig merging
c2df817 linux-rp-2.6.23+2.6.24: Try to bring defconfigs more into sync, update hx2000 patches
2d426d0 linux-rp_2.6.23+2.6.24-rc8: Further defconfig refreshes and fix the htcuni patches so they at least apply
2b72633 linux-rp-2.6.23+2.6.24-rc8: Update defconfigs, remove merged zylonite patch
53d19e1 linux-rp: Tidy up .bb file and clean up unused patches
388339b linux-rp-2.6.23+2.6.24-rc6 -> linux-rp-2.6.23+2.6.24-rc8 and some defconfig tweaks
05c49ea bitbake: Update to 1.8.10 release
079e682 bitbake: sync with upstream stable branch bugfixes and enhancements
027c071 autotools.bbclass: Make sure STAGING_INCDIR exists
ac5c1a6 poky.conf: bump matchbox-desktop srcrev, fixing inotify
68eba74 glibc: remove old ld.so.conf which adds /opt/QtPalmtop to library search path
8318e9a zaurus-updater: replaced all machine ones with unified one (from OE)
c09736f psmisc: upgraded to 22.2 from OE (with uClibc fix)
531ade3 matchbox-applet-volume: formatting
16d5750 nfs-utils: bump PR to same as in OE
b4eb696 settings-daemon: bump PR to same as in OE
babbf7e libowl: bump PR to sync with OE
997e776 ppp-dialin: make it machine independent (from OE)
bed9c6e psmisc: upgraded to 22.2 from OE (with uClibc fix)
979d581 Add notifation-daemon and libnotify
38fb1d4 tinylogin: make it build against uclibc 0.9.29 (from OE)
364c193 matchbox-session: don't pass arguments the panel doesn't accept
780b44d poky.conf: bump matchbox panel srcrev
7d60357 autotools.bbclass: Really fix autostaging function to correctly handle cases where only subdirectories of files exist
fcb91af wireless-tools.if-pre-up - move setting of the ESSID to the end of the script, because certain chipsets (ZD1211) use that as the "commit" operation. (from OE)
66576a0 xcursor-transparent-theme: make it machine independent (from OE)
82a4bfc xrestop 0.4: Add DESCRIPTION & SECTION (from OE)
17646c6 site: merged with OE
22e64e1 checksums.ini: added some entries from OE and local builds
8c4e516 documentation.conf: merge with OE
9dbd684 Neo1973 (gta01/02): merge configs with OE
3811d80 qemux86: added 'x86' to MACHINE_FEATURES
0e7edca hx2000: added vfat to MACHINE_FEATURES (from OE)
12b861d nokia tablets: added vfat to MACHINE_FEATURES (from OE)
8caadc8 spitz: added 'iwmmxt' to MACHINE_FEATURES (from OE)
45dc7ba cm-x270: merged support for misc NAND chips (from OE)
7bdce63 akita: added 'iwmmxt' to MACHINE_FEATURES (from OE)
c85d492 tune-strongarm: rename to tune-strongarm1100 and tune to it (from OE)
c46d3fb tune-armv5te.inc: removed. use tune-arm926ejs.inc instead
e430837 mx31 machines: use tune-arm926ejs (which is armv5te)
a43192d removed tosa-2.6.inc and poodle-2.6.inc as Poky do not support them
d89855e zaurus-2.6: merge OE changes (part3: tune-xscale for PXA machines)
2151dc1 zaurus-2.6: merge OE changes (part2: installkit changes)
e7fba8e zaurus-2.6: merge OE changes (part1: collie related changes)
1fa8862 autotools.bbclass: Fix autostaging function to correctly handle cases where only subdirectories of files exist
6ddbbdf dbus: upgrade -bleeding to 1.1.4
e9794a9 libxdmcp-sdk: do not provide xdmcp
623c607 libx11-sdk: do not provide virtual/libx11
69c49c7 linux-rp-2.6.23: Make sure HID is modular
eaefa26 linux-rp-2.6.23: Tweak defconfigs to save a little space after a suggestion from Samuel
822779e package.bbclass: Fix shlibs and pkgconfig magic to use HOST_SYS, not TARGET_SYS
85d94a1 xorg-proto: Fix inherits of sdk versions
d105213 sdk.bbclass: Set CPPFLAGS and CFLAGS correctly
9a3cb74 pkgconfig-sdk: Fix configure failure issues
bb48bd4 task-sdk-host: Add qemu-sdk
5697a02 Add qemu-sdk
d59f40b Add libsdl-sdk
6b21b82 util-macros: Clean up and add sdk varient
529bf51 xorg-lib: Clean up various files and add sdk varients where needed
b0dd467 xorg-proto: Clean up various files and add sdk varients where needed
70dc147 sdk.bbclass: Set rpath correctly for sdk binaries and use the target prefix to ensure sdk and native staging don't mix.
551ae76 qemu: Add series file for patches for reference
c072792 libx11: Fixup libx11-native (fix typos, add missing patches, cleanup -native version)
ae52d01 sato-icon-theme: update to latest release
053a141 distcc: Add patch to poky since upstream keep changing it
5891567 CVS fetcher: added "fullpath" option to get full repository paths inside of checkout archive tarballs. It is very useful when used with "norecurse" option.
cc1e39f CVS fetcher: add "norecurse" option to fetch directory from CVS without its subdirs ("cvs co -l" option)
2a08e55 formfactor: Allow qemuarm/qemux86 to default to the framebuffer size they boot with
531a996 dbus: upgrade poky-bleeding to dbus 1.1.3
2172d34 sato-icon-theme: bump to 0.2
9c85e50 dbus: bump -bleeding from 1.1.1 to 1.1.2
ba56fb8 Added updated patches/defconfig from Phytec.
21038ec oh-puzzles: Fix merged menus (#703)
d59ce93 qemu: create common include for qemu-native versions
875c178 Add gcc-native
90d3853 cairo: upgrade from 1.4.10 to 1.4.14
66b2499 Remove unused cairo 1.2
0135bc9 local.conf.sample: Remove tools-testapps from mx31phy images
1a34b12 glib-2.0: Fix SRC_URI (#702)
3adc1f0 v86d: mark it also as compatible for bootcdx86
976d362 Drop unused glib patches
dad7da8 insane.bbvlass: split checks so the warnings are precise
8269ce4 glib-2.0: remove unused 2.12.13
ea38a63 glib-2.0-native: upgrade to 2.14.5
f364836 glib-2.0-native: upgrade from 2.12.4 to 2.12.13
b2dea86 glib.inc: use autotools_stage_all instead of manually staging
46d32b9 gst-openmax: added 0.10.0.2
4fc27a3 libomxil: added 0.3.3
34492aa libmad: fix parse error
78b5898 libmad: add pkg-config support
4da5771 libid3tag: add pkg-config support (from Debian)
d56b65f xserver-kdrive: Remove bogus fbdev patch, merge kmode patches, add a patch to allow the existing framebuffer mode to be reused if appropriate
a30424c xserver-kdrive: Clean up unused patches and broken git recipe
3156c5a linux-mx31-2.6.22.6: Mark as only compatible with the mx31ads for now
4ec449c v86d: Add initscript to activate the framebuffer early in the boot process
c54fce9 v86d: Set COMPATIBLE_MACHINE
ed8770a Add EXTRA_IMAGE_FEATURES for ease of use in local.conf
5f39e9f xserver-kdrive: Make patchlist more obvious, remove uneeded machine specific patches
4d3c683 xserver-kdrive: Drop 1.1.0
b86cac1 qemux86.conf: Add essential dependency on v86d
e567726 Add v86d
2f9cc6a linux-rp-2.6.23: Fixup qemu defconfigs
d1a302a kernel.bbclass: Cleanup various repetition, add include/video to staged files list
568a9bb Really set jffs2 options for mx31ads.
9b81ef9 Update jffs2 options for mx31 ads.
5b21722 Add 2.6.22.6 for MX31ADS (from the rel5 BSP.)
c1dd292 poky-sdk: install libglade-dev instead of libglade
6486e5e libvorbis: use autotools_stage_all (fixing .la installation)
07668fa libogg: use autotools_stage_all (fixing .la installation)
e84e875 gtk: upgrade 2.15.3 to 2.15.5
305ca5dc Update JFFS options for the phyCORE mx31.
1ffa318 Add patch to allow newer NOR chip query table.
44611fd xpext: Fix -dev/-dbg package dependencies
1a89cd5 scripts: Further quoting fixes
248c66c tkas-poky-sdk: Add findutils
ab3ed2f tasks: Add libglade to sdk
4a7acb6 scripts: Various tweaks/fixes for the qemu scripts
0f1ddc5 package.bbclass: Account for DEPENDS in -dev packages
b1975f9 meta-toolchain: Allow output name to be overridden
f7a133e meta-toolchain: Split into a plain toolchain and full SDK versions
49d3841 util-macros: Fix -dev and -dbg dependencies (since the main package is empty)
3e5646f qemu: upgrade CVS snapshot 20071230 to 0.9.1 release
03e591a local.conf.sample: Limit the features built into c7x0 and mx31phy images
7f3a170 Add support for Phytec phyCore-iMX31 board.
b10aaea glib: upgrade from 2.14.4 to 2.14.5
666535e qemu.inc: increase the size of the rootfs, so there is some slack
2262128 gtk-icon-cache.bbclass: in the postinst update the pixbuf loaders to ensure that all are loaded before creating icon caches
b8a6dbf linux: enable v3 process accounting (for bootchart, mainly)
4619dcb linux-rp: Drop old kernel versions
13d394b linux-rp.inc: Add bootkern task for experimentation purposes only
d83e067 dbus: disable asserts, not checks.  asserts are slow and very intensive, checks are entry point sanity checks and are good
144d5c7 poky.conf: update mb-desktop srcrev
8b11997 poky: removed DISTRO_FEATURES set for "cmx270" machine
5b9ecba module*.bbclass: set AR to KERNEL_AR during building of kernel modules
3a4cd6a gstreamer: fix the patch. honest, it built for me
f4a6185 gstreamer: don't try and load .debug libraries
84c46a7 formfactor: Revert touchscreen mode change
bea90e6 formfactor: Create suitable gtkrc file enabling gtk touchscreen mode for machines with touchscreens
deff1f4 matchbox-sato: force touchscreen mode on
bd837ac cooker.py: Fix -g option breakage from previous commits
611ba5d em-x270.conf: Fix kernel part of image generation
d34b2f6 base.bbclass: Make sure PATH searched for applications is expanded
da8e8d3 poky.conf: Remove gcalctool from world builds since its broken with recent gtk+
7821f22 bitbake: Sync with bitbake upstream for various fixes
c7fca99 poky.conf: update to latest GTK+ version now that the filesystem changes have landed (yay tf). poky-bleeding.conf: remove GTK+ versions
b01d4b8 gtk+: Remove DEFAULT_PREFERENCE statements, they are incorrect and we use poky.conf instead
9ea7515 ported filechooser patcheas to gtk 2.12.3
fe7eb79 em-x270: generate ext2 image for Compulab runtime updater
7b7f440 libtelepathy: Prefer python 2.5
f156846 linux: provide symlink for em-x270 kernel image
8fe6d34 linux: em-x270 expects kernel encapsulated in jffs2 image
932b3cc telepathy-glib: Prefer python 2.5 over 2.4 over 2.3, not the other way around
66ff85a base and sanity bbclasses + qemu: move gcc3 availability checking into base.bbclass
67eaa28 poky-bleeding: Switch to dbus 1.1.1
51d4359 Add dbus 1.1.1 (leave 1.0.2 as default)
fe60c6e libx11: Apply the keysymdef.h fix to libx11 as well as diet-x11
f8b1fd4 libx11/diet-x11: Fix /usr/include problem for keysymdef.h
7eed7c0 qemu: upgrade 20071121 -> 20071230 to fix problems with target mmap'd regions overlapping with the host system libraries
8ff44c1 linux-rp-2.6.23: Bump PR after hrw's patch change
d850b58 linux-rp: fixed my patch
a1ffa5a linux-rp-2.6.23: Make qemuarm and qemux86 use 2.6.23, sync .bb file with OE for poodle and tosa changes.
f217220 checksums.ini: some new entries
a28ff4a linux-rp 2.6.24-rc6: provide working config for c7x0 (ide and cpufreq in modules)
fd616b6 linux-rp: update 2.6.24-rc1 to 2.6.24-rc6, add some fixes from 2.6.23
2e6c3db qemu: Expand PATH and EXTRA_OECONF when locating gcc, add check for gcc-3.4.4
603087d bitbake.conf: Make sure PATH is expanded when searching for ccache
13d7860 linux-nokia800: Use gcc 3.4.4+csl-arm-2005q3 for compiling kernels for initfs module compatibility
925823d gcc: Add gcc-cross-kernel 3.4.4+csl-arm-2005q3
397c9e4 linux-rp-2.6.23: Defconfig update
dd877a7 linux-rp-2.6.23: Unbreak pxa25x suspend/resume, update defconfigs
a4ad228 linux-rp-2.6.23: Add atags export patch for kexec, fix spitz suspend key problems
a5b44fe kexec-tools: Add arm atags support
a34ccf9 poky: exclude libxml-parser-perl from world builds due to OE bug #3403
55763d6 poky: set SRCREV and proper SRCDATE for gtk-theme-torturer
0f3fabe poky: do not fix SRCREV values for Pimlico components as we use release versions by default
a59dc98 poky: set clipboard-manager version
13b2444 poky.conf: Fix xprop PREFERRED_VERSION
cdde631 poky-floating-srcrev.inc: Tweak file
ac9dbc9 matchbox: Set various maximum patch revisions for merged patches
ac1c9c7 xwininfo: fix DEPENDS
1a30ceb conf/distro/include: Remove stale srcdates file, add poky-floating-srcrevs cinlude file
906fb37 task-poky: added xwininfo,xprop,xrestop into testapps
3226b98 xprop: added 1.0.3
ca4e02d xrestop: added 0.4
f85a9e4 xwininfo: added 1.0.3
1ba5ca1 set revisions for matchobx-wm-2 and matchbox-theme-sato-2
4f67e7c matchbox-wm-2 recipe
6b3e57c recipe for mbwm2 sato theme
1685e25 busybox: update 1.8.1 to 1.8.2
1011c2b meta-toolchain: Generate site config files and an environmental setup script
0246439 poky.conf: Fix ohm SRCREV for now
fafacff xserver-kdrive: Rename .inc file to stop confusion with xserver-kdrive-common package
cba0d97 ohm: Lock down git revision using SRCREV
6e6350a contacts: SVN version is not default
30f6da8 dates: refreshed patch
c6b6c97 pimlico: fixed versions in SVN recipes
c9703ff contacts: updated to 0.8
bb6d77b tune-arm1136jf-s: switch to use CPU_FEATURES to enable/disable VFP and Thumb support
994be9e tune-thumb: switch ARM/Thumb instruction set (from OE)
2f039d9 bitbake.conf: introduce CPU_FEATURES variable for listing features of target processor
a54c23a tremor: use ARM instruction set when building for Thumb
053e6d0 liboil: use ARM instruction set when building for Thumb
1aa801a libmad: use ARM instruction set when building for Thumb
397110b gst-plugins-bad: use ARM instruction set when building for Thumb
fe05a01 glibc: use ARM instruction set when building for Thumb
fc53662 glib-2.0: use ARM instruction set when building for Thumb
15999b5 db: use ARM instruction set when building for Thumb
bbb0b8b package.bbclass: Various cleanups and bugfixes, some form OE
6480e3a package.bbclass: Don't strip files in .debug directories
34927df Sync various tweaks from OE, change default SRCREV policy to not auto increment rather than hitting the network.
ce30130 liboil: added glib-2.0 dependency (it is required to build but not end in packages
cf07030 checksums.ini: added some new entries
2228b41 meta-toolchain: provide /usr/ symlink (related to sysroot usage) - requested by Rob
a1a868a update-rc.d: added forgotten patch
c75f6a2 update-rc.d: Be less verbose by default. (from OE) * Don't spit detailed info about links created unless passed -v. * This is to prevent initial bootup console spamming.
c3fb361 libxml2: added fix for 'unable to find gzopen64()' when host is 64bit (taken from Debian)
d4b9227 Add mx31ads machine
a797df1 linux-mx31: Add mx31ads support
c83d81e clutter.inc: Add mx31ads support
2d44843 libxcomposite: add libxext to dependencies
73b9bf2 gtk: enable XDamage, XRender, XComposite support
cfd98f5 qmake: Turn native package into a cross package since it touches target staging
4db23a9 xcursor-transparent-theme: point SRC_URI to project website
89c8cb3 matchbox-applet-startup-monitor: point SRC_URI to official website
2c1a5bc task-base: bump PR to get rsync in qemu images
251e9cf poky: install rsync in qemu images (requested by Rob)
4e9ca34 rsync: added 2.6.9 from OE
66be3d9 tasks: update to 0.13
169d7d3 dates: update to 0.4.5
2938bfe web: bump PR due to curl change
e079d07 curl: really disable libidn
49bcedc task-sdk-host: Add pkgconfig-sdk to SDK
7147d33 Add pkgconfig-sdk
1813fac poky: bump webkit to r28485
e6b479c webkit: fixes to get r28485 built
aa521e3 poky: set fixed srcrev for webkit-gtk (same one as OE use)
cad2e1b icu: use g++ for linking
2517420 Import files from OE to build WebKit (patch to link icu required)
8ccfa5c linux: add u-boot-mkimage to DEPENDS only for uImage kernels
d46841a linux-rp: kernel size check is now in kernel.bbclass
048754f kernel.bbclass: added task which check size of kernel image
7256b48 zaurus: add KERNEL_IMAGE_MAXSIZE variable used to check kernel image size
9d5c2c8 qemu: make new version non-default again
4e60989 formfactor: add em-x270 formfactor
e7eaaa2 bitbake.conf: armv4 and armv5 do not need CPU selector for qemu
7445724 gtk: update 2.12.2 to 2.12.3
d41df71 glibc: allow to use UTF-8 locales only (enable with LOCALE_UTF8_ONLY=1)
e9f81f1 glibc: get proper value for QEMU_OPTIONS to get binary locales working for all ARM variants
de38769 glibc: make ARMv6 binary locales working with recent qemu
d0b4968 qemu: Make 20071121 the default version and cleanup various file locations and recipes
1fbde4b qemu: really enable NPTL for arm
11f9f24 qemu: Add 20071121 version, default preference -1 for now
c3c2ee2 linux: bump PR due to changed U-Boot entry point for em-x270
c471733 em-x270: fix U-Boot entry point
aa11597 em-x270: fix kernel type
b25ad8c busybox: enable time applet
ec63c68 eds: make eds-dbus-dev recommend libecal-dev libebook-dev
859d3ab em-x270: set kernel type to uImage
9886049 eds-dbus: reformatted recipe
345dd86 task-sdk-gmae: added libecal/libebook
92b1e9f task-sdk-*gmae*: move common stuff into include file
4758862 task-poky-standalone-gmae-sdk-target: Re-enable libtelepathy
25110f5 icecc.bbclass: Sync from OE
a195950 cross.bbclass: Set TOOLCHAIN_OPTIONS to an empty value instead of duplicating compiler variables
bf0ddf4 telepathy-glib: Add dbus-glib to DEPENDS
5d500e6 task-poky-standalone-gmae-sdk-target: Remove telepathy for now
f53f089 task-poky-standalone-gmae-sdk-target: fix packaging
e955540 meta-toolchain: Switch task-poky-standalone-gmae-sdk-target for experimental purposes
8e8b85d git-native: Sync minor tweaks from OE
b6691ac task-poky-standalone-gmae-sdk-target: GMAE for standalone SDK
731cdbe xtrans: solve xtrans-dev problem in better way (same as xorg-protos are)
1731595 poky: added HOST_ARCH into name of SDK tarballs
dbae4c1 xtrans: create empty xtrans package as xtrans-dev depend on it
3e8d1b6 libxml-parser-perl-native: Remove uneeded entries: (from OE) * DEPENDS on perl-native isn't needed since cpan.bbclass adds this. * DEPENDS on expat-native isn't needed since libxml-parser-perl adds this. * RDEPENDS on perl-native was only here to prevent an RDEPENDS on perl. The   RDEPENDS was being added by cpan.bbclass, but that has now been fixed to   not add it for native packages. This needed to be removed so that perl   isn't built when you only want libxml-parser-perl-native.
2aba130 cpan-base.bbclass: Update the perl depenedencies: (from OE) * For native modules DEPEND on perl-native and for others DEPEND on perl   (which in turn depends on perl-native) rather then always depending on   both perl and perl-native. * Only RDEPEND for non-native modules rather then both native and non-native.
2f0918e poky.conf: Allow insane to be disabled from local.conf
412acf7 task-sdk-host: Drop packages not needed now gcc-cross-sdk has better RRECOMENDS
eb864c8f x11vnc: Add fixed version from OE
867741b site: Add arm-darwin
1cab3f2 siteinfo.bbclass: Add darwin entry
cc5a871 libtool: Make sure ltmain.sh gets regenerated by libtool-cross, fix nmedit paths, fix library search paths for installed=no binaries particuarly on darwin but applies to other archs too
f0ff6c7 clutter.inc: Add gtk+ to DEPENDS (for now)
9eee32b base.bbclass: Fix populate_staging whitespace
f7d937f stage-manager: Various fixes/ehacements
c9b2304 shasum-native: Use do_stage function, not do_populate_staging
d24c45c gcc-cross: attempt to unbreak fic-gta01 build - package_write_ipk waits for glibc packaging
411c393 libxml-parser-perl: added expat dependency
e8c4d5f shared-mime-info: added glib-2.0 to dependencies
9da15df glib: don't disable debug, the size difference isn't much and its useful
d862b57 package_{ipk|deb|tar|rpm): append depend-tasks instead of overwriting
91225da ipkg: fix "unable to create /usr/lib/ipkg/lists directory" bug
705bfa4 distcc: Fix remaining postinst issues
b12795d bitbake fetcher: Make invalid url errors clearer
3431d41 mtools: Use our mirror since upstrea, is insane
1274bbe task-poky-sdk-gmae: added GMAE based SDK
fc5d8af oprofile: fix arithmetic ops on dash
261c8d8 tune-arm1136jf-s.inc: optimizations for armv6 devices
697dbc9 glibc_2.3.5+cvs20050627: Fix oabi build failure due to header issues
feb7d18 telepathy-gabble: improved description
8ac44b4 telepathy-glib: improved description
44e5a66 telepathy-mission-control: improved description
cdb708c libtelepathy: improved description
59195b7 empathy: improved description
101b2d7 empathy: dropped 0.5
82f18b9 telepathy-idle: added 0.1.2
0ba486c telepathy-glib: upgrade to 0.7.0
2bbd6ad telepathy-gabble: upgrade to 0.7.1
5645257 libtelepathy: upgrade to 0.3.1
d0223d9 telepathy-mission-control: upgrade to 4.49
3526acd package.bbclass: Remove debug code
60b925a poky-autobuild: Increase threads to 6
956e0ac checksums.ini: added glib 2.14.4 and ltt-control 0.43-10082007
de8d00f gtk+: upgrade 2.12 to 2.12.2
0c273cb gtk+: run pixbufloader backend on target, and update the icon cache afterwards
a14d61f glib-2.0: upgrade to 2.14.4
fa0eb69 exmap-console: Bump PR to pacify autobuilder
4743a3f base.bbclass: Fix PKGDATA to work properly with multimachine
251672a gcc-cross-sdk: Add RRECOMMENDS so gcc-cross-sdk pulls in all its sub packages automagically
2fd82bb gcc-cross: package libstdc++-dev
37f80dd exmap-console: Remove MYPV madness, makes my head hurt and breaks builds
aa10825 package_ipk.bbclass: Make sure packages which alter PACKAGE_ARCH end up in the correct 'feed'
5d60f71 stage-manager: copy files, don't move them
c0adbcb bitbake: Add support for task specific lockfiles
a7ed27d nokia770-init: Cleanup postinst to allow it to work offline
7be7ded base.bbclass: Add buildall task
84e1d7c Add stage-manager-native
2f2de3f lttng-control: 0.42 -> 0.43
e6fccbb bitbake: Sync with upstream, fix some typos, add selfstamp flag
f3b89a0 packages/meta: Remove pkgmaps references
48c7f7f package.bbclass: Remove PKGMAPS functionality and supersede with pkgdata. Remove duplicate unneeded PACKAGES checks.
1d01a5e package_{ipk|deb}.bbclass: Remove hardcoded install path reference
62a3ee3 bitbake: Convert fetcher code to using bb.utils locking functions
c065977 classes: Use internal bitbake functions and fix packaging unlocking on error paths
701aa74 bitbake: Add bb.utils.lockfile() and bb.utils.unlockfile()
4aaa834 initscripts: No need to run ldconfig every time we boot now...
d74537f glibc: Drop ldsocache-varrun patch. ldconfig is now run at image generation time. If you can install packages, the cache can update, if you don't install packages there is no need to have it writable
b4e9ef8 image.bbclass: Add ldconfig-native dependency, run ldconfig at image generation time
87590b2 Add ldconfig-native
90e20ec glibc-2.3.5: Fix stale CROSS_DIR reference
4ab905d external-poky-toolchain: Add extra RPROVIDES
761dcd5 poky-external.inc: Double colons in PATH break coreutils
507a3e0 db: Fix configure so parameters can be passed in the LD variable
8ec24bc cross.bbclass: Explicitly set the compiler in the same way as native.bbclass, otherwise TOOLCHAIN_OPTIONS can interfer
e502912 bitbake.conf/poky-external.inc: Clean up CFLAGS handling
af489dd gdb: Add missing patch
4c5f7e3 gdb: Add patch to ignore bogus CFLAGS whitespace changes
0138501 poky-external.inc: Change the way the sysroot option is passed about to deal with libtool
066e96a distcc: Make sure the distcc user exists
675d190 poky-external.inc: Fix external toolchains to use the correct sysroot after recent toolchain changes
6f850a2 binutils-cross-sdk: Really fix debug packaging
4d5b401 runqemu: Fix path after staging layout changes
512f7a0 binutils-cross-sdk: Fix debug files packaging to avoid warnings
571492a findutils: added 4.2.29 from OE
bc31acf gnome-common: set PACKAGE_ARCH to all
deba6b7 qemu-config: add fakeroot, until we have a package for the poky/chroot integration
4728d87 binutils: fix 'makeinfo >= 4.10 is too old' problem (from OE) - patch is applied upstream
8ad0e35 poky.conf: update eds-dbus srcrev
1cffb71 hal: don't pass --oknodo to start-stop-daemon, busybox doesn't support it
ad0051a Drop stale directory
6748cde fakeroot: Fix packaging
e478fac glibc: Sync with OE
636e360 Remove broken c based parser code
688eca7 bitbake/fetchers: Sync with upstream bitbake
dd45ce7 matchbox-sato: use formfactor to determine if we should show a cursor
a8484db Remove stale TODO
93845cb Don't depend on the old startup monitor
05d1dc2 cross-linkage: Don't include this in world builds, it will break them
bb73b0e busybox: update 1.7.2 to 1.8.1
4f10a48 Update settings-daemon srcrev
2704cfa bin/bitbake: Fix help typo
478a35d python-pygtk: upgrade to 2.10.4 from OE and add PROVIDES to keep compability
f11feac python-pycairo: added 1.4.0 from OE (needed by python-pygtk 2.10)
6a5d2ce python 2.4 is removed
2100cec Add pointercal files for qemuarm and qemux86
eb7d6a6 python-pygobject: sync with OE
5928db1 python-gst: update to 0.10.8 from OE
ae77523 python-scons: update to 0.97 from OE
3cfbc3b python: update to 2.5.1 from OE (without tcl/tk deps)
eaafa55 valgrind: Fix debug packaging
a3b590e apt: improve packaging of debug stuff
4294048 autoconf: Add patch to remove insane X header/library paths
f5f0fd4 sqlite3: upgrade to 3.5.2
0c2e8ed poky.conf: Add insane QA checking to builds by default
53c67fb settings-daemon: Add missing DEPENDS
3bcc261 python-native: stage into STAGING_BINDIR_NATIVE
8813097 glibc-initial.inc: Fix bogus header directory reference
5dfe764 gettext: Disable java since it finds any native gcj and breaks cross compiled builds
c717e0b checksums.ini: added few entries
a74e457 keymaps: Improve HTC keymap.
9f3c3a1 htcuniversal: add task-keyboard for keymap installation.
2cd8566 matchbox-keyboard: fix expat build problem
6cbe7c8 matchbox-stroke: fix expat build problem
5258997 matchbox-wm: Fix configure issue
776d02d matchbox-wm: add expat paths into configure flags
4e19a8d gstreamer: use autotools_stage_all so libtool files will be mangled properly
ded2718 owl-video-widget: fix desktop file
dbd9045 pcmanfm: fix desktop file
0313421 pcmanfm: remove unused files
f8484fc Fix desktop file
69248f8 Bump web srcrev
c841a6b puzzles: remove the deprecated Encoding key from desktop files
5477906 insane.bbclass: use bb.error when reporting desktop file problems
ab2a04d insane.bbclass: validate desktop files
9e0b8d9 Add desktop-file-utils -native
7c189ee base.bbclass: Fix regexp
20453cf libtool: Don't patch limain.sh otherwise it doesn't regenerate. Drop tag1.patch it doesn't do anything
d9659da poky.conf: Lock down floating openmoko versions
59330e2 uboot-openmoko: Fix SRCREV_FORMAT and PV so source revisions work correctly
e13102c bitbake: Update SRCREV fetcher code to cope better with multiple SCM packages
0fa37f2 cleanup
fda2bb5 Add android-goldfish metadata to meta-extras
210caef gnutls: Remove some bad flags from configure.ac
18f2e27 Fix PE handling in version strings
320be50 base.bbclass: Improve .la file conversion from installed=yes to installed=no
206d632 bitbake.conf: Move yaffs2 image type to EXTRA_IMAGECMD
405128d bitbake.conf: Add PE to RDEPENDS and RRECOMMENDS for -dev and -dbg packages. Remove double space from CFLAGS, it confuses gdb
bc2ed58 xorg-proto-common.inc: PN is empty and isn't built, fix -dev and -dbg packages accordingly
5e1159b libtool: do not add  when linking libraries
8075bb5 Upgrade pango from 1.8.1 to 1.8.3
6648c13 pango: Add missing patch
61bc203 fstests: Fix DEPENDS
7046d4b pango: Fix generated .pc files
b1d8355 gcc4-build-sdk.inc: Set build-sysroot option and simplify other sysroot options. The with-sysroot option is likely bogus and should be removed.
54b470e sdk.bbclass: Set directory structure correctly after staging layout changes
755bf78 meta-toolchain: Fix some paths and remove unneeded header file manipulation
ef0256e linux-libc-headers: bump PR
938663c linux-libc-headers: The dev and dbg packages shouldn't depend on PN which doesnt exist
3860b24 base-files: Create -dev and -dbg packages for dependency chains purposes
7fc5d6e pkgconfig: Switch to using sysroot simplifying pkgconfig files. Requires a full rebuild.
ba2e1f4 bitbake.conf: Simplify target CPPFLAGS, CFLAGS and LDFLAGS due to sysroot benefits
01d5da7 Rearrange staging to match target system layout. This is a major change and will require a full rebuild.
8c1871a gcc: Remove fail-fast host includes patch (breaks sysroot support)
4285b62 pkgconfig.bbclass: Fix hardcoded staging layout references
b176b02 uclibc: Only need to install to staging, not cross as well (after cross linkage changes)
98bd2b0 rootfs_deb.bbclass: Make sure alternatives path exists
19c7b21 package_deb.bbclass: Fix hardcoded apt.conf path, add depends on run-postinsts package for deb images
b176702 Remove hardcoded staging layout assumptions
0e09147 Remove hardcoded staging layout assumptions
19f1bad bitbake.conf: Set RDEPENDS and RRECOMMENDS of -dev and -dbg packages to match specific versions, not >=. Fix typo.
83930b3 vte: Add missing depends
1accf43 libmatchbox: Add missing patch
71969e2 libmatchbox: Fix so reconfiguring works (cp, not mv files). Add configure patch to generate better .pc file
63e19b2 mpfr: Clean up hardcoded staging references
61fc631 kexec: Simplify metadata
41cab40 libgsmd: update to version from OE (openmoko used one)
d0415cd poky.conf: update matchbox-desktop to fix randr and workarea bugs
5741c84 poky.conf: update matchbox-desktop to fix arrow buttons
431fae1 glib-2.0: upgrade to 2.14.3
55751d2 poky.conf: update desktop srcrev
d9a71e8 bitbake: fetcher init - clear data's internal expand cache since the cached SRCREV value will be wrong
a936d29 em-x270: do not assume where mtd-utils are installed
4c76399 bitbake: git.py - Fix weird git checkout issues by using git-fetch, not git-pull since we don't care about the index
e9b7bc6 bitbake: fetcher updates - Add BB_GENERATE_MIRROR_TARBALLS option to allow disabling tarball creation to speedup git fetches, improve srcrev handling to remove some hacks and remove the need for external workarounds
e7198e4 initscripts: add inittab for fic-gta01 to not start getty on serial (from OE)
bdf2abb fic-gta02: added from OE
63ed730 fic-gta01: sync with OE
5728abb fic-gta01: use linux-openmoko kernel
404bbb6 linux-openmoko: added 2.6.22.5 from OE, dropped linux-gta01
83dd625 poky.conf: update desktop (fix lots of bugs, faster) and keyboad (no more debugging spew)
73fbea8 avahi: use a priviliged access group which actually exists
622eeef networkmanager: only add postinst script to networkmanager, not all packages
9e21d7c mtd-utils-native: Stage header files for yaffs2 (from OE)
1d85cf1 yaffs2-utils-native: unbreak (again)
68f19cc poky.conf: set SRCDATE for yaffs2-utils(-native)
d3c4717 local.conf.sample: Update external toolchain documentation
ae66948 Add new poky-external mode toolchain stubs
90dbf75 yaffs2-utils: unbreak it
4bec704 bitbake.conf: add yaffs2 support from OE
b1d86e4 yaffs2-utils: added from OE
b5fda83 clutter: Fix so 0.4 versions are default (which matches distro config SRCREVs) and fix up svn trunk versions too.
7277fe1 poky.conf: Fix DISTRO_VERSION, override SDK_NAME and SDK_PREFIX
9ab1810 meta-toolchain: Fix after deploy ipk changes
e0f9228 poky/conf: Lock down clutter-gst version
739895c clutter: update patch
8c6e21c clutter-gst: Fix EXTRA_DIST for Poky use
28291e7 poky.conf: update matchbox-desktop srcrev for startup speed increase
8764d5c Add poky-image-clutter image
3b6c384 Pin ubootchart srcrev, and remove integrated patch
1ab9a48 matchbox-panel-2: Fix RPROVIDES and friends to just apply to PN, else bad things happen with the -dbg and -dev packages
7ca6e91 rootfs_deb: Fix hardcoded etc references, add missing mkdir
c141918 ubootchart: comment out acct dep for now
7676c2b Move ubootchart to meta/
2188cf0 ubootchart: add a launcher to stop the profiling, alternatives to optionally replace /sbin/init, and cleanly pretend to be /sbin/init
378c8db Add acct from OE, for ubootchart
87c4228 Add run-postinsts. This runs any remaining postinstall scripts without needing ipkg/dpkg. Currently ipkg specific but this should be easy to change
139d157 dfu-util: added from OE
5853cf2 usbpath: added from OE (needed for dfu-util)
7331982 ubootchart: added proper PV
94b124a Add ubootchart
e51fbab abiword: added 2.5.2 from OE (disabled spellcheck, printing, plugins)
5f02bb8 linux recipes: switch to KERNELORG_MIRROR
beca813 linux: added em-x270 support (from OE em-x270 recipe)
594a2c2 em-x270: added machine config from OE (and a bit of cleaning)
ae748c1 checksums.ini: new entries
b47281e eventlog: added 0.2.5 from OE (needed by syslog-ng)
895ebff libol: fix SRC_URI (from OE)
8533e3c syslog-ng: update to 2.0.5 from OE
72d3eee poky.conf: update matchbox-desktop srcrev
ceb2762 alsa: upgrade to 1.0.15
d6e11d1 eds-dbus: libecal recommends tzdata
b193e25 Add tzdata and tzcode, for the timezone files
76df265 openmoko-dates2: update from OE to fix SRCURI
798ce7c openmoko2: update packages from OE so that openmoko-today2 builds
1c77306 gcc: Make gcc build on amd64 by having it forget target configure cache when configuring for build machine. (from OE)
c1c8083 checksums.ini: added some new entries
9e99242 checksums.ini: added some new entries
c7c0b34 checksums.ini: added some new entries
8814b8a gypsy: make it build by telling that we are Debian
de6377f pointercal: add calibration file for HTC Universal
2ebf3f2 poky.conf: Bump network-manager revisions
0e32e50 poky.conf: Fix gaku/gypsy SRCREV
f7dee23 checksums.ini: added some new entries (mainly Zaurus kernels patches)
14fb92c bitbake runqueue.py:  Allow multiple options for deptask flag (from poky), fix comment typo.
c9be325 bitbake: Sync with upstream
0344693 linux-rp: enable uinput for Tosa in 2.6.17
399ea0e linux-rp: sync Akita defconfig from 2.6.23 to 2.6.24-rc1
89fd711 linux-rp: enable PXA Overlay support for akita
861910a linux-rp: enable WiFi for akita
b5ebbe4 libtool-cross: Remove hardcoded staging paths
bf8f4d4 perl: Sync with OE, fix hardcoded staging references
1ba6bdf linux-cmx270: Add missing patch
377ad26 gcc: Remove hardcoded staging paths
849311c bitbake.conf: Remove more hardcoded staging layout
454311f base.bbclass: Fix hardcoded staging references
a6314a0 glibc: Sync glibc.inc cleanup from OE
4894e13 glibc: Factor staging function into a common .inc file
6a97ee5 glibc: Convert from hardcoded staging layout
3b945ff bitbake.conf: Add dummy layout variables (describing the current staging layout for now)
d49d6f6 pkgconfig.inc: We should be installing pkgconfig files into LIBDIR now
f061345 fontconfig: Fix hardcoded staging layout references
d12d867 shasum-native: Create directory before installing files
fa9920f db: Fix hardcoded staging layout references
2f6d904 dbus-glib: Fix hardcoded staging layout references
c7b0f44 linux-gta-01.inc: Fix package name in DEPENDS
d00bac6 gnome-common: Fix hardcoded staging reference
82e5d0d base.bbclass: Add note from OE
c107af7 base.bbclass: Clean up staging references
3255b1d autotools.bbclass: Reference STAGING_DATADIR
2718b2a bitbake.conf: Start cleaning up staging variables
70abc05 u-boot: import OpenMoko uboot from OE
ce1e498 cm-x270: do not hardcode kernel version
46030a8 Upgrade GTK+ from 2.12.0 to 2.12.1
cc46157 gconf-dbus: bump PR to the same as in OE
aa73bb0 gconf-dbus: added dependency on virtual/libintl, removed not used HEADERS variable (from OE)
b5e57b0 gnu-config: add avr32 support (from OE)
8ff6e53 lame: always link with libm (from OE)
6174a05 libgcrypt: change staging to autotools one (from OE)
4b78036 libxml2: create staging directories before installing into them (from OE)
58df8e8 linux: upgrade cm-x270 kernel to 2.6.23 (from OE)
523603f linux-rp: make 2.6.21 default for collie (from OE)
f10df9a linux-hotplug: fix bashisms (from OE)
1bdfb7b linux-libc-headers: sync with OE (mainly safer use of  and blackfin support)
a975511 lirc-config: sync with OE
1d168a6 lrzsz: use update-alternatives (from OE)
03b1d82 lzo: strip whitespaces
52dc897 xpext: removed not needed xextproto dependency, stripped whitespaces
a137347 xsp: removed not needed xextproto dependency, stripped whitespaces
7c37de1 make: drop 3.80
98cc181 prism-firmware: sync with OE (usage of 1.7.4 firmware and other fixes)
33ebd14 module-init-tools: fic uclibc build (from OE)
2fe7cc5 packages/modutils/modutils-collateral.bb: Modprobe has changed between 2.4 and 2.6 kernels. (sync with OE) The information in /etc/modutils and /etc/modules.conf is not read under 2.6. 2.6 uses a /etc/modprobe.d directory, and it does not need a "/etc/modprobe.conf" file; it reads all the appropriate *.conf files and compiles the information at boot time. This commit closes bug #808
52e92fd modutils: sync with OE (added bison-native dependency, no package changes)
ab7be97 mozilla/: dropped unused files
31eef80 mozilla-cvs.inc: drop unused file
cdd1dbc site/common-glibc: Add definitions to make gcc's inbuilt zlib work
01e27b8 mpfr: remove whitespaces
2860ed5 ncurses: sync with OE
5d49646 network-suspend-scripts:remove whitespaces
6efadbc package-index: regenerate indexes for all ipk dirs (sync with OE)
2f841db checksums: added some X11 libs
242732a checksums: added fuse and ltrace
cf9c168 checksums: added bash patches and alsa 1.0.15
225aa61 unzip: added 552 from OE - needed for spectrum-fw
dde303c orinoco-conf: drop pcmcia-cs support
ed8ea77 orinoco-conf: call update-modules to populate information from /etc/modutils
50dbd19 hostap-conf: dropped pcmcia-cs support
9846033 hostap-conf: depend on update-modules
6de1eea pcmcia-cs: drop as we use pcmciautils for all PCMCIA machines
8cd7a0e sdk.bbclass: package more debug files (from OE)
9e33229 openmoko2.bbclass: sync SVNREV with OE
2a5896f spectrum-fw: added dependency on unzip-native (from OE)
fa28276 orinoco-conf: remove whitespaces
ada2dbb pango: added dependency on virtual/libiconv (from OE)
dc66833 pcmcia-cs: rdepend on hostap and orinoco configs (sync with OE)
748341d pkgconfig: remove whitespaces
5b83a5d pointercal: sync with OE (no package changes)
fd9b783 popt: remove whitespace
aaa8c63 portmap: depend on fakeroot-native (from OE)
90b30d1 strace: drop 4.5.12
7528a04 ppp: sync with OE (no package changes, PR bump)
ed8ca89 psmisc: package debug versions
0756804 psmisc: generate more 'doc' packages (sync with OE)
cb773ee strace: Apply patch from uclibc buildroot to fix compilation uclibc (sync with OE) Without that patch the uclibc EABI build fails. Patch was taken from the buildroot of uclibc.
706f9a3 bash: apply upstream fixes: up to 025 (was to 005)
74beec7 bash: sync with OE (no package changes)
52b64dd apmd: sync with OE (removal of /usr/src/linux include dirs)
32d6f21 alsa-lib: sync with OE (fpu settings)
a652210 Remove bogus file
fb61cf3 Add recipe to build linux-zylonite 2.6.14 kernels
09f4b20 checksums.ini: added some new entries from OpenMoko build
67ffdb6 checksums.ini: sort by archive name (script for it will be pushed into OE later)
1c53455 checksums.ini: sort alphabetically to make updates easier
354c543 linux-rp: upgraded from 2.6.23+git to 2.6.24-rc1
6e23136 package.bbclass: Make populate_packages copy files, not move them during do_package
26b7ef0 busybox: added 1.7.2 from OE as non-default (Angstrom defconfig used)
498b4f4 bitbake data.py: Fix unexport handling (#OE3135)
c033c91 bitbake: providers.py: Fix perferred_version variable handling
6a0a9ad bison-native: Use STAGING_DATADIR
bc7e9ce openobex: Fix staging function typo
dd0eec8 libxml2: Stage binconfig files to STAGING_BINDIR_CROSS
5c0507f glibc: Drop unused directory
ecf4068 glibc-intermediate: Factor code into common .inc file
c6c94fa glibc-initial: Factor code into common .inc file
6e60bdc libusb: drop old version
ae713f3 libid3tag: upgrade to 0.15.1b, use SOURCEFORGE_MIRROR (from OE)
a7aee57 libmad: use SOURCEFORGE_MIRROR (from OE)
930fbfe libfakekey: reindented recipe
128f2de qemu: import gcc3 check from OE
d8b7e95 quilt: depend on util-linux instead of bash to get 'getopt' command (from OE)
644eace readline: remove whitespace
028906b sato-icon-theme: unify 0.1 and svn
8d2ab41 scap: dropped
bc90283 sysfsutils: split libsysfs to separate package (with dev and dbg ones)
483b058 update-modules: sync with OE (no changes for us)
d64a6b7 wv: cleanup, added missing fields
a105d81 libxrandr: added libxext dependency (sync with OE)
5d2aab3 libxpm: also depend on libxt
b27018c libxpm: it needs libsm too
5c80bbc xtscal: sync with OE
ad9ae09 zlib: cleanup and sync with OE
286da62 site: sync with OE
e0833b8 wireless-tools: update to 29 (final)
09a71d0 keymaps: sync with OE
548750d ipkg-collateral: mark /etc/ipkg.conf as configuration file (sync with OE)
ed93f4d hostap-conf: remove whitespaces
09a55ca gtkhtml2: fetch really anonymous (sync with OE)
096ef7a genext2fs: remove whitespace
66a5d0f gdbm: remove whitespace
3be60de file: remove whitespace
35dd9d7 console-tools: remove whitespace
7d62803 base-passwd: remove whitespaces
aec382b linux-rp-2.6.23+2.6.24: Add missing patches
62c6e3e siteinfo.bbclass: add mips support from OE
c67429e insane.bbclass: fix x86_64 arch name (from OE)
329e9fb Add linux-rp 2.6.23-git9 kernel for testing purposes (not default)
f3b960b linux: Make kernel symlinks relative so they can be copied/moved and still work
411cbb4 checksums: sync with OE
ca30d3b checksums: drop daily generated pa_snapshot
0bcdf33 checksums: fix fakechroot checksum
f35d0c3 checksums: removed generated daily cumulus snapshot
e575426 checksums: removed unfetchable usdir.rdm.tgz
5f5abc5 checksums: removed few not-fetchable entries
655e50d checksums: fixed shfs and FormEncode checksums
8543177 task-base: bump due to 2.6.23 and task-machine-base contents change for c7x0/akita
5721507 checksums.ini: added some more entries
734f511 base.bbclass: add checksums.ini generator
2e0dd47 checksums.ini: add some new entries
70141eb poky.conf: set proper versions of poppler and evince
26ace33 linux-rp: add no-SCR-check patch to 2.6.23
81d6b06 openssl: create libraries in staging before copying data into them
9ac4458 linux-rp: make it default for all machines except qemu ones
e481e47 poky.conf: upgrade matchbox-keyboard srcrev
5c2f8dd Update glib-2.0 to 2.14.2
15080af base.bbclass: merge checksums.ini warning from OE
61d4144 linux-rp: make 2.6.23 default for spitz
3bcb616 linux-rp: makes 2.6.23 default on c7x0 (tested on device)
ff9e846 linux-rp 2.6.23: c7x0/akita have pcmcia in modules to fit in kernel partition
9255186 linux-rp: autoload pcmcia modules
2b156ce zaurus: RRECOMMENDS pcmcia modules for c7x0/akita
2adc33b ipkg: Update update-alternatives reference
d9e8ff1 dpkg: Fix update-alternatives dependencies and remove bogus variables
7992bb1 task-poky-boot: Switch to use VIRTUAL-RUNTIME_update-alternatives
4a5f711 poky.conf: Set VIRTUAL-RUNTIME_update-alternatives, fix some quoting
264a9ad update-alternatives: Set PROVIDES/RPROVIDES/DEPENDS correctly
38edf0a librsvg: Remove duplicate EXTRA_OECONF line
c27b41f librsvg: Bump PR (missed in the last commit)
530eda4 librsvg: Explicitly disable libgsf, croco and gnome-vfs since they're not in DEPENDS (and remove old version)
c69e329 linux-rp: added one cleanup patch for w100fb
c419af6 bluez-utils: Add patch to allow disabling of hal in configure
bbcc43d bluez-utils: Disable hal, at least until we explicitly add to DEPENDS
d49a4ef mtools: Remove install-info commands to unbreak build
2ab0d93 mtools: unbreak with patch from NetBSD (DESTDIR support)
beb3a1b bitbake: Fix taskdata whitespace splitting issues
c09f9e8 poky-image-sato-cd: Fix dependencies
532361b mtools, cdrtools: Move from meta-extras to meta for boot CD support
ffb1c7c dosfsutils: Move from meta-extras to meta
03abf8e bootimg.bbclass: Fix taskname reference
46b69ea bitbake: Sync bzr fetcher with upstream
388c2f8 bitbake: Add hg fetcher (from bitbake upstream)
feb7067 syslinux, nasm: Move from meta-extras to meta
8eec392 gypsy: Add missing DEPENDS
e518f7a linux-rp 2.6.23: unbreak for zylonite
7ddb194 linux-rp: update 2.6.23-rc4 to 2.6.23 (non-default as c7x0, akita, zylonite, hx2000 breaks)
5a409e5 poky.conf: bump SRCREV for clutter (approved by Rob)
bd06aa1 linux-rp: remove last parts of OpenZaurus from kernel recipe
015593c clutter-gst: added (non-default) recipe for 0.4 branch
f0d60ff clutter: added (non-default) recipe for 0.4 branch
9e92369 clutter: mx31litekit support added
091e94c formfactor: Add zylonite
b3ecca5 liberation-fonts: grab via HTTP not HTTPS
a68b431 linux 2.6.22: kernel for cm-x270 taken from OE
c8587da cm-x270: merge OE machine config instead of our one
8fc7d0b htcuniversal: do not depend on acx-firmware until its license will be known
ee38abe task-poky-boot: include keymaps only for machines with keyboard
f65a0e7 poky-task-boot: also ship keymaps - otherwise device can be unusable
dbeb513 linux-rp: re-enable w100-extmem patch also in 2.6.23-rc4 kernel (merge with OE)
f40c023 linux-rp: re-enable w100-extmem patch to get XImageon working (merged from OE)
d2d3f84 mx31litekit.conf: Fix typo
d3685e7 mx31litekit.conf: Tune for armv5te for now
2e16b77 conf/machine/bootcdx86.conf: Fix broken require
eeaeae4 poky-autobuild: overwrite instead of appending to svninfo
a0ad9da scripts/poky-autobuild: Add support for a POSTPROCESS command
7f97838 poky.conf: Update oprofile and oprofileui SRCDATE/SRCREV, add gypsy
af1aeba Add first pass at gypsy.bb file
887a280 linux-mx31: MX31 LiteKit support.
54d4742 glib-2.0: Remove accidental commit
7ad9dcd pango, atk, libglade, clutter: Fix gtk-doc DEPENDS
ccb101a gtk+.inc: Fix DEPENDS
46da048 glib-2.0: Fix DEPENDS (gtk-doc -> gtk-doc-native)
fbffeca task-poky-sdk: Add libtool
d478db9 gtk-doc: Drop broke gtk-doc.bb and leave native version
4adc447 task-poky-sdk: Add cpp, gettext and libstdc++
ea12e3c Copy the fix for OE bug #2554 over to Poky from OE. (Necessary for building on at least OpenSUSE 10.3.)
b76b84f HTC Universal: Including zaurusd to the htc images.
9ea931a oprofile: Add oparchive fix and patch to add --root option to oprofile
d195594 Add rules for MXC UARTs.
6832376 js: Fix typo in PARALLEL_MAKE
62b67b0 package.bbclass: Remove depchains packaged() check. This broke after pkgdata was split for multimachine issues and I'm not sure we need/want it anyway, we're only dealing with Recommends, not Depends
a4fde82 oprofileui.inc: Remove now unneeded FILES statement
7aca456 oprofile: Add opstart/opstop commands, fix armv6 events file
596b7b8 udev: Bumping -115 PR.
5dfdab5 udev-115: Kernel events filtering improvement.
cfa5b19 linux-rp_2.6.22+2.6.23-rc4: Fix FB overlay.
cdafd8b wpa-supplicant: add some patches from redhat
f2287f4 package_deb.bbclass: Create DPKG_ARCH to allow mapping between debian archs and Poky ones
f0dde94 hal: Tweak RDEPENDS/RRECOMMENDS
82bdad4 package.bbclass: Append to do_package[deptask], cleanup up PACKAGES checks, generate .packaged file for depchains benefit (fixing -dev and -dbg package dependencies). People should wipe do_install stamps and rebuild to fix package dependencies
8af3726 package_(ipk|deb).bbclass: Rename do_packages stamp to be clearer about what it does
5c5c084 linux-rp-2.6.22+2.6.23-rc4: Release console semaphore on an error path.
939d457 linux-rp-2.6.22+2.6.23-rc4: Fix vt_ioctl race.
407a73d poky.conf: revert accidental commit
73b608e tasks: update srcrev to use X-MB-SingleInstance
1e7fe22 kf: change SingleInstance to X-MB-SingleInstance
0bf861c puzzles: change SingleInstance to X-MB-SingleInstance
09e6115 poky.conf: upgrade mb-desktop srcrev to get X-MB-SingleInstance support
3b38469 local.conf.sample: fix typo, tools-dbg -> tools-debug
b284e39 wpa-supplicant: remove 0.5.7 and unused files
4953542 linux-rp-2.6.22+2.6.23-rc4: Added the HTC wifi module to our defconfig.
55c49b8 clutter: Refresh clutter to a 0.4 version
7fc1a05 udev: Promote 115 to default
72120d2 hal_git: Remove uneeded patch
2a2b229 hal-info: DEPENDS on hal (for configure checks)
4a33e3d udev.inc: Fix staging of libvolume (autotools macros don't work)
75bcca7 networkmanager*: Switch to SRCREV
512c88f poky.conf: Bump oprofileui SRCREV, add networkmanager and networkmanger-applet
8ec9fd5 Sync patches with upstream
126d979 poky.conf: Specify preferred verson of hal-info and remove halinfo srcdate
b985401 hal-info: add a versioned release, and lower the preference of the git package
23f1df5 hal: no need to force-reload, we can reload now
2b6d98f wpa-supplicant: reload dbus in postinst
eb7cc8a bitbake git.py: Always use tag param from URI if specified
2c13e1b Remove dhcdbd, NM 0.7 doesn't need it
3cc1591 Remove NM 0.6
5409e91 wpa-supplicant: enable the DBus control interface (for NM)
4d76e10 iproute2: fix ordering so that the patches are applied
69a365b oprofileui.inc: Add gconf to DEPENDS
820f7c6 networkmanager: remove integrated patches, fix startup script to start NetworkManagerDispatcher, add missing depends, don't restart ncsd as we don't use it
c99719d gnome-keyring: add a DBus service file so the daemon is auto-started when needed
86fa4f7 linux-zylonite: Removed as zylonite is using -rp kernels.
6c85a2a linux-rp: minimal zylonite kernel
b4c4ff1 glibc: Remove hardcoded LIMIT_BUILT_LOCALES values
5a5f497 glibc.inc: Fix LIMIT_BUILT_LOCALES handling
0a0218f glibc-package.bbclass: Remove dead code
1d13fd2 poky.conf: Set LIMIT_BUILT_LOCALES
bb9d5bb dbus: add reload action
4f06fd1 dbus: don't pass --reverse to run-parts, busybox doesn't support it
c0be929 Add network-manager-applet
c41fcd6 networkmanager: Add staging, and split packages like OE
2aaaeda Update tasks to 0.12
ed66764 networkmanager: add svn trunk packages, fix up bad packaging, and backport fixes to 0.6
0a5c898 ppp: Fix debug packaging, and stage the pppd headers
40baa24 networkmanager: Rename bb from _svn to 0.6svn
cb40f22 udev: adding the latest udev release, 115.
b03d999 dbus: Drop unused patches, and merge unversioned and version patch directories
9c0ecf0 zylonite: Initial poky support.
6e5b0d2 bitbake.conf: Clean up some hardcoded path/layout references
75bc310 glibc/glibc-intermediate: No need to install headers/libs to cross directory (populate_staging speedup)
e32f910 glibc-initial: Install headers into staging, not cross
405a6a6 gcc-cross: Use staging for local-prefix instead of cross, undo ARCH_FLAGS_FOR_TARGET change
6d09e07 linux-libc-headers: Add DEPEND on cross-linkage to handle linking of directories
93c82d7 cross-linkage: Add dummy package to handle linking cross to staging
c7c2baa linux-libc-headers: Gross hack until gccs include paths are fixed
43ad089 linux-libc-headers: Only install to staging now, not cross
308250e gcc3-build.inc: Add staging includes to ARCH_FLAGS for target meaning we don't have to have includes in both staging and cross
79bbd24 gcc-cross-initial: Move common code to gcc-cross-initial.inc
1401afe gcc-cross-initial: An install stage is totally pointless
32047c6 Upgrade gnome-doc-utils to 0.12.0
bee48cf Upgrade gnomecanvas to 2.20.0
22da738 Upgrade gtk-engines
b6b7200 gnome.bbclass: change version regexp to handle x.y versions, not just x.y.z
80924d4 Upgrade gnome-vfs to 2.20
7fb9559 Upgrade gnome-keyring to 2.20
b6e6692 Upgrade gnome-common to 2.20
75ec54e Upgrade evince to 2.20
55fc4e7 Upgrade poppler to 0.6
5b5ae6b kernel.bbclass: Add menuconfig task
ece4387 bitbake.conf: Allow overriding of SHELLRCCMD
70d7d50 Upgrade atk
12a9c78 Upgrade gail, and fix packaging
320e6a3 libgsmd: Update from 20070801 to 20070917.
e91795a pkgconfig: Add sysroot support patch (from pkgconfig mailing list)
48d9843 linux-nokia800.inc: Ensure deploy and populate_staging don't run at the same time
e1966bc busybox: Remove unused config
51d9c76 devshell.bbclass: Sync with OE since this no longer works at properly without this change
2129b59 Upgrade glib from 2.4.0 to 2.4.1
021e69f Upgrade GTK+ 2.11 to 2.12.0
33f82b3 pixman: added 0.9.5 from OE
f976627 ohm_git.bb: switch to --without-xauth
b55c10f eds-dbus: update srcrev, remove integrated threads.patch
3694035 poky.conf: exclude eds-tools from world builds
ab5d09d Rename eds-tests to eds-tools
e733d0d poky.conf: Upgrade eds-dbus srcrev
8d4fb7f eds-dbus: Add threading patch until I'm confident enough to commit it to svn
e805cf6 Update eds-tests to bzr branch
3b56520 eds-dbus: fix parse errors
57348b3 linux-rp_2.6.22+2.6.23-rc4: Fix objcopy confusion with bintuils 2.18
7c5e637 linux-rp-2.6.22+2.6.23-rc4: Added ASIC3 keys to the HTC kernel build.
720b5c1 kernel.bbclass: Add kernel-vmlinux package
9998dd4 binutils-cross 2.18: unbreak x86-64 hosts - from OE #2928-c6
c9375e5 Cleanup POKYMODE files and add summary documentation
c82b1a4 gconf-dbus_svn.bb: don't depend on GTK+ as we don't use it
09e8bdc poky-external-csl2006q3.inc: Add TARGETOS variables
8b1ae56 CSL external toolchain: POKYMODE file
4ad4ba7 external-csl-toolchain: added 2006q3-27 version of CSL arm toolchain
fe347f7 poky.conf: Bump eds-dbus srcdate
8a0e92a bluez: dropped old versions
6b728c4 bluez-utils: upgraded to 3.18
197bfee bluez-utils: upgraded to 3.17 from OE
605afd5 bluez-libs: upgraded to 3.18
476c01a bluez-libs: upgraded to 3.17 from OE, disabled CUPS support
050902e bluez-hcidump: updated to 1.40
207a208 bluez-hcidump: updated to 1.40
54b4320 bluez-hcidump: updated to 1.38
94346b0 bluez: dropped not used files
b860f81 bluez: dropped files used by other distros
e60d22e bluez-utils: dropped 02dtl1_cs.sh - it is now in own package
ce9b85c bluez: dropped old bluez-utils-dbus patches
2121a09 hicolor-icon-theme: upgrade to 0.10
69f9c09 shared-mime-info: upgrade to 0.22
f0842c2 package_ipk.bbclass: Improve directory existence check
027fa67 package_ipk.bbclass: Fix ipkg-sdk.conf
4eaac5b package_ipk.bbclass: Create sdk Packages files
911d2ed Update eds srcrev
4d1090e linux-rp-2.6.22: Update qemu defconfigs fixing wacom problems
c547a06 openmoko-dates2: added initial recipe
10bf469 linux-rp 2.6.22: enable hostap and other 802.11 drivers for c7x0 and akita (from OE)
e57146c Bump eds srcrev
451ef8b base.bbclass: Swicth to use cleandirs flag for install task
9c9fad5 build.py: Add support for cleaning directories before a task in the form:  do_taskname[cleandirs] = 'dir'
763dc8a package_ipk.bbclass: Split ipk deploy directory by PACKAGE_ARCH (from OE)
c518632 image.bbclass: Fix IMAGE_BASENAME and PACKAGE_INSTALL variables
f2f97b7 bitbake.conf: Add bzr fetcher support, give IMAGE_BASENAME a sane default
899c451 bitbake: Sync with 1.8 upstream branch
7d4aa7f prelink: Fix R_ARM_TLS_DTPMOD32 problems
5758f9c git-native 1.5.2.3 -> 1.5.3
5338738 GTK+ 2.11: Update range patch
75fadfe Update and lock OHM down to a working revision, also remove some crack
56e0055 Bump EDS srcrev
cde908c glibc: do not package /usr/include/scsi as it is in libc-linux-headers-dev
4831d5f elfutils: Fix -dev package and split binutils overlap into elfutils-binutils package
f403f6e package.bbclass: Cleanup install references into a configurable variable
6fa51c2 base.bbclass: Remove and re-create  when installing to ensure that it is empty
9694023 insane.bbclass: don't raise strings, but exceptions
263cce7 Inherit gtk-icon-cache to install and register the icons
31feb9d Fix debug packaging
4f69284 Ship the printbackend debug files
0cec26e Remove small-gtkfilesel patch, the widget is deprecated
1bce4f3 Remove xsettings.patch, I can't see the point of it
df44bc8 Unify indentation
a4a82d6 Remove patches which are not used, or should not be used
d392c1c Remove more unused or useless patches, and update the range patch
d4cb583 Remove bogus MAINTAINER fields
e35de7e binutils-2.18: Fix patch
11e4e53 binutils 2.18: add patches
d9c89ac Remove some patches we don't apply
a23b153 poky-eabi: use binutils 2.18
ab62bf5 binutils: added 2.18 cross sdk
4f388ef binutils-cross-2.18: Use .inc file
dbf959b binutils: added 2.18 (normal/cross, no sdk)
bcf1196 binutils: Use common .inc file
903bd14 image.bbclass: Revert some changes as bitbake can't seem to cope with them :-(
3adf5ea makedevs: Fix named pipe creation and set file modes correctly
c51edd3 uclibc: Sync with OE
f1e0aeb conf/distro/include: Sync versions files with OE
a11bbb4 hx2000.conf: Sync with OE
65f6428 conf/machine: Sync various changes with OE
d20e041 site: Sync with OE
3fadcdb linux-rp: Sync with OE
be34d55 base-files: Remove unsupported machine configs
a2ca87c zaurus-updater: Add C3200 support from OE
e223238 bitbake: Update to latest bitbake-1.8 branch
1cf731b initscripts: Sync with OE, primarily for better /etc/timestamp handling
3cb6c76 image.bbclass/poky-image.bbclass: Add a function to create /etc/timestamp during image construction to give a reasonably sane default time setting
b2a2689 sip.bbclass: Sync with OE
bc47503 tinderclient.bbclass: Sync with OE
47ea9ba image.bbclass: Allow partial backwards compatibility
733dc27 classes/distutils*.bbclass: Merge updates from OE
5781fe1 insane.bbclass: Merge updates from OE
63b739f classes: Sync various tweaks from OE
8d342dc makedevs: Add file and diretory creation code (from OE)
bbbb9f5 device_table-minimal.txt: Sync with OE (remove dubious /bin/ entries, create /dev directory)
7a284e5 linux_modules.bbclass: Remove unneeded file
0ea0986 module.bbclass: PARALLEL_INSTALL_MODULES is dead code
f19cf86 meta-toolchain: Change to be more generic and use package_ipk conf generation functions. Also rename task-poky-standalone-sdk-host to task-sdk-host and add copyright.
c6938aa Factor ipkg index and conf file creation into package_ipk.bbclass
a7c63ec gdb: Move 6.6 patch out of .inc file
d989bca gdb: Fix typo
1e829f1 gdb: metadata cleanup
dfa8101 rm_work.bbclass: Update for bitbake 1.8.8
0206afd native.bbclass: Don't use site files for native builds
62eb35c debian.bbclass: Remove stable BUILD_ALL_DEPS reference
f2ddfbb classes: Sync with OE
411cd0c base.bbclass: Further tweaks from OE
19e113c base.bbclass: Remove legacy code which hides bugs
1bc8eee base.bbclass: Remove showdata task (its broken and bitbake -e is equivalent and not broken), tweak URI checksum messages
4999f1d bitbake.conf: Sync with OE.dev
c8c2a9e Add new gnome-vfs to poky-bleeding
a74c19f Add new gnomecanvas to poky-bleeding
c3159bd Add new gnome-keyring to poky-bleeding
8f67430 Add new ATK to poky-bleeding
b325ea5 Add new gtk-engines to -bleeding
c654ed6 Add gail
2162aff Lock down libgnomecanvas in poky
7dfda3f Upgrade gnome-doc-utils to 0.11.2
ef56bac libgcrypt_1.2.3.bb: stage the m4 file
e3962e2 Upgrade evince to 2.19.4
154f7d7 Upgrade libart-lgpl to 2.3.19
fd68c29 Upgrade intltool from 0.35.5 to 0.36.1
7d53ee2 Upgrade startup-notification to 0.9
6e81ae5 Upgrade librsvg to 2.18.2
8cc540d Upgrade pango to latest stable release, 1.18.2
3d0b9fc Remove unused glib versions
5ff88af linux-gta01: added missing logo
1c87082 added current location to filechooser dialog
5ee5800 Upgrade eds-dbus to latest svn
6406e3e Upgrade contacts svnrev to 0.7 release
7f62df1 Upgrade the contacts tarball version from 0.5 to 0.7
1bd6367 mtd-utils: Lock down git revision for now
510d995 Add bluez-dtl1-workaround from OE
81dca73 task-base: Add bluez-dtl1 workaround from OE
837f7e0 sanity.conf: Bump minimum bitbake version
2b109b7 linux-rp.inc: Remove no unneeded variables
e2b7975 conf/machine: Set KERNEL_IMAGE_TYPE and kernel-base RDEPENDS for various machines
5f17d07 zaurus-2.6.inc/linux-rp: Change to machines marking themselves as not wanting kernels included in images
226a5dd kernel.bbclass: Sync with OE for packaging changes
4a319e9 modified GtkFileChooserDialog for embedded
c7b5d7b linux-rp: Set 2.6.23-rc4 as the default kernel for HTC Universal.
f79c41c linux-rp: Ported the HTC Universal patch to the latest -rp kernel.
ff0a621 linux-gta01: update to 2.6.21.6 from OE
2fc0b59 eds-dbus_svn.bb: don't set acpath, new gnome-common doesn't need it
0e3f906 gnome.bbclass: remove unneeded -I argument to autoconf
6b1890a linux-gta: Lock down patch svn revision to a known working one
c21f61e update-modules: depend on depmod
8ec4474 linux-rp 2.6.23-rc4: Fix jffs2 patch
2cc4b49 linux-rp: Correctly set default preference
da85bfc Fix build failure
2ab6191 Add linux-rp 2.6.22+2.6.23-rc4 (not default)
bfc657c gnome-common: Fix directory name
784976e gnome-common: upgrade from 2.4.0 to 2.18.0
35aaa6b gst-plugins-bad: upgrade from 0.10.3 to 0.10.5
3abd198 gst-plugins-ugly: upgrade from 0.10.4 to 0.10.6
99d20bd poky.conf: Bump screenshot srcrev
bd949e7 Add blktool, useful for probing block devices (and add to test tools package)
8f041c7 nfs-utils: start/stop also statd so clients will be able to do locking
1039c72 openmoko-tasks2: conflict with tasks
114a799 openmoko2: sync with OE
39d90fb neod: taken from OE
81d71aa openmoko-common2: taken from OE - used by openmoko-session2
e711040 openmoko-today2-folders: taken from OE - needed by openmoko-today2
0c7e337 openmoko-icon-theme-standard2: taken from OE
b8f7ee3 openmoko-tasks2: taken from OE
74ed03e libsndfile: added 1.0.17 needed by pulseaudio
cf8dfa2 libsamplerate: added 0.1.2 needed by pulseaudio
d9a4c58 pulseaudio: added 0.9.6 needed for openmoko-dialer2
0ab2b38 libgsmd: move to meta/ as it is needed for phone feature
0698f30 Add checksums.ini from OE.dev
f590064 fic-gta01: added usbhost to features (to get bluetooth working)
8d3cf28 openmoko2.bbclass: taken from OE for updated OpenMoko 2007.2 recipes
4aa6b14 portmap: missing patches
3cd1a09 portmap: add missing file
db5c504 portmap: upgraded to 6.0
08ab9f2 libxaw: upgrade to 1.0.4
732bebd poky-image.bbclass: install task-poky-standalone-sdk-target into SDK images to get usable toolchain
3e85c63 task-poky-standalone-sdk-target: it is usable not only for external toolchain
e93df89 package_ipk/deb.bbclass: Add locking for package creation to stop conflicts
bc8fdf0 libxpm,libxsettings-client: remove libxt build-dependency
0de0746 bash: Move from meta-extras to meta
0bc8d54 gconf-dbus: add missing depends on intltool-native
97467d7 less: update to 406
7e2f729 task-poky-sdk: Add quilt, less
968262d quilt: Won't run with ash, add bash
d475a77 package.bbclass: Fix typo
170e7e1 js: Disable parallel make
0fe7e8d htcuniversal: 802.11 driver and firmware dependencies for HTC Universal.
62a6dcc linux-rp: Add 802.11 driver for HTC Universal.
d1e1cc0 htcuniversal: Initial HTC Universal support.
7423ba2 linux-rp: Add HTC Universal support.
f5c4efd ohm: Sync with OE.dev
4b4dca4 ohm: Set xauth-dir to make it configure
ff90ae3 debian.bbclass: Fix dependencies
a75b8d8 bitbake: use Psyco only on x86 (no support for other archs)
f8b928e qemu: added 20070613 version (as default), made CVS floating
4ff6f39 xorg-libs: Remove more stale patches
b913a0e xorg-libs: Remove stale patches
e7581b5 libx11: Disable makekeys properly allowing the package to rebuild without weird failures
c09b63e meta-toolchain: Adjust after pkgdata changes
9bb9178 package.bbclass: Add back package_write task in a new form
2ed6d9c base.bbclass: Make populate_staging run after install to avoid conflicts
3d29811 fakeroot: Add missing patch
222ff8e fakeroot: 1.2.13 -> 1.7.1 to fix various random rootfs creation failures
2075cb7 apt: Add db/db-native as a DEPENDS so apt-ftparchive gets built (needed by deb rootfs creation
a4b8304 package.bbclass: More pkgdata fixes, (install task needs to rerun on existing builds)
4a705e9 base.bbclass: populate_staging after do_compile. Any packages staging implementation can change this
686161a gtk+: Refresh misbehaving patch
f041a4d base.bbclass: Set pkgdata location to something machine specific when needed so multimachine builds don't break. NOTE: People will have to rerun the install/package tasks after this change on existing builds
48fd37f packaging: Split deb and ipk creation into separate tasks so changing the packaging type means the new type of packages are automatically generated.
005bf01 preferred-xorg-versions: fix kbproto/inputproto versions
ebb71f6 libgsf: updated to 1.14.5, dropped older
bd4ea1b libetpan: dropped 0.46
6a76f82 kf: recipes are not executable
43fb739 gnutls: remove hacks needed for autoconf 2.59
8ee1c79 coreutils: dropped 5.1.3
3fd04e8 pkg-config: dropped 0.15
889885f automake: dropped 1.9.3
3b13655 autoconf: dropped 2.59
9666420 sqlite3: upgrade to 3.4.2
7b40874 alsa-lib: Unbreak plugin loading in ALSA by fixing plugindir shell variable (patch from Matt Hoosier #469)
363d68a qemu.inc: Increase qemu image size
d8bfa5c bitbake: Sync with 1.8.8 release
e68823a makedepend(-native): fix DEPENDS
9e4f0e2 Disable gtk-doc
cd68413 Add Gaku
071e9b7 Add gaku, a basic music player
d0012bd rootfs_deb.bbclass: Remove spurious mkdir, I needed this because my deploy/ was hosed
35e3f24 Set bindir instead of moving files, make a valid desktop file
53710a6 Create usr/lib/ipkg in the rootfs before putting symlinks in it
4869751 Instead of exit 0, do exit 1.  0 is 0, so this doesn't work as intended
9a1a624 git.py: Fix reference to tag
7611768 bitbake: Sync with 1.8 head. Adds locking to the fetcher to prevent parallel downloads, fixes key expansion issues and occasional missing dependency graph links
11ce59b bitbake fetch/git.py: Don't use master as a tag
7064e6b openmoko-icon-theme-standard: fix SRC_URI
746fa20 Move libgsmd from meta-extras to meta-openmoko
e1d82ea Disable versioning on the plugins, and ship more debug symbols
7530674 bitbake: Sync with upstream 1.8 branch
d7892c2 poky-oabi.inc: Set binutils PREFERRED_PROVIDER
91b77b4 local.conf.sample: Add a note about optionally extending the PKGCONFIG_PATH for native builds
6c7c917 local.conf.sample: Add info about enabling meta-openmoko
1c53bc0 openmoko-dialer2: Fix DEPENDS/RDEPENDS
da5f93a Add meta-openmoko
fd81714 uboot-gta01: Lock to a known good git tag
c87c693 nokia770: We don't need to add the cleanmarkers on NAND.
b92c0c0 xserver-kdrive-common: Added a Nokia 770 entry.
f1e75d0 linux-nokia800: Bumping PR.
74ab401 nokia770: Our preferred kernel is now the N800 one.
6bd2d7a linux-nokia800: Nokia 770 boots the 2.6.18 osso kernel. Sato images are now running properly with this kernel, on a 770.
e2fe0bd sanity.bbclass: Run sanity checks before parsing for speed, sync with OE
ce800d3 bitbake: Sync with upstream 1.8 branch for fixes
fc136f0 base.bbclass: Improve performance with SRC_URI_OVERRIDES_PACKAGE_ARCH enabled (14% parsing speedup)
c9c5d36 base.bbclass: Fix SRC_URI_OVERRIDES_PACKAGE_ARCH handling
ffbadaa poky.conf: Cleanup and set some floating SRCREVs
1802616 bitbake: Sync with upstream
0197eb2 binutils.inc: No space is neeeded with CCACHE
8f4687c qemu: Work around bad system futex headers
3d50b7e linux-rp-2.6.22: Remove scsi patch for qemuarm On 2.6.22 the scsi patch prevents us from booting a qemuarm image.
6ec68c2 Use R22 of oh-puzzles and apply the owl menu patch to it
d1798db qemu: fix lack of MAP_32BIT on 32bit machines
62f6622 bitbake fetch/__init__.py: Don't print double newlines
74a3de2 bitbake.conf: Add AUTOREV
9649445 libsync: fix SRC_URI
84d9d4a opensync: fix parse errors for SVN versions
c7927a6 libsync: switched to SRCREV
aca20b0 libmatchbox: switched to SRCREV
f15d0c0 tasks: switched to SRCREV
6eb45d1 poky: another set switched to SRCREV
7c105c0 task-poky: ship pointercal data
dda6b92 owl-video-widget: switched to SRCREV
6921618 libfakekey: switched to SRCREV
895e719 opensync stuff: switched to SRCREV
dc5ff14 matchbox-desktop-sato: switched to SRCREV
01cdd39 clutter(-cairo/-gst): switched to SRCREV
c6ad89c poky: another set switched to SRCREV
cd1fa90 table: switched to SRCREV
35a61a8 sato-icon-theme: switched to SRCREV
953c041 poky: another set switched to SRCREV
646836f evince: switched to SRCREV
c859407 aaina: switched to SRCREV
6fbf586 matchbox-themes-extra: switched to SRCREV
585c46b fstests: renamed to PN_svn.bb scheme
b19aa96 fstests: switched to SRCREV
2a649fa matchbox-panel: switched to SRCREV
2d7891b matchbox-theme-sato: switched to SRCREV
2b88aaf poky: another set switched to SRCREV
5a1136d screenshot: switched to SRCREV
874dc49 libowl: switched to SRCREV, removed empty tasks
350dcff matchbox-applet-light: switched to SRCREV
3d410d3 poky: gtkhtml2 switched to SRCREV
47c30fd gtkhtml2: switched to SRCREV
3565486 poky: settings-daemon switched to SRCREV
f595c1c settings-daemon: switched to SRCREV
b3b65f3 poky: psplash switched to SRCREV
c569e6e psplash: switched to SRCREV
7633048 poky: zaurusd switched to SRCREV
52a3bc8 zaurusd: switched to SRCREV
3da7d58 poky: exmap-console switched to SRCREV
2afa64e exmap-console: switched to SRCREV
7b1800e poky: xvideo-tests switched to SRCREV
516fcce xvideo-tests: switched to SRCREV, simplified
d3ed582 matchbox-wm: switched to SRCREV
3d2bdf8 poky: more matchbox apps switched to SRCREV
a7eeaa4 matchbox-terminal: switched to SRCREV
0617f40 matchbox-stroke: switched to SRCREV
44660d7 matchbox-panel-2: switched to SRCREV
e25d230 matchbox-keyboard: switched to SRCREV
09cd28b matchbox-config-gtk: switched to SRCREV
6d52857 sanity.bbclass: Further qemu check improvements
043b801 sanity.bbclass: Factor ASSUME_PROVIDED into qemu checks
b14c8cd Switch back to using our own qemu binary for locale generation by default
6e909eb bitbake runqueue.py: Improve the progress indicator by skipping tasks that have already run before starting the build rather than during it
24909e8 poky: matchbox-common/desktop moved to SRCREV
241bd83 matchbox-desktop: switch to SRCREV
758ed29 matchbox-common: switch to SRCREV
a21e133 qemu-native: unbreak on amd64 - patch taken from OE
0460e71 task-poky-boot: machines need kernel to boot - even if minimal image is used
b5fc26a bitbake.conf: Fix DL_DIR
029f45e providers.py: Also add pn-PN syntax to overrides when evalutating PREFERRED_VERSION
3de28a7 poky.conf: Fix SRCREV syntax
3ccd06b lsof/m4: Remove old versions
3838cc7 Add hicolor-icon-theme 0.9 (from OE)
2009324 Add shasum (from OE)
9c90076 base.bbclass: Sync with OE.dev (mainly download checksumming code)
9d3073b documentation.conf: Sync with OE.dev
f751a20 bitbake.conf: Sync with OE.dev
b994a55 gtk-icon-cache.bbclass: Add RDEPENDS to fix runtime warnings (from OE)
720e0b1 classes: Sync various classes with OE for various bugfixes
fe553f4 conf/distro/include: Remove unused files
4e662cb kernel.bbclass: Remove broken and unused PARALLEL_INSTALL_MODULES
c1c5e8b contacts: switch to SRCREV
729c7ec dates: switch to SRCREV
8ccecd3 web: switch to SRCREV
a9bacaf eds-dbus: switch to SRCREV
39a43da gconf-dbus: switch to SRCREV
981a201 poky: switch gconf-dbus, eds-dbus, dates, contacts, web to SRCREV
121b39d Add lsof 0.78 from OE with build fixes
2ce9dd1 Add POKYMODE=eabi6, an NPTL version of eabi5
7ee4a41 oh-puzzles: Convert to SRCREV
0f23643 gtk-sato-engine: Convert to SRCREV
f5223d9 lzo: Update to lzo 2.x mtd-utils: Remove patch to use lzo 1.x
fa86980 local.conf.sample: Document PARALLEL_MAKE
16a9cff m4: Add 1.4.9
d3c18ac image.bbclass: Add MACHINE_POSTPRECESS_COMMAND hook
2f35f93 spitz.conf: Increase ext3 rootfs size
6ca61e5 zaurus-2.6.inc: Merge in installkit function from OE.dev
303cbee conf/machine/include: Rename to .conf to .inc files
aad3939 Change do_install logic to clean unwanted files better
f512740 Enable automatic installation of recommends
fa8912f Fix rdepends for the kernel module
5eaa4fc Remove inherit module-base
e785bbb exmap-console: Override PACKAGE_ARCH from module-base
7395a39 exmap: Remove bogus TARGET_ARCH references
355b128 oprofile: 0.9.2 -> 0.9.3 (and make the default) oprofileui: Switch to SRCREV
2fd3404 Don't use a bashism when creating directories
fdedaf9 Fix reinstall target by not assuming the install directory is empty
9153c17 db-native: Fix inherit order (native after autotools)
4ab9c74 package_deb/rootfs_deb.bbclass: Add fix from OE, add copyright notice
3378c5d local.conf.sample: Fix extras collection comments
9b30794 binutils: 2.17.50.0.5 -> 2.17.50.0.12
7024f1a package.bbclass: Deal with write protected files correctly
1d612fc freetype: enable 2.3.5 version
dd51fc0 package.bbclass: Try stripping files more enthusiastically
60b4328 package.bbclass: Convert runstrip shell into python
9933215 update-rc.d.bbclass: Tweak change
e03c1d2 update-rc.d.bbclass: Stop the class corrupting the D variable
b5aa22b bitbake lib/bb/runqueue.py: Make sure intertask depends get processed correctly in recursive depends
a354182 gnome-vfs: Explicity disable hal until we explicity want it (rather than have it detected when its not in DEPENDS leading to builds that are not deterministic)
6883189 bitbake persist_data: Fix for python 2.4
ce4ba3c bitbake persist_data: Fix for python 2.4
e33eaf1 bitbake persist_data: Fix module reference
71068e7 bitbake persist_data: Add own retry logic
9858ddb bitbake persist_data: Use immediate connection mode
8985385 bitbake: Try to fix cache locking issue
51df840 bitbake BBHandler: Disable creation of A variable
c0e5fe6 Upgrade poky to glib 2.14
7ea7a1d Upgrade glib
3ff099a Install a startup script, fix volatiles. Should now auto-start
d0bcc8d Sync hal-git with 0.5.9.1, should work
1900143 Upgrade hal-info and hal to 0.5.9.1
205d909 Upgrade gstreamer and gst-plugins-base to hot new releases
113bb6c speex: updated to 1.2beta2, changed packaging
d9f5fb0 Upgrade some of the GStreamer packages
029c2a1 base.bbclass: Correct git-native autodependencies
4df629a patch.bbclass: Add support for maxrev and minrev
4c75040 base.bbclass: Auto add dependency on git-native when needed
09bd117 git-native: Add 1.5.2.3
bfb0f08 Upgrade libglade to 2.6.2
1ad99ea Upgrade libgnomecanvas
bfc70eb bitbake: Update along 1.8 branch
034bbb8 pcmanfm: 0.3.2-beta -> 0.3.2.2
9525f35 makedepend-native: add DEPENDS on xproto-native - spotted by Crofton
d683a2f autoconf: PARALLEL_MAKE applies to non-native version too
d484ba8 linux-rp-2.6.22: Fix LZO compression issues
934b01d exmap-console: Add missing DEPENDS
599eccd Fix intltool-native dependency on perl
836647c Upgrade libsoup to 2.2.100
6530523 Upgrade intltool to 0.35.5
7537de5 linux-rp: Update poodle pm patch (OE #2682)
2aaea87 Upgrade loudmouth to 1.2.3
87360b9 libxml2-native: disable Python support
8e03c28 preferred-xorg-versions.inc: bump makedepend
6a166b8 libxml2: depend on python-native-runtime
cdf2c48 xserver-xorg: removed all not-needed files
807535a libxml2: update to 2.6.29 (from OE)
22c8505 Upgrade libxml/libxslt
a2defd4 Upgrade gtk-engines
bcfeb8f Upgrade gtk-engines
90d9600 Upgrade vte
c96d400 Fix no-gnome patch for empathy
a17f926 Upgrade libtelepathy and telepathy-mission-control
a6ce2f8 Upgrade gnome-mime-data
bba2402 pkgconfig: Add missing patch
7c5722e Upgrade gnome-keyring
315af76 Add site cache for /dev/random checks
ed1acc8 Remove old files
ba9de06 Use the latest librsvg
e3972dd Upgrade newer librsvg to 2.18.0
3102a0f Upgrade Avahi to 0.6.20
c65df6c poky: fix SRCDATE for libgsmd at 20070801
659c2ac libgsmd: cleaned up patchset to apply for 20070801 version, bumped PR to be newer then OE one
96e455f Upgrade libdaemon to 0.12
a92c10a Upgrade atk to 1.18
719eb99 Switch from gtkterm to matchbox-terminal
42e85c0 Don't call gtkdocize, just tough gtk-doc.make
8c86252 Add depends on gtk-doc-native
a0fcf8b Fix glade build on newer GTK+ by disabling the deprecation guards
f6a013b site/common-glibc: Set glib_cv_long_long_format
1ee78ec linux-rp-2.6.22: Fix c7x0 compile problem
3430bf0 libmusicbrainz: 2.1.2 -> 2.1.3 and add autoconf fix
2256a51 libmusicbrainz: fix type of len variable to get it built
236595c Upgrade gnome-vfs to 2.18.1
75825af pkgconfig: Fix compile issues for non-native version
7944fb2 Add GTK+ 2.11.6 for poky-bleeding
5c53fff Add patch from svn to fix c++ builds
f90f6b0 Upgrade cairo to 1.4.10
fff91ca Upgrade bleeding to pango 1.17.5
1d0a8d7 Upgrade Pango 1.16.x to 1.16.6
6f85f79 Upgrade bleeding to glib 2.13.7
32dde8e sato-icon-theme: Set PACKAGE_ARCH to all (from OE)
b4fb7f1 xorg: Fix PREFERRED_VERSIONs
ff9fdcc dates: Fix svn PV
4e75063 Sync with poky
83c69a5 Upgrade glib 2.12.x to 2.12.13
27a7b90 Upgrade GTK+ 2.10.x to 2.10.14
7e5766f Move some site defines from arm-common to common-glibc
1bceb4b libx11/diet-x11: upgraded to 1.1.2
2e8dd5d pokk-external.inc: Add missing GLIBTARGETOS
009d2a0 Use POKYMODE to enable the external toolchain
69f5314 Remove old gconf-dbus from cvs
d5d3fa4 Upgrade gconf-dbus version
100d164 makedepend: upgraded to 1.0.1
5ba7492 xhost: upgraded to 1.0.2
e435272 libxtst: upgraded to 1.0.2
c21ca29 libxcomposite: upgraded to 0.4.0
41228de base.bbclass: Fix base_get_srcrev
aa175ae libxi: updated to 1.1.2
9c2664d libxfont: updated to 1.3.0
315b113 sanity: Add check for help2man
2a26738 libxdamage: updated to 1.1.1
8e9daef inputproto: updated to 1.4.2
77fd947 compositeproto: updated to 0.4
8a766b2 freetype: added 2.3.5
a40e1ff libx11: do not remove X11/Xlib.h from staging
d16d32c libsm: updated to 1.0.3
1bac843 libxi: updated to 1.1.1
53d3de8 libxi: updated to 1.1.1
29a34ac libsm: updated to 1.0.3
53df894 xrandr: updated to 1.2.2
5510cc23 xinit: updated to 1.0.4
12538fa ohm: Drop patch applied upstream
58d54c7 xinit: update to 1.0.4
d8b0c36 make: added 3.81 from OE
feeffc3 pkg-config: added 0.22 from OE
ae0fdfa m4: added 1.4.8
89c53ba automake: added 1.9.6
3980544 autoconf: added 2.61
b040fa6 poky.conf: Add some packages back to the world build now we meet the minimum version requirements
51afe14 poky.conf: Upgrade to poky-bleeding verisons (gtk+ 2.10, glib 2.12 and friends)
45bb45b linux-rp: Make 2.6.22 the default
2cb33bf lttng-viewer: 0.8.41 -> 0.8.83
1218268 lttng-control: 0.18 -> 0.42
ccf25ac poky.conf: Move all toolchain configuration into the POKYMODE files
ef8532a image.bbclass: Ensure the system python is used, not the one in staging
09e3f98 base.bbclass: Minor performance tweak, add base_get_srcrev()
841d5dc bitbake.conf: Add variables for bitbake 1.8 fetcher changes
7c76add task-poky: Add kexec-tools
46afad2 Add matchbox-theme-sato and sato-icon-theme 0.1, update distro config to match
72aa732 gtk-sato-engine: Add 0.1 release, update distro config to match
75cac96 Potentially better scrollbar patch
6d714ad Bump srcdate for settings-daemon to get proper defaults
232f06b Fix the patch
3d94cc5 Add new empathy
f82153d bump PR
a9b72e4 Disable the Handed option for now
aaa60bf Really fix typo in card
7d9c374 Add a bit of a hack patch to disable frantic redrawing of GtkRange when they move, so that the contents has a change on slower devices
24f13ad oprofile: Add RDEPENDS on binutils-symlinks
2c0b1aa task-poky-standalone-sdk-target: Add glibc-dbg package
4b4ccd9 Add a patch from 2.12 to size combo arrows based on the font size
3e918fc Bump sato srcdate for desktop fixes
f9156f9 ld.so.conf: Remove unused file locations
828cb20 Add patch so that the size of the toggle cell renderer is based on font size
f7bf74a  poky-init-build-env: Don't exit from sourced scripts, return
8e4a14b  poky-qemu-internal: Don't exit from sourced scripts, return
3b53e52 poky-env-internal: Return in error case
626622d Fix typos in the OH contact
3e02bc1 mtd-utils: Remove stale files
511c8d7 poky.conf: Bump gtk-sato-engine SRCDATE and add clutter
138930b Bump rootfs sizes to fit sdk images
d2db6da linux-rp-2.6.22: Fix patch compile problems
fdbae5e Bump sato srcdate, to get menu arrow buttons which disappear
509f999 Pull patch from svn to fix crash when deleting tasks
5e73b76 task-poky: Add gdbserver to tools-debug
ecb0e87 poky-image-sdk: Add missing tools packages
7191fe6 formfactor: Set DPI for qemux86/qemuarm
8394741 owl-video-widget: add description for icon
75c9464 mtd-utils: Work with lzo 1.x for now
c572384 remove local lzo patches as they have been merged into master
60548d8 switch from apt 0.7.2 to 0.7.3
d93f4d8 bump zaurusd srcdate to get its version that uses the right tslib version
fb37f45 Add scrolled window placement fixing patch
450b758 added builtinreaddirectory-no-side-effect.patch to fix #394
42b4848 ipkg: bump PR
efeb1ec ipkg-native: do not depend on update-alternatives (which ipkg depend on)
6f18363 linux-rp: Add basic htcuniversal support (based on hh.org patches) and fix MMC problems over suspend/resume
86ea901 gdb: Add missing quote
3194d0d task-poky-standalone-sdk: Fix gdb package name
27137aa gdb: Add gdb-cross-sdk, factor out code into .inc files
5909234 Bump config and settings srcdates to get the handedness support
5707e90 gdb: Remove old versions
b676654 gdb-cross: Use cross class, not sdk
cab3268 poky-autobuild: Fix to work with enivoriment changes
7d44fdb poky-env-internal: fixes
b2d7cb6 linux-rp: Set CONFIG_TIMER_STATS
854a97c poky-env-internal: Allow user to overide build directory
21b7fab poky-env-internal: Fix quoting
5818410 runqemu: Fix image names
3f450bf Fake bump of panel srcdate
bc57030 Bump matchbox-desktop SRCDATE.
3891f97 Bump sato-gtk-engine SRCDATE
ddc43d2 Bump matchbox-panel-2 SRCDATE.
341d2bb bumped oh-puzzles srcdate
64405df Bump matchbox-theme-sato SRCDATE.
ee5a89f Add matchbox-terminal
3207bca Add a nasty hack to fix the build
7f35707 Use gtkterm2 instead of rxvt so that the keyboard appears when required
0f760fb Fake-bump of libowl srcdate
1625018 Add a desktop file
f73a2e7 owl menu for contacts_0.5
4b83d86 owl menu for dates 0.4.4
9f45dd9 Add a owlmenu patch
b6a445c Bump libowl srcdate to get owlmenu menuitem support
aeb19fa Bump desktop srcdate to get new style colours
e9aba83 owl menu for contacts
bf2ebd8 owl menu for dates
10bb42b Update Poky to Dates 0.4.4
34acb84 task-base: install task-base-phone on phones for all distros
2b14655 Update form-factor for neo
f620ad8 pointercal: add calibration for Neo1973
2866153 removed some utter madness from speex recipe
710cd8e Disable dnd in dates.
7663957 Just add an autogenerated Comment line to the .desktop files generated for OH games.
2f24d5d Remove libart dependency, this version uses cairo
659bd05 task-poky: switch to oh-puzzles
f5e5977 librsvg: disable gnome-vfs support
d4a49a0 Bump sato gtk engine SRCDATE.
6eb0e0f Add a comment to .desktop
b1b30ec Add comment field to .desktop file
61012de Bump sato and panel SRCDATES.
f0ddf47 task-base: bump PR due to fic-gta01 change
1024ba0 fic-gta01: removed usbhost feature as it needs special cable which no one has
a0c3070 uboot-gta01: bump PR after last change
133786c uboot-gta01: fix SRCDATE to 20070711, revert git tag
17d6b30 Bump Tasks version
77016cc Bump desktop version
2612cca formfactor: fix fic-gta01 settings
21f8d46 xserver-kdrive: fix build after tslib version fix
d9c3c94 poky.conf: Use latest zaurusd
5e43360 task-base: make all subpackages set to MACHINE_ARCH
c6ea930 fic-gta01: do not use LZO compression for jffs2
8512481 poky.conf: Its ohm that needs gtk 2.10
02b9fd9 clutter: Package examples separately
9c27940 Add task-poky-clutter
8cc0894 poky.conf: Fix up world EXCLUDES
df6134d mtd-utils: Tweak LZO patches
b15ec7a Add neon (from OE) for aaina
e02fb94 Add clutter, clutter-cairo, clutter-gst, aaina and table, excluded from world builds for now
9e9fe20 bitbake.conf: Add new FETCHCMDs
d3e0989 openmoko-libs: dropped
cc9b2ec task-base: added task-base-phone
803d98a u-boot for gta01: set u-boot upstream to fixed 'known to build' version
ffbba6d glib-2.0: fix packaging so libglib-2.0 package contain only libs without crap files
2cbf32b tslib: Fix library version (and bump xserver PR to unbreak people's builds)
886a6ba task-base/task-poky-boot: Use MACHINE_ESSENTIAL variables correctly
f999059 nokia770-init: Fix typo
8541584 openmoko: added classes needed by openmoko-libs
d2486dd openmoko-libs: added from OE
7aa012b libgsmd: added from OE
5ff8d3e libxosd: added version from OE + fixed packaging
ea9a256 linux-rp: 2.6.21+2.6.22-rc7 -> 2.6.22
8b1fff0 base.bbclass: Revert quoting changes
67ccd85 poky.conf: Bump matchbox-keyboard SRCDATE
794a923 debian.bbclass: fixed typo
91bbcd4 base.bbclass: Start to fix quoting
119b1d5 build.py: Start to fix path quoting
a291023 Put the startup applet on the left,not the right
fc4806f Bump dates SRCDATE.
2abccca poky-env-internal: Revert accidental commit
823dcb9 runqemu: Use pda image if sdk image not available for qemu machines
a5e790a runqemu: Use pda image if sdk image not available for qemu machines
e537910 pong-clock: Add
1d28e03 matchbox-desktop: Bump PR
2d96af6 Bump PR
cff716d Remove matchbox-common build-dependency
1af8217 Remove matchbox-common depends, the session script is now in matchbox-sato
d134473 Add matchbox-common dependency
4c3f0d7 Don't depend on matchbox-common
09324bf Don't depend on matchbox-common, but matchbox-desktop-sato. Also ship /usr/bin/matchbox-session here
fcbafc8 Remove dependency on matchbox-common
1bfccda Add startup applet
1086ade poky-image.bbclass: added description of newer IMAGE_FEATURES
1cba1f7 Bump sato SRCDATE.
2f8a2a5 Enable avahi in the oprofileui-server
5802291 Add matchbox-desktop-sato
c9ee84b Remove the Office category from leafpad
60ea9b7 Bump eds-dbus srcdate
6be3ace Add OH contact when creating a new addressbook
5d1ff83 xserver-kdrive 1.1.0: fix S
20d6337 fix SRC_URIs
605c655 gccmakedep: fixed DESCRIPTION
6c9d93a xorg-lib: X11 cleanup part 2: added DESCRIPTION fields, fixed DEPENDS lines, fixed order of fields
d48249d xorg-proto: X11 cleanup part 2: added DESCRIPTION fields, fixed DEPENDS lines, fixed order of fields
abdf7d4 inputproto-native: dropped 1.3.2
366aeba xorg-util: X11 cleanup part 2: added DESCRIPTION fields, fixed DEPENDS lines, fixed order of fields
b6ad88e xorg-app: X11 cleanup part 2: added DESCRIPTION fields, fixed DEPENDS lines, fixed order of fields
8f0272c fix srcdate for xvideo-tests
fd46f22 sanity: if Poky is used by root user (userid 0) then raise error
c090d98 xhost: X11 cleanup
e451d98 xorg-lib: fixed SRC_URI
584b47a xorg-proto: fixed SRC_URI
90f7269 bigreqsproto-native: fix SRC_URI
c774777 libfontenc-native: fixed SRC_URI
f836b3b preferred-xorg-versions: X11 cleanup
2153cac xorg-lib: X11 cleanup
c9c4ddd xserver-xorg: dropped
a42d467 xorg-proto: X11 cleanup
2a96015 preferred-xorg-versions: X11 cleanup - update versions
53069e1 xorg-xserver: X11 cleanup
1811e79 xorg-util: X11 cleanup
ceff6f9 xhost: X11 names cleanup
13dfd28 xorg-app: renamed xset, xvinfo, x11perf as part of X11 cleanup
cf11673 Remove empty dir
55b7576 preferred-xorg-versions: Tweak libxft
e4e3aa4 Remove old X11R7 versions
00dca40 Drop libxss cvs version (replaced by libxscrnsaver)
d3127fe xtscal: Install to the correct place
c705da4 linux-rp: 2.6.22-rc6 -> 2.6.22-rc7, fix defconfig entries, add patch to fix suspend/resume problems
0fadc1e linux-rp: remove not used patches
5d15f67 Add linux-rp-2.6.22-rc6 for testing (not default)
1e6f5d3 apt: 0.6.46 -> 0.7.2 (and fix DEPENDS/RDEPENDS)
18b9e6e curl: 7.14.0 -> 7.16.2
bc0df6e libsoup: Fix pkgconfig staging
a863497 X calibration changes. Add functionality to the xcalibrate protocol (and X) to convert screen coordinates to mouse coordinates. xtscal can then be massively simplified removing a stack of bugs. Also remove stale cvs versions of xcalibrate.
d5ba636 exmap-console: Fix server packaging
0b305ff poky-image.bbclass: Fix typo
d47f4af xtscal: Switch to use formfactor, remove non-xcalibrate mode and error instead
eabfa35 Rewrite IMAGE_FEATURES tools options (people may be to update their local.conf), split into debug and profiling and add more profiling tools.
320682b Bump sato SRCDATEs.
e40e916 keymaps: Add missing files
f1edd3b qemu: Resolve various segfault issues
13e87f0 Capitalise titles without using bash syntax
dedb4d3 task-base: removed dropbear, hotplug, task-poky-boot from dependencies
cc847ef poky: use task-base-extended by default so devices with pcmcia/cf/usb will get BT and WiFi support
5b14520 bitbake.conf: task-base stuff
025ff89 usbutils: added 0.72
f8ca66b pciutils: added 2.2.4 from OE
ba9dd52 task-base: synchronize with OE version, few features removed
8788d27 base-files: Add htcuniversal rotation
6303096 formfactor: Add htcuniversal support
aecfad3 keymaps: Add htcuniversal support (from OE)
8c891cb gtk: dropped 2.6.8
cc950fe nokia770-init: Minor cleanup and set COMPATIBLE_MACHINE
9453456 gtk: added shared-mime-info into RRECOMMENDS
f79d85c poky-image-minimal: Correct accidentally lost change
288a0fb clipboard manager
bee1199 Add depends on flex-native
09554c1 task-base: we want task-base-dev too
dd90055 hostap-utils: update to 0.4.7, dropped older
4cf1c63 task-base: we want task-base-dbg and no need for task-base-dev
d9ab253 poky-image.bbclass: fix task-poky-apps-x11-pimlico names
d7ff069 meta-toolchain: Create task-poky-standalone-sdk-host and target tasks packages and use these in meta-toolchain to avoid package renaming problems.
40c209b Cleaned up task-poky and Poky images.
d4ed273 gtk+: recommend gdk-pixbuf loaders, unified 2.6.10/2.10.12 recipes, moved common part into gtk+.inc
1343810 bitbake.conf: Move SDK_NAME and SDK_PREFIX into bitbake.conf
5692535 gst-plugins-base: added libxv to DEPENDS
7c944f7 oh-image-extras -> poky-image-extras rename
a0dd489 task-oh-extras -> task-poky-extras rename
3d36dc7 poky-image.bbclass: new class used for making Poky images
0b72250 poky-image-sato-cd: fixed name of resulting image
47d937f qemu-config: use task-poky-nfs-server
36b0bb1 task-poky-boot: set value for MACHINE_ESSENTIAL_EXTRA_RDEPENDS
9cc674e task-base: dropped task-base-poky-minimal as task-poky-boot do that job in proper way
9221a6f task-poky-boot: added MACHINE_ESSENTIAL_EXTRA_RDEPENDS
189ac44 task-poky: removed task-poky-boot from PACKAGES (it is separate recipe now)
4d0a262 task-poky: removed not used task-poky-boot-min-extras
ec5a543 poky-task-boot: separate recipe to lower build time for poky-image-minimal
018b623 poky-image-minimal: use task-poky-boot
b580307 Rename task-oh -> task-poky
9f15140 Rename oh-image -> poky-image
14cb222 Add missing ac_cv_have_abstract_sockets, for dbus-glib
e52e38e ohm: Use correct libtool
660d9d6 Upgrade to dbus-glib 0.74
a50aa84 ohm: Add preliminary .bb file
e5c90d9 tasks: update to 0.9
ec0ee0b linux-rp: Sync up/cleanup with OE
8689ce9 linux-rp-2.6.17: Sync with OE
d3076ac bitbake: Sync with upstream
3cb385b linux-rp: Add missing patch from 2.6.20
7fdb95e linux-rp: Add qemuarm scsi fix/workaround, set default qemu ramdisk to reasonable size, adjust qemuarm kernel commandline
de5a8b7 Add top level LICENSE
534ac16 oh-image-minimal: use remove_packaging_data_files() function instead of manually remove dirs
a47e493 rootfs classes: added remove_packaging_data_files() function to be used in minimal images
ab15c53 task-sdk: Add glibc-gconv packages for abiword
f07d835 task-oh: switch fonts from Bitstream Vera to Liberation from RedHat
c44b104 liberation-fonts: RedHat replacements for Vera and Microsoft fonts
cdf70f4 vera-fonts: renamed to ttf-fonts as I plan to add few more fonts
b8ed58c prism3-support: dropped
ecbb975 prism3-firmware: dropped
85dcf81 task-base: use prism-firmware for Prism2/3 cards
4816b77 prism-firmware: added support of loading 1.8.4 firmware for Prism2/3 CF cards on insert
3abd842 pcmciautils: upgraded to 014, synced with OE
80c6eb0 pcmciautils: added patch (from git) to not use MODALIAS in rules as it is deprecated since udev 080
38062aa nokia770: we removed tslib-maemo long time ago
80ab8d3 dropbear: updated to 0.49
315b65a xvinfo: added 1.0.1 from OE
fa135ef oh-image-minimal: remove only ipkg infos (locales are not in image)
c173793 oh-image-minimal: do not install locale support to get it smaller
edb6660 make xvideo-tests depends on virtual/libx11, not libx11 ! because libx11 breaks the build by removing Xlib.h from stagging. whereas virtual/libx11 resolves to dietxlib that is okay.
5496f27 updated xvideo-tests to the latest svn
b5ef8fa update to latest test-xvideo svn revision that fixes a couple of issues.
c765a2e Update preferred dbus-glib version
0e397b5 Upgrade to dbus-glib 0.73
74cd77c Bump sato SRCDATEs.
e9373c0 curl: fixed debug packaging
451f3b1 gtk-clearlooks-engine: fix debug packaging
c0b4013 matchbox-panel-2: package graphics for startup-notification applet
136ee52 poky: bump matchbox-panel-2 SRCDATE to get new systray, fixed battery and new plugins
15d2750 update xvideo-tests to the latest version.
8493b27 change test-xvideo into xvideo-tests
e1bc49c Change encoding packages to recommends
d14962b Disable gconv packages for now, they were not build for some reason
36c5999 Move the Abiword srcdate to poky.conf
c3ed93d Bump matcbox-config and sato srcdates, for the metatheme work
91c6995 meta-toolchain: Add libgcc-dev package
9f594e2 Upgrade to DBus 1.0.2
5913a07 test-xvideo: Fix SRCDATE and add numeric value to PV
29dc7ae gcc: Fix sdk packaging issues
9eb40c6 Updated test-xvideo_svn.bb.
59e5d09 binutils-sdk: Fix broken linker paths with correct sysroot option (and remove unused .inc)
dd1a46a added test-xvideo package
b6dc9fc js: Use gcc for linking so LDFLAGS can be used in full rather that hardcoded subsets
9dbe065 poky-eabi.inc: Fix typo
e2ab941 poky-eabi.inc: Make the PREFERRED_PROVIDER more general and complete
cee4b2a package.bbclass: Disable locale RDEPENDS since it currently does nothing due to broken depends, breaks meta-toolchain and is incompatible with debian
682d215 task-sdk: RRECOMMEND glibc binary locale package
79b921a glibc: Add missing PACKAGES_DYNAMIC elements
c6cf8ff external_toolchain: Add i586 virtuals for qemux86
18e36b3 gcc-cross-sdk: Use --with-sysroot option to gcc to fix and simplify configuration
7e30cee meta-toolchain: Cosmetic cleanups to debug output
bbce8f5 sdk.bbclass: Sync with OE
b9456e9 Rename ipaq-pxa270 hx2000
1ee1441 xserver-kdrive: Drop unused patch
ac63e5a sdk.bbclass: Set PACKAGE_ARCH to something suitable (update task-sdk, meta-toolchain)
c866903 gcc-cross-sdk_4.1.2: Cleanup
d6fcec4 e2fsprogs: Fix DEPENDS (add gettext)
8aef26e task-sdk: Fix libgcc naming
bc7b31a gcc-cross: Fix PACKAGE variables
1b50877 Prefer svn snapshots of matchbox-desktop
c079e75 glibc: Add locale-base to PACKAGES_DYNAMIC
8485dfb external_toolchain: Various fixes.
0f5900d bitbake/taskdata: Exit from the providers loop when the first match is found, fixing spurious output and warnings
a475d1d external-toolchain.conf: prepend to CPPFLAGS
b29063f external-poky-toolchain: Add PACKAGES_DYNAMIC
d2ed746 glibc: Fix leaked PACKAGES_DYNAMIC
207bc1b Bump desktop srcdate
6baa768 external-poky-toolchain: Lower default preference
8045dbd poky.conf: Set PREFERRED_PROVIDER
ce69ac4 meta-toolchain: Fix symlinks after moving files around (gross hack)
0a46762 gstreamer: Add DEPENDS bison-native
9e12816 Upgrade to Tasks 0.8
67307a0 Remove executable flag
5454240 Remove old PIM category
0381bc4 Move to the Office category
f621bc9 Take recommends from GTK+ 2.10, should fix string conversions
aba2e56 update exmap-console recipe to 0.4.1
078c177 external_toolchain.conf: Updates to use external-poky-toolchain.bb
c66c397 meta-toolchain: Add ipks, pkgdata, pkgmaps and shlibs data to sdk archive. Add external-poky-toolchain to reassemble this.
f932b25 ipkg-utils: Add ipkg-list-fields python script needed for sdk generation
8f9dc2c Depend on the ISO-8859-1 converter, and remove some options we don't use
303ed7c Remove unused patch, from 1.4.2
3a685ca Remove old Cairo
1c0fabc Bump Cairo version
3af9eaa Bump Contacts srcdate to hopefully fix crash on startup
dcb5ef2 module.bbclass: make all modules depend on update-modules
226123f qemu: Set disable graphics check configure option
c6a97a0 qemu: Update to a recent version
4b74770 Increase default GTK+ to 2.6.10
0ab5fd9 udev: make only udev RPROVIDE hotplug not all packages
70b11ba bitbake: Sync manual updates and version info with bitbake svn
5c41f1e rootfs_deb.bbclass: removed usage of /dev/null as stdin as BitBake do that now by default
25cbce3 runqueue.py: Correctly use /dev/null as stdin
a9947a0 cairo: added 1.4.8 from OE
dc68918 rootfs_deb.bbclass: updated to works with APT 0.6
e587664 wireless-tools: updated to pre21, fixed packaging (from OE #2458)
8512529 twisted: added 2.5.0
ead8b80 zope: added 3.3.1
ed32719 flumotion: added 0.4.1
59470e1 bootimg.bbclass: get kernel from proper directory in staging
a8aaedc linux-rp: added bootcdx86 support
4f8a093 oh-cd-pda: added COMPATIBLE_MACHINE (set to bootcdx86)
06a33a9 formfactor: added bootcdx86 support
fe5eb63 bootcdx86: X86 machine used for bootable CD
e582fb3 oh-cd-pda: build ISO and HDD images from oh-image-pda
82a2f83 wpa-supplicant: added 0.5.8 (latest stable)
d5747c5 xserver-kdrive-common: run calibration only on machines with touchscreen
750675a machine configs: drop MACHINE_TASK_PROVIDER which is set in bitbake.conf
6a48637 native.bbclass: Remove uneeded variables
332f632 Remove useless class
8e5bf72 pkgconfig.bbclass: create proper directory
95be099 bootimg.bbclass: fixed generation of ISO & HDD images
2b22125 bootimg: reformatted again
834b006 bootimg: reformatted
1cdbacb gtk+: Fix 2.6.10 patch, fix RRECOMEMMENDS
b6795bd qemu machines: do not hardcode ext2 rootfs size
7fd0284 bootimg.bbclass: imported from OE, updated to recent BitBake
9ac61d2 syslinux.bbclass: imported from OE (needed to generate booting CD)
8b66792 mtools: imported from OE
a07979f cdrtools: imported from OE
01f2cbe syslinux: imported from OE
ff2d75b nasm: imported from OE - needed for syslinux
ac6c773 dosfstools: added (from OE + patch for 2.6.20 headers)
bdcf04a bumped srcdate for calibrateproto packages.
7f494f1 make xcalibrate and xcalibrateproto be based on fixed tags in git, not on master.
da9419a src_distribute: fix when licenses are separated with |, renamed vars to more readable ones
5a5dec4 vte: disable Python extension
c3da259 gtk-industrial-engine: fixed debug packaging
6effc76 gtk-sato-engine: fix debug packaging
e840e0d libsyncml: fix build with pointing to wbxml2 headers
8f91823 claws-plugin-mailmbox: fix debug packaging
4965305 libgtkstylus: fix debug/devel packaging
ec909f8 poky: fix minimo version
a35ed06 libsoup: stage pkgconfig file in proper location (from OE)
7720c62 librsvg: fix debug/devel packaging
c71455a libgnomecanvas: fixed packaging (debug and dev)
1604763 python-scons: added 0.96.1 needed to build SVN versions of opensync
72c0077 python-gst: fix debug packaging
e6db261 python-pygtk2: fix debug packaging
fd20cd1 vte: added 0.11.15 (for gtkterm2)
893cba9 python-pygtk2: use STAGING_BINDIR_NATIVE
0c2ead9 libtool: package libltdl-dbg
a088b15 python-pygobject: fix packaging (from OE)
da912bd gtkterm2: added 0.2.3
8226662 Bump sato engine srcdate to theme the system tray applet
4acaa35 base-files: set TERM to vt100 only if TERM is not set
f69248c Bump matchbox-common srcdate for the PIM folder change
d950323 src_distribute.bbclass: add distsrcall task which calls do_distribute_sources recursively
f8e9384 src_distribute classes: store sources in tmp/deploy/sources/LICENSE dirs
ce894a0 alsa: dropped unused patches
e648ea1 alsa: update to 1.0.14 - some parts are from 1.0.13 OpenEmbedded recipes - removed dependency on alsa-conf as libasound package already depends on alsa-conf-base - fixed alsa-utils-speakertest DESCRIPTION
c4607ef Upgrade Dates to 0.4.3
04ebae8 liba52: create debug packages
8dad92a Add useful but unused patch
78ecf7c Remove unused patch
16b9bee Merge interesting patches from GTK+ 2.6.8 to 2.6.10
3506033 Upgrade GTK+ 2.10.x to 2.10.12
82b28d2 Formatting changes to make merging easier
3ad2090 gnutls: update to 1.6.3 (upstream recommended stable version)
08065ff Remove unused GTK+ 2.8.20
c0a9e18 Remove unused GTK+ 2.6.7
4ade9d9 Add the keyboard applet to the standard image
98b1165 Unset PYTHONPATH otherwise Python really breaks
030f86e Bump matchbox-keyboard srcdate, build the panel applet, and hopefully make the startup script work on the N800
a5eb370 fic-gta01: added usbinit to rootfs
12212aa usbinit: updated to more generic version
1e2d2eb uboot: added U-Boot for fic-gta01
ea605d3 linux-gta01: added 2.6.21 from OE
e6b7688 fic-gta01: added machine config (from OE and edited)
29abf4b formfactor: added fic-gta01 support
883c24f x11perf: added from OE
c9dc5f0 classes/conf: Merge missing package epoch (PE) support (from OE), also make OE package field sane
8a5b785 conf: Add external_toolchain conf file
8cf058f local.conf.sample: Document external poky toolchain usage
b1b6e6a meta-toolchain: Clean up host packages too
ed75cfd Use matchbox-desktop
2add610 Clean up matchbox-desktop/matchbox-desktop-2 so that everything is called matchbox-desktop
2b6f26d Remove unneeded matchbox package
1ad7c7b bitbake: Exit if parsing errors occur
2a41ad5 Fix srcdate bump to match version
c383b17 libmad: Remove duplicate from extras
4e1f5e7 libid3tag: Ramove from meta-extras as in extras now
08aabf7 perl: rest of sync with OE for uclibc
8bae652 hostap-utils: hostap-modules are history
80bab8a cpan.bbclass: sync another fix from OE - this time for uclibc mode
85d3283 meta-extras: Various cleanups
ab5005a Update PR so the removal of empathy take effect
c43c432 poky.conf: Remove some EXCLUDE_FROM_WORLDs since they now work, bump several SRCDATEs
3d94480 Remove empathy, it needs newer glib than we have by standard
14eebb7 Bump matchbox-desktop-2 srcdate to 2.0 release
7f6b95d Add Empathy to standard images
3d925f1 Use python-native-runtime
351a196 oprofile: Update SRCDATE, remove merged patches
acb45ff libxml-parser-perl-native: Fix RDEPENDS
92363fd perl: sync with OE
6c47cd4 cpan classes: sync Perl with OE
4ed25e7 task-oh-sdk: Add intltool to sdk images
90ca4b2 linux-rp: Add patch to fix ASoC typo
27faca6 linux-rp: Add missing patch
bf5471f linux-rp: Various fixes including fixing power button suspend
e728a8a matchbox-sato/poky: Remove matchbox-keyboard handling (now uneeded)
25152eb matchbox-keyboard: Add session script to handle startup (linked to formfactor)
12a0998 Fix order of arguments when constructing the screen, fixing rotation on Zaurus
8ca3683 Add gnome-vfs depends, update icon cache
6c11258 ipkg-utils: Fix problems with some versions of tar (from OE)
d2f5510 Upgrade Empathy, with hot no-libgnomeui patch
4df3138 Upgrade telepathy-misson-control
598f743 hal: DEPENDS intltool-native, not intltool
5fdd33f eds-dbus: Doesn't need intltool DEPENDS (just intltool-native)
01bb4a6 conf: Add POKYLIBC to poky to select libc implemention
80fbf41 site: Move common arm entries to arm-common from arm-linux
9babe4c Add uclibc (from OE)
ce8bd8c xrandr: Resolve symbol clash under uclibc
85e898c alsa-utils: Fix uclibc linking
a1f2457 nfs-utils: Add patch to work with uclibc
e7e6a03 linux-rp.inc: Various style cleanups
5ad14b0 meta-toolchain: do not fail if there is no .la files
ee16d5a Add systray applet
99d5d99 site: Sync ARM changes with OE (creation of common ARM site file)
af134e3 site: Sync some site files with OE
c2d22f0 Upgrade fontconfig to 2.4.2
ccbf0ed Update Tasks to 0.7
73558dc poky-eabi.inc: Switch to gcc 4.1.2
3a11c9d gcc: Sync 4.1.1, add 4.1.2 (from OE)
32275ea shared-mime-info: Fix DEPENDS
80785a1 perl: 5.8.7 -> 5.8.8 (from OE)
bd4fd02 gettext: Sync with OE
0dd5fc2 db 4.2.52: really overwrite config.sub with a newer one
b79fd62 db 4.2.52: overwrite config.sub with a newer one
a489c95 linux-rp.inc: Create relative symlinks rather than absolute ones
e010532 ipkg-utils: Merge in tweaked version of patches from OE bug #1504 (from Paul Sokolovsky) to massively speed ipkg-make-index
1fa7f83 nokia800: Add cx3110x to image
2b019e5 nokia770-init: Add some extra symlinks
21b345a linux-nokia800: Enable framebuffer console and disable framebuffer autoupdates
b77dd1b oprofile: Update to new SRCDATE
765f620 linux-nokia800: Add missing 770 patch hunk
54df650 xserver-kdrive-common: Switch to use formfactor
5d1d2e6 linux-nokia800: Attempt to get this working on the nokia770
6c08ce5 oprofile: Tweak armv6_events.patch
79fb4b0 xserver-kdrive-xomap: Update to osso31
b48c1ac linux-nokia800: Add oprofile mismatch workaround, update to osso40
f9ad5a0 Clean up distros
170a669 poky.conf: Update SRCDATE for oprofile+oprofileui
8e2698e oprofile: Add armv6 patch, drop merged patches, fix xscale events
6c3d3ef Poky does not support Ångström - dropping configs
4168666 Poky does not support OpenZaurus - dropping configs
392aee7 poky: bumped Tasks srcdate (requested by Ross)
3556c74 tasks: update to 0.6
fbea271 Add formfactor package
4f39594c Indicate that this package can also be built for nokia770.
7f6761a No xserver-kdrive-omap in Poky any more. Changed to xserver-kdrive-xomap. This might be incorrect.
d05bcee bitbake: Merge bugfixes from bitbake-1.8 svn
6e49fdb Upgrade Tasks
95a997f Bump tasks srcdate
e8d230d libmatchbox 1.9: Apply 16bpp fixed patch
25298e4 task-oh: Drop kf
86da0a4 poky.conf: Remove akitaisms
60b8802 task-oh: Add matchbox-keyboard-im
2f2560f tslib: RRECOMMEND pointercal
5c3459c pointercal: Always create a package but empty on devices without a default
e2567c4 Bump keyboard srcdate to get latest fixes
0253a49 udev: blacklist mtdblock devices - we mount them separate if needed
a723b0f Remove mbinputmgr and instead start matchbox-keyboard as required
e5b3d85 Update matchbox-keyboard srcdate, enable and package the GTK+ input method, and include it by default on Akita
d7fca4c puzzles: r6915 -> r7593
691cc36 puzzles: Add missing patch
1a9ae24 puzzles: Capitalize program names, use svn for obtaining source rather than tarball
d717268 xserver-kdrive-common: Set nokia800 dpi to 150 (should be 225 in theory)
c11e9cd xserver-kdrive 1.3.0.0: Tweak patches
638a299 xserver-kdrive-xomap: Only use one type of button event
b2552dc task-base: rrecommends wifi stuff
012f81a linux-rp: dropped obsolete patches
113e26a linux-rp: Add 2.6.21
e95d723 poky.conf: gcalctool: Add back to world build
c56c41d gcalctool: Fix compile issues, disable docs, update to 5.8.17
4baa324 Poky images: move IMAGE_FEATURES stuff to separate file, simplify image recipes
8142b95 Update copyright
771e3d3 tasks: Add copyright header
73a06a9 images: Merge common functionality into image.bbclass, add copyright headers
9c1cf56 bitbake.conf: PKG_CONFIG_PATH is a PATH like variable and may contain multiple entries so create PKG_CONFIG_DIR as a path to install to.
4fb411c task-oh: add matchbox-desktop-2 into task-oh-base
9ddbe0c xserver-kdrive: Make VGA the default video mode
eb68c6e Fix libxcursor packaging
8f83fba xserver-kdrive 1.3.0: Fix xcalibrate patch, disable w100
a560ff3 Add librsvg 2.11.1 so that poky builds, and set it as preferred version
71ff526 Upgrade Pango
91157b7 Upgrade librsvg to 2.16.1
7e1d3ac Update poppler and evince versions to those actually in poky
92018dc Add evince 0.9.0 tarball bb, and set PV in evince_svn to be 0.9+srcdate
6adf41f Remove the .so-in-main-package hack, libX11 doesn't look for libXcursor.so anymore but correctly loads libXcursor.so.1
ff85e19 Add libpng 1.2.16
375d0ae Fix insanely out of date URL
ccd009b Add libcroco/librsvg (from OE) for oh-puzzles pending discussion to keep builds running
8a37e60 poky.conf: Set some SRCDATEs, bump oh-puzzles SRCDATE and add oh-puzzles back to the world build
9cc080e oh-puzzles: Set DEPENDS correctly
0bb2e38 libxml-parser-perl-native: Fix RDEPENDS
9e9c060 intltool: Fix DEPENDS
e7db185 Added xineramaproto to the build dependencies of xserver-kdrive
4bde677 libxinerama: Revert change - was due to stale/incorrect tarball.
5d2fcf3 patch.bbclass: Set default patch resolver to noop
597a47c libxinerama: Fix configure
54254da poky.conf: Exclude syncml-client from world
3b7bcaf poky.conf: Fix typo
95c5952 poky.conf: Set SRCDATE for oh-puzzles, exclude gconftool, oh-puzzles from world build
732c15d poky.conf: Fix gtk-engines for world build
b8db3d0 minimo: fix parse errors
2513edf poky-bleeding.conf: use gtk-engines 2.10
d23eadf poky.conf: use gtk-engines 2.6
df99c2e minimo: provide proper libIDL config
a1499eb minimo: bump PR due to libidl change
5a67b33 poky.conf: temporary disable lirc-modules from world build
c2d6a80 poky.conf: temporary disable lirc from world build
4e124e0 libidl: use binconfig.bbclass to mangle paths instead of trying to it hand
0e28941 xev: Correct patch to apply to 1.0.2
178f816 claws-plugin-mailmbox: 0.12.4 -> 0.13
3604e99 claws-plugin-rssyl: 0.10 -> 0.13
09a0474 minimo: updated to 0.02/20070510
5fe8d87 poky.conf: bump minimo SRCDATE to 20070510
8651fff task-boot: added modutils-initscripts and update-alternatives
bbbddc1 claws-plugin-gtkhtml2-viewer: Update to 0.15
727ef5e minimo: Add libidl-native and set HOST_LIBTOOL_CONFIG as builds were breaking
321042d xserver-xorg: Remove bogus RPROVIDES
05a4f83 xserver-kdrive-common.inc: Fix DEPENDS
66e403d poky.conf: Really exclude qemu
1641c2b avahi: added pidof to dependencies
5b90ab5 preferred-xorg-versions.inc: update to X11R7.2 and newer
fbf4ba6 xserver-kdrive: added 1.3.0.0
082a34f xorg-proto-common: handle X11R7.2 and newer
fbf8505 inputproto-native:added 1.4.1
3a0a883 xproto-native:added 7.0.10
d939391 randrproto:added 1.2.1
7374297 damageproto:added 1.1.0
7f03a83 glproto:added 1.4.8
563273d calibrateproto:added git
355af02 inputproto:added 1.4.1
ae7af67 xproto:added 7.0.10
0a384c7 xorg-lib-common: handle X11R7.2 and newer
3bd8b94 xorg-headers-native: added
6bc9385 xtrans-native:added 1.0.3
35b04dc xtrans:added 1.0.3
e4bc9a1 libxvmc:added 1.0.4
65eb849 libxv:added 1.0.3
71a4cba libxt:added 1.0.5
5bdc4f6 libxscrnsaver:added 1.1.2
57e1690 libxres:added 1.0.3
62fd5e2 libxrender:added 0.9.2
14af4c1 libxrandr:added 1.2.1
655ac15 libxpm:added 3.5.6
9f0218d libxmu:added 1.0.3
affbc53 libxkbfile:added 1.0.4
b541aca libxinerama:added 1.0.2
79ed141 libxi:added 1.1.0
d0fe7c3 libxft:added X11R7.0-2.1.12
0778af2 libxfontcache:added 1.0.4
3fbfca7 libxfont:added 1.2.8
438f3ee libxfont-native:added 1.2.8
2a03f20 libxfixes:added 4.0.3
a3c2a8f libxext:added 1.0.3
a71a9d7 libxevie:added 1.0.2
89f7050 libxdmcp-native:added 1.0.2
2ebb226 libxdmcp:added 1.0.2
3605bd7 libxdamage:added 1.0.4
2260186 libxcursor:added 1.1.8
cde2593 libxcomposite:added 0.3.1
c208ec1 libxcalibrate:added git
4c6b3db libxaw:added 1.0.3
b8f2dcd libxau:added 1.0.3
df163a7 libxau-native:added 1.0.3
c6e25f2 libsm:added 1.0.2
97e2002 libice:added 1.0.3
de48c85 libfontenc-native:added 1.0.4
2d036e3 libfontenc:added 1.0.4
756f758 util-macros-native: added 1.1.5
1d87eb3 oprofile: Update patches
c91e543 xorg-app-common.inc: handle X11R7.2 and newer releases
c23dbdf xmodmap:added 1.0.2
c33d06f xev:added 1.0.2
09f07d4 xdpyinfo:added 1.0.2
7cdceb9 xrdb:added 1.0.3
8e7490e xrandr:added 1.2.0
c447690 xinit:added 1.0.3
4afba94 xauth:added 1.0.2
dad0f13 poky.conf: Fix typo
ed099eb poky.conf: Mark qemu as not world buildable (gcc 4.x problems)
615dd4a xournal: Fix linking flags and add zlib as a dependency
2ee4cf3 cpan.bbclass: Add perl to DEPENDS
4c3f31e poky: set proper version for Minimo and add it into world builds
a8c4f82 mozilla.bbclass: minimo does not need orbit2 or libidl-native to build
ff0fe2b minimo: added 0.016 version with EABI patches - works in qemuarm
79efb6c minimo: drop CVS version
363ebd8 autotools.bbclass: Fix addition of libtool-cross
9697c0c package.bbclass: do_package[deptask] only needs to be set when PACKAGES != ""
ebb5245 libtool: Fix to work with multi architecture builds
77a7221 autotools.bbclass: Add libtool-cross as a default dependency
8c0306a apt-native: added forgotten patch
559f110 oprofile: Improve xml_callgraph patch, refresh patches
7524bbe poky.conf: Exclude known broken packages from world builds
fed7e39 poky.conf: Exclude known broken packages from world builds
4c5caa6 bluez: Move from meta-extras to meta since required by syncml/openobex
8154761 poky.conf: Exclude known broken packages from world builds
9005036 poky.conf: Exclude known broken packages from world builds
32f7dac poky.conf: Exclude known broken packages from world builds
87bd6e9 oprofile: Update cvs patches to match cvs
3274f4f poky.conf: Bump SRCDATEs for oprofile and oprofileui
55c761b meta-toolchain: Adjust naming
55bfe71 poky-autobuild: Add generation of auto.conf
7260b95 autotools.bbclass: Reverse r1603 until we can find a better solution
1f3573d Handle GTK_DOC_CHECK and GNOME_DOC_INIT in configure.ac
d60ec07 Add evince srcdate
e78294e Add evince
48c17d3 Add poppler
4951b77 Add gnome-keyring
8b9d8e6 Upgrade libxml2 version
b180d84 Add gnome-doc-utils
11f5ec6 Add libxslt for gnome-doc-utils
0efc0df added updated 16bpp patch that handles 555 BRG and does bit of inlining
85d984e task-base: do not put ir-usb module
28bd4bb Bump screenshot srcdate
e2f404f task-oh: dropped modutils-initscripts from task-boot as we do not have modules in minimal image
e507e2f oh-image-minimal: added minimal image - contain only stuff needed to boot
45c57a3 task-oh: change task-boot contents - added udev, removed some apps
7d2c79f Bump pr
6a16208 Disable the schemas support, saving 300K
e1566f4 Don't recommend gnome-mime-data
ba370fe image.bbclass: Removed wildcard rm as it broke building multiple rootfs image types (from OE)
bf73d1b bitbake.conf: add cpio support for images (from OE)
7f3bb9d image.bbclass: remove not-needed list of packages after populating rootfs
46d1c21 va_copy exists in poky, and we also have a working memalign
73e6c0a Bump PR to force a rebuild
38e1250 Add some missing config variables which meant glib though our printf was crippled
4167c95 Refuse to use the included printf, as we always have a good system one
a0c37e9 Remove unused version
1e4eb57 Depend on mission-control, recommend gabble
a654b78 Add missing file
11185b1 Add Empathy
c1d676e Remove empty directory
4ae5c57 apt: unbreak 0.6.46.2 build (based on OE)
16737be gcc-cross-sdk: disable shlibs so packages will depend on libgcc1 instead of gcc-cross-sdk
b466097 gcc-cross-sdk: added zecke-no-host-includes patch
4d4a376 binutils 2.16, 2.17.50.0.5: make them provide 'ar' and 'strings' via update-alternatives
0b01f1f distcc: autostart distccd on boot
64d91d2 task-oh-sdk: ship coreutils, diffutils, g++
82f775c diffutils: added 2.8.1 for SDK (from OE)
9479bd5 telepathy-mission-control: stage headers, added required fields
622e191 libtelepathy: stage headers
4d3b29f telepathy-mission-control: added 4.21
8aa2c84 owl window menu
b2b9566 add missing libowl dependency
5345253 owl menu for web
2558e91 matchbox-desktop-2: only PN has to conflict/replace mb-desktop-1
bb59ece image.bbclass: install only en-gb locales
9d0afeb linux-nokia770: added gcc4.patch needed for gcc 4.1.1
2445bb8 coreutils: add forgotten patches for 5.3.0
ad2237b libopensync plugins file/evo2: mark SVN versions as non default
b6e43a2 libopensync: make SVN version buildable (disabled by default)
caf3b5b scons.bbclass: sync with OE
b9836e5 openssl is now in meta/, remove from here
d912733 Fix library packaging
3e92796 task-base: switch to wpa-supplicant with TLS support
39ca55c wpa-supplicant: drop old versions, use 0.5.7 (latest stable) as default
e0ce469 Remove the screenshot applet, whoops
2f90305 export HOME from Xsession script (see bug 292)
6221a3f README.host.sdk: start documenting toolchain usage
03825e7 claws mail recipe based on OE + owlwindowmenu and some initial UI deugglyficiation patches
db07dc1 recipes for libetpan and openssl from OE (needed for Claws Mail IMAP and ssl support)
52b6fea Declare glib-2.0 as a build-dep
73129cc wireless-tools: updated to 29-pre20 (WE21 support, more WPA support)
43dace1 loudmouth: update to 1.1.1 (from OE)
71d13b7 check: added 0.9.2 for loudmouth 1.1.1 (from OE)
6af416c telepathy-gabble: update to 0.5.10
8591210 telepathy-gabble: update to 0.5.10
cfd5c04 telepathy-glib: added 0.5.10
59a3ba4 telepathy: added libtelepathy 0.0.53 and telepathy-gabble 0.5.7 (from OE)
7692158 do not install .la file for libowl
273f0d8 patched leafpad to use owl window menu
d9c3ae6 bumped date for matchbox sato theme
aaac177 contacts: updated to 0.5
f90913a fixed glib dependency; added empty do_package and do_package_write methods
a45ca84 netbase: add WPA Supplicant support for wlan0
68d68db added a recipe for staging static libowl
4efae41 meta-toolchain: Main target for SDK - taken from OE, removed pkgconfig part (not needed now)
757e531 task-sdk: added task-sdk-bare from OE
2cd9ee8 binutils-cross-sdk: added 2.17.50.0.5
8c878be gcc-cross-sdk: added 4.1.1 (builds ok on x86_32)
67e6cc2 binutils 2.17.50.0.5: fix parse error
19e521b sdk.bbclass: store SDK in /usr/local/poky/ARCH/
66b28fa Add screenshot to images
2ecd437 Bump screenshot srcdate to build with new panel
914fe37 poky.conf: Update dates PV
d037046 poky.conf: Update some SRCDATEs
aa8d1e5 matchbox-wm: Update PV for svn version
ce7b2cd poky-qemu-internal: Catch up with rotation option changes
8f55119 linux-nokia800: Add LZO patches to work with patches mtd-utils
15f5842 matchbox-wm: added 1.2
d065e28 pimlico: SRC_URI point to Pimlico website
d7b1f3a dates: updated to 0.4.2
26ab474 linux-nokia800: Improve do_deploy
075d2b7 Add comment
9d4deb3 oprofileui: Fix DEPENDS, add RDEPENDS
0f58193 quilt-native: make sure directory exists
a1d68b8 Bump panel srcdate
0443d80 patch.bbclass: Specify a quiltrc file so users settings don't interfere with correct operation
95554ee quilt-native: Stage a dummy quiltrc file (empty)
2e818d2 libopensync-plugin-irmc-sync: add missing dependencies
b1e9b60 Update the icon cache on install
98553f4 xserver-kdrive-xomap: generate only Xomap package
9ab871a * Build contacts from SVN
383979e moved nfs-server for qemu target to qemu-config
25f95c5 poky.conf: add nfs-server image_feature for qemu targets
5b2439c poky.conf: use Dates SVN/20070414 - requested by Rob
c357bf7 xserver-kdrive-xomap: fix packaging
9f6c127 Bump up matchbox-common SRCDATE
cd7c6e3 * Nudge gtk-sato-engine and matchbox-config-gtk SRCDATEs
5718fc4 * Correct rxvt.desktop icon, and bump PR number
5230a5a openswan: update to 2.4.7 (from OE)
7467991 autobuild script: Remove images-complete stamp before building
24d739b dates: Update to 0.4.1, enable owl
4464057 dates: drop 0.3.1
910fbc5 contacts: drop 0.3
07712f4 dates: updated to 0.4.0
59c7918 opensync: bump PV of opensync SVN to 0.22+svnSRCDATE
b3d4e56 opensync: added 0.22 (last release) of library, msynctool and plugins: file/evo2/irmc/syncml)
0de4fd5 Change position of battery before clock
f9936d9 bumb up various Sato SRCDATES
3b60d9a gcc: added gcc-ignore-cache patch from OE bugtracker #1951 to get gcc buildable on amd64
d5b4fc3 libidl: stage into proper dir: STAGING_BINDIR_CROSS instead of STAGING_BINDIR
ad9c18f pointercal: mark it as machine related
43e1b9e liblbxutil: added mkg3states patch to fix building (from OE)
2d6eba7 gcc(-cross): move zecke-no-host-includes.patch only to cross version
15389d6 Set package arch to all (from OE)
6b06a83 task-oh: Remove inputmanager from default builds for now
185a34e Add README.commands
c917bf8 util-linux: added 2.12r from OE (needed by fakeroot)
5fc01ad galago: updated to 0.5.x versions
39debb7 eds-feed: removed per discussion with Ross
23b9718 orinoco-modules: dropped as they are provided by 2.6 kernel now
6427370 hostap-modules: dropped as they are provided by 2.6 kernel now
57a0d61 cx3110x: mark as nokia770/nokia800 compatible
22062eb Add README.structure
abac227 * Bump gtk-sato-engine SRCDATE
882d02e Patch tasks to make it single instance
7162fe0 * Bump sato-icon-theme SRCDATE
cf5db85 Bump up matchbox-panel-2 SRCDATE
95d63b6 Add srcdate for oprofileui
db4c2a6 Bump PR for owl-viedo-widget
5f73215 * Use video-player icon from icon theme
3483918 puzzles: Remove pixmaps references
7c41c5a Bump matchbox-config-gtk srcdate
4b77ee4 Make desktop icon appear at beginning of panel
5a25942 Remove leafpad icon, and use an icon from the icon theme instead
e6ef13c puzzles: Fix typo
c83b27f puzzles: Use application-games as the icon
76b2700 Set default font to Sans 9
7e329aa Set the icon_theme key
bd8965c Remove unused interfaces
aca29f1 package.bbclass/insane.bbclass: Don't set task dependencies when PACKAGES is empty
3016afc Bump srcdate for panel-2
f5562d4 gcalctool: do not use includedir as this break on cross builds
3121b79 xournal: fix SRC_URI
407ed8a Bump srcdate for matchbox-desktop-2
99fd90c Add matchbox-common as RDEPENDS
2eeb84f networkmanager: added proper PV, fixed build
03b90cc lsof: update to 4.77 (from OE) as 4.75 is not available upstream
62e66ef gnome-vfs-dbus: dropped - we use gnome-vfs 2.16.3 now
8b154d0 wv: added libgsf to DEPENDS
1477657 python-pygtk2: added EXTRA_OECONF needed for building on 64bit machines
75498ec python-gst: added dependency on python-pygobject
4390d5c Move gtkhtml2 to use gnome svn rather than gnome cvs
166b936 sato-icon-theme: do not repeat PN in PACKAGES
bf093e3 poky.conf: Bump sato SRCDATEs
e1fde81 libol: added 0.3.18 from OE, cleaned (for syslog-ng)
79b5e95 syslog-ng: sync 1.6.8 with OE (STAGING_BINDIR_CROSS)
81e7d64 patch: added 2.5.9 from OE (needed for quilt)
387a0ad zip: updated to 2.32 (from OE) and cleaned
014e261 diffstat: added 1.39 from OE
538d9d7 gconf: dropped 2.6.1 due to orbit2 dependency
1742551 task-oh: added task-oh-nfs-server-{dev,dbg} - thx RP
36875b2 package.bbclass: Adjust package_depchains to work for cases where multiple pre or postfix packages are specified
043d472 oprofileui: Improve packaging
0836a6c task-oh: Add oprofileui-server to devtools
f02b48e Add oprofileui
0a15894 native.bbclass: Enhance to allow extra pkgconfig search paths to be injected
69fbfd5 package.bbclass: Only need file-native if packaging
409335b classes: Rework core dependencies to work properly at the task level
bd0ca26 build.py: Sync with bitbake 1.8 branch
c70cfab Make hal 0.5.9 build
064c7e9 Remove hal 0.5.8.1
0868170 Prefer HAL 0.5.9
f05e80b Update to hal 0.5.9
8c81aca Add missing binary
505ff52 oh-puzzles: added SVN version
7371e63 bitbake: Update to 1.8.1 (inc. various bug fixes, epoch support)
8b36dc2 less: Refresh diff
ee221cd package_deb.bbclass: Make sure permissions on control directory are correct
4445685 rootfs_deb: Catch all error codes and return them
6167cc6 poky-qemu.README: added info about nfs-server in images, removed note about ifconfig as it works out-of-box now
552eb9f Fix versioning, add missing files
4f3a216 linux-rp: enable NFS server module for c7x0/spitz/akita
bf7cbd5 Bump eds-dbus and mb-desktop-2 srcdates
2ee8373 linux-rp: refreshed defconfigs for spitz/akita/c7x0
4fca914 eds-dbus: Remove workaround
887b8b1 package.bbclass: Improve recommends dependency code to catch all dependencies for -dbg and -dev packages, not just some
66ec83e task-oh: Update to matchbox-desktop-2
fa887ed Add xev
2693f8d sysvinit: Various progress bar fixes, especially reboot/halt handling
4641d21 poky.conf: Bump psplash SRCDATE
48fd324 sysvinit: Fix divide by zero upon shutdown
2cf7809 poky.conf: Switch to matchbox-desktop-2
4d8f28d dbus: Drop 0.60
030fa71 README: Minor tweak
1155c57 psplash: fix typo
d1cc5a3 psplash: Add handling for rotated displays
bd90b8e base-files: Add rotation file to indicate rotated display on akita/spitz
ffd6b85 qemu-config: this recipe replace qemu-distcc and provide NFS exports file
bfb887e netbase: configure eth0 as static/auto to have them working without running ifconfig
4454dbb nfs-utils: do not check for nfsd kernel module as it can be built-in into kernel (like qemux86 do)
a89a8b5 ipkg-collateral: Remove inappropriate machine specific tweaks
a6f8cb8 Add missing RDEPENDS on xrdb
f91a0fb shared-mime-info_0.16.bb: fixed broken postinstall script
46b2fe9 Bump mb-desktop-2 srcdate
845437b Upgrade GTK+
1befef8 scripts: Add complete and preamble commands to autobuilder scripts
222597e python-pygtk2: fixed m4 macros to get it build on 64bit
820f881 python-gst: create m4/ directory before copying into it
eab15b8 python-pygtk2: drop MAINTAINER
f40f631 nfs-utils: moved from meta-extras to meta
6b86555 task-oh, poky.conf: added nfs-server feature for images
46e7144 nfs-utils: added 1.0.6 from OE with initscript changed to working one
ae86a28 Bump mb-desktop-2 srcdate
4d5b411 task-base: added kernel modules needed to get WEP/WPA working
1d48528 base.bbclass: unexport DISTRO to prevent application compile failures
4ed9832 contacts: added 0.4, unified recipes, fixed PV in svn version, disabled gnome-vfs
ce9fe6a tasks: added 0.4, unified recipes, fixed PV in svn version
9974233 dates: unify recipes, fix PV in svn version
421f101 Update matchbox-desktop-2 srcdate
ddd34d3 Upgrade Cairo
968b14a Fix spelling
0045f8d busybox: Remove uclibc patch causing compile failures
ec8e59f Allow DISTRO to be overridden from environment
42d0243 linux-libc-headers: Add a more functional procinfo.h header
2c5a437 linux-libc-headers: Fix bashisms
1b3bbba linux-libc-headers: Fix further ARCH references
dca8036 linux-libc-headers: Fix ARCH references
7ada27e linux-libc-headers: Export TARGET_ARCH
800ab9a Add an attempt at linux-libc-headers_2.6.20
d078119 Add an attempt at linux-libc-headers_2.6.20
8710135 linux-libc-headers: Switch to 2.6.18+2.6.19-rc1
a6cc8ec Add tasks to the default image
4e5935f Update linux-libc-headers to 2.6.18, required for HAL to build
9a19fa7 nokia770: Add usbinit to machine rdepends
958c036 task-oh: Drop usbinit from standard image
9355a6d Fix recommends for -dbg
2813f16 Comment this out, it breaks
afabbac Add recommends for eds-dbus-dbg
4e5a1f9 Fix list formatting
c8cdf43 Bump tasks srcdate to 0.4
af2833a Add latest gtk-engines
d2ba482 Add eds-tests
58ccf2e Remove useless fix-segfault patch that just spews to the console
4b10b50 Define eds-dbus symbols for now, see if this fixes the build
f998218 Update eds-dbus and mb-desktop2 srcdate
d9a61bf Fix typo, --disable-pic-ids -> pci-ids
2228192 Add gtk-theme-torturer
9daab5b Remove a chunk of the no-iconv patch, this can be fetched from the config cache
ffe0e46 Add entry for the iconv check in eds-dbus
7be913b arm-linux does support abstract sockets
f25c0f0 Add RRECOMENDS
7ce310c python: package not packaged files into python-misc
69a5f82 xset: Really fix DEPENDS
f33d4b5 xset: Add libxmuu to DEPENDS
14a2072 Move Contacts to Pimlico
2d784b0 Move Dates to Pimlico
f2a63b0 Add Pimlico directory, and move Tasks
7cca09b Upgrade to latest GTK+ and Pango
5f09ad2 task-base: Fix typo
1bb2b83 Upgrade to new GLib
f39c891 Upgrade glib 2.12.x to 2.12.10
3f21c02 Add hal-info and disable more of HAL
e4ff245 Upgrade to cairo 1.4.0
c54a22b Bump tasks (0.3) and mb-desktop-2 srcdates
1275d57 Fix INTLTOOL usage check (from OE)
8799e44 Move a patch to the 1.2.4 folder as its only used in 1.2
14c2aba Remove ancient cairo
01be89c Update to expat 2.0 (from OE)
3351a60 Add virtual/kernel depends
af37d17 Add unidef-native (for linux-libc-headers 2.6.18)
2434ebc Add kernel.org mirror
3ed120e Add missing linux-libc-headers.inc
b11c8d8 linux-libc-headers: Add 2.6.18 (from OE.dev)
b64abc6 mtd-utils: Correctly set Makefile options
dbfd391 python-gst: added 0.10.7 version of Python bindings to Gstreamer + patch to get it build on 64bit host
2d9ec4c python-pygobject: added version from OE + patch to get it build on 64bit machine
da16804 sato-icon-theme: really package
c87ecce task-oh: ship sato-icon-theme by default
9022f34 mtd-utils: Fix DEPENDS (add lzo/lzo-native)
2923f87 Add lzo-native
246389c linux-rp: Bump PR, keep buildbot happy
070517d Update tasks srcdate to version 0.2
907df9b Fix tasks packaging
3eedfbb Remove old Pango
929b71b Update to new Pango
98292d7 Update mb-panel-2 srcdate
9758099 Add Pango 1.16 (from OE)
f3afa08 Remove stale Pango versions
f6cfad2 Inherit gtk-icon-cache
1b7b0c2 python: sync with OE .dev and dropped Tcl/Tk support
eff0c4b Use favourlzo compression mode for zaurus jffs2 images
c54700b kexec-utils: Update to use offical arm syscall number
a6470fb linux-rp: Sync with changes in OE.dev
500602d linux-rp: Add lzo support (inc jffs2)
26c9b6e mtd-utils: Add 1.0.0 and git versions. Patch git version with lzo support
e2a7250 poky.conf: Make adding to DISTRO_EXTRA_RDEPENDS easier
ca1bc37 dpkg-native: Disable selinux support since it causes problems
7b7b479 Various version cleanups
b10bd12 diet-x11: X11R7.1-1.0.1 -> X11R7.1-1.1.1
6a59680 Add a patch to oparchive so that the program exits with non-zero exit code on error.
237c2a2 gcc_csl-arm-2005q3: fix SRC_URI
a50f68d * Added sato-icon-theme package
f8b92f2 linux-rp: Fix oprofile callgraphing on cpus without a PMU
eceaf1c Add PROVIDES so that this can slip in via PREFERRED_PROVIDER
c269b41 oprofile: Improve xml_callgraph patch
1b447bc oprofile: Add ability to output XML callgraph information
1a8420b Bump version
e9bbc39 Package the icons
10ff7f5 Add window selector applet
21690b1 exmap-console: Use filename to set PV, remove duplication from svn version, set DEPENDS correctly
4caa95d Add tasks
7b5b56c image.bbclass: We need to make sure all do_populate_staging tasks have fun so postinsts run correcting at image generation time
23ce782 bitbake: merge upstream fixes and fix bug in recrdeptask handling
56a65b3 Fix bashisms
e36aeeb Fix bashisms
9765e7c Fix bashisms
1797bec cx3110x: Add nokia770/nokia800 wifi kernel modules
1d84d82 fix install target not to run depmod
9f2a9f3 Clean up replaces from OE, fix debug packaging
1b49670 Remove executable bit
4588afb Mass re-packaging scheme. Hopefully not too broken
fda3808 Update depends to match renames and source changes
822d1ec Update depends to match renames and source changes
92639ed Update eds-dbus srcdate
2275ea1 Include patch that corrects the bug in the XML generation in opreport when using --separate=lib
0ad4523 Update cairo version
9d81973 cairo: Sync 1.3.14 with OE.dev
91d6da9 added filter selector
19d0779 simplified filechooser dialog
2f9b5a8 wireless-tools: package ifrename and libiw headers
716fdb2 update volumes patch to work with utf8 filesystem
c179a53 patch gtkfilesystemunix.c to provide rudimentary support for volumes
890f796 coreutils: added 5.3.0 from OE .dev
6a402ce linux-2.6.19+2.6.20-rc4 -> 2.6.20
671facb eds-dbus: Sync with OE.dev
148b7cb Use newer Glib and GTK+
74e0426 Fix typo when reporting an error
72f8f88 Upgrade GTK+
015c1a8 Remove glib 2.8.6
b17f190 Remove glib 2.6.4
9a667a8 glib: Add 2.12.6 from OE.dev
a0394cd Upgrade Contacts to 0.3
e36b2a9 Remove executable bit
4f88a7a Remove old Dates
9a905a5 Add dates 0.3.1
f9f0c31 bump up sato engine date
c62dc02 Don't put .so symlinks in library packages
ef3d4d7 Add patch that adds a "--list-files/-l" to oparchive that just lists what would be copied rather than copying them.
13f8e41 linux-cmx270-rp: Set COMPATIBLE_MACHINE
96dcd77 Whoops, default to panel-2
bfba560 Add matchbox-desktop-2
6bdda67 Remove executable bit
c8767a3 Mark mb-panel-2 as a replacement for matchbox-panel
6c84e2b Update panel and Dates srcdate, add desktop preferred versions
647be45 Add matchbox-desktop-2
c1d98a4 linux-nokia800: Fix typo
f990b3e util-macros: Unbreak cross-compiling
e26585b libx11: 1.0.1 -> 1.1.1
ba14ad5 util-macros: 1.0.2 -> 1.1.5
52c2e1a Add syslog-ng to poky-extras
81f0ee5 Add vincent to poky-extras
1a55a39 task-oh: XSERVER makes this machine specific
86f5fd6 busybox: Don't strip binaries, let poky handle it
c5f676f pointercal: tweak .bb file
a31efbc pointercal: Add c7x0, nokia800, spitz
c99a9b4 Add linux-nokia800
90320fd Add nokia800 machine
8b8dd74 Update xproto 7.0.5 -> 7.0.8, inputproto 0.5 -> 0.7
e87ab15 inputproto: update 7.0.5 -> 7.0.8
0e937cb Add xserver-kdrive-xomap
0eefd09 xserver-kdrive-common: Add nokia800 support
3e6b435 e2fsprogs-native: Stage binaries
c09b109 image.bbclass: Make relative symlinks
44856a2 STAGING_BINDIR: No longer need to rename -native binconfig binaries, set STAGING_BINDIR correctly
9bab90e wireless-tools: Fix typo causing use of incorrect source
dab7dfb bitbake.conf: Fix ext3 image DEPENDS
a2de855 e2fsprogs: Sync with OE, add -native version
3b75644 bitbake.conf: Add ext3 image support (and update spitz to generate ext3 images)
3cce9ba scripts: Add support to scripts for spitz images
9604533 bumped source date
86db48c scripts: Add framework for supporting akita images under qemu
e41b8ef tslib: Remove some further unneeded files
38658ea tslib: Sync with changes in OE, adopt a sane default configuration and only make it machine specific where needed
81b126e Now we always build gnome-vfs 2.16, don't depend on gnome-vfs-plugin-dbus
dec4a3c Update gnome-vfs partially from OE, removing the krb hack
02aa107 zaurus-clamshell.conf: Fix empty flash space messages on akita by setting eraseblock size correctly
9055091 gtk+: Add 2.6.10 from OE.dev
650a05a Bump various source dates
a025ba0 Upgrade depends to panel 2
0261eb4 Don't tell psplash to quit when starting X
e4143a4 Remove clearlooks and panel 1, use Sato and Panel 2
85f0cce Bump version
691e28b Fix packaging issues
192e43f Update for panel 2 and fix packaging bugs
0d74b05 Add srcdate for screenshot, and update mb-panel-2 srcdate
fca10eb Add package for screenshot
ff84689 Re-arrange packaging and stage the headers
4292e81 Remove exclude hack in insane.bbclass and replace it with something a little less foul. This involces adding INSANE_SKIP_package=1 statements to the relevant .bb files
539b0f8 Add exclude list for now, until insane can handle per-package exclusions
6e6fdde When checking for .so files in non-dev packages, only check for .so symlinks
ae28b7f Add pax-utils for insane.bbclass
8d774c0 Don't put the .so symlink into the main package
31aca97 Fix packaging and add missing files
d212d58 Add hide cursor and root ppm patch
fe3e623 Don't ship .so files in the main package
98f3b8b Add a patch to stop versioning the plugin libraries
248c3ed Add insane, from OE (but with fatal warnings)
f682c42 Enable bash rdepends for dhcp-client, hopefully temporarily
02ee3a2 Add bash for dhcp-client (hopefully temporarily)
7f16449 Fix dbg packaging and clean up hardcoded paths
915fab9 Fix typo in description
24dd069 Add udev to depends (from OE)
6a24673 zaurus-clamshell.conf: Clean up flash files from  after building final images
42d89ee Add intltool
ecf5c09 Add HAL from git, faster and uses less memory
38ae29b Update poky-bleeding to latest cairo
162c14e Upgrade to Cairo 1.3.12
35fc09e Add OpenSSL for Network Manager
776490a Add dhcp3 and dhcdbd for Network Manager
6564355 Add iproute2, for Network Manager
75340b0 Actually add volatile file
e343556 Add a volatile file so /var/run/hald is created
b4fcc5f Add initial and probably broken Network Manager packages
1af800c Create haldaemon user
1afa154 Add libnl, a dependency of network manager (from OE)
4fb6a9e Upgrade HAL to 0.5.8.1
6d1509b Add package to install pointercal files, and provide a pointercal for akita
ac853b7 qemu: Update qemu-packaging source date for X patch fixes
85788ed Fix regexp to work with qemux86
9c4684a prelink: Fix EABI segfaults
341f8fc README: Add note about bochsbios
e0c47a0 Remove newlines in echos
3408e51 Fix machine guessing sed
e1140fb Add patch that fixes a bug in oparchive that resulted in the the debug data overwriting the executables themselves. The patch fixes this by always putting the debug data into a .debug subdirectory. This will then be picked up by opreport when reading the archive in.
b26da61 Remove bashism
97453a1 linux-rp: Add missing vesa-tng patch for 2.6.19+2.6.20-rc4 for qemux86
99b66bb README: Mention poky-depends deb
f9f8165 readme.txt: Remove duplicate readme
c3e19c3 Cloned the gdb/files/sim-install.patch to sim-install-6.6.patch and removed the second half since that is no longer necessary when applying onto gdb-cross-6.6.
f382d26 Added -fno-omit-frame-pointer to DEBUG_OPTIMIZATION
69861b9 zaurus-clamshell.conf: Output files with jffs2 extensions to fix symbolic link magic
9232aa3 machine/spitz: Increase default ext2 image size to fit sdk images
a4da778 apt: Fix STAGING_BINDIR reference
2a13c25 qemu: Bump PR
81db74a qemu: Update qemu patches svn date.
990788b scripts: Rename scripts, update README
6531611 runqemu: Tweak scripts
2958184 runqemu: Revamp scripts, splitting into a core internal script and two helpers, one for use within poky, one outside poky
5d4e6e7 Fix file sync
92404e4 local.conf.sample: Remove reference to oesources.org.
b9688d1 linux-rp.inc: Make sh compatible fixing dash issues
2eebb48 add recipes for packages needed to build AbiWord (based on OE, but tweaked for 2.5.x)
81c9ad8 Upgrade to DBus 1.0 in poky
c7e1d67 linux-rp: Fix defconfigs for qemuarm/qemux86
cf7090c oprofile: bump cvs date, fix for EABI
f6cbd20 fix building of syncml-client and and the syncml-client-plugin
e42e254 follow up fixes from OE for libstdc++.la
4737b0e linux-rp-2.6.19+2.6.20-rc4: Fix patch SCR_URI
69177da linux-rp: Add 2.6.20-rc4
1cacbe3 machine/qemu: Set image size in common file
10b9b4a tune-arm926ejs.conf: Change default to that foc gcc4
7884add dbus-0.60: Set PROVIDERS correctly
f5665d5 bitbake: Sync with upstream.
aec95de Remove useless PROVIDES
cdbfd60 gdb: Add version 6.6
70eeb3a native.bbclass: Override STAGING_BINDIR_CROSS
81fc653 image.bbclass: Sync minor changes with OE
b30afa2 rootfs_ipk.bbclass: Fix typo, whitespace
fb61dc1 kernel.bbclass: Drop KERNEL_RELEASE variable
3a86950 patch.bbclass: Fix force options for recent quilt versions
4db17d9 Poky: Switch to use EABI for arm images. Also implies a switch to gcc4, glibc 2.5 and binutils 2.17.
ba22e89 Promote eabi4 to become the eabi of choice for poky
9b84bd9 Rename poky-eabi -> poky-eabi5
563bbec Patch from OE to fix libstc++.la
3206bb3 bump up version to 0.4; add missing RDEPENDS and DEPENDS and post install script
4b8a009 update package contents following change in install path
30daacb splitexmap into exmap-console, exmap-server and kernel-module-exmap packages
09b777e Add evolution2 opensync plug-in
4ffe8f6 Check in opensync/libsync/synctool bits - Mostly compiles, not tested
a34d402 bitbake svn fetcher: Don't use a date when a revision is specified
94ad996 fix appearance of the calibration crosshair
7d621ff gnome-vfs: Disable samba (fix qemux86 build failures)
71dd72c Remove orbit2
2bbd9a5 Make all assignments conditional and fix a missing quote
caf483a Add RPROVIDES
4e3d905 Fix typo
bd00c33 distro eabi includes: Drop TARGET_VENDOR settings - handled in poky.conf now
c378b7f gcc-build3.inc: Merge from OE.dev to fix EABI build failures (esp. qemux86)
61e233a udev: Fix touchscreen symlink when the touchscreen driver doesn't send EV_KEY events
0c25de7 linux-rp: Add xscale_cache_workaround patch which removes segfaults seen with glibc-2.[45], jffs2 and the kernel zlib patch under EABI until a better solution presents itself. See discussion on linux-arm-kernel.
adb36b3 Define preferred provider for dbus-glib
91dc177 Add PROVIDES=dbus-glib
8953e46 Add gnome-vfs-plugin-dbus provider/provides to let the task build
43437fe Add DBus 1.0 and deps
1c7b4e3 Add depends on dbus-glib
74279dc Add depends on dbus
d7c925b Very nasty hack for gnome-vfs, to force the krb5_config check to fail
95442ba Upgrade to intltool 0.35.2
74479b5 Upgrade gnome-vfs to 2.16.3, which uses DBus 1.0
81b4959 Merge avahi 0.6.15 from OE, to enable builds against DBus 1
8de8a38 Update eds-dbus srcdate for calendar fixes
a29ef9d Update cairo
9286120 Add gnome-vfs 2.12.0
d01c67b Upgrade to cairo 1.3.10
37568a7 Add strace 4.5.14 (with EABI fixes)
ae60cc2 README, sanity.bbclass: Add makeinfo (from texinfo) as a dependency. Also check for qemu-arm binary
8ceaa4e psmisc: Fix -dbg and -doc packages
d9b82c5 Disable xft patch, and instead patch out GTK+ from GtkEntry and GtkCellRenderer
fa0d16a Fix packaging
51bcdb3 Fix depends
3040eb4 poky.conf: Default to enable binary locale generation
8425978 qemu*.conf: Increase image size to 200MB to fit sdk
b12882e mpeg2dec: Fix -dbg packaging
91d2ec7 alsa-lib: Fix -dbg packaging
46f18dd glibc: Fix locale generation
a09dab8 libxml: Fix dbg packaging
a6bd060 Remove empty directory
cb3389f Drop old versions of leafpad, zlib, gnutls, libgcrypt, file
c2a8c31 Drop uneeded X11R7.0 versions
c9ac078 Finally commit matchbox sato theme
ed9ba44 Update for new Pango and Cairo
ea5a5e2 Remove GTK+ 2.10.0
32077bd Upgrade Cairo to 1.3.8
daa65f7 Upgrade to Pango 1.15.2
6dec346 Add libsm to DEPENDS of startup-notification
ce18f35 Add matchbox-sato
5412e02 add Sato gtk engine bb
90fc126 gcc: Sync gcc-package-cross.inc
1a4a231 gcc4: Sync with OE.dev
1292db8 glibc: Update patches
e46b247 glibc 2.5: Sync with OE.dev
82e21d5 poky-eabi4: Fix versions
43512fa binutils: Correct url for poky
d7d26c7 poky-eabi4: Update versions
dfd4783 binutils: Add 2.17.50.0.5 (from OE.dev)
6ae7f0b Add poky-eabi4 mode
86be563a glibc: Add 2.5 (from OE.dev)
c540e7a dropbear.inc: Fix quotes
f5b38f9 Remove DISTRO_TYPE, replacing with IMAGE_FEATURES. Documentation is in local.conf.sample
50bbb77 bitbake.conf: Clean up FILES, add ALLOW_EMPTY for -dbg and -dev packages
eba00a9 glibc: Package libexec .debug packages correctly
d4e0d81 exmap-console: Set PV correctly
a8b7d09 Add elfutils, prelink
01303cc distro.confs: Set SRCDATEs for exmap-console, elfutils and bump psplash
44e5910 svn bb file
81aad85 maemo-mapper: Sync with OE
ce8e068 linux-rp: Disable LEGACY_PTYS on qemux86 (to match other kernels)
89e6ea8 Add poky-bleeding note
7c46bcb Update eds-dbus to svn as of 20061215, and drop integrated patches.
8b1ea72 update to 0.3.1
6b52f40 linux-rp: qemux86 touchscreen changes to work with wacom tablet
e0a8698 tslib: Add qemux86 support
228a583 orbit2/gconf: Convert to use STAGING_BINDIR_NATIVE
6c2f9c0 Various libs: Convert to use STAGING_BINDIR_CROSS
825a17e libgpg-error: Convert to use STAGING_BINDIR_CROSS
ec99f44 bitbake.conf: Add STAGING_BINDIR_CROSS
b21230d tslib: remove duplicate FILES statement
9ee3d34 kf: Make it work with gcc4, sync with OE.dev
da317b2 Allow psplash to be disabled via kernel cmd line
d557f58 poky.conf: Remove PARALLEL_INSTALL_MODULES, we don't want this
51d5820 Add time
d2e7d8b lttng-viewer: Set LEADSONAME
5661cfc alsa-utils: Fix packaging
4e68432 tslib: Fix -dbg packaging
5d2f5fa Add missing patch for glib-native 2.12.4
c258b1b Optionally set cairo version so it doesn't overwrite the poky-bleeding version
cb244e3 Fix glib versions
7340a6c Add glib_cv_monotonic_clock for glib 2.12
8c7ebc2 Upgrade to glib 2.12.4
46287e2 Upgrade to glib 2.12.4
66e4e27 Add missing PREFERRED_VERSION_ prefixes
4ba4391 Add poky-bleeding.conf for cutting edge config
6921fe4 gtk+ 2.10.6: Fix DEPENDS for poky, use bitstream-vera as a font for now
ccd102a cairo: Add 1.3.6 from OE.dev
3321c70 pango: Add 1.5.1 from OE.dev
1ec0f85 task-oh: Add ipkg until we have an alternative means of running postinsts
b142185 fetch/__init__.py: Allow srcdate to be overridden in SRC_URI
aac2b8d runqueue.py: Send SIGINT upon Ctrl+C, not SIGNTERM
c690f89 qemu: Switch to use debian package repository
3664b2a matchbox-poky: No need to show the cursor on qemuarm now
cf66987 linux-rp: Disable mouse device for qemuarm
bc2f38f gcc 3.4: Add patch to fix jar issues
2886028 local.conf.sample doc updates + add ASSUME_PROVIDED += "qemu-native"
5eadd9d Remove now uneeded gcc-3.x check
470beb5 rename readme.txt
cf305b0 readme updates for qemu
23af674 Fix typo
ccd69b9 Remove useless options
f63e715 Remove bashism
4cf2d71 rootfs_(deb|ipk).bbclass: Fix bashism so works on dash
c30cb8c bb file for dates 0.2
91001d7 gnutls: Specify libz and libreadline locations to avoid contamination from /usr/lib and /usr/include
4861e57 setserial: Fix SRC_URI (from OE)
21fb2cb bitbake runqueue.py: Set children as process group leaders and send SIGTERM to the process groups
6274709 bitbake.conf: Move DL_DIR to the end of the file
67d732d scripts/runqemu: Remove some duplication
6a83bb1 scripts/runqemu: Add distcc support
ef853d0 Add qemu-distcc for qemu machines
4de307a usbinit: Fix quoting
034861c image.bbclass: Add export machine as needed by bbimage
bc4de14 rootfs_deb.bbclass: Add sanity check
37669af bitbake: Fix a couple of typos in the bitbake shell
d35635a scripts/runqemu improvements:  * Try harder to find ifconfig  * Error out if the environment isn't correct  * Tell the user we're running sudo
6ee267a Update Contacts to 0.2
681d6c1 bitbake: Sync with bitbake trunk for bugfixes and improved dot file generation code
adabf6c sanity.bbclass: Add umask check
2dc275c package.bbclass: Add fakeroot-native as a PACKAGE_DEPENDS
5f59db5 dpkg: 1.13.22 -> 1.13.24
081bc99 local.conf.sample: Allow external override of PACKAGE_CLASSES
c7c86e2 gcc: Remove bogus PACKAGE_ARCH settings (now fixed properly in cross.bbclass)
34aa4ca cross.bbclass: Set PACKAGE_ARCH correctly under inherit cross
9ecd235 poky.conf: Set TARGET_VENDOR to -poky. This will require a rebuild of tmp directories but will identify toolchains as coming from poky etc.
661b9ca qemux86: machine config files should not set TARGET_VENDOR, its a distro option
255a927 Add valgrind
72db1be Rename linux-openzaurus to linux-rp
85e27da rootfs_deb.bbclass: Reverse sources.list file to correct repository priorities. Add Release file to sources giving a Label. Update preferences file to use source labels instead of paths
b7880fa package_deb.bbclass: dpkg-deb needs to run under fakeroot to set ownership correcting in resulting packages
0d3763a zaurus-2.6.conf: Mark machines as supporting bluetooth
632d278 apt: Set preferences location in apt.conf
a725186 base-files: Should be machine specific
ecc68c6 linux-openzaurus-2.6.17: Update ASoC + other misc patches
b8cc2cd linux-openzaurus-2.6.17: Sync defconfigs with OE
bcedd69 poky-extras: Add bluez, sqlite, maemo-mapper-nohildon
23e50d4 poky-extras: Update extras task and image with recent poky changes
db0b57e tslib: Fix tslib.sh for spitz
e65d97d rootfs_deb.bbclass: Mark packages as installed/unpacked correctly. Add in hacks to work around /var being tmpfs and to enable ipkg to handle the postinsts on device (for now)
207db00 rootfs_deb: Set Architecture correctly in a copy of apt.conf in staging
2d56326 apt-native: Stage apt.conf.sample, not apt.conf. Anything needing apt.conf will need to adjust the file anyway and this avoids apt's default search path.
edd988e data_smart.py: micro optimisation from bitbake trunk
1e95d39 Confhandler.py: Add cleanup from bitbake trunk
9f10a98 svn.py, git.py: Sync with bitbake trunk - comment changes
d8f7680 fetch/__init__.py: Store url data per .bb file fixing urldata contamination between .bb files.
f4ab3a1 perl: Use -f option to rm, fixing read only file problems
4f249a8 Fix STAGING_BINDIR for multimachine use by spliting into STAGING_BINDIR and STAGING_BINDIR_NATIVE and adding both to PATH
82dd732 base.bbclass: unexport MACHINE
0da3c82 bitbake/lib/bb/data.py: Add unexport flag for variables, add speedup for expandKeys
eee1508 psplash: Set PV correctly
bd76341 update-rc.d: Drop version 0.6, set PACKAGE_ARCH='all' for 0.7
1e1e9a3 package_deb.bbclass: Handle all architecture as a special case solving multimachine build issues
ebf771b local.conf.sample: Improve PACKAGE_CLASSES documenation
e4bb4ba base.bbclass: Make sure MACHINE isn't exported fixing failures in binutils when MACHINE is an envirionmental variable
436d656 puzzles: r6727 -> 6915
6a9c195 local.conf.sample: Allow environment to override MACHINE and DL_DIR
14d1d6d scripts: Move main contents of poky-init-build-env to scripts/poky-env-internal. Add poky-autobuild script for autobuilder use.
5285430 siteinfo.bbclass: Change note to a debug message
eeb1bee bitbake.conf: Allow DL_DIR to be set by the environment
91509a0 poky.conf: Set some missing SRCDATEs including qemu and psplash
dff9e4b qemu: Really fix arm_nptl.patch
c344a7c qemu: refresh arm_nptl.patch
fdeaa59 speex: Fix SRC_URI
db564fe sanity.bbclass: Add sdl-config to required programs list. Remove fixme as now dealt with.
2f461db qemu: Add depends on zlib(-native)
7a80caa local.conf.sample: Add note about BB_NUMBER_THREADS
0ac664d rootfs_xxx.bbclass: Add missing checkins from the log_check updates
fcbc597 xsp, xpext: Fix broken DEPENDS after merge
e2f9e1a Factor common code out of rootfs_xxx.bbclass into image.bbclass. Add error detection code for roofs_deb.bbclass
01b1dba base.bbclass: Fix errors in none libtooled packages
450aea7 Add lzo, upgrade libgcrypt -> 1.2.3, add gnutls 1.4.4
2a9503f Add libxml2-native from OE.dev
634232e Site file handling update: Instead of one site file per target, allow entries to be shared. Handled through siteinfo.bbclass
4c9521d dbus: Add missing files
0405bf5 Add dbus+dbus-native 1.01, dbus-glib+dbus-glib-native 0.72 from OE.dev
902bcfa Update libx11 references.
2befc63 Various minor updates from OE.dev
a936cf2 cairo: Fix libx11 reference, add some patches from OE.dev (commented out for now)
30785a5 gnutls: Improve do_stage (from OE.dev)
f8c2f22 perl: Sync with OE.dev
4d0fb2b libsoup: Drop old verison, fix 2.2.96 staging
6520c12 gst-meta: Merge into a single file (maybe to become task-gst)
e38a607 initscripts: Add save-rtc script and ALSA manual devices table from OE.dev
ad790e9 ipkg.inc: Fix bashisms (now works with dash) (from OE.dev)
4b647cd Various minor updates from OE.dev
b3b8d9e hostap: Sync with OE.dev
f86905d gnu-config-naitve: Fix do_stage (from OE.dev)
ca861e8 prism3-support: Fix multiple network device issues
faedc55 fakeroot: Sync with OE.dev (and fix -native RDEPENDS)
e423fc9 libidl: Improve staging from OE.dev
eef43c9 s#libx11#virtual/libx11#
b57a5d5 less: Add alternatives handling from OE.dev
f73c7d9 matchbox: Quoting fixes, s#libx11#virtual/libx11# from OE.dev
b6b03ef flac, lame, libiconv: Sync with minor changes in OE.dev
6f5035a libpng: 1.2.8 -> 1.2.12
d1c3475 fstests: Add packaging from OE.dev
378c5d9 base-files: Sync with OE.dev
0d35abe eds-dbus: Sync with OE style changes, add DEPENDS on zlib, add workaround -ldb from OE.dev
e56649a gtk+ 2.10.6: Sync with updated patches in OE.dev (pangoxft includes a calender fix)
31fd33d netbase: Sync with OE.dev
16392b3 pcmciamutils: Drop old version, fix quoting in 013
03c40cc busybox: Sync with OE.dev
dce65a1 maemo xsp/xpext: s/libx11/virtual\/libx11/
77416dc pcmanfm: Drop old version
e86819b keymaps: Sync with OE.dev
c24ce90 tslib: Sync major cleanup I made in OE.dev
c0d040f bitbake.conf: Add util-linux-naitve and grep-native to ASSUME_PROVIDED
ede06b0 gmp: Upgrade to 4.2.1 from OE.dev
c5afcd8 cairo: Drop old version (use 1.0.4 instead)
e1436b2 busybox: Update defconfig after failure on qemux86
0598141 conf/machine: Remove stale unused files
4398b98 conf: Sync with OE
173b999 Drop cvs tslib
c4f7ddc linux-nokia770: Update kernel to osso26 release
c6eae2f linux-nokia770: Update kernel to osso26 release
b1ce432 udev: Package and stage libvolume-id as required by HAL
2148aed file: Add missing files
2086881 file-native: Add 4.18 from OE.dev
e09dab0 classes: Sync with OE - mainly quoting fixes or other minor updates
4015d48 binconfig.bbclass: Sync with OE to benefit from improved .la file handling
99498a1 Fix whitespace
eb0d34d We patch out Xt from the X11 check, so remove libxt depends
9101515 update-rc.d.bbclass: 'Fix' whitespace
95febfd base.bbclass: Sync with OE (remove broken mirrors, fix fetchall task)
131c98c runqemu: Refactor network device commandlines and enable for qemux86 ext2 images (qemuarm ext2 images attempt dhcp and hang for some reason)
31f507e runqemu: Use different nfs paths for qemuarm and qemux86
af60f8f scripts/runqemu: Add qemux86 support
fac260b glib-2.0: Clean up anonymous methods
8aee6b3 classes: Standardise whitespace in anonymous python methods and factor out functions for more efficent use by bitbake (as also patched in OE)
8174ba4 kernel.bbclass: Unset MACHINE to avoid problems
ff23349 bitbake.conf: Add MACHINE to the CACHE path if set
74b6456 If building without dselect, we don't need curses
713d414 Add kexec (from OE)
941d957 dpkg: Make it a little quieter by removing extra fields warnings
177e1a1 linux-nokia770: Drop old 2.6.12 version
d52270c linux-nokia770: Sync with updates in OE
4a9392f Improve the qemu scripts and documentation (qemux86 support isn't complete yet)
f4a8621 poky-init-build-env: Add scripts dir to the PATH, export BUILDDIR and OEROOT, add BUILD_SYS variable
e389104 linux-nokia770: Remove incorrect KERNEL_IMAGETYPE (causing problems after kernel.bbclass was fixed to allow this to be overrriden)
69aadf9 linux-nokia770: Add 2.6.16 release version from maemo
306b7c7 bitbake: Upgrade from 1.4 -> 1.7.4ish
65930a3 Modify IMAGE_ROOTFS_SIZE_ext2 for cmx270
e1dbdeb oh-image-extras: Correct inherit to match deb changes
e672f3e fstests: Add correct PV
c129419 alsa-lib: Add RDEPENDS on alsa-conf
883741f gcc: remove duplicate methods
62fab4d glibc: Remove duplicate methods
274ecca conf/machine: Merge task-base updates
5962332 sanity.bbclass: Merge with OE syncing improvements both ways
24d8eaa fix exmap-console version; bump srcdate
73e0032 tweaked to work with autotooled package
362a7a3 patch to disable screen-blanking from X server
0d59c10 kernel.bbclass: Sync with updates in OE to work with kernels >= 2.6.18
5d6699a Add gtk+ 2.10.6 from OE
bdc1ab3 Upgrade GTK+ 2.8.x to 2.8.20
7e31da3 linux-openzaurus-2.6.17: Sync defconfigs with OE (spitz, poodle)
acbaf6a linux-openzaurus-2.6.17: Sync defconfigs with OE (tosa, akita, c7x0, collie)
b73d010 linux-openzaurus: Drop outdated 2.6.16 kernel
ebced3a linux-openzaurus: Drop outdated 2.6.16 kernel
5660618 move noman.patch inclusion from dpkg.inc to dpkg_1.13.22.bb
15a908c enable noman.patch to avoid building man directory (results in significant speedup)
a8cf764 xserver-kdrive: Fix packaging
e510de5 Update apt to 0.6.46.2, as 0.6.45exp2 is no longer on the debian mirrors.
7597d5b Smaller filechooser patch for GTK+
2db3540 Remove some leftover pre X11R7 packages
c195758 Drop old x versions (pre X11R7)
e3fdd33 Drop old xlib versions (pre X11R7)
df12f76 Remove remaining MAINTAINERS
0fc3f6d sysvinit: Fix packaging
73808fd puzzles: Fix packaging
939f898 pango: Fix packaging
66d4d1f Add distcc to poky from OE
860b485 packages: various .debug packaging fixes
41588f1 libxml2: Drop old version
6312385 lib_package.bbclass: Fix .debug packaging (from OE)
3de4893 bitbake.conf: Fix .debug packaging
a5a8311 poky.conf: Fix owl-video-widget SRCDATE
cc27520 Kill some old x packages.
298a30b Add distcc to the sdk image.
a67d36b base.bbclass: depchains: don't -destructively- set the pkg's RRECOMMENDS.
d726bba package.bbclass: depchains: don't -destructively- set the pkg's RRECOMMENDS.
002f491 patch.bbclass: fix bug where it failed to detect that the user did not modify the patches at all, add note about pressing ctrl+d to exit the resolver shell.
77213ca fix packaging
7877023 increase srcdate
c66f925 rename misnamed package
2714417 added bb file for exmap-console application
3ed8f69 meta/site/x86_64-linux: fixed value of db_cv_mutex
ac46aeb gconf-dbus: dont include .debug, .so, .la in main packages.
6e8fc10 Ipkg: don't include .debug in main packages.
f711a0a poky.conf: Fix oprofile verison
23158c8 gtk 2.6.8: Fix -dev/-dbg broken packaging
7759703 package.bbclass: Partially fix another dubious use of packages[0]
e7d0f3d perl: Fix .debug file packaging
2af3b21 package.bbclass: Fix split_locales to remove spurious references to -dbg packages. The way it selects the principle package name needs totally reworking as the current code is flawed but apply a workaround for now (this is unrelated to other changes to package.bbclass)
ec30e86 image.bbclass: Fix image task dependencies after package.bbclass updates
866ab59 package.bbclass: Sync with OE upstream
e2b821a package.bbclass: Split into two tasks, one which prepares the packages and then package_write which actually generates the packages. The two stage approach allows us to avoid circular dependency issues from classes like debian.bbclass. As the data being emitted into pkgdata/ changed, you need to either wipe tmp or rerun the do_install/do_package tasks (wipe the do_xyz stamps from the stamps dir). Everything will repackage anyway due to the new task.
49d42d9 base.bbclass, package.bbclass: Clean up and document. Should be no actual code changes
95ec43a files to build gtk-industrial-engine
09f1353 gtk+: remove outdated maemo version
b6959cf base.bbclass: Add fetchall task to fetch all sources for all the given task and all its dependencies (requires bitbake trunk)
2f3711f oprofile: drop old version
53592b9 Add vesafb-tng patch to linux-openzaurus.
5737767 glibc-package.bbclass: Improve localedef failure error message
1812814 gtk-engines: Fix SRC_URI
605f620 gdb: 6.3 -> 6.4
ac8a12b oprofile: Make 0.9.2 the default, bump cvs date, update the cvs .bb file for cvs changes
a9d2038 Add PACAKGE_CLASSES setting, also list qemux86 as machine type
f97aec2 Add PACAKGE_CLASSES var to poky.conf
5713649 Add check for gawk, needed by x86 glic build
50f3bbc oprofile: Add 0.9.2
272266f oprofile: Remove some bashisms and general breakage
6dfc07b add va_copy bits to the i586-linux site file.
6cef27a Add initial 1.14.4
2b533dd Update Pango 1.13.x to 1.13.5
16e5c3b Update udev from upstream oe (still using 092, just  a newer PR, so the .debug stuff is split out of its packaging).
009c24a add psplash to task-oh-base
6553a20 Add XServer fallback settings for unknown machine
0be2426 fix broken 'require' statement
dade587 Don't nest os.path.join() calls
16bcfe9 qemu: Fix patch
3b9e54a Added hopefully fine qemu touchscreen related patches
823c845 Add patch to remove include <linux/compiler.h> as it isn't in edgy, and isn't required.   --This line, and those below, will be ignored--
fc2234c Remove unrequired libraries
5ec8407 Remove dependencies on libraries that are not required
b73e55b Remove empty directories left from xorg conversion
c6abd62 tslib: Fix qemuarm
7749576 tslib: s/cmx270/qemuarm/ ;-)
a9d7c5a tslib: Bump PRs
b2c589c tslib: Add cm270x support
7086fa1 Make keymaps load after psplash
ae40c62 Various minor tweaks to get qemu emulating a touchscreen device
eb83f4b sysvinit: Add psplash support, remove elpp support, convert rcS to use rc, speedup execution of sh scripts
b462c8b add psplash
f27a0ca Update sanity checking to report all missing instead of one per run. Add a check for gcc 3.x
07be49d - Fix mp3 playback (update libmad) - add mp3 decoder to gst-meta-audio - add avi demuxer to gst-meta-video
181260d Updated readme.txt with required package list for breezy
dd6268d Add mb-applet-light to poky
79206e0 xextensions: Remove as they conflict with X11R7 packages and corrupt builds
80e181e tslib-maemo: die, die, die
8281963 xserver-kdrive: Prune old unneeded xservers
2ea41da rootfs_ipk: Remove extra rm command to ensure /dev is correctly created
c2e7a8d lttng-control: 0.10 -> 0.18
6d8c33e tslib: Fix nokia770 support files
361473f udev: Remove old unused versions
675c8fc udev 092: Revise touchscreen detection expression to function with nokia770
4e0958e xsp/xpext: s/xextensions/xextproto/
b83c1ab gst-plugins-good: Disable libcaca to prevent build failures
f54bb1f Add task-oh-sdk-base to oh-image-sdk.
bc6fccc Fix bug #151 (pcmanfm warnings/launcher)
8d02222 Back out unnecessary change..
bad0d88 Fix launcher for owl-video-widget
2f98100 Add missing icons and a .desktop launcher for owl-video-widget
b4a1c8f Bump up qemu date needed by wacom usb patch
88a162b Add usb wacom patch from andrzej zaborowski
36f59c2 poky.conf: Add PREFERRED_PROVIDER for update-alternatives
6b89e67 ipkg/dpkg: -native packages need to depend on virtual/-native version
f790c58 update-alternatives: -native packages need to depend on virtual/-native version
a45581c rootfs_ipk.bbclass: Fix function names and exports
7aceb00 glibc-package.bbclass: Merge task order fixes from OE
8d804ea Merge devgen branch to trunk.
5cacd3e Remove unneeded classes
4471ca5 libxsettings-client: remove unused path
ecd5296 libxsettings-client: Use version 0.10. Remove libxsettings
a48da11 Clean up and correct MAINTAINERS
650cd19 Update GStreamer packages, add missing gst-meta-debug package, add Tremor vorbis stream decoder patch (GNOME bug #357055)
2b9b768 removed uneeded per machine key setups and merge in single kbdconfig file
2341598 Correct desciption and section
d9c7d67 e2fsprogs: Remove misplaced/stale file
83217c7 lttng-control: drop old version 0.6
b6c7781 lttng-control: drop old version 0.6
514ab79 clean up some unneeded references/variables
7272744 gtk+: Remove migration patch
dd9ff71 Package.bbclass: sync with upstream oe legitimize_package_name.
cdb9517 linux-openzaurus-2.6.17: Sync with OE. Also add rootdelay=1 to kernel commandline for spitz
4fa2d11 Sync up.. all the deb/dpkg changes which I have locally are now in svn.
04f6953 classes: Reorder tasks so staging occurs after packaging. Add do_install into the task chain with dirs fix. Changes merged from OE
1f0424a base.bbclass: Remove do_fetch[nostamp] so we don't run the fetch tasks everytime we build an image. WARNING: This will cause all do_fetch's to rerun which will in turn trigger a complete rebuild of everything. To avoid, use http://www.rpsys.net/openzaurus/temp/make_fetch_stamps
baedc79 Add missing patch for liboil (whoops)
e57a7d5 Fix liboil, revise GStreamer packages (still WIP)
02059b7 files for using csl2005q3-2 toolchain
de35d83 files for fstest suite
0eadb89 binutils-2.15: Add update from OE to allow correct operation with gcc 4.x (requested by zecke)
3ea4918 images: Remove XSERVER references now handled by task-oh
c9eb0b3 task-oh.bb Move xserver depends from image depends into the task package
163af38 bitbake.conf: Add svn commands, merging from upstream so bitbake trunk works
1d21b58 poky.conf: Correct pango version
81971a2 patch.bbclass: sync with upstream oe.
5089966 readme.txt: oh-image no longer exists - update
a0ae2c8 Fix crash with gst-inspect
cb21806 Change maintainer for all gstreamer packages to myself (they've diverged enough for this, I think)
b015278 Fix gst-plugin-* depending on gst-plugins-*-dbg
117d625 Tweak/fix-up GStreamer stuff - gst-launch seems to work with mpegs now
d1da9bf Update qemu-nfs script to work with versatile/PB kernel
abfc1db Add apt & apt-native, including the generation of the apt.conf to be used for the rootfs population.
2ca2649 - Add libmusicbrainz from OE - Fix up gstreamer packages - Add gstreamer base/audio/video meta-packages - Add owl-video-widget - Add owl-video-widget, gst-meta-audio and gst-meta-video to test-apps   in oh-image-pda (currently not working?)
e9b7628 configuration for csl2006q1-6 compiler and binutils
8f47d85 Add dpkg, modified from upstream oe.
f8b1e63 Check /proc/cmdline for 'x11=false' to disable X server startup
f1f8c5a Add gstreamer 0.10 - Mostly packages from OE + updates and gstreamer binary registry patch
b89a8f8 Add xset, xrandr to oh-task-base
fe8b30c Add cmx270 special casing for not including wifi
5027d8f patch.bbclass: updates from upstream oe.
aaab207 Update cmx270 for 2.6.16 use
287f11c Add compulab modified 2.6.16 kernel
ce8c8e0 Add correct patch
1e09fe1 Add patch for -fb switch support for Xfbdev
18117c4 Add basic support for cmx270 mxfb X
99da426 base.bbclass: Add a new 'rebuild' convenience task, which simply does a clean and then runs the default task ('build').
c489311 devshell.bbclass: Run after do_patch
b9f06d1 devshell: Convert to its own class and add to poky.conf by default. Export EXTRA_OEMAKE to devshell.
c1ab349 base.bbclass: Add devshell task. Trigger as bitbake somepackage -c devshell which will drop you into an interactive shell within the source (S) directory. The environment is as found internally to other tasks for the package (PATH includes the toolchain etc.).
27e6638 bitbake build.py: Add interactive flag for tasks to allow i/o redirection to be disabled. Also fix NFS stamp error
874a642 Patch.bbclass: add NOOPResolver class for use in unattended builds, which does no actual patch resolution, simply passing the failure on up.  Set PATCHRESOLVE='noop' to make use of it.  Also pulls in the workaround for quilt's upward searching for a 'patches' dir from upstream oe.
0153064 Fix cursor hiding when running on qemu versatile board
6527a79 Add qemu-ext2 script and new notes to README
b1d72c5 image.bbclass: Add symlinks to the latest images for a given machine
0426fad linux-openzaurus.inc: Add symlink to deploy/images for the latest kernel for a given machine
24164f3 Add ac_cv_sizeof_int_p, needed mysteriously suddenly by rxvt-unicode
67557e1 gcc-cross-csl: Fix typo and hence require error. Not sure how this worked and it will probably break the csl toolchain...
f54e1c6 dbus-native 0.5: drop old version
bc83fd8 Rename the supplied default local.conf to local.conf.sample, per mallum's request.
ecb32bd Patch failure handling updates, added a 'patch' concrete class, so we can apply patches to quilt-native itself.
01056cd quilt updates from upstream oe.
f927cf6 poky-init-build-env: add $HOME/.poky
72d2979 poky-init-build-env: add $HOME/.oe to BBPATH, for setting a per user conf/site.conf for settings common to all build dirs.  unset TERMINFO to avoid glibc pulling in the user's terminal information files.
c813d14 Change include x.inc -> require x.inc (sync with OE)
1489f00 pango: Sync with OE
92026fc chkhinge26: drop (replaced by zaurusd)
418c6e5 avahi 0.6.10 -> 0.6.13 (from OE)
d717d4f Patch.bbclass: fix bug resulting in a failure to md5 the local path.. it broke when localpath() included variable references.
438c974 automake: Sync with OE (include -> requires)
566a463 autoconf: Sync with OE (include -> requires and add AC_CHECK_TARGET_TOOL backport from 2.60)
57a3f74 Add tune-iwmmxt (use to enable wireless extenion optimisations)
3fb64b4 sanity.conf: Update minimum bitbake version
6edc490 Drop familiar, sync angstrom and openzaurus after merging task-base changes
5ad6d9a bitbake.conf: Sync with upstream
504535f Sync task.base after merging upstream
2a01021 Sync conf files with OE (and add iwmmxt arch to capable machines)
06a1633 qemu: Generate ext2 images as well as bz2 tarballs
72906f5 conf/distro: Sync with OE
93a8d06 classes: Sync with OE
37d03b1 Directly make use of the OEROOT environment variable in the default local.conf, and set TMPDIR explicitly to avoid the requirement that one run bitbake from the build directory.
bd1b2b2 poky: Add POKYMODE=eabi2 - Uses glibc 2.4 and gcc 4.1.1
8800d8b gcc: Add 4.1.1
1562178 linux-openzaurus: Change qemuarm to emulate the Versatile/PB with SCSI disk support and OHCI USB (via PCI)
892c3b4 linux-openzaurus: Change qemuarm to emulate the Versatile/PB with SCSI disk support and OHCI USB (via PCI)
9141b71 glibc-2.4: Extend list of broken locales
2699394 qemu: Updates to reflect new SRCDATE
4ebdad5 qemu: Update to SRCDATE = 20060723 (corresponds to 0.8.2)
6f6b931 qemu: Add nptl patch to allow EABI binary locale generation (from scratchbox)
5c2171b ship battery applet images
30532ac s/libapm/apmd
2177524 updated matchbox-panel-2 packaging
55b7650 Added faster cairo_fixed_from_double()
ad1b593 Add a few more i586-linux test results for x86 builds.
6b656b2 Add util-macros to the DEPENDS of xorg-app-common.inc
0982068 Remove unneeded linux-x86
fa1dde2 qemux86: Switch to use linux-openzaurus as the kernel provider
9e2e38c linux-openzaurus: Update defconfig-qemux86
521b22d Clean up X start up scripts. Remove uneeded files. Use xinit to more safely launch Xserver and XSession scripts
2d5a5e5 Add a few more test results to i586-linux for the qemux86 build, this time for libgcrypt.
3b50962 Tweaks to work with bitbake trunk: add BB_DEFAULT_TASK, add do_rootfs[nostamp] back, remove image_ipk PR
97924c6 linux-openzaurus: Add qemux86 support
a0ce0b8 Add a couple entries to the i586 site file, to fix up the avahi build for qemux86.
056b433 Fix the patch.bbclass error handling in a couple of the error paths by changing the semantics of the PatchError exception.
c69404a Add xinit
7aa52d7 Clean up the way patch.bbclass's runcmd handles the directory not existing.
9649cf3 Drop outdated opensync packages for now
fe7c8c2 Changes for ticket:8, with fixes for the bugs reported by Richard.
4776ce0 Add/fix libsoup 2.2.96 package
1bf87de Add pcmanfm 0.3.0.1 (latest) + patch to enable use without FAM
ac73b5a gnone-vfs-dbus: disable openssl and samba explicitly
017f9db perl/perl-native: Sync with OE
4672653 perl: Add i586-linux config file
45b0482 x86: * Add qemux86 machine. * Glibc 2.4 updates from upstream OE. * Add linux-x86 kernel to satisfy the deps.
10984ec fontconfig-native: call out freetype-config-native, not freetype-config.  the inadvertant inclusion of the target staging dirs in the lib search paths can break the x86 builds.
7b8d7fe xextproto: do not PROVIDES xextensions, as it does not includ xextensions.pc.
94f4377 Fix packaging for matchbox-panel-2
d8b4d9c Add matchbox-panel-2 to poky
7d9b40b bump up settings daemon date
22a7b20 Add patch to rename eaccess function in coreutils-native so it doesn't conflict with any system-provided eaccess.
d58cfb0 Switch from tslib 1.0-rc1 to tslib 1.0.
cefc924 Add tslib 1.0 release candidate one.
ca10363 Numerous new xorg package versions from upstream OE.  Pester me if any local changes got inadvertantly lost, or if any packages need upgrading.
c210d01 gtk-doc: Create directory before installing the file
283e986 classes/base.bbclass:   * Add stamps for do_fetch task   * Remove empty NOTE messages   * Add do_configure task dependecy for DEPENDS handling classes/debian.bbclass:   * Add do_package task dependecy for RDEPENDS handling classes/image_ipk.bbclass:   * Add do_package task dependecy for recursive RDEPENDS handling classes/package.bbclass:   * Add do_package task dependecy for DEPENDS handling classes/rootfs_ipk.bbclass:   * Derive image PR from DATE and TIME   * Add stamps to do_rootfs task (PR changing will trigger rebuilds instead)
0f5e8d2 multimachine: HOST_OS should be TARGET_OS
dec8b8b libnss-mdns: Remove unneeded RRECOMMENDS
5ea6825 Add libglade to RDEPENDS
1f20ade Remove unneeded RRECOMMENDS
a26f74c Remove IMAGE_FSTYPE, allow anything to override the default IMAGE_FSTYPES
e35e618 Rename rewrite.py to jhbuild2oe.py.
2459137 Bugfix in the jhbuild emitter: wasn't properly emitting for templated packages.
2992d03 task-base: Add usbhost kernel modules
b161186 ipkg: Fix a problem with paths lengths triggering the use of GNU tar extensions and ipkg not understanding them
ee10576 Move gconf macro into correct location
91e9938 Add gconf macro file so mb builds again with gconf dep
1c6dd82 lock down mb wm and lib version to 1.1 and 1.9 release respectively
2360bfa Add libmatchbox 1.9 bb
d24a639 Add mb-wm 1.1 bb
0c8c140 First pass of the emitter for the jhbuild script.
c7274f6 Add the partial rewrite of my jhbuild -> oe metadata conversion tool, along with some modulesets for use with it.  Will check in the missing piece of the tool shortly.
a7d6fa4 Update settings-daemon package (fix version, inherit gconf) - this may have already been done.
150c1cc linux-oz-2.6: Fix a compile failure due to a broken patch
6e6b381 Added scripts dir
5599ea7 glibc: Limit the locales that are generated under qemu. Note this patch totally trashes the other locales and would therefore need refinement for OE.
c5b80f3 Add projects.o-hand.com/sources/kernel as a mirror for rpsys.net's patches
5bbdb03 avahi: Remove startup warning if dbus isn't setup yet
9ec8368 Set MAINTAINER for all poky packages to poky@openedhand.com
bce1a6b poky.conf: Update zaurusd SRCDATE to benefit from mixer fixes in svn
25f4662 Update debug packages to place symbol files in a .debug directory - fixes certain packaging problems
2e2d422 nokia770.conf: Add nokia770-init to MACHINE_ESSENTIAL_EXTRA_RDEPENDS
09fa84e poky.conf: Bump settings-daemon SRCDATE
da38b6e zaurusd: Add missing RDEPEND on xrandr
064c643 matchbox-poky: Remove references to chkhinge26 as zaurusd now handles this. Correct theme key and force gconftool-2 to run on device (at least until we debug other issues)
24a329f settings daemon: Set PV correctly and add inherit gconf
ba9da05 and bump up matchbox wm svn date more..
6dd8fe6 bump up libmatchbox svn date more
f14be9a nokia770.conf, ipaq-pxa270.conf: Update after task-machine changes
8ea8ee8 cmx270.conf, qemuarm.conf: Update after task-machine changes
6903177 bump up settings daemon src date
7e3efeb bump up matchbox-poky PR
5921a48 Remove setting of theme on MB command line, leave up to settings daemon
04f418b Comment out gconf schema bits in settings-daemon for now, this is done in matchbox-poky script
30c97f3 Add gconf schema for settings-daemon that sets the default theme
754b301 Add exec to home panel app script so PID gets set as expected and avoid panel timeout
4952c7e Totally rework task handling for machine/distro specific features. Create task-base.bb to handle this and update machine/distro files accordingly. MACHINE_FEATURES and DISTRO_FEATURES together combine to configure the machine specific task-base and other specific tasks can easily be created (task-base-oh-minimal is an exmaple)
36a7962 base.bbclass: Add base_both_contains function for use in task files
f059afd zaurus-clamshell: Add working JFFS2 summary image support
0dd5467 linux-oz-2.6: Sync collie defconfig from OE
35eef1a package-index: Make sure the Packages file exists before running ipkg-make-index
60493a3 rootfs_ipk.bbclass: Add context to reported errors
9ec06c2 linux-openzaurus-2.6.17: Fix some issues and make it the default kernel for Zaurii
d8201ad udev: Fix inotify ARM syscall issue, removing boot time warning
fd6ac12 readme.txt: Update to reflect setdevenv renaming (close #129)
e9f80c8 Add GPL/Copyright to poky-init-build-env script
e1c8064 add cmx270 macine to local.conf.sample, make qemuarm default
34154bf linux-openzaurus 2.6.17: Sync with OE .dev
031b783 poky.conf: Update versions after pango/atk upgrade
3288e5a pango: 1.10.0 -> 1.10.1
842dac1 atk: 1.10.1 -> 1.10.3
3e472bb base.bbclass: Add base_contains function - Can be used to check if a string is present in a variable.
2ca73b5 Add automatic generation of -dbg packages. These contain the debug symbols that are stripped from binaries and the symbols are linked to the original binaries via the gnu-debuglink section. If the -dbg packages are installed, oprofile and gdb will use them for symbol lookup.
23b93ce rootfs_ipk.bbclass, package-index: With the fixed ipkg-utils there is no need to remove the old Packages file when regenerating the Packages index. This gives a big speed improvement when regenerating images as it doesn't have to open every ipk for its metadata.
2153796 ipkg-utils: Fix a bug in the md5sum field handling and add some extra checks (md5sum, size) to ipkg-make-index when reusing data from the previous package file.
f75754d tinderclient.bbclass: Update from .dev
9cf2871 Add missing licence files (COPYING.MIT)
46c6968 Add a check for sourcing present when running poky-init-build-env
f6f9596 images: Change to new configuration
ee73bdc mtd-utils: Fix PV
96f994c really rename setdevenv
5b9a5c9 rename
dc0452c local.conf.sample: Update, cleanup and document a little more
440b33a Add task-oh-devtools and task-oh-testapps to oh-image, conditionally based on DISTRO_TYPE
64f45a4 poky.conf: Don't force DISTRO_TYPE to a value
bae63d3 conf/machines: Set IMAGE_FSTYPE correctly for each machine
c67f4bc Remove unused jornada7xx machine
d95941b Move tasks into packages/tasks, images into packages/images, remove bootstrap-image
b2f192f Rename /openembedded/ -> /meta/
2cf0ead Add linux-cmx270-rp
62e2fd8 Add initial cmx270 2.6.17 kernel
f1f7b60 Add initial cmx270 machine conf
37764d2 Bugfix in OEs base.bbclass: files in SRC_URI which reside in WORKDIR resulted in a failure.  With this bug fixed, patches within tarballs can be successfully applied to ${S}.
1b95f50 Bitbake: add the ssh fetcher to the MANIFEST.
29427c4 Add initial SSH fetcher to bitbake.
5e32494 poky.conf: Update dates to working SRCDATE (thanks chris\!), fix cairo and glib-2.0-native versions
4e93ecd correct LIBV
2ae56af provide pregenerated gtkbuiltincache.h
2ea49a8 correct libtool patch
35fa11f Added GTK+ 2.10.0 + decairofication patches
36a71a9 added pango 1.13.3
8d90789 Added cairo 1.2.0 as needed by gtk 2.10
eefc8d5 added glib 2.12 (needed for gtk 2.10 + decairoification patches)
1c3a546 bitbake.conf: Add PN to overrides, prefixed by pn- which will allow variables to be overridden on a per package basis from central conf files
c79b207 zaurus-clamshell: Disable summary image generation until we can use an mtd-utils that supports it
a74991b - Updates Dates svn package - Add Dates 0.1 package - Add gtk-icon-cache bbclass to run gtk-update-icon-cache in postinst/postrm - Update gconf class to add gconf to DEPENDS
5f3d79f poky: ipkg-utils update from upstream OE.  Locks down to a specific cvs version rather than floating, which seems to fix some issues with root filesystem population in the build.
9ddd9dc wireless tools: Update 28-pre6 to 29-pre10 to work with 2.6.17 kernel
dd126d2 linux-oz-2.6: Make 2.6.17 the default + add a missing 2.6.16 patch
f069fc7 poky.conf: Update to latest svn for contacts, dates, eds-dbus and gtk+ 2.6.8, glib-2.0 2.10.3
db9ae5b task-oh: Add less to debug images
669b994 Add less (for debug images)
d7a67ba eds-dbus: Simplify staging, remove bogus RDEPENDS, enable camel
0c5090c glib 2.10: Init gatomic before gconvert, fixing crashes on ARM
e1e6322 linux-oz-2.6: Sync with OE
3f812f2 Back-port calendar fix from r420, should fix Dates (which needs to be updated)
5426fb4 Add madplay to -extras and create an extras image to include apps in extras
81b93eb packages/meta: Make sdk its own target (oh-image-sdk), refine the oh-image-devel package
38a0601 Remove unneeded packages/meta files
ae58f06 linux-openzaurus 2.6.17: Upgrade to latest ASoC fixing several bugs and enabling audio input on the c7x0
a50a614 poky.conf: Use only en_GB locale and set zaurusd SRCDATE
bdf4309 Make linux 2.6.17 the default
31997b7 Add lttng-control 0.10
0f6afae task-oh: This has no need for the := operator and which breaks things
d4bed91 Simplify zaurus-clamshell-.2.6.conf as package dependencies should handle this for us
7f2982d setdevenv: Update sed to make mutliple replacements in local.conf.sample
8c5be6e xserver-nodm: Run the script in the background so if xtscal locks, the rest of the boot process continues and you can get to a shell.
7869b57 Add linux-openzaurus 2.6.17
4132659 matchbox-poky: Fix postinst to cowkr without gconftool-2 being present on the build machine
51fecbd Remove bad translations from gnome-vfs-dbus and gconf-dbus (to build with newer glib)
f3cf5ee Add glib-2.0-native 2.10.3
0d229f1 Inherit gconf in Web package to install schemas properly
8ba09ff Upgrade glib 2.10 to 2.10.3
06b20b3 Add maxdate for disable_orbit.patch
22cd912 linux-oz-2.6: Sync with OE. Includes .bb cleanup, patch classification and poky specific logo handling
7b663c1 task-oh: Move mb-desktop into oh-standard
81ccbbb task-oh: Bump PR
c2cbe58 nokia770: Remove detect-stylus
35efc29 tslib: Bump PR
26e03c0 task-oh: Move leafpad to task-oh-standard
46c37c1 xserver-nodm: Fix the calibration issue by reading the system profile
27c8223 udev 092: Fix various issues
b738942 die detect-stylus die
d1d8277 tslib: Remove hardcoded input event devices and detect-stylus
558f9a2 Add udev 092
01db914 poky.conf: Add poky.bbclass and add to standard mirrors
2f8d4c9 lttng-control: Cleanup .bb file
74858ca base.bbclass: Add gnutls mirrors (from OE thanks to hrw)
db303b7 poky.conf: Add an OH TARBALL stash.
243e32f Add linux-nokia770 kernel from OE
7708e32 Remove unneeded rdepends, and change libiconv depends to virtual/libiconv
aa5bd2c xserver-omap: Force a shared library configuration (and enable xdmcp)
319e4ef puzzles: Upgrade 6505 -> 6727
e020995 Add xrdb
41abfc2 web: bump SRCDATE to 20060613
8a3e00f detect-stylus: Add for now until I teach udev how to do this instead
156c652 task-oh: Correctly set PACKAGE_ARCH
d88be44 poky.conf: Bump SRCDATE for all matchbox packages to today
9077aef libmatchbox: Enable startup-notification
8425269 task-oh: Fix task-oh-standard to append zaurusd properly
bc8ad1b bitbake: Update against upstream stable branch (includes srcdate='now' support)
65cef0d poky.conf: Update matchbox-keyboard SRCDATE
bdd7bdd kernel.bbclass: Add a postinstall for kernel-image to make sure the corrrect /lib/modules directory exists and to run depmod. This removes modprobe errors when no kernel modules are installed.
deba905 poky.conf: Allow PCMCIA_MANAGER to be overridden and bump matchbox-keyboard SRCDATE
0e376c1 matchbox-poky: Remove .svn directories from package
9681ef6 Add matchbox-applet-volume 0.1
b200c92 * openembedded/packages/gtk+: added gtklabel-center.patch
59a49d9 Remove multimachine workarounds now uneeded after the previous checkin
439db20 Change multimachine to a bbclass and update distro configurations. Add multimachine functionlity to cope with packages with machine specific sub packages. Also applied to OE
c74733f Fix summary image generation
25fc12c xserver: Sync with OE
a50e1d8 linux-libc-headers: Sync with OE
3097ab0 Sync conf and classes with OE - changes have been tested and don't affect poky
b77fcc0 Update site files from OE
6c224ad qemu: Update to more recent CVS date and remove no uneeded docs patch
3558352 linux-openzaurus.inc: sync with OE
a9a3f11 gcc: sync with OE
e98e60b fakeroot: sync with OE
f559aff wireless-tools: sync with OE
6b604c3 xournal: sync with OE
4de2c49 matchbox-keyboard: sync with OE
f2079fd ncurses: sync with OE
4dd498d xrandr: sync with OE
2af7864 hdparm: sync with OE
fba8f7a keymaps: sync with OE
170a50c base-files: sync with OE
3664700 udev: sync /dev/ram changes with OE
2feda9d Add mc to openembedded-extras
3108df8 libdaemon upgrade 0.6 -> 0.10
1cd2445 Create openembedded-extras collection. Disabled by default - see local.conf.sample about how to enable
39811ea qemuarm: No longer generate ext2 images
0a6997f poky: Add some preferred provider defines and clean up the distro file a bit. Should be no behaviour changes.
553b409 Change db-native 4.3.29 -> 4.2.52 to match the none native version
3ed0468 Remove manifest code from base.bbclass, fixing the error shown by the puzzles .bb file
88a2a44 Drop db 3.2.9
efaee39 Fix cvsroot
1cc8b97 libtool: Fix breakage if the compiler flags change
ff5ff97 poky: Update to a more recent srcdate for matchbox-keyboard
3f4947c js: Set soname so the package shlibs code works properly, fixing problems with web
a187ca1 Set oprofile SRCDATE
cc5ca2f linux-openzaurus: Hack integrator to work in RGB mode instead of BGR
0ef1286 tune-arm926ejs: Add comments and switch the default to gcc 3.x
f326127 qemu: Add patches to add RGB support and fix some mouse problems
7defc58 Add python+pyhton-pygtk2
632eaf4 lttng: Update lttng-control 0.1 -> 0.6, lttng-viewer 0.34 -> 0.41 and remove now unneeded lttng-modules
d9fe26c qemuarm: Generate bzipped tarballs as well as ext2 images
1aa816c Upgrade glib 2.8.x to 2.8.6
7b6ec71 poky: Increase the size of the ext2 rootfs
36efd02 poky-oabi: Add preferred versions for gcc and binutils
4db4ee4 Add make
fd320cb Add file (and file-native)
fe4f9d5 Add xset
a1c2556 avahi: upgrade 0.6.3 -> 0.6.10 (and fix the postinst to run on device)
ad4b746 Don't run touchscreen calibration if a touchscreen isn't configured
a21cef8 matchbox-poky: Allow the cursor to be shown when using qemuarm
0457b7c Add task-oh-sdk and add it to oh-image-devel
e17429e task-oh: Add xset
b60d5e0 linux-openzaurus: updates
1827415 gcc 4.0.2: Fix DEPENDS
cd21247 Add udev 089 and add /dev/ram to udev autmount blacklist
fe23e86 Add binutils 2.16
dc9a195 Work around some multimachine issues for now
b9d1ce9 task-oh: Make zaurusd machine specific (its not needed for nokia770 and causes problems with tslib)
c9fb913 Provide a path to pkg-config to fix a build failure
7cf612e poky.conf: Make ABI configurable with POKYMODE (oabi or eabi)
b1391d0 xserver-kdrive: Add some extra configure options and LDFLAGS (from OE). I'm not sure why we suddenly need them but they make it compile.
ce6cc8a Add leafpad 0.8.9 and fix leafpad depends. Also add some missing patches
14fbb7c Add pcmciautils 013
30285dd More packages merging with OE
103c851 Merge distro files from OE
65c790d Update conf file to match packages changes
8cab54b Add zeroconf from OE
b4cb437 Merge packages changes from OE into poky.
3baacb4 Add libnss-mdns (for avahi)
c4aeea0 busybox 1.00 -> 1.01
d097b90 Remove glibc and binutils cvs versions
62d7919 automake: Sync with OE
ba7e2a0 Further site and class updates from OE
572f07a mtd-utils: Upgrade 20050801 -> 20060223
8e898fe Add EABI toolchain
8100c3d poky-oabi: Lock down some further versions
d165778 Don't switch to EABI yet
6b703b1 Sync kernel module utils with OE (needed for kernel.bbclass changes)
2622e93 Sync site files with OE
189b9a9 Sync bbclass files with OE
8d41bd1 Sync conf files with OE
0d791a9 poky: Split toolchain options into new files to allow selection of EABI. Bump dates SRCDATE, lock down the xserver SRCDATE.
27dba1e Update to bitbake 1.4.2 (latest stable branch release). This includes the caching speedups
ed234ac Add accidentally remove xrandr
e7a22e9 xserver-kdrive-common: Remove .svn directories from final package
0be2864 Update gtkhtml2 package for Web
a7bfafd Fix dates SRC_URI/S
9629885 Patch to disable G_DISABLE_DEPRECATED for libglade, to build with glib 2.10
78cf831 Patch gconf-dbus to build with glib 2.10 (don't define G_DISABLE_DEPRECATED)
e1256b9 Add gtk 2.6.8, with Ross's no-deprecation patch to build with glib 2.10
ed0ece5 Ignore pyc files in lib/bb/fetch
65eed7a Ignore pyc files in lib/bb/fetch
ebc8057 poky: Lock down qemu-native cvs date. Correct xcalibrate SRCDATE
19ecdfd Add ipkg to task-oh-base
b876d65 xserver-kdriver-common: Fix reference to xrandr
2b24cb3 xrandr - Remove as replaced by libxrandr
09f35c3 qemu-native: Update nodocs patch against cvs changes
f3d7f8c Move gdk-pixbuf loaders and pango-modules in oh-base
a9f1e28 task-oh: Move ttf-bitstream-vera, xhost and xauth to be in minimal images (fixes minimal image booting issues)
6618118 remove borked 0.16 libxsetting-client
4c4b4bf Add multimachine.conf and binary locale generation by default
2da7286 Fix a linux-openzaurus issue and remove ${MACHINE} from IPKG_ARCHS (its added automatically)
992b477 oh-image metadata rearrangement to support minimal images. Minimal target is oh-image-minimal
aa11773 oe/packages: Remove borzoi machine
7891376 oe/conf: Remove borzoi machine
38f54bc hostap: Sync with OE
a23e7ee linux-openzaurus: Remove 2.6.15 and sync 2.6.16 with OE
be7c4ce qemu: Fix nodocs patch and remove show cursor patch.
46950b4 glibc: Add binary locale generation from OE. Adding ENABLE_BINARY_LOCALE_GENERATION = "1" to local.conf will enable the locale generation to be performed at build time using qemu which avoids length first boot times and OOM errors on the device.
db8ae0a qemu: use gcc-3.4 or gcc-3.3 if available, disable doc generation, show a cursor on the SDL window (from mallum, tweaked by me)
dbc24a8 libxsettings: Include libxt in DEPENDS as without it, configure pulls in system directories, corrupts its .la files and breaks later packages. Also add version 0.16 from OE.
24b8210 Fix a reference to OEPATH instead of OEROOT spotted by Genesis in #oe.
c597a2e Update xlibs to follow restructuring in OE (in preparation for X11R7)
05ff314 Clean up local.conf.sample and poky.conf some-what, use '?=' instead of '=' so all variables can be overriden locally.
2715d18 Add latest cairo (1.0.4)
15484b8 Update gtkhtml2 and Web packages
d614461 Use FREEDESKTOP_CVS instead of a hardcoded address
b14d256 Remove empty directories
b783a3e Move xlibs packages to xlibs/ as per changes in OE
63e2f3e Misc changes to match OE
00f5d77 linux-openzaurus: Sync with OE
e847fd9 zaurus-updater: changes from OE
7f60e4b Sync initscripts with OE
5d530ad Update hostap packages from OE
1494095 base-files: Sync with OE for spitz fix
bb28692 Sync class files with OE
b3f42b7 Sync conf files with OE - includes adding zaurusd to images and fixing PCMCIA_MANAGER handling
f7f5460 Dropbear 0.46 -> 0.47
f72d3a8 Add 16bpp fix for libmatchbox for qemu
8742116 Unbreak accidental xserver checkin
91a5b96 Add LTTng packages
1a630d6 glib-2.0: Remove libiconv option as this breaks for everyone except chris
1858d5d Split development tools into separate task and add new oh-image-devel target
a37f24f nokia770 machine fixes
168d643 Update tslib-maemo from OE
b4352e5 Add 2.6.16 kernel (and include SD card SCR workaround)
d843bd3 Remove unused and crack-ridden patches
9b440f7 Remove libcurl and js, web should bring those in
0eeb77b Add gcalctool
9f91026 Depend on dbus, not dbus-0.60
91a8ba4 Remove DBus 0.50
884f570 Remove dbus 0.23
3d54063 quilt, autoconf, automake: Correct native package RDEPENDS
14ed125 Add missing file
b26a945 Update to latest bitbake
3cd47ad Add new sanity checking infrstructure and class
78c5069 bitbake: Fix a couple of VAR_${PN} errors reported by ross
8f696d3 Remove dead code
62d5286 Upgrade GTK+ 2.8.9 to 2.8.16
e917da2 Add Pango 1.12.x
f12c6c6 Add GLib 2.10.x
b58756b Remove dead comment
e26a3e2 Add Xournal
a33fc07 Remove invalid depends
cabdbad Don't assume diet-libx11 has been used, check at build time
e65bb68 Add libart-lgpl
a3d76d6 Add libgnomecanvas_2.6.1.1
2134d4a Add patch for the treeview in scrollview bug in 2.8
03026fc Bitbake conf updates from OE
3ddfbc7 Bitbake classes updates from OE
e6c95ae linux-oz-2.6: Add kernel patch to fix rtc on the arm integrator
a03e220 Add qemuarm kernel configuration
04e0939 Add qemu cvs .bb files
7361a54 Add qemuarm machine type
10ec0bc hal: Disable docbook generation.
c4ee3a1 udev: Make 084 the default
c540e44 Add genext2fs
bcd3612 Add zaurusd (remove devmand).
15ea96f autoconf-native: Clear invalid RDEPENDS for -native package
485477e Add multimachine changes from OE
157ff6f Add devmand .bb file
e6dc152 linux-oz-2.6: Revamp headphone jack switch handler.
92129ba tslib: Make sure pkgconfig file is handled
d2387e1 - Fix glib 2.8 building - Add pcmanfm to task-oh - Add .desktop and icon for pcmanfm - Add missing icons required for pcmanfm to run
cb92e3d Missed one gtk_tree_row_reference_get_model in patch (somehow this still compiled...?)
2b7e731 - Add gtkhtml2 SRCDATE to poky.conf - Update to glib 2.8 in poky.conf - Add back-ported pcmanfm (this seems to segfault on the device,   backtrace needed)
deb4dd0 Fix libcurl RPROVIDES, update gtkhtml2 patches and add web to oh-image
aaeed35 Add miissng file for perl
d0bf2b3 Fix an bitbake RDEPENDS bug and add a hack to work around quilt-native issues (the alternative is to start creating a load of native packages to map the runtime depends to build time ones).
a677585 add missing file for hostap-conf
c66704c Various misc metadata fixes to enable poky builds again
5fb35ca Apply more chanegs from OE
42dfbb2 Sync more files with OE
dd1b443 Pull conf file updates from OE
ce241d7 Update to 1.3.3 release of bitbake
b236090 Convert packages CVSDATE -> SRCDATE and standardise some PV fields
6be98ee zaurus-updater: Updates from OE
31116d6 Update bbclasses from OE
9df0203 packages/meta updates after pulling RDEPENDS changes from OE
e068eea Update bitbake to latest bitbake svn
c6a95b3 linux-oz-2.6: Update defconfigs to sync with OE
62dc8f4 Update bitbake to latest bitbake svn
9a26296 Add db 4.2.52 bb
ab72fb9 Move files into trunk to prepare for tagging.
8d190ac Update contacts svn date
16da0a2 linux-oz-2.6: Reference all patches in the archive directory
e745d17 chkhinge26: Improve the script so its less verbose
ce6bf88 base-files: correct spitz fstab for /dev/hda3
fad9c3d Fix contacts icons once and for all?
f54968c Fix SRC_URI of lsof (add OLD/)
d452ba2 Add lsof
4fbba63 Add curl (new dependency of Web), fix a fontconfig-native build issue, update gtkhtml2 patches and update to a newer more functional Web snapshot
ef60244 Switch back to gtk+ 2.6.7
f4881f3 udev 084: Fix the firmware_helper path
6753d5b linux-oz-2.6: Kernel updates syncing with OE to update the LED patch series and add some misc bugfixes
4a64818 Update to udev 084 from OE. This adds a coldplug script to emulate the calls necessary to load devices already inserted into the system at boot. It also adds a network interface control script.
bc4e7ed Add lirc
da8ed28 Add libsoup, libspidermonkey, libxml2 cvs, patched gtkhtml2 and web packages
27700c9 Fix db 4.1.25 building with eds-dbus, breaks db3/db4 co-existence
96c29fa Revert my change, gnomevfs needs gnome-mime-data to build
275e035 Fix link
c73514c Update eds cvsdate, and fix build
707c6ce Remove gnome-mime-data, it's old-school
6c96daa Take patch from upstream to check Xlib instead of Xt for X presence
88565a7 glibc: Sync with OE to pull in glibc cvs workaround
a4b1aab Add gtk-update-icon-cache to FILES_${PN} for gtk 2.8.9
a44b79a Add db 4.3.29
25e1fcc disable cairo usage
6b0f293 Fix xauth cvs date (all packages should be fixed by date now)
e01b8f3 matchbox wm, desktop and lib: switch to svn date 20060120
c0c1bdc Add missing disable_orbit patch for eds-dbus
07b2d77 linux-openzaurus: Switch from 2.6.14+2.6.15-rc5 to 2.6.15
7953d83 Disable the need for orbit AM marcros for eds-dbus (and fix some whitespace)
ccc65d0 Update poky.conf to move to dbus-0.60 along with the appropriate dbus versions of gnome-vfs and gconf. Also fix the CVSDATES of those packages to known working ones.
8fcb232 Tweak gnome dbus packages slightly. gconf-dbus_cvs is broken for parallel_make. gnome-vfs-dbus_cvs is not the preferred version and we don't want to depend on samba for gnome-vfs-dbus
6af7d32 Remove oprofile and gdb from meta-oh for now. Will add to a separate debug task when we pull the new task handling code from OE
f128b1c Add dbus 0.60
00f73b9 Add avahi 0.6.3 abd renive 0.5.2 and 0.6
7c37c29 Remove pointless oh-contacts/dates.png lines
eeb0244 Add gconf-vfs_svn and gnome-vfs-dbus_2.8.4.4.bb from OE and add gconf-lossage patch.
3f4950c Use the install path when generating icon caches
33bc34b Fix depends on Contacts (add gnome-vfs)
23604bc openswan: Bump PR
10c13b7 openswan: Add makefile whitespace fix from OE
bd813f4 Update
5575ec3 Update patch
35af394 Disable hal usage in gnome-vfs
05b21a5 Update puzzles package (source for r6358 no longer exists, updated to r6505)
6e61ee3 Set gnome-vfs-dbus CVSDATE before dbus 0.60 update, enable contacts gnome-vfs usage again
fb9fa71 Don't ignore CVSDATE with svn check-outs
f0ecf5b add gtk+2.8.9 and eds-feed (galago)
f2bf936 Remove gnome-vfs dependency from contacts (for now) and add oprofile
a096c66 Add gtk-engines (untested, DEFAULT_PREFERENCE set to -1)
18999bf Some PACKAGE_ARCH changes to help mutlibuild and misc
6b89cc1 Some PACKAGE_ARCH changes to help mutlibuild and misc
01a805c Set version correctly on Contacts svn bb
77e1cf0 Update gnu-config from OE
569aea6 Update quilt packages from OE
e752d6f Fix bitbake svn fetcher filenames
597f73e Add packages for Contacts 0.1 and svn
e7cf0cc Correct osso-address book dependencies, add oprofile to poky images, switch to htk+ 2.8.9
e96e69a galago-daemon: fix packaging
af9c7ea Fix gconftool call
a1ece60 Add avahi
47eec0a Add Alsa support to poky
b38f2a5 Merging with Openembedded
8ae1a27 Add osso-addressbook
d37555f Switch to pcmciautils instead of pcmcia-cs. Remove the unneeded pcmcia-cs dependency from nokia770.conf
748927f Allow internal kernel hostap module to be used
c116253 Correct spitz/borzoi fstab entries
4240633 Update hdparm, initscripts (keymap), module-init-tools
4946096 Update to latest 2.6.15-rc5 kernel
8ddcda3 Update to latest 2.6.15-rc5 kernel
8fd5843 oe/packages Updates from Openembedded
3c470b4 oe/packages Updates from Openembedded
f0702a2 oe/classes updates from Openembedded
9e7c699 oe/conf updates from Openembedded
cb216ac Sync args to svn
f8f6ddf Make poky a distribution in its own right solving several issues. Unfortunately this means everyone needs to change DISTRO=openzaurus-3.5.4 to DISTRO=poky in their build/conf/local.conf files.
e5ba6f2 Add gmp and mpfr (needed by gcc 4.0.2)
1a5f0fe Add gcc versions 4.0.2, 3.3.4 and 3.4.4
f0d9a38 gdb: remove arm mapping symbols
d4f985f GCC 4 fixes for pcmcia-cs and openswan
7183f62 Update PV format for several matchbox packages
5975a43 dates: run gtk-update-icon-cache on device after install
e3d7629 Update patch
64725e1 Add accidently removed module-init-tools bb file
722f400 Add postinst to run gtk-update-icon-cache
fddef42 Add postinst to run gtk-update-icon-cache
59f9832 Include gtk-icon-cache in gtk package
ab13c9b More merging from OE
1b7578f Add some svn:ignore properties for local.conf, *.pyc and build/tmp
925c447 Updates from OE
46b6d82 Correct the fstab file on spitz
e9bd2a7 kernel updates to enable iwmmxt, update power/battery management patches and reorder patches to match mainline submission. Also, defconfig updates for unloved machines
b265ed4 Update poky-additions and gpe-preferred-versions so everything should work after the bitbake fix
d910c67 Update bitbake to use package name as an override when working out PREFERRED_VERSION
36223e6 Really correct poky-additions and add some further entries
c747387 Correct poky-additions
93b34b7 disable howl, enable hal at least for now
2707128 add shared-mime-info for hal
5764026 Remove gnomevfs patches, finally pushed them into svn
b6858e3 add libusb for hal
1b134e4 Update the kernel .bb against a good copy rather than one broken by monotone
923c1b0 Remove linux-openzaurus-2.6.14-rc4 and add hal
9a725b7 Update git3 kernel to have working alsa support for both c7x0 and cxx00 :)
5de252f udev: Upgrade to 071 - fixes /dev/input problem with -git3 kernel
3ddb212 xserver: Add apm patches for spitz, akita and borzoi (fix lockup ross saw)
8ac2aa5 Add hdparam and e2fsprogs so spitz images work
a618277 Update poky-additions to lock down matchbox svn versions. Change the CVS dates in this file when svn changes to enable updates - better than rebuilding daily
c0de0e6 Add linux-2.6.14-git3 kernel. This only works on cxx00 Zaurii at the moment.
a521203 eds needs to rdepend on dbus-1, not dbus
dbc46ce Update for svn
48eeea5 Add hack patch to totally disable the libdb configure script
f7a060b Update patches for latest SVN
d1dae06 Add gnome-vfs-dbus (builds correctly, but untested)
9ad36d4 linux-oz-2.6: Update to OE's dev kernel with akita updates
c204a1d Add https://bugs.freedesktop.org/show_bug.cgi?id=4537 faster rotated blits patch
4efc667 Remove external_libdb.patch, its integrated into SVN
2cd1383 Fix paths to theme files
47f4e33 Add patch to remove libedataserverui, we don't need it yet
700c2d4 Fix patches for latest SVN
b65b0de Fix kernel for cxx00 machine type
d3e6b49 Correct the name of the hx2750 defconfig
d67f910 Add akita.conf machine definition
70f1fb9 Set gconf key for theme name on install
11c91fb Add galago/libgalago from OE
c54a8ad Rename to match general use
1651d41 More merging with OE. Fix settings-daemon depends.
ea7da1d More merging with OE. Fix settings-daemon depends.
42974a1 Add whitespace, made this script work for me
ab4b8cb Upgrade avahi to 0.5.2
bfea252 More syncing with OE, remove old dbus versions and old avahi version
757723a Sync svn version numbers with OE
d153ad5 Add OE version of avahi (0.5.1)
cbf3ef9 Merge changes from mainline OE to try and keep us in sync.
562d4d3 matchbox-session: Bump PR
4c10a4f matchbox-session: Make the input controls machine dependent hence adding support for the nokia770.
7469e31 Add libgtkhtml-2.0
bab7394 Fix icons again
5ab96a1 Fix typo (mine -> mime)
94a3b01 Update patch for latest svn
ebd7471 - Remove /etc/gtk-2.0/gtkrc that forced Clearlooks - Make matchbox themes without a corresponding gtk theme use Clearlooks - Add settings-daemon, matchbox-config-gtk and leafpad to meta-oh - Add settings-daemon - Add matchbox-config-gtk - Change Leafpad desktop shortcut from 'Leafpad' to 'Notes'
9f6a0e0 Define FRAMES for dates so less interpolation is done between zoom transitions
a5a5de3 Switch chkhinge26 to svn
63af8b0 Hack to fix apparent theme race
c3acfc2 Add zile
df9088c Add leafpad and chkhinge26 to meta-oh
a9c1d9d Fix a path
86ac592 Remove some gtk 2.6.7 patches aimed at 240x320 screens that make things look ugly
c9b9b5b Add leafpad, a simple gtk text-editor
2b873fe Add opensync file plugin, fix evolution plugin do_install/package
127e3d5 Add opensync (builds, untested)
d3fcc57 Add chkhinge86 to matchbox session for now
17cab4c Hack up the handler some more so it roughly works
6a6723b chkhinge26: Correct variable
c632d3e added chkhinger26
96b751e Apply e-cal-backend-file.c patch to eds-dbus svn
e6e8274 Fix contacts icons (install some of gnome-icon-theme with contacts)
e24bd61 Modify calendar file backend not to use gnome-vfs (Dates works now)
9556356 fix type in bb
d39fbf0 fix cursor visibility with sledgehammer that is -use_cursor no
7b675ac Add .desktop patch to fix category and single instance
00308d4 Fix broken matchbox-session
f852fdb Use clearlooks as the default theme (and install it in oh-image), fix rxvt .desktop category
772002e Add single instance flag to puzzle .desktop generation
0974155 Install rxvt-unicode icon into ${datadir}/pixmaps so matchbox can find it
5216f94 Remove startup-monitor from applets list (I mistakenly put it there previously)
facfebe More tweaks - set bg and start startup-monitor
4f60df5 improve desktop icon layout
43749db Make home button get positioned correctly
cbd26ee Add Clearlooks default theme
7d6ca97 Package the icon for dates and contacts, add svn version of matchbox-themes-extra
fbf2ef9 Change db to 4.1.25, update PR's across the board
c125456 Get rid of too small panel icons
5c896a6 Add puzzzles icon.
b86b4ae Add minimo (+ deps: zip, libxi). Update puzzzles to include icon. Update meta packages with new programs.
06b04dc Add .desktop for rxvt
ac134c0 Add 'home' button to panel hacks
f33f340 Add no_gnomevfs2.patch
20c9cf2 Use the result of make dist for contacts, also remove unnecessary define
483a3a3 Remove input manager from session quickly (no PR bump)
8f39e0f Add input manager and startup monitor to poky matchbox session
4504f45 Add contacts
eca9d2d Fix puzzles (CFLAGS_prepend doesn't work?)
09af20e Add dates
9243bc3 - Fix gconf staging to install into the right directory - Complete eds-dbus staging
812ddef Bump PR of matchbox-themes-gtk + other meta files
5708e94 dbus-native: Fix staging
8ae5989 Fix packaging for eds-dbus
17a9900 Fix dependencies
b3be064 Correct eds to eds-dbus and puzzles-desktop is only an RDEPEND
0bba7f8 puzzles: Add desktop files as a new package puzzles-dekstop. Add this to meta-oh + bump PRs
3ed2b08 puzzles: add gtk+ dependency
eca14a6 Add matchbox-applet-inputmanager and matchbox-applet-startup-monitor from OE
83055e0 Update with new package additions
6fb3b69 Add kf, a gtk jabber client
6cc949a Add puzzles
6ff6f31 Add staging for loudmouth
1544e4d Add clearlooks
16d78a9 Add gnutls and loudmouth
137a629 dbus-native: Completely stage the package
c309ab8 eds: More updates to try and get it working
156e5b0 eds: Update so it manages to configure. To do this: * soup needed to be disabled * an external db was used  which required hacking in * some iconv tests were removed - this now causes a compile failure - suggest copying in a rigged iconv-detect.h file for now * it couldn't find the gnome ac macros - added path to acpath * updated depends and rdepends * disable some references to libgnome * disable some references to gnome-vfs
2c5ba6f Add missing new packages to meta-oh
71c9c36 Add gnome-common for eds-dbus
3fab5dd Add libiconv for eds-dbus as its looking like it will need it
df2cf2f Add libfakekey for matchbox packages
fddaad5 Add libglade for eds-dbus
cb47354 Add usbinit hack to get usbnet connection on 770 (will replace with udev in due course)
dd2bd62 Update with extra mb stuff
138dbc6 Improve matchbox defaults
f66ce7e base-files: correct nokia770 fstab
ec2f15d Change to rxvt-unicode
ae628e5 Add missing matchbox packages
c335f42 Add xserver-nodm-init script, add udev+sysfsutils to meta-oh, fix typo in xserver-kdrive-common. The script calibrates the ts and starts the xserver but probbably does more than it should have to.
66e9ae7 Add post processing command for nokia770 to correct init problem
9c41ac0 Add post processing command for nokia770 to correct init problem
570ff4f - Bump PR in matchbox-wm - Define X_LIBS in libxsettings-client and startup-notification to stop them   adding system dirs to the library path - Add do_stage to matchbox-desktop
b433acd mallum is a lemon and cant name files correctly
d4b04a5 Add matchbox-poky to oh-meta
13b1438 Add matchbox-poky setup
707eced bump up PR
64ce26b Add Xsession.d file for window manager. Make server DPI more truthful in Xserver
607b12a Add strace, gdb and readline. Update meta-oh.bb to match this.
4a6c9c2 sanitize mb svn bb a little
69ec021 Account for bitbake's broken dependency handling - must only RDEPEND on subpackages
4ab809c Disable pango support in libmatchbox, add gconf dep and enable gconf in matchbox-wm
cce4f66 Add gdk-pixbufs and pango-modules to meta-oh
57ea7b3 - Use gtk 2.6.7 as opposed to 2.8.3 - Use dbus 0.50 as opposed to 0.36 - Use svn versions of matchbox apps - Update matchbox svn packages - Add matchbox-common svn package - Build gtk tools with gconf
cf9d959 *really* disable gconf-dbus
f7b6fee Disable gconf-dbus for now
ac9e4d6 Add missing gnu-tar.gz file
26a96fc Updates against mainline OE to fix various issues and make builds work again as a couple of poky changes got lost
d18457f Add eds-dbus package (doesn't work)
8d66edc pcmciautils and udev updates. Slowly aiming to get rid of hotplug and pcmcia-cs
b4a7122 Updates against mainline OE
f9e1d16 Add new version of the Zaurus kernel
0a28d7e Add gconf-dbus
72d61f6 Remove avahi from the image until ipkg can handle it correctly. Tweak spitz kernel generation.
6fa80cb libgtkstylus: correct SCR_URI
25c3c69 Update for new upstream. I am now l33t OE hax0r\!
975a1ba Add ross's libgtkstylus
3e846ba Updates against mainline openembedded + removal of some unneeded files
c49400d fix 'if not set then' login in poky-additions.inc
305ac49 Add initial poky prefered versions and naming tweaks
255a4ed Remove gtk xsettings patch. Add dbus 0.36
6de1ae1 Add my comments
893d28f adjust used patches, add README with some thoughts on patches
95efeaf Add gtk+, avahi, dbus-0.34 (.36 coming soon) and dependencies. Fix x11-common breakage.
7755d9d rename x11-common to xserver-kdrive-common
962491e Add x11-common
9ed0d2a Add some extra packages to the image
047f13b Add some notes to README
eb7df84 Add nokia770 documentation
f32bed3 Add nokia770 machine support files
a716d99 more local.conf rejigging
ceb7167 also update readme
8e65c87 Make setdevenv automagically setup local.conf if it dont exist
d3fa3b8 Remove some inappropriate binaries
f54da73 Initial population
4b46c1f Initial population
REVERT: 23f0539 kernel-fitimage: Use compressed ramdisks in FIT images if available
REVERT: 4cf1170 kernel-fitimage.bbclass: Don't assume KERNEL_IMAGETYPE == fitImage
REVERT: 42b1eac kernel-fitimage.bbclass: Allow unset load/entry addresses for ramdisks
REVERT: 5f6a847 kernel-fitimage: add initramfs support
REVERT: 0b63126 kernel: fitimage: support device tree compiler options
REVERT: 545a471 kernel-fitimage.bbclass: do_assemble_fitimage(): cd to $B
REVERT: 0a8f54b kernel: Add KERNEL_IMAGETYPES to build multi types kernel at one time
REVERT: cdf83a5 util-linux: Disable bfs support
REVERT: 696cea9 util-linux: Disable minix support.
REVERT: 7260fb8 yocto-poky: Move to import-layers subdir

Change-Id: I9e01c95e348eec199c1f73ef42bad62e8772eca0
git-subtree-dir: import-layers/yocto-poky
git-subtree-split: 876b0ccf06b40a98f8ff1b08ad74e695c4f8b64a
Signed-off-by: Saqib Khan <khansa@us.ibm.com>
diff --git a/import-layers/yocto-poky/README.hardware b/import-layers/yocto-poky/README.hardware
index 9c74c5d..d7e24d2 100644
--- a/import-layers/yocto-poky/README.hardware
+++ b/import-layers/yocto-poky/README.hardware
@@ -77,31 +77,22 @@
                       ===============================
 
 
-Intel x86 based PCs and devices (genericx86)
-==========================================
+Intel x86 based PCs and devices (genericx86*)
+=============================================
 
-The genericx86 MACHINE is tested on the following platforms:
+The genericx86 and genericx86-64 MACHINE are tested on the following platforms:
 
 Intel Xeon/Core i-Series:
-  + Intel Romley Server: Sandy Bridge Xeon processor, C600 PCH (Patsburg), (Canoe Pass CRB)
-  + Intel Romley Server: Ivy Bridge Xeon processor, C600 PCH (Patsburg), (Intel SDP S2R3)
-  + Intel Crystal Forest Server: Sandy Bridge Xeon processor, DH89xx PCH (Cave Creek), (Stargo CRB)
-  + Intel Chief River Mobile: Ivy Bridge Mobile processor, QM77 PCH (Panther Point-M), (Emerald Lake II CRB, Sabino Canyon CRB)
-  + Intel Huron River Mobile: Sandy Bridge processor, QM67 PCH (Cougar Point), (Emerald Lake CRB, EVOC EC7-1817LNAR board)
-  + Intel Calpella Platform: Core i7 processor, QM57 PCH (Ibex Peak-M), (Red Fort CRB, Emerson MATXM CORE-411-B)
-  + Intel Nehalem/Westmere-EP Server: Xeon 56xx/55xx processors, 5520 chipset, ICH10R IOH (82801), (Hanlan Creek CRB)
-  + Intel Nehalem Workstation: Xeon 56xx/55xx processors, System SC5650SCWS (Greencity CRB)
-  + Intel Picket Post Server: Xeon 56xx/55xx processors (Jasper Forest), 3420 chipset (Ibex Peak), (Osage CRB)
-  + Intel Storage Platform: Sandy Bridge Xeon processor, C600 PCH (Patsburg), (Oak Creek Canyon CRB)
-  + Intel Shark Bay Client Platform: Haswell processor, LynxPoint PCH, (Walnut Canyon CRB, Lava Canyon CRB, Basking Ridge CRB, Flathead Creek CRB)
-  + Intel Shark Bay Ultrabook Platform: Haswell ULT processor, Lynx Point-LP PCH, (WhiteTip Mountain 1 CRB)
+  + Intel NUC5 Series - ix-52xx Series SOC (Broadwell)
+  + Intel NUC6 Series - ix-62xx Series SOC (Skylake)
+  + Intel Shumway Xeon Server
 
 Intel Atom platforms:
-  + Intel embedded Menlow: Intel Atom Z510/530 CPU, System Controller Hub US15W (Portwell NANO-8044)
-  + Intel Luna Pier: Intel Atom N4xx/D5xx series CPU (aka: Pineview-D & -M), 82801HM I/O Hub (ICH8M), (Advantech AIMB-212, Moon Creek CRB)
-  + Intel Queens Bay platform: Intel Atom E6xx CPU (aka: Tunnel Creek), Topcliff EG20T I/O Hub (Emerson NITX-315, Crown Bay CRB, Minnow Board)
-  + Intel Fish River Island platform: Intel Atom E6xx CPU (aka: Tunnel Creek), Topcliff EG20T I/O Hub (Kontron KM2M806)
-  + Intel Cedar Trail platform: Intel Atom N2000 & D2000 series CPU (aka: Cedarview), NM10 Express Chipset (Norco kit BIS-6630, Cedar Rock CRB)
+  + MinnowBoard MAX - E3825 SOC (Bay Trail)
+  + MinnowBoard MAX - Turbot (ADI Engineering) - E3826 SOC (Bay Trail)
+    - These boards can be either 32bot or 64bit modes depending on firmware
+    - See minnowboard.org for details 
+  + Intel Braswell SOC
 
 and is likely to work on many unlisted Atom/Core/Xeon based devices. The MACHINE
 type supports ethernet, wifi, sound, and Intel/vesa graphics by default in
@@ -136,53 +127,14 @@
      device, but the idea is to force BIOS to read the Cylinder/Head/Sector
      geometry from the device.
 
-  2. Without such an option, the BIOS generally boots the device in USB-ZIP
-     mode. To write an image to a USB device that will be bootable in
-     USB-ZIP mode, carry out the following actions:
+  2. Use a ".wic" image with an EFI partition
 
-     a. Determine the geometry of your USB device using fdisk:
+     a) With a default grub-efi bootloader:
+     # dd if=core-image-minimal-genericx86-64.wic of=/dev/sdb
 
-     # fdisk /dev/sdb
-     Command (m for help): p
-
-     Disk /dev/sdb: 4011 MB, 4011491328 bytes
-     124 heads, 62 sectors/track, 1019 cylinders, total 7834944 sectors
-     ...
-
-     Command (m for help): q
-
-     b. Configure the USB device for USB-ZIP mode:
-     
-     # mkdiskimage -4 /dev/sdb 1019 124 62
-
-     Where 1019, 124 and 62 are the cylinder, head and sectors/track counts
-     as reported by fdisk (substitute the values reported for your device).
-     When the operation has finished and the access LED (if any) on the
-     device stops flashing, remove and reinsert the device to allow the
-     kernel to detect the new partition layout.
-
-     c. Copy the contents of the image to the USB-ZIP mode device:
-
-     # mkdir /tmp/image
-     # mkdir /tmp/usbkey
-     # mount -o loop core-image-minimal-genericx86.hddimg  /tmp/image
-     # mount /dev/sdb4 /tmp/usbkey
-     # cp -rf /tmp/image/* /tmp/usbkey
-
-     d. Install the syslinux boot loader:
-
-     # syslinux /dev/sdb4
-
-     e. Unmount everything:
-
-     # umount /tmp/image
-     # umount /tmp/usbkey
-
-  Install the boot device in the target board and configure the BIOS to boot
-  from it.
-
-  For more details on the USB-ZIP scenario, see the syslinux documentation:
-  http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob_plain;f=doc/usbkey.txt;hb=HEAD
+     b) Use systemd-boot instead
+     - Build an image with EFI_PROVIDER="systemd-boot" then use the above
+       dd command to write the image to a USB stick.
 
 
 Texas Instruments Beaglebone (beaglebone)
@@ -208,59 +160,17 @@
 To further tailor these instructions for your board, please refer to the
 documentation at http://www.beagleboard.org/bone and http://www.beagleboard.org/black
 
-From a Linux system with access to the image files perform the following steps
-as root, replacing mmcblk0* with the SD card device on your machine (such as sdc
-if used via a usb card reader):
+From a Linux system with access to the image files perform the following steps:
 
-  1. Partition and format an SD card:
-     # fdisk -lu /dev/mmcblk0
+  1. Build an image. For example:
 
-     Disk /dev/mmcblk0: 3951 MB, 3951034368 bytes
-     255 heads, 63 sectors/track, 480 cylinders, total 7716864 sectors
-     Units = sectors of 1 * 512 = 512 bytes
+     $ bitbake core-image-minimal
 
-             Device Boot      Start         End      Blocks  Id System
-     /dev/mmcblk0p1   *          63      144584       72261   c Win95 FAT32 (LBA)
-     /dev/mmcblk0p2          144585      465884      160650  83 Linux
+  2. Use the "dd" utility to write the image to the SD card. For example:
 
-     # mkfs.vfat -F 16 -n "boot" /dev/mmcblk0p1
-     # mke2fs -j -L "root" /dev/mmcblk0p2
+     # dd core-image-minimal-beaglebone.wic of=/dev/sdb
 
-  The following assumes the SD card partitions 1 and 2 are mounted at
-  /media/boot and /media/root respectively. Removing the card and reinserting
-  it will do just that on most modern Linux desktop environments.
-
-  The files referenced below are made available after the build in
-  build/tmp/deploy/images.
-
-  2. Install the boot loaders
-     # cp MLO-beaglebone /media/boot/MLO
-     # cp u-boot-beaglebone.img /media/boot/u-boot.img
-
-  3. Install the root filesystem
-     # tar x -C /media/root -f core-image-$IMAGE_TYPE-beaglebone.tar.bz2
-
-  4. If using core-image-base or core-image-sato images, the SD card is ready
-     and rootfs already contains the kernel, modules and device tree (DTB)
-     files necessary to be booted with U-boot's default configuration, so
-     skip directly to step 8.
-     For core-image-minimal, proceed through next steps.
-
-  5. If using core-image-minimal rootfs, install the modules
-     # tar x -C /media/root -f modules-beaglebone.tgz
-
-  6. If using core-image-minimal rootfs, install the kernel zImage into /boot
-     directory of rootfs
-     # cp zImage-beaglebone.bin /media/root/boot/zImage
-
-  7. If using core-image-minimal rootfs, also install device tree (DTB) files
-     into /boot directory of rootfs
-     # cp zImage-am335x-bone.dtb /media/root/boot/am335x-bone.dtb
-     # cp zImage-am335x-boneblack.dtb /media/root/boot/am335x-boneblack.dtb
-
-  8. Unmount the SD partitions, insert the SD card into the Beaglebone, and
-     boot the Beaglebone
-
+  3. Insert the SD card into the Beaglebone and boot the board.
 
 Freescale MPC8315E-RDB (mpc8315e-rdb)
 =====================================
@@ -391,75 +301,25 @@
  => tftp tftp $loadaddr vmlinux
  => bootoctlinux $loadaddr coremask=0x3 root=/dev/nfs rw nfsroot=<nfsroot ip>:<rootfs path> ip=<board ip>:<server ip>:<gateway ip>:<netmask>:edgerouter:eth0:off mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom)
 
---- Booting from USB root ---
+--- Booting from USB disk ---
 
 To boot from the USB disk, you either need to remove it from the edgerouter
 box and populate it from another computer, or use a previously booted NFS
 image and populate from the edgerouter itself.
 
-Type 1: Mounted USB disk
-------------------------
-
-To boot from the USB disk there are two available partitions on the factory
-USB storage. The rest of this guide assumes that these partitions are left
-intact. If you change the partition scheme, you must update your boot method
-appropriately.
-
-The standard partitions are:
-
-  - 1: vfat partition containing factory kernels
-  - 2: ext3 partition for the root filesystem.
-
-You can place the kernel on either partition 1, or partition 2, but the roofs
-must go on partition 2 (due to its size).
-
-Note: If you place the kernel on the ext3 partition, you must re-create the
-      ext3 filesystem, since the factory u-boot can only handle 128 byte inodes and
-      cannot read the partition otherwise.
+Type 1: Use partitioned image
+-----------------------------
 
 Steps:
 
  1. Remove the USB disk from the edgerouter and insert it into a computer
     that has access to your build artifacts.
 
- 2. Copy the kernel image to the USB storage (assuming discovered as 'sdb' on
-    the development machine):
+ 2. Flash the image.
 
-    2a) if booting from vfat
- 
-        # mount /dev/sdb1 /mnt
-        # cp tmp/deploy/images/edgerouter/vmlinux /mnt
-        # umount /mnt
+    # dd core-image-minimal-edgerouter.wic of=/dev/sdb
 
-    2b) if booting from ext3
-
-        # mkfs.ext3 -I 128 /dev/sdb2
-        # mount /dev/sdb2 /mnt
-        # mkdir /mnt/boot
-        # cp tmp/deploy/images/edgerouter/vmlinux /mnt/boot
-        # umount /mnt
-
- 3. Extract the rootfs to the USB storage ext3 partition
-
-        # mount /dev/sdb2 /mnt
-        # tar -xvjpf core-image-minimal-XXX.tar.bz2 -C /mnt
-        # umount /mnt
-
- 4. Reboot the board and press a key on the terminal when prompted to get to the U-Boot
-    command line:
-
- 5. Load the kernel and boot:
-
-    5a) vfat boot
-
-         => fatload usb 0:1 $loadaddr vmlinux
-
-    5b) ext3 boot
-
-         => ext2load usb 0:2 $loadaddr boot/vmlinux
- 
-    => bootoctlinux $loadaddr coremask=0x3 root=/dev/sda2 rw rootwait mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom)
- 
+ 3. Insert USB disk into the edgerouter and boot it.
 
 Type 2: NFS
 -----------
diff --git a/import-layers/yocto-poky/bitbake/LICENSE b/import-layers/yocto-poky/bitbake/LICENSE
index a57f9a4..5d4a4c2 100644
--- a/import-layers/yocto-poky/bitbake/LICENSE
+++ b/import-layers/yocto-poky/bitbake/LICENSE
@@ -5,8 +5,13 @@
 * The Toaster Simple UI application is based upon the Django project template, the files of which are covered by the BSD license and are copyright (c) Django Software
 Foundation and individual contributors.
 
-* Twitter Bootstrap (including Glyphicons), redistributed under the Apache License 2.0.
-
+* Twitter Bootstrap (including Glyphicons), redistributed under the MIT license
 * jQuery is redistributed under the MIT license.
 
+* Twitter typeahead.js redistributed under the MIT license. Note that the JS source has one small modification, so the full unminified file is currently included to make it obvious where this is.
+
+* jsrender is redistributed under the MIT license.
+
 * QUnit is redistributed under the MIT license.
+
+* Font Awesome fonts redistributed under the SIL Open Font License 1.1
diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake b/import-layers/yocto-poky/bitbake/bin/bitbake
index b03683e..2a4fc72 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitbake
+++ b/import-layers/yocto-poky/bitbake/bin/bitbake
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -35,7 +35,10 @@
 from bb import cookerdata
 from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
 
-__version__ = "1.30.0"
+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.")
+
+__version__ = "1.32.0"
 
 if __name__ == "__main__":
     if __version__ != bb.__version__:
diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake-diffsigs b/import-layers/yocto-poky/bitbake/bin/bitbake-diffsigs
index 196f0b7..527d2c7 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitbake-diffsigs
+++ b/import-layers/yocto-poky/bitbake/bin/bitbake-diffsigs
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # bitbake-diffsigs
 # BitBake task signature data comparison utility
@@ -24,6 +24,7 @@
 import fnmatch
 import optparse
 import logging
+import pickle
 
 sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
 
@@ -95,7 +96,7 @@
         # Recurse into signature comparison
         output = bb.siggen.compare_sigfiles(latestfiles[0], latestfiles[1], recursecb)
         if output:
-            print '\n'.join(output)
+            print('\n'.join(output))
     sys.exit(0)
 
 
@@ -114,14 +115,13 @@
 options, args = parser.parse_args(sys.argv)
 
 if options.taskargs:
-    tinfoil = bb.tinfoil.Tinfoil()
-    tinfoil.prepare(config_only = True)
-    find_compare_task(tinfoil, options.taskargs[0], options.taskargs[1])
+    with bb.tinfoil.Tinfoil() as tinfoil:
+        tinfoil.prepare(config_only=True)
+        find_compare_task(tinfoil, options.taskargs[0], options.taskargs[1])
 else:
     if len(args) == 1:
         parser.print_help()
     else:
-        import cPickle
         try:
             if len(args) == 2:
                 output = bb.siggen.dump_sigfile(sys.argv[1])
@@ -130,9 +130,9 @@
         except IOError as e:
             logger.error(str(e))
             sys.exit(1)
-        except cPickle.UnpicklingError, EOFError:
+        except (pickle.UnpicklingError, EOFError):
             logger.error('Invalid signature data - ensure you are specifying sigdata/siginfo files')
             sys.exit(1)
 
         if output:
-            print '\n'.join(output)
+            print('\n'.join(output))
diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake-dumpsig b/import-layers/yocto-poky/bitbake/bin/bitbake-dumpsig
index 656d93a..58ba1ca 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitbake-dumpsig
+++ b/import-layers/yocto-poky/bitbake/bin/bitbake-dumpsig
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # bitbake-dumpsig
 # BitBake task signature dump utility
@@ -23,6 +23,7 @@
 import warnings
 import optparse
 import logging
+import pickle
 
 sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
 
@@ -51,15 +52,14 @@
 if len(args) == 1:
     parser.print_help()
 else:
-    import cPickle
     try:
         output = bb.siggen.dump_sigfile(args[1])
     except IOError as e:
         logger.error(str(e))
         sys.exit(1)
-    except cPickle.UnpicklingError, EOFError:
+    except (pickle.UnpicklingError, EOFError):
         logger.error('Invalid signature data - ensure you are specifying a sigdata/siginfo file')
         sys.exit(1)
 
     if output:
-        print '\n'.join(output)
+        print('\n'.join(output))
diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake-layers b/import-layers/yocto-poky/bitbake/bin/bitbake-layers
index d47a669..946def2 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitbake-layers
+++ b/import-layers/yocto-poky/bitbake/bin/bitbake-layers
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # This script has subcommands which operate against your bitbake layers, either
 # displaying useful information, or acting against them.
@@ -23,1048 +23,105 @@
 import logging
 import os
 import sys
-import fnmatch
-from collections import defaultdict
 import argparse
-import re
-import httplib, urlparse, json
-import subprocess
 
 bindir = os.path.dirname(__file__)
 topdir = os.path.dirname(bindir)
 sys.path[0:0] = [os.path.join(topdir, 'lib')]
 
-import bb.cache
-import bb.cooker
-import bb.providers
-import bb.utils
 import bb.tinfoil
 
 
+def tinfoil_init(parserecipes):
+    import bb.tinfoil
+    tinfoil = bb.tinfoil.Tinfoil(tracking=True)
+    tinfoil.prepare(not parserecipes)
+    tinfoil.logger.setLevel(logger.getEffectiveLevel())
+    return tinfoil
+
+
 def logger_create(name, output=sys.stderr):
     logger = logging.getLogger(name)
-    console = logging.StreamHandler(output)
-    format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
-    if output.isatty():
-        format.enable_color()
-    console.setFormatter(format)
-    logger.addHandler(console)
+    loggerhandler = logging.StreamHandler(output)
+    loggerhandler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
+    logger.addHandler(loggerhandler)
     logger.setLevel(logging.INFO)
     return logger
 
+def logger_setup_color(logger, color='auto'):
+    from bb.msg import BBLogFormatter
+    console = logging.StreamHandler(sys.stdout)
+    formatter = BBLogFormatter("%(levelname)s: %(message)s")
+    console.setFormatter(formatter)
+    logger.handlers = [console]
+    if color == 'always' or (color == 'auto' and console.stream.isatty()):
+        formatter.enable_color()
+
+
 logger = logger_create('bitbake-layers', sys.stdout)
 
-class UserError(Exception):
-    pass
-
-class Commands():
-    def __init__(self):
-        self.bbhandler = None
-        self.bblayers = []
-
-    def init_bbhandler(self, config_only = False):
-        if not self.bbhandler:
-            self.bbhandler = bb.tinfoil.Tinfoil(tracking=True)
-            self.bblayers = (self.bbhandler.config_data.getVar('BBLAYERS', True) or "").split()
-            self.bbhandler.prepare(config_only)
-            layerconfs = self.bbhandler.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.bbhandler.config_data)
-            self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.iteritems()}
-
-
-    def do_show_layers(self, args):
-        """show current configured layers"""
-        self.init_bbhandler(config_only = True)
-        logger.plain("%s  %s  %s" % ("layer".ljust(20), "path".ljust(40), "priority"))
-        logger.plain('=' * 74)
-        for layer, _, regex, pri in self.bbhandler.cooker.recipecache.bbfile_config_priorities:
-            layerdir = self.bbfile_collections.get(layer, None)
-            layername = self.get_layer_name(layerdir)
-            logger.plain("%s  %s  %d" % (layername.ljust(20), layerdir.ljust(40), pri))
-
-
-    def do_add_layer(self, args):
-        """Add a layer to bblayers.conf
-
-Adds the specified layer to bblayers.conf
-"""
-        layerdir = os.path.abspath(args.layerdir)
-        if not os.path.exists(layerdir):
-            sys.stderr.write("Specified layer directory doesn't exist\n")
-            return 1
-
-        layer_conf = os.path.join(layerdir, 'conf', 'layer.conf')
-        if not os.path.exists(layer_conf):
-            sys.stderr.write("Specified layer directory doesn't contain a conf/layer.conf file\n")
-            return 1
-
-        bblayers_conf = os.path.join('conf', 'bblayers.conf')
-        if not os.path.exists(bblayers_conf):
-            sys.stderr.write("Unable to find bblayers.conf\n")
-            return 1
-
-        (notadded, _) = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None)
-        if notadded:
-            for item in notadded:
-                sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item)
-
-
-    def do_remove_layer(self, args):
-        """Remove a layer from bblayers.conf
-
-Removes the specified layer from bblayers.conf
-"""
-        bblayers_conf = os.path.join('conf', 'bblayers.conf')
-        if not os.path.exists(bblayers_conf):
-            sys.stderr.write("Unable to find bblayers.conf\n")
-            return 1
-
-        if args.layerdir.startswith('*'):
-            layerdir = args.layerdir
-        elif not '/' in args.layerdir:
-            layerdir = '*/%s' % args.layerdir
-        else:
-            layerdir = os.path.abspath(args.layerdir)
-        (_, notremoved) = bb.utils.edit_bblayers_conf(bblayers_conf, None, layerdir)
-        if notremoved:
-            for item in notremoved:
-                sys.stderr.write("No layers matching %s found in BBLAYERS\n" % item)
-            return 1
-
-
-    def get_json_data(self, apiurl):
-        proxy_settings = os.environ.get("http_proxy", None)
-        conn = None
-        _parsedurl = urlparse.urlparse(apiurl)
-        path = _parsedurl.path
-        query = _parsedurl.query
-        def parse_url(url):
-            parsedurl = urlparse.urlparse(url)
-            if parsedurl.netloc[0] == '[':
-                host, port = parsedurl.netloc[1:].split(']', 1)
-                if ':' in port:
-                    port = port.rsplit(':', 1)[1]
-                else:
-                    port = None
-            else:
-                if parsedurl.netloc.count(':') == 1:
-                    (host, port) = parsedurl.netloc.split(":")
-                else:
-                    host = parsedurl.netloc
-                    port = None
-            return (host, 80 if port is None else int(port))
-
-        if proxy_settings is None:
-            host, port = parse_url(apiurl)
-            conn = httplib.HTTPConnection(host, port)
-            conn.request("GET", path + "?" + query)
-        else:
-            host, port = parse_url(proxy_settings)
-            conn = httplib.HTTPConnection(host, port)
-            conn.request("GET", apiurl)
-
-        r = conn.getresponse()
-        if r.status != 200:
-            raise Exception("Failed to read " + path + ": %d %s" % (r.status, r.reason))
-        return json.loads(r.read())
-
-
-    def get_layer_deps(self, layername, layeritems, layerbranches, layerdependencies, branchnum, selfname=False):
-        def layeritems_info_id(items_name, layeritems):
-            litems_id = None
-            for li in layeritems:
-                if li['name'] == items_name:
-                    litems_id = li['id']
-                    break
-            return litems_id
-
-        def layerbranches_info(items_id, layerbranches):
-            lbranch = {}
-            for lb in layerbranches:
-                if lb['layer'] == items_id and lb['branch'] == branchnum:
-                    lbranch['id'] = lb['id']
-                    lbranch['vcs_subdir'] = lb['vcs_subdir']
-                    break
-            return lbranch
-
-        def layerdependencies_info(lb_id, layerdependencies):
-            ld_deps = []
-            for ld in layerdependencies:
-                if ld['layerbranch'] == lb_id and not ld['dependency'] in ld_deps:
-                    ld_deps.append(ld['dependency'])
-            if not ld_deps:
-                logger.error("The dependency of layerDependencies is not found.")
-            return ld_deps
-
-        def layeritems_info_name_subdir(items_id, layeritems):
-            litems = {}
-            for li in layeritems:
-                if li['id'] == items_id:
-                    litems['vcs_url'] = li['vcs_url']
-                    litems['name'] = li['name']
-                    break
-            return litems
-
-        if selfname:
-            selfid = layeritems_info_id(layername, layeritems)
-            lbinfo = layerbranches_info(selfid, layerbranches)
-            if lbinfo:
-                selfsubdir = lbinfo['vcs_subdir']
-            else:
-                logger.error("%s is not found in the specified branch" % layername)
-                return
-            selfurl = layeritems_info_name_subdir(selfid, layeritems)['vcs_url']
-            if selfurl:
-                return selfurl, selfsubdir
-            else:
-                logger.error("Cannot get layer %s git repo and subdir" % layername)
-                return
-        ldict = {}
-        itemsid = layeritems_info_id(layername, layeritems)
-        if not itemsid:
-            return layername, None
-        lbid = layerbranches_info(itemsid, layerbranches)
-        if lbid:
-            lbid = layerbranches_info(itemsid, layerbranches)['id']
-        else:
-            logger.error("%s is not found in the specified branch" % layername)
-            return None, None
-        for dependency in layerdependencies_info(lbid, layerdependencies):
-            lname = layeritems_info_name_subdir(dependency, layeritems)['name']
-            lurl = layeritems_info_name_subdir(dependency, layeritems)['vcs_url']
-            lsubdir = layerbranches_info(dependency, layerbranches)['vcs_subdir']
-            ldict[lname] = lurl, lsubdir
-        return None, ldict
-
-
-    def get_fetch_layer(self, fetchdir, url, subdir, fetch_layer):
-        layername = self.get_layer_name(url)
-        if os.path.splitext(layername)[1] == '.git':
-            layername = os.path.splitext(layername)[0]
-        repodir = os.path.join(fetchdir, layername)
-        layerdir = os.path.join(repodir, subdir)
-        if not os.path.exists(repodir):
-            if fetch_layer:
-                result = subprocess.call('git clone %s %s' % (url, repodir), shell = True)
-                if result:
-                    logger.error("Failed to download %s" % url)
-                    return None, None
-                else:
-                    return layername, layerdir
-            else:
-                logger.plain("Repository %s needs to be fetched" % url)
-                return layername, layerdir
-        elif os.path.exists(layerdir):
-            return layername, layerdir
-        else:
-            logger.error("%s is not in %s" % (url, subdir))
-        return None, None
-
-
-    def do_layerindex_fetch(self, args):
-        """Fetches a layer from a layer index along with its dependent layers, and adds them to conf/bblayers.conf.
-"""
-        self.init_bbhandler(config_only = True)
-        apiurl = self.bbhandler.config_data.getVar('BBLAYERS_LAYERINDEX_URL', True)
-        if not apiurl:
-            logger.error("Cannot get BBLAYERS_LAYERINDEX_URL")
-            return 1
-        else:
-            if apiurl[-1] != '/':
-                apiurl += '/'
-            apiurl += "api/"
-        apilinks = self.get_json_data(apiurl)
-        branches = self.get_json_data(apilinks['branches'])
-
-        branchnum = 0
-        for branch in branches:
-            if branch['name'] == args.branch:
-                branchnum = branch['id']
-                break
-        if branchnum == 0:
-            validbranches = ', '.join([branch['name'] for branch in branches])
-            logger.error('Invalid layer branch name "%s". Valid branches: %s' % (args.branch, validbranches))
-            return 1
-
-        ignore_layers = []
-        for collection in self.bbhandler.config_data.getVar('BBFILE_COLLECTIONS', True).split():
-            lname = self.bbhandler.config_data.getVar('BBLAYERS_LAYERINDEX_NAME_%s' % collection, True)
-            if lname:
-                ignore_layers.append(lname)
-
-        if args.ignore:
-            ignore_layers.extend(args.ignore.split(','))
-
-        layeritems = self.get_json_data(apilinks['layerItems'])
-        layerbranches = self.get_json_data(apilinks['layerBranches'])
-        layerdependencies = self.get_json_data(apilinks['layerDependencies'])
-        invaluenames = []
-        repourls = {}
-        printlayers = []
-        def query_dependencies(layers, layeritems, layerbranches, layerdependencies, branchnum):
-            depslayer = []
-            for layername in layers:
-                invaluename, layerdict = self.get_layer_deps(layername, layeritems, layerbranches, layerdependencies, branchnum)
-                if layerdict:
-                    repourls[layername] = self.get_layer_deps(layername, layeritems, layerbranches, layerdependencies, branchnum, selfname=True)
-                    for layer in layerdict:
-                        if not layer in ignore_layers:
-                            depslayer.append(layer)
-                        printlayers.append((layername, layer, layerdict[layer][0], layerdict[layer][1]))
-                        if not layer in ignore_layers and not layer in repourls:
-                            repourls[layer] = (layerdict[layer][0], layerdict[layer][1])
-                if invaluename and not invaluename in invaluenames:
-                    invaluenames.append(invaluename)
-            return depslayer
-
-        depslayers = query_dependencies(args.layername, layeritems, layerbranches, layerdependencies, branchnum)
-        while depslayers:
-            depslayer = query_dependencies(depslayers, layeritems, layerbranches, layerdependencies, branchnum)
-            depslayers = depslayer
-        if invaluenames:
-            for invaluename in invaluenames:
-                logger.error('Layer "%s" not found in layer index' % invaluename)
-            return 1
-        logger.plain("%s  %s  %s  %s" % ("Layer".ljust(19), "Required by".ljust(19), "Git repository".ljust(54), "Subdirectory"))
-        logger.plain('=' * 115)
-        for layername in args.layername:
-            layerurl = repourls[layername]
-            logger.plain("%s %s %s %s" % (layername.ljust(20), '-'.ljust(20), layerurl[0].ljust(55), layerurl[1]))
-        printedlayers = []
-        for layer, dependency, gitrepo, subdirectory in printlayers:
-            if dependency in printedlayers:
-                continue
-            logger.plain("%s %s %s %s" % (dependency.ljust(20), layer.ljust(20), gitrepo.ljust(55), subdirectory))
-            printedlayers.append(dependency)
-
-        if repourls:
-            fetchdir = self.bbhandler.config_data.getVar('BBLAYERS_FETCH_DIR', True)
-            if not fetchdir:
-                logger.error("Cannot get BBLAYERS_FETCH_DIR")
-                return 1
-            if not os.path.exists(fetchdir):
-                os.makedirs(fetchdir)
-            addlayers = []
-            for repourl, subdir in repourls.values():
-                name, layerdir = self.get_fetch_layer(fetchdir, repourl, subdir, not args.show_only)
-                if not name:
-                    # Error already shown
-                    return 1
-                addlayers.append((subdir, name, layerdir))
-        if not args.show_only:
-            for subdir, name, layerdir in set(addlayers):
-                if os.path.exists(layerdir):
-                    if subdir:
-                        logger.plain("Adding layer \"%s\" to conf/bblayers.conf" % subdir)
-                    else:
-                        logger.plain("Adding layer \"%s\" to conf/bblayers.conf" % name)
-                    localargs = argparse.Namespace()
-                    localargs.layerdir = layerdir
-                    self.do_add_layer(localargs)
-                else:
-                    break
-
-
-    def do_layerindex_show_depends(self, args):
-        """Find layer dependencies from layer index.
-"""
-        args.show_only = True
-        args.ignore = []
-        self.do_layerindex_fetch(args)
-
-
-    def version_str(self, pe, pv, pr = None):
-        verstr = "%s" % pv
-        if pr:
-            verstr = "%s-%s" % (verstr, pr)
-        if pe:
-            verstr = "%s:%s" % (pe, verstr)
-        return verstr
-
-
-    def do_show_overlayed(self, args):
-        """list overlayed recipes (where the same recipe exists in another layer)
-
-Lists the names of overlayed recipes and the available versions in each
-layer, with the preferred version first. Note that skipped recipes that
-are overlayed will also be listed, with a " (skipped)" suffix.
-"""
-        self.init_bbhandler()
-
-        items_listed = self.list_recipes('Overlayed recipes', None, True, args.same_version, args.filenames, True, None)
-
-        # Check for overlayed .bbclass files
-        classes = defaultdict(list)
-        for layerdir in self.bblayers:
-            classdir = os.path.join(layerdir, 'classes')
-            if os.path.exists(classdir):
-                for classfile in os.listdir(classdir):
-                    if os.path.splitext(classfile)[1] == '.bbclass':
-                        classes[classfile].append(classdir)
-
-        # Locating classes and other files is a bit more complicated than recipes -
-        # layer priority is not a factor; instead BitBake uses the first matching
-        # file in BBPATH, which is manipulated directly by each layer's
-        # conf/layer.conf in turn, thus the order of layers in bblayers.conf is a
-        # factor - however, each layer.conf is free to either prepend or append to
-        # BBPATH (or indeed do crazy stuff with it). Thus the order in BBPATH might
-        # not be exactly the order present in bblayers.conf either.
-        bbpath = str(self.bbhandler.config_data.getVar('BBPATH', True))
-        overlayed_class_found = False
-        for (classfile, classdirs) in classes.items():
-            if len(classdirs) > 1:
-                if not overlayed_class_found:
-                    logger.plain('=== Overlayed classes ===')
-                    overlayed_class_found = True
-
-                mainfile = bb.utils.which(bbpath, os.path.join('classes', classfile))
-                if args.filenames:
-                    logger.plain('%s' % mainfile)
-                else:
-                    # We effectively have to guess the layer here
-                    logger.plain('%s:' % classfile)
-                    mainlayername = '?'
-                    for layerdir in self.bblayers:
-                        classdir = os.path.join(layerdir, 'classes')
-                        if mainfile.startswith(classdir):
-                            mainlayername = self.get_layer_name(layerdir)
-                    logger.plain('  %s' % mainlayername)
-                for classdir in classdirs:
-                    fullpath = os.path.join(classdir, classfile)
-                    if fullpath != mainfile:
-                        if args.filenames:
-                            print('  %s' % fullpath)
-                        else:
-                            print('  %s' % self.get_layer_name(os.path.dirname(classdir)))
-
-        if overlayed_class_found:
-            items_listed = True;
-
-        if not items_listed:
-            logger.plain('No overlayed files found.')
-
-
-    def do_show_recipes(self, args):
-        """list available recipes, showing the layer they are provided by
-
-Lists the names of recipes and the available versions in each
-layer, with the preferred version first. Optionally you may specify
-pnspec to match a specified recipe name (supports wildcards). Note that
-skipped recipes will also be listed, with a " (skipped)" suffix.
-"""
-        self.init_bbhandler()
-
-        inheritlist = args.inherits.split(',') if args.inherits else []
-        if inheritlist or args.pnspec or args.multiple:
-            title = 'Matching recipes:'
-        else:
-            title = 'Available recipes:'
-        self.list_recipes(title, args.pnspec, False, False, args.filenames, args.multiple, inheritlist)
-
-
-    def list_recipes(self, title, pnspec, show_overlayed_only, show_same_ver_only, show_filenames, show_multi_provider_only, inherits):
-        if inherits:
-            bbpath = str(self.bbhandler.config_data.getVar('BBPATH', True))
-            for classname in inherits:
-                classfile = 'classes/%s.bbclass' % classname
-                if not bb.utils.which(bbpath, classfile, history=False):
-                    raise UserError('No class named %s found in BBPATH' % classfile)
-
-        pkg_pn = self.bbhandler.cooker.recipecache.pkg_pn
-        (latest_versions, preferred_versions) = bb.providers.findProviders(self.bbhandler.config_data, self.bbhandler.cooker.recipecache, pkg_pn)
-        allproviders = bb.providers.allProviders(self.bbhandler.cooker.recipecache)
-
-        # Ensure we list skipped recipes
-        # We are largely guessing about PN, PV and the preferred version here,
-        # but we have no choice since skipped recipes are not fully parsed
-        skiplist = self.bbhandler.cooker.skiplist.keys()
-        skiplist.sort( key=lambda fileitem: self.bbhandler.cooker.collection.calc_bbfile_priority(fileitem) )
-        skiplist.reverse()
-        for fn in skiplist:
-            recipe_parts = os.path.splitext(os.path.basename(fn))[0].split('_')
-            p = recipe_parts[0]
-            if len(recipe_parts) > 1:
-                ver = (None, recipe_parts[1], None)
-            else:
-                ver = (None, 'unknown', None)
-            allproviders[p].append((ver, fn))
-            if not p in pkg_pn:
-                pkg_pn[p] = 'dummy'
-                preferred_versions[p] = (ver, fn)
-
-        def print_item(f, pn, ver, layer, ispref):
-            if f in skiplist:
-                skipped = ' (skipped)'
-            else:
-                skipped = ''
-            if show_filenames:
-                if ispref:
-                    logger.plain("%s%s", f, skipped)
-                else:
-                    logger.plain("  %s%s", f, skipped)
-            else:
-                if ispref:
-                    logger.plain("%s:", pn)
-                logger.plain("  %s %s%s", layer.ljust(20), ver, skipped)
-
-        global_inherit = (self.bbhandler.config_data.getVar('INHERIT', True) or "").split()
-        cls_re = re.compile('classes/')
-
-        preffiles = []
-        items_listed = False
-        for p in sorted(pkg_pn):
-            if pnspec:
-                if not fnmatch.fnmatch(p, pnspec):
-                    continue
-
-            if len(allproviders[p]) > 1 or not show_multi_provider_only:
-                pref = preferred_versions[p]
-                realfn = bb.cache.Cache.virtualfn2realfn(pref[1])
-                preffile = realfn[0]
-
-                # We only display once per recipe, we should prefer non extended versions of the
-                # recipe if present (so e.g. in OpenEmbedded, openssl rather than nativesdk-openssl
-                # which would otherwise sort first).
-                if realfn[1] and realfn[0] in self.bbhandler.cooker.recipecache.pkg_fn:
-                    continue
-
-                if inherits:
-                    matchcount = 0
-                    recipe_inherits = self.bbhandler.cooker_data.inherits.get(preffile, [])
-                    for cls in recipe_inherits:
-                        if cls_re.match(cls):
-                            continue
-                        classname = os.path.splitext(os.path.basename(cls))[0]
-                        if classname in global_inherit:
-                            continue
-                        elif classname in inherits:
-                            matchcount += 1
-                    if matchcount != len(inherits):
-                        # No match - skip this recipe
-                        continue
-
-                if preffile not in preffiles:
-                    preflayer = self.get_file_layer(preffile)
-                    multilayer = False
-                    same_ver = True
-                    provs = []
-                    for prov in allproviders[p]:
-                        provfile = bb.cache.Cache.virtualfn2realfn(prov[1])[0]
-                        provlayer = self.get_file_layer(provfile)
-                        provs.append((provfile, provlayer, prov[0]))
-                        if provlayer != preflayer:
-                            multilayer = True
-                        if prov[0] != pref[0]:
-                            same_ver = False
-
-                    if (multilayer or not show_overlayed_only) and (same_ver or not show_same_ver_only):
-                        if not items_listed:
-                            logger.plain('=== %s ===' % title)
-                            items_listed = True
-                        print_item(preffile, p, self.version_str(pref[0][0], pref[0][1]), preflayer, True)
-                        for (provfile, provlayer, provver) in provs:
-                            if provfile != preffile:
-                                print_item(provfile, p, self.version_str(provver[0], provver[1]), provlayer, False)
-                        # Ensure we don't show two entries for BBCLASSEXTENDed recipes
-                        preffiles.append(preffile)
-
-        return items_listed
-
-
-    def do_flatten(self, args):
-        """flatten layer configuration into a separate output directory.
-
-Takes the specified layers (or all layers in the current layer
-configuration if none are specified) and builds a "flattened" directory
-containing the contents of all layers, with any overlayed recipes removed
-and bbappends appended to the corresponding recipes. Note that some manual
-cleanup may still be necessary afterwards, in particular:
-
-* where non-recipe files (such as patches) are overwritten (the flatten
-  command will show a warning for these)
-* where anything beyond the normal layer setup has been added to
-  layer.conf (only the lowest priority number layer's layer.conf is used)
-* overridden/appended items from bbappends will need to be tidied up
-* when the flattened layers do not have the same directory structure (the
-  flatten command should show a warning when this will cause a problem)
-
-Warning: if you flatten several layers where another layer is intended to
-be used "inbetween" them (in layer priority order) such that recipes /
-bbappends in the layers interact, and then attempt to use the new output
-layer together with that other layer, you may no longer get the same
-build results (as the layer priority order has effectively changed).
-"""
-        if len(args.layer) == 1:
-            logger.error('If you specify layers to flatten you must specify at least two')
-            return 1
-
-        outputdir = args.outputdir
-        if os.path.exists(outputdir) and os.listdir(outputdir):
-            logger.error('Directory %s exists and is non-empty, please clear it out first' % outputdir)
-            return 1
-
-        self.init_bbhandler()
-        layers = self.bblayers
-        if len(args.layer) > 2:
-            layernames = args.layer
-            found_layernames = []
-            found_layerdirs = []
-            for layerdir in layers:
-                layername = self.get_layer_name(layerdir)
-                if layername in layernames:
-                    found_layerdirs.append(layerdir)
-                    found_layernames.append(layername)
-
-            for layername in layernames:
-                if not layername in found_layernames:
-                    logger.error('Unable to find layer %s in current configuration, please run "%s show-layers" to list configured layers' % (layername, os.path.basename(sys.argv[0])))
-                    return
-            layers = found_layerdirs
-        else:
-            layernames = []
-
-        # Ensure a specified path matches our list of layers
-        def layer_path_match(path):
-            for layerdir in layers:
-                if path.startswith(os.path.join(layerdir, '')):
-                    return layerdir
-            return None
-
-        applied_appends = []
-        for layer in layers:
-            overlayed = []
-            for f in self.bbhandler.cooker.collection.overlayed.iterkeys():
-                for of in self.bbhandler.cooker.collection.overlayed[f]:
-                    if of.startswith(layer):
-                        overlayed.append(of)
-
-            logger.plain('Copying files from %s...' % layer )
-            for root, dirs, files in os.walk(layer):
-                for f1 in files:
-                    f1full = os.sep.join([root, f1])
-                    if f1full in overlayed:
-                        logger.plain('  Skipping overlayed file %s' % f1full )
-                    else:
-                        ext = os.path.splitext(f1)[1]
-                        if ext != '.bbappend':
-                            fdest = f1full[len(layer):]
-                            fdest = os.path.normpath(os.sep.join([outputdir,fdest]))
-                            bb.utils.mkdirhier(os.path.dirname(fdest))
-                            if os.path.exists(fdest):
-                                if f1 == 'layer.conf' and root.endswith('/conf'):
-                                    logger.plain('  Skipping layer config file %s' % f1full )
-                                    continue
-                                else:
-                                    logger.warn('Overwriting file %s', fdest)
-                            bb.utils.copyfile(f1full, fdest)
-                            if ext == '.bb':
-                                for append in self.bbhandler.cooker.collection.get_file_appends(f1full):
-                                    if layer_path_match(append):
-                                        logger.plain('  Applying append %s to %s' % (append, fdest))
-                                        self.apply_append(append, fdest)
-                                        applied_appends.append(append)
-
-        # Take care of when some layers are excluded and yet we have included bbappends for those recipes
-        for b in self.bbhandler.cooker.collection.bbappends:
-            (recipename, appendname) = b
-            if appendname not in applied_appends:
-                first_append = None
-                layer = layer_path_match(appendname)
-                if layer:
-                    if first_append:
-                        self.apply_append(appendname, first_append)
-                    else:
-                        fdest = appendname[len(layer):]
-                        fdest = os.path.normpath(os.sep.join([outputdir,fdest]))
-                        bb.utils.mkdirhier(os.path.dirname(fdest))
-                        bb.utils.copyfile(appendname, fdest)
-                        first_append = fdest
-
-        # Get the regex for the first layer in our list (which is where the conf/layer.conf file will
-        # have come from)
-        first_regex = None
-        layerdir = layers[0]
-        for layername, pattern, regex, _ in self.bbhandler.cooker.recipecache.bbfile_config_priorities:
-            if regex.match(os.path.join(layerdir, 'test')):
-                first_regex = regex
-                break
-
-        if first_regex:
-            # Find the BBFILES entries that match (which will have come from this conf/layer.conf file)
-            bbfiles = str(self.bbhandler.config_data.getVar('BBFILES', True)).split()
-            bbfiles_layer = []
-            for item in bbfiles:
-                if first_regex.match(item):
-                    newpath = os.path.join(outputdir, item[len(layerdir)+1:])
-                    bbfiles_layer.append(newpath)
-
-            if bbfiles_layer:
-                # Check that all important layer files match BBFILES
-                for root, dirs, files in os.walk(outputdir):
-                    for f1 in files:
-                        ext = os.path.splitext(f1)[1]
-                        if ext in ['.bb', '.bbappend']:
-                            f1full = os.sep.join([root, f1])
-                            entry_found = False
-                            for item in bbfiles_layer:
-                                if fnmatch.fnmatch(f1full, item):
-                                    entry_found = True
-                                    break
-                            if not entry_found:
-                                logger.warning("File %s does not match the flattened layer's BBFILES setting, you may need to edit conf/layer.conf or move the file elsewhere" % f1full)
-
-    def get_file_layer(self, filename):
-        layerdir = self.get_file_layerdir(filename)
-        if layerdir:
-            return self.get_layer_name(layerdir)
-        else:
-            return '?'
-
-    def get_file_layerdir(self, filename):
-        layer = bb.utils.get_file_layer(filename, self.bbhandler.config_data)
-        return self.bbfile_collections.get(layer, None)
-
-    def remove_layer_prefix(self, f):
-        """Remove the layer_dir prefix, e.g., f = /path/to/layer_dir/foo/blah, the
-           return value will be: layer_dir/foo/blah"""
-        f_layerdir = self.get_file_layerdir(f)
-        if not f_layerdir:
-            return f
-        prefix = os.path.join(os.path.dirname(f_layerdir), '')
-        return f[len(prefix):] if f.startswith(prefix) else f
-
-    def get_layer_name(self, layerdir):
-        return os.path.basename(layerdir.rstrip(os.sep))
-
-    def apply_append(self, appendname, recipename):
-        with open(appendname, 'r') as appendfile:
-            with open(recipename, 'a') as recipefile:
-                recipefile.write('\n')
-                recipefile.write('##### bbappended from %s #####\n' % self.get_file_layer(appendname))
-                recipefile.writelines(appendfile.readlines())
-
-    def do_show_appends(self, args):
-        """list bbappend files and recipe files they apply to
-
-Lists recipes with the bbappends that apply to them as subitems.
-"""
-        self.init_bbhandler()
-
-        logger.plain('=== Appended recipes ===')
-
-        pnlist = list(self.bbhandler.cooker_data.pkg_pn.keys())
-        pnlist.sort()
-        appends = False
-        for pn in pnlist:
-            if self.show_appends_for_pn(pn):
-                appends = True
-
-        if self.show_appends_for_skipped():
-            appends = True
-
-        if not appends:
-            logger.plain('No append files found')
-
-    def show_appends_for_pn(self, pn):
-        filenames = self.bbhandler.cooker_data.pkg_pn[pn]
-
-        best = bb.providers.findBestProvider(pn,
-                                             self.bbhandler.config_data,
-                                             self.bbhandler.cooker_data,
-                                             self.bbhandler.cooker_data.pkg_pn)
-        best_filename = os.path.basename(best[3])
-
-        return self.show_appends_output(filenames, best_filename)
-
-    def show_appends_for_skipped(self):
-        filenames = [os.path.basename(f)
-                    for f in self.bbhandler.cooker.skiplist.iterkeys()]
-        return self.show_appends_output(filenames, None, " (skipped)")
-
-    def show_appends_output(self, filenames, best_filename, name_suffix = ''):
-        appended, missing = self.get_appends_for_files(filenames)
-        if appended:
-            for basename, appends in appended:
-                logger.plain('%s%s:', basename, name_suffix)
-                for append in appends:
-                    logger.plain('  %s', append)
-
-            if best_filename:
-                if best_filename in missing:
-                    logger.warn('%s: missing append for preferred version',
-                                best_filename)
-            return True
-        else:
-            return False
-
-    def get_appends_for_files(self, filenames):
-        appended, notappended = [], []
-        for filename in filenames:
-            _, cls = bb.cache.Cache.virtualfn2realfn(filename)
-            if cls:
-                continue
-
-            basename = os.path.basename(filename)
-            appends = self.bbhandler.cooker.collection.get_file_appends(basename)
-            if appends:
-                appended.append((basename, list(appends)))
-            else:
-                notappended.append(basename)
-        return appended, notappended
-
-    def do_show_cross_depends(self, args):
-        """Show dependencies between recipes that cross layer boundaries.
-
-Figure out the dependencies between recipes that cross layer boundaries.
-
-NOTE: .bbappend files can impact the dependencies.
-"""
-        ignore_layers = (args.ignore or '').split(',')
-
-        self.init_bbhandler()
-
-        pkg_fn = self.bbhandler.cooker_data.pkg_fn
-        bbpath = str(self.bbhandler.config_data.getVar('BBPATH', True))
-        self.require_re = re.compile(r"require\s+(.+)")
-        self.include_re = re.compile(r"include\s+(.+)")
-        self.inherit_re = re.compile(r"inherit\s+(.+)")
-
-        global_inherit = (self.bbhandler.config_data.getVar('INHERIT', True) or "").split()
-
-        # The bb's DEPENDS and RDEPENDS
-        for f in pkg_fn:
-            f = bb.cache.Cache.virtualfn2realfn(f)[0]
-            # Get the layername that the file is in
-            layername = self.get_file_layer(f)
-
-            # The DEPENDS
-            deps = self.bbhandler.cooker_data.deps[f]
-            for pn in deps:
-                if pn in self.bbhandler.cooker_data.pkg_pn:
-                    best = bb.providers.findBestProvider(pn,
-                            self.bbhandler.config_data,
-                            self.bbhandler.cooker_data,
-                            self.bbhandler.cooker_data.pkg_pn)
-                    self.check_cross_depends("DEPENDS", layername, f, best[3], args.filenames, ignore_layers)
-
-            # The RDPENDS
-            all_rdeps = self.bbhandler.cooker_data.rundeps[f].values()
-            # Remove the duplicated or null one.
-            sorted_rdeps = {}
-            # The all_rdeps is the list in list, so we need two for loops
-            for k1 in all_rdeps:
-                for k2 in k1:
-                    sorted_rdeps[k2] = 1
-            all_rdeps = sorted_rdeps.keys()
-            for rdep in all_rdeps:
-                all_p = bb.providers.getRuntimeProviders(self.bbhandler.cooker_data, rdep)
-                if all_p:
-                    if f in all_p:
-                        # The recipe provides this one itself, ignore
-                        continue
-                    best = bb.providers.filterProvidersRunTime(all_p, rdep,
-                                    self.bbhandler.config_data,
-                                    self.bbhandler.cooker_data)[0][0]
-                    self.check_cross_depends("RDEPENDS", layername, f, best, args.filenames, ignore_layers)
-
-            # The RRECOMMENDS
-            all_rrecs = self.bbhandler.cooker_data.runrecs[f].values()
-            # Remove the duplicated or null one.
-            sorted_rrecs = {}
-            # The all_rrecs is the list in list, so we need two for loops
-            for k1 in all_rrecs:
-                for k2 in k1:
-                    sorted_rrecs[k2] = 1
-            all_rrecs = sorted_rrecs.keys()
-            for rrec in all_rrecs:
-                all_p = bb.providers.getRuntimeProviders(self.bbhandler.cooker_data, rrec)
-                if all_p:
-                    if f in all_p:
-                        # The recipe provides this one itself, ignore
-                        continue
-                    best = bb.providers.filterProvidersRunTime(all_p, rrec,
-                                    self.bbhandler.config_data,
-                                    self.bbhandler.cooker_data)[0][0]
-                    self.check_cross_depends("RRECOMMENDS", layername, f, best, args.filenames, ignore_layers)
-
-            # The inherit class
-            cls_re = re.compile('classes/')
-            if f in self.bbhandler.cooker_data.inherits:
-                inherits = self.bbhandler.cooker_data.inherits[f]
-                for cls in inherits:
-                    # The inherits' format is [classes/cls, /path/to/classes/cls]
-                    # ignore the classes/cls.
-                    if not cls_re.match(cls):
-                        classname = os.path.splitext(os.path.basename(cls))[0]
-                        if classname in global_inherit:
-                            continue
-                        inherit_layername = self.get_file_layer(cls)
-                        if inherit_layername != layername and not inherit_layername in ignore_layers:
-                            if not args.filenames:
-                                f_short = self.remove_layer_prefix(f)
-                                cls = self.remove_layer_prefix(cls)
-                            else:
-                                f_short = f
-                            logger.plain("%s inherits %s" % (f_short, cls))
-
-            # The 'require/include xxx' in the bb file
-            pv_re = re.compile(r"\${PV}")
-            with open(f, 'r') as fnfile:
-                line = fnfile.readline()
-                while line:
-                    m, keyword = self.match_require_include(line)
-                    # Found the 'require/include xxxx'
-                    if m:
-                        needed_file = m.group(1)
-                        # Replace the ${PV} with the real PV
-                        if pv_re.search(needed_file) and f in self.bbhandler.cooker_data.pkg_pepvpr:
-                            pv = self.bbhandler.cooker_data.pkg_pepvpr[f][1]
-                            needed_file = re.sub(r"\${PV}", pv, needed_file)
-                        self.print_cross_files(bbpath, keyword, layername, f, needed_file, args.filenames, ignore_layers)
-                    line = fnfile.readline()
-
-        # The "require/include xxx" in conf/machine/*.conf, .inc and .bbclass
-        conf_re = re.compile(".*/conf/machine/[^\/]*\.conf$")
-        inc_re = re.compile(".*\.inc$")
-        # The "inherit xxx" in .bbclass
-        bbclass_re = re.compile(".*\.bbclass$")
-        for layerdir in self.bblayers:
-            layername = self.get_layer_name(layerdir)
-            for dirpath, dirnames, filenames in os.walk(layerdir):
-                for name in filenames:
-                    f = os.path.join(dirpath, name)
-                    s = conf_re.match(f) or inc_re.match(f) or bbclass_re.match(f)
-                    if s:
-                        with open(f, 'r') as ffile:
-                            line = ffile.readline()
-                            while line:
-                                m, keyword = self.match_require_include(line)
-                                # Only bbclass has the "inherit xxx" here.
-                                bbclass=""
-                                if not m and f.endswith(".bbclass"):
-                                    m, keyword = self.match_inherit(line)
-                                    bbclass=".bbclass"
-                                # Find a 'require/include xxxx'
-                                if m:
-                                    self.print_cross_files(bbpath, keyword, layername, f, m.group(1) + bbclass, args.filenames, ignore_layers)
-                                line = ffile.readline()
-
-    def print_cross_files(self, bbpath, keyword, layername, f, needed_filename, show_filenames, ignore_layers):
-        """Print the depends that crosses a layer boundary"""
-        needed_file = bb.utils.which(bbpath, needed_filename)
-        if needed_file:
-            # Which layer is this file from
-            needed_layername = self.get_file_layer(needed_file)
-            if needed_layername != layername and not needed_layername in ignore_layers:
-                if not show_filenames:
-                    f = self.remove_layer_prefix(f)
-                    needed_file = self.remove_layer_prefix(needed_file)
-                logger.plain("%s %s %s" %(f, keyword, needed_file))
-
-    def match_inherit(self, line):
-        """Match the inherit xxx line"""
-        return (self.inherit_re.match(line), "inherits")
-
-    def match_require_include(self, line):
-        """Match the require/include xxx line"""
-        m = self.require_re.match(line)
-        keyword = "requires"
-        if not m:
-            m = self.include_re.match(line)
-            keyword = "includes"
-        return (m, keyword)
-
-    def check_cross_depends(self, keyword, layername, f, needed_file, show_filenames, ignore_layers):
-        """Print the DEPENDS/RDEPENDS file that crosses a layer boundary"""
-        best_realfn = bb.cache.Cache.virtualfn2realfn(needed_file)[0]
-        needed_layername = self.get_file_layer(best_realfn)
-        if needed_layername != layername and not needed_layername in ignore_layers:
-            if not show_filenames:
-                f = self.remove_layer_prefix(f)
-                best_realfn = self.remove_layer_prefix(best_realfn)
-
-            logger.plain("%s %s %s" % (f, keyword, best_realfn))
-
-
 def main():
-
-    cmds = Commands()
-
-    def add_command(cmdname, function, *args, **kwargs):
-        # Convert docstring for function to help (one-liner shown in main --help) and description (shown in subcommand --help)
-        docsplit = function.__doc__.splitlines()
-        help = docsplit[0]
-        if len(docsplit) > 1:
-            desc = '\n'.join(docsplit[1:])
-        else:
-            desc = help
-        subparser = subparsers.add_parser(cmdname, *args, help=help, description=desc, formatter_class=argparse.RawTextHelpFormatter, **kwargs)
-        subparser.set_defaults(func=function)
-        return subparser
-
-    parser = argparse.ArgumentParser(description="BitBake layers utility",
-                                     epilog="Use %(prog)s <subcommand> --help to get help on a specific command")
+    parser = argparse.ArgumentParser(
+        description="BitBake layers utility",
+        epilog="Use %(prog)s <subcommand> --help to get help on a specific command",
+        add_help=False)
     parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true')
     parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true')
+    parser.add_argument('--color', choices=['auto', 'always', 'never'], default='auto', help='Colorize output (where %(metavar)s is %(choices)s)', metavar='COLOR')
+
+    global_args, unparsed_args = parser.parse_known_args()
+
+    # Help is added here rather than via add_help=True, as we don't want it to
+    # be handled by parse_known_args()
+    parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
+                        help='show this help message and exit')
     subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
+    subparsers.required = True
 
-    parser_show_layers = add_command('show-layers', cmds.do_show_layers)
-
-    parser_add_layer = add_command('add-layer', cmds.do_add_layer)
-    parser_add_layer.add_argument('layerdir', help='Layer directory to add')
-
-    parser_remove_layer = add_command('remove-layer', cmds.do_remove_layer)
-    parser_remove_layer.add_argument('layerdir', help='Layer directory to remove (wildcards allowed, enclose in quotes to avoid shell expansion)')
-    parser_remove_layer.set_defaults(func=cmds.do_remove_layer)
-
-    parser_show_overlayed = add_command('show-overlayed', cmds.do_show_overlayed)
-    parser_show_overlayed.add_argument('-f', '--filenames', help='instead of the default formatting, list filenames of higher priority recipes with the ones they overlay indented underneath', action='store_true')
-    parser_show_overlayed.add_argument('-s', '--same-version', help='only list overlayed recipes where the version is the same', action='store_true')
-
-    parser_show_recipes = add_command('show-recipes', cmds.do_show_recipes)
-    parser_show_recipes.add_argument('-f', '--filenames', help='instead of the default formatting, list filenames of higher priority recipes with the ones they overlay indented underneath', action='store_true')
-    parser_show_recipes.add_argument('-m', '--multiple', help='only list where multiple recipes (in the same layer or different layers) exist for the same recipe name', action='store_true')
-    parser_show_recipes.add_argument('-i', '--inherits', help='only list recipes that inherit the named class', metavar='CLASS', default='')
-    parser_show_recipes.add_argument('pnspec', nargs='?', help='optional recipe name specification (wildcards allowed, enclose in quotes to avoid shell expansion)')
-
-    parser_show_appends = add_command('show-appends', cmds.do_show_appends)
-
-    parser_flatten = add_command('flatten', cmds.do_flatten)
-    parser_flatten.add_argument('layer', nargs='*', help='Optional layer(s) to flatten (otherwise all are flattened)')
-    parser_flatten.add_argument('outputdir', help='Output directory')
-
-    parser_show_cross_depends = add_command('show-cross-depends', cmds.do_show_cross_depends)
-    parser_show_cross_depends.add_argument('-f', '--filenames', help='show full file path', action='store_true')
-    parser_show_cross_depends.add_argument('-i', '--ignore', help='ignore dependencies on items in the specified layer(s) (split multiple layer names with commas, no spaces)', metavar='LAYERNAME')
-
-    parser_layerindex_fetch = add_command('layerindex-fetch', cmds.do_layerindex_fetch)
-    parser_layerindex_fetch.add_argument('-n', '--show-only', help='show dependencies and do nothing else', action='store_true')
-    parser_layerindex_fetch.add_argument('-b', '--branch', help='branch name to fetch (default %(default)s)', default='master')
-    parser_layerindex_fetch.add_argument('-i', '--ignore', help='assume the specified layers do not need to be fetched/added (separate multiple layers with commas, no spaces)', metavar='LAYER')
-    parser_layerindex_fetch.add_argument('layername', nargs='+', help='layer to fetch')
-
-    parser_layerindex_show_depends = add_command('layerindex-show-depends', cmds.do_layerindex_show_depends)
-    parser_layerindex_show_depends.add_argument('-b', '--branch', help='branch name to fetch (default %(default)s)', default='master')
-    parser_layerindex_show_depends.add_argument('layername', nargs='+', help='layer to query')
-
-    args = parser.parse_args()
-
-    if args.debug:
+    if global_args.debug:
         logger.setLevel(logging.DEBUG)
-    elif args.quiet:
+    elif global_args.quiet:
         logger.setLevel(logging.ERROR)
 
-    try:
-        ret = args.func(args)
-    except UserError as err:
-        logger.error(str(err))
-        ret = 1
+    logger_setup_color(logger, global_args.color)
 
-    return ret
+    plugins = []
+    tinfoil = tinfoil_init(False)
+    try:
+        for path in ([topdir] +
+                    tinfoil.config_data.getVar('BBPATH', True).split(':')):
+            pluginpath = os.path.join(path, 'lib', 'bblayers')
+            bb.utils.load_plugins(logger, plugins, pluginpath)
+
+        registered = False
+        for plugin in plugins:
+            if hasattr(plugin, 'register_commands'):
+                registered = True
+                plugin.register_commands(subparsers)
+            if hasattr(plugin, 'tinfoil_init'):
+                plugin.tinfoil_init(tinfoil)
+
+        if not registered:
+            logger.error("No commands registered - missing plugins?")
+            sys.exit(1)
+
+        args = parser.parse_args(unparsed_args, namespace=global_args)
+
+        if getattr(args, 'parserecipes', False):
+            tinfoil.config_data.disableTracking()
+            tinfoil.parseRecipes()
+            tinfoil.config_data.enableTracking()
+
+        return args.func(args)
+    finally:
+        tinfoil.shutdown()
 
 
 if __name__ == "__main__":
     try:
         ret = main()
+    except bb.BBHandledException:
+        ret = 1
     except Exception:
         ret = 1
         import traceback
diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake-prserv b/import-layers/yocto-poky/bitbake/bin/bitbake-prserv
index 0382144..f38d2dd 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitbake-prserv
+++ b/import-layers/yocto-poky/bitbake/bin/bitbake-prserv
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys,logging
 import optparse
diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake-selftest b/import-layers/yocto-poky/bitbake/bin/bitbake-selftest
index 462eb1b..380e003 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitbake-selftest
+++ b/import-layers/yocto-poky/bitbake/bin/bitbake-selftest
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (C) 2012 Richard Purdie
 #
@@ -25,31 +25,48 @@
 except RuntimeError as exc:
     sys.exit(str(exc))
 
-def usage():
-    print('usage: [BB_SKIP_NETTESTS=yes] %s [-v] [testname1 [testname2]...]' % os.path.basename(sys.argv[0]))
-
-verbosity = 1
-
-tests = sys.argv[1:]
-if '-v' in sys.argv:
-    tests.remove('-v')
-    verbosity = 2
-
-if tests:
-    if '--help' in sys.argv[1:]:
-        usage()
-        sys.exit(0)
-else:
-    tests = ["bb.tests.codeparser",
-             "bb.tests.cow",
-             "bb.tests.data",
-             "bb.tests.fetch",
-             "bb.tests.parse",
-             "bb.tests.utils"]
+tests = ["bb.tests.codeparser",
+         "bb.tests.cow",
+         "bb.tests.data",
+         "bb.tests.fetch",
+         "bb.tests.parse",
+         "bb.tests.utils"]
 
 for t in tests:
     t = '.'.join(t.split('.')[:3])
     __import__(t)
 
-unittest.main(argv=["bitbake-selftest"] + tests, verbosity=verbosity)
 
+# Set-up logging
+class StdoutStreamHandler(logging.StreamHandler):
+    """Special handler so that unittest is able to capture stdout"""
+    def __init__(self):
+        # Override __init__() because we don't want to set self.stream here
+        logging.Handler.__init__(self)
+
+    @property
+    def stream(self):
+        # We want to dynamically write wherever sys.stdout is pointing to
+        return sys.stdout
+
+
+handler = StdoutStreamHandler()
+bb.logger.addHandler(handler)
+bb.logger.setLevel(logging.DEBUG)
+
+
+ENV_HELP = """\
+Environment variables:
+  BB_SKIP_NETTESTS      set to 'yes' in order to skip tests using network
+                        connection
+  BB_TMPDIR_NOCLEAN     set to 'yes' to preserve test tmp directories
+"""
+
+class main(unittest.main):
+    def _print_help(self, *args, **kwargs):
+        super(main, self)._print_help(*args, **kwargs)
+        print(ENV_HELP)
+
+
+if __name__ == '__main__':
+        main(defaultTest=tests, buffer=True)
diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake-worker b/import-layers/yocto-poky/bitbake/bin/bitbake-worker
index 767a1c0..500f2ad 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitbake-worker
+++ b/import-layers/yocto-poky/bitbake/bin/bitbake-worker
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import os
 import sys
@@ -10,8 +10,12 @@
 import select
 import errno
 import signal
+import pickle
 from multiprocessing import Lock
 
+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.")
+
 # Users shouldn't be running this code directly
 if len(sys.argv) != 2 or not sys.argv[1].startswith("decafbad"):
     print("bitbake-worker is meant for internal execution by bitbake itself, please don't use it standalone.")
@@ -30,19 +34,16 @@
 # updates to log files for use with tail
 try:
     if sys.stdout.name == '<stdout>':
-        sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
+        import fcntl
+        fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
+        fl |= os.O_SYNC 
+        fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)
+        #sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
 except:
     pass
 
 logger = logging.getLogger("BitBake")
 
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-    bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
-
-
 worker_pipe = sys.stdout.fileno()
 bb.utils.nonblockingfd(worker_pipe)
 # Need to guard against multiprocessing being used in child processes
@@ -62,10 +63,10 @@
     consolelog.setFormatter(conlogformat)
     logger.addHandler(consolelog)
 
-worker_queue = ""
+worker_queue = b""
 
 def worker_fire(event, d):
-    data = "<event>" + pickle.dumps(event) + "</event>"
+    data = b"<event>" + pickle.dumps(event) + b"</event>"
     worker_fire_prepickled(data)
 
 def worker_fire_prepickled(event):
@@ -91,7 +92,7 @@
     global worker_pipe
     global worker_pipe_lock
 
-    data = "<event>" + pickle.dumps(event) + "</event>"
+    data = b"<event>" + pickle.dumps(event) + b"</event>"
     try:
         worker_pipe_lock.acquire()
         worker_pipe.write(data)
@@ -114,7 +115,7 @@
     os.killpg(0, signal.SIGTERM)
     sys.exit()
 
-def fork_off_task(cfg, data, workerdata, fn, task, taskname, appends, taskdepdata, quieterrors=False):
+def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, appends, taskdepdata, quieterrors=False):
     # We need to setup the environment BEFORE the fork, since
     # a fork() or exec*() activates PSEUDO...
 
@@ -159,7 +160,8 @@
         pipeout = os.fdopen(pipeout, 'wb', 0)
         pid = os.fork()
     except OSError as e:
-        bb.msg.fatal("RunQueue", "fork failed: %d (%s)" % (e.errno, e.strerror))
+        logger.critical("fork failed: %d (%s)" % (e.errno, e.strerror))
+        sys.exit(1)
 
     if pid == 0:
         def child():
@@ -191,15 +193,19 @@
             if umask:
                 os.umask(umask)
 
-            data.setVar("BB_WORKERCONTEXT", "1")
-            data.setVar("BB_TASKDEPDATA", taskdepdata)
-            data.setVar("BUILDNAME", workerdata["buildname"])
-            data.setVar("DATE", workerdata["date"])
-            data.setVar("TIME", workerdata["time"])
-            bb.parse.siggen.set_taskdata(workerdata["sigdata"])
-            ret = 0
             try:
-                the_data = bb.cache.Cache.loadDataFull(fn, appends, data)
+                bb_cache = bb.cache.NoCache(databuilder)
+                (realfn, virtual, mc) = bb.cache.virtualfn2realfn(fn)
+                the_data = databuilder.mcdata[mc]
+                the_data.setVar("BB_WORKERCONTEXT", "1")
+                the_data.setVar("BB_TASKDEPDATA", taskdepdata)
+                the_data.setVar("BUILDNAME", workerdata["buildname"])
+                the_data.setVar("DATE", workerdata["date"])
+                the_data.setVar("TIME", workerdata["time"])
+                bb.parse.siggen.set_taskdata(workerdata["sigdata"])
+                ret = 0
+
+                the_data = bb_cache.loadDataFull(fn, appends)
                 the_data.setVar('BB_TASKHASH', workerdata["runq_hash"][task])
 
                 bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN", True), taskname.replace("do_", "")))
@@ -207,14 +213,24 @@
                 # exported_vars() returns a generator which *cannot* be passed to os.environ.update() 
                 # successfully. We also need to unset anything from the environment which shouldn't be there 
                 exports = bb.data.exported_vars(the_data)
+
                 bb.utils.empty_environment()
                 for e, v in exports:
                     os.environ[e] = v
+
                 for e in fakeenv:
                     os.environ[e] = fakeenv[e]
                     the_data.setVar(e, fakeenv[e])
                     the_data.setVarFlag(e, 'export', "1")
 
+                task_exports = the_data.getVarFlag(taskname, 'exports', True)
+                if task_exports:
+                    for e in task_exports.split():
+                        the_data.setVarFlag(e, 'export', '1')
+                        v = the_data.getVar(e, True)
+                        if v is not None:
+                            os.environ[e] = v
+
                 if quieterrors:
                     the_data.setVarFlag(taskname, "quieterrors", "1")
 
@@ -240,7 +256,7 @@
                 bb.utils.process_profilelog(profname)
                 os._exit(ret)
     else:
-        for key, value in envbackup.iteritems():
+        for key, value in iter(envbackup.items()):
             if value is None:
                 del os.environ[key]
             else:
@@ -257,22 +273,22 @@
         if pipeout:
             pipeout.close()
         bb.utils.nonblockingfd(self.input)
-        self.queue = ""
+        self.queue = b""
 
     def read(self):
         start = len(self.queue)
         try:
-            self.queue = self.queue + self.input.read(102400)
+            self.queue = self.queue + (self.input.read(102400) or b"")
         except (OSError, IOError) as e:
             if e.errno != errno.EAGAIN:
                 raise
 
         end = len(self.queue)
-        index = self.queue.find("</event>")
+        index = self.queue.find(b"</event>")
         while index != -1:
             worker_fire_prepickled(self.queue[:index+8])
             self.queue = self.queue[index+8:]
-            index = self.queue.find("</event>")
+            index = self.queue.find(b"</event>")
         return (end > start)
 
     def close(self):
@@ -288,7 +304,7 @@
     def __init__(self, din):
         self.input = din
         bb.utils.nonblockingfd(self.input)
-        self.queue = ""
+        self.queue = b""
         self.cookercfg = None
         self.databuilder = None
         self.data = None
@@ -325,12 +341,12 @@
                 except (OSError, IOError):
                     pass
             if len(self.queue):
-                self.handle_item("cookerconfig", self.handle_cookercfg)
-                self.handle_item("workerdata", self.handle_workerdata)
-                self.handle_item("runtask", self.handle_runtask)
-                self.handle_item("finishnow", self.handle_finishnow)
-                self.handle_item("ping", self.handle_ping)
-                self.handle_item("quit", self.handle_quit)
+                self.handle_item(b"cookerconfig", self.handle_cookercfg)
+                self.handle_item(b"workerdata", self.handle_workerdata)
+                self.handle_item(b"runtask", self.handle_runtask)
+                self.handle_item(b"finishnow", self.handle_finishnow)
+                self.handle_item(b"ping", self.handle_ping)
+                self.handle_item(b"quit", self.handle_quit)
 
             for pipe in self.build_pipes:
                 self.build_pipes[pipe].read()
@@ -340,12 +356,12 @@
 
 
     def handle_item(self, item, func):
-        if self.queue.startswith("<" + item + ">"):
-            index = self.queue.find("</" + item + ">")
+        if self.queue.startswith(b"<" + item + b">"):
+            index = self.queue.find(b"</" + item + b">")
             while index != -1:
                 func(self.queue[(len(item) + 2):index])
                 self.queue = self.queue[(index + len(item) + 3):]
-                index = self.queue.find("</" + item + ">")
+                index = self.queue.find(b"</" + item + b">")
 
     def handle_cookercfg(self, data):
         self.cookercfg = pickle.loads(data)
@@ -359,12 +375,13 @@
         bb.msg.loggerDefaultVerbose = self.workerdata["logdefaultverbose"]
         bb.msg.loggerVerboseLogs = self.workerdata["logdefaultverboselogs"]
         bb.msg.loggerDefaultDomains = self.workerdata["logdefaultdomain"]
-        self.data.setVar("PRSERV_HOST", self.workerdata["prhost"])
+        for mc in self.databuilder.mcdata:
+            self.databuilder.mcdata[mc].setVar("PRSERV_HOST", self.workerdata["prhost"])
 
     def handle_ping(self, _):
         workerlog_write("Handling ping\n")
 
-        logger.warn("Pong from bitbake-worker!")
+        logger.warning("Pong from bitbake-worker!")
 
     def handle_quit(self, data):
         workerlog_write("Handling quit\n")
@@ -377,7 +394,7 @@
         fn, task, taskname, quieterrors, appends, taskdepdata = pickle.loads(data)
         workerlog_write("Handling runtask %s %s %s\n" % (task, fn, taskname))
 
-        pid, pipein, pipeout = fork_off_task(self.cookercfg, self.data, self.workerdata, fn, task, taskname, appends, taskdepdata, quieterrors)
+        pid, pipein, pipeout = fork_off_task(self.cookercfg, self.data, self.databuilder, self.workerdata, fn, task, taskname, appends, taskdepdata, quieterrors)
 
         self.build_pids[pid] = task
         self.build_pipes[pid] = runQueueWorkerPipe(pipein, pipeout)
@@ -409,12 +426,12 @@
         self.build_pipes[pid].close()
         del self.build_pipes[pid]
 
-        worker_fire_prepickled("<exitcode>" + pickle.dumps((task, status)) + "</exitcode>")
+        worker_fire_prepickled(b"<exitcode>" + pickle.dumps((task, status)) + b"</exitcode>")
 
     def handle_finishnow(self, _):
         if self.build_pids:
             logger.info("Sending SIGTERM to remaining %s tasks", len(self.build_pids))
-            for k, v in self.build_pids.iteritems():
+            for k, v in iter(self.build_pids.items()):
                 try:
                     os.kill(-k, signal.SIGTERM)
                     os.waitpid(-1, 0)
@@ -424,7 +441,7 @@
             self.build_pipes[pipe].read()
 
 try:
-    worker = BitbakeWorker(sys.stdin)
+    worker = BitbakeWorker(os.fdopen(sys.stdin.fileno(), 'rb'))
     if not profiling:
         worker.serve()
     else:
diff --git a/import-layers/yocto-poky/bitbake/bin/bitdoc b/import-layers/yocto-poky/bitbake/bin/bitdoc
index defb3dd..2744678 100755
--- a/import-layers/yocto-poky/bitbake/bin/bitdoc
+++ b/import-layers/yocto-poky/bitbake/bin/bitdoc
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
diff --git a/import-layers/yocto-poky/bitbake/bin/image-writer b/import-layers/yocto-poky/bitbake/bin/image-writer
deleted file mode 100755
index e30ab45..0000000
--- a/import-layers/yocto-poky/bitbake/bin/image-writer
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2012 Wind River Systems, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-import os
-import sys
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname( \
-                                    os.path.abspath(__file__))), 'lib'))
-try:
-    import bb
-except RuntimeError as exc:
-    sys.exit(str(exc))
-
-import gtk
-import optparse
-import pygtk
-
-from bb.ui.crumbs.hobwidget import HobAltButton, HobButton
-from bb.ui.crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog
-from bb.ui.crumbs.hig.deployimagedialog import DeployImageDialog
-from bb.ui.crumbs.hig.imageselectiondialog import ImageSelectionDialog
-
-# I put all the fs bitbake supported here. Need more test.
-DEPLOYABLE_IMAGE_TYPES = ["jffs2", "cramfs", "ext2", "ext3", "ext4", "btrfs", "squashfs", "ubi", "vmdk"]
-Title = "USB Image Writer"
-
-class DeployWindow(gtk.Window):
-    def __init__(self, image_path=''):
-        super(DeployWindow, self).__init__()
-
-        if len(image_path) > 0:
-            valid = True
-            if not os.path.exists(image_path):
-                valid = False
-                lbl = "<b>Invalid image file path: %s.</b>\nPress <b>Select Image</b> to select an image." % image_path
-            else:
-                image_path = os.path.abspath(image_path)
-                extend_name = os.path.splitext(image_path)[1][1:]
-                if extend_name not in DEPLOYABLE_IMAGE_TYPES:
-                    valid = False
-                    lbl = "<b>Undeployable imge type: %s</b>\nPress <b>Select Image</b> to select an image." % extend_name
-
-            if not valid:
-                image_path = ''
-                crumbs_dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
-                button = crumbs_dialog.add_button("Close", gtk.RESPONSE_OK)
-                HobButton.style_button(button)
-                crumbs_dialog.run()
-                crumbs_dialog.destroy()
-
-        self.deploy_dialog = DeployImageDialog(Title, image_path, self,
-                                        gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT
-                                        | gtk.DIALOG_NO_SEPARATOR, None, standalone=True)
-        close_button = self.deploy_dialog.add_button("Close", gtk.RESPONSE_NO)
-        HobAltButton.style_button(close_button)
-        close_button.connect('clicked', gtk.main_quit)
-
-        write_button = self.deploy_dialog.add_button("Write USB image", gtk.RESPONSE_YES)
-        HobAltButton.style_button(write_button)
-
-        self.deploy_dialog.connect('select_image_clicked', self.select_image_clicked_cb)
-        self.deploy_dialog.connect('destroy', gtk.main_quit)
-        response = self.deploy_dialog.show()
-
-    def select_image_clicked_cb(self, dialog):
-        cwd = os.getcwd()
-        dialog = ImageSelectionDialog(cwd, DEPLOYABLE_IMAGE_TYPES, Title, self, gtk.FILE_CHOOSER_ACTION_SAVE )
-        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
-        HobAltButton.style_button(button)
-        button = dialog.add_button("Open", gtk.RESPONSE_YES)
-        HobAltButton.style_button(button)
-        response = dialog.run()
-
-        if response == gtk.RESPONSE_YES:
-            if not dialog.image_names:
-                lbl = "<b>No selections made</b>\nClicked the radio button to select a image."
-                crumbs_dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
-                button = crumbs_dialog.add_button("Close", gtk.RESPONSE_OK)
-                HobButton.style_button(button)
-                crumbs_dialog.run()
-                crumbs_dialog.destroy()
-                dialog.destroy()
-                return
-
-            # get the full path of image
-            image_path = os.path.join(dialog.image_folder, dialog.image_names[0])
-            self.deploy_dialog.set_image_text_buffer(image_path)
-            self.deploy_dialog.set_image_path(image_path)
-
-        dialog.destroy()
-
-def main():
-    parser = optparse.OptionParser(
-                usage = """%prog [-h] [image_file]
-
-%prog writes bootable images to USB devices. You can
-provide the image file on the command line or select it using the GUI.""")
-
-    options, args = parser.parse_args(sys.argv)
-    image_file = args[1] if len(args) > 1 else ''
-    dw = DeployWindow(image_file)
-
-if __name__ == '__main__':
-    try:
-        main()
-        gtk.main()
-    except Exception:
-        import traceback
-        traceback.print_exc()
diff --git a/import-layers/yocto-poky/bitbake/bin/toaster b/import-layers/yocto-poky/bitbake/bin/toaster
index 70c66d2..f92d38e 100755
--- a/import-layers/yocto-poky/bitbake/bin/toaster
+++ b/import-layers/yocto-poky/bitbake/bin/toaster
@@ -17,10 +17,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program. If not, see http://www.gnu.org/licenses/.
 
-# Usage: source toaster [start|stop]
-#                       [webport=<port>] [noui] [noweb]
-
-# Helper function to kill a background toaster development server
+HELP="
+Usage: source toaster start|stop [webport=<address:port>] [noweb]
+    Optional arguments:
+        [noweb] Setup the environment for building with toaster but don't start the development server
+        [webport] Set the development server (default: localhost:8000)
+"
 
 webserverKillAll()
 {
@@ -31,9 +33,6 @@
             while kill -0 $pid 2>/dev/null; do
                 kill -SIGTERM -$pid 2>/dev/null
                 sleep 1
-                # Kill processes if they are still running - may happen
-                # in interactive shells
-                ps fux | grep "python.*manage.py runserver" | awk '{print $2}' | xargs kill
             done
             rm  ${pidfile}
         fi
@@ -57,7 +56,8 @@
         echo "Failed migrations, aborting system start" 1>&2
         return $retval
     fi
-
+    # Make sure that checksettings can pick up any value for TEMPLATECONF
+    export TEMPLATECONF
     $MANAGE checksettings --traceback || retval=1
 
     if [ $retval -eq 1 ]; then
@@ -67,7 +67,7 @@
 
     echo "Starting webserver..."
 
-    $MANAGE runserver "0.0.0.0:$WEB_PORT" \
+    $MANAGE runserver "$ADDR_PORT" \
            </dev/null >>${BUILDDIR}/toaster_web.log 2>&1 \
            & echo $! >${BUILDDIR}/.toastermain.pid
 
@@ -77,7 +77,8 @@
         retval=1
         rm "${BUILDDIR}/.toastermain.pid"
     else
-        echo "Webserver address:  http://0.0.0.0:$WEB_PORT/"
+        echo "Toaster development webserver started at http://$ADDR_PORT"
+        echo -e "\nYou can now run 'bitbake <target>' on the command line and monitor your build in Toaster.\nYou can also use a Toaster project to configure and run a build.\n"
     fi
 
     return $retval
@@ -91,14 +92,8 @@
     # prevent reentry
     if [ $INSTOPSYSTEM -eq 1 ]; then return; fi
     INSTOPSYSTEM=1
-    if [ -f ${BUILDDIR}/.toasterui.pid ]; then
-        kill `cat ${BUILDDIR}/.toasterui.pid` 2>/dev/null
-        rm ${BUILDDIR}/.toasterui.pid
-    fi
     webserverKillAll
     # unset exported variables
-    unset DATABASE_URL
-    unset TOASTER_CONF
     unset TOASTER_DIR
     unset BITBAKE_UI
     unset BBBASEDIR
@@ -109,11 +104,11 @@
 
 verify_prereq() {
     # Verify Django version
-    reqfile=$(python -c "import os; print os.path.realpath('$BBBASEDIR/toaster-requirements.txt')")
+    reqfile=$(python3 -c "import os; print(os.path.realpath('$BBBASEDIR/toaster-requirements.txt'))")
     exp='s/Django\([><=]\+\)\([^,]\+\),\([><=]\+\)\(.\+\)/'
     exp=$exp'import sys,django;version=django.get_version().split(".");'
     exp=$exp'sys.exit(not (version \1 "\2".split(".") and version \3 "\4".split(".")))/p'
-    if ! sed -n "$exp" $reqfile | python - ; then
+    if ! sed -n "$exp" $reqfile | python3 - ; then
         req=`grep ^Django $reqfile`
         echo "This program needs $req"
         echo "Please install with pip install -r $reqfile"
@@ -133,8 +128,8 @@
 fi
 
 export BBBASEDIR=`dirname $TOASTER`/..
-MANAGE=$BBBASEDIR/lib/toaster/manage.py
-OEROOT=`dirname $TOASTER`/../..
+MANAGE="python3 $BBBASEDIR/lib/toaster/manage.py"
+OE_ROOT=`dirname $TOASTER`/../..
 
 # this is the configuraton file we are using for toaster
 # we are using the same logic that oe-setup-builddir uses
@@ -144,29 +139,17 @@
 # in the local layers that currently make using an arbitrary
 # toasterconf.json difficult.
 
-. $OEROOT/.templateconf
+. $OE_ROOT/.templateconf
 if [ -n "$TEMPLATECONF" ]; then
     if [ ! -d "$TEMPLATECONF" ]; then
         # Allow TEMPLATECONF=meta-xyz/conf as a shortcut
-        if [ -d "$OEROOT/$TEMPLATECONF" ]; then
-            TEMPLATECONF="$OEROOT/$TEMPLATECONF"
-        fi
-        if [ ! -d "$TEMPLATECONF" ]; then
-            echo >&2 "Error: '$TEMPLATECONF' must be a directory containing toasterconf.json"
-            return 1
+        if [ -d "$OE_ROOT/$TEMPLATECONF" ]; then
+            TEMPLATECONF="$OE_ROOT/$TEMPLATECONF"
         fi
     fi
 fi
 
-if [ "$TOASTER_CONF" = "" ]; then
-    TOASTER_CONF="$TEMPLATECONF/toasterconf.json"
-    export TOASTER_CONF=$(python -c "import os; print os.path.realpath('$TOASTER_CONF')")
-fi
-
-if [ ! -f $TOASTER_CONF ]; then
-    echo "$TOASTER_CONF configuration file not found. Set TOASTER_CONF to specify file or fix .templateconf"
-    return 1
-fi
+unset OE_ROOT
 
 # this defines the dir toaster will use for
 # 1) clones of layers (in _toaster_clones )
@@ -178,7 +161,7 @@
 export TOASTER_DIR=`pwd`
 
 WEBSERVER=1
-WEB_PORT="8000"
+ADDR_PORT="localhost:8000"
 unset CMD
 for param in $*; do
     case $param in
@@ -192,7 +175,24 @@
             CMD=$param
     ;;
     webport=*)
-            WEB_PORT="${param#*=}"
+            ADDR_PORT="${param#*=}"
+            # Split the addr:port string
+            ADDR=`echo $ADDR_PORT | cut -f 1 -d ':'`
+            PORT=`echo $ADDR_PORT | cut -f 2 -d ':'`
+            # If only a port has been speified then set address to localhost.
+            if [ $ADDR = $PORT ] ; then
+                ADDR_PORT="localhost:$PORT"
+            fi
+    ;;
+    --help)
+            echo "$HELP"
+            return 0
+    ;;
+    *)
+            echo "$HELP"
+            return 1
+    ;;
+
     esac
 done
 
@@ -226,11 +226,9 @@
 	return 1
 fi
 elif [ "$CMD" = "" ]; then
-    if [ -z "$BBSERVER" ]; then
-        CMD="start"
-    else
-        CMD="stop"
-    fi
+    echo "No command specified"
+    echo "$HELP"
+    return 1
 fi
 
 echo "The system will $CMD."
@@ -241,15 +239,9 @@
     start )
         # check if addr:port is not in use
         if [ "$CMD" == 'start' ]; then
-             $MANAGE checksocket "0.0.0.0:$WEB_PORT" || return 1
-        fi
-
-        # kill Toaster web server if it's alive
-        if [ -e $BUILDDIR/.toastermain.pid ] && kill -0 `cat $BUILDDIR/.toastermain.pid`; then
-            echo "Warning: bitbake appears to be dead, but the Toaster web server is running." 1>&2
-            echo " Something fishy is going on." 1>&2
-            echo "Cleaning up the web server to start from a clean slate."
-            webserverKillAll
+            if [ $WEBSERVER -gt 0 ]; then
+                $MANAGE checksocket "$ADDR_PORT" || return 1
+            fi
         fi
 
         # Create configuration file
@@ -262,7 +254,6 @@
             return 4
         fi
         export BITBAKE_UI='toasterui'
-        export DATABASE_URL=`$MANAGE get-dburl`
         $MANAGE runbuilds & echo $! >${BUILDDIR}/.runbuilds.pid
         # set fail safe stop system on terminal exit
         trap stop_system SIGHUP
diff --git a/import-layers/yocto-poky/bitbake/bin/toaster-eventreplay b/import-layers/yocto-poky/bitbake/bin/toaster-eventreplay
index 615a7ae..80967a0 100755
--- a/import-layers/yocto-poky/bitbake/bin/toaster-eventreplay
+++ b/import-layers/yocto-poky/bitbake/bin/toaster-eventreplay
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -21,154 +21,106 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
+"""
+This command takes a filename as a single parameter. The filename is read
+as a build eventlog, and the ToasterUI is used to process events in the file
+and log data in the database
+"""
 
-# This command takes a filename as a single parameter. The filename is read
-# as a build eventlog, and the ToasterUI is used to process events in the file
-# and log data in the database
-
-from __future__ import print_function
 import os
-import sys, logging
+import sys
+import json
+import pickle
+import codecs
+
+from collections import namedtuple
 
 # mangle syspath to allow easy import of modules
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
-                                'lib'))
-
+from os.path import join, dirname, abspath
+sys.path.insert(0, join(dirname(dirname(abspath(__file__))), 'lib'))
 
 import bb.cooker
 from bb.ui import toasterui
-import sys
-import logging
 
-import json, pickle
+class EventPlayer:
+    """Emulate a connection to a bitbake server."""
 
+    def __init__(self, eventfile, variables):
+        self.eventfile = eventfile
+        self.variables = variables
+        self.eventmask = []
 
-class FileReadEventsServerConnection():
-    """  Emulates a connection to a bitbake server that feeds
-        events coming actually read from a saved log file.
-    """
+    def waitEvent(self, _timeout):
+        """Read event from the file."""
+        line = self.eventfile.readline().strip()
+        if not line:
+            return
+        try:
+            event_str = json.loads(line)['vars'].encode('utf-8')
+            event = pickle.loads(codecs.decode(event_str, 'base64'))
+            event_name = "%s.%s" % (event.__module__, event.__class__.__name__)
+            if event_name not in self.eventmask:
+                return
+            return event
+        except ValueError as err:
+            print("Failed loading ", line)
+            raise err
 
-    class MockConnection():
-        """ fill-in for the proxy to the server. we just return generic data
+    def runCommand(self, command_line):
+        """Emulate running a command on the server."""
+        name = command_line[0]
+
+        if name == "getVariable":
+            var_name = command_line[1]
+            variable = self.variables.get(var_name)
+            if variable:
+                return variable['v'], None
+            return None, "Missing variable %s" % var_name
+
+        elif name == "getAllKeysWithFlags":
+            dump = {}
+            flaglist = command_line[1]
+            for key, val in self.variables.items():
+                try:
+                    if not key.startswith("__"):
+                        dump[key] = {
+                            'v': val['v'],
+                            'history' : val['history'],
+                        }
+                        for flag in flaglist:
+                            dump[key][flag] = val[flag]
+                except Exception as err:
+                    print(err)
+            return (dump, None)
+
+        elif name == 'setEventMask':
+            self.eventmask = command_line[-1]
+            return True, None
+
+        else:
+            raise Exception("Command %s not implemented" % command_line[0])
+
+    def getEventHandle(self):
         """
-        def __init__(self, sc):
-            self._sc = sc
+        This method is called by toasterui.
+        The return value is passed to self.runCommand but not used there.
+        """
+        pass
 
-        def runCommand(self, commandArray):
-            """ emulates running a command on the server; only read-only commands are accepted """
-            command_name = commandArray[0]
+def main(argv):
+    with open(argv[-1]) as eventfile:
+        # load variables from the first line
+        variables = json.loads(eventfile.readline().strip())['allvariables']
 
-            if command_name == "getVariable":
-                if commandArray[1] in self._sc._variables:
-                    return (self._sc._variables[commandArray[1]]['v'], None)
-                return (None, "Missing variable")
+        params = namedtuple('ConfigParams', ['observe_only'])(True)
+        player = EventPlayer(eventfile, variables)
 
-            elif command_name == "getAllKeysWithFlags":
-                dump = {}
-                flaglist = commandArray[1]
-                for k in self._sc._variables.keys():
-                    try:
-                        if not k.startswith("__"):
-                            v = self._sc._variables[k]['v']
-                            dump[k] = {
-                                'v' : v ,
-                                'history' : self._sc._variables[k]['history'],
-                            }
-                            for d in flaglist:
-                                dump[k][d] = self._sc._variables[k][d]
-                    except Exception as e:
-                        print(e)
-                return (dump, None)
-            else:
-                raise Exception("Command %s not implemented" % commandArray[0])
-
-        def terminateServer(self):
-            """ do not do anything """
-            pass
-
-
-
-    class EventReader():
-        def __init__(self, sc):
-            self._sc = sc
-            self.firstraise = 0
-
-        def _create_event(self, line):
-            def _import_class(name):
-                assert len(name) > 0
-                assert "." in name, name
-
-                components = name.strip().split(".")
-                modulename = ".".join(components[:-1])
-                moduleklass = components[-1]
-
-                module = __import__(modulename, fromlist=[str(moduleklass)])
-                return getattr(module, moduleklass)
-
-            # we build a toaster event out of current event log line
-            try:
-                event_data = json.loads(line.strip())
-                event_class = _import_class(event_data['class'])
-                event_object = pickle.loads(json.loads(event_data['vars']))
-            except ValueError as e:
-                print("Failed loading ", line)
-                raise e
-
-            if not isinstance(event_object, event_class):
-                raise Exception("Error loading objects %s class %s ", event_object, event_class)
-
-            return event_object
-
-        def waitEvent(self, timeout):
-
-            nextline = self._sc._eventfile.readline()
-            if len(nextline) == 0:
-                # the build data ended, while toasterui still waits for events.
-                # this happens when the server was abruptly stopped, so we simulate this
-                self.firstraise += 1
-                if self.firstraise == 1:
-                    raise KeyboardInterrupt()
-                else:
-                    return None
-            else:
-                self._sc.lineno += 1
-            return self._create_event(nextline)
-
-
-    def _readVariables(self, variableline):
-        self._variables = json.loads(variableline.strip())['allvariables']
-
-
-    def __init__(self, file_name):
-        self.connection = FileReadEventsServerConnection.MockConnection(self)
-        self._eventfile = open(file_name, "r")
-
-        # we expect to have the variable dump at the start of the file
-        self.lineno = 1
-        self._readVariables(self._eventfile.readline())
-
-        self.events = FileReadEventsServerConnection.EventReader(self)
-
-
-
-
-
-class MockConfigParameters():
-    """ stand-in for cookerdata.ConfigParameters; as we don't really config a cooker, this
-        serves just to supply needed interfaces for the toaster ui to work """
-    def __init__(self):
-        self.observe_only = True            # we can only read files
-
+        return toasterui.main(player, player, params)
 
 # run toaster ui on our mock bitbake class
 if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print("Usage: %s event.log " % sys.argv[0])
+    if len(sys.argv) != 2:
+        print("Usage: %s <event file>" % os.path.basename(sys.argv[0]))
         sys.exit(1)
 
-    file_name = sys.argv[-1]
-    mock_connection = FileReadEventsServerConnection(file_name)
-    configParams = MockConfigParameters()
-
-    # run the main program and set exit code to the returned value
-    sys.exit(toasterui.main(mock_connection.connection, mock_connection.events, configParams))
+    sys.exit(main(sys.argv))
diff --git a/import-layers/yocto-poky/bitbake/contrib/dump_cache.py b/import-layers/yocto-poky/bitbake/contrib/dump_cache.py
index e1f2309..f4d4c1b 100755
--- a/import-layers/yocto-poky/bitbake/contrib/dump_cache.py
+++ b/import-layers/yocto-poky/bitbake/contrib/dump_cache.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -29,14 +29,14 @@
 sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '../lib'))
 from bb.cache import CoreRecipeInfo
 
-import cPickle as pickle
+import pickle as pickle
 
 def main(argv=None):
     """
     Get the mapping for the target recipe.
     """
     if len(argv) != 1:
-        print >>sys.stderr, "Error, need one argument!"
+        print("Error, need one argument!", file=sys.stderr)
         return 2
 
     cachefile = argv[0]
@@ -56,7 +56,7 @@
                     continue
 
                 # 1.0 is the default version for a no PV recipe.
-                if val.__dict__.has_key("pv"):
+                if "pv" in val.__dict__:
                     pv = val.pv
                 else:
                     pv = "1.0"
diff --git a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.xml b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.xml
index b1b72e0..e4cc422 100644
--- a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.xml
+++ b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.xml
@@ -596,7 +596,7 @@
             "<link linkend='checksums'>Checksums (Signatures)</link>"
             section for information).
             It is also possible to append extra metadata to the stamp using
-            the "stamp-extra-info" task flag.
+            the <filename>[stamp-extra-info]</filename> task flag.
             For example, OpenEmbedded uses this flag to make some tasks machine-specific.
         </para>
 
@@ -653,7 +653,8 @@
             </itemizedlist>
             It is possible to have functions run before and after a task's main
             function.
-            This is done using the "prefuncs" and "postfuncs" flags of the task
+            This is done using the <filename>[prefuncs]</filename>
+            and <filename>[postfuncs]</filename> flags of the task
             that lists the functions to run.
         </para>
     </section>
@@ -827,7 +828,7 @@
             itself.
             The simplest parameter to pass is "none", which causes a
             set of signature information to be written out into
-            <filename>STAMP_DIR</filename>
+            <filename>STAMPS_DIR</filename>
             corresponding to the targets specified.
             The other currently available parameter is "printdiff",
             which causes BitBake to try to establish the closest
@@ -915,7 +916,7 @@
         <para>
             Finally, after all the setscene tasks have executed, BitBake calls the
             function listed in
-            <link linkend='var-BB_SETSCENE_VERIFY_FUNCTION'><filename>BB_SETSCENE_VERIFY_FUNCTION</filename></link>
+            <link linkend='var-BB_SETSCENE_VERIFY_FUNCTION2'><filename>BB_SETSCENE_VERIFY_FUNCTION2</filename></link>
             with the list of tasks BitBake thinks has been "covered".
             The metadata can then ensure that this list is correct and can
             inform BitBake that it wants specific tasks to be run regardless
diff --git a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.xml b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.xml
index f168cfa..2a3340b 100644
--- a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.xml
+++ b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.xml
@@ -670,8 +670,8 @@
                             The <filename>module</filename> and <filename>vob</filename>
                             options are combined to create the <filename>load</filename> rule in
                             the view config spec.
-                            As an example, consider the <filename>vob</filename> and 
-                            <filename>module</filename> values from the 
+                            As an example, consider the <filename>vob</filename> and
+                            <filename>module</filename> values from the
                             <filename>SRC_URI</filename> statement at the start of this section.
                             Combining those values results in the following:
                             <literallayout class='monospaced'>
@@ -716,6 +716,68 @@
             </para>
         </section>
 
+        <section id='perforce-fetcher'>
+            <title>Perforce Fetcher (<filename>p4://</filename>)</title>
+
+            <para>
+                This fetcher submodule fetches code from the
+                <ulink url='https://www.perforce.com/'>Perforce</ulink>
+                source control system.
+                The executable used is specified by
+                <filename>FETCHCMD_p4</filename>, which defaults
+                to "p4".
+                The fetcher's temporary working directory is set by
+                <link linkend='var-P4DIR'><filename>P4DIR</filename></link>,
+                which defaults to "DL_DIR/p4".
+            </para>
+
+            <para>
+                To use this fetcher, make sure your recipe has proper
+                <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>,
+                <link linkend='var-SRCREV'><filename>SRCREV</filename></link>, and
+                <link linkend='var-PV'><filename>PV</filename></link> values.
+                The p4 executable is able to use the config file defined by your
+                system's <filename>P4CONFIG</filename> environment variable in
+                order to define the Perforce server URL and port, username, and
+                password if you do not wish to keep those values in a recipe
+                itself.
+                If you choose not to use <filename>P4CONFIG</filename>,
+                or to explicitly set variables that <filename>P4CONFIG</filename>
+                can contain, you can specify the <filename>P4PORT</filename> value,
+                which is the server's URL and port number, and you can
+                specify a username and password directly in your recipe within
+                <filename>SRC_URI</filename>.
+            </para>
+
+            <para>
+                Here is an example that relies on <filename>P4CONFIG</filename>
+                to specify the server URL and port, username, and password, and
+                fetches the Head Revision:
+                <literallayout class='monospaced'>
+    SRC_URI = "p4://example-depot/main/source/..."
+    SRCREV = "${AUTOREV}"
+    PV = "p4-${SRCPV}"
+    S = "${WORKDIR}/p4"
+                </literallayout>
+            </para>
+
+            <para>
+                Here is an example that specifies the server URL and port,
+                username, and password, and fetches a Revision based on a Label:
+                <literallayout class='monospaced'>
+    P4PORT = "tcp:p4server.example.net:1666"
+    SRC_URI = "p4://user:passwd@example-depot/main/source/..."
+    SRCREV = "release-1.0"
+    PV = "p4-${SRCPV}"
+    S = "${WORKDIR}/p4"
+                </literallayout>
+                <note>
+                    You should always set <filename>S</filename>
+                    to <filename>"${WORKDIR}/p4"</filename> in your recipe.
+                </note>
+            </para>
+        </section>
+
         <section id='other-fetchers'>
             <title>Other Fetchers</title>
 
@@ -726,9 +788,6 @@
                         Bazaar (<filename>bzr://</filename>)
                         </para></listitem>
                     <listitem><para>
-                        Perforce (<filename>p4://</filename>)
-                        </para></listitem>
-                    <listitem><para>
                         Trees using Git Annex (<filename>gitannex://</filename>)
                         </para></listitem>
                     <listitem><para>
diff --git a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.xml b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.xml
index f6d82b4..8b7edbf 100644
--- a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.xml
+++ b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.xml
@@ -399,7 +399,7 @@
      <link linkend='var-BBFILES'>BBFILES</link> += "${LAYERDIR}/*.bb"
 
      <link linkend='var-BBFILE_COLLECTIONS'>BBFILE_COLLECTIONS</link> += "mylayer"
-     <link linkend='var-BBFILE_PATTERN'>BBFILE_PATTERN_mylayer</link> := "^${LAYERDIR}/"
+     <link linkend='var-BBFILE_PATTERN'>BBFILE_PATTERN_mylayer</link> := "^${LAYERDIR_RE}/"
                 </literallayout>
                 For information on these variables, click the links
                 to go to the definitions in the glossary.</para>
diff --git a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml
index 7a37edd..4d58dc4 100644
--- a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml
+++ b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml
@@ -634,6 +634,25 @@
                 </para>
             </section>
 
+            <section id='executing-a-list-of-task-and-recipe-combinations'>
+                <title>Executing a List of Task and Recipe Combinations</title>
+
+                <para>
+                    The BitBake command line supports specifying different
+                    tasks for individual targets when you specify multiple
+                    targets.
+                    For example, suppose you had two targets (or recipes)
+                    <filename>myfirstrecipe</filename> and
+                    <filename>mysecondrecipe</filename> and you needed
+                    BitBake to run <filename>taskA</filename> for the first
+                    recipe and <filename>taskB</filename> for the second
+                    recipe:
+                    <literallayout class='monospaced'>
+     $ bitbake myfirstrecipe:do_taskA mysecondrecipe:do_taskB
+                    </literallayout>
+                </para>
+            </section>
+
             <section id='generating-dependency-graphs'>
                 <title>Generating Dependency Graphs</title>
 
diff --git a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml
index 6329cd6..71bb25b 100644
--- a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml
+++ b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml
@@ -44,28 +44,73 @@
      VARIABLE = " "
                 </literallayout>
             </para>
+
+            <para>
+                You can use single quotes instead of double quotes
+                when setting a variable's value.
+                Doing so allows you to use values that contain the double
+                quote character:
+                <literallayout class='monospaced'>
+     VARIABLE = 'I have a " in my value'
+                </literallayout>
+                <note>
+                    Unlike in Bourne shells, single quotes work identically
+                    to double quotes in all other ways.
+                    They do not suppress variable expansions.
+                </note>
+            </para>
         </section>
 
         <section id='variable-expansion'>
             <title>Variable Expansion</title>
 
             <para>
-                BitBake supports variables referencing one another's
-                contents using a syntax that is similar to shell scripting.
-                Following is an example that results in <filename>A</filename>
-                containing "aval" and <filename>B</filename> evaluating to
-                "preavalpost" based on that current value of
-                <filename>A</filename>.
+                Variables can reference the contents of other variables
+                using a syntax that is similar to variable expansion in
+                Bourne shells.
+                The following assignments
+                result in A containing "aval" and B evaluating to "preavalpost".
                 <literallayout class='monospaced'>
      A = "aval"
      B = "pre${A}post"
                 </literallayout>
-                You should realize that whenever <filename>B</filename> is
-                referenced, its evaluation will depend on the state of
-                <filename>A</filename> at that time.
-                Thus, later evaluations of <filename>B</filename> in the
-                previous example could result in different values
-                depending on the value of <filename>A</filename>.
+                <note>
+                    Unlike in Bourne shells, the curly braces are mandatory:
+                    Only <filename>${FOO}</filename> and not
+                    <filename>$FOO</filename> is recognized as an expansion of
+                    <filename>FOO</filename>.
+                </note>
+                The "=" operator does not immediately expand variable
+                references in the right-hand side.
+                Instead, expansion is deferred until the variable assigned to
+                is actually used.
+                The result depends on the current values of the referenced
+                variables.
+                The following example should clarify this behavior:
+                <literallayout class='monospaced'>
+     A = "${B} baz"
+     B = "${C} bar"
+     C = "foo"
+     *At this point, ${A} equals "foo bar baz"*
+     C = "qux"
+     *At this point, ${A} equals "qux bar baz"*
+     B = "norf"
+     *At this point, ${A} equals "norf baz"*
+                </literallayout>
+                Contrast this behavior with the
+                <link linkend='immediate-variable-expansion'>immediate variable expansion</link>
+                operator (i.e. ":=").
+            </para>
+
+            <para>
+                If the variable expansion syntax is used on a variable that
+                does not exist, the string is kept as is.
+                For example, given the following assignment,
+                <filename>BAR</filename> expands to the literal string
+                "${FOO}" as long as <filename>FOO</filename> does not exist.
+                <literallayout class='monospaced'>
+     BAR = "${FOO}"
+                </literallayout>
             </para>
         </section>
 
@@ -232,6 +277,15 @@
                     override syntax.
                 </note>
             </para>
+
+            <para>
+                It is also possible to append and prepend to shell
+                functions and BitBake-style Python functions.
+                See the
+                "<link linkend='shell-functions'>Shell Functions</link>" and
+                "<link linkend='bitbake-style-python-functions'>BitBake-Style Python Functions</link>
+                sections for examples.
+            </para>
         </section>
 
         <section id='removing-override-style-syntax'>
@@ -259,6 +313,60 @@
                 "789 123456" and <filename>FOO2</filename> becomes
                 "ghi abcdef".
             </para>
+
+            <para>
+                Like "_append" and "_prepend", "_remove"
+                is deferred until after parsing completes.
+            </para>
+        </section>
+
+        <section id='override-style-operation-advantages'>
+            <title>Override Style Operation Advantages</title>
+
+            <para>
+                An advantage of the override style operations
+                "_append", "_prepend", and "_remove" as compared to the
+                "+=" and "=+" operators is that the override style
+                operators provide guaranteed operations.
+                For example, consider a class <filename>foo.bbclass</filename>
+                that needs to add the value "val" to the variable
+                <filename>FOO</filename>, and a recipe that uses
+                <filename>foo.bbclass</filename> as follows:
+                <literallayout class='monospaced'>
+     inherit foo
+
+     FOO = "initial"
+                </literallayout>
+                If <filename>foo.bbclass</filename> uses the "+=" operator,
+                as follows, then the final value of <filename>FOO</filename>
+                will be "initial", which is not what is desired:
+                <literallayout class='monospaced'>
+     FOO += "val"
+                </literallayout>
+                If, on the other hand, <filename>foo.bbclass</filename>
+                uses the "_append" operator, then the final value of
+                <filename>FOO</filename> will be "initial val", as intended:
+                <literallayout class='monospaced'>
+     FOO_append = " val"
+                </literallayout>
+                <note>
+                    It is never necessary to use "+=" together with "_append".
+                    The following sequence of assignments appends "barbaz" to
+                    <filename>FOO</filename>:
+                    <literallayout class='monospaced'>
+     FOO_append = "bar"
+     FOO_append = "baz"
+                    </literallayout>
+                    The only effect of changing the second assignment in the
+                    previous example to use "+=" would be to add a space before
+                    "baz" in the appended value (due to how the "+=" operator
+                    works).
+                </note>
+                Another advantage of the override style operations is that
+                you can combine them with other overrides as described in the
+                "<link linkend='conditional-syntax-overrides'>Conditional Syntax (Overrides)</link>"
+                section.
+            </para>
         </section>
 
         <section id='variable-flag-syntax'>
@@ -277,8 +385,7 @@
                 You can define, append, and prepend values to variable flags.
                 All the standard syntax operations previously mentioned work
                 for variable flags except for override style syntax
-                (i.e. <filename>_prepend</filename>, <filename>_append</filename>,
-                and <filename>_remove</filename>).
+                (i.e. "_prepend", "_append", and "_remove").
             </para>
 
             <para>
@@ -289,9 +396,9 @@
      FOO[a] += "456"
                 </literallayout>
                 The variable <filename>FOO</filename> has two flags:
-                <filename>a</filename> and <filename>b</filename>.
+                <filename>[a]</filename> and <filename>[b]</filename>.
                 The flags are immediately set to "abc" and "123", respectively.
-                The <filename>a</filename> flag becomes "abc 456".
+                The <filename>[a]</filename> flag becomes "abc 456".
             </para>
 
             <para>
@@ -330,9 +437,45 @@
      PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
      PV = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}"
                 </literallayout>
+                <note>
+                    Inline Python expressions work just like variable expansions
+                    insofar as the "=" and ":=" operators are concerned.
+                    Given the following assignment, <filename>foo()</filename>
+                    is called each time <filename>FOO</filename> is expanded:
+                    <literallayout class='monospaced'>
+     FOO = "${@foo()}"
+                    </literallayout>
+                    Contrast this with the following immediate assignment, where
+                    <filename>foo()</filename> is only called once, while the
+                    assignment is parsed:
+                    <literallayout class='monospaced'>
+     FOO := "${@foo()}"
+                    </literallayout>
+                </note>
+                For a different way to set variables with Python code during
+                parsing, see the
+                "<link linkend='anonymous-python-functions'>Anonymous Python Functions</link>"
+                section.
             </para>
         </section>
 
+        <section id='unsetting-variables'>
+            <title>Unseting variables</title>
+
+            <para>
+                It is possible to completely remove a variable or a variable flag 
+                from BitBake's internal data dictionary by using the "unset" keyword.
+                Here is an example:
+                <literallayout class='monospaced'>
+        unset DATE
+        unset do_fetch[noexec]
+                </literallayout>
+                These two statements remove the <filename>DATE</filename> and the 
+                <filename>do_fetch[noexec]</filename> flag.
+            </para>
+
+        </section>
+
         <section id='providing-pathnames'>
             <title>Providing Pathnames</title>
 
@@ -357,6 +500,53 @@
         </section>
     </section>
 
+    <section id='exporting-variables-to-the-environment'>
+        <title>Exporting Variables to the Environment</title>
+
+        <para>
+            You can export variables to the environment of running
+            tasks by using the <filename>export</filename> keyword.
+            For example, in the following example, the
+            <filename>do_foo</filename> task prints "value from
+            the environment" when run:
+            <literallayout class='monospaced'>
+     export ENV_VARIABLE
+     ENV_VARIABLE = "value from the environment"
+
+     do_foo() {
+         bbplain "$ENV_VARIABLE"
+     }
+            </literallayout>
+            <note>
+                BitBake does not expand <filename>$ENV_VARIABLE</filename>
+                in this case because it lacks the obligatory
+                <filename>{}</filename>.
+                Rather, <filename>$ENV_VARIABLE</filename> is expanded
+                by the shell.
+            </note>
+            It does not matter whether
+            <filename>export ENV_VARIABLE</filename> appears before or
+            after assignments to <filename>ENV_VARIABLE</filename>.
+        </para>
+
+        <para>
+            It is also possible to combine <filename>export</filename>
+            with setting a value for the variable.
+            Here is an example:
+            <literallayout class='monospaced'>
+     export ENV_VARIABLE = "<replaceable>variable-value</replaceable>"
+            </literallayout>
+            In the output of <filename>bitbake -e</filename>, variables
+            that are exported to the environment are preceded by "export".
+        </para>
+
+        <para>
+            Among the variables commonly exported to the environment
+            are <filename>CC</filename> and <filename>CFLAGS</filename>,
+            which are picked up by many build systems.
+        </para>
+    </section>
+
     <section id='conditional-syntax-overrides'>
         <title>Conditional Syntax (Overrides)</title>
 
@@ -455,6 +645,34 @@
      KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
                         </literallayout>
                         </para></listitem>
+                    <listitem><para><emphasis>Setting a Variable for a Single Task:</emphasis>
+                        BitBake supports setting a variable just for the
+                        duration of a single task.
+                        Here is an example:
+                        <literallayout class='monospaced'>
+     FOO_task-configure = "val 1"
+     FOO_task-compile = "val 2"
+                        </literallayout>
+                        In the previous example, <filename>FOO</filename>
+                        has the value "val 1" while the
+                        <filename>do_configure</filename> task is executed,
+                        and the value "val 2" while the
+                        <filename>do_compile</filename> task is executed.
+                        </para>
+
+                        <para>Internally, this is implemented by prepending
+                        the task (e.g. "task-compile:") to the value of
+                        <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
+                        for the local datastore of the <filename>do_compile</filename>
+                        task.</para>
+
+                        <para>You can also use this syntax with other combinations
+                        (e.g. "<filename>_prepend</filename>") as shown in the
+                        following example:
+                        <literallayout class='monospaced'>
+     EXTRA_OEMAKE_prepend_task-compile = "${PARALLEL_MAKE} "
+                        </literallayout>
+                        </para></listitem>
                 </itemizedlist>
             </para>
         </section>
@@ -545,15 +763,15 @@
      OVERRIDES = "foo"
      A = "Y"
      A_foo_append = "Z"
-     A_foo_append += "X"
+     A_foo_append = "X"
                 </literallayout>
                 For this case, before any overrides are resolved,
                 <filename>A</filename> is set to "Y" using an immediate assignment.
                 After this immediate assignment, <filename>A_foo</filename> is set
                 to "Z", and then further appended with
-                "X" leaving the variable set to "Z X".
+                "X" leaving the variable set to "ZX".
                 Finally, applying the override for "foo" results in the conditional
-                variable <filename>A</filename> becoming "Z X" (i.e.
+                variable <filename>A</filename> becoming "ZX" (i.e.
                 <filename>A</filename> is replaced with <filename>A_foo</filename>).
             </para>
 
@@ -572,7 +790,7 @@
                 Initially, <filename>A</filename> is set to "1 45" because
                 of the three statements that use immediate operators.
                 After these assignments are made, BitBake applies the
-                <filename>_append</filename> operations.
+                "_append" operations.
                 Those operations result in <filename>A</filename> becoming "1 4523".
             </para>
         </section>
@@ -842,7 +1060,7 @@
                     directly as functions, tasks, or both.
                     They can also be called by other shell functions.
                     </para></listitem>
-                <listitem><para><emphasis>BitBake Style Python Functions:</emphasis>
+                <listitem><para><emphasis>BitBake-Style Python Functions:</emphasis>
                     Functions written in Python and executed by BitBake or other
                     Python functions using <filename>bb.build.exec_func()</filename>.
                     </para></listitem>
@@ -881,10 +1099,60 @@
                 such as <filename>dash</filename>.
                 You should not use Bash-specific script (bashisms).
             </para>
+
+            <para>
+                Overrides and override-style operators like
+                <filename>_append</filename> and
+                <filename>_prepend</filename> can also be applied to
+                shell functions.
+                Most commonly, this application would be used in a
+                <filename>.bbappend</filename> file to modify functions in
+                the main recipe.
+                It can also be used to modify functions inherited from
+                classes.
+            </para>
+
+            <para>
+                As an example, consider the following:
+                <literallayout class='monospaced'>
+     do_foo() {
+         bbplain first
+         fn
+     }
+
+     fn_prepend() {
+         bbplain second
+     }
+
+     fn() {
+         bbplain third
+     }
+
+     do_foo_append() {
+         bbplain fourth
+     }
+                </literallayout>
+                Running <filename>do_foo</filename>
+                prints the following:
+                <literallayout class='monospaced'>
+     recipename do_foo: first
+     recipename do_foo: second
+     recipename do_foo: third
+     recipename do_foo: fourth
+                </literallayout>
+                <note>
+                    Overrides and override-style operators can
+                    be applied to any shell function, not just
+                    <link linkend='tasks'>tasks</link>.
+                </note>
+                You can use the <filename>bitbake -e</filename>&nbsp;<replaceable>recipename</replaceable>
+                command to view the final assembled function
+                after all overrides have been applied.
+            </para>
         </section>
 
         <section id='bitbake-style-python-functions'>
-            <title>BitBake Style Python Functions</title>
+            <title>BitBake-Style Python Functions</title>
 
             <para>
                 These functions are written in Python and executed by
@@ -905,19 +1173,51 @@
                 Also in these types of functions, the datastore ("d")
                 is a global variable and is always automatically
                 available.
-           </para>
+                <note>
+                    Variable expressions (e.g. <filename>${X}</filename>)
+                    are no longer expanded within Python functions.
+                    This behavior is intentional in order to allow you
+                    to freely set variable values to expandable expressions
+                    without having them expanded prematurely.
+                    If you do wish to expand a variable within a Python
+                    function, use <filename>d.getVar("X", True)</filename>.
+                    Or, for more complicated expressions, use
+                    <filename>d.expand()</filename>.
+                </note>
+            </para>
 
-           <note>
-                Variable expressions (e.g. <filename>${X}</filename>) are no
-                longer expanded within Python functions.
-                This behavior is intentional in order to allow you to freely
-                set variable values to expandable expressions without having
-                them expanded prematurely.
-                If you do wish to expand a variable within a Python function,
-                use <filename>d.getVar("X", True)</filename>.
-                Or, for more complicated expressions, use
-                <filename>d.expand()</filename>.
-           </note>
+            <para>
+                Similar to shell functions, you can also apply overrides
+                and override-style operators to BitBake-style Python
+                functions.
+            </para>
+
+            <para>
+                As an example, consider the following:
+                <literallayout class='monospaced'>
+     python do_foo_prepend() {
+         bb.plain("first")
+     }
+
+     python do_foo() {
+         bb.plain("second")
+     }
+
+     python do_foo_append() {
+         bb.plain("third")
+     }
+                </literallayout>
+                Running <filename>do_foo</filename> prints
+                the following:
+                <literallayout class='monospaced'>
+     recipename do_foo: first
+     recipename do_foo: second
+     recipename do_foo: third
+                </literallayout>
+                You can use the <filename>bitbake -e</filename>&nbsp;<replaceable>recipename</replaceable>
+                command to view the final assembled function
+                after all overrides have been applied.
+            </para>
         </section>
 
         <section id='python-functions'>
@@ -961,36 +1261,178 @@
             </para>
         </section>
 
+        <section id='bitbake-style-python-functions-versus-python-functions'>
+            <title>Bitbake-Style Python Functions Versus Python Functions</title>
+
+            <para>
+                Following are some important differences between
+                BitBake-style Python functions and regular Python
+                functions defined with "def":
+                <itemizedlist>
+                    <listitem><para>
+                        Only BitBake-style Python functions can be
+                        <link linkend='tasks'>tasks</link>.
+                        </para></listitem>
+                    <listitem><para>
+                        Overrides and override-style operators can only
+                        be applied to BitBake-style Python functions.
+                        </para></listitem>
+                    <listitem><para>
+                        Only regular Python functions can take arguments
+                        and return values.
+                        </para></listitem>
+                    <listitem><para>
+                        <link linkend='variable-flags'>Variable flags</link>
+                        such as <filename>[dirs]</filename>,
+                        <filename>[cleandirs]</filename>, and
+                        <filename>[lockfiles]</filename> can be used
+                        on BitBake-style Python functions, but not on
+                        regular Python functions.
+                        </para></listitem>
+                    <listitem><para>
+                        BitBake-style Python functions generate a separate
+                        <filename>${</filename><link linkend='var-T'><filename>T</filename></link><filename>}/run.</filename><replaceable>function-name</replaceable><filename>.</filename><replaceable>pid</replaceable>
+                        script that is executed to run the function, and also
+                        generate a log file in
+                        <filename>${T}/log.</filename><replaceable>function-name</replaceable><filename>.</filename><replaceable>pid</replaceable>
+                        if they are executed as tasks.</para>
+
+                        <para>
+                        Regular Python functions execute "inline" and do not
+                        generate any files in <filename>${T}</filename>.
+                        </para></listitem>
+                    <listitem><para>
+                        Regular Python functions are called with the usual
+                        Python syntax.
+                        BitBake-style Python functions are usually tasks and
+                        are called directly by BitBake, but can also be called
+                        manually from Python code by using the
+                        <filename>bb.build.exec_func()</filename> function.
+                        Here is an example:
+                        <literallayout class='monospaced'>
+     bb.build.exec_func("my_bitbake_style_function", d)
+                        </literallayout>
+                        <note>
+                            <filename>bb.build.exec_func()</filename> can also
+                            be used to run shell functions from Python code.
+                            If you want to run a shell function before a Python
+                            function within the same task, then you can use a
+                            parent helper Python function that starts by running
+                            the shell function with
+                            <filename>bb.build.exec_func()</filename> and then
+                            runs the Python code.
+                        </note></para>
+
+                        <para>To detect errors from functions executed with
+                        <filename>bb.build.exec_func()</filename>, you
+                        can catch the <filename>bb.build.FuncFailed</filename>
+                        exception.
+                        <note>
+                            Functions in metadata (recipes and classes) should
+                            not themselves raise
+                            <filename>bb.build.FuncFailed</filename>.
+                            Rather, <filename>bb.build.FuncFailed</filename>
+                            should be viewed as a general indicator that the
+                            called function failed by raising an exception.
+                            For example, an exception raised by
+                            <filename>bb.fatal()</filename> will be caught inside
+                            <filename>bb.build.exec_func()</filename>, and a
+                            <filename>bb.build.FuncFailed</filename> will be raised
+                            in response.
+                        </note>
+                        </para></listitem>
+                </itemizedlist>
+            </para>
+
+            <para>
+                Due to their simplicity, you should prefer regular Python functions
+                over BitBake-style Python functions unless you need a feature specific
+                to BitBake-style Python functions.
+                Regular Python functions in metadata are a more recent invention than
+                BitBake-style Python functions, and older code tends to use
+                <filename>bb.build.exec_func()</filename> more often.
+            </para>
+        </section>
+
         <section id='anonymous-python-functions'>
             <title>Anonymous Python Functions</title>
 
             <para>
-                Sometimes it is useful to run some code during
-                parsing to set variables or to perform other operations
-                programmatically.
-                To do this, you can define an anonymous Python function.
-                Here is an example that conditionally sets a
-                variable based on the value of another variable:
-                <literallayout class='monospaced'>
-     python __anonymous () {
-         if d.getVar('SOMEVAR', True) == 'value':
-             d.setVar('ANOTHERVAR', 'value2')
-     }
-                </literallayout>
-                The "__anonymous" function name is optional, so the
-                following example is functionally equivalent to the above:
+                Sometimes it is useful to set variables or perform
+                other operations programmatically during parsing.
+                To do this, you can define special Python functions,
+                called anonymous Python functions, that run at the
+                end of parsing.
+                For example, the following conditionally sets a variable
+                based on the value of  another variable:
                 <literallayout class='monospaced'>
      python () {
          if d.getVar('SOMEVAR', True) == 'value':
              d.setVar('ANOTHERVAR', 'value2')
      }
                 </literallayout>
-                Because unlike other Python functions anonymous
-                Python functions are executed during parsing, the
-                "d" variable within an anonymous Python function represents
-                the datastore for the entire recipe.
-                Consequently, you can set variable values here and
-                those values can be picked up by other functions.
+                An equivalent way to mark a function as an anonymous
+                function is to give it the name "__anonymous", rather
+                than no name.
+            </para>
+
+            <para>
+                Anonymous Python functions always run at the end
+                of parsing, regardless of where they are defined.
+                If a recipe contains many anonymous functions, they
+                run in the same order as they are defined within the
+                recipe.
+                As an example, consider the following snippet:
+                <literallayout class='monospaced'>
+     python () {
+         d.setVar('FOO', 'foo 2')
+     }
+
+     FOO = "foo 1"
+
+     python () {
+         d.appendVar('BAR', ' bar 2')
+     }
+
+     BAR = "bar 1"
+                </literallayout>
+                The previous example is conceptually equivalent to the
+                following snippet:
+                <literallayout class='monospaced'>
+     FOO = "foo 1"
+     BAR = "bar 1"
+     FOO = "foo 2"
+     BAR += "bar 2"
+                </literallayout>
+                <filename>FOO</filename> ends up with the value "foo 2",
+                and <filename>BAR</filename> with the value "bar 1 bar 2".
+                Just as in the second snippet, the values set for the
+                variables within the anonymous functions become available
+                to tasks, which always run after parsing.
+            </para>
+
+            <para>
+                Overrides and override-style operators such as
+                "<filename>_append</filename>" are applied before
+                anonymous functions run.
+                In the following example, <filename>FOO</filename> ends
+                up with the value "foo from anonymous":
+                <literallayout class='monospaced'>
+     FOO = "foo"
+     FOO_append = " from outside"
+
+     python () {
+         d.setVar("FOO", "foo from anonymous")
+     }
+                </literallayout>
+                For methods you can use with anonymous Python functions,
+                see the
+                "<link linkend='functions-you-can-call-from-within-python'>Functions You Can Call From Within Python</link>"
+                section.
+                For a different method to run Python code during parsing,
+                see the
+                "<link linkend='inline-python-variable-expansion'>Inline Python Variable Expansion</link>"
+                section.
             </para>
         </section>
 
@@ -1089,37 +1531,29 @@
         <title>Tasks</title>
 
         <para>
-            Tasks are BitBake execution units that originate as
-            functions and make up the steps that BitBake needs to run
-            for given recipe.
-            Tasks are only supported in recipe (<filename>.bb</filename>
-            or <filename>.inc</filename>) and class
-            (<filename>.bbclass</filename>) files.
-            By convention, task names begin with the string "do_".
-        </para>
-
-        <para>
-            Here is an example of a task that prints out the date:
-            <literallayout class='monospaced'>
-     python do_printdate () {
-         import time
-         print time.strftime('%Y%m%d', time.gmtime())
-     }
-     addtask printdate after do_fetch before do_build
-            </literallayout>
+            Tasks are BitBake execution units that make up the
+            steps that BitBake can run for a given recipe.
+            Tasks are only supported in recipes and classes
+            (i.e. in <filename>.bb</filename> files and files
+            included or inherited from <filename>.bb</filename>
+            files).
+            By convention, tasks have names that start with "do_".
         </para>
 
         <section id='promoting-a-function-to-a-task'>
             <title>Promoting a Function to a Task</title>
 
             <para>
-                Any function can be promoted to a task by applying the
+                Tasks are either
+                <link linkend='shell-functions'>shell functions</link> or
+                <link linkend='bitbake-style-python-functions'>BitBake-style Python functions</link>
+                that have been promoted to tasks by using the
                 <filename>addtask</filename> command.
-                The <filename>addtask</filename> command also describes
-                inter-task dependencies.
-                Here is the function from the previous section but with the
-                <filename>addtask</filename> command promoting it to a task
-                and defining some dependencies:
+                The <filename>addtask</filename> command can also
+                optionally describe dependencies between the
+                task and other tasks.
+                Here is an example that shows how to define a task
+                and declare some dependencies:
                 <literallayout class='monospaced'>
      python do_printdate () {
          import time
@@ -1127,15 +1561,81 @@
      }
      addtask printdate after do_fetch before do_build
                 </literallayout>
-                In the example, the function is defined and then promoted
-                as a task.
-                The <filename>do_printdate</filename> task becomes a dependency of
-                the <filename>do_build</filename> task, which is the default
-                task.
-                And, the <filename>do_printdate</filename> task is dependent upon
-                the <filename>do_fetch</filename> task.
-                Execution of the <filename>do_build</filename> task results
-                in the <filename>do_printdate</filename> task running first.
+                The first argument to <filename>addtask</filename>
+                is the name of the function to promote to
+                a task.
+                If the name does not start with "do_", "do_" is
+                implicitly added, which enforces the convention that
+                all task names start with "do_".
+            </para>
+
+            <para>
+                In the previous example, the
+                <filename>do_printdate</filename> task becomes a
+                dependency of the <filename>do_build</filename>
+                task, which is the default task (i.e. the task run by
+                the <filename>bitbake</filename> command unless
+                another task is specified explicitly).
+                Additionally, the <filename>do_printdate</filename>
+                task becomes dependent upon the
+                <filename>do_fetch</filename> task.
+                Running the <filename>do_build</filename> task
+                results in the <filename>do_printdate</filename>
+                task running first.
+                <note>
+                    If you try out the previous example, you might see that
+                    the <filename>do_printdate</filename> task is only run
+                    the first time you build the recipe with
+                    the <filename>bitbake</filename> command.
+                    This is because BitBake considers the task "up-to-date"
+                    after that initial run.
+                    If you want to force the task to always be rerun for
+                    experimentation purposes, you can make BitBake always
+                    consider the task "out-of-date" by using the
+                    <filename>[</filename><link linkend='variable-flags'><filename>nostamp</filename></link><filename>]</filename>
+                    variable flag, as follows:
+                    <literallayout class='monospaced'>
+     do_printdate[nostamp] = "1"
+                    </literallayout>
+                    You can also explicitly run the task and provide the
+                    <filename>-f</filename> option as follows:
+                    <literallayout class='monospaced'>
+     $ bitbake <replaceable>recipe</replaceable> -c printdate -f
+                    </literallayout>
+                    When manually selecting a task to run with the
+                    <filename>bitbake</filename>&nbsp;<replaceable>recipe</replaceable>&nbsp;<filename>-c</filename>&nbsp;<replaceable>task</replaceable>
+                    command, you can omit the "do_" prefix as part of the
+                    task name.
+                </note>
+            </para>
+
+            <para>
+                You might wonder about the practical effects of using
+                <filename>addtask</filename> without specifying any
+                dependencies as is done in the following example:
+                <literallayout class='monospaced'>
+     addtask printdate
+                </literallayout>
+                In this example, assuming dependencies have not been
+                added through some other means, the only way to run
+                the task is by explicitly selecting it with
+                <filename>bitbake</filename>&nbsp;<replaceable>recipe</replaceable>&nbsp;<filename>-c printdate</filename>.
+                You can use the
+                <filename>do_listtasks</filename> task to list all tasks
+                defined in a recipe as shown in the following example:
+                <literallayout class='monospaced'>
+     $ bitbake <replaceable>recipe</replaceable> -c listtasks
+                </literallayout>
+                For more information on task dependencies, see the
+                "<link linkend='dependencies'>Dependencies</link>"
+                section.
+            </para>
+
+            <para>
+                See the
+                "<link linkend='variable-flags'>Variable Flags</link>"
+                section for information on variable flags you can use with
+                tasks.
             </para>
         </section>
 
@@ -1172,7 +1672,7 @@
 
             <para>
                 If you want dependencies such as these to remain intact, use
-                the <filename>noexec</filename> varflag to disable the task
+                the <filename>[noexec]</filename> varflag to disable the task
                 instead of using the <filename>deltask</filename> command to
                 delete it:
                 <literallayout class='monospaced'>
@@ -1295,10 +1795,13 @@
             Tasks support a number of these flags which control various
             functionality of the task:
             <itemizedlist>
-                <listitem><para><emphasis>cleandirs:</emphasis>
-                    Empty directories that should created before the task runs.
+                <listitem><para><emphasis><filename>[cleandirs]</filename>:</emphasis>
+                    Empty directories that should be created before the
+                    task runs.
+                    Directories that already exist are removed and recreated
+                    to empty them.
                     </para></listitem>
-                <listitem><para><emphasis>depends:</emphasis>
+                <listitem><para><emphasis><filename>[depends]</filename>:</emphasis>
                     Controls inter-task dependencies.
                     See the
                     <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
@@ -1306,7 +1809,7 @@
                     "<link linkend='inter-task-dependencies'>Inter-Task Dependencies</link>"
                     section for more information.
                     </para></listitem>
-                <listitem><para><emphasis>deptask:</emphasis>
+                <listitem><para><emphasis><filename>[deptask]</filename>:</emphasis>
                     Controls task build-time dependencies.
                     See the
                     <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
@@ -1314,12 +1817,13 @@
                     "<link linkend='build-dependencies'>Build Dependencies</link>"
                     section for more information.
                     </para></listitem>
-                <listitem><para><emphasis>dirs:</emphasis>
+                <listitem><para><emphasis><filename>[dirs]</filename>:</emphasis>
                     Directories that should be created before the task runs.
-                    The last directory listed will be used as the work directory
-                    for the task.
+                    Directories that already exist are left as is.
+                    The last directory listed is used as the
+                    current working directory for the task.
                     </para></listitem>
-                <listitem><para><emphasis>lockfiles:</emphasis>
+                <listitem><para><emphasis><filename>[lockfiles]</filename>:</emphasis>
                      Specifies one or more lockfiles to lock while the task
                      executes.
                      Only one task may hold a lockfile, and any task that
@@ -1328,23 +1832,32 @@
                      You can use this variable flag to accomplish mutual
                      exclusion.
                     </para></listitem>
-                <listitem><para><emphasis>noexec:</emphasis>
-                    Marks the tasks as being empty and no execution required.
-                    The <filename>noexec</filename> flag can be used to set up
+                <listitem><para><emphasis><filename>[noexec]</filename>:</emphasis>
+                    When set to "1", marks the task as being empty, with
+                    no execution required.
+                    You can use the <filename>[noexec]</filename> flag to set up
                     tasks as dependency placeholders, or to disable tasks defined
                     elsewhere that are not needed in a particular recipe.
                     </para></listitem>
-                <listitem><para><emphasis>nostamp:</emphasis>
-                    Tells BitBake to not generate a stamp file for a task,
-                    which implies the task should always be executed.
+                <listitem><para><emphasis><filename>[nostamp]</filename>:</emphasis>
+                    When set to "1", tells BitBake to not generate a stamp
+                    file for a task, which implies the task should always
+                    be executed.
+                    <note><title>Caution</title>
+                        Any task that depends (possibly indirectly) on a
+                        <filename>[nostamp]</filename> task will always be
+                        executed as well.
+                        This can cause unnecessary rebuilding if you are
+                        not careful.
+                    </note>
                     </para></listitem>
-                <listitem><para><emphasis>postfuncs:</emphasis>
+                <listitem><para><emphasis><filename>[postfuncs]</filename>:</emphasis>
                     List of functions to call after the completion of the task.
                     </para></listitem>
-                <listitem><para><emphasis>prefuncs:</emphasis>
+                <listitem><para><emphasis><filename>[prefuncs]</filename>:</emphasis>
                     List of functions to call before the task executes.
                     </para></listitem>
-                <listitem><para><emphasis>rdepends:</emphasis>
+                <listitem><para><emphasis><filename>[rdepends]</filename>:</emphasis>
                     Controls inter-task runtime dependencies.
                     See the
                     <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
@@ -1354,7 +1867,7 @@
                     "<link linkend='inter-task-dependencies'>Inter-Task Dependencies</link>"
                     section for more information.
                     </para></listitem>
-                <listitem><para><emphasis>rdeptask:</emphasis>
+                <listitem><para><emphasis><filename>[rdeptask]</filename>:</emphasis>
                     Controls task runtime dependencies.
                     See the
                     <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
@@ -1364,12 +1877,12 @@
                     "<link linkend='runtime-dependencies'>Runtime Dependencies</link>"
                     section for more information.
                     </para></listitem>
-                <listitem><para><emphasis>recideptask:</emphasis>
+                <listitem><para><emphasis><filename>[recideptask]</filename>:</emphasis>
                     When set in conjunction with
                     <filename>recrdeptask</filename>, specifies a task that
                     should be inspected for additional dependencies.
                     </para></listitem>
-                <listitem><para><emphasis>recrdeptask:</emphasis>
+                <listitem><para><emphasis><filename>[recrdeptask]</filename>:</emphasis>
                     Controls task recursive runtime dependencies.
                     See the
                     <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
@@ -1379,12 +1892,12 @@
                     "<link linkend='recursive-dependencies'>Recursive Dependencies</link>"
                     section for more information.
                     </para></listitem>
-                <listitem><para><emphasis>stamp-extra-info:</emphasis>
+                <listitem><para><emphasis><filename>[stamp-extra-info]</filename>:</emphasis>
                     Extra stamp information to append to the task's stamp.
                     As an example, OpenEmbedded uses this flag to allow
                     machine-specific tasks.
                     </para></listitem>
-                <listitem><para><emphasis>umask:</emphasis>
+                <listitem><para><emphasis><filename>[umask]</filename>:</emphasis>
                     The umask to run the task under.
                     </para></listitem>
             </itemizedlist>
@@ -1397,7 +1910,7 @@
             "<link linkend='checksums'>Checksums (Signatures)</link>"
             section.
             <itemizedlist>
-                <listitem><para><emphasis>vardeps:</emphasis>
+                <listitem><para><emphasis><filename>[vardeps]</filename>:</emphasis>
                     Specifies a space-separated list of additional
                     variables to add to a variable's dependencies
                     for the purposes of calculating its signature.
@@ -1406,17 +1919,17 @@
                     does not allow BitBake to automatically determine
                     that the variable is referred to.
                     </para></listitem>
-                <listitem><para><emphasis>vardepsexclude:</emphasis>
+                <listitem><para><emphasis><filename>[vardepsexclude]</filename>:</emphasis>
                     Specifies a space-separated list of variables
                     that should be excluded from a variable's dependencies
                     for the purposes of calculating its signature.
                     </para></listitem>
-                <listitem><para><emphasis>vardepvalue:</emphasis>
+                <listitem><para><emphasis><filename>[vardepvalue]</filename>:</emphasis>
                     If set, instructs BitBake to ignore the actual
                     value of the variable and instead use the specified
                     value when calculating the variable's signature.
                     </para></listitem>
-                <listitem><para><emphasis>vardepvalueexclude:</emphasis>
+                <listitem><para><emphasis><filename>[vardepvalueexclude]</filename>:</emphasis>
                     Specifies a pipe-separated list of strings to exclude
                     from the variable's value when calculating the
                     variable's signature.
@@ -1624,15 +2137,32 @@
         <title>Dependencies</title>
 
         <para>
-            To allow for efficient operation given multiple processes
-            executing in parallel, BitBake handles dependencies at
-            the task level.
-            BitBake supports a robust method to handle these dependencies.
-        </para>
+            To allow for efficient parallel processing, BitBake handles
+            dependencies at the task level.
+            Dependencies can exist both between tasks within a single recipe
+            and between tasks in different recipes.
+            Following are examples of each:
+            <itemizedlist>
+                <listitem><para>For tasks within a single recipe, a
+                    recipe's <filename>do_configure</filename>
+                    task might need to complete before its
+                    <filename>do_compile</filename> task can run.
+                    </para></listitem>
+                <listitem><para>For tasks in different recipes, one
+                    recipe's <filename>do_configure</filename>
+                    task might require another recipe's
+                    <filename>do_populate_sysroot</filename>
+                    task to finish first such that the libraries and headers
+                    provided by the other recipe are available.
+                    </para></listitem>
+             </itemizedlist>
+         </para>
 
-        <para>
-            This section describes several types of dependency mechanisms.
-        </para>
+         <para>
+             This section describes several ways to declare dependencies.
+             Remember, even though dependencies are declared in different ways, they
+             are all simply dependencies between tasks.
+         </para>
 
         <section id='dependencies-internal-to-the-bb-file'>
             <title>Dependencies Internal to the <filename>.bb</filename> File</title>
@@ -1648,11 +2178,49 @@
                 <literallayout class='monospaced'>
      addtask printdate after do_fetch before do_build
                 </literallayout>
-                In this example, the <filename>printdate</filename> task is
-                depends on the completion of the <filename>do_fetch</filename>
+                In this example, the <filename>do_printdate</filename>
+                task depends on the completion of the
+                <filename>do_fetch</filename> task, and the
+                <filename>do_build</filename> task depends on the
+                completion of the <filename>do_printdate</filename>
                 task.
-                And, the <filename>do_build</filename> depends on the completion
-                of the <filename>printdate</filename> task.
+                <note><para>
+                    For a task to run, it must be a direct or indirect
+                    dependency of some other task that is scheduled to
+                    run.</para>
+
+                    <para>For illustration, here are some examples:
+                    <itemizedlist>
+                        <listitem><para>
+                            The directive
+                            <filename>addtask mytask before do_configure</filename>
+                            causes <filename>do_mytask</filename> to run before
+                            <filename>do_configure</filename> runs.
+                            Be aware that <filename>do_mytask</filename> still only
+                            runs if its <link linkend='checksums'>input checksum</link>
+                            has changed since the last time it was run.
+                            Changes to the input checksum of
+                            <filename>do_mytask</filename> also indirectly cause
+                            <filename>do_configure</filename> to run.
+                            </para></listitem>
+                        <listitem><para>
+                            The directive
+                            <filename>addtask mytask after do_configure</filename>
+                            by itself never causes <filename>do_mytask</filename>
+                            to run.
+                            <filename>do_mytask</filename> can still be run manually
+                            as follows:
+                            <literallayout class='monospaced'>
+     $ bitbake <replaceable>recipe</replaceable> -c mytask
+                            </literallayout>
+                            Declaring <filename>do_mytask</filename> as a dependency
+                            of some other task that is scheduled to run also causes
+                            it to run.
+                            Regardless, the task runs after
+                            <filename>do_configure</filename>.
+                            </para></listitem>
+                    </itemizedlist></para>
+                </note>
             </para>
         </section>
 
@@ -1663,7 +2231,8 @@
                 BitBake uses the
                 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
                 variable to manage build time dependencies.
-                The "deptask" varflag for tasks signifies the task of each
+                The <filename>[deptask]</filename> varflag for tasks
+                signifies the task of each
                 item listed in <filename>DEPENDS</filename> that must
                 complete before that task can be executed.
                 Here is an example:
@@ -1692,7 +2261,8 @@
                 packages.
                 Each of those packages can have <filename>RDEPENDS</filename> and
                 <filename>RRECOMMENDS</filename> runtime dependencies.
-                The "rdeptask" flag for tasks is used to signify the task of each
+                The <filename>[rdeptask]</filename> flag for tasks is used to
+                signify the task of each
                 item runtime dependency which must have completed before that
                 task can be executed.
                 <literallayout class='monospaced'>
@@ -1708,7 +2278,7 @@
             <title>Recursive Dependencies</title>
 
             <para>
-                BitBake uses the "recrdeptask" flag to manage
+                BitBake uses the <filename>[recrdeptask]</filename> flag to manage
                 recursive task dependencies.
                 BitBake looks through the build-time and runtime
                 dependencies of the current recipe, looks through
@@ -1722,6 +2292,21 @@
             </para>
 
             <para>
+                The <filename>[recrdeptask]</filename> flag is most commonly
+                used in high-level
+                recipes that need to wait for some task to finish "globally".
+                For example, <filename>image.bbclass</filename> has the following:
+                <literallayout class='monospaced'>
+     do_rootfs[recrdeptask] += "do_packagedata"
+                </literallayout>
+                This statement says that the <filename>do_packagedata</filename>
+                task of the current recipe and all recipes reachable
+                (by way of dependencies) from the
+                image recipe must run before the <filename>do_rootfs</filename>
+                task can run.
+            </para>
+
+            <para>
                 You might want to not only have BitBake look for
                 dependencies of those tasks, but also have BitBake look
                 for build-time and runtime dependencies of the dependent
@@ -1738,7 +2323,8 @@
             <title>Inter-Task Dependencies</title>
 
             <para>
-                BitBake uses the "depends" flag in a more generic form
+                BitBake uses the <filename>[depends]</filename>
+                flag in a more generic form
                 to manage inter-task dependencies.
                 This more generic form allows for inter-dependency
                 checks for specific tasks rather than checks for
@@ -1754,109 +2340,158 @@
             </para>
 
             <para>
-                The "rdepends" flag works in a similar way but takes targets
+                The <filename>[rdepends]</filename> flag works in a similar
+                way but takes targets
                 in the runtime namespace instead of the build-time dependency
                 namespace.
             </para>
         </section>
     </section>
 
-    <section id='accessing-datastore-variables-using-python'>
-        <title>Accessing Datastore Variables Using Python</title>
+    <section id='functions-you-can-call-from-within-python'>
+        <title>Functions You Can Call From Within Python</title>
 
         <para>
-            It is often necessary to access variables in the
-            BitBake datastore using Python functions.
-            The Bitbake datastore has an API that allows you this
-            access.
-            Here is a list of available operations:
+            BitBake provides many functions you can call from
+            within Python functions.
+            This section lists the most commonly used functions,
+            and mentions where to find others.
         </para>
 
-        <para>
-            <informaltable frame='none'>
-                <tgroup cols='2' align='left' colsep='1' rowsep='1'>
-                    <colspec colname='c1' colwidth='1*'/>
-                    <colspec colname='c2' colwidth='1*'/>
-                    <thead>
-                        <row>
-                            <entry align="left"><emphasis>Operation</emphasis></entry>
-                            <entry align="left"><emphasis>Description</emphasis></entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry align="left"><filename>d.getVar("X", expand=False)</filename></entry>
-                            <entry align="left">Returns the value of variable "X".
-                                Using "expand=True" expands the value.</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.setVar("X", "value")</filename></entry>
-                            <entry align="left">Sets the variable "X" to "value".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.appendVar("X", "value")</filename></entry>
-                            <entry align="left">Adds "value" to the end of the variable "X".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.prependVar("X", "value")</filename></entry>
-                            <entry align="left">Adds "value" to the start of the variable "X".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.delVar("X")</filename></entry>
-                            <entry align="left">Deletes the variable "X" from the datastore.</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.renameVar("X", "Y")</filename></entry>
-                            <entry align="left">Renames the variable "X" to "Y".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.getVarFlag("X", flag, expand=False)</filename></entry>
-                            <entry align="left">Gets then named flag from the variable "X".
-                                Using "expand=True" expands the named flag.</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.setVarFlag("X", flag, "value")</filename></entry>
-                            <entry align="left">Sets the named flag for variable "X" to "value".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.appendVarFlag("X", flag, "value")</filename></entry>
-                            <entry align="left">Appends "value" to the named flag on the
-                            variable "X".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.prependVarFlag("X", flag, "value")</filename></entry>
-                            <entry align="left">Prepends "value" to the named flag on
-                               the variable "X".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.delVarFlag("X", flag)</filename></entry>
-                            <entry align="left">Deletes the named flag on the variable
-                                "X" from the datastore.</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.setVarFlags("X", flagsdict)</filename></entry>
-                            <entry align="left">Sets the flags specified in
-                                the <filename>flagsdict()</filename> parameter.
-                                <filename>setVarFlags</filename> does not clear previous flags.
-                                Think of this operation as <filename>addVarFlags</filename>.</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.getVarFlags("X")</filename></entry>
-                            <entry align="left">Returns a <filename>flagsdict</filename> of the flags for
-                                the variable "X".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.delVarFlags("X")</filename></entry>
-                            <entry align="left">Deletes all the flags for the variable "X".</entry>
-                        </row>
-                        <row>
-                            <entry align="left"><filename>d.expand(expression)</filename></entry>
-                            <entry align="left">Expands variable references in the specified string expression.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </para>
+        <section id='functions-for-accessing-datastore-variables'>
+            <title>Functions for Accessing Datastore Variables</title>
+
+            <para>
+                It is often necessary to access variables in the
+                BitBake datastore using Python functions.
+                The Bitbake datastore has an API that allows you this
+                access.
+                Here is a list of available operations:
+            </para>
+
+            <para>
+                <informaltable frame='none'>
+                    <tgroup cols='2' align='left' colsep='1' rowsep='1'>
+                        <colspec colname='c1' colwidth='1*'/>
+                        <colspec colname='c2' colwidth='1*'/>
+                        <thead>
+                            <row>
+                                <entry align="left"><emphasis>Operation</emphasis></entry>
+                                <entry align="left"><emphasis>Description</emphasis></entry>
+                            </row>
+                        </thead>
+                        <tbody>
+                            <row>
+                                <entry align="left"><filename>d.getVar("X", expand)</filename></entry>
+                                <entry align="left">Returns the value of variable "X".
+                                    Using "expand=True" expands the value.
+                                    Returns "None" if the variable "X" does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.setVar("X", "value")</filename></entry>
+                                <entry align="left">Sets the variable "X" to "value".</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.appendVar("X", "value")</filename></entry>
+                                <entry align="left">Adds "value" to the end of the variable "X".
+                                    Acts like <filename>d.setVar("X", "value")</filename>
+                                    if the variable "X" does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.prependVar("X", "value")</filename></entry>
+                                <entry align="left">Adds "value" to the start of the variable "X".
+                                    Acts like <filename>d.setVar("X", "value")</filename>
+                                    if the variable "X" does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.delVar("X")</filename></entry>
+                                <entry align="left">Deletes the variable "X" from the datastore.
+                                    Does nothing if the variable "X" does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.renameVar("X", "Y")</filename></entry>
+                                <entry align="left">Renames the variable "X" to "Y".
+                                    Does nothing if the variable "X" does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.getVarFlag("X", flag, expand)</filename></entry>
+                                <entry align="left">Returns the value of variable "X".
+                                    Using "expand=True" expands the value.
+                                    Returns "None" if either the variable "X" or the named flag
+                                    does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.setVarFlag("X", flag, "value")</filename></entry>
+                                <entry align="left">Sets the named flag for variable "X" to "value".</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.appendVarFlag("X", flag, "value")</filename></entry>
+                                <entry align="left">Appends "value" to the named flag on the
+                                    variable "X".
+                                    Acts like <filename>d.setVarFlag("X", flag, "value")</filename>
+                                    if the named flag does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.prependVarFlag("X", flag, "value")</filename></entry>
+                                <entry align="left">Prepends "value" to the named flag on
+                                    the variable "X".
+                                    Acts like <filename>d.setVarFlag("X", flag, "value")</filename>
+                                    if the named flag does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.delVarFlag("X", flag)</filename></entry>
+                                <entry align="left">Deletes the named flag on the variable
+                                    "X" from the datastore.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.setVarFlags("X", flagsdict)</filename></entry>
+                                <entry align="left">Sets the flags specified in
+                                    the <filename>flagsdict()</filename> parameter.
+                                    <filename>setVarFlags</filename> does not clear previous flags.
+                                    Think of this operation as <filename>addVarFlags</filename>.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.getVarFlags("X")</filename></entry>
+                                <entry align="left">Returns a <filename>flagsdict</filename>
+                                    of the flags for the variable "X".
+                                    Returns "None" if the variable "X" does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.delVarFlags("X")</filename></entry>
+                                <entry align="left">Deletes all the flags for the variable "X".
+                                    Does nothing if the variable "X" does not exist.</entry>
+                            </row>
+                            <row>
+                                <entry align="left"><filename>d.expand(expression)</filename></entry>
+                                <entry align="left">Expands variable references in the specified
+                                    string expression.
+                                    References to variables that do not exist are left as is.
+                                    For example, <filename>d.expand("foo ${X}")</filename>
+                                    expands to the literal string "foo ${X}" if the
+                                    variable "X" does not exist.</entry>
+                            </row>
+                        </tbody>
+                    </tgroup>
+                </informaltable>
+            </para>
+        </section>
+
+        <section id='other-functions'>
+            <title>Other Functions</title>
+
+            <para>
+                You can find many other functions that can be called
+                from Python by looking at the source code of the
+                <filename>bb</filename> module, which is in
+                <filename>bitbake/lib/bb</filename>.
+                For example,
+                <filename>bitbake/lib/bb/utils.py</filename> includes
+                the commonly used functions
+                <filename>bb.utils.contains()</filename> and
+                <filename>bb.utils.mkdirhier()</filename>, which come
+                with docstrings.
+            </para>
+        </section>
     </section>
 
     <section id='task-checksums-and-setscene'>
@@ -1897,7 +2532,7 @@
                     the "setscene" part of the task's execution in order
                     to validate the list of task hashes.
                     </para></listitem>
-                <listitem><para><filename>BB_SETSCENE_VERIFY_FUNCTION</filename>
+                <listitem><para><filename>BB_SETSCENE_VERIFY_FUNCTION2</filename>
                     Specifies a function to call that verifies the list of
                     planned task execution before the main task execution
                     happens.
diff --git a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.xml b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.xml
index ae7e4ce..66d8f84 100644
--- a/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.xml
+++ b/import-layers/yocto-poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.xml
@@ -52,7 +52,7 @@
        <link linkend='var-MIRRORS'>M</link>
 <!--               <link linkend='var-glossary-n'>N</link> -->
        <link linkend='var-OVERRIDES'>O</link>
-       <link linkend='var-PACKAGES'>P</link>
+       <link linkend='var-P4DIR'>P</link>
 <!--       <link linkend='var-QMAKE_PROFILES'>Q</link> -->
        <link linkend='var-RDEPENDS'>R</link>
        <link linkend='var-SECTION'>S</link>
@@ -716,7 +716,7 @@
             </glossdef>
         </glossentry>
 
-        <glossentry id='var-BB_SETSCENE_VERIFY_FUNCTION'><glossterm>BB_SETSCENE_VERIFY_FUNCTION</glossterm>
+        <glossentry id='var-BB_SETSCENE_VERIFY_FUNCTION2'><glossterm>BB_SETSCENE_VERIFY_FUNCTION2</glossterm>
             <glossdef>
                 <para>
                     Specifies a function to call that verifies the list of
@@ -986,6 +986,29 @@
      BBCLASSEXTEND =+ "native nativesdk"
      BBCLASSEXTEND =+ "multilib:<replaceable>multilib_name</replaceable>"
                     </literallayout>
+                    <note>
+                        <para>
+                        Internally, the <filename>BBCLASSEXTEND</filename>
+                        mechanism generates recipe variants by rewriting
+                        variable values and applying overrides such as
+                        <filename>_class-native</filename>.
+                        For example, to generate a native version of a recipe,
+                        a
+                        <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                        on "foo" is rewritten to a <filename>DEPENDS</filename>
+                        on "foo-native".
+                        </para>
+
+                        <para>
+                        Even when using <filename>BBCLASSEXTEND</filename>, the
+                        recipe is only parsed once.
+                        Parsing once adds some limitations.
+                        For example, it is not possible to
+                        include a different file depending on the variant,
+                        since <filename>include</filename> statements are
+                        processed when the recipe is parsed.
+                        </para>
+                    </note>
                 </para>
              </glossdef>
         </glossentry>
@@ -994,7 +1017,7 @@
             <glossdef>
                 <para>
                     Sets the BitBake debug output level to a specific value
-                    as incremented by the <filename>-d</filename> command line
+                    as incremented by the <filename>-D</filename> command line
                     option.
                     <note>
                         You must set this variable in the external environment
@@ -1636,6 +1659,17 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-LAYERDIR_RE'><glossterm>LAYERDIR_RE</glossterm>
+            <glossdef>
+                <para>When used inside the <filename>layer.conf</filename> configuration
+                    file, this variable provides the path of the current layer,
+                    escaped for use in a regular expression
+                    (<link linkend='var-BBFILE_PATTERN'><filename>BBFILE_PATTERN</filename></link>).
+                    This variable is not available outside of <filename>layer.conf</filename>
+                    and references are expanded immediately when parsing of the file completes.</para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-LAYERVERSION'><glossterm>LAYERVERSION</glossterm>
             <glossdef>
                 <para>Optionally specifies the version of a layer as a single number.
@@ -1737,6 +1771,15 @@
 
     <glossdiv id='var-glossary-p'><title>P</title>
 
+        <glossentry id='var-P4DIR'><glossterm>P4DIR</glossterm>
+            <glossdef>
+                <para>
+                    The directory in which a local copy of a Perforce depot
+                    is stored when it is fetched.
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-PACKAGES'><glossterm>PACKAGES</glossterm>
             <glossdef>
                 <para>The list of packages the recipe creates.
@@ -1933,6 +1976,27 @@
                     The <filename>PROVIDES</filename> statement results in
                     the "libav" recipe also being known as "libpostproc".
                 </para>
+
+                <para>
+                    In addition to providing recipes under alternate names,
+                    the <filename>PROVIDES</filename> mechanism is also used
+                    to implement virtual targets.
+                    A virtual target is a name that corresponds to some
+                    particular functionality (e.g. a Linux kernel).
+                    Recipes that provide the functionality in question list the
+                    virtual target in <filename>PROVIDES</filename>.
+                    Recipes that depend on the functionality in question can
+                    include the virtual target in
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                    to leave the choice of provider open.
+                </para>
+
+                <para>
+                    Conventionally, virtual targets have names on the form
+                    "virtual/function" (e.g. "virtual/kernel").
+                    The slash is simply part of the name and has no
+                    syntactical significance.
+                </para>
             </glossdef>
         </glossentry>
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/COW.py b/import-layers/yocto-poky/bitbake/lib/bb/COW.py
index 6917ec3..77a05cf 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/COW.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/COW.py
@@ -23,19 +23,17 @@
 # Assign a file to __warn__ to get warnings about slow operations.
 #
 
-from __future__ import print_function
+
 import copy
 import types
 ImmutableTypes = (
-    types.NoneType,
     bool,
     complex,
     float,
     int,
-    long,
     tuple,
     frozenset,
-    basestring
+    str
 )
 
 MUTABLE = "__mutable__"
@@ -61,7 +59,7 @@
     __call__ = cow
 
     def __setitem__(cls, key, value):
-        if not isinstance(value, ImmutableTypes):
+        if value is not None and not isinstance(value, ImmutableTypes):
             if not isinstance(value, COWMeta):
                 cls.__hasmutable__ = True
             key += MUTABLE
@@ -116,7 +114,7 @@
         cls.__setitem__(key, cls.__marker__)
 
     def __revertitem__(cls, key):
-        if not cls.__dict__.has_key(key):
+        if key not in cls.__dict__:
             key += MUTABLE
         delattr(cls, key)
 
@@ -183,7 +181,7 @@
         COWDictMeta.__delitem__(cls, repr(hash(value)))
 
     def __in__(cls, value):
-        return COWDictMeta.has_key(repr(hash(value)))
+        return repr(hash(value)) in COWDictMeta
 
     def iterkeys(cls):
         raise TypeError("sets don't have keys")
@@ -192,12 +190,10 @@
         raise TypeError("sets don't have 'items'")
 
 # These are the actual classes you use!
-class COWDictBase(object):
-    __metaclass__ = COWDictMeta
+class COWDictBase(object, metaclass = COWDictMeta):
     __count__ = 0
 
-class COWSetBase(object):
-    __metaclass__ = COWSetMeta
+class COWSetBase(object, metaclass = COWSetMeta):
     __count__ = 0
 
 if __name__ == "__main__":
@@ -217,11 +213,11 @@
     print()
 
     print("a", a)
-    for x in a.iteritems():
+    for x in a.items():
         print(x)
     print("--")
     print("b", b)
-    for x in b.iteritems():
+    for x in b.items():
         print(x)
     print()
 
@@ -229,11 +225,11 @@
     b['a'] = 'c'
 
     print("a", a)
-    for x in a.iteritems():
+    for x in a.items():
         print(x)
     print("--")
     print("b", b)
-    for x in b.iteritems():
+    for x in b.items():
         print(x)
     print()
 
@@ -248,22 +244,22 @@
     a['set'].add("o2")
 
     print("a", a)
-    for x in a['set'].itervalues():
+    for x in a['set'].values():
         print(x)
     print("--")
     print("b", b)
-    for x in b['set'].itervalues():
+    for x in b['set'].values():
         print(x)
     print()
 
     b['set'].add('o3')
 
     print("a", a)
-    for x in a['set'].itervalues():
+    for x in a['set'].values():
         print(x)
     print("--")
     print("b", b)
-    for x in b['set'].itervalues():
+    for x in b['set'].values():
         print(x)
     print()
 
@@ -273,7 +269,7 @@
     a['set2'].add("o2")
 
     print("a", a)
-    for x in a.iteritems():
+    for x in a.items():
         print(x)
     print("--")
     print("b", b)
@@ -287,13 +283,13 @@
     except KeyError:
         print("Yay! deleted key raises error")
 
-    if b.has_key('b'):
+    if 'b' in b:
         print("Boo!")
     else:
         print("Yay - has_key with delete works!")
 
     print("a", a)
-    for x in a.iteritems():
+    for x in a.items():
         print(x)
     print("--")
     print("b", b)
@@ -304,7 +300,7 @@
     b.__revertitem__('b')
 
     print("a", a)
-    for x in a.iteritems():
+    for x in a.items():
         print(x)
     print("--")
     print("b", b)
@@ -314,7 +310,7 @@
 
     b.__revertitem__('dict')
     print("a", a)
-    for x in a.iteritems():
+    for x in a.items():
         print(x)
     print("--")
     print("b", b)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/__init__.py b/import-layers/yocto-poky/bitbake/lib/bb/__init__.py
index 502ad83..f019d48 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/__init__.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/__init__.py
@@ -21,11 +21,11 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-__version__ = "1.30.0"
+__version__ = "1.32.0"
 
 import sys
-if sys.version_info < (2, 7, 3):
-    raise RuntimeError("Sorry, python 2.7.3 or later is required for this version of bitbake")
+if sys.version_info < (3, 4, 0):
+    raise RuntimeError("Sorry, python 3.4.0 or later is required for this version of bitbake")
 
 
 class BBHandledException(Exception):
@@ -84,8 +84,8 @@
     mainlogger.plain(''.join(args))
 
 def debug(lvl, *args):
-    if isinstance(lvl, basestring):
-        mainlogger.warn("Passed invalid debug level '%s' to bb.debug", lvl)
+    if isinstance(lvl, str):
+        mainlogger.warning("Passed invalid debug level '%s' to bb.debug", lvl)
         args = (lvl,) + args
         lvl = 1
     mainlogger.debug(lvl, ''.join(args))
@@ -94,7 +94,7 @@
     mainlogger.info(''.join(args))
 
 def warn(*args):
-    mainlogger.warn(''.join(args))
+    mainlogger.warning(''.join(args))
 
 def error(*args, **kwargs):
     mainlogger.error(''.join(args), extra=kwargs)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/build.py b/import-layers/yocto-poky/bitbake/lib/bb/build.py
index db5072c..c4c8aeb 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/build.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/build.py
@@ -35,8 +35,8 @@
 import bb
 import bb.msg
 import bb.process
-from contextlib import nested
-from bb import event, utils
+import bb.progress
+from bb import data, event, utils
 
 bblogger = logging.getLogger('BitBake')
 logger = logging.getLogger('BitBake.Build')
@@ -61,8 +61,13 @@
 # in all namespaces, hence we add them to __builtins__.
 # If we do not do this and use the exec globals, they will
 # not be available to subfunctions.
-__builtins__['bb'] = bb
-__builtins__['os'] = os
+if hasattr(__builtins__, '__setitem__'):
+    builtins = __builtins__
+else:
+    builtins = __builtins__.__dict__
+
+builtins['bb'] = bb
+builtins['os'] = os
 
 class FuncFailed(Exception):
     def __init__(self, name = None, logfile = None):
@@ -133,6 +138,25 @@
         super(TaskInvalid, self).__init__(task, None, metadata)
         self._message = "No such task '%s'" % task
 
+class TaskProgress(event.Event):
+    """
+    Task made some progress that could be reported to the user, usually in
+    the form of a progress bar or similar.
+    NOTE: this class does not inherit from TaskBase since it doesn't need
+    to - it's fired within the task context itself, so we don't have any of
+    the context information that you do in the case of the other events.
+    The event PID can be used to determine which task it came from.
+    The progress value is normally 0-100, but can also be negative
+    indicating that progress has been made but we aren't able to determine
+    how much.
+    The rate is optional, this is simply an extra string to display to the
+    user if specified.
+    """
+    def __init__(self, progress, rate=None):
+        self.progress = progress
+        self.rate = rate
+        event.Event.__init__(self)
+
 
 class LogTee(object):
     def __init__(self, logger, outfile):
@@ -164,11 +188,10 @@
 def exec_func(func, d, dirs = None, pythonexception=False):
     """Execute a BB 'function'"""
 
-    body = d.getVar(func, False)
-    if not body:
-        if body is None:
-            logger.warn("Function %s doesn't exist", func)
-        return
+    try:
+        oldcwd = os.getcwd()
+    except:
+        oldcwd = None
 
     flags = d.getVarFlags(func)
     cleandirs = flags.get('cleandirs')
@@ -187,8 +210,13 @@
             bb.utils.mkdirhier(adir)
         adir = dirs[-1]
     else:
-        adir = d.getVar('B', True)
-        bb.utils.mkdirhier(adir)
+        adir = None
+
+    body = d.getVar(func, False)
+    if not body:
+        if body is None:
+            logger.warning("Function %s doesn't exist", func)
+        return
 
     ispython = flags.get('python')
 
@@ -233,6 +261,18 @@
         else:
             exec_func_shell(func, d, runfile, cwd=adir)
 
+    try:
+        curcwd = os.getcwd()
+    except:
+        curcwd = None
+
+    if oldcwd and curcwd != oldcwd:
+        try:
+            bb.warn("Task %s changed cwd to %s" % (func, curcwd))
+            os.chdir(oldcwd)
+        except:
+            pass
+
 _functionfmt = """
 {function}(d)
 """
@@ -248,7 +288,8 @@
     if cwd:
         try:
             olddir = os.getcwd()
-        except OSError:
+        except OSError as e:
+            bb.warn("%s: Cannot get cwd: %s" % (func, e))
             olddir = None
         os.chdir(cwd)
 
@@ -274,8 +315,8 @@
         if cwd and olddir:
             try:
                 os.chdir(olddir)
-            except OSError:
-                pass
+            except OSError as e:
+                bb.warn("%s: Cannot restore cwd %s: %s" % (func, olddir, e))
 
 def shell_trap_code():
     return '''#!/bin/sh\n
@@ -323,7 +364,7 @@
 exit $ret
 ''')
 
-    os.chmod(runfile, 0775)
+    os.chmod(runfile, 0o775)
 
     cmd = runfile
     if d.getVarFlag(func, 'fakeroot', False):
@@ -336,41 +377,64 @@
     else:
         logfile = sys.stdout
 
+    progress = d.getVarFlag(func, 'progress', True)
+    if progress:
+        if progress == 'percent':
+            # Use default regex
+            logfile = bb.progress.BasicProgressHandler(d, outfile=logfile)
+        elif progress.startswith('percent:'):
+            # Use specified regex
+            logfile = bb.progress.BasicProgressHandler(d, regex=progress.split(':', 1)[1], outfile=logfile)
+        elif progress.startswith('outof:'):
+            # Use specified regex
+            logfile = bb.progress.OutOfProgressHandler(d, regex=progress.split(':', 1)[1], outfile=logfile)
+        else:
+            bb.warn('%s: invalid task progress varflag value "%s", ignoring' % (func, progress))
+
+    fifobuffer = bytearray()
     def readfifo(data):
-        lines = data.split('\0')
-        for line in lines:
-            splitval = line.split(' ', 1)
-            cmd = splitval[0]
-            if len(splitval) > 1:
-                value = splitval[1]
+        nonlocal fifobuffer
+        fifobuffer.extend(data)
+        while fifobuffer:
+            message, token, nextmsg = fifobuffer.partition(b"\00")
+            if token:
+                splitval = message.split(b' ', 1)
+                cmd = splitval[0].decode("utf-8")
+                if len(splitval) > 1:
+                    value = splitval[1].decode("utf-8")
+                else:
+                    value = ''
+                if cmd == 'bbplain':
+                    bb.plain(value)
+                elif cmd == 'bbnote':
+                    bb.note(value)
+                elif cmd == 'bbwarn':
+                    bb.warn(value)
+                elif cmd == 'bberror':
+                    bb.error(value)
+                elif cmd == 'bbfatal':
+                    # The caller will call exit themselves, so bb.error() is
+                    # what we want here rather than bb.fatal()
+                    bb.error(value)
+                elif cmd == 'bbfatal_log':
+                    bb.error(value, forcelog=True)
+                elif cmd == 'bbdebug':
+                    splitval = value.split(' ', 1)
+                    level = int(splitval[0])
+                    value = splitval[1]
+                    bb.debug(level, value)
+                else:
+                    bb.warn("Unrecognised command '%s' on FIFO" % cmd)
+                fifobuffer = nextmsg
             else:
-                value = ''
-            if cmd == 'bbplain':
-                bb.plain(value)
-            elif cmd == 'bbnote':
-                bb.note(value)
-            elif cmd == 'bbwarn':
-                bb.warn(value)
-            elif cmd == 'bberror':
-                bb.error(value)
-            elif cmd == 'bbfatal':
-                # The caller will call exit themselves, so bb.error() is
-                # what we want here rather than bb.fatal()
-                bb.error(value)
-            elif cmd == 'bbfatal_log':
-                bb.error(value, forcelog=True)
-            elif cmd == 'bbdebug':
-                splitval = value.split(' ', 1)
-                level = int(splitval[0])
-                value = splitval[1]
-                bb.debug(level, value)
+                break
 
     tempdir = d.getVar('T', True)
     fifopath = os.path.join(tempdir, 'fifo.%s' % os.getpid())
     if os.path.exists(fifopath):
         os.unlink(fifopath)
     os.mkfifo(fifopath)
-    with open(fifopath, 'r+') as fifo:
+    with open(fifopath, 'r+b', buffering=0) as fifo:
         try:
             bb.debug(2, "Executing shell function %s" % func)
 
@@ -501,21 +565,32 @@
 
     flags = localdata.getVarFlags(task)
 
-    event.fire(TaskStarted(task, logfn, flags, localdata), localdata)
     try:
-        for func in (prefuncs or '').split():
-            exec_func(func, localdata)
-        exec_func(task, localdata)
-        for func in (postfuncs or '').split():
-            exec_func(func, localdata)
-    except FuncFailed as exc:
-        if quieterr:
-            event.fire(TaskFailedSilent(task, logfn, localdata), localdata)
-        else:
-            errprinted = errchk.triggered
+        try:
+            event.fire(TaskStarted(task, logfn, flags, localdata), localdata)
+        except (bb.BBHandledException, SystemExit):
+            return 1
+        except FuncFailed as exc:
             logger.error(str(exc))
-            event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata)
-        return 1
+            return 1
+
+        try:
+            for func in (prefuncs or '').split():
+                exec_func(func, localdata)
+            exec_func(task, localdata)
+            for func in (postfuncs or '').split():
+                exec_func(func, localdata)
+        except FuncFailed as exc:
+            if quieterr:
+                event.fire(TaskFailedSilent(task, logfn, localdata), localdata)
+            else:
+                errprinted = errchk.triggered
+                logger.error(str(exc))
+                event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata)
+            return 1
+        except bb.BBHandledException:
+            event.fire(TaskFailed(task, logfn, localdata, True), localdata)
+            return 1
     finally:
         sys.stdout.flush()
         sys.stderr.flush()
@@ -575,7 +650,7 @@
             event.fire(failedevent, d)
         return 1
 
-def stamp_internal(taskname, d, file_name, baseonly=False):
+def stamp_internal(taskname, d, file_name, baseonly=False, noextra=False):
     """
     Internal stamp helper function
     Makes sure the stamp directory exists
@@ -598,6 +673,8 @@
 
     if baseonly:
         return stamp
+    if noextra:
+        extrainfo = ""
 
     if not stamp:
         return
@@ -693,12 +770,12 @@
     with open(taintfn, 'w') as taintf:
         taintf.write(str(uuid.uuid4()))
 
-def stampfile(taskname, d, file_name = None):
+def stampfile(taskname, d, file_name = None, noextra=False):
     """
     Return the stamp for a given task
     (d can be a data dict or dataCache)
     """
-    return stamp_internal(taskname, d, file_name)
+    return stamp_internal(taskname, d, file_name, noextra=noextra)
 
 def add_tasks(tasklist, d):
     task_deps = d.getVar('_task_deps', False)
@@ -774,6 +851,7 @@
     bbtasks = d.getVar('__BBTASKS', False) or []
     if task in bbtasks:
         bbtasks.remove(task)
+        d.delVarFlag(task, 'task')
         d.setVar('__BBTASKS', bbtasks)
 
     d.delVarFlag(task, 'deps')
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/cache.py b/import-layers/yocto-poky/bitbake/lib/bb/cache.py
index af5b9fb..dd9cfdf 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/cache.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/cache.py
@@ -28,22 +28,16 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-
 import os
+import sys
 import logging
+import pickle
 from collections import defaultdict
 import bb.utils
 
 logger = logging.getLogger("BitBake.Cache")
 
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-    logger.info("Importing cPickle failed. "
-                "Falling back to a very slow implementation.")
-
-__cache_version__ = "149"
+__cache_version__ = "150"
 
 def getCacheFile(path, filename, data_hash):
     return os.path.join(path, filename + "." + data_hash)
@@ -80,7 +74,7 @@
         out_dict = dict((var, metadata.getVarFlag(var, flag, True))
                     for var in varlist)
         if squash:
-            return dict((k,v) for (k,v) in out_dict.iteritems() if v)
+            return dict((k,v) for (k,v) in out_dict.items() if v)
         else:
             return out_dict
 
@@ -240,7 +234,7 @@
         cachedata.universe_target.append(self.pn)
 
         cachedata.hashfn[fn] = self.hashfilename
-        for task, taskhash in self.basetaskhashes.iteritems():
+        for task, taskhash in self.basetaskhashes.items():
             identifier = '%s.%s' % (fn, task)
             cachedata.basetaskhash[identifier] = taskhash
 
@@ -250,14 +244,136 @@
         cachedata.fakerootdirs[fn] = self.fakerootdirs
         cachedata.extradepsfunc[fn] = self.extradepsfunc
 
+def virtualfn2realfn(virtualfn):
+    """
+    Convert a virtual file name to a real one + the associated subclass keyword
+    """
+    mc = ""
+    if virtualfn.startswith('multiconfig:'):
+        elems = virtualfn.split(':')
+        mc = elems[1]
+        virtualfn = ":".join(elems[2:])
+
+    fn = virtualfn
+    cls = ""
+    if virtualfn.startswith('virtual:'):
+        elems = virtualfn.split(':')
+        cls = ":".join(elems[1:-1])
+        fn = elems[-1]
+
+    return (fn, cls, mc)
+
+def realfn2virtual(realfn, cls, mc):
+    """
+    Convert a real filename + the associated subclass keyword to a virtual filename
+    """
+    if cls:
+        realfn = "virtual:" + cls + ":" + realfn
+    if mc:
+        realfn = "multiconfig:" + mc + ":" + realfn
+    return realfn
+
+def variant2virtual(realfn, variant):
+    """
+    Convert a real filename + the associated subclass keyword to a virtual filename
+    """
+    if variant == "":
+        return realfn
+    if variant.startswith("multiconfig:"):
+        elems = variant.split(":")
+        if elems[2]:
+            return "multiconfig:" + elems[1] + ":virtual:" + ":".join(elems[2:]) + ":" + realfn
+        return "multiconfig:" + elems[1] + ":" + realfn
+    return "virtual:" + variant + ":" + realfn
+
+def parse_recipe(bb_data, bbfile, appends, mc=''):
+    """
+    Parse a recipe
+    """
+
+    chdir_back = False
+
+    bb_data.setVar("__BBMULTICONFIG", mc)
+
+    # expand tmpdir to include this topdir
+    bb_data.setVar('TMPDIR', bb_data.getVar('TMPDIR', True) or "")
+    bbfile_loc = os.path.abspath(os.path.dirname(bbfile))
+    oldpath = os.path.abspath(os.getcwd())
+    bb.parse.cached_mtime_noerror(bbfile_loc)
+
+    # The ConfHandler first looks if there is a TOPDIR and if not
+    # then it would call getcwd().
+    # Previously, we chdir()ed to bbfile_loc, called the handler
+    # and finally chdir()ed back, a couple of thousand times. We now
+    # just fill in TOPDIR to point to bbfile_loc if there is no TOPDIR yet.
+    if not bb_data.getVar('TOPDIR', False):
+        chdir_back = True
+        bb_data.setVar('TOPDIR', bbfile_loc)
+    try:
+        if appends:
+            bb_data.setVar('__BBAPPEND', " ".join(appends))
+        bb_data = bb.parse.handle(bbfile, bb_data)
+        if chdir_back:
+            os.chdir(oldpath)
+        return bb_data
+    except:
+        if chdir_back:
+            os.chdir(oldpath)
+        raise
 
 
-class Cache(object):
+
+class NoCache(object):
+
+    def __init__(self, databuilder):
+        self.databuilder = databuilder
+        self.data = databuilder.data
+
+    def loadDataFull(self, virtualfn, appends):
+        """
+        Return a complete set of data for fn.
+        To do this, we need to parse the file.
+        """
+        logger.debug(1, "Parsing %s (full)" % virtualfn)
+        (fn, virtual, mc) = virtualfn2realfn(virtualfn)
+        bb_data = self.load_bbfile(virtualfn, appends, virtonly=True)
+        return bb_data[virtual]
+
+    def load_bbfile(self, bbfile, appends, virtonly = False):
+        """
+        Load and parse one .bb build file
+        Return the data and whether parsing resulted in the file being skipped
+        """
+
+        if virtonly:
+            (bbfile, virtual, mc) = virtualfn2realfn(bbfile)
+            bb_data = self.databuilder.mcdata[mc].createCopy()
+            bb_data.setVar("__ONLYFINALISE", virtual or "default")
+            datastores = parse_recipe(bb_data, bbfile, appends, mc)
+            return datastores
+
+        bb_data = self.data.createCopy()
+        datastores = parse_recipe(bb_data, bbfile, appends)
+
+        for mc in self.databuilder.mcdata:
+            if not mc:
+                continue
+            bb_data = self.databuilder.mcdata[mc].createCopy()
+            newstores = parse_recipe(bb_data, bbfile, appends, mc)
+            for ns in newstores:
+                datastores["multiconfig:%s:%s" % (mc, ns)] = newstores[ns]
+
+        return datastores
+
+class Cache(NoCache):
     """
     BitBake Cache implementation
     """
 
-    def __init__(self, data, data_hash, caches_array):
+    def __init__(self, databuilder, data_hash, caches_array):
+        super().__init__(databuilder)
+        data = databuilder.data
+
         # Pass caches_array information into Cache Constructor
         # It will be used later for deciding whether we 
         # need extra cache file dump/load support 
@@ -266,7 +382,6 @@
         self.clean = set()
         self.checked = set()
         self.depends_cache = {}
-        self.data = None
         self.data_fn = None
         self.cacheclean = True
         self.data_hash = data_hash
@@ -286,72 +401,74 @@
         cache_ok = True
         if self.caches_array:
             for cache_class in self.caches_array:
-                if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                    cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
-                    cache_ok = cache_ok and os.path.exists(cachefile)
-                    cache_class.init_cacheData(self)
+                cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
+                cache_ok = cache_ok and os.path.exists(cachefile)
+                cache_class.init_cacheData(self)
         if cache_ok:
             self.load_cachefile()
         elif os.path.isfile(self.cachefile):
             logger.info("Out of date cache found, rebuilding...")
 
     def load_cachefile(self):
-        # Firstly, using core cache file information for
-        # valid checking
-        with open(self.cachefile, "rb") as cachefile:
-            pickled = pickle.Unpickler(cachefile)
-            try:
-                cache_ver = pickled.load()
-                bitbake_ver = pickled.load()
-            except Exception:
-                logger.info('Invalid cache, rebuilding...')
-                return
-
-            if cache_ver != __cache_version__:
-                logger.info('Cache version mismatch, rebuilding...')
-                return
-            elif bitbake_ver != bb.__version__:
-                logger.info('Bitbake version mismatch, rebuilding...')
-                return
-
-
         cachesize = 0
         previous_progress = 0
         previous_percent = 0
 
         # Calculate the correct cachesize of all those cache files
         for cache_class in self.caches_array:
-            if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
-                with open(cachefile, "rb") as cachefile:
-                    cachesize += os.fstat(cachefile.fileno()).st_size
+            cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
+            with open(cachefile, "rb") as cachefile:
+                cachesize += os.fstat(cachefile.fileno()).st_size
 
         bb.event.fire(bb.event.CacheLoadStarted(cachesize), self.data)
         
         for cache_class in self.caches_array:
-            if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
-                with open(cachefile, "rb") as cachefile:
-                    pickled = pickle.Unpickler(cachefile)                    
-                    while cachefile:
-                        try:
-                            key = pickled.load()
-                            value = pickled.load()
-                        except Exception:
-                            break
-                        if self.depends_cache.has_key(key):
-                            self.depends_cache[key].append(value)
-                        else:
-                            self.depends_cache[key] = [value]
-                        # only fire events on even percentage boundaries
-                        current_progress = cachefile.tell() + previous_progress
-                        current_percent = 100 * current_progress / cachesize
-                        if current_percent > previous_percent:
-                            previous_percent = current_percent
-                            bb.event.fire(bb.event.CacheLoadProgress(current_progress, cachesize),
-                                          self.data)
+            cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
+            with open(cachefile, "rb") as cachefile:
+                pickled = pickle.Unpickler(cachefile)
+                # Check cache version information
+                try:
+                    cache_ver = pickled.load()
+                    bitbake_ver = pickled.load()
+                except Exception:
+                    logger.info('Invalid cache, rebuilding...')
+                    return
 
-                    previous_progress += current_progress
+                if cache_ver != __cache_version__:
+                    logger.info('Cache version mismatch, rebuilding...')
+                    return
+                elif bitbake_ver != bb.__version__:
+                     logger.info('Bitbake version mismatch, rebuilding...')
+                     return
+
+                # Load the rest of the cache file
+                current_progress = 0
+                while cachefile:
+                    try:
+                        key = pickled.load()
+                        value = pickled.load()
+                    except Exception:
+                        break
+                    if not isinstance(key, str):
+                        bb.warn("%s from extras cache is not a string?" % key)
+                        break
+                    if not isinstance(value, RecipeInfoCommon):
+                        bb.warn("%s from extras cache is not a RecipeInfoCommon class?" % value)
+                        break
+
+                    if key in self.depends_cache:
+                        self.depends_cache[key].append(value)
+                    else:
+                        self.depends_cache[key] = [value]
+                    # only fire events on even percentage boundaries
+                    current_progress = cachefile.tell() + previous_progress
+                    current_percent = 100 * current_progress / cachesize
+                    if current_percent > previous_percent:
+                        previous_percent = current_percent
+                        bb.event.fire(bb.event.CacheLoadProgress(current_progress, cachesize),
+                                      self.data)
+
+                previous_progress += current_progress
 
         # Note: depends cache number is corresponding to the parsing file numbers.
         # The same file has several caches, still regarded as one item in the cache
@@ -359,69 +476,33 @@
                                                   len(self.depends_cache)),
                       self.data)
 
-    
-    @staticmethod
-    def virtualfn2realfn(virtualfn):
-        """
-        Convert a virtual file name to a real one + the associated subclass keyword
-        """
-
-        fn = virtualfn
-        cls = ""
-        if virtualfn.startswith('virtual:'):
-            elems = virtualfn.split(':')
-            cls = ":".join(elems[1:-1])
-            fn = elems[-1]
-        return (fn, cls)
-
-    @staticmethod
-    def realfn2virtual(realfn, cls):
-        """
-        Convert a real filename + the associated subclass keyword to a virtual filename
-        """
-        if cls == "":
-            return realfn
-        return "virtual:" + cls + ":" + realfn
-
-    @classmethod
-    def loadDataFull(cls, virtualfn, appends, cfgData):
-        """
-        Return a complete set of data for fn.
-        To do this, we need to parse the file.
-        """
-
-        (fn, virtual) = cls.virtualfn2realfn(virtualfn)
-
-        logger.debug(1, "Parsing %s (full)", fn)
-
-        cfgData.setVar("__ONLYFINALISE", virtual or "default")
-        bb_data = cls.load_bbfile(fn, appends, cfgData)
-        return bb_data[virtual]
-
-    @classmethod
-    def parse(cls, filename, appends, configdata, caches_array):
+    def parse(self, filename, appends):
         """Parse the specified filename, returning the recipe information"""
+        logger.debug(1, "Parsing %s", filename)
         infos = []
-        datastores = cls.load_bbfile(filename, appends, configdata)
+        datastores = self.load_bbfile(filename, appends)
         depends = []
-        for variant, data in sorted(datastores.iteritems(),
+        variants = []
+        # Process the "real" fn last so we can store variants list
+        for variant, data in sorted(datastores.items(),
                                     key=lambda i: i[0],
                                     reverse=True):
-            virtualfn = cls.realfn2virtual(filename, variant)
+            virtualfn = variant2virtual(filename, variant)
+            variants.append(variant)
             depends = depends + (data.getVar("__depends", False) or [])
             if depends and not variant:
                 data.setVar("__depends", depends)
-
+            if virtualfn == filename:
+                data.setVar("__VARIANTS", " ".join(variants))
             info_array = []
-            for cache_class in caches_array:
-                if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                    info = cache_class(filename, data)
-                    info_array.append(info)
+            for cache_class in self.caches_array:
+                info = cache_class(filename, data)
+                info_array.append(info)
             infos.append((virtualfn, info_array))
 
         return infos
 
-    def load(self, filename, appends, configdata):
+    def load(self, filename, appends):
         """Obtain the recipe information for the specified filename,
         using cached values if available, otherwise parsing.
 
@@ -435,21 +516,20 @@
             # info_array item is a list of [CoreRecipeInfo, XXXRecipeInfo]
             info_array = self.depends_cache[filename]
             for variant in info_array[0].variants:
-                virtualfn = self.realfn2virtual(filename, variant)
+                virtualfn = variant2virtual(filename, variant)
                 infos.append((virtualfn, self.depends_cache[virtualfn]))
         else:
-            logger.debug(1, "Parsing %s", filename)
             return self.parse(filename, appends, configdata, self.caches_array)
 
         return cached, infos
 
-    def loadData(self, fn, appends, cfgData, cacheData):
+    def loadData(self, fn, appends, cacheData):
         """Load the recipe info for the specified filename,
         parsing and adding to the cache if necessary, and adding
         the recipe information to the supplied CacheData instance."""
         skipped, virtuals = 0, 0
 
-        cached, infos = self.load(fn, appends, cfgData)
+        cached, infos = self.load(fn, appends)
         for virtualfn, info_array in infos:
             if info_array[0].skipped:
                 logger.debug(1, "Skipping %s: %s", virtualfn, info_array[0].skipreason)
@@ -557,16 +637,19 @@
 
         invalid = False
         for cls in info_array[0].variants:
-            virtualfn = self.realfn2virtual(fn, cls)
+            virtualfn = variant2virtual(fn, cls)
             self.clean.add(virtualfn)
             if virtualfn not in self.depends_cache:
                 logger.debug(2, "Cache: %s is not cached", virtualfn)
                 invalid = True
+            elif len(self.depends_cache[virtualfn]) != len(self.caches_array):
+                logger.debug(2, "Cache: Extra caches missing for %s?" % virtualfn)
+                invalid = True
 
         # If any one of the variants is not present, mark as invalid for all
         if invalid:
             for cls in info_array[0].variants:
-                virtualfn = self.realfn2virtual(fn, cls)
+                virtualfn = variant2virtual(fn, cls)
                 if virtualfn in self.clean:
                     logger.debug(2, "Cache: Removing %s from cache", virtualfn)
                     self.clean.remove(virtualfn)
@@ -603,30 +686,19 @@
             logger.debug(2, "Cache is clean, not saving.")
             return
 
-        file_dict = {}
-        pickler_dict = {}
         for cache_class in self.caches_array:
-            if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                cache_class_name = cache_class.__name__
-                cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
-                file_dict[cache_class_name] = open(cachefile, "wb")
-                pickler_dict[cache_class_name] =  pickle.Pickler(file_dict[cache_class_name], pickle.HIGHEST_PROTOCOL)
-                   
-        pickler_dict['CoreRecipeInfo'].dump(__cache_version__)
-        pickler_dict['CoreRecipeInfo'].dump(bb.__version__)
+            cache_class_name = cache_class.__name__
+            cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
+            with open(cachefile, "wb") as f:
+                p = pickle.Pickler(f, pickle.HIGHEST_PROTOCOL)
+                p.dump(__cache_version__)
+                p.dump(bb.__version__)
 
-        try:
-            for key, info_array in self.depends_cache.iteritems():
-                for info in info_array:
-                    if isinstance(info, RecipeInfoCommon):
-                        cache_class_name = info.__class__.__name__
-                        pickler_dict[cache_class_name].dump(key)
-                        pickler_dict[cache_class_name].dump(info)
-        finally:
-            for cache_class in self.caches_array:
-                if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                    cache_class_name = cache_class.__name__
-                    file_dict[cache_class_name].close()
+                for key, info_array in self.depends_cache.items():
+                    for info in info_array:
+                        if isinstance(info, RecipeInfoCommon) and info.__class__.__name__ == cache_class_name:
+                            p.dump(key)
+                            p.dump(info)
 
         del self.depends_cache
 
@@ -654,50 +726,13 @@
         Save data we need into the cache
         """
 
-        realfn = self.virtualfn2realfn(file_name)[0]
+        realfn = virtualfn2realfn(file_name)[0]
 
         info_array = []
         for cache_class in self.caches_array:
-            if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                info_array.append(cache_class(realfn, data))
+            info_array.append(cache_class(realfn, data))
         self.add_info(file_name, info_array, cacheData, parsed)
 
-    @staticmethod
-    def load_bbfile(bbfile, appends, config):
-        """
-        Load and parse one .bb build file
-        Return the data and whether parsing resulted in the file being skipped
-        """
-        chdir_back = False
-
-        from bb import parse
-
-        # expand tmpdir to include this topdir
-        config.setVar('TMPDIR', config.getVar('TMPDIR', True) or "")
-        bbfile_loc = os.path.abspath(os.path.dirname(bbfile))
-        oldpath = os.path.abspath(os.getcwd())
-        parse.cached_mtime_noerror(bbfile_loc)
-        bb_data = config.createCopy()
-        # The ConfHandler first looks if there is a TOPDIR and if not
-        # then it would call getcwd().
-        # Previously, we chdir()ed to bbfile_loc, called the handler
-        # and finally chdir()ed back, a couple of thousand times. We now
-        # just fill in TOPDIR to point to bbfile_loc if there is no TOPDIR yet.
-        if not bb_data.getVar('TOPDIR', False):
-            chdir_back = True
-            bb_data.setVar('TOPDIR', bbfile_loc)
-        try:
-            if appends:
-                bb_data.setVar('__BBAPPEND', " ".join(appends))
-            bb_data = parse.handle(bbfile, bb_data)
-            if chdir_back:
-                os.chdir(oldpath)
-            return bb_data
-        except:
-            if chdir_back:
-                os.chdir(oldpath)
-            raise
-
 
 def init(cooker):
     """
@@ -727,8 +762,9 @@
     def __init__(self, caches_array):
         self.caches_array = caches_array
         for cache_class in self.caches_array:
-            if type(cache_class) is type and issubclass(cache_class, RecipeInfoCommon):
-                cache_class.init_cacheData(self)        
+            if not issubclass(cache_class, RecipeInfoCommon):
+                bb.error("Extra cache data class %s should subclass RecipeInfoCommon class" % cache_class)
+            cache_class.init_cacheData(self)
 
         # Direct cache variables
         self.task_queues = {}
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/checksum.py b/import-layers/yocto-poky/bitbake/lib/bb/checksum.py
index 2ec964d..8428920 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/checksum.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/checksum.py
@@ -19,20 +19,13 @@
 import operator
 import os
 import stat
+import pickle
 import bb.utils
 import logging
 from bb.cache import MultiProcessCache
 
 logger = logging.getLogger("BitBake.Cache")
 
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-    logger.info("Importing cPickle failed. "
-                "Falling back to a very slow implementation.")
-
-
 # mtime cache (non-persistent)
 # based upon the assumption that files do not change during bitbake run
 class FileMtimeCache(object):
@@ -127,13 +120,15 @@
                             checksums.extend(checksum_dir(f))
                     else:
                         checksum = checksum_file(f)
-                        checksums.append((f, checksum))
+                        if checksum:
+                            checksums.append((f, checksum))
             elif os.path.isdir(pth):
                 if not os.path.islink(pth):
                     checksums.extend(checksum_dir(pth))
             else:
                 checksum = checksum_file(pth)
-                checksums.append((pth, checksum))
+                if checksum:
+                    checksums.append((pth, checksum))
 
         checksums.sort(key=operator.itemgetter(1))
         return checksums
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py b/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py
index 3ee4d56..25938d6 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py
@@ -1,21 +1,20 @@
 import ast
+import sys
 import codegen
 import logging
+import pickle
+import bb.pysh as pysh
 import os.path
 import bb.utils, bb.data
+import hashlib
 from itertools import chain
-from pysh import pyshyacc, pyshlex, sherrors
+from bb.pysh import pyshyacc, pyshlex, sherrors
 from bb.cache import MultiProcessCache
 
-
 logger = logging.getLogger('BitBake.CodeParser')
 
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-    logger.info('Importing cPickle failed.  Falling back to a very slow implementation.')
-
+def bbhash(s):
+    return hashlib.md5(s.encode("utf-8")).hexdigest()
 
 def check_indent(codestr):
     """If the code is indented, add a top level piece of code to 'remove' the indentation"""
@@ -68,11 +67,12 @@
         
         new = []
         for i in items:
-            new.append(intern(i))
+            new.append(sys.intern(i))
         s = frozenset(new)
-        if hash(s) in self.setcache:
-            return self.setcache[hash(s)]
-        self.setcache[hash(s)] = s
+        h = hash(s)
+        if h in self.setcache:
+            return self.setcache[h]
+        self.setcache[h] = s
         return s
 
 codecache = SetCache()
@@ -117,7 +117,7 @@
 
 class CodeParserCache(MultiProcessCache):
     cache_file_name = "bb_codeparser.dat"
-    CACHE_VERSION = 7
+    CACHE_VERSION = 8
 
     def __init__(self):
         MultiProcessCache.__init__(self)
@@ -191,6 +191,7 @@
 
 class PythonParser():
     getvars = (".getVar", ".appendVar", ".prependVar")
+    getvarflags = (".getVarFlag", ".appendVarFlag", ".prependVarFlag")
     containsfuncs = ("bb.utils.contains", "base_contains", "bb.utils.contains_any")
     execfuncs = ("bb.build.exec_func", "bb.build.exec_task")
 
@@ -210,15 +211,20 @@
 
     def visit_Call(self, node):
         name = self.called_node_name(node.func)
-        if name and name.endswith(self.getvars) or name in self.containsfuncs:
+        if name and (name.endswith(self.getvars) or name.endswith(self.getvarflags) or name in self.containsfuncs):
             if isinstance(node.args[0], ast.Str):
                 varname = node.args[0].s
                 if name in self.containsfuncs and isinstance(node.args[1], ast.Str):
                     if varname not in self.contains:
                         self.contains[varname] = set()
                     self.contains[varname].add(node.args[1].s)
-                else:                      
-                    self.references.add(node.args[0].s)
+                elif name.endswith(self.getvarflags):
+                    if isinstance(node.args[1], ast.Str):
+                        self.references.add('%s[%s]' % (varname, node.args[1].s))
+                    else:
+                        self.warn(node.func, node.args[1])
+                else:
+                    self.references.add(varname)
             else:
                 self.warn(node.func, node.args[0])
         elif name and name.endswith(".expand"):
@@ -268,7 +274,7 @@
         if not node or not node.strip():
             return
 
-        h = hash(str(node))
+        h = bbhash(str(node))
 
         if h in codeparsercache.pythoncache:
             self.references = set(codeparsercache.pythoncache[h].refs)
@@ -313,7 +319,7 @@
         commands it executes.
         """
 
-        h = hash(str(value))
+        h = bbhash(str(value))
 
         if h in codeparsercache.shellcache:
             self.execs = set(codeparsercache.shellcache[h].execs)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/command.py b/import-layers/yocto-poky/bitbake/lib/bb/command.py
index 0559ffc..caa3e4d 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/command.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/command.py
@@ -110,7 +110,7 @@
             return False
         except SystemExit as exc:
             arg = exc.args[0]
-            if isinstance(arg, basestring):
+            if isinstance(arg, str):
                 self.finishAsyncCommand(arg)
             else:
                 self.finishAsyncCommand("Exited with %s" % arg)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/cooker.py b/import-layers/yocto-poky/bitbake/lib/bb/cooker.py
index 9b565fc..42831e2 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/cooker.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/cooker.py
@@ -22,7 +22,7 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-from __future__ import print_function
+
 import sys, os, glob, os.path, re, time
 import atexit
 import itertools
@@ -30,18 +30,21 @@
 import multiprocessing
 import sre_constants
 import threading
-from cStringIO import StringIO
+from io import StringIO, UnsupportedOperation
 from contextlib import closing
 from functools import wraps
-from collections import defaultdict
+from collections import defaultdict, namedtuple
 import bb, bb.exceptions, bb.command
 from bb import utils, data, parse, event, cache, providers, taskdata, runqueue, build
-import Queue
+import queue
 import signal
 import subprocess
 import errno
 import prserv.serv
 import pyinotify
+import json
+import pickle
+import codecs
 
 logger      = logging.getLogger("BitBake")
 collectlog  = logging.getLogger("BitBake.Collection")
@@ -65,7 +68,7 @@
     """
 
 class state:
-    initial, parsing, running, shutdown, forceshutdown, stopped, error = range(7)
+    initial, parsing, running, shutdown, forceshutdown, stopped, error = list(range(7))
 
     @classmethod
     def get_name(cls, code):
@@ -93,7 +96,7 @@
 
 
 class CookerFeatures(object):
-    _feature_list = [HOB_EXTRA_CACHES, SEND_DEPENDS_TREE, BASEDATASTORE_TRACKING, SEND_SANITYEVENTS] = range(4)
+    _feature_list = [HOB_EXTRA_CACHES, BASEDATASTORE_TRACKING, SEND_SANITYEVENTS] = list(range(3))
 
     def __init__(self):
         self._features=set()
@@ -110,10 +113,50 @@
     def __iter__(self):
         return self._features.__iter__()
 
-    def next(self):
-        return self._features.next()
+    def __next__(self):
+        return next(self._features)
 
 
+class EventWriter:
+    def __init__(self, cooker, eventfile):
+        self.file_inited = None
+        self.cooker = cooker
+        self.eventfile = eventfile
+        self.event_queue = []
+
+    def write_event(self, event):
+        with open(self.eventfile, "a") as f:
+            try:
+                str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8')
+                f.write("%s\n" % json.dumps({"class": event.__module__ + "." + event.__class__.__name__,
+                                             "vars": str_event}))
+            except Exception as err:
+                import traceback
+                print(err, traceback.format_exc())
+
+    def send(self, event):
+        if self.file_inited:
+            # we have the file, just write the event
+            self.write_event(event)
+        else:
+            # init on bb.event.BuildStarted
+            name = "%s.%s" % (event.__module__, event.__class__.__name__)
+            if name in ("bb.event.BuildStarted", "bb.cooker.CookerExit"):
+                with open(self.eventfile, "w") as f:
+                    f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])}))
+
+                self.file_inited = True
+
+                # write pending events
+                for evt in self.event_queue:
+                    self.write_event(evt)
+
+                # also write the current event
+                self.write_event(event)
+            else:
+                # queue all events until the file is inited
+                self.event_queue.append(event)
+
 #============================================================================#
 # BBCooker
 #============================================================================#
@@ -123,7 +166,7 @@
     """
 
     def __init__(self, configuration, featureSet=None):
-        self.recipecache = None
+        self.recipecaches = None
         self.skiplist = {}
         self.featureset = CookerFeatures()
         if featureSet:
@@ -151,6 +194,13 @@
 
         self.initConfigurationData()
 
+        # we log all events to a file if so directed
+        if self.configuration.writeeventlog:
+            # register the log file writer as UI Handler
+            writer = EventWriter(self, self.configuration.writeeventlog)
+            EventLogWriteHandler = namedtuple('EventLogWriteHandler', ['event'])
+            bb.event.register_UIHhandler(EventLogWriteHandler(writer))
+
         self.inotify_modified_files = []
 
         def _process_inotify_updates(server, notifier_list, abort):
@@ -180,14 +230,17 @@
             pass
 
         # TOSTOP must not be set or our children will hang when they output
-        fd = sys.stdout.fileno()
-        if os.isatty(fd):
-            import termios
-            tcattr = termios.tcgetattr(fd)
-            if tcattr[3] & termios.TOSTOP:
-                buildlog.info("The terminal had the TOSTOP bit set, clearing...")
-                tcattr[3] = tcattr[3] & ~termios.TOSTOP
-                termios.tcsetattr(fd, termios.TCSANOW, tcattr)
+        try:
+            fd = sys.stdout.fileno()
+            if os.isatty(fd):
+                import termios
+                tcattr = termios.tcgetattr(fd)
+                if tcattr[3] & termios.TOSTOP:
+                    buildlog.info("The terminal had the TOSTOP bit set, clearing...")
+                    tcattr[3] = tcattr[3] & ~termios.TOSTOP
+                    termios.tcsetattr(fd, termios.TCSANOW, tcattr)
+        except UnsupportedOperation:
+            pass
 
         self.command = bb.command.Command(self)
         self.state = state.initial
@@ -301,74 +354,6 @@
         if consolelog:
             self.data.setVar("BB_CONSOLELOG", consolelog)
 
-        # we log all events to a file if so directed
-        if self.configuration.writeeventlog:
-            import json, pickle
-            DEFAULT_EVENTFILE = self.configuration.writeeventlog
-            class EventLogWriteHandler():
-
-                class EventWriter():
-                    def __init__(self, cooker):
-                        self.file_inited = None
-                        self.cooker = cooker
-                        self.event_queue = []
-
-                    def init_file(self):
-                        try:
-                            # delete the old log
-                            os.remove(DEFAULT_EVENTFILE)
-                        except:
-                            pass
-
-                        # write current configuration data
-                        with open(DEFAULT_EVENTFILE, "w") as f:
-                            f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])}))
-
-                    def write_event(self, event):
-                        with open(DEFAULT_EVENTFILE, "a") as f:
-                            try:
-                                f.write("%s\n" % json.dumps({"class":event.__module__ + "." + event.__class__.__name__, "vars":json.dumps(pickle.dumps(event)) }))
-                            except Exception as e:
-                                import traceback
-                                print(e, traceback.format_exc(e))
-
-
-                    def send(self, event):
-                        event_class = event.__module__ + "." + event.__class__.__name__
-
-                        # init on bb.event.BuildStarted
-                        if self.file_inited is None:
-                            if  event_class == "bb.event.BuildStarted":
-                                self.init_file()
-                                self.file_inited = True
-
-                                # write pending events
-                                for e in self.event_queue:
-                                    self.write_event(e)
-
-                                # also write the current event
-                                self.write_event(event)
-
-                            else:
-                                # queue all events until the file is inited
-                                self.event_queue.append(event)
-
-                        else:
-                            # we have the file, just write the event
-                            self.write_event(event)
-
-                # set our handler's event processor
-                event = EventWriter(self)       # self is the cooker here
-
-
-            # set up cooker features for this mock UI handler
-
-            # we need to write the dependency tree in the log
-            self.featureset.setFeature(CookerFeatures.SEND_DEPENDS_TREE)
-            # register the log file writer as UI Handler
-            bb.event.register_UIHhandler(EventLogWriteHandler())
-
-
         #
         # Copy of the data store which has been expanded.
         # Used for firing events and accessing variables where expansion needs to be accounted for
@@ -539,11 +524,14 @@
             nice = int(nice) - curnice
             buildlog.verbose("Renice to %s " % os.nice(nice))
 
-        if self.recipecache:
-            del self.recipecache
-        self.recipecache = bb.cache.CacheData(self.caches_array)
+        if self.recipecaches:
+            del self.recipecaches
+        self.multiconfigs = self.databuilder.mcdata.keys()
+        self.recipecaches = {}
+        for mc in self.multiconfigs:
+            self.recipecaches[mc] = bb.cache.CacheData(self.caches_array)
 
-        self.handleCollections( self.data.getVar("BBFILE_COLLECTIONS", True) )
+        self.handleCollections(self.data.getVar("BBFILE_COLLECTIONS", True))
 
     def updateConfigOpts(self, options, environment):
         clean = True
@@ -587,8 +575,8 @@
 
     def showVersions(self):
 
-        pkg_pn = self.recipecache.pkg_pn
-        (latest_versions, preferred_versions) = bb.providers.findProviders(self.data, self.recipecache, pkg_pn)
+        pkg_pn = self.recipecaches[''].pkg_pn
+        (latest_versions, preferred_versions) = bb.providers.findProviders(self.data, self.recipecaches[''], pkg_pn)
 
         logger.plain("%-35s %25s %25s", "Recipe Name", "Latest Version", "Preferred Version")
         logger.plain("%-35s %25s %25s\n", "===========", "==============", "=================")
@@ -619,25 +607,25 @@
             # this showEnvironment() code path doesn't use the cache
             self.parseConfiguration()
 
-            fn, cls = bb.cache.Cache.virtualfn2realfn(buildfile)
+            fn, cls, mc = bb.cache.virtualfn2realfn(buildfile)
             fn = self.matchFile(fn)
-            fn = bb.cache.Cache.realfn2virtual(fn, cls)
+            fn = bb.cache.realfn2virtual(fn, cls, mc)
         elif len(pkgs_to_build) == 1:
             ignore = self.expanded_data.getVar("ASSUME_PROVIDED", True) or ""
             if pkgs_to_build[0] in set(ignore.split()):
                 bb.fatal("%s is in ASSUME_PROVIDED" % pkgs_to_build[0])
 
-            taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, None, self.configuration.abort, allowincomplete=True)
+            taskdata, runlist = self.buildTaskData(pkgs_to_build, None, self.configuration.abort, allowincomplete=True)
 
-            targetid = taskdata.getbuild_id(pkgs_to_build[0])
-            fnid = taskdata.build_targets[targetid][0]
-            fn = taskdata.fn_index[fnid]
+            mc = runlist[0][0]
+            fn = runlist[0][3]
         else:
             envdata = self.data
 
         if fn:
             try:
-                envdata = bb.cache.Cache.loadDataFull(fn, self.collection.get_file_appends(fn), self.data)
+                bb_cache = bb.cache.Cache(self.databuilder, self.data_hash, self.caches_array)
+                envdata = bb_cache.loadDataFull(fn, self.collection.get_file_appends(fn))
             except Exception as e:
                 parselog.exception("Unable to read %s", fn)
                 raise
@@ -656,7 +644,7 @@
         # emit the metadata which isnt valid shell
         data.expandKeys(envdata)
         for e in envdata.keys():
-            if data.getVarFlag( e, 'python', envdata ):
+            if envdata.getVarFlag(e, 'func', False) and envdata.getVarFlag(e, 'python', False):
                 logger.plain("\npython %s () {\n%s}\n", e, envdata.getVar(e, False))
 
 
@@ -670,30 +658,44 @@
         if task is None:
             task = self.configuration.cmd
 
-        fulltargetlist = self.checkPackages(pkgs_to_build)
+        fulltargetlist = self.checkPackages(pkgs_to_build, task)
+        taskdata = {}
+        localdata = {}
 
-        localdata = data.createCopy(self.data)
-        bb.data.update_data(localdata)
-        bb.data.expandKeys(localdata)
-        taskdata = bb.taskdata.TaskData(abort, skiplist=self.skiplist, allowincomplete=allowincomplete)
+        for mc in self.multiconfigs:
+            taskdata[mc] = bb.taskdata.TaskData(abort, skiplist=self.skiplist, allowincomplete=allowincomplete)
+            localdata[mc] = data.createCopy(self.databuilder.mcdata[mc])
+            bb.data.update_data(localdata[mc])
+            bb.data.expandKeys(localdata[mc])
 
         current = 0
         runlist = []
         for k in fulltargetlist:
+            mc = ""
+            if k.startswith("multiconfig:"):
+                mc = k.split(":")[1]
+                k = ":".join(k.split(":")[2:])
             ktask = task
             if ":do_" in k:
                 k2 = k.split(":do_")
                 k = k2[0]
                 ktask = k2[1]
-            taskdata.add_provider(localdata, self.recipecache, k)
+            taskdata[mc].add_provider(localdata[mc], self.recipecaches[mc], k)
             current += 1
             if not ktask.startswith("do_"):
                 ktask = "do_%s" % ktask
-            runlist.append([k, ktask])
+            if k not in taskdata[mc].build_targets or not taskdata[mc].build_targets[k]:
+                # e.g. in ASSUME_PROVIDED
+                continue
+            fn = taskdata[mc].build_targets[k][0]
+            runlist.append([mc, k, ktask, fn])
             bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data)
-        taskdata.add_unresolved(localdata, self.recipecache)
+
+        for mc in self.multiconfigs:
+            taskdata[mc].add_unresolved(localdata[mc], self.recipecaches[mc])
+
         bb.event.fire(bb.event.TreeDataPreparationCompleted(len(fulltargetlist)), self.data)
-        return taskdata, runlist, fulltargetlist
+        return taskdata, runlist
 
     def prepareTreeData(self, pkgs_to_build, task):
         """
@@ -702,7 +704,7 @@
 
         # We set abort to False here to prevent unbuildable targets raising
         # an exception when we're just generating data
-        taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, task, False, allowincomplete=True)
+        taskdata, runlist = self.buildTaskData(pkgs_to_build, task, False, allowincomplete=True)
 
         return runlist, taskdata
 
@@ -714,13 +716,18 @@
         information.
         """
         runlist, taskdata = self.prepareTreeData(pkgs_to_build, task)
-        rq = bb.runqueue.RunQueue(self, self.data, self.recipecache, taskdata, runlist)
+        rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist)
         rq.rqdata.prepare()
         return self.buildDependTree(rq, taskdata)
 
+    @staticmethod
+    def add_mc_prefix(mc, pn):
+        if mc:
+            return "multiconfig:%s.%s" % (mc, pn)
+        return pn
 
     def buildDependTree(self, rq, taskdata):
-        seen_fnids = []
+        seen_fns = []
         depend_tree = {}
         depend_tree["depends"] = {}
         depend_tree["tdepends"] = {}
@@ -730,25 +737,26 @@
         depend_tree["rdepends-pkg"] = {}
         depend_tree["rrecs-pkg"] = {}
         depend_tree['providermap'] = {}
-        depend_tree["layer-priorities"] = self.recipecache.bbfile_config_priorities
+        depend_tree["layer-priorities"] = self.bbfile_config_priorities
 
-        for name, fn in taskdata.get_providermap().iteritems():
-            pn = self.recipecache.pkg_fn[fn]
-            if name != pn:
-                version = "%s:%s-%s" % self.recipecache.pkg_pepvpr[fn]
-                depend_tree['providermap'][name] = (pn, version)
+        for mc in taskdata:
+            for name, fn in list(taskdata[mc].get_providermap().items()):
+                pn = self.recipecaches[mc].pkg_fn[fn]
+                pn = self.add_mc_prefix(mc, pn)
+                if name != pn:
+                    version = "%s:%s-%s" % self.recipecaches[mc].pkg_pepvpr[fn]
+                    depend_tree['providermap'][name] = (pn, version)
 
-        for task in xrange(len(rq.rqdata.runq_fnid)):
-            taskname = rq.rqdata.runq_task[task]
-            fnid = rq.rqdata.runq_fnid[task]
-            fn = taskdata.fn_index[fnid]
-            pn = self.recipecache.pkg_fn[fn]
-            version  = "%s:%s-%s" % self.recipecache.pkg_pepvpr[fn]
+        for tid in rq.rqdata.runtaskentries:
+            (mc, fn, taskname, taskfn) = bb.runqueue.split_tid_mcfn(tid)
+            pn = self.recipecaches[mc].pkg_fn[taskfn]
+            pn = self.add_mc_prefix(mc, pn)
+            version  = "%s:%s-%s" % self.recipecaches[mc].pkg_pepvpr[taskfn]
             if pn not in depend_tree["pn"]:
                 depend_tree["pn"][pn] = {}
-                depend_tree["pn"][pn]["filename"] = fn
+                depend_tree["pn"][pn]["filename"] = taskfn
                 depend_tree["pn"][pn]["version"] = version
-                depend_tree["pn"][pn]["inherits"] = self.recipecache.inherits.get(fn, None)
+                depend_tree["pn"][pn]["inherits"] = self.recipecaches[mc].inherits.get(taskfn, None)
 
                 # if we have extra caches, list all attributes they bring in
                 extra_info = []
@@ -759,36 +767,36 @@
 
                 # for all attributes stored, add them to the dependency tree
                 for ei in extra_info:
-                    depend_tree["pn"][pn][ei] = vars(self.recipecache)[ei][fn]
+                    depend_tree["pn"][pn][ei] = vars(self.recipecaches[mc])[ei][taskfn]
 
 
-            for dep in rq.rqdata.runq_depends[task]:
-                depfn = taskdata.fn_index[rq.rqdata.runq_fnid[dep]]
-                deppn = self.recipecache.pkg_fn[depfn]
-                dotname = "%s.%s" % (pn, rq.rqdata.runq_task[task])
+            for dep in rq.rqdata.runtaskentries[tid].depends:
+                (depmc, depfn, deptaskname, deptaskfn) = bb.runqueue.split_tid_mcfn(dep)
+                deppn = self.recipecaches[mc].pkg_fn[deptaskfn]
+                dotname = "%s.%s" % (pn, bb.runqueue.taskname_from_tid(tid))
                 if not dotname in depend_tree["tdepends"]:
                     depend_tree["tdepends"][dotname] = []
-                depend_tree["tdepends"][dotname].append("%s.%s" % (deppn, rq.rqdata.runq_task[dep]))
-            if fnid not in seen_fnids:
-                seen_fnids.append(fnid)
+                depend_tree["tdepends"][dotname].append("%s.%s" % (deppn, bb.runqueue.taskname_from_tid(dep)))
+            if taskfn not in seen_fns:
+                seen_fns.append(taskfn)
                 packages = []
 
                 depend_tree["depends"][pn] = []
-                for dep in taskdata.depids[fnid]:
-                    depend_tree["depends"][pn].append(taskdata.build_names_index[dep])
+                for dep in taskdata[mc].depids[taskfn]:
+                    depend_tree["depends"][pn].append(dep)
 
                 depend_tree["rdepends-pn"][pn] = []
-                for rdep in taskdata.rdepids[fnid]:
-                    depend_tree["rdepends-pn"][pn].append(taskdata.run_names_index[rdep])
+                for rdep in taskdata[mc].rdepids[taskfn]:
+                    depend_tree["rdepends-pn"][pn].append(rdep)
 
-                rdepends = self.recipecache.rundeps[fn]
+                rdepends = self.recipecaches[mc].rundeps[taskfn]
                 for package in rdepends:
                     depend_tree["rdepends-pkg"][package] = []
                     for rdepend in rdepends[package]:
                         depend_tree["rdepends-pkg"][package].append(rdepend)
                     packages.append(package)
 
-                rrecs = self.recipecache.runrecs[fn]
+                rrecs = self.recipecaches[mc].runrecs[taskfn]
                 for package in rrecs:
                     depend_tree["rrecs-pkg"][package] = []
                     for rdepend in rrecs[package]:
@@ -800,7 +808,7 @@
                     if package not in depend_tree["packages"]:
                         depend_tree["packages"][package] = {}
                         depend_tree["packages"][package]["pn"] = pn
-                        depend_tree["packages"][package]["filename"] = fn
+                        depend_tree["packages"][package]["filename"] = taskfn
                         depend_tree["packages"][package]["version"] = version
 
         return depend_tree
@@ -811,12 +819,8 @@
         Create a dependency tree of pkgs_to_build, returning the data.
         """
         _, taskdata = self.prepareTreeData(pkgs_to_build, task)
-        tasks_fnid = []
-        if len(taskdata.tasks_name) != 0:
-            for task in xrange(len(taskdata.tasks_name)):
-                tasks_fnid.append(taskdata.tasks_fnid[task])
 
-        seen_fnids = []
+        seen_fns = []
         depend_tree = {}
         depend_tree["depends"] = {}
         depend_tree["pn"] = {}
@@ -831,51 +835,53 @@
                 cachefields = getattr(cache_class, 'cachefields', [])
                 extra_info = extra_info + cachefields
 
-        for task in xrange(len(tasks_fnid)):
-            fnid = tasks_fnid[task]
-            fn = taskdata.fn_index[fnid]
-            pn = self.recipecache.pkg_fn[fn]
+        tids = []
+        for mc in taskdata:
+            for tid in taskdata[mc].taskentries:
+                tids.append(tid)
+
+        for tid in tids:
+            (mc, fn, taskname, taskfn) = bb.runqueue.split_tid_mcfn(tid)
+
+            pn = self.recipecaches[mc].pkg_fn[taskfn]
+            pn = self.add_mc_prefix(mc, pn)
 
             if pn not in depend_tree["pn"]:
                 depend_tree["pn"][pn] = {}
-                depend_tree["pn"][pn]["filename"] = fn
-                version  = "%s:%s-%s" % self.recipecache.pkg_pepvpr[fn]
+                depend_tree["pn"][pn]["filename"] = taskfn
+                version  = "%s:%s-%s" % self.recipecaches[mc].pkg_pepvpr[taskfn]
                 depend_tree["pn"][pn]["version"] = version
-                rdepends = self.recipecache.rundeps[fn]
-                rrecs = self.recipecache.runrecs[fn]
-                depend_tree["pn"][pn]["inherits"] = self.recipecache.inherits.get(fn, None)
+                rdepends = self.recipecaches[mc].rundeps[taskfn]
+                rrecs = self.recipecaches[mc].runrecs[taskfn]
+                depend_tree["pn"][pn]["inherits"] = self.recipecaches[mc].inherits.get(taskfn, None)
 
                 # for all extra attributes stored, add them to the dependency tree
                 for ei in extra_info:
-                    depend_tree["pn"][pn][ei] = vars(self.recipecache)[ei][fn]
+                    depend_tree["pn"][pn][ei] = vars(self.recipecaches[mc])[ei][taskfn]
 
-            if fnid not in seen_fnids:
-                seen_fnids.append(fnid)
+            if taskfn not in seen_fns:
+                seen_fns.append(taskfn)
 
                 depend_tree["depends"][pn] = []
-                for dep in taskdata.depids[fnid]:
-                    item = taskdata.build_names_index[dep]
+                for item in taskdata[mc].depids[taskfn]:
                     pn_provider = ""
-                    targetid = taskdata.getbuild_id(item)
-                    if targetid in taskdata.build_targets and taskdata.build_targets[targetid]:
-                        id = taskdata.build_targets[targetid][0]
-                        fn_provider = taskdata.fn_index[id]
-                        pn_provider = self.recipecache.pkg_fn[fn_provider]
+                    if dep in taskdata[mc].build_targets and taskdata[mc].build_targets[dep]:
+                        fn_provider = taskdata[mc].build_targets[dep][0]
+                        pn_provider = self.recipecaches[mc].pkg_fn[fn_provider]
                     else:
                         pn_provider = item
+                    pn_provider = self.add_mc_prefix(mc, pn_provider)
                     depend_tree["depends"][pn].append(pn_provider)
 
                 depend_tree["rdepends-pn"][pn] = []
-                for rdep in taskdata.rdepids[fnid]:
-                    item = taskdata.run_names_index[rdep]
+                for rdep in taskdata[mc].rdepids[taskfn]:
                     pn_rprovider = ""
-                    targetid = taskdata.getrun_id(item)
-                    if targetid in taskdata.run_targets and taskdata.run_targets[targetid]:
-                        id = taskdata.run_targets[targetid][0]
-                        fn_rprovider = taskdata.fn_index[id]
-                        pn_rprovider = self.recipecache.pkg_fn[fn_rprovider]
+                    if rdep in taskdata[mc].run_targets and taskdata[mc].run_targets[rdep]:
+                        fn_rprovider = taskdata[mc].run_targets[rdep][0]
+                        pn_rprovider = self.recipecaches[mc].pkg_fn[fn_rprovider]
                     else:
-                        pn_rprovider = item
+                        pn_rprovider = rdep
+                    pn_rprovider = self.add_mc_prefix(mc, pn_rprovider)
                     depend_tree["rdepends-pn"][pn].append(pn_rprovider)
 
                 depend_tree["rdepends-pkg"].update(rdepends)
@@ -900,8 +906,8 @@
         depgraph = self.generateTaskDepTreeData(pkgs_to_build, task)
 
         # Prints a flattened form of package-depends below where subpackages of a package are merged into the main pn
-        depends_file = file('pn-depends.dot', 'w' )
-        buildlist_file = file('pn-buildlist', 'w' )
+        depends_file = open('pn-depends.dot', 'w' )
+        buildlist_file = open('pn-buildlist', 'w' )
         print("digraph depends {", file=depends_file)
         for pn in depgraph["pn"]:
             fn = depgraph["pn"][pn]["filename"]
@@ -917,9 +923,10 @@
             for rdepend in depgraph["rdepends-pn"][pn]:
                 print('"%s" -> "%s" [style=dashed]' % (pn, rdepend), file=depends_file)
         print("}", file=depends_file)
+        depends_file.close()
         logger.info("PN dependencies saved to 'pn-depends.dot'")
 
-        depends_file = file('package-depends.dot', 'w' )
+        depends_file = open('package-depends.dot', 'w' )
         print("digraph depends {", file=depends_file)
         for package in depgraph["packages"]:
             pn = depgraph["packages"][package]["pn"]
@@ -938,9 +945,10 @@
             for rdepend in depgraph["rrecs-pkg"][package]:
                 print('"%s" -> "%s" [style=dotted]' % (package, rdepend), file=depends_file)
         print("}", file=depends_file)
+        depends_file.close()
         logger.info("Package dependencies saved to 'package-depends.dot'")
 
-        tdepends_file = file('task-depends.dot', 'w' )
+        tdepends_file = open('task-depends.dot', 'w' )
         print("digraph depends {", file=tdepends_file)
         for task in depgraph["tdepends"]:
             (pn, taskname) = task.rsplit(".", 1)
@@ -950,13 +958,14 @@
             for dep in depgraph["tdepends"][task]:
                 print('"%s" -> "%s"' % (task, dep), file=tdepends_file)
         print("}", file=tdepends_file)
+        tdepends_file.close()
         logger.info("Task dependencies saved to 'task-depends.dot'")
 
     def show_appends_with_no_recipes(self):
         # Determine which bbappends haven't been applied
 
         # First get list of recipes, including skipped
-        recipefns = self.recipecache.pkg_fn.keys()
+        recipefns = list(self.recipecaches[''].pkg_fn.keys())
         recipefns.extend(self.skiplist.keys())
 
         # Work out list of bbappends that have been applied
@@ -980,20 +989,21 @@
 
     def handlePrefProviders(self):
 
-        localdata = data.createCopy(self.data)
-        bb.data.update_data(localdata)
-        bb.data.expandKeys(localdata)
+        for mc in self.multiconfigs:
+            localdata = data.createCopy(self.databuilder.mcdata[mc])
+            bb.data.update_data(localdata)
+            bb.data.expandKeys(localdata)
 
-        # Handle PREFERRED_PROVIDERS
-        for p in (localdata.getVar('PREFERRED_PROVIDERS', True) or "").split():
-            try:
-                (providee, provider) = p.split(':')
-            except:
-                providerlog.critical("Malformed option in PREFERRED_PROVIDERS variable: %s" % p)
-                continue
-            if providee in self.recipecache.preferred and self.recipecache.preferred[providee] != provider:
-                providerlog.error("conflicting preferences for %s: both %s and %s specified", providee, provider, self.recipecache.preferred[providee])
-            self.recipecache.preferred[providee] = provider
+            # Handle PREFERRED_PROVIDERS
+            for p in (localdata.getVar('PREFERRED_PROVIDERS', True) or "").split():
+                try:
+                    (providee, provider) = p.split(':')
+                except:
+                    providerlog.critical("Malformed option in PREFERRED_PROVIDERS variable: %s" % p)
+                    continue
+                if providee in self.recipecaches[mc].preferred and self.recipecaches[mc].preferred[providee] != provider:
+                    providerlog.error("conflicting preferences for %s: both %s and %s specified", providee, provider, self.recipecaches[mc].preferred[providee])
+                self.recipecaches[mc].preferred[providee] = provider
 
     def findCoreBaseFiles(self, subdir, configfile):
         corebase = self.data.getVar('COREBASE', True) or ""
@@ -1088,10 +1098,10 @@
         """
         pkg_list = []
 
-        for pfn in self.recipecache.pkg_fn:
-            inherits = self.recipecache.inherits.get(pfn, None)
+        for pfn in self.recipecaches[''].pkg_fn:
+            inherits = self.recipecaches[''].inherits.get(pfn, None)
             if inherits and klass in inherits:
-                pkg_list.append(self.recipecache.pkg_fn[pfn])
+                pkg_list.append(self.recipecaches[''].pkg_fn[pfn])
 
         return pkg_list
 
@@ -1124,16 +1134,18 @@
             shell.start( self )
 
 
-    def handleCollections( self, collections ):
+    def handleCollections(self, collections):
         """Handle collections"""
         errors = False
-        self.recipecache.bbfile_config_priorities = []
+        self.bbfile_config_priorities = []
         if collections:
             collection_priorities = {}
             collection_depends = {}
             collection_list = collections.split()
             min_prio = 0
             for c in collection_list:
+                bb.debug(1,'Processing %s in collection list' % (c))
+
                 # Get collection priority if defined explicitly
                 priority = self.data.getVar("BBFILE_PRIORITY_%s" % c, True)
                 if priority:
@@ -1152,10 +1164,10 @@
                 deps = self.data.getVar("LAYERDEPENDS_%s" % c, True)
                 if deps:
                     try:
-                        deplist = bb.utils.explode_dep_versions2(deps)
+                        depDict = bb.utils.explode_dep_versions2(deps)
                     except bb.utils.VersionStringException as vse:
                         bb.fatal('Error parsing LAYERDEPENDS_%s: %s' % (c, str(vse)))
-                    for dep, oplist in deplist.iteritems():
+                    for dep, oplist in list(depDict.items()):
                         if dep in collection_list:
                             for opstr in oplist:
                                 layerver = self.data.getVar("LAYERVERSION_%s" % dep, True)
@@ -1174,10 +1186,39 @@
                         else:
                             parselog.error("Layer '%s' depends on layer '%s', but this layer is not enabled in your configuration", c, dep)
                             errors = True
-                    collection_depends[c] = deplist.keys()
+                    collection_depends[c] = list(depDict.keys())
                 else:
                     collection_depends[c] = []
 
+                # Check recommends and store information for priority calculation
+                recs = self.data.getVar("LAYERRECOMMENDS_%s" % c, True)
+                if recs:
+                    try:
+                        recDict = bb.utils.explode_dep_versions2(recs)
+                    except bb.utils.VersionStringException as vse:
+                        bb.fatal('Error parsing LAYERRECOMMENDS_%s: %s' % (c, str(vse)))
+                    for rec, oplist in list(recDict.items()):
+                        if rec in collection_list:
+                            if oplist:
+                                opstr = oplist[0]
+                                layerver = self.data.getVar("LAYERVERSION_%s" % rec, True)
+                                if layerver:
+                                    (op, recver) = opstr.split()
+                                    try:
+                                        res = bb.utils.vercmp_string_op(layerver, recver, op)
+                                    except bb.utils.VersionStringException as vse:
+                                        bb.fatal('Error parsing LAYERRECOMMENDS_%s: %s' % (c, str(vse)))
+                                    if not res:
+                                        parselog.debug(3,"Layer '%s' recommends version %s of layer '%s', but version %s is currently enabled in your configuration. Check that you are using the correct matching versions/branches of these two layers.", c, opstr, rec, layerver)
+                                        continue
+                                else:
+                                    parselog.debug(3,"Layer '%s' recommends version %s of layer '%s', which exists in your configuration but does not specify a version. Check that you are using the correct matching versions/branches of these two layers.", c, opstr, rec)
+                                    continue
+                            parselog.debug(3,"Layer '%s' recommends layer '%s', so we are adding it", c, rec)
+                            collection_depends[c].append(rec)
+                        else:
+                            parselog.debug(3,"Layer '%s' recommends layer '%s', but this layer is not enabled in your configuration", c, rec)
+
             # Recursively work out collection priorities based on dependencies
             def calc_layer_priority(collection):
                 if not collection_priorities[collection]:
@@ -1205,7 +1246,7 @@
                     parselog.error("BBFILE_PATTERN_%s \"%s\" is not a valid regular expression", c, regex)
                     errors = True
                     continue
-                self.recipecache.bbfile_config_priorities.append((c, regex, cre, collection_priorities[c]))
+                self.bbfile_config_priorities.append((c, regex, cre, collection_priorities[c]))
         if errors:
             # We've already printed the actual error(s)
             raise CollectionError("Errors during parsing layer configuration")
@@ -1228,7 +1269,7 @@
         if bf.startswith("/") or bf.startswith("../"):
             bf = os.path.abspath(bf)
 
-        self.collection = CookerCollectFiles(self.recipecache.bbfile_config_priorities)
+        self.collection = CookerCollectFiles(self.bbfile_config_priorities)
         filelist, masked = self.collection.collect_bbfiles(self.data, self.expanded_data)
         try:
             os.stat(bf)
@@ -1264,6 +1305,7 @@
         """
         Build the file matching regexp buildfile
         """
+        bb.event.fire(bb.event.BuildInit(), self.expanded_data)
 
         # Too many people use -b because they think it's how you normally
         # specify a target to be built, so show a warning
@@ -1277,17 +1319,17 @@
         if (task == None):
             task = self.configuration.cmd
 
-        fn, cls = bb.cache.Cache.virtualfn2realfn(buildfile)
+        fn, cls, mc = bb.cache.virtualfn2realfn(buildfile)
         fn = self.matchFile(fn)
 
         self.buildSetVars()
 
-        infos = bb.cache.Cache.parse(fn, self.collection.get_file_appends(fn), \
-                                     self.data,
-                                     self.caches_array)
+        bb_cache = bb.cache.Cache(self.databuilder, self.data_hash, self.caches_array)
+
+        infos = bb_cache.parse(fn, self.collection.get_file_appends(fn))
         infos = dict(infos)
 
-        fn = bb.cache.Cache.realfn2virtual(fn, cls)
+        fn = bb.cache.realfn2virtual(fn, cls, mc)
         try:
             info_array = infos[fn]
         except KeyError:
@@ -1296,29 +1338,30 @@
         if info_array[0].skipped:
             bb.fatal("%s was skipped: %s" % (fn, info_array[0].skipreason))
 
-        self.recipecache.add_from_recipeinfo(fn, info_array)
+        self.recipecaches[mc].add_from_recipeinfo(fn, info_array)
 
         # Tweak some variables
         item = info_array[0].pn
-        self.recipecache.ignored_dependencies = set()
-        self.recipecache.bbfile_priority[fn] = 1
+        self.recipecaches[mc].ignored_dependencies = set()
+        self.recipecaches[mc].bbfile_priority[fn] = 1
 
         # Remove external dependencies
-        self.recipecache.task_deps[fn]['depends'] = {}
-        self.recipecache.deps[fn] = []
-        self.recipecache.rundeps[fn] = []
-        self.recipecache.runrecs[fn] = []
+        self.recipecaches[mc].task_deps[fn]['depends'] = {}
+        self.recipecaches[mc].deps[fn] = []
+        self.recipecaches[mc].rundeps[fn] = []
+        self.recipecaches[mc].runrecs[fn] = []
 
         # 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.recipecache, fn)
+            bb.parse.siggen.invalidate_task(task, self.recipecaches[mc], fn)
 
         # Setup taskdata structure
-        taskdata = bb.taskdata.TaskData(self.configuration.abort)
-        taskdata.add_provider(self.data, self.recipecache, item)
+        taskdata = {}
+        taskdata[mc] = bb.taskdata.TaskData(self.configuration.abort)
+        taskdata[mc].add_provider(self.data, self.recipecaches[mc], item)
 
         buildname = self.data.getVar("BUILDNAME", True)
         bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.expanded_data)
@@ -1326,9 +1369,9 @@
         # Execute the runqueue
         if not task.startswith("do_"):
             task = "do_%s" % task
-        runlist = [[item, task]]
+        runlist = [[mc, item, task, fn]]
 
-        rq = bb.runqueue.RunQueue(self, self.data, self.recipecache, taskdata, runlist)
+        rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist)
 
         def buildFileIdle(server, rq, abort):
 
@@ -1353,7 +1396,7 @@
                 return False
 
             if not retval:
-                bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, item, failures, interrupted), self.expanded_data)
+                bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, item, failures, interrupted), self.expanded_data)
                 self.command.finishAsyncCommand(msg)
                 return False
             if retval is True:
@@ -1389,7 +1432,7 @@
                 return False
 
             if not retval:
-                bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, targets, failures, interrupted), self.data)
+                bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, targets, failures, interrupted), self.data)
                 self.command.finishAsyncCommand(msg)
                 return False
             if retval is True:
@@ -1406,23 +1449,24 @@
         if not task.startswith("do_"):
             task = "do_%s" % task
 
-        taskdata, runlist, fulltargetlist = self.buildTaskData(targets, task, self.configuration.abort)
+        packages = [target if ':' in target else '%s:%s' % (target, task) for target in targets]
+
+        bb.event.fire(bb.event.BuildInit(packages), self.expanded_data)
+
+        taskdata, runlist = self.buildTaskData(targets, task, self.configuration.abort)
 
         buildname = self.data.getVar("BUILDNAME", False)
 
         # make targets to always look as <target>:do_<task>
         ntargets = []
-        for target in fulltargetlist:
-            if ":" in target:
-                if ":do_" not in target:
-                    target = "%s:do_%s" % tuple(target.split(":", 1))
-            else:
-                target = "%s:%s" % (target, task)
-            ntargets.append(target)
+        for target in runlist:
+            if target[0]:
+                ntargets.append("multiconfig:%s:%s:%s" % (target[0], target[1], target[2]))
+            ntargets.append("%s:%s" % (target[1], target[2]))
 
         bb.event.fire(bb.event.BuildStarted(buildname, ntargets), self.data)
 
-        rq = bb.runqueue.RunQueue(self, self.data, self.recipecache, taskdata, runlist)
+        rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist)
         if 'universe' in targets:
             rq.rqdata.warn_multi_bb = True
 
@@ -1537,13 +1581,14 @@
             if CookerFeatures.SEND_SANITYEVENTS in self.featureset:
                 bb.event.fire(bb.event.SanityCheck(False), self.data)
 
-            ignore = self.expanded_data.getVar("ASSUME_PROVIDED", True) or ""
-            self.recipecache.ignored_dependencies = set(ignore.split())
+            for mc in self.multiconfigs:
+                ignore = self.databuilder.mcdata[mc].getVar("ASSUME_PROVIDED", True) or ""
+                self.recipecaches[mc].ignored_dependencies = set(ignore.split())
 
-            for dep in self.configuration.extra_assume_provided:
-                self.recipecache.ignored_dependencies.add(dep)
+                for dep in self.configuration.extra_assume_provided:
+                    self.recipecaches[mc].ignored_dependencies.add(dep)
 
-            self.collection = CookerCollectFiles(self.recipecache.bbfile_config_priorities)
+            self.collection = CookerCollectFiles(self.bbfile_config_priorities)
             (filelist, masked) = self.collection.collect_bbfiles(self.data, self.expanded_data)
 
             self.parser = CookerParser(self, filelist, masked)
@@ -1557,18 +1602,20 @@
                 raise bb.BBHandledException()
             self.show_appends_with_no_recipes()
             self.handlePrefProviders()
-            self.recipecache.bbfile_priority = self.collection.collection_priorities(self.recipecache.pkg_fn, self.data)
+            for mc in self.multiconfigs:
+                self.recipecaches[mc].bbfile_priority = self.collection.collection_priorities(self.recipecaches[mc].pkg_fn, self.data)
             self.state = state.running
 
             # Send an event listing all stamps reachable after parsing
             # which the metadata may use to clean up stale data
-            event = bb.event.ReachableStamps(self.recipecache.stamp)
-            bb.event.fire(event, self.expanded_data)
+            for mc in self.multiconfigs:
+                event = bb.event.ReachableStamps(self.recipecaches[mc].stamp)
+                bb.event.fire(event, self.databuilder.mcdata[mc])
             return None
 
         return True
 
-    def checkPackages(self, pkgs_to_build):
+    def checkPackages(self, pkgs_to_build, task=None):
 
         # Return a copy, don't modify the original
         pkgs_to_build = pkgs_to_build[:]
@@ -1579,26 +1626,29 @@
         ignore = (self.expanded_data.getVar("ASSUME_PROVIDED", True) or "").split()
         for pkg in pkgs_to_build:
             if pkg in ignore:
-                parselog.warn("Explicit target \"%s\" is in ASSUME_PROVIDED, ignoring" % pkg)
+                parselog.warning("Explicit target \"%s\" is in ASSUME_PROVIDED, ignoring" % pkg)
 
         if 'world' in pkgs_to_build:
-            bb.providers.buildWorldTargetList(self.recipecache)
             pkgs_to_build.remove('world')
-            for t in self.recipecache.world_target:
-                pkgs_to_build.append(t)
+            for mc in self.multiconfigs:
+                bb.providers.buildWorldTargetList(self.recipecaches[mc], task)
+                for t in self.recipecaches[mc].world_target:
+                    if mc:
+                        t = "multiconfig:" + mc + ":" + t
+                    pkgs_to_build.append(t)
 
         if 'universe' in pkgs_to_build:
-            parselog.warn("The \"universe\" target is only intended for testing and may produce errors.")
+            parselog.warning("The \"universe\" target is only intended for testing and may produce errors.")
             parselog.debug(1, "collating packages for \"universe\"")
             pkgs_to_build.remove('universe')
-            for t in self.recipecache.universe_target:
-                pkgs_to_build.append(t)
+            for mc in self.multiconfigs:
+                for t in self.recipecaches[mc].universe_target:
+                    if mc:
+                        t = "multiconfig:" + mc + ":" + t
+                    pkgs_to_build.append(t)
 
         return pkgs_to_build
 
-
-
-
     def pre_serve(self):
         # Empty the environment. The environment will be populated as
         # necessary from the data store.
@@ -1847,7 +1897,7 @@
         # Calculate priorities for each file
         matched = set()
         for p in pkgfns:
-            realfn, cls = bb.cache.Cache.virtualfn2realfn(p)
+            realfn, cls, mc = bb.cache.virtualfn2realfn(p)
             priorities[p] = self.calc_bbfile_priority(realfn, matched)
 
         # Don't show the warning if the BBFILE_PATTERN did match .bbappend files
@@ -1870,7 +1920,7 @@
         for collection, pattern, regex, _ in self.bbfile_config_priorities:
             if regex in unmatched:
                 if d.getVar('BBFILE_PATTERN_IGNORE_EMPTY_%s' % collection, True) != '1':
-                    collectlog.warn("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern))
+                    collectlog.warning("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern))
 
         return priorities
 
@@ -1891,7 +1941,7 @@
         while True:
             try:
                 quit = self.quit.get_nowait()
-            except Queue.Empty:
+            except queue.Empty:
                 pass
             else:
                 if quit == 'cancel':
@@ -1905,7 +1955,7 @@
 
             try:
                 self.to_parsers.put(job, timeout=0.5)
-            except Queue.Full:
+            except queue.Full:
                 self.jobs.insert(0, job)
                 continue
 
@@ -1945,7 +1995,7 @@
         while True:
             try:
                 self.quit.get_nowait()
-            except Queue.Empty:
+            except queue.Empty:
                 pass
             else:
                 self.results.cancel_join_thread()
@@ -1956,7 +2006,7 @@
             else:
                 try:
                     job = self.jobs.get(timeout=0.25)
-                except Queue.Empty:
+                except queue.Empty:
                     continue
 
                 if job is None:
@@ -1965,10 +2015,10 @@
 
             try:
                 self.results.put(result, timeout=0.25)
-            except Queue.Full:
+            except queue.Full:
                 pending.append(result)
 
-    def parse(self, filename, appends, caches_array):
+    def parse(self, filename, appends):
         try:
             # Record the filename we're parsing into any events generated
             def parse_filter(self, record):
@@ -1981,7 +2031,7 @@
             bb.event.set_class_handlers(self.handlers.copy())
             bb.event.LogHandler.filter = parse_filter
 
-            return True, bb.cache.Cache.parse(filename, appends, self.cfg, caches_array)
+            return True, self.bb_cache.parse(filename, appends)
         except Exception as exc:
             tb = sys.exc_info()[2]
             exc.recipe = filename
@@ -1999,6 +2049,7 @@
         self.cooker = cooker
         self.cfgdata = cooker.data
         self.cfghash = cooker.data_hash
+        self.cfgbuilder = cooker.databuilder
 
         # Accounting statistics
         self.parsed = 0
@@ -2013,17 +2064,17 @@
         self.current = 0
         self.process_names = []
 
-        self.bb_cache = bb.cache.Cache(self.cfgdata, self.cfghash, cooker.caches_array)
+        self.bb_cache = bb.cache.Cache(self.cfgbuilder, self.cfghash, cooker.caches_array)
         self.fromcache = []
         self.willparse = []
         for filename in self.filelist:
             appends = self.cooker.collection.get_file_appends(filename)
             if not self.bb_cache.cacheValid(filename, appends):
-                self.willparse.append((filename, appends, cooker.caches_array))
+                self.willparse.append((filename, appends))
             else:
                 self.fromcache.append((filename, appends))
         self.toparse = self.total - len(self.fromcache)
-        self.progress_chunk = max(self.toparse / 100, 1)
+        self.progress_chunk = int(max(self.toparse / 100, 1))
 
         self.num_processes = min(int(self.cfgdata.getVar("BB_NUMBER_PARSE_THREADS", True) or
                                  multiprocessing.cpu_count()), len(self.willparse))
@@ -2037,7 +2088,7 @@
         if self.toparse:
             bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata)
             def init():
-                Parser.cfg = self.cfgdata
+                Parser.bb_cache = self.bb_cache
                 bb.utils.set_process_name(multiprocessing.current_process().name)
                 multiprocessing.util.Finalize(None, bb.codeparser.parser_cache_save, exitpriority=1)
                 multiprocessing.util.Finalize(None, bb.fetch.fetcher_parse_save, exitpriority=1)
@@ -2108,7 +2159,7 @@
 
     def load_cached(self):
         for filename, appends in self.fromcache:
-            cached, infos = self.bb_cache.load(filename, appends, self.cfgdata)
+            cached, infos = self.bb_cache.load(filename, appends)
             yield not cached, infos
 
     def parse_generator(self):
@@ -2118,7 +2169,7 @@
 
             try:
                 result = self.result_queue.get(timeout=0.25)
-            except Queue.Empty:
+            except queue.Empty:
                 pass
             else:
                 value = result[1]
@@ -2131,7 +2182,7 @@
         result = []
         parsed = None
         try:
-            parsed, result = self.results.next()
+            parsed, result = next(self.results)
         except StopIteration:
             self.shutdown()
             return False
@@ -2153,15 +2204,18 @@
             return False
         except bb.data_smart.ExpansionError as exc:
             self.error += 1
-            _, value, _ = sys.exc_info()
-            logger.error('ExpansionError during parsing %s: %s', value.recipe, str(exc))
+            bbdir = os.path.dirname(__file__) + os.sep
+            etype, value, _ = sys.exc_info()
+            tb = list(itertools.dropwhile(lambda e: e.filename.startswith(bbdir), exc.traceback))
+            logger.error('ExpansionError during parsing %s', value.recipe,
+                         exc_info=(etype, value, tb))
             self.shutdown(clean=False)
             return False
         except Exception as exc:
             self.error += 1
             etype, value, tb = sys.exc_info()
             if hasattr(value, "recipe"):
-                logger.error('Unable to parse %s', value.recipe,
+                logger.error('Unable to parse %s' % value.recipe,
                             exc_info=(etype, value, exc.traceback))
             else:
                 # Most likely, an exception occurred during raising an exception
@@ -2184,13 +2238,13 @@
             if info_array[0].skipped:
                 self.skipped += 1
                 self.cooker.skiplist[virtualfn] = SkippedPackage(info_array[0])
-            self.bb_cache.add_info(virtualfn, info_array, self.cooker.recipecache,
+            (fn, cls, mc) = bb.cache.virtualfn2realfn(virtualfn)
+            self.bb_cache.add_info(virtualfn, info_array, self.cooker.recipecaches[mc],
                                         parsed=parsed, watcher = self.cooker.add_filewatch)
         return True
 
     def reparse(self, filename):
-        infos = self.bb_cache.parse(filename,
-                                    self.cooker.collection.get_file_appends(filename),
-                                    self.cfgdata, self.cooker.caches_array)
+        infos = self.bb_cache.parse(filename, self.cooker.collection.get_file_appends(filename))
         for vfn, info_array in infos:
-            self.cooker.recipecache.add_from_recipeinfo(vfn, info_array)
+            (fn, cls, mc) = bb.cache.virtualfn2realfn(vfn)
+            self.cooker.recipecaches[mc].add_from_recipeinfo(vfn, info_array)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py b/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py
index 50259a9..b07c266 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py
@@ -22,9 +22,11 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-import os, sys
-from functools import wraps
 import logging
+import os
+import re
+import sys
+from functools import wraps
 import bb
 from bb import data
 import bb.parse
@@ -192,7 +194,8 @@
                 fn, _, _, _ = traceback.extract_tb(tb, 1)[0]
                 if not fn.startswith(bbdir):
                     break
-            parselog.critical("Unable to parse %s", fn, exc_info=(exc_class, exc, tb))
+            parselog.critical("Unable to parse %s" % fn, exc_info=(exc_class, exc, tb))
+            sys.exit(1)
         except bb.parse.ParseError as exc:
             parselog.critical(str(exc))
             sys.exit(1)
@@ -234,9 +237,9 @@
 
         bb.utils.set_context(bb.utils.clean_context())
         bb.event.set_class_handlers(bb.event.clean_class_handlers())
-        self.data = bb.data.init()
+        self.basedata = bb.data.init()
         if self.tracking:
-            self.data.enableTracking()
+            self.basedata.enableTracking()
 
         # Keep a datastore of the initial environment variables and their
         # values from when BitBake was launched to enable child processes
@@ -247,16 +250,49 @@
             self.savedenv.setVar(k, cookercfg.env[k])
 
         filtered_keys = bb.utils.approved_variables()
-        bb.data.inheritFromOS(self.data, self.savedenv, filtered_keys)
-        self.data.setVar("BB_ORIGENV", self.savedenv)
+        bb.data.inheritFromOS(self.basedata, self.savedenv, filtered_keys)
+        self.basedata.setVar("BB_ORIGENV", self.savedenv)
         
         if worker:
-            self.data.setVar("BB_WORKERCONTEXT", "1")
+            self.basedata.setVar("BB_WORKERCONTEXT", "1")
+
+        self.data = self.basedata
+        self.mcdata = {}
 
     def parseBaseConfiguration(self):
         try:
-            self.parseConfigurationFiles(self.prefiles, self.postfiles)
-        except SyntaxError:
+            bb.parse.init_parser(self.basedata)
+            self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
+
+            if self.data.getVar("BB_WORKERCONTEXT", False) is None:
+                bb.fetch.fetcher_init(self.data)
+            bb.codeparser.parser_cache_init(self.data)
+
+            bb.event.fire(bb.event.ConfigParsed(), self.data)
+
+            reparse_cnt = 0
+            while self.data.getVar("BB_INVALIDCONF", False) is True:
+                if reparse_cnt > 20:
+                    logger.error("Configuration has been re-parsed over 20 times, "
+                                 "breaking out of the loop...")
+                    raise Exception("Too deep config re-parse loop. Check locations where "
+                                    "BB_INVALIDCONF is being set (ConfigParsed event handlers)")
+                self.data.setVar("BB_INVALIDCONF", False)
+                self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
+                reparse_cnt += 1
+                bb.event.fire(bb.event.ConfigParsed(), self.data)
+
+            bb.parse.init_parser(self.data)
+            self.data_hash = self.data.get_hash()
+            self.mcdata[''] = self.data
+
+            multiconfig = (self.data.getVar("BBMULTICONFIG", True) or "").split()
+            for config in multiconfig:
+                mcdata = self.parseConfigurationFiles(['conf/multiconfig/%s.conf' % config] + self.prefiles, self.postfiles)
+                bb.event.fire(bb.event.ConfigParsed(), mcdata)
+                self.mcdata[config] = mcdata
+
+        except (SyntaxError, bb.BBHandledException):
             raise bb.BBHandledException
         except bb.data_smart.ExpansionError as e:
             logger.error(str(e))
@@ -269,8 +305,7 @@
         return findConfigFile("bblayers.conf", data)
 
     def parseConfigurationFiles(self, prefiles, postfiles):
-        data = self.data
-        bb.parse.init_parser(data)
+        data = bb.data.createCopy(self.basedata)
 
         # Parse files for loading *before* bitbake.conf and any includes
         for f in prefiles:
@@ -289,15 +324,22 @@
             data = bb.data.createCopy(data)
             approved = bb.utils.approved_variables()
             for layer in layers:
+                if not os.path.isdir(layer):
+                    parselog.critical("Layer directory '%s' does not exist! "
+                                      "Please check BBLAYERS in %s" % (layer, layerconf))
+                    sys.exit(1)
                 parselog.debug(2, "Adding layer %s", layer)
                 if 'HOME' in approved and '~' in layer:
                     layer = os.path.expanduser(layer)
                 if layer.endswith('/'):
                     layer = layer.rstrip('/')
                 data.setVar('LAYERDIR', layer)
+                data.setVar('LAYERDIR_RE', re.escape(layer))
                 data = parse_config_file(os.path.join(layer, "conf", "layer.conf"), data)
                 data.expandVarref('LAYERDIR')
+                data.expandVarref('LAYERDIR_RE')
 
+            data.delVar('LAYERDIR_RE')
             data.delVar('LAYERDIR')
 
         if not data.getVar("BBPATH", True):
@@ -323,23 +365,13 @@
         # We register any handlers we've found so far here...
         for var in data.getVar('__BBHANDLERS', False) or []:
             handlerfn = data.getVarFlag(var, "filename", False)
+            if not handlerfn:
+                parselog.critical("Undefined event handler function '%s'" % var)
+                sys.exit(1)
             handlerln = int(data.getVarFlag(var, "lineno", False))
             bb.event.register(var, data.getVar(var, False),  (data.getVarFlag(var, "eventmask", True) or "").split(), handlerfn, handlerln)
 
-        if data.getVar("BB_WORKERCONTEXT", False) is None:
-            bb.fetch.fetcher_init(data)
-        bb.codeparser.parser_cache_init(data)
-        bb.event.fire(bb.event.ConfigParsed(), data)
-
-        if data.getVar("BB_INVALIDCONF", False) is True:
-            data.setVar("BB_INVALIDCONF", False)
-            self.parseConfigurationFiles(self.prefiles, self.postfiles)
-            return
-
-        bb.parse.init_parser(data)
         data.setVar('BBINCLUDED',bb.parse.get_file_depends(data))
-        self.data = data
-        self.data_hash = data.get_hash()
 
-
+        return data
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/daemonize.py b/import-layers/yocto-poky/bitbake/lib/bb/daemonize.py
index 346a618..ab4a954 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/daemonize.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/daemonize.py
@@ -178,8 +178,8 @@
 #    os.dup2(0, 2)                      # standard error (2)
 
 
-    si = file('/dev/null', 'r')
-    so = file(logfile, 'w')
+    si = open('/dev/null', 'r')
+    so = open(logfile, 'w')
     se = so
 
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/data.py b/import-layers/yocto-poky/bitbake/lib/bb/data.py
index dbc6dea..c1f27cd 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/data.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/data.py
@@ -182,12 +182,12 @@
 
 def emit_var(var, o=sys.__stdout__, d = init(), all=False):
     """Emit a variable to be sourced by a shell."""
-    if d.getVarFlag(var, "python", False):
+    func = d.getVarFlag(var, "func", False)
+    if d.getVarFlag(var, 'python', False) and func:
         return False
 
     export = d.getVarFlag(var, "export", False)
     unexport = d.getVarFlag(var, "unexport", False)
-    func = d.getVarFlag(var, "func", False)
     if not all and not export and not unexport and not func:
         return False
 
@@ -339,7 +339,7 @@
             deps |= parser.references
             deps = deps | (keys & parser.execs)
             return deps, value
-        varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "vardepvalueexclude", "postfuncs", "prefuncs", "lineno", "filename"]) or {}
+        varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {}
         vardeps = varflags.get("vardeps")
         value = d.getVar(key, False)
 
@@ -364,7 +364,7 @@
             if varflags.get("python"):
                 parser = bb.codeparser.PythonParser(key, logger)
                 if value and "\t" in value:
-                    logger.warn("Variable %s contains tabs, please remove these (%s)" % (key, d.getVar("FILE", True)))
+                    logger.warning("Variable %s contains tabs, please remove these (%s)" % (key, d.getVar("FILE", True)))
                 parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno"))
                 deps = deps | parser.references
                 deps = deps | (keys & parser.execs)
@@ -383,6 +383,8 @@
                 deps = deps | set(varflags["prefuncs"].split())
             if "postfuncs" in varflags:
                 deps = deps | set(varflags["postfuncs"].split())
+            if "exports" in varflags:
+                deps = deps | set(varflags["exports"].split())
         else:
             parser = d.expandWithRefs(value, key)
             deps |= parser.references
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 fa1e794..f100446 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/data_smart.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/data_smart.py
@@ -135,7 +135,7 @@
                     self.contains[k] = parser.contains[k].copy()
                 else:
                     self.contains[k].update(parser.contains[k])
-            value = utils.better_eval(codeobj, DataContext(self.d))
+            value = utils.better_eval(codeobj, DataContext(self.d), {'d' : self.d})
             return str(value)
 
 
@@ -372,7 +372,7 @@
 
     def expandWithRefs(self, s, varname):
 
-        if not isinstance(s, basestring): # sanity check
+        if not isinstance(s, str): # sanity check
             return VariableParse(varname, self, s)
 
         if varname and varname in self.expand_cache:
@@ -397,8 +397,7 @@
             except bb.parse.SkipRecipe:
                 raise
             except Exception as exc:
-                exc_class, exc, tb = sys.exc_info()
-                raise ExpansionError, ExpansionError(varname, s, exc), tb
+                raise ExpansionError(varname, s, exc) from exc
 
         varparse.value = s
 
@@ -917,7 +916,7 @@
              yield k
 
     def __len__(self):
-        return len(frozenset(self))
+        return len(frozenset(iter(self)))
 
     def __getitem__(self, item):
         value = self.getVar(item, False)
@@ -966,4 +965,4 @@
                     data.update({i:value})
 
         data_str = str([(k, data[k]) for k in sorted(data.keys())])
-        return hashlib.md5(data_str).hexdigest()
+        return hashlib.md5(data_str.encode("utf-8")).hexdigest()
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/event.py b/import-layers/yocto-poky/bitbake/lib/bb/event.py
index 5ffe89e..6f1cb10 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/event.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/event.py
@@ -24,14 +24,13 @@
 
 import os, sys
 import warnings
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
+import pickle
 import logging
 import atexit
 import traceback
 import ast
+import threading
+
 import bb.utils
 import bb.compat
 import bb.exceptions
@@ -71,12 +70,27 @@
 _catchall_handlers = {}
 _eventfilter = None
 _uiready = False
+_thread_lock = threading.Lock()
+_thread_lock_enabled = False
+
+if hasattr(__builtins__, '__setitem__'):
+    builtins = __builtins__
+else:
+    builtins = __builtins__.__dict__
+
+def enable_threadlock():
+    global _thread_lock_enabled
+    _thread_lock_enabled = True
+
+def disable_threadlock():
+    global _thread_lock_enabled
+    _thread_lock_enabled = False
 
 def execute_handler(name, handler, event, d):
     event.data = d
     addedd = False
-    if 'd' not in __builtins__:
-        __builtins__['d'] = d
+    if 'd' not in builtins:
+        builtins['d'] = d
         addedd = True
     try:
         ret = handler(event)
@@ -94,7 +108,7 @@
     finally:
         del event.data
         if addedd:
-            del __builtins__['d']
+            del builtins['d']
 
 def fire_class_handlers(event, d):
     if isinstance(event, logging.LogRecord):
@@ -102,7 +116,7 @@
 
     eid = str(event.__class__)[8:-2]
     evt_hmap = _event_handler_map.get(eid, {})
-    for name, handler in _handlers.iteritems():
+    for name, handler in list(_handlers.items()):
         if name in _catchall_handlers or name in evt_hmap:
             if _eventfilter:
                 if not _eventfilter(name, handler, event, d):
@@ -117,31 +131,44 @@
     logger = logging.getLogger("BitBake")
     if not _uiready:
         from bb.msg import BBLogFormatter
-        console = logging.StreamHandler(sys.stdout)
-        console.setFormatter(BBLogFormatter("%(levelname)s: %(message)s"))
-        logger.handlers = [console]
+        stdout = logging.StreamHandler(sys.stdout)
+        stderr = logging.StreamHandler(sys.stderr)
+        formatter = BBLogFormatter("%(levelname)s: %(message)s")
+        stdout.setFormatter(formatter)
+        stderr.setFormatter(formatter)
 
         # First check to see if we have any proper messages
         msgprint = False
-        for event in ui_queue:
+        for event in ui_queue[:]:
             if isinstance(event, logging.LogRecord):
                 if event.levelno > logging.DEBUG:
+                    if event.levelno >= logging.WARNING:
+                        logger.addHandler(stderr)
+                    else:
+                        logger.addHandler(stdout)
                     logger.handle(event)
                     msgprint = True
         if msgprint:
             return
 
         # Nope, so just print all of the messages we have (including debug messages)
-        for event in ui_queue:
+        logger.addHandler(stdout)
+        for event in ui_queue[:]:
             if isinstance(event, logging.LogRecord):
                 logger.handle(event)
 
 def fire_ui_handlers(event, d):
+    global _thread_lock
+    global _thread_lock_enabled
+
     if not _uiready:
         # No UI handlers registered yet, queue up the messages
         ui_queue.append(event)
         return
 
+    if _thread_lock_enabled:
+        _thread_lock.acquire()
+
     errors = []
     for h in _ui_handlers:
         #print "Sending event %s" % event
@@ -160,6 +187,9 @@
     for h in errors:
         del _ui_handlers[h]
 
+    if _thread_lock_enabled:
+        _thread_lock.release()
+
 def fire(event, d):
     """Fire off an Event"""
 
@@ -187,7 +217,7 @@
 
     if handler is not None:
         # handle string containing python code
-        if isinstance(handler, basestring):
+        if isinstance(handler, str):
             tmp = "def %s(e):\n%s" % (name, handler)
             try:
                 code = bb.methodpool.compile_cache(tmp)
@@ -225,6 +255,13 @@
     """Remove an Event handler"""
     _handlers.pop(name)
 
+def get_handlers():
+    return _handlers
+
+def set_handlers(handlers):
+    global _handlers
+    _handlers = handlers
+
 def set_eventfilter(func):
     global _eventfilter
     _eventfilter = func
@@ -373,7 +410,11 @@
 
 
 
-
+class BuildInit(BuildBase):
+    """buildFile or buildTargets was invoked"""
+    def __init__(self, p=[]):
+        name = None
+        BuildBase.__init__(self, name, p)
 
 class BuildStarted(BuildBase, OperationStarted):
     """bbmake build run started"""
@@ -605,8 +646,9 @@
             if hasattr(tb, 'tb_next'):
                 tb = list(bb.exceptions.extract_traceback(tb, context=3))
             # Need to turn the value into something the logging system can pickle
-            value = str(value)
             record.bb_exc_info = (etype, value, tb)
+            record.bb_exc_formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
+            value = str(value)
             record.exc_info = None
         fire(record, None)
 
@@ -637,6 +679,33 @@
         self.type = eventtype
         self._localdata = eventdata
 
+class ProcessStarted(Event):
+    """
+    Generic process started event (usually part of the initial startup)
+    where further progress events will be delivered
+    """
+    def __init__(self, processname, total):
+        Event.__init__(self)
+        self.processname = processname
+        self.total = total
+
+class ProcessProgress(Event):
+    """
+    Generic process progress event (usually part of the initial startup)
+    """
+    def __init__(self, processname, progress):
+        Event.__init__(self)
+        self.processname = processname
+        self.progress = progress
+
+class ProcessFinished(Event):
+    """
+    Generic process finished event (usually part of the initial startup)
+    """
+    def __init__(self, processname):
+        Event.__init__(self)
+        self.processname = processname
+
 class SanityCheck(Event):
     """
     Event to run sanity checks, either raise errors or generate events as return status.
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/exceptions.py b/import-layers/yocto-poky/bitbake/lib/bb/exceptions.py
index f182c8f..cd71343 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/exceptions.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/exceptions.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+
 import inspect
 import traceback
 import bb.namedtuple_with_abc
@@ -86,6 +86,6 @@
 
 def to_string(exc):
     if isinstance(exc, SystemExit):
-        if not isinstance(exc.code, basestring):
+        if not isinstance(exc.code, str):
             return 'Exited with "%d"' % exc.code
     return str(exc)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/__init__.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/__init__.py
index 1fa6702..cd7362c 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/__init__.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/__init__.py
@@ -25,31 +25,26 @@
 #
 # Based on functions from the base bb module, Copyright 2003 Holger Schurig
 
-from __future__ import absolute_import
-from __future__ import print_function
 import os, re
 import signal
 import logging
-import urllib
-import urlparse
+import urllib.request, urllib.parse, urllib.error
+if 'git' not in urllib.parse.uses_netloc:
+    urllib.parse.uses_netloc.append('git')
+import operator
+import collections
+import subprocess
+import pickle
 import bb.persist_data, bb.utils
 import bb.checksum
 from bb import data
 import bb.process
-import subprocess
 
 __version__ = "2"
 _checksum_cache = bb.checksum.FileChecksumCache()
 
 logger = logging.getLogger("BitBake.Fetcher")
 
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-    logger.info("Importing cPickle failed. "
-                "Falling back to a very slow implementation.")
-
 class BBFetchException(Exception):
     """Class all fetch exceptions inherit from"""
     def __init__(self, message):
@@ -231,14 +226,14 @@
         # them are not quite RFC compliant.
         uri, param_str = (uri.split(";", 1) + [None])[:2]
 
-        urlp = urlparse.urlparse(uri)
+        urlp = urllib.parse.urlparse(uri)
         self.scheme = urlp.scheme
 
         reparse = 0
 
         # Coerce urlparse to make URI scheme use netloc
-        if not self.scheme in urlparse.uses_netloc:
-            urlparse.uses_params.append(self.scheme)
+        if not self.scheme in urllib.parse.uses_netloc:
+            urllib.parse.uses_params.append(self.scheme)
             reparse = 1
 
         # Make urlparse happy(/ier) by converting local resources
@@ -249,7 +244,7 @@
             reparse = 1
 
         if reparse:
-            urlp = urlparse.urlparse(uri)
+            urlp = urllib.parse.urlparse(uri)
 
         # Identify if the URI is relative or not
         if urlp.scheme in self._relative_schemes and \
@@ -265,7 +260,7 @@
             if urlp.password:
                 self.userinfo += ':%s' % urlp.password
 
-        self.path = urllib.unquote(urlp.path)
+        self.path = urllib.parse.unquote(urlp.path)
 
         if param_str:
             self.params = self._param_str_split(param_str, ";")
@@ -297,7 +292,7 @@
             if self.query else '')
 
     def _param_str_split(self, string, elmdelim, kvdelim="="):
-        ret = {}
+        ret = collections.OrderedDict()
         for k, v in [x.split(kvdelim, 1) for x in string.split(elmdelim)]:
             ret[k] = v
         return ret
@@ -313,11 +308,11 @@
 
     @property
     def path_quoted(self):
-        return urllib.quote(self.path)
+        return urllib.parse.quote(self.path)
 
     @path_quoted.setter
     def path_quoted(self, path):
-        self.path = urllib.unquote(path)
+        self.path = urllib.parse.unquote(path)
 
     @property
     def path(self):
@@ -390,7 +385,7 @@
         user = ''
         pswd = ''
 
-    p = {}
+    p = collections.OrderedDict()
     if parm:
         for s in parm.split(';'):
             if s:
@@ -399,7 +394,7 @@
                 s1, s2 = s.split('=')
                 p[s1] = s2
 
-    return type, host, urllib.unquote(path), user, pswd, p
+    return type, host, urllib.parse.unquote(path), user, pswd, p
 
 def encodeurl(decoded):
     """Encodes a URL from tokens (scheme, network location, path,
@@ -423,7 +418,7 @@
     # Standardise path to ensure comparisons work
     while '//' in path:
         path = path.replace("//", "/")
-    url += "%s" % urllib.quote(path)
+    url += "%s" % urllib.parse.quote(path)
     if p:
         for parm in p:
             url += ";%s=%s" % (parm, p[parm])
@@ -586,12 +581,12 @@
             raise NoChecksumError('Missing SRC_URI checksum', ud.url)
 
         # Log missing sums so user can more easily add them
-        logger.warn('Missing md5 SRC_URI checksum for %s, consider adding to the recipe:\n'
-                    'SRC_URI[%s] = "%s"',
-                    ud.localpath, ud.md5_name, md5data)
-        logger.warn('Missing sha256 SRC_URI checksum for %s, consider adding to the recipe:\n'
-                    'SRC_URI[%s] = "%s"',
-                    ud.localpath, ud.sha256_name, sha256data)
+        logger.warning('Missing md5 SRC_URI checksum for %s, consider adding to the recipe:\n'
+                       'SRC_URI[%s] = "%s"',
+                       ud.localpath, ud.md5_name, md5data)
+        logger.warning('Missing sha256 SRC_URI checksum for %s, consider adding to the recipe:\n'
+                       'SRC_URI[%s] = "%s"',
+                       ud.localpath, ud.sha256_name, sha256data)
 
     # We want to alert the user if a checksum is defined in the recipe but
     # it does not match.
@@ -659,9 +654,9 @@
             # files to those containing the checksums.
             if not isinstance(e, EOFError):
                 # Ignore errors, they aren't fatal
-                logger.warn("Couldn't load checksums from donestamp %s: %s "
-                            "(msg: %s)" % (ud.donestamp, type(e).__name__,
-                                           str(e)))
+                logger.warning("Couldn't load checksums from donestamp %s: %s "
+                               "(msg: %s)" % (ud.donestamp, type(e).__name__,
+                                              str(e)))
 
     try:
         checksums = verify_checksum(ud, d, precomputed_checksums)
@@ -669,14 +664,14 @@
         # as an upgrade path from the previous done stamp file format.
         if checksums != precomputed_checksums:
             with open(ud.donestamp, "wb") as cachefile:
-                p = pickle.Pickler(cachefile, pickle.HIGHEST_PROTOCOL)
+                p = pickle.Pickler(cachefile, 2)
                 p.dump(checksums)
         return True
     except ChecksumError as e:
         # Checksums failed to verify, trigger re-download and remove the
         # incorrect stamp file.
-        logger.warn("Checksum mismatch for local file %s\n"
-                    "Cleaning and trying again." % ud.localpath)
+        logger.warning("Checksum mismatch for local file %s\n"
+                       "Cleaning and trying again." % ud.localpath)
         if os.path.exists(ud.localpath):
             rename_bad_checksum(ud, e.checksum)
         bb.utils.remove(ud.donestamp)
@@ -703,13 +698,13 @@
             checksums = verify_checksum(ud, d)
             # Store the checksums for later re-verification against the recipe
             with open(ud.donestamp, "wb") as cachefile:
-                p = pickle.Pickler(cachefile, pickle.HIGHEST_PROTOCOL)
+                p = pickle.Pickler(cachefile, 2)
                 p.dump(checksums)
         except ChecksumError as e:
             # Checksums failed to verify, trigger re-download and remove the
             # incorrect stamp file.
-            logger.warn("Checksum mismatch for local file %s\n"
-                        "Cleaning and trying again." % ud.localpath)
+            logger.warning("Checksum mismatch for local file %s\n"
+                           "Cleaning and trying again." % ud.localpath)
             if os.path.exists(ud.localpath):
                 rename_bad_checksum(ud, e.checksum)
             bb.utils.remove(ud.donestamp)
@@ -766,6 +761,7 @@
     if not format:
         raise FetchError("The SRCREV_FORMAT variable must be set when multiple SCMs are used.")
 
+    name_to_rev = {}
     seenautoinc = False
     for scm in scms:
         ud = urldata[scm]
@@ -774,7 +770,16 @@
             seenautoinc = seenautoinc or autoinc
             if len(rev) > 10:
                 rev = rev[:10]
-            format = format.replace(name, rev)
+            name_to_rev[name] = rev
+    # Replace names by revisions in the SRCREV_FORMAT string. The approach used
+    # here can handle names being prefixes of other names and names appearing
+    # as substrings in revisions (in which case the name should not be
+    # expanded). The '|' regular expression operator tries matches from left to
+    # right, so we need to sort the names with the longest ones first.
+    names_descending_len = sorted(name_to_rev, key=len, reverse=True)
+    name_to_rev_re = "|".join(re.escape(name) for name in names_descending_len)
+    format = re.sub(name_to_rev_re, lambda match: name_to_rev[match.group(0)], format)
+
     if seenautoinc:
        format = "AUTOINC+" + format
 
@@ -784,7 +789,7 @@
     fetcher = bb.fetch2.Fetch([url], d)
     return fetcher.localpath(url)
 
-def runfetchcmd(cmd, d, quiet=False, cleanup=None):
+def runfetchcmd(cmd, d, quiet=False, cleanup=None, log=None, workdir=None):
     """
     Run cmd returning the command output
     Raise an error if interrupted or cmd fails
@@ -807,13 +812,16 @@
                   'GIT_SSL_CAINFO',
                   'GIT_SMART_HTTP',
                   'SSH_AUTH_SOCK', 'SSH_AGENT_PID',
-                  'SOCKS5_USER', 'SOCKS5_PASSWD']
+                  'SOCKS5_USER', 'SOCKS5_PASSWD',
+                  'DBUS_SESSION_BUS_ADDRESS',
+                  'P4CONFIG']
 
     if not cleanup:
         cleanup = []
 
+    origenv = d.getVar("BB_ORIGENV", False)
     for var in exportvars:
-        val = d.getVar(var, True)
+        val = d.getVar(var, True) or (origenv and origenv.getVar(var, True))
         if val:
             cmd = 'export ' + var + '=\"%s\"; %s' % (val, cmd)
 
@@ -823,7 +831,7 @@
     error_message = ""
 
     try:
-        (output, errors) = bb.process.run(cmd, shell=True, stderr=subprocess.PIPE)
+        (output, errors) = bb.process.run(cmd, log=log, shell=True, stderr=subprocess.PIPE, cwd=workdir)
         success = True
     except bb.process.NotFoundError as e:
         error_message = "Fetch command %s" % (e.command)
@@ -834,7 +842,7 @@
             output = "output:\n%s" % e.stderr
         else:
             output = "no output"
-        error_message = "Fetch command failed with exit code %s, %s" % (e.exitcode, output)
+        error_message = "Fetch command %s failed with exit code %s, %s" % (e.command, e.exitcode, output)
     except bb.process.CmdError as e:
         error_message = "Fetch command %s could not be run:\n%s" % (e.command, e.msg)
     if not success:
@@ -937,8 +945,6 @@
                 return found
             return False
 
-        os.chdir(ld.getVar("DL_DIR", True))
-
         if not verify_donestamp(ud, ld, origud) or ud.method.need_update(ud, ld):
             ud.method.download(ud, ld)
             if hasattr(ud.method,"build_mirror_data"):
@@ -982,8 +988,8 @@
 
     except bb.fetch2.BBFetchException as e:
         if isinstance(e, ChecksumError):
-            logger.warn("Mirror checksum failure for url %s (original url: %s)\nCleaning and trying again." % (ud.url, origud.url))
-            logger.warn(str(e))
+            logger.warning("Mirror checksum failure for url %s (original url: %s)\nCleaning and trying again." % (ud.url, origud.url))
+            logger.warning(str(e))
             if os.path.exists(ud.localpath):
                 rename_bad_checksum(ud, e.checksum)
         elif isinstance(e, NoChecksumError):
@@ -1198,7 +1204,7 @@
             raise NonLocalMethod()
 
         if self.parm.get("proto", None) and "protocol" not in self.parm:
-            logger.warn('Consider updating %s recipe to use "protocol" not "proto" in SRC_URI.', d.getVar('PN', True))
+            logger.warning('Consider updating %s recipe to use "protocol" not "proto" in SRC_URI.', d.getVar('PN', True))
             self.parm["protocol"] = self.parm.get("proto", None)
 
         if hasattr(self.method, "urldata_init"):
@@ -1395,7 +1401,18 @@
                 else:
                     cmd = 'rpm2cpio.sh %s | cpio -id' % (file)
             elif file.endswith('.deb') or file.endswith('.ipk'):
-                cmd = 'ar -p %s data.tar.gz | zcat | tar --no-same-owner -xpf -' % file
+                output = subprocess.check_output('ar -t %s' % file, preexec_fn=subprocess_setup, shell=True)
+                datafile = None
+                if output:
+                    for line in output.decode().splitlines():
+                        if line.startswith('data.tar.'):
+                            datafile = line
+                            break
+                    else:
+                        raise UnpackError("Unable to unpack deb/ipk package - does not contain data.tar.* file", urldata.url)
+                else:
+                    raise UnpackError("Unable to unpack deb/ipk package - could not list contents", urldata.url)
+                cmd = 'ar x %s %s && tar --no-same-owner -xpf %s && rm %s' % (file, datafile, datafile, datafile)
             elif file.endswith('.tar.7z'):
                 cmd = '7z x -so %s | tar xf - ' % file
             elif file.endswith('.7z'):
@@ -1403,7 +1420,13 @@
 
         # If 'subdir' param exists, create a dir and use it as destination for unpack cmd
         if 'subdir' in urldata.parm:
-            unpackdir = '%s/%s' % (rootdir, urldata.parm.get('subdir'))
+            subdir = urldata.parm.get('subdir')
+            if os.path.isabs(subdir):
+                if not os.path.realpath(subdir).startswith(os.path.realpath(rootdir)):
+                    raise UnpackError("subdir argument isn't a subdirectory of unpack root %s" % rootdir, urldata.url)
+                unpackdir = subdir
+            else:
+                unpackdir = os.path.join(rootdir, subdir)
             bb.utils.mkdirhier(unpackdir)
         else:
             unpackdir = rootdir
@@ -1422,22 +1445,16 @@
                     if urlpath.find("/") != -1:
                         destdir = urlpath.rsplit("/", 1)[0] + '/'
                         bb.utils.mkdirhier("%s/%s" % (unpackdir, destdir))
-                cmd = 'cp -fpPR %s %s' % (file, destdir)
+                cmd = 'cp -fpPRH %s %s' % (file, destdir)
 
         if not cmd:
             return
 
-        # Change to unpackdir before executing command
-        save_cwd = os.getcwd();
-        os.chdir(unpackdir)
-
         path = data.getVar('PATH', True)
         if path:
             cmd = "PATH=\"%s\" %s" % (path, cmd)
-        bb.note("Unpacking %s to %s/" % (file, os.getcwd()))
-        ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
-
-        os.chdir(save_cwd)
+        bb.note("Unpacking %s to %s/" % (file, unpackdir))
+        ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True, cwd=unpackdir)
 
         if ret != 0:
             raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), urldata.url)
@@ -1505,8 +1522,9 @@
         self.connection_cache = connection_cache
 
         fn = d.getVar('FILE', True)
-        if cache and fn and fn in urldata_cache:
-            self.ud = urldata_cache[fn]
+        mc = d.getVar('__BBMULTICONFIG', True) or ""
+        if cache and fn and mc + fn in urldata_cache:
+            self.ud = urldata_cache[mc + fn]
 
         for url in urls:
             if url not in self.ud:
@@ -1518,7 +1536,7 @@
                         pass
 
         if fn and cache:
-            urldata_cache[fn] = self.ud
+            urldata_cache[mc + fn] = self.ud
 
     def localpath(self, url):
         if url not in self.urls:
@@ -1572,8 +1590,6 @@
                 if premirroronly:
                     self.d.setVar("BB_NO_NETWORK", "1")
 
-                os.chdir(self.d.getVar("DL_DIR", True))
-
                 firsterr = None
                 verified_stamp = verify_donestamp(ud, self.d)
                 if not localpath and (not verified_stamp or m.need_update(ud, self.d)):
@@ -1594,14 +1610,14 @@
 
                     except BBFetchException as e:
                         if isinstance(e, ChecksumError):
-                            logger.warn("Checksum failure encountered with download of %s - will attempt other sources if available" % u)
+                            logger.warning("Checksum failure encountered with download of %s - will attempt other sources if available" % u)
                             logger.debug(1, str(e))
                             if os.path.exists(ud.localpath):
                                 rename_bad_checksum(ud, e.checksum)
                         elif isinstance(e, NoChecksumError):
                             raise
                         else:
-                            logger.warn('Failed to fetch URL %s, attempting MIRRORS if available' % u)
+                            logger.warning('Failed to fetch URL %s, attempting MIRRORS if available' % u)
                             logger.debug(1, str(e))
                         firsterr = e
                         # Remove any incomplete fetch
@@ -1734,7 +1750,7 @@
             del self.cache[cn]
 
     def close_connections(self):
-        for cn in self.cache.keys():
+        for cn in list(self.cache.keys()):
             self.cache[cn].close()
             del self.cache[cn]
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/bzr.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/bzr.py
index 03e9ac4..72264af 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/bzr.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/bzr.py
@@ -88,28 +88,25 @@
             bzrcmd = self._buildbzrcommand(ud, d, "update")
             logger.debug(1, "BZR Update %s", ud.url)
             bb.fetch2.check_network_access(d, bzrcmd, ud.url)
-            os.chdir(os.path.join (ud.pkgdir, os.path.basename(ud.path)))
-            runfetchcmd(bzrcmd, d)
+            runfetchcmd(bzrcmd, d, workdir=os.path.join(ud.pkgdir, os.path.basename(ud.path)))
         else:
             bb.utils.remove(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)), True)
             bzrcmd = self._buildbzrcommand(ud, d, "fetch")
             bb.fetch2.check_network_access(d, bzrcmd, ud.url)
             logger.debug(1, "BZR Checkout %s", ud.url)
             bb.utils.mkdirhier(ud.pkgdir)
-            os.chdir(ud.pkgdir)
             logger.debug(1, "Running %s", bzrcmd)
-            runfetchcmd(bzrcmd, d)
-
-        os.chdir(ud.pkgdir)
+            runfetchcmd(bzrcmd, d, workdir=ud.pkgdir)
 
         scmdata = ud.parm.get("scmdata", "")
         if scmdata == "keep":
             tar_flags = ""
         else:
-            tar_flags = "--exclude '.bzr' --exclude '.bzrtags'"
+            tar_flags = "--exclude='.bzr' --exclude='.bzrtags'"
 
         # tar them up to a defined filename
-        runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(ud.pkgdir)), d, cleanup = [ud.localpath])
+        runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(ud.pkgdir)),
+                    d, cleanup=[ud.localpath], workdir=ud.pkgdir)
 
     def supports_srcrev(self):
         return True
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/clearcase.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/clearcase.py
index ba83e7c..70e280a 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/clearcase.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/clearcase.py
@@ -202,11 +202,10 @@
 
     def _remove_view(self, ud, d):
         if os.path.exists(ud.viewdir):
-            os.chdir(ud.ccasedir)
             cmd = self._build_ccase_command(ud, 'rmview');
             logger.info("cleaning up [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname)
             bb.fetch2.check_network_access(d, cmd, ud.url)
-            output = runfetchcmd(cmd, d)
+            output = runfetchcmd(cmd, d, workdir=ud.ccasedir)
             logger.info("rmview output: %s", output)
 
     def need_update(self, ud, d):
@@ -241,11 +240,10 @@
                 raise e
 
         # Set configspec: Setting the configspec effectively fetches the files as defined in the configspec
-        os.chdir(ud.viewdir)
         cmd = self._build_ccase_command(ud, 'setcs');
         logger.info("fetching data [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname)
         bb.fetch2.check_network_access(d, cmd, ud.url)
-        output = runfetchcmd(cmd, d)
+        output = runfetchcmd(cmd, d, workdir=ud.viewdir)
         logger.info("%s", output)
 
         # Copy the configspec to the viewdir so we have it in our source tarball later
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/cvs.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/cvs.py
index d27d96f..5ff70ba 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/cvs.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/cvs.py
@@ -123,22 +123,23 @@
         pkg = d.getVar('PN', True)
         pkgdir = os.path.join(d.getVar('CVSDIR', True), pkg)
         moddir = os.path.join(pkgdir, localdir)
+        workdir = None
         if os.access(os.path.join(moddir, 'CVS'), os.R_OK):
             logger.info("Update " + ud.url)
             bb.fetch2.check_network_access(d, cvsupdatecmd, ud.url)
             # update sources there
-            os.chdir(moddir)
+            workdir = moddir
             cmd = cvsupdatecmd
         else:
             logger.info("Fetch " + ud.url)
             # check out sources there
             bb.utils.mkdirhier(pkgdir)
-            os.chdir(pkgdir)
+            workdir = pkgdir
             logger.debug(1, "Running %s", cvscmd)
             bb.fetch2.check_network_access(d, cvscmd, ud.url)
             cmd = cvscmd
 
-        runfetchcmd(cmd, d, cleanup = [moddir])
+        runfetchcmd(cmd, d, cleanup=[moddir], workdir=workdir)
 
         if not os.access(moddir, os.R_OK):
             raise FetchError("Directory %s was not readable despite sucessful fetch?!" % moddir, ud.url)
@@ -147,18 +148,18 @@
         if scmdata == "keep":
             tar_flags = ""
         else:
-            tar_flags = "--exclude 'CVS'"
+            tar_flags = "--exclude='CVS'"
 
         # tar them up to a defined filename
+        workdir = None
         if 'fullpath' in ud.parm:
-            os.chdir(pkgdir)
+            workdir = pkgdir
             cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, localdir)
         else:
-            os.chdir(moddir)
-            os.chdir('..')
+            workdir = os.path.dirname(os.path.realpath(moddir))
             cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(moddir))
 
-        runfetchcmd(cmd, d, cleanup = [ud.localpath])
+        runfetchcmd(cmd, d, cleanup=[ud.localpath], workdir=workdir)
 
     def clean(self, ud, d):
         """ Clean CVS Files and tarballs """
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/git.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/git.py
index 526668b..1bec60ab 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/git.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/git.py
@@ -49,6 +49,10 @@
    referring to commit which is valid in tag instead of branch.
    The default is "0", set nobranch=1 if needed.
 
+- usehead
+   For local git:// urls to use the current branch HEAD as the revsion for use with
+   AUTOREV. Implies nobranch.
+
 """
 
 #Copyright (C) 2005 Richard Purdie
@@ -71,11 +75,53 @@
 import re
 import bb
 import errno
+import bb.progress
 from   bb    import data
 from   bb.fetch2 import FetchMethod
 from   bb.fetch2 import runfetchcmd
 from   bb.fetch2 import logger
 
+
+class GitProgressHandler(bb.progress.LineFilterProgressHandler):
+    """Extract progress information from git output"""
+    def __init__(self, d):
+        self._buffer = ''
+        self._count = 0
+        super(GitProgressHandler, self).__init__(d)
+        # Send an initial progress event so the bar gets shown
+        self._fire_progress(-1)
+
+    def write(self, string):
+        self._buffer += string
+        stages = ['Counting objects', 'Compressing objects', 'Receiving objects', 'Resolving deltas']
+        stage_weights = [0.2, 0.05, 0.5, 0.25]
+        stagenum = 0
+        for i, stage in reversed(list(enumerate(stages))):
+            if stage in self._buffer:
+                stagenum = i
+                self._buffer = ''
+                break
+        self._status = stages[stagenum]
+        percs = re.findall(r'(\d+)%', string)
+        if percs:
+            progress = int(round((int(percs[-1]) * stage_weights[stagenum]) + (sum(stage_weights[:stagenum]) * 100)))
+            rates = re.findall(r'([\d.]+ [a-zA-Z]*/s+)', string)
+            if rates:
+                rate = rates[-1]
+            else:
+                rate = None
+            self.update(progress, rate)
+        else:
+            if stagenum == 0:
+                percs = re.findall(r': (\d+)', string)
+                if percs:
+                    count = int(percs[-1])
+                    if count > self._count:
+                        self._count = count
+                        self._fire_progress(-count)
+        super(GitProgressHandler, self).write(string)
+
+
 class Git(FetchMethod):
     """Class to fetch a module or modules from git repositories"""
     def init(self, d):
@@ -111,6 +157,13 @@
 
         ud.nobranch = ud.parm.get("nobranch","0") == "1"
 
+        # usehead implies nobranch
+        ud.usehead = ud.parm.get("usehead","0") == "1"
+        if ud.usehead:
+            if ud.proto != "file":
+                 raise bb.fetch2.ParameterError("The usehead option is only for use with local ('protocol=file') git repositories", ud.url)
+            ud.nobranch = 1
+
         # bareclone implies nocheckout
         ud.bareclone = ud.parm.get("bareclone","0") == "1"
         if ud.bareclone:
@@ -126,6 +179,9 @@
             ud.branches[name] = branch
             ud.unresolvedrev[name] = branch
 
+        if ud.usehead:
+            ud.unresolvedrev['default'] = 'HEAD'
+
         ud.basecmd = data.getVar("FETCHCMD_git", d, True) or "git -c core.fsyncobjectfiles=0"
 
         ud.write_tarballs = ((data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True) or "0") != "0") or ud.rebaseable
@@ -163,9 +219,8 @@
     def need_update(self, ud, d):
         if not os.path.exists(ud.clonedir):
             return True
-        os.chdir(ud.clonedir)
         for name in ud.names:
-            if not self._contains_ref(ud, d, name):
+            if not self._contains_ref(ud, d, name, ud.clonedir):
                 return True
         if ud.write_tarballs and not os.path.exists(ud.fullmirror):
             return True
@@ -186,8 +241,7 @@
         # If the checkout doesn't exist and the mirror tarball does, extract it
         if not os.path.exists(ud.clonedir) and os.path.exists(ud.fullmirror):
             bb.utils.mkdirhier(ud.clonedir)
-            os.chdir(ud.clonedir)
-            runfetchcmd("tar -xzf %s" % (ud.fullmirror), d)
+            runfetchcmd("tar -xzf %s" % (ud.fullmirror), d, workdir=ud.clonedir)
 
         repourl = self._get_repo_url(ud)
 
@@ -196,38 +250,38 @@
             # We do this since git will use a "-l" option automatically for local urls where possible
             if repourl.startswith("file://"):
                 repourl = repourl[7:]
-            clone_cmd = "%s clone --bare --mirror %s %s" % (ud.basecmd, repourl, ud.clonedir)
+            clone_cmd = "LANG=C %s clone --bare --mirror %s %s --progress" % (ud.basecmd, repourl, ud.clonedir)
             if ud.proto.lower() != 'file':
                 bb.fetch2.check_network_access(d, clone_cmd)
-            runfetchcmd(clone_cmd, d)
+            progresshandler = GitProgressHandler(d)
+            runfetchcmd(clone_cmd, d, log=progresshandler)
 
-        os.chdir(ud.clonedir)
         # Update the checkout if needed
         needupdate = False
         for name in ud.names:
-            if not self._contains_ref(ud, d, name):
+            if not self._contains_ref(ud, d, name, ud.clonedir):
                 needupdate = True
         if needupdate:
             try: 
-                runfetchcmd("%s remote rm origin" % ud.basecmd, d) 
+                runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir)
             except bb.fetch2.FetchError:
                 logger.debug(1, "No Origin")
 
-            runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d)
-            fetch_cmd = "%s fetch -f --prune %s refs/*:refs/*" % (ud.basecmd, repourl)
+            runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d, workdir=ud.clonedir)
+            fetch_cmd = "LANG=C %s fetch -f --prune --progress %s refs/*:refs/*" % (ud.basecmd, repourl)
             if ud.proto.lower() != 'file':
                 bb.fetch2.check_network_access(d, fetch_cmd, ud.url)
-            runfetchcmd(fetch_cmd, d)
-            runfetchcmd("%s prune-packed" % ud.basecmd, d)
-            runfetchcmd("%s pack-redundant --all | xargs -r rm" % ud.basecmd, d)
+            progresshandler = GitProgressHandler(d)
+            runfetchcmd(fetch_cmd, d, log=progresshandler, workdir=ud.clonedir)
+            runfetchcmd("%s prune-packed" % ud.basecmd, d, workdir=ud.clonedir)
+            runfetchcmd("%s pack-redundant --all | xargs -r rm" % ud.basecmd, d, workdir=ud.clonedir)
             try:
                 os.unlink(ud.fullmirror)
             except OSError as exc:
                 if exc.errno != errno.ENOENT:
                     raise
-        os.chdir(ud.clonedir)
         for name in ud.names:
-            if not self._contains_ref(ud, d, name):
+            if not self._contains_ref(ud, d, name, ud.clonedir):
                 raise bb.fetch2.FetchError("Unable to find revision %s in branch %s even from upstream" % (ud.revisions[name], ud.branches[name]))
 
     def build_mirror_data(self, ud, d):
@@ -237,10 +291,9 @@
             if os.path.islink(ud.fullmirror):
                 os.unlink(ud.fullmirror)
 
-            os.chdir(ud.clonedir)
             logger.info("Creating tarball of git repository")
-            runfetchcmd("tar -czf %s %s" % (ud.fullmirror, os.path.join(".") ), d)
-            runfetchcmd("touch %s.done" % (ud.fullmirror), d)
+            runfetchcmd("tar -czf %s %s" % (ud.fullmirror, os.path.join(".") ), d, workdir=ud.clonedir)
+            runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=ud.clonedir)
 
     def unpack(self, ud, destdir, d):
         """ unpack the downloaded src to destdir"""
@@ -263,21 +316,21 @@
             cloneflags += " --mirror"
 
         runfetchcmd("%s clone %s %s/ %s" % (ud.basecmd, cloneflags, ud.clonedir, destdir), d)
-        os.chdir(destdir)
         repourl = self._get_repo_url(ud)
-        runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d)
+        runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir)
         if not ud.nocheckout:
             if subdir != "":
-                runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d)
-                runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d)
+                runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d,
+                            workdir=destdir)
+                runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d, workdir=destdir)
             elif not ud.nobranch:
                 branchname =  ud.branches[ud.names[0]]
                 runfetchcmd("%s checkout -B %s %s" % (ud.basecmd, branchname, \
-                            ud.revisions[ud.names[0]]), d)
+                            ud.revisions[ud.names[0]]), d, workdir=destdir)
                 runfetchcmd("%s branch --set-upstream %s origin/%s" % (ud.basecmd, branchname, \
-                            branchname), d)
+                            branchname), d, workdir=destdir)
             else:
-                runfetchcmd("%s checkout %s" % (ud.basecmd, ud.revisions[ud.names[0]]), d)
+                runfetchcmd("%s checkout %s" % (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=destdir)
 
         return True
 
@@ -291,7 +344,7 @@
     def supports_srcrev(self):
         return True
 
-    def _contains_ref(self, ud, d, name):
+    def _contains_ref(self, ud, d, name, wd):
         cmd = ""
         if ud.nobranch:
             cmd = "%s log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % (
@@ -300,7 +353,7 @@
             cmd =  "%s branch --contains %s --list %s 2> /dev/null | wc -l" % (
                 ud.basecmd, ud.revisions[name], ud.branches[name])
         try:
-            output = runfetchcmd(cmd, d, quiet=True)
+            output = runfetchcmd(cmd, d, quiet=True, workdir=wd)
         except bb.fetch2.FetchError:
             return False
         if len(output.split()) > 1:
@@ -343,16 +396,17 @@
         """
         output = self._lsremote(ud, d, "")
         # Tags of the form ^{} may not work, need to fallback to other form
-        if ud.unresolvedrev[name][:5] == "refs/":
+        if ud.unresolvedrev[name][:5] == "refs/" or ud.usehead:
             head = ud.unresolvedrev[name]
             tag = ud.unresolvedrev[name]
         else:
             head = "refs/heads/%s" % ud.unresolvedrev[name]
             tag = "refs/tags/%s" % ud.unresolvedrev[name]
         for s in [head, tag + "^{}", tag]:
-            for l in output.split('\n'):
-                if s in l:
-                    return l.split()[0]
+            for l in output.strip().split('\n'):
+                sha1, ref = l.split()
+                if s == ref:
+                    return sha1
         raise bb.fetch2.FetchError("Unable to resolve '%s' in upstream git repository in git ls-remote output for %s" % \
             (ud.unresolvedrev[name], ud.host+ud.path))
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitannex.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitannex.py
index 0f37897..4937a10 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitannex.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitannex.py
@@ -34,43 +34,42 @@
         """
         return ud.type in ['gitannex']
 
-    def uses_annex(self, ud, d):
+    def uses_annex(self, ud, d, wd):
         for name in ud.names:
             try:
-                runfetchcmd("%s rev-list git-annex" % (ud.basecmd), d, quiet=True)
+                runfetchcmd("%s rev-list git-annex" % (ud.basecmd), d, quiet=True, workdir=wd)
                 return True
             except bb.fetch.FetchError:
                 pass
 
         return False
 
-    def update_annex(self, ud, d):
+    def update_annex(self, ud, d, wd):
         try:
-            runfetchcmd("%s annex get --all" % (ud.basecmd), d, quiet=True)
+            runfetchcmd("%s annex get --all" % (ud.basecmd), d, quiet=True, workdir=wd)
         except bb.fetch.FetchError:
             return False
-        runfetchcmd("chmod u+w -R %s/annex" % (ud.clonedir), d, quiet=True)
+        runfetchcmd("chmod u+w -R %s/annex" % (ud.clonedir), d, quiet=True, workdir=wd)
 
         return True
 
     def download(self, ud, d):
         Git.download(self, ud, d)
 
-        os.chdir(ud.clonedir)
-        annex = self.uses_annex(ud, d)
+        annex = self.uses_annex(ud, d, ud.clonedir)
         if annex:
-            self.update_annex(ud, d)
+            self.update_annex(ud, d, ud.clonedir)
 
     def unpack(self, ud, destdir, d):
         Git.unpack(self, ud, destdir, d)
 
-        os.chdir(ud.destdir)
         try:
-            runfetchcmd("%s annex sync" % (ud.basecmd), d)
+            runfetchcmd("%s annex init" % (ud.basecmd), d, workdir=ud.destdir)
         except bb.fetch.FetchError:
             pass
 
-        annex = self.uses_annex(ud, d)
+        annex = self.uses_annex(ud, d, ud.destdir)
         if annex:
-            runfetchcmd("%s annex get" % (ud.basecmd), d)
-            runfetchcmd("chmod u+w -R %s/.git/annex" % (ud.destdir), d, quiet=True)
+            runfetchcmd("%s annex get" % (ud.basecmd), d, workdir=ud.destdir)
+            runfetchcmd("chmod u+w -R %s/.git/annex" % (ud.destdir), d, quiet=True, workdir=ud.destdir)
+
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitsm.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitsm.py
index 752f1d3..6613762 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitsm.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/gitsm.py
@@ -43,10 +43,10 @@
         """
         return ud.type in ['gitsm']
 
-    def uses_submodules(self, ud, d):
+    def uses_submodules(self, ud, d, wd):
         for name in ud.names:
             try:
-                runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revisions[name]), d, quiet=True)
+                runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revisions[name]), d, quiet=True, workdir=wd)
                 return True
             except bb.fetch.FetchError:
                 pass
@@ -107,28 +107,25 @@
         os.mkdir(tmpclonedir)
         os.rename(ud.clonedir, gitdir)
         runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*true/bare = false/'", d)
-        os.chdir(tmpclonedir)
-        runfetchcmd(ud.basecmd + " reset --hard", d)
-        runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d)
-        runfetchcmd(ud.basecmd + " submodule update --init --recursive", d)
+        runfetchcmd(ud.basecmd + " reset --hard", d, workdir=tmpclonedir)
+        runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d, workdir=tmpclonedir)
+        runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=tmpclonedir)
         self._set_relative_paths(tmpclonedir)
-        runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*false/bare = true/'", d)
+        runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*false/bare = true/'", d, workdir=tmpclonedir)
         os.rename(gitdir, ud.clonedir,)
         bb.utils.remove(tmpclonedir, True)
 
     def download(self, ud, d):
         Git.download(self, ud, d)
 
-        os.chdir(ud.clonedir)
-        submodules = self.uses_submodules(ud, d)
+        submodules = self.uses_submodules(ud, d, ud.clonedir)
         if submodules:
             self.update_submodules(ud, d)
 
     def unpack(self, ud, destdir, d):
         Git.unpack(self, ud, destdir, d)
         
-        os.chdir(ud.destdir)
-        submodules = self.uses_submodules(ud, d)
+        submodules = self.uses_submodules(ud, d, ud.destdir)
         if submodules:
-            runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d)
-            runfetchcmd(ud.basecmd + " submodule update --init --recursive", d)
+            runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d, workdir=ud.destdir)
+            runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=ud.destdir)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/hg.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/hg.py
index 3b743ff..20df801 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/hg.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/hg.py
@@ -169,25 +169,22 @@
         # If the checkout doesn't exist and the mirror tarball does, extract it
         if not os.path.exists(ud.pkgdir) and os.path.exists(ud.fullmirror):
             bb.utils.mkdirhier(ud.pkgdir)
-            os.chdir(ud.pkgdir)
-            runfetchcmd("tar -xzf %s" % (ud.fullmirror), d)
+            runfetchcmd("tar -xzf %s" % (ud.fullmirror), d, workdir=ud.pkgdir)
 
         if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK):
             # Found the source, check whether need pull
             updatecmd = self._buildhgcommand(ud, d, "update")
-            os.chdir(ud.moddir)
             logger.debug(1, "Running %s", updatecmd)
             try:
-                runfetchcmd(updatecmd, d)
+                runfetchcmd(updatecmd, d, workdir=ud.moddir)
             except bb.fetch2.FetchError:
                 # Runnning pull in the repo
                 pullcmd = self._buildhgcommand(ud, d, "pull")
                 logger.info("Pulling " + ud.url)
                 # update sources there
-                os.chdir(ud.moddir)
                 logger.debug(1, "Running %s", pullcmd)
                 bb.fetch2.check_network_access(d, pullcmd, ud.url)
-                runfetchcmd(pullcmd, d)
+                runfetchcmd(pullcmd, d, workdir=ud.moddir)
                 try:
                     os.unlink(ud.fullmirror)
                 except OSError as exc:
@@ -200,17 +197,15 @@
             logger.info("Fetch " + ud.url)
             # check out sources there
             bb.utils.mkdirhier(ud.pkgdir)
-            os.chdir(ud.pkgdir)
             logger.debug(1, "Running %s", fetchcmd)
             bb.fetch2.check_network_access(d, fetchcmd, ud.url)
-            runfetchcmd(fetchcmd, d)
+            runfetchcmd(fetchcmd, d, workdir=ud.pkgdir)
 
         # Even when we clone (fetch), we still need to update as hg's clone
         # won't checkout the specified revision if its on a branch
         updatecmd = self._buildhgcommand(ud, d, "update")
-        os.chdir(ud.moddir)
         logger.debug(1, "Running %s", updatecmd)
-        runfetchcmd(updatecmd, d)
+        runfetchcmd(updatecmd, d, workdir=ud.moddir)
 
     def clean(self, ud, d):
         """ Clean the hg dir """
@@ -246,10 +241,9 @@
             if os.path.islink(ud.fullmirror):
                 os.unlink(ud.fullmirror)
 
-            os.chdir(ud.pkgdir)
             logger.info("Creating tarball of hg repository")
-            runfetchcmd("tar -czf %s %s" % (ud.fullmirror, ud.module), d)
-            runfetchcmd("touch %s.done" % (ud.fullmirror), d)
+            runfetchcmd("tar -czf %s %s" % (ud.fullmirror, ud.module), d, workdir=ud.pkgdir)
+            runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=ud.pkgdir)
 
     def localpath(self, ud, d):
         return ud.pkgdir
@@ -269,10 +263,8 @@
                 logger.debug(2, "Unpack: creating new hg repository in '" + codir + "'")
                 runfetchcmd("%s init %s" % (ud.basecmd, codir), d)
             logger.debug(2, "Unpack: updating source in '" + codir + "'")
-            os.chdir(codir)
-            runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d)
-            runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d)
+            runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d, workdir=codir)
+            runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d, workdir=codir)
         else:
             logger.debug(2, "Unpack: extracting source to '" + codir + "'")
-            os.chdir(ud.moddir)
-            runfetchcmd("%s archive -t files %s %s" % (ud.basecmd, revflag, codir), d)
+            runfetchcmd("%s archive -t files %s %s" % (ud.basecmd, revflag, codir), d, workdir=ud.moddir)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/local.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/local.py
index 303a52b..51ca78d 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/local.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/local.py
@@ -26,7 +26,7 @@
 # Based on functions from the base bb module, Copyright 2003 Holger Schurig
 
 import os
-import urllib
+import urllib.request, urllib.parse, urllib.error
 import bb
 import bb.utils
 from   bb import data
@@ -42,7 +42,7 @@
 
     def urldata_init(self, ud, d):
         # We don't set localfile as for this fetcher the file is already local!
-        ud.decodedurl = urllib.unquote(ud.url.split("://")[1].split(";")[0])
+        ud.decodedurl = urllib.parse.unquote(ud.url.split("://")[1].split(";")[0])
         ud.basename = os.path.basename(ud.decodedurl)
         ud.basepath = ud.decodedurl
         ud.needdonestamp = False
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/npm.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/npm.py
index e8d9b11..699ae72 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/npm.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/npm.py
@@ -13,14 +13,14 @@
     - name
     - version
 
-    npm://registry.npmjs.org/${PN}/-/${PN}-${PV}.tgz  would become npm://registry.npmjs.org;name=${PN};ver=${PV}
+    npm://registry.npmjs.org/${PN}/-/${PN}-${PV}.tgz  would become npm://registry.npmjs.org;name=${PN};version=${PV}
     The fetcher all triggers off the existence of ud.localpath. If that exists and has the ".done" stamp, its assumed the fetch is good/done
 
 """
 
 import os
 import sys
-import urllib
+import urllib.request, urllib.parse, urllib.error
 import json
 import subprocess
 import signal
@@ -88,7 +88,7 @@
         ud.localpath = d.expand("${DL_DIR}/npm/%s" % ud.bbnpmmanifest)
 
         self.basecmd = d.getVar("FETCHCMD_wget", True) or "/usr/bin/env wget -O -t 2 -T 30 -nv --passive-ftp --no-check-certificate "
-        self.basecmd += " --directory-prefix=%s " % prefixdir
+        ud.prefixdir = prefixdir
 
         ud.write_tarballs = ((data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True) or "0") != "0")
         ud.mirrortarball = 'npm_%s-%s.tar.xz' % (ud.pkgname, ud.version)
@@ -102,7 +102,8 @@
     def _runwget(self, ud, d, command, quiet):
         logger.debug(2, "Fetching %s using command '%s'" % (ud.url, command))
         bb.fetch2.check_network_access(d, command)
-        runfetchcmd(command, d, quiet)
+        dldir = d.getVar("DL_DIR", True)
+        runfetchcmd(command, d, quiet, workdir=dldir)
 
     def _unpackdep(self, ud, pkg, data, destdir, dldir, d):
         file = data[pkg]['tgz']
@@ -113,16 +114,13 @@
             bb.fatal("NPM package %s downloaded not a tarball!" % file)
 
         # Change to subdir before executing command
-        save_cwd = os.getcwd()
         if not os.path.exists(destdir):
             os.makedirs(destdir)
-        os.chdir(destdir)
         path = d.getVar('PATH', True)
         if path:
             cmd = "PATH=\"%s\" %s" % (path, cmd)
-        bb.note("Unpacking %s to %s/" % (file, os.getcwd()))
-        ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
-        os.chdir(save_cwd)
+        bb.note("Unpacking %s to %s/" % (file, destdir))
+        ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True, cwd=destdir)
 
         if ret != 0:
             raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
@@ -140,7 +138,12 @@
             workobj = json.load(datafile)
         dldir = "%s/%s" % (os.path.dirname(ud.localpath), ud.pkgname)
 
-        self._unpackdep(ud, ud.pkgname, workobj,  "%s/npmpkg" % destdir, dldir, d)
+        if 'subdir' in ud.parm:
+            unpackdir = '%s/%s' % (destdir, ud.parm.get('subdir'))
+        else:
+            unpackdir = '%s/npmpkg' % destdir
+
+        self._unpackdep(ud, ud.pkgname, workobj, unpackdir, dldir, d)
 
     def _parse_view(self, output):
         '''
@@ -162,7 +165,9 @@
             pdata = json.loads('\n'.join(datalines))
         return pdata
 
-    def _getdependencies(self, pkg, data, version, d, ud, optional=False):
+    def _getdependencies(self, pkg, data, version, d, ud, optional=False, fetchedlist=None):
+        if fetchedlist is None:
+            fetchedlist = []
         pkgfullname = pkg
         if version != '*' and not '/' in version:
             pkgfullname += "@'%s'" % version
@@ -184,7 +189,9 @@
         outputurl = pdata['dist']['tarball']
         data[pkg] = {}
         data[pkg]['tgz'] = os.path.basename(outputurl)
-        self._runwget(ud, d, "%s %s" % (self.basecmd, outputurl), False)
+        if not outputurl in fetchedlist:
+            self._runwget(ud, d, "%s --directory-prefix=%s %s" % (self.basecmd, ud.prefixdir, outputurl), False)
+            fetchedlist.append(outputurl)
 
         dependencies = pdata.get('dependencies', {})
         optionalDependencies = pdata.get('optionalDependencies', {})
@@ -196,13 +203,20 @@
                 optdepsfound[dep] = dependencies[dep]
             else:
                 depsfound[dep] = dependencies[dep]
-        for dep, version in optdepsfound.iteritems():
-            self._getdependencies(dep, data[pkg]['deps'], version, d, ud, optional=True)
-        for dep, version in depsfound.iteritems():
-            self._getdependencies(dep, data[pkg]['deps'], version, d, ud)
+        for dep, version in optdepsfound.items():
+            self._getdependencies(dep, data[pkg]['deps'], version, d, ud, optional=True, fetchedlist=fetchedlist)
+        for dep, version in depsfound.items():
+            self._getdependencies(dep, data[pkg]['deps'], version, d, ud, fetchedlist=fetchedlist)
 
-    def _getshrinkeddependencies(self, pkg, data, version, d, ud, lockdown, manifest):
+    def _getshrinkeddependencies(self, pkg, data, version, d, ud, lockdown, manifest, toplevel=True):
         logger.debug(2, "NPM shrinkwrap file is %s" % data)
+        if toplevel:
+            name = data.get('name', None)
+            if name and name != pkg:
+                for obj in data.get('dependencies', []):
+                    if obj == pkg:
+                        self._getshrinkeddependencies(obj, data['dependencies'][obj], data['dependencies'][obj]['version'], d, ud, lockdown, manifest, False)
+                        return
         outputurl = "invalid"
         if ('resolved' not in data) or (not data['resolved'].startswith('http')):
             # will be the case for ${PN}
@@ -211,7 +225,7 @@
             outputurl = runfetchcmd(fetchcmd, d, True)
         else:
             outputurl = data['resolved']
-        self._runwget(ud, d, "%s %s" % (self.basecmd, outputurl), False)
+        self._runwget(ud, d, "%s --directory-prefix=%s %s" % (self.basecmd, ud.prefixdir, outputurl), False)
         manifest[pkg] = {}
         manifest[pkg]['tgz'] = os.path.basename(outputurl).rstrip()
         manifest[pkg]['deps'] = {}
@@ -228,7 +242,7 @@
         if 'dependencies' in data:
             for obj in data['dependencies']:
                 logger.debug(2, "Found dep is %s" % str(obj))
-                self._getshrinkeddependencies(obj, data['dependencies'][obj], data['dependencies'][obj]['version'], d, ud, lockdown, manifest[pkg]['deps'])
+                self._getshrinkeddependencies(obj, data['dependencies'][obj], data['dependencies'][obj]['version'], d, ud, lockdown, manifest[pkg]['deps'], False)
 
     def download(self, ud, d):
         """Fetch url"""
@@ -239,10 +253,7 @@
         if not os.listdir(ud.pkgdatadir) and os.path.exists(ud.fullmirror):
             dest = d.getVar("DL_DIR", True)
             bb.utils.mkdirhier(dest)
-            save_cwd = os.getcwd()
-            os.chdir(dest)
-            runfetchcmd("tar -xJf %s" % (ud.fullmirror), d)
-            os.chdir(save_cwd)
+            runfetchcmd("tar -xJf %s" % (ud.fullmirror), d, workdir=dest)
             return
 
         shwrf = d.getVar('NPM_SHRINKWRAP', True)
@@ -251,14 +262,14 @@
             with open(shwrf) as datafile:
                 shrinkobj = json.load(datafile)
         except:
-            logger.warn('Missing shrinkwrap file in NPM_SHRINKWRAP for %s, this will lead to unreliable builds!' % ud.pkgname)
+            logger.warning('Missing shrinkwrap file in NPM_SHRINKWRAP for %s, this will lead to unreliable builds!' % ud.pkgname)
         lckdf = d.getVar('NPM_LOCKDOWN', True)
         logger.debug(2, "NPM lockdown file is %s" % lckdf)
         try:
             with open(lckdf) as datafile:
                 lockdown = json.load(datafile)
         except:
-            logger.warn('Missing lockdown file in NPM_LOCKDOWN for %s, this will lead to unreproducible builds!' % ud.pkgname)
+            logger.warning('Missing lockdown file in NPM_LOCKDOWN for %s, this will lead to unreproducible builds!' % ud.pkgname)
 
         if ('name' not in shrinkobj):
             self._getdependencies(ud.pkgname, jsondepobj, ud.version, d, ud)
@@ -275,10 +286,8 @@
             if os.path.islink(ud.fullmirror):
                 os.unlink(ud.fullmirror)
 
-            save_cwd = os.getcwd()
-            os.chdir(d.getVar("DL_DIR", True))
+            dldir = d.getVar("DL_DIR", True)
             logger.info("Creating tarball of npm data")
-            runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d)
-            runfetchcmd("touch %s.done" % (ud.fullmirror), d)
-            os.chdir(save_cwd)
-
+            runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d,
+                        workdir=dldir)
+            runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=dldir)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/osc.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/osc.py
index d051dfd..295abf9 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/osc.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/osc.py
@@ -88,23 +88,21 @@
             oscupdatecmd = self._buildosccommand(ud, d, "update")
             logger.info("Update "+ ud.url)
             # update sources there
-            os.chdir(ud.moddir)
             logger.debug(1, "Running %s", oscupdatecmd)
             bb.fetch2.check_network_access(d, oscupdatecmd, ud.url)
-            runfetchcmd(oscupdatecmd, d)
+            runfetchcmd(oscupdatecmd, d, workdir=ud.moddir)
         else:
             oscfetchcmd = self._buildosccommand(ud, d, "fetch")
             logger.info("Fetch " + ud.url)
             # check out sources there
             bb.utils.mkdirhier(ud.pkgdir)
-            os.chdir(ud.pkgdir)
             logger.debug(1, "Running %s", oscfetchcmd)
             bb.fetch2.check_network_access(d, oscfetchcmd, ud.url)
-            runfetchcmd(oscfetchcmd, d)
+            runfetchcmd(oscfetchcmd, d, workdir=ud.pkgdir)
 
-        os.chdir(os.path.join(ud.pkgdir + ud.path))
         # tar them up to a defined filename
-        runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d, cleanup = [ud.localpath])
+        runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d,
+                    cleanup=[ud.localpath], workdir=os.path.join(ud.pkgdir + ud.path))
 
     def supports_srcrev(self):
         return False
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/perforce.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/perforce.py
index 3a10c7c..50cb479 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/perforce.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/perforce.py
@@ -1,14 +1,12 @@
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 """
-BitBake 'Fetch' implementations
-
-Classes for obtaining upstream sources for the
-BitBake build tools.
+BitBake 'Fetch' implementation for perforce
 
 """
 
 # Copyright (C) 2003, 2004  Chris Larson
+# Copyright (C) 2016 Kodak Alaris, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 as
@@ -25,9 +23,7 @@
 #
 # Based on functions from the base bb module, Copyright 2003 Holger Schurig
 
-from future_builtins import zip
 import os
-import subprocess
 import logging
 import bb
 from   bb import data
@@ -37,151 +33,178 @@
 from   bb.fetch2 import runfetchcmd
 
 class Perforce(FetchMethod):
+    """ Class to fetch from perforce repositories """
     def supports(self, ud, d):
+        """ Check to see if a given url can be fetched with perforce. """
         return ud.type in ['p4']
 
-    def doparse(url, d):
-        parm = {}
-        path = url.split("://")[1]
-        delim = path.find("@");
-        if delim != -1:
-            (user, pswd, host, port) = path.split('@')[0].split(":")
-            path = path.split('@')[1]
-        else:
-            (host, port) = d.getVar('P4PORT', False).split(':')
-            user = ""
-            pswd = ""
-
-        if path.find(";") != -1:
-            keys=[]
-            values=[]
-            plist = path.split(';')
-            for item in plist:
-                if item.count('='):
-                    (key, value) = item.split('=')
-                    keys.append(key)
-                    values.append(value)
-
-            parm = dict(zip(keys, values))
-        path = "//" + path.split(';')[0]
-        host += ":%s" % (port)
-        parm["cset"] = Perforce.getcset(d, path, host, user, pswd, parm)
-
-        return host, path, user, pswd, parm
-    doparse = staticmethod(doparse)
-
-    def getcset(d, depot, host, user, pswd, parm):
-        p4opt = ""
-        if "cset" in parm:
-            return parm["cset"];
-        if user:
-            p4opt += " -u %s" % (user)
-        if pswd:
-            p4opt += " -P %s" % (pswd)
-        if host:
-            p4opt += " -p %s" % (host)
-
-        p4date = d.getVar("P4DATE", True)
-        if "revision" in parm:
-            depot += "#%s" % (parm["revision"])
-        elif "label" in parm:
-            depot += "@%s" % (parm["label"])
-        elif p4date:
-            depot += "@%s" % (p4date)
-
-        p4cmd = d.getVar('FETCHCMD_p4', True) or "p4"
-        logger.debug(1, "Running %s%s changes -m 1 %s", p4cmd, p4opt, depot)
-        p4file, errors = bb.process.run("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
-        cset = p4file.strip()
-        logger.debug(1, "READ %s", cset)
-        if not cset:
-            return -1
-
-        return cset.split(' ')[1]
-    getcset = staticmethod(getcset)
-
     def urldata_init(self, ud, d):
-        (host, path, user, pswd, parm) = Perforce.doparse(ud.url, d)
-
-        base_path = path.replace('/...', '')
-        base_path = self._strip_leading_slashes(base_path)
-        
-        if "label" in parm:
-            version = parm["label"]
-        else:
-            version = Perforce.getcset(d, path, host, user, pswd, parm)
-
-        ud.localfile = data.expand('%s+%s+%s.tar.gz' % (host, base_path.replace('/', '.'), version), d)
-
-    def download(self, ud, d):
         """
-        Fetch urls
+        Initialize perforce specific variables within url data.  If P4CONFIG is
+        provided by the env, use it.  If P4PORT is specified by the recipe, use
+        its values, which may override the settings in P4CONFIG.
         """
+        ud.basecmd = d.getVar('FETCHCMD_p4', True)
+        if not ud.basecmd:
+            ud.basecmd = "/usr/bin/env p4"
 
-        (host, depot, user, pswd, parm) = Perforce.doparse(ud.url, d)
+        ud.dldir = d.getVar('P4DIR', True)
+        if not ud.dldir:
+            ud.dldir = '%s/%s' % (d.getVar('DL_DIR', True), 'p4')
 
-        if depot.find('/...') != -1:
-            path = depot[:depot.find('/...')]
+        path = ud.url.split('://')[1]
+        path = path.split(';')[0]
+        delim = path.find('@');
+        if delim != -1:
+            (ud.user, ud.pswd) = path.split('@')[0].split(':')
+            ud.path = path.split('@')[1]
         else:
-            path = depot[:depot.rfind('/')]
+            ud.path = path
 
-        module = parm.get('module', os.path.basename(path))
+        ud.usingp4config = False
+        p4port = d.getVar('P4PORT', True)
 
-        # Get the p4 command
+        if p4port:
+            logger.debug(1, 'Using recipe provided P4PORT: %s' % p4port)
+            ud.host = p4port
+        else:
+            logger.debug(1, 'Trying to use P4CONFIG to automatically set P4PORT...')
+            ud.usingp4config = True
+            p4cmd = '%s info | grep "Server address"' % ud.basecmd
+            bb.fetch2.check_network_access(d, p4cmd)
+            ud.host = runfetchcmd(p4cmd, d, True)
+            ud.host = ud.host.split(': ')[1].strip()
+            logger.debug(1, 'Determined P4PORT to be: %s' % ud.host)
+            if not ud.host:
+                raise FetchError('Could not determine P4PORT from P4CONFIG')
+	
+        if ud.path.find('/...') >= 0:
+            ud.pathisdir = True
+        else:
+            ud.pathisdir = False
+
+        cleanedpath = ud.path.replace('/...', '').replace('/', '.')
+        cleanedhost = ud.host.replace(':', '.')
+        ud.pkgdir = os.path.join(ud.dldir, cleanedhost, cleanedpath)
+
+        ud.setup_revisons(d)
+
+        ud.localfile = data.expand('%s_%s_%s.tar.gz' % (cleanedhost, cleanedpath, ud.revision), d)
+
+    def _buildp4command(self, ud, d, command, depot_filename=None):
+        """
+        Build a p4 commandline.  Valid commands are "changes", "print", and
+        "files".  depot_filename is the full path to the file in the depot
+        including the trailing '#rev' value.
+        """
         p4opt = ""
-        if user:
-            p4opt += " -u %s" % (user)
 
-        if pswd:
-            p4opt += " -P %s" % (pswd)
+        if ud.user:
+            p4opt += ' -u "%s"' % (ud.user)
 
-        if host:
-            p4opt += " -p %s" % (host)
+        if ud.pswd:
+            p4opt += ' -P "%s"' % (ud.pswd)
 
-        p4cmd = d.getVar('FETCHCMD_p4', True) or "p4"
+        if ud.host and not ud.usingp4config:
+            p4opt += ' -p %s' % (ud.host)
 
-        # create temp directory
-        logger.debug(2, "Fetch: creating temporary directory")
-        bb.utils.mkdirhier(d.expand('${WORKDIR}'))
-        mktemp = d.getVar("FETCHCMD_p4mktemp", True) or d.expand("mktemp -d -q '${WORKDIR}/oep4.XXXXXX'")
-        tmpfile, errors = bb.process.run(mktemp)
-        tmpfile = tmpfile.strip()
-        if not tmpfile:
-            raise FetchError("Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.", ud.url)
-
-        if "label" in parm:
-            depot = "%s@%s" % (depot, parm["label"])
+        if hasattr(ud, 'revision') and ud.revision:
+            pathnrev = '%s@%s' % (ud.path, ud.revision)
         else:
-            cset = Perforce.getcset(d, depot, host, user, pswd, parm)
-            depot = "%s@%s" % (depot, cset)
+            pathnrev = '%s' % (ud.path)
 
-        os.chdir(tmpfile)
-        logger.info("Fetch " + ud.url)
-        logger.info("%s%s files %s", p4cmd, p4opt, depot)
-        p4file, errors = bb.process.run("%s%s files %s" % (p4cmd, p4opt, depot))
-        p4file = [f.rstrip() for f in p4file.splitlines()]
+        if depot_filename:
+            if ud.pathisdir: # Remove leading path to obtain filename
+                filename = depot_filename[len(ud.path)-1:]
+            else:
+                filename = depot_filename[depot_filename.rfind('/'):]
+            filename = filename[:filename.find('#')] # Remove trailing '#rev'
 
-        if not p4file:
-            raise FetchError("Fetch: unable to get the P4 files from %s" % depot, ud.url)
+        if command == 'changes':
+            p4cmd = '%s%s changes -m 1 //%s' % (ud.basecmd, p4opt, pathnrev)
+        elif command == 'print':
+            if depot_filename != None:
+                p4cmd = '%s%s print -o "p4/%s" "%s"' % (ud.basecmd, p4opt, filename, depot_filename)
+            else:
+                raise FetchError('No depot file name provided to p4 %s' % command, ud.url)
+        elif command == 'files':
+            p4cmd = '%s%s files //%s' % (ud.basecmd, p4opt, pathnrev)
+        else:
+            raise FetchError('Invalid p4 command %s' % command, ud.url)
+
+        return p4cmd
+
+    def _p4listfiles(self, ud, d):
+        """
+        Return a list of the file names which are present in the depot using the
+        'p4 files' command, including trailing '#rev' file revision indicator
+        """
+        p4cmd = self._buildp4command(ud, d, 'files')
+        bb.fetch2.check_network_access(d, p4cmd)
+        p4fileslist = runfetchcmd(p4cmd, d, True)
+        p4fileslist = [f.rstrip() for f in p4fileslist.splitlines()]
+
+        if not p4fileslist:
+            raise FetchError('Unable to fetch listing of p4 files from %s@%s' % (ud.host, ud.path))
 
         count = 0
+        filelist = []
 
-        for file in p4file:
-            list = file.split()
-
-            if list[2] == "delete":
+        for filename in p4fileslist:
+            item = filename.split(' - ')
+            lastaction = item[1].split()
+            logger.debug(1, 'File: %s Last Action: %s' % (item[0], lastaction[0]))
+            if lastaction[0] == 'delete':
                 continue
+            filelist.append(item[0])
 
-            dest = list[0][len(path)+1:]
-            where = dest.find("#")
+        return filelist
 
-            subprocess.call("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module, dest[:where], list[0]), shell=True)
-            count = count + 1
+    def download(self, ud, d):
+        """ Get the list of files, fetch each one """
+        filelist = self._p4listfiles(ud, d)
+        if not filelist:
+            raise FetchError('No files found in depot %s@%s' % (ud.host, ud.path))
 
-        if count == 0:
-            logger.error()
-            raise FetchError("Fetch: No files gathered from the P4 fetch", ud.url)
+        bb.utils.remove(ud.pkgdir, True)
+        bb.utils.mkdirhier(ud.pkgdir)
 
-        runfetchcmd("tar -czf %s %s" % (ud.localpath, module), d, cleanup = [ud.localpath])
-        # cleanup
-        bb.utils.prunedir(tmpfile)
+        for afile in filelist:
+            p4fetchcmd = self._buildp4command(ud, d, 'print', afile)
+            bb.fetch2.check_network_access(d, p4fetchcmd)
+            runfetchcmd(p4fetchcmd, d, workdir=ud.pkgdir)
+
+        runfetchcmd('tar -czf %s p4' % (ud.localpath), d, cleanup=[ud.localpath], workdir=ud.pkgdir)
+
+    def clean(self, ud, d):
+        """ Cleanup p4 specific files and dirs"""
+        bb.utils.remove(ud.localpath)
+        bb.utils.remove(ud.pkgdir, True)
+
+    def supports_srcrev(self):
+        return True
+
+    def _revision_key(self, ud, d, name):
+        """ Return a unique key for the url """
+        return 'p4:%s' % ud.pkgdir
+
+    def _latest_revision(self, ud, d, name):
+        """ Return the latest upstream scm revision number """
+        p4cmd = self._buildp4command(ud, d, "changes")
+        bb.fetch2.check_network_access(d, p4cmd)
+        tip = runfetchcmd(p4cmd, d, True)
+
+        if not tip:
+            raise FetchError('Could not determine the latest perforce changelist')
+
+        tipcset = tip.split(' ')[1]
+        logger.debug(1, 'p4 tip found to be changelist %s' % tipcset)
+        return tipcset
+
+    def sortable_revision(self, ud, d, name):
+        """ Return a sortable revision number """
+        return False, self._build_revision(ud, d)
+
+    def _build_revision(self, ud, d):
+        return ud.revision
+
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/repo.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/repo.py
index 21678eb..ecc6e68 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/repo.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/repo.py
@@ -69,24 +69,23 @@
         else:
             username = ""
 
-        bb.utils.mkdirhier(os.path.join(codir, "repo"))
-        os.chdir(os.path.join(codir, "repo"))
-        if not os.path.exists(os.path.join(codir, "repo", ".repo")):
+        repodir = os.path.join(codir, "repo")
+        bb.utils.mkdirhier(repodir)
+        if not os.path.exists(os.path.join(repodir, ".repo")):
             bb.fetch2.check_network_access(d, "repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), ud.url)
-            runfetchcmd("repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d)
+            runfetchcmd("repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d, workdir=repodir)
 
         bb.fetch2.check_network_access(d, "repo sync %s" % ud.url, ud.url)
-        runfetchcmd("repo sync", d)
-        os.chdir(codir)
+        runfetchcmd("repo sync", d, workdir=repodir)
 
         scmdata = ud.parm.get("scmdata", "")
         if scmdata == "keep":
             tar_flags = ""
         else:
-            tar_flags = "--exclude '.repo' --exclude '.git'"
+            tar_flags = "--exclude='.repo' --exclude='.git'"
 
         # Create a cache
-        runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.join(".", "*") ), d)
+        runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.join(".", "*") ), d, workdir=codir)
 
     def supports_srcrev(self):
         return False
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/sftp.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/sftp.py
index cb2f753..7989fcc 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/sftp.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/sftp.py
@@ -61,8 +61,7 @@
 
 import os
 import bb
-import urllib
-import commands
+import urllib.request, urllib.parse, urllib.error
 from bb import data
 from bb.fetch2 import URI
 from bb.fetch2 import FetchMethod
@@ -93,7 +92,7 @@
         else:
             ud.basename = os.path.basename(ud.path)
 
-        ud.localfile = data.expand(urllib.unquote(ud.basename), d)
+        ud.localfile = data.expand(urllib.parse.unquote(ud.basename), d)
 
     def download(self, ud, d):
         """Fetch urls"""
@@ -121,8 +120,7 @@
 
         remote = '%s%s:%s' % (user, urlo.hostname, path)
 
-        cmd = '%s %s %s %s' % (basecmd, port, commands.mkarg(remote),
-                               commands.mkarg(lpath))
+        cmd = '%s %s %s %s' % (basecmd, port, remote, lpath)
 
         bb.fetch2.check_network_access(d, cmd, ud.url)
         runfetchcmd(cmd, d)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/ssh.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/ssh.py
index 635578a..56f9b7e 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/ssh.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/ssh.py
@@ -114,12 +114,10 @@
             fr = host
         fr += ':%s' % path
 
-
-        import commands
         cmd = 'scp -B -r %s %s %s/' % (
             portarg,
-            commands.mkarg(fr),
-            commands.mkarg(dldir)
+            fr,
+            dldir
         )
 
         bb.fetch2.check_network_access(d, cmd, urldata.url)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/svn.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/svn.py
index 8a29193..6ca79d3 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/svn.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/svn.py
@@ -126,35 +126,32 @@
         if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK):
             svnupdatecmd = self._buildsvncommand(ud, d, "update")
             logger.info("Update " + ud.url)
-            # update sources there
-            os.chdir(ud.moddir)
             # We need to attempt to run svn upgrade first in case its an older working format
             try:
-                runfetchcmd(ud.basecmd + " upgrade", d)
+                runfetchcmd(ud.basecmd + " upgrade", d, workdir=ud.moddir)
             except FetchError:
                 pass
             logger.debug(1, "Running %s", svnupdatecmd)
             bb.fetch2.check_network_access(d, svnupdatecmd, ud.url)
-            runfetchcmd(svnupdatecmd, d)
+            runfetchcmd(svnupdatecmd, d, workdir=ud.moddir)
         else:
             svnfetchcmd = self._buildsvncommand(ud, d, "fetch")
             logger.info("Fetch " + ud.url)
             # check out sources there
             bb.utils.mkdirhier(ud.pkgdir)
-            os.chdir(ud.pkgdir)
             logger.debug(1, "Running %s", svnfetchcmd)
             bb.fetch2.check_network_access(d, svnfetchcmd, ud.url)
-            runfetchcmd(svnfetchcmd, d)
+            runfetchcmd(svnfetchcmd, d, workdir=ud.pkgdir)
 
         scmdata = ud.parm.get("scmdata", "")
         if scmdata == "keep":
             tar_flags = ""
         else:
-            tar_flags = "--exclude '.svn'"
+            tar_flags = "--exclude='.svn'"
 
-        os.chdir(ud.pkgdir)
         # tar them up to a defined filename
-        runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.path_spec), d, cleanup = [ud.localpath])
+        runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.path_spec), d,
+                    cleanup=[ud.localpath], workdir=ud.pkgdir)
 
     def clean(self, ud, d):
         """ Clean SVN specific files and dirs """
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 8bc9e93..ecb946a 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/wget.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/wget.py
@@ -31,7 +31,8 @@
 import os
 import logging
 import bb
-import urllib
+import bb.progress
+import urllib.request, urllib.parse, urllib.error
 from   bb import data
 from   bb.fetch2 import FetchMethod
 from   bb.fetch2 import FetchError
@@ -41,6 +42,27 @@
 from   bs4 import BeautifulSoup
 from   bs4 import SoupStrainer
 
+class WgetProgressHandler(bb.progress.LineFilterProgressHandler):
+    """
+    Extract progress information from wget output.
+    Note: relies on --progress=dot (with -v or without -q/-nv) being
+    specified on the wget command line.
+    """
+    def __init__(self, d):
+        super(WgetProgressHandler, self).__init__(d)
+        # Send an initial progress event so the bar gets shown
+        self._fire_progress(0)
+
+    def writeline(self, line):
+        percs = re.findall(r'(\d+)%\s+([\d.]+[A-Z])', line)
+        if percs:
+            progress = int(percs[-1][0])
+            rate = percs[-1][1] + '/s'
+            self.update(progress, rate)
+            return False
+        return True
+
+
 class Wget(FetchMethod):
     """Class to fetch urls via 'wget'"""
     def supports(self, ud, d):
@@ -62,17 +84,19 @@
         else:
             ud.basename = os.path.basename(ud.path)
 
-        ud.localfile = data.expand(urllib.unquote(ud.basename), d)
+        ud.localfile = data.expand(urllib.parse.unquote(ud.basename), d)
         if not ud.localfile:
-            ud.localfile = data.expand(urllib.unquote(ud.host + ud.path).replace("/", "."), d)
+            ud.localfile = data.expand(urllib.parse.unquote(ud.host + ud.path).replace("/", "."), d)
 
-        self.basecmd = d.getVar("FETCHCMD_wget", True) or "/usr/bin/env wget -t 2 -T 30 -nv --passive-ftp --no-check-certificate"
+        self.basecmd = d.getVar("FETCHCMD_wget", True) or "/usr/bin/env wget -t 2 -T 30 --passive-ftp --no-check-certificate"
 
     def _runwget(self, ud, d, command, quiet):
 
+        progresshandler = WgetProgressHandler(d)
+
         logger.debug(2, "Fetching %s using command '%s'" % (ud.url, command))
         bb.fetch2.check_network_access(d, command)
-        runfetchcmd(command, d, quiet)
+        runfetchcmd(command + ' --progress=dot -v', d, quiet, log=progresshandler)
 
     def download(self, ud, d):
         """Fetch urls"""
@@ -84,6 +108,10 @@
             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])
+
         uri = ud.url.split(";")[0]
         if os.path.exists(ud.localpath):
             # file exists, but we didnt complete it.. trying again..
@@ -104,12 +132,12 @@
 
         return True
 
-    def checkstatus(self, fetch, ud, d):
-        import urllib2, socket, httplib
-        from urllib import addinfourl
+    def checkstatus(self, fetch, ud, d, try_again=True):
+        import urllib.request, urllib.error, urllib.parse, socket, http.client
+        from urllib.response import addinfourl
         from bb.fetch2 import FetchConnectionCache
 
-        class HTTPConnectionCache(httplib.HTTPConnection):
+        class HTTPConnectionCache(http.client.HTTPConnection):
             if fetch.connection_cache:
                 def connect(self):
                     """Connect to the host and port specified in __init__."""
@@ -125,7 +153,7 @@
                     if self._tunnel_host:
                         self._tunnel()
 
-        class CacheHTTPHandler(urllib2.HTTPHandler):
+        class CacheHTTPHandler(urllib.request.HTTPHandler):
             def http_open(self, req):
                 return self.do_open(HTTPConnectionCache, req)
 
@@ -139,7 +167,7 @@
                     - geturl(): return the original request URL
                     - code: HTTP status code
                 """
-                host = req.get_host()
+                host = req.host
                 if not host:
                     raise urlllib2.URLError('no host given')
 
@@ -147,7 +175,7 @@
                 h.set_debuglevel(self._debuglevel)
 
                 headers = dict(req.unredirected_hdrs)
-                headers.update(dict((k, v) for k, v in req.headers.items()
+                headers.update(dict((k, v) for k, v in list(req.headers.items())
                             if k not in headers))
 
                 # We want to make an HTTP/1.1 request, but the addinfourl
@@ -164,7 +192,7 @@
                     headers["Connection"] = "Keep-Alive" # Works for HTTP/1.0
 
                 headers = dict(
-                    (name.title(), val) for name, val in headers.items())
+                    (name.title(), val) for name, val in list(headers.items()))
 
                 if req._tunnel_host:
                     tunnel_headers = {}
@@ -177,12 +205,12 @@
                     h.set_tunnel(req._tunnel_host, headers=tunnel_headers)
 
                 try:
-                    h.request(req.get_method(), req.get_selector(), req.data, headers)
-                except socket.error, err: # XXX what error?
+                    h.request(req.get_method(), req.selector, req.data, headers)
+                except socket.error as err: # XXX what error?
                     # Don't close connection when cache is enabled.
                     if fetch.connection_cache is None:
                         h.close()
-                    raise urllib2.URLError(err)
+                    raise urllib.error.URLError(err)
                 else:
                     try:
                         r = h.getresponse(buffering=True)
@@ -222,7 +250,7 @@
 
                 return resp
 
-        class HTTPMethodFallback(urllib2.BaseHandler):
+        class HTTPMethodFallback(urllib.request.BaseHandler):
             """
             Fallback to GET if HEAD is not allowed (405 HTTP error)
             """
@@ -230,11 +258,11 @@
                 fp.read()
                 fp.close()
 
-                newheaders = dict((k,v) for k,v in req.headers.items()
+                newheaders = dict((k,v) for k,v in list(req.headers.items())
                                   if k.lower() not in ("content-length", "content-type"))
-                return self.parent.open(urllib2.Request(req.get_full_url(),
+                return self.parent.open(urllib.request.Request(req.get_full_url(),
                                                         headers=newheaders,
-                                                        origin_req_host=req.get_origin_req_host(),
+                                                        origin_req_host=req.origin_req_host,
                                                         unverifiable=True))
 
             """
@@ -249,38 +277,49 @@
             """
             http_error_406 = http_error_405
 
-        class FixedHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
+        class FixedHTTPRedirectHandler(urllib.request.HTTPRedirectHandler):
             """
             urllib2.HTTPRedirectHandler resets the method to GET on redirect,
             when we want to follow redirects using the original method.
             """
             def redirect_request(self, req, fp, code, msg, headers, newurl):
-                newreq = urllib2.HTTPRedirectHandler.redirect_request(self, req, fp, code, msg, headers, newurl)
+                newreq = urllib.request.HTTPRedirectHandler.redirect_request(self, req, fp, code, msg, headers, newurl)
                 newreq.get_method = lambda: req.get_method()
                 return newreq
         exported_proxies = export_proxies(d)
 
         handlers = [FixedHTTPRedirectHandler, HTTPMethodFallback]
         if export_proxies:
-            handlers.append(urllib2.ProxyHandler())
+            handlers.append(urllib.request.ProxyHandler())
         handlers.append(CacheHTTPHandler())
         # XXX: Since Python 2.7.9 ssl cert validation is enabled by default
         # see PEP-0476, this causes verification errors on some https servers
         # so disable by default.
         import ssl
         if hasattr(ssl, '_create_unverified_context'):
-            handlers.append(urllib2.HTTPSHandler(context=ssl._create_unverified_context()))
-        opener = urllib2.build_opener(*handlers)
+            handlers.append(urllib.request.HTTPSHandler(context=ssl._create_unverified_context()))
+        opener = urllib.request.build_opener(*handlers)
 
         try:
             uri = ud.url.split(";")[0]
-            r = urllib2.Request(uri)
+            r = urllib.request.Request(uri)
             r.get_method = lambda: "HEAD"
+
+            if ud.user:
+                import base64
+                encodeuser = base64.b64encode(ud.user.encode('utf-8')).decode("utf-8")
+                authheader =  "Basic %s" % encodeuser
+                r.add_header("Authorization", authheader)
+
             opener.open(r)
-        except urllib2.URLError as e:
-            # debug for now to avoid spamming the logs in e.g. remote sstate searches
-            logger.debug(2, "checkstatus() urlopen failed: %s" % e)
-            return False
+        except urllib.error.URLError as e:
+            if try_again:
+                logger.debug(2, "checkstatus: trying again")
+                return self.checkstatus(fetch, ud, d, False)
+            else:
+                # debug for now to avoid spamming the logs in e.g. remote sstate searches
+                logger.debug(2, "checkstatus() urlopen failed: %s" % e)
+                return False
         return True
 
     def _parse_path(self, regex, s):
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/main.py b/import-layers/yocto-poky/bitbake/lib/bb/main.py
index e302173..f2f59f6 100755
--- a/import-layers/yocto-poky/bitbake/lib/bb/main.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/main.py
@@ -27,6 +27,7 @@
 import logging
 import optparse
 import warnings
+import fcntl
 
 import bb
 from bb import event
@@ -100,11 +101,12 @@
         # Dynamically load the UI based on the ui name. Although we
         # suggest a fixed set this allows you to have flexibility in which
         # ones are available.
-        module = __import__(pkg.__name__, fromlist = [modulename])
+        module = __import__(pkg.__name__, fromlist=[modulename])
         return getattr(module, modulename)
     except AttributeError:
-        raise BBMainException('FATAL: Unable to import extension module "%s" from %s. Valid extension modules: %s' % (modulename, pkg.__name__, present_options(list_extension_modules(pkg, checkattr))))
-
+        modules = present_options(list_extension_modules(pkg, checkattr))
+        raise BBMainException('FATAL: Unable to import extension module "%s" from %s. '
+                              'Valid extension modules: %s' % (modulename, pkg.__name__, modules))
 
 # Display bitbake/OE warnings via the BitBake.Warnings logger, ignoring others"""
 warnlog = logging.getLogger("BitBake.Warnings")
@@ -115,7 +117,7 @@
             _warnings_showwarning(message, category, filename, lineno, file, line)
     else:
         s = warnings.formatwarning(message, category, filename, lineno)
-        warnlog.warn(s)
+        warnlog.warning(s)
 
 warnings.showwarning = _showwarning
 warnings.filterwarnings("ignore")
@@ -129,136 +131,189 @@
 
     def parseCommandLine(self, argv=sys.argv):
         parser = optparse.OptionParser(
-            formatter = BitbakeHelpFormatter(),
-            version = "BitBake Build Tool Core version %s" % bb.__version__,
-            usage = """%prog [options] [recipename/target recipe:do_task ...]
+            formatter=BitbakeHelpFormatter(),
+            version="BitBake Build Tool Core version %s" % bb.__version__,
+            usage="""%prog [options] [recipename/target recipe:do_task ...]
 
     Executes the specified task (default is 'build') for a given set of target recipes (.bb files).
     It is assumed there is a conf/bblayers.conf available in cwd or in BBPATH which
     will provide the layer, BBFILES and other configuration information.""")
 
-        parser.add_option("-b", "--buildfile", help = "Execute tasks from a specific .bb recipe directly. WARNING: Does not handle any dependencies from other recipes.",
-                   action = "store", dest = "buildfile", default = None)
+        parser.add_option("-b", "--buildfile", action="store", dest="buildfile", default=None,
+                          help="Execute tasks from a specific .bb recipe directly. WARNING: Does "
+                               "not handle any dependencies from other recipes.")
 
-        parser.add_option("-k", "--continue", help = "Continue as much as possible after an error. While the target that failed and anything depending on it cannot be built, as much as possible will be built before stopping.",
-                   action = "store_false", dest = "abort", default = True)
+        parser.add_option("-k", "--continue", action="store_false", dest="abort", default=True,
+                          help="Continue as much as possible after an error. While the target that "
+                               "failed and anything depending on it cannot be built, as much as "
+                               "possible will be built before stopping.")
 
-        parser.add_option("-a", "--tryaltconfigs", help = "Continue with builds by trying to use alternative providers where possible.",
-                   action = "store_true", dest = "tryaltconfigs", default = False)
+        parser.add_option("-a", "--tryaltconfigs", action="store_true",
+                          dest="tryaltconfigs", default=False,
+                          help="Continue with builds by trying to use alternative providers "
+                               "where possible.")
 
-        parser.add_option("-f", "--force", help = "Force the specified targets/task to run (invalidating any existing stamp file).",
-                   action = "store_true", dest = "force", default = False)
+        parser.add_option("-f", "--force", action="store_true", dest="force", default=False,
+                          help="Force the specified targets/task to run (invalidating any "
+                               "existing stamp file).")
 
-        parser.add_option("-c", "--cmd", help = "Specify the task to execute. The exact options available depend on the metadata. Some examples might be 'compile' or 'populate_sysroot' or 'listtasks' may give a list of the tasks available.",
-                   action = "store", dest = "cmd")
+        parser.add_option("-c", "--cmd", action="store", dest="cmd",
+                          help="Specify the task to execute. The exact options available "
+                               "depend on the metadata. Some examples might be 'compile'"
+                               " or 'populate_sysroot' or 'listtasks' may give a list of "
+                               "the tasks available.")
 
-        parser.add_option("-C", "--clear-stamp", help = "Invalidate the stamp for the specified task such as 'compile' and then run the default task for the specified target(s).",
-                    action = "store", dest = "invalidate_stamp")
+        parser.add_option("-C", "--clear-stamp", action="store", dest="invalidate_stamp",
+                          help="Invalidate the stamp for the specified task such as 'compile' "
+                               "and then run the default task for the specified target(s).")
 
-        parser.add_option("-r", "--read", help = "Read the specified file before bitbake.conf.",
-                   action = "append", dest = "prefile", default = [])
+        parser.add_option("-r", "--read", action="append", dest="prefile", default=[],
+                          help="Read the specified file before bitbake.conf.")
 
-        parser.add_option("-R", "--postread", help = "Read the specified file after bitbake.conf.",
-                          action = "append", dest = "postfile", default = [])
+        parser.add_option("-R", "--postread", action="append", dest="postfile", default=[],
+                          help="Read the specified file after bitbake.conf.")
 
-        parser.add_option("-v", "--verbose", help = "Output more log message data to the terminal.",
-                   action = "store_true", dest = "verbose", default = False)
+        parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False,
+                          help="Output more log message data to the terminal.")
 
-        parser.add_option("-D", "--debug", help = "Increase the debug level. You can specify this more than once.",
-                   action = "count", dest="debug", default = 0)
+        parser.add_option("-D", "--debug", action="count", dest="debug", default=0,
+                          help="Increase the debug level. You can specify this more than once.")
 
-        parser.add_option("-n", "--dry-run", help = "Don't execute, just go through the motions.",
-                   action = "store_true", dest = "dry_run", default = False)
+        parser.add_option("-q", "--quiet", action="store_true", dest="quiet", default=False,
+                          help="Output less log message data to the terminal.")
 
-        parser.add_option("-S", "--dump-signatures", help = "Dump out the signature construction information, with no task execution. The SIGNATURE_HANDLER parameter is passed to the handler. Two common values are none and printdiff but the handler may define more/less. none means only dump the signature, printdiff means compare the dumped signature with the cached one.",
-                   action = "append", dest = "dump_signatures", default = [], metavar="SIGNATURE_HANDLER")
+        parser.add_option("-n", "--dry-run", action="store_true", dest="dry_run", default=False,
+                          help="Don't execute, just go through the motions.")
 
-        parser.add_option("-p", "--parse-only", help = "Quit after parsing the BB recipes.",
-                   action = "store_true", dest = "parse_only", default = False)
+        parser.add_option("-S", "--dump-signatures", action="append", dest="dump_signatures",
+                          default=[], metavar="SIGNATURE_HANDLER",
+                          help="Dump out the signature construction information, with no task "
+                               "execution. The SIGNATURE_HANDLER parameter is passed to the "
+                               "handler. Two common values are none and printdiff but the handler "
+                               "may define more/less. none means only dump the signature, printdiff"
+                               " means compare the dumped signature with the cached one.")
 
-        parser.add_option("-s", "--show-versions", help = "Show current and preferred versions of all recipes.",
-                   action = "store_true", dest = "show_versions", default = False)
+        parser.add_option("-p", "--parse-only", action="store_true",
+                          dest="parse_only", default=False,
+                          help="Quit after parsing the BB recipes.")
 
-        parser.add_option("-e", "--environment", help = "Show the global or per-recipe environment complete with information about where variables were set/changed.",
-                   action = "store_true", dest = "show_environment", default = False)
+        parser.add_option("-s", "--show-versions", action="store_true",
+                          dest="show_versions", default=False,
+                          help="Show current and preferred versions of all recipes.")
 
-        parser.add_option("-g", "--graphviz", help = "Save dependency tree information for the specified targets in the dot syntax.",
-                    action = "store_true", dest = "dot_graph", default = False)
+        parser.add_option("-e", "--environment", action="store_true",
+                          dest="show_environment", default=False,
+                          help="Show the global or per-recipe environment complete with information"
+                               " about where variables were set/changed.")
 
-        parser.add_option("-I", "--ignore-deps", help = """Assume these dependencies don't exist and are already provided (equivalent to ASSUME_PROVIDED). Useful to make dependency graphs more appealing""",
-                    action = "append", dest = "extra_assume_provided", default = [])
+        parser.add_option("-g", "--graphviz", action="store_true", dest="dot_graph", default=False,
+                          help="Save dependency tree information for the specified "
+                               "targets in the dot syntax.")
 
-        parser.add_option("-l", "--log-domains", help = """Show debug logging for the specified logging domains""",
-                    action = "append", dest = "debug_domains", default = [])
+        parser.add_option("-I", "--ignore-deps", action="append",
+                          dest="extra_assume_provided", default=[],
+                          help="Assume these dependencies don't exist and are already provided "
+                               "(equivalent to ASSUME_PROVIDED). Useful to make dependency "
+                               "graphs more appealing")
 
-        parser.add_option("-P", "--profile", help = "Profile the command and save reports.",
-                   action = "store_true", dest = "profile", default = False)
+        parser.add_option("-l", "--log-domains", action="append", dest="debug_domains", default=[],
+                          help="Show debug logging for the specified logging domains")
 
-        env_ui = os.environ.get('BITBAKE_UI', None)
-        default_ui = env_ui or 'knotty'
-        # @CHOICES@ is substituted out by BitbakeHelpFormatter above
-        parser.add_option("-u", "--ui", help = "The user interface to use (@CHOICES@ - default %default).",
-                   action="store", dest="ui", default=default_ui)
+        parser.add_option("-P", "--profile", action="store_true", dest="profile", default=False,
+                          help="Profile the command and save reports.")
 
         # @CHOICES@ is substituted out by BitbakeHelpFormatter above
-        parser.add_option("-t", "--servertype", help = "Choose which server type to use (@CHOICES@ - default %default).",
-                   action = "store", dest = "servertype", default = "process")
+        parser.add_option("-u", "--ui", action="store", dest="ui",
+                          default=os.environ.get('BITBAKE_UI', 'knotty'),
+                          help="The user interface to use (@CHOICES@ - default %default).")
 
-        parser.add_option("", "--token", help = "Specify the connection token to be used when connecting to a remote server.",
-                   action = "store", dest = "xmlrpctoken")
+        # @CHOICES@ is substituted out by BitbakeHelpFormatter above
+        parser.add_option("-t", "--servertype", action="store", dest="servertype",
+                          default=["process", "xmlrpc"]["BBSERVER" in os.environ],
+                          help="Choose which server type to use (@CHOICES@ - default %default).")
 
-        parser.add_option("", "--revisions-changed", help = "Set the exit code depending on whether upstream floating revisions have changed or not.",
-                   action = "store_true", dest = "revisions_changed", default = False)
+        parser.add_option("", "--token", action="store", dest="xmlrpctoken",
+                          default=os.environ.get("BBTOKEN"),
+                          help="Specify the connection token to be used when connecting "
+                               "to a remote server.")
 
-        parser.add_option("", "--server-only", help = "Run bitbake without a UI, only starting a server (cooker) process.",
-                   action = "store_true", dest = "server_only", default = False)
+        parser.add_option("", "--revisions-changed", action="store_true",
+                          dest="revisions_changed", default=False,
+                          help="Set the exit code depending on whether upstream floating "
+                               "revisions have changed or not.")
 
-        parser.add_option("-B", "--bind", help = "The name/address for the bitbake server to bind to.",
-                   action = "store", dest = "bind", default = False)
+        parser.add_option("", "--server-only", action="store_true",
+                          dest="server_only", default=False,
+                          help="Run bitbake without a UI, only starting a server "
+                               "(cooker) process.")
 
-        parser.add_option("", "--no-setscene", help = "Do not run any setscene tasks. sstate will be ignored and everything needed, built.",
-                   action = "store_true", dest = "nosetscene", default = False)
+        parser.add_option("", "--foreground", action="store_true",
+                          help="Run bitbake server in foreground.")
 
-        parser.add_option("", "--setscene-only", help = "Only run setscene tasks, don't run any real tasks.",
-                   action = "store_true", dest = "setsceneonly", default = False)
+        parser.add_option("-B", "--bind", action="store", dest="bind", default=False,
+                          help="The name/address for the bitbake server to bind to.")
 
-        parser.add_option("", "--remote-server", help = "Connect to the specified server.",
-                   action = "store", dest = "remote_server", default = False)
+        parser.add_option("-T", "--idle-timeout", type=int,
+                          default=int(os.environ.get("BBTIMEOUT", "0")),
+                          help="Set timeout to unload bitbake server due to inactivity")
 
-        parser.add_option("-m", "--kill-server", help = "Terminate the remote server.",
-                    action = "store_true", dest = "kill_server", default = False)
+        parser.add_option("", "--no-setscene", action="store_true",
+                          dest="nosetscene", default=False,
+                          help="Do not run any setscene tasks. sstate will be ignored and "
+                               "everything needed, built.")
 
-        parser.add_option("", "--observe-only", help = "Connect to a server as an observing-only client.",
-                   action = "store_true", dest = "observe_only", default = False)
+        parser.add_option("", "--setscene-only", action="store_true",
+                          dest="setsceneonly", default=False,
+                          help="Only run setscene tasks, don't run any real tasks.")
 
-        parser.add_option("", "--status-only", help = "Check the status of the remote bitbake server.",
-                   action = "store_true", dest = "status_only", default = False)
+        parser.add_option("", "--remote-server", action="store", dest="remote_server",
+                          default=os.environ.get("BBSERVER"),
+                          help="Connect to the specified server.")
 
-        parser.add_option("-w", "--write-log", help = "Writes the event log of the build to a bitbake event json file. Use '' (empty string) to assign the name automatically.",
-                   action = "store", dest = "writeeventlog")
+        parser.add_option("-m", "--kill-server", action="store_true",
+                          dest="kill_server", default=False,
+                          help="Terminate the remote server.")
+
+        parser.add_option("", "--observe-only", action="store_true",
+                          dest="observe_only", default=False,
+                          help="Connect to a server as an observing-only client.")
+
+        parser.add_option("", "--status-only", action="store_true",
+                          dest="status_only", default=False,
+                          help="Check the status of the remote bitbake server.")
+
+        parser.add_option("-w", "--write-log", action="store", dest="writeeventlog",
+                          default=os.environ.get("BBEVENTLOG"),
+                          help="Writes the event log of the build to a bitbake event json file. "
+                               "Use '' (empty string) to assign the name automatically.")
 
         options, targets = parser.parse_args(argv)
 
-        # some environmental variables set also configuration options
-        if "BBSERVER" in os.environ:
-            options.servertype = "xmlrpc"
-            options.remote_server = os.environ["BBSERVER"]
+        if options.quiet and options.verbose:
+            parser.error("options --quiet and --verbose are mutually exclusive")
 
-        if "BBTOKEN" in os.environ:
-            options.xmlrpctoken = os.environ["BBTOKEN"]
+        if options.quiet and options.debug:
+            parser.error("options --quiet and --debug are mutually exclusive")
 
-        if "BBEVENTLOG" in os.environ:
-            options.writeeventlog = os.environ["BBEVENTLOG"]
+        # use configuration files from environment variables
+        if "BBPRECONF" in os.environ:
+            options.prefile.append(os.environ["BBPRECONF"])
+
+        if "BBPOSTCONF" in os.environ:
+            options.postfile.append(os.environ["BBPOSTCONF"])
 
         # fill in proper log name if not supplied
         if options.writeeventlog is not None and len(options.writeeventlog) == 0:
-            import datetime
-            options.writeeventlog = "bitbake_eventlog_%s.json" % datetime.datetime.now().strftime("%Y%m%d%H%M%S")
+            from datetime import datetime
+            eventlog = "bitbake_eventlog_%s.json" % datetime.now().strftime("%Y%m%d%H%M%S")
+            options.writeeventlog = eventlog
 
         # if BBSERVER says to autodetect, let's do that
         if options.remote_server:
-            [host, port] = options.remote_server.split(":", 2)
-            port = int(port)
+            port = -1
+            if options.remote_server != 'autostart':
+                host, port = options.remote_server.split(":", 2)
+                port = int(port)
             # use automatic port if port set to -1, means read it from
             # the bitbake.lock file; this is a bit tricky, but we always expect
             # to be in the base of the build directory if we need to have a
@@ -275,18 +330,20 @@
                     lf.close()
                     options.remote_server = remotedef
                 except Exception as e:
-                    raise BBMainException("Failed to read bitbake.lock (%s), invalid port" % str(e))
+                    if options.remote_server != 'autostart':
+                        raise BBMainException("Failed to read bitbake.lock (%s), invalid port" % str(e))
 
         return options, targets[1:]
 
 
 def start_server(servermodule, configParams, configuration, features):
     server = servermodule.BitBakeServer()
-    single_use = not configParams.server_only
+    single_use = not configParams.server_only and os.getenv('BBSERVER') != 'autostart'
     if configParams.bind:
         (host, port) = configParams.bind.split(':')
-        server.initServer((host, int(port)), single_use)
-        configuration.interface = [ server.serverImpl.host, server.serverImpl.port ]
+        server.initServer((host, int(port)), single_use=single_use,
+                          idle_timeout=configParams.idle_timeout)
+        configuration.interface = [server.serverImpl.host, server.serverImpl.port]
     else:
         server.initServer(single_use=single_use)
         configuration.interface = []
@@ -299,20 +356,17 @@
         server.addcooker(cooker)
         server.saveConnectionDetails()
     except Exception as e:
-        exc_info = sys.exc_info()
         while hasattr(server, "event_queue"):
-            try:
-                import queue
-            except ImportError:
-                import Queue as queue
+            import queue
             try:
                 event = server.event_queue.get(block=False)
             except (queue.Empty, IOError):
                 break
             if isinstance(event, logging.LogRecord):
                 logger.handle(event)
-        raise exc_info[1], None, exc_info[2]
-    server.detach()
+        raise
+    if not configParams.foreground:
+        server.detach()
     cooker.lock.close()
     return server
 
@@ -328,7 +382,10 @@
     # updates to log files for use with tail
     try:
         if sys.stdout.name == '<stdout>':
-            sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
+            # Reopen with O_SYNC (unbuffered)
+            fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
+            fl |= os.O_SYNC
+            fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)
     except:
         pass
 
@@ -345,10 +402,21 @@
         if not configParams.bind:
             raise BBMainException("FATAL: The '--server-only' option requires a name/address "
                                   "to bind to with the -B option.\n")
+        else:
+            try:
+                #Checking that the port is a number
+                int(configParams.bind.split(":")[1])
+            except (ValueError,IndexError):
+                raise BBMainException(
+                        "FATAL: Malformed host:port bind parameter")
         if configParams.remote_server:
             raise BBMainException("FATAL: The '--server-only' option conflicts with %s.\n" %
                                   ("the BBSERVER environment variable" if "BBSERVER" in os.environ \
-                                   else "the '--remote-server' option" ))
+                                   else "the '--remote-server' option"))
+
+    elif configParams.foreground:
+        raise BBMainException("FATAL: The '--foreground' option can only be used "
+                              "with --server-only.\n")
 
     if configParams.bind and configParams.servertype != "xmlrpc":
         raise BBMainException("FATAL: If '-B' or '--bind' is defined, we must "
@@ -363,7 +431,8 @@
                               "connecting to a server.\n")
 
     if configParams.kill_server and not configParams.remote_server:
-        raise BBMainException("FATAL: '--kill-server' can only be used to terminate a remote server")
+        raise BBMainException("FATAL: '--kill-server' can only be used to "
+                              "terminate a remote server")
 
     if "BBDEBUG" in os.environ:
         level = int(os.environ["BBDEBUG"])
@@ -371,7 +440,7 @@
             configuration.debug = level
 
     bb.msg.init_msgconfig(configParams.verbose, configuration.debug,
-                         configuration.debug_domains)
+                          configuration.debug_domains)
 
     # Ensure logging messages get sent to the UI as events
     handler = bb.event.LogHandler()
@@ -399,8 +468,17 @@
         server = start_server(servermodule, configParams, configuration, featureset)
         bb.event.ui_queue = []
     else:
+        if os.getenv('BBSERVER') == 'autostart':
+            if configParams.remote_server == 'autostart' or \
+               not servermodule.check_connection(configParams.remote_server, timeout=2):
+                configParams.bind = 'localhost:0'
+                srv = start_server(servermodule, configParams, configuration, featureset)
+                configParams.remote_server = '%s:%d' % tuple(configuration.interface)
+                bb.event.ui_queue = []
+
         # we start a stub server that is actually a XMLRPClient that connects to a real server
-        server = servermodule.BitBakeXMLRPCClient(configParams.observe_only, configParams.xmlrpctoken)
+        server = servermodule.BitBakeXMLRPCClient(configParams.observe_only,
+                                                  configParams.xmlrpctoken)
         server.saveConnectionDetails(configParams.remote_server)
 
 
@@ -429,12 +507,16 @@
             return 0
 
         try:
-            return ui_module.main(server_connection.connection, server_connection.events, configParams)
+            return ui_module.main(server_connection.connection, server_connection.events,
+                                  configParams)
         finally:
             bb.event.ui_queue = []
             server_connection.terminate()
     else:
-        print("Bitbake server address: %s, server port: %s" % (server.serverImpl.host, server.serverImpl.port))
+        print("Bitbake server address: %s, server port: %s" % (server.serverImpl.host,
+                                                               server.serverImpl.port))
+        if configParams.foreground:
+            server.serverImpl.serve_forever()
         return 0
 
     return 1
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/monitordisk.py b/import-layers/yocto-poky/bitbake/lib/bb/monitordisk.py
index 466523c..203c405 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/monitordisk.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/monitordisk.py
@@ -220,7 +220,7 @@
                 if minSpace and freeSpace < minSpace:
                     # Always show warning, the self.checked would always be False if the action is WARN
                     if self.preFreeS[k] == 0 or self.preFreeS[k] - freeSpace > self.spaceInterval and not self.checked[k]:
-                        logger.warn("The free space of %s (%s) is running low (%.3fGB left)" % \
+                        logger.warning("The free space of %s (%s) is running low (%.3fGB left)" % \
                                 (path, dev, freeSpace / 1024 / 1024 / 1024.0))
                         self.preFreeS[k] = freeSpace
 
@@ -246,7 +246,7 @@
                         continue
                     # Always show warning, the self.checked would always be False if the action is WARN
                     if self.preFreeI[k] == 0 or self.preFreeI[k] - freeInode > self.inodeInterval and not self.checked[k]:
-                        logger.warn("The free inode of %s (%s) is running low (%.3fK left)" % \
+                        logger.warning("The free inode of %s (%s) is running low (%.3fK left)" % \
                                 (path, dev, freeInode / 1024.0))
                         self.preFreeI[k] = freeInode
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/msg.py b/import-layers/yocto-poky/bitbake/lib/bb/msg.py
index 786b5ae..b7c39fa 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/msg.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/msg.py
@@ -57,7 +57,7 @@
     }
 
     color_enabled = False
-    BASECOLOR, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(29,38)
+    BASECOLOR, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = list(range(29,38))
 
     COLORS = {
         DEBUG3  : CYAN,
@@ -90,8 +90,9 @@
             if self.color_enabled:
                 record = self.colorize(record)
             msg = logging.Formatter.format(self, record)
-
-        if hasattr(record, 'bb_exc_info'):
+        if hasattr(record, 'bb_exc_formatted'):
+            msg += '\n' + ''.join(record.bb_exc_formatted)
+        elif hasattr(record, 'bb_exc_info'):
             etype, value, tb = record.bb_exc_info
             formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
             msg += '\n' + ''.join(formatted)
@@ -181,9 +182,12 @@
         debug_domains["BitBake.%s" % domainarg] = logging.DEBUG - dlevel + 1
     return level, debug_domains
 
-def addDefaultlogFilter(handler, cls = BBLogFilter):
+def addDefaultlogFilter(handler, cls = BBLogFilter, forcelevel=None):
     level, debug_domains = constructLogOptions()
 
+    if forcelevel is not None:
+        level = forcelevel
+
     cls(handler, level, debug_domains)
 
 #
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/parse/ast.py b/import-layers/yocto-poky/bitbake/lib/bb/parse/ast.py
index 5f55af5..fa83b18 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/parse/ast.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/parse/ast.py
@@ -21,8 +21,7 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-from __future__ import absolute_import
-from future_builtins import filter
+
 import re
 import string
 import logging
@@ -70,6 +69,33 @@
     def eval(self, data):
         data.setVarFlag(self.var, "export", 1, op = 'exported')
 
+class UnsetNode(AstNode):
+    def __init__(self, filename, lineno, var):
+        AstNode.__init__(self, filename, lineno)
+        self.var = var
+
+    def eval(self, data):
+        loginfo = {
+            'variable': self.var,
+            'file': self.filename,
+            'line': self.lineno,
+        }
+        data.delVar(self.var,**loginfo)
+
+class UnsetFlagNode(AstNode):
+    def __init__(self, filename, lineno, var, flag):
+        AstNode.__init__(self, filename, lineno)
+        self.var = var
+        self.flag = flag
+
+    def eval(self, data):
+        loginfo = {
+            'variable': self.var,
+            'file': self.filename,
+            'line': self.lineno,
+        }
+        data.delVarFlag(self.var, self.flag, **loginfo)
+
 class DataNode(AstNode):
     """
     Various data related updates. For the sake of sanity
@@ -139,7 +165,7 @@
             data.setVar(key, val, parsing=True, **loginfo)
 
 class MethodNode(AstNode):
-    tr_tbl = string.maketrans('/.+-@%&', '_______')
+    tr_tbl = str.maketrans('/.+-@%&', '_______')
 
     def __init__(self, filename, lineno, func_name, body, python, fakeroot):
         AstNode.__init__(self, filename, lineno)
@@ -271,6 +297,12 @@
 def handleExport(statements, filename, lineno, m):
     statements.append(ExportNode(filename, lineno, m.group(1)))
 
+def handleUnset(statements, filename, lineno, m):
+    statements.append(UnsetNode(filename, lineno, m.group(1)))
+
+def handleUnsetFlag(statements, filename, lineno, m):
+    statements.append(UnsetFlagNode(filename, lineno, m.group(1), m.group(2)))
+
 def handleData(statements, filename, lineno, groupd):
     statements.append(DataNode(filename, lineno, groupd))
 
@@ -307,10 +339,13 @@
     statements.append(InheritNode(filename, lineno, classes))
 
 def finalize(fn, d, variant = None):
-    all_handlers = {}
+    saved_handlers = bb.event.get_handlers().copy()
+
     for var in d.getVar('__BBHANDLERS', False) or []:
         # try to add the handler
         handlerfn = d.getVarFlag(var, "filename", False)
+        if not handlerfn:
+            bb.fatal("Undefined event handler function '%s'" % var)
         handlerln = int(d.getVarFlag(var, "lineno", False))
         bb.event.register(var, d.getVar(var, False), (d.getVarFlag(var, "eventmask", True) or "").split(), handlerfn, handlerln)
 
@@ -332,6 +367,7 @@
     d.setVar('BBINCLUDED', bb.parse.get_file_depends(d))
 
     bb.event.fire(bb.event.RecipeParsed(fn), d)
+    bb.event.set_handlers(saved_handlers)
 
 def _create_variants(datastores, names, function, onlyfinalise):
     def create_variant(name, orig_d, arg = None):
@@ -341,17 +377,17 @@
         function(arg or name, new_d)
         datastores[name] = new_d
 
-    for variant, variant_d in datastores.items():
+    for variant in list(datastores.keys()):
         for name in names:
             if not variant:
                 # Based on main recipe
-                create_variant(name, variant_d)
+                create_variant(name, datastores[""])
             else:
-                create_variant("%s-%s" % (variant, name), variant_d, name)
+                create_variant("%s-%s" % (variant, name), datastores[variant], name)
 
 def _expand_versions(versions):
     def expand_one(version, start, end):
-        for i in xrange(start, end + 1):
+        for i in range(start, end + 1):
             ver = _bbversions_re.sub(str(i), version, 1)
             yield ver
 
@@ -460,17 +496,13 @@
         safe_d.setVar("BBCLASSEXTEND", extended)
         _create_variants(datastores, extendedmap.keys(), extendfunc, onlyfinalise)
 
-    for variant, variant_d in datastores.iteritems():
+    for variant in datastores.keys():
         if variant:
             try:
                 if not onlyfinalise or variant in onlyfinalise:
-                    finalize(fn, variant_d, variant)
+                    finalize(fn, datastores[variant], variant)
             except bb.parse.SkipRecipe as e:
-                variant_d.setVar("__SKIPPED", e.args[0])
-
-    if len(datastores) > 1:
-        variants = filter(None, datastores.iterkeys())
-        safe_d.setVar("__VARIANTS", " ".join(variants))
+                datastores[variant].setVar("__SKIPPED", e.args[0])
 
     datastores[""] = d
     return datastores
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/BBHandler.py b/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/BBHandler.py
index ef72c37..c54a079 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/BBHandler.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/BBHandler.py
@@ -25,7 +25,7 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-from __future__ import absolute_import
+
 import re, bb, os
 import logging
 import bb.build, bb.utils
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py
index fbd75b1..875250d 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py
@@ -57,6 +57,8 @@
 __include_regexp__ = re.compile( r"include\s+(.+)" )
 __require_regexp__ = re.compile( r"require\s+(.+)" )
 __export_regexp__ = re.compile( r"export\s+([a-zA-Z0-9\-_+.${}/]+)$" )
+__unset_regexp__ = re.compile( r"unset\s+([a-zA-Z0-9\-_+.${}/]+)$" )
+__unset_flag_regexp__ = re.compile( r"unset\s+([a-zA-Z0-9\-_+.${}/]+)\[([a-zA-Z0-9\-_+.${}/]+)\]$" )
 
 def init(data):
     topdir = data.getVar('TOPDIR', False)
@@ -84,13 +86,13 @@
         bbpath = "%s:%s" % (dname, data.getVar("BBPATH", True))
         abs_fn, attempts = bb.utils.which(bbpath, fn, history=True)
         if abs_fn and bb.parse.check_dependency(data, abs_fn):
-            logger.warn("Duplicate inclusion for %s in %s" % (abs_fn, data.getVar('FILE', True)))
+            logger.warning("Duplicate inclusion for %s in %s" % (abs_fn, data.getVar('FILE', True)))
         for af in attempts:
             bb.parse.mark_dependency(data, af)
         if abs_fn:
             fn = abs_fn
     elif bb.parse.check_dependency(data, fn):
-        logger.warn("Duplicate inclusion for %s in %s" % (fn, data.getVar('FILE', True)))
+        logger.warning("Duplicate inclusion for %s in %s" % (fn, data.getVar('FILE', True)))
 
     try:
         bb.parse.handle(fn, data, True)
@@ -185,6 +187,16 @@
         ast.handleExport(statements, fn, lineno, m)
         return
 
+    m = __unset_regexp__.match(s)
+    if m:
+        ast.handleUnset(statements, fn, lineno, m)
+        return
+
+    m = __unset_flag_regexp__.match(s)
+    if m:
+        ast.handleUnsetFlag(statements, fn, lineno, m)
+        return
+
     raise ParseError("unparsed line: '%s'" % s, fn, lineno);
 
 # Add us to the handlers list
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/persist_data.py b/import-layers/yocto-poky/bitbake/lib/bb/persist_data.py
index e450423..bb6deca 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/persist_data.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/persist_data.py
@@ -92,9 +92,9 @@
         self._execute("DELETE from %s where key=?;" % self.table, [key])
 
     def __setitem__(self, key, value):
-        if not isinstance(key, basestring):
+        if not isinstance(key, str):
             raise TypeError('Only string keys are supported')
-        elif not isinstance(value, basestring):
+        elif not isinstance(value, str):
             raise TypeError('Only string values are supported')
 
         data = self._execute("SELECT * from %s where key=?;" %
@@ -178,7 +178,7 @@
         """
         Return a list of key + value pairs for a domain
         """
-        return self.data[domain].items()
+        return list(self.data[domain].items())
 
     def getValue(self, domain, key):
         """
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/process.py b/import-layers/yocto-poky/bitbake/lib/bb/process.py
index 1c07f2d..c62d7bc 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/process.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/process.py
@@ -17,7 +17,7 @@
         self.msg = msg
 
     def __str__(self):
-        if not isinstance(self.command, basestring):
+        if not isinstance(self.command, str):
             cmd = subprocess.list2cmdline(self.command)
         else:
             cmd = self.command
@@ -97,6 +97,8 @@
     try:
         while pipe.poll() is None:
             rlist = rin
+            stdoutbuf = b""
+            stderrbuf = b""
             try:
                 r,w,e = select.select (rlist, [], [], 1)
             except OSError as e:
@@ -104,16 +106,26 @@
                     raise
 
             if pipe.stdout in r:
-                data = pipe.stdout.read()
-                if data is not None:
-                    outdata.append(data)
-                    log.write(data)
+                data = stdoutbuf + pipe.stdout.read()
+                if data is not None and len(data) > 0:
+                    try:
+                        data = data.decode("utf-8")
+                        outdata.append(data)
+                        log.write(data)
+                        stdoutbuf = b""
+                    except UnicodeDecodeError:
+                        stdoutbuf = data
 
             if pipe.stderr in r:
-                data = pipe.stderr.read()
-                if data is not None:
-                    errdata.append(data)
-                    log.write(data)
+                data = stderrbuf + pipe.stderr.read()
+                if data is not None and len(data) > 0:
+                    try:
+                        data = data.decode("utf-8")
+                        errdata.append(data)
+                        log.write(data)
+                        stderrbuf = b""
+                    except UnicodeDecodeError:
+                        stderrbuf = data
 
             readextras(r)
 
@@ -135,7 +147,7 @@
     if not extrafiles:
         extrafiles = []
 
-    if isinstance(cmd, basestring) and not "shell" in options:
+    if isinstance(cmd, str) and not "shell" in options:
         options["shell"] = True
 
     try:
@@ -150,6 +162,10 @@
         stdout, stderr = _logged_communicate(pipe, log, input, extrafiles)
     else:
         stdout, stderr = pipe.communicate(input)
+        if stdout:
+            stdout = stdout.decode("utf-8")
+        if stderr:
+            stderr = stderr.decode("utf-8")
 
     if pipe.returncode != 0:
         raise ExecutionError(cmd, pipe.returncode, stdout, stderr)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/progress.py b/import-layers/yocto-poky/bitbake/lib/bb/progress.py
new file mode 100644
index 0000000..f54d1c7
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/bb/progress.py
@@ -0,0 +1,276 @@
+"""
+BitBake progress handling code
+"""
+
+# Copyright (C) 2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import sys
+import re
+import time
+import inspect
+import bb.event
+import bb.build
+
+class ProgressHandler(object):
+    """
+    Base class that can pretend to be a file object well enough to be
+    used to build objects to intercept console output and determine the
+    progress of some operation.
+    """
+    def __init__(self, d, outfile=None):
+        self._progress = 0
+        self._data = d
+        self._lastevent = 0
+        if outfile:
+            self._outfile = outfile
+        else:
+            self._outfile = sys.stdout
+
+    def _fire_progress(self, taskprogress, rate=None):
+        """Internal function to fire the progress event"""
+        bb.event.fire(bb.build.TaskProgress(taskprogress, rate), self._data)
+
+    def write(self, string):
+        self._outfile.write(string)
+
+    def flush(self):
+        self._outfile.flush()
+
+    def update(self, progress, rate=None):
+        ts = time.time()
+        if progress > 100:
+            progress = 100
+        if progress != self._progress or self._lastevent + 1 < ts:
+            self._fire_progress(progress, rate)
+            self._lastevent = ts
+            self._progress = progress
+
+class LineFilterProgressHandler(ProgressHandler):
+    """
+    A ProgressHandler variant that provides the ability to filter out
+    the lines if they contain progress information. Additionally, it
+    filters out anything before the last line feed on a line. This can
+    be used to keep the logs clean of output that we've only enabled for
+    getting progress, assuming that that can be done on a per-line
+    basis.
+    """
+    def __init__(self, d, outfile=None):
+        self._linebuffer = ''
+        super(LineFilterProgressHandler, self).__init__(d, outfile)
+
+    def write(self, string):
+        self._linebuffer += string
+        while True:
+            breakpos = self._linebuffer.find('\n') + 1
+            if breakpos == 0:
+                break
+            line = self._linebuffer[:breakpos]
+            self._linebuffer = self._linebuffer[breakpos:]
+            # Drop any line feeds and anything that precedes them
+            lbreakpos = line.rfind('\r') + 1
+            if lbreakpos:
+                line = line[lbreakpos:]
+            if self.writeline(line):
+                super(LineFilterProgressHandler, self).write(line)
+
+    def writeline(self, line):
+        return True
+
+class BasicProgressHandler(ProgressHandler):
+    def __init__(self, d, regex=r'(\d+)%', outfile=None):
+        super(BasicProgressHandler, self).__init__(d, outfile)
+        self._regex = re.compile(regex)
+        # Send an initial progress event so the bar gets shown
+        self._fire_progress(0)
+
+    def write(self, string):
+        percs = self._regex.findall(string)
+        if percs:
+            progress = int(percs[-1])
+            self.update(progress)
+        super(BasicProgressHandler, self).write(string)
+
+class OutOfProgressHandler(ProgressHandler):
+    def __init__(self, d, regex, outfile=None):
+        super(OutOfProgressHandler, self).__init__(d, outfile)
+        self._regex = re.compile(regex)
+        # Send an initial progress event so the bar gets shown
+        self._fire_progress(0)
+
+    def write(self, string):
+        nums = self._regex.findall(string)
+        if nums:
+            progress = (float(nums[-1][0]) / float(nums[-1][1])) * 100
+            self.update(progress)
+        super(OutOfProgressHandler, self).write(string)
+
+class MultiStageProgressReporter(object):
+    """
+    Class which allows reporting progress without the caller
+    having to know where they are in the overall sequence. Useful
+    for tasks made up of python code spread across multiple
+    classes / functions - the progress reporter object can
+    be passed around or stored at the object level and calls
+    to next_stage() and update() made whereever needed.
+    """
+    def __init__(self, d, stage_weights, debug=False):
+        """
+        Initialise the progress reporter.
+
+        Parameters:
+        * d: the datastore (needed for firing the events)
+        * stage_weights: a list of weight values, one for each stage.
+          The value is scaled internally so you only need to specify
+          values relative to other values in the list, so if there
+          are two stages and the first takes 2s and the second takes
+          10s you would specify [2, 10] (or [1, 5], it doesn't matter).
+        * debug: specify True (and ensure you call finish() at the end)
+          in order to show a printout of the calculated stage weights
+          based on timing each stage. Use this to determine what the
+          weights should be when you're not sure.
+        """
+        self._data = d
+        total = sum(stage_weights)
+        self._stage_weights = [float(x)/total for x in stage_weights]
+        self._stage = -1
+        self._base_progress = 0
+        # Send an initial progress event so the bar gets shown
+        self._fire_progress(0)
+        self._debug = debug
+        self._finished = False
+        if self._debug:
+            self._last_time = time.time()
+            self._stage_times = []
+            self._stage_total = None
+            self._callers = []
+
+    def _fire_progress(self, taskprogress):
+        bb.event.fire(bb.build.TaskProgress(taskprogress), self._data)
+
+    def next_stage(self, stage_total=None):
+        """
+        Move to the next stage.
+        Parameters:
+        * stage_total: optional total for progress within the stage,
+          see update() for details
+        NOTE: you need to call this before the first stage.
+        """
+        self._stage += 1
+        self._stage_total = stage_total
+        if self._stage == 0:
+            # First stage
+            if self._debug:
+                self._last_time = time.time()
+        else:
+            if self._stage < len(self._stage_weights):
+                self._base_progress = sum(self._stage_weights[:self._stage]) * 100
+                if self._debug:
+                    currtime = time.time()
+                    self._stage_times.append(currtime - self._last_time)
+                    self._last_time = currtime
+                    self._callers.append(inspect.getouterframes(inspect.currentframe())[1])
+            elif not self._debug:
+                bb.warn('ProgressReporter: current stage beyond declared number of stages')
+                self._base_progress = 100
+            self._fire_progress(self._base_progress)
+
+    def update(self, stage_progress):
+        """
+        Update progress within the current stage.
+        Parameters:
+        * stage_progress: progress value within the stage. If stage_total
+          was specified when next_stage() was last called, then this
+          value is considered to be out of stage_total, otherwise it should
+          be a percentage value from 0 to 100.
+        """
+        if self._stage_total:
+            stage_progress = (float(stage_progress) / self._stage_total) * 100
+        if self._stage < 0:
+            bb.warn('ProgressReporter: update called before first call to next_stage()')
+        elif self._stage < len(self._stage_weights):
+            progress = self._base_progress + (stage_progress * self._stage_weights[self._stage])
+        else:
+            progress = self._base_progress
+        if progress > 100:
+            progress = 100
+        self._fire_progress(progress)
+
+    def finish(self):
+        if self._finished:
+            return
+        self._finished = True
+        if self._debug:
+            import math
+            self._stage_times.append(time.time() - self._last_time)
+            mintime = max(min(self._stage_times), 0.01)
+            self._callers.append(None)
+            stage_weights = [int(math.ceil(x / mintime)) for x in self._stage_times]
+            bb.warn('Stage weights: %s' % stage_weights)
+            out = []
+            for stage_weight, caller in zip(stage_weights, self._callers):
+                if caller:
+                    out.append('Up to %s:%d: %d' % (caller[1], caller[2], stage_weight))
+                else:
+                    out.append('Up to finish: %d' % stage_weight)
+            bb.warn('Stage times:\n  %s' % '\n  '.join(out))
+
+class MultiStageProcessProgressReporter(MultiStageProgressReporter):
+    """
+    Version of MultiStageProgressReporter intended for use with
+    standalone processes (such as preparing the runqueue)
+    """
+    def __init__(self, d, processname, stage_weights, debug=False):
+        self._processname = processname
+        self._started = False
+        MultiStageProgressReporter.__init__(self, d, stage_weights, debug)
+
+    def start(self):
+        if not self._started:
+            bb.event.fire(bb.event.ProcessStarted(self._processname, 100), self._data)
+            self._started = True
+
+    def _fire_progress(self, taskprogress):
+        if taskprogress == 0:
+            self.start()
+            return
+        bb.event.fire(bb.event.ProcessProgress(self._processname, taskprogress), self._data)
+
+    def finish(self):
+        MultiStageProgressReporter.finish(self)
+        bb.event.fire(bb.event.ProcessFinished(self._processname), self._data)
+
+class DummyMultiStageProcessProgressReporter(MultiStageProgressReporter):
+    """
+    MultiStageProcessProgressReporter that takes the calls and does nothing
+    with them (to avoid a bunch of "if progress_reporter:" checks)
+    """
+    def __init__(self):
+        MultiStageProcessProgressReporter.__init__(self, "", None, [])
+
+    def _fire_progress(self, taskprogress, rate=None):
+        pass
+
+    def start(self):
+        pass
+
+    def next_stage(self, stage_total=None):
+        pass
+
+    def update(self, stage_progress):
+        pass
+
+    def finish(self):
+        pass
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/providers.py b/import-layers/yocto-poky/bitbake/lib/bb/providers.py
index 563a091..db02a0b 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/providers.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/providers.py
@@ -245,7 +245,7 @@
             pkg_pn[pn] = []
         pkg_pn[pn].append(p)
 
-    logger.debug(1, "providers for %s are: %s", item, pkg_pn.keys())
+    logger.debug(1, "providers for %s are: %s", item, list(pkg_pn.keys()))
 
     # First add PREFERRED_VERSIONS
     for pn in pkg_pn:
@@ -402,7 +402,7 @@
     return rproviders
 
 
-def buildWorldTargetList(dataCache):
+def buildWorldTargetList(dataCache, task=None):
     """
     Build package list for "bitbake world"
     """
@@ -413,6 +413,9 @@
     for f in dataCache.possible_world:
         terminal = True
         pn = dataCache.pkg_fn[f]
+        if task and task not in dataCache.task_deps[f]['tasks']:
+            logger.debug(2, "World build skipping %s as task %s doesn't exist", f, task)
+            terminal = False
 
         for p in dataCache.pn_provides[pn]:
             if p.startswith('virtual/'):
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/pysh/builtin.py b/import-layers/yocto-poky/bitbake/lib/bb/pysh/builtin.py
index b748e4a..a8814dc 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/pysh/builtin.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/pysh/builtin.py
@@ -527,7 +527,7 @@
         print interp.log(' '.join([name, str(args), interp['PWD']]) + '\n')
         
     # Scan pattern arguments and append a space if necessary
-    for i in xrange(len(args)):
+    for i in range(len(args)):
         if not RE_SED.search(args[i]):
             continue
         args[i] = args[i] + ' '
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/pysh/interp.py b/import-layers/yocto-poky/bitbake/lib/bb/pysh/interp.py
index 25d8c92..d14ecf3 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/pysh/interp.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/pysh/interp.py
@@ -474,7 +474,7 @@
         """
         # Save and remove previous arguments
         prevargs = []        
-        for i in xrange(int(self._env['#'])):
+        for i in range(int(self._env['#'])):
             i = str(i+1)
             prevargs.append(self._env[i])
             del self._env[i]
@@ -488,7 +488,7 @@
         return prevargs
         
     def get_positional_args(self):
-        return [self._env[str(i+1)] for i in xrange(int(self._env['#']))]
+        return [self._env[str(i+1)] for i in range(int(self._env['#']))]
         
     def get_variables(self):
         return dict(self._env)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshlex.py b/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshlex.py
index b301236..fbf094b 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshlex.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshlex.py
@@ -20,7 +20,7 @@
     from Set import Set as set
 
 from ply import lex
-from sherrors import *
+from bb.pysh.sherrors import *
 
 class NeedMore(Exception):
     pass
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshyacc.py b/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshyacc.py
index e8e80aa..ba4cefd 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshyacc.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/pysh/pyshyacc.py
@@ -10,11 +10,11 @@
 import os.path
 import sys
 
-import pyshlex
+import bb.pysh.pyshlex as pyshlex
 tokens = pyshlex.tokens
 
 from ply import yacc
-import sherrors
+import bb.pysh.sherrors as sherrors
     
 class IORedirect:
     def __init__(self, op, filename, io_number=None):
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py b/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py
index e1b9b2e..84b2685 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py
@@ -35,17 +35,44 @@
 from bb import msg, data, event
 from bb import monitordisk
 import subprocess
-
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
+import pickle
 
 bblogger = logging.getLogger("BitBake")
 logger = logging.getLogger("BitBake.RunQueue")
 
 __find_md5__ = re.compile( r'(?i)(?<![a-z0-9])[a-f0-9]{32}(?![a-z0-9])' )
 
+def fn_from_tid(tid):
+     return tid.rsplit(":", 1)[0]
+
+def taskname_from_tid(tid):
+    return tid.rsplit(":", 1)[1]
+
+def split_tid(tid):
+    (mc, fn, taskname, _) = split_tid_mcfn(tid)
+    return (mc, fn, taskname)
+
+def split_tid_mcfn(tid):
+    if tid.startswith('multiconfig:'):
+        elems = tid.split(':')
+        mc = elems[1]
+        fn = ":".join(elems[2:-1])
+        taskname = elems[-1]
+        mcfn = "multiconfig:" + mc + ":" + fn
+    else:
+        tid = tid.rsplit(":", 1)
+        mc = ""
+        fn = tid[0]
+        taskname = tid[1]
+        mcfn = fn
+
+    return (mc, fn, taskname, mcfn)
+
+def build_tid(mc, fn, taskname):
+    if mc:
+        return "multiconfig:" + mc + ":" + fn + ":" + taskname
+    return fn + ":" + taskname
+
 class RunQueueStats:
     """
     Holds statistics on the tasks handled by the associated runQueue
@@ -101,19 +128,17 @@
         """
         self.rq = runqueue
         self.rqdata = rqdata
-        self.numTasks = len(self.rqdata.runq_fnid)
+        self.numTasks = len(self.rqdata.runtaskentries)
 
-        self.prio_map = []
-        self.prio_map.extend(range(self.numTasks))
+        self.prio_map = [self.rqdata.runtaskentries.keys()]
 
         self.buildable = []
         self.stamps = {}
-        for taskid in xrange(self.numTasks):
-            fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[taskid]]
-            taskname = self.rqdata.runq_task[taskid]
-            self.stamps[taskid] = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
-            if self.rq.runq_buildable[taskid] == 1:
-                self.buildable.append(taskid)
+        for tid in self.rqdata.runtaskentries:
+            (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+            self.stamps[tid] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
+            if tid in self.rq.runq_buildable:
+                self.buildable.append(tid)
 
         self.rev_prio_map = None
 
@@ -121,30 +146,30 @@
         """
         Return the id of the first task we find that is buildable
         """
-        self.buildable = [x for x in self.buildable if not self.rq.runq_running[x] == 1]
+        self.buildable = [x for x in self.buildable if x not in self.rq.runq_running]
         if not self.buildable:
             return None
         if len(self.buildable) == 1:
-            taskid = self.buildable[0]
-            stamp = self.stamps[taskid]
-            if stamp not in self.rq.build_stamps.itervalues():
-                return taskid
+            tid = self.buildable[0]
+            stamp = self.stamps[tid]
+            if stamp not in self.rq.build_stamps.values():
+                return tid
 
         if not self.rev_prio_map:
-            self.rev_prio_map = range(self.numTasks)
-            for taskid in xrange(self.numTasks):
-                self.rev_prio_map[self.prio_map[taskid]] = taskid
+            self.rev_prio_map = {}
+            for tid in self.rqdata.runtaskentries:
+                self.rev_prio_map[tid] = self.prio_map.index(tid)
 
         best = None
         bestprio = None
-        for taskid in self.buildable:
-            prio = self.rev_prio_map[taskid]
+        for tid in self.buildable:
+            prio = self.rev_prio_map[tid]
             if bestprio is None or bestprio > prio:
-                stamp = self.stamps[taskid]
-                if stamp in self.rq.build_stamps.itervalues():
+                stamp = self.stamps[tid]
+                if stamp in self.rq.build_stamps.values():
                     continue
                 bestprio = prio
-                best = taskid
+                best = tid
 
         return best
 
@@ -171,14 +196,17 @@
         """
         RunQueueScheduler.__init__(self, runqueue, rqdata)
 
-        sortweight = sorted(copy.deepcopy(self.rqdata.runq_weight))
-        copyweight = copy.deepcopy(self.rqdata.runq_weight)
-        self.prio_map = []
+        weights = {}
+        for tid in self.rqdata.runtaskentries:
+            weight = self.rqdata.runtaskentries[tid].weight
+            if not weight in weights:
+                weights[weight] = []
+            weights[weight].append(tid)
 
-        for weight in sortweight:
-            idx = copyweight.index(weight)
-            self.prio_map.append(idx)
-            copyweight[idx] = -1
+        self.prio_map = []
+        for weight in sorted(weights):
+            for w in weights[weight]:
+                self.prio_map.append(w)
 
         self.prio_map.reverse()
 
@@ -195,32 +223,40 @@
     def __init__(self, runqueue, rqdata):
         RunQueueSchedulerSpeed.__init__(self, runqueue, rqdata)
 
-        #FIXME - whilst this groups all fnids together it does not reorder the
-        #fnid groups optimally.
+        #FIXME - whilst this groups all fns together it does not reorder the
+        #fn groups optimally.
 
         basemap = copy.deepcopy(self.prio_map)
         self.prio_map = []
         while (len(basemap) > 0):
             entry = basemap.pop(0)
             self.prio_map.append(entry)
-            fnid = self.rqdata.runq_fnid[entry]
+            fn = fn_from_tid(entry)
             todel = []
             for entry in basemap:
-                entry_fnid = self.rqdata.runq_fnid[entry]
-                if entry_fnid == fnid:
+                entry_fn = fn_from_tid(entry)
+                if entry_fn == fn:
                     todel.append(basemap.index(entry))
                     self.prio_map.append(entry)
             todel.reverse()
             for idx in todel:
                 del basemap[idx]
 
+class RunTaskEntry(object):
+    def __init__(self):
+        self.depends = set()
+        self.revdeps = set()
+        self.hash = None
+        self.task = None
+        self.weight = 1
+
 class RunQueueData:
     """
     BitBake Run Queue implementation
     """
-    def __init__(self, rq, cooker, cfgData, dataCache, taskData, targets):
+    def __init__(self, rq, cooker, cfgData, dataCaches, taskData, targets):
         self.cooker = cooker
-        self.dataCache = dataCache
+        self.dataCaches = dataCaches
         self.taskData = taskData
         self.targets = targets
         self.rq = rq
@@ -228,52 +264,36 @@
 
         self.stampwhitelist = cfgData.getVar("BB_STAMP_WHITELIST", True) or ""
         self.multi_provider_whitelist = (cfgData.getVar("MULTI_PROVIDER_WHITELIST", True) or "").split()
+        self.setscenewhitelist = get_setscene_enforce_whitelist(cfgData)
+        self.setscenewhitelist_checked = False
+        self.init_progress_reporter = bb.progress.DummyMultiStageProcessProgressReporter()
 
         self.reset()
 
     def reset(self):
-        self.runq_fnid = []
-        self.runq_task = []
-        self.runq_depends = []
-        self.runq_revdeps = []
-        self.runq_hash = []
+        self.runtaskentries = {}
 
     def runq_depends_names(self, ids):
         import re
         ret = []
-        for id in self.runq_depends[ids]:
-            nam = os.path.basename(self.get_user_idstring(id))
+        for id in ids:
+            nam = os.path.basename(id)
             nam = re.sub("_[^,]*,", ",", nam)
             ret.extend([nam])
         return ret
 
-    def get_task_name(self, task):
-        return self.runq_task[task]
+    def get_task_hash(self, tid):
+        return self.runtaskentries[tid].hash
 
-    def get_task_file(self, task):
-        return self.taskData.fn_index[self.runq_fnid[task]]
-
-    def get_task_hash(self, task):
-        return self.runq_hash[task]
-
-    def get_user_idstring(self, task, task_name_suffix = ""):
-        fn = self.taskData.fn_index[self.runq_fnid[task]]
-        taskname = self.runq_task[task] + task_name_suffix
-        return "%s, %s" % (fn, taskname)
+    def get_user_idstring(self, tid, task_name_suffix = ""):
+        return tid + task_name_suffix
 
     def get_short_user_idstring(self, task, task_name_suffix = ""):
-        fn = self.taskData.fn_index[self.runq_fnid[task]]
-        pn = self.dataCache.pkg_fn[fn]
-        taskname = self.runq_task[task] + task_name_suffix
+        (mc, fn, taskname, _) = split_tid_mcfn(task)
+        pn = self.dataCaches[mc].pkg_fn[fn]
+        taskname = taskname_from_tid(task) + task_name_suffix
         return "%s:%s" % (pn, taskname)
 
-
-    def get_task_id(self, fnid, taskname):
-        for listid in xrange(len(self.runq_fnid)):
-            if self.runq_fnid[listid] == fnid and self.runq_task[listid] == taskname:
-                return listid
-        return None
-
     def circular_depchains_handler(self, tasks):
         """
         Some tasks aren't buildable, likely due to circular dependency issues.
@@ -291,7 +311,7 @@
             """
             lowest = 0
             new_chain = []
-            for entry in xrange(len(chain)):
+            for entry in range(len(chain)):
                 if chain[entry] < chain[lowest]:
                     lowest = entry
             new_chain.extend(chain[lowest:])
@@ -304,7 +324,7 @@
             """
             if len(chain1) != len(chain2):
                 return False
-            for index in xrange(len(chain1)):
+            for index in range(len(chain1)):
                 if chain1[index] != chain2[index]:
                     return False
             return True
@@ -318,11 +338,11 @@
                     return True
             return False
 
-        def find_chains(taskid, prev_chain):
-            prev_chain.append(taskid)
+        def find_chains(tid, prev_chain):
+            prev_chain.append(tid)
             total_deps = []
-            total_deps.extend(self.runq_revdeps[taskid])
-            for revdep in self.runq_revdeps[taskid]:
+            total_deps.extend(self.runtaskentries[tid].revdeps)
+            for revdep in self.runtaskentries[tid].revdeps:
                 if revdep in prev_chain:
                     idx = prev_chain.index(revdep)
                     # To prevent duplicates, reorder the chain to start with the lowest taskid
@@ -333,7 +353,7 @@
                         valid_chains.append(new_chain)
                         msgs.append("Dependency loop #%d found:\n" % len(valid_chains))
                         for dep in new_chain:
-                            msgs.append("  Task %s (%s) (dependent Tasks %s)\n" % (dep, self.get_user_idstring(dep), self.runq_depends_names(dep)))
+                            msgs.append("  Task %s (dependent Tasks %s)\n" % (dep, self.runq_depends_names(self.runtaskentries[dep].depends)))
                         msgs.append("\n")
                     if len(valid_chains) > 10:
                         msgs.append("Aborted dependency loops search after 10 matches.\n")
@@ -354,7 +374,7 @@
                     if dep not in total_deps:
                         total_deps.append(dep)
 
-            explored_deps[taskid] = total_deps
+            explored_deps[tid] = total_deps
 
         for task in tasks:
             find_chains(task, [])
@@ -370,25 +390,25 @@
         possible to execute due to circular dependencies.
         """
 
-        numTasks = len(self.runq_fnid)
-        weight = []
-        deps_left = []
-        task_done = []
+        numTasks = len(self.runtaskentries)
+        weight = {}
+        deps_left = {}
+        task_done = {}
 
-        for listid in xrange(numTasks):
-            task_done.append(False)
-            weight.append(1)
-            deps_left.append(len(self.runq_revdeps[listid]))
+        for tid in self.runtaskentries:
+            task_done[tid] = False
+            weight[tid] = 1
+            deps_left[tid] = len(self.runtaskentries[tid].revdeps)
 
-        for listid in endpoints:
-            weight[listid] = 10
-            task_done[listid] = True
+        for tid in endpoints:
+            weight[tid] = 10
+            task_done[tid] = True
 
         while True:
             next_points = []
-            for listid in endpoints:
-                for revdep in self.runq_depends[listid]:
-                    weight[revdep] = weight[revdep] + weight[listid]
+            for tid in endpoints:
+                for revdep in self.runtaskentries[tid].depends:
+                    weight[revdep] = weight[revdep] + weight[tid]
                     deps_left[revdep] = deps_left[revdep] - 1
                     if deps_left[revdep] == 0:
                         next_points.append(revdep)
@@ -399,14 +419,15 @@
 
         # Circular dependency sanity check
         problem_tasks = []
-        for task in xrange(numTasks):
-            if task_done[task] is False or deps_left[task] != 0:
-                problem_tasks.append(task)
-                logger.debug(2, "Task %s (%s) is not buildable", task, self.get_user_idstring(task))
-                logger.debug(2, "(Complete marker was %s and the remaining dependency count was %s)\n", task_done[task], deps_left[task])
+        for tid in self.runtaskentries:
+            if task_done[tid] is False or deps_left[tid] != 0:
+                problem_tasks.append(tid)
+                logger.debug(2, "Task %s is not buildable", tid)
+                logger.debug(2, "(Complete marker was %s and the remaining dependency count was %s)\n", task_done[tid], deps_left[tid])
+            self.runtaskentries[tid].weight = weight[tid]
 
         if problem_tasks:
-            message = "Unbuildable tasks were found.\n"
+            message = "%s unbuildable tasks were found.\n" % len(problem_tasks)
             message = message + "These are usually caused by circular dependencies and any circular dependency chains found will be printed below. Increase the debug level to see a list of unbuildable tasks.\n\n"
             message = message + "Identifying dependency loops (this may take a short while)...\n"
             logger.error(message)
@@ -426,18 +447,24 @@
         to optimise the execution order.
         """
 
-        runq_build = []
+        runq_build = {}
         recursivetasks = {}
         recursiveitasks = {}
         recursivetasksselfref = set()
 
         taskData = self.taskData
 
-        if len(taskData.tasks_name) == 0:
+        found = False
+        for mc in self.taskData:
+            if len(taskData[mc].taskentries) > 0:
+                found = True
+                break
+        if not found:
             # Nothing to do
             return 0
 
-        logger.info("Preparing RunQueue")
+        self.init_progress_reporter.start()
+        self.init_progress_reporter.next_stage()
 
         # Step A - Work out a list of tasks to run
         #
@@ -450,161 +477,173 @@
         # process is repeated for each type of dependency (tdepends, deptask,
         # rdeptast, recrdeptask, idepends).
 
-        def add_build_dependencies(depids, tasknames, depends):
-            for depid in depids:
+        def add_build_dependencies(depids, tasknames, depends, mc):
+            for depname in depids:
                 # Won't be in build_targets if ASSUME_PROVIDED
-                if depid not in taskData.build_targets:
+                if depname not in taskData[mc].build_targets or not taskData[mc].build_targets[depname]:
                     continue
-                depdata = taskData.build_targets[depid][0]
+                depdata = taskData[mc].build_targets[depname][0]
                 if depdata is None:
                     continue
                 for taskname in tasknames:
-                    taskid = taskData.gettask_id_fromfnid(depdata, taskname)
-                    if taskid is not None:
-                        depends.add(taskid)
+                    t = depdata + ":" + taskname
+                    if t in taskData[mc].taskentries:
+                        depends.add(t)
 
-        def add_runtime_dependencies(depids, tasknames, depends):
-            for depid in depids:
-                if depid not in taskData.run_targets:
+        def add_runtime_dependencies(depids, tasknames, depends, mc):
+            for depname in depids:
+                if depname not in taskData[mc].run_targets or not taskData[mc].run_targets[depname]:
                     continue
-                depdata = taskData.run_targets[depid][0]
+                depdata = taskData[mc].run_targets[depname][0]
                 if depdata is None:
                     continue
                 for taskname in tasknames:
-                    taskid = taskData.gettask_id_fromfnid(depdata, taskname)
-                    if taskid is not None:
-                        depends.add(taskid)
+                    t = depdata + ":" + taskname
+                    if t in taskData[mc].taskentries:
+                        depends.add(t)
 
-        def add_resolved_dependencies(depids, tasknames, depends):
-            for depid in depids:
-                for taskname in tasknames:
-                    taskid = taskData.gettask_id_fromfnid(depid, taskname)
-                    if taskid is not None:
-                        depends.add(taskid)
+        def add_resolved_dependencies(mc, fn, tasknames, depends):
+            for taskname in tasknames:
+                tid = build_tid(mc, fn, taskname)
+                if tid in self.runtaskentries:
+                    depends.add(tid)
 
-        for task in xrange(len(taskData.tasks_name)):
-            depends = set()
-            fnid = taskData.tasks_fnid[task]
-            fn = taskData.fn_index[fnid]
-            task_deps = self.dataCache.task_deps[fn]
+        for mc in taskData:
+            for tid in taskData[mc].taskentries:
 
-            #logger.debug(2, "Processing %s:%s", fn, taskData.tasks_name[task])
+                (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+                #runtid = build_tid(mc, fn, taskname)
 
-            if fnid not in taskData.failed_fnids:
+                #logger.debug(2, "Processing %s,%s:%s", mc, fn, taskname)
+
+                depends = set()
+                task_deps = self.dataCaches[mc].task_deps[taskfn]
+
+                self.runtaskentries[tid] = RunTaskEntry()
+
+                if fn in taskData[mc].failed_fns:
+                    continue
 
                 # Resolve task internal dependencies
                 #
                 # e.g. addtask before X after Y
-                depends = set(taskData.tasks_tdepends[task])
+                for t in taskData[mc].taskentries[tid].tdepends:
+                    (_, depfn, deptaskname, _) = split_tid_mcfn(t)
+                    depends.add(build_tid(mc, depfn, deptaskname))
 
                 # Resolve 'deptask' dependencies
                 #
                 # e.g. do_sometask[deptask] = "do_someothertask"
                 # (makes sure sometask runs after someothertask of all DEPENDS)
-                if 'deptask' in task_deps and taskData.tasks_name[task] in task_deps['deptask']:
-                    tasknames = task_deps['deptask'][taskData.tasks_name[task]].split()
-                    add_build_dependencies(taskData.depids[fnid], tasknames, depends)
+                if 'deptask' in task_deps and taskname in task_deps['deptask']:
+                    tasknames = task_deps['deptask'][taskname].split()
+                    add_build_dependencies(taskData[mc].depids[taskfn], tasknames, depends, mc)
 
                 # Resolve 'rdeptask' dependencies
                 #
                 # e.g. do_sometask[rdeptask] = "do_someothertask"
                 # (makes sure sometask runs after someothertask of all RDEPENDS)
-                if 'rdeptask' in task_deps and taskData.tasks_name[task] in task_deps['rdeptask']:
-                    tasknames = task_deps['rdeptask'][taskData.tasks_name[task]].split()
-                    add_runtime_dependencies(taskData.rdepids[fnid], tasknames, depends)
+                if 'rdeptask' in task_deps and taskname in task_deps['rdeptask']:
+                    tasknames = task_deps['rdeptask'][taskname].split()
+                    add_runtime_dependencies(taskData[mc].rdepids[taskfn], tasknames, depends, mc)
 
                 # Resolve inter-task dependencies
                 #
                 # e.g. do_sometask[depends] = "targetname:do_someothertask"
                 # (makes sure sometask runs after targetname's someothertask)
-                idepends = taskData.tasks_idepends[task]
-                for (depid, idependtask) in idepends:
-                    if depid in taskData.build_targets and not depid in taskData.failed_deps:
+                idepends = taskData[mc].taskentries[tid].idepends
+                for (depname, idependtask) in idepends:
+                    if depname in taskData[mc].build_targets and taskData[mc].build_targets[depname] and not depname in taskData[mc].failed_deps:
                         # Won't be in build_targets if ASSUME_PROVIDED
-                        depdata = taskData.build_targets[depid][0]
+                        depdata = taskData[mc].build_targets[depname][0]
                         if depdata is not None:
-                            taskid = taskData.gettask_id_fromfnid(depdata, idependtask)
-                            if taskid is None:
-                                bb.msg.fatal("RunQueue", "Task %s in %s depends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, taskData.fn_index[depdata]))
-                            depends.add(taskid)
-                irdepends = taskData.tasks_irdepends[task]
-                for (depid, idependtask) in irdepends:
-                    if depid in taskData.run_targets:
+                            t = depdata + ":" + idependtask
+                            depends.add(t)
+                            if t not in taskData[mc].taskentries:
+                                bb.msg.fatal("RunQueue", "Task %s in %s depends upon non-existent task %s in %s" % (taskname, fn, idependtask, depdata))
+                irdepends = taskData[mc].taskentries[tid].irdepends
+                for (depname, idependtask) in irdepends:
+                    if depname in taskData[mc].run_targets:
                         # Won't be in run_targets if ASSUME_PROVIDED
-                        depdata = taskData.run_targets[depid][0]
+                        depdata = taskData[mc].run_targets[depname][0]
                         if depdata is not None:
-                            taskid = taskData.gettask_id_fromfnid(depdata, idependtask)
-                            if taskid is None:
-                                bb.msg.fatal("RunQueue", "Task %s in %s rdepends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, taskData.fn_index[depdata]))
-                            depends.add(taskid)
+                            t = depdata + ":" + idependtask
+                            depends.add(t)
+                            if t not in taskData[mc].taskentries:
+                                bb.msg.fatal("RunQueue", "Task %s in %s rdepends upon non-existent task %s in %s" % (taskname, fn, idependtask, depdata))
 
                 # Resolve recursive 'recrdeptask' dependencies (Part A)
                 #
                 # e.g. do_sometask[recrdeptask] = "do_someothertask"
                 # (makes sure sometask runs after someothertask of all DEPENDS, RDEPENDS and intertask dependencies, recursively)
                 # We cover the recursive part of the dependencies below
-                if 'recrdeptask' in task_deps and taskData.tasks_name[task] in task_deps['recrdeptask']:
-                    tasknames = task_deps['recrdeptask'][taskData.tasks_name[task]].split()
-                    recursivetasks[task] = tasknames
-                    add_build_dependencies(taskData.depids[fnid], tasknames, depends)
-                    add_runtime_dependencies(taskData.rdepids[fnid], tasknames, depends)
-                    if taskData.tasks_name[task] in tasknames:
-                        recursivetasksselfref.add(task)
+                if 'recrdeptask' in task_deps and taskname in task_deps['recrdeptask']:
+                    tasknames = task_deps['recrdeptask'][taskname].split()
+                    recursivetasks[tid] = tasknames
+                    add_build_dependencies(taskData[mc].depids[taskfn], tasknames, depends, mc)
+                    add_runtime_dependencies(taskData[mc].rdepids[taskfn], tasknames, depends, mc)
+                    if taskname in tasknames:
+                        recursivetasksselfref.add(tid)
 
-                    if 'recideptask' in task_deps and taskData.tasks_name[task] in task_deps['recideptask']:
-                        recursiveitasks[task] = []
-                        for t in task_deps['recideptask'][taskData.tasks_name[task]].split():
-                            newdep = taskData.gettask_id_fromfnid(fnid, t)
-                            recursiveitasks[task].append(newdep)
+                    if 'recideptask' in task_deps and taskname in task_deps['recideptask']:
+                        recursiveitasks[tid] = []
+                        for t in task_deps['recideptask'][taskname].split():
+                            newdep = build_tid(mc, fn, t)
+                            recursiveitasks[tid].append(newdep)
 
-            self.runq_fnid.append(taskData.tasks_fnid[task])
-            self.runq_task.append(taskData.tasks_name[task])
-            self.runq_depends.append(depends)
-            self.runq_revdeps.append(set())
-            self.runq_hash.append("")
+                self.runtaskentries[tid].depends = depends
 
-            runq_build.append(0)
+        #self.dump_data()
 
         # Resolve recursive 'recrdeptask' dependencies (Part B)
         #
         # e.g. do_sometask[recrdeptask] = "do_someothertask"
         # (makes sure sometask runs after someothertask of all DEPENDS, RDEPENDS and intertask dependencies, recursively)
-        # We need to do this separately since we need all of self.runq_depends to be complete before this is processed
+        # We need to do this separately since we need all of runtaskentries[*].depends to be complete before this is processed
+        self.init_progress_reporter.next_stage(len(recursivetasks))
         extradeps = {}
-        for task in recursivetasks:
-            extradeps[task] = set(self.runq_depends[task])
-            tasknames = recursivetasks[task]
+        for taskcounter, tid in enumerate(recursivetasks):
+            extradeps[tid] = set(self.runtaskentries[tid].depends)
+
+            tasknames = recursivetasks[tid]
             seendeps = set()
-            seenfnid = []
 
             def generate_recdeps(t):
                 newdeps = set()
-                add_resolved_dependencies([taskData.tasks_fnid[t]], tasknames, newdeps)
-                extradeps[task].update(newdeps)
+                (mc, fn, taskname, _) = split_tid_mcfn(t)
+                add_resolved_dependencies(mc, fn, tasknames, newdeps)
+                extradeps[tid].update(newdeps)
                 seendeps.add(t)
                 newdeps.add(t)
                 for i in newdeps:
-                    for n in self.runq_depends[i]:
+                    task = self.runtaskentries[i].task
+                    for n in self.runtaskentries[i].depends:
                         if n not in seendeps:
-                            generate_recdeps(n)
-            generate_recdeps(task)
+                             generate_recdeps(n)
+            generate_recdeps(tid)
 
-            if task in recursiveitasks:
-                for dep in recursiveitasks[task]:
+            if tid in recursiveitasks:
+                for dep in recursiveitasks[tid]:
                     generate_recdeps(dep)
+            self.init_progress_reporter.update(taskcounter)
 
         # Remove circular references so that do_a[recrdeptask] = "do_a do_b" can work
-        for task in recursivetasks:
-            extradeps[task].difference_update(recursivetasksselfref)
+        for tid in recursivetasks:
+            extradeps[tid].difference_update(recursivetasksselfref)
 
-        for task in xrange(len(taskData.tasks_name)):
+        for tid in self.runtaskentries:
+            task = self.runtaskentries[tid].task
             # Add in extra dependencies
-            if task in extradeps:
-                 self.runq_depends[task] = extradeps[task]
+            if tid in extradeps:
+                 self.runtaskentries[tid].depends = extradeps[tid]
             # Remove all self references
-            if task in self.runq_depends[task]:
-                logger.debug(2, "Task %s (%s %s) contains self reference! %s", task, taskData.fn_index[taskData.tasks_fnid[task]], taskData.tasks_name[task], self.runq_depends[task])
-                self.runq_depends[task].remove(task)
+            if tid in self.runtaskentries[tid].depends:
+                logger.debug(2, "Task %s contains self reference!", tid)
+                self.runtaskentries[tid].depends.remove(tid)
+
+        self.init_progress_reporter.next_stage()
+
+        #self.dump_data()
 
         # Step B - Mark all active tasks
         #
@@ -614,148 +653,146 @@
 
         logger.verbose("Marking Active Tasks")
 
-        def mark_active(listid, depth):
+        def mark_active(tid, depth):
             """
             Mark an item as active along with its depends
             (calls itself recursively)
             """
 
-            if runq_build[listid] == 1:
+            if tid in runq_build:
                 return
 
-            runq_build[listid] = 1
+            runq_build[tid] = 1
 
-            depends = self.runq_depends[listid]
+            depends = self.runtaskentries[tid].depends
             for depend in depends:
                 mark_active(depend, depth+1)
 
-        self.target_pairs = []
-        for target in self.targets:
-            targetid = taskData.getbuild_id(target[0])
+        self.target_tids = []
+        for (mc, target, task, fn) in self.targets:
 
-            if targetid not in taskData.build_targets:
+            if target not in taskData[mc].build_targets or not taskData[mc].build_targets[target]:
                 continue
 
-            if targetid in taskData.failed_deps:
+            if target in taskData[mc].failed_deps:
                 continue
 
-            fnid = taskData.build_targets[targetid][0]
-            fn = taskData.fn_index[fnid]
-            task = target[1]
             parents = False
             if task.endswith('-'):
                 parents = True
                 task = task[:-1]
 
-            self.target_pairs.append((fn, task))
-
-            if fnid in taskData.failed_fnids:
+            if fn in taskData[mc].failed_fns:
                 continue
 
-            if task not in taskData.tasks_lookup[fnid]:
+            # fn already has mc prefix
+            tid = fn + ":" + task
+            self.target_tids.append(tid)
+            if tid not in taskData[mc].taskentries:
                 import difflib
-                close_matches = difflib.get_close_matches(task, taskData.tasks_lookup[fnid], cutoff=0.7)
+                tasks = []
+                for x in taskData[mc].taskentries:
+                    if x.startswith(fn + ":"):
+                        tasks.append(taskname_from_tid(x))
+                close_matches = difflib.get_close_matches(task, tasks, cutoff=0.7)
                 if close_matches:
                     extra = ". Close matches:\n  %s" % "\n  ".join(close_matches)
                 else:
                     extra = ""
-                bb.msg.fatal("RunQueue", "Task %s does not exist for target %s%s" % (task, target[0], extra))
-  
+                bb.msg.fatal("RunQueue", "Task %s does not exist for target %s (%s)%s" % (task, target, tid, extra))
+
             # For tasks called "XXXX-", ony run their dependencies
-            listid = taskData.tasks_lookup[fnid][task]
             if parents:
-                for i in self.runq_depends[listid]:
+                for i in self.runtaskentries[tid].depends:
                     mark_active(i, 1)
             else:
-                mark_active(listid, 1)
+                mark_active(tid, 1)
+
+        self.init_progress_reporter.next_stage()
 
         # Step C - Prune all inactive tasks
         #
         # Once all active tasks are marked, prune the ones we don't need.
 
-        maps = []
         delcount = 0
-        for listid in xrange(len(self.runq_fnid)):
-            if runq_build[listid-delcount] == 1:
-                maps.append(listid-delcount)
-            else:
-                del self.runq_fnid[listid-delcount]
-                del self.runq_task[listid-delcount]
-                del self.runq_depends[listid-delcount]
-                del runq_build[listid-delcount]
-                del self.runq_revdeps[listid-delcount]
-                del self.runq_hash[listid-delcount]
-                delcount = delcount + 1
-                maps.append(-1)
+        for tid in list(self.runtaskentries.keys()):
+            if tid not in runq_build:
+                del self.runtaskentries[tid]
+                delcount += 1
+
+        self.init_progress_reporter.next_stage()
 
         #
         # Step D - Sanity checks and computation
         #
 
         # Check to make sure we still have tasks to run
-        if len(self.runq_fnid) == 0:
-            if not taskData.abort:
+        if len(self.runtaskentries) == 0:
+            if not taskData[''].abort:
                 bb.msg.fatal("RunQueue", "All buildable tasks have been run but the build is incomplete (--continue mode). Errors for the tasks that failed will have been printed above.")
             else:
                 bb.msg.fatal("RunQueue", "No active tasks and not in --continue mode?! Please report this bug.")
 
-        logger.verbose("Pruned %s inactive tasks, %s left", delcount, len(self.runq_fnid))
-
-        # Remap the dependencies to account for the deleted tasks
-        # Check we didn't delete a task we depend on
-        for listid in xrange(len(self.runq_fnid)):
-            newdeps = []
-            origdeps = self.runq_depends[listid]
-            for origdep in origdeps:
-                if maps[origdep] == -1:
-                    bb.msg.fatal("RunQueue", "Invalid mapping - Should never happen!")
-                newdeps.append(maps[origdep])
-            self.runq_depends[listid] = set(newdeps)
+        logger.verbose("Pruned %s inactive tasks, %s left", delcount, len(self.runtaskentries))
 
         logger.verbose("Assign Weightings")
 
+        self.init_progress_reporter.next_stage()
+
         # Generate a list of reverse dependencies to ease future calculations
-        for listid in xrange(len(self.runq_fnid)):
-            for dep in self.runq_depends[listid]:
-                self.runq_revdeps[dep].add(listid)
+        for tid in self.runtaskentries:
+            for dep in self.runtaskentries[tid].depends:
+                self.runtaskentries[dep].revdeps.add(tid)
+
+        self.init_progress_reporter.next_stage()
 
         # Identify tasks at the end of dependency chains
         # Error on circular dependency loops (length two)
         endpoints = []
-        for listid in xrange(len(self.runq_fnid)):
-            revdeps = self.runq_revdeps[listid]
+        for tid in self.runtaskentries:
+            revdeps = self.runtaskentries[tid].revdeps
             if len(revdeps) == 0:
-                endpoints.append(listid)
+                endpoints.append(tid)
             for dep in revdeps:
-                if dep in self.runq_depends[listid]:
-                    #self.dump_data(taskData)
-                    bb.msg.fatal("RunQueue", "Task %s (%s) has circular dependency on %s (%s)" % (taskData.fn_index[self.runq_fnid[dep]], self.runq_task[dep], taskData.fn_index[self.runq_fnid[listid]], self.runq_task[listid]))
+                if dep in self.runtaskentries[tid].depends:
+                    bb.msg.fatal("RunQueue", "Task %s has circular dependency on %s" % (tid, dep))
+
 
         logger.verbose("Compute totals (have %s endpoint(s))", len(endpoints))
 
+        self.init_progress_reporter.next_stage()
+
         # Calculate task weights
         # Check of higher length circular dependencies
         self.runq_weight = self.calculate_task_weights(endpoints)
 
+        self.init_progress_reporter.next_stage()
+
         # Sanity Check - Check for multiple tasks building the same provider
-        prov_list = {}
-        seen_fn = []
-        for task in xrange(len(self.runq_fnid)):
-            fn = taskData.fn_index[self.runq_fnid[task]]
-            if fn in seen_fn:
-                continue
-            seen_fn.append(fn)
-            for prov in self.dataCache.fn_provides[fn]:
-                if prov not in prov_list:
-                    prov_list[prov] = [fn]
-                elif fn not in prov_list[prov]:
-                    prov_list[prov].append(fn)
-        for prov in prov_list:
-            if len(prov_list[prov]) > 1 and prov not in self.multi_provider_whitelist:
+        for mc in self.dataCaches:
+            prov_list = {}
+            seen_fn = []
+            for tid in self.runtaskentries:
+                (tidmc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+                if taskfn in seen_fn:
+                    continue
+                if mc != tidmc:
+                    continue
+                seen_fn.append(taskfn)
+                for prov in self.dataCaches[mc].fn_provides[taskfn]:
+                    if prov not in prov_list:
+                        prov_list[prov] = [taskfn]
+                    elif taskfn not in prov_list[prov]:
+                        prov_list[prov].append(taskfn)
+            for prov in prov_list:
+                if len(prov_list[prov]) < 2:
+                    continue
+                if prov in self.multi_provider_whitelist:
+                    continue
                 seen_pn = []
                 # If two versions of the same PN are being built its fatal, we don't support it.
                 for fn in prov_list[prov]:
-                    pn = self.dataCache.pkg_fn[fn]
+                    pn = self.dataCaches[mc].pkg_fn[fn]
                     if pn not in seen_pn:
                         seen_pn.append(pn)
                     else:
@@ -770,15 +807,15 @@
                 commondeps = None
                 for provfn in prov_list[prov]:
                     deps = set()
-                    for task, fnid in enumerate(self.runq_fnid):
-                        fn = taskData.fn_index[fnid]
+                    for tid in self.runtaskentries:
+                        fn = fn_from_tid(tid)
                         if fn != provfn:
                             continue
-                        for dep in self.runq_revdeps[task]:
-                            fn = taskData.fn_index[self.runq_fnid[dep]]
+                        for dep in self.runtaskentries[tid].revdeps:
+                            fn = fn_from_tid(dep)
                             if fn == provfn:
                                 continue
-                            deps.add(self.get_short_user_idstring(dep))
+                            deps.add(dep)
                     if not commondeps:
                         commondeps = set(deps)
                     else:
@@ -796,16 +833,16 @@
                 commonprovs = None
                 commonrprovs = None
                 for provfn in prov_list[prov]:
-                    provides = set(self.dataCache.fn_provides[provfn])
+                    provides = set(self.dataCaches[mc].fn_provides[provfn])
                     rprovides = set()
-                    for rprovide in self.dataCache.rproviders:
-                        if provfn in self.dataCache.rproviders[rprovide]:
+                    for rprovide in self.dataCaches[mc].rproviders:
+                        if provfn in self.dataCaches[mc].rproviders[rprovide]:
                             rprovides.add(rprovide)
-                    for package in self.dataCache.packages:
-                        if provfn in self.dataCache.packages[package]:
+                    for package in self.dataCaches[mc].packages:
+                        if provfn in self.dataCaches[mc].packages[package]:
                             rprovides.add(package)
-                    for package in self.dataCache.packages_dynamic:
-                        if provfn in self.dataCache.packages_dynamic[package]:
+                    for package in self.dataCaches[mc].packages_dynamic:
+                        if provfn in self.dataCaches[mc].packages_dynamic[package]:
                             rprovides.add(package)
                     if not commonprovs:
                         commonprovs = set(provides)
@@ -824,35 +861,39 @@
                     msg += "\n%s has unique rprovides:\n  %s" % (provfn, "\n  ".join(rprovide_results[provfn] - commonrprovs))
 
                 if self.warn_multi_bb:
-                    logger.warn(msg)
+                    logger.warning(msg)
                 else:
                     logger.error(msg)
 
+        self.init_progress_reporter.next_stage()
+
         # Create a whitelist usable by the stamp checks
-        stampfnwhitelist = []
-        for entry in self.stampwhitelist.split():
-            entryid = self.taskData.getbuild_id(entry)
-            if entryid not in self.taskData.build_targets:
-                continue
-            fnid = self.taskData.build_targets[entryid][0]
-            fn = self.taskData.fn_index[fnid]
-            stampfnwhitelist.append(fn)
-        self.stampfnwhitelist = stampfnwhitelist
+        self.stampfnwhitelist = {}
+        for mc in self.taskData: 
+            self.stampfnwhitelist[mc] = []
+            for entry in self.stampwhitelist.split():
+                if entry not in self.taskData[mc].build_targets:
+                    continue
+                fn = self.taskData.build_targets[entry][0]
+                self.stampfnwhitelist[mc].append(fn)
+
+        self.init_progress_reporter.next_stage()
 
         # Iterate over the task list looking for tasks with a 'setscene' function
-        self.runq_setscene = []
+        self.runq_setscene_tids = []
         if not self.cooker.configuration.nosetscene:
-            for task in range(len(self.runq_fnid)):
-                setscene = taskData.gettask_id(self.taskData.fn_index[self.runq_fnid[task]], self.runq_task[task] + "_setscene", False)
-                if not setscene:
+            for tid in self.runtaskentries:
+                (mc, fn, taskname, _) = split_tid_mcfn(tid)
+                setscenetid = fn + ":" + taskname + "_setscene"
+                if setscenetid not in taskData[mc].taskentries:
                     continue
-                self.runq_setscene.append(task)
+                self.runq_setscene_tids.append(tid)
 
-        def invalidate_task(fn, taskname, error_nostamp):
-            taskdep = self.dataCache.task_deps[fn]
-            fnid = self.taskData.getfn_id(fn)
-            if taskname not in taskData.tasks_lookup[fnid]:
-                logger.warn("Task %s does not exist, invalidating this task will have no effect" % taskname)
+        def invalidate_task(tid, error_nostamp):
+            (mc, fn, taskname, _) = split_tid_mcfn(tid)
+            taskdep = self.dataCaches[mc].task_deps[fn]
+            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']:
                 if error_nostamp:
                     bb.fatal("Task %s is marked nostamp, cannot invalidate this task" % taskname)
@@ -860,80 +901,84 @@
                     bb.debug(1, "Task %s is marked nostamp, cannot invalidate this task" % taskname)
             else:
                 logger.verbose("Invalidate task %s, %s", taskname, fn)
-                bb.parse.siggen.invalidate_task(taskname, self.dataCache, fn)
+                bb.parse.siggen.invalidate_task(taskname, self.dataCaches[mc], fn)
+
+        self.init_progress_reporter.next_stage()
 
         # Invalidate task if force mode active
         if self.cooker.configuration.force:
-            for (fn, target) in self.target_pairs:
-                invalidate_task(fn, target, False)
+            for tid in self.target_tids:
+                invalidate_task(tid, False)
 
         # Invalidate task if invalidate mode active
         if self.cooker.configuration.invalidate_stamp:
-            for (fn, target) in self.target_pairs:
+            for tid in self.target_tids:
+                fn = fn_from_tid(tid)
                 for st in self.cooker.configuration.invalidate_stamp.split(','):
                     if not st.startswith("do_"):
                         st = "do_%s" % st
-                    invalidate_task(fn, st, True)
+                    invalidate_task(fn + ":" + st, True)
+
+        self.init_progress_reporter.next_stage()
 
         # Create and print to the logs a virtual/xxxx -> PN (fn) table
-        virtmap = taskData.get_providermap(prefix="virtual/")
-        virtpnmap = {}
-        for v in virtmap:
-            virtpnmap[v] = self.dataCache.pkg_fn[virtmap[v]]
-            bb.debug(2, "%s resolved to: %s (%s)" % (v, virtpnmap[v], virtmap[v]))
-        if hasattr(bb.parse.siggen, "tasks_resolved"):
-            bb.parse.siggen.tasks_resolved(virtmap, virtpnmap, self.dataCache)
+        for mc in taskData:
+            virtmap = taskData[mc].get_providermap(prefix="virtual/")
+            virtpnmap = {}
+            for v in virtmap:
+                virtpnmap[v] = self.dataCaches[mc].pkg_fn[virtmap[v]]
+                bb.debug(2, "%s resolved to: %s (%s)" % (v, virtpnmap[v], virtmap[v]))
+            if hasattr(bb.parse.siggen, "tasks_resolved"):
+                bb.parse.siggen.tasks_resolved(virtmap, virtpnmap, self.dataCaches[mc])
+
+        self.init_progress_reporter.next_stage()
 
         # Iterate over the task list and call into the siggen code
         dealtwith = set()
-        todeal = set(range(len(self.runq_fnid)))
+        todeal = set(self.runtaskentries)
         while len(todeal) > 0:
-            for task in todeal.copy():
-                if len(self.runq_depends[task] - dealtwith) == 0:
-                    dealtwith.add(task)
-                    todeal.remove(task)
+            for tid in todeal.copy():
+                if len(self.runtaskentries[tid].depends - dealtwith) == 0:
+                    dealtwith.add(tid)
+                    todeal.remove(tid)
                     procdep = []
-                    for dep in self.runq_depends[task]:
-                        procdep.append(self.taskData.fn_index[self.runq_fnid[dep]] + "." + self.runq_task[dep])
-                    self.runq_hash[task] = bb.parse.siggen.get_taskhash(self.taskData.fn_index[self.runq_fnid[task]], self.runq_task[task], procdep, self.dataCache)
+                    for dep in self.runtaskentries[tid].depends:
+                        procdep.append(fn_from_tid(dep) + "." + taskname_from_tid(dep))
+                    (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+                    self.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(taskfn, taskname, procdep, self.dataCaches[mc])
+                    task = self.runtaskentries[tid].task
 
         bb.parse.siggen.writeout_file_checksum_cache()
-        return len(self.runq_fnid)
 
-    def dump_data(self, taskQueue):
+        #self.dump_data()
+        return len(self.runtaskentries)
+
+    def dump_data(self):
         """
         Dump some debug information on the internal data structures
         """
         logger.debug(3, "run_tasks:")
-        for task in xrange(len(self.rqdata.runq_task)):
-            logger.debug(3, " (%s)%s - %s: %s   Deps %s RevDeps %s", task,
-                         taskQueue.fn_index[self.rqdata.runq_fnid[task]],
-                         self.rqdata.runq_task[task],
-                         self.rqdata.runq_weight[task],
-                         self.rqdata.runq_depends[task],
-                         self.rqdata.runq_revdeps[task])
+        for tid in self.runtaskentries:
+            logger.debug(3, " %s: %s   Deps %s RevDeps %s", tid,
+                         self.runtaskentries[tid].weight,
+                         self.runtaskentries[tid].depends,
+                         self.runtaskentries[tid].revdeps)
 
-        logger.debug(3, "sorted_tasks:")
-        for task1 in xrange(len(self.rqdata.runq_task)):
-            if task1 in self.prio_map:
-                task = self.prio_map[task1]
-                logger.debug(3, " (%s)%s - %s: %s   Deps %s RevDeps %s", task,
-                           taskQueue.fn_index[self.rqdata.runq_fnid[task]],
-                           self.rqdata.runq_task[task],
-                           self.rqdata.runq_weight[task],
-                           self.rqdata.runq_depends[task],
-                           self.rqdata.runq_revdeps[task])
+class RunQueueWorker():
+    def __init__(self, process, pipe):
+        self.process = process
+        self.pipe = pipe
 
 class RunQueue:
-    def __init__(self, cooker, cfgData, dataCache, taskData, targets):
+    def __init__(self, cooker, cfgData, dataCaches, taskData, targets):
 
         self.cooker = cooker
         self.cfgData = cfgData
-        self.rqdata = RunQueueData(self, cooker, cfgData, dataCache, taskData, targets)
+        self.rqdata = RunQueueData(self, cooker, cfgData, dataCaches, taskData, targets)
 
         self.stamppolicy = cfgData.getVar("BB_STAMP_POLICY", True) or "perfile"
         self.hashvalidate = cfgData.getVar("BB_HASHCHECK_FUNCTION", True) or None
-        self.setsceneverify = cfgData.getVar("BB_SETSCENE_VERIFY_FUNCTION", True) or None
+        self.setsceneverify = cfgData.getVar("BB_SETSCENE_VERIFY_FUNCTION2", True) or None
         self.depvalidate = cfgData.getVar("BB_SETSCENE_DEPVALID", True) or None
 
         self.state = runQueuePrepare
@@ -942,12 +987,10 @@
         self.dm = monitordisk.diskMonitor(cfgData)
 
         self.rqexe = None
-        self.worker = None
-        self.workerpipe = None
-        self.fakeworker = None
-        self.fakeworkerpipe = None
+        self.worker = {}
+        self.fakeworker = {}
 
-    def _start_worker(self, fakeroot = False, rqexec = None):
+    def _start_worker(self, mc, fakeroot = False, rqexec = None):
         logger.debug(1, "Starting bitbake-worker")
         magic = "decafbad"
         if self.cooker.configuration.profile:
@@ -965,13 +1008,17 @@
         bb.utils.nonblockingfd(worker.stdout)
         workerpipe = runQueuePipe(worker.stdout, None, self.cfgData, self, rqexec)
 
+        runqhash = {}
+        for tid in self.rqdata.runtaskentries:
+            runqhash[tid] = self.rqdata.runtaskentries[tid].hash
+
         workerdata = {
-            "taskdeps" : self.rqdata.dataCache.task_deps,
-            "fakerootenv" : self.rqdata.dataCache.fakerootenv,
-            "fakerootdirs" : self.rqdata.dataCache.fakerootdirs,
-            "fakerootnoenv" : self.rqdata.dataCache.fakerootnoenv,
+            "taskdeps" : self.rqdata.dataCaches[mc].task_deps,
+            "fakerootenv" : self.rqdata.dataCaches[mc].fakerootenv,
+            "fakerootdirs" : self.rqdata.dataCaches[mc].fakerootdirs,
+            "fakerootnoenv" : self.rqdata.dataCaches[mc].fakerootnoenv,
             "sigdata" : bb.parse.siggen.get_taskdata(),
-            "runq_hash" : self.rqdata.runq_hash,
+            "runq_hash" : runqhash,
             "logdefaultdebug" : bb.msg.loggerDefaultDebugLevel,
             "logdefaultverbose" : bb.msg.loggerDefaultVerbose,
             "logdefaultverboselogs" : bb.msg.loggerVerboseLogs,
@@ -982,61 +1029,65 @@
             "time" : self.cfgData.getVar("TIME", True),
         }
 
-        worker.stdin.write("<cookerconfig>" + pickle.dumps(self.cooker.configuration) + "</cookerconfig>")
-        worker.stdin.write("<workerdata>" + pickle.dumps(workerdata) + "</workerdata>")
+        worker.stdin.write(b"<cookerconfig>" + pickle.dumps(self.cooker.configuration) + b"</cookerconfig>")
+        worker.stdin.write(b"<workerdata>" + pickle.dumps(workerdata) + b"</workerdata>")
         worker.stdin.flush()
 
-        return worker, workerpipe
+        return RunQueueWorker(worker, workerpipe)
 
-    def _teardown_worker(self, worker, workerpipe):
+    def _teardown_worker(self, worker):
         if not worker:
             return
         logger.debug(1, "Teardown for bitbake-worker")
         try:
-           worker.stdin.write("<quit></quit>")
-           worker.stdin.flush()
+           worker.process.stdin.write(b"<quit></quit>")
+           worker.process.stdin.flush()
+           worker.process.stdin.close()
         except IOError:
            pass
-        while worker.returncode is None:
-            workerpipe.read()
-            worker.poll()
-        while workerpipe.read():
+        while worker.process.returncode is None:
+            worker.pipe.read()
+            worker.process.poll()
+        while worker.pipe.read():
             continue
-        workerpipe.close()
+        worker.pipe.close()
 
     def start_worker(self):
         if self.worker:
             self.teardown_workers()
         self.teardown = False
-        self.worker, self.workerpipe = self._start_worker()
+        for mc in self.rqdata.dataCaches:
+            self.worker[mc] = self._start_worker(mc)
 
     def start_fakeworker(self, rqexec):
         if not self.fakeworker:
-            self.fakeworker, self.fakeworkerpipe = self._start_worker(True, rqexec)
+            for mc in self.rqdata.dataCaches:
+                self.fakeworker[mc] = self._start_worker(mc, True, rqexec)
 
     def teardown_workers(self):
         self.teardown = True
-        self._teardown_worker(self.worker, self.workerpipe)
-        self.worker = None
-        self.workerpipe = None
-        self._teardown_worker(self.fakeworker, self.fakeworkerpipe)
-        self.fakeworker = None
-        self.fakeworkerpipe = None
+        for mc in self.worker:
+            self._teardown_worker(self.worker[mc])
+        self.worker = {}
+        for mc in self.fakeworker:
+            self._teardown_worker(self.fakeworker[mc])
+        self.fakeworker = {}
 
     def read_workers(self):
-        self.workerpipe.read()
-        if self.fakeworkerpipe:
-            self.fakeworkerpipe.read()
+        for mc in self.worker:
+            self.worker[mc].pipe.read()
+        for mc in self.fakeworker:
+            self.fakeworker[mc].pipe.read()
 
     def active_fds(self):
         fds = []
-        if self.workerpipe:
-            fds.append(self.workerpipe.input)
-        if self.fakeworkerpipe:
-            fds.append(self.fakeworkerpipe.input)
+        for mc in self.worker:
+            fds.append(self.worker[mc].pipe.input)
+        for mc in self.fakeworker:
+            fds.append(self.fakeworker[mc].pipe.input)
         return fds
 
-    def check_stamp_task(self, task, taskname = None, recurse = False, cache = None):
+    def check_stamp_task(self, tid, taskname = None, recurse = False, cache = None):
         def get_timestamp(f):
             try:
                 if not os.access(f, os.F_OK):
@@ -1045,26 +1096,26 @@
             except:
                 return None
 
+        (mc, fn, tn, taskfn) = split_tid_mcfn(tid)
+        if taskname is None:
+            taskname = tn
+
         if self.stamppolicy == "perfile":
             fulldeptree = False
         else:
             fulldeptree = True
             stampwhitelist = []
             if self.stamppolicy == "whitelist":
-                stampwhitelist = self.rqdata.stampfnwhitelist
+                stampwhitelist = self.rqdata.stampfnwhitelist[mc]
 
-        fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
-        if taskname is None:
-            taskname = self.rqdata.runq_task[task]
-
-        stampfile = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
+        stampfile = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn)
 
         # If the stamp is missing, it's not current
         if not os.access(stampfile, os.F_OK):
             logger.debug(2, "Stampfile %s not available", stampfile)
             return False
         # If it's a 'nostamp' task, it's not current
-        taskdep = self.rqdata.dataCache.task_deps[fn]
+        taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
         if 'nostamp' in taskdep and taskname in taskdep['nostamp']:
             logger.debug(2, "%s.%s is nostamp\n", fn, taskname)
             return False
@@ -1077,23 +1128,26 @@
 
         iscurrent = True
         t1 = get_timestamp(stampfile)
-        for dep in self.rqdata.runq_depends[task]:
+        for dep in self.rqdata.runtaskentries[tid].depends:
             if iscurrent:
-                fn2 = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[dep]]
-                taskname2 = self.rqdata.runq_task[dep]
-                stampfile2 = bb.build.stampfile(taskname2, self.rqdata.dataCache, fn2)
-                stampfile3 = bb.build.stampfile(taskname2 + "_setscene", self.rqdata.dataCache, fn2)
+                (mc2, fn2, taskname2, taskfn2) = split_tid_mcfn(dep)
+                stampfile2 = bb.build.stampfile(taskname2, self.rqdata.dataCaches[mc2], taskfn2)
+                stampfile3 = bb.build.stampfile(taskname2 + "_setscene", self.rqdata.dataCaches[mc2], taskfn2)
                 t2 = get_timestamp(stampfile2)
                 t3 = get_timestamp(stampfile3)
+                if t3 and not t2:
+                    continue
                 if t3 and t3 > t2:
-                   continue
+                    continue
                 if fn == fn2 or (fulldeptree and fn2 not in stampwhitelist):
                     if not t2:
                         logger.debug(2, 'Stampfile %s does not exist', stampfile2)
                         iscurrent = False
+                        break
                     if t1 < t2:
                         logger.debug(2, 'Stampfile %s < %s', stampfile, stampfile2)
                         iscurrent = False
+                        break
                     if recurse and iscurrent:
                         if dep in cache:
                             iscurrent = cache[dep]
@@ -1103,7 +1157,7 @@
                             iscurrent = self.check_stamp_task(dep, recurse=True, cache=cache)
                             cache[dep] = iscurrent
         if recurse:
-            cache[task] = iscurrent
+            cache[tid] = iscurrent
         return iscurrent
 
     def _execute_runqueue(self):
@@ -1117,19 +1171,31 @@
 
         if self.state is runQueuePrepare:
             self.rqexe = RunQueueExecuteDummy(self)
+            # NOTE: if you add, remove or significantly refactor the stages of this
+            # process then you should recalculate the weightings here. This is quite
+            # easy to do - just change the next line temporarily to pass debug=True as
+            # the last parameter and you'll get a printout of the weightings as well
+            # as a map to the lines where next_stage() was called. Of course this isn't
+            # critical, but it helps to keep the progress reporting accurate.
+            self.rqdata.init_progress_reporter = bb.progress.MultiStageProcessProgressReporter(self.cooker.data,
+                                                            "Initialising tasks",
+                                                            [43, 967, 4, 3, 1, 5, 3, 7, 13, 1, 2, 1, 1, 246, 35, 1, 38, 1, 35, 2, 338, 204, 142, 3, 3, 37, 244])
             if self.rqdata.prepare() == 0:
                 self.state = runQueueComplete
             else:
                 self.state = runQueueSceneInit
+                self.rqdata.init_progress_reporter.next_stage()
 
-                # we are ready to run, see if any UI client needs the dependency info
-                if bb.cooker.CookerFeatures.SEND_DEPENDS_TREE in self.cooker.featureset:
-                    depgraph = self.cooker.buildDependTree(self, self.rqdata.taskData)
-                    bb.event.fire(bb.event.DepTreeGenerated(depgraph), self.cooker.data)
+                # we are ready to run,  emit dependency info to any UI or class which
+                # needs it
+                depgraph = self.cooker.buildDependTree(self, self.rqdata.taskData)
+                self.rqdata.init_progress_reporter.next_stage()
+                bb.event.fire(bb.event.DepTreeGenerated(depgraph), self.cooker.data)
 
         if self.state is runQueueSceneInit:
             dump = self.cooker.configuration.dump_signatures
             if dump:
+                self.rqdata.init_progress_reporter.finish()
                 if 'printdiff' in dump:
                     invalidtasks = self.print_diffscenetasks()
                 self.dump_signatures(dump)
@@ -1137,7 +1203,9 @@
                     self.write_diffscenetasks(invalidtasks)
                 self.state = runQueueComplete
             else:
+                self.rqdata.init_progress_reporter.next_stage()
                 self.start_worker()
+                self.rqdata.init_progress_reporter.next_stage()
                 self.rqexe = RunQueueExecuteScenequeue(self)
 
         if self.state in [runQueueSceneRun, runQueueRunning, runQueueCleanUp]:
@@ -1150,6 +1218,8 @@
             if self.cooker.configuration.setsceneonly:
                 self.state = runQueueComplete
             else:
+                # Just in case we didn't setscene
+                self.rqdata.init_progress_reporter.finish()
                 logger.info("Executing RunQueue Tasks")
                 self.rqexe = RunQueueExecuteTasks(self)
                 self.state = runQueueRunning
@@ -1169,10 +1239,11 @@
                 logger.info("Tasks Summary: Attempted %d tasks of which %d didn't need to be rerun and all succeeded.", self.rqexe.stats.completed, self.rqexe.stats.skipped)
 
         if self.state is runQueueFailed:
-            if not self.rqdata.taskData.tryaltconfigs:
-                raise bb.runqueue.TaskFailure(self.rqexe.failed_fnids)
-            for fnid in self.rqexe.failed_fnids:
-                self.rqdata.taskData.fail_fnid(fnid)
+            if not self.rqdata.taskData[''].tryaltconfigs:
+                raise bb.runqueue.TaskFailure(self.rqexe.failed_tids)
+            for tid in self.rqexe.failed_tids:
+                (mc, fn, tn, _) = split_tid_mcfn(tid)
+                self.rqdata.taskData[mc].fail_fn(fn)
             self.rqdata.reset()
 
         if self.state is runQueueComplete:
@@ -1197,8 +1268,8 @@
                 pass
             self.state = runQueueComplete
             raise
-        except:
-            logger.error("An uncaught exception occured in runqueue, please see the failure below:")
+        except Exception as err:
+            logger.exception("An uncaught exception occurred in runqueue")
             try:
                 self.teardown_workers()
             except:
@@ -1219,13 +1290,14 @@
     def dump_signatures(self, options):
         done = set()
         bb.note("Reparsing files to collect dependency data")
-        for task in range(len(self.rqdata.runq_fnid)):
-            if self.rqdata.runq_fnid[task] not in done:
-                fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
-                the_data = bb.cache.Cache.loadDataFull(fn, self.cooker.collection.get_file_appends(fn), self.cooker.data)
-                done.add(self.rqdata.runq_fnid[task])
+        bb_cache = bb.cache.NoCache(self.cooker.databuilder)
+        for tid in self.rqdata.runtaskentries:
+            fn = fn_from_tid(tid)
+            if fn not in done:
+                the_data = bb_cache.loadDataFull(fn, self.cooker.collection.get_file_appends(fn))
+                done.add(fn)
 
-        bb.parse.siggen.dump_sigs(self.rqdata.dataCache, options)
+        bb.parse.siggen.dump_sigs(self.rqdata.dataCaches, options)
 
         return
 
@@ -1241,20 +1313,19 @@
         stamppresent = []
         valid_new = set()
 
-        for task in xrange(len(self.rqdata.runq_fnid)):
-            fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
-            taskname = self.rqdata.runq_task[task]
-            taskdep = self.rqdata.dataCache.task_deps[fn]
+        for tid in self.rqdata.runtaskentries:
+            (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+            taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
 
             if 'noexec' in taskdep and taskname in taskdep['noexec']:
-                noexec.append(task)
+                noexec.append(tid)
                 continue
 
             sq_fn.append(fn)
-            sq_hashfn.append(self.rqdata.dataCache.hashfn[fn])
-            sq_hash.append(self.rqdata.runq_hash[task])
+            sq_hashfn.append(self.rqdata.dataCaches[mc].hashfn[fn])
+            sq_hash.append(self.rqdata.runtaskentries[tid].hash)
             sq_taskname.append(taskname)
-            sq_task.append(task)
+            sq_task.append(tid)
         locs = { "sq_fn" : sq_fn, "sq_task" : sq_taskname, "sq_hash" : sq_hash, "sq_hashfn" : sq_hashfn, "d" : self.cooker.expanded_data }
         try:
             call = self.hashvalidate + "(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=True)"
@@ -1269,13 +1340,13 @@
         # Tasks which are both setscene and noexec never care about dependencies
         # We therefore find tasks which are setscene and noexec and mark their
         # unique dependencies as valid.
-        for task in noexec:
-            if task not in self.rqdata.runq_setscene:
+        for tid in noexec:
+            if tid not in self.rqdata.runq_setscene_tids:
                 continue
-            for dep in self.rqdata.runq_depends[task]:
+            for dep in self.rqdata.runtaskentries[tid].depends:
                 hasnoexecparents = True
-                for dep2 in self.rqdata.runq_revdeps[dep]:
-                    if dep2 in self.rqdata.runq_setscene and dep2 in noexec:
+                for dep2 in self.rqdata.runtaskentries[dep].revdeps:
+                    if dep2 in self.rqdata.runq_setscene_tids and dep2 in noexec:
                         continue
                     hasnoexecparents = False
                     break
@@ -1283,30 +1354,30 @@
                     valid_new.add(dep)
 
         invalidtasks = set()
-        for task in xrange(len(self.rqdata.runq_fnid)):
-            if task not in valid_new and task not in noexec:
-                invalidtasks.add(task)
+        for tid in self.rqdata.runtaskentries:
+            if tid not in valid_new and tid not in noexec:
+                invalidtasks.add(tid)
 
         found = set()
         processed = set()
-        for task in invalidtasks:
-            toprocess = set([task])
+        for tid in invalidtasks:
+            toprocess = set([tid])
             while toprocess:
                 next = set()
                 for t in toprocess:
-                    for dep in self.rqdata.runq_depends[t]:
+                    for dep in self.rqdata.runtaskentries[t].depends:
                         if dep in invalidtasks:
-                            found.add(task)
+                            found.add(tid)
                         if dep not in processed:
                             processed.add(dep)
                             next.add(dep)
                 toprocess = next
-                if task in found:
+                if tid in found:
                     toprocess = set()
 
         tasklist = []
-        for task in invalidtasks.difference(found):
-            tasklist.append(self.rqdata.get_user_idstring(task))
+        for tid in invalidtasks.difference(found):
+            tasklist.append(tid)
 
         if tasklist:
             bb.plain("The differences between the current build and any cached tasks start at the following tasks:\n" + "\n".join(tasklist))
@@ -1330,11 +1401,10 @@
             return recout
 
 
-        for task in invalidtasks:
-            fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
-            pn = self.rqdata.dataCache.pkg_fn[fn]
-            taskname = self.rqdata.runq_task[task]
-            h = self.rqdata.runq_hash[task]
+        for tid in invalidtasks:
+            (mc, fn, taskname, _) = split_tid_mcfn(tid)
+            pn = self.rqdata.dataCaches[mc].pkg_fn[fn]
+            h = self.rqdata.runtaskentries[tid].hash
             matches = bb.siggen.find_siginfo(pn, taskname, [], self.cfgData)
             match = None
             for m in matches:
@@ -1342,7 +1412,7 @@
                     match = m
             if match is None:
                 bb.fatal("Can't find a task we're supposed to have written out? (hash: %s)?" % h)
-            matches = {k : v for k, v in matches.iteritems() if h not in k}
+            matches = {k : v for k, v in iter(matches.items()) if h not in k}
             if matches:
                 latestmatch = sorted(matches.keys(), key=lambda f: matches[f])[-1]
                 prevh = __find_md5__.search(latestmatch).group(0)
@@ -1360,19 +1430,20 @@
         self.number_tasks = int(self.cfgData.getVar("BB_NUMBER_THREADS", True) or 1)
         self.scheduler = self.cfgData.getVar("BB_SCHEDULER", True) or "speed"
 
-        self.runq_buildable = []
-        self.runq_running = []
-        self.runq_complete = []
+        self.runq_buildable = set()
+        self.runq_running = set()
+        self.runq_complete = set()
 
         self.build_stamps = {}
         self.build_stamps2 = []
-        self.failed_fnids = []
+        self.failed_tids = []
 
         self.stampcache = {}
 
-        rq.workerpipe.setrunqueueexec(self)
-        if rq.fakeworkerpipe:
-            rq.fakeworkerpipe.setrunqueueexec(self)
+        for mc in rq.worker:
+            rq.worker[mc].pipe.setrunqueueexec(self)
+        for mc in rq.fakeworker:
+            rq.fakeworker[mc].pipe.setrunqueueexec(self)
 
         if self.number_tasks <= 0:
              bb.fatal("Invalid BB_NUMBER_THREADS %s" % self.number_tasks)
@@ -1391,18 +1462,22 @@
         return True
 
     def finish_now(self):
-
-        for worker in [self.rq.worker, self.rq.fakeworker]:
-            if not worker:
-                continue
+        for mc in self.rq.worker:
             try:
-                worker.stdin.write("<finishnow></finishnow>")
-                worker.stdin.flush()
+                self.rq.worker[mc].process.stdin.write(b"<finishnow></finishnow>")
+                self.rq.worker[mc].process.stdin.flush()
+            except IOError:
+                # worker must have died?
+                pass
+        for mc in self.rq.fakeworker:
+            try:
+                self.rq.fakeworker[mc].process.stdin.write(b"<finishnow></finishnow>")
+                self.rq.fakeworker[mc].process.stdin.flush()
             except IOError:
                 # worker must have died?
                 pass
 
-        if len(self.failed_fnids) != 0:
+        if len(self.failed_tids) != 0:
             self.rq.state = runQueueFailed
             return
 
@@ -1417,7 +1492,7 @@
             self.rq.read_workers()
             return self.rq.active_fds()
 
-        if len(self.failed_fnids) != 0:
+        if len(self.failed_tids) != 0:
             self.rq.state = runQueueFailed
             return True
 
@@ -1431,13 +1506,8 @@
         taskdata = {}
         taskdeps.add(task)
         for dep in taskdeps:
-            if setscene:
-                depid = self.rqdata.runq_setscene[dep]
-            else:
-                depid = dep
-            fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[depid]]
-            pn = self.rqdata.dataCache.pkg_fn[fn]
-            taskname = self.rqdata.runq_task[depid]
+            (mc, fn, taskname, _) = split_tid_mcfn(dep)
+            pn = self.rqdata.dataCaches[mc].pkg_fn[fn]
             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 }
@@ -1457,34 +1527,32 @@
     def __init__(self, rq):
         RunQueueExecute.__init__(self, rq)
 
-        self.stats = RunQueueStats(len(self.rqdata.runq_fnid))
+        self.stats = RunQueueStats(len(self.rqdata.runtaskentries))
 
         self.stampcache = {}
 
         initial_covered = self.rq.scenequeue_covered.copy()
 
         # Mark initial buildable tasks
-        for task in xrange(self.stats.total):
-            self.runq_running.append(0)
-            self.runq_complete.append(0)
-            if len(self.rqdata.runq_depends[task]) == 0:
-                self.runq_buildable.append(1)
-            else:
-                self.runq_buildable.append(0)
-            if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered):
-                self.rq.scenequeue_covered.add(task)
+        for tid in self.rqdata.runtaskentries:
+            if len(self.rqdata.runtaskentries[tid].depends) == 0:
+                self.runq_buildable.add(tid)
+            if len(self.rqdata.runtaskentries[tid].revdeps) > 0 and self.rqdata.runtaskentries[tid].revdeps.issubset(self.rq.scenequeue_covered):
+                self.rq.scenequeue_covered.add(tid)
 
         found = True
         while found:
             found = False
-            for task in xrange(self.stats.total):
-                if task in self.rq.scenequeue_covered:
+            for tid in self.rqdata.runtaskentries:
+                if tid in self.rq.scenequeue_covered:
                     continue
-                logger.debug(1, 'Considering %s (%s): %s' % (task, self.rqdata.get_user_idstring(task), str(self.rqdata.runq_revdeps[task])))
+                logger.debug(1, 'Considering %s: %s' % (tid, str(self.rqdata.runtaskentries[tid].revdeps)))
 
-                if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered):
+                if len(self.rqdata.runtaskentries[tid].revdeps) > 0 and self.rqdata.runtaskentries[tid].revdeps.issubset(self.rq.scenequeue_covered):
+                    if tid in self.rq.scenequeue_notcovered:
+                        continue
                     found = True
-                    self.rq.scenequeue_covered.add(task)
+                    self.rq.scenequeue_covered.add(tid)
 
         logger.debug(1, 'Skip list (pre setsceneverify) %s', sorted(self.rq.scenequeue_covered))
 
@@ -1492,35 +1560,32 @@
         covered_remove = set()
         if self.rq.setsceneverify:
             invalidtasks = []
-            for task in xrange(len(self.rqdata.runq_task)):
-                fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
-                taskname = self.rqdata.runq_task[task]
-                taskdep = self.rqdata.dataCache.task_deps[fn]
-
+            tasknames = {}
+            fns = {}
+            for tid in self.rqdata.runtaskentries:
+                (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+                taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
+                fns[tid] = taskfn
+                tasknames[tid] = taskname
                 if 'noexec' in taskdep and taskname in taskdep['noexec']:
                     continue
-                if self.rq.check_stamp_task(task, taskname + "_setscene", cache=self.stampcache):
-                    logger.debug(2, 'Setscene stamp current for task %s(%s)', task, self.rqdata.get_user_idstring(task))
+                if self.rq.check_stamp_task(tid, taskname + "_setscene", cache=self.stampcache):
+                    logger.debug(2, 'Setscene stamp current for task %s', tid)
                     continue
-                if self.rq.check_stamp_task(task, taskname, recurse = True, cache=self.stampcache):
-                    logger.debug(2, 'Normal stamp current for task %s(%s)', task, self.rqdata.get_user_idstring(task))
+                if self.rq.check_stamp_task(tid, taskname, recurse = True, cache=self.stampcache):
+                    logger.debug(2, 'Normal stamp current for task %s', tid)
                     continue
-                invalidtasks.append(task)
+                invalidtasks.append(tid)
 
-            call = self.rq.setsceneverify + "(covered, tasknames, fnids, fns, d, invalidtasks=invalidtasks)"
-            call2 = self.rq.setsceneverify + "(covered, tasknames, fnids, fns, d)"
-            locs = { "covered" : self.rq.scenequeue_covered, "tasknames" : self.rqdata.runq_task, "fnids" : self.rqdata.runq_fnid, "fns" : self.rqdata.taskData.fn_index, "d" : self.cooker.expanded_data, "invalidtasks" : invalidtasks }
-            # Backwards compatibility with older versions without invalidtasks
-            try:
-                covered_remove = bb.utils.better_eval(call, locs)
-            except TypeError:
-                covered_remove = bb.utils.better_eval(call2, locs)
+            call = self.rq.setsceneverify + "(covered, tasknames, fns, d, invalidtasks=invalidtasks)"
+            locs = { "covered" : self.rq.scenequeue_covered, "tasknames" : tasknames, "fns" : fns, "d" : self.cooker.expanded_data, "invalidtasks" : invalidtasks }
+            covered_remove = bb.utils.better_eval(call, locs)
 
-        def removecoveredtask(task):
-            fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
-            taskname = self.rqdata.runq_task[task] + '_setscene'
-            bb.build.del_stamp(taskname, self.rqdata.dataCache, fn)
-            self.rq.scenequeue_covered.remove(task)
+        def removecoveredtask(tid):
+            (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+            taskname = taskname + '_setscene'
+            bb.build.del_stamp(taskname, self.rqdata.dataCaches[mc], taskfn)
+            self.rq.scenequeue_covered.remove(tid)
 
         toremove = covered_remove
         for task in toremove:
@@ -1529,7 +1594,7 @@
             covered_remove = []
             for task in toremove:
                 removecoveredtask(task)
-                for deptask in self.rqdata.runq_depends[task]:
+                for deptask in self.rqdata.runtaskentries[task].depends:
                     if deptask not in self.rq.scenequeue_covered:
                         continue
                     if deptask in toremove or deptask in covered_remove or deptask in initial_covered:
@@ -1540,7 +1605,15 @@
 
         logger.debug(1, 'Full skip list %s', self.rq.scenequeue_covered)
 
-        event.fire(bb.event.StampUpdate(self.rqdata.target_pairs, self.rqdata.dataCache.stamp), self.cfgData)
+
+        for mc in self.rqdata.dataCaches:
+            target_pairs = []
+            for tid in self.rqdata.target_tids:
+                (tidmc, fn, taskname, _) = split_tid_mcfn(tid)
+                if tidmc == mc:
+                    target_pairs.append((fn, taskname))
+
+            event.fire(bb.event.StampUpdate(target_pairs, self.rqdata.dataCaches[mc].stamp), self.cfgData)
 
         schedulers = self.get_schedulers()
         for scheduler in schedulers:
@@ -1575,7 +1648,7 @@
         return schedulers
 
     def setbuildable(self, task):
-        self.runq_buildable[task] = 1
+        self.runq_buildable.add(task)
         self.sched.newbuilable(task)
 
     def task_completeoutright(self, task):
@@ -1584,21 +1657,21 @@
         Look at the reverse dependencies and mark any task with
         completed dependencies as buildable
         """
-        self.runq_complete[task] = 1
-        for revdep in self.rqdata.runq_revdeps[task]:
-            if self.runq_running[revdep] == 1:
+        self.runq_complete.add(task)
+        for revdep in self.rqdata.runtaskentries[task].revdeps:
+            if revdep in self.runq_running:
                 continue
-            if self.runq_buildable[revdep] == 1:
+            if revdep in self.runq_buildable:
                 continue
             alldeps = 1
-            for dep in self.rqdata.runq_depends[revdep]:
-                if self.runq_complete[dep] != 1:
+            for dep in self.rqdata.runtaskentries[revdep].depends:
+                if dep not in self.runq_complete:
                     alldeps = 0
             if alldeps == 1:
                 self.setbuildable(revdep)
-                fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[revdep]]
-                taskname = self.rqdata.runq_task[revdep]
-                logger.debug(1, "Marking task %s (%s, %s) as buildable", revdep, fn, taskname)
+                fn = fn_from_tid(revdep)
+                taskname = taskname_from_tid(revdep)
+                logger.debug(1, "Marking task %s as buildable", revdep)
 
     def task_complete(self, task):
         self.stats.taskCompleted()
@@ -1611,14 +1684,13 @@
         Updates the state engine with the failure
         """
         self.stats.taskFailed()
-        fnid = self.rqdata.runq_fnid[task]
-        self.failed_fnids.append(fnid)
+        self.failed_tids.append(task)
         bb.event.fire(runQueueTaskFailed(task, self.stats, exitcode, self.rq), self.cfgData)
-        if self.rqdata.taskData.abort:
+        if self.rqdata.taskData[''].abort:
             self.rq.state = runQueueCleanUp
 
     def task_skip(self, task, reason):
-        self.runq_running[task] = 1
+        self.runq_running.add(task)
         self.setbuildable(task)
         bb.event.fire(runQueueTaskSkipped(task, self.stats, self.rq, reason), self.cfgData)
         self.task_completeoutright(task)
@@ -1630,8 +1702,52 @@
         Run the tasks in a queue prepared by rqdata.prepare()
         """
 
+        if self.rqdata.setscenewhitelist and not self.rqdata.setscenewhitelist_checked:
+            self.rqdata.setscenewhitelist_checked = True
+
+            # Check tasks that are going to run against the whitelist
+            def check_norun_task(tid, showerror=False):
+                (mc, fn, taskname, _) = split_tid_mcfn(tid)
+                # Ignore covered tasks
+                if tid in self.rq.scenequeue_covered:
+                    return False
+                # Ignore stamped tasks
+                if self.rq.check_stamp_task(tid, taskname, cache=self.stampcache):
+                    return False
+                # Ignore noexec tasks
+                taskdep = self.rqdata.dataCaches[mc].task_deps[fn]
+                if 'noexec' in taskdep and taskname in taskdep['noexec']:
+                    return False
+
+                pn = self.rqdata.dataCaches[mc].pkg_fn[fn]
+                if not check_setscene_enforce_whitelist(pn, taskname, self.rqdata.setscenewhitelist):
+                    if showerror:
+                        if tid in self.rqdata.runq_setscene_tids:
+                            logger.error('Task %s.%s attempted to execute unexpectedly and should have been setscened' % (pn, taskname))
+                        else:
+                            logger.error('Task %s.%s attempted to execute unexpectedly' % (pn, taskname))
+                    return True
+                return False
+            # Look to see if any tasks that we think shouldn't run are going to
+            unexpected = False
+            for tid in self.rqdata.runtaskentries:
+                if check_norun_task(tid):
+                    unexpected = True
+                    break
+            if unexpected:
+                # Run through the tasks in the rough order they'd have executed and print errors
+                # (since the order can be useful - usually missing sstate for the last few tasks
+                # is the cause of the problem)
+                task = self.sched.next()
+                while task is not None:
+                    check_norun_task(task, showerror=True)
+                    self.task_skip(task, 'Setscene enforcement check')
+                    task = self.sched.next()
+
+                self.rq.state = runQueueCleanUp
+                return True
+
         self.rq.read_workers()
-        
 
         if self.stats.total == 0:
             # nothing to do
@@ -1639,30 +1755,28 @@
 
         task = self.sched.next()
         if task is not None:
-            fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
-            taskname = self.rqdata.runq_task[task]
+            (mc, fn, taskname, taskfn) = split_tid_mcfn(task)
 
             if task in self.rq.scenequeue_covered:
-                logger.debug(2, "Setscene covered task %s (%s)", task,
-                                self.rqdata.get_user_idstring(task))
+                logger.debug(2, "Setscene covered task %s", task)
                 self.task_skip(task, "covered")
                 return True
 
             if self.rq.check_stamp_task(task, taskname, cache=self.stampcache):
-                logger.debug(2, "Stamp current task %s (%s)", task,
-                                self.rqdata.get_user_idstring(task))
+                logger.debug(2, "Stamp current task %s", task)
+
                 self.task_skip(task, "existing")
                 return True
 
-            taskdep = self.rqdata.dataCache.task_deps[fn]
+            taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
             if 'noexec' in taskdep and taskname in taskdep['noexec']:
                 startevent = runQueueTaskStarted(task, self.stats, self.rq,
                                                  noexec=True)
                 bb.event.fire(startevent, self.cfgData)
-                self.runq_running[task] = 1
+                self.runq_running.add(task)
                 self.stats.taskActive()
                 if not self.cooker.configuration.dry_run:
-                    bb.build.make_stamp(taskname, self.rqdata.dataCache, fn)
+                    bb.build.make_stamp(taskname, self.rqdata.dataCaches[mc], taskfn)
                 self.task_complete(task)
                 return True
             else:
@@ -1671,24 +1785,25 @@
 
             taskdepdata = self.build_taskdepdata(task)
 
-            taskdep = self.rqdata.dataCache.task_deps[fn]
+            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:
                     try:
                         self.rq.start_fakeworker(self)
                     except OSError as exc:
-                        logger.critical("Failed to spawn fakeroot worker to run %s:%s: %s" % (fn, taskname, str(exc)))
+                        logger.critical("Failed to spawn fakeroot worker to run %s: %s" % (task, str(exc)))
                         self.rq.state = runQueueFailed
+                        self.stats.taskFailed()
                         return True
-                self.rq.fakeworker.stdin.write("<runtask>" + pickle.dumps((fn, task, taskname, False, self.cooker.collection.get_file_appends(fn), taskdepdata)) + "</runtask>")
-                self.rq.fakeworker.stdin.flush()
+                self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, False, self.cooker.collection.get_file_appends(fn), taskdepdata)) + b"</runtask>")
+                self.rq.fakeworker[mc].process.stdin.flush()
             else:
-                self.rq.worker.stdin.write("<runtask>" + pickle.dumps((fn, task, taskname, False, self.cooker.collection.get_file_appends(fn), taskdepdata)) + "</runtask>")
-                self.rq.worker.stdin.flush()
+                self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata)) + b"</runtask>")
+                self.rq.worker[mc].process.stdin.flush()
 
-            self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
-            self.build_stamps2.append(self.build_stamps[task]) 
-            self.runq_running[task] = 1
+            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:
                 return True
@@ -1697,17 +1812,17 @@
             self.rq.read_workers()
             return self.rq.active_fds()
 
-        if len(self.failed_fnids) != 0:
+        if len(self.failed_tids) != 0:
             self.rq.state = runQueueFailed
             return True
 
         # Sanity Checks
-        for task in xrange(self.stats.total):
-            if self.runq_buildable[task] == 0:
+        for task in self.rqdata.runtaskentries:
+            if task not in self.runq_buildable:
                 logger.error("Task %s never buildable!", task)
-            if self.runq_running[task] == 0:
+            if task not in self.runq_running:
                 logger.error("Task %s never ran!", task)
-            if self.runq_complete[task] == 0:
+            if task not in self.runq_complete:
                 logger.error("Task %s never completed!", task)
         self.rq.state = runQueueComplete
 
@@ -1715,16 +1830,15 @@
 
     def build_taskdepdata(self, task):
         taskdepdata = {}
-        next = self.rqdata.runq_depends[task]
+        next = self.rqdata.runtaskentries[task].depends
         next.add(task)
         while next:
             additional = []
             for revdep in next:
-                fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[revdep]]
-                pn = self.rqdata.dataCache.pkg_fn[fn]
-                taskname = self.rqdata.runq_task[revdep]
-                deps = self.rqdata.runq_depends[revdep]
-                provides = self.rqdata.dataCache.fn_provides[fn]
+                (mc, fn, taskname, taskfn) = split_tid_mcfn(revdep)
+                pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn]
+                deps = self.rqdata.runtaskentries[revdep].depends
+                provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
                 taskdepdata[revdep] = [pn, taskname, fn, deps, provides]
                 for revdep2 in deps:
                     if revdep2 not in taskdepdata:
@@ -1743,16 +1857,16 @@
         self.scenequeue_notneeded = set()
 
         # If we don't have any setscene functions, skip this step
-        if len(self.rqdata.runq_setscene) == 0:
+        if len(self.rqdata.runq_setscene_tids) == 0:
             rq.scenequeue_covered = set()
             rq.state = runQueueRunInit
             return
 
-        self.stats = RunQueueStats(len(self.rqdata.runq_setscene))
+        self.stats = RunQueueStats(len(self.rqdata.runq_setscene_tids))
 
-        sq_revdeps = []
-        sq_revdeps_new = []
-        sq_revdeps_squash = []
+        sq_revdeps = {}
+        sq_revdeps_new = {}
+        sq_revdeps_squash = {}
         self.sq_harddeps = {}
 
         # We need to construct a dependency graph for the setscene functions. Intermediate
@@ -1760,25 +1874,29 @@
         # therefore aims to collapse the huge runqueue dependency tree into a smaller one
         # only containing the setscene functions.
 
-        for task in xrange(self.stats.total):
-            self.runq_running.append(0)
-            self.runq_complete.append(0)
-            self.runq_buildable.append(0)
+        self.rqdata.init_progress_reporter.next_stage()
 
         # First process the chains up to the first setscene task.
         endpoints = {}
-        for task in xrange(len(self.rqdata.runq_fnid)):
-            sq_revdeps.append(copy.copy(self.rqdata.runq_revdeps[task]))
-            sq_revdeps_new.append(set())
-            if (len(self.rqdata.runq_revdeps[task]) == 0) and task not in self.rqdata.runq_setscene:
-                endpoints[task] = set()
+        for tid in self.rqdata.runtaskentries:
+            sq_revdeps[tid] = copy.copy(self.rqdata.runtaskentries[tid].revdeps)
+            sq_revdeps_new[tid] = set()
+            if (len(sq_revdeps[tid]) == 0) and tid not in self.rqdata.runq_setscene_tids:
+                #bb.warn("Added endpoint %s" % (tid))
+                endpoints[tid] = set()
+
+        self.rqdata.init_progress_reporter.next_stage()
 
         # Secondly process the chains between setscene tasks.
-        for task in self.rqdata.runq_setscene:
-            for dep in self.rqdata.runq_depends[task]:
+        for tid in self.rqdata.runq_setscene_tids:
+            #bb.warn("Added endpoint 2 %s" % (tid))
+            for dep in self.rqdata.runtaskentries[tid].depends:
                     if dep not in endpoints:
                         endpoints[dep] = set()
-                    endpoints[dep].add(task)
+                    #bb.warn("  Added endpoint 3 %s" % (dep))
+                    endpoints[dep].add(tid)
+
+        self.rqdata.init_progress_reporter.next_stage()
 
         def process_endpoints(endpoints):
             newendpoints = {}
@@ -1789,26 +1907,28 @@
                 if sq_revdeps_new[point]:
                     tasks |= sq_revdeps_new[point]
                 sq_revdeps_new[point] = set()
-                if point in self.rqdata.runq_setscene:
+                if point in self.rqdata.runq_setscene_tids:
                     sq_revdeps_new[point] = tasks
                     tasks = set()
-                for dep in self.rqdata.runq_depends[point]:
+                for dep in self.rqdata.runtaskentries[point].depends:
                     if point in sq_revdeps[dep]:
                         sq_revdeps[dep].remove(point)
                     if tasks:
                         sq_revdeps_new[dep] |= tasks
-                    if (len(sq_revdeps[dep]) == 0 or len(sq_revdeps_new[dep]) != 0) and dep not in self.rqdata.runq_setscene:
+                    if (len(sq_revdeps[dep]) == 0 or len(sq_revdeps_new[dep]) != 0) and dep not in self.rqdata.runq_setscene_tids:
                         newendpoints[dep] = task
             if len(newendpoints) != 0:
                 process_endpoints(newendpoints)
 
         process_endpoints(endpoints)
 
+        self.rqdata.init_progress_reporter.next_stage()
+
         # Build a list of setscene tasks which are "unskippable"
         # These are direct endpoints referenced by the build
         endpoints2 = {}
-        sq_revdeps2 = []
-        sq_revdeps_new2 = []
+        sq_revdeps2 = {}
+        sq_revdeps_new2 = {}
         def process_endpoints2(endpoints):
             newendpoints = {}
             for point, task in endpoints.items():
@@ -1818,84 +1938,99 @@
                 if sq_revdeps_new2[point]:
                     tasks |= sq_revdeps_new2[point]
                 sq_revdeps_new2[point] = set()
-                if point in self.rqdata.runq_setscene:
+                if point in self.rqdata.runq_setscene_tids:
                     sq_revdeps_new2[point] = tasks
-                for dep in self.rqdata.runq_depends[point]:
+                for dep in self.rqdata.runtaskentries[point].depends:
                     if point in sq_revdeps2[dep]:
                         sq_revdeps2[dep].remove(point)
                     if tasks:
                         sq_revdeps_new2[dep] |= tasks
-                    if (len(sq_revdeps2[dep]) == 0 or len(sq_revdeps_new2[dep]) != 0) and dep not in self.rqdata.runq_setscene:
+                    if (len(sq_revdeps2[dep]) == 0 or len(sq_revdeps_new2[dep]) != 0) and dep not in self.rqdata.runq_setscene_tids:
                         newendpoints[dep] = tasks
             if len(newendpoints) != 0:
                 process_endpoints2(newendpoints)
-        for task in xrange(len(self.rqdata.runq_fnid)):
-            sq_revdeps2.append(copy.copy(self.rqdata.runq_revdeps[task]))
-            sq_revdeps_new2.append(set())
-            if (len(self.rqdata.runq_revdeps[task]) == 0) and task not in self.rqdata.runq_setscene:
-                endpoints2[task] = set()
+        for tid in self.rqdata.runtaskentries:
+            sq_revdeps2[tid] = copy.copy(self.rqdata.runtaskentries[tid].revdeps)
+            sq_revdeps_new2[tid] = set()
+            if (len(sq_revdeps2[tid]) == 0) and tid not in self.rqdata.runq_setscene_tids:
+                endpoints2[tid] = set()
         process_endpoints2(endpoints2)
         self.unskippable = []
-        for task in self.rqdata.runq_setscene:
-            if sq_revdeps_new2[task]:
-                self.unskippable.append(self.rqdata.runq_setscene.index(task))
+        for tid in self.rqdata.runq_setscene_tids:
+            if sq_revdeps_new2[tid]:
+                self.unskippable.append(tid)
 
-        for task in xrange(len(self.rqdata.runq_fnid)):
-            if task in self.rqdata.runq_setscene:
+        self.rqdata.init_progress_reporter.next_stage(len(self.rqdata.runtaskentries))
+
+        for taskcounter, tid in enumerate(self.rqdata.runtaskentries):
+            if tid in self.rqdata.runq_setscene_tids:
                 deps = set()
-                for dep in sq_revdeps_new[task]:
-                    deps.add(self.rqdata.runq_setscene.index(dep))
-                sq_revdeps_squash.append(deps)
-            elif len(sq_revdeps_new[task]) != 0:
+                for dep in sq_revdeps_new[tid]:
+                    deps.add(dep)
+                sq_revdeps_squash[tid] = deps
+            elif len(sq_revdeps_new[tid]) != 0:
                 bb.msg.fatal("RunQueue", "Something went badly wrong during scenequeue generation, aborting. Please report this problem.")
+            self.rqdata.init_progress_reporter.update(taskcounter)
+
+        self.rqdata.init_progress_reporter.next_stage()
 
         # Resolve setscene inter-task dependencies
         # 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 task in self.rqdata.runq_setscene:
-                realid = self.rqdata.taskData.gettask_id(self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]], self.rqdata.runq_task[task] + "_setscene", False)
-                idepends = self.rqdata.taskData.tasks_idepends[realid]
-                for (depid, idependtask) in idepends:
-                    if depid not in self.rqdata.taskData.build_targets:
+        for tid in self.rqdata.runq_setscene_tids:
+                (mc, fn, taskname, _) = split_tid_mcfn(tid)
+                realtid = fn + ":" + taskname + "_setscene"
+                idepends = self.rqdata.taskData[mc].taskentries[realtid].idepends
+                for (depname, idependtask) in idepends:
+
+                    if depname not in self.rqdata.taskData[mc].build_targets:
                         continue
 
-                    depdata = self.rqdata.taskData.build_targets[depid][0]
-                    if depdata is None:
+                    depfn = self.rqdata.taskData[mc].build_targets[depname][0]
+                    if depfn is None:
                          continue
-                    dep = self.rqdata.taskData.fn_index[depdata]
-                    taskid = self.rqdata.get_task_id(self.rqdata.taskData.getfn_id(dep), idependtask.replace("_setscene", ""))
-                    if taskid is None:
-                        bb.msg.fatal("RunQueue", "Task %s_setscene depends upon non-existent task %s:%s" % (self.rqdata.get_user_idstring(task), dep, idependtask))
+                    deptid = depfn + ":" + idependtask.replace("_setscene", "")
+                    if deptid not in self.rqdata.runtaskentries:
+                        bb.msg.fatal("RunQueue", "Task %s depends upon non-existent task %s:%s" % (realtid, depfn, idependtask))
 
-                    if not self.rqdata.runq_setscene.index(taskid) in self.sq_harddeps:
-                        self.sq_harddeps[self.rqdata.runq_setscene.index(taskid)] = set()
-                    self.sq_harddeps[self.rqdata.runq_setscene.index(taskid)].add(self.rqdata.runq_setscene.index(task))
+                    if not deptid in self.sq_harddeps:
+                        self.sq_harddeps[deptid] = set()
+                    self.sq_harddeps[deptid].add(tid)
 
-                    sq_revdeps_squash[self.rqdata.runq_setscene.index(task)].add(self.rqdata.runq_setscene.index(taskid))
+                    sq_revdeps_squash[tid].add(deptid)
                     # Have to zero this to avoid circular dependencies
-                    sq_revdeps_squash[self.rqdata.runq_setscene.index(taskid)] = set()
+                    sq_revdeps_squash[deptid] = set()
+
+        self.rqdata.init_progress_reporter.next_stage()
 
         for task in self.sq_harddeps:
              for dep in self.sq_harddeps[task]:
                  sq_revdeps_squash[dep].add(task)
 
-        #for task in xrange(len(sq_revdeps_squash)):
-        #    realtask = self.rqdata.runq_setscene[task]
-        #    bb.warn("Task %s: %s_setscene is %s " % (task, self.rqdata.get_user_idstring(realtask) , sq_revdeps_squash[task]))
+        self.rqdata.init_progress_reporter.next_stage()
 
-        self.sq_deps = []
+        #for tid in sq_revdeps_squash:
+        #    for dep in sq_revdeps_squash[tid]:
+        #        data = data + "\n   %s" % dep
+        #    bb.warn("Task %s_setscene: is %s " % (tid, data
+
+        self.sq_deps = {}
         self.sq_revdeps = sq_revdeps_squash
         self.sq_revdeps2 = copy.deepcopy(self.sq_revdeps)
 
-        for task in xrange(len(self.sq_revdeps)):
-            self.sq_deps.append(set())
-        for task in xrange(len(self.sq_revdeps)):
-            for dep in self.sq_revdeps[task]:
-                self.sq_deps[dep].add(task)
+        for tid in self.sq_revdeps:
+            self.sq_deps[tid] = set()
+        for tid in self.sq_revdeps:
+            for dep in self.sq_revdeps[tid]:
+                self.sq_deps[dep].add(tid)
 
-        for task in xrange(len(self.sq_revdeps)):
-            if len(self.sq_revdeps[task]) == 0:
-                self.runq_buildable[task] = 1
+        self.rqdata.init_progress_reporter.next_stage()
+
+        for tid in self.sq_revdeps:
+            if len(self.sq_revdeps[tid]) == 0:
+                self.runq_buildable.add(tid)
+
+        self.rqdata.init_progress_reporter.finish()
 
         self.outrightfail = []
         if self.rq.hashvalidate:
@@ -1906,35 +2041,34 @@
             sq_task = []
             noexec = []
             stamppresent = []
-            for task in xrange(len(self.sq_revdeps)):
-                realtask = self.rqdata.runq_setscene[task]
-                fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realtask]]
-                taskname = self.rqdata.runq_task[realtask]
-                taskdep = self.rqdata.dataCache.task_deps[fn]
+            for tid in self.sq_revdeps:
+                (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
+
+                taskdep = self.rqdata.dataCaches[mc].task_deps[fn]
 
                 if 'noexec' in taskdep and taskname in taskdep['noexec']:
-                    noexec.append(task)
-                    self.task_skip(task)
-                    bb.build.make_stamp(taskname + "_setscene", self.rqdata.dataCache, fn)
+                    noexec.append(tid)
+                    self.task_skip(tid)
+                    bb.build.make_stamp(taskname + "_setscene", self.rqdata.dataCaches[mc], taskfn)
                     continue
 
-                if self.rq.check_stamp_task(realtask, taskname + "_setscene", cache=self.stampcache):
-                    logger.debug(2, 'Setscene stamp current for task %s(%s)', task, self.rqdata.get_user_idstring(realtask))
-                    stamppresent.append(task)
-                    self.task_skip(task)
+                if self.rq.check_stamp_task(tid, taskname + "_setscene", cache=self.stampcache):
+                    logger.debug(2, 'Setscene stamp current for task %s', tid)
+                    stamppresent.append(tid)
+                    self.task_skip(tid)
                     continue
 
-                if self.rq.check_stamp_task(realtask, taskname, recurse = True, cache=self.stampcache):
-                    logger.debug(2, 'Normal stamp current for task %s(%s)', task, self.rqdata.get_user_idstring(realtask))
-                    stamppresent.append(task)
-                    self.task_skip(task)
+                if self.rq.check_stamp_task(tid, taskname, recurse = True, cache=self.stampcache):
+                    logger.debug(2, 'Normal stamp current for task %s', tid)
+                    stamppresent.append(tid)
+                    self.task_skip(tid)
                     continue
 
                 sq_fn.append(fn)
-                sq_hashfn.append(self.rqdata.dataCache.hashfn[fn])
-                sq_hash.append(self.rqdata.runq_hash[realtask])
+                sq_hashfn.append(self.rqdata.dataCaches[mc].hashfn[fn])
+                sq_hash.append(self.rqdata.runtaskentries[tid].hash)
                 sq_taskname.append(taskname)
-                sq_task.append(task)
+                sq_task.append(tid)
             call = self.rq.hashvalidate + "(sq_fn, sq_task, sq_hash, sq_hashfn, d)"
             locs = { "sq_fn" : sq_fn, "sq_task" : sq_taskname, "sq_hash" : sq_hash, "sq_hashfn" : sq_hashfn, "d" : self.cooker.expanded_data }
             valid = bb.utils.better_eval(call, locs)
@@ -1943,12 +2077,10 @@
             for v in valid:
                 valid_new.append(sq_task[v])
 
-            for task in xrange(len(self.sq_revdeps)):
-                if task not in valid_new and task not in noexec:
-                    realtask = self.rqdata.runq_setscene[task]
-                    logger.debug(2, 'No package found, so skipping setscene task %s',
-                                 self.rqdata.get_user_idstring(realtask))
-                    self.outrightfail.append(task)
+            for tid in self.sq_revdeps:
+                if tid not in valid_new and tid not in noexec:
+                    logger.debug(2, 'No package found, so skipping setscene task %s', tid)
+                    self.outrightfail.append(tid)
 
         logger.info('Executing SetScene Tasks')
 
@@ -1957,9 +2089,7 @@
     def scenequeue_updatecounters(self, task, fail = False):
         for dep in self.sq_deps[task]:
             if fail and task in self.sq_harddeps and dep in self.sq_harddeps[task]:
-                realtask = self.rqdata.runq_setscene[task]
-                realdep = self.rqdata.runq_setscene[dep]
-                logger.debug(2, "%s was unavailable and is a hard dependency of %s so skipping" % (self.rqdata.get_user_idstring(realtask), self.rqdata.get_user_idstring(realdep)))
+                logger.debug(2, "%s was unavailable and is a hard dependency of %s so skipping" % (task, dep))
                 self.scenequeue_updatecounters(dep, fail)
                 continue
             if task not in self.sq_revdeps2[dep]:
@@ -1967,7 +2097,7 @@
                 continue
             self.sq_revdeps2[dep].remove(task)
             if len(self.sq_revdeps2[dep]) == 0:
-                self.runq_buildable[dep] = 1
+                self.runq_buildable.add(dep)
 
     def task_completeoutright(self, task):
         """
@@ -1976,13 +2106,19 @@
         completed dependencies as buildable
         """
 
-        index = self.rqdata.runq_setscene[task]
-        logger.debug(1, 'Found task %s which could be accelerated',
-                        self.rqdata.get_user_idstring(index))
-
+        logger.debug(1, 'Found task %s which could be accelerated', task)
         self.scenequeue_covered.add(task)
         self.scenequeue_updatecounters(task)
 
+    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]
+            if not check_setscene_enforce_whitelist(pn, taskname, self.rqdata.setscenewhitelist):
+                logger.error('Task %s.%s failed' % (pn, taskname + "_setscene"))
+                self.rq.state = runQueueCleanUp
+
     def task_complete(self, task):
         self.stats.taskCompleted()
         bb.event.fire(sceneQueueTaskCompleted(task, self.stats, self.rq), self.cfgData)
@@ -1993,19 +2129,19 @@
         bb.event.fire(sceneQueueTaskFailed(task, self.stats, result, self), self.cfgData)
         self.scenequeue_notcovered.add(task)
         self.scenequeue_updatecounters(task, True)
+        self.check_taskfail(task)
 
     def task_failoutright(self, task):
-        self.runq_running[task] = 1
-        self.runq_buildable[task] = 1
+        self.runq_running.add(task)
+        self.runq_buildable.add(task)
         self.stats.taskCompleted()
         self.stats.taskSkipped()
-        index = self.rqdata.runq_setscene[task]
         self.scenequeue_notcovered.add(task)
         self.scenequeue_updatecounters(task, True)
 
     def task_skip(self, task):
-        self.runq_running[task] = 1
-        self.runq_buildable[task] = 1
+        self.runq_running.add(task)
+        self.runq_buildable.add(task)
         self.task_completeoutright(task)
         self.stats.taskCompleted()
         self.stats.taskSkipped()
@@ -2020,20 +2156,18 @@
         task = None
         if self.stats.active < self.number_tasks:
             # Find the next setscene to run
-            for nexttask in xrange(self.stats.total):
-                if self.runq_buildable[nexttask] == 1 and self.runq_running[nexttask] != 1:
+            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.unskippable:
-                        logger.debug(2, "Setscene task %s is unskippable" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask]))                      
+                        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):
-                        realtask = self.rqdata.runq_setscene[nexttask]
-                        fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realtask]]
+                        fn = fn_from_tid(nexttask)
                         foundtarget = False
-                        for target in self.rqdata.target_pairs:
-                            if target[0] == fn and target[1] == self.rqdata.runq_task[realtask]:
-                                foundtarget = True
-                                break
+
+                        if nexttask in self.rqdata.target_tids:
+                            foundtarget = True
                         if not foundtarget:
-                            logger.debug(2, "Skipping setscene for task %s" % self.rqdata.get_user_idstring(self.rqdata.runq_setscene[nexttask]))
+                            logger.debug(2, "Skipping setscene for task %s" % nexttask)
                             self.task_skip(nexttask)
                             self.scenequeue_notneeded.add(nexttask)
                             return True
@@ -2043,42 +2177,37 @@
                     task = nexttask
                     break
         if task is not None:
-            realtask = self.rqdata.runq_setscene[task]
-            fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realtask]]
-
-            taskname = self.rqdata.runq_task[realtask] + "_setscene"
-            if self.rq.check_stamp_task(realtask, self.rqdata.runq_task[realtask], recurse = True, cache=self.stampcache):
-                logger.debug(2, 'Stamp for underlying task %s(%s) is current, so skipping setscene variant',
-                             task, self.rqdata.get_user_idstring(realtask))
+            (mc, fn, taskname, taskfn) = split_tid_mcfn(task)
+            taskname = taskname + "_setscene"
+            if self.rq.check_stamp_task(task, taskname_from_tid(task), recurse = True, cache=self.stampcache):
+                logger.debug(2, 'Stamp for underlying task %s is current, so skipping setscene variant', task)
                 self.task_failoutright(task)
                 return True
 
             if self.cooker.configuration.force:
-                for target in self.rqdata.target_pairs:
-                    if target[0] == fn and target[1] == self.rqdata.runq_task[realtask]:
-                        self.task_failoutright(task)
-                        return True
+                if task in self.rqdata.target_tids:
+                    self.task_failoutright(task)
+                    return True
 
-            if self.rq.check_stamp_task(realtask, taskname, cache=self.stampcache):
-                logger.debug(2, 'Setscene stamp current task %s(%s), so skip it and its dependencies',
-                             task, self.rqdata.get_user_idstring(realtask))
+            if self.rq.check_stamp_task(task, taskname, cache=self.stampcache):
+                logger.debug(2, 'Setscene stamp current task %s, so skip it and its dependencies', task)
                 self.task_skip(task)
                 return True
 
             startevent = sceneQueueTaskStarted(task, self.stats, self.rq)
             bb.event.fire(startevent, self.cfgData)
 
-            taskdep = self.rqdata.dataCache.task_deps[fn]
-            if 'fakeroot' in taskdep and taskname in taskdep['fakeroot']:
+            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)
-                self.rq.fakeworker.stdin.write("<runtask>" + pickle.dumps((fn, realtask, taskname, True, self.cooker.collection.get_file_appends(fn), None)) + "</runtask>")
-                self.rq.fakeworker.stdin.flush()
+                self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), None)) + b"</runtask>")
+                self.rq.fakeworker[mc].process.stdin.flush()
             else:
-                self.rq.worker.stdin.write("<runtask>" + pickle.dumps((fn, realtask, taskname, True, self.cooker.collection.get_file_appends(fn), None)) + "</runtask>")
-                self.rq.worker.stdin.flush()
+                self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), None)) + b"</runtask>")
+                self.rq.worker[mc].process.stdin.flush()
 
-            self.runq_running[task] = 1
+            self.runq_running.add(task)
             self.stats.taskActive()
             if self.stats.active < self.number_tasks:
                 return True
@@ -2087,17 +2216,14 @@
             self.rq.read_workers()
             return self.rq.active_fds()
 
-        #for task in xrange(self.stats.total):
-        #    if self.runq_running[task] != 1:
-        #        buildable = self.runq_buildable[task]
-        #        revdeps = self.sq_revdeps[task]
-        #        bb.warn("Found we didn't run %s %s %s %s" % (task, buildable, str(revdeps), self.rqdata.get_user_idstring(self.rqdata.runq_setscene[task])))
+        #for tid in self.sq_revdeps:
+        #    if tid not in self.runq_running:
+        #        buildable = tid in self.runq_buildable
+        #        revdeps = self.sq_revdeps[tid]
+        #        bb.warn("Found we didn't run %s %s %s" % (tid, buildable, str(revdeps)))
 
-        # Convert scenequeue_covered task numbers into full taskgraph ids
-        oldcovered = self.scenequeue_covered
-        self.rq.scenequeue_covered = set()
-        for task in oldcovered:
-            self.rq.scenequeue_covered.add(self.rqdata.runq_setscene[task])
+        self.rq.scenequeue_covered = self.scenequeue_covered
+        self.rq.scenequeue_notcovered = self.scenequeue_notcovered
 
         logger.debug(1, 'We can skip tasks %s', sorted(self.rq.scenequeue_covered))
 
@@ -2109,8 +2235,6 @@
         return True
 
     def runqueue_process_waitpid(self, task, status):
-        task = self.rq.rqdata.runq_setscene.index(task)
-
         RunQueueExecute.runqueue_process_waitpid(self, task, status)
 
 class TaskFailure(Exception):
@@ -2137,9 +2261,9 @@
     """
     def __init__(self, task, stats, rq):
         self.taskid = task
-        self.taskstring = rq.rqdata.get_user_idstring(task)
-        self.taskname = rq.rqdata.get_task_name(task)
-        self.taskfile = rq.rqdata.get_task_file(task)
+        self.taskstring = task
+        self.taskname = taskname_from_tid(task)
+        self.taskfile = fn_from_tid(task)
         self.taskhash = rq.rqdata.get_task_hash(task)
         self.stats = stats.copy()
         bb.event.Event.__init__(self)
@@ -2150,11 +2274,10 @@
     """
     def __init__(self, task, stats, rq, noexec=False):
         runQueueEvent.__init__(self, task, stats, rq)
-        realtask = rq.rqdata.runq_setscene[task]
-        self.taskstring = rq.rqdata.get_user_idstring(realtask, "_setscene")
-        self.taskname = rq.rqdata.get_task_name(realtask) + "_setscene"
-        self.taskfile = rq.rqdata.get_task_file(realtask)
-        self.taskhash = rq.rqdata.get_task_hash(realtask)
+        self.taskstring = task + "_setscene"
+        self.taskname = taskname_from_tid(task) + "_setscene"
+        self.taskfile = fn_from_tid(task)
+        self.taskhash = rq.rqdata.get_task_hash(task)
 
 class runQueueTaskStarted(runQueueEvent):
     """
@@ -2223,7 +2346,7 @@
         if pipeout:
             pipeout.close()
         bb.utils.nonblockingfd(self.input)
-        self.queue = ""
+        self.queue = b""
         self.d = d
         self.rq = rq
         self.rqexec = rqexec
@@ -2232,22 +2355,16 @@
         self.rqexec = rqexec
 
     def read(self):
-        for w in [self.rq.worker, self.rq.fakeworker]:
-            if not w:
-                continue
-            w.poll()
-            if w.returncode is not None and not self.rq.teardown:
-                name = None
-                if self.rq.worker and w.pid == self.rq.worker.pid:
-                    name = "Worker"
-                elif self.rq.fakeworker and w.pid == self.rq.fakeworker.pid:
-                    name = "Fakeroot"
-                bb.error("%s process (%s) exited unexpectedly (%s), shutting down..." % (name, w.pid, str(w.returncode)))
-                self.rq.finish_runqueue(True)
+        for workers, name in [(self.rq.worker, "Worker"), (self.rq.fakeworker, "Fakeroot")]:
+            for worker in workers.values():
+                worker.process.poll()
+                if worker.process.returncode is not None and not self.rq.teardown:
+                    bb.error("%s process (%s) exited unexpectedly (%s), shutting down..." % (name, worker.process.pid, str(worker.process.returncode)))
+                    self.rq.finish_runqueue(True)
 
         start = len(self.queue)
         try:
-            self.queue = self.queue + self.input.read(102400)
+            self.queue = self.queue + (self.input.read(102400) or b"")
         except (OSError, IOError) as e:
             if e.errno != errno.EAGAIN:
                 raise
@@ -2255,8 +2372,8 @@
         found = True
         while found and len(self.queue):
             found = False
-            index = self.queue.find("</event>")
-            while index != -1 and self.queue.startswith("<event>"):
+            index = self.queue.find(b"</event>")
+            while index != -1 and self.queue.startswith(b"<event>"):
                 try:
                     event = pickle.loads(self.queue[7:index])
                 except ValueError as e:
@@ -2264,9 +2381,9 @@
                 bb.event.fire_from_worker(event, self.d)
                 found = True
                 self.queue = self.queue[index+8:]
-                index = self.queue.find("</event>")
-            index = self.queue.find("</exitcode>")
-            while index != -1 and self.queue.startswith("<exitcode>"):
+                index = self.queue.find(b"</event>")
+            index = self.queue.find(b"</exitcode>")
+            while index != -1 and self.queue.startswith(b"<exitcode>"):
                 try:
                     task, status = pickle.loads(self.queue[10:index])
                 except ValueError as e:
@@ -2274,7 +2391,7 @@
                 self.rqexec.runqueue_process_waitpid(task, status)
                 found = True
                 self.queue = self.queue[index+11:]
-                index = self.queue.find("</exitcode>")
+                index = self.queue.find(b"</exitcode>")
         return (end > start)
 
     def close(self):
@@ -2283,3 +2400,27 @@
         if len(self.queue) > 0:
             print("Warning, worker left partial message: %s" % self.queue)
         self.input.close()
+
+def get_setscene_enforce_whitelist(d):
+    if d.getVar('BB_SETSCENE_ENFORCE', True) != '1':
+        return None
+    whitelist = (d.getVar("BB_SETSCENE_ENFORCE_WHITELIST", True) or "").split()
+    outlist = []
+    for item in whitelist[:]:
+        if item.startswith('%:'):
+            for target in sys.argv[1:]:
+                if not target.startswith('-'):
+                    outlist.append(target.split(':')[0] + ':' + item.split(':')[1])
+        else:
+            outlist.append(item)
+    return outlist
+
+def check_setscene_enforce_whitelist(pn, taskname, whitelist):
+    import fnmatch
+    if whitelist:
+        item = '%s:%s' % (pn, taskname)
+        for whitelist_item in whitelist:
+            if fnmatch.fnmatch(item, whitelist_item):
+                return True
+        return False
+    return True
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/server/process.py b/import-layers/yocto-poky/bitbake/lib/bb/server/process.py
index a3078a8..982fcf7 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/server/process.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/server/process.py
@@ -30,7 +30,7 @@
 import sys
 import time
 import select
-from Queue import Empty
+from queue import Empty
 from multiprocessing import Event, Process, util, Queue, Pipe, queues, Manager
 
 from . import BitBakeBaseServer, BitBakeBaseServerConnection, BaseImplServer
@@ -137,7 +137,7 @@
         if not fds:
             fds = []
 
-        for function, data in self._idlefuns.items():
+        for function, data in list(self._idlefuns.items()):
             try:
                 retval = function(self, data, False)
                 if retval is False:
@@ -145,7 +145,7 @@
                     nextsleep = None
                 elif retval is True:
                     nextsleep = None
-                elif isinstance(retval, float):
+                elif isinstance(retval, float) and nextsleep:
                     if (retval < nextsleep):
                         nextsleep = retval
                 elif nextsleep is None:
@@ -213,7 +213,7 @@
 # Wrap Queue to provide API which isn't server implementation specific
 class ProcessEventQueue(multiprocessing.queues.Queue):
     def __init__(self, maxsize):
-        multiprocessing.queues.Queue.__init__(self, maxsize)
+        multiprocessing.queues.Queue.__init__(self, maxsize, ctx=multiprocessing.get_context())
         self.exit = False
         bb.utils.set_process_name("ProcessEQueue")
 
@@ -222,11 +222,10 @@
 
     def waitEvent(self, timeout):
         if self.exit:
-            sys.exit(1)
+            return self.getEvent()
         try:
             if not self.server.is_alive():
-                self.setexit()
-                return None
+                return self.getEvent()
             return self.get(True, timeout)
         except Empty:
             return None
@@ -235,9 +234,10 @@
         try:
             if not self.server.is_alive():
                 self.setexit()
-                return None
             return self.get(False)
         except Empty:
+            if self.exit:
+                sys.exit(1)
             return None
 
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/server/xmlrpc.py b/import-layers/yocto-poky/bitbake/lib/bb/server/xmlrpc.py
index ace1cf6..452f14b 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/server/xmlrpc.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/server/xmlrpc.py
@@ -31,31 +31,33 @@
     in the server's main loop.
 """
 
+import os
+import sys
+
+import hashlib
+import time
+import socket
+import signal
+import threading
+import pickle
+import inspect
+import select
+import http.client
+import xmlrpc.client
+from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
+
 import bb
-import xmlrpclib, sys
 from bb import daemonize
 from bb.ui import uievent
-import hashlib, time
-import socket
-import os, signal
-import threading
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
+from . import BitBakeBaseServer, BitBakeBaseServerConnection, BaseImplServer
 
 DEBUG = False
 
-from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
-import inspect, select, httplib
-
-from . import BitBakeBaseServer, BitBakeBaseServerConnection, BaseImplServer
-
-class BBTransport(xmlrpclib.Transport):
+class BBTransport(xmlrpc.client.Transport):
     def __init__(self, timeout):
         self.timeout = timeout
         self.connection_token = None
-        xmlrpclib.Transport.__init__(self)
+        xmlrpc.client.Transport.__init__(self)
 
     # Modified from default to pass timeout to HTTPConnection
     def make_connection(self, host):
@@ -67,7 +69,7 @@
         # create a HTTP connection object from a host descriptor
         chost, self._extra_headers, x509 = self.get_host_info(host)
         #store the host argument along with the connection object
-        self._connection = host, httplib.HTTPConnection(chost, timeout=self.timeout)
+        self._connection = host, http.client.HTTPConnection(chost, timeout=self.timeout)
         return self._connection[1]
 
     def set_connection_token(self, token):
@@ -76,13 +78,30 @@
     def send_content(self, h, body):
         if self.connection_token:
             h.putheader("Bitbake-token", self.connection_token)
-        xmlrpclib.Transport.send_content(self, h, body)
+        xmlrpc.client.Transport.send_content(self, h, body)
 
 def _create_server(host, port, timeout = 60):
     t = BBTransport(timeout)
-    s = xmlrpclib.ServerProxy("http://%s:%d/" % (host, port), transport=t, allow_none=True)
+    s = xmlrpc.client.ServerProxy("http://%s:%d/" % (host, port), transport=t, allow_none=True, use_builtin_types=True)
     return s, t
 
+def check_connection(remote, timeout):
+    try:
+        host, port = remote.split(":")
+        port = int(port)
+    except Exception as e:
+        bb.warn("Failed to read remote definition (%s)" % str(e))
+        raise e
+
+    server, _transport = _create_server(host, port, timeout)
+    try:
+        ret, err =  server.runCommand(['getVariable', 'TOPDIR'])
+        if err or not ret:
+            return False
+    except ConnectionError:
+        return False
+    return True
+
 class BitBakeServerCommands():
 
     def __init__(self, server):
@@ -128,7 +147,7 @@
     def addClient(self):
         if self.has_client:
             return None
-        token = hashlib.md5(str(time.time())).hexdigest()
+        token = hashlib.md5(str(time.time()).encode("utf-8")).hexdigest()
         self.server.set_connection_token(token)
         self.has_client = True
         return token
@@ -178,7 +197,7 @@
     """ not a real working server, but a stub for a proxy server connection
 
     """
-    def __init__(self, host, port):
+    def __init__(self, host, port, use_builtin_types=True):
         self.host = host
         self.port = port
 
@@ -186,7 +205,7 @@
     # remove this when you're done with debugging
     # allow_reuse_address = True
 
-    def __init__(self, interface, single_use=False):
+    def __init__(self, interface, single_use=False, idle_timeout=0):
         """
         Constructor
         """
@@ -204,6 +223,10 @@
         self.commands = BitBakeServerCommands(self)
         self.autoregister_all_functions(self.commands, "")
         self.interface = interface
+        self.time = time.time()
+        self.idle_timeout = idle_timeout
+        if idle_timeout:
+            self.register_idle_function(self.handle_idle_timeout, self)
 
     def addcooker(self, cooker):
         BaseImplServer.addcooker(self, cooker)
@@ -219,6 +242,12 @@
             if name.startswith(prefix):
                 self.register_function(method, name[len(prefix):])
 
+    def handle_idle_timeout(self, server, data, abort):
+        if not abort:
+            if time.time() - server.time > server.idle_timeout:
+                server.quit = True
+                print("Server idle timeout expired")
+        return []
 
     def serve_forever(self):
         # Start the actual XMLRPC server
@@ -232,7 +261,7 @@
         while not self.quit:
             fds = [self]
             nextsleep = 0.1
-            for function, data in self._idlefuns.items():
+            for function, data in list(self._idlefuns.items()):
                 retval = None
                 try:
                     retval = function(self, data, False)
@@ -261,13 +290,15 @@
             try:
                 fd_sets = select.select(fds, [], [], socktimeout)
                 if fd_sets[0] and self in fd_sets[0]:
+                    if self.idle_timeout:
+                        self.time = time.time()
                     self._handle_request_noblock()
             except IOError:
                 # we ignore interrupted calls
                 pass
 
         # Tell idle functions we're exiting
-        for function, data in self._idlefuns.items():
+        for function, data in list(self._idlefuns.items()):
             try:
                 retval = function(self, data, True)
             except:
@@ -332,9 +363,10 @@
             pass
 
 class BitBakeServer(BitBakeBaseServer):
-    def initServer(self, interface = ("localhost", 0), single_use = False):
+    def initServer(self, interface = ("localhost", 0),
+                   single_use = False, idle_timeout=0):
         self.interface = interface
-        self.serverImpl = XMLRPCServer(interface, single_use)
+        self.serverImpl = XMLRPCServer(interface, single_use, idle_timeout)
 
     def detach(self):
         daemonize.createDaemon(self.serverImpl.serve_forever, "bitbake-cookerdaemon.log")
@@ -379,7 +411,7 @@
             bb.warn("Could not create socket for %s:%s (%s)" % (host, port, str(e)))
             raise e
         try:
-            self.serverImpl = XMLRPCProxyServer(host, port)
+            self.serverImpl = XMLRPCProxyServer(host, port, use_builtin_types=True)
             self.connection = BitBakeXMLRPCServerConnection(self.serverImpl, (ip, 0), self.observer_only, featureset)
             return self.connection.connect(self.token)
         except Exception as e:
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/siggen.py b/import-layers/yocto-poky/bitbake/lib/bb/siggen.py
index 88fc0f1..3a7dac4 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/siggen.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/siggen.py
@@ -3,19 +3,14 @@
 import os
 import re
 import tempfile
+import pickle
 import bb.data
 from bb.checksum import FileChecksumCache
 
 logger = logging.getLogger('BitBake.SigGen')
 
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-    logger.info('Importing cPickle failed.  Falling back to a very slow implementation.')
-
 def init(d):
-    siggens = [obj for obj in globals().itervalues()
+    siggens = [obj for obj in globals().values()
                       if type(obj) is type and issubclass(obj, SignatureGenerator)]
 
     desired = d.getVar("BB_SIGNATURE_HANDLER", True) or "noop"
@@ -138,7 +133,7 @@
                 var = lookupcache[dep]
                 if var is not None:
                     data = data + str(var)
-            self.basehash[fn + "." + task] = hashlib.md5(data).hexdigest()
+            self.basehash[fn + "." + task] = hashlib.md5(data.encode("utf-8")).hexdigest()
             taskdeps[task] = alldeps
 
         self.taskdeps[fn] = taskdeps
@@ -149,8 +144,9 @@
 
     def finalise(self, fn, d, variant):
 
-        if variant:
-            fn = "virtual:" + variant + ":" + fn
+        mc = d.getVar("__BBMULTICONFIG", False) or ""
+        if variant or mc:
+            fn = bb.cache.realfn2virtual(fn, variant, mc)
 
         try:
             taskdeps = self._build_data(fn, d)
@@ -221,9 +217,9 @@
         if taint:
             data = data + taint
             self.taints[k] = taint
-            logger.warn("%s is tainted from a forced run" % k)
+            logger.warning("%s is tainted from a forced run" % k)
 
-        h = hashlib.md5(data).hexdigest()
+        h = hashlib.md5(data.encode("utf-8")).hexdigest()
         self.taskhash[k] = h
         #d.setVar("BB_TASKHASH_task-%s" % task, taskhash[task])
         return h
@@ -287,7 +283,7 @@
             with os.fdopen(fd, "wb") as stream:
                 p = pickle.dump(data, stream, -1)
                 stream.flush()
-            os.chmod(tmpfile, 0664)
+            os.chmod(tmpfile, 0o664)
             os.rename(tmpfile, sigfile)
         except (OSError, IOError) as err:
             try:
@@ -298,23 +294,25 @@
 
         computed_basehash = calc_basehash(data)
         if computed_basehash != self.basehash[k]:
-            bb.error("Basehash mismatch %s verses %s for %s" % (computed_basehash, self.basehash[k], k))
-        if k in self.taskhash:
+            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 verses %s for %s" % (computed_taskhash, self.taskhash[k], k))
+                bb.error("Taskhash mismatch %s versus %s for %s" % (computed_taskhash, self.taskhash[k], k))
 
 
-    def dump_sigs(self, dataCache, options):
+    def dump_sigs(self, dataCaches, options):
         for fn in self.taskdeps:
             for task in self.taskdeps[fn]:
+                tid = fn + ":" + task
+                (mc, _, _) = bb.runqueue.split_tid(tid)
                 k = fn + "." + task
                 if k not in self.taskhash:
                     continue
-                if dataCache.basetaskhash[k] != self.basehash[k]:
+                if dataCaches[mc].basetaskhash[k] != self.basehash[k]:
                     bb.error("Bitbake's cached basehash does not match the one we just generated (%s)!" % k)
-                    bb.error("The mismatched hashes were %s and %s" % (dataCache.basetaskhash[k], self.basehash[k]))
-                self.dump_sigtask(fn, task, dataCache.stamp[fn], True)
+                    bb.error("The mismatched hashes were %s and %s" % (dataCaches[mc].basetaskhash[k], self.basehash[k]))
+                self.dump_sigtask(fn, task, dataCaches[mc].stamp[fn], True)
 
 class SignatureGeneratorBasicHash(SignatureGeneratorBasic):
     name = "basichash"
@@ -368,10 +366,12 @@
 def compare_sigfiles(a, b, recursecb = None):
     output = []
 
-    p1 = pickle.Unpickler(open(a, "rb"))
-    a_data = p1.load()
-    p2 = pickle.Unpickler(open(b, "rb"))
-    b_data = p2.load()
+    with open(a, 'rb') as f:
+        p1 = pickle.Unpickler(f)
+        a_data = p1.load()
+    with open(b, 'rb') as f:
+        p2 = pickle.Unpickler(f)
+        b_data = p2.load()
 
     def dict_diff(a, b, whitelist=set()):
         sa = set(a.keys())
@@ -453,6 +453,11 @@
         for dep in changed:
             output.append("Variable %s value changed from '%s' to '%s'" % (dep, a_data['varvals'][dep], b_data['varvals'][dep]))
 
+    if not 'file_checksum_values' in a_data:
+         a_data['file_checksum_values'] = {}
+    if not 'file_checksum_values' in b_data:
+         b_data['file_checksum_values'] = {}
+
     changed, added, removed = file_checksums_diff(a_data['file_checksum_values'], b_data['file_checksum_values'])
     if changed:
         for f, old, new in changed:
@@ -464,6 +469,10 @@
         for f in removed:
             output.append("Dependency on checksum of file %s was removed" % (f))
 
+    if not 'runtaskdeps' in a_data:
+         a_data['runtaskdeps'] = {}
+    if not 'runtaskdeps' in b_data:
+         b_data['runtaskdeps'] = {}
 
     if len(a_data['runtaskdeps']) != len(b_data['runtaskdeps']):
         changed = ["Number of task dependencies changed"]
@@ -536,7 +545,7 @@
         if val is not None:
             basedata = basedata + str(val)
 
-    return hashlib.md5(basedata).hexdigest()
+    return hashlib.md5(basedata.encode("utf-8")).hexdigest()
 
 def calc_taskhash(sigdata):
     data = sigdata['basehash']
@@ -553,14 +562,15 @@
         else:
             data = data + sigdata['taint']
 
-    return hashlib.md5(data).hexdigest()
+    return hashlib.md5(data.encode("utf-8")).hexdigest()
 
 
 def dump_sigfile(a):
     output = []
 
-    p1 = pickle.Unpickler(open(a, "rb"))
-    a_data = p1.load()
+    with open(a, 'rb') as f:
+        p1 = pickle.Unpickler(f)
+        a_data = p1.load()
 
     output.append("basewhitelist: %s" % (a_data['basewhitelist']))
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/taskdata.py b/import-layers/yocto-poky/bitbake/lib/bb/taskdata.py
index 9ae52d7..d8bdbca 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/taskdata.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/taskdata.py
@@ -37,27 +37,24 @@
     return any(name == target or re.match(name, target)
                for name in strings)
 
+class TaskEntry:
+    def __init__(self):
+        self.tdepends = []
+        self.idepends = []
+        self.irdepends = []
+
 class TaskData:
     """
     BitBake Task Data implementation
     """
     def __init__(self, abort = True, tryaltconfigs = False, skiplist = None, allowincomplete = False):
-        self.build_names_index = []
-        self.run_names_index = []
-        self.fn_index = []
-
         self.build_targets = {}
         self.run_targets = {}
 
         self.external_targets = []
 
-        self.tasks_fnid = []
-        self.tasks_name = []
-        self.tasks_tdepends = []
-        self.tasks_idepends = []
-        self.tasks_irdepends = []
-        # Cache to speed up task ID lookups
-        self.tasks_lookup = {}
+        self.seenfns = []
+        self.taskentries = {}
 
         self.depids = {}
         self.rdepids = {}
@@ -66,7 +63,7 @@
 
         self.failed_deps = []
         self.failed_rdeps = []
-        self.failed_fnids = []
+        self.failed_fns = []
 
         self.abort = abort
         self.tryaltconfigs = tryaltconfigs
@@ -74,88 +71,6 @@
 
         self.skiplist = skiplist
 
-    def getbuild_id(self, name):
-        """
-        Return an ID number for the build target name.
-        If it doesn't exist, create one.
-        """
-        if not name in self.build_names_index:
-            self.build_names_index.append(name)
-            return len(self.build_names_index) - 1
-
-        return self.build_names_index.index(name)
-
-    def getrun_id(self, name):
-        """
-        Return an ID number for the run target name.
-        If it doesn't exist, create one.
-        """
-        if not name in self.run_names_index:
-            self.run_names_index.append(name)
-            return len(self.run_names_index) - 1
-
-        return self.run_names_index.index(name)
-
-    def getfn_id(self, name):
-        """
-        Return an ID number for the filename.
-        If it doesn't exist, create one.
-        """
-        if not name in self.fn_index:
-            self.fn_index.append(name)
-            return len(self.fn_index) - 1
-
-        return self.fn_index.index(name)
-
-    def gettask_ids(self, fnid):
-        """
-        Return an array of the ID numbers matching a given fnid.
-        """
-        ids = []
-        if fnid in self.tasks_lookup:
-            for task in self.tasks_lookup[fnid]:
-                ids.append(self.tasks_lookup[fnid][task])
-        return ids
-
-    def gettask_id_fromfnid(self, fnid, task):
-        """
-        Return an ID number for the task matching fnid and task.
-        """
-        if fnid in self.tasks_lookup:
-            if task in self.tasks_lookup[fnid]:
-                return self.tasks_lookup[fnid][task]
-
-        return None
-
-    def gettask_id(self, fn, task, create = True):
-        """
-        Return an ID number for the task matching fn and task.
-        If it doesn't exist, create one by default.
-        Optionally return None instead.
-        """
-        fnid = self.getfn_id(fn)
-
-        if fnid in self.tasks_lookup:
-            if task in self.tasks_lookup[fnid]:
-                return self.tasks_lookup[fnid][task]
-
-        if not create:
-            return None
-
-        self.tasks_name.append(task)
-        self.tasks_fnid.append(fnid)
-        self.tasks_tdepends.append([])
-        self.tasks_idepends.append([])
-        self.tasks_irdepends.append([])
-
-        listid = len(self.tasks_name) - 1
-
-        if fnid not in self.tasks_lookup:
-            self.tasks_lookup[fnid] = {}
-        self.tasks_lookup[fnid][task] = listid
-
-        return listid
-
     def add_tasks(self, fn, dataCache):
         """
         Add tasks for a given fn to the database
@@ -163,29 +78,31 @@
 
         task_deps = dataCache.task_deps[fn]
 
-        fnid = self.getfn_id(fn)
-
-        if fnid in self.failed_fnids:
+        if fn in self.failed_fns:
             bb.msg.fatal("TaskData", "Trying to re-add a failed file? Something is broken...")
 
         # Check if we've already seen this fn
-        if fnid in self.tasks_fnid:
+        if fn in self.seenfns:
             return
 
+        self.seenfns.append(fn)
+
         self.add_extra_deps(fn, dataCache)
 
         for task in task_deps['tasks']:
 
+            tid = "%s:%s" % (fn, task)
+            self.taskentries[tid] = TaskEntry()
+
             # Work out task dependencies
             parentids = []
             for dep in task_deps['parents'][task]:
                 if dep not in task_deps['tasks']:
                     bb.debug(2, "Not adding dependeny of %s on %s since %s does not exist" % (task, dep, dep))
                     continue
-                parentid = self.gettask_id(fn, dep)
+                parentid = "%s:%s" % (fn, dep)
                 parentids.append(parentid)
-            taskid = self.gettask_id(fn, task)
-            self.tasks_tdepends[taskid].extend(parentids)
+            self.taskentries[tid].tdepends.extend(parentids)
 
             # Touch all intertask dependencies
             if 'depends' in task_deps and task in task_deps['depends']:
@@ -194,29 +111,30 @@
                     if dep:
                         if ":" not in dep:
                             bb.msg.fatal("TaskData", "Error for %s, dependency %s does not contain ':' character\n. Task 'depends' should be specified in the form 'packagename:task'" % (fn, dep))
-                        ids.append(((self.getbuild_id(dep.split(":")[0])), dep.split(":")[1]))
-                self.tasks_idepends[taskid].extend(ids)
+                        ids.append(((dep.split(":")[0]), dep.split(":")[1]))
+                        self.seen_build_target(dep.split(":")[0])
+                self.taskentries[tid].idepends.extend(ids)
             if 'rdepends' in task_deps and task in task_deps['rdepends']:
                 ids = []
                 for dep in task_deps['rdepends'][task].split():
                     if dep:
                         if ":" not in dep:
                             bb.msg.fatal("TaskData", "Error for %s, dependency %s does not contain ':' character\n. Task 'rdepends' should be specified in the form 'packagename:task'" % (fn, dep))
-                        ids.append(((self.getrun_id(dep.split(":")[0])), dep.split(":")[1]))
-                self.tasks_irdepends[taskid].extend(ids)
-
+                        ids.append(((dep.split(":")[0]), dep.split(":")[1]))
+                        self.seen_run_target(dep.split(":")[0])
+                self.taskentries[tid].irdepends.extend(ids)
 
         # Work out build dependencies
-        if not fnid in self.depids:
-            dependids = {}
+        if not fn in self.depids:
+            dependids = set()
             for depend in dataCache.deps[fn]:
-                dependids[self.getbuild_id(depend)] = None
-            self.depids[fnid] = dependids.keys()
+                dependids.add(depend)
+            self.depids[fn] = list(dependids)
             logger.debug(2, "Added dependencies %s for %s", str(dataCache.deps[fn]), fn)
 
         # Work out runtime dependencies
-        if not fnid in self.rdepids:
-            rdependids = {}
+        if not fn in self.rdepids:
+            rdependids = set()
             rdepends = dataCache.rundeps[fn]
             rrecs = dataCache.runrecs[fn]
             rdependlist = []
@@ -224,24 +142,26 @@
             for package in rdepends:
                 for rdepend in rdepends[package]:
                     rdependlist.append(rdepend)
-                    rdependids[self.getrun_id(rdepend)] = None
+                    rdependids.add(rdepend)
             for package in rrecs:
                 for rdepend in rrecs[package]:
                     rreclist.append(rdepend)
-                    rdependids[self.getrun_id(rdepend)] = None
+                    rdependids.add(rdepend)
             if rdependlist:
                 logger.debug(2, "Added runtime dependencies %s for %s", str(rdependlist), fn)
             if rreclist:
                 logger.debug(2, "Added runtime recommendations %s for %s", str(rreclist), fn)
-            self.rdepids[fnid] = rdependids.keys()
+            self.rdepids[fn] = list(rdependids)
 
-        for dep in self.depids[fnid]:
+        for dep in self.depids[fn]:
+            self.seen_build_target(dep)
             if dep in self.failed_deps:
-                self.fail_fnid(fnid)
+                self.fail_fn(fn)
                 return
-        for dep in self.rdepids[fnid]:
+        for dep in self.rdepids[fn]:
+            self.seen_run_target(dep)
             if dep in self.failed_rdeps:
-                self.fail_fnid(fnid)
+                self.fail_fn(fn)
                 return
 
     def add_extra_deps(self, fn, dataCache):
@@ -263,9 +183,7 @@
         """
         Have we a build target matching this name?
         """
-        targetid = self.getbuild_id(target)
-
-        if targetid in self.build_targets:
+        if target in self.build_targets and self.build_targets[target]:
             return True
         return False
 
@@ -273,50 +191,54 @@
         """
         Have we a runtime target matching this name?
         """
-        targetid = self.getrun_id(target)
-
-        if targetid in self.run_targets:
+        if target in self.run_targets and self.run_targets[target]:
             return True
         return False
 
+    def seen_build_target(self, name):
+        """
+        Maintain a list of build targets
+        """
+        if name not in self.build_targets:
+            self.build_targets[name] = []
+
     def add_build_target(self, fn, item):
         """
         Add a build target.
         If already present, append the provider fn to the list
         """
-        targetid = self.getbuild_id(item)
-        fnid = self.getfn_id(fn)
-
-        if targetid in self.build_targets:
-            if fnid in self.build_targets[targetid]:
+        if item in self.build_targets:
+            if fn in self.build_targets[item]:
                 return
-            self.build_targets[targetid].append(fnid)
+            self.build_targets[item].append(fn)
             return
-        self.build_targets[targetid] = [fnid]
+        self.build_targets[item] = [fn]
+
+    def seen_run_target(self, name):
+        """
+        Maintain a list of runtime build targets
+        """
+        if name not in self.run_targets:
+            self.run_targets[name] = []
 
     def add_runtime_target(self, fn, item):
         """
         Add a runtime target.
         If already present, append the provider fn to the list
         """
-        targetid = self.getrun_id(item)
-        fnid = self.getfn_id(fn)
-
-        if targetid in self.run_targets:
-            if fnid in self.run_targets[targetid]:
+        if item in self.run_targets:
+            if fn in self.run_targets[item]:
                 return
-            self.run_targets[targetid].append(fnid)
+            self.run_targets[item].append(fn)
             return
-        self.run_targets[targetid] = [fnid]
+        self.run_targets[item] = [fn]
 
-    def mark_external_target(self, item):
+    def mark_external_target(self, target):
         """
         Mark a build target as being externally requested
         """
-        targetid = self.getbuild_id(item)
-
-        if targetid not in self.external_targets:
-            self.external_targets.append(targetid)
+        if target not in self.external_targets:
+            self.external_targets.append(target)
 
     def get_unresolved_build_targets(self, dataCache):
         """
@@ -324,12 +246,12 @@
         are unknown.
         """
         unresolved = []
-        for target in self.build_names_index:
+        for target in self.build_targets:
             if re_match_strings(target, dataCache.ignored_dependencies):
                 continue
-            if self.build_names_index.index(target) in self.failed_deps:
+            if target in self.failed_deps:
                 continue
-            if not self.have_build_target(target):
+            if not self.build_targets[target]:
                 unresolved.append(target)
         return unresolved
 
@@ -339,12 +261,12 @@
         are unknown.
         """
         unresolved = []
-        for target in self.run_names_index:
+        for target in self.run_targets:
             if re_match_strings(target, dataCache.ignored_dependencies):
                 continue
-            if self.run_names_index.index(target) in self.failed_rdeps:
+            if target in self.failed_rdeps:
                 continue
-            if not self.have_runtime_target(target):
+            if not self.run_targets[target]:
                 unresolved.append(target)
         return unresolved
 
@@ -352,50 +274,26 @@
         """
         Return a list of providers of item
         """
-        targetid = self.getbuild_id(item)
+        return self.build_targets[item]
 
-        return self.build_targets[targetid]
-
-    def get_dependees(self, itemid):
+    def get_dependees(self, item):
         """
         Return a list of targets which depend on item
         """
         dependees = []
-        for fnid in self.depids:
-            if itemid in self.depids[fnid]:
-                dependees.append(fnid)
+        for fn in self.depids:
+            if item in self.depids[fn]:
+                dependees.append(fn)
         return dependees
 
-    def get_dependees_str(self, item):
-        """
-        Return a list of targets which depend on item as a user readable string
-        """
-        itemid = self.getbuild_id(item)
-        dependees = []
-        for fnid in self.depids:
-            if itemid in self.depids[fnid]:
-                dependees.append(self.fn_index[fnid])
-        return dependees
-
-    def get_rdependees(self, itemid):
+    def get_rdependees(self, item):
         """
         Return a list of targets which depend on runtime item
         """
         dependees = []
-        for fnid in self.rdepids:
-            if itemid in self.rdepids[fnid]:
-                dependees.append(fnid)
-        return dependees
-
-    def get_rdependees_str(self, item):
-        """
-        Return a list of targets which depend on runtime item as a user readable string
-        """
-        itemid = self.getrun_id(item)
-        dependees = []
-        for fnid in self.rdepids:
-            if itemid in self.rdepids[fnid]:
-                dependees.append(self.fn_index[fnid])
+        for fn in self.rdepids:
+            if item in self.rdepids[fn]:
+                dependees.append(fn)
         return dependees
 
     def get_reasons(self, item, runtime=False):
@@ -431,7 +329,7 @@
         except bb.providers.NoProvider:
             if self.abort:
                 raise
-            self.remove_buildtarget(self.getbuild_id(item))
+            self.remove_buildtarget(item)
 
         self.mark_external_target(item)
 
@@ -446,14 +344,14 @@
             return
 
         if not item in dataCache.providers:
-            close_matches = self.get_close_matches(item, dataCache.providers.keys())
+            close_matches = self.get_close_matches(item, list(dataCache.providers.keys()))
             # Is it in RuntimeProviders ?
             all_p = bb.providers.getRuntimeProviders(dataCache, item)
             for fn in all_p:
                 new = dataCache.pkg_fn[fn] + " RPROVIDES " + item
                 if new not in close_matches:
                     close_matches.append(new)
-            bb.event.fire(bb.event.NoProvider(item, dependees=self.get_dependees_str(item), reasons=self.get_reasons(item), close_matches=close_matches), cfgData)
+            bb.event.fire(bb.event.NoProvider(item, dependees=self.get_dependees(item), reasons=self.get_reasons(item), close_matches=close_matches), cfgData)
             raise bb.providers.NoProvider(item)
 
         if self.have_build_target(item):
@@ -462,10 +360,10 @@
         all_p = dataCache.providers[item]
 
         eligible, foundUnique = bb.providers.filterProviders(all_p, item, cfgData, dataCache)
-        eligible = [p for p in eligible if not self.getfn_id(p) in self.failed_fnids]
+        eligible = [p for p in eligible if not p in self.failed_fns]
 
         if not eligible:
-            bb.event.fire(bb.event.NoProvider(item, dependees=self.get_dependees_str(item), reasons=["No eligible PROVIDERs exist for '%s'" % item]), cfgData)
+            bb.event.fire(bb.event.NoProvider(item, dependees=self.get_dependees(item), reasons=["No eligible PROVIDERs exist for '%s'" % item]), cfgData)
             raise bb.providers.NoProvider(item)
 
         if len(eligible) > 1 and foundUnique == False:
@@ -477,8 +375,7 @@
             self.consider_msgs_cache.append(item)
 
         for fn in eligible:
-            fnid = self.getfn_id(fn)
-            if fnid in self.failed_fnids:
+            if fn in self.failed_fns:
                 continue
             logger.debug(2, "adding %s to satisfy %s", fn, item)
             self.add_build_target(fn, item)
@@ -502,14 +399,14 @@
         all_p = bb.providers.getRuntimeProviders(dataCache, item)
 
         if not all_p:
-            bb.event.fire(bb.event.NoProvider(item, runtime=True, dependees=self.get_rdependees_str(item), reasons=self.get_reasons(item, True)), cfgData)
+            bb.event.fire(bb.event.NoProvider(item, runtime=True, dependees=self.get_rdependees(item), reasons=self.get_reasons(item, True)), cfgData)
             raise bb.providers.NoRProvider(item)
 
         eligible, numberPreferred = bb.providers.filterProvidersRunTime(all_p, item, cfgData, dataCache)
-        eligible = [p for p in eligible if not self.getfn_id(p) in self.failed_fnids]
+        eligible = [p for p in eligible if not p in self.failed_fns]
 
         if not eligible:
-            bb.event.fire(bb.event.NoProvider(item, runtime=True, dependees=self.get_rdependees_str(item), reasons=["No eligible RPROVIDERs exist for '%s'" % item]), cfgData)
+            bb.event.fire(bb.event.NoProvider(item, runtime=True, dependees=self.get_rdependees(item), reasons=["No eligible RPROVIDERs exist for '%s'" % item]), cfgData)
             raise bb.providers.NoRProvider(item)
 
         if len(eligible) > 1 and numberPreferred == 0:
@@ -531,82 +428,80 @@
 
         # run through the list until we find one that we can build
         for fn in eligible:
-            fnid = self.getfn_id(fn)
-            if fnid in self.failed_fnids:
+            if fn in self.failed_fns:
                 continue
             logger.debug(2, "adding '%s' to satisfy runtime '%s'", fn, item)
             self.add_runtime_target(fn, item)
             self.add_tasks(fn, dataCache)
 
-    def fail_fnid(self, fnid, missing_list=None):
+    def fail_fn(self, fn, missing_list=None):
         """
         Mark a file as failed (unbuildable)
         Remove any references from build and runtime provider lists
 
         missing_list, A list of missing requirements for this target
         """
-        if fnid in self.failed_fnids:
+        if fn in self.failed_fns:
             return
         if not missing_list:
             missing_list = []
-        logger.debug(1, "File '%s' is unbuildable, removing...", self.fn_index[fnid])
-        self.failed_fnids.append(fnid)
+        logger.debug(1, "File '%s' is unbuildable, removing...", fn)
+        self.failed_fns.append(fn)
         for target in self.build_targets:
-            if fnid in self.build_targets[target]:
-                self.build_targets[target].remove(fnid)
+            if fn in self.build_targets[target]:
+                self.build_targets[target].remove(fn)
                 if len(self.build_targets[target]) == 0:
                     self.remove_buildtarget(target, missing_list)
         for target in self.run_targets:
-            if fnid in self.run_targets[target]:
-                self.run_targets[target].remove(fnid)
+            if fn in self.run_targets[target]:
+                self.run_targets[target].remove(fn)
                 if len(self.run_targets[target]) == 0:
                     self.remove_runtarget(target, missing_list)
 
-    def remove_buildtarget(self, targetid, missing_list=None):
+    def remove_buildtarget(self, target, missing_list=None):
         """
         Mark a build target as failed (unbuildable)
         Trigger removal of any files that have this as a dependency
         """
         if not missing_list:
-            missing_list = [self.build_names_index[targetid]]
+            missing_list = [target]
         else:
-            missing_list = [self.build_names_index[targetid]] + missing_list
-        logger.verbose("Target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s", self.build_names_index[targetid], missing_list)
-        self.failed_deps.append(targetid)
-        dependees = self.get_dependees(targetid)
-        for fnid in dependees:
-            self.fail_fnid(fnid, missing_list)
-        for taskid in xrange(len(self.tasks_idepends)):
-            idepends = self.tasks_idepends[taskid]
-            for (idependid, idependtask) in idepends:
-                if idependid == targetid:
-                    self.fail_fnid(self.tasks_fnid[taskid], missing_list)
+            missing_list = [target] + missing_list
+        logger.verbose("Target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s", target, missing_list)
+        self.failed_deps.append(target)
+        dependees = self.get_dependees(target)
+        for fn in dependees:
+            self.fail_fn(fn, missing_list)
+        for tid in self.taskentries:
+            for (idepend, idependtask) in self.taskentries[tid].idepends:
+                if idepend == target:
+                    fn = tid.rsplit(":",1)[0]
+                    self.fail_fn(fn, missing_list)
 
-        if self.abort and targetid in self.external_targets:
-            target = self.build_names_index[targetid]
+        if self.abort and target in self.external_targets:
             logger.error("Required build target '%s' has no buildable providers.\nMissing or unbuildable dependency chain was: %s", target, missing_list)
             raise bb.providers.NoProvider(target)
 
-    def remove_runtarget(self, targetid, missing_list=None):
+    def remove_runtarget(self, target, missing_list=None):
         """
         Mark a run target as failed (unbuildable)
         Trigger removal of any files that have this as a dependency
         """
         if not missing_list:
-            missing_list = [self.run_names_index[targetid]]
+            missing_list = [target]
         else:
-            missing_list = [self.run_names_index[targetid]] + missing_list
+            missing_list = [target] + missing_list
 
-        logger.info("Runtime target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s", self.run_names_index[targetid], missing_list)
-        self.failed_rdeps.append(targetid)
-        dependees = self.get_rdependees(targetid)
-        for fnid in dependees:
-            self.fail_fnid(fnid, missing_list)
-        for taskid in xrange(len(self.tasks_irdepends)):
-            irdepends = self.tasks_irdepends[taskid]
-            for (idependid, idependtask) in irdepends:
-                if idependid == targetid:
-                    self.fail_fnid(self.tasks_fnid[taskid], missing_list)
+        logger.info("Runtime target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s", target, missing_list)
+        self.failed_rdeps.append(target)
+        dependees = self.get_rdependees(target)
+        for fn in dependees:
+            self.fail_fn(fn, missing_list)
+        for tid in self.taskentries:
+            for (idepend, idependtask) in self.taskentries[tid].irdepends:
+                if idepend == target:
+                    fn = tid.rsplit(":",1)[0]
+                    self.fail_fn(fn, missing_list)
 
     def add_unresolved(self, cfgData, dataCache):
         """
@@ -620,17 +515,16 @@
                     self.add_provider_internal(cfgData, dataCache, target)
                     added = added + 1
                 except bb.providers.NoProvider:
-                    targetid = self.getbuild_id(target)
-                    if self.abort and targetid in self.external_targets and not self.allowincomplete:
+                    if self.abort and target in self.external_targets and not self.allowincomplete:
                         raise
                     if not self.allowincomplete:
-                        self.remove_buildtarget(targetid)
+                        self.remove_buildtarget(target)
             for target in self.get_unresolved_run_targets(dataCache):
                 try:
                     self.add_rprovider(cfgData, dataCache, target)
                     added = added + 1
                 except (bb.providers.NoRProvider, bb.providers.MultipleRProvider):
-                    self.remove_runtarget(self.getrun_id(target))
+                    self.remove_runtarget(target)
             logger.debug(1, "Resolved " + str(added) + " extra dependencies")
             if added == 0:
                 break
@@ -638,13 +532,13 @@
 
     def get_providermap(self, prefix=None):
         provmap = {}
-        for name in self.build_names_index:
+        for name in self.build_targets:
             if prefix and not name.startswith(prefix):
                 continue
             if self.have_build_target(name):
                 provider = self.get_provider(name)
                 if provider:
-                    provmap[name] = self.fn_index[provider[0]]
+                    provmap[name] = provider[0]
         return provmap
 
     def dump_data(self):
@@ -652,39 +546,37 @@
         Dump some debug information on the internal data structures
         """
         logger.debug(3, "build_names:")
-        logger.debug(3, ", ".join(self.build_names_index))
+        logger.debug(3, ", ".join(self.build_targets))
 
         logger.debug(3, "run_names:")
-        logger.debug(3, ", ".join(self.run_names_index))
+        logger.debug(3, ", ".join(self.run_targets))
 
         logger.debug(3, "build_targets:")
-        for buildid in xrange(len(self.build_names_index)):
-            target = self.build_names_index[buildid]
+        for target in self.build_targets:
             targets = "None"
-            if buildid in self.build_targets:
-                targets = self.build_targets[buildid]
-            logger.debug(3, " (%s)%s: %s", buildid, target, targets)
+            if target in self.build_targets:
+                targets = self.build_targets[target]
+            logger.debug(3, " %s: %s", target, targets)
 
         logger.debug(3, "run_targets:")
-        for runid in xrange(len(self.run_names_index)):
-            target = self.run_names_index[runid]
+        for target in self.run_targets:
             targets = "None"
-            if runid in self.run_targets:
-                targets = self.run_targets[runid]
-            logger.debug(3, " (%s)%s: %s", runid, target, targets)
+            if target in self.run_targets:
+                targets = self.run_targets[target]
+            logger.debug(3, " %s: %s", target, targets)
 
         logger.debug(3, "tasks:")
-        for task in xrange(len(self.tasks_name)):
-            logger.debug(3, " (%s)%s - %s: %s",
-                       task,
-                       self.fn_index[self.tasks_fnid[task]],
-                       self.tasks_name[task],
-                       self.tasks_tdepends[task])
+        for tid in self.taskentries:
+            logger.debug(3, " %s: %s %s %s",
+                       tid,
+                       self.taskentries[tid].idepends,
+                       self.taskentries[tid].irdepends,
+                       self.taskentries[tid].tdepends)
 
         logger.debug(3, "dependency ids (per fn):")
-        for fnid in self.depids:
-            logger.debug(3, " %s %s: %s", fnid, self.fn_index[fnid], self.depids[fnid])
+        for fn in self.depids:
+            logger.debug(3, " %s: %s", fn, self.depids[fn])
 
         logger.debug(3, "runtime dependency ids (per fn):")
-        for fnid in self.rdepids:
-            logger.debug(3, " %s %s: %s", fnid, self.fn_index[fnid], self.rdepids[fnid])
+        for fn in self.rdepids:
+            logger.debug(3, " %s: %s", fn, self.rdepids[fn])
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/tests/codeparser.py b/import-layers/yocto-poky/bitbake/lib/bb/tests/codeparser.py
index bb820e4..14f0e25 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/tests/codeparser.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/tests/codeparser.py
@@ -191,8 +191,8 @@
         if hasattr(bb.utils, "_context"):
             self.context = bb.utils._context
         else:
-            import __builtin__
-            self.context = __builtin__.__dict__
+            import builtins
+            self.context = builtins.__dict__
 
     def parseExpression(self, exp):
         parsedvar = self.d.expandWithRefs(exp, None)
@@ -302,7 +302,7 @@
 
         deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
 
-        self.assertEquals(deps, set(["somevar", "bar", "something", "inexpand", "test", "test2", "a"]))
+        self.assertEqual(deps, set(["somevar", "bar", "something", "inexpand", "test", "test2", "a"]))
 
 
     shelldata = """
@@ -349,7 +349,7 @@
 
         deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
 
-        self.assertEquals(deps, set(["somevar", "inverted"] + execs))
+        self.assertEqual(deps, set(["somevar", "inverted"] + execs))
 
 
     def test_vardeps(self):
@@ -359,7 +359,7 @@
 
         deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
 
-        self.assertEquals(deps, set(["oe_libinstall"]))
+        self.assertEqual(deps, set(["oe_libinstall"]))
 
     def test_vardeps_expand(self):
         self.d.setVar("oe_libinstall", "echo test")
@@ -368,7 +368,7 @@
 
         deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d)
 
-        self.assertEquals(deps, set(["oe_libinstall"]))
+        self.assertEqual(deps, set(["oe_libinstall"]))
 
     #Currently no wildcard support
     #def test_vardeps_wildcards(self):
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/tests/cow.py b/import-layers/yocto-poky/bitbake/lib/bb/tests/cow.py
index 35c5841..d149d84 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/tests/cow.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/tests/cow.py
@@ -34,14 +34,14 @@
         from bb.COW import COWDictBase
         a = COWDictBase.copy()
 
-        self.assertEquals(False, a.has_key('a'))
+        self.assertEqual(False, 'a' in a)
 
         a['a'] = 'a'
         a['b'] = 'b'
-        self.assertEquals(True, a.has_key('a'))
-        self.assertEquals(True, a.has_key('b'))
-        self.assertEquals('a', a['a'] )
-        self.assertEquals('b', a['b'] )
+        self.assertEqual(True, 'a' in a)
+        self.assertEqual(True, 'b' in a)
+        self.assertEqual('a', a['a'] )
+        self.assertEqual('b', a['b'] )
 
     def testCopyCopy(self):
         """
@@ -60,31 +60,31 @@
         c['a'] = 30
 
         # test separation of the two instances
-        self.assertEquals(False, c.has_key('c'))
-        self.assertEquals(30, c['a'])
-        self.assertEquals(10, b['a'])
+        self.assertEqual(False, 'c' in c)
+        self.assertEqual(30, c['a'])
+        self.assertEqual(10, b['a'])
 
         # test copy
         b_2 = b.copy()
         c_2 = c.copy()
 
-        self.assertEquals(False, c_2.has_key('c'))
-        self.assertEquals(10, b_2['a'])
+        self.assertEqual(False, 'c' in c_2)
+        self.assertEqual(10, b_2['a'])
 
         b_2['d'] = 40
-        self.assertEquals(False, c_2.has_key('d'))
-        self.assertEquals(True, b_2.has_key('d'))
-        self.assertEquals(40, b_2['d'])
-        self.assertEquals(False, b.has_key('d'))
-        self.assertEquals(False, c.has_key('d'))
+        self.assertEqual(False, 'd' in c_2)
+        self.assertEqual(True, 'd' in b_2)
+        self.assertEqual(40, b_2['d'])
+        self.assertEqual(False, 'd' in b)
+        self.assertEqual(False, 'd' in c)
 
         c_2['d'] = 30
-        self.assertEquals(True, c_2.has_key('d'))
-        self.assertEquals(True, b_2.has_key('d'))
-        self.assertEquals(30, c_2['d'])
-        self.assertEquals(40, b_2['d'])
-        self.assertEquals(False, b.has_key('d'))
-        self.assertEquals(False, c.has_key('d'))
+        self.assertEqual(True, 'd' in c_2)
+        self.assertEqual(True, 'd' in b_2)
+        self.assertEqual(30, c_2['d'])
+        self.assertEqual(40, b_2['d'])
+        self.assertEqual(False, 'd' in b)
+        self.assertEqual(False, 'd' in c)
 
         # test copy of the copy
         c_3 = c_2.copy()
@@ -92,19 +92,19 @@
         b_3_2 = b_2.copy()
 
         c_3['e'] = 4711
-        self.assertEquals(4711, c_3['e'])
-        self.assertEquals(False, c_2.has_key('e'))
-        self.assertEquals(False, b_3.has_key('e'))
-        self.assertEquals(False, b_3_2.has_key('e'))
-        self.assertEquals(False, b_2.has_key('e'))
+        self.assertEqual(4711, c_3['e'])
+        self.assertEqual(False, 'e' in c_2)
+        self.assertEqual(False, 'e' in b_3)
+        self.assertEqual(False, 'e' in b_3_2)
+        self.assertEqual(False, 'e' in b_2)
 
         b_3['e'] = 'viel'
-        self.assertEquals('viel', b_3['e'])
-        self.assertEquals(4711, c_3['e'])
-        self.assertEquals(False, c_2.has_key('e'))
-        self.assertEquals(True, b_3.has_key('e'))
-        self.assertEquals(False, b_3_2.has_key('e'))
-        self.assertEquals(False, b_2.has_key('e'))
+        self.assertEqual('viel', b_3['e'])
+        self.assertEqual(4711, c_3['e'])
+        self.assertEqual(False, 'e' in c_2)
+        self.assertEqual(True, 'e' in b_3)
+        self.assertEqual(False, 'e' in b_3_2)
+        self.assertEqual(False, 'e' in b_2)
 
     def testCow(self):
         from bb.COW import COWDictBase
@@ -115,12 +115,12 @@
 
         copy = c.copy()
 
-        self.assertEquals(1027, c['123'])
-        self.assertEquals(4711, c['other'])
-        self.assertEquals({'abc':10, 'bcd':20}, c['d'])
-        self.assertEquals(1027, copy['123'])
-        self.assertEquals(4711, copy['other'])
-        self.assertEquals({'abc':10, 'bcd':20}, copy['d'])
+        self.assertEqual(1027, c['123'])
+        self.assertEqual(4711, c['other'])
+        self.assertEqual({'abc':10, 'bcd':20}, c['d'])
+        self.assertEqual(1027, copy['123'])
+        self.assertEqual(4711, copy['other'])
+        self.assertEqual({'abc':10, 'bcd':20}, copy['d'])
 
         # cow it now
         copy['123'] = 1028
@@ -128,9 +128,9 @@
         copy['d']['abc'] = 20
 
 
-        self.assertEquals(1027, c['123'])
-        self.assertEquals(4711, c['other'])
-        self.assertEquals({'abc':10, 'bcd':20}, c['d'])
-        self.assertEquals(1028, copy['123'])
-        self.assertEquals(4712, copy['other'])
-        self.assertEquals({'abc':20, 'bcd':20}, copy['d'])
+        self.assertEqual(1027, c['123'])
+        self.assertEqual(4711, c['other'])
+        self.assertEqual({'abc':10, 'bcd':20}, c['d'])
+        self.assertEqual(1028, copy['123'])
+        self.assertEqual(4712, copy['other'])
+        self.assertEqual({'abc':20, 'bcd':20}, copy['d'])
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/tests/data.py b/import-layers/yocto-poky/bitbake/lib/bb/tests/data.py
index 1223230..b54eb06 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/tests/data.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/tests/data.py
@@ -147,14 +147,14 @@
         self.assertEqual(self.d.getVar("foo", False), None)
 
     def test_keys(self):
-        keys = self.d.keys()
-        self.assertEqual(keys, ['value_of_foo', 'foo', 'bar'])
+        keys = list(self.d.keys())
+        self.assertCountEqual(keys, ['value_of_foo', 'foo', 'bar'])
 
     def test_keys_deletion(self):
         newd = bb.data.createCopy(self.d)
         newd.delVar("bar")
-        keys = newd.keys()
-        self.assertEqual(keys, ['value_of_foo', 'foo'])
+        keys = list(newd.keys())
+        self.assertCountEqual(keys, ['value_of_foo', 'foo'])
 
 class TestNestedExpansions(unittest.TestCase):
     def setUp(self):
@@ -334,7 +334,7 @@
         self.d.setVar("TEST2_bar", "testvalue2")
         bb.data.update_data(self.d)
         self.assertEqual(self.d.getVar("TEST2", True), "testvalue2")
-        self.assertItemsEqual(self.d.keys(), ['TEST', 'TEST2', 'OVERRIDES', 'TEST2_bar'])
+        self.assertCountEqual(list(self.d.keys()), ['TEST', 'TEST2', 'OVERRIDES', 'TEST2_bar'])
 
     def test_multiple_override(self):
         self.d.setVar("TEST_bar", "testvalue2")
@@ -342,7 +342,7 @@
         self.d.setVar("TEST_foo", "testvalue4")
         bb.data.update_data(self.d)
         self.assertEqual(self.d.getVar("TEST", True), "testvalue3")
-        self.assertItemsEqual(self.d.keys(), ['TEST', 'TEST_foo', 'OVERRIDES', 'TEST_bar', 'TEST_local'])
+        self.assertCountEqual(list(self.d.keys()), ['TEST', 'TEST_foo', 'OVERRIDES', 'TEST_bar', 'TEST_local'])
 
     def test_multiple_combined_overrides(self):
         self.d.setVar("TEST_local_foo_bar", "testvalue3")
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/tests/fetch.py b/import-layers/yocto-poky/bitbake/lib/bb/tests/fetch.py
index 4ba688b..0fd2c02 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/tests/fetch.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/tests/fetch.py
@@ -22,6 +22,7 @@
 import unittest
 import tempfile
 import subprocess
+import collections
 import os
 from bb.fetch2 import URI
 from bb.fetch2 import FetchMethod
@@ -133,10 +134,10 @@
             'userinfo': 'anoncvs:anonymous',
             'username': 'anoncvs',
             'password': 'anonymous',
-            'params': {
-                'tag': 'V0-99-81',
-                'module': 'familiar/dist/ipkg'
-            },
+            'params': collections.OrderedDict([
+                ('tag', 'V0-99-81'),
+                ('module', 'familiar/dist/ipkg')
+            ]),
             'query': {},
             'relative': False
         },
@@ -359,7 +360,10 @@
 
     def tearDown(self):
         os.chdir(self.origdir)
-        bb.utils.prunedir(self.tempdir)
+        if os.environ.get("BB_TMPDIR_NOCLEAN") == "yes":
+            print("Not cleaning up %s. Please remove manually." % self.tempdir)
+        else:
+            bb.utils.prunedir(self.tempdir)
 
 class MirrorUriTest(FetcherTest):
 
@@ -450,7 +454,7 @@
 class FetcherLocalTest(FetcherTest):
     def setUp(self):
         def touch(fn):
-            with file(fn, 'a'):
+            with open(fn, 'a'):
                 os.utime(fn, None)
 
         super(FetcherLocalTest, self).setUp()
@@ -504,6 +508,15 @@
         tree = self.fetchUnpack(['file://dir/subdir/e;subdir=bar'])
         self.assertEqual(tree, ['bar/dir/subdir/e'])
 
+    def test_local_absolutedir(self):
+        # Unpacking to an absolute path that is a subdirectory of the root
+        # should work
+        tree = self.fetchUnpack(['file://a;subdir=%s' % os.path.join(self.unpackdir, 'bar')])
+
+        # Unpacking to an absolute path outside of the root should fail
+        with self.assertRaises(bb.fetch2.UnpackError):
+            self.fetchUnpack(['file://a;subdir=/bin/sh'])
+
 class FetcherNetworkTest(FetcherTest):
 
     if os.environ.get("BB_SKIP_NETTESTS") == "yes":
@@ -584,6 +597,36 @@
             url1 = url2 = "git://git.openembedded.org/bitbake;rev=270a05b0b4ba0959fe0624d2a4885d7b70426da5;tag=270a05b0b4ba0959fe0624d2a4885d7b70426da5"
             self.assertRaises(bb.fetch.FetchError, self.gitfetcher, url1, url2)
 
+        def test_gitfetch_localusehead(self):
+            # Create dummy local Git repo
+            src_dir = tempfile.mkdtemp(dir=self.tempdir,
+                                       prefix='gitfetch_localusehead_')
+            src_dir = os.path.abspath(src_dir)
+            bb.process.run("git init", cwd=src_dir)
+            bb.process.run("git commit --allow-empty -m'Dummy commit'",
+                           cwd=src_dir)
+            # Use other branch than master
+            bb.process.run("git checkout -b my-devel", cwd=src_dir)
+            bb.process.run("git commit --allow-empty -m'Dummy commit 2'",
+                           cwd=src_dir)
+            stdout = bb.process.run("git rev-parse HEAD", cwd=src_dir)
+            orig_rev = stdout[0].strip()
+
+            # Fetch and check revision
+            self.d.setVar("SRCREV", "AUTOINC")
+            url = "git://" + src_dir + ";protocol=file;usehead=1"
+            fetcher = bb.fetch.Fetch([url], self.d)
+            fetcher.download()
+            fetcher.unpack(self.unpackdir)
+            stdout = bb.process.run("git rev-parse HEAD",
+                                    cwd=os.path.join(self.unpackdir, 'git'))
+            unpack_rev = stdout[0].strip()
+            self.assertEqual(orig_rev, unpack_rev)
+
+        def test_gitfetch_remoteusehead(self):
+            url = "git://git.openembedded.org/bitbake;usehead=1"
+            self.assertRaises(bb.fetch.ParameterError, self.gitfetcher, url, url)
+
         def test_gitfetch_premirror(self):
             url1 = "git://git.openembedded.org/bitbake"
             url2 = "git://someserver.org/bitbake"
@@ -660,7 +703,7 @@
     datatable = {
        "http://www.google.com/index.html" : ('http', 'www.google.com', '/index.html', '', '', {}),
        "cvs://anoncvs@cvs.handhelds.org/cvs;module=familiar/dist/ipkg" : ('cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', '', {'module': 'familiar/dist/ipkg'}),
-       "cvs://anoncvs:anonymous@cvs.handhelds.org/cvs;tag=V0-99-81;module=familiar/dist/ipkg" : ('cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', 'anonymous', {'tag': 'V0-99-81', 'module': 'familiar/dist/ipkg'}),
+       "cvs://anoncvs:anonymous@cvs.handhelds.org/cvs;tag=V0-99-81;module=familiar/dist/ipkg" : ('cvs', 'cvs.handhelds.org', '/cvs', 'anoncvs', 'anonymous', collections.OrderedDict([('tag', 'V0-99-81'), ('module', 'familiar/dist/ipkg')])),
        "git://git.openembedded.org/bitbake;branch=@foo" : ('git', 'git.openembedded.org', '/bitbake', '', '', {'branch': '@foo'}),
        "file://somelocation;someparam=1": ('file', '', 'somelocation', '', '', {'someparam': '1'}),
     }
@@ -767,7 +810,6 @@
 
 class FetchCheckStatusTest(FetcherTest):
     test_wget_uris = ["http://www.cups.org/software/1.7.2/cups-1.7.2-source.tar.bz2",
-                      "http://www.cups.org/software/ipptool/ipptool-20130731-linux-ubuntu-i686.tar.gz",
                       "http://www.cups.org/",
                       "http://downloads.yoctoproject.org/releases/sato/sato-engine-0.1.tar.gz",
                       "http://downloads.yoctoproject.org/releases/sato/sato-engine-0.2.tar.gz",
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/tests/parse.py b/import-layers/yocto-poky/bitbake/lib/bb/tests/parse.py
index 6beb76a..0b2706a 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/tests/parse.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/tests/parse.py
@@ -50,7 +50,7 @@
     def parsehelper(self, content, suffix = ".bb"):
 
         f = tempfile.NamedTemporaryFile(suffix = suffix)
-        f.write(content)
+        f.write(bytes(content, "utf-8"))
         f.flush()
         os.chdir(os.path.dirname(f.name))
         return f
@@ -68,6 +68,23 @@
         with self.assertRaises(bb.parse.ParseError):
             d = bb.parse.handle(f.name, self.d)['']
 
+    unsettest = """
+A = "1"
+B = "2"
+B[flag] = "3"
+
+unset A
+unset B[flag]
+"""
+
+    def test_parse_unset(self):
+        f = self.parsehelper(self.unsettest)
+        d = bb.parse.handle(f.name, self.d)['']
+        self.assertEqual(d.getVar("A", True), None)
+        self.assertEqual(d.getVarFlag("A","flag", True), None)
+        self.assertEqual(d.getVar("B", True), "2")
+        
+
     overridetest = """
 RRECOMMENDS_${PN} = "a"
 RRECOMMENDS_${PN}_libc = "b"
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py b/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py
index 7aa653f..8899e86 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py
@@ -59,6 +59,12 @@
     def register_idle_function(self, function, data):
         pass
 
+    def __enter__(self):
+        return self
+
+    def __exit__(self, type, value, traceback):
+        self.shutdown()
+
     def parseRecipes(self):
         sys.stderr.write("Parsing recipes..")
         self.logger.setLevel(logging.WARNING)
@@ -74,16 +80,52 @@
         self.logger.setLevel(logging.INFO)
         sys.stderr.write("done.\n")
 
-        self.cooker_data = self.cooker.recipecache
+        self.cooker_data = self.cooker.recipecaches['']
 
     def prepare(self, config_only = False):
         if not self.cooker_data:
             if config_only:
                 self.cooker.parseConfiguration()
-                self.cooker_data = self.cooker.recipecache
+                self.cooker_data = self.cooker.recipecaches['']
             else:
                 self.parseRecipes()
 
+    def parse_recipe_file(self, fn, appends=True, appendlist=None, config_data=None):
+        """
+        Parse the specified recipe file (with or without bbappends)
+        and return a datastore object representing the environment
+        for the recipe.
+        Parameters:
+            fn: recipe file to parse - can be a file path or virtual
+                specification
+            appends: True to apply bbappends, False otherwise
+            appendlist: optional list of bbappend files to apply, if you
+                        want to filter them
+            config_data: custom config datastore to use. NOTE: if you
+                         specify config_data then you cannot use a virtual
+                         specification for fn.
+        """
+        if appends and appendlist == []:
+            appends = False
+        if appends:
+            if appendlist:
+                appendfiles = appendlist
+            else:
+                if not hasattr(self.cooker, 'collection'):
+                    raise Exception('You must call tinfoil.prepare() with config_only=False in order to get bbappends')
+                appendfiles = self.cooker.collection.get_file_appends(fn)
+        else:
+            appendfiles = None
+        if config_data:
+            # We have to use a different function here if we're passing in a datastore
+            localdata = bb.data.createCopy(config_data)
+            envdata = bb.cache.parse_recipe(localdata, fn, appendfiles)['']
+        else:
+            # Use the standard path
+            parser = bb.cache.NoCache(self.cooker.databuilder)
+            envdata = parser.loadDataFull(fn, appendfiles)
+        return envdata
+
     def shutdown(self):
         self.cooker.shutdown(force=True)
         self.cooker.post_serve()
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 9397905..5b69660 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/buildinfohelper.py
@@ -21,28 +21,29 @@
 import re
 import os
 
-os.environ["DJANGO_SETTINGS_MODULE"] = "toaster.toastermain.settings"
-
-
 import django
 from django.utils import timezone
 
+import toaster
+# Add toaster module to the search path to help django.setup() find the right
+# modules
+sys.path.insert(0, os.path.dirname(toaster.__file__))
 
-def _configure_toaster():
-    """ Add toaster to sys path for importing modules
-    """
-    sys.path.append(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'toaster'))
-_configure_toaster()
-
+#Set the DJANGO_SETTINGS_MODULE if it's not already set
+os.environ["DJANGO_SETTINGS_MODULE"] =\
+    os.environ.get("DJANGO_SETTINGS_MODULE",
+                   "toaster.toastermain.settings")
+# Setup django framework (needs to be done before importing modules)
 django.setup()
 
 from orm.models import Build, Task, Recipe, Layer_Version, Layer, Target, LogMessage, HelpText
-from orm.models import Target_Image_File, BuildArtifact
+from orm.models import Target_Image_File, TargetKernelFile, TargetSDKFile
 from orm.models import Variable, VariableHistory
 from orm.models import Package, Package_File, Target_Installed_Package, Target_File
 from orm.models import Task_Dependency, Package_Dependency
 from orm.models import Recipe_Dependency, Provides
 from orm.models import Project, CustomImagePackage, CustomImageRecipe
+from orm.models import signal_runbuilds
 
 from bldcontrol.models import BuildEnvironment, BuildRequest
 
@@ -54,11 +55,11 @@
 
 from django.db import transaction, connection
 
+
 # pylint: disable=invalid-name
 # the logger name is standard throughout BitBake
 logger = logging.getLogger("ToasterLogger")
 
-
 class NotExisting(Exception):
     pass
 
@@ -121,11 +122,27 @@
 
         return vars(self)[dictname][key]
 
+    def get_similar_target_with_image_files(self, target):
+        """
+        Get a Target object "similar" to target; i.e. with the same target
+        name ('core-image-minimal' etc.) and machine.
+        """
+        return target.get_similar_target_with_image_files()
+
+    def get_similar_target_with_sdk_files(self, target):
+        return target.get_similar_target_with_sdk_files()
+
+    def clone_image_artifacts(self, target_from, target_to):
+        target_to.clone_image_artifacts_from(target_from)
+
+    def clone_sdk_artifacts(self, target_from, target_to):
+        target_to.clone_sdk_artifacts_from(target_from)
+
     def _timestamp_to_datetime(self, secs):
         """
         Convert timestamp in seconds to Python datetime
         """
-        return datetime(1970, 1, 1) + timedelta(seconds=secs)
+        return timezone.make_aware(datetime(1970, 1, 1) + timedelta(seconds=secs))
 
     # pylint: disable=no-self-use
     # we disable detection of no self use in functions because the methods actually work on the object
@@ -134,55 +151,33 @@
     # pylint: disable=bad-continuation
     # we do not follow the python conventions for continuation indentation due to long lines here
 
-    def create_build_object(self, build_info, brbe, project_id):
-        assert 'machine' in build_info
-        assert 'distro' in build_info
-        assert 'distro_version' in build_info
-        assert 'started_on' in build_info
-        assert 'cooker_log_path' in build_info
-        assert 'build_name' in build_info
-        assert 'bitbake_version' in build_info
-
+    def get_or_create_build_object(self, brbe):
         prj = None
         buildrequest = None
-        if brbe is not None:            # this build was triggered by a request from a user
+        if brbe is not None:
+            # Toaster-triggered build
             logger.debug(1, "buildinfohelper: brbe is %s" % brbe)
             br, _ = brbe.split(":")
-            buildrequest = BuildRequest.objects.get(pk = br)
+            buildrequest = BuildRequest.objects.get(pk=br)
             prj = buildrequest.project
-
-        elif project_id is not None:    # this build was triggered by an external system for a specific project
-            logger.debug(1, "buildinfohelper: project is %s" % prj)
-            prj = Project.objects.get(pk = project_id)
-
-        else:                           # this build was triggered by a legacy system, or command line interactive mode
+        else:
+            # CLI build
             prj = Project.objects.get_or_create_default_project()
             logger.debug(1, "buildinfohelper: project is not specified, defaulting to %s" % prj)
 
-
         if buildrequest is not None:
+            # reuse existing Build object
             build = buildrequest.build
-            logger.info("Updating existing build, with %s", build_info)
             build.project = prj
-            build.machine=build_info['machine']
-            build.distro=build_info['distro']
-            build.distro_version=build_info['distro_version']
-            build.cooker_log_path=build_info['cooker_log_path']
-            build.build_name=build_info['build_name']
-            build.bitbake_version=build_info['bitbake_version']
             build.save()
-
         else:
+            # create new Build object
+            now = timezone.now()
             build = Build.objects.create(
-                                    project = prj,
-                                    machine=build_info['machine'],
-                                    distro=build_info['distro'],
-                                    distro_version=build_info['distro_version'],
-                                    started_on=build_info['started_on'],
-                                    completed_on=build_info['started_on'],
-                                    cooker_log_path=build_info['cooker_log_path'],
-                                    build_name=build_info['build_name'],
-                                    bitbake_version=build_info['bitbake_version'])
+                project=prj,
+                started_on=now,
+                completed_on=now,
+                build_name='')
 
         logger.debug(1, "buildinfohelper: build is created %s" % build)
 
@@ -192,8 +187,17 @@
 
         return build
 
+    def update_build(self, build, data_dict):
+        for key in data_dict:
+            setattr(build, key, data_dict[key])
+        build.save()
+
     @staticmethod
     def get_or_create_targets(target_info):
+        """
+        NB get_or_create() is used here because for Toaster-triggered builds,
+        we already created the targets when the build was triggered.
+        """
         result = []
         for target in target_info['targets']:
             task = ''
@@ -203,17 +207,14 @@
                 task = task[3:]
             if task == 'build':
                 task = ''
-            obj, created = Target.objects.get_or_create(build=target_info['build'],
-                                                        target=target)
-            if created:
-                obj.is_image = False
-                if task:
-                    obj.task = task
-                obj.save()
+
+            obj, _ = Target.objects.get_or_create(build=target_info['build'],
+                                                  target=target,
+                                                  task=task)
             result.append(obj)
         return result
 
-    def update_build_object(self, build, errors, warnings, taskfailures):
+    def update_build_stats_and_outcome(self, build, errors, warnings, taskfailures):
         assert isinstance(build,Build)
         assert isinstance(errors, int)
         assert isinstance(warnings, int)
@@ -234,11 +235,16 @@
         build.completed_on = timezone.now()
         build.outcome = outcome
         build.save()
+        signal_runbuilds()
 
     def update_target_set_license_manifest(self, target, license_manifest_path):
         target.license_manifest_path = license_manifest_path
         target.save()
 
+    def update_target_set_package_manifest(self, target, package_manifest_path):
+        target.package_manifest_path = package_manifest_path
+        target.save()
+
     def update_task_object(self, build, task_name, recipe_name, task_stats):
         """
         Find the task for build which matches the recipe and task name
@@ -372,7 +378,7 @@
             layer_copy, c = Layer_Version.objects.get_or_create(
                 build=build_obj,
                 layer=layer_obj.layer,
-                up_branch=layer_obj.up_branch,
+                release=layer_obj.release,
                 branch=layer_version_information['branch'],
                 commit=layer_version_information['commit'],
                 local_path=layer_version_information['local_path'],
@@ -415,13 +421,24 @@
         assert 'name' in layer_information
         assert 'layer_index_url' in layer_information
 
+        # From command line builds we have no brbe as the request is directly
+        # from bitbake
         if brbe is None:
-            layer_object, _ = Layer.objects.get_or_create(
-                                name=layer_information['name'],
-                                layer_index_url=layer_information['layer_index_url'])
+            # If we don't have git commit sha then we're using a non-git
+            # layer so set the layer_source_dir to identify it as such
+            if not layer_information['version']['commit']:
+                local_source_dir = layer_information["local_path"]
+            else:
+                local_source_dir = None
+
+            layer_object, _ = \
+                Layer.objects.get_or_create(
+                    name=layer_information['name'],
+                    local_source_dir=local_source_dir,
+                    layer_index_url=layer_information['layer_index_url'])
+
             return layer_object
         else:
-            # we are under managed mode; we must match the layer used in the Project Layer
             br_id, be_id = brbe.split(":")
 
             # find layer by checkout path;
@@ -434,7 +451,11 @@
             # note that this is different
             buildrequest = BuildRequest.objects.get(pk = br_id)
             for brl in buildrequest.brlayer_set.all():
-                localdirname = os.path.join(bc.getGitCloneDirectory(brl.giturl, brl.commit), brl.dirpath)
+                if brl.local_source_dir:
+                    localdirname = os.path.join(brl.local_source_dir,
+                                                brl.dirpath)
+                else:
+                    localdirname = os.path.join(bc.getGitCloneDirectory(brl.giturl, brl.commit), brl.dirpath)
                 # we get a relative path, unless running in HEAD mode where the path is absolute
                 if not localdirname.startswith("/"):
                     localdirname = os.path.join(bc.be.sourcedir, localdirname)
@@ -446,6 +467,11 @@
                     if brl.layer_version:
                         return brl.layer_version
 
+                # This might be a local layer (i.e. no git info) so try
+                # matching local_source_dir
+                if brl.local_source_dir and brl.local_source_dir == layer_information["local_path"]:
+                    return brl.layer_version
+
                     # we matched the BRLayer, but we need the layer_version that generated this BR; reverse of the Project.schedule_build()
                     #logger.debug(1, "Matched %s to BRlayer %s" % (pformat(layer_information["local_path"]), localdirname))
 
@@ -494,7 +520,7 @@
             parent_obj = self._cached_get(Target_File, target = target_obj, path = parent_path, inodetype = Target_File.ITYPE_DIRECTORY)
             tf_obj = Target_File.objects.create(
                         target = target_obj,
-                        path = unicode(path, 'utf-8'),
+                        path = path,
                         size = size,
                         inodetype = Target_File.ITYPE_DIRECTORY,
                         permission = permission,
@@ -519,7 +545,7 @@
 
             tf_obj = Target_File.objects.create(
                         target = target_obj,
-                        path = unicode(path, 'utf-8'),
+                        path = path,
                         size = size,
                         inodetype = inodetype,
                         permission = permission,
@@ -550,9 +576,7 @@
                 filetarget_path = "/".join(fcpl)
 
             try:
-                filetarget_obj = Target_File.objects.get(
-                                     target = target_obj,
-                                     path = unicode(filetarget_path, 'utf-8'))
+                filetarget_obj = Target_File.objects.get(target = target_obj, path = filetarget_path)
             except Target_File.DoesNotExist:
                 # we might have an invalid link; no way to detect this. just set it to None
                 filetarget_obj = None
@@ -561,7 +585,7 @@
 
             tf_obj = Target_File.objects.create(
                         target = target_obj,
-                        path = unicode(path, 'utf-8'),
+                        path = path,
                         size = size,
                         inodetype = Target_File.ITYPE_SYMLINK,
                         permission = permission,
@@ -606,8 +630,8 @@
                         Recipe,
                         name=built_recipe.name,
                         layer_version__build=None,
-                        layer_version__up_branch=
-                        built_recipe.layer_version.up_branch,
+                        layer_version__release=
+                        built_recipe.layer_version.release,
                         file_path=built_recipe.file_path,
                         version=built_recipe.version
                     )
@@ -664,8 +688,8 @@
                         dep_type = tdeptype,
                         target = target_obj))
                 except KeyError as e:
-                    logger.warn("Could not add dependency to the package %s "
-                                "because %s is an unknown package", p, px)
+                    logger.warning("Could not add dependency to the package %s "
+                                   "because %s is an unknown package", p, px)
 
         if len(packagedeps_objs) > 0:
             Package_Dependency.objects.bulk_create(packagedeps_objs)
@@ -673,23 +697,26 @@
             logger.info("No package dependencies created")
 
         if len(errormsg) > 0:
-            logger.warn("buildinfohelper: target_package_info could not identify recipes: \n%s", errormsg)
+            logger.warning("buildinfohelper: target_package_info could not identify recipes: \n%s", errormsg)
 
     def save_target_image_file_information(self, target_obj, file_name, file_size):
-        Target_Image_File.objects.create( target = target_obj,
-                            file_name = file_name,
-                            file_size = file_size)
+        Target_Image_File.objects.create(target=target_obj,
+            file_name=file_name, file_size=file_size)
 
-    def save_artifact_information(self, build_obj, file_name, file_size):
-        # we skip the image files from other builds
-        if Target_Image_File.objects.filter(file_name = file_name).count() > 0:
-            return
+    def save_target_kernel_file(self, target_obj, file_name, file_size):
+        """
+        Save kernel file (bzImage, modules*) information for a Target target_obj.
+        """
+        TargetKernelFile.objects.create(target=target_obj,
+            file_name=file_name, file_size=file_size)
 
-        # do not update artifacts found in other builds
-        if BuildArtifact.objects.filter(file_name = file_name).count() > 0:
-            return
-
-        BuildArtifact.objects.create(build = build_obj, file_name = file_name, file_size = file_size)
+    def save_target_sdk_file(self, target_obj, file_name, file_size):
+        """
+        Save SDK artifacts to the database, associating them with a
+        Target object.
+        """
+        TargetSDKFile.objects.create(target=target_obj, file_name=file_name,
+            file_size=file_size)
 
     def create_logmessage(self, log_information):
         assert 'build' in log_information
@@ -857,6 +884,11 @@
         Keeps in memory all data that needs matching before writing it to the database
     """
 
+    # tasks which produce image files; note we include '', as we set
+    # the task for a target to '' (i.e. 'build') if no target is
+    # explicitly defined
+    IMAGE_GENERATING_TASKS = ['', 'build', 'image', 'populate_sdk_ext']
+
     # pylint: disable=protected-access
     # the code will look into the protected variables of the event; no easy way around this
     # pylint: disable=bad-continuation
@@ -888,22 +920,55 @@
     ###################
     ## methods to convert event/external info into objects that the ORM layer uses
 
+    def _ensure_build(self):
+        """
+        Ensure the current build object exists and is up to date with
+        data on the bitbake server
+        """
+        if not 'build' in self.internal_state or not self.internal_state['build']:
+            # create the Build object
+            self.internal_state['build'] = \
+                self.orm_wrapper.get_or_create_build_object(self.brbe)
 
-    def _get_build_information(self, build_log_path):
+        build = self.internal_state['build']
+
+        # update missing fields on the Build object with found data
         build_info = {}
-        build_info['machine'] = self.server.runCommand(["getVariable", "MACHINE"])[0]
-        build_info['distro'] = self.server.runCommand(["getVariable", "DISTRO"])[0]
-        build_info['distro_version'] = self.server.runCommand(["getVariable", "DISTRO_VERSION"])[0]
-        build_info['started_on'] = timezone.now()
-        build_info['completed_on'] = timezone.now()
-        build_info['cooker_log_path'] = build_log_path
-        build_info['build_name'] = self.server.runCommand(["getVariable", "BUILDNAME"])[0]
-        build_info['bitbake_version'] = self.server.runCommand(["getVariable", "BB_VERSION"])[0]
-        build_info['project'] = self.project = self.server.runCommand(["getVariable", "TOASTER_PROJECT"])[0]
-        return build_info
+
+        # set to True if at least one field is going to be set
+        changed = False
+
+        if not build.build_name:
+            build_name = self.server.runCommand(["getVariable", "BUILDNAME"])[0]
+
+            # only reset the build name if the one on the server is actually
+            # a valid value for the build_name field
+            if build_name != None:
+                build_info['build_name'] = build_name
+                changed = True
+
+        if not build.machine:
+            build_info['machine'] = self.server.runCommand(["getVariable", "MACHINE"])[0]
+            changed = True
+
+        if not build.distro:
+            build_info['distro'] = self.server.runCommand(["getVariable", "DISTRO"])[0]
+            changed = True
+
+        if not build.distro_version:
+            build_info['distro_version'] = self.server.runCommand(["getVariable", "DISTRO_VERSION"])[0]
+            changed = True
+
+        if not build.bitbake_version:
+            build_info['bitbake_version'] = self.server.runCommand(["getVariable", "BB_VERSION"])[0]
+            changed = True
+
+        if changed:
+            self.orm_wrapper.update_build(self.internal_state['build'], build_info)
 
     def _get_task_information(self, event, recipe):
         assert 'taskname' in vars(event)
+        self._ensure_build()
 
         task_information = {}
         task_information['build'] = self.internal_state['build']
@@ -918,8 +983,7 @@
         return task_information
 
     def _get_layer_version_for_path(self, path):
-        assert path.startswith("/")
-        assert 'build' in self.internal_state
+        self._ensure_build()
 
         def _slkey_interactive(layer_version):
             assert isinstance(layer_version, Layer_Version)
@@ -930,9 +994,12 @@
             # we can match to the recipe file path
             if path.startswith(lvo.local_path):
                 return lvo
+            if lvo.layer.local_source_dir and \
+               path.startswith(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.warn("Could not match layer version for recipe path %s : %s", path, self.orm_wrapper.layer_version_objects)
+        logger.warning("Could not match layer version for recipe path %s : %s", path, self.orm_wrapper.layer_version_objects)
 
         #mockup the new layer
         unknown_layer, _ = Layer.objects.get_or_create(name="Unidentified layer", layer_index_url="")
@@ -963,6 +1030,8 @@
         return recipe_info
 
     def _get_path_information(self, task_object):
+        self._ensure_build()
+
         assert isinstance(task_object, Task)
         build_stats_format = "{tmpdir}/buildstats/{buildname}/{package}/"
         build_stats_path = []
@@ -1003,19 +1072,33 @@
                 self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer], self.brbe)] = layerinfos[layer]['version']
                 self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer], self.brbe)]['local_path'] = layerinfos[layer]['local_path']
             except NotExisting as nee:
-                logger.warn("buildinfohelper: cannot identify layer exception:%s ", nee)
+                logger.warning("buildinfohelper: cannot identify layer exception:%s ", nee)
 
+    def store_started_build(self):
+        self._ensure_build()
 
-    def store_started_build(self, event, build_log_path):
+    def save_build_log_file_path(self, build_log_path):
+        self._ensure_build()
+
+        if not self.internal_state['build'].cooker_log_path:
+            data_dict = {'cooker_log_path': build_log_path}
+            self.orm_wrapper.update_build(self.internal_state['build'], data_dict)
+
+    def save_build_targets(self, event):
+        self._ensure_build()
+
+        # create target information
         assert '_pkgs' in vars(event)
-        build_information = self._get_build_information(build_log_path)
+        target_information = {}
+        target_information['targets'] = event._pkgs
+        target_information['build'] = self.internal_state['build']
 
-        # Update brbe and project as they can be changed for every build
-        self.project = build_information['project']
+        self.internal_state['targets'] = self.orm_wrapper.get_or_create_targets(target_information)
 
-        build_obj = self.orm_wrapper.create_build_object(build_information, self.brbe, self.project)
+    def save_build_layers_and_variables(self):
+        self._ensure_build()
 
-        self.internal_state['build'] = build_obj
+        build_obj = self.internal_state['build']
 
         # save layer version information for this build
         if not 'lvs' in self.internal_state:
@@ -1026,13 +1109,6 @@
 
             del self.internal_state['lvs']
 
-        # create target information
-        target_information = {}
-        target_information['targets'] = event._pkgs
-        target_information['build'] = build_obj
-
-        self.internal_state['targets'] = self.orm_wrapper.get_or_create_targets(target_information)
-
         # Save build configuration
         data = self.server.runCommand(["getAllKeysWithFlags", ["doc", "func"]])[0]
 
@@ -1055,7 +1131,8 @@
                         abs_file_name = vh['file']
                         for pp in path_prefixes:
                             if abs_file_name.startswith(pp + "/"):
-                                vh['file']=abs_file_name[len(pp + "/"):]
+                                # preserve layer name in relative path
+                                vh['file']=abs_file_name[pp.rfind("/")+1:]
                                 break
 
         # save the variables
@@ -1063,35 +1140,48 @@
 
         return self.brbe
 
+    def set_recipes_to_parse(self, num_recipes):
+        """
+        Set the number of recipes which need to be parsed for this build.
+        This is set the first time ParseStarted is received by toasterui.
+        """
+        self._ensure_build()
+        self.internal_state['build'].recipes_to_parse = num_recipes
+        self.internal_state['build'].save()
+
+    def set_recipes_parsed(self, num_recipes):
+        """
+        Set the number of recipes parsed so far for this build; this is updated
+        each time a ParseProgress or ParseCompleted event is received by
+        toasterui.
+        """
+        self._ensure_build()
+        if num_recipes <= self.internal_state['build'].recipes_to_parse:
+            self.internal_state['build'].recipes_parsed = num_recipes
+            self.internal_state['build'].save()
 
     def update_target_image_file(self, event):
         evdata = BuildInfoHelper._get_data_from_event(event)
 
         for t in self.internal_state['targets']:
             if t.is_image == True:
-                output_files = list(evdata.viewkeys())
+                output_files = list(evdata.keys())
                 for output in output_files:
                     if t.target in output and 'rootfs' in output and not output.endswith(".manifest"):
                         self.orm_wrapper.save_target_image_file_information(t, output, evdata[output])
 
     def update_artifact_image_file(self, event):
+        self._ensure_build()
         evdata = BuildInfoHelper._get_data_from_event(event)
         for artifact_path in evdata.keys():
-            self.orm_wrapper.save_artifact_information(self.internal_state['build'], artifact_path, evdata[artifact_path])
+            self.orm_wrapper.save_artifact_information(
+                self.internal_state['build'], artifact_path,
+                evdata[artifact_path])
 
     def update_build_information(self, event, errors, warnings, taskfailures):
-        if 'build' in self.internal_state:
-            self.orm_wrapper.update_build_object(self.internal_state['build'], errors, warnings, taskfailures)
-
-
-    def store_license_manifest_path(self, event):
-        deploy_dir = BuildInfoHelper._get_data_from_event(event)['deploy_dir']
-        image_name = BuildInfoHelper._get_data_from_event(event)['image_name']
-        path = deploy_dir + "/licenses/" + image_name + "/license.manifest"
-        for target in self.internal_state['targets']:
-            if target.target in image_name:
-                self.orm_wrapper.update_target_set_license_manifest(target, path)
-
+        self._ensure_build()
+        self.orm_wrapper.update_build_stats_and_outcome(
+            self.internal_state['build'], errors, warnings, taskfailures)
 
     def store_started_task(self, event):
         assert isinstance(event, (bb.runqueue.sceneQueueTaskStarted, bb.runqueue.runQueueTaskStarted, bb.runqueue.runQueueTaskSkipped))
@@ -1134,6 +1224,7 @@
 
 
     def store_tasks_stats(self, event):
+        self._ensure_build()
         task_data = BuildInfoHelper._get_data_from_event(event)
 
         for (task_file, task_name, task_stats, recipe_name) in task_data:
@@ -1229,6 +1320,8 @@
 
 
     def store_target_package_data(self, event):
+        self._ensure_build()
+
         # for all image targets
         for target in self.internal_state['targets']:
             if target.is_image:
@@ -1240,17 +1333,32 @@
                     self.orm_wrapper.save_target_package_information(self.internal_state['build'], target, imgdata, pkgdata, self.internal_state['recipes'], built_package=True)
                     self.orm_wrapper.save_target_package_information(self.internal_state['build'], target, imgdata.copy(), pkgdata, self.internal_state['recipes'], built_package=False)
                 except KeyError as e:
-                    logger.warn("KeyError in save_target_package_information"
-                                "%s ", e)
+                    logger.warning("KeyError in save_target_package_information"
+                                   "%s ", e)
 
-                try:
-                    self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata)
-                except KeyError as e:
-                    logger.warn("KeyError in save_target_file_information"
-                                "%s ", e)
+                # only try to find files in the image if the task for this
+                # target is one which produces image files; otherwise, the old
+                # list of files in the files-in-image.txt file will be
+                # appended to the target even if it didn't produce any images
+                if target.task in BuildInfoHelper.IMAGE_GENERATING_TASKS:
+                    try:
+                        self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata)
+                    except KeyError as e:
+                        logger.warning("KeyError in save_target_file_information"
+                                       "%s ", e)
 
 
 
+    def cancel_cli_build(self):
+        """
+        If a build is currently underway, set its state to CANCELLED;
+        note that this only gets called for command line builds which are
+        interrupted, so it doesn't touch any BuildRequest objects
+        """
+        self._ensure_build()
+        self.internal_state['build'].outcome = Build.CANCELLED
+        self.internal_state['build'].save()
+        signal_runbuilds()
 
     def store_dependency_information(self, event):
         assert '_depgraph' in vars(event)
@@ -1392,10 +1500,12 @@
         Task_Dependency.objects.bulk_create(taskdeps_objects)
 
         if len(errormsg) > 0:
-            logger.warn("buildinfohelper: dependency info not identify recipes: \n%s", errormsg)
+            logger.warning("buildinfohelper: dependency info not identify recipes: \n%s", errormsg)
 
 
     def store_build_package_information(self, event):
+        self._ensure_build()
+
         package_info = BuildInfoHelper._get_data_from_event(event)
         self.orm_wrapper.save_build_package_information(
             self.internal_state['build'],
@@ -1411,10 +1521,12 @@
 
     def _store_build_done(self, errorcode):
         logger.info("Build exited with errorcode %d", errorcode)
+
+        if not self.brbe:
+            return
+
         br_id, be_id = self.brbe.split(":")
-        be = BuildEnvironment.objects.get(pk = be_id)
-        be.lock = BuildEnvironment.LOCK_LOCK
-        be.save()
+
         br = BuildRequest.objects.get(pk = br_id)
 
         # if we're 'done' because we got cancelled update the build outcome
@@ -1432,6 +1544,10 @@
             br.state = BuildRequest.REQ_FAILED
         br.save()
 
+        be = BuildEnvironment.objects.get(pk = be_id)
+        be.lock = BuildEnvironment.LOCK_FREE
+        be.save()
+        signal_runbuilds()
 
     def store_log_error(self, text):
         mockevent = MockEvent()
@@ -1449,30 +1565,25 @@
         mockevent.lineno = -1
         self.store_log_event(mockevent)
 
-
     def store_log_event(self, event):
+        self._ensure_build()
+
         if event.levelno < formatter.WARNING:
             return
 
-        if 'args' in vars(event):
-            event.msg = event.msg % event.args
+        # early return for CLI builds
+        if self.brbe is None:
+            if not 'backlog' in self.internal_state:
+                self.internal_state['backlog'] = []
+            self.internal_state['backlog'].append(event)
+            return
 
-        if not 'build' in self.internal_state:
-            if self.brbe is None:
-                if not 'backlog' in self.internal_state:
-                    self.internal_state['backlog'] = []
-                self.internal_state['backlog'].append(event)
-                return
-            else:   # we're under Toaster control, the build is already created
-                br, _ = self.brbe.split(":")
-                buildrequest = BuildRequest.objects.get(pk = br)
-                self.internal_state['build'] = buildrequest.build
-
-        if 'build' in self.internal_state and 'backlog' in self.internal_state:
+        if 'backlog' in self.internal_state:
             # if we have a backlog of events, do our best to save them here
             if len(self.internal_state['backlog']):
                 tempevent = self.internal_state['backlog'].pop()
-                logger.debug(1, "buildinfohelper: Saving stored event %s " % tempevent)
+                logger.debug(1, "buildinfohelper: Saving stored event %s "
+                             % tempevent)
                 self.store_log_event(tempevent)
             else:
                 logger.info("buildinfohelper: All events saved")
@@ -1491,26 +1602,324 @@
         else:
             log_information['level'] = LogMessage.INFO
 
-        log_information['message'] = event.msg
+        log_information['message'] = event.getMessage()
         log_information['pathname'] = event.pathname
         log_information['lineno'] = event.lineno
         logger.info("Logging error 2: %s", log_information)
 
         self.orm_wrapper.create_logmessage(log_information)
 
+    def _get_filenames_from_image_license(self, image_license_manifest_path):
+        """
+        Find the FILES line in the image_license.manifest file,
+        which has the basenames of the bzImage and modules files
+        in this format:
+        FILES: bzImage--4.4.11+git0+3a5f494784_53e84104c5-r0-qemux86-20160603165040.bin modules--4.4.11+git0+3a5f494784_53e84104c5-r0-qemux86-20160603165040.tgz
+        """
+        files = []
+        with open(image_license_manifest_path) as image_license:
+            for line in image_license:
+                if line.startswith('FILES'):
+                    files_str = line.split(':')[1].strip()
+                    files_str = re.sub(r' {2,}', ' ', files_str)
+
+                    # ignore lines like "FILES:" with no filenames
+                    if files_str:
+                        files += files_str.split(' ')
+        return files
+
+    def _endswith(self, str_to_test, endings):
+        """
+        Returns True if str ends with one of the strings in the list
+        endings, False otherwise
+        """
+        endswith = False
+        for ending in endings:
+            if str_to_test.endswith(ending):
+                endswith = True
+                break
+        return endswith
+
+    def _get_image_files(self, deploy_dir_image, image_name, image_file_extensions):
+        """
+        Find files in deploy_dir_image whose basename starts with the
+        string image_name and ends with one of the strings in
+        image_file_extensions.
+
+        Returns a list of file dictionaries like
+
+        [
+            {
+                'path': '/path/to/image/file',
+                'size': <file size in bytes>
+            }
+        ]
+        """
+        image_files = []
+
+        for dirpath, _, filenames in os.walk(deploy_dir_image):
+            for filename in filenames:
+                if filename.startswith(image_name) and \
+                self._endswith(filename, image_file_extensions):
+                    image_file_path = os.path.join(dirpath, filename)
+                    image_file_size = os.stat(image_file_path).st_size
+
+                    image_files.append({
+                        'path': image_file_path,
+                        'size': image_file_size
+                    })
+
+        return image_files
+
+    def scan_image_artifacts(self):
+        """
+        Scan for built image artifacts in DEPLOY_DIR_IMAGE and associate them
+        with a Target object in self.internal_state['targets'].
+
+        We have two situations to handle:
+
+        1. This is the first time a target + machine has been built, so
+        add files from the DEPLOY_DIR_IMAGE to the target.
+
+        OR
+
+        2. There are no new files for the target (they were already produced by
+        a previous build), so copy them from the most recent previous build with
+        the same target, task and machine.
+        """
+        deploy_dir_image = \
+            self.server.runCommand(['getVariable', 'DEPLOY_DIR_IMAGE'])[0]
+
+        # if there's no DEPLOY_DIR_IMAGE, there aren't going to be
+        # any image artifacts, so we can return immediately
+        if not deploy_dir_image:
+            return
+
+        buildname = self.server.runCommand(['getVariable', 'BUILDNAME'])[0]
+        machine = self.server.runCommand(['getVariable', 'MACHINE'])[0]
+        image_name = self.server.runCommand(['getVariable', 'IMAGE_NAME'])[0]
+
+        # location of the manifest files for this build;
+        # note that this file is only produced if an image is produced
+        license_directory = \
+            self.server.runCommand(['getVariable', 'LICENSE_DIRECTORY'])[0]
+
+        # file name extensions for image files
+        image_file_extensions_unique = {}
+        image_fstypes = self.server.runCommand(
+            ['getVariable', 'IMAGE_FSTYPES'])[0]
+        if image_fstypes != None:
+            image_types_str = image_fstypes.strip()
+            image_file_extensions = re.sub(r' {2,}', ' ', image_types_str)
+            image_file_extensions_unique = set(image_file_extensions.split(' '))
+
+        targets = self.internal_state['targets']
+
+        # filter out anything which isn't an image target
+        image_targets = [target for target in targets if target.is_image]
+
+        for image_target in image_targets:
+            # this is set to True if we find at least one file relating to
+            # this target; if this remains False after the scan, we copy the
+            # files from the most-recent Target with the same target + machine
+            # onto this Target instead
+            has_files = False
+
+            # we construct this because by the time we reach
+            # BuildCompleted, this has reset to
+            # 'defaultpkgname-<MACHINE>-<BUILDNAME>';
+            # we need to change it to
+            # <TARGET>-<MACHINE>-<BUILDNAME>
+            real_image_name = re.sub(r'^defaultpkgname', image_target.target,
+                image_name)
+
+            image_license_manifest_path = os.path.join(
+                license_directory,
+                real_image_name,
+                'image_license.manifest')
+
+            image_package_manifest_path = os.path.join(
+                license_directory,
+                real_image_name,
+                'image_license.manifest')
+
+            # if image_license.manifest exists, we can read the names of
+            # bzImage, modules etc. files for this build from it, then look for
+            # them in the DEPLOY_DIR_IMAGE; note that this file is only produced
+            # if an image file was produced
+            if os.path.isfile(image_license_manifest_path):
+                has_files = True
+
+                basenames = self._get_filenames_from_image_license(
+                    image_license_manifest_path)
+
+                for basename in basenames:
+                    artifact_path = os.path.join(deploy_dir_image, basename)
+                    if not os.path.exists(artifact_path):
+                        logger.warning("artifact %s doesn't exist, skipping" % artifact_path)
+                        continue
+                    artifact_size = os.stat(artifact_path).st_size
+
+                    # note that the artifact will only be saved against this
+                    # build if it hasn't been already
+                    self.orm_wrapper.save_target_kernel_file(image_target,
+                        artifact_path, artifact_size)
+
+                # store the license manifest path on the target
+                # (this file is also created any time an image file is created)
+                license_manifest_path = os.path.join(license_directory,
+                    real_image_name, 'license.manifest')
+
+                self.orm_wrapper.update_target_set_license_manifest(
+                    image_target, license_manifest_path)
+
+                # store the package manifest path on the target (this file
+                # is created any time an image file is created)
+                package_manifest_path = os.path.join(deploy_dir_image,
+                    real_image_name + '.rootfs.manifest')
+
+                if os.path.exists(package_manifest_path):
+                    self.orm_wrapper.update_target_set_package_manifest(
+                        image_target, package_manifest_path)
+
+            # scan the directory for image files relating to this build
+            # (via real_image_name); note that we don't have to set
+            # has_files = True, as searching for the license manifest file
+            # will already have set it to true if at least one image file was
+            # produced; note that the real_image_name includes BUILDNAME, which
+            # in turn includes a timestamp; so if no files were produced for
+            # this timestamp (i.e. the build reused existing image files already
+            # in the directory), no files will be recorded against this target
+            image_files = self._get_image_files(deploy_dir_image,
+                real_image_name, image_file_extensions_unique)
+
+            for image_file in image_files:
+                self.orm_wrapper.save_target_image_file_information(
+                    image_target, image_file['path'], image_file['size'])
+
+            if not has_files:
+                # copy image files and build artifacts from the
+                # most-recently-built Target with the
+                # same target + machine as this Target; also copy the license
+                # manifest path, as that is not treated as an artifact and needs
+                # to be set separately
+                similar_target = \
+                    self.orm_wrapper.get_similar_target_with_image_files(
+                        image_target)
+
+                if similar_target:
+                    logger.info('image artifacts for target %s cloned from ' \
+                        'target %s' % (image_target.pk, similar_target.pk))
+                    self.orm_wrapper.clone_image_artifacts(similar_target,
+                        image_target)
+
+    def _get_sdk_targets(self):
+        """
+        Return targets which could generate SDK artifacts, i.e.
+        "do_populate_sdk" and "do_populate_sdk_ext".
+        """
+        return [target for target in self.internal_state['targets'] \
+            if target.task in ['populate_sdk', 'populate_sdk_ext']]
+
+    def scan_sdk_artifacts(self, event):
+        """
+        Note that we have to intercept an SDKArtifactInfo event from
+        toaster.bbclass (via toasterui) to get hold of the SDK variables we
+        need to be able to scan for files accurately: this is because
+        variables like TOOLCHAIN_OUTPUTNAME have reset to None by the time
+        BuildCompleted is fired by bitbake, so we have to get those values
+        while the build is still in progress.
+
+        For populate_sdk_ext, this runs twice, with two different
+        TOOLCHAIN_OUTPUTNAME settings, each of which will capture some of the
+        files in the SDK output directory.
+        """
+        sdk_vars = BuildInfoHelper._get_data_from_event(event)
+        toolchain_outputname = sdk_vars['TOOLCHAIN_OUTPUTNAME']
+
+        # targets which might have created SDK artifacts
+        sdk_targets = self._get_sdk_targets()
+
+        # location of SDK artifacts
+        tmpdir = self.server.runCommand(['getVariable', 'TMPDIR'])[0]
+        sdk_dir = os.path.join(tmpdir, 'deploy', 'sdk')
+
+        # all files in the SDK directory
+        artifacts = []
+        for dir_path, _, filenames in os.walk(sdk_dir):
+            for filename in filenames:
+                full_path = os.path.join(dir_path, filename)
+                if not os.path.islink(full_path):
+                    artifacts.append(full_path)
+
+        for sdk_target in sdk_targets:
+            # find files in the SDK directory which haven't already been
+            # recorded against a Target and whose basename matches
+            # TOOLCHAIN_OUTPUTNAME
+            for artifact_path in artifacts:
+                basename = os.path.basename(artifact_path)
+
+                toolchain_match = basename.startswith(toolchain_outputname)
+
+                # files which match the name of the target which produced them;
+                # for example,
+                # poky-glibc-x86_64-core-image-sato-i586-toolchain-ext-2.1+snapshot.sh
+                target_match = re.search(sdk_target.target, basename)
+
+                # targets which produce "*-nativesdk-*" files
+                is_ext_sdk_target = sdk_target.task in \
+                    ['do_populate_sdk_ext', 'populate_sdk_ext']
+
+                # SDK files which don't match the target name, i.e.
+                # x86_64-nativesdk-libc.*
+                # poky-glibc-x86_64-buildtools-tarball-i586-buildtools-nativesdk-standalone-2.1+snapshot*
+                is_ext_sdk_file = re.search('-nativesdk-', basename)
+
+                file_from_target = (toolchain_match and target_match) or \
+                    (is_ext_sdk_target and is_ext_sdk_file)
+
+                if file_from_target:
+                    # don't record the file if it's already been added to this
+                    # target
+                    matching_files = TargetSDKFile.objects.filter(
+                        target=sdk_target, file_name=artifact_path)
+
+                    if matching_files.count() == 0:
+                        artifact_size = os.stat(artifact_path).st_size
+
+                        self.orm_wrapper.save_target_sdk_file(
+                            sdk_target, artifact_path, artifact_size)
+
+    def clone_required_sdk_artifacts(self):
+        """
+        If an SDK target doesn't have any SDK artifacts, this means that
+        the postfuncs of populate_sdk or populate_sdk_ext didn't fire, which
+        in turn means that the targets of this build didn't generate any new
+        artifacts.
+
+        In this case, clone SDK artifacts for targets in the current build
+        from existing targets for this build.
+        """
+        sdk_targets = self._get_sdk_targets()
+        for sdk_target in sdk_targets:
+            # only clone for SDK targets which have no TargetSDKFiles yet
+            if sdk_target.targetsdkfile_set.all().count() == 0:
+                similar_target = \
+                    self.orm_wrapper.get_similar_target_with_sdk_files(
+                        sdk_target)
+                if similar_target:
+                    logger.info('SDK artifacts for target %s cloned from ' \
+                        'target %s' % (sdk_target.pk, similar_target.pk))
+                    self.orm_wrapper.clone_sdk_artifacts(similar_target,
+                        sdk_target)
+
     def close(self, errorcode):
-        if self.brbe is not None:
-            self._store_build_done(errorcode)
+        self._store_build_done(errorcode)
 
         if 'backlog' in self.internal_state:
-            if 'build' in self.internal_state:
-                # we save missed events in the database for the current build
-                tempevent = self.internal_state['backlog'].pop()
-                self.store_log_event(tempevent)
-            else:
-                # we have no build, and we still have events; something amazingly wrong happend
-                for event in self.internal_state['backlog']:
-                    logger.error("UNSAVED log: %s", event.msg)
+            # we save missed events in the database for the current build
+            tempevent = self.internal_state['backlog'].pop()
+            self.store_log_event(tempevent)
 
         if not connection.features.autocommits_when_autocommit_is_off:
             transaction.set_autocommit(True)
@@ -1519,3 +1928,7 @@
         # being incorrectly attached to the previous Toaster-triggered build;
         # see https://bugzilla.yoctoproject.org/show_bug.cgi?id=9021
         self.brbe = None
+
+        # unset the internal Build object to prevent it being reused for the
+        # next build
+        self.internal_state['build'] = None
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/__init__.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/__init__.py
deleted file mode 100644
index b7cbe1a..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Gtk+ UI pieces for BitBake
-#
-# Copyright (C) 2006-2007 Richard Purdie
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py
deleted file mode 100644
index c679f9a..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/crumbsdialog.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2012   Intel Corporation
-#
-# Authored by Joshua Lock <josh@linux.intel.com>
-# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gtk
-
-"""
-The following are convenience classes for implementing GNOME HIG compliant
-BitBake GUI's
-In summary: spacing = 12px, border-width = 6px
-"""
-
-class CrumbsDialog(gtk.Dialog):
-    """
-    A GNOME HIG compliant dialog widget.
-    Add buttons with gtk.Dialog.add_button or gtk.Dialog.add_buttons
-    """
-    def __init__(self, title="", parent=None, flags=0, buttons=None):
-        super(CrumbsDialog, self).__init__(title, parent, flags, buttons)
-
-        self.set_property("has-separator", False) # note: deprecated in 2.22
-
-        self.set_border_width(6)
-        self.vbox.set_property("spacing", 12)
-        self.action_area.set_property("spacing", 12)
-        self.action_area.set_property("border-width", 6)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py
deleted file mode 100644
index 3b998e4..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2012   Intel Corporation
-#
-# Authored by Joshua Lock <josh@linux.intel.com>
-# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import glib
-import gtk
-from bb.ui.crumbs.hobwidget import HobIconChecker
-from bb.ui.crumbs.hig.crumbsdialog import CrumbsDialog
-
-"""
-The following are convenience classes for implementing GNOME HIG compliant
-BitBake GUI's
-In summary: spacing = 12px, border-width = 6px
-"""
-
-class CrumbsMessageDialog(gtk.MessageDialog):
-    """
-    A GNOME HIG compliant dialog widget.
-    Add buttons with gtk.Dialog.add_button or gtk.Dialog.add_buttons
-    """
-    def __init__(self, parent = None, label="", dialog_type = gtk.MESSAGE_QUESTION, msg=""):
-        super(CrumbsMessageDialog, self).__init__(None,
-                                                  gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
-                                                  dialog_type,
-                                                  gtk.BUTTONS_NONE,
-                                                  None)
-
-        self.set_skip_taskbar_hint(False)
-
-        self.set_markup(label)
-
-        if 0 <= len(msg) < 300:
-            self.format_secondary_markup(msg)
-        else:
-            vbox = self.get_message_area()
-            vbox.set_border_width(1)
-            vbox.set_property("spacing", 12)
-            self.textWindow = gtk.ScrolledWindow()
-            self.textWindow.set_shadow_type(gtk.SHADOW_IN)
-            self.textWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-            self.msgView = gtk.TextView()
-            self.msgView.set_editable(False)
-            self.msgView.set_wrap_mode(gtk.WRAP_WORD)
-            self.msgView.set_cursor_visible(False)
-            self.msgView.set_size_request(300, 300)
-            self.buf = gtk.TextBuffer()
-            self.buf.set_text(msg)
-            self.msgView.set_buffer(self.buf)
-            self.textWindow.add(self.msgView)
-            self.msgView.show()
-            vbox.add(self.textWindow)
-            self.textWindow.show()
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py
deleted file mode 100644
index a13fff9..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/deployimagedialog.py
+++ /dev/null
@@ -1,219 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2012   Intel Corporation
-#
-# Authored by Joshua Lock <josh@linux.intel.com>
-# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import glob
-import gtk
-import gobject
-import os
-import re
-import shlex
-import subprocess
-import tempfile
-from bb.ui.crumbs.hobwidget import hic, HobButton
-from bb.ui.crumbs.progressbar import HobProgressBar
-import bb.ui.crumbs.utils
-import bb.process
-from bb.ui.crumbs.hig.crumbsdialog import CrumbsDialog
-from bb.ui.crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog
-
-"""
-The following are convenience classes for implementing GNOME HIG compliant
-BitBake GUI's
-In summary: spacing = 12px, border-width = 6px
-"""
-
-class DeployImageDialog (CrumbsDialog):
-
-    __dummy_usb__ = "--select a usb drive--"
-
-    def __init__(self, title, image_path, parent, flags, buttons=None, standalone=False):
-        super(DeployImageDialog, self).__init__(title, parent, flags, buttons)
-
-        self.image_path = image_path
-        self.standalone = standalone
-
-        self.create_visual_elements()
-        self.connect("response", self.response_cb)
-
-    def create_visual_elements(self):
-        self.set_size_request(600, 400)
-        label = gtk.Label()
-        label.set_alignment(0.0, 0.5)
-        markup = "<span font_desc='12'>The image to be written into usb drive:</span>"
-        label.set_markup(markup)
-        self.vbox.pack_start(label, expand=False, fill=False, padding=2)
-
-        table = gtk.Table(2, 10, False)
-        table.set_col_spacings(5)
-        table.set_row_spacings(5)
-        self.vbox.pack_start(table, expand=True, fill=True)
-
-        scroll = gtk.ScrolledWindow()
-        scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
-        scroll.set_shadow_type(gtk.SHADOW_IN)
-        tv = gtk.TextView()
-        tv.set_editable(False)
-        tv.set_wrap_mode(gtk.WRAP_WORD)
-        tv.set_cursor_visible(False)
-        self.buf = gtk.TextBuffer()
-        self.buf.set_text(self.image_path)
-        tv.set_buffer(self.buf)
-        scroll.add(tv)
-        table.attach(scroll, 0, 10, 0, 1)
-
-        # There are 2 ways to use DeployImageDialog
-        # One way is that called by HOB when the 'Deploy Image' button is clicked
-        # The other way is that called by a standalone script.
-        # Following block of codes handles the latter way. It adds a 'Select Image' button and
-        # emit a signal when the button is clicked.
-        if self.standalone:
-                gobject.signal_new("select_image_clicked", self, gobject.SIGNAL_RUN_FIRST,
-                                   gobject.TYPE_NONE, ())
-                icon = gtk.Image()
-                pix_buffer = gtk.gdk.pixbuf_new_from_file(hic.ICON_IMAGES_DISPLAY_FILE)
-                icon.set_from_pixbuf(pix_buffer)
-                button = gtk.Button("Select Image")
-                button.set_image(icon)
-                #button.set_size_request(140, 50)
-                table.attach(button, 9, 10, 1, 2, gtk.FILL, 0, 0, 0)
-                button.connect("clicked", self.select_image_button_clicked_cb)
-
-        separator = gtk.HSeparator()
-        self.vbox.pack_start(separator, expand=False, fill=False, padding=10)
-
-        self.usb_desc = gtk.Label()
-        self.usb_desc.set_alignment(0.0, 0.5)
-        markup = "<span font_desc='12'>You haven't chosen any USB drive.</span>"
-        self.usb_desc.set_markup(markup)
-
-        self.usb_combo = gtk.combo_box_new_text()
-        self.usb_combo.connect("changed", self.usb_combo_changed_cb)
-        model = self.usb_combo.get_model()
-        model.clear()
-        self.usb_combo.append_text(self.__dummy_usb__)
-        for usb in self.find_all_usb_devices():
-            self.usb_combo.append_text("/dev/" + usb)
-        self.usb_combo.set_active(0)
-        self.vbox.pack_start(self.usb_combo, expand=False, fill=False)
-        self.vbox.pack_start(self.usb_desc, expand=False, fill=False, padding=2)
-
-        self.progress_bar = HobProgressBar()
-        self.vbox.pack_start(self.progress_bar, expand=False, fill=False)
-        separator = gtk.HSeparator()
-        self.vbox.pack_start(separator, expand=False, fill=True, padding=10)
-
-        self.vbox.show_all()
-        self.progress_bar.hide()
-
-    def set_image_text_buffer(self, image_path):
-        self.buf.set_text(image_path)
-
-    def set_image_path(self, image_path):
-        self.image_path = image_path
-
-    def popen_read(self, cmd):
-        tmpout, errors = bb.process.run("%s" % cmd)
-        return tmpout.strip()
-
-    def find_all_usb_devices(self):
-        usb_devs = [ os.readlink(u)
-            for u in glob.glob('/dev/disk/by-id/usb*')
-            if not re.search(r'part\d+', u) ]
-        return [ '%s' % u[u.rfind('/')+1:] for u in usb_devs ]
-
-    def get_usb_info(self, dev):
-        return "%s %s" % \
-            (self.popen_read('cat /sys/class/block/%s/device/vendor' % dev),
-            self.popen_read('cat /sys/class/block/%s/device/model' % dev))
-
-    def select_image_button_clicked_cb(self, button):
-            self.emit('select_image_clicked')
-
-    def usb_combo_changed_cb(self, usb_combo):
-        combo_item = self.usb_combo.get_active_text()
-        if not combo_item or combo_item == self.__dummy_usb__:
-            markup = "<span font_desc='12'>You haven't chosen any USB drive.</span>"
-            self.usb_desc.set_markup(markup)
-        else:
-            markup = "<span font_desc='12'>" + self.get_usb_info(combo_item.lstrip("/dev/")) + "</span>"
-            self.usb_desc.set_markup(markup)
-
-    def response_cb(self, dialog, response_id):
-        if response_id == gtk.RESPONSE_YES:
-            lbl = ''
-            msg = ''
-            combo_item = self.usb_combo.get_active_text()
-            if combo_item and combo_item != self.__dummy_usb__ and self.image_path:
-                cmdline = bb.ui.crumbs.utils.which_terminal()
-                if cmdline:
-                    tmpfile = tempfile.NamedTemporaryFile()
-                    cmdline += "\"sudo dd if=" + self.image_path + \
-                                " of=" + combo_item + " && sync; echo $? > " + tmpfile.name + "\""
-                    subprocess.call(shlex.split(cmdline))
-
-                    if int(tmpfile.readline().strip()) == 0:
-                        lbl = "<b>Deploy image successfully.</b>"
-                    else:
-                        lbl = "<b>Failed to deploy image.</b>"
-                        msg = "Please check image <b>%s</b> exists and USB device <b>%s</b> is writable." % (self.image_path, combo_item)
-                    tmpfile.close()
-            else:
-                if not self.image_path:
-                    lbl = "<b>No selection made.</b>"
-                    msg = "You have not selected an image to deploy."
-                else:
-                    lbl = "<b>No selection made.</b>"
-                    msg = "You have not selected a USB device."
-            if len(lbl):
-                crumbs_dialog = CrumbsMessageDialog(self, lbl, gtk.MESSAGE_INFO, msg)
-                button = crumbs_dialog.add_button("Close", gtk.RESPONSE_OK)
-                HobButton.style_button(button)
-                crumbs_dialog.run()
-                crumbs_dialog.destroy()
-
-    def update_progress_bar(self, title, fraction, status=None):
-        self.progress_bar.update(fraction)
-        self.progress_bar.set_title(title)
-        self.progress_bar.set_rcstyle(status)
-
-    def write_file(self, ifile, ofile):
-        self.progress_bar.reset()
-        self.progress_bar.show()
-
-        f_from = os.open(ifile, os.O_RDONLY)
-        f_to = os.open(ofile, os.O_WRONLY)
-
-        total_size = os.stat(ifile).st_size
-        written_size = 0
-
-        while True:
-            buf = os.read(f_from, 1024*1024)
-            if not buf:
-                break
-            os.write(f_to, buf)
-            written_size += 1024*1024
-            self.update_progress_bar("Writing to usb:", written_size * 1.0/total_size)
-
-        self.update_progress_bar("Writing completed:", 1.0)
-        os.close(f_from)
-        os.close(f_to)
-        self.progress_bar.hide()
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py
deleted file mode 100644
index 21216ad..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/imageselectiondialog.py
+++ /dev/null
@@ -1,172 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2012   Intel Corporation
-#
-# Authored by Joshua Lock <josh@linux.intel.com>
-# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gtk
-import gobject
-import os
-from bb.ui.crumbs.hobwidget import HobViewTable, HobInfoButton, HobButton, HobAltButton
-from bb.ui.crumbs.hig.crumbsdialog import CrumbsDialog
-from bb.ui.crumbs.hig.layerselectiondialog import LayerSelectionDialog
-
-"""
-The following are convenience classes for implementing GNOME HIG compliant
-BitBake GUI's
-In summary: spacing = 12px, border-width = 6px
-"""
-
-class ImageSelectionDialog (CrumbsDialog):
-
-    __columns__ = [{
-            'col_name' : 'Image name',
-            'col_id'   : 0,
-            'col_style': 'text',
-            'col_min'  : 400,
-            'col_max'  : 400
-        }, {
-            'col_name' : 'Select',
-            'col_id'   : 1,
-            'col_style': 'radio toggle',
-            'col_min'  : 160,
-            'col_max'  : 160
-    }]
-
-
-    def __init__(self, image_folder, image_types, title, parent, flags, buttons=None, image_extension = {}):
-        super(ImageSelectionDialog, self).__init__(title, parent, flags, buttons)
-        self.connect("response", self.response_cb)
-
-        self.image_folder = image_folder
-        self.image_types  = image_types
-        self.image_list = []
-        self.image_names = []
-        self.image_extension = image_extension
-
-        # create visual elements on the dialog
-        self.create_visual_elements()
-
-        self.image_store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)
-        self.fill_image_store()
-
-    def create_visual_elements(self):
-        hbox = gtk.HBox(False, 6)
-
-        self.vbox.pack_start(hbox, expand=False, fill=False)
-
-        entry = gtk.Entry()
-        entry.set_text(self.image_folder)
-        table = gtk.Table(1, 10, True)
-        table.set_size_request(560, -1)
-        hbox.pack_start(table, expand=False, fill=False)
-        table.attach(entry, 0, 9, 0, 1)
-        image = gtk.Image()
-        image.set_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_BUTTON)
-        open_button = gtk.Button()
-        open_button.set_image(image)
-        open_button.connect("clicked", self.select_path_cb, self, entry)
-        table.attach(open_button, 9, 10, 0, 1)
-
-        self.image_table = HobViewTable(self.__columns__, "Images")
-        self.image_table.set_size_request(-1, 300)
-        self.image_table.connect("toggled", self.toggled_cb)
-        self.image_table.connect_group_selection(self.table_selected_cb)
-        self.image_table.connect("row-activated", self.row_actived_cb)
-        self.vbox.pack_start(self.image_table, expand=True, fill=True)
-
-        self.show_all()
-
-    def change_image_cb(self, model, path, columnid):
-        if not model:
-            return
-        iter = model.get_iter_first()
-        while iter:
-            rowpath = model.get_path(iter)
-            model[rowpath][columnid] = False
-            iter = model.iter_next(iter)
-
-        model[path][columnid] = True
-
-    def toggled_cb(self, table, cell, path, columnid, tree):
-        model = tree.get_model()
-        self.change_image_cb(model, path, columnid)
-
-    def table_selected_cb(self, selection):
-        model, paths = selection.get_selected_rows()
-        if paths:
-            self.change_image_cb(model, paths[0], 1)
-
-    def row_actived_cb(self, tab, model, path):
-        self.change_image_cb(model, path, 1)
-        self.emit('response', gtk.RESPONSE_YES)
-
-    def select_path_cb(self, action, parent, entry):
-        dialog = gtk.FileChooserDialog("", parent,
-                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
-        text = entry.get_text()
-        dialog.set_current_folder(text if len(text) > 0 else os.getcwd())
-        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
-        HobAltButton.style_button(button)
-        button = dialog.add_button("Open", gtk.RESPONSE_YES)
-        HobButton.style_button(button)
-        response = dialog.run()
-        if response == gtk.RESPONSE_YES:
-            path = dialog.get_filename()
-            entry.set_text(path)
-            self.image_folder = path
-            self.fill_image_store()
-
-        dialog.destroy()
-
-    def fill_image_store(self):
-        self.image_list = []
-        self.image_store.clear()
-        imageset = set()
-        for root, dirs, files in os.walk(self.image_folder):
-            # ignore the sub directories
-            dirs[:] = []
-            for f in files:
-                for image_type in self.image_types:
-                    if image_type in self.image_extension:
-                        real_types = self.image_extension[image_type]
-                    else:
-                        real_types = [image_type]
-                    for real_image_type in real_types:
-                        if f.endswith('.' + real_image_type):
-                            imageset.add(f.rsplit('.' + real_image_type)[0].rsplit('.rootfs')[0])
-                            self.image_list.append(f)
-
-        for image in imageset:
-            self.image_store.set(self.image_store.append(), 0, image, 1, False)
-
-        self.image_table.set_model(self.image_store)
-
-    def response_cb(self, dialog, response_id):
-        self.image_names = []
-        if response_id == gtk.RESPONSE_YES:
-            iter = self.image_store.get_iter_first()
-            while iter:
-                path = self.image_store.get_path(iter)
-                if self.image_store[path][1]:
-                    for f in self.image_list:
-                        if f.startswith(self.image_store[path][0] + '.'):
-                            self.image_names.append(f)
-                    break
-                iter = self.image_store.iter_next(iter)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py
deleted file mode 100644
index 52d57b6..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/layerselectiondialog.py
+++ /dev/null
@@ -1,298 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2012   Intel Corporation
-#
-# Authored by Joshua Lock <josh@linux.intel.com>
-# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gtk
-import gobject
-import os
-import tempfile
-from bb.ui.crumbs.hobwidget import hic, HobButton, HobAltButton
-from bb.ui.crumbs.hig.crumbsdialog import CrumbsDialog
-from bb.ui.crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog
-
-"""
-The following are convenience classes for implementing GNOME HIG compliant
-BitBake GUI's
-In summary: spacing = 12px, border-width = 6px
-"""
-
-class CellRendererPixbufActivatable(gtk.CellRendererPixbuf):
-    """
-    A custom CellRenderer implementation which is activatable
-    so that we can handle user clicks
-    """
-    __gsignals__    = { 'clicked' : (gobject.SIGNAL_RUN_LAST,
-                                     gobject.TYPE_NONE,
-                                     (gobject.TYPE_STRING,)), }
-
-    def __init__(self):
-        gtk.CellRendererPixbuf.__init__(self)
-        self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE)
-        self.set_property('follow-state', True)
-
-    """
-    Respond to a user click on a cell
-    """
-    def do_activate(self, even, widget, path, background_area, cell_area, flags):
-        self.emit('clicked', path)
-
-#
-# LayerSelectionDialog
-#
-class LayerSelectionDialog (CrumbsDialog):
-
-    TARGETS = [
-        ("MY_TREE_MODEL_ROW", gtk.TARGET_SAME_WIDGET, 0),
-        ("text/plain", 0, 1),
-        ("TEXT", 0, 2),
-        ("STRING", 0, 3),
-        ]
-
-    def gen_label_widget(self, content):
-        label = gtk.Label()
-        label.set_alignment(0, 0)
-        label.set_markup(content)
-        label.show()
-        return label
-
-    def layer_widget_toggled_cb(self, cell, path, layer_store):
-        name = layer_store[path][0]
-        toggle = not layer_store[path][1]
-        layer_store[path][1] = toggle
-
-    def layer_widget_add_clicked_cb(self, action, layer_store, parent):
-        dialog = gtk.FileChooserDialog("Add new layer", parent,
-                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
-        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
-        HobAltButton.style_button(button)
-        button = dialog.add_button("Open", gtk.RESPONSE_YES)
-        HobButton.style_button(button)
-        label = gtk.Label("Select the layer you wish to add")
-        label.show()
-        dialog.set_extra_widget(label)
-        response = dialog.run()
-        path = dialog.get_filename()
-        dialog.destroy()
-
-        lbl = "<b>Error</b>"
-        msg = "Unable to load layer <i>%s</i> because " % path
-        if response == gtk.RESPONSE_YES:
-            import os
-            import os.path
-            layers = []
-            it = layer_store.get_iter_first()
-            while it:
-                layers.append(layer_store.get_value(it, 0))
-                it = layer_store.iter_next(it)
-
-            if not path:
-                msg += "it is an invalid path."
-            elif not os.path.exists(path+"/conf/layer.conf"):
-                msg += "there is no layer.conf inside the directory."
-            elif path in layers:
-                msg += "it is already in loaded layers."
-            else:
-                layer_store.append([path])
-                return
-            dialog = CrumbsMessageDialog(parent, lbl, gtk.MESSAGE_ERROR, msg)
-            dialog.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_OK)
-            response = dialog.run()
-            dialog.destroy()
-
-    def layer_widget_del_clicked_cb(self, action, tree_selection, layer_store):
-        model, iter = tree_selection.get_selected()
-        if iter:
-            layer_store.remove(iter)
-
-
-    def gen_layer_widget(self, layers, layers_avail, window, tooltip=""):
-        hbox = gtk.HBox(False, 6)
-
-        layer_tv = gtk.TreeView()
-        layer_tv.set_rules_hint(True)
-        layer_tv.set_headers_visible(False)
-        tree_selection = layer_tv.get_selection()
-        tree_selection.set_mode(gtk.SELECTION_SINGLE)
-
-        # Allow enable drag and drop of rows including row move
-        dnd_internal_target = ''
-        dnd_targets = [(dnd_internal_target, gtk.TARGET_SAME_WIDGET, 0)]
-        layer_tv.enable_model_drag_source( gtk.gdk.BUTTON1_MASK,
-            dnd_targets,
-            gtk.gdk.ACTION_MOVE)
-        layer_tv.enable_model_drag_dest(dnd_targets,
-            gtk.gdk.ACTION_MOVE)
-        layer_tv.connect("drag_data_get", self.drag_data_get_cb)
-        layer_tv.connect("drag_data_received", self.drag_data_received_cb)
-
-        col0= gtk.TreeViewColumn('Path')
-        cell0 = gtk.CellRendererText()
-        cell0.set_padding(5,2)
-        col0.pack_start(cell0, True)
-        col0.set_cell_data_func(cell0, self.draw_layer_path_cb)
-        layer_tv.append_column(col0)
-
-        scroll = gtk.ScrolledWindow()
-        scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
-        scroll.set_shadow_type(gtk.SHADOW_IN)
-        scroll.add(layer_tv)
-
-        table_layer = gtk.Table(2, 10, False)
-        hbox.pack_start(table_layer, expand=True, fill=True)
-
-        table_layer.attach(scroll, 0, 10, 0, 1)
-
-        layer_store = gtk.ListStore(gobject.TYPE_STRING)
-        for layer in layers:
-            layer_store.append([layer])
-
-        col1 = gtk.TreeViewColumn('Enabled')
-        layer_tv.append_column(col1)
-
-        cell1 = CellRendererPixbufActivatable()
-        cell1.set_fixed_size(-1,35)
-        cell1.connect("clicked", self.del_cell_clicked_cb, layer_store)
-        col1.pack_start(cell1, True)
-        col1.set_cell_data_func(cell1, self.draw_delete_button_cb, layer_tv)
-
-        add_button = gtk.Button()
-        add_button.set_relief(gtk.RELIEF_NONE)
-        box = gtk.HBox(False, 6)
-        box.show()
-        add_button.add(box)
-        add_button.connect("enter-notify-event", self.add_hover_cb)
-        add_button.connect("leave-notify-event", self.add_leave_cb)
-        self.im = gtk.Image()
-        self.im.set_from_file(hic.ICON_INDI_ADD_FILE)
-        self.im.show()
-        box.pack_start(self.im, expand=False, fill=False, padding=6)
-        lbl = gtk.Label("Add layer")
-        lbl.set_alignment(0.0, 0.5)
-        lbl.show()
-        box.pack_start(lbl, expand=True, fill=True, padding=6)
-        add_button.connect("clicked", self.layer_widget_add_clicked_cb, layer_store, window)
-        table_layer.attach(add_button, 0, 10, 1, 2, gtk.EXPAND | gtk.FILL, 0, 0, 6)
-        layer_tv.set_model(layer_store)
-
-        hbox.show_all()
-
-        return hbox, layer_store
-
-    def drag_data_get_cb(self, treeview, context, selection, target_id, etime):
-        treeselection = treeview.get_selection()
-        model, iter = treeselection.get_selected()
-        data = model.get_value(iter, 0)
-        selection.set(selection.target, 8, data)
-
-    def drag_data_received_cb(self, treeview, context, x, y, selection, info, etime):
-        model = treeview.get_model()
-        data = selection.data
-        drop_info = treeview.get_dest_row_at_pos(x, y)
-        if drop_info:
-            path, position = drop_info
-            iter = model.get_iter(path)
-            if (position == gtk.TREE_VIEW_DROP_BEFORE or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE):
-                model.insert_before(iter, [data])
-            else:
-                model.insert_after(iter, [data])
-        else:
-            model.append([data])
-        if context.action == gtk.gdk.ACTION_MOVE:
-            context.finish(True, True, etime)
-        return
-
-    def add_hover_cb(self, button, event):
-        self.im.set_from_file(hic.ICON_INDI_ADD_HOVER_FILE)
-
-    def add_leave_cb(self, button, event):
-        self.im.set_from_file(hic.ICON_INDI_ADD_FILE)
-
-    def __init__(self, title, layers, layers_non_removable, all_layers, parent, flags, buttons=None):
-        super(LayerSelectionDialog, self).__init__(title, parent, flags, buttons)
-
-        # class members from other objects
-        self.layers = layers
-        self.layers_non_removable = layers_non_removable
-        self.all_layers = all_layers
-        self.layers_changed = False
-
-        # icon for remove button in TreeView
-        im = gtk.Image()
-        im.set_from_file(hic.ICON_INDI_REMOVE_FILE)
-        self.rem_icon = im.get_pixbuf()
-
-        # class members for internal use
-        self.layer_store = None
-
-        # create visual elements on the dialog
-        self.create_visual_elements()
-        self.connect("response", self.response_cb)
-
-    def create_visual_elements(self):
-        layer_widget, self.layer_store = self.gen_layer_widget(self.layers, self.all_layers, self, None)
-        layer_widget.set_size_request(450, 250)
-        self.vbox.pack_start(layer_widget, expand=True, fill=True)
-        self.show_all()
-
-    def response_cb(self, dialog, response_id):
-        model = self.layer_store
-        it = model.get_iter_first()
-        layers = []
-        while it:
-            layers.append(model.get_value(it, 0))
-            it = model.iter_next(it)
-
-        self.layers_changed = (self.layers != layers)
-        self.layers = layers
-
-    """
-    A custom cell_data_func to draw a delete 'button' in the TreeView for layers
-    other than the meta layer. The deletion of which is prevented so that the
-    user can't shoot themselves in the foot too badly.
-    """
-    def draw_delete_button_cb(self, col, cell, model, it, tv):
-        path =  model.get_value(it, 0)
-        if path in self.layers_non_removable:
-            cell.set_sensitive(False)
-            cell.set_property('pixbuf', None)
-            cell.set_property('mode', gtk.CELL_RENDERER_MODE_INERT)
-        else:
-            cell.set_property('pixbuf', self.rem_icon)
-            cell.set_sensitive(True)
-            cell.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE)
-
-        return True
-
-    """
-    A custom cell_data_func to write an extra message into the layer path cell
-    for the meta layer. We should inform the user that they can't remove it for
-    their own safety.
-    """
-    def draw_layer_path_cb(self, col, cell, model, it):
-        path = model.get_value(it, 0)
-        if path in self.layers_non_removable:
-            cell.set_property('markup', "<b>It cannot be removed</b>\n%s" % path)
-        else:
-            cell.set_property('text', path)
-
-    def del_cell_clicked_cb(self, cell, path, model):
-        it = model.get_iter_from_string(path)
-        model.remove(it)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py
deleted file mode 100644
index 09b9ce6..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py
+++ /dev/null
@@ -1,437 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2013   Intel Corporation
-#
-# Authored by Andrei Dinu <andrei.adrianx.dinu@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import string
-import gtk
-import gobject
-import os
-import tempfile
-import glib
-from bb.ui.crumbs.hig.crumbsdialog import CrumbsDialog
-from bb.ui.crumbs.hig.settingsuihelper import SettingsUIHelper
-from bb.ui.crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog
-from bb.ui.crumbs.hig.layerselectiondialog import LayerSelectionDialog
-
-"""
-The following are convenience classes for implementing GNOME HIG compliant
-BitBake GUI's
-In summary: spacing = 12px, border-width = 6px
-"""
-
-class PropertyDialog(CrumbsDialog):
-	
-	def __init__(self, title, parent, information, flags, buttons=None):
-		
-		super(PropertyDialog, self).__init__(title, parent, flags, buttons)
-                
-                self.properties = information
-
-                if len(self.properties) == 10:
-		        self.create_recipe_visual_elements()
-                elif len(self.properties) == 5:
-                        self.create_package_visual_elements()
-                else:
-                        self.create_information_visual_elements()
-
-
-        def create_information_visual_elements(self):
-
-                HOB_ICON_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), ("icons/"))
-                ICON_PACKAGES_DISPLAY_FILE    = os.path.join(HOB_ICON_BASE_DIR, ('info/info_display.png'))
-
-                self.set_resizable(False)
-
-                self.table = gtk.Table(1,1,False)
-                self.table.set_row_spacings(0)
-                self.table.set_col_spacings(0)
-
-                self.image = gtk.Image()
-                self.image.set_from_file(ICON_PACKAGES_DISPLAY_FILE)
-                self.image.set_property("xalign",0)
-                #self.vbox.add(self.image)
-
-                image_info = self.properties.split("*")[0]
-                info = self.properties.split("*")[1]
-                
-                vbox = gtk.VBox(True, spacing=30)        
-                
-                self.label_short = gtk.Label()
-                self.label_short.set_line_wrap(False)
-                self.label_short.set_markup(image_info)
-                self.label_short.set_property("xalign", 0)
-
-                self.info_label = gtk.Label()
-                self.info_label.set_line_wrap(True)
-                self.info_label.set_markup(info)
-                self.info_label.set_property("yalign", 0.5)
-
-                self.table.attach(self.image, 0,1,0,1, xoptions=gtk.FILL|gtk.EXPAND, yoptions=gtk.FILL,xpadding=5,ypadding=5)
-                self.table.attach(self.label_short, 0,1,0,1, xoptions=gtk.FILL|gtk.EXPAND, yoptions=gtk.FILL,xpadding=40,ypadding=5)
-                self.table.attach(self.info_label, 0,1,1,2, xoptions=gtk.FILL|gtk.EXPAND, yoptions=gtk.FILL,xpadding=40,ypadding=10)
-        
-                self.vbox.add(self.table)
-                self.connect('delete-event', lambda w, e: self.destroy() or True) 
-
-        def treeViewTooltip( self, widget, e, tooltips, cell, emptyText="" ):
-                 try:
-                           (path,col,x,y) = widget.get_path_at_pos( int(e.x), int(e.y) )
-                           it = widget.get_model().get_iter(path)
-                           value = widget.get_model().get_value(it,cell)
-                           if value in self.tooltip_items:
-                                tooltips.set_tip(widget, self.tooltip_items[value])
-                                tooltips.enable()
-                           else:
-                                tooltips.set_tip(widget, emptyText)
-                 except:
-                           tooltips.set_tip(widget, emptyText)
-
-                
-        def create_package_visual_elements(self):
-
-                import json
-
-                name = self.properties['name']
-                binb = self.properties['binb']
-                size = self.properties['size']
-                recipe = self.properties['recipe']
-                file_list = json.loads(self.properties['files_list'])
-
-                files_temp = ''
-                paths_temp = ''
-                files_binb = []
-                paths_binb = []
-
-                self.tooltip_items = {}
-
-                self.set_resizable(False)
-                
-                #cleaning out the recipe variable
-                recipe = recipe.split("+")[0]
-
-                vbox = gtk.VBox(True,spacing = 0)
-
-                ###################################### NAME ROW + COL #################################
-
-                self.label_short = gtk.Label()
-                self.label_short.set_size_request(300,-1)
-                self.label_short.set_selectable(True)
-                self.label_short.set_line_wrap(True)
-                self.label_short.set_markup("<span weight=\"bold\">Name: </span>" + name)
-                self.label_short.set_property("xalign", 0)
-                                
-                self.vbox.add(self.label_short)
-
-                ###################################### SIZE ROW + COL ######################################
-
-                self.label_short = gtk.Label()
-                self.label_short.set_size_request(300,-1)
-                self.label_short.set_selectable(True)
-                self.label_short.set_line_wrap(True)
-                self.label_short.set_markup("<span weight=\"bold\">Size: </span>" + size)
-                self.label_short.set_property("xalign", 0)
-                
-                self.vbox.add(self.label_short)
-
-                ##################################### RECIPE ROW + COL #########################################
-
-                self.label_short = gtk.Label()
-                self.label_short.set_size_request(300,-1)
-                self.label_short.set_selectable(True)
-                self.label_short.set_line_wrap(True)
-                self.label_short.set_markup("<span weight=\"bold\">Recipe: </span>" + recipe)
-                self.label_short.set_property("xalign", 0)
-
-                self.vbox.add(self.label_short)
-
-                ##################################### BINB ROW + COL #######################################
-                
-                if binb != '':
-                        self.label_short = gtk.Label()
-                        self.label_short.set_selectable(True)
-                        self.label_short.set_line_wrap(True)
-                        self.label_short.set_markup("<span weight=\"bold\">Brought in by: </span>")
-                        self.label_short.set_property("xalign", 0)                
-
-                        self.label_info = gtk.Label()
-                        self.label_info.set_size_request(300,-1)
-                        self.label_info.set_selectable(True)
-                        self.label_info.set_line_wrap(True)
-                        self.label_info.set_markup(binb)
-                        self.label_info.set_property("xalign", 0)               
-                                                        
-                        self.vbox.add(self.label_short)
-                        self.vbox.add(self.label_info)
-
-                #################################### FILES BROUGHT BY PACKAGES ###################################
-
-                if file_list:
-                
-                        self.textWindow = gtk.ScrolledWindow()
-                        self.textWindow.set_shadow_type(gtk.SHADOW_IN)
-                        self.textWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-                        self.textWindow.set_size_request(100, 170)
-
-                        packagefiles_store = gtk.ListStore(str)
-
-                        self.packagefiles_tv = gtk.TreeView()
-                        self.packagefiles_tv.set_rules_hint(True)
-                        self.packagefiles_tv.set_headers_visible(True)
-                        self.textWindow.add(self.packagefiles_tv)
-
-                        self.cell1 = gtk.CellRendererText()
-                        col1 = gtk.TreeViewColumn('Package files', self.cell1)
-                        col1.set_cell_data_func(self.cell1, self.regex_field)
-                        self.packagefiles_tv.append_column(col1)
-
-                        items = file_list.keys()
-                        items.sort()
-                        for item in items:
-                                fullpath = item
-                                while len(item) > 35:
-                                        item = item[:len(item)/2] + "" + item[len(item)/2+1:]
-                                if len(item) == 35:
-                                        item = item[:len(item)/2] + "..." + item[len(item)/2+3:]
-                                        self.tooltip_items[item] = fullpath
-
-                                packagefiles_store.append([str(item)])
-
-                        self.packagefiles_tv.set_model(packagefiles_store)
-
-                        tips = gtk.Tooltips()
-                        tips.set_tip(self.packagefiles_tv, "")
-                        self.packagefiles_tv.connect("motion-notify-event", self.treeViewTooltip, tips, 0)
-                        self.packagefiles_tv.set_events(gtk.gdk.POINTER_MOTION_MASK)
-                        
-                        self.vbox.add(self.textWindow)                                      
-
-                self.vbox.show_all()
-
-
-        def regex_field(self, column, cell, model, iter):
-                cell.set_property('text', model.get_value(iter, 0))
-                return
-
-
-	def create_recipe_visual_elements(self):
-
-                summary = self.properties['summary']
-		name = self.properties['name']
-		version = self.properties['version']
-		revision = self.properties['revision']
-		binb = self.properties['binb']
-		group = self.properties['group']
-		license = self.properties['license']
-		homepage = self.properties['homepage']
-		bugtracker = self.properties['bugtracker']
-		description = self.properties['description']
-
-                self.set_resizable(False)
-		
-                #cleaning out the version variable and also the summary
-                version = version.split(":")[1]
-                if len(version) > 30:
-                        version = version.split("+")[0]
-                else:
-                        version = version.split("-")[0]
-                license = license.replace("&" , "and")
-                if (homepage == ''):
-                        homepage = 'unknown'
-                if (bugtracker == ''):
-                        bugtracker = 'unknown'
-                summary = summary.split("+")[0]
-                
-                #calculating the rows needed for the table
-                binb_items_count = len(binb.split(','))
-                binb_items = binb.split(',')
-                               		
-		vbox = gtk.VBox(False,spacing = 0)
-
-                ######################################## SUMMARY LABEL #########################################                	                
-                
-                if summary != '':                
-                        self.label_short = gtk.Label()
-                        self.label_short.set_width_chars(37)
-                        self.label_short.set_selectable(True)                
-                        self.label_short.set_line_wrap(True)
-                        self.label_short.set_markup("<b>" + summary + "</b>")
-                        self.label_short.set_property("xalign", 0)
-                        
-                        self.vbox.add(self.label_short)
-                
-                ########################################## NAME ROW + COL #######################################
-                                
-                self.label_short = gtk.Label()
-                self.label_short.set_selectable(True)
-                self.label_short.set_line_wrap(True)
-                self.label_short.set_markup("<span weight=\"bold\">Name: </span>" + name)
-                self.label_short.set_property("xalign", 0)
-                                
-                self.vbox.add(self.label_short)
-
-                ####################################### VERSION ROW + COL ####################################
-                
-                self.label_short = gtk.Label()
-                self.label_short.set_selectable(True)
-                self.label_short.set_line_wrap(True)
-                self.label_short.set_markup("<span weight=\"bold\">Version: </span>" + version)
-                self.label_short.set_property("xalign", 0)
-                
-                self.vbox.add(self.label_short)
-
-                ##################################### REVISION ROW + COL #####################################
-
-                self.label_short = gtk.Label()
-                self.label_short.set_line_wrap(True)
-                self.label_short.set_selectable(True)
-                self.label_short.set_markup("<span weight=\"bold\">Revision: </span>" + revision)
-                self.label_short.set_property("xalign", 0)                
-                
-                self.vbox.add(self.label_short)
-
-                ################################## GROUP ROW + COL ############################################
-               
-                self.label_short = gtk.Label()
-                self.label_short.set_selectable(True)              
-                self.label_short.set_line_wrap(True)                                
-                self.label_short.set_markup("<span weight=\"bold\">Group: </span>" + group)
-                self.label_short.set_property("xalign", 0)
-                                
-                self.vbox.add(self.label_short)
-
-                ################################# HOMEPAGE ROW + COL ############################################
-                
-                if homepage != 'unknown':
-                        self.label_info = gtk.Label()
-                        self.label_info.set_selectable(True)
-                        self.label_info.set_line_wrap(True)
-                        if len(homepage) > 35:
-                                self.label_info.set_markup("<a href=\"" + homepage + "\">" + homepage[0:35] + "..." + "</a>")
-                        else:
-                                self.label_info.set_markup("<a href=\"" + homepage + "\">" + homepage[0:60] + "</a>")
-
-                        self.label_info.set_property("xalign", 0)
-                       
-                        self.label_short = gtk.Label()
-                        self.label_short.set_selectable(True)                     
-                        self.label_short.set_line_wrap(True)                        
-                        self.label_short.set_markup("<b>Homepage: </b>")                      
-                        self.label_short.set_property("xalign", 0)
-                        
-                        self.vbox.add(self.label_short)
-                        self.vbox.add(self.label_info)
-               
-                ################################# BUGTRACKER ROW + COL ###########################################
-                
-                if bugtracker != 'unknown':
-                        self.label_info = gtk.Label()
-                        self.label_info.set_selectable(True)
-                        self.label_info.set_line_wrap(True)
-                        if len(bugtracker) > 35:
-                                self.label_info.set_markup("<a href=\"" + bugtracker + "\">" + bugtracker[0:35] + "..." + "</a>")
-                        else:
-                                self.label_info.set_markup("<a href=\"" + bugtracker + "\">" + bugtracker[0:60] + "</a>")
-                        self.label_info.set_property("xalign", 0)  
-
-                        self.label_short = gtk.Label()
-                        self.label_short.set_selectable(True)                    
-                        self.label_short.set_line_wrap(True)
-                        self.label_short.set_markup("<b>Bugtracker: </b>")                   
-                        self.label_short.set_property("xalign", 0)
-                        
-                        self.vbox.add(self.label_short)
-                        self.vbox.add(self.label_info)
-
-                ################################# LICENSE ROW + COL ############################################
-                
-                self.label_info = gtk.Label()
-                self.label_info.set_selectable(True)
-                self.label_info.set_line_wrap(True)
-                self.label_info.set_markup(license)
-                self.label_info.set_property("xalign", 0)
-
-                self.label_short = gtk.Label()
-                self.label_short.set_selectable(True)                
-                self.label_short.set_line_wrap(True)                
-                self.label_short.set_markup("<span weight=\"bold\">License: </span>")
-                self.label_short.set_property("xalign", 0)
-                
-                self.vbox.add(self.label_short)
-                self.vbox.add(self.label_info)
-
-                ################################### BINB ROW+COL #############################################
-                
-                if binb != '':
-                        self.label_short = gtk.Label()
-                        self.label_short.set_selectable(True)
-                        self.label_short.set_line_wrap(True)
-                        self.label_short.set_markup("<span weight=\"bold\">Brought in by: </span>")
-                        self.label_short.set_property("xalign", 0)
-                        self.vbox.add(self.label_short)
-                        self.label_info = gtk.Label()
-                        self.label_info.set_selectable(True)
-                        self.label_info.set_width_chars(36)
-                        if len(binb) > 200:
-                            scrolled_window = gtk.ScrolledWindow()
-                            scrolled_window.set_policy(gtk.POLICY_NEVER,gtk.POLICY_ALWAYS)
-                            scrolled_window.set_size_request(100,100)
-                            self.label_info.set_markup(binb)
-                            self.label_info.set_padding(6,6)
-                            self.label_info.set_alignment(0,0)
-                            self.label_info.set_line_wrap(True)
-                            scrolled_window.add_with_viewport(self.label_info)
-                            self.vbox.add(scrolled_window)
-                        else:
-                            self.label_info.set_markup(binb)
-                            self.label_info.set_property("xalign", 0)
-                            self.label_info.set_line_wrap(True) 
-                            self.vbox.add(self.label_info)
-
-                ################################ DESCRIPTION TAG ROW #################################################
-                
-                self.label_short = gtk.Label()
-                self.label_short.set_line_wrap(True)
-                self.label_short.set_markup("<span weight=\"bold\">Description </span>")
-                self.label_short.set_property("xalign", 0)
-                self.vbox.add(self.label_short)
-                
-                ################################ DESCRIPTION INFORMATION ROW ##########################################
-                
-                hbox = gtk.HBox(True,spacing = 0)
-
-                self.label_short = gtk.Label()
-                self.label_short.set_selectable(True)
-                self.label_short.set_width_chars(36)
-                if len(description) > 200:
-                    scrolled_window = gtk.ScrolledWindow()
-                    scrolled_window.set_policy(gtk.POLICY_NEVER,gtk.POLICY_ALWAYS)
-                    scrolled_window.set_size_request(100,100)
-                    self.label_short.set_markup(description)
-                    self.label_short.set_padding(6,6)
-                    self.label_short.set_alignment(0,0)
-                    self.label_short.set_line_wrap(True)
-                    scrolled_window.add_with_viewport(self.label_short)
-                    self.vbox.add(scrolled_window)
-                else:    
-                    self.label_short.set_markup(description)
-                    self.label_short.set_property("xalign", 0)
-                    self.label_short.set_line_wrap(True)
-                    self.vbox.add(self.label_short)
-
-                self.vbox.show_all()
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py
deleted file mode 100644
index e0285c9..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/settingsuihelper.py
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2012   Intel Corporation
-#
-# Authored by Joshua Lock <josh@linux.intel.com>
-# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gtk
-import os
-from bb.ui.crumbs.hobwidget import HobInfoButton, HobButton, HobAltButton
-
-"""
-The following are convenience classes for implementing GNOME HIG compliant
-BitBake GUI's
-In summary: spacing = 12px, border-width = 6px
-"""
-
-class SettingsUIHelper():
-
-    def gen_label_widget(self, content):
-        label = gtk.Label()
-        label.set_alignment(0, 0)
-        label.set_markup(content)
-        label.show()
-        return label
-
-    def gen_label_info_widget(self, content, tooltip):
-        table = gtk.Table(1, 10, False)
-        label = self.gen_label_widget(content)
-        info = HobInfoButton(tooltip, self)
-        table.attach(label, 0, 1, 0, 1, xoptions=gtk.FILL)
-        table.attach(info, 1, 2, 0, 1, xoptions=gtk.FILL, xpadding=10)
-        return table
-
-    def gen_spinner_widget(self, content, lower, upper, tooltip=""):
-        hbox = gtk.HBox(False, 12)
-        adjust = gtk.Adjustment(value=content, lower=lower, upper=upper, step_incr=1)
-        spinner = gtk.SpinButton(adjustment=adjust, climb_rate=1, digits=0)
-
-        spinner.set_value(content)
-        hbox.pack_start(spinner, expand=False, fill=False)
-
-        info = HobInfoButton(tooltip, self)
-        hbox.pack_start(info, expand=False, fill=False)
-
-        hbox.show_all()
-        return hbox, spinner
-
-    def gen_combo_widget(self, curr_item, all_item, tooltip=""):
-        hbox = gtk.HBox(False, 12)
-        combo = gtk.combo_box_new_text()
-        hbox.pack_start(combo, expand=False, fill=False)
-
-        index = 0
-        for item in all_item or []:
-            combo.append_text(item)
-            if item == curr_item:
-                combo.set_active(index)
-            index += 1
-
-        info = HobInfoButton(tooltip, self)
-        hbox.pack_start(info, expand=False, fill=False)
-
-        hbox.show_all()
-        return hbox, combo
-
-    def entry_widget_select_path_cb(self, action, parent, entry):
-        dialog = gtk.FileChooserDialog("", parent,
-                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
-        text = entry.get_text()
-        dialog.set_current_folder(text if len(text) > 0 else os.getcwd())
-        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
-        HobAltButton.style_button(button)
-        button = dialog.add_button("Open", gtk.RESPONSE_YES)
-        HobButton.style_button(button)
-        response = dialog.run()
-        if response == gtk.RESPONSE_YES:
-            path = dialog.get_filename()
-            entry.set_text(path)
-
-        dialog.destroy()
-
-    def gen_entry_widget(self, content, parent, tooltip="", need_button=True):
-        hbox = gtk.HBox(False, 12)
-        entry = gtk.Entry()
-        entry.set_text(content)
-        entry.set_size_request(350,30)
-
-        if need_button:
-            table = gtk.Table(1, 10, False)
-            hbox.pack_start(table, expand=True, fill=True)
-            table.attach(entry, 0, 9, 0, 1, xoptions=gtk.SHRINK)
-            image = gtk.Image()
-            image.set_from_stock(gtk.STOCK_OPEN,gtk.ICON_SIZE_BUTTON)
-            open_button = gtk.Button()
-            open_button.set_image(image)
-            open_button.connect("clicked", self.entry_widget_select_path_cb, parent, entry)
-            table.attach(open_button, 9, 10, 0, 1, xoptions=gtk.SHRINK)
-        else:
-            hbox.pack_start(entry, expand=True, fill=True)
-
-        if tooltip != "":
-            info = HobInfoButton(tooltip, self)
-            hbox.pack_start(info, expand=False, fill=False)
-
-        hbox.show_all()
-        return hbox, entry
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hobcolor.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hobcolor.py
deleted file mode 100644
index 3316542..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hobcolor.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2012        Intel Corporation
-#
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-class HobColors:
-    WHITE        = "#ffffff"
-    PALE_GREEN   = "#aaffaa"
-    ORANGE       = "#eb8e68"
-    PALE_RED     = "#ffaaaa"
-    GRAY         = "#aaaaaa"
-    LIGHT_GRAY   = "#dddddd"
-    SLIGHT_DARK  = "#5f5f5f"
-    DARK         = "#3c3b37"
-    BLACK        = "#000000"
-    PALE_BLUE    = "#53b8ff"
-    DEEP_RED     = "#aa3e3e"
-    KHAKI        = "#fff68f"
-
-    OK = WHITE
-    RUNNING = PALE_GREEN
-    WARNING = ORANGE
-    ERROR = PALE_RED
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hobwidget.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hobwidget.py
deleted file mode 100644
index 2b969c1..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hobwidget.py
+++ /dev/null
@@ -1,904 +0,0 @@
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011-2012   Intel Corporation
-#
-# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-import gtk
-import gobject
-import os
-import os.path
-import sys
-import pango, pangocairo
-import cairo
-import math
-
-from bb.ui.crumbs.hobcolor import HobColors
-from bb.ui.crumbs.persistenttooltip import PersistentTooltip
-
-class hwc:
-
-    MAIN_WIN_WIDTH   = 1024
-    MAIN_WIN_HEIGHT  = 700
-
-class hic:
-
-    HOB_ICON_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), ("ui/icons/"))
-
-    ICON_RCIPE_DISPLAY_FILE       = os.path.join(HOB_ICON_BASE_DIR, ('recipe/recipe_display.png'))
-    ICON_RCIPE_HOVER_FILE         = os.path.join(HOB_ICON_BASE_DIR, ('recipe/recipe_hover.png'))
-    ICON_PACKAGES_DISPLAY_FILE    = os.path.join(HOB_ICON_BASE_DIR, ('packages/packages_display.png'))
-    ICON_PACKAGES_HOVER_FILE      = os.path.join(HOB_ICON_BASE_DIR, ('packages/packages_hover.png'))
-    ICON_LAYERS_DISPLAY_FILE      = os.path.join(HOB_ICON_BASE_DIR, ('layers/layers_display.png'))
-    ICON_LAYERS_HOVER_FILE        = os.path.join(HOB_ICON_BASE_DIR, ('layers/layers_hover.png'))
-    ICON_IMAGES_DISPLAY_FILE      = os.path.join(HOB_ICON_BASE_DIR, ('images/images_display.png'))
-    ICON_IMAGES_HOVER_FILE        = os.path.join(HOB_ICON_BASE_DIR, ('images/images_hover.png'))
-    ICON_SETTINGS_DISPLAY_FILE    = os.path.join(HOB_ICON_BASE_DIR, ('settings/settings_display.png'))
-    ICON_SETTINGS_HOVER_FILE      = os.path.join(HOB_ICON_BASE_DIR, ('settings/settings_hover.png'))
-    ICON_INFO_DISPLAY_FILE        = os.path.join(HOB_ICON_BASE_DIR, ('info/info_display.png'))
-    ICON_INFO_HOVER_FILE          = os.path.join(HOB_ICON_BASE_DIR, ('info/info_hover.png'))
-    ICON_INDI_CONFIRM_FILE        = os.path.join(HOB_ICON_BASE_DIR, ('indicators/confirmation.png'))
-    ICON_INDI_ERROR_FILE          = os.path.join(HOB_ICON_BASE_DIR, ('indicators/denied.png'))
-    ICON_INDI_REMOVE_FILE         = os.path.join(HOB_ICON_BASE_DIR, ('indicators/remove.png'))
-    ICON_INDI_REMOVE_HOVER_FILE   = os.path.join(HOB_ICON_BASE_DIR, ('indicators/remove-hover.png'))
-    ICON_INDI_ADD_FILE            = os.path.join(HOB_ICON_BASE_DIR, ('indicators/add.png'))
-    ICON_INDI_ADD_HOVER_FILE      = os.path.join(HOB_ICON_BASE_DIR, ('indicators/add-hover.png'))
-    ICON_INDI_REFRESH_FILE        = os.path.join(HOB_ICON_BASE_DIR, ('indicators/refresh.png'))
-    ICON_INDI_ALERT_FILE          = os.path.join(HOB_ICON_BASE_DIR, ('indicators/alert.png'))
-    ICON_INDI_TICK_FILE           = os.path.join(HOB_ICON_BASE_DIR, ('indicators/tick.png'))
-    ICON_INDI_INFO_FILE           = os.path.join(HOB_ICON_BASE_DIR, ('indicators/info.png'))
-
-class HobViewTable (gtk.VBox):
-    """
-    A VBox to contain the table for different recipe views and package view
-    """
-    __gsignals__ = {
-         "toggled"       : (gobject.SIGNAL_RUN_LAST,
-                            gobject.TYPE_NONE,
-                           (gobject.TYPE_PYOBJECT,
-                            gobject.TYPE_STRING,
-                            gobject.TYPE_INT,
-                            gobject.TYPE_PYOBJECT,)),
-         "row-activated" : (gobject.SIGNAL_RUN_LAST,
-                            gobject.TYPE_NONE,
-                           (gobject.TYPE_PYOBJECT,
-                            gobject.TYPE_PYOBJECT,)),
-         "cell-fadeinout-stopped" : (gobject.SIGNAL_RUN_LAST,
-                            gobject.TYPE_NONE,
-                           (gobject.TYPE_PYOBJECT,
-                            gobject.TYPE_PYOBJECT,
-                            gobject.TYPE_PYOBJECT,)),
-    }
-
-    def __init__(self, columns, name):
-        gtk.VBox.__init__(self, False, 6)
-        self.table_tree = gtk.TreeView()
-        self.table_tree.set_headers_visible(True)
-        self.table_tree.set_headers_clickable(True)
-        self.table_tree.set_rules_hint(True)
-        self.table_tree.set_enable_tree_lines(True)
-        self.table_tree.get_selection().set_mode(gtk.SELECTION_SINGLE)
-        self.toggle_columns = []
-        self.table_tree.connect("row-activated", self.row_activated_cb)
-        self.top_bar = None
-        self.tab_name = name
-
-        for i, column in enumerate(columns):
-            col_name = column['col_name']
-            col = gtk.TreeViewColumn(col_name)
-            col.set_clickable(True)
-            col.set_resizable(True)
-            if self.tab_name.startswith('Included'):
-                if col_name!='Included':
-                    col.set_sort_column_id(column['col_id'])
-            else:
-                col.set_sort_column_id(column['col_id'])
-            if 'col_min' in column.keys():
-                col.set_min_width(column['col_min'])
-            if 'col_max' in column.keys():
-                col.set_max_width(column['col_max'])
-            if 'expand' in column.keys():
-                col.set_expand(True)
-            self.table_tree.append_column(col)
-
-            if (not 'col_style' in column.keys()) or column['col_style'] == 'text':
-                cell = gtk.CellRendererText()
-                col.pack_start(cell, True)
-                col.set_attributes(cell, text=column['col_id'])
-                if 'col_t_id' in column.keys():
-                    col.add_attribute(cell, 'font', column['col_t_id'])
-            elif column['col_style'] == 'check toggle':
-                cell = HobCellRendererToggle()
-                cell.set_property('activatable', True)
-                cell.connect("toggled", self.toggled_cb, i, self.table_tree)
-                cell.connect_render_state_changed(self.stop_cell_fadeinout_cb, self.table_tree)
-                self.toggle_id = i
-                col.pack_end(cell, True)
-                col.set_attributes(cell, active=column['col_id'])
-                self.toggle_columns.append(col_name)
-                if 'col_group' in column.keys():
-                    col.set_cell_data_func(cell, self.set_group_number_cb)
-            elif column['col_style'] == 'radio toggle':
-                cell = gtk.CellRendererToggle()
-                cell.set_property('activatable', True)
-                cell.set_radio(True)
-                cell.connect("toggled", self.toggled_cb, i, self.table_tree)
-                self.toggle_id = i
-                col.pack_end(cell, True)
-                col.set_attributes(cell, active=column['col_id'])
-                self.toggle_columns.append(col_name)
-            elif column['col_style'] == 'binb':
-                cell = gtk.CellRendererText()
-                col.pack_start(cell, True)
-                col.set_cell_data_func(cell, self.display_binb_cb, column['col_id'])
-                if 'col_t_id' in column.keys():
-                    col.add_attribute(cell, 'font', column['col_t_id'])
-
-        self.scroll = gtk.ScrolledWindow()
-        self.scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
-        self.scroll.add(self.table_tree)
-
-        self.pack_end(self.scroll, True, True, 0)
-
-    def add_no_result_bar(self, entry):
-        color = HobColors.KHAKI
-        self.top_bar = gtk.EventBox()
-        self.top_bar.set_size_request(-1, 70)
-        self.top_bar.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(color))
-        self.top_bar.set_flags(gtk.CAN_DEFAULT)
-        self.top_bar.grab_default()
-
-        no_result_tab = gtk.Table(5, 20, True)
-        self.top_bar.add(no_result_tab)
-
-        label = gtk.Label()
-        label.set_alignment(0.0, 0.5)
-        title = "No results matching your search"
-        label.set_markup("<span size='x-large'><b>%s</b></span>" % title)
-        no_result_tab.attach(label, 1, 14, 1, 4)
-
-        clear_button = HobButton("Clear search")
-        clear_button.set_tooltip_text("Clear search query")
-        clear_button.connect('clicked', self.set_search_entry_clear_cb, entry)
-        no_result_tab.attach(clear_button, 16, 19, 1, 4)
-
-        self.pack_start(self.top_bar, False, True, 12)
-        self.top_bar.show_all()
-
-    def set_search_entry_clear_cb(self, button, search):
-        if search.get_editable() == True:
-            search.set_text("")
-        search.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
-        search.grab_focus()
-
-    def display_binb_cb(self, col, cell, model, it, col_id):
-        binb =  model.get_value(it, col_id)
-        # Just display the first item
-        if binb:
-            bin = binb.split(', ')
-            total_no = len(bin)
-            if total_no > 1 and bin[0] == "User Selected":
-                if total_no > 2:
-                    present_binb = bin[1] + ' (+' + str(total_no - 1) + ')'
-                else:
-                    present_binb = bin[1]
-            else:
-                if total_no > 1:
-                    present_binb = bin[0] + ' (+' + str(total_no - 1) + ')'
-                else:
-                    present_binb = bin[0]
-            cell.set_property('text', present_binb)
-        else:
-            cell.set_property('text', "")
-        return True
-
-    def set_model(self, tree_model):
-        self.table_tree.set_model(tree_model)
-
-    def toggle_default(self):
-        model = self.table_tree.get_model()
-        if not model:
-            return
-        iter = model.get_iter_first()
-        if iter:
-            rowpath = model.get_path(iter)
-            model[rowpath][self.toggle_id] = True
-
-    def toggled_cb(self, cell, path, columnid, tree):
-        self.emit("toggled", cell, path, columnid, tree)
-
-    def row_activated_cb(self, tree, path, view_column):
-        if not view_column.get_title() in self.toggle_columns:
-            self.emit("row-activated", tree.get_model(), path)
-
-    def stop_cell_fadeinout_cb(self, ctrl, cell, tree):
-        self.emit("cell-fadeinout-stopped", ctrl, cell, tree)
-
-    def set_group_number_cb(self, col, cell, model, iter):
-        if model and (model.iter_parent(iter) == None):
-            cell.cell_attr["number_of_children"] = model.iter_n_children(iter)
-        else:
-            cell.cell_attr["number_of_children"] = 0
-
-    def connect_group_selection(self, cb_func):
-        self.table_tree.get_selection().connect("changed", cb_func)
-
-"""
-A method to calculate a softened value for the colour of widget when in the
-provided state.
-
-widget: the widget whose style to use
-state: the state of the widget to use the style for
-
-Returns a string value representing the softened colour
-"""
-def soften_color(widget, state=gtk.STATE_NORMAL):
-    # this colour munging routine is heavily inspired bu gdu_util_get_mix_color()
-    # from gnome-disk-utility:
-    # http://git.gnome.org/browse/gnome-disk-utility/tree/src/gdu-gtk/gdu-gtk.c?h=gnome-3-0
-    blend = 0.7
-    style = widget.get_style()
-    color = style.text[state]
-    color.red = color.red * blend + style.base[state].red * (1.0 - blend)
-    color.green = color.green * blend + style.base[state].green * (1.0 - blend)
-    color.blue = color.blue * blend + style.base[state].blue * (1.0 - blend)
-    return color.to_string()
-
-class BaseHobButton(gtk.Button):
-    """
-    A gtk.Button subclass which follows the visual design of Hob for primary
-    action buttons
-
-    label: the text to display as the button's label
-    """
-    def __init__(self, label):
-        gtk.Button.__init__(self, label)
-        HobButton.style_button(self)
-
-    @staticmethod
-    def style_button(button):
-        style = button.get_style()
-        style = gtk.rc_get_style_by_paths(gtk.settings_get_default(), 'gtk-button', 'gtk-button', gobject.TYPE_NONE)
-
-        button.set_flags(gtk.CAN_DEFAULT)
-        button.grab_default()
-
-#        label = "<span size='x-large'><b>%s</b></span>" % gobject.markup_escape_text(button.get_label())
-        label = button.get_label()
-        button.set_label(label)
-        button.child.set_use_markup(True)
-
-class HobButton(BaseHobButton):
-    """
-    A gtk.Button subclass which follows the visual design of Hob for primary
-    action buttons
-
-    label: the text to display as the button's label
-    """
-    def __init__(self, label):
-        BaseHobButton.__init__(self, label)
-        HobButton.style_button(self)
-
-class HobAltButton(BaseHobButton):
-    """
-    A gtk.Button subclass which has no relief, and so is more discrete
-    """
-    def __init__(self, label):
-        BaseHobButton.__init__(self, label)
-        HobAltButton.style_button(self)
-
-    """
-    A callback for the state-changed event to ensure the text is displayed
-    differently when the widget is not sensitive
-    """
-    @staticmethod
-    def desensitise_on_state_change_cb(button, state):
-        if not button.get_property("sensitive"):
-            HobAltButton.set_text(button, False)
-        else:
-            HobAltButton.set_text(button, True)
-
-    """
-    Set the button label with an appropriate colour for the current widget state
-    """
-    @staticmethod
-    def set_text(button, sensitive=True):
-        if sensitive:
-            colour = HobColors.PALE_BLUE
-        else:
-            colour = HobColors.LIGHT_GRAY
-        button.set_label("<span size='large' color='%s'><b>%s</b></span>" % (colour, gobject.markup_escape_text(button.text)))
-        button.child.set_use_markup(True)
-
-class HobImageButton(gtk.Button):
-    """
-    A gtk.Button with an icon and two rows of text, the second of which is
-    displayed in a blended colour.
-
-    primary_text: the main button label
-    secondary_text: optional second line of text
-    icon_path: path to the icon file to display on the button
-    """
-    def __init__(self, primary_text, secondary_text="", icon_path="", hover_icon_path=""):
-        gtk.Button.__init__(self)
-        self.set_relief(gtk.RELIEF_NONE)
-
-        self.icon_path = icon_path
-        self.hover_icon_path = hover_icon_path
-
-        hbox = gtk.HBox(False, 10)
-        hbox.show()
-        self.add(hbox)
-        self.icon = gtk.Image()
-        self.icon.set_from_file(self.icon_path)
-        self.icon.set_alignment(0.5, 0.0)
-        self.icon.show()
-        if self.hover_icon_path and len(self.hover_icon_path):
-            self.connect("enter-notify-event", self.set_hover_icon_cb)
-            self.connect("leave-notify-event", self.set_icon_cb)
-        hbox.pack_start(self.icon, False, False, 0)
-        label = gtk.Label()
-        label.set_alignment(0.0, 0.5)
-        colour = soften_color(label)
-        mark = "<span size='x-large'>%s</span>\n<span size='medium' fgcolor='%s' weight='ultralight'>%s</span>" % (primary_text, colour, secondary_text)
-        label.set_markup(mark)
-        label.show()
-        hbox.pack_start(label, True, True, 0)
-
-    def set_hover_icon_cb(self, widget, event):
-        self.icon.set_from_file(self.hover_icon_path)
-
-    def set_icon_cb(self, widget, event):
-        self.icon.set_from_file(self.icon_path)
-
-class HobInfoButton(gtk.EventBox):
-    """
-    This class implements a button-like widget per the Hob visual and UX designs
-    which will display a persistent tooltip, with the contents of tip_markup, when
-    clicked.
-
-    tip_markup: the Pango Markup to be displayed in the persistent tooltip
-    """
-    def __init__(self, tip_markup, parent=None):
-        gtk.EventBox.__init__(self)
-        self.image = gtk.Image()
-        self.image.set_from_file(
-        hic.ICON_INFO_DISPLAY_FILE)
-        self.image.show()
-        self.add(self.image)
-        self.tip_markup = tip_markup
-        self.my_parent = parent
-
-        self.set_events(gtk.gdk.BUTTON_RELEASE |
-                        gtk.gdk.ENTER_NOTIFY_MASK |
-                        gtk.gdk.LEAVE_NOTIFY_MASK)
-
-        self.connect("button-release-event", self.button_release_cb)
-        self.connect("enter-notify-event", self.mouse_in_cb)
-        self.connect("leave-notify-event", self.mouse_out_cb)
-
-    """
-    When the mouse click is released emulate a button-click and show the associated
-    PersistentTooltip
-    """
-    def button_release_cb(self, widget, event):
-        from bb.ui.crumbs.hig.propertydialog import PropertyDialog
-        self.dialog = PropertyDialog(title = '',
-                    parent = self.my_parent,
-                    information = self.tip_markup,
-                    flags = gtk.DIALOG_DESTROY_WITH_PARENT
-                        | gtk.DIALOG_NO_SEPARATOR)
-
-        button = self.dialog.add_button("Close", gtk.RESPONSE_CANCEL)
-        HobAltButton.style_button(button)
-        button.connect("clicked", lambda w: self.dialog.destroy())
-        self.dialog.show_all()
-        self.dialog.run()
-
-    """
-    Change to the prelight image when the mouse enters the widget
-    """
-    def mouse_in_cb(self, widget, event):
-        self.image.set_from_file(hic.ICON_INFO_HOVER_FILE)
-
-    """
-    Change to the stock image when the mouse enters the widget
-    """
-    def mouse_out_cb(self, widget, event):
-        self.image.set_from_file(hic.ICON_INFO_DISPLAY_FILE)
-
-class HobIndicator(gtk.DrawingArea):
-    def __init__(self, count):
-        gtk.DrawingArea.__init__(self)
-        # Set no window for transparent background
-        self.set_has_window(False)
-        self.set_size_request(38,38)
-        # We need to pass through button clicks
-        self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK)
-
-        self.connect('expose-event', self.expose)
-
-        self.count = count
-        self.color = HobColors.GRAY
-
-    def expose(self, widget, event):
-        if self.count and self.count > 0:
-            ctx = widget.window.cairo_create()
-
-            x, y, w, h = self.allocation
-
-            ctx.set_operator(cairo.OPERATOR_OVER)
-            ctx.set_source_color(gtk.gdk.color_parse(self.color))
-            ctx.translate(w/2, h/2)
-            ctx.arc(x, y, min(w,h)/2 - 2, 0, 2*math.pi)
-            ctx.fill_preserve()
-
-            layout = self.create_pango_layout(str(self.count))
-            textw, texth = layout.get_pixel_size()
-            x = (w/2)-(textw/2) + x
-            y = (h/2) - (texth/2) + y
-            ctx.move_to(x, y)
-            self.window.draw_layout(self.style.light_gc[gtk.STATE_NORMAL], int(x), int(y), layout)
-
-    def set_count(self, count):
-        self.count = count
-
-    def set_active(self, active):
-        if active:
-            self.color = HobColors.DEEP_RED
-        else:
-            self.color = HobColors.GRAY
-
-class HobTabLabel(gtk.HBox):
-    def __init__(self, text, count=0):
-        gtk.HBox.__init__(self, False, 0)
-        self.indicator = HobIndicator(count)
-        self.indicator.show()
-        self.pack_end(self.indicator, False, False)
-        self.lbl = gtk.Label(text)
-        self.lbl.set_alignment(0.0, 0.5)
-        self.lbl.show()
-        self.pack_end(self.lbl, True, True, 6)
-
-    def set_count(self, count):
-        self.indicator.set_count(count)
-
-    def set_active(self, active=True):
-        self.indicator.set_active(active)
-
-class HobNotebook(gtk.Notebook):
-    def __init__(self):
-        gtk.Notebook.__init__(self)
-        self.set_property('homogeneous', True)
-
-        self.pages = []
-
-        self.search = None
-        self.search_focus = False
-        self.page_changed = False
-
-        self.connect("switch-page", self.page_changed_cb)
-
-        self.show_all()
-
-    def page_changed_cb(self, nb, page, page_num):
-        for p, lbl in enumerate(self.pages):
-            if p == page_num:
-                lbl.set_active()
-            else:
-                lbl.set_active(False)
-
-        if self.search:
-            self.page_changed = True
-            self.reset_entry(self.search, page_num)
-
-    def append_page(self, child, tab_label, tab_tooltip=None):
-        label = HobTabLabel(tab_label)
-        if tab_tooltip:
-            label.set_tooltip_text(tab_tooltip)
-        label.set_active(False)
-        self.pages.append(label)
-        gtk.Notebook.append_page(self, child, label)
-
-    def set_entry(self, names, tips):
-        self.search = gtk.Entry()
-        self.search_names = names
-        self.search_tips = tips
-        style = self.search.get_style()
-        style.text[gtk.STATE_NORMAL] = self.get_colormap().alloc_color(HobColors.GRAY, False, False)
-        self.search.set_style(style)
-        self.search.set_text(names[0])
-        self.search.set_tooltip_text(self.search_tips[0])
-        self.search.props.has_tooltip = True
-
-        self.search.set_editable(False)
-        self.search.set_icon_from_stock(gtk.ENTRY_ICON_SECONDARY, gtk.STOCK_CLEAR)
-        self.search.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
-        self.search.connect("icon-release", self.set_search_entry_clear_cb)
-        self.search.set_width_chars(30)
-        self.search.show()
-
-        self.search.connect("focus-in-event", self.set_search_entry_editable_cb)
-        self.search.connect("focus-out-event", self.set_search_entry_reset_cb)
-        self.set_action_widget(self.search, gtk.PACK_END)
-
-    def show_indicator_icon(self, title, number):
-        for child in self.pages:
-            if child.lbl.get_label() == title:
-                child.set_count(number)
-
-    def hide_indicator_icon(self, title):
-        for child in self.pages:
-            if child.lbl.get_label() == title:
-                child.set_count(0)
-
-    def set_search_entry_editable_cb(self, search, event):
-        self.search_focus = True
-        search.set_editable(True)
-        text = search.get_text()
-        if text in self.search_names:
-            search.set_text("")
-        style = self.search.get_style()
-        style.text[gtk.STATE_NORMAL] = self.get_colormap().alloc_color(HobColors.BLACK, False, False)
-        search.set_style(style)
-
-    def set_search_entry_reset_cb(self, search, event):
-        page_num = self.get_current_page()
-        text = search.get_text()
-        if not text:
-            self.reset_entry(search, page_num)
-
-    def reset_entry(self, entry, page_num):
-        style = entry.get_style()
-        style.text[gtk.STATE_NORMAL] = self.get_colormap().alloc_color(HobColors.GRAY, False, False)
-        entry.set_style(style)
-        entry.set_text(self.search_names[page_num])
-        entry.set_tooltip_text(self.search_tips[page_num])
-        entry.set_editable(False)
-        entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
-
-    def set_search_entry_clear_cb(self, search, icon_pos, event):
-        if search.get_editable() == True:
-            search.set_text("")
-        search.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
-        search.grab_focus()
-
-    def set_page(self, title):
-        for child in self.pages:
-            if child.lbl.get_label() == title:
-                child.grab_focus()
-                self.set_current_page(self.pages.index(child))
-                return
-
-class HobWarpCellRendererText(gtk.CellRendererText):
-    def __init__(self, col_number):
-        gtk.CellRendererText.__init__(self)
-        self.set_property("wrap-mode", pango.WRAP_WORD_CHAR)
-        self.set_property("wrap-width", 300) # default value wrap width is 300
-        self.col_n = col_number
-
-    def do_render(self, window, widget, background_area, cell_area, expose_area, flags):
-        if widget:
-            self.props.wrap_width = self.get_resized_wrap_width(widget, widget.get_column(self.col_n))
-        return gtk.CellRendererText.do_render(self, window, widget, background_area, cell_area, expose_area, flags)
-
-    def get_resized_wrap_width(self, treeview, column):
-        otherCols = []
-        for col in treeview.get_columns():
-            if col != column:
-                otherCols.append(col)
-        adjwidth = treeview.allocation.width - sum(c.get_width() for c in otherCols)
-        adjwidth -= treeview.style_get_property("horizontal-separator") * 4
-        if self.props.wrap_width == adjwidth or adjwidth <= 0:
-                adjwidth = self.props.wrap_width
-        return adjwidth
-
-gobject.type_register(HobWarpCellRendererText)
-
-class HobIconChecker(hic):
-    def set_hob_icon_to_stock_icon(self, file_path, stock_id=""):
-        try:
-            pixbuf = gtk.gdk.pixbuf_new_from_file(file_path)
-        except Exception, e:
-            return None
-
-        if stock_id and (gtk.icon_factory_lookup_default(stock_id) == None):
-            icon_factory = gtk.IconFactory()
-            icon_factory.add_default()
-            icon_factory.add(stock_id, gtk.IconSet(pixbuf))
-            gtk.stock_add([(stock_id, '_label', 0, 0, '')])
-
-            return icon_factory.lookup(stock_id)
-
-        return None
-
-    """
-    For make hob icon consistently by request, and avoid icon view diff by system or gtk version, we use some 'hob icon' to replace the 'gtk icon'.
-    this function check the stock_id and make hob_id to replaced the gtk_id then return it or ""
-    """
-    def check_stock_icon(self, stock_name=""):
-        HOB_CHECK_STOCK_NAME = {
-            ('hic-dialog-info', 'gtk-dialog-info', 'dialog-info')           : self.ICON_INDI_INFO_FILE,
-            ('hic-ok',          'gtk-ok',           'ok')                   : self.ICON_INDI_TICK_FILE,
-            ('hic-dialog-error', 'gtk-dialog-error', 'dialog-error')        : self.ICON_INDI_ERROR_FILE,
-            ('hic-dialog-warning', 'gtk-dialog-warning', 'dialog-warning')  : self.ICON_INDI_ALERT_FILE,
-            ('hic-task-refresh', 'gtk-execute', 'execute')                  : self.ICON_INDI_REFRESH_FILE,
-        }
-        valid_stock_id = stock_name
-        if stock_name:
-            for names, path in HOB_CHECK_STOCK_NAME.iteritems():
-                if stock_name in names:
-                    valid_stock_id = names[0]
-                    if not gtk.icon_factory_lookup_default(valid_stock_id):
-                        self.set_hob_icon_to_stock_icon(path, valid_stock_id)
-
-        return valid_stock_id
-
-class HobCellRendererController(gobject.GObject):
-    (MODE_CYCLE_RUNNING, MODE_ONE_SHORT) = range(2)
-    __gsignals__ = {
-        "run-timer-stopped" : (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                                ()),
-    }
-    def __init__(self, runningmode=MODE_CYCLE_RUNNING, is_draw_row=False):
-        gobject.GObject.__init__(self)
-        self.timeout_id = None
-        self.current_angle_pos = 0.0
-        self.step_angle = 0.0
-        self.tree_headers_height = 0
-        self.running_cell_areas = []
-        self.running_mode = runningmode
-        self.is_queue_draw_row_area = is_draw_row
-        self.force_stop_enable = False
-
-    def is_active(self):
-        if self.timeout_id:
-            return True
-        else:
-            return False
-
-    def reset_run(self):
-        self.force_stop()
-        self.running_cell_areas = []
-        self.current_angle_pos = 0.0
-        self.step_angle = 0.0
-
-    ''' time_iterval: (1~1000)ms, which will be as the basic interval count for timer
-        init_usrdata: the current data which related the progress-bar will be at
-        min_usrdata: the range of min of user data
-        max_usrdata: the range of max of user data
-        step: each step which you want to progress
-        Note: the init_usrdata should in the range of from min to max, and max should > min
-             step should < (max - min)
-    '''
-    def start_run(self, time_iterval, init_usrdata, min_usrdata, max_usrdata, step, tree):
-        if (not time_iterval) or (not max_usrdata):
-            return
-        usr_range = (max_usrdata - min_usrdata) * 1.0
-        self.current_angle_pos = (init_usrdata * 1.0) / usr_range
-        self.step_angle = (step * 1) / usr_range
-        self.timeout_id = gobject.timeout_add(int(time_iterval),
-        self.make_image_on_progressing_cb, tree)
-        self.tree_headers_height = self.get_treeview_headers_height(tree)
-        self.force_stop_enable = False
-
-    def force_stop(self):
-        self.emit("run-timer-stopped")
-        self.force_stop_enable = True
-        if self.timeout_id:
-            if gobject.source_remove(self.timeout_id):
-                self.timeout_id = None
-
-    def on_draw_pixbuf_cb(self, pixbuf, cr, x, y, img_width, img_height, do_refresh=True):
-        if pixbuf:
-            r = max(img_width/2, img_height/2)
-            cr.translate(x + r, y + r)
-            if do_refresh:
-                cr.rotate(2 * math.pi * self.current_angle_pos)
-
-            cr.set_source_pixbuf(pixbuf, -img_width/2, -img_height/2)
-            cr.paint()
-
-    def on_draw_fadeinout_cb(self, cr, color, x, y, width, height, do_fadeout=True):
-        if do_fadeout:
-            alpha = self.current_angle_pos * 0.8
-        else:
-            alpha = (1.0 - self.current_angle_pos) * 0.8
-
-        cr.set_source_rgba(color.red, color.green, color.blue, alpha)
-        cr.rectangle(x, y, width, height)
-        cr.fill()
-
-    def get_treeview_headers_height(self, tree):
-        if tree and (tree.get_property("headers-visible") == True):
-            height = tree.get_allocation().height - tree.get_bin_window().get_size()[1]
-            return height
-
-        return 0
-
-    def make_image_on_progressing_cb(self, tree):
-        self.current_angle_pos += self.step_angle
-        if self.running_mode == self.MODE_CYCLE_RUNNING:
-            if (self.current_angle_pos >= 1):
-                self.current_angle_pos = 0
-        else:
-            if self.current_angle_pos > 1:
-                self.force_stop()
-                return False
-
-        if self.is_queue_draw_row_area:
-            for path in self.running_cell_areas:
-                rect = tree.get_cell_area(path, tree.get_column(0))
-                row_x, _, row_width, _ = tree.get_visible_rect()
-                tree.queue_draw_area(row_x, rect.y + self.tree_headers_height, row_width, rect.height)
-        else:
-            for rect in self.running_cell_areas:
-                tree.queue_draw_area(rect.x, rect.y + self.tree_headers_height, rect.width, rect.height)
-
-        return (not self.force_stop_enable)
-
-    def append_running_cell_area(self, cell_area):
-        if cell_area and (cell_area not in self.running_cell_areas):
-            self.running_cell_areas.append(cell_area)
-
-    def remove_running_cell_area(self, cell_area):
-        if cell_area in self.running_cell_areas:
-            self.running_cell_areas.remove(cell_area)
-        if not self.running_cell_areas:
-            self.reset_run()
-
-gobject.type_register(HobCellRendererController)
-
-class HobCellRendererPixbuf(gtk.CellRendererPixbuf):
-    def __init__(self):
-        gtk.CellRendererPixbuf.__init__(self)
-        self.control = HobCellRendererController()
-        # add icon checker for make the gtk-icon transfer to hob-icon
-        self.checker = HobIconChecker()
-        self.set_property("stock-size", gtk.ICON_SIZE_DND)
-
-    def get_pixbuf_from_stock_icon(self, widget, stock_id="", size=gtk.ICON_SIZE_DIALOG):
-        if widget and stock_id and gtk.icon_factory_lookup_default(stock_id):
-            return widget.render_icon(stock_id, size)
-
-        return None
-
-    def set_icon_name_to_id(self, new_name):
-        if new_name and type(new_name) == str:
-            # check the name is need to transfer to hob icon or not
-            name = self.checker.check_stock_icon(new_name)
-            if name.startswith("hic") or name.startswith("gtk"):
-                stock_id = name
-            else:
-                stock_id = 'gtk-' + name
-
-        return stock_id
-
-    ''' render cell exactly, "icon-name" is priority
-        if use the 'hic-task-refresh' will make the pix animation
-        if 'pix' will change the pixbuf for it from the pixbuf or image.
-    '''
-    def do_render(self, window, tree, background_area,cell_area, expose_area, flags):
-        if (not self.control) or (not tree):
-            return
-
-        x, y, w, h = self.on_get_size(tree, cell_area)
-        x += cell_area.x
-        y += cell_area.y
-        w -= 2 * self.get_property("xpad")
-        h -= 2 * self.get_property("ypad")
-
-        stock_id = ""
-        if self.props.icon_name:
-            stock_id = self.set_icon_name_to_id(self.props.icon_name)
-        elif self.props.stock_id:
-            stock_id = self.props.stock_id
-        elif self.props.pixbuf:
-            pix = self.props.pixbuf
-        else:
-            return
-
-        if stock_id:
-            pix = self.get_pixbuf_from_stock_icon(tree, stock_id, self.props.stock_size)
-        if stock_id == 'hic-task-refresh':
-            self.control.append_running_cell_area(cell_area)
-            if self.control.is_active():
-                self.control.on_draw_pixbuf_cb(pix, window.cairo_create(), x, y, w, h, True)
-            else:
-                self.control.start_run(200, 0, 0, 1000, 150, tree)
-        else:
-            self.control.remove_running_cell_area(cell_area)
-            self.control.on_draw_pixbuf_cb(pix, window.cairo_create(), x, y, w, h, False)
-
-    def on_get_size(self, widget, cell_area):
-        if self.props.icon_name or self.props.pixbuf or self.props.stock_id:
-            w, h = gtk.icon_size_lookup(self.props.stock_size)
-            calc_width = self.get_property("xpad") * 2 + w
-            calc_height = self.get_property("ypad") * 2 + h
-            x_offset = 0
-            y_offset = 0
-            if cell_area and w > 0 and h > 0:
-                x_offset = self.get_property("xalign") * (cell_area.width - calc_width - self.get_property("xpad"))
-                y_offset = self.get_property("yalign") * (cell_area.height - calc_height - self.get_property("ypad"))
-
-            return x_offset, y_offset, w, h
-
-        return 0, 0, 0, 0
-
-gobject.type_register(HobCellRendererPixbuf)
-
-class HobCellRendererToggle(gtk.CellRendererToggle):
-    def __init__(self):
-        gtk.CellRendererToggle.__init__(self)
-        self.ctrl = HobCellRendererController(is_draw_row=True)
-        self.ctrl.running_mode = self.ctrl.MODE_ONE_SHORT
-        self.cell_attr = {"fadeout": False, "number_of_children": 0}
-
-    def do_render(self, window, widget, background_area, cell_area, expose_area, flags):
-        if (not self.ctrl) or (not widget):
-            return
-
-        if flags & gtk.CELL_RENDERER_SELECTED:
-            state = gtk.STATE_SELECTED
-        else:
-            state = gtk.STATE_NORMAL
-
-        if self.ctrl.is_active():
-            path = widget.get_path_at_pos(cell_area.x + cell_area.width/2, cell_area.y + cell_area.height/2)
-            # sometimes the parameters of cell_area will be a negative number,such as pull up down the scroll bar
-            # it's over the tree container range, so the path will be bad
-            if not path: return
-            path = path[0]
-            if path in self.ctrl.running_cell_areas:
-                cr = window.cairo_create()
-                color = widget.get_style().base[state]
-
-                row_x, _, row_width, _ = widget.get_visible_rect()
-                border_y = self.get_property("ypad")
-                self.ctrl.on_draw_fadeinout_cb(cr, color, row_x, cell_area.y - border_y, row_width, \
-                                               cell_area.height + border_y * 2, self.cell_attr["fadeout"])
-        # draw number of a group
-        if self.cell_attr["number_of_children"]:
-            text = "%d pkg" % self.cell_attr["number_of_children"]
-            pangolayout = widget.create_pango_layout(text)
-            textw, texth = pangolayout.get_pixel_size()
-            x = cell_area.x + (cell_area.width/2) - (textw/2)
-            y = cell_area.y + (cell_area.height/2) - (texth/2)
-
-            widget.style.paint_layout(window, state, True, cell_area, widget, "checkbox", x, y, pangolayout)
-        else:
-            return gtk.CellRendererToggle.do_render(self, window, widget, background_area, cell_area, expose_area, flags)
-
-    '''delay: normally delay time is 1000ms
-       cell_list: whilch cells need to be render
-    '''
-    def fadeout(self, tree, delay, cell_list=None):
-        if (delay < 200) or (not tree):
-            return
-        self.cell_attr["fadeout"] = True
-        self.ctrl.running_cell_areas = cell_list
-        self.ctrl.start_run(200, 0, 0, delay, (delay * 200 / 1000), tree)
-
-    def connect_render_state_changed(self, func, usrdata=None):
-        if not func:
-            return
-        if usrdata:
-            self.ctrl.connect("run-timer-stopped", func, self, usrdata)
-        else:
-            self.ctrl.connect("run-timer-stopped", func, self)
-
-gobject.type_register(HobCellRendererToggle)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/persistenttooltip.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/persistenttooltip.py
deleted file mode 100644
index 927c194..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/persistenttooltip.py
+++ /dev/null
@@ -1,186 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2012   Intel Corporation
-#
-# Authored by Joshua Lock <josh@linux.intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gobject
-import gtk
-try:
-    import gconf
-except:
-    pass
-
-class PersistentTooltip(gtk.Window):
-    """
-    A tooltip which persists once shown until the user dismisses it with the Esc
-    key or by clicking the close button.
-
-    # FIXME: the PersistentTooltip should be disabled when the user clicks anywhere off
-    # it. We can't do this with focus-out-event becuase modal ensures we have focus?
-
-    markup: some Pango text markup to display in the tooltip
-    """
-    def __init__(self, markup, parent_win=None):
-        gtk.Window.__init__(self, gtk.WINDOW_POPUP)
-
-        # Inherit the system theme for a tooltip
-        style = gtk.rc_get_style_by_paths(gtk.settings_get_default(),
-                        'gtk-tooltip', 'gtk-tooltip', gobject.TYPE_NONE)
-        self.set_style(style)
-
-        # The placement of the close button on the tip should reflect how the
-        # window manager of the users system places close buttons. Try to read
-        # the metacity gconf key to determine whether the close button is on the
-        # left or the right.
-        # In the case that we can't determine the users configuration we default
-        # to close buttons being on the right.
-        __button_right = True
-        try:
-            client = gconf.client_get_default()
-            order = client.get_string("/apps/metacity/general/button_layout")
-            if order and order.endswith(":"):
-                __button_right = False
-        except NameError:
-            pass
-
-        # We need to ensure we're only shown once
-        self.shown = False
-
-        # We don't want any WM decorations
-        self.set_decorated(False)
-        # We don't want to show in the taskbar or window switcher
-        self.set_skip_pager_hint(True)
-        self.set_skip_taskbar_hint(True)
-        # We must be modal to ensure we grab focus when presented from a gtk.Dialog
-        self.set_modal(True)
-
-        self.set_border_width(0)
-        self.set_position(gtk.WIN_POS_MOUSE)
-        self.set_opacity(0.95)
-
-        # Ensure a reasonable minimum size
-        self.set_geometry_hints(self, 100, 50)
-
-        # Set this window as a transient window for parent(main window)
-        if parent_win:
-            self.set_transient_for(parent_win)
-            self.set_destroy_with_parent(True)
-        # Draw our label and close buttons
-        hbox = gtk.HBox(False, 0)
-        hbox.show()
-        self.add(hbox)
-
-        img = gtk.Image()
-        img.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_BUTTON)
-
-        self.button = gtk.Button()
-        self.button.set_image(img)
-        self.button.connect("clicked", self._dismiss_cb)
-        self.button.set_flags(gtk.CAN_DEFAULT)
-        self.button.grab_focus()
-        self.button.show()
-        vbox = gtk.VBox(False, 0)
-        vbox.show()
-        vbox.pack_start(self.button, False, False, 0)
-        if __button_right:
-            hbox.pack_end(vbox, True, True, 0)
-        else:
-            hbox.pack_start(vbox, True, True, 0)
-
-        self.set_default(self.button)
-
-        bin = gtk.HBox(True, 6)
-        bin.set_border_width(6)
-        bin.show()
-        self.label = gtk.Label()
-        self.label.set_line_wrap(True)
-        # We want to match the colours of the normal tooltips, as dictated by
-        # the users gtk+-2.0 theme, wherever possible - on some systems this
-        # requires explicitly setting a fg_color for the label which matches the
-        # tooltip_fg_color
-        settings = gtk.settings_get_default()
-        colours = settings.get_property('gtk-color-scheme').split('\n')
-        # remove any empty lines, there's likely to be a trailing one after
-        # calling split on a dictionary-like string
-        colours = filter(None, colours)
-        for col in colours:
-            item, val = col.split(': ')
-            if item == 'tooltip_fg_color':
-                style = self.label.get_style()
-                style.fg[gtk.STATE_NORMAL] = gtk.gdk.color_parse(val)
-                self.label.set_style(style)
-                break # we only care for the tooltip_fg_color
-
-        self.label.set_markup(markup)
-        self.label.show()
-        bin.add(self.label)
-        hbox.pack_end(bin, True, True, 6)
-
-        # add the original URL display for user reference
-        if 'a href' in markup:
-            hbox.set_tooltip_text(self.get_markup_url(markup))
-        hbox.show()
-
-        self.connect("key-press-event", self._catch_esc_cb)
-
-    """
-    Callback when the PersistentTooltip's close button is clicked.
-    Hides the PersistentTooltip.
-    """
-    def _dismiss_cb(self, button):
-        self.hide()
-        return True
-
-    """
-    Callback when the Esc key is detected. Hides the PersistentTooltip.
-    """
-    def _catch_esc_cb(self, widget, event):
-        keyname = gtk.gdk.keyval_name(event.keyval)
-        if keyname == "Escape":
-            self.hide()
-        return True
-
-    """
-    Called to present the PersistentTooltip.
-    Overrides the superclasses show() method to include state tracking.
-    """
-    def show(self):
-        if not self.shown:
-            self.shown = True
-            gtk.Window.show(self)
-
-    """
-    Called to hide the PersistentTooltip.
-    Overrides the superclasses hide() method to include state tracking.
-    """
-    def hide(self):
-        self.shown = False
-        gtk.Window.hide(self)
-
-    """
-    Called to get the hyperlink URL from markup text.
-    """
-    def get_markup_url(self, markup):
-        url = "http:"
-        if markup and type(markup) == str:
-            s = markup
-            if 'http:' in s:
-                import re
-                url = re.search('(http:[^,\\ "]+)', s).group(0)
-
-        return url
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/progress.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/progress.py
deleted file mode 100644
index 1d28a11..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/progress.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import gtk
-
-class ProgressBar(gtk.Dialog):
-    def __init__(self, parent):
-
-        gtk.Dialog.__init__(self, flags=(gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT))
-        self.set_title("Parsing metadata, please wait...")
-        self.set_default_size(500, 0)
-        self.set_transient_for(parent)
-        self.progress = gtk.ProgressBar()
-        self.vbox.pack_start(self.progress)
-        self.show_all()
-
-    def set_text(self, msg):
-        self.progress.set_text(msg)
-
-    def update(self, x, y):
-        self.progress.set_fraction(float(x)/float(y))
-        self.progress.set_text("%2d %%" % (x*100/y))
-
-    def pulse(self):
-        self.progress.set_text("Loading...")
-        self.progress.pulse()
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/progressbar.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/progressbar.py
deleted file mode 100644
index 3e2c660..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/progressbar.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2011        Intel Corporation
-#
-# Authored by Shane Wang <shane.wang@intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gtk
-from bb.ui.crumbs.hobcolor import HobColors
-
-class HobProgressBar (gtk.ProgressBar):
-    def __init__(self):
-        gtk.ProgressBar.__init__(self)
-        self.set_rcstyle(True)
-        self.percentage = 0
-
-    def set_rcstyle(self, status):
-        rcstyle = gtk.RcStyle()
-        rcstyle.fg[2] = gtk.gdk.Color(HobColors.BLACK)
-        if status == "stop":
-            rcstyle.bg[3] = gtk.gdk.Color(HobColors.WARNING)
-        elif status == "fail":
-            rcstyle.bg[3] = gtk.gdk.Color(HobColors.ERROR)
-        else:
-            rcstyle.bg[3] = gtk.gdk.Color(HobColors.RUNNING)
-        self.modify_style(rcstyle)
-
-    def set_title(self, text=None):
-        if not text:
-            text = ""
-        text += " %.0f%%" % self.percentage
-        self.set_text(text)
-
-    def set_stop_title(self, text=None):
-	if not text:
-	    text = ""
-	self.set_text(text)
-
-    def reset(self):
-        self.set_fraction(0)
-        self.set_text("")
-        self.set_rcstyle(True)
-        self.percentage = 0
-
-    def update(self, fraction):
-        self.percentage = int(fraction * 100)
-        self.set_fraction(fraction)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/puccho.glade b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/puccho.glade
deleted file mode 100644
index d7553a6..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/puccho.glade
+++ /dev/null
@@ -1,606 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Mon Nov 10 12:24:12 2008 -->
-<glade-interface>
-  <widget class="GtkDialog" id="build_dialog">
-    <property name="title" translatable="yes">Start a build</property>
-    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <property name="has_separator">False</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox1">
-        <property name="visible">True</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkTable" id="build_table">
-            <property name="visible">True</property>
-            <property name="border_width">6</property>
-            <property name="n_rows">7</property>
-            <property name="n_columns">3</property>
-            <property name="column_spacing">5</property>
-            <property name="row_spacing">6</property>
-            <child>
-              <widget class="GtkAlignment" id="status_alignment">
-                <property name="visible">True</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkHBox" id="status_hbox">
-                    <property name="spacing">6</property>
-                    <child>
-                      <widget class="GtkImage" id="status_image">
-                        <property name="visible">True</property>
-                        <property name="no_show_all">True</property>
-                        <property name="xalign">0</property>
-                        <property name="stock">gtk-dialog-error</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="status_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">If you see this text something is wrong...</property>
-                        <property name="use_markup">True</property>
-                        <property name="use_underline">True</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label2">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">&lt;b&gt;Build configuration&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkComboBox" id="image_combo">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">6</property>
-                <property name="bottom_attach">7</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="image_label">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="xalign">0</property>
-                <property name="xpad">12</property>
-                <property name="label" translatable="yes">Image:</property>
-              </widget>
-              <packing>
-                <property name="top_attach">6</property>
-                <property name="bottom_attach">7</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkComboBox" id="distribution_combo">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">5</property>
-                <property name="bottom_attach">6</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="distribution_label">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="xalign">0</property>
-                <property name="xpad">12</property>
-                <property name="label" translatable="yes">Distribution:</property>
-              </widget>
-              <packing>
-                <property name="top_attach">5</property>
-                <property name="bottom_attach">6</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkComboBox" id="machine_combo">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">4</property>
-                <property name="bottom_attach">5</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="machine_label">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="xalign">0</property>
-                <property name="xpad">12</property>
-                <property name="label" translatable="yes">Machine:</property>
-              </widget>
-              <packing>
-                <property name="top_attach">4</property>
-                <property name="bottom_attach">5</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="refresh_button">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="label" translatable="yes">gtk-refresh</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="location_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="width_chars">32</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label3">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="xpad">12</property>
-                <property name="label" translatable="yes">Location:</property>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label1">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">&lt;b&gt;Repository&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment1">
-                <property name="visible">True</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">4</property>
-                <property name="bottom_attach">5</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment2">
-                <property name="visible">True</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">5</property>
-                <property name="bottom_attach">6</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">6</property>
-                <property name="bottom_attach">7</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkDialog" id="dialog2">
-    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <property name="has_separator">False</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox2">
-        <property name="visible">True</property>
-        <property name="spacing">2</property>
-        <child>
-          <widget class="GtkTable" id="table2">
-            <property name="visible">True</property>
-            <property name="border_width">6</property>
-            <property name="n_rows">7</property>
-            <property name="n_columns">3</property>
-            <property name="column_spacing">6</property>
-            <property name="row_spacing">6</property>
-            <child>
-              <widget class="GtkLabel" id="label7">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">&lt;b&gt;Repositories&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment4">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <child>
-                      <widget class="GtkTreeView" id="treeview1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="entry1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label9">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">&lt;b&gt;Additional packages&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="top_attach">4</property>
-                <property name="bottom_attach">5</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment6">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="xscale">0</property>
-                <child>
-                  <widget class="GtkLabel" id="label8">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="yalign">0</property>
-                    <property name="xpad">12</property>
-                    <property name="label" translatable="yes">Location: </property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment7">
-                <property name="visible">True</property>
-                <property name="xalign">1</property>
-                <property name="xscale">0</property>
-                <child>
-                  <widget class="GtkHButtonBox" id="hbuttonbox1">
-                    <property name="visible">True</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <widget class="GtkButton" id="button7">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="label" translatable="yes">gtk-remove</property>
-                        <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkButton" id="button6">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="label" translatable="yes">gtk-edit</property>
-                        <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkButton" id="button5">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="label" translatable="yes">gtk-add</property>
-                        <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment5">
-                <property name="visible">True</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label10">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="yalign">0</property>
-                <property name="xpad">12</property>
-                <property name="label" translatable="yes">Search:</property>
-              </widget>
-              <packing>
-                <property name="top_attach">5</property>
-                <property name="bottom_attach">6</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="entry2">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">5</property>
-                <property name="bottom_attach">6</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkAlignment" id="alignment8">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <child>
-                      <widget class="GtkTreeView" id="treeview2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="headers_clickable">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="right_attach">3</property>
-                <property name="top_attach">6</property>
-                <property name="bottom_attach">7</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area2">
-            <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
-            <child>
-              <widget class="GtkButton" id="button4">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="label" translatable="yes">gtk-close</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">0</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="main_window">
-    <child>
-      <widget class="GtkVBox" id="main_window_vbox">
-        <property name="visible">True</property>
-        <child>
-          <widget class="GtkToolbar" id="main_toolbar">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkToolButton" id="main_toolbutton_build">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Build</property>
-                <property name="stock_id">gtk-execute</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVPaned" id="vpaned1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="results_scrolledwindow">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="resize">False</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkScrolledWindow" id="progress_scrolledwindow">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="resize">True</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/runningbuild.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/runningbuild.py
deleted file mode 100644
index 16a955d..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/runningbuild.py
+++ /dev/null
@@ -1,551 +0,0 @@
-
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2008        Intel Corporation
-#
-# Authored by Rob Bradford <rob@linux.intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gtk
-import gobject
-import logging
-import time
-import urllib
-import urllib2
-import pango
-from bb.ui.crumbs.hobcolor import HobColors
-from bb.ui.crumbs.hobwidget import HobWarpCellRendererText, HobCellRendererPixbuf
-
-class RunningBuildModel (gtk.TreeStore):
-    (COL_LOG, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, COL_COLOR, COL_NUM_ACTIVE) = range(7)
-
-    def __init__ (self):
-        gtk.TreeStore.__init__ (self,
-                                gobject.TYPE_STRING,
-                                gobject.TYPE_STRING,
-                                gobject.TYPE_STRING,
-                                gobject.TYPE_STRING,
-                                gobject.TYPE_STRING,
-                                gobject.TYPE_STRING,
-                                gobject.TYPE_INT)
-
-    def failure_model_filter(self, model, it):
-        color = model.get(it, self.COL_COLOR)[0]
-        if not color:
-            return False
-        if color == HobColors.ERROR or color == HobColors.WARNING:
-            return True
-        return False
-
-    def failure_model(self):
-        model = self.filter_new()
-        model.set_visible_func(self.failure_model_filter)
-        return model
-
-    def foreach_cell_func(self, model, path, iter, usr_data=None):
-        if model.get_value(iter, self.COL_ICON) == "gtk-execute":
-            model.set(iter, self.COL_ICON, "")
-
-    def close_task_refresh(self):
-        self.foreach(self.foreach_cell_func, None)
-
-class RunningBuild (gobject.GObject):
-    __gsignals__ = {
-          'build-started'   :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'build-succeeded' :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'build-failed'    :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'build-complete'  :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'build-aborted'   :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'task-started'    :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               (gobject.TYPE_PYOBJECT,)),
-          'log-error'       :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'log-warning'     :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'disk-full'       :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               ()),
-          'no-provider'     :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               (gobject.TYPE_PYOBJECT,)),
-          'log'             :  (gobject.SIGNAL_RUN_LAST,
-                                gobject.TYPE_NONE,
-                               (gobject.TYPE_STRING, gobject.TYPE_PYOBJECT,)),
-          }
-    pids_to_task = {}
-    tasks_to_iter = {}
-
-    def __init__ (self, sequential=False):
-        gobject.GObject.__init__ (self)
-        self.model = RunningBuildModel()
-        self.sequential = sequential
-        self.buildaborted = False
-
-    def reset (self):
-        self.pids_to_task.clear()
-        self.tasks_to_iter.clear()
-        self.model.clear()
-
-    def handle_event (self, event, pbar=None):
-        # Handle an event from the event queue, this may result in updating
-        # the model and thus the UI. Or it may be to tell us that the build
-        # has finished successfully (or not, as the case may be.)
-
-        parent = None
-        pid = 0
-        package = None
-        task = None
-
-        # If we have a pid attached to this message/event try and get the
-        # (package, task) pair for it. If we get that then get the parent iter
-        # for the message.
-        if hasattr(event, 'pid'):
-            pid = event.pid
-        if hasattr(event, 'process'):
-            pid = event.process
-
-        if pid and pid in self.pids_to_task:
-            (package, task) = self.pids_to_task[pid]
-            parent = self.tasks_to_iter[(package, task)]
-
-        if(isinstance(event, logging.LogRecord)):
-            if event.taskpid == 0 or event.levelno > logging.INFO:
-                self.emit("log", "handle", event)
-            # FIXME: this is a hack! More info in Yocto #1433
-            # http://bugzilla.pokylinux.org/show_bug.cgi?id=1433, temporarily
-            # mask the error message as it's not informative for the user.
-            if event.msg.startswith("Execution of event handler 'run_buildstats' failed"):
-                return
-
-            if (event.levelno < logging.INFO or
-                event.msg.startswith("Running task")):
-                return # don't add these to the list
-
-            if event.levelno >= logging.ERROR:
-                icon = "dialog-error"
-                color = HobColors.ERROR
-                self.emit("log-error")
-            elif event.levelno >= logging.WARNING:
-                icon = "dialog-warning"
-                color = HobColors.WARNING
-                self.emit("log-warning")
-            else:
-                icon = None
-                color = HobColors.OK
-
-            # if we know which package we belong to, we'll append onto its list.
-            # otherwise, we'll jump to the top of the master list
-            if self.sequential or not parent:
-                tree_add = self.model.append
-            else:
-                tree_add = self.model.prepend
-            tree_add(parent,
-                     (None,
-                      package,
-                      task,
-                      event.getMessage(),
-                      icon,
-                      color,
-                      0))
-
-            # if there are warnings while processing a package
-            #  (parent), mark the task with warning color;
-            # in case there are errors, the updates will be
-            #  handled on TaskFailed.
-            if color == HobColors.WARNING and parent:
-                self.model.set(parent, self.model.COL_COLOR, color)
-                if task: #then we have a parent (package), and update it's color
-                    self.model.set(self.tasks_to_iter[(package, None)], self.model.COL_COLOR, color)
-
-        elif isinstance(event, bb.build.TaskStarted):
-            (package, task) = (event._package, event._task)
-
-            # Save out this PID.
-            self.pids_to_task[pid] = (package, task)
-
-            # Check if we already have this package in our model. If so then
-            # that can be the parent for the task. Otherwise we create a new
-            # top level for the package.
-            if ((package, None) in self.tasks_to_iter):
-                parent = self.tasks_to_iter[(package, None)]
-            else:
-                if self.sequential:
-                    add = self.model.append
-                else:
-                    add = self.model.prepend
-                parent = add(None, (None,
-                                    package,
-                                    None,
-                                    "Package: %s" % (package),
-                                    None,
-                                    HobColors.OK,
-                                    0))
-                self.tasks_to_iter[(package, None)] = parent
-
-            # Because this parent package now has an active child mark it as
-            # such.
-            self.model.set(parent, self.model.COL_ICON, "gtk-execute")
-            parent_color = self.model.get(parent, self.model.COL_COLOR)[0]
-            if parent_color != HobColors.ERROR and parent_color != HobColors.WARNING:
-                self.model.set(parent, self.model.COL_COLOR, HobColors.RUNNING)
-
-            # Add an entry in the model for this task
-            i = self.model.append (parent, (None,
-                                            package,
-                                            task,
-                                            "Task: %s" % (task),
-                                            "gtk-execute",
-                                            HobColors.RUNNING,
-                                            0))
-
-            # update the parent's active task count
-            num_active = self.model.get(parent, self.model.COL_NUM_ACTIVE)[0] + 1
-            self.model.set(parent, self.model.COL_NUM_ACTIVE, num_active)
-
-            # Save out the iter so that we can find it when we have a message
-            # that we need to attach to a task.
-            self.tasks_to_iter[(package, task)] = i
-
-        elif isinstance(event, bb.build.TaskBase):
-            self.emit("log", "info", event._message)
-            current = self.tasks_to_iter[(package, task)]
-            parent = self.tasks_to_iter[(package, None)]
-
-            # remove this task from the parent's active count
-            num_active = self.model.get(parent, self.model.COL_NUM_ACTIVE)[0] - 1
-            self.model.set(parent, self.model.COL_NUM_ACTIVE, num_active)
-
-            if isinstance(event, bb.build.TaskFailed):
-                # Mark the task and parent as failed
-                icon = "dialog-error"
-                color = HobColors.ERROR
-
-                logfile = event.logfile
-                if logfile and os.path.exists(logfile):
-                    with open(logfile) as f:
-                        logdata = f.read()
-                        self.model.append(current, ('pastebin', None, None, logdata, 'gtk-error', HobColors.OK, 0))
-
-                for i in (current, parent):
-                    self.model.set(i, self.model.COL_ICON, icon,
-                                   self.model.COL_COLOR, color)
-            else:
-                # Mark the parent package and the task as inactive,
-                # but make sure to preserve error, warnings and active
-                # states
-                parent_color = self.model.get(parent, self.model.COL_COLOR)[0]
-                task_color = self.model.get(current, self.model.COL_COLOR)[0]
-
-                # Mark the task as inactive
-                self.model.set(current, self.model.COL_ICON, None)
-                if task_color != HobColors.ERROR:
-                    if task_color == HobColors.WARNING:
-                        self.model.set(current, self.model.COL_ICON, 'dialog-warning')
-                    else:
-                        self.model.set(current, self.model.COL_COLOR, HobColors.OK)
-
-                # Mark the parent as inactive
-                if parent_color != HobColors.ERROR:
-                    if parent_color == HobColors.WARNING:
-                        self.model.set(parent, self.model.COL_ICON, "dialog-warning")
-                    else:
-                        self.model.set(parent, self.model.COL_ICON, None)
-                        if num_active == 0:
-                            self.model.set(parent, self.model.COL_COLOR, HobColors.OK)
-
-            # Clear the iters and the pids since when the task goes away the
-            # pid will no longer be used for messages
-            del self.tasks_to_iter[(package, task)]
-            del self.pids_to_task[pid]
-
-        elif isinstance(event, bb.event.BuildStarted):
-
-            self.emit("build-started")
-            self.model.prepend(None, (None,
-                                      None,
-                                      None,
-                                      "Build Started (%s)" % time.strftime('%m/%d/%Y %H:%M:%S'),
-                                      None,
-                                      HobColors.OK,
-                                      0))
-            if pbar:
-                pbar.update(0, self.progress_total)
-                pbar.set_title(bb.event.getName(event))
-
-        elif isinstance(event, bb.event.BuildCompleted):
-            failures = int (event._failures)
-            self.model.prepend(None, (None,
-                                      None,
-                                      None,
-                                      "Build Completed (%s)" % time.strftime('%m/%d/%Y %H:%M:%S'),
-                                      None,
-                                      HobColors.OK,
-                                      0))
-
-            # Emit the appropriate signal depending on the number of failures
-            if self.buildaborted:
-                self.emit ("build-aborted")
-                self.buildaborted = False
-            elif (failures >= 1):
-                self.emit ("build-failed")
-            else:
-                self.emit ("build-succeeded")
-            # Emit a generic "build-complete" signal for things wishing to
-            # handle when the build is finished
-            self.emit("build-complete")
-            # reset the all cell's icon indicator
-            self.model.close_task_refresh()
-            if pbar:
-                pbar.set_text(event.msg)
-
-        elif isinstance(event, bb.event.DiskFull):
-            self.buildaborted = True
-            self.emit("disk-full")
-
-        elif isinstance(event, bb.command.CommandFailed):
-            self.emit("log", "error", "Command execution failed: %s" % (event.error))
-            if event.error.startswith("Exited with"):
-                # If the command fails with an exit code we're done, emit the
-                # generic signal for the UI to notify the user
-                self.emit("build-complete")
-                # reset the all cell's icon indicator
-                self.model.close_task_refresh()
-
-        elif isinstance(event, bb.event.CacheLoadStarted) and pbar:
-            pbar.set_title("Loading cache")
-            self.progress_total = event.total
-            pbar.update(0, self.progress_total)
-        elif isinstance(event, bb.event.CacheLoadProgress) and pbar:
-            pbar.update(event.current, self.progress_total)
-        elif isinstance(event, bb.event.CacheLoadCompleted) and pbar:
-            pbar.update(self.progress_total, self.progress_total)
-            pbar.hide()
-        elif isinstance(event, bb.event.ParseStarted) and pbar:
-            if event.total == 0:
-                return
-            pbar.set_title("Processing recipes")
-            self.progress_total = event.total
-            pbar.update(0, self.progress_total)
-        elif isinstance(event, bb.event.ParseProgress) and pbar:
-            pbar.update(event.current, self.progress_total)
-        elif isinstance(event, bb.event.ParseCompleted) and pbar:
-            pbar.hide()
-        #using runqueue events as many as possible to update the progress bar
-        elif isinstance(event, bb.runqueue.runQueueTaskFailed):
-            self.emit("log", "error", "Task %s (%s) failed with exit code '%s'" % (event.taskid, event.taskstring, event.exitcode))
-        elif isinstance(event, bb.runqueue.sceneQueueTaskFailed):
-            self.emit("log", "warn", "Setscene task %s (%s) failed with exit code '%s' - real task will be run instead" \
-                                     % (event.taskid, event.taskstring, event.exitcode))
-        elif isinstance(event, (bb.runqueue.runQueueTaskStarted, bb.runqueue.sceneQueueTaskStarted)):
-            if isinstance(event, bb.runqueue.sceneQueueTaskStarted):
-                self.emit("log", "info", "Running setscene task %d of %d (%s)" % \
-                                         (event.stats.completed + event.stats.active + event.stats.failed + 1,
-                                          event.stats.total, event.taskstring))
-            else:
-                if event.noexec:
-                    tasktype = 'noexec task'
-                else:
-                    tasktype = 'task'
-                self.emit("log", "info", "Running %s %s of %s (ID: %s, %s)" % \
-                                         (tasktype, event.stats.completed + event.stats.active + event.stats.failed + 1,
-                                          event.stats.total, event.taskid, event.taskstring))
-            message = {}
-            message["eventname"] = bb.event.getName(event)
-            num_of_completed = event.stats.completed + event.stats.failed
-            message["current"] = num_of_completed
-            message["total"] = event.stats.total
-            message["title"] = ""
-            message["task"] = event.taskstring
-            self.emit("task-started", message)
-        elif isinstance(event, bb.event.MultipleProviders):
-            self.emit("log", "info", "multiple providers are available for %s%s (%s)" \
-                                     % (event._is_runtime and "runtime " or "", event._item, ", ".join(event._candidates)))
-            self.emit("log", "info", "consider defining a PREFERRED_PROVIDER entry to match %s" % (event._item))
-        elif isinstance(event, bb.event.NoProvider):
-            msg = ""
-            if event._runtime:
-                r = "R"
-            else:
-                r = ""
-
-            extra = ''
-            if not event._reasons:
-                if event._close_matches:
-                    extra = ". Close matches:\n  %s" % '\n  '.join(event._close_matches)
-
-            if event._dependees:
-                msg = "Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)%s\n" % (r, event._item, ", ".join(event._dependees), r, extra)
-            else:
-                msg = "Nothing %sPROVIDES '%s'%s\n" % (r, event._item, extra)
-            if event._reasons:
-                for reason in event._reasons:
-                    msg += ("%s\n" % reason)
-            self.emit("no-provider", msg)
-            self.emit("log", "error", msg)
-        elif isinstance(event, bb.event.LogExecTTY):
-            icon = "dialog-warning"
-            color = HobColors.WARNING
-            if self.sequential or not parent:
-                tree_add = self.model.append
-            else:
-                tree_add = self.model.prepend
-            tree_add(parent,
-                     (None,
-                      package,
-                      task,
-                      event.msg,
-                      icon,
-                      color,
-                      0))
-        else:
-            if not isinstance(event, (bb.event.BuildBase,
-                                      bb.event.StampUpdate,
-                                      bb.event.ConfigParsed,
-                                      bb.event.RecipeParsed,
-                                      bb.event.RecipePreFinalise,
-                                      bb.runqueue.runQueueEvent,
-                                      bb.runqueue.runQueueExitWait,
-                                      bb.event.OperationStarted,
-                                      bb.event.OperationCompleted,
-                                      bb.event.OperationProgress)):
-                self.emit("log", "error", "Unknown event: %s" % (event.error if hasattr(event, 'error') else 'error'))
-
-        return
-
-
-def do_pastebin(text):
-    url = 'http://pastebin.com/api_public.php'
-    params = {'paste_code': text, 'paste_format': 'text'}
-
-    req = urllib2.Request(url, urllib.urlencode(params))
-    response = urllib2.urlopen(req)
-    paste_url = response.read()
-
-    return paste_url
-
-
-class RunningBuildTreeView (gtk.TreeView):
-    __gsignals__ = {
-        "button_press_event" : "override"
-        }
-    def __init__ (self, readonly=False, hob=False):
-        gtk.TreeView.__init__ (self)
-        self.readonly = readonly
-
-        # The icon that indicates whether we're building or failed.
-        # add 'hob' flag because there has not only hob to share this code
-        if hob:
-            renderer = HobCellRendererPixbuf ()
-        else:
-            renderer = gtk.CellRendererPixbuf()
-        col = gtk.TreeViewColumn ("Status", renderer)
-        col.add_attribute (renderer, "icon-name", 4)
-        self.append_column (col)
-
-        # The message of the build.
-        # add 'hob' flag because there has not only hob to share this code
-        if hob:
-            self.message_renderer = HobWarpCellRendererText (col_number=1)
-        else:
-            self.message_renderer = gtk.CellRendererText ()
-        self.message_column = gtk.TreeViewColumn ("Message", self.message_renderer, text=3)
-        self.message_column.add_attribute(self.message_renderer, 'background', 5)
-        self.message_renderer.set_property('editable', (not self.readonly))
-        self.append_column (self.message_column)
-
-    def do_button_press_event(self, event):
-        gtk.TreeView.do_button_press_event(self, event)
-
-        if event.button == 3:
-            selection = super(RunningBuildTreeView, self).get_selection()
-            (model, it) = selection.get_selected()
-            if it is not None:
-                can_paste = model.get(it, model.COL_LOG)[0]
-                if can_paste == 'pastebin':
-                    # build a simple menu with a pastebin option
-                    menu = gtk.Menu()
-                    menuitem = gtk.MenuItem("Copy")
-                    menu.append(menuitem)
-                    menuitem.connect("activate", self.clipboard_handler, (model, it))
-                    menuitem.show()
-                    menuitem = gtk.MenuItem("Send log to pastebin")
-                    menu.append(menuitem)
-                    menuitem.connect("activate", self.pastebin_handler, (model, it))
-                    menuitem.show()
-                    menu.show()
-                    menu.popup(None, None, None, event.button, event.time)
-
-    def _add_to_clipboard(self, clipping):
-        """
-        Add the contents of clipping to the system clipboard.
-        """
-        clipboard = gtk.clipboard_get()
-        clipboard.set_text(clipping)
-        clipboard.store()
-
-    def pastebin_handler(self, widget, data):
-        """
-        Send the log data to pastebin, then add the new paste url to the
-        clipboard.
-        """
-        (model, it) = data
-        paste_url = do_pastebin(model.get(it, model.COL_MESSAGE)[0])
-
-        # @todo Provide visual feedback to the user that it is done and that
-        # it worked.
-        print paste_url
-
-        self._add_to_clipboard(paste_url)
-
-    def clipboard_handler(self, widget, data):
-        """
-        """
-        (model, it) = data
-        message = model.get(it, model.COL_MESSAGE)[0]
-
-        self._add_to_clipboard(message)
-
-class BuildFailureTreeView(gtk.TreeView):
-
-    def __init__ (self):
-        gtk.TreeView.__init__(self)
-        self.set_rules_hint(False)
-        self.set_headers_visible(False)
-        self.get_selection().set_mode(gtk.SELECTION_SINGLE)
-
-        # The icon that indicates whether we're building or failed.
-        renderer = HobCellRendererPixbuf ()
-        col = gtk.TreeViewColumn ("Status", renderer)
-        col.add_attribute (renderer, "icon-name", RunningBuildModel.COL_ICON)
-        self.append_column (col)
-
-        # The message of the build.
-        self.message_renderer = HobWarpCellRendererText (col_number=1)
-        self.message_column = gtk.TreeViewColumn ("Message", self.message_renderer, text=RunningBuildModel.COL_MESSAGE, background=RunningBuildModel.COL_COLOR)
-        self.append_column (self.message_column)
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/utils.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/utils.py
deleted file mode 100644
index 939864f..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/utils.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# BitBake UI Utils 
-#
-# Copyright (C) 2012 Intel Corporation
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-# This utility method looks for xterm or vte and return the 
-# frist to exist, currently we are keeping this simple, but 
-# we will likely move the oe.terminal implementation into 
-# bitbake which will allow more flexibility.
-
-import os
-import bb
-
-def which_terminal():
-    term = bb.utils.which(os.environ["PATH"], "xterm")
-    if term:
-        return term + " -e "
-    term = bb.utils.which(os.environ["PATH"], "vte")
-    if term:
-        return term + " -c "
-    return None
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/depexp.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/depexp.py
index 240aafc..d879e04 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/depexp.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/depexp.py
@@ -18,14 +18,15 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 import sys
-import gobject
-import gtk
-import Queue
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk, Gdk, GObject
+from multiprocessing import Queue
 import threading
-import xmlrpclib
+from xmlrpc import client
+import time
 import bb
 import bb.event
-from bb.ui.crumbs.progressbar import HobProgressBar
 
 # Package Model
 (COL_PKG_NAME) = (0)
@@ -35,19 +36,19 @@
 (COL_DEP_TYPE, COL_DEP_PARENT, COL_DEP_PACKAGE) = (0, 1, 2)
 
 
-class PackageDepView(gtk.TreeView):
+class PackageDepView(Gtk.TreeView):
     def __init__(self, model, dep_type, label):
-        gtk.TreeView.__init__(self)
+        Gtk.TreeView.__init__(self)
         self.current = None
         self.dep_type = dep_type
         self.filter_model = model.filter_new()
-        self.filter_model.set_visible_func(self._filter)
+        self.filter_model.set_visible_func(self._filter, data=None)
         self.set_model(self.filter_model)
-        #self.connect("row-activated", self.on_package_activated, COL_DEP_PACKAGE)
-        self.append_column(gtk.TreeViewColumn(label, gtk.CellRendererText(), text=COL_DEP_PACKAGE))
+        self.append_column(Gtk.TreeViewColumn(label, Gtk.CellRendererText(), text=COL_DEP_PACKAGE))
 
-    def _filter(self, model, iter):
-        (this_type, package) = model.get(iter, COL_DEP_TYPE, COL_DEP_PARENT)
+    def _filter(self, model, iter, data):
+        this_type = model[iter][COL_DEP_TYPE]
+        package = model[iter][COL_DEP_PARENT]
         if this_type != self.dep_type: return False
         return package == self.current
 
@@ -56,17 +57,17 @@
         self.filter_model.refilter()
 
 
-class PackageReverseDepView(gtk.TreeView):
+class PackageReverseDepView(Gtk.TreeView):
     def __init__(self, model, label):
-        gtk.TreeView.__init__(self)
+        Gtk.TreeView.__init__(self)
         self.current = None
         self.filter_model = model.filter_new()
         self.filter_model.set_visible_func(self._filter)
         self.set_model(self.filter_model)
-        self.append_column(gtk.TreeViewColumn(label, gtk.CellRendererText(), text=COL_DEP_PARENT))
+        self.append_column(Gtk.TreeViewColumn(label, Gtk.CellRendererText(), text=COL_DEP_PARENT))
 
-    def _filter(self, model, iter):
-        package = model.get_value(iter, COL_DEP_PACKAGE)
+    def _filter(self, model, iter, data):
+        package = model[iter][COL_DEP_PACKAGE]
         return package == self.current
 
     def set_current_package(self, package):
@@ -74,50 +75,50 @@
         self.filter_model.refilter()
 
 
-class DepExplorer(gtk.Window):
+class DepExplorer(Gtk.Window):
     def __init__(self):
-        gtk.Window.__init__(self)
+        Gtk.Window.__init__(self)
         self.set_title("Dependency Explorer")
         self.set_default_size(500, 500)
-        self.connect("delete-event", gtk.main_quit)
+        self.connect("delete-event", Gtk.main_quit)
 
         # Create the data models
-        self.pkg_model = gtk.ListStore(gobject.TYPE_STRING)
-        self.pkg_model.set_sort_column_id(COL_PKG_NAME, gtk.SORT_ASCENDING)
-        self.depends_model = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING)
-        self.depends_model.set_sort_column_id(COL_DEP_PACKAGE, gtk.SORT_ASCENDING)
+        self.pkg_model = Gtk.ListStore(GObject.TYPE_STRING)
+        self.pkg_model.set_sort_column_id(COL_PKG_NAME, Gtk.SortType.ASCENDING)
+        self.depends_model = Gtk.ListStore(GObject.TYPE_INT, GObject.TYPE_STRING, GObject.TYPE_STRING)
+        self.depends_model.set_sort_column_id(COL_DEP_PACKAGE, Gtk.SortType.ASCENDING)
 
-        pane = gtk.HPaned()
+        pane = Gtk.HPaned()
         pane.set_position(250)
         self.add(pane)
 
         # The master list of packages
-        scrolled = gtk.ScrolledWindow()
-        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        scrolled.set_shadow_type(gtk.SHADOW_IN)
+        scrolled = Gtk.ScrolledWindow()
+        scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        scrolled.set_shadow_type(Gtk.ShadowType.IN)
 
-        self.pkg_treeview = gtk.TreeView(self.pkg_model)
+        self.pkg_treeview = Gtk.TreeView(self.pkg_model)
         self.pkg_treeview.get_selection().connect("changed", self.on_cursor_changed)
-        column = gtk.TreeViewColumn("Package", gtk.CellRendererText(), text=COL_PKG_NAME)
+        column = Gtk.TreeViewColumn("Package", Gtk.CellRendererText(), text=COL_PKG_NAME)
         self.pkg_treeview.append_column(column)
         pane.add1(scrolled)
         scrolled.add(self.pkg_treeview)
 
-        box = gtk.VBox(homogeneous=True, spacing=4)
+        box = Gtk.VBox(homogeneous=True, spacing=4)
 
         # Runtime Depends
-        scrolled = gtk.ScrolledWindow()
-        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        scrolled.set_shadow_type(gtk.SHADOW_IN)
+        scrolled = Gtk.ScrolledWindow()
+        scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        scrolled.set_shadow_type(Gtk.ShadowType.IN)
         self.rdep_treeview = PackageDepView(self.depends_model, TYPE_RDEP, "Runtime Depends")
         self.rdep_treeview.connect("row-activated", self.on_package_activated, COL_DEP_PACKAGE)
         scrolled.add(self.rdep_treeview)
         box.add(scrolled)
 
         # Build Depends
-        scrolled = gtk.ScrolledWindow()
-        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        scrolled.set_shadow_type(gtk.SHADOW_IN)
+        scrolled = Gtk.ScrolledWindow()
+        scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        scrolled.set_shadow_type(Gtk.ShadowType.IN)
         self.dep_treeview = PackageDepView(self.depends_model, TYPE_DEP, "Build Depends")
         self.dep_treeview.connect("row-activated", self.on_package_activated, COL_DEP_PACKAGE)
         scrolled.add(self.dep_treeview)
@@ -125,9 +126,9 @@
         pane.add2(box)
 
         # Reverse Depends
-        scrolled = gtk.ScrolledWindow()
-        scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        scrolled.set_shadow_type(gtk.SHADOW_IN)
+        scrolled = Gtk.ScrolledWindow()
+        scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        scrolled.set_shadow_type(Gtk.ShadowType.IN)
         self.revdep_treeview = PackageReverseDepView(self.depends_model, "Reverse Depends")
         self.revdep_treeview.connect("row-activated", self.on_package_activated, COL_DEP_PARENT)
         scrolled.add(self.revdep_treeview)
@@ -183,15 +184,23 @@
         threading.Thread.__init__(self)
         self.setDaemon(True)
         self.shutdown = shutdown
+        if not Gtk.init_check()[0]:
+            sys.stderr.write("Gtk+ init failed. Make sure DISPLAY variable is set.\n")
+            gtkthread.quit.set()
 
     def run(self):
-        gobject.threads_init()
-        gtk.gdk.threads_init()
-        gtk.main()
+        GObject.threads_init()
+        Gdk.threads_init()
+        Gtk.main()
         gtkthread.quit.set()
 
 
 def main(server, eventHandler, params):
+    shutdown = 0
+
+    gtkgui = gtkthread(shutdown)
+    gtkgui.start()
+
     try:
         params.updateFromServer(server)
         cmdline = params.parseActions()
@@ -212,31 +221,24 @@
         elif ret != True:
             print("Error running command '%s': returned %s" % (cmdline, ret))
             return 1
-    except xmlrpclib.Fault as x:
+    except client.Fault as x:
         print("XMLRPC Fault getting commandline:\n %s" % x)
         return
 
-    try:
-        gtk.init_check()
-    except RuntimeError:
-        sys.stderr.write("Please set DISPLAY variable before running this command \n")
+    if gtkthread.quit.isSet():
         return
 
-    shutdown = 0
-
-    gtkgui = gtkthread(shutdown)
-    gtkgui.start()
-
-    gtk.gdk.threads_enter()
+    Gdk.threads_enter()
     dep = DepExplorer()
-    bardialog = gtk.Dialog(parent=dep,
-                           flags=gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT)
+    bardialog = Gtk.Dialog(parent=dep,
+            flags=Gtk.DialogFlags.MODAL|Gtk.DialogFlags.DESTROY_WITH_PARENT)
     bardialog.set_default_size(400, 50)
-    pbar = HobProgressBar()
-    bardialog.vbox.pack_start(pbar)
+    box = bardialog.get_content_area()
+    pbar = Gtk.ProgressBar()
+    box.pack_start(pbar, True, True, 0)
     bardialog.show_all()
-    bardialog.connect("delete-event", gtk.main_quit)
-    gtk.gdk.threads_leave()
+    bardialog.connect("delete-event", Gtk.main_quit)
+    Gdk.threads_leave()
 
     progress_total = 0
     while True:
@@ -253,53 +255,76 @@
 
             if isinstance(event, bb.event.CacheLoadStarted):
                 progress_total = event.total
-                gtk.gdk.threads_enter()
+                Gdk.threads_enter()
                 bardialog.set_title("Loading Cache")
-                pbar.update(0)
-                gtk.gdk.threads_leave()
+                pbar.set_fraction(0.0)
+                Gdk.threads_leave()
 
             if isinstance(event, bb.event.CacheLoadProgress):
                 x = event.current
-                gtk.gdk.threads_enter()
-                pbar.update(x * 1.0 / progress_total)
-                pbar.set_title('')
-                gtk.gdk.threads_leave()
+                Gdk.threads_enter()
+                pbar.set_fraction(x * 1.0 / progress_total)
+                Gdk.threads_leave()
                 continue
 
             if isinstance(event, bb.event.CacheLoadCompleted):
-                bardialog.hide()
                 continue
 
             if isinstance(event, bb.event.ParseStarted):
                 progress_total = event.total
                 if progress_total == 0:
                     continue
-                gtk.gdk.threads_enter()
-                pbar.update(0)
+                Gdk.threads_enter()
+                pbar.set_fraction(0.0)
                 bardialog.set_title("Processing recipes")
-
-                gtk.gdk.threads_leave()
+                Gdk.threads_leave()
 
             if isinstance(event, bb.event.ParseProgress):
                 x = event.current
-                gtk.gdk.threads_enter()
-                pbar.update(x * 1.0 / progress_total)
-                pbar.set_title('')
-                gtk.gdk.threads_leave()
+                Gdk.threads_enter()
+                pbar.set_fraction(x * 1.0 / progress_total)
+                Gdk.threads_leave()
                 continue
 
             if isinstance(event, bb.event.ParseCompleted):
-                bardialog.hide()
+                Gdk.threads_enter()
+                bardialog.set_title("Generating dependency tree")
+                Gdk.threads_leave()
                 continue
 
             if isinstance(event, bb.event.DepTreeGenerated):
-                gtk.gdk.threads_enter()
+                Gdk.threads_enter()
+                bardialog.hide()
                 dep.parse(event._depgraph)
-                gtk.gdk.threads_leave()
+                Gdk.threads_leave()
 
             if isinstance(event, bb.command.CommandCompleted):
                 continue
 
+            if isinstance(event, bb.event.NoProvider):
+                if event._runtime:
+                    r = "R"
+                else:
+                    r = ""
+
+                extra = ''
+                if not event._reasons:
+                    if event._close_matches:
+                        extra = ". Close matches:\n  %s" % '\n  '.join(event._close_matches)
+
+                if event._dependees:
+                    print("Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)%s" % r, event._item, ", ".join(event._dependees), r, extra)
+                else:
+                    print("Nothing %sPROVIDES '%s'%s" % (r, event._item, extra))
+                if event._reasons:
+                    for reason in event._reasons:
+                        print(reason)
+
+                _, error = server.runCommand(["stateShutdown"])
+                if error:
+                    print('Unable to cleanly shutdown: %s' % error)
+                break
+
             if isinstance(event, bb.command.CommandFailed):
                 print("Command execution failed: %s" % event.error)
                 return event.exitcode
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/goggle.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/goggle.py
deleted file mode 100644
index f4ee7b4..0000000
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/goggle.py
+++ /dev/null
@@ -1,121 +0,0 @@
-#
-# BitBake Graphical GTK User Interface
-#
-# Copyright (C) 2008        Intel Corporation
-#
-# Authored by Rob Bradford <rob@linux.intel.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gobject
-import gtk
-import xmlrpclib
-from bb.ui.crumbs.runningbuild import RunningBuildTreeView, RunningBuild
-from bb.ui.crumbs.progress import ProgressBar
-
-import Queue
-
-
-def event_handle_idle_func (eventHandler, build, pbar):
-
-    # Consume as many messages as we can in the time available to us
-    event = eventHandler.getEvent()
-    while event:
-        build.handle_event (event, pbar)
-        event = eventHandler.getEvent()
-
-    return True
-
-def scroll_tv_cb (model, path, iter, view):
-    view.scroll_to_cell (path)
-
-
-# @todo hook these into the GUI so the user has feedback...
-def running_build_failed_cb (running_build):
-    pass
-
-
-def running_build_succeeded_cb (running_build):
-    pass
-
-
-class MainWindow (gtk.Window):
-    def __init__ (self):
-        gtk.Window.__init__ (self, gtk.WINDOW_TOPLEVEL)
-
-        # Setup tree view and the scrolled window
-        scrolled_window = gtk.ScrolledWindow ()
-        self.add (scrolled_window)
-        self.cur_build_tv = RunningBuildTreeView()
-        self.connect("delete-event", gtk.main_quit)
-        self.set_default_size(640, 480)
-        scrolled_window.add (self.cur_build_tv)
-
-
-def main (server, eventHandler, params):
-    gobject.threads_init()
-    gtk.gdk.threads_init()
-
-    window = MainWindow ()
-    window.show_all ()
-    pbar = ProgressBar(window)
-    pbar.connect("delete-event", gtk.main_quit)
-
-    # Create the object for the current build
-    running_build = RunningBuild ()
-    window.cur_build_tv.set_model (running_build.model)
-    running_build.model.connect("row-inserted", scroll_tv_cb, window.cur_build_tv)
-    running_build.connect ("build-succeeded", running_build_succeeded_cb)
-    running_build.connect ("build-failed", running_build_failed_cb)
-
-    try:
-        params.updateFromServer(server)
-        cmdline = params.parseActions()
-        if not cmdline:
-            print("Nothing to do.  Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.")
-            return 1
-        if 'msg' in cmdline and cmdline['msg']:
-            logger.error(cmdline['msg'])
-            return 1
-        cmdline = cmdline['action']
-        ret, error = server.runCommand(cmdline)
-        if error:
-            print("Error running command '%s': %s" % (cmdline, error))
-            return 1
-        elif ret != True:
-            print("Error running command '%s': returned %s" % (cmdline, ret))
-            return 1
-    except xmlrpclib.Fault as x:
-        print("XMLRPC Fault getting commandline:\n %s" % x)
-        return 1
-
-    # Use a timeout function for probing the event queue to find out if we
-    # have a message waiting for us.
-    gobject.timeout_add (100,
-                         event_handle_idle_func,
-                         eventHandler,
-                         running_build,
-                         pbar)
-
-    try:
-        gtk.main()
-    except EnvironmentError as ioerror:
-        # ignore interrupted io
-        if ioerror.args[0] == 4:
-            pass
-    except KeyboardInterrupt:
-        pass
-    finally:
-        server.runCommand(["stateForceShutdown"])
-
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/knotty.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/knotty.py
index 2685627..948f527 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/knotty.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/knotty.py
@@ -22,7 +22,7 @@
 
 import os
 import sys
-import xmlrpclib
+import xmlrpc.client as xmlrpclib
 import logging
 import progressbar
 import signal
@@ -32,6 +32,7 @@
 import struct
 import copy
 import atexit
+
 from bb.ui import uihelper
 
 featureSet = [bb.cooker.CookerFeatures.SEND_SANITYEVENTS]
@@ -40,34 +41,59 @@
 interactive = sys.stdout.isatty()
 
 class BBProgress(progressbar.ProgressBar):
-    def __init__(self, msg, maxval):
+    def __init__(self, msg, maxval, widgets=None, extrapos=-1, resize_handler=None):
         self.msg = msg
-        widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ',
-           progressbar.ETA()]
+        self.extrapos = extrapos
+        if not widgets:
+            widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ',
+            progressbar.ETA()]
+            self.extrapos = 4
 
-        try:
+        if resize_handler:
+            self._resize_default = resize_handler
+        else:
             self._resize_default = signal.getsignal(signal.SIGWINCH)
-        except:
-            self._resize_default = None
         progressbar.ProgressBar.__init__(self, maxval, [self.msg + ": "] + widgets, fd=sys.stdout)
 
-    def _handle_resize(self, signum, frame):
+    def _handle_resize(self, signum=None, frame=None):
         progressbar.ProgressBar._handle_resize(self, signum, frame)
         if self._resize_default:
             self._resize_default(signum, frame)
+
     def finish(self):
         progressbar.ProgressBar.finish(self)
         if self._resize_default:
             signal.signal(signal.SIGWINCH, self._resize_default)
 
+    def setmessage(self, msg):
+        self.msg = msg
+        self.widgets[0] = msg
+
+    def setextra(self, extra):
+        if self.extrapos > -1:
+            if extra:
+                extrastr = str(extra)
+                if extrastr[0] != ' ':
+                    extrastr = ' ' + extrastr
+                if extrastr[-1] != ' ':
+                    extrastr += ' '
+            else:
+                extrastr = ' '
+            self.widgets[self.extrapos] = extrastr
+
+    def _need_update(self):
+        # We always want the bar to print when update() is called
+        return True
+
 class NonInteractiveProgress(object):
     fobj = sys.stdout
 
     def __init__(self, msg, maxval):
         self.msg = msg
         self.maxval = maxval
+        self.finished = False
 
-    def start(self):
+    def start(self, update=True):
         self.fobj.write("%s..." % self.msg)
         self.fobj.flush()
         return self
@@ -76,8 +102,11 @@
         pass
 
     def finish(self):
+        if self.finished:
+            return
         self.fobj.write("done.\n")
         self.fobj.flush()
+        self.finished = True
 
 def new_progress(msg, maxval):
     if interactive:
@@ -134,7 +163,7 @@
                 cr = (25, 80)
         return cr
 
-    def __init__(self, main, helper, console, errconsole, format):
+    def __init__(self, main, helper, console, errconsole, format, quiet):
         self.main = main
         self.helper = helper
         self.cuu = None
@@ -142,6 +171,8 @@
         self.interactive = sys.stdout.isatty()
         self.footer_present = False
         self.lastpids = []
+        self.lasttime = None
+        self.quiet = quiet
 
         if not self.interactive:
             return
@@ -181,11 +212,14 @@
         console.addFilter(InteractConsoleLogFilter(self, format))
         errconsole.addFilter(InteractConsoleLogFilter(self, format))
 
+        self.main_progress = None
+
     def clearFooter(self):
         if self.footer_present:
             lines = self.footer_present
-            sys.stdout.write(self.curses.tparm(self.cuu, lines))
-            sys.stdout.write(self.curses.tparm(self.ed))
+            sys.stdout.buffer.write(self.curses.tparm(self.cuu, lines))
+            sys.stdout.buffer.write(self.curses.tparm(self.ed))
+            sys.stdout.flush()
         self.footer_present = False
 
     def updateFooter(self):
@@ -194,28 +228,81 @@
         activetasks = self.helper.running_tasks
         failedtasks = self.helper.failed_tasks
         runningpids = self.helper.running_pids
-        if self.footer_present and (self.lastcount == self.helper.tasknumber_current) and (self.lastpids == runningpids):
+        currenttime = time.time()
+        if not self.lasttime or (currenttime - self.lasttime > 5):
+            self.helper.needUpdate = True
+            self.lasttime = currenttime
+        if self.footer_present and not self.helper.needUpdate:
             return
+        self.helper.needUpdate = False
         if self.footer_present:
             self.clearFooter()
         if (not self.helper.tasknumber_total or self.helper.tasknumber_current == self.helper.tasknumber_total) and not len(activetasks):
             return
         tasks = []
         for t in runningpids:
-            tasks.append("%s (pid %s)" % (activetasks[t]["title"], t))
+            progress = activetasks[t].get("progress", None)
+            if progress is not None:
+                pbar = activetasks[t].get("progressbar", None)
+                rate = activetasks[t].get("rate", None)
+                start_time = activetasks[t].get("starttime", None)
+                if not pbar or pbar.bouncing != (progress < 0):
+                    if progress < 0:
+                        pbar = BBProgress("0: %s (pid %s) " % (activetasks[t]["title"], t), 100, widgets=[progressbar.BouncingSlider(), ''], extrapos=2, resize_handler=self.sigwinch_handle)
+                        pbar.bouncing = True
+                    else:
+                        pbar = BBProgress("0: %s (pid %s) " % (activetasks[t]["title"], t), 100, widgets=[progressbar.Percentage(), ' ', progressbar.Bar(), ''], extrapos=4, resize_handler=self.sigwinch_handle)
+                        pbar.bouncing = False
+                    activetasks[t]["progressbar"] = pbar
+                tasks.append((pbar, progress, rate, start_time))
+            else:
+                start_time = activetasks[t].get("starttime", None)
+                if start_time:
+                    tasks.append("%s - %ds (pid %s)" % (activetasks[t]["title"], currenttime - start_time, t))
+                else:
+                    tasks.append("%s (pid %s)" % (activetasks[t]["title"], t))
 
         if self.main.shutdown:
             content = "Waiting for %s running tasks to finish:" % len(activetasks)
-        elif not len(activetasks):
-            content = "No currently running tasks (%s of %s)" % (self.helper.tasknumber_current, self.helper.tasknumber_total)
-        else:
-            content = "Currently %s running tasks (%s of %s):" % (len(activetasks), self.helper.tasknumber_current, self.helper.tasknumber_total)
-        print(content)
-        lines = 1 + int(len(content) / (self.columns + 1))
-        for tasknum, task in enumerate(tasks[:(self.rows - 2)]):
-            content = "%s: %s" % (tasknum, task)
             print(content)
-            lines = lines + 1 + int(len(content) / (self.columns + 1))
+        else:
+            if self.quiet:
+                content = "Running tasks (%s of %s)" % (self.helper.tasknumber_current, self.helper.tasknumber_total)
+            elif not len(activetasks):
+                content = "No currently running tasks (%s of %s)" % (self.helper.tasknumber_current, self.helper.tasknumber_total)
+            else:
+                content = "Currently %2s running tasks (%s of %s)" % (len(activetasks), self.helper.tasknumber_current, self.helper.tasknumber_total)
+            maxtask = self.helper.tasknumber_total
+            if not self.main_progress or self.main_progress.maxval != maxtask:
+                widgets = [' ', progressbar.Percentage(), ' ', progressbar.Bar()]
+                self.main_progress = BBProgress("Running tasks", maxtask, widgets=widgets, resize_handler=self.sigwinch_handle)
+                self.main_progress.start(False)
+            self.main_progress.setmessage(content)
+            progress = self.helper.tasknumber_current - 1
+            if progress < 0:
+                progress = 0
+            content = self.main_progress.update(progress)
+            print('')
+        lines = 1 + int(len(content) / (self.columns + 1))
+        if not self.quiet:
+            for tasknum, task in enumerate(tasks[:(self.rows - 2)]):
+                if isinstance(task, tuple):
+                    pbar, progress, rate, start_time = task
+                    if not pbar.start_time:
+                        pbar.start(False)
+                        if start_time:
+                            pbar.start_time = start_time
+                    pbar.setmessage('%s:%s' % (tasknum, pbar.msg.split(':', 1)[1]))
+                    if progress > -1:
+                        pbar.setextra(rate)
+                        content = pbar.update(progress)
+                    else:
+                        content = pbar.update(1)
+                    print('')
+                else:
+                    content = "%s: %s" % (tasknum, task)
+                    print(content)
+                lines = lines + 1 + int(len(content) / (self.columns + 1))
         self.footer_present = lines
         self.lastpids = runningpids[:]
         self.lastcount = self.helper.tasknumber_current
@@ -248,7 +335,8 @@
               "bb.command.CommandExit", "bb.command.CommandCompleted",  "bb.cooker.CookerExit",
               "bb.event.MultipleProviders", "bb.event.NoProvider", "bb.runqueue.sceneQueueTaskStarted",
               "bb.runqueue.runQueueTaskStarted", "bb.runqueue.runQueueTaskFailed", "bb.runqueue.sceneQueueTaskFailed",
-              "bb.event.BuildBase", "bb.build.TaskStarted", "bb.build.TaskSucceeded", "bb.build.TaskFailedSilent"]
+              "bb.event.BuildBase", "bb.build.TaskStarted", "bb.build.TaskSucceeded", "bb.build.TaskFailedSilent",
+              "bb.build.TaskProgress", "bb.event.ProcessStarted", "bb.event.ProcessProgress", "bb.event.ProcessFinished"]
 
 def main(server, eventHandler, params, tf = TerminalFilter):
 
@@ -265,7 +353,10 @@
     errconsole = logging.StreamHandler(sys.stderr)
     format_str = "%(levelname)s: %(message)s"
     format = bb.msg.BBLogFormatter(format_str)
-    bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut)
+    if params.options.quiet:
+        bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut, bb.msg.BBLogFormatter.WARNING)
+    else:
+        bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut)
     bb.msg.addDefaultlogFilter(errconsole, bb.msg.BBLogFilterStdErr)
     console.setFormatter(format)
     errconsole.setFormatter(format)
@@ -278,6 +369,7 @@
         server.terminateServer()
         return
 
+    consolelog = None
     if consolelogfile and not params.options.show_environment and not params.options.show_versions:
         bb.utils.mkdirhier(os.path.dirname(consolelogfile))
         conlogformat = bb.msg.BBLogFormatter(format_str)
@@ -285,6 +377,12 @@
         bb.msg.addDefaultlogFilter(consolelog)
         consolelog.setFormatter(conlogformat)
         logger.addHandler(consolelog)
+        loglink = os.path.join(os.path.dirname(consolelogfile), 'console-latest.log')
+        bb.utils.remove(loglink)
+        try:
+           os.symlink(os.path.basename(consolelogfile), loglink)
+        except OSError:
+           pass
 
     llevel, debug_domains = bb.msg.constructLogOptions()
     server.runCommand(["setEventMask", server.getEventHandle(), llevel, debug_domains, _evt_list])
@@ -321,7 +419,7 @@
     warnings = 0
     taskfailures = []
 
-    termfilter = tf(main, helper, console, errconsole, format)
+    termfilter = tf(main, helper, console, errconsole, format, params.options.quiet)
     atexit.register(termfilter.finish)
 
     while True:
@@ -350,7 +448,7 @@
                         tries -= 1
                     if tries:
                         continue
-                logger.warn(event.msg)
+                logger.warning(event.msg)
                 continue
 
             if isinstance(event, logging.LogRecord):
@@ -377,7 +475,7 @@
                 continue
 
             if isinstance(event, bb.build.TaskFailedSilent):
-                logger.warn("Logfile for failed setscene task is %s" % event.logfile)
+                logger.warning("Logfile for failed setscene task is %s" % event.logfile)
                 continue
             if isinstance(event, bb.build.TaskFailed):
                 return_value = 1
@@ -413,15 +511,19 @@
                 parseprogress = new_progress("Parsing recipes", event.total).start()
                 continue
             if isinstance(event, bb.event.ParseProgress):
-                parseprogress.update(event.current)
+                if parseprogress:
+                    parseprogress.update(event.current)
+                else:
+                    bb.warn("Got ParseProgress event for parsing that never started?")
                 continue
             if isinstance(event, bb.event.ParseCompleted):
                 if not parseprogress:
                     continue
-
                 parseprogress.finish()
-                print(("Parsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors."
-                    % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors)))
+                pasreprogress = None
+                if not params.options.quiet:
+                    print(("Parsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors."
+                        % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors)))
                 continue
 
             if isinstance(event, bb.event.CacheLoadStarted):
@@ -432,7 +534,8 @@
                 continue
             if isinstance(event, bb.event.CacheLoadCompleted):
                 cacheprogress.finish()
-                print("Loaded %d entries from dependency cache." % event.num_entries)
+                if not params.options.quiet:
+                    print("Loaded %d entries from dependency cache." % event.num_entries)
                 continue
 
             if isinstance(event, bb.command.CommandFailed):
@@ -494,28 +597,44 @@
                     tasktype = 'noexec task'
                 else:
                     tasktype = 'task'
-                logger.info("Running %s %s of %s (ID: %s, %s)",
+                logger.info("Running %s %d of %d (%s)",
                             tasktype,
                             event.stats.completed + event.stats.active +
                                 event.stats.failed + 1,
-                            event.stats.total, event.taskid, event.taskstring)
+                            event.stats.total, event.taskstring)
                 continue
 
             if isinstance(event, bb.runqueue.runQueueTaskFailed):
                 return_value = 1
                 taskfailures.append(event.taskstring)
-                logger.error("Task %s (%s) failed with exit code '%s'",
-                             event.taskid, event.taskstring, event.exitcode)
+                logger.error("Task (%s) failed with exit code '%s'",
+                             event.taskstring, event.exitcode)
                 continue
 
             if isinstance(event, bb.runqueue.sceneQueueTaskFailed):
-                logger.warn("Setscene task %s (%s) failed with exit code '%s' - real task will be run instead",
-                             event.taskid, event.taskstring, event.exitcode)
+                logger.warning("Setscene task (%s) failed with exit code '%s' - real task will be run instead",
+                               event.taskstring, event.exitcode)
                 continue
 
             if isinstance(event, bb.event.DepTreeGenerated):
                 continue
 
+            if isinstance(event, bb.event.ProcessStarted):
+                parseprogress = new_progress(event.processname, event.total)
+                parseprogress.start(False)
+                continue
+            if isinstance(event, bb.event.ProcessProgress):
+                if parseprogress:
+                    parseprogress.update(event.progress)
+                else:
+                    bb.warn("Got ProcessProgress event for someting that never started?")
+                continue
+            if isinstance(event, bb.event.ProcessFinished):
+                if parseprogress:
+                    parseprogress.finish()
+                parseprogress = None
+                continue
+
             # ignore
             if isinstance(event, (bb.event.BuildBase,
                                   bb.event.MetadataEvent,
@@ -527,7 +646,8 @@
                                   bb.event.OperationStarted,
                                   bb.event.OperationCompleted,
                                   bb.event.OperationProgress,
-                                  bb.event.DiskFull)):
+                                  bb.event.DiskFull,
+                                  bb.build.TaskProgress)):
                 continue
 
             logger.error("Unknown event: %s", event)
@@ -567,6 +687,7 @@
             main.shutdown = 2
             return_value = 1
     try:
+        termfilter.clearFooter()
         summary = ""
         if taskfailures:
             summary += pluralise("\nSummary: %s task failed:",
@@ -579,7 +700,7 @@
         if return_value and errors:
             summary += pluralise("\nSummary: There was %s ERROR message shown, returning a non-zero exit code.",
                                  "\nSummary: There were %s ERROR messages shown, returning a non-zero exit code.", errors)
-        if summary:
+        if summary and not params.options.quiet:
             print(summary)
 
         if interrupted:
@@ -591,4 +712,8 @@
         if e.errno == errno.EPIPE:
             pass
 
+    if consolelog:
+        logger.removeHandler(consolelog)
+        consolelog.close()
+
     return return_value
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/ncurses.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/ncurses.py
index 9589a77..d81e413 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/ncurses.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/ncurses.py
@@ -45,7 +45,7 @@
 """
 
 
-from __future__ import division
+
 import logging
 import os, sys, itertools, time, subprocess
 
@@ -55,7 +55,7 @@
     sys.exit("FATAL: The ncurses ui could not load the required curses python module.")
 
 import bb
-import xmlrpclib
+import xmlrpc.client
 from bb import ui
 from bb.ui import uihelper
 
@@ -252,7 +252,7 @@
             elif ret != True:
                 print("Couldn't get default commandlind! %s" % ret)
                 return
-        except xmlrpclib.Fault as x:
+        except xmlrpc.client.Fault as x:
             print("XMLRPC Fault getting commandline:\n %s" % x)
             return
 
@@ -331,7 +331,7 @@
                     taw.setText(0, 0, "")
                     if activetasks:
                         taw.appendText("Active Tasks:\n")
-                        for task in activetasks.itervalues():
+                        for task in activetasks.values():
                             taw.appendText(task["title"] + '\n')
                     if failedtasks:
                         taw.appendText("Failed Tasks:\n")
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/toasterui.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/toasterui.py
index 6bf4c1f..9808f6b 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/toasterui.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/toasterui.py
@@ -39,7 +39,7 @@
 # module properties for UI modules are read by bitbake and the contract should not be broken
 
 
-featureSet = [bb.cooker.CookerFeatures.HOB_EXTRA_CACHES, bb.cooker.CookerFeatures.SEND_DEPENDS_TREE, bb.cooker.CookerFeatures.BASEDATASTORE_TRACKING, bb.cooker.CookerFeatures.SEND_SANITYEVENTS]
+featureSet = [bb.cooker.CookerFeatures.HOB_EXTRA_CACHES, bb.cooker.CookerFeatures.BASEDATASTORE_TRACKING, bb.cooker.CookerFeatures.SEND_SANITYEVENTS]
 
 logger = logging.getLogger("ToasterLogger")
 interactive = sys.stdout.isatty()
@@ -102,6 +102,7 @@
     "bb.command.CommandExit",
     "bb.command.CommandFailed",
     "bb.cooker.CookerExit",
+    "bb.event.BuildInit",
     "bb.event.BuildCompleted",
     "bb.event.BuildStarted",
     "bb.event.CacheLoadCompleted",
@@ -115,6 +116,7 @@
     "bb.event.NoProvider",
     "bb.event.ParseCompleted",
     "bb.event.ParseProgress",
+    "bb.event.ParseStarted",
     "bb.event.RecipeParsed",
     "bb.event.SanityCheck",
     "bb.event.SanityCheckPassed",
@@ -163,7 +165,7 @@
     inheritlist, _ = server.runCommand(["getVariable", "INHERIT"])
 
     if not "buildhistory" in inheritlist.split(" "):
-        logger.warn("buildhistory is not enabled. Please enable INHERIT += \"buildhistory\" to see image details.")
+        logger.warning("buildhistory is not enabled. Please enable INHERIT += \"buildhistory\" to see image details.")
         build_history_enabled = False
 
     if not params.observe_only:
@@ -231,19 +233,35 @@
             # pylint: disable=protected-access
             # the code will look into the protected variables of the event; no easy way around this
 
-            # we treat ParseStarted as the first event of toaster-triggered
-            # builds; that way we get the Build Configuration included in the log
-            # and any errors that occur before BuildStarted is fired
             if isinstance(event, bb.event.ParseStarted):
                 if not (build_log and build_log_file_path):
                     build_log, build_log_file_path = _open_build_log(log_dir)
+
+                buildinfohelper.store_started_build()
+                buildinfohelper.save_build_log_file_path(build_log_file_path)
+                buildinfohelper.set_recipes_to_parse(event.total)
                 continue
 
-            if isinstance(event, bb.event.BuildStarted):
+            # create a build object in buildinfohelper from either BuildInit
+            # (if available) or BuildStarted (for jethro and previous versions)
+            if isinstance(event, (bb.event.BuildStarted, bb.event.BuildInit)):
                 if not (build_log and build_log_file_path):
                     build_log, build_log_file_path = _open_build_log(log_dir)
 
-                buildinfohelper.store_started_build(event, build_log_file_path)
+                buildinfohelper.save_build_targets(event)
+                buildinfohelper.save_build_log_file_path(build_log_file_path)
+
+                # get additional data from BuildStarted
+                if isinstance(event, bb.event.BuildStarted):
+                    buildinfohelper.save_build_layers_and_variables()
+                continue
+
+            if isinstance(event, bb.event.ParseProgress):
+                buildinfohelper.set_recipes_parsed(event.current)
+                continue
+
+            if isinstance(event, bb.event.ParseCompleted):
+                buildinfohelper.set_recipes_parsed(event.total)
                 continue
 
             if isinstance(event, (bb.build.TaskStarted, bb.build.TaskSucceeded, bb.build.TaskFailedSilent)):
@@ -289,10 +307,6 @@
             # timing and error informations from the parsing phase in Toaster
             if isinstance(event, (bb.event.SanityCheckPassed, bb.event.SanityCheck)):
                 continue
-            if isinstance(event, bb.event.ParseProgress):
-                continue
-            if isinstance(event, bb.event.ParseCompleted):
-                continue
             if isinstance(event, bb.event.CacheLoadStarted):
                 continue
             if isinstance(event, bb.event.CacheLoadProgress):
@@ -344,8 +358,8 @@
             if isinstance(event, bb.runqueue.runQueueTaskFailed):
                 buildinfohelper.update_and_store_task(event)
                 taskfailures.append(event.taskstring)
-                logger.error("Task %s (%s) failed with exit code '%s'",
-                             event.taskid, event.taskstring, event.exitcode)
+                logger.error("Task (%s) failed with exit code '%s'",
+                             event.taskstring, event.exitcode)
                 continue
 
             if isinstance(event, (bb.runqueue.sceneQueueTaskCompleted, bb.runqueue.sceneQueueTaskFailed)):
@@ -363,6 +377,9 @@
                     errors += 1
                     errorcode = 1
                     logger.error("Command execution failed: %s", event.error)
+                elif isinstance(event, bb.event.BuildCompleted):
+                    buildinfohelper.scan_image_artifacts()
+                    buildinfohelper.clone_required_sdk_artifacts()
 
                 # turn off logging to the current build log
                 _close_build_log(build_log)
@@ -410,18 +427,18 @@
                     buildinfohelper.store_target_package_data(event)
                 elif event.type == "MissedSstate":
                     buildinfohelper.store_missed_state_tasks(event)
-                elif event.type == "ImageFileSize":
-                    buildinfohelper.update_target_image_file(event)
-                elif event.type == "ArtifactFileSize":
-                    buildinfohelper.update_artifact_image_file(event)
-                elif event.type == "LicenseManifestPath":
-                    buildinfohelper.store_license_manifest_path(event)
+                elif event.type == "SDKArtifactInfo":
+                    buildinfohelper.scan_sdk_artifacts(event)
                 elif event.type == "SetBRBE":
                     buildinfohelper.brbe = buildinfohelper._get_data_from_event(event)
+                elif event.type == "TaskArtifacts":
+                    # not implemented yet
+                    # see https://bugzilla.yoctoproject.org/show_bug.cgi?id=10283 for details
+                    pass
                 elif event.type == "OSErrorException":
                     logger.error(event)
                 else:
-                    logger.error("Unprocessed MetadataEvent %s ", str(event))
+                    logger.error("Unprocessed MetadataEvent %s", event.type)
                 continue
 
             if isinstance(event, bb.cooker.CookerExit):
@@ -433,15 +450,33 @@
                 buildinfohelper.store_dependency_information(event)
                 continue
 
-            logger.warn("Unknown event: %s", event)
+            logger.warning("Unknown event: %s", event)
             return_value += 1
 
         except EnvironmentError as ioerror:
-            # ignore interrupted io
-            if ioerror.args[0] == 4:
-                pass
+            logger.warning("EnvironmentError: %s" % ioerror)
+            # ignore interrupted io system calls
+            if ioerror.args[0] == 4: # errno 4 is EINTR
+                logger.warning("Skipped EINTR: %s" % ioerror)
+            else:
+                raise
         except KeyboardInterrupt:
-            main.shutdown = 1
+            if params.observe_only:
+                print("\nKeyboard Interrupt, exiting observer...")
+                main.shutdown = 2
+            if not params.observe_only and main.shutdown == 1:
+                print("\nSecond Keyboard Interrupt, stopping...\n")
+                _, error = server.runCommand(["stateForceShutdown"])
+                if error:
+                    logger.error("Unable to cleanly stop: %s" % error)
+            if not params.observe_only and main.shutdown == 0:
+                print("\nKeyboard Interrupt, closing down...\n")
+                interrupted = True
+                _, error = server.runCommand(["stateShutdown"])
+                if error:
+                    logger.error("Unable to cleanly shutdown: %s" % error)
+            buildinfohelper.cancel_cli_build()
+            main.shutdown = main.shutdown + 1
         except Exception as e:
             # print errors to log
             import traceback
@@ -461,5 +496,5 @@
     if interrupted and return_value == 0:
         return_value += 1
 
-    logger.warn("Return value is %d", return_value)
+    logger.warning("Return value is %d", return_value)
     return return_value
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/uievent.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/uievent.py
index df093c5..9542b91 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/uievent.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/uievent.py
@@ -25,7 +25,7 @@
 """
 
 import socket, threading, pickle, collections
-from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
+from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
 
 class BBUIEventQueue:
     def __init__(self, BBServer, clientinfo=("localhost, 0")):
@@ -116,7 +116,7 @@
                 self.server.handle_request()
             except Exception as e:
                 import traceback
-                logger.error("BBUIEventQueue.startCallbackHandler: Exception while trying to handle request: %s\n%s" % (e, traceback.format_exc(e)))
+                logger.error("BBUIEventQueue.startCallbackHandler: Exception while trying to handle request: %s\n%s" % (e, traceback.format_exc()))
 
         self.server.server_close()
 
@@ -137,7 +137,7 @@
         SimpleXMLRPCServer.__init__( self,
                                     interface,
                                     requestHandler=SimpleXMLRPCRequestHandler,
-                                    logRequests=False, allow_none=True)
+                                    logRequests=False, allow_none=True, use_builtin_types=True)
 
     def get_request(self):
         while not self.quit:
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 db70b76..fda7cc2 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/ui/uihelper.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/uihelper.py
@@ -18,6 +18,7 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 import bb.build
+import time
 
 class BBUIHelper:
     def __init__(self):
@@ -31,29 +32,33 @@
 
     def eventHandler(self, event):
         if isinstance(event, bb.build.TaskStarted):
-            self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task) }
+            self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task), 'starttime' : time.time() }
             self.running_pids.append(event.pid)
             self.needUpdate = True
-        if isinstance(event, bb.build.TaskSucceeded):
+        elif isinstance(event, bb.build.TaskSucceeded):
             del self.running_tasks[event.pid]
             self.running_pids.remove(event.pid)
             self.needUpdate = True
-        if isinstance(event, bb.build.TaskFailedSilent):
+        elif isinstance(event, bb.build.TaskFailedSilent):
             del self.running_tasks[event.pid]
             self.running_pids.remove(event.pid)
             # Don't add to the failed tasks list since this is e.g. a setscene task failure
             self.needUpdate = True
-        if isinstance(event, bb.build.TaskFailed):
+        elif isinstance(event, bb.build.TaskFailed):
             del self.running_tasks[event.pid]
             self.running_pids.remove(event.pid)
             self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
             self.needUpdate = True
-        if isinstance(event, bb.runqueue.runQueueTaskStarted) or isinstance(event, bb.runqueue.sceneQueueTaskStarted):
+        elif isinstance(event, bb.runqueue.runQueueTaskStarted) or isinstance(event, bb.runqueue.sceneQueueTaskStarted):
             self.tasknumber_current = event.stats.completed + event.stats.active + event.stats.failed + 1
             self.tasknumber_total = event.stats.total
             self.needUpdate = True
+        elif isinstance(event, bb.build.TaskProgress):
+            if event.pid > 0:
+                self.running_tasks[event.pid]['progress'] = event.progress
+                self.running_tasks[event.pid]['rate'] = event.rate
+                self.needUpdate = True
 
     def getTasks(self):
         self.needUpdate = False
         return (self.running_tasks, self.failed_tasks)
-
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/utils.py b/import-layers/yocto-poky/bitbake/lib/bb/utils.py
index 3544bbe..729848a 100644
--- a/import-layers/yocto-poky/bitbake/lib/bb/utils.py
+++ b/import-layers/yocto-poky/bitbake/lib/bb/utils.py
@@ -27,6 +27,8 @@
 import bb.msg
 import multiprocessing
 import fcntl
+import imp
+import itertools
 import subprocess
 import glob
 import fnmatch
@@ -34,12 +36,15 @@
 import errno
 import signal
 import ast
-from commands import getstatusoutput
+import collections
+import copy
+from subprocess import getstatusoutput
 from contextlib import contextmanager
 from ctypes import cdll
 
-
 logger = logging.getLogger("BitBake.Util")
+python_extensions = [e for e, _, _ in imp.get_suffixes()]
+
 
 def clean_context():
     return {
@@ -71,7 +76,7 @@
             r.append((0, int(m.group(1))))
             s = m.group(2)
             continue
-        if s[0] in string.letters:
+        if s[0] in string.ascii_letters:
             m = alpha_regexp.match(s)
             r.append((1, m.group(1)))
             s = m.group(2)
@@ -188,7 +193,7 @@
     "DEPEND1 (optional version) DEPEND2 (optional version) ..."
     and return a dictionary of dependencies and versions.
     """
-    r = {}
+    r = collections.OrderedDict()
     l = s.replace(",", "").split()
     lastdep = None
     lastcmp = ""
@@ -245,6 +250,7 @@
         if not (i in r and r[i]):
             r[lastdep] = []
 
+    r = collections.OrderedDict(sorted(r.items(), key=lambda x: x[0]))
     return r
 
 def explode_dep_versions(s):
@@ -369,6 +375,12 @@
             level = level + 1
 
         error.append("Exception: %s" % ''.join(exception))
+
+        # 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):
+            error.append("Subprocess output:")
+            error.append(value.output.decode("utf-8", errors="ignore"))
     finally:
         logger.error("\n".join(error))
 
@@ -403,8 +415,13 @@
 def simple_exec(code, context):
     exec(code, get_context(), context)
 
-def better_eval(source, locals):
-    return eval(source, get_context(), locals)
+def better_eval(source, locals, extraglobals = None):
+    ctx = get_context()
+    if extraglobals:
+        ctx = copy.copy(ctx)
+        for g in extraglobals:
+            ctx[g] = extraglobals[g]
+    return eval(source, ctx, locals)
 
 @contextmanager
 def fileslocked(files):
@@ -563,6 +580,8 @@
         'SHELL',
         'TERM',
         'USER',
+        'LC_ALL',
+        'BBSERVER',
     ]
 
 def preserved_envvars():
@@ -582,14 +601,19 @@
     """
 
     removed_vars = {}
-    for key in os.environ.keys():
+    for key in list(os.environ):
         if key in good_vars:
             continue
 
         removed_vars[key] = os.environ[key]
-        os.unsetenv(key)
         del os.environ[key]
 
+    # If we spawn a python process, we need to have a UTF-8 locale, else python's file
+    # access methods will use ascii. You can't change that mode once the interpreter is
+    # started so we have to ensure a locale is set. Ideally we'd use C.UTF-8 but not all
+    # distros support that and we need to set something.
+    os.environ["LC_ALL"] = "en_US.UTF-8"
+
     if removed_vars:
         logger.debug(1, "Removed the following variables from the environment: %s", ", ".join(removed_vars.keys()))
 
@@ -629,7 +653,7 @@
     """
     Remove all variables from the environment.
     """
-    for s in os.environ.keys():
+    for s in list(os.environ.keys()):
         os.unsetenv(s)
         del os.environ[s]
 
@@ -818,7 +842,7 @@
         if not sstat:
             sstat = os.lstat(src)
     except Exception as e:
-        logger.warn("copyfile: stat of %s failed (%s)" % (src, e))
+        logger.warning("copyfile: stat of %s failed (%s)" % (src, e))
         return False
 
     destexists = 1
@@ -845,7 +869,7 @@
             #os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID])
             return os.lstat(dest)
         except Exception as e:
-            logger.warn("copyfile: failed to create symlink %s to %s (%s)" % (dest, target, e))
+            logger.warning("copyfile: failed to create symlink %s to %s (%s)" % (dest, target, e))
             return False
 
     if stat.S_ISREG(sstat[stat.ST_MODE]):
@@ -860,7 +884,7 @@
             shutil.copyfile(src, dest + "#new")
             os.rename(dest + "#new", dest)
         except Exception as e:
-            logger.warn("copyfile: copy %s to %s failed (%s)" % (src, dest, e))
+            logger.warning("copyfile: copy %s to %s failed (%s)" % (src, dest, e))
             return False
         finally:
             if srcchown:
@@ -871,13 +895,13 @@
         #we don't yet handle special, so we need to fall back to /bin/mv
         a = getstatusoutput("/bin/cp -f " + "'" + src + "' '" + dest + "'")
         if a[0] != 0:
-            logger.warn("copyfile: failed to copy special file %s to %s (%s)" % (src, dest, a))
+            logger.warning("copyfile: failed to copy special file %s to %s (%s)" % (src, dest, a))
             return False # failure
     try:
         os.lchown(dest, sstat[stat.ST_UID], sstat[stat.ST_GID])
         os.chmod(dest, stat.S_IMODE(sstat[stat.ST_MODE])) # Sticky is reset on chown
     except Exception as e:
-        logger.warn("copyfile: failed to chown/chmod %s (%s)" % (dest, e))
+        logger.warning("copyfile: failed to chown/chmod %s (%s)" % (dest, e))
         return False
 
     if newmtime:
@@ -946,7 +970,7 @@
     if not val:
         return falsevalue
     val = set(val.split())
-    if isinstance(checkvalues, basestring):
+    if isinstance(checkvalues, str):
         checkvalues = set(checkvalues.split())
     else:
         checkvalues = set(checkvalues)
@@ -959,7 +983,7 @@
     if not val:
         return falsevalue
     val = set(val.split())
-    if isinstance(checkvalues, basestring):
+    if isinstance(checkvalues, str):
         checkvalues = set(checkvalues.split())
     else:
         checkvalues = set(checkvalues)
@@ -1028,7 +1052,7 @@
         aidx += 1
     # Handle keyword arguments
     context.update(kwargs)
-    funcargs.extend(['%s=%s' % (arg, arg) for arg in kwargs.iterkeys()])
+    funcargs.extend(['%s=%s' % (arg, arg) for arg in kwargs.keys()])
     code = 'retval = %s(%s)' % (func, ', '.join(funcargs))
     comp = bb.utils.better_compile(code, '<string>', '<string>')
     bb.utils.better_exec(comp, context, code, '<string>')
@@ -1057,7 +1081,7 @@
                 newlines: list of lines up to this point. You can use
                     this to prepend lines before this variable setting
                     if you wish.
-            and should return a three-element tuple:
+            and should return a four-element tuple:
                 newvalue: new value to substitute in, or None to drop
                     the variable setting entirely. (If the removal
                     results in two consecutive blank lines, one of the
@@ -1071,6 +1095,8 @@
                     multi-line value to continue on the same line as
                     the assignment, False to indent before the first
                     element.
+            To clarify, if you wish not to change the value, then you
+            would return like this: return origvalue, None, 0, True
         match_overrides: True to match items with _overrides on the end,
             False otherwise
     Returns a tuple:
@@ -1115,7 +1141,7 @@
             else:
                 varset_new = varset_start
 
-            if isinstance(indent, (int, long)):
+            if isinstance(indent, int):
                 if indent == -1:
                     indentspc = ' ' * (len(varset_new) + 2)
                 else:
@@ -1183,7 +1209,7 @@
                 in_var = None
         else:
             skip = False
-            for (varname, var_re) in var_res.iteritems():
+            for (varname, var_re) in var_res.items():
                 res = var_re.match(line)
                 if res:
                     isfunc = varname.endswith('()')
@@ -1361,7 +1387,7 @@
         # Use longest path so we handle nested layers
         matchlen = 0
         match = None
-        for collection, regex in collection_res.iteritems():
+        for collection, regex in collection_res.items():
             if len(regex) > matchlen and re.match(regex, path):
                 matchlen = len(regex)
                 match = collection
@@ -1427,9 +1453,8 @@
     # This is nice to have for debugging, not essential
     try:
         libc = cdll.LoadLibrary('libc.so.6')
-        buff = create_string_buffer(len(name)+1)
-        buff.value = name
-        libc.prctl(15, byref(buff), 0, 0, 0)
+        buf = create_string_buffer(bytes(name, 'utf-8'))
+        libc.prctl(15, byref(buf), 0, 0, 0)
     except:
         pass
 
@@ -1438,7 +1463,8 @@
     import os
 
     variables = ['http_proxy', 'HTTP_PROXY', 'https_proxy', 'HTTPS_PROXY',
-                    'ftp_proxy', 'FTP_PROXY', 'no_proxy', 'NO_PROXY']
+                    'ftp_proxy', 'FTP_PROXY', 'no_proxy', 'NO_PROXY',
+                    'GIT_PROXY_COMMAND']
     exported = False
 
     for v in variables:
@@ -1451,3 +1477,29 @@
                 exported = True
 
     return exported
+
+
+def load_plugins(logger, plugins, pluginpath):
+    def load_plugin(name):
+        logger.debug('Loading plugin %s' % name)
+        fp, pathname, description = imp.find_module(name, [pluginpath])
+        try:
+            return imp.load_module(name, fp, pathname, description)
+        finally:
+            if fp:
+                fp.close()
+
+    logger.debug('Loading plugins from %s...' % pluginpath)
+
+    expanded = (glob.glob(os.path.join(pluginpath, '*' + ext))
+                for ext in python_extensions)
+    files = itertools.chain.from_iterable(expanded)
+    names = set(os.path.splitext(os.path.basename(fn))[0] for fn in files)
+    for name in names:
+        if name != '__init__':
+            plugin = load_plugin(name)
+            if hasattr(plugin, 'plugin_init'):
+                obj = plugin.plugin_init(plugins)
+                plugins.append(obj or plugin)
+            else:
+                plugins.append(plugin)
diff --git a/import-layers/yocto-poky/bitbake/lib/bblayers/__init__.py b/import-layers/yocto-poky/bitbake/lib/bblayers/__init__.py
new file mode 100644
index 0000000..3ad9513
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/bblayers/__init__.py
@@ -0,0 +1,2 @@
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
diff --git a/import-layers/yocto-poky/bitbake/lib/bblayers/action.py b/import-layers/yocto-poky/bitbake/lib/bblayers/action.py
new file mode 100644
index 0000000..739ae27
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/bblayers/action.py
@@ -0,0 +1,233 @@
+import fnmatch
+import logging
+import os
+import sys
+
+import bb.utils
+
+from bblayers.common import LayerPlugin
+
+logger = logging.getLogger('bitbake-layers')
+
+
+def plugin_init(plugins):
+    return ActionPlugin()
+
+
+class ActionPlugin(LayerPlugin):
+    def do_add_layer(self, args):
+        """Add a layer to bblayers.conf."""
+        layerdir = os.path.abspath(args.layerdir)
+        if not os.path.exists(layerdir):
+            sys.stderr.write("Specified layer directory doesn't exist\n")
+            return 1
+
+        layer_conf = os.path.join(layerdir, 'conf', 'layer.conf')
+        if not os.path.exists(layer_conf):
+            sys.stderr.write("Specified layer directory doesn't contain a conf/layer.conf file\n")
+            return 1
+
+        bblayers_conf = os.path.join('conf', 'bblayers.conf')
+        if not os.path.exists(bblayers_conf):
+            sys.stderr.write("Unable to find bblayers.conf\n")
+            return 1
+
+        notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdir, None)
+        if notadded:
+            for item in notadded:
+                sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item)
+
+    def do_remove_layer(self, args):
+        """Remove a layer from bblayers.conf."""
+        bblayers_conf = os.path.join('conf', 'bblayers.conf')
+        if not os.path.exists(bblayers_conf):
+            sys.stderr.write("Unable to find bblayers.conf\n")
+            return 1
+
+        if args.layerdir.startswith('*'):
+            layerdir = args.layerdir
+        elif not '/' in args.layerdir:
+            layerdir = '*/%s' % args.layerdir
+        else:
+            layerdir = os.path.abspath(args.layerdir)
+        (_, notremoved) = bb.utils.edit_bblayers_conf(bblayers_conf, None, layerdir)
+        if notremoved:
+            for item in notremoved:
+                sys.stderr.write("No layers matching %s found in BBLAYERS\n" % item)
+            return 1
+
+    def do_flatten(self, args):
+        """flatten layer configuration into a separate output directory.
+
+Takes the specified layers (or all layers in the current layer
+configuration if none are specified) and builds a "flattened" directory
+containing the contents of all layers, with any overlayed recipes removed
+and bbappends appended to the corresponding recipes. Note that some manual
+cleanup may still be necessary afterwards, in particular:
+
+* where non-recipe files (such as patches) are overwritten (the flatten
+  command will show a warning for these)
+* where anything beyond the normal layer setup has been added to
+  layer.conf (only the lowest priority number layer's layer.conf is used)
+* overridden/appended items from bbappends will need to be tidied up
+* when the flattened layers do not have the same directory structure (the
+  flatten command should show a warning when this will cause a problem)
+
+Warning: if you flatten several layers where another layer is intended to
+be used "inbetween" them (in layer priority order) such that recipes /
+bbappends in the layers interact, and then attempt to use the new output
+layer together with that other layer, you may no longer get the same
+build results (as the layer priority order has effectively changed).
+"""
+        if len(args.layer) == 1:
+            logger.error('If you specify layers to flatten you must specify at least two')
+            return 1
+
+        outputdir = args.outputdir
+        if os.path.exists(outputdir) and os.listdir(outputdir):
+            logger.error('Directory %s exists and is non-empty, please clear it out first' % outputdir)
+            return 1
+
+        layers = self.bblayers
+        if len(args.layer) > 2:
+            layernames = args.layer
+            found_layernames = []
+            found_layerdirs = []
+            for layerdir in layers:
+                layername = self.get_layer_name(layerdir)
+                if layername in layernames:
+                    found_layerdirs.append(layerdir)
+                    found_layernames.append(layername)
+
+            for layername in layernames:
+                if not layername in found_layernames:
+                    logger.error('Unable to find layer %s in current configuration, please run "%s show-layers" to list configured layers' % (layername, os.path.basename(sys.argv[0])))
+                    return
+            layers = found_layerdirs
+        else:
+            layernames = []
+
+        # Ensure a specified path matches our list of layers
+        def layer_path_match(path):
+            for layerdir in layers:
+                if path.startswith(os.path.join(layerdir, '')):
+                    return layerdir
+            return None
+
+        applied_appends = []
+        for layer in layers:
+            overlayed = []
+            for f in self.tinfoil.cooker.collection.overlayed.keys():
+                for of in self.tinfoil.cooker.collection.overlayed[f]:
+                    if of.startswith(layer):
+                        overlayed.append(of)
+
+            logger.plain('Copying files from %s...' % layer )
+            for root, dirs, files in os.walk(layer):
+                if '.git' in dirs:
+                    dirs.remove('.git')
+                if '.hg' in dirs:
+                    dirs.remove('.hg')
+
+                for f1 in files:
+                    f1full = os.sep.join([root, f1])
+                    if f1full in overlayed:
+                        logger.plain('  Skipping overlayed file %s' % f1full )
+                    else:
+                        ext = os.path.splitext(f1)[1]
+                        if ext != '.bbappend':
+                            fdest = f1full[len(layer):]
+                            fdest = os.path.normpath(os.sep.join([outputdir,fdest]))
+                            bb.utils.mkdirhier(os.path.dirname(fdest))
+                            if os.path.exists(fdest):
+                                if f1 == 'layer.conf' and root.endswith('/conf'):
+                                    logger.plain('  Skipping layer config file %s' % f1full )
+                                    continue
+                                else:
+                                    logger.warning('Overwriting file %s', fdest)
+                            bb.utils.copyfile(f1full, fdest)
+                            if ext == '.bb':
+                                for append in self.tinfoil.cooker.collection.get_file_appends(f1full):
+                                    if layer_path_match(append):
+                                        logger.plain('  Applying append %s to %s' % (append, fdest))
+                                        self.apply_append(append, fdest)
+                                        applied_appends.append(append)
+
+        # Take care of when some layers are excluded and yet we have included bbappends for those recipes
+        for b in self.tinfoil.cooker.collection.bbappends:
+            (recipename, appendname) = b
+            if appendname not in applied_appends:
+                first_append = None
+                layer = layer_path_match(appendname)
+                if layer:
+                    if first_append:
+                        self.apply_append(appendname, first_append)
+                    else:
+                        fdest = appendname[len(layer):]
+                        fdest = os.path.normpath(os.sep.join([outputdir,fdest]))
+                        bb.utils.mkdirhier(os.path.dirname(fdest))
+                        bb.utils.copyfile(appendname, fdest)
+                        first_append = fdest
+
+        # Get the regex for the first layer in our list (which is where the conf/layer.conf file will
+        # have come from)
+        first_regex = None
+        layerdir = layers[0]
+        for layername, pattern, regex, _ in self.tinfoil.cooker.bbfile_config_priorities:
+            if regex.match(os.path.join(layerdir, 'test')):
+                first_regex = regex
+                break
+
+        if first_regex:
+            # Find the BBFILES entries that match (which will have come from this conf/layer.conf file)
+            bbfiles = str(self.tinfoil.config_data.getVar('BBFILES', True)).split()
+            bbfiles_layer = []
+            for item in bbfiles:
+                if first_regex.match(item):
+                    newpath = os.path.join(outputdir, item[len(layerdir)+1:])
+                    bbfiles_layer.append(newpath)
+
+            if bbfiles_layer:
+                # Check that all important layer files match BBFILES
+                for root, dirs, files in os.walk(outputdir):
+                    for f1 in files:
+                        ext = os.path.splitext(f1)[1]
+                        if ext in ['.bb', '.bbappend']:
+                            f1full = os.sep.join([root, f1])
+                            entry_found = False
+                            for item in bbfiles_layer:
+                                if fnmatch.fnmatch(f1full, item):
+                                    entry_found = True
+                                    break
+                            if not entry_found:
+                                logger.warning("File %s does not match the flattened layer's BBFILES setting, you may need to edit conf/layer.conf or move the file elsewhere" % f1full)
+
+    def get_file_layer(self, filename):
+        layerdir = self.get_file_layerdir(filename)
+        if layerdir:
+            return self.get_layer_name(layerdir)
+        else:
+            return '?'
+
+    def get_file_layerdir(self, filename):
+        layer = bb.utils.get_file_layer(filename, self.tinfoil.config_data)
+        return self.bbfile_collections.get(layer, None)
+
+    def apply_append(self, appendname, recipename):
+        with open(appendname, 'r') as appendfile:
+            with open(recipename, 'a') as recipefile:
+                recipefile.write('\n')
+                recipefile.write('##### bbappended from %s #####\n' % self.get_file_layer(appendname))
+                recipefile.writelines(appendfile.readlines())
+
+    def register_commands(self, sp):
+        parser_add_layer = self.add_command(sp, 'add-layer', self.do_add_layer, parserecipes=False)
+        parser_add_layer.add_argument('layerdir', help='Layer directory to add')
+
+        parser_remove_layer = self.add_command(sp, 'remove-layer', self.do_remove_layer, parserecipes=False)
+        parser_remove_layer.add_argument('layerdir', help='Layer directory to remove (wildcards allowed, enclose in quotes to avoid shell expansion)')
+        parser_remove_layer.set_defaults(func=self.do_remove_layer)
+
+        parser_flatten = self.add_command(sp, 'flatten', self.do_flatten)
+        parser_flatten.add_argument('layer', nargs='*', help='Optional layer(s) to flatten (otherwise all are flattened)')
+        parser_flatten.add_argument('outputdir', help='Output directory')
diff --git a/import-layers/yocto-poky/bitbake/lib/bblayers/common.py b/import-layers/yocto-poky/bitbake/lib/bblayers/common.py
new file mode 100644
index 0000000..b10fb4c
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/bblayers/common.py
@@ -0,0 +1,33 @@
+import argparse
+import logging
+import os
+
+logger = logging.getLogger('bitbake-layers')
+
+
+class LayerPlugin():
+    def __init__(self):
+        self.tinfoil = None
+        self.bblayers = []
+
+    def tinfoil_init(self, tinfoil):
+        self.tinfoil = tinfoil
+        self.bblayers = (self.tinfoil.config_data.getVar('BBLAYERS', True) or "").split()
+        layerconfs = self.tinfoil.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.tinfoil.config_data)
+        self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.items()}
+
+    @staticmethod
+    def add_command(subparsers, cmdname, function, parserecipes=True, *args, **kwargs):
+        """Convert docstring for function to help."""
+        docsplit = function.__doc__.splitlines()
+        help = docsplit[0]
+        if len(docsplit) > 1:
+            desc = '\n'.join(docsplit[1:])
+        else:
+            desc = help
+        subparser = subparsers.add_parser(cmdname, *args, help=help, description=desc, formatter_class=argparse.RawTextHelpFormatter, **kwargs)
+        subparser.set_defaults(func=function, parserecipes=parserecipes)
+        return subparser
+
+    def get_layer_name(self, layerdir):
+        return os.path.basename(layerdir.rstrip(os.sep))
diff --git a/import-layers/yocto-poky/bitbake/lib/bblayers/layerindex.py b/import-layers/yocto-poky/bitbake/lib/bblayers/layerindex.py
new file mode 100644
index 0000000..10ad718
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/bblayers/layerindex.py
@@ -0,0 +1,270 @@
+import argparse
+import http.client
+import json
+import logging
+import os
+import subprocess
+import urllib.parse
+
+from bblayers.action import ActionPlugin
+
+logger = logging.getLogger('bitbake-layers')
+
+
+def plugin_init(plugins):
+    return LayerIndexPlugin()
+
+
+class LayerIndexPlugin(ActionPlugin):
+    """Subcommands for interacting with the layer index.
+
+    This class inherits ActionPlugin to get do_add_layer.
+    """
+
+    def get_json_data(self, apiurl):
+        proxy_settings = os.environ.get("http_proxy", None)
+        conn = None
+        _parsedurl = urllib.parse.urlparse(apiurl)
+        path = _parsedurl.path
+        query = _parsedurl.query
+
+        def parse_url(url):
+            parsedurl = urllib.parse.urlparse(url)
+            if parsedurl.netloc[0] == '[':
+                host, port = parsedurl.netloc[1:].split(']', 1)
+                if ':' in port:
+                    port = port.rsplit(':', 1)[1]
+                else:
+                    port = None
+            else:
+                if parsedurl.netloc.count(':') == 1:
+                    (host, port) = parsedurl.netloc.split(":")
+                else:
+                    host = parsedurl.netloc
+                    port = None
+            return (host, 80 if port is None else int(port))
+
+        if proxy_settings is None:
+            host, port = parse_url(apiurl)
+            conn = http.client.HTTPConnection(host, port)
+            conn.request("GET", path + "?" + query)
+        else:
+            host, port = parse_url(proxy_settings)
+            conn = http.client.HTTPConnection(host, port)
+            conn.request("GET", apiurl)
+
+        r = conn.getresponse()
+        if r.status != 200:
+            raise Exception("Failed to read " + path + ": %d %s" % (r.status, r.reason))
+        return json.loads(r.read())
+
+    def get_layer_deps(self, layername, layeritems, layerbranches, layerdependencies, branchnum, selfname=False):
+        def layeritems_info_id(items_name, layeritems):
+            litems_id = None
+            for li in layeritems:
+                if li['name'] == items_name:
+                    litems_id = li['id']
+                    break
+            return litems_id
+
+        def layerbranches_info(items_id, layerbranches):
+            lbranch = {}
+            for lb in layerbranches:
+                if lb['layer'] == items_id and lb['branch'] == branchnum:
+                    lbranch['id'] = lb['id']
+                    lbranch['vcs_subdir'] = lb['vcs_subdir']
+                    break
+            return lbranch
+
+        def layerdependencies_info(lb_id, layerdependencies):
+            ld_deps = []
+            for ld in layerdependencies:
+                if ld['layerbranch'] == lb_id and not ld['dependency'] in ld_deps:
+                    ld_deps.append(ld['dependency'])
+            if not ld_deps:
+                logger.error("The dependency of layerDependencies is not found.")
+            return ld_deps
+
+        def layeritems_info_name_subdir(items_id, layeritems):
+            litems = {}
+            for li in layeritems:
+                if li['id'] == items_id:
+                    litems['vcs_url'] = li['vcs_url']
+                    litems['name'] = li['name']
+                    break
+            return litems
+
+        if selfname:
+            selfid = layeritems_info_id(layername, layeritems)
+            lbinfo = layerbranches_info(selfid, layerbranches)
+            if lbinfo:
+                selfsubdir = lbinfo['vcs_subdir']
+            else:
+                logger.error("%s is not found in the specified branch" % layername)
+                return
+            selfurl = layeritems_info_name_subdir(selfid, layeritems)['vcs_url']
+            if selfurl:
+                return selfurl, selfsubdir
+            else:
+                logger.error("Cannot get layer %s git repo and subdir" % layername)
+                return
+        ldict = {}
+        itemsid = layeritems_info_id(layername, layeritems)
+        if not itemsid:
+            return layername, None
+        lbid = layerbranches_info(itemsid, layerbranches)
+        if lbid:
+            lbid = layerbranches_info(itemsid, layerbranches)['id']
+        else:
+            logger.error("%s is not found in the specified branch" % layername)
+            return None, None
+        for dependency in layerdependencies_info(lbid, layerdependencies):
+            lname = layeritems_info_name_subdir(dependency, layeritems)['name']
+            lurl = layeritems_info_name_subdir(dependency, layeritems)['vcs_url']
+            lsubdir = layerbranches_info(dependency, layerbranches)['vcs_subdir']
+            ldict[lname] = lurl, lsubdir
+        return None, ldict
+
+    def get_fetch_layer(self, fetchdir, url, subdir, fetch_layer):
+        layername = self.get_layer_name(url)
+        if os.path.splitext(layername)[1] == '.git':
+            layername = os.path.splitext(layername)[0]
+        repodir = os.path.join(fetchdir, layername)
+        layerdir = os.path.join(repodir, subdir)
+        if not os.path.exists(repodir):
+            if fetch_layer:
+                result = subprocess.call('git clone %s %s' % (url, repodir), shell = True)
+                if result:
+                    logger.error("Failed to download %s" % url)
+                    return None, None
+                else:
+                    return layername, layerdir
+            else:
+                logger.plain("Repository %s needs to be fetched" % url)
+                return layername, layerdir
+        elif os.path.exists(layerdir):
+            return layername, layerdir
+        else:
+            logger.error("%s is not in %s" % (url, subdir))
+        return None, None
+
+    def do_layerindex_fetch(self, args):
+        """Fetches a layer from a layer index along with its dependent layers, and adds them to conf/bblayers.conf.
+"""
+        apiurl = self.tinfoil.config_data.getVar('BBLAYERS_LAYERINDEX_URL', True)
+        if not apiurl:
+            logger.error("Cannot get BBLAYERS_LAYERINDEX_URL")
+            return 1
+        else:
+            if apiurl[-1] != '/':
+                apiurl += '/'
+            apiurl += "api/"
+        apilinks = self.get_json_data(apiurl)
+        branches = self.get_json_data(apilinks['branches'])
+
+        branchnum = 0
+        for branch in branches:
+            if branch['name'] == args.branch:
+                branchnum = branch['id']
+                break
+        if branchnum == 0:
+            validbranches = ', '.join([branch['name'] for branch in branches])
+            logger.error('Invalid layer branch name "%s". Valid branches: %s' % (args.branch, validbranches))
+            return 1
+
+        ignore_layers = []
+        for collection in self.tinfoil.config_data.getVar('BBFILE_COLLECTIONS', True).split():
+            lname = self.tinfoil.config_data.getVar('BBLAYERS_LAYERINDEX_NAME_%s' % collection, True)
+            if lname:
+                ignore_layers.append(lname)
+
+        if args.ignore:
+            ignore_layers.extend(args.ignore.split(','))
+
+        layeritems = self.get_json_data(apilinks['layerItems'])
+        layerbranches = self.get_json_data(apilinks['layerBranches'])
+        layerdependencies = self.get_json_data(apilinks['layerDependencies'])
+        invaluenames = []
+        repourls = {}
+        printlayers = []
+
+        def query_dependencies(layers, layeritems, layerbranches, layerdependencies, branchnum):
+            depslayer = []
+            for layername in layers:
+                invaluename, layerdict = self.get_layer_deps(layername, layeritems, layerbranches, layerdependencies, branchnum)
+                if layerdict:
+                    repourls[layername] = self.get_layer_deps(layername, layeritems, layerbranches, layerdependencies, branchnum, selfname=True)
+                    for layer in layerdict:
+                        if not layer in ignore_layers:
+                            depslayer.append(layer)
+                        printlayers.append((layername, layer, layerdict[layer][0], layerdict[layer][1]))
+                        if not layer in ignore_layers and not layer in repourls:
+                            repourls[layer] = (layerdict[layer][0], layerdict[layer][1])
+                if invaluename and not invaluename in invaluenames:
+                    invaluenames.append(invaluename)
+            return depslayer
+
+        depslayers = query_dependencies(args.layername, layeritems, layerbranches, layerdependencies, branchnum)
+        while depslayers:
+            depslayer = query_dependencies(depslayers, layeritems, layerbranches, layerdependencies, branchnum)
+            depslayers = depslayer
+        if invaluenames:
+            for invaluename in invaluenames:
+                logger.error('Layer "%s" not found in layer index' % invaluename)
+            return 1
+        logger.plain("%s  %s  %s  %s" % ("Layer".ljust(19), "Required by".ljust(19), "Git repository".ljust(54), "Subdirectory"))
+        logger.plain('=' * 115)
+        for layername in args.layername:
+            layerurl = repourls[layername]
+            logger.plain("%s %s %s %s" % (layername.ljust(20), '-'.ljust(20), layerurl[0].ljust(55), layerurl[1]))
+        printedlayers = []
+        for layer, dependency, gitrepo, subdirectory in printlayers:
+            if dependency in printedlayers:
+                continue
+            logger.plain("%s %s %s %s" % (dependency.ljust(20), layer.ljust(20), gitrepo.ljust(55), subdirectory))
+            printedlayers.append(dependency)
+
+        if repourls:
+            fetchdir = self.tinfoil.config_data.getVar('BBLAYERS_FETCH_DIR', True)
+            if not fetchdir:
+                logger.error("Cannot get BBLAYERS_FETCH_DIR")
+                return 1
+            if not os.path.exists(fetchdir):
+                os.makedirs(fetchdir)
+            addlayers = []
+            for repourl, subdir in repourls.values():
+                name, layerdir = self.get_fetch_layer(fetchdir, repourl, subdir, not args.show_only)
+                if not name:
+                    # Error already shown
+                    return 1
+                addlayers.append((subdir, name, layerdir))
+        if not args.show_only:
+            for subdir, name, layerdir in set(addlayers):
+                if os.path.exists(layerdir):
+                    if subdir:
+                        logger.plain("Adding layer \"%s\" to conf/bblayers.conf" % subdir)
+                    else:
+                        logger.plain("Adding layer \"%s\" to conf/bblayers.conf" % name)
+                    localargs = argparse.Namespace()
+                    localargs.layerdir = layerdir
+                    self.do_add_layer(localargs)
+                else:
+                    break
+
+    def do_layerindex_show_depends(self, args):
+        """Find layer dependencies from layer index.
+"""
+        args.show_only = True
+        args.ignore = []
+        self.do_layerindex_fetch(args)
+
+    def register_commands(self, sp):
+        parser_layerindex_fetch = self.add_command(sp, 'layerindex-fetch', self.do_layerindex_fetch)
+        parser_layerindex_fetch.add_argument('-n', '--show-only', help='show dependencies and do nothing else', action='store_true')
+        parser_layerindex_fetch.add_argument('-b', '--branch', help='branch name to fetch (default %(default)s)', default='master')
+        parser_layerindex_fetch.add_argument('-i', '--ignore', help='assume the specified layers do not need to be fetched/added (separate multiple layers with commas, no spaces)', metavar='LAYER')
+        parser_layerindex_fetch.add_argument('layername', nargs='+', help='layer to fetch')
+
+        parser_layerindex_show_depends = self.add_command(sp, 'layerindex-show-depends', self.do_layerindex_show_depends)
+        parser_layerindex_show_depends.add_argument('-b', '--branch', help='branch name to fetch (default %(default)s)', default='master')
+        parser_layerindex_show_depends.add_argument('layername', nargs='+', help='layer to query')
diff --git a/import-layers/yocto-poky/bitbake/lib/bblayers/query.py b/import-layers/yocto-poky/bitbake/lib/bblayers/query.py
new file mode 100644
index 0000000..ee1e7c8
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/bblayers/query.py
@@ -0,0 +1,500 @@
+import collections
+import fnmatch
+import logging
+import sys
+import os
+import re
+
+import bb.cache
+import bb.providers
+import bb.utils
+
+from bblayers.common import LayerPlugin
+
+logger = logging.getLogger('bitbake-layers')
+
+
+def plugin_init(plugins):
+    return QueryPlugin()
+
+
+class QueryPlugin(LayerPlugin):
+    def do_show_layers(self, args):
+        """show current configured layers."""
+        logger.plain("%s  %s  %s" % ("layer".ljust(20), "path".ljust(40), "priority"))
+        logger.plain('=' * 74)
+        for layer, _, regex, pri in self.tinfoil.cooker.bbfile_config_priorities:
+            layerdir = self.bbfile_collections.get(layer, None)
+            layername = self.get_layer_name(layerdir)
+            logger.plain("%s  %s  %d" % (layername.ljust(20), layerdir.ljust(40), pri))
+
+    def version_str(self, pe, pv, pr = None):
+        verstr = "%s" % pv
+        if pr:
+            verstr = "%s-%s" % (verstr, pr)
+        if pe:
+            verstr = "%s:%s" % (pe, verstr)
+        return verstr
+
+    def do_show_overlayed(self, args):
+        """list overlayed recipes (where the same recipe exists in another layer)
+
+Lists the names of overlayed recipes and the available versions in each
+layer, with the preferred version first. Note that skipped recipes that
+are overlayed will also be listed, with a " (skipped)" suffix.
+"""
+
+        items_listed = self.list_recipes('Overlayed recipes', None, True, args.same_version, args.filenames, True, None)
+
+        # Check for overlayed .bbclass files
+        classes = collections.defaultdict(list)
+        for layerdir in self.bblayers:
+            classdir = os.path.join(layerdir, 'classes')
+            if os.path.exists(classdir):
+                for classfile in os.listdir(classdir):
+                    if os.path.splitext(classfile)[1] == '.bbclass':
+                        classes[classfile].append(classdir)
+
+        # Locating classes and other files is a bit more complicated than recipes -
+        # layer priority is not a factor; instead BitBake uses the first matching
+        # file in BBPATH, which is manipulated directly by each layer's
+        # conf/layer.conf in turn, thus the order of layers in bblayers.conf is a
+        # factor - however, each layer.conf is free to either prepend or append to
+        # BBPATH (or indeed do crazy stuff with it). Thus the order in BBPATH might
+        # not be exactly the order present in bblayers.conf either.
+        bbpath = str(self.tinfoil.config_data.getVar('BBPATH', True))
+        overlayed_class_found = False
+        for (classfile, classdirs) in classes.items():
+            if len(classdirs) > 1:
+                if not overlayed_class_found:
+                    logger.plain('=== Overlayed classes ===')
+                    overlayed_class_found = True
+
+                mainfile = bb.utils.which(bbpath, os.path.join('classes', classfile))
+                if args.filenames:
+                    logger.plain('%s' % mainfile)
+                else:
+                    # We effectively have to guess the layer here
+                    logger.plain('%s:' % classfile)
+                    mainlayername = '?'
+                    for layerdir in self.bblayers:
+                        classdir = os.path.join(layerdir, 'classes')
+                        if mainfile.startswith(classdir):
+                            mainlayername = self.get_layer_name(layerdir)
+                    logger.plain('  %s' % mainlayername)
+                for classdir in classdirs:
+                    fullpath = os.path.join(classdir, classfile)
+                    if fullpath != mainfile:
+                        if args.filenames:
+                            print('  %s' % fullpath)
+                        else:
+                            print('  %s' % self.get_layer_name(os.path.dirname(classdir)))
+
+        if overlayed_class_found:
+            items_listed = True;
+
+        if not items_listed:
+            logger.plain('No overlayed files found.')
+
+    def do_show_recipes(self, args):
+        """list available recipes, showing the layer they are provided by
+
+Lists the names of recipes and the available versions in each
+layer, with the preferred version first. Optionally you may specify
+pnspec to match a specified recipe name (supports wildcards). Note that
+skipped recipes will also be listed, with a " (skipped)" suffix.
+"""
+
+        inheritlist = args.inherits.split(',') if args.inherits else []
+        if inheritlist or args.pnspec or args.multiple:
+            title = 'Matching recipes:'
+        else:
+            title = 'Available recipes:'
+        self.list_recipes(title, args.pnspec, False, False, args.filenames, args.multiple, inheritlist)
+
+    def list_recipes(self, title, pnspec, show_overlayed_only, show_same_ver_only, show_filenames, show_multi_provider_only, inherits):
+        if inherits:
+            bbpath = str(self.tinfoil.config_data.getVar('BBPATH', True))
+            for classname in inherits:
+                classfile = 'classes/%s.bbclass' % classname
+                if not bb.utils.which(bbpath, classfile, history=False):
+                    logger.error('No class named %s found in BBPATH', classfile)
+                    sys.exit(1)
+
+        pkg_pn = self.tinfoil.cooker.recipecaches[''].pkg_pn
+        (latest_versions, preferred_versions) = bb.providers.findProviders(self.tinfoil.config_data, self.tinfoil.cooker.recipecaches[''], pkg_pn)
+        allproviders = bb.providers.allProviders(self.tinfoil.cooker.recipecaches[''])
+
+        # Ensure we list skipped recipes
+        # We are largely guessing about PN, PV and the preferred version here,
+        # but we have no choice since skipped recipes are not fully parsed
+        skiplist = list(self.tinfoil.cooker.skiplist.keys())
+        skiplist.sort( key=lambda fileitem: self.tinfoil.cooker.collection.calc_bbfile_priority(fileitem) )
+        skiplist.reverse()
+        for fn in skiplist:
+            recipe_parts = os.path.splitext(os.path.basename(fn))[0].split('_')
+            p = recipe_parts[0]
+            if len(recipe_parts) > 1:
+                ver = (None, recipe_parts[1], None)
+            else:
+                ver = (None, 'unknown', None)
+            allproviders[p].append((ver, fn))
+            if not p in pkg_pn:
+                pkg_pn[p] = 'dummy'
+                preferred_versions[p] = (ver, fn)
+
+        def print_item(f, pn, ver, layer, ispref):
+            if f in skiplist:
+                skipped = ' (skipped)'
+            else:
+                skipped = ''
+            if show_filenames:
+                if ispref:
+                    logger.plain("%s%s", f, skipped)
+                else:
+                    logger.plain("  %s%s", f, skipped)
+            else:
+                if ispref:
+                    logger.plain("%s:", pn)
+                logger.plain("  %s %s%s", layer.ljust(20), ver, skipped)
+
+        global_inherit = (self.tinfoil.config_data.getVar('INHERIT', True) or "").split()
+        cls_re = re.compile('classes/')
+
+        preffiles = []
+        items_listed = False
+        for p in sorted(pkg_pn):
+            if pnspec:
+                if not fnmatch.fnmatch(p, pnspec):
+                    continue
+
+            if len(allproviders[p]) > 1 or not show_multi_provider_only:
+                pref = preferred_versions[p]
+                realfn = bb.cache.virtualfn2realfn(pref[1])
+                preffile = realfn[0]
+
+                # We only display once per recipe, we should prefer non extended versions of the
+                # recipe if present (so e.g. in OpenEmbedded, openssl rather than nativesdk-openssl
+                # which would otherwise sort first).
+                if realfn[1] and realfn[0] in self.tinfoil.cooker.recipecaches[''].pkg_fn:
+                    continue
+
+                if inherits:
+                    matchcount = 0
+                    recipe_inherits = self.tinfoil.cooker_data.inherits.get(preffile, [])
+                    for cls in recipe_inherits:
+                        if cls_re.match(cls):
+                            continue
+                        classname = os.path.splitext(os.path.basename(cls))[0]
+                        if classname in global_inherit:
+                            continue
+                        elif classname in inherits:
+                            matchcount += 1
+                    if matchcount != len(inherits):
+                        # No match - skip this recipe
+                        continue
+
+                if preffile not in preffiles:
+                    preflayer = self.get_file_layer(preffile)
+                    multilayer = False
+                    same_ver = True
+                    provs = []
+                    for prov in allproviders[p]:
+                        provfile = bb.cache.virtualfn2realfn(prov[1])[0]
+                        provlayer = self.get_file_layer(provfile)
+                        provs.append((provfile, provlayer, prov[0]))
+                        if provlayer != preflayer:
+                            multilayer = True
+                        if prov[0] != pref[0]:
+                            same_ver = False
+
+                    if (multilayer or not show_overlayed_only) and (same_ver or not show_same_ver_only):
+                        if not items_listed:
+                            logger.plain('=== %s ===' % title)
+                            items_listed = True
+                        print_item(preffile, p, self.version_str(pref[0][0], pref[0][1]), preflayer, True)
+                        for (provfile, provlayer, provver) in provs:
+                            if provfile != preffile:
+                                print_item(provfile, p, self.version_str(provver[0], provver[1]), provlayer, False)
+                        # Ensure we don't show two entries for BBCLASSEXTENDed recipes
+                        preffiles.append(preffile)
+
+        return items_listed
+
+    def get_file_layer(self, filename):
+        layerdir = self.get_file_layerdir(filename)
+        if layerdir:
+            return self.get_layer_name(layerdir)
+        else:
+            return '?'
+
+    def get_file_layerdir(self, filename):
+        layer = bb.utils.get_file_layer(filename, self.tinfoil.config_data)
+        return self.bbfile_collections.get(layer, None)
+
+    def remove_layer_prefix(self, f):
+        """Remove the layer_dir prefix, e.g., f = /path/to/layer_dir/foo/blah, the
+           return value will be: layer_dir/foo/blah"""
+        f_layerdir = self.get_file_layerdir(f)
+        if not f_layerdir:
+            return f
+        prefix = os.path.join(os.path.dirname(f_layerdir), '')
+        return f[len(prefix):] if f.startswith(prefix) else f
+
+    def do_show_appends(self, args):
+        """list bbappend files and recipe files they apply to
+
+Lists recipes with the bbappends that apply to them as subitems.
+"""
+
+        logger.plain('=== Appended recipes ===')
+
+        pnlist = list(self.tinfoil.cooker_data.pkg_pn.keys())
+        pnlist.sort()
+        appends = False
+        for pn in pnlist:
+            if self.show_appends_for_pn(pn):
+                appends = True
+
+        if self.show_appends_for_skipped():
+            appends = True
+
+        if not appends:
+            logger.plain('No append files found')
+
+    def show_appends_for_pn(self, pn):
+        filenames = self.tinfoil.cooker_data.pkg_pn[pn]
+
+        best = bb.providers.findBestProvider(pn,
+                                             self.tinfoil.config_data,
+                                             self.tinfoil.cooker_data,
+                                             self.tinfoil.cooker_data.pkg_pn)
+        best_filename = os.path.basename(best[3])
+
+        return self.show_appends_output(filenames, best_filename)
+
+    def show_appends_for_skipped(self):
+        filenames = [os.path.basename(f)
+                    for f in self.tinfoil.cooker.skiplist.keys()]
+        return self.show_appends_output(filenames, None, " (skipped)")
+
+    def show_appends_output(self, filenames, best_filename, name_suffix = ''):
+        appended, missing = self.get_appends_for_files(filenames)
+        if appended:
+            for basename, appends in appended:
+                logger.plain('%s%s:', basename, name_suffix)
+                for append in appends:
+                    logger.plain('  %s', append)
+
+            if best_filename:
+                if best_filename in missing:
+                    logger.warning('%s: missing append for preferred version',
+                                   best_filename)
+            return True
+        else:
+            return False
+
+    def get_appends_for_files(self, filenames):
+        appended, notappended = [], []
+        for filename in filenames:
+            _, cls, _ = bb.cache.virtualfn2realfn(filename)
+            if cls:
+                continue
+
+            basename = os.path.basename(filename)
+            appends = self.tinfoil.cooker.collection.get_file_appends(basename)
+            if appends:
+                appended.append((basename, list(appends)))
+            else:
+                notappended.append(basename)
+        return appended, notappended
+
+    def do_show_cross_depends(self, args):
+        """Show dependencies between recipes that cross layer boundaries.
+
+Figure out the dependencies between recipes that cross layer boundaries.
+
+NOTE: .bbappend files can impact the dependencies.
+"""
+        ignore_layers = (args.ignore or '').split(',')
+
+        pkg_fn = self.tinfoil.cooker_data.pkg_fn
+        bbpath = str(self.tinfoil.config_data.getVar('BBPATH', True))
+        self.require_re = re.compile(r"require\s+(.+)")
+        self.include_re = re.compile(r"include\s+(.+)")
+        self.inherit_re = re.compile(r"inherit\s+(.+)")
+
+        global_inherit = (self.tinfoil.config_data.getVar('INHERIT', True) or "").split()
+
+        # The bb's DEPENDS and RDEPENDS
+        for f in pkg_fn:
+            f = bb.cache.virtualfn2realfn(f)[0]
+            # Get the layername that the file is in
+            layername = self.get_file_layer(f)
+
+            # The DEPENDS
+            deps = self.tinfoil.cooker_data.deps[f]
+            for pn in deps:
+                if pn in self.tinfoil.cooker_data.pkg_pn:
+                    best = bb.providers.findBestProvider(pn,
+                            self.tinfoil.config_data,
+                            self.tinfoil.cooker_data,
+                            self.tinfoil.cooker_data.pkg_pn)
+                    self.check_cross_depends("DEPENDS", layername, f, best[3], args.filenames, ignore_layers)
+
+            # The RDPENDS
+            all_rdeps = self.tinfoil.cooker_data.rundeps[f].values()
+            # Remove the duplicated or null one.
+            sorted_rdeps = {}
+            # The all_rdeps is the list in list, so we need two for loops
+            for k1 in all_rdeps:
+                for k2 in k1:
+                    sorted_rdeps[k2] = 1
+            all_rdeps = sorted_rdeps.keys()
+            for rdep in all_rdeps:
+                all_p = bb.providers.getRuntimeProviders(self.tinfoil.cooker_data, rdep)
+                if all_p:
+                    if f in all_p:
+                        # The recipe provides this one itself, ignore
+                        continue
+                    best = bb.providers.filterProvidersRunTime(all_p, rdep,
+                                    self.tinfoil.config_data,
+                                    self.tinfoil.cooker_data)[0][0]
+                    self.check_cross_depends("RDEPENDS", layername, f, best, args.filenames, ignore_layers)
+
+            # The RRECOMMENDS
+            all_rrecs = self.tinfoil.cooker_data.runrecs[f].values()
+            # Remove the duplicated or null one.
+            sorted_rrecs = {}
+            # The all_rrecs is the list in list, so we need two for loops
+            for k1 in all_rrecs:
+                for k2 in k1:
+                    sorted_rrecs[k2] = 1
+            all_rrecs = sorted_rrecs.keys()
+            for rrec in all_rrecs:
+                all_p = bb.providers.getRuntimeProviders(self.tinfoil.cooker_data, rrec)
+                if all_p:
+                    if f in all_p:
+                        # The recipe provides this one itself, ignore
+                        continue
+                    best = bb.providers.filterProvidersRunTime(all_p, rrec,
+                                    self.tinfoil.config_data,
+                                    self.tinfoil.cooker_data)[0][0]
+                    self.check_cross_depends("RRECOMMENDS", layername, f, best, args.filenames, ignore_layers)
+
+            # The inherit class
+            cls_re = re.compile('classes/')
+            if f in self.tinfoil.cooker_data.inherits:
+                inherits = self.tinfoil.cooker_data.inherits[f]
+                for cls in inherits:
+                    # The inherits' format is [classes/cls, /path/to/classes/cls]
+                    # ignore the classes/cls.
+                    if not cls_re.match(cls):
+                        classname = os.path.splitext(os.path.basename(cls))[0]
+                        if classname in global_inherit:
+                            continue
+                        inherit_layername = self.get_file_layer(cls)
+                        if inherit_layername != layername and not inherit_layername in ignore_layers:
+                            if not args.filenames:
+                                f_short = self.remove_layer_prefix(f)
+                                cls = self.remove_layer_prefix(cls)
+                            else:
+                                f_short = f
+                            logger.plain("%s inherits %s" % (f_short, cls))
+
+            # The 'require/include xxx' in the bb file
+            pv_re = re.compile(r"\${PV}")
+            with open(f, 'r') as fnfile:
+                line = fnfile.readline()
+                while line:
+                    m, keyword = self.match_require_include(line)
+                    # Found the 'require/include xxxx'
+                    if m:
+                        needed_file = m.group(1)
+                        # Replace the ${PV} with the real PV
+                        if pv_re.search(needed_file) and f in self.tinfoil.cooker_data.pkg_pepvpr:
+                            pv = self.tinfoil.cooker_data.pkg_pepvpr[f][1]
+                            needed_file = re.sub(r"\${PV}", pv, needed_file)
+                        self.print_cross_files(bbpath, keyword, layername, f, needed_file, args.filenames, ignore_layers)
+                    line = fnfile.readline()
+
+        # The "require/include xxx" in conf/machine/*.conf, .inc and .bbclass
+        conf_re = re.compile(".*/conf/machine/[^\/]*\.conf$")
+        inc_re = re.compile(".*\.inc$")
+        # The "inherit xxx" in .bbclass
+        bbclass_re = re.compile(".*\.bbclass$")
+        for layerdir in self.bblayers:
+            layername = self.get_layer_name(layerdir)
+            for dirpath, dirnames, filenames in os.walk(layerdir):
+                for name in filenames:
+                    f = os.path.join(dirpath, name)
+                    s = conf_re.match(f) or inc_re.match(f) or bbclass_re.match(f)
+                    if s:
+                        with open(f, 'r') as ffile:
+                            line = ffile.readline()
+                            while line:
+                                m, keyword = self.match_require_include(line)
+                                # Only bbclass has the "inherit xxx" here.
+                                bbclass=""
+                                if not m and f.endswith(".bbclass"):
+                                    m, keyword = self.match_inherit(line)
+                                    bbclass=".bbclass"
+                                # Find a 'require/include xxxx'
+                                if m:
+                                    self.print_cross_files(bbpath, keyword, layername, f, m.group(1) + bbclass, args.filenames, ignore_layers)
+                                line = ffile.readline()
+
+    def print_cross_files(self, bbpath, keyword, layername, f, needed_filename, show_filenames, ignore_layers):
+        """Print the depends that crosses a layer boundary"""
+        needed_file = bb.utils.which(bbpath, needed_filename)
+        if needed_file:
+            # Which layer is this file from
+            needed_layername = self.get_file_layer(needed_file)
+            if needed_layername != layername and not needed_layername in ignore_layers:
+                if not show_filenames:
+                    f = self.remove_layer_prefix(f)
+                    needed_file = self.remove_layer_prefix(needed_file)
+                logger.plain("%s %s %s" %(f, keyword, needed_file))
+
+    def match_inherit(self, line):
+        """Match the inherit xxx line"""
+        return (self.inherit_re.match(line), "inherits")
+
+    def match_require_include(self, line):
+        """Match the require/include xxx line"""
+        m = self.require_re.match(line)
+        keyword = "requires"
+        if not m:
+            m = self.include_re.match(line)
+            keyword = "includes"
+        return (m, keyword)
+
+    def check_cross_depends(self, keyword, layername, f, needed_file, show_filenames, ignore_layers):
+        """Print the DEPENDS/RDEPENDS file that crosses a layer boundary"""
+        best_realfn = bb.cache.virtualfn2realfn(needed_file)[0]
+        needed_layername = self.get_file_layer(best_realfn)
+        if needed_layername != layername and not needed_layername in ignore_layers:
+            if not show_filenames:
+                f = self.remove_layer_prefix(f)
+                best_realfn = self.remove_layer_prefix(best_realfn)
+
+            logger.plain("%s %s %s" % (f, keyword, best_realfn))
+
+    def register_commands(self, sp):
+        self.add_command(sp, 'show-layers', self.do_show_layers, parserecipes=False)
+
+        parser_show_overlayed = self.add_command(sp, 'show-overlayed', self.do_show_overlayed)
+        parser_show_overlayed.add_argument('-f', '--filenames', help='instead of the default formatting, list filenames of higher priority recipes with the ones they overlay indented underneath', action='store_true')
+        parser_show_overlayed.add_argument('-s', '--same-version', help='only list overlayed recipes where the version is the same', action='store_true')
+
+        parser_show_recipes = self.add_command(sp, 'show-recipes', self.do_show_recipes)
+        parser_show_recipes.add_argument('-f', '--filenames', help='instead of the default formatting, list filenames of higher priority recipes with the ones they overlay indented underneath', action='store_true')
+        parser_show_recipes.add_argument('-m', '--multiple', help='only list where multiple recipes (in the same layer or different layers) exist for the same recipe name', action='store_true')
+        parser_show_recipes.add_argument('-i', '--inherits', help='only list recipes that inherit the named class', metavar='CLASS', default='')
+        parser_show_recipes.add_argument('pnspec', nargs='?', help='optional recipe name specification (wildcards allowed, enclose in quotes to avoid shell expansion)')
+
+        self.add_command(sp, 'show-appends', self.do_show_appends)
+
+        parser_show_cross_depends = self.add_command(sp, 'show-cross-depends', self.do_show_cross_depends)
+        parser_show_cross_depends.add_argument('-f', '--filenames', help='show full file path', action='store_true')
+        parser_show_cross_depends.add_argument('-i', '--ignore', help='ignore dependencies on items in the specified layer(s) (split multiple layer names with commas, no spaces)', metavar='LAYERNAME')
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/__init__.py b/import-layers/yocto-poky/bitbake/lib/bs4/__init__.py
index 7ba3426..f6fdfd5 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/__init__.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/__init__.py
@@ -17,8 +17,8 @@
 """
 
 __author__ = "Leonard Richardson (leonardr@segfault.org)"
-__version__ = "4.3.2"
-__copyright__ = "Copyright (c) 2004-2013 Leonard Richardson"
+__version__ = "4.4.1"
+__copyright__ = "Copyright (c) 2004-2015 Leonard Richardson"
 __license__ = "MIT"
 
 __all__ = ['BeautifulSoup']
@@ -45,7 +45,7 @@
 
 # The very first thing we do is give a useful error if someone is
 # running this code under Python 3 without converting it.
-syntax_error = u'You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work. You need to convert the code, either by installing it (`python setup.py install`) or by running 2to3 (`2to3 -w bs4`).'
+'You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work.'!='You need to convert the code, either by installing it (`python setup.py install`) or by running 2to3 (`2to3 -w bs4`).'
 
 class BeautifulSoup(Tag):
     """
@@ -69,7 +69,7 @@
     like HTML's <br> tag), call handle_starttag and then
     handle_endtag.
     """
-    ROOT_TAG_NAME = u'[document]'
+    ROOT_TAG_NAME = '[document]'
 
     # If the end-user gives no indication which tree builder they
     # want, look for one with these features.
@@ -77,8 +77,11 @@
 
     ASCII_SPACES = '\x20\x0a\x09\x0c\x0d'
 
+    NO_PARSER_SPECIFIED_WARNING = "No parser was explicitly specified, so I'm using the best available %(markup_type)s parser for this system (\"%(parser)s\"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.\n\nTo get rid of this warning, change this:\n\n BeautifulSoup([your markup])\n\nto this:\n\n BeautifulSoup([your markup], \"%(parser)s\")\n"
+
     def __init__(self, markup="", features=None, builder=None,
-                 parse_only=None, from_encoding=None, **kwargs):
+                 parse_only=None, from_encoding=None, exclude_encodings=None,
+                 **kwargs):
         """The Soup object is initialized as the 'root tag', and the
         provided markup (which can be a string or a file-like object)
         is fed into the underlying parser."""
@@ -114,9 +117,9 @@
             del kwargs['isHTML']
             warnings.warn(
                 "BS4 does not respect the isHTML argument to the "
-                "BeautifulSoup constructor. You can pass in features='html' "
-                "or features='xml' to get a builder capable of handling "
-                "one or the other.")
+                "BeautifulSoup constructor. Suggest you use "
+                "features='lxml' for HTML and features='lxml-xml' for "
+                "XML.")
 
         def deprecated_argument(old_name, new_name):
             if old_name in kwargs:
@@ -135,12 +138,13 @@
             "fromEncoding", "from_encoding")
 
         if len(kwargs) > 0:
-            arg = kwargs.keys().pop()
+            arg = list(kwargs.keys()).pop()
             raise TypeError(
                 "__init__() got an unexpected keyword argument '%s'" % arg)
 
         if builder is None:
-            if isinstance(features, basestring):
+            original_features = features
+            if isinstance(features, str):
                 features = [features]
             if features is None or len(features) == 0:
                 features = self.DEFAULT_BUILDER_FEATURES
@@ -151,6 +155,16 @@
                     "requested: %s. Do you need to install a parser library?"
                     % ",".join(features))
             builder = builder_class()
+            if not (original_features == builder.NAME or
+                    original_features in builder.ALTERNATE_NAMES):
+                if builder.is_xml:
+                    markup_type = "XML"
+                else:
+                    markup_type = "HTML"
+                warnings.warn(self.NO_PARSER_SPECIFIED_WARNING % dict(
+                    parser=builder.NAME,
+                    markup_type=markup_type))
+
         self.builder = builder
         self.is_xml = builder.is_xml
         self.builder.soup = self
@@ -164,7 +178,7 @@
             # involving passing non-markup to Beautiful Soup.
             # Beautiful Soup will still parse the input as markup,
             # just in case that's what the user really wants.
-            if (isinstance(markup, unicode)
+            if (isinstance(markup, str)
                 and not os.path.supports_unicode_filenames):
                 possible_filename = markup.encode("utf8")
             else:
@@ -172,25 +186,30 @@
             is_file = False
             try:
                 is_file = os.path.exists(possible_filename)
-            except Exception, e:
+            except Exception as e:
                 # This is almost certainly a problem involving
                 # characters not valid in filenames on this
                 # system. Just let it go.
                 pass
             if is_file:
+                if isinstance(markup, str):
+                    markup = markup.encode("utf8")
                 warnings.warn(
                     '"%s" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.' % markup)
             if markup[:5] == "http:" or markup[:6] == "https:":
                 # TODO: This is ugly but I couldn't get it to work in
                 # Python 3 otherwise.
                 if ((isinstance(markup, bytes) and not b' ' in markup)
-                    or (isinstance(markup, unicode) and not u' ' in markup)):
+                    or (isinstance(markup, str) and not ' ' in markup)):
+                    if isinstance(markup, str):
+                        markup = markup.encode("utf8")
                     warnings.warn(
                         '"%s" looks like a URL. Beautiful Soup is not an HTTP client. You should probably use an HTTP client to get the document behind the URL, and feed that document to Beautiful Soup.' % markup)
 
         for (self.markup, self.original_encoding, self.declared_html_encoding,
          self.contains_replacement_characters) in (
-            self.builder.prepare_markup(markup, from_encoding)):
+             self.builder.prepare_markup(
+                 markup, from_encoding, exclude_encodings=exclude_encodings)):
             self.reset()
             try:
                 self._feed()
@@ -203,6 +222,16 @@
         self.markup = None
         self.builder.soup = None
 
+    def __copy__(self):
+        return type(self)(self.encode(), builder=self.builder)
+
+    def __getstate__(self):
+        # Frequently a tree builder can't be pickled.
+        d = dict(self.__dict__)
+        if 'builder' in d and not self.builder.picklable:
+            del d['builder']
+        return d
+
     def _feed(self):
         # Convert the document to Unicode.
         self.builder.reset()
@@ -229,9 +258,7 @@
 
     def new_string(self, s, subclass=NavigableString):
         """Create a new NavigableString associated with this soup."""
-        navigable = subclass(s)
-        navigable.setup()
-        return navigable
+        return subclass(s)
 
     def insert_before(self, successor):
         raise NotImplementedError("BeautifulSoup objects don't support insert_before().")
@@ -259,7 +286,7 @@
 
     def endData(self, containerClass=NavigableString):
         if self.current_data:
-            current_data = u''.join(self.current_data)
+            current_data = ''.join(self.current_data)
             # If whitespace is not preserved, and this string contains
             # nothing but ASCII spaces, replace it with a single space
             # or newline.
@@ -290,14 +317,49 @@
     def object_was_parsed(self, o, parent=None, most_recent_element=None):
         """Add an object to the parse tree."""
         parent = parent or self.currentTag
-        most_recent_element = most_recent_element or self._most_recent_element
-        o.setup(parent, most_recent_element)
+        previous_element = most_recent_element or self._most_recent_element
 
-        if most_recent_element is not None:
-            most_recent_element.next_element = o
+        next_element = previous_sibling = next_sibling = None
+        if isinstance(o, Tag):
+            next_element = o.next_element
+            next_sibling = o.next_sibling
+            previous_sibling = o.previous_sibling
+            if not previous_element:
+                previous_element = o.previous_element
+
+        o.setup(parent, previous_element, next_element, previous_sibling, next_sibling)
+
         self._most_recent_element = o
         parent.contents.append(o)
 
+        if parent.next_sibling:
+            # This node is being inserted into an element that has
+            # already been parsed. Deal with any dangling references.
+            index = parent.contents.index(o)
+            if index == 0:
+                previous_element = parent
+                previous_sibling = None
+            else:
+                previous_element = previous_sibling = parent.contents[index-1]
+            if index == len(parent.contents)-1:
+                next_element = parent.next_sibling
+                next_sibling = None
+            else:
+                next_element = next_sibling = parent.contents[index+1]
+
+            o.previous_element = previous_element
+            if previous_element:
+                previous_element.next_element = o
+            o.next_element = next_element
+            if next_element:
+                next_element.previous_element = o
+            o.next_sibling = next_sibling
+            if next_sibling:
+                next_sibling.previous_sibling = o
+            o.previous_sibling = previous_sibling
+            if previous_sibling:
+                previous_sibling.next_sibling = o
+
     def _popToTag(self, name, nsprefix=None, inclusivePop=True):
         """Pops the tag stack up to and including the most recent
         instance of the given tag. If inclusivePop is false, pops the tag
@@ -367,9 +429,9 @@
             encoding_part = ''
             if eventual_encoding != None:
                 encoding_part = ' encoding="%s"' % eventual_encoding
-            prefix = u'<?xml version="1.0"%s?>\n' % encoding_part
+            prefix = '<?xml version="1.0"%s?>\n' % encoding_part
         else:
-            prefix = u''
+            prefix = ''
         if not pretty_print:
             indent_level = None
         else:
@@ -403,4 +465,4 @@
 if __name__ == '__main__':
     import sys
     soup = BeautifulSoup(sys.stdin)
-    print soup.prettify()
+    print(soup.prettify())
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/builder/__init__.py b/import-layers/yocto-poky/bitbake/lib/bs4/builder/__init__.py
index 740f5f2..6ccd4d2 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/builder/__init__.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/builder/__init__.py
@@ -80,9 +80,12 @@
 class TreeBuilder(object):
     """Turn a document into a Beautiful Soup object tree."""
 
+    NAME = "[Unknown tree builder]"
+    ALTERNATE_NAMES = []
     features = []
 
     is_xml = False
+    picklable = False
     preserve_whitespace_tags = set()
     empty_element_tags = None # A tag will be considered an empty-element
                               # tag when and only when it has no contents.
@@ -153,13 +156,13 @@
             universal = self.cdata_list_attributes.get('*', [])
             tag_specific = self.cdata_list_attributes.get(
                 tag_name.lower(), None)
-            for attr in attrs.keys():
+            for attr in list(attrs.keys()):
                 if attr in universal or (tag_specific and attr in tag_specific):
                     # We have a "class"-type attribute whose string
                     # value is a whitespace-separated list of
                     # values. Split it into a list.
                     value = attrs[attr]
-                    if isinstance(value, basestring):
+                    if isinstance(value, str):
                         values = whitespace_re.split(value)
                     else:
                         # html5lib sometimes calls setAttributes twice
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/builder/_html5lib.py b/import-layers/yocto-poky/bitbake/lib/bs4/builder/_html5lib.py
index 7de36ae7..f0e5924 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/builder/_html5lib.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/builder/_html5lib.py
@@ -2,6 +2,7 @@
     'HTML5TreeBuilder',
     ]
 
+from pdb import set_trace
 import warnings
 from bs4.builder import (
     PERMISSIVE,
@@ -9,7 +10,10 @@
     HTML_5,
     HTMLTreeBuilder,
     )
-from bs4.element import NamespacedAttribute
+from bs4.element import (
+    NamespacedAttribute,
+    whitespace_re,
+)
 import html5lib
 from html5lib.constants import namespaces
 from bs4.element import (
@@ -22,11 +26,20 @@
 class HTML5TreeBuilder(HTMLTreeBuilder):
     """Use html5lib to build a tree."""
 
-    features = ['html5lib', PERMISSIVE, HTML_5, HTML]
+    NAME = "html5lib"
 
-    def prepare_markup(self, markup, user_specified_encoding):
+    features = [NAME, PERMISSIVE, HTML_5, HTML]
+
+    def prepare_markup(self, markup, user_specified_encoding,
+                       document_declared_encoding=None, exclude_encodings=None):
         # Store the user-specified encoding for use later on.
         self.user_specified_encoding = user_specified_encoding
+
+        # document_declared_encoding and exclude_encodings aren't used
+        # ATM because the html5lib TreeBuilder doesn't use
+        # UnicodeDammit.
+        if exclude_encodings:
+            warnings.warn("You provided a value for exclude_encoding, but the html5lib tree builder doesn't support exclude_encoding.")
         yield (markup, None, None, False)
 
     # These methods are defined by Beautiful Soup.
@@ -37,7 +50,7 @@
         doc = parser.parse(markup, encoding=self.user_specified_encoding)
 
         # Set the character encoding detected by the tokenizer.
-        if isinstance(markup, unicode):
+        if isinstance(markup, str):
             # We need to special-case this because html5lib sets
             # charEncoding to UTF-8 if it gets Unicode input.
             doc.original_encoding = None
@@ -51,7 +64,7 @@
 
     def test_fragment_to_document(self, fragment):
         """See `TreeBuilder`."""
-        return u'<html><head></head><body>%s</body></html>' % fragment
+        return '<html><head></head><body>%s</body></html>' % fragment
 
 
 class TreeBuilderForHtml5lib(html5lib.treebuilders._base.TreeBuilder):
@@ -101,7 +114,16 @@
     def __iter__(self):
         return list(self.attrs.items()).__iter__()
     def __setitem__(self, name, value):
-        "set attr", name, value
+        # If this attribute is a multi-valued attribute for this element,
+        # turn its value into a list.
+        list_attr = HTML5TreeBuilder.cdata_list_attributes
+        if (name in list_attr['*']
+            or (self.element.name in list_attr
+                and name in list_attr[self.element.name])):
+            # A node that is being cloned may have already undergone
+            # this procedure.
+            if not isinstance(value, list):
+                value = whitespace_re.split(value)
         self.element[name] = value
     def items(self):
         return list(self.attrs.items())
@@ -124,7 +146,7 @@
 
     def appendChild(self, node):
         string_child = child = None
-        if isinstance(node, basestring):
+        if isinstance(node, str):
             # Some other piece of code decided to pass in a string
             # instead of creating a TextElement object to contain the
             # string.
@@ -139,7 +161,7 @@
         else:
             child = node.element
 
-        if not isinstance(child, basestring) and child.parent is not None:
+        if not isinstance(child, str) and child.parent is not None:
             node.element.extract()
 
         if (string_child and self.element.contents
@@ -152,7 +174,7 @@
             old_element.replace_with(new_element)
             self.soup._most_recent_element = new_element
         else:
-            if isinstance(node, basestring):
+            if isinstance(node, str):
                 # Create a brand new NavigableString from this string.
                 child = self.soup.new_string(node)
 
@@ -161,6 +183,12 @@
             # immediately after the parent, if it has no children.)
             if self.element.contents:
                 most_recent_element = self.element._last_descendant(False)
+            elif self.element.next_element is not None:
+                # Something from further ahead in the parse tree is
+                # being inserted into this earlier element. This is
+                # very annoying because it means an expensive search
+                # for the last element in the tree.
+                most_recent_element = self.soup._last_descendant()
             else:
                 most_recent_element = self.element
 
@@ -172,6 +200,7 @@
         return AttrList(self.element)
 
     def setAttributes(self, attributes):
+
         if attributes is not None and len(attributes) > 0:
 
             converted_attributes = []
@@ -183,7 +212,7 @@
 
             self.soup.builder._replace_cdata_list_attribute_values(
                 self.name, attributes)
-            for name, value in attributes.items():
+            for name, value in list(attributes.items()):
                 self.element[name] = value
 
             # The attributes may contain variables that need substitution.
@@ -218,6 +247,9 @@
 
     def reparentChildren(self, new_parent):
         """Move all of this tag's children into another tag."""
+        # print "MOVE", self.element.contents
+        # print "FROM", self.element
+        # print "TO", new_parent.element
         element = self.element
         new_parent_element = new_parent.element
         # Determine what this tag's next_element will be once all the children
@@ -236,17 +268,28 @@
             new_parents_last_descendant_next_element = new_parent_element.next_element
 
         to_append = element.contents
-        append_after = new_parent.element.contents
+        append_after = new_parent_element.contents
         if len(to_append) > 0:
             # Set the first child's previous_element and previous_sibling
             # to elements within the new parent
             first_child = to_append[0]
-            first_child.previous_element = new_parents_last_descendant
+            if new_parents_last_descendant:
+                first_child.previous_element = new_parents_last_descendant
+            else:
+                first_child.previous_element = new_parent_element
             first_child.previous_sibling = new_parents_last_child
+            if new_parents_last_descendant:
+                new_parents_last_descendant.next_element = first_child
+            else:
+                new_parent_element.next_element = first_child
+            if new_parents_last_child:
+                new_parents_last_child.next_sibling = first_child
 
             # Fix the last child's next_element and next_sibling
             last_child = to_append[-1]
             last_child.next_element = new_parents_last_descendant_next_element
+            if new_parents_last_descendant_next_element:
+                new_parents_last_descendant_next_element.previous_element = last_child
             last_child.next_sibling = None
 
         for child in to_append:
@@ -257,6 +300,10 @@
         element.contents = []
         element.next_element = final_next_element
 
+        # print "DONE WITH MOVE"
+        # print "FROM", self.element
+        # print "TO", new_parent_element
+
     def cloneNode(self):
         tag = self.soup.new_tag(self.element.name, self.namespace)
         node = Element(tag, self.soup, self.namespace)
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/builder/_htmlparser.py b/import-layers/yocto-poky/bitbake/lib/bs4/builder/_htmlparser.py
index ca8d8b8..bb0a63f 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/builder/_htmlparser.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/builder/_htmlparser.py
@@ -4,10 +4,16 @@
     'HTMLParserTreeBuilder',
     ]
 
-from HTMLParser import (
-    HTMLParser,
-    HTMLParseError,
-    )
+from html.parser import HTMLParser
+
+try:
+    from html.parser import HTMLParseError
+except ImportError as e:
+    # HTMLParseError is removed in Python 3.5. Since it can never be
+    # thrown in 3.5, we can just define our own class as a placeholder.
+    class HTMLParseError(Exception):
+        pass
+
 import sys
 import warnings
 
@@ -19,10 +25,10 @@
 # At the end of this file, we monkeypatch HTMLParser so that
 # strict=True works well on Python 3.2.2.
 major, minor, release = sys.version_info[:3]
-CONSTRUCTOR_TAKES_STRICT = (
-    major > 3
-    or (major == 3 and minor > 2)
-    or (major == 3 and minor == 2 and release >= 3))
+CONSTRUCTOR_TAKES_STRICT = major == 3 and minor == 2 and release >= 3
+CONSTRUCTOR_STRICT_IS_DEPRECATED = major == 3 and minor == 3
+CONSTRUCTOR_TAKES_CONVERT_CHARREFS = major == 3 and minor >= 4
+
 
 from bs4.element import (
     CData,
@@ -63,7 +69,8 @@
 
     def handle_charref(self, name):
         # XXX workaround for a bug in HTMLParser. Remove this once
-        # it's fixed.
+        # it's fixed in all supported versions.
+        # http://bugs.python.org/issue13633
         if name.startswith('x'):
             real_name = int(name.lstrip('x'), 16)
         elif name.startswith('X'):
@@ -72,9 +79,9 @@
             real_name = int(name)
 
         try:
-            data = unichr(real_name)
-        except (ValueError, OverflowError), e:
-            data = u"\N{REPLACEMENT CHARACTER}"
+            data = chr(real_name)
+        except (ValueError, OverflowError) as e:
+            data = "\N{REPLACEMENT CHARACTER}"
 
         self.handle_data(data)
 
@@ -113,14 +120,6 @@
 
     def handle_pi(self, data):
         self.soup.endData()
-        if data.endswith("?") and data.lower().startswith("xml"):
-            # "An XHTML processing instruction using the trailing '?'
-            # will cause the '?' to be included in data." - HTMLParser
-            # docs.
-            #
-            # Strip the question mark so we don't end up with two
-            # question marks.
-            data = data[:-1]
         self.soup.handle_data(data)
         self.soup.endData(ProcessingInstruction)
 
@@ -128,26 +127,31 @@
 class HTMLParserTreeBuilder(HTMLTreeBuilder):
 
     is_xml = False
-    features = [HTML, STRICT, HTMLPARSER]
+    picklable = True
+    NAME = HTMLPARSER
+    features = [NAME, HTML, STRICT]
 
     def __init__(self, *args, **kwargs):
-        if CONSTRUCTOR_TAKES_STRICT:
+        if CONSTRUCTOR_TAKES_STRICT and not CONSTRUCTOR_STRICT_IS_DEPRECATED:
             kwargs['strict'] = False
+        if CONSTRUCTOR_TAKES_CONVERT_CHARREFS:
+            kwargs['convert_charrefs'] = False
         self.parser_args = (args, kwargs)
 
     def prepare_markup(self, markup, user_specified_encoding=None,
-                       document_declared_encoding=None):
+                       document_declared_encoding=None, exclude_encodings=None):
         """
         :return: A 4-tuple (markup, original encoding, encoding
         declared within markup, whether any characters had to be
         replaced with REPLACEMENT CHARACTER).
         """
-        if isinstance(markup, unicode):
+        if isinstance(markup, str):
             yield (markup, None, None, False)
             return
 
         try_encodings = [user_specified_encoding, document_declared_encoding]
-        dammit = UnicodeDammit(markup, try_encodings, is_html=True)
+        dammit = UnicodeDammit(markup, try_encodings, is_html=True,
+                               exclude_encodings=exclude_encodings)
         yield (dammit.markup, dammit.original_encoding,
                dammit.declared_html_encoding,
                dammit.contains_replacement_characters)
@@ -158,7 +162,7 @@
         parser.soup = self.soup
         try:
             parser.feed(markup)
-        except HTMLParseError, e:
+        except HTMLParseError as e:
             warnings.warn(RuntimeWarning(
                 "Python's built-in HTMLParser cannot parse the given document. This is not a bug in Beautiful Soup. The best solution is to install an external parser (lxml or html5lib), and use Beautiful Soup with that parser. See http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser for help."))
             raise e
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/builder/_lxml.py b/import-layers/yocto-poky/bitbake/lib/bs4/builder/_lxml.py
index fa5d498..9c6c14e 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/builder/_lxml.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/builder/_lxml.py
@@ -4,10 +4,15 @@
     ]
 
 from io import BytesIO
-from StringIO import StringIO
+from io import StringIO
 import collections
 from lxml import etree
-from bs4.element import Comment, Doctype, NamespacedAttribute
+from bs4.element import (
+    Comment,
+    Doctype,
+    NamespacedAttribute,
+    ProcessingInstruction,
+)
 from bs4.builder import (
     FAST,
     HTML,
@@ -25,8 +30,11 @@
 
     is_xml = True
 
+    NAME = "lxml-xml"
+    ALTERNATE_NAMES = ["xml"]
+
     # Well, it's permissive by XML parser standards.
-    features = [LXML, XML, FAST, PERMISSIVE]
+    features = [NAME, LXML, XML, FAST, PERMISSIVE]
 
     CHUNK_SIZE = 512
 
@@ -70,6 +78,7 @@
             return (None, tag)
 
     def prepare_markup(self, markup, user_specified_encoding=None,
+                       exclude_encodings=None,
                        document_declared_encoding=None):
         """
         :yield: A series of 4-tuples.
@@ -78,12 +87,12 @@
 
         Each 4-tuple represents a strategy for parsing the document.
         """
-        if isinstance(markup, unicode):
+        if isinstance(markup, str):
             # We were given Unicode. Maybe lxml can parse Unicode on
             # this system?
             yield markup, None, document_declared_encoding, False
 
-        if isinstance(markup, unicode):
+        if isinstance(markup, str):
             # No, apparently not. Convert the Unicode to UTF-8 and
             # tell lxml to parse it as UTF-8.
             yield (markup.encode("utf8"), "utf8",
@@ -95,14 +104,15 @@
         # the document as each one in turn.
         is_html = not self.is_xml
         try_encodings = [user_specified_encoding, document_declared_encoding]
-        detector = EncodingDetector(markup, try_encodings, is_html)
+        detector = EncodingDetector(
+            markup, try_encodings, is_html, exclude_encodings)
         for encoding in detector.encodings:
             yield (detector.markup, encoding, document_declared_encoding, False)
 
     def feed(self, markup):
         if isinstance(markup, bytes):
             markup = BytesIO(markup)
-        elif isinstance(markup, unicode):
+        elif isinstance(markup, str):
             markup = StringIO(markup)
 
         # Call feed() at least once, even if the markup is empty,
@@ -117,7 +127,7 @@
                 if len(data) != 0:
                     self.parser.feed(data)
             self.parser.close()
-        except (UnicodeDecodeError, LookupError, etree.ParserError), e:
+        except (UnicodeDecodeError, LookupError, etree.ParserError) as e:
             raise ParserRejectedMarkup(str(e))
 
     def close(self):
@@ -135,12 +145,12 @@
             self.nsmaps.append(None)
         elif len(nsmap) > 0:
             # A new namespace mapping has come into play.
-            inverted_nsmap = dict((value, key) for key, value in nsmap.items())
+            inverted_nsmap = dict((value, key) for key, value in list(nsmap.items()))
             self.nsmaps.append(inverted_nsmap)
             # Also treat the namespace mapping as a set of attributes on the
             # tag, so we can recreate it later.
             attrs = attrs.copy()
-            for prefix, namespace in nsmap.items():
+            for prefix, namespace in list(nsmap.items()):
                 attribute = NamespacedAttribute(
                     "xmlns", prefix, "http://www.w3.org/2000/xmlns/")
                 attrs[attribute] = namespace
@@ -149,7 +159,7 @@
         # from lxml with namespaces attached to their names, and
         # turn then into NamespacedAttribute objects.
         new_attrs = {}
-        for attr, value in attrs.items():
+        for attr, value in list(attrs.items()):
             namespace, attr = self._getNsTag(attr)
             if namespace is None:
                 new_attrs[attr] = value
@@ -189,7 +199,9 @@
             self.nsmaps.pop()
 
     def pi(self, target, data):
-        pass
+        self.soup.endData()
+        self.soup.handle_data(target + ' ' + data)
+        self.soup.endData(ProcessingInstruction)
 
     def data(self, content):
         self.soup.handle_data(content)
@@ -207,12 +219,15 @@
 
     def test_fragment_to_document(self, fragment):
         """See `TreeBuilder`."""
-        return u'<?xml version="1.0" encoding="utf-8"?>\n%s' % fragment
+        return '<?xml version="1.0" encoding="utf-8"?>\n%s' % fragment
 
 
 class LXMLTreeBuilder(HTMLTreeBuilder, LXMLTreeBuilderForXML):
 
-    features = [LXML, HTML, FAST, PERMISSIVE]
+    NAME = LXML
+    ALTERNATE_NAMES = ["lxml-html"]
+
+    features = ALTERNATE_NAMES + [NAME, HTML, FAST, PERMISSIVE]
     is_xml = False
 
     def default_parser(self, encoding):
@@ -224,10 +239,10 @@
             self.parser = self.parser_for(encoding)
             self.parser.feed(markup)
             self.parser.close()
-        except (UnicodeDecodeError, LookupError, etree.ParserError), e:
+        except (UnicodeDecodeError, LookupError, etree.ParserError) as e:
             raise ParserRejectedMarkup(str(e))
 
 
     def test_fragment_to_document(self, fragment):
         """See `TreeBuilder`."""
-        return u'<html><body>%s</body></html>' % fragment
+        return '<html><body>%s</body></html>' % fragment
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/dammit.py b/import-layers/yocto-poky/bitbake/lib/bs4/dammit.py
index 59640b7..68d419f 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/dammit.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/dammit.py
@@ -3,12 +3,14 @@
 
 This library converts a bytestream to Unicode through any means
 necessary. It is heavily based on code from Mark Pilgrim's Universal
-Feed Parser. It works best on XML and XML, but it does not rewrite the
+Feed Parser. It works best on XML and HTML, but it does not rewrite the
 XML or HTML to reflect a new encoding; that's the tree builder's job.
 """
+__license__ = "MIT"
 
+from pdb import set_trace
 import codecs
-from htmlentitydefs import codepoint2name
+from html.entities import codepoint2name
 import re
 import logging
 import string
@@ -56,7 +58,7 @@
         reverse_lookup = {}
         characters_for_re = []
         for codepoint, name in list(codepoint2name.items()):
-            character = unichr(codepoint)
+            character = chr(codepoint)
             if codepoint != 34:
                 # There's no point in turning the quotation mark into
                 # &quot;, unless it happens within an attribute value, which
@@ -212,8 +214,11 @@
 
     5. Windows-1252.
     """
-    def __init__(self, markup, override_encodings=None, is_html=False):
+    def __init__(self, markup, override_encodings=None, is_html=False,
+                 exclude_encodings=None):
         self.override_encodings = override_encodings or []
+        exclude_encodings = exclude_encodings or []
+        self.exclude_encodings = set([x.lower() for x in exclude_encodings])
         self.chardet_encoding = None
         self.is_html = is_html
         self.declared_encoding = None
@@ -224,6 +229,8 @@
     def _usable(self, encoding, tried):
         if encoding is not None:
             encoding = encoding.lower()
+            if encoding in self.exclude_encodings:
+                return False
             if encoding not in tried:
                 tried.add(encoding)
                 return True
@@ -266,6 +273,9 @@
     def strip_byte_order_mark(cls, data):
         """If a byte-order mark is present, strip it and return the encoding it implies."""
         encoding = None
+        if isinstance(data, str):
+            # Unicode data cannot have a byte-order mark.
+            return data, encoding
         if (len(data) >= 4) and (data[:2] == b'\xfe\xff') \
                and (data[2:4] != '\x00\x00'):
             encoding = 'utf-16be'
@@ -306,7 +316,7 @@
             declared_encoding_match = html_meta_re.search(markup, endpos=html_endpos)
         if declared_encoding_match is not None:
             declared_encoding = declared_encoding_match.groups()[0].decode(
-                'ascii')
+                'ascii', 'replace')
         if declared_encoding:
             return declared_encoding.lower()
         return None
@@ -331,18 +341,19 @@
         ]
 
     def __init__(self, markup, override_encodings=[],
-                 smart_quotes_to=None, is_html=False):
+                 smart_quotes_to=None, is_html=False, exclude_encodings=[]):
         self.smart_quotes_to = smart_quotes_to
         self.tried_encodings = []
         self.contains_replacement_characters = False
         self.is_html = is_html
 
-        self.detector = EncodingDetector(markup, override_encodings, is_html)
+        self.detector = EncodingDetector(
+            markup, override_encodings, is_html, exclude_encodings)
 
         # Short-circuit if the data is in Unicode to begin with.
-        if isinstance(markup, unicode) or markup == '':
+        if isinstance(markup, str) or markup == '':
             self.markup = markup
-            self.unicode_markup = unicode(markup)
+            self.unicode_markup = str(markup)
             self.original_encoding = None
             return
 
@@ -425,7 +436,7 @@
     def _to_unicode(self, data, encoding, errors="strict"):
         '''Given a string and its encoding, decodes the string into Unicode.
         %encoding is a string recognized by encodings.aliases'''
-        return unicode(data, encoding, errors)
+        return str(data, encoding, errors)
 
     @property
     def declared_html_encoding(self):
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/diagnose.py b/import-layers/yocto-poky/bitbake/lib/bs4/diagnose.py
index 4d0b00a..083395f 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/diagnose.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/diagnose.py
@@ -1,7 +1,10 @@
 """Diagnostic functions, mainly for use when doing tech support."""
+
+__license__ = "MIT"
+
 import cProfile
-from StringIO import StringIO
-from HTMLParser import HTMLParser
+from io import StringIO
+from html.parser import HTMLParser
 import bs4
 from bs4 import BeautifulSoup, __version__
 from bs4.builder import builder_registry
@@ -17,8 +20,8 @@
 
 def diagnose(data):
     """Diagnostic suite for isolating common problems."""
-    print "Diagnostic running on Beautiful Soup %s" % __version__
-    print "Python version %s" % sys.version
+    print("Diagnostic running on Beautiful Soup %s" % __version__)
+    print("Python version %s" % sys.version)
 
     basic_parsers = ["html.parser", "html5lib", "lxml"]
     for name in basic_parsers:
@@ -27,44 +30,53 @@
                 break
         else:
             basic_parsers.remove(name)
-            print (
+            print((
                 "I noticed that %s is not installed. Installing it may help." %
-                name)
+                name))
 
     if 'lxml' in basic_parsers:
         basic_parsers.append(["lxml", "xml"])
-        from lxml import etree
-        print "Found lxml version %s" % ".".join(map(str,etree.LXML_VERSION))
+        try:
+            from lxml import etree
+            print("Found lxml version %s" % ".".join(map(str,etree.LXML_VERSION)))
+        except ImportError as e:
+            print (
+                "lxml is not installed or couldn't be imported.")
+
 
     if 'html5lib' in basic_parsers:
-        import html5lib
-        print "Found html5lib version %s" % html5lib.__version__
+        try:
+            import html5lib
+            print("Found html5lib version %s" % html5lib.__version__)
+        except ImportError as e:
+            print (
+                "html5lib is not installed or couldn't be imported.")
 
     if hasattr(data, 'read'):
         data = data.read()
     elif os.path.exists(data):
-        print '"%s" looks like a filename. Reading data from the file.' % data
+        print('"%s" looks like a filename. Reading data from the file.' % data)
         data = open(data).read()
     elif data.startswith("http:") or data.startswith("https:"):
-        print '"%s" looks like a URL. Beautiful Soup is not an HTTP client.' % data
-        print "You need to use some other library to get the document behind the URL, and feed that document to Beautiful Soup."
+        print('"%s" looks like a URL. Beautiful Soup is not an HTTP client.' % data)
+        print("You need to use some other library to get the document behind the URL, and feed that document to Beautiful Soup.")
         return
-    print
+    print()
 
     for parser in basic_parsers:
-        print "Trying to parse your markup with %s" % parser
+        print("Trying to parse your markup with %s" % parser)
         success = False
         try:
             soup = BeautifulSoup(data, parser)
             success = True
-        except Exception, e:
-            print "%s could not parse the markup." % parser
+        except Exception as e:
+            print("%s could not parse the markup." % parser)
             traceback.print_exc()
         if success:
-            print "Here's what %s did with the markup:" % parser
-            print soup.prettify()
+            print("Here's what %s did with the markup:" % parser)
+            print(soup.prettify())
 
-        print "-" * 80
+        print("-" * 80)
 
 def lxml_trace(data, html=True, **kwargs):
     """Print out the lxml events that occur during parsing.
@@ -74,7 +86,7 @@
     """
     from lxml import etree
     for event, element in etree.iterparse(StringIO(data), html=html, **kwargs):
-        print("%s, %4s, %s" % (event, element.tag, element.text))
+        print(("%s, %4s, %s" % (event, element.tag, element.text)))
 
 class AnnouncingParser(HTMLParser):
     """Announces HTMLParser parse events, without doing anything else."""
@@ -156,9 +168,9 @@
 
 def benchmark_parsers(num_elements=100000):
     """Very basic head-to-head performance benchmark."""
-    print "Comparative parser benchmark on Beautiful Soup %s" % __version__
+    print("Comparative parser benchmark on Beautiful Soup %s" % __version__)
     data = rdoc(num_elements)
-    print "Generated a large invalid HTML document (%d bytes)." % len(data)
+    print("Generated a large invalid HTML document (%d bytes)." % len(data))
     
     for parser in ["lxml", ["lxml", "html"], "html5lib", "html.parser"]:
         success = False
@@ -167,24 +179,24 @@
             soup = BeautifulSoup(data, parser)
             b = time.time()
             success = True
-        except Exception, e:
-            print "%s could not parse the markup." % parser
+        except Exception as e:
+            print("%s could not parse the markup." % parser)
             traceback.print_exc()
         if success:
-            print "BS4+%s parsed the markup in %.2fs." % (parser, b-a)
+            print("BS4+%s parsed the markup in %.2fs." % (parser, b-a))
 
     from lxml import etree
     a = time.time()
     etree.HTML(data)
     b = time.time()
-    print "Raw lxml parsed the markup in %.2fs." % (b-a)
+    print("Raw lxml parsed the markup in %.2fs." % (b-a))
 
     import html5lib
     parser = html5lib.HTMLParser()
     a = time.time()
     parser.parse(data)
     b = time.time()
-    print "Raw html5lib parsed the markup in %.2fs." % (b-a)
+    print("Raw html5lib parsed the markup in %.2fs." % (b-a))
 
 def profile(num_elements=100000, parser="lxml"):
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/element.py b/import-layers/yocto-poky/bitbake/lib/bs4/element.py
index da9afdf..0e62c2e 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/element.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/element.py
@@ -1,3 +1,6 @@
+__license__ = "MIT"
+
+from pdb import set_trace
 import collections
 import re
 import sys
@@ -21,22 +24,22 @@
     return alias
 
 
-class NamespacedAttribute(unicode):
+class NamespacedAttribute(str):
 
     def __new__(cls, prefix, name, namespace=None):
         if name is None:
-            obj = unicode.__new__(cls, prefix)
+            obj = str.__new__(cls, prefix)
         elif prefix is None:
             # Not really namespaced.
-            obj = unicode.__new__(cls, name)
+            obj = str.__new__(cls, name)
         else:
-            obj = unicode.__new__(cls, prefix + ":" + name)
+            obj = str.__new__(cls, prefix + ":" + name)
         obj.prefix = prefix
         obj.name = name
         obj.namespace = namespace
         return obj
 
-class AttributeValueWithCharsetSubstitution(unicode):
+class AttributeValueWithCharsetSubstitution(str):
     """A stand-in object for a character encoding specified in HTML."""
 
 class CharsetMetaAttributeValue(AttributeValueWithCharsetSubstitution):
@@ -47,7 +50,7 @@
     """
 
     def __new__(cls, original_value):
-        obj = unicode.__new__(cls, original_value)
+        obj = str.__new__(cls, original_value)
         obj.original_value = original_value
         return obj
 
@@ -70,9 +73,9 @@
         match = cls.CHARSET_RE.search(original_value)
         if match is None:
             # No substitution necessary.
-            return unicode.__new__(unicode, original_value)
+            return str.__new__(str, original_value)
 
-        obj = unicode.__new__(cls, original_value)
+        obj = str.__new__(cls, original_value)
         obj.original_value = original_value
         return obj
 
@@ -152,7 +155,7 @@
 
     def format_string(self, s, formatter='minimal'):
         """Format the given string using the given formatter."""
-        if not callable(formatter):
+        if not isinstance(formatter, collections.Callable):
             formatter = self._formatter_for_name(formatter)
         if formatter is None:
             output = s
@@ -185,24 +188,40 @@
             return self.HTML_FORMATTERS.get(
                 name, HTMLAwareEntitySubstitution.substitute_xml)
 
-    def setup(self, parent=None, previous_element=None):
+    def setup(self, parent=None, previous_element=None, next_element=None,
+              previous_sibling=None, next_sibling=None):
         """Sets up the initial relations between this element and
         other elements."""
         self.parent = parent
+
         self.previous_element = previous_element
         if previous_element is not None:
             self.previous_element.next_element = self
-        self.next_element = None
-        self.previous_sibling = None
-        self.next_sibling = None
-        if self.parent is not None and self.parent.contents:
-            self.previous_sibling = self.parent.contents[-1]
+
+        self.next_element = next_element
+        if self.next_element:
+            self.next_element.previous_element = self
+
+        self.next_sibling = next_sibling
+        if self.next_sibling:
+            self.next_sibling.previous_sibling = self
+
+        if (not previous_sibling
+            and self.parent is not None and self.parent.contents):
+            previous_sibling = self.parent.contents[-1]
+
+        self.previous_sibling = previous_sibling
+        if previous_sibling:
             self.previous_sibling.next_sibling = self
 
     nextSibling = _alias("next_sibling")  # BS3
     previousSibling = _alias("previous_sibling")  # BS3
 
     def replace_with(self, replace_with):
+        if not self.parent:
+            raise ValueError(
+                "Cannot replace one element with another when the"
+                "element to be replaced is not part of a tree.")
         if replace_with is self:
             return
         if replace_with is self.parent:
@@ -216,6 +235,10 @@
 
     def unwrap(self):
         my_parent = self.parent
+        if not self.parent:
+            raise ValueError(
+                "Cannot replace an element with its contents when that"
+                "element is not part of a tree.")
         my_index = self.parent.index(self)
         self.extract()
         for child in reversed(self.contents[:]):
@@ -240,17 +263,20 @@
         last_child = self._last_descendant()
         next_element = last_child.next_element
 
-        if self.previous_element is not None:
+        if (self.previous_element is not None and
+            self.previous_element is not next_element):
             self.previous_element.next_element = next_element
-        if next_element is not None:
+        if next_element is not None and next_element is not self.previous_element:
             next_element.previous_element = self.previous_element
         self.previous_element = None
         last_child.next_element = None
 
         self.parent = None
-        if self.previous_sibling is not None:
+        if (self.previous_sibling is not None
+            and self.previous_sibling is not self.next_sibling):
             self.previous_sibling.next_sibling = self.next_sibling
-        if self.next_sibling is not None:
+        if (self.next_sibling is not None
+            and self.next_sibling is not self.previous_sibling):
             self.next_sibling.previous_sibling = self.previous_sibling
         self.previous_sibling = self.next_sibling = None
         return self
@@ -263,16 +289,18 @@
             last_child = self
             while isinstance(last_child, Tag) and last_child.contents:
                 last_child = last_child.contents[-1]
-        if not accept_self and last_child == self:
+        if not accept_self and last_child is self:
             last_child = None
         return last_child
     # BS3: Not part of the API!
     _lastRecursiveChild = _last_descendant
 
     def insert(self, position, new_child):
+        if new_child is None:
+            raise ValueError("Cannot insert None into a tag.")
         if new_child is self:
             raise ValueError("Cannot insert a tag into itself.")
-        if (isinstance(new_child, basestring)
+        if (isinstance(new_child, str)
             and not isinstance(new_child, NavigableString)):
             new_child = NavigableString(new_child)
 
@@ -478,6 +506,10 @@
     def _find_all(self, name, attrs, text, limit, generator, **kwargs):
         "Iterates over a generator looking for things that match."
 
+        if text is None and 'string' in kwargs:
+            text = kwargs['string']
+            del kwargs['string']
+
         if isinstance(name, SoupStrainer):
             strainer = name
         else:
@@ -489,7 +521,7 @@
                 result = (element for element in generator
                           if isinstance(element, Tag))
                 return ResultSet(strainer, result)
-            elif isinstance(name, basestring):
+            elif isinstance(name, str):
                 # Optimization to find all tags with a given name.
                 result = (element for element in generator
                           if isinstance(element, Tag)
@@ -548,17 +580,17 @@
 
     # Methods for supporting CSS selectors.
 
-    tag_name_re = re.compile('^[a-z0-9]+$')
+    tag_name_re = re.compile('^[a-zA-Z0-9][-.a-zA-Z0-9:_]*$')
 
-    # /^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
-    #   \---/  \---/\-------------/    \-------/
-    #     |      |         |               |
-    #     |      |         |           The value
-    #     |      |    ~,|,^,$,* or =
-    #     |   Attribute
+    # /^([a-zA-Z0-9][-.a-zA-Z0-9:_]*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
+    #   \---------------------------/  \---/\-------------/    \-------/
+    #     |                              |         |               |
+    #     |                              |         |           The value
+    #     |                              |    ~,|,^,$,* or =
+    #     |                           Attribute
     #    Tag
     attribselect_re = re.compile(
-        r'^(?P<tag>\w+)?\[(?P<attribute>\w+)(?P<operator>[=~\|\^\$\*]?)' +
+        r'^(?P<tag>[a-zA-Z0-9][-.a-zA-Z0-9:_]*)?\[(?P<attribute>[\w-]+)(?P<operator>[=~\|\^\$\*]?)' +
         r'=?"?(?P<value>[^\]"]*)"?\]$'
         )
 
@@ -640,7 +672,7 @@
         return self.parents
 
 
-class NavigableString(unicode, PageElement):
+class NavigableString(str, PageElement):
 
     PREFIX = ''
     SUFFIX = ''
@@ -653,15 +685,21 @@
         passed in to the superclass's __new__ or the superclass won't know
         how to handle non-ASCII characters.
         """
-        if isinstance(value, unicode):
-            return unicode.__new__(cls, value)
-        return unicode.__new__(cls, value, DEFAULT_OUTPUT_ENCODING)
+        if isinstance(value, str):
+            u = str.__new__(cls, value)
+        else:
+            u = str.__new__(cls, value, DEFAULT_OUTPUT_ENCODING)
+        u.setup()
+        return u
 
     def __copy__(self):
-        return self
+        """A copy of a NavigableString has the same contents and class
+        as the original, but it is not connected to the parse tree.
+        """
+        return type(self)(self)
 
     def __getnewargs__(self):
-        return (unicode(self),)
+        return (str(self),)
 
     def __getattr__(self, attr):
         """text.string gives you text. This is for backwards
@@ -701,23 +739,23 @@
 
 class CData(PreformattedString):
 
-    PREFIX = u'<![CDATA['
-    SUFFIX = u']]>'
+    PREFIX = '<![CDATA['
+    SUFFIX = ']]>'
 
 class ProcessingInstruction(PreformattedString):
 
-    PREFIX = u'<?'
-    SUFFIX = u'?>'
+    PREFIX = '<?'
+    SUFFIX = '>'
 
 class Comment(PreformattedString):
 
-    PREFIX = u'<!--'
-    SUFFIX = u'-->'
+    PREFIX = '<!--'
+    SUFFIX = '-->'
 
 
 class Declaration(PreformattedString):
-    PREFIX = u'<!'
-    SUFFIX = u'!>'
+    PREFIX = '<?'
+    SUFFIX = '?>'
 
 
 class Doctype(PreformattedString):
@@ -734,8 +772,8 @@
 
         return Doctype(value)
 
-    PREFIX = u'<!DOCTYPE '
-    SUFFIX = u'>\n'
+    PREFIX = '<!DOCTYPE '
+    SUFFIX = '>\n'
 
 
 class Tag(PageElement):
@@ -759,9 +797,12 @@
         self.prefix = prefix
         if attrs is None:
             attrs = {}
-        elif attrs and builder.cdata_list_attributes:
-            attrs = builder._replace_cdata_list_attribute_values(
-                self.name, attrs)
+        elif attrs:
+            if builder is not None and builder.cdata_list_attributes:
+                attrs = builder._replace_cdata_list_attribute_values(
+                    self.name, attrs)
+            else:
+                attrs = dict(attrs)
         else:
             attrs = dict(attrs)
         self.attrs = attrs
@@ -778,6 +819,18 @@
 
     parserClass = _alias("parser_class")  # BS3
 
+    def __copy__(self):
+        """A copy of a Tag is a new Tag, unconnected to the parse tree.
+        Its contents are a copy of the old Tag's contents.
+        """
+        clone = type(self)(None, self.builder, self.name, self.namespace,
+                           self.nsprefix, self.attrs)
+        for attr in ('can_be_empty_element', 'hidden'):
+            setattr(clone, attr, getattr(self, attr))
+        for child in self.contents:
+            clone.append(child.__copy__())
+        return clone
+
     @property
     def is_empty_element(self):
         """Is this tag an empty-element tag? (aka a self-closing tag)
@@ -843,7 +896,7 @@
         for string in self._all_strings(True):
             yield string
 
-    def get_text(self, separator=u"", strip=False,
+    def get_text(self, separator="", strip=False,
                  types=(NavigableString, CData)):
         """
         Get all child strings, concatenated using the given separator.
@@ -915,7 +968,7 @@
     def __contains__(self, x):
         return x in self.contents
 
-    def __nonzero__(self):
+    def __bool__(self):
         "A tag is non-None even if it has no contents."
         return True
 
@@ -971,15 +1024,25 @@
         as defined in __eq__."""
         return not self == other
 
-    def __repr__(self, encoding=DEFAULT_OUTPUT_ENCODING):
+    def __repr__(self, encoding="unicode-escape"):
         """Renders this tag as a string."""
-        return self.encode(encoding)
+        if PY3K:
+            # "The return value must be a string object", i.e. Unicode
+            return self.decode()
+        else:
+            # "The return value must be a string object", i.e. a bytestring.
+            # By convention, the return value of __repr__ should also be
+            # an ASCII string.
+            return self.encode(encoding)
 
     def __unicode__(self):
         return self.decode()
 
     def __str__(self):
-        return self.encode()
+        if PY3K:
+            return self.decode()
+        else:
+            return self.encode()
 
     if PY3K:
         __str__ = __repr__ = __unicode__
@@ -1014,7 +1077,7 @@
 
         # First off, turn a string formatter into a function. This
         # will stop the lookup from happening over and over again.
-        if not callable(formatter):
+        if not isinstance(formatter, collections.Callable):
             formatter = self._formatter_for_name(formatter)
 
         attrs = []
@@ -1025,8 +1088,8 @@
                 else:
                     if isinstance(val, list) or isinstance(val, tuple):
                         val = ' '.join(val)
-                    elif not isinstance(val, basestring):
-                        val = unicode(val)
+                    elif not isinstance(val, str):
+                        val = str(val)
                     elif (
                         isinstance(val, AttributeValueWithCharsetSubstitution)
                         and eventual_encoding is not None):
@@ -1034,7 +1097,7 @@
 
                     text = self.format_string(val, formatter)
                     decoded = (
-                        unicode(key) + '='
+                        str(key) + '='
                         + EntitySubstitution.quoted_attribute_value(text))
                 attrs.append(decoded)
         close = ''
@@ -1103,16 +1166,22 @@
                        formatter="minimal"):
         """Renders the contents of this tag as a Unicode string.
 
+        :param indent_level: Each line of the rendering will be
+           indented this many spaces.
+
         :param eventual_encoding: The tag is destined to be
            encoded into this encoding. This method is _not_
            responsible for performing that encoding. This information
            is passed in so that it can be substituted in if the
            document contains a <META> tag that mentions the document's
            encoding.
+
+        :param formatter: The output formatter responsible for converting
+           entities to Unicode characters.
         """
         # First off, turn a string formatter into a function. This
         # will stop the lookup from happening over and over again.
-        if not callable(formatter):
+        if not isinstance(formatter, collections.Callable):
             formatter = self._formatter_for_name(formatter)
 
         pretty_print = (indent_level is not None)
@@ -1137,7 +1206,17 @@
     def encode_contents(
         self, indent_level=None, encoding=DEFAULT_OUTPUT_ENCODING,
         formatter="minimal"):
-        """Renders the contents of this tag as a bytestring."""
+        """Renders the contents of this tag as a bytestring.
+
+        :param indent_level: Each line of the rendering will be
+           indented this many spaces.
+
+        :param eventual_encoding: The bytestring will be in this encoding.
+
+        :param formatter: The output formatter responsible for converting
+           entities to Unicode characters.
+        """
+
         contents = self.decode_contents(indent_level, encoding, formatter)
         return contents.encode(encoding)
 
@@ -1201,26 +1280,57 @@
 
     _selector_combinators = ['>', '+', '~']
     _select_debug = False
-    def select(self, selector, _candidate_generator=None):
+    def select_one(self, selector):
         """Perform a CSS selection operation on the current element."""
+        value = self.select(selector, limit=1)
+        if value:
+            return value[0]
+        return None
+
+    def select(self, selector, _candidate_generator=None, limit=None):
+        """Perform a CSS selection operation on the current element."""
+
+        # Handle grouping selectors if ',' exists, ie: p,a
+        if ',' in selector:
+            context = []
+            for partial_selector in selector.split(','):
+                partial_selector = partial_selector.strip()
+                if partial_selector == '':
+                    raise ValueError('Invalid group selection syntax: %s' % selector)
+                candidates = self.select(partial_selector, limit=limit)
+                for candidate in candidates:
+                    if candidate not in context:
+                        context.append(candidate)
+
+                if limit and len(context) >= limit:
+                    break
+            return context
+
         tokens = selector.split()
         current_context = [self]
 
         if tokens[-1] in self._selector_combinators:
             raise ValueError(
                 'Final combinator "%s" is missing an argument.' % tokens[-1])
+
         if self._select_debug:
-            print 'Running CSS selector "%s"' % selector
+            print('Running CSS selector "%s"' % selector)
+
         for index, token in enumerate(tokens):
-            if self._select_debug:
-                print ' Considering token "%s"' % token
-            recursive_candidate_generator = None
-            tag_name = None
+            new_context = []
+            new_context_ids = set([])
+
             if tokens[index-1] in self._selector_combinators:
                 # This token was consumed by the previous combinator. Skip it.
                 if self._select_debug:
-                    print '  Token was consumed by the previous combinator.'
+                    print('  Token was consumed by the previous combinator.')
                 continue
+
+            if self._select_debug:
+                print(' Considering token "%s"' % token)
+            recursive_candidate_generator = None
+            tag_name = None
+
             # Each operation corresponds to a checker function, a rule
             # for determining whether a candidate matches the
             # selector. Candidates are generated by the active
@@ -1256,35 +1366,38 @@
                         "A pseudo-class must be prefixed with a tag name.")
                 pseudo_attributes = re.match('([a-zA-Z\d-]+)\(([a-zA-Z\d]+)\)', pseudo)
                 found = []
-                if pseudo_attributes is not None:
+                if pseudo_attributes is None:
+                    pseudo_type = pseudo
+                    pseudo_value = None
+                else:
                     pseudo_type, pseudo_value = pseudo_attributes.groups()
-                    if pseudo_type == 'nth-of-type':
-                        try:
-                            pseudo_value = int(pseudo_value)
-                        except:
-                            raise NotImplementedError(
-                                'Only numeric values are currently supported for the nth-of-type pseudo-class.')
-                        if pseudo_value < 1:
-                            raise ValueError(
-                                'nth-of-type pseudo-class value must be at least 1.')
-                        class Counter(object):
-                            def __init__(self, destination):
-                                self.count = 0
-                                self.destination = destination
-
-                            def nth_child_of_type(self, tag):
-                                self.count += 1
-                                if self.count == self.destination:
-                                    return True
-                                if self.count > self.destination:
-                                    # Stop the generator that's sending us
-                                    # these things.
-                                    raise StopIteration()
-                                return False
-                        checker = Counter(pseudo_value).nth_child_of_type
-                    else:
+                if pseudo_type == 'nth-of-type':
+                    try:
+                        pseudo_value = int(pseudo_value)
+                    except:
                         raise NotImplementedError(
-                            'Only the following pseudo-classes are implemented: nth-of-type.')
+                            'Only numeric values are currently supported for the nth-of-type pseudo-class.')
+                    if pseudo_value < 1:
+                        raise ValueError(
+                            'nth-of-type pseudo-class value must be at least 1.')
+                    class Counter(object):
+                        def __init__(self, destination):
+                            self.count = 0
+                            self.destination = destination
+
+                        def nth_child_of_type(self, tag):
+                            self.count += 1
+                            if self.count == self.destination:
+                                return True
+                            if self.count > self.destination:
+                                # Stop the generator that's sending us
+                                # these things.
+                                raise StopIteration()
+                            return False
+                    checker = Counter(pseudo_value).nth_child_of_type
+                else:
+                    raise NotImplementedError(
+                        'Only the following pseudo-classes are implemented: nth-of-type.')
 
             elif token == '*':
                 # Star selector -- matches everything
@@ -1311,7 +1424,6 @@
             else:
                 raise ValueError(
                     'Unsupported or invalid CSS selector: "%s"' % token)
-
             if recursive_candidate_generator:
                 # This happens when the selector looks like  "> foo".
                 #
@@ -1325,14 +1437,14 @@
                 next_token = tokens[index+1]
                 def recursive_select(tag):
                     if self._select_debug:
-                        print '    Calling select("%s") recursively on %s %s' % (next_token, tag.name, tag.attrs)
-                        print '-' * 40
+                        print('    Calling select("%s") recursively on %s %s' % (next_token, tag.name, tag.attrs))
+                        print('-' * 40)
                     for i in tag.select(next_token, recursive_candidate_generator):
                         if self._select_debug:
-                            print '(Recursive select picked up candidate %s %s)' % (i.name, i.attrs)
+                            print('(Recursive select picked up candidate %s %s)' % (i.name, i.attrs))
                         yield i
                     if self._select_debug:
-                        print '-' * 40
+                        print('-' * 40)
                 _use_candidate_generator = recursive_select
             elif _candidate_generator is None:
                 # By default, a tag's candidates are all of its
@@ -1343,7 +1455,7 @@
                         check = "[any]"
                     else:
                         check = tag_name
-                    print '   Default candidate generator, tag name="%s"' % check
+                    print('   Default candidate generator, tag name="%s"' % check)
                 if self._select_debug:
                     # This is redundant with later code, but it stops
                     # a bunch of bogus tags from cluttering up the
@@ -1361,12 +1473,11 @@
             else:
                 _use_candidate_generator = _candidate_generator
 
-            new_context = []
-            new_context_ids = set([])
+            count = 0
             for tag in current_context:
                 if self._select_debug:
-                    print "    Running candidate generator on %s %s" % (
-                        tag.name, repr(tag.attrs))
+                    print("    Running candidate generator on %s %s" % (
+                        tag.name, repr(tag.attrs)))
                 for candidate in _use_candidate_generator(tag):
                     if not isinstance(candidate, Tag):
                         continue
@@ -1381,21 +1492,24 @@
                             break
                     if checker is None or result:
                         if self._select_debug:
-                            print "     SUCCESS %s %s" % (candidate.name, repr(candidate.attrs))
+                            print("     SUCCESS %s %s" % (candidate.name, repr(candidate.attrs)))
                         if id(candidate) not in new_context_ids:
                             # If a tag matches a selector more than once,
                             # don't include it in the context more than once.
                             new_context.append(candidate)
                             new_context_ids.add(id(candidate))
+                            if limit and len(new_context) >= limit:
+                                break
                     elif self._select_debug:
-                        print "     FAILURE %s %s" % (candidate.name, repr(candidate.attrs))
+                        print("     FAILURE %s %s" % (candidate.name, repr(candidate.attrs)))
+
 
             current_context = new_context
 
         if self._select_debug:
-            print "Final verdict:"
+            print("Final verdict:")
             for i in current_context:
-                print " %s %s" % (i.name, i.attrs)
+                print(" %s %s" % (i.name, i.attrs))
         return current_context
 
     # Old names for backwards compatibility
@@ -1439,7 +1553,7 @@
             else:
                 attrs = kwargs
         normalized_attrs = {}
-        for key, value in attrs.items():
+        for key, value in list(attrs.items()):
             normalized_attrs[key] = self._normalize_search_value(value)
 
         self.attrs = normalized_attrs
@@ -1448,7 +1562,7 @@
     def _normalize_search_value(self, value):
         # Leave it alone if it's a Unicode string, a callable, a
         # regular expression, a boolean, or None.
-        if (isinstance(value, unicode) or callable(value) or hasattr(value, 'match')
+        if (isinstance(value, str) or isinstance(value, collections.Callable) or hasattr(value, 'match')
             or isinstance(value, bool) or value is None):
             return value
 
@@ -1461,7 +1575,7 @@
             new_value = []
             for v in value:
                 if (hasattr(v, '__iter__') and not isinstance(v, bytes)
-                    and not isinstance(v, unicode)):
+                    and not isinstance(v, str)):
                     # This is almost certainly the user's mistake. In the
                     # interests of avoiding infinite loops, we'll let
                     # it through as-is rather than doing a recursive call.
@@ -1473,7 +1587,7 @@
         # Otherwise, convert it into a Unicode string.
         # The unicode(str()) thing is so this will do the same thing on Python 2
         # and Python 3.
-        return unicode(str(value))
+        return str(str(value))
 
     def __str__(self):
         if self.text:
@@ -1527,7 +1641,7 @@
         found = None
         # If given a list of items, scan it for a text element that
         # matches.
-        if hasattr(markup, '__iter__') and not isinstance(markup, (Tag, basestring)):
+        if hasattr(markup, '__iter__') and not isinstance(markup, (Tag, str)):
             for element in markup:
                 if isinstance(element, NavigableString) \
                        and self.search(element):
@@ -1540,7 +1654,7 @@
                 found = self.search_tag(markup)
         # If it's text, make sure the text matches.
         elif isinstance(markup, NavigableString) or \
-                 isinstance(markup, basestring):
+                 isinstance(markup, str):
             if not self.name and not self.attrs and self._matches(markup, self.text):
                 found = markup
         else:
@@ -1554,7 +1668,7 @@
         if isinstance(markup, list) or isinstance(markup, tuple):
             # This should only happen when searching a multi-valued attribute
             # like 'class'.
-            if (isinstance(match_against, unicode)
+            if (isinstance(match_against, str)
                 and ' ' in match_against):
                 # A bit of a special case. If they try to match "foo
                 # bar" on a multivalue attribute's value, only accept
@@ -1589,7 +1703,7 @@
             # None matches None, False, an empty string, an empty list, and so on.
             return not match_against
 
-        if isinstance(match_against, unicode):
+        if isinstance(match_against, str):
             # Exact string match
             return markup == match_against
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/testing.py b/import-layers/yocto-poky/bitbake/lib/bs4/testing.py
index fd4495a..3a2f260 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/testing.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/testing.py
@@ -1,5 +1,8 @@
 """Helper classes for tests."""
 
+__license__ = "MIT"
+
+import pickle
 import copy
 import functools
 import unittest
@@ -43,6 +46,16 @@
 
         self.assertEqual(obj.decode(), self.document_for(compare_parsed_to))
 
+    def assertConnectedness(self, element):
+        """Ensure that next_element and previous_element are properly
+        set for all descendants of the given element.
+        """
+        earlier = None
+        for e in element.descendants:
+            if earlier:
+                self.assertEqual(e, earlier.next_element)
+                self.assertEqual(earlier, e.previous_element)
+            earlier = e
 
 class HTMLTreeBuilderSmokeTest(object):
 
@@ -54,6 +67,15 @@
     markup in these tests, there's not much room for interpretation.
     """
 
+    def test_pickle_and_unpickle_identity(self):
+        # Pickling a tree, then unpickling it, yields a tree identical
+        # to the original.
+        tree = self.soup("<a><b>foo</a>")
+        dumped = pickle.dumps(tree, 2)
+        loaded = pickle.loads(dumped)
+        self.assertEqual(loaded.__class__, BeautifulSoup)
+        self.assertEqual(loaded.decode(), tree.decode())
+
     def assertDoctypeHandled(self, doctype_fragment):
         """Assert that a given doctype string is handled correctly."""
         doctype_str, soup = self._document_with_doctype(doctype_fragment)
@@ -114,6 +136,11 @@
             soup.encode("utf-8").replace(b"\n", b""),
             markup.replace(b"\n", b""))
 
+    def test_processing_instruction(self):
+        markup = b"""<?PITarget PIContent?>"""
+        soup = self.soup(markup)
+        self.assertEqual(markup, soup.encode("utf8"))
+
     def test_deepcopy(self):
         """Make sure you can copy the tree builder.
 
@@ -155,6 +182,23 @@
     def test_nested_formatting_elements(self):
         self.assertSoupEquals("<em><em></em></em>")
 
+    def test_double_head(self):
+        html = '''<!DOCTYPE html>
+<html>
+<head>
+<title>Ordinary HEAD element test</title>
+</head>
+<script type="text/javascript">
+alert("Help!");
+</script>
+<body>
+Hello, world!
+</body>
+</html>
+'''
+        soup = self.soup(html)
+        self.assertEqual("text/javascript", soup.find('script')['type'])
+
     def test_comment(self):
         # Comments are represented as Comment objects.
         markup = "<p>foo<!--foobar-->baz</p>"
@@ -221,18 +265,26 @@
         soup = self.soup(markup)
         self.assertEqual(["css"], soup.div.div['class'])
 
+    def test_multivalued_attribute_on_html(self):
+        # html5lib uses a different API to set the attributes ot the
+        # <html> tag. This has caused problems with multivalued
+        # attributes.
+        markup = '<html class="a b"></html>'
+        soup = self.soup(markup)
+        self.assertEqual(["a", "b"], soup.html['class'])
+
     def test_angle_brackets_in_attribute_values_are_escaped(self):
         self.assertSoupEquals('<a b="<a>"></a>', '<a b="&lt;a&gt;"></a>')
 
     def test_entities_in_attributes_converted_to_unicode(self):
-        expect = u'<p id="pi\N{LATIN SMALL LETTER N WITH TILDE}ata"></p>'
+        expect = '<p id="pi\N{LATIN SMALL LETTER N WITH TILDE}ata"></p>'
         self.assertSoupEquals('<p id="pi&#241;ata"></p>', expect)
         self.assertSoupEquals('<p id="pi&#xf1;ata"></p>', expect)
         self.assertSoupEquals('<p id="pi&#Xf1;ata"></p>', expect)
         self.assertSoupEquals('<p id="pi&ntilde;ata"></p>', expect)
 
     def test_entities_in_text_converted_to_unicode(self):
-        expect = u'<p>pi\N{LATIN SMALL LETTER N WITH TILDE}ata</p>'
+        expect = '<p>pi\N{LATIN SMALL LETTER N WITH TILDE}ata</p>'
         self.assertSoupEquals("<p>pi&#241;ata</p>", expect)
         self.assertSoupEquals("<p>pi&#xf1;ata</p>", expect)
         self.assertSoupEquals("<p>pi&#Xf1;ata</p>", expect)
@@ -243,7 +295,7 @@
                               '<p>I said "good day!"</p>')
 
     def test_out_of_range_entity(self):
-        expect = u"\N{REPLACEMENT CHARACTER}"
+        expect = "\N{REPLACEMENT CHARACTER}"
         self.assertSoupEquals("&#10000000000000;", expect)
         self.assertSoupEquals("&#x10000000000000;", expect)
         self.assertSoupEquals("&#1000000000;", expect)
@@ -253,6 +305,35 @@
         soup = self.soup("<html><h2>\nfoo</h2><p></p></html>")
         self.assertEqual("p", soup.h2.string.next_element.name)
         self.assertEqual("p", soup.p.name)
+        self.assertConnectedness(soup)
+
+    def test_head_tag_between_head_and_body(self):
+        "Prevent recurrence of a bug in the html5lib treebuilder."
+        content = """<html><head></head>
+  <link></link>
+  <body>foo</body>
+</html>
+"""
+        soup = self.soup(content)
+        self.assertNotEqual(None, soup.html.body)
+        self.assertConnectedness(soup)
+
+    def test_multiple_copies_of_a_tag(self):
+        "Prevent recurrence of a bug in the html5lib treebuilder."
+        content = """<!DOCTYPE html>
+<html>
+ <body>
+   <article id="a" >
+   <div><a href="1"></div>
+   <footer>
+     <a href="2"></a>
+   </footer>
+  </article>
+  </body>
+</html>
+"""
+        soup = self.soup(content)
+        self.assertConnectedness(soup.article)
 
     def test_basic_namespaces(self):
         """Parsers don't need to *understand* namespaces, but at the
@@ -285,9 +366,9 @@
         # A seemingly innocuous document... but it's in Unicode! And
         # it contains characters that can't be represented in the
         # encoding found in the  declaration! The horror!
-        markup = u'<html><head><meta encoding="euc-jp"></head><body>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</body>'
+        markup = '<html><head><meta encoding="euc-jp"></head><body>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</body>'
         soup = self.soup(markup)
-        self.assertEqual(u'Sacr\xe9 bleu!', soup.body.string)
+        self.assertEqual('Sacr\xe9 bleu!', soup.body.string)
 
     def test_soupstrainer(self):
         """Parsers should be able to work with SoupStrainers."""
@@ -327,7 +408,7 @@
         # Both XML and HTML entities are converted to Unicode characters
         # during parsing.
         text = "<p>&lt;&lt;sacr&eacute;&#32;bleu!&gt;&gt;</p>"
-        expected = u"<p>&lt;&lt;sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</p>"
+        expected = "<p>&lt;&lt;sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</p>"
         self.assertSoupEquals(text, expected)
 
     def test_smart_quotes_converted_on_the_way_in(self):
@@ -337,15 +418,15 @@
         soup = self.soup(quote)
         self.assertEqual(
             soup.p.string,
-            u"\N{LEFT SINGLE QUOTATION MARK}Foo\N{RIGHT SINGLE QUOTATION MARK}")
+            "\N{LEFT SINGLE QUOTATION MARK}Foo\N{RIGHT SINGLE QUOTATION MARK}")
 
     def test_non_breaking_spaces_converted_on_the_way_in(self):
         soup = self.soup("<a>&nbsp;&nbsp;</a>")
-        self.assertEqual(soup.a.string, u"\N{NO-BREAK SPACE}" * 2)
+        self.assertEqual(soup.a.string, "\N{NO-BREAK SPACE}" * 2)
 
     def test_entities_converted_on_the_way_out(self):
         text = "<p>&lt;&lt;sacr&eacute;&#32;bleu!&gt;&gt;</p>"
-        expected = u"<p>&lt;&lt;sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</p>".encode("utf-8")
+        expected = "<p>&lt;&lt;sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</p>".encode("utf-8")
         soup = self.soup(text)
         self.assertEqual(soup.p.encode("utf-8"), expected)
 
@@ -354,7 +435,7 @@
         # easy-to-understand document.
 
         # Here it is in Unicode. Note that it claims to be in ISO-Latin-1.
-        unicode_html = u'<html><head><meta content="text/html; charset=ISO-Latin-1" http-equiv="Content-type"/></head><body><p>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</p></body></html>'
+        unicode_html = '<html><head><meta content="text/html; charset=ISO-Latin-1" http-equiv="Content-type"/></head><body><p>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</p></body></html>'
 
         # That's because we're going to encode it into ISO-Latin-1, and use
         # that to test.
@@ -463,11 +544,25 @@
 
 class XMLTreeBuilderSmokeTest(object):
 
+    def test_pickle_and_unpickle_identity(self):
+        # Pickling a tree, then unpickling it, yields a tree identical
+        # to the original.
+        tree = self.soup("<a><b>foo</a>")
+        dumped = pickle.dumps(tree, 2)
+        loaded = pickle.loads(dumped)
+        self.assertEqual(loaded.__class__, BeautifulSoup)
+        self.assertEqual(loaded.decode(), tree.decode())
+
     def test_docstring_generated(self):
         soup = self.soup("<root/>")
         self.assertEqual(
             soup.encode(), b'<?xml version="1.0" encoding="utf-8"?>\n<root/>')
 
+    def test_xml_declaration(self):
+        markup = b"""<?xml version="1.0" encoding="utf8"?>\n<foo/>"""
+        soup = self.soup(markup)
+        self.assertEqual(markup, soup.encode("utf8"))
+
     def test_real_xhtml_document(self):
         """A real XHTML document should come out *exactly* the same as it went in."""
         markup = b"""<?xml version="1.0" encoding="utf-8"?>
@@ -485,7 +580,7 @@
   <script type="text/javascript">
   </script>
 """
-        soup = BeautifulSoup(doc, "xml")
+        soup = BeautifulSoup(doc, "lxml-xml")
         # lxml would have stripped this while parsing, but we can add
         # it later.
         soup.script.string = 'console.log("< < hey > > ");'
@@ -493,15 +588,15 @@
         self.assertTrue(b"&lt; &lt; hey &gt; &gt;" in encoded)
 
     def test_can_parse_unicode_document(self):
-        markup = u'<?xml version="1.0" encoding="euc-jp"><root>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</root>'
+        markup = '<?xml version="1.0" encoding="euc-jp"><root>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</root>'
         soup = self.soup(markup)
-        self.assertEqual(u'Sacr\xe9 bleu!', soup.root.string)
+        self.assertEqual('Sacr\xe9 bleu!', soup.root.string)
 
     def test_popping_namespaced_tag(self):
         markup = '<rss xmlns:dc="foo"><dc:creator>b</dc:creator><dc:date>2012-07-02T20:33:42Z</dc:date><dc:rights>c</dc:rights><image>d</image></rss>'
         soup = self.soup(markup)
         self.assertEqual(
-            unicode(soup.rss), markup)
+            str(soup.rss), markup)
 
     def test_docstring_includes_correct_encoding(self):
         soup = self.soup("<root/>")
@@ -532,17 +627,17 @@
     def test_closing_namespaced_tag(self):
         markup = '<p xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>20010504</dc:date></p>'
         soup = self.soup(markup)
-        self.assertEqual(unicode(soup.p), markup)
+        self.assertEqual(str(soup.p), markup)
 
     def test_namespaced_attributes(self):
         markup = '<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><bar xsi:schemaLocation="http://www.example.com"/></foo>'
         soup = self.soup(markup)
-        self.assertEqual(unicode(soup.foo), markup)
+        self.assertEqual(str(soup.foo), markup)
 
     def test_namespaced_attributes_xml_namespace(self):
         markup = '<foo xml:lang="fr">bar</foo>'
         soup = self.soup(markup)
-        self.assertEqual(unicode(soup.foo), markup)
+        self.assertEqual(str(soup.foo), markup)
 
 class HTML5TreeBuilderSmokeTest(HTMLTreeBuilderSmokeTest):
     """Smoke test for a tree builder that supports HTML5."""
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_builder_registry.py b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_builder_registry.py
index 92ad10f..90cad82 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_builder_registry.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_builder_registry.py
@@ -1,6 +1,7 @@
 """Tests of the builder registry."""
 
 import unittest
+import warnings
 
 from bs4 import BeautifulSoup
 from bs4.builder import (
@@ -67,10 +68,15 @@
                           HTMLParserTreeBuilder)
 
     def test_beautifulsoup_constructor_does_lookup(self):
-        # You can pass in a string.
-        BeautifulSoup("", features="html")
-        # Or a list of strings.
-        BeautifulSoup("", features=["html", "fast"])
+
+        with warnings.catch_warnings(record=True) as w:
+            # This will create a warning about not explicitly
+            # specifying a parser, but we'll ignore it.
+
+            # You can pass in a string.
+            BeautifulSoup("", features="html")
+            # Or a list of strings.
+            BeautifulSoup("", features=["html", "fast"])
 
         # You'll get an exception if BS can't find an appropriate
         # builder.
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_html5lib.py b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_html5lib.py
index 594c3e1..a7494ca 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_html5lib.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_html5lib.py
@@ -5,7 +5,7 @@
 try:
     from bs4.builder import HTML5TreeBuilder
     HTML5LIB_PRESENT = True
-except ImportError, e:
+except ImportError as e:
     HTML5LIB_PRESENT = False
 from bs4.element import SoupStrainer
 from bs4.testing import (
@@ -74,12 +74,25 @@
     def test_reparented_markup(self):
         markup = '<p><em>foo</p>\n<p>bar<a></a></em></p>'
         soup = self.soup(markup)
-        self.assertEqual(u"<body><p><em>foo</em></p><em>\n</em><p><em>bar<a></a></em></p></body>", soup.body.decode())
+        self.assertEqual("<body><p><em>foo</em></p><em>\n</em><p><em>bar<a></a></em></p></body>", soup.body.decode())
         self.assertEqual(2, len(soup.find_all('p')))
 
 
     def test_reparented_markup_ends_with_whitespace(self):
         markup = '<p><em>foo</p>\n<p>bar<a></a></em></p>\n'
         soup = self.soup(markup)
-        self.assertEqual(u"<body><p><em>foo</em></p><em>\n</em><p><em>bar<a></a></em></p>\n</body>", soup.body.decode())
+        self.assertEqual("<body><p><em>foo</em></p><em>\n</em><p><em>bar<a></a></em></p>\n</body>", soup.body.decode())
         self.assertEqual(2, len(soup.find_all('p')))
+
+    def test_processing_instruction(self):
+        """Processing instructions become comments."""
+        markup = b"""<?PITarget PIContent?>"""
+        soup = self.soup(markup)
+        assert str(soup).startswith("<!--?PITarget PIContent?-->")
+
+    def test_cloned_multivalue_node(self):
+        markup = b"""<a class="my_class"><p></a>"""
+        soup = self.soup(markup)
+        a1, a2 = soup.find_all('a')
+        self.assertEqual(a1, a2)
+        assert a1 is not a2
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_htmlparser.py b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_htmlparser.py
index bcb5ed2..b45e35f 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_htmlparser.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_htmlparser.py
@@ -1,6 +1,8 @@
 """Tests to ensure that the html.parser tree builder generates good
 trees."""
 
+from pdb import set_trace
+import pickle
 from bs4.testing import SoupTest, HTMLTreeBuilderSmokeTest
 from bs4.builder import HTMLParserTreeBuilder
 
@@ -17,3 +19,14 @@
     def test_namespaced_public_doctype(self):
         # html.parser can't handle namespaced doctypes, so skip this one.
         pass
+
+    def test_builder_is_pickled(self):
+        """Unlike most tree builders, HTMLParserTreeBuilder and will
+        be restored after pickling.
+        """
+        tree = self.soup("<a><b>foo</a>")
+        dumped = pickle.dumps(tree, 2)
+        loaded = pickle.loads(dumped)
+        self.assertTrue(isinstance(loaded.builder, type(tree.builder)))
+
+
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_lxml.py b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_lxml.py
index 2b2e9b7..6c2a1d7 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_lxml.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_lxml.py
@@ -7,7 +7,7 @@
     import lxml.etree
     LXML_PRESENT = True
     LXML_VERSION = lxml.etree.LXML_VERSION
-except ImportError, e:
+except ImportError as e:
     LXML_PRESENT = False
     LXML_VERSION = (0,)
 
@@ -62,24 +62,9 @@
         # if one is installed.
         with warnings.catch_warnings(record=True) as w:
             soup = BeautifulStoneSoup("<b />")
-        self.assertEqual(u"<b/>", unicode(soup.b))
+        self.assertEqual("<b/>", str(soup.b))
         self.assertTrue("BeautifulStoneSoup class is deprecated" in str(w[0].message))
 
-    def test_real_xhtml_document(self):
-        """lxml strips the XML definition from an XHTML doc, which is fine."""
-        markup = b"""<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head><title>Hello.</title></head>
-<body>Goodbye.</body>
-</html>"""
-        soup = self.soup(markup)
-        self.assertEqual(
-            soup.encode("utf-8").replace(b"\n", b''),
-            markup.replace(b'\n', b'').replace(
-                b'<?xml version="1.0" encoding="utf-8"?>', b''))
-
-
 @skipIf(
     not LXML_PRESENT,
     "lxml seems not to be present, not testing its XML tree builder.")
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_soup.py b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_soup.py
index 47ac245..f87949e 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_soup.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_soup.py
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 """Tests of Beautiful Soup as a whole."""
 
+from pdb import set_trace
 import logging
 import unittest
 import sys
@@ -20,6 +21,7 @@
 from bs4.dammit import (
     EntitySubstitution,
     UnicodeDammit,
+    EncodingDetector,
 )
 from bs4.testing import (
     SoupTest,
@@ -30,7 +32,7 @@
 try:
     from bs4.builder import LXMLTreeBuilder, LXMLTreeBuilderForXML
     LXML_PRESENT = True
-except ImportError, e:
+except ImportError as e:
     LXML_PRESENT = False
 
 PYTHON_2_PRE_2_7 = (sys.version_info < (2,7))
@@ -39,17 +41,43 @@
 class TestConstructor(SoupTest):
 
     def test_short_unicode_input(self):
-        data = u"<h1>éé</h1>"
+        data = "<h1>éé</h1>"
         soup = self.soup(data)
-        self.assertEqual(u"éé", soup.h1.string)
+        self.assertEqual("éé", soup.h1.string)
 
     def test_embedded_null(self):
-        data = u"<h1>foo\0bar</h1>"
+        data = "<h1>foo\0bar</h1>"
         soup = self.soup(data)
-        self.assertEqual(u"foo\0bar", soup.h1.string)
+        self.assertEqual("foo\0bar", soup.h1.string)
+
+    def test_exclude_encodings(self):
+        utf8_data = "Räksmörgås".encode("utf-8")
+        soup = self.soup(utf8_data, exclude_encodings=["utf-8"])
+        self.assertEqual("windows-1252", soup.original_encoding)
 
 
-class TestDeprecatedConstructorArguments(SoupTest):
+class TestWarnings(SoupTest):
+
+    def _no_parser_specified(self, s, is_there=True):
+        v = s.startswith(BeautifulSoup.NO_PARSER_SPECIFIED_WARNING[:80])
+        self.assertTrue(v)
+
+    def test_warning_if_no_parser_specified(self):
+        with warnings.catch_warnings(record=True) as w:
+            soup = self.soup("<a><b></b></a>")
+        msg = str(w[0].message)
+        self._assert_no_parser_specified(msg)
+
+    def test_warning_if_parser_specified_too_vague(self):
+        with warnings.catch_warnings(record=True) as w:
+            soup = self.soup("<a><b></b></a>", "html")
+        msg = str(w[0].message)
+        self._assert_no_parser_specified(msg)
+
+    def test_no_warning_if_explicit_parser_specified(self):
+        with warnings.catch_warnings(record=True) as w:
+            soup = self.soup("<a><b></b></a>", "html.parser")
+        self.assertEqual([], w)
 
     def test_parseOnlyThese_renamed_to_parse_only(self):
         with warnings.catch_warnings(record=True) as w:
@@ -117,9 +145,9 @@
     def test_simple_html_substitution(self):
         # Unicode characters corresponding to named HTML entites
         # are substituted, and no others.
-        s = u"foo\u2200\N{SNOWMAN}\u00f5bar"
+        s = "foo\u2200\N{SNOWMAN}\u00f5bar"
         self.assertEqual(self.sub.substitute_html(s),
-                          u"foo&forall;\N{SNOWMAN}&otilde;bar")
+                          "foo&forall;\N{SNOWMAN}&otilde;bar")
 
     def test_smart_quote_substitution(self):
         # MS smart quotes are a common source of frustration, so we
@@ -184,7 +212,7 @@
 
     def setUp(self):
         super(TestEncodingConversion, self).setUp()
-        self.unicode_data = u'<html><head><meta charset="utf-8"/></head><body><foo>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</foo></body></html>'
+        self.unicode_data = '<html><head><meta charset="utf-8"/></head><body><foo>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</foo></body></html>'
         self.utf8_data = self.unicode_data.encode("utf-8")
         # Just so you know what it looks like.
         self.assertEqual(
@@ -204,7 +232,7 @@
             ascii = b"<foo>a</foo>"
             soup_from_ascii = self.soup(ascii)
             unicode_output = soup_from_ascii.decode()
-            self.assertTrue(isinstance(unicode_output, unicode))
+            self.assertTrue(isinstance(unicode_output, str))
             self.assertEqual(unicode_output, self.document_for(ascii.decode()))
             self.assertEqual(soup_from_ascii.original_encoding.lower(), "utf-8")
         finally:
@@ -216,7 +244,7 @@
         # is not set.
         soup_from_unicode = self.soup(self.unicode_data)
         self.assertEqual(soup_from_unicode.decode(), self.unicode_data)
-        self.assertEqual(soup_from_unicode.foo.string, u'Sacr\xe9 bleu!')
+        self.assertEqual(soup_from_unicode.foo.string, 'Sacr\xe9 bleu!')
         self.assertEqual(soup_from_unicode.original_encoding, None)
 
     def test_utf8_in_unicode_out(self):
@@ -224,7 +252,7 @@
         # attribute is set.
         soup_from_utf8 = self.soup(self.utf8_data)
         self.assertEqual(soup_from_utf8.decode(), self.unicode_data)
-        self.assertEqual(soup_from_utf8.foo.string, u'Sacr\xe9 bleu!')
+        self.assertEqual(soup_from_utf8.foo.string, 'Sacr\xe9 bleu!')
 
     def test_utf8_out(self):
         # The internal data structures can be encoded as UTF-8.
@@ -235,14 +263,14 @@
         PYTHON_2_PRE_2_7 or PYTHON_3_PRE_3_2,
         "Bad HTMLParser detected; skipping test of non-ASCII characters in attribute name.")
     def test_attribute_name_containing_unicode_characters(self):
-        markup = u'<div><a \N{SNOWMAN}="snowman"></a></div>'
+        markup = '<div><a \N{SNOWMAN}="snowman"></a></div>'
         self.assertEqual(self.soup(markup).div.encode("utf8"), markup.encode("utf8"))
 
 class TestUnicodeDammit(unittest.TestCase):
     """Standalone tests of UnicodeDammit."""
 
     def test_unicode_input(self):
-        markup = u"I'm already Unicode! \N{SNOWMAN}"
+        markup = "I'm already Unicode! \N{SNOWMAN}"
         dammit = UnicodeDammit(markup)
         self.assertEqual(dammit.unicode_markup, markup)
 
@@ -250,7 +278,7 @@
         markup = b"<foo>\x91\x92\x93\x94</foo>"
         dammit = UnicodeDammit(markup)
         self.assertEqual(
-            dammit.unicode_markup, u"<foo>\u2018\u2019\u201c\u201d</foo>")
+            dammit.unicode_markup, "<foo>\u2018\u2019\u201c\u201d</foo>")
 
     def test_smart_quotes_to_xml_entities(self):
         markup = b"<foo>\x91\x92\x93\x94</foo>"
@@ -271,16 +299,17 @@
             dammit.unicode_markup, """<foo>''""</foo>""")
 
     def test_detect_utf8(self):
-        utf8 = b"\xc3\xa9"
+        utf8 = b"Sacr\xc3\xa9 bleu! \xe2\x98\x83"
         dammit = UnicodeDammit(utf8)
-        self.assertEqual(dammit.unicode_markup, u'\xe9')
         self.assertEqual(dammit.original_encoding.lower(), 'utf-8')
+        self.assertEqual(dammit.unicode_markup, 'Sacr\xe9 bleu! \N{SNOWMAN}')
+
 
     def test_convert_hebrew(self):
         hebrew = b"\xed\xe5\xec\xf9"
         dammit = UnicodeDammit(hebrew, ["iso-8859-8"])
         self.assertEqual(dammit.original_encoding.lower(), 'iso-8859-8')
-        self.assertEqual(dammit.unicode_markup, u'\u05dd\u05d5\u05dc\u05e9')
+        self.assertEqual(dammit.unicode_markup, '\u05dd\u05d5\u05dc\u05e9')
 
     def test_dont_see_smart_quotes_where_there_are_none(self):
         utf_8 = b"\343\202\261\343\203\274\343\202\277\343\202\244 Watch"
@@ -289,16 +318,36 @@
         self.assertEqual(dammit.unicode_markup.encode("utf-8"), utf_8)
 
     def test_ignore_inappropriate_codecs(self):
-        utf8_data = u"Räksmörgås".encode("utf-8")
+        utf8_data = "Räksmörgås".encode("utf-8")
         dammit = UnicodeDammit(utf8_data, ["iso-8859-8"])
         self.assertEqual(dammit.original_encoding.lower(), 'utf-8')
 
     def test_ignore_invalid_codecs(self):
-        utf8_data = u"Räksmörgås".encode("utf-8")
+        utf8_data = "Räksmörgås".encode("utf-8")
         for bad_encoding in ['.utf8', '...', 'utF---16.!']:
             dammit = UnicodeDammit(utf8_data, [bad_encoding])
             self.assertEqual(dammit.original_encoding.lower(), 'utf-8')
 
+    def test_exclude_encodings(self):
+        # This is UTF-8.
+        utf8_data = "Räksmörgås".encode("utf-8")
+
+        # But if we exclude UTF-8 from consideration, the guess is
+        # Windows-1252.
+        dammit = UnicodeDammit(utf8_data, exclude_encodings=["utf-8"])
+        self.assertEqual(dammit.original_encoding.lower(), 'windows-1252')
+
+        # And if we exclude that, there is no valid guess at all.
+        dammit = UnicodeDammit(
+            utf8_data, exclude_encodings=["utf-8", "windows-1252"])
+        self.assertEqual(dammit.original_encoding, None)
+
+    def test_encoding_detector_replaces_junk_in_encoding_name_with_replacement_character(self):
+        detected = EncodingDetector(
+            b'<?xml version="1.0" encoding="UTF-\xdb" ?>')
+        encodings = list(detected.encodings)
+        assert 'utf-\N{REPLACEMENT CHARACTER}' in encodings
+
     def test_detect_html5_style_meta_tag(self):
 
         for data in (
@@ -337,7 +386,7 @@
             bs4.dammit.chardet_dammit = noop
             dammit = UnicodeDammit(doc)
             self.assertEqual(True, dammit.contains_replacement_characters)
-            self.assertTrue(u"\ufffd" in dammit.unicode_markup)
+            self.assertTrue("\ufffd" in dammit.unicode_markup)
 
             soup = BeautifulSoup(doc, "html.parser")
             self.assertTrue(soup.contains_replacement_characters)
@@ -349,17 +398,17 @@
         # A document written in UTF-16LE will have its byte order marker stripped.
         data = b'\xff\xfe<\x00a\x00>\x00\xe1\x00\xe9\x00<\x00/\x00a\x00>\x00'
         dammit = UnicodeDammit(data)
-        self.assertEqual(u"<a>áé</a>", dammit.unicode_markup)
+        self.assertEqual("<a>áé</a>", dammit.unicode_markup)
         self.assertEqual("utf-16le", dammit.original_encoding)
 
     def test_detwingle(self):
         # Here's a UTF8 document.
-        utf8 = (u"\N{SNOWMAN}" * 3).encode("utf8")
+        utf8 = ("\N{SNOWMAN}" * 3).encode("utf8")
 
         # Here's a Windows-1252 document.
         windows_1252 = (
-            u"\N{LEFT DOUBLE QUOTATION MARK}Hi, I like Windows!"
-            u"\N{RIGHT DOUBLE QUOTATION MARK}").encode("windows_1252")
+            "\N{LEFT DOUBLE QUOTATION MARK}Hi, I like Windows!"
+            "\N{RIGHT DOUBLE QUOTATION MARK}").encode("windows_1252")
 
         # Through some unholy alchemy, they've been stuck together.
         doc = utf8 + windows_1252 + utf8
@@ -374,7 +423,7 @@
 
         fixed = UnicodeDammit.detwingle(doc)
         self.assertEqual(
-            u"☃☃☃“Hi, I like Windows!”☃☃☃", fixed.decode("utf8"))
+            "☃☃☃“Hi, I like Windows!”☃☃☃", fixed.decode("utf8"))
 
     def test_detwingle_ignores_multibyte_characters(self):
         # Each of these characters has a UTF-8 representation ending
@@ -382,9 +431,9 @@
         # Windows-1252. But our code knows to skip over multibyte
         # UTF-8 characters, so they'll survive the process unscathed.
         for tricky_unicode_char in (
-            u"\N{LATIN SMALL LIGATURE OE}", # 2-byte char '\xc5\x93'
-            u"\N{LATIN SUBSCRIPT SMALL LETTER X}", # 3-byte char '\xe2\x82\x93'
-            u"\xf0\x90\x90\x93", # This is a CJK character, not sure which one.
+            "\N{LATIN SMALL LIGATURE OE}", # 2-byte char '\xc5\x93'
+            "\N{LATIN SUBSCRIPT SMALL LETTER X}", # 3-byte char '\xe2\x82\x93'
+            "\xf0\x90\x90\x93", # This is a CJK character, not sure which one.
             ):
             input = tricky_unicode_char.encode("utf8")
             self.assertTrue(input.endswith(b'\x93'))
diff --git a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_tree.py b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_tree.py
index f8515c0..6d3e67f 100644
--- a/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_tree.py
+++ b/import-layers/yocto-poky/bitbake/lib/bs4/tests/test_tree.py
@@ -9,6 +9,7 @@
 methods tested here.
 """
 
+from pdb import set_trace
 import copy
 import pickle
 import re
@@ -19,8 +20,10 @@
     HTMLParserTreeBuilder,
 )
 from bs4.element import (
+    PY3K,
     CData,
     Comment,
+    Declaration,
     Doctype,
     NavigableString,
     SoupStrainer,
@@ -67,8 +70,14 @@
         self.assertEqual(soup.find("b").string, "2")
 
     def test_unicode_text_find(self):
-        soup = self.soup(u'<h1>Räksmörgås</h1>')
-        self.assertEqual(soup.find(text=u'Räksmörgås'), u'Räksmörgås')
+        soup = self.soup('<h1>Räksmörgås</h1>')
+        self.assertEqual(soup.find(string='Räksmörgås'), 'Räksmörgås')
+
+    def test_unicode_attribute_find(self):
+        soup = self.soup('<h1 id="Räksmörgås">here it is</h1>')
+        str(soup)
+        self.assertEqual("here it is", soup.find(id='Räksmörgås').text)
+
 
     def test_find_everything(self):
         """Test an optimization that finds all tags."""
@@ -87,16 +96,17 @@
         """You can search the tree for text nodes."""
         soup = self.soup("<html>Foo<b>bar</b>\xbb</html>")
         # Exact match.
-        self.assertEqual(soup.find_all(text="bar"), [u"bar"])
+        self.assertEqual(soup.find_all(string="bar"), ["bar"])
+        self.assertEqual(soup.find_all(text="bar"), ["bar"])
         # Match any of a number of strings.
         self.assertEqual(
-            soup.find_all(text=["Foo", "bar"]), [u"Foo", u"bar"])
+            soup.find_all(text=["Foo", "bar"]), ["Foo", "bar"])
         # Match a regular expression.
         self.assertEqual(soup.find_all(text=re.compile('.*')),
-                         [u"Foo", u"bar", u'\xbb'])
+                         ["Foo", "bar", '\xbb'])
         # Match anything.
         self.assertEqual(soup.find_all(text=True),
-                         [u"Foo", u"bar", u'\xbb'])
+                         ["Foo", "bar", '\xbb'])
 
     def test_find_all_limit(self):
         """You can limit the number of items returned by find_all."""
@@ -227,8 +237,8 @@
                            ["Matching a.", "Matching b."])
 
     def test_find_all_by_utf8_attribute_value(self):
-        peace = u"םולש".encode("utf8")
-        data = u'<a title="םולש"></a>'.encode("utf8")
+        peace = "םולש".encode("utf8")
+        data = '<a title="םולש"></a>'.encode("utf8")
         soup = self.soup(data)
         self.assertEqual([soup.a], soup.find_all(title=peace))
         self.assertEqual([soup.a], soup.find_all(title=peace.decode("utf8")))
@@ -688,7 +698,7 @@
 
     def test_tag_inherits_self_closing_rules_from_builder(self):
         if XML_BUILDER_PRESENT:
-            xml_soup = BeautifulSoup("", "xml")
+            xml_soup = BeautifulSoup("", "lxml-xml")
             xml_br = xml_soup.new_tag("br")
             xml_p = xml_soup.new_tag("p")
 
@@ -697,7 +707,7 @@
             self.assertEqual(b"<br/>", xml_br.encode())
             self.assertEqual(b"<p/>", xml_p.encode())
 
-        html_soup = BeautifulSoup("", "html")
+        html_soup = BeautifulSoup("", "html.parser")
         html_br = html_soup.new_tag("br")
         html_p = html_soup.new_tag("p")
 
@@ -773,6 +783,14 @@
         new_a = a.unwrap()
         self.assertEqual(a, new_a)
 
+    def test_replace_with_and_unwrap_give_useful_exception_when_tag_has_no_parent(self):
+        soup = self.soup("<a><b>Foo</b></a><c>Bar</c>")
+        a = soup.a
+        a.extract()
+        self.assertEqual(None, a.parent)
+        self.assertRaises(ValueError, a.unwrap)
+        self.assertRaises(ValueError, a.replace_with, soup.c)
+
     def test_replace_tag_with_itself(self):
         text = "<a><b></b><c>Foo<d></d></c></a><a><e></e></a>"
         soup = self.soup(text)
@@ -1067,6 +1085,31 @@
         self.assertEqual(foo_2, soup.a.string)
         self.assertEqual(bar_2, soup.b.string)
 
+    def test_extract_multiples_of_same_tag(self):
+        soup = self.soup("""
+<html>
+<head>
+<script>foo</script>
+</head>
+<body>
+ <script>bar</script>
+ <a></a>
+</body>
+<script>baz</script>
+</html>""")
+        [soup.script.extract() for i in soup.find_all("script")]
+        self.assertEqual("<body>\n\n<a></a>\n</body>", str(soup.body))
+
+
+    def test_extract_works_when_element_is_surrounded_by_identical_strings(self):
+        soup = self.soup(
+ '<html>\n'
+ '<body>hi</body>\n'
+ '</html>')
+        soup.find('body').extract()
+        self.assertEqual(None, soup.find('body'))
+
+
     def test_clear(self):
         """Tag.clear()"""
         soup = self.soup("<p><a>String <em>Italicized</em></a> and another</p>")
@@ -1287,27 +1330,72 @@
 
     def test_unicode_pickle(self):
         # A tree containing Unicode characters can be pickled.
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
         dumped = pickle.dumps(soup, pickle.HIGHEST_PROTOCOL)
         loaded = pickle.loads(dumped)
         self.assertEqual(loaded.decode(), soup.decode())
 
+    def test_copy_navigablestring_is_not_attached_to_tree(self):
+        html = "<b>Foo<a></a></b><b>Bar</b>"
+        soup = self.soup(html)
+        s1 = soup.find(string="Foo")
+        s2 = copy.copy(s1)
+        self.assertEqual(s1, s2)
+        self.assertEqual(None, s2.parent)
+        self.assertEqual(None, s2.next_element)
+        self.assertNotEqual(None, s1.next_sibling)
+        self.assertEqual(None, s2.next_sibling)
+        self.assertEqual(None, s2.previous_element)
+
+    def test_copy_navigablestring_subclass_has_same_type(self):
+        html = "<b><!--Foo--></b>"
+        soup = self.soup(html)
+        s1 = soup.string
+        s2 = copy.copy(s1)
+        self.assertEqual(s1, s2)
+        self.assertTrue(isinstance(s2, Comment))
+
+    def test_copy_entire_soup(self):
+        html = "<div><b>Foo<a></a></b><b>Bar</b></div>end"
+        soup = self.soup(html)
+        soup_copy = copy.copy(soup)
+        self.assertEqual(soup, soup_copy)
+
+    def test_copy_tag_copies_contents(self):
+        html = "<div><b>Foo<a></a></b><b>Bar</b></div>end"
+        soup = self.soup(html)
+        div = soup.div
+        div_copy = copy.copy(div)
+
+        # The two tags look the same, and evaluate to equal.
+        self.assertEqual(str(div), str(div_copy))
+        self.assertEqual(div, div_copy)
+
+        # But they're not the same object.
+        self.assertFalse(div is div_copy)
+
+        # And they don't have the same relation to the parse tree. The
+        # copy is not associated with a parse tree at all.
+        self.assertEqual(None, div_copy.parent)
+        self.assertEqual(None, div_copy.previous_element)
+        self.assertEqual(None, div_copy.find(string='Bar').next_element)
+        self.assertNotEqual(None, div.find(string='Bar').next_element)
 
 class TestSubstitutions(SoupTest):
 
     def test_default_formatter_is_minimal(self):
-        markup = u"<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
+        markup = "<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
         soup = self.soup(markup)
         decoded = soup.decode(formatter="minimal")
         # The < is converted back into &lt; but the e-with-acute is left alone.
         self.assertEqual(
             decoded,
             self.document_for(
-                u"<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"))
+                "<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"))
 
     def test_formatter_html(self):
-        markup = u"<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
+        markup = "<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
         soup = self.soup(markup)
         decoded = soup.decode(formatter="html")
         self.assertEqual(
@@ -1315,49 +1403,49 @@
             self.document_for("<b>&lt;&lt;Sacr&eacute; bleu!&gt;&gt;</b>"))
 
     def test_formatter_minimal(self):
-        markup = u"<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
+        markup = "<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
         soup = self.soup(markup)
         decoded = soup.decode(formatter="minimal")
         # The < is converted back into &lt; but the e-with-acute is left alone.
         self.assertEqual(
             decoded,
             self.document_for(
-                u"<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"))
+                "<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"))
 
     def test_formatter_null(self):
-        markup = u"<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
+        markup = "<b>&lt;&lt;Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!&gt;&gt;</b>"
         soup = self.soup(markup)
         decoded = soup.decode(formatter=None)
         # Neither the angle brackets nor the e-with-acute are converted.
         # This is not valid HTML, but it's what the user wanted.
         self.assertEqual(decoded,
-                          self.document_for(u"<b><<Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>></b>"))
+                          self.document_for("<b><<Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>></b>"))
 
     def test_formatter_custom(self):
-        markup = u"<b>&lt;foo&gt;</b><b>bar</b>"
+        markup = "<b>&lt;foo&gt;</b><b>bar</b>"
         soup = self.soup(markup)
         decoded = soup.decode(formatter = lambda x: x.upper())
         # Instead of normal entity conversion code, the custom
         # callable is called on every string.
         self.assertEqual(
             decoded,
-            self.document_for(u"<b><FOO></b><b>BAR</b>"))
+            self.document_for("<b><FOO></b><b>BAR</b>"))
 
     def test_formatter_is_run_on_attribute_values(self):
-        markup = u'<a href="http://a.com?a=b&c=é">e</a>'
+        markup = '<a href="http://a.com?a=b&c=é">e</a>'
         soup = self.soup(markup)
         a = soup.a
 
-        expect_minimal = u'<a href="http://a.com?a=b&amp;c=é">e</a>'
+        expect_minimal = '<a href="http://a.com?a=b&amp;c=é">e</a>'
 
         self.assertEqual(expect_minimal, a.decode())
         self.assertEqual(expect_minimal, a.decode(formatter="minimal"))
 
-        expect_html = u'<a href="http://a.com?a=b&amp;c=&eacute;">e</a>'
+        expect_html = '<a href="http://a.com?a=b&amp;c=&eacute;">e</a>'
         self.assertEqual(expect_html, a.decode(formatter="html"))
 
         self.assertEqual(markup, a.decode(formatter=None))
-        expect_upper = u'<a href="HTTP://A.COM?A=B&C=É">E</a>'
+        expect_upper = '<a href="HTTP://A.COM?A=B&C=É">E</a>'
         self.assertEqual(expect_upper, a.decode(formatter=lambda x: x.upper()))
 
     def test_formatter_skips_script_tag_for_html_documents(self):
@@ -1366,7 +1454,7 @@
    console.log("< < hey > > ");
   </script>
 """
-        encoded = BeautifulSoup(doc).encode()
+        encoded = BeautifulSoup(doc, 'html.parser').encode()
         self.assertTrue(b"< < hey > >" in encoded)
 
     def test_formatter_skips_style_tag_for_html_documents(self):
@@ -1375,7 +1463,7 @@
    console.log("< < hey > > ");
   </style>
 """
-        encoded = BeautifulSoup(doc).encode()
+        encoded = BeautifulSoup(doc, 'html.parser').encode()
         self.assertTrue(b"< < hey > >" in encoded)
 
     def test_prettify_leaves_preformatted_text_alone(self):
@@ -1383,24 +1471,24 @@
         # Everything outside the <pre> tag is reformatted, but everything
         # inside is left alone.
         self.assertEqual(
-            u'<div>\n foo\n <pre>  \tbar\n  \n  </pre>\n baz\n</div>',
+            '<div>\n foo\n <pre>  \tbar\n  \n  </pre>\n baz\n</div>',
             soup.div.prettify())
 
     def test_prettify_accepts_formatter(self):
-        soup = BeautifulSoup("<html><body>foo</body></html>")
+        soup = BeautifulSoup("<html><body>foo</body></html>", 'html.parser')
         pretty = soup.prettify(formatter = lambda x: x.upper())
         self.assertTrue("FOO" in pretty)
 
     def test_prettify_outputs_unicode_by_default(self):
         soup = self.soup("<a></a>")
-        self.assertEqual(unicode, type(soup.prettify()))
+        self.assertEqual(str, type(soup.prettify()))
 
     def test_prettify_can_encode_data(self):
         soup = self.soup("<a></a>")
         self.assertEqual(bytes, type(soup.prettify("utf-8")))
 
     def test_html_entity_substitution_off_by_default(self):
-        markup = u"<b>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</b>"
+        markup = "<b>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</b>"
         soup = self.soup(markup)
         encoded = soup.b.encode("utf-8")
         self.assertEqual(encoded, markup.encode('utf-8'))
@@ -1444,45 +1532,53 @@
     """Test the ability to encode objects into strings."""
 
     def test_unicode_string_can_be_encoded(self):
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
         self.assertEqual(soup.b.string.encode("utf-8"),
-                          u"\N{SNOWMAN}".encode("utf-8"))
+                          "\N{SNOWMAN}".encode("utf-8"))
 
     def test_tag_containing_unicode_string_can_be_encoded(self):
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
         self.assertEqual(
             soup.b.encode("utf-8"), html.encode("utf-8"))
 
     def test_encoding_substitutes_unrecognized_characters_by_default(self):
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
         self.assertEqual(soup.b.encode("ascii"), b"<b>&#9731;</b>")
 
     def test_encoding_can_be_made_strict(self):
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
         self.assertRaises(
             UnicodeEncodeError, soup.encode, "ascii", errors="strict")
 
     def test_decode_contents(self):
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
-        self.assertEqual(u"\N{SNOWMAN}", soup.b.decode_contents())
+        self.assertEqual("\N{SNOWMAN}", soup.b.decode_contents())
 
     def test_encode_contents(self):
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
         self.assertEqual(
-            u"\N{SNOWMAN}".encode("utf8"), soup.b.encode_contents(
+            "\N{SNOWMAN}".encode("utf8"), soup.b.encode_contents(
                 encoding="utf8"))
 
     def test_deprecated_renderContents(self):
-        html = u"<b>\N{SNOWMAN}</b>"
+        html = "<b>\N{SNOWMAN}</b>"
         soup = self.soup(html)
         self.assertEqual(
-            u"\N{SNOWMAN}".encode("utf8"), soup.b.renderContents())
+            "\N{SNOWMAN}".encode("utf8"), soup.b.renderContents())
+
+    def test_repr(self):
+        html = "<b>\N{SNOWMAN}</b>"
+        soup = self.soup(html)
+        if PY3K:
+            self.assertEqual(html, repr(soup))
+        else:
+            self.assertEqual(b'<b>\\u2603</b>', repr(soup))
 
 class TestNavigableStringSubclasses(SoupTest):
 
@@ -1522,6 +1618,9 @@
         soup.insert(1, doctype)
         self.assertEqual(soup.encode(), b"<!DOCTYPE foo>\n")
 
+    def test_declaration(self):
+        d = Declaration("foo")
+        self.assertEqual("<?foo?>", d.output_ready())
 
 class TestSoupSelector(TreeTest):
 
@@ -1534,7 +1633,7 @@
 <link rel="stylesheet" href="blah.css" type="text/css" id="l1">
 </head>
 <body>
-
+<custom-dashed-tag class="dashed" id="dash1">Hello there.</custom-dashed-tag>
 <div id="main" class="fancy">
 <div id="inner">
 <h1 id="header1">An H1</h1>
@@ -1552,8 +1651,18 @@
 <a href="#" id="s2a1">span2a1</a>
 </span>
 <span class="span3"></span>
+<custom-dashed-tag class="dashed" id="dash2"/>
+<div data-tag="dashedvalue" id="data1"/>
 </span>
 </div>
+<x id="xid">
+<z id="zida"/>
+<z id="zidab"/>
+<z id="zidac"/>
+</x>
+<y id="yid">
+<z id="zidb"/>
+</y>
 <p lang="en" id="lang-en">English</p>
 <p lang="en-gb" id="lang-en-gb">English UK</p>
 <p lang="en-us" id="lang-en-us">English US</p>
@@ -1565,7 +1674,7 @@
 """
 
     def setUp(self):
-        self.soup = BeautifulSoup(self.HTML)
+        self.soup = BeautifulSoup(self.HTML, 'html.parser')
 
     def assertSelects(self, selector, expected_ids):
         el_ids = [el['id'] for el in self.soup.select(selector)]
@@ -1587,21 +1696,29 @@
         els = self.soup.select('title')
         self.assertEqual(len(els), 1)
         self.assertEqual(els[0].name, 'title')
-        self.assertEqual(els[0].contents, [u'The title'])
+        self.assertEqual(els[0].contents, ['The title'])
 
     def test_one_tag_many(self):
         els = self.soup.select('div')
-        self.assertEqual(len(els), 3)
+        self.assertEqual(len(els), 4)
         for div in els:
             self.assertEqual(div.name, 'div')
 
+        el = self.soup.select_one('div')
+        self.assertEqual('main', el['id'])
+
+    def test_select_one_returns_none_if_no_match(self):
+        match = self.soup.select_one('nonexistenttag')
+        self.assertEqual(None, match)
+
+
     def test_tag_in_tag_one(self):
         els = self.soup.select('div div')
-        self.assertSelects('div div', ['inner'])
+        self.assertSelects('div div', ['inner', 'data1'])
 
     def test_tag_in_tag_many(self):
         for selector in ('html div', 'html body div', 'body div'):
-            self.assertSelects(selector, ['main', 'inner', 'footer'])
+            self.assertSelects(selector, ['data1', 'main', 'inner', 'footer'])
 
     def test_tag_no_match(self):
         self.assertEqual(len(self.soup.select('del')), 0)
@@ -1609,6 +1726,20 @@
     def test_invalid_tag(self):
         self.assertRaises(ValueError, self.soup.select, 'tag%t')
 
+    def test_select_dashed_tag_ids(self):
+        self.assertSelects('custom-dashed-tag', ['dash1', 'dash2'])
+
+    def test_select_dashed_by_id(self):
+        dashed = self.soup.select('custom-dashed-tag[id=\"dash2\"]')
+        self.assertEqual(dashed[0].name, 'custom-dashed-tag')
+        self.assertEqual(dashed[0]['id'], 'dash2')
+
+    def test_dashed_tag_text(self):
+        self.assertEqual(self.soup.select('body > custom-dashed-tag')[0].text, 'Hello there.')
+
+    def test_select_dashed_matches_find_all(self):
+        self.assertEqual(self.soup.select('custom-dashed-tag'), self.soup.find_all('custom-dashed-tag'))
+
     def test_header_tags(self):
         self.assertSelectMultiple(
             ('h1', ['header1']),
@@ -1709,6 +1840,7 @@
             ('[id^="m"]', ['me', 'main']),
             ('div[id^="m"]', ['main']),
             ('a[id^="m"]', ['me']),
+            ('div[data-tag^="dashed"]', ['data1'])
         )
 
     def test_attribute_endswith(self):
@@ -1716,8 +1848,8 @@
             ('[href$=".css"]', ['l1']),
             ('link[href$=".css"]', ['l1']),
             ('link[id$="1"]', ['l1']),
-            ('[id$="1"]', ['l1', 'p1', 'header1', 's1a1', 's2a1', 's1a2s1']),
-            ('div[id$="1"]', []),
+            ('[id$="1"]', ['data1', 'l1', 'p1', 'header1', 's1a1', 's2a1', 's1a2s1', 'dash1']),
+            ('div[id$="1"]', ['data1']),
             ('[id$="noending"]', []),
         )
 
@@ -1730,7 +1862,6 @@
             ('[rel*="notstyle"]', []),
             ('link[rel*="notstyle"]', []),
             ('link[href*="bla"]', ['l1']),
-            ('a[href*="http://"]', ['bob', 'me']),
             ('[href*="http://"]', ['bob', 'me']),
             ('[id*="p"]', ['pmulti', 'p1']),
             ('div[id*="m"]', ['main']),
@@ -1739,8 +1870,8 @@
             ('[href*=".css"]', ['l1']),
             ('link[href*=".css"]', ['l1']),
             ('link[id*="1"]', ['l1']),
-            ('[id*="1"]', ['l1', 'p1', 'header1', 's1a1', 's1a2', 's2a1', 's1a2s1']),
-            ('div[id*="1"]', []),
+            ('[id*="1"]', ['data1', 'l1', 'p1', 'header1', 's1a1', 's1a2', 's2a1', 's1a2s1', 'dash1']),
+            ('div[id*="1"]', ['data1']),
             ('[id*="noending"]', []),
             # New for this test
             ('[href*="."]', ['bob', 'me', 'l1']),
@@ -1748,6 +1879,7 @@
             ('link[href*="."]', ['l1']),
             ('div[id*="n"]', ['main', 'inner']),
             ('div[id*="nn"]', ['inner']),
+            ('div[data-tag*="edval"]', ['data1'])
         )
 
     def test_attribute_exact_or_hypen(self):
@@ -1767,18 +1899,27 @@
             ('p[class]', ['p1', 'pmulti']),
             ('[blah]', []),
             ('p[blah]', []),
+            ('div[data-tag]', ['data1'])
         )
 
+    def test_unsupported_pseudoclass(self):
+        self.assertRaises(
+            NotImplementedError, self.soup.select, "a:no-such-pseudoclass")
+
+        self.assertRaises(
+            NotImplementedError, self.soup.select, "a:nth-of-type(a)")
+
+
     def test_nth_of_type(self):
         # Try to select first paragraph
         els = self.soup.select('div#inner p:nth-of-type(1)')
         self.assertEqual(len(els), 1)
-        self.assertEqual(els[0].string, u'Some text')
+        self.assertEqual(els[0].string, 'Some text')
 
         # Try to select third paragraph
         els = self.soup.select('div#inner p:nth-of-type(3)')
         self.assertEqual(len(els), 1)
-        self.assertEqual(els[0].string, u'Another')
+        self.assertEqual(els[0].string, 'Another')
 
         # Try to select (non-existent!) fourth paragraph
         els = self.soup.select('div#inner p:nth-of-type(4)')
@@ -1791,7 +1932,7 @@
     def test_nth_of_type_direct_descendant(self):
         els = self.soup.select('div#inner > p:nth-of-type(1)')
         self.assertEqual(len(els), 1)
-        self.assertEqual(els[0].string, u'Some text')
+        self.assertEqual(els[0].string, 'Some text')
 
     def test_id_child_selector_nth_of_type(self):
         self.assertSelects('#inner > p:nth-of-type(2)', ['p1'])
@@ -1803,7 +1944,7 @@
         selected = inner.select("div")
         # The <div id="inner"> tag was selected. The <div id="footer">
         # tag was not.
-        self.assertSelectsIDs(selected, ['inner'])
+        self.assertSelectsIDs(selected, ['inner', 'data1'])
 
     def test_overspecified_child_id(self):
         self.assertSelects(".fancy #inner", ['inner'])
@@ -1827,3 +1968,44 @@
 
     def test_sibling_combinator_wont_select_same_tag_twice(self):
         self.assertSelects('p[lang] ~ p', ['lang-en-gb', 'lang-en-us', 'lang-fr'])
+
+    # Test the selector grouping operator (the comma)
+    def test_multiple_select(self):
+        self.assertSelects('x, y', ['xid', 'yid'])
+
+    def test_multiple_select_with_no_space(self):
+        self.assertSelects('x,y', ['xid', 'yid'])
+
+    def test_multiple_select_with_more_space(self):
+        self.assertSelects('x,    y', ['xid', 'yid'])
+
+    def test_multiple_select_duplicated(self):
+        self.assertSelects('x, x', ['xid'])
+
+    def test_multiple_select_sibling(self):
+        self.assertSelects('x, y ~ p[lang=fr]', ['xid', 'lang-fr'])
+
+    def test_multiple_select_tag_and_direct_descendant(self):
+        self.assertSelects('x, y > z', ['xid', 'zidb'])
+
+    def test_multiple_select_direct_descendant_and_tags(self):
+        self.assertSelects('div > x, y, z', ['xid', 'yid', 'zida', 'zidb', 'zidab', 'zidac'])
+
+    def test_multiple_select_indirect_descendant(self):
+        self.assertSelects('div x,y,  z', ['xid', 'yid', 'zida', 'zidb', 'zidab', 'zidac'])
+
+    def test_invalid_multiple_select(self):
+        self.assertRaises(ValueError, self.soup.select, ',x, y')
+        self.assertRaises(ValueError, self.soup.select, 'x,,y')
+
+    def test_multiple_select_attrs(self):
+        self.assertSelects('p[lang=en], p[lang=en-gb]', ['lang-en', 'lang-en-gb'])
+
+    def test_multiple_select_ids(self):
+        self.assertSelects('x, y > z[id=zida], z[id=zidab], z[id=zidb]', ['xid', 'zidb', 'zidab'])
+
+    def test_multiple_select_nested(self):
+        self.assertSelects('body > div > x, y > z', ['xid', 'zidb'])
+
+
+
diff --git a/import-layers/yocto-poky/bitbake/lib/codegen.py b/import-layers/yocto-poky/bitbake/lib/codegen.py
index be772d5..62a6748 100644
--- a/import-layers/yocto-poky/bitbake/lib/codegen.py
+++ b/import-layers/yocto-poky/bitbake/lib/codegen.py
@@ -214,11 +214,11 @@
                 paren_or_comma()
                 self.write(keyword.arg + '=')
                 self.visit(keyword.value)
-            if node.starargs is not None:
+            if hasattr(node, 'starargs') and node.starargs is not None:
                 paren_or_comma()
                 self.write('*')
                 self.visit(node.starargs)
-            if node.kwargs is not None:
+            if hasattr(node, 'kwargs') and node.kwargs is not None:
                 paren_or_comma()
                 self.write('**')
                 self.visit(node.kwargs)
@@ -379,11 +379,11 @@
             write_comma()
             self.write(keyword.arg + '=')
             self.visit(keyword.value)
-        if node.starargs is not None:
+        if hasattr(node, 'starargs') and node.starargs is not None:
             write_comma()
             self.write('*')
             self.visit(node.starargs)
-        if node.kwargs is not None:
+        if hasattr(node, 'kwargs') and node.kwargs is not None:
             write_comma()
             self.write('**')
             self.visit(node.kwargs)
diff --git a/import-layers/yocto-poky/bitbake/lib/ply/yacc.py b/import-layers/yocto-poky/bitbake/lib/ply/yacc.py
index 6168fd9..d50886e 100644
--- a/import-layers/yocto-poky/bitbake/lib/ply/yacc.py
+++ b/import-layers/yocto-poky/bitbake/lib/ply/yacc.py
@@ -195,6 +195,8 @@
         self.lexer = None
         self.parser= None
     def __getitem__(self,n):
+        if isinstance(n,slice):
+            return [self[i] for i in range(*(n.indices(len(self.slice))))]
         if n >= 0: return self.slice[n].value
         else: return self.stack[n].value
 
diff --git a/import-layers/yocto-poky/bitbake/lib/progressbar.py b/import-layers/yocto-poky/bitbake/lib/progressbar.py
deleted file mode 100644
index 114cdc1..0000000
--- a/import-layers/yocto-poky/bitbake/lib/progressbar.py
+++ /dev/null
@@ -1,384 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: iso-8859-1 -*-
-#
-# progressbar  - Text progressbar library for python.
-# Copyright (c) 2005 Nilton Volpato
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-
-"""Text progressbar library for python.
-
-This library provides a text mode progressbar. This is typically used
-to display the progress of a long running operation, providing a
-visual clue that processing is underway.
-
-The ProgressBar class manages the progress, and the format of the line
-is given by a number of widgets. A widget is an object that may
-display diferently depending on the state of the progress. There are
-three types of widget:
-- a string, which always shows itself;
-- a ProgressBarWidget, which may return a diferent value every time
-it's update method is called; and
-- a ProgressBarWidgetHFill, which is like ProgressBarWidget, except it
-expands to fill the remaining width of the line.
-
-The progressbar module is very easy to use, yet very powerful. And
-automatically supports features like auto-resizing when available.
-"""
-
-from __future__ import division
-
-__author__ = "Nilton Volpato"
-__author_email__ = "first-name dot last-name @ gmail.com"
-__date__ = "2006-05-07"
-__version__ = "2.3-dev"
-
-import sys, time, os
-from array import array
-try:
-    from fcntl import ioctl
-    import termios
-except ImportError:
-    pass
-import signal
-try:
-    basestring
-except NameError:
-    basestring = (str,)
-
-class ProgressBarWidget(object):
-    """This is an element of ProgressBar formatting.
-
-    The ProgressBar object will call it's update value when an update
-    is needed. It's size may change between call, but the results will
-    not be good if the size changes drastically and repeatedly.
-    """
-    def update(self, pbar):
-        """Returns the string representing the widget.
-
-        The parameter pbar is a reference to the calling ProgressBar,
-        where one can access attributes of the class for knowing how
-        the update must be made.
-
-        At least this function must be overriden."""
-        pass
-
-class ProgressBarWidgetHFill(object):
-    """This is a variable width element of ProgressBar formatting.
-
-    The ProgressBar object will call it's update value, informing the
-    width this object must the made. This is like TeX \\hfill, it will
-    expand to fill the line. You can use more than one in the same
-    line, and they will all have the same width, and together will
-    fill the line.
-    """
-    def update(self, pbar, width):
-        """Returns the string representing the widget.
-
-        The parameter pbar is a reference to the calling ProgressBar,
-        where one can access attributes of the class for knowing how
-        the update must be made. The parameter width is the total
-        horizontal width the widget must have.
-
-        At least this function must be overriden."""
-        pass
-
-
-class ETA(ProgressBarWidget):
-    "Widget for the Estimated Time of Arrival"
-    def format_time(self, seconds):
-        return time.strftime('%H:%M:%S', time.gmtime(seconds))
-    def update(self, pbar):
-        if pbar.currval == 0:
-            return 'ETA:  --:--:--'
-        elif pbar.finished:
-            return 'Time: %s' % self.format_time(pbar.seconds_elapsed)
-        else:
-            elapsed = pbar.seconds_elapsed
-            eta = elapsed * pbar.maxval / pbar.currval - elapsed
-            return 'ETA:  %s' % self.format_time(eta)
-
-class FileTransferSpeed(ProgressBarWidget):
-    "Widget for showing the transfer speed (useful for file transfers)."
-    def __init__(self, unit='B'):
-        self.unit = unit
-        self.fmt = '%6.2f %s'
-        self.prefixes = ['', 'K', 'M', 'G', 'T', 'P']
-    def update(self, pbar):
-        if pbar.seconds_elapsed < 2e-6:#== 0:
-            bps = 0.0
-        else:
-            bps = pbar.currval / pbar.seconds_elapsed
-        spd = bps
-        for u in self.prefixes:
-            if spd < 1000:
-                break
-            spd /= 1000
-        return self.fmt % (spd, u + self.unit + '/s')
-
-class RotatingMarker(ProgressBarWidget):
-    "A rotating marker for filling the bar of progress."
-    def __init__(self, markers='|/-\\'):
-        self.markers = markers
-        self.curmark = -1
-    def update(self, pbar):
-        if pbar.finished:
-            return self.markers[0]
-        self.curmark = (self.curmark + 1) % len(self.markers)
-        return self.markers[self.curmark]
-
-class Percentage(ProgressBarWidget):
-    "Just the percentage done."
-    def update(self, pbar):
-        return '%3d%%' % pbar.percentage()
-
-class SimpleProgress(ProgressBarWidget):
-    "Returns what is already done and the total, e.g.: '5 of 47'"
-    def __init__(self, sep=' of '):
-        self.sep = sep
-    def update(self, pbar):
-        return '%d%s%d' % (pbar.currval, self.sep, pbar.maxval)
-
-class Bar(ProgressBarWidgetHFill):
-    "The bar of progress. It will stretch to fill the line."
-    def __init__(self, marker='#', left='|', right='|'):
-        self.marker = marker
-        self.left = left
-        self.right = right
-    def _format_marker(self, pbar):
-        if isinstance(self.marker, basestring):
-            return self.marker
-        else:
-            return self.marker.update(pbar)
-    def update(self, pbar, width):
-        percent = pbar.percentage()
-        cwidth = width - len(self.left) - len(self.right)
-        marked_width = int(percent * cwidth // 100)
-        m = self._format_marker(pbar)
-        bar = (self.left + (m * marked_width).ljust(cwidth) + self.right)
-        return bar
-
-class ReverseBar(Bar):
-    "The reverse bar of progress, or bar of regress. :)"
-    def update(self, pbar, width):
-        percent = pbar.percentage()
-        cwidth = width - len(self.left) - len(self.right)
-        marked_width = int(percent * cwidth // 100)
-        m = self._format_marker(pbar)
-        bar = (self.left + (m*marked_width).rjust(cwidth) + self.right)
-        return bar
-
-default_widgets = [Percentage(), ' ', Bar()]
-class ProgressBar(object):
-    """This is the ProgressBar class, it updates and prints the bar.
-
-    A common way of using it is like:
-    >>> pbar = ProgressBar().start()
-    >>> for i in xrange(100):
-    ...    # do something
-    ...    pbar.update(i+1)
-    ...
-    >>> pbar.finish()
-
-    You can also use a progressbar as an iterator:
-    >>> progress = ProgressBar()
-    >>> for i in progress(some_iterable):
-    ...    # do something
-    ...
-
-    But anything you want to do is possible (well, almost anything).
-    You can supply different widgets of any type in any order. And you
-    can even write your own widgets! There are many widgets already
-    shipped and you should experiment with them.
-
-    The term_width parameter must be an integer or None. In the latter case
-    it will try to guess it, if it fails it will default to 80 columns.
-
-    When implementing a widget update method you may access any
-    attribute or function of the ProgressBar object calling the
-    widget's update method. The most important attributes you would
-    like to access are:
-    - currval: current value of the progress, 0 <= currval <= maxval
-    - maxval: maximum (and final) value of the progress
-    - finished: True if the bar has finished (reached 100%), False o/w
-    - start_time: the time when start() method of ProgressBar was called
-    - seconds_elapsed: seconds elapsed since start_time
-    - percentage(): percentage of the progress [0..100]. This is a method.
-
-    The attributes above are unlikely to change between different versions,
-    the other ones may change or cease to exist without notice, so try to rely
-    only on the ones documented above if you are extending the progress bar.
-    """
-
-    __slots__ = ('currval', 'fd', 'finished', 'last_update_time', 'maxval',
-                 'next_update', 'num_intervals', 'seconds_elapsed',
-                 'signal_set', 'start_time', 'term_width', 'update_interval',
-                 'widgets', '_iterable')
-
-    _DEFAULT_MAXVAL = 100
-
-    def __init__(self, maxval=None, widgets=default_widgets, term_width=None,
-                 fd=sys.stderr):
-        self.maxval = maxval
-        self.widgets = widgets
-        self.fd = fd
-        self.signal_set = False
-        if term_width is not None:
-            self.term_width = term_width
-        else:
-            try:
-                self._handle_resize(None, None)
-                signal.signal(signal.SIGWINCH, self._handle_resize)
-                self.signal_set = True
-            except (SystemExit, KeyboardInterrupt):
-                raise
-            except:
-                self.term_width = int(os.environ.get('COLUMNS', 80)) - 1
-
-        self.currval = 0
-        self.finished = False
-        self.start_time = None
-        self.last_update_time = None
-        self.seconds_elapsed = 0
-        self._iterable = None
-
-    def __call__(self, iterable):
-        try:
-            self.maxval = len(iterable)
-        except TypeError:
-            # If the iterable has no length, then rely on the value provided
-            # by the user, otherwise fail.
-            if not (isinstance(self.maxval, (int, long)) and self.maxval > 0):
-                raise RuntimeError('Could not determine maxval from iterable. '
-                                   'You must explicitly provide a maxval.')
-        self._iterable = iter(iterable)
-        self.start()
-        return self
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        try:
-            next = self._iterable.next()
-            self.update(self.currval + 1)
-            return next
-        except StopIteration:
-            self.finish()
-            raise
-
-    def _handle_resize(self, signum, frame):
-        h, w = array('h', ioctl(self.fd, termios.TIOCGWINSZ, '\0' * 8))[:2]
-        self.term_width = w
-
-    def percentage(self):
-        "Returns the percentage of the progress."
-        return self.currval * 100.0 / self.maxval
-
-    def _format_widgets(self):
-        r = []
-        hfill_inds = []
-        num_hfill = 0
-        currwidth = 0
-        for i, w in enumerate(self.widgets):
-            if isinstance(w, ProgressBarWidgetHFill):
-                r.append(w)
-                hfill_inds.append(i)
-                num_hfill += 1
-            elif isinstance(w, basestring):
-                r.append(w)
-                currwidth += len(w)
-            else:
-                weval = w.update(self)
-                currwidth += len(weval)
-                r.append(weval)
-        for iw in hfill_inds:
-            widget_width = int((self.term_width - currwidth) // num_hfill)
-            r[iw] = r[iw].update(self, widget_width)
-        return r
-
-    def _format_line(self):
-        return ''.join(self._format_widgets()).ljust(self.term_width)
-
-    def _next_update(self):
-        return int((int(self.num_intervals *
-                        (self.currval / self.maxval)) + 1) *
-                   self.update_interval)
-
-    def _need_update(self):
-        """Returns true when the progressbar should print an updated line.
-
-        You can override this method if you want finer grained control over
-        updates.
-
-        The current implementation is optimized to be as fast as possible and
-        as economical as possible in the number of updates. However, depending
-        on your usage you may want to do more updates. For instance, if your
-        progressbar stays in the same percentage for a long time, and you want
-        to update other widgets, like ETA, then you could return True after
-        some time has passed with no updates.
-
-        Ideally you could call self._format_line() and see if it's different
-        from the previous _format_line() call, but calling _format_line() takes
-        around 20 times more time than calling this implementation of
-        _need_update().
-        """
-        return self.currval >= self.next_update
-
-    def update(self, value):
-        "Updates the progress bar to a new value."
-        assert 0 <= value <= self.maxval, '0 <= %d <= %d' % (value, self.maxval)
-        self.currval = value
-        if not self._need_update():
-            return
-        if self.start_time is None:
-            raise RuntimeError('You must call start() before calling update()')
-        now = time.time()
-        self.seconds_elapsed = now - self.start_time
-        self.next_update = self._next_update()
-        self.fd.write(self._format_line() + '\r')
-        self.last_update_time = now
-
-    def start(self):
-        """Starts measuring time, and prints the bar at 0%.
-
-        It returns self so you can use it like this:
-        >>> pbar = ProgressBar().start()
-        >>> for i in xrange(100):
-        ...    # do something
-        ...    pbar.update(i+1)
-        ...
-        >>> pbar.finish()
-        """
-        if self.maxval is None:
-            self.maxval = self._DEFAULT_MAXVAL
-        assert self.maxval > 0
-
-        self.num_intervals = max(100, self.term_width)
-        self.update_interval = self.maxval / self.num_intervals
-        self.next_update = 0
-
-        self.start_time = self.last_update_time = time.time()
-        self.update(0)
-        return self
-
-    def finish(self):
-        """Used to tell the progress is finished."""
-        self.finished = True
-        self.update(self.maxval)
-        self.fd.write('\n')
-        if self.signal_set:
-            signal.signal(signal.SIGWINCH, signal.SIG_DFL)
diff --git a/import-layers/yocto-poky/bitbake/lib/progressbar/LICENSE.txt b/import-layers/yocto-poky/bitbake/lib/progressbar/LICENSE.txt
new file mode 100644
index 0000000..fc8ccdc
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/progressbar/LICENSE.txt
@@ -0,0 +1,52 @@
+You can redistribute and/or modify this library under the terms of the
+GNU LGPL license or BSD license (or both).
+
+---
+
+progressbar - Text progress bar library for python.
+Copyright (C) 2005 Nilton Volpato
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+---
+
+progressbar - Text progress bar library for python
+Copyright (c) 2008 Nilton Volpato
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ a. Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+ b. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ c. Neither the name of the author nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/import-layers/yocto-poky/bitbake/lib/progressbar/__init__.py b/import-layers/yocto-poky/bitbake/lib/progressbar/__init__.py
new file mode 100644
index 0000000..fbab744
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/progressbar/__init__.py
@@ -0,0 +1,49 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# progressbar  - Text progress bar library for Python.
+# Copyright (c) 2005 Nilton Volpato
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+"""Text progress bar library for Python.
+
+A text progress bar is typically used to display the progress of a long
+running operation, providing a visual cue that processing is underway.
+
+The ProgressBar class manages the current progress, and the format of the line
+is given by a number of widgets. A widget is an object that may display
+differently depending on the state of the progress bar. There are three types
+of widgets:
+ - a string, which always shows itself
+
+ - a ProgressBarWidget, which may return a different value every time its
+   update method is called
+
+ - a ProgressBarWidgetHFill, which is like ProgressBarWidget, except it
+   expands to fill the remaining width of the line.
+
+The progressbar module is very easy to use, yet very powerful. It will also
+automatically enable features like auto-resizing when the system supports it.
+"""
+
+__author__ = 'Nilton Volpato'
+__author_email__ = 'first-name dot last-name @ gmail.com'
+__date__ = '2011-05-14'
+__version__ = '2.3'
+
+from .compat import *
+from .widgets import *
+from .progressbar import *
diff --git a/import-layers/yocto-poky/bitbake/lib/progressbar/compat.py b/import-layers/yocto-poky/bitbake/lib/progressbar/compat.py
new file mode 100644
index 0000000..a39f4a1
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/progressbar/compat.py
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+#
+# progressbar  - Text progress bar library for Python.
+# Copyright (c) 2005 Nilton Volpato
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+"""Compatibility methods and classes for the progressbar module."""
+
+
+# Python 3.x (and backports) use a modified iterator syntax
+# This will allow 2.x to behave with 3.x iterators
+try:
+  next
+except NameError:
+    def next(iter):
+        try:
+            # Try new style iterators
+            return iter.__next__()
+        except AttributeError:
+            # Fallback in case of a "native" iterator
+            return iter.next()
+
+
+# Python < 2.5 does not have "any"
+try:
+  any
+except NameError:
+   def any(iterator):
+      for item in iterator:
+         if item: return True
+      return False
diff --git a/import-layers/yocto-poky/bitbake/lib/progressbar/progressbar.py b/import-layers/yocto-poky/bitbake/lib/progressbar/progressbar.py
new file mode 100644
index 0000000..2873ad6
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/progressbar/progressbar.py
@@ -0,0 +1,315 @@
+# -*- coding: utf-8 -*-
+#
+# progressbar  - Text progress bar library for Python.
+# Copyright (c) 2005 Nilton Volpato
+#
+# (With some small changes after importing into BitBake)
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+"""Main ProgressBar class."""
+
+from __future__ import division
+
+import math
+import os
+import signal
+import sys
+import time
+
+try:
+    from fcntl import ioctl
+    from array import array
+    import termios
+except ImportError:
+    pass
+
+from .compat import *  # for: any, next
+from . import widgets
+
+
+class UnknownLength: pass
+
+
+class ProgressBar(object):
+    """The ProgressBar class which updates and prints the bar.
+
+    A common way of using it is like:
+    >>> pbar = ProgressBar().start()
+    >>> for i in range(100):
+    ...    # do something
+    ...    pbar.update(i+1)
+    ...
+    >>> pbar.finish()
+
+    You can also use a ProgressBar as an iterator:
+    >>> progress = ProgressBar()
+    >>> for i in progress(some_iterable):
+    ...    # do something
+    ...
+
+    Since the progress bar is incredibly customizable you can specify
+    different widgets of any type in any order. You can even write your own
+    widgets! However, since there are already a good number of widgets you
+    should probably play around with them before moving on to create your own
+    widgets.
+
+    The term_width parameter represents the current terminal width. If the
+    parameter is set to an integer then the progress bar will use that,
+    otherwise it will attempt to determine the terminal width falling back to
+    80 columns if the width cannot be determined.
+
+    When implementing a widget's update method you are passed a reference to
+    the current progress bar. As a result, you have access to the
+    ProgressBar's methods and attributes. Although there is nothing preventing
+    you from changing the ProgressBar you should treat it as read only.
+
+    Useful methods and attributes include (Public API):
+     - currval: current progress (0 <= currval <= maxval)
+     - maxval: maximum (and final) value
+     - finished: True if the bar has finished (reached 100%)
+     - start_time: the time when start() method of ProgressBar was called
+     - seconds_elapsed: seconds elapsed since start_time and last call to
+                        update
+     - percentage(): progress in percent [0..100]
+    """
+
+    __slots__ = ('currval', 'fd', 'finished', 'last_update_time',
+                 'left_justify', 'maxval', 'next_update', 'num_intervals',
+                 'poll', 'seconds_elapsed', 'signal_set', 'start_time',
+                 'term_width', 'update_interval', 'widgets', '_time_sensitive',
+                 '__iterable')
+
+    _DEFAULT_MAXVAL = 100
+    _DEFAULT_TERMSIZE = 80
+    _DEFAULT_WIDGETS = [widgets.Percentage(), ' ', widgets.Bar()]
+
+    def __init__(self, maxval=None, widgets=None, term_width=None, poll=1,
+                 left_justify=True, fd=sys.stderr):
+        """Initializes a progress bar with sane defaults."""
+
+        # Don't share a reference with any other progress bars
+        if widgets is None:
+            widgets = list(self._DEFAULT_WIDGETS)
+
+        self.maxval = maxval
+        self.widgets = widgets
+        self.fd = fd
+        self.left_justify = left_justify
+
+        self.signal_set = False
+        if term_width is not None:
+            self.term_width = term_width
+        else:
+            try:
+                self._handle_resize(None, None)
+                signal.signal(signal.SIGWINCH, self._handle_resize)
+                self.signal_set = True
+            except (SystemExit, KeyboardInterrupt): raise
+            except Exception as e:
+                print("DEBUG 5 %s" % e)
+                self.term_width = self._env_size()
+
+        self.__iterable = None
+        self._update_widgets()
+        self.currval = 0
+        self.finished = False
+        self.last_update_time = None
+        self.poll = poll
+        self.seconds_elapsed = 0
+        self.start_time = None
+        self.update_interval = 1
+        self.next_update = 0
+
+
+    def __call__(self, iterable):
+        """Use a ProgressBar to iterate through an iterable."""
+
+        try:
+            self.maxval = len(iterable)
+        except:
+            if self.maxval is None:
+                self.maxval = UnknownLength
+
+        self.__iterable = iter(iterable)
+        return self
+
+
+    def __iter__(self):
+        return self
+
+
+    def __next__(self):
+        try:
+            value = next(self.__iterable)
+            if self.start_time is None:
+                self.start()
+            else:
+                self.update(self.currval + 1)
+            return value
+        except StopIteration:
+            if self.start_time is None:
+                self.start()
+            self.finish()
+            raise
+
+
+    # Create an alias so that Python 2.x won't complain about not being
+    # an iterator.
+    next = __next__
+
+
+    def _env_size(self):
+        """Tries to find the term_width from the environment."""
+
+        return int(os.environ.get('COLUMNS', self._DEFAULT_TERMSIZE)) - 1
+
+
+    def _handle_resize(self, signum=None, frame=None):
+        """Tries to catch resize signals sent from the terminal."""
+
+        h, w = array('h', ioctl(self.fd, termios.TIOCGWINSZ, '\0' * 8))[:2]
+        self.term_width = w
+
+
+    def percentage(self):
+        """Returns the progress as a percentage."""
+        if self.currval >= self.maxval:
+            return 100.0
+        return (self.currval * 100.0 / self.maxval) if self.maxval else 100.00
+
+    percent = property(percentage)
+
+
+    def _format_widgets(self):
+        result = []
+        expanding = []
+        width = self.term_width
+
+        for index, widget in enumerate(self.widgets):
+            if isinstance(widget, widgets.WidgetHFill):
+                result.append(widget)
+                expanding.insert(0, index)
+            else:
+                widget = widgets.format_updatable(widget, self)
+                result.append(widget)
+                width -= len(widget)
+
+        count = len(expanding)
+        while count:
+            portion = max(int(math.ceil(width * 1. / count)), 0)
+            index = expanding.pop()
+            count -= 1
+
+            widget = result[index].update(self, portion)
+            width -= len(widget)
+            result[index] = widget
+
+        return result
+
+
+    def _format_line(self):
+        """Joins the widgets and justifies the line."""
+
+        widgets = ''.join(self._format_widgets())
+
+        if self.left_justify: return widgets.ljust(self.term_width)
+        else: return widgets.rjust(self.term_width)
+
+
+    def _need_update(self):
+        """Returns whether the ProgressBar should redraw the line."""
+        if self.currval >= self.next_update or self.finished: return True
+
+        delta = time.time() - self.last_update_time
+        return self._time_sensitive and delta > self.poll
+
+
+    def _update_widgets(self):
+        """Checks all widgets for the time sensitive bit."""
+
+        self._time_sensitive = any(getattr(w, 'TIME_SENSITIVE', False)
+                                    for w in self.widgets)
+
+
+    def update(self, value=None):
+        """Updates the ProgressBar to a new value."""
+
+        if value is not None and value is not UnknownLength:
+            if (self.maxval is not UnknownLength
+                and not 0 <= value <= self.maxval):
+
+                raise ValueError('Value out of range')
+
+            self.currval = value
+
+
+        if not self._need_update(): return
+        if self.start_time is None:
+            raise RuntimeError('You must call "start" before calling "update"')
+
+        now = time.time()
+        self.seconds_elapsed = now - self.start_time
+        self.next_update = self.currval + self.update_interval
+        output = self._format_line()
+        self.fd.write(output + '\r')
+        self.fd.flush()
+        self.last_update_time = now
+        return output
+
+
+    def start(self, update=True):
+        """Starts measuring time, and prints the bar at 0%.
+
+        It returns self so you can use it like this:
+        >>> pbar = ProgressBar().start()
+        >>> for i in range(100):
+        ...    # do something
+        ...    pbar.update(i+1)
+        ...
+        >>> pbar.finish()
+        """
+
+        if self.maxval is None:
+            self.maxval = self._DEFAULT_MAXVAL
+
+        self.num_intervals = max(100, self.term_width)
+        self.next_update = 0
+
+        if self.maxval is not UnknownLength:
+            if self.maxval < 0: raise ValueError('Value out of range')
+            self.update_interval = self.maxval / self.num_intervals
+
+
+        self.start_time = time.time()
+        if update:
+            self.last_update_time = self.start_time
+            self.update(0)
+        else:
+            self.last_update_time = 0
+
+        return self
+
+
+    def finish(self):
+        """Puts the ProgressBar bar in the finished state."""
+
+        if self.finished:
+            return
+        self.finished = True
+        self.update(self.maxval)
+        self.fd.write('\n')
+        if self.signal_set:
+            signal.signal(signal.SIGWINCH, signal.SIG_DFL)
diff --git a/import-layers/yocto-poky/bitbake/lib/progressbar/widgets.py b/import-layers/yocto-poky/bitbake/lib/progressbar/widgets.py
new file mode 100644
index 0000000..77285ca
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/progressbar/widgets.py
@@ -0,0 +1,391 @@
+# -*- coding: utf-8 -*-
+#
+# progressbar  - Text progress bar library for Python.
+# Copyright (c) 2005 Nilton Volpato
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+"""Default ProgressBar widgets."""
+
+from __future__ import division
+
+import datetime
+import math
+
+try:
+    from abc import ABCMeta, abstractmethod
+except ImportError:
+    AbstractWidget = object
+    abstractmethod = lambda fn: fn
+else:
+    AbstractWidget = ABCMeta('AbstractWidget', (object,), {})
+
+
+def format_updatable(updatable, pbar):
+    if hasattr(updatable, 'update'): return updatable.update(pbar)
+    else: return updatable
+
+
+class Widget(AbstractWidget):
+    """The base class for all widgets.
+
+    The ProgressBar will call the widget's update value when the widget should
+    be updated. The widget's size may change between calls, but the widget may
+    display incorrectly if the size changes drastically and repeatedly.
+
+    The boolean TIME_SENSITIVE informs the ProgressBar that it should be
+    updated more often because it is time sensitive.
+    """
+
+    TIME_SENSITIVE = False
+    __slots__ = ()
+
+    @abstractmethod
+    def update(self, pbar):
+        """Updates the widget.
+
+        pbar - a reference to the calling ProgressBar
+        """
+
+
+class WidgetHFill(Widget):
+    """The base class for all variable width widgets.
+
+    This widget is much like the \\hfill command in TeX, it will expand to
+    fill the line. You can use more than one in the same line, and they will
+    all have the same width, and together will fill the line.
+    """
+
+    @abstractmethod
+    def update(self, pbar, width):
+        """Updates the widget providing the total width the widget must fill.
+
+        pbar - a reference to the calling ProgressBar
+        width - The total width the widget must fill
+        """
+
+
+class Timer(Widget):
+    """Widget which displays the elapsed seconds."""
+
+    __slots__ = ('format_string',)
+    TIME_SENSITIVE = True
+
+    def __init__(self, format='Elapsed Time: %s'):
+        self.format_string = format
+
+    @staticmethod
+    def format_time(seconds):
+        """Formats time as the string "HH:MM:SS"."""
+
+        return str(datetime.timedelta(seconds=int(seconds)))
+
+
+    def update(self, pbar):
+        """Updates the widget to show the elapsed time."""
+
+        return self.format_string % self.format_time(pbar.seconds_elapsed)
+
+
+class ETA(Timer):
+    """Widget which attempts to estimate the time of arrival."""
+
+    TIME_SENSITIVE = True
+
+    def update(self, pbar):
+        """Updates the widget to show the ETA or total time when finished."""
+
+        if pbar.currval == 0:
+            return 'ETA:  --:--:--'
+        elif pbar.finished:
+            return 'Time: %s' % self.format_time(pbar.seconds_elapsed)
+        else:
+            elapsed = pbar.seconds_elapsed
+            eta = elapsed * pbar.maxval / pbar.currval - elapsed
+            return 'ETA:  %s' % self.format_time(eta)
+
+
+class AdaptiveETA(Timer):
+    """Widget which attempts to estimate the time of arrival.
+
+    Uses a weighted average of two estimates:
+      1) ETA based on the total progress and time elapsed so far
+      2) ETA based on the progress as per the last 10 update reports
+
+    The weight depends on the current progress so that to begin with the
+    total progress is used and at the end only the most recent progress is
+    used.
+    """
+
+    TIME_SENSITIVE = True
+    NUM_SAMPLES = 10
+
+    def _update_samples(self, currval, elapsed):
+        sample = (currval, elapsed)
+        if not hasattr(self, 'samples'):
+            self.samples = [sample] * (self.NUM_SAMPLES + 1)
+        else:
+            self.samples.append(sample)
+        return self.samples.pop(0)
+
+    def _eta(self, maxval, currval, elapsed):
+        return elapsed * maxval / float(currval) - elapsed
+
+    def update(self, pbar):
+        """Updates the widget to show the ETA or total time when finished."""
+        if pbar.currval == 0:
+            return 'ETA:  --:--:--'
+        elif pbar.finished:
+            return 'Time: %s' % self.format_time(pbar.seconds_elapsed)
+        else:
+            elapsed = pbar.seconds_elapsed
+            currval1, elapsed1 = self._update_samples(pbar.currval, elapsed)
+            eta = self._eta(pbar.maxval, pbar.currval, elapsed)
+            if pbar.currval > currval1:
+                etasamp = self._eta(pbar.maxval - currval1,
+                                    pbar.currval - currval1,
+                                    elapsed - elapsed1)
+                weight = (pbar.currval / float(pbar.maxval)) ** 0.5
+                eta = (1 - weight) * eta + weight * etasamp
+            return 'ETA:  %s' % self.format_time(eta)
+
+
+class FileTransferSpeed(Widget):
+    """Widget for showing the transfer speed (useful for file transfers)."""
+
+    FORMAT = '%6.2f %s%s/s'
+    PREFIXES = ' kMGTPEZY'
+    __slots__ = ('unit',)
+
+    def __init__(self, unit='B'):
+        self.unit = unit
+
+    def update(self, pbar):
+        """Updates the widget with the current SI prefixed speed."""
+
+        if pbar.seconds_elapsed < 2e-6 or pbar.currval < 2e-6: # =~ 0
+            scaled = power = 0
+        else:
+            speed = pbar.currval / pbar.seconds_elapsed
+            power = int(math.log(speed, 1000))
+            scaled = speed / 1000.**power
+
+        return self.FORMAT % (scaled, self.PREFIXES[power], self.unit)
+
+
+class AnimatedMarker(Widget):
+    """An animated marker for the progress bar which defaults to appear as if
+    it were rotating.
+    """
+
+    __slots__ = ('markers', 'curmark')
+
+    def __init__(self, markers='|/-\\'):
+        self.markers = markers
+        self.curmark = -1
+
+    def update(self, pbar):
+        """Updates the widget to show the next marker or the first marker when
+        finished"""
+
+        if pbar.finished: return self.markers[0]
+
+        self.curmark = (self.curmark + 1) % len(self.markers)
+        return self.markers[self.curmark]
+
+# Alias for backwards compatibility
+RotatingMarker = AnimatedMarker
+
+
+class Counter(Widget):
+    """Displays the current count."""
+
+    __slots__ = ('format_string',)
+
+    def __init__(self, format='%d'):
+        self.format_string = format
+
+    def update(self, pbar):
+        return self.format_string % pbar.currval
+
+
+class Percentage(Widget):
+    """Displays the current percentage as a number with a percent sign."""
+
+    def update(self, pbar):
+        return '%3d%%' % pbar.percentage()
+
+
+class FormatLabel(Timer):
+    """Displays a formatted label."""
+
+    mapping = {
+        'elapsed': ('seconds_elapsed', Timer.format_time),
+        'finished': ('finished', None),
+        'last_update': ('last_update_time', None),
+        'max': ('maxval', None),
+        'seconds': ('seconds_elapsed', None),
+        'start': ('start_time', None),
+        'value': ('currval', None)
+    }
+
+    __slots__ = ('format_string',)
+    def __init__(self, format):
+        self.format_string = format
+
+    def update(self, pbar):
+        context = {}
+        for name, (key, transform) in self.mapping.items():
+            try:
+                value = getattr(pbar, key)
+
+                if transform is None:
+                   context[name] = value
+                else:
+                   context[name] = transform(value)
+            except: pass
+
+        return self.format_string % context
+
+
+class SimpleProgress(Widget):
+    """Returns progress as a count of the total (e.g.: "5 of 47")."""
+
+    __slots__ = ('sep',)
+
+    def __init__(self, sep=' of '):
+        self.sep = sep
+
+    def update(self, pbar):
+        return '%d%s%d' % (pbar.currval, self.sep, pbar.maxval)
+
+
+class Bar(WidgetHFill):
+    """A progress bar which stretches to fill the line."""
+
+    __slots__ = ('marker', 'left', 'right', 'fill', 'fill_left')
+
+    def __init__(self, marker='#', left='|', right='|', fill=' ',
+                 fill_left=True):
+        """Creates a customizable progress bar.
+
+        marker - string or updatable object to use as a marker
+        left - string or updatable object to use as a left border
+        right - string or updatable object to use as a right border
+        fill - character to use for the empty part of the progress bar
+        fill_left - whether to fill from the left or the right
+        """
+        self.marker = marker
+        self.left = left
+        self.right = right
+        self.fill = fill
+        self.fill_left = fill_left
+
+
+    def update(self, pbar, width):
+        """Updates the progress bar and its subcomponents."""
+
+        left, marked, right = (format_updatable(i, pbar) for i in
+                               (self.left, self.marker, self.right))
+
+        width -= len(left) + len(right)
+        # Marked must *always* have length of 1
+        if pbar.maxval:
+          marked *= int(pbar.currval / pbar.maxval * width)
+        else:
+          marked = ''
+
+        if self.fill_left:
+            return '%s%s%s' % (left, marked.ljust(width, self.fill), right)
+        else:
+            return '%s%s%s' % (left, marked.rjust(width, self.fill), right)
+
+
+class ReverseBar(Bar):
+    """A bar which has a marker which bounces from side to side."""
+
+    def __init__(self, marker='#', left='|', right='|', fill=' ',
+                 fill_left=False):
+        """Creates a customizable progress bar.
+
+        marker - string or updatable object to use as a marker
+        left - string or updatable object to use as a left border
+        right - string or updatable object to use as a right border
+        fill - character to use for the empty part of the progress bar
+        fill_left - whether to fill from the left or the right
+        """
+        self.marker = marker
+        self.left = left
+        self.right = right
+        self.fill = fill
+        self.fill_left = fill_left
+
+
+class BouncingBar(Bar):
+    def update(self, pbar, width):
+        """Updates the progress bar and its subcomponents."""
+
+        left, marker, right = (format_updatable(i, pbar) for i in
+                               (self.left, self.marker, self.right))
+
+        width -= len(left) + len(right)
+
+        if pbar.finished: return '%s%s%s' % (left, width * marker, right)
+
+        position = int(pbar.currval % (width * 2 - 1))
+        if position > width: position = width * 2 - position
+        lpad = self.fill * (position - 1)
+        rpad = self.fill * (width - len(marker) - len(lpad))
+
+        # Swap if we want to bounce the other way
+        if not self.fill_left: rpad, lpad = lpad, rpad
+
+        return '%s%s%s%s%s' % (left, lpad, marker, rpad, right)
+
+
+class BouncingSlider(Bar):
+    """
+    A slider that bounces back and forth in response to update() calls
+    without reference to the actual value. Based on a combination of
+    BouncingBar from a newer version of this module and RotatingMarker.
+    """
+    def __init__(self, marker='<=>'):
+        self.curmark = -1
+        self.forward = True
+        Bar.__init__(self, marker=marker)
+    def update(self, pbar, width):
+        left, marker, right = (format_updatable(i, pbar) for i in
+                               (self.left, self.marker, self.right))
+
+        width -= len(left) + len(right)
+        if width < 0:
+            return ''
+
+        if pbar.finished: return '%s%s%s' % (left, width * '=', right)
+
+        self.curmark = self.curmark + 1
+        position = int(self.curmark % (width * 2 - 1))
+        if position + len(marker) > width:
+            self.forward = not self.forward
+            self.curmark = 1
+            position = 1
+        lpad = ' ' * (position - 1)
+        rpad = ' ' * (width - len(marker) - len(lpad))
+
+        if not self.forward:
+            temp = lpad
+            lpad = rpad
+            rpad = temp
+        return '%s%s%s%s%s' % (left, lpad, marker, rpad, right)
diff --git a/import-layers/yocto-poky/bitbake/lib/prserv/db.py b/import-layers/yocto-poky/bitbake/lib/prserv/db.py
index 2a86184..495d09f 100644
--- a/import-layers/yocto-poky/bitbake/lib/prserv/db.py
+++ b/import-layers/yocto-poky/bitbake/lib/prserv/db.py
@@ -260,7 +260,7 @@
         self.connection.close()
 
     def __getitem__(self,tblname):
-        if not isinstance(tblname, basestring):
+        if not isinstance(tblname, str):
             raise TypeError("tblname argument must be a string, not '%s'" %
                             type(tblname))
         if tblname in self._tables:
diff --git a/import-layers/yocto-poky/bitbake/lib/prserv/serv.py b/import-layers/yocto-poky/bitbake/lib/prserv/serv.py
index affccd9..cafcc82 100644
--- a/import-layers/yocto-poky/bitbake/lib/prserv/serv.py
+++ b/import-layers/yocto-poky/bitbake/lib/prserv/serv.py
@@ -1,10 +1,10 @@
 import os,sys,logging
 import signal, time
-from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
+from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
 import threading
-import Queue
+import queue
 import socket
-import StringIO
+import io
 
 try:
     import sqlite3
@@ -64,7 +64,7 @@
         self.register_function(self.importone, "importone")
         self.register_introspection_functions()
 
-        self.requestqueue = Queue.Queue()
+        self.requestqueue = queue.Queue()
         self.handlerthread = threading.Thread(target = self.process_request_thread)
         self.handlerthread.daemon = False
 
@@ -83,7 +83,7 @@
         while not self.quit:
             try:
                 (request, client_address) = self.requestqueue.get(True, 30)
-            except Queue.Empty:
+            except queue.Empty:
                 self.table.sync_if_dirty()
                 continue
             try:
@@ -126,7 +126,7 @@
         Returns None if the database engine does not support dumping to
         script or if some other error is encountered in processing.
         """
-        buff = StringIO.StringIO()
+        buff = io.StringIO()
         try:
             self.table.sync()
             self.table.dump_db(buff)
@@ -242,8 +242,8 @@
 
         sys.stdout.flush()
         sys.stderr.flush()
-        si = file('/dev/null', 'r')
-        so = file(self.logfile, 'a+')
+        si = open('/dev/null', 'r')
+        so = open(self.logfile, 'a+')
         se = so
         os.dup2(si.fileno(),sys.stdin.fileno())
         os.dup2(so.fileno(),sys.stdout.fileno())
@@ -263,7 +263,7 @@
 
         # write pidfile
         pid = str(os.getpid()) 
-        pf = file(self.pidfile, 'w')
+        pf = open(self.pidfile, 'w')
         pf.write("%s\n" % pid)
         pf.close()
 
@@ -323,7 +323,7 @@
     ip = socket.gethostbyname(host)
     pidfile = PIDPREFIX % (ip, port)
     try:
-        pf = file(pidfile,'r')
+        pf = open(pidfile,'r')
         pid = int(pf.readline().strip())
         pf.close()
     except IOError:
@@ -350,7 +350,7 @@
     ip = socket.gethostbyname(host)
     pidfile = PIDPREFIX % (ip, port)
     try:
-        pf = file(pidfile,'r')
+        pf = open(pidfile,'r')
         pid = int(pf.readline().strip())
         pf.close()
     except IOError:
@@ -420,7 +420,7 @@
 def auto_start(d):
     global singleton
 
-    host_params = filter(None, (d.getVar('PRSERV_HOST', True) or '').split(':'))
+    host_params = list(filter(None, (d.getVar('PRSERV_HOST', True) or '').split(':')))
     if not host_params:
         return None
 
diff --git a/import-layers/yocto-poky/bitbake/lib/pyinotify.py b/import-layers/yocto-poky/bitbake/lib/pyinotify.py
index 2dae002..4eb03b0 100644
--- a/import-layers/yocto-poky/bitbake/lib/pyinotify.py
+++ b/import-layers/yocto-poky/bitbake/lib/pyinotify.py
@@ -42,13 +42,14 @@
         @param version: Current Python version
         @type version: string
         """
-        err = 'Python %s is unsupported, requires at least Python 2.4'
-        PyinotifyError.__init__(self, err % version)
+        PyinotifyError.__init__(self,
+                                ('Python %s is unsupported, requires '
+                                 'at least Python 3.0') % version)
 
 
 # Check Python version
 import sys
-if sys.version_info < (2, 4):
+if sys.version_info < (3, 0):
     raise UnsupportedPythonVersionError(sys.version)
 
 
@@ -68,6 +69,8 @@
 import time
 import re
 import asyncore
+import glob
+import locale
 import subprocess
 
 try:
@@ -76,12 +79,6 @@
     pass  # Will fail on Python 2.4 which has reduce() builtin anyway.
 
 try:
-    from glob import iglob as glob
-except ImportError:
-    # Python 2.4 does not have glob.iglob().
-    from glob import glob as glob
-
-try:
     import ctypes
     import ctypes.util
 except ImportError:
@@ -95,9 +92,7 @@
 
 __author__ = "seb@dbzteam.org (Sebastien Martini)"
 
-__version__ = "0.9.5"
-
-__metaclass__ = type  # Use new-style classes by default
+__version__ = "0.9.6"
 
 
 # Compatibity mode: set to True to improve compatibility with
@@ -122,6 +117,9 @@
     """
     @staticmethod
     def create():
+        """
+        Factory method instanciating and returning the right wrapper.
+        """
         # First, try to use ctypes.
         if ctypes:
             inotify = _CtypesLibcINotifyWrapper()
@@ -173,7 +171,7 @@
     def _inotify_init(self):
         try:
             fd = inotify_syscalls.inotify_init()
-        except IOError, err:
+        except IOError as err:
             self._last_errno = err.errno
             return -1
         return fd
@@ -181,7 +179,7 @@
     def _inotify_add_watch(self, fd, pathname, mask):
         try:
             wd = inotify_syscalls.inotify_add_watch(fd, pathname, mask)
-        except IOError, err:
+        except IOError as err:
             self._last_errno = err.errno
             return -1
         return wd
@@ -189,7 +187,7 @@
     def _inotify_rm_watch(self, fd, wd):
         try:
             ret = inotify_syscalls.inotify_rm_watch(fd, wd)
-        except IOError, err:
+        except IOError as err:
             self._last_errno = err.errno
             return -1
         return ret
@@ -213,17 +211,8 @@
         except (OSError, IOError):
             pass  # Will attemp to load it with None anyway.
 
-        if sys.version_info >= (2, 6):
-            self._libc = ctypes.CDLL(libc_name, use_errno=True)
-            self._get_errno_func = ctypes.get_errno
-        else:
-            self._libc = ctypes.CDLL(libc_name)
-            try:
-                location = self._libc.__errno_location
-                location.restype = ctypes.POINTER(ctypes.c_int)
-                self._get_errno_func = lambda: location().contents.value
-            except AttributeError:
-                pass
+        self._libc = ctypes.CDLL(libc_name, use_errno=True)
+        self._get_errno_func = ctypes.get_errno
 
         # Eventually check that libc has needed inotify bindings.
         if (not hasattr(self._libc, 'inotify_init') or
@@ -241,9 +230,8 @@
         return True
 
     def _get_errno(self):
-        if self._get_errno_func is not None:
-            return self._get_errno_func()
-        return None
+        assert self._get_errno_func
+        return self._get_errno_func()
 
     def _inotify_init(self):
         assert self._libc is not None
@@ -251,6 +239,11 @@
 
     def _inotify_add_watch(self, fd, pathname, mask):
         assert self._libc is not None
+        # Encodes path to a bytes string. This conversion seems required because
+        # ctypes.create_string_buffer seems to manipulate bytes internally.
+        # Moreover it seems that inotify_add_watch does not work very well when
+        # it receives an ctypes.create_unicode_buffer instance as argument.
+        pathname = pathname.encode(sys.getfilesystemencoding())
         pathname = ctypes.create_string_buffer(pathname)
         return self._libc.inotify_add_watch(fd, pathname, mask)
 
@@ -258,10 +251,6 @@
         assert self._libc is not None
         return self._libc.inotify_rm_watch(fd, wd)
 
-    def _sysctl(self, *args):
-        assert self._libc is not None
-        return self._libc.sysctl(*args)
-
 
 # Logging
 def logger_init():
@@ -278,97 +267,58 @@
 
 
 # inotify's variables
-class SysCtlINotify:
+class ProcINotify:
     """
-    Access (read, write) inotify's variables through sysctl. Usually it
-    requires administrator rights to update them.
+    Access (read, write) inotify's variables through /proc/sys/. Note that
+    usually it requires administrator rights to update them.
 
     Examples:
       - Read max_queued_events attribute: myvar = max_queued_events.value
       - Update max_queued_events attribute: max_queued_events.value = 42
     """
-
-    inotify_attrs = {'max_user_instances': 1,
-                     'max_user_watches': 2,
-                     'max_queued_events': 3}
-
-    def __init__(self, attrname, inotify_wrapper):
-        # FIXME: right now only supporting ctypes
-        assert ctypes
-        self._attrname = attrname
-        self._inotify_wrapper = inotify_wrapper
-        sino = ctypes.c_int * 3
-        self._attr = sino(5, 20, SysCtlINotify.inotify_attrs[attrname])
-
-    @staticmethod
-    def create(attrname):
-        """
-        Factory method instanciating and returning the right wrapper.
-        """
-        # FIXME: right now only supporting ctypes
-        if ctypes is None:
-            return None
-        inotify_wrapper = _CtypesLibcINotifyWrapper()
-        if not inotify_wrapper.init():
-            return None
-        return SysCtlINotify(attrname, inotify_wrapper)
+    def __init__(self, attr):
+        self._base = "/proc/sys/fs/inotify"
+        self._attr = attr
 
     def get_val(self):
         """
-        Gets attribute's value. Raises OSError if the operation failed.
+        Gets attribute's value.
 
         @return: stored value.
         @rtype: int
+        @raise IOError: if corresponding file in /proc/sys cannot be read.
         """
-        oldv = ctypes.c_int(0)
-        size = ctypes.c_int(ctypes.sizeof(oldv))
-        sysctl = self._inotify_wrapper._sysctl
-        res = sysctl(self._attr, 3,
-                     ctypes.c_voidp(ctypes.addressof(oldv)),
-                     ctypes.addressof(size),
-                     None, 0)
-        if res == -1:
-            raise OSError(self._inotify_wrapper.get_errno(),
-                          self._inotify_wrapper.str_errno())
-        return oldv.value
+        with open(os.path.join(self._base, self._attr), 'r') as file_obj:
+            return int(file_obj.readline())
 
     def set_val(self, nval):
         """
-        Sets new attribute's value. Raises OSError if the operation failed.
+        Sets new attribute's value.
 
         @param nval: replaces current value by nval.
         @type nval: int
+        @raise IOError: if corresponding file in /proc/sys cannot be written.
         """
-        oldv = ctypes.c_int(0)
-        sizeo = ctypes.c_int(ctypes.sizeof(oldv))
-        newv = ctypes.c_int(nval)
-        sizen = ctypes.c_int(ctypes.sizeof(newv))
-        sysctl = self._inotify_wrapper._sysctl
-        res = sysctl(self._attr, 3,
-                     ctypes.c_voidp(ctypes.addressof(oldv)),
-                     ctypes.addressof(sizeo),
-                     ctypes.c_voidp(ctypes.addressof(newv)),
-                     sizen)
-        if res == -1:
-            raise OSError(self._inotify_wrapper.get_errno(),
-                          self._inotify_wrapper.str_errno())
+        with open(os.path.join(self._base, self._attr), 'w') as file_obj:
+            file_obj.write(str(nval) + '\n')
 
     value = property(get_val, set_val)
 
     def __repr__(self):
-        return '<%s=%d>' % (self._attrname, self.get_val())
+        return '<%s=%d>' % (self._attr, self.get_val())
 
 
 # Inotify's variables
 #
-# FIXME: currently these variables are only accessible when ctypes is used,
-#        otherwise there are set to None.
+# Note: may raise IOError if the corresponding value in /proc/sys
+#       cannot be accessed.
 #
-# read: myvar = max_queued_events.value
-# update: max_queued_events.value = 42
+# Examples:
+#  - read: myvar = max_queued_events.value
+#  - update: max_queued_events.value = 42
 #
 for attrname in ('max_queued_events', 'max_user_instances', 'max_user_watches'):
-    globals()[attrname] = SysCtlINotify.create(attrname)
+    globals()[attrname] = ProcINotify(attrname)
 
 
 class EventsCodes:
@@ -536,7 +486,7 @@
                 continue
             if attr == 'mask':
                 value = hex(getattr(self, attr))
-            elif isinstance(value, basestring) and not value:
+            elif isinstance(value, str) and not value:
                 value = "''"
             s += ' %s%s%s' % (output_format.field_name(attr),
                               output_format.punctuation('='),
@@ -628,7 +578,7 @@
                                                              self.name))
             else:
                 self.pathname = os.path.abspath(self.path)
-        except AttributeError, err:
+        except AttributeError as err:
             # Usually it is not an error some events are perfectly valids
             # despite the lack of these attributes.
             log.debug(err)
@@ -718,8 +668,8 @@
         and self._mv.
         """
         date_cur_ = datetime.now()
-        for seq in [self._mv_cookie, self._mv]:
-            for k in seq.keys():
+        for seq in (self._mv_cookie, self._mv):
+            for k in list(seq.keys()):
                 if (date_cur_ - seq[k][1]) > timedelta(minutes=1):
                     log.debug('Cleanup: deleting entry %s', seq[k][0])
                     del seq[k]
@@ -767,9 +717,9 @@
                                 continue
                             rawevent = _RawEvent(created_dir_wd, flags, 0, name)
                             self._notifier.append_event(rawevent)
-                    except OSError, err:
-                        msg = "process_IN_CREATE, invalid directory %s: %s"
-                        log.debug(msg % (created_dir, str(err)))
+                    except OSError as err:
+                        msg = "process_IN_CREATE, invalid directory: %s"
+                        log.debug(msg % str(err))
         return self.process_default(raw_event)
 
     def process_IN_MOVED_FROM(self, raw_event):
@@ -1097,8 +1047,8 @@
         @type filename: string
         """
         flags = os.O_WRONLY|os.O_CREAT|os.O_NOFOLLOW|os.O_EXCL
-        fd = os.open(filename, flags, 0600)
-        os.write(fd, str(self))
+        fd = os.open(filename, flags, 0o0600)
+        os.write(fd, bytes(self.__str__(), locale.getpreferredencoding()))
         os.close(fd)
 
     def __str__(self, scale=45):
@@ -1107,7 +1057,7 @@
             return ''
 
         m = max(stats.values())
-        unity = float(scale) / m
+        unity = scale / m
         fmt = '%%-26s%%-%ds%%s' % (len(output_format.field_value('@' * scale))
                                    + 1)
         def func(x):
@@ -1149,7 +1099,7 @@
         @type default_proc_fun: instance of ProcessEvent
         @param read_freq: if read_freq == 0, events are read asap,
                           if read_freq is > 0, this thread sleeps
-                          max(0, read_freq - timeout) seconds. But if
+                          max(0, read_freq - (timeout / 1000)) seconds. But if
                           timeout is None it may be different because
                           poll is blocking waiting for something to read.
         @type read_freq: int
@@ -1161,8 +1111,9 @@
                           until the amount of events to read is >= threshold.
                           At least with read_freq set you might sleep.
         @type threshold: int
-        @param timeout:
-            https://docs.python.org/3/library/select.html#polling-objects
+        @param timeout: see read_freq above. If provided, it must be set in
+                        milliseconds. See
+                        https://docs.python.org/3/library/select.html#select.poll.poll
         @type timeout: int
         """
         # Watch Manager instance
@@ -1228,7 +1179,8 @@
         milliseconds.
 
         @param timeout: If specified it overrides the corresponding instance
-                        attribute _timeout.
+                        attribute _timeout. timeout must be sepcified in
+                        milliseconds.
         @type timeout: int
 
         @return: New events to read.
@@ -1240,8 +1192,8 @@
                 if timeout is None:
                     timeout = self._timeout
                 ret = self._pollobj.poll(timeout)
-            except select.error, err:
-                if err[0] == errno.EINTR:
+            except select.error as err:
+                if err.args[0] == errno.EINTR:
                     continue # interrupted, retry
                 else:
                     raise
@@ -1271,7 +1223,7 @@
         try:
             # Read content from file
             r = os.read(self._fd, queue_size)
-        except Exception, msg:
+        except Exception as msg:
             raise NotifierError(msg)
         log.debug('Event queue size: %d', queue_size)
         rsum = 0  # counter
@@ -1281,9 +1233,11 @@
             wd, mask, cookie, fname_len = struct.unpack('iIII',
                                                         r[rsum:rsum+s_size])
             # Retrieve name
-            fname, = struct.unpack('%ds' % fname_len,
+            bname, = struct.unpack('%ds' % fname_len,
                                    r[rsum + s_size:rsum + s_size + fname_len])
-            rawevent = _RawEvent(wd, mask, cookie, fname)
+            # FIXME: should we explictly call sys.getdefaultencoding() here ??
+            uname = bname.decode()
+            rawevent = _RawEvent(wd, mask, cookie, uname)
             if self._coalesce:
                 # Only enqueue new (unique) events.
                 raweventstr = str(rawevent)
@@ -1326,13 +1280,10 @@
     def __daemonize(self, pid_file=None, stdin=os.devnull, stdout=os.devnull,
                     stderr=os.devnull):
         """
-        @param pid_file: file where the pid will be written. If pid_file=None
-                         the pid is written to
-                         /var/run/<sys.argv[0]|pyinotify>.pid, if pid_file=False
-                         no pid_file is written.
-        @param stdin:
-        @param stdout:
-        @param stderr: files associated to common streams.
+        pid_file: file where the pid will be written. If pid_file=None the pid
+                  is written to /var/run/<sys.argv[0]|pyinotify>.pid, if
+                  pid_file=False no pid_file is written.
+        stdin, stdout, stderr: files associated to common streams.
         """
         if pid_file is None:
             dirname = '/var/run/'
@@ -1354,7 +1305,7 @@
                 if (pid == 0):
                     # child
                     os.chdir('/')
-                    os.umask(022)
+                    os.umask(0o022)
                 else:
                     # parent 2
                     os._exit(0)
@@ -1364,9 +1315,9 @@
 
             fd_inp = os.open(stdin, os.O_RDONLY)
             os.dup2(fd_inp, 0)
-            fd_out = os.open(stdout, os.O_WRONLY|os.O_CREAT, 0600)
+            fd_out = os.open(stdout, os.O_WRONLY|os.O_CREAT, 0o0600)
             os.dup2(fd_out, 1)
-            fd_err = os.open(stderr, os.O_WRONLY|os.O_CREAT, 0600)
+            fd_err = os.open(stderr, os.O_WRONLY|os.O_CREAT, 0o0600)
             os.dup2(fd_err, 2)
 
         # Detach task
@@ -1375,8 +1326,9 @@
         # Write pid
         if pid_file != False:
             flags = os.O_WRONLY|os.O_CREAT|os.O_NOFOLLOW|os.O_EXCL
-            fd_pid = os.open(pid_file, flags, 0600)
-            os.write(fd_pid, str(os.getpid()) + '\n')
+            fd_pid = os.open(pid_file, flags, 0o0600)
+            os.write(fd_pid,  bytes(str(os.getpid()) + '\n',
+                                    locale.getpreferredencoding()))
             os.close(fd_pid)
             # Register unlink function
             atexit.register(lambda : os.unlink(pid_file))
@@ -1441,9 +1393,12 @@
         Close inotify's instance (close its file descriptor).
         It destroys all existing watches, pending events,...
         This method is automatically called at the end of loop().
+        Afterward it is invalid to access this instance.
         """
-        self._pollobj.unregister(self._fd)
-        os.close(self._fd)
+        if self._fd is not None:
+            self._pollobj.unregister(self._fd)
+            os.close(self._fd)
+            self._fd = None
         self._sys_proc_fun = None
 
 
@@ -1468,7 +1423,7 @@
         @type default_proc_fun: instance of ProcessEvent
         @param read_freq: if read_freq == 0, events are read asap,
                           if read_freq is > 0, this thread sleeps
-                          max(0, read_freq - timeout) seconds.
+                          max(0, read_freq - (timeout / 1000)) seconds.
         @type read_freq: int
         @param threshold: File descriptor will be read only if the accumulated
                           size to read becomes >= threshold. If != 0, you likely
@@ -1478,8 +1433,9 @@
                           until the amount of events to read is >= threshold. At
                           least with read_freq you might sleep.
         @type threshold: int
-        @param timeout:
-            https://docs.python.org/3/library/select.html#polling-objects
+        @param timeout: see read_freq above. If provided, it must be set in
+                        milliseconds. See
+                        https://docs.python.org/3/library/select.html#select.poll.poll
         @type timeout: int
         """
         # Init threading base class
@@ -1498,7 +1454,7 @@
         Stop notifier's loop. Stop notification. Join the thread.
         """
         self._stop_event.set()
-        os.write(self._pipe[1], 'stop')
+        os.write(self._pipe[1], b'stop')
         threading.Thread.join(self)
         Notifier.stop(self)
         self._pollobj.unregister(self._pipe[0])
@@ -1699,7 +1655,6 @@
 class ExcludeFilter:
     """
     ExcludeFilter is an exclusion filter.
-
     """
     def __init__(self, arg_lst):
         """
@@ -1731,16 +1686,13 @@
 
     def _load_patterns_from_file(self, filename):
         lst = []
-        file_obj = file(filename, 'r')
-        try:
+        with open(filename, 'r') as file_obj:
             for line in file_obj.readlines():
                 # Trim leading an trailing whitespaces
                 pattern = line.strip()
                 if not pattern or pattern.startswith('#'):
                     continue
                 lst.append(pattern)
-        finally:
-            file_obj.close()
         return lst
 
     def _match(self, regex, path):
@@ -1764,7 +1716,6 @@
     """
     WatchManager Exception. Raised on error encountered on watches
     operations.
-
     """
     def __init__(self, msg, wmd):
         """
@@ -1851,7 +1802,7 @@
         """
         try:
             del self._wmd[wd]
-        except KeyError, err:
+        except KeyError as err:
             log.error('Cannot delete unknown watch descriptor %s' % str(err))
 
     @property
@@ -1868,13 +1819,7 @@
         """
         Format path to its internal (stored in watch manager) representation.
         """
-        # Unicode strings are converted back to strings, because it seems
-        # that inotify_add_watch from ctypes does not work well when
-        # it receives an ctypes.create_unicode_buffer instance as argument.
-        # Therefore even wd are indexed with bytes string and not with
-        # unicode paths.
-        if isinstance(path, unicode):
-            path = path.encode(sys.getfilesystemencoding())
+        # path must be a unicode string (str) and is just normalized.
         return os.path.normpath(path)
 
     def __add_watch(self, path, mask, proc_fun, auto_add, exclude_filter):
@@ -1890,13 +1835,14 @@
             return wd
         watch = Watch(wd=wd, path=path, mask=mask, proc_fun=proc_fun,
                       auto_add=auto_add, exclude_filter=exclude_filter)
+        # wd are _always_ indexed with their original unicode paths in wmd.
         self._wmd[wd] = watch
         log.debug('New %s', watch)
         return wd
 
     def __glob(self, path, do_glob):
         if do_glob:
-            return glob(path)
+            return glob.iglob(path)
         else:
             return [path]
 
@@ -1907,11 +1853,8 @@
         Add watch(s) on the provided |path|(s) with associated |mask| flag
         value and optionally with a processing |proc_fun| function and
         recursive flag |rec| set to True.
-        Ideally |path| components should not be unicode objects. Note that
-        although unicode paths are accepted there are converted to byte
-        strings before a watch is put on that path. The encoding used for
-        converting the unicode object is given by sys.getfilesystemencoding().
-        If |path| si already watched it is ignored, but if it is called with
+        All |path| components _must_ be str (i.e. unicode) objects.
+        If |path| is already watched it is ignored, but if it is called with
         option rec=True a watch is put on each one of its not-watched
         subdirectory.
 
@@ -1945,10 +1888,9 @@
                                the class' constructor.
         @type exclude_filter: callable object
         @return: dict of paths associated to watch descriptors. A wd value
-                 is positive if the watch was added sucessfully,
-                 otherwise the value is negative. If the path was invalid
-                 or was already watched it is not included into this returned
-                 dictionary.
+                 is positive if the watch was added sucessfully, otherwise
+                 the value is negative. If the path was invalid or was already
+                 watched it is not included into this returned dictionary.
         @rtype: dict of {str: int}
         """
         ret_ = {} # return {path: wd, ...}
@@ -1958,6 +1900,11 @@
 
         # normalize args as list elements
         for npath in self.__format_param(path):
+            # Require that path be a unicode string
+            if not isinstance(npath, str):
+                ret_[path] = -3
+                continue
+
             # unix pathname pattern expansion
             for apath in self.__glob(npath, do_glob):
                 # recursively list subdirs according to rec param
@@ -2242,7 +2189,6 @@
                              "Make watch manager ignoring new events.")
 
 
-
 class RawOutputFormat:
     """
     Format string representations.
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcollector/admin.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcollector/admin.py
index c1f85d7..1f2e07f 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcollector/admin.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcollector/admin.py
@@ -1,33 +1,33 @@
 from django.contrib import admin
-from django.contrib.admin.filters import RelatedFieldListFilter
-from orm.models import BitbakeVersion, Release, LayerSource, ToasterSetting
-from django.forms.widgets import Textarea
+from orm.models import BitbakeVersion, Release, ToasterSetting, Layer_Version
 from django import forms
 import django.db.models as models
 
-from django.contrib.admin import widgets, helpers
-
-class LayerSourceAdmin(admin.ModelAdmin):
-    pass
 
 class BitbakeVersionAdmin(admin.ModelAdmin):
 
-    # we override the formfield for db URLField because of broken URL validation
+    # we override the formfield for db URLField
+    # because of broken URL validation
 
     def formfield_for_dbfield(self, db_field, **kwargs):
         if isinstance(db_field, models.fields.URLField):
             return forms.fields.CharField()
-        return super(BitbakeVersionAdmin, self).formfield_for_dbfield(db_field, **kwargs)
-
+        return super(BitbakeVersionAdmin, self).formfield_for_dbfield(
+            db_field, **kwargs)
 
 
 class ReleaseAdmin(admin.ModelAdmin):
     pass
 
+
 class ToasterSettingAdmin(admin.ModelAdmin):
     pass
 
-admin.site.register(LayerSource, LayerSourceAdmin)
+
+class LayerVersionsAdmin(admin.ModelAdmin):
+    pass
+
+admin.site.register(Layer_Version, LayerVersionsAdmin)
 admin.site.register(BitbakeVersion, BitbakeVersionAdmin)
 admin.site.register(Release, ReleaseAdmin)
 admin.site.register(ToasterSetting, ToasterSettingAdmin)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py
index d09ac17..912f67b 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/bbcontroller.py
@@ -30,7 +30,6 @@
 # load Bitbake components
 path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
 sys.path.insert(0, path)
-import bb.server.xmlrpc
 
 class BitbakeController(object):
     """ This is the basic class that controlls a bitbake server.
@@ -38,6 +37,7 @@
     """
 
     def __init__(self, be):
+        import bb.server.xmlrpc
         self.connection = bb.server.xmlrpc._create_server(be.bbaddress,
                                                           int(be.bbport))[0]
 
@@ -79,7 +79,7 @@
         The return object MUST always be a BuildEnvironmentController.
     """
 
-    from localhostbecontroller import LocalhostBEController
+    from bldcontrol.localhostbecontroller import LocalhostBEController
 
     be = BuildEnvironment.objects.filter(Q(**kwargs))[0]
     if be.betype == BuildEnvironment.TYPE_LOCAL:
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
index 7def1f3..e5f7c98 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
@@ -32,7 +32,7 @@
 
 from toastermain import settings
 
-from bbcontroller import BuildEnvironmentController, ShellCmdException, BuildSetupException, BitbakeController
+from bldcontrol.bbcontroller import BuildEnvironmentController, ShellCmdException, BuildSetupException, BitbakeController
 
 import logging
 logger = logging.getLogger("toaster")
@@ -66,16 +66,16 @@
                 err = "command: %s \n%s" % (command, out)
             else:
                 err = "command: %s \n%s" % (command, err)
-            logger.warn("localhostbecontroller: shellcmd error %s" % err)
+            logger.warning("localhostbecontroller: shellcmd error %s" % err)
             raise ShellCmdException(err)
         else:
             logger.debug("localhostbecontroller: shellcmd success")
-            return out
+            return out.decode('utf-8')
 
     def getGitCloneDirectory(self, url, branch):
         """Construct unique clone directory name out of url and branch."""
         if branch != "HEAD":
-            return "_toaster_clones/_%s_%s" % (re.sub('[:/@%]', '_', url), branch)
+            return "_toaster_clones/_%s_%s" % (re.sub('[:/@+%]', '_', url), branch)
 
         # word of attention; this is a localhost-specific issue; only on the localhost we expect to have "HEAD" releases
         # which _ALWAYS_ means the current poky checkout
@@ -89,19 +89,34 @@
         """ a word of attention: by convention, the first layer for any build will be poky! """
 
         assert self.be.sourcedir is not None
+
+        layerlist = []
+        nongitlayerlist = []
+
         # set layers in the layersource
 
         # 1. get a list of repos with branches, and map dirpaths for each layer
         gitrepos = {}
 
-        gitrepos[(bitbake.giturl, bitbake.commit)] = []
-        gitrepos[(bitbake.giturl, bitbake.commit)].append( ("bitbake", bitbake.dirpath) )
+        # if we're using a remotely fetched version of bitbake add its git
+        # details to the list of repos to clone
+        if bitbake.giturl and bitbake.commit:
+            gitrepos[(bitbake.giturl, bitbake.commit)] = []
+            gitrepos[(bitbake.giturl, bitbake.commit)].append(
+                ("bitbake", bitbake.dirpath))
 
         for layer in layers:
             # We don't need to git clone the layer for the CustomImageRecipe
             # as it's generated by us layer on if needed
             if CustomImageRecipe.LAYER_NAME in layer.name:
                 continue
+
+            # If we have local layers then we don't need clone them
+            # For local layers giturl will be empty
+            if not layer.giturl:
+                nongitlayerlist.append(layer.layer_version.layer.local_source_dir)
+                continue
+
             if not (layer.giturl, layer.commit) in gitrepos:
                 gitrepos[(layer.giturl, layer.commit)] = []
             gitrepos[(layer.giturl, layer.commit)].append( (layer.name, layer.dirpath) )
@@ -131,19 +146,22 @@
 
         logger.info("Using pre-checked out source for layer %s", cached_layers)
 
-        layerlist = []
-
-
         # 3. checkout the repositories
         for giturl, commit in gitrepos.keys():
             localdirname = os.path.join(self.be.sourcedir, self.getGitCloneDirectory(giturl, commit))
             logger.debug("localhostbecontroller: giturl %s:%s checking out in current directory %s" % (giturl, commit, localdirname))
 
-            # make sure our directory is a git repository
+            # see if our directory is a git repository
             if os.path.exists(localdirname):
-                localremotes = self._shellcmd("git remote -v", localdirname)
-                if not giturl in localremotes:
-                    raise BuildSetupException("Existing git repository at %s, but with different remotes ('%s', expected '%s'). Toaster will not continue out of fear of damaging something." % (localdirname, ", ".join(localremotes.split("\n")), giturl))
+                try:
+                    localremotes = self._shellcmd("git remote -v",
+                                                  localdirname)
+                    if not giturl in localremotes and commit != 'HEAD':
+                        raise BuildSetupException("Existing git repository at %s, but with different remotes ('%s', expected '%s'). Toaster will not continue out of fear of damaging something." % (localdirname, ", ".join(localremotes.split("\n")), giturl))
+                except ShellCmdException:
+                    # our localdirname might not be a git repository
+                    #- that's fine
+                    pass
             else:
                 if giturl in cached_layers:
                     logger.debug("localhostbecontroller git-copying %s to %s" % (cached_layers[giturl], localdirname))
@@ -245,6 +263,7 @@
             layerlist.append(layerpath)
 
         self.islayerset = True
+        layerlist.extend(nongitlayerlist)
         return layerlist
 
     def readServerLogFile(self):
@@ -287,7 +306,7 @@
 
         # run bitbake server from the clone
         bitbake = os.path.join(self.pokydirname, 'bitbake', 'bin', 'bitbake')
-        self._shellcmd('bash -c \"source %s %s; BITBAKE_UI="" %s --read %s '
+        self._shellcmd('bash -c \"source %s %s; BITBAKE_UI="knotty" %s --read %s '
                        '--server-only -t xmlrpc -B 0.0.0.0:0\"' % (oe_init,
                        builddir, bitbake, confpath), self.be.sourcedir)
 
@@ -324,7 +343,7 @@
                                      'bitbake')
         self._shellcmd(['bash -c \"(TOASTER_BRBE="%s" BBSERVER="0.0.0.0:-1" '
                         '%s %s -u toasterui --token="" >>%s 2>&1;'
-                        'BITBAKE_UI="" BBSERVER=0.0.0.0:-1 %s -m)&\"' \
+                        'BITBAKE_UI="knotty" BBSERVER=0.0.0.0:-1 %s -m)&\"' \
                         % (brbe, local_bitbake, bbtargets, log, bitbake)],
                         builddir, nowait=True)
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
index 5e70437..2ed994f 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
@@ -1,10 +1,15 @@
 from django.core.management.base import NoArgsCommand, CommandError
 from django.db import transaction
+
+from django.core.management import call_command
 from bldcontrol.bbcontroller import getBuildEnvironmentController, ShellCmdException
 from bldcontrol.models import BuildRequest, BuildEnvironment, BRError
-from orm.models import ToasterSetting, Build
+from orm.models import ToasterSetting, Build, Layer
+
 import os
 import traceback
+import warnings
+
 
 def DN(path):
     if path is None:
@@ -21,39 +26,6 @@
         super(Command, self).__init__(*args, **kwargs)
         self.guesspath = DN(DN(DN(DN(DN(DN(DN(__file__)))))))
 
-    def _find_first_path_for_file(self, startdirectory, filename, level=0):
-        if level < 0:
-            return None
-        dirs = []
-        for i in os.listdir(startdirectory):
-            j = os.path.join(startdirectory, i)
-            if os.path.isfile(j):
-                if i == filename:
-                    return startdirectory
-            elif os.path.isdir(j):
-                dirs.append(j)
-        for j in dirs:
-            ret = self._find_first_path_for_file(j, filename, level - 1)
-            if ret is not None:
-                return ret
-        return None
-
-    def _recursive_list_directories(self, startdirectory, level=0):
-        if level < 0:
-            return []
-        dirs = []
-        try:
-            for i in os.listdir(startdirectory):
-                j = os.path.join(startdirectory, i)
-                if os.path.isdir(j):
-                    dirs.append(j)
-        except OSError:
-            pass
-        for j in dirs:
-            dirs = dirs + self._recursive_list_directories(j, level - 1)
-        return dirs
-
-
     def _verify_build_environment(self):
         # provide a local build env. This will be extended later to include non local
         if BuildEnvironment.objects.count() == 0:
@@ -70,11 +42,10 @@
                     return True
 
                 if len(be.sourcedir) == 0:
-                    print "\n -- Validation: The layers checkout directory must be set."
                     is_changed = _update_sourcedir()
 
                 if not be.sourcedir.startswith("/"):
-                    print "\n -- Validation: The layers checkout directory must be set to an absolute path."
+                    print("\n -- Validation: The layers checkout directory must be set to an absolute path.")
                     is_changed = _update_sourcedir()
 
                 if is_changed:
@@ -87,38 +58,67 @@
                     return True
 
                 if len(be.builddir) == 0:
-                    print "\n -- Validation: The build directory must be set."
                     is_changed = _update_builddir()
 
                 if not be.builddir.startswith("/"):
-                    print "\n -- Validation: The build directory must to be set to an absolute path."
+                    print("\n -- Validation: The build directory must to be set to an absolute path.")
                     is_changed = _update_builddir()
 
-
                 if is_changed:
-                    print "\nBuild configuration saved"
+                    print("\nBuild configuration saved")
                     be.save()
                     return True
 
-
                 if be.needs_import:
                     try:
-                        config_file = os.environ.get('TOASTER_CONF')
-                        print "\nImporting file: %s" % config_file
-                        from loadconf import Command as LoadConfigCommand
+                        print("Loading default settings")
+                        call_command("loaddata", "settings")
+                        template_conf = os.environ.get("TEMPLATECONF", "")
 
-                        LoadConfigCommand()._import_layer_config(config_file)
+                        if "poky" in template_conf:
+                            print("Loading poky configuration")
+                            call_command("loaddata", "poky")
+                        else:
+                            print("Loading OE-Core configuration")
+                            call_command("loaddata", "oe-core")
+                            if template_conf:
+                                oe_core_path = os.path.realpath(
+                                    template_conf +
+                                    "/../")
+                            else:
+                                print("TEMPLATECONF not found. You may have to"
+                                      " manually configure layer paths")
+                                oe_core_path = input("Please enter the path of"
+                                                     " your openembedded-core "
+                                                     "layer: ")
+                            # Update the layer instances of openemebedded-core
+                            for layer in Layer.objects.filter(
+                                    name="openembedded-core",
+                                    local_source_dir="OE-CORE-LAYER-DIR"):
+                                layer.local_path = oe_core_path
+                                layer.save()
+
+                        # Import the custom fixture if it's present
+                        with warnings.catch_warnings():
+                            warnings.filterwarnings(
+                                action="ignore",
+                                message="^.*No fixture named.*$")
+                            print("Importing custom settings if present")
+                            call_command("loaddata", "custom")
+
                         # we run lsupdates after config update
-                        print "\nLayer configuration imported. Updating information from the layer sources, please wait.\nYou can re-update any time later by running bitbake/lib/toaster/manage.py lsupdates"
-                        from django.core.management import call_command
+                        print("\nFetching information from the layer index, "
+                              "please wait.\nYou can re-update any time later "
+                              "by running bitbake/lib/toaster/manage.py "
+                              "lsupdates\n")
                         call_command("lsupdates")
 
                         # we don't look for any other config files
                         return is_changed
                     except Exception as e:
-                        print "Failure while trying to import the toaster config file %s: %s" %\
-                            (config_file, e)
-                        traceback.print_exc(e)
+                        print("Failure while trying to setup toaster: %s"
+                              % e)
+                        traceback.print_exc()
 
                 return is_changed
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py
deleted file mode 100644
index 5022b59..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/loadconf.py
+++ /dev/null
@@ -1,183 +0,0 @@
-from django.core.management.base import BaseCommand, CommandError
-from orm.models import LayerSource, ToasterSetting, Branch, Layer, Layer_Version
-from orm.models import BitbakeVersion, Release, ReleaseDefaultLayer, ReleaseLayerSourcePriority
-from django.db import IntegrityError
-import os
-
-from checksettings import DN
-
-import logging
-logger = logging.getLogger("toaster")
-
-def _reduce_canon_path(path):
-    components = []
-    for c in path.split("/"):
-        if c == "..":
-            del components[-1]
-        elif c == ".":
-            pass
-        else:
-            components.append(c)
-    if len(components) < 2:
-        components.append('')
-    return "/".join(components)
-
-def _get_id_for_sourcetype(s):
-    for i in LayerSource.SOURCE_TYPE:
-        if s == i[1]:
-            return i[0]
-    raise Exception("Could not find definition for sourcetype '%s'. Valid source types are %s" % (str(s), ', '.join(map(lambda x: "'%s'" % x[1], LayerSource.SOURCE_TYPE ))))
-
-class Command(BaseCommand):
-    help = "Loads a toasterconf.json file in the database"
-    args = "filepath"
-
-
-
-    def _import_layer_config(self, filepath):
-        if not os.path.exists(filepath) or not os.path.isfile(filepath):
-            raise Exception("Failed to find toaster config file %s ." % filepath)
-
-        import json
-        data = json.loads(open(filepath, "r").read())
-
-        # verify config file validity before updating settings
-        for i in ['bitbake', 'releases', 'defaultrelease', 'config', 'layersources']:
-            assert i in data
-
-        def _read_git_url_from_local_repository(address):
-            url = None
-            # we detect the remote name at runtime
-            import subprocess
-            (remote, remote_name) = address.split(":", 1)
-            cmd = subprocess.Popen("git remote -v", shell=True, cwd = os.path.dirname(filepath), stdout=subprocess.PIPE, stderr = subprocess.PIPE)
-            (out,err) = cmd.communicate()
-            if cmd.returncode != 0:
-                logging.warning("Error while importing layer vcs_url: git error: %s" % err)
-            for line in out.split("\n"):
-                try:
-                    (name, path) = line.split("\t", 1)
-                    if name == remote_name:
-                        url = path.split(" ")[0]
-                        break
-                except ValueError:
-                    pass
-            if url == None:
-                logging.warning("Error while looking for remote \"%s\" in \"%s\"" % (remote_name, out))
-            return url
-
-
-        # import bitbake data
-        for bvi in data['bitbake']:
-            bvo, created = BitbakeVersion.objects.get_or_create(name=bvi['name'])
-            if bvi['giturl'].startswith("remote:"):
-                bvo.giturl = _read_git_url_from_local_repository(bvi['giturl'])
-                if bvo.giturl is None:
-                    logger.error("The toaster config file references the local git repo, but Toaster cannot detect it.\nYour local configuration for bitbake version %s is invalid. Make sure that the toasterconf.json file is correct." % bvi['name'])
-
-            if bvo.giturl is None:
-                bvo.giturl = bvi['giturl']
-            bvo.branch = bvi['branch']
-            bvo.dirpath = bvi['dirpath']
-            bvo.save()
-
-        # set the layer sources
-        for lsi in data['layersources']:
-            assert 'sourcetype' in lsi
-            assert 'apiurl' in lsi
-            assert 'name' in lsi
-            assert 'branches' in lsi
-
-
-            if _get_id_for_sourcetype(lsi['sourcetype']) == LayerSource.TYPE_LAYERINDEX or lsi['apiurl'].startswith("/"):
-                apiurl = lsi['apiurl']
-            else:
-                apiurl = _reduce_canon_path(os.path.join(DN(os.path.abspath(filepath)), lsi['apiurl']))
-
-            assert ((_get_id_for_sourcetype(lsi['sourcetype']) == LayerSource.TYPE_LAYERINDEX) or apiurl.startswith("/")), (lsi['sourcetype'],apiurl)
-
-            try:
-                ls, created = LayerSource.objects.get_or_create(sourcetype = _get_id_for_sourcetype(lsi['sourcetype']), apiurl = apiurl)
-                ls.name = lsi['name']
-                ls.save()
-            except IntegrityError as e:
-                logger.warning("IntegrityError %s \nWhile setting name %s for layer source %s " % (e, lsi['name'], ls))
-
-
-            layerbranches = []
-            for branchname in lsi['branches']:
-                bo, created = Branch.objects.get_or_create(layer_source = ls, name = branchname)
-                layerbranches.append(bo)
-
-            if 'layers' in lsi:
-                for layerinfo in lsi['layers']:
-                    lo, created = Layer.objects.get_or_create(layer_source = ls, name = layerinfo['name'])
-                    if layerinfo['local_path'].startswith("/"):
-                        lo.local_path = layerinfo['local_path']
-                    else:
-                        lo.local_path = _reduce_canon_path(os.path.join(ls.apiurl, layerinfo['local_path']))
-
-                    if not os.path.exists(lo.local_path):
-                        logger.error("Local layer path %s must exists. Are you trying to import a layer that does not exist ? Check your local toasterconf.json" % lo.local_path)
-
-                    if layerinfo['vcs_url'].startswith("remote:"):
-                        lo.vcs_url = _read_git_url_from_local_repository(layerinfo['vcs_url'])
-                        if lo.vcs_url is None:
-                            logger.error("The toaster config file references the local git repo, but Toaster cannot detect it.\nYour local configuration for layer %s is invalid. Make sure that the toasterconf.json file is correct." % layerinfo['name'])
-
-                    if lo.vcs_url is None:
-                        lo.vcs_url = layerinfo['vcs_url']
-
-                    if 'layer_index_url' in layerinfo:
-                        lo.layer_index_url = layerinfo['layer_index_url']
-                    lo.save()
-
-                    for branch in layerbranches:
-                        lvo, created = Layer_Version.objects.get_or_create(layer_source = ls,
-                                up_branch = branch,
-                                commit = branch.name,
-                                layer = lo)
-                        lvo.dirpath = layerinfo['dirpath']
-                        lvo.save()
-        # set releases
-        for ri in data['releases']:
-            bvo = BitbakeVersion.objects.get(name = ri['bitbake'])
-            assert bvo is not None
-
-            ro, created = Release.objects.get_or_create(name = ri['name'], bitbake_version = bvo, branch_name = ri['branch'])
-            ro.description = ri['description']
-            ro.helptext = ri['helptext']
-            ro.save()
-
-            # save layer source priority for release
-            for ls_name in ri['layersourcepriority'].keys():
-                rlspo, created = ReleaseLayerSourcePriority.objects.get_or_create(release = ro, layer_source = LayerSource.objects.get(name=ls_name))
-                rlspo.priority = ri['layersourcepriority'][ls_name]
-                rlspo.save()
-
-            for dli in ri['defaultlayers']:
-                # find layers with the same name
-                ReleaseDefaultLayer.objects.get_or_create( release = ro, layer_name = dli)
-
-        # set default release
-        if ToasterSetting.objects.filter(name = "DEFAULT_RELEASE").count() > 0:
-            ToasterSetting.objects.filter(name = "DEFAULT_RELEASE").update(value = data['defaultrelease'])
-        else:
-            ToasterSetting.objects.create(name = "DEFAULT_RELEASE", value = data['defaultrelease'])
-
-        # set default config variables
-        for configname in data['config']:
-            if ToasterSetting.objects.filter(name = "DEFCONF_" + configname).count() > 0:
-                ToasterSetting.objects.filter(name = "DEFCONF_" + configname).update(value = data['config'][configname])
-            else:
-                ToasterSetting.objects.create(name = "DEFCONF_" + configname, value = data['config'][configname])
-
-
-    def handle(self, *args, **options):
-        if len(args) == 0:
-            raise CommandError("Need a path to the toasterconf.json file")
-        filepath = args[0]
-        self._import_layer_config(filepath)
-
-
-
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
index 27289be..7f7a5a9 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
@@ -1,31 +1,27 @@
-from django.core.management.base import NoArgsCommand, CommandError
+from django.core.management.base import NoArgsCommand
 from django.db import transaction
 from django.db.models import Q
 
 from bldcontrol.bbcontroller import getBuildEnvironmentController
-from bldcontrol.bbcontroller import ShellCmdException, BuildSetupException
 from bldcontrol.models import BuildRequest, BuildEnvironment
 from bldcontrol.models import BRError, BRVariable
 
-from orm.models import Build, ToasterSetting, LogMessage, Target
+from orm.models import Build, LogMessage, Target
 
-import os
 import logging
-import time
-import sys
 import traceback
+import signal
 
 logger = logging.getLogger("toaster")
 
 class Command(NoArgsCommand):
-    args    = ""
-    help    = "Schedules and executes build requests as possible."
-    "Does not return (interrupt with Ctrl-C)"
-
+    args = ""
+    help = "Schedules and executes build requests as possible. "\
+           "Does not return (interrupt with Ctrl-C)"
 
     @transaction.atomic
     def _selectBuildEnvironment(self):
-        bec = getBuildEnvironmentController(lock = BuildEnvironment.LOCK_FREE)
+        bec = getBuildEnvironmentController(lock=BuildEnvironment.LOCK_FREE)
         bec.be.lock = BuildEnvironment.LOCK_LOCK
         bec.be.save()
         return bec
@@ -54,8 +50,8 @@
                 logger.debug("runbuilds: No build env")
                 return
 
-            logger.debug("runbuilds: starting build %s, environment %s" % \
-                         (str(br).decode('utf-8'), bec.be))
+            logger.info("runbuilds: starting build %s, environment %s" % \
+                        (br, bec.be))
 
             # let the build request know where it is being executed
             br.environment = bec.be
@@ -68,24 +64,22 @@
 
         except Exception as e:
             logger.error("runbuilds: Error launching build %s" % e)
-            traceback.print_exc(e)
+            traceback.print_exc()
             if "[Errno 111] Connection refused" in str(e):
                 # Connection refused, read toaster_server.out
                 errmsg = bec.readServerLogFile()
             else:
                 errmsg = str(e)
 
-            BRError.objects.create(req = br,
-                    errtype = str(type(e)),
-                    errmsg = errmsg,
-                    traceback = traceback.format_exc(e))
+            BRError.objects.create(req=br, errtype=str(type(e)), errmsg=errmsg,
+                                   traceback=traceback.format_exc())
             br.state = BuildRequest.REQ_FAILED
             br.save()
             bec.be.lock = BuildEnvironment.LOCK_FREE
             bec.be.save()
 
     def archive(self):
-        for br in BuildRequest.objects.filter(state = BuildRequest.REQ_ARCHIVE):
+        for br in BuildRequest.objects.filter(state=BuildRequest.REQ_ARCHIVE):
             if br.build == None:
                 br.state = BuildRequest.REQ_FAILED
             else:
@@ -102,14 +96,13 @@
                                        BuildRequest.REQ_COMPLETED,
                                        BuildRequest.REQ_CANCELLING]) &
             Q(lock=BuildEnvironment.LOCK_LOCK) &
-            Q(updated__lt=timezone.now() - timedelta(seconds = 30))
+            Q(updated__lt=timezone.now() - timedelta(seconds=30))
         ).update(lock=BuildEnvironment.LOCK_FREE)
 
 
         # update all Builds that were in progress and failed to start
-        for br in BuildRequest.objects.filter(
-            state=BuildRequest.REQ_FAILED,
-            build__outcome=Build.IN_PROGRESS):
+        for br in BuildRequest.objects.filter(state=BuildRequest.REQ_FAILED,
+                                              build__outcome=Build.IN_PROGRESS):
             # transpose the launch errors in ToasterExceptions
             br.build.outcome = Build.FAILED
             for brerror in br.brerror_set.all():
@@ -126,7 +119,7 @@
 
 
         # update all BuildRequests without a build created
-        for br in BuildRequest.objects.filter(build = None):
+        for br in BuildRequest.objects.filter(build=None):
             br.build = Build.objects.create(project=br.project,
                                             completed_on=br.updated,
                                             started_on=br.created)
@@ -151,29 +144,34 @@
 
         # Make sure the LOCK is removed for builds which have been fully
         # cancelled
-        for br in BuildRequest.objects.filter(
-            Q(build__outcome=Build.CANCELLED) &
-            Q(state=BuildRequest.REQ_CANCELLING) &
-            ~Q(environment=None)):
+        for br in BuildRequest.objects.filter(\
+                      Q(build__outcome=Build.CANCELLED) &
+                      Q(state=BuildRequest.REQ_CANCELLING) &
+                      ~Q(environment=None)):
             br.environment.lock = BuildEnvironment.LOCK_FREE
             br.environment.save()
 
+    def runbuild(self):
+        try:
+            self.cleanup()
+        except Exception as e:
+            logger.warn("runbuilds: cleanup exception %s" % str(e))
+
+        try:
+            self.archive()
+        except Exception as e:
+            logger.warn("runbuilds: archive exception %s" % str(e))
+
+        try:
+            self.schedule()
+        except Exception as e:
+            logger.warn("runbuilds: schedule exception %s" % str(e))
 
     def handle_noargs(self, **options):
+        self.runbuild()
+
+        signal.signal(signal.SIGUSR1, lambda sig, frame: None)
+
         while True:
-            try:
-                self.cleanup()
-            except Exception as e:
-                logger.warn("runbuilds: cleanup exception %s" % str(e))
-
-            try:
-                self.archive()
-            except Exception as e:
-                logger.warn("runbuilds: archive exception %s" % str(e))
-
-            try:
-                self.schedule()
-            except Exception as e:
-                logger.warn("runbuilds: schedule exception %s" % str(e))
-
-            time.sleep(1)
+            signal.pause()
+            self.runbuild()
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0004_auto_20160523_1446.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0004_auto_20160523_1446.py
new file mode 100644
index 0000000..3d90629
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0004_auto_20160523_1446.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('bldcontrol', '0003_add_cancelling_state'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='buildenvironment',
+            name='bbstate',
+            field=models.IntegerField(default=0, choices=[(0, 'stopped'), (1, 'started')]),
+        ),
+        migrations.AlterField(
+            model_name='buildenvironment',
+            name='betype',
+            field=models.IntegerField(choices=[(0, 'local')]),
+        ),
+        migrations.AlterField(
+            model_name='buildenvironment',
+            name='lock',
+            field=models.IntegerField(default=0, choices=[(0, 'free'), (1, 'lock'), (2, 'running')]),
+        ),
+        migrations.AlterField(
+            model_name='buildrequest',
+            name='state',
+            field=models.IntegerField(default=0, choices=[(0, 'created'), (1, 'queued'), (2, 'in progress'), (3, 'completed'), (4, 'failed'), (5, 'deleted'), (6, 'cancelling'), (7, 'archive')]),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0005_reorder_buildrequest_states.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0005_reorder_buildrequest_states.py
new file mode 100644
index 0000000..4bb9517
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0005_reorder_buildrequest_states.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('bldcontrol', '0004_auto_20160523_1446'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='buildrequest',
+            name='state',
+            field=models.IntegerField(choices=[(0, 'created'), (1, 'queued'), (2, 'in progress'), (3, 'failed'), (4, 'deleted'), (5, 'cancelling'), (6, 'completed'), (7, 'archive')], default=0),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0006_brlayer_local_source_dir.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0006_brlayer_local_source_dir.py
new file mode 100644
index 0000000..2460002
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0006_brlayer_local_source_dir.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('bldcontrol', '0005_reorder_buildrequest_states'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='brlayer',
+            name='local_source_dir',
+            field=models.CharField(max_length=254, null=True),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0007_brlayers_optional_gitinfo.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0007_brlayers_optional_gitinfo.py
new file mode 100644
index 0000000..4be42a4
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/migrations/0007_brlayers_optional_gitinfo.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('bldcontrol', '0006_brlayer_local_source_dir'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='brlayer',
+            name='commit',
+            field=models.CharField(max_length=254, null=True),
+        ),
+        migrations.AlterField(
+            model_name='brlayer',
+            name='dirpath',
+            field=models.CharField(max_length=254, null=True),
+        ),
+        migrations.AlterField(
+            model_name='brlayer',
+            name='giturl',
+            field=models.CharField(max_length=254, null=True),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/models.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/models.py
index cb49a58..409614b 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/models.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/models.py
@@ -1,7 +1,7 @@
 from __future__ import unicode_literals
 from django.db import models
 from django.core.validators import MaxValueValidator, MinValueValidator
-from django.utils.encoding import force_bytes
+from django.utils.encoding import force_text
 from orm.models import Project, ProjectLayer, ProjectVariable, ProjectTarget, Build, Layer_Version
 
 import logging
@@ -63,20 +63,20 @@
     REQ_CREATED = 0
     REQ_QUEUED = 1
     REQ_INPROGRESS = 2
-    REQ_COMPLETED = 3
-    REQ_FAILED = 4
-    REQ_DELETED = 5
-    REQ_CANCELLING = 6
+    REQ_FAILED = 3
+    REQ_DELETED = 4
+    REQ_CANCELLING = 5
+    REQ_COMPLETED = 6
     REQ_ARCHIVE = 7
 
     REQUEST_STATE = (
         (REQ_CREATED, "created"),
         (REQ_QUEUED, "queued"),
         (REQ_INPROGRESS, "in progress"),
-        (REQ_COMPLETED, "completed"),
         (REQ_FAILED, "failed"),
         (REQ_DELETED, "deleted"),
         (REQ_CANCELLING, "cancelling"),
+        (REQ_COMPLETED, "completed"),
         (REQ_ARCHIVE, "archive"),
     )
 
@@ -91,18 +91,18 @@
 
     def __init__(self, *args, **kwargs):
         super(BuildRequest, self).__init__(*args, **kwargs)
-        # Save the old state incase it's about to be modified
+        # Save the old state in case it's about to be modified
         self.old_state = self.state
 
     def save(self, *args, **kwargs):
         # Check that the state we're trying to set is not going backwards
         # e.g. from REQ_FAILED to REQ_INPROGRESS
         if self.old_state != self.state and self.old_state > self.state:
-            logger.warn("Invalid state change requested: "
-                        "Cannot go from %s to %s - ignoring request" %
-                        (BuildRequest.REQUEST_STATE[self.old_state][1],
-                         BuildRequest.REQUEST_STATE[self.state][1])
-                       )
+            logger.warning("Invalid state change requested: "
+                           "Cannot go from %s to %s - ignoring request" %
+                           (BuildRequest.REQUEST_STATE[self.old_state][1],
+                            BuildRequest.REQUEST_STATE[self.state][1])
+                          )
             # Set property back to the old value
             self.state = self.old_state
             return
@@ -121,17 +121,19 @@
         return self.brvariable_set.get(name="MACHINE").value
 
     def __str__(self):
-        return force_bytes('%s %s' % (self.project, self.get_state_display()))
+        return force_text('%s %s' % (self.project, self.get_state_display()))
 
 # These tables specify the settings for running an actual build.
 # They MUST be kept in sync with the tables in orm.models.Project*
 
+
 class BRLayer(models.Model):
-    req         = models.ForeignKey(BuildRequest)
-    name        = models.CharField(max_length = 100)
-    giturl      = models.CharField(max_length = 254)
-    commit      = models.CharField(max_length = 254)
-    dirpath     = models.CharField(max_length = 254)
+    req = models.ForeignKey(BuildRequest)
+    name = models.CharField(max_length=100)
+    giturl = models.CharField(max_length=254, null=True)
+    local_source_dir = models.CharField(max_length=254, null=True)
+    commit = models.CharField(max_length=254, null=True)
+    dirpath = models.CharField(max_length=254, null=True)
     layer_version = models.ForeignKey(Layer_Version, null=True)
 
 class BRBitbake(models.Model):
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/tests.py b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/tests.py
index f20cc7d..475ac0a 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/tests.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/bldcontrol/tests.py
@@ -53,7 +53,7 @@
             # setting layers, skip any layer info
             bc.setLayers(BITBAKE_LAYER, POKY_LAYERS)
         except NotImplementedError:
-            print "Test skipped due to command not implemented yet"
+            print("Test skipped due to command not implemented yet")
             return True
         # We are ok with the exception as we're handling the git already exists
         except BuildSetupException:
@@ -79,7 +79,7 @@
             # setting layers, skip any layer info
             layerSet = bc.setLayers(BITBAKE_LAYER, POKY_LAYERS)
         except NotImplementedError:
-            print "Test skipped due to command not implemented yet"
+            print("Test skipped due to command not implemented yet")
             return True
         # We are ok with the exception as we're handling the git already exists
         except BuildSetupException:
@@ -139,22 +139,3 @@
         self.assertTrue(br.state == BuildRequest.REQ_INPROGRESS, "Request is not updated")
         # no more selections possible here
         self.assertRaises(IndexError, command._selectBuildRequest)
-
-
-class UtilityTests(TestCase):
-    def test_reduce_path(self):
-        from bldcontrol.management.commands.loadconf import _reduce_canon_path, _get_id_for_sourcetype
-
-        self.assertTrue( _reduce_canon_path("/") == "/")
-        self.assertTrue( _reduce_canon_path("/home/..") == "/")
-        self.assertTrue( _reduce_canon_path("/home/../ana") == "/ana")
-        self.assertTrue( _reduce_canon_path("/home/../ana/..") == "/")
-        self.assertTrue( _reduce_canon_path("/home/ana/mihai/../maria") == "/home/ana/maria")
-
-    def test_get_id_for_sorucetype(self):
-        from bldcontrol.management.commands.loadconf import _reduce_canon_path, _get_id_for_sourcetype
-        self.assertTrue( _get_id_for_sourcetype("layerindex") == 1)
-        self.assertTrue( _get_id_for_sourcetype("local") == 0)
-        self.assertTrue( _get_id_for_sourcetype("imported") == 2)
-        with self.assertRaises(Exception):
-            _get_id_for_sourcetype("unknown")
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/config.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/config.py
index 40d45f3..87b427c 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/config.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/config.py
@@ -74,7 +74,7 @@
 # task states
 def enum(*sequential, **named):
     enums = dict(zip(sequential, range(len(sequential))), **named)
-    reverse = dict((value, key) for key, value in enums.iteritems())
+    reverse = dict((value, key) for key, value in enums.items())
     enums['reverse_mapping'] = reverse
     return type('Enum', (), enums)
 
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/log/.create
similarity index 100%
copy from import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py
copy to import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/log/.create
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/runner.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/runner.py
index bed6651..d01386a 100755
--- a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/runner.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/runner.py
@@ -146,7 +146,7 @@
 
     except Exception as exc:
         import traceback
-        config.logger.error("Exception while running test. Tracedump: \n%s", traceback.format_exc(exc))
+        config.logger.error("Exception while running test. Tracedump: \n%s", traceback.format_exc())
     finally:
         os.chdir(crt_dir)
     return len(result.failures)
@@ -211,7 +211,7 @@
 
     except ShellCmdException as exc:
         import traceback
-        config.logger.error("Error while setting up testing. Traceback: \n%s", traceback.format_exc(exc))
+        config.logger.error("Error while setting up testing. Traceback: \n%s", traceback.format_exc())
     finally:
         if need_cleanup and testdir is not None:
             clean_up(testdir)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/shellutils.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/shellutils.py
index c2012ed..ce64c06 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/shellutils.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/shellutils.py
@@ -133,7 +133,7 @@
             err = "command: %s \n%s" % (command, out)
         else:
             err = "command: %s \n%s" % (command, err)
-        config.logger.warn("_shellcmd: error \n%s\n%s", out, err)
+        config.logger.warning("_shellcmd: error \n%s\n%s", out, err)
         raise ShellCmdException(err)
     else:
         #config.logger.debug("localhostbecontroller: shellcmd success\n%s" % out)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py
index 754636f..8ca45a8 100755
--- a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py
@@ -74,7 +74,7 @@
     try:
         tests_from_cfg = eval(config.get('toaster_test_' + target_suite, 'test_cases'))
     except:
-        print 'Failed to get test cases from cfg file. Make sure the format is correct.'
+        print('Failed to get test cases from cfg file. Make sure the format is correct.')
         return None
 
     prefix = 'toaster_automation_test.toaster_cases.test_'
@@ -100,7 +100,7 @@
         testslist = get_tests_from_cfg()
 
     if not testslist:
-        print 'Failed to get test cases.'
+        print('Failed to get test cases.')
         exit(1)
 
     suite = unittest.TestSuite()
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py
index d8f838a..1a786fa 100755
--- a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/toaster_automation_test.py
@@ -61,7 +61,7 @@
             break
 
     if number == (max_depth - 1):
-        print 'No log dir found. Please check'
+        print('No log dir found. Please check')
         raise Exception
 
     return log_root_dir
@@ -152,7 +152,7 @@
         return (sorted(list_number) == list_number)
 
     else:
-        print 'Unrecognized list type, please check'
+        print('Unrecognized list type, please check')
         return False
 
 
@@ -201,7 +201,7 @@
         return (sorted(list_number, reverse = True) == list_number)
 
     else:
-        print 'Unrecognized list type, please check'
+        print('Unrecognized list type, please check')
         return False
 
 def replace_file_content(filename, item, option):
@@ -361,7 +361,7 @@
 
     def setup_browser(self, *browser_path):
         self.browser = eval(self.parser.get('toaster_test_' + self.target_suite, 'test_browser'))
-        print self.browser
+        print(self.browser)
         if self.browser == "firefox":
             driver = webdriver.Firefox()
         elif self.browser == "chrome":
@@ -370,7 +370,7 @@
             driver = webdriver.Ie()
         else:
             driver = None
-            print "unrecognized browser type, please check"
+            print("unrecognized browser type, please check")
         self.driver = driver
         self.driver.implicitly_wait(30)
         return self.driver
@@ -440,8 +440,8 @@
         try:
             table_element = self.get_table_element(table_id)
             element = table_element.find_element_by_xpath("//*[text()='" + text_string + "']")
-        except NoSuchElementException, e:
-            print 'no element found'
+        except NoSuchElementException as e:
+            print('no element found')
             raise
         return element
 
@@ -454,8 +454,8 @@
         try:
             table_element = self.get_table_element(table_id)
             element = table_element.find_element_by_link_text(link_text)
-        except NoSuchElementException, e:
-            print 'no element found'
+        except NoSuchElementException as e:
+            print('no element found')
             raise
         return element
 
@@ -467,8 +467,8 @@
         try:
             table_element = self.get_table_element(table_id)
             element_list = table_element.find_elements_by_link_text(link_text)
-        except NoSuchElementException, e:
-            print 'no element found'
+        except NoSuchElementException as e:
+            print('no element found')
             raise
         return element_list
 
@@ -481,8 +481,8 @@
             table_element = self.get_table_element(table_id)
             element = table_element.find_element_by_partial_link_text(link_text)
             return element
-        except NoSuchElementException, e:
-            print 'no element found'
+        except NoSuchElementException as e:
+            print('no element found')
             raise
 
 
@@ -494,8 +494,8 @@
             table_element = self.get_table_element(table_id)
             element_list = table_element.find_elements_by_partial_link_text(link_text)
             return element_list
-        except NoSuchElementException, e:
-            print 'no element found'
+        except NoSuchElementException as e:
+            print('no element found')
             raise
 
 
@@ -506,8 +506,8 @@
         try:
             table_element = self.get_table_element(table_id)
             element = table_element.find_element_by_xpath(xpath)
-        except NoSuchElementException, e:
-            print 'no element found'
+        except NoSuchElementException as e:
+            print('no element found')
             raise
         return element
 
@@ -519,8 +519,8 @@
         try:
             table_element = self.get_table_element(table_id)
             element_list = table_element.find_elements_by_xpath(xpath)
-        except NoSuchElementException, e:
-            print 'no elements found'
+        except NoSuchElementException as e:
+            print('no elements found')
             raise
         return element_list
 
@@ -570,7 +570,7 @@
             element_xpath = "//*[@id='" + table_id + "']"
             try:
                 element = self.driver.find_element_by_xpath(element_xpath)
-            except NoSuchElementException, e:
+            except NoSuchElementException as e:
                 raise
             return element
         row = coordinate[0]
@@ -580,7 +580,7 @@
             element_xpath = "//*[@id='" + table_id + "']/tbody/tr[" + str(row) + "]"
             try:
                 element = self.driver.find_element_by_xpath(element_xpath)
-            except NoSuchElementException, e:
+            except NoSuchElementException as e:
                 return False
             return element
 #now we are looking for an element with specified X and Y
@@ -589,7 +589,7 @@
         element_xpath = "//*[@id='" + table_id + "']/tbody/tr[" + str(row) + "]/td[" + str(column) + "]"
         try:
             element = self.driver.find_element_by_xpath(element_xpath)
-        except NoSuchElementException, e:
+        except NoSuchElementException as e:
             return False
         return element
 
@@ -607,7 +607,7 @@
                 column = column + 1
                 print("row_content=",row_content)
             Lists.extend(row_content)
-            print Lists[row-1][0]
+            print(Lists[row-1][0])
             row = row + 1
         return Lists
 
@@ -617,7 +617,7 @@
     def is_text_present (self, patterns):
         for pattern in patterns:
             if str(pattern) not in self.driver.page_source:
-                print 'Text "'+pattern+'" is missing'
+                print('Text "'+pattern+'" is missing')
                 return False
         return True
 
@@ -625,15 +625,15 @@
     def is_element_present(self, how, what):
         try:
             self.driver.find_element(how, what)
-        except NoSuchElementException, e:
-            print 'Could not find element '+str(what)+' by ' + str(how)
+        except NoSuchElementException as e:
+            print('Could not find element '+str(what)+' by ' + str(how))
             return False
         return True
 
 
     def is_alert_present(self):
         try: self.driver.switch_to_alert()
-        except NoAlertPresentException, e: return False
+        except NoAlertPresentException as e: return False
         return True
 
 
@@ -658,7 +658,7 @@
         try:
             caseno = int(caseno_str)
         except ValueError:
-            print "get case number error! please check if func name is test_xxx"
+            print("get case number error! please check if func name is test_xxx")
             return False
         return caseno
 
@@ -706,7 +706,7 @@
         for key in table_head_dict:
             try:
                 self.driver.find_element_by_link_text(key).click()
-            except Exception, e:
+            except Exception as e:
                 self.log.error("%s cannot be found on page" % key)
                 raise
             column_list = self.get_table_column_text("class", table_head_dict[key])
@@ -736,7 +736,7 @@
         patterns = ["minimal", "sato"]
         for pattern in patterns:
             ori_target_column_texts = self.get_table_column_text("class", "target")
-            print ori_target_column_texts
+            print(ori_target_column_texts)
             self.driver.find_element_by_id("search").clear()
             self.driver.find_element_by_id("search").send_keys(pattern)
             self.driver.find_element_by_id("search-button").click()
@@ -771,7 +771,7 @@
                 temp_element = self.find_element_by_text_in_table('otable', item)
                 # this is how we find "filter icon" in the same level as temp_element(where "a" means clickable, "i" means icon)
                 self.assertTrue(temp_element.find_element_by_xpath("..//*/a/i[@class='icon-filter filtered']"))
-            except Exception,e:
+            except Exception as e:
                 self.assertFalse(True, msg=(" %s cannot be found! %s" % (item, e)))
                 raise
         # step 5-6
@@ -812,7 +812,7 @@
         self.table_name = 'otable'
         # This is how we find the "default" rows-number!
         rows_displayed = int(Select(self.driver.find_element_by_css_selector("select.pagesize")).first_selected_option.text)
-        print rows_displayed
+        print(rows_displayed)
         self.assertTrue(self.get_table_element(self.table_name, rows_displayed), msg=("not enough rows displayed"))
         self.assertFalse(self.get_table_element(self.table_name, rows_displayed + 1), \
                          msg=("more rows displayed than expected"))
@@ -888,7 +888,7 @@
                         temp_element.find_element_by_xpath("..//*[@class='icon-filter filtered']").click()
                         avail_options = self.driver.find_elements_by_xpath("//*[@id='" + filter_dict[key] + "']//*[@name='filter'][not(@disabled)]")
                      except:
-                        print "in exception"
+                        print("in exception")
                         self.find_element_by_text("Show all tasks").click()
 #                        self.driver.find_element_by_xpath("//*[@id='searchform']/button[2]").click()
                         temp_element = self.find_element_by_link_text_in_table(self.table_name, key)
@@ -899,9 +899,9 @@
         for item in ['order', 'task_name', 'executed', 'outcome', 'recipe_name', 'recipe_version']:
             try:
                 self.find_element_by_xpath_in_table(self.table_name, "./tbody/tr[1]/*[@class='" + item + "']/a").click()
-            except NoSuchElementException, e:
+            except NoSuchElementException as e:
             # let it go...
-                print 'no item in the colum' + item
+                print('no item in the colum' + item)
             # insert screen shot here
             self.save_screenshot(screenshot_type='selenium', append_name='step11')
             self.driver.back()
@@ -992,13 +992,13 @@
         self.table_name = 'otable'
         # This is how we find the "default" rows-number!
         rows_displayed = int(Select(self.driver.find_element_by_css_selector("select.pagesize")).first_selected_option.text)
-        print rows_displayed
+        print(rows_displayed)
         self.assertTrue(self.get_table_element(self.table_name, rows_displayed))
         self.assertFalse(self.get_table_element(self.table_name, rows_displayed + 1))
 
         # Check the default table is sorted by Recipe
         tasks_column_count = len(self.driver.find_elements_by_xpath("/html/body/div[2]/div/div[2]/div[2]/table/tbody/tr/td[1]"))
-        print tasks_column_count
+        print(tasks_column_count)
         default_column_list = self.get_table_column_text_by_column_number(self.table_name, 1)
         #print default_column_list
 
@@ -1095,7 +1095,7 @@
 
         # Bug 5919
         for key in table_head_dict:
-            print key
+            print(key)
             self.find_element_by_link_text_in_table(self.table_name, key).click()
             self.driver.find_element_by_id("edit-columns-button").click()
             self.driver.find_element_by_id(table_head_dict[key]).click()
@@ -1167,7 +1167,7 @@
         check_list = ['Dependencies', 'Layer branch', 'Layer commit', 'Reverse dependencies']
         head_list = self.get_table_head_text('otable')
         time.sleep(2)
-        print head_list
+        print(head_list)
         for item in check_list:
             self.assertTrue(item in head_list, msg=("item %s not in head row" % item))
         # un-check 'em all
@@ -1226,8 +1226,8 @@
 
         tasks_row_count = len(driver.find_elements_by_xpath("//*[@id='"+self.table_name+"']/table/tbody/tr/td[1]"))
         tasks_column_count = len(driver.find_elements_by_xpath("//*[@id='"+self.table_name+"']/table/tbody/tr[1]/td"))
-        print 'rows: '+str(tasks_row_count)
-        print 'columns: '+str(tasks_column_count)
+        print('rows: '+str(tasks_row_count))
+        print('columns: '+str(tasks_column_count))
 
         Tasks_column = self.get_table_column_text_by_column_number(self.table_name, 2)
         print ("Tasks_column=", Tasks_column)
@@ -1253,9 +1253,9 @@
 
         driver.find_element_by_partial_link_text("Packages (").click()
         packages_name = driver.find_element_by_partial_link_text("Packages (").text
-        print packages_name
+        print(packages_name)
         packages_num = int(filter(str.isdigit, repr(packages_name)))
-        print packages_num
+        print(packages_num)
 
         #switch the table to show more than 10 rows at a time
         self.driver.find_element_by_xpath("//*[@id='packages-built']/div[1]/div/select").click()
@@ -1263,7 +1263,7 @@
         self.driver.find_element_by_xpath("//*[@id='packages-built']/div[1]/div/select").send_keys(Keys.ENTER)
 
         packages_row_count = len(driver.find_elements_by_xpath("//*[@id='otable']/tbody/tr/td[1]"))
-        print packages_row_count
+        print(packages_row_count)
 
         if packages_num != packages_row_count:
             print ("Error! The packages number is not correct")
@@ -1272,20 +1272,20 @@
 
         driver.find_element_by_partial_link_text("Build dependencies (").click()
         depends_name = driver.find_element_by_partial_link_text("Build dependencies (").text
-        print depends_name
-        depends_num = int(filter(str.isdigit, repr(depends_name)))
-        print depends_num
+        print(depends_name)
+        depends_num = int(list(filter(str.isdigit, repr(depends_name))))
+        print(depends_num)
 
         if depends_num == 0:
             depends_message = repr(driver.find_element_by_css_selector("div.alert.alert-info").text)
-            print depends_message
+            print(depends_message)
             if depends_message.find("has no build dependencies.") < 0:
                 print ("Error! The message isn't expected.")
             else:
                 print ("The message is expected")
         else:
             depends_row_count = len(driver.find_elements_by_xpath("//*[@id='dependencies']/table/tbody/tr/td[1]"))
-            print depends_row_count
+            print(depends_row_count)
             if depends_num != depends_row_count:
                 print ("Error! The dependent packages number is not correct")
             else:
@@ -1293,13 +1293,13 @@
 
         driver.find_element_by_partial_link_text("Reverse build dependencies (").click()
         rdepends_name = driver.find_element_by_partial_link_text("Reverse build dependencies (").text
-        print rdepends_name
+        print(rdepends_name)
         rdepends_num = int(filter(str.isdigit, repr(rdepends_name)))
-        print rdepends_num
+        print(rdepends_num)
 
         if rdepends_num == 0:
             rdepends_message = repr(driver.find_element_by_css_selector("#brought-in-by > div.alert.alert-info").text)
-            print rdepends_message
+            print(rdepends_message)
             if rdepends_message.find("has no reverse build dependencies.") < 0:
                 print ("Error! The message isn't expected.")
             else:
@@ -1319,8 +1319,8 @@
 
         native_tasks_row_count = len(driver.find_elements_by_xpath("//*[@id='information']/table/tbody/tr/td[1]"))
         native_tasks_column_count = len(driver.find_elements_by_xpath("//*[@id='information']/table/tbody/tr[1]/td"))
-        print native_tasks_row_count
-        print native_tasks_column_count
+        print(native_tasks_row_count)
+        print(native_tasks_column_count)
 
         Native_Tasks_column = self.get_table_column_text_by_column_number(self.table_name, 2)
         print ("Native_Tasks_column=", Native_Tasks_column)
@@ -1346,15 +1346,15 @@
 
         driver.find_element_by_partial_link_text("Packages (").click()
         native_packages_name = driver.find_element_by_partial_link_text("Packages (").text
-        print native_packages_name
+        print(native_packages_name)
         native_packages_num = int(filter(str.isdigit, repr(native_packages_name)))
-        print native_packages_num
+        print(native_packages_num)
 
         if native_packages_num != 0:
             print ("Error! Native task shouldn't have any packages.")
         else:
             native_package_message = repr(driver.find_element_by_css_selector("#packages-built > div.alert.alert-info").text)
-            print native_package_message
+            print(native_package_message)
             if native_package_message.find("does not build any packages.") < 0:
                 print ("Error! The message for native task isn't expected.")
             else:
@@ -1362,12 +1362,12 @@
 
         driver.find_element_by_partial_link_text("Build dependencies (").click()
         native_depends_name = driver.find_element_by_partial_link_text("Build dependencies (").text
-        print native_depends_name
+        print(native_depends_name)
         native_depends_num = int(filter(str.isdigit, repr(native_depends_name)))
-        print native_depends_num
+        print(native_depends_num)
 
         native_depends_row_count = len(driver.find_elements_by_xpath("//*[@id='dependencies']/table/tbody/tr/td[1]"))
-        print native_depends_row_count
+        print(native_depends_row_count)
 
         if native_depends_num != native_depends_row_count:
             print ("Error! The dependent packages number is not correct")
@@ -1376,12 +1376,12 @@
 
         driver.find_element_by_partial_link_text("Reverse build dependencies (").click()
         native_rdepends_name = driver.find_element_by_partial_link_text("Reverse build dependencies (").text
-        print native_rdepends_name
+        print(native_rdepends_name)
         native_rdepends_num = int(filter(str.isdigit, repr(native_rdepends_name)))
-        print native_rdepends_num
+        print(native_rdepends_num)
 
         native_rdepends_row_count = len(driver.find_elements_by_xpath("//*[@id='brought-in-by']/table/tbody/tr/td[1]"))
-        print native_rdepends_row_count
+        print(native_rdepends_row_count)
 
         if native_rdepends_num != native_rdepends_row_count:
             print ("Error! The reverse dependent packages number is not correct")
@@ -1413,8 +1413,8 @@
         # step 5
         self.driver.find_element_by_css_selector("i.icon-remove").click()
         head_list = self.get_table_head_text('otable')
-        print head_list
-        print len(head_list)
+        print(head_list)
+        print(len(head_list))
         self.assertTrue(head_list == ['Variable', 'Value', 'Set in file', 'Description'], \
                         msg=("head row contents wrong"))
         # step 8
@@ -1830,7 +1830,7 @@
         try:
             self.driver.find_element_by_partial_link_text("Packages included")
             self.driver.find_element_by_partial_link_text("Directory structure")
-        except Exception,e:
+        except Exception as e:
             self.log.error(e)
             self.assertFalse(True)
         # step 4
@@ -2014,13 +2014,13 @@
         for i in range(0,4):
             data[i] = data[i][0]
         data.sort()
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_data = []
         for i in range (0,4):
             json_data.append(json_parse['releases'][i]['name'])
         json_data.sort()
-        print json_data
+        print(json_data)
         self.failUnless(data == json_data)
 
         ##############
@@ -2036,11 +2036,11 @@
         data = cursor.fetchall()
         for i in range(0,6):
             data[i] = data[i][0]
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_data=json_parse['config']
         json_data = json_data.values()
-        print json_data
+        print(json_data)
         self.failUnless(data == json_data)
 
 
@@ -2057,12 +2057,12 @@
         data = cursor.fetchall()
         for i in range(0,3):
             data[i] = data[i][0]
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_data = []
         for i in range(0,3):
             json_data.append(json_parse['layersources'][i]['name'])
-        print json_data
+        print(json_data)
         self.failUnless(set(data) == set(json_data))
 
         ##############
@@ -2077,10 +2077,10 @@
         cursor.execute(query)
         data = cursor.fetchall()
         data = data[0][0]
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_data = json_parse['defaultrelease']
-        print json_data
+        print(json_data)
         self.failUnless(set(data) == set(json_data))
 
         ##############
@@ -2090,7 +2090,7 @@
         self.case_no = self.get_case_number()
         self.log.info(' CASE %s log: ' % str(self.case_no))
 
-        print 'Checking branches for "Local Yocto Project"'
+        print('Checking branches for "Local Yocto Project"')
         con=sqlite.connect('toaster.sqlite')
         cursor = con.cursor()
         query = "select name from orm_branch where layer_source_id=1;"
@@ -2102,15 +2102,15 @@
                 data[i] = data[i][0]
         except:
             pass
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_location = json_parse['layersources'][0]['name']
-        print json_location
+        print(json_location)
         json_data = json_parse['layersources'][0]['branches']
-        print json_data
+        print(json_data)
         self.failUnless(set(data) == set(json_data))
 
-        print 'Checking branches for "OpenEmbedded"'
+        print('Checking branches for "OpenEmbedded"')
         con=sqlite.connect('toaster.sqlite')
         cursor = con.cursor()
         query = "select name from orm_branch where layer_source_id=3;"
@@ -2119,15 +2119,15 @@
         lenght = len(data)
         for i in range(0,lenght):
             data[i] = data[i][0]
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_location = json_parse['layersources'][1]['name']
-        print json_location
+        print(json_location)
         json_data = json_parse['layersources'][1]['branches']
-        print json_data
+        print(json_data)
         self.failUnless(set(data) == set(json_data))
 
-        print 'Checking branches for "Imported layers"'
+        print('Checking branches for "Imported layers"')
         con=sqlite.connect('toaster.sqlite')
         cursor = con.cursor()
         query = "select name from orm_branch where layer_source_id=2;"
@@ -2136,12 +2136,12 @@
         lenght = len(data)
         for i in range(0,lenght):
             data[i] = data[i][0]
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_location = json_parse['layersources'][2]['name']
-        print json_location
+        print(json_location)
         json_data = json_parse['layersources'][2]['branches']
-        print json_data
+        print(json_data)
         self.failUnless(set(data) == set(json_data))
 
 
@@ -2158,12 +2158,12 @@
         data = cursor.fetchall()
         for i in range(0,4):
             data[i] = data[i][0]
-        print data
+        print(data)
         json_parse = json.loads(open('toasterconf.json').read())
         json_data = []
         for i in range(0,4):
             json_data.append(json_parse['bitbake'][i]['name'])
-        print json_data
+        print(json_data)
         self.failUnless(set(data) == set(json_data))
 
         ##############
@@ -2182,7 +2182,7 @@
         query = "select count(name) from orm_project where name = 'new-test-project';"
         cursor.execute(query)
         data = cursor.fetchone()
-        print 'data: %s' % data
+        print('data: %s' % data)
         self.failUnless(data >= 1)
 
         ##############
@@ -2275,7 +2275,7 @@
             data = data[0][0]
         except:
             pass
-        print data
+        print(data)
         self.failUnless(data == 'toaster_admin')
 
         ##############
@@ -2324,7 +2324,7 @@
         query = "select a.name, a.value from orm_projectvariable a, orm_project b where a.project_id = b.id and b.name = 'new-default-project';"
         cursor.execute(query)
         data = dict(cursor.fetchall())
-        print data
+        print(data)
         default_values = {u'IMAGE_INSTALL_append': u'', u'PACKAGE_CLASSES': u'package_rpm', u'MACHINE': u'qemux86', u'SDKMACHINE': u'x86_64', u'DISTRO': u'poky', u'IMAGE_FSTYPES': u'ext3 jffs2 tar.bz2'}
         self.failUnless(data == default_values)
 
@@ -2341,7 +2341,7 @@
         query = "select layercommit_id from orm_projectlayer a, orm_project b where a.project_id=b.id and b.name='new-default-project';"
         cursor.execute(query)
         data_initial = cursor.fetchall()
-        print data_initial
+        print(data_initial)
 
         self.driver.maximize_window()
         self.driver.get('localhost:8000')#self.base_url)
@@ -2362,7 +2362,7 @@
         query = "select layercommit_id from orm_projectlayer a, orm_project b where a.project_id=b.id and b.name='new-default-project';"
         cursor.execute(query)
         data_changed = cursor.fetchall()
-        print data_changed
+        print(data_changed)
 
         #resetting release to default
         self.driver.find_element_by_id('release-change-toggle').click()
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py
index 0820f82..001fcee 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py
@@ -26,12 +26,12 @@
             warnings = int(resp['x-w3c-validator-warnings'])
 
             if status == 'Invalid':
-                config.logger.warn("Failed %s is %s\terrors %s warnings %s (check at %s)", url, status, errors, warnings, urlrequest)
+                config.logger.warning("Failed %s is %s\terrors %s warnings %s (check at %s)", url, status, errors, warnings, urlrequest)
             else:
                 config.logger.debug("OK! %s", url)
 
     except Exception as exc:
-        config.logger.warn("Failed validation call: %s", exc)
+        config.logger.warning("Failed validation call: %s", exc)
     return (status, errors, warnings)
 
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/manage.py b/import-layers/yocto-poky/bitbake/lib/toaster/manage.py
index ceaa11b..0c7ea50 100755
--- a/import-layers/yocto-poky/bitbake/lib/toaster/manage.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/manage.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/README b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/README
new file mode 100644
index 0000000..1b1c660
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/README
@@ -0,0 +1,30 @@
+# Fixtures directory
+
+Fixtures are data dumps that can be loaded into Toaster's database to provide
+configuration and data.
+
+In this directory we have the fixtures which are loaded the first time you start Toaster.
+This is to provide useful default values and metadata to Toaster.
+
+ - settings.xml This Contains Toaster wide settings, such as the default values for
+   certain bitbake variables.
+
+ - poky.xml This is the default release data for supported poky based setup 
+
+ - oe-core.xml This is the default release data for supported oe-core based setups
+
+# Custom data/configuration
+
+  - custom.xml
+
+To add custom initial data/configuration to Toaster place a file called
+"custom.xml" in this directory. If present it will be loaded into the database.
+We suggest that this is used to overlay any configuration already done.
+All objects loaded with the same primary keys overwrite the existing data.
+Data can be provided in XML, JSON and if installed YAML formats.
+
+# To load data at any point in time
+
+Use the django management command manage.py loaddata <your fixture file>
+For further information see the Django command documentation at:
+https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-loaddata
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml
new file mode 100644
index 0000000..a6c834f
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<django-objects version="1.0">
+  <!-- Set the project default value for DISTRO -->
+  <object model="orm.toastersetting" pk="1">
+    <field type="CharField" name="name">DEFCONF_DISTRO</field>
+    <field type="CharField" name="value">nodistro</field>
+  </object>
+
+  <!-- Bitbake versions which correspond to the metadata release -->
+  <object model="orm.bitbakeversion" pk="1">
+    <field type="CharField" name="name">morty</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">1.32</field>
+  </object>
+  <object model="orm.bitbakeversion" pk="2">
+    <field type="CharField" name="name">HEAD</field>
+  </object>
+
+  <!-- Releases available -->
+  <object model="orm.release" pk="1">
+    <field type="CharField" name="name">morty</field>
+    <field type="CharField" name="description">Openembedded Morty</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
+    <field type="CharField" name="branch_name">morty</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=morty\"&gt;OpenEmbedded Morty&lt;/a&gt; branch.</field>
+  </object>
+  <object model="orm.release" pk="2">
+    <field type="CharField" name="name">local</field>
+    <field type="CharField" name="description">Local Openembedded</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">2</field>
+    <field type="CharField" name="branch_name">HEAD</field>
+    <field type="TextField" name="helptext">Toaster will run your builds with the version of OpenEmbedded that you have cloned or downloaded to your computer.</field>
+  </object>
+
+  <!-- Default layers for each release -->
+  <object model="orm.releasedefaultlayer" pk="1">
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="4">
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+
+  <!-- TYPE_LOCAL = 0 Layers for the Local release -->
+  <object model="orm.layer" pk="1">
+    <field type="CharField" name="name">openembedded-core</field>
+    <field type="CharField" name="vcs_url">git://git.openembedded.org/openembedded-core</field>
+  </object>
+  <object model="orm.layer_version" pk="1">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="local_path">OE-CORE-LAYER-DIR</field>
+    <field type="CharField" name="branch">HEAD</field>
+    <field type="CharField" name="dirpath">meta</field>
+    <field type="IntegerField" name="layer_source">0</field>
+  </object>
+
+</django-objects>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/poky.xml b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/poky.xml
new file mode 100644
index 0000000..c192baa
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/poky.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<django-objects version="1.0">
+  <!-- Set the project default value for DISTRO -->
+  <object model="orm.toastersetting" pk="1">
+    <field type="CharField" name="name">DEFCONF_DISTRO</field>
+    <field type="CharField" name="value">poky</field>
+  </object>
+
+  <!-- Bitbake versions which correspond to the metadata release -->
+  <object model="orm.bitbakeversion" pk="1">
+    <field type="CharField" name="name">morty</field>
+    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+    <field type="CharField" name="branch">morty</field>
+    <field type="CharField" name="dirpath">bitbake</field>
+  </object>
+  <object model="orm.bitbakeversion" pk="2">
+    <field type="CharField" name="name">HEAD</field>
+    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+    <field type="CharField" name="branch">HEAD</field>
+    <field type="CharField" name="dirpath">bitbake</field>
+  </object>
+
+  <!-- Releases available -->
+  <object model="orm.release" pk="1">
+    <field type="CharField" name="name">morty</field>
+    <field type="CharField" name="description">Yocto Project 2.2 "Morty"</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
+    <field type="CharField" name="branch_name">morty</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=morty"&gt;Yocto Project Morty branch&lt;/a&gt;.</field>
+  </object>
+  <object model="orm.release" pk="2">
+    <field type="CharField" name="name">local</field>
+    <field type="CharField" name="description">Local Yocto Project</field>
+    <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">2</field>
+    <field type="CharField" name="branch_name">HEAD</field>
+    <field type="TextField" name="helptext">Toaster will run your builds with the version of the Yocto Project you have cloned or downloaded to your computer.</field>
+  </object>
+
+  <!-- Default layers for each release -->
+  <object model="orm.releasedefaultlayer" pk="1">
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="2">
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="layer_name">meta-poky</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="3">
+    <field rel="ManyToOneRel" to="orm.release" name="release">1</field>
+    <field type="CharField" name="layer_name">meta-yocto-bsp</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="4">
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="layer_name">openembedded-core</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="5">
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="layer_name">meta-poky</field>
+  </object>
+  <object model="orm.releasedefaultlayer" pk="6">
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="layer_name">meta-yocto-bsp</field>
+  </object>
+
+  <!-- Layers for the Local release
+       layersource TYPE_LOCAL = 0
+  -->
+  <object model="orm.layer" pk="1">
+    <field type="CharField" name="name">openembedded-core</field>
+    <field type="CharField" name="layer_index_url"></field>
+    <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
+  </object>
+  <object model="orm.layer_version" pk="1">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="branch">HEAD</field>
+    <field type="CharField" name="commit">HEAD</field>
+    <field type="CharField" name="dirpath">meta</field>
+  </object>
+
+
+  <object model="orm.layer" pk="2">
+    <field type="CharField" name="name">meta-poky</field>
+    <field type="CharField" name="layer_index_url"></field>
+    <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
+  </object>
+  <object model="orm.layer_version" pk="2">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="branch">HEAD</field>
+    <field type="CharField" name="commit">HEAD</field>
+    <field type="CharField" name="dirpath">meta-poky</field>
+  </object>
+
+
+  <object model="orm.layer" pk="3">
+    <field type="CharField" name="name">meta-yocto-bsp</field>
+    <field type="CharField" name="layer_index_url"></field>
+    <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
+  </object>
+  <object model="orm.layer_version" pk="3">
+    <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
+    <field type="IntegerField" name="layer_source">0</field>
+    <field rel="ManyToOneRel" to="orm.release" name="release">2</field>
+    <field type="CharField" name="branch">HEAD</field>
+    <field type="CharField" name="commit">HEAD</field>
+    <field type="CharField" name="dirpath">meta-yocto-bsp</field>
+  </object>
+</django-objects>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/settings.xml b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/settings.xml
new file mode 100644
index 0000000..ee6a202
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/fixtures/settings.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<django-objects version="1.0">
+  <!-- Default project settings -->
+  <!-- pk=1 is DISTRO -->
+  <object model="orm.toastersetting" pk="2">
+    <field type="CharField" name="name">DEFAULT_RELEASE</field>
+    <field type="CharField" name="value">morty</field>
+  </object>
+  <object model="orm.toastersetting" pk="3">
+    <field type="CharField" name="name">DEFCONF_PACKAGE_CLASSES</field>
+    <field type="CharField" name="value">package_rpm</field>
+  </object>
+  <object model="orm.toastersetting" pk="4">
+    <field type="CharField" name="name">DEFCONF_MACHINE</field>
+    <field type="CharField" name="value">qemux86</field>
+  </object>
+  <object model="orm.toastersetting" pk="5">
+    <field type="CharField" name="name">DEFCONF_SSTATE_DIR</field>
+    <field type="CharField" name="value">${TOPDIR}/../sstate-cache</field>
+  </object>
+  <object model="orm.toastersetting" pk="6">
+    <field type="CharField" name="name">DEFCONF_IMAGE_INSTALL_append</field>
+    <field type="CharField" name="value"></field>
+  </object>
+  <object model="orm.toastersetting" pk="7">
+    <field type="CharField" name="name">DEFCONF_IMAGE_FSTYPES</field>
+    <field type="CharField" name="value">ext3 jffs2 tar.bz2</field>
+  </object>
+  <object model="orm.toastersetting" pk="8">
+    <field type="CharField" name="name">DEFCONF_DL_DIR</field>
+    <field type="CharField" name="value">${TOPDIR}/../downloads</field>
+  </object>
+</django-objects>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index 75e9513..8ff120e 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -1,12 +1,334 @@
-from django.core.management.base import NoArgsCommand, CommandError
-from orm.models import LayerSource
+#
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2016        Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.management.base import NoArgsCommand
+
+from orm.models import LayerSource, Layer, Release, Layer_Version
+from orm.models import LayerVersionDependency, Machine, Recipe
+
 import os
+import sys
+
+import json
+import logging
+import threading
+import time
+logger = logging.getLogger("toaster")
+
+DEFAULT_LAYERINDEX_SERVER = "http://layers.openembedded.org/layerindex/api/"
+
+
+class Spinner(threading.Thread):
+    """ A simple progress spinner to indicate download/parsing is happening"""
+    def __init__(self, *args, **kwargs):
+        super(Spinner, self).__init__(*args, **kwargs)
+        self.setDaemon(True)
+        self.signal = True
+
+    def run(self):
+        os.system('setterm -cursor off')
+        while self.signal:
+            for char in ["/", "-", "\\", "|"]:
+                sys.stdout.write("\r" + char)
+                sys.stdout.flush()
+                time.sleep(0.25)
+        os.system('setterm -cursor on')
+
+    def stop(self):
+        self.signal = False
+
 
 class Command(NoArgsCommand):
-    args    = ""
-    help    = "Updates locally cached information from all LayerSources"
+    args = ""
+    help = "Updates locally cached information from a layerindex server"
 
+    def mini_progress(self, what, i, total):
+        i = i + 1
+        pec = (float(i)/float(total))*100
+
+        sys.stdout.write("\rUpdating %s %d%%" %
+                         (what,
+                          pec))
+        sys.stdout.flush()
+        if int(pec) is 100:
+            sys.stdout.write("\n")
+            sys.stdout.flush()
+
+    def update(self):
+        """
+            Fetches layer, recipe and machine information from a layerindex
+            server
+        """
+        os.system('setterm -cursor off')
+
+        self.apiurl = DEFAULT_LAYERINDEX_SERVER
+
+        assert self.apiurl is not None
+        try:
+            from urllib.request import urlopen, URLError
+            from urllib.parse import urlparse
+        except ImportError:
+            from urllib2 import urlopen, URLError
+            from urlparse import urlparse
+
+        proxy_settings = os.environ.get("http_proxy", None)
+        oe_core_layer = 'openembedded-core'
+
+        def _get_json_response(apiurl=DEFAULT_LAYERINDEX_SERVER):
+            http_progress = Spinner()
+            http_progress.start()
+
+            _parsedurl = urlparse(apiurl)
+            path = _parsedurl.path
+
+            # logger.debug("Fetching %s", apiurl)
+            try:
+                res = urlopen(apiurl)
+            except URLError as e:
+                raise Exception("Failed to read %s: %s" % (path, e.reason))
+
+            parsed = json.loads(res.read().decode('utf-8'))
+
+            http_progress.stop()
+            return parsed
+
+        # verify we can get the basic api
+        try:
+            apilinks = _get_json_response()
+        except Exception as e:
+            import traceback
+            if proxy_settings is not None:
+                logger.info("EE: Using proxy %s" % proxy_settings)
+            logger.warning("EE: could not connect to %s, skipping update:"
+                           "%s\n%s" % (self.apiurl, e, traceback.format_exc()))
+            return
+
+        # update branches; only those that we already have names listed in the
+        # Releases table
+        whitelist_branch_names = [rel.branch_name
+                                  for rel in Release.objects.all()]
+        if len(whitelist_branch_names) == 0:
+            raise Exception("Failed to make list of branches to fetch")
+
+        logger.info("Fetching metadata releases for %s",
+                    " ".join(whitelist_branch_names))
+
+        branches_info = _get_json_response(apilinks['branches'] +
+                                           "?filter=name:%s"
+                                           % "OR".join(whitelist_branch_names))
+
+        # Map the layer index branches to toaster releases
+        li_branch_id_to_toaster_release = {}
+
+        total = len(branches_info)
+        for i, branch in enumerate(branches_info):
+            li_branch_id_to_toaster_release[branch['id']] = \
+                    Release.objects.get(name=branch['name'])
+            self.mini_progress("Releases", i, total)
+
+        # keep a track of the layerindex (li) id mappings so that
+        # layer_versions can be created for these layers later on
+        li_layer_id_to_toaster_layer_id = {}
+
+        logger.info("Fetching layers")
+
+        layers_info = _get_json_response(apilinks['layerItems'])
+
+        total = len(layers_info)
+        for i, li in enumerate(layers_info):
+            # Special case for the openembedded-core layer
+            if li['name'] == oe_core_layer:
+                try:
+                    # If we have an existing openembedded-core for example
+                    # from the toasterconf.json augment the info using the
+                    # layerindex rather than duplicate it
+                    oe_core_l = Layer.objects.get(name=oe_core_layer)
+                    # Take ownership of the layer as now coming from the
+                    # layerindex
+                    oe_core_l.summary = li['summary']
+                    oe_core_l.description = li['description']
+                    oe_core_l.vcs_web_url = li['vcs_web_url']
+                    oe_core_l.vcs_web_tree_base_url = \
+                        li['vcs_web_tree_base_url']
+                    oe_core_l.vcs_web_file_base_url = \
+                        li['vcs_web_file_base_url']
+
+                    oe_core_l.save()
+                    li_layer_id_to_toaster_layer_id[li['id']] = oe_core_l.pk
+                    self.mini_progress("layers", i, total)
+                    continue
+
+                except Layer.DoesNotExist:
+                    pass
+
+            try:
+                l, created = Layer.objects.get_or_create(name=li['name'],
+                                                         vcs_url=li['vcs_url'])
+                l.up_date = li['updated']
+                l.vcs_url = li['vcs_url']
+                l.vcs_web_url = li['vcs_web_url']
+                l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
+                l.vcs_web_file_base_url = li['vcs_web_file_base_url']
+                l.summary = li['summary']
+                l.description = li['description']
+                l.save()
+            except Layer.MultipleObjectsReturned:
+                logger.info("Skipped %s as we found multiple layers and "
+                            "don't know which to update" %
+                            li['name'])
+
+            li_layer_id_to_toaster_layer_id[li['id']] = l.pk
+
+            self.mini_progress("layers", i, total)
+
+        # update layer_versions
+        logger.info("Fetching layer versions")
+        layerbranches_info = _get_json_response(
+            apilinks['layerBranches'] + "?filter=branch__name:%s" %
+            "OR".join(whitelist_branch_names))
+
+        # Map Layer index layer_branch object id to
+        # layer_version toaster object id
+        li_layer_branch_id_to_toaster_lv_id = {}
+
+        total = len(layerbranches_info)
+        for i, lbi in enumerate(layerbranches_info):
+
+            try:
+                lv, created = Layer_Version.objects.get_or_create(
+                    layer_source=LayerSource.TYPE_LAYERINDEX,
+                    layer=Layer.objects.get(
+                        pk=li_layer_id_to_toaster_layer_id[lbi['layer']])
+                )
+            except KeyError:
+                logger.warning(
+                    "No such layerindex layer referenced by layerbranch %d" %
+                    lbi['layer'])
+                continue
+
+            lv.release = li_branch_id_to_toaster_release[lbi['branch']]
+            lv.up_date = lbi['updated']
+            lv.commit = lbi['actual_branch']
+            lv.dirpath = lbi['vcs_subdir']
+            lv.save()
+
+            li_layer_branch_id_to_toaster_lv_id[lbi['id']] =\
+                lv.pk
+            self.mini_progress("layer versions", i, total)
+
+        logger.info("Fetching layer version dependencies")
+        # update layer dependencies
+        layerdependencies_info = _get_json_response(
+            apilinks['layerDependencies'] +
+            "?filter=layerbranch__branch__name:%s" %
+            "OR".join(whitelist_branch_names))
+
+        dependlist = {}
+        for ldi in layerdependencies_info:
+            try:
+                lv = Layer_Version.objects.get(
+                    pk=li_layer_branch_id_to_toaster_lv_id[ldi['layerbranch']])
+            except Layer_Version.DoesNotExist as e:
+                continue
+
+            if lv not in dependlist:
+                dependlist[lv] = []
+            try:
+                layer_id = li_layer_id_to_toaster_layer_id[ldi['dependency']]
+
+                dependlist[lv].append(
+                    Layer_Version.objects.get(
+                        layer_source=LayerSource.TYPE_LAYERINDEX,
+                        layer__pk=layer_id))
+
+            except Layer_Version.DoesNotExist:
+                logger.warning("Cannot find layer version (ls:%s),"
+                               "up_id:%s lv:%s" %
+                               (self, ldi['dependency'], lv))
+
+        total = len(dependlist)
+        for i, lv in enumerate(dependlist):
+            LayerVersionDependency.objects.filter(layer_version=lv).delete()
+            for lvd in dependlist[lv]:
+                LayerVersionDependency.objects.get_or_create(layer_version=lv,
+                                                             depends_on=lvd)
+            self.mini_progress("Layer version dependencies", i, total)
+
+        # update machines
+        logger.info("Fetching machine information")
+        machines_info = _get_json_response(
+            apilinks['machines'] + "?filter=layerbranch__branch__name:%s" %
+            "OR".join(whitelist_branch_names))
+
+        total = len(machines_info)
+        for i, mi in enumerate(machines_info):
+            mo, created = Machine.objects.get_or_create(
+                name=mi['name'],
+                layer_version=Layer_Version.objects.get(
+                    pk=li_layer_branch_id_to_toaster_lv_id[mi['layerbranch']]))
+            mo.up_date = mi['updated']
+            mo.name = mi['name']
+            mo.description = mi['description']
+            mo.save()
+            self.mini_progress("machines", i, total)
+
+        # update recipes; paginate by layer version / layer branch
+        logger.info("Fetching recipe information")
+        recipes_info = _get_json_response(
+            apilinks['recipes'] + "?filter=layerbranch__branch__name:%s" %
+            "OR".join(whitelist_branch_names))
+
+        total = len(recipes_info)
+        for i, ri in enumerate(recipes_info):
+            try:
+                lv_id = li_layer_branch_id_to_toaster_lv_id[ri['layerbranch']]
+                lv = Layer_Version.objects.get(pk=lv_id)
+
+                ro, created = Recipe.objects.get_or_create(
+                    layer_version=lv,
+                    name=ri['pn']
+                )
+
+                ro.layer_version = lv
+                ro.up_date = ri['updated']
+                ro.name = ri['pn']
+                ro.version = ri['pv']
+                ro.summary = ri['summary']
+                ro.description = ri['description']
+                ro.section = ri['section']
+                ro.license = ri['license']
+                ro.homepage = ri['homepage']
+                ro.bugtracker = ri['bugtracker']
+                ro.file_path = ri['filepath'] + "/" + ri['filename']
+                if 'inherits' in ri:
+                    ro.is_image = 'image' in ri['inherits'].split()
+                else:  # workaround for old style layer index
+                    ro.is_image = "-image-" in ri['pn']
+                ro.save()
+            except Exception as e:
+                logger.warning("Failed saving recipe %s", e)
+
+            self.mini_progress("recipes", i, total)
+
+        os.system('setterm -cursor on')
 
     def handle_noargs(self, **options):
-        for ls in LayerSource.objects.all():
-            ls.update()
+        self.update()
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0007_auto_20160523_1446.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0007_auto_20160523_1446.py
new file mode 100644
index 0000000..b472e7c
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0007_auto_20160523_1446.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0006_add_cancelled_state'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='build',
+            name='outcome',
+            field=models.IntegerField(default=2, choices=[(0, 'Succeeded'), (1, 'Failed'), (2, 'In Progress'), (3, 'Cancelled')]),
+        ),
+        migrations.AlterField(
+            model_name='helptext',
+            name='area',
+            field=models.IntegerField(choices=[(0, 'variable')]),
+        ),
+        migrations.AlterField(
+            model_name='layer',
+            name='summary',
+            field=models.TextField(default=None, null=True, help_text='One-line description of the layer'),
+        ),
+        migrations.AlterField(
+            model_name='layer_version',
+            name='local_path',
+            field=models.FilePathField(default='/', max_length=1024),
+        ),
+        migrations.AlterField(
+            model_name='layersource',
+            name='sourcetype',
+            field=models.IntegerField(choices=[(0, 'local'), (1, 'layerindex'), (2, 'imported')]),
+        ),
+        migrations.AlterField(
+            model_name='logmessage',
+            name='level',
+            field=models.IntegerField(default=0, choices=[(0, 'info'), (1, 'warn'), (2, 'error'), (3, 'critical'), (-1, 'toaster exception')]),
+        ),
+        migrations.AlterField(
+            model_name='package',
+            name='installed_name',
+            field=models.CharField(default='', max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='package_dependency',
+            name='dep_type',
+            field=models.IntegerField(choices=[(0, 'depends'), (1, 'depends'), (3, 'recommends'), (2, 'recommends'), (4, 'suggests'), (5, 'provides'), (6, 'replaces'), (7, 'conflicts')]),
+        ),
+        migrations.AlterField(
+            model_name='recipe_dependency',
+            name='dep_type',
+            field=models.IntegerField(choices=[(0, 'depends'), (1, 'rdepends')]),
+        ),
+        migrations.AlterField(
+            model_name='release',
+            name='branch_name',
+            field=models.CharField(default='', max_length=50),
+        ),
+        migrations.AlterField(
+            model_name='releasedefaultlayer',
+            name='layer_name',
+            field=models.CharField(default='', max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='target_file',
+            name='inodetype',
+            field=models.IntegerField(choices=[(1, 'regular'), (2, 'directory'), (3, 'symlink'), (4, 'socket'), (5, 'fifo'), (6, 'character'), (7, 'block')]),
+        ),
+        migrations.AlterField(
+            model_name='task',
+            name='outcome',
+            field=models.IntegerField(default=-1, choices=[(-1, 'Not Available'), (0, 'Succeeded'), (1, 'Covered'), (2, 'Cached'), (3, 'Prebuilt'), (4, 'Failed'), (5, 'Empty')]),
+        ),
+        migrations.AlterField(
+            model_name='task',
+            name='script_type',
+            field=models.IntegerField(default=0, choices=[(0, 'N/A'), (2, 'Python'), (3, 'Shell')]),
+        ),
+        migrations.AlterField(
+            model_name='task',
+            name='sstate_result',
+            field=models.IntegerField(default=0, choices=[(0, 'Not Applicable'), (1, 'File not in cache'), (2, 'Failed'), (3, 'Succeeded')]),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py
new file mode 100644
index 0000000..3367582
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0007_auto_20160523_1446'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='TargetKernelFile',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)),
+                ('file_name', models.FilePathField()),
+                ('file_size', models.IntegerField()),
+                ('target', models.ForeignKey(to='orm.Target')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='TargetSDKFile',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)),
+                ('file_name', models.FilePathField()),
+                ('file_size', models.IntegerField()),
+                ('target', models.ForeignKey(to='orm.Target')),
+            ],
+        ),
+        migrations.RemoveField(
+            model_name='buildartifact',
+            name='build',
+        ),
+        migrations.DeleteModel(
+            name='BuildArtifact',
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0009_target_package_manifest_path.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0009_target_package_manifest_path.py
new file mode 100644
index 0000000..c958f30
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0009_target_package_manifest_path.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0008_refactor_artifact_models'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='target',
+            name='package_manifest_path',
+            field=models.CharField(null=True, max_length=500),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0010_delete_layer_source_references.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0010_delete_layer_source_references.py
new file mode 100644
index 0000000..f67388e
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0010_delete_layer_source_references.py
@@ -0,0 +1,118 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0009_target_package_manifest_path'),
+    ]
+
+    operations = [
+        migrations.AlterUniqueTogether(
+            name='releaselayersourcepriority',
+            unique_together=set([]),
+        ),
+        migrations.RemoveField(
+            model_name='releaselayersourcepriority',
+            name='layer_source',
+        ),
+        migrations.RemoveField(
+            model_name='releaselayersourcepriority',
+            name='release',
+        ),
+        migrations.DeleteModel(
+            name='ImportedLayerSource',
+        ),
+        migrations.DeleteModel(
+            name='LayerIndexLayerSource',
+        ),
+        migrations.DeleteModel(
+            name='LocalLayerSource',
+        ),
+        migrations.RemoveField(
+            model_name='recipe',
+            name='layer_source',
+        ),
+        migrations.RemoveField(
+            model_name='recipe',
+            name='up_id',
+        ),
+        migrations.AlterField(
+            model_name='layer',
+            name='up_date',
+            field=models.DateTimeField(default=django.utils.timezone.now, null=True),
+        ),
+        migrations.AlterField(
+            model_name='layer_version',
+            name='layer_source',
+            field=models.IntegerField(default=0, choices=[(0, 'local'), (1, 'layerindex'), (2, 'imported'), (3, 'build')]),
+        ),
+        migrations.AlterField(
+            model_name='layer_version',
+            name='up_date',
+            field=models.DateTimeField(default=django.utils.timezone.now, null=True),
+        ),
+        migrations.AlterUniqueTogether(
+            name='branch',
+            unique_together=set([]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='layer',
+            unique_together=set([]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='layer_version',
+            unique_together=set([]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='layerversiondependency',
+            unique_together=set([]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='machine',
+            unique_together=set([]),
+        ),
+        migrations.DeleteModel(
+            name='ReleaseLayerSourcePriority',
+        ),
+        migrations.RemoveField(
+            model_name='branch',
+            name='layer_source',
+        ),
+        migrations.RemoveField(
+            model_name='branch',
+            name='up_id',
+        ),
+        migrations.RemoveField(
+            model_name='layer',
+            name='layer_source',
+        ),
+        migrations.RemoveField(
+            model_name='layer',
+            name='up_id',
+        ),
+        migrations.RemoveField(
+            model_name='layer_version',
+            name='up_id',
+        ),
+        migrations.RemoveField(
+            model_name='layerversiondependency',
+            name='layer_source',
+        ),
+        migrations.RemoveField(
+            model_name='layerversiondependency',
+            name='up_id',
+        ),
+        migrations.RemoveField(
+            model_name='machine',
+            name='layer_source',
+        ),
+        migrations.RemoveField(
+            model_name='machine',
+            name='up_id',
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0011_delete_layersource.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0011_delete_layersource.py
new file mode 100644
index 0000000..7550696
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0011_delete_layersource.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0010_delete_layer_source_references'),
+    ]
+
+    operations = [
+        migrations.DeleteModel(
+            name='LayerSource',
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py
new file mode 100644
index 0000000..0e6bb83
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+from django.db.models import Q
+
+
+def branch_to_release(apps, schema_editor):
+    Layer_Version = apps.get_model('orm', 'Layer_Version')
+    Release = apps.get_model('orm', 'Release')
+
+    print("Converting all layer version up_branches to releases")
+    # Find all the layer versions which have an upbranch and convert them to
+    # the release that they're for.
+    for layer_version in Layer_Version.objects.filter(
+            Q(release=None) & ~Q(up_branch=None)):
+        try:
+            # HEAD and local are equivalent
+            if "HEAD" in layer_version.up_branch.name:
+                release = Release.objects.get(name="local")
+                layer_version.commit = "HEAD"
+                layer_version.branch = "HEAD"
+            else:
+                release = Release.objects.get(
+                    name=layer_version.up_branch.name)
+
+            layer_version.release = release
+            layer_version.save()
+        except Exception as e:
+            print("Couldn't work out an appropriate release for %s "
+                  "the up_branch was %s "
+                  "user the django admin interface to correct it" %
+                  (layer_version.layer.name, layer_version.up_branch.name))
+            print(e)
+
+            continue
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0011_delete_layersource'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='layer_version',
+            name='release',
+            field=models.ForeignKey(to='orm.Release', default=None, null=True),
+        ),
+        migrations.RunPython(branch_to_release,
+                             reverse_code=migrations.RunPython.noop),
+
+        migrations.RemoveField(
+            model_name='layer_version',
+            name='up_branch',
+        ),
+
+        migrations.DeleteModel(
+            name='Branch',
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0013_recipe_parse_progress_fields.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0013_recipe_parse_progress_fields.py
new file mode 100644
index 0000000..cc5c96d
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0013_recipe_parse_progress_fields.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0012_use_release_instead_of_up_branch'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='build',
+            name='recipes_parsed',
+            field=models.IntegerField(default=0),
+        ),
+        migrations.AddField(
+            model_name='build',
+            name='recipes_to_parse',
+            field=models.IntegerField(default=1),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0014_allow_empty_buildname.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0014_allow_empty_buildname.py
new file mode 100644
index 0000000..4749a14
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0014_allow_empty_buildname.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0013_recipe_parse_progress_fields'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='build',
+            name='build_name',
+            field=models.CharField(default='', max_length=100),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0015_layer_local_source_dir.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0015_layer_local_source_dir.py
new file mode 100644
index 0000000..9539cd7
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/migrations/0015_layer_local_source_dir.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('orm', '0014_allow_empty_buildname'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='layer',
+            name='local_source_dir',
+            field=models.TextField(null=True, default=None),
+        ),
+    ]
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/models.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/models.py
index 0b83b99..a7de57c 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/orm/models.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/orm/models.py
@@ -21,8 +21,8 @@
 
 from __future__ import unicode_literals
 
-from django.db import models, IntegrityError
-from django.db.models import F, Q, Avg, Max, Sum
+from django.db import models, IntegrityError, DataError
+from django.db.models import F, Q, Sum, Count
 from django.utils import timezone
 from django.utils.encoding import force_bytes
 
@@ -32,9 +32,11 @@
 from django.conf import settings
 import django.db.models.signals
 
-import os.path
+import sys
+import os
 import re
 import itertools
+from signal import SIGUSR1
 
 import logging
 logger = logging.getLogger("toaster")
@@ -77,7 +79,7 @@
         try:
             obj = self.create(**params)
             return obj, True
-        except IntegrityError:
+        except (IntegrityError, DataError):
             exc_info = sys.exc_info()
             try:
                 return self.get(**lookup), False
@@ -102,7 +104,7 @@
 
 def GitURLField(**kwargs):
     r = models.URLField(**kwargs)
-    for i in xrange(len(r.validators)):
+    for i in range(len(r.validators)):
         if isinstance(r.validators[i], validators.URLValidator):
             r.validators[i] = GitURLValidator()
     return r
@@ -116,39 +118,48 @@
     def __unicode__(self):
         return "Setting %s = %s" % (self.name, self.value)
 
+
 class ProjectManager(models.Manager):
     def create_project(self, name, release):
         if release is not None:
-            prj = self.model(name = name, bitbake_version = release.bitbake_version, release = release)
+            prj = self.model(name=name,
+                             bitbake_version=release.bitbake_version,
+                             release=release)
         else:
-            prj = self.model(name = name, bitbake_version = None, release = None)
+            prj = self.model(name=name,
+                             bitbake_version=None,
+                             release=None)
 
         prj.save()
 
-        for defaultconf in ToasterSetting.objects.filter(name__startswith="DEFCONF_"):
+        for defaultconf in ToasterSetting.objects.filter(
+                name__startswith="DEFCONF_"):
             name = defaultconf.name[8:]
-            ProjectVariable.objects.create( project = prj,
-                name = name,
-                value = defaultconf.value)
+            ProjectVariable.objects.create(project=prj,
+                                           name=name,
+                                           value=defaultconf.value)
 
         if release is None:
             return prj
 
         for rdl in release.releasedefaultlayer_set.all():
-            try:
-                lv = Layer_Version.objects.filter(layer__name = rdl.layer_name, up_branch__name = release.branch_name)[0].get_equivalents_wpriority(prj)[0]
-                ProjectLayer.objects.create( project = prj,
-                        layercommit = lv,
-                        optional = False )
-            except IndexError:
-                # we may have no valid layer version objects, and that's ok
-                pass
+            lv = Layer_Version.objects.filter(
+                layer__name=rdl.layer_name,
+                release=release).first()
+
+            if lv:
+                ProjectLayer.objects.create(project=prj,
+                                            layercommit=lv,
+                                            optional=False)
+            else:
+                logger.warning("Default project layer %s not found" %
+                               rdl.layer_name)
 
         return prj
 
     # return single object with is_default = True
     def get_or_create_default_project(self):
-        projects = super(ProjectManager, self).filter(is_default = True)
+        projects = super(ProjectManager, self).filter(is_default=True)
 
         if len(projects) > 1:
             raise Exception('Inconsistent project data: multiple ' +
@@ -156,7 +167,8 @@
         elif len(projects) < 1:
             options = {
                 'name': 'Command line builds',
-                'short_description': 'Project for builds started outside Toaster',
+                'short_description':
+                'Project for builds started outside Toaster',
                 'is_default': True
             }
             project = Project.objects.create(**options)
@@ -269,7 +281,7 @@
         # guard on release, as it can be null
         if self.release:
             queryset = Layer_Version.objects.filter(
-                (Q(up_branch__name=self.release.branch_name) &
+                (Q(release=self.release) &
                  Q(build=None) &
                  Q(project=None)) |
                  Q(project=self))
@@ -335,7 +347,15 @@
             for l in self.projectlayer_set.all().order_by("pk"):
                 commit = l.layercommit.get_vcs_reference()
                 print("ii Building layer ", l.layercommit.layer.name, " at vcs point ", commit)
-                BRLayer.objects.create(req = br, name = l.layercommit.layer.name, giturl = l.layercommit.layer.vcs_url, commit = commit, dirpath = l.layercommit.dirpath, layer_version=l.layercommit)
+                BRLayer.objects.create(
+                    req=br,
+                    name=l.layercommit.layer.name,
+                    giturl=l.layercommit.layer.vcs_url,
+                    commit=commit,
+                    dirpath=l.layercommit.dirpath,
+                    layer_version=l.layercommit,
+                    local_source_dir=l.layercommit.layer.local_source_dir
+                )
 
             br.state = BuildRequest.REQ_QUEUED
             now = timezone.now()
@@ -357,6 +377,8 @@
             except ProjectVariable.DoesNotExist:
                 pass
             br.save()
+            signal_runbuilds()
+
         except Exception:
             # revert the build request creation since we're not done cleanly
             br.delete()
@@ -386,9 +408,15 @@
     completed_on = models.DateTimeField()
     outcome = models.IntegerField(choices=BUILD_OUTCOME, default=IN_PROGRESS)
     cooker_log_path = models.CharField(max_length=500)
-    build_name = models.CharField(max_length=100)
+    build_name = models.CharField(max_length=100, default='')
     bitbake_version = models.CharField(max_length=50)
 
+    # number of recipes to parse for this build
+    recipes_to_parse = models.IntegerField(default=1)
+
+    # number of recipes parsed so far for this build
+    recipes_parsed = models.IntegerField(default=0)
+
     @staticmethod
     def get_recent(project=None):
         """
@@ -415,14 +443,30 @@
         # to show build progress in mrb_section.html
         for build in recent_builds:
             build.percentDone = build.completeper()
+            build.outcomeText = build.get_outcome_text()
 
         return recent_builds
 
+    def started(self):
+        """
+        As build variables are only added for a build when its BuildStarted event
+        is received, a build with no build variables is counted as
+        "in preparation" and not properly started yet. This method
+        will return False if a build has no build variables (it never properly
+        started), or True otherwise.
+
+        Note that this is a temporary workaround for the fact that we don't
+        have a fine-grained state variable on a build which would allow us
+        to record "in progress" (BuildStarted received) vs. "in preparation".
+        """
+        variables = Variable.objects.filter(build=self)
+        return len(variables) > 0
+
     def completeper(self):
         tf = Task.objects.filter(build = self)
         tfc = tf.count()
         if tfc > 0:
-            completeper = tf.exclude(order__isnull=True).count()*100/tfc
+            completeper = tf.exclude(order__isnull=True).count()*100 // tfc
         else:
             completeper = 0
         return completeper
@@ -434,58 +478,62 @@
             eta += ((eta - self.started_on)*(100-completeper))/completeper
         return eta
 
+    def has_images(self):
+        """
+        Returns True if at least one of the targets for this build has an
+        image file associated with it, False otherwise
+        """
+        targets = Target.objects.filter(build_id=self.id)
+        has_images = False
+        for target in targets:
+            if target.has_images():
+                has_images = True
+                break
+        return has_images
+
+    def has_image_recipes(self):
+        """
+        Returns True if a build has any targets which were built from
+        image recipes.
+        """
+        image_recipes = self.get_image_recipes()
+        return len(image_recipes) > 0
+
     def get_image_file_extensions(self):
         """
-        Get list of file name extensions for images produced by this build
+        Get string of file name extensions for images produced by this build;
+        note that this is the actual list of extensions stored on Target objects
+        for this build, and not the value of IMAGE_FSTYPES.
+
+        Returns comma-separated string, e.g. "vmdk, ext4"
         """
-        targets = Target.objects.filter(build_id = self.id)
         extensions = []
 
-        # pattern to match against file path for building extension string
-        pattern = re.compile('\.([^\.]+?)$')
-
+        targets = Target.objects.filter(build_id = self.id)
         for target in targets:
-            if (not target.is_image):
+            if not target.is_image:
                 continue
 
-            target_image_files = Target_Image_File.objects.filter(target_id = target.id)
+            target_image_files = Target_Image_File.objects.filter(
+                target_id=target.id)
 
             for target_image_file in target_image_files:
-                file_name = os.path.basename(target_image_file.file_name)
-                suffix = ''
+                extensions.append(target_image_file.suffix)
 
-                continue_matching = True
-
-                # incrementally extract the suffix from the file path,
-                # checking it against the list of valid suffixes at each
-                # step; if the path is stripped of all potential suffix
-                # parts without matching a valid suffix, this returns all
-                # characters after the first '.' in the file name
-                while continue_matching:
-                    matches = pattern.search(file_name)
-
-                    if None == matches:
-                        continue_matching = False
-                        suffix = re.sub('^\.', '', suffix)
-                        continue
-                    else:
-                        suffix = matches.group(1) + suffix
-
-                    if suffix in Target_Image_File.SUFFIXES:
-                        continue_matching = False
-                        continue
-                    else:
-                        # reduce the file name and try to find the next
-                        # segment from the path which might be part
-                        # of the suffix
-                        file_name = re.sub('.' + matches.group(1), '', file_name)
-                        suffix = '.' + suffix
-
-                if not suffix in extensions:
-                    extensions.append(suffix)
+        extensions = list(set(extensions))
+        extensions.sort()
 
         return ', '.join(extensions)
 
+    def get_image_fstypes(self):
+        """
+        Get the IMAGE_FSTYPES variable value for this build as a de-duplicated
+        list of image file suffixes.
+        """
+        image_fstypes = Variable.objects.get(
+            build=self, variable_name='IMAGE_FSTYPES').variable_value
+        return list(set(re.split(r' {1,}', image_fstypes)))
+
     def get_sorted_target_list(self):
         tgts = Target.objects.filter(build_id = self.id).order_by( 'target' );
         return( tgts );
@@ -576,50 +624,70 @@
 
         return target_labels
 
-    def get_current_status(self):
-        """
-        get the status string from the build request if the build
-        has one, or the text for the build outcome if it doesn't
-        """
-
-        from bldcontrol.models import BuildRequest
-
-        build_request = None
+    def get_buildrequest(self):
+        buildrequest = None
         if hasattr(self, 'buildrequest'):
-            build_request = self.buildrequest
+            buildrequest = self.buildrequest
+        return buildrequest
 
-        if (build_request
-                and build_request.state != BuildRequest.REQ_INPROGRESS
-                and self.outcome == Build.IN_PROGRESS):
-            return self.buildrequest.get_state_display()
+    def is_queued(self):
+        from bldcontrol.models import BuildRequest
+        buildrequest = self.get_buildrequest()
+        if buildrequest:
+            return buildrequest.state == BuildRequest.REQ_QUEUED
+        else:
+            return False
+
+    def is_cancelling(self):
+        from bldcontrol.models import BuildRequest
+        buildrequest = self.get_buildrequest()
+        if buildrequest:
+            return self.outcome == Build.IN_PROGRESS and \
+                buildrequest.state == BuildRequest.REQ_CANCELLING
+        else:
+            return False
+
+    def is_parsing(self):
+        """
+        True if the build is still parsing recipes
+        """
+        return self.outcome == Build.IN_PROGRESS and \
+            self.recipes_parsed < self.recipes_to_parse
+
+    def is_starting(self):
+        """
+        True if the build has no completed tasks yet and is still just starting
+        tasks.
+
+        Note that the mechanism for testing whether a Task is "done" is whether
+        its order field is set, as per the completeper() method.
+        """
+        return self.outcome == Build.IN_PROGRESS and \
+            self.task_build.filter(order__isnull=False).count() == 0
+
+    def get_state(self):
+        """
+        Get the state of the build; one of 'Succeeded', 'Failed', 'In Progress',
+        'Cancelled' (Build outcomes); or 'Queued', 'Cancelling' (states
+        dependent on the BuildRequest state).
+
+        This works around the fact that we have BuildRequest states as well
+        as Build states, but really we just want to know the state of the build.
+        """
+        if self.is_cancelling():
+            return 'Cancelling';
+        elif self.is_queued():
+            return 'Queued'
+        elif self.is_parsing():
+            return 'Parsing'
+        elif self.is_starting():
+            return 'Starting'
         else:
             return self.get_outcome_text()
 
     def __str__(self):
         return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()]))
 
-
-# an Artifact is anything that results from a Build, and may be of interest to the user, and is not stored elsewhere
-class BuildArtifact(models.Model):
-    build = models.ForeignKey(Build)
-    file_name = models.FilePathField()
-    file_size = models.IntegerField()
-
-    def get_local_file_name(self):
-        try:
-            deploydir = Variable.objects.get(build = self.build, variable_name="DEPLOY_DIR").variable_value
-            return  self.file_name[len(deploydir)+1:]
-        except:
-            raise
-
-        return self.file_name
-
-    def get_basename(self):
-        return os.path.basename(self.file_name)
-
-    def is_available(self):
-        return self.build.buildrequest.environment.has_artifact(self.file_name)
-
 class ProjectTarget(models.Model):
     project = models.ForeignKey(Project)
     target = models.CharField(max_length=100)
@@ -633,6 +701,7 @@
     is_image = models.BooleanField(default = False)
     image_size = models.IntegerField(default=0)
     license_manifest_path = models.CharField(max_length=500, null=True)
+    package_manifest_path = models.CharField(max_length=500, null=True)
 
     def package_count(self):
         return Target_Installed_Package.objects.filter(target_id__exact=self.id).count()
@@ -640,14 +709,180 @@
     def __unicode__(self):
         return self.target
 
+    def get_similar_targets(self):
+        """
+        Get target sfor the same machine, task and target name
+        (e.g. 'core-image-minimal') from a successful build for this project
+        (but excluding this target).
+
+        Note that we only look for targets built by this project because
+        projects can have different configurations from each other, and put
+        their artifacts in different directories.
+
+        The possibility of error when retrieving candidate targets
+        is minimised by the fact that bitbake will rebuild artifacts if MACHINE
+        (or various other variables) change. In this case, there is no need to
+        clone artifacts from another target, as those artifacts will have
+        been re-generated for this target anyway.
+        """
+        query = ~Q(pk=self.pk) & \
+            Q(target=self.target) & \
+            Q(build__machine=self.build.machine) & \
+            Q(build__outcome=Build.SUCCEEDED) & \
+            Q(build__project=self.build.project)
+
+        return Target.objects.filter(query)
+
+    def get_similar_target_with_image_files(self):
+        """
+        Get the most recent similar target with Target_Image_Files associated
+        with it, for the purpose of cloning those files onto this target.
+        """
+        similar_target = None
+
+        candidates = self.get_similar_targets()
+        if candidates.count() == 0:
+            return similar_target
+
+        task_subquery = Q(task=self.task)
+
+        # we can look for a 'build' task if this task is a 'populate_sdk_ext'
+        # task, as the latter also creates images; and vice versa; note that
+        # 'build' targets can have their task set to '';
+        # also note that 'populate_sdk' does not produce image files
+        image_tasks = [
+            '', # aka 'build'
+            'build',
+            'image',
+            'populate_sdk_ext'
+        ]
+        if self.task in image_tasks:
+            task_subquery = Q(task__in=image_tasks)
+
+        # annotate with the count of files, to exclude any targets which
+        # don't have associated files
+        candidates = candidates.annotate(num_files=Count('target_image_file'))
+
+        query = task_subquery & Q(num_files__gt=0)
+
+        candidates = candidates.filter(query)
+
+        if candidates.count() > 0:
+            candidates.order_by('build__completed_on')
+            similar_target = candidates.last()
+
+        return similar_target
+
+    def get_similar_target_with_sdk_files(self):
+        """
+        Get the most recent similar target with TargetSDKFiles associated
+        with it, for the purpose of cloning those files onto this target.
+        """
+        similar_target = None
+
+        candidates = self.get_similar_targets()
+        if candidates.count() == 0:
+            return similar_target
+
+        # annotate with the count of files, to exclude any targets which
+        # don't have associated files
+        candidates = candidates.annotate(num_files=Count('targetsdkfile'))
+
+        query = Q(task=self.task) & Q(num_files__gt=0)
+
+        candidates = candidates.filter(query)
+
+        if candidates.count() > 0:
+            candidates.order_by('build__completed_on')
+            similar_target = candidates.last()
+
+        return similar_target
+
+    def clone_image_artifacts_from(self, target):
+        """
+        Make clones of the Target_Image_Files and TargetKernelFile objects
+        associated with Target target, then associate them with this target.
+
+        Note that for Target_Image_Files, we only want files from the previous
+        build whose suffix matches one of the suffixes defined in this
+        target's build's IMAGE_FSTYPES configuration variable. This prevents the
+        Target_Image_File object for an ext4 image being associated with a
+        target for a project which didn't produce an ext4 image (for example).
+
+        Also sets the license_manifest_path and package_manifest_path
+        of this target to the same path as that of target being cloned from, as
+        the manifests are also build artifacts but are treated differently.
+        """
+
+        image_fstypes = self.build.get_image_fstypes()
+
+        # filter out any image files whose suffixes aren't in the
+        # IMAGE_FSTYPES suffixes variable for this target's build
+        image_files = [target_image_file \
+            for target_image_file in target.target_image_file_set.all() \
+            if target_image_file.suffix in image_fstypes]
+
+        for image_file in image_files:
+            image_file.pk = None
+            image_file.target = self
+            image_file.save()
+
+        kernel_files = target.targetkernelfile_set.all()
+        for kernel_file in kernel_files:
+            kernel_file.pk = None
+            kernel_file.target = self
+            kernel_file.save()
+
+        self.license_manifest_path = target.license_manifest_path
+        self.package_manifest_path = target.package_manifest_path
+        self.save()
+
+    def clone_sdk_artifacts_from(self, target):
+        """
+        Clone TargetSDKFile objects from target and associate them with this
+        target.
+        """
+        sdk_files = target.targetsdkfile_set.all()
+        for sdk_file in sdk_files:
+            sdk_file.pk = None
+            sdk_file.target = self
+            sdk_file.save()
+
+    def has_images(self):
+        """
+        Returns True if this target has one or more image files attached to it.
+        """
+        return self.target_image_file_set.all().count() > 0
+
+# kernel artifacts for a target: bzImage and modules*
+class TargetKernelFile(models.Model):
+    target = models.ForeignKey(Target)
+    file_name = models.FilePathField()
+    file_size = models.IntegerField()
+
+    @property
+    def basename(self):
+        return os.path.basename(self.file_name)
+
+# SDK artifacts for a target: sh and manifest files
+class TargetSDKFile(models.Model):
+    target = models.ForeignKey(Target)
+    file_name = models.FilePathField()
+    file_size = models.IntegerField()
+
+    @property
+    def basename(self):
+        return os.path.basename(self.file_name)
+
 class Target_Image_File(models.Model):
     # valid suffixes for image files produced by a build
     SUFFIXES = {
         'btrfs', 'cpio', 'cpio.gz', 'cpio.lz4', 'cpio.lzma', 'cpio.xz',
         'cramfs', 'elf', 'ext2', 'ext2.bz2', 'ext2.gz', 'ext2.lzma', 'ext4',
-        'ext4.gz', 'ext3', 'ext3.gz', 'hddimg', 'iso', 'jffs2', 'jffs2.sum',
-        'squashfs', 'squashfs-lzo', 'squashfs-xz', 'tar.bz2', 'tar.lz4',
-        'tar.xz', 'tartar.gz', 'ubi', 'ubifs', 'vmdk'
+        'ext4.gz', 'ext3', 'ext3.gz', 'hdddirect', 'hddimg', 'iso', 'jffs2',
+        'jffs2.sum', 'multiubi', 'qcow2', 'squashfs', 'squashfs-lzo',
+        'squashfs-xz', 'tar', 'tar.bz2', 'tar.gz', 'tar.lz4', 'tar.xz', 'ubi',
+        'ubifs', 'vdi', 'vmdk', 'wic', 'wic.bz2', 'wic.gz', 'wic.lzma'
     }
 
     target = models.ForeignKey(Target)
@@ -656,6 +891,13 @@
 
     @property
     def suffix(self):
+        """
+        Suffix for image file, minus leading "."
+        """
+        for suffix in Target_Image_File.SUFFIXES:
+            if self.file_name.endswith(suffix):
+                return suffix
+
         filename, suffix = os.path.splitext(self.file_name)
         suffix = suffix.lstrip('.')
         return suffix
@@ -860,31 +1102,70 @@
                                             related_name='appends_set')
 
 
-
 class Package_DependencyManager(models.Manager):
     use_for_related_fields = True
+    TARGET_LATEST = "use-latest-target-for-target"
 
     def get_queryset(self):
         return super(Package_DependencyManager, self).get_queryset().exclude(package_id = F('depends_on__id'))
 
-    def get_total_source_deps_size(self):
-        """ Returns the total file size of all the packages that depend on
-        thispackage.
-        """
-        return self.all().aggregate(Sum('depends_on__size'))
+    def for_target_or_none(self, target):
+        """ filter the dependencies to be displayed by the supplied target
+        if no dependences are found for the target then try None as the target
+        which will return the dependences calculated without the context of a
+        target e.g. non image recipes.
 
-    def get_total_revdeps_size(self):
-        """ Returns the total file size of all the packages that depend on
-        this package.
+        returns: { size, packages }
         """
-        return self.all().aggregate(Sum('package_id__size'))
+        package_dependencies = self.all_depends().order_by('depends_on__name')
 
+        if target is self.TARGET_LATEST:
+            installed_deps =\
+                    package_dependencies.filter(~Q(target__target=None))
+        else:
+            installed_deps =\
+                    package_dependencies.filter(Q(target__target=target))
+
+        packages_list = None
+        total_size = 0
+
+        # If we have installed depdencies for this package and target then use
+        # these to display
+        if installed_deps.count() > 0:
+            packages_list = installed_deps
+            total_size = installed_deps.aggregate(
+                Sum('depends_on__size'))['depends_on__size__sum']
+        else:
+            new_list = []
+            package_names = []
+
+            # Find dependencies for the package that we know about even if
+            # it's not installed on a target e.g. from a non-image recipe
+            for p in package_dependencies.filter(Q(target=None)):
+                if p.depends_on.name in package_names:
+                    continue
+                else:
+                    package_names.append(p.depends_on.name)
+                    new_list.append(p.pk)
+                    # while we're here we may as well total up the size to
+                    # avoid iterating again
+                    total_size += p.depends_on.size
+
+            # We want to return a queryset here for consistency so pick the
+            # deps from the new_list
+            packages_list = package_dependencies.filter(Q(pk__in=new_list))
+
+        return {'packages': packages_list,
+                'size': total_size}
 
     def all_depends(self):
-        """ Returns just the depends packages and not any other dep_type """
+        """ Returns just the depends packages and not any other dep_type
+        Note that this is for any target
+        """
         return self.filter(Q(dep_type=Package_Dependency.TYPE_RDEPENDS) |
                            Q(dep_type=Package_Dependency.TYPE_TRDEPENDS))
 
+
 class Package_Dependency(models.Model):
     TYPE_RDEPENDS = 0
     TYPE_TRDEPENDS = 1
@@ -930,21 +1211,27 @@
     target = models.ForeignKey(Target)
     package = models.ForeignKey(Package, related_name='buildtargetlist_package')
 
+
 class Package_File(models.Model):
     package = models.ForeignKey(Package, related_name='buildfilelist_package')
     path = models.FilePathField(max_length=255, blank=True)
     size = models.IntegerField()
 
+
 class Recipe(models.Model):
-    search_allowed_fields = ['name', 'version', 'file_path', 'section', 'summary', 'description', 'license', 'layer_version__layer__name', 'layer_version__branch', 'layer_version__commit', 'layer_version__local_path', 'layer_version__layer_source__name']
+    search_allowed_fields = ['name', 'version', 'file_path', 'section',
+                             'summary', 'description', 'license',
+                             'layer_version__layer__name',
+                             'layer_version__branch', 'layer_version__commit',
+                             'layer_version__local_path',
+                             'layer_version__layer_source']
 
-    layer_source = models.ForeignKey('LayerSource', default = None, null = True)  # from where did we get this recipe
-    up_id = models.IntegerField(null = True, default = None)                    # id of entry in the source
-    up_date = models.DateTimeField(null = True, default = None)
+    up_date = models.DateTimeField(null=True, default=None)
 
-    name = models.CharField(max_length=100, blank=True)                 # pn
-    version = models.CharField(max_length=100, blank=True)              # pv
-    layer_version = models.ForeignKey('Layer_Version', related_name='recipe_layer_version')
+    name = models.CharField(max_length=100, blank=True)
+    version = models.CharField(max_length=100, blank=True)
+    layer_version = models.ForeignKey('Layer_Version',
+                                      related_name='recipe_layer_version')
     summary = models.TextField(blank=True)
     description = models.TextField(blank=True)
     section = models.CharField(max_length=100, blank=True)
@@ -955,13 +1242,6 @@
     pathflags = models.CharField(max_length=200, blank=True)
     is_image = models.BooleanField(default=False)
 
-    def get_layersource_view_url(self):
-        if self.layer_source is None:
-            return ""
-
-        url = self.layer_source.get_object_view(self.layer_version.up_branch, "recipes", self.name)
-        return url
-
     def __unicode__(self):
         return "Recipe " + self.name + ":" + self.version
 
@@ -1007,8 +1287,6 @@
 
 class Machine(models.Model):
     search_allowed_fields = ["name", "description", "layer_version__layer__name"]
-    layer_source = models.ForeignKey('LayerSource', default = None, null = True)  # from where did we get this machine
-    up_id = models.IntegerField(null = True, default = None)                      # id of entry in the source
     up_date = models.DateTimeField(null = True, default = None)
 
     layer_version = models.ForeignKey('Layer_Version')
@@ -1023,285 +1301,9 @@
     def __unicode__(self):
         return "Machine " + self.name + "(" + self.description + ")"
 
-    class Meta:
-        unique_together = ("layer_source", "up_id")
 
 
-from django.db.models.base import ModelBase
 
-class InheritanceMetaclass(ModelBase):
-    def __call__(cls, *args, **kwargs):
-        obj = super(InheritanceMetaclass, cls).__call__(*args, **kwargs)
-        return obj.get_object()
-
-
-class LayerSource(models.Model):
-    __metaclass__ = InheritanceMetaclass
-
-    class Meta:
-        unique_together = (('sourcetype', 'apiurl'), )
-
-    TYPE_LOCAL = 0
-    TYPE_LAYERINDEX = 1
-    TYPE_IMPORTED = 2
-    SOURCE_TYPE = (
-        (TYPE_LOCAL, "local"),
-        (TYPE_LAYERINDEX, "layerindex"),
-        (TYPE_IMPORTED, "imported"),
-      )
-
-    name = models.CharField(max_length=63, unique = True)
-    sourcetype = models.IntegerField(choices=SOURCE_TYPE)
-    apiurl = models.CharField(max_length=255, null=True, default=None)
-
-    def __init__(self, *args, **kwargs):
-        super(LayerSource, self).__init__(*args, **kwargs)
-        if self.sourcetype == LayerSource.TYPE_LOCAL:
-            self.__class__ = LocalLayerSource
-        elif self.sourcetype == LayerSource.TYPE_LAYERINDEX:
-            self.__class__ = LayerIndexLayerSource
-        elif self.sourcetype == LayerSource.TYPE_IMPORTED:
-            self.__class__ = ImportedLayerSource
-        elif self.sourcetype == None:
-            raise Exception("Unknown LayerSource-derived class. If you added a new layer source type, fill out all code stubs.")
-
-
-    def update(self):
-        """
-            Updates the local database information from the upstream layer source
-        """
-        raise Exception("Abstract, update() must be implemented by all LayerSource-derived classes (object is %s)" % str(vars(self)))
-
-    def save(self, *args, **kwargs):
-        return super(LayerSource, self).save(*args, **kwargs)
-
-    def get_object(self):
-        # preset an un-initilized object
-        if None == self.name:
-            self.name=""
-        if None == self.apiurl:
-            self.apiurl=""
-        if None == self.sourcetype:
-            self.sourcetype=LayerSource.TYPE_LOCAL
-
-        if self.sourcetype == LayerSource.TYPE_LOCAL:
-            self.__class__ = LocalLayerSource
-        elif self.sourcetype == LayerSource.TYPE_LAYERINDEX:
-            self.__class__ = LayerIndexLayerSource
-        elif self.sourcetype == LayerSource.TYPE_IMPORTED:
-            self.__class__ = ImportedLayerSource
-        else:
-            raise Exception("Unknown LayerSource type. If you added a new layer source type, fill out all code stubs.")
-        return self
-
-    def __unicode__(self):
-        return "%s (%s)" % (self.name, self.sourcetype)
-
-
-class LocalLayerSource(LayerSource):
-    class Meta(LayerSource._meta.__class__):
-        proxy = True
-
-    def __init__(self, *args, **kwargs):
-        super(LocalLayerSource, self).__init__(args, kwargs)
-        self.sourcetype = LayerSource.TYPE_LOCAL
-
-    def update(self):
-        """
-            Fetches layer, recipe and machine information from local repository
-        """
-        pass
-
-class ImportedLayerSource(LayerSource):
-    class Meta(LayerSource._meta.__class__):
-        proxy = True
-
-    def __init__(self, *args, **kwargs):
-        super(ImportedLayerSource, self).__init__(args, kwargs)
-        self.sourcetype = LayerSource.TYPE_IMPORTED
-
-    def update(self):
-        """
-            Fetches layer, recipe and machine information from local repository
-        """
-        pass
-
-
-class LayerIndexLayerSource(LayerSource):
-    class Meta(LayerSource._meta.__class__):
-        proxy = True
-
-    def __init__(self, *args, **kwargs):
-        super(LayerIndexLayerSource, self).__init__(args, kwargs)
-        self.sourcetype = LayerSource.TYPE_LAYERINDEX
-
-    def get_object_view(self, branch, objectype, upid):
-        return self.apiurl + "../branch/" + branch.name + "/" + objectype + "/?q=" + str(upid)
-
-    def update(self):
-        """
-            Fetches layer, recipe and machine information from remote repository
-        """
-        assert self.apiurl is not None
-        from django.db import transaction, connection
-
-        import urllib2, urlparse, json
-        import os
-        proxy_settings = os.environ.get("http_proxy", None)
-        oe_core_layer = 'openembedded-core'
-
-        def _get_json_response(apiurl = self.apiurl):
-            _parsedurl = urlparse.urlparse(apiurl)
-            path = _parsedurl.path
-
-            try:
-                res = urllib2.urlopen(apiurl)
-            except urllib2.URLError as e:
-                raise Exception("Failed to read %s: %s" % (path, e.reason))
-
-            return json.loads(res.read())
-
-        # verify we can get the basic api
-        try:
-            apilinks = _get_json_response()
-        except Exception as e:
-            import traceback
-            if proxy_settings is not None:
-                logger.info("EE: Using proxy %s" % proxy_settings)
-            logger.warning("EE: could not connect to %s, skipping update: %s\n%s" % (self.apiurl, e, traceback.format_exc(e)))
-            return
-
-        # update branches; only those that we already have names listed in the
-        # Releases table
-        whitelist_branch_names = map(lambda x: x.branch_name, Release.objects.all())
-        if len(whitelist_branch_names) == 0:
-            raise Exception("Failed to make list of branches to fetch")
-
-        logger.debug("Fetching branches")
-        branches_info = _get_json_response(apilinks['branches']
-            + "?filter=name:%s" % "OR".join(whitelist_branch_names))
-        for bi in branches_info:
-            b, created = Branch.objects.get_or_create(layer_source = self, name = bi['name'])
-            b.up_id = bi['id']
-            b.up_date = bi['updated']
-            b.name = bi['name']
-            b.short_description = bi['short_description']
-            b.save()
-
-        # update layers
-        layers_info = _get_json_response(apilinks['layerItems'])
-
-        for li in layers_info:
-            # Special case for the openembedded-core layer
-            if li['name'] == oe_core_layer:
-                try:
-                    # If we have an existing openembedded-core for example
-                    # from the toasterconf.json augment the info using the
-                    # layerindex rather than duplicate it
-                    oe_core_l =  Layer.objects.get(name=oe_core_layer)
-                    # Take ownership of the layer as now coming from the
-                    # layerindex
-                    oe_core_l.layer_source = self
-                    oe_core_l.up_id = li['id']
-                    oe_core_l.summary = li['summary']
-                    oe_core_l.description = li['description']
-                    oe_core_l.save()
-                    continue
-
-                except Layer.DoesNotExist:
-                    pass
-
-            l, created = Layer.objects.get_or_create(layer_source = self, name = li['name'])
-            l.up_id = li['id']
-            l.up_date = li['updated']
-            l.vcs_url = li['vcs_url']
-            l.vcs_web_url = li['vcs_web_url']
-            l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
-            l.vcs_web_file_base_url = li['vcs_web_file_base_url']
-            l.summary = li['summary']
-            l.description = li['description']
-            l.save()
-
-        # update layerbranches/layer_versions
-        logger.debug("Fetching layer information")
-        layerbranches_info = _get_json_response(apilinks['layerBranches']
-                + "?filter=branch:%s" % "OR".join(map(lambda x: str(x.up_id), [i for i in Branch.objects.filter(layer_source = self) if i.up_id is not None] ))
-            )
-
-        for lbi in layerbranches_info:
-            lv, created = Layer_Version.objects.get_or_create(layer_source = self,
-                    up_id = lbi['id'],
-                    layer=Layer.objects.get(layer_source = self, up_id = lbi['layer'])
-                )
-
-            lv.up_date = lbi['updated']
-            lv.up_branch = Branch.objects.get(layer_source = self, up_id = lbi['branch'])
-            lv.branch = lbi['actual_branch']
-            lv.commit = lbi['actual_branch']
-            lv.dirpath = lbi['vcs_subdir']
-            lv.save()
-
-        # update layer dependencies
-        layerdependencies_info = _get_json_response(apilinks['layerDependencies'])
-        dependlist = {}
-        for ldi in layerdependencies_info:
-            try:
-                lv = Layer_Version.objects.get(layer_source = self, up_id = ldi['layerbranch'])
-            except Layer_Version.DoesNotExist as e:
-                continue
-
-            if lv not in dependlist:
-                dependlist[lv] = []
-            try:
-                dependlist[lv].append(Layer_Version.objects.get(layer_source = self, layer__up_id = ldi['dependency'], up_branch = lv.up_branch))
-            except Layer_Version.DoesNotExist:
-                logger.warning("Cannot find layer version (ls:%s), up_id:%s lv:%s" % (self, ldi['dependency'], lv))
-
-        for lv in dependlist:
-            LayerVersionDependency.objects.filter(layer_version = lv).delete()
-            for lvd in dependlist[lv]:
-                LayerVersionDependency.objects.get_or_create(layer_version = lv, depends_on = lvd)
-
-
-        # update machines
-        logger.debug("Fetching machine information")
-        machines_info = _get_json_response(apilinks['machines']
-                + "?filter=layerbranch:%s" % "OR".join(map(lambda x: str(x.up_id), Layer_Version.objects.filter(layer_source = self)))
-            )
-
-        for mi in machines_info:
-            mo, created = Machine.objects.get_or_create(layer_source = self, up_id = mi['id'], layer_version = Layer_Version.objects.get(layer_source = self, up_id = mi['layerbranch']))
-            mo.up_date = mi['updated']
-            mo.name = mi['name']
-            mo.description = mi['description']
-            mo.save()
-
-        # update recipes; paginate by layer version / layer branch
-        logger.debug("Fetching target information")
-        recipes_info = _get_json_response(apilinks['recipes']
-                + "?filter=layerbranch:%s" % "OR".join(map(lambda x: str(x.up_id), Layer_Version.objects.filter(layer_source = self)))
-            )
-        for ri in recipes_info:
-            try:
-                ro, created = Recipe.objects.get_or_create(layer_source = self, up_id = ri['id'], layer_version = Layer_Version.objects.get(layer_source = self, up_id = ri['layerbranch']))
-                ro.up_date = ri['updated']
-                ro.name = ri['pn']
-                ro.version = ri['pv']
-                ro.summary = ri['summary']
-                ro.description = ri['description']
-                ro.section = ri['section']
-                ro.license = ri['license']
-                ro.homepage = ri['homepage']
-                ro.bugtracker = ri['bugtracker']
-                ro.file_path = ri['filepath'] + "/" + ri['filename']
-                if 'inherits' in ri:
-                    ro.is_image = 'image' in ri['inherits'].split()
-                else: # workaround for old style layer index
-                    ro.is_image = "-image-" in ri['pn']
-                ro.save()
-            except IntegrityError as e:
-                logger.debug("Failed saving recipe, ignoring: %s (%s:%s)" % (e, ro.layer_version, ri['filepath']+"/"+ri['filename']))
-                ro.delete()
 
 class BitbakeVersion(models.Model):
 
@@ -1325,87 +1327,94 @@
     def __unicode__(self):
         return "%s (%s)" % (self.name, self.branch_name)
 
-class ReleaseLayerSourcePriority(models.Model):
-    """ Each release selects layers from the set up layer sources, ordered by priority """
-    release = models.ForeignKey("Release")
-    layer_source = models.ForeignKey("LayerSource")
-    priority = models.IntegerField(default = 0)
-
-    def __unicode__(self):
-        return "%s-%s:%d" % (self.release.name, self.layer_source.name, self.priority)
-    class Meta:
-        unique_together = (('release', 'layer_source'),)
-
+    def __str__(self):
+        return self.name
 
 class ReleaseDefaultLayer(models.Model):
     release = models.ForeignKey(Release)
     layer_name = models.CharField(max_length=100, default="")
 
 
-# Branch class is synced with layerindex.Branch, branches can only come from remote layer indexes
-class Branch(models.Model):
-    layer_source = models.ForeignKey('LayerSource', null = True, default = True)
-    up_id = models.IntegerField(null = True, default = None)                    # id of branch in the source
-    up_date = models.DateTimeField(null = True, default = None)
+class LayerSource(object):
+    """ Where the layer metadata came from """
+    TYPE_LOCAL = 0
+    TYPE_LAYERINDEX = 1
+    TYPE_IMPORTED = 2
+    TYPE_BUILD = 3
 
-    name = models.CharField(max_length=50)
-    short_description = models.CharField(max_length=50, blank=True)
+    SOURCE_TYPE = (
+        (TYPE_LOCAL, "local"),
+        (TYPE_LAYERINDEX, "layerindex"),
+        (TYPE_IMPORTED, "imported"),
+        (TYPE_BUILD, "build"),
+    )
 
-    class Meta:
-        verbose_name_plural = "Branches"
-        unique_together = (('layer_source', 'name'),('layer_source', 'up_id'))
-
-    def __unicode__(self):
-        return self.name
+    def types_dict():
+        """ Turn the TYPES enums into a simple dictionary """
+        dictionary = {}
+        for key in LayerSource.__dict__:
+            if "TYPE" in key:
+                dictionary[key] = getattr(LayerSource, key)
+        return dictionary
 
 
-# Layer class synced with layerindex.LayerItem
 class Layer(models.Model):
-    layer_source = models.ForeignKey(LayerSource, null = True, default = None)  # from where did we got this layer
-    up_id = models.IntegerField(null = True, default = None)                    # id of layer in the remote source
-    up_date = models.DateTimeField(null = True, default = None)
+
+    up_date = models.DateTimeField(null=True, default=timezone.now)
 
     name = models.CharField(max_length=100)
     layer_index_url = models.URLField()
-    vcs_url = GitURLField(default = None, null = True)
-    vcs_web_url = models.URLField(null = True, default = None)
-    vcs_web_tree_base_url = models.URLField(null = True, default = None)
-    vcs_web_file_base_url = models.URLField(null = True, default = None)
+    vcs_url = GitURLField(default=None, null=True)
+    local_source_dir = models.TextField(null = True, default = None)
+    vcs_web_url = models.URLField(null=True, default=None)
+    vcs_web_tree_base_url = models.URLField(null=True, default=None)
+    vcs_web_file_base_url = models.URLField(null=True, default=None)
 
-    summary = models.TextField(help_text='One-line description of the layer', null = True, default = None)
-    description = models.TextField(null = True, default = None)
+    summary = models.TextField(help_text='One-line description of the layer',
+                               null=True, default=None)
+    description = models.TextField(null=True, default=None)
 
     def __unicode__(self):
-        return "%s / %s " % (self.name, self.layer_source)
-
-    class Meta:
-        unique_together = (("layer_source", "up_id"), ("layer_source", "name"))
+        return "%s / %s " % (self.name, self.summary)
 
 
-# LayerCommit class is synced with layerindex.LayerBranch
 class Layer_Version(models.Model):
     """
     A Layer_Version either belongs to a single project or no project
     """
-    search_allowed_fields = ["layer__name", "layer__summary", "layer__description", "layer__vcs_url", "dirpath", "up_branch__name", "commit", "branch"]
-    build = models.ForeignKey(Build, related_name='layer_version_build', default = None, null = True)
+    search_allowed_fields = ["layer__name", "layer__summary",
+                             "layer__description", "layer__vcs_url",
+                             "dirpath", "release__name", "commit", "branch"]
+
+    build = models.ForeignKey(Build, related_name='layer_version_build',
+                              default=None, null=True)
+
     layer = models.ForeignKey(Layer, related_name='layer_version_layer')
 
-    layer_source = models.ForeignKey(LayerSource, null = True, default = None)                   # from where did we get this Layer Version
-    up_id = models.IntegerField(null = True, default = None)        # id of layerbranch in the remote source
-    up_date = models.DateTimeField(null = True, default = None)
-    up_branch = models.ForeignKey(Branch, null = True, default = None)
+    layer_source = models.IntegerField(choices=LayerSource.SOURCE_TYPE,
+                                       default=0)
 
-    branch = models.CharField(max_length=80)            # LayerBranch.actual_branch
-    commit = models.CharField(max_length=100)           # LayerBranch.vcs_last_rev
-    dirpath = models.CharField(max_length=255, null = True, default = None)          # LayerBranch.vcs_subdir
-    priority = models.IntegerField(default = 0)         # if -1, this is a default layer
+    up_date = models.DateTimeField(null=True, default=timezone.now)
 
-    local_path = models.FilePathField(max_length=1024, default = "/")  # where this layer was checked-out
+    # To which metadata release does this layer version belong to
+    release = models.ForeignKey(Release, null=True, default=None)
 
-    project = models.ForeignKey('Project', null = True, default = None)   # Set if this layer is project-specific; always set for imported layers, and project-set branches
+    branch = models.CharField(max_length=80)
+    commit = models.CharField(max_length=100)
+    # If the layer is in a subdir
+    dirpath = models.CharField(max_length=255, null=True, default=None)
 
-    # code lifted, with adaptations, from the layerindex-web application https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/
+    # if -1, this is a default layer
+    priority = models.IntegerField(default=0)
+
+    # where this layer exists on the filesystem
+    local_path = models.FilePathField(max_length=1024, default="/")
+
+    # Set if this layer is restricted to a particular project
+    project = models.ForeignKey('Project', null=True, default=None)
+
+    # code lifted, with adaptations, from the layerindex-web application
+    # https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/
     def _handle_url_path(self, base_url, path):
         import re, posixpath
         if base_url:
@@ -1422,7 +1431,7 @@
                     extra_path = self.dirpath
             else:
                 extra_path = path
-            branchname = self.up_branch.name
+            branchname = self.release.name
             url = base_url.replace('%branch%', branchname)
 
             # If there's a % in the path (e.g. a wildcard bbappend) we need to encode it
@@ -1447,23 +1456,19 @@
     def get_vcs_file_link_url(self, file_path=""):
         if self.layer.vcs_web_file_base_url is None:
             return None
-        return self._handle_url_path(self.layer.vcs_web_file_base_url, file_path)
+        return self._handle_url_path(self.layer.vcs_web_file_base_url,
+                                     file_path)
 
     def get_vcs_dirpath_link_url(self):
         if self.layer.vcs_web_tree_base_url is None:
             return None
         return self._handle_url_path(self.layer.vcs_web_tree_base_url, '')
 
-    def get_equivalents_wpriority(self, project):
-        layer_versions = project.get_all_compatible_layer_versions()
-        filtered = layer_versions.filter(layer__name = self.layer.name)
-        return filtered.order_by("-layer_source__releaselayersourcepriority__priority")
-
     def get_vcs_reference(self):
         if self.branch is not None and len(self.branch) > 0:
             return self.branch
-        if self.up_branch is not None:
-            return self.up_branch.name
+        if self.release is not None:
+            return self.release.name
         if self.commit is not None and len(self.commit) > 0:
             return self.commit
         return 'N/A'
@@ -1491,20 +1496,23 @@
         return sorted(result, key=lambda x: x.layer.name)
 
     def __unicode__(self):
-        return "%d %s (VCS %s, Project %s)" % (self.pk, str(self.layer), self.get_vcs_reference(), self.build.project if self.build is not None else "No project")
+        return ("id %d belongs to layer: %s" % (self.pk, self.layer.name))
 
-    class Meta:
-        unique_together = ("layer_source", "up_id")
+    def __str__(self):
+        if self.release:
+            release = self.release.name
+        else:
+            release = "No release set"
+
+        return "%d %s (%s)" % (self.pk, self.layer.name, release)
+
 
 class LayerVersionDependency(models.Model):
-    layer_source = models.ForeignKey(LayerSource, null = True, default = None)  # from where did we got this layer
-    up_id = models.IntegerField(null = True, default = None)                    # id of layerbranch in the remote source
 
-    layer_version = models.ForeignKey(Layer_Version, related_name="dependencies")
-    depends_on = models.ForeignKey(Layer_Version, related_name="dependees")
-
-    class Meta:
-        unique_together = ("layer_source", "up_id")
+    layer_version = models.ForeignKey(Layer_Version,
+                                      related_name="dependencies")
+    depends_on = models.ForeignKey(Layer_Version,
+                                   related_name="dependees")
 
 class ProjectLayer(models.Model):
     project = models.ForeignKey(Project)
@@ -1585,6 +1593,21 @@
                                                   Q(recipe_includes=self)) &
                                                  ~Q(recipe_excludes=self))
 
+    def get_base_recipe_file(self):
+        """Get the base recipe file path if it exists on the file system"""
+        path_schema_one = "%s/%s" % (self.base_recipe.layer_version.dirpath,
+                                     self.base_recipe.file_path)
+
+        path_schema_two = self.base_recipe.file_path
+
+        if os.path.exists(path_schema_one):
+            return path_schema_one
+
+        # The path may now be the full path if the recipe has been built
+        if os.path.exists(path_schema_two):
+            return path_schema_two
+
+        return None
 
     def generate_recipe_file_contents(self):
         """Generate the contents for the recipe file."""
@@ -1599,17 +1622,16 @@
             # We add all the known packages to be built by this recipe apart
             # from locale packages which are are controlled with IMAGE_LINGUAS.
             for pkg in self.get_all_packages().exclude(
-                name__icontains="locale"):
+                    name__icontains="locale"):
                 packages_conf += pkg.name+' '
 
         packages_conf += "\""
-        try:
-            base_recipe = open("%s/%s" %
-                               (self.base_recipe.layer_version.dirpath,
-                                self.base_recipe.file_path), 'r').read()
-        except IOError:
-            # The path may now be the full path if the recipe has been built
-            base_recipe = open(self.base_recipe.file_path, 'r').read()
+
+        base_recipe_path = self.get_base_recipe_file()
+        if base_recipe_path:
+            base_recipe = open(base_recipe_path, 'r').read()
+        else:
+            raise IOError("Based on recipe file not found")
 
         # Add a special case for when the recipe we have based a custom image
         # recipe on requires another recipe.
@@ -1618,8 +1640,8 @@
         # "require recipes-core/images/core-image-minimal.bb"
 
         req_search = re.search(r'(require\s+)(.+\.bb\s*$)',
-                                   base_recipe,
-                                   re.MULTILINE)
+                               base_recipe,
+                               re.MULTILINE)
         if req_search:
             require_filename = req_search.group(2).strip()
 
@@ -1629,19 +1651,19 @@
 
             new_require_line = "require %s" % corrected_location
 
-            base_recipe = \
-                    base_recipe.replace(req_search.group(0), new_require_line)
+            base_recipe = base_recipe.replace(req_search.group(0),
+                                              new_require_line)
 
-
-        info = {"date" : timezone.now().strftime("%Y-%m-%d %H:%M:%S"),
-                "base_recipe" : base_recipe,
-                "recipe_name" : self.name,
-                "base_recipe_name" : self.base_recipe.name,
-                "license" : self.license,
-                "summary" : self.summary,
-                "description" : self.description,
-                "packages_conf" : packages_conf.strip(),
-               }
+        info = {
+            "date": timezone.now().strftime("%Y-%m-%d %H:%M:%S"),
+            "base_recipe": base_recipe,
+            "recipe_name": self.name,
+            "base_recipe_name": self.base_recipe.name,
+            "license": self.license,
+            "summary": self.summary,
+            "description": self.description,
+            "packages_conf": packages_conf.strip()
+        }
 
         recipe_contents = ("# Original recipe %(base_recipe_name)s \n"
                            "%(base_recipe)s\n\n"
@@ -1717,6 +1739,11 @@
     except Exception as e:
       logger.warning("Problem with cache backend: Failed to clear cache: %s" % e)
 
+def signal_runbuilds():
+    """Send SIGUSR1 to runbuilds process"""
+    with open(os.path.join(os.getenv('BUILDDIR'), '.runbuilds.pid')) as pidf:
+        os.kill(int(pidf.read()), SIGUSR1)
+
 django.db.models.signals.post_save.connect(invalidate_cache)
 django.db.models.signals.post_delete.connect(invalidate_cache)
 django.db.models.signals.m2m_changed.connect(invalidate_cache)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/orm/tests.py b/import-layers/yocto-poky/bitbake/lib/toaster/orm/tests.py
deleted file mode 100644
index 719266e..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/orm/tests.py
+++ /dev/null
@@ -1,180 +0,0 @@
-#! /usr/bin/env python
-# ex:ts=4:sw=4:sts=4:et
-# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
-#
-# BitBake Toaster Implementation
-#
-# Copyright (C) 2013-2015 Intel Corporation
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-"""Test cases for Toaster ORM."""
-
-from django.test import TestCase, TransactionTestCase
-from orm.models import LocalLayerSource, LayerIndexLayerSource, ImportedLayerSource, LayerSource
-from orm.models import Branch, LayerVersionDependency
-
-from orm.models import Project, Layer, Layer_Version, Branch, ProjectLayer
-from orm.models import Release, ReleaseLayerSourcePriority, BitbakeVersion
-
-from django.db import IntegrityError
-
-import os
-
-# set TTS_LAYER_INDEX to the base url to use a different instance of the layer index
-
-class LayerSourceVerifyInheritanceSaveLoad(TestCase):
-    """
-    Tests to verify inheritance for the LayerSource proxy-inheritance classes.
-    """
-    def test_object_creation(self):
-        """Test LayerSource object creation."""
-        for name, sourcetype in [("a1", LayerSource.TYPE_LOCAL),
-                                 ("a2", LayerSource.TYPE_LAYERINDEX),
-                                 ("a3", LayerSource.TYPE_IMPORTED)]:
-            LayerSource.objects.create(name=name, sourcetype=sourcetype)
-
-        objects = LayerSource.objects.all()
-        self.assertTrue(isinstance(objects[0], LocalLayerSource))
-        self.assertTrue(isinstance(objects[1], LayerIndexLayerSource))
-        self.assertTrue(isinstance(objects[2], ImportedLayerSource))
-
-    def test_duplicate_error(self):
-        """Test creation of duplicate LayerSource objects."""
-        stype = LayerSource.TYPE_LOCAL
-        LayerSource.objects.create(name="a1", sourcetype=stype)
-        with self.assertRaises(IntegrityError):
-            LayerSource.objects.create(name="a1", sourcetype=stype)
-
-
-class LILSUpdateTestCase(TransactionTestCase):
-    """Test Layer Source update."""
-
-    def setUp(self):
-        """Create release."""
-        bbv = BitbakeVersion.objects.create(\
-                  name="master", giturl="git://git.openembedded.org/bitbake")
-        Release.objects.create(name="default-release", bitbake_version=bbv,
-                               branch_name="master")
-
-    def test_update(self):
-        """Check if LayerSource.update can fetch branches."""
-        url = os.getenv("TTS_LAYER_INDEX",
-                        default="http://layers.openembedded.org/")
-
-        lsobj = LayerSource.objects.create(\
-                    name="b1", sourcetype=LayerSource.TYPE_LAYERINDEX,
-                    apiurl=url + "layerindex/api/")
-        lsobj.update()
-        self.assertTrue(lsobj.branch_set.all().count() > 0,
-                        "no branches fetched")
-
-class LayerVersionEquivalenceTestCase(TestCase):
-    """Verify Layer_Version priority selection."""
-
-    def setUp(self):
-        """Create required objects."""
-        # create layer source
-        self.lsrc = LayerSource.objects.create(name="dummy-layersource",
-                                               sourcetype=LayerSource.TYPE_LOCAL)
-        # create release
-        bbv = BitbakeVersion.objects.create(\
-                  name="master", giturl="git://git.openembedded.org/bitbake")
-        self.release = Release.objects.create(name="default-release",
-                                              bitbake_version=bbv,
-                                              branch_name="master")
-        # attach layer source to release
-        ReleaseLayerSourcePriority.objects.create(\
-            release=self.release, layer_source=self.lsrc, priority=1)
-
-        # create a layer version for the layer on the specified branch
-        self.layer = Layer.objects.create(name="meta-testlayer",
-                                          layer_source=self.lsrc)
-        self.branch = Branch.objects.create(name="master", layer_source=self.lsrc)
-        self.lver = Layer_Version.objects.create(\
-            layer=self.layer, layer_source=self.lsrc, up_branch=self.branch)
-
-        # create project and project layer
-        self.project = Project.objects.create_project(name="test-project",
-                                                      release=self.release)
-        ProjectLayer.objects.create(project=self.project,
-                                    layercommit=self.lver)
-
-        # create spoof layer that should not appear in the search results
-        layer = Layer.objects.create(name="meta-notvalid",
-                                     layer_source=self.lsrc)
-        self.lver2 = Layer_Version.objects.create(layer=layer,
-                                                  layer_source=self.lsrc,
-                                                  up_branch=self.branch)
-
-    def test_single_layersource(self):
-        """
-        When we have a single layer version,
-        get_equivalents_wpriority() should return a list with
-        just this layer_version.
-        """
-        equivqs = self.lver.get_equivalents_wpriority(self.project)
-        self.assertEqual(list(equivqs), [self.lver])
-
-    def test_dual_layersource(self):
-        """
-        If we have two layers with the same name, from different layer sources,
-        we expect both layers in, in increasing priority of the layer source.
-        """
-        lsrc2 = LayerSource.objects.create(\
-                    name="dummy-layersource2",
-                    sourcetype=LayerSource.TYPE_LOCAL,
-                    apiurl="test")
-
-        # assign a lower priority for the second layer source
-        self.release.releaselayersourcepriority_set.create(layer_source=lsrc2,
-                                                           priority=2)
-
-        # create a new layer_version for a layer with the same name
-        # coming from the second layer source
-        layer2 = Layer.objects.create(name="meta-testlayer",
-                                      layer_source=lsrc2)
-        lver2 = Layer_Version.objects.create(layer=layer2, layer_source=lsrc2,
-                                             up_branch=self.branch)
-
-        # expect two layer versions, in the priority order
-        equivqs = self.lver.get_equivalents_wpriority(self.project)
-        self.assertEqual(list(equivqs), [lver2, self.lver])
-
-    def test_compatible_layer_versions(self):
-        """
-        When we have a 2 layer versions, get_all_compatible_layerversions()
-        should return a queryset with both.
-        """
-        compat_lv = self.project.get_all_compatible_layer_versions()
-        self.assertEqual(list(compat_lv), [self.lver, self.lver2])
-
-    def test_layerversion_get_alldeps(self):
-        """Test Layer_Version.get_alldeps API."""
-        lvers = {}
-        for i in range(10):
-            name = "layer%d" % i
-            lvers[name] = Layer_Version.objects.create(layer=Layer.objects.create(name=name),
-                                                       project=self.project)
-            if i:
-                LayerVersionDependency.objects.create(layer_version=lvers["layer%d" % (i - 1)],
-                                                      depends_on=lvers[name])
-                # Check dinamically added deps
-                self.assertEqual(lvers['layer0'].get_alldeps(self.project.id),
-                                 [lvers['layer%d' % n] for n in range(1, i+1)])
-
-        # Check chain of deps created in previous loop
-        for i in range(10):
-            self.assertEqual(lvers['layer%d' % i].get_alldeps(self.project.id),
-                             [lvers['layer%d' % n] for n in range(i+1, 10)])
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/README b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/README
index 63e8169..6b09d20 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/README
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/README
@@ -4,15 +4,16 @@
 
 The simplest way to install this is via pip:
 
-  pip install selenium
+  pip install selenium==2.53.2
 
-Alternatively, if you used pip to install the libraries required by Toaster,
-selenium will already be installed.
+Note that if you use other versions of Selenium, some of the tests (such as
+tests.browser.test_js_unit_tests.TestJsUnitTests) may fail, as these rely on
+a Selenium test report with a version-specific format.
 
 To run tests against Chrome:
 
 * Download chromedriver for your host OS from
-  https://code.google.com/p/chromedriver/downloads/list
+  https://sites.google.com/a/chromium.org/chromedriver/downloads
 * On *nix systems, put chromedriver on PATH
 * On Windows, put chromedriver.exe in the same directory as chrome.exe
 
@@ -23,15 +24,30 @@
 * On *nix systems, put phantomjs on PATH
 * Not tested on Windows
 
-Firefox should work without requiring additional software to be installed.
+To run tests against Firefox, you may need to install the Marionette driver,
+depending on how new your version of Firefox is. One clue that you need to do
+this is if you see an exception like:
 
-The test case will instantiate a Selenium driver set by the
+  selenium.common.exceptions.WebDriverException: Message: The browser
+  appears to have exited before we could connect. If you specified
+  a log_file in the FirefoxBinary constructor, check it for details.
+
+See https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver
+for installation instructions. Ensure that the Marionette executable (renamed
+as wires on Linux or wires.exe on Windows) is on your PATH; and use "marionette"
+as the browser string passed via TOASTER_TESTS_BROWSER (see below).
+
+(Note: The Toaster tests have been checked against Firefox 47 with the
+Marionette driver.)
+
+The test cases will instantiate a Selenium driver set by the
 TOASTER_TESTS_BROWSER environment variable, or Chrome if this is not specified.
 
 Available drivers:
 
 * chrome (default)
 * firefox
+* marionette (for newer Firefoxes)
 * ie
 * phantomjs
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/selenium_helpers.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/selenium_helpers.py
index 56dbe2b..08711e4 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/selenium_helpers.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/selenium_helpers.py
@@ -27,178 +27,8 @@
 Helper methods for creating Toaster Selenium tests which run within
 the context of Django unit tests.
 """
-
-import os
-import time
-
 from django.contrib.staticfiles.testing import StaticLiveServerTestCase
-from selenium import webdriver
-from selenium.webdriver.support.ui import WebDriverWait
-from selenium.common.exceptions import NoSuchElementException, \
-        StaleElementReferenceException, TimeoutException
+from tests.browser.selenium_helpers_base import SeleniumTestCaseBase
 
-def create_selenium_driver(browser='chrome'):
-    # set default browser string based on env (if available)
-    env_browser = os.environ.get('TOASTER_TESTS_BROWSER')
-    if env_browser:
-        browser = env_browser
-
-    if browser == 'chrome':
-        return webdriver.Chrome(
-            service_args=["--verbose", "--log-path=selenium.log"]
-        )
-    elif browser == 'firefox':
-        return webdriver.Firefox()
-    elif browser == 'ie':
-        return webdriver.Ie()
-    elif browser == 'phantomjs':
-        return webdriver.PhantomJS()
-    else:
-        msg = 'Selenium driver for browser %s is not available' % browser
-        raise RuntimeError(msg)
-
-class Wait(WebDriverWait):
-    """
-    Subclass of WebDriverWait with predetermined timeout and poll
-    frequency. Also deals with a wider variety of exceptions.
-    """
-    _TIMEOUT = 10
-    _POLL_FREQUENCY = 0.5
-
-    def __init__(self, driver):
-        super(Wait, self).__init__(driver, self._TIMEOUT, self._POLL_FREQUENCY)
-
-    def until(self, method, message=''):
-        """
-        Calls the method provided with the driver as an argument until the
-        return value is not False.
-        """
-
-        end_time = time.time() + self._timeout
-        while True:
-            try:
-                value = method(self._driver)
-                if value:
-                    return value
-            except NoSuchElementException:
-                pass
-            except StaleElementReferenceException:
-                pass
-
-            time.sleep(self._poll)
-            if time.time() > end_time:
-                break
-
-        raise TimeoutException(message)
-
-    def until_not(self, method, message=''):
-        """
-        Calls the method provided with the driver as an argument until the
-        return value is False.
-        """
-
-        end_time = time.time() + self._timeout
-        while True:
-            try:
-                value = method(self._driver)
-                if not value:
-                    return value
-            except NoSuchElementException:
-                return True
-            except StaleElementReferenceException:
-                pass
-
-            time.sleep(self._poll)
-            if time.time() > end_time:
-                break
-
-        raise TimeoutException(message)
-
-class SeleniumTestCase(StaticLiveServerTestCase):
-    """
-    NB StaticLiveServerTestCase is used as the base test case so that
-    static files are served correctly in a Selenium test run context; see
-    https://docs.djangoproject.com/en/1.9/ref/contrib/staticfiles/#specialized-test-case-to-support-live-testing
-    """
-
-    @classmethod
-    def setUpClass(cls):
-        """ Create a webdriver driver at the class level """
-
-        super(SeleniumTestCase, cls).setUpClass()
-
-        # instantiate the Selenium webdriver once for all the test methods
-        # in this test case
-        cls.driver = create_selenium_driver()
-
-    @classmethod
-    def tearDownClass(cls):
-        """ Clean up webdriver driver """
-
-        cls.driver.quit()
-        super(SeleniumTestCase, cls).tearDownClass()
-
-    def get(self, url):
-        """
-        Selenium requires absolute URLs, so convert Django URLs returned
-        by resolve() or similar to absolute ones and get using the
-        webdriver instance.
-
-        url: a relative URL
-        """
-        abs_url = '%s%s' % (self.live_server_url, url)
-        self.driver.get(abs_url)
-
-    def find(self, selector):
-        """ Find single element by CSS selector """
-        return self.driver.find_element_by_css_selector(selector)
-
-    def find_all(self, selector):
-        """ Find all elements matching CSS selector """
-        return self.driver.find_elements_by_css_selector(selector)
-
-    def focused_element(self):
-        """ Return the element which currently has focus on the page """
-        return self.driver.switch_to.active_element
-
-    def wait_until_present(self, selector):
-        """ Wait until element matching CSS selector is on the page """
-        is_present = lambda driver: self.find(selector)
-        msg = 'An element matching "%s" should be on the page' % selector
-        element = Wait(self.driver).until(is_present, msg)
-        return element
-
-    def wait_until_visible(self, selector):
-        """ Wait until element matching CSS selector is visible on the page """
-        is_visible = lambda driver: self.find(selector).is_displayed()
-        msg = 'An element matching "%s" should be visible' % selector
-        Wait(self.driver).until(is_visible, msg)
-        return self.find(selector)
-
-    def wait_until_focused(self, selector):
-        """ Wait until element matching CSS selector has focus """
-        is_focused = \
-            lambda driver: self.find(selector) == self.focused_element()
-        msg = 'An element matching "%s" should be focused' % selector
-        Wait(self.driver).until(is_focused, msg)
-        return self.find(selector)
-
-    def enter_text(self, selector, value):
-        """ Insert text into element matching selector """
-        # note that keyup events don't occur until the element is clicked
-        # (in the case of <input type="text"...>, for example), so simulate
-        # user clicking the element before inserting text into it
-        field = self.click(selector)
-
-        field.send_keys(value)
-        return field
-
-    def click(self, selector):
-        """ Click on element which matches CSS selector """
-        element = self.wait_until_visible(selector)
-        element.click()
-        return element
-
-    def get_page_source(self):
-        """ Get raw HTML for the current page """
-        return self.driver.page_source
+class SeleniumTestCase(SeleniumTestCaseBase, StaticLiveServerTestCase):
+    pass
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
new file mode 100644
index 0000000..14e9c15
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
@@ -0,0 +1,218 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# The Wait class and some of SeleniumDriverHelper and SeleniumTestCase are
+# modified from Patchwork, released under the same licence terms as Toaster:
+# https://github.com/dlespiau/patchwork/blob/master/patchwork/tests.browser.py
+
+"""
+Helper methods for creating Toaster Selenium tests which run within
+the context of Django unit tests.
+"""
+
+import os
+import time
+import unittest
+
+from django.contrib.staticfiles.testing import StaticLiveServerTestCase
+from selenium import webdriver
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
+from selenium.common.exceptions import NoSuchElementException, \
+        StaleElementReferenceException, TimeoutException
+
+def create_selenium_driver(browser='chrome'):
+    # set default browser string based on env (if available)
+    env_browser = os.environ.get('TOASTER_TESTS_BROWSER')
+    if env_browser:
+        browser = env_browser
+
+    if browser == 'chrome':
+        return webdriver.Chrome(
+            service_args=["--verbose", "--log-path=selenium.log"]
+        )
+    elif browser == 'firefox':
+        return webdriver.Firefox()
+    elif browser == 'marionette':
+        capabilities = DesiredCapabilities.FIREFOX
+        capabilities['marionette'] = True
+        return webdriver.Firefox(capabilities=capabilities)
+    elif browser == 'ie':
+        return webdriver.Ie()
+    elif browser == 'phantomjs':
+        return webdriver.PhantomJS()
+    else:
+        msg = 'Selenium driver for browser %s is not available' % browser
+        raise RuntimeError(msg)
+
+class Wait(WebDriverWait):
+    """
+    Subclass of WebDriverWait with predetermined timeout and poll
+    frequency. Also deals with a wider variety of exceptions.
+    """
+    _TIMEOUT = 10
+    _POLL_FREQUENCY = 0.5
+
+    def __init__(self, driver):
+        super(Wait, self).__init__(driver, self._TIMEOUT, self._POLL_FREQUENCY)
+
+    def until(self, method, message=''):
+        """
+        Calls the method provided with the driver as an argument until the
+        return value is not False.
+        """
+
+        end_time = time.time() + self._timeout
+        while True:
+            try:
+                value = method(self._driver)
+                if value:
+                    return value
+            except NoSuchElementException:
+                pass
+            except StaleElementReferenceException:
+                pass
+
+            time.sleep(self._poll)
+            if time.time() > end_time:
+                break
+
+        raise TimeoutException(message)
+
+    def until_not(self, method, message=''):
+        """
+        Calls the method provided with the driver as an argument until the
+        return value is False.
+        """
+
+        end_time = time.time() + self._timeout
+        while True:
+            try:
+                value = method(self._driver)
+                if not value:
+                    return value
+            except NoSuchElementException:
+                return True
+            except StaleElementReferenceException:
+                pass
+
+            time.sleep(self._poll)
+            if time.time() > end_time:
+                break
+
+        raise TimeoutException(message)
+
+class SeleniumTestCaseBase(unittest.TestCase):
+    """
+    NB StaticLiveServerTestCase is used as the base test case so that
+    static files are served correctly in a Selenium test run context; see
+    https://docs.djangoproject.com/en/1.9/ref/contrib/staticfiles/#specialized-test-case-to-support-live-testing
+    """
+
+    @classmethod
+    def setUpClass(cls):
+        """ Create a webdriver driver at the class level """
+
+        super(SeleniumTestCaseBase, cls).setUpClass()
+
+        # instantiate the Selenium webdriver once for all the test methods
+        # in this test case
+        cls.driver = create_selenium_driver()
+        cls.driver.maximize_window()
+
+    @classmethod
+    def tearDownClass(cls):
+        """ Clean up webdriver driver """
+
+        cls.driver.quit()
+        super(SeleniumTestCaseBase, cls).tearDownClass()
+
+    def get(self, url):
+        """
+        Selenium requires absolute URLs, so convert Django URLs returned
+        by resolve() or similar to absolute ones and get using the
+        webdriver instance.
+
+        url: a relative URL
+        """
+        abs_url = '%s%s' % (self.live_server_url, url)
+        self.driver.get(abs_url)
+
+    def find(self, selector):
+        """ Find single element by CSS selector """
+        return self.driver.find_element_by_css_selector(selector)
+
+    def find_all(self, selector):
+        """ Find all elements matching CSS selector """
+        return self.driver.find_elements_by_css_selector(selector)
+
+    def element_exists(self, selector):
+        """
+        Return True if one element matching selector exists,
+        False otherwise
+        """
+        return len(self.find_all(selector)) == 1
+
+    def focused_element(self):
+        """ Return the element which currently has focus on the page """
+        return self.driver.switch_to.active_element
+
+    def wait_until_present(self, selector):
+        """ Wait until element matching CSS selector is on the page """
+        is_present = lambda driver: self.find(selector)
+        msg = 'An element matching "%s" should be on the page' % selector
+        element = Wait(self.driver).until(is_present, msg)
+        return element
+
+    def wait_until_visible(self, selector):
+        """ Wait until element matching CSS selector is visible on the page """
+        is_visible = lambda driver: self.find(selector).is_displayed()
+        msg = 'An element matching "%s" should be visible' % selector
+        Wait(self.driver).until(is_visible, msg)
+        return self.find(selector)
+
+    def wait_until_focused(self, selector):
+        """ Wait until element matching CSS selector has focus """
+        is_focused = \
+            lambda driver: self.find(selector) == self.focused_element()
+        msg = 'An element matching "%s" should be focused' % selector
+        Wait(self.driver).until(is_focused, msg)
+        return self.find(selector)
+
+    def enter_text(self, selector, value):
+        """ Insert text into element matching selector """
+        # note that keyup events don't occur until the element is clicked
+        # (in the case of <input type="text"...>, for example), so simulate
+        # user clicking the element before inserting text into it
+        field = self.click(selector)
+
+        field.send_keys(value)
+        return field
+
+    def click(self, selector):
+        """ Click on element which matches CSS selector """
+        element = self.wait_until_visible(selector)
+        element.click()
+        return element
+
+    def get_page_source(self):
+        """ Get raw HTML for the current page """
+        return self.driver.page_source
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py
index e4223f4..b86f29b 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_builds_page.py
@@ -27,6 +27,7 @@
 
 from orm.models import BitbakeVersion, Release, Project, Build, Target
 
+
 class TestAllBuildsPage(SeleniumTestCase):
     """ Tests for all builds page /builds/ """
 
@@ -57,6 +58,13 @@
             'outcome': Build.SUCCEEDED
         }
 
+        self.project1_build_failure = {
+            'project': self.project1,
+            'started_on': now,
+            'completed_on': now,
+            'outcome': Build.FAILED
+        }
+
         self.default_project_build_success = {
             'project': self.default_project,
             'started_on': now,
@@ -64,6 +72,46 @@
             'outcome': Build.SUCCEEDED
         }
 
+    def _get_build_time_element(self, build):
+        """
+        Return the HTML element containing the build time for a build
+        in the recent builds area
+        """
+        selector = 'div[data-latest-build-result="%s"] ' \
+            '[data-role="data-recent-build-buildtime-field"]' % build.id
+
+        # because this loads via Ajax, wait for it to be visible
+        self.wait_until_present(selector)
+
+        build_time_spans = self.find_all(selector)
+
+        self.assertEqual(len(build_time_spans), 1)
+
+        return build_time_spans[0]
+
+    def _get_row_for_build(self, build):
+        """ Get the table row for the build from the all builds table """
+        self.wait_until_present('#allbuildstable')
+
+        rows = self.find_all('#allbuildstable tr')
+
+        # look for the row with a download link on the recipe which matches the
+        # build ID
+        url = reverse('builddashboard', args=(build.id,))
+        selector = 'td.target a[href="%s"]' % url
+
+        found_row = None
+        for row in rows:
+
+            outcome_links = row.find_elements_by_css_selector(selector)
+            if len(outcome_links) == 1:
+                found_row = row
+                break
+
+        self.assertNotEqual(found_row, None)
+
+        return found_row
+
     def test_show_tasks_with_suffix(self):
         """ Task should be shown as suffix on build name """
         build = Build.objects.create(**self.project1_build_success)
@@ -95,17 +143,17 @@
         url = reverse('all-builds')
         self.get(url)
 
-        # shouldn't see a run again button for command-line builds
-        selector = 'div[data-latest-build-result="%s"] button' % default_build.id
+        # shouldn't see a rebuild button for command-line builds
+        selector = 'div[data-latest-build-result="%s"] .rebuild-btn' % default_build.id
         run_again_button = self.find_all(selector)
         self.assertEqual(len(run_again_button), 0,
-                         'should not see a run again button for cli builds')
+                         'should not see a rebuild button for cli builds')
 
-        # should see a run again button for non-command-line builds
-        selector = 'div[data-latest-build-result="%s"] button' % build1.id
+        # should see a rebuild button for non-command-line builds
+        selector = 'div[data-latest-build-result="%s"] .rebuild-btn' % build1.id
         run_again_button = self.find_all(selector)
         self.assertEqual(len(run_again_button), 1,
-                         'should see a run again button for non-cli builds')
+                         'should see a rebuild button for non-cli builds')
 
     def test_tooltips_on_project_name(self):
         """
@@ -124,7 +172,7 @@
         # get the project name cells from the table
         cells = self.find_all('#allbuildstable td[class="project"]')
 
-        selector = 'i.get-help'
+        selector = 'span.get-help'
 
         for cell in cells:
             content = cell.get_attribute('innerHTML')
@@ -141,3 +189,45 @@
             else:
                 msg = 'found unexpected project name cell in all builds table'
                 self.fail(msg)
+
+    def test_builds_time_links(self):
+        """
+        Successful builds should have links on the time column and in the
+        recent builds area; failed builds should not have links on the time column,
+        or in the recent builds area
+        """
+        build1 = Build.objects.create(**self.project1_build_success)
+        build2 = Build.objects.create(**self.project1_build_failure)
+
+        # add some targets to these builds so they have recipe links
+        # (and so we can find the row in the ToasterTable corresponding to
+        # a particular build)
+        Target.objects.create(build=build1, target='foo')
+        Target.objects.create(build=build2, target='bar')
+
+        url = reverse('all-builds')
+        self.get(url)
+
+        # test recent builds area for successful build
+        element = self._get_build_time_element(build1)
+        links = element.find_elements_by_css_selector('a')
+        msg = 'should be a link on the build time for a successful recent build'
+        self.assertEquals(len(links), 1, msg)
+
+        # test recent builds area for failed build
+        element = self._get_build_time_element(build2)
+        links = element.find_elements_by_css_selector('a')
+        msg = 'should not be a link on the build time for a failed recent build'
+        self.assertEquals(len(links), 0, msg)
+
+        # test the time column for successful build
+        build1_row = self._get_row_for_build(build1)
+        links = build1_row.find_elements_by_css_selector('td.time a')
+        msg = 'should be a link on the build time for a successful build'
+        self.assertEquals(len(links), 1, msg)
+
+        # test the time column for failed build
+        build2_row = self._get_row_for_build(build2)
+        links = build2_row.find_elements_by_css_selector('td.time a')
+        msg = 'should not be a link on the build time for a failed build'
+        self.assertEquals(len(links), 0, msg)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py
index ed8e620..44da640 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_all_projects_page.py
@@ -93,7 +93,7 @@
         """
         url = reverse('all-projects')
         self.get(url)
-        self.wait_until_visible('#no-results-projectstable')
+        self.wait_until_visible('#empty-state-projectstable')
 
         rows = self.find_all('#projectstable tbody tr')
         self.assertEqual(len(rows), 0, 'should be no projects displayed')
@@ -122,12 +122,13 @@
         self._add_non_default_project()
 
         self.get(reverse('all-projects'))
+        self.wait_until_visible("#projectstable tr")
 
         # find the row for the default project
         default_project_row = self._get_row_for_project(self.default_project.name)
 
         # check the release text for the default project
-        selector = 'span[data-project-field="release"] span.muted'
+        selector = 'span[data-project-field="release"] span.text-muted'
         element = default_project_row.find_element_by_css_selector(selector)
         text = element.text.strip()
         self.assertEqual(text, 'Not applicable',
@@ -137,7 +138,7 @@
         other_project_row = self._get_row_for_project(self.project.name)
 
         # check the link in the release cell for the other project
-        selector = 'span[data-project-field="release"] a'
+        selector = 'span[data-project-field="release"]'
         element = other_project_row.find_element_by_css_selector(selector)
         text = element.text.strip()
         self.assertEqual(text, self.release.name,
@@ -156,11 +157,13 @@
 
         self.get(reverse('all-projects'))
 
+        self.wait_until_visible("#projectstable tr")
+
         # find the row for the default project
         default_project_row = self._get_row_for_project(self.default_project.name)
 
         # check the machine cell for the default project
-        selector = 'span[data-project-field="machine"] span.muted'
+        selector = 'span[data-project-field="machine"] span.text-muted'
         element = default_project_row.find_element_by_css_selector(selector)
         text = element.text.strip()
         self.assertEqual(text, 'Not applicable',
@@ -170,7 +173,7 @@
         other_project_row = self._get_row_for_project(self.project.name)
 
         # check the link in the machine cell for the other project
-        selector = 'span[data-project-field="machine"] a'
+        selector = 'span[data-project-field="machine"]'
         element = other_project_row.find_element_by_css_selector(selector)
         text = element.text.strip()
         self.assertEqual(text, self.MACHINE_NAME,
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py
index 5e08749..f8ccb54 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py
@@ -22,10 +22,10 @@
 from django.core.urlresolvers import reverse
 from django.utils import timezone
 
-from selenium_helpers import SeleniumTestCase
+from tests.browser.selenium_helpers import SeleniumTestCase
 
 from orm.models import Project, Release, BitbakeVersion, Build, LogMessage
-from orm.models import Layer, Layer_Version, Recipe, CustomImageRecipe
+from orm.models import Layer, Layer_Version, Recipe, CustomImageRecipe, Variable
 
 class TestBuildDashboardPage(SeleniumTestCase):
     """ Tests for the build dashboard /build/X """
@@ -42,11 +42,27 @@
 
         self.build1 = Build.objects.create(project=project,
                                            started_on=now,
-                                           completed_on=now)
+                                           completed_on=now,
+                                           outcome=Build.SUCCEEDED)
 
         self.build2 = Build.objects.create(project=project,
                                            started_on=now,
-                                           completed_on=now)
+                                           completed_on=now,
+                                           outcome=Build.SUCCEEDED)
+
+        self.build3 = Build.objects.create(project=project,
+                                           started_on=now,
+                                           completed_on=now,
+                                           outcome=Build.FAILED)
+
+        # add Variable objects to the successful builds, as this is the criterion
+        # used to determine whether the left-hand panel should be displayed
+        Variable.objects.create(build=self.build1,
+                                variable_name='Foo',
+                                variable_value='Bar')
+        Variable.objects.create(build=self.build2,
+                                variable_name='Foo',
+                                variable_value='Bar')
 
         # exception
         msg1 = 'an exception was thrown'
@@ -64,6 +80,22 @@
             message=msg2
         )
 
+        # error on the failed build
+        msg3 = 'an error occurred'
+        self.error_message = LogMessage.objects.create(
+            build=self.build3,
+            level=LogMessage.ERROR,
+            message=msg3
+        )
+
+        # warning on the failed build
+        msg4 = 'DANGER WILL ROBINSON'
+        self.warning_message = LogMessage.objects.create(
+            build=self.build3,
+            level=LogMessage.WARNING,
+            message=msg4
+        )
+
         # recipes related to the build, for testing the edit custom image/new
         # custom image buttons
         layer = Layer.objects.create(name='alayer')
@@ -71,6 +103,11 @@
             layer=layer, build=self.build1
         )
 
+        # non-image recipes related to a build, for testing the new custom
+        # image button
+        layer_version2 = Layer_Version.objects.create(layer=layer,
+            build=self.build3)
+
         # image recipes
         self.image_recipe1 = Recipe.objects.create(
             name='recipeA',
@@ -140,38 +177,47 @@
         dashboard for the Build object build
         """
         self._get_build_dashboard(build)
-        return self.find_all('#errors div.alert-error')
+        return self.find_all('#errors div.alert-danger')
 
-    def _check_for_log_message(self, build, log_message):
+    def _check_for_log_message(self, message_elements, log_message):
+        """
+        Check that the LogMessage <log_message> has a representation in
+        the HTML elements <message_elements>.
+
+        message_elements: WebElements representing the log messages shown
+        in the build dashboard; each should have a <pre> element inside
+        it with a data-log-message-id attribute
+
+        log_message: orm.models.LogMessage instance
+        """
+        expected_text = log_message.message
+        expected_pk = str(log_message.pk)
+
+        found = False
+        for element in message_elements:
+            log_message_text = element.find_element_by_tag_name('pre').text.strip()
+            text_matches = (log_message_text == expected_text)
+
+            log_message_pk = element.get_attribute('data-log-message-id')
+            id_matches = (log_message_pk == expected_pk)
+
+            if text_matches and id_matches:
+                found = True
+                break
+
+        template_vars = (expected_text, expected_pk)
+        assertion_failed_msg = 'message not found: ' \
+            'expected text "%s" and ID %s' % template_vars
+        self.assertTrue(found, assertion_failed_msg)
+
+    def _check_for_error_message(self, build, log_message):
         """
         Check whether the LogMessage instance <log_message> is
         represented as an HTML error in the dashboard page for the Build object
         build
         """
         errors = self._get_build_dashboard_errors(build)
-        self.assertEqual(len(errors), 2)
-
-        expected_text = log_message.message
-        expected_id = str(log_message.id)
-
-        found = False
-        for error in errors:
-            error_text = error.find_element_by_tag_name('pre').text
-            text_matches = (error_text == expected_text)
-
-            error_id = error.get_attribute('data-error')
-            id_matches = (error_id == expected_id)
-
-            if text_matches and id_matches:
-                found = True
-                break
-
-        template_vars = (expected_text, error_text,
-                         expected_id, error_id)
-        assertion_error_msg = 'exception not found as error: ' \
-            'expected text "%s" and got "%s"; ' \
-            'expected ID %s and got %s' % template_vars
-        self.assertTrue(found, assertion_error_msg)
+        self._check_for_log_message(errors, log_message)
 
     def _check_labels_in_modal(self, modal, expected):
         """
@@ -179,37 +225,29 @@
         the WebElement modal match the list of text values in expected
         """
         # labels containing the radio buttons we're testing for
-        labels = modal.find_elements_by_tag_name('label')
+        labels = modal.find_elements_by_css_selector(".radio")
 
-        # because the label content has the structure
-        #   label text
-        #   <input...>
-        # we have to regex on its innerHTML, as we can't just retrieve the
-        # "label text" on its own via the Selenium API
-        labels_text = sorted(map(
-            lambda label: label.get_attribute('innerHTML'), labels
-        ))
-
-        expected = sorted(expected)
-
+        labels_text = [lab.text for lab in labels]
         self.assertEqual(len(labels_text), len(expected))
 
-        for idx, label_text in enumerate(labels_text):
-            self.assertRegexpMatches(label_text, expected[idx])
+        for expected_text in expected:
+            self.assertTrue(expected_text in labels_text,
+                            "Could not find %s in %s" % (expected_text,
+                                                         labels_text))
 
     def test_exceptions_show_as_errors(self):
         """
         LogMessages with level EXCEPTION should display in the errors
         section of the page
         """
-        self._check_for_log_message(self.build1, self.exception_message)
+        self._check_for_error_message(self.build1, self.exception_message)
 
     def test_criticals_show_as_errors(self):
         """
         LogMessages with level CRITICAL should display in the errors
         section of the page
         """
-        self._check_for_log_message(self.build1, self.critical_message)
+        self._check_for_error_message(self.build1, self.critical_message)
 
     def test_edit_custom_image_button(self):
         """
@@ -217,7 +255,13 @@
         the user choose one of them to edit
         """
         self._get_build_dashboard(self.build1)
+
+        # click the "edit custom image" button, which populates the modal
+        selector = '[data-role="edit-custom-image-trigger"]'
+        self.click(selector)
+
         modal = self.driver.find_element_by_id('edit-custom-image-modal')
+        self.wait_until_visible("#edit-custom-image-modal")
 
         # recipes we expect to see in the edit custom image modal
         expected_recipes = [
@@ -235,10 +279,11 @@
         self._get_build_dashboard(self.build1)
 
         # click the "new custom image" button, which populates the modal
-        selector = '[data-role="new-custom-image-trigger"] button'
+        selector = '[data-role="new-custom-image-trigger"]'
         self.click(selector)
 
         modal = self.driver.find_element_by_id('new-custom-image-modal')
+        self.wait_until_visible("#new-custom-image-modal")
 
         # recipes we expect to see in the new custom image modal
         expected_recipes = [
@@ -249,3 +294,54 @@
         ]
 
         self._check_labels_in_modal(modal, expected_recipes)
+
+    def test_new_custom_image_button_no_image(self):
+        """
+        Check that a build which builds non-image recipes doesn't show
+        the new custom image button on the dashboard.
+        """
+        self._get_build_dashboard(self.build3)
+        selector = '[data-role="new-custom-image-trigger"]'
+        self.assertFalse(self.element_exists(selector),
+            'new custom image button should not show for builds which ' \
+            'don\'t have any image recipes')
+
+    def test_left_panel(self):
+        """"
+        Builds which succeed should have a left panel and a build summary
+        """
+        self._get_build_dashboard(self.build1)
+
+        left_panel = self.find_all('#nav')
+        self.assertEqual(len(left_panel), 1)
+
+        build_summary = self.find_all('[data-role="build-summary-heading"]')
+        self.assertEqual(len(build_summary), 1)
+
+    def test_failed_no_left_panel(self):
+        """
+        Builds which fail should have no left panel and no build summary
+        """
+        self._get_build_dashboard(self.build3)
+
+        left_panel = self.find_all('#nav')
+        self.assertEqual(len(left_panel), 0)
+
+        build_summary = self.find_all('[data-role="build-summary-heading"]')
+        self.assertEqual(len(build_summary), 0)
+
+    def test_failed_shows_errors_and_warnings(self):
+        """
+        Failed builds should still show error and warning messages
+        """
+        self._get_build_dashboard(self.build3)
+
+        errors = self.find_all('#errors div.alert-danger')
+        self._check_for_log_message(errors, self.error_message)
+
+        # expand the warnings area
+        self.click('#warning-toggle')
+        self.wait_until_visible('#warnings div.alert-warning')
+
+        warnings = self.find_all('#warnings div.alert-warning')
+        self._check_for_log_message(warnings, self.warning_message)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py
new file mode 100644
index 0000000..1c627ad
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py
@@ -0,0 +1,222 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+
+from tests.browser.selenium_helpers import SeleniumTestCase
+
+from orm.models import Project, Release, BitbakeVersion, Build, Target, Package
+from orm.models import Target_Image_File, TargetSDKFile, TargetKernelFile
+from orm.models import Target_Installed_Package, Variable
+
+class TestBuildDashboardPageArtifacts(SeleniumTestCase):
+    """ Tests for artifacts on the build dashboard /build/X """
+
+    def setUp(self):
+        bbv = BitbakeVersion.objects.create(name='bbv1', giturl='/tmp/',
+                                            branch='master', dirpath="")
+        release = Release.objects.create(name='release1',
+                                         bitbake_version=bbv)
+        self.project = Project.objects.create_project(name='test project',
+                                                      release=release)
+
+    def _get_build_dashboard(self, build):
+        """
+        Navigate to the build dashboard for build
+        """
+        url = reverse('builddashboard', args=(build.id,))
+        self.get(url)
+
+    def _has_build_artifacts_heading(self):
+        """
+        Check whether the "Build artifacts" heading is visible (True if it
+        is, False otherwise).
+        """
+        return self.element_exists('[data-heading="build-artifacts"]')
+
+    def _has_images_menu_option(self):
+        """
+        Try to get the "Images" list element from the left-hand menu in the
+        build dashboard, and return True if it is present, False otherwise.
+        """
+        return self.element_exists('li.nav-header[data-menu-heading="images"]')
+
+    def test_no_artifacts(self):
+        """
+        If a build produced no artifacts, the artifacts heading and images
+        menu option shouldn't show.
+        """
+        now = timezone.now()
+        build = Build.objects.create(project=self.project,
+            started_on=now, completed_on=now, outcome=Build.SUCCEEDED)
+
+        Target.objects.create(is_image=False, build=build, task='',
+            target='mpfr-native')
+
+        self._get_build_dashboard(build)
+
+        # check build artifacts heading
+        msg = 'Build artifacts heading should not be displayed for non-image' \
+            'builds'
+        self.assertFalse(self._has_build_artifacts_heading(), msg)
+
+        # check "Images" option in left-hand menu (should not be there)
+        msg = 'Images option should not be shown in left-hand menu'
+        self.assertFalse(self._has_images_menu_option(), msg)
+
+    def test_sdk_artifacts(self):
+        """
+        If a build produced SDK artifacts, they should be shown, but the section
+        for image files and the images menu option should be hidden.
+
+        The packages count and size should also be hidden.
+        """
+        now = timezone.now()
+        build = Build.objects.create(project=self.project,
+            started_on=now, completed_on=timezone.now(),
+            outcome=Build.SUCCEEDED)
+
+        target = Target.objects.create(is_image=True, build=build,
+            task='populate_sdk', target='core-image-minimal')
+
+        sdk_file1 = TargetSDKFile.objects.create(target=target,
+            file_size=100000,
+            file_name='/home/foo/core-image-minimal.toolchain.sh')
+
+        sdk_file2 = TargetSDKFile.objects.create(target=target,
+            file_size=120000,
+            file_name='/home/foo/x86_64.toolchain.sh')
+
+        self._get_build_dashboard(build)
+
+        # check build artifacts heading
+        msg = 'Build artifacts heading should be displayed for SDK ' \
+            'builds which generate artifacts'
+        self.assertTrue(self._has_build_artifacts_heading(), msg)
+
+        # check "Images" option in left-hand menu (should not be there)
+        msg = 'Images option should not be shown in left-hand menu for ' \
+            'builds which didn\'t generate an image file'
+        self.assertFalse(self._has_images_menu_option(), msg)
+
+        # check links to SDK artifacts
+        sdk_artifact_links = self.find_all('[data-links="sdk-artifacts"] li')
+        self.assertEqual(len(sdk_artifact_links), 2,
+            'should be links to 2 SDK artifacts')
+
+        # package count and size should not be visible, no link on
+        # target name
+        selector = '[data-value="target-package-count"]'
+        self.assertFalse(self.element_exists(selector),
+            'package count should not be shown for non-image builds')
+
+        selector = '[data-value="target-package-size"]'
+        self.assertFalse(self.element_exists(selector),
+            'package size should not be shown for non-image builds')
+
+        selector = '[data-link="target-packages"]'
+        self.assertFalse(self.element_exists(selector),
+            'link to target packages should not be on target heading')
+
+    def test_image_artifacts(self):
+        """
+        If a build produced image files, kernel artifacts, and manifests,
+        they should all be shown, as well as the image link in the left-hand
+        menu.
+
+        The packages count and size should be shown, with a link to the
+        package display page.
+        """
+        now = timezone.now()
+        build = Build.objects.create(project=self.project,
+            started_on=now, completed_on=timezone.now(),
+            outcome=Build.SUCCEEDED)
+
+        # add a variable to the build so that it counts as "started"
+        Variable.objects.create(build=build,
+                                variable_name='Christopher',
+                                variable_value='Lee')
+
+        target = Target.objects.create(is_image=True, build=build,
+            task='', target='core-image-minimal',
+            license_manifest_path='/home/foo/license.manifest',
+            package_manifest_path='/home/foo/package.manifest')
+
+        image_file = Target_Image_File.objects.create(target=target,
+            file_name='/home/foo/core-image-minimal.ext4', file_size=9000)
+
+        kernel_file1 = TargetKernelFile.objects.create(target=target,
+            file_name='/home/foo/bzImage', file_size=2000)
+
+        kernel_file2 = TargetKernelFile.objects.create(target=target,
+            file_name='/home/foo/bzImage', file_size=2000)
+
+        package = Package.objects.create(build=build, name='foo', size=1024,
+            installed_name='foo1')
+        installed_package = Target_Installed_Package.objects.create(
+            target=target, package=package)
+
+        self._get_build_dashboard(build)
+
+        # check build artifacts heading
+        msg = 'Build artifacts heading should be displayed for image ' \
+            'builds'
+        self.assertTrue(self._has_build_artifacts_heading(), msg)
+
+        # check "Images" option in left-hand menu (should be there)
+        msg = 'Images option should be shown in left-hand menu for image builds'
+        self.assertTrue(self._has_images_menu_option(), msg)
+
+        # check link to image file
+        selector = '[data-links="image-artifacts"] li'
+        self.assertTrue(self.element_exists(selector),
+            'should be a link to the image file (selector %s)' % selector)
+
+        # check links to kernel artifacts
+        kernel_artifact_links = \
+            self.find_all('[data-links="kernel-artifacts"] li')
+        self.assertEqual(len(kernel_artifact_links), 2,
+            'should be links to 2 kernel artifacts')
+
+        # check manifest links
+        selector = 'a[data-link="license-manifest"]'
+        self.assertTrue(self.element_exists(selector),
+            'should be a link to the license manifest (selector %s)' % selector)
+
+        selector = 'a[data-link="package-manifest"]'
+        self.assertTrue(self.element_exists(selector),
+            'should be a link to the package manifest (selector %s)' % selector)
+
+        # check package count and size, link on target name
+        selector = '[data-value="target-package-count"]'
+        element = self.find(selector)
+        self.assertEquals(element.text, '1',
+            'package count should be shown for image builds')
+
+        selector = '[data-value="target-package-size"]'
+        element = self.find(selector)
+        self.assertEquals(element.text, '1.0 KB',
+            'package size should be shown for image builds')
+
+        selector = '[data-link="target-packages"]'
+        self.assertTrue(self.element_exists(selector),
+            'link to target packages should be on target heading')
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
new file mode 100644
index 0000000..ed18324
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
@@ -0,0 +1,66 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+from tests.browser.selenium_helpers import SeleniumTestCase
+from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version
+from orm.models import Target
+
+class TestBuilddashboardPageRecipes(SeleniumTestCase):
+    """ Test build dashboard recipes sub-page """
+
+    def setUp(self):
+        project = Project.objects.get_or_create_default_project()
+
+        now = timezone.now()
+
+        self.build = Build.objects.create(project=project,
+                                          started_on=now,
+                                          completed_on=now)
+
+        layer = Layer.objects.create()
+
+        layer_version = Layer_Version.objects.create(layer=layer,
+            build=self.build)
+
+        recipe = Recipe.objects.create(layer_version=layer_version)
+
+        task = Task.objects.create(build=self.build, recipe=recipe, order=1)
+
+        Target.objects.create(build=self.build, task=task, target='do_build')
+
+    def test_build_recipes_columns(self):
+        """
+        Check that non-hideable columns of the table on the recipes sub-page
+        are disabled on the edit columns dropdown.
+        """
+        url = reverse('recipes', args=(self.build.id,))
+        self.get(url)
+
+        self.wait_until_visible('#edit-columns-button')
+
+        # check that options for the non-hideable columns are disabled
+        non_hideable = ['name', 'version']
+
+        for column in non_hideable:
+            selector = 'input#checkbox-%s[disabled="disabled"]' % column
+            self.wait_until_present(selector)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py
new file mode 100644
index 0000000..da50f16
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py
@@ -0,0 +1,65 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+from tests.browser.selenium_helpers import SeleniumTestCase
+from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version
+from orm.models import Target
+
+class TestBuilddashboardPageTasks(SeleniumTestCase):
+    """ Test build dashboard tasks sub-page """
+
+    def setUp(self):
+        project = Project.objects.get_or_create_default_project()
+
+        now = timezone.now()
+
+        self.build = Build.objects.create(project=project,
+                                          started_on=now,
+                                          completed_on=now)
+
+        layer = Layer.objects.create()
+
+        layer_version = Layer_Version.objects.create(layer=layer)
+
+        recipe = Recipe.objects.create(layer_version=layer_version)
+
+        task = Task.objects.create(build=self.build, recipe=recipe, order=1)
+
+        Target.objects.create(build=self.build, task=task, target='do_build')
+
+    def test_build_tasks_columns(self):
+        """
+        Check that non-hideable columns of the table on the tasks sub-page
+        are disabled on the edit columns dropdown.
+        """
+        url = reverse('tasks', args=(self.build.id,))
+        self.get(url)
+
+        self.wait_until_visible('#edit-columns-button')
+
+        # check that options for the non-hideable columns are disabled
+        non_hideable = ['order', 'task_name', 'recipe__name']
+
+        for column in non_hideable:
+            selector = 'input#checkbox-%s[disabled="disabled"]' % column
+            self.wait_until_present(selector)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py
index e63da8e..3c0b962 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py
@@ -38,11 +38,11 @@
     def test_that_js_unit_tests_pass(self):
         url = reverse('js-unit-tests')
         self.get(url)
-        self.wait_until_present('#tests-failed')
+        self.wait_until_present('#qunit-testresult .failed')
 
-        failed = self.find("#tests-failed").text
-        passed = self.find("#tests-passed").text
-        total = self.find("#tests-total").text
+        failed = self.find("#qunit-testresult .failed").text
+        passed = self.find("#qunit-testresult .passed").text
+        total = self.find("#qunit-testresult .total").text
 
         logger.info("Js unit tests completed %s out of %s passed, %s failed",
                     passed,
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py
new file mode 100644
index 0000000..6392d1e
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py
@@ -0,0 +1,215 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from tests.browser.selenium_helpers import SeleniumTestCase
+
+from orm.models import Layer, Layer_Version, Project, LayerSource, Release
+from orm.models import BitbakeVersion
+
+from selenium.webdriver.support import expected_conditions as EC
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.common.by import By
+
+
+class TestLayerDetailsPage(SeleniumTestCase):
+    """ Test layerdetails page works correctly """
+
+    def __init__(self, *args, **kwargs):
+        super(TestLayerDetailsPage, self).__init__(*args, **kwargs)
+
+        self.initial_values = None
+        self.url = None
+        self.imported_layer_version = None
+
+    def setUp(self):
+        release = Release.objects.create(
+            name='baz',
+            bitbake_version=BitbakeVersion.objects.create(name='v1')
+        )
+
+        # project to add new custom images to
+        self.project = Project.objects.create(name='foo', release=release)
+
+        name = "meta-imported"
+        vcs_url = "git://example.com/meta-imported"
+        subdir = "/layer"
+        gitrev = "d33d"
+        summary = "A imported layer"
+        description = "This was imported"
+
+        imported_layer = Layer.objects.create(name=name,
+                                              vcs_url=vcs_url,
+                                              summary=summary,
+                                              description=description)
+
+        self.imported_layer_version = Layer_Version.objects.create(
+            layer=imported_layer,
+            layer_source=LayerSource.TYPE_IMPORTED,
+            branch=gitrev,
+            commit=gitrev,
+            dirpath=subdir,
+            project=self.project)
+
+        self.initial_values = [name, vcs_url, subdir, gitrev, summary,
+                               description]
+        self.url = reverse('layerdetails',
+                           args=(self.project.pk,
+                                 self.imported_layer_version.pk))
+
+    def test_edit_layerdetails(self):
+        """ Edit all the editable fields for the layer refresh the page and
+        check that the new values exist"""
+
+        self.get(self.url)
+
+        self.click("#add-remove-layer-btn")
+        self.click("#edit-layer-source")
+        self.click("#repo")
+
+        self.wait_until_visible("#layer-git-repo-url")
+
+        # Open every edit box
+        for btn in self.find_all("dd .glyphicon-edit"):
+            btn.click()
+
+        # Wait for the inputs to become visible
+        self.wait_until_visible("#layer-git input[type=text]")
+        self.wait_until_visible("dd textarea")
+
+        # Edit each value
+        for inputs in self.find_all("#layer-git input[type=text]") + \
+                self.find_all("dd textarea"):
+            # ignore the tt inputs (twitter typeahead input)
+            if "tt-" in inputs.get_attribute("class"):
+                continue
+
+            value = inputs.get_attribute("value")
+
+            self.assertTrue(value in self.initial_values,
+                            "Expecting any of \"%s\"but got \"%s\"" %
+                            (self.initial_values, value))
+
+            inputs.send_keys("-edited")
+
+        # Save the new values
+        for save_btn in self.find_all(".change-btn"):
+            save_btn.click()
+
+        self.click("#save-changes-for-switch")
+        self.wait_until_visible("#edit-layer-source")
+
+        # Refresh the page to see if the new values are returned
+        self.get(self.url)
+
+        new_values = ["%s-edited" % old_val
+                      for old_val in self.initial_values]
+
+        for inputs in self.find_all('#layer-git input[type="text"]') + \
+                self.find_all('dd textarea'):
+            # ignore the tt inputs (twitter typeahead input)
+            if "tt-" in inputs.get_attribute("class"):
+                continue
+
+            value = inputs.get_attribute("value")
+
+            self.assertTrue(value in new_values,
+                            "Expecting any of \"%s\" but got \"%s\"" %
+                            (new_values, value))
+
+        # Now convert it to a local layer
+        self.click("#edit-layer-source")
+        self.click("#dir")
+        dir_input = self.wait_until_visible("#layer-dir-path-in-details")
+
+        new_dir = "/home/test/my-meta-dir"
+        dir_input.send_keys(new_dir)
+
+        self.click("#save-changes-for-switch")
+        self.wait_until_visible("#edit-layer-source")
+
+        # Refresh the page to see if the new values are returned
+        self.get(self.url)
+        dir_input = self.find("#layer-dir-path-in-details")
+        self.assertTrue(new_dir in dir_input.get_attribute("value"),
+                        "Expected %s in the dir value for layer directory" %
+                        new_dir)
+
+    def test_delete_layer(self):
+        """ Delete the layer """
+
+        self.get(self.url)
+
+        # Wait for the tables to load to avoid a race condition where the
+        # toaster tables have made an async request. If the layer is deleted
+        # before the request finishes it will cause an exception and fail this
+        # test.
+        wait = WebDriverWait(self.driver, 30)
+
+        wait.until(EC.text_to_be_present_in_element(
+            (By.CLASS_NAME,
+             "table-count-recipestable"), "0"))
+
+        wait.until(EC.text_to_be_present_in_element(
+            (By.CLASS_NAME,
+             "table-count-machinestable"), "0"))
+
+        self.click('a[data-target="#delete-layer-modal"]')
+        self.wait_until_visible("#delete-layer-modal")
+        self.click("#layer-delete-confirmed")
+
+        notification = self.wait_until_visible("#change-notification-msg")
+        expected_text = "You have deleted 1 layer from your project: %s" % \
+            self.imported_layer_version.layer.name
+
+        self.assertTrue(expected_text in notification.text,
+                        "Expected notification text \"%s\" not found instead"
+                        "it was \"%s\"" %
+                        (expected_text, notification.text))
+
+    def test_addrm_to_project(self):
+        self.get(self.url)
+
+        # Add the layer
+        self.click("#add-remove-layer-btn")
+
+        notification = self.wait_until_visible("#change-notification-msg")
+
+        expected_text = "You have added 1 layer to your project: %s" % \
+            self.imported_layer_version.layer.name
+
+        self.assertTrue(expected_text in notification.text,
+                        "Expected notification text %s not found was "
+                        " \"%s\" instead" %
+                        (expected_text, notification.text))
+
+        # Remove the layer
+        self.click("#add-remove-layer-btn")
+
+        notification = self.wait_until_visible("#change-notification-msg")
+
+        expected_text = "You have removed 1 layer from your project: %s" % \
+            self.imported_layer_version.layer.name
+
+        self.assertTrue(expected_text in notification.text,
+                        "Expected notification text %s not found was "
+                        " \"%s\" instead" %
+                        (expected_text, notification.text))
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py
new file mode 100644
index 0000000..abc0b0b
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py
@@ -0,0 +1,211 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+from tests.browser.selenium_helpers import SeleniumTestCase
+from tests.browser.selenium_helpers_base import Wait
+from orm.models import Project, Build, Task, Recipe, Layer, Layer_Version
+from bldcontrol.models import BuildRequest
+
+class TestMostRecentBuildsStates(SeleniumTestCase):
+    """ Test states update correctly in most recent builds area """
+
+    def _create_build_request(self):
+        project = Project.objects.get_or_create_default_project()
+
+        now = timezone.now()
+
+        build = Build.objects.create(project=project, build_name='fakebuild',
+            started_on=now, completed_on=now)
+
+        return BuildRequest.objects.create(build=build, project=project,
+            state=BuildRequest.REQ_QUEUED)
+
+    def _create_recipe(self):
+        """ Add a recipe to the database and return it """
+        layer = Layer.objects.create()
+        layer_version = Layer_Version.objects.create(layer=layer)
+        return Recipe.objects.create(name='foo', layer_version=layer_version)
+
+    def _check_build_states(self, build_request):
+        recipes_to_parse = 10
+        url = reverse('all-builds')
+        self.get(url)
+
+        build = build_request.build
+        base_selector = '[data-latest-build-result="%s"] ' % build.id
+
+        # build queued; check shown as queued
+        selector = base_selector + '[data-build-state="Queued"]'
+        element = self.wait_until_visible(selector)
+        self.assertRegexpMatches(element.get_attribute('innerHTML'),
+            'Build queued', 'build should show queued status')
+
+        # waiting for recipes to be parsed
+        build.outcome = Build.IN_PROGRESS
+        build.recipes_to_parse = recipes_to_parse
+        build.recipes_parsed = 0
+
+        build_request.state = BuildRequest.REQ_INPROGRESS
+        build_request.save()
+
+        self.get(url)
+
+        selector = base_selector + '[data-build-state="Parsing"]'
+        element = self.wait_until_visible(selector)
+
+        bar_selector = '#recipes-parsed-percentage-bar-%s' % build.id
+        bar_element = element.find_element_by_css_selector(bar_selector)
+        self.assertEqual(bar_element.value_of_css_property('width'), '0px',
+            'recipe parse progress should be at 0')
+
+        # recipes being parsed; check parse progress
+        build.recipes_parsed = 5
+        build.save()
+
+        self.get(url)
+
+        element = self.wait_until_visible(selector)
+        bar_element = element.find_element_by_css_selector(bar_selector)
+        recipe_bar_updated = lambda driver: \
+            bar_element.get_attribute('style') == 'width: 50%;'
+        msg = 'recipe parse progress bar should update to 50%'
+        element = Wait(self.driver).until(recipe_bar_updated, msg)
+
+        # all recipes parsed, task started, waiting for first task to finish;
+        # check status is shown as "Tasks starting..."
+        build.recipes_parsed = recipes_to_parse
+        build.save()
+
+        recipe = self._create_recipe()
+        task1 = Task.objects.create(build=build, recipe=recipe,
+            task_name='Lionel')
+        task2 = Task.objects.create(build=build, recipe=recipe,
+            task_name='Jeffries')
+
+        self.get(url)
+
+        selector = base_selector + '[data-build-state="Starting"]'
+        element = self.wait_until_visible(selector)
+        self.assertRegexpMatches(element.get_attribute('innerHTML'),
+            'Tasks starting', 'build should show "tasks starting" status')
+
+        # first task finished; check tasks progress bar
+        task1.order = 1
+        task1.save()
+
+        self.get(url)
+
+        selector = base_selector + '[data-build-state="In Progress"]'
+        element = self.wait_until_visible(selector)
+
+        bar_selector = '#build-pc-done-bar-%s' % build.id
+        bar_element = element.find_element_by_css_selector(bar_selector)
+
+        task_bar_updated = lambda driver: \
+            bar_element.get_attribute('style') == 'width: 50%;'
+        msg = 'tasks progress bar should update to 50%'
+        element = Wait(self.driver).until(task_bar_updated, msg)
+
+        # last task finished; check tasks progress bar updates
+        task2.order = 2
+        task2.save()
+
+        self.get(url)
+
+        element = self.wait_until_visible(selector)
+        bar_element = element.find_element_by_css_selector(bar_selector)
+        task_bar_updated = lambda driver: \
+            bar_element.get_attribute('style') == 'width: 100%;'
+        msg = 'tasks progress bar should update to 100%'
+        element = Wait(self.driver).until(task_bar_updated, msg)
+
+    def test_states_to_success(self):
+        """
+        Test state transitions in the recent builds area for a build which
+        completes successfully.
+        """
+        build_request = self._create_build_request()
+
+        self._check_build_states(build_request)
+
+        # all tasks complete and build succeeded; check success state shown
+        build = build_request.build
+        build.outcome = Build.SUCCEEDED
+        build.save()
+
+        selector = '[data-latest-build-result="%s"] ' \
+            '[data-build-state="Succeeded"]' % build.id
+        element = self.wait_until_visible(selector)
+
+    def test_states_to_failure(self):
+        """
+        Test state transitions in the recent builds area for a build which
+        completes in a failure.
+        """
+        build_request = self._create_build_request()
+
+        self._check_build_states(build_request)
+
+        # all tasks complete and build succeeded; check fail state shown
+        build = build_request.build
+        build.outcome = Build.FAILED
+        build.save()
+
+        selector = '[data-latest-build-result="%s"] ' \
+            '[data-build-state="Failed"]' % build.id
+        element = self.wait_until_visible(selector)
+
+    def test_states_cancelling(self):
+        """
+        Test that most recent build area updates correctly for a build
+        which is cancelled.
+        """
+        url = reverse('all-builds')
+
+        build_request = self._create_build_request()
+        build = build_request.build
+
+        # cancel the build
+        build_request.state = BuildRequest.REQ_CANCELLING
+        build_request.save()
+
+        self.get(url)
+
+        # check cancelling state
+        selector = '[data-latest-build-result="%s"] ' \
+            '[data-build-state="Cancelling"]' % build.id
+        element = self.wait_until_visible(selector)
+        self.assertRegexpMatches(element.get_attribute('innerHTML'),
+            'Cancelling the build', 'build should show "cancelling" status')
+
+        # check cancelled state
+        build.outcome = Build.CANCELLED
+        build.save()
+
+        self.get(url)
+
+        selector = '[data-latest-build-result="%s"] ' \
+            '[data-build-state="Cancelled"]' % build.id
+        element = self.wait_until_visible(selector)
+        self.assertRegexpMatches(element.get_attribute('innerHTML'),
+            'Build cancelled', 'build should show "cancelled" status')
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py
index 8906cb2..ab5a8e6 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py
@@ -25,6 +25,7 @@
 from orm.models import BitbakeVersion, Release, Project, ProjectLayer, Layer
 from orm.models import Layer_Version, Recipe, CustomImageRecipe
 
+
 class TestNewCustomImagePage(SeleniumTestCase):
     CUSTOM_IMAGE_NAME = 'roopa-doopa'
 
@@ -140,7 +141,7 @@
         self._create_custom_image(self.recipe.name)
         element = self.wait_until_visible('#invalid-name-help')
         self.assertRegexpMatches(element.text.strip(),
-                                 'recipe with this name already exists')
+                                 'image with this name already exists')
 
     def test_new_duplicates_project_image(self):
         """
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_new_project_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_new_project_page.py
new file mode 100644
index 0000000..77e5f15
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_new_project_page.py
@@ -0,0 +1,113 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from tests.browser.selenium_helpers import SeleniumTestCase
+from selenium.webdriver.support.ui import Select
+from selenium.common.exceptions import InvalidElementStateException
+
+from orm.models import Project, Release, BitbakeVersion
+
+
+class TestNewProjectPage(SeleniumTestCase):
+    """ Test project data at /project/X/ is displayed correctly """
+
+    def setUp(self):
+        bitbake, c = BitbakeVersion.objects.get_or_create(
+            name="master",
+            giturl="git://master",
+            branch="master",
+            dirpath="master")
+
+        release, c = Release.objects.get_or_create(name="msater",
+                                                   description="master"
+                                                   "release",
+                                                   branch_name="master",
+                                                   helptext="latest",
+                                                   bitbake_version=bitbake)
+
+        self.release, c = Release.objects.get_or_create(
+            name="msater2",
+            description="master2"
+            "release2",
+            branch_name="master2",
+            helptext="latest2",
+            bitbake_version=bitbake)
+
+    def test_create_new_project(self):
+        """ Test creating a project """
+
+        project_name = "masterproject"
+
+        url = reverse('newproject')
+        self.get(url)
+
+        self.enter_text('#new-project-name', project_name)
+
+        select = Select(self.find('#projectversion'))
+        select.select_by_value(str(self.release.pk))
+
+        self.click("#create-project-button")
+
+        # We should get redirected to the new project's page with the
+        # notification at the top
+        element = self.wait_until_visible('#project-created-notification')
+
+        self.assertTrue(project_name in element.text,
+                        "New project name not in new project notification")
+
+        self.assertTrue(Project.objects.filter(name=project_name).count(),
+                        "New project not found in database")
+
+    def test_new_duplicates_project_name(self):
+        """
+        Should not be able to create a new project whose name is the same
+        as an existing project
+       """
+
+        project_name = "dupproject"
+
+        Project.objects.create_project(name=project_name,
+                                       release=self.release)
+
+        url = reverse('newproject')
+        self.get(url)
+
+        self.enter_text('#new-project-name', project_name)
+
+        select = Select(self.find('#projectversion'))
+        select.select_by_value(str(self.release.pk))
+
+        element = self.wait_until_visible('#hint-error-project-name')
+
+        self.assertTrue(("Project names must be unique" in element.text),
+                        "Did not find unique project name error message")
+
+        # Try and click it anyway, if it submits we'll have a new project in
+        # the db and assert then
+        try:
+            self.click("#create-project-button")
+        except InvalidElementStateException:
+            pass
+
+        self.assertTrue(
+            (Project.objects.filter(name=project_name).count() == 1),
+            "New project not found in database")
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_project_config_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_project_config_page.py
new file mode 100644
index 0000000..0710084
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_project_config_page.py
@@ -0,0 +1,231 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import re
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+from tests.browser.selenium_helpers import SeleniumTestCase
+
+from orm.models import BitbakeVersion, Release, Project, ProjectVariable
+
+class TestProjectConfigsPage(SeleniumTestCase):
+    """ Test data at /project/X/builds is displayed correctly """
+
+    PROJECT_NAME = 'test project'
+    INVALID_PATH_START_TEXT = 'The directory path should either start with a /'
+    INVALID_PATH_CHAR_TEXT = 'The directory path cannot include spaces or ' \
+        'any of these characters'
+
+    def setUp(self):
+        bbv = BitbakeVersion.objects.create(name='bbv1', giturl='/tmp/',
+                                            branch='master', dirpath='')
+        release = Release.objects.create(name='release1',
+                                         bitbake_version=bbv)
+        self.project1 = Project.objects.create_project(name=self.PROJECT_NAME,
+                                                       release=release)
+        self.project1.save()
+
+
+    def test_no_underscore_iamgefs_type(self):
+        """
+        Should not accept IMAGEFS_TYPE with an underscore
+        """
+
+        imagefs_type = "foo_bar"
+
+        ProjectVariable.objects.get_or_create(project = self.project1, name = "IMAGE_FSTYPES", value = "abcd ")
+        url = reverse('projectconf', args=(self.project1.id,));
+        self.get(url);
+
+        self.click('#change-image_fstypes-icon')
+
+        self.enter_text('#new-imagefs_types', imagefs_type)
+
+        element = self.wait_until_visible('#hintError-image-fs_type')
+
+        self.assertTrue(("A valid image type cannot include underscores" in element.text),
+                        "Did not find underscore error message")
+
+
+    def test_checkbox_verification(self):
+        """
+        Should automatically check the checkbox if user enters value
+        text box, if value is there in the checkbox.
+        """
+        imagefs_type = "btrfs"
+
+        ProjectVariable.objects.get_or_create(project = self.project1, name = "IMAGE_FSTYPES", value = "abcd ")
+        url = reverse('projectconf', args=(self.project1.id,));
+        self.get(url);
+
+        self.click('#change-image_fstypes-icon')
+
+        self.enter_text('#new-imagefs_types', imagefs_type)
+
+        checkboxes = self.driver.find_elements_by_xpath("//input[@class='fs-checkbox-fstypes']")
+
+        for checkbox in checkboxes:
+            if checkbox.get_attribute("value") == "btrfs":
+               self.assertEqual(checkbox.is_selected(), True)
+
+
+    def test_textbox_with_checkbox_verification(self):
+        """
+        Should automatically add or remove value in textbox, if user checks
+        or unchecks checkboxes.
+        """
+
+        ProjectVariable.objects.get_or_create(project = self.project1, name = "IMAGE_FSTYPES", value = "abcd ")
+        url = reverse('projectconf', args=(self.project1.id,));
+        self.get(url);
+
+        self.click('#change-image_fstypes-icon')
+
+        self.wait_until_visible('#new-imagefs_types')
+
+        checkboxes_selector = '.fs-checkbox-fstypes'
+
+        self.wait_until_visible(checkboxes_selector)
+        checkboxes = self.find_all(checkboxes_selector)
+
+        for checkbox in checkboxes:
+            if checkbox.get_attribute("value") == "cpio":
+               checkbox.click()
+               element = self.driver.find_element_by_id('new-imagefs_types')
+
+               self.wait_until_visible('#new-imagefs_types')
+
+               self.assertTrue(("cpio" in element.get_attribute('value'),
+                               "Imagefs not added into the textbox"))
+               checkbox.click()
+               self.assertTrue(("cpio" not in element.text),
+                               "Image still present in the textbox")
+
+    def test_set_download_dir(self):
+        """
+        Validate the allowed and disallowed types in the directory field for
+        DL_DIR
+        """
+
+        ProjectVariable.objects.get_or_create(project=self.project1,
+            name='DL_DIR')
+        url = reverse('projectconf', args=(self.project1.id,))
+        self.get(url)
+
+        # activate the input to edit download dir
+        self.click('#change-dl_dir-icon')
+        self.wait_until_visible('#new-dl_dir')
+
+        # downloads dir path doesn't start with / or ${...}
+        self.enter_text('#new-dl_dir', 'home/foo')
+        element = self.wait_until_visible('#hintError-initialChar-dl_dir')
+
+        msg = 'downloads directory path starts with invalid character but ' \
+            'treated as valid'
+        self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg)
+
+        # downloads dir path has a space
+        self.driver.find_element_by_id('new-dl_dir').clear()
+        self.enter_text('#new-dl_dir', '/foo/bar a')
+
+        element = self.wait_until_visible('#hintError-dl_dir')
+        msg = 'downloads directory path characters invalid but treated as valid'
+        self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg)
+
+        # downloads dir path starts with ${...} but has a space
+        self.driver.find_element_by_id('new-dl_dir').clear()
+        self.enter_text('#new-dl_dir', '${TOPDIR}/down foo')
+
+        element = self.wait_until_visible('#hintError-dl_dir')
+        msg = 'downloads directory path characters invalid but treated as valid'
+        self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg)
+
+        # downloads dir path starts with /
+        self.driver.find_element_by_id('new-dl_dir').clear()
+        self.enter_text('#new-dl_dir', '/bar/foo')
+
+        hidden_element = self.driver.find_element_by_id('hintError-dl_dir')
+        self.assertEqual(hidden_element.is_displayed(), False,
+            'downloads directory path valid but treated as invalid')
+
+        # downloads dir path starts with ${...}
+        self.driver.find_element_by_id('new-dl_dir').clear()
+        self.enter_text('#new-dl_dir', '${TOPDIR}/down')
+
+        hidden_element = self.driver.find_element_by_id('hintError-dl_dir')
+        self.assertEqual(hidden_element.is_displayed(), False,
+            'downloads directory path valid but treated as invalid')
+
+    def test_set_sstate_dir(self):
+        """
+        Validate the allowed and disallowed types in the directory field for
+        SSTATE_DIR
+        """
+
+        ProjectVariable.objects.get_or_create(project=self.project1,
+            name='SSTATE_DIR')
+        url = reverse('projectconf', args=(self.project1.id,))
+        self.get(url)
+
+        self.click('#change-sstate_dir-icon')
+
+        self.wait_until_visible('#new-sstate_dir')
+
+        # path doesn't start with / or ${...}
+        self.enter_text('#new-sstate_dir', 'home/foo')
+        element = self.wait_until_visible('#hintError-initialChar-sstate_dir')
+
+        msg = 'sstate directory path starts with invalid character but ' \
+            'treated as valid'
+        self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg)
+
+        # path has a space
+        self.driver.find_element_by_id('new-sstate_dir').clear()
+        self.enter_text('#new-sstate_dir', '/foo/bar a')
+
+        element = self.wait_until_visible('#hintError-sstate_dir')
+        msg = 'sstate directory path characters invalid but treated as valid'
+        self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg)
+
+        # path starts with ${...} but has a space
+        self.driver.find_element_by_id('new-sstate_dir').clear()
+        self.enter_text('#new-sstate_dir', '${TOPDIR}/down foo')
+
+        element = self.wait_until_visible('#hintError-sstate_dir')
+        msg = 'sstate directory path characters invalid but treated as valid'
+        self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg)
+
+        # path starts with /
+        self.driver.find_element_by_id('new-sstate_dir').clear()
+        self.enter_text('#new-sstate_dir', '/bar/foo')
+
+        hidden_element = self.driver.find_element_by_id('hintError-sstate_dir')
+        self.assertEqual(hidden_element.is_displayed(), False,
+            'sstate directory path valid but treated as invalid')
+
+        # paths starts with ${...}
+        self.driver.find_element_by_id('new-sstate_dir').clear()
+        self.enter_text('#new-sstate_dir', '${TOPDIR}/down')
+
+        hidden_element = self.driver.find_element_by_id('hintError-sstate_dir')
+        self.assertEqual(hidden_element.is_displayed(), False,
+            'sstate directory path valid but treated as invalid')
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_project_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_project_page.py
index 786bef1..0186463 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_project_page.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_project_page.py
@@ -55,5 +55,5 @@
         self.get(url)
 
         # check that we get a project page with the correct heading
-        project_name = self.find('#project-name').text.strip()
+        project_name = self.find('.project-name').text.strip()
         self.assertEqual(project_name, self.CLI_BUILDS_PROJECT_NAME)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_sample.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_sample.py
index 7bb8b97..20ec53c 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_sample.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_sample.py
@@ -37,5 +37,5 @@
     def test_landing_page_has_brand(self):
         url = reverse('landing')
         self.get(url)
-        brand_link = self.find('span.brand a')
+        brand_link = self.find('.toaster-navbar-brand a.brand')
         self.assertEqual(brand_link.text.strip(), 'Toaster')
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_task_page.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_task_page.py
new file mode 100644
index 0000000..690d116
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_task_page.py
@@ -0,0 +1,76 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+from tests.browser.selenium_helpers import SeleniumTestCase
+from orm.models import Project, Build, Layer, Layer_Version, Recipe, Target
+from orm.models import Task, Task_Dependency
+
+class TestTaskPage(SeleniumTestCase):
+    """ Test page which shows an individual task """
+    RECIPE_NAME = 'bar'
+    RECIPE_VERSION = '0.1'
+    TASK_NAME = 'do_da_doo_ron_ron'
+
+    def setUp(self):
+        now = timezone.now()
+
+        project = Project.objects.get_or_create_default_project()
+
+        self.build = Build.objects.create(project=project, started_on=now,
+            completed_on=now)
+
+        Target.objects.create(target='foo', build=self.build)
+
+        layer = Layer.objects.create()
+
+        layer_version = Layer_Version.objects.create(layer=layer)
+
+        recipe = Recipe.objects.create(name=TestTaskPage.RECIPE_NAME,
+            layer_version=layer_version, version=TestTaskPage.RECIPE_VERSION)
+
+        self.task = Task.objects.create(build=self.build, recipe=recipe,
+            order=1, outcome=Task.OUTCOME_COVERED, task_executed=False,
+            task_name=TestTaskPage.TASK_NAME)
+
+    def test_covered_task(self):
+        """
+        Check that covered tasks are displayed for tasks which have
+        dependencies on themselves
+        """
+
+        # the infinite loop which of bug 9952 was down to tasks which
+        # depend on themselves, so add self-dependent tasks to replicate the
+        # situation which caused the infinite loop (now fixed)
+        Task_Dependency.objects.create(task=self.task, depends_on=self.task)
+
+        url = reverse('task', args=(self.build.id, self.task.id,))
+        self.get(url)
+
+        # check that we see the task name
+        self.wait_until_visible('.page-header h1')
+
+        heading = self.find('.page-header h1')
+        expected_heading = '%s_%s %s' % (TestTaskPage.RECIPE_NAME,
+            TestTaskPage.RECIPE_VERSION, TestTaskPage.TASK_NAME)
+        self.assertEqual(heading.text, expected_heading,
+            'Heading should show recipe name, version and task')
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py
new file mode 100644
index 0000000..53ddf30
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py
@@ -0,0 +1,160 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from datetime import datetime
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+from tests.browser.selenium_helpers import SeleniumTestCase
+from orm.models import BitbakeVersion, Release, Project, Build
+
+class TestToasterTableUI(SeleniumTestCase):
+    """
+    Tests for the UI elements of ToasterTable (sorting etc.);
+    note that the tests cover generic functionality of ToasterTable which
+    manifests as UI elements in the browser, and can only be tested via
+    Selenium.
+    """
+
+    def setUp(self):
+        pass
+
+    def _get_orderby_heading(self, table):
+        """
+        Get the current order by finding the column heading in <table> with
+        the sorted class on it.
+
+        table: WebElement for a ToasterTable
+        """
+        selector = 'thead a.sorted'
+        heading = table.find_element_by_css_selector(selector)
+        return heading.get_attribute('innerHTML').strip()
+
+    def _get_datetime_from_cell(self, row, selector):
+        """
+        Return the value in the cell selected by <selector> on <row> as a
+        datetime.
+
+        row: <tr> WebElement for a row in the ToasterTable
+        selector: CSS selector to use to find the cell containing the date time
+        string
+        """
+        cell = row.find_element_by_css_selector(selector)
+        cell_text = cell.get_attribute('innerHTML').strip()
+        return datetime.strptime(cell_text, '%d/%m/%y %H:%M')
+
+    def test_revert_orderby(self):
+        """
+        Test that sort order for a table reverts to the default sort order
+        if the current sort column is hidden.
+        """
+        now = timezone.now()
+        later = now + timezone.timedelta(hours=1)
+        even_later = later + timezone.timedelta(hours=1)
+
+        bbv = BitbakeVersion.objects.create(name='test bbv', giturl='/tmp/',
+                                            branch='master', dirpath='')
+        release = Release.objects.create(name='test release',
+                                         branch_name='master',
+                                         bitbake_version=bbv)
+
+        project = Project.objects.create_project('project', release)
+
+        # set up two builds which will order differently when sorted by
+        # started_on or completed_on
+
+        # started first, finished last
+        build1 = Build.objects.create(project=project,
+                                      started_on=now,
+                                      completed_on=even_later,
+                                      outcome=Build.SUCCEEDED)
+
+        # started second, finished first
+        build2 = Build.objects.create(project=project,
+                                      started_on=later,
+                                      completed_on=later,
+                                      outcome=Build.SUCCEEDED)
+
+        url = reverse('all-builds')
+        self.get(url)
+        table = self.wait_until_visible('#allbuildstable')
+
+        # check ordering (default is by -completed_on); so build1 should be
+        # first as it finished last
+        active_heading = self._get_orderby_heading(table)
+        self.assertEqual(active_heading, 'Completed on',
+            'table should be sorted by "Completed on" by default')
+
+        row_selector = '#allbuildstable tbody tr'
+        cell_selector = 'td.completed_on'
+
+        rows = self.find_all(row_selector)
+        row1_completed_on = self._get_datetime_from_cell(rows[0], cell_selector)
+        row2_completed_on = self._get_datetime_from_cell(rows[1], cell_selector)
+        self.assertTrue(row1_completed_on > row2_completed_on,
+            'table should be sorted by -completed_on')
+
+        # turn on started_on column
+        self.click('#edit-columns-button')
+        self.click('#checkbox-started_on')
+
+        # sort by started_on column
+        links = table.find_elements_by_css_selector('th.started_on a')
+        for link in links:
+            if link.get_attribute('innerHTML').strip() == 'Started on':
+                link.click()
+                break
+
+        # wait for table data to reload in response to new sort
+        self.wait_until_visible('#allbuildstable')
+
+        # check ordering; build1 should be first
+        active_heading = self._get_orderby_heading(table)
+        self.assertEqual(active_heading, 'Started on',
+            'table should be sorted by "Started on"')
+
+        cell_selector = 'td.started_on'
+
+        rows = self.find_all(row_selector)
+        row1_started_on = self._get_datetime_from_cell(rows[0], cell_selector)
+        row2_started_on = self._get_datetime_from_cell(rows[1], cell_selector)
+        self.assertTrue(row1_started_on < row2_started_on,
+            'table should be sorted by started_on')
+
+        # turn off started_on column
+        self.click('#edit-columns-button')
+        self.click('#checkbox-started_on')
+
+        # wait for table data to reload in response to new sort
+        self.wait_until_visible('#allbuildstable')
+
+        # check ordering (should revert to completed_on); build2 should be first
+        active_heading = self._get_orderby_heading(table)
+        self.assertEqual(active_heading, 'Completed on',
+            'table should be sorted by "Completed on" after hiding sort column')
+
+        cell_selector = 'td.completed_on'
+
+        rows = self.find_all(row_selector)
+        row1_completed_on = self._get_datetime_from_cell(rows[0], cell_selector)
+        row2_completed_on = self._get_datetime_from_cell(rows[1], cell_selector)
+        self.assertTrue(row1_completed_on > row2_completed_on,
+            'table should be sorted by -completed_on')
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/README b/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/README
new file mode 100644
index 0000000..4a3b532
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/README
@@ -0,0 +1,14 @@
+# Running build tests
+
+These tests are to test the running of builds and the data produced by the builds.
+Your oe build environment must be sourced/initialised for these tests to run.
+
+The simplest way to run the tests are the following commands:
+
+$ . oe-init-build-env
+$ cd bitbake/lib/toaster/ # path my vary but this is into toaster's directory
+$ DJANGO_SETTINGS_MODULE='toastermain.settings_test' ./manage.py test tests.builds
+
+Optional environment variables:
+ - TOASTER_DIR (where toaster keeps it's artifacts)
+ - TOASTER_CONF a path to the toasterconf.json file. This will need to be set if you don't execute the tests from toaster's own directory.
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/__init__.py
similarity index 100%
copy from import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py
copy to import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/__init__.py
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/buildtest.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/buildtest.py
new file mode 100644
index 0000000..fc7bd5b
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/buildtest.py
@@ -0,0 +1,134 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import os
+import sys
+import time
+import unittest
+
+from orm.models import Project, Release, ProjectTarget, Build
+from bldcontrol.models import BuildEnvironment
+
+from bldcontrol.management.commands.loadconf import Command\
+    as LoadConfigCommand
+
+from bldcontrol.management.commands.runbuilds import Command\
+    as RunBuildsCommand
+
+import subprocess
+
+# We use unittest.TestCase instead of django.test.TestCase because we don't
+# want to wrap everything in a database transaction as an external process
+# (bitbake needs access to the database)
+
+
+class BuildTest(unittest.TestCase):
+
+    PROJECT_NAME = "Testbuild"
+
+    def build(self, target):
+        # So that the buildinfo helper uses the test database'
+        self.assertEqual(
+            os.environ.get('DJANGO_SETTINGS_MODULE', ''),
+            'toastermain.settings-test',
+            "Please initialise django with the tests settings:  "
+            "DJANGO_SETTINGS_MODULE='toastermain.settings-test'")
+
+        if self.target_already_built(target):
+            return
+
+        # Take a guess at the location of the toasterconf
+        poky_toaster_conf = '../../../meta-poky/conf/toasterconf.json'
+        oe_toaster_conf = '../../../meta/conf/toasterconf.json'
+        env_toaster_conf = os.environ.get('TOASTER_CONF')
+
+        config_file = None
+        if env_toaster_conf:
+            config_file = env_toaster_conf
+        else:
+            if os.path.exists(poky_toaster_conf):
+                config_file = poky_toaster_conf
+            elif os.path.exists(oe_toaster_conf):
+                config_file = oe_toaster_conf
+
+        self.assertIsNotNone(config_file,
+                             "Default locations for toasterconf not found"
+                             "please set $TOASTER_CONF manually")
+
+        # Setup the release information and default layers
+        print("\nImporting file: %s" % config_file)
+        os.environ['TOASTER_CONF'] = config_file
+        LoadConfigCommand()._import_layer_config(config_file)
+
+        os.environ['TOASTER_DIR'] = \
+            os.path.abspath(os.environ['BUILDDIR'] + "/../")
+
+        os.environ['BBBASEDIR'] = \
+            subprocess.check_output('which bitbake', shell=True)
+
+        BuildEnvironment.objects.get_or_create(
+            betype=BuildEnvironment.TYPE_LOCAL,
+            sourcedir=os.environ['TOASTER_DIR'],
+            builddir=os.environ['BUILDDIR']
+        )
+
+        release = Release.objects.get(name='local')
+
+        # Create a project for this build to run in
+        try:
+            project = Project.objects.get(name=BuildTest.PROJECT_NAME)
+        except Project.DoesNotExist:
+            project = Project.objects.create_project(
+                name=BuildTest.PROJECT_NAME,
+                release=release
+            )
+
+        ProjectTarget.objects.create(project=project,
+                                     target=target,
+                                     task="")
+        build_request = project.schedule_build()
+
+        # run runbuilds command to dispatch the build
+        # e.g. manage.py runubilds
+        RunBuildsCommand().runbuild()
+
+        build_pk = build_request.build.pk
+        while Build.objects.get(pk=build_pk).outcome == Build.IN_PROGRESS:
+            sys.stdout.write("\rBuilding %s %d%%" %
+                             (target,
+                              build_request.build.completeper()))
+            sys.stdout.flush()
+            time.sleep(1)
+
+        self.assertNotEqual(build_request.build.outcome,
+                            Build.SUCCEEDED, "Build did not SUCCEEDED")
+        print("\nBuild finished")
+        return build_request.build
+
+    def target_already_built(self, target):
+        """ If the target is already built no need to build it again"""
+        for build in Build.objects.filter(
+                project__name=BuildTest.PROJECT_NAME):
+            targets = build.target_set.values_list('target', flat=True)
+            if target in targets:
+                return True
+
+        return False
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/test_core_image_min.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/test_core_image_min.py
new file mode 100644
index 0000000..dec0bfa
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/builds/test_core_image_min.py
@@ -0,0 +1,396 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# Tests were part of openembedded-core oe selftest Authored by: Lucian Musat
+# Ionut Chisanovici, Paul Eggleton and Cristian Iorga
+
+import os
+
+from django.db.models import Q
+
+from orm.models import Target_Image_File, Target_Installed_Package, Task
+from orm.models import Package_Dependency, Recipe_Dependency, Build
+from orm.models import Task_Dependency, Package, Target, Recipe
+from orm.models import CustomImagePackage
+
+from buildtest import BuildTest
+
+
+class BuildCoreImageMinimal(BuildTest):
+    """Build core-image-minimal and test the results"""
+
+    def setUp(self):
+        self.build("core-image-minimal")
+
+    # Check if build name is unique - tc_id=795
+    def test_Build_Unique_Name(self):
+        all_builds = Build.objects.all().count()
+        distinct_builds = Build.objects.values('id').distinct().count()
+        self.assertEqual(distinct_builds,
+                         all_builds,
+                         msg='Build name is not unique')
+
+    # Check if build cooker log path is unique - tc_id=819
+    def test_Build_Unique_Cooker_Log_Path(self):
+        distinct_path = Build.objects.values(
+            'cooker_log_path').distinct().count()
+        total_builds = Build.objects.values('id').count()
+        self.assertEqual(distinct_path,
+                         total_builds,
+                         msg='Build cooker log path is not unique')
+
+    # Check if task order is unique for one build - tc=824
+    def test_Task_Unique_Order(self):
+        builds = Build.objects.values('id')
+        cnt_err = []
+
+        for build in builds:
+            total_task_order = Task.objects.filter(
+                build=build['id']).values('order').count()
+            distinct_task_order = Task.objects.filter(
+                build=build['id']).values('order').distinct().count()
+
+            if (total_task_order != distinct_task_order):
+                cnt_err.append(build['id'])
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for build id: %s' % cnt_err)
+
+    # Check task order sequence for one build - tc=825
+    def test_Task_Order_Sequence(self):
+        builds = builds = Build.objects.values('id')
+        cnt_err = []
+        for build in builds:
+            tasks = Task.objects.filter(
+                Q(build=build['id']),
+                ~Q(order=None),
+                ~Q(task_name__contains='_setscene')
+            ).values('id', 'order').order_by("order")
+
+            cnt_tasks = 0
+            for task in tasks:
+                cnt_tasks += 1
+                if (task['order'] != cnt_tasks):
+                    cnt_err.append(task['id'])
+        self.assertEqual(
+            len(cnt_err), 0, msg='Errors for task id: %s' % cnt_err)
+
+    # Check if disk_io matches the difference between EndTimeIO and
+    # StartTimeIO in build stats - tc=828
+    # def test_Task_Disk_IO_TC828(self):
+
+    # Check if outcome = 2 (SSTATE) then sstate_result must be 3 (RESTORED) -
+    # tc=832
+    def test_Task_If_Outcome_2_Sstate_Result_Must_Be_3(self):
+        tasks = Task.objects.filter(outcome=2).values('id', 'sstate_result')
+        cnt_err = []
+        for task in tasks:
+            if (task['sstate_result'] != 3):
+                cnt_err.append(task['id'])
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task id: %s' % cnt_err)
+
+    # Check if outcome = 1 (COVERED) or 3 (EXISTING) then sstate_result must
+    # be 0 (SSTATE_NA) - tc=833
+    def test_Task_If_Outcome_1_3_Sstate_Result_Must_Be_0(self):
+        tasks = Task.objects.filter(
+            outcome__in=(Task.OUTCOME_COVERED,
+                         Task.OUTCOME_PREBUILT)).values('id',
+                                                        'task_name',
+                                                        'sstate_result')
+        cnt_err = []
+
+        for task in tasks:
+            if (task['sstate_result'] != Task.SSTATE_NA and
+                    task['sstate_result'] != Task.SSTATE_MISS):
+                cnt_err.append({'id': task['id'],
+                                'name': task['task_name'],
+                                'sstate_result': task['sstate_result'],
+                               })
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task id: %s' % cnt_err)
+
+    # Check if outcome is 0 (SUCCESS) or 4 (FAILED) then sstate_result must be
+    # 0 (NA), 1 (MISS) or 2 (FAILED) - tc=834
+    def test_Task_If_Outcome_0_4_Sstate_Result_Must_Be_0_1_2(self):
+        tasks = Task.objects.filter(
+            outcome__in=(0, 4)).values('id', 'sstate_result')
+        cnt_err = []
+
+        for task in tasks:
+            if (task['sstate_result'] not in [0, 1, 2]):
+                cnt_err.append(task['id'])
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task id: %s' % cnt_err)
+
+    # Check if task_executed = TRUE (1), script_type must be 0 (CODING_NA), 2
+    # (CODING_PYTHON), 3 (CODING_SHELL) - tc=891
+    def test_Task_If_Task_Executed_True_Script_Type_0_2_3(self):
+        tasks = Task.objects.filter(
+            task_executed=1).values('id', 'script_type')
+        cnt_err = []
+
+        for task in tasks:
+            if (task['script_type'] not in [0, 2, 3]):
+                cnt_err.append(task['id'])
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task id: %s' % cnt_err)
+
+    # Check if task_executed = TRUE (1), outcome must be 0 (SUCCESS) or 4
+    # (FAILED) - tc=836
+    def test_Task_If_Task_Executed_True_Outcome_0_4(self):
+        tasks = Task.objects.filter(task_executed=1).values('id', 'outcome')
+        cnt_err = []
+
+        for task in tasks:
+            if (task['outcome'] not in [0, 4]):
+                cnt_err.append(task['id'])
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task id: %s' % cnt_err)
+
+    # Check if task_executed = FALSE (0), script_type must be 0 - tc=890
+    def test_Task_If_Task_Executed_False_Script_Type_0(self):
+        tasks = Task.objects.filter(
+            task_executed=0).values('id', 'script_type')
+        cnt_err = []
+
+        for task in tasks:
+            if (task['script_type'] != 0):
+                cnt_err.append(task['id'])
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task id: %s' % cnt_err)
+
+    # Check if task_executed = FALSE (0) and build outcome = SUCCEEDED (0),
+    # task outcome must be 1 (COVERED), 2 (CACHED), 3 (PREBUILT), 5 (EMPTY) -
+    # tc=837
+    def test_Task_If_Task_Executed_False_Outcome_1_2_3_5(self):
+        builds = Build.objects.filter(outcome=0).values('id')
+        cnt_err = []
+        for build in builds:
+            tasks = Task.objects.filter(
+                build=build['id'], task_executed=0).values('id', 'outcome')
+            for task in tasks:
+                if (task['outcome'] not in [1, 2, 3, 5]):
+                    cnt_err.append(task['id'])
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task id: %s' % cnt_err)
+
+    # Key verification - tc=888
+    def test_Target_Installed_Package(self):
+        rows = Target_Installed_Package.objects.values('id',
+                                                       'target_id',
+                                                       'package_id')
+        cnt_err = []
+
+        for row in rows:
+            target = Target.objects.filter(id=row['target_id']).values('id')
+            package = Package.objects.filter(id=row['package_id']).values('id')
+            if (not target or not package):
+                cnt_err.append(row['id'])
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for target installed package id: %s' %
+                         cnt_err)
+
+    # Key verification - tc=889
+    def test_Task_Dependency(self):
+        rows = Task_Dependency.objects.values('id',
+                                              'task_id',
+                                              'depends_on_id')
+        cnt_err = []
+        for row in rows:
+            task_id = Task.objects.filter(id=row['task_id']).values('id')
+            depends_on_id = Task.objects.filter(
+                id=row['depends_on_id']).values('id')
+            if (not task_id or not depends_on_id):
+                cnt_err.append(row['id'])
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg='Errors for task dependency id: %s' % cnt_err)
+
+    # Check if build target file_name is populated only if is_image=true AND
+    # orm_build.outcome=0 then if the file exists and its size matches
+    # the file_size value. Need to add the tc in the test run
+    def test_Target_File_Name_Populated(self):
+        builds = Build.objects.filter(outcome=0).values('id')
+        for build in builds:
+            targets = Target.objects.filter(
+                build_id=build['id'], is_image=1).values('id')
+            for target in targets:
+                target_files = Target_Image_File.objects.filter(
+                    target_id=target['id']).values('id',
+                                                   'file_name',
+                                                   'file_size')
+                cnt_err = []
+                for file_info in target_files:
+                    target_id = file_info['id']
+                    target_file_name = file_info['file_name']
+                    target_file_size = file_info['file_size']
+                    if (not target_file_name or not target_file_size):
+                        cnt_err.append(target_id)
+                    else:
+                        if (not os.path.exists(target_file_name)):
+                            cnt_err.append(target_id)
+                        else:
+                            if (os.path.getsize(target_file_name) !=
+                                    target_file_size):
+                                cnt_err.append(target_id)
+            self.assertEqual(len(cnt_err), 0,
+                             msg='Errors for target image file id: %s' %
+                             cnt_err)
+
+    # Key verification - tc=884
+    def test_Package_Dependency(self):
+        cnt_err = []
+        deps = Package_Dependency.objects.values(
+            'id', 'package_id', 'depends_on_id')
+        for dep in deps:
+            if (dep['package_id'] == dep['depends_on_id']):
+                cnt_err.append(dep['id'])
+        self.assertEqual(len(cnt_err), 0,
+                         msg='Errors for package dependency id: %s' % cnt_err)
+
+    # Recipe key verification, recipe name does not depends on a recipe having
+    # the same name - tc=883
+    def test_Recipe_Dependency(self):
+        deps = Recipe_Dependency.objects.values(
+            'id', 'recipe_id', 'depends_on_id')
+        cnt_err = []
+        for dep in deps:
+            if (not dep['recipe_id'] or not dep['depends_on_id']):
+                cnt_err.append(dep['id'])
+            else:
+                name = Recipe.objects.filter(
+                    id=dep['recipe_id']).values('name')
+                dep_name = Recipe.objects.filter(
+                    id=dep['depends_on_id']).values('name')
+                if (name == dep_name):
+                    cnt_err.append(dep['id'])
+        self.assertEqual(len(cnt_err), 0,
+                         msg='Errors for recipe dependency id: %s' % cnt_err)
+
+    # Check if package name does not start with a number (0-9) - tc=846
+    def test_Package_Name_For_Number(self):
+        packages = Package.objects.filter(~Q(size=-1)).values('id', 'name')
+        cnt_err = []
+        for package in packages:
+            if (package['name'][0].isdigit() is True):
+                cnt_err.append(package['id'])
+        self.assertEqual(
+            len(cnt_err), 0, msg='Errors for package id: %s' % cnt_err)
+
+    # Check if package version starts with a number (0-9) - tc=847
+    def test_Package_Version_Starts_With_Number(self):
+        packages = Package.objects.filter(
+            ~Q(size=-1)).values('id', 'version')
+        cnt_err = []
+        for package in packages:
+            if (package['version'][0].isdigit() is False):
+                cnt_err.append(package['id'])
+        self.assertEqual(
+            len(cnt_err), 0, msg='Errors for package id: %s' % cnt_err)
+
+    # Check if package revision starts with 'r' - tc=848
+    def test_Package_Revision_Starts_With_r(self):
+        packages = Package.objects.filter(
+            ~Q(size=-1)).values('id', 'revision')
+        cnt_err = []
+        for package in packages:
+            if (package['revision'][0].startswith("r") is False):
+                cnt_err.append(package['id'])
+        self.assertEqual(
+            len(cnt_err), 0, msg='Errors for package id: %s' % cnt_err)
+
+    # Check the validity of the package build_id
+    # TC must be added in test run
+    def test_Package_Build_Id(self):
+        packages = Package.objects.filter(
+            ~Q(size=-1)).values('id', 'build_id')
+        cnt_err = []
+        for package in packages:
+            build_id = Build.objects.filter(
+                id=package['build_id']).values('id')
+            if (not build_id):
+                # They have no build_id but if they are
+                # CustomImagePackage that's expected
+                try:
+                    CustomImagePackage.objects.get(pk=package['id'])
+                except CustomImagePackage.DoesNotExist:
+                    cnt_err.append(package['id'])
+
+        self.assertEqual(len(cnt_err),
+                         0,
+                         msg="Errors for package id: %s they have no build"
+                         "associated with them" % cnt_err)
+
+    # Check the validity of package recipe_id
+    # TC must be added in test run
+    def test_Package_Recipe_Id(self):
+        packages = Package.objects.filter(
+            ~Q(size=-1)).values('id', 'recipe_id')
+        cnt_err = []
+        for package in packages:
+            recipe_id = Recipe.objects.filter(
+                id=package['recipe_id']).values('id')
+            if (not recipe_id):
+                cnt_err.append(package['id'])
+        self.assertEqual(
+            len(cnt_err), 0, msg='Errors for package id: %s' % cnt_err)
+
+    # Check if package installed_size field is not null
+    # TC must be aded in test run
+    def test_Package_Installed_Size_Not_NULL(self):
+        packages = Package.objects.filter(
+            installed_size__isnull=True).values('id')
+        cnt_err = []
+        for package in packages:
+            cnt_err.append(package['id'])
+        self.assertEqual(
+            len(cnt_err), 0, msg='Errors for package id: %s' % cnt_err)
+
+    def test_custom_packages_generated(self):
+        """Test if there is a corresponding generated CustomImagePackage"""
+        """ for each of the packages generated"""
+        missing_packages = []
+
+        for package in Package.objects.all():
+            try:
+                CustomImagePackage.objects.get(name=package.name)
+            except CustomImagePackage.DoesNotExist:
+                missing_packages.append(package.name)
+
+        self.assertEqual(len(missing_packages), 0,
+                         "Some package were created from the build but their"
+                         " corresponding CustomImagePackage was not found")
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/db/__init__.py
similarity index 100%
rename from import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py
rename to import-layers/yocto-poky/bitbake/lib/toaster/tests/db/__init__.py
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/db/test_db.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/db/test_db.py
new file mode 100644
index 0000000..a0f5f6e
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/tests/db/test_db.py
@@ -0,0 +1,55 @@
+# The MIT License (MIT)
+#
+# Copyright (c) 2016 Damien Lespiau
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import sys
+
+try:
+    from StringIO import StringIO
+except ImportError:
+    from io import StringIO
+
+from contextlib import contextmanager
+
+from django.core import management
+from django.test import TestCase
+
+
+@contextmanager
+def capture(command, *args, **kwargs):
+    out, sys.stdout = sys.stdout, StringIO()
+    command(*args, **kwargs)
+    sys.stdout.seek(0)
+    yield sys.stdout.read()
+    sys.stdout = out
+
+
+def makemigrations():
+    management.call_command('makemigrations')
+
+
+class MigrationTest(TestCase):
+
+    def testPendingMigration(self):
+        """Make sure there's no pending migration."""
+
+        with capture(makemigrations) as output:
+            self.assertEqual(output, "No changes detected\n")
diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/functional/README
similarity index 100%
copy from import-layers/yocto-poky/bitbake/lib/bb/ui/crumbs/hig/__init__.py
copy to import-layers/yocto-poky/bitbake/lib/toaster/tests/functional/README
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/api.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/api.py
index 42901f7..ae1f150 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/api.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/api.py
@@ -16,14 +16,32 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
+# Please run flake8 on this file before sending patches
 
-# Temporary home for the UI's misc API
+import re
+import logging
+from collections import Counter
 
-from orm.models import Project, ProjectTarget, Build
+from orm.models import Project, ProjectTarget, Build, Layer_Version
+from orm.models import LayerVersionDependency, LayerSource, ProjectLayer
+from orm.models import Recipe, CustomImageRecipe, CustomImagePackage
+from orm.models import Layer, Target, Package, Package_Dependency
+from orm.models import ProjectVariable
 from bldcontrol.models import BuildRequest
 from bldcontrol import bbcontroller
+
 from django.http import HttpResponse, JsonResponse
 from django.views.generic import View
+from django.core.urlresolvers import reverse
+from django.db.models import Q, F
+from django.db import Error
+from toastergui.templatetags.projecttags import filtered_filesizeformat
+
+logger = logging.getLogger("toaster")
+
+
+def error_response(error):
+    return JsonResponse({"error": error})
 
 
 class XhrBuildRequest(View):
@@ -31,6 +49,28 @@
     def get(self, request, *args, **kwargs):
         return HttpResponse()
 
+    @staticmethod
+    def cancel_build(br):
+        """Cancel a build request"""
+        try:
+            bbctrl = bbcontroller.BitbakeController(br.environment)
+            bbctrl.forceShutDown()
+        except:
+            # We catch a bunch of exceptions here because
+            # this is where the server has not had time to start up
+            # and the build request or build is in transit between
+            # processes.
+            # We can safely just set the build as cancelled
+            # already as it never got started
+            build = br.build
+            build.outcome = Build.CANCELLED
+            build.save()
+
+        # We now hand over to the buildinfohelper to update the
+        # build state once we've finished cancelling
+        br.state = BuildRequest.REQ_CANCELLING
+        br.save()
+
     def post(self, request, *args, **kwargs):
         """
           Build control
@@ -56,55 +96,782 @@
             for i in request.POST['buildCancel'].strip().split(" "):
                 try:
                     br = BuildRequest.objects.get(project=project, pk=i)
-
-                    try:
-                        bbctrl = bbcontroller.BitbakeController(br.environment)
-                        bbctrl.forceShutDown()
-                    except:
-                        # We catch a bunch of exceptions here because
-                        # this is where the server has not had time to start up
-                        # and the build request or build is in transit between
-                        # processes.
-                        # We can safely just set the build as cancelled
-                        # already as it never got started
-                        build = br.build
-                        build.outcome = Build.CANCELLED
-                        build.save()
-
-                    # We now hand over to the buildinfohelper to update the
-                    # build state once we've finished cancelling
-                    br.state = BuildRequest.REQ_CANCELLING
-                    br.save()
-
+                    self.cancel_build(br)
                 except BuildRequest.DoesNotExist:
-                    return JsonResponse({'error':'No such build id %s' % i})
+                    return error_response('No such build request id %s' % i)
 
-            return JsonResponse({'error': 'ok'})
+            return error_response('ok')
 
         if 'buildDelete' in request.POST:
             for i in request.POST['buildDelete'].strip().split(" "):
                 try:
-                    BuildRequest.objects.select_for_update().get(project = project, pk = i, state__lte = BuildRequest.REQ_DELETED).delete()
+                    BuildRequest.objects.select_for_update().get(
+                        project=project,
+                        pk=i,
+                        state__lte=BuildRequest.REQ_DELETED).delete()
+
                 except BuildRequest.DoesNotExist:
                     pass
-            return JsonResponse({'error': 'ok' })
+            return error_response("ok")
 
         if 'targets' in request.POST:
-            ProjectTarget.objects.filter(project = project).delete()
+            ProjectTarget.objects.filter(project=project).delete()
             s = str(request.POST['targets'])
-            for t in s.translate(None, ";%|\"").split(" "):
+            for t in re.sub(r'[;%|"]', '', s).split(" "):
                 if ":" in t:
                     target, task = t.split(":")
                 else:
                     target = t
                     task = ""
-                ProjectTarget.objects.create(project = project,
-                                             target = target,
-                                             task = task)
+                ProjectTarget.objects.create(project=project,
+                                             target=target,
+                                             task=task)
             project.schedule_build()
 
-            return JsonResponse({'error': 'ok' })
+            return error_response('ok')
 
         response = HttpResponse()
         response.status_code = 500
         return response
+
+
+class XhrLayer(View):
+    """ Get and Update Layer information """
+
+    def post(self, request, *args, **kwargs):
+        """
+          Update a layer
+
+          Entry point: /xhr_layer/<layerversion_id>
+          Method: POST
+
+          Args:
+              vcs_url, dirpath, commit, up_branch, summary, description,
+              local_source_dir
+
+              add_dep = append a layerversion_id as a dependency
+              rm_dep = remove a layerversion_id as a depedency
+          Returns:
+              {"error": "ok"}
+            or
+              {"error": <error message>}
+        """
+
+        try:
+            # We currently only allow Imported layers to be edited
+            layer_version = Layer_Version.objects.get(
+                id=kwargs['layerversion_id'],
+                project=kwargs['pid'],
+                layer_source=LayerSource.TYPE_IMPORTED)
+
+        except Layer_Version.DoesNotExist:
+            return error_response("Cannot find imported layer to update")
+
+        if "vcs_url" in request.POST:
+            layer_version.layer.vcs_url = request.POST["vcs_url"]
+        if "dirpath" in request.POST:
+            layer_version.dirpath = request.POST["dirpath"]
+        if "commit" in request.POST:
+            layer_version.commit = request.POST["commit"]
+            layer_version.branch = request.POST["commit"]
+        if "summary" in request.POST:
+            layer_version.layer.summary = request.POST["summary"]
+        if "description" in request.POST:
+            layer_version.layer.description = request.POST["description"]
+        if "local_source_dir" in request.POST:
+            layer_version.layer.local_source_dir = \
+                request.POST["local_source_dir"]
+
+        if "add_dep" in request.POST:
+            lvd = LayerVersionDependency(
+                layer_version=layer_version,
+                depends_on_id=request.POST["add_dep"])
+            lvd.save()
+
+        if "rm_dep" in request.POST:
+            rm_dep = LayerVersionDependency.objects.get(
+                layer_version=layer_version,
+                depends_on_id=request.POST["rm_dep"])
+            rm_dep.delete()
+
+        try:
+            layer_version.layer.save()
+            layer_version.save()
+        except Exception as e:
+            return error_response("Could not update layer version entry: %s"
+                                  % e)
+
+        return JsonResponse({"error": "ok"})
+
+    def delete(self, request, *args, **kwargs):
+        try:
+            # We currently only allow Imported layers to be deleted
+            layer_version = Layer_Version.objects.get(
+                id=kwargs['layerversion_id'],
+                project=kwargs['pid'],
+                layer_source=LayerSource.TYPE_IMPORTED)
+        except Layer_Version.DoesNotExist:
+            return error_response("Cannot find imported layer to delete")
+
+        try:
+            ProjectLayer.objects.get(project=kwargs['pid'],
+                                     layercommit=layer_version).delete()
+        except ProjectLayer.DoesNotExist:
+            pass
+
+        layer_version.layer.delete()
+        layer_version.delete()
+
+        return JsonResponse({
+            "error": "ok",
+            "gotoUrl": reverse('projectlayers', args=(kwargs['pid'],))
+        })
+
+
+class XhrCustomRecipe(View):
+    """ Create a custom image recipe """
+
+    def post(self, request, *args, **kwargs):
+        """
+        Custom image recipe REST API
+
+        Entry point: /xhr_customrecipe/
+        Method: POST
+
+        Args:
+            name: name of custom recipe to create
+            project: target project id of orm.models.Project
+            base: base recipe id of orm.models.Recipe
+
+        Returns:
+            {"error": "ok",
+             "url": <url of the created recipe>}
+            or
+            {"error": <error message>}
+        """
+        # check if request has all required parameters
+        for param in ('name', 'project', 'base'):
+            if param not in request.POST:
+                return error_response("Missing parameter '%s'" % param)
+
+        # get project and baserecipe objects
+        params = {}
+        for name, model in [("project", Project),
+                            ("base", Recipe)]:
+            value = request.POST[name]
+            try:
+                params[name] = model.objects.get(id=value)
+            except model.DoesNotExist:
+                return error_response("Invalid %s id %s" % (name, value))
+
+        # create custom recipe
+        try:
+
+            # Only allowed chars in name are a-z, 0-9 and -
+            if re.search(r'[^a-z|0-9|-]', request.POST["name"]):
+                return error_response("invalid-name")
+
+            custom_images = CustomImageRecipe.objects.all()
+
+            # Are there any recipes with this name already in our project?
+            existing_image_recipes_in_project = custom_images.filter(
+                name=request.POST["name"], project=params["project"])
+
+            if existing_image_recipes_in_project.count() > 0:
+                return error_response("image-already-exists")
+
+            # Are there any recipes with this name which aren't custom
+            # image recipes?
+            custom_image_ids = custom_images.values_list('id', flat=True)
+            existing_non_image_recipes = Recipe.objects.filter(
+                Q(name=request.POST["name"]) & ~Q(pk__in=custom_image_ids)
+            )
+
+            if existing_non_image_recipes.count() > 0:
+                return error_response("recipe-already-exists")
+
+            # create layer 'Custom layer' and verion if needed
+            layer = Layer.objects.get_or_create(
+                name=CustomImageRecipe.LAYER_NAME,
+                summary="Layer for custom recipes",
+                vcs_url="file:///toaster_created_layer")[0]
+
+            # Check if we have a layer version already
+            # We don't use get_or_create here because the dirpath will change
+            # and is a required field
+            lver = Layer_Version.objects.filter(Q(project=params['project']) &
+                                                Q(layer=layer) &
+                                                Q(build=None)).last()
+            if lver is None:
+                lver, created = Layer_Version.objects.get_or_create(
+                    project=params['project'],
+                    layer=layer,
+                    dirpath="toaster_created_layer")
+
+            # Add a dependency on our layer to the base recipe's layer
+            LayerVersionDependency.objects.get_or_create(
+                layer_version=lver,
+                depends_on=params["base"].layer_version)
+
+            # Add it to our current project if needed
+            ProjectLayer.objects.get_or_create(project=params['project'],
+                                               layercommit=lver,
+                                               optional=False)
+
+            # Create the actual recipe
+            recipe, created = CustomImageRecipe.objects.get_or_create(
+                name=request.POST["name"],
+                base_recipe=params["base"],
+                project=params["project"],
+                layer_version=lver,
+                is_image=True)
+
+            # If we created the object then setup these fields. They may get
+            # overwritten later on and cause the get_or_create to create a
+            # duplicate if they've changed.
+            if created:
+                recipe.file_path = request.POST["name"]
+                recipe.license = "MIT"
+                recipe.version = "0.1"
+                recipe.save()
+
+        except Error as err:
+            return error_response("Can't create custom recipe: %s" % err)
+
+        # Find the package list from the last build of this recipe/target
+        target = Target.objects.filter(Q(build__outcome=Build.SUCCEEDED) &
+                                       Q(build__project=params['project']) &
+                                       (Q(target=params['base'].name) |
+                                        Q(target=recipe.name))).last()
+        if target:
+            # Copy in every package
+            # We don't want these packages to be linked to anything because
+            # that underlying data may change e.g. delete a build
+            for tpackage in target.target_installed_package_set.all():
+                try:
+                    built_package = tpackage.package
+                    # The package had no recipe information so is a ghost
+                    # package skip it
+                    if built_package.recipe is None:
+                        continue
+
+                    config_package = CustomImagePackage.objects.get(
+                        name=built_package.name)
+
+                    recipe.includes_set.add(config_package)
+                except Exception as e:
+                    logger.warning("Error adding package %s %s" %
+                                   (tpackage.package.name, e))
+                    pass
+
+        return JsonResponse(
+            {"error": "ok",
+             "packages": recipe.get_all_packages().count(),
+             "url": reverse('customrecipe', args=(params['project'].pk,
+                                                  recipe.id))})
+
+
+class XhrCustomRecipeId(View):
+    """
+    Set of ReST API processors working with recipe id.
+
+    Entry point: /xhr_customrecipe/<recipe_id>
+
+    Methods:
+        GET - Get details of custom image recipe
+        DELETE - Delete custom image recipe
+
+    Returns:
+        GET:
+        {"error": "ok",
+        "info": dictionary of field name -> value pairs
+        of the CustomImageRecipe model}
+        DELETE:
+        {"error": "ok"}
+          or
+        {"error": <error message>}
+    """
+    @staticmethod
+    def _get_ci_recipe(recipe_id):
+        """ Get Custom Image recipe or return an error response"""
+        try:
+            custom_recipe = \
+                CustomImageRecipe.objects.get(pk=recipe_id)
+            return custom_recipe, None
+
+        except CustomImageRecipe.DoesNotExist:
+            return None, error_response("Custom recipe with id=%s "
+                                        "not found" % recipe_id)
+
+    def get(self, request, *args, **kwargs):
+        custom_recipe, error = self._get_ci_recipe(kwargs['recipe_id'])
+        if error:
+            return error
+
+        if request.method == 'GET':
+            info = {"id": custom_recipe.id,
+                    "name": custom_recipe.name,
+                    "base_recipe_id": custom_recipe.base_recipe.id,
+                    "project_id": custom_recipe.project.id}
+
+            return JsonResponse({"error": "ok", "info": info})
+
+    def delete(self, request, *args, **kwargs):
+        custom_recipe, error = self._get_ci_recipe(kwargs['recipe_id'])
+        if error:
+            return error
+
+        project = custom_recipe.project
+
+        custom_recipe.delete()
+        return JsonResponse({"error": "ok",
+                             "gotoUrl": reverse("projectcustomimages",
+                                                args=(project.pk,))})
+
+
+class XhrCustomRecipePackages(View):
+    """
+    ReST API to add/remove packages to/from custom recipe.
+
+    Entry point: /xhr_customrecipe/<recipe_id>/packages/<package_id>
+    Methods:
+         PUT - Add package to the recipe
+         DELETE - Delete package from the recipe
+         GET - Get package information
+
+     Returns:
+         {"error": "ok"}
+          or
+          {"error": <error message>}
+    """
+    @staticmethod
+    def _get_package(package_id):
+        try:
+            package = CustomImagePackage.objects.get(pk=package_id)
+            return package, None
+        except Package.DoesNotExist:
+            return None, error_response("Package with id=%s "
+                                        "not found" % package_id)
+
+    def _traverse_dependents(self, next_package_id,
+                             rev_deps, all_current_packages, tree_level=0):
+        """
+        Recurse through reverse dependency tree for next_package_id.
+        Limit the reverse dependency search to packages not already scanned,
+        that is, not already in rev_deps.
+        Limit the scan to a depth (tree_level) not exceeding the count of
+        all packages in the custom image, and if that depth is exceeded
+        return False, pop out of the recursion, and write a warning
+        to the log, but this is unlikely, suggesting a dependency loop
+        not caught by bitbake.
+        On return, the input/output arg rev_deps is appended with queryset
+        dictionary elements, annotated for use in the customimage template.
+        The list has unsorted, but unique elements.
+        """
+        max_dependency_tree_depth = all_current_packages.count()
+        if tree_level >= max_dependency_tree_depth:
+            logger.warning(
+                "The number of reverse dependencies "
+                "for this package exceeds " + max_dependency_tree_depth +
+                " and the remaining reverse dependencies will not be removed")
+            return True
+
+        package = CustomImagePackage.objects.get(id=next_package_id)
+        dependents = \
+            package.package_dependencies_target.annotate(
+                name=F('package__name'),
+                pk=F('package__pk'),
+                size=F('package__size'),
+            ).values("name", "pk", "size").exclude(
+                ~Q(pk__in=all_current_packages)
+            )
+
+        for pkg in dependents:
+            if pkg in rev_deps:
+                # already seen, skip dependent search
+                continue
+
+            rev_deps.append(pkg)
+            if (self._traverse_dependents(pkg["pk"], rev_deps,
+                                          all_current_packages,
+                                          tree_level+1)):
+                return True
+
+        return False
+
+    def _get_all_dependents(self, package_id, all_current_packages):
+        """
+        Returns sorted list of recursive reverse dependencies for package_id,
+        as a list of dictionary items, by recursing through dependency
+        relationships.
+        """
+        rev_deps = []
+        self._traverse_dependents(package_id, rev_deps, all_current_packages)
+        rev_deps = sorted(rev_deps, key=lambda x: x["name"])
+        return rev_deps
+
+    def get(self, request, *args, **kwargs):
+        recipe, error = XhrCustomRecipeId._get_ci_recipe(
+            kwargs['recipe_id'])
+        if error:
+            return error
+
+        # If no package_id then list all the current packages
+        if not kwargs['package_id']:
+            total_size = 0
+            packages = recipe.get_all_packages().values("id",
+                                                        "name",
+                                                        "version",
+                                                        "size")
+            for package in packages:
+                package['size_formatted'] = \
+                    filtered_filesizeformat(package['size'])
+                total_size += package['size']
+
+            return JsonResponse({"error": "ok",
+                                 "packages": list(packages),
+                                 "total": len(packages),
+                                 "total_size": total_size,
+                                 "total_size_formatted":
+                                 filtered_filesizeformat(total_size)})
+        else:
+            package, error = XhrCustomRecipePackages._get_package(
+                kwargs['package_id'])
+            if error:
+                return error
+
+            all_current_packages = recipe.get_all_packages()
+
+            # Dependencies for package which aren't satisfied by the
+            # current packages in the custom image recipe
+            deps = package.package_dependencies_source.for_target_or_none(
+                recipe.name)['packages'].annotate(
+                name=F('depends_on__name'),
+                pk=F('depends_on__pk'),
+                size=F('depends_on__size'),
+                ).values("name", "pk", "size").filter(
+                # There are two depends types we don't know why
+                (Q(dep_type=Package_Dependency.TYPE_TRDEPENDS) |
+                 Q(dep_type=Package_Dependency.TYPE_RDEPENDS)) &
+                ~Q(pk__in=all_current_packages)
+                )
+
+            # Reverse dependencies which are needed by packages that are
+            # in the image. Recursive search providing all dependents,
+            # not just immediate dependents.
+            reverse_deps = self._get_all_dependents(kwargs['package_id'],
+                                                    all_current_packages)
+            total_size_deps = 0
+            total_size_reverse_deps = 0
+
+            for dep in deps:
+                dep['size_formatted'] = \
+                    filtered_filesizeformat(dep['size'])
+                total_size_deps += dep['size']
+
+            for dep in reverse_deps:
+                dep['size_formatted'] = \
+                    filtered_filesizeformat(dep['size'])
+                total_size_reverse_deps += dep['size']
+
+            return JsonResponse(
+                {"error": "ok",
+                 "id": package.pk,
+                 "name": package.name,
+                 "version": package.version,
+                 "unsatisfied_dependencies": list(deps),
+                 "unsatisfied_dependencies_size": total_size_deps,
+                 "unsatisfied_dependencies_size_formatted":
+                 filtered_filesizeformat(total_size_deps),
+                 "reverse_dependencies": list(reverse_deps),
+                 "reverse_dependencies_size": total_size_reverse_deps,
+                 "reverse_dependencies_size_formatted":
+                 filtered_filesizeformat(total_size_reverse_deps)})
+
+    def put(self, request, *args, **kwargs):
+        recipe, error = XhrCustomRecipeId._get_ci_recipe(kwargs['recipe_id'])
+        package, error = self._get_package(kwargs['package_id'])
+        if error:
+            return error
+
+        included_packages = recipe.includes_set.values_list('pk',
+                                                            flat=True)
+
+        # If we're adding back a package which used to be included in this
+        # image all we need to do is remove it from the excludes
+        if package.pk in included_packages:
+            try:
+                recipe.excludes_set.remove(package)
+                return {"error": "ok"}
+            except Package.DoesNotExist:
+                return error_response("Package %s not found in excludes"
+                                      " but was in included list" %
+                                      package.name)
+
+        else:
+            recipe.appends_set.add(package)
+            # Make sure that package is not in the excludes set
+            try:
+                recipe.excludes_set.remove(package)
+            except:
+                pass
+            # Add the dependencies we think will be added to the recipe
+            # as a result of appending this package.
+            # TODO this should recurse down the entire deps tree
+            for dep in package.package_dependencies_source.all_depends():
+                try:
+                    cust_package = CustomImagePackage.objects.get(
+                        name=dep.depends_on.name)
+
+                    recipe.includes_set.add(cust_package)
+                    try:
+                        # When adding the pre-requisite package, make
+                        # sure it's not in the excluded list from a
+                        # prior removal.
+                        recipe.excludes_set.remove(cust_package)
+                    except package.DoesNotExist:
+                        # Don't care if the package had never been excluded
+                        pass
+                except:
+                    logger.warning("Could not add package's suggested"
+                                   "dependencies to the list")
+        return JsonResponse({"error": "ok"})
+
+    def delete(self, request, *args, **kwargs):
+        recipe, error = XhrCustomRecipeId._get_ci_recipe(kwargs['recipe_id'])
+        package, error = self._get_package(kwargs['package_id'])
+        if error:
+            return error
+
+        try:
+            included_packages = recipe.includes_set.values_list('pk',
+                                                                flat=True)
+            # If we're deleting a package which is included we need to
+            # Add it to the excludes list.
+            if package.pk in included_packages:
+                recipe.excludes_set.add(package)
+            else:
+                recipe.appends_set.remove(package)
+                all_current_packages = recipe.get_all_packages()
+
+                reverse_deps_dictlist = self._get_all_dependents(
+                    package.pk,
+                    all_current_packages)
+
+                ids = [entry['pk'] for entry in reverse_deps_dictlist]
+                reverse_deps = CustomImagePackage.objects.filter(id__in=ids)
+                for r in reverse_deps:
+                    try:
+                        if r.id in included_packages:
+                            recipe.excludes_set.add(r)
+                        else:
+                            recipe.appends_set.remove(r)
+                    except:
+                        pass
+
+            return JsonResponse({"error": "ok"})
+        except CustomImageRecipe.DoesNotExist:
+            return error_response("Tried to remove package that wasn't"
+                                  " present")
+
+
+class XhrProject(View):
+    """ Create, delete or edit a project
+
+    Entry point: /xhr_project/<project_id>
+    """
+    def post(self, request, *args, **kwargs):
+        """
+          Edit project control
+
+          Args:
+              layerAdd = layer_version_id layer_version_id ...
+              layerDel = layer_version_id layer_version_id ...
+              projectName = new_project_name
+              machineName = new_machine_name
+
+          Returns:
+              {"error": "ok"}
+            or
+              {"error": <error message>}
+        """
+        try:
+            prj = Project.objects.get(pk=kwargs['project_id'])
+        except Project.DoesNotExist:
+            return error_response("No such project")
+
+        # Add layers
+        if 'layerAdd' in request.POST and len(request.POST['layerAdd']) > 0:
+            for layer_version_id in request.POST['layerAdd'].split(','):
+                try:
+                    lv = Layer_Version.objects.get(pk=int(layer_version_id))
+                    ProjectLayer.objects.get_or_create(project=prj,
+                                                       layercommit=lv)
+                except Layer_Version.DoesNotExist:
+                    return error_response("Layer version %s asked to add "
+                                          "doesn't exist" % layer_version_id)
+
+        # Remove layers
+        if 'layerDel' in request.POST and len(request.POST['layerDel']) > 0:
+            layer_version_ids = request.POST['layerDel'].split(',')
+            ProjectLayer.objects.filter(
+                project=prj,
+                layercommit_id__in=layer_version_ids).delete()
+
+        # Project name change
+        if 'projectName' in request.POST:
+            prj.name = request.POST['projectName']
+            prj.save()
+
+        # Machine name change
+        if 'machineName' in request.POST:
+            machinevar = prj.projectvariable_set.get(name="MACHINE")
+            machinevar.value = request.POST['machineName']
+            machinevar.save()
+
+        return JsonResponse({"error": "ok"})
+
+    def get(self, request, *args, **kwargs):
+        """
+        Returns:
+            json object representing the current project
+        or:
+            {"error": <error message>}
+        """
+
+        try:
+            project = Project.objects.get(pk=kwargs['project_id'])
+        except Project.DoesNotExist:
+            return error_response("Project %s does not exist" %
+                                  kwargs['project_id'])
+
+        # Create the frequently built targets list
+
+        freqtargets = Counter(Target.objects.filter(
+            Q(build__project=project),
+            ~Q(build__outcome=Build.IN_PROGRESS)
+        ).order_by("target").values_list("target", flat=True))
+
+        freqtargets = freqtargets.most_common(5)
+
+        # We now have the targets in order of frequency but if there are two
+        # with the same frequency then we need to make sure those are in
+        # alphabetical order without losing the frequency ordering
+
+        tmp = []
+        switch = None
+        for i, freqtartget in enumerate(freqtargets):
+            target, count = freqtartget
+            try:
+                target_next, count_next = freqtargets[i+1]
+                if count == count_next and target > target_next:
+                    switch = target
+                    continue
+            except IndexError:
+                pass
+
+            tmp.append(target)
+
+            if switch:
+                tmp.append(switch)
+                switch = None
+
+        freqtargets = tmp
+
+        layers = []
+        for layer in project.projectlayer_set.all():
+            layers.append({
+                "id": layer.layercommit.pk,
+                "name": layer.layercommit.layer.name,
+                "vcs_url": layer.layercommit.layer.vcs_url,
+                "local_source_dir": layer.layercommit.layer.local_source_dir,
+                "vcs_reference": layer.layercommit.get_vcs_reference(),
+                "url": layer.layercommit.layer.layer_index_url,
+                "layerdetailurl": layer.layercommit.get_detailspage_url(
+                    project.pk),
+                "layersource": layer.layercommit.layer_source
+            })
+
+        data = {
+            "name": project.name,
+            "layers": layers,
+            "freqtargets": freqtargets,
+        }
+
+        if project.release is not None:
+            data['release'] = {
+                "id": project.release.pk,
+                "name": project.release.name,
+                "description": project.release.description
+            }
+
+        try:
+            data["machine"] = {"name":
+                               project.projectvariable_set.get(
+                                   name="MACHINE").value}
+        except ProjectVariable.DoesNotExist:
+            data["machine"] = None
+        try:
+            data["distro"] = project.projectvariable_set.get(
+                name="DISTRO").value
+        except ProjectVariable.DoesNotExist:
+            data["distro"] = "-- not set yet"
+
+        data['error'] = "ok"
+
+        return JsonResponse(data)
+
+    def put(self, request, *args, **kwargs):
+        # TODO create new project api
+        return HttpResponse()
+
+    def delete(self, request, *args, **kwargs):
+        """Delete a project. Cancels any builds in progress"""
+        try:
+            project = Project.objects.get(pk=kwargs['project_id'])
+            # Cancel any builds in progress
+            for br in BuildRequest.objects.filter(
+                    project=project,
+                    state=BuildRequest.REQ_INPROGRESS):
+                XhrBuildRequest.cancel_build(br)
+
+            project.delete()
+
+        except Project.DoesNotExist:
+            return error_response("Project %s does not exist" %
+                                  kwargs['project_id'])
+
+        return JsonResponse({
+            "error": "ok",
+            "gotoUrl": reverse("all-projects", args=[])
+        })
+
+
+class XhrBuild(View):
+    """ Delete a build object
+
+    Entry point: /xhr_build/<build_id>
+    """
+    def delete(self, request, *args, **kwargs):
+        """
+          Delete build data
+
+          Args:
+              build_id = build_id
+
+          Returns:
+              {"error": "ok"}
+            or
+              {"error": <error message>}
+        """
+        try:
+            build = Build.objects.get(pk=kwargs['build_id'])
+            project = build.project
+            build.delete()
+        except Build.DoesNotExist:
+            return error_response("Build %s does not exist" %
+                                  kwargs['build_id'])
+        return JsonResponse({
+            "error": "ok",
+            "gotoUrl": reverse("projectbuilds", args=(project.pk,))
+        })
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/buildtables.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/buildtables.py
new file mode 100644
index 0000000..dd0a690
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/buildtables.py
@@ -0,0 +1,606 @@
+#
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from orm.models import Build, Task, Target, Package
+from django.db.models import Q, Sum
+
+import toastergui.tables as tables
+from toastergui.widgets import ToasterTable
+from toastergui.tablefilter import TableFilter
+from toastergui.tablefilter import TableFilterActionToggle
+
+
+class BuildTablesMixin(ToasterTable):
+    def get_context_data(self, **kwargs):
+        # We need to be explicit about which superclass we're calling here
+        # Otherwise the MRO gets in a right mess
+        context = ToasterTable.get_context_data(self, **kwargs)
+        context['build'] = Build.objects.get(pk=kwargs['build_id'])
+        return context
+
+
+class BuiltPackagesTableBase(tables.PackagesTable):
+    """ Table to display all the packages built in a build """
+    def __init__(self, *args, **kwargs):
+        super(BuiltPackagesTableBase, self).__init__(*args, **kwargs)
+        self.title = "Packages built"
+        self.default_orderby = "name"
+
+    def setup_queryset(self, *args, **kwargs):
+        build = Build.objects.get(pk=kwargs['build_id'])
+        self.static_context_extra['build'] = build
+        self.static_context_extra['target_name'] = None
+        self.queryset = build.package_set.all().exclude(recipe=None)
+        self.queryset = self.queryset.order_by(self.default_orderby)
+
+    def setup_columns(self, *args, **kwargs):
+        super(BuiltPackagesTableBase, self).setup_columns(*args, **kwargs)
+
+        def pkg_link_template(val):
+            """ return the template used for the link with the val as the
+            element value i.e. inside the <a></a>"""
+
+            return ('''
+                    <a href="
+                    {%% url "package_built_detail" extra.build.pk data.pk %%}
+                    ">%s</a>
+                    ''' % val)
+
+        def recipe_link_template(val):
+            return ('''
+                    {%% if data.recipe %%}
+                    <a href="
+                    {%% url "recipe" extra.build.pk data.recipe.pk %%}
+                    ">%(value)s</a>
+                    {%% else %%}
+                    %(value)s
+                    {%% endif %%}
+                    ''' % {'value': val})
+
+        add_pkg_link_to = 'name'
+        add_recipe_link_to = 'recipe__name'
+
+        # Add the recipe and pkg build links to the required columns
+        for column in self.columns:
+            # Convert to template field style accessors
+            tmplv = column['field_name'].replace('__', '.')
+            tmplv = "{{data.%s}}" % tmplv
+
+            if column['field_name'] is add_pkg_link_to:
+                # Don't overwrite an existing template
+                if column['static_data_template']:
+                    column['static_data_template'] =\
+                        pkg_link_template(column['static_data_template'])
+                else:
+                    column['static_data_template'] = pkg_link_template(tmplv)
+
+                column['static_data_name'] = column['field_name']
+
+            elif column['field_name'] is add_recipe_link_to:
+                # Don't overwrite an existing template
+                if column['static_data_template']:
+                    column['static_data_template'] =\
+                        recipe_link_template(column['static_data_template'])
+                else:
+                    column['static_data_template'] =\
+                        recipe_link_template(tmplv)
+                column['static_data_name'] = column['field_name']
+
+        self.add_column(title="Layer",
+                        field_name="recipe__layer_version__layer__name",
+                        hidden=True,
+                        orderable=True)
+
+        layer_branch_template = '''
+        {%if not data.recipe.layer_version.layer.local_source_dir %}
+        <span class="text-muted">{{data.recipe.layer_version.branch}}</span>
+        {% else %}
+        <span class="text-muted">Not applicable</span>
+        <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{data.recipe.layer_version.layer.name}} is not in a Git repository, so there is no branch associated with it"> </span>
+        {% endif %}
+        '''
+
+        self.add_column(title="Layer branch",
+                        field_name="recipe__layer_version__branch",
+                        hidden=True,
+                        static_data_name="recipe__layer_version__branch",
+                        static_data_template=layer_branch_template,
+                        orderable=True)
+
+        git_rev_template = '''
+        {% if not data.recipe.layer_version.layer.local_source_dir %}
+        {% with vcs_ref=data.recipe.layer_version.commit %}
+        {% include 'snippets/gitrev_popover.html' %}
+        {% endwith %}
+        {% else %}
+        <span class="text-muted">Not applicable</span>
+        <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{data.recipe.layer_version.layer.name}} is not in a Git repository, so there is no revision associated with it"> </span>
+        {% endif %}
+        '''
+
+        self.add_column(title="Layer commit",
+                        static_data_name='vcs_ref',
+                        static_data_template=git_rev_template,
+                        hidden=True)
+
+
+class BuiltPackagesTable(BuildTablesMixin, BuiltPackagesTableBase):
+    """ Show all the packages built for the selected build """
+    def __init__(self, *args, **kwargs):
+        super(BuiltPackagesTable, self).__init__(*args, **kwargs)
+        self.title = "Packages built"
+        self.default_orderby = "name"
+
+        self.empty_state =\
+            ('<strong>No packages were built.</strong> How did this happen? '
+             'Well, BitBake reuses as much stuff as possible. '
+             'If all of the packages needed were already built and available '
+             'in your build infrastructure, BitBake '
+             'will not rebuild any of them. This might be slightly confusing, '
+             'but it does make everything faster.')
+
+    def setup_columns(self, *args, **kwargs):
+        super(BuiltPackagesTable, self).setup_columns(*args, **kwargs)
+
+        def remove_dep_cols(columns):
+            for column in columns:
+                # We don't need these fields
+                if column['static_data_name'] in ['reverse_dependencies',
+                                                  'dependencies']:
+                    continue
+
+                yield column
+
+        self.columns = list(remove_dep_cols(self.columns))
+
+
+class InstalledPackagesTable(BuildTablesMixin, BuiltPackagesTableBase):
+    """ Show all packages installed in an image """
+    def __init__(self, *args, **kwargs):
+        super(InstalledPackagesTable, self).__init__(*args, **kwargs)
+        self.title = "Packages Included"
+        self.default_orderby = "name"
+
+    def make_package_list(self, target):
+        # The database design means that you get the intermediate objects and
+        # not package objects like you'd really want so we get them here
+        pkgs = target.target_installed_package_set.values_list('package',
+                                                               flat=True)
+        return Package.objects.filter(pk__in=pkgs)
+
+    def get_context_data(self, **kwargs):
+        context = super(InstalledPackagesTable,
+                        self).get_context_data(**kwargs)
+
+        target = Target.objects.get(pk=kwargs['target_id'])
+        packages = self.make_package_list(target)
+
+        context['packages_sum'] = packages.aggregate(
+            Sum('installed_size'))['installed_size__sum']
+
+        context['target'] = target
+        return context
+
+    def setup_queryset(self, *args, **kwargs):
+        build = Build.objects.get(pk=kwargs['build_id'])
+        self.static_context_extra['build'] = build
+
+        target = Target.objects.get(pk=kwargs['target_id'])
+        # We send these separately because in the case of image details table
+        # we don't have a target just the recipe name as the target
+        self.static_context_extra['target_name'] = target.target
+        self.static_context_extra['target_id'] = target.pk
+
+        self.static_context_extra['add_links'] = True
+
+        self.queryset = self.make_package_list(target)
+        self.queryset = self.queryset.order_by(self.default_orderby)
+
+    def setup_columns(self, *args, **kwargs):
+        super(InstalledPackagesTable, self).setup_columns(**kwargs)
+        self.add_column(title="Installed size",
+                        static_data_name="installed_size",
+                        static_data_template="{% load projecttags %}"
+                        "{{data.size|filtered_filesizeformat}}",
+                        orderable=True,
+                        hidden=True)
+
+        # Add the template to show installed name for installed packages
+        install_name_tmpl =\
+            ('<a href="{% url "package_included_detail" extra.build.pk'
+             ' extra.target_id data.pk %}">{{data.name}}</a>'
+             '{% if data.installed_name and data.installed_name !='
+             ' data.name %}'
+             '<span class="text-muted"> as {{data.installed_name}}</span>'
+             ' <span class="glyphicon glyphicon-question-sign get-help hover-help"'
+             ' title="{{data.name}} was renamed at packaging time and'
+             ' was installed in your image as {{data.installed_name}}'
+             '"></span>{% endif %} ')
+
+        for column in self.columns:
+            if column['static_data_name'] == 'name':
+                column['static_data_template'] = install_name_tmpl
+                break
+
+
+class BuiltRecipesTable(BuildTablesMixin):
+    """ Table to show the recipes that have been built in this build """
+
+    def __init__(self, *args, **kwargs):
+        super(BuiltRecipesTable, self).__init__(*args, **kwargs)
+        self.title = "Recipes built"
+        self.default_orderby = "name"
+
+    def setup_queryset(self, *args, **kwargs):
+        build = Build.objects.get(pk=kwargs['build_id'])
+        self.static_context_extra['build'] = build
+        self.queryset = build.get_recipes()
+        self.queryset = self.queryset.order_by(self.default_orderby)
+
+    def setup_columns(self, *args, **kwargs):
+        recipe_name_tmpl =\
+            '<a href="{% url "recipe" extra.build.pk data.pk %}">'\
+            '{{data.name}}'\
+            '</a>'
+
+        recipe_file_tmpl =\
+            '{{data.file_path}}'\
+            '{% if data.pathflags %}<i>({{data.pathflags}})</i>'\
+            '{% endif %}'
+
+        git_branch_template = '''
+        {% if data.layer_version.layer.local_source_dir %}
+        <span class="text-muted">Not applicable</span>
+        <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{data.layer_version.layer.name}} is not in a Git repository, so there is no branch associated with it"> </span>
+        {% else %}
+        <span>{{data.layer_version.branch}}</span>
+        {% endif %}
+        '''
+
+        git_rev_template = '''
+        {% if data.layer_version.layer.local_source_dir %}
+        <span class="text-muted">Not applicable</span>
+        <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{data.layer_version.layer.name}} is not in a Git repository, so there is no commit associated with it"> </span>
+        {% else %}
+        {% with vcs_ref=data.layer_version.commit %}
+        {% include 'snippets/gitrev_popover.html' %}
+        {% endwith %}
+        {% endif %}
+        '''
+
+        depends_on_tmpl = '''
+        {% with deps=data.r_dependencies_recipe.all %}
+        {% with count=deps|length %}
+        {% if count %}
+        <a class="btn btn-default" title="
+        <a href='{% url "recipe" extra.build.pk data.pk %}#dependencies'>
+        {{data.name}}</a> dependencies"
+        data-content="<ul class='list-unstyled'>
+        {% for dep in deps|dictsort:"depends_on.name"%}
+        <li><a href='{% url "recipe" extra.build.pk dep.depends_on.pk %}'>
+        {{dep.depends_on.name}}</a></li>
+        {% endfor %}
+        </ul>">
+         {{count}}
+        </a>
+        {% endif %}{% endwith %}{% endwith %}
+        '''
+
+        rev_depends_tmpl = '''
+        {% with revs=data.r_dependencies_depends.all %}
+        {% with count=revs|length %}
+        {% if count %}
+        <a class="btn btn-default"
+        title="
+        <a href='{% url "recipe" extra.build.pk data.pk %}#brought-in-by'>
+        {{data.name}}</a> reverse dependencies"
+        data-content="<ul class='list-unstyled'>
+        {% for dep in revs|dictsort:"recipe.name" %}
+        <li>
+        <a href='{% url "recipe" extra.build.pk dep.recipe.pk %}'>
+        {{dep.recipe.name}}
+        </a></li>
+        {% endfor %}
+        </ul>">
+        {{count}}
+        </a>
+        {% endif %}{% endwith %}{% endwith %}
+        '''
+
+        self.add_column(title="Recipe",
+                        field_name="name",
+                        static_data_name='name',
+                        orderable=True,
+                        hideable=False,
+                        static_data_template=recipe_name_tmpl)
+
+        self.add_column(title="Version",
+                        hideable=False,
+                        field_name="version")
+
+        self.add_column(title="Dependencies",
+                        static_data_name="dependencies",
+                        static_data_template=depends_on_tmpl)
+
+        self.add_column(title="Reverse dependencies",
+                        static_data_name="revdeps",
+                        static_data_template=rev_depends_tmpl,
+                        help_text='Recipe build-time reverse dependencies'
+                        ' (i.e. the recipes that depend on this recipe)')
+
+        self.add_column(title="Recipe file",
+                        field_name="file_path",
+                        static_data_name="file_path",
+                        static_data_template=recipe_file_tmpl,
+                        hidden=True)
+
+        self.add_column(title="Section",
+                        field_name="section",
+                        orderable=True,
+                        hidden=True)
+
+        self.add_column(title="License",
+                        field_name="license",
+                        help_text='Multiple license names separated by the'
+                        ' pipe character indicates a choice between licenses.'
+                        ' Multiple license names separated by the ampersand'
+                        ' character indicates multiple licenses exist that'
+                        ' cover different parts of the source',
+                        orderable=True)
+
+        self.add_column(title="Layer",
+                        field_name="layer_version__layer__name",
+                        orderable=True)
+
+        self.add_column(title="Layer branch",
+                        field_name="layer_version__branch",
+                        static_data_name="layer_version__branch",
+                        static_data_template=git_branch_template,
+                        orderable=True,
+                        hidden=True)
+
+        self.add_column(title="Layer commit",
+                        static_data_name="commit",
+                        static_data_template=git_rev_template,
+                        hidden=True)
+
+
+class BuildTasksTable(BuildTablesMixin):
+    """ Table to show the tasks that run in this build """
+
+    def __init__(self, *args, **kwargs):
+        super(BuildTasksTable, self).__init__(*args, **kwargs)
+        self.title = "Tasks"
+        self.default_orderby = "order"
+
+        # Toggle these columns on off for Time/CPU usage/Disk I/O tables
+        self.toggle_columns = {}
+
+    def setup_queryset(self, *args, **kwargs):
+        build = Build.objects.get(pk=kwargs['build_id'])
+        self.static_context_extra['build'] = build
+        self.queryset = build.task_build.filter(~Q(order=None))
+        self.queryset = self.queryset.order_by(self.default_orderby)
+
+    def setup_filters(self, *args, **kwargs):
+        # Execution outcome types filter
+        executed_outcome = TableFilter(name="execution_outcome",
+                                       title="Filter Tasks by 'Executed")
+
+        exec_outcome_action_exec = TableFilterActionToggle(
+            "executed",
+            "Executed Tasks",
+            Q(task_executed=True))
+
+        exec_outcome_action_not_exec = TableFilterActionToggle(
+            "not_executed",
+            "Not Executed Tasks",
+            Q(task_executed=False))
+
+        executed_outcome.add_action(exec_outcome_action_exec)
+        executed_outcome.add_action(exec_outcome_action_not_exec)
+
+        # Task outcome types filter
+        task_outcome = TableFilter(name="task_outcome",
+                                   title="Filter Task by 'Outcome'")
+
+        for outcome_enum, title in Task.TASK_OUTCOME:
+            if outcome_enum is Task.OUTCOME_NA:
+                continue
+            action = TableFilterActionToggle(
+                title.replace(" ", "_").lower(),
+                "%s Tasks" % title,
+                Q(outcome=outcome_enum))
+
+            task_outcome.add_action(action)
+
+        # SSTATE outcome types filter
+        sstate_outcome = TableFilter(name="sstate_outcome",
+                                     title="Filter Task by 'Cache attempt'")
+
+        for sstate_result_enum, title in Task.SSTATE_RESULT:
+            action = TableFilterActionToggle(
+                title.replace(" ", "_").lower(),
+                "Tasks with '%s' attempts" % title,
+                Q(sstate_result=sstate_result_enum))
+
+            sstate_outcome.add_action(action)
+
+        self.add_filter(sstate_outcome)
+        self.add_filter(executed_outcome)
+        self.add_filter(task_outcome)
+
+    def setup_columns(self, *args, **kwargs):
+        self.toggle_columns['order'] = len(self.columns)
+
+        recipe_name_tmpl =\
+            '<a href="{% url "recipe" extra.build.pk data.recipe.pk %}">'\
+            '{{data.recipe.name}}'\
+            '</a>'
+
+        def task_link_tmpl(val):
+            return ('<a name="task-{{data.order}}"'
+                    'href="{%% url "task" extra.build.pk data.pk %%}">'
+                    '%s'
+                    '</a>') % str(val)
+
+        self.add_column(title="Order",
+                        static_data_name="order",
+                        static_data_template='{{data.order}}',
+                        hideable=False,
+                        orderable=True)
+
+        self.add_column(title="Task",
+                        static_data_name="task_name",
+                        static_data_template=task_link_tmpl(
+                            "{{data.task_name}}"),
+                        hideable=False,
+                        orderable=True)
+
+        self.add_column(title="Recipe",
+                        static_data_name='recipe__name',
+                        static_data_template=recipe_name_tmpl,
+                        hideable=False,
+                        orderable=True)
+
+        self.add_column(title="Recipe version",
+                        field_name='recipe__version',
+                        hidden=True)
+
+        self.add_column(title="Executed",
+                        static_data_name="task_executed",
+                        static_data_template='{{data.get_executed_display}}',
+                        filter_name='execution_outcome',
+                        orderable=True)
+
+        self.static_context_extra['OUTCOME_FAILED'] = Task.OUTCOME_FAILED
+        outcome_tmpl = '{{data.outcome_text}}'
+        outcome_tmpl = ('%s '
+                        '{%% if data.outcome = extra.OUTCOME_FAILED %%}'
+                        '<a href="{%% url "build_artifact" extra.build.pk '
+                        '          "tasklogfile" data.pk %%}">'
+                        ' <span class="glyphicon glyphicon-download-alt'
+                        ' get-help" title="Download task log file"></span>'
+                        '</a> {%% endif %%}'
+                        '<span class="glyphicon glyphicon-question-sign'
+                        ' get-help hover-help" style="visibility: hidden;" '
+                        'title="{{data.get_outcome_help}}"></span>'
+                        ) % outcome_tmpl
+
+        self.add_column(title="Outcome",
+                        static_data_name="outcome",
+                        static_data_template=outcome_tmpl,
+                        filter_name="task_outcome",
+                        orderable=True)
+
+        self.toggle_columns['sstate_result'] = len(self.columns)
+
+        self.add_column(title="Cache attempt",
+                        static_data_name="sstate_result",
+                        static_data_template='{{data.sstate_text}}',
+                        filter_name="sstate_outcome",
+                        orderable=True)
+
+        self.toggle_columns['elapsed_time'] = len(self.columns)
+
+        self.add_column(
+            title="Time (secs)",
+            static_data_name="elapsed_time",
+            static_data_template='{% load projecttags %}{% load humanize %}'
+            '{{data.elapsed_time|format_none_and_zero|floatformat:2}}',
+            orderable=True,
+            hidden=True)
+
+        self.toggle_columns['cpu_time_sys'] = len(self.columns)
+
+        self.add_column(
+            title="System CPU time (secs)",
+            static_data_name="cpu_time_system",
+            static_data_template='{% load projecttags %}{% load humanize %}'
+            '{{data.cpu_time_system|format_none_and_zero|floatformat:2}}',
+            hidden=True,
+            orderable=True)
+
+        self.toggle_columns['cpu_time_user'] = len(self.columns)
+
+        self.add_column(
+            title="User CPU time (secs)",
+            static_data_name="cpu_time_user",
+            static_data_template='{% load projecttags %}{% load humanize %}'
+            '{{data.cpu_time_user|format_none_and_zero|floatformat:2}}',
+            hidden=True,
+            orderable=True)
+
+        self.toggle_columns['disk_io'] = len(self.columns)
+
+        self.add_column(
+            title="Disk I/O (ms)",
+            static_data_name="disk_io",
+            static_data_template='{% load projecttags %}{% load humanize %}'
+            '{{data.disk_io|format_none_and_zero|filtered_filesizeformat}}',
+            hidden=True,
+            orderable=True)
+
+
+class BuildTimeTable(BuildTasksTable):
+    """ Same as tasks table but the Time column is default displayed"""
+
+    def __init__(self, *args, **kwargs):
+        super(BuildTimeTable, self).__init__(*args, **kwargs)
+        self.default_orderby = "-elapsed_time"
+
+    def setup_columns(self, *args, **kwargs):
+        super(BuildTimeTable, self).setup_columns(**kwargs)
+
+        self.columns[self.toggle_columns['order']]['hidden'] = True
+        self.columns[self.toggle_columns['sstate_result']]['hidden'] = True
+        self.columns[self.toggle_columns['elapsed_time']]['hidden'] = False
+
+
+class BuildCPUTimeTable(BuildTasksTable):
+    """ Same as tasks table but the CPU usage columns are default displayed"""
+
+    def __init__(self, *args, **kwargs):
+        super(BuildCPUTimeTable, self).__init__(*args, **kwargs)
+        self.default_orderby = "-cpu_time_system"
+
+    def setup_columns(self, *args, **kwargs):
+        super(BuildCPUTimeTable, self).setup_columns(**kwargs)
+
+        self.columns[self.toggle_columns['order']]['hidden'] = True
+        self.columns[self.toggle_columns['sstate_result']]['hidden'] = True
+        self.columns[self.toggle_columns['cpu_time_sys']]['hidden'] = False
+        self.columns[self.toggle_columns['cpu_time_user']]['hidden'] = False
+
+
+class BuildIOTable(BuildTasksTable):
+    """ Same as tasks table but the Disk IO column is default displayed"""
+
+    def __init__(self, *args, **kwargs):
+        super(BuildIOTable, self).__init__(*args, **kwargs)
+        self.default_orderby = "-disk_io"
+
+    def setup_columns(self, *args, **kwargs):
+        super(BuildIOTable, self).setup_columns(**kwargs)
+
+        self.columns[self.toggle_columns['order']]['hidden'] = True
+        self.columns[self.toggle_columns['sstate_result']]['hidden'] = True
+        self.columns[self.toggle_columns['disk_io']]['hidden'] = False
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml
index cf35be4..4517ed1 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml
@@ -1,5 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <django-objects version="1.0">
+   <object pk="1" model="orm.bitbakeversion">
+      <field type="CharField" name="name">v2.3</field>
+      <field type="GitURLField" name="giturl">git://git.openembedded.org/bitbake</field>
+      <field type="CharField" name="dirpath">b</field>
+      <field type="CharField" name="branch">a</field>
+  </object>
+  <object pk="1" model="orm.release">
+     <field type="CharField" name="name">master</field>
+     <field type="CharField" name="description">master project</field>
+     <field to="orm.bitbake_version" name="bitbake_version">1</field>
+  </object>
   <object pk="1" model="orm.project">
     <field type="CharField" name="name">a test project</field>
     <field type="CharField" name="short_description"></field>
@@ -82,9 +93,8 @@
     <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
     <field type="CharField" name="target">a image recipe</field>
     <field type="CharField" name="task"><None></None></field>
-    <field type="BooleanField" name="is_image">False</field>
-    <field type="IntegerField" name="image_size">0</field>
-    <field type="CharField" name="license_manifest_path"><None></None></field>
+    <field type="BooleanField" name="is_image">True</field>
+    <field type="IntegerField" name="image_size">290</field>
   </object>
   <object pk="2" model="orm.target">
     <field to="orm.build" name="build" rel="ManyToOneRel">2</field>
@@ -118,9 +128,9 @@
   </object>
   <object pk="2" model="orm.package">
     <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
-    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">2</field>
+    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">1</field>
     <field type="CharField" name="name">f pkg</field>
-    <field type="CharField" name="installed_name"></field>
+    <field type="CharField" name="installed_name">f</field>
     <field type="CharField" name="version"></field>
     <field type="CharField" name="revision"></field>
     <field type="TextField" name="summary"></field>
@@ -196,8 +206,6 @@
     <field to="orm.customimagerecipe" name="recipe_appends" rel="ManyToManyRel"><object pk="3"></object></field>
   </object>
   <object pk="1" model="orm.recipe">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">z recipe</field>
     <field type="CharField" name="version">5.2</field>
@@ -213,8 +221,6 @@
     <field type="BooleanField" name="is_image">False</field>
   </object>
   <object pk="2" model="orm.recipe">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">a recipe</field>
     <field type="CharField" name="version">1.2</field>
@@ -230,8 +236,6 @@
     <field type="BooleanField" name="is_image">False</field>
   </object>
   <object pk="3" model="orm.recipe">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">a custom recipe</field>
     <field type="CharField" name="version"></field>
@@ -247,8 +251,6 @@
     <field type="BooleanField" name="is_image">False</field>
   </object>
   <object pk="4" model="orm.recipe">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">a image recipe</field>
     <field type="CharField" name="version">1.2</field>
@@ -264,8 +266,6 @@
     <field type="BooleanField" name="is_image">True</field>
   </object>
   <object pk="5" model="orm.recipe">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">z image recipe</field>
     <field type="CharField" name="version">1.3</field>
@@ -281,8 +281,6 @@
     <field type="BooleanField" name="is_image">True</field>
   </object>
   <object pk="6" model="orm.recipe">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">z custom recipe</field>
     <field type="CharField" name="version"></field>
@@ -297,35 +295,34 @@
     <field type="CharField" name="pathflags"></field>
     <field type="BooleanField" name="is_image">False</field>
   </object>
+  <!-- Added for an additional built recipe -->
+  <object pk="6" model="orm.recipe">
+    <field type="CharField" name="name">g recipe</field>
+    <field type="CharField" name="version">1.2.3</field>
+    <field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">3</field>
+    <field type="CharField" name="license">g license</field>
+    <field type="FilePathField" name="file_path">/g</field>
+    <field type="BooleanField" name="is_image">False</field>
+  </object>
+
   <object pk="1" model="orm.machine">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">1</field>
     <field type="CharField" name="name">a machine</field>
     <field type="CharField" name="description">a machine</field>
   </object>
   <object pk="2" model="orm.machine">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">2</field>
     <field type="CharField" name="name">z machine</field>
     <field type="CharField" name="description">z machine</field>
   </object>
   <object pk="3" model="orm.machine">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">1</field>
     <field type="CharField" name="name">g machine</field>
     <field type="CharField" name="description">g machine</field>
   </object>
-  <object pk="1" model="orm.layersource">
-    <field type="CharField" name="name">local</field>
-    <field type="IntegerField" name="sourcetype">1</field>
-    <field type="CharField" name="apiurl"></field>
-  </object>
   <object pk="1" model="orm.bitbakeversion">
     <field type="CharField" name="name">test bbv</field>
     <field type="CharField" name="giturl">/tmp/</field>
@@ -346,53 +343,24 @@
     <field type="CharField" name="branch_name">master</field>
     <field type="TextField" name="helptext"><None></None></field>
   </object>
-  <object pk="1" model="orm.releaselayersourcepriority">
-    <field to="orm.release" name="release" rel="ManyToOneRel">1</field>
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="priority">0</field>
-  </object>
-  <object pk="1" model="orm.branch">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
-    <field type="DateTimeField" name="up_date"><None></None></field>
-    <field type="CharField" name="name">master</field>
-    <field type="CharField" name="short_description"></field>
-  </object>
   <object pk="1" model="orm.layer">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">a layer</field>
-    <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">/tmp/</field>
-    <field type="CharField" name="vcs_web_url"><None></None></field>
-    <field type="CharField" name="vcs_web_tree_base_url"><None></None></field>
-    <field type="CharField" name="vcs_web_file_base_url"><None></None></field>
-    <field type="TextField" name="summary"><None></None></field>
-    <field type="TextField" name="description"><None></None></field>
   </object>
   <object pk="2" model="orm.layer">
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">z layer</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://two/</field>
-    <field type="CharField" name="vcs_web_url"><None></None></field>
-    <field type="CharField" name="vcs_web_tree_base_url"><None></None></field>
-    <field type="CharField" name="vcs_web_file_base_url"><None></None></field>
-    <field type="TextField" name="summary"><None></None></field>
-    <field type="TextField" name="description"><None></None></field>
   </object>
   <object pk="1" model="orm.layer_version">
-    <field to="orm.build" name="build" rel="ManyToOneRel"><None></None></field>
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
     <field to="orm.layer" name="layer" rel="ManyToOneRel">1</field>
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
-    <field to="orm.branch" name="up_branch" rel="ManyToOneRel">1</field>
-    <field type="CharField" name="branch"></field>
-    <field type="CharField" name="commit">master</field>
+    <field to="orm.release" name="release" rel="ManyToOneRel">1</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="commit">abcdef123</field>
     <field type="CharField" name="dirpath">/tmp/</field>
     <field type="IntegerField" name="priority">0</field>
     <field type="FilePathField" name="local_path">/</field>
@@ -401,12 +369,22 @@
   <object pk="2" model="orm.layer_version">
     <field to="orm.build" name="build" rel="ManyToOneRel"><None></None></field>
     <field to="orm.layer" name="layer" rel="ManyToOneRel">2</field>
-    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
-    <field to="orm.branch" name="up_branch" rel="ManyToOneRel">1</field>
-    <field type="CharField" name="branch"></field>
-    <field type="CharField" name="commit">master</field>
+    <field to="orm.release" name="release" rel="ManyToOneRel">1</field>
+    <field type="CharField" name="branch">testing-branch</field>
+    <field type="CharField" name="commit">9876fedcba</field>
+    <field type="CharField" name="dirpath"><None></None></field>
+    <field type="IntegerField" name="priority">0</field>
+    <field type="FilePathField" name="local_path">/</field>
+    <field to="orm.project" name="project" rel="ManyToOneRel"><None></None></field>
+  </object>
+  <object pk="3" model="orm.layer_version">
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
+    <field to="orm.layer" name="layer" rel="ManyToOneRel">2</field>
+    <field type="DateTimeField" name="up_date"><None></None></field>
+    <field to="orm.release" name="release" rel="ManyToOneRel">1</field>
+    <field type="CharField" name="branch">testing-branch</field>
+    <field type="CharField" name="commit">9876fedcba</field>
     <field type="CharField" name="dirpath"><None></None></field>
     <field type="IntegerField" name="priority">0</field>
     <field type="FilePathField" name="local_path">/</field>
@@ -443,4 +421,39 @@
     <field type="FilePathField" name="pathname"></field>
     <field type="IntegerField" name="lineno"><None></None></field>
   </object>
+  <!-- Some tasks for build 1 to test build tables -->
+  <object pk="1" model="orm.task">
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
+    <field type="IntegerField" name="order">1</field>
+    <field type="BooleanField" name="task_executed">False</field>
+    <field type="IntegerField" name="outcome">-1</field>
+    <field type="CharField" name="sstate_checksum">abcdef123</field>
+    <field type="FilePathField" name="path_to_sstate_obj">34/wefw.tar</field>
+    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">1</field>
+    <field type="CharField" name="task_name">a_do_compile</field>
+    <field type="DecimalField" name="elapsed_time">100</field>
+    <field type="IntegerField" name="disk_io">10</field>
+    <field type="IntegerField" name="disk_io_read">11</field>
+    <field type="IntegerField" name="disk_io_write">12</field>
+    <field type="DecimalField" name="cpu_time_user">10.1</field>
+    <field type="DecimalField" name="cpu_time_system">10.2</field>
+    <field type="IntegerField" name="sstate_result">3</field>
+  </object>
+  <object pk="2" model="orm.task">
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
+    <field type="IntegerField" name="order">2</field>
+    <field type="BooleanField" name="task_executed">True</field>
+    <field type="IntegerField" name="outcome">2</field>
+    <field type="CharField" name="sstate_checksum">85bccb7802fd5f48</field>
+    <field type="FilePathField" name="path_to_sstate_obj">85/sstarpm.tgz</field>
+    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">2</field>
+    <field type="CharField" name="task_name">z_do_package_write_rpm</field>
+    <field type="DecimalField" name="elapsed_time">245</field>
+    <field type="IntegerField" name="disk_io">12424</field>
+    <field type="IntegerField" name="disk_io_read">23423</field>
+    <field type="IntegerField" name="disk_io_write">83943</field>
+    <field type="DecimalField" name="cpu_time_user">20394.3</field>
+    <field type="DecimalField" name="cpu_time_system">5363.3</field>
+    <field type="IntegerField" name="sstate_result">1</field>
+  </object>
 </django-objects>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap-responsive.min.css b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap-responsive.min.css
deleted file mode 100755
index 0597860..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap-responsive.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * Bootstrap Responsive v2.3.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.css b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.css
new file mode 100644
index 0000000..42c79d6
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.css
@@ -0,0 +1,6760 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+  font-family: sans-serif;
+  -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+}
+body {
+  margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+[hidden],
+template {
+  display: none;
+}
+a {
+  background-color: transparent;
+}
+a:active,
+a:hover {
+  outline: 0;
+}
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+b,
+strong {
+  font-weight: bold;
+}
+dfn {
+  font-style: italic;
+}
+h1 {
+  margin: .67em 0;
+  font-size: 2em;
+}
+mark {
+  color: #000;
+  background: #ff0;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -.5em;
+}
+sub {
+  bottom: -.25em;
+}
+img {
+  border: 0;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  height: 0;
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+}
+pre {
+  overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+  margin: 0;
+  font: inherit;
+  color: inherit;
+}
+button {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+input {
+  line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+fieldset {
+  padding: .35em .625em .75em;
+  margin: 0 2px;
+  border: 1px solid #c0c0c0;
+}
+legend {
+  padding: 0;
+  border: 0;
+}
+textarea {
+  overflow: auto;
+}
+optgroup {
+  font-weight: bold;
+}
+table {
+  border-spacing: 0;
+  border-collapse: collapse;
+}
+td,
+th {
+  padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+  *,
+  *:before,
+  *:after {
+    color: #000 !important;
+    text-shadow: none !important;
+    background: transparent !important;
+    -webkit-box-shadow: none !important;
+            box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  a[href^="#"]:after,
+  a[href^="javascript:"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+  .navbar {
+    display: none;
+  }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .label {
+    border: 1px solid #000;
+  }
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table td,
+  .table th {
+    background-color: #fff !important;
+  }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+
+  src: url('../fonts/glyphicons-halflings-regular.eot');
+  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+  content: "\002a";
+}
+.glyphicon-plus:before {
+  content: "\002b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+  content: "\20ac";
+}
+.glyphicon-minus:before {
+  content: "\2212";
+}
+.glyphicon-cloud:before {
+  content: "\2601";
+}
+.glyphicon-envelope:before {
+  content: "\2709";
+}
+.glyphicon-pencil:before {
+  content: "\270f";
+}
+.glyphicon-glass:before {
+  content: "\e001";
+}
+.glyphicon-music:before {
+  content: "\e002";
+}
+.glyphicon-search:before {
+  content: "\e003";
+}
+.glyphicon-heart:before {
+  content: "\e005";
+}
+.glyphicon-star:before {
+  content: "\e006";
+}
+.glyphicon-star-empty:before {
+  content: "\e007";
+}
+.glyphicon-user:before {
+  content: "\e008";
+}
+.glyphicon-film:before {
+  content: "\e009";
+}
+.glyphicon-th-large:before {
+  content: "\e010";
+}
+.glyphicon-th:before {
+  content: "\e011";
+}
+.glyphicon-th-list:before {
+  content: "\e012";
+}
+.glyphicon-ok:before {
+  content: "\e013";
+}
+.glyphicon-remove:before {
+  content: "\e014";
+}
+.glyphicon-zoom-in:before {
+  content: "\e015";
+}
+.glyphicon-zoom-out:before {
+  content: "\e016";
+}
+.glyphicon-off:before {
+  content: "\e017";
+}
+.glyphicon-signal:before {
+  content: "\e018";
+}
+.glyphicon-cog:before {
+  content: "\e019";
+}
+.glyphicon-trash:before {
+  content: "\e020";
+}
+.glyphicon-home:before {
+  content: "\e021";
+}
+.glyphicon-file:before {
+  content: "\e022";
+}
+.glyphicon-time:before {
+  content: "\e023";
+}
+.glyphicon-road:before {
+  content: "\e024";
+}
+.glyphicon-download-alt:before {
+  content: "\e025";
+}
+.glyphicon-download:before {
+  content: "\e026";
+}
+.glyphicon-upload:before {
+  content: "\e027";
+}
+.glyphicon-inbox:before {
+  content: "\e028";
+}
+.glyphicon-play-circle:before {
+  content: "\e029";
+}
+.glyphicon-repeat:before {
+  content: "\e030";
+}
+.glyphicon-refresh:before {
+  content: "\e031";
+}
+.glyphicon-list-alt:before {
+  content: "\e032";
+}
+.glyphicon-lock:before {
+  content: "\e033";
+}
+.glyphicon-flag:before {
+  content: "\e034";
+}
+.glyphicon-headphones:before {
+  content: "\e035";
+}
+.glyphicon-volume-off:before {
+  content: "\e036";
+}
+.glyphicon-volume-down:before {
+  content: "\e037";
+}
+.glyphicon-volume-up:before {
+  content: "\e038";
+}
+.glyphicon-qrcode:before {
+  content: "\e039";
+}
+.glyphicon-barcode:before {
+  content: "\e040";
+}
+.glyphicon-tag:before {
+  content: "\e041";
+}
+.glyphicon-tags:before {
+  content: "\e042";
+}
+.glyphicon-book:before {
+  content: "\e043";
+}
+.glyphicon-bookmark:before {
+  content: "\e044";
+}
+.glyphicon-print:before {
+  content: "\e045";
+}
+.glyphicon-camera:before {
+  content: "\e046";
+}
+.glyphicon-font:before {
+  content: "\e047";
+}
+.glyphicon-bold:before {
+  content: "\e048";
+}
+.glyphicon-italic:before {
+  content: "\e049";
+}
+.glyphicon-text-height:before {
+  content: "\e050";
+}
+.glyphicon-text-width:before {
+  content: "\e051";
+}
+.glyphicon-align-left:before {
+  content: "\e052";
+}
+.glyphicon-align-center:before {
+  content: "\e053";
+}
+.glyphicon-align-right:before {
+  content: "\e054";
+}
+.glyphicon-align-justify:before {
+  content: "\e055";
+}
+.glyphicon-list:before {
+  content: "\e056";
+}
+.glyphicon-indent-left:before {
+  content: "\e057";
+}
+.glyphicon-indent-right:before {
+  content: "\e058";
+}
+.glyphicon-facetime-video:before {
+  content: "\e059";
+}
+.glyphicon-picture:before {
+  content: "\e060";
+}
+.glyphicon-map-marker:before {
+  content: "\e062";
+}
+.glyphicon-adjust:before {
+  content: "\e063";
+}
+.glyphicon-tint:before {
+  content: "\e064";
+}
+.glyphicon-edit:before {
+  content: "\e065";
+}
+.glyphicon-share:before {
+  content: "\e066";
+}
+.glyphicon-check:before {
+  content: "\e067";
+}
+.glyphicon-move:before {
+  content: "\e068";
+}
+.glyphicon-step-backward:before {
+  content: "\e069";
+}
+.glyphicon-fast-backward:before {
+  content: "\e070";
+}
+.glyphicon-backward:before {
+  content: "\e071";
+}
+.glyphicon-play:before {
+  content: "\e072";
+}
+.glyphicon-pause:before {
+  content: "\e073";
+}
+.glyphicon-stop:before {
+  content: "\e074";
+}
+.glyphicon-forward:before {
+  content: "\e075";
+}
+.glyphicon-fast-forward:before {
+  content: "\e076";
+}
+.glyphicon-step-forward:before {
+  content: "\e077";
+}
+.glyphicon-eject:before {
+  content: "\e078";
+}
+.glyphicon-chevron-left:before {
+  content: "\e079";
+}
+.glyphicon-chevron-right:before {
+  content: "\e080";
+}
+.glyphicon-plus-sign:before {
+  content: "\e081";
+}
+.glyphicon-minus-sign:before {
+  content: "\e082";
+}
+.glyphicon-remove-sign:before {
+  content: "\e083";
+}
+.glyphicon-ok-sign:before {
+  content: "\e084";
+}
+.glyphicon-question-sign:before {
+  content: "\e085";
+}
+.glyphicon-info-sign:before {
+  content: "\e086";
+}
+.glyphicon-screenshot:before {
+  content: "\e087";
+}
+.glyphicon-remove-circle:before {
+  content: "\e088";
+}
+.glyphicon-ok-circle:before {
+  content: "\e089";
+}
+.glyphicon-ban-circle:before {
+  content: "\e090";
+}
+.glyphicon-arrow-left:before {
+  content: "\e091";
+}
+.glyphicon-arrow-right:before {
+  content: "\e092";
+}
+.glyphicon-arrow-up:before {
+  content: "\e093";
+}
+.glyphicon-arrow-down:before {
+  content: "\e094";
+}
+.glyphicon-share-alt:before {
+  content: "\e095";
+}
+.glyphicon-resize-full:before {
+  content: "\e096";
+}
+.glyphicon-resize-small:before {
+  content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+  content: "\e101";
+}
+.glyphicon-gift:before {
+  content: "\e102";
+}
+.glyphicon-leaf:before {
+  content: "\e103";
+}
+.glyphicon-fire:before {
+  content: "\e104";
+}
+.glyphicon-eye-open:before {
+  content: "\e105";
+}
+.glyphicon-eye-close:before {
+  content: "\e106";
+}
+.glyphicon-warning-sign:before {
+  content: "\e107";
+}
+.glyphicon-plane:before {
+  content: "\e108";
+}
+.glyphicon-calendar:before {
+  content: "\e109";
+}
+.glyphicon-random:before {
+  content: "\e110";
+}
+.glyphicon-comment:before {
+  content: "\e111";
+}
+.glyphicon-magnet:before {
+  content: "\e112";
+}
+.glyphicon-chevron-up:before {
+  content: "\e113";
+}
+.glyphicon-chevron-down:before {
+  content: "\e114";
+}
+.glyphicon-retweet:before {
+  content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+  content: "\e116";
+}
+.glyphicon-folder-close:before {
+  content: "\e117";
+}
+.glyphicon-folder-open:before {
+  content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+  content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+  content: "\e120";
+}
+.glyphicon-hdd:before {
+  content: "\e121";
+}
+.glyphicon-bullhorn:before {
+  content: "\e122";
+}
+.glyphicon-bell:before {
+  content: "\e123";
+}
+.glyphicon-certificate:before {
+  content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+  content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+  content: "\e126";
+}
+.glyphicon-hand-right:before {
+  content: "\e127";
+}
+.glyphicon-hand-left:before {
+  content: "\e128";
+}
+.glyphicon-hand-up:before {
+  content: "\e129";
+}
+.glyphicon-hand-down:before {
+  content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+  content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+  content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+  content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+  content: "\e134";
+}
+.glyphicon-globe:before {
+  content: "\e135";
+}
+.glyphicon-wrench:before {
+  content: "\e136";
+}
+.glyphicon-tasks:before {
+  content: "\e137";
+}
+.glyphicon-filter:before {
+  content: "\e138";
+}
+.glyphicon-briefcase:before {
+  content: "\e139";
+}
+.glyphicon-fullscreen:before {
+  content: "\e140";
+}
+.glyphicon-dashboard:before {
+  content: "\e141";
+}
+.glyphicon-paperclip:before {
+  content: "\e142";
+}
+.glyphicon-heart-empty:before {
+  content: "\e143";
+}
+.glyphicon-link:before {
+  content: "\e144";
+}
+.glyphicon-phone:before {
+  content: "\e145";
+}
+.glyphicon-pushpin:before {
+  content: "\e146";
+}
+.glyphicon-usd:before {
+  content: "\e148";
+}
+.glyphicon-gbp:before {
+  content: "\e149";
+}
+.glyphicon-sort:before {
+  content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+  content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+  content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+  content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+  content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+  content: "\e156";
+}
+.glyphicon-unchecked:before {
+  content: "\e157";
+}
+.glyphicon-expand:before {
+  content: "\e158";
+}
+.glyphicon-collapse-down:before {
+  content: "\e159";
+}
+.glyphicon-collapse-up:before {
+  content: "\e160";
+}
+.glyphicon-log-in:before {
+  content: "\e161";
+}
+.glyphicon-flash:before {
+  content: "\e162";
+}
+.glyphicon-log-out:before {
+  content: "\e163";
+}
+.glyphicon-new-window:before {
+  content: "\e164";
+}
+.glyphicon-record:before {
+  content: "\e165";
+}
+.glyphicon-save:before {
+  content: "\e166";
+}
+.glyphicon-open:before {
+  content: "\e167";
+}
+.glyphicon-saved:before {
+  content: "\e168";
+}
+.glyphicon-import:before {
+  content: "\e169";
+}
+.glyphicon-export:before {
+  content: "\e170";
+}
+.glyphicon-send:before {
+  content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+  content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+  content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+  content: "\e174";
+}
+.glyphicon-floppy-save:before {
+  content: "\e175";
+}
+.glyphicon-floppy-open:before {
+  content: "\e176";
+}
+.glyphicon-credit-card:before {
+  content: "\e177";
+}
+.glyphicon-transfer:before {
+  content: "\e178";
+}
+.glyphicon-cutlery:before {
+  content: "\e179";
+}
+.glyphicon-header:before {
+  content: "\e180";
+}
+.glyphicon-compressed:before {
+  content: "\e181";
+}
+.glyphicon-earphone:before {
+  content: "\e182";
+}
+.glyphicon-phone-alt:before {
+  content: "\e183";
+}
+.glyphicon-tower:before {
+  content: "\e184";
+}
+.glyphicon-stats:before {
+  content: "\e185";
+}
+.glyphicon-sd-video:before {
+  content: "\e186";
+}
+.glyphicon-hd-video:before {
+  content: "\e187";
+}
+.glyphicon-subtitles:before {
+  content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+  content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+  content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+  content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+  content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+  content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+  content: "\e194";
+}
+.glyphicon-registration-mark:before {
+  content: "\e195";
+}
+.glyphicon-cloud-download:before {
+  content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+  content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+  content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+  content: "\e200";
+}
+.glyphicon-cd:before {
+  content: "\e201";
+}
+.glyphicon-save-file:before {
+  content: "\e202";
+}
+.glyphicon-open-file:before {
+  content: "\e203";
+}
+.glyphicon-level-up:before {
+  content: "\e204";
+}
+.glyphicon-copy:before {
+  content: "\e205";
+}
+.glyphicon-paste:before {
+  content: "\e206";
+}
+.glyphicon-alert:before {
+  content: "\e209";
+}
+.glyphicon-equalizer:before {
+  content: "\e210";
+}
+.glyphicon-king:before {
+  content: "\e211";
+}
+.glyphicon-queen:before {
+  content: "\e212";
+}
+.glyphicon-pawn:before {
+  content: "\e213";
+}
+.glyphicon-bishop:before {
+  content: "\e214";
+}
+.glyphicon-knight:before {
+  content: "\e215";
+}
+.glyphicon-baby-formula:before {
+  content: "\e216";
+}
+.glyphicon-tent:before {
+  content: "\26fa";
+}
+.glyphicon-blackboard:before {
+  content: "\e218";
+}
+.glyphicon-bed:before {
+  content: "\e219";
+}
+.glyphicon-apple:before {
+  content: "\f8ff";
+}
+.glyphicon-erase:before {
+  content: "\e221";
+}
+.glyphicon-hourglass:before {
+  content: "\231b";
+}
+.glyphicon-lamp:before {
+  content: "\e223";
+}
+.glyphicon-duplicate:before {
+  content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+  content: "\e225";
+}
+.glyphicon-scissors:before {
+  content: "\e226";
+}
+.glyphicon-bitcoin:before {
+  content: "\e227";
+}
+.glyphicon-btc:before {
+  content: "\e227";
+}
+.glyphicon-xbt:before {
+  content: "\e227";
+}
+.glyphicon-yen:before {
+  content: "\00a5";
+}
+.glyphicon-jpy:before {
+  content: "\00a5";
+}
+.glyphicon-ruble:before {
+  content: "\20bd";
+}
+.glyphicon-rub:before {
+  content: "\20bd";
+}
+.glyphicon-scale:before {
+  content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+  content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+  content: "\e232";
+}
+.glyphicon-education:before {
+  content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+  content: "\e234";
+}
+.glyphicon-option-vertical:before {
+  content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+  content: "\e236";
+}
+.glyphicon-modal-window:before {
+  content: "\e237";
+}
+.glyphicon-oil:before {
+  content: "\e238";
+}
+.glyphicon-grain:before {
+  content: "\e239";
+}
+.glyphicon-sunglasses:before {
+  content: "\e240";
+}
+.glyphicon-text-size:before {
+  content: "\e241";
+}
+.glyphicon-text-color:before {
+  content: "\e242";
+}
+.glyphicon-text-background:before {
+  content: "\e243";
+}
+.glyphicon-object-align-top:before {
+  content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+  content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+  content: "\e246";
+}
+.glyphicon-object-align-left:before {
+  content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+  content: "\e248";
+}
+.glyphicon-object-align-right:before {
+  content: "\e249";
+}
+.glyphicon-triangle-right:before {
+  content: "\e250";
+}
+.glyphicon-triangle-left:before {
+  content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+  content: "\e252";
+}
+.glyphicon-triangle-top:before {
+  content: "\e253";
+}
+.glyphicon-console:before {
+  content: "\e254";
+}
+.glyphicon-superscript:before {
+  content: "\e255";
+}
+.glyphicon-subscript:before {
+  content: "\e256";
+}
+.glyphicon-menu-left:before {
+  content: "\e257";
+}
+.glyphicon-menu-right:before {
+  content: "\e258";
+}
+.glyphicon-menu-down:before {
+  content: "\e259";
+}
+.glyphicon-menu-up:before {
+  content: "\e260";
+}
+* {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+html {
+  font-size: 10px;
+
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #333;
+  background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+a {
+  color: #337ab7;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #23527c;
+  text-decoration: underline;
+}
+a:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+figure {
+  margin: 0;
+}
+img {
+  vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.img-rounded {
+  border-radius: 6px;
+}
+.img-thumbnail {
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+  padding: 4px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+       -o-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.img-circle {
+  border-radius: 50%;
+}
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eee;
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
+[role="button"] {
+  cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+  font-family: inherit;
+  font-weight: 500;
+  line-height: 1.1;
+  color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+  font-weight: normal;
+  line-height: 1;
+  color: #777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+  font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+  font-size: 75%;
+}
+h1,
+.h1 {
+  font-size: 36px;
+}
+h2,
+.h2 {
+  font-size: 30px;
+}
+h3,
+.h3 {
+  font-size: 24px;
+}
+h4,
+.h4 {
+  font-size: 18px;
+}
+h5,
+.h5 {
+  font-size: 14px;
+}
+h6,
+.h6 {
+  font-size: 12px;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 1.4;
+}
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px;
+  }
+}
+small,
+.small {
+  font-size: 85%;
+}
+mark,
+.mark {
+  padding: .2em;
+  background-color: #fcf8e3;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+.text-justify {
+  text-align: justify;
+}
+.text-nowrap {
+  white-space: nowrap;
+}
+.text-lowercase {
+  text-transform: lowercase;
+}
+.text-uppercase {
+  text-transform: uppercase;
+}
+.text-capitalize {
+  text-transform: capitalize;
+}
+.text-muted {
+  color: #777;
+}
+.text-primary {
+  color: #337ab7;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+  color: #286090;
+}
+.text-success {
+  color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #2b542c;
+}
+.text-info {
+  color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #245269;
+}
+.text-warning {
+  color: #8a6d3b;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #66512c;
+}
+.text-danger {
+  color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+  color: #843534;
+}
+.bg-primary {
+  color: #fff;
+  background-color: #337ab7;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+  background-color: #286090;
+}
+.bg-success {
+  background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+  background-color: #c1e2b3;
+}
+.bg-info {
+  background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+  background-color: #afd9ee;
+}
+.bg-warning {
+  background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+  background-color: #f7ecb5;
+}
+.bg-danger {
+  background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+  background-color: #e4b9b9;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+  margin-bottom: 0;
+}
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+.list-inline {
+  padding-left: 0;
+  margin-left: -5px;
+  list-style: none;
+}
+.list-inline > li {
+  display: inline-block;
+  padding-right: 5px;
+  padding-left: 5px;
+}
+dl {
+  margin-top: 0;
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 1.42857143;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    overflow: hidden;
+    clear: left;
+    text-align: right;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .dl-horizontal dd {
+    margin-left: 180px;
+  }
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #777;
+}
+.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+  margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+  display: block;
+  font-size: 80%;
+  line-height: 1.42857143;
+  color: #777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+  content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid #eee;
+  border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+  content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+  content: '\00A0 \2014';
+}
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  background-color: #f9f2f4;
+  border-radius: 4px;
+}
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #fff;
+  background-color: #333;
+  border-radius: 3px;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+  padding: 0;
+  font-size: 100%;
+  font-weight: bold;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #333;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border-radius: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+.container {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+@media (min-width: 768px) {
+  .container {
+    width: 750px;
+  }
+}
+@media (min-width: 992px) {
+  .container {
+    width: 970px;
+  }
+}
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px;
+  }
+}
+.container-fluid {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+.row {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left;
+}
+.col-xs-12 {
+  width: 100%;
+}
+.col-xs-11 {
+  width: 91.66666667%;
+}
+.col-xs-10 {
+  width: 83.33333333%;
+}
+.col-xs-9 {
+  width: 75%;
+}
+.col-xs-8 {
+  width: 66.66666667%;
+}
+.col-xs-7 {
+  width: 58.33333333%;
+}
+.col-xs-6 {
+  width: 50%;
+}
+.col-xs-5 {
+  width: 41.66666667%;
+}
+.col-xs-4 {
+  width: 33.33333333%;
+}
+.col-xs-3 {
+  width: 25%;
+}
+.col-xs-2 {
+  width: 16.66666667%;
+}
+.col-xs-1 {
+  width: 8.33333333%;
+}
+.col-xs-pull-12 {
+  right: 100%;
+}
+.col-xs-pull-11 {
+  right: 91.66666667%;
+}
+.col-xs-pull-10 {
+  right: 83.33333333%;
+}
+.col-xs-pull-9 {
+  right: 75%;
+}
+.col-xs-pull-8 {
+  right: 66.66666667%;
+}
+.col-xs-pull-7 {
+  right: 58.33333333%;
+}
+.col-xs-pull-6 {
+  right: 50%;
+}
+.col-xs-pull-5 {
+  right: 41.66666667%;
+}
+.col-xs-pull-4 {
+  right: 33.33333333%;
+}
+.col-xs-pull-3 {
+  right: 25%;
+}
+.col-xs-pull-2 {
+  right: 16.66666667%;
+}
+.col-xs-pull-1 {
+  right: 8.33333333%;
+}
+.col-xs-pull-0 {
+  right: auto;
+}
+.col-xs-push-12 {
+  left: 100%;
+}
+.col-xs-push-11 {
+  left: 91.66666667%;
+}
+.col-xs-push-10 {
+  left: 83.33333333%;
+}
+.col-xs-push-9 {
+  left: 75%;
+}
+.col-xs-push-8 {
+  left: 66.66666667%;
+}
+.col-xs-push-7 {
+  left: 58.33333333%;
+}
+.col-xs-push-6 {
+  left: 50%;
+}
+.col-xs-push-5 {
+  left: 41.66666667%;
+}
+.col-xs-push-4 {
+  left: 33.33333333%;
+}
+.col-xs-push-3 {
+  left: 25%;
+}
+.col-xs-push-2 {
+  left: 16.66666667%;
+}
+.col-xs-push-1 {
+  left: 8.33333333%;
+}
+.col-xs-push-0 {
+  left: auto;
+}
+.col-xs-offset-12 {
+  margin-left: 100%;
+}
+.col-xs-offset-11 {
+  margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+  margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+.col-xs-offset-8 {
+  margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+  margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+.col-xs-offset-5 {
+  margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+  margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+.col-xs-offset-2 {
+  margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+  margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+    float: left;
+  }
+  .col-sm-12 {
+    width: 100%;
+  }
+  .col-sm-11 {
+    width: 91.66666667%;
+  }
+  .col-sm-10 {
+    width: 83.33333333%;
+  }
+  .col-sm-9 {
+    width: 75%;
+  }
+  .col-sm-8 {
+    width: 66.66666667%;
+  }
+  .col-sm-7 {
+    width: 58.33333333%;
+  }
+  .col-sm-6 {
+    width: 50%;
+  }
+  .col-sm-5 {
+    width: 41.66666667%;
+  }
+  .col-sm-4 {
+    width: 33.33333333%;
+  }
+  .col-sm-3 {
+    width: 25%;
+  }
+  .col-sm-2 {
+    width: 16.66666667%;
+  }
+  .col-sm-1 {
+    width: 8.33333333%;
+  }
+  .col-sm-pull-12 {
+    right: 100%;
+  }
+  .col-sm-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-sm-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-sm-pull-9 {
+    right: 75%;
+  }
+  .col-sm-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-sm-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-sm-pull-6 {
+    right: 50%;
+  }
+  .col-sm-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-sm-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-sm-pull-3 {
+    right: 25%;
+  }
+  .col-sm-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-sm-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-sm-pull-0 {
+    right: auto;
+  }
+  .col-sm-push-12 {
+    left: 100%;
+  }
+  .col-sm-push-11 {
+    left: 91.66666667%;
+  }
+  .col-sm-push-10 {
+    left: 83.33333333%;
+  }
+  .col-sm-push-9 {
+    left: 75%;
+  }
+  .col-sm-push-8 {
+    left: 66.66666667%;
+  }
+  .col-sm-push-7 {
+    left: 58.33333333%;
+  }
+  .col-sm-push-6 {
+    left: 50%;
+  }
+  .col-sm-push-5 {
+    left: 41.66666667%;
+  }
+  .col-sm-push-4 {
+    left: 33.33333333%;
+  }
+  .col-sm-push-3 {
+    left: 25%;
+  }
+  .col-sm-push-2 {
+    left: 16.66666667%;
+  }
+  .col-sm-push-1 {
+    left: 8.33333333%;
+  }
+  .col-sm-push-0 {
+    left: auto;
+  }
+  .col-sm-offset-12 {
+    margin-left: 100%;
+  }
+  .col-sm-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-sm-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .col-sm-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-sm-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .col-sm-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-sm-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .col-sm-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-sm-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-sm-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left;
+  }
+  .col-md-12 {
+    width: 100%;
+  }
+  .col-md-11 {
+    width: 91.66666667%;
+  }
+  .col-md-10 {
+    width: 83.33333333%;
+  }
+  .col-md-9 {
+    width: 75%;
+  }
+  .col-md-8 {
+    width: 66.66666667%;
+  }
+  .col-md-7 {
+    width: 58.33333333%;
+  }
+  .col-md-6 {
+    width: 50%;
+  }
+  .col-md-5 {
+    width: 41.66666667%;
+  }
+  .col-md-4 {
+    width: 33.33333333%;
+  }
+  .col-md-3 {
+    width: 25%;
+  }
+  .col-md-2 {
+    width: 16.66666667%;
+  }
+  .col-md-1 {
+    width: 8.33333333%;
+  }
+  .col-md-pull-12 {
+    right: 100%;
+  }
+  .col-md-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-md-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-md-pull-9 {
+    right: 75%;
+  }
+  .col-md-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-md-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-md-pull-6 {
+    right: 50%;
+  }
+  .col-md-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-md-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-md-pull-3 {
+    right: 25%;
+  }
+  .col-md-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-md-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-md-pull-0 {
+    right: auto;
+  }
+  .col-md-push-12 {
+    left: 100%;
+  }
+  .col-md-push-11 {
+    left: 91.66666667%;
+  }
+  .col-md-push-10 {
+    left: 83.33333333%;
+  }
+  .col-md-push-9 {
+    left: 75%;
+  }
+  .col-md-push-8 {
+    left: 66.66666667%;
+  }
+  .col-md-push-7 {
+    left: 58.33333333%;
+  }
+  .col-md-push-6 {
+    left: 50%;
+  }
+  .col-md-push-5 {
+    left: 41.66666667%;
+  }
+  .col-md-push-4 {
+    left: 33.33333333%;
+  }
+  .col-md-push-3 {
+    left: 25%;
+  }
+  .col-md-push-2 {
+    left: 16.66666667%;
+  }
+  .col-md-push-1 {
+    left: 8.33333333%;
+  }
+  .col-md-push-0 {
+    left: auto;
+  }
+  .col-md-offset-12 {
+    margin-left: 100%;
+  }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-md-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+    float: left;
+  }
+  .col-lg-12 {
+    width: 100%;
+  }
+  .col-lg-11 {
+    width: 91.66666667%;
+  }
+  .col-lg-10 {
+    width: 83.33333333%;
+  }
+  .col-lg-9 {
+    width: 75%;
+  }
+  .col-lg-8 {
+    width: 66.66666667%;
+  }
+  .col-lg-7 {
+    width: 58.33333333%;
+  }
+  .col-lg-6 {
+    width: 50%;
+  }
+  .col-lg-5 {
+    width: 41.66666667%;
+  }
+  .col-lg-4 {
+    width: 33.33333333%;
+  }
+  .col-lg-3 {
+    width: 25%;
+  }
+  .col-lg-2 {
+    width: 16.66666667%;
+  }
+  .col-lg-1 {
+    width: 8.33333333%;
+  }
+  .col-lg-pull-12 {
+    right: 100%;
+  }
+  .col-lg-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-lg-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-lg-pull-9 {
+    right: 75%;
+  }
+  .col-lg-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-lg-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-lg-pull-6 {
+    right: 50%;
+  }
+  .col-lg-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-lg-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-lg-pull-3 {
+    right: 25%;
+  }
+  .col-lg-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-lg-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-lg-pull-0 {
+    right: auto;
+  }
+  .col-lg-push-12 {
+    left: 100%;
+  }
+  .col-lg-push-11 {
+    left: 91.66666667%;
+  }
+  .col-lg-push-10 {
+    left: 83.33333333%;
+  }
+  .col-lg-push-9 {
+    left: 75%;
+  }
+  .col-lg-push-8 {
+    left: 66.66666667%;
+  }
+  .col-lg-push-7 {
+    left: 58.33333333%;
+  }
+  .col-lg-push-6 {
+    left: 50%;
+  }
+  .col-lg-push-5 {
+    left: 41.66666667%;
+  }
+  .col-lg-push-4 {
+    left: 33.33333333%;
+  }
+  .col-lg-push-3 {
+    left: 25%;
+  }
+  .col-lg-push-2 {
+    left: 16.66666667%;
+  }
+  .col-lg-push-1 {
+    left: 8.33333333%;
+  }
+  .col-lg-push-0 {
+    left: auto;
+  }
+  .col-lg-offset-12 {
+    margin-left: 100%;
+  }
+  .col-lg-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-lg-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .col-lg-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-lg-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .col-lg-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-lg-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .col-lg-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-lg-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-lg-offset-0 {
+    margin-left: 0;
+  }
+}
+table {
+  background-color: transparent;
+}
+caption {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  color: #777;
+  text-align: left;
+}
+th {
+  text-align: left;
+}
+.table {
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.42857143;
+  vertical-align: top;
+  border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+  border-top: 0;
+}
+.table > tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table .table {
+  background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+  padding: 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+  border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+  background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+  background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+  position: static;
+  display: table-column;
+  float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+  position: static;
+  display: table-cell;
+  float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+  background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+  background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+  background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+  background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+  background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc;
+}
+.table-responsive {
+  min-height: .01%;
+  overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #ddd;
+  }
+  .table-responsive > .table {
+    margin-bottom: 0;
+  }
+  .table-responsive > .table > thead > tr > th,
+  .table-responsive > .table > tbody > tr > th,
+  .table-responsive > .table > tfoot > tr > th,
+  .table-responsive > .table > thead > tr > td,
+  .table-responsive > .table > tbody > tr > td,
+  .table-responsive > .table > tfoot > tr > td {
+    white-space: nowrap;
+  }
+  .table-responsive > .table-bordered {
+    border: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:first-child,
+  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+  .table-responsive > .table-bordered > thead > tr > td:first-child,
+  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+    border-left: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:last-child,
+  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+  .table-responsive > .table-bordered > thead > tr > td:last-child,
+  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+    border-right: 0;
+  }
+  .table-responsive > .table-bordered > tbody > tr:last-child > th,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .table-responsive > .table-bordered > tbody > tr:last-child > td,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0;
+  }
+}
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+label {
+  display: inline-block;
+  max-width: 100%;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+input[type="search"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  line-height: normal;
+}
+input[type="file"] {
+  display: block;
+}
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+}
+.form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+  color: #999;
+  opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+  color: #999;
+}
+.form-control::-webkit-input-placeholder {
+  color: #999;
+}
+.form-control::-ms-expand {
+  background-color: transparent;
+  border: 0;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+  background-color: #eee;
+  opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+  cursor: not-allowed;
+}
+textarea.form-control {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"].form-control,
+  input[type="time"].form-control,
+  input[type="datetime-local"].form-control,
+  input[type="month"].form-control {
+    line-height: 34px;
+  }
+  input[type="date"].input-sm,
+  input[type="time"].input-sm,
+  input[type="datetime-local"].input-sm,
+  input[type="month"].input-sm,
+  .input-group-sm input[type="date"],
+  .input-group-sm input[type="time"],
+  .input-group-sm input[type="datetime-local"],
+  .input-group-sm input[type="month"] {
+    line-height: 30px;
+  }
+  input[type="date"].input-lg,
+  input[type="time"].input-lg,
+  input[type="datetime-local"].input-lg,
+  input[type="month"].input-lg,
+  .input-group-lg input[type="date"],
+  .input-group-lg input[type="time"],
+  .input-group-lg input[type="datetime-local"],
+  .input-group-lg input[type="month"] {
+    line-height: 46px;
+  }
+}
+.form-group {
+  margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+  position: relative;
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+  min-height: 20px;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-top: 4px \9;
+  margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+  position: relative;
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+  cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+  cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+  cursor: not-allowed;
+}
+.form-control-static {
+  min-height: 34px;
+  padding-top: 7px;
+  padding-bottom: 7px;
+  margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-sm {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+  height: auto;
+}
+.form-group-sm .form-control {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.form-group-sm select.form-control {
+  height: 30px;
+  line-height: 30px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+  height: auto;
+}
+.form-group-sm .form-control-static {
+  height: 30px;
+  min-height: 32px;
+  padding: 6px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.input-lg {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-lg {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+  height: auto;
+}
+.form-group-lg .form-control {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.form-group-lg select.form-control {
+  height: 46px;
+  line-height: 46px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+  height: auto;
+}
+.form-group-lg .form-control-static {
+  height: 46px;
+  min-height: 38px;
+  padding: 11px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.has-feedback {
+  position: relative;
+}
+.has-feedback .form-control {
+  padding-right: 42.5px;
+}
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+  pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+  width: 46px;
+  height: 46px;
+  line-height: 46px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+  color: #3c763d;
+}
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+  color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+  color: #8a6d3b;
+}
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+  color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+  color: #a94442;
+}
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #a94442;
+}
+.has-error .form-control-feedback {
+  color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+  top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+  top: 0;
+}
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373;
+}
+@media (min-width: 768px) {
+  .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .form-inline .form-control-static {
+    display: inline-block;
+  }
+  .form-inline .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .form-inline .input-group .input-group-addon,
+  .form-inline .input-group .input-group-btn,
+  .form-inline .input-group .form-control {
+    width: auto;
+  }
+  .form-inline .input-group > .form-control {
+    width: 100%;
+  }
+  .form-inline .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio,
+  .form-inline .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio label,
+  .form-inline .checkbox label {
+    padding-left: 0;
+  }
+  .form-inline .radio input[type="radio"],
+  .form-inline .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+  padding-top: 7px;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+  min-height: 27px;
+}
+.form-horizontal .form-group {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    padding-top: 7px;
+    margin-bottom: 0;
+    text-align: right;
+  }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+  right: 15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-lg .control-label {
+    padding-top: 11px;
+    font-size: 18px;
+  }
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-sm .control-label {
+    padding-top: 6px;
+    font-size: 12px;
+  }
+}
+.btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  -ms-touch-action: manipulation;
+      touch-action: manipulation;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+  color: #333;
+  text-decoration: none;
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  opacity: .65;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+  pointer-events: none;
+}
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #8c8c8c;
+}
+.btn-default:hover {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+  color: #333;
+  background-color: #d4d4d4;
+  border-color: #8c8c8c;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  background-image: none;
+}
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus {
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default .badge {
+  color: #fff;
+  background-color: #333;
+}
+.btn-primary {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+  color: #fff;
+  background-color: #286090;
+  border-color: #122b40;
+}
+.btn-primary:hover {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+  color: #fff;
+  background-color: #204d74;
+  border-color: #122b40;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  background-image: none;
+}
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus {
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #255625;
+}
+.btn-success:hover {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+  color: #fff;
+  background-color: #398439;
+  border-color: #255625;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  background-image: none;
+}
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff;
+}
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #1b6d85;
+}
+.btn-info:hover {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+  color: #fff;
+  background-color: #269abc;
+  border-color: #1b6d85;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  background-image: none;
+}
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff;
+}
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #985f0d;
+}
+.btn-warning:hover {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+  color: #fff;
+  background-color: #d58512;
+  border-color: #985f0d;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  background-image: none;
+}
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #fff;
+}
+.btn-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #761c19;
+}
+.btn-danger:hover {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+  color: #fff;
+  background-color: #ac2925;
+  border-color: #761c19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff;
+}
+.btn-link {
+  font-weight: normal;
+  color: #337ab7;
+  border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+  border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #23527c;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+  color: #777;
+  text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity .15s linear;
+       -o-transition: opacity .15s linear;
+          transition: opacity .15s linear;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  display: none;
+}
+.collapse.in {
+  display: block;
+}
+tr.collapse.in {
+  display: table-row;
+}
+tbody.collapse.in {
+  display: table-row-group;
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition-timing-function: ease;
+       -o-transition-timing-function: ease;
+          transition-timing-function: ease;
+  -webkit-transition-duration: .35s;
+       -o-transition-duration: .35s;
+          transition-duration: .35s;
+  -webkit-transition-property: height, visibility;
+       -o-transition-property: height, visibility;
+          transition-property: height, visibility;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px dashed;
+  border-top: 4px solid \9;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle:focus {
+  outline: 0;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  font-size: 14px;
+  text-align: left;
+  list-style: none;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  color: #262626;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #fff;
+  text-decoration: none;
+  background-color: #337ab7;
+  outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.open > a {
+  outline: 0;
+}
+.dropdown-menu-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu-left {
+  right: auto;
+  left: 0;
+}
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: 12px;
+  line-height: 1.42857143;
+  color: #777;
+  white-space: nowrap;
+}
+.dropdown-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 990;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  content: "";
+  border-top: 0;
+  border-bottom: 4px dashed;
+  border-bottom: 4px solid \9;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+  .navbar-right .dropdown-menu-left {
+    right: auto;
+    left: 0;
+  }
+}
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.btn-toolbar {
+  margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+  float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+  margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn .caret {
+  margin-left: 0;
+}
+.btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+  display: table-cell;
+  float: none;
+  width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+  width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+  left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+}
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate;
+}
+.input-group[class*="col-"] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-group .form-control {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0;
+}
+.input-group .form-control:focus {
+  z-index: 3;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.input-group-addon {
+  padding: 6px 12px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1;
+  color: #555;
+  text-align: center;
+  background-color: #eee;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.input-group-addon.input-sm {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+.input-group-addon.input-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+  margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+  border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+.input-group-btn {
+  position: relative;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-group-btn > .btn {
+  position: relative;
+}
+.input-group-btn > .btn + .btn {
+  margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+  z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+  margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+  z-index: 2;
+  margin-left: -1px;
+}
+.nav {
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.nav > li {
+  position: relative;
+  display: block;
+}
+.nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.nav > li.disabled > a {
+  color: #777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+  color: #777;
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+  background-color: #eee;
+  border-color: #337ab7;
+}
+.nav .nav-divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  float: left;
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  margin-right: 2px;
+  line-height: 1.42857143;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+  color: #555;
+  cursor: default;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+  width: 100%;
+  border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+  float: none;
+}
+.nav-tabs.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs.nav-justified > .active > a,
+  .nav-tabs.nav-justified > .active > a:hover,
+  .nav-tabs.nav-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.nav-pills > li {
+  float: left;
+}
+.nav-pills > li > a {
+  border-radius: 4px;
+}
+.nav-pills > li + li {
+  margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+  color: #fff;
+  background-color: #337ab7;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0;
+}
+.nav-justified {
+  width: 100%;
+}
+.nav-justified > li {
+  float: none;
+}
+.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs-justified {
+  border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs-justified > .active > a,
+  .nav-tabs-justified > .active > a:hover,
+  .nav-tabs-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left;
+  }
+}
+.navbar-collapse {
+  padding-right: 15px;
+  padding-left: 15px;
+  overflow-x: visible;
+  -webkit-overflow-scrolling: touch;
+  border-top: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+  overflow-y: auto;
+}
+@media (min-width: 768px) {
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-static-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+  max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    max-height: 200px;
+  }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .container > .navbar-header,
+  .container-fluid > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+}
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .navbar-static-top {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+@media (min-width: 768px) {
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+  border-width: 1px 0 0;
+}
+.navbar-brand {
+  float: left;
+  height: 50px;
+  padding: 15px 15px;
+  font-size: 18px;
+  line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+  text-decoration: none;
+}
+.navbar-brand > img {
+  display: block;
+}
+@media (min-width: 768px) {
+  .navbar > .container .navbar-brand,
+  .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px;
+  }
+}
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-right: 15px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.navbar-toggle:focus {
+  outline: 0;
+}
+.navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px;
+}
+@media (min-width: 768px) {
+  .navbar-toggle {
+    display: none;
+  }
+}
+.navbar-nav {
+  margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px;
+}
+@media (max-width: 767px) {
+  .navbar-nav .open .dropdown-menu {
+    position: static;
+    float: none;
+    width: auto;
+    margin-top: 0;
+    background-color: transparent;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-nav .open .dropdown-menu > li > a,
+  .navbar-nav .open .dropdown-menu .dropdown-header {
+    padding: 5px 15px 5px 25px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a {
+    line-height: 20px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-nav .open .dropdown-menu > li > a:focus {
+    background-image: none;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .navbar-nav > li {
+    float: left;
+  }
+  .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+}
+.navbar-form {
+  padding: 10px 15px;
+  margin-top: 8px;
+  margin-right: -15px;
+  margin-bottom: 8px;
+  margin-left: -15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+  .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control-static {
+    display: inline-block;
+  }
+  .navbar-form .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .navbar-form .input-group .input-group-addon,
+  .navbar-form .input-group .input-group-btn,
+  .navbar-form .input-group .form-control {
+    width: auto;
+  }
+  .navbar-form .input-group > .form-control {
+    width: 100%;
+  }
+  .navbar-form .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio,
+  .navbar-form .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio label,
+  .navbar-form .checkbox label {
+    padding-left: 0;
+  }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+@media (max-width: 767px) {
+  .navbar-form .form-group {
+    margin-bottom: 5px;
+  }
+  .navbar-form .form-group:last-child {
+    margin-bottom: 0;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-form {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+}
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  margin-bottom: 0;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+  margin-top: 14px;
+  margin-bottom: 14px;
+}
+.navbar-text {
+  margin-top: 15px;
+  margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+  .navbar-text {
+    float: left;
+    margin-right: 15px;
+    margin-left: 15px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+    margin-right: -15px;
+  }
+  .navbar-right ~ .navbar-right {
+    margin-right: 0;
+  }
+}
+.navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+  color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent;
+}
+.navbar-default .navbar-text {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+  color: #333;
+  background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+  color: #ccc;
+  background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+  border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+  background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+  background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+    color: #777;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #333;
+    background-color: transparent;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #555;
+    background-color: #e7e7e7;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #ccc;
+    background-color: transparent;
+  }
+}
+.navbar-default .navbar-link {
+  color: #777;
+}
+.navbar-default .navbar-link:hover {
+  color: #333;
+}
+.navbar-default .btn-link {
+  color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+  color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+  color: #ccc;
+}
+.navbar-inverse {
+  background-color: #222;
+  border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+  border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+  background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+  border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+@media (max-width: 767px) {
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #9d9d9d;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #fff;
+    background-color: transparent;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #444;
+    background-color: transparent;
+  }
+}
+.navbar-inverse .navbar-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+  color: #fff;
+}
+.navbar-inverse .btn-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+  color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+  color: #444;
+}
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+}
+.breadcrumb > li {
+  display: inline-block;
+}
+.breadcrumb > li + li:before {
+  padding: 0 5px;
+  color: #ccc;
+  content: "/\00a0";
+}
+.breadcrumb > .active {
+  color: #777;
+}
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px;
+}
+.pagination > li {
+  display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  margin-left: -1px;
+  line-height: 1.42857143;
+  color: #337ab7;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+  margin-left: 0;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+  z-index: 2;
+  color: #23527c;
+  background-color: #eee;
+  border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+  z-index: 3;
+  color: #fff;
+  cursor: default;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+  border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.pager {
+  padding-left: 0;
+  margin: 20px 0;
+  text-align: center;
+  list-style: none;
+}
+.pager li {
+  display: inline;
+}
+.pager li > a,
+.pager li > span {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+  float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+  float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+}
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.label:empty {
+  display: none;
+}
+.btn .label {
+  position: relative;
+  top: -1px;
+}
+.label-default {
+  background-color: #777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+  background-color: #5e5e5e;
+}
+.label-primary {
+  background-color: #337ab7;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+  background-color: #286090;
+}
+.label-success {
+  background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+  background-color: #449d44;
+}
+.label-info {
+  background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+  background-color: #31b0d5;
+}
+.label-warning {
+  background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+  background-color: #ec971f;
+}
+.label-danger {
+  background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+  background-color: #c9302c;
+}
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-color: #777;
+  border-radius: 10px;
+}
+.badge:empty {
+  display: none;
+}
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+  top: 0;
+  padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.list-group-item > .badge {
+  float: right;
+}
+.list-group-item > .badge + .badge {
+  margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
+.jumbotron {
+  padding-top: 30px;
+  padding-bottom: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+  color: inherit;
+}
+.jumbotron p {
+  margin-bottom: 15px;
+  font-size: 21px;
+  font-weight: 200;
+}
+.jumbotron > hr {
+  border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+  padding-right: 15px;
+  padding-left: 15px;
+  border-radius: 6px;
+}
+.jumbotron .container {
+  max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+  .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px;
+  }
+  .container .jumbotron,
+  .container-fluid .jumbotron {
+    padding-right: 60px;
+    padding-left: 60px;
+  }
+  .jumbotron h1,
+  .jumbotron .h1 {
+    font-size: 63px;
+  }
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  margin-bottom: 20px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: border .2s ease-in-out;
+       -o-transition: border .2s ease-in-out;
+          transition: border .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+  margin-right: auto;
+  margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: #337ab7;
+}
+.thumbnail .caption {
+  padding: 9px;
+  color: #333;
+}
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.alert h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.alert .alert-link {
+  font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+  margin-bottom: 0;
+}
+.alert > p + p {
+  margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+  padding-right: 35px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  color: inherit;
+}
+.alert-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success hr {
+  border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+  color: #2b542c;
+}
+.alert-info {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info hr {
+  border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+  color: #245269;
+}
+.alert-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.alert-warning hr {
+  border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+  color: #66512c;
+}
+.alert-danger {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.alert-danger hr {
+  border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+  color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-o-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.progress {
+  height: 20px;
+  margin-bottom: 20px;
+  overflow: hidden;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+  float: left;
+  width: 0;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  color: #fff;
+  text-align: center;
+  background-color: #337ab7;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+  -webkit-transition: width .6s ease;
+       -o-transition: width .6s ease;
+          transition: width .6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+          background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+       -o-animation: progress-bar-stripes 2s linear infinite;
+          animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+  background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+  background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+  background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+  background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.media {
+  margin-top: 15px;
+}
+.media:first-child {
+  margin-top: 0;
+}
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+.media-body {
+  width: 10000px;
+}
+.media-object {
+  display: block;
+}
+.media-object.img-thumbnail {
+  max-width: none;
+}
+.media-right,
+.media > .pull-right {
+  padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+  padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+  display: table-cell;
+  vertical-align: top;
+}
+.media-middle {
+  vertical-align: middle;
+}
+.media-bottom {
+  vertical-align: bottom;
+}
+.media-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
+.list-group {
+  padding-left: 0;
+  margin-bottom: 20px;
+}
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  margin-bottom: -1px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+a.list-group-item,
+button.list-group-item {
+  color: #555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+  color: #333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+  color: #555;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+button.list-group-item {
+  width: 100%;
+  text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #eee;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+  color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+  color: #777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+  color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+  color: #c7ddef;
+}
+.list-group-item-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+  color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+  color: #3c763d;
+  background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+  color: #fff;
+  background-color: #3c763d;
+  border-color: #3c763d;
+}
+.list-group-item-info {
+  color: #31708f;
+  background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+  color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+  color: #31708f;
+  background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+  color: #fff;
+  background-color: #31708f;
+  border-color: #31708f;
+}
+.list-group-item-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+  color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+  color: #8a6d3b;
+  background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+  color: #fff;
+  background-color: #8a6d3b;
+  border-color: #8a6d3b;
+}
+.list-group-item-danger {
+  color: #a94442;
+  background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+  color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+  color: #a94442;
+  background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+  color: #fff;
+  background-color: #a94442;
+  border-color: #a94442;
+}
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
+.panel {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+  padding: 15px;
+}
+.panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+  color: inherit;
+}
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 16px;
+  color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+  color: inherit;
+}
+.panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+  margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+  border-width: 1px 0;
+  border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+  border-top: 0;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+  border-bottom: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0;
+}
+.list-group + .panel-footer {
+  border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+  margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+  border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+  border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+  border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+  border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+  border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+  border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+  border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+  border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+  border-bottom: 0;
+}
+.panel > .table-responsive {
+  margin-bottom: 0;
+  border: 0;
+}
+.panel-group {
+  margin-bottom: 20px;
+}
+.panel-group .panel {
+  margin-bottom: 0;
+  border-radius: 4px;
+}
+.panel-group .panel + .panel {
+  margin-top: 5px;
+}
+.panel-group .panel-heading {
+  border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+  border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+  border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+  border-bottom: 1px solid #ddd;
+}
+.panel-default {
+  border-color: #ddd;
+}
+.panel-default > .panel-heading {
+  color: #333;
+  background-color: #f5f5f5;
+  border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+  color: #f5f5f5;
+  background-color: #333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd;
+}
+.panel-primary {
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #337ab7;
+}
+.panel-success {
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+  color: #dff0d8;
+  background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #d6e9c6;
+}
+.panel-info {
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+  color: #d9edf7;
+  background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #bce8f1;
+}
+.panel-warning {
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+  color: #fcf8e3;
+  background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #faebcc;
+}
+.panel-danger {
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+  color: #f2dede;
+  background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+  position: relative;
+  display: block;
+  height: 0;
+  padding: 0;
+  overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 0;
+}
+.embed-responsive-16by9 {
+  padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+  padding-bottom: 75%;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+  padding: 24px;
+  border-radius: 6px;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: 3px;
+}
+.close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=20);
+  opacity: .2;
+}
+.close:hover,
+.close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+button.close {
+  -webkit-appearance: none;
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+}
+.modal-open {
+  overflow: hidden;
+}
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1050;
+  display: none;
+  overflow: hidden;
+  -webkit-overflow-scrolling: touch;
+  outline: 0;
+}
+.modal.fade .modal-dialog {
+  -webkit-transition: -webkit-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
+          transition:         transform .3s ease-out;
+  -webkit-transform: translate(0, -25%);
+      -ms-transform: translate(0, -25%);
+       -o-transform: translate(0, -25%);
+          transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+      -ms-transform: translate(0, 0);
+       -o-transform: translate(0, 0);
+          transform: translate(0, 0);
+}
+.modal-open .modal {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 10px;
+}
+.modal-content {
+  position: relative;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  outline: 0;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.modal-backdrop.in {
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.modal-header {
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+  margin-top: -2px;
+}
+.modal-title {
+  margin: 0;
+  line-height: 1.42857143;
+}
+.modal-body {
+  position: relative;
+  padding: 15px;
+}
+.modal-footer {
+  padding: 15px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+  margin-bottom: 0;
+  margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+@media (min-width: 768px) {
+  .modal-dialog {
+    width: 600px;
+    margin: 30px auto;
+  }
+  .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+  }
+  .modal-sm {
+    width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 12px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  filter: alpha(opacity=0);
+  opacity: 0;
+
+  line-break: auto;
+}
+.tooltip.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.tooltip.top {
+  padding: 5px 0;
+  margin-top: -3px;
+}
+.tooltip.right {
+  padding: 0 5px;
+  margin-left: 3px;
+}
+.tooltip.bottom {
+  padding: 5px 0;
+  margin-top: 3px;
+}
+.tooltip.left {
+  padding: 0 5px;
+  margin-left: -3px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  background-color: #000;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+  right: 5px;
+  bottom: 0;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
+  line-break: auto;
+}
+.popover.top {
+  margin-top: -10px;
+}
+.popover.right {
+  margin-left: 10px;
+}
+.popover.bottom {
+  margin-top: 10px;
+}
+.popover.left {
+  margin-left: -10px;
+}
+.popover-title {
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.popover-content {
+  padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.popover > .arrow {
+  border-width: 11px;
+}
+.popover > .arrow:after {
+  content: "";
+  border-width: 10px;
+}
+.popover.top > .arrow {
+  bottom: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-color: #999;
+  border-top-color: rgba(0, 0, 0, .25);
+  border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+  bottom: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-color: #fff;
+  border-bottom-width: 0;
+}
+.popover.right > .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-right-color: #999;
+  border-right-color: rgba(0, 0, 0, .25);
+  border-left-width: 0;
+}
+.popover.right > .arrow:after {
+  bottom: -10px;
+  left: 1px;
+  content: " ";
+  border-right-color: #fff;
+  border-left-width: 0;
+}
+.popover.bottom > .arrow {
+  top: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999;
+  border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+  top: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-width: 0;
+  border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999;
+  border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+  right: 1px;
+  bottom: -10px;
+  content: " ";
+  border-right-width: 0;
+  border-left-color: #fff;
+}
+.carousel {
+  position: relative;
+}
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner > .item {
+  position: relative;
+  display: none;
+  -webkit-transition: .6s ease-in-out left;
+       -o-transition: .6s ease-in-out left;
+          transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+  .carousel-inner > .item {
+    -webkit-transition: -webkit-transform .6s ease-in-out;
+         -o-transition:      -o-transform .6s ease-in-out;
+            transition:         transform .6s ease-in-out;
+
+    -webkit-backface-visibility: hidden;
+            backface-visibility: hidden;
+    -webkit-perspective: 1000px;
+            perspective: 1000px;
+  }
+  .carousel-inner > .item.next,
+  .carousel-inner > .item.active.right {
+    left: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+            transform: translate3d(100%, 0, 0);
+  }
+  .carousel-inner > .item.prev,
+  .carousel-inner > .item.active.left {
+    left: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+            transform: translate3d(-100%, 0, 0);
+  }
+  .carousel-inner > .item.next.left,
+  .carousel-inner > .item.prev.right,
+  .carousel-inner > .item.active {
+    left: 0;
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+  }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  display: block;
+}
+.carousel-inner > .active {
+  left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel-inner > .next {
+  left: 100%;
+}
+.carousel-inner > .prev {
+  left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+  left: 0;
+}
+.carousel-inner > .active.left {
+  left: -100%;
+}
+.carousel-inner > .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 15%;
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+  background-color: rgba(0, 0, 0, 0);
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.carousel-control.left {
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control.right {
+  right: 0;
+  left: auto;
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+  color: #fff;
+  text-decoration: none;
+  filter: alpha(opacity=90);
+  outline: 0;
+  opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+  position: absolute;
+  top: 50%;
+  z-index: 5;
+  display: inline-block;
+  margin-top: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+  left: 50%;
+  margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+  right: 50%;
+  margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  font-family: serif;
+  line-height: 1;
+}
+.carousel-control .icon-prev:before {
+  content: '\2039';
+}
+.carousel-control .icon-next:before {
+  content: '\203a';
+}
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  padding-left: 0;
+  margin-left: -30%;
+  text-align: center;
+  list-style: none;
+}
+.carousel-indicators li {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 1px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #000 \9;
+  background-color: rgba(0, 0, 0, 0);
+  border: 1px solid #fff;
+  border-radius: 10px;
+}
+.carousel-indicators .active {
+  width: 12px;
+  height: 12px;
+  margin: 0;
+  background-color: #fff;
+}
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+  text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -10px;
+    font-size: 30px;
+  }
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .icon-prev {
+    margin-left: -10px;
+  }
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-next {
+    margin-right: -10px;
+  }
+  .carousel-caption {
+    right: 20%;
+    left: 20%;
+    padding-bottom: 30px;
+  }
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-header:before,
+.modal-header:after,
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: " ";
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-header:after,
+.modal-footer:after {
+  clear: both;
+}
+.center-block {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.hidden {
+  display: none !important;
+}
+.affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+  display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important;
+  }
+  table.visible-xs {
+    display: table !important;
+  }
+  tr.visible-xs {
+    display: table-row !important;
+  }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-block {
+    display: block !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important;
+  }
+  table.visible-sm {
+    display: table !important;
+  }
+  tr.visible-sm {
+    display: table-row !important;
+  }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important;
+  }
+  table.visible-md {
+    display: table !important;
+  }
+  tr.visible-md {
+    display: table-row !important;
+  }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important;
+  }
+  table.visible-lg {
+    display: table !important;
+  }
+  tr.visible-lg {
+    display: table-row !important;
+  }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-block {
+    display: block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important;
+  }
+}
+.visible-print {
+  display: none !important;
+}
+@media print {
+  .visible-print {
+    display: block !important;
+  }
+  table.visible-print {
+    display: table !important;
+  }
+  tr.visible-print {
+    display: table-row !important;
+  }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important;
+  }
+}
+.visible-print-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-block {
+    display: block !important;
+  }
+}
+.visible-print-inline {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline {
+    display: inline !important;
+  }
+}
+.visible-print-inline-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline-block {
+    display: inline-block !important;
+  }
+}
+@media print {
+  .hidden-print {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap.css.map */
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.css.map b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.css.map
new file mode 100644
index 0000000..09f8cda
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;;;;;;;;;;;;;EAaE,eAAA;CDjBD;ACyBD;;;;EAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACgED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgID;;;;EAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;;;;;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKD;;;;EAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,iBAAA;CH8O9C;AG7OmC;EAAW,iBAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EAAW,iBAAA;CH4tB9C;AG3tBmC;EAAW,iBAAA;CH8tB9C;AG7tBmC;EAAW,iBAAA;CHguB9C;AG/tBmC;EAAW,iBAAA;CHkuB9C;AGjuBmC;EAAW,iBAAA;CHouB9C;AGnuBmC;EAAW,iBAAA;CHsuB9C;AGruBmC;EAAW,iBAAA;CHwuB9C;AGvuBmC;EAAW,iBAAA;CH0uB9C;AGzuBmC;EAAW,iBAAA;CH4uB9C;AG3uBmC;EAAW,iBAAA;CH8uB9C;AG7uBmC;EAAW,iBAAA;CHgvB9C;AIthCD;ECgEE,+BAAA;EACG,4BAAA;EACK,uBAAA;CLy9BT;AIxhCD;;EC6DE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL+9BT;AIthCD;EACE,gBAAA;EACA,8CAAA;CJwhCD;AIrhCD;EACE,4DAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;CJuhCD;AInhCD;;;;EAIE,qBAAA;EACA,mBAAA;EACA,qBAAA;CJqhCD;AI/gCD;EACE,eAAA;EACA,sBAAA;CJihCD;AI/gCC;;EAEE,eAAA;EACA,2BAAA;CJihCH;AI9gCC;EErDA,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNqkCD;AIxgCD;EACE,UAAA;CJ0gCD;AIpgCD;EACE,uBAAA;CJsgCD;AIlgCD;;;;;EGvEE,eAAA;EACA,gBAAA;EACA,aAAA;CPglCD;AItgCD;EACE,mBAAA;CJwgCD;AIlgCD;EACE,aAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EC6FA,yCAAA;EACK,oCAAA;EACG,iCAAA;EEvLR,sBAAA;EACA,gBAAA;EACA,aAAA;CPgmCD;AIlgCD;EACE,mBAAA;CJogCD;AI9/BD;EACE,iBAAA;EACA,oBAAA;EACA,UAAA;EACA,8BAAA;CJggCD;AIx/BD;EACE,mBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA;EACA,iBAAA;EACA,uBAAA;EACA,UAAA;CJ0/BD;AIl/BC;;EAEE,iBAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;CJo/BH;AIz+BD;EACE,gBAAA;CJ2+BD;AQloCD;;;;;;;;;;;;EAEE,qBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;CR8oCD;AQnpCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,oBAAA;EACA,eAAA;EACA,eAAA;CRoqCH;AQhqCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRqqCD;AQzqCD;;;;;;;;;;;;EAQI,eAAA;CR+qCH;AQ5qCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRirCD;AQrrCD;;;;;;;;;;;;EAQI,eAAA;CR2rCH;AQvrCD;;EAAU,gBAAA;CR2rCT;AQ1rCD;;EAAU,gBAAA;CR8rCT;AQ7rCD;;EAAU,gBAAA;CRisCT;AQhsCD;;EAAU,gBAAA;CRosCT;AQnsCD;;EAAU,gBAAA;CRusCT;AQtsCD;;EAAU,gBAAA;CR0sCT;AQpsCD;EACE,iBAAA;CRssCD;AQnsCD;EACE,oBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;CRqsCD;AQhsCD;EAwOA;IA1OI,gBAAA;GRssCD;CACF;AQ9rCD;;EAEE,eAAA;CRgsCD;AQ7rCD;;EAEE,0BAAA;EACA,cAAA;CR+rCD;AQ3rCD;EAAuB,iBAAA;CR8rCtB;AQ7rCD;EAAuB,kBAAA;CRgsCtB;AQ/rCD;EAAuB,mBAAA;CRksCtB;AQjsCD;EAAuB,oBAAA;CRosCtB;AQnsCD;EAAuB,oBAAA;CRssCtB;AQnsCD;EAAuB,0BAAA;CRssCtB;AQrsCD;EAAuB,0BAAA;CRwsCtB;AQvsCD;EAAuB,2BAAA;CR0sCtB;AQvsCD;EACE,eAAA;CRysCD;AQvsCD;ECrGE,eAAA;CT+yCD;AS9yCC;;EAEE,eAAA;CTgzCH;AQ3sCD;ECxGE,eAAA;CTszCD;ASrzCC;;EAEE,eAAA;CTuzCH;AQ/sCD;EC3GE,eAAA;CT6zCD;AS5zCC;;EAEE,eAAA;CT8zCH;AQntCD;EC9GE,eAAA;CTo0CD;ASn0CC;;EAEE,eAAA;CTq0CH;AQvtCD;ECjHE,eAAA;CT20CD;AS10CC;;EAEE,eAAA;CT40CH;AQvtCD;EAGE,YAAA;EE3HA,0BAAA;CVm1CD;AUl1CC;;EAEE,0BAAA;CVo1CH;AQztCD;EE9HE,0BAAA;CV01CD;AUz1CC;;EAEE,0BAAA;CV21CH;AQ7tCD;EEjIE,0BAAA;CVi2CD;AUh2CC;;EAEE,0BAAA;CVk2CH;AQjuCD;EEpIE,0BAAA;CVw2CD;AUv2CC;;EAEE,0BAAA;CVy2CH;AQruCD;EEvIE,0BAAA;CV+2CD;AU92CC;;EAEE,0BAAA;CVg3CH;AQpuCD;EACE,oBAAA;EACA,oBAAA;EACA,iCAAA;CRsuCD;AQ9tCD;;EAEE,cAAA;EACA,oBAAA;CRguCD;AQnuCD;;;;EAMI,iBAAA;CRmuCH;AQ5tCD;EACE,gBAAA;EACA,iBAAA;CR8tCD;AQ1tCD;EALE,gBAAA;EACA,iBAAA;EAMA,kBAAA;CR6tCD;AQ/tCD;EAKI,sBAAA;EACA,kBAAA;EACA,mBAAA;CR6tCH;AQxtCD;EACE,cAAA;EACA,oBAAA;CR0tCD;AQxtCD;;EAEE,wBAAA;CR0tCD;AQxtCD;EACE,kBAAA;CR0tCD;AQxtCD;EACE,eAAA;CR0tCD;AQjsCD;EA6EA;IAvFM,YAAA;IACA,aAAA;IACA,YAAA;IACA,kBAAA;IGtNJ,iBAAA;IACA,wBAAA;IACA,oBAAA;GXs6CC;EQ9nCH;IAhFM,mBAAA;GRitCH;CACF;AQxsCD;;EAGE,aAAA;EACA,kCAAA;CRysCD;AQvsCD;EACE,eAAA;EA9IqB,0BAAA;CRw1CtB;AQrsCD;EACE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,+BAAA;CRusCD;AQlsCG;;;EACE,iBAAA;CRssCL;AQhtCD;;;EAmBI,eAAA;EACA,eAAA;EACA,wBAAA;EACA,eAAA;CRksCH;AQhsCG;;;EACE,uBAAA;CRosCL;AQ5rCD;;EAEE,oBAAA;EACA,gBAAA;EACA,gCAAA;EACA,eAAA;EACA,kBAAA;CR8rCD;AQxrCG;;;;;;EAAW,YAAA;CRgsCd;AQ/rCG;;;;;;EACE,uBAAA;CRssCL;AQhsCD;EACE,oBAAA;EACA,mBAAA;EACA,wBAAA;CRksCD;AYx+CD;;;;EAIE,+DAAA;CZ0+CD;AYt+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CZw+CD;AYp+CD;EACE,iBAAA;EACA,eAAA;EACA,YAAA;EACA,uBAAA;EACA,mBAAA;EACA,uDAAA;UAAA,+CAAA;CZs+CD;AY5+CD;EASI,WAAA;EACA,gBAAA;EACA,kBAAA;EACA,yBAAA;UAAA,iBAAA;CZs+CH;AYj+CD;EACE,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;CZm+CD;AY9+CD;EAeI,WAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,iBAAA;CZk+CH;AY79CD;EACE,kBAAA;EACA,mBAAA;CZ+9CD;AazhDD;ECHE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;Cd+hDD;AazhDC;EAqEF;IAvEI,aAAA;Gb+hDD;CACF;Aa3hDC;EAkEF;IApEI,aAAA;GbiiDD;CACF;Aa7hDD;EA+DA;IAjEI,cAAA;GbmiDD;CACF;Aa1hDD;ECvBE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;CdojDD;AavhDD;ECvBE,mBAAA;EACA,oBAAA;CdijDD;AejjDG;EACE,mBAAA;EAEA,gBAAA;EAEA,mBAAA;EACA,oBAAA;CfijDL;AejiDG;EACE,YAAA;CfmiDL;Ae5hDC;EACE,YAAA;Cf8hDH;Ae/hDC;EACE,oBAAA;CfiiDH;AeliDC;EACE,oBAAA;CfoiDH;AeriDC;EACE,WAAA;CfuiDH;AexiDC;EACE,oBAAA;Cf0iDH;Ae3iDC;EACE,oBAAA;Cf6iDH;Ae9iDC;EACE,WAAA;CfgjDH;AejjDC;EACE,oBAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,WAAA;CfyjDH;Ae1jDC;EACE,oBAAA;Cf4jDH;Ae7jDC;EACE,mBAAA;Cf+jDH;AejjDC;EACE,YAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,oBAAA;CfyjDH;Ae1jDC;EACE,WAAA;Cf4jDH;Ae7jDC;EACE,oBAAA;Cf+jDH;AehkDC;EACE,oBAAA;CfkkDH;AenkDC;EACE,WAAA;CfqkDH;AetkDC;EACE,oBAAA;CfwkDH;AezkDC;EACE,oBAAA;Cf2kDH;Ae5kDC;EACE,WAAA;Cf8kDH;Ae/kDC;EACE,oBAAA;CfilDH;AellDC;EACE,mBAAA;CfolDH;AehlDC;EACE,YAAA;CfklDH;AelmDC;EACE,WAAA;CfomDH;AermDC;EACE,mBAAA;CfumDH;AexmDC;EACE,mBAAA;Cf0mDH;Ae3mDC;EACE,UAAA;Cf6mDH;Ae9mDC;EACE,mBAAA;CfgnDH;AejnDC;EACE,mBAAA;CfmnDH;AepnDC;EACE,UAAA;CfsnDH;AevnDC;EACE,mBAAA;CfynDH;Ae1nDC;EACE,mBAAA;Cf4nDH;Ae7nDC;EACE,UAAA;Cf+nDH;AehoDC;EACE,mBAAA;CfkoDH;AenoDC;EACE,kBAAA;CfqoDH;AejoDC;EACE,WAAA;CfmoDH;AernDC;EACE,kBAAA;CfunDH;AexnDC;EACE,0BAAA;Cf0nDH;Ae3nDC;EACE,0BAAA;Cf6nDH;Ae9nDC;EACE,iBAAA;CfgoDH;AejoDC;EACE,0BAAA;CfmoDH;AepoDC;EACE,0BAAA;CfsoDH;AevoDC;EACE,iBAAA;CfyoDH;Ae1oDC;EACE,0BAAA;Cf4oDH;Ae7oDC;EACE,0BAAA;Cf+oDH;AehpDC;EACE,iBAAA;CfkpDH;AenpDC;EACE,0BAAA;CfqpDH;AetpDC;EACE,yBAAA;CfwpDH;AezpDC;EACE,gBAAA;Cf2pDH;Aa3pDD;EElCI;IACE,YAAA;GfgsDH;EezrDD;IACE,YAAA;Gf2rDD;Ee5rDD;IACE,oBAAA;Gf8rDD;Ee/rDD;IACE,oBAAA;GfisDD;EelsDD;IACE,WAAA;GfosDD;EersDD;IACE,oBAAA;GfusDD;EexsDD;IACE,oBAAA;Gf0sDD;Ee3sDD;IACE,WAAA;Gf6sDD;Ee9sDD;IACE,oBAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,WAAA;GfstDD;EevtDD;IACE,oBAAA;GfytDD;Ee1tDD;IACE,mBAAA;Gf4tDD;Ee9sDD;IACE,YAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,oBAAA;GfstDD;EevtDD;IACE,WAAA;GfytDD;Ee1tDD;IACE,oBAAA;Gf4tDD;Ee7tDD;IACE,oBAAA;Gf+tDD;EehuDD;IACE,WAAA;GfkuDD;EenuDD;IACE,oBAAA;GfquDD;EetuDD;IACE,oBAAA;GfwuDD;EezuDD;IACE,WAAA;Gf2uDD;Ee5uDD;IACE,oBAAA;Gf8uDD;Ee/uDD;IACE,mBAAA;GfivDD;Ee7uDD;IACE,YAAA;Gf+uDD;Ee/vDD;IACE,WAAA;GfiwDD;EelwDD;IACE,mBAAA;GfowDD;EerwDD;IACE,mBAAA;GfuwDD;EexwDD;IACE,UAAA;Gf0wDD;Ee3wDD;IACE,mBAAA;Gf6wDD;Ee9wDD;IACE,mBAAA;GfgxDD;EejxDD;IACE,UAAA;GfmxDD;EepxDD;IACE,mBAAA;GfsxDD;EevxDD;IACE,mBAAA;GfyxDD;Ee1xDD;IACE,UAAA;Gf4xDD;Ee7xDD;IACE,mBAAA;Gf+xDD;EehyDD;IACE,kBAAA;GfkyDD;Ee9xDD;IACE,WAAA;GfgyDD;EelxDD;IACE,kBAAA;GfoxDD;EerxDD;IACE,0BAAA;GfuxDD;EexxDD;IACE,0BAAA;Gf0xDD;Ee3xDD;IACE,iBAAA;Gf6xDD;Ee9xDD;IACE,0BAAA;GfgyDD;EejyDD;IACE,0BAAA;GfmyDD;EepyDD;IACE,iBAAA;GfsyDD;EevyDD;IACE,0BAAA;GfyyDD;Ee1yDD;IACE,0BAAA;Gf4yDD;Ee7yDD;IACE,iBAAA;Gf+yDD;EehzDD;IACE,0BAAA;GfkzDD;EenzDD;IACE,yBAAA;GfqzDD;EetzDD;IACE,gBAAA;GfwzDD;CACF;AahzDD;EE3CI;IACE,YAAA;Gf81DH;Eev1DD;IACE,YAAA;Gfy1DD;Ee11DD;IACE,oBAAA;Gf41DD;Ee71DD;IACE,oBAAA;Gf+1DD;Eeh2DD;IACE,WAAA;Gfk2DD;Een2DD;IACE,oBAAA;Gfq2DD;Eet2DD;IACE,oBAAA;Gfw2DD;Eez2DD;IACE,WAAA;Gf22DD;Ee52DD;IACE,oBAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,WAAA;Gfo3DD;Eer3DD;IACE,oBAAA;Gfu3DD;Eex3DD;IACE,mBAAA;Gf03DD;Ee52DD;IACE,YAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,oBAAA;Gfo3DD;Eer3DD;IACE,WAAA;Gfu3DD;Eex3DD;IACE,oBAAA;Gf03DD;Ee33DD;IACE,oBAAA;Gf63DD;Ee93DD;IACE,WAAA;Gfg4DD;Eej4DD;IACE,oBAAA;Gfm4DD;Eep4DD;IACE,oBAAA;Gfs4DD;Eev4DD;IACE,WAAA;Gfy4DD;Ee14DD;IACE,oBAAA;Gf44DD;Ee74DD;IACE,mBAAA;Gf+4DD;Ee34DD;IACE,YAAA;Gf64DD;Ee75DD;IACE,WAAA;Gf+5DD;Eeh6DD;IACE,mBAAA;Gfk6DD;Een6DD;IACE,mBAAA;Gfq6DD;Eet6DD;IACE,UAAA;Gfw6DD;Eez6DD;IACE,mBAAA;Gf26DD;Ee56DD;IACE,mBAAA;Gf86DD;Ee/6DD;IACE,UAAA;Gfi7DD;Eel7DD;IACE,mBAAA;Gfo7DD;Eer7DD;IACE,mBAAA;Gfu7DD;Eex7DD;IACE,UAAA;Gf07DD;Ee37DD;IACE,mBAAA;Gf67DD;Ee97DD;IACE,kBAAA;Gfg8DD;Ee57DD;IACE,WAAA;Gf87DD;Eeh7DD;IACE,kBAAA;Gfk7DD;Een7DD;IACE,0BAAA;Gfq7DD;Eet7DD;IACE,0BAAA;Gfw7DD;Eez7DD;IACE,iBAAA;Gf27DD;Ee57DD;IACE,0BAAA;Gf87DD;Ee/7DD;IACE,0BAAA;Gfi8DD;Eel8DD;IACE,iBAAA;Gfo8DD;Eer8DD;IACE,0BAAA;Gfu8DD;Eex8DD;IACE,0BAAA;Gf08DD;Ee38DD;IACE,iBAAA;Gf68DD;Ee98DD;IACE,0BAAA;Gfg9DD;Eej9DD;IACE,yBAAA;Gfm9DD;Eep9DD;IACE,gBAAA;Gfs9DD;CACF;Aa38DD;EE9CI;IACE,YAAA;Gf4/DH;Eer/DD;IACE,YAAA;Gfu/DD;Eex/DD;IACE,oBAAA;Gf0/DD;Ee3/DD;IACE,oBAAA;Gf6/DD;Ee9/DD;IACE,WAAA;GfggED;EejgED;IACE,oBAAA;GfmgED;EepgED;IACE,oBAAA;GfsgED;EevgED;IACE,WAAA;GfygED;Ee1gED;IACE,oBAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,WAAA;GfkhED;EenhED;IACE,oBAAA;GfqhED;EethED;IACE,mBAAA;GfwhED;Ee1gED;IACE,YAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,oBAAA;GfkhED;EenhED;IACE,WAAA;GfqhED;EethED;IACE,oBAAA;GfwhED;EezhED;IACE,oBAAA;Gf2hED;Ee5hED;IACE,WAAA;Gf8hED;Ee/hED;IACE,oBAAA;GfiiED;EeliED;IACE,oBAAA;GfoiED;EeriED;IACE,WAAA;GfuiED;EexiED;IACE,oBAAA;Gf0iED;Ee3iED;IACE,mBAAA;Gf6iED;EeziED;IACE,YAAA;Gf2iED;Ee3jED;IACE,WAAA;Gf6jED;Ee9jED;IACE,mBAAA;GfgkED;EejkED;IACE,mBAAA;GfmkED;EepkED;IACE,UAAA;GfskED;EevkED;IACE,mBAAA;GfykED;Ee1kED;IACE,mBAAA;Gf4kED;Ee7kED;IACE,UAAA;Gf+kED;EehlED;IACE,mBAAA;GfklED;EenlED;IACE,mBAAA;GfqlED;EetlED;IACE,UAAA;GfwlED;EezlED;IACE,mBAAA;Gf2lED;Ee5lED;IACE,kBAAA;Gf8lED;Ee1lED;IACE,WAAA;Gf4lED;Ee9kED;IACE,kBAAA;GfglED;EejlED;IACE,0BAAA;GfmlED;EeplED;IACE,0BAAA;GfslED;EevlED;IACE,iBAAA;GfylED;Ee1lED;IACE,0BAAA;Gf4lED;Ee7lED;IACE,0BAAA;Gf+lED;EehmED;IACE,iBAAA;GfkmED;EenmED;IACE,0BAAA;GfqmED;EetmED;IACE,0BAAA;GfwmED;EezmED;IACE,iBAAA;Gf2mED;Ee5mED;IACE,0BAAA;Gf8mED;Ee/mED;IACE,yBAAA;GfinED;EelnED;IACE,gBAAA;GfonED;CACF;AgBxrED;EACE,8BAAA;ChB0rED;AgBxrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChB0rED;AgBxrED;EACE,iBAAA;ChB0rED;AgBprED;EACE,YAAA;EACA,gBAAA;EACA,oBAAA;ChBsrED;AgBzrED;;;;;;EAWQ,aAAA;EACA,wBAAA;EACA,oBAAA;EACA,2BAAA;ChBsrEP;AgBpsED;EAoBI,uBAAA;EACA,8BAAA;ChBmrEH;AgBxsED;;;;;;EA8BQ,cAAA;ChBkrEP;AgBhtED;EAoCI,2BAAA;ChB+qEH;AgBntED;EAyCI,uBAAA;ChB6qEH;AgBtqED;;;;;;EAOQ,aAAA;ChBuqEP;AgB5pED;EACE,uBAAA;ChB8pED;AgB/pED;;;;;;EAQQ,uBAAA;ChB+pEP;AgBvqED;;EAeM,yBAAA;ChB4pEL;AgBlpED;EAEI,0BAAA;ChBmpEH;AgB1oED;EAEI,0BAAA;ChB2oEH;AgBloED;EACE,iBAAA;EACA,YAAA;EACA,sBAAA;ChBooED;AgB/nEG;;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;ChBkoEL;AiB9wEC;;;;;;;;;;;;EAOI,0BAAA;CjBqxEL;AiB/wEC;;;;;EAMI,0BAAA;CjBgxEL;AiBnyEC;;;;;;;;;;;;EAOI,0BAAA;CjB0yEL;AiBpyEC;;;;;EAMI,0BAAA;CjBqyEL;AiBxzEC;;;;;;;;;;;;EAOI,0BAAA;CjB+zEL;AiBzzEC;;;;;EAMI,0BAAA;CjB0zEL;AiB70EC;;;;;;;;;;;;EAOI,0BAAA;CjBo1EL;AiB90EC;;;;;EAMI,0BAAA;CjB+0EL;AiBl2EC;;;;;;;;;;;;EAOI,0BAAA;CjBy2EL;AiBn2EC;;;;;EAMI,0BAAA;CjBo2EL;AgBltED;EACE,iBAAA;EACA,kBAAA;ChBotED;AgBvpED;EACA;IA3DI,YAAA;IACA,oBAAA;IACA,mBAAA;IACA,6CAAA;IACA,uBAAA;GhBqtED;EgB9pEH;IAnDM,iBAAA;GhBotEH;EgBjqEH;;;;;;IA1CY,oBAAA;GhBmtET;EgBzqEH;IAlCM,UAAA;GhB8sEH;EgB5qEH;;;;;;IAzBY,eAAA;GhB6sET;EgBprEH;;;;;;IArBY,gBAAA;GhBitET;EgB5rEH;;;;IARY,iBAAA;GhB0sET;CACF;AkBp6ED;EACE,WAAA;EACA,UAAA;EACA,UAAA;EAIA,aAAA;ClBm6ED;AkBh6ED;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oBAAA;EACA,gBAAA;EACA,qBAAA;EACA,eAAA;EACA,UAAA;EACA,iCAAA;ClBk6ED;AkB/5ED;EACE,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;ClBi6ED;AkBt5ED;Eb4BE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL63ET;AkBt5ED;;EAEE,gBAAA;EACA,mBAAA;EACA,oBAAA;ClBw5ED;AkBr5ED;EACE,eAAA;ClBu5ED;AkBn5ED;EACE,eAAA;EACA,YAAA;ClBq5ED;AkBj5ED;;EAEE,aAAA;ClBm5ED;AkB/4ED;;;EZvEE,qBAAA;EAEA,2CAAA;EACA,qBAAA;CN09ED;AkB/4ED;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;ClBi5ED;AkBv3ED;EACE,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EbxDA,yDAAA;EACQ,iDAAA;EAyHR,uFAAA;EACK,0EAAA;EACG,uEAAA;CL0zET;AmBl8EC;EACE,sBAAA;EACA,WAAA;EdUF,uFAAA;EACQ,+EAAA;CL27ET;AK15EC;EACE,YAAA;EACA,WAAA;CL45EH;AK15EC;EAA0B,YAAA;CL65E3B;AK55EC;EAAgC,YAAA;CL+5EjC;AkBn4EC;EACE,UAAA;EACA,8BAAA;ClBq4EH;AkB73EC;;;EAGE,0BAAA;EACA,WAAA;ClB+3EH;AkB53EC;;EAEE,oBAAA;ClB83EH;AkB13EC;EACE,aAAA;ClB43EH;AkBh3ED;EACE,yBAAA;ClBk3ED;AkB10ED;EAtBI;;;;IACE,kBAAA;GlBs2EH;EkBn2EC;;;;;;;;IAEE,kBAAA;GlB22EH;EkBx2EC;;;;;;;;IAEE,kBAAA;GlBg3EH;CACF;AkBt2ED;EACE,oBAAA;ClBw2ED;AkBh2ED;;EAEE,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;ClBk2ED;AkBv2ED;;EAQI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;ClBm2EH;AkBh2ED;;;;EAIE,mBAAA;EACA,mBAAA;EACA,mBAAA;ClBk2ED;AkB/1ED;;EAEE,iBAAA;ClBi2ED;AkB71ED;;EAEE,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;ClB+1ED;AkB71ED;;EAEE,cAAA;EACA,kBAAA;ClB+1ED;AkBt1EC;;;;;;EAGE,oBAAA;ClB21EH;AkBr1EC;;;;EAEE,oBAAA;ClBy1EH;AkBn1EC;;;;EAGI,oBAAA;ClBs1EL;AkB30ED;EAEE,iBAAA;EACA,oBAAA;EAEA,iBAAA;EACA,iBAAA;ClB20ED;AkBz0EC;;EAEE,gBAAA;EACA,iBAAA;ClB20EH;AkB9zED;ECnQE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBokFD;AmBlkFC;EACE,aAAA;EACA,kBAAA;CnBokFH;AmBjkFC;;EAEE,aAAA;CnBmkFH;AkB10ED;EAEI,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;ClB20EH;AkBj1ED;EASI,aAAA;EACA,kBAAA;ClB20EH;AkBr1ED;;EAcI,aAAA;ClB20EH;AkBz1ED;EAiBI,aAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;ClB20EH;AkBv0ED;EC/RE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBymFD;AmBvmFC;EACE,aAAA;EACA,kBAAA;CnBymFH;AmBtmFC;;EAEE,aAAA;CnBwmFH;AkBn1ED;EAEI,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ClBo1EH;AkB11ED;EASI,aAAA;EACA,kBAAA;ClBo1EH;AkB91ED;;EAcI,aAAA;ClBo1EH;AkBl2ED;EAiBI,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ClBo1EH;AkB30ED;EAEE,mBAAA;ClB40ED;AkB90ED;EAMI,sBAAA;ClB20EH;AkBv0ED;EACE,mBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,qBAAA;ClBy0ED;AkBv0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBy0ED;AkBv0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBy0ED;AkBr0ED;;;;;;;;;;EC1ZI,eAAA;CnB2uFH;AkBj1ED;ECtZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL4rFT;AmB1uFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CLisFT;AkB31ED;EC5YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnB0uFH;AkBh2ED;ECtYI,eAAA;CnByuFH;AkBh2ED;;;;;;;;;;EC7ZI,eAAA;CnBywFH;AkB52ED;ECzZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL0tFT;AmBxwFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL+tFT;AkBt3ED;EC/YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBwwFH;AkB33ED;ECzYI,eAAA;CnBuwFH;AkB33ED;;;;;;;;;;EChaI,eAAA;CnBuyFH;AkBv4ED;EC5ZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLwvFT;AmBtyFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL6vFT;AkBj5ED;EClZI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBsyFH;AkBt5ED;EC5YI,eAAA;CnBqyFH;AkBl5EC;EACE,UAAA;ClBo5EH;AkBl5EC;EACE,OAAA;ClBo5EH;AkB14ED;EACE,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;ClB44ED;AkBzzED;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB23EH;EkBvvEH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBy3EH;EkB5vEH;IAxHM,sBAAA;GlBu3EH;EkB/vEH;IApHM,sBAAA;IACA,uBAAA;GlBs3EH;EkBnwEH;;;IA9GQ,YAAA;GlBs3EL;EkBxwEH;IAxGM,YAAA;GlBm3EH;EkB3wEH;IApGM,iBAAA;IACA,uBAAA;GlBk3EH;EkB/wEH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB+2EH;EkBtxEH;;IAtFQ,gBAAA;GlBg3EL;EkB1xEH;;IAjFM,mBAAA;IACA,eAAA;GlB+2EH;EkB/xEH;IA3EM,OAAA;GlB62EH;CACF;AkBn2ED;;;;EASI,cAAA;EACA,iBAAA;EACA,iBAAA;ClBg2EH;AkB32ED;;EAiBI,iBAAA;ClB81EH;AkB/2ED;EJthBE,mBAAA;EACA,oBAAA;Cdw4FD;AkB50EC;EAyBF;IAnCM,kBAAA;IACA,iBAAA;IACA,iBAAA;GlB01EH;CACF;AkB13ED;EAwCI,YAAA;ClBq1EH;AkBv0EC;EAUF;IAdQ,kBAAA;IACA,gBAAA;GlB+0EL;CACF;AkBr0EC;EAEF;IANQ,iBAAA;IACA,gBAAA;GlB60EL;CACF;AoBt6FD;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,+BAAA;MAAA,2BAAA;EACA,gBAAA;EACA,uBAAA;EACA,8BAAA;EACA,oBAAA;EC0CA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EhB+JA,0BAAA;EACG,uBAAA;EACC,sBAAA;EACI,kBAAA;CLiuFT;AoBz6FG;;;;;;EdrBF,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNq8FD;AoB76FC;;;EAGE,YAAA;EACA,sBAAA;CpB+6FH;AoB56FC;;EAEE,WAAA;EACA,uBAAA;Ef2BF,yDAAA;EACQ,iDAAA;CLo5FT;AoB56FC;;;EAGE,oBAAA;EE7CF,cAAA;EAGA,0BAAA;EjB8DA,yBAAA;EACQ,iBAAA;CL65FT;AoB56FG;;EAEE,qBAAA;CpB86FL;AoBr6FD;EC3DE,YAAA;EACA,uBAAA;EACA,mBAAA;CrBm+FD;AqBj+FC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBy+FT;AqBt+FC;;;EAGE,uBAAA;CrBw+FH;AqBn+FG;;;;;;;;;EAGE,uBAAA;EACI,mBAAA;CrB2+FT;AoB19FD;ECZI,YAAA;EACA,uBAAA;CrBy+FH;AoB39FD;EC9DE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB4hGD;AqB1hGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB4hGP;AqB1hGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB4hGP;AqB1hGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB4hGP;AqB1hGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBkiGT;AqB/hGC;;;EAGE,uBAAA;CrBiiGH;AqB5hGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBoiGT;AoBhhGD;ECfI,eAAA;EACA,uBAAA;CrBkiGH;AoBhhGD;EClEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBqlGD;AqBnlGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBqlGP;AqBnlGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBqlGP;AqBnlGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBqlGP;AqBnlGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2lGT;AqBxlGC;;;EAGE,uBAAA;CrB0lGH;AqBrlGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB6lGT;AoBrkGD;ECnBI,eAAA;EACA,uBAAA;CrB2lGH;AoBrkGD;ECtEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB8oGD;AqB5oGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB8oGP;AqB5oGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB8oGP;AqB5oGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB8oGP;AqB5oGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBopGT;AqBjpGC;;;EAGE,uBAAA;CrBmpGH;AqB9oGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBspGT;AoB1nGD;ECvBI,eAAA;EACA,uBAAA;CrBopGH;AoB1nGD;EC1EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBusGD;AqBrsGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBusGP;AqBrsGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBusGP;AqBrsGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBusGP;AqBrsGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6sGT;AqB1sGC;;;EAGE,uBAAA;CrB4sGH;AqBvsGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB+sGT;AoB/qGD;EC3BI,eAAA;EACA,uBAAA;CrB6sGH;AoB/qGD;EC9EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBgwGD;AqB9vGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBgwGP;AqB9vGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBgwGP;AqB9vGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBgwGP;AqB9vGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBswGT;AqBnwGC;;;EAGE,uBAAA;CrBqwGH;AqBhwGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBwwGT;AoBpuGD;EC/BI,eAAA;EACA,uBAAA;CrBswGH;AoB/tGD;EACE,eAAA;EACA,oBAAA;EACA,iBAAA;CpBiuGD;AoB/tGC;;;;;EAKE,8BAAA;EfnCF,yBAAA;EACQ,iBAAA;CLqwGT;AoBhuGC;;;;EAIE,0BAAA;CpBkuGH;AoBhuGC;;EAEE,eAAA;EACA,2BAAA;EACA,8BAAA;CpBkuGH;AoB9tGG;;;;EAEE,eAAA;EACA,sBAAA;CpBkuGL;AoBztGD;;ECxEE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CrBqyGD;AoB5tGD;;EC5EE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrB4yGD;AoB/tGD;;EChFE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrBmzGD;AoB9tGD;EACE,eAAA;EACA,YAAA;CpBguGD;AoB5tGD;EACE,gBAAA;CpB8tGD;AoBvtGC;;;EACE,YAAA;CpB2tGH;AuBr3GD;EACE,WAAA;ElBoLA,yCAAA;EACK,oCAAA;EACG,iCAAA;CLosGT;AuBx3GC;EACE,WAAA;CvB03GH;AuBt3GD;EACE,cAAA;CvBw3GD;AuBt3GC;EAAY,eAAA;CvBy3Gb;AuBx3GC;EAAY,mBAAA;CvB23Gb;AuB13GC;EAAY,yBAAA;CvB63Gb;AuB13GD;EACE,mBAAA;EACA,UAAA;EACA,iBAAA;ElBuKA,gDAAA;EACQ,2CAAA;KAAA,wCAAA;EAOR,mCAAA;EACQ,8BAAA;KAAA,2BAAA;EAGR,yCAAA;EACQ,oCAAA;KAAA,iCAAA;CL8sGT;AwBx5GD;EACE,sBAAA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,yBAAA;EACA,oCAAA;EACA,mCAAA;CxB05GD;AwBt5GD;;EAEE,mBAAA;CxBw5GD;AwBp5GD;EACE,WAAA;CxBs5GD;AwBl5GD;EACE,mBAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,sCAAA;EACA,mBAAA;EnBsBA,oDAAA;EACQ,4CAAA;EmBrBR,qCAAA;UAAA,6BAAA;CxBq5GD;AwBh5GC;EACE,SAAA;EACA,WAAA;CxBk5GH;AwB36GD;ECzBE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBu8GD;AwBj7GD;EAmCI,eAAA;EACA,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBi5GH;AwB34GC;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CxB64GH;AwBv4GC;;;EAGE,YAAA;EACA,sBAAA;EACA,WAAA;EACA,0BAAA;CxBy4GH;AwBh4GC;;;EAGE,eAAA;CxBk4GH;AwB93GC;;EAEE,sBAAA;EACA,8BAAA;EACA,uBAAA;EE3GF,oEAAA;EF6GE,oBAAA;CxBg4GH;AwB33GD;EAGI,eAAA;CxB23GH;AwB93GD;EAQI,WAAA;CxBy3GH;AwBj3GD;EACE,WAAA;EACA,SAAA;CxBm3GD;AwB32GD;EACE,QAAA;EACA,YAAA;CxB62GD;AwBz2GD;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxB22GD;AwBv2GD;EACE,gBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;CxBy2GD;AwBr2GD;EACE,SAAA;EACA,WAAA;CxBu2GD;AwB/1GD;;EAII,cAAA;EACA,0BAAA;EACA,4BAAA;EACA,YAAA;CxB+1GH;AwBt2GD;;EAWI,UAAA;EACA,aAAA;EACA,mBAAA;CxB+1GH;AwB10GD;EAXE;IApEA,WAAA;IACA,SAAA;GxB65GC;EwB11GD;IA1DA,QAAA;IACA,YAAA;GxBu5GC;CACF;A2BviHD;;EAEE,mBAAA;EACA,sBAAA;EACA,uBAAA;C3ByiHD;A2B7iHD;;EAMI,mBAAA;EACA,YAAA;C3B2iHH;A2BziHG;;;;;;;;EAIE,WAAA;C3B+iHL;A2BziHD;;;;EAKI,kBAAA;C3B0iHH;A2BriHD;EACE,kBAAA;C3BuiHD;A2BxiHD;;;EAOI,YAAA;C3BsiHH;A2B7iHD;;;EAYI,iBAAA;C3BsiHH;A2BliHD;EACE,iBAAA;C3BoiHD;A2BhiHD;EACE,eAAA;C3BkiHD;A2BjiHC;EClDA,8BAAA;EACG,2BAAA;C5BslHJ;A2BhiHD;;EC/CE,6BAAA;EACG,0BAAA;C5BmlHJ;A2B/hHD;EACE,YAAA;C3BiiHD;A2B/hHD;EACE,iBAAA;C3BiiHD;A2B/hHD;;ECnEE,8BAAA;EACG,2BAAA;C5BsmHJ;A2B9hHD;ECjEE,6BAAA;EACG,0BAAA;C5BkmHJ;A2B7hHD;;EAEE,WAAA;C3B+hHD;A2B9gHD;EACE,kBAAA;EACA,mBAAA;C3BghHD;A2B9gHD;EACE,mBAAA;EACA,oBAAA;C3BghHD;A2B3gHD;EtB/CE,yDAAA;EACQ,iDAAA;CL6jHT;A2B3gHC;EtBnDA,yBAAA;EACQ,iBAAA;CLikHT;A2BxgHD;EACE,eAAA;C3B0gHD;A2BvgHD;EACE,wBAAA;EACA,uBAAA;C3BygHD;A2BtgHD;EACE,wBAAA;C3BwgHD;A2BjgHD;;;EAII,eAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;C3BkgHH;A2BzgHD;EAcM,YAAA;C3B8/GL;A2B5gHD;;;;EAsBI,iBAAA;EACA,eAAA;C3B4/GH;A2Bv/GC;EACE,iBAAA;C3By/GH;A2Bv/GC;EC3KA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B+pHF;A2Bz/GC;EC/KA,2BAAA;EACC,0BAAA;EAOD,gCAAA;EACC,+BAAA;C5BqqHF;A2B1/GD;EACE,iBAAA;C3B4/GD;A2B1/GD;;EC/KE,8BAAA;EACC,6BAAA;C5B6qHF;A2Bz/GD;EC7LE,2BAAA;EACC,0BAAA;C5ByrHF;A2Br/GD;EACE,eAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;C3Bu/GD;A2B3/GD;;EAOI,YAAA;EACA,oBAAA;EACA,UAAA;C3Bw/GH;A2BjgHD;EAYI,YAAA;C3Bw/GH;A2BpgHD;EAgBI,WAAA;C3Bu/GH;A2Bt+GD;;;;EAKM,mBAAA;EACA,uBAAA;EACA,qBAAA;C3Bu+GL;A6BjtHD;EACE,mBAAA;EACA,eAAA;EACA,0BAAA;C7BmtHD;A6BhtHC;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;C7BktHH;A6B3tHD;EAeI,mBAAA;EACA,WAAA;EAKA,YAAA;EAEA,YAAA;EACA,iBAAA;C7B0sHH;A6BxsHG;EACE,WAAA;C7B0sHL;A6BhsHD;;;EV0BE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnB2qHD;AmBzqHC;;;EACE,aAAA;EACA,kBAAA;CnB6qHH;AmB1qHC;;;;;;EAEE,aAAA;CnBgrHH;A6BltHD;;;EVqBE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBksHD;AmBhsHC;;;EACE,aAAA;EACA,kBAAA;CnBosHH;AmBjsHC;;;;;;EAEE,aAAA;CnBusHH;A6BhuHD;;;EAGE,oBAAA;C7BkuHD;A6BhuHC;;;EACE,iBAAA;C7BouHH;A6BhuHD;;EAEE,UAAA;EACA,oBAAA;EACA,uBAAA;C7BkuHD;A6B7tHD;EACE,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;C7B+tHD;A6B5tHC;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;C7B8tHH;A6B5tHC;EACE,mBAAA;EACA,gBAAA;EACA,mBAAA;C7B8tHH;A6BlvHD;;EA0BI,cAAA;C7B4tHH;A6BvtHD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;C5Bo0HJ;A6BxtHD;EACE,gBAAA;C7B0tHD;A6BxtHD;;;;;;;EDxGE,6BAAA;EACG,0BAAA;C5By0HJ;A6BztHD;EACE,eAAA;C7B2tHD;A6BttHD;EACE,mBAAA;EAGA,aAAA;EACA,oBAAA;C7BstHD;A6B3tHD;EAUI,mBAAA;C7BotHH;A6B9tHD;EAYM,kBAAA;C7BqtHL;A6BltHG;;;EAGE,WAAA;C7BotHL;A6B/sHC;;EAGI,mBAAA;C7BgtHL;A6B7sHC;;EAGI,WAAA;EACA,kBAAA;C7B8sHL;A8B72HD;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;C9B+2HD;A8Bl3HD;EAOI,mBAAA;EACA,eAAA;C9B82HH;A8Bt3HD;EAWM,mBAAA;EACA,eAAA;EACA,mBAAA;C9B82HL;A8B72HK;;EAEE,sBAAA;EACA,0BAAA;C9B+2HP;A8B12HG;EACE,eAAA;C9B42HL;A8B12HK;;EAEE,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,oBAAA;C9B42HP;A8Br2HG;;;EAGE,0BAAA;EACA,sBAAA;C9Bu2HL;A8Bh5HD;ELHE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBs5HD;A8Bt5HD;EA0DI,gBAAA;C9B+1HH;A8Bt1HD;EACE,8BAAA;C9Bw1HD;A8Bz1HD;EAGI,YAAA;EAEA,oBAAA;C9Bw1HH;A8B71HD;EASM,kBAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;C9Bu1HL;A8Bt1HK;EACE,mCAAA;C9Bw1HP;A8Bl1HK;;;EAGE,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,iCAAA;EACA,gBAAA;C9Bo1HP;A8B/0HC;EAqDA,YAAA;EA8BA,iBAAA;C9BgwHD;A8Bn1HC;EAwDE,YAAA;C9B8xHH;A8Bt1HC;EA0DI,mBAAA;EACA,mBAAA;C9B+xHL;A8B11HC;EAgEE,UAAA;EACA,WAAA;C9B6xHH;A8BjxHD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9B4xHH;E8B5tHH;IA9DQ,iBAAA;G9B6xHL;CACF;A8Bv2HC;EAuFE,gBAAA;EACA,mBAAA;C9BmxHH;A8B32HC;;;EA8FE,uBAAA;C9BkxHH;A8BpwHD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9BixHH;E8B9uHH;;;IA9BM,0BAAA;G9BixHH;CACF;A8Bl3HD;EAEI,YAAA;C9Bm3HH;A8Br3HD;EAMM,mBAAA;C9Bk3HL;A8Bx3HD;EASM,iBAAA;C9Bk3HL;A8B72HK;;;EAGE,YAAA;EACA,0BAAA;C9B+2HP;A8Bv2HD;EAEI,YAAA;C9Bw2HH;A8B12HD;EAIM,gBAAA;EACA,eAAA;C9By2HL;A8B71HD;EACE,YAAA;C9B+1HD;A8Bh2HD;EAII,YAAA;C9B+1HH;A8Bn2HD;EAMM,mBAAA;EACA,mBAAA;C9Bg2HL;A8Bv2HD;EAYI,UAAA;EACA,WAAA;C9B81HH;A8Bl1HD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9B61HH;E8B7xHH;IA9DQ,iBAAA;G9B81HL;CACF;A8Bt1HD;EACE,iBAAA;C9Bw1HD;A8Bz1HD;EAKI,gBAAA;EACA,mBAAA;C9Bu1HH;A8B71HD;;;EAYI,uBAAA;C9Bs1HH;A8Bx0HD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9Bq1HH;E8BlzHH;;;IA9BM,0BAAA;G9Bq1HH;CACF;A8B50HD;EAEI,cAAA;C9B60HH;A8B/0HD;EAKI,eAAA;C9B60HH;A8Bp0HD;EAEE,iBAAA;EF3OA,2BAAA;EACC,0BAAA;C5BijIF;A+B3iID;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,8BAAA;C/B6iID;A+BriID;EA8nBA;IAhoBI,mBAAA;G/B2iID;CACF;A+B5hID;EAgnBA;IAlnBI,YAAA;G/BkiID;CACF;A+BphID;EACE,oBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,2DAAA;UAAA,mDAAA;EAEA,kCAAA;C/BqhID;A+BnhIC;EACE,iBAAA;C/BqhIH;A+Bz/HD;EA6jBA;IArlBI,YAAA;IACA,cAAA;IACA,yBAAA;YAAA,iBAAA;G/BqhID;E+BnhIC;IACE,0BAAA;IACA,wBAAA;IACA,kBAAA;IACA,6BAAA;G/BqhIH;E+BlhIC;IACE,oBAAA;G/BohIH;E+B/gIC;;;IAGE,gBAAA;IACA,iBAAA;G/BihIH;CACF;A+B7gID;;EAGI,kBAAA;C/B8gIH;A+BzgIC;EAmjBF;;IArjBM,kBAAA;G/BghIH;CACF;A+BvgID;;;;EAII,oBAAA;EACA,mBAAA;C/BygIH;A+BngIC;EAgiBF;;;;IAniBM,gBAAA;IACA,eAAA;G/B6gIH;CACF;A+BjgID;EACE,cAAA;EACA,sBAAA;C/BmgID;A+B9/HD;EA8gBA;IAhhBI,iBAAA;G/BogID;CACF;A+BhgID;;EAEE,gBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;C/BkgID;A+B5/HD;EAggBA;;IAlgBI,iBAAA;G/BmgID;CACF;A+BjgID;EACE,OAAA;EACA,sBAAA;C/BmgID;A+BjgID;EACE,UAAA;EACA,iBAAA;EACA,sBAAA;C/BmgID;A+B7/HD;EACE,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;C/B+/HD;A+B7/HC;;EAEE,sBAAA;C/B+/HH;A+BxgID;EAaI,eAAA;C/B8/HH;A+Br/HD;EALI;;IAEE,mBAAA;G/B6/HH;CACF;A+Bn/HD;EACE,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EC9LA,gBAAA;EACA,mBAAA;ED+LA,8BAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;C/Bs/HD;A+Bl/HC;EACE,WAAA;C/Bo/HH;A+BlgID;EAmBI,eAAA;EACA,YAAA;EACA,YAAA;EACA,mBAAA;C/Bk/HH;A+BxgID;EAyBI,gBAAA;C/Bk/HH;A+B5+HD;EAqbA;IAvbI,cAAA;G/Bk/HD;CACF;A+Bz+HD;EACE,oBAAA;C/B2+HD;A+B5+HD;EAII,kBAAA;EACA,qBAAA;EACA,kBAAA;C/B2+HH;A+B/8HC;EA2YF;IAjaM,iBAAA;IACA,YAAA;IACA,YAAA;IACA,cAAA;IACA,8BAAA;IACA,UAAA;IACA,yBAAA;YAAA,iBAAA;G/By+HH;E+B9kHH;;IAxZQ,2BAAA;G/B0+HL;E+BllHH;IArZQ,kBAAA;G/B0+HL;E+Bz+HK;;IAEE,uBAAA;G/B2+HP;CACF;A+Bz9HD;EA+XA;IA1YI,YAAA;IACA,UAAA;G/Bw+HD;E+B/lHH;IAtYM,YAAA;G/Bw+HH;E+BlmHH;IApYQ,kBAAA;IACA,qBAAA;G/By+HL;CACF;A+B99HD;EACE,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,qCAAA;E1B9NA,6FAAA;EACQ,qFAAA;E2B/DR,gBAAA;EACA,mBAAA;ChC+vID;AkBzuHD;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB2yHH;EkBvqHH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlByyHH;EkB5qHH;IAxHM,sBAAA;GlBuyHH;EkB/qHH;IApHM,sBAAA;IACA,uBAAA;GlBsyHH;EkBnrHH;;;IA9GQ,YAAA;GlBsyHL;EkBxrHH;IAxGM,YAAA;GlBmyHH;EkB3rHH;IApGM,iBAAA;IACA,uBAAA;GlBkyHH;EkB/rHH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB+xHH;EkBtsHH;;IAtFQ,gBAAA;GlBgyHL;EkB1sHH;;IAjFM,mBAAA;IACA,eAAA;GlB+xHH;EkB/sHH;IA3EM,OAAA;GlB6xHH;CACF;A+BvgIC;EAmWF;IAzWM,mBAAA;G/BihIH;E+B/gIG;IACE,iBAAA;G/BihIL;CACF;A+BhgID;EAoVA;IA5VI,YAAA;IACA,UAAA;IACA,eAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;I1BzPF,yBAAA;IACQ,iBAAA;GLswIP;CACF;A+BtgID;EACE,cAAA;EHpUA,2BAAA;EACC,0BAAA;C5B60IF;A+BtgID;EACE,iBAAA;EHzUA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B40IF;A+BlgID;EChVE,gBAAA;EACA,mBAAA;ChCq1ID;A+BngIC;ECnVA,iBAAA;EACA,oBAAA;ChCy1ID;A+BpgIC;ECtVA,iBAAA;EACA,oBAAA;ChC61ID;A+B9/HD;EChWE,iBAAA;EACA,oBAAA;ChCi2ID;A+B1/HD;EAsSA;IA1SI,YAAA;IACA,kBAAA;IACA,mBAAA;G/BkgID;CACF;A+Br+HD;EAhBE;IExWA,uBAAA;GjCi2IC;E+Bx/HD;IE5WA,wBAAA;IF8WE,oBAAA;G/B0/HD;E+B5/HD;IAKI,gBAAA;G/B0/HH;CACF;A+Bj/HD;EACE,0BAAA;EACA,sBAAA;C/Bm/HD;A+Br/HD;EAKI,YAAA;C/Bm/HH;A+Bl/HG;;EAEE,eAAA;EACA,8BAAA;C/Bo/HL;A+B7/HD;EAcI,YAAA;C/Bk/HH;A+BhgID;EAmBM,YAAA;C/Bg/HL;A+B9+HK;;EAEE,YAAA;EACA,8BAAA;C/Bg/HP;A+B5+HK;;;EAGE,YAAA;EACA,0BAAA;C/B8+HP;A+B1+HK;;;EAGE,YAAA;EACA,8BAAA;C/B4+HP;A+BphID;EA8CI,mBAAA;C/By+HH;A+Bx+HG;;EAEE,uBAAA;C/B0+HL;A+B3hID;EAoDM,uBAAA;C/B0+HL;A+B9hID;;EA0DI,sBAAA;C/Bw+HH;A+Bj+HK;;;EAGE,0BAAA;EACA,YAAA;C/Bm+HP;A+Bl8HC;EAoKF;IA7LU,YAAA;G/B+9HP;E+B99HO;;IAEE,YAAA;IACA,8BAAA;G/Bg+HT;E+B59HO;;;IAGE,YAAA;IACA,0BAAA;G/B89HT;E+B19HO;;;IAGE,YAAA;IACA,8BAAA;G/B49HT;CACF;A+B9jID;EA8GI,YAAA;C/Bm9HH;A+Bl9HG;EACE,YAAA;C/Bo9HL;A+BpkID;EAqHI,YAAA;C/Bk9HH;A+Bj9HG;;EAEE,YAAA;C/Bm9HL;A+B/8HK;;;;EAEE,YAAA;C/Bm9HP;A+B38HD;EACE,uBAAA;EACA,sBAAA;C/B68HD;A+B/8HD;EAKI,eAAA;C/B68HH;A+B58HG;;EAEE,YAAA;EACA,8BAAA;C/B88HL;A+Bv9HD;EAcI,eAAA;C/B48HH;A+B19HD;EAmBM,eAAA;C/B08HL;A+Bx8HK;;EAEE,YAAA;EACA,8BAAA;C/B08HP;A+Bt8HK;;;EAGE,YAAA;EACA,0BAAA;C/Bw8HP;A+Bp8HK;;;EAGE,YAAA;EACA,8BAAA;C/Bs8HP;A+B9+HD;EA+CI,mBAAA;C/Bk8HH;A+Bj8HG;;EAEE,uBAAA;C/Bm8HL;A+Br/HD;EAqDM,uBAAA;C/Bm8HL;A+Bx/HD;;EA2DI,sBAAA;C/Bi8HH;A+B37HK;;;EAGE,0BAAA;EACA,YAAA;C/B67HP;A+Bt5HC;EAwBF;IAvDU,sBAAA;G/By7HP;E+Bl4HH;IApDU,0BAAA;G/By7HP;E+Br4HH;IAjDU,eAAA;G/By7HP;E+Bx7HO;;IAEE,YAAA;IACA,8BAAA;G/B07HT;E+Bt7HO;;;IAGE,YAAA;IACA,0BAAA;G/Bw7HT;E+Bp7HO;;;IAGE,YAAA;IACA,8BAAA;G/Bs7HT;CACF;A+B9hID;EA+GI,eAAA;C/Bk7HH;A+Bj7HG;EACE,YAAA;C/Bm7HL;A+BpiID;EAsHI,eAAA;C/Bi7HH;A+Bh7HG;;EAEE,YAAA;C/Bk7HL;A+B96HK;;;;EAEE,YAAA;C/Bk7HP;AkC5jJD;EACE,kBAAA;EACA,oBAAA;EACA,iBAAA;EACA,0BAAA;EACA,mBAAA;ClC8jJD;AkCnkJD;EAQI,sBAAA;ClC8jJH;AkCtkJD;EAWM,kBAAA;EACA,eAAA;EACA,YAAA;ClC8jJL;AkC3kJD;EAkBI,eAAA;ClC4jJH;AmChlJD;EACE,sBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;CnCklJD;AmCtlJD;EAOI,gBAAA;CnCklJH;AmCzlJD;;EAUM,mBAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,sBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,kBAAA;CnCmlJL;AmCjlJG;;EAGI,eAAA;EPXN,+BAAA;EACG,4BAAA;C5B8lJJ;AmChlJG;;EPvBF,gCAAA;EACG,6BAAA;C5B2mJJ;AmC3kJG;;;;EAEE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CnC+kJL;AmCzkJG;;;;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;EACA,gBAAA;CnC8kJL;AmCroJD;;;;;;EAkEM,eAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;CnC2kJL;AmClkJD;;EC3EM,mBAAA;EACA,gBAAA;EACA,uBAAA;CpCipJL;AoC/oJG;;ERKF,+BAAA;EACG,4BAAA;C5B8oJJ;AoC9oJG;;ERTF,gCAAA;EACG,6BAAA;C5B2pJJ;AmC7kJD;;EChFM,kBAAA;EACA,gBAAA;EACA,iBAAA;CpCiqJL;AoC/pJG;;ERKF,+BAAA;EACG,4BAAA;C5B8pJJ;AoC9pJG;;ERTF,gCAAA;EACG,6BAAA;C5B2qJJ;AqC9qJD;EACE,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,mBAAA;CrCgrJD;AqCprJD;EAOI,gBAAA;CrCgrJH;AqCvrJD;;EAUM,sBAAA;EACA,kBAAA;EACA,uBAAA;EACA,uBAAA;EACA,oBAAA;CrCirJL;AqC/rJD;;EAmBM,sBAAA;EACA,0BAAA;CrCgrJL;AqCpsJD;;EA2BM,aAAA;CrC6qJL;AqCxsJD;;EAkCM,YAAA;CrC0qJL;AqC5sJD;;;;EA2CM,eAAA;EACA,uBAAA;EACA,oBAAA;CrCuqJL;AsCrtJD;EACE,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EACA,yBAAA;EACA,qBAAA;CtCutJD;AsCntJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CtCqtJL;AsChtJC;EACE,cAAA;CtCktJH;AsC9sJC;EACE,mBAAA;EACA,UAAA;CtCgtJH;AsCzsJD;ECtCE,0BAAA;CvCkvJD;AuC/uJG;;EAEE,0BAAA;CvCivJL;AsC5sJD;EC1CE,0BAAA;CvCyvJD;AuCtvJG;;EAEE,0BAAA;CvCwvJL;AsC/sJD;EC9CE,0BAAA;CvCgwJD;AuC7vJG;;EAEE,0BAAA;CvC+vJL;AsCltJD;EClDE,0BAAA;CvCuwJD;AuCpwJG;;EAEE,0BAAA;CvCswJL;AsCrtJD;ECtDE,0BAAA;CvC8wJD;AuC3wJG;;EAEE,0BAAA;CvC6wJL;AsCxtJD;EC1DE,0BAAA;CvCqxJD;AuClxJG;;EAEE,0BAAA;CvCoxJL;AwCtxJD;EACE,sBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,mBAAA;EACA,0BAAA;EACA,oBAAA;CxCwxJD;AwCrxJC;EACE,cAAA;CxCuxJH;AwCnxJC;EACE,mBAAA;EACA,UAAA;CxCqxJH;AwClxJC;;EAEE,OAAA;EACA,iBAAA;CxCoxJH;AwC/wJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CxCixJL;AwC5wJC;;EAEE,eAAA;EACA,uBAAA;CxC8wJH;AwC3wJC;EACE,aAAA;CxC6wJH;AwC1wJC;EACE,kBAAA;CxC4wJH;AwCzwJC;EACE,iBAAA;CxC2wJH;AyCr0JD;EACE,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,eAAA;EACA,0BAAA;CzCu0JD;AyC50JD;;EASI,eAAA;CzCu0JH;AyCh1JD;EAaI,oBAAA;EACA,gBAAA;EACA,iBAAA;CzCs0JH;AyCr1JD;EAmBI,0BAAA;CzCq0JH;AyCl0JC;;EAEE,mBAAA;EACA,mBAAA;EACA,oBAAA;CzCo0JH;AyC91JD;EA8BI,gBAAA;CzCm0JH;AyCjzJD;EACA;IAfI,kBAAA;IACA,qBAAA;GzCm0JD;EyCj0JC;;IAEE,mBAAA;IACA,oBAAA;GzCm0JH;EyC1zJH;;IAJM,gBAAA;GzCk0JH;CACF;A0C/2JD;EACE,eAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;ErCiLA,4CAAA;EACK,uCAAA;EACG,oCAAA;CLisJT;A0C33JD;;EAaI,kBAAA;EACA,mBAAA;C1Ck3JH;A0C92JC;;;EAGE,sBAAA;C1Cg3JH;A0Cr4JD;EA0BI,aAAA;EACA,eAAA;C1C82JH;A2Cv4JD;EACE,cAAA;EACA,oBAAA;EACA,8BAAA;EACA,mBAAA;C3Cy4JD;A2C74JD;EAQI,cAAA;EAEA,eAAA;C3Cu4JH;A2Cj5JD;EAeI,kBAAA;C3Cq4JH;A2Cp5JD;;EAqBI,iBAAA;C3Cm4JH;A2Cx5JD;EAyBI,gBAAA;C3Ck4JH;A2C13JD;;EAEE,oBAAA;C3C43JD;A2C93JD;;EAMI,mBAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;C3C43JH;A2Cp3JD;ECvDE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C86JD;A2Cz3JD;EClDI,0BAAA;C5C86JH;A2C53JD;EC/CI,eAAA;C5C86JH;A2C33JD;EC3DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cy7JD;A2Ch4JD;ECtDI,0BAAA;C5Cy7JH;A2Cn4JD;ECnDI,eAAA;C5Cy7JH;A2Cl4JD;EC/DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Co8JD;A2Cv4JD;EC1DI,0BAAA;C5Co8JH;A2C14JD;ECvDI,eAAA;C5Co8JH;A2Cz4JD;ECnEE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C+8JD;A2C94JD;EC9DI,0BAAA;C5C+8JH;A2Cj5JD;EC3DI,eAAA;C5C+8JH;A6Cj9JD;EACE;IAAQ,4BAAA;G7Co9JP;E6Cn9JD;IAAQ,yBAAA;G7Cs9JP;CACF;A6Cn9JD;EACE;IAAQ,4BAAA;G7Cs9JP;E6Cr9JD;IAAQ,yBAAA;G7Cw9JP;CACF;A6C39JD;EACE;IAAQ,4BAAA;G7Cs9JP;E6Cr9JD;IAAQ,yBAAA;G7Cw9JP;CACF;A6Cj9JD;EACE,iBAAA;EACA,aAAA;EACA,oBAAA;EACA,0BAAA;EACA,mBAAA;ExCsCA,uDAAA;EACQ,+CAAA;CL86JT;A6Ch9JD;EACE,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,0BAAA;ExCyBA,uDAAA;EACQ,+CAAA;EAyHR,oCAAA;EACK,+BAAA;EACG,4BAAA;CLk0JT;A6C78JD;;ECCI,8MAAA;EACA,yMAAA;EACA,sMAAA;EDAF,mCAAA;UAAA,2BAAA;C7Ci9JD;A6C18JD;;ExC5CE,2DAAA;EACK,sDAAA;EACG,mDAAA;CL0/JT;A6Cv8JD;EErEE,0BAAA;C/C+gKD;A+C5gKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C+9JH;A6C38JD;EEzEE,0BAAA;C/CuhKD;A+CphKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Cu+JH;A6C/8JD;EE7EE,0BAAA;C/C+hKD;A+C5hKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C++JH;A6Cn9JD;EEjFE,0BAAA;C/CuiKD;A+CpiKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Cu/JH;AgD/iKD;EAEE,iBAAA;ChDgjKD;AgD9iKC;EACE,cAAA;ChDgjKH;AgD5iKD;;EAEE,QAAA;EACA,iBAAA;ChD8iKD;AgD3iKD;EACE,eAAA;ChD6iKD;AgD1iKD;EACE,eAAA;ChD4iKD;AgDziKC;EACE,gBAAA;ChD2iKH;AgDviKD;;EAEE,mBAAA;ChDyiKD;AgDtiKD;;EAEE,oBAAA;ChDwiKD;AgDriKD;;;EAGE,oBAAA;EACA,oBAAA;ChDuiKD;AgDpiKD;EACE,uBAAA;ChDsiKD;AgDniKD;EACE,uBAAA;ChDqiKD;AgDjiKD;EACE,cAAA;EACA,mBAAA;ChDmiKD;AgD7hKD;EACE,gBAAA;EACA,iBAAA;ChD+hKD;AiDtlKD;EAEE,oBAAA;EACA,gBAAA;CjDulKD;AiD/kKD;EACE,mBAAA;EACA,eAAA;EACA,mBAAA;EAEA,oBAAA;EACA,uBAAA;EACA,uBAAA;CjDglKD;AiD7kKC;ErB3BA,6BAAA;EACC,4BAAA;C5B2mKF;AiD9kKC;EACE,iBAAA;ErBvBF,gCAAA;EACC,+BAAA;C5BwmKF;AiDvkKD;;EAEE,YAAA;CjDykKD;AiD3kKD;;EAKI,YAAA;CjD0kKH;AiDtkKC;;;;EAEE,sBAAA;EACA,YAAA;EACA,0BAAA;CjD0kKH;AiDtkKD;EACE,YAAA;EACA,iBAAA;CjDwkKD;AiDnkKC;;;EAGE,0BAAA;EACA,eAAA;EACA,oBAAA;CjDqkKH;AiD1kKC;;;EASI,eAAA;CjDskKL;AiD/kKC;;;EAYI,eAAA;CjDwkKL;AiDnkKC;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;CjDqkKH;AiD3kKC;;;;;;;;;EAYI,eAAA;CjD0kKL;AiDtlKC;;;EAeI,eAAA;CjD4kKL;AkD9qKC;EACE,eAAA;EACA,0BAAA;ClDgrKH;AkD9qKG;;EAEE,eAAA;ClDgrKL;AkDlrKG;;EAKI,eAAA;ClDirKP;AkD9qKK;;;;EAEE,eAAA;EACA,0BAAA;ClDkrKP;AkDhrKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDqrKP;AkD3sKC;EACE,eAAA;EACA,0BAAA;ClD6sKH;AkD3sKG;;EAEE,eAAA;ClD6sKL;AkD/sKG;;EAKI,eAAA;ClD8sKP;AkD3sKK;;;;EAEE,eAAA;EACA,0BAAA;ClD+sKP;AkD7sKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDktKP;AkDxuKC;EACE,eAAA;EACA,0BAAA;ClD0uKH;AkDxuKG;;EAEE,eAAA;ClD0uKL;AkD5uKG;;EAKI,eAAA;ClD2uKP;AkDxuKK;;;;EAEE,eAAA;EACA,0BAAA;ClD4uKP;AkD1uKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD+uKP;AkDrwKC;EACE,eAAA;EACA,0BAAA;ClDuwKH;AkDrwKG;;EAEE,eAAA;ClDuwKL;AkDzwKG;;EAKI,eAAA;ClDwwKP;AkDrwKK;;;;EAEE,eAAA;EACA,0BAAA;ClDywKP;AkDvwKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD4wKP;AiD3qKD;EACE,cAAA;EACA,mBAAA;CjD6qKD;AiD3qKD;EACE,iBAAA;EACA,iBAAA;CjD6qKD;AmDvyKD;EACE,oBAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;E9C0DA,kDAAA;EACQ,0CAAA;CLgvKT;AmDtyKD;EACE,cAAA;CnDwyKD;AmDnyKD;EACE,mBAAA;EACA,qCAAA;EvBpBA,6BAAA;EACC,4BAAA;C5B0zKF;AmDzyKD;EAMI,eAAA;CnDsyKH;AmDjyKD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;CnDmyKD;AmDvyKD;;;;;EAWI,eAAA;CnDmyKH;AmD9xKD;EACE,mBAAA;EACA,0BAAA;EACA,2BAAA;EvBxCA,gCAAA;EACC,+BAAA;C5By0KF;AmDxxKD;;EAGI,iBAAA;CnDyxKH;AmD5xKD;;EAMM,oBAAA;EACA,iBAAA;CnD0xKL;AmDtxKG;;EAEI,cAAA;EvBvEN,6BAAA;EACC,4BAAA;C5Bg2KF;AmDpxKG;;EAEI,iBAAA;EvBvEN,gCAAA;EACC,+BAAA;C5B81KF;AmD7yKD;EvB1DE,2BAAA;EACC,0BAAA;C5B02KF;AmDhxKD;EAEI,oBAAA;CnDixKH;AmD9wKD;EACE,oBAAA;CnDgxKD;AmDxwKD;;;EAII,iBAAA;CnDywKH;AmD7wKD;;;EAOM,mBAAA;EACA,oBAAA;CnD2wKL;AmDnxKD;;EvBzGE,6BAAA;EACC,4BAAA;C5Bg4KF;AmDxxKD;;;;EAmBQ,4BAAA;EACA,6BAAA;CnD2wKP;AmD/xKD;;;;;;;;EAwBU,4BAAA;CnDixKT;AmDzyKD;;;;;;;;EA4BU,6BAAA;CnDuxKT;AmDnzKD;;EvBjGE,gCAAA;EACC,+BAAA;C5Bw5KF;AmDxzKD;;;;EAyCQ,+BAAA;EACA,gCAAA;CnDqxKP;AmD/zKD;;;;;;;;EA8CU,+BAAA;CnD2xKT;AmDz0KD;;;;;;;;EAkDU,gCAAA;CnDiyKT;AmDn1KD;;;;EA2DI,2BAAA;CnD8xKH;AmDz1KD;;EA+DI,cAAA;CnD8xKH;AmD71KD;;EAmEI,UAAA;CnD8xKH;AmDj2KD;;;;;;;;;;;;EA0EU,eAAA;CnDqyKT;AmD/2KD;;;;;;;;;;;;EA8EU,gBAAA;CnD+yKT;AmD73KD;;;;;;;;EAuFU,iBAAA;CnDgzKT;AmDv4KD;;;;;;;;EAgGU,iBAAA;CnDizKT;AmDj5KD;EAsGI,UAAA;EACA,iBAAA;CnD8yKH;AmDpyKD;EACE,oBAAA;CnDsyKD;AmDvyKD;EAKI,iBAAA;EACA,mBAAA;CnDqyKH;AmD3yKD;EASM,gBAAA;CnDqyKL;AmD9yKD;EAcI,iBAAA;CnDmyKH;AmDjzKD;;EAkBM,2BAAA;CnDmyKL;AmDrzKD;EAuBI,cAAA;CnDiyKH;AmDxzKD;EAyBM,8BAAA;CnDkyKL;AmD3xKD;EC1PE,mBAAA;CpDwhLD;AoDthLC;EACE,eAAA;EACA,0BAAA;EACA,mBAAA;CpDwhLH;AoD3hLC;EAMI,uBAAA;CpDwhLL;AoD9hLC;EASI,eAAA;EACA,0BAAA;CpDwhLL;AoDrhLC;EAEI,0BAAA;CpDshLL;AmD1yKD;EC7PE,sBAAA;CpD0iLD;AoDxiLC;EACE,YAAA;EACA,0BAAA;EACA,sBAAA;CpD0iLH;AoD7iLC;EAMI,0BAAA;CpD0iLL;AoDhjLC;EASI,eAAA;EACA,uBAAA;CpD0iLL;AoDviLC;EAEI,6BAAA;CpDwiLL;AmDzzKD;EChQE,sBAAA;CpD4jLD;AoD1jLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD4jLH;AoD/jLC;EAMI,0BAAA;CpD4jLL;AoDlkLC;EASI,eAAA;EACA,0BAAA;CpD4jLL;AoDzjLC;EAEI,6BAAA;CpD0jLL;AmDx0KD;ECnQE,sBAAA;CpD8kLD;AoD5kLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD8kLH;AoDjlLC;EAMI,0BAAA;CpD8kLL;AoDplLC;EASI,eAAA;EACA,0BAAA;CpD8kLL;AoD3kLC;EAEI,6BAAA;CpD4kLL;AmDv1KD;ECtQE,sBAAA;CpDgmLD;AoD9lLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDgmLH;AoDnmLC;EAMI,0BAAA;CpDgmLL;AoDtmLC;EASI,eAAA;EACA,0BAAA;CpDgmLL;AoD7lLC;EAEI,6BAAA;CpD8lLL;AmDt2KD;ECzQE,sBAAA;CpDknLD;AoDhnLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDknLH;AoDrnLC;EAMI,0BAAA;CpDknLL;AoDxnLC;EASI,eAAA;EACA,0BAAA;CpDknLL;AoD/mLC;EAEI,6BAAA;CpDgnLL;AqDhoLD;EACE,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;CrDkoLD;AqDvoLD;;;;;EAYI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;CrDkoLH;AqD7nLD;EACE,uBAAA;CrD+nLD;AqD3nLD;EACE,oBAAA;CrD6nLD;AsDxpLD;EACE,iBAAA;EACA,cAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EjDwDA,wDAAA;EACQ,gDAAA;CLmmLT;AsDlqLD;EASI,mBAAA;EACA,kCAAA;CtD4pLH;AsDvpLD;EACE,cAAA;EACA,mBAAA;CtDypLD;AsDvpLD;EACE,aAAA;EACA,mBAAA;CtDypLD;AuD/qLD;EACE,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,0BAAA;EjCRA,aAAA;EAGA,0BAAA;CtBwrLD;AuDhrLC;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;EjCfF,aAAA;EAGA,0BAAA;CtBgsLD;AuD5qLC;EACE,WAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA;EACA,yBAAA;CvD8qLH;AwDnsLD;EACE,iBAAA;CxDqsLD;AwDjsLD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,kCAAA;EAIA,WAAA;CxDgsLD;AwD7rLC;EnD+GA,sCAAA;EACI,kCAAA;EACC,iCAAA;EACG,8BAAA;EAkER,oDAAA;EAEK,0CAAA;EACG,oCAAA;CLghLT;AwDnsLC;EnD2GA,mCAAA;EACI,+BAAA;EACC,8BAAA;EACG,2BAAA;CL2lLT;AwDvsLD;EACE,mBAAA;EACA,iBAAA;CxDysLD;AwDrsLD;EACE,mBAAA;EACA,YAAA;EACA,aAAA;CxDusLD;AwDnsLD;EACE,mBAAA;EACA,uBAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EnDaA,iDAAA;EACQ,yCAAA;EmDZR,qCAAA;UAAA,6BAAA;EAEA,WAAA;CxDqsLD;AwDjsLD;EACE,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,uBAAA;CxDmsLD;AwDjsLC;ElCrEA,WAAA;EAGA,yBAAA;CtBuwLD;AwDpsLC;ElCtEA,aAAA;EAGA,0BAAA;CtB2wLD;AwDnsLD;EACE,cAAA;EACA,iCAAA;CxDqsLD;AwDjsLD;EACE,iBAAA;CxDmsLD;AwD/rLD;EACE,UAAA;EACA,wBAAA;CxDisLD;AwD5rLD;EACE,mBAAA;EACA,cAAA;CxD8rLD;AwD1rLD;EACE,cAAA;EACA,kBAAA;EACA,8BAAA;CxD4rLD;AwD/rLD;EAQI,iBAAA;EACA,iBAAA;CxD0rLH;AwDnsLD;EAaI,kBAAA;CxDyrLH;AwDtsLD;EAiBI,eAAA;CxDwrLH;AwDnrLD;EACE,mBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;CxDqrLD;AwDnqLD;EAZE;IACE,aAAA;IACA,kBAAA;GxDkrLD;EwDhrLD;InDvEA,kDAAA;IACQ,0CAAA;GL0vLP;EwD/qLD;IAAY,aAAA;GxDkrLX;CACF;AwD7qLD;EAFE;IAAY,aAAA;GxDmrLX;CACF;AyDl0LD;EACE,mBAAA;EACA,cAAA;EACA,eAAA;ECRA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;EDHA,gBAAA;EnCVA,WAAA;EAGA,yBAAA;CtBy1LD;AyD90LC;EnCdA,aAAA;EAGA,0BAAA;CtB61LD;AyDj1LC;EAAW,iBAAA;EAAmB,eAAA;CzDq1L/B;AyDp1LC;EAAW,iBAAA;EAAmB,eAAA;CzDw1L/B;AyDv1LC;EAAW,gBAAA;EAAmB,eAAA;CzD21L/B;AyD11LC;EAAW,kBAAA;EAAmB,eAAA;CzD81L/B;AyD11LD;EACE,iBAAA;EACA,iBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,mBAAA;CzD41LD;AyDx1LD;EACE,mBAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;CzD01LD;AyDt1LC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,uBAAA;CzDw1LH;AyDt1LC;EACE,UAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDw1LH;AyDt1LC;EACE,UAAA;EACA,UAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDw1LH;AyDt1LC;EACE,SAAA;EACA,QAAA;EACA,iBAAA;EACA,4BAAA;EACA,yBAAA;CzDw1LH;AyDt1LC;EACE,SAAA;EACA,SAAA;EACA,iBAAA;EACA,4BAAA;EACA,wBAAA;CzDw1LH;AyDt1LC;EACE,OAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,0BAAA;CzDw1LH;AyDt1LC;EACE,OAAA;EACA,WAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDw1LH;AyDt1LC;EACE,OAAA;EACA,UAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDw1LH;A2Dr7LD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EDXA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;ECAA,gBAAA;EAEA,uBAAA;EACA,qCAAA;UAAA,6BAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EtD8CA,kDAAA;EACQ,0CAAA;CLq5LT;A2Dh8LC;EAAY,kBAAA;C3Dm8Lb;A2Dl8LC;EAAY,kBAAA;C3Dq8Lb;A2Dp8LC;EAAY,iBAAA;C3Du8Lb;A2Dt8LC;EAAY,mBAAA;C3Dy8Lb;A2Dt8LD;EACE,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,0BAAA;EACA,iCAAA;EACA,2BAAA;C3Dw8LD;A2Dr8LD;EACE,kBAAA;C3Du8LD;A2D/7LC;;EAEE,mBAAA;EACA,eAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;C3Di8LH;A2D97LD;EACE,mBAAA;C3Dg8LD;A2D97LD;EACE,mBAAA;EACA,YAAA;C3Dg8LD;A2D57LC;EACE,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;EACA,sCAAA;EACA,cAAA;C3D87LH;A2D77LG;EACE,aAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;C3D+7LL;A2D57LC;EACE,SAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,4BAAA;EACA,wCAAA;C3D87LH;A2D77LG;EACE,aAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;C3D+7LL;A2D57LC;EACE,UAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,yCAAA;EACA,WAAA;C3D87LH;A2D77LG;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,0BAAA;C3D+7LL;A2D37LC;EACE,SAAA;EACA,aAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,uCAAA;C3D67LH;A2D57LG;EACE,aAAA;EACA,WAAA;EACA,sBAAA;EACA,wBAAA;EACA,cAAA;C3D87LL;A4DvjMD;EACE,mBAAA;C5DyjMD;A4DtjMD;EACE,mBAAA;EACA,iBAAA;EACA,YAAA;C5DwjMD;A4D3jMD;EAMI,cAAA;EACA,mBAAA;EvD6KF,0CAAA;EACK,qCAAA;EACG,kCAAA;CL44LT;A4DlkMD;;EAcM,eAAA;C5DwjML;A4D9hMC;EA4NF;IvD3DE,uDAAA;IAEK,6CAAA;IACG,uCAAA;IA7JR,oCAAA;IAEQ,4BAAA;IA+GR,4BAAA;IAEQ,oBAAA;GLi7LP;E4D5jMG;;IvDmHJ,2CAAA;IACQ,mCAAA;IuDjHF,QAAA;G5D+jML;E4D7jMG;;IvD8GJ,4CAAA;IACQ,oCAAA;IuD5GF,QAAA;G5DgkML;E4D9jMG;;;IvDyGJ,wCAAA;IACQ,gCAAA;IuDtGF,QAAA;G5DikML;CACF;A4DvmMD;;;EA6CI,eAAA;C5D+jMH;A4D5mMD;EAiDI,QAAA;C5D8jMH;A4D/mMD;;EAsDI,mBAAA;EACA,OAAA;EACA,YAAA;C5D6jMH;A4DrnMD;EA4DI,WAAA;C5D4jMH;A4DxnMD;EA+DI,YAAA;C5D4jMH;A4D3nMD;;EAmEI,QAAA;C5D4jMH;A4D/nMD;EAuEI,YAAA;C5D2jMH;A4DloMD;EA0EI,WAAA;C5D2jMH;A4DnjMD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EtC9FA,aAAA;EAGA,0BAAA;EsC6FA,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;EACA,mCAAA;C5DsjMD;A4DjjMC;EdnGE,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CupMH;A4DrjMC;EACE,WAAA;EACA,SAAA;EdxGA,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CgqMH;A4DvjMC;;EAEE,WAAA;EACA,YAAA;EACA,sBAAA;EtCvHF,aAAA;EAGA,0BAAA;CtB+qMD;A4DzlMD;;;;EAuCI,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,sBAAA;C5DwjMH;A4DnmMD;;EA+CI,UAAA;EACA,mBAAA;C5DwjMH;A4DxmMD;;EAoDI,WAAA;EACA,oBAAA;C5DwjMH;A4D7mMD;;EAyDI,YAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;C5DwjMH;A4DnjMG;EACE,iBAAA;C5DqjML;A4DjjMG;EACE,iBAAA;C5DmjML;A4DziMD;EACE,mBAAA;EACA,aAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;C5D2iMD;A4DpjMD;EAYI,sBAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;EAWA,0BAAA;EACA,mCAAA;C5DiiMH;A4DhkMD;EAkCI,UAAA;EACA,YAAA;EACA,aAAA;EACA,uBAAA;C5DiiMH;A4D1hMD;EACE,mBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;C5D4hMD;A4D3hMC;EACE,kBAAA;C5D6hMH;A4Dp/LD;EAhCE;;;;IAKI,YAAA;IACA,aAAA;IACA,kBAAA;IACA,gBAAA;G5DshMH;E4D9hMD;;IAYI,mBAAA;G5DshMH;E4DliMD;;IAgBI,oBAAA;G5DshMH;E4DjhMD;IACE,UAAA;IACA,WAAA;IACA,qBAAA;G5DmhMD;E4D/gMD;IACE,aAAA;G5DihMD;CACF;A6DhxMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,aAAA;EACA,eAAA;C7DgzMH;A6D9yMC;;;;;;;;;;;;;;;;EACE,YAAA;C7D+zMH;AiCv0MD;E6BRE,eAAA;EACA,kBAAA;EACA,mBAAA;C9Dk1MD;AiCz0MD;EACE,wBAAA;CjC20MD;AiCz0MD;EACE,uBAAA;CjC20MD;AiCn0MD;EACE,yBAAA;CjCq0MD;AiCn0MD;EACE,0BAAA;CjCq0MD;AiCn0MD;EACE,mBAAA;CjCq0MD;AiCn0MD;E8BzBE,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;C/D+1MD;AiCj0MD;EACE,yBAAA;CjCm0MD;AiC5zMD;EACE,gBAAA;CjC8zMD;AgE/1MD;EACE,oBAAA;ChEi2MD;AgE31MD;;;;ECdE,yBAAA;CjE+2MD;AgE11MD;;;;;;;;;;;;EAYE,yBAAA;ChE41MD;AgEr1MD;EA6IA;IC7LE,0BAAA;GjEy4MC;EiEx4MD;IAAU,0BAAA;GjE24MT;EiE14MD;IAAU,8BAAA;GjE64MT;EiE54MD;;IACU,+BAAA;GjE+4MT;CACF;AgE/1MD;EAwIA;IA1II,0BAAA;GhEq2MD;CACF;AgE/1MD;EAmIA;IArII,2BAAA;GhEq2MD;CACF;AgE/1MD;EA8HA;IAhII,iCAAA;GhEq2MD;CACF;AgE91MD;EAwHA;IC7LE,0BAAA;GjEu6MC;EiEt6MD;IAAU,0BAAA;GjEy6MT;EiEx6MD;IAAU,8BAAA;GjE26MT;EiE16MD;;IACU,+BAAA;GjE66MT;CACF;AgEx2MD;EAmHA;IArHI,0BAAA;GhE82MD;CACF;AgEx2MD;EA8GA;IAhHI,2BAAA;GhE82MD;CACF;AgEx2MD;EAyGA;IA3GI,iCAAA;GhE82MD;CACF;AgEv2MD;EAmGA;IC7LE,0BAAA;GjEq8MC;EiEp8MD;IAAU,0BAAA;GjEu8MT;EiEt8MD;IAAU,8BAAA;GjEy8MT;EiEx8MD;;IACU,+BAAA;GjE28MT;CACF;AgEj3MD;EA8FA;IAhGI,0BAAA;GhEu3MD;CACF;AgEj3MD;EAyFA;IA3FI,2BAAA;GhEu3MD;CACF;AgEj3MD;EAoFA;IAtFI,iCAAA;GhEu3MD;CACF;AgEh3MD;EA8EA;IC7LE,0BAAA;GjEm+MC;EiEl+MD;IAAU,0BAAA;GjEq+MT;EiEp+MD;IAAU,8BAAA;GjEu+MT;EiEt+MD;;IACU,+BAAA;GjEy+MT;CACF;AgE13MD;EAyEA;IA3EI,0BAAA;GhEg4MD;CACF;AgE13MD;EAoEA;IAtEI,2BAAA;GhEg4MD;CACF;AgE13MD;EA+DA;IAjEI,iCAAA;GhEg4MD;CACF;AgEz3MD;EAyDA;ICrLE,yBAAA;GjEy/MC;CACF;AgEz3MD;EAoDA;ICrLE,yBAAA;GjE8/MC;CACF;AgEz3MD;EA+CA;ICrLE,yBAAA;GjEmgNC;CACF;AgEz3MD;EA0CA;ICrLE,yBAAA;GjEwgNC;CACF;AgEt3MD;ECnJE,yBAAA;CjE4gND;AgEn3MD;EA4BA;IC7LE,0BAAA;GjEwhNC;EiEvhND;IAAU,0BAAA;GjE0hNT;EiEzhND;IAAU,8BAAA;GjE4hNT;EiE3hND;;IACU,+BAAA;GjE8hNT;CACF;AgEj4MD;EACE,yBAAA;ChEm4MD;AgE93MD;EAqBA;IAvBI,0BAAA;GhEo4MD;CACF;AgEl4MD;EACE,yBAAA;ChEo4MD;AgE/3MD;EAcA;IAhBI,2BAAA;GhEq4MD;CACF;AgEn4MD;EACE,yBAAA;ChEq4MD;AgEh4MD;EAOA;IATI,iCAAA;GhEs4MD;CACF;AgE/3MD;EACA;ICrLE,yBAAA;GjEujNC;CACF","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    background: transparent !important;\n    color: #000 !important;\n    box-shadow: none !important;\n    text-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  background-color: #fcf8e3;\n  padding: .2em;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n  text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.row {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  min-width: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  border: 0;\n  background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n  min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  border-color: #3c763d;\n  background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  border-color: #8a6d3b;\n  background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  border-color: #a94442;\n  background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n    margin-bottom: 0;\n    padding-top: 7px;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  white-space: nowrap;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  outline: 0;\n  background-image: none;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  color: #337ab7;\n  font-weight: normal;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 14px;\n  text-align: left;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  text-decoration: none;\n  color: #262626;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  cursor: not-allowed;\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  left: auto;\n  right: 0;\n}\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n  content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    left: auto;\n    right: 0;\n  }\n  .navbar-right .dropdown-menu-left {\n    left: 0;\n    right: auto;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  float: none;\n  display: table-cell;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  margin-bottom: 0;\n  padding-left: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  background-color: transparent;\n  cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n  cursor: default;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: 15px;\n  padding-left: 15px;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n  height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: 15px;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  margin-left: -15px;\n  margin-right: -15px;\n  padding: 10px 15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-left: 15px;\n    margin-right: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  background-color: #e7e7e7;\n  color: #555;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  background-color: #080808;\n  color: #fff;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  content: \"/\\00a0\";\n  padding: 0 5px;\n  color: #ccc;\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  line-height: 1.42857143;\n  text-decoration: none;\n  color: #337ab7;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n  cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  background-color: #fff;\n  border-color: #ddd;\n  cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-bottom-left-radius: 6px;\n  border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-bottom-right-radius: 6px;\n  border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-bottom-left-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-bottom-right-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  list-style: none;\n  text-align: center;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  background-color: #fff;\n  cursor: not-allowed;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  color: #fff;\n  line-height: 1;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-left: 60px;\n    padding-right: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-left: auto;\n  margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n  color: #3c763d;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n  color: #31708f;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n  color: #8a6d3b;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n  color: #a94442;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  margin-bottom: 20px;\n  padding-left: 0;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  text-decoration: none;\n  color: #555;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  background-color: #eeeeee;\n  color: #777777;\n  cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-left-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  border: 0;\n  margin-bottom: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  height: 100%;\n  width: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  background-clip: padding-box;\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-left: 5px;\n  margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 12px;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.tooltip.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.tooltip.top {\n  margin-top: -3px;\n  padding: 5px 0;\n}\n.tooltip.right {\n  margin-left: 3px;\n  padding: 0 5px;\n}\n.tooltip.bottom {\n  margin-top: 3px;\n  padding: 5px 0;\n}\n.tooltip.left {\n  margin-left: -3px;\n  padding: 0 5px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  right: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  margin: 0;\n  padding: 8px 14px;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.popover.top > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.popover.top > .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #fff;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.popover.bottom > .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #fff;\n  bottom: -10px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel-inner > .item {\n  display: none;\n  position: relative;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -moz-transition: -moz-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    -moz-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: 15%;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n  left: auto;\n  right: 0;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  outline: 0;\n  color: #fff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  margin-top: -10px;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  line-height: 1;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  border: 1px solid #fff;\n  border-radius: 10px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n  margin: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n//    without disabling user zoom.\n//\n\nhtml {\n  font-family: sans-serif; // 1\n  -ms-text-size-adjust: 100%; // 2\n  -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n  margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; // 1\n  vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n  background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n  outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n  font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n  font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n  border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n  margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n  overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n//    Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; // 1\n  font: inherit; // 2\n  margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n  overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n//    and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n//    `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n  cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n  line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; // 1\n  padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; // 1\n  box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n  border: 0; // 1\n  padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n  overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n  font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n    *,\n    *:before,\n    *:after {\n        background: transparent !important;\n        color: #000 !important; // Black prints faster: h5bp.com/s\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n\n    a,\n    a:visited {\n        text-decoration: underline;\n    }\n\n    a[href]:after {\n        content: \" (\" attr(href) \")\";\n    }\n\n    abbr[title]:after {\n        content: \" (\" attr(title) \")\";\n    }\n\n    // Don't show links that are fragment identifiers,\n    // or use the `javascript:` pseudo protocol\n    a[href^=\"#\"]:after,\n    a[href^=\"javascript:\"]:after {\n        content: \"\";\n    }\n\n    pre,\n    blockquote {\n        border: 1px solid #999;\n        page-break-inside: avoid;\n    }\n\n    thead {\n        display: table-header-group; // h5bp.com/t\n    }\n\n    tr,\n    img {\n        page-break-inside: avoid;\n    }\n\n    img {\n        max-width: 100% !important;\n    }\n\n    p,\n    h2,\n    h3 {\n        orphans: 3;\n        widows: 3;\n    }\n\n    h2,\n    h3 {\n        page-break-after: avoid;\n    }\n\n    // Bootstrap specific changes start\n\n    // Bootstrap components\n    .navbar {\n        display: none;\n    }\n    .btn,\n    .dropup > .btn {\n        > .caret {\n            border-top-color: #000 !important;\n        }\n    }\n    .label {\n        border: 1px solid #000;\n    }\n\n    .table {\n        border-collapse: collapse !important;\n\n        td,\n        th {\n            background-color: #fff !important;\n        }\n    }\n    .table-bordered {\n        th,\n        td {\n            border: 1px solid #ddd !important;\n        }\n    }\n\n    // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('@{icon-font-path}@{icon-font-name}.eot');\n  src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n       url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n       url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n       url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n       url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\002a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur                    { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n.glyphicon-cd                     { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file              { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file              { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up               { &:before { content: \"\\e204\"; } }\n.glyphicon-copy                   { &:before { content: \"\\e205\"; } }\n.glyphicon-paste                  { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door                   { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key                    { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert                  { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer              { &:before { content: \"\\e210\"; } }\n.glyphicon-king                   { &:before { content: \"\\e211\"; } }\n.glyphicon-queen                  { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn                   { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop                 { &:before { content: \"\\e214\"; } }\n.glyphicon-knight                 { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula           { &:before { content: \"\\e216\"; } }\n.glyphicon-tent                   { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard             { &:before { content: \"\\e218\"; } }\n.glyphicon-bed                    { &:before { content: \"\\e219\"; } }\n.glyphicon-apple                  { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase                  { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass              { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp                   { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate              { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank             { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors               { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin                { &:before { content: \"\\e227\"; } }\n.glyphicon-btc                    { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt                    { &:before { content: \"\\e227\"; } }\n.glyphicon-yen                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble                  { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub                    { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale                  { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly              { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted       { &:before { content: \"\\e232\"; } }\n.glyphicon-education              { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal      { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical        { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger         { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window           { &:before { content: \"\\e237\"; } }\n.glyphicon-oil                    { &:before { content: \"\\e238\"; } }\n.glyphicon-grain                  { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses             { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size              { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color             { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background        { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top       { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom    { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left      { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical  { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right     { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right         { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left          { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom        { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top           { &:before { content: \"\\e253\"; } }\n.glyphicon-console                { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript            { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript              { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left              { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right             { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down              { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up                { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n  .box-sizing(border-box);\n}\n*:before,\n*:after {\n  .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n  font-family: @font-family-base;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @text-color;\n  background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: @link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n  }\n\n  &:focus {\n    .tab-focus();\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: @thumbnail-padding;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top:    @line-height-computed;\n  margin-bottom: @line-height-computed;\n  border: 0;\n  border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto;\n  }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n  cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n  // Default\n  outline: thin dotted;\n  // WebKit\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 300;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n  background-color: @state-warning-bg;\n  padding: .2em;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: @dl-horizontal-breakpoint) {\n    dt {\n      float: left;\n      width: (@dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover,\n  a&:focus {\n    color: darken(@color, 10%);\n  }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover,\n  a&:focus {\n    background-color: darken(@color, 10%);\n  }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: bold;\n    box-shadow: none;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  floor((@gutter / 2));\n  padding-right: ceil((@gutter / 2));\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-left:  ceil((@gutter / -2));\n  margin-right: floor((@gutter / -2));\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n  left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n  right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-left:  ceil((@grid-gutter-width / 2));\n      padding-right: floor((@grid-gutter-width / 2));\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n  .col-@{class}-push-0 {\n    left: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n  .col-@{class}-pull-0 {\n    right: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: @table-bg;\n}\ncaption {\n  padding-top: @table-cell-padding;\n  padding-bottom: @table-cell-padding;\n  color: @text-muted;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    background-color: @table-bg-accent;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: @table-bg-hover;\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n  @media screen and (max-width: @screen-xs-max) {\n    width: 100%;\n    margin-bottom: (@line-height-computed * 0.75);\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &:hover > .@{state},\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; // IE8-9\n  line-height: normal;\n}\n\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Unstyle the caret on `<select>`s in IE10+.\n  &::-ms-expand {\n    border: 0;\n    background-color: transparent;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n  }\n\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 8.3, iOS doesn't support `datetime` or `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    &.form-control {\n      line-height: @input-height-base;\n    }\n\n    &.input-sm,\n    .input-group-sm & {\n      line-height: @input-height-small;\n    }\n\n    &.input-lg,\n    .input-group-lg & {\n      line-height: @input-height-large;\n    }\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n\n  label {\n    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n    padding-left: 20px;\n    margin-bottom: 0;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  &[disabled],\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n  &.disabled,\n  fieldset[disabled] & {\n    label {\n      cursor: @cursor-disabled;\n    }\n  }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  // Size it appropriately next to real form controls\n  padding-top: (@padding-base-vertical + 1);\n  padding-bottom: (@padding-base-vertical + 1);\n  // Remove default margin from `p`\n  margin-bottom: 0;\n  min-height: (@line-height-computed + @font-size-base);\n\n  &.input-lg,\n  &.input-sm {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n  .form-control {\n    height: @input-height-small;\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n    border-radius: @input-border-radius-small;\n  }\n  select.form-control {\n    height: @input-height-small;\n    line-height: @input-height-small;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-small;\n    min-height: (@line-height-computed + @font-size-small);\n    padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n  }\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n  .form-control {\n    height: @input-height-large;\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n    border-radius: @input-border-radius-large;\n  }\n  select.form-control {\n    height: @input-height-large;\n    line-height: @input-height-large;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-large;\n    min-height: (@line-height-computed + @font-size-large);\n    padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n  }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2; // Ensure icon is above input groups\n  display: block;\n  width: @input-height-base;\n  height: @input-height-base;\n  line-height: @input-height-base;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: @input-height-large;\n  height: @input-height-large;\n  line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: @input-height-small;\n  height: @input-height-small;\n  line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n  & ~ .form-control-feedback {\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n  }\n  &.sr-only ~ .form-control-feedback {\n    top: 0;\n  }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n\n    // Make static controls behave like regular ones\n    .form-control-static {\n      display: inline-block;\n    }\n\n    .input-group {\n      display: inline-table;\n      vertical-align: middle;\n\n      .input-group-addon,\n      .input-group-btn,\n      .form-control {\n        width: auto;\n      }\n    }\n\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match.\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      vertical-align: middle;\n\n      label {\n        padding-left: 0;\n      }\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      position: relative;\n      margin-left: 0;\n    }\n\n    // Re-override the feedback icon.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of radios and checkboxes\n  //\n  // Labels also get some reset styles, but that is scoped to a media query below.\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  // Reset spacing and right align labels, but scope to media queries so that\n  // labels on narrow viewports stack the same as a default form example.\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      text-align: right;\n      margin-bottom: 0;\n      padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    right: floor((@grid-gutter-width / 2));\n  }\n\n  // Form group sizes\n  //\n  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n  // inputs and labels within a `.form-group`.\n  .form-group-lg {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-large-vertical + 1);\n        font-size: @font-size-large;\n      }\n    }\n  }\n  .form-group-sm {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-small-vertical + 1);\n        font-size: @font-size-small;\n      }\n    }\n  }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  &.radio label,\n  &.checkbox label,\n  &.radio-inline label,\n  &.checkbox-inline label  {\n    color: @text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: @border-color;\n    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken(@border-color, 10%);\n      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n      .box-shadow(@shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: @text-color;\n    border-color: @border-color;\n    background-color: @background-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: @text-color;\n  }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n  &:focus {\n    border-color: @color;\n    outline: 0;\n    .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus,\n    &.focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus,\n  &.focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n    .opacity(.65);\n    .box-shadow(none);\n  }\n\n  a& {\n    &.disabled,\n    fieldset[disabled] & {\n      pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n    }\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &.active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:focus,\n  &.focus {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 25%);\n  }\n  &:hover {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n\n    &:hover,\n    &:focus,\n    &.focus {\n      color: @color;\n      background-color: darken(@background, 17%);\n          border-color: darken(@border, 25%);\n    }\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    background-image: none;\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus,\n    &.focus {\n      background-color: @background;\n          border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n  opacity: @opacity;\n  // IE8 filter\n  @opacity-ie: (@opacity * 100);\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n\n  &.in      { display: block; }\n  tr&.in    { display: table-row; }\n  tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition-property(~\"height, visibility\");\n  .transition-duration(.35s);\n  .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base dashed;\n  border-top:   @caret-width-base solid ~\"\\9\"; // IE8\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n\n  // Nuke hover/focus effects\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: @cursor-disabled;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: @caret-width-base dashed;\n    border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 2px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn,\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    .border-top-radius(@btn-border-radius-base);\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    .border-top-radius(0);\n    .border-bottom-radius(@btn-border-radius-base);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n\n  > .btn-group .dropdown-menu {\n    left: auto;\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n  > .btn,\n  > .btn-group > .btn {\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0,0,0,0);\n      pointer-events: none;\n    }\n  }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n  border-top-right-radius: @radius;\n   border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-bottom-right-radius: @radius;\n     border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n   border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-bottom-left-radius: @radius;\n     border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n    \n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @input-border-radius;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @input-border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @input-border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      z-index: 2;\n      margin-left: -1px;\n    }\n  }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: @cursor-disabled;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n    > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n  padding-left:  @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  .navbar-collapse {\n    max-height: @navbar-collapse-max-height;\n\n    @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n      max-height: 200px;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left:  -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n  height: @navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  > img {\n    display: block;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: @navbar-padding-horizontal;\n  padding: 9px 10px;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: 0;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n  }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -@navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  padding: 10px @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    .box-shadow(none);\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  .border-top-radius(@navbar-border-radius);\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-left: @navbar-padding-horizontal;\n    margin-right: @navbar-padding-horizontal;\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right {\n    .pull-right();\n    margin-right: -@navbar-padding-horizontal;\n\n    ~ .navbar-right {\n      margin-right: 0;\n    }\n  }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-default-link-active-bg;\n        color: @navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-default-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n      }\n    }\n  }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-inverse-link-active-bg;\n        color: @navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-inverse-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n      }\n    }\n  }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      line-height: @line-height-base;\n      text-decoration: none;\n      color: @pagination-color;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: @pagination-hover-color;\n      background-color: @pagination-hover-bg;\n      border-color: @pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 3;\n      color: @pagination-active-color;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n      line-height: @line-height;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      background-color: @pager-bg;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n  background-color: @color;\n\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n\n  .btn-xs &,\n  .btn-group-xs > .btn & {\n    top: 0;\n    padding: 1px 5px;\n  }\n\n  // Hover state, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @badge-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Account for badges in navs\n  .list-group-item.active > &,\n  .nav-pills > .active > a > & {\n    color: @badge-active-color;\n    background-color: @badge-active-bg;\n  }\n\n  .list-group-item > & {\n    float: right;\n  }\n\n  .list-group-item > & + & {\n    margin-right: 5px;\n  }\n\n  .nav-pills > li > a > & {\n    margin-left: 3px;\n  }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding-top:    @jumbotron-padding;\n  padding-bottom: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  > hr {\n    border-top-color: darken(@jumbotron-bg, 10%);\n  }\n\n  .container &,\n  .container-fluid & {\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n    padding-left:  (@grid-gutter-width / 2);\n    padding-right: (@grid-gutter-width / 2);\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top:    (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container &,\n    .container-fluid & {\n      padding-left:  (@jumbotron-padding * 2);\n      padding-right: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: @jumbotron-heading-font-size;\n    }\n  }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(border .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n  padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n  background-color: @background;\n  border-color: @border;\n  color: @text-color;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  background-color: @progress-bg;\n  border-radius: @progress-border-radius;\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n  background-color: @color;\n\n  // Deprecated parent class requirement as of v3.2.0\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n",".media {\n  // Proper spacing between instances of .media\n  margin-top: 15px;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n\n.media-body {\n  width: 10000px;\n}\n\n.media-object {\n  display: block;\n\n  // Fix collapse in webkit from max-width: 100% and display: table-cell.\n  &.img-thumbnail {\n    max-width: none;\n  }\n}\n\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n\n.media-middle {\n  vertical-align: middle;\n}\n\n.media-bottom {\n  vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // No need to set list-style: none; since .list-group-item is block level\n  margin-bottom: 20px;\n  padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -1px;\n  background-color: @list-group-bg;\n  border: 1px solid @list-group-border;\n\n  // Round the first and last items\n  &:first-child {\n    .border-top-radius(@list-group-border-radius);\n  }\n  &:last-child {\n    margin-bottom: 0;\n    .border-bottom-radius(@list-group-border-radius);\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n  color: @list-group-link-color;\n\n  .list-group-item-heading {\n    color: @list-group-link-heading-color;\n  }\n\n  // Hover state\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @list-group-link-hover-color;\n    background-color: @list-group-hover-bg;\n  }\n}\n\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n\n.list-group-item {\n  // Disabled state\n  &.disabled,\n  &.disabled:hover,\n  &.disabled:focus {\n    background-color: @list-group-disabled-bg;\n    color: @list-group-disabled-color;\n    cursor: @cursor-disabled;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-disabled-text-color;\n    }\n  }\n\n  // Active class on item itself, not parent\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: @list-group-active-color;\n    background-color: @list-group-active-bg;\n    border-color: @list-group-active-border;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading,\n    .list-group-item-heading > small,\n    .list-group-item-heading > .small {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-active-text-color;\n    }\n  }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n  .list-group-item-@{state} {\n    color: @color;\n    background-color: @background;\n\n    a&,\n    button& {\n      color: @color;\n\n      .list-group-item-heading {\n        color: inherit;\n      }\n\n      &:hover,\n      &:focus {\n        color: @color;\n        background-color: darken(@background, 5%);\n      }\n      &.active,\n      &.active:hover,\n      &.active:focus {\n        color: #fff;\n        background-color: @color;\n        border-color: @color;\n      }\n    }\n  }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: @line-height-computed;\n  background-color: @panel-bg;\n  border: 1px solid transparent;\n  border-radius: @panel-border-radius;\n  .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n  padding: @panel-body-padding;\n  &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n  padding: @panel-heading-padding;\n  border-bottom: 1px solid transparent;\n  .border-top-radius((@panel-border-radius - 1));\n\n  > .dropdown .dropdown-toggle {\n    color: inherit;\n  }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: ceil((@font-size-base * 1.125));\n  color: inherit;\n\n  > a,\n  > small,\n  > .small,\n  > small > a,\n  > .small > a {\n    color: inherit;\n  }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n  padding: @panel-footer-padding;\n  background-color: @panel-footer-bg;\n  border-top: 1px solid @panel-inner-border;\n  .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n  > .list-group,\n  > .panel-collapse > .list-group {\n    margin-bottom: 0;\n\n    .list-group-item {\n      border-width: 1px 0;\n      border-radius: 0;\n    }\n\n    // Add border top radius for first one\n    &:first-child {\n      .list-group-item:first-child {\n        border-top: 0;\n        .border-top-radius((@panel-border-radius - 1));\n      }\n    }\n\n    // Add border bottom radius for last one\n    &:last-child {\n      .list-group-item:last-child {\n        border-bottom: 0;\n        .border-bottom-radius((@panel-border-radius - 1));\n      }\n    }\n  }\n  > .panel-heading + .panel-collapse > .list-group {\n    .list-group-item:first-child {\n      .border-top-radius(0);\n    }\n  }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n  .list-group-item:first-child {\n    border-top-width: 0;\n  }\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n  > .table,\n  > .table-responsive > .table,\n  > .panel-collapse > .table {\n    margin-bottom: 0;\n\n    caption {\n      padding-left: @panel-body-padding;\n      padding-right: @panel-body-padding;\n    }\n  }\n  // Add border top radius for first one\n  > .table:first-child,\n  > .table-responsive:first-child > .table:first-child {\n    .border-top-radius((@panel-border-radius - 1));\n\n    > thead:first-child,\n    > tbody:first-child {\n      > tr:first-child {\n        border-top-left-radius: (@panel-border-radius - 1);\n        border-top-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-top-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-top-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  // Add border bottom radius for last one\n  > .table:last-child,\n  > .table-responsive:last-child > .table:last-child {\n    .border-bottom-radius((@panel-border-radius - 1));\n\n    > tbody:last-child,\n    > tfoot:last-child {\n      > tr:last-child {\n        border-bottom-left-radius: (@panel-border-radius - 1);\n        border-bottom-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-bottom-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-bottom-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  > .panel-body + .table,\n  > .panel-body + .table-responsive,\n  > .table + .panel-body,\n  > .table-responsive + .panel-body {\n    border-top: 1px solid @table-border-color;\n  }\n  > .table > tbody:first-child > tr:first-child th,\n  > .table > tbody:first-child > tr:first-child td {\n    border-top: 0;\n  }\n  > .table-bordered,\n  > .table-responsive > .table-bordered {\n    border: 0;\n    > thead,\n    > tbody,\n    > tfoot {\n      > tr {\n        > th:first-child,\n        > td:first-child {\n          border-left: 0;\n        }\n        > th:last-child,\n        > td:last-child {\n          border-right: 0;\n        }\n      }\n    }\n    > thead,\n    > tbody {\n      > tr:first-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n    > tbody,\n    > tfoot {\n      > tr:last-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n  }\n  > .table-responsive {\n    border: 0;\n    margin-bottom: 0;\n  }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n  margin-bottom: @line-height-computed;\n\n  // Tighten up margin so it's only between panels\n  .panel {\n    margin-bottom: 0;\n    border-radius: @panel-border-radius;\n\n    + .panel {\n      margin-top: 5px;\n    }\n  }\n\n  .panel-heading {\n    border-bottom: 0;\n\n    + .panel-collapse > .panel-body,\n    + .panel-collapse > .list-group {\n      border-top: 1px solid @panel-inner-border;\n    }\n  }\n\n  .panel-footer {\n    border-top: 0;\n    + .panel-collapse .panel-body {\n      border-bottom: 1px solid @panel-inner-border;\n    }\n  }\n}\n\n\n// Contextual variations\n.panel-default {\n  .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n  .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n  .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n  .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n  .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n  .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n  border-color: @border;\n\n  & > .panel-heading {\n    color: @heading-text-color;\n    background-color: @heading-bg-color;\n    border-color: @heading-border;\n\n    + .panel-collapse > .panel-body {\n      border-top-color: @border;\n    }\n    .badge {\n      color: @heading-bg-color;\n      background-color: @heading-text-color;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse > .panel-body {\n      border-bottom-color: @border;\n    }\n  }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n\n  .embed-responsive-item,\n  iframe,\n  embed,\n  object,\n  video {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    height: 100%;\n    width: 100%;\n    border: 0;\n  }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: @well-bg;\n  border: 1px solid @well-border;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n  blockquote {\n    border-color: #ddd;\n    border-color: rgba(0,0,0,.15);\n  }\n}\n\n// Sizes\n.well-lg {\n  padding: 24px;\n  border-radius: @border-radius-large;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-size-base * 1.5);\n  font-weight: @close-font-weight;\n  line-height: 1;\n  color: @close-color;\n  text-shadow: @close-text-shadow;\n  .opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: @close-color;\n    text-decoration: none;\n    cursor: pointer;\n    .opacity(.5);\n  }\n\n  // Additional properties for button version\n  // iOS requires the button element instead of an anchor tag.\n  // If you want the anchor version, it requires `href=\"#\"`.\n  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n  button& {\n    padding: 0;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    -webkit-appearance: none;\n  }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal;\n  -webkit-overflow-scrolling: touch;\n\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n\n  // When fading in the modal, animate it to slide down\n  &.fade .modal-dialog {\n    .translate(0, -25%);\n    .transition-transform(~\"0.3s ease-out\");\n  }\n  &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  background-color: @modal-content-bg;\n  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n  border: 1px solid @modal-content-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 3px 9px rgba(0,0,0,.5));\n  background-clip: padding-box;\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal-background;\n  background-color: @modal-backdrop-bg;\n  // Fade for backdrop\n  &.fade { .opacity(0); }\n  &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  padding: @modal-title-padding;\n  border-bottom: 1px solid @modal-header-border-color;\n  &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  padding: @modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid @modal-footer-border-color;\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-left: 5px;\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: @modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    .box-shadow(0 5px 15px rgba(0,0,0,.5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n  .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  z-index: @zindex-tooltip;\n  display: block;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-small;\n\n  .opacity(0);\n\n  &.in     { .opacity(@tooltip-opacity); }\n  &.top    { margin-top:  -3px; padding: @tooltip-arrow-width 0; }\n  &.right  { margin-left:  3px; padding: 0 @tooltip-arrow-width; }\n  &.bottom { margin-top:   3px; padding: @tooltip-arrow-width 0; }\n  &.left   { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: @tooltip-max-width;\n  padding: 3px 8px;\n  color: @tooltip-color;\n  text-align: center;\n  background-color: @tooltip-bg;\n  border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n  &.top .tooltip-arrow {\n    bottom: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-left .tooltip-arrow {\n    bottom: 0;\n    right: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-right .tooltip-arrow {\n    bottom: 0;\n    left: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.right .tooltip-arrow {\n    top: 50%;\n    left: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-right-color: @tooltip-arrow-color;\n  }\n  &.left .tooltip-arrow {\n    top: 50%;\n    right: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-left-color: @tooltip-arrow-color;\n  }\n  &.bottom .tooltip-arrow {\n    top: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-left .tooltip-arrow {\n    top: 0;\n    right: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-right .tooltip-arrow {\n    top: 0;\n    left: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n}\n",".reset-text() {\n  font-family: @font-family-base;\n  // We deliberately do NOT reset font-size.\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: @line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: @zindex-popover;\n  display: none;\n  max-width: @popover-max-width;\n  padding: 1px;\n  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-base;\n\n  background-color: @popover-bg;\n  background-clip: padding-box;\n  border: 1px solid @popover-fallback-border-color;\n  border: 1px solid @popover-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n  // Offset the popover to account for the popover arrow\n  &.top     { margin-top: -@popover-arrow-width; }\n  &.right   { margin-left: @popover-arrow-width; }\n  &.bottom  { margin-top: @popover-arrow-width; }\n  &.left    { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n  margin: 0; // reset heading margin\n  padding: 8px 14px;\n  font-size: @font-size-base;\n  background-color: @popover-title-bg;\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\n  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n  &,\n  &:after {\n    position: absolute;\n    display: block;\n    width: 0;\n    height: 0;\n    border-color: transparent;\n    border-style: solid;\n  }\n}\n.popover > .arrow {\n  border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n  border-width: @popover-arrow-width;\n  content: \"\";\n}\n\n.popover {\n  &.top > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-bottom-width: 0;\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-top-color: @popover-arrow-outer-color;\n    bottom: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      bottom: 1px;\n      margin-left: -@popover-arrow-width;\n      border-bottom-width: 0;\n      border-top-color: @popover-arrow-color;\n    }\n  }\n  &.right > .arrow {\n    top: 50%;\n    left: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-left-width: 0;\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-right-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      left: 1px;\n      bottom: -@popover-arrow-width;\n      border-left-width: 0;\n      border-right-color: @popover-arrow-color;\n    }\n  }\n  &.bottom > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-width: 0;\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-bottom-color: @popover-arrow-outer-color;\n    top: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      top: 1px;\n      margin-left: -@popover-arrow-width;\n      border-top-width: 0;\n      border-bottom-color: @popover-arrow-color;\n    }\n  }\n\n  &.left > .arrow {\n    top: 50%;\n    right: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-width: 0;\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-left-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      right: 1px;\n      border-right-width: 0;\n      border-left-color: @popover-arrow-color;\n      bottom: -@popover-arrow-width;\n    }\n  }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n\n    // WebKit CSS3 transforms for supported devices\n    @media all and (transform-3d), (-webkit-transform-3d) {\n      .transition-transform(~'0.6s ease-in-out');\n      .backface-visibility(~'hidden');\n      .perspective(1000px);\n\n      &.next,\n      &.active.right {\n        .translate3d(100%, 0, 0);\n        left: 0;\n      }\n      &.prev,\n      &.active.left {\n        .translate3d(-100%, 0, 0);\n        left: 0;\n      }\n      &.next.left,\n      &.prev.right,\n      &.active {\n        .translate3d(0, 0, 0);\n        left: 0;\n      }\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev {\n    display: block;\n  }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: 0;\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    margin-top: -10px;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n    margin-left: -10px;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n    margin-right: -10px;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    line-height: 1;\n    font-family: serif;\n  }\n\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: (@carousel-control-font-size * 1.5);\n      height: (@carousel-control-font-size * 1.5);\n      margin-top: (@carousel-control-font-size / -2);\n      font-size: (@carousel-control-font-size * 1.5);\n    }\n    .glyphicon-chevron-left,\n    .icon-prev {\n      margin-left: (@carousel-control-font-size / -2);\n    }\n    .glyphicon-chevron-right,\n    .icon-next {\n      margin-right: (@carousel-control-font-size / -2);\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n  &:before,\n  &:after {\n    content: \" \"; // 1\n    display: table; // 2\n  }\n  &:after {\n    clear: both;\n  }\n}\n","// Center-align a block level element\n\n.center-block() {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n  font: ~\"0/0\" a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n  .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n  width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n\n.visible-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-visibility();\n  }\n}\n.visible-xs-block {\n  @media (max-width: @screen-xs-max) {\n    display: block !important;\n  }\n}\n.visible-xs-inline {\n  @media (max-width: @screen-xs-max) {\n    display: inline !important;\n  }\n}\n.visible-xs-inline-block {\n  @media (max-width: @screen-xs-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-visibility();\n  }\n}\n.visible-sm-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: block !important;\n  }\n}\n.visible-sm-inline {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline !important;\n  }\n}\n.visible-sm-inline-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-visibility();\n  }\n}\n.visible-md-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: block !important;\n  }\n}\n.visible-md-inline {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline !important;\n  }\n}\n.visible-md-inline-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-visibility();\n  }\n}\n.visible-lg-block {\n  @media (min-width: @screen-lg-min) {\n    display: block !important;\n  }\n}\n.visible-lg-inline {\n  @media (min-width: @screen-lg-min) {\n    display: inline !important;\n  }\n}\n.visible-lg-inline-block {\n  @media (min-width: @screen-lg-min) {\n    display: inline-block !important;\n  }\n}\n\n.hidden-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-invisibility();\n  }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n  .responsive-invisibility();\n\n  @media print {\n    .responsive-visibility();\n  }\n}\n.visible-print-block {\n  display: none !important;\n\n  @media print {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n\n  @media print {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n\n  @media print {\n    display: inline-block !important;\n  }\n}\n\n.hidden-print {\n  @media print {\n    .responsive-invisibility();\n  }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n  display: block !important;\n  table&  { display: table !important; }\n  tr&     { display: table-row !important; }\n  th&,\n  td&     { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n  display: none !important;\n}\n"]}
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.min.css b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.min.css
index 2b927f8..4cf729e 100755
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.min.css
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.min.css
@@ -1,9 +1,6 @@
 /*!
- * Bootstrap v2.3.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:200px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:220px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:400px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.min.css.map b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.min.css.map
new file mode 100644
index 0000000..5f49bb3
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/normalize.less","less/print.less","bootstrap.css","dist/css/bootstrap.css","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":";;;;4EAQA,KACE,YAAA,WACA,yBAAA,KACA,qBAAA,KAOF,KACE,OAAA,EAaF,QAAA,MAAA,QAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,KAAA,IAAA,QAAA,QAaE,QAAA,MAQF,MAAA,OAAA,SAAA,MAIE,QAAA,aACA,eAAA,SAQF,sBACE,QAAA,KACA,OAAA,EAQF,SAAA,SAEE,QAAA,KAUF,EACE,iBAAA,YAQF,SAAA,QAEE,QAAA,EAUF,YACE,cAAA,IAAA,OAOF,EAAA,OAEE,YAAA,IAOF,IACE,WAAA,OAQF,GACE,OAAA,MAAA,EACA,UAAA,IAOF,KACE,MAAA,KACA,WAAA,KAOF,MACE,UAAA,IAOF,IAAA,IAEE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IACE,IAAA,MAGF,IACE,OAAA,OAUF,IACE,OAAA,EAOF,eACE,SAAA,OAUF,OACE,OAAA,IAAA,KAOF,GACE,OAAA,EAAA,mBAAA,YAAA,gBAAA,YACA,WAAA,YAOF,IACE,SAAA,KAOF,KAAA,IAAA,IAAA,KAIE,YAAA,UAAA,UACA,UAAA,IAkBF,OAAA,MAAA,SAAA,OAAA,SAKE,OAAA,EACA,KAAA,QACA,MAAA,QAOF,OACE,SAAA,QAUF,OAAA,OAEE,eAAA,KAWF,OAAA,wBAAA,kBAAA,mBAIE,mBAAA,OACA,OAAA,QAOF,iBAAA,qBAEE,OAAA,QAOF,yBAAA,wBAEE,QAAA,EACA,OAAA,EAQF,MACE,YAAA,OAWF,qBAAA,kBAEE,mBAAA,WAAA,gBAAA,WAAA,WAAA,WACA,QAAA,EASF,8CAAA,8CAEE,OAAA,KAQF,mBACE,mBAAA,YACA,gBAAA,YAAA,WAAA,YAAA,mBAAA,UASF,iDAAA,8CAEE,mBAAA,KAOF,SACE,QAAA,MAAA,OAAA,MACA,OAAA,EAAA,IACA,OAAA,IAAA,MAAA,OAQF,OACE,QAAA,EACA,OAAA,EAOF,SACE,SAAA,KAQF,SACE,YAAA,IAUF,MACE,eAAA,EACA,gBAAA,SAGF,GAAA,GAEE,QAAA,uFCjUF,aA7FI,EAAA,OAAA,QAGI,MAAA,eACA,YAAA,eACA,WAAA,cAAA,mBAAA,eACA,WAAA,eAGJ,EAAA,UAEI,gBAAA,UAGJ,cACI,QAAA,KAAA,WAAA,IAGJ,kBACI,QAAA,KAAA,YAAA,IAKJ,6BAAA,mBAEI,QAAA,GAGJ,WAAA,IAEI,OAAA,IAAA,MAAA,KC4KL,kBAAA,MDvKK,MC0KL,QAAA,mBDrKK,IE8KN,GDLC,kBAAA,MDrKK,ICwKL,UAAA,eCUD,GF5KM,GE2KN,EF1KM,QAAA,ECuKL,OAAA,ECSD,GF3KM,GCsKL,iBAAA,MD/JK,QCkKL,QAAA,KCSD,YFtKU,oBCiKT,iBAAA,eD7JK,OCgKL,OAAA,IAAA,MAAA,KD5JK,OC+JL,gBAAA,mBCSD,UFpKU,UC+JT,iBAAA,eDzJS,mBEkKV,mBDLC,OAAA,IAAA,MAAA,gBEjPD,WACA,YAAA,uBFsPD,IAAA,+CE7OC,IAAK,sDAAuD,4BAA6B,iDAAkD,gBAAiB,gDAAiD,eAAgB,+CAAgD,mBAAoB,2EAA4E,cAE7W,WACA,SAAA,SACA,IAAA,IACA,QAAA,aACA,YAAA,uBACA,WAAA,OACA,YAAA,IACA,YAAA,EAIkC,uBAAA,YAAW,wBAAA,UACX,2BAAW,QAAA,QAEX,uBDuPlC,QAAS,QCtPyB,sBFiPnC,uBEjP8C,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,qBAAW,QAAA,QACX,0BAAW,QAAA,QACX,qBAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,sBAAW,QAAA,QACX,yBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,+BAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,gCAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,gCAAW,QAAA,QACX,gCAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,0BAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,mCAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,sBAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,0BAAW,QAAA,QACX,4BAAW,QAAA,QACX,qCAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,mCAAW,QAAA,QACX,uCAAW,QAAA,QACX,gCAAW,QAAA,QACX,oCAAW,QAAA,QACX,qCAAW,QAAA,QACX,yCAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,iCAAW,QAAA,QACX,oCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,qBAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QASX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,+BAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,mCAAW,QAAA,QACX,4BAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,kCAAW,QAAA,QACX,mCAAW,QAAA,QACX,sCAAW,QAAA,QACX,0CAAW,QAAA,QACX,oCAAW,QAAA,QACX,wCAAW,QAAA,QACX,qCAAW,QAAA,QACX,iCAAW,QAAA,QACX,gCAAW,QAAA,QACX,kCAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QCtS/C,0BCgEE,QAAA,QHi+BF,EDNC,mBAAA,WGxhCI,gBAAiB,WFiiCZ,WAAY,WGl+BZ,OADL,QJg+BJ,mBAAA,WGthCI,gBAAiB,WACpB,WAAA,WHyhCD,KGrhCC,UAAW,KAEX,4BAAA,cAEA,KACA,YAAA,iBAAA,UAAA,MAAA,WHuhCD,UAAA,KGnhCC,YAAa,WF4hCb,MAAO,KACP,iBAAkB,KExhClB,OADA,MAEA,OHqhCD,SG/gCC,YAAa,QACb,UAAA,QACA,YAAA,QAEA,EFwhCA,MAAO,QEthCL,gBAAA,KAIF,QH8gCD,QKnkCC,MAAA,QAEA,gBAAA,ULskCD,QGxgCC,QAAS,KAAK,OACd,QAAA,IAAA,KAAA,yBH0gCD,eAAA,KGngCC,OHsgCD,OAAA,ECSD,IACE,eAAgB,ODDjB,4BMhlCC,0BLmlCF,gBKplCE,iBADA,eH4EA,QAAS,MACT,UAAA,KHwgCD,OAAA,KGjgCC,aACA,cAAA,IAEA,eACA,QAAA,aC6FA,UAAA,KACK,OAAA,KACG,QAAA,IEvLR,YAAA,WACA,iBAAA,KACA,OAAA,IAAA,MAAA,KNgmCD,cAAA,IGlgCC,mBAAoB,IAAI,IAAI,YAC5B,cAAA,IAAA,IAAA,YHogCD,WAAA,IAAA,IAAA,YG7/BC,YACA,cAAA,IAEA,GHggCD,WAAA,KGx/BC,cAAe,KACf,OAAA,EACA,WAAA,IAAA,MAAA,KAEA,SACA,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EH0/BD,OAAA,KGl/BC,SAAA,OF2/BA,KAAM,cEz/BJ,OAAA,EAEA,0BACA,yBACA,SAAA,OACA,MAAA,KHo/BH,OAAA,KGz+BC,OAAQ,EACR,SAAA,QH2+BD,KAAA,KCSD,cACE,OAAQ,QAQV,IACA,IMnpCE,IACA,IACA,IACA,INyoCF,GACA,GACA,GACA,GACA,GACA,GDAC,YAAA,QOnpCC,YAAa,IN4pCb,YAAa,IACb,MAAO,QAoBT,WAZA,UAaA,WAZA,UM7pCI,WN8pCJ,UM7pCI,WN8pCJ,UM7pCI,WN8pCJ,UDMC,WCLD,UACA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SMrpCE,YAAa,INyqCb,YAAa,EACb,MAAO,KAGT,IMzqCE,IAJF,IN4qCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UM7qCA,WN+qCA,UACA,UANA,SM7qCI,UN+qCJ,SM5qCA,UN8qCA,SAQE,UAAW,IAGb,IMrrCE,IAJF,INwrCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UMxrCA,WN0rCA,UACA,UANA,SMzrCI,UN2rCJ,SMvrCA,UNyrCA,SMzrCU,UAAA,IACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KAOR,IADF,GPusCC,UAAA,KCSD,EM1sCE,OAAA,EAAA,EAAA,KAEA,MPqsCD,cAAA,KOhsCC,UAAW,KAwOX,YAAa,IA1OX,YAAA,IPusCH,yBO9rCC,MNusCE,UAAW,MMlsCf,OAAA,MAEE,UAAA,IAKF,MP2rCC,KO3rCsB,QAAA,KP8rCtB,iBAAA,QO7rCsB,WPgsCtB,WAAA,KO/rCsB,YPksCtB,WAAA,MOjsCsB,aPosCtB,WAAA,OOnsCsB,cPssCtB,WAAA,QOnsCsB,aPssCtB,YAAA,OOrsCsB,gBPwsCtB,eAAA,UOvsCsB,gBP0sCtB,eAAA,UOtsCC,iBPysCD,eAAA,WQ5yCC,YR+yCD,MAAA,KCSD,cOrzCI,MAAA,QAHF,qBDwGF,qBP8sCC,MAAA,QCSD,cO5zCI,MAAA,QAHF,qBD2GF,qBPktCC,MAAA,QCSD,WOn0CI,MAAA,QAHF,kBD8GF,kBPstCC,MAAA,QCSD,cO10CI,MAAA,QAHF,qBDiHF,qBP0tCC,MAAA,QCSD,aOj1CI,MAAA,QDwHF,oBAHF,oBExHE,MAAA,QACA,YR21CA,MAAO,KQz1CL,iBAAA,QAHF,mBF8HF,mBP4tCC,iBAAA,QCSD,YQh2CI,iBAAA,QAHF,mBFiIF,mBPguCC,iBAAA,QCSD,SQv2CI,iBAAA,QAHF,gBFoIF,gBPouCC,iBAAA,QCSD,YQ92CI,iBAAA,QAHF,mBFuIF,mBPwuCC,iBAAA,QCSD,WQr3CI,iBAAA,QF6IF,kBADF,kBAEE,iBAAA,QPuuCD,aO9tCC,eAAgB,INuuChB,OAAQ,KAAK,EAAE,KMruCf,cAAA,IAAA,MAAA,KAFF,GPmuCC,GCSC,WAAY,EACZ,cAAe,KM/tCf,MP2tCD,MO5tCD,MAPI,MASF,cAAA,EAIF,eALE,aAAA,EACA,WAAA,KPmuCD,aO/tCC,aAAc,EAKZ,YAAA,KACA,WAAA,KP8tCH,gBOxtCC,QAAS,aACT,cAAA,IACA,aAAA,IAEF,GNiuCE,WAAY,EM/tCZ,cAAA,KAGA,GADF,GP2tCC,YAAA,WOvtCC,GP0tCD,YAAA,IOpnCD,GAvFM,YAAA,EAEA,yBACA,kBGtNJ,MAAA,KACA,MAAA,MACA,SAAA,OVs6CC,MAAA,KO9nCC,WAAY,MAhFV,cAAA,SPitCH,YAAA,OOvsCD,kBNitCE,YAAa,OM3sCjB,0BPusCC,YOtsCC,OAAA,KA9IqB,cAAA,IAAA,OAAA,KAmJvB,YACE,UAAA,IACA,eAAA,UAEA,WPusCD,QAAA,KAAA,KOlsCG,OAAA,EAAA,EAAA,KN2sCF,UAAW,OACX,YAAa,IAAI,MAAM,KMrtCzB,yBPgtCC,wBOhtCD,yBN0tCE,cAAe,EMpsCb,kBAFA,kBACA,iBPmsCH,QAAA,MOhsCG,UAAA,INysCF,YAAa,WACb,MAAO,KMjsCT,yBP4rCC,yBO5rCD,wBAEE,QAAA,cAEA,oBACA,sBACA,cAAA,KP8rCD,aAAA,EOxrCG,WAAA,MNisCF,aAAc,IAAI,MAAM,KACxB,YAAa,EMjsCX,kCNmsCJ,kCMpsCe,iCACX,oCNosCJ,oCDLC,mCCUC,QAAS,GMlsCX,iCNosCA,iCM1sCM,gCAOJ,mCNosCF,mCDLC,kCO9rCC,QAAA,cPmsCD,QWx+CC,cAAe,KVi/Cf,WAAY,OACZ,YAAa,WU9+Cb,KX0+CD,IWt+CD,IACE,KACA,YAAA,MAAA,OAAA,SAAA,cAAA,UAEA,KACA,QAAA,IAAA,IXw+CD,UAAA,IWp+CC,MAAO,QACP,iBAAA,QACA,cAAA,IAEA,IACA,QAAA,IAAA,IACA,UAAA,IV6+CA,MU7+CA,KXs+CD,iBAAA,KW5+CC,cAAe,IASb,mBAAA,MAAA,EAAA,KAAA,EAAA,gBACA,WAAA,MAAA,EAAA,KAAA,EAAA,gBAEA,QV8+CF,QU9+CE,EXs+CH,UAAA,KWj+CC,YAAa,IACb,mBAAA,KACA,WAAA,KAEA,IACA,QAAA,MACA,QAAA,MACA,OAAA,EAAA,EAAA,KACA,UAAA,KACA,YAAA,WACA,MAAA,KACA,WAAA,UXm+CD,UAAA,WW9+CC,iBAAkB,QAehB,OAAA,IAAA,MAAA,KACA,cAAA,IAEA,SACA,QAAA,EACA,UAAA,QXk+CH,MAAA,QW79CC,YAAa,SACb,iBAAA,YACA,cAAA,EC1DF,gBCHE,WAAA,MACA,WAAA,OAEA,Wb+hDD,cAAA,KYzhDC,aAAA,KAqEA,aAAc,KAvEZ,YAAA,KZgiDH,yBY3hDC,WAkEE,MAAO,OZ89CV,yBY7hDC,WA+DE,MAAO,OZm+CV,0BY1hDC,WCvBA,MAAA,QAGA,iBbojDD,cAAA,KYvhDC,aAAc,KCvBd,aAAA,KACA,YAAA,KCAE,KACE,aAAA,MAEA,YAAA,MAGA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UdijDL,SAAA,ScjiDG,WAAA,IACE,cAAA,KdmiDL,aAAA,Kc3hDG,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud8hDH,MAAA,Kc9hDG,WdiiDH,MAAA,KcjiDG,WdoiDH,MAAA,acpiDG,WduiDH,MAAA,acviDG,Ud0iDH,MAAA,Ic1iDG,Ud6iDH,MAAA,ac7iDG,UdgjDH,MAAA,achjDG,UdmjDH,MAAA,IcnjDG,UdsjDH,MAAA,actjDG,UdyjDH,MAAA,aczjDG,Ud4jDH,MAAA,Ic5jDG,Ud+jDH,MAAA,achjDG,UdmjDH,MAAA,YcnjDG,gBdsjDH,MAAA,KctjDG,gBdyjDH,MAAA,aczjDG,gBd4jDH,MAAA,ac5jDG,ed+jDH,MAAA,Ic/jDG,edkkDH,MAAA,aclkDG,edqkDH,MAAA,acrkDG,edwkDH,MAAA,IcxkDG,ed2kDH,MAAA,ac3kDG,ed8kDH,MAAA,ac9kDG,edilDH,MAAA,IcjlDG,edolDH,MAAA,ac/kDG,edklDH,MAAA,YcjmDG,edomDH,MAAA,KcpmDG,gBdumDH,KAAA,KcvmDG,gBd0mDH,KAAA,ac1mDG,gBd6mDH,KAAA,ac7mDG,edgnDH,KAAA,IchnDG,edmnDH,KAAA,acnnDG,edsnDH,KAAA,actnDG,edynDH,KAAA,IcznDG,ed4nDH,KAAA,ac5nDG,ed+nDH,KAAA,ac/nDG,edkoDH,KAAA,IcloDG,edqoDH,KAAA,achoDG,edmoDH,KAAA,YcpnDG,edunDH,KAAA,KcvnDG,kBd0nDH,YAAA,Kc1nDG,kBd6nDH,YAAA,ac7nDG,kBdgoDH,YAAA,achoDG,iBdmoDH,YAAA,IcnoDG,iBdsoDH,YAAA,actoDG,iBdyoDH,YAAA,aczoDG,iBd4oDH,YAAA,Ic5oDG,iBd+oDH,YAAA,ac/oDG,iBdkpDH,YAAA,aclpDG,iBdqpDH,YAAA,IcrpDG,iBdwpDH,YAAA,acxpDG,iBd2pDH,YAAA,Yc7rDG,iBACE,YAAA,EAOJ,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud2rDD,MAAA,Kc3rDC,Wd8rDD,MAAA,Kc9rDC,WdisDD,MAAA,acjsDC,WdosDD,MAAA,acpsDC,UdusDD,MAAA,IcvsDC,Ud0sDD,MAAA,ac1sDC,Ud6sDD,MAAA,ac7sDC,UdgtDD,MAAA,IchtDC,UdmtDD,MAAA,acntDC,UdstDD,MAAA,acttDC,UdytDD,MAAA,IcztDC,Ud4tDD,MAAA,ac7sDC,UdgtDD,MAAA,YchtDC,gBdmtDD,MAAA,KcntDC,gBdstDD,MAAA,acttDC,gBdytDD,MAAA,acztDC,ed4tDD,MAAA,Ic5tDC,ed+tDD,MAAA,ac/tDC,edkuDD,MAAA,acluDC,edquDD,MAAA,IcruDC,edwuDD,MAAA,acxuDC,ed2uDD,MAAA,ac3uDC,ed8uDD,MAAA,Ic9uDC,edivDD,MAAA,ac5uDC,ed+uDD,MAAA,Yc9vDC,ediwDD,MAAA,KcjwDC,gBdowDD,KAAA,KcpwDC,gBduwDD,KAAA,acvwDC,gBd0wDD,KAAA,ac1wDC,ed6wDD,KAAA,Ic7wDC,edgxDD,KAAA,achxDC,edmxDD,KAAA,acnxDC,edsxDD,KAAA,IctxDC,edyxDD,KAAA,aczxDC,ed4xDD,KAAA,ac5xDC,ed+xDD,KAAA,Ic/xDC,edkyDD,KAAA,ac7xDC,edgyDD,KAAA,YcjxDC,edoxDD,KAAA,KcpxDC,kBduxDD,YAAA,KcvxDC,kBd0xDD,YAAA,ac1xDC,kBd6xDD,YAAA,ac7xDC,iBdgyDD,YAAA,IchyDC,iBdmyDD,YAAA,acnyDC,iBdsyDD,YAAA,actyDC,iBdyyDD,YAAA,IczyDC,iBd4yDD,YAAA,ac5yDC,iBd+yDD,YAAA,ac/yDC,iBdkzDD,YAAA,IclzDC,iBdqzDD,YAAA,acrzDC,iBdwzDD,YAAA,YY/yDD,iBE3CE,YAAA,GAQF,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Udy1DD,MAAA,Kcz1DC,Wd41DD,MAAA,Kc51DC,Wd+1DD,MAAA,ac/1DC,Wdk2DD,MAAA,acl2DC,Udq2DD,MAAA,Icr2DC,Udw2DD,MAAA,acx2DC,Ud22DD,MAAA,ac32DC,Ud82DD,MAAA,Ic92DC,Udi3DD,MAAA,acj3DC,Udo3DD,MAAA,acp3DC,Udu3DD,MAAA,Icv3DC,Ud03DD,MAAA,ac32DC,Ud82DD,MAAA,Yc92DC,gBdi3DD,MAAA,Kcj3DC,gBdo3DD,MAAA,acp3DC,gBdu3DD,MAAA,acv3DC,ed03DD,MAAA,Ic13DC,ed63DD,MAAA,ac73DC,edg4DD,MAAA,ach4DC,edm4DD,MAAA,Icn4DC,eds4DD,MAAA,act4DC,edy4DD,MAAA,acz4DC,ed44DD,MAAA,Ic54DC,ed+4DD,MAAA,ac14DC,ed64DD,MAAA,Yc55DC,ed+5DD,MAAA,Kc/5DC,gBdk6DD,KAAA,Kcl6DC,gBdq6DD,KAAA,acr6DC,gBdw6DD,KAAA,acx6DC,ed26DD,KAAA,Ic36DC,ed86DD,KAAA,ac96DC,edi7DD,KAAA,acj7DC,edo7DD,KAAA,Icp7DC,edu7DD,KAAA,acv7DC,ed07DD,KAAA,ac17DC,ed67DD,KAAA,Ic77DC,edg8DD,KAAA,ac37DC,ed87DD,KAAA,Yc/6DC,edk7DD,KAAA,Kcl7DC,kBdq7DD,YAAA,Kcr7DC,kBdw7DD,YAAA,acx7DC,kBd27DD,YAAA,ac37DC,iBd87DD,YAAA,Ic97DC,iBdi8DD,YAAA,acj8DC,iBdo8DD,YAAA,acp8DC,iBdu8DD,YAAA,Icv8DC,iBd08DD,YAAA,ac18DC,iBd68DD,YAAA,ac78DC,iBdg9DD,YAAA,Ich9DC,iBdm9DD,YAAA,acn9DC,iBds9DD,YAAA,YY18DD,iBE9CE,YAAA,GAQF,0BACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Udu/DD,MAAA,Kcv/DC,Wd0/DD,MAAA,Kc1/DC,Wd6/DD,MAAA,ac7/DC,WdggED,MAAA,achgEC,UdmgED,MAAA,IcngEC,UdsgED,MAAA,actgEC,UdygED,MAAA,aczgEC,Ud4gED,MAAA,Ic5gEC,Ud+gED,MAAA,ac/gEC,UdkhED,MAAA,aclhEC,UdqhED,MAAA,IcrhEC,UdwhED,MAAA,aczgEC,Ud4gED,MAAA,Yc5gEC,gBd+gED,MAAA,Kc/gEC,gBdkhED,MAAA,aclhEC,gBdqhED,MAAA,acrhEC,edwhED,MAAA,IcxhEC,ed2hED,MAAA,ac3hEC,ed8hED,MAAA,ac9hEC,ediiED,MAAA,IcjiEC,edoiED,MAAA,acpiEC,eduiED,MAAA,acviEC,ed0iED,MAAA,Ic1iEC,ed6iED,MAAA,acxiEC,ed2iED,MAAA,Yc1jEC,ed6jED,MAAA,Kc7jEC,gBdgkED,KAAA,KchkEC,gBdmkED,KAAA,acnkEC,gBdskED,KAAA,actkEC,edykED,KAAA,IczkEC,ed4kED,KAAA,ac5kEC,ed+kED,KAAA,ac/kEC,edklED,KAAA,IcllEC,edqlED,KAAA,acrlEC,edwlED,KAAA,acxlEC,ed2lED,KAAA,Ic3lEC,ed8lED,KAAA,aczlEC,ed4lED,KAAA,Yc7kEC,edglED,KAAA,KchlEC,kBdmlED,YAAA,KcnlEC,kBdslED,YAAA,actlEC,kBdylED,YAAA,aczlEC,iBd4lED,YAAA,Ic5lEC,iBd+lED,YAAA,ac/lEC,iBdkmED,YAAA,aclmEC,iBdqmED,YAAA,IcrmEC,iBdwmED,YAAA,acxmEC,iBd2mED,YAAA,ac3mEC,iBd8mED,YAAA,Ic9mEC,iBdinED,YAAA,acjnEC,iBdonED,YAAA,YevrED,iBACA,YAAA,GAGA,MACA,iBAAA,YAEA,Qf0rED,YAAA,IexrEC,eAAgB,IAChB,MAAA,Kf0rED,WAAA,KenrEC,GACA,WAAA,KfurED,OezrEC,MAAO,KdosEP,UAAW,KACX,cAAe,KcxrET,mBd2rER,mBc1rEQ,mBAHA,mBACA,mBd2rER,mBDHC,QAAA,IepsEC,YAAa,WAoBX,eAAA,IACA,WAAA,IAAA,MAAA,KArBJ,mBdmtEE,eAAgB,OAChB,cAAe,IAAI,MAAM,KDJ1B,uCCMD,uCcttEA,wCdutEA,wCcnrEI,2CANI,2CfqrEP,WAAA,Ee1qEG,mBf6qEH,WAAA,IAAA,MAAA,KCWD,cACE,iBAAkB,KchqEpB,6BdmqEA,6BclqEE,6BAZM,6BfuqEP,6BCMD,6BDHC,QAAA,ICWD,gBACE,OAAQ,IAAI,MAAM,Kc3qEpB,4Bd8qEA,4Bc9qEA,4BAQQ,4Bf+pEP,4BCMD,4Bc9pEM,OAAA,IAAA,MAAA,KAYF,4BAFJ,4BfqpEC,oBAAA,IexoEG,yCf2oEH,iBAAA,QejoEC,4BACA,iBAAA,QfqoED,uBe/nEG,SAAA,Od0oEF,QAAS,aczoEL,MAAA,KAEA,sBfkoEL,sBgB9wEC,SAAA,OfyxEA,QAAS,WACT,MAAO,KAST,0BetxEE,0BfgxEF,0BAGA,0BezxEM,0BAMJ,0BfixEF,0BAGA,0BACA,0BDNC,0BCAD,0BAGA,0BASE,iBAAkB,QDLnB,sCgBnyEC,sCAAA,oCf0yEF,sCevxEM,sCf4xEJ,iBAAkB,QASpB,2Be3yEE,2BfqyEF,2BAGA,2Be9yEM,2BAMJ,2BfsyEF,2BAGA,2BACA,2BDNC,2BCAD,2BAGA,2BASE,iBAAkB,QDLnB,uCgBxzEC,uCAAA,qCf+zEF,uCe5yEM,uCfizEJ,iBAAkB,QASpB,wBeh0EE,wBf0zEF,wBAGA,wBen0EM,wBAMJ,wBf2zEF,wBAGA,wBACA,wBDNC,wBCAD,wBAGA,wBASE,iBAAkB,QDLnB,oCgB70EC,oCAAA,kCfo1EF,oCej0EM,oCfs0EJ,iBAAkB,QASpB,2Ber1EE,2Bf+0EF,2BAGA,2Bex1EM,2BAMJ,2Bfg1EF,2BAGA,2BACA,2BDNC,2BCAD,2BAGA,2BASE,iBAAkB,QDLnB,uCgBl2EC,uCAAA,qCfy2EF,uCet1EM,uCf21EJ,iBAAkB,QASpB,0Be12EE,0Bfo2EF,0BAGA,0Be72EM,0BAMJ,0Bfq2EF,0BAGA,0BACA,0BDNC,0BCAD,0BAGA,0BASE,iBAAkB,QDLnB,sCejtEC,sCADF,oCdytEA,sCe32EM,sCDoJJ,iBAAA,QA6DF,kBACE,WAAY,KA3DV,WAAA,KAEA,oCACA,kBACA,MAAA,KfqtED,cAAA,Ke9pEC,WAAY,OAnDV,mBAAA,yBfotEH,OAAA,IAAA,MAAA,KCWD,yBACE,cAAe,Ec7qEjB,qCdgrEA,qCcltEI,qCARM,qCfmtET,qCCMD,qCDHC,YAAA,OCWD,kCACE,OAAQ,EcxrEV,0Dd2rEA,0Dc3rEA,0DAzBU,0Df6sET,0DCMD,0DAME,YAAa,EchsEf,yDdmsEA,yDcnsEA,yDArBU,yDfitET,yDCMD,yDAME,aAAc,EDLjB,yDe3sEW,yDEzNV,yDjBm6EC,yDiBl6ED,cAAA,GAMA,SjBm6ED,UAAA,EiBh6EC,QAAS,EACT,OAAA,EACA,OAAA,EAEA,OACA,QAAA,MACA,MAAA,KACA,QAAA,EACA,cAAA,KACA,UAAA,KjBk6ED,YAAA,QiB/5EC,MAAO,KACP,OAAA,EACA,cAAA,IAAA,MAAA,QAEA,MjBi6ED,QAAA,aiBt5EC,UAAW,Kb4BX,cAAA,IACG,YAAA,IJ83EJ,mBiBt5EC,mBAAoB,WhBi6EjB,gBAAiB,WgB/5EpB,WAAA,WjB05ED,qBiBx5EC,kBAGA,OAAQ,IAAI,EAAE,EACd,WAAA,MjBu5ED,YAAA,OiBl5EC,iBACA,QAAA,MAIF,kBhB45EE,QAAS,MgB15ET,MAAA,KAIF,iBAAA,ahB25EE,OAAQ,KIh+ER,uBL29ED,2BK19EC,wBY2EA,QAAS,KAAK,OACd,QAAA,IAAA,KAAA,yBACA,eAAA,KAEA,OACA,QAAA,MjBi5ED,YAAA,IiBv3EC,UAAW,KACX,YAAA,WACA,MAAA,KAEA,cACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,QAAA,IAAA,KACA,UAAA,KACA,YAAA,WACA,MAAA,KbxDA,iBAAA,KACQ,iBAAA,KAyHR,OAAA,IAAA,MAAA,KACK,cAAA,IACG,mBAAA,MAAA,EAAA,IAAA,IAAA,iBJ0zET,WAAA,MAAA,EAAA,IAAA,IAAA,iBkBl8EC,mBAAA,aAAA,YAAA,KAAA,mBAAA,YAAA,KACE,cAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KACA,WAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KdWM,oBJ27ET,aAAA,QI15EC,QAAA,EACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,qBACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,qBAEF,gCAA0B,MAAA,KJ65E3B,QAAA,EI55EiC,oCJ+5EjC,MAAA,KiBl4EG,yCACA,MAAA,KAQF,0BhBw4EA,iBAAkB,YAClB,OAAQ,EgBr4EN,wBjB+3EH,wBiB53EC,iChBu4EA,iBAAkB,KgBr4EhB,QAAA,EAIF,wBACE,iCjB43EH,OAAA,YiB/2EC,sBjBk3ED,OAAA,KiBh2EG,mBhB42EF,mBAAoB,KAEtB,qDgB72EM,8BjBs2EH,8BiBn2EC,wCAAA,+BhB+2EA,YAAa,KgB72EX,iCjB22EH,iCiBx2EC,2CAAA,kChB42EF,0BACA,0BACA,oCACA,2BAKE,YAAa,KgBl3EX,iCjBg3EH,iCACF,2CiBt2EC,kChBy2EA,0BACA,0BACA,oCACA,2BgB32EA,YAAA,MhBm3EF,YgBz2EE,cAAA,KAGA,UADA,OjBm2ED,SAAA,SiBv2EC,QAAS,MhBk3ET,WAAY,KgB12EV,cAAA,KAGA,gBADA,aAEA,WAAA,KjBm2EH,aAAA,KiBh2EC,cAAe,EhB22Ef,YAAa,IACb,OAAQ,QgBt2ER,+BjBk2ED,sCiBp2EC,yBACA,gCAIA,SAAU,ShB02EV,WAAY,MgBx2EZ,YAAA,MAIF,oBAAA,cAEE,WAAA,KAGA,iBADA,cAEA,SAAA,SACA,QAAA,aACA,aAAA,KjB+1ED,cAAA,EiB71EC,YAAa,IhBw2Eb,eAAgB,OgBt2EhB,OAAA,QAUA,kCjBs1ED,4BCWC,WAAY,EACZ,YAAa,KgBz1Eb,wCAAA,qCjBq1ED,8BCOD,+BgBl2EI,2BhBi2EJ,4BAME,OAAQ,YDNT,0BiBz1EG,uBAMF,oCAAA,iChB+1EA,OAAQ,YDNT,yBiBt1EK,sBAaJ,mCAFF,gCAGE,OAAA,YAGA,qBjB20ED,WAAA,KiBz0EC,YAAA,IhBo1EA,eAAgB,IgBl1Ed,cAAA,EjB40EH,8BiB9zED,8BCnQE,cAAA,EACA,aAAA,EAEA,UACA,OAAA,KlBokFD,QAAA,IAAA,KkBlkFC,UAAA,KACE,YAAA,IACA,cAAA,IAGF,gBjB4kFA,OAAQ,KiB1kFN,YAAA,KD2PA,0BAFJ,kBAGI,OAAA,KAEA,6BACA,OAAA,KjB20EH,QAAA,IAAA,KiBj1EC,UAAW,KAST,YAAA,IACA,cAAA,IAVJ,mChBg2EE,OAAQ,KgBl1EN,YAAA,KAGA,6CAjBJ,qCAkBI,OAAA,KAEA,oCACA,OAAA,KjB20EH,WAAA,KiBv0EC,QAAS,IAAI,KC/Rb,UAAA,KACA,YAAA,IAEA,UACA,OAAA,KlBymFD,QAAA,KAAA,KkBvmFC,UAAA,KACE,YAAA,UACA,cAAA,IAGF,gBjBinFA,OAAQ,KiB/mFN,YAAA,KDuRA,0BAFJ,kBAGI,OAAA,KAEA,6BACA,OAAA,KjBo1EH,QAAA,KAAA,KiB11EC,UAAW,KAST,YAAA,UACA,cAAA,IAVJ,mChBy2EE,OAAQ,KgB31EN,YAAA,KAGA,6CAjBJ,qCAkBI,OAAA,KAEA,oCACA,OAAA,KjBo1EH,WAAA,KiB30EC,QAAS,KAAK,KAEd,UAAA,KjB40ED,YAAA,UiBx0EG,cjB20EH,SAAA,SiBt0EC,4BACA,cAAA,OAEA,uBACA,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,MACA,MAAA,KjBy0ED,OAAA,KiBv0EC,YAAa,KhBk1Eb,WAAY,OACZ,eAAgB,KDLjB,oDiBz0EC,uCADA,iCAGA,MAAO,KhBk1EP,OAAQ,KACR,YAAa,KDLd,oDiBz0EC,uCADA,iCAKA,MAAO,KhBg1EP,OAAQ,KACR,YAAa,KAKf,uBAEA,8BAJA,4BADA,yBAEA,oBAEA,2BDNC,4BkBvuFG,mCAJA,yBD0ZJ,gCbvWE,MAAA,QJ6rFD,2BkB1uFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJksFD,iCiB31EC,aAAc,QC5YZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlB2uFH,gCiBh2EC,MAAO,QCtYL,iBAAA,QlByuFH,aAAA,QCWD,oCACE,MAAO,QAKT,uBAEA,8BAJA,4BADA,yBAEA,oBAEA,2BDNC,4BkBrwFG,mCAJA,yBD6ZJ,gCb1WE,MAAA,QJ2tFD,2BkBxwFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJguFD,iCiBt3EC,aAAc,QC/YZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlBywFH,gCiB33EC,MAAO,QCzYL,iBAAA,QlBuwFH,aAAA,QCWD,oCACE,MAAO,QAKT,qBAEA,4BAJA,0BADA,uBAEA,kBAEA,yBDNC,0BkBnyFG,iCAJA,uBDgaJ,8Bb7WE,MAAA,QJyvFD,yBkBtyFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJ8vFD,+BiBj5EC,aAAc,QClZZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlBuyFH,8BiBt5EC,MAAO,QC5YL,iBAAA,QlBqyFH,aAAA,QiBj5EG,kCjBo5EH,MAAA,QiBj5EG,2CjBo5EH,IAAA,KiBz4EC,mDACA,IAAA,EAEA,YjB44ED,QAAA,MiBzzEC,WAAY,IAwEZ,cAAe,KAtIX,MAAA,QAEA,yBjB23EH,yBiBvvEC,QAAS,aA/HP,cAAA,EACA,eAAA,OjB03EH,2BiB5vEC,QAAS,aAxHP,MAAA,KjBu3EH,eAAA,OiBn3EG,kCACA,QAAA,aAmHJ,0BhB8wEE,QAAS,aACT,eAAgB,OgBv3Ed,wCjBg3EH,6CiBxwED,2CjB2wEC,MAAA,KiB/2EG,wCACA,MAAA,KAmGJ,4BhB0xEE,cAAe,EgBt3Eb,eAAA,OAGA,uBADA,oBjBg3EH,QAAA,aiBtxEC,WAAY,EhBiyEZ,cAAe,EgBv3EX,eAAA,OAsFN,6BAAA,0BAjFI,aAAA,EAiFJ,4CjB+xEC,sCiB12EG,SAAA,SjB62EH,YAAA,EiBl2ED,kDhB82EE,IAAK,GgBp2EL,2BjBi2EH,kCiBl2EG,wBAEA,+BAXF,YAAa,IhBs3Eb,WAAY,EgBr2EV,cAAA,EJviBF,2BIshBF,wBJrhBE,WAAA,KI4jBA,6BAyBA,aAAc,MAnCV,YAAA,MAEA,yBjB01EH,gCACF,YAAA,IiB13EG,cAAe,EAwCf,WAAA,OAwBJ,sDAdQ,MAAA,KjBg1EL,yBACF,+CiBr0EC,YAAA,KAEE,UAAW,MjBw0EZ,yBACF,+CmBt6FG,YAAa,IACf,UAAA,MAGA,KACA,QAAA,aACA,QAAA,IAAA,KAAA,cAAA,EACA,UAAA,KACA,YAAA,IACA,YAAA,WACA,WAAA,OC0CA,YAAA,OACA,eAAA,OACA,iBAAA,aACA,aAAA,ahB+JA,OAAA,QACG,oBAAA,KACC,iBAAA,KACI,gBAAA,KJiuFT,YAAA,KmBz6FG,iBAAA,KlBq7FF,OAAQ,IAAI,MAAM,YAClB,cAAe,IDHhB,kBKx8FC,kBAEA,WACA,kBJ28FF,kBADA,WkBl7FE,QAAA,KAAA,OlBy7FA,QAAS,IAAI,KAAK,yBAClB,eAAgB,KkBn7FhB,WnB46FD,WmB/6FG,WlB27FF,MAAO,KkBt7FL,gBAAA,Kf6BM,YADR,YJq5FD,iBAAA,KmB56FC,QAAA,ElBw7FA,mBAAoB,MAAM,EAAE,IAAI,IAAI,iBAC5B,WAAY,MAAM,EAAE,IAAI,IAAI,iBoBn+FpC,cAGA,ejB8DA,wBACQ,OAAA,YJ65FT,OAAA,kBmB56FG,mBAAA,KlBw7FM,WAAY,KkBt7FhB,QAAA,IASN,eC3DE,yBACA,eAAA,KpBo+FD,aoBj+FC,MAAA,KnB6+FA,iBAAkB,KmB3+FhB,aAAA,KpBq+FH,mBoBn+FO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBo+FH,mBoBj+FC,MAAA,KnB6+FA,iBAAkB,QAClB,aAAc,QmBz+FR,oBADJ,oBpBo+FH,mCoBj+FG,MAAA,KnB6+FF,iBAAkB,QAClB,aAAc,QmBz+FN,0BnB++FV,0BAHA,0BmB7+FM,0BnB++FN,0BAHA,0BDFC,yCoB3+FK,yCnB++FN,yCmB1+FE,MAAA,KnBk/FA,iBAAkB,QAClB,aAAc,QmB3+FZ,oBpBm+FH,oBoBn+FG,mCnBg/FF,iBAAkB,KmB5+FV,4BnBi/FV,4BAHA,4BDHC,6BCOD,6BAHA,6BkB99FA,sCClBM,sCnBi/FN,sCmB3+FI,iBAAA,KACA,aAAA,KDcJ,oBC9DE,MAAA,KACA,iBAAA,KpB6hGD,aoB1hGC,MAAA,KnBsiGA,iBAAkB,QmBpiGhB,aAAA,QpB8hGH,mBoB5hGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB6hGH,mBoB1hGC,MAAA,KnBsiGA,iBAAkB,QAClB,aAAc,QmBliGR,oBADJ,oBpB6hGH,mCoB1hGG,MAAA,KnBsiGF,iBAAkB,QAClB,aAAc,QmBliGN,0BnBwiGV,0BAHA,0BmBtiGM,0BnBwiGN,0BAHA,0BDFC,yCoBpiGK,yCnBwiGN,yCmBniGE,MAAA,KnB2iGA,iBAAkB,QAClB,aAAc,QmBpiGZ,oBpB4hGH,oBoB5hGG,mCnByiGF,iBAAkB,KmBriGV,4BnB0iGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBphGA,sCCrBM,sCnB0iGN,sCmBpiGI,iBAAA,QACA,aAAA,QDkBJ,oBClEE,MAAA,QACA,iBAAA,KpBslGD,aoBnlGC,MAAA,KnB+lGA,iBAAkB,QmB7lGhB,aAAA,QpBulGH,mBoBrlGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBslGH,mBoBnlGC,MAAA,KnB+lGA,iBAAkB,QAClB,aAAc,QmB3lGR,oBADJ,oBpBslGH,mCoBnlGG,MAAA,KnB+lGF,iBAAkB,QAClB,aAAc,QmB3lGN,0BnBimGV,0BAHA,0BmB/lGM,0BnBimGN,0BAHA,0BDFC,yCoB7lGK,yCnBimGN,yCmB5lGE,MAAA,KnBomGA,iBAAkB,QAClB,aAAc,QmB7lGZ,oBpBqlGH,oBoBrlGG,mCnBkmGF,iBAAkB,KmB9lGV,4BnBmmGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBzkGA,sCCzBM,sCnBmmGN,sCmB7lGI,iBAAA,QACA,aAAA,QDsBJ,oBCtEE,MAAA,QACA,iBAAA,KpB+oGD,UoB5oGC,MAAA,KnBwpGA,iBAAkB,QmBtpGhB,aAAA,QpBgpGH,gBoB9oGO,gBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB+oGH,gBoB5oGC,MAAA,KnBwpGA,iBAAkB,QAClB,aAAc,QmBppGR,iBADJ,iBpB+oGH,gCoB5oGG,MAAA,KnBwpGF,iBAAkB,QAClB,aAAc,QmBppGN,uBnB0pGV,uBAHA,uBmBxpGM,uBnB0pGN,uBAHA,uBDFC,sCoBtpGK,sCnB0pGN,sCmBrpGE,MAAA,KnB6pGA,iBAAkB,QAClB,aAAc,QmBtpGZ,iBpB8oGH,iBoB9oGG,gCnB2pGF,iBAAkB,KmBvpGV,yBnB4pGV,yBAHA,yBDHC,0BCOD,0BAHA,0BkB9nGA,mCC7BM,mCnB4pGN,mCmBtpGI,iBAAA,QACA,aAAA,QD0BJ,iBC1EE,MAAA,QACA,iBAAA,KpBwsGD,aoBrsGC,MAAA,KnBitGA,iBAAkB,QmB/sGhB,aAAA,QpBysGH,mBoBvsGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBwsGH,mBoBrsGC,MAAA,KnBitGA,iBAAkB,QAClB,aAAc,QmB7sGR,oBADJ,oBpBwsGH,mCoBrsGG,MAAA,KnBitGF,iBAAkB,QAClB,aAAc,QmB7sGN,0BnBmtGV,0BAHA,0BmBjtGM,0BnBmtGN,0BAHA,0BDFC,yCoB/sGK,yCnBmtGN,yCmB9sGE,MAAA,KnBstGA,iBAAkB,QAClB,aAAc,QmB/sGZ,oBpBusGH,oBoBvsGG,mCnBotGF,iBAAkB,KmBhtGV,4BnBqtGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBnrGA,sCCjCM,sCnBqtGN,sCmB/sGI,iBAAA,QACA,aAAA,QD8BJ,oBC9EE,MAAA,QACA,iBAAA,KpBiwGD,YoB9vGC,MAAA,KnB0wGA,iBAAkB,QmBxwGhB,aAAA,QpBkwGH,kBoBhwGO,kBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBiwGH,kBoB9vGC,MAAA,KnB0wGA,iBAAkB,QAClB,aAAc,QmBtwGR,mBADJ,mBpBiwGH,kCoB9vGG,MAAA,KnB0wGF,iBAAkB,QAClB,aAAc,QmBtwGN,yBnB4wGV,yBAHA,yBmB1wGM,yBnB4wGN,yBAHA,yBDFC,wCoBxwGK,wCnB4wGN,wCmBvwGE,MAAA,KnB+wGA,iBAAkB,QAClB,aAAc,QmBxwGZ,mBpBgwGH,mBoBhwGG,kCnB6wGF,iBAAkB,KmBzwGV,2BnB8wGV,2BAHA,2BDHC,4BCOD,4BAHA,4BkBxuGA,qCCrCM,qCnB8wGN,qCmBxwGI,iBAAA,QACA,aAAA,QDuCJ,mBACE,MAAA,QACA,iBAAA,KnBkuGD,UmB/tGC,YAAA,IlB2uGA,MAAO,QACP,cAAe,EAEjB,UG5wGE,iBemCE,iBflCM,oBJqwGT,6BmBhuGC,iBAAA,YlB4uGA,mBAAoB,KACZ,WAAY,KkBzuGlB,UAEF,iBAAA,gBnBguGD,gBmB9tGG,aAAA,YnBouGH,gBmBluGG,gBAIA,MAAA,QlB0uGF,gBAAiB,UACjB,iBAAkB,YDNnB,0BmBnuGK,0BAUN,mCATM,mClB8uGJ,MAAO,KmB7yGP,gBAAA,KAGA,mBADA,QpBsyGD,QAAA,KAAA,KmB5tGC,UAAW,KlBwuGX,YAAa,UmBpzGb,cAAA,IAGA,mBADA,QpB6yGD,QAAA,IAAA,KmB/tGC,UAAW,KlB2uGX,YAAa,ImB3zGb,cAAA,IAGA,mBADA,QpBozGD,QAAA,IAAA,ImB9tGC,UAAW,KACX,YAAA,IACA,cAAA,IAIF,WACE,QAAA,MnB8tGD,MAAA,KCYD,sBACE,WAAY,IqB53GZ,6BADF,4BtBq3GC,6BIhsGC,MAAA,KAEQ,MJosGT,QAAA,EsBx3GC,mBAAA,QAAA,KAAA,OACE,cAAA,QAAA,KAAA,OtB03GH,WAAA,QAAA,KAAA,OsBr3GC,StBw3GD,QAAA,EsBt3Ga,UtBy3Gb,QAAA,KsBx3Ga,atB23Gb,QAAA,MsB13Ga,etB63Gb,QAAA,UsBz3GC,kBACA,QAAA,gBlBwKA,YACQ,SAAA,SAAA,OAAA,EAOR,SAAA,OACQ,mCAAA,KAAA,8BAAA,KAGR,2BAAA,KACQ,4BAAA,KAAA,uBAAA,KJ8sGT,oBAAA,KuBx5GC,4BAA6B,OAAQ,WACrC,uBAAA,OAAA,WACA,oBAAA,OAAA,WAEA,OACA,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,IACA,eAAA,OvB05GD,WAAA,IAAA,OuBt5GC,WAAY,IAAI,QtBq6GhB,aAAc,IAAI,MAAM,YsBn6GxB,YAAA,IAAA,MAAA,YAKA,UADF,QvBu5GC,SAAA,SuBj5GC,uBACA,QAAA,EAEA,eACA,SAAA,SACA,IAAA,KACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,UAAA,MACA,QAAA,IAAA,EACA,OAAA,IAAA,EAAA,EACA,UAAA,KACA,WAAA,KACA,WAAA,KnBsBA,iBAAA,KACQ,wBAAA,YmBrBR,gBAAA,YtBk6GA,OsBl6GA,IAAA,MAAA,KvBq5GD,OAAA,IAAA,MAAA,gBuBh5GC,cAAA,IACE,mBAAA,EAAA,IAAA,KAAA,iBACA,WAAA,EAAA,IAAA,KAAA,iBAzBJ,0BCzBE,MAAA,EACA,KAAA,KAEA,wBxBu8GD,OAAA,IuBj7GC,OAAQ,IAAI,EAmCV,SAAA,OACA,iBAAA,QAEA,oBACA,QAAA,MACA,QAAA,IAAA,KACA,MAAA,KvBi5GH,YAAA,IuB34GC,YAAA,WtB25GA,MAAO,KsBz5GL,YAAA,OvB+4GH,0BuB74GG,0BAMF,MAAA,QtBu5GA,gBAAiB,KACjB,iBAAkB,QsBp5GhB,yBAEA,+BADA,+BvB04GH,MAAA,KuBh4GC,gBAAA,KtBg5GA,iBAAkB,QAClB,QAAS,EDZV,2BuB93GC,iCAAA,iCAEE,MAAA,KEzGF,iCF2GE,iCAEA,gBAAA,KvBg4GH,OAAA,YuB33GC,iBAAkB,YAGhB,iBAAA,KvB23GH,OAAA,0DuBt3GG,qBvBy3GH,QAAA,MuBh3GC,QACA,QAAA,EAQF,qBACE,MAAA,EACA,KAAA,KAIF,oBACE,MAAA,KACA,KAAA,EAEA,iBACA,QAAA,MACA,QAAA,IAAA,KvB22GD,UAAA,KuBv2GC,YAAa,WACb,MAAA,KACA,YAAA,OAEA,mBACA,SAAA,MACA,IAAA,EvBy2GD,MAAA,EuBr2GC,OAAQ,EACR,KAAA,EACA,QAAA,IAQF,2BtB+2GE,MAAO,EsB32GL,KAAA,KAEA,eACA,sCvB+1GH,QAAA,GuBt2GC,WAAY,EtBs3GZ,cAAe,IAAI,OsB32GjB,cAAA,IAAA,QAEA,uBvB+1GH,8CuB10GC,IAAK,KAXL,OAAA,KApEA,cAAA,IvB85GC,yBuB11GD,6BA1DA,MAAA,EACA,KAAA,KvBw5GD,kC0BviHG,MAAO,KzBujHP,KAAM,GyBnjHR,W1ByiHD,oB0B7iHC,SAAU,SzB6jHV,QAAS,ayBvjHP,eAAA,OAGA,yB1ByiHH,gBCgBC,SAAU,SACV,MAAO,KyBhjHT,gC1ByiHC,gCCYD,+BAFA,+ByBnjHA,uBANM,uBzB0jHN,sBAFA,sBAQE,QAAS,EyBrjHP,qB1B0iHH,2B0BriHD,2BACE,iC1BuiHD,YAAA,KCgBD,aACE,YAAa,KDZd,kB0B7iHD,wBAAA,0BzB8jHE,MAAO,KDZR,kB0BliHD,wBACE,0B1BoiHD,YAAA,I0B/hHC,yE1BkiHD,cAAA,E2BnlHC,4BACG,YAAA,EDsDL,mEzBgjHE,wBAAyB,E0B/lHzB,2BAAA,E3BolHD,6C0B/hHD,8CACE,uBAAA,E1BiiHD,0BAAA,E0B9hHC,sB1BiiHD,MAAA,KCgBD,8D0BlnHE,cAAA,E3BumHD,mE0B9hHD,oECjEE,wBAAA,EACG,2BAAA,EDqEL,oEzB6iHE,uBAAwB,EyB3iHxB,0BAAA,EAiBF,mCACE,iCACA,QAAA,EAEF,iCACE,cAAA,IACA,aAAA,IAKF,oCtB/CE,cAAA,KACQ,aAAA,KsBkDR,iCtBnDA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBsByDV,0CACE,mBAAA,K1B0gHD,WAAA,K0BtgHC,YACA,YAAA,EAGF,eACE,aAAA,IAAA,IAAA,E1BwgHD,oBAAA,ECgBD,uBACE,aAAc,EAAE,IAAI,IyB7gHlB,yBACA,+BACA,oC1BkgHH,QAAA,M0BzgHC,MAAO,KAcH,MAAA,K1B8/GL,UAAA,KCgBD,oCACE,MAAO,KyBvgHL,8BACA,oC1B4/GH,oC0Bv/GC,0CACE,WAAA,K1By/GH,YAAA,E2BlqHC,4DACC,cAAA,EAQA,sD3B+pHF,uBAAA,I0Bz/GC,wBAAA,IC/KA,2BAAA,EACC,0BAAA,EAQA,sD3BqqHF,uBAAA,E0B1/GC,wBAAyB,EACzB,2BAAA,I1B4/GD,0BAAA,ICgBD,uE0BzrHE,cAAA,E3B8qHD,4E0Bz/GD,6EC7LE,2BAAA,EACC,0BAAA,EDoMH,6EACE,uBAAA,EACA,wBAAA,EAEA,qB1Bu/GD,QAAA,M0B3/GC,MAAO,KzB2gHP,aAAc,MyBpgHZ,gBAAA,SAEA,0B1Bw/GH,gC0BjgHC,QAAS,WAYP,MAAA,K1Bw/GH,MAAA,G0Bp/GG,qC1Bu/GH,MAAA,KCgBD,+CACE,KAAM,KyBh/GF,gDAFA,6C1By+GL,2D0Bx+GK,wDEzOJ,SAAU,SACV,KAAA,cACA,eAAA,K5BotHD,a4BhtHC,SAAA,SACE,QAAA,MACA,gBAAA,S5BmtHH,0B4B3tHC,MAAO,KAeL,cAAA,EACA,aAAA,EAOA,2BACA,SAAA,S5B0sHH,QAAA,E4BxsHG,MAAA,KACE,MAAA,K5B0sHL,cAAA,ECgBD,iCACE,QAAS,EiBtrHT,8BACA,mCACA,sCACA,OAAA,KlB2qHD,QAAA,KAAA,KkBzqHC,UAAA,KjByrHA,YAAa,UACb,cAAe,IiBxrHb,oClB6qHH,yCkB1qHC,4CjB0rHA,OAAQ,KACR,YAAa,KDTd,8C4BltHD,mDAAA,sD3B6tHA,sCACA,2CiB5rHI,8CjBisHF,OAAQ,KiB7sHR,8BACA,mCACA,sCACA,OAAA,KlBksHD,QAAA,IAAA,KkBhsHC,UAAA,KjBgtHA,YAAa,IACb,cAAe,IiB/sHb,oClBosHH,yCkBjsHC,4CjBitHA,OAAQ,KACR,YAAa,KDTd,8C4BhuHD,mDAAA,sD3B2uHA,sCACA,2CiBntHI,8CjBwtHF,OAAQ,K2B5uHR,2B5BguHD,mB4BhuHC,iB3BivHA,QAAS,W2B5uHX,8D5BguHC,sD4BhuHD,oDAEE,cAAA,EAEA,mB5BkuHD,iB4B7tHC,MAAO,GACP,YAAA,OACA,eAAA,OAEA,mBACA,QAAA,IAAA,KACA,UAAA,KACA,YAAA,IACA,YAAA,EACA,MAAA,K5B+tHD,WAAA,O4B5tHC,iBAAA,KACE,OAAA,IAAA,MAAA,KACA,cAAA,I5B+tHH,4B4B5tHC,QAAA,IAAA,KACE,UAAA,KACA,cAAA,I5B+tHH,4B4BlvHC,QAAS,KAAK,K3BkwHd,UAAW,K2BxuHT,cAAA,IAKJ,wCAAA,qC3BwuHE,WAAY,EAEd,uCACA,+BACA,kC0Bh1HE,6CACG,8CC4GL,6D5BwtHC,wE4BvtHC,wBAAA,E5B0tHD,2BAAA,ECgBD,+BACE,aAAc,EAEhB,sCACA,8B2BnuHA,+D5BytHC,oDCWD,iC0Br1HE,4CACG,6CCiHH,uBAAA,E5B2tHD,0BAAA,E4BrtHC,8BAGA,YAAA,E5ButHD,iB4B3tHC,SAAU,SAUR,UAAA,E5BotHH,YAAA,O4BltHK,sB5BqtHL,SAAA,SCgBD,2BACE,YAAa,K2B3tHb,6BAAA,4B5B+sHD,4B4B5sHK,QAAA,EAGJ,kCAAA,wCAGI,aAAA,K5B+sHL,iC6B72HD,uCACE,QAAA,EACA,YAAA,K7Bg3HD,K6Bl3HC,aAAc,EAOZ,cAAA,EACA,WAAA,KARJ,QAWM,SAAA,SACA,QAAA,M7B+2HL,U6B72HK,SAAA,S5B63HJ,QAAS,M4B33HH,QAAA,KAAA,KAMJ,gB7B02HH,gB6Bz2HK,gBAAA,K7B42HL,iBAAA,KCgBD,mB4Bx3HQ,MAAA,KAGA,yBADA,yB7B62HP,MAAA,K6Br2HG,gBAAA,K5Bq3HF,OAAQ,YACR,iBAAkB,Y4Bl3Hd,aAzCN,mB7Bg5HC,mBwBn5HC,iBAAA,KACA,aAAA,QAEA,kBxBs5HD,OAAA,I6Bt5HC,OAAQ,IAAI,EA0DV,SAAA,O7B+1HH,iBAAA,Q6Br1HC,c7Bw1HD,UAAA,K6Bt1HG,UAEA,cAAA,IAAA,MAAA,KALJ,aASM,MAAA,KACA,cAAA,KAEA,e7Bu1HL,aAAA,I6Bt1HK,YAAA,WACE,OAAA,IAAA,MAAA,Y7Bw1HP,cAAA,IAAA,IAAA,EAAA,ECgBD,qBACE,aAAc,KAAK,KAAK,K4B/1HlB,sBAEA,4BADA,4BAEA,MAAA,K7Bo1HP,OAAA,Q6B/0HC,iBAAA,KAqDA,OAAA,IAAA,MAAA,KA8BA,oBAAA,YAnFA,wBAwDE,MAAA,K7B8xHH,cAAA,E6B5xHK,2BACA,MAAA,KA3DJ,6BAgEE,cAAA,IACA,WAAA,OAYJ,iDA0DE,IAAK,KAjED,KAAA,K7B6xHH,yB6B5tHD,2BA9DM,QAAA,W7B6xHL,MAAA,G6Bt2HD,6BAuFE,cAAA,GAvFF,6B5B23HA,aAAc,EACd,cAAe,IDZhB,kC6BzuHD,wCA3BA,wCATM,OAAA,IAAA,MAAA,K7BkxHH,yB6B9uHD,6B5B8vHE,cAAe,IAAI,MAAM,KACzB,cAAe,IAAI,IAAI,EAAE,EDZ1B,kC6Bj3HD,wC7Bk3HD,wC6Bh3HG,oBAAA,MAIE,c7Bk3HL,MAAA,K6B/2HK,gB7Bk3HL,cAAA,ICgBD,iBACE,YAAa,I4B13HP,uBAQR,6B7Bu2HC,6B6Br2HG,MAAA,K7Bw2HH,iBAAA,Q6Bt2HK,gBACA,MAAA,KAYN,mBACE,WAAA,I7B+1HD,YAAA,E6B51HG,e7B+1HH,MAAA,K6B71HK,kBACA,MAAA,KAPN,oBAYI,cAAA,IACA,WAAA,OAYJ,wCA0DE,IAAK,KAjED,KAAA,K7B81HH,yB6B7xHD,kBA9DM,QAAA,W7B81HL,MAAA,G6Br1HD,oBACA,cAAA,GAIE,oBACA,cAAA,EANJ,yB5B62HE,aAAc,EACd,cAAe,IDZhB,8B6B7yHD,oCA3BA,oCATM,OAAA,IAAA,MAAA,K7Bs1HH,yB6BlzHD,yB5Bk0HE,cAAe,IAAI,MAAM,KACzB,cAAe,IAAI,IAAI,EAAE,EDZ1B,8B6B30HD,oC7B40HD,oC6B10HG,oBAAA,MAGA,uB7B60HH,QAAA,K6Bl0HC,qBF3OA,QAAA,M3BkjID,yB8B3iIC,WAAY,KACZ,uBAAA,EACA,wBAAA,EAEA,Q9B6iID,SAAA,S8BriIC,WAAY,KA8nBZ,cAAe,KAhoBb,OAAA,IAAA,MAAA,Y9B4iIH,yB8B5hIC,QAgnBE,cAAe,K9Bi7GlB,yB8BphIC,eACA,MAAA,MAGA,iBACA,cAAA,KAAA,aAAA,KAEA,WAAA,Q9BqhID,2BAAA,M8BnhIC,WAAA,IAAA,MAAA,YACE,mBAAA,MAAA,EAAA,IAAA,EAAA,qB9BqhIH,WAAA,MAAA,EAAA,IAAA,EAAA,qB8B57GD,oBArlBI,WAAA,KAEA,yBAAA,iB9BqhID,MAAA,K8BnhIC,WAAA,EACE,mBAAA,KACA,WAAA,KAEA,0B9BqhIH,QAAA,gB8BlhIC,OAAA,eACE,eAAA,E9BohIH,SAAA,kBCkBD,oBACE,WAAY,QDZf,sC8BlhIK,mC9BihIH,oC8B5gIC,cAAe,E7B+hIf,aAAc,G6Bp+GlB,sCAnjBE,mC7B4hIA,WAAY,MDdX,4D8BtgID,sC9BugID,mCCkBG,WAAY,O6B9gId,kCANE,gC9BygIH,4B8B1gIG,0BAuiBF,aAAc,M7Bs/Gd,YAAa,MAEf,yBDZC,kC8B9gIK,gC9B6gIH,4B8B9gIG,0BAcF,aAAc,EAChB,YAAA,GAMF,mBA8gBE,QAAS,KAhhBP,aAAA,EAAA,EAAA,I9BqgIH,yB8BhgIC,mB7BkhIE,cAAe,G6B7gIjB,qBADA,kB9BmgID,SAAA,M8B5/HC,MAAO,EAggBP,KAAM,E7B+gHN,QAAS,KDdR,yB8BhgID,qB9BigID,kB8BhgIC,cAAA,GAGF,kBACE,IAAA,EACA,aAAA,EAAA,EAAA,I9BogID,qB8B7/HC,OAAQ,EACR,cAAA,EACA,aAAA,IAAA,EAAA,EAEA,cACA,MAAA,K9B+/HD,OAAA,K8B7/HC,QAAA,KAAA,K7B+gIA,UAAW,K6B7gIT,YAAA,KAIA,oBAbJ,oB9B2gIC,gBAAA,K8B1/HG,kB7B6gIF,QAAS,MDdR,yBACF,iC8Bn/HC,uCACA,YAAA,OAGA,eC9LA,SAAA,SACA,MAAA,MD+LA,QAAA,IAAA,KACA,WAAA,IACA,aAAA,KACA,cAAA,I9Bs/HD,iBAAA,Y8Bl/HC,iBAAA,KACE,OAAA,IAAA,MAAA,Y9Bo/HH,cAAA,I8B/+HG,qBACA,QAAA,EAEA,yB9Bk/HH,QAAA,M8BxgIC,MAAO,KAyBL,OAAA,I9Bk/HH,cAAA,I8BvjHD,mCAvbI,WAAA,I9Bm/HH,yB8Bz+HC,eACA,QAAA,MAGE,YACA,OAAA,MAAA,M9B4+HH,iB8B/8HC,YAAA,KA2YA,eAAgB,KAjaZ,YAAA,KAEA,yBACA,iCACA,SAAA,OACA,MAAA,KACA,MAAA,KAAA,WAAA,E9By+HH,iBAAA,Y8B9kHC,OAAQ,E7BimHR,mBAAoB,K6Bz/HhB,WAAA,KAGA,kDAqZN,sC9BqlHC,QAAA,IAAA,KAAA,IAAA,KCmBD,sC6B1/HQ,YAAA,KAmBR,4C9By9HD,4C8B1lHG,iBAAkB,M9B+lHnB,yB8B/lHD,YAtYI,MAAA,K9Bw+HH,OAAA,E8Bt+HK,eACA,MAAA,K9B0+HP,iB8B99HG,YAAa,KACf,eAAA,MAGA,aACA,QAAA,KAAA,K1B9NA,WAAA,IACQ,aAAA,M2B/DR,cAAA,IACA,YAAA,M/B+vID,WAAA,IAAA,MAAA,YiBzuHC,cAAe,IAAI,MAAM,YAwEzB,mBAAoB,MAAM,EAAE,IAAI,EAAE,qBAAyB,EAAE,IAAI,EAAE,qBAtI/D,WAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,qBAEA,yBjB2yHH,yBiBvqHC,QAAS,aA/HP,cAAA,EACA,eAAA,OjB0yHH,2BiB5qHC,QAAS,aAxHP,MAAA,KjBuyHH,eAAA,OiBnyHG,kCACA,QAAA,aAmHJ,0BhBssHE,QAAS,aACT,eAAgB,OgB/yHd,wCjBgyHH,6CiBxrHD,2CjB2rHC,MAAA,KiB/xHG,wCACA,MAAA,KAmGJ,4BhBktHE,cAAe,EgB9yHb,eAAA,OAGA,uBADA,oBjBgyHH,QAAA,aiBtsHC,WAAY,EhBytHZ,cAAe,EgB/yHX,eAAA,OAsFN,6BAAA,0BAjFI,aAAA,EAiFJ,4CjB+sHC,sCiB1xHG,SAAA,SjB6xHH,YAAA,E8BtgID,kDAmWE,IAAK,GAvWH,yBACE,yB9BihIL,cAAA,I8B//HD,oCAoVE,cAAe,GA1Vf,yBACA,aACA,MAAA,KACA,YAAA,E1BzPF,eAAA,EACQ,aAAA,EJswIP,YAAA,EACF,OAAA,E8BtgIG,mBAAoB,KACtB,WAAA,M9B0gID,8B8BtgIC,WAAY,EACZ,uBAAA,EHzUA,wBAAA,EAQA,mDACC,cAAA,E3B40IF,uBAAA,I8BlgIC,wBAAyB,IChVzB,2BAAA,EACA,0BAAA,EDkVA,YCnVA,WAAA,IACA,cAAA,IDqVA,mBCtVA,WAAA,KACA,cAAA,KD+VF,mBChWE,WAAA,KACA,cAAA,KDuWF,aAsSE,WAAY,KA1SV,cAAA,KAEA,yB9BkgID,aACF,MAAA,K8Br+HG,aAAc,KAhBhB,YAAA,MACA,yBE5WA,aF8WE,MAAA,eAFF,cAKI,MAAA,gB9B0/HH,aAAA,M8Bh/HD,4BACA,aAAA,GADF,gBAKI,iBAAA,Q9Bm/HH,aAAA,QCmBD,8B6BngIM,MAAA,KARN,oC9B6/HC,oC8B/+HG,MAAA,Q9Bk/HH,iBAAA,Y8B7+HK,6B9Bg/HL,MAAA,KCmBD,iC6B//HQ,MAAA,KAKF,uC9B4+HL,uCCmBC,MAAO,KACP,iBAAkB,Y6B5/HZ,sCAIF,4C9B0+HL,4CCmBC,MAAO,KACP,iBAAkB,Q6B1/HZ,wCAxCR,8C9BohIC,8C8Bt+HG,MAAA,K9By+HH,iBAAA,YCmBD,+B6Bz/HM,aAAA,KAGA,qCApDN,qC9B8hIC,iBAAA,KCmBD,yC6Bv/HI,iBAAA,KAOE,iCAAA,6B7Bq/HJ,aAAc,Q6Bj/HR,oCAiCN,0C9Bk8HD,0C8B9xHC,MAAO,KA7LC,iBAAA,QACA,yB7Bi/HR,sD6B/+HU,MAAA,KAKF,4D9B49HP,4DCmBC,MAAO,KACP,iBAAkB,Y6B5+HV,2DAIF,iE9B09HP,iECmBC,MAAO,KACP,iBAAkB,Q6B1+HV,6D9B69HX,mEADE,mE8B7jIC,MAAO,KA8GP,iBAAA,aAEE,6B9Bo9HL,MAAA,K8B/8HG,mC9Bk9HH,MAAA,KCmBD,0B6Bl+HM,MAAA,KAIA,gCAAA,gC7Bm+HJ,MAAO,K6Bz9HT,0CARQ,0CASN,mD9B08HD,mD8Bz8HC,MAAA,KAFF,gBAKI,iBAAA,K9B68HH,aAAA,QCmBD,8B6B79HM,MAAA,QARN,oC9Bu9HC,oC8Bz8HG,MAAA,K9B48HH,iBAAA,Y8Bv8HK,6B9B08HL,MAAA,QCmBD,iC6Bz9HQ,MAAA,QAKF,uC9Bs8HL,uCCmBC,MAAO,KACP,iBAAkB,Y6Bt9HZ,sCAIF,4C9Bo8HL,4CCmBC,MAAO,KACP,iBAAkB,Q6Bp9HZ,wCAxCR,8C9B8+HC,8C8B/7HG,MAAA,K9Bk8HH,iBAAA,YCmBD,+B6Bl9HM,aAAA,KAGA,qCArDN,qC9Bw/HC,iBAAA,KCmBD,yC6Bh9HI,iBAAA,KAME,iCAAA,6B7B+8HJ,aAAc,Q6B38HR,oCAuCN,0C9Bs5HD,0C8B93HC,MAAO,KAvDC,iBAAA,QAuDV,yBApDU,kE9By7HP,aAAA,Q8Bt7HO,0D9By7HP,iBAAA,QCmBD,sD6Bz8HU,MAAA,QAKF,4D9Bs7HP,4DCmBC,MAAO,KACP,iBAAkB,Y6Bt8HV,2DAIF,iE9Bo7HP,iECmBC,MAAO,KACP,iBAAkB,Q6Bp8HV,6D9Bu7HX,mEADE,mE8B7hIC,MAAO,KA+GP,iBAAA,aAEE,6B9Bm7HL,MAAA,Q8B96HG,mC9Bi7HH,MAAA,KCmBD,0B6Bj8HM,MAAA,QAIA,gCAAA,gC7Bk8HJ,MAAO,KgC1kJT,0CH0oBQ,0CGzoBN,mDjC2jJD,mDiC1jJC,MAAA,KAEA,YACA,QAAA,IAAA,KjC8jJD,cAAA,KiCnkJC,WAAY,KAQV,iBAAA,QjC8jJH,cAAA,IiC3jJK,eACA,QAAA,ajC+jJL,yBiC3kJC,QAAS,EAAE,IAkBT,MAAA,KjC4jJH,QAAA,SkC/kJC,oBACA,MAAA,KAEA,YlCklJD,QAAA,akCtlJC,aAAc,EAOZ,OAAA,KAAA,ElCklJH,cAAA,ICmBD,eiClmJM,QAAA,OAEA,iBACA,oBACA,SAAA,SACA,MAAA,KACA,QAAA,IAAA,KACA,YAAA,KACA,YAAA,WlCmlJL,MAAA,QkCjlJG,gBAAA,KjComJF,iBAAkB,KiCjmJZ,OAAA,IAAA,MAAA,KPVH,6B3B8lJJ,gCkChlJG,YAAA,EjCmmJF,uBAAwB,I0B1nJxB,0BAAA,I3B4mJD,4BkC3kJG,+BjC8lJF,wBAAyB,IACzB,2BAA4B,IiC3lJxB,uBAFA,uBAGA,0BAFA,0BlCilJL,QAAA,EkCzkJG,MAAA,QjC4lJF,iBAAkB,KAClB,aAAc,KAEhB,sBiC1lJM,4BAFA,4BjC6lJN,yBiC1lJM,+BAFA,+BAGA,QAAA,ElC8kJL,MAAA,KkCroJC,OAAQ,QjCwpJR,iBAAkB,QAClB,aAAc,QiCtlJV,wBAEA,8BADA,8BjCulJN,2BiCzlJM,iCjC0lJN,iCDZC,MAAA,KkClkJC,OAAQ,YjCqlJR,iBAAkB,KkChqJd,aAAA,KAEA,oBnCipJL,uBmC/oJG,QAAA,KAAA,KlCkqJF,UAAW,K0B7pJX,YAAA,U3B+oJD,gCmC9oJG,mClCiqJF,uBAAwB,I0B1qJxB,0BAAA,I3B4pJD,+BkC7kJD,kCjCgmJE,wBAAyB,IkChrJrB,2BAAA,IAEA,oBnCiqJL,uBmC/pJG,QAAA,IAAA,KlCkrJF,UAAW,K0B7qJX,YAAA,I3B+pJD,gCmC9pJG,mClCirJF,uBAAwB,I0B1rJxB,0BAAA,I3B4qJD,+BoC9qJD,kCACE,wBAAA,IACA,2BAAA,IAEA,OpCgrJD,aAAA,EoCprJC,OAAQ,KAAK,EAOX,WAAA,OpCgrJH,WAAA,KCmBD,UmChsJM,QAAA,OAEA,YACA,eACA,QAAA,apCirJL,QAAA,IAAA,KoC/rJC,iBAAkB,KnCktJlB,OAAQ,IAAI,MAAM,KmC/rJd,cAAA,KAnBN,kBpCosJC,kBCmBC,gBAAiB,KmC5rJb,iBAAA,KA3BN,eAAA,kBAkCM,MAAA,MAlCN,mBAAA,sBnCguJE,MAAO,KmCrrJH,mBAEA,yBADA,yBpCwqJL,sBqCrtJC,MAAO,KACP,OAAA,YACA,iBAAA,KAEA,OACA,QAAA,OACA,QAAA,KAAA,KAAA,KACA,UAAA,IACA,YAAA,IACA,YAAA,EACA,MAAA,KrCutJD,WAAA,OqCntJG,YAAA,OpCsuJF,eAAgB,SoCpuJZ,cAAA,MrCutJL,cqCrtJK,cAKJ,MAAA,KACE,gBAAA,KrCktJH,OAAA,QqC7sJG,aACA,QAAA,KAOJ,YCtCE,SAAA,StCkvJD,IAAA,KCmBD,eqChwJM,iBAAA,KALJ,2BD0CF,2BrC+sJC,iBAAA,QCmBD,eqCvwJM,iBAAA,QALJ,2BD8CF,2BrCktJC,iBAAA,QCmBD,eqC9wJM,iBAAA,QALJ,2BDkDF,2BrCqtJC,iBAAA,QCmBD,YqCrxJM,iBAAA,QALJ,wBDsDF,wBrCwtJC,iBAAA,QCmBD,eqC5xJM,iBAAA,QALJ,2BD0DF,2BrC2tJC,iBAAA,QCmBD,cqCnyJM,iBAAA,QCDJ,0BADF,0BAEE,iBAAA,QAEA,OACA,QAAA,aACA,UAAA,KACA,QAAA,IAAA,IACA,UAAA,KACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OvCwxJD,YAAA,OuCrxJC,eAAA,OACE,iBAAA,KvCuxJH,cAAA,KuClxJG,aACA,QAAA,KAGF,YtCqyJA,SAAU,SsCnyJR,IAAA,KAMA,0BvC+wJH,eCmBC,IAAK,EsChyJD,QAAA,IAAA,IvCmxJL,cuCjxJK,cAKJ,MAAA,KtC+xJA,gBAAiB,KsC7xJf,OAAA,QvC+wJH,+BuC3wJC,4BACE,MAAA,QvC6wJH,iBAAA,KuCzwJG,wBvC4wJH,MAAA,MuCxwJG,+BvC2wJH,aAAA,IwCp0JC,uBACA,YAAA,IAEA,WACA,YAAA,KxCu0JD,eAAA,KwC50JC,cAAe,KvC+1Jf,MAAO,QuCt1JL,iBAAA,KAIA,eAbJ,cAcI,MAAA,QxCu0JH,awCr1JC,cAAe,KAmBb,UAAA,KxCq0JH,YAAA,ICmBD,cuCn1JI,iBAAA,QAEA,sBxCo0JH,4BwC91JC,cAAe,KA8Bb,aAAA,KxCm0JH,cAAA,IwChzJD,sBAfI,UAAA,KxCo0JD,oCwCj0JC,WvCo1JA,YAAa,KuCl1JX,eAAA,KxCo0JH,sBwC1zJD,4BvC60JE,cAAe,KuCj1Jb,aAAA,KC5CJ,ezC+2JD,cyC92JC,UAAA,MAGA,WACA,QAAA,MACA,QAAA,IACA,cAAA,KrCiLA,YAAA,WACK,iBAAA,KACG,OAAA,IAAA,MAAA,KJisJT,cAAA,IyC33JC,mBAAoB,OAAO,IAAI,YxC84J1B,cAAe,OAAO,IAAI,YwCj4J7B,WAAA,OAAA,IAAA,YAKF,iBzC82JD,eCmBC,aAAc,KACd,YAAa,KwC13JX,mBA1BJ,kBzCq4JC,kByC12JG,aAAA,QCzBJ,oBACE,QAAA,IACA,MAAA,KAEA,O1Cy4JD,QAAA,K0C74JC,cAAe,KAQb,OAAA,IAAA,MAAA,YAEA,cAAA,IAVJ,UAeI,WAAA,E1Cq4JH,MAAA,QCmBD,mByCl5JI,YAAA,IArBJ,SAyBI,U1Ck4JH,cAAA,ECmBD,WyC34JE,WAAA,IAFF,mBAAA,mBAMI,cAAA,KAEA,0BACA,0B1C43JH,SAAA,S0Cp3JC,IAAK,KCvDL,MAAA,MACA,MAAA,Q3C+6JD,e0Cz3JC,MAAO,QClDL,iBAAA,Q3C86JH,aAAA,Q2C36JG,kB3C86JH,iBAAA,Q2Ct7JC,2BACA,MAAA,Q3C07JD,Y0Ch4JC,MAAO,QCtDL,iBAAA,Q3Cy7JH,aAAA,Q2Ct7JG,e3Cy7JH,iBAAA,Q2Cj8JC,wBACA,MAAA,Q3Cq8JD,e0Cv4JC,MAAO,QC1DL,iBAAA,Q3Co8JH,aAAA,Q2Cj8JG,kB3Co8JH,iBAAA,Q2C58JC,2BACA,MAAA,Q3Cg9JD,c0C94JC,MAAO,QC9DL,iBAAA,Q3C+8JH,aAAA,Q2C58JG,iB3C+8JH,iBAAA,Q4Ch9JC,0BAAQ,MAAA,QACR,wCAAQ,K5Cs9JP,oBAAA,KAAA,E4Cl9JD,GACA,oBAAA,EAAA,GACA,mCAAQ,K5Cw9JP,oBAAA,KAAA,E4C19JD,GACA,oBAAA,EAAA,GACA,gCAAQ,K5Cw9JP,oBAAA,KAAA,E4Ch9JD,GACA,oBAAA,EAAA,GAGA,UACA,OAAA,KxCsCA,cAAA,KACQ,SAAA,OJ86JT,iBAAA,Q4Ch9JC,cAAe,IACf,mBAAA,MAAA,EAAA,IAAA,IAAA,eACA,WAAA,MAAA,EAAA,IAAA,IAAA,eAEA,cACA,MAAA,KACA,MAAA,EACA,OAAA,KACA,UAAA,KxCyBA,YAAA,KACQ,MAAA,KAyHR,WAAA,OACK,iBAAA,QACG,mBAAA,MAAA,EAAA,KAAA,EAAA,gBJk0JT,WAAA,MAAA,EAAA,KAAA,EAAA,gB4C78JC,mBAAoB,MAAM,IAAI,K3Cw+JzB,cAAe,MAAM,IAAI,K4Cv+J5B,WAAA,MAAA,IAAA,KDEF,sBCAE,gCDAF,iBAAA,yK5Ci9JD,iBAAA,oK4C18JC,iBAAiB,iK3Cs+JjB,wBAAyB,KAAK,KGlhK9B,gBAAA,KAAA,KJ4/JD,qBI1/JS,+BwCmDR,kBAAmB,qBAAqB,GAAG,OAAO,SErElD,aAAA,qBAAA,GAAA,OAAA,S9C+gKD,UAAA,qBAAA,GAAA,OAAA,S6C59JG,sBACA,iBAAA,Q7Cg+JH,wC4C38JC,iBAAkB,yKEzElB,iBAAA,oK9CuhKD,iBAAA,iK6Cp+JG,mBACA,iBAAA,Q7Cw+JH,qC4C/8JC,iBAAkB,yKE7ElB,iBAAA,oK9C+hKD,iBAAA,iK6C5+JG,sBACA,iBAAA,Q7Cg/JH,wC4Cn9JC,iBAAkB,yKEjFlB,iBAAA,oK9CuiKD,iBAAA,iK6Cp/JG,qBACA,iBAAA,Q7Cw/JH,uC+C/iKC,iBAAkB,yKAElB,iBAAA,oK/CgjKD,iBAAA,iK+C7iKG,O/CgjKH,WAAA,KC4BD,mB8CtkKE,WAAA,E/C+iKD,O+C3iKD,YACE,SAAA,O/C6iKD,KAAA,E+CziKC,Y/C4iKD,MAAA,Q+CxiKG,c/C2iKH,QAAA,MC4BD,4B8CjkKE,UAAA,KAGF,aAAA,mBAEE,aAAA,KAGF,YAAA,kB9CkkKE,cAAe,K8C3jKjB,YAHE,Y/CuiKD,a+CniKC,QAAA,W/CsiKD,eAAA,I+CliKC,c/CqiKD,eAAA,O+ChiKC,cACA,eAAA,OAMF,eACE,WAAA,EACA,cAAA,ICvDF,YAEE,aAAA,EACA,WAAA,KAQF,YACE,aAAA,EACA,cAAA,KAGA,iBACA,SAAA,SACA,QAAA,MhDglKD,QAAA,KAAA,KgD7kKC,cAAA,KrB3BA,iBAAA,KACC,OAAA,IAAA,MAAA,KqB6BD,6BACE,uBAAA,IrBvBF,wBAAA,I3BymKD,4BgDvkKC,cAAe,E/CmmKf,2BAA4B,I+CjmK5B,0BAAA,IAFF,kBAAA,uBAKI,MAAA,KAIF,2CAAA,gD/CmmKA,MAAO,K+C/lKL,wBAFA,wBhD4kKH,6BgD3kKG,6BAKF,MAAO,KACP,gBAAA,KACA,iBAAA,QAKA,uB/C+lKA,MAAO,KACP,WAAY,K+C5lKV,0BhDskKH,gCgDrkKG,gCALF,MAAA,K/CsmKA,OAAQ,YACR,iBAAkB,KDxBnB,mDgD/kKC,yDAAA,yD/C4mKA,MAAO,QDxBR,gDgDnkKC,sDAAA,sD/CgmKA,MAAO,K+C5lKL,wBAEA,8BADA,8BhDskKH,QAAA,EgD3kKC,MAAA,K/CumKA,iBAAkB,QAClB,aAAc,QAEhB,iDDpBC,wDCuBD,uDADA,uD+C5mKE,8DAYI,6D/C+lKN,uD+C3mKE,8D/C8mKF,6DAKE,MAAO,QDxBR,8CiD7qKG,oDADF,oDAEE,MAAA,QAEA,yBhD0sKF,MAAO,QgDxsKH,iBAAA,QAFF,0BAAA,+BAKI,MAAA,QAGF,mDAAA,wDhD2sKJ,MAAO,QDtBR,gCiDnrKO,gCAGF,qCAFE,qChD8sKN,MAAO,QACP,iBAAkB,QAEpB,iCgD1sKQ,uCAFA,uChD6sKR,sCDtBC,4CiDtrKO,4CArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,sBhDuuKF,MAAO,QgDruKH,iBAAA,QAFF,uBAAA,4BAKI,MAAA,QAGF,gDAAA,qDhDwuKJ,MAAO,QDtBR,6BiDhtKO,6BAGF,kCAFE,kChD2uKN,MAAO,QACP,iBAAkB,QAEpB,8BgDvuKQ,oCAFA,oChD0uKR,mCDtBC,yCiDntKO,yCArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,yBhDowKF,MAAO,QgDlwKH,iBAAA,QAFF,0BAAA,+BAKI,MAAA,QAGF,mDAAA,wDhDqwKJ,MAAO,QDtBR,gCiD7uKO,gCAGF,qCAFE,qChDwwKN,MAAO,QACP,iBAAkB,QAEpB,iCgDpwKQ,uCAFA,uChDuwKR,sCDtBC,4CiDhvKO,4CArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,wBhDiyKF,MAAO,QgD/xKH,iBAAA,QAFF,yBAAA,8BAKI,MAAA,QAGF,kDAAA,uDhDkyKJ,MAAO,QDtBR,+BiD1wKO,+BAGF,oCAFE,oChDqyKN,MAAO,QACP,iBAAkB,QAEpB,gCgDjyKQ,sCAFA,sChDoyKR,qCDtBC,2CiD7wKO,2CDkGN,MAAO,KACP,iBAAA,QACA,aAAA,QAEF,yBACE,WAAA,EACA,cAAA,IE1HF,sBACE,cAAA,EACA,YAAA,IAEA,O9C0DA,cAAA,KACQ,iBAAA,KJgvKT,OAAA,IAAA,MAAA,YkDtyKC,cAAe,IACf,mBAAA,EAAA,IAAA,IAAA,gBlDwyKD,WAAA,EAAA,IAAA,IAAA,gBkDlyKC,YACA,QAAA,KvBnBC,e3B0zKF,QAAA,KAAA,KkDzyKC,cAAe,IAAI,MAAM,YAMvB,uBAAA,IlDsyKH,wBAAA,IkDhyKC,0CACA,MAAA,QAEA,alDmyKD,WAAA,EkDvyKC,cAAe,EjDm0Kf,UAAW,KACX,MAAO,QDtBR,oBkD7xKC,sBjDqzKF,eiD3zKI,mBAKJ,qBAEE,MAAA,QvBvCA,cACC,QAAA,KAAA,K3By0KF,iBAAA,QkDxxKC,WAAY,IAAI,MAAM,KjDozKtB,2BAA4B,IiDjzK1B,0BAAA,IAHJ,mBAAA,mCAMM,cAAA,ElD2xKL,oCkDtxKG,oDjDkzKF,aAAc,IAAI,EiDhzKZ,cAAA,EvBtEL,4D3Bg2KF,4EkDpxKG,WAAA,EjDgzKF,uBAAwB,IiD9yKlB,wBAAA,IvBtEL,0D3B81KF,0EkD7yKC,cAAe,EvB1Df,2BAAA,IACC,0BAAA,IuB0FH,+EAEI,uBAAA,ElDixKH,wBAAA,EkD7wKC,wDlDgxKD,iBAAA,EC4BD,0BACE,iBAAkB,EiDryKpB,8BlD6wKC,ckD7wKD,gCjD0yKE,cAAe,EiD1yKjB,sCAQM,sBlD2wKL,wCC4BC,cAAe,K0Bx5Kf,aAAA,KuByGF,wDlDwxKC,0BC4BC,uBAAwB,IACxB,wBAAyB,IiDrzK3B,yFAoBQ,yFlD2wKP,2DkD5wKO,2DjDwyKN,uBAAwB,IACxB,wBAAyB,IAK3B,wGiDj0KA,wGjD+zKA,wGDtBC,wGCuBD,0EiDh0KA,0EjD8zKA,0EiDtyKU,0EjD8yKR,uBAAwB,IAK1B,uGiD30KA,uGjDy0KA,uGDtBC,uGCuBD,yEiD10KA,yEjDw0KA,yEiD5yKU,yEvB7HR,wBAAA,IuBiGF,sDlDwzKC,yBC4BC,2BAA4B,IAC5B,0BAA2B,IiD3yKrB,qFA1CR,qFAyCQ,wDlDsxKP,wDC4BC,2BAA4B,IAC5B,0BAA2B,IAG7B,oGDtBC,oGCwBD,oGiDj2KA,oGjD81KA,uEiDhzKU,uEjDkzKV,uEiDh2KA,uEjDs2KE,0BAA2B,IAG7B,mGDtBC,mGCwBD,mGiD32KA,mGjDw2KA,sEiDtzKU,sEjDwzKV,sEiD12KA,sEjDg3KE,2BAA4B,IiDrzK1B,0BlD8xKH,qCkDz1KD,0BAAA,qCA+DI,WAAA,IAAA,MAAA,KA/DJ,kDAAA,kDAmEI,WAAA,EAnEJ,uBAAA,yCjD83KE,OAAQ,EiDpzKA,+CjDwzKV,+CiDl4KA,+CjDo4KA,+CAEA,+CANA,+CDjBC,iECoBD,iEiDn4KA,iEjDq4KA,iEAEA,iEANA,iEAWE,YAAa,EiD9zKL,8CjDk0KV,8CiDh5KA,8CjDk5KA,8CAEA,8CANA,8CDjBC,gECoBD,gEiDj5KA,gEjDm5KA,gEAEA,gEANA,gEAWE,aAAc,EAIhB,+CiD95KA,+CjD45KA,+CiDr0KU,+CjDw0KV,iEiD/5KA,iEjD65KA,iEDtBC,iEC6BC,cAAe,EAEjB,8CiDt0KU,8CjDw0KV,8CiDx6KA,8CjDu6KA,gEDtBC,gECwBD,gEiDn0KI,gEACA,cAAA,EAUJ,yBACE,cAAA,ElDsyKD,OAAA,EkDlyKG,aACA,cAAA,KANJ,oBASM,cAAA,ElDqyKL,cAAA,IkDhyKG,2BlDmyKH,WAAA,IC4BD,4BiD3zKM,cAAA,EAKF,wDAvBJ,wDlDwzKC,WAAA,IAAA,MAAA,KkD/xKK,2BlDkyKL,WAAA,EmDrhLC,uDnDwhLD,cAAA,IAAA,MAAA,KmDrhLG,eACA,aAAA,KnDyhLH,8BmD3hLC,MAAA,KAMI,iBAAA,QnDwhLL,aAAA,KmDrhLK,0DACA,iBAAA,KAGJ,qCAEI,MAAA,QnDshLL,iBAAA,KmDviLC,yDnD0iLD,oBAAA,KmDviLG,eACA,aAAA,QnD2iLH,8BmD7iLC,MAAA,KAMI,iBAAA,QnD0iLL,aAAA,QmDviLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnDwiLL,iBAAA,KmDzjLC,yDnD4jLD,oBAAA,QmDzjLG,eACA,aAAA,QnD6jLH,8BmD/jLC,MAAA,QAMI,iBAAA,QnD4jLL,aAAA,QmDzjLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnD0jLL,iBAAA,QmD3kLC,yDnD8kLD,oBAAA,QmD3kLG,YACA,aAAA,QnD+kLH,2BmDjlLC,MAAA,QAMI,iBAAA,QnD8kLL,aAAA,QmD3kLK,uDACA,iBAAA,QAGJ,kCAEI,MAAA,QnD4kLL,iBAAA,QmD7lLC,sDnDgmLD,oBAAA,QmD7lLG,eACA,aAAA,QnDimLH,8BmDnmLC,MAAA,QAMI,iBAAA,QnDgmLL,aAAA,QmD7lLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnD8lLL,iBAAA,QmD/mLC,yDnDknLD,oBAAA,QmD/mLG,cACA,aAAA,QnDmnLH,6BmDrnLC,MAAA,QAMI,iBAAA,QnDknLL,aAAA,QmD/mLK,yDACA,iBAAA,QAGJ,oCAEI,MAAA,QnDgnLL,iBAAA,QoD/nLC,wDACA,oBAAA,QAEA,kBACA,SAAA,SpDkoLD,QAAA,MoDvoLC,OAAQ,EnDmqLR,QAAS,EACT,SAAU,OAEZ,yCmDzpLI,wBADA,yBAEA,yBACA,wBACA,SAAA,SACA,IAAA,EACA,OAAA,EpDkoLH,KAAA,EoD7nLC,MAAO,KACP,OAAA,KpD+nLD,OAAA,EoD1nLC,wBpD6nLD,eAAA,OqDvpLC,uBACA,eAAA,IAEA,MACA,WAAA,KACA,QAAA,KjDwDA,cAAA,KACQ,iBAAA,QJmmLT,OAAA,IAAA,MAAA,QqDlqLC,cAAe,IASb,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACA,WAAA,MAAA,EAAA,IAAA,IAAA,gBAKJ,iBACE,aAAA,KACA,aAAA,gBAEF,SACE,QAAA,KACA,cAAA,ICtBF,SACE,QAAA,IACA,cAAA,IAEA,OACA,MAAA,MACA,UAAA,KjCRA,YAAA,IAGA,YAAA,ErBwrLD,MAAA,KsDhrLC,YAAA,EAAA,IAAA,EAAA,KrD4sLA,OAAQ,kBqD1sLN,QAAA,GjCbF,aiCeE,ajCZF,MAAA,KrBgsLD,gBAAA,KsD5qLC,OAAA,QACE,OAAA,kBACA,QAAA,GAEA,aACA,mBAAA,KtD8qLH,QAAA,EuDnsLC,OAAQ,QACR,WAAA,IvDqsLD,OAAA,EuDhsLC,YACA,SAAA,OAEA,OACA,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EAIA,QAAA,KvDgsLD,QAAA,KuD7rLC,SAAA,OnD+GA,2BAAA,MACI,QAAA,EAEI,0BAkER,mBAAA,kBAAA,IAAA,SAEK,cAAA,aAAA,IAAA,SACG,WAAA,UAAA,IAAA,SJghLT,kBAAA,kBuDnsLC,cAAA,kBnD2GA,aAAA,kBACI,UAAA,kBAEI,wBJ2lLT,kBAAA,euDvsLK,cAAe,eACnB,aAAA,eACA,UAAA,eAIF,mBACE,WAAA,OACA,WAAA,KvDwsLD,cuDnsLC,SAAU,SACV,MAAA,KACA,OAAA,KAEA,eACA,SAAA,SnDaA,iBAAA,KACQ,wBAAA,YmDZR,gBAAA,YtD+tLA,OsD/tLA,IAAA,MAAA,KAEA,OAAA,IAAA,MAAA,evDqsLD,cAAA,IuDjsLC,QAAS,EACT,mBAAA,EAAA,IAAA,IAAA,eACA,WAAA,EAAA,IAAA,IAAA,eAEA,gBACA,SAAA,MACA,IAAA,EACA,MAAA,EvDmsLD,OAAA,EuDjsLC,KAAA,ElCrEA,QAAA,KAGA,iBAAA,KkCmEA,qBlCtEA,OAAA,iBAGA,QAAA,EkCwEF,mBACE,OAAA,kBACA,QAAA,GAIF,cACE,QAAA,KvDmsLD,cAAA,IAAA,MAAA,QuD9rLC,qBACA,WAAA,KAKF,aACE,OAAA,EACA,YAAA,WAIF,YACE,SAAA,SACA,QAAA,KvD6rLD,cuD/rLC,QAAS,KAQP,WAAA,MACA,WAAA,IAAA,MAAA,QATJ,wBAaI,cAAA,EvDyrLH,YAAA,IuDrrLG,mCvDwrLH,YAAA,KuDlrLC,oCACA,YAAA,EAEA,yBACA,SAAA,SvDqrLD,IAAA,QuDnqLC,MAAO,KAZP,OAAA,KACE,SAAA,OvDmrLD,yBuDhrLD,cnDvEA,MAAA,MACQ,OAAA,KAAA,KmD2ER,eAAY,mBAAA,EAAA,IAAA,KAAA,evDkrLX,WAAA,EAAA,IAAA,KAAA,euD5qLD,UAFA,MAAA,OvDorLD,yBwDl0LC,UACA,MAAA,OCNA,SAEA,SAAA,SACA,QAAA,KACA,QAAA,MACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,ODHA,WAAA,OnCVA,aAAA,OAGA,UAAA,OrBy1LD,YAAA,OwD90LC,OAAA,iBnCdA,QAAA,ErBg2LD,WAAA,KwDj1LY,YAAmB,OAAA,kBxDq1L/B,QAAA,GwDp1LY,aAAmB,QAAA,IAAA,ExDw1L/B,WAAA,KwDv1LY,eAAmB,QAAA,EAAA,IxD21L/B,YAAA,IwD11LY,gBAAmB,QAAA,IAAA,ExD81L/B,WAAA,IwDz1LC,cACA,QAAA,EAAA,IACA,YAAA,KAEA,eACA,UAAA,MxD41LD,QAAA,IAAA,IwDx1LC,MAAO,KACP,WAAA,OACA,iBAAA,KACA,cAAA,IAEA,exD01LD,SAAA,SwDt1LC,MAAA,EACE,OAAA,EACA,aAAA,YACA,aAAA,MAEA,4BxDw1LH,OAAA,EwDt1LC,KAAA,IACE,YAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,iCxDw1LH,MAAA,IwDt1LC,OAAA,EACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,kCxDw1LH,OAAA,EwDt1LC,KAAA,IACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,8BxDw1LH,IAAA,IwDt1LC,KAAA,EACE,WAAA,KACA,aAAA,IAAA,IAAA,IAAA,EACA,mBAAA,KAEA,6BxDw1LH,IAAA,IwDt1LC,MAAA,EACE,WAAA,KACA,aAAA,IAAA,EAAA,IAAA,IACA,kBAAA,KAEA,+BxDw1LH,IAAA,EwDt1LC,KAAA,IACE,YAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,oCxDw1LH,IAAA,EwDt1LC,MAAA,IACE,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,qCxDw1LH,IAAA,E0Dr7LC,KAAM,IACN,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,SACA,SAAA,SACA,IAAA,EDXA,KAAA,EAEA,QAAA,KACA,QAAA,KACA,UAAA,MACA,QAAA,IACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KCAA,eAAA,OAEA,WAAA,OACA,aAAA,OAAA,UAAA,OACA,YAAA,OACA,iBAAA,KACA,wBAAA,YtD8CA,gBAAA,YACQ,OAAA,IAAA,MAAA,KJq5LT,OAAA,IAAA,MAAA,e0Dh8LC,cAAA,IAAY,mBAAA,EAAA,IAAA,KAAA,e1Dm8Lb,WAAA,EAAA,IAAA,KAAA,e0Dl8La,WAAA,KACZ,aAAY,WAAA,MACZ,eAAY,YAAA,KAGd,gBACE,WAAA,KAEA,cACA,YAAA,MAEA,e1Dw8LD,QAAA,IAAA,K0Dr8LC,OAAQ,EACR,UAAA,K1Du8LD,iBAAA,Q0D/7LC,cAAA,IAAA,MAAA,QzD49LA,cAAe,IAAI,IAAI,EAAE,EyDz9LvB,iBACA,QAAA,IAAA,KAEA,gBACA,sB1Di8LH,SAAA,S0D97LC,QAAS,MACT,MAAA,E1Dg8LD,OAAA,E0D97LC,aAAc,YACd,aAAA,M1Di8LD,gB0D57LC,aAAA,KAEE,sBACA,QAAA,GACA,aAAA,KAEA,oB1D87LH,OAAA,M0D77LG,KAAA,IACE,YAAA,MACA,iBAAA,KACA,iBAAA,gBACA,oBAAA,E1Dg8LL,0B0D57LC,OAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,KACA,oBAAA,EAEA,sB1D87LH,IAAA,I0D77LG,KAAA,MACE,WAAA,MACA,mBAAA,KACA,mBAAA,gBACA,kBAAA,E1Dg8LL,4B0D57LC,OAAA,MACE,KAAA,IACA,QAAA,IACA,mBAAA,KACA,kBAAA,EAEA,uB1D87LH,IAAA,M0D77LG,KAAA,IACE,YAAA,MACA,iBAAA,EACA,oBAAA,KACA,oBAAA,gB1Dg8LL,6B0D37LC,IAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,EACA,oBAAA,KAEA,qB1D67LH,IAAA,I0D57LG,MAAA,MACE,WAAA,MACA,mBAAA,EACA,kBAAA,KACA,kBAAA,gB1D+7LL,2B2DvjMC,MAAO,IACP,OAAA,M3DyjMD,QAAA,I2DtjMC,mBAAoB,EACpB,kBAAA,KAEA,U3DwjMD,SAAA,S2DrjMG,gBACA,SAAA,SvD6KF,MAAA,KACK,SAAA,OJ64LN,sB2DlkMC,SAAU,S1D+lMV,QAAS,K0DjlML,mBAAA,IAAA,YAAA,K3DwjML,cAAA,IAAA,YAAA,K2D9hMC,WAAA,IAAA,YAAA,KvDmKK,4BAFL,0BAGQ,YAAA,EA3JA,qDA+GR,sBAEQ,mBAAA,kBAAA,IAAA,YJi7LP,cAAA,aAAA,IAAA,Y2D5jMG,WAAA,UAAA,IAAA,YvDmHJ,4BAAA,OACQ,oBAAA,OuDjHF,oBAAA,O3D+jML,YAAA,OI/8LD,mCHy+LA,2BGx+LQ,KAAA,EuD5GF,kBAAA,sB3DgkML,UAAA,sBC2BD,kCADA,2BG/+LA,KAAA,EACQ,kBAAA,uBuDtGF,UAAA,uBArCN,6B3DumMD,gC2DvmMC,iC1DkoME,KAAM,E0DrlMN,kBAAA,mB3D+jMH,UAAA,oBAGA,wB2D/mMD,sBAAA,sBAsDI,QAAA,MAEA,wB3D6jMH,KAAA,E2DzjMG,sB3D4jMH,sB2DxnMC,SAAU,SA+DR,IAAA,E3D4jMH,MAAA,KC0BD,sB0DllMI,KAAA,KAnEJ,sBAuEI,KAAA,MAvEJ,2BA0EI,4B3D2jMH,KAAA,E2DljMC,6BACA,KAAA,MAEA,8BACA,KAAA,KtC3FA,kBsC6FA,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,I3DsjMD,UAAA,K2DjjMC,MAAA,KdnGE,WAAA,OACA,YAAA,EAAA,IAAA,IAAA,eACA,iBAAA,cAAA,OAAA,kBACA,QAAA,G7CwpMH,uB2DrjMC,iBAAA,sEACE,iBAAA,iEACA,iBAAA,uFdxGA,iBAAA,kEACA,OAAA,+GACA,kBAAA,SACA,wBACA,MAAA,E7CgqMH,KAAA,K2DvjMC,iBAAA,sE1DmlMA,iBAAiB,iE0DjlMf,iBAAA,uFACA,iBAAA,kEACA,OAAA,+GtCvHF,kBAAA,SsCyFF,wB3DylMC,wBC4BC,MAAO,KACP,gBAAiB,KACjB,OAAQ,kB0DhlMN,QAAA,EACA,QAAA,G3D2jMH,0C2DnmMD,2CA2CI,6BADA,6B1DqlMF,SAAU,S0DhlMR,IAAA,IACA,QAAA,E3DwjMH,QAAA,a2DxmMC,WAAY,MAqDV,0CADA,6B3DyjMH,KAAA,I2D7mMC,YAAa,MA0DX,2CADA,6BAEA,MAAA,IACA,aAAA,MAME,6BADF,6B3DsjMH,MAAA,K2DjjMG,OAAA,KACE,YAAA,M3DmjML,YAAA,E2DxiMC,oCACA,QAAA,QAEA,oCACA,QAAA,QAEA,qBACA,SAAA,SACA,OAAA,K3D2iMD,KAAA,I2DpjMC,QAAS,GAYP,MAAA,IACA,aAAA,EACA,YAAA,KACA,WAAA,OACA,WAAA,KAEA,wBACA,QAAA,aAWA,MAAA,KACA,OAAA,K3DiiMH,OAAA,I2DhkMC,YAAa,OAkCX,OAAA,QACA,iBAAA,OACA,iBAAA,cACA,OAAA,IAAA,MAAA,K3DiiMH,cAAA,K2DzhMC,6BACA,MAAA,KACA,OAAA,KACA,OAAA,EACA,iBAAA,KAEA,kBACA,SAAA,SACA,MAAA,IACA,OAAA,K3D4hMD,KAAA,I2D3hMC,QAAA,GACE,YAAA,K3D6hMH,eAAA,K2Dp/LC,MAAO,KAhCP,WAAA,O1DijMA,YAAa,EAAE,IAAI,IAAI,eAEzB,uB0D9iMM,YAAA,KAEA,oCACA,0C3DshMH,2C2D9hMD,6BAAA,6BAYI,MAAA,K3DshMH,OAAA,K2DliMD,WAAA,M1D8jME,UAAW,KDxBZ,0C2DjhMD,6BACE,YAAA,MAEA,2C3DmhMD,6B2D/gMD,aAAA,M3DkhMC,kBACF,MAAA,I4DhxMC,KAAA,I3D4yME,eAAgB,KAElB,qBACE,OAAQ,MAkBZ,qCADA,sCADA,mBADA,oBAXA,gBADA,iBAOA,uBADA,wBADA,iBADA,kBADA,wBADA,yBASA,mCADA,oC2DvzME,oBAAA,qBAAA,oBAAA,qB3D8zMF,WADA,YAOA,uBADA,wBADA,qBADA,sBADA,cADA,e2Dl0MI,a3Dw0MJ,cDvBC,kB4DhzMG,mB3DwzMJ,WADA,YAwBE,QAAS,MACT,QAAS,IASX,qCADA,mBANA,gBAGA,uBADA,iBADA,wBAIA,mCDhBC,oB6Dl1MC,oB5Dq2MF,W+B/1MA,uBhCu0MC,qB4D/zMG,cChBF,aACA,kB5Dk2MF,W+Bx1ME,MAAO,KhC40MR,cgCz0MC,QAAS,MACT,aAAA,KhC20MD,YAAA,KgCl0MC,YhCq0MD,MAAA,gBgCl0MC,WhCq0MD,MAAA,egCl0MC,MhCq0MD,QAAA,e8D51MC,MACA,QAAA,gBAEA,WACA,WAAA,O9B8BF,WACE,KAAA,EAAA,EAAA,EhCm0MD,MAAA,YgC5zMC,YAAa,KACb,iBAAA,YhC8zMD,OAAA,E+D91MC,Q/Di2MD,QAAA,eC4BD,OACE,SAAU,M+Dt4MV,chE+2MD,MAAA,aC+BD,YADA,YADA,YADA,YAIE,QAAS,e+Dv5MT,kBhEy4MC,mBgEx4MD,yBhEo4MD,kB+Dr1MD,mBA6IA,yB9D+tMA,kBACA,mB8Dp3ME,yB9Dg3MF,kBACA,mBACA,yB+D15MY,QAAA,eACV,yBAAU,YhE64MT,QAAA,gBC4BD,iB+Dv6MU,QAAA,gBhEg5MX,c+D/1MG,QAAS,oB/Dm2MV,c+Dr2MC,c/Ds2MH,QAAA,sB+Dj2MG,yB/Dq2MD,kBACF,QAAA,iB+Dj2MG,yB/Dq2MD,mBACF,QAAA,kBgEn6MC,yBhEu6MC,yBgEt6MD,QAAA,wBACA,+CAAU,YhE26MT,QAAA,gBC4BD,iB+Dr8MU,QAAA,gBhE86MX,c+Dx2MG,QAAS,oB/D42MV,c+D92MC,c/D+2MH,QAAA,sB+D12MG,+C/D82MD,kBACF,QAAA,iB+D12MG,+C/D82MD,mBACF,QAAA,kBgEj8MC,+ChEq8MC,yBgEp8MD,QAAA,wBACA,gDAAU,YhEy8MT,QAAA,gBC4BD,iB+Dn+MU,QAAA,gBhE48MX,c+Dj3MG,QAAS,oB/Dq3MV,c+Dv3MC,c/Dw3MH,QAAA,sB+Dn3MG,gD/Du3MD,kBACF,QAAA,iB+Dn3MG,gD/Du3MD,mBACF,QAAA,kBgE/9MC,gDhEm+MC,yBgEl+MD,QAAA,wBACA,0BAAU,YhEu+MT,QAAA,gBC4BD,iB+DjgNU,QAAA,gBhE0+MX,c+D13MG,QAAS,oB/D83MV,c+Dh4MC,c/Di4MH,QAAA,sB+D53MG,0B/Dg4MD,kBACF,QAAA,iB+D53MG,0B/Dg4MD,mBACF,QAAA,kBgEr/MC,0BhEy/MC,yBACF,QAAA,wBgE1/MC,yBhE8/MC,WACF,QAAA,gBgE//MC,+ChEmgNC,WACF,QAAA,gBgEpgNC,gDhEwgNC,WACF,QAAA,gBAGA,0B+Dn3MC,WA4BE,QAAS,gBC5LX,eAAU,QAAA,eACV,aAAU,ehE4hNT,QAAA,gBC4BD,oB+DtjNU,QAAA,gBhE+hNX,iB+Dj4MG,QAAS,oBAMX,iB/D83MD,iB+Dz2MG,QAAS,sB/D82MZ,qB+Dl4MC,QAAS,e/Dq4MV,a+D/3MC,qBAcE,QAAS,iB/Ds3MZ,sB+Dn4MC,QAAS,e/Ds4MV,a+Dh4MC,sBAOE,QAAS,kB/D83MZ,4B+D/3MC,QAAS,eCpLT,ahEujNC,4BACF,QAAA,wBC6BD,aACE,cACE,QAAS"}
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap3-transition.css b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap3-transition.css
new file mode 100644
index 0000000..9644485
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/bootstrap3-transition.css
@@ -0,0 +1,238 @@
+/* Changes to the top bar. Template: base.html */
+
+.navbar .brand {
+  padding: 5px 20px;
+}
+
+.logo {
+  padding-top: 2px !important;
+}
+
+/* Changes to the tables pagination */
+
+.pagination {
+  margin: 0 0 40px 0;
+}
+
+select[class^="pagesize"] {
+  margin-bottom: 0;
+}
+
+/* Project configuration page */
+
+ul.configuration-list {
+  margin-left: 0px;
+}
+
+.configuration-list .checkbox {
+  margin-top: 0;
+}
+
+/* Breadcrumbs */
+
+.breadcrumb {
+  padding: 8px 0;
+}
+
+.breadcrumb > li + li::before {
+  content: none;
+}
+
+.breadcrumb .divider {
+  color: #999;
+  padding: 0 5px;
+}
+
+/* Remove the hovering from the .btn-primary buttons when they are disabled */
+
+.btn-primary.disabled.focus,
+.btn-primary.disabled:focus,
+.btn-primary.disabled:hover,
+.btn-primary.focus[disabled],
+.btn-primary[disabled]:focus,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary.focus,
+fieldset[disabled] .btn-primary:focus,
+fieldset[disabled] .btn-primary:hover {
+  background-color: #04c;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+
+/* Table search input field */
+
+.navbar-search {
+  width: 60%;
+}
+
+.navbar-search .input-append {
+  width: 90%;
+}
+
+.navbar-search .input-append input[type="text"] {
+  width: 80%;
+}
+
+#search {
+  width: 60%;
+}
+
+/* Definition lists */
+
+.dl-horizontal dd {
+  margin-left: 220px;
+}
+
+.dl-horizontal dt {
+  width: 200px;
+}
+
+/* Table controls */
+
+.navbar-inner > .navbar-search .input-append {
+  margin-bottom: 5px;
+}
+
+.navbar-search.input-append {
+  margin-bottom: 20px;
+}
+
+/* Modal dialogs */
+
+.modal-dialog {
+  width: 700px;
+}
+
+.modal-body {
+  overflow-y: scroll;
+  max-height: 350px;
+}
+
+.modal-body ul.list-unstyled {
+  margin-left: 0;
+}
+
+.modal-footer {
+  background-color: #f5f5f5;
+}
+
+.modal-content form {
+  margin-bottom: 0;
+}
+
+.modal-dialog .checkbox label,
+.modal-dialog .radio label {
+  padding-left: 0;
+}
+
+/* Typeahead */
+
+.tt-menu {
+  width: 120%;
+  padding: 10px 8px;
+}
+
+.tt-suggestion {
+  padding: 3px 8px;
+  cursor: pointer;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.tt-suggestion.active,
+.tt-suggestion:hover {
+  background-color: #0081c2;
+  color: white;
+}
+
+/* Build form */
+
+#build-input {
+  width: 20em;
+}
+
+/* Clear filter tooltips in toastertables */
+
+.tooltip .btn-small {
+  margin: 10px;
+}
+
+/* Table cell notifications */
+
+.inline-notification,
+#temp-inline-notify {
+  padding: 10px;
+}
+
+/* Table buttons */
+
+td .btn {
+  white-space: normal;
+}
+
+th.add-del-layers {
+  width: 18%;
+}
+
+th.add_rm_pkg_btn {
+  width: 20%;
+}
+
+/* Edit columsn menu */
+
+.dropdown-menu {
+  min-width: 200px;
+}
+
+/* Popover content */
+
+.popover-content > ul {
+  margin-left: 0;
+}
+
+h3.popover-title {
+  line-height: 20px;
+}
+
+.popover {
+  max-width: 400px;
+}
+
+/* Errors and warnings accordions */
+
+#errors .panel-heading,
+#warnings .panel-heading {
+  background-color: transparent;
+}
+
+a.toggle-errors:hover,
+a.toggle-warnings:hover,
+a.warning:focus {
+  text-decoration: none;
+}
+
+a.toggle-errors:focus,
+a.toggle-warnings:focus {
+  outline: none;
+}
+
+/* Landing page */
+
+.jumbotron p {
+  margin-top: 20px;
+  margin-bottom: 30px;
+}
+
+.jumbotron ul {
+  margin-left: 10px;
+  font-size: 21px;
+  font-weight: 200;
+}
+
+.jumbotron ul > li {
+  line-height: 30px;
+}
+
+.jumbotron .img-thumbnail {
+  padding: 0;
+}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/default.css b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/default.css
index b024d96..ff24e8c 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/default.css
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/css/default.css
@@ -1,299 +1,337 @@
+/* New Toaster custom css file for Bootstrap 3 */
+
+/* Set required top body padding for the fixed top navbard */
+body { padding-top: 50px; }
+
 /* Style the Yocto Project logo */
-.logo img { height: 30px; width: auto !important; }
-.logo { padding-top: 4px !important; padding-bottom:0px !important; }
+img.logo { height: 30px; vertical-align: bottom; }
 
-/* style the version information */
-.brand > a { color: #777; }
-.brand > a:hover { color: #999; text-decoration: none; }
-.icon-info-sign { color: #777; font-size: 16px; margin-left: 5px;}
-.icon-info-sign:hover { color: #999; cursor: pointer; }
+/* Style the Yocto Project logo and the Toaster name in the top navbar */
+.toaster-navbar-brand { float: left; margin: 7px 25px 0 0; }
+.toaster-navbar-brand a.brand { color: #777; height: 50px; padding: 15px 5px 15px 15px; font-size: 20px; line-height: 25px; display: inline; }
+.toaster-navbar-brand > a { text-decoration: none; }
+.toaster-navbar-brand > a.brand:hover { color: #5e5e5e; }
 
-/* Style the breadcrumb */
-.breadcrumb { display: inline-block; background-color: transparent; }
+/* Style the debugging information in the top navbar */
+.glyphicon-info-sign { color: #777; font-size: 16px; }
+.glyphicon-info-sign:hover { color: #999; cursor: pointer; }
+
+/* Override the negative right margin for the navbar-right class */
+#new-project-button { margin-right: 0; }
+
+/* Increase popovers width to fit commit SHAs */
+.popover { max-width: 350px; }
+
+/* Set a limit to popover height to handle long dependency lists */
+.popover-content { max-height: 350px; overflow: scroll; }
+
+/* Set a limit to modal dialogs height to handle long variable history */
+[id^="variable-"] .modal-content { max-height: 550px; overflow-y: scroll; }
+
+/* Make sure long values in variable history do not make the modal dialogs
+ * scroll horizontally */
+[id^="variable-"] .modal-content p { word-break: break-all; }
+
+/* Increase bottom margin of definition lists inside popovers for the Toaster version information in the top navbar, and also inside the right hand columns of our details pages */
+.popover-content dd,
+.item-info dd { margin-bottom: 15px; }
+
+/* Style the horizontal definition lists */
+.dl-horizontal dt { width: 200px; line-height: 25px; }
+.dl-horizontal dd { margin-left: 220px; line-height: 25px; }
+
+/* Style our build results */
+.build-result .progress { margin-bottom: 0; }
+.alert-link.build-warnings,
+.glyphicon-warning-sign.build-warnings { color: #8a6d3b; }
+.build-result .project-name { margin-top: -10px; margin-bottom: 5px; }
+.rebuild-btn, .cancel-build-btn { cursor: pointer; }
 
 /* Styles for the help information */
 .get-help { color: #CCCCCC; }
-.get-help:hover, .icon-plus-sign:hover { color: #999999; cursor: pointer; }
-.get-help-green { color: #468847; }
-.get-help-green:hover { color: #347132; cursor: pointer; }
+.get-help:hover { color: #999999; cursor: pointer; }
+.get-help-green { color: #3c763d; }
+.get-help-green:hover { color: #2b542c; cursor: pointer; }
 .get-help-blue { color: #3A87AD; }
 .get-help-blue:hover { color: #005580; cursor: pointer; }
-.get-help-yellow { color: #C09853; }
-.get-help-yellow:hover { color: #B38942; cursor: pointer; }
-.get-help-red { color: #B94A48; font-size: 16px; padding-left: 2px; }
-.get-help-red:hover { color: #943A38; cursor: pointer; }
-.build-form>i:first-of-type { margin-left: 5px; }
-.manual { margin: 11px 15px 0 11px;}
+.get-help-red { color: #a94442; }
+.get-help-red:hover { color: #843534; cursor: pointer; }
+
+/* Styles for our table controls */
+.form-control[id^="search-input-"],
+.form-control[id^="new-search-input-"],
+#search{ width: 30em; }
+#search-input-selectpackagestable,
+#search-input-packagestable,
+.form-control[id^="no-results-search-input-"] { width: 20em; }
+#edit-columns-button { margin-right: 30px; }
+.navbar-default[id^="table-chrome-"],
+#variables .navbar-default { background-color: transparent; }
+[id^="table-chrome-collapse-"] .navbar-form { margin-left: -15px; }
+.dropdown-menu.editcol { padding-left: 10px; min-width: 200px; }
+span[class^="remove-search-btn-"] { position: absolute; right: 5px; top: 0; bottom: 0; height: 14px; margin: auto; font-size: 14px; cursor: pointer; color: #777;}
+span[class^="remove-search-btn-"]:hover { color: #333; }
+#no-results-special-selectpackagestable .form-inline { margin-top: 20px; }
+[id^="pagination-"] .pagination,
+[id^="pagination-"] .navbar-form { margin-top: 0; }
+[id^="table-chrome-"] .navbar-form { margin-left: -15px; margin-right: -15px; }
+[id^="table-chrome-"] .detail-page-contols,
+#packages-built .detail-page-controls { padding-left: 0; padding-right: 0; }
+
+/* Override the default font-weight for labels: it's a bit too much */
+label { font-weight: normal; }
+
+/* Firefox workaround for awkward fieldset styling. See http://getbootstrap.com/css/#tables-responsive */
+@-moz-document url-prefix() { fieldset { display: table-cell; } }
+
+/* Table heading sortable / not sortable states */
+thead > tr > th > a { font-weight: normal; }
+thead > tr > th > a.sorted { font-weight: bold; color: #333; }
+
+/* Give some extra space to the 'clear filter' buttons */
+.tooltip .btn { margin: 5px; }
+
+/* In table headings, separate the help bubble from the column heading */
+thead > tr > th > .glyphicon-question-sign { margin-right: 5px; }
+
+/* Style build outcome in tables, download, remove and change icons */
+tbody > tr > td > .glyphicon-ok-circle,
+dd > .glyphicon-ok-circle { color: #3c763d; }
+tbody > tr > td > .glyphicon-minus-sign { color: #a94442; }
+.glyphicon-download-alt,
+.glyphicon-edit { color: #337ab7; }
+.failed_tasks .glyphicon-download-alt { margin-left: 5px; }
+.glyphicon-download-alt:hover,
+.glyphicon-edit:hover { color: #23527c; cursor: pointer; text-decoration: none; }
+.glyphicon-trash { color: #a94442; }
+.btn-danger > .glyphicon-trash,
+.btn-danger > .glyphicon-trash:hover { color: #fff; }
+.glyphicon-trash:hover { color: #843534; cursor: pointer; }
+
+/* Set the font size for icons inside headings, lead paragraphs and definition lists */
+h1 > .glyphicon-edit,
+p.lead .glyphicon { font-size: 16px; }
+h2 > .glyphicon-question-sign,
+h3 > .glyphicon-question-sign,
 .heading-help { font-size: 14px; }
 
-/* Styles for the external link */
-.get-info { color: #0088CC; }
-.get-info:hover { color: #005580; cursor: pointer; text-decoration: none; }
+/* Create a class for wells without background colour */
+.well-transparent { background-color: transparent; }
 
-/* Styles for code and pre tags */
-code { background-color: transparent; border: none; color: #333333; }
-dd code, .alert code { white-space: pre-wrap; word-break: break-all; word-wrap: break-word; }
-.alert-warning code, .alert-warning pre { background-color: transparent; border: none; color: #C09853; margin-bottom: 0px; }
-.alert-error code { background-color: transparent; border: none; color: #B94A48; margin-bottom:0px; }
-.alert-error pre { background-color: transparent; border: none; color: #B94A48; word-break: normal; margin-bottom: 0px; }
-.alert-warning pre { word-break: normal; }
-.alert-info a { font-weight: 300; }
-.alert-info code { color: #3A87AD; }
-.tooltip code { background-color: transparent; color: #FFFFFF; font-weight: normal; border: none; font-size: 1em; }
+/* Create a class for the left navigation headers */
+.nav-header { display: block; font-size: 12px; font-weight: bold; line-height: 20px; color: #999; text-transform: uppercase; margin-top: 20px !important; margin-bottom: 15px; padding-left: 15px; }
 
-/* Style for definition lists */
-dd ul { list-style-type: none; margin: 0px; }
-dt, dd  {line-height: 25px; }
-dd li { line-height: 25px; }
-.item-info dd { line-height: 20px; margin-bottom: 10px; }
+/* Increase the tabs padding and margin in the project pages to fit the build form and the main content */
+#project-topbar .nav-tabs > li > a { padding: 15px; }
+#project-topbar { margin-bottom: 20px; }
 
-/* Style the filter modal dialogs */
-.modal { width: 800px; margin-left: -400px; }
-.modal-footer .btn { float: left; }
-.modal-body { max-height: 300px; }
+/* Style the project name change form in the project pages */
+#project-name-change-input { width: 20em; }
 
-/* Hover style for the clear search icon */
-.icon-remove-sign:hover { color: #999999; cursor: pointer; }
+/* Style the build form in the project pages */
+#project-topbar .input-lg { width: 18em; }
+#project-topbar form .glyphicon { top: 15px; right: 4px; }
+#build-button { padding: 10px 30px; }
 
-/* Some extra space before headings when needed */
-.details { margin-top: 30px; }
-.air { margin-top: 30px; }
+/* Style the form links in the project page (all machines, all layers, etc) */
+.form-link { margin-top: 10px; }
 
-/* Required classes for the highlight behaviour in tables */
-.highlight { -webkit-animation: target-fade 10s 1; -moz-animation: target-fade 10s 1; animation: target-fade 10s 1; }
+/* Style the most built recipes list in the project page */
+#freq-build-list .checkbox input[type="checkbox"] { position: relative; margin: 0 10px 0 0; vertical-align: middle; }
+#freq-build-list.lead > li { line-height: 25px; }
+#freq-build-list { margin-top: 20px; }
+#freq-build-list label { padding-left: 0; }
+#freq-build-btn { margin-top: 10px; }
+#no-most-built { margin-top: 20px; }
+
+/* Style the layers section in the project page and the layer dependencies in the import layer form */
+#layer-container .form-inline { margin-top: 20px; }
+#layer-add-input { width: 17em; }
+ul.lead { margin-top: 20px; }
+ul.lead > li { line-height: 38px; }
+ul.lead .glyphicon-trash,
+ul.lead .glyphicon-trash { font-size: 16px; margin-left: 7px; }
+#layers-in-project-list .tooltip-inner  { max-width: 600px; }
+#no-layers-in-project { margin-top: 20px; }
+#no-layers-in-project ul { margin-top: 10px; }
+
+/* Style the layer information icons in the layer details pages */
+dd .glyphicon-trash,
+dd .glyphicon-edit { margin-left: 5px; }
+
+/* Style the forms and definition lists in the layer details pages */
+#change-repo-form .form-control { width: 17em; }
+#information { margin-bottom: 5em; }
+#information dd > form { margin-bottom: 5px; margin-top: 5px; }
+#edit-layer-source-form fieldset { margin-top: 20px; }
+#directory-info,
+#git-repo-info { margin-top: 20px; }
+#layer-dir-path-in-details { width: 55%; }
+.add-deps .form-control { width: 15em; }
+
+/* Style the forms and definition lists in the BitBake variables page */
+.variable-list { margin-bottom: 20px; }
+dd.variable-list form { margin-top: 10px; }
+#new-dl_dir,
+#filter-image_fstypes,
+#new-image_install,
+#new-sstate_dir,
+#new-imagefs_types { width: 20em; }
+#package_classes-select { width: 10em; }
+.scrolling { border: 1px solid #dddddd; height: 154px; overflow: auto; padding: 0 10px; width: 27.5%; margin-bottom: 10px; margin-top: 10px; }
+.scrolling.has-error { border-color: #a94442; }
+.help-block.text-danger { color: #a94442; }
+.tooltip-inner code { color: #fff; }
+.text-danger > code { color: #a94442; }
+dd.variable-list .glyphicon-question-sign { font-size: 14px; }
+dd.variable-list .glyphicon-edit { font-size: 16px; }
+dt .glyphicon-trash { margin-left: 5px; font-size: 16px; }
+#change-package_classes-form .checkbox { margin-top: 5px; }
+#variable-form h5 { margin-top: 0; }
+#variable-form .col-md-5 { padding-left: 45px; }
+
+/* Create a class for additional top margin that we can use in headings */
+.top-air { margin-top: 40px; }
+
+/* Add some bottom margin to our h2's */
+h2 { margin-bottom: 25px; }
+
+/* Style the typeahead */
+.tt-menu { min-width: 400px; padding-bottom: 10px; }
+.tt-suggestion { padding: 5px 10px; }
+.tt-suggestion:hover,
+.tt-suggestion:active { background-color: #f5f5f5; cursor: pointer; }
+
+/* Style the import layer form controls*/
+legend { border: none; }
+fieldset.fields-apart-from-layer-name { margin-top: 20px; }
+.radioLegend { margin-bottom: 0; }
+#layer-name-ctrl { margin-top: 20px; }
+#import-layer-name,
+#layer-subdir { width: 20%; }
+#layer-git-repo-url { width: 40%; }
+#layer-git-ref { width: 32%; }
+#local-dir-path { width: 45%; }
+#layer-dependency { width: 16em; }
+#layer-deps-list { margin-top: 0; }
+#form-actions { margin-bottom: 30px; }
+#duplicate-layer-info dl { margin-top: 10px; }
+#duplicate-layer-info dd { margin-bottom: 10px; }
+.help-inline { color: #737373; margin-left: 10px; }
+.radio-help { width: 50%; margin-left: 20px; }
+#repo-select div:nth-of-type(2) { margin-top: 15px; }
+
+/* Give some padding to the in-cell tooltips we use for notifications in tables */
+td > .tooltip-inner,
+.inline-notification { padding: 10px; }
+
+/* Set sane widths for table columns */
+#newcustomimagestable .get_description_or_summary,
+#imagerecipestable .get_description_or_summary,
+#softwarerecipestable .get_description_or_summary,
+#layerstable .layer__summary { width: 30%; }
+#recipestable .get_description_or_summary { width: 40%; }
+#machinestable .name { white-space: nowrap; }
+#machinestable .description { width: 45%; }
+#otable .variable_value,
+#otable .file { word-break: break-all; width: 25%; }
+[id^="variable-"] .file { word-break: break-all; }
+
+/* For the tables still not ported to ToasterTables, style the table headings
+ * that are not sortable */
+th > span.text-muted { font-weight: normal; }
+
+/* Override the rather ugly default code styles */
+code { color: #333; background-color: transparent; }
+
+/* Style our breadcrumbs */
+.breadcrumb > li + li::before { content: none; }
+.breadcrumb { background-color: transparent; padding-left: 0; padding-top: 15px; }
+.breadcrumb .divider { color: #777; margin: 0 5px; }
+
+/* Reduce top margin for the page-header class */
+.page-header { margin-top: 30px; }
+
+/* Set some space around the layer button in the layer details pages */
+.tab-content { margin-top: 20px; }
+.tab-pane { margin-top: 20px; }
+
+/* Style the new window icons */
+.glyphicon-new-window:hover { text-decoration: none; }
+.dl-horizontal > dd > .glyphicon-new-window { margin-left: 5px; }
+
+/* Style the special no results message in the custom image details page */
+[id^="no-results-special-"] > .alert-warning > ol { margin-top: 10px; }
+
+/* style the loading spinner in the new custom image dialog */
+#create-new-custom-image-btn [data-role="loading-state"] {
+  padding-left: 16px;
+}
+
+/* icon has to be absolutely positioned, otherwise the spin animation doesn't work */
+#create-new-custom-image-btn [data-role="loading-state"] .icon-spinner {
+  position: absolute;
+  left: 26px;
+  bottom: 26px;
+}
+
+/* Style the content of modal dialogs */
+.modal-footer { text-align: left; }
+.date-filter-controls { margin-top: 10px; }
+.date-filter-controls span { margin: 0 10px; }
+
+/* Style the fixed positioned notifications */
+#loading-notification { position: fixed; z-index: 1101; top: 3%; left: 40%; right: 40%; -webkit-box-shadow: 0 0 10px #c09853; -moz-box-shadow: 0 0 10px #c09853; box-shadow: 0 0 10px #c09853; }
+
+.change-notification { position: fixed; z-index: 1101; top: 4%; left: 30%; right: 30%; -webkit-box-shadow: 0 0 10px #3a87ad; -moz-box-shadow: 0 0 10px #3a87ad; box-shadow: 0 0 10px #3a87ad; }
+
+.alert-success.change-notification { -webkit-box-shadow: 0 0 10px #3c763d; -moz-box-shadow: 0 0 10px #3c763d; box-shadow: 0 0 10px #3c763d; }
+
+/* Style the new project form */
+#new-project-name { width: 33%; }
+#projectversion { width: 20%; margin-bottom: 10px; }
+
+/* Style the Toaster screenshot in the landing page */
+.img-thumbnail { padding: 0; }
+
+/* Set the layout for the build information pages */
+
+#nav { margin-top: 10px; }
+.page-header.build-data { margin-top: 0px; }
+.build-data > h1 { margin-top: 8px; }
+
+/* Style the build outcome information in the build dashboard */
+.log { margin-left: 30px; }
+.show-warnings { font-weight: 700; color: #8a6d3b; }
+.show-warnings:hover { color: #66512c; }
+
+/* Style the errors and warnings information in the build dashboard */
+#errors .panel-heading { background-color: transparent; color: #843534; }
+#warnings .panel-heading { background-color: transparent; color: #8a6d3b; }
+#warnings .panel-heading a:hover { color: #66512c; }
+h2.panel-title { font-size: 30px; }
+.alert-danger pre,
+.alert-warning pre { background-color: transparent; border: none; }
+.alert-danger pre { color: #a94442; }
+#error-info pre,
+#warning-info pre { white-space: pre-wrap; }
+.alert-warning pre { color: #8a6d3b; }
+
+/* Style the wells in the build dashboard */
+.dashboard-section h3 { margin-top: 10px; margin-bottom: 20px; }
+.col-md-4.dashboard-section dd { margin-bottom: 10px; }
+
+/* Make the help in tables insivisble until you hover over the right cell */
+.hover-help { visibility: hidden; }
+
+#add-remove-layer-btn { margin-bottom: 20px; }
+
+/* Blue hightlight animation for tasks and directory structure tables */
+.highlight { -webkit-animation: target-fade 15s 1; -moz-animation: target-fade 15s 1; animation: target-fade 15s 1; }
 @-webkit-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
 @-moz-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
 @keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
 
-/* This makes tooltips work inside modal dialogs */
-.tooltip { z-index: 2000 !important; }
-
-/* Override default Twitter Boostrap styles for anchor tags inside tables */
-td a, td a > code { color: #333333; }
-td code { white-space: normal; }
-td a:hover, td a > code:hover { color: #000000; text-decoration: underline; }
-
-/* Override default Twitter Bootstrap styles for tr.error */
-.table tbody tr.error > td { background-color: transparent; } /* override default Bootstrap behaviour */
-.table-hover tbody tr.error:hover > td { background-color: #F5F5F5;} /* override default Bootstrap behaviour */
-
-/* Right justify Bootstrap table columns for size fields */
-.table .sizecol { text-align: right; }
-
-/* Set error, warning, success and muted styles */
-.error, .red, td.error a, tr.error a { color: #b94a48; }
-a.error:hover, a.error:focus, tr.error a:hover { color: #943A38; text-decoration: underline; }
-.warning, .yellow { color: #c09853;}
-a.warning { background-color: transparent; }
-a.warning:hover, a.warning:focus { color: #B38942; text-decoration: underline; }
-.success, .green { color: #468847;}
-.success:hover { color: #347132; text-decoration: underline; }
-td > .success:hover { text-decoration: underline; }
-.muted a { color:#999999; }
-.muted a:hover { color:#999999; }
-
-/* Sorting functionality styles for table headings */
-.sorted { color: #333333; font-weight: bold; }
-.sorted:hover { color: #000000; text-decoration: underline; }
-th > a, th > span { font-weight: normal; }
-
-/* Force long strings like commit hashes to wrap */
-.iscommit { white-space: pre-wrap; word-break: break-all; word-wrap: break-word;}
-
-/* Make the popovers scrollable if they are too long */
-.popover-content { max-height: 30em; overflow-y: scroll; }
-
-/* Styles for the directory structure table. We'll probably won't use those in production */
-.one { padding-left: 18px !important; }
-.two { padding-left: 36px !important; }
-.three { padding-left: 54px !important; }
-.content-directory a { color: #0088CC; }
-.content-directory a:hover { color: #005580; text-decoration: underline; }
-.symlink { color: #CCCCCC; }
-
-/* Styles for the navbar actions */
-.btn-group + .btn-group { margin-right: 10px; }
-.navbar-inner > .btn-group { margin-top: 6px; }
-[id^="search-input-"], #search { width: 80%; }
-
-/* Styles for the parent item in the left navigation */
-
-.nav > li > a.nav-parent { font-size: 18px; line-height: 25px;  }
-
-/* Other styles */
-.dropdown-menu { padding: 10px; }
-select { width: auto; }
-.page-header { color: #5A5A5A; }
-.top-air { margin-top: 40px;}
-.progress { margin-bottom: 0px; }
-.lead .badge { font-size: 18px; font-weight: normal; border-radius: 15px; padding: 9px; }
-.lead ol, .lead ul { padding: 10px 0 0 20px; }
-.lead ol > li, .lead ul > li {
-    line-height: 35px;
-}
-.well > .lead, .alert .lead { margin-bottom: 0px; }
-.well-transparent { background-color: transparent; }
-.no-results { margin: 10px 0; }
-.task-name { margin-left: 7px; }
-.icon-hand-right {color: #CCCCCC; }
-.help-inline { margin: 5px; }
-.dashboard-section { background-color: transparent; }
-
-/* styles for landing page - analysis mode */
-.hero-unit { margin: 20px 0 30px; }
-.hero-unit > .close { font-size:40px; }
-.hero-actions { margin-top: 30px; }
-
-/* styles for landing page - build mode */
-.hero-unit p { line-height: 25px; }
-.hero-unit p, .hero-unit .btn-large { margin-top: 15px; }
-.hero-unit ul { margin-top: 20px; }
-.hero-unit li { line-height: 30px; }
-.hero-unit img { background-color: #eee; margin-top: 15px; }
-
-/* make tables Chrome-happy (me, not so much) */
-table { table-layout: fixed; word-wrap: break-word; }
-
-table p { margin-bottom: 0 }
-.table td { vertical-align: middle; }
-
-/* styles for the new build button */
-.new-build .btn-primary { padding: 4px 30px; }
-.new-build .alert { margin-top: 10px; }
-.new-build .alert p { margin-top: 10px; }
-
-/* styles for showing the project name in build mode */
-.project-name { padding-top: 0; }
-.project-name .label { font-weight: normal; margin-bottom: 5px; margin-left: -15px; padding: 5px; }
-.project-name .label > a { color: #fff; font-weight: normal; }
-
-/* styles for showing help icons next to command-line builds */
-.build-result .get-help-green, .build-result .get-help-red, .build-result .get-help-blue { margin-right: 35px; margin-top: 8px; font-size: 16px; }
-
-/* Remove bottom margin for forms inside modal dialogs */
-#dependencies-modal-form { margin-bottom: 0px; }
-
-/* Custom column widths */
-.narrow-col { width: 8%; }
-.medium-col { width: 12%; }
-
-/* Configuration styles */
-.icon-trash { color: #B94A48; font-size: 16px; padding-left: 5px; }
-.icon-trash:hover { color: #943A38; text-decoration: none; cursor: pointer; }
-.icon-pencil, .icon-download-alt, .icon-refresh, .icon-star-empty, .icon-star  { font-size: 16px; color: #0088CC; padding-left: 2px; }
-.icon-pencil:hover, .icon-download-alt:hover, .icon-refresh:hover, .icon-star-empty:hover, .icon-star:hover, .icon-tasks:hover { color: #005580; text-decoration: none; cursor: pointer; }
-.icon-share { padding-left: 2px; }
-.alert-success .icon-refresh, .alert-success .icon-tasks { color: #468847; }
-.alert-success .icon-refresh:hover, .alert-success .icon-tasks:hover { color: #347132; }
-.alert-error .icon-refresh, .alert-error .icon-tasks { color: #b94a48; }
-.alert-error .icon-refresh:hover, .alert-error .icon-tasks:hover { color: #943A38; }
-.configuration-list li, .configuration-list label { line-height: 35px; font-size: 21px; font-weight: 200; margin-bottom: 0px;}
-.configuration-list { font-size: 16px; margin-bottom: 1.5em; }
-.configuration-list i { font-size: 16px; }
-/*.configuration-layers { height: 135px; overflow: scroll; }*/
-.counter { font-weight: normal; }
-.well-alert { background-color: #FCF8E3; border: 1px solid #FBEED5; border-radius: 4px; }
-.well-alert > .lead { color: #C09853; padding-bottom: .75em; }
-.configuration-alert { margin-bottom: 0px; padding: 8px 14px; }
-.configuration-alert p { margin-bottom: 0px; }
-.project-form { margin-top: 10px; }
-.add-layers .btn-block + .btn-block, .build .btn-block + .btn-block { margin-top: 0px; }
-input.huge { font-size: 17.5px; padding: 11px; min-width: 60%; }
-.build-form { margin-bottom: 0px; }
-.build-form .input-append { margin-bottom: 0px; }
-.build-form .btn-large { padding: 11px 35px; }
-.build-form p { font-size:17.5px ;margin:12px 0 0 10px;}
-#layer-container form, #target-container form { margin-bottom: 0px; }
-.btn-primary .icon-question-sign, .btn-danger .icon-question-sign { color: #fff; }
-.btn-primary .icon-question-sign:hover, .btn-danger .icon-question-sign:hover { color: #999; }
-a code { color: #0088CC; }
-a code:hover { color: #005580; }
-.localconf { font-size: 17.5px; margin-top: 40px; }
-.localconf code { font-size: 17.5px; }
-#add-layer-dependencies {  margin-top: 5px; }
-.link-action { font-size: 17.5px; margin-top: 40px; }
-.link-action code { font-size: 17.5px; }
-.artifact { width: 9em; }
-.control-group { margin-bottom: 0px; }
-#project-details form { margin: 0px; }
-dd form { margin: 10px 0 0 0; }
-dl textarea { resize: vertical; }
-.navbar-fixed-top {  z-index: 1; }
-.popover { z-index: 2; }
-.btn-danger .icon-trash { color: #fff; }
-.bbappends { list-style-type: none; margin-left: 0; }
-.bbappends li { line-height: 25px; }
-.configuration-list input[type="checkbox"] { margin-top:13px;margin-right:10px; }
-.alert input[type="checkbox"] { margin-top: 0px; margin-right: 3px; }
-.alert ol { padding: 10px 0px 0px 20px; }
-.alert ol > li { line-height: 35px; }
-.dl-vertical form { margin-top: 10px; }
-.scrolling { border: 1px solid #dddddd; height: 154px; overflow: auto; padding: 8px; width: 27.5%; margin-bottom: 10px; }
-.lead .help-block { font-size: 14px; line-height: 20px; font-weight: normal; }
-.button-place  .btn { margin: 0 0 20px 0; }
-.tooltip-inner { max-width: 250px; }
-.new-build { padding: 20px; }
-.new-build li { line-height: 30px; }
-.new-build li .alert { line-height: 20px; width: 200px; white-space: normal; }
-.new-build h6 { margin: 10px 0 0 0; color: #5a5a5a; }
-.new-build h3 { margin: 0; color: #5a5a5a; }
-.new-build form { margin: 5px 0 0; }
-.new-build .input-append { margin-bottom: 0; }
-#build-selected { margin-top: 15px; }
-div.add-deps { margin-top: 15px; }
-.btn.log { margin-left: 20px; }
-
-
-.animate-repeat {
-  list-style:none;
-  box-sizing:border-box;
-}
-
-.animate-repeat.ng-move,
-.animate-repeat.ng-enter,
-.animate-repeat.ng-leave {
-  -webkit-transition:all linear 0.5s;
-  transition:all linear 0.5s;
-}
-
-.animate-repeat.ng-leave.ng-leave-active,
-.animate-repeat.ng-move,
-.animate-repeat.ng-enter {
-  opacity:0;
-}
-
-.animate-repeat.ng-leave,
-.animate-repeat.ng-enter.ng-enter-active {
-  opacity:1;
-}
-
-.tab-pane table { margin-top: 10px; }
-
-thead .description, .get_description_or_summary { width: 364px; }
-thead .add-del-layers { width: 124px; }
-
-#loading-notification {
-  position: fixed;
-  z-index: 101;
-  top: 3%;
-  left: 40%;
-  right: 40%;
-  -webkit-box-shadow: 0 0 10px #c09853;
-  -moz-box-shadow: 0 0 10px #c09853;
-  box-shadow: 0 0 10px #c09853;
-}
-
-#change-notification {
-  position: fixed;
-  z-index: 101;
-  top: 3%;
-  left: 20%;
-  right: 20%;
-  -webkit-box-shadow: 0 0 10px #3a87ad;
-  -moz-box-shadow: 0 0 10px #3a87ad;
-  box-shadow: 0 0 10px #3a87ad;
-}
-
 /* Copied in from newer version of Font-Awesome 4.3.0 */
 .fa-spin {
   -webkit-animation: fa-spin 2s infinite linear;
@@ -330,14 +368,3 @@
   }
 }
 /* End copied in from newer version of Font-Awesome 4.3.0 */
-
-.top-padded {
-  padding-top: 60px;
-}
-
-input.input-lg {
-  font-size: 18px;
-  height: 22px;
-  line-height: 1.33333;
-  padding: 10px 16px;
-}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.eot b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.eot
index 423bd5d..b93a495 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.eot
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.svg b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.svg
index 4469488..94fb549 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.svg
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.svg
@@ -6,224 +6,283 @@
 <font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
 <font-face units-per-em="1200" ascent="960" descent="-240" />
 <missing-glyph horiz-adv-x="500" />
-<glyph />
-<glyph />
-<glyph unicode="&#xd;" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
 <glyph unicode=" " />
-<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
-<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
 <glyph unicode="&#xa0;" />
-<glyph unicode="&#x2000;" horiz-adv-x="652" />
-<glyph unicode="&#x2001;" horiz-adv-x="1304" />
-<glyph unicode="&#x2002;" horiz-adv-x="652" />
-<glyph unicode="&#x2003;" horiz-adv-x="1304" />
-<glyph unicode="&#x2004;" horiz-adv-x="434" />
-<glyph unicode="&#x2005;" horiz-adv-x="326" />
-<glyph unicode="&#x2006;" horiz-adv-x="217" />
-<glyph unicode="&#x2007;" horiz-adv-x="217" />
-<glyph unicode="&#x2008;" horiz-adv-x="163" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
 <glyph unicode="&#x2009;" horiz-adv-x="260" />
 <glyph unicode="&#x200a;" horiz-adv-x="72" />
 <glyph unicode="&#x202f;" horiz-adv-x="260" />
-<glyph unicode="&#x205f;" horiz-adv-x="326" />
-<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
-<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
-<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
-<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
-<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
-<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
-<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
-<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
-<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
-<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
-<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
-<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
-<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
-<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
-<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
-<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
-<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
-<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
-<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
-<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
-<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
-<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
-<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
-<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
-<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
-<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
-<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
-<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
-<glyph unicode="&#xe028;" d="M0 25v475l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
-<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
-<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
-<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
-<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
-<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
-<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
-<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
-<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
-<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
-<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
-<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
-<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
-<glyph unicode="&#xe041;" d="M1 700v475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
-<glyph unicode="&#xe042;" d="M2 700v475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
-<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
-<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
-<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
-<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
-<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
-<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v70h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
-<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
-<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
-<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
-<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
-<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
-<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
-<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
-<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
-<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
-<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
-<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
-<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
-<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
-<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
-<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l566 567l-136 137l-430 -431l-147 147z" />
-<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
-<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
-<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
-<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
-<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
-<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
-<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
-<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
-<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
-<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
-<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
-<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
-<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h600v200h-600v-200z" />
-<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141z" />
-<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
-<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM363 700h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26 q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-105 0 -172 -56t-67 -183zM500 300h200v100h-200v-100z" />
-<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
-<glyph unicode="&#xe087;" d="M0 500v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200 v-206q149 48 201 206h-201v200h200q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210z" />
-<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
-<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
-<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
-<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
-<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
-<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
-<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
-<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
-<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
-<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
-<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
-<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100z M100 0h400v400h-400v-400zM200 900q-3 0 14 48t35 96l18 47l214 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
-<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
-<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
-<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
-<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
-<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
-<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64 q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
-<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
-<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
-<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
-<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
-<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
-<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
-<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
-<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
-<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
-<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
-<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
-<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
-<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
-<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM99 500v250v5q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351z M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37 t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
-<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
-<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 212l100 213h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
-<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
-<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
-<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM999 201v600h200v-600h-200z" />
-<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
-<glyph unicode="&#xe130;" d="M1 585q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM76 565l237 339h503l89 -100v-294l-340 -130 q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
-<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 500h300l-2 -194l402 294l-402 298v-197h-298v-201z" />
-<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l400 -294v194h302v201h-300v197z" />
-<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
-<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
-<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -34 5.5 -93t7.5 -87q0 -9 17 -44t16 -60q12 0 23 -5.5 t23 -15t20 -13.5q20 -10 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55.5t-20 -57.5q12 -21 22.5 -34.5t28 -27t36.5 -17.5q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q101 -2 221 111q31 30 47 48t34 49t21 62q-14 9 -37.5 9.5t-35.5 7.5q-14 7 -49 15t-52 19 q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q8 16 22 22q6 -1 26 -1.5t33.5 -4.5t19.5 -13q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5 t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23 q-19 -3 -37 0q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -46 0t-45 -3q-20 -6 -51.5 -25.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79zM518 915q3 12 16 30.5t16 25.5q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -18 8 -42.5t16.5 -44 t9.5 -23.5q-6 1 -39 5t-53.5 10t-36.5 16z" />
-<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
-<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
-<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
-<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
-<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
-<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM513 609q0 32 21 56.5t52 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-16 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5q-37 0 -62.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
-<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36 q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60l517 511 q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
-<glyph unicode="&#xe143;" d="M79 784q0 131 99 229.5t230 98.5q144 0 242 -129q103 129 245 129q130 0 227 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100l-84.5 84.5t-68 74t-60 78t-33.5 70.5t-15 78z M250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-106 48.5q-73 0 -131 -83l-118 -171l-114 174q-51 80 -124 80q-59 0 -108.5 -49.5t-49.5 -118.5z" />
-<glyph unicode="&#xe144;" d="M57 353q0 -94 66 -160l141 -141q66 -66 159 -66q95 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141l19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
-<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
-<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
-<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5v-307l64 -14 q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5zM700 237 q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
-<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5 t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10 t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221z" />
-<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
-<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
-<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
-<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
-<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
-<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
-<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
-<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
-<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
-<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
-<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
-<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
-<glyph unicode="&#xe162;" d="M216 519q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40z" />
-<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
-<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
-<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
-<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 401h700v699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l248 -237v700h-699zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
-<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
-<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
-<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
-<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
-<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
-<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
-<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
-<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359z" />
-<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
-<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
-<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118q17 17 20 41.5 t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
-<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
-<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
-<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
-<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
-<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
-<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
-<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
-<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
-<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
-<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
-<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
-<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
-<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
-<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300 h200l-300 -300z" />
-<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
-<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
-<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
 </font>
 </defs></svg> 
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.ttf b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.ttf
index a498ef4..1413fc6 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.ttf
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff
index d83c539..9e61285 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff2 b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/fonts/glyphicons-halflings-regular.woff2
Binary files differ
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/html/layer_deps_modal.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/html/layer_deps_modal.html
index e1dba43..e843d8d 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/html/layer_deps_modal.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/html/layer_deps_modal.html
@@ -1,17 +1,21 @@
-<div id="dependencies-modal" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="false">
-  <form id="dependencies-modal-form">
-    <div class="modal-header">
-      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
-      <h3><span id="title"></span> dependencies</h3>
-    </div>
-    <div class="modal-body">
-      <p id="body-text"> <strong id="layer-name"></strong> depends on some layers that are not added to your project. Select the ones you want to add:</p>
-      <ul class="unstyled" id="dependencies-list">
-      </ul>
-    </div>
-    <div class="modal-footer">
-      <button class="btn btn-primary" type="submit">Add layers</button>
-      <button class="btn" type="reset" data-dismiss="modal">Cancel</button>
-    </div>
-  </form>
-</div>
+<div id="dependencies-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <form id="dependencies-modal-form">
+	<div class="modal-header">
+	  <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
+	  <h3><span id="title"></span> dependencies</h3>
+	</div>
+	<div class="modal-body">
+	  <p id="body-text"> <strong id="layer-name"></strong> depends on some layers that are not added to your project. Select the ones you want to add:</p>
+	  <ul class="list-unstyled" id="dependencies-list">
+	  </ul>
+	</div>
+	<div class="modal-footer">
+	  <button class="btn btn-primary" type="submit">Add layers</button>
+	  <button class="btn btn-link" type="reset" data-dismiss="modal">Cancel</button>
+	</div>
+      </form>
+    </div><!-- /.modal-content -->
+  </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/img/glyphicons-halflings-white.png b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/img/glyphicons-halflings-white.png
deleted file mode 100644
index 3bf6484..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/img/glyphicons-halflings-white.png
+++ /dev/null
Binary files differ
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/img/glyphicons-halflings.png b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/img/glyphicons-halflings.png
deleted file mode 100644
index a996999..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/img/glyphicons-halflings.png
+++ /dev/null
Binary files differ
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/bootstrap.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/bootstrap.js
new file mode 100644
index 0000000..d47d640
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/bootstrap.js
@@ -0,0 +1,2363 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+
+if (typeof jQuery === 'undefined') {
+  throw new Error('Bootstrap\'s JavaScript requires jQuery')
+}
+
++function ($) {
+  'use strict';
+  var version = $.fn.jquery.split(' ')[0].split('.')
+  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {
+    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')
+  }
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.3.6
+ * http://getbootstrap.com/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      WebkitTransition : 'webkitTransitionEnd',
+      MozTransition    : 'transitionend',
+      OTransition      : 'oTransitionEnd otransitionend',
+      transition       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+
+    return false // explicit for ie8 (  ._.)
+  }
+
+  // http://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false
+    var $el = this
+    $(this).one('bsTransitionEnd', function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+
+    if (!$.support.transition) return
+
+    $.event.special.bsTransitionEnd = {
+      bindType: $.support.transition.end,
+      delegateType: $.support.transition.end,
+      handle: function (e) {
+        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+      }
+    }
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.3.6
+ * http://getbootstrap.com/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.VERSION = '3.3.6'
+
+  Alert.TRANSITION_DURATION = 150
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = $(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.closest('.alert')
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      // detach from parent, fire event then clean up data
+      $parent.detach().trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one('bsTransitionEnd', removeElement)
+        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.alert
+
+  $.fn.alert             = Plugin
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.3.6
+ * http://getbootstrap.com/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element  = $(element)
+    this.options   = $.extend({}, Button.DEFAULTS, options)
+    this.isLoading = false
+  }
+
+  Button.VERSION  = '3.3.6'
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state += 'Text'
+
+    if (data.resetText == null) $el.data('resetText', $el[val]())
+
+    // push to event loop to allow forms to submit
+    setTimeout($.proxy(function () {
+      $el[val](data[state] == null ? this.options[state] : data[state])
+
+      if (state == 'loadingText') {
+        this.isLoading = true
+        $el.addClass(d).attr(d, d)
+      } else if (this.isLoading) {
+        this.isLoading = false
+        $el.removeClass(d).removeAttr(d)
+      }
+    }, this), 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var changed = true
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+      if ($input.prop('type') == 'radio') {
+        if ($input.prop('checked')) changed = false
+        $parent.find('.active').removeClass('active')
+        this.$element.addClass('active')
+      } else if ($input.prop('type') == 'checkbox') {
+        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
+        this.$element.toggleClass('active')
+      }
+      $input.prop('checked', this.$element.hasClass('active'))
+      if (changed) $input.trigger('change')
+    } else {
+      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
+      this.$element.toggleClass('active')
+    }
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  var old = $.fn.button
+
+  $.fn.button             = Plugin
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document)
+    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      var $btn = $(e.target)
+      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+      Plugin.call($btn, 'toggle')
+      if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
+    })
+    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+    })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.3.6
+ * http://getbootstrap.com/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      = null
+    this.sliding     = null
+    this.interval    = null
+    this.$active     = null
+    this.$items      = null
+
+    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
+  }
+
+  Carousel.VERSION  = '3.3.6'
+
+  Carousel.TRANSITION_DURATION = 600
+
+  Carousel.DEFAULTS = {
+    interval: 5000,
+    pause: 'hover',
+    wrap: true,
+    keyboard: true
+  }
+
+  Carousel.prototype.keydown = function (e) {
+    if (/input|textarea/i.test(e.target.tagName)) return
+    switch (e.which) {
+      case 37: this.prev(); break
+      case 39: this.next(); break
+      default: return
+    }
+
+    e.preventDefault()
+  }
+
+  Carousel.prototype.cycle = function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getItemIndex = function (item) {
+    this.$items = item.parent().children('.item')
+    return this.$items.index(item || this.$active)
+  }
+
+  Carousel.prototype.getItemForDirection = function (direction, active) {
+    var activeIndex = this.getItemIndex(active)
+    var willWrap = (direction == 'prev' && activeIndex === 0)
+                || (direction == 'next' && activeIndex == (this.$items.length - 1))
+    if (willWrap && !this.options.wrap) return active
+    var delta = direction == 'prev' ? -1 : 1
+    var itemIndex = (activeIndex + delta) % this.$items.length
+    return this.$items.eq(itemIndex)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || this.getItemForDirection(type, $active)
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var that      = this
+
+    if ($next.hasClass('active')) return (this.sliding = false)
+
+    var relatedTarget = $next[0]
+    var slideEvent = $.Event('slide.bs.carousel', {
+      relatedTarget: relatedTarget,
+      direction: direction
+    })
+    this.$element.trigger(slideEvent)
+    if (slideEvent.isDefaultPrevented()) return
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+      $nextIndicator && $nextIndicator.addClass('active')
+    }
+
+    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      $next.addClass(type)
+      $next[0].offsetWidth // force reflow
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one('bsTransitionEnd', function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () {
+            that.$element.trigger(slidEvent)
+          }, 0)
+        })
+        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
+    } else {
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger(slidEvent)
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  var old = $.fn.carousel
+
+  $.fn.carousel             = Plugin
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  var clickHandler = function (e) {
+    var href
+    var $this   = $(this)
+    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+    if (!$target.hasClass('carousel')) return
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    Plugin.call($target, options)
+
+    if (slideIndex) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  }
+
+  $(document)
+    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      Plugin.call($carousel, $carousel.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.3.6
+ * http://getbootstrap.com/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
+                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
+    this.transitioning = null
+
+    if (this.options.parent) {
+      this.$parent = this.getParent()
+    } else {
+      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+    }
+
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.VERSION  = '3.3.6'
+
+  Collapse.TRANSITION_DURATION = 350
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var activesData
+    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
+
+    if (actives && actives.length) {
+      activesData = actives.data('bs.collapse')
+      if (activesData && activesData.transitioning) return
+    }
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    if (actives && actives.length) {
+      Plugin.call(actives, 'hide')
+      activesData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')[dimension](0)
+      .attr('aria-expanded', true)
+
+    this.$trigger
+      .removeClass('collapsed')
+      .attr('aria-expanded', true)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse in')[dimension]('')
+      this.transitioning = 0
+      this.$element
+        .trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse in')
+      .attr('aria-expanded', false)
+
+    this.$trigger
+      .addClass('collapsed')
+      .attr('aria-expanded', false)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse')
+        .trigger('hidden.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+  Collapse.prototype.getParent = function () {
+    return $(this.options.parent)
+      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+      .each($.proxy(function (i, element) {
+        var $element = $(element)
+        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+      }, this))
+      .end()
+  }
+
+  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+    var isOpen = $element.hasClass('in')
+
+    $element.attr('aria-expanded', isOpen)
+    $trigger
+      .toggleClass('collapsed', !isOpen)
+      .attr('aria-expanded', isOpen)
+  }
+
+  function getTargetFromTrigger($trigger) {
+    var href
+    var target = $trigger.attr('data-target')
+      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+    return $(target)
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.collapse
+
+  $.fn.collapse             = Plugin
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+    var $this   = $(this)
+
+    if (!$this.attr('data-target')) e.preventDefault()
+
+    var $target = getTargetFromTrigger($this)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+
+    Plugin.call($target, option)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.3.6
+ * http://getbootstrap.com/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle="dropdown"]'
+  var Dropdown = function (element) {
+    $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.VERSION = '3.3.6'
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = selector && $(selector)
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+  function clearMenus(e) {
+    if (e && e.which === 3) return
+    $(backdrop).remove()
+    $(toggle).each(function () {
+      var $this         = $(this)
+      var $parent       = getParent($this)
+      var relatedTarget = { relatedTarget: this }
+
+      if (!$parent.hasClass('open')) return
+
+      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
+
+      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this.attr('aria-expanded', 'false')
+      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
+    })
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we use a backdrop because click events don't delegate
+        $(document.createElement('div'))
+          .addClass('dropdown-backdrop')
+          .insertAfter($(this))
+          .on('click', clearMenus)
+      }
+
+      var relatedTarget = { relatedTarget: this }
+      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this
+        .trigger('focus')
+        .attr('aria-expanded', 'true')
+
+      $parent
+        .toggleClass('open')
+        .trigger($.Event('shown.bs.dropdown', relatedTarget))
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive && e.which != 27 || isActive && e.which == 27) {
+      if (e.which == 27) $parent.find(toggle).trigger('focus')
+      return $this.trigger('click')
+    }
+
+    var desc = ' li:not(.disabled):visible a'
+    var $items = $parent.find('.dropdown-menu' + desc)
+
+    if (!$items.length) return
+
+    var index = $items.index(e.target)
+
+    if (e.which == 38 && index > 0)                 index--         // up
+    if (e.which == 40 && index < $items.length - 1) index++         // down
+    if (!~index)                                    index = 0
+
+    $items.eq(index).trigger('focus')
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.dropdown')
+
+      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown             = Plugin
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.3.6
+ * http://getbootstrap.com/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options             = options
+    this.$body               = $(document.body)
+    this.$element            = $(element)
+    this.$dialog             = this.$element.find('.modal-dialog')
+    this.$backdrop           = null
+    this.isShown             = null
+    this.originalBodyPad     = null
+    this.scrollbarWidth      = 0
+    this.ignoreBackdropClick = false
+
+    if (this.options.remote) {
+      this.$element
+        .find('.modal-content')
+        .load(this.options.remote, $.proxy(function () {
+          this.$element.trigger('loaded.bs.modal')
+        }, this))
+    }
+  }
+
+  Modal.VERSION  = '3.3.6'
+
+  Modal.TRANSITION_DURATION = 300
+  Modal.BACKDROP_TRANSITION_DURATION = 150
+
+  Modal.DEFAULTS = {
+    backdrop: true,
+    keyboard: true,
+    show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this.isShown ? this.hide() : this.show(_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.checkScrollbar()
+    this.setScrollbar()
+    this.$body.addClass('modal-open')
+
+    this.escape()
+    this.resize()
+
+    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
+      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
+        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
+      })
+    })
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(that.$body) // don't move modals dom position
+      }
+
+      that.$element
+        .show()
+        .scrollTop(0)
+
+      that.adjustDialog()
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element.addClass('in')
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$dialog // wait for modal to slide in
+          .one('bsTransitionEnd', function () {
+            that.$element.trigger('focus').trigger(e)
+          })
+          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+        that.$element.trigger('focus').trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+    this.resize()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .off('click.dismiss.bs.modal')
+      .off('mouseup.dismiss.bs.modal')
+
+    this.$dialog.off('mousedown.dismiss.bs.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+          this.$element.trigger('focus')
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keydown.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.resize = function () {
+    if (this.isShown) {
+      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+    } else {
+      $(window).off('resize.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.$body.removeClass('modal-open')
+      that.resetAdjustments()
+      that.resetScrollbar()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var that = this
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $(document.createElement('div'))
+        .addClass('modal-backdrop ' + animate)
+        .appendTo(this.$body)
+
+      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+        if (this.ignoreBackdropClick) {
+          this.ignoreBackdropClick = false
+          return
+        }
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus()
+          : this.hide()
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one('bsTransitionEnd', callback)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      var callbackRemove = function () {
+        that.removeBackdrop()
+        callback && callback()
+      }
+      $.support.transition && this.$element.hasClass('fade') ?
+        this.$backdrop
+          .one('bsTransitionEnd', callbackRemove)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callbackRemove()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+  // these following methods are used to handle overflowing modals
+
+  Modal.prototype.handleUpdate = function () {
+    this.adjustDialog()
+  }
+
+  Modal.prototype.adjustDialog = function () {
+    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+    this.$element.css({
+      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+    })
+  }
+
+  Modal.prototype.resetAdjustments = function () {
+    this.$element.css({
+      paddingLeft: '',
+      paddingRight: ''
+    })
+  }
+
+  Modal.prototype.checkScrollbar = function () {
+    var fullWindowWidth = window.innerWidth
+    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
+      var documentElementRect = document.documentElement.getBoundingClientRect()
+      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
+    }
+    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
+    this.scrollbarWidth = this.measureScrollbar()
+  }
+
+  Modal.prototype.setScrollbar = function () {
+    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+    this.originalBodyPad = document.body.style.paddingRight || ''
+    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
+  }
+
+  Modal.prototype.resetScrollbar = function () {
+    this.$body.css('padding-right', this.originalBodyPad)
+  }
+
+  Modal.prototype.measureScrollbar = function () { // thx walsh
+    var scrollDiv = document.createElement('div')
+    scrollDiv.className = 'modal-scrollbar-measure'
+    this.$body.append(scrollDiv)
+    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+    this.$body[0].removeChild(scrollDiv)
+    return scrollbarWidth
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option, _relatedTarget) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  var old = $.fn.modal
+
+  $.fn.modal             = Plugin
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
+    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    if ($this.is('a')) e.preventDefault()
+
+    $target.one('show.bs.modal', function (showEvent) {
+      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+      $target.one('hidden.bs.modal', function () {
+        $this.is(':visible') && $this.trigger('focus')
+      })
+    })
+    Plugin.call($target, option, this)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.3.6
+ * http://getbootstrap.com/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       = null
+    this.options    = null
+    this.enabled    = null
+    this.timeout    = null
+    this.hoverState = null
+    this.$element   = null
+    this.inState    = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.VERSION  = '3.3.6'
+
+  Tooltip.TRANSITION_DURATION = 150
+
+  Tooltip.DEFAULTS = {
+    animation: true,
+    placement: 'top',
+    selector: false,
+    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    container: false,
+    viewport: {
+      selector: 'body',
+      padding: 0
+    }
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled   = true
+    this.type      = type
+    this.$element  = $(element)
+    this.options   = this.getOptions(options)
+    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
+    this.inState   = { click: false, hover: false, focus: false }
+
+    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
+      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
+    }
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay,
+        hide: options.delay
+      }
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
+    }
+
+    if (self.tip().hasClass('in') || self.hoverState == 'in') {
+      self.hoverState = 'in'
+      return
+    }
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.isInStateTrue = function () {
+    for (var key in this.inState) {
+      if (this.inState[key]) return true
+    }
+
+    return false
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
+    }
+
+    if (self.isInStateTrue()) return
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.' + this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+      if (e.isDefaultPrevented() || !inDom) return
+      var that = this
+
+      var $tip = this.tip()
+
+      var tipId = this.getUID(this.type)
+
+      this.setContent()
+      $tip.attr('id', tipId)
+      this.$element.attr('aria-describedby', tipId)
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+        .data('bs.' + this.type, this)
+
+      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+      this.$element.trigger('inserted.bs.' + this.type)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var orgPlacement = placement
+        var viewportDim = this.getPosition(this.$viewport)
+
+        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
+                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
+                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
+                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+
+      var complete = function () {
+        var prevHoverState = that.hoverState
+        that.$element.trigger('shown.bs.' + that.type)
+        that.hoverState = null
+
+        if (prevHoverState == 'out') that.leave(that)
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        $tip
+          .one('bsTransitionEnd', complete)
+          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+        complete()
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function (offset, placement) {
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  += marginTop
+    offset.left += marginLeft
+
+    // $.fn.offset doesn't round pixel values
+    // so we use setOffset directly with our own function B-0
+    $.offset.setOffset($tip[0], $.extend({
+      using: function (props) {
+        $tip.css({
+          top: Math.round(props.top),
+          left: Math.round(props.left)
+        })
+      }
+    }, offset), 0)
+
+    $tip.addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      offset.top = offset.top + height - actualHeight
+    }
+
+    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
+
+    if (delta.left) offset.left += delta.left
+    else offset.top += delta.top
+
+    var isVertical          = /top|bottom/.test(placement)
+    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
+
+    $tip.offset(offset)
+    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+  }
+
+  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
+    this.arrow()
+      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+      .css(isVertical ? 'top' : 'left', '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function (callback) {
+    var that = this
+    var $tip = $(this.$tip)
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+      that.$element
+        .removeAttr('aria-describedby')
+        .trigger('hidden.bs.' + that.type)
+      callback && callback()
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && $tip.hasClass('fade') ?
+      $tip
+        .one('bsTransitionEnd', complete)
+        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+      complete()
+
+    this.hoverState = null
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function ($element) {
+    $element   = $element || this.$element
+
+    var el     = $element[0]
+    var isBody = el.tagName == 'BODY'
+
+    var elRect    = el.getBoundingClientRect()
+    if (elRect.width == null) {
+      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+    }
+    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()
+    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+    return $.extend({}, elRect, scroll, outerDims, elOffset)
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+  }
+
+  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+    var delta = { top: 0, left: 0 }
+    if (!this.$viewport) return delta
+
+    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+    var viewportDimensions = this.getPosition(this.$viewport)
+
+    if (/right|left/.test(placement)) {
+      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
+      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+      if (topEdgeOffset < viewportDimensions.top) { // top overflow
+        delta.top = viewportDimensions.top - topEdgeOffset
+      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+      }
+    } else {
+      var leftEdgeOffset  = pos.left - viewportPadding
+      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+        delta.left = viewportDimensions.left - leftEdgeOffset
+      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
+        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+      }
+    }
+
+    return delta
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.getUID = function (prefix) {
+    do prefix += ~~(Math.random() * 1000000)
+    while (document.getElementById(prefix))
+    return prefix
+  }
+
+  Tooltip.prototype.tip = function () {
+    if (!this.$tip) {
+      this.$tip = $(this.options.template)
+      if (this.$tip.length != 1) {
+        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
+      }
+    }
+    return this.$tip
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = this
+    if (e) {
+      self = $(e.currentTarget).data('bs.' + this.type)
+      if (!self) {
+        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+        $(e.currentTarget).data('bs.' + this.type, self)
+      }
+    }
+
+    if (e) {
+      self.inState.click = !self.inState.click
+      if (self.isInStateTrue()) self.enter(self)
+      else self.leave(self)
+    } else {
+      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+    }
+  }
+
+  Tooltip.prototype.destroy = function () {
+    var that = this
+    clearTimeout(this.timeout)
+    this.hide(function () {
+      that.$element.off('.' + that.type).removeData('bs.' + that.type)
+      if (that.$tip) {
+        that.$tip.detach()
+      }
+      that.$tip = null
+      that.$arrow = null
+      that.$viewport = null
+    })
+  }
+
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip             = Plugin
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.3.6
+ * http://getbootstrap.com/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.VERSION  = '3.3.6'
+
+  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right',
+    trigger: 'click',
+    content: '',
+    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
+      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
+    ](content)
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+            o.content.call($e[0]) :
+            o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.popover
+
+  $.fn.popover             = Plugin
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.3.6
+ * http://getbootstrap.com/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    this.$body          = $(document.body)
+    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target || '') + ' .nav li > a'
+    this.offsets        = []
+    this.targets        = []
+    this.activeTarget   = null
+    this.scrollHeight   = 0
+
+    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.VERSION  = '3.3.6'
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.getScrollHeight = function () {
+    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var that          = this
+    var offsetMethod  = 'offset'
+    var offsetBase    = 0
+
+    this.offsets      = []
+    this.targets      = []
+    this.scrollHeight = this.getScrollHeight()
+
+    if (!$.isWindow(this.$scrollElement[0])) {
+      offsetMethod = 'position'
+      offsetBase   = this.$scrollElement.scrollTop()
+    }
+
+    this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#./.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && $href.is(':visible')
+          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        that.offsets.push(this[0])
+        that.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.getScrollHeight()
+    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (this.scrollHeight != scrollHeight) {
+      this.refresh()
+    }
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
+    }
+
+    if (activeTarget && scrollTop < offsets[0]) {
+      this.activeTarget = null
+      return this.clear()
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
+        && this.activate(targets[i])
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    this.clear()
+
+    var selector = this.selector +
+      '[data-target="' + target + '"],' +
+      this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length) {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate.bs.scrollspy')
+  }
+
+  ScrollSpy.prototype.clear = function () {
+    $(this.selector)
+      .parentsUntil(this.options.target, '.active')
+      .removeClass('active')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy             = Plugin
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load.bs.scrollspy.data-api', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      Plugin.call($spy, $spy.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.3.6
+ * http://getbootstrap.com/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    // jscs:disable requireDollarBeforejQueryAssignment
+    this.element = $(element)
+    // jscs:enable requireDollarBeforejQueryAssignment
+  }
+
+  Tab.VERSION = '3.3.6'
+
+  Tab.TRANSITION_DURATION = 150
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.data('target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var $previous = $ul.find('.active:last a')
+    var hideEvent = $.Event('hide.bs.tab', {
+      relatedTarget: $this[0]
+    })
+    var showEvent = $.Event('show.bs.tab', {
+      relatedTarget: $previous[0]
+    })
+
+    $previous.trigger(hideEvent)
+    $this.trigger(showEvent)
+
+    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
+
+    var $target = $(selector)
+
+    this.activate($this.closest('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $previous.trigger({
+        type: 'hidden.bs.tab',
+        relatedTarget: $this[0]
+      })
+      $this.trigger({
+        type: 'shown.bs.tab',
+        relatedTarget: $previous[0]
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+          .removeClass('active')
+        .end()
+        .find('[data-toggle="tab"]')
+          .attr('aria-expanded', false)
+
+      element
+        .addClass('active')
+        .find('[data-toggle="tab"]')
+          .attr('aria-expanded', true)
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu').length) {
+        element
+          .closest('li.dropdown')
+            .addClass('active')
+          .end()
+          .find('[data-toggle="tab"]')
+            .attr('aria-expanded', true)
+      }
+
+      callback && callback()
+    }
+
+    $active.length && transition ?
+      $active
+        .one('bsTransitionEnd', next)
+        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tab
+
+  $.fn.tab             = Plugin
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  var clickHandler = function (e) {
+    e.preventDefault()
+    Plugin.call($(this), 'show')
+  }
+
+  $(document)
+    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.3.6
+ * http://getbootstrap.com/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+
+    this.$target = $(this.options.target)
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element     = $(element)
+    this.affixed      = null
+    this.unpin        = null
+    this.pinnedOffset = null
+
+    this.checkPosition()
+  }
+
+  Affix.VERSION  = '3.3.6'
+
+  Affix.RESET    = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0,
+    target: window
+  }
+
+  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+    var scrollTop    = this.$target.scrollTop()
+    var position     = this.$element.offset()
+    var targetHeight = this.$target.height()
+
+    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+    if (this.affixed == 'bottom') {
+      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+    }
+
+    var initializing   = this.affixed == null
+    var colliderTop    = initializing ? scrollTop : position.top
+    var colliderHeight = initializing ? targetHeight : height
+
+    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
+    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+    return false
+  }
+
+  Affix.prototype.getPinnedOffset = function () {
+    if (this.pinnedOffset) return this.pinnedOffset
+    this.$element.removeClass(Affix.RESET).addClass('affix')
+    var scrollTop = this.$target.scrollTop()
+    var position  = this.$element.offset()
+    return (this.pinnedOffset = position.top - scrollTop)
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var height       = this.$element.height()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+    var scrollHeight = Math.max($(document).height(), $(document.body).height())
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
+
+    if (this.affixed != affix) {
+      if (this.unpin != null) this.$element.css('top', '')
+
+      var affixType = 'affix' + (affix ? '-' + affix : '')
+      var e         = $.Event(affixType + '.bs.affix')
+
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+
+      this.affixed = affix
+      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+      this.$element
+        .removeClass(Affix.RESET)
+        .addClass(affixType)
+        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+    }
+
+    if (affix == 'bottom') {
+      this.$element.offset({
+        top: scrollHeight - height - offsetBottom
+      })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.affix
+
+  $.fn.affix             = Plugin
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
+
+      Plugin.call($spy, data)
+    })
+  })
+
+}(jQuery);
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/bootstrap.min.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/bootstrap.min.js
index 848258d..c4a9241 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/bootstrap.min.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/bootstrap.min.js
@@ -1,6 +1,7 @@
 /*!
-* Bootstrap.js by @fat & @mdo
-* Copyright 2013 Twitter, Inc.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
-!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery);
\ No newline at end of file
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),
+d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/customrecipe.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/customrecipe.js
index 1c0ef9e..9ea9602 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/customrecipe.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/customrecipe.js
@@ -158,7 +158,7 @@
           msg += " <strong>" + dep.name + "</strong>";
 
           /* Add any cells currently in view to the list of cells which get
-           * an inline notification inside them and which change add/rm state
+           * an list-inline notification inside them and which change add/rm state
            */
           depBtnCell = $("#package-btn-cell-" + dep.pk);
           btnCell = btnCell.add(depBtnCell);
@@ -208,7 +208,7 @@
           }
 
           /* Add any cells currently in view to the list of cells which get
-           * an inline notification inside them and which change add/rm state
+           * an list-inline notification inside them and which change add/rm state
            */
           depBtnCell = $("#package-btn-cell-" + dep.pk);
           btnCell = btnCell.add(depBtnCell);
@@ -281,4 +281,36 @@
         window.location.replace(libtoaster.ctx.projectBuildsUrl);
     });
   });
+
+  $("#delete-custom-recipe-confirmed").click(function(e){
+    e.preventDefault();
+    libtoaster.disableAjaxLoadingTimer();
+    $(this).find('[data-role="submit-state"]').hide();
+    $(this).find('[data-role="loading-state"]').show();
+    $(this).attr("disabled", "disabled");
+
+    $.ajax({
+        type: 'DELETE',
+        url: ctx.recipe.xhrCustomRecipeUrl,
+        headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+        success: function (data) {
+          if (data.error !== "ok") {
+            console.warn(data.error);
+          } else {
+            var msg = $('<span>You have deleted <strong>1</strong> custom image: <strong id="deleted-custom-image-name"></strong></span>');
+            msg.find("#deleted-custom-image-name").text(ctx.recipe.name);
+
+            libtoaster.setNotification("custom-image-recipe-deleted",
+                                       msg.html());
+
+            window.location.replace(data.gotoUrl);
+          }
+        },
+        error: function (data) {
+          console.warn(data);
+        }
+    });
+  });
+
+
 }
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js
index 5a59799..30dc282 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/importlayer.js
@@ -10,45 +10,31 @@
   var layerDepInput = $("#layer-dependency");
   var layerNameCtrl = $("#layer-name-ctrl");
   var duplicatedLayerName = $("#duplicated-layer-name-hint");
+  var localDirPath = $("#local-dir-path");
 
   var layerDeps = {};
   var layerDepsDeps = {};
   var currentLayerDepSelection;
   var validLayerName = /^(\w|-)+$/;
 
-  libtoaster.makeTypeahead(layerDepInput, libtoaster.ctx.layersTypeAheadUrl, { include_added: "true" }, function(item){
+  libtoaster.makeTypeahead(layerDepInput,
+                           libtoaster.ctx.layersTypeAheadUrl,
+                           { include_added: "true" }, function(item){
     currentLayerDepSelection = item;
+    layerDepBtn.removeAttr("disabled");
   });
 
-  // choices available in the typeahead
-  var layerDepsChoices = {};
-
-  // when the typeahead choices change, store an array of the available layer
-  // choices locally, to use for enabling/disabling the "Add layer" button
-  layerDepInput.on("typeahead-choices-change", function (event, data) {
-    layerDepsChoices = {};
-
-    if (data.choices) {
-      data.choices.forEach(function (item) {
-        layerDepsChoices[item.name] = item;
-      });
-    }
+  layerDepInput.on("typeahead:select", function(event, data){
+    currentLayerDepSelection = data;
   });
 
+  // Disable local dir repo when page is loaded.
+  $('#local-dir').hide();
+
   // disable the "Add layer" button when the layer input typeahead is empty
   // or not in the typeahead choices
-  layerDepInput.on("input change", function () {
-    // get the choices from the typeahead
-    var choice = layerDepsChoices[$(this).val()];
-
-    if (choice) {
-      layerDepBtn.removeAttr("disabled");
-      currentLayerDepSelection = choice;
-    }
-    else {
-      layerDepBtn.attr("disabled", "disabled");
-      currentLayerDepSelection = undefined;
-    }
+  layerDepInput.on("input change", function(){
+    layerDepBtn.attr("disabled","disabled");
   });
 
   /* We automatically add "openembedded-core" layer for convenience as a
@@ -70,7 +56,7 @@
     layerDeps[currentLayerDepSelection.id] = currentLayerDepSelection;
 
     /* Make a list item for the new layer dependency */
-    var newLayerDep = $("<li><a></a><span class=\"icon-trash\" data-toggle=\"tooltip\" title=\"Delete\"></span></li>");
+    var newLayerDep = $("<li><a></a><span class=\"glyphicon glyphicon-trash\" data-toggle=\"tooltip\" title=\"Remove\"></span></li>");
 
     newLayerDep.data('layer-id', currentLayerDepSelection.id);
     newLayerDep.children("span").tooltip();
@@ -91,7 +77,8 @@
 
     $("#layer-deps-list").append(newLayerDep);
 
-    libtoaster.getLayerDepsForProject(currentLayerDepSelection.layerdetailurl, function (data){
+    libtoaster.getLayerDepsForProject(currentLayerDepSelection.layerdetailurl,
+                                      function (data){
         /* These are the dependencies of the layer added as a dependency */
         if (data.list.length > 0) {
           currentLayerDepSelection.url = currentLayerDepSelection.layerdetailurl;
@@ -105,7 +92,8 @@
       }, null);
   });
 
-  importAndAddBtn.click(function(){
+  importAndAddBtn.click(function(e){
+    e.preventDefault();
     /* This is a list of the names from layerDeps for the layer deps
      * modal dialog body
      */
@@ -145,7 +133,9 @@
       var body = "<strong>"+layer.name+"</strong>'s dependencies ("+
         depNames.join(", ")+"</span>) require some layers that are not added to your project. Select the ones you want to add:</p>";
 
-      showLayerDepsModal(layer, depDepsArray, title, body, false, function(layerObsList){
+      showLayerDepsModal(layer,
+                         depDepsArray,
+                         title, body, false, function(layerObsList){
         /* Add the accepted layer dependencies' ids to the allDeps array */
         for (var key in layerObsList){
           allDeps.push(layerObsList[key].id);
@@ -167,8 +157,16 @@
         dir_path: $("#layer-subdir").val(),
         project_id: libtoaster.ctx.projectId,
         layer_deps: layerDepsCsv,
+        local_source_dir: $('#local-dir-path').val(),
       };
 
+      if ($('input[name=repo]:checked').val() == "git") {
+        layerData.local_source_dir = "";
+      } else {
+        layerData.vcs_url = "";
+        layerData.git_ref = "";
+      }
+
       $.ajax({
           type: "POST",
           url: ctx.xhrImportLayerUrl,
@@ -178,9 +176,8 @@
             if (data.error != "ok") {
               console.log(data.error);
             } else {
-              /* Success layer import now go to the project page */
-              $.cookie('layer-imported-alert', JSON.stringify(data), { path: '/'});
-              window.location.replace(libtoaster.ctx.projectPageUrl+'?notify=layer-imported');
+              createImportedNotification(data);
+              window.location.replace(libtoaster.ctx.projectPageUrl);
             }
           },
           error: function (data) {
@@ -191,6 +188,30 @@
     }
   });
 
+  /* Layer imported notification */
+  function createImportedNotification(imported){
+    var message = "Layer imported";
+
+    if (imported.deps_added.length === 0) {
+      message = "You have imported <strong><a class=\"alert-link\" href=\""+imported.imported_layer.layerdetailurl+"\">"+imported.imported_layer.name+"</a></strong> and added it to your project.";
+    } else {
+
+      var links = "<a href=\""+imported.imported_layer.layerdetailurl+"\">"+imported.imported_layer.name+"</a>, ";
+
+      imported.deps_added.map (function(item, index){
+        links +='<a href="'+item.layerdetailurl+'">'+item.name+'</a>';
+        /*If we're at the last element we don't want the trailing comma */
+        if (imported.deps_added[index+1] !== undefined)
+          links += ', ';
+      });
+
+      /* Length + 1 here to do deps + the imported layer */
+      message = 'You have imported <strong><a href="'+imported.imported_layer.layerdetailurl+'">'+imported.imported_layer.name+'</a></strong> and added <strong>'+(imported.deps_added.length+1)+'</strong> layers to your project: <strong>'+links+'</strong>';
+    }
+
+    libtoaster.setNotification("layer-imported", message);
+  }
+
   function enable_import_btn(enabled) {
     var importAndAddHint = $("#import-and-add-hint");
 
@@ -207,25 +228,48 @@
   function check_form() {
     var valid = false;
     var inputs = $("input:required");
+    var inputStr = inputs.val().split("");
 
-    for (var i=0; i<inputs.length; i++){
-      if (!(valid = inputs[i].value)){
+    for (var i=0; i<inputs.val().length; i++){
+      if (!(valid = inputStr[i])){
         enable_import_btn(false);
         break;
       }
     }
 
-    if (valid)
-      enable_import_btn(true);
+    if (valid) {
+      if ($("#local-dir-radio").prop("checked") &&
+          localDirPath.val().length > 0) {
+        enable_import_btn(true);
+      }
+
+      if ($("#git-repo-radio").prop("checked") &&
+          vcsURLInput.val().length > 0 && gitRefInput.val().length > 0) {
+        enable_import_btn(true);
+      }
+    }
+
+    if (inputs.val().length == 0)
+      enable_import_btn(false);
   }
 
   function layerExistsError(layer){
     var dupLayerInfo = $("#duplicate-layer-info");
-    dupLayerInfo.find(".dup-layer-name").text(layer.name);
-    dupLayerInfo.find(".dup-layer-link").attr("href", layer.layerdetailurl);
-    dupLayerInfo.find("#dup-layer-vcs-url").text(layer.vcs_url);
-    dupLayerInfo.find("#dup-layer-revision").text(layer.vcs_reference);
 
+    if (layer.local_source_dir) {
+      $("#git-layer-dup").hide();
+      $("#local-layer-dup").fadeIn();
+      dupLayerInfo.find(".dup-layer-name").text(layer.name);
+      dupLayerInfo.find(".dup-layer-link").attr("href", layer.layerdetailurl);
+      dupLayerInfo.find("#dup-local-source-dir-name").text(layer.local_source_dir);
+    } else {
+      $("#git-layer-dup").fadeIn();
+      $("#local-layer-dup").hide();
+      dupLayerInfo.find(".dup-layer-name").text(layer.name);
+      dupLayerInfo.find(".dup-layer-link").attr("href", layer.layerdetailurl);
+      dupLayerInfo.find("#dup-layer-vcs-url").text(layer.vcs_url);
+      dupLayerInfo.find("#dup-layer-revision").text(layer.vcs_reference);
+    }
     $(".fields-apart-from-layer-name").fadeOut(function(){
 
       dupLayerInfo.fadeIn();
@@ -233,13 +277,13 @@
   }
 
   layerNameInput.on('blur', function() {
-      if (!$(this).val()){
-        return;
-      }
-      var name = $(this).val();
+    if (!$(this).val()){
+      return;
+    }
+    var name = $(this).val();
 
-      /* Check if the layer name exists */
-      $.getJSON(libtoaster.ctx.layersTypeAheadUrl,
+    /* Check if the layer name exists */
+    $.getJSON(libtoaster.ctx.layersTypeAheadUrl,
         { include_added: "true" , search: name, format: "json" },
         function(layer) {
           if (layer.results.length > 0) {
@@ -262,7 +306,7 @@
 
   layerNameInput.on('input', function() {
     if ($(this).val() && !validLayerName.test($(this).val())){
-      layerNameCtrl.addClass("error")
+      layerNameCtrl.addClass("has-error")
       $("#invalid-layer-name-hint").show();
       enable_import_btn(false);
       return;
@@ -270,16 +314,19 @@
 
     if ($("#duplicate-layer-info").css("display") != "None"){
       $("#duplicate-layer-info").fadeOut(function(){
-        $(".fields-apart-from-layer-name").show();
-      });
+      $(".fields-apart-from-layer-name").show();
+      radioDisplay();
+    });
 
-    }
+  }
+
+    radioDisplay();
 
     /* Don't remove the error class if we're displaying the error for another
      * reason.
      */
     if (!duplicatedLayerName.is(":visible"))
-      layerNameCtrl.removeClass("error")
+      layerNameCtrl.removeClass("has-error")
 
     $("#invalid-layer-name-hint").hide();
     check_form();
@@ -300,4 +347,72 @@
     }
   });
 
+  function radioDisplay() {
+    if ($('input[name=repo]:checked').val() == "local") {
+      $('#git-repo').hide();
+      $('#import-git-layer-and-add-hint').hide();
+      $('#local-dir').fadeIn();
+      $('#import-local-dir-and-add-hint').fadeIn();
+    } else {
+      $('#local-dir').hide();
+      $('#import-local-dir-and-add-hint').hide();
+      $('#git-repo').fadeIn();
+      $('#import-git-layer-and-add-hint').fadeIn();
+    }
+  }
+
+  $('input:radio[name="repo"]').change(function() {
+    radioDisplay();
+    if ($("#local-dir-radio").prop("checked")) {
+      if (localDirPath.val().length > 0) {
+        enable_import_btn(true);
+      } else {
+        enable_import_btn(false);
+      }
+    }
+    if ($("#git-repo-radio").prop("checked")) {
+      if (vcsURLInput.val().length > 0 && gitRefInput.val().length > 0) {
+        enable_import_btn(true);
+      } else {
+        enable_import_btn(false);
+      }
+    }
+  });
+
+  localDirPath.on('input', function(){
+    if ($(this).val().trim().length == 0) {
+      $('#import-and-add-btn').attr("disabled","disabled");
+      $('#local-dir').addClass('has-error');
+      $('#hintError-dir-abs-path').show();
+      $('#hintError-dir-path-starts-with-slash').show();
+    } else {
+      var input = $(this);
+      var reBeginWithSlash = /^\//;
+      var reCheckVariable = /^\$/;
+      var re = /([ <>\\|":\.%\?\*]+)/;
+
+      var invalidDir = re.test(input.val());
+      var invalidSlash = reBeginWithSlash.test(input.val());
+      var invalidVar = reCheckVariable.test(input.val());
+
+      if (!invalidSlash && !invalidVar) {
+        $('#local-dir').addClass('has-error');
+        $('#import-and-add-btn').attr("disabled","disabled");
+        $('#hintError-dir-abs-path').show();
+        $('#hintError-dir-path-starts-with-slash').show();
+      } else if (invalidDir) {
+        $('#local-dir').addClass('has-error');
+        $('#import-and-add-btn').attr("disabled","disabled");
+        $('#hintError-dir-path').show();
+      } else {
+        $('#local-dir').removeClass('has-error');
+        if (layerNameInput.val().length > 0) {
+          $('#import-and-add-btn').removeAttr("disabled");
+        }
+        $('#hintError-dir-abs-path').hide();
+        $('#hintError-dir-path-starts-with-slash').hide();
+        $('#hintError-dir-path').hide();
+      }
+    }
+  });
 }
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/jsrender.min.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/jsrender.min.js
new file mode 100644
index 0000000..87cac4e
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/jsrender.min.js
@@ -0,0 +1,4 @@
+/*! JsRender v0.9.78 (Beta): http://jsviews.com/#jsrender */
+/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */
+!function(e,t){var n=t.jQuery;"object"==typeof exports?module.exports=n?e(t,n):function(n){if(n&&!n.fn)throw"Provide jQuery or null";return e(t,n)}:"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t,!1)}(function(e,t){"use strict";function n(e,t){return function(){var n,r=this,i=r.base;return r.base=e,n=t.apply(r,arguments),r.base=i,n}}function r(e,t){return te(t)&&(t=n(e?e._d?e:n(s,e):s,t),t._d=1),t}function i(e,t){for(var n in t.props)Re.test(n)&&(e[n]=r(e[n],t.props[n]))}function o(e){return e}function s(){return""}function a(e){try{throw console.log("JsRender dbg breakpoint: "+e),"dbg breakpoint"}catch(t){}return this.base?this.baseApply(arguments):e}function d(e){this.name=(t.link?"JsViews":"JsRender")+" Error",this.message=e||this.name}function u(e,t){for(var n in t)e[n]=t[n];return e}function l(e,t,n){return e?(de.delimiters=[e,t,ve=n?n.charAt(0):ve],pe=e.charAt(0),ce=e.charAt(1),fe=t.charAt(0),ge=t.charAt(1),e="\\"+pe+"(\\"+ve+")?\\"+ce,t="\\"+fe+"\\"+ge,G="(?:(\\w+(?=[\\/\\s\\"+fe+"]))|(\\w+)?(:)|(>)|(\\*))\\s*((?:[^\\"+fe+"]|\\"+fe+"(?!\\"+ge+"))*?)",ae.rTag="(?:"+G+")",G=new RegExp("(?:"+e+G+"(\\/)?|\\"+pe+"(\\"+ve+")?\\"+ce+"(?:(?:\\/(\\w+))\\s*|!--[\\s\\S]*?--))"+t,"g"),W=new RegExp("<.*>|([^\\\\]|^)[{}]|"+e+".*"+t),le):de.delimiters}function p(e,t){t||e===!0||(t=e,e=void 0);var n,r,i,o,s=this,a=!t||"root"===t;if(e){if(o=t&&s.type===t&&s,!o)if(n=s.views,s._.useKey){for(r in n)if(o=t?n[r].get(e,t):n[r])break}else for(r=0,i=n.length;!o&&i>r;r++)o=t?n[r].get(e,t):n[r]}else if(a)for(;s.parent;)o=s,s=s.parent;else for(;s&&!o;)o=s.type===t?s:void 0,s=s.parent;return o}function c(){var e=this.get("item");return e?e.index:void 0}function f(){return this.index}function g(t){var n,r=this,i=r.linkCtx,o=(r.ctx||{})[t];return void 0===o&&i&&i.ctx&&(o=i.ctx[t]),void 0===o&&(o=oe[t]),o&&te(o)&&!o._wrp&&(n=function(){return o.apply(this&&this!==e?this:r,arguments)},n._wrp=r,u(n,o)),n||o}function v(e){return e&&(e.fn?e:this.getRsc("templates",e)||re(e))}function h(e,t,n,r){var o,s,a="number"==typeof n&&t.tmpl.bnds[n-1],d=t.linkCtx;return void 0!==r?n=r={props:{},args:[r]}:a&&(n=a(t.data,t,ae)),s=n.args[0],(e||a)&&(o=d&&d.tag,o||(o=u(new ae._tg,{_:{inline:!d,bnd:a,unlinked:!0},tagName:":",cvt:e,flow:!0,tagCtx:n}),d&&(d.tag=o,o.linkCtx=d),n.ctx=L(n.ctx,(d?d.view:t).ctx)),o._er=r&&s,i(o,n),n.view=t,o.ctx=n.ctx||o.ctx||{},n.ctx=void 0,s=o.cvtArgs("true"!==e&&e)[0],s=a&&t._.onRender?t._.onRender(s,t,o):s),void 0!=s?s:""}function m(e){var t=this,n=t.tagCtx,r=n.view,i=n.args;return e=e||t.convert,e=e&&(""+e===e?r.getRsc("converters",e)||S("Unknown converter: '"+e+"'"):e),i=i.length||n.index?e?i.slice():i:[r.data],e&&(e.depends&&(t.depends=ae.getDeps(t.depends,t,e.depends,e)),i[0]=e.apply(t,i)),i}function w(e,t){for(var n,r,i=this;void 0===n&&i;)r=i.tmpl&&i.tmpl[e],n=r&&r[t],i=i.parent;return n||Y[e][t]}function x(e,t,n,r,o,s){t=t||X;var a,d,u,l,p,c,f,g,v,h,m,w,x,b,_,y,k,j,C,A="",T=t.linkCtx||0,V=t.ctx,R=n||t.tmpl,M="number"==typeof r&&t.tmpl.bnds[r-1];for("tag"===e._is?(a=e,e=a.tagName,r=a.tagCtxs,u=a.template):(d=t.getRsc("tags",e)||S("Unknown tag: {{"+e+"}} "),u=d.template),void 0!==s?(A+=s,r=s=[{props:{},args:[]}]):M&&(r=M(t.data,t,ae)),g=r.length,f=0;g>f;f++)h=r[f],(!T||!T.tag||f&&!T.tag._.inline||a._er)&&((w=R.tmpls&&h.tmpl)&&(w=h.content=R.tmpls[w-1]),h.index=f,h.tmpl=w,h.render=N,h.view=t,h.ctx=L(h.ctx,V)),(n=h.props.tmpl)&&(h.tmpl=t.getTmpl(n)),a||(a=new d._ctr,x=!!a.init,a.parent=c=V&&V.tag,a.tagCtxs=r,C=a.dataMap,T&&(a._.inline=!1,T.tag=a,a.linkCtx=T),(a._.bnd=M||T.fn)?a._.arrVws={}:a.dataBoundOnly&&S("{^{"+e+"}} tag must be data-bound")),r=a.tagCtxs,C=a.dataMap,h.tag=a,C&&r&&(h.map=r[f].map),a.flow||(m=h.ctx=h.ctx||{},l=a.parents=m.parentTags=V&&L(m.parentTags,V.parentTags)||{},c&&(l[c.tagName]=c),l[a.tagName]=m.tag=a);if(!(a._er=s)){for(i(a,r[0]),a.rendering={},f=0;g>f;f++)h=a.tagCtx=r[f],k=h.props,y=a.cvtArgs(),(b=k.dataMap||C)&&(y.length||k.dataMap)&&(_=h.map,_&&_.src===y[0]&&!o||(_&&_.src&&_.unmap(),_=h.map=b.map(y[0],k,void 0,!a._.bnd)),y=[_.tgt]),a.ctx=h.ctx,f||(x&&(j=a.template,a.init(h,T,a.ctx),x=void 0),T&&(T.attr=a.attr=T.attr||a.attr),p=a.attr,a._.noVws=p&&p!==Ee),v=void 0,a.render&&(v=a.render.apply(a,y)),y.length||(y=[t]),void 0===v&&(v=h.render(y[0],!0)||(o?void 0:"")),A=A?A+(v||""):v;a.rendering=void 0}return a.tagCtx=r[0],a.ctx=a.tagCtx.ctx,a._.noVws&&a._.inline&&(A="text"===p?ie.html(A):""),M&&t._.onRender?t._.onRender(A,t,a):A}function b(e,t,n,r,i,o,s,a){var d,u,l,p=this,f="array"===t;p.content=a,p.views=f?[]:{},p.parent=n,p.type=t||"top",p.data=r,p.tmpl=i,l=p._={key:0,useKey:f?0:1,id:""+$e++,onRender:s,bnds:{}},p.linked=!!s,n?(d=n.views,u=n._,u.useKey?(d[l.key="_"+u.useKey++]=p,p.index=Ue,p.getIndex=c):d.length===(l.key=p.index=o)?d.push(p):d.splice(o,0,p),p.ctx=e||n.ctx):p.ctx=e}function _(e){var t,n,r,i,o,s,a;for(t in Oe)if(o=Oe[t],(s=o.compile)&&(n=e[t+"s"]))for(r in n)i=n[r]=s(r,n[r],e,0),i._is=t,i&&(a=ae.onStore[t])&&a(r,i,s)}function y(e,t,n){function i(){var t=this;t._={inline:!0,unlinked:!0},t.tagName=e}var o,s,a,d=new ae._tg;if(te(t)?t={depends:t.depends,render:t}:""+t===t&&(t={template:t}),s=t.baseTag){t.flow=!!t.flow,t.baseTag=s=""+s===s?n&&n.tags[s]||se[s]:s,d=u(d,s);for(a in t)d[a]=r(s[a],t[a])}else d=u(d,t);return void 0!==(o=d.template)&&(d.template=""+o===o?re[o]||re(o):o),d.init!==!1&&((i.prototype=d).constructor=d._ctr=i),n&&(d._parentTmpl=n),d}function k(e){return this.base.apply(this,e)}function j(e,n,r,i){function o(n){var o,a;if(""+n===n||n.nodeType>0&&(s=n)){if(!s)if(/^\.\/[^\\:*?"<>]*$/.test(n))(a=re[e=e||n])?n=a:s=document.getElementById(n);else if(t.fn&&!W.test(n))try{s=t(document).find(n)[0]}catch(d){}s&&(i?n=s.innerHTML:(o=s.getAttribute(Se),o?o!==Ie?(n=re[o],delete re[o]):t.fn&&(n=t.data(s)[Ie]):(e=e||(t.fn?Ie:n),n=j(e,s.innerHTML,r,i)),n.tmplName=e=e||o,e!==Ie&&(re[e]=n),s.setAttribute(Se,e),t.fn&&t.data(s,Ie,n))),s=void 0}else n.fn||(n=void 0);return n}var s,a,d=n=n||"";return 0===i&&(i=void 0,d=o(d)),i=i||(n.markup?n:{}),i.tmplName=e,r&&(i._parentTmpl=r),!d&&n.markup&&(d=o(n.markup))&&d.fn&&(d=d.markup),void 0!==d?(d.fn||n.fn?d.fn&&(a=d):(n=V(d,i),U(d.replace(ke,"\\$&"),n)),a||(_(i),a=u(function(){return n.render.apply(n,arguments)},n)),e&&!r&&e!==Ie&&(qe[e]=a),a):void 0}function C(e,n){return t.isFunction(e)?e.call(n):e}function A(e){var t,n=[],r=e.length;for(t=0;r>t;t++)n.push(e[t].unmap());return n}function T(e,n){function r(e){l.apply(this,e)}function i(){return new r(arguments)}function o(e,t){var n,r,i,o,s,a=c.length;for(n=0;a>n;n++)o=c[n],r=void 0,o+""!==o&&(r=o,o=r.getter),void 0===(s=e[o])&&r&&void 0!==(i=r.defaultVal)&&(s=C(i,e)),t(s,r&&p[r.type],o)}function s(n){n=n+""===n?JSON.parse(n):n;var r,i,s,u=n,l=[];if(t.isArray(n)){for(n=n||[],i=n.length,r=0;i>r;r++)l.push(this.map(n[r]));return l._is=e,l.unmap=d,l.merge=a,l}if(n){o(n,function(e,t){t&&(e=t.map(e)),l.push(e)}),u=this.apply(this,l);for(s in n)s===ee||b[s]||(u[s]=n[s])}return u}function a(e){e=e+""===e?JSON.parse(e):e;var n,r,s,a,d,u,l,p,c,f,v=this;if(t.isArray(v)){for(p={},f=[],s=e.length,a=v.length,n=0;s>n;n++){for(c=e[n],l=!1,r=0;a>r&&!l;r++)p[r]||(u=v[r],g&&(p[r]=l=g+""===g?c[g]&&(b[g]?u[g]():u[g])===c[g]:g(u,c)));l?(u.merge(c),f.push(u)):f.push(i.map(c))}return void(x?x(v).refresh(f,!0):v.splice.apply(v,[0,v.length].concat(f)))}o(e,function(e,t,n){t?v[n]().merge(e):v[n](e)});for(d in e)d===ee||b[d]||(v[d]=e[d])}function d(){var e,n,r,i,o,s,a=this;if(t.isArray(a))return A(a);for(e={},i=c.length,r=0;i>r;r++)n=c[r],o=void 0,n+""!==n&&(o=n,n=o.getter),s=a[n](),e[n]=o&&s&&p[o.type]?t.isArray(s)?A(s):s.unmap():s;for(n in a)"_is"===n||b[n]||n===ee||"_"===n.charAt(0)&&b[n.slice(1)]||t.isFunction(a[n])||(e[n]=a[n]);return e}var u,l,p=this,c=n.getters,f=n.extend,g=n.id,v=t.extend({_is:e||"unnamed",unmap:d,merge:a},f),h="",m="",w=c?c.length:0,x=t.observable,b={};for(r.prototype=v,u=0;w>u;u++)!function(e){e=e.getter||e,b[e]=u+1;var t="_"+e;h+=(h?",":"")+e,m+="this."+t+" = "+e+";\n",v[e]=v[e]||function(n){return arguments.length?void(x?x(this).setProperty(e,n):this[t]=n):this[t]},x&&(v[e].set=v[e].set||function(e){this[t]=e})}(c[u]);return l=new Function(h,m.slice(0,-1)),l.prototype=v,v.constructor=l,i.map=s,i.getters=c,i.extend=f,i.id=g,i}function V(e,n){var r,i=ue._wm||{},o=u({tmpls:[],links:{},bnds:[],_is:"template",render:N},n);return o.markup=e,n.htmlTag||(r=Ae.exec(e),o.htmlTag=r?r[1].toLowerCase():""),r=i[o.htmlTag],r&&r!==i.div&&(o.markup=t.trim(o.markup)),o}function R(e,t){function n(i,o,s){var a,d,u,l;if(i&&typeof i===Fe&&!i.nodeType&&!i.markup&&!i.getTgt&&!("viewModel"===e&&i.getters||i.extend)){for(u in i)n(u,i[u],o);return o||Y}return void 0===o&&(o=i,i=void 0),i&&""+i!==i&&(s=o,o=i,i=void 0),l=s?"viewModel"===e?s:s[r]=s[r]||{}:n,d=t.compile,null===o?i&&delete l[i]:(o=d?d.call(l,i,o,s,0):o,i&&(l[i]=o)),d&&o&&(o._is=e),o&&(a=ae.onStore[e])&&a(i,o,d),o}var r=e+"s";Y[r]=n}function M(e){le[e]=function(t){return arguments.length?(de[e]=t,le):de[e]}}function $(e){function t(t,n){this.tgt=e.getTgt(t,n)}return te(e)&&(e={getTgt:e}),e.baseMap&&(e=u(u({},e.baseMap),e)),e.map=function(e,n){return new t(e,n)},e}function N(e,t,n,r,i,o){var s,a,d,u,l,p,c,f,g=r,v="";if(t===!0?(n=t,t=void 0):typeof t!==Fe&&(t=void 0),(d=this.tag)?(l=this,g=g||l.view,u=g.getTmpl(d.template||l.tmpl),arguments.length||(e=g)):u=this,u){if(!g&&e&&"view"===e._is&&(g=e),g&&e===g&&(e=g.data),p=!g,me=me||p,g||((t=t||{}).root=e),!me||ue.useViews||u.useViews||g&&g!==X)v=E(u,e,t,n,g,i,o,d);else{if(g?(c=g.data,f=g.index,g.index=Ue):(g=X,g.data=e,g.ctx=t),ne(e)&&!n)for(s=0,a=e.length;a>s;s++)g.index=s,g.data=e[s],v+=u.fn(e[s],g,ae);else g.data=e,v+=u.fn(e,g,ae);g.data=c,g.index=f}p&&(me=void 0)}return v}function E(e,t,n,r,i,o,s,a){function d(e){_=u({},n),_[x]=e}var l,p,c,f,g,v,h,m,w,x,_,y,k="";if(a&&(w=a.tagName,y=a.tagCtx,n=n?L(n,a.ctx):a.ctx,e===i.content?h=e!==i.ctx._wrp?i.ctx._wrp:void 0:e!==y.content?e===a.template?(h=y.tmpl,n._wrp=y.content):h=y.content||i.content:h=i.content,y.props.link===!1&&(n=n||{},n.link=!1),(x=y.props.itemVar)&&("~"!==x.charAt(0)&&I("Use itemVar='~myItem'"),x=x.slice(1))),i&&(s=s||i._.onRender,n=L(n,i.ctx)),o===!0&&(v=!0,o=0),s&&(n&&n.link===!1||a&&a._.noVws)&&(s=void 0),m=s,s===!0&&(m=void 0,s=i._.onRender),n=e.helpers?L(e.helpers,n):n,_=n,ne(t)&&!r)for(c=v?i:void 0!==o&&i||new b(n,"array",i,t,e,o,s),i&&i._.useKey&&(c._.bnd=!a||a._.bnd&&a),x&&(c.it=x),x=c.it,l=0,p=t.length;p>l;l++)x&&d(t[l]),f=new b(_,"item",c,t[l],e,(o||0)+l,s,h),g=e.fn(t[l],f,ae),k+=c._.onRender?c._.onRender(g,f):g;else x&&d(t),c=v?i:new b(_,w||"data",i,t,e,o,s,h),a&&!a.flow&&(c.tag=a),k+=e.fn(t,c,ae);return m?m(k,c):k}function F(e,t,n){var r=void 0!==n?te(n)?n.call(t.data,e,t):n||"":"{Error: "+e.message+"}";return de.onError&&void 0!==(n=de.onError.call(t.data,e,n&&r,t))&&(r=n),t&&!t.linkCtx?ie.html(r):r}function S(e){throw new ae.Err(e)}function I(e){S("Syntax error\n"+e)}function U(e,t,n,r,i){function o(t){t-=v,t&&m.push(e.substr(v,t).replace(_e,"\\n"))}function s(t,n){t&&(t+="}}",I((n?"{{"+n+"}} block has {{/"+t+" without {{"+t:"Unmatched or missing {{/"+t)+", in template:\n"+e))}function a(a,d,u,c,g,x,b,_,y,k,j,C){(b&&d||y&&!u||_&&":"===_.slice(-1)||k)&&I(a),x&&(g=":",c=Ee),y=y||n&&!i;var A=(d||n)&&[[]],T="",V="",R="",M="",$="",N="",E="",F="",S=!y&&!g;u=u||(_=_||"#data",g),o(C),v=C+a.length,b?f&&m.push(["*","\n"+_.replace(/^:/,"ret+= ").replace(ye,"$1")+";\n"]):u?("else"===u&&(Ce.test(_)&&I('for "{{else if expr}}" use "{{else expr}}"'),A=w[7]&&[[]],w[8]=e.substring(w[8],C),w=h.pop(),m=w[2],S=!0),_&&O(_.replace(_e," "),A,t).replace(je,function(e,t,n,r,i,o,s,a){return r="'"+i+"':",s?(V+=o+",",M+="'"+a+"',"):n?(R+=r+o+",",N+=r+"'"+a+"',"):t?E+=o:("trigger"===i&&(F+=o),T+=r+o+",",$+=r+"'"+a+"',",p=p||Re.test(i)),""}).slice(0,-1),A&&A[0]&&A.pop(),l=[u,c||!!r||p||"",S&&[],J(M||(":"===u?"'#data',":""),$,N),J(V||(":"===u?"data,":""),T,R),E,F,A||0],m.push(l),S&&(h.push(w),w=l,w[8]=v)):j&&(s(j!==w[0]&&"else"!==w[0]&&j,w[0]),w[8]=e.substring(w[8],C),w=h.pop()),s(!w&&j),m=w[2]}var d,u,l,p,c,f=de.allowCode||t&&t.allowCode||le.allowCode===!0,g=[],v=0,h=[],m=g,w=[,,g];if(f&&(t.allowCode=f),n&&(void 0!==r&&(e=e.slice(0,-r.length-2)+ge),e=pe+e+ge),s(h[0]&&h[0][2].pop()[0]),e.replace(G,a),o(e.length),(v=g[g.length-1])&&s(""+v!==v&&+v[8]===v[8]&&v[0]),n){for(u=B(g,e,n),c=[],d=g.length;d--;)c.unshift(g[d][7]);q(u,c)}else u=B(g,t);return u}function q(e,t){var n,r,i=0,o=t.length;for(e.deps=[];o>i;i++){r=t[i];for(n in r)"_jsvto"!==n&&r[n].length&&(e.deps=e.deps.concat(r[n]))}e.paths=r}function J(e,t,n){return[e.slice(0,-1),t.slice(0,-1),n.slice(0,-1)]}function K(e,t){return"\n	"+(t?t+":{":"")+"args:["+e[0]+"]"+(e[1]||!t?",\n	props:{"+e[1]+"}":"")+(e[2]?",\n	ctx:{"+e[2]+"}":"")}function O(e,t,n){function r(r,m,w,x,b,_,y,k,j,C,A,T,V,R,M,$,N,E,F,S){function q(e,n,r,s,a,d,p,c){var f="."===r;if(r&&(b=b.slice(n.length),/^\.?constructor$/.test(c||b)&&I(e),f||(e=(s?'view.hlp("'+s+'")':a?"view":"data")+(c?(d?"."+d:s?"":a?"":"."+r)+(p||""):(c=s?"":a?d||"":r,"")),e+=c?"."+c:"",e=n+("view.data"===e.slice(0,9)?e.slice(5):e)),u)){if(O="linkTo"===i?o=t._jsvto=t._jsvto||[]:l.bd,B=f&&O[O.length-1]){if(B._jsv){for(;B.sb;)B=B.sb;B.bnd&&(b="^"+b.slice(1)),B.sb=b,B.bnd=B.bnd||"^"===b.charAt(0)}}else O.push(b);h[g]=F+(f?1:0)}return e}x=u&&x,x&&!k&&(b=x+b),_=_||"",w=w||m||T,b=b||j,C=C||N||"";var J,K,O,B,L,Q=")";if("["===C&&(C="[j._sq(",Q=")]"),!y||d||a){if(u&&$&&!d&&!a&&(!i||s||o)&&(J=h[g-1],S.length-1>F-(J||0))){if(J=S.slice(J,F+r.length),K!==!0)if(O=o||p[g-1].bd,B=O[O.length-1],B&&B.prm){for(;B.sb&&B.sb.prm;)B=B.sb;L=B.sb={path:B.sb,bnd:B.bnd}}else O.push(L={path:O.pop()});$=ce+":"+J+" onerror=''"+fe,K=f[$],K||(f[$]=!0,f[$]=K=U($,n,!0)),K!==!0&&L&&(L._jsv=K,L.prm=l.bd,L.bnd=L.bnd||L.path&&L.path.indexOf("^")>=0)}return d?(d=!V,d?r:T+'"'):a?(a=!R,a?r:T+'"'):(w?(h[g]=F++,l=p[++g]={bd:[]},w):"")+(E?g?"":(c=S.slice(c,F),(i?(i=s=o=!1,"\b"):"\b,")+c+(c=F+r.length,u&&t.push(l.bd=[]),"\b")):k?(g&&I(e),u&&t.pop(),i=b,s=x,c=F+r.length,x&&(u=l.bd=t[i]=[]),b+":"):b?b.split("^").join(".").replace(xe,q)+(C?(l=p[++g]={bd:[]},v[g]=Q,C):_):_?_:M?(M=v[g]||M,v[g]=!1,l=p[--g],M+(C?(l=p[++g],v[g]=Q,C):"")):A?(v[g]||I(e),","):m?"":(d=V,a=R,'"'))}I(e)}var i,o,s,a,d,u=t&&t[0],l={bd:u},p={0:l},c=0,f=n?n.links:u&&(u.links=u.links||{}),g=0,v={},h={},m=(e+(n?" ":"")).replace(be,r);return!g&&m||I(e)}function B(e,t,n){var r,i,o,s,a,d,u,l,p,c,f,g,v,h,m,w,x,b,_,y,k,j,C,A,T,R,M,$,N,E,F=0,S=ue.useViews||t.useViews||t.tags||t.templates||t.helpers||t.converters,U="",J={},O=e.length;for(""+t===t?(b=n?'data-link="'+t.replace(_e," ").slice(1,-1)+'"':t,t=0):(b=t.tmplName||"unnamed",t.allowCode&&(J.allowCode=!0),t.debug&&(J.debug=!0),f=t.bnds,x=t.tmpls),r=0;O>r;r++)if(i=e[r],""+i===i)U+='\n+"'+i+'"';else if(o=i[0],"*"===o)U+=";\n"+i[1]+"\nret=ret";else{if(s=i[1],k=!n&&i[2],a=K(i[3],"params")+"},"+K(v=i[4]),$=i[5],E=i[6],j=i[8]&&i[8].replace(ye,"$1"),(T="else"===o)?g&&g.push(i[7]):(F=0,f&&(g=i[7])&&(g=[g],F=f.push(1))),S=S||v[1]||v[2]||g||/view.(?!index)/.test(v[0]),(R=":"===o)?s&&(o=s===Ee?">":s+o):(k&&(_=V(j,J),_.tmplName=b+"/"+o,_.useViews=_.useViews||S,B(k,_),S=_.useViews,x.push(_)),T||(y=o,S=S||o&&(!se[o]||!se[o].flow),A=U,U=""),C=e[r+1],C=C&&"else"===C[0]),N=$?";\ntry{\nret+=":"\n+",h="",m="",R&&(g||E||s&&s!==Ee)){if(M=new Function("data,view,j,u"," // "+b+" "+F+" "+o+"\nreturn {"+a+"};"),M._er=$,M._tag=o,n)return M;q(M,g),w='c("'+s+'",view,',c=!0,h=w+F+",",m=")"}if(U+=R?(n?($?"try{\n":"")+"return ":N)+(c?(c=void 0,S=p=!0,w+(g?(f[F-1]=M,F):"{"+a+"}")+")"):">"===o?(u=!0,"h("+v[0]+")"):(l=!0,"((v="+v[0]+")!=null?v:"+(n?"null)":'"")'))):(d=!0,"\n{view:view,tmpl:"+(k?x.length:"0")+","+a+"},"),y&&!C){if(U="["+U.slice(0,-1)+"]",w='t("'+y+'",view,this,',n||g){if(U=new Function("data,view,j,u"," // "+b+" "+F+" "+y+"\nreturn "+U+";"),U._er=$,U._tag=y,g&&q(f[F-1]=U,g),n)return U;h=w+F+",undefined,",m=")"}U=A+N+w+(F||U)+")",g=0,y=0}$&&(S=!0,U+=";\n}catch(e){ret"+(n?"urn ":"+=")+h+"j._err(e,view,"+$+")"+m+";}"+(n?"":"ret=ret"))}U="// "+b+"\nvar v"+(d?",t=j._tag":"")+(p?",c=j._cnvt":"")+(u?",h=j._html":"")+(n?";\n":',ret=""\n')+(J.debug?"debugger;":"")+U+(n?"\n":";\nreturn ret;"),de.debugMode!==!1&&(U="try {\n"+U+"\n}catch(e){\nreturn j._err(e, view);\n}");try{U=new Function("data,view,j,u",U)}catch(L){I("Compiled template code:\n\n"+U+'\n: "'+L.message+'"')}return t&&(t.fn=U,t.useViews=!!S),U}function L(e,t){return e&&e!==t?t?u(u({},t),e):e:t&&u({},t)}function Q(e){return Ne[e]||(Ne[e]="&#"+e.charCodeAt(0)+";")}function H(e){var t,n,r=[];if(typeof e===Fe)for(t in e)n=e[t],t===ee||te(n)||r.push({key:t,prop:n});return r}function P(e,n,r){var i=this.jquery&&(this[0]||S('Unknown template: "'+this.selector+'"')),o=i.getAttribute(Se);return N.call(o?t.data(i)[Ie]:re(i),e,n,r)}function D(e){return void 0!=e?Ve.test(e)&&(""+e).replace(Me,Q)||e:""}var Z=t===!1;t=t&&t.fn?t:e.jQuery;var z,G,W,X,Y,ee,te,ne,re,ie,oe,se,ae,de,ue,le,pe,ce,fe,ge,ve,he,me,we="v0.9.78",xe=/^(!*?)(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g,be=/(\()(?=\s*\()|(?:([([])\s*)?(?:(\^?)(!*?[#~]?[\w$.^]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*:?\/]|(=))\s*|(!*?[#~]?[\w$.^]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*(([)\]])(?=\s*[.^]|\s*$|[^([])|[)\]])([([]?))|(\s+)/g,_e=/[ \t]*(\r\n|\n|\r)/g,ye=/\\(['"])/g,ke=/['"\\]/g,je=/(?:\x08|^)(onerror:)?(?:(~?)(([\w$_\.]+):)?([^\x08]+))\x08(,)?([^\x08]+)/gi,Ce=/^if\s/,Ae=/<(\w+)[>\s]/,Te=/[\x00`><"'&=]/g,Ve=/[\x00`><\"'&=]/,Re=/^on[A-Z]|^convert(Back)?$/,Me=Te,$e=0,Ne={"&":"&amp;","<":"&lt;",">":"&gt;","\x00":"&#0;","'":"&#39;",'"':"&#34;","`":"&#96;","=":"&#61;"},Ee="html",Fe="object",Se="data-jsv-tmpl",Ie="jsvTmpl",Ue="For #index in nested block use #getIndex().",qe={},Je=e.jsrender,Ke=Je&&t&&!t.render,Oe={template:{compile:j},tag:{compile:y},viewModel:{compile:T},helper:{},converter:{}};if(Y={jsviews:we,sub:{View:b,Err:d,tmplFn:U,parse:O,extend:u,extendCtx:L,syntaxErr:I,onStore:{},addSetting:M,settings:{allowCode:!1},advSet:s,_ths:i,_tg:function(){},_cnvt:h,_tag:x,_er:S,_err:F,_html:D,_sq:function(e){return"constructor"===e&&I(""),e}},settings:{delimiters:l,advanced:function(e){return e?(u(ue,e),ae.advSet(),le):ue}},map:$},(d.prototype=new Error).constructor=d,c.depends=function(){return[this.get("item"),"index"]},f.depends="index",b.prototype={get:p,getIndex:f,getRsc:w,getTmpl:v,hlp:g,_is:"view"},ae=Y.sub,le=Y.settings,!(Je||t&&t.render)){for(z in Oe)R(z,Oe[z]);ie=Y.converters,oe=Y.helpers,se=Y.tags,ae._tg.prototype={baseApply:k,cvtArgs:m},X=ae.topView=new b,t?(t.fn.render=P,ee=t.expando,t.observable&&(u(ae,t.views.sub),Y.map=t.views.map)):(t={},Z&&(e.jsrender=t),t.renderFile=t.__express=t.compile=function(){throw"Node.js: use npm jsrender, or jsrender-node.js"},t.isFunction=function(e){return"function"==typeof e},t.isArray=Array.isArray||function(e){return"[object Array]"==={}.toString.call(e)},ae._jq=function(e){e!==t&&(u(e,t),t=e,t.fn.render=P,delete t.jsrender,ee=t.expando)},t.jsrender=we),de=ae.settings,de.allowCode=!1,te=t.isFunction,ne=t.isArray,t.render=qe,t.views=Y,t.templates=re=Y.templates;for(he in de)M(he);(le.debugMode=function(e){return void 0===e?de.debugMode:(de.debugMode=e,de.onError=e+""===e?new Function("","return '"+e+"';"):te(e)?e:void 0,le)})(!1),ue=de.advanced={useViews:!1,_jsv:!1},se({"if":{render:function(e){var t=this,n=t.tagCtx,r=t.rendering.done||!e&&(arguments.length||!n.index)?"":(t.rendering.done=!0,t.selected=n.index,n.render(n.view,!0));return r},flow:!0},"for":{render:function(e){var t,n=!arguments.length,r=this,i=r.tagCtx,o="",s=0;return r.rendering.done||(t=n?i.view.data:e,void 0!==t&&(o+=i.render(t,n),s+=ne(t)?t.length:1),(r.rendering.done=s)&&(r.selected=i.index)),o},flow:!0},props:{baseTag:"for",dataMap:$(H),flow:!0},include:{flow:!0},"*":{render:o,flow:!0},":*":{render:o,flow:!0},dbg:oe.dbg=ie.dbg=a}),ie({html:D,attr:D,url:function(e){return void 0!=e?encodeURI(""+e):null===e?e:""}})}return de=ae.settings,le.delimiters("{{","}}","^"),Ke&&Je.views.sub._jq(t),t||Je},window);
+//# sourceMappingURL=jsrender.min.js.map
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerBtn.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
index 259271d..9f9eda1 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
@@ -55,8 +55,8 @@
     });
   });
 
-  $(".build-recipe-btn").unbind('click');
-  $(".build-recipe-btn").click(function(e){
+  $("td .build-recipe-btn").unbind('click');
+  $("td .build-recipe-btn").click(function(e){
     e.preventDefault();
     var recipe = $(this).data('recipe-name');
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js
index 825f9dc..e962224 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerDepsModal.js
@@ -6,7 +6,12 @@
  * addToProject: Whether to add layers to project on accept
  * successAdd: function to run on success
  */
-function showLayerDepsModal(layer, dependencies, title, body, addToProject, successAdd) {
+function showLayerDepsModal(layer,
+                            dependencies,
+                            title,
+                            body,
+                            addToProject,
+                            successAdd) {
 
   if ($("#dependencies-modal").length === 0) {
     $.get(libtoaster.ctx.htmlUrl + "/layer_deps_modal.html", function(html){
@@ -33,17 +38,20 @@
 
     var deplistHtml = "";
     for (var i = 0; i < dependencies.length; i++) {
-      deplistHtml += "<li><label class=\"checkbox\"><input name=\"dependencies\" value=\"";
+      deplistHtml += "<li><div class=\"checkbox\"><label><input name=\"dependencies\" value=\"";
       deplistHtml += dependencies[i].id;
       deplistHtml +="\" type=\"checkbox\" checked=\"checked\"/>";
       deplistHtml += dependencies[i].name;
-      deplistHtml += "</label></li>";
+      deplistHtml += "</label></div></li>";
     }
     $('#dependencies-list').html(deplistHtml);
 
     $("#dependencies-modal").data("deps", dependencies);
 
-    $('#dependencies-modal').modal('show');
+    /* Clear any alert notifications before showing the modal */
+    $(".alert").fadeOut(function(){
+      $('#dependencies-modal').modal('show');
+    });
 
     /* Discard the old submission function */
     $("#dependencies-modal-form").unbind('submit');
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
index d545406..9ead393 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
@@ -10,25 +10,27 @@
   var targetTab = $("#targets-tab");
   var machineTab = $("#machines-tab");
   var detailsTab = $("#details-tab");
+  var editLayerSource = $("#edit-layer-source");
+  var saveSourceChangesBtn = $("#save-changes-for-switch");
+  var layerGitRefInput = $("#layer-git-ref");
+  var layerSubDirInput = $('#layer-subdir');
+
+  targetTab.on('show.bs.tab', targetsTabShow);
+  detailsTab.on('show.bs.tab', detailsTabShow);
+  machineTab.on('show.bs.tab', machinesTabShow);
 
   /* setup the dependencies typeahead */
-  libtoaster.makeTypeahead(layerDepInput, libtoaster.ctx.layersTypeAheadUrl, { include_added: "true" }, function(item){
+  libtoaster.makeTypeahead(layerDepInput,
+                           libtoaster.ctx.layersTypeAheadUrl,
+                           { include_added: "true" }, function(item){
     currentLayerDepSelection = item;
-
     layerDepBtn.removeAttr("disabled");
   });
 
-  $(window).on('hashchange', function(e){
-    switch(window.location.hash){
-      case '#machines':
-        machineTab.tab('show');
-        break;
-      case '#recipes':
-        targetTab.tab('show');
-        break;
-      default:
-        detailsTab.tab('show');
-        break;
+  /* disable the add layer button if its input field is empty */
+  layerDepInput.on("keyup",function(){
+    if ($(this).val().length === 0) {
+      layerDepBtn.attr("disabled", "disabled");
     }
   });
 
@@ -76,7 +78,7 @@
 
     addRemoveDep(currentLayerDepSelection.id, true, function(){
       /* Make a list item for the new layer dependency */
-      var newLayerDep = $("<li><a></a><span class=\"icon-trash\" data-toggle=\"tooltip\" title=\"Delete\"></span></li>");
+      var newLayerDep = $("<li><a></a><span class=\"glyphicon glyphicon-trash\" data-toggle=\"tooltip\" title=\"Delete\"></span></li>");
 
       newLayerDep.data('layer-id', currentLayerDepSelection.id);
       newLayerDep.children("span").tooltip();
@@ -94,11 +96,11 @@
       /* Clear the current selection */
       layerDepInput.val("");
       currentLayerDepSelection = undefined;
-      layerDepBtn.attr("disabled","disabled");
+      layerDepBtn.attr("disabled", "disabled");
     });
   });
 
-  $(".icon-pencil").click(function (){
+  $(".glyphicon-edit").click(function (){
     var mParent = $(this).parent("dd");
     mParent.prev().css("margin-top", "10px");
     mParent.children("form").slideDown();
@@ -106,8 +108,12 @@
     currentVal.hide();
     /* Set the current value to the input field */
     mParent.find("textarea,input").val(currentVal.text());
+    /* If the input field is empty, disable the submit button */
+    if ( mParent.find("textarea,input").val().length == 0 ) {
+      mParent.find(".change-btn").attr("disabled", "disabled");
+    }
     /* Hides the "Not set" text */
-    mParent.children(".muted").hide();
+    mParent.children(".text-muted").hide();
     /* We're editing so hide the delete icon */
     mParent.children(".delete-current-value").hide();
     mParent.find(".cancel").show();
@@ -128,30 +134,31 @@
       mParent.children(".current-value").show();
       /* Show the "Not set" text if we ended up with no value */
       if (!mParent.children(".current-value").html()){
-        mParent.children(".muted").fadeIn();
+        mParent.children(".text-muted").fadeIn();
         mParent.children(".delete-current-value").hide();
       } else {
         mParent.children(".delete-current-value").show();
       }
 
-      mParent.children(".icon-pencil").show();
-      mParent.prev().css("margin-top", "0px");
+      mParent.children(".glyphicon-edit").show();
+      mParent.prev().css("margin-top", "0");
     });
   });
 
+
   function defaultAddBtnText(){
       var text = " Add the "+ctx.layerVersion.name+" layer to your project";
       addRmLayerBtn.text(text);
-      addRmLayerBtn.prepend("<span class=\"icon-plus\"></span>");
+      addRmLayerBtn.prepend("<span class=\"glyphicon glyphicon-plus\"></span>");
       addRmLayerBtn.removeClass("btn-danger");
   }
 
-  detailsTab.on('show', function(){
+  function detailsTabShow(){
     if (!ctx.layerVersion.inCurrentPrj)
       defaultAddBtnText();
 
-    window.location.hash = "details";
-  });
+    window.location.hash = "information";
+  }
 
   function targetsTabShow(){
     if (!ctx.layerVersion.inCurrentPrj){
@@ -159,7 +166,7 @@
         var text = " Add the "+ctx.layerVersion.name+" layer to your project "+
           "to enable these recipes";
         addRmLayerBtn.text(text);
-        addRmLayerBtn.prepend("<span class=\"icon-plus\"></span>");
+        addRmLayerBtn.prepend("<span class=\"glyphicon glyphicon-plus\"></span>");
       } else {
         defaultAddBtnText();
       }
@@ -177,7 +184,7 @@
       $("#no-recipes-yet").hide();
     }
 
-    targetTab.removeClass("muted");
+    targetTab.removeClass("text-muted");
     if (window.location.hash === "#recipes"){
       /* re run the machinesTabShow to update the text */
       targetsTabShow();
@@ -192,20 +199,19 @@
     else
       $("#no-machines-yet").hide();
 
-    machineTab.removeClass("muted");
+    machineTab.removeClass("text-muted");
     if (window.location.hash === "#machines"){
       /* re run the machinesTabShow to update the text */
       machinesTabShow();
     }
 
     $(".select-machine-btn").click(function(e){
-      if ($(this).attr("disabled") === "disabled")
+      if ($(this).hasClass("disabled"))
         e.preventDefault();
     });
 
   });
 
-  targetTab.on('show', targetsTabShow);
 
   function machinesTabShow(){
     if (!ctx.layerVersion.inCurrentPrj) {
@@ -213,7 +219,7 @@
         var text = " Add the "+ctx.layerVersion.name+" layer to your project " +
           "to enable these machines";
         addRmLayerBtn.text(text);
-        addRmLayerBtn.prepend("<span class=\"icon-plus\"></span>");
+        addRmLayerBtn.prepend("<span class=\"glyphicon glyphicon-plus\"></span>");
       } else {
         defaultAddBtnText();
       }
@@ -222,8 +228,6 @@
     window.location.hash = "machines";
   }
 
-  machineTab.on('show', machinesTabShow);
-
   $(".pagesize").change(function(){
     var search = libtoaster.parseUrlParams();
     search.limit = this.value;
@@ -239,17 +243,17 @@
 
     if (added){
       /* enable and switch all the button states */
-      $(".build-recipe-btn").removeAttr("disabled");
-      $(".select-machine-btn").removeAttr("disabled");
+      $(".build-recipe-btn").removeClass("disabled");
+      $(".select-machine-btn").removeClass("disabled");
       addRmLayerBtn.addClass("btn-danger");
       addRmLayerBtn.data('directive', "remove");
       addRmLayerBtn.text(" Remove the "+ctx.layerVersion.name+" layer from your project");
-      addRmLayerBtn.prepend("<span class=\"icon-trash\"></span>");
+      addRmLayerBtn.prepend("<span class=\"glyphicon glyphicon-trash\"></span>");
 
     } else {
       /* disable and switch all the button states */
-      $(".build-recipe-btn").attr("disabled","disabled");
-      $(".select-machine-btn").attr("disabled", "disabled");
+      $(".build-recipe-btn").addClass("disabled");
+      $(".select-machine-btn").addClass("disabled");
       addRmLayerBtn.removeClass("btn-danger");
       addRmLayerBtn.data('directive', "add");
 
@@ -257,7 +261,7 @@
        * on which tab is currently visible. Unfortunately we can't just call
        * tab('show') as if it's already visible it doesn't run the event.
        */
-      switch ($(".nav-pills .active a").prop('id')){
+      switch ($(".nav-tabs .active a").prop('id')){
         case 'machines-tab':
           machinesTabShow();
           break;
@@ -286,7 +290,7 @@
 
       setLayerInCurrentPrj(add);
 
-      $("#alert-area").show();
+      libtoaster.showChangeNotification(alertMsg);
     });
   });
 
@@ -325,7 +329,7 @@
             text = entryElement.val();
 
             /* Hide the "Not set" text if it's visible */
-            inputArea.find(".muted").hide();
+            inputArea.find(".text-muted").hide();
             inputArea.find(".current-value").text(text);
             /* Same behaviour as cancel in that we hide the form/show current
              * value.
@@ -343,9 +347,9 @@
   /* Disable the change button when we have no data in the input */
   $("dl input, dl textarea").on("input",function() {
     if ($(this).val().length === 0)
-      $(this).parent().children(".change-btn").attr("disabled", "disabled");
+      $(this).parent().next(".change-btn").attr("disabled", "disabled");
     else
-      $(this).parent().children(".change-btn").removeAttr("disabled");
+      $(this).parent().next(".change-btn").removeAttr("disabled");
   });
 
   /* This checks to see if the dt's dd has data in it or if the change data
@@ -355,11 +359,11 @@
     if ($(this).is("dt")) {
       var dd = $(this).next("dd");
       if (!dd.children("form:visible")|| !dd.find(".current-value").html()){
-        if (ctx.layerVersion.sourceId == 3){
+        if (ctx.layerVersion.layer_source == ctx.layerSourceTypes.TYPE_IMPORTED){
         /* There's no current value and the layer is editable
          * so show the "Not set" and hide the delete icon
          */
-        dd.find(".muted").show();
+        dd.find(".text-muted").show();
         dd.find(".delete-current-value").hide();
         } else {
           /* We're not viewing an editable layer so hide the empty dd/dl pair */
@@ -386,10 +390,132 @@
     $(this).parents("form").submit();
   });
 
+  $("#layer-delete-confirmed").click(function(){
 
-  layerDepsList.find(".icon-trash").click(layerDepRemoveClick);
+    $("#delete-layer-modal button[data-dismiss='modal']").hide();
+
+    var message = $('<span>You have deleted <strong>1</strong> layer from your project: <strong id="deleted-layer-name"></strong>');
+    message.find("#deleted-layer-name").text(ctx.layerVersion.name);
+
+    $.ajax({
+        type: "DELETE",
+        url: ctx.xhrUpdateLayerUrl,
+        headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+        success: function(data) {
+          if (data.error != "ok") {
+            console.warn(data.error);
+          } else {
+            libtoaster.setNotification("layer-deleted", message.html());
+            window.location.replace(data.gotoUrl);
+          }
+        },
+        error: function(data) {
+          console.warn("Call failed");
+          console.warn(data);
+        }
+    });
+  });
+
+  layerDepsList.find(".glyphicon-trash").click(layerDepRemoveClick);
   layerDepsList.find("a").tooltip();
-  $(".icon-trash").tooltip();
+  $(".glyphicon-trash").tooltip();
   $(".commit").tooltip();
 
+  editLayerSource.click(function() {
+    /* Kindly bring the git layers imported from layerindex to normal page
+     * and not this new page :(
+     */
+    $(this).hide();
+    saveSourceChangesBtn.attr("disabled", "disabled");
+
+    $("#git-repo-info, #directory-info").hide();
+    $("#edit-layer-source-form").fadeIn();
+    if ($("#layer-dir-path-in-details").val() == "") {
+      //Local dir path is empty...
+      $("#repo").prop("checked", true);
+      $("#layer-git").fadeIn();
+      $("#layer-dir").hide();
+    } else {
+      $("#layer-git").hide();
+      $("#layer-dir").fadeIn();
+    }
+  });
+
+  $('input:radio[name="source-location"]').change(function() {
+    if ($('input[name=source-location]:checked').val() == "repo") {
+      $("#layer-git").fadeIn();
+      $("#layer-dir").hide();
+      if ($("#layer-git-repo-url").val().length === 0 && layerGitRefInput.val().length === 0) {
+        saveSourceChangesBtn.attr("disabled", "disabled");
+      }
+    } else {
+      $("#layer-dir").fadeIn();
+      $("#layer-git").hide();
+    }
+  });
+
+  $("#layer-dir-path-in-details").keyup(function() {
+    saveSourceChangesBtn.removeAttr("disabled");
+  });
+
+  $("#layer-git-repo-url").keyup(function() {
+    if ($("#layer-git-repo-url").val().length > 0 && layerGitRefInput.val().length > 0) {
+      saveSourceChangesBtn.removeAttr("disabled");
+    }
+  });
+
+  layerGitRefInput.keyup(function() {
+    if ($("#layer-git-repo-url").val().length > 0 && layerGitRefInput.val().length > 0) {
+      saveSourceChangesBtn.removeAttr("disabled");
+    }
+  });
+
+
+  layerSubDirInput.keyup(function(){
+    if ($(this).val().length > 0){
+      saveSourceChangesBtn.removeAttr("disabled");
+    }
+  });
+
+  $('#cancel-changes-for-switch').click(function() {
+    $("#edit-layer-source-form").hide();
+    $("#directory-info, #git-repo-info").fadeIn();
+    editLayerSource.show();
+  });
+
+  saveSourceChangesBtn.click(function() {
+
+    var layerData = {
+      vcs_url: $('#layer-git-repo-url').val(),
+      commit: layerGitRefInput.val(),
+      dirpath: layerSubDirInput.val(),
+      local_source_dir: $('#layer-dir-path-in-details').val(),
+    };
+
+    if ($('input[name=source-location]:checked').val() == "repo") {
+      layerData.local_source_dir = "";
+    } else {
+      layerData.vcs_url = "";
+      layerData.git_ref = "";
+    }
+
+    $.ajax({
+        type: "POST",
+        url: ctx.xhrUpdateLayerUrl,
+        data: layerData,
+        headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+        success: function (data) {
+          if (data.error != "ok") {
+            console.warn(data.error);
+          } else {
+            /* success layer property changed */
+            window.location.reload();
+          }
+        },
+        error: function (data) {
+          console.warn("Call failed");
+          console.warn(data);
+        }
+    });
+  });
 }
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/libtoaster.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
index 43930a2..86662b7 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
@@ -3,96 +3,82 @@
  * This object really just helps readability since we can then have
  * a traceable namespace.
  */
-var libtoaster = (function (){
+var libtoaster = (function () {
+  // prevent conflicts with Bootstrap 2's typeahead (required during
+  // transition from v2 to v3)
+  var typeahead = jQuery.fn.typeahead.noConflict();
+  jQuery.fn._typeahead = typeahead;
 
-  /* makeTypeahead parameters
-   * elementSelector: JQuery elementSelector string
-   * xhrUrl: the url to get the JSON from expects JSON in the form:
-   *  { "list": [ { "name": "test", "detail" : "a test thing"  }, .... ] }
+  /* Make a typeahead from an input element
+   *
+   * _makeTypeahead parameters
+   * jQElement: input element as selected by $('selector')
+   * xhrUrl: the url to get the JSON from; this URL should return JSON in the
+   * format:
+   *   { "results": [ { "name": "test", "detail" : "a test thing"  }, ... ] }
    * xhrParams: the data/parameters to pass to the getJSON url e.g.
-   *  { 'type' : 'projects' } the text typed will be passed as 'search'.
-   *  selectedCB: function to call once an item has been selected one
-   *  arg of the item.
+   *   { 'type' : 'projects' }; the text typed will be passed as 'search'.
+   * selectedCB: function to call once an item has been selected; has
+   * signature selectedCB(item), where item is an item in the format shown
+   * in the JSON list above, i.e.
+   *   { "name": "name", "detail": "detail" }.
    */
-  function _makeTypeahead (jQElement, xhrUrl, xhrParams, selectedCB) {
-    if (!xhrUrl || xhrUrl.length === 0)
-      throw("No url to typeahead supplied");
+  function _makeTypeahead(jQElement, xhrUrl, xhrParams, selectedCB) {
+    if (!xhrUrl || xhrUrl.length === 0) {
+      throw("No url supplied for typeahead");
+    }
 
     var xhrReq;
 
-    jQElement.typeahead({
-        // each time the typeahead's choices change, a
-        // "typeahead-choices-change" event is fired with an object
-        // containing the available choices in a "choices" property
-        source: function(query, process){
+    jQElement._typeahead(
+      {
+        highlight: true,
+        classNames: {
+          open: "dropdown-menu",
+          cursor: "active"
+        }
+      },
+      {
+        source: function (query, syncResults, asyncResults) {
           xhrParams.search = query;
 
-          /* If we have a request in progress don't fire off another one*/
-          if (xhrReq)
+          // if we have a request in progress, cancel it and start another
+          if (xhrReq) {
             xhrReq.abort();
+          }
 
-          xhrReq = $.getJSON(xhrUrl, this.options.xhrParams, function(data){
+          xhrReq = $.getJSON(xhrUrl, xhrParams, function (data) {
             if (data.error !== "ok") {
-              console.log("Error getting data from server "+data.error);
+              console.error("Error getting data from server: " + data.error);
               return;
             }
 
             xhrReq = null;
 
-            jQElement.trigger("typeahead-choices-change", {choices: data.results});
-
-            return process(data.results);
+            asyncResults(data.results);
           });
         },
-        updater: function(item) {
-          var itemObj = this.$menu.find('.active').data('itemObject');
-          selectedCB(itemObj);
-          return item;
+
+        // how the selected item is shown in the input
+        display: function (item) {
+          return item.name;
         },
-        matcher: function(item) {
-          if (!item.hasOwnProperty('name')) {
-            console.log("Name property missing in data");
-            return 0;
+
+        templates: {
+          // how the item is displayed in the dropdown
+          suggestion: function (item) {
+            var elt = document.createElement("div");
+            elt.innerHTML = item.name + " " + item.detail;
+            return elt;
           }
+        }
+      }
+    );
 
-          if (this.$element.val().length === 0)
-            return 0;
-
-          return 1;
-        },
-        highlighter: function (item) {
-          /* Use jquery to escape the item name and detail */
-          var current = $("<span></span>").text(item.name + ' '+item.detail);
-          current = current.html();
-
-          var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
-          return current.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
-            return '<strong>' + match + '</strong>'
-          })
-        },
-        sorter: function (items) { return items; },
-        xhrUrl: xhrUrl,
-        xhrParams: xhrParams,
-        xhrReq: xhrReq,
+    // when an item is selected using the typeahead, invoke the callback
+    jQElement.on("typeahead:select", function (event, item) {
+      selectedCB(item);
     });
-
-
-    /* Copy of bootstrap's render func but sets selectedObject value */
-    function customRenderFunc (items) {
-      var that = this;
-
-      items = $(items).map(function (i, item) {
-        i = $(that.options.item).attr('data-value', item.name).data('itemObject', item);
-        i.find('a').html(that.highlighter(item));
-        return i[0];
-      });
-
-      items.first().addClass('active');
-      this.$menu.html(items);
-      return this;
-    }
-
-    jQElement.data('typeahead').render = customRenderFunc;
   }
 
   /* startABuild:
@@ -162,11 +148,25 @@
     });
   }
 
+  function _getMostRecentBuilds(url, onsuccess, onfail) {
+    $.ajax({
+      url: url,
+      type: 'GET',
+      data : {format: 'json'},
+      headers: {'X-CSRFToken': $.cookie('csrftoken')},
+      success: function (data) {
+        onsuccess ? onsuccess(data) : console.log(data);
+      },
+      error: function (data) {
+        onfail ? onfail(data) : console.error(data);
+      }
+    });
+  }
+
   /* Get a project's configuration info */
   function _getProjectInfo(url, onsuccess, onfail){
     $.ajax({
         type: "GET",
-        data : { format: "json" },
         url: url,
         headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
         success: function (_data) {
@@ -193,7 +193,7 @@
   function _editCurrentProject(data, onSuccess, onFail){
     $.ajax({
         type: "POST",
-        url: libtoaster.ctx.projectPageUrl + "?format=json",
+        url: libtoaster.ctx.xhrProjectUrl,
         data: data,
         headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
         success: function (data) {
@@ -314,11 +314,11 @@
     var alertMsg;
 
     if (layerDepsList.length > 0 && add === true) {
-      alertMsg = $("<span>You have added <strong>"+(layerDepsList.length+1)+"</strong> layers to your project: <a id=\"layer-affected-name\"></a> and its dependencies </span>");
+      alertMsg = $("<span>You have added <strong>"+(layerDepsList.length+1)+"</strong> layers to your project: <a class=\"alert-link\" id=\"layer-affected-name\"></a> and its dependencies </span>");
 
       /* Build the layer deps list */
       layerDepsList.map(function(layer, i){
-        var link = $("<a></a>");
+        var link = $("<a class=\"alert-link\"></a>");
 
         link.attr("href", layer.layerdetailurl);
         link.text(layer.name);
@@ -330,9 +330,9 @@
         alertMsg.append(link);
       });
     } else if (layerDepsList.length === 0 && add === true) {
-      alertMsg = $("<span>You have added <strong>1</strong> layer to your project: <a id=\"layer-affected-name\"></a></span></span>");
+      alertMsg = $("<span>You have added <strong>1</strong> layer to your project: <a class=\"alert-link\" id=\"layer-affected-name\"></a></span></span>");
     } else if (add === false) {
-      alertMsg = $("<span>You have removed <strong>1</strong> layer from your project: <a id=\"layer-affected-name\"></a></span>");
+      alertMsg = $("<span>You have removed <strong>1</strong> layer from your project: <a class=\"alert-link\" id=\"layer-affected-name\"></a></span>");
     }
 
     alertMsg.children("#layer-affected-name").text(layer.name);
@@ -342,10 +342,12 @@
   }
 
   function _showChangeNotification(message){
-    var alertMsg = $("#change-notification-msg");
+    $(".alert-dismissible").fadeOut().promise().done(function(){
+      var alertMsg = $("#change-notification-msg");
 
-    alertMsg.html(message);
-    $("#change-notification, #change-notification *").fadeIn();
+      alertMsg.html(message);
+      $("#change-notification, #change-notification *").fadeIn();
+    });
   }
 
   function _createCustomRecipe(name, baseRecipeId, doneCb){
@@ -374,11 +376,98 @@
     });
   }
 
+  /* Validate project names. Use unique project names
+
+     All arguments accepted by this function are JQeury objects.
+
+     For example if the HTML element has "hint-error-project-name", then
+     it is passed to this function as $("#hint-error-project-name").
+
+     Arg1 - projectName : This is a string object. In the HTML, project name will be entered here.
+     Arg2 - hintEerror : This is a jquery object which will accept span which throws error for
+            duplicate project
+     Arg3 - ctrlGrpValidateProjectName : This object holds the div with class "control-group"
+     Arg4 - enableOrDisableBtn : This object will help the API to enable or disable the form.
+            For example in the new project the create project button will be hidden if the
+            duplicate project exist. Similarly in the projecttopbar the save button will be
+            disabled if the project name already exist.
+
+     Return - This function doesn't return anything. It sets/unsets the behavior of the elements.
+  */
+
+  function _makeProjectNameValidation(projectName, hintError,
+                ctrlGrpValidateProjectName, enableOrDisableBtn ) {
+
+     function checkProjectName(projectName){
+       $.ajax({
+            type: "GET",
+            url: libtoaster.ctx.projectsTypeAheadUrl,
+            data: { 'search' : projectName },
+            headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+            success: function(data){
+              if (data.results.length > 0 &&
+                  data.results[0].name === projectName) {
+                // This project name exists hence show the error and disable
+                // the save button
+                ctrlGrpValidateProjectName.addClass('has-error');
+                hintError.show();
+                enableOrDisableBtn.attr('disabled', 'disabled');
+              } else {
+                ctrlGrpValidateProjectName.removeClass('has-error');
+                hintError.hide();
+                enableOrDisableBtn.removeAttr('disabled');
+              }
+            },
+            error: function (data) {
+              console.log(data);
+            },
+       });
+     }
+
+     /* The moment user types project name remove the error */
+     projectName.on("input", function() {
+        var projectName = $(this).val();
+        checkProjectName(projectName)
+     });
+
+     /* Validate new project name */
+     projectName.on("blur", function(){
+        var projectName = $(this).val();
+        checkProjectName(projectName)
+     });
+  }
+
+  // if true, the loading spinner for Ajax requests will be displayed
+  // if requests take more than 1200ms
+  var ajaxLoadingTimerEnabled = true;
+
+  // turn on the page-level loading spinner for Ajax requests
+  function _enableAjaxLoadingTimer() {
+    ajaxLoadingTimerEnabled = true;
+  }
+
+  // turn off the page-level loading spinner for Ajax requests
+  function _disableAjaxLoadingTimer() {
+    ajaxLoadingTimerEnabled = false;
+  }
+
+  /* Utility function to set a notification for the next page load */
+  function _setNotification(name, message){
+    var data = {
+      name: name,
+      message: message
+    };
+
+    $.cookie('toaster-notification', JSON.stringify(data), { path: '/'});
+  }
 
   return {
+    enableAjaxLoadingTimer: _enableAjaxLoadingTimer,
+    disableAjaxLoadingTimer: _disableAjaxLoadingTimer,
     reload_params : reload_params,
     startABuild : _startABuild,
     cancelABuild : _cancelABuild,
+    getMostRecentBuilds: _getMostRecentBuilds,
     makeTypeahead : _makeTypeahead,
     getProjectInfo: _getProjectInfo,
     getLayerDepsForProject : _getLayerDepsForProject,
@@ -390,6 +479,8 @@
     makeLayerAddRmAlertMsg : _makeLayerAddRmAlertMsg,
     showChangeNotification : _showChangeNotification,
     createCustomRecipe: _createCustomRecipe,
+    makeProjectNameValidation: _makeProjectNameValidation,
+    setNotification: _setNotification,
   };
 })();
 
@@ -421,10 +512,24 @@
     window.location.href = url+"?"+callparams.join('&');
 }
 
-
 /* Things that happen for all pages */
 $(document).ready(function() {
 
+  (function showNotificationRequest(){
+    var cookie = $.cookie('toaster-notification');
+
+    if (!cookie)
+      return;
+
+    var notificationData = JSON.parse(cookie);
+
+    libtoaster.showChangeNotification(notificationData.message);
+
+    $.removeCookie('toaster-notification', { path: "/"});
+  })();
+
+
+
   var ajaxLoadingTimer;
 
   /* If we don't have a console object which might be the case in some
@@ -493,9 +598,7 @@
       delay: { show : 300 }
     });
 
-    // show help bubble only on hover inside tables
-    $(".hover-help").css("visibility","hidden");
-
+    // show help bubble on hover inside tables
     $("table").on("mouseover", "th, td", function () {
         $(this).find(".hover-help").css("visibility","visible");
     });
@@ -509,14 +612,14 @@
     // show task type and outcome in task details pages
     $(".task-info").tooltip({ container: 'body', html: true, delay: {show: 200}, placement: 'right' });
 
-    // initialise the tooltips for the icon-pencil icons
-    $(".icon-pencil").tooltip({ container: 'body', html: true, delay: {show: 400}, title: "Change" });
+    // initialise the tooltips for the edit icons
+    $(".glyphicon-edit").tooltip({ container: 'body', html: true, delay: {show: 400}, title: "Change" });
 
     // initialise the tooltips for the download icons
     $(".icon-download-alt").tooltip({ container: 'body', html: true, delay: { show: 200 } });
 
     // initialise popover for debug information
-    $(".icon-info-sign").popover( { placement: 'bottom', html: true, container: 'body' });
+    $(".glyphicon-info-sign").popover( { placement: 'bottom', html: true, container: 'body' });
 
     // linking directly to tabs
     $(function(){
@@ -582,7 +685,9 @@
         window.clearTimeout(ajaxLoadingTimer);
 
       ajaxLoadingTimer = window.setTimeout(function() {
-        $("#loading-notification").fadeIn();
+        if (libtoaster.ajaxLoadingTimerEnabled) {
+          $("#loading-notification").fadeIn();
+        }
       }, 1200);
     });
 
@@ -613,6 +718,11 @@
       });
     }
 
+    /* Make sure we don't have a notification overlay a modal */
+    $(".modal").on('show.bs.modal', function(){
+      $(".alert-dismissible").fadeOut();
+    });
+
     if (libtoaster.debug) {
       check_for_duplicate_ids();
     } else {
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/mrbsection.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/mrbsection.js
index 09117e1..73d0935 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/mrbsection.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/mrbsection.js
@@ -1,33 +1,19 @@
 
 function mrbSectionInit(ctx){
-
-  var projectBuilds;
-
-  if (ctx.mrbType === 'project')
-    projectBuilds = true;
-
-  $(".cancel-build-btn").click(function(e){
+  $('#latest-builds').on('click', '.cancel-build-btn', function(e){
+    e.stopImmediatePropagation();
     e.preventDefault();
 
     var url = $(this).data('request-url');
     var buildReqIds = $(this).data('buildrequest-id');
-    var banner = $(this).parents(".alert");
 
-    banner.find(".progress-info").fadeOut().promise().done(function(){
-      $("#cancelling-msg-" + buildReqIds).show();
-      console.log("cancel build");
-      libtoaster.cancelABuild(url, buildReqIds, function(){
-        if (projectBuilds == false){
-          /* the all builds page is not 'self updating' like thei
-           * project Builds
-           */
-          window.location.reload();
-        }
-      }, null);
-    });
+    libtoaster.cancelABuild(url, buildReqIds, function () {
+      window.location.reload();
+    }, null);
   });
 
-  $(".run-again-btn").click(function(e){
+  $('#latest-builds').on('click', '.rebuild-btn', function(e){
+    e.stopImmediatePropagation();
     e.preventDefault();
 
     var url = $(this).data('request-url');
@@ -38,58 +24,112 @@
     }, null);
   });
 
+  // cached version of buildData, so we can determine whether a build has
+  // changed since it was last fetched, and update the DOM appropriately
+  var buildData = {};
 
-  var progressTimer;
+  // returns the cached version of this build, or {} is there isn't a cached one
+  function getCached(build) {
+    return buildData[build.id] || {};
+  }
 
-  if (projectBuilds === true){
-    progressTimer = window.setInterval(function() {
-      libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl,
-        function(prjInfo){
-          /* These two are needed because a build can be 100% and still
-           * in progress due to the fact that the % done is updated at the
-           * start of a task so it can be doing the last task at 100%
-           */
-          var inProgress = 0;
-          var allPercentDone = 0;
-          if (prjInfo.builds.length === 0)
-            return
+  // returns true if a build's state changed to "Succeeded", "Failed"
+  // or "Cancelled" from some other value
+  function buildFinished(build) {
+    var cached = getCached(build);
+    return cached.state &&
+      cached.state !== build.state &&
+      (build.state == 'Succeeded' || build.state == 'Failed' ||
+       build.state == 'Cancelled');
+  }
 
-          for (var i in prjInfo.builds){
-            var build = prjInfo.builds[i];
+  // returns true if the state changed
+  function stateChanged(build) {
+    var cached = getCached(build);
+    return (cached.state !== build.state);
+  }
 
-            if (build.outcome === "In Progress" ||
-               $(".progress .bar").length > 0){
-              /* Update the build progress */
-              var percentDone;
+  // returns true if the tasks_complete_percentage changed
+  function tasksProgressChanged(build) {
+    var cached = getCached(build);
+    return (cached.tasks_complete_percentage !== build.tasks_complete_percentage);
+  }
 
-              if (build.outcome !== "In Progress"){
-                /* We have to ignore the value when it's Succeeded because it
-                *   goes back to 0
-                */
-                percentDone = 100;
-              } else {
-                percentDone = build.percentDone;
-                inProgress++;
-              }
+  // returns true if the number of recipes parsed/to parse changed
+  function recipeProgressChanged(build) {
+    var cached = getCached(build);
+    return (cached.recipes_parsed_percentage !== build.recipes_parsed_percentage);
+  }
 
-              $("#build-pc-done-" + build.id).text(percentDone);
-              $("#build-pc-done-title-" + build.id).attr("title", percentDone);
-              $("#build-pc-done-bar-" + build.id).css("width",
-                String(percentDone) + "%");
+  function refreshMostRecentBuilds(){
+    libtoaster.getMostRecentBuilds(
+      libtoaster.ctx.mostRecentBuildsUrl,
 
-              allPercentDone += percentDone;
-            }
+      // success callback
+      function (data) {
+        var build;
+        var tmpl;
+        var container;
+        var selector;
+        var colourClass;
+        var elements;
+
+        for (var i = 0; i < data.length; i++) {
+          build = data[i];
+
+          if (buildFinished(build)) {
+            // a build finished: reload the whole page so that the build
+            // shows up in the builds table
+            window.location.reload();
+          }
+          else if (stateChanged(build)) {
+            // update the whole template
+            build.warnings_pluralise = (build.warnings !== 1 ? 's' : '');
+            build.errors_pluralise = (build.errors !== 1 ? 's' : '');
+
+            tmpl = $.templates("#build-template");
+
+            html = $(tmpl.render(build));
+
+            selector = '[data-latest-build-result="' + build.id + '"] ' +
+              '[data-role="build-status-container"]';
+            container = $(selector);
+
+            // initialize bootstrap tooltips in the new HTML
+            html.find('span.glyphicon-question-sign').tooltip();
+
+            container.html(html);
+          }
+          else if (tasksProgressChanged(build)) {
+            // update the task progress text
+            selector = '#build-pc-done-' + build.id;
+            $(selector).html(build.tasks_complete_percentage);
+
+            // update the task progress bar
+            selector = '#build-pc-done-bar-' + build.id;
+            $(selector).width(build.tasks_complete_percentage + '%');
+          }
+          else if (recipeProgressChanged(build)) {
+            // update the recipe progress text
+            selector = '#recipes-parsed-percentage-' + build.id;
+            $(selector).html(build.recipes_parsed_percentage);
+
+            // update the recipe progress bar
+            selector = '#recipes-parsed-percentage-bar-' + build.id;
+            $(selector).width(build.recipes_parsed_percentage + '%');
           }
 
-          if (allPercentDone === (100 * prjInfo.builds.length) && !inProgress)
-            window.location.reload();
+          buildData[build.id] = build;
+        }
+      },
 
-          /* Our progress bar is not still showing so shutdown the polling. */
-          if ($(".progress .bar").length === 0)
-            window.clearInterval(progressTimer);
-
-      });
-    }, 1500);
+      // fail callback
+      function (data) {
+        console.error(data);
+      }
+    );
   }
-}
 
+  window.setInterval(refreshMostRecentBuilds, 1500);
+  refreshMostRecentBuilds();
+}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/newcustomimage_modal.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/newcustomimage_modal.js
index cb9ed4d..dace8e3 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/newcustomimage_modal.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/newcustomimage_modal.js
@@ -22,26 +22,40 @@
   var nameInput = imgCustomModal.find('input');
 
   var invalidNameMsg = "Image names cannot contain spaces or capital letters. The only allowed special character is dash (-).";
-  var duplicateNameMsg = "A recipe with this name already exists. Image names must be unique.";
+  var duplicateNameMsg = "An image with this name already exists. Image names must be unique.";
   var duplicateImageInProjectMsg = "An image with this name already exists in this project."
   var invalidBaseRecipeIdMsg = "Please select an image to customise.";
 
-  // capture clicks on radio buttons inside the modal; when one is selected,
-  // set the recipe on the modal
-  imgCustomModal.on("click", "[name='select-image']", function (e) {
+  // set button to "submit" state and enable text entry so user can
+  // enter the custom recipe name
+  showSubmitState();
+
+  /* capture clicks on radio buttons inside the modal; when one is selected,
+   * set the recipe on the modal
+   */
+  imgCustomModal.on("click", "[name='select-image']", function(e) {
     clearRecipeError();
+		$(".radio").each(function(){
+			$(this).removeClass("has-error");
+		});
 
     var recipeId = $(e.target).attr('data-recipe');
     imgCustomModal.data('recipe', recipeId);
   });
 
   newCustomImgBtn.click(function(e){
+    // disable the button and text entry
+    showLoadingState();
+
     e.preventDefault();
 
     var baseRecipeId = imgCustomModal.data('recipe');
 
     if (!baseRecipeId) {
       showRecipeError(invalidBaseRecipeIdMsg);
+			$(".radio").each(function(){
+				$(this).addClass("has-error");
+			});
       return;
     }
 
@@ -62,16 +76,37 @@
           }
         } else {
           imgCustomModal.modal('hide');
+          imgCustomModal.one('hidden.bs.modal', showSubmitState);
           window.location.replace(ret.url + '?notify=new');
         }
       });
     }
   });
 
+  // enable text entry, show "Create image" button text
+  function showSubmitState() {
+    libtoaster.enableAjaxLoadingTimer();
+    newCustomImgBtn.find('[data-role="loading-state"]').hide();
+    newCustomImgBtn.find('[data-role="submit-state"]').show();
+    newCustomImgBtn.removeAttr('disabled');
+    nameInput.removeAttr('disabled');
+  }
+
+  // disable text entry, show "Creating image..." button text;
+  // we also disabled the page-level ajax loading spinner while this spinner
+  // is active
+  function showLoadingState() {
+    libtoaster.disableAjaxLoadingTimer();
+    newCustomImgBtn.find('[data-role="submit-state"]').hide();
+    newCustomImgBtn.find('[data-role="loading-state"]').show();
+    newCustomImgBtn.attr('disabled', 'disabled');
+    nameInput.attr('disabled', 'disabled');
+  }
+
   function showNameError(text){
     invalidNameHelp.text(text);
     invalidNameHelp.show();
-    nameInput.parent().addClass('error');
+    nameInput.parent().addClass('has-error');
   }
 
   function showRecipeError(text){
@@ -92,26 +127,26 @@
     if (nameInput.val().search(/[^a-z|0-9|-]/) != -1){
       showNameError(invalidNameMsg);
       newCustomImgBtn.prop("disabled", true);
-      nameInput.parent().addClass('error');
+      nameInput.parent().addClass('has-error');
     } else {
       invalidNameHelp.hide();
       newCustomImgBtn.prop("disabled", false);
-      nameInput.parent().removeClass('error');
+      nameInput.parent().removeClass('has-error');
     }
   });
 }
 
-// Set the image recipes which can used as the basis for the custom
-// image recipe the user is creating
-//
-// baseRecipes: a list of one or more recipes which can be
-// used as the base for the new custom image recipe in the format:
-// [{'id': <recipe ID>, 'name': <recipe name>'}, ...]
-//
-// if recipes is a single recipe, just show the text box to set the
-// name for the new custom image; if recipes contains multiple recipe objects,
-// show a set of radio buttons so the user can decide which to use as the
-// basis for the new custom image
+/* Set the image recipes which can used as the basis for the custom
+ * image recipe the user is creating
+ * baseRecipes: a list of one or more recipes which can be
+ * used as the base for the new custom image recipe in the format:
+ * [{'id': <recipe ID>, 'name': <recipe name>'}, ...]
+ *
+ * if recipes is a single recipe, just show the text box to set the
+ * name for the new custom image; if recipes contains multiple recipe objects,
+ * show a set of radio buttons so the user can decide which to use as the
+ * basis for the new custom image
+ */
 function newCustomImageModalSetRecipes(baseRecipes) {
   var imgCustomModal = $("#new-custom-image-modal");
   var imageSelector = $('#new-custom-image-modal [data-role="image-selector"]');
@@ -124,8 +159,9 @@
     // hide the radio button container
     imageSelector.hide();
 
-    // set the single recipe ID on the modal as it's the only one
-    // we can build from
+    /* set the single recipe ID on the modal as it's the only one
+     * we can build from.
+     */
     imgCustomModal.data('recipe', baseRecipes[0].id);
   }
   else {
@@ -134,14 +170,29 @@
     for (var i = 0; i < baseRecipes.length; i++) {
       var recipe = baseRecipes[i];
       imageSelectRadiosContainer.append(
-        '<label class="radio" data-role="image-radio">' +
-        recipe.name +
-        '<input type="radio" class="form-control" name="select-image" ' +
+        '<div class="radio"><label data-role="image-radio">' +
+        '<input type="radio" name="select-image" ' +
         'data-recipe="' + recipe.id + '">' +
-        '</label>'
+        recipe.name +
+        '</label></div>'
       );
     }
 
+    /* select the first radio button as default selection. Radio button
+     * groups should always display with an option checked
+     */
+    imageSelectRadiosContainer.find("input:radio:first").attr("checked", "checked");
+
+    /* check which radio button is selected by default inside the modal,
+     * and set the recipe on the modal accordingly
+     */
+    imageSelectRadiosContainer.find("input:radio").each(function(){
+      if ( $(this).is(":checked") ) {
+        var recipeId = $(this).attr("data-recipe");
+        imgCustomModal.data("recipe", recipeId);
+      }
+    });
+
     // show the radio button container
     imageSelector.show();
   }
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projectpage.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projectpage.js
index 3013416..4536703 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projectpage.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projectpage.js
@@ -27,11 +27,10 @@
 
   var urlParams = libtoaster.parseUrlParams();
 
-  libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){
+  libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl, function(prjInfo){
     updateProjectLayers(prjInfo.layers);
     updateFreqBuildRecipes(prjInfo.freqtargets);
     updateProjectRelease(prjInfo.release);
-    updateProjectReleases(prjInfo.releases, prjInfo.release);
 
     /* If we're receiving a machine set from the url and it's different from
      * our current machine then activate set machine sequence.
@@ -46,54 +45,13 @@
 
    /* Now we're really ready show the page */
     $("#project-page").show();
+
+    /* Set the project name in the delete modal */
+    $("#delete-project-modal .project-name").text(prjInfo.name);
   });
 
-  (function notificationRequest(){
-
-    if (urlParams.hasOwnProperty('notify')){
-      switch (urlParams.notify){
-        case 'new-project':
-          $("#project-created-notification").show();
-          break;
-        case 'layer-imported':
-          layerImportedNotification();
-          break;
-        default:
-          break;
-      }
-    }
-  })();
-
-  /* Layer imported notification */
-  function layerImportedNotification(){
-    var imported = $.cookie("layer-imported-alert");
-    var message = "Layer imported";
-
-    if (!imported)
-      return;
-    else
-      imported = JSON.parse(imported);
-
-    if (imported.deps_added.length === 0) {
-      message = "You have imported <strong><a href=\""+imported.imported_layer.layerdetailurl+"\">"+imported.imported_layer.name+"</a></strong> and added it to your project.";
-    } else {
-
-      var links = "<a href=\""+imported.imported_layer.layerdetailurl+"\">"+imported.imported_layer.name+"</a>, ";
-
-      imported.deps_added.map (function(item, index){
-        links +='<a href="'+item.layerdetailurl+'">'+item.name+'</a>';
-        /*If we're at the last element we don't want the trailing comma */
-        if (imported.deps_added[index+1] !== undefined)
-          links += ', ';
-      });
-
-      /* Length + 1 here to do deps + the imported layer */
-      message = 'You have imported <strong><a href="'+imported.imported_layer.layerdetailurl+'">'+imported.imported_layer.name+'</a></strong> and added <strong>'+(imported.deps_added.length+1)+'</strong> layers to your project: <strong>'+links+'</strong>';
-    }
-
-    libtoaster.showChangeNotification(message);
-
-    $.removeCookie("layer-imported-alert", { path: "/"});
+  if (urlParams.hasOwnProperty('notify') && urlParams.notify === 'new-project'){
+    $("#project-created-notification").show();
   }
 
   /* Add/Rm layer functionality */
@@ -145,7 +103,7 @@
     for (var i in layers){
       var layerObj = layers[i];
 
-      var projectLayer = $("<li><a></a><span class=\"icon-trash\" data-toggle=\"tooltip\" title=\"Remove\"></span></li>");
+      var projectLayer = $("<li><a></a><span class=\"glyphicon glyphicon-trash\" data-toggle=\"tooltip\" title=\"Remove\"></span></li>");
 
       projectLayer.data('layer', layerObj);
       projectLayer.children("span").tooltip();
@@ -154,7 +112,12 @@
 
       link.attr("href", layerObj.layerdetailurl);
       link.text(layerObj.name);
-      link.tooltip({title: layerObj.vcs_url + " | "+ layerObj.vcs_reference, placement: "right"});
+
+      if (layerObj.local_source_dir) {
+        link.tooltip({title: layerObj.local_source_dir, placement: "right"});
+      } else {
+        link.tooltip({title: layerObj.vcs_url + " | "+ layerObj.vcs_reference, placement: "right"});
+      }
 
       var trashItem = projectLayer.children("span");
       trashItem.click(function (e) {
@@ -208,7 +171,7 @@
     }
 
     for (var i in recipes){
-      var freqTargetCheck = $('<li><label class="checkbox"><input type="checkbox" /><span class="freq-target-name"></span></label></li>');
+      var freqTargetCheck = $('<li><div class="checkbox"><label><input type="checkbox" /><span class="freq-target-name"></span></label></li>');
       freqTargetCheck.find(".freq-target-name").text(recipes[i]);
       freqTargetCheck.find("input").val(recipes[i]);
       freqTargetCheck.click(function(){
@@ -264,7 +227,9 @@
     machineNameTitle.text(machineName);
   }
 
-  libtoaster.makeTypeahead(machineChangeInput, libtoaster.ctx.machinesTypeAheadUrl, { }, function(item){
+  libtoaster.makeTypeahead(machineChangeInput,
+                           libtoaster.ctx.machinesTypeAheadUrl,
+                           { }, function(item){
     currentMachineAddSelection = item.name;
     machineChangeBtn.removeAttr("disabled");
   });
@@ -285,7 +250,7 @@
         machineChangeCancel.click();
 
         /* Show the alert message */
-        var message = $('<span class="lead">You have changed the machine to: <strong><span id="notify-machine-name"></span></strong></span>');
+        var message = $('<span>You have changed the machine to: <strong><span id="notify-machine-name"></span></strong></span>');
         message.find("#notify-machine-name").text(currentMachineAddSelection);
         libtoaster.showChangeNotification(message);
     },
@@ -301,146 +266,35 @@
     releaseTitle.text(release.description);
   }
 
-  function updateProjectReleases(releases, current){
-    for (var i in releases){
-      var releaseOption = $("<option></option>");
 
-      releaseOption.val(releases[i].id);
-      releaseOption.text(releases[i].description);
-      releaseOption.data('release', releases[i]);
-
-      if (releases[i].id == current.id)
-        releaseOption.attr("selected", "selected");
-
-      releaseForm.children("select").append(releaseOption);
-    }
-  }
-
-  releaseChangeFormToggle.click(function(){
-    releaseForm.slideDown();
-    releaseTitle.hide();
-    $(this).hide();
-  });
-
-  cancelReleaseChange.click(function(e){
+  $("#delete-project-confirmed").click(function(e){
     e.preventDefault();
-    releaseForm.slideUp(function(){
-      releaseTitle.show();
-      releaseChangeFormToggle.show();
-    });
-  });
+    libtoaster.disableAjaxLoadingTimer();
+    $(this).find('[data-role="submit-state"]').hide();
+    $(this).find('[data-role="loading-state"]').show();
+    $(this).attr("disabled", "disabled");
+    $('#delete-project-modal [data-dismiss="modal"]').hide();
 
-  function changeProjectRelease(release, layersToRm){
-    libtoaster.editCurrentProject({ projectVersion : release.id },
-      function(){
-        /* Success */
-        /* Update layers list with new layers */
-        layersInPrjList.addClass('muted');
-        libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl,
-            function(prjInfo){
-              layersInPrjList.children().remove();
-              updateProjectLayers(prjInfo.layers);
-              layersInPrjList.removeClass('muted');
-              releaseChangedNotification(release, prjInfo.layers, layersToRm);
-        });
-        updateProjectRelease(release);
-        cancelReleaseChange.click();
-    });
-  }
+    $.ajax({
+        type: 'DELETE',
+        url: libtoaster.ctx.xhrProjectUrl,
+        headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+        success: function (data) {
+          if (data.error !== "ok") {
+            console.warn(data.error);
+          } else {
+            var msg =  $('<span>You have deleted <strong>1</strong> project: <strong id="project-deleted"></strong></span>');
 
-  /* Create a notification to show the changes to the layer configuration
-   * caused by changing a release.
-   */
+            msg.find("#project-deleted").text(libtoaster.ctx.projectName);
+            libtoaster.setNotification("project-deleted", msg.html());
 
-  function releaseChangedNotification(release, layers, layersToRm){
-
-    var message;
-
-    if (layers.length === 0 && layersToRm.length === 0){
-      message = $('<span><span class="lead">You have changed the project release to: <strong><span id="notify-release-name"></span></strong>.');
-      message.find("#notify-release-name").text(release.description);
-      libtoaster.showChangeNotification(message);
-      return;
-    }
-
-    /* Create the whitespace separated list of layers removed */
-    var layersDelList = "";
-
-    layersToRm.map(function(layer, i){
-      layersDelList += layer.name;
-      if (layersToRm[i+1] !== undefined)
-        layersDelList += ', ';
-    });
-
-    message = $('<span><span class="lead">You have changed the project release to: <strong><span id="notify-release-name"></span></strong>. This has caused the following changes in your project layers:</span><ul id="notify-layers-changed-list"></ul></span>');
-
-    var changedList = message.find("#notify-layers-changed-list");
-
-    message.find("#notify-release-name").text(release.description);
-
-    /* Manually construct the list item for changed layers */
-    var li = '<li><strong>'+layers.length+'</strong> layers changed to the <strong>'+release.name+'</strong> release: ';
-    for (var i in layers){
-      li += '<a href='+layers[i].layerdetailurl+'>'+layers[i].name+'</a>';
-      if (i !== 0)
-        li += ', ';
-    }
-
-    changedList.append($(li));
-
-    /* Layers removed */
-    if (layersToRm && layersToRm.length > 0){
-      if (layersToRm.length == 1)
-        li = '<li><strong>1</strong> layer removed: '+layersToRm[0].name+'</li>';
-      else
-        li = '<li><strong>'+layersToRm.length+'</strong> layers deleted: '+layersDelList+'</li>';
-
-      changedList.append($(li));
-    }
-
-    libtoaster.showChangeNotification(message);
-  }
-
-  /* Show the modal dialog which gives the option to remove layers which
-   * aren't compatible with the proposed release
-   */
-  function showReleaseLayerChangeModal(release, layers){
-    var layersToRmList = releaseModal.find("#layers-to-remove-list");
-    layersToRmList.text("");
-
-    releaseModal.find(".proposed-release-change-name").text(release.description);
-    releaseModal.data("layers", layers);
-    releaseModal.data("release", release);
-
-    for (var i in layers){
-      layersToRmList.append($("<li></li>").text(layers[i].name));
-    }
-    releaseModal.modal('show');
-  }
-
-  $("#change-release-btn").click(function(e){
-    e.preventDefault();
-
-    var newRelease = releaseForm.find("option:selected").data('release');
-
-    $.getJSON(ctx.testReleaseChangeUrl,
-      { new_release_id: newRelease.id },
-      function(layers) {
-        if (layers.rows.length === 0){
-          /* No layers to change for this release */
-          changeProjectRelease(newRelease, []);
-        } else {
-          showReleaseLayerChangeModal(newRelease, layers.rows);
+            window.location.replace(data.gotoUrl);
+          }
+        },
+        error: function (data) {
+          console.warn(data);
         }
     });
   });
 
-  /* Release change modal accept */
-  $("#change-release-and-rm-layers").click(function(){
-    var layers = releaseModal.data("layers");
-    var release =  releaseModal.data("release");
-
-    changeProjectRelease(release, layers);
-  });
-
 }
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
index b09f974..92ab2d6 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
@@ -4,7 +4,7 @@
 
   var projectNameForm = $("#project-name-change-form");
   var projectNameContainer = $("#project-name-container");
-  var projectName = $("#project-name");
+  var projectName = $(".project-name");
   var projectNameFormToggle = $("#project-change-form-toggle");
   var projectNameChangeCancel = $("#project-name-change-cancel");
 
@@ -25,13 +25,14 @@
     e.preventDefault();
     projectNameForm.hide();
     projectNameContainer.fadeIn();
+    $("#project-name-change-input").val(projectName.first().text());
   });
 
   $("#project-name-change-btn").click(function(){
     var newProjectName = $("#project-name-change-input").val();
 
     libtoaster.editCurrentProject({ projectName: newProjectName }, function (){
-      projectName.html(newProjectName);
+      projectName.text(newProjectName);
       libtoaster.ctx.projectName = newProjectName;
       projectNameChangeCancel.click();
     });
@@ -87,4 +88,10 @@
         window.location.replace(libtoaster.ctx.projectBuildsUrl);
     }, null);
   });
+
+  /* Call makeProjectNameValidation function */
+  libtoaster.makeProjectNameValidation($("#project-name-change-input"),
+      $("#hint-error-project-name"), $("#validate-project-name"),
+      $("#project-name-change-btn"));
+
 }
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/table.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/table.js
index f738144..176ce57 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/table.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/table.js
@@ -15,6 +15,7 @@
     orderby : null,
     filter : null,
     search : null,
+    default_orderby: null,
   };
 
   var defaultHiddenCols = [];
@@ -75,14 +76,21 @@
 
     if (tableData.total === 0){
       tableContainer.hide();
-      if ($("#no-results-special-"+ctx.tableName).length > 0) {
-        /* use this page's special no-results form instead of the default */
-        $("#no-results-search-input-"+ctx.tableName).val(tableParams.search);
-        $("#no-results-special-"+ctx.tableName).show();
-        $("#results-found-"+ctx.tableName).hide();
-      } else {
-        $("#new-search-input-"+ctx.tableName).val(tableParams.search);
-        $("#no-results-"+ctx.tableName).show();
+      /* No results caused by a search returning nothing */
+      if (tableParams.search) {
+        if ($("#no-results-special-"+ctx.tableName).length > 0) {
+          /* use this page's special no-results form instead of the default */
+          $("#no-results-search-input-"+ctx.tableName).val(tableParams.search);
+          $("#no-results-special-"+ctx.tableName).show();
+          $("#results-found-"+ctx.tableName).hide();
+        } else {
+          $("#new-search-input-"+ctx.tableName).val(tableParams.search);
+          $("#no-results-"+ctx.tableName).show();
+        }
+      }
+      else {
+        /* No results caused by there being no data */
+        $("#empty-state-"+ctx.tableName).show();
       }
       table.trigger("table-done", [tableData.total, tableParams]);
 
@@ -90,6 +98,7 @@
     } else {
       tableContainer.show();
       $("#no-results-"+ctx.tableName).hide();
+      $("#empty-state-"+ctx.tableName).hide();
     }
 
     setupTableChrome(tableData);
@@ -101,27 +110,8 @@
       var row = $("<tr></tr>");
       column_index = -1;
       for (var key_j in tableData.rows[i]){
-
-        /* if we have a static: version of a key, prefer the static: version for rendering */
-        var orig_key_j = key_j;
-
-        if (key_j.indexOf("static:") === 0) {
-          if (key_j.substr("static:".length) in tableData.rows[i]) {
-            continue;
-          }
-          orig_key_j = key_j.substr("static:".length)
-        } else if (("static:" + key_j) in tableData.rows[i]) {
-          key_j = "static:" + key_j;
-        }
-
-        /* we skip over un-displayable column entries */
-        column_index += 1;
-        if (! tableData.columns[column_index].displayable) {
-          continue;
-        }
-
         var td = $("<td></td>");
-        td.prop("class", orig_key_j);
+        td.prop("class", key_j);
         if (tableData.rows[i][key_j]){
           td.html(tableData.rows[i][key_j]);
         }
@@ -181,6 +171,15 @@
     table.css("padding-bottom", 0);
     tableContainer.css("visibility", "visible");
 
+    /* If we have a hash in the url try and highlight that item in the table */
+    if (window.location.hash){
+      var highlight = $("table a[name="+window.location.hash.replace('#',''));
+      if (highlight.length > 0){
+        highlight.parents("tr").addClass('highlight');
+        window.scroll(0, highlight.position().top - 50);
+      }
+    }
+
     table.trigger("table-done", [tableData.total, tableParams]);
   }
 
@@ -188,12 +187,14 @@
     if (tableChromeDone === true)
       return;
 
-    var tableHeadRow = table.find("thead");
+    var tableHeadRow = table.find("thead > tr");
     var editColMenu = $("#table-chrome-"+ctx.tableName).find(".editcol");
 
     tableHeadRow.html("");
     editColMenu.html("");
 
+    tableParams.default_orderby = tableData.default_orderby;
+
     if (!tableParams.orderby && tableData.default_orderby){
       tableParams.orderby = tableData.default_orderby;
     }
@@ -209,7 +210,7 @@
 
       /* Setup the help text */
       if (col.help_text.length > 0) {
-        var help_text = $('<i class="icon-question-sign get-help"> </i>');
+        var help_text = $('<span class="glyphicon glyphicon-question-sign get-help"> </span>');
         help_text.tooltip({title: col.help_text});
         header.append(help_text);
       }
@@ -219,6 +220,7 @@
         var title = $('<a href=\"#\" ></a>');
 
         title.data('field-name', col.field_name);
+        title.attr('data-sort-field', col.field_name);
         title.text(col.title);
         title.click(sortColumnClicked);
 
@@ -246,12 +248,12 @@
       } else {
         /* Not orderable */
         header.css("font-weight", "normal");
-        header.append('<span class="muted">' + col.title + '</span> ');
+        header.append('<span class="text-muted">' + col.title + '</span> ');
       }
 
       /* Setup the filter button */
       if (col.filter_name){
-        var filterBtn = $('<a href="#" role="button" data-filter-on="' + col.filter_name + '" class="pull-right btn btn-mini" data-toggle="modal"><i class="icon-filter filtered"></i></a>');
+        var filterBtn = $('<a href="#" role="button" data-filter-on="' + col.filter_name + '" class="pull-right btn btn-link btn-xs" data-toggle="modal"><i class="glyphicon glyphicon-filter filtered"></i></a>');
 
         filterBtn.data('filter-name', col.filter_name);
         filterBtn.prop('id', col.filter_name);
@@ -270,7 +272,7 @@
       tableHeadRow.append(header);
 
       /* Now setup the checkbox state and click handler */
-      var toggler = $('<li><label class="checkbox">'+col.title+'<input type="checkbox" id="checkbox-'+ col.field_name +'" class="col-toggle" value="'+col.field_name+'" /></label></li>');
+      var toggler = $('<li><div class="checkbox"><label><input type="checkbox" id="checkbox-'+ col.field_name +'" class="col-toggle" value="'+col.field_name+'" />'+col.title+'</label></div></li>');
 
       var togglerInput = toggler.find("input");
 
@@ -280,7 +282,8 @@
       if (col.hideable){
         togglerInput.click(colToggleClicked);
       } else {
-        toggler.find("label").addClass("muted");
+        toggler.find("label").addClass("text-muted");
+        toggler.find("label").parent().addClass("disabled");
         togglerInput.attr("disabled", "disabled");
       }
 
@@ -297,11 +300,12 @@
   /* Toggles the active state of the filter button */
   function filterBtnActive(filterBtn, active){
     if (active) {
+      filterBtn.removeClass("btn-link");
       filterBtn.addClass("btn-primary");
 
       filterBtn.tooltip({
           html: true,
-          title: '<button class="btn btn-small btn-primary" onClick=\'$("#clear-filter-btn-'+ ctx.tableName +'").click();\'>Clear filter</button>',
+          title: '<button class="btn btn-sm btn-primary" onClick=\'$("#clear-filter-btn-'+ ctx.tableName +'").click();\'>Clear filter</button>',
           placement: 'bottom',
           delay: {
             hide: 1500,
@@ -310,6 +314,7 @@
       });
     } else {
       filterBtn.removeClass("btn-primary");
+      filterBtn.addClass("btn-link");
       filterBtn.tooltip('destroy');
     }
   }
@@ -343,29 +348,65 @@
     }
   }
 
+  /* Apply an ordering to the current table.
+   *
+   * 1. Find the column heading matching the sortSpecifier
+   * 2. Set its up/down arrow and add .sorted
+   *
+   * orderby: e.g. "-started_on", "completed_on"
+   * colHeading: column heading element to activate (by showing the caret
+   * up/down, depending on sort order); if not set, the correct column
+   * heading is selected from the DOM using orderby as a key
+   */
+  function applyOrderby(orderby, colHeading) {
+    if (!orderby) {
+      return;
+    }
+
+    // We only have one sort at a time so remove existing sort indicators
+    $("#" + ctx.tableName + " th .icon-caret-down").hide();
+    $("#" + ctx.tableName + " th .icon-caret-up").hide();
+    $("#" + ctx.tableName + " th a").removeClass("sorted");
+
+    // normalise the orderby so we can use it to find the link we want
+    // to style
+    var fieldName = orderby;
+    if (fieldName.indexOf('-') === 0) {
+      fieldName = fieldName.slice(1);
+    }
+
+    // find the table header element which corresponds to the sort field
+    // (if we don't already have it)
+    if (!colHeading) {
+      colHeading = $('[data-sort-field="' + fieldName + '"]');
+    }
+
+    colHeading.addClass("sorted");
+
+    var parent = colHeading.parent();
+
+    if (orderby.indexOf('-') === 0) {
+      parent.children('.icon-caret-up').show();
+    }
+    else {
+      parent.children('.icon-caret-down').show();
+    }
+
+    tableParams.orderby = orderby;
+    loadData(tableParams);
+  }
+
   function sortColumnClicked(e){
     e.preventDefault();
 
-    /* We only have one sort at a time so remove any existing sort indicators */
-    $("#"+ctx.tableName+" th .icon-caret-down").hide();
-    $("#"+ctx.tableName+" th .icon-caret-up").hide();
-    $("#"+ctx.tableName+" th a").removeClass("sorted");
-
-    var fieldName = $(this).data('field-name');
-
     /* if we're already sorted sort the other way */
-    if (tableParams.orderby === fieldName &&
+    var orderby = $(this).data('field-name');
+    if (tableParams.orderby === orderby &&
         tableParams.orderby.indexOf('-') === -1) {
-      tableParams.orderby = '-' + $(this).data('field-name');
-      $(this).parent().children('.icon-caret-up').show();
-    } else {
-      tableParams.orderby = $(this).data('field-name');
-      $(this).parent().children('.icon-caret-down').show();
+      orderby = '-' + orderby;
     }
 
-    $(this).addClass("sorted");
-
-    loadData(tableParams);
+    applyOrderby(orderby, $(this));
   }
 
   function pageButtonClicked(e) {
@@ -384,11 +425,13 @@
       table.find("."+col).show();
     }  else {
       table.find("."+col).hide();
-      /* If we're ordered by the column we're hiding remove the order by */
+      // If we're ordered by the column we're hiding remove the order by
+      // and apply the default one instead
       if (col === tableParams.orderby ||
           '-' + col === tableParams.orderby){
         tableParams.orderby = null;
-        $("#"+ctx.tableName +" .default-orderby").click();
+
+        applyOrderby(tableParams.default_orderby);
       }
     }
 
@@ -415,23 +458,23 @@
     var hasNoRecords = (Number(filterActionData.count) == 0);
 
     var actionStr = '<div class="radio">' +
-                    '<input type="radio" name="filter"' +
-                    '       value="' + filterName + '"';
+      '<label class="filter-title' +
+      (hasNoRecords ? ' text-muted' : '') + '"' +
+      '       for="' + filterName + '">' +
+      '<input type="radio" name="filter"' +
+      '       value="' + filterName + '"';
 
     if (hasNoRecords) {
       actionStr += ' disabled="disabled"';
     }
 
     actionStr += ' id="' + filterName + '">' +
-                 '<input type="hidden" name="filter_value" value="on"' +
-                 '       data-value-for="' + filterName + '">' +
-                 '<label class="filter-title' +
-                 (hasNoRecords ? ' muted' : '') + '"' +
-                 '       for="' + filterName + '">' +
-                 filterActionData.title +
-                 ' (' + filterActionData.count + ')' +
-                 '</label>' +
-                 '</div>';
+      '<input type="hidden" name="filter_value" value="on"' +
+      '       data-value-for="' + filterName + '">' +
+      filterActionData.title +
+      ' (' + filterActionData.count + ')' +
+      '</label>' +
+      '</div>';
 
     var action = $(actionStr);
 
@@ -465,22 +508,23 @@
    */
   function createActionDateRange(filterName, filterValue, filterActionData) {
     var action = $('<div class="radio">' +
+                   '<label class="filter-title"' +
+                   '       for="' + filterName + '">' +
                    '<input type="radio" name="filter"' +
                    '       value="' + filterName + '" ' +
                    '       id="' + filterName + '">' +
                    '<input type="hidden" name="filter_value" value=""' +
                    '       data-value-for="' + filterName + '">' +
-                   '<label class="filter-title"' +
-                   '       for="' + filterName + '">' +
                    filterActionData.title +
                    '</label>' +
-                   '<input type="text" maxlength="10" class="input-small"' +
+									 '<div class="form-inline form-group date-filter-controls">' +
+                   '<input type="text" maxlength="10" class="form-control"' +
                    '       data-date-from-for="' + filterName + '">' +
-                   '<span class="help-inline">to</span>' +
-                   '<input type="text" maxlength="10" class="input-small"' +
+                   '<span>to</span>' +
+                   '<input type="text" maxlength="10" class="form-control"' +
                    '       data-date-to-for="' + filterName + '">' +
                    '<span class="help-inline get-help">(yyyy-mm-dd)</span>' +
-                   '</div>');
+                   '</div></div>');
 
     var radio = action.find('[type="radio"]');
     var value = action.find('[data-value-for]');
@@ -621,7 +665,7 @@
             queryset on the table
           */
           var filterActionRadios = $('#filter-actions-' + ctx.tableName);
-          var filterApplyBtn = $('[data-role="filter-apply"]');
+          var filterApplyBtn = $('[data-cat="filter-apply"]');
 
           var setApplyButtonState = function (e, filterActionValue) {
             if (filterActionValue !== undefined) {
@@ -662,7 +706,7 @@
             if (action) {
               // Setup the current selected filter; default to 'all' if
               // no current filter selected
-              var radioInput = action.children('input[name="filter"]');
+              var radioInput = action.find('input[name="filter"]');
               if ((tableParams.filter &&
                   tableParams.filter === radioInput.val()) ||
                   filterActionData.action_name == 'all') {
@@ -788,6 +832,7 @@
 
     loadData(tableParams);
 
-    $(this).parent().modal('hide');
+
+    $('#filter-modal-'+ctx.tableName).modal('hide');
   });
 }
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/tests/test.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/tests/test.js
index aac0ba6..d7953de 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/tests/test.js
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/tests/test.js
@@ -2,7 +2,6 @@
 /* Unit tests for Toaster's JS */
 
 /* libtoaster tests */
-
 QUnit.test("Layer alert notification", function(assert) {
   var layer = {
     "layerdetailurl":"/toastergui/project/1/layer/22",
@@ -43,9 +42,8 @@
 
 QUnit.test("Project info", function(assert){
   var done = assert.async();
-  libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){
+  libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl, function(prjInfo){
     assert.ok(prjInfo.machine.name);
-    assert.ok(prjInfo.releases.length > 0);
     assert.ok(prjInfo.layers.length > 0);
     assert.ok(prjInfo.freqtargets);
     assert.ok(prjInfo.release);
@@ -83,11 +81,11 @@
   }, 200);
 
   /* Compare the number of layers before and after the add in the project */
-  libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){
+  libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl, function(prjInfo){
     var origNumLayers = prjInfo.layers.length;
 
     libtoaster.addRmLayer(layer, true, function(deps){
-      libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl,
+      libtoaster.getProjectInfo(libtoaster.ctx.xhrProjectUrl,
         function(prjInfo){
         assert.ok(prjInfo.layers.length > origNumLayers,
           "Layer not added to project");
@@ -135,10 +133,10 @@
   libtoaster.makeTypeahead(recipesT,
     libtoaster.ctx.recipesTypeAheadUrl, {}, function(){});
 
-  assert.ok(recipesT.data('typeahead'));
-  assert.ok(layersT.data('typeahead'));
-  assert.ok(projectsT.data('typeahead'));
-  assert.ok(recipesT.data('typeahead'));
+  assert.ok(recipesT.data('ttTypeahead'));
+  assert.ok(layersT.data('ttTypeahead'));
+  assert.ok(projectsT.data('ttTypeahead'));
+  assert.ok(recipesT.data('ttTypeahead'));
 });
 
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/typeahead.jquery.js b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/typeahead.jquery.js
new file mode 100644
index 0000000..f3efd80
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/static/js/typeahead.jquery.js
@@ -0,0 +1,1551 @@
+/*!
+ * typeahead.js 0.11.1
+ * https://github.com/twitter/typeahead.js
+ * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT
+ */
+
+(function(root, factory) {
+    if (typeof define === "function" && define.amd) {
+        define("typeahead.js", [ "jquery" ], function(a0) {
+            return factory(a0);
+        });
+    } else if (typeof exports === "object") {
+        module.exports = factory(require("jquery"));
+    } else {
+        factory(jQuery);
+    }
+})(this, function($) {
+    var _ = function() {
+        "use strict";
+        return {
+            isMsie: function() {
+                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false;
+            },
+            isBlankString: function(str) {
+                return !str || /^\s*$/.test(str);
+            },
+            escapeRegExChars: function(str) {
+                return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+            },
+            isString: function(obj) {
+                return typeof obj === "string";
+            },
+            isNumber: function(obj) {
+                return typeof obj === "number";
+            },
+            isArray: $.isArray,
+            isFunction: $.isFunction,
+            isObject: $.isPlainObject,
+            isUndefined: function(obj) {
+                return typeof obj === "undefined";
+            },
+            isElement: function(obj) {
+                return !!(obj && obj.nodeType === 1);
+            },
+            isJQuery: function(obj) {
+                return obj instanceof $;
+            },
+            toStr: function toStr(s) {
+                return _.isUndefined(s) || s === null ? "" : s + "";
+            },
+            bind: $.proxy,
+            each: function(collection, cb) {
+                $.each(collection, reverseArgs);
+                function reverseArgs(index, value) {
+                    return cb(value, index);
+                }
+            },
+            map: $.map,
+            filter: $.grep,
+            every: function(obj, test) {
+                var result = true;
+                if (!obj) {
+                    return result;
+                }
+                $.each(obj, function(key, val) {
+                    if (!(result = test.call(null, val, key, obj))) {
+                        return false;
+                    }
+                });
+                return !!result;
+            },
+            some: function(obj, test) {
+                var result = false;
+                if (!obj) {
+                    return result;
+                }
+                $.each(obj, function(key, val) {
+                    if (result = test.call(null, val, key, obj)) {
+                        return false;
+                    }
+                });
+                return !!result;
+            },
+            mixin: $.extend,
+            identity: function(x) {
+                return x;
+            },
+            clone: function(obj) {
+                return $.extend(true, {}, obj);
+            },
+            getIdGenerator: function() {
+                var counter = 0;
+                return function() {
+                    return counter++;
+                };
+            },
+            templatify: function templatify(obj) {
+                return $.isFunction(obj) ? obj : template;
+                function template() {
+                    return String(obj);
+                }
+            },
+            defer: function(fn) {
+                setTimeout(fn, 0);
+            },
+            debounce: function(func, wait, immediate) {
+                var timeout, result;
+                return function() {
+                    var context = this, args = arguments, later, callNow;
+                    later = function() {
+                        timeout = null;
+                        if (!immediate) {
+                            result = func.apply(context, args);
+                        }
+                    };
+                    callNow = immediate && !timeout;
+                    clearTimeout(timeout);
+                    timeout = setTimeout(later, wait);
+                    if (callNow) {
+                        result = func.apply(context, args);
+                    }
+                    return result;
+                };
+            },
+            throttle: function(func, wait) {
+                var context, args, timeout, result, previous, later;
+                previous = 0;
+                later = function() {
+                    previous = new Date();
+                    timeout = null;
+                    result = func.apply(context, args);
+                };
+                return function() {
+                    var now = new Date(), remaining = wait - (now - previous);
+                    context = this;
+                    args = arguments;
+                    if (remaining <= 0) {
+                        clearTimeout(timeout);
+                        timeout = null;
+                        previous = now;
+                        result = func.apply(context, args);
+                    } else if (!timeout) {
+                        timeout = setTimeout(later, remaining);
+                    }
+                    return result;
+                };
+            },
+            stringify: function(val) {
+                return _.isString(val) ? val : JSON.stringify(val);
+            },
+            noop: function() {}
+        };
+    }();
+    var WWW = function() {
+        "use strict";
+        var defaultClassNames = {
+            wrapper: "twitter-typeahead",
+            input: "tt-input",
+            hint: "tt-hint",
+            menu: "tt-menu",
+            dataset: "tt-dataset",
+            suggestion: "tt-suggestion",
+            selectable: "tt-selectable",
+            empty: "tt-empty",
+            open: "tt-open",
+            cursor: "tt-cursor",
+            highlight: "tt-highlight"
+        };
+        return build;
+        function build(o) {
+            var www, classes;
+            classes = _.mixin({}, defaultClassNames, o);
+            www = {
+                css: buildCss(),
+                classes: classes,
+                html: buildHtml(classes),
+                selectors: buildSelectors(classes)
+            };
+            return {
+                css: www.css,
+                html: www.html,
+                classes: www.classes,
+                selectors: www.selectors,
+                mixin: function(o) {
+                    _.mixin(o, www);
+                }
+            };
+        }
+        function buildHtml(c) {
+            return {
+                wrapper: '<span class="' + c.wrapper + '"></span>',
+                menu: '<div class="' + c.menu + '"></div>'
+            };
+        }
+        function buildSelectors(classes) {
+            var selectors = {};
+            _.each(classes, function(v, k) {
+                selectors[k] = "." + v;
+            });
+            return selectors;
+        }
+        function buildCss() {
+            var css = {
+                wrapper: {
+                    position: "relative",
+                    display: "inline-block"
+                },
+                hint: {
+                    position: "absolute",
+                    top: "0",
+                    left: "0",
+                    borderColor: "transparent",
+                    boxShadow: "none",
+                    opacity: "1"
+                },
+                input: {
+                    position: "relative",
+                    verticalAlign: "top",
+                    backgroundColor: "transparent"
+                },
+                inputWithNoHint: {
+                    position: "relative",
+                    verticalAlign: "top"
+                },
+                menu: {
+                    position: "absolute",
+                    top: "100%",
+                    left: "0",
+                    zIndex: "100",
+                    display: "none"
+                },
+                ltr: {
+                    left: "0",
+                    right: "auto"
+                },
+                rtl: {
+                    left: "auto",
+                    right: " 0"
+                }
+            };
+            if (_.isMsie()) {
+                _.mixin(css.input, {
+                    backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"
+                });
+            }
+            return css;
+        }
+    }();
+    var EventBus = function() {
+        "use strict";
+        var namespace, deprecationMap;
+        namespace = "typeahead:";
+        deprecationMap = {
+            render: "rendered",
+            cursorchange: "cursorchanged",
+            select: "selected",
+            autocomplete: "autocompleted"
+        };
+        function EventBus(o) {
+            if (!o || !o.el) {
+                $.error("EventBus initialized without el");
+            }
+            this.$el = $(o.el);
+        }
+        _.mixin(EventBus.prototype, {
+            _trigger: function(type, args) {
+                var $e;
+                $e = $.Event(namespace + type);
+                (args = args || []).unshift($e);
+                this.$el.trigger.apply(this.$el, args);
+                return $e;
+            },
+            before: function(type) {
+                var args, $e;
+                args = [].slice.call(arguments, 1);
+                $e = this._trigger("before" + type, args);
+                return $e.isDefaultPrevented();
+            },
+            trigger: function(type) {
+                var deprecatedType;
+                this._trigger(type, [].slice.call(arguments, 1));
+                if (deprecatedType = deprecationMap[type]) {
+                    this._trigger(deprecatedType, [].slice.call(arguments, 1));
+                }
+            }
+        });
+        return EventBus;
+    }();
+    var EventEmitter = function() {
+        "use strict";
+        var splitter = /\s+/, nextTick = getNextTick();
+        return {
+            onSync: onSync,
+            onAsync: onAsync,
+            off: off,
+            trigger: trigger
+        };
+        function on(method, types, cb, context) {
+            var type;
+            if (!cb) {
+                return this;
+            }
+            types = types.split(splitter);
+            cb = context ? bindContext(cb, context) : cb;
+            this._callbacks = this._callbacks || {};
+            while (type = types.shift()) {
+                this._callbacks[type] = this._callbacks[type] || {
+                    sync: [],
+                    async: []
+                };
+                this._callbacks[type][method].push(cb);
+            }
+            return this;
+        }
+        function onAsync(types, cb, context) {
+            return on.call(this, "async", types, cb, context);
+        }
+        function onSync(types, cb, context) {
+            return on.call(this, "sync", types, cb, context);
+        }
+        function off(types) {
+            var type;
+            if (!this._callbacks) {
+                return this;
+            }
+            types = types.split(splitter);
+            while (type = types.shift()) {
+                delete this._callbacks[type];
+            }
+            return this;
+        }
+        function trigger(types) {
+            var type, callbacks, args, syncFlush, asyncFlush;
+            if (!this._callbacks) {
+                return this;
+            }
+            types = types.split(splitter);
+            args = [].slice.call(arguments, 1);
+            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {
+                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));
+                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));
+                syncFlush() && nextTick(asyncFlush);
+            }
+            return this;
+        }
+        function getFlush(callbacks, context, args) {
+            return flush;
+            function flush() {
+                var cancelled;
+                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {
+                    cancelled = callbacks[i].apply(context, args) === false;
+                }
+                return !cancelled;
+            }
+        }
+        function getNextTick() {
+            var nextTickFn;
+            if (window.setImmediate) {
+                nextTickFn = function nextTickSetImmediate(fn) {
+                    setImmediate(function() {
+                        fn();
+                    });
+                };
+            } else {
+                nextTickFn = function nextTickSetTimeout(fn) {
+                    setTimeout(function() {
+                        fn();
+                    }, 0);
+                };
+            }
+            return nextTickFn;
+        }
+        function bindContext(fn, context) {
+            return fn.bind ? fn.bind(context) : function() {
+                fn.apply(context, [].slice.call(arguments, 0));
+            };
+        }
+    }();
+    var highlight = function(doc) {
+        "use strict";
+        var defaults = {
+            node: null,
+            pattern: null,
+            tagName: "strong",
+            className: null,
+            wordsOnly: false,
+            caseSensitive: false
+        };
+        return function hightlight(o) {
+            var regex;
+            o = _.mixin({}, defaults, o);
+            if (!o.node || !o.pattern) {
+                return;
+            }
+            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];
+            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);
+            traverse(o.node, hightlightTextNode);
+            function hightlightTextNode(textNode) {
+                var match, patternNode, wrapperNode;
+                if (match = regex.exec(textNode.data)) {
+                    wrapperNode = doc.createElement(o.tagName);
+                    o.className && (wrapperNode.className = o.className);
+                    patternNode = textNode.splitText(match.index);
+                    patternNode.splitText(match[0].length);
+                    wrapperNode.appendChild(patternNode.cloneNode(true));
+                    textNode.parentNode.replaceChild(wrapperNode, patternNode);
+                }
+                return !!match;
+            }
+            function traverse(el, hightlightTextNode) {
+                var childNode, TEXT_NODE_TYPE = 3;
+                for (var i = 0; i < el.childNodes.length; i++) {
+                    childNode = el.childNodes[i];
+                    if (childNode.nodeType === TEXT_NODE_TYPE) {
+                        i += hightlightTextNode(childNode) ? 1 : 0;
+                    } else {
+                        traverse(childNode, hightlightTextNode);
+                    }
+                }
+            }
+        };
+        function getRegex(patterns, caseSensitive, wordsOnly) {
+            var escapedPatterns = [], regexStr;
+            for (var i = 0, len = patterns.length; i < len; i++) {
+                escapedPatterns.push(_.escapeRegExChars(patterns[i]));
+            }
+            regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")";
+            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i");
+        }
+    }(window.document);
+    var Input = function() {
+        "use strict";
+        var specialKeyCodeMap;
+        specialKeyCodeMap = {
+            9: "tab",
+            27: "esc",
+            37: "left",
+            39: "right",
+            13: "enter",
+            38: "up",
+            40: "down"
+        };
+        function Input(o, www) {
+            o = o || {};
+            if (!o.input) {
+                $.error("input is missing");
+            }
+            www.mixin(this);
+            this.$hint = $(o.hint);
+            this.$input = $(o.input);
+            this.query = this.$input.val();
+            this.queryWhenFocused = this.hasFocus() ? this.query : null;
+            this.$overflowHelper = buildOverflowHelper(this.$input);
+            this._checkLanguageDirection();
+            if (this.$hint.length === 0) {
+                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;
+            }
+        }
+        Input.normalizeQuery = function(str) {
+            return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " ");
+        };
+        _.mixin(Input.prototype, EventEmitter, {
+            _onBlur: function onBlur() {
+                this.resetInputValue();
+                this.trigger("blurred");
+            },
+            _onFocus: function onFocus() {
+                this.queryWhenFocused = this.query;
+                this.trigger("focused");
+            },
+            _onKeydown: function onKeydown($e) {
+                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];
+                this._managePreventDefault(keyName, $e);
+                if (keyName && this._shouldTrigger(keyName, $e)) {
+                    this.trigger(keyName + "Keyed", $e);
+                }
+            },
+            _onInput: function onInput() {
+                this._setQuery(this.getInputValue());
+                this.clearHintIfInvalid();
+                this._checkLanguageDirection();
+            },
+            _managePreventDefault: function managePreventDefault(keyName, $e) {
+                var preventDefault;
+                switch (keyName) {
+                  case "up":
+                  case "down":
+                    preventDefault = !withModifier($e);
+                    break;
+
+                  default:
+                    preventDefault = false;
+                }
+                preventDefault && $e.preventDefault();
+            },
+            _shouldTrigger: function shouldTrigger(keyName, $e) {
+                var trigger;
+                switch (keyName) {
+                  case "tab":
+                    trigger = !withModifier($e);
+                    break;
+
+                  default:
+                    trigger = true;
+                }
+                return trigger;
+            },
+            _checkLanguageDirection: function checkLanguageDirection() {
+                var dir = (this.$input.css("direction") || "ltr").toLowerCase();
+                if (this.dir !== dir) {
+                    this.dir = dir;
+                    this.$hint.attr("dir", dir);
+                    this.trigger("langDirChanged", dir);
+                }
+            },
+            _setQuery: function setQuery(val, silent) {
+                var areEquivalent, hasDifferentWhitespace;
+                areEquivalent = areQueriesEquivalent(val, this.query);
+                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;
+                this.query = val;
+                if (!silent && !areEquivalent) {
+                    this.trigger("queryChanged", this.query);
+                } else if (!silent && hasDifferentWhitespace) {
+                    this.trigger("whitespaceChanged", this.query);
+                }
+            },
+            bind: function() {
+                var that = this, onBlur, onFocus, onKeydown, onInput;
+                onBlur = _.bind(this._onBlur, this);
+                onFocus = _.bind(this._onFocus, this);
+                onKeydown = _.bind(this._onKeydown, this);
+                onInput = _.bind(this._onInput, this);
+                this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown);
+                if (!_.isMsie() || _.isMsie() > 9) {
+                    this.$input.on("input.tt", onInput);
+                } else {
+                    this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) {
+                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {
+                            return;
+                        }
+                        _.defer(_.bind(that._onInput, that, $e));
+                    });
+                }
+                return this;
+            },
+            focus: function focus() {
+                this.$input.focus();
+            },
+            blur: function blur() {
+                this.$input.blur();
+            },
+            getLangDir: function getLangDir() {
+                return this.dir;
+            },
+            getQuery: function getQuery() {
+                return this.query || "";
+            },
+            setQuery: function setQuery(val, silent) {
+                this.setInputValue(val);
+                this._setQuery(val, silent);
+            },
+            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {
+                return this.query !== this.queryWhenFocused;
+            },
+            getInputValue: function getInputValue() {
+                return this.$input.val();
+            },
+            setInputValue: function setInputValue(value) {
+                this.$input.val(value);
+                this.clearHintIfInvalid();
+                this._checkLanguageDirection();
+            },
+            resetInputValue: function resetInputValue() {
+                this.setInputValue(this.query);
+            },
+            getHint: function getHint() {
+                return this.$hint.val();
+            },
+            setHint: function setHint(value) {
+                this.$hint.val(value);
+            },
+            clearHint: function clearHint() {
+                this.setHint("");
+            },
+            clearHintIfInvalid: function clearHintIfInvalid() {
+                var val, hint, valIsPrefixOfHint, isValid;
+                val = this.getInputValue();
+                hint = this.getHint();
+                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;
+                isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow();
+                !isValid && this.clearHint();
+            },
+            hasFocus: function hasFocus() {
+                return this.$input.is(":focus");
+            },
+            hasOverflow: function hasOverflow() {
+                var constraint = this.$input.width() - 2;
+                this.$overflowHelper.text(this.getInputValue());
+                return this.$overflowHelper.width() >= constraint;
+            },
+            isCursorAtEnd: function() {
+                var valueLength, selectionStart, range;
+                valueLength = this.$input.val().length;
+                selectionStart = this.$input[0].selectionStart;
+                if (_.isNumber(selectionStart)) {
+                    return selectionStart === valueLength;
+                } else if (document.selection) {
+                    range = document.selection.createRange();
+                    range.moveStart("character", -valueLength);
+                    return valueLength === range.text.length;
+                }
+                return true;
+            },
+            destroy: function destroy() {
+                this.$hint.off(".tt");
+                this.$input.off(".tt");
+                this.$overflowHelper.remove();
+                this.$hint = this.$input = this.$overflowHelper = $("<div>");
+            }
+        });
+        return Input;
+        function buildOverflowHelper($input) {
+            return $('<pre aria-hidden="true"></pre>').css({
+                position: "absolute",
+                visibility: "hidden",
+                whiteSpace: "pre",
+                fontFamily: $input.css("font-family"),
+                fontSize: $input.css("font-size"),
+                fontStyle: $input.css("font-style"),
+                fontVariant: $input.css("font-variant"),
+                fontWeight: $input.css("font-weight"),
+                wordSpacing: $input.css("word-spacing"),
+                letterSpacing: $input.css("letter-spacing"),
+                textIndent: $input.css("text-indent"),
+                textRendering: $input.css("text-rendering"),
+                textTransform: $input.css("text-transform")
+            }).insertAfter($input);
+        }
+        function areQueriesEquivalent(a, b) {
+            return Input.normalizeQuery(a) === Input.normalizeQuery(b);
+        }
+        function withModifier($e) {
+            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;
+        }
+    }();
+    var Dataset = function() {
+        "use strict";
+        var keys, nameGenerator;
+        keys = {
+            val: "tt-selectable-display",
+            obj: "tt-selectable-object"
+        };
+        nameGenerator = _.getIdGenerator();
+        function Dataset(o, www) {
+            o = o || {};
+            o.templates = o.templates || {};
+            o.templates.notFound = o.templates.notFound || o.templates.empty;
+            if (!o.source) {
+                $.error("missing source");
+            }
+            if (!o.node) {
+                $.error("missing node");
+            }
+            if (o.name && !isValidName(o.name)) {
+                $.error("invalid dataset name: " + o.name);
+            }
+            www.mixin(this);
+            this.highlight = !!o.highlight;
+            this.name = o.name || nameGenerator();
+            this.limit = o.limit || 5;
+            this.displayFn = getDisplayFn(o.display || o.displayKey);
+            this.templates = getTemplates(o.templates, this.displayFn);
+            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;
+            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;
+            this._resetLastSuggestion();
+            this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name);
+        }
+        Dataset.extractData = function extractData(el) {
+            var $el = $(el);
+            if ($el.data(keys.obj)) {
+                return {
+                    val: $el.data(keys.val) || "",
+                    obj: $el.data(keys.obj) || null
+                };
+            }
+            return null;
+        };
+        _.mixin(Dataset.prototype, EventEmitter, {
+            _overwrite: function overwrite(query, suggestions) {
+                suggestions = suggestions || [];
+                if (suggestions.length) {
+                    this._renderSuggestions(query, suggestions);
+                } else if (this.async && this.templates.pending) {
+                    this._renderPending(query);
+                } else if (!this.async && this.templates.notFound) {
+                    this._renderNotFound(query);
+                } else {
+                    this._empty();
+                }
+                this.trigger("rendered", this.name, suggestions, false);
+            },
+            _append: function append(query, suggestions) {
+                suggestions = suggestions || [];
+                if (suggestions.length && this.$lastSuggestion.length) {
+                    this._appendSuggestions(query, suggestions);
+                } else if (suggestions.length) {
+                    this._renderSuggestions(query, suggestions);
+                } else if (!this.$lastSuggestion.length && this.templates.notFound) {
+                    this._renderNotFound(query);
+                }
+                this.trigger("rendered", this.name, suggestions, true);
+            },
+            _renderSuggestions: function renderSuggestions(query, suggestions) {
+                var $fragment;
+                $fragment = this._getSuggestionsFragment(query, suggestions);
+                this.$lastSuggestion = $fragment.children().last();
+                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));
+            },
+            _appendSuggestions: function appendSuggestions(query, suggestions) {
+                var $fragment, $lastSuggestion;
+                $fragment = this._getSuggestionsFragment(query, suggestions);
+                $lastSuggestion = $fragment.children().last();
+                this.$lastSuggestion.after($fragment);
+                this.$lastSuggestion = $lastSuggestion;
+            },
+            _renderPending: function renderPending(query) {
+                var template = this.templates.pending;
+                this._resetLastSuggestion();
+                template && this.$el.html(template({
+                    query: query,
+                    dataset: this.name
+                }));
+            },
+            _renderNotFound: function renderNotFound(query) {
+                var template = this.templates.notFound;
+                this._resetLastSuggestion();
+                template && this.$el.html(template({
+                    query: query,
+                    dataset: this.name
+                }));
+            },
+            _empty: function empty() {
+                this.$el.empty();
+                this._resetLastSuggestion();
+            },
+            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {
+                var that = this, fragment;
+                fragment = document.createDocumentFragment();
+                _.each(suggestions, function getSuggestionNode(suggestion) {
+                    var $el, context;
+                    context = that._injectQuery(query, suggestion);
+                    $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable);
+                    fragment.appendChild($el[0]);
+                });
+                this.highlight && highlight({
+                    className: this.classes.highlight,
+                    node: fragment,
+                    pattern: query
+                });
+                return $(fragment);
+            },
+            _getFooter: function getFooter(query, suggestions) {
+                return this.templates.footer ? this.templates.footer({
+                    query: query,
+                    suggestions: suggestions,
+                    dataset: this.name
+                }) : null;
+            },
+            _getHeader: function getHeader(query, suggestions) {
+                return this.templates.header ? this.templates.header({
+                    query: query,
+                    suggestions: suggestions,
+                    dataset: this.name
+                }) : null;
+            },
+            _resetLastSuggestion: function resetLastSuggestion() {
+                this.$lastSuggestion = $();
+            },
+            _injectQuery: function injectQuery(query, obj) {
+                return _.isObject(obj) ? _.mixin({
+                    _query: query
+                }, obj) : obj;
+            },
+            update: function update(query) {
+                var that = this, canceled = false, syncCalled = false, rendered = 0;
+                this.cancel();
+                this.cancel = function cancel() {
+                    canceled = true;
+                    that.cancel = $.noop;
+                    that.async && that.trigger("asyncCanceled", query);
+                };
+                this.source(query, sync, async);
+                !syncCalled && sync([]);
+                function sync(suggestions) {
+                    if (syncCalled) {
+                        return;
+                    }
+                    syncCalled = true;
+                    suggestions = (suggestions || []).slice(0, that.limit);
+                    rendered = suggestions.length;
+                    that._overwrite(query, suggestions);
+                    if (rendered < that.limit && that.async) {
+                        that.trigger("asyncRequested", query);
+                    }
+                }
+                function async(suggestions) {
+                    suggestions = suggestions || [];
+                    if (!canceled && rendered < that.limit) {
+                        that.cancel = $.noop;
+                        rendered += suggestions.length;
+
+                        // HACK: because we don't have a synchronous way of
+                        // retrieving results, we use the async function every
+                        // time we update the drop-down; however, the typeahead
+                        // does some internal book-keeping which means that we
+                        // only get the additional items in the drop-down when
+                        // the next set of results is fetched, instead of all
+                        // of them (it appears to implicitly track which
+                        // results have already been shown in the drop-down); by
+                        // forcing an overwrite, we see all of the new results
+                        // every time we fetch a set of suggestions
+                        //that._append(query, suggestions.slice(0, that.limit - rendered));
+                        that._overwrite(query, suggestions);
+
+                        that.async && that.trigger("asyncReceived", query);
+                    }
+                }
+            },
+            cancel: $.noop,
+            clear: function clear() {
+                this._empty();
+                this.cancel();
+                this.trigger("cleared");
+            },
+            isEmpty: function isEmpty() {
+                return this.$el.is(":empty");
+            },
+            destroy: function destroy() {
+                this.$el = $("<div>");
+            }
+        });
+        return Dataset;
+        function getDisplayFn(display) {
+            display = display || _.stringify;
+            return _.isFunction(display) ? display : displayFn;
+            function displayFn(obj) {
+                return obj[display];
+            }
+        }
+        function getTemplates(templates, displayFn) {
+            return {
+                notFound: templates.notFound && _.templatify(templates.notFound),
+                pending: templates.pending && _.templatify(templates.pending),
+                header: templates.header && _.templatify(templates.header),
+                footer: templates.footer && _.templatify(templates.footer),
+                suggestion: templates.suggestion || suggestionTemplate
+            };
+            function suggestionTemplate(context) {
+                return $("<div>").text(displayFn(context));
+            }
+        }
+        function isValidName(str) {
+            return /^[_a-zA-Z0-9-]+$/.test(str);
+        }
+    }();
+    var Menu = function() {
+        "use strict";
+        function Menu(o, www) {
+            var that = this;
+            o = o || {};
+            if (!o.node) {
+                $.error("node is required");
+            }
+            www.mixin(this);
+            this.$node = $(o.node);
+            this.query = null;
+            this.datasets = _.map(o.datasets, initializeDataset);
+            function initializeDataset(oDataset) {
+                var node = that.$node.find(oDataset.node).first();
+                oDataset.node = node.length ? node : $("<div>").appendTo(that.$node);
+                return new Dataset(oDataset, www);
+            }
+        }
+        _.mixin(Menu.prototype, EventEmitter, {
+            _onSelectableClick: function onSelectableClick($e) {
+                this.trigger("selectableClicked", $($e.currentTarget));
+            },
+            _onRendered: function onRendered(type, dataset, suggestions, async) {
+                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());
+                this.trigger("datasetRendered", dataset, suggestions, async);
+            },
+            _onCleared: function onCleared() {
+                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());
+                this.trigger("datasetCleared");
+            },
+            _propagate: function propagate() {
+                this.trigger.apply(this, arguments);
+            },
+            _allDatasetsEmpty: function allDatasetsEmpty() {
+                return _.every(this.datasets, isDatasetEmpty);
+                function isDatasetEmpty(dataset) {
+                    return dataset.isEmpty();
+                }
+            },
+            _getSelectables: function getSelectables() {
+                return this.$node.find(this.selectors.selectable);
+            },
+            _removeCursor: function _removeCursor() {
+                var $selectable = this.getActiveSelectable();
+                $selectable && $selectable.removeClass(this.classes.cursor);
+            },
+            _ensureVisible: function ensureVisible($el) {
+                var elTop, elBottom, nodeScrollTop, nodeHeight;
+                elTop = $el.position().top;
+                elBottom = elTop + $el.outerHeight(true);
+                nodeScrollTop = this.$node.scrollTop();
+                nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10);
+                if (elTop < 0) {
+                    this.$node.scrollTop(nodeScrollTop + elTop);
+                } else if (nodeHeight < elBottom) {
+                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));
+                }
+            },
+            bind: function() {
+                var that = this, onSelectableClick;
+                onSelectableClick = _.bind(this._onSelectableClick, this);
+                this.$node.on("click.tt", this.selectors.selectable, onSelectableClick);
+                _.each(this.datasets, function(dataset) {
+                    dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that);
+                });
+                return this;
+            },
+            isOpen: function isOpen() {
+                return this.$node.hasClass(this.classes.open);
+            },
+            open: function open() {
+                this.$node.addClass(this.classes.open);
+            },
+            close: function close() {
+                this.$node.removeClass(this.classes.open);
+                this._removeCursor();
+            },
+            setLanguageDirection: function setLanguageDirection(dir) {
+                this.$node.attr("dir", dir);
+            },
+            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {
+                var $selectables, $oldCursor, oldIndex, newIndex;
+                $oldCursor = this.getActiveSelectable();
+                $selectables = this._getSelectables();
+                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;
+                newIndex = oldIndex + delta;
+                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;
+                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;
+                return newIndex === -1 ? null : $selectables.eq(newIndex);
+            },
+            setCursor: function setCursor($selectable) {
+                this._removeCursor();
+                if ($selectable = $selectable && $selectable.first()) {
+                    $selectable.addClass(this.classes.cursor);
+                    this._ensureVisible($selectable);
+                }
+            },
+            getSelectableData: function getSelectableData($el) {
+                return $el && $el.length ? Dataset.extractData($el) : null;
+            },
+            getActiveSelectable: function getActiveSelectable() {
+                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();
+                return $selectable.length ? $selectable : null;
+            },
+            getTopSelectable: function getTopSelectable() {
+                var $selectable = this._getSelectables().first();
+                return $selectable.length ? $selectable : null;
+            },
+            update: function update(query) {
+                var isValidUpdate = query !== this.query;
+                if (isValidUpdate) {
+                    this.query = query;
+                    _.each(this.datasets, updateDataset);
+                }
+                return isValidUpdate;
+                function updateDataset(dataset) {
+                    dataset.update(query);
+                }
+            },
+            empty: function empty() {
+                _.each(this.datasets, clearDataset);
+                this.query = null;
+                this.$node.addClass(this.classes.empty);
+                function clearDataset(dataset) {
+                    dataset.clear();
+                }
+            },
+            destroy: function destroy() {
+                this.$node.off(".tt");
+                this.$node = $("<div>");
+                _.each(this.datasets, destroyDataset);
+                function destroyDataset(dataset) {
+                    dataset.destroy();
+                }
+            }
+        });
+        return Menu;
+    }();
+    var DefaultMenu = function() {
+        "use strict";
+        var s = Menu.prototype;
+        function DefaultMenu() {
+            Menu.apply(this, [].slice.call(arguments, 0));
+        }
+        _.mixin(DefaultMenu.prototype, Menu.prototype, {
+            open: function open() {
+                !this._allDatasetsEmpty() && this._show();
+                return s.open.apply(this, [].slice.call(arguments, 0));
+            },
+            close: function close() {
+                this._hide();
+                return s.close.apply(this, [].slice.call(arguments, 0));
+            },
+            _onRendered: function onRendered() {
+                if (this._allDatasetsEmpty()) {
+                    this._hide();
+                } else {
+                    this.isOpen() && this._show();
+                }
+                return s._onRendered.apply(this, [].slice.call(arguments, 0));
+            },
+            _onCleared: function onCleared() {
+                if (this._allDatasetsEmpty()) {
+                    this._hide();
+                } else {
+                    this.isOpen() && this._show();
+                }
+                return s._onCleared.apply(this, [].slice.call(arguments, 0));
+            },
+            setLanguageDirection: function setLanguageDirection(dir) {
+                this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl);
+                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));
+            },
+            _hide: function hide() {
+                this.$node.hide();
+            },
+            _show: function show() {
+                this.$node.css("display", "block");
+            }
+        });
+        return DefaultMenu;
+    }();
+    var Typeahead = function() {
+        "use strict";
+        function Typeahead(o, www) {
+            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;
+            o = o || {};
+            if (!o.input) {
+                $.error("missing input");
+            }
+            if (!o.menu) {
+                $.error("missing menu");
+            }
+            if (!o.eventBus) {
+                $.error("missing event bus");
+            }
+            www.mixin(this);
+            this.eventBus = o.eventBus;
+            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;
+            this.input = o.input;
+            this.menu = o.menu;
+            this.enabled = true;
+            this.active = false;
+            this.input.hasFocus() && this.activate();
+            this.dir = this.input.getLangDir();
+            this._hacks();
+            this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this);
+            onFocused = c(this, "activate", "open", "_onFocused");
+            onBlurred = c(this, "deactivate", "_onBlurred");
+            onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed");
+            onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed");
+            onEscKeyed = c(this, "isActive", "_onEscKeyed");
+            onUpKeyed = c(this, "isActive", "open", "_onUpKeyed");
+            onDownKeyed = c(this, "isActive", "open", "_onDownKeyed");
+            onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed");
+            onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed");
+            onQueryChanged = c(this, "_openIfActive", "_onQueryChanged");
+            onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged");
+            this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this);
+        }
+        _.mixin(Typeahead.prototype, {
+            _hacks: function hacks() {
+                var $input, $menu;
+                $input = this.input.$input || $("<div>");
+                $menu = this.menu.$node || $("<div>");
+                $input.on("blur.tt", function($e) {
+                    var active, isActive, hasActive;
+                    active = document.activeElement;
+                    isActive = $menu.is(active);
+                    hasActive = $menu.has(active).length > 0;
+                    if (_.isMsie() && (isActive || hasActive)) {
+                        $e.preventDefault();
+                        $e.stopImmediatePropagation();
+                        _.defer(function() {
+                            $input.focus();
+                        });
+                    }
+                });
+                $menu.on("mousedown.tt", function($e) {
+                    $e.preventDefault();
+                });
+            },
+            _onSelectableClicked: function onSelectableClicked(type, $el) {
+                this.select($el);
+            },
+            _onDatasetCleared: function onDatasetCleared() {
+                this._updateHint();
+            },
+            _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {
+                this._updateHint();
+                this.eventBus.trigger("render", suggestions, async, dataset);
+            },
+            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {
+                this.eventBus.trigger("asyncrequest", query, dataset);
+            },
+            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {
+                this.eventBus.trigger("asynccancel", query, dataset);
+            },
+            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {
+                this.eventBus.trigger("asyncreceive", query, dataset);
+            },
+            _onFocused: function onFocused() {
+                this._minLengthMet() && this.menu.update(this.input.getQuery());
+            },
+            _onBlurred: function onBlurred() {
+                if (this.input.hasQueryChangedSinceLastFocus()) {
+                    this.eventBus.trigger("change", this.input.getQuery());
+                }
+            },
+            _onEnterKeyed: function onEnterKeyed(type, $e) {
+                var $selectable;
+                if ($selectable = this.menu.getActiveSelectable()) {
+                    this.select($selectable) && $e.preventDefault();
+                }
+            },
+            _onTabKeyed: function onTabKeyed(type, $e) {
+                var $selectable;
+                if ($selectable = this.menu.getActiveSelectable()) {
+                    this.select($selectable) && $e.preventDefault();
+                } else if ($selectable = this.menu.getTopSelectable()) {
+                    this.autocomplete($selectable) && $e.preventDefault();
+                }
+            },
+            _onEscKeyed: function onEscKeyed() {
+                this.close();
+            },
+            _onUpKeyed: function onUpKeyed() {
+                this.moveCursor(-1);
+            },
+            _onDownKeyed: function onDownKeyed() {
+                this.moveCursor(+1);
+            },
+            _onLeftKeyed: function onLeftKeyed() {
+                if (this.dir === "rtl" && this.input.isCursorAtEnd()) {
+                    this.autocomplete(this.menu.getTopSelectable());
+                }
+            },
+            _onRightKeyed: function onRightKeyed() {
+                if (this.dir === "ltr" && this.input.isCursorAtEnd()) {
+                    this.autocomplete(this.menu.getTopSelectable());
+                }
+            },
+            _onQueryChanged: function onQueryChanged(e, query) {
+                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();
+            },
+            _onWhitespaceChanged: function onWhitespaceChanged() {
+                this._updateHint();
+            },
+            _onLangDirChanged: function onLangDirChanged(e, dir) {
+                if (this.dir !== dir) {
+                    this.dir = dir;
+                    this.menu.setLanguageDirection(dir);
+                }
+            },
+            _openIfActive: function openIfActive() {
+                this.isActive() && this.open();
+            },
+            _minLengthMet: function minLengthMet(query) {
+                query = _.isString(query) ? query : this.input.getQuery() || "";
+                return query.length >= this.minLength;
+            },
+            _updateHint: function updateHint() {
+                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;
+                $selectable = this.menu.getTopSelectable();
+                data = this.menu.getSelectableData($selectable);
+                val = this.input.getInputValue();
+                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {
+                    query = Input.normalizeQuery(val);
+                    escapedQuery = _.escapeRegExChars(query);
+                    frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i");
+                    match = frontMatchRegEx.exec(data.val);
+                    match && this.input.setHint(val + match[1]);
+                } else {
+                    this.input.clearHint();
+                }
+            },
+            isEnabled: function isEnabled() {
+                return this.enabled;
+            },
+            enable: function enable() {
+                this.enabled = true;
+            },
+            disable: function disable() {
+                this.enabled = false;
+            },
+            isActive: function isActive() {
+                return this.active;
+            },
+            activate: function activate() {
+                if (this.isActive()) {
+                    return true;
+                } else if (!this.isEnabled() || this.eventBus.before("active")) {
+                    return false;
+                } else {
+                    this.active = true;
+                    this.eventBus.trigger("active");
+                    return true;
+                }
+            },
+            deactivate: function deactivate() {
+                if (!this.isActive()) {
+                    return true;
+                } else if (this.eventBus.before("idle")) {
+                    return false;
+                } else {
+                    this.active = false;
+                    this.close();
+                    this.eventBus.trigger("idle");
+                    return true;
+                }
+            },
+            isOpen: function isOpen() {
+                return this.menu.isOpen();
+            },
+            open: function open() {
+                if (!this.isOpen() && !this.eventBus.before("open")) {
+                    this.menu.open();
+                    this._updateHint();
+                    this.eventBus.trigger("open");
+                }
+                return this.isOpen();
+            },
+            close: function close() {
+                if (this.isOpen() && !this.eventBus.before("close")) {
+                    this.menu.close();
+                    this.input.clearHint();
+                    this.input.resetInputValue();
+                    this.eventBus.trigger("close");
+                }
+                return !this.isOpen();
+            },
+            setVal: function setVal(val) {
+                this.input.setQuery(_.toStr(val));
+            },
+            getVal: function getVal() {
+                return this.input.getQuery();
+            },
+            select: function select($selectable) {
+                var data = this.menu.getSelectableData($selectable);
+                if (data && !this.eventBus.before("select", data.obj)) {
+                    this.input.setQuery(data.val, true);
+                    this.eventBus.trigger("select", data.obj);
+                    this.close();
+                    return true;
+                }
+                return false;
+            },
+            autocomplete: function autocomplete($selectable) {
+                var query, data, isValid;
+                query = this.input.getQuery();
+                data = this.menu.getSelectableData($selectable);
+                isValid = data && query !== data.val;
+                if (isValid && !this.eventBus.before("autocomplete", data.obj)) {
+                    this.input.setQuery(data.val);
+                    this.eventBus.trigger("autocomplete", data.obj);
+                    return true;
+                }
+                return false;
+            },
+            moveCursor: function moveCursor(delta) {
+                var query, $candidate, data, payload, cancelMove;
+                query = this.input.getQuery();
+                $candidate = this.menu.selectableRelativeToCursor(delta);
+                data = this.menu.getSelectableData($candidate);
+                payload = data ? data.obj : null;
+                cancelMove = this._minLengthMet() && this.menu.update(query);
+                if (!cancelMove && !this.eventBus.before("cursorchange", payload)) {
+                    this.menu.setCursor($candidate);
+                    if (data) {
+                        this.input.setInputValue(data.val);
+                    } else {
+                        this.input.resetInputValue();
+                        this._updateHint();
+                    }
+                    this.eventBus.trigger("cursorchange", payload);
+                    return true;
+                }
+                return false;
+            },
+            destroy: function destroy() {
+                this.input.destroy();
+                this.menu.destroy();
+            }
+        });
+        return Typeahead;
+        function c(ctx) {
+            var methods = [].slice.call(arguments, 1);
+            return function() {
+                var args = [].slice.call(arguments);
+                _.each(methods, function(method) {
+                    return ctx[method].apply(ctx, args);
+                });
+            };
+        }
+    }();
+    (function() {
+        "use strict";
+        var old, keys, methods;
+        old = $.fn.typeahead;
+        keys = {
+            www: "tt-www",
+            attrs: "tt-attrs",
+            typeahead: "tt-typeahead"
+        };
+        methods = {
+            initialize: function initialize(o, datasets) {
+                var www;
+                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);
+                o = o || {};
+                www = WWW(o.classNames);
+                return this.each(attach);
+                function attach() {
+                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;
+                    _.each(datasets, function(d) {
+                        d.highlight = !!o.highlight;
+                    });
+                    $input = $(this);
+                    $wrapper = $(www.html.wrapper);
+                    $hint = $elOrNull(o.hint);
+                    $menu = $elOrNull(o.menu);
+                    defaultHint = o.hint !== false && !$hint;
+                    defaultMenu = o.menu !== false && !$menu;
+                    defaultHint && ($hint = buildHintFromInput($input, www));
+                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));
+                    $hint && $hint.val("");
+                    $input = prepInput($input, www);
+                    if (defaultHint || defaultMenu) {
+                        $wrapper.css(www.css.wrapper);
+                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);
+                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);
+                    }
+                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;
+                    eventBus = new EventBus({
+                        el: $input
+                    });
+                    input = new Input({
+                        hint: $hint,
+                        input: $input
+                    }, www);
+                    menu = new MenuConstructor({
+                        node: $menu,
+                        datasets: datasets
+                    }, www);
+                    typeahead = new Typeahead({
+                        input: input,
+                        menu: menu,
+                        eventBus: eventBus,
+                        minLength: o.minLength
+                    }, www);
+                    $input.data(keys.www, www);
+                    $input.data(keys.typeahead, typeahead);
+                }
+            },
+            isEnabled: function isEnabled() {
+                var enabled;
+                ttEach(this.first(), function(t) {
+                    enabled = t.isEnabled();
+                });
+                return enabled;
+            },
+            enable: function enable() {
+                ttEach(this, function(t) {
+                    t.enable();
+                });
+                return this;
+            },
+            disable: function disable() {
+                ttEach(this, function(t) {
+                    t.disable();
+                });
+                return this;
+            },
+            isActive: function isActive() {
+                var active;
+                ttEach(this.first(), function(t) {
+                    active = t.isActive();
+                });
+                return active;
+            },
+            activate: function activate() {
+                ttEach(this, function(t) {
+                    t.activate();
+                });
+                return this;
+            },
+            deactivate: function deactivate() {
+                ttEach(this, function(t) {
+                    t.deactivate();
+                });
+                return this;
+            },
+            isOpen: function isOpen() {
+                var open;
+                ttEach(this.first(), function(t) {
+                    open = t.isOpen();
+                });
+                return open;
+            },
+            open: function open() {
+                ttEach(this, function(t) {
+                    t.open();
+                });
+                return this;
+            },
+            close: function close() {
+                ttEach(this, function(t) {
+                    t.close();
+                });
+                return this;
+            },
+            select: function select(el) {
+                var success = false, $el = $(el);
+                ttEach(this.first(), function(t) {
+                    success = t.select($el);
+                });
+                return success;
+            },
+            autocomplete: function autocomplete(el) {
+                var success = false, $el = $(el);
+                ttEach(this.first(), function(t) {
+                    success = t.autocomplete($el);
+                });
+                return success;
+            },
+            moveCursor: function moveCursoe(delta) {
+                var success = false;
+                ttEach(this.first(), function(t) {
+                    success = t.moveCursor(delta);
+                });
+                return success;
+            },
+            val: function val(newVal) {
+                var query;
+                if (!arguments.length) {
+                    ttEach(this.first(), function(t) {
+                        query = t.getVal();
+                    });
+                    return query;
+                } else {
+                    ttEach(this, function(t) {
+                        t.setVal(newVal);
+                    });
+                    return this;
+                }
+            },
+            destroy: function destroy() {
+                ttEach(this, function(typeahead, $input) {
+                    revert($input);
+                    typeahead.destroy();
+                });
+                return this;
+            }
+        };
+        $.fn.typeahead = function(method) {
+            if (methods[method]) {
+                return methods[method].apply(this, [].slice.call(arguments, 1));
+            } else {
+                return methods.initialize.apply(this, arguments);
+            }
+        };
+        $.fn.typeahead.noConflict = function noConflict() {
+            $.fn.typeahead = old;
+            return this;
+        };
+        function ttEach($els, fn) {
+            $els.each(function() {
+                var $input = $(this), typeahead;
+                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);
+            });
+        }
+        function buildHintFromInput($input, www) {
+            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop("readonly", true).removeAttr("id name placeholder required").attr({
+                autocomplete: "off",
+                spellcheck: "false",
+                tabindex: -1
+            });
+        }
+        function prepInput($input, www) {
+            $input.data(keys.attrs, {
+                dir: $input.attr("dir"),
+                autocomplete: $input.attr("autocomplete"),
+                spellcheck: $input.attr("spellcheck"),
+                style: $input.attr("style")
+            });
+            $input.addClass(www.classes.input).attr({
+                autocomplete: "off",
+                spellcheck: false
+            });
+            try {
+                !$input.attr("dir") && $input.attr("dir", "auto");
+            } catch (e) {}
+            return $input;
+        }
+        function getBackgroundStyles($el) {
+            return {
+                backgroundAttachment: $el.css("background-attachment"),
+                backgroundClip: $el.css("background-clip"),
+                backgroundColor: $el.css("background-color"),
+                backgroundImage: $el.css("background-image"),
+                backgroundOrigin: $el.css("background-origin"),
+                backgroundPosition: $el.css("background-position"),
+                backgroundRepeat: $el.css("background-repeat"),
+                backgroundSize: $el.css("background-size")
+            };
+        }
+        function revert($input) {
+            var www, $wrapper;
+            www = $input.data(keys.www);
+            $wrapper = $input.parent().filter(www.selectors.wrapper);
+            _.each($input.data(keys.attrs), function(val, key) {
+                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);
+            });
+            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);
+            if ($wrapper.length) {
+                $input.detach().insertAfter($wrapper);
+                $wrapper.remove();
+            }
+        }
+        function $elOrNull(obj) {
+            var isValid, $el;
+            isValid = _.isJQuery(obj) || _.isElement(obj);
+            $el = isValid ? $(obj).first() : [];
+            return $el.length ? $el : null;
+        }
+    })();
+});
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tablefilter.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tablefilter.py
index 9d15bcf..65454e1 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tablefilter.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tablefilter.py
@@ -286,7 +286,7 @@
     def to_json(self, queryset):
         data = {}
 
-        for filter_name, table_filter in self.__filters.iteritems():
+        for filter_name, table_filter in self.__filters.items():
             data[filter_name] = table_filter.to_json()
 
         return data
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tables.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tables.py
index 2cc2f4e..e2d23c1 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tables.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tables.py
@@ -22,7 +22,7 @@
 from toastergui.widgets import ToasterTable
 from orm.models import Recipe, ProjectLayer, Layer_Version, Machine, Project
 from orm.models import CustomImageRecipe, Package, Target, Build, LogMessage, Task
-from orm.models import CustomImagePackage
+from orm.models import CustomImagePackage, Package_DependencyManager
 from django.db.models import Q, Max, Sum, Count, When, Case, Value, IntegerField
 from django.conf.urls import url
 from django.core.urlresolvers import reverse, resolve
@@ -114,28 +114,37 @@
 
         git_url_template = '''
         <a href="{% url 'layerdetails' extra.pid data.id %}">
+        {% if data.layer.local_source_dir %}
+          <code>{{data.layer.local_source_dir}}</code>
+        {% else %}
           <code>{{data.layer.vcs_url}}</code>
         </a>
+        {% endif %}
         {% if data.get_vcs_link_url %}
         <a target="_blank" href="{{ data.get_vcs_link_url }}">
-           <i class="icon-share get-info"></i>
+           <span class="glyphicon glyphicon-new-window"></span>
         </a>
         {% endif %}
         '''
 
-        self.add_column(title="Git repository URL",
-                        help_text="The Git repository for the layer source code",
+        self.add_column(title="Layer source code location",
+                        help_text="A Git repository or an absolute path to a directory",
                         hidden=True,
                         static_data_name="layer__vcs_url",
                         static_data_template=git_url_template)
 
         git_dir_template = '''
+        {% if data.layer.local_source_dir %}
+        <span class="text-muted">Not applicable</span>
+        <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{data.layer.name}} is not in a Git repository, so there is no subdirectory associated with it"> </span>
+        {% else %}
         <a href="{% url 'layerdetails' extra.pid data.id %}">
          <code>{{data.dirpath}}</code>
         </a>
+        {% endif %}
         {% if data.dirpath and data.get_vcs_dirpath_link_url %}
         <a target="_blank" href="{{ data.get_vcs_dirpath_link_url }}">
-          <i class="icon-share get-info"></i>
+          <span class="glyphicon glyphicon-new-window"></span>
         </a>
         {% endif %}'''
 
@@ -146,16 +155,14 @@
                         static_data_template=git_dir_template)
 
         revision_template =  '''
-        {% load projecttags  %}
-        {% with vcs_ref=data.get_vcs_reference %}
-        {% if vcs_ref|is_shaid %}
-        <a class="btn" data-content="<ul class='unstyled'> <li>{{vcs_ref}}</li> </ul>">
-        {{vcs_ref|truncatechars:10}}
-        </a>
+        {% if data.layer.local_source_dir %}
+        <span class="text-muted">Not applicable</span>
+        <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{data.layer.name}} is not in a Git repository, so there is no revision associated with it"> </span>
         {% else %}
-        {{vcs_ref}}
-        {% endif %}
+        {% with vcs_ref=data.get_vcs_reference %}
+        {% include 'snippets/gitrev_popover.html' %}
         {% endwith %}
+        {% endif %}
         '''
 
         self.add_column(title="Git revision",
@@ -166,8 +173,8 @@
         deps_template = '''
         {% with ods=data.dependencies.all%}
         {% if ods.count %}
-            <a class="btn" title="<a href='{% url "layerdetails" extra.pid data.id %}'>{{data.layer.name}}</a> dependencies"
-        data-content="<ul class='unstyled'>
+            <a class="btn btn-default" title="<a href='{% url "layerdetails" extra.pid data.id %}'>{{data.layer.name}}</a> dependencies"
+        data-content="<ul class='list-unstyled'>
         {% for i in ods%}
         <li><a href='{% url "layerdetails" extra.pid i.depends_on.pk %}'>{{i.depends_on.layer.name}}</a></li>
         {% endfor %}
@@ -190,24 +197,13 @@
                         static_data_name="add-del-layers",
                         static_data_template='{% include "layer_btn.html" %}')
 
-        project = Project.objects.get(pk=kwargs['pid'])
-        self.add_column(title="LayerDetailsUrl",
-                        displayable = False,
-                        field_name="layerdetailurl",
-                        computation = lambda x: reverse('layerdetails', args=(project.id, x.id)))
-
-        self.add_column(title="name",
-                        displayable = False,
-                        field_name="name",
-                        computation = lambda x: x.layer.name)
-
 
 class MachinesTable(ToasterTable):
     """Table of Machines in Toaster"""
 
     def __init__(self, *args, **kwargs):
         super(MachinesTable, self).__init__(*args, **kwargs)
-        self.empty_state = "No machines maybe you need to do a build?"
+        self.empty_state = "Toaster has no machine information for this project. Sadly, 			   machine information cannot be obtained from builds, so this 				  page will remain empty."
         self.title = "Compatible machines"
         self.default_orderby = "name"
 
@@ -275,7 +271,7 @@
                         field_name="layer_version__get_vcs_reference")
 
         machine_file_template = '''<code>conf/machine/{{data.name}}.conf</code>
-        <a href="{{data.get_vcs_machine_file_link_url}}" target="_blank"><i class="icon-share get-info"></i></a>'''
+        <a href="{{data.get_vcs_machine_file_link_url}}" target="_blank"><span class="glyphicon glyphicon-new-window"></i></a>'''
 
         self.add_column(title="Machine file",
                         hidden=True,
@@ -318,7 +314,11 @@
         self.add_column(title="Description",
                         field_name="description")
 
-        select_btn_template = '<a href="{% url "project" extra.pid %}?setMachine={{data.name}}" class="btn btn-block select-machine-btn" {% if extra.in_prj == 0%}disabled="disabled"{%endif%}>Select machine</a>'
+        select_btn_template = '''
+        <a href="{% url "project" extra.pid %}?setMachine={{data.name}}"
+        class="btn btn-default btn-block select-machine-btn
+        {% if extra.in_prj == 0%}disabled{%endif%}">Select machine</a>
+        '''
 
         self.add_column(title="Select machine",
                         static_data_name="add-del-layers",
@@ -330,10 +330,10 @@
 
     def __init__(self, *args, **kwargs):
         super(RecipesTable, self).__init__(*args, **kwargs)
-        self.empty_state = "Toaster has no recipe information. To generate recipe information you can configure a layer source then run a build."
+        self.empty_state = "Toaster has no recipe information. To generate recipe information you need to run a build."
 
     build_col = { 'title' : "Build",
-            'help_text' : "Add or delete recipes to and from your project",
+            'help_text' : "Before building a recipe, you might need to add the corresponding layer to your project",
             'hideable' : False,
             'filter_name' : "in_current_project",
             'static_data_name' : "add-del-layers",
@@ -344,8 +344,7 @@
         context = super(RecipesTable, self).get_context_data(**kwargs)
 
         context['project'] = project
-
-        context['projectlayers'] = map(lambda prjlayer: prjlayer.layercommit.id, ProjectLayer.objects.filter(project=context['project']))
+        context['projectlayers'] = [player.layercommit.id for player in ProjectLayer.objects.filter(project=context['project'])]
 
         return context
 
@@ -395,7 +394,7 @@
         recipe_file_template = '''
         <code>{{data.file_path}}</code>
         <a href="{{data.get_vcs_recipe_file_link_url}}" target="_blank">
-          <i class="icon-share get-info"></i>
+          <span class="glyphicon glyphicon-new-window"></i>
         </a>
          '''
 
@@ -428,9 +427,19 @@
                         orderable=True,
                         field_name="license")
 
+        revision_link_template = '''
+        {% if data.layer_version.layer.local_source_dir %}
+        <span class="text-muted">Not applicable</span>
+        <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{data.layer_version.layer.name}} is not in a Git repository, so there is no revision associated with it"> </span>
+        {% else %}
+        {{data.layer_version.get_vcs_reference}}
+        {% endif %}
+        '''
+
         self.add_column(title="Git revision",
                         hidden=True,
-                        field_name="layer_version__get_vcs_reference")
+                        static_data_name="layer_version__get_vcs_reference",
+                        static_data_template=revision_link_template)
 
 
 class LayerRecipesTable(RecipesTable):
@@ -466,7 +475,11 @@
         self.add_column(title="Description",
                         field_name="get_description_or_summary")
 
-        build_recipe_template ='<button class="btn btn-block build-recipe-btn" data-recipe-name="{{data.name}}" {%if extra.in_prj == 0 %}disabled="disabled"{%endif%}>Build recipe</button>'
+        build_recipe_template = '''
+        <a class="btn btn-default btn-block build-recipe-btn
+        {% if extra.in_prj == 0 %}disabled{% endif %}"
+        data-recipe-name="{{data.name}}">Build recipe</a>
+        '''
 
         self.add_column(title="Build recipe",
                         static_data_name="add-del-layers",
@@ -481,7 +494,16 @@
 
     def get_context_data(self, **kwargs):
         context = super(CustomImagesTable, self).get_context_data(**kwargs)
+
+        empty_state_template = '''
+        You have not created any custom images yet.
+        <a href="{% url 'newcustomimage' data.pid %}">
+        Create your first custom image</a>
+        '''
+        context['empty_state'] = self.render_static_data(empty_state_template,
+                                                         kwargs)
         project = Project.objects.get(pk=kwargs['pid'])
+
         # TODO put project into the ToasterTable base class
         context['project'] = project
         return context
@@ -507,29 +529,31 @@
                         static_data_template=name_link_template)
 
         recipe_file_template = '''
+        {% if data.get_base_recipe_file %}
         <code>{{data.name}}_{{data.version}}.bb</code>
-        <a href="{% url 'customrecipedownload' extra.pid data.pk %}">
-        <i class="icon-download-alt" data-original-title="Download recipe
-        file"></i>
-        </a>'''
+        <a href="{% url 'customrecipedownload' extra.pid data.pk %}"
+        class="glyphicon glyphicon-download-alt get-help" title="Download recipe file"></a>
+        {% endif %}'''
 
         self.add_column(title="Recipe file",
                         static_data_name='recipe_file_download',
                         static_data_template=recipe_file_template)
 
         approx_packages_template = '''
+        {% if data.get_all_packages.count > 0 %}
         <a href="{% url 'customrecipe' extra.pid data.id %}">
           {{data.get_all_packages.count}}
-        </a>'''
+        </a>
+        {% endif %}'''
 
-        self.add_column(title="Approx packages",
+        self.add_column(title="Packages",
                         static_data_name='approx_packages',
                         static_data_template=approx_packages_template)
 
 
         build_btn_template = '''
         <button data-recipe-name="{{data.name}}"
-        class="btn btn-block build-recipe-btn" style="margin-top: 5px;" >
+        class="btn btn-default btn-block build-recipe-btn">
         Build
         </button>'''
 
@@ -695,6 +719,7 @@
 
     def setup_queryset(self, *args, **kwargs):
         recipe = Recipe.objects.get(pk=kwargs['recipe_id'])
+        self.static_context_extra['target_name'] = recipe.name
 
         self.queryset = self.create_package_list(recipe, kwargs['pid'])
         self.queryset = self.queryset.order_by('name')
@@ -711,13 +736,15 @@
 
         self.add_column(title="Approx Size",
                         orderable=True,
+                        field_name="size",
                         static_data_name="size",
                         static_data_template="{% load projecttags %} \
                         {{data.size|filtered_filesizeformat}}")
 
         self.add_column(title="License",
                         field_name="license",
-                        orderable=True)
+                        orderable=True,
+                        hidden=True)
 
 
         self.add_column(title="Dependencies",
@@ -764,7 +791,19 @@
 
         self.queryset = self.queryset.order_by('name')
 
+        # This target is the target used to work out which group of dependences
+        # to display, if we've built the custom image we use it otherwise we
+        # can use the based recipe instead
+        if prj.build_set.filter(target__target=self.cust_recipe.name).count()\
+           > 0:
+            self.static_context_extra['target_name'] = self.cust_recipe.name
+        else:
+            self.static_context_extra['target_name'] =\
+                    Package_DependencyManager.TARGET_LATEST
+
         self.static_context_extra['recipe_id'] = kwargs['custrecipeid']
+
+
         self.static_context_extra['current_packages'] = \
                 current_packages.values_list('pk', flat=True)
 
@@ -860,26 +899,22 @@
         last_activity_on_template = '''
         {% load project_url_tag %}
         <span data-project-field="updated">
-          <a href="{% project_url data %}">
             {{data.updated | date:"d/m/y H:i"}}
-          </a>
         </span>
         '''
 
         release_template = '''
         <span data-project-field="release">
           {% if data.release %}
-            <a href="{% url 'project' data.id %}#project-details">
-                {{data.release.name}}
-            </a>
+            {{data.release.name}}
           {% elif data.is_default %}
-            <span class="muted">Not applicable</span>
-            <i class="icon-question-sign get-help hover-help"
-               data-original-title="This project does not have a release set.
+            <span class="text-muted">Not applicable</span>
+            <span class="glyphicon glyphicon-question-sign get-help hover-help"
+               title="This project does not have a release set.
                It simply collects information about the builds you start from
                the command line while Toaster is running"
                style="visibility: hidden;">
-            </i>
+            </span>
           {% else %}
             No release available
           {% endif %}
@@ -889,16 +924,14 @@
         machine_template = '''
         <span data-project-field="machine">
           {% if data.is_default %}
-            <span class="muted">Not applicable</span>
-            <i class="icon-question-sign get-help hover-help"
-               data-original-title="This project does not have a machine
+            <span class="text-muted">Not applicable</span>
+            <span class="glyphicon glyphicon-question-sign get-help hover-help"
+               title="This project does not have a machine
                set. It simply collects information about the builds you
                start from the command line while Toaster is running"
-               style="visibility: hidden;"></i>
+               style="visibility: hidden;"></span>
           {% else %}
-            <a href="{% url 'project' data.id %}#machine-distro">
-              {{data.get_current_machine_name}}
-            </a>
+            {{data.get_current_machine_name}}
           {% endif %}
         </span>
         '''
@@ -908,20 +941,16 @@
           <a href="{% url 'projectbuilds' data.id %}">
             {{data.get_number_of_builds}}
           </a>
-        {% else %}
-          <span class="muted">0</span>
         {% endif %}
         '''
 
         last_build_outcome_template = '''
         {% if data.get_number_of_builds > 0 %}
-          <a href="{% url 'builddashboard' data.get_last_build_id %}">
-            {% if data.get_last_outcome == extra.Build.SUCCEEDED %}
-              <i class="icon-ok-sign success"></i>
-            {% elif data.get_last_outcome == extra.Build.FAILED %}
-              <i class="icon-minus-sign error"></i>
-            {% endif %}
-          </a>
+          {% if data.get_last_outcome == extra.Build.SUCCEEDED %}
+            <span class="glyphicon glyphicon-ok-circle"></span>
+          {% elif data.get_last_outcome == extra.Build.FAILED %}
+            <span class="glyphicon glyphicon-minus-sign"></span>
+          {% endif %}
         {% endif %}
         '''
 
@@ -935,7 +964,7 @@
 
         errors_template = '''
         {% if data.get_number_of_builds > 0 and data.get_last_errors > 0 %}
-          <a class="errors.count error"
+          <a class="errors.count text-danger"
              href="{% url "builddashboard" data.get_last_build_id %}#errors">
             {{data.get_last_errors}} error{{data.get_last_errors | pluralize}}
           </a>
@@ -944,7 +973,7 @@
 
         warnings_template = '''
         {% if data.get_number_of_builds > 0 and data.get_last_warnings > 0 %}
-          <a class="warnings.count warning"
+          <a class="warnings.count text-warning"
              href="{% url "builddashboard" data.get_last_build_id %}#warnings">
             {{data.get_last_warnings}} warning{{data.get_last_warnings | pluralize}}
           </a>
@@ -953,9 +982,7 @@
 
         image_files_template = '''
         {% if data.get_number_of_builds > 0 and data.get_last_outcome == extra.Build.SUCCEEDED %}
-          <a href="{% url "builddashboard" data.get_last_build_id %}#images">
-            {{data.get_last_build_extensions}}
-          </a>
+          {{data.get_last_build_extensions}}
         {% endif %}
         '''
 
@@ -991,7 +1018,7 @@
                         static_data_name='machine',
                         static_data_template=machine_template)
 
-        self.add_column(title='Number of builds',
+        self.add_column(title='Builds',
                         help_text='The number of builds which have been run \
                                    for the project',
                         hideable=False,
@@ -1121,19 +1148,17 @@
 
     def setup_columns(self, *args, **kwargs):
         outcome_template = '''
-        <a href="{% url "builddashboard" data.id %}">
-            {% if data.outcome == data.SUCCEEDED %}
-                <i class="icon-ok-sign success"></i>
-            {% elif data.outcome == data.FAILED %}
-                <i class="icon-minus-sign error"></i>
-            {% endif %}
-        </a>
+        {% if data.outcome == data.SUCCEEDED %}
+            <span class="glyphicon glyphicon-ok-circle"></span>
+        {% elif data.outcome == data.FAILED %}
+            <span class="glyphicon glyphicon-minus-sign"></span>
+        {% endif %}
 
         {% if data.cooker_log_path %}
             &nbsp;
             <a href="{% url "build_artifact" data.id "cookerlog" data.id %}">
-               <i class="icon-download-alt get-help"
-               data-original-title="Download build log"></i>
+               <span class="glyphicon glyphicon-download-alt get-help"
+               data-original-title="Download build log"></span>
             </a>
         {% endif %}
         '''
@@ -1148,45 +1173,39 @@
         '''
 
         machine_template = '''
-        <a href="{% url "builddashboard" data.id %}">
-            {{data.machine}}
-        </a>
+        {{data.machine}}
         '''
 
         started_on_template = '''
-        <a href="{% url "builddashboard" data.id %}">
-            {{data.started_on | date:"d/m/y H:i"}}
-        </a>
+        {{data.started_on | date:"d/m/y H:i"}}
         '''
 
         completed_on_template = '''
-        <a href="{% url "builddashboard" data.id %}">
-            {{data.completed_on | date:"d/m/y H:i"}}
-        </a>
+        {{data.completed_on | date:"d/m/y H:i"}}
         '''
 
         failed_tasks_template = '''
         {% if data.failed_tasks.count == 1 %}
-            <a href="{% url "task" data.id data.failed_tasks.0.id %}">
-                <span class="error">
-                    {{data.failed_tasks.0.recipe.name}}.{{data.failed_tasks.0.task_name}}
+            <a class="text-danger" href="{% url "task" data.id data.failed_tasks.0.id %}">
+                <span>
+                    {{data.failed_tasks.0.recipe.name}} {{data.failed_tasks.0.task_name}}
                 </span>
             </a>
             <a href="{% url "build_artifact" data.id "tasklogfile" data.failed_tasks.0.id %}">
-                <i class="icon-download-alt"
-                   data-original-title="Download task log file">
-                </i>
+                <span class="glyphicon glyphicon-download-alt get-help"
+                   title="Download task log file">
+                </span>
             </a>
         {% elif data.failed_tasks.count > 1 %}
             <a href="{% url "tasks" data.id %}?filter=outcome%3A{{extra.Task.OUTCOME_FAILED}}">
-                <span class="error">{{data.failed_tasks.count}} tasks</span>
+                <span class="text-danger">{{data.failed_tasks.count}} tasks</span>
             </a>
         {% endif %}
         '''
 
         errors_template = '''
         {% if data.errors_no %}
-            <a class="errors.count error" href="{% url "builddashboard" data.id %}#errors">
+            <a class="errors.count text-danger" href="{% url "builddashboard" data.id %}#errors">
                 {{data.errors_no}} error{{data.errors_no|pluralize}}
             </a>
         {% endif %}
@@ -1194,7 +1213,7 @@
 
         warnings_template = '''
         {% if data.warnings_no %}
-            <a class="warnings.count warning" href="{% url "builddashboard" data.id %}#warnings">
+            <a class="warnings.count text-warning" href="{% url "builddashboard" data.id %}#warnings">
                 {{data.warnings_no}} warning{{data.warnings_no|pluralize}}
             </a>
         {% endif %}
@@ -1202,16 +1221,18 @@
 
         time_template = '''
         {% load projecttags %}
-        <a href="{% url "buildtime" data.id %}">
+        {% if data.outcome == extra.Build.SUCCEEDED %}
+            <a href="{% url "buildtime" data.id %}">
+                {{data.timespent_seconds | sectohms}}
+            </a>
+        {% else %}
             {{data.timespent_seconds | sectohms}}
-        </a>
+        {% endif %}
         '''
 
         image_files_template = '''
         {% if data.outcome == extra.Build.SUCCEEDED %}
-          <a href="{% url "builddashboard" data.id %}#images">
             {{data.get_image_file_extensions}}
-          </a>
         {% endif %}
         '''
 
@@ -1429,10 +1450,10 @@
             {{data.project.name}}
         </a>
         {% if data.project.is_default %}
-            <i class="icon-question-sign get-help hover-help" title=""
+            <span class="glyphicon glyphicon-question-sign get-help hover-help" title=""
                data-original-title="This project shows information about
                the builds you start from the command line while Toaster is
-               running" style="visibility: hidden;"></i>
+               running" style="visibility: hidden;"></span>
         {% endif %}
         '''
 
@@ -1482,7 +1503,6 @@
         """
         self.project_id = kwargs['pid']
         super(ProjectBuildsTable, self).setup_queryset(*args, **kwargs)
-
         project = Project.objects.get(pk=self.project_id)
         self.queryset = self.queryset.filter(project=project)
 
@@ -1496,8 +1516,23 @@
         self.project_id = kwargs['pid']
         context = super(ProjectBuildsTable, self).get_context_data(**kwargs)
 
+        empty_state_template = '''
+        This project has no builds.
+        <a href="{% url 'projectimagerecipes' data.pid %}">
+        Choose a recipe to build</a>
+        '''
+        context['empty_state'] = self.render_static_data(empty_state_template,
+                                                         kwargs)
+
         project = Project.objects.get(pk=self.project_id)
         context['mru'] = Build.get_recent(project)
         context['project'] = project
 
+        self.setup_queryset(**kwargs)
+        if self.queryset.count() == 0 and \
+           project.build_set.filter(outcome=Build.IN_PROGRESS).count() > 0:
+            context['build_in_progress_none_completed'] = True
+        else:
+            context['build_in_progress_none_completed'] = False
+
         return context
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/base.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/base.html
index 210cf33..496dd6e 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/base.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/base.html
@@ -8,9 +8,8 @@
       {% block title %} Toaster {% endblock %}
     </title>
     <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}" type="text/css"/>
-    <link rel="stylesheet" href="{% static 'css/bootstrap-responsive.min.css' %}" type='text/css'/>
+    <!--link rel="stylesheet" href="{% static 'css/bootstrap-theme.css' %}" type="text/css"/-->
     <link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}" type='text/css'/>
-    <link rel="stylesheet" href="{% static 'css/prettify.css' %}" type='text/css'/>
     <link rel="stylesheet" href="{% static 'css/default.css' %}" type='text/css'/>
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -21,6 +20,10 @@
     </script>
     <script src="{% static 'js/bootstrap.min.js' %}">
     </script>
+    <script src="{% static 'js/typeahead.jquery.js' %}">
+    </script>
+    <script src="{% static 'js/jsrender.min.js' %}">
+    </script>
     <script src="{% static 'js/prettify.js' %}">
     </script>
     <script src="{% static 'js/libtoaster.js' %}">
@@ -31,6 +34,8 @@
     </script>
     {% endif %}
     <script>
+      $.views.settings.delimiters("<%", "%>");
+
       libtoaster.ctx = {
         jsUrl : "{% static 'js/' %}",
         htmlUrl : "{% static 'html/' %}",
@@ -39,6 +44,7 @@
         {% if project.id %}
         projectId : {{project.id}},
         projectPageUrl : {% url 'project' project.id as purl %}{{purl|json}},
+        xhrProjectUrl : {% url 'xhr_project' project.id as pxurl %}{{pxurl|json}},
         projectName : {{project.name|json}},
         recipesTypeAheadUrl: {% url 'xhr_recipestypeahead' project.id as paturl%}{{paturl|json}},
         layersTypeAheadUrl: {% url 'xhr_layerstypeahead' project.id as paturl%}{{paturl|json}},
@@ -47,7 +53,9 @@
         xhrCustomRecipeUrl : "{% url 'xhr_customrecipe' %}",
         projectId : {{project.id}},
         xhrBuildRequestUrl: "{% url 'xhr_buildrequest' project.id %}",
+        mostRecentBuildsUrl: "{% url 'most_recent_builds' %}?project_id={{project.id}}",
         {% else %}
+        mostRecentBuildsUrl: "{% url 'most_recent_builds' %}",
         projectId : undefined,
         projectPageUrl : undefined,
         projectName : undefined,
@@ -58,69 +66,72 @@
     {% endblock %}
   </head>
 
-  <body style="height: 100%">
+  <body>
 
     {% csrf_token %}
-    <div id="loading-notification" class="alert lead text-center" style="display:none">
+    <div id="loading-notification" class="alert alert-warning lead text-center" style="display:none">
       Loading <i class="fa-pulse icon-spinner"></i>
     </div>
 
-    <div id="change-notification" class="alert lead alert-info" style="display:none">
-      <button type="button" class="close" id="hide-alert">&times;</button>
+    <div id="change-notification" class="alert alert-info alert-dismissible change-notification" style="display:none">
+      <button type="button" class="close" id="hide-alert" data-toggle="alert">&times;</button>
       <span id="change-notification-msg"></span>
     </div>
 
-    <div class="navbar navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container-fluid">
-          <a class="brand logo" href="#"><img src="{% static 'img/logo.png' %}" class="" alt="Yocto logo project"/></a>
-          <span class="brand">
-            <a href="/">Toaster</a>
+    <nav class="navbar navbar-default navbar-fixed-top">
+      <div class="container-fluid">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#global-nav" aria-expanded="false">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <div class="toaster-navbar-brand">
+            <a href="/">
+              <img class="logo" src="{% static 'img/logo.png' %}" class="" alt="Yocto logo project"/>
+            </a>
+            <a class="brand" href="/">Toaster</a>
             {% if DEBUG %}
-            <i class="icon-info-sign" title="<strong>Toaster version information</strong>" data-content="<dl><dt>Git branch</dt><dd>{{TOASTER_BRANCH}}</dd><dt>Git revision</dt><dd>{{TOASTER_REVISION}}</dd></dl>"></i>
+            <span class="glyphicon glyphicon-info-sign" title="<strong>Toaster version information</strong>" data-content="<dl><dt>Git branch</dt><dd>{{TOASTER_BRANCH}}</dd><dt>Git revision</dt><dd>{{TOASTER_REVISION}}</dd></dl>"></i>
             {% endif %}
-          </span>
-          {% if request.resolver_match.url_name != 'landing' and request.resolver_match.url_name != 'newproject' %}
-          <ul class="nav">
-            <li {% if request.resolver_match.url_name == 'all-builds' %}
-                class="active"
-                {% endif %}>
+          </div>
+        </div>
+        <div class="collapse navbar-collapse" id="global-nav">
+            <ul class="nav navbar-nav">
+            {% if request.resolver_match.url_name != 'landing' and request.resolver_match.url_name != 'newproject' %}
+              <li {% if request.resolver_match.url_name == 'all-builds' %}
+              class="active"
+              {% endif %}>
               <a href="{% url 'all-builds' %}">
-                <i class="icon-tasks"></i>
+                <i class="glyphicon glyphicon-tasks"></i>
                 All builds
               </a>
-            </li>
-            <li {% if request.resolver_match.url_name == 'all-projects'  %}
-                class="active"
-                {% endif %}>
+              </li>
+              <li {% if request.resolver_match.url_name == 'all-projects'  %}
+              class="active"
+              {% endif %}>
               <a href="{% url 'all-projects' %}">
                 <i class="icon-folder-open"></i>
                 All projects
               </a>
-            </li>
-          </ul>
-          {% endif %}
-          <ul class="nav pull-right">
-            <li>
+              </li>
+            {% endif %}
+              <li>
               <a target="_blank" href="http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html">
-                <i class="icon-book"></i>
-                Manual
+                <i class="glyphicon glyphicon-book"></i>
+                Documentation
               </a>
-            </li>
-          </ul>
-          <span class="pull-right divider-vertical"></span>
-          <div class="btn-group pull-right">
-            <a class="btn" id="new-project-button" href="{% url 'newproject' %}">New project</a>
+              </li>
+            </ul>
+            <a class="btn btn-default navbar-btn navbar-right" id="new-project-button" href="{% url 'newproject' %}">New project</a>
           </div>
-        </div>
       </div>
-    </div>
+    </nav>
 
-    <div class="container-fluid top-padded">
-      <div class="row-fluid">
-        {% block pagecontent %}
-        {% endblock %}
-      </div>
+    <div class="container-fluid">
+      {% block pagecontent %}
+      {% endblock %}
     </div>
   </body>
 </html>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html
index a62e0b1..4d50667 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html
@@ -3,30 +3,29 @@
 {% load humanize %}
 {% block pagecontent %}
 
-<div class="row-fluid">
-<!-- Breadcrumbs -->
-    <div class="section">
-        <ul class="breadcrumb" id="breadcrumb">
-            <li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
-            {% if not build.project.is_default %}
-                <li><a href="{% url 'projectbuilds' build.project.id %}">Builds</a></li>
-            {% endif %}
-            <li><a href="{%url 'builddashboard' build.pk%}">{{build.get_sorted_target_list.0.target}} {%if build.target_set.all.count > 1%}(+{{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}})</a></li>
-            {% block localbreadcrumb %}{% endblock %}
-        </ul>
-        <script>
-        $( function () {
-            $('#breadcrumb > li').append('<span class="divider">&rarr;</span>');
-            $('#breadcrumb > li:last').addClass("active");
-            $('#breadcrumb > li:last > span').remove();
-        });
-        </script>
-    </div> <!--section-->
-
-        <!-- Begin container -->
-        {% block pagedetailinfomain %}{% endblock %}
-        <!-- End container -->
-
+<div class="row">
+  <!-- Breadcrumbs -->
+	<div class="col-md-12">
+		<ul class="breadcrumb" id="breadcrumb">
+			<li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
+			{% if not build.project.is_default %}
+			<li><a href="{% url 'projectbuilds' build.project.id %}">Builds</a></li>
+			{% endif %}
+			<li><a href="{%url 'builddashboard' build.pk%}">{{build.get_sorted_target_list.0.target}} {%if build.target_set.all.count > 1%}(+{{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}})</a></li>
+			{% block localbreadcrumb %}{% endblock %}
+		</ul>
+		<script>
+$( function () {
+	$('#breadcrumb > li').append('<span class="divider">&rarr;</span>');
+	$('#breadcrumb > li:last').addClass("active");
+	$('#breadcrumb > li:last > span').remove();
+	});
+		</script>
+	</div>
 </div>
 
+<!-- Begin container -->
+{% block pagedetailinfomain %}{% endblock %}
+<!-- End container -->
+
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuildpage.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuildpage.html
index 0d8c882..f5eee96 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuildpage.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basebuildpage.html
@@ -3,9 +3,95 @@
 {% load project_url_tag %}
 {% load objects_to_dictionaries_filter %}
 {% load humanize %}
+{% load field_values_filter %}
 {% block pagecontent %}
+
+ <script>
+  var configVarUrl = "{% url 'configvars' build.id %}";
+
+  $(document).ready(function(){
+
+    $("#delete-build-confirm").click(function(){
+      libtoaster.disableAjaxLoadingTimer();
+      $(this).find('[data-role="submit-state"]').hide();
+      $(this).find('[data-role="loading-state"]').show();
+      $(this).attr("disabled", "disabled");
+
+      /* Make the modal non cancelable while delete is in progress */
+      $('#delete-build-modal button[data-dismiss="modal"]').hide();
+
+      $.ajax({
+          type: 'DELETE',
+          url: "{% url 'xhr_build' build.id %}",
+          headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+          success: function (data) {
+            if (data.error !== "ok") {
+              console.warn(data.error);
+            } else {
+              libtoaster.setNotification("build-deleted",
+                $("#deleted-build-message").html());
+             window.location.replace(data.gotoUrl);
+            }
+          },
+          error: function (data) {
+            console.warn(data);
+        }
+      });
+    });
+
+
+    $('#breadcrumb > li').append('<span class="divider">&rarr;</span>');
+    $('#breadcrumb > li:last').addClass("active");
+    $('#breadcrumb > li:last > span').remove();
+
+    $("#build-menu li a").each(function(){
+      /* Set the page active state in the Build menu */
+      var currentUrl = window.location.href.split('?')[0];
+      if (currentUrl === $(this).prop("href")){
+        $(this).parent().addClass("active");
+      } else {
+      /* Special case the configvar as this is part of configuration
+       * page but is a separate url
+       */
+      if (window.location.pathname === configVarUrl){
+          $("#menu-configuration").addClass("active");
+        } else {
+          $(this).parent().removeClass("active");
+        }
+      }
+    });
+  });
+ </script>
+
+<span style="display:none" id="deleted-build-message">
+  You have deleted 1 build: <strong>{{build.get_sorted_target_list|field_values:"target"|join:", "}} {{build.machine}}</strong> completed on <strong>{{build.completed_on|date:"d/m/y H:i"}}</strong>
+</span>
+
+<div class="modal fade" tabindex="-1" role="dialog" id="delete-build-modal" style="display: none;" data-backdrop="static" data-keyboard="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-body">
+        <p>Are you sure you want to delete the build <strong>{{build.get_sorted_target_list|field_values:"target"|join:", "}} {{build.machine}}</strong> completed on <strong>{{build.completed_on|date:"d/m/y H:i"}}</strong>?</p>
+      </div>
+      <div class="modal-footer">
+        <button id="delete-build-confirm" class="btn btn-primary btn-large">
+          <span data-role="submit-state">Delete build</span>
+          <span data-role="loading-state" style="display:none">
+            <span class="fa-pulse">
+              <i class="icon-spinner"></i>
+            </span>
+              &nbsp;Deleting build...
+          </span>
+        </button>
+        <button type="button" class="btn btn-link" data-dismiss="modal">Cancel</button>
+      </div>
+    </div><!-- /.modal-content -->
+  </div><!-- /.modal-dialog -->
+</div> <!-- / modal -->
+
+<div class="row">
   <!-- breadcrumbs -->
-  <div class="section">
+  <div class="col-md-12">
     <ul class="breadcrumb" id="breadcrumb">
       <li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
       {% if not build.project.is_default %}
@@ -20,73 +106,56 @@
       </li>
       {% block localbreadcrumb %}{% endblock %}
     </ul>
-    <script>
-      $( function () {
-        $('#breadcrumb > li').append('<span class="divider">&rarr;</span>');
-        $('#breadcrumb > li:last').addClass("active");
-        $('#breadcrumb > li:last > span').remove();
-      });
-    </script>
   </div>
+</div>
 
-  <div class="row-fluid">
-    <!-- begin left sidebar container -->
-    <div id="nav" class="span2">
-      <ul class="nav nav-list well">
-        <li
-          {% if request.resolver_match.url_name == 'builddashboard'  %}
-            class="active"
-          {% endif %} >
-          <a class="nav-parent" href="{% url 'builddashboard' build.pk %}">Build summary</a>
-        </li>
-        {% if build.target_set.all.0.is_image and build.outcome == 0 %}
-          <li class="nav-header">Images</li>
-          {% block nav-target %}
-            {% for t in build.get_sorted_target_list %}
-              <li><a href="{% url 'target' build.pk t.pk %}">{{t.target}}</a><li>
-            {% endfor %}
-          {% endblock %}
-        {% endif %}
-        <li class="nav-header">Build</li>
-        {% block nav-configuration %}
-          <li><a href="{% url 'configuration' build.pk %}">Configuration</a></li>
-        {% endblock %}
-        {% block nav-tasks %}
-          <li><a href="{% url 'tasks' build.pk %}">Tasks</a></li>
-        {% endblock %}
-        {% block nav-recipes %}
-          <li><a href="{% url 'recipes' build.pk %}">Recipes</a></li>
-        {% endblock %}
-        {% block nav-packages %}
-          <li><a href="{% url 'packages' build.pk %}">Packages</a></li>
-        {% endblock %}
-          <li class="nav-header">Performance</li>
-        {% block nav-buildtime %}
-          <li><a href="{% url 'buildtime' build.pk %}">Time</a></li>
-        {% endblock %}
-        {% block nav-cputime %}
-          <li><a href="{% url 'cputime' build.pk %}">CPU usage</a></li>
-        {% endblock %}
-        {% block nav-diskio %}
-          <li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
-        {% endblock %}
+  <!-- begin left sidebar container for builds which started properly -->
+  {% if build.started %}
+    <div class="row">
+      <div id="nav" class="col-md-2">
+        <ul class="nav nav-pills nav-stacked" id="build-menu">
+          <li id="menu-dashboard"
+            {% if request.resolver_match.url_name == 'builddashboard'  %}
+              class="active"
+            {% endif %} >
+            <a  href="{% url 'builddashboard' build.pk %}">Build summary</a>
+          </li>
+          {% if build.has_images and build.outcome == build.SUCCEEDED %}
+            <li class="nav-header" data-menu-heading="images">Images</li>
+            {% block nav-target %}
+              {% for t in build.get_sorted_target_list %}
+                {% if t.has_images %}
+                  <li id="menu-{{t.target}}"><a href="{% url 'target' build.pk t.pk %}">{{t.target}}</a><li>
+                {% endif %}
+              {% endfor %}
+            {% endblock %}
+          {% endif %}
+          <li class="nav-header">Build</li>
+            <li id="menu-configuration"><a href="{% url 'configuration' build.pk %}">Configuration</a></li>
+            <li><a href="{% url 'tasks' build.pk %}">Tasks</a></li>
+            <li><a href="{% url 'recipes' build.pk %}">Recipes</a></li>
+            <li><a href="{% url 'packages' build.pk %}">Packages</a></li>
+            <li class="nav-header">Performance</li>
+            <li><a href="{% url 'buildtime' build.pk %}">Time</a></li>
+            <li><a href="{% url 'cputime' build.pk %}">CPU usage</a></li>
+            <li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
 
-        <li class="divider"></li>
-
-        <li>
-          <p class="navbar-btn">
-            <a class="btn btn-block" href="{% url 'build_artifact' build.id 'cookerlog' build.id %}">
-              Download build log
+          <li class="nav-header">Actions</li>
+          <li>
+            <a href="{% url 'build_artifact' build.id 'cookerlog' build.id %}">
+              <span class="glyphicon glyphicon-download-alt"></span>
+            Download build log
             </a>
-          </p>
-        </li>
+          </li>
 
-        {% with build.get_custom_image_recipes as custom_image_recipes %}
-          {% if custom_image_recipes.count > 0 %}
-            <!-- edit custom image built during this build -->
-            <li>
-              <p class="navbar-btn" data-role="edit-custom-image-trigger">
-                <button class="btn btn-block">Edit custom image</button>
+          {% with build.get_custom_image_recipes as custom_image_recipes %}
+            {% if custom_image_recipes.count > 0 %}
+              <!-- edit custom image built during this build -->
+              <li>
+                <a href="#" data-role="edit-custom-image-trigger">
+                  <span class="glyphicon glyphicon-edit"></span>
+                  Edit custom image
+                </a>
                 {% include 'editcustomimage_modal.html' %}
                 <script>
                   var editableCustomImageRecipes = {{ custom_image_recipes | objects_to_dictionaries:"id,name" | json }};
@@ -111,47 +180,55 @@
                     });
                   });
                 </script>
-              </p>
-            </li>
-          {% endif %}
-        {% endwith %}
+              </li>
+            {% endif %}
+          {% endwith %}
 
-        <li>
-          <!-- new custom image from image recipe in this build -->
-          <p class="navbar-btn" data-role="new-custom-image-trigger">
-            <button class="btn btn-block">New custom image</button>
-          </p>
-          {% include 'newcustomimage_modal.html' %}
-          <script>
-            // imageRecipes includes both custom image recipes and built-in
-            // image recipes, any of which can be used as the basis for a
-            // new custom image
-            var imageRecipes = {{ build.get_image_recipes | objects_to_dictionaries:"id,name" | json }};
+            <!-- new custom image from image recipe in this build -->
+            {% if build.has_image_recipes %}
+            <li>
+              <a href="#"  data-role="new-custom-image-trigger">
+                <span class="glyphicon glyphicon-plus"></span>
+                New custom image
+              </a>
+              {% include 'newcustomimage_modal.html' %}
+              <script>
+                // imageRecipes includes both custom image recipes and built-in
+                // image recipes, any of which can be used as the basis for a
+                // new custom image
+                var imageRecipes = {{ build.get_image_recipes | objects_to_dictionaries:"id,name" | json }};
 
-            $(document).ready(function () {
-              var newCustomImageModal = $('#new-custom-image-modal');
-              var newCustomImageTrigger = $('[data-role="new-custom-image-trigger"]');
+                $(document).ready(function () {
+                  var newCustomImageModal = $('#new-custom-image-modal');
+                  var newCustomImageTrigger = $('[data-role="new-custom-image-trigger"]');
 
-              // show create new custom image modal to select an image built
-              // during this build as the basis for the custom recipe
-              newCustomImageTrigger.click(function () {
-                if (!imageRecipes.length) {
-                  return;
-                }
+                  // show create new custom image modal to select an image built
+                  // during this build as the basis for the custom recipe
+                  newCustomImageTrigger.click(function () {
+                    if (!imageRecipes.length) {
+                      return;
+                    }
 
-                newCustomImageModalSetRecipes(imageRecipes);
-                newCustomImageModal.modal('show');
-              });
-            });
-          </script>
-        </li>
-      </ul>
+                    newCustomImageModalSetRecipes(imageRecipes);
+                    newCustomImageModal.modal('show');
+                  });
+                });
+              </script>
+            {% endif %}
 
+            <li>
+            <a href="#delete-build-modal" id="delete-build" data-toggle="modal" data-target="#delete-build-modal" class="text-danger">
+              <span class="glyphicon glyphicon-trash"></span>
+              Delete build
+            </a>
+        </ul>
+      </div>
+      <!-- end left sidebar container -->
+    {% endif %}
+
+    <!-- right container; need class="row" for builds without left-hand menu -->
+    <div{% if not build.started %} class="row"{% endif %}>
+      {% block buildinfomain %}{% endblock %}
     </div>
-    <!-- end left sidebar container -->
-
-    <!-- begin right container -->
-    {% block buildinfomain %}{% endblock %}
-    <!-- end right container -->
   </div>
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/baseprojectpage.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/baseprojectpage.html
index 8778305..8427d25 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/baseprojectpage.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/baseprojectpage.html
@@ -7,24 +7,24 @@
 
 {% block pagecontent %}
 
-{% include "projecttopbar.html" %}
-<script type="text/javascript">
-  $(document).ready(function(){
-     $("#config-nav .nav li a").each(function(){
-       if (window.location.pathname === $(this).attr('href'))
-         $(this).parent().addClass('active');
-       else
-         $(this).parent().removeClass('active');
-     });
+<div class="row">
+  {% include "projecttopbar.html" %}
+  <script type="text/javascript">
+$(document).ready(function(){
+    $("#config-nav .nav li a").each(function(){
+      if (window.location.pathname === $(this).attr('href'))
+      $(this).parent().addClass('active');
+      else
+      $(this).parent().removeClass('active');
+      });
 
-     $("#topbar-configuration-tab").addClass("active")
-  });
-</script>
+    $("#topbar-configuration-tab").addClass("active")
+    });
+  </script>
 
-<div class="row-fluid">
   <!-- only on config pages -->
-  <div id="config-nav" class="span2">
-    <ul class="nav nav-list well">
+  <div id="config-nav" class="col-md-2">
+    <ul class="nav nav-pills nav-stacked">
       <li><a class="nav-parent" href="{% url 'project' project.id %}">Configuration</a></li>
       <li class="nav-header">Compatible metadata</li>
       <li><a href="{% url 'projectcustomimages' project.id %}">Custom images</a></li>
@@ -34,12 +34,18 @@
       <li><a href="{% url 'projectlayers' project.id %}">Layers</a></li>
       <li class="nav-header">Extra configuration</li>
       <li><a href="{% url 'projectconf' project.id %}">BitBake variables</a></li>
+
+      <li class="nav-header">Actions</li>
+      <li>
+        <a href="#delete-project-modal" role="button" class="text-danger" data-toggle="modal" data-target="#delete-project-modal">
+          <i class="icon-trash text-danger"></i> Delete project</a>
+      </li>
     </ul>
   </div>
-  <div class="span10">
+  <div class="col-md-10">
     {% block projectinfomain %}{% endblock %}
   </div>
-</div>
 
+</div>
 {% endblock %}
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html
index ce023f5..a2011fa 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html
@@ -2,12 +2,10 @@
     </table>
 
 <!-- Show pagination controls -->
-<div class="pagination pagination-centered">
-   <div class="pull-left">
-   Showing {{objects.start_index}} to {{objects.end_index}} out of {{objects.paginator.count}} entries.
-   </div>
+<div id="pagination-basetable_bottom">
+   <!--span class="help-inline">Showing {{objects.start_index}} to {{objects.end_index}} out of {{objects.paginator.count}} entries.</span-->
 
-   <ul class="pagination" style="display: block-inline">
+   <ul class="pagination">
 {%if objects.has_previous %}
   <li><a href="javascript:reload_params({'page':{{objects.previous_page_number}}})">&laquo;</a></li>
 {%else%}
@@ -22,16 +20,18 @@
   <li class="disabled"><a href="#">&raquo;</a></li>
 {%endif%}
   </ul>
-  <div class="pull-right">
-    <span class="help-inline" style="padding-top:5px;">Show rows:</span>
-    <select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
-      {% with "10 25 50 100 150" as list%}
+  <form class="navbar-form navbar-right">
+    <div class="form-group">
+      <label>Show rows:</label>
+      <select class="form-control pagesize">
+        {% with "10 25 50 100 150" as list%}
         {% for i in list.split %}
-            <option value="{{i}}">{{i}}</option>
+        <option value="{{i}}">{{i}}</option>
         {% endfor %}
-      {% endwith %}
-    </select>
-   </div>
+        {% endwith %}
+      </select>
+    </div>
+  </form>
 </div>
 
 <!-- Update page display settings -->
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_top.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_top.html
index 0ddd749..5a9076d 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_top.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/basetable_top.html
@@ -159,66 +159,83 @@
     </script>
 
 <!-- control header -->
-<div class="navbar">
-    <div class="navbar-inner">
-        <form class="navbar-search input-append pull-left span6" id="searchform">
-            <input id="search" name="search" type="text" placeholder="Search {%if object_search_display %}{{object_search_display}}{%else%}{{objectname}}{%endif%}" value="{%if request.GET.search %}{{request.GET.search}}{% endif %}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{%endif%}
-            <input type="hidden" name="orderby" value="{{request.GET.orderby}}">
-            <input type="hidden" name="page" value="1">
-            <button class="btn" id="search-button" type="submit" value="Search">Search</button>
-        </form>
-        <div class="pull-right">
-{% if tablecols %}
-            <div class="btn-group">
-                <button id="edit-columns-button" class="btn dropdown-toggle" data-toggle="dropdown">Edit columns
-                    <span class="caret"></span>
-                </button>
+<div class="navbar navbar-default">
+  <div class="container-fluid">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#table-chrome-collapse-variablehistory" aria-expanded="false">
+        <span class="sr-only">Toggle table options</span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+    </div>
+    <div class="collapse navbar-collapse" id="table-chrome-collapse-variablehistory">
+      <form class="navbar-form navbar-left" id="searchform">
+        <div class="form-group">
+          <div class="btn-group">
+            <input class="form-control" id="search" name="search" type="text" placeholder="Search {%if object_search_display %}{{object_search_display}}{%else%}{{objectname}}{%endif%}" value="{%if request.GET.search %}{{request.GET.search}}{% endif %}"/>
+            {% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" tabindex="-1"><span class="remove-search-btn-variables glyphicon glyphicon-remove-circle"></span></a>{%endif%}
+          </div>
+        </div>
+        <input type="hidden" name="orderby" value="{{request.GET.orderby}}">
+        <input type="hidden" name="page" value="1">
+        <button class="btn btn-default" id="search-button" type="submit" value="Search">Search</button>
+      </form>
+      <form class="navbar-form navbar-right">
+        <div class="form-group">
+          <label>Show rows:</label>
+          <select class="pagesize form-control">
+            {% with "10 25 50 100 150" as list%}
+            {% for i in list.split %}
+            <option value="{{i}}">{{i}}</option>
+            {% endfor %}
+            {% endwith %}
+          </select>
+        </div>
+      </form>
+
+      <div class="btn-group navbar-right">
+				{% if tablecols %}
+					<button id="edit-columns-button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown">Edit columns
+						<span class="caret"></span>
+					</button>
 <!--
 	{{tablecols|sortcols}}
 -->
-                <ul id='editcol' class="dropdown-menu">
-                  {% for i in tablecols|sortcols %}
-                    <li>
-                        <label {% if not i.clclass %} class="checkbox muted" {%else%} class="checkbox" {%endif%}>
-                            <input type="checkbox" class="chbxtoggle"
-                                   {% if i.clclass %}
+        <ul id="editcol" class="dropdown-menu editcol">
+          {% for i in tablecols|sortcols %}
+          <li>
+            <div class="checkbox">
+              <label {% if not i.clclass %} class="muted" {%endif%}>
+                <input type="checkbox" class="chbxtoggle"
+                                       {% if i.clclass %}
                                        id="{{i.clclass}}"
                                        value="ct{{i.name}}"
                                        {% if not i.hidden %}
-                                           checked="checked"
+                                       checked="checked"
                                        {%endif%}
                                        onclick="showhideTableColumn(
-                                           $(this).attr('id'),
-                                           $(this).is(':checked'),
-                                           {% if i.ordericon %}
-                                              '{{i.orderkey}}'
-                                           {% else %}
-                                              undefined
-                                           {% endif %}
+                                       $(this).attr('id'),
+                                       $(this).is(':checked'),
+                                       {% if i.ordericon %}
+                                       '{{i.orderkey}}'
+                                       {% else %}
+                                       undefined
+                                       {% endif %}
                                        )"
-                                   {%else%}
+                                       {%else%}
                                        checked disabled
-                                   {% endif %}/>   {{i.name}}
-                        </label>
-                    </li>
-                  {% endfor %}
-                </ul>
+                                       {% endif %}/>{{i.name}}
+              </label>
             </div>
-{% endif %}
-            <div style="display:inline">
-                <span class="divider-vertical"></span>
-                <span class="help-inline" style="padding-top:5px;">Show rows:</span>
-                <select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
-                  {% with "10 25 50 100 150" as list%}
-                    {% for i in list.split %}
-                        <option value="{{i}}">{{i}}</option>
-                    {% endfor %}
-                  {% endwith %}
-                </select>
-           </div>
-        </div>
-    </div> <!-- navbar-inner -->
-</div>
+          </li>
+          {% endfor %}
+        </ul>
+        {% endif %}
+      </div>
+    </div> <!-- navbar-collapse -->
+	</div> <!-- container-fluid -->
+</div> <!-- navbar-default -->
 
 <!-- the actual rows of the table -->
     <table class="table table-bordered table-hover tablesorter" id="otable">
@@ -226,11 +243,11 @@
         <!-- Table header row; generated from "tablecols" entry in the context dict -->
         <tr>
             {% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{%endif%} {% if tc.clclass %}{{tc.clclass}}{% endif %}">
-                {%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
-                {%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="muted">{{tc.name}}</span>{%endif%}
+                {%if tc.qhelp%}<span class="glyphicon glyphicon-question-sign get-help" title="{{tc.qhelp}}"></span>{%endif%}
+                {%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="text-muted">{{tc.name}}</span>{%endif%}
                 {%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
                 {%if tc.filter%}<div class="btn-group pull-right">
-                    <a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-mini {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-small btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <i class="icon-filter filtered"></i> </a>
+                    <a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-xs {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-sm btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <span class="glyphicon glyphicon-filter filtered"></span> </a>
                 </div>{%endif%}
             </th>{% endfor %}
         </tr>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/bpackage.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/bpackage.html
deleted file mode 100644
index 81973cb..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/bpackage.html
+++ /dev/null
@@ -1,108 +0,0 @@
-{% extends "basebuildpage.html" %}
-
-{% load projecttags %}
-
-{% block title %} Packages built - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %}
-{% block localbreadcrumb %}
-<li>Packages</li>
-{% endblock %}
-
-{% block nav-packages %}
-  <li class="active"><a href="{% url 'packages' build.pk %}">Packages</a></li>
-{% endblock %}
-
-{% block buildinfomain %}
-<div class="span10">
-
-{% if not request.GET.filter and not request.GET.search and not objects.paginator.count %}
-
-<!-- Empty - no data in database -->
-<div class="page-header">
-    <h1>
-        Packages
-    </h1>
-</div>
-<div class="alert alert-info lead">
-    <strong>No packages were built.</strong> How did this happen? Well, BitBake reuses as much stuff as possible.
-    If all of the packages needed were already built and available in your build infrastructure, BitBake
-    will not rebuild any of them. This might be slightly confusing, but it does make everything faster.
-</div>
-
-{% else %}
-
-<div class="page-header">
-  <h1>
-  {% if request.GET.search and objects.paginator.count > 0  %}
-      {{objects.paginator.count}} package{{objects.paginator.count|pluralize}} found
-  {%elif request.GET.search and objects.paginator.count == 0%}
-      No packages found
-  {%else%}
-      Packages
-  {%endif%}
-  </h1>
-</div>
-
-  {% if objects.paginator.count == 0 %}
-  <div class="row-fluid">
-      <div class="alert">
-        <form class="no-results input-append" id="searchform">
-            <input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %}
-            <button class="btn" type="submit" value="Search">Search</button>
-            <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all packages</button>
-        </form>
-      </div>
-  </div>
-
-  {% else %}
-  {% include "basetable_top.html" %}
-
-    {% for package in objects %}
-
-    <tr class="data">
-
-        <!-- Package -->
-        <td class="package_name"><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td>
-        <!-- Package Version -->
-        <td class="package_version">{%if package.version%}<a href="{% url "package_built_detail" build.pk package.pk %}">{{package.version}}-{{package.revision}}</a>{%endif%}</td>
-        <!-- Package Size -->
-        <td class="size sizecol">{{package.size|filtered_filesizeformat}}</td>
-        <!-- License -->
-        <td class="license">{{package.license}}</td>
-
-        {%if package.recipe%}
-            <!-- Recipe -->
-            <td class="recipe__name"><a href="{% url "recipe" build.pk package.recipe.pk %}">{{package.recipe.name}}</a></td>
-            <!-- Recipe Version -->
-            <td class="recipe__version"><a href="{% url "recipe" build.pk package.recipe.pk %}">{{package.recipe.version}}</a></td>
-
-            <!-- Layer -->
-            <td class="recipe__layer_version__layer__name">{{package.recipe.layer_version.layer.name}}</td>
-            <!-- Layer branch -->
-            <td class="recipe__layer_version__branch">{{package.recipe.layer_version.branch}}</td>
-            <!-- Layer commit -->
-            <td class="recipe__layer_version__layer__commit">
-                <a class="btn"
-                    data-content="<ul class='unstyled'>
-                      <li>{{package.recipe.layer_version.commit}}</li>
-                    </ul>">
-                    {{package.recipe.layer_version.commit|truncatechars:13}}
-                </a>
-            </td>
-            <!-- Layer directory -->
-        {%else%}
-            <td class="recipe__name"></td>
-            <td class="recipe__version"></td>
-            <td class="recipe__layer_version__layer__name"></td>
-            <td class="recipe__layer_version__branch"></td>
-            <td class="recipe__layer_version__layer__commit"></td>
-            <td class="recipe__layer_version__local_path"></td>
-        {%endif%}
-
-    </tr>
-    {% endfor %}
-
-  {% include "basetable_bottom.html" %}
-  {% endif %} {# objects.paginator.count #}
-{% endif %} {# Empty #}
-</div>
-{% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html
index a0da71e..02a2981 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builddashboard.html
@@ -1,8 +1,9 @@
 {% extends "basebuildpage.html" %}
 {% load humanize %}
 {% load projecttags %}
+{% load field_values_filter %}
 
-{% block title %} {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %}
+{% block title %} {{build.get_sorted_target_list|field_values:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %}
 {% block parentbreadcrumb %}
 {% if build.get_sorted_target_list.count > 0 %}
   {{build.get_sorted_target_list.0.target}}
@@ -13,61 +14,57 @@
 
 {% block buildinfomain %}
 <!-- page title -->
-<div class="row-fluid span10">
- <div class="page-header">
-     <h1>{{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}}</h1>
+<div class="{% if build.started %}col-md-10{% else %}col-md-12{% endif %}">
+ <div class="page-header build-data">
+     <h1>{{build.get_sorted_target_list|field_values:"target"|join:", "}} {{build.machine}}</h1>
  </div>
-</div>
 
 <!-- build result bar -->
-<div class="row-fluid span10 pull-right">
-  <div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}">
-    <div class="row-fluid lead">
-            <span class="pull-left"><strong>
-                {%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%}
-              </strong> on
-            {{build.completed_on|date:"d/m/y H:i"}}
-</span>
-{% if  build.warnings.count or build.errors.count %}
-&nbsp;with
-{% endif %}
-{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
-{% if  build.errors.count %}
-     <span > <i class="icon-minus-sign red"></i><strong><a href="#errors" class="error show-errors"> {{build.errors.count}} error{{build.errors.count|pluralize}}</a></strong></span>
-{% endif %}
-{% if  build.warnings.count %}
-{% if  build.errors.count %}
-    and
-{% endif %}
-    <span > <i class="icon-warning-sign yellow"></i><strong><a href="#warnings" class="warning show-warnings"> {{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a></strong></span>
-{% endif %}
-            <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a>
-            {% if build.cooker_log_path %}
-                <a class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%else%}btn-danger{%endif%} pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a>
-            {% endif %}
-            </span>
+  <div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-danger{%else%}alert-info{%endif%}">
+		<span><strong>{%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%}</strong> on {{build.completed_on|date:"d/m/y H:i"}}</span>
+		{% if  build.warnings.count or build.errors.count %}
+		<span>with</span>
+		{% endif %}
+		{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
+			{% if  build.errors.count %}
+			<a href="#errors" class="alert-link show-errors"> {{build.errors.count}} error{{build.errors.count|pluralize}}</a>
+			{% endif %}
+			{% if  build.warnings.count %}
+				{% if  build.errors.count %}and{% endif %}
+				<a href="#warnings" class="show-warnings"> {{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>
+			{% endif %}
+			{% if build.cooker_log_path %}
+			<a class="pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a>
+			{% endif %}
+			<span class="pull-right">
+				Build time:
+			  <span data-build-field="buildtime">
+          {% if build.outcome == build.SUCCEEDED %}
+            <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a>
+          {% else %}
+            {{ build.timespent_seconds|sectohms }}
+          {% endif %}
+        </span>
+      </span>
 
-{%endif%}
-    </div>
-  </div>
+		{%endif%}
 </div>
 
 {% if build.errors.count %}
-<div class="accordion span10 pull-right" id="errors">
-  <div class="accordion-group">
-    <div class="accordion-heading">
-            <a class="accordion-toggle error toggle-errors">
-         <h2 id="error-toggle">
-           <i class="icon-minus-sign"></i>
+  <div class="panel panel-default" id="errors">
+    <div class="panel-heading">
+      <h2 class="panel-title">
+         <span class="glyphicon glyphicon-minus-sign"></span>
+         <a data-toggle="collapse" href="#error-info" id="error-toggle">
            {{build.errors.count}} error{{build.errors.count|pluralize}}
-         </h2>
-      </a>
+         </a>
+      </h2>
     </div>
-    <div class="accordion-body collapse in" id="collapse-errors">
-      <div class="accordion-inner">
-        <div class="span10">
+    <div class="panel-collapse collapse in" id="error-info">
+      <div class="panel-body">
+        <div class="{% if build.started %}col-md-10{% else %}col-md-12{% endif %}">
           {% for error in build.errors %}
-            <div class="alert alert-error" data-error="{{ error.id }}">
+            <div class="alert alert-danger" data-log-message-id="{{error.pk}}">
               <pre>{{error.message}}</pre>
             </div>
           {% endfor %}
@@ -75,57 +72,62 @@
       </div>
     </div>
   </div>
-</div>
 {% endif %}
 
 {%if build.outcome == build.SUCCEEDED%}
 <!-- built images -->
-{% if hasImages %}
-<div class="row-fluid span10 pull-right">
-    <h2>Images</h2>
+  {% if hasArtifacts %}
+    <h2 data-heading="build-artifacts">Build artifacts</h2>
     {% for target in targets %}
         {% if target.target.is_image %}
-    <div class="well dashboard-section">
-        <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a>
-                </h3>
-        <dl class="dl-horizontal">
-            <dt>Packages included</dt>
-            <dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd>
-            <dt>Total package size</dt>
-            <dd>{{target.pkgsz|filtered_filesizeformat}}</dd>
-                        {% if target.targetHasNoImages %}
-                </dl>
-                <div class="row-fluid">
-                    <div class="alert alert-info span7">
-                    <p>
-                                    <b>This build did not create any image files</b>
-                                  </p>
-                                  <p>
-                                    This is probably because valid image and license manifest
-                                    files from a previous build already exist in your
-                                    <code>.../poky/build/tmp/deploy</code>
-                                    directory. You can
-                                    also <a href="{% url 'targetpkg' build.pk target.target.pk %}">view the
-                                      license manifest information</a> in Toaster.
-                                  </p>
-                    </div>
-                </div>
+    <div class="well well-transparent dashboard-section" data-artifacts-for-target="{{target.target.pk}}">
+        {% if target.npkg > 0 %}
+            <h3>
+                <a href="{% url 'target' build.pk target.target.pk %}" data-link="target-packages">
+                  {{target.target.target}}
+                </a>
+            </h3>
+            <dl class="dl-horizontal">
+                <dt>Packages included</dt>
+                <dd>
+                    <a href="{% url 'target' build.pk target.target.pk %}">
+                        <span data-value="target-package-count">{{target.npkg}}</span>
+                    </a>
+                </dd>
+                <dt>Total package size</dt>
+                <dd>
+                    <span data-value="target-package-size">{{target.pkgsz|filtered_filesizeformat}}</span>
+                </dd>
+            </dl>
         {% else %}
-            <dt>
-                <i class="icon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></i>
+            <h3>{{target.target.target}}</h3>
+        {% endif %}
 
-                License manifest
-            </dt>
-            <dd>
-                <a href="{% url 'targetpkg' build.pk target.target.pk %}">View in Toaster</a> |
-                <a href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">Download</a></dd>
+        {% if target.targetHasImages %}
+          <dl class="dl-horizontal">
             <dt>
-                <i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i>
+              Manifests
+            </dt>
+
+            <dd>
+              <a data-link="license-manifest" href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">License manifest</a>
+            </dd>
+
+            {% if target.target.package_manifest_path %}
+              <dd>
+                <a data-link="package-manifest" href="{% url 'build_artifact' build.pk 'packagemanifest' target.target.pk %}">Package manifest</a>
+              </dd>
+            {% endif %}
+          </dl>
+
+          <dl class="dl-horizontal">
+            <dt>
+                <span class="glyphicon glyphicon-question-sign get-help" title="Image files are stored in <code>build/tmp/deploy/images/</code>"></span>
                 Image files
             </dt>
             <dd>
-                <ul>
-                    {% for i in target.imageFiles %}
+                <ul class="list-unstyled" data-links="image-artifacts">
+                    {% for i in target.imageFiles|dictsort:"suffix" %}
                         <li>
                             <a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}">
                                 {{i.suffix}}
@@ -135,13 +137,42 @@
                     {% endfor %}
                 </ul>
             </dd>
-        </dl>
+            <dt>
+                Kernel artifacts
+            </dt>
+            <dd>
+                <ul class="list-unstyled" data-links="kernel-artifacts">
+                    {% for artifact in target.target_kernel_artifacts|dictsort:"basename" %}
+                        <li>
+                            <a href="{% url 'build_artifact' build.id 'targetkernelartifact' artifact.id %}">{{artifact.basename}}</a>
+                            ({{artifact.file_size|filtered_filesizeformat}})
+                        </li>
+                    {% endfor %}
+                  </ul>
+            </dd>
+          </dl>
+        {% endif %}
+        {% if target.target_sdk_artifacts_count > 0 %}
+          <dl class="dl-horizontal">
+            <dt>
+              SDK artifacts
+            </dt>
+            <dd>
+              <ul class="list-unstyled" data-links="sdk-artifacts">
+                {% for artifact in target.target_sdk_artifacts|dictsort:"basename" %}
+                <li>
+                  <a href="{% url 'build_artifact' build.id 'targetsdkartifact' artifact.id %}">{{artifact.basename}}</a>
+                  ({{artifact.file_size|filtered_filesizeformat}})
+                </li>
+                {% endfor %}
+              </ul>
+            </dd>
+          </dl>
         {% endif %}
     </div>
         {% endif %}
     {% endfor %}
-</div>
-{% endif %}
+  {% endif %}
 
 {%else%}
 <!-- error dump -->
@@ -149,13 +180,12 @@
 
 <!-- other artifacts -->
 {% if build.buildartifact_set.all.count > 0 %}
-<div class="row-fluid span10 pull-right">
 <h2>Other artifacts</h2>
 
-    <div class="well dashboard-section">
+    <div class="well well-transparent dashboard-section">
         <dl class="dl-horizontal">
             <dt>
-                <i class="icon-question-sign get-help" title="Build artifacts discovered in <i>tmp/deploy/images</i>. Usually kernel images and kernel modules."></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="Build artifacts discovered in <i>tmp/deploy/images</i>. Usually kernel images and kernel modules."></span>
                 Other artifacts</dt>
             <dd><div>
               {% for ba in build.buildartifact_set.all|dictsort:"file_name" %}
@@ -170,92 +200,97 @@
 	</dl>
     </div>
 
-</div>
 {% endif %}
-<!-- build summary -->
-<div class="row-fluid span10 pull-right">
-<h2>Build summary</h2>
-    <div class="well span4 dashboard-section" style="margin-left:0px;">
-        <h4><a href="{%url 'configuration' build.pk%}">Configuration</a></h4>
-            <dl>
-        <dt>Machine</dt><dd>{{build.machine}}</dd>
-        <dt>Distro</dt><dd>{{build.distro}}</dd>
-        <dt>Layers</dt>{% for i in build.layer_version_build.all|dictsort:"layer.name" %}<dd>{{i.layer.name}}</dd>{%endfor%}
-            </dl>
-    </div>
-    <div class="well span4 dashboard-section">
-        <h4><a href="{%url 'tasks' build.pk%}">Tasks</a></h4>
-            <dl>
-            {% query build.task_build outcome=4 order__gt=0 as exectask%}
-            {% if exectask.count > 0 %}
-                <dt>Failed tasks</dt>
-                <dd>
-                {% if exectask.count == 1 %}
-                    <a class="error" href="{% url "task" build.id exectask.0.id %}">
-                        {{exectask.0.recipe.name}}
-                        <span class="task-name">{{exectask.0.task_name}}</span>
-                    </a>
 
-                        <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}">
-                            <i class="icon-download-alt" title="" data-original-title="Download task log file"></i>
-                        </a>
+{% if build.started %}
+  <!-- build summary -->
+  <h2 data-role="build-summary-heading">Build summary</h2>
+    <div class="row">
+      <div class="col-md-4 dashboard-section">
+        <div class="well well-transparent">
+          <h3><a href="{%url 'configuration' build.pk%}">Configuration</a></h3>
+              <dl>
+          <dt>Machine</dt><dd>{{build.machine}}</dd>
+          <dt>Distro</dt><dd>{{build.distro}}</dd>
+          <dt>Layers</dt><dd><ul class="list-unstyled">{% for i in build.layer_version_build.all|dictsort:"layer.name" %}<li>{{i.layer.name}}</li>{%endfor%}</ul></dd>
+              </dl>
+        </div>
+      </div>
+      <div class="col-md-4 dashboard-section">
+        <div class="well well-transparent">
+          <h3><a href="{%url 'tasks' build.pk%}">Tasks</a></h3>
+              <dl>
+              {% query build.task_build outcome=4 order__gt=0 as exectask%}
+              {% if exectask.count > 0 %}
+                  <dt>Failed tasks</dt>
+                  <dd>
+                  {% if exectask.count == 1 %}
+                      <a class="text-danger" href="{% url "task" build.id exectask.0.id %}">
+                          {{exectask.0.recipe.name}}
+                          <span class="task-name">{{exectask.0.task_name}}</span>
+                      </a>
 
-                {% elif exectask.count > 1%}
-                    <a class="error" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a>
-                {% endif %}
-                </dd>
-            {% endif %}
-        <dt>Total number of tasks</dt><dd><a href="{% url 'tasks' build.pk %}">{% query build.task_build order__gt=0 as alltasks %}{{alltasks.count}}</a></dd>
-        <dt>
-            Tasks executed
-            <i class="icon-question-sign get-help" title="'Executed' tasks are those that need to be run in order to generate the task output"></i>
-        </dt>
-        <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A1&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd>
-        <dt>
-            Tasks not executed
-            <i class="icon-question-sign get-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></i>
-        </dt>
-        <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A0&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd>
-        <dt>
-            Reuse
-            <i class="icon-question-sign get-help" title="The percentage of 'not executed' tasks over the total number of tasks, which is a measure of the efficiency of your build"></i>
-        </dt>
-        <dd>
-{% query build.task_build order__gt=0 as texec %}
-{% if noexectask.count|multiply:100|divide:texec.count < 0 %}
-0
-{% else %}
-{{noexectask.count|multiply:100|divide:texec.count}}
-{% endif %}
-%
-        </dd>
-            </dl>
+                          <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}">
+                              <span class="glyphicon glyphicon-download-alt get-help" title="Download task log file"></i>
+                          </a>
+
+                  {% elif exectask.count > 1%}
+                      <a class="text-danger" href="{% url "tasks" build.id %}?limit=25&amp;page=1&amp;orderby=order&amp;filter=task_outcome:failed&amp;default_orderby=order&amp;filter_value=on&amp;">{{exectask.count}}</a>
+                  {% endif %}
+                  </dd>
+              {% endif %}
+          <dt>Total number of tasks</dt><dd><a href="{% url 'tasks' build.pk %}">{% query build.task_build order__gt=0 as alltasks %}{{alltasks.count}}</a></dd>
+          <dt>
+              Tasks executed
+              <span class="glyphicon glyphicon-question-sign get-help" title="'Executed' tasks are those that need to be run in order to generate the task output"></span>
+          </dt>
+          <dd><a href="{% url 'tasks' build.pk %}?limit=25&amp;page=1&amp;orderby=order&amp;filter=execution_outcome:executed&amp;default_orderby=order&amp;filter_value=on&amp;">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd>
+          <dt>
+              Tasks not executed
+              <span class="glyphicon glyphicon-question-sign get-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></span>
+          </dt>
+          <dd><a href="{% url 'tasks' build.pk %}?limit=25&amp;page=1&amp;orderby=order&amp;filter=execution_outcome:not_executed&amp;default_orderby=order&amp;filter_value=on&amp;">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd>
+          <dt>
+              Reuse
+              <span class="glyphicon glyphicon-question-sign get-help" title="The percentage of 'not executed' tasks over the total number of tasks, which is a measure of the efficiency of your build"></span>
+          </dt>
+          <dd>
+  {% query build.task_build order__gt=0 as texec %}
+  {% if noexectask.count|multiply:100|divide:texec.count < 0 %}
+  0
+  {% else %}
+  {{noexectask.count|multiply:100|divide:texec.count}}
+  {% endif %}
+  %
+          </dd>
+              </dl>
+        </div>
+      </div>
+      <div class="col-md-4 dashboard-section">
+        <div class="well well-transparent">
+          <h3><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h3>
+              <dl>
+          <dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd>
+          <dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd>
+              </dl>
+      </div>
     </div>
-    <div class="well span4 dashboard-section">
-        <h4><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h4>
-            <dl>
-        <dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd>
-        <dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd>
-            </dl>
-    </div>
-</div>
+  </div>
+{% endif %} <!-- end build summary -->
 
 {% if build.warnings.count %}
-<div class="accordion span10 pull-right" id="warnings">
-  <div class="accordion-group">
-    <div class="accordion-heading">
-      <a class="accordion-toggle warning toggle-warnings">
-        <h2 id="warning-toggle">
-          <i class="icon-warning-sign"></i>
-          {{build.warnings.count}} warning{{build.warnings.count|pluralize}}
-        </h2>
-      </a>
+  <div class="panel panel-default" id="warnings">
+    <div class="panel-heading">
+      <h2 class="panel-title">
+          <span class="glyphicon glyphicon-warning-sign"></span>
+          <a id="warning-toggle" href="#warning-info" data-toggle="collapse">{{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>
+      </h2>
     </div>
-    <div class="accordion-body collapse" id="collapse-warnings">
-      <div class="accordion-inner">
-        <div class="span10">
+    <div class="panel-collapse collapse" id="warning-info">
+      <div class="panel-body">
+        <div class="{% if build.started %}col-md-10{% else %}col-md-12{% endif %}">
           {% for warning in logmessages %}{% if warning.level == 1 %}
-            <div class="alert alert-warning">
+            <div class="alert alert-warning" data-log-message-id="{{warning.pk}}">
               <pre>{{warning.message}}</pre>
             </div>
           {% endif %}{% endfor %}
@@ -263,15 +298,21 @@
       </div>
     </div>
   </div>
-</div>
 {% endif %}
 
+</div> <!-- end 10 column row -->
+
 <script type="text/javascript">
     $(document).ready(function() {
         //show warnings section when requested from the previous page
         if (location.href.search('#warnings') > -1) {
-            $('#collapse-warnings').addClass('in');
+            $('#warning-info').addClass('in');
         }
+
+	//show warnings section when requested from the build outcome
+	$(".show-warnings").click(function() {
+	    $('#warning-info').addClass('in');
+	});
     });
 </script>
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildinfo-toastertable.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildinfo-toastertable.html
new file mode 100644
index 0000000..eb4c656
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildinfo-toastertable.html
@@ -0,0 +1,25 @@
+{% extends "basebuildpage.html" %}
+
+{% load projecttags %}
+
+{% block title %} {{title}} - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %}
+{% block localbreadcrumb %}
+<li>{{title}}</li>
+{% endblock %}
+
+{% block nav-packages %}
+{% endblock %}
+
+{% block buildinfomain %}
+<div class="col-md-10">
+{# xhr_table_url is just the current url so leave it blank #}
+{% with xhr_table_url='' %}
+  <div class="page-header build-data">
+     <h1>
+       {{title}} (<span class="table-count-{{table_name}}">0</span>) </h2>
+     </h1>
+  </div>
+  {% include "toastertable.html" %}
+{% endwith %}
+</div>
+{% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildrequestdetails.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildrequestdetails.html
deleted file mode 100644
index 70fa1fb..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildrequestdetails.html
+++ /dev/null
@@ -1,64 +0,0 @@
-{% extends "baseprojectpage.html" %}
-
-{% load static %}
-{% load projecttags %}
-{% load humanize %}
-
-
-{% block projectinfomain %}
-      <!-- begin content -->
-
-          <div class="row-fluid">
-
-            <!-- end left sidebar container -->
-            <!-- Begin right container -->
-            <div class="span10">
-              <div class="page-header">
-                <h1>
- <span data-toggle="tooltip" {%if buildrequest.brtarget_set.all.count > 1%}title="Targets: {%for target in buildrequest.brtarget_set.all%}{{target.target}} {%endfor%}"{%endif%}>{{buildrequest.brtarget_set.all.0.target}} {%if buildrequest.brtarget_set.all.count > 1%}(+ {{buildrequest.brtarget_set.all.count|add:"-1"}}){%endif%} {{buildrequest.get_machine}} </span>
-
-        </h1>
-              </div>
-              <div class="alert alert-error">
-                <p class="lead">
-                  <strong>Failed</strong>
-                    on {{ buildrequest.updated|date:'d/m/y H:i' }}
-            with
-
-                                    <i class="icon-minus-sign error" style="margin-left:6px;"></i>
-                  <strong><a class="error accordion-toggle toggle-errors" href="#errors">
-                        {{buildrequest.brerror_set.all.count}} error{{buildrequest.brerror_set.all.count|pluralize}}
-              </a></strong>
-                  <span class="pull-right">Build time: {{buildrequest.get_duration|sectohms}}</span>
-                </p>
-              </div>
-
-              <div class="accordion" id="errors">
-                <div class="accordion-group">
-                  <div class="accordion-heading">
-                    <a class="accordion-toggle error toggle-errors">
-                      <h2>
-                        <i class="icon-minus-sign"></i>
-                        {{buildrequest.brerror_set.all.count}} error{{buildrequest.brerror_set.all.count|pluralize}}
-                      </h2>
-                    </a>
-                  </div>
-                  <div class="accordion-body collapse in" id="collapse-errors">
-                    <div class="accordion-inner">
-                      <div class="span10">
-               {% for error in buildrequest.brerror_set.all %}
-                        <div class="alert alert-error">
-                          ERROR: <div class="air well"><pre>{{error.errmsg}}</pre></div>
-                        </div>
-                      {% endfor %}
-                      </div>
-                    </div>
-                  </div>
-
-                </div>
-              </div>
-            </div>
-          </div> <!-- end of row-fluid -->
-
-
-{%endblock%}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builds-toastertable.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builds-toastertable.html
index bf13a66..0afe0a3 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builds-toastertable.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/builds-toastertable.html
@@ -13,16 +13,20 @@
 
 {% block pagecontent %}
 
-  <div class="row-fluid">
+<div class="row">
+  <div class="col-md-12">
     {% with mru=mru mrb_type=mrb_type %}
       {% include 'mrb_section.html' %}
     {% endwith %}
 
-    <h1 class="page-header top-air" data-role="page-title"></h1>
+    <div class="page-header">
+      <h1 class="top-air" data-role="page-title"></h1>
+    </div>
 
     {% url 'builds' as xhr_table_url %}
     {% include 'toastertable.html' %}
   </div>
+</div>
 
   <script>
     $(document).ready(function () {
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildtime.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildtime.html
deleted file mode 100644
index ea84ae7..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/buildtime.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{% extends "basebuildpage.html" %}
-{% block localbreadcrumb %}
-<li>Build Time</li>
-{% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configuration.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configuration.html
index 85d6a62..58989f8 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configuration.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configuration.html
@@ -6,21 +6,17 @@
 <li>Configuration</li>
 {% endblock %}
 
-{% block nav-configuration %}
-  <li class="active"><a href="{% url 'configuration' build.pk %}">Configuration</a></li>
-{% endblock %}
-
 {% block buildinfomain %}
 <!-- page title -->
-<div class="row-fluid span10">
- <div class="page-header">
+<div class="col-md-10">
+
+ <div class="page-header build-data">
      <h1>Configuration</h1>
  </div>
-</div>
 
 <!-- configuration table -->
-<div class="row-fluid pull-right span10" id="navTab">
-<ul class="nav nav-pills">
+<div id="navTab">
+<ul class="nav nav-tabs">
     <li class="active"><a href="#">Summary</a></li>
     <li class=""><a href="{% url 'configvars' build.id %}">BitBake variables</a></li>
 </ul>
@@ -39,34 +35,51 @@
       {%if TUNE_FEATURES %}<dt>Tune features</dt><dd>{{TUNE_FEATURES}}</dd> {% endif %}
       {%if TARGET_FPU %}<dt>Target FPU</dt><dd>{{TARGET_FPU}}</dd> {% endif %}
       {%if targets.all %}<dt>Target(s)</dt>
-          <dd> <ul> {% for target in targets.all %}
+          <dd> <ul class="list-unstyled"> {% for target in targets.all %}
                <li>{{target.target}}{%if forloop.counter > 1 %}<br>{% endif %}</li>
           {% endfor %} </ul> </dd> {% endif %}
     </dl>
     <h3>Layers</h3>
-    <div class="span9" style="margin-left:0px;">
-    <table class="table table-bordered table-hover">
-      <thead>
-        <tr>
-          <th>Layer</th>
-          <th>Layer branch</th>
-          <th>Layer commit</th>
-        </tr>
-      </thead>
-      <tbody>{% for lv in build.layer_version_build.all|dictsort:"layer.name" %}
-        <tr>
+    <div class="row">
+      <div class="col-md-9 table-responsive">
+        <table class="table table-bordered table-hover">
+          <thead>
+            <tr>
+              <th>Layer</th>
+              <th>Layer branch</th>
+              <th>Layer commit</th>
+            </tr>
+          </thead>
+          <tbody>{% for lv in build.layer_version_build.all|dictsort:"layer.name" %}
+          <tr>
             <td>{{lv.layer.name}}</td>
+	    {% if lv.layer.local_source_dir %}
+	    <td>
+	      <span class="text-muted">Not applicable</span>
+	      <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{lv.layer.name}} is not in a Git repository, so there is no branch associated with it"> </span>
+	    </td>
+	    {% else %}
             <td>{{lv.branch}}</td>
-            <td> <a class="btn" data-content="<ul class='unstyled'>
-                <li>{{lv.commit}}</li> </ul>">
-                    {{lv.commit|truncatechars:13}}
-                </a></td>
-        </tr>{% endfor %}
-      </tbody>
-    </table>
+	    {% endif %}
+	    {% if lv.layer.local_source_dir %}
+	    <td>
+	      <span class="text-muted">Not applicable</span>
+	      <span class="glyphicon glyphicon-question-sign get-help" data-original-title="" title="The source code of {{lv.layer.name}} is not in a Git repository, so there is no commit associated with it"> </span>
+	    </td>
+	    {% else %}
+            <td> <a class="btn btn-default" data-content="<ul class='list-unstyled'>
+                  <li>{{lv.commit}}</li> </ul>">
+                {{lv.commit|truncatechars:13}}
+            </a></td>
+	    {% endif %}
+          </tr>{% endfor %}
+          </tbody>
+        </table>
+      </div>
     </div>
   </div>
 
-
 </div>
+
+</div> <!-- end of 10-column section -->
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configvars.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configvars.html
index e40c225..ca2e1ea 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configvars.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/configvars.html
@@ -6,14 +6,10 @@
 <li>Configuration</li>
 {% endblock %}
 
-{% block nav-configuration %}
-  <li class="active"><a href="{% url 'configuration' build.pk %}">Configuration</a></li>
-{% endblock %}
-
 {% block buildinfomain %}
 <!-- page title -->
-<div class="row-fluid span10">
- <div class="page-header">
+<div class="col-md-10">
+ <div class="page-header build-data">
  <h1>
   {% if request.GET.filter and objects.paginator.count > 0 or request.GET.search and objects.paginator.count > 0 %}
       {{objects.paginator.count}} variable{{objects.paginator.count|pluralize}} found
@@ -24,11 +20,10 @@
   {%endif%}
  </h1>
  </div>
-</div>
 
 <!-- configuration table -->
-<div class="row-fluid pull-right span10" id="navTab">
-  <ul class="nav nav-pills">
+<div id="navTab">
+  <ul class="nav nav-tabs">
     <li class=""><a href="{% url 'configuration' build.id %}">Summary</a></li>
     <li class="active"><a href="#" >BitBake variables</a></li>
   </ul>
@@ -37,14 +32,21 @@
   <div id="variables" class="tab-pane">
 
   {% if objects.paginator.count == 0 %}
-  <div class="row-fluid">
-      <div class="alert">
-        <form class="no-results input-append" id="searchform">
-            <input id="search" name="search" class="input-xxlarge" type="text" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %}
-            <button class="btn" type="submit" value="Search">Search</button>
-            <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all variables</button>
-        </form>
+  <div class="alert alert-warning">
+    <form class="no-results form-inline" id="searchform">
+      <div class="form-group">
+        <div class="btn-group">
+          <input class="form-control" id="search" name="search" type="text" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>
+          {% if request.GET.search %}
+          <a href="javascript:$('#search').val('');searchform.submit()" tabindex="-1">
+            <span class="remove-search-btn-variables glyphicon glyphicon-remove-circle"></span>
+          </a>
+          {% endif %}
+        </div>
       </div>
+      <button class="btn btn-default" type="submit" value="Search">Search</button>
+      <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all variables</button>
+    </form>
   </div>
 
   {% else %}
@@ -53,81 +55,91 @@
   {% for variable in objects %}
     <tr class="data">
         <td class="variable_name"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td>
-        <td class="variable_value"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:153}}</a></td>
-        <td class="file"><a data-toggle="modal" href="#variable-{{variable.pk}}">
+        <td class="variable_value">{{variable.variable_value|truncatechars:153}}</td>
+        <td class="file">
             {% if variable.vhistory.all %}
                 {% for path in variable.vhistory.all|filter_setin_files:file_filter %}
                     {{path}}<br/>
                 {% endfor %}
             {% endif %}
-        </a></td>
+        </td>
         <td class="description">
             {% if variable.description %}
                 {{variable.description}}
                 <a href="http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-{{variable.variable_name|variable_parent_name}}" target="_blank">
-                <i class="icon-share get-info"></i></a>
+                <span class="glyphicon glyphicon-new-window get-info"></span></a>
             {% endif %}
         </td>
     </tr>
 {% endfor %}
-
+</tbody>
+</table>
+</div> <!-- table-responsive -->
 {% include "basetable_bottom.html" %}
 {% endif %}
 </div> <!-- endvariables -->
 
 <!-- file list popups -->
 {% for variable in objects %}
-    {% if variable.vhistory.count %}
-    <div id="variable-{{variable.pk}}" class="modal hide fade" tabindex="-1" role="dialog">
-        <div class="modal-header">
-            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
-            <h3>History of {{variable.variable_name}}</h3>
+{% if variable.vhistory.count %}
+<div id="variable-{{variable.pk}}" class="modal fade" tabindex="-1" role="dialog">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
+        <h3>History of {{variable.variable_name}}</h3>
+      </div>
+      <div class="modal-body">
+        {% if variable.variable_value %}
+        {% if variable.variable_value|length < 570 %}
+        <h4>{{variable.variable_name}} value is:</h4>
+        <p>
+        {{variable.variable_value}}
+        </p>
+        {% else %}
+        <h4>{{variable.variable_name}} value is:</h4>
+        <p>
+        <span>{{variable.variable_value|string_slice:':570'}}
+          <span class="full"> {{variable.variable_value|string_slice:'570:'}}
+          </span>
+          <a href="#" class="full-show">...</a>
+        </span>
+        </p>
+        <a href="#" class="full-hide">Collapse variable value <i class="icon-caret-up"></i>
+        </a>
+        {% endif %}
+        {% else %}
+        <div class="alert alert-info">The value of <strong>{{variable.variable_name}}</strong> is an empty string</div>
+        {% endif %}
+        <h4>The value was set in the following configuration files:</h4>
+        <div class="table-responsive">
+          <table class="table table-bordered table-hover">
+            <thead>
+              <tr>
+                <th>Order</th>
+                <th>Configuration file</th>
+                <th>Operation</th>
+                <th>Line</th>
+              </tr>
+            </thead>
+            <tbody>
+              {% for vh in variable.vhistory.all %}
+              <tr>
+                <td>{{forloop.counter}}</td><td class="file">{{vh.file_name}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
+              </tr>
+              {%endfor%}
+            </tbody>
+          </table>
         </div>
-        <div class="modal-body">
-            {% if variable.variable_value %}
-              {% if variable.variable_value|length < 570 %}
-                <h4>{{variable.variable_name}} value is:</h4>
-                <p>
-                    {{variable.variable_value}}
-                </p>
-              {% else %}
-                <h4>{{variable.variable_name}} value is:</h4>
-                <p>
-                    <span>{{variable.variable_value|string_slice:':570'}}
-                        <span class="full"> {{variable.variable_value|string_slice:'570:'}}
-                        </span>
-                        <a class="btn btn-mini full-show">...</a>
-                    </span>
-                </p>
-                <a class="btn btn-mini full-hide">Collapse variable value <i class="icon-caret-up"></i>
-                </a>
-              {% endif %}
-            {% else %}
-                <div class="alert alert-info">The value of <strong>{{variable.variable_name}}</strong> is an empty string</div>
-            {% endif %}
-            <h4>The value was set in the following configuration files:</h4>
-            <table class="table table-bordered table-hover">
-                <thead>
-                    <tr>
-                        <th>Order</th>
-                        <th>Configuration file</th>
-                        <th>Operation</th>
-                        <th>Line number</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    {% for vh in variable.vhistory.all %}
-                    <tr>
-                        <td>{{forloop.counter}}</td><td>{{vh.file_name}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
-                    </tr>
-                    {%endfor%}
-                </tbody>
-            </table>
-        </div>
-    </div>
-    {% endif %}
+      </div>
+    </div><!-- /.modal-content -->
+  </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
+{% endif %}
 {% endfor %}
 
 </div> <!-- buildinfomain -->
 
+</div> <!-- end 10-column section -->
+
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customise_btn.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customise_btn.html
index 2e54a9d..38c258a 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customise_btn.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customise_btn.html
@@ -1,15 +1,15 @@
-<button class="btn btn-block layer-exists-{{data.layer_version.pk}} customise-btn"  data-recipe="{{data.pk}}"
+<button class="btn btn-default btn-block layer-exists-{{data.layer_version.pk}} customise-btn"  data-recipe="{{data.pk}}"
     {% if data.layer_version.pk not in extra.current_layers %}
     style="display:none;"
     {% endif %}
   >
   Customise
 </button>
-<button class="btn btn-block layer-add-{{data.layer_version.pk}} layerbtn" data-layer='{ "id": {{data.layer_version.pk}}, "name":  "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.pk%}"}' data-directive="add"
+<button class="btn btn-default btn-block layer-add-{{data.layer_version.pk}} layerbtn" data-layer='{ "id": {{data.layer_version.pk}}, "name":  "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.pk%}"}' data-directive="add"
     {% if data.layer_version.pk in extra.current_layers %}
     style="display:none;"
     {% endif %}
   >
-  <i class="icon-plus"></i>
+  <i class="glyphicon glyphicon-plus"></i>
   Add layer
 </button>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customrecipe.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customrecipe.html
index ea3c9c7..945fc97 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customrecipe.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/customrecipe.html
@@ -4,7 +4,7 @@
 {% load static %}
 {% block pagecontent %}
 
-<div class="section">
+{% with recipe.get_base_recipe_file as base_recipe_file %}
   <ul class="breadcrumb">
     <li>
       <a href="{% url 'project' project.id %}">{{project.name}}</a>
@@ -17,7 +17,6 @@
       {{recipe.name}} ({{recipe.layer_version.layer.name}})
     </li>
   </ul>
-</div>
 
 <script src="{% static 'js/customrecipe.js' %}"></script>
 <script>
@@ -29,6 +28,7 @@
         includedPackagesCount: {{recipe.includes_set.count}},
         baseRecipeId: {{recipe.base_recipe.pk}},
         xhrPackageListUrl: "{% url 'xhr_customrecipe_packages' recipe.pk %}",
+        xhrCustomRecipeUrl: "{% url 'xhr_customrecipe_id' recipe.pk %}",
       }
     };
 
@@ -40,95 +40,137 @@
     }
   });
 </script>
+
+<!-- Delete recipe modal -->
+<div id="delete-recipe-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-body">
+        <p>Are you sure you want to delete the <strong>{{recipe.name}}</strong>
+         custom image?</p>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-primary" id="delete-custom-recipe-confirmed">
+          <span data-role="submit-state">Delete custom image</span>
+          <span data-role="loading-state" style="display:none">
+            <span class="fa-pulse">
+            <i class="fa-pulse icon-spinner"></i>
+          </span>
+            &nbsp;Deleting custom image...
+          </span>
+        </button>
+        <button type="button" class="btn btn-link" data-dismiss="modal">Cancel</button>
+      </div>
+    </div><!-- /.modal-content -->
+  </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
+<!-- end delete recipe modal -->
+
 <!-- package dependencies modal -->
-<div style="display:none" id="package-deps-modal" class="modal hide fade in" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
-    <h3><span class="package-to-add-name"></span> dependencies</h3>
-  </div>
-  <div class="modal-body">
-    <p>Based on information from a previous build it is likely that adding <strong class="package-to-add-name"></strong> will also add the following packages to your custom image:</p>
-    <ul id="package-add-dep-list">
-    </ul>
-  </div>
-  <div class="modal-footer">
-    <p class="help-block text-left">Total package size: <strong id="package-deps-total-size"></strong></p>
-    <button id="add-package-deps-modal-btn" type="submit" class="btn btn-primary" data-dismiss="modal">Add package</button>
-    <button class="btn" data-dismiss="modal">Cancel</button>
-  </div>
-</div>
+<div id="package-deps-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
+        <h3><span class="package-to-add-name"></span> dependencies</h3>
+      </div>
+      <div class="modal-body">
+        <p>Based on information from a previous build it is likely that adding <strong class="package-to-add-name"></strong> will also add the following packages to your custom image:
+        </p>
+        <ul id="package-add-dep-list">
+        </ul>
+      </div>
+      <div class="modal-footer">
+        <p class="help-block text-left">Total package size: <strong id="package-deps-total-size"></strong></p>
+        <button id="add-package-deps-modal-btn" type="submit" class="btn btn-primary" data-dismiss="modal">Add packages</button>
+        <button class="btn btn-link" data-dismiss="modal">Cancel</button>
+      </div>
+    </div><!-- /.modal-content -->
+  </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
 <!-- end package dependencies modal -->
 
 <!-- package reverse dependencies modal -->
-<div style="display:none" id="package-reverse-deps-modal" class="modal hide fade in" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
-    <h3><span class="package-to-rm-name"></span> reverse dependencies</h3>
-  </div>
-  <div class="modal-body">
-    <p> <strong class="reverse-deps-count"></strong> <span class="reverse-deps-package"></span> in your image <span class="reverse-deps-depends"></span> on <strong class="package-to-rm-name"></strong>:</p>
-    <ul id="package-reverse-dep-list">
-    </ul>
-    <p>In order to remove <strong class="package-to-rm-name"></strong>, you must remove <span class="reverse-deps-this"></span> <strong class="reverse-deps-count"></strong> <span class="reverse-deps-package"></span> as well.</p>
-  </div>
-  <div class="modal-footer">
-    <p class="help-block text-left">Total package size: <strong id="package-reverse-deps-total-size"></strong></p>
-    <button id="rm-package-reverse-deps-modal-btn" type="submit" class="btn btn-primary" data-dismiss="modal">Remove all <span class="reverse-deps-count-plus1"></button>
-    <button class="btn" data-dismiss="modal">Cancel</button>
-  </div>
-</div>
+<div style="display:none" id="package-reverse-deps-modal" class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
+        <h3><span class="package-to-rm-name"></span> reverse dependencies</h3>
+      </div>
+      <div class="modal-body">
+        <p> <strong class="reverse-deps-count"></strong> <span class="reverse-deps-package"></span> in your image <span class="reverse-deps-depends"></span> on <strong class="package-to-rm-name"></strong>:</p>
+        <ul id="package-reverse-dep-list">
+        </ul>
+        <p>In order to remove <strong class="package-to-rm-name"></strong>, you must remove <span class="reverse-deps-this"></span> <strong class="reverse-deps-count"></strong> <span class="reverse-deps-package"></span> as well.</p>
+      </div>
+      <div class="modal-footer">
+        <p class="help-block text-left">Total package size: <strong id="package-reverse-deps-total-size"></strong></p>
+        <button id="rm-package-reverse-deps-modal-btn" type="submit" class="btn btn-primary" data-dismiss="modal">Remove all <span class="reverse-deps-count-plus1"></button>
+        <button class="btn btn-link" data-dismiss="modal">Cancel</button>
+      </div>
+    </div><!-- /.modal-content -->
+  </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
 <!-- end package dependencies modal -->
 
-
-<div class="row-fluid span11">
-  <div class="alert alert-success lead" id="image-created-notification" style="margin-top: 15px; display: none">
-    <button type="button" data-dismiss="alert" class="close">x</button>
-    Your custom image <strong>{{recipe.name}}</strong> has been created. You can now add or remove packages as needed.
-  </div>
-  <div class="page-header air">
-    <h1>
-      {{recipe.name}}
-      <small>({{recipe.layer_version.layer.name}})</small>
-    </h1>
-  </div>
+<div class="alert alert-success alert-dismissible change-notification" id="image-created-notification" style="display: none">
+	<button type="button" data-dismiss="alert" class="close">&times;</button>
+	<p>Your custom image <strong>{{recipe.name}}</strong> has been created. You can now add or remove packages as needed.</p>
+</div>
+<div class="page-header">
+  <h1>
+    {{recipe.name}}
+    <small>({{recipe.layer_version.layer.name}})</small>
+  </h1>
 </div>
 
-<div class="row-fluid span11">
-  <div class="span8">
+<div class="row">
+  <div class="col-md-8">
     <div class="button-place btn-group" style="width: 100%">
-      <a class="btn btn-large span6 build-custom-image" href="#" style="width: 50%">
+      <a class="btn btn-default btn-lg build-custom-image" href="#" style="width: 50%">
         Build {{recipe.name}}
       </a>
-      <a href="{% url 'customrecipedownload' project.id recipe.id %}" class="btn btn-large span6" style="width: 50%">
+      <a href="{% url 'customrecipedownload' project.id recipe.id %}" class="btn btn-default btn-lg" style="width: 50%"
+               {% if not base_recipe_file %}
+               disabled="disabled"
+               {% endif %}>
         Download recipe file
+        {% if not base_recipe_file %}
+        <i class="icon-question-sign get-help"
+           data-original-title="The recipe file doesn't exist yet, so you cannot download it. You need to build your custom image first"></i>
+        {% endif %}
       </a>
     </div>
-    <div id="no-results-special-{{table_name}}" class="air" style="display:none;">
-      <div class="alert">
+    <div id="no-results-special-{{table_name}}" class="top-air" style="display:none;">
+      <div class="alert alert-warning">
         <h3>No packages found</h3>
-        <p>You might consider <a href={% url 'projectsoftwarerecipes' project.id %}>searching the list of recipes</a> instead. If you find a recipe that matches the name of the package you want:</p>
+        <p>You might consider <a href={% url 'projectsoftwarerecipes' project.id %}>searching the list of recipes</a> instead.</p> 
+        <p>If you find a recipe that matches the name of the package you want:</p>
         <ol>
           <li>Add the layer providing the recipe to your project</li>
           <li>Build the recipe</li>
           <li>Once the build completes, come back to this page and search for the package</li>
         </ol>
-        <form class="input-append no-results">
-          <input type="text" class="input-xlarge no-results-search-input" id="no-results-search-input-{{table_name}}" name="search" placeholder="Search {{title|lower}}" />
-          <a href="#" class="add-on btn" id="no-results-remove-search-btn" tabindex="-1">
-            <i class="icon-remove"></i>
-          </a>
-          <button class="btn search-submit-{{table_name}}">Search</button>
+        <form class="form-inline no-results">
+          <div class="form-group">
+            <div class="btn-group">
+              <input type="text" class="form-control no-results-search-input" id="no-results-search-input-{{table_name}}" name="search" placeholder="Search {{title|lower}}" />
+              <span class="remove-search-btn-{{table_name}} glyphicon glyphicon-remove-circle" id="no-results-remove-search-btn" tabindex="-1"></span>
+            </div>
+          </div>
+          <button class="btn btn-default search-submit-{{table_name}}">Search</button>
           <button class="btn btn-link" id="no-results-show-all-packages">Show all packages</button>
         </form>
       </div>
-      </div>
-      <div id="results-found-{{table_name}}">
+    </div>
+    <div id="results-found-{{table_name}}">
       <div id="packages-table">
         {% if recipe.get_all_packages.count == 0 and last_build == None %}
         <h2> Add | Remove packages </h2>
-        <div class="alert alert-info air">
+        <div class="alert alert-info">
           <p class="lead">Toaster has no package information for {{recipe.name}}. To generate package information, build {{recipe.name}}</p>
-          <button class="btn btn-info btn-large build-custom-image" style="margin:20px 0 10px 0;">Build {{recipe.name}}</button>
+          <button class="btn btn-info btn-lg build-custom-image" style="margin:20px 0 10px 0;">Build {{recipe.name}}</button>
         </div>
         {% else %}
         {# ToasterTable for Adding remove packages #}
@@ -137,87 +179,90 @@
         {% include "toastertable.html" %}
         {% endif %}
       </div>
-      </div>
     </div>
-    <div class="span4 well">
-      <h2 style="margin-bottom:20px;">About {{recipe.name}}</h2>
+  </div>
+  <div class="col-md-4">
+    <div class="well">
+      <h2>About {{recipe.name}}</h2>
 
-      <dl>
+      <dl class="item-info">
         <dt>
-          Approx. packages included
-          <i class="icon-question-sign get-help" title="" data-original-title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></i>
+        Approx. packages included
+        <span class="glyphicon glyphicon-question-sign get-help" title="" data-original-title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></span>
         </dt>
         <dd id="total-num-packages">{{recipe.get_all_packages.count}}</dd>
         <dt>
-          Approx. package size
-          <i class="icon-question-sign get-help" title="" data-original-title="Package size is based on information from previous builds, so we can never be sure it is 100% accurate"></i>
+        Approx. package size
+        <span class="glyphicon glyphicon-question-sign get-help" title="Package size is based on information from previous builds, so we can never be sure it is 100% accurate"></span>
         </dt>
         <dd id="total-size-packages">{{approx_pkg_size.size__sum|filtered_filesizeformat}}</dd>
         {% if last_build %}
         <dt>Last build</dt>
         <dd>
-          <i class="icon-ok-sign success"></i>
-          <a href="{% url 'projectbuilds' project.id%}">{{last_build.completed_on|date:"d/m/y H:i"}}</a>
+        <span class="glyphicon glyphicon-ok-circle"></span>
+        <a href="{% url 'projectbuilds' project.id%}">{{last_build.completed_on|date:"d/m/y H:i"}}</a>
         </dd>
         {% endif %}
-        <dt>Layer</dt>
-        <dd><a href="{% url 'layerdetails' project.id recipe.layer_version.pk %}">{{recipe.layer_version.layer.name}}</a></dd>
         <dt>Based on</dt>
         <dd><a href="{% url 'recipedetails' project.id recipe.base_recipe.pk %}">{{recipe.base_recipe.name}}</a></dd>
         {% if recipe.get_last_successful_built_target %}
         {% with recipe.get_last_successful_built_target as last_build_target %}
         <dt>Last build</dt>
         <dd>
-          <i class="icon-ok-sign success"></i>
-          <a href="{% url 'builddashboard' last_build_target.build.pk %}">
-            {{last_build_target.build.completed_on|date:"d/m/y H:i"}}</a>
+        <span class="glyphicon glyphicon-ok-circle"></span>
+        <a href="{% url 'builddashboard' last_build_target.build.pk %}">
+          {{last_build_target.build.completed_on|date:"d/m/y H:i"}}</a>
         </dd>
         {% endwith %}
         {% endif %}
+        {% if base_recipe_file %}
         <dt>Recipe file</dt>
         <dd>
-          <code>{{recipe.name}}_{{recipe.version}}.bb</code>
-          <a href="{% url 'customrecipedownload' project.pk recipe.pk %}"><i class="icon-share" title="" data-original-title="View recipe file"></i></a>
+        <code>{{recipe.name}}_{{recipe.version}}.bb</code>
+        <a href="{% url 'customrecipedownload' project.pk recipe.pk %}"><span class="glyphicon glyphicon-download-alt" data-toggle="tooltip" title="Download recipe file"></span></a>
         </dd>
+        {% endif %}
         <dt>Layer</dt>
         <dd><a href="{% url 'layerdetails' project.id recipe.layer_version.pk %}">{{recipe.layer_version.layer.name}}</a></dd>
         {% if recipe.summary %}
         <dt>
-          Summary
+        Summary
         </dt>
         <dd>
-          {{recipe.summary}}
+        {{recipe.summary}}
         </dd>
         {% endif %}
         {% if recipe.description %}
         <dt>
-          Description
+        Description
         </dt>
         <dd>
-          {{recipe.description}}
+        {{recipe.description}}
         </dd>
         {% endif %}
         <dt>Version</dt>
         <dd>
-          {{recipe.version}}
+        {{recipe.version}}
         </dd>
         {% if recipe.section %}
         <dt>Section</dt>
         <dd>
-          {{recipe.section}}
+        {{recipe.section}}
         </dd>
         {% endif %}
         <dt>License</dt>
         <dd>
-          {{recipe.license}}
-          <i class="icon-question-sign get-help" title="" data-original-title="All custom images have their license set to MIT. This is because the license applies only to the recipe (.bb) file, and not to the image itself. To see which licenses apply to the image you must check the license manifest generated with each build"></i>
-          </dd>
+        {{recipe.license}}
+        <span class="glyphicon glyphicon-question-sign get-help" title="All custom images have their license set to MIT. This is because the license applies only to the recipe (.bb) file, and not to the image itself. To see which licenses apply to the image you must check the license manifest generated with each build"></i>
+        </dd>
       </dl>
-      <!--
-      <i class="icon-trash no-tooltip"></i>
-      <a href="#" class="error" id="delete">Delete custom image</a>
-        -->
+      <i class="icon-trash text-danger"></i>
+      <a href="#delete-recipe-modal" data-target="#delete-recipe-modal" data-toggle="modal" class="text-danger" id="delete-recipe">
+        Delete custom image
+      </a>
     </div>
   </div>
+</div>
 
-  {% endblock %}
+{% endwith %}{# end base_recipe_file #}
+{% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html
index f40c21d..15adfbc 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html
@@ -6,8 +6,8 @@
 
 {# only paginate if 10 or more rows unfiltered, all pages #}
 {% if object_count >= 10 %}
-<div class="pagination">
-  <ul>
+<div id="pagination-detail">
+  <ul class="pagination">
 {%if objects.has_previous %}
     <li><a href="javascript:reload_params({'page':{{objects.previous_page_number}}})">&laquo;</a></li>
 {%else%}
@@ -23,16 +23,18 @@
 {%endif%}
   </ul>
 
-  <div class="pull-right">
-    <span class="help-inline" style="padding-bottom:10px;">Show rows:</span>
-    <select class="pagesize">
-      {% with "10 25 50 100 150" as list%}
+  <form class="navbar-form navbar-right">
+    <div class=form-group">
+      <label>Show rows:</label>
+      <select class="pagesize form-control">
+        {% with "10 25 50 100 150" as list%}
         {% for i in list.split %}
-          <option value="{{i}}">{{i}}</option>
+        <option value="{{i}}">{{i}}</option>
         {% endfor %}
-      {% endwith %}
-    </select>
-  </div>
+        {% endwith %}
+      </select>
+    </div>
+  </form>
 </div>
 
 <!-- Update page display settings -->
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_search_header.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_search_header.html
index 7bea3f4..7a98659 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_search_header.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_search_header.html
@@ -18,51 +18,55 @@
   });
 });
 </script>
-<div class="row-fluid">
+
 {% if objects.paginator.count > 10 or request.GET.search %}
   {% if objects.paginator.count == 0 %}
-  <div class="alert">
-    <h3>No {{search_what}} found</h3>
-    <form id="searchform" class="input-append">
-  {% else %}
-    <form id="searchform" class="navbar-search input-append pull-left">
-  {% endif %}
-
-      <input id="search" class="input-xlarge" type="text" placeholder="Search {{search_what}}" name="search" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}">
-      <input type="hidden" value="name:+" name="orderby">
-      <input type="hidden" value="l" name="page">
-  {% if request.GET.search %}
-      <a class="add-on btn search-clear">
-        <i class="icon-remove"></i>
-      </a>
-  {% endif %}
-      <button type="submit" class="btn">Search</button>
-  {% if objects.paginator.count == 0 %}
-      <button type="submit" class="btn btn-link search-clear">
-        Show all {{search_what}}
-      </button>
-  {% endif %}
-    </form>
-{% endif %}
-
-{% if objects.paginator.count == 0 %}
-  </div> {# end alert #}
-{% else %}
-  {% if object_count > 10 %}
-  <div class="pull-right">
-    <span class="help-inline" style="padding-top:5px;">Show rows:</span>
-    <select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
-    {% with "10 25 50 100 150" as list%}
-      {% for i in list.split %}
-        {% if request.session.limit == i %}
-      <option value="{{i}}" selected>{{i}}</option>
-        {% else %}
-      <option value="{{i}}">{{i}}</option>
+  <div class="alert alert-warning">
+    <h4>No {{search_what}} found</h4>
+    <form id="searchform" class="form-inline">
+      {% else %}
+      <form id="searchform" class="navbar-form navbar-left detail-page-controls">
         {% endif %}
-      {% endfor %}
-    {% endwith %}
-    </select>
-  </div>
+
+        <div class="form-group">
+          <div class="btn-group">
+            <input id="search" class="form-control" type="text" placeholder="Search {{search_what}}" name="search" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}">
+            <input type="hidden" value="name:+" name="orderby">
+            <input type="hidden" value="l" name="page">
+            {% if request.GET.search %}
+            <span class="remove-search-btn-detail-search search-clear glyphicon glyphicon-remove-circle"></span>
+            {% endif %}
+          </div>
+        </div>
+        <button type="submit" class="btn btn-default">Search</button>
+        {% if objects.paginator.count == 0 %}
+        <button type="submit" class="btn btn-link search-clear">
+          Show all {{search_what}}
+        </button>
+        {% endif %}
+      </form>
+      {% endif %}
+
+      {% if objects.paginator.count == 0 %}
+  </div> {# end alert #}
+  {% else %}
+  {% if object_count > 10 %}
+  <form class="navbar-form navbar-right">
+    <div class="form-group">
+      <label>Show rows:</label>
+      <select class="pagesize form-control">
+        {% with "10 25 50 100 150" as list%}
+        {% for i in list.split %}
+        {% if request.session.limit == i %}
+        <option value="{{i}}" selected>{{i}}</option>
+        {% else %}
+        <option value="{{i}}">{{i}}</option>
+        {% endif %}
+        {% endfor %}
+        {% endwith %}
+      </select>
+    </div>
+  </form>
   {% endif %}
 {% endif %}
-</div> {# row-fluid #}
+
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html
index 6ce292e..4434df4 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html
@@ -10,14 +10,14 @@
         <!-- Table header row; generated from "tablecols" entry in the context dict -->
         <tr>
             {% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{% endif %} {%if tc.class %}{{tc.clclass}}{% endif %}">
-                {%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
-                {%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="muted">{{tc.name}}</span>{%endif%}
-                {%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
+                {%if tc.qhelp%}<span class="glyphicon glyphicon-question-sign get-help" title="{{tc.qhelp}}"></span>{%endif%}
+                {%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="text-muted">{{tc.name}}</span>{%endif%}
+                {%if tc.ordericon%} <span class="icon-caret-{{tc.ordericon}}"></span>{%endif%}
                 {% if request.GET.search and forloop.first %}
                     <span class="badge badge-info">{{objects.paginator.count}}</span>
                 {% endif %}
                 {%if tc.filter%}<div class="btn-group pull-right">
-                    <a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-mini {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-small btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <i class="icon-filter filtered"></i> </a>
+                    <a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-mini {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-sm btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <i class="glyphicon glyphicon-filter filtered"></i> </a>
                 </div>{%endif%}
             </th>{% endfor %}
         </tr>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html
index ecb46bf..ab89e27 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/dirinfo.html
@@ -18,6 +18,13 @@
 {% load projecttags %}
 
 <script type='text/javascript'>
+  var ctx = {};
+  ctx.target = "{{target.target}}";
+
+  $(document).ready(function(){
+    $("#menu-"+ctx.target).addClass("active");
+  });
+
     function setupTreetable() {
         $("#dirtable").treetable({
             expandable: true,
@@ -59,9 +66,6 @@
     function formatRow(o) {
         /* setup tr-wide formatting */
         var tr = '<tr class="';
-        if (o.link_to != null) {
-            tr += 'muted ';
-        }
         if (o.isdir && o.childcount) {
             tr += 'branch" data-tt-branch="true" ';
         }
@@ -75,7 +79,7 @@
         tr += '>';
 
         /* setup td specific formatting */
-        var link_to = td(o.link_to);
+				var link_to = '<td class="text-muted">' + o.link_to + '</td>';
         var size = '<td class = "sizecol">' + o.size + '</td>'
         var permission = td(o.permission);
         var owner = td(o.owner);
@@ -96,7 +100,7 @@
             if (o.childcount) {
                 name += '<a href="">';
             }
-            name += '<i class="icon-folder-close"></i>';
+            name += '<span class="glyphicon glyphicon-folder-close"></span>';
             name += '&nbsp;' + o.name;
             if (o.childcount) {
                 name += '</a>';
@@ -110,10 +114,10 @@
                   namespan = 3;
                 }
                 var colspan = 'colspan="' + namespan + '"';
-                name = '<td ' + colspan + '><i class="icon-file"></i>';
+                name = '<td ' + colspan + '><span class="glyphicon glyphicon-file"></span>';
             }
             else {
-                name = '<td><i class="icon-hand-right"></i>';
+                name = '<td class="text-muted"><span class="glyphicon glyphicon-hand-right"></span>';
             }
             name += '&nbsp;' + o.name;
             name += '</td>';
@@ -134,10 +138,10 @@
             package += '</a>';
             if (o.installed_package != o.package) {
                 /* make class muted and add hover help */
-                package += '<span class="muted"> as ' + o.installed_package + ' </span>';
-                package += '<i class="icon-question-sign get-help hover-help" ';
+                package += '<span class="text-muted"> as ' + o.installed_package + ' </span>';
+                package += '<span class="glyphicon glyphicon-question-sign get-help hover-help" ';
                 package += 'title="' + o.package + ' was renamed at packaging time and was installed in your image as ' + o.installed_package + '">';
-                package += '</i>';
+                package += '</span>';
             }
         }
         package = td(package);
@@ -184,22 +188,22 @@
     }
 </script>
 
-<div class="span10">
+<div class="col-md-10">
 
-    <div class="page-header">
+    <div class="page-header build-data">
         <h1> {{target.target}} </h1>
     </div>
 
-    <ul class="nav nav-pills">
-        <li class="">
+    <ul class="nav nav-tabs">
+        <li>
             <a href="{% url 'target' build.id target.id %}">
-            <i class="icon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></i>
+            <span class="glyphicon glyphicon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></span>
                 Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
             </a>
         </li>
         <li class="active">
             <a href="{% url 'dirinfo' build.id target.id %}">
-                <i class="icon-question-sign get-help" title="The directories and files in the root file system of this image"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The directories and files in the root file system of this image"></span>
                 Directory structure
             </a>
         </li>
@@ -235,7 +239,7 @@
             </tbody>
         </table>
     </div> <!-- directory-structure -->
-</div> <!-- span10 -->
+</div> <!-- col-md-10 -->
 
 {% endblock buildinfomain %}
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/editcustomimage_modal.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/editcustomimage_modal.html
index 8046c08..baa36c0 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/editcustomimage_modal.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/editcustomimage_modal.html
@@ -6,32 +6,36 @@
 required context:
   build - a Build object
 -->
-<div class="modal hide fade in" aria-hidden="false" id="edit-custom-image-modal">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
-    <h3>Which image do you want to edit?</h3>
-  </div>
+<div class="modal fade" aria-hidden="false" id="edit-custom-image-modal">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
+        <h3>Which image do you want to edit?</h3>
+      </div>
 
-  <div class="modal-body">
-    <div class="row-fluid">
-      {% for recipe in build.get_custom_image_recipes %}
-        <label class="radio">
-          {{recipe.name}}
-          <input type="radio" class="form-control" name="select-custom-image"
-                 data-url="{% url 'customrecipe' build.project.id recipe.id %}">
-        </label>
-      {% endfor %}
+      <div class="modal-body">
+        {% for recipe in build.get_custom_image_recipes %}
+        <div class="radio">
+          <label>
+            <input type="radio" name="select-custom-image"
+                                data-url="{% url 'customrecipe' build.project.id recipe.id %}">
+            {{recipe.name}}
+          </label>
+        </div>
+        {% endfor %}
+        <span class="help-block text-danger" id="invalid-custom-image-help" style="display:none">
+          Please select a custom image to edit.
+        </span>
+      </div>
+
+      <div class="modal-footer">
+        <button class="btn btn-primary btn-lg" data-url="#"
+                                               data-action="edit-custom-image" disabled>
+          Edit custom image
+        </button>
+      </div>
     </div>
-    <span class="help-block error" id="invalid-custom-image-help" style="display:none">
-      Please select a custom image to edit.
-    </span>
-  </div>
-
-  <div class="modal-footer">
-    <button class="btn btn-primary btn-large" data-url="#"
-       data-action="edit-custom-image" disabled>
-      Edit custom image
-    </button>
   </div>
 </div>
 
@@ -46,7 +50,7 @@
     return $('[name="select-custom-image"]:checked');
   };
 
-  radios.change(function () {
+  function enableSubmit() {
     if (getSelectedRadios().length === 1) {
       editCustomImageButton.removeAttr('disabled');
       error.hide();
@@ -55,6 +59,14 @@
       editCustomImageButton.attr('disabled', 'disabled');
       error.show();
     }
+  };
+
+  $("#edit-custom-image-modal").on("shown.bs.modal", function() {
+    enableSubmit();
+  });
+
+  radios.change(function () {
+    enableSubmit();
   });
 
   editCustomImageButton.click(function () {
@@ -67,5 +79,10 @@
       error.show();
     }
   });
+
+  // Select the first custom image listed. Radio button groups
+  // should always have an option selected by default
+  $("input:radio:first").attr("checked", "checked");
+
 });
 </script>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/filtersnippet.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/filtersnippet.html
index 1101aa8..1286ca3 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/filtersnippet.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/filtersnippet.html
@@ -1,57 +1,72 @@
 {% load projecttags %}
 <!-- '{{f.class}}' filter -->
 {% with f.class as  key %}
-<form id="filter_{{f.class}}" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="true">
+
+<div id="filter_{{f.class}}" class="modal fade"  tabindex="-1" role="dialog" aria-hidden="true">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <form>
         <input type="hidden" name="search" value="{%if request.GET.search %}{{request.GET.search}}{%endif%}"/>
         <div class="modal-header">
-            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
-            {% if search_term %}
-                 <h3>Filter {{total_count}} {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} matching '{{search_term}}' by '{{tc.name}}'</h3>
-            {% else %}
-                <h3>Filter {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} by '{{tc.name}}'</h3>
-            {% endif %}
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
+          {% if search_term %}
+          <h3>Filter {{total_count}} {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} matching '{{search_term}}' by '{{tc.name}}'</h3>
+          {% else %}
+          <h3>Filter {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} by '{{tc.name}}'</h3>
+          {% endif %}
         </div>
         <div class="modal-body">
-            <p>{{f.label}}</p>
-            <label class="radio">
-                <input type="radio" name="filter" {%if request.GET.filter%}{{f.options|check_filter_status:request.GET.filter}} {%else%} checked {%endif%} value="" data-key="{{key}}">  All {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%}
+          <p>{{f.label}}</p>
+          <div class="radio">
+            <label>
+              <input type="radio" name="filter" {%if request.GET.filter%}{{f.options|check_filter_status:request.GET.filter}} {%else%} checked {%endif%} value="" data-key="{{key}}">  All {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%}
             </label>
-            {% for option in f.options %}
-                {% if option.1 == 'daterange' %}
-                  <div class="form-inline">
-                      <label class="radio">
-                          <input type="radio" name="filter" id="filter_value_{{key}}" {%if key == daterange_selected %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
-                {% else %}
-                  {% if 1 %}
-                      <label class="radio">
-                          <input type="radio" name="filter" {%if request.GET.filter == option.1 %}checked{%endif%}  value="{{option.1}}" data-key="{{key}}"> {{option.0}}
-                  {% comment "do not disable radio selections by count for now" %}{% else %}
-                      <label class="radio muted">
-                          <input type="radio" name="filter" disabled {%if request.GET.filter == option.1 %}checked{%endif%}  value="{{option.1}}" data-key="{{key}}"> {{option.0}}
+          </div>
+          {% for option in f.options %}
+          <div class="radio">
+            {% if option.1 == 'daterange' %}
+            <label>
+              <input type="radio" name="filter" id="filter_value_{{key}}" {%if key == daterange_selected %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
+              {% else %}
+              {% if 1 %}
+              <label>
+                <input type="radio" name="filter" {%if request.GET.filter == option.1 %}checked{%endif%}  value="{{option.1}}" data-key="{{key}}"> {{option.0}}
+                {% comment "do not disable radio selections by count for now" %}{% else %}
+                <label class="text-muted">
+                  <input type="radio" name="filter" disabled {%if request.GET.filter == option.1 %}checked{%endif%}  value="{{option.1}}" data-key="{{key}}"> {{option.0}}
                   {% endcomment %}{% endif %}
-                {% endif %}
-                {% if option.3 %}<i class="icon-question-sign get-help" data-placement="right" title="{{option.3}}"></i>{% endif %}
-                  </label>
+                  {% endif %}
+                  {% if option.3 %}<i class="icon-question-sign get-help" data-placement="right" title="{{option.3}}"></i>{% endif %}
+                </label></div>
                 {% if option.1 == 'daterange' %}
-                  <input type="text" id="date_from_{{key}}" name="date_from_{{key}}" disabled class="input-small" /><label class="help-inline">to</label>
-                  <input type="text" id="date_to_{{key}}" name="date_to_{{key}}" disabled class="input-small"  />
-                  <label class="help-inline get-help" >(dd/mm/yyyy)</label>
-                  </div>
-                {% endif %}
-            {% endfor %}
+                <input type="text" id="date_from_{{key}}" name="date_from_{{key}}" disabled class="input-sm" /><label class="help-inline">to</label>
+                <input type="text" id="date_to_{{key}}" name="date_to_{{key}}" disabled class="input-sm"  />
+                <label class="help-inline get-help" >(dd/mm/yyyy)</label>
+        </div>
+        {% endif %}
+        {% endfor %}
         <!-- daterange persistence -->
         {% if last_date_from and last_date_to %}
         <input type="hidden" id="last_date_from_{{key}}" name="last_date_from" value="{{last_date_from}}"/>
         <input type="hidden" id="last_date_to_{{key}}" name="last_date_to"   value="{{last_date_to}}"/>
         {% endif %}
+    </div>
+    <div class="modal-footer">
+      <div class="row">
+        <div class="col-md-6">
+          <button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button>
         </div>
-        <div class="modal-footer">
-            <button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button>
-            {% if request.GET.filter %}
-                {% if request.GET.filter|string_remove_regex:':.*' != f.options.0.1|string_remove_regex:':.*' %}
-                <span class="help-inline pull-left">You can only apply one filter to the table. This filter will override the current filter.</span>
-                {% endif %}
-            {% endif %}
+        <div class="col-md-6">
+          {% if request.GET.filter %}
+          {% if request.GET.filter|string_remove_regex:':.*' != f.options.0.1|string_remove_regex:':.*' %}
+          <p class="text-right text-muted">You can only apply one filter to the table. This filter will override the current filter.</p>
+          {% endif %}
+          {% endif %}
         </div>
-</form>
+      </div>
+    </div>
+      </form>
+  </div><!-- /.modal-content -->
+</div><!-- /.modal-dialog -->
+</div> <!--/.modal -->
 {% endwith %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html
index 33aa8ce..b3eabe1 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html
@@ -7,7 +7,7 @@
 
 <h2>{{title}} (<span class="table-count-{{table_name}}"></span>)
   {% if project.release %}
-  <i class="icon-question-sign get-help heading-help" title="This page lists {{title}} compatible with the release selected for this project, which is {{project.release.description}}"></i>
+  <i class="glyphicon glyphicon-question-sign get-help" title="This page lists {{title|lower}} compatible with the release selected for this project, which is {{project.release.description}}"></i>
   {% endif %}
 </h2>
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/importlayer.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/importlayer.html
index 1848f41..1f42696 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/importlayer.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/importlayer.html
@@ -5,135 +5,163 @@
 {% block title %} Import layer - {{project.name}} - Toaster {% endblock %}
 {% block pagecontent %}
 
-{% include "projecttopbar.html" %}
+<div class="row">
+  {% include "projecttopbar.html" %}
+  {% if project and project.release %}
+  <script src="{% static 'js/layerDepsModal.js' %}"></script>
+  <script src="{% static 'js/importlayer.js' %}"></script>
+  <script>
+  $(document).ready(function (){
+    var ctx = {
+      xhrImportLayerUrl : "{% url 'xhr_importlayer' %}",
+    };
 
+    try {
+      importLayerPageInit(ctx);
+    } catch (e) {
+      document.write("Sorry, An error has occurred loading this page");
+      console.warn(e);
+    }
+  });
+  </script>
 
-        {% if project and project.release %}
-                  <script src="{% static 'js/layerDepsModal.js' %}"></script>
-                  <script src="{% static 'js/importlayer.js' %}"></script>
-                  <script>
-                    $(document).ready(function (){
-                      var ctx = {
-                        xhrImportLayerUrl : "{% url 'xhr_importlayer' %}",
-                      };
+  <form class="col-md-11">
+    <span class="help-block">The layer you are importing must be compatible with <strong>{{project.release.description}}</strong>, which is the release you are using in this project.</span>
+    <div class="alert alert-error" id="import-error" style="display:none">
+      <button type="button" class="close" data-dismiss="alert">&times;</button>
+      <h3>&nbsp;</h3>
+      <p></p>
+      <ul></ul>
+    </div>
+    <fieldset>
+      <div class="form-group" id="layer-name-ctrl">
+        <label class="control-label" for="import-layer-name">
+          Layer name
+          <span class="glyphicon glyphicon-question-sign get-help" title="Something like 'meta-mylayer'. Your layer name must be unique and can only include letters, numbers and dashes"></span>
+        </label>
+        <input class="form-control" id="import-layer-name" type="text" required autofocus data-autocomplete="off" data-provide="typeahead">
+        <span class="help-block" style="display: none;" id="invalid-layer-name-hint">A valid layer name can only include letters, numbers and dashes</span>
+        <span class="help-inline" style="display: none;" id="duplicated-layer-name-hint"></span>
+      </div>
+    </fieldset>
+    <div id="duplicate-layer-info" style="display:none">
+      <div class="alert alert-warning">
+        <h3>A layer called <a href="" class="dup-layer-link"><span class="dup-layer-name"></span></a> already exists</h3>
+        <p>Layer names must be unqiue. Please use a different layer name.</p>
+        <dl id="git-layer-dup" style="display:none;">
+          <dt>
+          The <span class="dup-layer-name"></span> repository url is
+          </dt>
+          <dd>
+          <span id="dup-layer-vcs-url"></span>
+          </dd>
+          <dt>
+          The <span class="dup-layer-name"></span> revision is
+          </dt>
+          <dd>
+          <span id="dup-layer-revision"></span>
+          </dd>
+        </dl>
+	<dl id="local-layer-dup" style="display:none;">
+	  <dt>
+	    The <span class="dup-layer-name"></span> directory is
+	  </dt>
+	  <dd>
+	    <span id="dup-local-source-dir-name"></span>
+	  </dd>
+	</dl>
+        <p><a href="" class="dup-layer-link">View the <span class="dup-layer-name"></span> layer information</a></p>
+      </div>
+    </div>
+    <fieldset class="fields-apart-from-layer-name" id="repo-select">
+      <legend class="radioLegend">Where is the layer source code?</legend>
+      <div class="radio">
+	<label>
+          <input type="radio" id="git-repo-radio" name="repo" value="git" checked="checked">
+	  In a <strong>Git repository</strong>
+	</label>
+	<p class="help-block radio-help">To build the layer Toaster must be able to access the Git repository, otherwise builds will fail. Toaster will fetch and checkout your chosen Git revision every time you start a build.</p>
+      </div>
+      <div class="radio">
+	<label>
+          <input type="radio" id="local-dir-radio" name="repo" value="local">
+	  In a <strong>directory</strong>
+	</label>
+	<p class="help-block radio-help">Use this option for quick layer development, by simply providing the path to the layer source code.</p>
+      </div>
+    </fieldset>
+    <fieldset class="fields-apart-from-layer-name" id="git-repo">
+      <legend>Git repository information</legend>
+      <div class="form-group">
+        <label for="layer-git-repo-url">
+          Git repository URL
+          <span class="glyphicon glyphicon-question-sign get-help" title="Fetch/clone URL of the repository. Currently, Toaster only supports Git repositories." ></span>
+        </label>
+        <input type="text" id="layer-git-repo-url" class="form-control" required>
+      </div>
+      <div class="form-group">
+        <label for="layer-subdir">
+          Repository subdirectory
+          <span class="text-muted">(optional)</span>
+          <span class="glyphicon glyphicon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></span>
+        </label>
+        <input type="text" class="form-control" id="layer-subdir">
+      </div>
+      <div class="form-group" id="layer-revision-ctrl">
+        <label for="layer-git-ref">
+          Git revision
+          <span class="glyphicon glyphicon-question-sign get-help" title="You can provide a Git branch, a tag or a commit SHA as the revision"></span>
+        </label>
+        <input type="text" class="form-control" id="layer-git-ref" required>
+        <span class="help-inline" style="display:none;" id="invalid-layer-revision-hint"></span>
+      </div>
+    </fieldset>
 
-                      try {
-                        importLayerPageInit(ctx);
-                      } catch (e) {
-                        document.write("Sorry, An error has occurred loading this page");
-                        console.warn(e);
-                      }
-                    });
-                  </script>
+    <fieldset class="fields-apart-from-layer-name" id="local-dir" style="display:none;">
+      <legend>Layer directory information</legend>
+      <div class="form-group">
+        <label for="local-dir-path" class="control-label">Enter the absolute path to the layer directory</label>
+        <input type="text" class="form-control" id="local-dir-path" required/>
+        <p class="help-block" id="hintError-dir-path-starts-with-slash" style="display:none;">The absolute path must start with "/".</p>
+        <p class="help-block" id="hintError-dir-path" style="display:none;">The directory path cannot include spaces or any of these characters: . \ ? % * : | " " &lt; &gt;</p>
+      </div>
+    </fieldset>
 
-                <form class="span11">
-                   <fieldset>
-                      <legend>Layer repository information</legend>
-                      <span class="help-block">The layer you are importing must be compatible with <strong>{{project.release.description}}</strong>, which is the release you are using in this project.</span>
-                      <div class="alert alert-error" id="import-error" style="display:none">
-                        <button type="button" class="close" data-dismiss="alert">&times;</button>
-                        <h3>&nbsp;</h3>
-                        <p></p>
-                        <ul></ul>
-                      </div>
+    <fieldset class="fields-apart-from-layer-name">
+      <legend>
+        Layer dependencies
+        <small class="text-muted">(optional)</small>
+        <span class="glyphicon glyphicon-question-sign get-help heading-help" title="Other layers this layer depends upon"></span>
+      </legend>
+      <ul class="list-unstyled lead" id="layer-deps-list">
+      </ul>
+      <div class="form-inline">
+        <div class="form-group">
+          <input type="text" autocomplete="off" data-minLength="1" data-autocomplete="off" data-provide="typeahead" placeholder="Type a layer name" id="layer-dependency" class="form-control">
+        </div>
+        <button class="btn btn-default" id="add-layer-dependency-btn">
+          Add layer
+        </button>
+        <span class="help-inline">You can only add layers Toaster knows about</span>
+    </fieldset>
+    <div class="top-air fields-apart-from-layer-name" id="form-actions">
+      <button class="btn btn-primary btn-lg" data-toggle="modal" id="import-and-add-btn" data-target="#dependencies-message" disabled>Import and add to project</button>
+      <span class="help-inline" id="import-git-layer-and-add-hint" style="vertical-align: middle;">To import a layer you need to enter a layer name, a Git repository URL and a Git revision (branch, tag or commit)</span>
+      <span class="help-inline" id="import-local-dir-and-add-hint" style="vertical-align: middle;display:none;">To import a layer you need to enter a layer name and the absolute path to the layer directory</span>
+    </div>
+  </div>
+</form>
 
-                      <div class="control-group" id="layer-name-ctrl">
-                        <label class="control-label air" for="import-layer-name">
-                            Layer name
-                            <span class="icon-question-sign get-help" title="Something like 'meta-mylayer'. Your layer name must be unique and can only include letters, numbers and dashes"></span>
-                        </label>
-                        <div class="controls">
-                          <input id="import-layer-name" type="text" required autofocus data-autocomplete="off" data-provide="typeahead">
-                          <span class="help-inline" style="display: none;" id="invalid-layer-name-hint">A valid layer name can only include letters, numbers and dashes</span>
-                          <span class="help-inline" style="display: none;" id="duplicated-layer-name-hint"></span>
-                        </div>
+  {% else %} {#project and project release#}
+  <div class="page-header">
+    <h1>Import layer</h1>
+  </div>
+  <div class="alert alert-info" id="import-error" >
+    <h3>Unsupported project type</h3>
+    <p>This project does not support importing layers.</p>
+    <ul></ul>
+  </div>
 
-                      </div>
-                      <div id="duplicate-layer-info" style="display:none">
-                        <div class="alert warning">
-                          <h3>A layer called <a href="" class="dup-layer-link"><span class="dup-layer-name"></span></a> already exists</h3>
-                          <p>Layer names must be unqiue. Please use a different layer name.</p>
-                        </div>
-                        <dl>
-                          <dt>
-                            The <span class="dup-layer-name"></span> repository url is
-                          </dt>
-                          <dd>
-                            <span id="dup-layer-vcs-url"></span>
-                          </dd>
-
-                          <dt>
-                            The <span class="dup-layer-name"></span> revision is
-                          </dt>
-                          <dd>
-                            <span id="dup-layer-revision"></span>
-                          </dd>
-                        </dl>
-
-                        <p><a href="" class="dup-layer-link">View the <span class="dup-layer-name"></span> layer information</a></p>
-
-                      </div>
-
-                      <div class="fields-apart-from-layer-name">
-                        <label for="layer-git-repo-url" class="project-form">
-                            Git repository URL
-                            <span class="icon-question-sign get-help" title="Fetch/clone URL of the repository. Currently, Toaster only supports Git repositories." ></span>
-                        </label>
-
-                        <input type="text" id="layer-git-repo-url" class="input-xxlarge" required>
-                        <label class="project-form" for="layer-subdir">
-                            Repository subdirectory
-                            <span class="muted">(optional)</span>
-                            <span class="icon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></span>
-                        </label>
-                        <input type="text"  id="layer-subdir">
-
-                          <div class="control-group" id="layer-revision-ctrl">
-                            <label class="control-label project-form" for="layer-git-ref">Git revision
-                              <span class="icon-question-sign get-help" title="You can provide a Git branch, a tag or a commit SHA as the revision"></span>
-                            </label>
-                            <div class="controls">
-                              <input type="text" class="span3" id="layer-git-ref" required>
-                                <span class="help-inline" style="diaply:none;" id="invalid-layer-revision-hint"></span>
-                            </div>
-                          </div>
-                       </div>
-
-                    </fieldset>
-
-                    <div class="fields-apart-from-layer-name">
-                    <fieldset class="air">
-                        <legend>
-                            Layer dependencies
-                            <span class="muted">(optional)</span>
-                            <span class="icon-question-sign get-help heading-help" title="Other layers this layer depends upon"></span>
-                        </legend>
-                        <ul class="unstyled configuration-list" id="layer-deps-list">
-                        </ul>
-                        <div class="input-append">
-                            <input type="text" autocomplete="off" data-minLength="1" data-autocomplete="off" data-provide="typeahead" placeholder="Type a layer name" id="layer-dependency" class="input-xlarge">
-                            <a class="btn" id="add-layer-dependency-btn">
-                                Add layer
-                            </a>
-                        </div>
-                        <span class="help-inline">You can only add layers Toaster knows about</span>
-                    </fieldset>
-                    <div class="air" id="form-actions">
-                      <button class="btn btn-primary btn-large" data-toggle="modal" id="import-and-add-btn" data-target="#dependencies-message" disabled>Import and add to project</button>
-                        <span class="help-inline" id="import-and-add-hint" style="vertical-align: middle;">To import a layer you need to enter a layer name, a Git repository URL and a revision (branch, tag or commit)</span>
-                    </div>
-                  </div>
-                  </form>
-
-          {% else %} {#project and project release#}
-                <div class="page-header">
-                    <h1>Import layer</h1>
-                </div>
-                      <div class="alert alert-info" id="import-error" >
-                        <h3>Unsupported project type</h3>
-                        <p>This project does not support importing layers.</p>
-                        <ul></ul>
-                      </div>
-
-          {% endif %}
+  {% endif %}
+</div>
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing.html
index a1b5cdc..4986632 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing.html
@@ -6,24 +6,22 @@
 
 {% block title %} Welcome to Toaster {% endblock %}
 {% block pagecontent %}
-    <div class="container-fluid">
-      <div class="row-fluid">
-        <div class="hero-unit span12 well-transparent">
-          <div class="row-fluid">
+      <div class="row">
+        <div class="jumbotron well-transparent">
 
-            <div class="span6">
+            <div class="col-md-6">
               <h1>This is Toaster</h1>
 
               <p>A web interface to <a href="http://www.openembedded.org">OpenEmbedded</a> and <a href="http://www.yoctoproject.org/tools-resources/projects/bitbake">BitBake</a>, the <a href="http://www.yoctoproject.org">Yocto Project</a> build system.</p>
 
 		          {% if lvs_nos %}
-		            <p class="hero-actions">
-		              <a class="btn btn-primary btn-large" href="{% url 'newproject' %}">
+		            <p class="top-air">
+		              <a class="btn btn-primary btn-lg" href="{% url 'newproject' %}">
 			              To start building, create your first Toaster project
 		              </a>
 		            </p>
 		          {% else %}
-                <div class="alert alert-info lead air">
+                <div class="alert alert-info lead top-air">
                   Toaster has no layer information. Without layer information, you cannot run builds. To generate layer information you can:
                   <ul>
                     <li>
@@ -36,7 +34,7 @@
                 </div>
               {% endif %}
 
-              <ul class="unstyled">
+              <ul class="list-unstyled lead">
                 <li>
                   <a href="http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html">
                     Read the Toaster manual
@@ -51,12 +49,11 @@
               </ul>
             </div>
 
-            <div class="span6">
-              <img alt="Yocto Project" class="thumbnail" src="{% static 'img/toaster_bw.png' %}"/>
+            <div class="col-md-6">
+              <img alt="Yocto Project Toaster" class="img-thumbnail" src="{% static 'img/toaster_bw.png' %}"/>
             </div>
 
-          </div>
         </div>
       </div>
-    </div>
+
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing_not_managed.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing_not_managed.html
index 9b37f55..baa4b72 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing_not_managed.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/landing_not_managed.html
@@ -8,8 +8,8 @@
 
 {% block pagecontent %}
 
-  <div class="container-fluid">
-   <div class="row-fluid">
+  <div class="container">
+   <div class="row">
     <!-- Empty - no build module -->
     <div class="page-header top-air">
      <h1>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layer_btn.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layer_btn.html
index 10de37d..b2f73eb 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layer_btn.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layer_btn.html
@@ -1,17 +1,17 @@
-<button class="btn btn-danger btn-block layer-exists-{{data.pk}} layerbtn"  data-layer='{ "id": {{data.pk}}, "name":  "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="remove"
+<a class="btn btn-danger btn-block layer-exists-{{data.pk}} layerbtn"  data-layer='{ "id": {{data.pk}}, "name":  "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="remove"
     {% if data.pk not in extra.current_layers %}
     style="display:none;"
     {% endif %}
   >
-  <i class="icon-trash"></i>
+  <span class="glyphicon glyphicon-trash"></span>
   Remove layer
-</button>
-<button class="btn btn-block layer-add-{{data.pk}} layerbtn" data-layer='{ "id": {{data.pk}}, "name":  "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="add"
+</a>
+<a class="btn btn-default btn-block layer-add-{{data.pk}} layerbtn" data-layer='{ "id": {{data.pk}}, "name":  "{{data.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.pk%}"}' data-directive="add"
     {% if data.pk in extra.current_layers %}
     style="display:none;"
     {% endif %}
   >
-  <i class="icon-plus"></i>
+  <span class="glyphicon glyphicon-plus"></span>
   Add layer
-</button>
+</a>
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html
index 82be370..f1569bd 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html
@@ -6,270 +6,367 @@
 {% block title %} {{layerversion.layer.name}} - {{project.name}} - Toaster {% endblock %}
 {% block pagecontent %}
 
-<div class="section">
-  <ul class="breadcrumb">
-    <li>
-      <a href="{% url 'project' project.id %}">{{project.name}}</a>
-      <span class="divider">&rarr;</span>
-    </li>
-    <li><a href="{% url 'projectlayers' project.id %}">Compatible layers</a>
-      <span class="divider">&rarr;</span>
-    </li>
-    <li class="active">
-      {{layerversion.layer.name}} ({{layerversion.get_vcs_reference|truncatechars:13}})
-    </li>
-  </ul>
+<div id="delete-layer-modal" class="modal fade" tabindex="-1" role="dialog"
+    data-keyboard="false" data-backdrop="static">
+  <div class="modal-dialog" role="document">
+    <div class="modal-content">
+      <div class="modal-body">
+		  Are you sure you want to delete the <strong>{{layerversion.layer.name}}</strong> layer?
+      </div>
+      <div class="modal-footer">
+        <button type="button" id="layer-delete-confirmed" class="btn
+            btn-primary">Delete layer</button>
+        <button type="button" class="btn btn-default btn-link" data-dismiss="modal">Cancel</button>
+      </div>
+    </div>
+  </div>
 </div>
 
-{# If this is not an imported layer then hide the edit ui #}
-{% if not layerversion.layer_source_id or layerversion.layer_source.sourcetype != layerversion.layer_source.TYPE_IMPORTED %}
-<style scoped>
- .icon-pencil {
-   display:none;
- }
-.delete-current-value{
-  display: none;
-}
- li .icon-trash {
-   display:none;
- }
- .add-deps {
-   display:none;
- }
-</style>
-{% endif %}
+<div class="row">
+  <div class="col-md-12">
+    <ul class="breadcrumb">
+      <li>
+        <a href="{% url 'project' project.id %}">{{project.name}}</a>
+        <span class="divider">&rarr;</span>
+      </li>
+      <li><a href="{% url 'projectlayers' project.id %}">Compatible layers</a>
+        <span class="divider">&rarr;</span>
+      </li>
+      <li class="active">
+        {{layerversion.layer.name}} ({{layerversion.get_vcs_reference|truncatechars:13}})
+      </li>
+    </ul>
 
-
-<script src="{% static 'js/layerdetails.js' %}"></script>
-<script>
-
-  $(document).ready(function (){
-    var ctx = {
-      xhrUpdateLayerUrl : "{% url 'xhr_updatelayer' %}",
-      layerVersion : {
-        name : "{{layerversion.layer.name}}",
-        id : {{layerversion.id}},
-        commit: "{{layerversion.get_vcs_reference}}",
-      {%if layerversion.id in projectlayers %}
-        inCurrentPrj : true,
-      {% else %}
-        inCurrentPrj : false,
-      {% endif %}
-        layerdetailurl : "{% url 'layerdetails' project.id layerversion.id  %}",
-        sourceId: {{layerversion.layer_source_id|json}},
-      }
-    };
-
-    try {
-      layerDetailsPageInit(ctx);
-    } catch (e) {
-      document.write("Sorry, An error has occurred loading this page");
-      console.warn(e);
+    {# If this is not an imported layer then hide the edit ui #}
+    {% if layerversion.layer_source != layer_source.TYPE_IMPORTED %}
+    <style scoped>
+    .glyphicon-edit {
+      display:none;
     }
-  });
-</script>
+    .delete-current-value{
+      display: none;
+    }
+    li .glyphicon-trash {
+      display:none;
+    }
+    .add-deps {
+     display:none;
+    }
+    </style>
+    {% endif %}
 
-<div class="row-fluid span11">
-  <div class="page-header">
-    <h1>{{layerversion.layer.name}} <small class="commit"
-          {% if layerversion.get_vcs_reference|length > 13 %}
-        data-toggle="tooltip" title="{{layerversion.get_vcs_reference}}"
-        {% endif %}>
-        ({{layerversion.get_vcs_reference|truncatechars:13}})</small></h1>
-  </div>
-</div>
+    <script src="{% static 'js/layerdetails.js' %}"></script>
+    <script>
 
-<!-- container for tabs -->
-<div class="row-fluid span7 tabbable">
-  <div class="alert alert-info lead" id="alert-area" style="display:none">
-    <button type="button" class="close" id="dismiss-alert">&times;</button>
-    <span id="alert-msg"></span>
-  </div>
-  <ul class="nav nav-pills">
-    <li class="active">
-      <a data-toggle="tab" href="#information" id="details-tab">Layer details</a>
-    </li>
-    <li>
-      <a data-toggle="tab" href="#recipes" class="muted" id="targets-tab">Recipes (<span class="table-count-recipestable"></span>)</a>
-    </li>
-    <li>
-      <a data-toggle="tab" href="#machines" class="muted" id="machines-tab">Machines (<span class="table-count-machinestable"></span>)</a>
-    </li>
-  </ul>
-  <div class="tab-content">
-    <span class="button-place">
-      {% if layerversion.id not in projectlayers %}
-      <button id="add-remove-layer-btn" data-directive="add" class="btn btn-large btn-block">
-        <span class="icon-plus"></span>
-        Add the {{layerversion.layer.name}} layer to your project
-      </button>
-      {% else %}
-      <button id="add-remove-layer-btn" data-directive="remove" class="btn btn-block btn-large btn-danger">
-        <span class="icon-trash"></span>
-        Remove the {{layerversion.layer.name}} layer from your project
-      </button>
-      {% endif %}
-    </span>
-
-    <!-- layer details pane -->
-    <div id="information" class="tab-pane active">
-      <dl class="dl-horizontal">
-        <dt class="">
-          <i class="icon-question-sign get-help" title="Fetch/clone URL of the repository"></i>
-          Repository URL
-        </dt>
-        <dd>
-          <span class="current-value">{{layerversion.layer.vcs_url}}</span>
-          {% if layerversion.get_vcs_link_url %}
-          <a href="{{layerversion.get_vcs_link_url}}/" class="icon-share get-info" target="_blank"></a>
+    $(document).ready(function(){
+      var ctx = {
+        xhrUpdateLayerUrl : "{% url 'xhr_layer' project.id layerversion.pk %}",
+        layerVersion : {
+          name : "{{layerversion.layer.name}}",
+          id : {{layerversion.id}},
+          commit: "{{layerversion.get_vcs_reference}}",
+          {%if layerversion.id in projectlayers %}
+          inCurrentPrj : true,
+          {% else %}
+          inCurrentPrj : false,
           {% endif %}
-          <form id="change-repo-form" class="control-group" style="display:none">
-            <div class="input-append">
-              <input type="text" class="input-xlarge" value="{{layerversion.layer.vcs_url}}">
-                <button data-layer-prop="vcs_url" class="btn change-btn" type="button">Save</button>
-                <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a>
-              </div>
-            </form>
-            <i class="icon-pencil" ></i>
-          </dd>
-          <dt>
-            <i class="icon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></i>
-            Repository subdirectory
-          </dt>
-          <dd>
-            <span class="muted" style="display:none">Not set</span>
-            <span class="current-value">{{layerversion.dirpath}}</span>
-            {% if layerversion.get_vcs_dirpath_link_url %}
-            <a href="{{layerversion.get_vcs_dirpath_link_url}}" class="icon-share get-info" target="_blank"></a>
-            {% endif %}
-            <form id="change-subdir-form" style="display:none;">
-              <div class="input-append">
-                <input type="text" value="{{layerversion.dirpath}}">
-                  <button data-layer-prop="dirpath" class="btn change-btn" type="button">Save</button>
-                  <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a>
-                </div>
-              </form>
-              <i id="change-subdir" class="icon-pencil"></i>
-              <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
-            </dd>
-            <dt>
-              <i class="icon-question-sign get-help" title="The Git branch, tag or commit"></i>
-              Git revision
-            </dt>
-            <dd>
-              <span class="current-value">{{layerversion.get_vcs_reference}}</span>
-              <form style="display:none;">
-                <div class="input-append">
-                  <input type="text" value="{{layerversion.get_vcs_reference}}">
-                    <button  data-layer-prop="commit" class="btn change-btn" type="button">Save</button>
-                    <a href="#" style="display:none" class="btn btn-link cancel">Cancel</a>
-                  </div>
-                </form>
-                <i class="icon-pencil"></i>
-              </dd>
-              <dt>
-                <i class="icon-question-sign get-help" title="Other layers this layer depends upon"></i>
-                Layer dependencies
+          layerdetailurl : "{% url 'layerdetails' project.id layerversion.id  %}",
+          layer_source: {{layerversion.layer_source|json}},
+        },
+        layerSourceTypes: {{layer_source|json}},
+      };
+
+      try {
+        layerDetailsPageInit(ctx);
+      } catch (e) {
+        document.write("Sorry, An error has occurred loading this page");
+        console.warn(e);
+      }
+    });
+    </script>
+
+    <div class="page-header">
+      {% if layerversion.layer.local_source_dir %}
+      <h1>{{layerversion.layer.name}} <small class="commit" style="display:none;"></small>
+      </h1>
+      {% else %}
+      <h1>{{layerversion.layer.name}} <small class="commit"
+        {% if layerversion.get_vcs_reference|length > 13 %}
+           data-toggle="tooltip" title="{{layerversion.get_vcs_reference}}"
+        {% endif %}>({{layerversion.get_vcs_reference|truncatechars:13}})</small>
+      </h1>
+      {% endif %}
+    </div>
+    <div class="row">
+      <!-- container for tabs -->
+      <div class="col-md-8 tabbable">
+        <div class="alert alert-info lead" id="alert-area" style="display:none">
+          <button type="button" class="close" id="dismiss-alert">&times;</button>
+          <span id="alert-msg"></span>
+        </div>
+
+        {% if layerversion.id not in projectlayers %}
+         <button id="add-remove-layer-btn" data-directive="add" class="btn btn-default btn-lg btn-block">
+           <span class="glyphicon glyphicon-plus"></span>
+           Add the {{layerversion.layer.name}} layer to your project
+         </button>
+         {% else %}
+         <button id="add-remove-layer-btn" data-directive="remove" class="btn btn-default btn-block btn-lg btn-danger">
+           <span class="glyphicon glyphicon-trash"></span>
+           Remove the {{layerversion.layer.name}} layer from your project
+         </button>
+         {% endif %}
+
+        <ul class="nav nav-tabs">
+          <li class="active">
+            <a data-toggle="tab" href="#information" id="details-tab">Layer details</a>
+          </li>
+          <li>
+            <a data-toggle="tab" href="#recipes" class="text-muted" id="targets-tab">Recipes (<span class="table-count-recipestable"></span>)</a>
+          </li>
+          <li>
+            <a data-toggle="tab" href="#machines" class="text-muted" id="machines-tab">Machines (<span class="table-count-machinestable"></span>)</a>
+          </li>
+        </ul>
+        <div class="tab-content">
+
+          <!-- layer details pane -->
+          <div id="information" class="tab-pane active">
+           <h3>Layer source code location</h3>
+           {% if layerversion.layer.local_source_dir %}
+           <dl class="dl-horizontal" id="directory-info">
+             <dt>
+               Path to the layer directory
+             </dt>
+             <dd>
+               <code>{{layerversion.layer.local_source_dir}}</code>
+             </dd>
+           </dl>
+           {% else %}
+            <dl class="dl-horizontal" id="git-repo-info">
+              <dt class="">
+              <span class="glyphicon glyphicon-question-sign get-help" title="Fetch/clone URL of the repository"></span>
+              Repository URL
               </dt>
               <dd>
-                <ul class="unstyled current-value" id="layer-deps-list">
-                  {% for ld in layerversion.dependencies.all %}
-                  <li data-layer-id="{{ld.depends_on.id}}">
-                    <a data-toggle="tooltip" title="{{ld.depends_on.layer.vcs_url}} | {{ld.depends_on.get_vcs_reference}}" href="{% url 'layerdetails' project.id ld.depends_on.id %}">{{ld.depends_on.layer.name}}</a>
-                    <span class="icon-trash " data-toggle="tooltip" title="Delete"></span>
-                  </li>
-                  {% endfor %}
-                </ul>
-                <div class="input-append add-deps">
-                  <input type="text" autocomplete="off" data-minLength="1" data-autocomplete="off"  placeholder="Type a layer name" id="layer-dep-input">
-                    <a class="btn" id="add-layer-dependency-btn" >
-                      Add layer
-                    </a>
-                  </div>
-                  <span class="help-block add-deps">You can only add layers Toaster knows about</span>
-                </dd>
-              </dl>
+              <span class="current-value">{{layerversion.layer.vcs_url}}</span>
+              {% if layerversion.get_vcs_link_url %}
+              <a href="{{layerversion.get_vcs_link_url}}/" class="glyphicon glyphicon-new-window" target="_blank"></a>
+              {% endif %}
+              <form id="change-repo-form" class="form-inline" style="display:none">
+                <div class="form-group">
+                  <input type="text" class="form-control" value="{{layerversion.layer.vcs_url}}">
+                </div>
+              </form>
+              </dd>
+             {% if layerversion.dirpath %}
+              <dt>
+              <span class="glyphicon glyphicon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></span>
+              Repository subdirectory
+              </dt>
+              <dd>
+              <span class="text-muted" style="display:none">Not set</span>
+              <span class="current-value">{{layerversion.dirpath}}</span>
+              {% if layerversion.get_vcs_dirpath_link_url %}
+              <a href="{{layerversion.get_vcs_dirpath_link_url}}" class="glyphicon glyphicon-new-window" target="_blank"></a>
+              {% endif %}
+              <form id="change-subdir-form" class="form-inline" style="display:none;">
+                <div class="form-group">
+                  <input type="text" class="form-control" value="{{layerversion.dirpath}}">
+                </div>
+              </form>
+              </dd>
+              {% endif %}
+              <dt>
+              <span class="glyphicon glyphicon-question-sign get-help" title="The Git branch, tag or commit"></span>
+              Git revision
+              </dt>
+              <dd>
+              <span class="current-value">{{layerversion.get_vcs_reference}}</span>
+              <form style="display:none;" class="form-inline">
+                <div class="form-group">
+                  <input type="text" class="form-control" value="{{layerversion.get_vcs_reference}}">
+                </div>
+              </form>
+              </dd>
+            </dl>
+            {% endif %}
+            {% if layerversion.layer_source == layer_source.TYPE_IMPORTED %}
+            <button class="btn btn-default btn-lg" id="edit-layer-source" style="margin-left:220px;">Edit layer source code location</button>
+            {% endif %}
+           <form id="edit-layer-source-form" style="display:none;">
+             <fieldset>
+               <legend class="radioLegend">Where is the layer source code?</legend>
+               <div class="radio">
+                 <label>
+                   <input type="radio" name="source-location" id="repo" value="repo">
+                   In a <strong>Git repository</strong>
+                 </label>
+                 <p class="help-block" style="margin-left:20px;width:70%;">To build the layer Toaster must be able to access the Git repository, otherwise builds will fail. Toaster will fetch and checkout your chosen Git revision every time you start a build.</p>
+               </div>
+               <div class="radio" style="margin-top:15px;">
+                 <label>
+                   <input type="radio" name="source-location" id="dir" value="dir" checked>
+                   In a <strong>directory</strong>
+                 </label>
+                 <p class="help-block" style="margin-left:20px;width:70%;">Use this option for quick layer development, by simply providing the path to the layer source code.</p>
+               </div>
+             </fieldset>
+
+             <fieldset id="layer-git">
+               <legend>Git repository information</legend>
+               <div class="form-group">
+                 <label for="layer-git-repo-url">
+                   Git repository URL
+                   <span class="glyphicon glyphicon-question-sign get-help" title="Fetch/clone URL of the repository. Currently, Toaster only supports Git repositories." ></span>
+                 </label>
+                 <input type="text" id="layer-git-repo-url" class="form-control" value="{{layerversion.layer.vcs_url|default_if_none:''}}">
+               </div>
+               <div class="form-group">
+                 <label for="layer-subdir">
+                   Repository subdirectory
+                   <span class="text-muted">(optional)</span>
+                   <span class="glyphicon glyphicon-question-sign get-help" title="Subdirectory within the repository where the layer is located, if not in the root (usually only used if the repository contains more than one layer)"></span>
+                 </label>
+                 <input type="text" class="form-control" id="layer-subdir" value="{{layerversion.dirpath|default_if_none:''}}">
+               </div>
+               <div class="form-group" id="layer-revision-ctrl">
+                 <label for="layer-git-ref">Git revision
+                   <span class="glyphicon glyphicon-question-sign get-help" title="You can provide a Git branch, a tag or a commit SHA as the revision"></span>
+                 </label>
+                 <input type="text" class="form-control" id="layer-git-ref" value="{{layerversion.get_vcs_reference|default_if_none:''}}">
+                 <span class="help-inline" style="display:none;" id="invalid-layer-revision-hint"></span>
+               </div>
+             </fieldset>
+
+             <fieldset id="layer-dir">
+               <legend>Layer directory information</legend>
+               <div class="form-group">
+                 <label for="layer-dir-path">
+                   Enter the absolute path to the layer directory
+                 </label>
+                 <input type="text" id="layer-dir-path-in-details" class="form-control" value="{{layerversion.layer.local_source_dir}}" required>
+               </div>
+             </fieldset>
+
+             <div style="margin-top:25px;">
+               <a href="#" class="btn btn-primary btn-lg" id="save-changes-for-switch">Save changes</a>
+               <a href="#" class="btn btn-link btn-lg" id="cancel-changes-for-switch">Cancel</a>
+             </div>
+           </form>
+
+           <h3 class="top-air">Layer dependencies
+             <span class="glyphicon glyphicon-question-sign get-help" title="Other layers this layer depends upon"></span>
+           </h3>
+
+           <ul class="list-unstyled current-value lead" id="layer-deps-list">
+             {% for ld in layerversion.dependencies.all %}
+             <li data-layer-id="{{ld.depends_on.id}}">
+             <a data-toggle="tooltip" title="{{ld.depends_on.layer.vcs_url}} | {{ld.depends_on.get_vcs_reference}}" href="{% url 'layerdetails' project.id ld.depends_on.id %}">{{ld.depends_on.layer.name}}</a>
+             <span class="glyphicon glyphicon-trash " data-toggle="tooltip" title="Delete"></span>
+             </li>
+             {% endfor %}
+           </ul>
+           <form class="form-inline add-deps">
+             <div class="form-group">
+               <input class="form-control" type="text" autocomplete="off" data-minLength="1" data-autocomplete="off"  placeholder="Type a layer name" id="layer-dep-input">
+             </div>
+             <a class="btn btn-default" id="add-layer-dependency-btn" disabled="disabled">
+               Add layer
+             </a>
+             <span class="help-block add-deps">You can only add layers Toaster knows about</span>
+           </form>
+         </div>
+          <!-- end layerdetails tab -->
+          <!-- targets tab -->
+          <div id="recipes" class="tab-pane">
+            <!-- Recipe table -->
+            <div id="no-recipes-yet" class="alert alert-info" style="display:none">
+              <p>Toaster does not have recipe information for the <strong> {{layerversion.layer.name}} </strong> layer.</p>
+              <p>Toaster learns about layers when you build them. If this layer provides any recipes, they will be listed here after you build the <strong> {{layerversion.layer.name}} </strong> layer.</p>
             </div>
-            <!-- end layerdetails tab -->
-            <!-- targets tab -->
-            <div id="recipes" class="tab-pane">
-              <!-- Recipe table -->
-              <div id="no-recipes-yet" class="alert alert-info" style="display:none">
-                <p>Toaster does not have recipe information for the <strong> {{layerversion.layer.name}} </strong> layer.</p>
-                <p>Toaster learns about layers when you build them. If this layer provides any recipes, they will be listed here after you build the <strong> {{layerversion.layer.name}} </strong> layer.</p>
-              </div>
+            {% url 'layerrecipestable' project.id layerversion.id  as xhr_table_url %}
+            {% with "recipestable" as table_name %}
+            {% with "Recipes" as title %}
+            {% include 'toastertable-simple.html' %}
+            {% endwith %}
+            {% endwith %}
+          </div>
 
+          <div id="machines" class="tab-pane">
 
-
-              {% url 'layerrecipestable' project.id layerversion.id  as xhr_table_url %}
-              {% with "recipestable" as table_name %}
-              {% with "Recipes" as title %}
-              {% include 'toastertable-simple.html' %}
-              {% endwith %}
-              {% endwith %}
+            <div id="no-machines-yet" class="alert alert-info" style="display:none">
+              <p>Toaster does not have machine information for the <strong> {{layerversion.layer.name}} </strong> layer.</p>
+              <p>Sadly, machine information cannot be obtained from builds, so this page will remain empty.</p>
             </div>
 
-            <div id="machines" class="tab-pane">
 
-              <div id="no-machines-yet" class="alert alert-info" style="display:none">
-                <p>Toaster does not have machine information for the <strong> {{layerversion.layer.name}} </strong> layer.</p>
-                <p>Toaster learns about layers when you build them. If this layer provides any machines, they will be listed here after you build the <strong> {{layerversion.layer.name}} </strong> layer.</p>
-              </div>
+            <!-- Machines table -->
+            {% url 'layermachinestable' project.id layerversion.id  as xhr_table_url %}
+            {% with "machinestable" as table_name  %}
+            {% with "Machines" as title  %}
+            {% include 'toastertable-simple.html' %}
+            {% endwith %}
+            {% endwith %}
+          </div>
+        </div> <!-- end tab content -->
+      </div> <!-- end tabable -->
 
-
-              <!-- Machines table -->
-              {% url 'layermachinestable' project.id layerversion.id  as xhr_table_url %}
-              {% with "machinestable" as table_name  %}
-              {% with "Machines" as title  %}
-              {% include 'toastertable-simple.html' %}
-              {% endwith %}
-              {% endwith %}
-            </div>
-          </div> <!-- end tab content -->
-        </div> <!-- end tabable -->
-
-        <div class="row-fluid span4 well"> <!-- info side panel -->
+      <div class="col-md-4"> <!-- info side panel -->
+        <div class="well">
           <h2>About {{layerversion.layer.name}}</h2>
           <dl class="item-info">
 
             <dt>
-              Summary
-              <i class="icon-question-sign get-help" title="One-line description of the layer"></i>
+            Summary
+            <span class="glyphicon glyphicon-question-sign get-help" title="One-line description of the layer"></span>
             </dt>
             <dd>
-              <span class="muted" style="display:none">Not set</span>
-              <span class="current-value">{{layerversion.layer.summary|default_if_none:''}}</span>
-              <form style="display:none; margin-bottom:20px">
-                <textarea class="span12" rows="2">{% if layerversion.layer.summary %}{{layerversion.layer.summary}}{% endif %}</textarea>
-                <button class="btn change-btn" data-layer-prop="summary" type="button">Save</button>
-                <a href="#" class="btn btn-link cancel">Cancel</a>
-              </form>
-              <i class="icon-pencil"></i>
-              <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
+            <span class="text-muted" style="display:none">Not set</span>
+            <span class="current-value">{{layerversion.layer.summary|default_if_none:''}}</span>
+            <form style="display:none; margin-bottom:20px; margin-top:5px;">
+              <div class="form-group">
+                <textarea class="form-control" rows="2">{% if layerversion.layer.summary %}{{layerversion.layer.summary}}{% endif %}</textarea>
+              </div>
+              <button class="btn btn-default change-btn" data-layer-prop="summary" type="button">Save</button>
+              <a href="#" class="btn btn-link cancel">Cancel</a>
+            </form>
+            <span class="glyphicon glyphicon-edit"></span>
+            <span class="glyphicon glyphicon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
             </dd>
             <dt>
-              Description
+            Description
             </dt>
             <dd>
-              <span class="muted" style="display:none">Not set</span>
-              <span class="current-value">{{layerversion.layer.description|default_if_none:''}}</span>
-              <form style="display:none; margin-bottom:20px">
-                <textarea class="span12" rows="6">{% if layerversion.layer.description %}{{layerversion.layer.description}}{% endif %}</textarea>
-                <button class="btn change-btn" data-layer-prop="description" type="button" >Save</button>
-                <a href="#" class="btn btn-link cancel">Cancel</a>
-              </form>
-              <i class="icon-pencil"></i>
-              <span class="icon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
+            <span class="text-muted" style="display:none">Not set</span>
+            <span class="current-value">{{layerversion.layer.description|default_if_none:''}}</span>
+            <form style="display:none; margin-bottom:20px; margin-top:5px;">
+              <div class="form-group">
+                <textarea class="form-control" rows="6">{% if layerversion.layer.description %}{{layerversion.layer.description}}{% endif %}</textarea>
+              </div>
+              <button class="btn btn-default change-btn" data-layer-prop="description" type="button" >Save</button>
+              <a href="#" class="btn btn-link cancel">Cancel</a>
+            </form>
+            <span class="glyphicon glyphicon-edit"></span>
+            <span class="glyphicon glyphicon-trash delete-current-value" data-toggle="tooltip" title="Delete"></span>
             </dd>
-            {% if layerversion.layer.up_id %}
+            {% if layerversion.layer_source == layer_source.TYPE_LAYERINDEX  %}
             <dt>Layer index</dt>
             <dd>
-              <a href="http://layers.openembedded.org/layerindex/branch/{{layerversion.up_branch.name}}/layer/{{layerversion.layer.name}}">layer index link</a>
-
-          </dd>
+            <a href="http://layers.openembedded.org/layerindex/branch/{{layerversion.release.name}}/layer/{{layerversion.layer.name}}">Layer index {{layerversion.layer.name}}</a>
+            </dd>
+            {% endif %}
+          </dl>
+          {# Only show delete link for imported layers #}
+          {% if layerversion.layer_source == layer_source.TYPE_IMPORTED %}
+          <i class="icon-trash text-danger"></i>
+          <a href="#delete-layer-modal"  role="button" class="text-danger"
+              data-toggle="modal" data-target="#delete-layer-modal">Delete layer</a>
           {% endif %}
-
-        </dl>
+        </div>
       </div>
+    </div>
+  </div> <!-- close column 12 div -->
+</div> <!-- close top row div -->
 
-      {% endblock %}
+{% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/machine_btn.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/machine_btn.html
index 7b08f6a..5d93d7a 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/machine_btn.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/machine_btn.html
@@ -1,16 +1,16 @@
-<a href="{% url 'project' extra.pid %}?setMachine={{data.name}}" class="btn btn-block layer-exists-{{data.layer_version.id}}"
+<a href="{% url 'project' extra.pid %}?setMachine={{data.name}}" class="btn btn-default btn-block layer-exists-{{data.layer_version.id}}"
     {% if data.layer_version.pk not in extra.current_layers %}
     style="display:none;"
     {% endif %}
 >
   Select machine</a>
-<button class="btn btn-block layerbtn layer-add-{{data.layer_version.id}}" data-layer='{ "id": {{data.layer_version.id}}, "name":  "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.id %}"}' data-directive="add"
+<a class="btn btn-default btn-block layerbtn layer-add-{{data.layer_version.id}}" data-layer='{ "id": {{data.layer_version.id}}, "name":  "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.id %}"}' data-directive="add"
     {% if data.layer_version.pk in extra.current_layers %}
     style="display:none;"
     {% endif %}
 >
-  <i class="icon-plus"></i>
+  <span class="glyphicon glyphicon-plus"></span>
   Add layer
-  <i title="" class="icon-question-sign get-help" data-original-title="To enable this machine, you must first add the {{data.layer_version.layer.name}} layer to your project"></i>
-</button>
+  <span class="glyphicon glyphicon-question-sign get-help" title="To select this machine, you must first add the {{data.layer_version.layer.name}} layer to your project"></i>
+</a>
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/mrb_section.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/mrb_section.html
index b5e798d..b761ffe 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/mrb_section.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/mrb_section.html
@@ -1,8 +1,263 @@
 {% load static %}
-{% load projecttags %}
-{% load project_url_tag %}
 {% load humanize %}
+{% load project_url_tag %}
 <script src="{% static 'js/mrbsection.js' %}"></script>
+
+{% if mru %}
+  {% if mrb_type == 'project' %}
+    <h2>
+      Latest project builds
+
+      {% if project.is_default %}
+        <span class="glyphicon glyphicon-question-sign get-help heading-help" data-original-title="Builds in this project cannot be started from Toaster: they are started from the command line"></span>
+        {% endif %}
+    </h2>
+  {% else %}
+    <div class="page-header">
+      <h1>Latest builds</h1>
+    </div>
+  {% endif %}
+
+  <div id="latest-builds">
+    {% for build in mru %}
+      <div data-latest-build-result="{{build.id}}" class="alert build-result {% if build.outcome == build.SUCCEEDED %}alert-success{% elif build.outcome == build.FAILED %}alert-danger{% else %}alert-info{% endif %}">
+        <!-- project title -->
+        {% if mrb_type != 'project' %}
+          <div class="row project-name">
+            <div class="col-md-12">
+              <small>
+                <a class="alert-link text-uppercase" href="{% project_url build.project %}">
+                  {{build.project.name}}
+                </a>
+              </small>
+            </div>
+          </div>
+        {% endif %}
+
+        <div class="row" data-role="build-status-container">
+          <div class="col-md-12">
+            Loading...
+          </div>
+        </div>
+      </div>
+    {% endfor %}
+  </div>
+{% endif %}
+
+<!-- build main template -->
+<script id="build-template" type="text/x-jsrender">
+  <div class="col-md-3">
+    <!-- only show link for completed builds -->
+    <%if state == 'Succeeded' || state == 'Failed'%>
+      <a class="alert-link" href="<%:dashboard_url%>">
+        <span data-toggle="tooltip" data-role="targets-text" title="Recipes: <%:targets%>">
+          <%:targets_abbreviated%>
+        </span>
+      </a>
+    <%else targets_abbreviated !== ''%>
+      <span data-toggle="tooltip" data-role="targets-text" title="Recipes: <%:targets%>">
+        <%:targets_abbreviated%>
+      </span>
+    <%else%>
+      Fetching recipe names...
+    <%/if%>
+  </div>
+
+  <div data-build-state="<%:state%>">
+    <%if state == 'Parsing'%>
+      <%include tmpl='#parsing-recipes-build-template'/%>
+    <%else state == 'Queued'%>
+      <%include tmpl='#queued-build-template'/%>
+    <%else state == 'Succeeded' || state == 'Failed'%>
+      <%include tmpl='#succeeded-or-failed-build-template'/%>
+    <%else state == 'Cancelling'%>
+      <%include tmpl='#cancelling-build-template'/%>
+    <%else state == 'Starting'%>
+      <%include tmpl='#starting-template'/%>
+    <%else state == 'In Progress'%>
+      <%include tmpl='#in-progress-build-template'/%>
+    <%else state == 'Cancelled'%>
+      <%include tmpl='#cancelled-build-template'/%>
+    <%/if%>
+  </div>
+</script>
+
+<!-- queued build -->
+<script id="queued-build-template" type="text/x-jsrender">
+  <div class="col-md-5">
+    <span class="glyphicon glyphicon-question-sign get-help get-help-blue"
+          title="This build is waiting for the build directory to become available">
+    </span>
+
+    Build queued
+  </div>
+
+  <div class="col-md-4">
+    <!-- cancel button -->
+    <%include tmpl='#cancel-template'/%>
+  </div>
+</script>
+
+<!-- parsing recipes build -->
+<script id="parsing-recipes-build-template" type="text/x-jsrender">
+  <!-- progress bar and parse completion percentage -->
+  <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info">
+    <!-- progress bar -->
+    <div class="progress">
+      <div id="recipes-parsed-percentage-bar-<%:id%>"
+           style="width: <%:recipes_parsed_percentage%>%;"
+           class="progress-bar">
+      </div>
+    </div>
+  </div>
+
+  <div class="col-md-4 progress-info">
+    <!-- parse completion percentage -->
+    <span class="glyphicon glyphicon-question-sign get-help get-help-blue"
+          title="BitBake is parsing the layers required for your build">
+    </span>
+
+    Parsing <span id="recipes-parsed-percentage-<%:id%>"><%:recipes_parsed_percentage%></span>% complete
+
+    <%include tmpl='#cancel-template'/%>
+  </div>
+</script>
+
+<!-- in progress build; tasks still starting -->
+<script id="starting-template" type="text/x-jsrender">
+  <div class="col-md-5">
+    <span class="glyphicon glyphicon-question-sign get-help get-help-blue"
+          title="This build is waiting for tasks to start">
+    </span>
+
+    Tasks starting...
+  </div>
+
+  <div class="col-md-4">
+    <!-- cancel button -->
+    <%include tmpl='#cancel-template'/%>
+  </div>
+</script>
+
+<!-- in progress build; at least one task finished -->
+<script id="in-progress-build-template" type="text/x-jsrender">
+  <!-- progress bar and task completion percentage -->
+  <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info">
+    <!-- progress bar -->
+    <div class="progress" id="build-pc-done-title-<%:id%>">
+      <div id="build-pc-done-bar-<%:id%>"
+           style="width: <%:tasks_complete_percentage%>%;"
+           class="progress-bar">
+      </div>
+    </div>
+  </div>
+
+  <div class="col-md-4 progress-info">
+    <!-- task completion percentage -->
+    <span id="build-pc-done-<%:id%>"><%:tasks_complete_percentage%></span>% of
+    tasks complete
+
+    <!-- cancel button -->
+    <%include tmpl='#cancel-template'/%>
+  </div>
+</script>
+
+<!-- cancelling build -->
+<script id="cancelling-build-template" type="text/x-jsrender">
+  <div class="col-md-9">
+    Cancelling the build ...
+  </div>
+</script>
+
+<!-- succeeded or failed build -->
+<script id="succeeded-or-failed-build-template" type="text/x-jsrender">
+  <!-- completed_on -->
+  <div class="col-md-2">
+    <%:completed_on%>
+  </div>
+
+  <!-- errors -->
+  <div class="col-md-2">
+    <%if errors%>
+      <span class="glyphicon glyphicon-minus-sign"></span>
+      <a href="<%:dashboard_errors_url%>" class="alert-link">
+        <%:errors%> error<%:errors_pluralise%>
+      </a>
+    <%/if%>
+  </div>
+
+  <!-- warnings -->
+  <div class="col-md-2">
+    <%if warnings%>
+      <span class="glyphicon glyphicon-warning-sign build-warnings"></span>
+      <a href="<%:dashboard_warnings_url%>" class="alert-link build-warnings">
+        <%:warnings%> warning<%:warnings_pluralise%>
+      </a>
+    <%/if%>
+  </div>
+
+  <!-- build time -->
+  <div class="col-md-3">
+    Build time:
+
+    <span data-role="data-recent-build-buildtime-field">
+      <%if state == 'Succeeded'%>
+        <a class="alert-link" href="<%:buildtime_url%>"><%:buildtime%></a>
+      <%else%>
+        <%:buildtime%>
+      <%/if%>
+    </span>
+
+    <!-- rebuild button -->
+    <%include tmpl='#rebuild-template'/%>
+  </div>
+</script>
+
+<!-- cancelled build -->
+<script id="cancelled-build-template" type="text/x-jsrender">
+  <!-- build cancelled message -->
+  <div class="col-md-6">
+    Build cancelled
+  </div>
+
+  <!-- rebuild button -->
+  <div class="col-md-3">
+    <%include tmpl='#rebuild-template'/%>
+  </div>
+</script>
+
+<!-- rebuild button or no rebuild icon -->
+<script id="rebuild-template" type="text/x-jsrender">
+  <%if is_default_project_build%>
+    <!-- no rebuild info icon -->
+    <span class="pull-right glyphicon glyphicon-question-sign get-help <%if state == 'Succeeded'%>get-help-green<%else state == 'Failed'%>get-help-red<%else%>get-help-blue<%/if%>"
+    title="Builds in this project cannot be started from Toaster: they are started from the command line">
+    </span>
+  <%else%>
+    <!-- rebuild button -->
+    <span class="rebuild-btn alert-link <%if state == 'Success'%>success<%else state == 'Failed'%>danger<%else%>info<%/if%> pull-right"
+    data-request-url="<%:rebuild_url%>" data-target='<%:build_targets_json%>'>
+      <span class="glyphicon glyphicon-repeat"></span>
+      Rebuild
+    </span>
+  <%/if%>
+</script>
+
+<!-- cancel button or no cancel icon -->
+<script id="cancel-template" type="text/x-jsrender">
+  <%if is_default_project_build%>
+    <!-- no cancel icon -->
+    <span class="glyphicon glyphicon-question-sign get-help get-help-blue pull-right" title="Builds in this project cannot be cancelled from Toaster: they can only be cancelled from the command line"></span>
+  <%else%>
+    <!-- cancel button -->
+    <span class="cancel-build-btn pull-right alert-link"
+    data-buildrequest-id="<%:buildrequest_id%>" data-request-url="<%:cancel_url%>">
+      <span class="glyphicon glyphicon-remove-circle"></span>
+      Cancel
+    </span>
+  <%/if%>
+</script>
+
 <script>
   $(document).ready(function () {
     var ctx = {
@@ -17,162 +272,3 @@
     }
   });
 </script>
-
-{%if mru and mru.count > 0%}
-
-  {%if mrb_type == 'project' %}
-      <h2 class="page-header">
-      Latest project builds
-
-      {% if project.is_default %}
-          <i class="icon-question-sign get-help heading-help" title="" data-original-title="Builds in this project cannot be started from Toaster: they are started from the command line"></i>
-      {% endif %}
-      </h2>
-  {% else %}
-    <div class="page-header top-air">
-      <h1>
-      Latest builds
-      </h1>
-    </div>
-  {% endif %}
-  <div id="latest-builds">
-  {% for build in mru %}
-  <div data-latest-build-result="{{ build.id }}" class="alert build-result {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}{% if mrb_type != 'project' %} project-name{% endif %}">
-      {% if mrb_type != 'project' %}
-        <span class="label {%if build.outcome == build.SUCCEEDED%}label-success{%elif build.outcome == build.FAILED%}label-important{%else%}label-info{%endif%}">
-            <a href={% project_url build.project %}>
-                {{build.project.name}}
-            </a>
-        </span>
-      {% endif %}
-        <div class="row-fluid">
-          <div class="span3 lead">
-    {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
-              <a href="{%url 'builddashboard' build.pk%}" class="{%if build.outcome == build.SUCCEEDED %}success{%else%}error{%endif%}">
-    {% endif %}
-            {% if build.target_set.all.count > 0 %}
-                <span data-toggle="tooltip"
-                  {% if build.target_set.all.count > 1 %}
-                    {{build.get_sorted_target_list.0.target}}
-                    title="Recipes:
-                    {% for target in build.get_sorted_target_list %}
-                        {% if target.task %}
-                            {{target.target}}:{{target.task}}
-                        {% else %}
-                            {{target.target}}
-                        {% endif %}
-                    {% endfor %}"
-                  {% endif %}
-                >
-                {% if build.target_set.all.0.task %}
-                    {{build.get_sorted_target_list.0.target}}:{{build.target_set.all.0.task}}
-                {% else %}
-                    {{build.get_sorted_target_list.0.target}}
-                {% endif %}
-                {% if build.target_set.all.count > 1 %}
-                    (+{{build.target_set.all.count|add:"-1"}})
-                {% endif %}
-                </span>
-             {% endif %}
-    {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
-                </a>
-    {% endif %}
-            </div>
-    {% if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
-            <div class="span2 lead">
-                {% if build.completed_on|format_build_date  %}
-                    {{ build.completed_on|date:'d/m/y H:i' }}
-                {% else %}
-                    {{ build.completed_on|date:'H:i' }}
-                {% endif %}
-            </div>
-    {% endif %}
-    {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
-            <div class="span2 lead">
-      {% if  build.errors.count %}
-                <i class="icon-minus-sign red"></i> <a href="{%url 'builddashboard' build.pk%}#errors" class="error">{{build.errors.count}} error{{build.errors.count|pluralize}}</a>
-      {% endif %}
-            </div>
-            <div class="span2 lead">
-      {% if  build.warnings.count %}
-                <i class="icon-warning-sign yellow"></i> <a href="{%url 'builddashboard' build.pk%}#warnings" class="warning">{{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>
-      {% endif %}
-            </div>
-            <div class="lead ">
-              <span class="lead">
-                  Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a>
-              </span>
-              {% if build.project.is_default %}
-                  <i class="pull-right icon-question-sign get-help
-                  {% if build.outcome == build.SUCCEEDED %}
-                      get-help-green
-                  {% elif build.outcome == build.FAILED %}
-                      get-help-red
-                  {% else %}
-                      get-help-blue
-                  {% endif %}
-                  " title="Builds in this project cannot be started from Toaster: they are started from the command line">
-                  </i>
-              {% else %}
-                  <button class="run-again-btn btn
-                      {% if build.outcome == build.SUCCEEDED %}
-                          btn-success
-                      {% elif build.outcome == build.FAILED %}
-                          btn-danger
-                      {% else %}
-                          btn-info
-                      {%endif%}
-                      pull-right"
-                      data-request-url="{% url 'xhr_buildrequest' build.project.pk %}"
-                      data-target='{{build.target_set.all|get_tasks|json}}'>
-
-
-                        Rebuild
-                  </button>
-              {% endif %}
-            </div>
-    {%endif%}
-    {%if build.outcome == build.IN_PROGRESS %}
-    <div class="span4" style="display:none" id="cancelling-msg-{{build.buildrequest.pk}}">
-      <p class="lead">Cancelling the build ...</p>
-    </div>
-    <div class="span4 offset1 progress-info">
-      <div class="progress" id="build-pc-done-title-{{build.pk}}" style="margin-top:5px;" data-toggle="tooltip" title="{{build.completeper}}% of tasks complete">
-        <div id="build-pc-done-bar-{{build.pk}}" style="width: {{build.completeper}}%;" class="bar"></div>
-      </div>
-    </div>
-    <div class="lead span3 progress-info"><span id="build-pc-done-{{build.pk}}">{{build.completeper}}</span>% of tasks complete</div>
-    {# No build cancel for command line builds project #}
-    {% if build.project.is_default %}
-    <i class="icon-question-sign get-help get-help-blue pull-right" title="" data-original-title="Builds in this project cannot be cancelled from Toaster: they can only be cancalled from the command line"></i>
-    {% else %}
-    <div class="lead pull-right progress-info">
-      <button class="cancel-build-btn btn btn-info pull-right"
-          data-buildrequest-id={{build.buildrequest.pk}}
-          data-request-url="{% url 'xhr_buildrequest' build.project.pk %}" >
-        Cancel
-      </button>
-    </div>
-    {% endif %}
-
-    {%endif%} {# end if in progress #}
-
-    {% if build.outcome == build.CANCELLED %}
-    <div class="span4">
-      <p class="lead">Build cancelled</p>
-    </div>
-    <button class="btn btn-info pull-right run-again-btn"
-        data-request-url="{% url 'xhr_buildrequest' build.project.pk %}"
-        data-target='{{build.target_set.all|get_tasks|json}}'>
-      Rebuild
-
-    </button>
-    {% endif %}
-  </div>
-</div>
-
-  {% endfor %}
-  </div>
-
-{%endif%}
-
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage.html
index 46aed90..980179a 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage.html
@@ -5,10 +5,17 @@
 {% block pagecontent %}
 
 {% include "newcustomimage_modal.html" %}
-{% include "projecttopbar.html" %}
 
-{% url table_name project.id as xhr_table_url %}
-<h2>{{title}} (<span class="table-count-{{table_name}}">0</span>)</h2>
-{% include "toastertable.html" %}
+<div class="row">
+
+  {% include "projecttopbar.html" %}
+
+  <div class="col-md-12">
+    {% url table_name project.id as xhr_table_url %}
+    <h2>{{title}} (<span class="table-count-{{table_name}}">0</span>)</h2>
+    {% include "toastertable.html" %}
+  </div>
+
+</div>
 
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage_modal.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage_modal.html
index caeb302..d448d3a 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage_modal.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newcustomimage_modal.html
@@ -12,37 +12,49 @@
   });
 </script>
 
-<div class="modal hide fade in" id="new-custom-image-modal" aria-hidden="false">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
-    <h3>New custom image</h3>
-  </div>
+<div class="modal fade" id="new-custom-image-modal" aria-hidden="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
+        <h3>New custom image</h3>
+      </div>
 
-  <div class="modal-body">
-    <!--
-    this container is visible if there are multiple image recipes which could
-    be used as a basis for the new custom image; radio buttons are added to it
-    via newCustomImageModalSetRecipes() as required
-    -->
-    <div data-role="image-selector" style="display:none;">
-      <h4>Which image do you want to customise?</h4>
-      <div data-role="image-selector-radios"></div>
-      <span class="help-block error" id="invalid-recipe-help" style="display:none"></span>
-      <div class="air"></div>
+      <div class="modal-body">
+        <!--
+          this container is visible if there are multiple image recipes which could
+          be used as a basis for the new custom image; radio buttons are added to it
+          via newCustomImageModalSetRecipes() as required
+        -->
+        <div data-role="image-selector" style="display:none;">
+          <h4>Which image do you want to customise?</h4>
+          <span class="help-block text-danger" id="invalid-recipe-help" style="display:none"></span>
+          <div data-role="image-selector-radios"></div>
+          <div class="air"></div>
+        </div>
+
+        <h4>Name your custom image</h4>
+
+        <div class="row">
+          <div class="col-md-10">
+            <p class="help-block">Image names must be unique. They should not contain spaces or capital letters, and the only allowed special character is dash (-).
+            </p>
+            <div class="form-group">
+              <input type="text" class="form-control input-lg" placeholder="Type the custom image name" required>
+            </div>
+            <span class="help-block text-danger" id="invalid-name-help" style="display:none"></span>
+          </div>
+        </div>
+      </div>
+
+      <div class="modal-footer">
+        <button id="create-new-custom-image-btn" class="btn btn-primary btn-large" disabled>
+          <span data-role="submit-state">Create custom image</span>
+          <span data-role="loading-state" style="display:none">
+            <i class="fa-pulse icon-spinner"></i>&nbsp;Creating custom image...
+          </span>
+        </button>
+      </div>
     </div>
-
-    <h4>Name your custom image</h4>
-
-    <div class="row-fluid">
-      <span class="help-block span8">Image names must be unique. They should not contain spaces or capital letters, and the only allowed special character is dash (-).<p></p>
-      </span></div>
-    <div class="control-group controls">
-      <input type="text" class="huge" placeholder="Type the custom image name" required>
-      <span class="help-block error" id="invalid-name-help" style="display:none"></span>
-    </div>
-  </div>
-
-  <div class="modal-footer">
-    <button id="create-new-custom-image-btn" class="btn btn-primary btn-large" data-original-title="" title="" disabled>Create custom image</button>
   </div>
 </div>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newproject.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newproject.html
index e83b2be..acb614e 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newproject.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/newproject.html
@@ -5,24 +5,21 @@
 {% block title %} Create a new project - Toaster {% endblock %}
 
 {% block pagecontent %}
-<div class="row-fluid">
+<div class="row">
+  <div class="col-md-12">
     <div class="page-header">
           <h1>Create a new project</h1>
         </div>
-        <div class="container-fluid">
     {% if alert %}
-      <div class="alert alert-error row-fluid" role="alert">{{alert}}</div>
+      <div class="alert alert-danger" role="alert">{{alert}}</div>
     {% endif %}
-        </div>
 
-      <div class="row-fluid">
-        <div class="span6">
         <form method="POST">{% csrf_token %}
-
-            <fieldset>
-              <label>Project name <span class="muted">(required)</span></label>
-              <input type="text" class="input-xlarge" required id="new-project-name" name="projectname">
-            </fieldset>
+          <div class="form-group" id="validate-project-name">
+            <label class="control-label">Project name <span class="text-muted">(required)</span></label>
+            <input type="text" class="form-control" required id="new-project-name" name="projectname">
+          </div>
+          <p class="help-block text-danger" style="display: none;" id="hint-error-project-name">A project with this name exists. Project names must be unique.</p>
 <!--
             <fieldset>
                 <label class="project-form">Project type</label>
@@ -35,13 +32,13 @@
         <input type="hidden" name="ptype" value="build" />
 
         {% if releases.count > 0 %}
-            <fieldset class="release">
+				<div class="release form-group">
             {% if releases.count > 1 %}
-              <label class="project-form">
+              <label class="control-label">
                 Release
-                <i class="icon-question-sign get-help" title="The version of the build system you want to use"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The version of the build system you want to use"></span>
               </label>
-              <select name="projectversion" id="projectversion">
+              <select name="projectversion" id="projectversion" class="form-control">
                 {% for release in releases %}
                     <option value="{{release.id}}"
                         {%if defaultbranch == release.name %}
@@ -50,25 +47,28 @@
                      >{{release.description}}</option>
                 {% endfor %}
               </select>
+              <div class="row">
+                <div class="col-md-4">
                 {% for release in releases %}
-              <div class="row-fluid helptext" id="description-{{release.id}}" style="display: none">
-                <span class="help-block span5">{{release.helptext|safe}}</span>
-              </div>
+                  <div class="helptext" id="description-{{release.id}}" style="display: none">
+                    <span class="help-block">{{release.helptext|safe}}</span>
+                  </div>
                 {% endfor %}
             {% else %}
               <input type="hidden" name="projectversion" value="{{releases.0.id}}"/>
             {% endif %}
+                </div>
+              </div>
             </fieldset>
         {% endif %}
-
-            <div class="form-actions">
-              <input type="submit" id="create-project-button" class="btn btn-primary btn-large" value="Create project"/>
+            <div class="top-air">
+              <input type="submit" id="create-project-button" class="btn btn-primary btn-lg" value="Create project"/>
               <span class="help-inline" style="vertical-align:middle;">To create a project, you need to enter a project name</span>
             </div>
+
         </form>
-        </div>
         <!--
-        <div class="span5 well">
+        <div class="col-md-5 well">
                 <span class="help-block">
                  <h4>Toaster project types</h4>
                  <p>With a <strong>build project</strong> you configure and run your builds from Toaster.</p>
@@ -81,7 +81,7 @@
                  <p>If you create a <strong>build project</strong>, you will need to select a <strong>release</strong>,
                  which is the version of the build system you want to use to run your builds.</p>
              </div> -->
-        </div>
+      </div>
     </div>
 
     <script type="text/javascript">
@@ -113,6 +113,11 @@
                 $('#description-' + new_release).fadeIn();
             });
 
+            libtoaster.makeProjectNameValidation($("#new-project-name"),
+                 $("#hint-error-project-name"), $("#validate-project-name"),
+                 $(".btn-primary"));
+
+
 /*			// Hide the project release when you select an analysis project
 			function projectType() {
 				if ($("input[type='radio']:checked").val() == 'build') {
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
index e6f20c3..a5d5893 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
@@ -2,16 +2,16 @@
 {% load projecttags %}
 
 {% block tabcontent %}
-        <ul class="nav nav-pills">
+        <ul class="nav nav-tabs">
             <li class="">
                 <a href="{% url 'package_built_detail' build.id package.id %}">
-                    <i class="icon-question-sign get-help" title="Shows the files produced by this package."></i>
+                    <span class="glyphicon glyphicon-question-sign get-help" title="Shows the files produced by this package."></span>
                     Generated files ({{package.buildfilelist_package.count}})
                 </a>
             </li>
             <li class="active">
                 <a href="{% url 'package_built_dependencies' build.id package.id %}">
-                    <i class="icon-question-sign get-help" title="Shows the runtime packages required by this package."></i>
+                    <span class="glyphicon glyphicon-question-sign get-help" title="Shows the runtime packages required by this package."></span>
                     Runtime dependencies ({{dependency_count}})
                 </a>
             </li>
@@ -24,14 +24,14 @@
                 </div>
             {% else %}
                 <div class="alert alert-info">
-                    <strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the projected runtime dependencies if you include <strong>{{package.fullpackagespec}}</strong> in future builds.
+                    <strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the projected runtime dependencies if you were to include <strong>{{package.fullpackagespec}}</strong> in an image.
                 </div>
                 <table class="table table-bordered table-hover">
                     <thead>
                         <tr>
                             <th>Package</th>
                             <th>Version</th>
-                            <th class="sizecol span2">Size</th>
+                            <th class="sizecol col-md-2">Size</th>
                         </tr>
                     </thead>
                     <tbody>
@@ -62,9 +62,9 @@
                         <tr>
                             <th>Package</th>
                             <th>Version</th>
-                            <th class="sizecol span2">Size</th>
+                            <th class="sizecol col-md-2">Size</th>
                             <th>
-                                <i class="icon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></i>
+                                <span class="glyphicon glyphicon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></span>
                                 Relationship type
                             </th>
                         </tr>
@@ -87,7 +87,7 @@
                             <td class="sizecol">{{other_dep.size|filtered_filesizeformat}}</td>
                             <td>
                                 {{other_dep.dep_type_display}}
-                                <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
+                                <span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
                             </td>
                         </tr>
                     	{% endfor %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_detail.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
index 9be8ccb..0bdbc2a 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
@@ -6,13 +6,13 @@
         <!-- Generated Files -->
         {% if package.buildtargetlist_package.count == 0 %}
             {# Not included case #}
-            <ul class="nav nav-pills">
+            <ul class="nav nav-tabs">
                 <li class="active"> <a href="#">
-                    <i class="icon-question-sign get-help" title="Files added to a root file system when you include {{package.name}} in an image"></i>
+                    <span class="glyphicon glyphicon-question-sign get-help" title="Files added to a root file system when you include {{package.name}} in an image"></span>
                     Generated files ({{packageFileCount}})
                 </a></li>
                 <li class=""><a href="{% url 'package_built_dependencies' build.id package.id %}">
-                    <i class="icon-question-sign get-help" title="Projected runtime dependencies when you include {{package.name}} in an image"></i>
+                    <span class="glyphicon glyphicon-question-sign get-help" title="Projected runtime dependencies when you include {{package.name}} in an image"></span>
                     Runtime dependencies ({{dependency_count}})
                 </a></li>
             </ul>
@@ -21,7 +21,7 @@
             <!-- Package file list or if empty, alert pane -->
             {% if packageFileCount > 0 %}
                 <div class="alert alert-info">
-                    <strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the files added to an image root file system if you include <strong>{{package.fullpackagespec}}</strong> in future builds.
+                    <strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the files that would be added to an image root file system with <strong>{{package.fullpackagespec}}</strong> included in it.
                 </div>
                 {% include "tablesort.html" %}
                     <tbody>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
index 9fa28a8..66f8e7f 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
@@ -14,8 +14,8 @@
     function fmtAliasHelp(package_name, alias, hover) {
         var r = null;
         if (alias != null && alias != '') {
-            r = '<span class="muted"> as ' + alias + '&nbsp';
-            r += '<i class="icon-question-sign get-help';
+            r = '<span class="text-muted"> as ' + alias + '&nbsp';
+            r += '<span class="glyphicon glyphicon-question-sign get-help';
             if (hover) {
                 r+= ' hover-help';
             }
@@ -23,9 +23,9 @@
                 r+= ' heading-help';
             }
             r += '"';
-            title = package_name + ' was renamed at packaging time and was installed on your system as ' + alias;
+            title = '<code>' + package_name + '</code> was renamed at packaging time and was installed on your system as <code>' + alias + '</code>';
             r += ' title="' + title + '">';
-            r += '</i>';
+            r += '</span>';
             r += '</span>';
             document.write(r);
         }
@@ -43,28 +43,32 @@
 {% endblock localbreadcrumb %}
 
 {% block pagedetailinfomain %}
-    <div class="row span11">
-        <div class="page-header">
+    <div class="row">
+      <div class="col-md-12">
+        <div class="page-header build-data">
             {% block mainheading %}
             <h1>{{package.fullpackagespec}}</h1>
             {% endblock %}
         </div> <!-- page-header -->
-    </div> <!-- row span11 page-header -->
+      </div> <!-- col-md-12 page-header -->
+    </div> <!-- end row -->
 
     {% block twocolumns %}
-    <div class="row span7 tabbable">
+    <div class="row">
+    <div class="col-md-8 tabbable">
         {% block tabcontent %}
         {% endblock tabcontent %}
-    </div> <!-- row span7 -->
+    </div> <!-- row col-md-8 -->
 
-    <div class="row span4 well">
+    <div class="col-md-4">
+      <div class="well">
         <h2>Package information</h2>
 
         <!-- info presented as definition list -->
         <dl class="item-info">
             <dt>
                 Size
-                <i class="icon-question-sign get-help" title="The size of the package"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The size of the package"></span>
             </dt>
             <dd>
                 {% comment %}
@@ -81,7 +85,7 @@
 
             <dt>
                 License
-                <i class="icon-question-sign get-help" title="The license under which this package is distributed"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The license under which this package is distributed"></span>
             </dt>
             <dd>{{package.license}}</dd>
 
@@ -97,7 +101,7 @@
 
             <dt>
                 Recipe
-                <i class="icon-question-sign get-help" title="The name of the recipe building this package"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The name of the recipe building this package"></span>
             </dt>
             <dd>
                 {% if package.recipe_id > 0 %}
@@ -109,13 +113,13 @@
 
             <dt>
                 Recipe version
-                <i class="icon-question-sign get-help" title="The version of the recipe building this package"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The version of the recipe building this package"></span>
             </dt>
             <dd>{{package.recipe.version}}</dd>
 
             <dt>
                 Layer
-                <i class="icon-question-sign get-help" title="The name of the layer providing the recipe that builds this package"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The name of the layer providing the recipe that builds this package"></span>
             </dt>
             <dd>
                 {{package.recipe.layer_version.layer.name}}
@@ -124,26 +128,42 @@
                     # Removed per team meeting of 1/29/2014 until
                     # decision on index search algorithm
                     <a href="http://layers.openembedded.org"  target="_blank">
-                    <i class="icon-share get-info"></i>
+                    <i class="glyphicon glyphicon-share get-info"></i>
                     </a>
                     {% endcomment %}
                 {% endif %}
             </dd>
-            {% if package.recipe.layer_version.branch %}
             <dt>
                 Layer branch
-                <i class="icon-question-sign get-help" title="The Git branch of the layer providing the recipe that builds this package"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The Git branch of the layer providing the recipe that builds this package"></span>
+                {%if package.recipe.layer_version.layer.local_source_dir %}
+		<dd>
+		<span class="text-muted">Not applicable</span>
+		<span class="glyphicon glyphicon-question-sign get-help" title="The source code of {{package.recipe.layer_version.layer.name}} is not in a Git repository, so there is no branch associated with it"></span>
+		</dd>
+		{% endif %}
             </dt>
+	    {% if not package.recipe.layer_version.layer.local_source_dir %}
             <dd>{{package.recipe.layer_version.branch}}</dd>
-            {% endif %}
+	    {% endif %}
             <dt>
                 Layer commit
-                <i class="icon-question-sign get-help" title="The Git commit of the layer providing the recipe that builds this package"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The Git commit of the layer providing the recipe that builds this package"></span>
+                {%if package.recipe.layer_version.layer.local_source_dir %}
+		<dd>
+		<span class="text-muted">Not applicable</span>
+		<span class="glyphicon glyphicon-question-sign get-help" title="The source code of {{package.recipe.layer_version.layer.name}} is not in a Git repository, so there is no commit associated with it"></span>
+		</dd>
+		{% endif %}
             </dt>
 
+	    {% if not package.recipe.layer_version.layer.local_source_dir %}
             <dd class="iscommit">{{package.recipe.layer_version.commit}}</dd>
+	    {% endif %}
 
         </dl>
-    </div> <!-- row4 well -->
+      <div> <!-- end well -->
+    </div> <!-- end 4-column section -->
     {% endblock twocolumns %}
+  </div> <!-- end row -->
 {% endblock pagedetailinfomain %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
index 8a0508e..95e56de 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
@@ -20,11 +20,11 @@
                     <tr>
                         <th>Package</th>
                         <th>Version</th>
-                        <th class='sizecol span2'>Size</th>
+                        <th class='sizecol col-md-2'>Size</th>
                     </tr>
                 </thead>
                 <tbody>
-					{% for runtime_dep in runtime_deps %}
+                  {% for runtime_dep in runtime_deps %}
                         <tr {{runtime_dep.size|format_vpackage_rowclass}} >
                             {% if runtime_dep.size != -1 %}
                             <td>
@@ -41,7 +41,7 @@
                             <td>{{runtime_dep.version}}&nbsp;</td>
                             <td class='sizecol'>{{runtime_dep.size|filtered_filesizeformat}}&nbsp;</td>
                         </tr>
-					{% endfor %}
+                        {% endfor %}
                  </tbody>
             </table>
         {% else %}
@@ -57,15 +57,15 @@
                     <tr>
                         <th>Package</th>
                         <th>Version</th>
-                        <th class='sizecol span2'>Size</th>
+                        <th class='sizecol col-md-2'>Size</th>
                         <th>
-                            <i class="icon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></i>
+                            <span class="glyphicon glyphicon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></span>
                             Relationship type
                         </th>
                     </tr>
                 </thead>
                 <tbody>
-					{% for other_dep in other_deps %}
+                  {% for other_dep in other_deps %}
                         {% if other_dep.installed %}
                             <tr {{other_dep.size|format_vpackage_rowclass}}>
                                 {% if other_dep.size != -1 %}
@@ -86,21 +86,21 @@
                                 <td class='sizecol'>{{other_dep.size|filtered_filesizeformat}}&nbsp;</td>
                                 <td>
                                     {{other_dep.dep_type_display}}
-                                    <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
+                                    <span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
                                 </td>
                             </tr>
                         {% else %}
-                            <tr class="muted">
+                            <tr class="text-muted">
                                 <td>{{other_dep.name}}</td>
                                 <td>{{other_dep.version}}</td>
                                 <td></td>
                                 <td>
                                     {{other_dep.dep_type_display}}
-                                    <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
+                                    <span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
                                 </td>
                             </tr>
                         {% endif %}
-					{% endfor %}
+                        {% endfor %}
                 </tbody>
             </table>
         {% endifnotequal %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
index 958aa88..e89fa21 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
@@ -1,12 +1,12 @@
 
-    <ul class="nav nav-pills">
+    <ul class="nav nav-tabs">
     {% if active_tab == "detail" %}
         <li class="active">
     {% else %}
         <li class="">
     {% endif %}
             <a href="{% url 'package_included_detail' build.id target.id package.id %}">
-                <i class="icon-question-sign get-help" title="The files this package adds to the image root file system"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The files this package adds to the image root file system"></span>
                 Files in root file system ({{packageFileCount}})
             </a>
         </li>
@@ -16,7 +16,7 @@
         <li class="">
     {% endif %}
             <a href="{% url 'package_included_dependencies' build.id target.id package.id %}">
-                <i class="icon-question-sign get-help" title="Package runtime dependencies"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="Package runtime dependencies"></span>
                 Runtime dependencies ({{dependency_count}})
             </a>
         </li>
@@ -26,7 +26,7 @@
         <li class="">
     {% endif %}
             <a href="{% url 'package_included_reverse_dependencies' build.id target.id package.id %}">
-                <i class="icon-question-sign get-help" title="The package runtime reverse dependencies (i.e. the packages in this image that depend on this package). Reverse dependencies reflect only the 'depends' dependency type"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The package runtime reverse dependencies (i.e. the packages in this image that depend on this package). Reverse dependencies reflect only the 'depends' dependency type"></span>
                 Reverse runtime dependencies ({{reverse_count}})
             </a>
         </li>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/pkg_add_rm_btn.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/pkg_add_rm_btn.html
index 0aefc56..303faec 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/pkg_add_rm_btn.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/pkg_add_rm_btn.html
@@ -1,12 +1,12 @@
 {# TODO move to snippets dir #}
 {% if data.is_locale_package %}
 <p class="text-center">
-  <span class="muted">Locale package</span>
-  <i class="icon-question-sign get-help hover-help" title=""
-      data-original-title="This package is included in your image
+  <span class="text-muted">Locale package</span>
+  <span class="glyphicon glyphicon-question-sign get-help hover-help"
+      title="This package is included in your image
       based on the locale specified in the IMAGE_LINGUAS variable"
       style="visibility: hidden;">
-  </i>
+  </span>
 </p>
 
 {% else %}
@@ -21,12 +21,12 @@
     <i class="icon-trash no-tooltip"></i>
     Remove package
   </button>
-  <button class="btn btn-block add-rm-package-btn" data-directive="add" data-id="{{data.pk}}" data-package-url="{% url 'xhr_customrecipe_packages' extra.recipe_id data.pk %}" data-name="{{data.name}}" style="
+  <button class="btn btn-default btn-block add-rm-package-btn" data-directive="add" data-id="{{data.pk}}" data-package-url="{% url 'xhr_customrecipe_packages' extra.recipe_id data.pk %}" data-name="{{data.name}}" style="
       {% if data.pk in extra.current_packages %}
       display:none
       {% endif %}
       ">
-    <i class="icon-plus"></i>
+    <i class="glyphicon glyphicon-plus"></i>
     Add package
   </button>
 </div>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/project.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/project.html
index 1256768..5abe241 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/project.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/project.html
@@ -24,44 +24,55 @@
   });
 </script>
 
-<!-- Comment out the ability to change the project release, until we decide what to do this functionality -->
-
-<!--div id="change-release-modal" class="modal hide fade in" tabindex="-1" role="dialog" aria-labelledby="change-release-modal" aria-hidden="false">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
-    <h3>Changing Yocto Project release to <span class="proposed-release-change-name"></span></h3>
-  </div>
-  <div class="modal-body">
-    <p>The following added layers do not exist for <span class="proposed-release-change-name"></span>: </p>
-    <ul id="layers-to-remove-list">
-    </ul>
-    <p>If you change the Yocto Project release to <span class="proposed-release-change-name"></span>, the above layers will be deleted from your added layers.</p>
-  </div>
-  <div class="modal-footer">
-    <button id="change-release-and-rm-layers" data-dismiss="modal" type="submit" class="btn btn-primary">Change release and delete layers</button>
-    <button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
-  </div>
-</div-->
+<div id="delete-project-modal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <h4>Are you sure you want to delete this project?</h4>
+      </div>
+      <div class="modal-body">
+        <p>Deleting the <strong class="project-name"></strong> project
+        will:</p>
+        <ul>
+          <li>Cancel its builds currently in progress</li>
+          <li>Remove its configuration information</li>
+          <li>Remove its imported layers</li>
+          <li>Remove its custom images</li>
+          <li>Remove all its build information</li>
+        </ul>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-primary" id="delete-project-confirmed">
+          <span data-role="submit-state">Delete project</span>
+          <span data-role="loading-state" style="display:none">
+            <span class="fa-pulse">
+            <i class="fa-pulse icon-spinner"></i>
+          </span>
+            &nbsp;Deleting project...
+          </span>
+        </button>
+        <button type="button" class="btn btn-link" data-dismiss="modal">Cancel</button>
+      </div>
+    </div><!-- /.modal-content -->
+  </div><!-- /.modal-dialog -->
+</div>
 
 
-<div class="row-fluid" id="project-page" style="display:none">
-  <div class="span6">
+<div class="row" id="project-page" style="display:none">
+  <div class="col-md-6">
     <div class="well well-transparent" id="machine-section">
       <h3>Machine</h3>
 
-      <p class="lead"><span id="project-machine-name"></span> <i title="" data-original-title="" id="change-machine-toggle" class="icon-pencil"></i></p>
+      <p class="lead"><span id="project-machine-name"></span> <span class="glyphicon glyphicon-edit" id="change-machine-toggle"></span></p>
 
-      <form id="select-machine-form" style="display:none;">
-        <div class="alert alert-info">
-          <strong>Machine changes have a big impact on build outcome.</strong> You cannot really compare the builds for the new machine with the previous ones.
+      <form id="select-machine-form" style="display:none;" class="form-inline">
+        <span class="help-block">Machine suggestions come from the list of layers added to your project. If you don't see the machine you are looking for, <a href="{% url 'projectmachines' project.id %}">check the full list of machines</a></span>
+        <div class="form-group">
+          <input class="form-control" id="machine-change-input" autocomplete="off" value="" data-provide="typeahead" data-minlength="1" data-autocomplete="off" type="text">
         </div>
-
-        <div class="input-append">
-          <input id="machine-change-input" autocomplete="off" value="" data-provide="typeahead" data-minlength="1" data-autocomplete="off" type="text">
-            <button id="machine-change-btn" class="btn" type="button">Save</button> <a href="#" id="cancel-machine-change" class="btn btn-link">Cancel</a>
-        </div>
-
-        <p><a href="{% url 'projectmachines' project.id %}" class="link">View compatible machines</a></p>
+        <button id="machine-change-btn" class="btn btn-default" type="button">Save</button>
+        <a href="#" id="cancel-machine-change" class="btn btn-link">Cancel</a>
+        <p class="form-link"><a href="{% url 'projectmachines' project.id %}">View compatible machines</a></p>
       </form>
     </div>
 
@@ -69,11 +80,11 @@
       <h3>Most built recipes</h3>
 
       <div class="alert alert-info" style="display:none" id="no-most-built">
-        <span class="lead">You haven't built any recipes yet</span>
-        <p style="margin-top: 10px;"><a href="{% url 'projectimagerecipes' project.id %}">Choose a recipe to build</a></p>
+        <h4>You haven't built any recipes yet</h4>
+        <p class="form-link"><a href="{% url 'projectimagerecipes' project.id %}">Choose a recipe to build</a></p>
       </div>
 
-      <ul class="unstyled configuration-list" id="freq-build-list">
+      <ul class="list-unstyled lead" id="freq-build-list">
       </ul>
       <button class="btn btn-primary" id="freq-build-btn" disabled="disabled">Build selected recipes</button>
     </div>
@@ -97,44 +108,37 @@
     </div>
   </div>
 
-  <div class="span6">
+  <div class="col-md-6">
     <div class="well well-transparent" id="layer-container">
-      <h3>Layers <span class="muted counter">(<span id="project-layers-count"></span>)</span>
-        <i data-original-title="OpenEmbedded organises metadata into modules called 'layers'. Layers allow you to isolate different types of customizations from each other. <a href='http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#understanding-and-creating-layers' target='_blank'>More on layers</a>" class="icon-question-sign get-help heading-help" title=""></i>
+      <h3>Layers <span class="counter">(<span id="project-layers-count"></span>)</span>
+        <span title="OpenEmbedded organises recipes and machines into thematic groups called <strong>layers</strong>. Click on a layer name to see the recipes and machines it includes." class="glyphicon glyphicon-question-sign get-help"></span>
       </h3>
 
-      <div class="alert lead" id="no-layers-in-project" style="display:none">
-        You need to add some layers. For that you can:
+      <div class="alert alert-warning" id="no-layers-in-project" style="display:none">
+        <h4>This project has no layers</h4>
+        In order to build this project you need to add some layers first. For that you can:
         <ul>
-          <li><a href="{% url 'projectlayers' project.id %}">View all layers compatible with this project</a></li>
+          <li><a href="{% url 'projectlayers' project.id %}">Choose from the layers compatible with this project</a></li>
           <li><a href="{% url 'importlayer' project.id %}">Import a layer</a></li>
           <li><a href="http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#understanding-and-creating-layers" target="_blank">Read about layers in the documentation</a></li>
+          <li>Or type a layer name below</li>
         </ul>
-        <p>Or type a layer name below.</p>
       </div>
 
-      <form style="margin-top:20px">
-        <!--div class="control-group error"-->
-
-        <div class="input-append">
-          <input id="layer-add-input" autocomplete="off" placeholder="Type a layer name" data-minlength="1" data-autocomplete="off" data-provide="typeahead" data-source="" type="text">
-            <button id="add-layer-btn" class="btn" disabled>Add</button>
+      <form class="form-inline">
+        <div class="form-group">
+          <input id="layer-add-input" class="form-control" autocomplete="off" placeholder="Type a layer name" data-minlength="1" data-autocomplete="off" data-provide="typeahead" data-source="" type="text">
         </div>
-
-        <div id="import-alert" class="alert alert-info" style="display:none;">
-          Toaster does not know about this layer. Please <a href="#">import it</a>
-        </div>
-
-        <p>
+        <button id="add-layer-btn" class="btn btn-default" disabled>Add layer</button>
+        <p class="form-link">
           <a href="{% url 'projectlayers' project.id %}" id="view-compatible-layers">View compatible layers</a>
-          <i data-original-title="View all the layers you can build with the release selected for this project, which is Yocto Project master" class="icon-question-sign get-help" title=""></i>
-          | <a href="{% url 'importlayer' project.id %}">Import layer</a>
+          <span class="text-muted">|</span>
+          <a href="{% url 'importlayer' project.id %}">Import layer</a>
         </p>
       </form>
 
-      <ul class="unstyled configuration-list" id="layers-in-project-list">
+      <ul class="list-unstyled lead" id="layers-in-project-list">
       </ul>
-    </div>
   </div>
 </div>
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds-toastertable.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds-toastertable.html
index 6d7e10b..a5fed2d 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds-toastertable.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds-toastertable.html
@@ -3,54 +3,63 @@
 {% load static %}
 
 {% block extraheadcontent %}
-  <link rel="stylesheet" href="{% static 'css/jquery-ui.min.css' %}" type='text/css'>
-  <link rel="stylesheet" href="{% static 'css/jquery-ui.structure.min.css' %}" type='text/css'>
-  <link rel="stylesheet" href="{% static 'css/jquery-ui.theme.min.css' %}" type='text/css'>
-  <script src="{% static 'js/jquery-ui.min.js' %}">
-  </script>
+<link rel="stylesheet" href="{% static 'css/jquery-ui.min.css' %}" type='text/css'>
+<link rel="stylesheet" href="{% static 'css/jquery-ui.structure.min.css' %}" type='text/css'>
+<link rel="stylesheet" href="{% static 'css/jquery-ui.theme.min.css' %}" type='text/css'>
+<script src="{% static 'js/jquery-ui.min.js' %}">
+</script>
 {% endblock %}
 
 {% block title %} {{title}} - {{project.name}} - Toaster {% endblock %}
 
 {% block pagecontent %}
+<div class="row">
 
   {% include "projecttopbar.html" %}
 
-  <div class="row-fluid">
+  <div class="col-md-12">
     {% with mru=mru mrb_type=mrb_type %}
-      {% include 'mrb_section.html' %}
+    {% include 'mrb_section.html' %}
     {% endwith %}
 
-    <h2 class="page-header top-air" data-role="page-title"></h2>
+    <h2 class="top-air" data-role="page-title"></h2>
 
+    {% if not build_in_progress_none_completed %}
     {% url 'projectbuilds' project.id as xhr_table_url %}
     {% include 'toastertable.html' %}
+    {% endif %}
   </div>
 
-  <script>
-    $(document).ready(function () {
-      // title
-      var tableElt = $("#{{table_name}}");
-      var titleElt = $("[data-role='page-title']");
+ <script>
+ $(document).ready(function () {
+   // title
+   var tableElt = $("#{{table_name}}");
+   var titleElt = $("[data-role='page-title']");
 
-      tableElt.on("table-done", function (e, total, tableParams) {
-        var title = "All project builds";
+   tableElt.on("table-done", function (e, total, tableParams) {
+     var title = "All project builds";
 
-        if (tableParams.search || tableParams.filter) {
-          if (total === 0) {
-            title = "No project builds found";
-          }
-          else if (total > 0) {
-            title = total + " project build" + (total > 1 ? 's' : '') + " found";
-          }
-        }
+     if (tableParams.search || tableParams.filter) {
+       if (total === 0) {
+         title = "No project builds found";
+       }
+       else if (total > 0) {
+         title = total + " project build" + (total > 1 ? 's' : '') + " found";
+       }
+     }
 
-        titleElt.text(title);
-      });
+     if (total === 0) {
+       titleElt.hide();
+     } else {
+       titleElt.show();
+       titleElt.text(title);
+     }
+   });
 
-      // highlight builds tab
-      $("#topbar-builds-tab").addClass("active")
-    });
-  </script>
+   // highlight builds tab
+   $("#topbar-builds-tab").addClass("active")
+ });
+ </script>
 
+</div>
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds.html
index 3402fc4..50697a1 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectbuilds.html
@@ -39,10 +39,10 @@
 
  {% if objects.paginator.count == 0 %}
   {% if request.GET.filter or request.GET.search %}
-    <div class="row-fluid">
+    <div class="row">
       <div class="alert">
         <form class="no-results input-append" id="searchform">
-            <input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %}
+            <input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="input-append-addon btn" tabindex="-1"><i class="glyphicon glyphicon-remove"></i></a>{% endif %}
             <button class="btn" type="submit" value="Search">Search</button>
             <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all builds</button>
         </form>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectconf.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectconf.html
index 27a898b..fcf6df2 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectconf.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projectconf.html
@@ -6,945 +6,1034 @@
 {% block projectinfomain %}
 
 <h2>Bitbake variables</h2>
+<div>
+  <dl>
+    {% if distro_defined %}
+    <dt>
+    <span class="js-config-var-name js-config-var-managed-name">DISTRO</span>
+    <span class="glyphicon glyphicon-question-sign get-help" title="The short name of the distribution. If the variable is blank, meta/conf/distro/defaultsetup.conf will be used"></span>
+    </dt>
+    <dd class="variable-list">
+    <span class="lead" id="distro">{{distro}}</span>
+    <span class="glyphicon glyphicon-edit" id="change-distro-icon"></span>
+    <form id="change-distro-form" class="form-inline" style="display:none;">
+      <div id="edit-distro-name-div" class="form-group">
+        <input type="text" class="form-control" id="new-distro" value="{{distro}}">
+      </div>
+      <button id="apply-change-distro" class="btn btn-default" type="button">Save</button>
+      <button id="cancel-change-distro" type="button" class="btn btn-link">Cancel</button>
+      <span class="help-block" id="distro-error-message"></span>
+    </form>
+    </dd>
+    {% endif %}
 
-    <div style="padding-left:19px;">
+    {% if dl_dir_defined %}
+    <dt>
+    <span class="js-config-var-name js-config-var-managed-name">DL_DIR</span>
+    <span class="glyphicon glyphicon-question-sign get-help" title="Absolute path to the directory used to store downloads required for your builds. By default, Toaster projects share the same downloads directory"></span>
+    </dt>
+    <dd class="variable-list">
+    <span id="dl_dir" class="lead {% if not dl_dir %} text-muted {% endif %}">{% if dl_dir %}{{dl_dir}}{%else%}Not set{%endif%}</span>
+    <span class="glyphicon glyphicon-edit" id="change-dl_dir-icon"></span>
+    <form id="change-dl_dir-form" class="form-inline" style="display:none;">
+      <div class="form-group" id="validate-dl_dir">
+        <input type="text" class="form-control" id="new-dl_dir" placeholder="Type an absolute path">
+      </div>
+      <button id="apply-change-dl_dir" class="btn btn-default" type="button">Save</button>
+      <button id="cancel-change-dl_dir" type="button" class="btn btn-link">Cancel</button>
+      <p class="help-block" id="hintError-dl_dir" style="display:none;">The directory path cannot include spaces or any of these characters: . \ ? % * : | " " &lt; &gt;</p>
+      <p class="help-block" id="hintError-initialChar-dl_dir" style="display:none;">The directory path should either start with a /, e.g. /home/toaster/downloads; or with a variable, e.g. ${TOPDIR}/downloads.</p>
+    </form>
+    </dd>
+    {% endif %}
 
-        <dl class="dl-vertical">
-            {% if distro_defined %}
-            <dt>
-                <span class="js-config-var-name js-config-var-managed-name">DISTRO</span>
-                <i class="icon-question-sign get-help" title="The short name of the distribution. If the variable is blank, meta/conf/distro/defaultsetup.conf will be used. <br /><a href='http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-DISTRO' target='_blank'>Read more in the manual</a>"></i>
-            </dt>
-            <dd class="lead">
-                <span id="distro">{{distro}}</span>
-                <i class="icon-pencil" id="change-distro-icon"></i>
-                <form id="change-distro-form" style="display:none;">
-                    <div class="input-append">
-                        <span  id="edit-distro-name-div" class="control-group">
-                            <input type="text" id="new-distro" value="{{distro}}">
-                            <button id="apply-change-distro" class="btn" type="button">Save</button>
-                            <button id="cancel-change-distro" type="button" class="btn btn-link">Cancel</button>
-                        </span>
-                        <span class="help-block error" id="distro-error-message"></span>
-                    </div>
-                </form>
-            </dd>
-            {% endif %}
+    {% if fstypes_defined %}
+    <dt>
+    <span class="js-config-var-name js-config-var-managed-name">IMAGE_FSTYPES</span>
+    <span class="glyphicon glyphicon-question-sign get-help" title="Formats of root file system images that you want to create"></span>
+    </dt>
+    <dd class="variable-list">
+    <span class="lead" id="image_fstypes">{{fstypes}}</span>
+    <span class="glyphicon glyphicon-edit" id="change-image_fstypes-icon"></span>
+    <form id="change-image_fstypes-form" style="display:none;">
+      <label>Type the image types you want to build:</label>
+      <div class="form-group form-inline" id="validate-image_fstypes">
+        <input type="text" class="form-control "id="new-imagefs_types">
+        <button id="apply-change-image_fstypes" type="button" class="btn btn-default">Save</button>
+        <button id="cancel-change-image_fstypes" type="button" class="btn btn-link">Cancel</button>
+      </div>
+      <p class="help-block text-danger" style="display:none;" id="hintError-image-fs_type">A valid image type cannot include underscores</p>
+      <label>Or choose from known image types:</label>
+      <input id="filter-image_fstypes" type="text" placeholder="Search image types" class="form-control">
+      <div id="all-image_fstypes" class="scrolling"></div>
+    </form>
+    </dd>
+    {% endif %}
 
-            {% if dl_dir_defined %}
-            <dt>
-                <span class="js-config-var-name js-config-var-managed-name">DL_DIR</span>
-                <i class="icon-question-sign get-help" title="Absolute path to the directory used to store downloads required for your builds. By default, Toaster projects share the same downloads directory.<br /><a href='http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#var-DL_DIR' target='_blank'>Read more in the manual</a>"></i>
-            </dt>
-            <dd class="lead">
-                <span id="dl_dir"{% if dl_dir %}{%else%} class="muted"{%endif%}>{% if dl_dir %}{{dl_dir}}{%else%}Not set{%endif%}</span>
-                <i class="icon-pencil" id="change-dl_dir-icon"></i>
-                <form id="change-dl_dir-form" style="display:none;">
-                    <div class="row-fluid">
-                        <span class="help-block span4">To set DL_DIR type the absolute path of the download folder.</span>
-                    </div>
-                    <div class="input-append" id="validate-dl_dir">
-                        <input type="text" class="input-xlarge" id="new-dl_dir" placeholder="Type absolute path of the DL_DIR folder">
-                        <button id="apply-change-dl_dir" class="btn" type="button">Save</button>
-                        <button id="cancel-change-dl_dir" type="button" class="btn btn-link">Cancel</button>
-			</br><span class="help-block error" id="hintError-dl_dir">A valid directory cannot include spaces or any of these characters: . \ ? % * : | " " < ></span>
-                    </div>
-                </form>
-            </dd>
-            {% endif %}
-
-            {% if fstypes_defined %}
-            <dt>
-                <span class="js-config-var-name js-config-var-managed-name">IMAGE_FSTYPES</span>
-                <i class="icon-question-sign get-help" title="Formats of root file system images that you want to have created <br /><a href='http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-IMAGE_FSTYPES' target='_blank'>Read more in the manual</a>"></i>
-            </dt>
-            <dd class="lead">
-                <span id="image_fstypes">{{fstypes}}</span>
-                <i class="icon-pencil" id="change-image_fstypes-icon"></i>
-                <form id="change-image_fstypes-form" style="display:none;">
-                    <input id="filter-image_fstypes" type="text" placeholder="Search image types" class="span4">
-                    <div id="all-image_fstypes" class="scrolling">
-                    </div>
-                    <span class="help-block" id="fstypes-error-message">You must select at least one image type</span>
-                    <button id="apply-change-image_fstypes" type="button" class="btn">Save</button>
-                    <button id="cancel-change-image_fstypes" type="button" class="btn btn-link">Cancel</button>
-                </form>
-            </dd>
-            {% endif %}
-
-            {% if image_install_append_defined %}
-            <dt>
-                <span class="js-config-var-name js-config-var-managed-name">IMAGE_INSTALL_append</span>
-                <i class="icon-question-sign get-help" title="Specifies additional packages to install into an image. If your build creates more than one image, the packages will be installed in <strong>all of them</strong> <br /><a href='http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-IMAGE_INSTALL' target='_blank'>Read more in the manual</a>"></i>
-            </dt>
-            <dd class="lead">
-                <span id="image_install"{% if image_install_append %}{%else%} class="muted"{%endif%}>{% if image_install_append %}{{image_install_append}}{%else%}Not set{%endif%}</span>
-                <i class="icon-pencil" id="change-image_install-icon"></i>
-                <i class="icon-trash" id="delete-image_install-icon" {% if image_install_append %}{%else%}style="display:none;"{%endif%}></i>
-                <form id="change-image_install-form" style="display:none;">
-                    <div class="row-fluid">
-                        <span class="help-block span4">To set IMAGE_INSTALL_append to more than one package, type the package names separated by a space.</span>
-                    </div>
-                    <div class="input-append">
-                        <input type="text" class="input-xlarge" id="new-image_install" placeholder="Type one or more package names">
-                        <button id="apply-change-image_install" class="btn" type="button">Save</button>
-                        <button id="cancel-change-image_install" type="button" class="btn btn-link">Cancel</button>
-                    </div>
-                </form>
-            </dd>
-            {% endif %}
-
-            {% if package_classes_defined %}
-            <dt>
-                <span class="js-config-var-name js-config-var-managed-name">PACKAGE_CLASSES</span>
-                <i class="icon-question-sign get-help" title="Specifies the package manager to use when packaging data <br /><a href='http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-PACKAGE_CLASSES' target='_blank'>Read more in the manual</a>"></i>
-            </dt>
-            <dd class="lead">
-                <span id="package_classes">{{package_classes}}</span>
-                <i id="change-package_classes-icon" class="icon-pencil"></i>
-                <form id="change-package_classes-form" style="display:none;">
-                    <label>
-                        Root file system package format
-                        <i class="icon-question-sign get-help" title="The package format used to generate the root file system. Options are <code>dev</code>, <code>ipk</code> and <code>rpm</code>"></i>
-                    </label>
-                    <select id="package_classes-select">
-                        <option>package_deb</option>
-                        <option>package_ipk</option>
-                        <option>package_rpm</option>
-                    </select>
-                    <label>
-                        Additional package formats
-                        <i class="icon-question-sign get-help" title="Extra package formats to build"></i>
-                    </label>
-                    <label class="checkbox" id="package_class_1">
-                        <input type="checkbox" id="package_class_1_input"> package_deb
-                    </label>
-                    <label class="checkbox" id="package_class_2">
-                        <input type="checkbox" id="package_class_2_input"> package_ipk
-                    </label>
-                    <div style="padding-top:10px;">
-                        <button id="apply-change-package_classes" type="button" class="btn">Save</button>
-                        <button id="cancel-change-package_classes" type="button" class="btn btn-link">Cancel</button>
-                    </div>
-                </form>
-            </dd>
-            {% endif %}
-
-            {% if sstate_dir_defined %}
-            <dt>
-                <span class="js-config-var-name js-config-var-managed-name">SSTATE_DIR</span>
-                <i class="icon-question-sign get-help" title="Absolute path to the directory used to store shared state cache files. These files are reused across the builds, which makes the builds faster. By default, Toaster projects share the same cache directory.<br /><a href='http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#var-SSTATE_DIR' target='_blank'>Read more in the manual</a>"></i>
-            </dt>
-            <dd class="lead">
-                <span id="sstate_dir"{% if sstate_dir %}{%else%} class="muted"{%endif%}>{% if sstate_dir %}{{sstate_dir}}{%else%}Not set{%endif%}</span>
-                <i class="icon-pencil" id="change-sstate_dir-icon"></i>
-                <form id="change-sstate_dir-form" style="display:none;">
-                    <div class="row-fluid">
-                        <span class="help-block span4">To set SSTATE_DIR type the absolute path of the download folder.</span>
-                    </div>
-                    <div class="input-append" id="validate-sstate_dir">
-                        <input type="text" class="input-xlarge" id="new-sstate_dir" placeholder="Type absolute path of the SSTATE_DIR folder">
-                        <span class="error">A valid directory name required</span>
-                        <button id="apply-change-sstate_dir" class="btn" type="button">Save</button>
-                        <button id="cancel-change-sstate_dir" type="button" class="btn btn-link">Cancel</button>
-			</br><p class="help-block error" id="hintError-sstate_dir">A valid directory cannot include spaces or any of these characters: . \ ? % * : | " " < ></span>
-                    </div>
-                </form>
-            </dd>
-            {% endif %}
-        </dl>
-
-        <!-- <ul class="unstyled configuration-list" id="configvar-list"> -->
-        <dl id="configvar-list">
-            <!-- the added configuration variables are inserted here -->
-        </dl>
-
-        <!-- pass the fstypes list, black list, and externally managed variables here -->
-        {% for fstype in vars_fstypes %}
-            <input type="hidden" class="js-checkbox-fstypes-list" value="{{fstype}}">
-        {% endfor %}
-        {% for b in vars_blacklist %}
-            <input type="hidden" class="js-config-blacklist-name" value="{{b}}">
-        {% endfor %}
-        {% for b in vars_managed %}
-            <input type="hidden" class="js-config-managed-name" value="{{b}}">
-        {% endfor %}
-
-        <div class="row-fluid">
-          <form id="variable-form">
-            <fieldset style="padding-left:0px;">
-                <legend>Add variable</legend>
-                <div class="span3" style="margin-left:0px;">
-                    <span  id="add-configvar-name-div" class="control-group">
-                      <label>
-                        Variable
-                        <i title="" class="icon-question-sign get-help"
-                           data-original-title="Variable names are case sensitive,
-                           cannot have spaces, and can only include letters, numbers, underscores
-                           and dashes"></i>
-                      </label>
-                      <input type="text" placeholder="Type variable name" id="variable">
-                      <span class="help-block error" id="new-variable-error-message"></span>
-                    </span>
-                    <label>Value</label>
-                    <input id="value" type="text" placeholder="Type variable value"><p>
-                    <div>
-                        <button id="add-configvar-button" class="btn save" type="button" disabled>Add variable</button>
-                    </div>
-                </div>
-                <div class="span5 help-block">
-                    <h5>Some variables are reserved from Toaster</h5>
-                    <p>Toaster cannot set any variables that impact 1) the configuration of the build servers,
-                    or 2) where artifacts produced by the build are stored. Such variables include: </p>
-                    <p>
-                    <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-BB_DISKMON_DIRS" target="_blank">BB_DISKMON_DIRS</a></code>
-                    <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-BB_NUMBER_THREADS" target="_blank">BB_NUMBER_THREADS</a></code>
-                    <code>CVS_PROXY_HOST</code>
-                    <code>CVS_PROXY_PORT</code>
-                    <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-PARALLEL_MAKE" target="_blank">PARALLEL_MAKE</a></code>
-                    <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-SSTATE_MIRRORS" target="_blank">SSTATE_MIRRORS</a></code>
-                    <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-TMPDIR" target="_blank">TMPDIR</a></code></p>
-                    <p>Plus the following standard shell environment variables:</p>
-                    <p><code>http_proxy</code> <code>ftp_proxy</code> <code>https_proxy</code> <code>all_proxy</code></p>
-                </div>
-            </fieldset>
-          </form>
+    {% if image_install_append_defined %}
+    <dt>
+    <span class="js-config-var-name js-config-var-managed-name">IMAGE_INSTALL_append</span>
+    <span class="glyphicon glyphicon-question-sign get-help" title="Specifies additional packages to install into an image. If your build creates more than one image, the packages will be installed in all of them"></span>
+    </dt>
+    <dd class="variable-list">
+    <span id="image_install" class="lead {% if not image_install_append %} text-muted {%endif%}">{% if image_install_append %}{{image_install_append}}{%else%}Not set{%endif%}</span>
+    <span class="glyphicon glyphicon-edit" id="change-image_install-icon"></span>
+    <span class="glyphicon glyphicon-trash" id="delete-image_install-icon" {% if image_install_append %}{%else%}style="display:none;"{%endif%}></span>
+    <form id="change-image_install-form" class="form-inline" style="display:none;">
+      <div class="row">
+        <div class="col-md-4">
+          <span class="help-block">To set IMAGE_INSTALL_append to more than one package, type the package names separated by a space.</span>
         </div>
+      </div>
+      <div class="form-group">
+        <input type="text" class="form-control" id="new-image_install" placeholder="Type one or more package names">
+      </div>
+      <button id="apply-change-image_install" class="btn btn-default" type="button">Save</button>
+      <button id="cancel-change-image_install" type="button" class="btn btn-link">Cancel</button>
+    </form>
+    </dd>
+    {% endif %}
 
-    </div>
+    {% if package_classes_defined %}
+    <dt>
+    <span class="js-config-var-name js-config-var-managed-name">PACKAGE_CLASSES</span>
+    <span class="glyphicon glyphicon-question-sign get-help" title="Specifies the package manager to use when packaging data"></span>
+    </dt>
+    <dd class="variable-list">
+    <span class="lead" id="package_classes">{{package_classes}}</span>
+    <span id="change-package_classes-icon" class="glyphicon glyphicon-edit"></span>
+    <form id="change-package_classes-form" style="display:none;">
+      <div class="form-group">
+        <label class="control-label">
+          Root file system package format
+          <span class="glyphicon glyphicon-question-sign get-help" title="The package format used to generate the root file system. Options are <code>deb</code>, <code>ipk</code> and <code>rpm</code>"></i>
+        </label>
+        <select id="package_classes-select" class="form-control">
+          <option>package_deb</option>
+          <option>package_ipk</option>
+          <option>package_rpm</option>
+        </select>
+      </div>
+      <div class="form-group">
+        <label class="control-label">
+          Additional package formats
+          <span class="glyphicon glyphicon-question-sign get-help" title="Extra package formats to build"></span>
+        </label>
+        <div class="checkbox">
+          <label id="package_class_1">
+            <input type="checkbox" id="package_class_1_input"> package_deb
+          </label>
+        </div>
+        <div class="checkbox">
+          <label id="package_class_2">
+            <input type="checkbox" id="package_class_2_input"> package_ipk
+          </label>
+        </div>
+      </div>
+      <button id="apply-change-package_classes" type="button" class="btn btn-default">Save</button>
+      <button id="cancel-change-package_classes" type="button" class="btn btn-link">Cancel</button>
+    </form>
+    </dd>
+    {% endif %}
 
-    <script>
+    {% if sstate_dir_defined %}
+    <dt>
+    <span class="js-config-var-name js-config-var-managed-name">SSTATE_DIR</span>
+    <span class="glyphicon glyphicon-question-sign get-help" title="Absolute path to the directory used to store shared state cache files. These files are reused across the builds, which makes the builds faster. By default, Toaster projects share the same cache directory"></span>
+    </dt>
+    <dd class="variable-list">
+    <span id="sstate_dir" class="lead {% if not sstate_dir %} text-muted {% endif %}">{% if sstate_dir %}{{sstate_dir}}{%else%}Not set{%endif%}</span>
+    <span class="glyphicon glyphicon-edit" id="change-sstate_dir-icon"></span>
+    <form class="form-inline" id="change-sstate_dir-form" style="display:none;">
+      <div class="form-group" id="validate-sstate_dir">
+        <input type="text" class="form-control" id="new-sstate_dir" placeholder="Type an absolute path">
+      </div>
+      <button id="apply-change-sstate_dir" class="btn btn-default" type="button">Save</button>
+      <button id="cancel-change-sstate_dir" type="button" class="btn btn-link">Cancel</button>
+      <p class="help-block" id="hintError-sstate_dir" style="display:none;">The directory path cannot include spaces or any of these characters: . \ ? % * : | " " &lt; &gt;</p>
+      <p class="help-block" id="hintError-initialChar-sstate_dir" style="display:none;">The directory path should either start with a /, e.g. /home/toaster/sstate-cache; or with a variable, e.g. ${TOPDIR}/sstate-cache.</p>
+    </form>
+    </dd>
+    {% endif %}
+  </dl>
 
-        // global variables
-        var do_reload=false;
+  <!-- <ul class="list-unstyled configuration-list" id="configvar-list"> -->
+  <dl id="configvar-list">
+    <!-- the added configuration variables are inserted here -->
+  </dl>
 
-        // validate new variable name
-        function validate_new_variable() {
-            var variable = $("input#variable").val();
-            var value    = $("input#value").val();
+  <!-- pass the fstypes list, black list, and externally managed variables here -->
+  {% for fstype in vars_fstypes %}
+  <input type="hidden" class="js-checkbox-fstypes-list" value="{{fstype}}">
+  {% endfor %}
+  {% for b in vars_blacklist %}
+  <input type="hidden" class="js-config-blacklist-name" value="{{b}}">
+  {% endfor %}
+  {% for b in vars_managed %}
+  <input type="hidden" class="js-config-managed-name" value="{{b}}">
+  {% endfor %}
 
-            // presumed innocence
-            $('#new-variable-error-message').text("");
-            var error_msg = "";
+  <form id="variable-form">
+    <fieldset>
+      <legend>Add variable</legend>
+      <div class="row">
+        <div class="col-md-3">
+          <div id="add-configvar-name-div" class="form-group">
+            <label class="control-label">
+              Variable
+              <span class="glyphicon glyphicon-question-sign get-help"
+                    title="Variable names are case sensitive,
+                    cannot have spaces, and can only include letters, numbers, underscores
+                    and dashes"></span>
+            </label>
+            <input type="text" class="form-control" placeholder="Type the variable name" id="variable">
+          </div>
+          <p class="help-block" id="new-variable-error-message"></p>
+          <div class="form-group">
+            <label clas="control-label">Value</label>
+            <input id="value" type="text" class="form-control" placeholder="Type the variable value">
+          </div>
+          <button id="add-configvar-button" class="btn btn-default save" type="button" disabled>Add variable</button>
+        </div>
+        <div class="col-md-5 help-block">
+          <h5>Some variables cannot be set from Toaster</h5>
+          <p>Toaster cannot set any variables that impact 1) the configuration of the build servers,
+          or 2) where artifacts produced by the build are stored. Such variables include: </p>
+          <p>
+          <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-BB_DISKMON_DIRS" target="_blank">BB_DISKMON_DIRS</a></code>
+          <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-BB_NUMBER_THREADS" target="_blank">BB_NUMBER_THREADS</a></code>
+          <code>CVS_PROXY_HOST</code>
+          <code>CVS_PROXY_PORT</code>
+          <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-PARALLEL_MAKE" target="_blank">PARALLEL_MAKE</a></code>
+          <code><a href="http://www.yoctoproject.org/docs/1.6.1/ref-manual/ref-manual.html#var-TMPDIR" target="_blank">TMPDIR</a></code></p>
+          <p>Plus the following standard shell environment variables:</p>
+          <p><code>http_proxy</code> <code>ftp_proxy</code> <code>https_proxy</code> <code>all_proxy</code></p>
+        </div>
+      </div>
+    </fieldset>
+  </form>
+</div>
 
-            var existing_configvars = document.getElementsByClassName('js-config-var-name');
-            for (var i = 0, length = existing_configvars.length; i < length; i++) {
-                if (existing_configvars[i].innerHTML.toUpperCase() == variable.toUpperCase()) {
-                    error_msg = "This variable is already set in this page, edit its value instead";
-                }
-            }
+</div>
 
-            var blacklist_configvars = document.getElementsByClassName('js-config-blacklist-name');
-            for (var i = 0, length = blacklist_configvars.length; i < length; i++) {
-                if (blacklist_configvars[i].value.toUpperCase() == variable.toUpperCase()) {
-                    error_msg = "You cannot edit this variable in Toaster because it is set by the build servers";
-                }
-            }
+<script>
 
-            var managed_configvars = document.getElementsByClassName('js-config-managed-name');
-            for (var i = 0, length = managed_configvars.length; i < length; i++) {
-                if (managed_configvars[i].value.toUpperCase() == variable.toUpperCase()) {
-                    error_msg = "You cannot set this variable here. Please set it in the <a href=\"{% url 'project' project.id %}\">project main page</a>";
-                }
-            }
+// global variables
+var do_reload=false;
 
-            var bad_chars  = /[^a-zA-Z0-9\-_]/.test(variable);
-            var has_spaces = (0 <= variable.indexOf(" "));
-            var only_spaces = (0 < variable.length) && (0 == variable.trim().length);
+// validate new variable name
+function validate_new_variable() {
+  var variable = $("input#variable").val();
+  var value    = $("input#value").val();
 
-            if (only_spaces) {
-                error_msg = "A valid variable name cannot include spaces";
-            } else if (bad_chars && has_spaces) {
-                error_msg = "A valid variable name can only include letters, numbers, underscores, dashes, and cannot include spaces";
-            } else if (bad_chars) {
-                error_msg = "A valid variable name can only include letters, numbers, underscores, and dashes";
-            }
+  // presumed innocence
+  $('#new-variable-error-message').text("");
+  var error_msg = "";
 
-            if ("" != error_msg) {
-                $('#new-variable-error-message').html(error_msg);
-                $(".save").attr("disabled","disabled");
+  var existing_configvars = document.getElementsByClassName('js-config-var-name');
+  for (var i = 0, length = existing_configvars.length; i < length; i++) {
+    if (existing_configvars[i].innerHTML.toUpperCase() == variable.toUpperCase()) {
+      error_msg = "This variable is already set in this page. Edit its value instead";
+    }
+  }
 
-                // add one (and only one) error class append
-                var d = document.getElementById("add-configvar-name-div");
-                d.className = d.className.replace(" error","");
-                d.className = d.className + " error";
+  var blacklist_configvars = document.getElementsByClassName('js-config-blacklist-name');
+  for (var i = 0, length = blacklist_configvars.length; i < length; i++) {
+    if (blacklist_configvars[i].value.toUpperCase() == variable.toUpperCase()) {
+      error_msg = "You cannot edit this variable in Toaster because it is set by the build servers";
+    }
+  }
 
-                return false;
-            } else if (0 == variable.length) {
-                $(".save").attr("disabled","disabled");
-                return false;
-            }
+  var managed_configvars = document.getElementsByClassName('js-config-managed-name');
+  for (var i = 0, length = managed_configvars.length; i < length; i++) {
+    if (managed_configvars[i].value.toUpperCase() == variable.toUpperCase()) {
+      error_msg = "You cannot set this variable here. Please set it in the <a href=\"{% url 'project' project.id %}\">project main page</a>";
+    }
+  }
 
-            var d = document.getElementById("add-configvar-name-div");
-            d.className = d.className.replace(" error","");
+  var bad_chars  = /[^a-zA-Z0-9\-_/]/.test(variable);
+  var has_spaces = (0 <= variable.indexOf(" "));
+  var only_spaces = (0 < variable.length) && (0 == variable.trim().length);
 
-            // now set the "Save" enablement if 'value' also passes
-            if (value.trim().length > 0) {
-                $(".save").removeAttr("disabled");
-            } else {
-                $(".save").attr("disabled","disabled");
-            }
+  if (only_spaces) {
+    error_msg = "A valid variable name cannot include spaces";
+  } else if (bad_chars && has_spaces) {
+    error_msg = "A valid variable name can only include letters, numbers and the special characters <code> _ - /</code>. Variable names cannot include spaces";
+  } else if (bad_chars) {
+    error_msg = "A valid variable name can only include letters, numbers and the special characters <code>_ - /</code>";
+  }
 
-            return true;
+  if ("" != error_msg) {
+    $('#new-variable-error-message').html(error_msg);
+    $(".save").attr("disabled","disabled");
+
+    // add one (and only one) error class append
+    $("#add-configvar-name-div").addClass("has-error");
+    $("#new-variable-error-message").addClass("text-danger");
+
+    return false;
+  } else if (0 == variable.length) {
+    $(".save").attr("disabled","disabled");
+    return false;
+  }
+
+  $("#add-configvar-name-div").removeClass("has-error");
+
+  // now set the "Save" enablement if 'value' also passes
+  if (value.trim().length > 0) {
+    $(".save").removeAttr("disabled");
+  } else {
+    $(".save").attr("disabled","disabled");
+  }
+
+  return true;
+}
+
+// validate distro name
+function validate_distro_name() {
+  var value    = $("input#new-distro").val();
+
+  // presumed innocence
+  $('#distro-error-message').text("");
+  var error_msg = "";
+
+  var has_spaces = (0 <= value.indexOf(" "));
+
+  if (has_spaces) {
+    error_msg = "A valid distro name cannot include spaces";
+  } else if (0 == value.length) {
+    error_msg = " ";
+  }
+
+  if ("" != error_msg) {
+    $('#distro-error-message').text(error_msg);
+    $("#apply-change-distro").attr("disabled","disabled");
+
+    // add one (and only one) error class append
+    $("#change-distro-form").addClass("has-error");
+
+    return false;
+  }
+
+  $("#change-distro-form").removeClass("has-error");
+  $("#apply-change-distro").removeAttr("disabled");
+  return true;
+}
+
+// Test to insure at least one FS Type is checked
+function enableFsTypesSave() {
+  var any_checked = 0;
+  $(".fs-checkbox-fstypes:checked").each(function(){
+    any_checked = 1;
+  });
+  if ( 0 == any_checked ) {
+    $("#apply-change-image_fstypes").attr("disabled","disabled");
+    $('.scrolling').addClass('has-error');
+    $('#fstypes-error-message').show();
+  }
+  else {
+    $("#apply-change-image_fstypes").removeAttr("disabled");
+    $('.scrolling').removeClass('has-error');
+    $('#fstypes-error-message').hide();
+  }
+}
+
+// Preset or reset the Package Class checkbox labels
+function updatePackageClassCheckboxes() {
+  $('#package_class_1, #package_class_2').hide();
+  if ($('select').val() == 'package_deb') {
+    $('#package_class_1').html('<input type="checkbox" id="package_class_1_input"> package_ipk');
+    $('#package_class_2').html('<input type="checkbox" id="package_class_2_input"> package_rpm');
+  }
+  if ($('select').val() == 'package_ipk') {
+    $('#package_class_1').html('<input type="checkbox" id="package_class_1_input"> package_deb');
+    $('#package_class_2').html('<input type="checkbox" id="package_class_2_input"> package_rpm');
+  }
+  if ($('select').val() == 'package_rpm') {
+    $('#package_class_1').html('<input type="checkbox" id="package_class_1_input"> package_deb');
+    $('#package_class_2').html('<input type="checkbox" id="package_class_2_input"> package_ipk');
+  }
+  $('#package_class_1, #package_class_2').fadeIn(1500);
+}
+
+// Re-assert handlers when the page is served and/or refreshed via Ajax
+function setEventHandlersForDynamicElements() {
+
+  // change variable value
+  $('.js-icon-pencil-config_var').click(function (evt) {
+    var pk = $(this).attr("x-data");
+    var current_val = $("#config_var_value_"+pk).text();
+    $("#config_var_value_"+pk).hide();
+    $("#config_var_trash_"+pk).hide();
+    $(".js-icon-pencil-config_var[x-data="+pk+"]").hide();
+    $("#change-config_var-form_"+pk).slideDown();
+    $("#new-config_var_"+pk).val(current_val);
+    if ( $("#new-config_var_"+pk).val().length ) {
+      $("#apply-change-config_var_"+pk).removeAttr("disabled");
+    }
+    else {
+      $("#apply-change-config_var_"+pk).attr("disabled");
+    }
+  });
+
+  $('.js-cancel-change-config_var').click(function (evt) {
+    var pk = evt.target.attributes["x-data"].value;
+    $("#change-config_var-form_"+pk).slideUp(function() {
+      $("#config_var_trash_"+pk).show();
+      $('#config_var_value_'+pk).show();
+      $(".js-icon-pencil-config_var[x-data="+pk+"]").show();
+    });
+  });
+
+  $(".js-new-config_var").on('input', function(){
+    if ($(this).val().length == 0) {
+      $(this).parent("div").next(".btn-default").attr("disabled","disabled");
+    }
+    else {
+      $(this).parent("div").next(".btn-default").removeAttr("disabled");
+    }
+  });
+
+  $('.js-apply-change-config_var').click(function (evt) {
+    var xdata    = evt.target.attributes["x-data"].value.split(":");
+    var pk       = xdata[0];
+    var variable = xdata[1];
+    var val      = $('#new-config_var_'+pk).val();
+    postEditAjaxRequest({"configvarChange" : variable+':'+val});
+    $("#change-config_var-form_"+pk).slideUp();
+    $("#config_var_trash_"+pk).fadeIn();
+    $('#config_var_value_'+pk).fadeIn();
+    $(".js-icon-pencil-config_var[x-data="+pk+"]").fadeIn();
+  });
+
+  // delete variable
+  $(".js-icon-trash-config_var").click(function (evt) {
+    var pk = $(this).attr("x-data");
+
+    // fade out the variable+value div, then refresh the variable list
+    $(this).fadeOut();
+    $(this).tooltip("hide");
+    $("config_var_entry_"+pk).fadeOut();
+    $('#config_var_value_'+pk).parent("dd").fadeOut();
+    postEditAjaxRequest({"configvarDel": evt.target.attributes["x-data"].value});
+  });
+
+}
+
+function onEditPageUpdate(data) {
+  // update targets
+  var i; var orightml = "";
+
+  var configvars_sorted = data.configvars.sort(function(a, b){return a[0] > b[0]});
+
+  var managed_configvars = document.getElementsByClassName('js-config-var-managed-name');
+
+  for (i = 0; i < configvars_sorted.length; i++) {
+    // skip if the variable name has a special context (not user defined)
+    var var_context=undefined;
+    for (var j = 0, length = managed_configvars.length; j < length; j++) {
+      if ((managed_configvars[j].innerHTML == configvars_sorted[i][0]) ||
+          (managed_configvars[j].value     == configvars_sorted[i][0]) ) {
+        var_context='m';
+      }
+    }
+    if (var_context == undefined) {
+      orightml += '<dt><span id="config_var_entry_'+configvars_sorted[i][2]+'" class="js-config-var-name"></span><span class="glyphicon glyphicon-trash js-icon-trash-config_var" id="config_var_trash_'+configvars_sorted[i][2]+'" x-data="'+configvars_sorted[i][2]+'"></span> </dt>'
+        orightml += '<dd class="variable-list">'
+        orightml += '    <span class="lead" id="config_var_value_'+configvars_sorted[i][2]+'"></span>'
+        orightml += '    <span class="glyphicon glyphicon-edit js-icon-pencil-config_var" x-data="'+configvars_sorted[i][2]+'"></span>'
+        orightml += '    <form class="form-inline" id="change-config_var-form_'+configvars_sorted[i][2]+'" style="display:none;">'
+        orightml += '        <div class="form-group">'
+        orightml += '            <input type="text" class="form-control js-new-config_var" id="new-config_var_'+configvars_sorted[i][2]+'" value=""></div>'
+        orightml += '            <button id="apply-change-config_var_'+configvars_sorted[i][2]+'" class="btn btn-default js-apply-change-config_var" type="button" x-data="'+configvars_sorted[i][2]+':'+configvars_sorted[i][0]+'" disabled>Save</button>'
+        orightml += '            <button type="button" class="btn btn-link js-cancel-change-config_var" x-data="'+configvars_sorted[i][2]+'">Cancel</button>'
+        orightml += '    </form>'
+        orightml += '</dd>'
+    }
+  }
+
+  // update configvars list HTML framework
+  $("dl#configvar-list").html(orightml);
+
+  // insert the name/value pairs safely as non-HTML
+  for (i = 0; i < configvars_sorted.length; i++) {
+    $('#config_var_entry_'+configvars_sorted[i][2]).text(configvars_sorted[i][0]);
+    $('#config_var_value_'+configvars_sorted[i][2]).text(configvars_sorted[i][1]);
+  }
+
+  // Add the tooltips
+  $(".js-icon-trash-config_var").each( function(){ setDeleteTooltip($(this)); });
+  $(".js-icon-pencil-config_var").each(function(){ setChangeTooltip($(this)); });
+
+  // re-assert these event handlers
+  setEventHandlersForDynamicElements();
+}
+
+function onEditAjaxSuccess(data, textstatus) {
+  console.log("XHR returned:", data, "(" + textstatus + ")");
+  if (data.error != "ok") {
+    alert("error on request:\n" + data.error);
+    return;
+  }
+
+  // delayed page reload?
+  if (do_reload) {
+    do_reload=false;
+    location.reload(true);
+  } else {
+    onEditPageUpdate(data);
+  }
+}
+
+function onEditAjaxError(jqXHR, textstatus, error) {
+  alert("XHR errored:\n" + error + "\n(" + textstatus + ")");
+  // re-assert the event handlers
+}
+
+/* ensure cookie exists {% csrf_token %} */
+function postEditAjaxRequest(reqdata) {
+  var ajax = $.ajax({
+    type:"POST",
+    data: $.param(reqdata),
+    url:"{% url 'xhr_configvaredit' project.id%}",
+    headers: { 'X-CSRFToken': $.cookie("csrftoken")},
+    success: onEditAjaxSuccess,
+    error: onEditAjaxError,
+  })
+}
+
+function setDeleteTooltip(object) {
+  object.tooltip({ container: 'body', html: true, delay: {show: 400}, title: "Delete" });
+}
+function setChangeTooltip(object) {
+  object.tooltip({ container: 'body', html: true, delay: {show: 400}, title: "Change" });
+}
+
+$(document).ready(function() {
+
+  //
+  // Register handlers for static elements
+  //
+
+  {% if distro_defined %}
+  // change distro variable
+  $('#change-distro-icon').click(function() {
+    $('#change-distro-icon, #distro').hide();
+    $("#change-distro-form").slideDown();
+    $("#new-distro").val( $('#distro').text() );
+    $("#apply-change-distro").removeAttr("disabled");
+  });
+
+  $('#cancel-change-distro').click(function(){
+    $("#change-distro-form").slideUp(function() {
+      $('#distro, #change-distro-icon').show();
+
+      // reset any dangling error state
+      $('#distro-error-message').text("");
+      $("#change-distro-form").removeClass("has-error");
+    });
+  });
+
+  // validate new distro name
+  $("input#new-distro").on('input', function (evt) {
+    validate_distro_name();
+  });
+
+  $('#apply-change-distro').click(function(){
+    //$('#repo').parent().removeClass('highlight-go');
+    var name = $('#new-distro').val();
+    postEditAjaxRequest({"configvarChange" : 'DISTRO:'+name});
+    $('#distro').text(name);
+    $("#change-distro-form").slideUp(function () {
+      $('#distro, #change-distro-icon').show();
+    });
+  });
+  {% endif %}
+
+  {% if dl_dir_defined %}
+
+  // change DL_DIR variable
+  $('#change-dl_dir-icon').click(function() {
+    $('#change-dl_dir-form').removeClass('has-error');
+    // preset the edit value
+    var current_val = $("#dl_dir").text().trim();
+    if (current_val == "Not set") {
+      current_val="";
+      $("#apply-change-dl_dir").attr("disabled","disabled");
+    }
+    $("input#new-dl_dir").val(current_val);
+    // enable / disable the save button based on the input value
+    if ( current_val.length ) {
+      $("#apply-change-dl_dir").removeAttr("disabled");
+    }
+    else {
+      $("#apply-change-dl_dir").attr("disabled","disabled");
+    }
+
+    $('#change-dl_dir-icon, #dl_dir').hide();
+    $("#change-dl_dir-form").slideDown();
+  });
+
+  $('#cancel-change-dl_dir').click(function(){
+    $("#hintError-dl_dir").hide();
+    $("#hintError-initialChar-dl_dir").hide();
+    $("#change-dl_dir-form").slideUp(function() {
+      $('#dl_dir, #change-dl_dir-icon').show();
+    });
+  });
+
+  $("#new-dl_dir").on('input', function(){
+    if ($(this).val().trim().length == 0) {
+      $("#apply-change-dl_dir").attr("disabled","disabled");
+      $('#change-dl_dir-form').addClass('has-error');
+      $('#hintError-dl_dir').hide();
+      $('#hintError-initialChar-dl_dir').hide();
+    }
+    else {
+      var input = $(this);
+      var reBeginWithSlash = /^\//;
+      var reCheckVariable = /^\$/;
+      var re = /([ <>\\|":\.%\?\*]+)/;
+      var invalidDir = re.test(input.val());
+      var invalidSlash = reBeginWithSlash.test(input.val());
+      var invalidVar = reCheckVariable.test(input.val());
+      if (!invalidSlash && !invalidVar) {
+        $('#change-dl_dir-form').addClass('has-error');
+        $("#apply-change-dl_dir").attr("disabled","disabled");
+        $('#hintError-initialChar-dl_dir').show();
+      } else if (invalidDir) {
+        $('#change-dl_dir-form').addClass('has-error');
+        $("#apply-change-dl_dir").attr("disabled","disabled");
+        $('#hintError-dl_dir').show();
+      } else {
+        $('#change-dl_dir-form').removeClass('has-error');
+        $("#apply-change-dl_dir").removeAttr("disabled");
+        $('#hintError-dl_dir').hide();
+        $('#hintError-initialChar-dl_dir').hide();
+      }
+    }
+  });
+
+  $('#apply-change-dl_dir').click(function(){
+    var value = $('#new-dl_dir').val().trim();
+    postEditAjaxRequest({"configvarChange" : 'DL_DIR:'+value});
+    $('#dl_dir').text(value);
+    $('#dl_dir').removeClass('muted');
+    $("#change-dl_dir-form").slideUp(function () {
+      $('#dl_dir, #change-dl_dir-icon').show();
+    });
+  });
+
+  {% endif %}
+
+  {% if fstypes_defined %}
+  // change IMAGE_FSTYPES variable
+
+  // get value of fstypes and add to the textbox
+  $("#new-imagefs_types").val("{{fstypes}}");
+
+  // If value of new-imagefs_types is empty disable save button
+  $("#new-imagefs_types").on("input", function() {
+    $(this).val($(this).val().replace(/\s+/g,' '));
+    if ($(this).val().length === 0) {
+      //$('#apply-change-image_fstypes').prop('disabled', true);
+      $('#apply-change-image_fstypes').attr("disabled", "disabled");
+    } else {
+      //$('#apply-change-image_fstypes').prop('disabled', false);
+      $('#apply-change-image_fstypes').removeAttr("disabled");
+    }
+
+    /*If user types imagefs do the action on checkboxes.
+      Lets say if an imagefstype typed by user and the same
+      imagefs is unchecked in the checkbox, then checkbox needs
+      to get checked. Similarly when user deletes imagefs from
+      textbox the checkbox which is checked gets unchecked.
+     */
+    $('#all-image_fstypes input').each(function(){
+      var imagefs_userval = $('#new-imagefs_types').val();
+      if( imagefs_userval.indexOf($(this).val()) > -1) {
+        $(this).prop('checked', true);
+      } else {
+        $(this).prop('checked', false);
+      }
+    });
+
+    // Validate underscore in image fs types
+    if ($(this).val().indexOf('_') > -1) {
+      $('#validate-image_fstypes').addClass('has-error');
+      $('#hintError-image-fs_type').show();
+      $("#apply-change-image_fstypes").prop("disabled", true);
+    } else {
+      $('#validate-image_fstypes').removeClass('has-error');
+      $('#hintError-image-fs_type').hide();
+    }
+  });
+
+  $('#change-image_fstypes-icon').click(function() {
+    $('#change-image_fstypes-icon, #image_fstypes').hide();
+    $("#change-image_fstypes-form").slideDown();
+    // avoid false substring matches by including space separators
+    var html         = "";
+    var fstypes      = " " + document.getElementById("image_fstypes").innerHTML + " ";
+    var fstypes_list = document.getElementsByClassName('js-checkbox-fstypes-list');
+    // Add the checked boxes first
+    if ("  " != fstypes) {
+      for (var i = 0, length = fstypes_list.length; i < length; i++) {
+        if (0 <= fstypes.indexOf(" "+fstypes_list[i].value+" ")) {
+          html += '<div class="checkbox"><label><input type="checkbox" class="fs-checkbox-fstypes" value="'+fstypes_list[i].value+'" checked="checked">'+fstypes_list[i].value+'</label></div>';
         }
+      }
+    }
+    // Add the un-checked boxes second
+    for (var i = 0, length = fstypes_list.length; i < length; i++) {
+      if (0  > fstypes.indexOf(" "+fstypes_list[i].value+" ")) {
+        html += '<div class="checkbox"><label><input type="checkbox" class="fs-checkbox-fstypes" value="'+fstypes_list[i].value+'">'+fstypes_list[i].value+'</label></div>';
+      }
+    }
+    // Add the 'no search matches' line last
+    html += '<label id="no-match-fstypes" class="text-muted">No image types found</label>\n';
+    // Display the list
+    document.getElementById("all-image_fstypes").innerHTML = html;
+    $('#no-match-fstypes').hide();
 
-        // validate distro name
-        function validate_distro_name() {
-             var value    = $("input#new-distro").val();
+    // clear the previous filter values and warning messages
+    $("input#filter-image_fstypes").val("");
+  });
 
-            // presumed innocence
-            $('#distro-error-message').text("");
-            var error_msg = "";
+  // When checkbox is checked/unchecked kindly update the text
+  $(document).on("change", "#all-image_fstypes :checkbox", function() {
+    var imagefs = $(this);
+    var imagefs_obj = $('#new-imagefs_types');
+    var imagefs_userval = imagefs_obj.val();
+    if ($(this).is(':checked')) {
+      if (imagefs_userval.indexOf($(imagefs).val()) === -1) {
+        imagefs_obj.val(imagefs_userval + " " + $(imagefs).val());
+      }
+    } else {
+      if (imagefs_userval.indexOf($(imagefs).val()) > -1) {
+        imagefs_obj.val(imagefs_userval.replace($(imagefs).val(), '').trim());
+      }
+    }
+    if ($('#new-imagefs_types').val().length === 0) {
+      $("#apply-change-image_fstypes").prop("disabled", true);
+    } else {
+      $("#apply-change-image_fstypes").prop("disabled", false);
+    }
+  });
 
-            var has_spaces = (0 <= value.indexOf(" "));
+  $('#cancel-change-image_fstypes').click(function(){
+    $("#new-imagefs_types").val("{{fstypes}}");
+    $("#change-image_fstypes-form").slideUp(function() {
+      $('#image_fstypes, #change-image_fstypes-icon').show();
+    });
+  });
 
-            if (has_spaces) {
-                error_msg = "A valid distro name cannot include spaces";
-            } else if (0 == value.length) {
-                error_msg = " ";
-            }
+  $('#filter-image_fstypes').on('input', function(){
+    var valThis = $(this).val().toLowerCase();
+    var matchCount=0;
+    $('#all-image_fstypes label').each(function(){
+      var text = $(this).text().toLowerCase();
+      var match = text.indexOf(valThis);
+      if (match >= 0) {
+        $(this).show();
+        matchCount += 1;
+      }
+      else {
+        $(this).hide();
+      }
+    });
+    if (matchCount === 0) {
+      $('#no-match-fstypes').show();
+    } else {
+      $('#no-match-fstypes').hide();
+    }
+  });
 
-            if ("" != error_msg) {
-                $('#distro-error-message').text(error_msg);
-                $("#apply-change-distro").attr("disabled","disabled");
+  $('#apply-change-image_fstypes').click(function(){
+    var fstypes = $('#new-imagefs_types').val();
 
-                // add one (and only one) error class append
-                var d = document.getElementById("edit-distro-name-div");
-                d.className = d.className.replace(" error","");
-                d.className = d.className + " error";
+    postEditAjaxRequest({"configvarChange" : 'IMAGE_FSTYPES:'+fstypes});
+    $('#image_fstypes').text(fstypes);
+    $('#image_fstypes').parent().removeClass('muted');
 
-                return false;
-            }
+    $("#change-image_fstypes-form").slideUp(function() {
+      $('#image_fstypes, #change-image_fstypes-icon').show();
+    });
+  });
+  {% endif %}
 
-            var d = document.getElementById("edit-distro-name-div");
-            d.className = d.className.replace(" error","");
-            $("#apply-change-distro").removeAttr("disabled");
-            return true;
-        }
 
-        // Test to insure at least one FS Type is checked
-        function enableFsTypesSave() {
-            var any_checked = 0;
-            $(".fs-checkbox-fstypes:checked").each(function(){
-                any_checked = 1;
-            });
-            if ( 0 == any_checked ) {
-                $("#apply-change-image_fstypes").attr("disabled","disabled");
-                $('#fstypes-error-message').show();
-            }
-            else {
-                $("#apply-change-image_fstypes").removeAttr("disabled");
-                $('#fstypes-error-message').hide();
-            }
-        }
+  {% if image_install_append_defined %}
 
-        // Preset or reset the Package Class checkbox labels
-        function updatePackageClassCheckboxes() {
-            $('#package_class_1, #package_class_2').hide();
-            if ($('select').val() == 'package_deb') {
-                $('#package_class_1').html('<input type="checkbox" id="package_class_1_input"> package_ipk');
-                $('#package_class_2').html('<input type="checkbox" id="package_class_2_input"> package_rpm');
-            }
-            if ($('select').val() == 'package_ipk') {
-                $('#package_class_1').html('<input type="checkbox" id="package_class_1_input"> package_deb');
-                $('#package_class_2').html('<input type="checkbox" id="package_class_2_input"> package_rpm');
-            }
-            if ($('select').val() == 'package_rpm') {
-                $('#package_class_1').html('<input type="checkbox" id="package_class_1_input"> package_deb');
-                $('#package_class_2').html('<input type="checkbox" id="package_class_2_input"> package_ipk');
-            }
-            $('#package_class_1, #package_class_2').fadeIn(1500);
-        }
+  // init IMAGE_INSTALL_append trash icon
+  setDeleteTooltip($('#delete-image_install-icon'));
 
-        // Re-assert handlers when the page is served and/or refreshed via Ajax
-        function setEventHandlersForDynamicElements() {
+  // change IMAGE_INSTALL_append variable
+  $('#change-image_install-icon').click(function() {
+    // preset the edit value
+    var current_val = $("span#image_install").text().trim();
+    if (current_val == "Not set") {
+      current_val="";
+      $("#apply-change-image_install").attr("disabled","disabled");
+    } else {
+      // insure these non-empty values have single space prefix
+      current_val=" " + current_val;
+      $("#apply-change-image_install").removeAttr("disabled");
+    }
+    $("input#new-image_install").val(current_val);
 
-            // change variable value
-            $('.js-icon-pencil-config_var').click(function (evt) {
-                var pk = evt.target.attributes["x-data"].value;
-                var current_val = $("span#config_var_value_"+pk).text();
-                $('.js-icon-pencil-config_var, .js-icon-trash-config_var, #config_var_value_'+pk).hide();
-                $("#change-config_var-form_"+pk).slideDown();
-                $("input#new-config_var_"+pk).val(current_val);
-            });
+    $('#change-image_install-icon, #delete-image_install-icon, #image_install').hide();
+    $("#change-image_install-form").slideDown();
+  });
 
-            $('.js-cancel-change-config_var').click(function (evt) {
-                var pk = evt.target.attributes["x-data"].value;
-                $("#change-config_var-form_"+pk).slideUp(function() {
-                    $('.js-icon-pencil-config_var, .js-icon-trash-config_var, #config_var_value_'+pk).show();
-                });
-            });
+  $('#cancel-change-image_install').click(function(){
+    $("#change-image_install-form").slideUp(function() {
+      $('#image_install, #change-image_install-icon').show();
+      if ($("span#image_install").text() != "Not set") {
+        $('#delete-image_install-icon').show();
+        setDeleteTooltip($('#delete-image_install-icon'));
+      }
+    });
+  });
 
-            $(".js-new-config_var").on('input', function(){
-                if ($(this).val().length == 0) {
-                    $(".js-apply-change-config_var").attr("disabled","disabled");
-                }
-                else {
-                    $(".js-apply-change-config_var").removeAttr("disabled");
-                }
-            });
+  $("#new-image_install").on('input', function(){
+    if ($(this).val().trim().length == 0) {
+      $("#apply-change-image_install").attr("disabled","disabled");
+    }
+    else {
+      $("#apply-change-image_install").removeAttr("disabled");
+    }
+  });
 
-            $('.js-apply-change-config_var').click(function (evt) {
-                var xdata    = evt.target.attributes["x-data"].value.split(":");
-                var pk       = xdata[0];
-                var variable = xdata[1];
-                var val      = $('#new-config_var_'+pk).val();
-                postEditAjaxRequest({"configvarChange" : variable+':'+val});
-                $('#config_var_value_'+pk).parent().removeClass('muted');
-                $("#change-config_var-form_"+pk).slideUp(function() {
-                    $('.js-icon-pencil-config_var, .js-icon-trash-config_var, #config_var_value_'+pk).show();
-                });
-            });
+  $('#apply-change-image_install').click(function(){
+    // insure these non-empty values have single space prefix
+    var value = " " + $('#new-image_install').val().trim();
+    postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL_append:'+value});
+    $('#image_install').text(value);
+    $('#image_install').removeClass('text-muted');
+    $("#change-image_install-form").slideUp(function () {
+      $('#image_install, #change-image_install-icon').show();
+      if (value.length > -1) {
+        $('#delete-image_install-icon').show();
+        setDeleteTooltip($('#delete-image_install-icon'));
+      }
+    });
+  });
 
-            // delete variable
-            $(".js-icon-trash-config_var").click(function (evt) {
-                var xdata    = evt.target.attributes["x-data"].value.split(":");
-                var pk       = xdata[0];
+  // delete IMAGE_INSTALL_append variable value
+  $('#delete-image_install-icon').click(function(){
+    $(this).tooltip('hide');
+    postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL_append:'+''});
+    $('#image_install').parent().fadeOut(1000, function(){
+      $('#image_install').addClass('text-muted');
+      $('#image_install').text('Not set');
+      $('#delete-image_install-icon').hide();
+      $('#image_install').parent().fadeIn(1000);
+    });
+  });
+  {% endif %}
 
-                // hide the dangling trash tooltip
-                $('#config_var_trash_'+pk).hide();
 
-                // fade out the variable+value div, then refresh the variable list
-                $('#config_var_entry_'+pk).parent().parent().fadeOut(1000, function(){
-                     postEditAjaxRequest({"configvarDel": evt.target.attributes["x-data"].value});
-                });
+  {% if package_classes_defined %}
+  // change PACKAGE_CLASSES variable
+  $('#change-package_classes-icon').click(function() {
+    $('#change-package_classes-icon, #package_classes').hide();
+    $("#change-package_classes-form").slideDown();
 
-            });
+    // initialize the pulldown and checkboxes
+    var value = $("#package_classes").text();
+    if ( value.indexOf("package_deb") == 0 ) {
+      $("#package_classes-select").prop('selectedIndex', 0);
+      updatePackageClassCheckboxes();
+      if ( value.indexOf("_ipk") > 0 ) {
+        $("#package_class_1_input").attr("checked",true);
+      }
+      if ( value.indexOf("_rpm") > 0 ) {
+        $("#package_class_2_input").attr("checked",true);
+      }
+    }
 
-        }
+    if ( value.indexOf("package_ipk") == 0 ) {
+      $("#package_classes-select").prop('selectedIndex', 1);
+      updatePackageClassCheckboxes();
+      if ( value.indexOf("_deb") > 0 ) {
+        $("#package_class_1_input").attr("checked",true);
+      }
+      if ( value.indexOf("_rpm") > 0 ) {
+        $("#package_class_2_input").attr("checked",true);
+      }
+    }
 
-        function onEditPageUpdate(data) {
-            // update targets
-            var i; var orightml = "";
+    if ( value.indexOf("package_rpm") == 0 ) {
+      $("#package_classes-select").prop('selectedIndex', 2);
+      updatePackageClassCheckboxes();
+      if ( value.indexOf("_deb") > 0 ) {
+        $("#package_class_1_input").attr("checked",true);
+      }
+      if ( value.indexOf("_ipk") > 0 ) {
+        $("#package_class_2_input").attr("checked",true);
+      }
+    }
+  });
 
-            var configvars_sorted = data.configvars.sort(function(a, b){return a[0] > b[0]});
+  $('#cancel-change-package_classes').click(function(){
+    $("#change-package_classes-form").slideUp(function() {
+      $('#package_classes, #change-package_classes-icon').show();
+    });
+  });
 
-            var managed_configvars = document.getElementsByClassName('js-config-var-managed-name');
+  $('select').change(function() {
+    updatePackageClassCheckboxes();
+  });
 
-            for (i = 0; i < configvars_sorted.length; i++) {
-                // skip if the variable name has a special context (not user defined)
-                var var_context=undefined;
-                for (var j = 0, length = managed_configvars.length; j < length; j++) {
-                    if ((managed_configvars[j].innerHTML == configvars_sorted[i][0]) ||
-                        (managed_configvars[j].value     == configvars_sorted[i][0]) ) {
-                        var_context='m';
-                    }
-                }
-                if (var_context == undefined) {
-                    orightml += '<div> <dt><span id="config_var_entry_'+configvars_sorted[i][2]+'" class="js-config-var-name"></span><i class="icon-trash js-icon-trash-config_var" id="config_var_trash_'+configvars_sorted[i][2]+'" x-data="'+configvars_sorted[i][2]+'"></i> </dt>'
-                    orightml += '<dd class="lead">'
-                    orightml += '    <span id="config_var_value_'+configvars_sorted[i][2]+'"></span>'
-                    orightml += '    <i class="icon-pencil js-icon-pencil-config_var" x-data="'+configvars_sorted[i][2]+'"></i>'
-                    orightml += '    <form id="change-config_var-form_'+configvars_sorted[i][2]+'" style="display:none;">'
-                    orightml += '        <div class="input-append">'
-                    orightml += '            <input type="text" class="input-xlarge js-new-config_var" id="new-config_var_'+configvars_sorted[i][2]+'" value="">'
-                    orightml += '            <button class="btn js-apply-change-config_var" type="button" x-data="'+configvars_sorted[i][2]+':'+configvars_sorted[i][0]+'" disabled>Save</button>'
-                    orightml += '            <button type="button" class="btn btn-link js-cancel-change-config_var" x-data="'+configvars_sorted[i][2]+'">Cancel</button>'
-                    orightml += '        </div>'
-                    orightml += '    </form>'
-                    orightml += '</dd> </div>'
-                }
-            }
+  $('#apply-change-package_classes').click(function(){
+    var e   = document.getElementById("package_classes-select");
+    var val = e.options[e.selectedIndex].text;
 
-            // update configvars list HTML framework
-            $("dl#configvar-list").html(orightml);
+    pc1_checked = document.getElementById("package_class_1_input").checked;
+    pc2_checked = document.getElementById("package_class_2_input").checked;
+    if (val == "package_deb") {
+      if (pc1_checked) val = val + " package_ipk";
+      if (pc2_checked) val = val + " package_rpm";
+    }
+    if (val == "package_ipk") {
+      if (pc1_checked) val = val + " package_deb";
+      if (pc2_checked) val = val + " package_rpm";
+    }
+    if (val == "package_rpm") {
+      if (pc1_checked) val = val + " package_deb";
+      if (pc2_checked) val = val + " package_ipk";
+    }
 
-            // insert the name/value pairs safely as non-HTML
-            for (i = 0; i < configvars_sorted.length; i++) {
-                $('#config_var_entry_'+configvars_sorted[i][2]).text(configvars_sorted[i][0]);
-                $('#config_var_value_'+configvars_sorted[i][2]).text(configvars_sorted[i][1]);
-            }
+    $('#package_classes').text(val);
+    //$('#package_classes').parent().removeClass('muted');
+    postEditAjaxRequest({"configvarChange" : 'PACKAGE_CLASSES:'+val});
+    $("#change-package_classes-form").slideUp(function() {
+      $('#package_classes, #change-package_classes-icon').show();
+    });
+  });
+  {% endif %}
 
-            // Add the tooltips
-            $(".js-icon-trash-config_var").each( function(){ setDeleteTooltip($(this)); });
-            $(".js-icon-pencil-config_var").each(function(){ setChangeTooltip($(this)); });
+  {% if sstate_dir_defined %}
 
-            // re-assert these event handlers
-            setEventHandlersForDynamicElements();
-        }
+  // change SSTATE_DIR variable
+  $('#change-sstate_dir-icon').click(function() {
+    $('#change-sstate_dir-form').removeClass('has-error');
+    // preset the edit value
+    var current_val = $("span#sstate_dir").text().trim();
+    if (current_val == "Not set") {
+      current_val="";
+      $("#apply-change-sstate_dir").attr("disabled","disabled");
+    }
+    $("input#new-sstate_dir").val(current_val);
 
-        function onEditAjaxSuccess(data, textstatus) {
-            // console.log("XHR returned:", data, "(" + textstatus + ")");
-            if (data.error != "ok") {
-                alert("error on request:\n" + data.error);
-                return;
-            }
+    // enable / disable the save button based on the input value
+    if ( current_val.length ) {
+      $("#apply-change-sstate_dir").removeAttr("disabled");
+    }
+    else {
+      $("#apply-change-sstate_dir").attr("disabled","disabled");
+    }
 
-            // delayed page reload?
-            if (do_reload) {
-                do_reload=false;
-                location.reload(true);
-            } else {
-                onEditPageUpdate(data);
-            }
-        }
+    $('#change-sstate_dir-icon, #sstate_dir').hide();
+    $("#change-sstate_dir-form").slideDown();
+  });
 
-        function onEditAjaxError(jqXHR, textstatus, error) {
-            alert("XHR errored:\n" + error + "\n(" + textstatus + ")");
-            // re-assert the event handlers
-        }
+  $('#cancel-change-sstate_dir').click(function(){
+    $("#hintError-sstate_dir").hide();
+    $("#hintError-initialChar-sstate_dir").hide();
+    $("#change-sstate_dir-form").slideUp(function() {
+      $('#sstate_dir, #change-sstate_dir-icon').show();
+    });
+  });
 
-        /* ensure cookie exists {% csrf_token %} */
-        function postEditAjaxRequest(reqdata) {
-            var ajax = $.ajax({
-                    type:"POST",
-                    data: $.param(reqdata),
-                    url:"{% url 'xhr_configvaredit' project.id%}",
-                    headers: { 'X-CSRFToken': $.cookie("csrftoken")},
-                    success: onEditAjaxSuccess,
-                    error: onEditAjaxError,
-            })
-        }
+  $("#new-sstate_dir").on('input', function(){
+    if ($(this).val().trim().length == 0) {
+      $("#apply-change-sstate_dir").attr("disabled","disabled");
+      $('#change-sstate_dir-form').addClass('has-error');
+      $('#hintError-sstate_dir').hide();
+      $('#hintError-initialChar-sstate_dir').hide();
+    }
+    else {
+      var input = $(this);
+      var reBeginWithSlash = /^\//;
+      var reCheckVariable = /^\$/;
+      var re = /([ <>\\|":\.%\?\*]+)/;
+      var invalidDir = re.test(input.val());
+      var invalidSlash = reBeginWithSlash.test(input.val());
+      var invalidVar = reCheckVariable.test(input.val());
+      if (!invalidSlash && !invalidVar) {
+        $('#change-sstate_dir-form').addClass('has-error');
+        $("#apply-change-sstate_dir").attr("disabled","disabled");
+        $('#hintError-initialChar-sstate_dir').show();
+      } else if (invalidDir) {
+          $('#change-sstate_dir-form').addClass('has-error');
+          $("#apply-change-sstate_dir").attr("disabled","disabled");
+          $('#hintError-sstate_dir').show();
+      } else {
+        $('#change-sstate_dir-form').removeClass('has-error');
+        $("#apply-change-sstate_dir").removeAttr("disabled");
+        $('#hintError-sstate_dir').hide();
+        $('#hintError-initialChar-sstate_dir').hide();
+      }
+    }
+  });
 
-        function setDeleteTooltip(object) {
-            object.tooltip({ container: 'body', html: true, delay: {show: 400}, title: "Delete" });
-        }
-        function setChangeTooltip(object) {
-            object.tooltip({ container: 'body', html: true, delay: {show: 400}, title: "Change" });
-        }
+  $('#apply-change-sstate_dir').click(function(){
+    var value = $('#new-sstate_dir').val().trim();
+    postEditAjaxRequest({"configvarChange" : 'SSTATE_DIR:'+value});
+    $('#sstate_dir').text(value);
+    $('#sstate_dir').removeClass('text-muted');
+    $("#change-sstate_dir-form").slideUp(function () {
+      $('#sstate_dir, #change-sstate_dir-icon').show();
+    });
+  });
 
-        $(document).ready(function() {
+  {% endif %}
 
-            //
-            // Register handlers for static elements
-            //
-
-            {% if distro_defined %}
-            // change distro variable
-            $('#change-distro-icon').click(function() {
-                $('#change-distro-icon, #distro').hide();
-                $("#change-distro-form").slideDown();
-                $("#new-distro").val( $('#distro').text() );
-            });
-
-            $('#cancel-change-distro').click(function(){
-                $("#change-distro-form").slideUp(function() {
-                    $('#distro, #change-distro-icon').show();
-
-                    // reset any dangling error state
-                    $('#distro-error-message').text("");
-                    var d = document.getElementById("edit-distro-name-div");
-                    d.className = d.className.replace(" error","");
-                });
-            });
-
-            // validate new distro name
-            $("input#new-distro").on('input', function (evt) {
-                validate_distro_name();
-            });
-
-            $('#apply-change-distro').click(function(){
-                //$('#repo').parent().removeClass('highlight-go');
-                var name = $('#new-distro').val();
-                postEditAjaxRequest({"configvarChange" : 'DISTRO:'+name});
-                $('#distro').text(name);
-                $("#change-distro-form").slideUp(function () {
-                    $('#distro, #change-distro-icon').show();
-                });
-            });
-            {% endif %}
-
-            {% if dl_dir_defined %}
-
-            // change DL_DIR variable
-            $('#change-dl_dir-icon').click(function() {
-                $('#hintError-dl_dir').hide();
-	        // preset the edit value
-                var current_val = $("span#dl_dir").text().trim();
-                if (current_val == "Not set") {
-                    current_val="";
-                    $("#apply-change-dl_dir").attr("disabled","disabled");
-                }
-                $("input#new-dl_dir").val(current_val);
-
-                $('#change-dl_dir-icon, #dl_dir').hide();
-                $("#change-dl_dir-form").slideDown();
-            });
-
-            $('#cancel-change-dl_dir').click(function(){
-                $("#change-dl_dir-form").slideUp(function() {
-                    $('#dl_dir, #change-dl_dir-icon').show();
-                });
-            });
-
-            $("#new-dl_dir").on('input', function(){
-	        if ($(this).val().trim().length == 0) {
-                    $("#apply-change-dl_dir").attr("disabled","disabled");
-                }
-                else {
-                    var input = $(this);
-                    var re = /^\/([^ <>\\|":\.%\?\*]+)$/;
-	            var invalidDir = re.test(input.val());
-		    console.log(invalidDir);
-                    if ( invalidDir ) {
-                        $('#validate-dl_dir').removeClass('control-group error');
-			$("#apply-change-dl_dir").removeAttr("disabled");
-                        $('#hintError-dl_dir').hide();
-                    } else {
-                        $('#validate-dl_dir').addClass('control-group error');
-			$("#apply-change-dl_dir").attr("disabled","disabled");
-                        $('#hintError-dl_dir').show();
-                    }
-                }
-            });
-
-            $('#apply-change-dl_dir').click(function(){
-                var value = $('#new-dl_dir').val().trim();
-                postEditAjaxRequest({"configvarChange" : 'DL_DIR:'+value});
-                $('#dl_dir').text(value);
-                $('#dl_dir').removeClass('muted');
-                $("#change-dl_dir-form").slideUp(function () {
-                    $('#dl_dir, #change-dl_dir-icon').show();
-               });
-            });
-
-            {% endif %}
-
-            {% if fstypes_defined %}
-            // change IMAGE_FSTYPES variable
-
-            $('#change-image_fstypes-icon').click(function() {
-                $('#change-image_fstypes-icon, #image_fstypes').hide();
-                $("#change-image_fstypes-form").slideDown();
-                // avoid false substring matches by including space separators
-                var html         = "";
-                var fstypes      = " " + document.getElementById("image_fstypes").innerHTML + " ";
-                var fstypes_list = document.getElementsByClassName('js-checkbox-fstypes-list');
-                // Add the checked boxes first
-                if ("  " != fstypes) {
-                    for (var i = 0, length = fstypes_list.length; i < length; i++) {
-                        if (0 <= fstypes.indexOf(" "+fstypes_list[i].value+" ")) {
-                             html += '<label class="checkbox"><input type="checkbox" class="fs-checkbox-fstypes" value="'+fstypes_list[i].value+'" checked="checked">'+fstypes_list[i].value+'</label>\n';
-                        }
-                    }
-                }
-                // Add the un-checked boxes second
-                for (var i = 0, length = fstypes_list.length; i < length; i++) {
-                    if (0  > fstypes.indexOf(" "+fstypes_list[i].value+" ")) {
-                        html += '<label class="checkbox"><input type="checkbox" class="fs-checkbox-fstypes" value="'+fstypes_list[i].value+'">'+fstypes_list[i].value+'</label>\n';
-                    }
-                }
-                // Add the 'no search matches' line last
-                html += '<label id="no-match-fstypes">No image types found</label>\n';
-                // Display the list
-                document.getElementById("all-image_fstypes").innerHTML = html;
-                $('#no-match-fstypes').hide();
-
-                // Watch elements to disable Save when none are checked
-                $(".fs-checkbox-fstypes").each(function(){
-                    $(this).click(function() {
-                        enableFsTypesSave();
-                    });
-                });
-
-                // clear the previous filter values and warning messages
-                $("input#filter-image_fstypes").val("");
-                $('#fstypes-error-message').hide();
-            });
-
-            $('#cancel-change-image_fstypes').click(function(){
-                $("#change-image_fstypes-form").slideUp(function() {
-                    $('#image_fstypes, #change-image_fstypes-icon').show();
-                });
-            });
-
-            $('#filter-image_fstypes').on('input', function(){
-                var valThis = $(this).val().toLowerCase();
-                var matchCount=0;
-                $('#all-image_fstypes label').each(function(){
-                    var text = $(this).text().toLowerCase();
-                    var match = text.indexOf(valThis);
-                    if (match >= 0) {
-                        $(this).show();
-                        matchCount += 1;
-                    }
-                    else {
-                        $(this).hide();
-                    }
-                });
-                if (matchCount === 0) {
-                   $('#no-match-fstypes').show();
-                } else {
-                   $('#no-match-fstypes').hide();
-                }
-            });
-
-            $('#apply-change-image_fstypes').click(function(){
-                // extract the selected fstypes and sort them
-                var fstypes_array = [];
-                var checkboxes = document.getElementsByClassName('fs-checkbox-fstypes');
-                $(".fs-checkbox-fstypes:checked").each(function(){
-                       fstypes_array.push($(this).val());
-                });
-                fstypes_array.sort();
-
-                // now make a string of them
-                var fstypes = '';
-                for (var i = 0, length = fstypes_array.length; i < length; i++) {
-                    fstypes += fstypes_array[i] + ' ';
-                }
-                fstypes = fstypes.trim();
-
-                postEditAjaxRequest({"configvarChange" : 'IMAGE_FSTYPES:'+fstypes});
-                $('#image_fstypes').text(fstypes);
-                $('#image_fstypes').parent().removeClass('muted');
-
-                $("#change-image_fstypes-form").slideUp(function() {
-                    $('#image_fstypes, #change-image_fstypes-icon').show();
-                });
-            });
-            {% endif %}
-
-
-            {% if image_install_append_defined %}
-
-            // init IMAGE_INSTALL_append trash icon
-            setDeleteTooltip($('#delete-image_install-icon'));
-
-            // change IMAGE_INSTALL_append variable
-            $('#change-image_install-icon').click(function() {
-                // preset the edit value
-                var current_val = $("span#image_install").text().trim();
-                if (current_val == "Not set") {
-                    current_val="";
-                    $("#apply-change-image_install").attr("disabled","disabled");
-                } else {
-                    // insure these non-empty values have single space prefix
-                    current_val=" " + current_val;
-                }
-                $("input#new-image_install").val(current_val);
-
-                $('#change-image_install-icon, #delete-image_install-icon, #image_install').hide();
-                $("#change-image_install-form").slideDown();
-            });
-
-            $('#cancel-change-image_install').click(function(){
-                $("#change-image_install-form").slideUp(function() {
-                    $('#image_install, #change-image_install-icon').show();
-                    if ($("span#image_install").text() != "Not set") {
-                        $('#delete-image_install-icon').show();
-                        setDeleteTooltip($('#delete-image_install-icon'));
-                    }
-                });
-            });
-
-            $("#new-image_install").on('input', function(){
-                if ($(this).val().trim().length == 0) {
-                    $("#apply-change-image_install").attr("disabled","disabled");
-                }
-                else {
-                    $("#apply-change-image_install").removeAttr("disabled");
-                }
-            });
-
-            $('#apply-change-image_install').click(function(){
-                // insure these non-empty values have single space prefix
-                var value = " " + $('#new-image_install').val().trim();
-                postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL_append:'+value});
-                $('#image_install').text(value);
-                $('#image_install').removeClass('muted');
-                $("#change-image_install-form").slideUp(function () {
-                    $('#image_install, #change-image_install-icon').show();
-                    if (value.length > -1) {
-                        $('#delete-image_install-icon').show();
-                        setDeleteTooltip($('#delete-image_install-icon'));
-                    }
-               });
-            });
-
-            // delete IMAGE_INSTALL_append variable value
-            $('#delete-image_install-icon').click(function(){
-                $(this).tooltip('hide');
-                postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL_append:'+''});
-                $('#image_install').parent().fadeOut(1000, function(){
-                    $('#image_install').addClass('muted');
-                    $('#image_install').text('Not set');
-                    $('#delete-image_install-icon').hide();
-                    $('#image_install').parent().fadeIn(1000);
-                });
-            });
-            {% endif %}
-
-
-            {% if package_classes_defined %}
-            // change PACKAGE_CLASSES variable
-            $('#change-package_classes-icon').click(function() {
-                $('#change-package_classes-icon, #package_classes').hide();
-                $("#change-package_classes-form").slideDown();
-
-                // initialize the pulldown and checkboxes
-                var value = $("#package_classes").text();
-                if ( value.indexOf("package_deb") == 0 ) {
-                    $("#package_classes-select").prop('selectedIndex', 0);
-                    updatePackageClassCheckboxes();
-                    if ( value.indexOf("_ipk") > 0 ) {
-                        $("#package_class_1_input").attr("checked",true);
-                    }
-                    if ( value.indexOf("_rpm") > 0 ) {
-                        $("#package_class_2_input").attr("checked",true);
-                    }
-                }
-
-                if ( value.indexOf("package_ipk") == 0 ) {
-                    $("#package_classes-select").prop('selectedIndex', 1);
-                    updatePackageClassCheckboxes();
-                    if ( value.indexOf("_deb") > 0 ) {
-                        $("#package_class_1_input").attr("checked",true);
-                    }
-                    if ( value.indexOf("_rpm") > 0 ) {
-                        $("#package_class_2_input").attr("checked",true);
-                    }
-                }
-
-                if ( value.indexOf("package_rpm") == 0 ) {
-                    $("#package_classes-select").prop('selectedIndex', 2);
-                    updatePackageClassCheckboxes();
-                    if ( value.indexOf("_deb") > 0 ) {
-                        $("#package_class_1_input").attr("checked",true);
-                    }
-                    if ( value.indexOf("_ipk") > 0 ) {
-                        $("#package_class_2_input").attr("checked",true);
-                    }
-                }
-            });
-
-            $('#cancel-change-package_classes').click(function(){
-                $("#change-package_classes-form").slideUp(function() {
-                    $('#package_classes, #change-package_classes-icon').show();
-                });
-            });
-
-            $('select').change(function() {
-                updatePackageClassCheckboxes();
-            });
-
-            $('#apply-change-package_classes').click(function(){
-                var e   = document.getElementById("package_classes-select");
-                var val = e.options[e.selectedIndex].text;
-
-                pc1_checked = document.getElementById("package_class_1_input").checked;
-                pc2_checked = document.getElementById("package_class_2_input").checked;
-                if (val == "package_deb") {
-                    if (pc1_checked) val = val + " package_ipk";
-                    if (pc2_checked) val = val + " package_rpm";
-                }
-                if (val == "package_ipk") {
-                    if (pc1_checked) val = val + " package_deb";
-                    if (pc2_checked) val = val + " package_rpm";
-                }
-                if (val == "package_rpm") {
-                    if (pc1_checked) val = val + " package_deb";
-                    if (pc2_checked) val = val + " package_ipk";
-                }
-
-                $('#package_classes').text(val);
-                //$('#package_classes').parent().removeClass('muted');
-                postEditAjaxRequest({"configvarChange" : 'PACKAGE_CLASSES:'+val});
-                $("#change-package_classes-form").slideUp(function() {
-                    $('#package_classes, #change-package_classes-icon').show();
-                });
-            });
-            {% endif %}
-
-            {% if sstate_dir_defined %}
-
-            // change SSTATE_DIR variable
-            $('#change-sstate_dir-icon').click(function() {
-                $('#hintError-sstate_dir').hide();
-                // preset the edit value
-                var current_val = $("span#sstate_dir").text().trim();
-                if (current_val == "Not set") {
-                    current_val="";
-                    $("#apply-change-sstate_dir").attr("disabled","disabled");
-                }
-                $("input#new-sstate_dir").val(current_val);
-
-                $('#change-sstate_dir-icon, #sstate_dir').hide();
-                $("#change-sstate_dir-form").slideDown();
-            });
-
-            $('#cancel-change-sstate_dir').click(function(){
-                $("#change-sstate_dir-form").slideUp(function() {
-                    $('#sstate_dir, #change-sstate_dir-icon').show();
-                });
-            });
-
-            $("#new-sstate_dir").on('input', function(){
-                if ($(this).val().trim().length == 0) {
-                    $("#apply-change-sstate_dir").attr("disabled","disabled");
-                }
-                else {
-                    var input = $(this);
-                    var re = /^\/([^ <>\\|":\.%\?\*]+)$/;
-	            var invalidDir = re.test(input.val());
-		    console.log(invalidDir);
-                    if ( invalidDir ) {
-                        $('#validate-sstate_dir').removeClass('control-group error');
-			$("#apply-change-sstate_dir").removeAttr("disabled");
-                        $('#hintError-sstate_dir').hide();
-                    } else {
-                        $('#validate-sstate_dir').addClass('control-group error');
-			$("#apply-change-sstate_dir").attr("disabled","disabled");
-                        $('#hintError-sstate_dir').show();
-                    }
-                }
-            });
-
-            $('#apply-change-sstate_dir').click(function(){
-                var value = $('#new-sstate_dir').val().trim();
-                postEditAjaxRequest({"configvarChange" : 'SSTATE_DIR:'+value});
-                $('#sstate_dir').text(value);
-                $('#sstate_dir').removeClass('muted');
-                $("#change-sstate_dir-form").slideUp(function () {
-                    $('#sstate_dir, #change-sstate_dir-icon').show();
-               });
-            });
-
-            {% endif %}
-
-            // add new variable
-            $("button#add-configvar-button").click( function (evt) {
-                var variable = $("input#variable").val();
-                var value    = $("input#value").val();
+  // add new variable
+  $("button#add-configvar-button").click( function (evt) {
+    var variable = $("input#variable").val();
+    var value    = $("input#value").val();
 
-                postEditAjaxRequest({"configvarAdd" : variable+':'+value});
+    postEditAjaxRequest({"configvarAdd" : variable+':'+value});
 
-                // clear the previous values
-                $("input#variable").val("");
-                $("input#value").val("");
-                // Disable add button
-                $(".save").attr("disabled","disabled");
+    // clear the previous values
+    $("input#variable").val("");
+    $("input#value").val("");
+    // Disable add button
+    $(".save").attr("disabled","disabled");
 
-                // Reload page if admin-removed core managed value is manually added back in
-                if (0 <= " DISTRO DL_DIR IMAGE_FSTYPES IMAGE_INSTALL_append PACKAGE_CLASSES SSTATE_DIR ".indexOf( " "+variable+" " )) {
-                    // delayed reload to avoid race condition with postEditAjaxRequest
-                    do_reload=true;
-                }
-            });
+    // Reload page if admin-removed core managed value is manually added back in
+    if (0 <= " DISTRO DL_DIR IMAGE_FSTYPES IMAGE_INSTALL_append PACKAGE_CLASSES SSTATE_DIR ".indexOf( " "+variable+" " )) {
+      // delayed reload to avoid race condition with postEditAjaxRequest
+      do_reload=true;
+    }
+  });
 
-            // validate new variable name and value
-            $("#variable, #value").on('input', function() {
-                validate_new_variable();
-            });
+  // validate new variable name and value
+  $("#variable, #value").on('input', function() {
+    validate_new_variable();
+  });
 
-            //
-            // draw and register the dynamic configuration variables and handlers
-            //
+  //
+  // draw and register the dynamic configuration variables and handlers
+  //
 
-            var data = {
-                configvars : []
-            };
-            {% for c in configvars %}
-                data.configvars.push([ "{{c.name}}","{{c.value}}","{{c.pk}}" ]);
-                {% if '' != vars_context|get_dict_value:c.name %}
-                    data.vars_context[ "{{c.name}}" ] = "{{vars_context|get_dict_value:c.name }}";
-                {% endif %}
-            {% endfor %}
+  var data = {
+    configvars : []
+  };
+  {% for c in configvars %}
+  data.configvars.push([ "{{c.name}}","{{c.value}}","{{c.pk}}" ]);
+  {% if '' != vars_context|get_dict_value:c.name %}
+  data.vars_context[ "{{c.name}}" ] = "{{vars_context|get_dict_value:c.name }}";
+  {% endif %}
+  {% endfor %}
 
-            // draw these elements and assert their event handlers
-            onEditPageUpdate(data);
-        });
+  // draw these elements and assert their event handlers
+  onEditPageUpdate(data);
+});
 
-    </script>
+</script>
 
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projects-toastertable.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projects-toastertable.html
index 5814f32..d8020a9 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projects-toastertable.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projects-toastertable.html
@@ -4,33 +4,39 @@
 
 {% block pagecontent %}
 
-  <div class="page-header top-air">
-    <h1 data-role="page-title"></h1>
-  </div>
+<div class="row">
+  <div class="col-md-12">
 
-  {% url 'projects' as xhr_table_url %}
-  {% include 'toastertable.html' %}
+    <div class="page-header">
+      <h1 data-role="page-title"></h1>
+    </div>
 
-  <script>
-    $(document).ready(function () {
-      var tableElt = $("#{{table_name}}");
-      var titleElt = $("[data-role='page-title']");
+    {% url 'projects' as xhr_table_url %}
+    {% include 'toastertable.html' %}
 
-      tableElt.on("table-done", function (e, total, tableParams) {
-        var title = "All projects";
+    <script>
+$(document).ready(function () {
+    var tableElt = $("#{{table_name}}");
+    var titleElt = $("[data-role='page-title']");
 
-        if (tableParams.search || tableParams.filter) {
-          if (total === 0) {
-            title = "No projects found";
-          }
-          else if (total > 0) {
-            title = total + " project" + (total > 1 ? 's' : '') + " found";
-          }
-        }
+    tableElt.on("table-done", function (e, total, tableParams) {
+      var title = "All projects";
 
-        titleElt.text(title);
+      if (tableParams.search || tableParams.filter) {
+      if (total === 0) {
+      title = "No projects found";
+      }
+      else if (total > 0) {
+      title = total + " project" + (total > 1 ? 's' : '') + " found";
+      }
+      }
+
+      titleElt.text(title);
       });
     });
-  </script>
+    </script>
+
+  </div>
+</div>
 
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projecttopbar.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projecttopbar.html
index 007de06..768ca94 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projecttopbar.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/projecttopbar.html
@@ -16,63 +16,64 @@
   });
 </script>
 
-<div class="alert alert-success lead" id="project-created-notification" style="margin-top:15px; display:none">
-  <button type="button" class="close" data-dismiss="alert">×</button>
-  Your project <strong>{{project.name}}</strong> has been created. You can now <a href="{% url 'projectmachines' project.id %}">select your target machine</a> and <a href="{% url 'projectimagerecipes' project.id %}">choose image recipes</a> to build.
-</div>
+<div class="col-md-12">
+  <div class="alert alert-success alert-dismissible change-notification" id="project-created-notification" style="display:none">
+    <button type="button" class="close" data-dismiss="alert">&times;</button>
+		<p>Your project <strong>{{project.name}}</strong> has been created. You can now <a class="alert-link" href="{% url 'projectmachines' project.id %}">select your target machine</a> and <a class="alert-link" href="{% url 'projectimagerecipes' project.id %}">choose image recipes</a> to build.</p>
+  </div>
+  <!-- project name -->
+  <div class="page-header">
+    <h1 id="project-name-container">
+      <span class="project-name">{{project.name}}</span>
 
-<!-- project name -->
-<div class="page-header">
-  <h1 id="project-name-container">
-    <span id="project-name">{{project.name}}</span>
+      <span class="glyphicon glyphicon-edit" id="project-change-form-toggle"></i>
 
-    <i class="icon-pencil" data-original-title="" id="project-change-form-toggle" title=""></i>
+      {% if project.is_default %}
+      <span class="glyphicon glyphicon-question-sign get-help" title="This project shows information about the builds you start from the command line while Toaster is running"></span>
+      {% endif %}
+    </h1>
+    <form id="project-name-change-form" class="form-inline" style="display: none;">
+      <div class="form-group">
+        <input class="form-control input-lg" type="text" id="project-name-change-input" autocomplete="off" value="{{project.name}}">
+      </div>
+      <button id="project-name-change-btn" class="btn btn-default btn-lg" type="button">Save</button>
+      <a href="#" id="project-name-change-cancel" class="btn btn-lg btn-link">Cancel</a>
+    </form>
+  </div>
 
-    {% if project.is_default %}
-        <i class="icon-question-sign get-help heading-help" title="" data-original-title="This project shows information about the builds you start from the command line while Toaster is running"></i>
-    {% endif %}
-  </h1>
-  <form id="project-name-change-form" style="margin-bottom: 0px; display: none;">
-    <div class="input-append">
-      <input class="huge input-xxlarge" type="text" id="project-name-change-input" autocomplete="off" value="{{project.name}}">
-        <button id="project-name-change-btn" class="btn btn-large" type="button">Save</button>
-        <a href="#" id="project-name-change-cancel" class="btn btn-large btn-link">Cancel</a>
-    </div>
-  </form>
-</div>
-
-{% if not project.is_default %}
+  {% if not project.is_default %}
   <div id="project-topbar">
-    <ul class="nav nav-pills">
+    <ul class="nav nav-tabs">
       <li id="topbar-configuration-tab">
-        <a href="{% url 'project' project.id %}">
-          Configuration
-        </a>
+      <a href="{% url 'project' project.id %}">
+        Configuration
+      </a>
       </li>
       <li>
-        <a href="{% url 'projectbuilds' project.id %}">
-          Builds ({{project.get_number_of_builds}})
-        </a>
+      <a href="{% url 'projectbuilds' project.id %}">
+        Builds ({{project.get_number_of_builds}})
+      </a>
       </li>
       <li>
-        <a href="{% url 'importlayer' project.id %}">
-          Import layer
-        </a>
+      <a href="{% url 'importlayer' project.id %}">
+        Import layer
+      </a>
       </li>
       <li>
-        <a href="{% url 'newcustomimage' project.id %}">
-          New custom image
-        </a>
+      <a href="{% url 'newcustomimage' project.id %}">
+        New custom image
+      </a>
       </li>
       <li class="pull-right">
-        <form class="form-inline" style="margin-bottom:0px;">
-          <i class="icon-question-sign get-help heading-help" data-placement="left" title="" data-original-title="Type the name of one or more recipes you want to build, separated by a space. You can also specify a task by appending a colon and a task name to the recipe name, like so: <code>busybox:clean</code>"></i>
-          <div class="input-append">
-            <input id="build-input" type="text" class="input-xlarge input-lg build-target-input" placeholder="Type the recipe you want to build" autocomplete="off" disabled>
-            <button id="build-button" class="btn btn-primary btn-large build-button" data-project-id="{{project.id}}" disabled>Build</button>
+        <form class="form-inline">
+          <div class="form-group">
+            <span class="glyphicon glyphicon-question-sign get-help" data-placement="left" title="Type the name of one or more recipes you want to build, separated by a space. You can also specify a task by appending a colon and a task name to the recipe name, like so: <code>busybox:clean</code>"></span>
+            <input id="build-input" type="text" class="form-control input-lg" placeholder="Type the recipe you want to build" autocomplete="off" disabled>
           </div>
+          <button id="build-button" class="btn btn-primary btn-lg" data-project-id="{{project.id}}" disabled>Build</button>
         </form>
       </li>
     </ul>
   </div>
-{% endif %}
+  {% endif %}
+</div>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe.html
index 1d6d64e..bf2cd71 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe.html
@@ -12,35 +12,43 @@
 
 <!-- Begin container -->
 
-<div class="row span11">
-    <div class="page-header">
+<div class="row">
+  <div class="col-md-12">
+    <div class="page-header build-data">
         <h1>{{object.name}}_{{object.version}}</h1>
     </div>
+  </div>
 </div>
 
-<div class="row span7 tabbable">
-    <ul class="nav nav-pills">
+<div class="row">
+  <div class="col-md-8 tabbable">
+    <ul class="nav nav-tabs">
         <li class="{{tab_states.1}}">
             <a href="#information" data-toggle="tab">
-                <i class="icon-question-sign get-help" title="Build-related information about the recipe"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="Build-related
+                    information about the recipe"></span>
                 Recipe details
             </a>
         </li>
         <li>
              <a href="{% url "recipe_packages" build.pk object.id %}">
-                <i class="icon-question-sign get-help" title="The packaged output resulting from building the recipe"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The packaged
+                    output resulting from building the recipe"></span>
                 Packages ({{package_count}})
             </a>
         </li>
         <li class="{{tab_states.3}}">
             <a href="#dependencies" data-toggle="tab">
-                <i class="icon-question-sign get-help" title="The recipe build-time dependencies (i.e. other recipes)"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
+                    build-time dependencies (i.e. other recipes)"></span>
                 Build dependencies ({{object.r_dependencies_recipe.all.count}})
             </a>
         </li>
         <li class="{{tab_states.4}}">
             <a href="#brought-in-by" data-toggle="tab">
-                <i class="icon-question-sign get-help" title="The recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
+                    build-time reverse dependencies (i.e. the recipes that
+                depend on this recipe)"></span>
                 Reverse build dependencies ({{object.r_dependencies_depends.all.count}})
             </a>
         </li>
@@ -49,34 +57,55 @@
         <div class="tab-pane {{tab_states.1}}" id="information">
             <dl class="dl-horizontal">
                 <dt>
-                    <i class="icon-question-sign get-help" title="The name of the layer providing the recipe"></i>
+                    <span class="glyphicon glyphicon-question-sign get-help" title="The name of
+                        the layer providing the recipe"></span>
                     Layer
                 </dt>
                 <dd>{{layer.name}}</dd>
 
                 <dt>
-                    <i class="icon-question-sign get-help" title="Path to the recipe .bb file"></i>
+                    <span class="glyphicon glyphicon-question-sign get-help" title="Path to the
+                        recipe .bb file"></span>
                     Recipe file
                 </dt>
                 <dd><code>{{object.file_path}} {% if object.pathflags %}<i>({{object.pathflags}})</i>{% endif %}</code></dd>
-                {% if layer_version.branch %}
                 <dt>
-                    <i class="icon-question-sign get-help" title="The Git branch of the layer providing the recipe"></i>
+                    <span class="glyphicon glyphicon-question-sign get-help"
+                        title="The Git branch of the layer providing the
+                    recipe"></span>
                     Layer branch
                 </dt>
+                {% if layer_version.layer.local_source_dir %}
+                <dd>
+		  <span class="text-muted">Not applicable</span>
+		  <span class="glyphicon glyphicon-question-sign get-help" title="The source
+                  code of {{layer_version.layer.name}} is not in a git repository
+                  so there is no branch associated with it"></span>
+                </dd>
+                {% else %}
                 <dd>{{layer_version.branch}}</dd>
-                {% endif %}
+		{% endif %}
                 <dt>
-                    <i class="icon-question-sign get-help" title="The Git commit of the layer providing the recipe"></i>
+                    <span class="glyphicon glyphicon-question-sign get-help" title="The Git
+                        commit of the layer providing the recipe"></span>
                     Layer commit
                 </dt>
+                {% if layer_version.layer.local_source_dir %}
+		<dd>
+		  <span class="text-muted">Not applicable</span>
+		  <span class="glyphicon glyphicon-question-sign get-help" title="The source
+                  code of {{layer_version.layer.name}} is not in a git repository
+                  so there is no commit associated with it"></span>
+		</dd>
+                {% else %}
                 <dd class="iscommit">{{layer_version.commit}}</dd>
+		{% endif %}
                 {% if object.provides_set.all %}
                 <dt>
-                    <i class="icon-question-sign get-help"
+                    <span class="glyphicon glyphicon-question-sign get-help"
                      title="A list of aliases by which a particular recipe can be known. The additional aliases are
                            synonyms for the recipe and can be useful satisfying dependencies of other recipes during
-                           the build"></i>
+                           the build"></span>
                     PROVIDES
                 </dt>
                  <dd><code>{% for provider in object.provides_set.all %}{{ provider.name }}&nbsp;{% endfor %}</code></dd>
@@ -89,30 +118,45 @@
                 <strong>{{object.name}}_{{object.version}}</strong> does not have any tasks in this build.
             </div>
             {% else %}
+            <div class="table-responsive">
             <table class="table table-bordered table-hover">
                 <thead>
-		  <tr>
+                  <tr>
                     <th>
-                        <i class="icon-question-sign get-help" title="The running sequence of each task in the build"></i>
+                        <span class="glyphicon glyphicon-question-sign
+                            get-help" title="The running sequence of each task
+                            in the build"></span>
                         Order
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="The name of the task"></i>
+                        <span class="glyphicon glyphicon-question-sign get-help" title="The name
+                            of the task"></span>
                         Task
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="This value tells you if a task had to run (executed) in order to generate the task output, or if the output was provided by another task and therefore the task didn't need to run (not executed)"></i>
+                        <span class="glyphicon glyphicon-question-sign get-help" title="This
+                            value tells you if a task had to run (executed) in
+                        order to generate the task output, or if the output was
+                    provided by another task and therefore the task didn't need
+                to run (not executed)"></span>
                         Executed
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="This column tells you if 'executed' tasks succeeded or failed. The column also tells you why 'not executed' tasks did not need to run"></i>
+                        <span class="glyphicon glyphicon-question-sign get-help" title="This
+                            column tells you if 'executed' tasks succeeded or
+                            failed. The column also tells you why 'not executed'
+                            tasks did not need to run"></span>
                         Outcome
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="This column tells you if a task tried to restore output from the <code>sstate-cache</code> directory or mirrors, and reports the result: Succeeded, Failed or File not in cache"></i>
+                        <span class="glyphicon glyphicon-question-sign get-help" title="This
+                            column tells you if a task tried to restore output
+                            from the <code>sstate-cache</code> directory or
+                            mirrors, and reports the result: Succeeded, Failed or File
+                            not in cache"></span>
                         Cache attempt
                     </th>
-		  </tr>
+                  </tr>
                 </thead>
                 <tbody>
 
@@ -120,26 +164,30 @@
 
                     <tr {{ task|task_color }} >
 
-                    <td><a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.order}}</a></td>
+                    <td>{{task.order}}</td>
                     <td>
-                        <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.task_name}}</a>
-                        {% if task.get_description %}<i class="icon-question-sign get-help hover-help" title="" data-original-title="{{task.get_description}}"></i> {% endif %}
+                        <a href="{% url "task" build.pk task.pk %}">{{task.task_name}}</a>
+                        {% if task.get_description %}<span class="glyphicon
+                            glyphicon-question-sign get-help hover-help"
+                            title="{{task.get_description}}"></span> 
+                        {% endif %}
                     </td>
 
-                    <td><a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_executed_display}}</a></td>
+                    <td>{{task.get_executed_display}}</td>
 
-                    <td>
-                        <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_outcome_display}} </a>
+                    <td>{{task.get_outcome_display}} 
                         {% if task.outcome = task.OUTCOME_FAILED %}
                             <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
-                                <i class="icon-download-alt" title="Download task log file"></i>
+                                <span class="glyphicon glyphicon-download-alt
+                                    get-help" title="Download task log
+                                file"></span>
                             </a>
                         {% endif %}
                         <i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i>
                     </td>
                     <td>
                         {% ifnotequal task.sstate_result task.SSTATE_NA %}
-                        <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_sstate_result_display}}</a>
+                            {{task.get_sstate_result_display}}
                         {% endifnotequal %}
                     </td>
 
@@ -148,6 +196,7 @@
                     {% endfor %}
                 </tbody>
             </table>
+            </div>
             {% endif %}
         </div>
         <div class="tab-pane {{tab_states.3}}" id="dependencies">
@@ -174,13 +223,13 @@
                     <tr>
                         <td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.name}}</a>
                             {% if rr.via %}
-                                <span class="muted">satisfied via {{rr.via.name}}</span>
-                                <i class="icon-question-sign get-help hover-help"
+                            <span class="text-muted">satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
+                                <span class="glyphicon glyphicon-question-sign get-help hover-help"
                                  title="This dependency is satisfied by the PROVIDES value
-                                       {{rr.via.name}} in the {{rr.depends_on.name}} recipe"></i>
+                                 <code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></span>
                             {% endif %}
                         </td>
-                        <td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.version}}</a></td>
+                        <td>{{rr.depends_on.version}}</td>
                     </tr>
                     {% endfor %}
 
@@ -213,13 +262,13 @@
                     <tr>
                         <td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.name}}</a>
                         {% if rr.via %}
-                            <span class="muted"> satisfied via {{rr.via.name}}</span>
-                            <i class="icon-question-sign get-help hover-help"
+                        <span class="text-muted"> satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
+                            <span class="glyphicon glyphicon-question-sign get-help hover-help"
                              title="This dependency is satisfied by the PROVIDES value
-                            {{rr.via.name}} in the {{rr.depends_on.name}} recipe"></i>
+                             <code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></i>
                         {% endif %}
                         </td>
-                        <td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.version}}</a></td>
+                        <td>{{rr.recipe.version}}</td>
                     </tr>
                     {% endfor %}
 
@@ -231,7 +280,8 @@
     </div>
 </div>
 
-<div class="row span4 well">
+<div class="col-md-4">
+  <div class="well">
     <h2>About {{object.name}}</h2>
     <dl class="item-info">
         {% if object.summary %}
@@ -253,7 +303,7 @@
         {% if object.section %}
             <dt>
             Section
-            <i class="icon-question-sign get-help" title="The section in which recipes should be categorized"></i>
+            <span class="glyphicon glyphicon-question-sign get-help" title="The section in which recipes should be categorized"></span>
             </dt>
             <dd>{{object.section}}</dd>
         {% endif %}
@@ -262,6 +312,9 @@
             <dd>{{object.license}}</dd>
         {% endif %}
     </dl>
+  </div>
 </div>
 
+</div> <!-- end row -->
+
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_btn.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_btn.html
index baab06e..e372964 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_btn.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_btn.html
@@ -1,16 +1,17 @@
-<button data-recipe-name="{{data.name}}" class="btn btn-block layer-exists-{{data.layer_version.pk}} build-recipe-btn" style="margin-top: 5px;
+<a data-recipe-name="{{data.name}}" class="btn btn-default btn-block layer-exists-{{data.layer_version.pk}} build-recipe-btn" style="margin-top: 5px;
   {% if data.layer_version.pk not in extra.current_layers %}
     display:none;
   {% endif %}"
  >
   Build recipe
-</button>
-<button class="btn btn-block layerbtn layer-add-{{data.layer_version.pk}}" data-layer='{ "id": {{data.layer_version.pk}}, "name":  "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.pk%}"}' data-directive="add"
+</a>
+<a class="btn btn-default btn-block layerbtn layer-add-{{data.layer_version.pk}}" data-layer='{ "id": {{data.layer_version.pk}}, "name":  "{{data.layer_version.layer.name}}", "layerdetailurl": "{%url 'layerdetails' extra.pid data.layer_version.pk%}"}' data-directive="add"
     {% if data.layer_version.pk in extra.current_layers %}
      style="display:none;"
     {% endif %}
 >
-  <i class="icon-plus"></i>
+  <span class="glyphicon glyphicon-plus"></span>
   Add layer
-  <i title="" class="icon-question-sign get-help" data-original-title="To build this target, you must first add the {{data.layer_version.layer.name}} layer to your project"></i>
-</button>
+  <span class="glyphicon glyphicon-question-sign get-help" title="To build this
+      recipe you must first add the {{data.layer_version.layer.name}} layer to your project"></i>
+</a>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_packages.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_packages.html
index d25847b..37a586f 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_packages.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipe_packages.html
@@ -11,35 +11,43 @@
 
 <!-- Begin container -->
 
-<div class="row-fluid span11">
-    <div class="page-header">
+<div class="row">
+  <div class="col-md-12">
+    <div class="page-header build-data">
         <h1>{{recipe.name}}_{{recipe.version}}</h1>
     </div>
+  </div>
 </div>
 
-<div class="row-fluid span7 tabbable">
-    <ul class="nav nav-pills">
+<div class="row">
+  <div class="col-md-8 tabbable">
+    <ul class="nav nav-tabs">
         <li>
             <a href="{% url "recipe" build.pk recipe.id "1" %}">
-                <i class="icon-question-sign get-help" title="Build-related information about the recipe"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="Build-related
+                    information about the recipe"></span>
                 Recipe details
             </a>
         </li>
         <li class="active">
-			<a href="#packages-built" data-toggle="tab">
-                <i class="icon-question-sign get-help" title="The packaged output resulting from building the recipe"></i>
+          <a href="#packages-built" data-toggle="tab">
+                <span class="glyphicon glyphicon-question-sign get-help" title="The packaged
+                    output resulting from building the recipe"></span>
                 Packages ({{object_count}})
             </a>
         </li>
         <li>
             <a href="{% url "recipe" build.pk recipe.id "3" %}">
-                <i class="icon-question-sign get-help" title="The recipe build-time dependencies (i.e. other recipes)"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
+                    build-time dependencies (i.e. other recipes)"></span>
                 Build dependencies ({{recipe.r_dependencies_recipe.all.count}})
             </a>
         </li>
         <li>
             <a href="{% url "recipe" build.pk recipe.id "4" %}">
-                <i class="icon-question-sign get-help" title="The recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
+                    build-time reverse dependencies (i.e. the recipes that
+                    depend on this recipe)"></span>
                 Reverse build dependencies ({{recipe.r_dependencies_depends.all.count}})
             </a>
         </li>
@@ -72,8 +80,8 @@
 
                     <tr>
                         <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td>
-                        <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.version}}_{{package.revision}}</a></td>
-                        <td class="sizecol"><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.size|filtered_filesizeformat}}</a></td>
+                        <td>{{package.version}}_{{package.revision}}</td>
+                        <td class="sizecol">{{package.size|filtered_filesizeformat}}</td>
                     </tr>
 
                         {% endfor %}
@@ -86,9 +94,10 @@
             {% endif %}
         </div> {# tab-pane #}
     </div> {# tab-content #}
-</div> {# span7 #}
+</div> {# col-md-8 #}
 
-<div class="row span4 well">
+<div class="col-md-4">
+  <div class="well">
     <h2>About {{recipe.name}}</h2>
     <dl class="item-info">
         {% if recipe.summary %}
@@ -119,5 +128,8 @@
             <dd>{{recipe.license}}</dd>
         {% endif %}
     </dl>
+  </div>
 </div>
+
+</div> <!-- end row -->
 {% endblock pagedetailinfomain %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipedetails.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipedetails.html
index 23aa171..66c1f7b 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipedetails.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipedetails.html
@@ -4,25 +4,23 @@
 {% load static %}
 {% block pagecontent %}
 
-<div class="section">
-  <ul class="breadcrumb">
-    <li>
-      <a href="{% url 'project' project.id %}">{{project.name}}</a>
-      <span class="divider">&rarr;</span>
-    </li>
-    <li>
-      {% if recipe.is_image %}
-      <a href="{% url 'projectimagerecipes' project.id %}">Image recipes</a>
-      {% else %}
-      <a href="{% url 'projectsoftwarerecipes' project.id %}">Software recipes</a>
-      {% endif %}
-      <span class="divider">&rarr;</span>
-    </li>
-    <li class="active">
-      {{recipe.name}} ({{recipe.layer_version.layer.name}})
-    </li>
-  </ul>
-</div>
+<ul class="breadcrumb">
+  <li>
+    <a href="{% url 'project' project.id %}">{{project.name}}</a>
+    <span class="divider">&rarr;</span>
+  </li>
+  <li>
+    {% if recipe.is_image %}
+    <a href="{% url 'projectimagerecipes' project.id %}">Image recipes</a>
+    {% else %}
+    <a href="{% url 'projectsoftwarerecipes' project.id %}">Software recipes</a>
+    {% endif %}
+    <span class="divider">&rarr;</span>
+  </li>
+  <li class="active">
+    {{recipe.name}} ({{recipe.layer_version.layer.name}})
+  </li>
+</ul>
 
 <script src="{% static 'js/recipedetails.js' %}"></script>
 <script>
@@ -51,42 +49,40 @@
 
 {% include 'newcustomimage_modal.html' %}
 
-<div class="row-fluid span11">
-  <div class="alert alert-success lead" id="image-created-notification" style="margin-top: 15px; display: none">
-    <button type="button" data-dismiss="alert" class="close">x</button>
-    Your custom image <strong>{{recipe.name}}</strong> has been created. You can now add or remove packages as needed.
-  </div>
-  <div class="page-header air">
-    <h1>
-      {{recipe.name}}
-      <small>({{recipe.layer_version.layer.name}})</small>
-    </h1>
-  </div>
+<div class="alert alert-success lead" id="image-created-notification" style="margin-top: 15px; display: none">
+  <button type="button" data-dismiss="alert" class="close">x</button>
+  Your custom image <strong>{{recipe.name}}</strong> has been created. You can now add or remove packages as needed.
+</div>
+<div class="page-header">
+  <h1>
+    {{recipe.name}}
+    <small>({{recipe.layer_version.layer.name}})</small>
+  </h1>
 </div>
 
-<div class="row-fluid span11">
-  <div class="span8">
+<div class="row">
+  <div class="col-md-8">
     <div class="button-place btn-group" id="customise-build-btns"
         style="width: 100%;
       {% if not in_project %}
       display:none;
       {% endif %}">
-      <button class="btn btn-large span6 build-recipe-btn" style="width: 50%">
+      <button class="btn btn-default btn-lg build-recipe-btn" style="width: 50%">
         Build {{recipe.name}}
       </button>
       {% if recipe.is_image %}
-      <button class="btn btn-large span6 customise-btn" data-recipe="{{recipe.pk}}" style="width: 50%">
+      <button class="btn btn-default btn-lg customise-btn" data-recipe="{{recipe.pk}}" style="width: 50%">
         Customise {{recipe.name}}
       </button>
       {% endif %}
     </div>
     <div class="button-place">
-      <button class="btn btn-block btn-large" id="add-layer-btn"
+      <button class="btn btn-default btn-block btn-lg" id="add-layer-btn"
           style="width:100%;
           {% if in_project %}
           display:none;
           {% endif %}">
-        <i class="icon-plus"></i>
+        <i class="glyphicon glyphicon-plus"></i>
         Add the {{recipe.layer_version.layer.name}} layer to your project to build or customise this image recipe
       </button>
     </div>
@@ -106,7 +102,7 @@
        style="display:none"
       {% endif %} >
         <p class="lead">Toaster has no package information for {{recipe.name}}. To generate package information, build {{recipe.name}}</p>
-        <button class="btn btn-info btn-large build-recipe-btn" style="margin:20px 0 10px 0;">Build {{recipe.name}}</button>
+        <button class="btn btn-info btn-lg build-recipe-btn" style="margin:20px 0 10px 0;">Build {{recipe.name}}</button>
       </div>
 
       <div class="alert alert-info air" id="packages-alert"
@@ -119,58 +115,60 @@
       </div>
     </div>
   </div>
-  <div class="span4 well">
-    <h2 style="margin-bottom:20px;">About {{recipe.name}}</h2>
-    <dl>
-      <dt>
+  <div class="col-md-4">
+    <div class="well">
+      <h2>About {{recipe.name}}</h2>
+      <dl class="item-info">
+        <dt>
         Approx. packages included
-        <i class="icon-question-sign get-help" title="" data-original-title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></i>
-      </dt>
-      <dd class="no-packages">{{packages.count}}</dd>
-      <dt>
+        <span class="glyphicon glyphicon-question-sign get-help" title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></span>
+        </dt>
+        <dd class="no-packages">{{packages.count}}</dd>
+        <dt>
         Approx. package size
-        <i class="icon-question-sign get-help" title="" data-original-title="Package size is based on information from previous builds, so we can never be sure it is 100% accurate"></i>
-      </dt>
-      <dd>{{approx_pkg_size.size__sum|filtered_filesizeformat}}</dd>
-      {% if last_build %}
-      <dt>Last build</dt>
-      <dd>
-        <i class="icon-ok-sign success"></i>
+        <span class="glyphicon glyphicon-question-sign get-help" title="Package size is based on information from previous builds, so we can never be sure it is 100% accurate"></span>
+        </dt>
+        <dd>{{approx_pkg_size.size__sum|filtered_filesizeformat}}</dd>
+        {% if last_build %}
+        <dt>Last build</dt>
+        <dd>
+        <span class="glyphicon glyphicon-ok-circle"></span>
         <a href="{% url 'projectbuilds' project.id%}">{{last_build.completed_on|date:"d/m/y H:i"}}</a>
-      </dd>
-      {% endif %}
-      <dt>Recipe file</dt>
-      <dd>
+        </dd>
+        {% endif %}
+        <dt>Recipe file</dt>
+        <dd>
         <code>{{recipe.file_path|cut_path_prefix:recipe.layer_version.local_path}}</code>
-        <a href="{{recipe.get_vcs_recipe_file_link_url}}"><i class="icon-share" title="" data-original-title="View recipe file"></i></a>
-      </dd> 
-      <dt>Layer</dt>
-      <dd><a href="{% url 'layerdetails' project.id recipe.layer_version.pk %}">{{recipe.layer_version.layer.name}}</a></dd>
-      <dt>
+        <a href="{{recipe.get_vcs_recipe_file_link_url}}"><span class="glyphicon glyphicon-new-window" title="View recipe file" data-toggle="tooltip"></span></a>
+        </dd> 
+        <dt>Layer</dt>
+        <dd><a href="{% url 'layerdetails' project.id recipe.layer_version.pk %}">{{recipe.layer_version.layer.name}}</a></dd>
+        <dt>
         Summary
-      </dt>
-      <dd>
+        </dt>
+        <dd>
         {{recipe.summary}}
-      </dd>
-      <dt>
+        </dd>
+        <dt>
         Description
-      </dt>
-      <dd>
+        </dt>
+        <dd>
         {{recipe.description}}
-      </dd>
-      <dt>Version</dt>
-      <dd>
+        </dd>
+        <dt>Version</dt>
+        <dd>
         {{recipe.version}}
-      </dd>
-      <dt>Section</dt>
-      <dd>
+        </dd>
+        <dt>Section</dt>
+        <dd>
         {{recipe.section}}
-      </dd>
-      <dt>License</dt>
-      <dd>
+        </dd>
+        <dt>License</dt>
+        <dd>
         {{recipe.license}}
-      </dd>
-    </dl>
+        </dd>
+      </dl>
+    </div>
   </div>
 </div>
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipes.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipes.html
deleted file mode 100644
index d144893..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/recipes.html
+++ /dev/null
@@ -1,113 +0,0 @@
-{% extends "basebuildpage.html" %}
-
-{% load projecttags %}
-
-{% block title %} Recipes - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %}
-{% block localbreadcrumb %}
-<li>Recipes</li>
-{% endblock %}
-
-{% block nav-recipes %}
-  <li class="active"><a href="{% url 'recipes' build.pk %}">Recipes</a></li>
-{% endblock %}
-
-{% block buildinfomain %}
-<div class="span10">
-<div class="page-header">
-<h1>
-  {% if request.GET.search and objects.paginator.count > 0  %}
-      {{objects.paginator.count}} recipe{{objects.paginator.count|pluralize}} found
-  {%elif request.GET.search and objects.paginator.count == 0%}
-      No recipes found
-  {%else%}
-      Recipes
-  {%endif%}
- </h1>
-</div>
-
-{% if objects.paginator.count == 0 %}
-  <div class="row-fluid">
-      <div class="alert">
-        <form class="no-results input-append" id="searchform">
-            <input id="search" name="search" class="input-xxlarge" type="text" value="{%if request.GET.search%}{{request.GET.search}}{%endif%}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %}
-            <button class="btn" type="submit" value="Search">Search</button>
-            <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all recipes</button>
-        </form>
-      </div>
-  </div>
-
-{% else %}
-{% include "basetable_top.html" %}
-
-    {% for recipe in objects %}
-
-    <tr class="data">
-        <td class="recipe__name">
-            <a href="{% url "recipe" build.pk recipe.pk %}">{{recipe.name}}</a>
-        </td>
-        <td class="recipe__version">
-            <a href="{% url "recipe" build.pk recipe.pk %}">{{recipe.version}}</a>
-        </td>
-        <!-- Depends -->
-        <td class="depends_on">
-            {% with deps=recipe_deps|get_dict_value:recipe.pk %}
-            {% with count=deps|length %}
-            {% if count %}
-            <a class="btn"
-                title="<a href='{% url "recipe" build.pk recipe.pk %}#dependencies'>{{recipe.name}}</a> dependencies"
-                data-content="<ul class='unstyled'>
-                  {% for i in deps|dictsort:"depends_on.name"%}
-                    <li><a href='{% url "recipe" build.pk i.depends_on.pk %}'>{{i.depends_on.name}}</a></li>
-                  {% endfor %}
-                </ul>">
-                {{count}}
-            </a>
-            {% endif %}
-            {% endwith %}
-            {% endwith %}
-        </td>
-        <!--  Brought in by -->
-        <td class="depends_by">
-            {% with revs=recipe_revs|get_dict_value:recipe.pk %}
-            {% with count=revs|length %}
-            {% if count %}
-            <a class="btn"
-                title="<a href='{% url "recipe" build.pk recipe.pk %}#brought-in-by'>{{recipe.name}}</a> reverse dependencies"
-                data-content="<ul class='unstyled'>
-                  {% for i in revs|dictsort:"recipe.name" %}
-                    <li><a href='{% url "recipe" build.pk i.recipe.pk %}'>{{i.recipe.name}}</a></li>
-                  {% endfor %}
-                </ul>">
-                {{count}}
-            </a>
-            {% endif %}
-            {% endwith %}
-            {% endwith %}
-        </td>
-        <!-- Recipe file -->
-        <td class="recipe_file">{{recipe.file_path}} {% if recipe.pathflags %}<i>({{recipe.pathflags}})</i>{% endif %}</td>
-        <!-- Section -->
-        <td class="recipe_section">{{recipe.section}}</td>
-        <!-- License -->
-        <td class="recipe_license">{{recipe.license}}</td>
-        <!-- Layer -->
-        <td class="layer_version__layer__name">{{recipe.layer_version.layer.name}}</td>
-        <!-- Layer branch -->
-        <td class="layer_version__branch">{{recipe.layer_version.branch}}</td>
-        <!-- Layer commit -->
-        <td class="layer_version__layer__commit">
-            <a class="btn"
-                data-content="<ul class='unstyled'>
-                  <li>{{recipe.layer_version.commit}}</li>
-                </ul>">
-                {{recipe.layer_version.commit|truncatechars:13}}
-            </a>
-        </td>
-    </tr>
-
-    {% endfor %}
-
-{% include "basetable_bottom.html" %}
-{% endif %}
-</div>
-{% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html
new file mode 100644
index 0000000..c1e3dab
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html
@@ -0,0 +1,8 @@
+{% load projecttags  %}
+{% if vcs_ref|is_shaid %}
+<a class="btn btn-default" data-content="{{vcs_ref}}">
+ {{vcs_ref|truncatechars:10}}
+</a>
+{% else %}
+{{vcs_ref}}
+{% endif %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html
index a3fcdb0..273437e 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html
@@ -1,14 +1,38 @@
 {# Popover that displays the dependences and sizes of a package 'data' used in the Packages table #}
-{% with data.package_dependencies_source.all_depends.count as dep_count %}
 {% load projecttags %}
-{% if dep_count %}
- <a data-content="<ul class='unstyled'>
-   {% for dep in data.package_dependencies_source.all_depends %}
-  <li>{{dep.depends_on.name}} {% if dep.depends_on.size > 0 %}({{dep.depends_on.size|filtered_filesizeformat}}){% endif %}</li>
-    {% endfor %}
-  </ul>" title="" class="btn" data-original-title="
-  <strong>{{data.name}}</strong> dependencies - <strong>{{data.package_dependencies_source.get_total_source_deps_size.depends_on__size__sum|filtered_filesizeformat}}</strong>">
-    {{dep_count}}
-</a>
+
+{% with package_deps=data.package_dependencies_source|for_target:extra.target_name %}
+{% with count_package=package_deps.packages|length %}
+
+{% if count_package > 0 %}
+  <a data-content='<ul class="list-unstyled">
+  {% for dep in package_deps.packages %}
+     <li>
+      {% if extra.add_links %}
+      <a href="{% url 'package_included_detail' extra.build.pk extra.target_id dep.depends_on.pk %}">
+      {{dep.depends_on.name}}</a>
+      {% else %}
+        {{dep.depends_on.name}}
+      {% endif %}
+      {% if dep.depends_on.size > 0 %}
+        ({{dep.depends_on.size|filtered_filesizeformat}})
+      {% endif %}
+     </li>
+   {% endfor %}
+   </ul>' class="btn btn-default" title='
+   <strong>
+     {% if extra.add_links %}
+      <a href="{% url 'package_included_dependencies' extra.build.pk extra.target_id data.pk %}">
+      {{data.name}}</a>
+      {% else %}
+      {{data.name}}
+      {% endif %}
+      </strong>
+      dependencies -
+      <strong>{{package_deps.size|filtered_filesizeformat}}</strong>'>
+      {{count_package}}
+  </a>
 {% endif %}
+
+{% endwith %}
 {% endwith %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
index 453a9d0..e6ef816 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
@@ -1,14 +1,38 @@
-{# Popover that displays the reverse dependencies and sizes of a package 'data' used in the Packages table #}
-{% with data.package_dependencies_target.all_depends.count as dep_count %}
+{# Popover that displays the reverse dependences and sizes of a package 'data' used in the Packages table #}
 {% load projecttags %}
-{% if dep_count %}
- <a data-content="<ul class='unstyled'>
-   {% for dep in data.package_dependencies_target.all_depends|dictsort:'package.name' %}
-  <li>{{dep.package.name}} {% if dep.package.size > 0 %}({{dep.package.size|filtered_filesizeformat}}){% endif %}</li>
-    {% endfor %}
-  </ul>" title="" class="btn" data-original-title="
-  <strong>{{data.name}}</strong> reverse dependencies - <strong>{{data.package_dependencies_target.get_total_revdeps_size.package_id__size__sum|filtered_filesizeformat}}</strong>">
-    {{dep_count}}
-</a>
+
+{% with package_deps=data.package_dependencies_target|for_target:extra.target_name %}
+{% with count_package=package_deps.packages|length %}
+
+{% if count_package > 0 %}
+  <a data-content='<ul class="list-unstyled">
+  {% for dep in package_deps.packages|dictsort:"package.name" %}
+     <li>
+      {% if extra.add_links %}
+      <a href="{% url 'package_included_detail' extra.build.pk extra.target_id dep.package.pk %}">
+      {{dep.package.name}}</a>
+      {% else %}
+      {{dep.package.name}}
+      {% endif %}
+      {% if dep.package.size > 0 %}
+        ({{dep.package.size|filtered_filesizeformat}})
+      {% endif %}
+     </li>
+   {% endfor %}
+   </ul>' class="btn btn-default" title='
+   <strong>
+     {% if extra.add_links %}
+      <a href="{% url 'package_included_reverse_dependencies' extra.build.pk extra.target_id data.pk %}">
+      {{data.name}}</a>
+      {% else %}
+      {{data.name}}
+      {% endif %}
+      </strong>
+      dependencies -
+      <strong>{{package_deps.size|filtered_filesizeformat}}</strong>'>
+      {{count_package}}
+  </a>
 {% endif %}
+
+{% endwith %}
 {% endwith %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/target.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/target.html
index 4c33eaa..1924a0d 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/target.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/target.html
@@ -17,9 +17,8 @@
 {% endblock %}
 
 {% block buildinfomain %}
-
-<div class="row-fluid span10">
-    <div class="page-header">
+<div class="col-md-10">
+    <div class="page-header build-data">
         <h1>
             {% if request.GET.search and objects.paginator.count > 0 %}
                 {{objects.paginator.count}} package{{objects.paginator.count|pluralize}} found
@@ -30,134 +29,28 @@
             {% endif %}
         </h1>
     </div>
-</div>
-
-<div class="row-fluid pull-right span10" id="navTab">
-    <ul class="nav nav-pills">
+<div id="navTab">
+    <ul class="nav nav-tabs">
         <li class="active">
             <a href="#target">
-            <i class="icon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></i>
+            <span class="glyphicon glyphicon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></span>
                 Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
             </a>
         </li>
         <li>
             <a href="{% url 'dirinfo' build.id target.id %}">
-                <i class="icon-question-sign get-help" title="The directories and files in the root file system of this image"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The directories and files in the root file system of this image"></span>
                 Directory structure
             </a>
         </li>
     </ul>
 
     <div id="image-packages" class="tab-pane">
-
-    {% if objects.paginator.count == 0 %}
-    <div class="row-fluid">
-        <div class="alert">
-            <form class="no-results input-append" id="searchform">
-                <input id="search" name="search" class="input-xxlarge" type="text" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %}
-                <button class="btn" type="submit" value="Search">Search</button>
-                <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all packages</button>
-            </form>
-        </div>
-    </div>
-
-
-    {% else %}
-    {% include "basetable_top.html" %}
-    {% for package in objects %}
-    <tr>
-      {# order of the table data must match the columns defined in template's context tablecols  #}
-        <td class="package_name">
-            <a href="{% url 'package_included_detail' build.id target.id package.id %}">
-            {{package.name}}
-            </a>
-            {% if package.installed_name and package.name != package.installed_name %}
-            <span class="muted"> as {{package.installed_name}}</span>
-            <i class="icon-question-sign get-help hover-help" title='{{package.name|add:" was renamed at packaging time and was installed in your image as "|add:package.installed_name}}'></i>
-            {% endif %}
-        </td>
-        <td class="package_version">
-            <a href="{% url 'package_included_detail' build.id target.id package.id %}">
-            {{package.version|filtered_packageversion:package.revision}}
-            </a>
-        </td>
-        <td class="license">
-            {{package.license}}
-        </td>
-        <td class="size sizecol">
-            {{package.size|filtered_installedsize:package.installed_size|filtered_filesizeformat}}
-        </td>
-
-        <td class="size_over_total sizecol">
-            {{package|filter_sizeovertotal:packages_sum}}
-        </td>
-       <td class="depends">
-            {% with deps=package.runtime_dependencies %}
-            {% with deps_count=deps|length %}
-            {% if deps_count > 0 %}
-            <a class="btn"
-                title="<a href='{% url "package_included_dependencies" build.id target.id package.id %}'>{{package.name}}</a> dependencies"
-                data-content="<ul class='unstyled'>
-                  {% for i in deps|dictsort:'depends_on.name' %}
-                    <li><a href='{% url "package_included_detail" build.pk target.id i.depends_on.pk %}'>{{i.depends_on.name}}</a></li>
-                  {% endfor %}
-                </ul>">
-                {{deps_count}}
-            </a>
-            {% endif %}
-            {% endwith %}
-            {% endwith %}
-        </td>
-        <td class="brought_in_by">
-            {% with rdeps=package.reverse_runtime_dependencies %}
-            {% with rdeps_count=rdeps|length %}
-            {% if rdeps_count > 0 %}
-            <a class="btn"
-                title="<a href='{% url "package_included_reverse_dependencies" build.id target.id package.id %}'>{{package.name}}</a> reverse dependencies"
-                data-content="<ul class='unstyled'>
-                  {% for i in rdeps|dictsort:'package.name' %}
-                    <li><a href='{% url "package_included_detail" build.id target.id i.package.id %}'>{{i.package.name}}</a></li>
-                  {% endfor %}
-                </ul>">
-                {{rdeps_count}}
-            </a>
-            {% endif %}
-            {% endwith %}
-            {% endwith %}
-        </td>
-        <td class="recipe_name">
-            {% if package.recipe.version %}
-            <a href="{% url 'recipe' build.id package.recipe_id %}">
-            {{ package.recipe.name }}
-            </a>
-            {% endif %}
-        </td>
-        <td class="recipe_version">
-            {% if package.recipe.version %}
-            <a href="{% url 'recipe' build.id package.recipe_id %}">
-            {{ package.recipe.version }}
-            </a>
-            {% endif %}
-        </td>
-        <td class="layer_name">
-            {{ package.recipe.layer_version.layer.name }}
-        </td>
-        <td class="layer_branch">
-            {{ package.recipe.layer_version.branch}}
-        </td>
-        <td class="layer_commit">
-            <a class="btn"
-                data-content="<ul class='unstyled'>
-                  <li>{{package.recipe.layer_version.commit}}</li>
-                </ul>">
-                {{package.recipe.layer_version.commit|truncatechars:13}}
-            </a>
-        </td>
-    </tr>
-    {% endfor %}
-
-    {% include "basetable_bottom.html" %}
-    {% endif %}
+        {# xhr_table_url is just the current url so leave it blank #}
+        {% with xhr_table_url='' %}
+        {% include "toastertable.html" %}
+        {% endwith %}
     </div> <!-- tabpane -->
-</div> <!--span 10-->
+	</div> <!--navTab -->
+<!-- col-md-10 -->
 {% endblock buildinfomain %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/task.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/task.html
index 5768262..214c777 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/task.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/task.html
@@ -11,60 +11,88 @@
 
 {% block pagedetailinfomain %}
 
-<div class="row span11">
-    <div class="page-header">
+<div class="row">
+  <div class="col-md-12">
+    <div class="page-header build-data">
         <h1><a href="{%url 'recipe' build.pk task.recipe.pk %}">{{task.recipe.name}}_{{task.recipe.version}}</a> {{task.task_name}}</h1>
     </div>
 
 {# Outcome section #}
 <h2 {{ task|task_color:True }}>
     {{task.get_outcome_display}}
-    <i class="icon-question-sign get-help heading-help" title="{{task.get_outcome_help}}"></i>
+    <span class="glyphicon glyphicon-question-sign get-help" title="{{task.get_outcome_help}}"></i>
 </h2>
 {%if task.task_executed %}
     {# executed tasks outcome #}
     {% if task.logfile %}
-            <a class="btn btn-large" href="{% url 'build_artifact' build.id "tasklogfile" task.pk %}" style="margin:15px;">Download task log</a>
+            <a class="btn btn-default btn-lg"
+               href="{% url 'build_artifact' build.id 'tasklogfile' task.pk %}">
+              Download task log
+            </a>
     {% endif %}
         {# show stack trace for failed task #}
         {% if task.outcome == task.OUTCOME_FAILED and log_head %}
             <h3>Python stack trace</h3>
             <div>
                 <pre style="min-height:160px;">
-                    <code>{{log_head}}</code><a id="full-trace-show" data-target="#fulltrace" data-toggle="collapse" class="btn btn-mini">...</a>
+                    <code>{{log_head}}</code><a id="full-trace-show" data-target="#fulltrace" data-toggle="collapse" class="btn btn-xs">...</a>
                     <div id="fulltrace" class="collapse" style="margin-top: -20px; height: 0px;">
-                        <code>{{log_body}}</code><br><a id="full-trace-hide" class="btn btn-mini collapsed" style="font-family:Helvetica Neue" data-target="#fulltrace" data-toggle="collapse">Collapse stack trace<i class="icon-caret-up"></i></a></div></pre>
+                        <code>{{log_body}}</code><br><a id="full-trace-hide" class="btn btn-xs collapsed" style="font-family:Helvetica Neue" data-target="#fulltrace" data-toggle="collapse">Collapse stack trace<i class="icon-caret-up"></i></a></div></pre>
             </div>
         {% endif %}
 {% else %}
 {# not executed tasks outcome #}
     {% if task.outcome == task.OUTCOME_PREBUILT %}
         {% if not showing_matches %}
-            <a class="btn" href="javascript:reload_params({'show_matches' : 'true' })">Match to tasks in previous builds <i class="icon-question-sign get-help" style="margin-top:20px;" title="This shows you a list of tasks from previous builds with the same signature generated from the same inputs as used in the prebuilt task. Any of them could be the task that generated the output this prebuilt task is reusing"></i></a>
+            <a class="btn btn-default"
+                href="javascript:reload_params({'show_matches' : 'true'
+        })">Match to tasks in previous builds <span class="glyphicon
+glyphicon-question-sign get-help" title="This shows you a list of tasks from
+previous builds with the same signature generated from the same inputs as used
+in the prebuilt task. Any of them could be the task that generated the output
+this prebuilt task is reusing"></span></a>
         {% elif matching_tasks %}
             <h3 class="details">Prebuilt task could be based on
-                <i class="icon-question-sign get-help heading-help" title="This table shows a list of tasks from previous builds with the same signature generated from the same inputs as used in the prebuilt task. Any of them could be the task that generated the output this prebuilt task is reusing"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="This
+                    table shows a list of tasks from previous builds with the
+                same signature generated from the same inputs as used in the
+            prebuilt task. Any of them could be the task that generated the
+        output this prebuilt task is reusing"></span>
             </h3>
+        <div class="table-responsive">
             <table class="table table-bordered table-hover">
                 <thead>
                     <th>
-                        <i class="icon-question-sign get-help" title="The name of the recipe to which each task applies"></i>
+                        <span class="glyphicon glyphicon-question-sign
+                            get-help" title="The name of the recipe to which
+                        each task applies"></span>
                         Recipe
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="The name of the task"></i>
+                        <span class="glyphicon glyphicon-question-sign get-help" title="The name
+                            of the task"></span>
                         Task
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="This value tells you if a task had to run (executed) in order to generate the task output, or if the output was provided by another task and therefore the task didn't need to run (not executed)"></i>
+                        <span class="glyphicon glyphicon-question-sign get-help" title="This
+                            value tells you if a task had to run (executed) in
+                        order to generate the task output, or if the output was
+                    provided by another task and therefore the task didn't need
+                to run (not executed)"></span>
                         Executed
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="This column tells you if 'executed' tasks succeeded or failed. The column also tells you why 'not executed' tasks did not need to run"></i>
+                        <span class="glyphicon glyphicon-question-sign
+                            get-help" title="This column tells you if
+                        'executed' tasks succeeded or failed. The column also
+                    tells you why 'not executed' tasks did not need to
+                run"></span>
                         Outcome
                     </th>
                     <th>
-                        <i class="icon-question-sign get-help" title="The date and time the build finished"></i>
+                        <span class="glyphicon glyphicon-question-sign
+                            get-help" title="The date and time the build
+                        finished"></span>
                         Build completed on
                     </th>
                 </thead>
@@ -72,27 +100,34 @@
                     {% for match in matching_tasks %}
                         <tr {{ match|task_color }}>
                             <td>
-                                <a href="{%url "task" match.build.pk match.pk%}">{{match.recipe.name}}</a>
+                                {{match.recipe.name}}
                             </td>
                             <td>
                                 <a href="{%url "task" match.build.pk match.pk%}">{{match.task_name}}</a>
                                 {% if task.get_description %}
-                                    <i class="icon-question-sign get-help hover-help" title="{{task.get_description}}"></i>
+                                    <span class="glyphicon
+                                        glyphicon-question-sign get-help
+                                    hover-help"
+                                title="{{task.get_description}}"></span>
                                 {% endif %}
                             </td>
                             <td>
-                                <a href="{%url "task" match.build.pk match.pk%}">{{match.get_executed_display}}</a>
+                                {{match.get_executed_display}}
                             </td>
                             <td>
-                                <a href="{%url "task" match.build.pk match.pk%}">{{match.get_outcome_display}} </a><i class="icon-question-sign get-help hover-help" title="{{match.get_outcome_help}}"></i>
+                                {{match.get_outcome_display}}
+                                <span class="glyphicon glyphicon-question-sign
+                                get-help hover-help"
+                            title="{{match.get_outcome_help}}"></span>
                             </td>
                             <td>
-                                <a href="{%url "task" match.build.pk match.pk%}">{{match.build.completed_on|date:"d/m/y H:i"}}</a>
+                                {{match.build.completed_on|date:"d/m/y H:i"}}
                             </td>
                         </tr>
                     {% endfor %}
                 </tbody>
             </table>
+        </div>
         {% else %}
             <p class="alert">
                 <strong> We have found no tasks matching this prebuilt task</strong><br/>
@@ -102,10 +137,11 @@
     {% elif task.outcome == task.OUTCOME_COVERED %}
         <dl class="dl-horizontal">
             <dt>
-                <i class="icon-question-sign get-help" title="The task(s) providing the outcome of this task"></i> Task covered by
+                <span class="glyphicon glyphicon-question-sign get-help" title="The task(s)
+                    providing the outcome of this task"></span> Task covered by
             </dt>
             <dd>
-                <ul>
+                <ul class="list-unstyled">
                   {% for t in covered_by %}
                     <li>
                       <a href="{%url 'task' t.build.pk t.pk%}"
@@ -122,7 +158,10 @@
     {%elif task.outcome == task.OUTCOME_CACHED%}
             {% for t in task.get_related_setscene %}
                 {% if forloop.last %}
-                    <a class="btn btn-large" href="{% url 'build_artifact' build.id "tasklogfile" t.pk %}" style="margin:15px;">Download task log</a>
+                    <a class="btn btn-default btn-lg"
+                       href="{% url 'build_artifact' build.id "tasklogfile" t.pk %}">
+                      Download task log
+                    </a>
                 {% endif %}
             {% endfor %}
 
@@ -137,38 +176,56 @@
     {% if task.task_executed %}
     <h2>
         Executed
-        <i class="icon-question-sign get-help heading-help" title="'Executed' tasks are those that need to run in order to generate the task output"></i>
+        <span class="glyphicon glyphicon-question-sign get-help"
+            title="'Executed' tasks are those that need to run in order to
+        generate the task output"></span>
     {% else %}
-    <h2 class="muted">
+    <h2>
         Not Executed
-        <i class="icon-question-sign get-help heading-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></i>
+        <span class="glyphicon glyphicon-question-sign get-help" title="'Not
+            executed' tasks don't need to run because their outcome is provided
+        by another task"></span>
     {% endif %}
     </h2>
 
 <dl class="dl-horizontal">
     <dt>
-        <i class="icon-question-sign get-help" title="To make builds more efficient, the build system detects changes in the 'inputs' to a given task by creating a 'task signature'. If the signature changes, the build system assumes the inputs have changed and the task needs to be rerun"></i>
+        <span class="glyphicon glyphicon-question-sign get-help" title="To make builds more
+            efficient, the build system detects changes in the 'inputs' to a
+        given task by creating a 'task signature'. If the signature changes,
+    the build system assumes the inputs have changed and the task needs to be
+rerun"></span>
         Task inputs signature
     </dt>
     <dd>
         {{task.sstate_checksum}}
     </dd>
-</dl>
     {% if task.sstate_result != task.SSTATE_NA %}
+  </dl>
         <div class="alert alert-info">Attempting to restore output from sstate cache
-            <i class="icon-question-sign get-help get-help-blue" title="The build system is searching for the task output in your <code>sstate-cache</code> directory and mirrors. If the build system finds the task output, it will reuse it instead of building it from scratch by running the real task. Reusing the task output makes the build faster"></i>
+            <span class="glyphicon glyphicon-question-sign get-help
+                get-help-blue" title="The build system is searching for the
+                task output in your <code>sstate-cache</code> directory and
+                mirrors. If the build system finds the task output, it will reuse it
+                instead of building it from scratch by running the real task. Reusing the
+                task output makes the build faster"></span>
         </div>
         <dl class="dl-horizontal">
             <dt>
-                <i class="icon-question-sign get-help" title="The name of the file searched for in your <code>sstate-cache</code> directory and mirrors"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The name of the
+                    file searched for in your <code>sstate-cache</code>
+                    directory and mirrors"></span>
                 File searched for
             </dt>
             <dd><code>{{task.path_to_sstate_obj}}</code></dd>
             <dt>
-                <i class="icon-question-sign get-help" title="The locations searched for the above file (i.e. your <code>sstate-cache</code> directory and any mirrors you have set up)"></i>
+                <span class="glyphicon glyphicon-question-sign get-help" title="The locations
+                    searched for the above file (i.e. your
+                    <code>sstate-cache</code> directory and any mirrors you have
+                    set up)"></span>
                 URI(s) searched
             </dt>
-            <dd><ul>{% for uri in uri_list %}<li><code>{{uri}}</code></li>{% endfor %}</ul></dd>
+            <dd><ul class="list-unstyled">{% for uri in uri_list %}<li><code>{{uri}}</code></li>{% endfor %}</ul></dd>
         </dl>
     {% endif %}
     {% if task.sstate_result == task.SSTATE_MISS %}
@@ -176,7 +233,7 @@
             <strong>File not in sstate cache.</strong> Running the real task instead.
         </div>
     {% elif task.sstate_result == task.SSTATE_FAILED%}
-        <div class="alert">
+        <div class="alert alert-warning">
             <strong>Failed</strong> to restore output from sstate cache. The file was found but could not be unpacked.
         </div>
         <dl class="dl-horizontal">
@@ -192,13 +249,16 @@
     {% endif %}
     <dl class="dl-horizontal">
     <dt>
-        <i class="icon-question-sign get-help" title="The running sequence of each task in the build"></i>
+        <span class="glyphicon glyphicon-question-sign get-help" title="The
+            running sequence of each task in the build"></span>
         Task order
     </dt>
-    <dd><a href="{%url "tasks_task" build.pk task.order %}#{{task.order}}">{{task.order}}</a></dd>
+    <dd><a href="{%url "tasks" build.pk %}?page={{task_in_tasks_table_pg}}&limit=25#task-{{task.order}}">{{task.order}}</a></dd>
     {% if task.task_executed %}
         <dt>
-            <i class="icon-question-sign get-help" title="Indicates if this task executes a Python or Shell function(s)"></i>
+            <span class="glyphicon glyphicon-question-sign get-help"
+                title="Indicates if this task executes a Python or Shell
+            function(s)"></span>
             Task script type
         </dt>
         <dd>{{task.get_script_type_display}}</dd>
@@ -211,29 +271,31 @@
     <dd><code>{{task.source_url}}</code></dd>
 -->
     <dt>
-        <i class="icon-question-sign get-help" title="Task dependency chain (i.e. other tasks)"></i>
+        <span class="glyphicon glyphicon-question-sign get-help" title="Task dependency chain
+            (i.e. other tasks)"></span>
         Dependencies
     </dt>
     <dd>
-        <ul>
-            {% for dep in deps %}
-                <li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
-            {% empty %}
-                <li class="muted">This task has no dependencies</li>
-            {% endfor %}
+        <ul class="list-unstyled">
+        {% for dep in deps %}
+            <li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
+        {% empty %}
+            <li class="text-muted" style="margin-bottom: -10px;">This task has no dependencies</li>
+        {% endfor %}
         </ul>
     </dd>
     <dt>
-        <i class="icon-question-sign get-help" title="Tasks that depend on this task"></i>
+        <span class="glyphicon glyphicon-question-sign get-help" title="Tasks that depend on this
+            task"></span>
         Reverse dependencies
     </dt>
     <dd>
-        <ul>
-            {% for dep in rdeps %}
-                <li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
-            {% empty %}
-                <li class="muted">This task has no reverse dependencies</li>
-            {% endfor %}
+        <ul class="list-unstyled">
+        {% for dep in rdeps %}
+            <li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
+        {% empty %}
+            <li class="text-muted">This task has no reverse dependencies</li>
+        {% endfor %}
         </ul>
 </dl>
 
@@ -244,28 +306,36 @@
     <dl class="dl-horizontal">
         {% if task.elapsed_time %}
         <dt>
-            <i class="icon-question-sign get-help" title="How long it took the task to finish in seconds"></i>
+            <span class="glyphicon glyphicon-question-sign get-help" title="How
+                long it took the task to finish in seconds"></span>
             Time (secs)
         </dt>
         <dd>{{task.elapsed_time|format_none_and_zero|floatformat:2}}</dd>
         {% endif %}
         {% if task.cpu_time_user > 0 %}
         <dt>
-            <i class="icon-question-sign get-help" title="Total amount of time spent executing in user mode, in seconds. Note that this time can be greater than the task time due to parallel execution."></i>
+            <span class="glyphicon glyphicon-question-sign get-help" title="Total amount of time
+                spent executing in user mode, in seconds. Note that this time
+            can be greater than the task time due to parallel
+        execution."></span>
             User CPU time (secs)
         </dt>
         <dd>{{task.cpu_time_user|format_none_and_zero|floatformat:2}}</dd>
         {% endif %}
         {% if task.cpu_time_system > 0 %}
         <dt>
-            <i class="icon-question-sign get-help" title="Total amount of time spent executing in kernel mode, in seconds. Note that this time can be greater than the task time due to parallel execution."></i>
+            <span class="glyphicon glyphicon-question-sign get-help" title="Total amount of time
+                spent executing in kernel mode, in seconds. Note that this time
+            can be greater than the task time due to parallel
+        execution."></span>
             System CPU time (secs)
         </dt>
         <dd>{{task.cpu_time_system|format_none_and_zero|floatformat:2}}</dd>
         {% endif %}
         {% if task.disk_io > 0 %}
         <dt>
-            <i class="icon-question-sign get-help" title="Number of bytes written to and read from the disk during the task"></i>
+            <span class="glyphicon glyphicon-question-sign get-help" title="Number of bytes
+                written to and read from the disk during the task"></span>
             Disk I/O (bytes)
         </dt>
         <dd>{{task.disk_io|format_none_and_zero|intcomma}}</dd>
@@ -273,5 +343,6 @@
     </dl>
 
 </div>
+
 {% endblock %}
 
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/tasks.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/tasks.html
deleted file mode 100644
index 84bc103..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/tasks.html
+++ /dev/null
@@ -1,143 +0,0 @@
-{% extends "basebuildpage.html" %}
-{% load humanize %}
-{% load projecttags %}
-
-{% block title %} {{mainheading}} - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster{% endblock %}
-{% block localbreadcrumb %}
-<li>{{mainheading}}</li>
-{% endblock %}
-
-{% block nav-tasks %}
-  {% if 'Tasks' == mainheading %}
-    <li class="active"><a href="{% url 'tasks' build.pk %}">Tasks</a></li>
-  {% else %}
-    <li><a href="{% url 'tasks' build.pk %}">Tasks</a></li>
-  {% endif %}
-{% endblock %}
-{% block nav-buildtime %}
-  {% if 'Time' == mainheading %}
-    <li class="active"><a href="{% url 'buildtime' build.pk %}">Time</a></li>
-  {% else %}
-    <li><a href="{% url 'buildtime' build.pk %}">Time</a></li>
-  {% endif %}
-{% endblock %}
-
-{% block nav-cputime %}
-  {% if 'CPU time' == mainheading %}
-    <li class="active"><a href="{% url 'cputime' build.pk %}">CPU time</a></li>
-  {% else %}
-    <li><a href="{% url 'cputime' build.pk %}">CPU time</a></li>
-  {% endif %}
-{% endblock %}
-
-{% block nav-diskio %}
-  {% if 'Disk I/O' == mainheading %}
-    <li class="active"><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
-  {% else %}
-    <li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
-  {% endif %}
-{% endblock %}
-
-{% block buildinfomain %}
-<div class="span10">
-{% if not request.GET.filter and not request.GET.search and not objects.paginator.count %}
-  <!-- Empty - no data in database -->
-  <div class="page-header">
-  <h1>{{mainheading}}</h1>
-  </div>
-  <div class="alert alert-info lead">
-  No data was recorded for this build.
-  </div>
-
-{% else %}
-
-  <div class="page-header">
-  <h1>
-  {% if  request.GET.filter and objects.paginator.count >  0 or request.GET.search and objects.paginator.count >  0 %}
-      {{objects.paginator.count}} task{{objects.paginator.count|pluralize}} found
-  {%elif request.GET.filter and objects.paginator.count == 0 or request.GET.search and objects.paginator.count == 0 %}
-      No tasks found
-  {%else%}
-      {{mainheading}}
-  {%endif%}
-  </h1>
-  </div>
-
-  {% if objects.paginator.count == 0 %}
-  <div class="row-fluid">
-      <div class="alert">
-        <form class="no-results input-append" id="searchform">
-            <input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %}
-            <button class="btn" type="submit" value="Search">Search</button>
-            <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all tasks</button>
-        </form>
-      </div>
-  </div>
-
-
-  {% else %}
-  {% include "basetable_top.html" %}
-
-    {% for task in objects %}
-        <tr {{ task|task_color }} id="{{task.order}}">
-            <td class="order">
-                <a href="{%url "task" build.pk task.pk%}">{{task.order}}</a>
-            </td>
-            <td class="recipe_name" >
-                <a href="{% url "recipe" build.pk task.recipe.pk %}">{{task.recipe.name}}</a>
-            </td>
-            <td class="recipe_version">
-                <a href="{% url "recipe" build.pk task.recipe.pk %}">{{task.recipe.version}}</a>
-            </td>
-            <td class="task_name">
-                <a href="{%url "task" build.pk task.pk%}">{{task.task_name}}</a> {% if task.get_description %}<i class="icon-question-sign get-help hover-help" title="{{task.get_description}}"></i> {% endif %}
-            </td>
-            <td class="executed">
-                <a href="{%url "task" build.pk task.pk%}">{{task.get_executed_display}}</a>
-            </td>
-            <td class="outcome">
-                <a href="{%url "task" build.pk task.pk%}">{{task.get_outcome_display}} </a>
-                {% if task.outcome = task.OUTCOME_FAILED %}
-                    <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
-                        <i class="icon-download-alt" title="Download task log file"></i>
-                    </a>
-                {% endif %}
-                <i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i>
-            </td>
-            <td class="cache_attempt">
-                <a href="{%url "task" build.pk task.pk%}">{{task.get_sstate_result_display|format_none_and_zero}}</a>
-            </td>
-            <td class="time_taken">
-                {{task.elapsed_time|format_none_and_zero|floatformat:2}}
-            </td>
-            <td class="cpu_time_system">
-                {{task.cpu_time_system|format_none_and_zero|floatformat:2}}
-            </td>
-            <td class="cpu_time_user">
-                {{task.cpu_time_user|format_none_and_zero|floatformat:2}}
-            </td>
-            <td class="disk_io">
-                {{task.disk_io|format_none_and_zero|intcomma}}
-            </td>
-
-        </tr>
-    {% endfor %}
-
-  {% include "basetable_bottom.html" %}
-  {% endif %} {# objects.paginator.count #}
-{% endif %} {# empty #}
-</div>
-
-<script type="text/javascript">
-
-    $(document).ready(function() {
-        // highlight heading on the column for the field used for ordering
-        if (location.href.search('#') > -1) {
-            var task_order = location.href.split('#')[1];
-            $("#" + task_order).addClass("highlight");
-        }
-    });
-
-</script>
-
-{% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-filter.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-filter.html
index 4d28793..25eef52 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-filter.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-filter.html
@@ -1,20 +1,24 @@
 <!-- filter modal -->
-<div id="filter-modal-{{table_name}}" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="false">
-  <form id="filter-modal-form-{{table_name}}" style="margin-bottom: 0px">
-    <div class="modal-header">
-      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
-      <h3 id="filter-modal-title-{{table_name}}">&nbsp;</h3>
-    </div>
-    <div class="modal-body">
-      <p>Show:</p>
-      <span id="filter-actions-{{table_name}}"></span>
-    </div>
-    <div class="modal-footer">
-      <button class="btn btn-primary" type="submit" data-role="filter-apply">
+<div id="filter-modal-{{table_name}}" class="modal fade" tabindex="-1" role="dialog" aria-hidden="false">
+  <div class="modal-dialog">
+    <div class="modal-content">
+        <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
+          <h3 id="filter-modal-title-{{table_name}}">&nbsp;</h3>
+	</div>
+	<div class="modal-body">
+	  <form id="filter-modal-form-{{table_name}}" style="margin-bottom: 0px">
+	  <p>Show:</p>
+	  <span id="filter-actions-{{table_name}}"></span>
+	</div>
+	<div class="modal-footer">
+          <button class="btn btn-primary" type="submit" data-role="filter-apply">
         Apply
-      </button>
+	  </button>
+	</div>
+      </form>
     </div>
-  </form>
+  </div>
 </div>
 <button id="clear-filter-btn-{{table_name}}" style="display:none"></button>
 <!-- end filter modal -->
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-simple.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-simple.html
index 212318b..56cd2ce 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-simple.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable-simple.html
@@ -26,37 +26,38 @@
 
 {% include 'toastertable-filter.html' %}
 
-<div class="row-fluid" id="no-results-{{table_name}}" style="display:none">
-  <div class="alert">
-    <form class="no-results input-append">
-      <input class="input-xlarge" id="new-search-input-{{table_name}}" name="search" type="text" placeholder="Search {{title|lower}}" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>
-      <a href="#" class="add-on btn remove-search-btn-{{table_name}}" tabindex="-1">
-        <i class="icon-remove"></i>
-      </a>
-      <button class="btn search-submit-{{table_name}}" >Search</button>
-      <button class="btn btn-link remove-search-btn-{{table_name}}">Show {{title|lower}}
-      </button>
+<div id="no-results-{{table_name}}" style="display:none">
+  <div class="alert alert-warning">
+    <form class="no-results form-inline">
+      <div class="form-group">
+        <div class="btn-group">
+          <input class="form-control" id="new-search-input-{{table_name}}" name="search" type="text" placeholder="Search {{title|lower}}" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>
+          <span class="remove-search-btn-{{table_name}} glyphicon glyphicon-remove-circle" tabindex="-1"></span>
+        </div>
+      </div>
+      <button class="btn btn-default search-submit-{{table_name}}">Search</button>
+      <button class="btn btn-link remove-search-btn-{{table_name}}">Show all {{title|lower}}</button>
     </form>
   </div>
 </div>
 <div id="table-container-{{table_name}}" style="visibility: hidden">
   <!-- control header -->
-  <div class="row-fluid" id="table-chrome-{{table_name}}">
-      <div class="navbar-search input-append pull-left">
+  <div id="table-chrome-{{table_name}}">
+    <div class="container-fluid detail-page-contols">
+      <form class="navbar-form navbar-left">
+        <div class="form-group">
+          <div class="btn-group">
+            <input class="form-control" id="search-input-{{table_name}}" name="search" type="text" placeholder="Search {{title|lower}}" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>
+            <span href="#" style="display:none" class="remove-search-btn-{{table_name}} glyphicon glyphicon-remove-circle" tabindex="-1"></span>
+          </div>
+        </div>
+        <button class="btn btn-default" id="search-submit-{{table_name}}" >Search</button>
+      </form>
 
-        <input class="input-xlarge" id="search-input-{{table_name}}" name="search" type="text" placeholder="Search {{title|lower}}" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>
-        <a href="#" style="display:none" class="add-on btn remove-search-btn-{{table_name}}" tabindex="-1">
-          <i class="icon-remove"></i>
-        </a>
-        <button class="btn" id="search-submit-{{table_name}}" >Search</button>
-      </div>
-
-      <div class="pull-right">
-
-        <div style="display:inline">
-          <span class="divider-vertical"></span>
-          <span class="help-inline" style="padding-top:5px;">Show rows:</span>
-          <select style="margin-top:5px;margin-bottom:0px;" class="pagesize-{{table_name}}">
+      <form class="navbar-form navbar-right">
+        <div class="form-group">
+          <label>Show rows:</label>
+          <select class="form-control pagesize-{{table_name}}">
             {% with "10 25 50 100 150" as list%}
             {% for i in list.split %}
             <option value="{{i}}">{{i}}</option>
@@ -64,31 +65,36 @@
             {% endwith %}
           </select>
         </div>
-      </div>
+      </form>
+    </div>
   </div>
 
   <!-- The actual table -->
-  <table class="table table-bordered table-hover tablesorter" id="{{table_name}}">
-    <thead>
-      <tr><th></th></tr>
-    </thead>
-    <tbody></tbody>
-  </table>
+  <div class="table-responsive">
+    <table class="table table-bordered table-hover" id="{{table_name}}">
+      <thead>
+        <tr><th></th></tr>
+      </thead>
+      <tbody></tbody>
+    </table>
+  </div>
 
   <!-- Pagination controls -->
-  <div class="pagination pagination-centered" id="pagination-{{table_name}}">
-    <ul class="pagination" style="display: block-inline">
+  <div id="pagination-{{table_name}}">
+    <ul class="pagination">
     </ul>
 
-    <div class="pull-right">
-      <span class="help-inline" style="padding-top:5px;">Show rows:</span>
-      <select style="margin-top:5px;margin-bottom:0px;" class="pagesize-{{table_name}}">
-        {% with "10 25 50 100 150" as list%}
-        {% for i in list.split %}
-        <option value="{{i}}">{{i}}</option>
-        {% endfor %}
-        {% endwith %}
-      </select>
-    </div>
+    <form class="navbar-form navbar-right">
+      <div class="form-group">
+        <label>Show rows:</label>
+        <select class="form-control pagesize-{{table_name}}">
+          {% with "10 25 50 100 150" as list%}
+          {% for i in list.split %}
+          <option value="{{i}}">{{i}}</option>
+          {% endfor %}
+          {% endwith %}
+        </select>
+      </div>
+    </form>
   </div>
 </div>
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable.html
index 21c3d36..aa14895 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/toastertable.html
@@ -25,14 +25,20 @@
 
 {% include 'toastertable-filter.html' %}
 
-<div class="row-fluid" id="no-results-{{table_name}}" style="display:none">
-  <div class="alert">
-    <form class="no-results input-append">
-      <input class="input-xxlarge" id="new-search-input-{{table_name}}" name="search" type="text" placeholder="Search {{title|lower}}" value="{%if request.GET.search %}{{request.GET.search}}{%endif%}"/>
-      <a href="#" class="add-on btn remove-search-btn-{{table_name}}" tabindex="-1">
-        <i class="icon-remove"></i>
-      </a>
-      <button class="btn search-submit-{{table_name}}">
+<div class="row-fluid" id="empty-state-{{table_name}}" style="display:none">
+  <div class="alert alert-info">{{empty_state|safe}}</div>
+</div>
+
+<div id="no-results-{{table_name}}" style="display:none">
+  <div class="alert alert-warning">
+    <form class="form-inline">
+      <div class="form-group">
+        <div class="btn-group">
+          <input class="form-control" id="new-search-input-{{table_name}}" name="search" type="text" placeholder="Search {{title|lower}}" value="{%if request.GET.search %}{{request.GET.search}}{%endif%}"/>
+          <span class="remove-search-btn-{{table_name}} glyphicon glyphicon-remove-circle" tabindex="-1"></a>
+        </div>
+      </div>
+      <button class="btn btn-default search-submit-{{table_name}}">
         Search
       </button>
       <button class="btn btn-link show-all-{{table_name}} remove-search-btn-{{table_name}}">
@@ -44,62 +50,76 @@
 
 <div id="table-container-{{table_name}}" style="visibility: hidden">
   <!-- control header -->
-  <div class="navbar" id="table-chrome-{{table_name}}">
-    <div class="navbar-inner">
-      <div class="navbar-search input-append pull-left span6">
-
-        <input id="search-input-{{table_name}}" name="search" type="text" placeholder="Search {{title|lower}}" value="{%if request.GET.search%}{{request.GET.search}}{%endif%}"/>
-        <a href="#" style="display:none" class="add-on btn remove-search-btn-{{table_name}}" tabindex="-1">
-          <i class="icon-remove"></i>
-        </a>
-        <button class="btn" id="search-submit-{{table_name}}" >Search</button>
+  <div class="navbar navbar-default" id="table-chrome-{{table_name}}">
+    <div class="container-fluid">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#table-chrome-collapse-{{table_name}}" aria-expanded="false">
+          <span class="sr-only">Toggle navigation</span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
       </div>
-
-      <div class="pull-right">
-        <div class="btn-group">
-          <button id="edit-columns-button" class="btn dropdown-toggle" data-toggle="dropdown">Edit columns
+      <div class="collapse navbar-collapse" id="table-chrome-collapse-{{table_name}}">
+        <form class="navbar-form navbar-left">
+          <div class="form-group">
+            <div class="btn-group">
+              <input id="search-input-{{table_name}}" class="form-control" name="search" type="text" placeholder="Search {{title|lower}}" value="{%if request.GET.search%}{{request.GET.search}}{%endif%}"/>
+              <span class="remove-search-btn-{{table_name}} glyphicon glyphicon-remove-circle" tabindex="-1" style="display:none;">
+            </div>
+          </div>
+          <button class="btn btn-default" id="search-submit-{{table_name}}" >Search</button>
+        </form>
+        <form class="navbar-form navbar-right">
+          <div clas="form-group">
+            <label>Show rows:</label>
+            <select class="form-control pagesize-{{table_name}}">
+              {% with "10 25 50 100 150" as list%}
+              {% for i in list.split %}
+              <option value="{{i}}">{{i}}</option>
+              {% endfor %}
+              {% endwith %}
+            </select>
+          </div>
+        </form>
+        <div class="btn-group navbar-right">
+          <button id="edit-columns-button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown">Edit columns
             <span class="caret"></span>
           </button>
           <ul class="dropdown-menu editcol">
           </ul>
         </div>
-        <div style="display:inline">
-          <span class="divider-vertical"></span>
-          <span class="help-inline" style="padding-top:5px;">Show rows:</span>
-          <select style="margin-top:5px;margin-bottom:0px;" class="pagesize-{{table_name}}">
-            {% with "10 25 50 100 150" as list%}
-            {% for i in list.split %}
-            <option value="{{i}}">{{i}}</option>
-            {% endfor %}
-            {% endwith %}
-          </select>
-        </div>
       </div>
     </div>
   </div>
 
   <!-- The actual table -->
-  <table class="table table-bordered table-hover tablesorter" id="{{table_name}}">
-    <thead>
-      <tr><th></th></tr>
-    </thead>
-    <tbody></tbody>
-  </table>
+  <div class="table-responsive">
+    <table class="table table-bordered table-hover" id="{{table_name}}">
+      <thead>
+        <tr><th></th></tr>
+      </thead>
+      <tbody></tbody>
+    </table>
+  </div>
 
   <!-- Pagination controls -->
-  <div class="pagination pagination-centered" id="pagination-{{table_name}}">
-    <ul class="pagination" style="display: block-inline">
+  <div id="pagination-{{table_name}}">
+    <ul class="pagination">
     </ul>
 
-    <div class="pull-right">
-      <span class="help-inline" style="padding-top:5px;">Show rows:</span>
-      <select style="margin-top:5px;margin-bottom:0px;" class="pagesize-{{table_name}}">
-        {% with "10 25 50 100 150" as list%}
-        {% for i in list.split %}
-        <option value="{{i}}">{{i}}</option>
-        {% endfor %}
-        {% endwith %}
-      </select>
-    </div>
+    <form class="navbar-form navbar-right">
+      <div class="form-group">
+        <label>Show rows:</label>
+        <select class="form-control pagesize-{{table_name}}">
+          {% with "10 25 50 100 150" as list%}
+          {% for i in list.split %}
+          <option value="{{i}}">{{i}}</option>
+          {% endfor %}
+          {% endwith %}
+        </select>
+      </div>
+    </form>
   </div>
-</div>
+
+</div> <!--end table container -->
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html
index 2d3d02c..fc77e40 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html
@@ -6,10 +6,12 @@
 {% block title %} Build artifact does not exist - Toaster {% endblock %}
 
 {% block pagecontent %}
-    <div class="row-fluid air">
-        <div class="alert alert-info span8 lead">
-            <p>The build artifact you are trying to download does not exist.</p>
-            <p><a href="javascript:window.history.back()">Back to previous page</a></p>
+    <div class="row">
+        <div class="col-md-8">
+            <div class="alert alert-info lead top-air">
+                <p>The build artifact you are trying to download does not exist.</p>
+                <p><a href="javascript:window.history.back()">Back to previous page</a></p>
+            </div>
         </div>
     </div>
 {% endblock %}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templatetags/field_values_filter.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templatetags/field_values_filter.py
new file mode 100644
index 0000000..5a73af7
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templatetags/field_values_filter.py
@@ -0,0 +1,18 @@
+from django import template
+
+register = template.Library()
+
+def field_values(iterable, field):
+    """
+    Convert an iterable of models into a list of strings, one for each model,
+    where the string for each model is the value of the field "field".
+    """
+    objects = []
+
+    if field:
+        for item in iterable:
+            objects.append(getattr(item, field))
+
+    return objects
+
+register.filter('field_values', field_values)
\ No newline at end of file
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
index 75f2261..b170a16 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
@@ -90,7 +90,7 @@
 def divide(value, arg):
     if int(arg) == 0:
         return -1
-    return int(value) / int(arg)
+    return int(value) // int(arg)
 
 @register.filter
 def multiply(value, arg):
@@ -112,11 +112,11 @@
         show_green argument should be True to get green color.
     """
     if not task_object.task_executed:
-        return 'class=muted'
+        return 'class=text-muted'
     elif task_object.outcome == task_object.OUTCOME_FAILED:
-        return 'class=error'
+        return 'class=text-danger'
     elif task_object.outcome == task_object.OUTCOME_SUCCESS and show_green:
-        return 'class=green'
+        return 'class=text-success'
     else:
         return ''
 
@@ -250,15 +250,15 @@
 @register.filter
 def format_vpackage_rowclass(size):
     if size == -1:
-        return mark_safe('class="muted"')
+        return mark_safe('class="text-muted"')
     return ''
 
 @register.filter
 def format_vpackage_namehelp(name):
     r =  name + '&nbsp;'
-    r += '<i class="icon-question-sign get-help hover-help"'
+    r += '<span class="glyphicon glyphicon-question-sign get-help hover-help"'
     r += ' title = "' + name + ' has not been built">'
-    r += '</i>'
+    r += '</span>'
     return mark_safe(r)
 
 @register.filter
@@ -271,14 +271,6 @@
         return ''
 
 @register.filter
-def format_build_date(completed_on):
-    now = timezone.now()
-    delta = now - completed_on
-
-    if delta.days >= 1:
-        return True
-
-@register.filter
 def is_shaid(text):
     """ return True if text length is 40 characters and all hex-digits
     """
@@ -297,3 +289,11 @@
         if fullpath.startswith(prefix):
             return relpath(fullpath, prefix)
     return fullpath
+
+
+@register.filter
+def for_target(package_dependencies, target):
+    """ filter the dependencies to be displayed by the supplied target
+    if no dependences are found for the target then return the predicted
+    dependences"""
+    return package_dependencies.for_target_or_none(target)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tests.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tests.py
index a4cab58..2b5894f 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tests.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/tests.py
@@ -25,12 +25,13 @@
 from django.test.client import RequestFactory
 from django.core.urlresolvers import reverse
 from django.utils import timezone
+from django.db.models import Q
 
 from orm.models import Project, Release, BitbakeVersion, Package, LogMessage
-from orm.models import ReleaseLayerSourcePriority, LayerSource, Layer, Build
+from orm.models import LayerSource, Layer, Build
 from orm.models import Layer_Version, Recipe, Machine, ProjectLayer, Target
 from orm.models import CustomImageRecipe, ProjectVariable
-from orm.models import Branch, CustomImagePackage
+from orm.models import CustomImagePackage
 
 import toastermain
 import inspect
@@ -57,7 +58,6 @@
 
         self.project = Project.objects.first()
         self.recipe1 = Recipe.objects.get(pk=2)
-        self.recipe2 = Recipe.objects.last()
         self.customr = CustomImageRecipe.objects.first()
         self.cust_package = CustomImagePackage.objects.first()
         self.package = Package.objects.first()
@@ -77,14 +77,18 @@
         self.assertEqual(response.status_code, 200)
         self.assertTrue(response['Content-Type'].startswith('application/json'))
 
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
 
         self.assertTrue("error" in data)
         self.assertEqual(data["error"], "ok")
         self.assertTrue("rows" in data)
 
-        self.assertTrue(self.project.name in [x["name"] for x in data["rows"]])
-        self.assertTrue("id" in data["rows"][0])
+        name_found = False
+        for row in data["rows"]:
+            name_found = row['name'].find(self.project.name)
+
+        self.assertTrue(name_found,
+                        "project name not found in projects table")
 
     def test_typeaheads(self):
         """Test typeahead ReST API"""
@@ -102,7 +106,7 @@
             self.assertEqual(response.status_code, 200)
             self.assertTrue(response['Content-Type'].startswith('application/json'))
 
-            data = json.loads(response.content)
+            data = json.loads(response.content.decode('utf-8'))
 
             self.assertTrue("error" in data)
             self.assertEqual(data["error"], "ok")
@@ -145,34 +149,34 @@
 
     def test_xhr_import_layer(self):
         """Test xhr_importlayer API"""
-        LayerSource.objects.create(sourcetype=LayerSource.TYPE_IMPORTED)
         #Test for importing an already existing layer
         args = {'vcs_url' : "git://git.example.com/test",
                 'name' : "base-layer",
                 'git_ref': "c12b9596afd236116b25ce26dbe0d793de9dc7ce",
                 'project_id': self.project.id,
+                'local_source_dir': "",
                 'dir_path' : "/path/in/repository"}
         response = self.client.post(reverse('xhr_importlayer'), args)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
         self.assertEqual(response.status_code, 200)
         self.assertEqual(data["error"], "ok")
 
         #Test to verify import of a layer successful
         args['name'] = "meta-oe"
         response = self.client.post(reverse('xhr_importlayer'), args)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
         self.assertTrue(data["error"], "ok")
 
         #Test for html tag in the data
         args['<'] = "testing html tag"
         response = self.client.post(reverse('xhr_importlayer'), args)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
         self.assertNotEqual(data["error"], "ok")
 
         #Empty data passed
         args = {}
         response = self.client.post(reverse('xhr_importlayer'), args)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
         self.assertNotEqual(data["error"], "ok")
 
     def test_custom_ok(self):
@@ -182,7 +186,7 @@
                   'base': self.recipe1.id}
         response = self.client.post(url, params)
         self.assertEqual(response.status_code, 200)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
         self.assertEqual(data['error'], 'ok')
         self.assertTrue('url' in data)
         # get recipe from the database
@@ -198,7 +202,7 @@
                        {'name': 'custom', 'project': self.project.id}]:
             response = self.client.post(url, params)
             self.assertEqual(response.status_code, 200)
-            data = json.loads(response.content)
+            data = json.loads(response.content.decode('utf-8'))
             self.assertNotEqual(data["error"], "ok")
 
     def test_xhr_custom_wrong_project(self):
@@ -207,7 +211,7 @@
         params = {'name': 'custom', 'project': 0, "base": self.recipe1.id}
         response = self.client.post(url, params)
         self.assertEqual(response.status_code, 200)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
         self.assertNotEqual(data["error"], "ok")
 
     def test_xhr_custom_wrong_base(self):
@@ -216,7 +220,7 @@
         params = {'name': 'custom', 'project': self.project.id, "base": 0}
         response = self.client.post(url, params)
         self.assertEqual(response.status_code, 200)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
         self.assertNotEqual(data["error"], "ok")
 
     def test_xhr_custom_details(self):
@@ -231,7 +235,7 @@
                              'project_id': self.project.id,
                             }
                    }
-        self.assertEqual(json.loads(response.content), expected)
+        self.assertEqual(json.loads(response.content.decode('utf-8')), expected)
 
     def test_xhr_custom_del(self):
         """Test deleting custom recipe"""
@@ -244,12 +248,18 @@
         url = reverse('xhr_customrecipe_id', args=(recipe.id,))
         response = self.client.delete(url)
         self.assertEqual(response.status_code, 200)
-        self.assertEqual(json.loads(response.content), {"error": "ok"})
+
+        gotoUrl = reverse('projectcustomimages', args=(self.project.pk,))
+
+        self.assertEqual(json.loads(response.content.decode('utf-8')),
+                         {"error": "ok",
+                          "gotoUrl": gotoUrl})
+
         # try to delete not-existent recipe
         url = reverse('xhr_customrecipe_id', args=(recipe.id,))
         response = self.client.delete(url)
         self.assertEqual(response.status_code, 200)
-        self.assertNotEqual(json.loads(response.content)["error"], "ok")
+        self.assertNotEqual(json.loads(response.content.decode('utf-8'))["error"], "ok")
 
     def test_xhr_custom_packages(self):
         """Test adding and deleting package to a custom recipe"""
@@ -259,7 +269,7 @@
                                                  self.cust_package.id)))
 
         self.assertEqual(response.status_code, 200)
-        self.assertEqual(json.loads(response.content),
+        self.assertEqual(json.loads(response.content.decode('utf-8')),
                          {"error": "ok"})
         self.assertEqual(self.customr.appends_set.first().name,
                          self.cust_package.name)
@@ -270,7 +280,7 @@
 
         response = self.client.delete(del_url)
         self.assertEqual(response.status_code, 200)
-        self.assertEqual(json.loads(response.content), {"error": "ok"})
+        self.assertEqual(json.loads(response.content.decode('utf-8')), {"error": "ok"})
         all_packages = self.customr.get_all_packages().values_list('pk',
                                                                    flat=True)
 
@@ -282,7 +292,7 @@
 
         response = self.client.delete(del_url)
         self.assertEqual(response.status_code, 200)
-        self.assertNotEqual(json.loads(response.content)["error"], "ok")
+        self.assertNotEqual(json.loads(response.content.decode('utf-8'))["error"], "ok")
 
     def test_xhr_custom_packages_err(self):
         """Test error conditions of xhr_customrecipe_packages"""
@@ -293,51 +303,60 @@
             for method in (self.client.put, self.client.delete):
                 response = method(url)
                 self.assertEqual(response.status_code, 200)
-                self.assertNotEqual(json.loads(response.content),
+                self.assertNotEqual(json.loads(response.content.decode('utf-8')),
                                     {"error": "ok"})
 
     def test_download_custom_recipe(self):
         """Download the recipe file generated for the custom image"""
 
         # Create a dummy recipe file for the custom image generation to read
-        open("/tmp/a_recipe.bb", 'wa').close()
+        open("/tmp/a_recipe.bb", 'a').close()
         response = self.client.get(reverse('customrecipedownload',
                                            args=(self.project.id,
                                                  self.customr.id)))
 
         self.assertEqual(response.status_code, 200)
 
-
     def test_software_recipes_table(self):
         """Test structure returned for Software RecipesTable"""
         table = SoftwareRecipesTable()
         request = RequestFactory().get('/foo/', {'format': 'json'})
         response = table.get(request, pid=self.project.id)
-        data = json.loads(response.content)
+        data = json.loads(response.content.decode('utf-8'))
+
+        recipes = Recipe.objects.filter(Q(is_image=False))
+        self.assertTrue(len(recipes) > 1,
+                        "Need more than one software recipe to test "
+                        "SoftwareRecipesTable")
+
+        recipe1 = recipes[0]
+        recipe2 = recipes[1]
 
         rows = data['rows']
-        row1 = next(x for x in rows if x['name'] == self.recipe1.name)
-        row2 = next(x for x in rows if x['name'] == self.recipe2.name)
+        row1 = next(x for x in rows if x['name'] == recipe1.name)
+        row2 = next(x for x in rows if x['name'] == recipe2.name)
 
         self.assertEqual(response.status_code, 200, 'should be 200 OK status')
 
         # check other columns have been populated correctly
-        self.assertEqual(row1['name'], self.recipe1.name)
-        self.assertEqual(row1['version'], self.recipe1.version)
-        self.assertEqual(row1['get_description_or_summary'],
-                         self.recipe1.description)
-        self.assertEqual(row1['layer_version__layer__name'],
-                         self.recipe1.layer_version.layer.name)
-        self.assertEqual(row2['name'], self.recipe2.name)
-        self.assertEqual(row2['version'], self.recipe2.version)
-        self.assertEqual(row2['get_description_or_summary'],
-                         self.recipe2.description)
-        self.assertEqual(row2['layer_version__layer__name'],
-                         self.recipe2.layer_version.layer.name)
+        self.assertTrue(recipe1.name in row1['name'])
+        self.assertTrue(recipe1.version in row1['version'])
+        self.assertTrue(recipe1.description in
+                        row1['get_description_or_summary'])
+
+        self.assertTrue(recipe1.layer_version.layer.name in
+                        row1['layer_version__layer__name'])
+
+        self.assertTrue(recipe2.name in row2['name'])
+        self.assertTrue(recipe2.version in row2['version'])
+        self.assertTrue(recipe2.description in
+                        row2['get_description_or_summary'])
+
+        self.assertTrue(recipe2.layer_version.layer.name in
+                        row2['layer_version__layer__name'])
 
     def test_toaster_tables(self):
         """Test all ToasterTables instances"""
-        current_recipes = self.project.get_available_recipes()
 
         def get_data(table, options={}):
             """Send a request and parse the json response"""
@@ -354,19 +373,36 @@
                     'layerid': self.lver.pk,
                     'recipeid': self.recipe1.pk,
                     'recipe_id': image_recipe.pk,
-                    'custrecipeid': self.customr.pk
-                   }
+                    'custrecipeid': self.customr.pk,
+                    'build_id': 1,
+                    'target_id': 1}
 
             response = table.get(request, **args)
-            return json.loads(response.content)
+            return json.loads(response.content.decode('utf-8'))
+
+        def get_text_from_td(td):
+            """If we have html in the td then extract the text portion"""
+            # just so we don't waste time parsing non html
+            if "<" not in td:
+                ret = td
+            else:
+                ret = BeautifulSoup(td, "html.parser").text
+
+            if len(ret):
+                return "0"
+            else:
+                return ret
 
         # Get a list of classes in tables module
         tables = inspect.getmembers(toastergui.tables, inspect.isclass)
+        tables.extend(inspect.getmembers(toastergui.buildtables,
+                                         inspect.isclass))
 
         for name, table_cls in tables:
             # Filter out the non ToasterTables from the tables module
             if not issubclass(table_cls, toastergui.widgets.ToasterTable) or \
-                table_cls == toastergui.widgets.ToasterTable:
+                table_cls == toastergui.widgets.ToasterTable or \
+               'Mixin' in name:
                 continue
 
             # Get the table data without any options, this also does the
@@ -379,8 +415,10 @@
                             "Cannot test on a %s table with < 1 row" % name)
 
             if table.default_orderby:
-                row_one = all_data['rows'][0][table.default_orderby.strip("-")]
-                row_two = all_data['rows'][1][table.default_orderby.strip("-")]
+                row_one = get_text_from_td(
+                    all_data['rows'][0][table.default_orderby.strip("-")])
+                row_two = get_text_from_td(
+                    all_data['rows'][1][table.default_orderby.strip("-")])
 
                 if '-' in table.default_orderby:
                     self.assertTrue(row_one >= row_two,
@@ -399,28 +437,36 @@
                     # If a column is orderable test it in both order
                     # directions ordering on the columns field_name
                     ascending = get_data(table_cls(),
-                                         {"orderby" : column['field_name']})
+                                         {"orderby": column['field_name']})
 
-                    row_one = ascending['rows'][0][column['field_name']]
-                    row_two = ascending['rows'][1][column['field_name']]
+                    row_one = get_text_from_td(
+                        ascending['rows'][0][column['field_name']])
+                    row_two = get_text_from_td(
+                        ascending['rows'][1][column['field_name']])
 
                     self.assertTrue(row_one <= row_two,
-                                    "Ascending sort applied but row 0 is less "
-                                    "than row 1 %s %s " %
-                                    (column['field_name'], name))
-
+                                    "Ascending sort applied but row 0: \"%s\""
+                                    " is less than row 1: \"%s\" "
+                                    "%s %s " %
+                                    (row_one, row_two,
+                                     column['field_name'], name))
 
                     descending = get_data(table_cls(),
-                                          {"orderby" :
+                                          {"orderby":
                                            '-'+column['field_name']})
 
-                    row_one = descending['rows'][0][column['field_name']]
-                    row_two = descending['rows'][1][column['field_name']]
+                    row_one = get_text_from_td(
+                        descending['rows'][0][column['field_name']])
+                    row_two = get_text_from_td(
+                        descending['rows'][1][column['field_name']])
 
                     self.assertTrue(row_one >= row_two,
-                                    "Descending sort applied but row 0 is "
-                                    "greater than row 1 %s %s" %
-                                    (column['field_name'], name))
+                                    "Descending sort applied but row 0: %s"
+                                    "is greater than row 1: %s"
+                                    "field %s table %s" %
+                                    (row_one,
+                                     row_two,
+                                     column['field_name'], name))
 
                     # If the two start rows are the same we haven't actually
                     # changed the order
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/typeaheads.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/typeaheads.py
index dd4b7f5..4ded9ac 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/typeaheads.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/typeaheads.py
@@ -55,6 +55,7 @@
                 'vcs_url' : layer_version.layer.vcs_url,
                 'vcs_reference' : vcs_reference,
                 'detail' : detail,
+                'local_source_dir' : layer_version.layer.local_source_dir,
             }
 
             results.append(needed_fields)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/urls.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/urls.py
index 27b0baa..ece9ac1 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/urls.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/urls.py
@@ -21,8 +21,10 @@
 
 from django.http import HttpResponseBadRequest
 from toastergui import tables
+from toastergui import buildtables
 from toastergui import typeaheads
 from toastergui import api
+from toastergui import widgets
 
 urlpatterns = patterns('toastergui.views',
         # landing page
@@ -34,17 +36,28 @@
 
         # build info navigation
         url(r'^build/(?P<build_id>\d+)$', 'builddashboard', name="builddashboard"),
+        url(r'^build/(?P<build_id>\d+)/tasks/$',
+            buildtables.BuildTasksTable.as_view(
+                template_name="buildinfo-toastertable.html"),
+            name='tasks'),
 
-        url(r'^build/(?P<build_id>\d+)/tasks/$', 'tasks', name='tasks'),
-        url(r'^build/(?P<build_id>\d+)/tasks/(?P<task_id>\d+)/$', 'tasks_task', name='tasks_task'),
         url(r'^build/(?P<build_id>\d+)/task/(?P<task_id>\d+)$', 'task', name='task'),
 
-        url(r'^build/(?P<build_id>\d+)/recipes/$', 'recipes', name='recipes'),
+        url(r'^build/(?P<build_id>\d+)/recipes/$',
+            buildtables.BuiltRecipesTable.as_view(
+                template_name="buildinfo-toastertable.html"),
+            name='recipes'),
+
         url(r'^build/(?P<build_id>\d+)/recipe/(?P<recipe_id>\d+)/active_tab/(?P<active_tab>\d{1})$', 'recipe', name='recipe'),
+
         url(r'^build/(?P<build_id>\d+)/recipe/(?P<recipe_id>\d+)$', 'recipe', name='recipe'),
         url(r'^build/(?P<build_id>\d+)/recipe_packages/(?P<recipe_id>\d+)$', 'recipe_packages', name='recipe_packages'),
 
-        url(r'^build/(?P<build_id>\d+)/packages/$', 'bpackage', name='packages'),
+        url(r'^build/(?P<build_id>\d+)/packages/$',
+            buildtables.BuiltPackagesTable.as_view(
+                template_name="buildinfo-toastertable.html"),
+            name='packages'),
+
         url(r'^build/(?P<build_id>\d+)/package/(?P<package_id>\d+)$', 'package_built_detail',
                 name='package_built_detail'),
         url(r'^build/(?P<build_id>\d+)/package_built_dependencies/(?P<package_id>\d+)$',
@@ -56,17 +69,31 @@
         url(r'^build/(?P<build_id>\d+)/package_included_reverse_dependencies/(?P<target_id>\d+)/(?P<package_id>\d+)$',
             'package_included_reverse_dependencies', name='package_included_reverse_dependencies'),
 
-        # images are known as targets in the internal model
-        url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)$', 'target', name='target'),
-        url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)/targetpkg$', 'targetpkg', name='targetpkg'),
+        url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)$',
+            buildtables.InstalledPackagesTable.as_view(
+                template_name="target.html"),
+            name='target'),
+
+
         url(r'^dentries/build/(?P<build_id>\d+)/target/(?P<target_id>\d+)$', 'xhr_dirinfo', name='dirinfo_ajax'),
         url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)/dirinfo$', 'dirinfo', name='dirinfo'),
         url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)/dirinfo_filepath/_(?P<file_path>(?:/[^/\n]+)*)$', 'dirinfo', name='dirinfo_filepath'),
         url(r'^build/(?P<build_id>\d+)/configuration$', 'configuration', name='configuration'),
         url(r'^build/(?P<build_id>\d+)/configvars$', 'configvars', name='configvars'),
-        url(r'^build/(?P<build_id>\d+)/buildtime$', 'buildtime', name='buildtime'),
-        url(r'^build/(?P<build_id>\d+)/cputime$', 'cputime', name='cputime'),
-        url(r'^build/(?P<build_id>\d+)/diskio$', 'diskio', name='diskio'),
+        url(r'^build/(?P<build_id>\d+)/buildtime$',
+            buildtables.BuildTimeTable.as_view(
+                template_name="buildinfo-toastertable.html"),
+            name='buildtime'),
+
+        url(r'^build/(?P<build_id>\d+)/cputime$',
+            buildtables.BuildCPUTimeTable.as_view(
+                template_name="buildinfo-toastertable.html"),
+            name='cputime'),
+
+        url(r'^build/(?P<build_id>\d+)/diskio$',
+            buildtables.BuildIOTable.as_view(
+                template_name="buildinfo-toastertable.html"),
+            name='diskio'),
 
         # image information dir
         url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)/packagefile/(?P<packagefile_id>\d+)$',
@@ -164,27 +191,47 @@
             name='xhr_configvaredit'),
 
         url(r'^xhr_importlayer/$', 'xhr_importlayer', name='xhr_importlayer'),
-        url(r'^xhr_updatelayer/$', 'xhr_updatelayer', name='xhr_updatelayer'),
+
+        url(r'^xhr_layer/(?P<pid>\d+)/(?P<layerversion_id>\d+)$',
+            api.XhrLayer.as_view(),
+            name='xhr_layer'),
 
         # JS Unit tests
         url(r'^js-unit-tests/$', 'jsunittests', name='js-unit-tests'),
 
         # image customisation functionality
-        url(r'^xhr_customrecipe/(?P<recipe_id>\d+)/packages/(?P<package_id>\d+|)$',
-            'xhr_customrecipe_packages', name='xhr_customrecipe_packages'),
+        url(r'^xhr_customrecipe/(?P<recipe_id>\d+)'
+            '/packages/(?P<package_id>\d+|)$',
+            api.XhrCustomRecipePackages.as_view(),
+            name='xhr_customrecipe_packages'),
 
         url(r'^xhr_customrecipe/(?P<recipe_id>\d+)/packages/$',
-            'xhr_customrecipe_packages', name='xhr_customrecipe_packages'),
+            api.XhrCustomRecipePackages.as_view(),
+            name='xhr_customrecipe_packages'),
 
-        url(r'^xhr_customrecipe/(?P<recipe_id>\d+)$', 'xhr_customrecipe_id',
+        url(r'^xhr_customrecipe/(?P<recipe_id>\d+)$',
+            api.XhrCustomRecipeId.as_view(),
             name='xhr_customrecipe_id'),
-        url(r'^xhr_customrecipe/', 'xhr_customrecipe',
+
+        url(r'^xhr_customrecipe/',
+            api.XhrCustomRecipe.as_view(),
             name='xhr_customrecipe'),
 
         url(r'^xhr_buildrequest/project/(?P<pid>\d+)$',
-           api.XhrBuildRequest.as_view(),
+            api.XhrBuildRequest.as_view(),
             name='xhr_buildrequest'),
 
+        url(r'xhr_project/(?P<project_id>\d+)$',
+            api.XhrProject.as_view(),
+            name='xhr_project'),
+
+        url(r'xhr_build/(?P<build_id>\d+)$',
+            api.XhrBuild.as_view(),
+            name='xhr_build'),
+
+        url(r'^mostrecentbuilds$', widgets.MostRecentBuildsView.as_view(),
+            name='most_recent_builds'),
+
           # default redirection
         url(r'^$', RedirectView.as_view(url='landing', permanent=True)),
 )
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/views.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/views.py
index bd5bf63..2efb0fd 100755
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/views.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/views.py
@@ -19,42 +19,37 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-# pylint: disable=method-hidden
-# Gives E:848, 4: An attribute defined in json.encoder line 162 hides this method (method-hidden)
-# which is an invalid warning
 
-import operator,re
+import re
 
-from django.db.models import F, Q, Sum, Count, Max
-from django.db import IntegrityError, Error
+from django.db.models import F, Q, Sum
+from django.db import IntegrityError
 from django.shortcuts import render, redirect, get_object_or_404
-from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable
-from orm.models import Task_Dependency, Recipe_Dependency, Package, Package_File, Package_Dependency
-from orm.models import Target_Installed_Package, Target_File, Target_Image_File, BuildArtifact, CustomImagePackage
+from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe
+from orm.models import LogMessage, Variable, Package_Dependency, Package
+from orm.models import Task_Dependency, Package_File
+from orm.models import Target_Installed_Package, Target_File
+from orm.models import TargetKernelFile, TargetSDKFile, Target_Image_File
 from orm.models import BitbakeVersion, CustomImageRecipe
-from bldcontrol import bbcontroller
-from django.views.decorators.cache import cache_control
+
 from django.core.urlresolvers import reverse, resolve
 from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
-from django.http import HttpResponseBadRequest, HttpResponseNotFound
+from django.http import HttpResponseNotFound
 from django.utils import timezone
-from django.utils.html import escape
 from datetime import timedelta, datetime
-from django.utils import formats
 from toastergui.templatetags.projecttags import json as jsonfilter
 from decimal import Decimal
 import json
 import os
 from os.path import dirname
-from functools import wraps
-import itertools
 import mimetypes
 
 import logging
 
 logger = logging.getLogger("toaster")
 
+
 class MimeTypeFinder(object):
     # setting this to False enables additional non-standard mimetypes
     # to be included in the guess
@@ -160,7 +155,7 @@
     return {"id": x.pk,
             "name": x.layer.name,
             "tooltip": "%s | %s" % (x.layer.vcs_url,x.get_vcs_reference()),
-            "detail": "(%s" % x.layer.vcs_url + (")" if x.up_branch == None else " | "+x.get_vcs_reference()+")"),
+            "detail": "(%s" % x.layer.vcs_url + (")" if x.release == None else " | "+x.get_vcs_reference()+")"),
             "giturl": x.layer.vcs_url,
             "layerdetailurl" : reverse('layerdetails', args=(prj.id,x.pk)),
             "revision" : x.get_vcs_reference(),
@@ -200,16 +195,19 @@
     return None
 
 def _redirect_parameters(view, g, mandatory_parameters, *args, **kwargs):
-    import urllib
+    try:
+        from urllib import unquote, urlencode
+    except ImportError:
+        from urllib.parse import unquote, urlencode
     url = reverse(view, kwargs=kwargs)
     params = {}
     for i in g:
         params[i] = g[i]
     for i in mandatory_parameters:
         if not i in params:
-            params[i] = urllib.unquote(str(mandatory_parameters[i]))
+            params[i] = unquote(str(mandatory_parameters[i]))
 
-    return redirect(url + "?%s" % urllib.urlencode(params), permanent = False, **kwargs)
+    return redirect(url + "?%s" % urlencode(params), permanent = False, **kwargs)
 
 class RedirectException(Exception):
     def __init__(self, view, g, mandatory_parameters, *args, **kwargs):
@@ -229,10 +227,18 @@
 DESCENDING = "-"
 
 def __get_q_for_val(name, value):
-    if "OR" in value:
-        return reduce(operator.or_, map(lambda x: __get_q_for_val(name, x), [ x for x in value.split("OR") ]))
+    if "OR" in value or "AND" in value:
+        result = None
+        for x in value.split("OR"):
+             x = __get_q_for_val(name, x)
+             result = result | x if result else x
+        return result
     if "AND" in value:
-        return reduce(operator.and_, map(lambda x: __get_q_for_val(name, x), [ x for x in value.split("AND") ]))
+        result = None
+        for x in value.split("AND"):
+            x = __get_q_for_val(name, x)
+            result = result & x if result else x
+        return result
     if value.startswith("NOT"):
         value = value[3:]
         if value == 'None':
@@ -251,14 +257,18 @@
     and_keys = search_terms[0].split(AND_VALUE_SEPARATOR)
     and_values = search_terms[1].split(AND_VALUE_SEPARATOR)
 
-    and_query = []
+    and_query = None
     for kv in zip(and_keys, and_values):
         or_keys = kv[0].split(OR_VALUE_SEPARATOR)
         or_values = kv[1].split(OR_VALUE_SEPARATOR)
-        querydict = dict(zip(or_keys, or_values))
-        and_query.append(reduce(operator.or_, map(lambda x: __get_q_for_val(x, querydict[x]), [k for k in querydict])))
+        query = None
+        for key, val in zip(or_keys, or_values):
+            x = __get_q_for_val(key, val)
+            query = query | x if query else x
 
-    return reduce(operator.and_, [k for k in and_query])
+        and_query = and_query & query if and_query else query
+
+    return and_query
 
 def _get_toggle_order(request, orderkey, toggle_reverse = False):
     if toggle_reverse:
@@ -295,21 +305,24 @@
         # Check we are looking for a valid field
         valid_fields = model._meta.get_all_field_names()
         for field in field_input_list[0].split(AND_VALUE_SEPARATOR):
-            if not reduce(lambda x, y: x or y, [ field.startswith(x) for x in valid_fields ]):
-                return None, (field, [ x for x in valid_fields ])
+            if True in [field.startswith(x) for x in valid_fields]:
+                break
+        else:
+           return None, (field, valid_fields)
 
     return field_input, invalid
 
 # uses search_allowed_fields in orm/models.py to create a search query
 # for these fields with the supplied input text
 def _get_search_results(search_term, queryset, model):
-    search_objects = []
+    search_object = None
     for st in search_term.split(" "):
-        q_map = map(lambda x: Q(**{x+'__icontains': st}),
-                model.search_allowed_fields)
+        queries = None
+        for field in model.search_allowed_fields:
+            query = Q(**{field + '__icontains': st})
+            queries = queries | query if queries else query
 
-        search_objects.append(reduce(operator.or_, q_map))
-    search_object = reduce(operator.and_, search_objects)
+        search_object = search_object & queries if search_object else queries
     queryset = queryset.filter(search_object)
 
     return queryset
@@ -452,46 +465,58 @@
     recipeCount = Recipe.objects.filter( layer_version__id__in = layerVersionId ).count( );
     tgts = Target.objects.filter( build_id = build_id ).order_by( 'target' );
 
-    ##
     # set up custom target list with computed package and image data
-    #
-
-    targets = [ ]
+    targets = []
     ntargets = 0
-    hasImages = False
-    targetHasNoImages = False
+
+    # True if at least one target for this build has an SDK artifact
+    # or image file
+    has_artifacts = False
+
     for t in tgts:
-        elem = { }
-        elem[ 'target' ] = t
-        if t.is_image:
-            hasImages = True
+        elem = {}
+        elem['target'] = t
+
+        target_has_images = False
+        image_files = []
+
         npkg = 0
         pkgsz = 0
         package = None
         for package in Package.objects.filter(id__in = [x.package_id for x in t.target_installed_package_set.all()]):
             pkgsz = pkgsz + package.size
-            if ( package.installed_name ):
+            if package.installed_name:
                 npkg = npkg + 1
-        elem[ 'npkg' ] = npkg
-        elem[ 'pkgsz' ] = pkgsz
-        ti = Target_Image_File.objects.filter( target_id = t.id )
-        imageFiles = [ ]
+        elem['npkg'] = npkg
+        elem['pkgsz'] = pkgsz
+        ti = Target_Image_File.objects.filter(target_id = t.id)
         for i in ti:
-            ndx = i.file_name.rfind( '/' )
-            if ( ndx < 0 ):
+            ndx = i.file_name.rfind('/')
+            if ndx < 0:
                 ndx = 0;
-            f = i.file_name[ ndx + 1: ]
-            imageFiles.append({
+            f = i.file_name[ndx + 1:]
+            image_files.append({
                 'id': i.id,
                 'path': f,
                 'size': i.file_size,
                 'suffix': i.suffix
             })
-        if t.is_image and (len(imageFiles) <= 0 or len(t.license_manifest_path) <= 0):
-            targetHasNoImages = True
-        elem[ 'imageFiles' ] = imageFiles
-        elem[ 'targetHasNoImages' ] = targetHasNoImages
-        targets.append( elem )
+        if len(image_files) > 0:
+            target_has_images = True
+        elem['targetHasImages'] = target_has_images
+
+        elem['imageFiles'] = image_files
+        elem['target_kernel_artifacts'] = t.targetkernelfile_set.all()
+
+        target_sdk_files = t.targetsdkfile_set.all()
+        target_sdk_artifacts_count = target_sdk_files.count()
+        elem['target_sdk_artifacts_count'] = target_sdk_artifacts_count
+        elem['target_sdk_artifacts'] = target_sdk_files
+
+        if target_has_images or target_sdk_artifacts_count > 0:
+            has_artifacts = True
+
+        targets.append(elem)
 
     ##
     # how many packages in this build - ignore anonymous ones
@@ -508,7 +533,7 @@
     context = {
             'build'           : build,
             'project'         : build.project,
-            'hasImages'       : hasImages,
+            'hasArtifacts'    : has_artifacts,
             'ntargets'        : ntargets,
             'targets'         : targets,
             'recipecount'     : recipeCount,
@@ -578,6 +603,7 @@
             'log_body'        : log_body,
             'showing_matches' : False,
             'uri_list'        : uri_list,
+            'task_in_tasks_table_pg':  int(task_object.order / 25) + 1
     }
     if request.GET.get( 'show_matches', "" ):
         context[ 'showing_matches' ] = True
@@ -662,175 +688,6 @@
     _set_parameters_values(pagesize, orderby, request)
     return response
 
-def target_common( request, build_id, target_id, variant ):
-    template = "target.html"
-    default_orderby = 'name:+'
-
-    (pagesize, orderby) = _get_parameters_values(request, 25, default_orderby)
-    mandatory_parameters = { 'count': pagesize,  'page' : 1, 'orderby': orderby }
-    retval = _verify_parameters( request.GET, mandatory_parameters )
-    if retval:
-        return _redirect_parameters(
-                    variant, request.GET, mandatory_parameters,
-                    build_id = build_id, target_id = target_id )
-    ( filter_string, search_term, ordering_string ) = _search_tuple( request, Package )
-
-    # FUTURE:  get rid of nested sub-queries replacing with ManyToMany field
-    queryset = Package.objects.filter(
-                    size__gte = 0,
-                    id__in = Target_Installed_Package.objects.filter(
-                        target_id=target_id ).values( 'package_id' ))
-    packages_sum =  queryset.aggregate( Sum( 'installed_size' ))
-    queryset = _get_queryset(
-            Package, queryset, filter_string, search_term, ordering_string, 'name' )
-    queryset = queryset.select_related("recipe", "recipe__layer_version", "recipe__layer_version__layer")
-    packages = _build_page_range( Paginator(queryset, pagesize), request.GET.get( 'page', 1 ))
-
-    build = Build.objects.get( pk = build_id )
-
-    # bring in package dependencies
-    for p in packages.object_list:
-        p.runtime_dependencies = p.package_dependencies_source.filter(
-            target_id = target_id, dep_type=Package_Dependency.TYPE_TRDEPENDS ).select_related("depends_on")
-        p.reverse_runtime_dependencies = p.package_dependencies_target.filter(
-            target_id = target_id, dep_type=Package_Dependency.TYPE_TRDEPENDS ).select_related("package")
-    tc_package = {
-        'name'       : 'Package',
-        'qhelp'      : 'Packaged output resulting from building a recipe included in this image',
-        'orderfield' : _get_toggle_order( request, "name" ),
-        'ordericon'  : _get_toggle_order_icon( request, "name" ),
-        }
-    tc_packageVersion = {
-        'name'       : 'Package version',
-        'qhelp'      : 'The package version and revision',
-        }
-    tc_size = {
-        'name'       : 'Size',
-        'qhelp'      : 'The size of the package',
-        'orderfield' : _get_toggle_order( request, "size", True ),
-        'ordericon'  : _get_toggle_order_icon( request, "size" ),
-        'orderkey'   : 'size',
-        'clclass'    : 'size',
-        'dclass'     : 'span2',
-        }
-    if ( variant == 'target' ):
-        tc_size[ "hidden" ] = 0
-    else:
-        tc_size[ "hidden" ] = 1
-    tc_sizePercentage = {
-        'name'       : 'Size over total (%)',
-        'qhelp'      : 'Proportion of the overall size represented by this package',
-        'clclass'    : 'size_over_total',
-        'hidden'     : 1,
-        }
-    tc_license = {
-        'name'       : 'License',
-        'qhelp'      : 'The license under which the package is distributed. Separate license names u\
-sing | (pipe) means there is a choice between licenses. Separate license names using & (ampersand) m\
-eans multiple licenses exist that cover different parts of the source',
-        'orderfield' : _get_toggle_order( request, "license" ),
-        'ordericon'  : _get_toggle_order_icon( request, "license" ),
-        'orderkey'   : 'license',
-        'clclass'    : 'license',
-        }
-    if ( variant == 'target' ):
-        tc_license[ "hidden" ] = 1
-    else:
-        tc_license[ "hidden" ] = 0
-    tc_dependencies = {
-        'name'       : 'Dependencies',
-        'qhelp'      : "Package runtime dependencies (other packages)",
-        'clclass'    : 'depends',
-        }
-    if ( variant == 'target' ):
-        tc_dependencies[ "hidden" ] = 0
-    else:
-        tc_dependencies[ "hidden" ] = 1
-    tc_rdependencies = {
-        'name'       : 'Reverse dependencies',
-        'qhelp'      : 'Package run-time reverse dependencies (i.e. which other packages depend on this package',
-        'clclass'    : 'brought_in_by',
-        }
-    if ( variant == 'target' ):
-        tc_rdependencies[ "hidden" ] = 0
-    else:
-        tc_rdependencies[ "hidden" ] = 1
-    tc_recipe = {
-        'name'       : 'Recipe',
-        'qhelp'      : 'The name of the recipe building the package',
-        'orderfield' : _get_toggle_order( request, "recipe__name" ),
-        'ordericon'  : _get_toggle_order_icon( request, "recipe__name" ),
-        'orderkey'   : "recipe__name",
-        'clclass'    : 'recipe_name',
-        'hidden'     : 0,
-        }
-    tc_recipeVersion = {
-        'name'       : 'Recipe version',
-        'qhelp'      : 'Version and revision of the recipe building the package',
-        'clclass'    : 'recipe_version',
-        'hidden'     : 1,
-        }
-    tc_layer = {
-        'name'       : 'Layer',
-        'qhelp'      : 'The name of the layer providing the recipe that builds the package',
-        'orderfield' : _get_toggle_order( request, "recipe__layer_version__layer__name" ),
-        'ordericon'  : _get_toggle_order_icon( request, "recipe__layer_version__layer__name" ),
-        'orderkey'   : "recipe__layer_version__layer__name",
-        'clclass'    : 'layer_name',
-        'hidden'     : 1,
-        }
-    tc_layerBranch = {
-        'name'       : 'Layer branch',
-        'qhelp'      : 'The Git branch of the layer providing the recipe that builds the package',
-        'orderfield' : _get_toggle_order( request, "recipe__layer_version__branch" ),
-        'ordericon'  : _get_toggle_order_icon( request, "recipe__layer_version__branch" ),
-        'orderkey'   : "recipe__layer_version__branch",
-        'clclass'    : 'layer_branch',
-        'hidden'     : 1,
-        }
-    tc_layerCommit = {
-        'name'       : 'Layer commit',
-        'qhelp'      : 'The Git commit of the layer providing the recipe that builds the package',
-        'clclass'    : 'layer_commit',
-        'hidden'     : 1,
-        }
-
-    context = {
-        'objectname': variant,
-        'build'                : build,
-        'project'              : build.project,
-        'target'               : Target.objects.filter( pk = target_id )[ 0 ],
-        'objects'              : packages,
-        'packages_sum'         : packages_sum[ 'installed_size__sum' ],
-        'object_search_display': "packages included",
-        'default_orderby'      : default_orderby,
-        'tablecols'            : [
-                    tc_package,
-                    tc_packageVersion,
-                    tc_license,
-                    tc_size,
-                    tc_sizePercentage,
-                    tc_dependencies,
-                    tc_rdependencies,
-                    tc_recipe,
-                    tc_recipeVersion,
-                    tc_layer,
-                    tc_layerBranch,
-                    tc_layerCommit,
-                ]
-        }
-
-
-    response = render(request, template, context)
-    _set_parameters_values(pagesize, orderby, request)
-    return response
-
-def target( request, build_id, target_id ):
-    return( target_common( request, build_id, target_id, "target" ))
-
-def targetpkg( request, build_id, target_id ):
-    return( target_common( request, build_id, target_id, "targetpkg" ))
-
 from django.core.serializers.json import DjangoJSONEncoder
 from django.http import HttpResponse
 def xhr_dirinfo(request, build_id, target_id):
@@ -910,8 +767,8 @@
             response.append(entry)
 
         except Exception as e:
-            print "Exception ", e
-            traceback.print_exc(e)
+            print("Exception ", e)
+            traceback.print_exc()
 
     # sort by directories first, then by name
     rsorted = sorted(response, key=lambda entry :  entry['name'])
@@ -952,18 +809,29 @@
     return render(request, template, context)
 
 def _find_task_dep(task_object):
-    return map(lambda x: x.depends_on, Task_Dependency.objects.filter(task=task_object).filter(depends_on__order__gt = 0).exclude(depends_on__outcome = Task.OUTCOME_NA).select_related("depends_on"))
-
+    tdeps = Task_Dependency.objects.filter(task=task_object).filter(depends_on__order__gt=0)
+    tdeps = tdeps.exclude(depends_on__outcome=Task.OUTCOME_NA).select_related("depends_on")
+    return [x.depends_on for x in tdeps]
 
 def _find_task_revdep(task_object):
-    tp = []
-    tp = map(lambda t: t.task, Task_Dependency.objects.filter(depends_on=task_object).filter(task__order__gt=0).exclude(task__outcome = Task.OUTCOME_NA).select_related("task", "task__recipe", "task__build"))
-    return tp
+    tdeps = Task_Dependency.objects.filter(depends_on=task_object).filter(task__order__gt=0)
+    tdeps = tdeps.exclude(task__outcome = Task.OUTCOME_NA).select_related("task", "task__recipe", "task__build")
+
+    # exclude self-dependencies to prevent infinite dependency loop
+    # in generateCoveredList2()
+    tdeps = tdeps.exclude(task=task_object)
+
+    return [tdep.task for tdep in tdeps]
 
 def _find_task_revdep_list(tasklist):
-    tp = []
-    tp = map(lambda t: t.task, Task_Dependency.objects.filter(depends_on__in=tasklist).filter(task__order__gt=0).exclude(task__outcome = Task.OUTCOME_NA).select_related("task", "task__recipe", "task__build"))
-    return tp
+    tdeps = Task_Dependency.objects.filter(depends_on__in=tasklist).filter(task__order__gt=0)
+    tdeps = tdeps.exclude(task__outcome=Task.OUTCOME_NA).select_related("task", "task__recipe", "task__build")
+
+    # exclude self-dependencies to prevent infinite dependency loop
+    # in generateCoveredList2()
+    tdeps = tdeps.exclude(task=F('depends_on'))
+
+    return [tdep.task for tdep in tdeps]
 
 def _find_task_provider(task_object):
     task_revdeps = _find_task_revdep(task_object)
@@ -976,396 +844,6 @@
             return trc
     return None
 
-def tasks_common(request, build_id, variant, task_anchor):
-# This class is shared between these pages
-#
-# Column    tasks  buildtime  diskio  cpuusage
-# --------- ------ ---------- ------- ---------
-# Cache      def
-# CPU                                   min -
-# Disk                         min -
-# Executed   def     def       def      def
-# Log
-# Order      def +
-# Outcome    def     def       def      def
-# Recipe     min     min       min      min
-# Version
-# Task       min     min       min      min
-# Time               min -
-#
-# 'min':on always, 'def':on by default, else hidden
-# '+' default column sort up, '-' default column sort down
-
-    anchor = request.GET.get('anchor', '')
-    if not anchor:
-        anchor=task_anchor
-
-    # default ordering depends on variant
-    default_orderby = None
-    filter_search_display = 'tasks'
-
-    if 'buildtime' == variant:
-        default_orderby = 'elapsed_time:-'
-        title_variant = 'Time'
-        object_search_display = 'time data'
-    elif 'diskio' == variant:
-        default_orderby = 'disk_io:-'
-        title_variant = 'Disk I/O'
-        object_search_display = 'disk I/O data'
-    elif 'cputime' == variant:
-        default_orderby = 'cpu_time_system:-'
-        title_variant='CPU time'
-        object_search_display = 'CPU time data'
-    else:
-        default_orderby = 'order:+'
-        title_variant = 'Tasks'
-        object_search_display = 'tasks'
-
-    (pagesize, orderby) = _get_parameters_values(request, 25, default_orderby)
-
-    mandatory_parameters = {'count': pagesize, 'page' : 1, 'orderby': orderby}
-
-    template = 'tasks.html'
-    retval = _verify_parameters( request.GET, mandatory_parameters )
-    if retval:
-        if task_anchor:
-            mandatory_parameters['anchor']=task_anchor
-        return _redirect_parameters( variant, request.GET, mandatory_parameters, build_id = build_id)
-    (filter_string, search_term, ordering_string) = _search_tuple(request, Task)
-    queryset_all = Task.objects.filter(build=build_id).exclude(order__isnull=True).exclude(outcome=Task.OUTCOME_NA)
-    queryset_all = queryset_all.select_related("recipe", "build")
-
-    queryset_with_search = _get_queryset(Task, queryset_all, None , search_term, ordering_string, 'order')
-
-    if ordering_string.startswith('outcome'):
-        queryset = _get_queryset(Task, queryset_all, filter_string, search_term, 'order:+', 'order')
-        queryset = sorted(queryset, key=lambda ur: (ur.outcome_text), reverse=ordering_string.endswith('-'))
-    elif ordering_string.startswith('sstate_result'):
-        queryset = _get_queryset(Task, queryset_all, filter_string, search_term, 'order:+', 'order')
-        queryset = sorted(queryset, key=lambda ur: (ur.sstate_text), reverse=ordering_string.endswith('-'))
-    else:
-        queryset = _get_queryset(Task, queryset_all, filter_string, search_term, ordering_string, 'order')
-
-
-    # compute the anchor's page
-    if anchor:
-        request.GET = request.GET.copy()
-        del request.GET['anchor']
-        i=0
-        a=int(anchor)
-        count_per_page=int(pagesize)
-        for task_object in queryset.iterator():
-            if a == task_object.order:
-                new_page= (i / count_per_page ) + 1
-                request.GET.__setitem__('page', new_page)
-                mandatory_parameters['page']=new_page
-                return _redirect_parameters( variant, request.GET, mandatory_parameters, build_id = build_id)
-            i += 1
-
-    task_objects = _build_page_range(Paginator(queryset, pagesize),request.GET.get('page', 1))
-
-    # define (and modify by variants) the 'tablecols' members
-    tc_order={
-        'name':'Order',
-        'qhelp':'The running sequence of each task in the build',
-        'clclass': 'order', 'hidden' : 1,
-        'orderkey' : 'order',
-        'orderfield':_get_toggle_order(request, "order"),
-        'ordericon':_get_toggle_order_icon(request, "order")}
-    if 'tasks' == variant:
-        tc_order['hidden']='0'
-        del tc_order['clclass']
-
-    tc_recipe={
-        'name':'Recipe',
-        'qhelp':'The name of the recipe to which each task applies',
-        'orderkey' : 'recipe__name',
-        'orderfield': _get_toggle_order(request, "recipe__name"),
-        'ordericon':_get_toggle_order_icon(request, "recipe__name"),
-    }
-    tc_recipe_version={
-        'name':'Recipe version',
-        'qhelp':'The version of the recipe to which each task applies',
-        'clclass': 'recipe_version', 'hidden' : 1,
-    }
-    tc_task={
-        'name':'Task',
-        'qhelp':'The name of the task',
-        'orderfield': _get_toggle_order(request, "task_name"),
-        'ordericon':_get_toggle_order_icon(request, "task_name"),
-        'orderkey' : 'task_name',
-    }
-    tc_executed={
-        'name':'Executed',
-        'qhelp':"This value tells you if a task had to run (executed) in order to generate the task output, or if the output was provided by another task and therefore the task didn't need to run (not executed)",
-        'clclass': 'executed', 'hidden' : 0,
-        'orderfield': _get_toggle_order(request, "task_executed"),
-        'ordericon':_get_toggle_order_icon(request, "task_executed"),
-        'orderkey' : 'task_executed',
-        'filter' : {
-                   'class' : 'executed',
-                   'label': 'Show:',
-                   'options' : [
-                               ('Executed Tasks', 'task_executed:1', queryset_with_search.filter(task_executed=1).count()),
-                               ('Not Executed Tasks', 'task_executed:0', queryset_with_search.filter(task_executed=0).count()),
-                               ]
-                   }
-
-    }
-    tc_outcome={
-        'name':'Outcome',
-        'qhelp':"This column tells you if 'executed' tasks succeeded or failed. The column also tells you why 'not executed' tasks did not need to run",
-        'clclass': 'outcome', 'hidden' : 0,
-        'orderfield': _get_toggle_order(request, "outcome"),
-        'ordericon':_get_toggle_order_icon(request, "outcome"),
-        'orderkey' : 'outcome',
-        'filter' : {
-                   'class' : 'outcome',
-                   'label': 'Show:',
-                   'options' : [
-                               ('Succeeded Tasks', 'outcome:%d'%Task.OUTCOME_SUCCESS, queryset_with_search.filter(outcome=Task.OUTCOME_SUCCESS).count(), "'Succeeded' tasks are those that ran and completed during the build" ),
-                               ('Failed Tasks', 'outcome:%d'%Task.OUTCOME_FAILED, queryset_with_search.filter(outcome=Task.OUTCOME_FAILED).count(), "'Failed' tasks are those that ran but did not complete during the build"),
-                               ('Cached Tasks', 'outcome:%d'%Task.OUTCOME_CACHED, queryset_with_search.filter(outcome=Task.OUTCOME_CACHED).count(), 'Cached tasks restore output from the <code>sstate-cache</code> directory or mirrors'),
-                               ('Prebuilt Tasks', 'outcome:%d'%Task.OUTCOME_PREBUILT, queryset_with_search.filter(outcome=Task.OUTCOME_PREBUILT).count(),'Prebuilt tasks didn\'t need to run because their output was reused from a previous build'),
-                               ('Covered Tasks', 'outcome:%d'%Task.OUTCOME_COVERED, queryset_with_search.filter(outcome=Task.OUTCOME_COVERED).count(), 'Covered tasks didn\'t need to run because their output is provided by another task in this build'),
-                               ('Empty Tasks', 'outcome:%d'%Task.OUTCOME_EMPTY, queryset_with_search.filter(outcome=Task.OUTCOME_EMPTY).count(), 'Empty tasks have no executable content'),
-                               ]
-                   }
-
-    }
-
-    tc_cache={
-        'name':'Cache attempt',
-        'qhelp':'This column tells you if a task tried to restore output from the <code>sstate-cache</code> directory or mirrors, and reports the result: Succeeded, Failed or File not in cache',
-        'clclass': 'cache_attempt', 'hidden' : 0,
-        'orderfield': _get_toggle_order(request, "sstate_result"),
-        'ordericon':_get_toggle_order_icon(request, "sstate_result"),
-        'orderkey' : 'sstate_result',
-        'filter' : {
-                   'class' : 'cache_attempt',
-                   'label': 'Show:',
-                   'options' : [
-                               ('Tasks with cache attempts', 'sstate_result__gt:%d'%Task.SSTATE_NA, queryset_with_search.filter(sstate_result__gt=Task.SSTATE_NA).count(), 'Show all tasks that tried to restore ouput from the <code>sstate-cache</code> directory or mirrors'),
-                               ("Tasks with 'File not in cache' attempts", 'sstate_result:%d'%Task.SSTATE_MISS,  queryset_with_search.filter(sstate_result=Task.SSTATE_MISS).count(), 'Show tasks that tried to restore output, but did not find it in the <code>sstate-cache</code> directory or mirrors'),
-                               ("Tasks with 'Failed' cache attempts", 'sstate_result:%d'%Task.SSTATE_FAILED,  queryset_with_search.filter(sstate_result=Task.SSTATE_FAILED).count(), 'Show tasks that found the required output in the <code>sstate-cache</code> directory or mirrors, but could not restore it'),
-                               ("Tasks with 'Succeeded' cache attempts", 'sstate_result:%d'%Task.SSTATE_RESTORED,  queryset_with_search.filter(sstate_result=Task.SSTATE_RESTORED).count(), 'Show tasks that successfully restored the required output from the <code>sstate-cache</code> directory or mirrors'),
-                               ]
-                   }
-
-    }
-    #if   'tasks' == variant: tc_cache['hidden']='0';
-    tc_time={
-        'name':'Time (secs)',
-        'qhelp':'How long it took the task to finish in seconds',
-        'orderfield': _get_toggle_order(request, "elapsed_time", True),
-        'ordericon':_get_toggle_order_icon(request, "elapsed_time"),
-        'orderkey' : 'elapsed_time',
-        'clclass': 'time_taken', 'hidden' : 1,
-    }
-    if 'buildtime' == variant:
-        tc_time['hidden']='0'
-        del tc_time['clclass']
-        tc_cache['hidden']='1'
-
-    tc_cpu_time_system={
-        'name':'System CPU time (secs)',
-        'qhelp':'Total amount of time spent executing in kernel mode, in ' +
-                'seconds. Note that this time can be greater than the task ' +
-                'time due to parallel execution.',
-        'orderfield': _get_toggle_order(request, "cpu_time_system", True),
-        'ordericon':_get_toggle_order_icon(request, "cpu_time_system"),
-        'orderkey' : 'cpu_time_system',
-        'clclass': 'cpu_time_system', 'hidden' : 1,
-    }
-
-    tc_cpu_time_user={
-        'name':'User CPU time (secs)',
-        'qhelp':'Total amount of time spent executing in user mode, in seconds. ' +
-                'Note that this time can be greater than the task time due to ' +
-                'parallel execution.',
-        'orderfield': _get_toggle_order(request, "cpu_time_user", True),
-        'ordericon':_get_toggle_order_icon(request, "cpu_time_user"),
-        'orderkey' : 'cpu_time_user',
-        'clclass': 'cpu_time_user', 'hidden' : 1,
-    }
-
-    if 'cputime' == variant:
-        tc_cpu_time_system['hidden']='0'
-        tc_cpu_time_user['hidden']='0'
-        del tc_cpu_time_system['clclass']
-        del tc_cpu_time_user['clclass']
-        tc_cache['hidden']='1'
-
-    tc_diskio={
-        'name':'Disk I/O (bytes)',
-        'qhelp':'Number of bytes written to and read from the disk during the task',
-        'orderfield': _get_toggle_order(request, "disk_io", True),
-        'ordericon':_get_toggle_order_icon(request, "disk_io"),
-        'orderkey' : 'disk_io',
-        'clclass': 'disk_io', 'hidden' : 1,
-    }
-    if 'diskio' == variant:
-        tc_diskio['hidden']='0'
-        del tc_diskio['clclass']
-        tc_cache['hidden']='1'
-
-    build = Build.objects.get(pk=build_id)
-
-    context = { 'objectname': variant,
-                'object_search_display': object_search_display,
-                'filter_search_display': filter_search_display,
-                'mainheading': title_variant,
-                'build': build,
-                'project': build.project,
-                'objects': task_objects,
-                'default_orderby' : default_orderby,
-                'search_term': search_term,
-                'total_count': queryset_with_search.count(),
-                'tablecols':[
-                    tc_order,
-                    tc_recipe,
-                    tc_recipe_version,
-                    tc_task,
-                    tc_executed,
-                    tc_outcome,
-                    tc_cache,
-                    tc_time,
-                    tc_cpu_time_system,
-                    tc_cpu_time_user,
-                    tc_diskio,
-                ]}
-
-
-    response = render(request, template, context)
-    _set_parameters_values(pagesize, orderby, request)
-    return response
-
-def tasks(request, build_id):
-    return tasks_common(request, build_id, 'tasks', '')
-
-def tasks_task(request, build_id, task_id):
-    return tasks_common(request, build_id, 'tasks', task_id)
-
-def buildtime(request, build_id):
-    return tasks_common(request, build_id, 'buildtime', '')
-
-def diskio(request, build_id):
-    return tasks_common(request, build_id, 'diskio', '')
-
-def cputime(request, build_id):
-    return tasks_common(request, build_id, 'cputime', '')
-
-def recipes(request, build_id):
-    template = 'recipes.html'
-    (pagesize, orderby) = _get_parameters_values(request, 100, 'name:+')
-    mandatory_parameters = { 'count': pagesize,  'page' : 1, 'orderby' : orderby }
-    retval = _verify_parameters( request.GET, mandatory_parameters )
-    if retval:
-        return _redirect_parameters( 'recipes', request.GET, mandatory_parameters, build_id = build_id)
-    (filter_string, search_term, ordering_string) = _search_tuple(request, Recipe)
-
-    build = Build.objects.get(pk=build_id)
-
-    queryset = build.get_recipes()
-    queryset = _get_queryset(Recipe, queryset, filter_string, search_term, ordering_string, 'name')
-
-    recipes = _build_page_range(Paginator(queryset, pagesize),request.GET.get('page', 1))
-
-    # prefetch the forward and reverse recipe dependencies
-    deps = { }
-    revs = { }
-    queryset_dependency=Recipe_Dependency.objects.filter(recipe__layer_version__build_id = build_id).select_related("depends_on", "recipe")
-    for recipe in recipes:
-        deplist = [ ]
-        for recipe_dep in [x for x in queryset_dependency if x.recipe_id == recipe.id]:
-            deplist.append(recipe_dep)
-        deps[recipe.id] = deplist
-        revlist = [ ]
-        for recipe_dep in [x for x in queryset_dependency if x.depends_on_id == recipe.id]:
-            revlist.append(recipe_dep)
-        revs[recipe.id] = revlist
-
-    context = {
-        'objectname': 'recipes',
-        'build': build,
-        'project': build.project,
-        'objects': recipes,
-        'default_orderby' : 'name:+',
-        'recipe_deps' : deps,
-        'recipe_revs' : revs,
-        'tablecols':[
-            {
-                'name':'Recipe',
-                'qhelp':'Information about a single piece of software, including where to download the source, configuration options, how to compile the source files and how to package the compiled output',
-                'orderfield': _get_toggle_order(request, "name"),
-                'ordericon':_get_toggle_order_icon(request, "name"),
-            },
-            {
-                'name':'Recipe version',
-                'qhelp':'The recipe version and revision',
-            },
-            {
-                'name':'Dependencies',
-                'qhelp':'Recipe build-time dependencies (i.e. other recipes)',
-                'clclass': 'depends_on', 'hidden': 1,
-            },
-            {
-                'name':'Reverse dependencies',
-                'qhelp':'Recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)',
-                'clclass': 'depends_by', 'hidden': 1,
-            },
-            {
-                'name':'Recipe file',
-                'qhelp':'Path to the recipe .bb file',
-                'orderfield': _get_toggle_order(request, "file_path"),
-                'ordericon':_get_toggle_order_icon(request, "file_path"),
-                'orderkey' : 'file_path',
-                'clclass': 'recipe_file', 'hidden': 0,
-            },
-            {
-                'name':'Section',
-                'qhelp':'The section in which recipes should be categorized',
-                'orderfield': _get_toggle_order(request, "section"),
-                'ordericon':_get_toggle_order_icon(request, "section"),
-                'orderkey' : 'section',
-                'clclass': 'recipe_section', 'hidden': 0,
-            },
-            {
-                'name':'License',
-                'qhelp':'The list of source licenses for the recipe. Multiple license names separated by the pipe character indicates a choice between licenses. Multiple license names separated by the ampersand character indicates multiple licenses exist that cover different parts of the source',
-                'orderfield': _get_toggle_order(request, "license"),
-                'ordericon':_get_toggle_order_icon(request, "license"),
-                'orderkey' : 'license',
-                'clclass': 'recipe_license', 'hidden': 0,
-            },
-            {
-                'name':'Layer',
-                'qhelp':'The name of the layer providing the recipe',
-                'orderfield': _get_toggle_order(request, "layer_version__layer__name"),
-                'ordericon':_get_toggle_order_icon(request, "layer_version__layer__name"),
-                'orderkey' : 'layer_version__layer__name',
-                'clclass': 'layer_version__layer__name', 'hidden': 0,
-            },
-            {
-                'name':'Layer branch',
-                'qhelp':'The Git branch of the layer providing the recipe',
-                'orderfield': _get_toggle_order(request, "layer_version__branch"),
-                'ordericon':_get_toggle_order_icon(request, "layer_version__branch"),
-                'orderkey' : 'layer_version__branch',
-                'clclass': 'layer_version__branch', 'hidden': 1,
-            },
-            {
-                'name':'Layer commit',
-                'qhelp':'The Git commit of the layer providing the recipe',
-                'clclass': 'layer_version__layer__commit', 'hidden': 1,
-            },
-            ]
-        }
-
-    response = render(request, template, context)
-    _set_parameters_values(pagesize, orderby, request)
-    return response
-
 def configuration(request, build_id):
     template = 'configuration.html'
 
@@ -1437,7 +915,6 @@
                 },
                 {'name': 'Value',
                  'qhelp': "The value assigned to the variable",
-                 'dclass': "span4",
                 },
                 {'name': 'Set in file',
                  'qhelp': "The last configuration file that touched the variable value",
@@ -1474,96 +951,6 @@
     _set_parameters_values(pagesize, orderby, request)
     return response
 
-def bpackage(request, build_id):
-    template = 'bpackage.html'
-    (pagesize, orderby) = _get_parameters_values(request, 100, 'name:+')
-    mandatory_parameters = { 'count' : pagesize,  'page' : 1, 'orderby' : orderby }
-    retval = _verify_parameters( request.GET, mandatory_parameters )
-    if retval:
-        return _redirect_parameters( 'packages', request.GET, mandatory_parameters, build_id = build_id)
-    (filter_string, search_term, ordering_string) = _search_tuple(request, Package)
-    queryset = Package.objects.filter(build = build_id).filter(size__gte=0)
-    queryset = _get_queryset(Package, queryset, filter_string, search_term, ordering_string, 'name')
-
-    packages = _build_page_range(Paginator(queryset, pagesize),request.GET.get('page', 1))
-
-    build = Build.objects.get( pk = build_id )
-
-    context = {
-        'objectname': 'packages built',
-        'build': build,
-        'project': build.project,
-        'objects' : packages,
-        'default_orderby' : 'name:+',
-        'tablecols':[
-            {
-                'name':'Package',
-                'qhelp':'Packaged output resulting from building a recipe',
-                'orderfield': _get_toggle_order(request, "name"),
-                'ordericon':_get_toggle_order_icon(request, "name"),
-            },
-            {
-                'name':'Package version',
-                'qhelp':'The package version and revision',
-            },
-            {
-                'name':'Size',
-                'qhelp':'The size of the package',
-                'orderfield': _get_toggle_order(request, "size", True),
-                'ordericon':_get_toggle_order_icon(request, "size"),
-                'orderkey' : 'size',
-                'clclass': 'size', 'hidden': 0,
-                'dclass' : 'span2',
-            },
-            {
-                'name':'License',
-                'qhelp':'The license under which the package is distributed. Multiple license names separated by the pipe character indicates a choice between licenses. Multiple license names separated by the ampersand character indicates multiple licenses exist that cover different parts of the source',
-                'orderfield': _get_toggle_order(request, "license"),
-                'ordericon':_get_toggle_order_icon(request, "license"),
-                'orderkey' : 'license',
-                'clclass': 'license', 'hidden': 1,
-            },
-            {
-                'name':'Recipe',
-                'qhelp':'The name of the recipe building the package',
-                'orderfield': _get_toggle_order(request, "recipe__name"),
-                'ordericon':_get_toggle_order_icon(request, "recipe__name"),
-                'orderkey' : 'recipe__name',
-                'clclass': 'recipe__name', 'hidden': 0,
-            },
-            {
-                'name':'Recipe version',
-                'qhelp':'Version and revision of the recipe building the package',
-                'clclass': 'recipe__version', 'hidden': 1,
-            },
-            {
-                'name':'Layer',
-                'qhelp':'The name of the layer providing the recipe that builds the package',
-                'orderfield': _get_toggle_order(request, "recipe__layer_version__layer__name"),
-                'ordericon':_get_toggle_order_icon(request, "recipe__layer_version__layer__name"),
-                'orderkey' : 'recipe__layer_version__layer__name',
-                'clclass': 'recipe__layer_version__layer__name', 'hidden': 1,
-            },
-            {
-                'name':'Layer branch',
-                'qhelp':'The Git branch of the layer providing the recipe that builds the package',
-                'orderfield': _get_toggle_order(request, "recipe__layer_version__branch"),
-                'ordericon':_get_toggle_order_icon(request, "recipe__layer_version__branch"),
-                'orderkey' : 'recipe__layer_version__branch',
-                'clclass': 'recipe__layer_version__branch', 'hidden': 1,
-            },
-            {
-                'name':'Layer commit',
-                'qhelp':'The Git commit of the layer providing the recipe that builds the package',
-                'clclass': 'recipe__layer_version__layer__commit', 'hidden': 1,
-            },
-            ]
-        }
-
-    response = render(request, template, context)
-    _set_parameters_values(pagesize, orderby, request)
-    return response
-
 def bfile(request, build_id, package_id):
     template = 'bfile.html'
     files = Package_File.objects.filter(package = package_id)
@@ -1905,7 +1292,7 @@
     from django.contrib.auth import authenticate, login
     from django.contrib.auth.decorators import login_required
 
-    from orm.models import Branch, LayerSource, ToasterSetting, Release, Machine, LayerVersionDependency
+    from orm.models import LayerSource, ToasterSetting, Release, Machine, LayerVersionDependency
     from bldcontrol.models import BuildRequest
 
     import traceback
@@ -1938,10 +1325,10 @@
                 if ptype == "build":
                     mandatory_fields.append('projectversion')
                 # make sure we have values for all mandatory_fields
-                if reduce( lambda x, y: x or y, map(lambda x: len(request.POST.get(x, '')) == 0, mandatory_fields)):
-                # set alert for missing fields
-                    raise BadParameterException("Fields missing: " +
-            ", ".join([x for x in mandatory_fields if len(request.POST.get(x, '')) == 0 ]))
+                missing = [field for field in mandatory_fields if len(request.POST.get(field, '')) == 0]
+                if missing:
+                    # set alert for missing fields
+                    raise BadParameterException("Fields missing: %s" % ", ".join(missing))
 
                 if not request.user.is_authenticated():
                     user = authenticate(username = request.POST.get('username', '_anonuser'), password = 'nopass')
@@ -1964,7 +1351,8 @@
 
             except (IntegrityError, BadParameterException) as e:
                 # fill in page with previously submitted values
-                map(lambda x: context.__setitem__(x, request.POST.get(x, "-- missing")), mandatory_fields)
+                for field in mandatory_fields:
+                    context.__setitem__(field, request.POST.get(field, "-- missing"))
                 if isinstance(e, IntegrityError) and "username" in str(e):
                     context['alert'] = "Your chosen username is already used"
                 else:
@@ -1973,128 +1361,11 @@
 
         raise Exception("Invalid HTTP method for this page")
 
-
-
     # Shows the edit project page
-    @_template_renderer('project.html')
     def project(request, pid):
-        prj = Project.objects.get(id = pid)
-
-        try:
-            puser = User.objects.get(id = prj.user_id)
-        except User.DoesNotExist:
-            puser = None
-
-        # execute POST requests
-        if request.method == "POST":
-            # add layers
-            if 'layerAdd' in request.POST and len(request.POST['layerAdd']) > 0:
-                for lc in Layer_Version.objects.filter(pk__in=[i for i in request.POST['layerAdd'].split(",") if len(i) > 0]):
-                    ProjectLayer.objects.get_or_create(project = prj, layercommit = lc)
-
-            # remove layers
-            if 'layerDel' in request.POST and len(request.POST['layerDel']) > 0:
-                for t in request.POST['layerDel'].strip().split(" "):
-                    pt = ProjectLayer.objects.filter(project = prj, layercommit_id = int(t)).delete()
-
-            if 'projectName' in request.POST:
-                prj.name = request.POST['projectName']
-                prj.save();
-
-            if 'projectVersion' in request.POST:
-                # If the release is the current project then return now
-                if prj.release.pk == int(request.POST.get('projectVersion',-1)):
-                    return {}
-
-                prj.release = Release.objects.get(pk = request.POST['projectVersion'])
-                # we need to change the bitbake version
-                prj.bitbake_version = prj.release.bitbake_version
-                prj.save()
-                # we need to change the layers
-                for project in prj.projectlayer_set.all():
-                    # find and add a similarly-named layer on the new branch
-                    try:
-                        layer_versions = prj.get_all_compatible_layer_versions()
-                        layer_versions = layer_versions.filter(layer__name = project.layercommit.layer.name)
-                        ProjectLayer.objects.get_or_create(project = prj, layercommit = layer_versions.first())
-                    except IndexError:
-                        pass
-                    finally:
-                        # get rid of the old entry
-                        project.delete()
-
-            if 'machineName' in request.POST:
-                machinevar = prj.projectvariable_set.get(name="MACHINE")
-                machinevar.value=request.POST['machineName']
-                machinevar.save()
-
-
-        # we use implicit knowledge of the current user's project to filter layer information, e.g.
-        pid = prj.id
-
-        from collections import Counter
-        freqtargets = []
-        try:
-            freqtargets += map(lambda x: x.target, reduce(lambda x, y: x + y,   map(lambda x: list(x.target_set.all()), Build.objects.filter(project = prj, outcome__lt = Build.IN_PROGRESS))))
-            freqtargets += map(lambda x: x.target, reduce(lambda x, y: x + y,   map(lambda x: list(x.brtarget_set.all()), BuildRequest.objects.filter(project = prj, state = BuildRequest.REQ_FAILED))))
-        except TypeError:
-            pass
-        freqtargets = Counter(freqtargets)
-        freqtargets = sorted(freqtargets, key = lambda x: freqtargets[x], reverse=True)
-
-        context = {
-            "project" : prj,
-            "lvs_nos" : Layer_Version.objects.all().count(),
-            "completedbuilds": Build.objects.exclude(outcome = Build.IN_PROGRESS).filter(project_id = pid),
-            "prj" : {"name": prj.name, },
-            "buildrequests" : prj.build_set.filter(outcome=Build.IN_PROGRESS),
-            "builds" : Build.get_recent(prj),
-            "layers" :  map(lambda x: {
-                        "id": x.layercommit.pk,
-                        "orderid": x.pk,
-                        "name" : x.layercommit.layer.name,
-                        "vcs_url": x.layercommit.layer.vcs_url,
-                        "vcs_reference" : x.layercommit.get_vcs_reference(),
-                        "url": x.layercommit.layer.layer_index_url,
-                        "layerdetailurl": x.layercommit.get_detailspage_url(prj.pk),
-                # This branch name is actually the release
-                        "branch" : { "name" : x.layercommit.get_vcs_reference(), "layersource" : x.layercommit.up_branch.layer_source.name if x.layercommit.up_branch != None else None}},
-                    prj.projectlayer_set.all().order_by("id")),
-            "targets" : map(lambda x: {"target" : x.target, "task" : x.task, "pk": x.pk}, prj.projecttarget_set.all()),
-            "variables": map(lambda x: (x.name, x.value), prj.projectvariable_set.all()),
-            "freqtargets": freqtargets[:5],
-            "releases": map(lambda x: {"id": x.pk, "name": x.name, "description":x.description}, Release.objects.all()),
-            "project_html": 1,
-            "recipesTypeAheadUrl": reverse('xhr_recipestypeahead', args=(prj.pk,)),
-            "projectBuildsUrl": reverse('projectbuilds', args=(prj.pk,)),
-        }
-
-        if prj.release is not None:
-            context['release'] = { "id": prj.release.pk, "name": prj.release.name, "description": prj.release.description}
-
-
-        try:
-            context["machine"] = {"name": prj.projectvariable_set.get(name="MACHINE").value}
-        except ProjectVariable.DoesNotExist:
-            context["machine"] = None
-        try:
-            context["distro"] = prj.projectvariable_set.get(name="DISTRO").value
-        except ProjectVariable.DoesNotExist:
-            context["distro"] = "-- not set yet"
-
-        return context
-
-    def xhr_response(fun):
-        """
-        Decorator for REST methods.
-        calls jsonfilter on the returned dictionary and returns result
-        as HttpResponse object of content_type application/json
-        """
-        @wraps(fun)
-        def wrapper(*args, **kwds):
-            return HttpResponse(jsonfilter(fun(*args, **kwds)),
-                                content_type="application/json")
-        return wrapper
+        project = Project.objects.get(pk=pid)
+        context = {"project": project}
+        return render(request, "project.html", context)
 
     def jsunittests(request):
         """ Provides a page for the js unit tests """
@@ -2154,8 +1425,7 @@
                     retval.append(project)
 
             return response({"error":"ok",
-                             "rows" : map( _lv_to_dict(prj),
-                                          map(lambda x: x.layercommit, retval ))
+                             "rows": [_lv_to_dict(prj) for y in [x.layercommit for x in retval]]
                             })
 
         except Exception as e:
@@ -2164,11 +1434,16 @@
     def xhr_configvaredit(request, pid):
         try:
             prj = Project.objects.get(id = pid)
+            # There are cases where user can add variables which hold values
+            # like http://, file:/// etc. In such case a simple split(":")
+            # would fail. One example is SSTATE_MIRRORS variable. So we use
+            # max_split var to handle them.
+            max_split = 1
             # add conf variables
             if 'configvarAdd' in request.POST:
                 t=request.POST['configvarAdd'].strip()
                 if ":" in t:
-                    variable, value = t.split(":")
+                    variable, value = t.split(":", max_split)
                 else:
                     variable = t
                     value = ""
@@ -2178,7 +1453,7 @@
             if 'configvarChange' in request.POST:
                 t=request.POST['configvarChange'].strip()
                 if ":" in t:
-                    variable, value = t.split(":")
+                    variable, value = t.split(":", max_split)
                 else:
                     variable = t
                     value = ""
@@ -2201,7 +1476,7 @@
 
             return_data = {
                 "error": "ok",
-                'configvars'   : map(lambda x: (x.name, x.value, x.pk), configvars_query),
+                'configvars': [(x.name, x.value, x.pk) for x in configvars_query]
                }
             try:
                 return_data['distro'] = ProjectVariable.objects.get(project = prj, name = "DISTRO").value,
@@ -2235,10 +1510,10 @@
 
 
     def xhr_importlayer(request):
-        if (not request.POST.has_key('vcs_url') or
-            not request.POST.has_key('name') or
-            not request.POST.has_key('git_ref') or
-            not request.POST.has_key('project_id')):
+        if ('vcs_url' not in request.POST or
+            'name' not in request.POST or
+            'git_ref' not in request.POST or
+            'project_id' not in request.POST):
           return HttpResponse(jsonfilter({"error": "Missing parameters; requires vcs_url, name, git_ref and project_id"}), content_type = "application/json")
 
         layers_added = [];
@@ -2253,18 +1528,12 @@
         prj = Project.objects.get(pk=request.POST['project_id'])
 
         # Strip trailing/leading whitespace from all values
-        # put into a new dict because POST one is immutable
+        # put into a new dict because POST one is immutable.
         post_data = dict()
-        for key,val in request.POST.iteritems():
+        for key,val in request.POST.items():
           post_data[key] = val.strip()
 
 
-        # We need to know what release the current project is so that we
-        # can set the imported layer's up_branch_id
-        prj_branch_name = Release.objects.get(pk=prj.release_id).branch_name
-        up_branch, branch_created = Branch.objects.get_or_create(name=prj_branch_name, layer_source_id=LayerSource.TYPE_IMPORTED)
-
-        layer_source = LayerSource.objects.get(sourcetype=LayerSource.TYPE_IMPORTED)
         try:
             layer, layer_created = Layer.objects.get_or_create(name=post_data['name'])
         except MultipleObjectsReturned:
@@ -2272,8 +1541,8 @@
 
         if layer:
             if layer_created:
-                layer.layer_source = layer_source
-                layer.vcs_url = post_data['vcs_url']
+                layer.vcs_url = post_data.get('vcs_url')
+                layer.local_source_dir = post_data.get('local_source_dir')
                 layer.up_date = timezone.now()
                 layer.save()
             else:
@@ -2283,18 +1552,30 @@
                 if layer.vcs_url != post_data['vcs_url']:
                     return HttpResponse(jsonfilter({"error": "hint-layer-exists-with-different-url" , "current_url" : layer.vcs_url, "current_id": layer.id }), content_type = "application/json")
 
-
-            layer_version, version_created = Layer_Version.objects.get_or_create(layer_source=layer_source, layer=layer, project=prj, up_branch_id=up_branch.id,branch=post_data['git_ref'],  commit=post_data['git_ref'], dirpath=post_data['dir_path'])
+            layer_version, version_created = \
+                Layer_Version.objects.get_or_create(
+                        layer_source=LayerSource.TYPE_IMPORTED,
+                        layer=layer, project=prj,
+                        release=prj.release,
+                        branch=post_data['git_ref'],
+                        commit=post_data['git_ref'],
+                        dirpath=post_data['dir_path'])
 
             if layer_version:
                 if not version_created:
-                    return HttpResponse(jsonfilter({"error": "hint-layer-version-exists", "existing_layer_version": layer_version.id }), content_type = "application/json")
+                    return HttpResponse(jsonfilter({"error":
+                                                    "hint-layer-version-exists",
+                                                    "existing_layer_version":
+                                                    layer_version.id }),
+                                        content_type = "application/json")
+
+                layer_version.layer_source = LayerSource.TYPE_IMPORTED
 
                 layer_version.up_date = timezone.now()
                 layer_version.save()
 
                 # Add the dependencies specified for this new layer
-                if (post_data.has_key("layer_deps") and
+                if ('layer_deps' in post_data and
                     version_created and
                     len(post_data["layer_deps"]) > 0):
                     for layer_dep_id in post_data["layer_deps"].split(","):
@@ -2343,231 +1624,6 @@
 
         return HttpResponse(jsonfilter(json_response), content_type = "application/json")
 
-    def xhr_updatelayer(request):
-
-        def error_response(error):
-            return HttpResponse(jsonfilter({"error": error}), content_type = "application/json")
-
-        if not request.POST.has_key("layer_version_id"):
-            return error_response("Please specify a layer version id")
-        try:
-            layer_version_id = request.POST["layer_version_id"]
-            layer_version = Layer_Version.objects.get(id=layer_version_id)
-        except Layer_Version.DoesNotExist:
-            return error_response("Cannot find layer to update")
-
-
-        if request.POST.has_key("vcs_url"):
-            layer_version.layer.vcs_url = request.POST["vcs_url"]
-        if request.POST.has_key("dirpath"):
-            layer_version.dirpath = request.POST["dirpath"]
-        if request.POST.has_key("commit"):
-            layer_version.commit = request.POST["commit"]
-        if request.POST.has_key("up_branch"):
-            layer_version.up_branch_id = int(request.POST["up_branch"])
-
-        if request.POST.has_key("add_dep"):
-            lvd = LayerVersionDependency(layer_version=layer_version, depends_on_id=request.POST["add_dep"])
-            lvd.save()
-
-        if request.POST.has_key("rm_dep"):
-            rm_dep = LayerVersionDependency.objects.get(layer_version=layer_version, depends_on_id=request.POST["rm_dep"])
-            rm_dep.delete()
-
-        if request.POST.has_key("summary"):
-            layer_version.layer.summary = request.POST["summary"]
-        if request.POST.has_key("description"):
-            layer_version.layer.description = request.POST["description"]
-
-        try:
-            layer_version.layer.save()
-            layer_version.save()
-        except Exception as e:
-            return error_response("Could not update layer version entry: %s" % e)
-
-        return HttpResponse(jsonfilter({"error": "ok",}), content_type = "application/json")
-
-    @xhr_response
-    def xhr_customrecipe(request):
-        """
-        Custom image recipe REST API
-
-        Entry point: /xhr_customrecipe/
-        Method: POST
-
-        Args:
-            name: name of custom recipe to create
-            project: target project id of orm.models.Project
-            base: base recipe id of orm.models.Recipe
-
-        Returns:
-            {"error": "ok",
-             "url": <url of the created recipe>}
-            or
-            {"error": <error message>}
-        """
-        # check if request has all required parameters
-        for param in ('name', 'project', 'base'):
-            if param not in request.POST:
-                return {"error": "Missing parameter '%s'" % param}
-
-        # get project and baserecipe objects
-        params = {}
-        for name, model in [("project", Project),
-                            ("base", Recipe)]:
-            value = request.POST[name]
-            try:
-                params[name] = model.objects.get(id=value)
-            except model.DoesNotExist:
-                return {"error": "Invalid %s id %s" % (name, value)}
-
-        # create custom recipe
-        try:
-
-            # Only allowed chars in name are a-z, 0-9 and -
-            if re.search(r'[^a-z|0-9|-]', request.POST["name"]):
-                return {"error": "invalid-name"}
-
-            custom_images = CustomImageRecipe.objects.all()
-
-            # Are there any recipes with this name already in our project?
-            existing_image_recipes_in_project = custom_images.filter(
-                name=request.POST["name"], project=params["project"])
-
-            if existing_image_recipes_in_project.count() > 0:
-                return {"error": "image-already-exists"}
-
-            # Are there any recipes with this name which aren't custom
-            # image recipes?
-            custom_image_ids = custom_images.values_list('id', flat=True)
-            existing_non_image_recipes = Recipe.objects.filter(
-                Q(name=request.POST["name"]) & ~Q(pk__in=custom_image_ids)
-            )
-
-            if existing_non_image_recipes.count() > 0:
-                return {"error": "recipe-already-exists"}
-
-            # create layer 'Custom layer' and verion if needed
-            layer = Layer.objects.get_or_create(
-                name=CustomImageRecipe.LAYER_NAME,
-                summary="Layer for custom recipes",
-                vcs_url="file:///toaster_created_layer")[0]
-
-            # Check if we have a layer version already
-            # We don't use get_or_create here because the dirpath will change
-            # and is a required field
-            lver = Layer_Version.objects.filter(Q(project=params['project']) &
-                                                Q(layer=layer) &
-                                                Q(build=None)).last()
-            if lver == None:
-                lver, created = Layer_Version.objects.get_or_create(
-                    project=params['project'],
-                    layer=layer,
-                    dirpath="toaster_created_layer")
-
-            # Add a dependency on our layer to the base recipe's layer
-            LayerVersionDependency.objects.get_or_create(
-                layer_version=lver,
-                depends_on=params["base"].layer_version)
-
-            # Add it to our current project if needed
-            ProjectLayer.objects.get_or_create(project=params['project'],
-                                               layercommit=lver,
-                                               optional=False)
-
-            # Create the actual recipe
-            recipe, created = CustomImageRecipe.objects.get_or_create(
-                name=request.POST["name"],
-                base_recipe=params["base"],
-                project=params["project"],
-                layer_version=lver,
-                is_image=True)
-
-            # If we created the object then setup these fields. They may get
-            # overwritten later on and cause the get_or_create to create a
-            # duplicate if they've changed.
-            if created:
-                recipe.file_path = request.POST["name"]
-                recipe.license = "MIT"
-                recipe.version = "0.1"
-                recipe.save()
-
-        except Error as err:
-            return {"error": "Can't create custom recipe: %s" % err}
-
-        # Find the package list from the last build of this recipe/target
-        target = Target.objects.filter(Q(build__outcome=Build.SUCCEEDED) &
-                                       Q(build__project=params['project']) &
-                                       (Q(target=params['base'].name) |
-                                        Q(target=recipe.name))).last()
-        if target:
-            # Copy in every package
-            # We don't want these packages to be linked to anything because
-            # that underlying data may change e.g. delete a build
-            for tpackage in target.target_installed_package_set.all():
-                try:
-                    built_package = tpackage.package
-                    # The package had no recipe information so is a ghost
-                    # package skip it
-                    if built_package.recipe == None:
-                        continue;
-
-                    config_package = CustomImagePackage.objects.get(
-                        name=built_package.name)
-
-                    recipe.includes_set.add(config_package)
-                except Exception as e:
-                    logger.warning("Error adding package %s %s" %
-                                   (tpackage.package.name, e))
-                    pass
-
-        return {"error": "ok",
-                "packages" : recipe.get_all_packages().count(),
-                "url": reverse('customrecipe', args=(params['project'].pk,
-                                                     recipe.id))}
-
-    @xhr_response
-    def xhr_customrecipe_id(request, recipe_id):
-        """
-        Set of ReST API processors working with recipe id.
-
-        Entry point: /xhr_customrecipe/<recipe_id>
-
-        Methods:
-            GET - Get details of custom image recipe
-            DELETE - Delete custom image recipe
-
-        Returns:
-            GET:
-            {"error": "ok",
-             "info": dictionary of field name -> value pairs
-                     of the CustomImageRecipe model}
-            DELETE:
-            {"error": "ok"}
-            or
-            {"error": <error message>}
-        """
-        try:
-            custom_recipe = CustomImageRecipe.objects.get(id=recipe_id)
-        except CustomImageRecipe.DoesNotExist:
-            return {"error": "Custom recipe with id=%s "
-                             "not found" % recipe_id}
-
-        if request.method == 'GET':
-            info = {"id" : custom_recipe.id,
-                    "name" : custom_recipe.name,
-                    "base_recipe_id": custom_recipe.base_recipe.id,
-                    "project_id": custom_recipe.project.id,
-                   }
-
-            return {"error": "ok", "info": info}
-
-        elif request.method == 'DELETE':
-            custom_recipe.delete()
-            return {"error": "ok"}
-        else:
-            return {"error": "Method %s is not supported" % request.method}
-
     def customrecipe_download(request, pid, recipe_id):
         recipe = get_object_or_404(CustomImageRecipe, pk=recipe_id)
 
@@ -2580,230 +1636,6 @@
 
         return response
 
-    def _traverse_dependents(next_package_id, rev_deps, all_current_packages, tree_level=0):
-        """
-        Recurse through reverse dependency tree for next_package_id.
-        Limit the reverse dependency search to packages not already scanned,
-        that is, not already in rev_deps.
-        Limit the scan to a depth (tree_level) not exceeding the count of
-        all packages in the custom image, and if that depth is exceeded
-        return False, pop out of the recursion, and write a warning
-        to the log, but this is unlikely, suggesting a dependency loop
-        not caught by bitbake.
-        On return, the input/output arg rev_deps is appended with queryset
-        dictionary elements, annotated for use in the customimage template.
-        The list has unsorted, but unique elements.
-        """
-        max_dependency_tree_depth = all_current_packages.count()
-        if tree_level >= max_dependency_tree_depth:
-            logger.warning(
-                "The number of reverse dependencies "
-                "for this package exceeds " + max_dependency_tree_depth +
-                " and the remaining reverse dependencies will not be removed")
-            return True
-
-        package = CustomImagePackage.objects.get(id=next_package_id)
-        dependents = \
-            package.package_dependencies_target.annotate(
-                name=F('package__name'),
-                pk=F('package__pk'),
-                size=F('package__size'),
-            ).values("name", "pk", "size").exclude(
-                ~Q(pk__in=all_current_packages)
-            )
-
-        for pkg in dependents:
-            if pkg in rev_deps:
-                # already seen, skip dependent search
-                continue
-
-            rev_deps.append(pkg)
-            if (_traverse_dependents(
-                pkg["pk"], rev_deps, all_current_packages, tree_level+1)):
-                return True
-
-        return False
-
-    def _get_all_dependents(package_id, all_current_packages):
-        """
-        Returns sorted list of recursive reverse dependencies for package_id,
-        as a list of dictionary items, by recursing through dependency
-        relationships.
-        """
-        rev_deps = []
-        _traverse_dependents(package_id, rev_deps, all_current_packages)
-        rev_deps = sorted(rev_deps, key=lambda x: x["name"])
-        return rev_deps
-
-    @xhr_response
-    def xhr_customrecipe_packages(request, recipe_id, package_id):
-        """
-        ReST API to add/remove packages to/from custom recipe.
-
-        Entry point: /xhr_customrecipe/<recipe_id>/packages/<package_id>
-
-        Methods:
-            PUT - Add package to the recipe
-            DELETE - Delete package from the recipe
-            GET - Get package information
-
-        Returns:
-            {"error": "ok"}
-            or
-            {"error": <error message>}
-        """
-        try:
-            recipe = CustomImageRecipe.objects.get(id=recipe_id)
-        except CustomImageRecipe.DoesNotExist:
-            return {"error": "Custom recipe with id=%s "
-                             "not found" % recipe_id}
-
-        if package_id:
-            try:
-                package = CustomImagePackage.objects.get(id=package_id)
-            except Package.DoesNotExist:
-                return {"error": "Package with id=%s "
-                        "not found" % package_id}
-
-        if request.method == 'GET':
-            # If no package_id then list the current packages
-            if not package_id:
-                total_size = 0
-                packages = recipe.get_all_packages().values("id",
-                                                            "name",
-                                                            "version",
-                                                            "size")
-                for package in packages:
-                    package['size_formatted'] = \
-                            filtered_filesizeformat(package['size'])
-                    total_size += package['size']
-
-                return {"error": "ok",
-                        "packages" : list(packages),
-                        "total" : len(packages),
-                        "total_size" : total_size,
-                        "total_size_formatted" :
-                        filtered_filesizeformat(total_size)
-                       }
-            else:
-                all_current_packages = recipe.get_all_packages()
-
-                # Dependencies for package which aren't satisfied by the
-                # current packages in the custom image recipe
-                deps = package.package_dependencies_source.annotate(
-                    name=F('depends_on__name'),
-                    pk=F('depends_on__pk'),
-                    size=F('depends_on__size'),
-                ).values("name", "pk", "size").filter(
-                    # There are two depends types we don't know why
-                    (Q(dep_type=Package_Dependency.TYPE_TRDEPENDS) |
-                    Q(dep_type=Package_Dependency.TYPE_RDEPENDS)) &
-                    ~Q(pk__in=all_current_packages)
-                )
-
-                # Reverse dependencies which are needed by packages that are
-                # in the image. Recursive search providing all dependents,
-                # not just immediate dependents.
-                reverse_deps = _get_all_dependents(package_id, all_current_packages)
-                total_size_deps = 0
-                total_size_reverse_deps = 0
-
-                for dep in deps:
-                    dep['size_formatted'] = \
-                            filtered_filesizeformat(dep['size'])
-                    total_size_deps += dep['size']
-
-                for dep in reverse_deps:
-                    dep['size_formatted'] = \
-                            filtered_filesizeformat(dep['size'])
-                    total_size_reverse_deps += dep['size']
-
-
-                return {"error": "ok",
-                        "id": package.pk,
-                        "name": package.name,
-                        "version": package.version,
-                        "unsatisfied_dependencies": list(deps),
-                        "unsatisfied_dependencies_size": total_size_deps,
-                        "unsatisfied_dependencies_size_formatted":
-                        filtered_filesizeformat(total_size_deps),
-                        "reverse_dependencies": list(reverse_deps),
-                        "reverse_dependencies_size": total_size_reverse_deps,
-                        "reverse_dependencies_size_formatted":
-                        filtered_filesizeformat(total_size_reverse_deps)}
-
-        included_packages = recipe.includes_set.values_list('pk', flat=True)
-
-        if request.method == 'PUT':
-            # If we're adding back a package which used to be included in this
-            # image all we need to do is remove it from the excludes
-            if package.pk in included_packages:
-                try:
-                   recipe.excludes_set.remove(package)
-                   return {"error": "ok"}
-                except Package.DoesNotExist:
-                   return {"error":
-                           "Package %s not found in excludes but was in "
-                           "included list" % package.name}
-
-            else:
-                recipe.appends_set.add(package)
-                # Make sure that package is not in the excludes set
-                try:
-                    recipe.excludes_set.remove(package)
-                except:
-                    pass
-                # Add the dependencies we think will be added to the recipe
-                # as a result of appending this package.
-                # TODO this should recurse down the entire deps tree
-                for dep in package.package_dependencies_source.all_depends():
-                    try:
-                        cust_package = CustomImagePackage.objects.get(
-                                           name=dep.depends_on.name)
-
-                        recipe.includes_set.add(cust_package)
-                        try:
-                            # When adding the pre-requisite package, make
-                            # sure it's not in the excluded list from a
-                            # prior removal.
-                            recipe.excludes_set.remove(cust_package)
-                        except Package.DoesNotExist:
-                            # Don't care if the package had never been excluded
-                            pass
-                    except:
-                        logger.warning("Could not add package's suggested"
-                                       "dependencies to the list")
-
-            return {"error": "ok"}
-
-        elif request.method == 'DELETE':
-            try:
-                # If we're deleting a package which is included we need to
-                # Add it to the excludes list.
-                if package.pk in included_packages:
-                    recipe.excludes_set.add(package)
-                else:
-                    recipe.appends_set.remove(package)
-                all_current_packages = recipe.get_all_packages()
-                reverse_deps_dictlist = _get_all_dependents(package.pk, all_current_packages)
-                ids = [entry['pk'] for entry in reverse_deps_dictlist]
-                reverse_deps = CustomImagePackage.objects.filter(id__in=ids)
-                for r in reverse_deps:
-                    try:
-                        if r.id in included_packages:
-                            recipe.excludes_set.add(r)
-                        else:
-                            recipe.appends_set.remove(r)
-                    except:
-                        pass
-
-                return {"error": "ok"}
-            except CustomImageRecipe.DoesNotExist:
-                return {"error": "Tried to remove package that wasn't present"}
-
-        else:
-            return {"error": "Method %s is not supported" % request.method}
-
     def importlayer(request, pid):
         template = "importlayer.html"
         context = {
@@ -2811,20 +1643,33 @@
         }
         return render(request, template, context)
 
+    # TODO merge with api pseudo api here is used for deps modal
     @_template_renderer('layerdetails.html')
     def layerdetails(request, pid, layerid):
         project = Project.objects.get(pk=pid)
         layer_version = Layer_Version.objects.get(pk=layerid)
 
-        context = {'project' : project,
-            'layerversion' : layer_version,
-            'layerdeps' : {"list": [{"id": dep.id,
-                "name": dep.layer.name,
-                "layerdetailurl": reverse('layerdetails', args=(pid, dep.pk)),
-                "vcs_url": dep.layer.vcs_url,
-                "vcs_reference": dep.get_vcs_reference()} \
-                for dep in layer_version.get_alldeps(project.id)]},
-            'projectlayers': map(lambda prjlayer: prjlayer.layercommit.id, ProjectLayer.objects.filter(project=project))
+        project_layers = ProjectLayer.objects.filter(
+            project=project).values_list("layercommit_id",
+                                         flat=True)
+
+        context = {
+            'project': project,
+            'layer_source': LayerSource.types_dict(),
+            'layerversion': layer_version,
+            'layerdeps': {
+                "list": [
+                    {
+                        "id": dep.id,
+                        "name": dep.layer.name,
+                        "layerdetailurl": reverse('layerdetails',
+                                                  args=(pid, dep.pk)),
+                        "vcs_url": dep.layer.vcs_url,
+                        "vcs_reference": dep.get_vcs_reference()
+                    }
+                    for dep in layer_version.get_alldeps(project.id)]
+            },
+            'projectlayers': list(project_layers)
         }
 
         return context
@@ -2839,7 +1684,7 @@
         vars_blacklist  = {
             'PARALLEL_MAKE','BB_NUMBER_THREADS',
             'BB_DISKMON_DIRS','BB_NUMBER_THREADS','CVS_PROXY_HOST','CVS_PROXY_PORT',
-            'PARALLEL_MAKE','SSTATE_MIRRORS','TMPDIR',
+            'PARALLEL_MAKE','TMPDIR',
             'all_proxy','ftp_proxy','http_proxy ','https_proxy'
             }
 
@@ -2887,7 +1732,7 @@
             else:
                 context['dl_dir'] = ProjectVariable.objects.get(project = prj, name = "DL_DIR").value
             context['dl_dir_defined'] = "1"
-        except ProjectVariable.DoesNotExist,BuildEnvironment.DoesNotExist:
+        except (ProjectVariable.DoesNotExist, BuildEnvironment.DoesNotExist):
             pass
         try:
             context['fstypes'] =  ProjectVariable.objects.get(project = prj, name = "IMAGE_FSTYPES").value
@@ -2915,7 +1760,7 @@
             else:
                 context['sstate_dir'] = ProjectVariable.objects.get(project = prj, name = "SSTATE_DIR").value
             context['sstate_dir_defined'] = "1"
-        except ProjectVariable.DoesNotExist, BuildEnvironment.DoesNotExist:
+        except (ProjectVariable.DoesNotExist, BuildEnvironment.DoesNotExist):
             pass
 
         return context
@@ -2936,12 +1781,20 @@
         elif artifact_type == "imagefile":
             file_name = Target_Image_File.objects.get(target__build = build, pk = artifact_id).file_name
 
-        elif artifact_type == "buildartifact":
-            file_name = BuildArtifact.objects.get(build = build, pk = artifact_id).file_name
+        elif artifact_type == "targetkernelartifact":
+            target = TargetKernelFile.objects.get(pk=artifact_id)
+            file_name = target.file_name
+
+        elif artifact_type == "targetsdkartifact":
+            target = TargetSDKFile.objects.get(pk=artifact_id)
+            file_name = target.file_name
 
         elif artifact_type == "licensemanifest":
             file_name = Target.objects.get(build = build, pk = artifact_id).license_manifest_path
 
+        elif artifact_type == "packagemanifest":
+            file_name = Target.objects.get(build = build, pk = artifact_id).package_manifest_path
+
         elif artifact_type == "tasklogfile":
             file_name = Task.objects.get(build = build, pk = artifact_id).logfile
 
@@ -2967,7 +1820,7 @@
             )
 
             if file_name and response_file_name:
-                fsock = open(file_name, "r")
+                fsock = open(file_name, "rb")
                 content_type = MimeTypeFinder.get_mimetype(file_name)
 
                 response = HttpResponse(fsock, content_type = content_type)
@@ -2978,5 +1831,5 @@
                 return response
             else:
                 return render(request, "unavailable_artifact.html")
-        except ObjectDoesNotExist, IOError:
+        except (ObjectDoesNotExist, IOError):
             return render(request, "unavailable_artifact.html")
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/widgets.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/widgets.py
index d2ef5d3..026903d 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/widgets.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastergui/widgets.py
@@ -22,30 +22,41 @@
 from django.views.generic import View, TemplateView
 from django.views.decorators.cache import cache_control
 from django.shortcuts import HttpResponse
-from django.http import HttpResponseBadRequest
-from django.core import serializers
 from django.core.cache import cache
 from django.core.paginator import Paginator, EmptyPage
 from django.db.models import Q
-from orm.models import Project, ProjectLayer, Layer_Version
+from orm.models import Project, Build
 from django.template import Context, Template
+from django.template import VariableDoesNotExist
+from django.template import TemplateSyntaxError
 from django.core.serializers.json import DjangoJSONEncoder
 from django.core.exceptions import FieldError
-from django.conf.urls import url, patterns
+from django.utils import timezone
+from toastergui.templatetags.projecttags import sectohms, get_tasks
+from toastergui.templatetags.projecttags import json as template_json
+from django.http import JsonResponse
+from django.core.urlresolvers import reverse
 
 import types
 import json
 import collections
-import operator
 import re
-import urllib
+
+try:
+    from urllib import unquote_plus
+except ImportError:
+    from urllib.parse import unquote_plus
 
 import logging
 logger = logging.getLogger("toaster")
 
-from toastergui.views import objtojson
 from toastergui.tablefilter import TableFilterMap
 
+
+class NoFieldOrDataName(Exception):
+    pass
+
+
 class ToasterTable(TemplateView):
     def __init__(self, *args, **kwargs):
         super(ToasterTable, self).__init__()
@@ -63,25 +74,20 @@
         self.empty_state = "Sorry - no data found"
         self.default_orderby = ""
 
-        # add the "id" column, undisplayable, by default
-        self.add_column(title="Id",
-                        displayable=False,
-                        orderable=True,
-                        field_name="id")
-
     # prevent HTTP caching of table data
-    @cache_control(must_revalidate=True, max_age=0, no_store=True, no_cache=True)
+    @cache_control(must_revalidate=True,
+                   max_age=0, no_store=True, no_cache=True)
     def dispatch(self, *args, **kwargs):
         return super(ToasterTable, self).dispatch(*args, **kwargs)
 
     def get_context_data(self, **kwargs):
         context = super(ToasterTable, self).get_context_data(**kwargs)
         context['title'] = self.title
-        context['table_name'] =  type(self).__name__.lower()
+        context['table_name'] = type(self).__name__.lower()
+        context['empty_state'] = self.empty_state
 
         return context
 
-
     def get(self, request, *args, **kwargs):
         if request.GET.get('format', None) == 'json':
 
@@ -102,8 +108,6 @@
         return super(ToasterTable, self).get(request, *args, **kwargs)
 
     def get_filter_info(self, request, **kwargs):
-        data = None
-
         self.setup_filters(**kwargs)
 
         search = request.GET.get("search", None)
@@ -117,13 +121,18 @@
                           cls=DjangoJSONEncoder)
 
     def setup_columns(self, *args, **kwargs):
-        """ function to implement in the subclass which sets up the columns """
+        """ function to implement in the subclass which sets up
+        the columns """
         pass
+
     def setup_filters(self, *args, **kwargs):
-        """ function to implement in the subclass which sets up the filters """
+        """ function to implement in the subclass which sets up the
+        filters """
         pass
+
     def setup_queryset(self, *args, **kwargs):
-        """ function to implement in the subclass which sets up the queryset"""
+        """ function to implement in the subclass which sets up the
+        queryset"""
         pass
 
     def add_filter(self, table_filter):
@@ -137,7 +146,6 @@
     def add_column(self, title="", help_text="",
                    orderable=False, hideable=True, hidden=False,
                    field_name="", filter_name=None, static_data_name=None,
-                   displayable=True, computation=None,
                    static_data_template=None):
         """Add a column to the table.
 
@@ -155,18 +163,15 @@
                 as data
         """
 
-        self.columns.append({'title' : title,
-                             'help_text' : help_text,
-                             'orderable' : orderable,
-                             'hideable' : hideable,
-                             'hidden' : hidden,
-                             'field_name' : field_name,
-                             'filter_name' : filter_name,
+        self.columns.append({'title': title,
+                             'help_text': help_text,
+                             'orderable': orderable,
+                             'hideable': hideable,
+                             'hidden': hidden,
+                             'field_name': field_name,
+                             'filter_name': filter_name,
                              'static_data_name': static_data_name,
-                             'static_data_template': static_data_template,
-                             'displayable': displayable,
-                             'computation': computation,
-                            })
+                             'static_data_template': static_data_template})
 
     def set_column_hidden(self, title, hidden):
         """
@@ -190,8 +195,8 @@
         """Utility function to render the static data template"""
 
         context = {
-          'extra' : self.static_context_extra,
-          'data' : row,
+          'extra': self.static_context_extra,
+          'data': row,
         }
 
         context = Context(context)
@@ -216,7 +221,7 @@
 
         try:
             filter_name, action_name = filters.split(':')
-            action_params = urllib.unquote_plus(filter_value)
+            action_params = unquote_plus(filter_value)
         except ValueError:
             return
 
@@ -241,20 +246,25 @@
 
         if not hasattr(self.queryset.model, 'search_allowed_fields'):
             raise Exception("Search fields aren't defined in the model %s"
-                           % self.queryset.model)
+                            % self.queryset.model)
 
-        search_queries = []
+        search_queries = None
         for st in search_term.split(" "):
-            q_map = [Q(**{field + '__icontains': st})
-                     for field in self.queryset.model.search_allowed_fields]
+            queries = None
+            for field in self.queryset.model.search_allowed_fields:
+                query = Q(**{field + '__icontains': st})
+                if queries:
+                    queries |= query
+                else:
+                    queries = query
 
-            search_queries.append(reduce(operator.or_, q_map))
-
-        search_queries = reduce(operator.and_, search_queries)
+            if search_queries:
+               search_queries &= queries
+            else:
+               search_queries = queries
 
         self.queryset = self.queryset.filter(search_queries)
 
-
     def get_data(self, request, **kwargs):
         """
         Returns the data for the page requested with the specified
@@ -262,7 +272,8 @@
 
         filters: filter and action name, e.g. "outcome:build_succeeded"
         filter_value: value to pass to the named filter+action, e.g. "on"
-        (for a toggle filter) or "2015-12-11,2015-12-12" (for a date range filter)
+        (for a toggle filter) or "2015-12-11,2015-12-12"
+        (for a date range filter)
         """
 
         page_num = request.GET.get("page", 1)
@@ -276,12 +287,12 @@
         # Make a unique cache name
         cache_name = self.__class__.__name__
 
-        for key, val in request.GET.iteritems():
+        for key, val in request.GET.items():
             if key == 'nocache':
                 continue
             cache_name = cache_name + str(key) + str(val)
 
-        for key, val in kwargs.iteritems():
+        for key, val in kwargs.items():
             cache_name = cache_name + str(key) + str(val)
 
         # No special chars allowed in the cache name apart from dash
@@ -313,16 +324,16 @@
             page = paginator.page(1)
 
         data = {
-            'total' : self.queryset.count(),
-            'default_orderby' : self.default_orderby,
-            'columns' : self.columns,
-            'rows' : [],
-            'error' : "ok",
+            'total': self.queryset.count(),
+            'default_orderby': self.default_orderby,
+            'columns': self.columns,
+            'rows': [],
+            'error': "ok",
         }
 
         try:
-            for row in page.object_list:
-                #Use collection to maintain the order
+            for model_obj in page.object_list:
+                # Use collection to maintain the order
                 required_data = collections.OrderedDict()
 
                 for col in self.columns:
@@ -330,44 +341,73 @@
                     if not field:
                         field = col['static_data_name']
                     if not field:
-                        raise Exception("Must supply a field_name or static_data_name for column %s.%s" % (self.__class__.__name__,col))
+                        raise NoFieldOrDataName("Must supply a field_name or"
+                                                "static_data_name for column"
+                                                "%s.%s" %
+                                                (self.__class__.__name__, col)
+                                                )
+
                     # Check if we need to process some static data
                     if "static_data_name" in col and col['static_data_name']:
-                        required_data["static:%s" % col['static_data_name']] = self.render_static_data(col['static_data_template'], row)
-
                         # Overwrite the field_name with static_data_name
                         # so that this can be used as the html class name
-
                         col['field_name'] = col['static_data_name']
 
-                    # compute the computation on the raw data if needed
-                    model_data = row
-                    if col['computation']:
-                        model_data = col['computation'](row)
-                    else:
-                        # Traverse to any foriegn key in the object hierachy
-                        for subfield in field.split("__"):
-                            if hasattr(model_data, subfield):
-                                model_data = getattr(model_data, subfield)
-                        # The field could be a function on the model so check
-                        # If it is then call it
-                        if isinstance(model_data, types.MethodType):
-                          model_data = model_data()
+                        try:
+                            # Render the template given
+                            required_data[col['static_data_name']] = \
+                                    self.render_static_data(
+                                        col['static_data_template'], model_obj)
+                        except (TemplateSyntaxError,
+                                VariableDoesNotExist) as e:
+                            logger.error("could not render template code"
+                                         "%s %s %s",
+                                         col['static_data_template'],
+                                         e, self.__class__.__name__)
+                            required_data[col['static_data_name']] =\
+                                '<!--error-->'
 
-                    required_data[col['field_name']] = model_data
+                    else:
+                        # Traverse to any foriegn key in the field
+                        # e.g. recipe__layer_version__name
+                        model_data = None
+
+                        if "__" in field:
+                            for subfield in field.split("__"):
+                                if not model_data:
+                                    # The first iteration is always going to
+                                    # be on the actual model object instance.
+                                    # Subsequent ones are on the result of
+                                    # that. e.g. forieng key objects
+                                    model_data = getattr(model_obj,
+                                                         subfield)
+                                else:
+                                    model_data = getattr(model_data,
+                                                         subfield)
+
+                        else:
+                            model_data = getattr(model_obj,
+                                                 col['field_name'])
+
+                        # We might have a model function as the field so
+                        # call it to return the data needed
+                        if isinstance(model_data, types.MethodType):
+                            model_data = model_data()
+
+                        required_data[col['field_name']] = model_data
 
                 data['rows'].append(required_data)
 
         except FieldError:
             # pass  it to the user - programming-error here
             raise
-        data = json.dumps(data, indent=2, default=objtojson)
+
+        data = json.dumps(data, indent=2, cls=DjangoJSONEncoder)
         cache.set(cache_name, data, 60*30)
 
         return data
 
 
-
 class ToasterTypeAhead(View):
     """ A typeahead mechanism to support the front end typeahead widgets """
     MAX_RESULTS = 6
@@ -388,34 +428,142 @@
         error = "ok"
 
         search_term = request.GET.get("search", None)
-        if search_term == None:
+        if search_term is None:
             # We got no search value so return empty reponse
-            return response({'error' : error , 'results': []})
+            return response({'error': error, 'results': []})
 
         try:
             prj = Project.objects.get(pk=kwargs['pid'])
         except KeyError:
             prj = None
 
-        results = self.apply_search(search_term, prj, request)[:ToasterTypeAhead.MAX_RESULTS]
+        results = self.apply_search(search_term,
+                                    prj,
+                                    request)[:ToasterTypeAhead.MAX_RESULTS]
 
         if len(results) > 0:
             try:
                 self.validate_fields(results[0])
-            except MissingFieldsException as e:
+            except self.MissingFieldsException as e:
                 error = e
 
-        data = { 'results' : results,
-                'error' : error,
-               }
+        data = {'results': results,
+                'error': error}
 
         return response(data)
 
     def validate_fields(self, result):
-        if 'name' in result == False or 'detail' in result == False:
-            raise MissingFieldsException("name and detail are required fields")
+        if 'name' in result is False or 'detail' in result is False:
+            raise self.MissingFieldsException(
+                "name and detail are required fields")
 
     def apply_search(self, search_term, prj):
         """ Override this function to implement search. Return an array of
         dictionaries with a minium of a name and detail field"""
         pass
+
+
+class MostRecentBuildsView(View):
+    def _was_yesterday_or_earlier(self, completed_on):
+        now = timezone.now()
+        delta = now - completed_on
+
+        if delta.days >= 1:
+            return True
+
+        return False
+
+    def get(self, request, *args, **kwargs):
+        """
+        Returns a list of builds in JSON format.
+        """
+        project = None
+
+        project_id = request.GET.get('project_id', None)
+        if project_id:
+            try:
+                project = Project.objects.get(pk=project_id)
+            except:
+                # if project lookup fails, assume no project
+                pass
+
+        recent_build_objs = Build.get_recent(project)
+        recent_builds = []
+
+        for build_obj in recent_build_objs:
+            dashboard_url = reverse('builddashboard', args=(build_obj.pk,))
+            buildtime_url = reverse('buildtime', args=(build_obj.pk,))
+            rebuild_url = \
+                reverse('xhr_buildrequest', args=(build_obj.project.pk,))
+            cancel_url = \
+                reverse('xhr_buildrequest', args=(build_obj.project.pk,))
+
+            build = {}
+            build['id'] = build_obj.pk
+            build['dashboard_url'] = dashboard_url
+
+            buildrequest_id = None
+            if hasattr(build_obj, 'buildrequest'):
+                buildrequest_id = build_obj.buildrequest.pk
+            build['buildrequest_id'] = buildrequest_id
+
+            build['recipes_parsed_percentage'] = \
+                int((build_obj.recipes_parsed /
+                     build_obj.recipes_to_parse) * 100)
+
+            tasks_complete_percentage = 0
+            if build_obj.outcome in (Build.SUCCEEDED, Build.FAILED):
+                tasks_complete_percentage = 100
+            elif build_obj.outcome == Build.IN_PROGRESS:
+                tasks_complete_percentage = build_obj.completeper()
+            build['tasks_complete_percentage'] = tasks_complete_percentage
+
+            build['state'] = build_obj.get_state()
+
+            build['errors'] = build_obj.errors.count()
+            build['dashboard_errors_url'] = dashboard_url + '#errors'
+
+            build['warnings'] = build_obj.warnings.count()
+            build['dashboard_warnings_url'] = dashboard_url + '#warnings'
+
+            build['buildtime'] = sectohms(build_obj.timespent_seconds)
+            build['buildtime_url'] = buildtime_url
+
+            build['rebuild_url'] = rebuild_url
+            build['cancel_url'] = cancel_url
+
+            build['is_default_project_build'] = build_obj.project.is_default
+
+            build['build_targets_json'] = \
+                template_json(get_tasks(build_obj.target_set.all()))
+
+            # convert completed_on time to user's timezone
+            completed_on = timezone.localtime(build_obj.completed_on)
+
+            completed_on_template = '%H:%M'
+            if self._was_yesterday_or_earlier(completed_on):
+                completed_on_template = '%d/%m/%Y ' + completed_on_template
+            build['completed_on'] = completed_on.strftime(
+                completed_on_template)
+
+            targets = []
+            target_objs = build_obj.get_sorted_target_list()
+            for target_obj in target_objs:
+                if target_obj.task:
+                    targets.append(target_obj.target + ':' + target_obj.task)
+                else:
+                    targets.append(target_obj.target)
+            build['targets'] = ' '.join(targets)
+
+            # abbreviated form of the full target list
+            abbreviated_targets = ''
+            num_targets = len(targets)
+            if num_targets > 0:
+                abbreviated_targets = targets[0]
+            if num_targets > 1:
+                abbreviated_targets += (' +%s' % (num_targets - 1))
+            build['targets_abbreviated'] = abbreviated_targets
+
+            recent_builds.append(build)
+
+        return JsonResponse(recent_builds, safe=False)
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/builddelete.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/builddelete.py
index ff93e54..0bef8d4 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/builddelete.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/builddelete.py
@@ -15,7 +15,7 @@
             try:
                 b = Build.objects.get(pk = bid)
             except ObjectDoesNotExist:
-                print 'build %s does not exist, skipping...' %(bid)
+                print('build %s does not exist, skipping...' %(bid))
                 continue
             # theoretically, just b.delete() would suffice
             # however SQLite runs into problems when you try to
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/buildslist.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/buildslist.py
index cad987f..8dfef0a 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/buildslist.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/buildslist.py
@@ -10,4 +10,4 @@
 
     def handle_noargs(self,**options):
         for b in Build.objects.all():
-            print "%d: %s %s %s" % (b.pk, b.machine, b.distro, ",".join([x.target for x in b.target_set.all()]))
+            print("%d: %s %s %s" % (b.pk, b.machine, b.distro, ",".join([x.target for x in b.target_set.all()])))
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/get-dburl.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/get-dburl.py
deleted file mode 100644
index 22b3eb7..0000000
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/get-dburl.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from toastermain.settings import getDATABASE_URL
-from django.core.management.base import NoArgsCommand
-
-class Command(NoArgsCommand):
-    args    = ""
-    help    = "get database url"
-
-    def handle_noargs(self,**options):
-        print getDATABASE_URL()
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/perf.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/perf.py
index 71a48e9..6b450bb 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/perf.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/management/commands/perf.py
@@ -25,7 +25,7 @@
 			info = self.url_info(full_url)
 			status_code = info[0]
 			load_time = info[1]
-			print 'Trying \'' + full_url + '\', ' + str(status_code) + ', ' + str(load_time)
+			print('Trying \'' + full_url + '\', ' + str(status_code) + ', ' + str(load_time))
 
     def get_full_url(self, url_patt, url_root_res):
 	full_url = str(url_patt).split('^')[1].replace('$>', '').replace('(?P<file_path>(?:/[', '/bin/busybox').replace('.*', '')
@@ -54,5 +54,5 @@
 
     def error(self, *args):
 	for arg in args:
-	    print >>sys.stderr, arg,
-	print >>sys.stderr
+	    print(arg, end=' ', file=sys.stderr)
+	print(file=sys.stderr)
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 74ab604..3dfa2b2 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings.py
@@ -21,7 +21,7 @@
 
 # Django settings for Toaster project.
 
-import os, re
+import os
 
 DEBUG = True
 TEMPLATE_DEBUG = DEBUG
@@ -38,14 +38,19 @@
 
 MANAGERS = ADMINS
 
+TOASTER_SQLITE_DEFAULT_DIR = os.path.join(os.environ.get('TOASTER_DIR', ''),
+                                          'build')
+
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
-        'NAME': 'toaster.sqlite',                      # Or path to database file if using sqlite3.
+        # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
+        'ENGINE': 'django.db.backends.sqlite3',
+        # DB name or full path to database file if using sqlite3.
+        'NAME': "%s/toaster.sqlite" % TOASTER_SQLITE_DEFAULT_DIR,
         'USER': '',
         'PASSWORD': '',
-        'HOST': '127.0.0.1',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
-        'PORT': '3306',                      # Set to empty string for default.
+        #'HOST': '127.0.0.1', # e.g. mysql server
+        #'PORT': '3306', # e.g. mysql port
     }
 }
 
@@ -55,58 +60,6 @@
 if 'sqlite' in DATABASES['default']['ENGINE']:
     DATABASES['default']['OPTIONS'] = { 'timeout': 20 }
 
-# Reinterpret database settings if we have DATABASE_URL environment variable defined
-
-if 'DATABASE_URL' in os.environ:
-    dburl = os.environ['DATABASE_URL']
-
-    if dburl.startswith('sqlite3://'):
-        result = re.match('sqlite3://(.*)', dburl)
-        if result is None:
-            raise Exception("ERROR: Could not read sqlite database url: %s" % dburl)
-        DATABASES['default'] = {
-            'ENGINE': 'django.db.backends.sqlite3',
-            'NAME': result.group(1),
-            'USER': '',
-            'PASSWORD': '',
-            'HOST': '',
-            'PORT': '',
-        }
-    elif dburl.startswith('mysql://'):
-        # URL must be in this form: mysql://user:pass@host:port/name
-        result = re.match(r"mysql://([^:]*):([^@]*)@([^:]*):(\d*)/([^/]*)", dburl)
-        if result is None:
-            raise Exception("ERROR: Could not read mysql database url: %s" % dburl)
-        DATABASES['default'] = {
-            'ENGINE': 'django.db.backends.mysql',
-            'NAME': result.group(5),
-            'USER': result.group(1),
-            'PASSWORD': result.group(2),
-            'HOST': result.group(3),
-            'PORT': result.group(4),
-        }
-    else:
-        raise Exception("FIXME: Please implement missing database url schema for url: %s" % dburl)
-
-
-# Allows current database settings to be exported as a DATABASE_URL environment variable value
-
-def getDATABASE_URL():
-    d = DATABASES['default']
-    if d['ENGINE'] == 'django.db.backends.sqlite3':
-        if d['NAME'] == ':memory:':
-            return 'sqlite3://:memory:'
-        elif d['NAME'].startswith("/"):
-            return 'sqlite3://' + d['NAME']
-        return "sqlite3://" + os.path.join(os.getcwd(), d['NAME'])
-
-    elif d['ENGINE'] == 'django.db.backends.mysql':
-        return "mysql://" + d['USER'] + ":" + d['PASSWORD'] + "@" + d['HOST'] + ":" + d['PORT'] + "/" + d['NAME']
-
-    raise Exception("FIXME: Please implement missing database url schema for engine: %s" % d['ENGINE'])
-
-
-
 # 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 = []
@@ -134,17 +87,16 @@
             try:
                 import pytz
                 from pytz.exceptions import UnknownTimeZoneError
-                pass
                 try:
                     if pytz.timezone(zonename) is not None:
-                        zonefilelist[hashlib.md5(open(filepath).read()).hexdigest()] = zonename
-                except UnknownTimeZoneError, ValueError:
+                        zonefilelist[hashlib.md5(open(filepath, 'rb').read()).hexdigest()] = zonename
+                except UnknownTimeZoneError as ValueError:
                     # we expect timezone failures here, just move over
                     pass
             except ImportError:
-                zonefilelist[hashlib.md5(open(filepath).read()).hexdigest()] = zonename
+                zonefilelist[hashlib.md5(open(filepath, 'rb').read()).hexdigest()] = zonename
 
-    TIME_ZONE = zonefilelist[hashlib.md5(open('/etc/localtime').read()).hexdigest()]
+    TIME_ZONE = zonefilelist[hashlib.md5(open('/etc/localtime', 'rb').read()).hexdigest()]
 
 # Language code for this installation. All choices can be found here:
 # http://www.i18nguy.com/unicode/language-identifiers.html
@@ -321,7 +273,7 @@
 for t in os.walk(os.path.dirname(currentdir)):
     modulename = os.path.basename(t[0])
     #if we have a virtualenv skip it to avoid incorrect imports
-    if os.environ.has_key('VIRTUAL_ENV') and os.environ['VIRTUAL_ENV'] in t[0]:
+    if 'VIRTUAL_ENV' in os.environ and os.environ['VIRTUAL_ENV'] in t[0]:
         continue
 
     if ("views.py" in t[2] or "models.py" in t[2]) and not modulename in INSTALLED_APPS:
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings_test.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings_test.py
new file mode 100644
index 0000000..a322711
--- /dev/null
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings_test.py
@@ -0,0 +1,41 @@
+#
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2016        Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# Django settings for Toaster project.
+
+# Settings overlay to use for running tests
+# DJANGO_SETTINGS_MODULE=toastermain.settings-test
+
+from toastermain.settings import *
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.sqlite3',
+        'NAME': '/tmp/toaster-test-db.sqlite',
+        'TEST': {
+            'ENGINE': 'django.db.backends.sqlite3',
+            'NAME': '/tmp/toaster-test-db.sqlite',
+        }
+    }
+}
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/urls.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/urls.py
index 534679d..1f8599e 100644
--- a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/urls.py
+++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/urls.py
@@ -71,7 +71,7 @@
 currentdir = os.path.dirname(__file__)
 for t in os.walk(os.path.dirname(currentdir)):
     #if we have a virtualenv skip it to avoid incorrect imports
-    if os.environ.has_key('VIRTUAL_ENV') and os.environ['VIRTUAL_ENV'] in t[0]:
+    if 'VIRTUAL_ENV' in os.environ and os.environ['VIRTUAL_ENV'] in t[0]:
         continue
 
     if "urls.py" in t[2] and t[0] != currentdir:
@@ -84,7 +84,7 @@
         if not conflict:
             urlpatterns.insert(0, url(r'^' + modulename + '/', include ( modulename + '.urls')))
         else:
-            logger.warn("Module \'%s\' has a regexp conflict, was not added to the urlpatterns" % modulename)
+            logger.warning("Module \'%s\' has a regexp conflict, was not added to the urlpatterns" % modulename)
 
 from pprint import pformat
 #logger.debug("urlpatterns list %s", pformat(urlpatterns))
diff --git a/import-layers/yocto-poky/bitbake/toaster-requirements.txt b/import-layers/yocto-poky/bitbake/toaster-requirements.txt
index 0e8c742..e61c8e2 100644
--- a/import-layers/yocto-poky/bitbake/toaster-requirements.txt
+++ b/import-layers/yocto-poky/bitbake/toaster-requirements.txt
@@ -1,4 +1,3 @@
 Django>1.8,<1.9
-argparse==1.2.1
-wsgiref==0.1.2
 beautifulsoup4>=4.4.0
+pytz
diff --git a/import-layers/yocto-poky/documentation/Makefile b/import-layers/yocto-poky/documentation/Makefile
index 418d3ca..9077c81 100644
--- a/import-layers/yocto-poky/documentation/Makefile
+++ b/import-layers/yocto-poky/documentation/Makefile
@@ -133,7 +133,7 @@
            figures/index-downloads.png figures/kernel-dev-flow.png \
            figures/kernel-overview-1.png figures/kernel-overview-2-generic.png \
            figures/source-repos.png figures/yp-download.png \
-           figures/recipe-workflow.png figures/build-workspace-directory.png \
+           figures/recipe-workflow.png \
            figures/devtool-add-flow.png figures/devtool-modify-flow.png \
            figures/devtool-upgrade-flow.png \
            eclipse
@@ -249,7 +249,8 @@
 	figures/compatible-layers.png figures/import-layer.png figures/new-project.png \
 	figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png \
 	figures/sdk-devtool-add-flow.png figures/sdk-installed-extensible-sdk-directory.png \
-	figures/sdk-devtool-modify-flow.png figures/sdk-eclipse-dev-flow.png
+	figures/sdk-devtool-modify-flow.png figures/sdk-eclipse-dev-flow.png \
+	figures/sdk-devtool-upgrade-flow.png
 	endif
 
 MANUALS = $(DOC)/$(DOC).html
@@ -269,7 +270,8 @@
 	figures/images.png figures/sdk.png figures/source-fetching.png \
 	figures/patching.png figures/configuration-compile-autoreconf.png \
 	figures/analysis-for-package-splitting.png figures/image-generation.png \
-	figures/sdk-generation.png figures/building-an-image.png
+	figures/sdk-generation.png figures/building-an-image.png \
+	figures/build-workspace-directory.png
 MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
 FIGURES = figures
 STYLESHEET = $(DOC)/*.css
@@ -282,6 +284,7 @@
            figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png \
 	   figures/sdk-installed-extensible-sdk-directory.png figures/sdk-devtool-add-flow.png \
 	   figures/sdk-devtool-modify-flow.png figures/sdk-eclipse-dev-flow.png \
+	   figures/sdk-devtool-upgrade-flow.png \
            eclipse
 MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
 FIGURES = figures
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 c00b345..1bbdb70 100644
--- a/import-layers/yocto-poky/documentation/bsp-guide/bsp-guide.xml
+++ b/import-layers/yocto-poky/documentation/bsp-guide/bsp-guide.xml
@@ -108,6 +108,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
         </revhistory>
 
     <copyright>
diff --git a/import-layers/yocto-poky/documentation/bsp-guide/bsp.xml b/import-layers/yocto-poky/documentation/bsp-guide/bsp.xml
index b0562c7..4d0ace0 100644
--- a/import-layers/yocto-poky/documentation/bsp-guide/bsp.xml
+++ b/import-layers/yocto-poky/documentation/bsp-guide/bsp.xml
@@ -1467,20 +1467,19 @@
 	     5) MIPS    (32-bit)
 	     6) MIPS64  (64-bit)
      3
-     Would you like to use the default (4.1) kernel? (y/n) [default: y]
+     Would you like to use the default (4.8) kernel? (y/n) [default: y]
      Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n] [default: y]
-     Getting branches from remote repo git://git.yoctoproject.org/linux-yocto-4.1.git...
-     Please choose a machine branch to base your new BSP branch on: [default: standard/base]
+     Getting branches from remote repo git://git.yoctoproject.org/linux-yocto-4.8.git...
+     Please choose a machine branch to base this BSP on: [default: standard/base]
 	     1) standard/arm-versatile-926ejs
 	     2) standard/base
-	     3) standard/beagleboard
-	     4) standard/beaglebone
-	     5) standard/edgerouter
-	     6) standard/fsl-mpc8315e-rdb
-	     7) standard/mti-malta32
-	     8) standard/mti-malta64
-	     9) standard/qemuarm64
-	     10) standard/qemuppc
+	     3) standard/beaglebone
+	     4) standard/edgerouter
+	     5) standard/fsl-mpc8315e-rdb
+	     6) standard/mti-malta32
+	     7) standard/mti-malta64
+	     8) standard/qemuarm64
+	     9) standard/qemuppc
      1
      Would you like SMP support? (y/n) [default: y]
      Does your BSP have a touchscreen? (y/n) [default: n]
@@ -1495,7 +1494,7 @@
                             In the example, we use the ARM architecture.
                             </para></listitem>
                         <listitem><para>The script then prompts you for the kernel.
-                            The default 4.4 kernel is acceptable.
+                            The default 4.8 kernel is acceptable.
                             So, the example accepts the default.
                             If you enter 'n', the script prompts you to further enter the kernel
                             you do want to use.</para></listitem>
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 f926f1d..086d0ba 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
@@ -1254,27 +1254,57 @@
 
             <para>
                 You can always write a recipe from scratch.
-                However, two choices exist that can help you quickly get a
+                However, three choices exist that can help you quickly get a
                 start on a new recipe:
                 <itemizedlist>
-                    <listitem><para><emphasis><filename>recipetool</filename>:</emphasis>
-                        A tool provided by the Yocto Project that automates
+                    <listitem><para>
+                        <emphasis><filename>devtool add</filename>:</emphasis>
+                        A command that assists in creating a recipe and
+                        an environment conducive to development.
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis><filename>recipetool create</filename>:</emphasis>
+                        A command provided by the Yocto Project that automates
                         creation of a base recipe based on the source
                         files.
                         </para></listitem>
-                    <listitem><para><emphasis>Existing Recipes:</emphasis>
+                    <listitem><para>
+                        <emphasis>Existing Recipes:</emphasis>
                         Location and modification of an existing recipe that is
                         similar in function to the recipe you need.
                         </para></listitem>
                 </itemizedlist>
             </para>
 
-            <section id='new-recipe-creating-the-base-recipe-using-recipetool'>
-                <title>Creating the Base Recipe Using <filename>recipetool</filename></title>
+            <section id='new-recipe-creating-the-base-recipe-using-devtool'>
+                <title>Creating the Base Recipe Using <filename>devtool add</filename></title>
 
                 <para>
-                    <filename>recipetool</filename> automates creation of
-                    a base recipe given a set of source code files.
+                    The <filename>devtool add</filename> command uses the same
+                    logic for auto-creating the recipe as
+                    <filename>recipetool create</filename>, which is listed
+                    below.
+                    Additionally, however, <filename>devtool add</filename>
+                    sets up an environment that makes it easy for you to
+                    patch the source and to make changes to the recipe as
+                    is often necessary when adding a recipe to build a new
+                    piece of software to be included in a build.
+                </para>
+
+                <para>
+                    You can find a complete description of the
+                    <filename>devtool add</filename> command in the
+                    "<link linkend='use-devtool-to-integrate-new-code'>Use <filename>devtool add</filename> to Add an Application</link>"
+                    section.
+                </para>
+            </section>
+
+            <section id='new-recipe-creating-the-base-recipe-using-recipetool'>
+                <title>Creating the Base Recipe Using <filename>recipetool create</filename></title>
+
+                <para>
+                    <filename>recipetool create</filename> automates creation
+                    of a base recipe given a set of source code files.
                     As long as you can extract or point to the source files,
                     the tool will construct a recipe and automatically
                     configure all pre-build information into the recipe.
@@ -1566,12 +1596,29 @@
                             or tabs after the slash character.
                         </note>
                         </para></listitem>
-                    <listitem><para><emphasis>Using Variables: <filename>${...}</filename></emphasis> -
-                        Use the <filename>${<replaceable>varname</replaceable>}</filename> syntax to
+                    <listitem><para>
+                        <emphasis>Using Variables: <filename>${...}</filename></emphasis> -
+                        Use the <filename>${<replaceable>VARNAME</replaceable>}</filename> syntax to
                         access the contents of a variable:
                         <literallayout class='monospaced'>
      SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/zlib-${PV}.tar.gz"
                         </literallayout>
+                        <note>
+                            It is important to understand that the value of a
+                            variable expressed in this form does not get
+                            substituted automatically.
+                            The expansion of these expressions happens
+                            on-demand later (e.g. usually when a function that
+                            makes reference to the variable executes).
+                            This behavior ensures that the values are most
+                            appropriate for the context in which they are
+                            finally used.
+                            On the rare occasion that you do need the variable
+                            expression to be expanded immediately, you can use
+                            the <filename>:=</filename> operator instead of
+                            <filename>=</filename> when you make the
+                            assignment, but this is not generally needed.
+                        </note>
                         </para></listitem>
                     <listitem><para><emphasis>Quote All Assignments: <filename>"<replaceable>value</replaceable>"</filename></emphasis> -
                         Use double quotes around the value in all variable
@@ -1779,11 +1826,12 @@
             </para>
 
             <para>
-                The per-recipe temporary work directory is constructed as follows and
-                depends on several factors:
+                The path to the per-recipe temporary work directory depends
+                on the context in which it is being built.
+                The quickest way to find this path is to have BitBake return it
+                by running the following:
                 <literallayout class='monospaced'>
-     BASE_WORKDIR ?= "${TMPDIR}/work"
-     WORKDIR = "${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
+     $ bitbake -e <replaceable>basename</replaceable> | grep ^WORKDIR=
                 </literallayout>
                 As an example, assume a Source Directory top-level folder named
                 <filename>poky</filename>, a default Build Directory at
@@ -1817,28 +1865,6 @@
                 "<ulink url='&YOCTO_DOCS_REF_URL;#closer-look'>A Closer Look at the Yocto Project Development Environment</ulink>"
                 chapter of the Yocto Project Reference Manual.
             </para>
-
-            <para>
-                You can also reference the following variables in the
-                Yocto Project Reference Manual's glossary for more information:
-                <itemizedlist>
-                    <listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>:
-                        The top-level build output directory</listitem>
-                    <listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></ulink>:
-                        The target system identifier</listitem>
-                    <listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink>:
-                        The recipe name</listitem>
-                    <listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-EXTENDPE'><filename>EXTENDPE</filename></ulink>:
-                        The epoch - (if
-                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PE'><filename>PE</filename></ulink>
-                        is not specified, which is usually the case for most
-                        recipes, then <filename>EXTENDPE</filename> is blank)</listitem>
-                    <listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-PV'><filename>PV</filename></ulink>:
-                        The recipe version</listitem>
-                    <listitem><ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>:
-                        The recipe revision</listitem>
-                </itemizedlist>
-            </para>
         </section>
 
         <section id='new-recipe-fetching-code'>
@@ -1959,7 +1985,7 @@
                 Here is an example:
                 <literallayout class='monospaced'>
      SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_3.2.2.orig.tar.gz;name=tarball \
-                ${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.diff.gz;name=patch
+                ${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.diff.gz;name=patch"
 
      SRC_URI[tarball.md5sum] = "b1e6309e8331e0f4e6efd311c2d97fa8"
      SRC_URI[tarball.sha256sum] = "7f7d9f60b7766b852881d40b8ff91d8e39fccb0d1d913102a5c75a2dbb52332d"
@@ -2241,6 +2267,83 @@
 
         </section>
 
+        <section id='new-dependencies'>
+            <title>Dependencies</title>
+
+            <para>
+                Most software packages have a short list of other packages
+                that they require, which are called dependencies.
+                These dependencies fall into two main categories: build-time
+                dependencies, which are required when the software is built;
+                and runtime dependencies, which are required to be installed
+                on the target in order for the software to run.
+            </para>
+
+            <para>
+                Within a recipe, you specify build-time dependencies using the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink>
+                variable.
+                Although nuances exist, items specified in
+                <filename>DEPENDS</filename> should be names of other recipes.
+                It is important that you specify all build-time dependencies
+                explicitly.
+                If you do not, due to the parallel nature of BitBake's
+                execution, you can end up with a race condition where the
+                dependency is present for one task of a recipe (e.g.
+                <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-configure'><filename>do_configure</filename></ulink>)
+                and then gone when the next task runs (e.g.
+                <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile</filename></ulink>).
+            </para>
+
+            <para>
+                Another consideration is that configure scripts might
+                automatically check for optional dependencies and enable
+                corresponding functionality if those dependencies are found.
+                This behavior means that to ensure deterministic results and
+                thus avoid more race conditions, you need to either explicitly
+                specify these dependencies as well, or tell the configure
+                script explicitly to disable the functionality.
+                If you wish to make a recipe that is more generally useful
+                (e.g. publish the recipe in a layer for others to use),
+                instead of hard-disabling the functionality, you can use the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></ulink>
+                variable to allow functionality and the corresponding
+                dependencies to be enabled and disabled easily by other
+                users of the recipe.
+            </para>
+
+            <para>
+                Similar to build-time dependencies, you specify runtime
+                dependencies through a variable -
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-RDEPENDS'><filename>RDEPENDS</filename></ulink>,
+                which is package-specific.
+                All variables that are package-specific need to have the name
+                of the package added to the end as an override.
+                Since the main package for a recipe has the same name as the
+                recipe, and the recipe's name can be found through the
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink><filename>}</filename>
+                variable, then you specify the dependencies for the main
+                package by setting <filename>RDEPENDS_${PN}</filename>.
+                If the package were named <filename>${PN}-tools</filename>,
+                then you would set <filename>RDEPENDS_${PN}-tools</filename>,
+                and so forth.
+            </para>
+
+            <para>
+                Some runtime dependencies will be set automatically at
+                packaging time.
+                These dependencies include any shared library dependencies
+                (i.e. if a package "example" contains "libexample" and
+                another package "mypackage" contains a binary that links to
+                "libexample" then the OpenEmbedded build system will
+                automatically add a runtime dependency to "mypackage" on
+                "example").
+                See the
+                "<ulink url='&YOCTO_DOCS_REF_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+                in the Yocto Project Reference Manual for further details.
+            </para>
+        </section>
+
         <section id='new-recipe-configuring-the-recipe'>
             <title>Configuring the Recipe</title>
 
@@ -2251,7 +2354,7 @@
                 configure script with some options, or by modifying a build
                 configuration file.
                 <note>
-                    As of Yocto Project Release 7.1, some of the core recipes
+                    As of Yocto Project Release 1.7, some of the core recipes
                     that package binary configuration scripts now disable the
                     scripts due to the scripts previously requiring error-prone
                     path substitution.
@@ -2297,6 +2400,8 @@
                         However, you might still want to make some adjustments.
                         For example, you can set
                         <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></ulink>
+                        or
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></ulink>
                         to pass any needed configure options that are specific
                         to the recipe.</para></listitem>
                     <listitem><para><emphasis>CMake:</emphasis>
@@ -2770,6 +2875,56 @@
             </para>
         </section>
 
+        <section id='new-sharing-files-between-recipes'>
+            <title>Sharing Files Between Recipes</title>
+
+            <para>
+                Recipes often need to use files provided by other recipes on
+                the build host.
+                For example, an application linking to a common library needs
+                access to the library itself and its associated headers.
+                The way this access is accomplished is by populating sysroot
+                with files.
+                One sysroot exists per "machine" for which the image is
+                being built.
+                In practical terms, this means a sysroot exists for the target
+                machine, and a sysroot exists for the build host.
+                <note>
+                    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.
+                </note>
+            </para>
+
+            <para>
+                Recipes should never populate the sysroot directly (i.e. write
+                files into sysroot).
+                Instead, files should be installed into standard locations
+                during the
+                <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+                task within the
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>
+                directory.
+                A subset of these files 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
+                modified or removed.
+                Thus, the sysroot is able to remain free from stale files.
+            </para>
+
+            <para>
+                For information on variables you can use to help control how
+                files sysroot is populated, see the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></ulink>,
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-SYSROOT_DIRS_NATIVE'><filename>SYSROOT_DIRS_NATIVE</filename></ulink>,
+                and
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-SYSROOT_DIRS_BLACKLIST'><filename>SYSROOT_DIRS_BLACKLIST</filename></ulink>
+                variables.
+            </para>
+        </section>
+
         <section id='properly-versioning-pre-release-recipes'>
             <title>Properly Versioning Pre-Release Recipes</title>
 
@@ -3011,8 +3166,10 @@
                     You do not need to add a <filename>do_compile</filename> step since by default BitBake
                     starts the <filename>make</filename> command to compile the application.
                     If you need additional <filename>make</filename> options, you should store them in the
-                    <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OEMAKE'>EXTRA_OEMAKE</ulink></filename>
-                    variable.
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></ulink>
+                    or
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></ulink>
+                    variables.
                     BitBake passes these options into the GNU <filename>make</filename> invocation.
                     Note that a <filename>do_install</filename> task is still required.
                     Otherwise, BitBake runs an empty <filename>do_install</filename> task by default.
@@ -3048,7 +3205,7 @@
 
      PV = "1.5.1+git${SRCPV}"
 
-     S = "${WORKDIR}/git/"
+     S = "${WORKDIR}/git"
 
      EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'BUILDDIR=${S}'"
 
@@ -3179,38 +3336,114 @@
                     <ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink>
                     variables in the Yocto Project Reference Manual's variable
                     glossary.
+                    <note><title>Notes</title>
+                        <itemizedlist>
+                            <listitem><para>
+                                Using
+                                <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink>
+                                is a good idea even for components distributed
+                                in binary form, and is often necessary for
+                                shared libraries.
+                                For a shared library, listing the library
+                                dependencies in
+                                <filename>DEPENDS</filename> makes sure that
+                                the libraries are available in the staging
+                                sysroot when other recipes link against the
+                                library, which might be necessary for
+                                successful linking.
+                                </para></listitem>
+                            <listitem><para>
+                                Using <filename>DEPENDS</filename> also
+                                allows runtime dependencies between packages
+                                to be added automatically.
+                                See the
+                                "<ulink url='&YOCTO_DOCS_REF_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+                                section in the Yocto Project Reference Manual
+                                for more information.
+                                </para></listitem>
+                        </itemizedlist>
+                    </note>
                 </para>
 
                 <para>
-                    If you can't use the <filename>bin_package</filename>
+                    If you cannot use the <filename>bin_package</filename>
                     class, you need to be sure you are doing the following:
                     <itemizedlist>
-                        <listitem><para>Create a recipe where the
+                        <listitem><para>
+                            Create a recipe where the
+                            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-configure'><filename>do_configure</filename></ulink>
+                            and
+                            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile</filename></ulink>
+                            tasks do nothing:
+                            It is usually sufficient to just not define these
+                            tasks in the recipe, because the default
+                            implementations do nothing unless a Makefile is
+                            found in
+                            <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink><filename>}</filename>.
+                            </para>
+
+                            <para>If
+                            <filename>${S}</filename> might contain a Makefile,
+                            or if you inherit some class that replaces
                             <filename>do_configure</filename> and
-                            <filename>do_compile</filename> tasks do nothing:
+                            <filename>do_compile</filename> with custom
+                            versions, then you can use the
+                            <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>noexec</filename></ulink><filename>]</filename>
+                            flag to turn the tasks into no-ops, as follows:
                             <literallayout class='monospaced'>
      do_configure[noexec] = "1"
      do_compile[noexec] = "1"
                             </literallayout>
-                            Alternatively, you can make these tasks an empty
-                            function.
+                            Unlike
+                            <ulink url='&YOCTO_DOCS_BB_URL;#deleting-a-task'><filename>deleting the tasks</filename></ulink>,
+                            using the flag preserves the dependency chain from
+                            the
+                            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-fetch'><filename>do_fetch</filename></ulink>,                     <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-unpack'><filename>do_unpack</filename></ulink>,
+                            and
+                            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-patch'><filename>do_patch</filename></ulink>
+                            tasks to the
+                            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+                            task.
                             </para></listitem>
                         <listitem><para>Make sure your
                             <filename>do_install</filename> task installs the
                             binaries appropriately.
                             </para></listitem>
                         <listitem><para>Ensure that you set up
-                            <filename>FILES</filename> (usually
-                            <filename>FILES_${PN}</filename>) to point to the
-                            files you have installed, which of course depends
-                            on where you have installed them and whether
-                            those files are in different locations than the
-                            defaults.
+                            <ulink url='&YOCTO_DOCS_REF_URL;#var-FILES'><filename>FILES</filename></ulink>
+                            (usually
+                            <filename>FILES_${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink><filename>}</filename>)
+                            to point to the files you have installed, which of
+                            course depends on where you have installed them
+                            and whether those files are in different locations
+                            than the defaults.
                             </para></listitem>
                     </itemizedlist>
                 </para>
             </section>
         </section>
+
+        <section id="following-recipe-style-guidelines">
+            <title>Following Recipe Style Guidelines</title>
+
+            <para>
+                When writing recipes, it is good to conform to existing
+                style guidelines.
+                The
+                <ulink url='http://www.openembedded.org/wiki/Styleguide'>OpenEmbedded Styleguide</ulink>
+                wiki page provides rough guidelines for preferred recipe style.
+            </para>
+
+            <para>
+                It is common for existing recipes to deviate a bit from this
+                style.
+                However, aiming for at least a consistent style is a good idea.
+                Some practices, such as omitting spaces around
+                <filename>=</filename> operators in assignments or ordering
+                recipe components in an erratic way, are widely seen as poor
+                style.
+            </para>
+        </section>
     </section>
 
     <section id="platdev-newmachine">
@@ -3388,6 +3621,106 @@
         </section>
     </section>
 
+    <section id='platdev-building-targets-with-multiple-configurations'>
+        <title>Building Targets with Multiple Configurations</title>
+
+        <para>
+            Bitbake also has functionality that allows you to build
+            multiple targets at the same time, where each target uses
+            a different configuration.
+        </para>
+
+        <para>
+            In order to accomplish this, you setup each of the configurations
+            you need to use in parallel by placing the configuration files in
+            your current build directory alongside the usual
+            <filename>local.conf</filename> file.
+        </para>
+
+        <para>
+            Follow these guidelines to create an environment that supports
+            multiple configurations:
+            <itemizedlist>
+                <listitem><para>
+                    <emphasis>Create Configuration Files</emphasis>:
+                    You need to create a single configuration file for each
+                    configuration for which you want to add support.
+                    These files would contain lines such as the following:
+                    <literallayout class='monospaced'>
+     MACHINE = "A"
+                    </literallayout>
+                    The files would contain any other variables that can
+                    be set and built in the same directory.
+                    <note>
+                        You can change the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
+                        to not conflict.
+                    </note></para>
+
+                    <para>
+                    Furthermore, the configuration file must be located in the
+                    current build directory in a directory named
+                    <filename>multiconfig</filename> under the build's
+                    <filename>conf</filename> directory where
+                    <filename>local.conf</filename> resides.
+                    The reason for this restriction is because the
+                    <filename>BBPATH</filename> variable is not constructed
+                    until the layers are parsed.
+                    Consequently, using the configuration file as a
+                    pre-configuration file is not possible unless it is
+                    located in the current working directory.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Add the BitBake Multi-Config Variable to you Local Configuration File</emphasis>:
+                    Use the
+                    <filename>BBMULTICONFIG</filename>
+                    variable in your <filename>conf/local.conf</filename>
+                    configuration file to specify each separate configuration.
+                    For example, the following line tells BitBake it should load
+                    <filename>conf/multiconfig/configA.conf</filename>,
+                    <filename>conf/multiconfig/configB.conf</filename>, and
+                    <filename>conf/multiconfig/configC.conf</filename>.
+                    <literallayout class='monospaced'>
+     BBMULTICONFIG = "configA configB configC"
+                    </literallayout>
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Launch BitBake</emphasis>:
+                    Use the following BitBake command form to launch the
+                    build:
+                    <literallayout class='monospaced'>
+     $ bitbake [multiconfig:<replaceable>multiconfigname</replaceable>:]<replaceable>target</replaceable> [[[multiconfig:<replaceable>multiconfigname</replaceable>:]<replaceable>target</replaceable>] ... ]
+                    </literallayout>
+                    Following is an example that supports building a minimal
+                    image for configuration A alongside a standard
+                    <filename>core-image-sato</filename>, which takes its
+                    configuration from <filename>local.conf</filename>:
+                    <literallayout class='monospaced'>
+     $ bitbake multiconfig:configA:core-image-minimal core-image-sato
+                    </literallayout>
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+
+        <para>
+            Support for multiple configurations in this current release of
+            the Yocto Project (&DISTRO_NAME; &DISTRO;) has some known issues:
+            <itemizedlist>
+                <listitem><para>
+                    No inter-multi-configuration dependencies exist.
+                    </para></listitem>
+                <listitem><para>
+                    Shared State (sstate) optimizations do not exist.
+                    Consequently, if the build uses the same object twice
+                    in, for example, two different
+                    <filename>TMPDIR</filename> directories, the build
+                    will either load from an existing sstate cache at the
+                    start or build the object twice.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
     <section id="platdev-working-with-libraries">
         <title>Working With Libraries</title>
 
@@ -3726,6 +4059,236 @@
         </section>
     </section>
 
+    <section id='enabling-gobject-introspection-support'>
+        <title>Enabling GObject Introspection Support</title>
+
+        <para>
+            <ulink url='https://wiki.gnome.org/Projects/GObjectIntrospection'>GObject introspection</ulink>
+            is the standard mechanism for accessing GObject-based software
+            from runtime environments.
+            GObject is a feature of the GLib library that provides an object
+            framework for the GNOME desktop and related software.
+            GObject Introspection adds information to GObject that allows
+            objects created within it to be represented across different
+            programming languages.
+            If you want to construct GStreamer pipelines using Python, or
+            control UPnP infrastructure using Javascript and GUPnP,
+            GObject introspection is the only way to do it.
+        </para>
+
+        <para>
+            This section describes the Yocto Project support for generating
+            and packaging GObject introspection data.
+            GObject introspection data is a description of the
+            API provided by libraries built on top of GLib framework,
+            and, in particular, that framework's GObject mechanism.
+            GObject Introspection Repository (GIR) files go to
+            <filename>-dev</filename> packages,
+            <filename>typelib</filename> files go to main packages as they
+            are packaged together with libraries that are introspected.
+        </para>
+
+        <para>
+            The data is generated when building such a library, by linking
+            the library with a small executable binary that asks the library
+            to describe itself, and then executing the binary and
+            processing its output.
+        </para>
+
+        <para>
+            Generating this data in a cross-compilation environment
+            is difficult because the library is produced for the target
+            architecture, but its code needs to be executed on the build host.
+            This problem is solved with the OpenEmbedded build system by
+            running the code through QEMU, which allows precisely that.
+            Unfortunately, QEMU does not always work perfectly as mentioned
+            in the xxx section.
+        </para>
+
+        <section id='enabling-the-generation-of-introspection-data'>
+            <title>Enabling the Generation of Introspection Data</title>
+
+            <para>
+                Enabling the generation of introspection data (GIR files)
+                in your library package involves the following:
+                <orderedlist>
+                    <listitem><para>
+                        Inherit the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-gobject-introspection'><filename>gobject-introspection</filename></ulink>
+                        class.
+                        </para></listitem>
+                    <listitem><para>
+                        Make sure introspection is not disabled anywhere in
+                        the recipe or from anything the recipe includes.
+                        Also, make sure that "gobject-introspection-data" is
+                        not in
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><filename>DISTRO_FEATURES_BACKFILL_CONSIDERED</filename></ulink>
+                        and that "qemu-usermode" is not in
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_FEATURES_BACKFILL_CONSIDERED'><filename>MACHINE_FEATURES_BACKFILL_CONSIDERED</filename></ulink>.
+                        If either of these conditions exist, nothing will
+                        happen.
+                        </para></listitem>
+                    <listitem><para>
+                        Try to build the recipe.
+                        If you encounter build errors that look like
+                        something is unable to find
+                        <filename>.so</filename> libraries, check where these
+                        libraries are located in the source tree and add
+                        the following to the recipe:
+                        <literallayout class='monospaced'>
+     GIR_EXTRA_LIBS_PATH = "${B}/<replaceable>something</replaceable>/.libs"
+                        </literallayout>
+                        <note>
+                            See recipes in the <filename>oe-core</filename>
+                            repository that use that
+                            <filename>GIR_EXTRA_LIBS_PATH</filename> variable
+                            as an example.
+                        </note>
+                        </para></listitem>
+                    <listitem><para>
+                        Look for any other errors, which probably mean that
+                        introspection support in a package is not entirely
+                        standard, and thus breaks down in a cross-compilation
+                        environment.
+                        For such cases, custom-made fixes are needed.
+                        A good place to ask and receive help in these cases
+                        is the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Yocto Project mailing lists</ulink>.
+                        </para></listitem>
+                </orderedlist>
+                <note>
+                    Using a library that no longer builds against the latest
+                    Yocto Project release and prints introspection related
+                    errors is a good candidate for the previous procedure.
+                </note>
+            </para>
+        </section>
+
+        <section id='disabling-the-generation-of-introspection-data'>
+            <title>Disabling the Generation of Introspection Data</title>
+
+            <para>
+                You might find that you do not want to generate
+                introspection data.
+                Or, perhaps QEMU does not work on your build host and
+                target architecture combination.
+                If so, you can use either of the following methods to
+                disable GIR file generations:
+                <itemizedlist>
+                    <listitem><para>
+                        Add the following to your distro configuration:
+                        <literallayout class='monospaced'>
+     DISTRO_FEATURES_BACKFILL_CONSIDERED = "gobject-introspection-data"
+                        </literallayout>
+                        Adding this statement disables generating
+                        introspection data using QEMU but will still enable
+                        building introspection tools and libraries
+                        (i.e. building them does not require the use of QEMU).
+                        </para></listitem>
+                    <listitem><para>
+                        Add the following to your machine configuration:
+                        <literallayout class='monospaced'>
+     MACHINE_FEATURES_BACKFILL_CONSIDERED = "qemu-usermode"
+                        </literallayout>
+                        Adding this statement disables the use of QEMU
+                        when building packages for your machine.
+                        Currently, this feature is used only by introspection
+                        recipes and has the same effect as the previously
+                        described option.
+                        <note>
+                            Future releases of the Yocto Project might have
+                            other features affected by this option.
+                        </note>
+                        </para></listitem>
+                </itemizedlist>
+                If you disable introspection data, you can still
+                obtain it through other means such as copying the data
+                from a suitable sysroot, or by generating it on the
+                target hardware.
+                The OpenEmbedded build system does not currently
+                provide specific support for these techniques.
+            </para>
+        </section>
+
+        <section id='testing-that-introspection-works-in-an-image'>
+            <title>Testing that Introspection Works in an Image</title>
+
+            <para>
+                Use the following procedure to test if generating
+                introspection data is working in an image:
+                <orderedlist>
+                    <listitem><para>
+                        Make sure that "gobject-introspection-data" is not in
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><filename>DISTRO_FEATURES_BACKFILL_CONSIDERED</filename></ulink>
+                        and that "qemu-usermode" is not in
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_FEATURES_BACKFILL_CONSIDERED'><filename>MACHINE_FEATURES_BACKFILL_CONSIDERED</filename></ulink>.
+                        </para></listitem>
+                    <listitem><para>
+                        Build <filename>core-image-sato</filename>.
+                        </para></listitem>
+                    <listitem><para>
+                        Launch a Terminal and then start Python in the
+                        terminal.
+                        </para></listitem>
+                    <listitem><para>
+                        Enter the following in the terminal:
+                        <literallayout class='monospaced'>
+     >>> from gi.repository import GLib
+     >>> GLib.get_host_name()
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        For something a little more advanced, enter the
+                        following:
+                        <literallayout class='monospaced'>
+     http://python-gtk-3-tutorial.readthedocs.org/en/latest/introduction.html
+                        </literallayout>
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
+
+        <section id='known-issues'>
+            <title>Known Issues</title>
+
+            <para>
+                The following know issues exist for
+                GObject Introspection Support:
+                <itemizedlist>
+                    <listitem><para>
+                        <filename>qemu-ppc64</filename> immediately crashes.
+                        Consequently, you cannot build introspection data on
+                        that architecture.
+                        </para></listitem>
+                    <listitem><para>
+                        x32 is not supported by QEMU.
+                        Consequently, introspection data is disabled.
+                        </para></listitem>
+                    <listitem><para>
+                        musl causes transient GLib binaries to crash on
+                        assertion failures.
+                        Consequently, generating introspection data is
+                        disabled.
+                        </para></listitem>
+                    <listitem><para>
+                        Because QEMU is not able to run the binaries correctly,
+                        introspection is disabled for some specific packages
+                        under specific architectures (e.g.
+                        <filename>gcr</filename>,
+                        <filename>libsecret</filename>, and
+                        <filename>webkit</filename>).
+                        </para></listitem>
+                    <listitem><para>
+                        QEMU usermode might not work properly when running
+                        64-bit binaries under 32-bit host machines.
+                        In particular, "qemumips64" is known to not work under
+                        i686.
+                        </para></listitem>
+                </itemizedlist>
+            </para>
+        </section>
+    </section>
+
     <section id='dev-optionally-using-an-external-toolchain'>
         <title>Optionally Using an External Toolchain</title>
 
@@ -3802,10 +4365,10 @@
 	        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
-            plugin interface.
+            plug-in interface.
             See the
-            "<link linkend='openembedded-kickstart-plugins'>Plugins</link>"
-            section for information on these plugins.
+            "<link linkend='openembedded-kickstart-plugins'>Plug-ins</link>"
+            section for information on these plug-ins.
 	    </para>
 
         <para>
@@ -4367,21 +4930,21 @@
         </section>
 
         <section id='openembedded-kickstart-plugins'>
-            <title>Plugins</title>
+            <title>Plug-ins</title>
 
             <para>
-	            Plugins allow <filename>wic</filename> functionality to
+	            Plug-ins allow <filename>wic</filename> functionality to
 	            be extended and specialized by users.
                 This section documents the plugin interface, which is
-                currently restricted to source plugins.
+                currently restricted to source plug ins.
             </para>
 
             <para>
-	            Source plugins provide a mechanism to customize
+	            Source plug ins provide a mechanism to customize
 	            various aspects of the image generation process in
 	            <filename>wic</filename>, mainly the contents of
 	            partitions.
-	            The plugins provide a mechanism for mapping values
+	            The plug ins provide a mechanism for mapping values
 	            specified in <filename>.wks</filename> files using the
 	            <filename>--source</filename> keyword to a
                 particular plugin implementation that populates a
@@ -7304,27 +7867,48 @@
                 <title>Build Considerations</title>
 
                 <para>
-                    This section describes build considerations that you need
-                    to be aware of in order to provide support for runtime
+                    This section describes build considerations of which you
+                    need to be aware in order to provide support for runtime
                     package management.
                 </para>
 
                 <para>
-                    When BitBake generates packages it needs to know
+                    When BitBake generates packages, it needs to know
                     what format or formats to use.
                     In your configuration, you use the
                     <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>
-                    variable to specify the format.
-                    <note>
-                        You can choose to have more than one format but you must
-                        provide at least one.
-                    </note>
+                    variable to specify the format:
+                    <orderedlist>
+                        <listitem><para>
+                            Open the <filename>local.conf</filename> file
+                            inside your
+                            <link linkend='build-directory'>Build Directory</link>
+                            (e.g. <filename>~/poky/build/conf/local.conf</filename>).
+                            </para></listitem>
+                        <listitem><para>
+                            Select the desired package format as follows:
+                            <literallayout class='monospaced'>
+     PACKAGE_CLASSES ?= “package_<replaceable>packageformat</replaceable>”
+                            </literallayout>
+                            where <replaceable>packageformat</replaceable>
+                            can be "ipk", "rpm", and "deb", which are the
+                            supported package formats.
+                            <note>
+                                Because the Yocto Project supports three
+                                different package formats, you can set the
+                                variable with more than one argument.
+                                However, the OpenEmbedded build system only
+                                uses the first argument when creating an image
+                                or Software Development Kit (SDK).
+                            </note>
+                            </para></listitem>
+                    </orderedlist>
                 </para>
 
                 <para>
                     If you would like your image to start off with a basic
-                    package database of the packages in your current build
-                    as well as have the relevant tools available on the
+                    package database containing the packages in your current
+                    build as well as to have the relevant tools available on the
                     target for runtime package management, you can include
                     "package-management" in the
                     <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink>
@@ -7359,27 +7943,33 @@
                     <literallayout class='monospaced'>
     $ bitbake <replaceable>some-package</replaceable> package-index
                     </literallayout>
-                    This is because BitBake does not properly schedule the
-                    <filename>package-index</filename> target fully after any
-                    other target has completed.
+                    The reason for this restriction is because BitBake does not
+                    properly schedule the <filename>package-index</filename>
+                    target fully after any other target has completed.
                     Thus, be sure to run the package update step separately.
                 </para>
 
                 <para>
-                    As described below in the
-                    "<link linkend='runtime-package-management-target-ipk'>Using IPK</link>"
-                    section, if you are using IPK as your package format, you
-                    can make use of the
-                    <filename>distro-feed-configs</filename> recipe provided
-                    by <filename>meta-oe</filename> in order to configure your
-                    target to use your IPK databases.
+                    You can use the
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></ulink>,
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></ulink>,
+                    and
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></ulink>
+                    variables to pre-configure target images to use a package
+                    feed.
+                    If you do not define these variables, then manual steps
+                    as described in the subsequent sections are necessary to
+                    configure the target.
+                    You should set these variables before building the image
+                    in order to produce a correctly configured image.
                 </para>
 
                 <para>
                     When your build is complete, your packages reside in the
-                    <filename>${TMPDIR}/deploy/<replaceable>package-format</replaceable></filename>
+                    <filename>${TMPDIR}/deploy/<replaceable>packageformat</replaceable></filename>
                     directory.
-                    For example, if <filename>${TMPDIR}</filename>
+                    For example, if
+                    <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink><filename>}</filename>
                     is <filename>tmp</filename> and your selected package type
                     is IPK, then your IPK packages are available in
                     <filename>tmp/deploy/ipk</filename>.
@@ -7390,121 +7980,38 @@
                 <title>Host or Server Machine Setup</title>
 
                 <para>
-                    Typically, packages are served from a server using
-                    HTTP.
-                    However, other protocols are possible.
-                    If you want to use HTTP, then setup and configure a
-                    web server, such as Apache 2 or lighttpd, on the machine
-                    serving the packages.
+                    Although other protocols are possible, a server using HTTP
+                    typically serves packages.
+                    If you want to use HTTP, then set up and configure a
+                    web server such as Apache 2, lighttpd, or
+                    SimpleHTTPServer on the machine serving the packages.
                 </para>
 
                 <para>
-                    As previously mentioned, the build machine can act as the
-                    package server.
-                    In the following sections that describe server machine
-                    setups, the build machine is assumed to also be the server.
+                    To keep things simple, this section describes how to set
+                    up a SimpleHTTPServer web server to share package feeds
+                    from the developer's machine.
+                    Although this server might not be the best for a production
+                    environment, the setup is simple and straight forward.
+                    Should you want to use a different server more suited for
+                    production (e.g. Apache 2, Lighttpd, or Nginx), take the
+                    appropriate steps to do so.
                 </para>
 
-                <section id='package-server-apache'>
-                    <title>Serving Packages via Apache 2</title>
-
-                    <para>
-                        This example assumes you are using the Apache 2
-                        server:
-                        <orderedlist>
-                            <listitem><para>
-                                Add the directory to your Apache
-                                configuration, which you can find at
-                                <filename>/etc/httpd/conf/httpd.conf</filename>.
-                                Use commands similar to these on the
-                                development system.
-                                These example commands assume a top-level
-                                <link linkend='source-directory'>Source Directory</link>
-                                named <filename>poky</filename> in your home
-                                directory.
-                                The example also assumes an RPM package type.
-                                If you are using a different package type, such
-                                as IPK, use "ipk" in the pathnames:
-                                <literallayout class='monospaced'>
-     &lt;VirtualHost *:80&gt;
-       ....
-         Alias /rpm ~/poky/build/tmp/deploy/rpm
-         &lt;Directory "~/poky/build/tmp/deploy/rpm"&gt;
-           Options +Indexes
-         &lt;/Directory&gt;
-     &lt;/VirtualHost&gt;
-                                </literallayout></para></listitem>
-                            <listitem><para>
-                                Reload the Apache configuration as described
-                                in this step.
-                                For all commands, be sure you have root
-                                privileges.
-                                </para>
-
-                                <para>
-                                If your development system is using Fedora or
-                                CentOS, use the following:
-                                <literallayout class='monospaced'>
-     # service httpd reload
-                                </literallayout>
-                                For Ubuntu and Debian, use the following:
-                                <literallayout class='monospaced'>
-     # /etc/init.d/apache2 reload
-                                </literallayout>
-                                For OpenSUSE, use the following:
-                                <literallayout class='monospaced'>
-     # /etc/init.d/apache2 reload
-                                </literallayout></para></listitem>
-                            <listitem><para>
-                                If you are using Security-Enhanced Linux
-                                (SELinux), you need to label the files as
-                                being accessible through Apache.
-                                Use the following command from the development
-                                host.
-                                This example assumes RPM package types:
-                                <literallayout class='monospaced'>
-     # chcon -R -h -t httpd_sys_content_t tmp/deploy/rpm
-                                </literallayout></para></listitem>
-                        </orderedlist>
-                    </para>
-                </section>
-
-                <section id='package-server-lighttpd'>
-                    <title>Serving Packages via lighttpd</title>
-
-                    <para>
-                        If you are using lighttpd, all you need
-                        to do is to provide a link from your
-                        <filename>${TMPDIR}/deploy/<replaceable>package-format</replaceable></filename>
-                        directory to lighttpd's document-root.
-                        You can determine the specifics of your lighttpd
-                        installation by looking through its configuration file,
-                        which is usually found at:
-                        <filename>/etc/lighttpd/lighttpd.conf</filename>.
-                    </para>
-
-                    <para>
-                        For example, if you are using IPK, lighttpd's
-                        document-root is set to
-                        <filename>/var/www/lighttpd</filename>, and you had
-                        packages for a target named "BOARD",
-                        then you might create a link from your build location
-                        to lighttpd's document-root as follows:
-                        <literallayout class='monospaced'>
-    # ln -s $(PWD)/tmp/deploy/ipk /var/www/lighttpd/BOARD-dir
-                        </literallayout>
-                    </para>
-
-                    <para>
-                        At this point, you need to start the lighttpd server.
-                        The method used to start the server varies by
-                        distribution.
-                        However, one basic method that starts it by hand is:
-                        <literallayout class='monospaced'>
-    # lighttpd -f /etc/lighttpd/lighttpd.conf
-                        </literallayout>
-                    </para>
-                </section>
+                <para>
+                    From within the build directory where you have built an
+                    image based on your packaging choice (i.e. the
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>
+                    setting), simply start the server.
+                    The following example assumes a build directory of
+                    <filename>~/poky/build/tmp/deploy/rpm</filename> and a
+                    <filename>PACKAGE_CLASSES</filename> setting of
+                    "package_rpm":
+                    <literallayout class='monospaced'>
+     $ cd ~/poky/build/tmp/deploy/rpm
+     $ python -m SimpleHTTPServer
+                    </literallayout>
+                </para>
             </section>
 
             <section id='runtime-package-management-target'>
@@ -7513,42 +8020,46 @@
                 <para>
                     Setting up the target differs depending on the
                     package management system.
-                    This section provides information for RPM and IPK.
+                    This section provides information for RPM, IPK, and DEB.
                 </para>
 
                 <section id='runtime-package-management-target-rpm'>
                     <title>Using RPM</title>
 
                     <para>
-                        The application for performing runtime package
-                        management of RPM packages on the target is called
-                        <filename>smart</filename>.
+                        The <filename>smart</filename> application performs
+                        runtime package management of RPM packages.
+                        You must perform an initial setup for
+                        <filename>smart</filename> on the target machine
+                        if the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></ulink>,
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></ulink>, and
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></ulink>
+                        variables have not been set or the target image was
+                        built before the variables were set.
                     </para>
 
                     <para>
-                        On the target machine, you need to inform
-                        <filename>smart</filename> of every package database
-                        you want to use.
-                        As an example, suppose your target device can use the
-                        following three package databases from a server named
-                        <filename>server.name</filename>:
+                        As an example, assume the target is able to use the
+                        following package databases:
                         <filename>all</filename>, <filename>i586</filename>,
-                        and <filename>qemux86</filename>.
-                        Given this example, issue the following commands on the
-                        target:
+                        and <filename>qemux86</filename> from a server named
+                        <filename>my.server</filename>.
+                        You must inform <filename>smart</filename> of the
+                        availability of these databases by issuing the
+                        following commands on the target:
                         <literallayout class='monospaced'>
-     # smart channel --add all type=rpm-md baseurl=http://server.name/rpm/all
-     # smart channel --add i585 type=rpm-md baseurl=http://server.name/rpm/i586
-     # smart channel --add qemux86 type=rpm-md baseurl=http://server.name/rpm/qemux86
+     # smart channel --add i585 type=rpm-md baseurl=http://my.server/rpm/i586
+     # smart channel --add qemux86 type=rpm-md baseurl=http://my.server/rpm/qemux86
+     # smart channel --add all type=rpm-md baseurl=http://my.server/rpm/all
                         </literallayout>
-                        Also from the target machine, fetch the repository
-                        information using this command:
+                        From the target machine, fetch the repository:
                         <literallayout class='monospaced'>
      # smart update
                         </literallayout>
-                        You can now use the <filename>smart query</filename>
-                        and <filename>smart install</filename> commands to
-                        find and install packages from the repositories.
+                        After everything is set up, <filename>smart</filename>
+                        is able to find, install, and upgrade packages from
+                        the specified repository.
                     </para>
                 </section>
 
@@ -7556,61 +8067,99 @@
                     <title>Using IPK</title>
 
                     <para>
-                        The application for performing runtime package
-                        management of IPK packages on the target is called
-                        <filename>opkg</filename>.
+                        The <filename>opkg</filename> application performs
+                        runtime package management of IPK packages.
+                        You must perform an initial setup for
+                        <filename>opkg</filename> on the target machine
+                        if the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></ulink>,
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></ulink>, and
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></ulink>
+                        variables have not been set or the target image was
+                        built before the variables were set.
                     </para>
 
                     <para>
-                        In order to inform <filename>opkg</filename> of the
-                        package databases you want to use, simply create one
-                        or more <filename>*.conf</filename> files in the
-                        <filename>/etc/opkg</filename> directory on the target.
-                        The <filename>opkg</filename> application uses them
-                        to find its available package databases.
-                        As an example, suppose you configured your HTTP server
-                        on your machine named
-                        <filename>www.mysite.com</filename> to serve files
-                        from a <filename>BOARD-dir</filename> directory under
-                        its document-root.
-                        In this case, you might create a configuration
-                        file on the target called
-                        <filename>/etc/opkg/base-feeds.conf</filename> that
-                        contains:
+                        The <filename>opkg</filename> application uses
+                        configuration files to find available package
+                        databases.
+                        Thus, you need to create a configuration file inside
+                        the <filename>/etc/opkg/</filename> direction, which
+                        informs <filename>opkg</filename> of any repository
+                        you want to use.
+                    </para>
+
+                    <para>
+                        As an example, suppose you are serving packages from a
+                        <filename>ipk/</filename> directory containing the
+                        <filename>i586</filename>,
+                        <filename>all</filename>, and
+                        <filename>qemux86</filename> databases through an
+                        HTTP server named <filename>my.server</filename>.
+                        On the target, create a configuration file
+                        (e.g. <filename>my_repo.conf</filename>) inside the
+                        <filename>/etc/opkg/</filename> directory containing
+                        the following:
                         <literallayout class='monospaced'>
-     src/gz all http://www.mysite.com/BOARD-dir/all
-     src/gz armv7a http://www.mysite.com/BOARD-dir/armv7a
-     src/gz beaglebone http://www.mysite.com/BOARD-dir/beaglebone
+     src/gz all http://my.server/ipk/all
+     src/gz i586 http://my.server/ipk/i586
+     src/gz qemux86 http://my.server/ipk/qemux86
                         </literallayout>
-                    </para>
-
-                    <para>
-                        As a way of making it easier to generate and make
-                        these IPK configuration files available on your
-                        target, simply define
-                        <ulink url='&YOCTO_DOCS_REF_URL;#var-FEED_DEPLOYDIR_BASE_URI'><filename>FEED_DEPLOYDIR_BASE_URI</filename></ulink>
-                        to point to your server and the location within the
-                        document-root which contains the databases.
-                        For example: if you are serving your packages over
-                        HTTP, your server's IP address is 192.168.7.1, and
-                        your databases are located in a directory called
-                        <filename>BOARD-dir</filename> underneath your HTTP
-                        server's document-root, you need to set
-                        <filename>FEED_DEPLOYDIR_BASE_URI</filename> to
-                        <filename>http://192.168.7.1/BOARD-dir</filename> and
-                        a set of configuration files will be generated for you
-                        in your target to work with this feed.
-                    </para>
-
-                    <para>
-                        On the target machine, fetch (or refresh) the
-                        repository information using this command:
+                        Next, instruct <filename>opkg</filename> to fetch
+                        the repository information:
                         <literallayout class='monospaced'>
      # opkg update
                         </literallayout>
-                        You can now use the <filename>opkg list</filename> and
-                        <filename>opkg install</filename> commands to find and
-                        install packages from the repositories.
+                        The <filename>opkg</filename> application is now able
+                        to find, install, and upgrade packages from the
+                        specified repository.
+                    </para>
+                </section>
+
+                <section id='runtime-package-management-target-deb'>
+                    <title>Using DEB</title>
+
+                    <para>
+                        The <filename>apt</filename> application performs
+                        runtime package management of DEB packages.
+                        This application uses a source list file to find
+                        available package databases.
+                        You must perform an initial setup for
+                        <filename>apt</filename> on the target machine
+                        if the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></ulink>,
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></ulink>, and
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></ulink>
+                        variables have not been set or the target image was
+                        built before the variables were set.
+                    </para>
+
+                    <para>
+                        To inform <filename>apt</filename> of the repository
+                        you want to use, you might create a list file (e.g.
+                        <filename>my_repo.list</filename>) inside the
+                        <filename>/etc/apt/sources.list.d/</filename>
+                        directory.
+                        As an example, suppose you are serving packages from a
+                        <filename>deb/</filename> directory containing the
+                        <filename>i586</filename>,
+                        <filename>all</filename>, and
+                        <filename>qemux86</filename> databases through an
+                        HTTP server named <filename>my.server</filename>.
+                        The list file should contain:
+                        <literallayout class='monospaced'>
+     deb http://my.server/deb/all ./
+     deb http://my.server/deb/i586 ./
+     deb http://my.server/deb/qemux86 ./
+                        </literallayout>
+                        Next, instruct the <filename>apt</filename>
+                        application to fetch the repository information:
+                        <literallayout class='monospaced'>
+     # apt-get update
+                        </literallayout>
+                        After this step, <filename>apt</filename> is able
+                        to find, install, and upgrade packages from the
+                        specified repository.
                     </para>
                 </section>
             </section>
@@ -8561,19 +9110,19 @@
                             within a separately started QEMU or any
                             other virtual machine manager.
                             </para></listitem>
-                        <listitem><para><emphasis>"GummibootTarget":</emphasis>
-                            Choose "GummibootTarget" if your hardware is
+                        <listitem><para><emphasis>"Systemd-bootTarget":</emphasis>
+                            Choose "Systemd-bootTarget" if your hardware is
                             an EFI-based machine with
-                            <filename>gummiboot</filename> as bootloader and
+                            <filename>systemd-boot</filename> as bootloader and
                             <filename>core-image-testmaster</filename>
                             (or something similar) is installed.
                             Also, your hardware under test must be in a
                             DHCP-enabled network that gives it the same IP
                             address for each reboot.</para>
-                            <para>If you choose "GummibootTarget", there are
+                            <para>If you choose "Systemd-bootTarget", there are
                             additional requirements and considerations.
                             See the
-                            "<link linkend='selecting-gummiboottarget'>Selecting GummibootTarget</link>"
+                            "<link linkend='selecting-systemd-boottarget'>Selecting Systemd-bootTarget</link>"
                             section, which follows, for more information.
                             </para></listitem>
                         <listitem><para><emphasis>"BeagleBoneTarget":</emphasis>
@@ -8619,12 +9168,12 @@
                 </para>
             </section>
 
-            <section id='selecting-gummiboottarget'>
-                <title>Selecting GummibootTarget</title>
+            <section id='selecting-systemd-boottarget'>
+                <title>Selecting Systemd-bootTarget</title>
 
                 <para>
                     If you did not set <filename>TEST_TARGET</filename> to
-                    "GummibootTarget", then you do not need any information
+                    "Systemd-bootTarget", then you do not need any information
                     in this section.
                     You can skip down to the
                     "<link linkend='qemu-image-running-tests'>Running Tests</link>"
@@ -8633,14 +9182,14 @@
 
                 <para>
                     If you did set <filename>TEST_TARGET</filename> to
-                    "GummibootTarget", you also need to perform a one-time
+                    "Systemd-bootTarget", you also need to perform a one-time
                     setup of your master image by doing the following:
                     <orderedlist>
                         <listitem><para><emphasis>Set <filename>EFI_PROVIDER</filename>:</emphasis>
                             Be sure that <filename>EFI_PROVIDER</filename>
                             is as follows:
                             <literallayout class='monospaced'>
-     EFI_PROVIDER = "gummiboot"
+     EFI_PROVIDER = "systemd-boot"
                             </literallayout>
                             </para></listitem>
                         <listitem><para><emphasis>Build the master image:</emphasis>
@@ -8704,7 +9253,7 @@
 
                 <para>
                     The final thing you need to do when setting
-                    <filename>TEST_TARGET</filename> to "GummibootTarget" is
+                    <filename>TEST_TARGET</filename> to "Systemd-bootTarget" is
                     to set up the test image:
                     <orderedlist>
                         <listitem><para><emphasis>Set up your <filename>local.conf</filename> file:</emphasis>
@@ -8713,7 +9262,7 @@
                             <literallayout class='monospaced'>
      IMAGE_FSTYPES += "tar.gz"
      INHERIT += "testimage"
-     TEST_TARGET = "GummibootTarget"
+     TEST_TARGET = "Systemd-bootTarget"
      TEST_TARGET_IP = "192.168.2.3"
                             </literallayout>
                             </para></listitem>
@@ -8974,18 +9523,17 @@
                 in your <filename>local.conf</filename> file.
                 Be sure to provide the IP address you need:
                 <literallayout class='monospaced'>
-     TEST_EXPORT_ONLY = "1"
-     TEST_TARGET = "simpleremote"
+     INHERIT +="testexport"
      TEST_TARGET_IP = "192.168.7.2"
      TEST_SERVER_IP = "192.168.7.1"
                 </literallayout>
                 You can then export the tests with the following:
                 <literallayout class='monospaced'>
-     $ bitbake core-image-sato -c testimage
+     $ bitbake core-image-sato -c testexport
                 </literallayout>
                 Exporting the tests places them in the
                 <link linkend='build-directory'>Build Directory</link> in
-                <filename>tmp/testimage/core-image-sato</filename>, which
+                <filename>tmp/testexport/core-image-sato</filename>, which
                 is controlled by the
                 <filename>TEST_EXPORT_DIR</filename> variable.
             </para>
@@ -8993,37 +9541,9 @@
             <para>
                 You can now run the tests outside of the build environment:
                 <literallayout class='monospaced'>
-     $ cd tmp/testimage/core-image-sato
+     $ cd tmp/testexport/core-image-sato
      $ ./runexported.py testdata.json
                 </literallayout>
-                <note>
-                    This "export" feature does not deploy or boot the target
-                    image.
-                    Your target (be it a Qemu or hardware one)
-                    has to already be up and running when you call
-                    <filename>runexported.py</filename>
-                </note>
-            </para>
-
-            <para>
-                The exported data (i.e. <filename>testdata.json</filename>)
-                contains paths to the Build Directory.
-                Thus, the contents of the directory can be moved
-                to another machine as long as you update some paths in the
-                JSON.
-                Usually, you only care about the
-                <filename>${DEPLOY_DIR}/rpm</filename> directory
-                (assuming the RPM and Smart tests are enabled).
-                Consequently, running the tests on other machine
-                means that you have to move the contents and call
-                <filename>runexported.py</filename> with
-                "--deploy-dir <replaceable>path</replaceable>" as
-                follows:
-                <literallayout class='monospaced'>
-     ./runexported.py --deploy-dir /new/path/on/this/machine testdata.json
-                </literallayout>
-                <filename>runexported.py</filename> accepts other arguments
-                as well as described using <filename>--help</filename>.
             </para>
         </section>
 
@@ -9138,7 +9658,7 @@
                                     The target controller object used to deploy
                                     and start an image on a particular target
                                     (e.g. QemuTarget, SimpleRemote, and
-                                    GummibootTarget).
+                                    Systemd-bootTarget).
                                     Tests usually use the following:
                                     <itemizedlist>
                                         <listitem><para><emphasis><filename>ip</filename>:</emphasis>
@@ -9198,6 +9718,78 @@
                 </para>
             </section>
         </section>
+
+        <section id='installing-packages-in-the-dut-without-the-package-manager'>
+            <title>Installing Packages in the DUT Without the Package Manager</title>
+
+            <para>
+                When a test requires a package built by BitBake, it is possible
+                to install that package.
+                Installing the package does not require a package manager be
+                installed in the device under test (DUT).
+                It does, however, require an SSH connection and the target must
+                be using the <filename>sshcontrol</filename> class.
+                <note>
+                    This method uses <filename>scp</filename> to copy files
+                    from the host to the target, which causes permissions and
+                    special attributes to be lost.
+                </note>
+            </para>
+
+            <para>
+                A JSON file is used to define the packages needed by a test.
+                This file must be in the same path as the file used to define
+                the tests.
+                Furthermore, the filename must map directly to the test
+                module name with a <filename>.json</filename> extension.
+            </para>
+
+            <para>
+                The JSON file must include an object with the test name as
+                keys of an object or an array.
+                This object (or array of objects) uses the following data:
+                <itemizedlist>
+                    <listitem><para>"pkg" - A mandatory string that is the
+                        name of the package to be installed.
+                        </para></listitem>
+                    <listitem><para>"rm" - An optional boolean, which defaults
+                        to "false", that specifies to remove the package after
+                        the test.
+                        </para></listitem>
+                    <listitem><para>"extract" - An optional boolean, which
+                        defaults to "false", that specifies if the package must
+                        be extracted from the package format.
+                        When set to "true", the package is not automatically
+                        installed into the DUT.
+                        </para></listitem>
+                </itemizedlist>
+            </para>
+
+            <para>
+                Following is an example JSON file that handles test "foo"
+                installing package "bar" and test "foobar" installing
+                packages "foo" and "bar".
+                Once the test is complete, the packages are removed from the
+                DUT.
+                <literallayout class='monospaced'>
+     {
+         "foo": {
+             "pkg": "bar"
+         },
+         "foobar": [
+             {
+                 "pkg": "foo",
+                 "rm": true
+             },
+             {
+                 "pkg": "bar",
+                 "rm": true
+             }
+         ]
+     }
+                </literallayout>
+            </para>
+        </section>
     </section>
 
     <section id="platdev-gdb-remotedebug">
@@ -9244,15 +9836,6 @@
             as all the heavy debugging is done by the host GDB.
             Offloading these processes gives the Gdbserver running on the target a chance to remain
             small and fast.
-            <note>
-                By default, source files are part of the
-                <filename>*-dbg</filename> packages in order to enable GDB
-                to show source lines in its output.
-                You can save further space on the target by setting the
-                <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_DEBUG_SPLIT_STYLE'><filename>PACKAGE_DEBUG_SPLIT_STYLE</filename></ulink>
-                variable to "debug-without-src" so that these packages do not
-                include the source files.
-            </note>
         </para>
 
         <para>
@@ -9276,10 +9859,200 @@
         </para>
 
         <para>
-            The remainder of this section describes the steps you need to take
-            to debug using the GNU project debugger.
-        </para>
+            The following steps show you how to debug using the GNU project
+            debugger.
+            <orderedlist>
+                <listitem><para>
+                    <emphasis>Configure your build system to construct the
+                    companion debug filesystem:</emphasis></para>
 
+                    <para>In your <filename>local.conf</filename> file, set
+                    the following:
+                    <literallayout class='monospaced'>
+     IMAGE_GEN_DEBUGFS = "1"
+     IMAGE_FSTYPES_DEBUGFS = "tar.bz2"
+                    </literallayout>
+                    These options cause the OpenEmbedded build system
+                    to generate a special companion filesystem fragment,
+                    which contains the matching source and debug symbols to
+                    your deployable filesystem.
+                    The build system does this by looking at what is in the
+                    deployed filesystem, and pulling the corresponding
+                    <filename>-dbg</filename> packages.</para>
+
+                    <para>The companion debug filesystem is not a complete
+                    filesystem, but only contains the debug fragments.
+                    This filesystem must be combined with the full filesystem
+                    for debugging.
+                    Subsequent steps in this procedure show how to combine
+                    the partial filesystem with the full filesystem.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Configure the system to include Gdbserver in
+                    the target filesystem:</emphasis></para>
+
+                    <para>Make the following addition in either your
+                    <filename>local.conf</filename> file or in an image
+                    recipe:
+                    <literallayout class='monospaced'>
+     IMAGE_INSTALL_append = “ gdbserver"
+                    </literallayout>
+                    The change makes sure the <filename>gdbserver</filename>
+                    package is included.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Build the environment:</emphasis></para>
+
+                    <para>Use the following command to construct the image and
+                    the companion Debug Filesystem:
+                    <literallayout class='monospaced'>
+     $ bitbake <replaceable>image</replaceable>
+                    </literallayout>
+                    Build the cross GDB component and make it available
+                    for debugging.
+                    Build the SDK that matches the image.
+                    Building the SDK is best for a production build
+                    that can be used later for debugging, especially
+                    during long term maintenance:
+                    <literallayout class='monospaced'>
+     $ bitbake -c populate_sdk <replaceable>image</replaceable>
+                    </literallayout></para>
+
+                    <para>Alternatively, you can build the minimal
+                    toolchain components that match the target.
+                    Doing so creates a smaller than typical SDK and only
+                    contains a minimal set of components with which to
+                    build simple test applications, as well as run the
+                    debugger:
+                    <literallayout class='monospaced'>
+     $ bitbake meta-toolchain
+                    </literallayout></para>
+
+                    <para>A final method is to build Gdb itself within
+                    the build system:
+                    <literallayout class='monospaced'>
+     $ bitbake gdb-cross-<replaceable>architecture</replaceable>
+                    </literallayout>
+                    Doing so produces a temporary copy of
+                    <filename>cross-gdb</filename> you can use for
+                    debugging during development.
+                    While this is the quickest approach, the two previous
+                    methods in this step are better when considering
+                    long-term maintenance strategies.
+                    <note>
+                        If you run
+                        <filename>bitbake gdb-cross</filename>, the
+                        OpenEmbedded build system suggests the actual
+                        image (e.g. <filename>gdb-cross-i586</filename>).
+                        The suggestion is usually the actual name you want
+                        to use.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Set up the</emphasis>&nbsp;<filename>debugfs</filename></para>
+
+                    <para>Run the following commands to set up the
+                    <filename>debugfs</filename>:
+                    <literallayout class='monospaced'>
+     $ mkdir debugfs
+     $ cd debugfs
+     $ tar xvfj <replaceable>build-dir</replaceable>/tmp-glibc/deploy/images/<replaceable>machine</replaceable>/<replaceable>image</replaceable>.rootfs.tar.bz2
+     $ tar xvfj <replaceable>build-dir</replaceable>/tmp-glibc/deploy/images/<replaceable>machine</replaceable>/<replaceable>image</replaceable>-dbg.rootfs.tar.bz2
+                    </literallayout>
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Set up GDB</emphasis></para>
+
+                    <para>Install the SDK (if you built one) and then
+                    source the correct environment file.
+                    Sourcing the environment file puts the SDK in your
+                    <filename>PATH</filename> environment variable.</para>
+
+                    <para>If you are using the build system, Gdb is
+                    located in
+                    <replaceable>build-dir</replaceable>/tmp/sysroots/<replaceable>host</replaceable>/usr/bin/<replaceable>architecture</replaceable>/<replaceable>architecture</replaceable>-gdb
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Boot the target:</emphasis></para>
+
+                    <para>For information on how to run QEMU, see the
+                    <ulink url='http://wiki.qemu.org/Documentation/GettingStartedDevelopers'>QEMU Documentation</ulink>.
+                    <note>
+                        Be sure to verify that your host can access the
+                        target via TCP.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Debug a program:</emphasis></para>
+
+                    <para>Debugging a program involves running Gdbserver
+                    on the target and then running Gdb on the host.
+                    The example in this step debugs
+                    <filename>gzip</filename>:
+                    <literallayout class='monospaced'>
+     root@qemux86:~# gdbserver localhost:1234 /bin/gzip —help
+                    </literallayout>
+                    For additional Gdbserver options, see the
+                    <ulink url='https://www.gnu.org/software/gdb/documentation/'>Gdb Server Documentation</ulink>.
+                    </para>
+
+                    <para>After running Gdbserver on the target, you need
+                    to run Gdb on the host and configure it and connect to
+                    the target.
+                    Use these commands:
+                    <literallayout class='monospaced'>
+     $ cd <replaceable>directory-holding-the-debugfs-directory</replaceable>
+     $ <replaceable>arch</replaceable>-gdb
+
+     (gdb) set sysroot debugfs
+     (gdb) set substitute-path /usr/src/debug debugfs/usr/src/debug
+     (gdb) target remote <replaceable>IP-of-target</replaceable>:1234
+                    </literallayout>
+                    At this point, everything should automatically load
+                    (i.e. matching binaries, symbols and headers).
+                    <note>
+                        The Gdb <filename>set</filename> commands in the
+                        previous example can be placed into the users
+                        <filename>~/.gdbinit</filename> file.
+                        Upon starting, Gdb automatically runs whatever
+                        commands are in that file.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Deploying without a full image
+                    rebuild:</emphasis></para>
+
+                    <para>In many cases, during development you want a
+                    quick method to deploy a new binary to the target and
+                    debug it, without waiting for a full image build.
+                    </para>
+
+                    <para>One approach to solving this situation is to
+                    just build the component you want to debug.
+                    Once you have built the component, copy the
+                    executable directly to both the target and the
+                    host <filename>debugfs</filename>.</para>
+
+                    <para>If the binary is processed through the debug
+                    splitting in OpenEmbedded, you should also
+                    copy the debug items (i.e. <filename>.debug</filename>
+                    contents and corresponding
+                    <filename>/usr/src/debug</filename> files)
+                    from the work directory.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     $ bitbake bash
+     $ bitbake -c devshell bash
+     $ cd ..
+     $ scp packages-split/bash/bin/bash <replaceable>target</replaceable>:/bin/bash
+     $ cp -a packages-split/bash-dbg/* <replaceable>path</replaceable>/debugfs
+                    </literallayout>
+                    </para></listitem>
+            </orderedlist>
+        </para>
+    </section>
+
+<!--
         <section id='platdev-gdb-remotedebug-setup'>
             <title>Set Up the Cross-Development Debugging Environment</title>
 
@@ -9453,6 +10226,69 @@
             </para>
         </section>
     </section>
+-->
+
+    <section id='debugging-with-the-gnu-project-debugger-gdb-on-the-target'>
+        <title>Debugging with the GNU Project Debugger (GDB) on the Target</title>
+
+        <para>
+            The previous section addressed using GDB remotely for debugging
+            purposes, which is the most usual case due to the inherent
+            hardware limitations on many embedded devices.
+            However, debugging in the target hardware itself is also possible
+            with more powerful devices.
+            This section describes what you need to do in order to support
+            using GDB to debug on the target hardware.
+        </para>
+
+        <para>
+            To support this kind of debugging, you need do the following:
+            <itemizedlist>
+                <listitem><para>
+                    Ensure that GDB is on the target.
+                    You can do this by adding "gdb" to
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>:
+                    <literallayout class='monospaced'>
+     IMAGE_INSTALL_append = " gdb"
+                    </literallayout>
+                    Alternatively, you can add "tools-debug" to
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink>:
+                    <literallayout class='monospaced'>
+     IMAGE_FEATURES_append = " tools-debug"
+                    </literallayout>
+                    </para></listitem>
+                <listitem><para>
+                    Ensure that debug symbols are present.
+                    You can make sure these symbols are present by installing
+                    <filename>-dbg</filename>:
+                    <literallayout class='monospaced'>
+     IMAGE_INSTALL_append = " <replaceable>packagename</replaceable>-dbg"
+                    </literallayout>
+                    Alternatively, you can do the following to include all the
+                    debug symbols:
+                    <literallayout class='monospaced'>
+     IMAGE_FEATURES_append = " dbg-pkgs"
+                    </literallayout>
+                    </para></listitem>
+            </itemizedlist>
+            <note>
+                To improve the debug information accuracy, you can reduce the
+                level of optimization used by the compiler.
+                For example, when adding the following line to your
+                <filename>local.conf</filename> file, you will reduce
+                optimization from
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-FULL_OPTIMIZATION'><filename>FULL_OPTIMIZATION</filename></ulink>
+                of "-O2" to
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-DEBUG_OPTIMIZATION'><filename>DEBUG_OPTIMIZATION</filename></ulink>
+                of "-O -fno-omit-frame-pointer":
+                <literallayout class='monospaced'>
+     DEBUG_BUILD = "1"
+                </literallayout>
+                Consider that this will reduce the application's performance
+                and is recommended only for debugging purposes.
+            </note>
+        </para>
+    </section>
 
     <section id='debugging-parallel-make-races'>
         <title>Debugging Parallel Make Races</title>
@@ -9736,265 +10572,6 @@
         </section>
     </section>
 
-<!--
-    <section id="platdev-oprofile">
-        <title>Profiling with OProfile</title>
-
-        <para>
-            <ulink url="http://oprofile.sourceforge.net/">OProfile</ulink> is a
-            statistical profiler well suited for finding performance
-            bottlenecks in both user-space software and in the kernel.
-            This profiler provides answers to questions like "Which functions does my application spend
-            the most time in when doing X?"
-            Because the OpenEmbedded build system is well integrated with OProfile, it makes profiling
-            applications on target hardware straight forward.
-            <note>
-                For more information on how to set up and run OProfile, see the
-                "<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-oprofile'>oprofile</ulink>"
-                section in the Yocto Project Profiling and Tracing Manual.
-            </note>
-        </para>
-
-        <para>
-            To use OProfile, you need an image that has OProfile installed.
-            The easiest way to do this is with "tools-profile" in the
-            <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'>IMAGE_FEATURES</ulink></filename> variable.
-            You also need debugging symbols to be available on the system where the analysis
-            takes place.
-            You can gain access to the symbols by using "dbg-pkgs" in the
-            <filename>IMAGE_FEATURES</filename> variable or by
-            installing the appropriate debug (<filename>-dbg</filename>)
-            packages.
-        </para>
-
-        <para>
-            For successful call graph analysis, the binaries must preserve the frame
-            pointer register and should also be compiled with the
-            <filename>-fno-omit-framepointer</filename> flag.
-            You can achieve this by setting the
-            <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-SELECTED_OPTIMIZATION'>SELECTED_OPTIMIZATION</ulink></filename>
-            variable with the following options:
-            <literallayout class='monospaced'>
-     -fexpensive-optimizations
-     -fno-omit-framepointer
-     -frename-registers
-     -O2
-            </literallayout>
-            You can also achieve it by setting the
-            <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-DEBUG_BUILD'>DEBUG_BUILD</ulink></filename>
-            variable to "1" in the <filename>local.conf</filename> configuration file.
-            If you use the <filename>DEBUG_BUILD</filename> variable,
-            you also add extra debugging information that can make the debug
-            packages large.
-        </para>
-
-        <section id="platdev-oprofile-target">
-            <title>Profiling on the Target</title>
-
-            <para>
-                Using OProfile, you can perform all the profiling work on the target device.
-                A simple OProfile session might look like the following:
-            </para>
-
-            <para>
-                <literallayout class='monospaced'>
-     # opcontrol &dash;&dash;reset
-     # opcontrol &dash;&dash;start &dash;&dash;separate=lib &dash;&dash;no-vmlinux -c 5
-              .
-              .
-        [do whatever is being profiled]
-              .
-              .
-     # opcontrol &dash;&dash;stop
-     $ opreport -cl
-                </literallayout>
-            </para>
-
-            <para>
-                In this example, the <filename>reset</filename> command clears any previously profiled data.
-                The next command starts OProfile.
-                The options used when starting the profiler separate dynamic library data
-                within applications, disable kernel profiling, and enable callgraphing up to
-                five levels deep.
-                <note>
-                    To profile the kernel, you would specify the
-                    <filename>&dash;&dash;vmlinux=/path/to/vmlinux</filename> option.
-                    The <filename>vmlinux</filename> file is usually in the source directory in the
-                    <filename>/boot/</filename> directory and must match the running kernel.
-                </note>
-            </para>
-
-            <para>
-                After you perform your profiling tasks, the next command stops the profiler.
-                After that, you can view results with the <filename>opreport</filename> command with options
-                to see the separate library symbols and callgraph information.
-            </para>
-
-            <para>
-                Callgraphing logs information about time spent in functions and about a function's
-                calling function (parent) and called functions (children).
-                The higher the callgraphing depth, the more accurate the results.
-                However, higher depths also increase the logging overhead.
-                Consequently, you should take care when setting the callgraphing depth.
-                <note>
-                    On ARM, binaries need to have the frame pointer enabled for callgraphing to work.
-                    To accomplish this use the <filename>-fno-omit-framepointer</filename> option
-                    with <filename>gcc</filename>.
-                </note>
-            </para>
-
-            <para>
-                For more information on using OProfile, see the OProfile
-                online documentation at
-                <ulink url="http://oprofile.sourceforge.net/docs/"/>.
-            </para>
-        </section>
-
-        <section id="platdev-oprofile-oprofileui">
-            <title>Using OProfileUI</title>
-
-            <para>
-                A graphical user interface for OProfile is also available.
-                You can download and build this interface from the Yocto Project at
-                <ulink url="&YOCTO_GIT_URL;/cgit.cgi/oprofileui/"></ulink>.
-                If the "tools-profile" image feature is selected, all necessary binaries
-                are installed onto the target device for OProfileUI interaction.
-                For a list of image features that ship with the Yocto Project,
-                see the
-                "<ulink url='&YOCTO_DOCS_REF_URL;#ref-features-image'>Image Features</ulink>"
-                section in the Yocto Project Reference Manual.
-            </para>
-
-            <para>
-                Even though the source directory usually includes all needed patches on the target device, you
-                might find you need other OProfile patches for recent OProfileUI features.
-                If so, see the <ulink url='&YOCTO_GIT_URL;/cgit.cgi/oprofileui/tree/README'>
-                OProfileUI README</ulink> for the most recent information.
-            </para>
-
-            <section id="platdev-oprofile-oprofileui-online">
-                <title>Online Mode</title>
-
-                <para>
-                    Using OProfile in online mode assumes a working network connection with the target
-                    hardware.
-                    With this connection, you just need to run "oprofile-server" on the device.
-                    By default, OProfile listens on port 4224.
-                    <note>
-                        You can change the port using the <filename>&dash;&dash;port</filename> command-line
-                        option.
-                    </note>
-                </para>
-
-                <para>
-                    The client program is called <filename>oprofile-viewer</filename> and its UI is relatively
-                    straight forward.
-                    You access key functionality through the buttons on the toolbar, which
-                    are duplicated in the menus.
-                    Here are the buttons:
-                    <itemizedlist>
-                        <listitem><para><emphasis>Connect:</emphasis> Connects to the remote host.
-                            You can also supply the IP address or hostname.</para></listitem>
-                        <listitem><para><emphasis>Disconnect:</emphasis> Disconnects from the target.
-                            </para></listitem>
-                        <listitem><para><emphasis>Start:</emphasis> Starts profiling on the device.
-                            </para></listitem>
-                        <listitem><para><emphasis>Stop:</emphasis> Stops profiling on the device and
-                            downloads the data to the local host.
-                            Stopping the profiler generates the profile and displays it in the viewer.
-                            </para></listitem>
-                        <listitem><para><emphasis>Download:</emphasis> Downloads the data from the
-                            target and generates the profile, which appears in the viewer.</para></listitem>
-                        <listitem><para><emphasis>Reset:</emphasis> Resets the sample data on the device.
-                            Resetting the data removes sample information collected from previous
-                            sampling runs.
-                            Be sure you reset the data if you do not want to include old sample information.
-                            </para></listitem>
-                        <listitem><para><emphasis>Save:</emphasis> Saves the data downloaded from the
-                            target to another directory for later examination.</para></listitem>
-                        <listitem><para><emphasis>Open:</emphasis> Loads previously saved data.
-                            </para></listitem>
-                    </itemizedlist>
-                </para>
-
-                <para>
-                    The client downloads the complete profile archive from
-                    the target to the host for processing.
-                    This archive is a directory that contains the sample data, the object files,
-                    and the debug information for the object files.
-                    The archive is then converted using the <filename>oparchconv</filename> script, which is
-                    included in this distribution.
-                    The script uses <filename>opimport</filename> to convert the archive from
-                    the target to something that can be processed on the host.
-                </para>
-
-                <para>
-                    Downloaded archives reside in the
-                    <link linkend='build-directory'>Build Directory</link> in
-                    <filename>tmp</filename> and are cleared up when they are no longer in use.
-                </para>
-
-                <para>
-                    If you wish to perform kernel profiling, you need to be sure
-                    a <filename>vmlinux</filename> file that matches the running kernel is available.
-                    In the source directory, that file is usually located in
-                    <filename>/boot/vmlinux-<replaceable>kernelversion</replaceable></filename>, where
-                    <filename><replaceable>kernelversion</replaceable></filename> is the version of the kernel.
-                    The OpenEmbedded build system generates separate <filename>vmlinux</filename>
-                    packages for each kernel it builds.
-                    Thus, it should just be a question of making sure a matching package is
-                    installed (e.g. <filename>opkg install kernel-vmlinux</filename>).
-                    The files are automatically installed into development and profiling images
-                    alongside OProfile.
-                    A configuration option exists within the OProfileUI settings page that you can use to
-                    enter the location of the <filename>vmlinux</filename> file.
-                </para>
-
-                <para>
-                    Waiting for debug symbols to transfer from the device can be slow, and it
-                    is not always necessary to actually have them on the device for OProfile use.
-                    All that is needed is a copy of the filesystem with the debug symbols present
-                    on the viewer system.
-                    The "<link linkend='platdev-gdb-remotedebug-launch-gdb'>Launch GDB on the Host Computer</link>"
-                    section covers how to create such a directory within
-                    the source directory and how to use the OProfileUI Settings
-                    Dialog to specify the location.
-                    If you specify the directory, it will be used when the file checksums
-                    match those on the system you are profiling.
-                </para>
-            </section>
-
-            <section id="platdev-oprofile-oprofileui-offline">
-                <title>Offline Mode</title>
-
-                <para>
-                    If network access to the target is unavailable, you can generate
-                    an archive for processing in <filename>oprofile-viewer</filename> as follows:
-                    <literallayout class='monospaced'>
-     # opcontrol &dash;&dash;reset
-     # opcontrol &dash;&dash;start &dash;&dash;separate=lib &dash;&dash;no-vmlinux -c 5
-            .
-            .
-     [do whatever is being profiled]
-            .
-            .
-     # opcontrol &dash;&dash;stop
-     # oparchive -o my_archive
-                    </literallayout>
-                </para>
-
-                <para>
-                    In the above example, <filename>my_archive</filename> is the name of the
-                    archive directory where you would like the profile archive to be kept.
-                    After the directory is created, you can copy it to another host and load it
-                    using <filename>oprofile-viewer</filename> open functionality.
-                    If necessary, the archive is converted.
-                </para>
-            </section>
-        </section>
-    </section>
--->
-
     <section id='maintaining-open-source-license-compliance-during-your-products-lifecycle'>
         <title>Maintaining Open Source License Compliance During Your Product's Lifecycle</title>
 
@@ -10113,12 +10690,31 @@
                 tarballs for licenses that require the release of
                 source.
                 Let us assume you are only concerned with GPL code as
-                identified with the following:
+                identified by running the following script:
                 <literallayout class='monospaced'>
-     $ cd poky/build/tmp/deploy/sources
-     $ mkdir ~/gpl_source_release
-     $ for dir in */*GPL*; do cp -r $dir ~/gpl_source_release; done
-                </literallayout>
+     # Script to archive a subset of packages matching specific license(s)
+     # Source and license files are copied into sub folders of package folder
+     # Must be run from build folder
+     #!/bin/bash
+     src_release_dir="source-release"
+     mkdir -p $src_release_dir
+     for a in tmp/deploy/sources/*; do
+        for d in $a/*; do
+           # Get package name from path
+           p=`basename $d`
+           p=${p%-*}
+           p=${p%-*}
+           # Only archive GPL packages (update *GPL* regex for your license check)
+           numfiles=`ls tmp/deploy/licenses/$p/*GPL* 2> /dev/null | wc -l`
+           if [ $numfiles -gt 1 ]; then
+              echo Archiving $p
+              mkdir -p $src_release_dir/$p/source
+              cp $d/* $src_release_dir/$p/source 2> /dev/null
+              mkdir -p $src_release_dir/$p/license
+              cp tmp/deploy/licenses/$p/* $src_release_dir/$p/license 2> /dev/null
+           fi
+        done
+     done                </literallayout>
                 At this point, you could create a tarball from the
                 <filename>gpl_source_release</filename> directory and
                 provide that to the end user.
diff --git a/import-layers/yocto-poky/documentation/dev-manual/dev-manual-model.xml b/import-layers/yocto-poky/documentation/dev-manual/dev-manual-model.xml
index ff44a3f..1008e11 100644
--- a/import-layers/yocto-poky/documentation/dev-manual/dev-manual-model.xml
+++ b/import-layers/yocto-poky/documentation/dev-manual/dev-manual-model.xml
@@ -646,16 +646,20 @@
 
         <para>
             The remainder of this section presents these workflows.
+            See the
+            "<ulink url='&YOCTO_DOCS_REF_URL;#ref-devtool-reference'><filename>devtool</filename>&nbsp;Quick Reference</ulink>"
+            in the Yocto Project Reference Manual for a
+            <filename>devtool</filename> quick reference.
         </para>
 
         <section id='use-devtool-to-integrate-new-code'>
-            <title>Use <filename>devtool add</filename> to Integrate New Code</title>
+            <title>Use <filename>devtool add</filename> to Add an Application</title>
 
             <para>
                 The <filename>devtool add</filename> command generates
                 a new recipe based on existing source code.
                 This command takes advantage of the
-                <link linkend='devtool-the-workspace-layer-structure'>workspace</link>
+                <ulink url='&YOCTO_DOCS_DEV_URL;#devtool-the-workspace-layer-structure'>workspace</ulink>
                 layer that many <filename>devtool</filename> commands
                 use.
                 The command is flexible enough to allow you to extract source
@@ -721,7 +725,8 @@
                                 and needs to be extracted to some
                                 local area - this time outside of the default
                                 workspace.
-                                As always, if required <filename>devtool</filename> creates
+                                If required, <filename>devtool</filename>
+                                always creates
                                 a Git repository locally during the extraction.
                                 Furthermore, the first positional argument
                                 <replaceable>srctree</replaceable> in this case
@@ -788,10 +793,6 @@
                         <para>If you need to take the build output and eventually
                         move it to the target hardware, you would use
                         <filename>devtool build</filename>:
-                        <note>
-                            You could use <filename>bitbake</filename> to build
-                            the recipe as well.
-                        </note>
                         <literallayout class='monospaced'>
      $ devtool build <replaceable>recipe</replaceable>
                         </literallayout></para>
@@ -831,49 +832,44 @@
                         However, <filename>devtool</filename> does not provide a
                         specific command that allows you to do this.
                         </para></listitem>
-                    <listitem><para><emphasis>Optionally Update the Recipe With Patch Files</emphasis>:
-                        Once you are satisfied with the recipe, if you have made
-                        any changes to the source tree that you want to have
-                        applied by the recipe, you need to generate patches
-                        from those changes.
-                        You do this before moving the recipe
-                        to its final layer and cleaning up the workspace area
-                        <filename>devtool</filename> uses.
-                        This optional step is especially relevant if you are
-                        using or adding third-party software.</para>
-                        <para>To convert commits created using Git to patch files,
-                        use the <filename>devtool update-recipe</filename> command.
+                    <listitem><para>
+                        <emphasis>Finish Your Work With the Recipe</emphasis>:
+                        The <filename>devtool finish</filename> command creates
+                        any patches corresponding to commits in the local
+                        Git repository, moves the new recipe to a more permanent
+                        layer, and then resets the recipe so that the recipe is
+                        built normally rather than from the workspace.
+                        <literallayout class='monospaced'>
+     $ devtool finish <replaceable>recipe layer</replaceable>
+                        </literallayout>
                         <note>
                             Any changes you want to turn into patches must be
                             committed to the Git repository in the source tree.
+                        </note></para>
+
+                        <para>As mentioned, the <filename>devtool finish</filename>
+                        command moves the final recipe to its permanent layer.
+                        </para>
+
+                        <para>As a final process of the
+                        <filename>devtool finish</filename> command, the state
+                        of the standard layers and the upstream source is
+                        restored so that you can build the recipe from those
+                        areas rather than the workspace.
+                        <note>
+                            You can use the <filename>devtool reset</filename>
+                            command to put things back should you decide you
+                            do not want to proceed with your work.
+                            If you do use this command, realize that the source
+                            tree is preserved.
                         </note>
-                        <literallayout class='monospaced'>
-     $ devtool update-recipe <replaceable>recipe</replaceable>
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Move the Recipe to its Permanent Layer</emphasis>:
-                        Before cleaning up the workspace, you need to move the
-                        final recipe to its permanent layer.
-                        You must do this before using the
-                        <filename>devtool reset</filename> command if you want to
-                        retain the recipe.
-                        </para></listitem>
-                    <listitem><para><emphasis>Reset the Recipe</emphasis>:
-                        As a final step, you can restore the state such that
-                        standard layers and the upstream source is used to build
-                        the recipe rather than data in the workspace.
-                        To reset the recipe, use the <filename>devtool reset</filename>
-                        command:
-                        <literallayout class='monospaced'>
-     $ devtool reset <replaceable>recipe</replaceable>
-                        </literallayout>
                         </para></listitem>
                 </orderedlist>
             </para>
         </section>
 
         <section id='devtool-use-devtool-modify-to-enable-work-on-code-associated-with-an-existing-recipe'>
-            <title>Use <filename>devtool modify</filename> to Enable Work on Code Associated with an Existing Recipe</title>
+            <title>Use <filename>devtool modify</filename> to Modify the Source of an Existing Component</title>
 
             <para>
                 The <filename>devtool modify</filename> command prepares the
@@ -1028,17 +1024,12 @@
                     <listitem><para><emphasis>Build the Recipe</emphasis>:
                         Once you have updated the source files, you can build
                         the recipe.
-                        You can either use <filename>devtool build</filename> or
-                        <filename>bitbake</filename>.
-                        Either method produces build output that is stored
-                        in
-                        <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>.
                         </para></listitem>
                     <listitem><para><emphasis>Deploy the Build Output</emphasis>:
                         When you use the <filename>devtool build</filename>
-                        command or <filename>bitbake</filename> to build out your
-                        recipe, you probably want to see if the resulting build
-                        output works as expected on target hardware.
+                        command to build out your recipe, you probably want to see
+                        if the resulting build output works as expected on target
+                        hardware.
                         <note>
                             This step assumes you have a previously built
                             image that is already either running in QEMU or
@@ -1062,42 +1053,43 @@
                         However, <filename>devtool</filename> does not provide a
                         specific command that allows you to do this.
                         </para></listitem>
-                    <listitem><para><emphasis>Optionally Create Patch Files for Your Changes</emphasis>:
-                        After you have debugged your changes, you can
-                        use <filename>devtool update-recipe</filename> to
-                        generate patch files for all the commits you have
-                        made.
-                        <note>
-                            Patch files are generated only for changes
-                            you have committed.
-                        </note>
+                    <listitem><para>
+                        <emphasis>Finish Your Work With the Recipe</emphasis>:
+                        The <filename>devtool finish</filename> command creates
+                        any patches corresponding to commits in the local
+                        Git repository, updates the recipe to point to them
+                        (or creates a <filename>.bbappend</filename> file to do
+                        so, depending on the specified destination layer), and
+                        then resets the recipe so that the recipe is built normally
+                        rather than from the workspace.
                         <literallayout class='monospaced'>
-     $ devtool update-recipe <replaceable>recipe</replaceable>
+     $ devtool finish <replaceable>recipe layer</replaceable>
                         </literallayout>
-                        By default, the
-                        <filename>devtool update-recipe</filename> command
-                        creates the patch files in a folder named the same
-                        as the recipe beneath the folder in which the recipe
-                        resides, and updates the recipe's
-                        <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
-                        statement to point to the generated patch files.
                         <note>
-                            You can use the
-                            "--append <replaceable>LAYERDIR</replaceable>"
-                            option to cause the command to create append files
-                            in a specific layer rather than the default
-                            recipe layer.
+                            Any changes you want to turn into patches must be
+                            committed to the Git repository in the source tree.
+                        </note></para>
+
+                        <para>Because there is no need to move the recipe,
+                        <filename>devtool finish</filename> either updates the
+                        original recipe in the original layer or the command
+                        creates a <filename>.bbappend</filename> in a different
+                        layer as provided by <replaceable>layer</replaceable>.
+                        </para>
+
+                        <para>As a final process of the
+                        <filename>devtool finish</filename> command, the state
+                        of the standard layers and the upstream source is
+                        restored so that you can build the recipe from those
+                        areas rather than the workspace.
+                        <note>
+                            You can use the <filename>devtool reset</filename>
+                            command to put things back should you decide you
+                            do not want to proceed with your work.
+                            If you do use this command, realize that the source
+                            tree is preserved.
                         </note>
                         </para></listitem>
-                    <listitem><para><emphasis>Restore the Workspace</emphasis>:
-                        The <filename>devtool reset</filename> restores the
-                        state so that standard layers and upstream sources are
-                        used to build the recipe rather than what is in the
-                        workspace.
-                        <literallayout class='monospaced'>
-     $ devtool reset <replaceable>recipe</replaceable>
-                        </literallayout>
-                        </para></listitem>
                 </orderedlist>
             </para>
         </section>
@@ -1229,633 +1221,42 @@
                         However, <filename>devtool</filename> does not provide a
                         specific command that allows you to do this.
                         </para></listitem>
-                    <listitem><para><emphasis>Optionally Create Patch Files for Your Changes</emphasis>:
-                        After you have debugged your changes, you can
-                        use <filename>devtool update-recipe</filename> to
-                        generate patch files for all the commits you have
-                        made.
+                    <listitem><para>
+                        <emphasis>Finish Your Work With the Recipe</emphasis>:
+                        The <filename>devtool finish</filename> command creates
+                        any patches corresponding to commits in the local
+                        Git repository, moves the new recipe to a more permanent
+                        layer, and then resets the recipe so that the recipe is
+                        built normally rather than from the workspace.
+                        If you specify a destination layer that is the same as
+                        the original source, then the old version of the
+                        recipe and associated files will be removed prior to
+                        adding the new version.
+                        <literallayout class='monospaced'>
+     $ devtool finish <replaceable>recipe layer</replaceable>
+                        </literallayout>
                         <note>
-                            Patch files are generated only for changes
-                            you have committed.
+                            Any changes you want to turn into patches must be
+                            committed to the Git repository in the source tree.
+                        </note></para>
+                        <para>As a final process of the
+                        <filename>devtool finish</filename> command, the state
+                        of the standard layers and the upstream source is
+                        restored so that you can build the recipe from those
+                        areas rather than the workspace.
+                        <note>
+                            You can use the <filename>devtool reset</filename>
+                            command to put things back should you decide you
+                            do not want to proceed with your work.
+                            If you do use this command, realize that the source
+                            tree is preserved.
                         </note>
-                        <literallayout class='monospaced'>
-     $ devtool update-recipe <replaceable>recipe</replaceable>
-                        </literallayout>
-                        By default, the
-                        <filename>devtool update-recipe</filename> command
-                        creates the patch files in a folder named the same
-                        as the recipe beneath the folder in which the recipe
-                        resides, and updates the recipe's
-                        <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
-                        statement to point to the generated patch files.
-                        </para></listitem>
-                    <listitem><para><emphasis>Move the Recipe to its Permanent Layer</emphasis>:
-                        Before cleaning up the workspace, you need to move the
-                        final recipe to its permanent layer.
-                        You can either overwrite the original recipe or you can
-                        overlay the upgraded recipe into a separate layer.
-                        You must do this before using the
-                        <filename>devtool reset</filename> command if you want to
-                        retain the upgraded recipe.
-                        </para></listitem>
-                    <listitem><para><emphasis>Restore the Workspace</emphasis>:
-                        The <filename>devtool reset</filename> restores the
-                        state so that standard layers and upstream sources are
-                        used to build the recipe rather than what is in the
-                        workspace.
-                        <literallayout class='monospaced'>
-     $ devtool reset <replaceable>recipe</replaceable>
-                        </literallayout>
                         </para></listitem>
                 </orderedlist>
             </para>
         </section>
     </section>
 
-    <section id='devtool-quick-reference'>
-        <title><filename>devtool</filename> Quick Reference</title>
-
-        <para>
-            <filename>devtool</filename> has more functionality than simply
-            adding a new recipe and the supporting Metadata to a temporary
-            workspace layer.
-            This section provides a short reference on
-            <filename>devtool</filename> and its commands.
-        </para>
-
-        <section id='devtool-getting-help'>
-            <title>Getting Help</title>
-
-            <para>
-                The easiest way to get help with the
-                <filename>devtool</filename> command is using the
-                <filename>--help</filename> option:
-                <literallayout class='monospaced'>
-     usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q]
-                    [--color COLOR] [-h]
-                    &lt;subcommand&gt; ...
-
-     OpenEmbedded development tool
-
-     optional arguments:
-       --basepath BASEPATH  Base directory of SDK / build directory
-       --bbpath BBPATH      Explicitly specify the BBPATH, rather than getting it
-                            from the metadata
-       -d, --debug          Enable debug output
-       -q, --quiet          Print only errors
-       --color COLOR        Colorize output (where COLOR is auto, always, never)
-       -h, --help           show this help message and exit
-
-     subcommands:
-       Beginning work on a recipe:
-         add                  Add a new recipe
-         modify               Modify the source for an existing recipe
-         upgrade              Upgrade an existing recipe
-       Getting information:
-         status               Show workspace status
-         search               Search available recipes
-       Working on a recipe in the workspace:
-         build                Build a recipe
-         edit-recipe          Edit a recipe file in your workspace
-         configure-help       Get help on configure script options
-         update-recipe        Apply changes from external source tree to recipe
-         reset                Remove a recipe from your workspace
-       Testing changes on target:
-         deploy-target        Deploy recipe output files to live target machine
-         undeploy-target      Undeploy recipe output files in live target machine
-         build-image          Build image including workspace recipe packages
-       Advanced:
-         create-workspace     Set up workspace in an alternative location
-         extract              Extract the source for an existing recipe
-         sync                 Synchronize the source tree for an existing recipe
-     Use devtool &lt;subcommand&gt; --help to get help on a specific command
-                </literallayout>
-            </para>
-
-            <para>
-                As directed in the general help output, you can get more
-                syntax on a specific command by providing the command
-                name and using <filename>--help</filename>:
-                <literallayout class='monospaced'>
-     $ devtool add --help
-     usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI]
-                        [--version VERSION] [--no-git] [--binary] [--also-native]
-                        [--src-subdir SUBDIR]
-                        [recipename] [srctree] [fetchuri]
-
-     Adds a new recipe to the workspace to build a specified source tree. Can
-     optionally fetch a remote URI and unpack it to create the source tree.
-
-     positional arguments:
-       recipename            Name for new recipe to add (just name - no version,
-                             path or extension). If not specified, will attempt to
-                             auto-detect it.
-       srctree               Path to external source tree. If not specified, a
-                             subdirectory of
-                             /home/scottrif/poky/build/workspace/sources will be
-                             used.
-       fetchuri              Fetch the specified URI and extract it to create the
-                             source tree
-
-     optional arguments:
-       -h, --help            show this help message and exit
-       --same-dir, -s        Build in same directory as source
-       --no-same-dir         Force build in a separate build directory
-       --fetch URI, -f URI   Fetch the specified URI and extract it to create the
-                             source tree (deprecated - pass as positional argument
-                             instead)
-       --version VERSION, -V VERSION
-                             Version to use within recipe (PV)
-       --no-git, -g          If fetching source, do not set up source tree as a git
-                             repository
-       --binary, -b          Treat the source tree as something that should be
-                             installed verbatim (no compilation, same directory
-                             structure). Useful with binary packages e.g. RPMs.
-       --also-native         Also add native variant (i.e. support building recipe
-                             for the build host as well as the target machine)
-       --src-subdir SUBDIR   Specify subdirectory within source tree to use
-                </literallayout>
-            </para>
-        </section>
-
-        <section id='devtool-the-workspace-layer-structure'>
-            <title>The Workspace Layer Structure</title>
-
-            <para>
-                <filename>devtool</filename> uses a "Workspace" layer
-                in which to accomplish builds.
-                This layer is not specific to any single
-                <filename>devtool</filename> command but is rather a common
-                working area used across the tool.
-            </para>
-
-            <para>
-                The following figure shows the workspace structure:
-            </para>
-
-            <para>
-                <imagedata fileref="figures/build-workspace-directory.png"
-                    width="6in" depth="5in" align="left" scale="70" />
-            </para>
-
-            <para>
-                <literallayout class='monospaced'>
-     attic - A directory created if devtool believes it preserve
-             anything when you run "devtool reset".  For example, if you
-             run "devtool add", make changes to the recipe, and then
-             run "devtool reset", devtool takes notice that the file has
-             been changed and moves it into the attic should you still
-             want the recipe.
-
-     README - Provides information on what is in workspace layer and how to
-              manage it.
-
-     .devtool_md5 - A checksum file used by devtool.
-
-     appends - A directory that contains *.bbappend files, which point to
-               external source.
-
-     conf - A configuration directory that contains the layer.conf file.
-
-     recipes - A directory containing recipes.  This directory contains a
-               folder for each directory added whose name matches that of the
-               added recipe.  devtool places the <replaceable>recipe</replaceable>.bb file
-               within that sub-directory.
-
-     sources - A directory containing a working copy of the source files used
-               when building the recipe.  This is the default directory used
-               as the location of the source tree when you do not provide a
-               source tree path.  This directory contains a folder for each
-               set of source files matched to a corresponding recipe.
-                </literallayout>
-            </para>
-        </section>
-
-        <section id='devtool-adding-a-new-recipe-to-the-workspace'>
-            <title>Adding a New Recipe to the Workspace Layer</title>
-
-            <para>
-                Use the <filename>devtool add</filename> command to add a new recipe
-                to the workspace layer.
-                The recipe you add should not exist -
-                <filename>devtool</filename> creates it for you.
-                The source files the recipe uses should exist in an external
-                area.
-            </para>
-
-            <para>
-                The following example creates and adds a new recipe named
-                <filename>jackson</filename> to a workspace layer the tool creates.
-                The source code built by the recipes resides in
-                <filename>/home/scottrif/sources/jackson</filename>:
-                <literallayout class='monospaced'>
-     $ devtool add jackson /home/scottrif/sources/jackson
-                </literallayout>
-            </para>
-
-            <para>
-                If you add a recipe and the workspace layer does not exist,
-                the command creates the layer and populates it as
-                described in
-                "<link linkend='devtool-the-workspace-layer-structure'>The Workspace Layer Structure</link>"
-                section.
-            </para>
-
-            <para>
-                Running <filename>devtool add</filename> when the
-                workspace layer exists causes the tool to add the recipe,
-                append files, and source files into the existing workspace layer.
-                The <filename>.bbappend</filename> file is created to point
-                to the external source tree.
-            </para>
-        </section>
-
-        <section id='devtool-extracting-the-source-for-an-existing-recipe'>
-            <title>Extracting the Source for an Existing Recipe</title>
-
-            <para>
-                Use the <filename>devtool extract</filename> command to
-                extract the source for an existing recipe.
-                When you use this command, you must supply the root name
-                of the recipe (i.e. no version, paths, or extensions), and
-                you must supply the directory to which you want the source
-                extracted.
-            </para>
-
-            <para>
-                Additional command options let you control the name of a
-                development branch into which you can checkout the source
-                and whether or not to keep a temporary directory, which is
-                useful for debugging.
-            </para>
-        </section>
-
-        <section id='devtool-synchronizing-a-recipes-extracted-source-tree'>
-            <title>Synchronizing a Recipe's Extracted Source Tree</title>
-
-            <para>
-                Use the <filename>devtool sync</filename> command to
-                synchronize a previously extracted source tree for an
-                existing recipe.
-                When you use this command, you must supply the root name
-                of the recipe (i.e. no version, paths, or extensions), and
-                you must supply the directory to which you want the source
-                extracted.
-            </para>
-
-            <para>
-                Additional command options let you control the name of a
-                development branch into which you can checkout the source
-                and whether or not to keep a temporary directory, which is
-                useful for debugging.
-            </para>
-        </section>
-
-        <section id='devtool-modifying-a-recipe'>
-            <title>Modifying an Existing Recipe</title>
-
-            <para>
-                Use the <filename>devtool modify</filename> command to begin
-                modifying the source of an existing recipe.
-                This command is very similar to the
-                <link linkend='devtool-adding-a-new-recipe-to-the-workspace'><filename>add</filename></link>
-                command except that it does not physically create the
-                recipe in the workspace layer because the recipe already
-                exists in an another layer.
-            </para>
-
-            <para>
-                The <filename>devtool modify</filename> command extracts the
-                source for a recipe, sets it up as a Git repository if the
-                source had not already been fetched from Git, checks out a
-                branch for development, and applies any patches from the recipe
-                as commits on top.
-                You can use the following command to checkout the source
-                files:
-                <literallayout class='monospaced'>
-     $ devtool modify <replaceable>recipe</replaceable>
-                </literallayout>
-                Using the above command form, <filename>devtool</filename> uses
-                the existing recipe's
-                <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
-                statement to locate the upstream source, extracts the source
-                into the default sources location in the workspace.
-                The default development branch used is "devtool".
-            </para>
-        </section>
-
-        <section id='devtool-edit-an-existing-recipe'>
-            <title>Edit an Existing Recipe</title>
-
-            <para>
-                Use the <filename>devtool edit-recipe</filename> command
-                to run the default editor, which is identified using the
-                <filename>EDITOR</filename> variable, on the specified recipe.
-            </para>
-
-            <para>
-                When you use the <filename>devtool edit-recipe</filename>
-                command, you must supply the root name of the recipe
-                (i.e. no version, paths, or extensions).
-                Also, the recipe file itself must reside in the workspace
-                as a result of the <filename>devtool add</filename> or
-                <filename>devtool upgrade</filename> commands.
-                However, you can override that requirement by using the
-                "-a" or "--any-recipe" option.
-                Using either of these options allows you to edit any recipe
-                regardless of its location.
-            </para>
-        </section>
-
-        <section id='devtool-updating-a-recipe'>
-            <title>Updating a Recipe</title>
-
-            <para>
-                Use the <filename>devtool update-recipe</filename> command to
-                update your recipe with patches that reflect changes you make
-                to the source files.
-                For example, if you know you are going to work on some
-                code, you could first use the
-                <link linkend='devtool-modifying-a-recipe'><filename>devtool modify</filename></link>
-                command to extract the code and set up the workspace.
-                After which, you could modify, compile, and test the code.
-            </para>
-
-            <para>
-                When you are satisfied with the results and you have committed
-                your changes to the Git repository, you can then
-                run the <filename>devtool update-recipe</filename> to create the
-                patches and update the recipe:
-                <literallayout class='monospaced'>
-     $ devtool update-recipe <replaceable>recipe</replaceable>
-                </literallayout>
-                If you run the <filename>devtool update-recipe</filename>
-                without committing your changes, the command ignores the
-                changes.
-             </para>
-
-             <para>
-                 Often, you might want to apply customizations made to your
-                 software in your own layer rather than apply them to the
-                 original recipe.
-                 If so, you can use the
-                 <filename>-a</filename> or <filename>--append</filename>
-                 option with the <filename>devtool update-recipe</filename>
-                 command.
-                 These options allow you to specify the layer into which to
-                 write an append file:
-                 <literallayout class='monospaced'>
-     $ devtool update-recipe <replaceable>recipe</replaceable> -a <replaceable>base-layer-directory</replaceable>
-                 </literallayout>
-                 The <filename>*.bbappend</filename> file is created at the
-                 appropriate path within the specified layer directory, which
-                 may or may not be in your <filename>bblayers.conf</filename>
-                 file.
-                 If an append file already exists, the command updates it
-                 appropriately.
-            </para>
-        </section>
-
-        <section id='devtool-upgrading-a-recipe'>
-            <title>Upgrading a Recipe</title>
-
-            <para>
-                Use the <filename>devtool upgrade</filename> command
-                to upgrade an existing recipe to a new upstream version.
-                The command puts the upgraded recipe file into the
-                workspace along with any associated files, and extracts
-                the source tree to a specified location should patches
-                need rebased or added to as a result of the upgrade.
-            </para>
-
-            <para>
-                When you use the <filename>devtool upgrade</filename> command,
-                you must supply the root name of the recipe (i.e. no version,
-                paths, or extensions), and you must supply the directory
-                to which you want the source extracted.
-                Additional command options let you control things such as
-                the version number to which you want to upgrade (i.e. the
-                <ulink url='&YOCTO_DOCS_REF_URL;#var-PV'><filename>PV</filename></ulink>),
-                the source revision to which you want to upgrade (i.e. the
-                <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>,
-                whether or not to apply patches, and so forth.
-            </para>
-        </section>
-
-        <section id='devtool-resetting-a-recipe'>
-            <title>Resetting a Recipe</title>
-
-            <para>
-                Use the <filename>devtool reset</filename> command to remove a
-                recipe and its configuration (e.g. the corresponding
-                <filename>.bbappend</filename> file) from the workspace layer.
-                Realize that this command deletes the recipe and the
-                append file.
-                The command does not physically move them for you.
-                Consequently, you must be sure to physically relocate your
-                updated recipe and the append file outside of the workspace
-                layer before running the <filename>devtool reset</filename>
-                command.
-            </para>
-
-            <para>
-                If the <filename>devtool reset</filename> command detects that
-                the recipe or the append files have been modified, the
-                command preserves the modified files in a separate "attic"
-                subdirectory under the workspace layer.
-            </para>
-
-            <para>
-                Here is an example that resets the workspace directory that
-                contains the <filename>mtr</filename> recipe:
-                <literallayout class='monospaced'>
-     $ devtool reset mtr
-     NOTE: Cleaning sysroot for recipe mtr...
-     NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no
-        longer need it then please delete it manually
-     $
-                </literallayout>
-            </para>
-        </section>
-
-        <section id='devtool-building-your-recipe'>
-            <title>Building Your Recipe</title>
-
-            <para>
-                Use the <filename>devtool build</filename> command to cause the
-                OpenEmbedded build system to build your recipe.
-                The <filename>devtool build</filename> command is equivalent to
-                <filename>bitbake -c populate_sysroot</filename>.
-            </para>
-
-            <para>
-                When you use the <filename>devtool build</filename> command,
-                you must supply the root name of the recipe (i.e. no version,
-                paths, or extensions).
-                You can use either the "-s" or the "--disable-parallel-make"
-                option to disable parallel makes during the build.
-                Here is an example:
-                <literallayout class='monospaced'>
-     $ devtool build <replaceable>recipe</replaceable>
-                </literallayout>
-            </para>
-        </section>
-
-        <section id='devtool-building-your-image'>
-            <title>Building Your Image</title>
-
-            <para>
-                Use the <filename>devtool build-image</filename> command
-                to build an image, extending it to include packages from
-                recipes in the workspace.
-                Using this command is useful when you want an image that
-                ready for immediate deployment onto a device for testing.
-                For proper integration into a final image, you need to
-                edit your custom image recipe appropriately.
-            </para>
-
-            <para>
-                When you use the <filename>devtool build-image</filename>
-                command, you must supply the name of the image.
-                This command has no command line options:
-                <literallayout class='monospaced'>
-     $ devtool build-image <replaceable>image</replaceable>
-                </literallayout>
-            </para>
-        </section>
-
-        <section id='devtool-deploying-your-software-on-the-target-machine'>
-            <title>Deploying Your Software on the Target Machine</title>
-
-            <para>
-                Use the <filename>devtool deploy-target</filename> command to
-                deploy the recipe's build output to the live target machine:
-                <literallayout class='monospaced'>
-     $ devtool deploy-target <replaceable>recipe</replaceable>&nbsp;<replaceable>target</replaceable>
-                </literallayout>
-                The <replaceable>target</replaceable> is the address of the
-                target machine, which must be running an SSH server (i.e.
-                <filename>user@hostname[:destdir]</filename>).
-            </para>
-
-            <para>
-                This command deploys all files installed during the
-                <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
-                task.
-                Furthermore, you do not need to have package management enabled
-                within the target machine.
-                If you do, the package manager is bypassed.
-                <note><title>Notes</title>
-                    <para>
-                        The <filename>deploy-target</filename>
-                        functionality is for development only.
-                        You should never use it to update an image that will be
-                        used in production.
-                    </para>
-                </note>
-            </para>
-        </section>
-
-        <section id='devtool-removing-your-software-from-the-target-machine'>
-            <title>Removing Your Software from the Target Machine</title>
-
-            <para>
-                Use the <filename>devtool undeploy-target</filename> command to
-                remove deployed build output from the target machine.
-                For the <filename>devtool undeploy-target</filename> command to
-                work, you must have previously used the
-                <link linkend='devtool-deploying-your-software-on-the-target-machine'><filename>devtool deploy-target</filename></link>
-                command.
-                <literallayout class='monospaced'>
-     $ devtool undeploy-target <replaceable>recipe</replaceable>&nbsp;<replaceable>target</replaceable>
-                </literallayout>
-                The <replaceable>target</replaceable> is the address of the
-                target machine, which must be running an SSH server (i.e.
-                <filename>user@hostname</filename>).
-            </para>
-        </section>
-
-        <section id='devtool-creating-the-workspace'>
-            <title>Creating the Workspace Layer in an Alternative Location</title>
-
-            <para>
-                Use the <filename>devtool create-workspace</filename> command to
-                create a new workspace layer in your
-                <link linkend='build-directory'>Build Directory</link>.
-                When you create a new workspace layer, it is populated with the
-                <filename>README</filename> file and the
-                <filename>conf</filename> directory only.
-            </para>
-
-            <para>
-                The following example creates a new workspace layer in your
-                current working and by default names the workspace layer
-                "workspace":
-                <literallayout class='monospaced'>
-     $ devtool create-workspace
-                </literallayout>
-            </para>
-
-            <para>
-                You can create a workspace layer anywhere by supplying
-                a pathname with the command.
-                The following command creates a new workspace layer named
-                "new-workspace":
-                <literallayout class='monospaced'>
-     $ devtool create-workspace /home/scottrif/new-workspace
-                </literallayout>
-            </para>
-        </section>
-
-        <section id='devtool-get-the-status-of-the-recipes-in-your-workspace'>
-            <title>Get the Status of the Recipes in Your Workspace</title>
-
-            <para>
-                Use the <filename>devtool status</filename> command to
-                list the recipes currently in your workspace.
-                Information includes the paths to their respective
-                external source trees.
-            </para>
-
-            <para>
-                The <filename>devtool status</filename> command has no
-                command-line options:
-                <literallayout class='monospaced'>
-     devtool status
-                </literallayout>
-                Following is sample output after using
-                <link linkend='devtool-adding-a-new-recipe-to-the-workspace'><filename>devtool add</filename></link>
-                to create and add the <filename>mtr_0.86.bb</filename> recipe
-                to the <filename>workspace</filename> directory:
-                <literallayout class='monospaced'>
-     $ devtool status
-     mtr: /home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb)
-     $
-                </literallayout>
-            </para>
-        </section>
-
-        <section id='devtool-search-for-available-target-recipes'>
-            <title>Search for Available Target Recipes</title>
-
-            <para>
-                Use the <filename>devtool search</filename> command to
-                search for available target recipes.
-                The command matches the recipe name, package name,
-                description, and installed files.
-                The command displays the recipe name as a result of a
-                match.
-            </para>
-
-            <para>
-                When you use the <filename>devtool search</filename> command,
-                you must supply a <replaceable>keyword</replaceable>.
-                The command uses the <replaceable>keyword</replaceable> when
-                searching for a match.
-            </para>
-        </section>
-    </section>
-
     <section id="using-a-quilt-workflow">
         <title>Using Quilt in Your Workflow</title>
 
@@ -2192,4 +1593,62 @@
     </note>
 </section>
 
+<section id="platdev-appdev-devpyshell">
+    <title>Using a Development Python Shell</title>
+
+    <para>
+        Similar to working within a development shell as described in
+        the previous section, you can also spawn and work within an
+        interactive Python development shell.
+        When debugging certain commands or even when just editing packages,
+        <filename>devpyshell</filename> can be a useful tool.
+        When you invoke <filename>devpyshell</filename>, all tasks up to and
+        including
+        <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-patch'><filename>do_patch</filename></ulink>
+        are run for the specified target.
+        Then a new terminal is opened.
+        Additionally, key Python objects and code are available in the same
+        way they are to BitBake tasks, in particular, the data store 'd'.
+        So, commands such as the following are useful when exploring the data
+        store and running functions:
+        <literallayout class='monospaced'>
+     pydevshell> d.getVar("STAGING_DIR", True)
+     '/media/build1/poky/build/tmp/sysroots'
+     pydevshell> d.getVar("STAGING_DIR", False)
+     '${TMPDIR}/sysroots'
+     pydevshell> d.setVar("FOO", "bar")
+     pydevshell> d.getVar("FOO", True)
+     'bar'
+     pydevshell> d.delVar("FOO")
+     pydevshell> d.getVar("FOO", True)
+     pydevshell> bb.build.exec_func("do_unpack", d)
+     pydevshell>
+        </literallayout>
+        The commands execute just as if the OpenEmbedded build system were executing them.
+        Consequently, working this way can be helpful when debugging a build or preparing
+        software to be used with the OpenEmbedded build system.
+    </para>
+
+    <para>
+        Following is an example that uses <filename>devpyshell</filename> on a target named
+        <filename>matchbox-desktop</filename>:
+        <literallayout class='monospaced'>
+     $ bitbake matchbox-desktop -c devpyshell
+        </literallayout>
+    </para>
+
+    <para>
+        This command spawns a terminal and places you in an interactive
+        Python interpreter within the OpenEmbedded build environment.
+        The <ulink url='&YOCTO_DOCS_REF_URL;#var-OE_TERMINAL'><filename>OE_TERMINAL</filename></ulink>
+        variable controls what type of shell is opened.
+    </para>
+
+    <para>
+        When you are finished using <filename>devpyshell</filename>, you
+        can exit the shell either by using Ctrl+d or closing the terminal
+        window.
+    </para>
+</section>
+
 </chapter>
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 791a8cb..0012aaa 100644
--- a/import-layers/yocto-poky/documentation/dev-manual/dev-manual.xml
+++ b/import-layers/yocto-poky/documentation/dev-manual/dev-manual.xml
@@ -86,6 +86,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
         </revhistory>
 
     <copyright>
diff --git a/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-add-flow.png b/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-add-flow.png
index c09e60e..985ac33 100644
--- a/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-add-flow.png
+++ b/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-add-flow.png
Binary files differ
diff --git a/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-modify-flow.png b/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-modify-flow.png
index cd7f4d0..fd684ff 100644
--- a/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-modify-flow.png
+++ b/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-modify-flow.png
Binary files differ
diff --git a/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-upgrade-flow.png b/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-upgrade-flow.png
index d25168c..65474da 100644
--- a/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-upgrade-flow.png
+++ b/import-layers/yocto-poky/documentation/dev-manual/figures/devtool-upgrade-flow.png
Binary files differ
diff --git a/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev-common.xml b/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev-common.xml
index 261471c..a9aafd3 100644
--- a/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev-common.xml
+++ b/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev-common.xml
@@ -384,9 +384,10 @@
 
             <para>
                 The resulting <filename>.config</filename> file is
-                located in
-                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}</filename> under the
-                <filename>linux-${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink><filename>}-${<ulink url='&YOCTO_DOCS_REF_URL;#var-LINUX_KERNEL_TYPE'><filename>LINUX_KERNEL_TYPE</filename></ulink>}-build</filename> directory.
+                located in the build directory,
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-B'><filename>B</filename></ulink><filename>}</filename>,
+                which expands to
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}</filename><filename>/linux-</filename><filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink><filename>}-${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LINUX_KERNEL_TYPE'><filename>LINUX_KERNEL_TYPE</filename></ulink><filename>}-build</filename>.
                 You can use the entire <filename>.config</filename> file as the
                 <filename>defconfig</filename> file as described in the
                 "<link linkend='changing-the-configuration'>Changing the Configuration</link>" section.
@@ -394,6 +395,16 @@
                 see the
                 "<ulink url='&YOCTO_DOCS_DEV_URL;#using-menuconfig'>Using <filename>menuconfig</filename></ulink>"
                 section in the Yocto Project Development Manual.
+                <note>
+                    You can determine what a variable expands to by looking
+                    at the output of the <filename>bitbake -e</filename>
+                    command:
+                    <literallayout class='monospaced'>
+     $ bitbake -e virtual/kernel
+                    </literallayout>
+                    Search the output for the variable in which you are
+                    interested to see exactly how it is expanded and used.
+                </note>
             </para>
 
             <para>
@@ -512,8 +523,14 @@
                 </literallayout>
                 Taking this step ensures you have the sources prepared
                 and the configuration completed.
-                You can find the sources in the
-                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}/linux</filename> directory.
+                You can find the sources in the build directory within the
+                <filename>source/</filename> directory, which is a symlink
+                (i.e. <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-B'><filename>B</filename></ulink><filename>}/source</filename>).
+                The <filename>source/</filename> directory expands to
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}</filename><filename>/linux-</filename><filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink><filename>}-${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LINUX_KERNEL_TYPE'><filename>LINUX_KERNEL_TYPE</filename></ulink><filename>}-build/source</filename>.
+                The directory pointed to by the
+                <filename>source/</filename> symlink is also known as
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></ulink><filename>}</filename>.
             </para>
 
             <para>
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 fb11dd1..12828d2 100644
--- a/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev.xml
+++ b/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev.xml
@@ -71,6 +71,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
         </revhistory>
 
     <copyright>
diff --git a/import-layers/yocto-poky/documentation/mega-manual/figures/sdk-devtool-upgrade-flow.png b/import-layers/yocto-poky/documentation/mega-manual/figures/sdk-devtool-upgrade-flow.png
new file mode 100644
index 0000000..65474da
--- /dev/null
+++ b/import-layers/yocto-poky/documentation/mega-manual/figures/sdk-devtool-upgrade-flow.png
Binary files differ
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 154e369..c16e928 100644
--- a/import-layers/yocto-poky/documentation/mega-manual/mega-manual.xml
+++ b/import-layers/yocto-poky/documentation/mega-manual/mega-manual.xml
@@ -55,6 +55,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
        </revhistory>
 
     <copyright>
@@ -111,13 +116,17 @@
     <xi:include
         xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-intro.xml"/>
     <xi:include
+        xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-extensible.xml"/>
+    <xi:include
         xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-using.xml"/>
     <xi:include
-        xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-extensible.xml"/>
+        xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-working-projects.xml"/>
     <xi:include
         xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-appendix-obtain.xml"/>
     <xi:include
         xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-appendix-customizing.xml"/>
+    <xi:include
+        xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-appendix-mars.xml"/>
 
 <!-- Includes bsp-guide title image and then bsp-guide chapters -->
 
@@ -191,6 +200,9 @@
         xmlns:xi="http://www.w3.org/2003/XInclude" href="../ref-manual/ref-tasks.xml"/>
 
     <xi:include
+        xmlns:xi="http://www.w3.org/2003/XInclude" href="../ref-manual/ref-devtool-reference.xml"/>
+
+    <xi:include
         xmlns:xi="http://www.w3.org/2003/XInclude" href="../ref-manual/ref-qa-checks.xml"/>
 
     <xi:include
diff --git a/import-layers/yocto-poky/documentation/poky.ent b/import-layers/yocto-poky/documentation/poky.ent
index 673ab23..b36c234 100644
--- a/import-layers/yocto-poky/documentation/poky.ent
+++ b/import-layers/yocto-poky/documentation/poky.ent
@@ -1,10 +1,10 @@
-<!ENTITY DISTRO "2.1">
-<!ENTITY DISTRO_COMPRESSED "21">
-<!ENTITY DISTRO_NAME_NO_CAP "krogoth">
-<!ENTITY DISTRO_NAME "Krogoth">
-<!ENTITY YOCTO_DOC_VERSION "2.1">
-<!ENTITY POKYVERSION "15.0.0">
-<!ENTITY POKYVERSION_COMPRESSED "1500">
+<!ENTITY DISTRO "2.2">
+<!ENTITY DISTRO_COMPRESSED "22">
+<!ENTITY DISTRO_NAME_NO_CAP "morty">
+<!ENTITY DISTRO_NAME "Morty">
+<!ENTITY YOCTO_DOC_VERSION "2.2">
+<!ENTITY POKYVERSION "17.0.0">
+<!ENTITY POKYVERSION_COMPRESSED "1700">
 <!ENTITY YOCTO_POKY "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;">
 <!ENTITY COPYRIGHT_YEAR "2010-2016">
 <!ENTITY YOCTO_DL_URL "http://downloads.yoctoproject.org">
@@ -62,7 +62,7 @@
 <!ENTITY OE_INIT_FILE "oe-init-build-env">
 <!ENTITY UBUNTU_HOST_PACKAGES_ESSENTIAL "gawk wget git-core diffstat unzip texinfo gcc-multilib \
      build-essential chrpath socat">
-<!ENTITY FEDORA_HOST_PACKAGES_ESSENTIAL "gawk make wget tar bzip2 gzip python unzip perl patch \
+<!ENTITY FEDORA_HOST_PACKAGES_ESSENTIAL "gawk make wget tar bzip2 gzip python3 unzip perl patch \
      diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \
      ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-bignum socat \
      findutils which">
diff --git a/import-layers/yocto-poky/documentation/profile-manual/profile-manual-intro.xml b/import-layers/yocto-poky/documentation/profile-manual/profile-manual-intro.xml
index cc47f52..d38d61a 100644
--- a/import-layers/yocto-poky/documentation/profile-manual/profile-manual-intro.xml
+++ b/import-layers/yocto-poky/documentation/profile-manual/profile-manual-intro.xml
@@ -67,8 +67,10 @@
                 By default, the Yocto build system strips symbols from the
                 binaries it packages, which makes it difficult to use some
                 of the tools.
-                </para><para>You can prevent that by putting the following
-                in your local.conf when you build the image:
+                </para><para>You can prevent that by setting the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-INHIBIT_PACKAGE_STRIP'><filename>INHIBIT_PACKAGE_STRIP</filename></ulink>
+                variable to "1" in your
+                <filename>local.conf</filename> when you build the image:
                 </para>
             </note>
             <literallayout class='monospaced'>
diff --git a/import-layers/yocto-poky/documentation/profile-manual/profile-manual-usage.xml b/import-layers/yocto-poky/documentation/profile-manual/profile-manual-usage.xml
index 310e8f0..c0873e1 100644
--- a/import-layers/yocto-poky/documentation/profile-manual/profile-manual-usage.xml
+++ b/import-layers/yocto-poky/documentation/profile-manual/profile-manual-usage.xml
@@ -60,8 +60,11 @@
 
         <para>
             In particular, you'll get the most mileage out of perf if you
-            profile an image built with INHIBIT_PACKAGE_STRIP = "1" in your
-            local.conf.
+            profile an image built with the following in your
+            <filename>local.conf</filename> file:
+            <literallayout class='monospaced'>
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-INHIBIT_PACKAGE_STRIP'>INHIBIT_PACKAGE_STRIP</ulink> = "1"
+            </literallayout>
         </para>
 
         <para>
@@ -355,10 +358,10 @@
             </para>
 
             <para>
-                One way around that is to put the following in your local.conf
-                when you build the image:
+                One way around that is to put the following in your
+                <filename>local.conf</filename> file when you build the image:
                 <literallayout class='monospaced'>
-     INHIBIT_PACKAGE_STRIP = "1"
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-INHIBIT_PACKAGE_STRIP'>INHIBIT_PACKAGE_STRIP</ulink> = "1"
                 </literallayout>
                 However, we already have an image with the binaries stripped,
                 so what can we do to get perf to resolve the symbols? Basically
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 1e0ccc1..4717906 100644
--- a/import-layers/yocto-poky/documentation/profile-manual/profile-manual.xml
+++ b/import-layers/yocto-poky/documentation/profile-manual/profile-manual.xml
@@ -71,6 +71,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
         </revhistory>
 
     <copyright>
diff --git a/import-layers/yocto-poky/documentation/ref-manual/closer-look.xml b/import-layers/yocto-poky/documentation/ref-manual/closer-look.xml
index 84ff584..b73e59c 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/closer-look.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/closer-look.xml
@@ -888,7 +888,9 @@
                         class,
                         you can add additional configuration options by using
                         the <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
-                        variable.
+                        or
+                        <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>
+                        variables.
                         For information on how this variable works within
                         that class, see the
                         <filename>meta/classes/autotools.bbclass</filename> file.
@@ -1209,6 +1211,199 @@
                 which includes the environment setup script.
             </para>
         </section>
+
+        <section id='stamp-files-and-the-rerunning-of-tasks'>
+            <title>Stamp Files and the Rerunning of Tasks</title>
+
+            <para>
+                For each task that completes successfully, BitBake writes a
+                stamp file into the
+                <link linkend='var-STAMPS_DIR'><filename>STAMPS_DIR</filename></link>
+                directory.
+                The beginning of the stamp file's filename is determined by the
+                <link linkend='var-STAMP'><filename>STAMP</filename></link>
+                variable, and the end of the name consists of the task's name
+                and current
+                <ulink url='&YOCTO_DOCS_BB_URL;#checksums'>input checksum</ulink>.
+                <note>
+                    This naming scheme assumes that
+                    <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SIGNATURE_HANDLER'><filename>BB_SIGNATURE_HANDLER</filename></ulink>
+                    is "OEBasicHash", which is almost always the case in
+                    current OpenEmbedded.
+                </note>
+                To determine if a task needs to be rerun, BitBake checks if a
+                stamp file with a matching input checksum exists for the task.
+                If such a stamp file exists, the task's output is assumed to
+                exist and still be valid.
+                If the file does not exist, the task is rerun.
+                <note>
+                    <para>The stamp mechanism is more general than the shared
+                    state (sstate) cache mechanism described in the
+                    "<link linkend='setscene-tasks-and-shared-state'>Setscene Tasks and Shared State</link>"
+                    section.
+                    BitBake avoids rerunning any task that has a valid
+                    stamp file, not just tasks that can be accelerated through
+                    the sstate cache.</para>
+                    <para>However, you should realize that stamp files only
+                    serve as a marker that some work has been done and that
+                    these files do not record task output.
+                    The actual task output would usually be somewhere in
+                    <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
+                    (e.g. in some recipe's
+                    <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>.)
+                    What the sstate cache mechanism adds is a way to cache task
+                    output that can then be shared between build machines.
+                    </para>
+                </note>
+                Since <filename>STAMPS_DIR</filename> is usually a subdirectory
+                of <filename>TMPDIR</filename>, removing
+                <filename>TMPDIR</filename> will also remove
+                <filename>STAMPS_DIR</filename>, which means tasks will
+                properly be rerun to repopulate <filename>TMPDIR</filename>.
+            </para>
+
+            <para>
+                If you want some task to always be considered "out of date",
+                you can mark it with the
+                <ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>nostamp</filename></ulink>
+                varflag.
+                If some other task depends on such a task, then that task will
+                also always be considered out of date, which might not be what
+                you want.
+            </para>
+
+            <para>
+                For details on how to view information about a task's
+                signature, see the
+                "<link linkend='usingpoky-viewing-task-variable-dependencies'>Viewing Task Variable Dependencies</link>"
+                section.
+            </para>
+        </section>
+
+        <section id='setscene-tasks-and-shared-state'>
+            <title>Setscene Tasks and Shared State</title>
+
+            <para>
+                The description of tasks so far assumes that BitBake needs to
+                build everything and there are no prebuilt objects available.
+                BitBake does support skipping tasks if prebuilt objects are
+                available.
+                These objects are usually made available in the form of a
+                shared state (sstate) cache.
+                <note>
+                    For information on variables affecting sstate, see the
+                    <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>
+                    and
+                    <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
+                    variables.
+                </note>
+            </para>
+
+            <para>
+                The idea of a setscene task (i.e
+                <filename>do_</filename><replaceable>taskname</replaceable><filename>_setscene</filename>)
+                is a version of the task where
+                instead of building something, BitBake can skip to the end
+                result and simply place a set of files into specific locations
+                as needed.
+                In some cases, it makes sense to have a setscene task variant
+                (e.g. generating package files in the
+                <filename>do_package_write_*</filename> task).
+                In other cases, it does not make sense, (e.g. a
+                <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
+                task or
+                <link linkend='ref-tasks-unpack'><filename>do_unpack</filename></link>
+                task) since the work involved would be equal to or greater than
+                the underlying task.
+            </para>
+
+            <para>
+                In the OpenEmbedded build system, the common tasks that have
+                setscene variants are <link linkend='ref-tasks-package'><filename>do_package</filename></link>,
+                <filename>do_package_write_*</filename>,
+                <link linkend='ref-tasks-deploy'><filename>do_deploy</filename></link>,
+                <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>,
+                and
+                <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>.
+                Notice that these are most of the tasks whose output is an
+                end result.
+            </para>
+
+            <para>
+                The OpenEmbedded build system has knowledge of the relationship
+                between these tasks and other tasks that precede them.
+                For example, if BitBake runs
+                <filename>do_populate_sysroot_setscene</filename> for
+                something, there is little point in running any of the
+                <filename>do_fetch</filename>, <filename>do_unpack</filename>,
+                <filename>do_patch</filename>,
+                <filename>do_configure</filename>,
+                <filename>do_compile</filename>, and
+                <filename>do_install</filename> tasks.
+                However, if <filename>do_package</filename> needs to be run,
+                BitBake would need to run those other tasks.
+            </para>
+
+            <para>
+                It becomes more complicated if everything can come from an
+                sstate cache because some objects are simply not required at
+                all.
+                For example, you do not need a compiler or native tools, such
+                as quilt, if there is nothing to compile or patch.
+                If the <filename>do_package_write_*</filename> packages are
+                available from sstate, BitBake does not need the
+                <filename>do_package</filename> task data.
+            </para>
+
+            <para>
+                To handle all these complexities, BitBake runs in two phases.
+                The first is the "setscene" stage.
+                During this stage, BitBake first checks the sstate cache for
+                any targets it is planning to build.
+                BitBake does a fast check to see if the object exists rather
+                than a complete download.
+                If nothing exists, the second phase, which is the setscene
+                stage, completes and the main build proceeds.
+            </para>
+
+            <para>
+                If objects are found in the sstate cache, the OpenEmbedded
+                build system works backwards from the end targets specified
+                by the user.
+                For example, if an image is being built, the OpenEmbedded build
+                system first looks for the packages needed for that image and
+                the tools needed to construct an image.
+                If those are available, the compiler is not needed.
+                Thus, the compiler is not even downloaded.
+                If something was found to be unavailable, or the download or
+                setscene task fails, the OpenEmbedded build system then tries
+                to install dependencies, such as the compiler, from the cache.
+            </para>
+
+            <para>
+                The availability of objects in the sstate cache is handled by
+                the function specified by the
+                <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_HASHCHECK_FUNCTION'><filename>BB_HASHCHECK_FUNCTION</filename></ulink>
+                variable and returns a list of the objects that are available.
+                The function specified by the
+                <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SETSCENE_DEPVALID'><filename>BB_SETSCENE_DEPVALID</filename></ulink>
+                variable is the function that determines whether a given
+                dependency needs to be followed, and whether for any given
+                relationship the function needs to be passed.
+                The function returns a True or False value.
+            </para>
+
+            <para>
+                Once the setscene process completes, the OpenEmbedded build
+                system has a list of tasks that it believes it can "accelerate"
+                and therefore does not need to run.
+                There is a final function call to the function specified by the
+                <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SETSCENE_VERIFY_FUNCTION2'><filename>BB_SETSCENE_VERIFY_FUNCTION2</filename></ulink>
+                variable that is able to require the tasks to be run that
+                that the OpenEmbedded build system initially was going to
+                skip.
+            </para>
+        </section>
     </section>
 
     <section id='images-dev-environment'>
@@ -1403,6 +1598,10 @@
                     Specifies whether or not packagedata will be included in
                     the extensible SDK for all recipes in the "world" target.
                     </para></listitem>
+                <listitem><para><link linkend='var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></link>:
+                    Specifies whether or not the toolchain will be included
+                    when building the extensible SDK.
+                    </para></listitem>
                 <listitem><para><link linkend='var-SDK_LOCAL_CONF_WHITELIST'><filename>SDK_LOCAL_CONF_WHITELIST</filename></link>:
                     A list of variables allowed through from the build system
                     configuration into the extensible SDK configuration.
diff --git a/import-layers/yocto-poky/documentation/ref-manual/faq.xml b/import-layers/yocto-poky/documentation/ref-manual/faq.xml
index d2e4e8e..5f3f173 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/faq.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/faq.xml
@@ -33,9 +33,7 @@
             <para id='faq-not-meeting-requirements'>
                 My development system does not meet the
                 required Git, tar, and Python versions.
-                In particular, I do not have Python 2.7.3 or greater, or
-                I do have Python 3.x, which is specifically not supported by
-                the Yocto Project.
+                In particular, I do not have Python 3.4.0 or greater.
                 Can I still use the Yocto Project?
             </para>
         </question>
diff --git a/import-layers/yocto-poky/documentation/dev-manual/figures/build-workspace-directory.png b/import-layers/yocto-poky/documentation/ref-manual/figures/build-workspace-directory.png
similarity index 100%
rename from import-layers/yocto-poky/documentation/dev-manual/figures/build-workspace-directory.png
rename to import-layers/yocto-poky/documentation/ref-manual/figures/build-workspace-directory.png
Binary files differ
diff --git a/import-layers/yocto-poky/documentation/ref-manual/introduction.xml b/import-layers/yocto-poky/documentation/ref-manual/introduction.xml
index ce8fa5c..90d965f 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/introduction.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/introduction.xml
@@ -47,7 +47,7 @@
             <listitem><para><emphasis>
                 <link linkend='usingpoky'>Using the Yocto Project</link>:</emphasis>
                 Provides an overview of the components that make up the Yocto Project
-                followed by information about debugng images created in the Yocto Project.
+                followed by information about debugging images created in the Yocto Project.
                 </para></listitem>
             <listitem><para><emphasis>
                 <link linkend='closer-look'>A Closer Look at the Yocto Project Development Environment</link>:</emphasis>
@@ -80,6 +80,11 @@
                 Describes the tasks defined by the OpenEmbedded build system.
                 </para></listitem>
             <listitem><para><emphasis>
+                <link linkend='ref-devtool-reference'><filename>devtool</filename> Quick Reference</link>:</emphasis>
+                Provides a quick reference for the <filename>devtool</filename>
+                command.
+                </para></listitem>
+            <listitem><para><emphasis>
                 <link linkend='ref-qa-checks'>QA Error and Warning Messages</link>:</emphasis>
                 Lists and describes QA warning and error messages.
                 </para></listitem>
@@ -252,12 +257,6 @@
                         <literallayout class='monospaced'>
      $ sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
                         </literallayout></para></listitem>
-                    <listitem><para><emphasis>SDK Installer Extras:</emphasis>
-                        Packages needed if you are going to be using the
-                        the standard or extensible SDK:
-                        <literallayout class='monospaced'>
-     $ sudo apt-get install autoconf automake libtool libglib2.0-dev libarchive-dev
-                        </literallayout></para></listitem>
                     <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                         Packages needed if you are going to run
                         <filename>oe-selftest</filename>:
@@ -296,17 +295,11 @@
      $ sudo dnf install make docbook-style-dsssl docbook-style-xsl \
      docbook-dtds docbook-utils fop libxslt dblatex xmlto xsltproc
                         </literallayout></para></listitem>
-                    <listitem><para><emphasis>SDK Installer Extras:</emphasis>
-                        Packages needed if you are going to be using the
-                        standard or extensible SDK:
-                        <literallayout class='monospaced'>
-     $ sudo dnf install autoconf automake libtool glib2-devel libarchive-devel
-                        </literallayout></para></listitem>
                     <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                         Packages needed if you are going to run
                         <filename>oe-selftest</filename>:
                         <literallayout class='monospaced'>
-     $ sudo dnf install GitPython
+     $ sudo dnf install python3-GitPython
                         </literallayout>
                         </para></listitem>
                 </itemizedlist>
@@ -339,12 +332,6 @@
                         <literallayout class='monospaced'>
      $ sudo zypper install make fop xsltproc dblatex xmlto
                         </literallayout></para></listitem>
-                    <listitem><para><emphasis>SDK Installer Extras:</emphasis>
-                        Packages needed if you are going to be using the
-                        standard or extensible SDK:
-                        <literallayout class='monospaced'>
-     $ sudo zypper install autoconf automake libtool glib2-devel libarchive-devel
-                        </literallayout></para></listitem>
                     <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                         Packages needed if you are going to run
                         <filename>oe-selftest</filename>:
@@ -394,12 +381,6 @@
      $ sudo yum install make docbook-style-dsssl docbook-style-xsl \
      docbook-dtds docbook-utils fop libxslt dblatex xmlto xsltproc
                         </literallayout></para></listitem>
-                    <listitem><para><emphasis>SDK Installer Extras:</emphasis>
-                        Packages needed if you are going to be using the
-                        standard or extensible SDK:
-                        <literallayout class='monospaced'>
-     $ sudo yum install autoconf automake libtool glib2-devel libarchive-devel
-                        </literallayout></para></listitem>
                     <listitem><para><emphasis>OpenEmbedded Self-Test (<filename>oe-selftest</filename>):</emphasis>
                         Packages needed if you are going to run
                         <filename>oe-selftest</filename>:
@@ -422,8 +403,7 @@
             <itemizedlist>
                 <listitem><para>Git 1.8.3.1 or greater</para></listitem>
                 <listitem><para>tar 1.24 or greater</para></listitem>
-                <listitem><para>Python 2.7.3 or greater not including
-                    Python 3.x, which is not supported.</para></listitem>
+                <listitem><para>Python 3.4.0 or greater</para></listitem>
             </itemizedlist>
         </para>
 
diff --git a/import-layers/yocto-poky/documentation/ref-manual/migration.xml b/import-layers/yocto-poky/documentation/ref-manual/migration.xml
index e6c0aa3..3e7e6b0 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/migration.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/migration.xml
@@ -2447,8 +2447,8 @@
                     </literallayout>
                     </para></listitem>
                 <listitem><para>
-                    <filename>d.delVar('</filename><replaceable>varname</replaceable><filename>')</filename> and
-                    <filename>d.setVar('</filename><replaceable>varname</replaceable><filename>', None)</filename>
+                    <filename>d.delVar('</filename><replaceable>VARNAME</replaceable><filename>')</filename> and
+                    <filename>d.setVar('</filename><replaceable>VARNAME</replaceable><filename>', None)</filename>
                     result in the variable and all of its overrides being
                     cleared out.
                     Before the change, only the non-overridden values
@@ -2740,13 +2740,13 @@
 
         <para>
             Variable expressions, such as
-            <filename>${</filename><replaceable>varname</replaceable><filename>}</filename>
+            <filename>${</filename><replaceable>VARNAME</replaceable><filename>}</filename>
             no longer expand automatically within Python functions.
             Suppressing expansion was done to allow Python functions to
             construct shell scripts or other code for situations in which you
             do not want such expressions expanded.
             For any existing code that relies on these expansions, you need to
-            change the expansions to either expand the value of individual
+            change the expansions to expand the value of individual
             variables through <filename>d.getVar()</filename>.
             To alternatively expand more complex expressions,
             use <filename>d.expand()</filename>.
@@ -2880,7 +2880,7 @@
             to allow the default implementation from the
             <filename>autotools</filename> class to work such that
             <filename>autoreconf</filename> succeeds and produces a working
-            configure script), and to remove the
+            configure script, and to remove the
             overridden <filename>do_configure</filename> task such that the
             default implementation does get used.
         </para>
@@ -2910,7 +2910,8 @@
             <filename>do_rootfs</filename>, you should make edits so that
             those tasks are after the
             <link linkend='ref-tasks-image-complete'><filename>do_image_complete</filename></link>
-            task rather than before the task so that the your added tasks
+            task rather than after <filename>do_rootfs</filename>
+            so that the your added tasks
             run at the correct time.
         </para>
 
@@ -3057,6 +3058,10 @@
             <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>extensible SDK</ulink>.
             For information on these SDKs and how to build and use them, see the
             <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-intro'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>.
+            <note>
+                The Yocto Project Eclipse IDE Plug-in is still supported and
+                is not affected by this change.
+            </note>
         </para>
     </section>
 
@@ -3128,7 +3133,7 @@
                     The separate <filename>poky-tiny</filename> distribution
                     now uses the musl C library instead of a heavily pared
                     down <filename>glibc</filename>.
-                    Using <filename>glibc</filename> results in a smaller
+                    Using musl results in a smaller
                     distribution and facilitates much greater maintainability
                     because musl is designed to have a small footprint.</para>
 
@@ -3194,6 +3199,21 @@
         </para>
     </section>
 
+    <section id='migration-2.1-supporting-gobject-introspection'>
+        <title>Supporting GObject Introspection</title>
+
+        <para>
+            This release supports generation of GLib Introspective
+            Repository (GIR) files through GObject introspection, which is
+            the standard mechanism for accessing GObject-based software from
+            runtime environments.
+            You can enable, disable, and test the generation of this data.
+            See the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-gobject-introspection-support'>Enabling GObject Introspection Support</ulink>"
+            section for more information.
+        </para>
+    </section>
+
     <section id='migration-2.1-miscellaneous-changes'>
         <title>Miscellaneous Changes</title>
 
@@ -3205,6 +3225,9 @@
                     If your host distribution does not provide a sufficiently
                     recent version, you can install the buildtools, which
                     will provide it.
+                    See the
+                    "<link linkend='required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</link>"
+                    section for more information on the buildtools tarball.
                     </para></listitem>
                 <listitem><para>
                     The buggy and incomplete support for the RPM version 4
@@ -3213,6 +3236,25 @@
                     remains.
                     </para></listitem>
                 <listitem><para>
+                    Previously, the following list of packages were removed
+                    if package-management was not in
+                    <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>,
+                    regardless of any dependencies:
+                    <literallayout class='monospaced'>
+     update-rc.d
+     base-passwd
+     shadow
+     update-alternatives
+     run-postinsts
+                    </literallayout>
+                    With the Yocto Project 2.1 release, these packages are only
+                    removed if "read-only-rootfs" is in
+                    <filename>IMAGE_FEATURES</filename>, since they might
+                    still be needed for a read-write image even in the absence
+                    of a package manager (e.g. if users need to be added,
+                    modified, or removed at runtime).
+                    </para></listitem>
+                <listitem><para>
                     The
                     <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-devtool-use-devtool-modify-to-modify-the-source-of-an-existing-component'><filename>devtool modify</filename></ulink>
                     command now defaults to extracting the source since that
@@ -3220,7 +3262,7 @@
                     The "-x" or "--extract" options are now no-ops.
                     If you wish to provide your own existing source tree, you
                     will now need to specify either the "-n" or
-                    "--no-extract" option when running
+                    "--no-extract" options when running
                     <filename>devtool modify</filename>.
                     </para></listitem>
                 <listitem><para>
@@ -3228,10 +3270,8 @@
                     or does not specify whether a keyboard is attached, then
                     the default is to assume a keyboard is attached rather
                     than assume no keyboard.
-                    <note>
-                        This change primarily affects the Sato UI.
-                    </note>
-                    </para></listitem>
+                    This change primarily affects the Sato UI.
+                   </para></listitem>
                 <listitem><para>
                     The <filename>.debug</filename> directory packaging is
                     now automatic.
@@ -3248,8 +3288,8 @@
                     This data has been replaced with
                     <filename>getrusage()</filename> data and corrected IO
                     statistics.
-                    You will probably need to update code that reads the
-                    <filename>buildstats</filename> data.
+                    You will probably need to update any custom code that reads
+                    the <filename>buildstats</filename> data.
                     </para></listitem>
                 <listitem><para>
                     The
@@ -3272,8 +3312,622 @@
                     <filename>meta-yocto-bsp</filename> layer.
                     Most modern x86 boards do not rely on this file and it only
                     adds kernel error messages during startup.
-                    If you do still need the file, you can simply add
-                    <filename>v86d</filename> to your image.
+                    If you do still need to support
+                    <filename>uvesafb</filename>, you can
+                    simply add <filename>v86d</filename> to your image.
+                    </para></listitem>
+                <listitem><para>
+                     Build sysroot paths are now removed from debug symbol
+                     files.
+                     Removing these paths means that remote GDB using an
+                     unstripped build system sysroot will no longer work
+                     (although this was never documented to work).
+                     The supported method to accomplish something similar is
+                     to set <filename>IMAGE_GEN_DEBUGFS</filename> to "1",
+                     which will generate a companion debug image
+                     containing unstripped binaries and associated debug
+                     sources alongside the image.
+                     </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+</section>
+
+<section id='moving-to-the-yocto-project-2.2-release'>
+    <title>Moving to the Yocto Project 2.2 Release</title>
+
+    <para>
+        This section provides migration information for moving to the
+        Yocto Project 2.2 Release from the prior release.
+    </para>
+
+    <section id='migration-2.2-minimum-kernel-version'>
+        <title>Minimum Kernel Version</title>
+
+        <para>
+            The minimum kernel version for the target system and for SDK
+            is now 3.2.0, due to the upgrade
+            to <filename>glibc 2.24</filename>.
+            Specifically, for AArch64-based targets the version is
+            3.14.
+            For Nios II-based targets, the minimum kernel version is 3.19.
+            <note>
+                For x86 and x86_64, you can reset
+                <link linkend='var-OLDEST_KERNEL'><filename>OLDEST_KERNEL</filename></link>
+                to anything down to 2.6.32 if desired.
+            </note>
+        </para>
+    </section>
+
+    <section id='migration-2.2-staging-directories-in-sysroot-simplified'>
+        <title>Staging Directories in Sysroot Has Been Simplified</title>
+
+        <para>
+            The way directories are staged in sysroot has been simplified and
+            introduces the new
+            <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>,
+            <link linkend='var-SYSROOT_DIRS_NATIVE'><filename>SYSROOT_DIRS_NATIVE</filename></link>,
+            and
+            <link linkend='var-SYSROOT_DIRS_BLACKLIST'><filename>SYSROOT_DIRS_BLACKLIST</filename></link>.
+            See the
+            <ulink url='http://lists.openembedded.org/pipermail/openembedded-core/2016-May/121365.html'>v2 patch series on the OE-Core Mailing List</ulink>
+            for additional information.
+        </para>
+    </section>
+
+    <section id='migration-2.2-removal-of-old-images-from-tmp-deploy-now-enabled'>
+        <title>Removal of Old Images and Other Files in <filename>tmp/deploy</filename> Now Enabled</title>
+
+        <para>
+            Removal of old images and other files in
+            <filename>tmp/deploy/</filename> is now enabled by default due
+            to a new staging method used for those files.
+            As a result of this change, the
+            <filename>RM_OLD_IMAGE</filename> variable is now redundant.
+        </para>
+    </section>
+
+    <section id='migration-2.2-python-changes'>
+        <title>Python Changes</title>
+
+        <para>
+            The following changes for Python occurred:
+        </para>
+
+        <section id='migration-2.2-bitbake-now-requires-python-3.4'>
+            <title>BitBake Now Requires Python 3.4+</title>
+
+            <para>
+                BitBake requires Python 3.4 or greater.
+            </para>
+        </section>
+
+        <section id='migration-2.2-utf-8-locale-required-on-build-host'>
+            <title>UTF-8 Locale Required on Build Host</title>
+
+            <para>
+                A UTF-8 locale is required on the build host due to Python 3.
+                Since C.UTF-8 is not a standard, the default is en_US.UTF-8.
+            </para>
+        </section>
+
+        <section id='migration-2.2-metadata-now-must-use-python-3-syntax'>
+            <title>Metadata Must Now Use Python 3 Syntax</title>
+
+            <para>
+                The metadata is now required to use Python 3 syntax.
+                For help preparing metadata, see any of the many Python 3 porting
+                guides available.
+                Alternatively, you can reference the conversion commits for Bitbake
+                and you can use OE-Core as a guide for changes.
+                Following are particular areas of interest:
+                <literallayout class='monospaced'>
+     * subprocess command-line pipes needing locale decoding
+     * the syntax for octal values changed
+     * the <filename>iter*()</filename> functions changed name
+     * iterators now return views, not lists
+     * changed names for Python modules
+                </literallayout>
+            </para>
+        </section>
+
+        <section id='migration-2.2-target-python-recipes-switched-to-python-3'>
+            <title>Target Python Recipes Switched to Python 3</title>
+
+            <para>
+                Most target Python recipes have now been switched to Python 3.
+                Unfortunately, systems using RPM as a package manager and
+                providing online package-manager support through SMART still
+                require Python 2.
+                <note>
+                    Python 2 and recipes that use it can still be built for the
+                    target as with previous versions.
+                </note>
+            </para>
+        </section>
+
+        <section id='migration-2.2-buildtools-tarball-includes-python-3'>
+            <title><filename>buildtools-tarball</filename> Includes Python 3</title>
+
+            <para>
+                <filename>buildtools-tarball</filename> now includes Python 3.
+            </para>
+        </section>
+    </section>
+
+    <section id='migration-2.2-uclibc-replaced-by-musl'>
+        <title>uClibc Replaced by musl</title>
+
+        <para>
+            uClibc has been removed in favor of musl.
+            Musl has matured, is better maintained, and is compatible with a
+            wider range of applications as compared to uClibc.
+        </para>
+    </section>
+
+    <section id='migration-2.2-B-no-longer-default-working-directory-for-tasks'>
+        <title><filename>${B}</filename> No Longer Default Working Directory for Tasks</title>
+
+        <para>
+            <filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>
+            is no longer the default working directory for tasks.
+            Consequently, any custom tasks you define now need to either
+            have the
+            <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>dirs</filename></ulink><filename>]</filename> flag set, or the task needs to change into the
+            appropriate working directory manually (e.g using
+            <filename>cd</filename> for a shell task).
+            <note>
+                The preferred method is to use the
+                <filename>[dirs]</filename> flag.
+            </note>
+        </para>
+    </section>
+
+    <section id='migration-2.2-runqemu-ported-to-python'>
+        <title><filename>runqemu</filename> Ported to Python</title>
+
+        <para>
+            <filename>runqemu</filename> has been ported to Python and has
+            changed behavior in some cases.
+            Previous usage patterns continued to be supported.
+        </para>
+
+        <para>
+            The new <filename>runqemu</filename> is a Python script.
+            Machine knowledge is no longer hardcoded into
+            <filename>runqemu</filename>.
+            You can choose to use the <filename>qemuboot</filename>
+            configuration file to define the BSP's own arguments and to make
+            it bootable with <filename>runqemu</filename>.
+            If you use a configuration file, use the following form:
+            <literallayout class='monospaced'>
+     <replaceable>image-name</replaceable>-<replaceable>machine</replaceable>.qemuboot.conf
+            </literallayout>
+            The configuration file enables fine-grained tuning of options
+            passed to QEMU without the <filename>runqemu</filename> script
+            hard-coding any knowledge about different machines.
+            Using a configuration file is particularly convenient when trying
+            to use QEMU with machines other than the
+            <filename>qemu*</filename> machines in OE-Core.
+            The <filename>qemuboot.conf</filename> file is generated by the
+            <filename>qemuboot</filename>
+            class when the root filesystem is being build (i.e.
+            build rootfs).
+            QEMU boot arguments can be set in BSP's configuration file and
+            the <filename>qemuboot</filename> class will save them to
+            <filename>qemuboot.conf</filename>.
+        </para>
+
+
+        <para>
+            If you want to use <filename>runqemu</filename> without a
+            configuration file, use the following command form:
+            <literallayout class='monospaced'>
+     $ runqemu <replaceable>machine</replaceable> <replaceable>rootfs</replaceable> <replaceable>kernel</replaceable> [<replaceable>options</replaceable>]
+            </literallayout>
+            Supported <replaceable>machines</replaceable> are as follows:
+            <literallayout class='monospaced'>
+     qemuarm
+     qemuarm64
+     qemux86
+     qemux86-64
+     qemuppc
+     qemumips
+     qemumips64
+     qemumipsel
+     qemumips64el
+            </literallayout>
+            Consider the following example, which uses the
+            <filename>qemux86-64</filename> machine,
+            provides a root filesystem, provides an image, and uses
+            the <filename>nographic</filename> option:
+            <literallayout class='monospaced'>
+$ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.ext4 tmp/deploy/images/qemux86-64/bzImage nographic
+            </literallayout>
+        </para>
+
+        <para>
+            Following is a list of variables that can be set in configuration
+            files such as <filename>bsp.conf</filename> to enable the BSP
+            to be booted by <filename>runqemu</filename>:
+            <note>
+                "QB" means "QEMU Boot".
+            </note>
+            <literallayout class='monospaced'>
+     QB_SYSTEM_NAME: QEMU name (e.g. "qemu-system-i386")
+     QB_OPT_APPEND: Options to append to QEMU (e.g. "-show-cursor")
+     QB_DEFAULT_KERNEL: Default kernel to boot (e.g. "bzImage")
+     QB_DEFAULT_FSTYPE: Default FSTYPE to boot (e.g. "ext4")
+     QB_MEM: Memory (e.g. "-m 512")
+     QB_MACHINE: QEMU machine (e.g. "-machine virt")
+     QB_CPU: QEMU cpu (e.g. "-cpu qemu32")
+     QB_CPU_KVM: Similar to QB_CPU except used for kvm support (e.g. "-cpu kvm64")
+     QB_KERNEL_CMDLINE_APPEND: Options to append to the kernel's -append
+                               option (e.g. "console=ttyS0 console=tty")
+     QB_DTB: QEMU dtb name
+     QB_AUDIO_DRV: QEMU audio driver (e.g. "alsa", set it when support audio)
+     QB_AUDIO_OPT: QEMU audio option (e.g. "-soundhw ac97,es1370"), which is used
+                   when QB_AUDIO_DRV is set.
+     QB_KERNEL_ROOT: Kernel's root (e.g. /dev/vda)
+     QB_TAP_OPT: Network option for 'tap' mode (e.g.
+                 "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0").
+                  runqemu will replace "@TAP@" with the one that is used, such as tap0, tap1 ...
+     QB_SLIRP_OPT: Network option for SLIRP mode (e.g. "-netdev user,id=net0 -device virtio-net-device,netdev=net0")
+     QB_ROOTFS_OPT: Used as rootfs (e.g.
+                    "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0").
+                    runqemu will replace "@ROOTFS@" with the one which is used, such as
+                    core-image-minimal-qemuarm64.ext4.
+     QB_SERIAL_OPT: Serial port (e.g. "-serial mon:stdio")
+     QB_TCPSERIAL_OPT: tcp serial port option (e.g.
+                       " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device      virtconsole,chardev=virtcon"
+                       runqemu will replace "@PORT@" with the port number which is used.
+            </literallayout>
+        </para>
+
+        <para>
+            To use <filename>runqemu</filename>, set
+            <link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
+            as follows and run <filename>runqemu</filename>:
+            <note>
+                For command-line syntax, use
+                <filename>runqemu help</filename>.
+            </note>
+            <literallayout class='monospaced'>
+     IMAGE_CLASSES += "qemuboot"
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='migration-2.2-default-linker-hash-style-changed'>
+        <title>Default Linker Hash Style Changed</title>
+
+        <para>
+            The default linker hash style for <filename>gcc-cross</filename>
+            is now "sysv" in order to catch recipes that are building software
+            without using the OpenEmbedded
+            <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>.
+            This change could result in seeing some "No GNU_HASH in the elf
+            binary" QA issues when building such recipes.
+            You need to fix these recipes so that they use the expected
+            <filename>LDFLAGS</filename>.
+            Depending on how the software is built, the build system used by
+            the software (e.g. a Makefile) might need to be patched.
+            However, sometimes making this fix is as simple as adding the
+            following to the recipe:
+            <literallayout class='monospaced'>
+     TARGET_CC_ARCH += "${LDFLAGS}"
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='migration-2.2-bitbake-changes'>
+        <title>BitBake Changes</title>
+
+        <para>
+            The following changes took place for BitBake:
+            <itemizedlist>
+                <listitem><para>
+                    The "goggle" UI and standalone image-writer tool have
+                    been removed as they both require GTK+ 2.0 and
+                    were not being maintained.
+                    </para></listitem>
+                <listitem><para>
+                    The Perforce fetcher now supports
+                    <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
+                    for specifying the source revision to use, be it
+                    <filename>${</filename><link linkend='var-AUTOREV'><filename>AUTOREV</filename></link><filename>}</filename>,
+                    changelist number, p4date, or label, in preference to
+                    separate
+                    <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
+                    parameters to specify these.
+                    This change is more in-line with how the other fetchers
+                    work for source control systems.
+                    Recipes that fetch from Perforce will need to be updated
+                    to use <filename>SRCREV</filename> in place of specifying
+                    the source revision within
+                    <filename>SRC_URI</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    Some of BitBake's internal code structures for accessing
+                    the recipe cache needed to be changed to support the new
+                    multi-configuration functionality.
+                    These changes will affect external tools that use BitBake's
+                    tinfoil module.
+                    For information on these changes, see the changes made to
+                    the scripts supplied with OpenEmbedded-Core:
+                    <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=189371f8393971d00bca0fceffd67cc07784f6ee'>1</ulink>
+                    and
+                    <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=4a5aa7ea4d07c2c90a1654b174873abb018acc67'>2</ulink>.
+                    </para></listitem>
+                <listitem><para>
+                    The task management code has been rewritten to avoid using
+                    ID indirection in order to improve performance.
+                    This change is unlikely to cause any problems for most
+                    users.
+                    However, the setscene verification function as pointed to
+                    by <filename>BB_SETSCENE_VERIFY_FUNCTION</filename>
+                    needed to change signature.
+                    Consequently, a new variable named
+                    <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SETSCENE_VERIFY_FUNCTION2'><filename>BB_SETSCENE_VERIFY_FUNCTION2</filename></ulink>
+                    has been added allowing multiple versions of BitBake
+                    to work with suitably written metadata, which includes
+                    OpenEmbedded-Core and Poky.
+                    Anyone with custom BitBake task scheduler code might also
+                    need to update the code to handle the new structure.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
+    <section id='migration-2.2-swabber-has-been-removed'>
+        <title>Swabber has Been Removed</title>
+
+        <para>
+            Swabber, a tool that was intended to detect host contamination in
+            the build process, has been removed, as it has been unmaintained
+            and unused for some time and was never particularly effective.
+            The OpenEmbedded build system has since incorporated a number of
+            mechanisms including enhanced QA checks that mean that there is
+            less of a need for such a tool.
+        </para>
+    </section>
+
+    <section id='migration-2.2-removed-recipes'>
+        <title>Removed Recipes</title>
+
+        <para>
+            The following recipes have been removed:
+            <itemizedlist>
+                <listitem><para>
+                    <filename>augeas</filename>:
+                    No longer needed and has been moved to
+                    <filename>meta-oe</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>directfb</filename>:
+                    Unmaintained and has been moved to
+                    <filename>meta-oe</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>gcc</filename>:
+                    Removed 4.9 version.
+                    Versions 5.4 and 6.2 are still present.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>gnome-doc-utils</filename>:
+                    No longer needed.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>gtk-doc-stub</filename>:
+                    Replaced by <filename>gtk-doc</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>gtk-engines</filename>:
+                    No longer needed and has been moved to
+                    <filename>meta-gnome</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>gtk-sato-engine</filename>:
+                    Became obsolete.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>libglade</filename>:
+                    No longer needed and has been moved to
+                    <filename>meta-oe</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>libmad</filename>:
+                    Unmaintained and functionally replaced by
+                    <filename>libmpg123</filename>.
+                    <filename>libmad</filename> has been moved to
+                    <filename>meta-oe</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>libowl</filename>:
+                    Became obsolete.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>libxsettings-client</filename>:
+                    No longer needed.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>oh-puzzles</filename>:
+                    Functionally replaced by
+                    <filename>puzzles</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>oprofileui</filename>:
+                    Became obsolete.
+                    OProfile has been largely supplanted by perf.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>packagegroup-core-directfb.bb</filename>:
+                    Removed.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>core-image-directfb.bb</filename>:
+                    Removed.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>pointercal</filename>:
+                    No longer needed and has been moved to
+                    <filename>meta-oe</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>python-imaging</filename>:
+                    No longer needed and moved to
+                    <filename>meta-python</filename>
+                    </para></listitem>
+                <listitem><para>
+                    <filename>python-pyrex</filename>:
+                    No longer needed and moved to
+                    <filename>meta-python</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>sato-icon-theme</filename>:
+                    Became obsolete.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>swabber-native</filename>:
+                    Swabber has been removed.
+                    See the
+                    <link linkend='migration-2.2-swabber-has-been-removed'>entry on Swabber</link>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>tslib</filename>:
+                    No longer needed and has been moved to
+                    <filename>meta-oe</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>uclibc</filename>:
+                    Removed in favor of musl.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>xtscal</filename>:
+                    No longer needed and moved to
+                    <filename>meta-oe</filename>
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
+    <section id='migration-2.2-removed-classes'>
+        <title>Removed Classes</title>
+
+        <para>
+            The following classes have been removed:
+            <itemizedlist>
+                <listitem><para>
+                    <filename>distutils-native-base</filename>:
+                    No longer needed.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>distutils3-native-base</filename>:
+                    No longer needed.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>sdl</filename>:
+                    Only set
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                    and
+                    <link linkend='var-SECTION'><filename>SECTION</filename></link>,
+                    which are better set within the recipe instead.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>sip</filename>:
+                    Mostly unused.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>swabber</filename>:
+                    See the
+                    <link linkend='migration-2.2-swabber-has-been-removed'>entry on Swabber</link>.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
+    <section id='migration-2.2-minor-packaging-changes'>
+        <title>Minor Packaging Changes</title>
+
+        <para>
+            The following minor packaging changes have occurred:
+            <itemizedlist>
+                <listitem><para>
+                    <filename>grub</filename>:
+                    Split <filename>grub-editenv</filename> into its own
+                    package.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>systemd</filename>:
+                    Split container and vm related units into a new package,
+                    systemd-container.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>util-linux</filename>:
+                    Moved <filename>prlimit</filename> to a separate
+                    <filename>util-linux-prlimit</filename> package.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
+    <section id='migration-2.2-miscellaneous-changes'>
+        <title>Miscellaneous Changes</title>
+
+        <para>
+            The following miscellaneous changes have occurred:
+            <itemizedlist>
+                <listitem><para>
+                    <filename>package_regex.inc</filename>:
+                    Removed because the definitions
+                    <filename>package_regex.inc</filename> previously contained
+                    have been moved to their respective recipes.
+                    </para></listitem>
+                <listitem><para>
+                    Both <filename>devtool add</filename> and
+                    <filename>recipetool create</filename> now use a fixed
+                    <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
+                    by default when fetching from a Git repository.
+                    You can override this in either case to use
+                    <filename>${</filename><link linkend='var-AUTOREV'><filename>AUTOREV</filename></link><filename>}</filename>
+                    instead by using the <filename>-a</filename> or
+                    <filename>&dash;&dash;autorev</filename> command-line
+                    option
+                    </para></listitem>
+                <listitem><para>
+                    <filename>distcc</filename>:
+                    GTK+ UI is now disabled by default.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>packagegroup-core-tools-testapps</filename>:
+                    Removed Piglit.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>image.bbclass</filename>:
+                    Renamed COMPRESS(ION) to CONVERSION.
+                    This change means that
+                    <filename>COMPRESSIONTYPES</filename>,
+                    <filename>COMPRESS_DEPENDS</filename> and
+                    <filename>COMPRESS_CMD</filename> are deprecated in favor
+                    of <filename>CONVERSIONTYPES</filename>,
+                    <filename>CONVERSION_DEPENDS</filename> and
+                    <filename>CONVERSION_CMD</filename>.
+                    The <filename>COMPRESS*</filename> variable names will
+                    still work in the 2.2 release but metadata that does not
+                    need to be backwards-compatible should be changed to
+                    use the new names as the <filename>COMPRESS*</filename>
+                    ones will be removed in a future release.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>gtk-doc</filename>:
+                    A full version of <filename>gtk-doc</filename> is now
+                    made available.
+                    However, some old software might not be capable of using
+                    the current version of <filename>gtk-doc</filename>
+                    to build documentation.
+                    You need to change recipes that build such software so that
+                    they explicitly disable building documentation with
+                    <filename>gtk-doc</filename>.
                     </para></listitem>
             </itemizedlist>
         </para>
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 e919bd7..2344a04 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-classes.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-classes.xml
@@ -161,13 +161,17 @@
                 cross-compilation.
                 You can pass additional parameters to
                 <filename>configure</filename> through the
-                <filename><link linkend='var-EXTRA_OECONF'>EXTRA_OECONF</link></filename> variable.
+                <filename><link linkend='var-EXTRA_OECONF'>EXTRA_OECONF</link></filename>
+                or
+                <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>
+                variables.
                 </para></listitem>
             <listitem><para><link linkend='ref-tasks-compile'><filename>do_compile</filename></link> -
                 Runs <filename>make</filename> with arguments that specify the
                 compiler and linker.
                 You can pass additional arguments through
-                the <filename><link linkend='var-EXTRA_OEMAKE'>EXTRA_OEMAKE</link></filename> variable.
+                the <filename><link linkend='var-EXTRA_OEMAKE'>EXTRA_OEMAKE</link></filename>
+                variable.
                 </para></listitem>
             <listitem><para><link linkend='ref-tasks-install'><filename>do_install</filename></link> -
                 Runs <filename>make install</filename> and passes in
@@ -194,7 +198,14 @@
         class or the
         <link linkend='ref-classes-package'><filename>package</filename></link>
         class.
+    </para>
+
+    <para>
         The class also contains some commonly used functions such as
+        <filename>oe_runmake</filename>, which runs
+        <filename>make</filename> with the arguments specified in
+        <link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link>
+        variable as well as the arguments passed directly to
         <filename>oe_runmake</filename>.
     </para>
 </section>
@@ -1092,36 +1103,6 @@
     </para>
 </section>
 
-<section id='ref-classes-gummiboot'>
-    <title><filename>gummiboot.bbclass</filename></title>
-
-    <para>
-        The <filename>gummiboot</filename> class provides functions specific
-        to the gummiboot bootloader for building bootable images.
-        This is an internal class and is not intended to be
-        used directly.
-        Set the
-        <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
-        variable to "gummiboot" to use this class.
-    </para>
-
-    <para>
-        For information on more variables used and supported in this class,
-        see the
-        <link linkend='var-GUMMIBOOT_CFG'><filename>GUMMIBOOT_CFG</filename></link>,
-        <link linkend='var-GUMMIBOOT_ENTRIES'><filename>GUMMIBOOT_ENTRIES</filename></link>,
-        and
-        <link linkend='var-GUMMIBOOT_TIMEOUT'><filename>GUMMIBOOT_TIMEOUT</filename></link>
-        variables.
-    </para>
-
-    <para>
-        You can also see the
-        <ulink url='http://freedesktop.org/wiki/Software/gummiboot/'>Gummiboot documentation</ulink>
-        for more information.
-    </para>
-</section>
-
 <section id='ref-classes-gzipnative'>
     <title><filename>gzipnative.bbclass</filename></title>
 
@@ -1381,22 +1362,6 @@
     </para>
 </section>
 
-<section id='ref-classes-image-swab'>
-    <title><filename>image-swab.bbclass</filename></title>
-
-    <para>
-        The <filename>image-swab</filename> class enables the
-        <ulink url='&YOCTO_HOME_URL;/tools-resources/projects/swabber'>Swabber</ulink>
-        tool in order to detect and log accesses to the host system during
-        the OpenEmbedded build process.
-        <note>
-            This class is currently unmaintained.
-            The <filename>strace</filename> package needs to be installed
-            in the build host as a dependency for this tool.
-        </note>
-    </para>
-</section>
-
 <section id='ref-classes-image-vm'>
     <title><filename>image-vm.bbclass</filename></title>
 
@@ -1599,6 +1564,17 @@
                 <link linkend='var-FILES'><filename>FILES</filename></link>
                 variable values that contain "//", which is invalid.
                 </para></listitem>
+            <listitem><para><emphasis><filename>host-user-contaminated:</filename></emphasis>
+                Checks that no package produced by the recipe contains any
+                files outside of <filename>/home</filename> with a user or
+                group ID that matches the user running BitBake.
+                A match usually indicates that the files are being installed
+                with an incorrect UID/GID, since target IDs are independent
+                from host IDs.
+                For additional information, see the section describing the
+                <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+                task.
+                </para></listitem>
             <listitem><para><emphasis><filename>incompatible-license:</filename></emphasis>
                 Report when packages are excluded from being created due to
                 being marked with a license that is in
@@ -1626,6 +1602,25 @@
                 <filename>do_install</filename> if the files are not
                 needed in any package.
                 </para></listitem>
+            <listitem><para><emphasis><filename>invalid-chars:</filename></emphasis>
+                Checks that the recipe metadata variables
+                <link linkend='var-DESCRIPTION'><filename>DESCRIPTION</filename></link>,
+                <link linkend='var-SUMMARY'><filename>SUMMARY</filename></link>,
+                <link linkend='var-LICENSE'><filename>LICENSE</filename></link>,
+                and
+                <link linkend='var-SECTION'><filename>SECTION</filename></link>
+                do not contain non-UTF-8 characters.
+                Some package managers do not support such characters.
+                </para></listitem>
+            <listitem><para><emphasis><filename>invalid-packageconfig:</filename></emphasis>
+                Checks that no undefined features are being added to
+                <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>.
+                For example, any name "foo" for which the following form
+                does not exist:
+                <literallayout class='monospaced'>
+     PACKAGECONFIG[foo] = "..."
+                </literallayout>
+                </para></listitem>
             <listitem><para><emphasis><filename>la:</filename></emphasis>
                 Checks <filename>.la</filename> files for any <filename>TMPDIR</filename>
                 paths.
@@ -3294,6 +3289,43 @@
     </para>
 </section>
 
+<section id='ref-classes-systemd-boot'>
+    <title><filename>systemd-boot.bbclass</filename></title>
+
+    <para>
+        The <filename>systemd-boot</filename> class provides functions specific
+        to the systemd-boot bootloader for building bootable images.
+        This is an internal class and is not intended to be used directly.
+        <note>
+            The <filename>systemd-boot</filename> class is a result from
+            merging the <filename>gummiboot</filename> class used in previous
+            Yocto Project releases with the <filename>systemd</filename>
+            project.
+        </note>
+        Set the
+        <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
+        variable to "systemd-boot" to use this class.
+        Doing so creates a standalone EFI bootloader that is not dependent
+        on systemd.
+    </para>
+
+    <para>
+        For information on more variables used and supported in this class,
+        see the
+        <link linkend='var-SYSTEMD_BOOT_CFG'><filename>SYSTEMD_BOOT_CFG</filename></link>,
+        <link linkend='var-SYSTEMD_BOOT_ENTRIES'><filename>SYSTEMD_BOOT_ENTRIES</filename></link>,
+        and
+        <link linkend='var-SYSTEMD_BOOT_TIMEOUT'><filename>SYSTEMD_BOOT_TIMEOUT</filename></link>
+        variables.
+    </para>
+
+    <para>
+        You can also see the
+        <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>
+        for more information.
+    </para>
+</section>
+
 <section id='ref-classes-terminal'>
     <title><filename>terminal.bbclass</filename></title>
 
@@ -3698,7 +3730,9 @@
         software that uses the Waf build system.
         You can use the
         <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
-        variable to specify additional configuration options to be passed on
+        or
+        <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>
+        variables to specify additional configuration options to be passed on
         the Waf command line.
     </para>
 </section>
diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-devtool-reference.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-devtool-reference.xml
new file mode 100644
index 0000000..1764f01
--- /dev/null
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-devtool-reference.xml
@@ -0,0 +1,607 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
+
+<chapter id='ref-devtool-reference'>
+    <title><filename>devtool</filename> Quick Reference</title>
+
+    <para>
+        The <filename>devtool</filename> command-line tool provides a number
+        of features that help you build, test, and package software.
+        This command is available alongside the <filename>bitbake</filename>
+        command.
+        Additionally, the <filename>devtool</filename> command is a key
+        part of the extensible SDK.
+    </para>
+
+    <para>
+        This chapter provides a Quick Reference for the
+        <filename>devtool</filename> command.
+        For more information on how to apply the command when using the
+        extensible SDK, see the
+        "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>Using the Extensible SDK</ulink>"
+        section in the Yocto Project Software Development Kit (SDK) Developer's
+        Guide.
+    </para>
+
+    <section id='devtool-getting-help'>
+        <title>Getting Help</title>
+
+        <para>
+            The <filename>devtool</filename> command line is organized
+            similarly to Git in that it has a number of sub-commands for
+            each function.
+            You can run <filename>devtool --help</filename> to see all
+            the commands:
+            <literallayout class='monospaced'>
+     $ devtool --help
+     usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q]
+                    [--color COLOR] [-h]
+                    &lt;subcommand&gt; ...
+
+     OpenEmbedded development tool
+
+     options:
+       --basepath BASEPATH  Base directory of SDK / build directory
+       --bbpath BBPATH      Explicitly specify the BBPATH, rather than getting it
+                            from the metadata
+       -d, --debug          Enable debug output
+       -q, --quiet          Print only errors
+       --color COLOR        Colorize output (where COLOR is auto, always, never)
+       -h, --help           show this help message and exit
+
+     subcommands:
+       Beginning work on a recipe:
+         add                  Add a new recipe
+         modify               Modify the source for an existing recipe
+         upgrade              Upgrade an existing recipe
+       Getting information:
+         status               Show workspace status
+         search               Search available recipes
+       Working on a recipe in the workspace:
+         edit-recipe          Edit a recipe file in your workspace
+         configure-help       Get help on configure script options
+         build                Build a recipe
+         update-recipe        Apply changes from external source tree to recipe
+         reset                Remove a recipe from your workspace
+         finish               Finish working on a recipe in your workspace
+       Testing changes on target:
+         deploy-target        Deploy recipe output files to live target machine
+         undeploy-target      Undeploy recipe output files in live target machine
+         build-image          Build image including workspace recipe packages
+       Advanced:
+         create-workspace     Set up workspace in an alternative location
+         extract              Extract the source for an existing recipe
+         sync                 Synchronize the source tree for an existing recipe
+     Use devtool &lt;subcommand&gt; --help to get help on a specific command
+            </literallayout>
+        </para>
+
+        <para>
+                As directed in the general help output, you can get more
+                syntax on a specific command by providing the command
+                name and using <filename>--help</filename>:
+            <literallayout class='monospaced'>
+     $ devtool add --help
+     usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI]
+                        [--version VERSION] [--no-git] [--autorev] [--binary]
+                        [--also-native] [--src-subdir SUBDIR]
+                        [recipename] [srctree] [fetchuri]
+
+     Adds a new recipe to the workspace to build a specified source tree. Can
+     optionally fetch a remote URI and unpack it to create the source tree.
+
+     arguments:
+       recipename            Name for new recipe to add (just name - no version,
+                             path or extension). If not specified, will attempt to
+                             auto-detect it.
+       srctree               Path to external source tree. If not specified, a
+                             subdirectory of
+                             /home/scottrif/poky/build/workspace/sources will be
+                             used.
+       fetchuri              Fetch the specified URI and extract it to create the
+                             source tree
+
+     options:
+       -h, --help            show this help message and exit
+       --same-dir, -s        Build in same directory as source
+       --no-same-dir         Force build in a separate build directory
+       --fetch URI, -f URI   Fetch the specified URI and extract it to create the
+                             source tree (deprecated - pass as positional argument
+                             instead)
+       --version VERSION, -V VERSION
+                             Version to use within recipe (PV)
+       --no-git, -g          If fetching source, do not set up source tree as a git
+                             repository
+       --autorev, -a         When fetching from a git repository, set SRCREV in the
+                             recipe to a floating revision instead of fixed
+       --binary, -b          Treat the source tree as something that should be
+                             installed verbatim (no compilation, same directory
+                             structure). Useful with binary packages e.g. RPMs.
+       --also-native         Also add native variant (i.e. support building recipe
+                             for the build host as well as the target machine)
+       --src-subdir SUBDIR   Specify subdirectory within source tree to use
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='devtool-the-workspace-layer-structure'>
+        <title>The Workspace Layer Structure</title>
+
+        <para>
+            <filename>devtool</filename> uses a "Workspace" layer
+            in which to accomplish builds.
+            This layer is not specific to any single
+            <filename>devtool</filename> command but is rather a common
+            working area used across the tool.
+        </para>
+
+        <para>
+            The following figure shows the workspace structure:
+        </para>
+
+        <para>
+            <imagedata fileref="figures/build-workspace-directory.png"
+                width="6in" depth="5in" align="left" scale="70" />
+        </para>
+
+        <para>
+            <literallayout class='monospaced'>
+     attic - A directory created if devtool believes it preserve
+             anything when you run "devtool reset".  For example, if you
+             run "devtool add", make changes to the recipe, and then
+             run "devtool reset", devtool takes notice that the file has
+             been changed and moves it into the attic should you still
+             want the recipe.
+
+     README - Provides information on what is in workspace layer and how to
+              manage it.
+
+     .devtool_md5 - A checksum file used by devtool.
+
+     appends - A directory that contains *.bbappend files, which point to
+               external source.
+
+     conf - A configuration directory that contains the layer.conf file.
+
+     recipes - A directory containing recipes.  This directory contains a
+               folder for each directory added whose name matches that of the
+               added recipe.  devtool places the <replaceable>recipe</replaceable>.bb file
+               within that sub-directory.
+
+     sources - A directory containing a working copy of the source files used
+               when building the recipe.  This is the default directory used
+               as the location of the source tree when you do not provide a
+               source tree path.  This directory contains a folder for each
+               set of source files matched to a corresponding recipe.
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='devtool-adding-a-new-recipe-to-the-workspace'>
+        <title>Adding a New Recipe to the Workspace Layer</title>
+
+        <para>
+            Use the <filename>devtool add</filename> command to add a new recipe
+            to the workspace layer.
+            The recipe you add should not exist -
+            <filename>devtool</filename> creates it for you.
+            The source files the recipe uses should exist in an external
+            area.
+        </para>
+
+        <para>
+            The following example creates and adds a new recipe named
+            <filename>jackson</filename> to a workspace layer the tool creates.
+            The source code built by the recipes resides in
+            <filename>/home/scottrif/sources/jackson</filename>:
+            <literallayout class='monospaced'>
+     $ devtool add jackson /home/scottrif/sources/jackson
+            </literallayout>
+        </para>
+
+        <para>
+            If you add a recipe and the workspace layer does not exist,
+            the command creates the layer and populates it as
+            described in
+            "<link linkend='devtool-the-workspace-layer-structure'>The Workspace Layer Structure</link>"
+            section.
+        </para>
+
+        <para>
+            Running <filename>devtool add</filename> when the
+            workspace layer exists causes the tool to add the recipe,
+            append files, and source files into the existing workspace layer.
+            The <filename>.bbappend</filename> file is created to point
+            to the external source tree.
+        </para>
+    </section>
+
+    <section id='devtool-extracting-the-source-for-an-existing-recipe'>
+        <title>Extracting the Source for an Existing Recipe</title>
+
+        <para>
+            Use the <filename>devtool extract</filename> command to
+            extract the source for an existing recipe.
+            When you use this command, you must supply the root name
+            of the recipe (i.e. no version, paths, or extensions), and
+            you must supply the directory to which you want the source
+            extracted.
+        </para>
+
+        <para>
+            Additional command options let you control the name of a
+            development branch into which you can checkout the source
+            and whether or not to keep a temporary directory, which is
+            useful for debugging.
+        </para>
+    </section>
+
+    <section id='devtool-synchronizing-a-recipes-extracted-source-tree'>
+        <title>Synchronizing a Recipe's Extracted Source Tree</title>
+
+        <para>
+            Use the <filename>devtool sync</filename> command to
+            synchronize a previously extracted source tree for an
+            existing recipe.
+            When you use this command, you must supply the root name
+            of the recipe (i.e. no version, paths, or extensions), and
+            you must supply the directory to which you want the source
+            extracted.
+        </para>
+
+        <para>
+            Additional command options let you control the name of a
+            development branch into which you can checkout the source
+            and whether or not to keep a temporary directory, which is
+            useful for debugging.
+        </para>
+    </section>
+
+    <section id='devtool-modifying-a-recipe'>
+        <title>Modifying an Existing Recipe</title>
+
+        <para>
+            Use the <filename>devtool modify</filename> command to begin
+            modifying the source of an existing recipe.
+            This command is very similar to the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#devtool-adding-a-new-recipe-to-the-workspace'><filename>add</filename></ulink>
+            command except that it does not physically create the
+            recipe in the workspace layer because the recipe already
+            exists in an another layer.
+        </para>
+
+        <para>
+            The <filename>devtool modify</filename> command extracts the
+            source for a recipe, sets it up as a Git repository if the
+            source had not already been fetched from Git, checks out a
+            branch for development, and applies any patches from the recipe
+            as commits on top.
+            You can use the following command to checkout the source
+            files:
+            <literallayout class='monospaced'>
+     $ devtool modify <replaceable>recipe</replaceable>
+            </literallayout>
+            Using the above command form, <filename>devtool</filename> uses
+            the existing recipe's
+            <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
+            statement to locate the upstream source, extracts the source
+            into the default sources location in the workspace.
+            The default development branch used is "devtool".
+        </para>
+    </section>
+
+    <section id='devtool-edit-an-existing-recipe'>
+        <title>Edit an Existing Recipe</title>
+
+        <para>
+            Use the <filename>devtool edit-recipe</filename> command
+            to run the default editor, which is identified using the
+            <filename>EDITOR</filename> variable, on the specified recipe.
+        </para>
+
+        <para>
+            When you use the <filename>devtool edit-recipe</filename>
+            command, you must supply the root name of the recipe
+            (i.e. no version, paths, or extensions).
+            Also, the recipe file itself must reside in the workspace
+            as a result of the <filename>devtool add</filename> or
+            <filename>devtool upgrade</filename> commands.
+            However, you can override that requirement by using the
+            "-a" or "--any-recipe" option.
+            Using either of these options allows you to edit any recipe
+            regardless of its location.
+        </para>
+    </section>
+
+    <section id='devtool-updating-a-recipe'>
+        <title>Updating a Recipe</title>
+
+        <para>
+            Use the <filename>devtool update-recipe</filename> command to
+            update your recipe with patches that reflect changes you make
+            to the source files.
+            For example, if you know you are going to work on some
+            code, you could first use the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#devtool-modifying-a-recipe'><filename>devtool modify</filename></ulink>
+            command to extract the code and set up the workspace.
+            After which, you could modify, compile, and test the code.
+        </para>
+
+        <para>
+            When you are satisfied with the results and you have committed
+            your changes to the Git repository, you can then
+            run the <filename>devtool update-recipe</filename> to create the
+            patches and update the recipe:
+            <literallayout class='monospaced'>
+     $ devtool update-recipe <replaceable>recipe</replaceable>
+            </literallayout>
+            If you run the <filename>devtool update-recipe</filename>
+            without committing your changes, the command ignores the
+            changes.
+        </para>
+
+        <para>
+            Often, you might want to apply customizations made to your
+            software in your own layer rather than apply them to the
+            original recipe.
+            If so, you can use the
+            <filename>-a</filename> or <filename>--append</filename>
+            option with the <filename>devtool update-recipe</filename>
+            command.
+            These options allow you to specify the layer into which to
+            write an append file:
+            <literallayout class='monospaced'>
+     $ devtool update-recipe <replaceable>recipe</replaceable> -a <replaceable>base-layer-directory</replaceable>
+            </literallayout>
+            The <filename>*.bbappend</filename> file is created at the
+            appropriate path within the specified layer directory, which
+            may or may not be in your <filename>bblayers.conf</filename>
+            file.
+            If an append file already exists, the command updates it
+            appropriately.
+        </para>
+    </section>
+
+    <section id='devtool-upgrading-a-recipe'>
+        <title>Upgrading a Recipe</title>
+
+        <para>
+            Use the <filename>devtool upgrade</filename> command
+            to upgrade an existing recipe to a new upstream version.
+            The command puts the upgraded recipe file into the
+            workspace along with any associated files, and extracts
+            the source tree to a specified location should patches
+            need rebased or added to as a result of the upgrade.
+        </para>
+
+        <para>
+            When you use the <filename>devtool upgrade</filename> command,
+            you must supply the root name of the recipe (i.e. no version,
+            paths, or extensions), and you must supply the directory
+            to which you want the source extracted.
+            Additional command options let you control things such as
+            the version number to which you want to upgrade (i.e. the
+            <link linkend='var-PV'><filename>PV</filename></link>),
+            the source revision to which you want to upgrade (i.e. the
+            <link linkend='var-SRCREV'><filename>SRCREV</filename></link>,
+            whether or not to apply patches, and so forth.
+        </para>
+    </section>
+
+    <section id='devtool-resetting-a-recipe'>
+        <title>Resetting a Recipe</title>
+
+        <para>
+            Use the <filename>devtool reset</filename> command to remove a
+            recipe and its configuration (e.g. the corresponding
+            <filename>.bbappend</filename> file) from the workspace layer.
+            Realize that this command deletes the recipe and the
+            append file.
+            The command does not physically move them for you.
+            Consequently, you must be sure to physically relocate your
+            updated recipe and the append file outside of the workspace
+            layer before running the <filename>devtool reset</filename>
+            command.
+        </para>
+
+        <para>
+            If the <filename>devtool reset</filename> command detects that
+            the recipe or the append files have been modified, the
+            command preserves the modified files in a separate "attic"
+            subdirectory under the workspace layer.
+        </para>
+
+        <para>
+            Here is an example that resets the workspace directory that
+            contains the <filename>mtr</filename> recipe:
+            <literallayout class='monospaced'>
+     $ devtool reset mtr
+     NOTE: Cleaning sysroot for recipe mtr...
+     NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no
+        longer need it then please delete it manually
+     $
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='devtool-building-your-recipe'>
+        <title>Building Your Recipe</title>
+
+        <para>
+            Use the <filename>devtool build</filename> command to cause the
+            OpenEmbedded build system to build your recipe.
+            The <filename>devtool build</filename> command is equivalent to
+            <filename>bitbake -c populate_sysroot</filename>.
+        </para>
+
+        <para>
+            When you use the <filename>devtool build</filename> command,
+            you must supply the root name of the recipe (i.e. no version,
+            paths, or extensions).
+            You can use either the "-s" or the "--disable-parallel-make"
+            option to disable parallel makes during the build.
+            Here is an example:
+            <literallayout class='monospaced'>
+     $ devtool build <replaceable>recipe</replaceable>
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='devtool-building-your-image'>
+        <title>Building Your Image</title>
+
+        <para>
+            Use the <filename>devtool build-image</filename> command
+            to build an image, extending it to include packages from
+            recipes in the workspace.
+            Using this command is useful when you want an image that
+            ready for immediate deployment onto a device for testing.
+            For proper integration into a final image, you need to
+            edit your custom image recipe appropriately.
+        </para>
+
+        <para>
+            When you use the <filename>devtool build-image</filename>
+            command, you must supply the name of the image.
+            This command has no command line options:
+            <literallayout class='monospaced'>
+     $ devtool build-image <replaceable>image</replaceable>
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='devtool-deploying-your-software-on-the-target-machine'>
+        <title>Deploying Your Software on the Target Machine</title>
+
+        <para>
+            Use the <filename>devtool deploy-target</filename> command to
+            deploy the recipe's build output to the live target machine:
+            <literallayout class='monospaced'>
+     $ devtool deploy-target <replaceable>recipe</replaceable>&nbsp;<replaceable>target</replaceable>
+            </literallayout>
+            The <replaceable>target</replaceable> is the address of the
+            target machine, which must be running an SSH server (i.e.
+            <filename>user@hostname[:destdir]</filename>).
+        </para>
+
+        <para>
+            This command deploys all files installed during the
+            <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+            task.
+            Furthermore, you do not need to have package management enabled
+            within the target machine.
+            If you do, the package manager is bypassed.
+            <note><title>Notes</title>
+                <para>
+                    The <filename>deploy-target</filename>
+                    functionality is for development only.
+                    You should never use it to update an image that will be
+                    used in production.
+                </para>
+            </note>
+        </para>
+    </section>
+
+    <section id='devtool-removing-your-software-from-the-target-machine'>
+        <title>Removing Your Software from the Target Machine</title>
+
+        <para>
+            Use the <filename>devtool undeploy-target</filename> command to
+            remove deployed build output from the target machine.
+            For the <filename>devtool undeploy-target</filename> command to
+            work, you must have previously used the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#devtool-deploying-your-software-on-the-target-machine'><filename>devtool deploy-target</filename></ulink>
+            command.
+            <literallayout class='monospaced'>
+     $ devtool undeploy-target <replaceable>recipe</replaceable>&nbsp;<replaceable>target</replaceable>
+            </literallayout>
+            The <replaceable>target</replaceable> is the address of the
+            target machine, which must be running an SSH server (i.e.
+            <filename>user@hostname</filename>).
+        </para>
+    </section>
+
+    <section id='devtool-creating-the-workspace'>
+        <title>Creating the Workspace Layer in an Alternative Location</title>
+
+        <para>
+            Use the <filename>devtool create-workspace</filename> command to
+            create a new workspace layer in your
+            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
+            When you create a new workspace layer, it is populated with the
+            <filename>README</filename> file and the
+            <filename>conf</filename> directory only.
+        </para>
+
+        <para>
+            The following example creates a new workspace layer in your
+            current working and by default names the workspace layer
+            "workspace":
+            <literallayout class='monospaced'>
+     $ devtool create-workspace
+            </literallayout>
+        </para>
+
+        <para>
+            You can create a workspace layer anywhere by supplying
+            a pathname with the command.
+            The following command creates a new workspace layer named
+            "new-workspace":
+            <literallayout class='monospaced'>
+     $ devtool create-workspace /home/scottrif/new-workspace
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='devtool-get-the-status-of-the-recipes-in-your-workspace'>
+        <title>Get the Status of the Recipes in Your Workspace</title>
+
+        <para>
+            Use the <filename>devtool status</filename> command to
+            list the recipes currently in your workspace.
+            Information includes the paths to their respective
+            external source trees.
+        </para>
+
+        <para>
+            The <filename>devtool status</filename> command has no
+            command-line options:
+            <literallayout class='monospaced'>
+     $ devtool status
+            </literallayout>
+            Following is sample output after using
+            <ulink url='&YOCTO_DOCS_DEV_URL;#devtool-adding-a-new-recipe-to-the-workspace'><filename>devtool add</filename></ulink>
+            to create and add the <filename>mtr_0.86.bb</filename> recipe
+            to the <filename>workspace</filename> directory:
+            <literallayout class='monospaced'>
+     $ devtool status
+     mtr: /home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb)
+     $
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='devtool-search-for-available-target-recipes'>
+        <title>Search for Available Target Recipes</title>
+
+        <para>
+            Use the <filename>devtool search</filename> command to
+            search for available target recipes.
+            The command matches the recipe name, package name,
+            description, and installed files.
+            The command displays the recipe name as a result of a
+            match.
+        </para>
+
+        <para>
+            When you use the <filename>devtool search</filename> command,
+            you must supply a <replaceable>keyword</replaceable>.
+            The command uses the <replaceable>keyword</replaceable> when
+            searching for a match.
+        </para>
+    </section>
+</chapter>
+<!--
+vim: expandtab tw=80 ts=4
+-->
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 fd76935..cd1bcb0 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-features.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-features.xml
@@ -144,6 +144,27 @@
                     </para></listitem>
                 <listitem><para><emphasis>bluetooth:</emphasis> Include
                     bluetooth support (integrated BT only).</para></listitem>
+                <listitem><para><emphasis>bluez5:</emphasis> Include
+                    BlueZ Version 5, which provides core Bluetooth layers and
+                    protocols support.
+                    <note>
+                        The default value for the
+                        <link linkend='var-DISTRO_FEATURES'><filename>DISTRO FEATURES</filename></link>
+                        variable includes "bluetooth", which causes bluez5
+                        to be backfilled in for bluetooth support.
+                        If you do not want bluez5 backfilled and would rather
+                        use bluez4, you need to use the
+                        <link linkend='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><filename>DISTRO_FEATURES_BACKFILL_CONSIDERED</filename></link>
+                        variable as follows:
+                        <literallayout class='monospaced'>
+     DISTRO_FEATURES_BACKFILL_CONSIDERED = "bluez5"
+                        </literallayout>
+                        Setting this variable tells the OpenEmbedded build
+                        system that you have considered but ruled
+                        out using the bluez5 feature and that bluez4 will be
+                        used.
+                    </note>
+                    </para></listitem>
                 <listitem><para><emphasis>cramfs:</emphasis> Include CramFS
                     support.</para></listitem>
                 <listitem><para><emphasis>directfb:</emphasis>
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 6834d5f..09f34fb 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-manual.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-manual.xml
@@ -102,6 +102,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
         </revhistory>
 
     <copyright>
@@ -140,6 +145,8 @@
 
     <xi:include href="ref-tasks.xml"/>
 
+    <xi:include href="ref-devtool-reference.xml"/>
+
     <xi:include href="ref-qa-checks.xml"/>
 
     <xi:include href="ref-images.xml"/>
diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-qa-checks.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-qa-checks.xml
index 4fcf1db..86456bd 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-qa-checks.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-qa-checks.xml
@@ -918,7 +918,8 @@
                     and the upstream change log or release notes.
                     Once you have worked out what the appropriate
                     change is, you can update
-                    <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
+                    <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>,
+                    <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>,
                     or the individual
                     <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
                     option values accordingly.
@@ -1107,7 +1108,7 @@
             <listitem>
                 <para id='qa-issue-installed-vs-shipped'>
                     <code>
-      &lt;recipename&gt;: Files/directories were installed but not shipped [installed-vs-shipped]
+      &lt;recipename&gt;: Files/directories were installed but not shipped in any package [installed-vs-shipped]
                     </code>
                 </para>
 
diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-structure.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-structure.xml
index e51ceb1..541a47e 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-structure.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-structure.xml
@@ -660,9 +660,21 @@
         <title><filename>build/tmp/cache/</filename></title>
 
         <para>
-            When BitBake parses the metadata, it creates a cache file of the result that can
-            be used when subsequently running commands.
-            BitBake stores these results here on a per-machine basis.
+            When BitBake parses the metadata (recipes and configuration files),
+            it caches the results in <filename>build/tmp/cache/</filename>
+            to speed up future builds.
+            The results are stored on a per-machine basis.
+        </para>
+
+        <para>
+            During subsequent builds, BitBake checks each recipe (together
+            with, for example, any files included or appended to it) to see
+            if they have been modified.
+            Changes can be detected, for example, through file modification
+            time (mtime) changes and hashing of file contents.
+            If no changes to the file are detected, then the parsed result
+            stored in the cache is reused.
+            If the file has changed, it is reparsed.
         </para>
     </section>
 
@@ -801,8 +813,9 @@
         <title><filename>build/tmp/stamps/</filename></title>
 
         <para>
-            This directory holds information that BitBake uses for accounting purposes
-            to track what tasks have run and when they have run.
+            This directory holds information that BitBake uses for
+            accounting purposes to track what tasks have run and when they
+            have run.
             The directory is sub-divided by architecture, package name, and
             version.
             Following is an example:
@@ -812,6 +825,13 @@
             Although the files in the directory are empty of data,
             BitBake uses the filenames and timestamps for tracking purposes.
         </para>
+
+        <para>
+            For information on how BitBake uses stamp files to determine if
+            a task should be rerun, see the
+            "<link linkend='stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</link>"
+            section.
+        </para>
     </section>
 
     <section id='structure-build-tmp-log'>
diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-tasks.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-tasks.xml
index c46debb..e9859c1 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-tasks.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-tasks.xml
@@ -19,6 +19,10 @@
     <para>
         The following sections describe normal tasks associated with building
         a recipe.
+        For more information on tasks and dependencies, see the
+        "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
+        "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
+        sections in the BitBake User Manual.
     </para>
 
     <section id='ref-tasks-build'>
@@ -31,43 +35,23 @@
         </para>
     </section>
 
-    <section id='ref-tasks-checkpkg'>
-        <title><filename>do_checkpkg</filename></title>
-
-        <para>
-            Provides information about the recipe including its upstream
-            version and status.
-            The upstream version and status reveals whether or not a version
-            of the recipe exists upstream and a status of not updated, updated,
-            or unknown.
-        </para>
-
-        <para>
-            The <filename>checkpkg</filename> task is included as part of the
-            <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
-            class.
-        </para>
-
-        <para>
-            To build the <filename>checkpkg</filename> task, use the
-            <filename>bitbake</filename> command with the "-c" option and
-            task name:
-            <literallayout class='monospaced'>
-     $ bitbake core-image-minimal -c checkpkg
-            </literallayout>
-            By default, the results are stored in
-            <link linkend='var-LOG_DIR'><filename>$LOG_DIR</filename></link>
-            (e.g. <filename>$BUILD_DIR/tmp/log</filename>).
-        </para>
-    </section>
-
     <section id='ref-tasks-compile'>
         <title><filename>do_compile</filename></title>
 
         <para>
-            Compiles the source in the compilation directory, which is pointed
-            to by the
-            <link linkend='var-B'><filename>B</filename></link> variable.
+            Compiles the source code.
+            This task runs with the current working directory set
+            to
+            <filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>.
+        </para>
+
+        <para>
+            The default behavior of this task is to run the
+            <filename>oe_runmake</filename> function if a makefile
+            (<filename>Makefile</filename>, <filename>makefile</filename>,
+            or <filename>GNUmakefile</filename>) is found.
+            If no such file is found, the <filename>do_compile</filename>
+            task does nothing.
         </para>
     </section>
 
@@ -86,6 +70,20 @@
         <para>
             Configures the source by enabling and disabling any build-time and
             configuration options for the software being built.
+            The task runs with the current working directory set to
+            <filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>.
+        </para>
+
+        <para>
+            The default behavior of this task is to run
+            <filename>oe_runmake clean</filename> if a makefile
+            (<filename>Makefile</filename>, <filename>makefile</filename>,
+            or <filename>GNUmakefile</filename>) is found and
+            <link linkend='var-CLEANBROKEN'><filename>CLEANBROKEN</filename></link>
+            is not set to "1".
+            If no such file is found or the <filename>CLEANBROKEN</filename>
+            variable is set to "1", the <filename>do_configure</filename>
+            task does nothing.
         </para>
     </section>
 
@@ -102,18 +100,62 @@
         <title><filename>do_deploy</filename></title>
 
         <para>
-            Writes output files that are to be deployed to the deploy
-            directory, which is defined by the
-            <link linkend='var-DEPLOYDIR'><filename>DEPLOYDIR</filename></link>
-            variable.
+            Writes output files that are to be deployed to
+            <filename>${</filename><link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link><filename>}</filename>.
+            The task runs with the current working directory set to
+            <filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>.
         </para>
 
         <para>
-            The <filename>do_deploy</filename> task is a
-            shared state (sstate) task, which means that the task can
-            be accelerated through sstate use.
-            Realize also that if the task is re-executed, any previous output
-            is removed (i.e. "cleaned").
+            Recipes implementing this task should inherit the
+            <link linkend='ref-classes-deploy'><filename>deploy</filename></link>
+            class and should write the output to
+            <filename>${</filename><link linkend='var-DEPLOYDIR'><filename>DEPLOYDIR</filename></link><filename>}</filename>,
+            which is not to be confused with
+            <filename>${</filename><link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link><filename>}</filename>.
+            The <filename>deploy</filename> class sets up
+            <filename>do_deploy</filename> as a shared state (sstate) task that
+            can be accelerated through sstate use.
+            The sstate mechanism takes care of copying the output from
+            <filename>${DEPLOYDIR}</filename> to
+            <filename>${DEPLOY_DIR_IMAGE}</filename>.
+            <note>
+            <title>Caution</title>
+                Do not write the output directly to
+                <filename>${DEPLOY_DIR_IMAGE}</filename>, as this causes
+                the sstate mechanism to malfunction.
+            </note>
+        </para>
+
+        <para>
+            The <filename>do_deploy</filename> task is not added as a task
+            by default and consequently needs to be added manually.
+            If you want the task to run after
+            <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
+            you can add it by doing the following:
+            <literallayout class='monospaced'>
+     addtask deploy after do_compile
+            </literallayout>
+            Adding <filename>do_deploy</filename> after other tasks works the
+            same way.
+            <note>
+                You do not need to add <filename>before do_build</filename>
+                to the <filename>addtask</filename> command (though it is
+                harmless), because the
+                <link linkend='ref-classes-base'><filename>base</filename></link>
+                class contains the following:
+                <literallayout class='monospaced'>
+     do_build[recrdeptask] += "do_deploy"
+                </literallayout>
+                See the
+                "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
+                section in the BitBake User Manual for more information.
+            </note>
+        </para>
+
+        <para>
+            If the <filename>do_deploy</filename> task re-executes, any
+            previous output is removed (i.e. "cleaned").
         </para>
     </section>
 
@@ -213,11 +255,59 @@
         <title><filename>do_install</filename></title>
 
         <para>
-            Copies files from the compilation directory, which is defined by
-            the
-            <link linkend='var-B'><filename>B</filename></link> variable,
-            to a holding area defined by the
-            <link linkend='var-D'><filename>D</filename></link> variable.
+            Copies files that are to be packaged into the holding area
+            <filename>${</filename><link linkend='var-D'><filename>D</filename></link><filename>}</filename>.
+            This task runs with the current working directory set to
+            <filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>,
+            which is the compilation directory.
+            The <filename>do_install</filename> task, as well as other tasks
+            that either directly or indirectly depend on the installed files
+            (e.g.
+            <link linkend='ref-tasks-package'><filename>do_package</filename></link>,
+            <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_*</filename></link>,
+            and
+            <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>),
+            run under
+            <link linkend='fakeroot-and-pseudo'>fakeroot</link>.
+            <note>
+                <title>Caution</title>
+
+                <para>
+                    When installing files, be careful not to set the owner and
+                    group IDs of the installed files to unintended values.
+                    Some methods of copying files, notably when using the
+                    recursive <filename>cp</filename> command, can preserve the
+                    UID and/or GID of the original file, which is usually not
+                    what you want.
+                    The
+                    <link linkend='ref-classes-insane'><filename>host-user-contaminated</filename></link>
+                    QA check checks for files that probably have the wrong
+                    ownership.
+                </para>
+
+                <para>
+                    Safe methods for installing files include the following:
+                    <itemizedlist>
+                        <listitem><para>
+                            The <filename>install</filename> utility.
+                            This utility is the preferred method.
+                            </para></listitem>
+                        <listitem><para>
+                            The <filename>cp</filename> command with the
+                            "--no-preserve=ownership" option.
+                            </para></listitem>
+                        <listitem><para>
+                            The <filename>tar</filename> command with the
+                            "--no-same-owner" option.
+                            See the <filename>bin_package.bbclass</filename>
+                            file in the <filename>meta/classes</filename>
+                            directory of the
+                            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
+                            for an example.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </note>
         </para>
     </section>
 
@@ -234,8 +324,26 @@
         <title><filename>do_package</filename></title>
 
         <para>
-            Analyzes the content of the holding area and splits it into subsets
-            based on available packages and files.
+            Analyzes the content of the holding area
+            <filename>${</filename><link linkend='var-D'><filename>D</filename></link><filename>}</filename>
+            and splits the content into subsets based on available packages
+            and files.
+            This task makes use of the
+            <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
+            and
+            <link linkend='var-FILES'><filename>FILES</filename></link>
+            variables.
+        </para>
+
+        <para>
+            The <filename>do_package</filename> task, in conjunction with the
+            <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
+            task, also saves some important package metadata.
+            For additional information, see the
+            <link linkend='var-PKGDESTWORK'><filename>PKGDESTWORK</filename></link>
+            variable and the
+            "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
+            section.
         </para>
     </section>
 
@@ -309,8 +417,11 @@
         <title><filename>do_packagedata</filename></title>
 
         <para>
-            Creates package metadata used by the build system to generate the
-            final packages.
+            Saves package metadata generated by the
+            <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+            task in
+            <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
+            to make it available globally.
         </para>
     </section>
 
@@ -349,16 +460,25 @@
         <title><filename>do_populate_sysroot</filename></title>
 
         <para>
-            Copies a subset of the files installed by the
+            Stages (copies) a subset of the files installed by the
             <link linkend='ref-tasks-install'><filename>do_install</filename></link>
-            task into the sysroot to make them available to other recipes.
-            Files that would typically not be needed by other recipes at build
-            time are skipped.
-            Skipped files include files installed into
-            <filename>/etc.</filename>
-            For information on what files are copied, see the
-            <link linkend='ref-classes-staging'><filename>staging</filename></link>
-            class.
+            task into the appropriate sysroot.
+            For information on how to access these files from other recipes,
+            see the
+            <link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR*</filename></link>
+            variables.
+            Directories that would typically not be needed by other recipes at
+            build time (e.g. <filename>/etc</filename>) are not copied by
+            default.
+        </para>
+
+        <para>
+            For information on what directories are copied by default, see the
+            <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS*</filename></link>
+            variables.
+            You can change these variables inside your recipe if you need
+            to make additional (or fewer) directories available to other
+            recipes at build time.
         </para>
 
         <para>
@@ -417,6 +537,36 @@
         <filename>bitbake -c</filename> command-line option):
     </para>
 
+    <section id='ref-tasks-checkpkg'>
+        <title><filename>do_checkpkg</filename></title>
+
+        <para>
+            Provides information about the recipe including its upstream
+            version and status.
+            The upstream version and status reveals whether or not a version
+            of the recipe exists upstream and a status of not updated, updated,
+            or unknown.
+        </para>
+
+        <para>
+            The <filename>checkpkg</filename> task is included as part of the
+            <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
+            class.
+        </para>
+
+        <para>
+            To build the <filename>checkpkg</filename> task, use the
+            <filename>bitbake</filename> command with the "-c" option and
+            task name:
+            <literallayout class='monospaced'>
+     $ bitbake core-image-minimal -c checkpkg
+            </literallayout>
+            By default, the results are stored in
+            <link linkend='var-LOG_DIR'><filename>$LOG_DIR</filename></link>
+            (e.g. <filename>$BUILD_DIR/tmp/log</filename>).
+        </para>
+    </section>
+
     <section id='ref-tasks-checkuri'>
         <title><filename>do_checkuri</filename></title>
 
@@ -541,6 +691,22 @@
         </para>
      </section>
 
+    <section id='ref-tasks-devpyshell'>
+        <title><filename>do_devpyshell</filename></title>
+
+        <para>
+            Starts a shell in which an interactive Python interpreter allows
+            you to interact with the BitBake build environment.
+            From within this shell, you can directly examine and set
+            bits from the data store and execute functions as if within
+            the BitBake environment.
+            See the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-appdev-devpyshell'>Using a Development Python Shell</ulink>"
+            section in the Yocto Project Development Manual for more
+            information about using <filename>devpyshell</filename>.
+        </para>
+    </section>
+
     <section id='ref-tasks-devshell'>
         <title><filename>do_devshell</filename></title>
 
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 d55bccd..ce331d8 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-variables.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-variables.xml
@@ -536,7 +536,7 @@
                     By default, this directory is the same as the <link linkend='var-S'><filename>S</filename></link>
                     directory, which is defined as:
                     <literallayout class='monospaced'>
-     S = "${WORKDIR}/${BP}/"
+     S = "${WORKDIR}/${BP}"
                     </literallayout>
                 </para>
 
@@ -995,6 +995,29 @@
      BBCLASSEXTEND =+ "native nativesdk"
      BBCLASSEXTEND =+ "multilib:<replaceable>multilib_name</replaceable>"
                     </literallayout>
+                    <note>
+                        <para>
+                        Internally, the <filename>BBCLASSEXTEND</filename>
+                        mechanism generates recipe variants by rewriting
+                        variable values and applying overrides such as
+                        <filename>_class-native</filename>.
+                        For example, to generate a native version of a recipe,
+                        a
+                        <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                        on "foo" is rewritten to a <filename>DEPENDS</filename>
+                        on "foo-native".
+                        </para>
+
+                        <para>
+                        Even when using <filename>BBCLASSEXTEND</filename>, the
+                        recipe is only parsed once.
+                        Parsing once adds some limitations.
+                        For example, it is not possible to
+                        include a different file depending on the variant,
+                        since <filename>include</filename> statements are
+                        processed when the recipe is parsed.
+                        </para>
+                    </note>
                 </para>
              </glossdef>
         </glossentry>
@@ -1202,6 +1225,42 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-BBMULTICONFIG'><glossterm>BBMULTICONFIG</glossterm>
+            <info>
+                BBMULTICONFIG[doc] = "Specifies each separate configuration when you are building targets with multiple configurations."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    Specifies each separate configuration when you are
+                    building targets with multiple configurations.
+                    Use this variable in your
+                    <filename>conf/local.conf</filename> configuration file.
+                    Specify a <replaceable>multiconfigname</replaceable> for
+                    each configuration file you are using.
+                    For example, the following line specifies three
+                    configuration files:
+                    <literallayout class='monospaced'>
+     BBMULTIFONFIG = "configA configB configC"
+                    </literallayout>
+                    Each configuration file you use must reside in the
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory's</ulink>
+                    <filename>conf/multiconfig</filename> directory
+                    (e.g.
+                    <replaceable>build_directory</replaceable><filename>/conf/multiconfig/configA.conf</filename>).
+                </para>
+
+                <para>
+                    For information on how to use
+                    <filename>BBMULTICONFIG</filename> in an environment that
+                    supports building targets with multiple configurations,
+                    see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-building-targets-with-multiple-configurations'>Building Targets with Multiple Configurations</ulink>"
+                    section in the Yocto Project Development Manual.
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-BBPATH'><glossterm>BBPATH</glossterm>
             <info>
                 BBPATH[doc] = "Used by BitBake to locate .bbclass and configuration files. This variable is analogous to the PATH variable."
@@ -1336,28 +1395,25 @@
 
         <glossentry id='var-BPN'><glossterm>BPN</glossterm>
             <info>
-                BPN[doc] = "The bare name of the recipe. This variable is a version of the PN variable but removes common suffixes and prefixes."
+                BPN[doc] = "This variable is a version of the PN variable but removes common suffixes and prefixes."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    The bare name of the recipe.
                     This variable is a version of the
                     <link linkend='var-PN'><filename>PN</filename></link>
-                    variable but removes common suffixes such as
-                    <filename>-native</filename> and
-                    <filename>-cross</filename> as well
-                    as removes common prefixes such as multilib's
+                    variable with common prefixes and suffixes
+                    removed, such as <filename>nativesdk-</filename>,
+                    <filename>-cross</filename>,
+                    <filename>-native</filename>, and multilib's
                     <filename>lib64-</filename> and
                     <filename>lib32-</filename>.
-                    The exact list of suffixes removed is specified by the
-                    <link linkend='var-SPECIAL_PKGSUFFIX'><filename>SPECIAL_PKGSUFFIX</filename></link>
-                    variable.
-                    The exact list of prefixes removed is specified by the
+                    The exact lists of prefixes and suffixes removed are
+                    specified by the
                     <link linkend='var-MLPREFIX'><filename>MLPREFIX</filename></link>
-                    variable.
-                    Prefixes are removed for <filename>multilib</filename>
-                    and <filename>nativesdk-</filename> cases.
+                    and
+                    <link linkend='var-SPECIAL_PKGSUFFIX'><filename>SPECIAL_PKGSUFFIX</filename></link>
+                    variables, respectively.
                 </para>
             </glossdef>
         </glossentry>
@@ -1972,22 +2028,36 @@
                     An internal variable specifying the special class override
                     that should currently apply (e.g. "class-target",
                     "class-native", and so forth).
-                    The classes that use this variable set it to
-                    appropriate values.
+                    The classes that use this variable (e.g.
+                    <link linkend='ref-classes-native'><filename>native</filename></link>,
+                    <link linkend='ref-classes-nativesdk'><filename>nativesdk</filename></link>,
+                    and so forth) set the variable to appropriate values.
+                    <note>
+                        <filename>CLASSOVERRIDE</filename> gets its default
+                        "class-target" value from the
+                        <filename>bitbake.conf</filename> file.
+                    </note>
                 </para>
 
                 <para>
-                    You do not normally directly interact with this variable.
-                    The value for the <filename>CLASSOVERRIDE</filename>
-                    variable goes into
-                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
-                    and then can be used as an override.
-                    Here is an example where "python-native" is added to
-                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
-                    only when building for the <filename>-native</filename> case:
+                    As an example, the following override allows you to install
+                    extra files, but only when building for the target:
                     <literallayout class='monospaced'>
-     DEPENDS_append_class-native = " python-native"
+     do_install_append_class-target() {
+         install my-extra-file ${D}${sysconfdir}
+     }
                     </literallayout>
+                    Here is an example where <filename>FOO</filename>
+                    is set to "native" when building for the build host, and
+                    to "other" when not building for the build host:
+                    <literallayout class='monospaced'>
+     FOO_class-native = "native"
+     FOO = "other"
+                    </literallayout>
+                    The underlying mechanism behind
+                    <filename>CLASSOVERRIDE</filename> is simply that it is
+                    included in the default value of
+                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
                 </para>
             </glossdef>
         </glossentry>
@@ -2574,8 +2644,13 @@
                     task.
                     This location defaults to:
                     <literallayout class='monospaced'>
-     ${WORKDIR}/image
+     ${<link linkend='var-WORKDIR'>WORKDIR</link>}/image
                     </literallayout>
+                    <note><title>Caution</title>
+                        Tasks that read from or write to this directory should
+                        run under
+                        <link linkend='fakeroot-and-pseudo'>fakeroot</link>.
+                    </note>
                 </para>
             </glossdef>
         </glossentry>
@@ -2748,34 +2823,117 @@
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Lists a recipe's build-time dependencies
-                    (i.e. other recipe files).
-                    The system ensures that all the dependencies listed
-                    have been built and have their contents in the appropriate
-                    sysroots before the recipe's configure task is executed.
+                    Lists a recipe's build-time dependencies.
+                    These are dependencies on other recipes whose
+                    contents (e.g. headers and shared libraries) are needed
+                    by the recipe at build time.
                 </para>
 
                 <para>
-                    Consider this simple example for two recipes named "a" and
-                    "b" that produce similarly named packages.
-                    In this example, the <filename>DEPENDS</filename>
-                    statement appears in the "a" recipe:
+                    As an example, consider a recipe <filename>foo</filename>
+                    that contains the following assignment:
                     <literallayout class='monospaced'>
-     DEPENDS = "b"
+     DEPENDS = "bar"
                     </literallayout>
-                    Here, the dependency is such that the
+                    The practical effect of the previous assignment is that
+                    all files installed by bar will be available in the
+                    appropriate staging sysroot, given by the
+                    <link linkend='var-STAGING_DIR'><filename>STAGING_DIR*</filename></link>
+                    variables, by the time the
                     <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
-                    task for recipe "a" depends on the
+                    task for <filename>foo</filename> runs.
+                    This mechanism is implemented by having
+                    <filename>do_configure</filename> depend on the
                     <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
-                    task of recipe "b".
-                    This means anything that recipe "b" puts into sysroot
-                    is available when recipe "a" is configuring itself.
+                    task of each recipe listed in <filename>DEPENDS</filename>,
+                    through a
+                    <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>deptask</filename></ulink><filename>]</filename>
+                    declaration in the
+                    <link linkend='ref-classes-base'><filename>base</filename></link>
+                    class.
+                    <note>
+                        It seldom is necessary to reference, for example,
+                        <filename>STAGING_DIR_HOST</filename> explicitly.
+                        The standard classes and build-related variables are
+                        configured to automatically use the appropriate staging
+                        sysroots.
+                    </note>
+                    As another example, <filename>DEPENDS</filename> can also
+                    be used to add utilities that run on the build machine
+                    during the build.
+                    For example, a recipe that makes use of a code generator
+                    built by the recipe <filename>codegen</filename> might have
+                    the following:
+                    <literallayout class='monospaced'>
+     DEPENDS = "codegen-native"
+                    </literallayout>
+                    For more information, see the
+                    <link linkend='ref-classes-native'><filename>native</filename></link>
+                    class and the
+                    <link linkend='var-EXTRANATIVEPATH'><filename>EXTRANATIVEPATH</filename></link>
+                    variable.
+                    <note>
+                        <title>Notes</title>
+                        <itemizedlist>
+                            <listitem><para>
+                                <filename>DEPENDS</filename> is a list of
+                                recipe names.
+                                Or, to be more precise, it is a list of
+                                <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
+                                names, which usually match recipe names.
+                                Putting a package name such as "foo-dev" in
+                                <filename>DEPENDS</filename> does not make
+                                sense.
+                                Use "foo" instead, as this will put files
+                                from all the packages that make up
+                                <filename>foo</filename>, which includes
+                                those from <filename>foo-dev</filename>, into
+                                the sysroot.
+                                </para></listitem>
+                            <listitem><para>
+                                One recipe having another recipe in
+                                <filename>DEPENDS</filename> does not by itself
+                                add any runtime dependencies between the
+                                packages produced by the two recipes.
+                                However, as explained in the
+                                "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
+                                section, runtime dependencies will often be
+                                added automatically, meaning
+                                <filename>DEPENDS</filename> alone is
+                                sufficient for most recipes.
+                                </para></listitem>
+                            <listitem><para>
+                                Counterintuitively,
+                                <filename>DEPENDS</filename> is often necessary
+                                even for recipes that install precompiled
+                                components.
+                                For example, if <filename>libfoo</filename>
+                                is a precompiled library that links against
+                                <filename>libbar</filename>, then
+                                linking against <filename>libfoo</filename>
+                                requires both <filename>libfoo</filename>
+                                and <filename>libbar</filename> to be available
+                                in the sysroot.
+                                Without a <filename>DEPENDS</filename> from the
+                                recipe that installs <filename>libfoo</filename>
+                                to the recipe that installs
+                                <filename>libbar</filename>, other recipes might
+                                fail to link against
+                                <filename>libfoo</filename>.
+                                </para></listitem>
+                        </itemizedlist>
+                    </note>
                 </para>
 
                 <para>
                     For information on runtime dependencies, see the
                     <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
                     variable.
+                    You can also see the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
+                    sections in the BitBake User Manual for additional
+                    information on tasks and dependencies.
                 </para>
             </glossdef>
         </glossentry>
@@ -3072,15 +3230,15 @@
                     by UUID to allow the kernel to locate the root device
                     even if the device name changes due to differences in
                     hardware configuration.
-                    By default, <filename>SYSLINUX_ROOT</filename> is set
+                    By default, <filename>ROOT_VM</filename> is set
                     as follows:
                     <literallayout class='monospaced'>
-     SYSLINUX_ROOT = "root=/dev/sda2"
+     ROOT_VM ?= "root=/dev/sda2"
                     </literallayout>
                     However, you can change this to locate the root device
                     using the disk signature instead:
                     <literallayout class='monospaced'>
-     SYSLINUX_ROOT = "root=PARTUUID=${DISK_SIGNATURE}-02"
+     ROOT_VM = "root=PARTUUID=${DISK_SIGNATURE}-02"
                     </literallayout>
                 </para>
 
@@ -3341,20 +3499,28 @@
 
         <glossentry id='var-DISTROOVERRIDES'><glossterm>DISTROOVERRIDES</glossterm>
             <info>
-                DISTROOVERRIDES[doc] = "Lists overrides specific to the current distribution. By default, the variable list includes the value of the DISTRO variable."
+                DISTROOVERRIDES[doc] = "A colon-separated list of overrides specific to the current distribution."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    This variable lists overrides specific to the current
-                    distribution.
-                    By default, the variable list includes the value of the
-                    <filename><link linkend='var-DISTRO'>DISTRO</link></filename>
-                    variable.
-                    You can extend the variable to apply any variable overrides
-                    you want as part of the distribution and are not
-                    already in <filename>OVERRIDES</filename> through
-                    some other means.
+                    A colon-separated list of overrides specific to the
+                    current distribution.
+                    By default, this list includes the value of
+                    <link linkend='var-DISTRO'><filename>DISTRO</filename></link>.
+                </para>
+
+                <para>
+                    You can extend <filename>DISTROOVERRIDES</filename>
+                    to add extra overrides that should apply to
+                    the distribution.
+                </para>
+
+                <para>
+                    The underlying mechanism behind
+                    <filename>DISTROOVERRIDES</filename> is simply that it
+                    is included in the default value of
+                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
                 </para>
             </glossdef>
         </glossentry>
@@ -3463,13 +3629,13 @@
                     <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>),
                     the <filename>EFI_PROVIDER</filename> variable specifies
                     the EFI bootloader to use.
-                    The default is "grub-efi", but "gummiboot" can be used
+                    The default is "grub-efi", but "systemd-boot" can be used
                     instead.
                 </para>
 
                 <para>
                     See the
-                    <link linkend='ref-classes-gummiboot'><filename>gummiboot</filename></link>
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
                     class for more information.
                 </para>
             </glossdef>
@@ -3893,6 +4059,27 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-EXTRANATIVEPATH'><glossterm>EXTRANATIVEPATH</glossterm>
+            <info>
+                EXTRANATIVEPATH[doc] = "A list of subdirectories of ${STAGING_BINDIR_NATIVE} added to the beginning of the environment variable PATH."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    A list of subdirectories of
+                    <filename>${</filename><link linkend='var-STAGING_BINDIR_NATIVE'><filename>STAGING_BINDIR_NATIVE</filename></link><filename>}</filename>
+                    added to the beginning of the environment variable
+                    <filename>PATH</filename>.
+                    As an example, the following prepends
+                    "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:"
+                    to <filename>PATH</filename>:
+                    <literallayout class='monospaced'>
+     EXTRANATIVEPATH = "foo bar"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-EXTRA_OECMAKE'><glossterm>EXTRA_OECMAKE</glossterm>
             <info>
                 EXTRA_OECMAKE[doc] = "Additional cmake options."
@@ -3913,6 +4100,10 @@
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
                     Additional <filename>configure</filename> script options.
+                    See
+                    <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>
+                    for additional information on passing configure script
+                    options.
                 </para>
             </glossdef>
         </glossentry>
@@ -3932,6 +4123,15 @@
                     "", you need to set the variable to specify any required
                     GNU options.
                 </para>
+
+                <para>
+                    <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
+                    and
+                    <link linkend='var-PARALLEL_MAKEINST'><filename>PARALLEL_MAKEINST</filename></link>
+                    also make use of
+                    <filename>EXTRA_OEMAKE</filename> to pass the required
+                    flags.
+                </para>
             </glossdef>
         </glossentry>
 
@@ -4061,12 +4261,16 @@
 
         <glossentry id='var-FILES'><glossterm>FILES</glossterm>
             <info>
-                FILES[doc] = "The list of directories or files that are placed in packages."
+                FILES[doc] = "The list of directories or files that are placed in a package."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    The list of directories or files that are placed in packages.
+                    The list of files and directories that are placed in a
+                    package.
+                    The
+                    <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
+                    variable lists the packages generated by a recipe.
                 </para>
 
                 <para>
@@ -4077,7 +4281,7 @@
                     resulting package.
                     Here is an example:
                     <literallayout class='monospaced'>
-     FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile"
+     FILES_${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
                     </literallayout>
                 </para>
 
@@ -4092,6 +4296,8 @@
                     You can find a list of these variables at the top of the
                     <filename>meta/conf/bitbake.conf</filename> file in the
                     <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+                    You will also find the default values of the various
+                    <filename>FILES_*</filename> variables in this file.
                 </note>
 
                 <para>
@@ -4106,7 +4312,6 @@
                     variable for information on how to identify these files to
                     the PMS.
                 </para>
-
             </glossdef>
         </glossentry>
 
@@ -4361,6 +4566,25 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-FORCE_RO_REMOVE'><glossterm>FORCE_RO_REMOVE</glossterm>
+            <info>
+                FORCE_RO_REMOVE[doc] = "Forces the removal of the packages listed in ROOTFS_RO_UNNEEDED during the generation of the root filesystem."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    Forces the removal of the packages listed in
+                    <filename>ROOTFS_RO_UNNEEDED</filename> during the
+                    generation of the root filesystem.
+                </para>
+
+                <para>
+                    Set the variable to "1" to force the removal of these
+                    packages.
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-FULL_OPTIMIZATION'><glossterm>FULL_OPTIMIZATION</glossterm>
             <info>
                 FULL_OPTIMIZATION[doc]= "The options to pass in TARGET_CFLAGS and CFLAGS when compiling an optimized system. This variable defaults to '-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2'."
@@ -4570,92 +4794,6 @@
             </glossdef>
         </glossentry>
 
-        <glossentry id='var-GUMMIBOOT_CFG'><glossterm>GUMMIBOOT_CFG</glossterm>
-            <info>
-                GUMMIBOOT_CFG[doc] = "When EFI_PROVIDER is set to "gummiboot", the GUMMIBOOT_CFG variable specifies the configuration file that should be used."
-            </info>
-            <glossdef>
-                <para role="glossdeffirst">
-<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    When
-                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
-                    is set to "gummiboot", the
-                    <filename>GUMMIBOOT_CFG</filename> variable specifies the
-                    configuration file that should be used.
-                    By default, the
-                    <link linkend='ref-classes-gummiboot'><filename>gummiboot</filename></link>
-                    class sets the <filename>GUMMIBOOT_CFG</filename> as
-                    follows:
-                    <literallayout class='monospaced'>
-     GUMMIBOOT_CFG ?= "${<link linkend='var-S'>S</link>}/loader.conf"
-                    </literallayout>
-                </para>
-
-                <para>
-                    For information on Gummiboot, see the
-                    <ulink url='http://freedesktop.org/wiki/Software/gummiboot/'>Gummiboot documentation</ulink>.
-                </para>
-            </glossdef>
-        </glossentry>
-
-        <glossentry id='var-GUMMIBOOT_ENTRIES'><glossterm>GUMMIBOOT_ENTRIES</glossterm>
-            <info>
-                GUMMIBOOT_ENTRIES[doc] = "When EFI_PROVIDER is set to "gummiboot", the GUMMIBOOT_ENTRIES variable specifies a list of entry files (*.conf) to be installed containing one boot entry per file."
-            </info>
-            <glossdef>
-                <para role="glossdeffirst">
-<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    When
-                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
-                    is set to "gummiboot", the
-                    <filename>GUMMIBOOT_ENTRIES</filename> variable specifies
-                    a list of entry files
-                    (<filename>*.conf</filename>) to be installed
-                    containing one boot entry per file.
-                    By default, the
-                    <link linkend='ref-classes-gummiboot'><filename>gummiboot</filename></link>
-                    class sets the <filename>GUMMIBOOT_ENTRIES</filename> as
-                    follows:
-                    <literallayout class='monospaced'>
-     GUMMIBOOT_ENTRIES ?= ""
-                    </literallayout>
-                </para>
-
-                <para>
-                    For information on Gummiboot, see the
-                    <ulink url='http://freedesktop.org/wiki/Software/gummiboot/'>Gummiboot documentation</ulink>.
-                </para>
-            </glossdef>
-        </glossentry>
-
-        <glossentry id='var-GUMMIBOOT_TIMEOUT'><glossterm>GUMMIBOOT_TIMEOUT</glossterm>
-            <info>
-                GUMMIBOOT_TIMEOUT[doc] = "When EFI_PROVIDER is set to "gummiboot", the GUMMIBOOT_TIMEOUT variable specifies the boot menu timeout in seconds."
-            </info>
-            <glossdef>
-                <para role="glossdeffirst">
-<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    When
-                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
-                    is set to "gummiboot", the
-                    <filename>GUMMIBOOT_TIMEOUT</filename> variable specifies
-                    the boot menu timeout in seconds.
-                    By default, the
-                    <link linkend='ref-classes-gummiboot'><filename>gummiboot</filename></link>
-                    class sets the <filename>GUMMIBOOT_TIMEOUT</filename> as
-                    follows:
-                    <literallayout class='monospaced'>
-     GUMMIBOOT_TIMEOUT ?= "10"
-                    </literallayout>
-                </para>
-
-                <para>
-                    For information on Gummiboot, see the
-                    <ulink url='http://freedesktop.org/wiki/Software/gummiboot/'>Gummiboot documentation</ulink>.
-                </para>
-            </glossdef>
-        </glossentry>
-
     </glossdiv>
 
     <glossdiv id='var-glossary-h'><title>H</title>
@@ -5940,7 +6078,7 @@
 
         <glossentry id='var-INHIBIT_PACKAGE_DEBUG_SPLIT'><glossterm>INHIBIT_PACKAGE_DEBUG_SPLIT</glossterm>
             <info>
-                INHIBIT_PACKAGE_STRIP[doc] = "If set to "1", causes the build to not strip binaries in resulting packages."
+                INHIBIT_PACKAGE_DEBUG_SPLIT[doc] = "If set to "1", prevents the OpenEmbedded build system from splitting out debug information during packaging"
             </info>
             <glossdef>
                 <para role="glossdeffirst">
@@ -5976,7 +6114,19 @@
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    If set to "1", causes the build to not strip binaries in resulting packages.
+                    If set to "1", causes the build to not strip binaries in
+                    resulting packages and prevents the
+                    <filename>-dbg</filename> package from containing the
+                    source files.
+                </para>
+
+                <para>
+                     By default, the OpenEmbedded build system strips
+                     binaries and puts the debugging symbols into
+                     <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}-dbg</filename>.
+                     Consequently, you should not set
+                     <filename>INHIBIT_PACKAGE_STRIP</filename> when you plan
+                     to debug in general.
                 </para>
             </glossdef>
         </glossentry>
@@ -5994,72 +6144,108 @@
                     <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
                     variable.
                 </para>
+
+                <para>
+                    The default value of this variable, which is set in the
+                    <filename>meta/conf/bitbake.conf</filename> configuration
+                    file in the
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
+                    is "cpio.gz".
+                    The Linux kernel's initramfs mechanism, as opposed to the
+                    initial RAM disk
+                    <ulink url='https://en.wikipedia.org/wiki/Initrd'>initrd</ulink>
+                    mechanism, expects an optionally compressed cpio
+                    archive.
+                </para>
             </glossdef>
         </glossentry>
 
         <glossentry id='var-INITRAMFS_IMAGE'><glossterm>INITRAMFS_IMAGE</glossterm>
             <info>
-                INITRAMFS_IMAGE[doc] = "Causes the OpenEmbedded build system to build an additional recipe as a dependency to your root filesystem recipe (e.g. core-image-sato)."
+                INITRAMFS_IMAGE[doc] = "Specifies the PROVIDES name of an image recipe that is used to build an initial RAM disk (initramfs) image."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Causes the OpenEmbedded build system to build an additional
-                    recipe as a dependency to your root filesystem recipe
-                    (e.g. <filename>core-image-sato</filename>).
-                    The additional recipe is used to create an initial RAM disk
-                    (initramfs) that might be needed during the initial boot of
-                    the target system to accomplish such things as loading
-                    kernel modules prior to mounting the root file system.
+                    Specifies the
+                    <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
+                    name of an image recipe that is used to build an initial
+                    RAM disk (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).
+                    The specified recipe is added as a dependency of the root
+                    filesystem recipe (e.g.
+                    <filename>core-image-sato</filename>).
+                    See the <filename>meta/recipes-core/images/core-image-minimal-initramfs.bb</filename>
+                    recipe in the
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
+                    for an example initramfs recipe.
+                    To select this recipe to provide the initramfs,
+                    set <filename>INITRAMFS_IMAGE</filename> to
+                    "core-image-minimal-initramfs".
+                    <note>
+                        The initramfs image recipe should set
+                        <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
+                        to
+                        <link linkend='var-INITRAMFS_FSTYPES'><filename>INITRAMFS_FSTYPES</filename></link>.
+                    </note>
                 </para>
 
                 <para>
-                    When you set the variable, specify the name of the
-                    initramfs you want created.
-                    The following example, which is set in the
-                    <filename>local.conf</filename> configuration file, causes
-                    a separate recipe to be created that results in an
-                    initramfs image named
-                    <filename>core-image-sato-initramfs.bb</filename> to be
-                    created:
-                    <literallayout class='monospaced'>
-     INITRAMFS_IMAGE = "core-image-minimal-initramfs"
-                    </literallayout>
-                    By default, the
+                    You can also find more information by referencing the
+                    <filename>meta/poky/conf/local.conf.sample.extended</filename>
+                    configuration file in the
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
+                    the
+                    <link linkend='ref-classes-image'><filename>image</filename></link>
+                    class, and the
                     <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
-                    class sets this variable to a null string as follows:
-                    <literallayout class='monospaced'>
-     INITRAMFS_IMAGE = ""
-                    </literallayout>
+                    class to see how to use the
+                    <filename>INITRAMFS_IMAGE</filename> variable.
                 </para>
 
                 <para>
-                    See the
-                    <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-poky/conf/local.conf.sample.extended'><filename>local.conf.sample.extended</filename></ulink>
-                    file for additional information.
-                    You can also reference the
-                    <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/classes/kernel.bbclass'><filename>kernel.bbclass</filename></ulink>
-                    file to see how the variable is used.
+                    If <filename>INITRAMFS_IMAGE</filename> is empty, which is
+                    the default, then no initramfs is built.
+                </para>
+
+                <para>
+                    Finally, for more information you can also see the
+                    <link linkend='var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></link>
+                    variable, which allows the generated image to be bundled
+                    inside the kernel image.
                 </para>
             </glossdef>
         </glossentry>
 
         <glossentry id='var-INITRAMFS_IMAGE_BUNDLE'><glossterm>INITRAMFS_IMAGE_BUNDLE</glossterm>
             <info>
-                INITRAMFS_IMAGE_BUNDLE[doc] = "Controls whether or not the image recipe specified by INITRAMFS_IMAGE is run through an extra pass 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 disk (initramfs)."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
                     Controls whether or not the image recipe specified by
                     <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
-                    is run through an extra pass during kernel compilation
-                    in order to build a single binary that contains both the
-                    kernel image and the initial RAM disk (initramfs).
-                    Using an extra compilation pass ensures that when a kernel
-                    attempts to use an initramfs, it does not encounter
-                    circular dependencies should the initramfs include kernel
-                    modules.
+                    is run through an extra pass
+                    (<link linkend='ref-tasks-bundle_initramfs'><filename>do_bundle_initramfs</filename></link>)
+                    during kernel compilation in order to build a single binary
+                    that contains both the kernel image and the initial RAM disk
+                    (initramfs).
+                    This makes use of the
+                    <link linkend='var-CONFIG_INITRAMFS_SOURCE'><filename>CONFIG_INITRAMFS_SOURCE</filename></link>
+                    kernel feature.
+                    <note>
+                        Using an extra compilation pass to bundle the initramfs
+                        avoids a circular dependency between the kernel recipe and
+                        the initramfs recipe should the initramfs include kernel
+                        modules.
+                        Should that be the case, the initramfs recipe depends on
+                        the kernel for the kernel modules, and the kernel depends
+                        on the initramfs recipe since the initramfs is bundled
+                        inside the kernel image.
+                    </note>
                 </para>
 
                 <para>
@@ -6070,9 +6256,11 @@
                 </para>
 
                 <para>
-                    Setting the variable to "1" in a configuration file causes
-                    the OpenEmbedded build system to make the extra pass during
-                    kernel compilation:
+                    Setting the variable to "1" in a configuration file causes the
+                    OpenEmbedded build system to generate a kernel image with the
+                    initramfs specified in
+                    <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
+                    bundled within:
                     <literallayout class='monospaced'>
      INITRAMFS_IMAGE_BUNDLE = "1"
                     </literallayout>
@@ -6080,7 +6268,7 @@
                     <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
                     class sets this variable to a null string as follows:
                     <literallayout class='monospaced'>
-     INITRAMFS_IMAGE_BUNDLE = ""
+     INITRAMFS_IMAGE_BUNDLE ?= ""
                     </literallayout>
                     <note>
                         You must set the
@@ -7727,36 +7915,41 @@
 
         <glossentry id='var-MACHINEOVERRIDES'><glossterm>MACHINEOVERRIDES</glossterm>
             <info>
-                MACHINEOVERRIDES[doc] = "Lists overrides specific to the current machine. By default, this list includes the value of MACHINE."
+                MACHINEOVERRIDES[doc] = "A colon-separated list of overrides that apply to the current machine."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Lists overrides specific to the current machine.
-                    By default, this list includes the value
-                    of <filename><link linkend='var-MACHINE'>MACHINE</link></filename>.
-                    You can extend the list to apply variable overrides for
-                    classes of machines.
-                    For example, all QEMU emulated machines (e.g. qemuarm,
-                    qemux86, and so forth) include a common file named
-                    <filename>meta/conf/machine/include/qemu.inc</filename>
-                    that prepends <filename>MACHINEOVERRIDES</filename> with
-                    the following variable override:
-                    <literallayout class='monospaced'>
-    MACHINEOVERRIDES =. "qemuall:"
-                    </literallayout>
+                    A colon-separated list of overrides that apply to the
+                    current machine.
+                    By default, this list includes the value of
+                    <link linkend='var-MACHINE'><filename>MACHINE</filename></link>.
                 </para>
 
                 <para>
-                    Applying an override like <filename>qemuall</filename>
-                    affects all QEMU emulated machines elsewhere.
-                    Here is an example from the
-                    <filename>connman-conf</filename> recipe:
+                    You can extend <filename>MACHINEOVERRIDES</filename>
+                    to add extra overrides that should apply to a machine.
+                    For example, all machines emulated in QEMU (e.g.
+                    <filename>qemuarm</filename>, <filename>qemux86</filename>,
+                    and so forth) include a file named
+                    <filename>meta/conf/machine/include/qemu.inc</filename>
+                    that prepends the following override to
+                    <filename>MACHINEOVERRIDES</filename>:
                     <literallayout class='monospaced'>
-    SRC_URI_append_qemuall = "file://wired.config \
-                              file://wired-setup \
-                             "
+     MACHINEOVERRIDES =. "qemuall:"
                     </literallayout>
+                    This override allows variables to be overriden for all
+                    machines emulated in QEMU, like in the following example
+                    from the <filename>connman-conf</filename> recipe:
+                    <literallayout class='monospaced'>
+     SRC_URI_append_qemuall = "file://wired.config \
+                               file://wired-setup \
+                              "
+                    </literallayout>
+                    The underlying mechanism behind
+                    <filename>MACHINEOVERRIDES</filename> is simply that it is
+                    included in the default value of
+                    <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
                 </para>
             </glossdef>
         </glossentry>
@@ -7817,6 +8010,39 @@
                     <link linkend='var-BPN'><filename>BPN</filename></link> variable).
                     <filename>MLPREFIX</filename> gets set when a prefix has been
                     added to <filename>PN</filename>.
+                    <note>
+                        The "ML" in <filename>MLPREFIX</filename> stands for
+                        "MultiLib".
+                        This representation is historical and comes from
+                        a time when <filename>nativesdk</filename> was a suffix
+                        rather than a prefix on the recipe name.
+                        When <filename>nativesdk</filename> was turned into a
+                        prefix, it made sense to set
+                        <filename>MLPREFIX</filename> for it as well.
+                    </note>
+                </para>
+
+                <para>
+                    To help understand when <filename>MLPREFIX</filename>
+                    might be needed, consider when
+                    <link linkend='var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></link>
+                    is used to provide a <filename>nativesdk</filename> version
+                    of a recipe in addition to the target version.
+                    If that recipe declares build-time dependencies on tasks in
+                    other recipes by using
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>,
+                    then a dependency on "foo" will automatically get rewritten
+                    to a dependency on "nativesdk-foo".
+                    However, dependencies like the following will not get
+                    rewritten automatically:
+                    <literallayout class='monospaced'>
+     do_foo[depends] += "<replaceable>recipe</replaceable>:do_foo"
+                    </literallayout>
+                    If you want such a dependency to also get transformed,
+                    you can do the following:
+                    <literallayout class='monospaced'>
+     do_foo[depends] += "${MLPREFIX}<replaceable>recipe</replaceable>:do_foo"
+                    </literallayout>
                 </para>
             </glossdef>
         </glossentry>
@@ -7956,6 +8182,31 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-MULTIMACH_HOST_SYS'><glossterm>MULTIMACH_HOST_SYS</glossterm>
+            <info>
+                MULTIMACH_HOST_SYS[doc] = "Separates files for different machines such that you can build for multiple host machines using the same output directories."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    Serves the same purpose as
+                    <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
+                    but for the "HOST" system, in situations that involve a
+                    "HOST" and a "TARGET" system.
+                    See the
+                    <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
+                    variable for more information.
+                </para>
+
+                <para>
+                    The default value of this variable is:
+                    <literallayout class='monospaced'>
+     ${PACKAGE_ARCH}${HOST_VENDOR}-${HOST_OS}
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-MULTIMACH_TARGET_SYS'><glossterm>MULTIMACH_TARGET_SYS</glossterm>
             <info>
                 MULTIMACH_TARGET_SYS[doc] = "Separates files for different machines such that you can build for multiple target machines using the same output directories."
@@ -7963,10 +8214,33 @@
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Separates files for different machines such that you can build
-                    for multiple target machines using the same output directories.
-                    See the <link linkend='var-STAMP'><filename>STAMP</filename></link> variable
-                    for an example.
+                    Uniquely identifies the type of the target system for
+                    which packages are being built.
+                    This variable allows output for different types of target
+                    systems to be put into different subdirectories of the same
+                    output directory.
+                </para>
+
+                <para>
+                    The default value of this variable is:
+                    <literallayout class='monospaced'>
+     ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
+                    </literallayout>
+                    Some classes (e.g.
+                    <link linkend='ref-classes-cross-canadian'><filename>cross-canadian</filename></link>)
+                    modify the <filename>MULTIMACH_TARGET_SYS</filename> value.
+                </para>
+
+                <para>
+                    See the
+                    <link linkend='var-STAMP'><filename>STAMP</filename></link>
+                    variable for an example.
+                    <link linkend='var-MULTIMACH_HOST_SYS'><filename>MULTIMACH_HOST_SYS</filename></link>
+                    is the corresponding variable for the host system in
+                    situations that involve a "HOST" and a "TARGET" system.
+                    See the
+                    <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
+                    variable for more information.
                 </para>
             </glossdef>
         </glossentry>
@@ -8304,18 +8578,60 @@
 
         <glossentry id='var-OVERRIDES'><glossterm>OVERRIDES</glossterm>
             <info>
-                OVERRIDES[doc] = "BitBake uses OVERRIDES to control what variables are overridden after BitBake parses recipes and configuration files."
+                OVERRIDES[doc] = "A colon-separated list of overrides that currently apply."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    BitBake uses <filename>OVERRIDES</filename> to control
-                    what variables are overridden after BitBake parses
-                    recipes and configuration files.
-                    You can find more information on how overrides are handled
-                    in the
+                    A colon-separated list of overrides that currently apply.
+                    Overrides are a BitBake mechanism that allows variables to
+                    be selectively overridden at the end of parsing.
+                    The set of overrides in <filename>OVERRIDES</filename>
+                    represents the "state" during building, which includes
+                    the current recipe being built, the machine for which
+                    it is being built, and so forth.
+                </para>
+
+                <para>
+                    As an example, if the string "an-override" appears as an
+                    element in the colon-separated list in
+                    <filename>OVERRIDES</filename>, then the following
+                    assignment will override <filename>FOO</filename> with the
+                    value "overridden" at the end of parsing:
+                    <literallayout class='monospaced'>
+     FOO_an-override = "overridden"
+                    </literallayout>
+                    See the
                     "<ulink url='&YOCTO_DOCS_BB_URL;#conditional-syntax-overrides'>Conditional Syntax (Overrides)</ulink>"
-                    section of the BitBake User Manual.
+                    section in the BitBake User Manual for more information on
+                    the overrides mechanism.
+                </para>
+
+                <para>
+                    The default value of <filename>OVERRIDES</filename>
+                    includes the values of the
+                    <link linkend='var-CLASSOVERRIDE'><filename>CLASSOVERRIDE</filename></link>,
+                    <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>,
+                    and
+                    <link linkend='var-DISTROOVERRIDES'><filename>DISTROOVERRIDES</filename></link>
+                    variables.
+                    Another important override included by default is
+                    <filename>pn-${PN}</filename>.
+                    This override allows variables to be set for a single
+                    recipe within configuration (<filename>.conf</filename>)
+                    files.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     FOO_pn-myrecipe = "myrecipe-specific value"
+                    </literallayout>
+                    <note><title>Tip</title>
+                        An easy way to see what overrides apply is to search for
+                        <filename>OVERRIDES</filename> in the output of the
+                        <filename>bitbake -e</filename> command.
+                        See the
+                        "<link linkend='usingpoky-debugging-viewing-variable-values'>Viewing Variable Values</link>"
+                        section for more information.
+                    </note>
                 </para>
             </glossdef>
         </glossentry>
@@ -8863,10 +9179,13 @@
                         <listitem><para>Extra arguments
                             that should be added to the configure script
                             argument list
-                            (<link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>)
+                            (<link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
+                            or
+                            <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>)
                             if the feature is enabled.</para></listitem>
                         <listitem><para>Extra arguments
                             that should be added to <filename>EXTRA_OECONF</filename>
+                            or <filename>PACKAGECONFIG_CONFARGS</filename>
                             if the feature is disabled.
                             </para></listitem>
                         <listitem><para>Additional build dependencies
@@ -8950,6 +9269,50 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-PACKAGECONFIG_CONFARGS'><glossterm>PACKAGECONFIG_CONFARGS</glossterm>
+            <info>
+                PACKAGECONFIG_CONFARGS[doc] = "A space-separated list of configuration options generated from PACKAGECONFIG."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    A space-separated list of configuration options generated
+                    from the
+                    <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
+                    setting.
+                    This list of options helps other classes and
+                    recipes take advantage of the
+                    <filename>PACKAGECONFIG</filename> mechanism without
+                    having to include options from
+                    <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>.
+                </para>
+
+                <para>
+                    To illustrate how to use
+                    <filename>PACKAGECONFIG_CONFARGS</filename>, consider the
+                    following example:
+                    <literallayout class='monospaced'>
+     PACKAGECONFIG_CONFARGS = " \
+          -prefix ${prefix} \
+          -sysroot ${STAGING_DIR_NATIVE} \
+          -no-gcc-sysroot
+          "
+                    </literallayout>
+                    In the previous example,
+                    <filename>PACKAGECONFIG_CONFARGS</filename> is set with
+                    three configuration options that can be passed using the
+                    <filename>PACKAGECONFIG</filename> mechanism, thus
+                    avoiding having to use <filename>EXTRA_OECONF</filename>.
+                </para>
+
+                <para>
+                    For additional information, see the
+                    <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
+                    variable.
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-PACKAGEGROUP_DISABLE_COMPLEMENTARY'><glossterm>PACKAGEGROUP_DISABLE_COMPLEMENTARY</glossterm>
             <info>
                 PACKAGEGROUP_DISABLE_COMPLEMENTARY[doc] = "Prevents automatic creation of the normal complementary packages such as -dev and -dbg in a packagegroup recipe."
@@ -8984,6 +9347,31 @@
      ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
                     </literallayout>
                 </para>
+
+                <para>
+                    During packaging, the
+                    <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                    task goes through <filename>PACKAGES</filename> and uses
+                    the
+                    <link linkend='var-FILES'><filename>FILES</filename></link>
+                    variable corresponding to each package to assign files to
+                    the package.
+                    If a file matches the <filename>FILES</filename> variable
+                    for more than one package in <filename>PACKAGES</filename>,
+                    it will be assigned to the earliest (leftmost) package.
+                </para>
+
+                <para>
+                    Packages in the variable's list that are empty (i.e. where
+                    none of the patterns in
+                    <filename>FILES_</filename><replaceable>pkg</replaceable>
+                    match any files installed by the
+                    <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+                    task) are not generated, unless generation is forced through
+                    the
+                    <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>
+                    variable.
+                </para>
             </glossdef>
         </glossentry>
 
@@ -9068,6 +9456,14 @@
                     where <replaceable>x</replaceable> represents the maximum
                     number of parallel threads <filename>make</filename> can
                     run.
+                    <note><title>Caution</title>
+                        In order for <filename>PARALLEL_MAKE</filename> to be
+                        effective, <filename>make</filename> must be called
+                        with
+                        <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
+                        An easy way to ensure this is to use the
+                        <filename>oe_runmake</filename> function.
+                    </note>
                 </para>
 
                 <para>
@@ -9114,16 +9510,24 @@
                     task in order to specify parallel installation.
                     This variable defaults to the value of
                     <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>.
-                    <note>
-                        If the software being built experiences dependency
-                        issues during the
+                    <note><title>Notes and Cautions</title>
+                        <para>In order for <filename>PARALLEL_MAKEINST</filename>
+                        to be
+                        effective, <filename>make</filename> must be called
+                        with
+                        <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
+                        An easy way to ensure this is to use the
+                        <filename>oe_runmake</filename> function.</para>
+
+                        <para>If the software being built experiences
+                        dependency issues during the
                         <filename>do_install</filename> task that result in
                         race conditions, you can clear the
                         <filename>PARALLEL_MAKEINST</filename> variable within
                         the recipe as a workaround.
                         For information on addressing race conditions, see the
                         "<ulink url='&YOCTO_DOCS_DEV_URL;#debugging-parallel-make-races'>Debugging Parallel Make Races</ulink>"
-                        section in the Yocto Project Development Manual.
+                        section in the Yocto Project Development Manual.</para>
                     </note>
                 </para>
             </glossdef>
@@ -9201,6 +9605,12 @@
                     versioning scheme changes in some backwards incompatible
                     way.
                 </para>
+
+                <para>
+                    <filename>PE</filename> is the default value of the
+                    <link linkend='var-PKGE'><filename>PKGE</filename></link>
+                    variable.
+                </para>
             </glossdef>
         </glossentry>
 
@@ -9316,14 +9726,16 @@
                     <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
                     task packages data for each recipe and installs it into
                     this temporary, shared area.
-                    This directory defaults to the following:
+                    This directory defaults to the following, which you should
+                    not change:
                     <literallayout class='monospaced'>
      ${STAGING_DIR_HOST}/pkgdata
                     </literallayout>
-                </para>
-
-                <para>
-                    Do not change this default.
+                    For examples of how this data is used, see the
+                    "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
+                    section and the
+                    "<link linkend='viewing-package-information-with-oe-pkgdata-util'>Viewing Package Information with <filename>oe-pkgdata-util</filename></link>"
+                    section.
                 </para>
             </glossdef>
         </glossentry>
@@ -9354,45 +9766,41 @@
 
         <glossentry id='var-PKGDESTWORK'><glossterm>PKGDESTWORK</glossterm>
             <info>
-                PKGDESTWORK[doc] = "Points to a temporary work area used by the do_package task to write output from the do_packagedata task."
+                PKGDESTWORK[doc] = "Points to a temporary work area where the do_package task saves package metadata."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Points to a temporary work area used by the
+                    Points to a temporary work area where the
                     <link linkend='ref-tasks-package'><filename>do_package</filename></link>
-                    task to write output from the
-                    <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
-                    task.
+                    task saves package metadata.
                     The <filename>PKGDESTWORK</filename> location defaults to
                     the following:
                     <literallayout class='monospaced'>
      ${WORKDIR}/pkgdata
                     </literallayout>
-                </para>
-
-                <para>
-                    The <filename>do_packagedata</filename> task then packages
-                    the data in the temporary work area and installs it into a
-                    shared directory pointed to by
-                    <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>.
-                </para>
-
-                <para>
                     Do not change this default.
                 </para>
+
+                <para>
+                    The
+                    <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
+                    task copies the package metadata from
+                    <filename>PKGDESTWORK</filename> to
+                    <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
+                    to make it available globally.
+                </para>
             </glossdef>
         </glossentry>
 
         <glossentry id='var-PKGE'><glossterm>PKGE</glossterm>
             <info>
-                PKGE[doc] = "The epoch of the output package built by the OpenEmbedded build system."
+                PKGE[doc] = "The epoch of the package(s) built by the recipe."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    The epoch of the output package built by the
-                    OpenEmbedded build system.
+                    The epoch of the package(s) built by the recipe.
                     By default, <filename>PKGE</filename> is set to
                     <link linkend='var-PE'><filename>PE</filename></link>.
                 </para>
@@ -9401,13 +9809,12 @@
 
         <glossentry id='var-PKGR'><glossterm>PKGR</glossterm>
             <info>
-                PKGR[doc] = "The revision of the output package built by the OpenEmbedded build system."
+                PKGR[doc] = "The revision of the package(s) built by the recipe."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    The revision of the output package built by the
-                    OpenEmbedded build system.
+                    The revision of the package(s) built by the recipe.
                     By default, <filename>PKGR</filename> is set to
                     <link linkend='var-PR'><filename>PR</filename></link>.
                 </para>
@@ -9416,13 +9823,13 @@
 
         <glossentry id='var-PKGV'><glossterm>PKGV</glossterm>
             <info>
-                PKGV[doc] = "The version of the output package built by the OpenEmbedded build system."
+                PKGV[doc] = "The version of the package(s) built by the recipe."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    The version of the output package built by the
-                    OpenEmbedded build system.
+                    The version of the package(s) built by the
+                    recipe.
                     By default, <filename>PKGV</filename> is set to
                     <link linkend='var-PV'><filename>PV</filename></link>.
                  </para>
@@ -9559,8 +9966,50 @@
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    The revision of the recipe.
-                    The default value for this variable is "r0".
+                    The revision of the recipe. The default value for this
+                    variable is "r0".
+                    Subsequent revisions of the recipe conventionally have the
+                    values "r1", "r2", and so forth.
+                    When
+                    <link linkend='var-PV'><filename>PV</filename></link>
+                    increases, <filename>PR</filename> is conventionally reset
+                    to "r0".
+                    <note>
+                        The OpenEmbedded build system does not need the aid of
+                        <filename>PR</filename> to know when to rebuild a
+                        recipe.
+                        The build system uses the task
+                        <ulink url='&YOCTO_DOCS_BB_URL;#checksums'>input checksums</ulink>
+                        along with the
+                        <link linkend='structure-build-tmp-stamps'>stamp</link>
+                        and
+                        <link linkend='shared-state-cache'>shared state cache</link>
+                        mechanisms.
+                    </note>
+                    The <filename>PR</filename> variable primarily becomes
+                    significant when a package manager dynamically installs
+                    packages on an already built image.
+                    In this case, <filename>PR</filename>, which is the default
+                    value of
+                    <link linkend='var-PKGR'><filename>PKGR</filename></link>,
+                    helps the package manager distinguish which package is the
+                    most recent one in cases where many packages have the same
+                    <filename>PV</filename> (i.e. <filename>PKGV</filename>).
+                    A component having many packages with the same
+                    <filename>PV</filename> usually means that the packages all
+                    install the same upstream version, but with later
+                    (<filename>PR</filename>) version packages including
+                    packaging fixes.
+                    <note>
+                        <filename>PR</filename> does not need to be increased
+                        for changes that do not change the package contents or
+                        metadata.
+                    </note>
+                    Because manually managing <filename>PR</filename> can be
+                    cumbersome and error-prone, an automated solution exists.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>Working With a PR Service</ulink>"
+                    section for more information.
                 </para>
             </glossdef>
         </glossentry>
@@ -9619,9 +10068,34 @@
                     numbers that could potentially change.
                     Here are two examples:
                     <literallayout class='monospaced'>
-     PREFERRED_VERSION_python = "2.7.3"
+     PREFERRED_VERSION_python = "3.4.0"
      PREFERRED_VERSION_linux-yocto = "3.19%"
                     </literallayout>
+                    <note>
+                        The specified version is matched against
+                        <link linkend='var-PV'><filename>PV</filename></link>,
+                        which does not necessarily match the version part of
+                        the recipe's filename.
+                        For example, consider two recipes
+                        <filename>foo_1.2.bb</filename> and
+                        <filename>foo_git.bb</filename> where
+                        <filename>foo_git.bb</filename> contains the following
+                        assignment:
+                        <literallayout class='monospaced'>
+     PV = "1.1+git${SRCPV}"
+                        </literallayout>
+                        In this case, the correct way to select
+                        <filename>foo_git.bb</filename> is by using an
+                        assignment such as the following:
+                        <literallayout class='monospaced'>
+     PREFERRED_VERSION_foo = "1.1+git%"
+                        </literallayout>
+                        Compare that previous example against the following
+                        incorrect example, which does not work:
+                        <literallayout class='monospaced'>
+     PREFERRED_VERSION_foo = "git"
+                        </literallayout>
+                    </note>
                     Sometimes the <filename>PREFERRED_VERSION</filename>
                     variable can be set by configuration files in a way that
                     is hard to change.
@@ -9639,6 +10113,13 @@
                     <literallayout class='monospaced'>
      PREFERRED_VERSION_linux-yocto_forcevariable = "3.4%"
                     </literallayout>
+                    <note>
+                        The <filename>_forcevariable</filename> override is
+                        not handled specially.
+                        This override only works because the default value of
+                        <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
+                        includes "forcevariable".
+                    </note>
                 </para>
             </glossdef>
         </glossentry>
@@ -9751,6 +10232,12 @@
                      libplds4.so"
                     </literallayout>
                 </para>
+
+                <para>
+                    For more information, see the
+                    "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
+                    section.
+                </para>
             </glossdef>
         </glossentry>
 
@@ -9784,6 +10271,51 @@
                     The <filename>PROVIDES</filename> statement results in
                     the "libav" recipe also being known as "libpostproc".
                 </para>
+
+                <para>
+                    In addition to providing recipes under alternate names,
+                    the <filename>PROVIDES</filename> mechanism is also used
+                    to implement virtual targets.
+                    A virtual target is a name that corresponds to some
+                    particular functionality (e.g. a Linux kernel).
+                    Recipes that provide the functionality in question list the
+                    virtual target in <filename>PROVIDES</filename>.
+                    Recipes that depend on the functionality in question can
+                    include the virtual target in
+                    <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                    to leave the choice of provider open.
+                </para>
+
+                <para>
+                    Conventionally, virtual targets have names on the form
+                    "virtual/function" (e.g. "virtual/kernel").
+                    The slash is simply part of the name and has no
+                    syntactical significance.
+                </para>
+
+                <para>
+                    The
+                    <link linkend='var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></link>
+                    variable is used to select which particular recipe
+                    provides a virtual target.
+                    <note>
+                        <para>A corresponding mechanism for virtual runtime
+                        dependencies (packages) exists.
+                        However, the mechanism does not depend on any special
+                        functionality beyond ordinary variable assignments.
+                        For example,
+                        <filename>VIRTUAL-RUNTIME_dev_manager</filename>
+                        refers to the package of the component that manages
+                        the <filename>/dev</filename> directory.</para>
+
+                        <para>Setting the "preferred provider" for runtime
+                        dependencies is as simple as using the following
+                        assignment in a configuration file:</para>
+                        <literallayout class='monospaced'>
+     VIRTUAL-RUNTIME_dev_manager = "udev"
+                        </literallayout>
+                    </note>
+                </para>
             </glossdef>
         </glossentry>
 
@@ -9846,12 +10378,19 @@
                     The version of the recipe.
                     The version is normally extracted from the recipe filename.
                     For example, if the recipe is named
-                    <filename>expat_2.0.1.bb</filename>, then the default value of <filename>PV</filename>
-                    will be "2.0.1".
+                    <filename>expat_2.0.1.bb</filename>, then the default value
+                    of <filename>PV</filename> will be "2.0.1".
                     <filename>PV</filename> is generally not overridden within
-                    a recipe unless it is building an unstable (i.e. development) version from a source code repository
+                    a recipe unless it is building an unstable (i.e.
+                    development) version from a source code repository
                     (e.g. Git or Subversion).
                  </para>
+
+                 <para>
+                     <filename>PV</filename> is the default value of the
+                     <link linkend='var-PKGV'><filename>PKGV</filename></link>
+                     variable.
+                 </para>
             </glossdef>
         </glossentry>
 
@@ -9993,40 +10532,59 @@
 
         <glossentry id='var-RDEPENDS'><glossterm>RDEPENDS</glossterm>
             <info>
-                RDEPENDS[doc] = "Lists a package's runtime dependencies (i.e. other packages) that must be installed for the package to be built. They must be the names of other packages as listed in the PACKAGES variable, not recipe names (PN)."
+                RDEPENDS[doc] = "Lists runtime dependencies of a package."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Lists a package's runtime dependencies (i.e. other packages)
-                    that must be installed in order for the built package to run
-                    correctly.
-                    If a package in this list cannot be found during the build,
-                    you will get a build error.
+                    Lists runtime dependencies of a package.
+                    These dependencies are other packages that must be
+                    installed in order for the package to function correctly.
+                    As an example, the following assignment declares that the
+                    package <filename>foo</filename> needs the packages
+                    <filename>bar</filename> and <filename>baz</filename> to
+                    be installed:
+                    <literallayout class='monospaced'>
+     RDEPENDS_foo = "bar baz"
+                    </literallayout>
+                    The most common types of package runtime dependencies are
+                    automatically detected and added.
+                    Therefore, most recipes do not need to set
+                    <filename>RDEPENDS</filename>.
+                    For more information, see the
+                    "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
+                    section.
                 </para>
 
                 <para>
-                    When you use the <filename>RDEPENDS</filename> variable
-                    in a recipe, you are essentially stating that the recipe's
+                    The practical effect of the above
+                    <filename>RDEPENDS</filename> assignment is that
+                    <filename>bar</filename> and <filename>baz</filename>
+                    will be declared as dependencies inside the package
+                    <filename>foo</filename> when it is written out by one of
+                    the
+                    <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_*</filename></link>
+                    tasks.
+                    Exactly how this is done depends on which package format
+                    is used, which is determined by
+                    <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>.
+                    When the corresponding package manager installs the
+                    package, it will know to also install the packages on
+                    which it depends.
+                </para>
+
+                <para>
+                    To ensure that the packages <filename>bar</filename> and
+                    <filename>baz</filename> get built, the previous
+                    <filename>RDEPENDS</filename> assignment also causes a task
+                    dependency to be added.
+                    This dependency is from the recipe's
                     <link linkend='ref-tasks-build'><filename>do_build</filename></link>
-                    task depends on the existence of a specific package.
-                    Consider this simple example for two recipes named "a" and
-                    "b" that produce similarly named IPK packages.
-                    In this example, the <filename>RDEPENDS</filename>
-                    statement appears in the "a" recipe:
-                    <literallayout class='monospaced'>
-     RDEPENDS_${PN} = "b"
-                    </literallayout>
-                    Here, the dependency is such that the
-                    <filename>do_build</filename> task for recipe "a" depends
-                    on the
-                    <link linkend='ref-tasks-package_write_ipk'><filename>do_package_write_ipk</filename></link>
-                    task of recipe "b".
-                    This means the package file for "b" must be available when
-                    the output for recipe "a" has been completely built.
-                    More importantly, package "a" will be marked as depending
-                    on package "b" in a manner that is understood by the
-                    package manager.
+                    (not to be confused with
+                    <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>)
+                    task to the <filename>do_package_write_*</filename>
+                    task of the recipes that build <filename>bar</filename> and
+                    <filename>baz</filename>.
                 </para>
 
                 <para>
@@ -10046,7 +10604,8 @@
                 <para>
                     Because the <filename>RDEPENDS</filename> variable applies
                     to packages being built, you should always use the variable
-                    in a form with an attached package name.
+                    in a form with an attached package name (remember that a
+                    single recipe can build multiple packages).
                     For example, suppose you are building a development package
                     that depends on the <filename>perl</filename> package.
                     In this case, you would use the following
@@ -10059,38 +10618,33 @@
                     Thus, the <filename>RDEPENDS</filename> variable has the
                     <filename>${PN}-dev</filename> package name as part of the
                     variable.
+                    <note>
+                        <title>Caution</title>
+                        <filename>RDEPENDS_${PN}-dev</filename> includes
+                        <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>
+                        by default.
+                        This default is set in the BitBake configuration file
+                        (<filename>meta/conf/bitbake.conf</filename>).
+                        Be careful not to accidentally remove
+                        <filename>${PN}</filename> when modifying
+                        <filename>RDEPENDS_${PN}-dev</filename>.
+                        Use the "+=" operator rather than the "=" operator.
+                    </note>
                 </para>
 
                 <para>
-                    The package name you attach to the
-                    <filename>RDEPENDS</filename> variable must appear
-                    as it would in the <filename>PACKAGES</filename>
-                    namespace before any renaming of the output package by
-                    classes like
-                    <link linkend='ref-classes-debian'><filename>debian</filename></link>.
-                </para>
-
-                <para>
-                    In many cases you do not need to explicitly add
-                    runtime dependencies using
-                    <filename>RDEPENDS</filename> since some automatic
-                    handling occurs:
-                    <itemizedlist>
-                        <listitem><para><emphasis><filename>shlibdeps</filename></emphasis>:  If
-                            a runtime package contains a shared library
-                            (<filename>.so</filename>), the build
-                            processes the library in order to determine other
-                            libraries to which it is dynamically linked.
-                            The build process adds these libraries to
-                            <filename>RDEPENDS</filename> when creating the runtime
-                            package.</para></listitem>
-                        <listitem><para><emphasis><filename>pcdeps</filename></emphasis>:  If
-                            the package ships a <filename>pkg-config</filename>
-                            information file, the build process uses this file
-                            to add items to the <filename>RDEPENDS</filename>
-                            variable to create the runtime packages.
-                            </para></listitem>
-                    </itemizedlist>
+                    The package names you use with
+                    <filename>RDEPENDS</filename> must appear as they would in
+                    the <filename>PACKAGES</filename> variable.
+                    The
+                    <link linkend='var-PKG'><filename>PKG</filename></link>
+                    variable allows a different name to be used for
+                    the final package (e.g. the
+                    <link linkend='ref-classes-debian'><filename>debian</filename></link>
+                    class uses this to rename packages), but this final package
+                    name cannot be used with <filename>RDEPENDS</filename>,
+                    which makes sense as <filename>RDEPENDS</filename> is meant
+                    to be independent of the package format used.
                 </para>
 
                 <para>
@@ -10123,6 +10677,11 @@
                     For information on build-time dependencies, see the
                     <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
                     variable.
+                    You can also see the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
+                    sections in the BitBake User Manual for additional
+                    information on tasks and dependencies.
                 </para>
             </glossdef>
         </glossentry>
@@ -10150,28 +10709,6 @@
             </glossdef>
         </glossentry>
 
-        <glossentry id='var-RM_OLD_IMAGE'><glossterm>RM_OLD_IMAGE</glossterm>
-            <info>
-                RM_OLD_IMAGE[doc] = "Reclaims disk space by removing previously built versions of the same image from the images directory pointed to by the DEPLOY_DIR variable."
-            </info>
-            <glossdef>
-                <para role="glossdeffirst">
-<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Reclaims disk space by removing previously built
-                    versions of the same image from the
-                    <filename>images</filename> directory pointed to by the
-                    <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>
-                    variable.
-                </para>
-
-                <para>
-                    Set this variable to "1" in your
-                    <filename>local.conf</filename> file to remove these
-                    images.
-                </para>
-            </glossdef>
-        </glossentry>
-
         <glossentry id='var-RM_WORK_EXCLUDE'><glossterm>RM_WORK_EXCLUDE</glossterm>
             <info>
                 RM_WORK_EXCLUDE[doc] = "With rm_work enabled, this variable specifies a list of packages whose work directories should not be removed."
@@ -10802,6 +11339,33 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-SDK_INCLUDE_TOOLCHAIN'><glossterm>SDK_INCLUDE_TOOLCHAIN</glossterm>
+            <info>
+                SDK_INCLUDE_TOOLCHAIN[doc] = "When set to "1", specifies to include the toolchain in the extensible SDK."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    When set to "1", specifies to include the toolchain in the
+                    extensible SDK.
+                    Including the toolchain is useful particularly when
+                    <link linkend='var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></link>
+                    is set to "minimal" to keep the SDK reasonably small
+                    but you still want to provide a usable toolchain.
+                    For example, suppose you want to use the toolchain from an
+                    IDE (e.g. Eclipse) or from other tools and you do not
+                    want to perform additional steps to install the toolchain.
+                </para>
+
+                <para>
+                    The <filename>SDK_INCLUDE_TOOLCHAIN</filename> variable
+                    defaults to "0" if <filename>SDK_EXT_TYPE</filename>
+                    is set to "minimal", and defaults to "1" if
+                    <filename>SDK_EXT_TYPE</filename> is set to "full".
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-SDK_INHERIT_BLACKLIST'><glossterm>SDK_INHERIT_BLACKLIST</glossterm>
             <info>
                 SDK_INHERIT_BLACKLIST[doc] = "A list of classes to remove from the INHERIT value globally within the extensible SDK configuration."
@@ -11336,15 +11900,24 @@
 
         <glossentry id='var-SERIAL_CONSOLES_CHECK'><glossterm>SERIAL_CONSOLES_CHECK</glossterm>
             <info>
-                SERIAL_CONSOLES_CHECK[doc] = "Similar to SERIAL_CONSOLES except the device is checked for existence before attempting to enable it. Supported only by SysVinit."
+                SERIAL_CONSOLES_CHECK[doc] = "Selected SERIAL_CONSOLES to check against /proc/console before enabling using getty. Supported only by SysVinit."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Similar to
-                    <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>
-                    except the device is checked for existence before attempting
-                    to enable it.
+                    Specifies serial consoles, which must be listed in
+                    <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>,
+                    to check against <filename>/proc/console</filename>
+                    before enabling them using getty.
+                    This variable allows aliasing in the format:
+                    &lt;device&gt;:&lt;alias&gt;.
+                    If a device was listed as "sclp_line0"
+                    in <filename>/dev/</filename> and "ttyS0" was listed
+                    in <filename>/proc/console</filename>, you would do the
+                    following:
+                    <literallayout class='monospaced'>
+     SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0"
+                    </literallayout>
                     This variable is currently only supported with SysVinit
                     (i.e. not with systemd).
                 </para>
@@ -11982,7 +12555,7 @@
                     directory structure.
                     <literallayout class='monospaced'>
      SSTATE_MIRRORS ?= "\
-     file://.* http://<replaceable>someserver</replaceable>.tld/share/sstate/PATH \n \
+     file://.* http://<replaceable>someserver</replaceable>.tld/share/sstate/PATH;downloadfilename=PATH \n \
      file://.* file:///<replaceable>some-local-dir</replaceable>/sstate/PATH"
                     </literallayout>
                 </para>
@@ -12129,28 +12702,71 @@
 
         <glossentry id='var-STAGING_DIR_HOST'><glossterm>STAGING_DIR_HOST</glossterm>
             <info>
-                STAGING_DIR_HOST[doc] = "Specifies the path to the primary sysroot directory for which the target is being built."
+                STAGING_DIR_HOST[doc] = "Specifies the path to the sysroot directory for the system that the component is built to run on."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Specifies the path to the primary sysroot directory for
-                    which the target is being built.
-                    Depending on the type of recipe and the build target, the
-                    recipe's value is as follows:
+                    Specifies the path to the sysroot directory for the system
+                    that the component is built to run on (the system that hosts
+                    the component).
+                    For most recipes, this sysroot is the one that the recipe's
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task copies files into.
+                    Exceptions include <filename>-native</filename> recipes,
+                    where the <filename>do_populate_sysroot</filename> task
+                    instead uses
+                    <link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>.
+                    Depending on the type of recipe and the build target,
+                    <filename>STAGING_DIR_HOST</filename> can have the
+                    following values:
                     <itemizedlist>
                         <listitem><para>For recipes building for the target
-                           machine, the value is "${STAGING_DIR}/${MACHINE}".
-                           </para></listitem>
+                            machine, the value is
+                            "${<link linkend='var-STAGING_DIR'>STAGING_DIR</link>}/${<link linkend='var-MACHINE'>MACHINE</link>}".
+                            </para></listitem>
                         <listitem><para>For native recipes building
-                           for the build host, the value is empty given the
-                           assumption that when building for the build host,
-                           the build host's own directories should be used.
+                            for the build host, the value is empty given the
+                            assumption that when building for the build host,
+                            the build host's own directories should be used.
+                            <note><para>
+                                <filename>-native</filename> recipes are not
+                                installed into host paths like such as
+                                <filename>/usr</filename>.
+                                Rather, these recipes are installed into
+                                <filename>STAGING_DIR_NATIVE</filename>.
+                                When compiling <filename>-native</filename>
+                                recipes, standard build environment variables
+                                such as
+                                <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
+                                and
+                                <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
+                                are set up so that both host paths and
+                                <filename>STAGING_DIR_NATIVE</filename> are
+                                searched for libraries and headers using, for
+                                example, GCC's <filename>-isystem</filename>
+                                option.</para>
+
+                                <para>This emphasizes that the
+                                <filename>STAGING_DIR*</filename> variables
+                                should be viewed as input variables by tasks
+                                such as
+                                <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>,
+                                <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
+                                and
+                                <link linkend='ref-tasks-install'><filename>do_install</filename></link>.
+                                Having the real system root correspond to
+                                <filename>STAGING_DIR_HOST</filename> makes
+                                conceptual sense for
+                                <filename>-native</filename> recipes, as
+                                they make use of host headers and libraries.
+                                </para>
+                                </note>
                            </para></listitem>
                         <listitem><para>For native SDK
                            recipes that build for the SDK
                            (<filename>nativesdk</filename>), the value is
-                           "${STAGING_DIR}/${MULTIMACH_HOST_SYS}".
+                           "${STAGING_DIR}/${<link linkend='var-MULTIMACH_HOST_SYS'>MULTIMACH_HOST_SYS</link>}".
                            </para></listitem>
                     </itemizedlist>
                 </para>
@@ -12159,27 +12775,29 @@
 
         <glossentry id='var-STAGING_DIR_NATIVE'><glossterm>STAGING_DIR_NATIVE</glossterm>
             <info>
-                STAGING_DIR_NATIVE[doc] = "Specifies the path to the sysroot directory for the build host."
+                STAGING_DIR_NATIVE[doc] = "Specifies the path to the sysroot directory used when building components that run on the build host itself."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Specifies the path to the sysroot directory for the
-                    build host.
+                    Specifies the path to the sysroot directory used when
+                    building components that run on the build host itself.
                 </para>
             </glossdef>
         </glossentry>
 
         <glossentry id='var-STAGING_DIR_TARGET'><glossterm>STAGING_DIR_TARGET</glossterm>
             <info>
-                STAGING_DIR_TARGET[doc] = "Specifies the path to the sysroot directory for the target for which the current recipe is being built."
+                STAGING_DIR_TARGET[doc] = "Specifies the path to the sysroot used for the system for which the component generates code."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Specifies the path to the sysroot directory for the
-                    target for which the current recipe is being built.
-                    In most cases, this path is the
+                    Specifies the path to the sysroot used for the system for
+                    which the component generates code.
+                    For components that do not generate code, which is the
+                    majority, <filename>STAGING_DIR_TARGET</filename> is set
+                    to match
                     <link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>.
                 </para>
 
@@ -12190,10 +12808,12 @@
                     Using terminology from GNU, the primary system is referred
                     to as the "HOST" and the secondary, or different, system is
                     referred to as the "TARGET".
-                    Thus, the binaries run on the "HOST" system and
+                    Thus, the binaries run on the "HOST" system
                     and generate binaries for the "TARGET" system.
-                    <filename>STAGING_DIR_TARGET</filename> points to the
-                    sysroot used for the "TARGET" system.
+                    The <filename>STAGING_DIR_HOST</filename> variable points
+                    to the sysroot used for the "HOST" system, while
+                    <filename>STAGING_DIR_TARGET</filename>
+                    points to the sysroot used for the "TARGET" system.
                 </para>
             </glossdef>
         </glossentry>
@@ -12335,6 +12955,13 @@
                 </para>
 
                 <para>
+                    For information on how BitBake uses stamp files to determine
+                    if a task should be rerun, see the
+                    "<link linkend='stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</link>"
+                    section.
+                </para>
+
+                <para>
                     See <link linkend='var-STAMPS_DIR'><filename>STAMPS_DIR</filename></link>,
                     <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
                     <link linkend='var-PN'><filename>PN</filename></link>,
@@ -12519,6 +13146,95 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-SYSROOT_DIRS'><glossterm>SYSROOT_DIRS</glossterm>
+            <info>
+                SYSROOT_DIRS[doc] = "Directories that are staged into the sysroot by the do_populate_sysroot task."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    Directories that are staged into the sysroot by the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task.
+                    By default, the following directories are staged:
+                    <literallayout class='monospaced'>
+     SYSROOT_DIRS = " \
+         ${includedir} \
+         ${libdir} \
+         ${base_libdir} \
+         ${nonarch_base_libdir} \
+         ${datadir} \
+     "
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSROOT_DIRS_BLACKLIST'><glossterm>SYSROOT_DIRS_BLACKLIST</glossterm>
+            <info>
+                SYSROOT_DIRS_BLACKLIST[doc] = "Directories that are not staged into the sysroot by the do_populate_sysroot task."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    Directories that are not staged into the sysroot by the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task.
+                    You can use this variable to exclude certain subdirectories
+                    of directories listed in
+                    <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
+                    from staging.
+                    By default, the following directories are not staged:
+                    <literallayout class='monospaced'>
+     SYSROOT_DIRS_BLACKLIST = " \
+         ${mandir} \
+         ${docdir} \
+         ${infodir} \
+         ${datadir}/locale \
+         ${datadir}/applications \
+         ${datadir}/fonts \
+         ${datadir}/pixmaps \
+     "
+                     </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSROOT_DIRS_NATIVE'><glossterm>SYSROOT_DIRS_NATIVE</glossterm>
+            <info>
+                SYSROOT_DIRS_NATIVE[doc] = "Extra directories staged into the sysroot by the do_populate_sysroot task for -native recipes, in addition to those specified in SYSROOT_DIRS."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    Extra directories staged into the sysroot by the
+                    <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                    task for <filename>-native</filename> recipes, in addition
+                    to those specified in
+                    <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>.
+                    By default, the following extra directories are staged:
+                    <literallayout class='monospaced'>
+     SYSROOT_DIRS_NATIVE = " \
+         ${bindir} \
+         ${sbindir} \
+         ${base_bindir} \
+         ${base_sbindir} \
+         ${libexecdir} \
+         ${sysconfdir} \
+         ${localstatedir} \
+     "
+                    </literallayout>
+                    <note>
+                        Programs built by <filename>-native</filename> recipes
+                        run directly from the sysroot
+                        (<link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>),
+                        which is why additional directories containing program
+                        executables and supporting files need to be staged.
+                    </note>
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-SYSROOT_PREPROCESS_FUNCS'><glossterm>SYSROOT_PREPROCESS_FUNCS</glossterm>
             <info>
                 SYSROOT_PREPROCESS_FUNCS[doc] = "A list of functions to execute after files are staged into the sysroot. These functions are usually used to apply additional processing on the staged files, or to stage additional files."
@@ -12565,6 +13281,92 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-SYSTEMD_BOOT_CFG'><glossterm>SYSTEMD_BOOT_CFG</glossterm>
+            <info>
+                SYSTEMD_BOOT_CFG[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_CFG variable specifies the configuration file that should be used."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    When
+                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
+                    is set to "systemd-boot", the
+                    <filename>SYSTEMD_BOOT_CFG</filename> variable specifies the
+                    configuration file that should be used.
+                    By default, the
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
+                    class sets the <filename>SYSTEMD_BOOT_CFG</filename> as
+                    follows:
+                    <literallayout class='monospaced'>
+     SYSTEMD_BOOT_CFG ?= "${<link linkend='var-S'>S</link>}/loader.conf"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on Systemd-boot, see the
+                    <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_BOOT_ENTRIES'><glossterm>SYSTEMD_BOOT_ENTRIES</glossterm>
+            <info>
+                SYSTEMD_BOOT_ENTRIES[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_ENTRIES variable specifies a list of entry files (*.conf) to be installed containing one boot entry per file."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    When
+                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
+                    is set to "systemd-boot", the
+                    <filename>SYSTEMD_BOOT_ENTRIES</filename> variable specifies
+                    a list of entry files
+                    (<filename>*.conf</filename>) to be installed
+                    containing one boot entry per file.
+                    By default, the
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
+                    class sets the <filename>SYSTEMD_BOOT_ENTRIES</filename> as
+                    follows:
+                    <literallayout class='monospaced'>
+     SYSTEMD_BOOT_ENTRIES ?= ""
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on Systemd-boot, see the
+                    <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-SYSTEMD_BOOT_TIMEOUT'><glossterm>SYSTEMD_BOOT_TIMEOUT</glossterm>
+            <info>
+                SYSTEMD_BOOT_TIMEOUT[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_TIMEOUT variable specifies the boot menu timeout in seconds."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    When
+                    <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
+                    is set to "systemd-boot", the
+                    <filename>SYSTEMD_BOOT_TIMEOUT</filename> variable specifies
+                    the boot menu timeout in seconds.
+                    By default, the
+                    <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
+                    class sets the <filename>SYSTEMD_BOOT_TIMEOUT</filename> as
+                    follows:
+                    <literallayout class='monospaced'>
+     SYSTEMD_BOOT_TIMEOUT ?= "10"
+                    </literallayout>
+                </para>
+
+                <para>
+                    For information on Systemd-boot, see the
+                    <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-SYSTEMD_PACKAGES'><glossterm>SYSTEMD_PACKAGES</glossterm>
             <info>
                 SYSTEMD_PACKAGES[doc] = "For recipes that inherit the systemd class, this variable locates the systemd unit files when they are not found in the main recipe's package."
@@ -14255,7 +15057,9 @@
                     task.
                     Normally, invalid configure options are simply not passed
                     to the configure script (e.g. should be removed from
-                    <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>).
+                    <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
+                    or
+                    <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>).
                     However, common options, for example, exist that are passed
                     to all configure scripts at a class level that might not
                     be valid for some configure scripts.
@@ -14300,6 +15104,84 @@
             </glossdef>
         </glossentry>
 
+        <glossentry id='var-UPSTREAM_CHECK_GITTAGREGEX'><glossterm>UPSTREAM_CHECK_GITTAGREGEX</glossterm>
+            <info>
+               UPSTREAM_CHECK_GITTAGREGEX[doc] = "Filters relevant Git tags when fetching source from an upstream Git repository."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    When the
+                    <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
+                    class is enabled globally, you can perform a per-recipe
+                    check for what the latest upstream source code version is
+                    by calling
+                    <filename>bitbake -c checkpkg</filename> <replaceable>recipe</replaceable>.
+                    If the recipe source code is provided from Git
+                    repositories, the OpenEmbedded build system determines the
+                    latest upstream version by picking the latest tag from the
+                    list of all repository tags.
+                    You can use the
+                    <filename>UPSTREAM_CHECK_GITTAGREGEX</filename>
+                    variable to provide a regular expression to filter only the
+                    relevant tags should the default filter not work
+                    correctly.
+                    <literallayout class='monospaced'>
+     UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UPSTREAM_CHECK_REGEX'><glossterm>UPSTREAM_CHECK_REGEX</glossterm>
+            <info>
+               UPSTREAM_CHECK_REGEX[doc] = "The regular expression the package checking system uses to parse the page pointed to by UPSTREAM_CHECK_URI."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    When the
+                    <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
+                    class is enabled globally, use the
+                    <filename>UPSTREAM_CHECK_REGEX</filename> variable to
+                    specify a different regular expression instead of the
+                    default one when the package checking system is parsing
+                    the page found using
+                    <link linkend='var-UPSTREAM_CHECK_URI'><filename>UPSTREAM_CHECK_URI</filename></link>.
+                    <literallayout class='monospaced'>
+     UPSTREAM_CHECK_REGEX = "package_regex"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
+        <glossentry id='var-UPSTREAM_CHECK_URI'><glossterm>UPSTREAM_CHECK_URI</glossterm>
+            <info>
+               UPSTREAM_CHECK_URI[doc] = "The URL used by the package checking system to get the latest version of the package when source files are fetched from an upstream Git repository."
+            </info>
+            <glossdef>
+                <para role="glossdeffirst">
+<!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+                    When the
+                    <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
+                    class is enabled globally, you can perform a per-recipe
+                    check for what the latest upstream source code version is
+                    by calling <filename>bitbake -c checkpkg</filename>
+                    <replaceable>recipe</replaceable>.
+                    If the source code is provided from tarballs, the latest
+                    version is determined by fetching the directory listing
+                    where the tarball is and attempting to find a later tarball.
+                    When this approach does not work, you can use
+                    <filename>UPSTREAM_CHECK_URI</filename> to
+                    provide a different URI that contains the link to the
+                    latest tarball.
+                    <literallayout class='monospaced'>
+     UPSTREAM_CHECK_URI = "recipe_url"
+                    </literallayout>
+                </para>
+            </glossdef>
+        </glossentry>
+
         <glossentry id='var-USE_DEVFS'><glossterm>USE_DEVFS</glossterm>
             <info>
                USE_DEVFS[doc] = "Determines if devtmpfs is used for /dev population."
@@ -14381,16 +15263,18 @@
 
         <glossentry id='var-USERADD_ERROR_DYNAMIC'><glossterm>USERADD_ERROR_DYNAMIC</glossterm>
             <info>
-               USERADD_ERROR_DYNAMIC[doc] = "Forces the OpenEmbedded build system to produce an error if the user identification (uid) and group identification (gid) values are not defined in files/passwd and files/group files."
+               USERADD_ERROR_DYNAMIC[doc] = "If set to 'error', forces the OpenEmbedded build system to produce an error if the user identification (uid) and group identification (gid) values are not defined in files/passwd and files/group files. If set to 'warn', a warning will be issued instead."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
 <!--                <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
-                    Forces the OpenEmbedded build system to produce an error
-                    if the user identification (<filename>uid</filename>) and
-                    group identification (<filename>gid</filename>) values
-                    are not defined in <filename>files/passwd</filename>
+                    If set to "error", forces the OpenEmbedded build system to
+                    produce an error if the user identification
+                    (<filename>uid</filename>) and group identification
+                    (<filename>gid</filename>) values are not defined
+                    in <filename>files/passwd</filename>
                     and <filename>files/group</filename> files.
+                    If set to "warn", a warning will be issued instead.
                 </para>
 
                 <para>
@@ -14406,7 +15290,7 @@
                     your <filename>local.conf</filename> file as
                     follows:
                     <literallayout class='monospaced'>
-     USERADD_ERROR_DYNAMIC = "1"
+     USERADD_ERROR_DYNAMIC = "error"
                     </literallayout>
                     Overriding the default behavior implies you are going to
                     also take steps to set static <filename>uid</filename> and
@@ -14562,7 +15446,7 @@
 
         <glossentry id='var-USERADDEXTENSION'><glossterm>USERADDEXTENSION</glossterm>
             <info>
-               USERADDEXTENSION[doc] = "When set to "useradd-staticids", causes the OpenEmbedded build system to base all user and group additions on a static passwd and group files found in BBPATH."
+               USERADDEXTENSION[doc] = "When set to 'useradd-staticids', causes the OpenEmbedded build system to base all user and group additions on a static passwd and group files found in BBPATH."
             </info>
             <glossdef>
                 <para role="glossdeffirst">
diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-varlocality.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-varlocality.xml
index d3f8732..54524d5 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/ref-varlocality.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/ref-varlocality.xml
@@ -176,16 +176,18 @@
             <para>
                 This section lists variables that define extra build information for recipes.
                 <itemizedlist>
+                    <listitem><para><filename><link linkend='var-DEFAULT_PREFERENCE'>DEFAULT_PREFERENCE
+                        </link></filename></para></listitem>
                     <listitem><para><filename><link linkend='var-EXTRA_OECMAKE'>EXTRA_OECMAKE</link>
                         </filename></para></listitem>
                     <listitem><para><filename><link linkend='var-EXTRA_OECONF'>EXTRA_OECONF</link>
                         </filename></para></listitem>
                     <listitem><para><filename><link linkend='var-EXTRA_OEMAKE'>EXTRA_OEMAKE</link>
                         </filename></para></listitem>
+                    <listitem><para><filename><link linkend='var-PACKAGECONFIG_CONFARGS'>PACKAGECONFIG_CONFARGS</link>
+                        </filename></para></listitem>
                     <listitem><para><filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
                         </para></listitem>
-                    <listitem><para><filename><link linkend='var-DEFAULT_PREFERENCE'>DEFAULT_PREFERENCE
-                        </link></filename></para></listitem>
                 </itemizedlist>
             </para>
         </section>
diff --git a/import-layers/yocto-poky/documentation/ref-manual/technical-details.xml b/import-layers/yocto-poky/documentation/ref-manual/technical-details.xml
index f06382a..9bb09fb 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/technical-details.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/technical-details.xml
@@ -690,6 +690,125 @@
      addtask do_deploy_setscene
      do_deploy[dirs] = "${DEPLOYDIR} ${B}"
             </literallayout>
+            The following list explains the previous example:
+            <itemizedlist>
+                <listitem><para>
+                    Adding "do_deploy" to <filename>SSTATETASKS</filename>
+                    adds some required sstate-related processing, which is
+                    implemented in the
+                    <link linkend='ref-classes-sstate'><filename>sstate</filename></link>
+                    class, to before and after the
+                    <link linkend='ref-tasks-deploy'><filename>do_deploy</filename></link>
+                    task.
+                    </para></listitem>
+                <listitem><para>
+                    The
+                    <filename>do_deploy[sstate-inputdirs] = "${DEPLOYDIR}"</filename>
+                    declares that <filename>do_deploy</filename> places its
+                    output in <filename>${DEPLOYDIR}</filename> when run
+                    normally (i.e. when not using the sstate cache).
+                    This output becomes the input to the shared state cache.
+                    </para></listitem>
+                <listitem><para>
+                    The
+                    <filename>do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"</filename>
+                    line causes the contents of the shared state cache to be
+                    copied to <filename>${DEPLOY_DIR_IMAGE}</filename>.
+                    <note>
+                        If <filename>do_deploy</filename> is not already in
+                        the shared state cache or if its input checksum
+                        (signature) has changed from when the output was
+                        cached, the task will be run to populate the shared
+                        state cache, after which the contents of the shared
+                        state cache is copied to
+                        <filename>${DEPLOY_DIR_IMAGE}</filename>.
+                        If <filename>do_deploy</filename> is in the shared
+                        state cache and its signature indicates that the
+                        cached output is still valid (i.e. if no
+                        relevant task inputs have changed), then the contents
+                        of the shared state cache will be copied directly to
+                        <filename>${DEPLOY_DIR_IMAGE}</filename> by the
+                        <filename>do_deploy_setscene</filename> task instead,
+                        skipping the <filename>do_deploy</filename> task.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    The following task definition is glue logic needed to make
+                    the previous settings effective:
+                    <literallayout class='monospaced'>
+     python do_deploy_setscene () {
+         sstate_setscene(d)
+     }
+     addtask do_deploy_setscene
+                    </literallayout>
+                    <filename>sstate_setscene()</filename> takes the flags
+                    above as input and accelerates the
+                    <filename>do_deploy</filename> task through the
+                    shared state cache if possible.
+                    If the task was accelerated,
+                    <filename>sstate_setscene()</filename> returns True.
+                    Otherwise, it returns False, and the normal
+                    <filename>do_deploy</filename> task runs.
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#setscene'>setscene</ulink>"
+                    section in the BitBake User Manual.
+                    </para></listitem>
+                <listitem><para>
+                    The <filename>do_deploy[dirs] = "${DEPLOYDIR} ${B}"</filename>
+                    line creates <filename>${DEPLOYDIR}</filename> and
+                    <filename>${B}</filename> before the
+                    <filename>do_deploy</filename> task runs, and also sets
+                    the current working directory of
+                    <filename>do_deploy</filename> to
+                    <filename>${B}</filename>.
+                    For more information, see the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'>Variable Flags</ulink>"
+                    section in the BitBake User Manual.
+                    <note>
+                        In cases where
+                        <filename>sstate-inputdirs</filename> and
+                        <filename>sstate-outputdirs</filename> would be the
+                        same, you can use
+                        <filename>sstate-plaindirs</filename>.
+                        For example, to preserve the
+                        <filename>${PKGD}</filename> and
+                        <filename>${PKGDEST}</filename> output from the
+                        <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                        task, use the following:
+                        <literallayout class='monospaced'>
+     do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}"
+                        </literallayout>
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                     <filename>sstate-inputdirs</filename> and
+                     <filename>sstate-outputdirs</filename> can also be used
+                     with multiple directories.
+                     For example, the following declares
+                     <filename>PKGDESTWORK</filename> and
+                     <filename>SHLIBWORK</filename> as shared state
+                     input directories, which populates the shared state
+                     cache, and <filename>PKGDATA_DIR</filename> and
+                     <filename>SHLIBSDIR</filename> as the corresponding
+                     shared state output directories:
+                     <literallayout class='monospaced'>
+     do_package[sstate-inputdirs] = "${PKGDESTWORK} ${SHLIBSWORKDIR}"
+     do_package[sstate-outputdirs] = "${PKGDATA_DIR} ${SHLIBSDIR}"
+                     </literallayout>
+                     </para></listitem>
+                 <listitem><para>
+                     These methods also include the ability to take a lockfile
+                     when manipulating shared state directory structures,
+                     for cases where file additions or removals are sensitive:
+                     <literallayout class='monospaced'>
+     do_package[sstate-lockfile] = "${PACKAGELOCK}"
+                     </literallayout>
+                     </para></listitem>
+            </itemizedlist>
+        </para>
+
+<!--
+        <para>
             In this example, we add some extra flags to the task, a name field ("deploy"), an
             input directory where the task sends data, and the output
             directory where the data from the task should eventually be copied.
@@ -713,6 +832,7 @@
             shared state directory structures since some cases are sensitive to file
             additions or removals.
         </para>
+-->
 
         <para>
             Behind the scenes, the shared state code works by looking in
@@ -722,7 +842,7 @@
             Here is an example:
             <literallayout class='monospaced'>
      SSTATE_MIRRORS ?= "\
-     file://.* http://someserver.tld/share/sstate/PATH \n \
+     file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
      file://.* file:///some/local/dir/sstate/PATH"
             </literallayout>
             <note>
@@ -781,56 +901,15 @@
             <title>Debugging</title>
 
             <para>
-                When things go wrong, debugging needs to be straightforward.
-                Because of this, the Yocto Project includes strong debugging
-                tools:
-                <itemizedlist>
-                    <listitem><para>Whenever a shared state package is written
-                        out into the
-                        <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>,
-                        a corresponding <filename>.siginfo</filename> file is
-                        also written.
-                        This file contains a pickled Python database of all
-                        the Metadata that went into creating the hash for a
-                        given shared state package.
-                        Whenever a stamp is written into the stamp directory
-                        <link linkend='var-STAMP'><filename>STAMP</filename></link>,
-                        a corresponding <filename>.sigdata</filename> file
-                        is created that contains the same hash data that
-                        represented the executed task.
-                        </para></listitem>
-                    <listitem><para>You can use BitBake to dump out the
-                        signature construction information without executing
-                        tasks by using either of the following BitBake
-                        command-line options:
-                        <literallayout class='monospaced'>
-     &dash;&dash;dump-signatures=<replaceable>SIGNATURE_HANDLER</replaceable>
-     -S <replaceable>SIGNATURE_HANDLER</replaceable>
-                        </literallayout>
-                        <note>
-                            Two common values for
-                            <replaceable>SIGNATURE_HANDLER</replaceable> are
-                            "none" and "printdiff" to only dump the signature
-                            or to compare the dumped signature with the
-                            cached one, respectively.
-                        </note>
-                        Using BitBake with either of these options causes
-                        BitBake to dump out <filename>.sigdata</filename> files
-                        in the stamp directory for every task it would have
-                        executed instead of building the specified target
-                        package.
-                        </para></listitem>
-                    <listitem><para>There is a
-                        <filename>bitbake-diffsigs</filename> command that
-                        can process <filename>.sigdata</filename> and
-                        <filename>.siginfo</filename> files.
-                        If you specify one of these files, BitBake dumps out
-                        the dependency information in the file.
-                        If you specify two files, BitBake compares the two
-                        files and dumps out the differences between the two.
-                        This more easily helps answer the question of "What
-                        changed between X and Y?"</para></listitem>
-                </itemizedlist>
+                Seeing what metadata went into creating the input signature
+                of a shared state (sstate) task can be a useful debugging aid.
+                This information is available in signature information
+                (<filename>siginfo</filename>) files in
+                <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>.
+                For information on how to view and interpret information in
+                <filename>siginfo</filename> files, see the
+                "<link linkend='usingpoky-viewing-task-variable-dependencies'>Viewing Task Variable Dependencies</link>"
+                section.
             </para>
         </section>
 
@@ -900,6 +979,222 @@
     </section>
 </section>
 
+<section id='automatically-added-runtime-dependencies'>
+    <title>Automatically Added Runtime Dependencies</title>
+
+    <para>
+        The OpenEmbedded build system automatically adds common types of
+        runtime dependencies between packages, which means that you do not
+        need to explicitly declare the packages using
+        <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>.
+        Three automatic mechanisms exist (<filename>shlibdeps</filename>,
+        <filename>pcdeps</filename>, and <filename>depchains</filename>) that
+        handle shared libraries, package configuration (pkg-config) modules,
+        and <filename>-dev</filename> and <filename>-dbg</filename> packages,
+        respectively.
+        For other types of runtime dependencies, you must manually declare
+        the dependencies.
+        <itemizedlist>
+            <listitem><para>
+                <filename>shlibdeps</filename>:
+                During the
+                <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                task of each recipe, all shared libraries installed by the
+                recipe are located.
+                For each shared library, the package that contains the shared
+                library is registered as providing the shared library.
+                More specifically, the package is registered as providing the
+                <ulink url='https://en.wikipedia.org/wiki/Soname'>soname</ulink>
+                of the library.
+                The resulting shared-library-to-package mapping
+                is saved globally in
+                <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
+                by the
+                <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
+                task.</para>
+
+                <para>Simultaneously, all executables and shared libraries
+                installed by the recipe are inspected to see what shared
+                libraries they link against.
+                For each shared library dependency that is found,
+                <filename>PKGDATA_DIR</filename> is queried to
+                see if some package (likely from a different recipe) contains
+                the shared library.
+                If such a package is found, a runtime dependency is added from
+                the package that depends on the shared library to the package
+                that contains the library.</para>
+
+                <para>The automatically added runtime dependency also includes
+                a version restriction.
+                This version restriction specifies that at least the current
+                version of the package that provides the shared library must be
+                used, as if
+                "<replaceable>package</replaceable> (>= <replaceable>version</replaceable>)"
+                had been added to
+                <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>.
+                This forces an upgrade of the package containing the shared
+                library when installing the package that depends on the
+                library, if needed.</para>
+
+                <para>If you want to avoid a package being registered as
+                providing a particular shared library (e.g. because the library
+                is for internal use only), then add the library to
+                <link linkend='var-PRIVATE_LIBS'><filename>PRIVATE_LIBS</filename></link>
+                inside the package's recipe.
+                </para></listitem>
+            <listitem><para>
+                <filename>pcdeps</filename>:
+                During the
+                <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                task of each recipe, all pkg-config modules
+                (<filename>*.pc</filename> files) installed by the recipe are
+                located.
+                For each module, the package that contains the module is
+                registered as providing the module.
+                The resulting module-to-package mapping is saved globally in
+                <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
+                by the
+                <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
+                task.</para>
+
+                <para>Simultaneously, all pkg-config modules installed by the
+                recipe are inspected to see what other pkg-config modules they
+                depend on.
+                A module is seen as depending on another module if it contains
+                a "Requires:" line that specifies the other module.
+                For each module dependency,
+                <filename>PKGDATA_DIR</filename> is queried to see if some
+                package contains the module.
+                If such a package is found, a runtime dependency is added from
+                the package that depends on the module to the package that
+                contains the module.
+                <note>
+                    The <filename>pcdeps</filename> mechanism most often infers
+                    dependencies between <filename>-dev</filename> packages.
+                </note>
+                </para></listitem>
+            <listitem><para>
+                <filename>depchains</filename>:
+                If a package <filename>foo</filename> depends on a package
+                <filename>bar</filename>, then <filename>foo-dev</filename>
+                and <filename>foo-dbg</filename> are also made to depend on
+                <filename>bar-dev</filename> and <filename>bar-dbg</filename>,
+                respectively.
+                Taking the <filename>-dev</filename> packages as an example,
+                the <filename>bar-dev</filename> package might provide
+                headers and shared library symlinks needed by
+                <filename>foo-dev</filename>, which shows the need
+                for a dependency between the packages.</para>
+
+                <para>The dependencies added by <filename>depchains</filename>
+                are in the form of
+                <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>.
+                <note>
+                    By default, <filename>foo-dev</filename> also has an
+                    <filename>RDEPENDS</filename>-style dependency on
+                    <filename>foo</filename>, because the default value of
+                    <filename>RDEPENDS_${PN}-dev</filename> (set in
+                    <filename>bitbake.conf</filename>) includes
+                    "${PN}".
+                </note></para>
+
+                <para>To ensure that the dependency chain is never broken,
+                <filename>-dev</filename> and <filename>-dbg</filename>
+                packages are always generated by default, even if the packages
+                turn out to be empty.
+                See the
+                <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>
+                variable for more information.
+                </para></listitem>
+        </itemizedlist>
+    </para>
+
+    <para>
+        The <filename>do_package</filename> task depends on the
+        <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
+        task of each recipe in
+        <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+        through use of a
+        <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>deptask</filename></ulink><filename>]</filename>
+        declaration, which guarantees that the required
+        shared-library/module-to-package mapping information will be available
+        when needed as long as <filename>DEPENDS</filename> has been
+        correctly set.
+    </para>
+</section>
+
+<section id='fakeroot-and-pseudo'>
+    <title>Fakeroot and Pseudo</title>
+
+    <para>
+        Some tasks are easier to implement when allowed to perform certain
+        operations that are normally reserved for the root user.
+        For example, the
+        <link linkend='ref-tasks-install'><filename>do_install</filename></link>
+        task benefits from being able to set the UID and GID of installed files
+        to arbitrary values.
+    </para>
+
+    <para>
+        One approach to allowing tasks to perform root-only operations
+        would be to require BitBake to run as root.
+        However, this method is cumbersome and has security issues.
+        The approach that is actually used is to run tasks that benefit from
+        root privileges in a "fake" root environment.
+        Within this environment, the task and its child processes believe that
+        they are running as the root user, and see an internally consistent
+        view of the filesystem.
+        As long as generating the final output (e.g. a package or an image)
+        does not require root privileges, the fact that some earlier steps ran
+        in a fake root environment does not cause problems.
+    </para>
+
+    <para>
+        The capability to run tasks in a fake root environment is known as
+        "fakeroot", which is derived from the BitBake keyword/variable
+        flag that requests a fake root environment for a task.
+        In current versions of the OpenEmbedded build system,
+        the program that implements fakeroot is known as Pseudo.
+    </para>
+
+    <para>
+        Pseudo overrides system calls through the
+        <filename>LD_PRELOAD</filename> mechanism to give the
+        illusion of running as root.
+        To keep track of "fake" file ownership and permissions resulting from
+        operations that require root permissions, an sqlite3
+        database is used.
+        This database is stored in
+        <filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}/pseudo/files.db</filename>
+        for individual recipes.
+        Storing the database in a file as opposed to in memory
+        gives persistence between tasks, and even between builds.
+        <note><title>Caution</title>
+            If you add your own task that manipulates the same files or
+            directories as a fakeroot task, then that task should also run
+            under fakeroot.
+            Otherwise, the task will not be able to run root-only operations,
+            and will not see the fake file ownership and permissions set by the
+            other task.
+            You should also add a dependency on
+            <filename>virtual/fakeroot-native:do_populate_sysroot</filename>,
+            giving the following:
+            <literallayout class='monospaced'>
+       fakeroot do_mytask () {
+           ...
+       }
+       do_mytask[depends] += "virtual/fakeroot-native:do_populate_sysroot"
+            </literallayout>
+        </note>
+        For more information, see the
+        <ulink url='&YOCTO_DOCS_BB_URL;#var-FAKEROOT'><filename>FAKEROOT*</filename></ulink>
+        variables in the BitBake User Manual.
+        You can also reference this
+        <ulink url='http://www.ibm.com/developerworks/opensource/library/os-aapseudo1/index.html'>Pseudo</ulink>
+        article.
+    </para>
+</section>
+
 <section id='x32'>
     <title>x32</title>
 
diff --git a/import-layers/yocto-poky/documentation/ref-manual/usingpoky.xml b/import-layers/yocto-poky/documentation/ref-manual/usingpoky.xml
index a7bf32d..f734554 100644
--- a/import-layers/yocto-poky/documentation/ref-manual/usingpoky.xml
+++ b/import-layers/yocto-poky/documentation/ref-manual/usingpoky.xml
@@ -119,8 +119,8 @@
     </para>
 </section>
 
-<section id='usingpoky-debugging'>
-    <title>Debugging Build Failures</title>
+<section id='usingpoky-debugging-tools-and-techniques'>
+    <title>Debugging Tools and Techniques</title>
 
     <para>
         The exact method for debugging build failures depends on the nature of
@@ -163,23 +163,420 @@
         <ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual'>BitBake User Manual</ulink>.
     </note>
 
+    <section id='usingpoky-debugging-viewing-logs-from-failed-tasks'>
+        <title>Viewing Logs from Failed Tasks</title>
 
-    <section id='usingpoky-debugging-taskfailures'>
-        <title>Task Failures</title>
-
-        <para>The log file for shell tasks is available in
-            <filename>${WORKDIR}/temp/log.do_<replaceable>taskname</replaceable>.pid</filename>.
-            For example, the <filename>do_compile</filename> task for the QEMU minimal image for the x86
-            machine (<filename>qemux86</filename>) might be
-            <filename>tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/temp/log.do_compile.20830</filename>.
-            To see what
-            <ulink url='&YOCTO_DOCS_DEV_URL;#bitbake-term'>BitBake</ulink>
-            runs to generate that log, look at the corresponding
-            <filename>run.do_<replaceable>taskname</replaceable>.pid</filename> file located in the same directory.
+        <para>
+            You can find the log for a task in the file
+            <filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}/temp/log.do_</filename><replaceable>taskname</replaceable>.
+            For example, the log for the
+            <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>
+            task of the QEMU minimal image for the x86 machine
+            (<filename>qemux86</filename>) might be in
+            <filename>tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/temp/log.do_compile</filename>.
+            To see the commands
+            <ulink url='&YOCTO_DOCS_DEV_URL;#bitbake-term'>BitBake</ulink> ran
+            to generate a log, look at the corresponding
+            <filename>run.do_</filename><replaceable>taskname</replaceable>
+            file in the same directory.
         </para>
 
         <para>
-            Presently, the output from Python tasks is sent directly to the console.
+            <filename>log.do_</filename><replaceable>taskname</replaceable> and
+            <filename>run.do_</filename><replaceable>taskname</replaceable>
+            are actually symbolic links to
+            <filename>log.do_</filename><replaceable>taskname</replaceable><filename>.</filename><replaceable>pid</replaceable>
+            and
+            <filename>log.run_</filename><replaceable>taskname</replaceable><filename>.</filename><replaceable>pid</replaceable>,
+            where <replaceable>pid</replaceable> is the PID the task had when
+            it ran.
+            The symlinks always point to the files corresponding to the most
+            recent run.
+        </para>
+    </section>
+
+    <section id='usingpoky-debugging-viewing-variable-values'>
+        <title>Viewing Variable Values</title>
+        <para>
+            BitBake's <filename>-e</filename> option is used to display
+            variable values after parsing.
+            The following command displays the variable values after the
+            configuration files (i.e. <filename>local.conf</filename>,
+            <filename>bblayers.conf</filename>,
+            <filename>bitbake.conf</filename> and so forth) have been
+            parsed:
+            <literallayout class='monospaced'>
+     $ bitbake -e
+            </literallayout>
+            The following command displays variable values after a specific
+            recipe has been parsed.
+            The variables include those from the configuration as well:
+            <literallayout class='monospaced'>
+     $ bitbake -e recipename
+            </literallayout>
+            <note><para>
+                Each recipe has its own private set of variables (datastore).
+                Internally, after parsing the configuration, a copy of the
+                resulting datastore is made prior to parsing each recipe.
+                This copying implies that variables set in one recipe will
+                not be visible to other recipes.</para>
+
+                <para>Likewise, each task within a recipe gets a private
+                datastore based on the recipe datastore, which means that
+                variables set within one task will not be visible to
+                other tasks.</para>
+            </note>
+        </para>
+
+        <para>
+            In the output of <filename>bitbake -e</filename>, each variable is
+            preceded by a description of how the variable got its value,
+            including temporary values that were later overriden.
+            This description also includes variable flags (varflags) set on
+            the variable.
+            The output can be very helpful during debugging.
+        </para>
+
+        <para>
+            Variables that are exported to the environment are preceded by
+            <filename>export</filename> in the output of
+            <filename>bitbake -e</filename>.
+            See the following example:
+            <literallayout class='monospaced'>
+     export CC="i586-poky-linux-gcc -m32 -march=i586 --sysroot=/home/ulf/poky/build/tmp/sysroots/qemux86"
+            </literallayout>
+        </para>
+
+        <para>
+            In addition to variable values, the output of the
+            <filename>bitbake -e</filename> and
+            <filename>bitbake -e</filename>&nbsp;<replaceable>recipe</replaceable>
+            commands includes the following information:
+            <itemizedlist>
+                <listitem><para>
+                    The output starts with a tree listing all configuration
+                    files and classes included globally, recursively listing
+                    the files they include or inherit in turn.
+                    Much of the behavior of the OpenEmbedded build system
+                    (including the behavior of the
+                    <link linkend='normal-recipe-build-tasks'>normal recipe build tasks</link>)
+                    is implemented in the
+                    <link linkend='ref-classes-base'><filename>base</filename></link>
+                    class and the classes it inherits, rather than being built
+                    into BitBake itself.
+                    </para></listitem>
+                <listitem><para>
+                    After the variable values, all functions appear in the
+                    output.
+                    For shell functions, variables referenced within the
+                    function body are expanded.
+                    If a function has been modified using overrides or
+                    using override-style operators like
+                    <filename>_append</filename> and
+                    <filename>_prepend</filename>, then the final assembled
+                    function body appears in the output.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
+    <section id='viewing-package-information-with-oe-pkgdata-util'>
+        <title>Viewing Package Information with <filename>oe-pkgdata-util</filename></title>
+
+        <para>
+            You can use the <filename>oe-pkgdata-util</filename> command-line
+            utility to query
+            <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
+            and display various package-related information.
+            When you use the utility, you must use it to view information
+            on packages that have already been built.
+        </para>
+
+        <para>
+            Following are a few of the available
+            <filename>oe-pkgdata-util</filename> subcommands.
+            <note>
+                You can use the standard * and ? globbing wildcards as part of
+                package names and paths.
+            </note>
+            <itemizedlist>
+                <listitem><para>
+                    <filename>oe-pkgdata-util list-pkgs [</filename><replaceable>pattern</replaceable><filename>]</filename>:
+                    Lists all packages that have been built, optionally
+                    limiting the match to packages that match
+                    <replaceable>pattern</replaceable>.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>oe-pkgdata-util list-pkg-files&nbsp;</filename><replaceable>package</replaceable><filename>&nbsp;...</filename>:
+                    Lists the files and directories contained in the given
+                    packages.
+                    <note>
+                        <para>
+                        A different way to view the contents of a package is
+                        to look at the
+                        <filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}/packages-split</filename>
+                        directory of the recipe that generates the
+                        package.
+                        This directory is created by the
+                        <link linkend='ref-tasks-package'><filename>do_package</filename></link>
+                        task and has one subdirectory for each package the
+                        recipe generates, which contains the files stored in
+                        that package.</para>
+                        <para>
+                        If you want to inspect the
+                        <filename>${WORKDIR}/packages-split</filename>
+                        directory, make sure that
+                        <link linkend='ref-classes-rm-work'><filename>rm_work</filename></link>
+                        is not enabled when you build the recipe.
+                        </para>
+                        </note>
+                    </para></listitem>
+                <listitem><para>
+                    <filename>oe-pkgdata-util find-path&nbsp;</filename><replaceable>path</replaceable><filename>&nbsp;...</filename>:
+                    Lists the names of the packages that contain the given
+                    paths.
+                    For example, the following tells us that
+                    <filename>/usr/share/man/man1/make.1</filename>
+                    is contained in the <filename>make-doc</filename>
+                    package:
+                    <literallayout class='monospaced'>
+     $ oe-pkgdata-util find-path /usr/share/man/man1/make.1
+     make-doc: /usr/share/man/man1/make.1
+                    </literallayout>
+                    </para></listitem>
+                <listitem><para>
+                    <filename>oe-pkgdata-util lookup-recipe&nbsp;</filename><replaceable>package</replaceable><filename>&nbsp;...</filename>:
+                    Lists the name of the recipes that
+                    produce the given packages.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+
+        <para>
+            For more information on the <filename>oe-pkgdata-util</filename>
+            command, use the help facility:
+            <literallayout class='monospaced'>
+     $ oe-pkgdata-util &dash;&dash;help
+     $ oe-pkgdata-util <replaceable>subcommand</replaceable> --help
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='usingpoky-viewing-dependencies-between-recipes-and-tasks'>
+        <title>Viewing Dependencies Between Recipes and Tasks</title>
+
+        <para>
+            Sometimes it can be hard to see why BitBake wants to build other
+            recipes before the one you have specified.
+            Dependency information can help you understand why a recipe is
+            built.
+        </para>
+
+        <para>
+            To generate dependency information for a recipe, run the following
+            command:
+            <literallayout class='monospaced'>
+     $ bitbake -g <replaceable>recipename</replaceable>
+            </literallayout>
+            This command writes the following files in the current directory:
+            <itemizedlist>
+                <listitem><para>
+                    <filename>pn-buildlist</filename>: A list of
+                    recipes/targets involved in building
+                    <replaceable>recipename</replaceable>.
+                    "Involved" here means that at least one task from the
+                     recipe needs to run when building
+                    <replaceable>recipename</replaceable> from scratch.
+                    Targets that are in
+                    <link linkend='var-ASSUME_PROVIDED'><filename>ASSUME_PROVIDED</filename></link>
+                    are not listed.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>pn-depends.dot</filename>: A graph showing
+                    dependencies between build-time targets (recipes).
+                    </para></listitem>
+                <listitem><para>
+                    <filename>package-depends.dot</filename>: A graph showing
+                    known dependencies between runtime targets.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>task-depends.dot</filename>: A graph showing
+                    dependencies between tasks.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+
+        <para>
+            The graphs are in
+            <ulink url='https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29'>DOT</ulink>
+            format and can be converted to images (e.g. using the
+            <filename>dot</filename> tool from
+            <ulink url='http://www.graphviz.org/'>Graphviz</ulink>).
+            <note><title>Notes</title>
+                <itemizedlist>
+                    <listitem><para>
+                        DOT files use a plain text format.
+                        The graphs generated using the
+                        <filename>bitbake -g</filename> command are often so
+                        large as to be difficult to read without special
+                        pruning (e.g. with Bitbake's
+                        <filename>-I</filename> option) and processing.
+                        Despite the form and size of the graphs, the
+                        corresponding <filename>.dot</filename> files can still
+                        be possible to read and provide useful information.
+                        </para>
+
+                        <para>As an example, the
+                        <filename>task-depends.dot</filename> file contains
+                        lines such as the following:
+                        <literallayout class='monospaced'>
+     "libxslt.do_configure" -> "libxml2.do_populate_sysroot"
+                        </literallayout>
+                        The above example line reveals that the
+                        <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
+                        task in <filename>libxslt</filename> depends on the
+                        <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
+                        task in <filename>libxml2</filename>, which is a normal
+                        <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+                        dependency between the two recipes.
+                        </para></listitem>
+                    <listitem><para>
+                        For an example of how <filename>.dot</filename> files
+                        can be processed, see the
+                        <filename>scripts/contrib/graph-tool</filename> Python
+                        script, which finds and displays paths between graph
+                        nodes.
+                        </para></listitem>
+                </itemizedlist>
+            </note>
+        </para>
+
+        <para>
+            You can use a different method to view dependency information
+            by using the following command:
+            <literallayout class='monospaced'>
+     $ bitbake -g -u depexp <replaceable>recipename</replaceable>
+            </literallayout>
+            This command displays a GUI window from which you can view
+            build-time and runtime dependencies for the recipes involved in
+            building <replaceable>recipename</replaceable>.
+        </para>
+    </section>
+
+    <section id='usingpoky-viewing-task-variable-dependencies'>
+        <title>Viewing Task Variable Dependencies</title>
+
+        <para>
+            As mentioned in the
+            "<ulink url='&YOCTO_DOCS_BB_URL;#checksums'>Checksums (Signatures)</ulink>"
+            section of the BitBake User Manual, BitBake tries to automatically
+            determine what variables a task depends on so that it can rerun
+            the task if any values of the variables change.
+            This determination is usually reliable.
+            However, if you do things like construct variable names at runtime,
+            then you might have to manually declare dependencies on those
+            variables using <filename>vardeps</filename> as described in the
+            "<ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'>Variable Flags</ulink>"
+            section of the BitBake User Manual.
+        </para>
+
+        <para>
+            If you are unsure whether a variable dependency is being picked up
+            automatically for a given task, you can list the variable
+            dependencies BitBake has determined by doing the following:
+            <orderedlist>
+                <listitem><para>
+                    Build the recipe containing the task:
+                    <literallayout class='monospaced'>
+     $ bitbake <replaceable>recipename</replaceable>
+                    </literallayout>
+                    </para></listitem>
+                <listitem><para>
+                    Inside the
+                    <link linkend='var-STAMPS_DIR'><filename>STAMPS_DIR</filename></link>
+                    directory, find the signature data
+                    (<filename>sigdata</filename>) file that corresponds to the
+                    task.
+                    The <filename>sigdata</filename> files contain a pickled
+                    Python database of all the metadata that went into creating
+                    the input checksum for the task.
+                    As an example, for the
+                    <link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>
+                    task of the <filename>db</filename> recipe, the
+                    <filename>sigdata</filename> file might be found in the
+                    following location:
+                    <literallayout class='monospaced'>
+     ${BUILDDIR}/tmp/stamps/i586-poky-linux/db/6.0.30-r1.do_fetch.sigdata.7c048c18222b16ff0bcee2000ef648b1
+                    </literallayout>
+                    For tasks that are accelerated through the shared state
+                    (<link linkend='shared-state-cache'>sstate</link>)
+                    cache, an additional <filename>siginfo</filename> file is
+                    written into
+                    <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>
+                    along with the cached task output.
+                    The <filename>siginfo</filename> files contain exactly the
+                    same information as <filename>sigdata</filename> files.
+                    </para></listitem>
+                <listitem><para>
+                    Run <filename>bitbake-dumpsig</filename> on the
+                    <filename>sigdata</filename> or
+                    <filename>siginfo</filename> file.
+                    Here is an example:
+                    <literallayout class='monospaced'>
+     $ bitbake-dumpsig ${BUILDDIR}/tmp/stamps/i586-poky-linux/db/6.0.30-r1.do_fetch.sigdata.7c048c18222b16ff0bcee2000ef648b1
+                    </literallayout>
+                    In the output of the above command, you will find a line
+                    like the following, which lists all the (inferred) variable
+                    dependencies for the task.
+                    This list also includes indirect dependencies from
+                    variables depending on other variables, recursively.
+                    <literallayout class='monospaced'>
+     Task dependencies: ['PV', 'SRCREV', 'SRC_URI', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]', 'base_do_fetch']
+                    </literallayout>
+                    <note>
+                        Functions (e.g. <filename>base_do_fetch</filename>)
+                        also count as variable dependencies.
+                        These functions in turn depend on the variables they
+                        reference.
+                    </note>
+                    The output of <filename>bitbake-dumpsig</filename> also includes
+                    the value each variable had, a list of dependencies for each
+                    variable, and
+                    <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_HASHBASE_WHITELIST'><filename>BB_HASHBASE_WHITELIST</filename></ulink>
+                    information.
+                    </para></listitem>
+            </orderedlist>
+        </para>
+
+        <para>
+            There is also a <filename>bitbake-diffsigs</filename> command for
+            comparing two <filename>siginfo</filename> or
+            <filename>sigdata</filename> files.
+            This command can be helpful when trying to figure out what changed
+            between two versions of a task.
+            If you call <filename>bitbake-diffsigs</filename> with just one
+            file, the command behaves like
+            <filename>bitbake-dumpsig</filename>.
+        </para>
+
+        <para>
+            You can also use BitBake to dump out the signature construction
+            information without executing tasks by using either of the
+            following BitBake command-line options:
+            <literallayout class='monospaced'>
+     &dash;&dash;dump-signatures=<replaceable>SIGNATURE_HANDLER</replaceable>
+     -S <replaceable>SIGNATURE_HANDLER</replaceable>
+            </literallayout>
+            <note>
+                Two common values for
+                <replaceable>SIGNATURE_HANDLER</replaceable> are "none" and
+                "printdiff", which dump only the signature or compare the
+                dumped signature with the cached one, respectively.
+            </note>
+            Using BitBake with either of these options causes BitBake to dump
+            out <filename>sigdata</filename> files in the
+            <filename>stamps</filename> directory for every task it would have
+            executed instead of building the specified target package.
         </para>
     </section>
 
@@ -187,7 +584,7 @@
         <title>Running Specific Tasks</title>
 
         <para>
-            Any given package consists of a set of tasks.
+            Any given recipe consists of a set of tasks.
             The standard BitBake behavior in most cases is:
             <filename>do_fetch</filename>,
             <filename>do_unpack</filename>,
@@ -209,15 +606,39 @@
         </para>
 
         <para>
-            If you wish to rerun a task, use the <filename>-f</filename> force
-            option.
-            For example, the following sequence forces recompilation after
-            changing files in the work directory.
+            The <filename>-c</filename> option respects task dependencies,
+            which means that all other tasks (including tasks from other
+            recipes) that the specified task depends on will be run before the
+            task.
+            Even when you manually specify a task to run with
+            <filename>-c</filename>, BitBake will only run the task if it
+            considers it "out of date".
+            See the
+            "<link linkend='stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</link>"
+            section for how BitBake determines whether a task is "out of date".
+        </para>
+
+        <para>
+            If you want to force an up-to-date task to be rerun (e.g.
+            because you made manual modifications to the recipe's
+            <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
+            that you want to try out), then you can use the
+            <filename>-f</filename> option.
+            <note>
+                The reason <filename>-f</filename> is never required when
+                running the
+                <link linkend='ref-tasks-devshell'><filename>do_devshell</filename></link>
+                task is because the
+                <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>nostamp</filename></ulink><filename>]</filename>
+                variable flag is already set for the task.
+            </note>
+            The following example shows one way you can use the
+            <filename>-f</filename> option:
             <literallayout class='monospaced'>
      $ bitbake matchbox-desktop
                .
                .
-        <replaceable>make some changes to the source code in the work directory</replaceable>
+     make some changes to the source code in the work directory
                .
                .
      $ bitbake matchbox-desktop -c compile -f
@@ -236,6 +657,50 @@
         </para>
 
         <para>
+            Another, shorter way to rerun a task and all
+            <link linkend='normal-recipe-build-tasks'>normal recipe build tasks</link>
+            that depend on it is to use the <filename>-C</filename>
+            option.
+            <note>
+                This option is upper-cased and is separate from the
+                <filename>-c</filename> option, which is lower-cased.
+            </note>
+            Using this option invalidates the given task and then runs the
+            <link linkend='ref-tasks-build'><filename>do_build</filename></link>
+            task, which is the default task if no task is given, and the
+            tasks on which it depends.
+            You could replace the final two commands in the previous example
+            with the following single command:
+            <literallayout class='monospaced'>
+     $ bitbake matchbox-desktop -C compile
+            </literallayout>
+            Internally, the <filename>-f</filename> and
+            <filename>-C</filename> options work by tainting (modifying) the
+            input checksum of the specified task.
+            This tainting indirectly causes the task and its
+            dependent tasks to be rerun through the normal task dependency
+            mechanisms.
+            <note>
+                BitBake explicitly keeps track of which tasks have been
+                tainted in this fashion, and will print warnings such as the
+                following for builds involving such tasks:
+                <literallayout class='monospaced'>
+     WARNING: /home/ulf/poky/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.1.bb.do_compile is tainted from a forced run
+                </literallayout>
+                The purpose of the warning is to let you know that the work
+                directory and build output might not be in the clean state they
+                would be in for a "normal" build, depending on what actions
+                you took.
+                To get rid of such warnings, you can remove the work directory
+                and rebuild the recipe, as follows:
+                <literallayout class='monospaced'>
+     $ bitbake matchbox-desktop -c clean
+     $ bitbake matchbox-desktop
+                </literallayout>
+            </note>
+        </para>
+
+        <para>
             You can view a list of tasks in a given package by running the
             <filename>do_listtasks</filename> task as follows:
             <literallayout class='monospaced'>
@@ -246,24 +711,77 @@
         </para>
     </section>
 
-    <section id='usingpoky-debugging-dependencies'>
-        <title>Dependency Graphs</title>
+    <section id='checking-for-missing-build-time-dependencies'>
+        <title>Checking for Missing Build-Time Dependencies</title>
 
         <para>
-            Sometimes it can be hard to see why BitBake wants to build
-            other packages before building a given package you have specified.
-            The <filename>bitbake -g <replaceable>targetname</replaceable></filename> command
-            creates the <filename>pn-buildlist</filename>,
-            <filename>pn-depends.dot</filename>,
-            <filename>package-depends.dot</filename>, and
-            <filename>task-depends.dot</filename> files in the current
-            directory.
-            These files show what will be built and the package and task
-            dependencies, which are useful for debugging problems.
-            You can use the
-            <filename>bitbake -g -u depexp <replaceable>targetname</replaceable></filename>
-            command to display the results in a more human-readable form.
+            A recipe might build successfully even though some of its
+            build-time dependencies are missing from
+            <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>.
+            Following are the two most common ways in which that can happen:
+            <itemizedlist>
+                <listitem><para>
+                    The build-time dependency just happens to already exist in
+                    the staging sysroot
+                    (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>)
+                    by the time the recipe is built.
+                    This situation occurs when the build-time dependency is
+                    built earlier during recipe processing.
+                    </para></listitem>
+                <listitem><para>
+                    The component built by the recipe conditionally enables
+                    functionality depending on whether it can find the
+                    build-time dependency in the staging sysroot.
+                    If the build-time dependency is missing, the corresponding
+                    functionality is disabled.
+                    This condition is known as a "floating dependency".
+                    </para></listitem>
+            </itemizedlist>
         </para>
+
+        <para>
+            Because dealing with the second case is more complex, focus will
+            be on the first case.
+            The
+            <link linkend='ref-classes-insane'><filename>build-deps</filename></link>
+            QA check checks that every library the component linked against is
+            declared as a build-time dependency.
+            If that is not the case, then the first situation described in the
+            previous list exists, and <filename>build-deps</filename> reports
+            a missing build-time dependency.
+        </para>
+
+        <para>
+            Another, more manual, way to check a recipe for missing build-time
+            dependencies of the first type is to build with an empty staging
+            sysroot.
+            This method can also find missing build-time dependencies
+            that are not in the form of libraries, which the
+            <filename>build-deps</filename> QA check is unable to find.
+        </para>
+
+        <para>
+            An easy way to empty the staging sysroots is to simply remove
+            <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>,
+            which is usually
+            <filename>${</filename><link linkend='var-BUILDDIR'><filename>BUILDDIR</filename></link><filename>}/tmp</filename>,
+            as it includes the staging sysroots.
+            Another, faster method to empty the staging sysroots is to use the
+            <filename>scripts/wipe-sysroot</filename> script,
+            which removes just the staging sysroots and keeps everything else
+            in <filename>TMPDIR</filename>.
+            <note>
+                The <filename>scripts/</filename> directory appears in
+                <filename>PATH</filename> after running the build environment
+                initialization script (i.e.
+                <link linkend='structure-core-script'><filename>oe-init-build-env</filename></link>
+                or
+                <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>),
+                which results in the ability to to run
+                <filename>wipe-sysroot</filename> immediately.
+            </note>
+        </para>
+
     </section>
 
     <section id='usingpoky-debugging-bitbake'>
@@ -336,48 +854,76 @@
         </para>
     </section>
 
-    <section id='usingpoky-debugging-variables'>
-        <title>Variables</title>
-        <para>
-            You can use the <filename>-e</filename> BitBake option to
-            display the parsing environment for a configuration.
-            The following displays the general parsing environment:
-            <literallayout class='monospaced'>
-     $ bitbake -e
-            </literallayout>
-            This next example shows the parsing environment for a specific
-            recipe:
-            <literallayout class='monospaced'>
-     $ bitbake -e <replaceable>recipename</replaceable>
-            </literallayout>
-        </para>
-    </section>
-
     <section id='recipe-logging-mechanisms'>
         <title>Recipe Logging Mechanisms</title>
         <para>
-            Best practices exist while writing recipes that both log build progress and
-            act on build conditions such as warnings and errors.
-            Both Python and Bash language bindings exist for the logging mechanism:
+            The Yocto Project provides several logging functions for producing
+            debugging output and reporting errors and warnings.
+            For Python functions, the following logging functions exist.
+            All of these functions log to
+            <filename>${T}/log.do_</filename><replaceable>task</replaceable>,
+            and can also log to standard output (stdout) with the right
+            settings:
             <itemizedlist>
-                <listitem><para><emphasis>Python:</emphasis> For Python functions, BitBake
-                    supports several loglevels: <filename>bb.fatal</filename>,
-                    <filename>bb.error</filename>, <filename>bb.warn</filename>,
-                    <filename>bb.note</filename>, <filename>bb.plain</filename>,
-                    and <filename>bb.debug</filename>.</para></listitem>
-                <listitem><para><emphasis>Bash:</emphasis> For Bash functions, the same set
-                    of loglevels exist and are accessed with a similar syntax:
-                    <filename>bbfatal</filename>, <filename>bberror</filename>,
-                    <filename>bbwarn</filename>, <filename>bbnote</filename>,
-                    <filename>bbplain</filename>, and <filename>bbdebug</filename>.</para></listitem>
+                <listitem><para>
+                    <filename>bb.plain(</filename><replaceable>msg</replaceable><filename>)</filename>:
+                    Writes <replaceable>msg</replaceable> as is to the log while
+                    also logging to stdout.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>bb.note(</filename><replaceable>msg</replaceable><filename>)</filename>:
+                    Writes "NOTE: <replaceable>msg</replaceable>" to the log.
+                    Also logs to stdout if BitBake is called with "-v".
+                    </para></listitem>
+                <listitem><para>
+                    <filename>bb.debug(</filename><replaceable>level</replaceable><filename>,&nbsp;</filename><replaceable>msg</replaceable><filename>)</filename>:
+                    Writes "DEBUG: <replaceable>msg</replaceable>" to the log.
+                    Also logs to stdout if the log level is greater than or
+                    equal to <replaceable>level</replaceable>.
+                    See the
+                    "<ulink url='&YOCTO_DOCS_BB_URL;#usage-and-syntax'>-D</ulink>"
+                    option in the BitBake User Manual for more information.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>bb.warn(</filename><replaceable>msg</replaceable><filename>)</filename>:
+                    Writes "WARNING: <replaceable>msg</replaceable>" to the log
+                    while also logging to stdout.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>bb.error(</filename><replaceable>msg</replaceable><filename>)</filename>:
+                    Writes "ERROR: <replaceable>msg</replaceable>" to the log
+                    while also logging to stdout.
+                    <note>
+                        Calling this function does not cause the task to fail.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <filename>bb.fatal(</filename><replaceable>msg</replaceable><filename>)</filename>:
+                    This logging function is similar to
+                    <filename>bb.error(</filename><replaceable>msg</replaceable><filename>)</filename>
+                    but also causes the calling task to fail.
+                    <note>
+                        <filename>bb.fatal()</filename> raises an exception,
+                        which means you do not need to put a "return"
+                        statement after the function.
+                    </note>
+                    </para></listitem>
             </itemizedlist>
         </para>
 
         <para>
-            For guidance on how logging is handled in both Python and Bash recipes, see the
-            <filename>logging.bbclass</filename> file in the
+            The same logging functions are also available in shell functions,
+            under the names
+            <filename>bbplain</filename>, <filename>bbnote</filename>,
+            <filename>bbdebug</filename>, <filename>bbwarn</filename>,
+            <filename>bberror</filename>, and <filename>bbfatal</filename>.
+            The
+            <link linkend='ref-classes-logging'><filename>logging</filename></link>
+            class implements these functions.
+            See that class in the
             <filename>meta/classes</filename> folder of the
-            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
+            for information.
         </para>
 
         <section id='logging-with-python'>
@@ -456,18 +1002,92 @@
         <para>
             Here are some other tips that you might find useful:
             <itemizedlist>
-                <listitem><para>When adding new packages, it is worth watching for
-                    undesirable items making their way into compiler command lines.
-                    For example, you do not want references to local system files like
-                    <filename>/usr/lib/</filename> or <filename>/usr/include/</filename>.
+                <listitem><para>
+                    When adding new packages, it is worth watching for
+                    undesirable items making their way into compiler command
+                    lines.
+                    For example, you do not want references to local system
+                    files like
+                    <filename>/usr/lib/</filename> or
+                    <filename>/usr/include/</filename>.
                     </para></listitem>
-                <listitem><para>If you want to remove the <filename>psplash</filename>
+                <listitem><para>
+                    If you want to remove the <filename>psplash</filename>
                     boot splashscreen,
-                    add <filename>psplash=false</filename> to  the kernel command line.
+                    add <filename>psplash=false</filename> to  the kernel
+                    command line.
                     Doing so prevents <filename>psplash</filename> from loading
                     and thus allows you to see the console.
                     It is also possible to switch out of the splashscreen by
-                    switching the virtual console (e.g. Fn+Left or Fn+Right on a Zaurus).
+                    switching the virtual console (e.g. Fn+Left or Fn+Right
+                    on a Zaurus).
+                    </para></listitem>
+                <listitem><para>
+                    Removing
+                    <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
+                    (usually <filename>tmp/</filename>, within the
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>)
+                    can often fix temporary build issues.
+                    Removing <filename>TMPDIR</filename> is usually a
+                    relatively cheap operation, because task output will be
+                    cached in
+                    <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>
+                    (usually <filename>sstate-cache/</filename>, which is
+                    also in the Build Directory).
+                    <note>
+                        Removing <filename>TMPDIR</filename> might be a
+                        workaround rather than a fix.
+                        Consequently, trying to determine the underlying cause
+                        of an issue before removing the directory is a good
+                        idea.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    Understanding how a feature is used in practice within
+                    existing recipes can be very helpful.
+                    It is recommended that you configure some method that
+                    allows you to quickly search through files.</para>
+
+                    <para>Using GNU Grep, you can use the following shell
+                    function to recursively search through common
+                    recipe-related files, skipping binary files,
+                    <filename>.git</filename> directories, and the
+                    Build Directory (assuming its name starts with
+                    "build"):
+                    <literallayout class='monospaced'>
+     g() {
+         grep -Ir \
+              --exclude-dir=.git \
+              --exclude-dir='build*' \
+              --include='*.bb*' \
+              --include='*.inc*' \
+              --include='*.conf*' \
+              --include='*.py*' \
+              "$@"
+     }
+                    </literallayout>
+                    Following are some usage examples:
+                    <literallayout class='monospaced'>
+     $ g FOO    # Search recursively for "FOO"
+     $ g -i foo # Search recursively for "foo", ignoring case
+     $ g -w FOO # Search recursively for "FOO" as a word, ignoring e.g. "FOOBAR"
+                    </literallayout>
+                    If figuring out how some feature works requires a lot of
+                    searching, it might indicate that the documentation should
+                    be extended or improved.
+                    In such cases, consider filing a documentation bug using
+                    the Yocto Project implementation of
+                    <ulink url='https://bugzilla.yoctoproject.org/'>Bugzilla</ulink>.
+                    For general information on how to submit a bug against
+                    the Yocto Project, see the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#tracking-bugs'>Tracking Bugs</ulink>"
+                    section in the Yocto Project Development Manual.
+                    <note>
+                        The manuals might not be the right place to document
+                        variables that are purely internal and have a limited
+                        scope (e.g. internal variables used to implement a
+                        single <filename>.bbclass</filename> file).
+                    </note>
                     </para></listitem>
             </itemizedlist>
         </para>
@@ -951,6 +1571,19 @@
         * PR changed from "r0" to "r1"
         * PV changed from "0.1.10" to "0.1.12"
                 </literallayout>
+                <note>
+                    The <filename>buildhistory-diff</filename> tool requires
+                    the <filename>GitPython</filename> package.
+                    Be sure to install it using Pip3 as follows:
+                    <literallayout class='monospaced'>
+   $ pip3 install GitPython --user
+                    </literallayout>
+                    Alternatively, you can install
+                    <filename>python3-git</filename> using the appropriate
+                    distribution package manager (e.g.
+                    <filename>apt-get</filename>, <filename>dnf</filename>, or
+                    <filename>zipper</filename>).
+                </note>
             </para>
 
             <para>
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-add-flow.png b/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-add-flow.png
index c09e60e..985ac33 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-add-flow.png
+++ b/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-add-flow.png
Binary files differ
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png b/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png
index cd06c01..fd684ff 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png
+++ b/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png
Binary files differ
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.png b/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.png
new file mode 100644
index 0000000..65474da
--- /dev/null
+++ b/import-layers/yocto-poky/documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.png
Binary files differ
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 7932607..e8a8b8c 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
@@ -381,6 +381,19 @@
             section for more information.
         </note>
     </para>
+
+    <para>
+        You can explicitly control whether or not to include the toolchain
+        when you build an SDK by setting the
+        <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></ulink>
+        variable to "1".
+        In particular, it is useful to include the toolchain when you
+        have set <filename>SDK_EXT_TYPE</filename> to
+        "minimal", which by default, excludes the toolchain.
+        Also, it is helpful if you are building a small SDK for use with
+        an IDE, such as Eclipse, or some other tool where you do not want
+        to take extra steps to install a toolchain.
+    </para>
 </section>
 </appendix>
 <!--
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
new file mode 100644
index 0000000..144e072
--- /dev/null
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-mars.xml
@@ -0,0 +1,871 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
+
+<appendix id='sdk-appendix-mars'>
+    <title>Using Eclipse Mars</title>
+
+    <para>
+        This release of the Yocto Project supports both the Neon and Mars
+        versions of the Eclipse IDE.
+        This appendix presents information that describes how to obtain and
+        configure the Mars version of Eclipse.
+        It also provides a basic project example that you can work through
+        from start to finish.
+        For general information on using the Eclipse IDE and the Yocto
+        Project Eclipse Plug-In, see the
+        "<link linkend='sdk-developing-applications-using-eclipse'>Developing Applications Using <trademark class='trade'>Eclipse</trademark></link>"
+        section.
+    </para>
+
+    <section id='mars-setting-up-the-eclipse-ide'>
+        <title>Setting Up the Mars Version of the Eclipse IDE</title>
+
+        <para>
+            To develop within the Eclipse IDE, you need to do the following:
+            <orderedlist>
+                <listitem><para>Install the Mars version of the Eclipse
+                    IDE.</para></listitem>
+                <listitem><para>Configure the Eclipse IDE.
+                    </para></listitem>
+                <listitem><para>Install the Eclipse Yocto Plug-in.
+                    </para></listitem>
+                <listitem><para>Configure the Eclipse Yocto Plug-in.
+                    </para></listitem>
+            </orderedlist>
+            <note>
+                Do not install Eclipse from your distribution's package
+                repository.
+                Be sure to install Eclipse from the official Eclipse
+                download site as directed in the next section.
+            </note>
+        </para>
+
+        <section id='mars-installing-eclipse-ide'>
+            <title>Installing the Mars Eclipse IDE</title>
+
+            <para>
+                Follow these steps to locate, install, and configure
+                Mars Eclipse:
+                <orderedlist>
+                    <listitem><para><emphasis>Locate the Mars Download:</emphasis>
+                        Open a browser and go to
+                        <ulink url='http://www.eclipse.org/mars/'>http://www.eclipse.org/mars/</ulink>.
+                        </para></listitem>
+                    <listitem><para><emphasis>Download the Tarball:</emphasis>
+                        Click the "Download" button and then use the "Linux
+                        for Eclipse IDE for C++ Developers"
+                        appropriate for your development system
+                        (e.g.
+                        <ulink url='http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/eclipse-cpp-mars-2-linux-gtk-x86_64.tar.gz'>64-bit under Linux for Eclipse IDE for C++ Developers</ulink>
+                        if your development system is a Linux 64-bit machine.
+                        </para></listitem>
+                    <listitem><para><emphasis>Unpack the Tarball:</emphasis>
+                        Move to a clean directory and unpack the tarball.
+                        Here is an example:
+                        <literallayout class='monospaced'>
+     $ cd ~
+     $ tar -xzvf ~/Downloads/eclipse-cpp-mars-2-linux-gtk-x86_64.tar.gz
+                        </literallayout>
+                        Everything unpacks into a folder named "Eclipse".
+                        </para></listitem>
+                    <listitem><para><emphasis>Launch Eclipse:</emphasis>
+                        Double click the "Eclipse" file in the folder to
+                        launch Eclipse.
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
+
+        <section id='mars-configuring-the-mars-eclipse-ide'>
+            <title>Configuring the Mars Eclipse IDE</title>
+
+            <para>
+                Follow these steps to configure the Mars Eclipse IDE.
+                <note>
+                    Depending on how you installed Eclipse and what you have
+                    already done, some of the options will not appear.
+                    If you cannot find an option as directed by the manual,
+                    it has already been installed.
+                </note>
+                <orderedlist>
+                    <listitem><para>Be sure Eclipse is running and
+                        you are in your workbench.
+                        </para></listitem>
+                    <listitem><para>Select "Install New Software" from
+                        the "Help" pull-down menu.
+                        </para></listitem>
+                    <listitem><para>Select
+                        "Mars - http://download.eclipse.org/releases/mars"
+                        from the "Work with:" pull-down menu.
+                        </para></listitem>
+                    <listitem><para>Expand the box next to
+                        "Linux Tools" and select "C/C++ Remote
+                        (Over TCF/TE) Run/Debug Launcher" and
+                        "TM Terminal".
+                        </para></listitem>
+                    <listitem><para>Expand the box next to "Mobile and
+                        Device Development" and select the following
+                        boxes:
+                        <literallayout class='monospaced'>
+     C/C++ Remote (Over TCF/TE) Run/Debug Launcher
+     Remote System Explorer User Actions
+     TM Terminal
+     TCF Remote System Explorer add-in
+     TCF Target Explorer
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>Expand the box next to
+                        "Programming Languages" and select the
+                        following boxes:
+                        <literallayout class='monospaced'>
+     C/C++ Autotools Support
+     C/C++ Development Tools SDK
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        Complete the installation by clicking through
+                        appropriate "Next" and "Finish" buttons.
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
+
+        <section id='mars-installing-the-eclipse-yocto-plug-in'>
+            <title>Installing or Accessing the Mars Eclipse Yocto Plug-in</title>
+
+            <para>
+                You can install the Eclipse Yocto Plug-in into the Eclipse
+                IDE one of two ways:  use the Yocto Project's Eclipse
+                Update site to install the pre-built plug-in or build and
+                install the plug-in from the latest source code.
+            </para>
+
+            <section id='mars-new-software'>
+                <title>Installing the Pre-built Plug-in from the Yocto Project Eclipse Update Site</title>
+
+                <para>
+                    To install the Mars Eclipse Yocto Plug-in from the update
+                    site, follow these steps:
+                    <orderedlist>
+                        <listitem><para>Start up the Eclipse IDE.
+                            </para></listitem>
+                        <listitem><para>In Eclipse, select "Install New
+                            Software" from the "Help" menu.
+                            </para></listitem>
+                        <listitem><para>Click "Add..." in the "Work with:"
+                            area.
+                            </para></listitem>
+                       <listitem><para>Enter
+                            <filename>&ECLIPSE_DL_PLUGIN_URL;/mars</filename>
+                            in the URL field and provide a meaningful name
+                            in the "Name" field.
+                            </para></listitem>
+                        <listitem><para>Click "OK" to have the entry added
+                            to the "Work with:" drop-down list.
+                            </para></listitem>
+                        <listitem><para>Select the entry for the plug-in
+                            from the "Work with:" drop-down list.
+                            </para></listitem>
+                        <listitem><para>Check the boxes next to the following:
+                            <literallayout class='monospaced'>
+     Yocto Project SDK Plug-in
+     Yocto Project Documentation plug-in
+                            </literallayout>
+                            </para></listitem>
+                        <listitem><para>Complete the remaining software
+                            installation steps and then restart the Eclipse
+                            IDE to finish the installation of the plug-in.
+                            <note>
+                                You can click "OK" when prompted about
+                                installing software that contains unsigned
+                                content.
+                            </note>
+                            </para></listitem>
+                    </orderedlist>
+                </para>
+            </section>
+
+            <section id='mars-zip-file-method'>
+                <title>Installing the Plug-in Using the Latest Source Code</title>
+
+                <para>
+                    To install the Mars Eclipse Yocto Plug-in from the latest
+                    source code, follow these steps:
+                    <orderedlist>
+                        <listitem><para>Be sure your development system
+                            has JDK 1.7+
+                            </para></listitem>
+                        <listitem><para>install X11-related packages:
+                            <literallayout class='monospaced'>
+     $ sudo apt-get install xauth
+                            </literallayout>
+                            </para></listitem>
+                        <listitem><para>In a new terminal shell, create a Git
+                            repository with:
+                            <literallayout class='monospaced'>
+     $ cd ~
+     $ git clone git://git.yoctoproject.org/eclipse-poky
+                            </literallayout>
+                            </para></listitem>
+                        <listitem><para>Use Git to checkout the correct
+                            tag:
+                            <literallayout class='monospaced'>
+     $ cd ~/eclipse-poky
+     $ git checkout mars/yocto-&DISTRO;
+                            </literallayout>
+                            This puts you in a detached HEAD state, which
+                            is fine since you are only going to be building
+                            and not developing.
+                            </para></listitem>
+                        <listitem><para>Change to the
+                            <filename>scripts</filename>
+                            directory within the Git repository:
+                            <literallayout class='monospaced'>
+     $ cd scripts
+                            </literallayout>
+                            </para></listitem>
+                        <listitem><para>Set up the local build environment
+                            by running the setup script:
+                            <literallayout class='monospaced'>
+     $ ./setup.sh
+                            </literallayout>
+                            When the script finishes execution,
+                            it prompts you with instructions on how to run
+                            the <filename>build.sh</filename> script, which
+                            is also in the <filename>scripts</filename>
+                            directory of the Git repository created
+                            earlier.
+                            </para></listitem>
+                        <listitem><para>Run the <filename>build.sh</filename>
+                            script as directed.
+                            Be sure to provide the tag name, documentation
+                            branch, and a release name.</para>
+                            <para>
+                            Following is an example:
+                            <literallayout class='monospaced'>
+     $ ECLIPSE_HOME=/home/scottrif/eclipse-poky/scripts/eclipse ./build.sh -l mars/yocto-&DISTRO; master yocto-&DISTRO; 2>&amp;1 | tee build.log
+                            </literallayout>
+                            The previous example command adds the tag you
+                            need for <filename>mars/yocto-&DISTRO;</filename>
+                            to <filename>HEAD</filename>, then tells the
+                            build script to use the local (-l) Git checkout
+                            for the build.
+                            After running the script, the file
+                            <filename>org.yocto.sdk-</filename><replaceable>release</replaceable><filename>-</filename><replaceable>date</replaceable><filename>-archive.zip</filename>
+                            is in the current directory.
+                            </para></listitem>
+                        <listitem><para>If necessary, start the Eclipse IDE
+                            and be sure you are in the Workbench.
+                            </para></listitem>
+                        <listitem><para>Select "Install New Software" from
+                            the "Help" pull-down menu.
+                            </para></listitem>
+                        <listitem><para>Click "Add".
+                            </para></listitem>
+                        <listitem><para>Provide anything you want in the
+                            "Name" field.
+                            </para></listitem>
+                        <listitem><para>Click "Archive" and browse to the
+                            ZIP file you built earlier.
+                            This ZIP file should not be "unzipped", and must
+                            be the <filename>*archive.zip</filename> file
+                            created by running the
+                            <filename>build.sh</filename> script.
+                            </para></listitem>
+                        <listitem><para>Click the "OK" button.
+                            </para></listitem>
+                        <listitem><para>Check the boxes that appear in
+                            the installation window to install the
+                            following:
+                            <literallayout class='monospaced'>
+     Yocto Project SDK Plug-in
+     Yocto Project Documentation plug-in
+                            </literallayout>
+                            </para></listitem>
+                        <listitem><para>Finish the installation by clicking
+                            through the appropriate buttons.
+                            You can click "OK" when prompted about
+                            installing software that contains unsigned
+                            content.
+                            </para></listitem>
+                        <listitem><para>Restart the Eclipse IDE if
+                            necessary.
+                            </para></listitem>
+                    </orderedlist>
+                </para>
+
+                <para>
+                    At this point you should be able to configure the
+                    Eclipse Yocto Plug-in as described in the
+                    "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Mars Eclipse Yocto Plug-in</link>"
+                    section.</para>
+            </section>
+        </section>
+
+        <section id='mars-configuring-the-eclipse-yocto-plug-in'>
+            <title>Configuring the Mars Eclipse Yocto Plug-in</title>
+
+            <para>
+                Configuring the Mars Eclipse Yocto Plug-in involves setting the
+                Cross Compiler options and the Target options.
+                The configurations you choose become the default settings
+                for all projects.
+                You do have opportunities to change them later when
+                you configure the project (see the following section).
+            </para>
+
+            <para>
+                To start, you need to do the following from within the
+                Eclipse IDE:
+                <itemizedlist>
+                    <listitem><para>Choose "Preferences" from the
+                        "Window" menu to display the Preferences Dialog.
+                        </para></listitem>
+                    <listitem><para>Click "Yocto Project SDK" to display
+                        the configuration screen.
+                        </para></listitem>
+                </itemizedlist>
+                The following sub-sections describe how to configure the
+                the plug-in.
+                <note>
+                    Throughout the descriptions, a start-to-finish example for
+                    preparing a QEMU image for use with Eclipse is referenced
+                    as the "wiki" and is linked to the example on the
+                    <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'> Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+                    wiki page.
+                </note>
+            </para>
+
+            <section id='mars-configuring-the-cross-compiler-options'>
+                <title>Configuring the Cross-Compiler Options</title>
+
+                <para>
+                    Cross Compiler options enable Eclipse to use your specific
+                    cross compiler toolchain.
+                    To configure these options, you must select
+                    the type of toolchain, point to the toolchain, specify
+                    the sysroot location, and select the target
+                    architecture.
+                    <itemizedlist>
+                        <listitem><para><emphasis>Selecting the Toolchain Type:</emphasis>
+                            Choose between
+                            <filename>Standalone pre-built toolchain</filename>
+                            and
+                            <filename>Build system derived toolchain</filename>
+                            for Cross Compiler Options.
+                                <itemizedlist>
+                                    <listitem><para><emphasis>
+                                        <filename>Standalone Pre-built Toolchain:</filename></emphasis>
+                                        Select this type when you are using
+                                        a stand-alone cross-toolchain.
+                                        For example, suppose you are an
+                                        application developer and do not
+                                        need to build a target image.
+                                        Instead, you just want to use an
+                                        architecture-specific toolchain on
+                                        an existing kernel and target root
+                                        filesystem.
+                                        In other words, you have downloaded
+                                        and installed a pre-built toolchain
+                                        for an existing image.
+                                        </para></listitem>
+                                   <listitem><para><emphasis>
+                                        <filename>Build System Derived Toolchain:</filename></emphasis>
+                                        Select this type if you built the
+                                        toolchain as part of the
+                                        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
+                                        When you select
+                                        <filename>Build system derived toolchain</filename>,
+                                        you are using the toolchain built and
+                                        bundled inside the Build Directory.
+                                        For example, suppose you created a
+                                        suitable image using the steps in the
+                                        <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                                        In this situation, you would select the
+                                        <filename>Build system derived toolchain</filename>.
+                                        </para></listitem>
+                                </itemizedlist>
+                            </para></listitem>
+                        <listitem><para><emphasis>Specify the Toolchain Root Location:</emphasis>
+                            If you are using a stand-alone pre-built
+                            toolchain, you should be pointing to where it is
+                            installed (e.g.
+                            <filename>/opt/poky/&DISTRO;</filename>).
+                            See the
+                            "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
+                            section for information about how the SDK is
+                            installed.</para>
+                            <para>If you are using a build system derived
+                            toolchain, the path you provide for the
+                            <filename>Toolchain Root Location</filename>
+                            field is the
+                            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+                            from which you run the
+                            <filename>bitbake</filename> command (e.g
+                            <filename>/home/scottrif/poky/build</filename>).</para>
+                            <para>For more information, see the
+                            "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+                            section.
+                            </para></listitem>
+                        <listitem><para><emphasis>Specify Sysroot Location:</emphasis>
+                            This location is where the root filesystem for
+                            the target hardware resides.
+                            </para>
+                            <para>This location depends on where you
+                            separately extracted and installed the target
+                            filesystem.
+                            As an example, suppose you prepared an image
+                            using the steps in the
+                            <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                            If so, the <filename>MY_QEMU_ROOTFS</filename>
+                            directory is found in the
+                            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+                            and you would browse to and select that directory
+                            (e.g. <filename>/home/scottrif/build/MY_QEMU_ROOTFS</filename>).
+                            </para>
+                            <para>For more information on how to install the
+                            toolchain and on how to extract and install the
+                            sysroot filesystem, see the
+                            "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+                            section.
+                            </para></listitem>
+                        <listitem><para><emphasis>Select the Target Architecture:</emphasis>
+                            The target architecture is the type of hardware
+                            you are going to use or emulate.
+                            Use the pull-down
+                            <filename>Target Architecture</filename> menu
+                            to make your selection.
+                            The pull-down menu should have the supported
+                            architectures.
+                            If the architecture you need is not listed in
+                            the menu, you will need to build the image.
+                            See the
+                            "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
+                            section of the Yocto Project Quick Start for
+                            more information.
+                            You can also see the
+                            <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                            </para></listitem>
+                    </itemizedlist>
+                </para>
+            </section>
+
+            <section id='mars-configuring-the-target-options'>
+                <title>Configuring the Target Options</title>
+
+                <para>
+                    You can choose to emulate hardware using the QEMU
+                    emulator, or you can choose to run your image on actual
+                    hardware.
+                    <itemizedlist>
+                        <listitem><para><emphasis>QEMU:</emphasis>
+                            Select this option if you will be using the
+                            QEMU emulator.
+                            If you are using the emulator, you also need to
+                            locate the kernel and specify any custom
+                            options.</para>
+                            <para>If you selected the
+                            <filename>Build system derived toolchain</filename>,
+                            the target kernel you built will be located in
+                            the
+                            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+                            in
+                            <filename>tmp/deploy/images/<replaceable>machine</replaceable></filename>
+                            directory.
+                            As an example, suppose you performed the steps in
+                            the
+                            <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                            In this case, you specify your Build Directory path
+                            followed by the image (e.g.
+                            <filename>/home/scottrif/poky/build/tmp/deploy/images/qemux86/bzImage-qemux86.bin</filename>).
+                            </para>
+                            <para>If you selected the standalone pre-built
+                            toolchain, the pre-built image you downloaded is
+                            located in the directory you specified when you
+                            downloaded the image.</para>
+                            <para>Most custom options are for advanced QEMU
+                            users to further customize their QEMU instance.
+                            These options are specified between paired
+                            angled brackets.
+                            Some options must be specified outside the
+                            brackets.
+                            In particular, the options
+                            <filename>serial</filename>,
+                            <filename>nographic</filename>, and
+                            <filename>kvm</filename> must all be outside the
+                            brackets.
+                            Use the <filename>man qemu</filename> command
+                            to get help on all the options and their use.
+                            The following is an example:
+                           <literallayout class='monospaced'>
+    serial ‘&lt;-m 256 -full-screen&gt;’
+                            </literallayout></para>
+                            <para>
+                            Regardless of the mode, Sysroot is already
+                            defined as part of the Cross-Compiler Options
+                            configuration in the
+                            <filename>Sysroot Location:</filename> field.
+                            </para></listitem>
+                        <listitem><para><emphasis>External HW:</emphasis>
+                            Select this option if you will be using actual
+                            hardware.</para></listitem>
+                    </itemizedlist>
+                </para>
+
+                <para>
+                    Click the "Apply" and "OK" to save your plug-in
+                    configurations.
+                </para>
+            </section>
+        </section>
+    </section>
+
+    <section id='mars-creating-the-project'>
+        <title>Creating the Project</title>
+
+        <para>
+            You can create two types of projects:  Autotools-based, or
+            Makefile-based.
+            This section describes how to create Autotools-based projects
+            from within the Eclipse IDE.
+            For information on creating Makefile-based projects in a
+            terminal window, see the
+            "<link linkend='makefile-based-projects'>Makefile-Based Projects</link>"
+            section.
+            <note>
+                Do not use special characters in project names
+                (e.g. spaces, underscores, etc.).  Doing so can
+                cause configuration to fail.
+            </note>
+        </para>
+
+        <para>
+            To create a project based on a Yocto template and then display
+            the source code, follow these steps:
+            <orderedlist>
+                <listitem><para>Select "C Project" from the "File -> New" menu.
+                    </para></listitem>
+                <listitem><para>Expand <filename>Yocto Project SDK Autotools Project</filename>.
+                    </para></listitem>
+                <listitem><para>Select <filename>Hello World ANSI C Autotools Projects</filename>.
+                    This is an Autotools-based project based on a Yocto
+                    template.
+                    </para></listitem>
+                <listitem><para>Put a name in the <filename>Project name:</filename>
+                    field.
+                    Do not use hyphens as part of the name
+                    (e.g. <filename>hello</filename>).
+                    </para></listitem>
+                <listitem><para>Click "Next".
+                    </para></listitem>
+                <listitem><para>Add appropriate information in the various
+                    fields.
+                    </para></listitem>
+                <listitem><para>Click "Finish".
+                    </para></listitem>
+                <listitem><para>If the "open perspective" prompt appears,
+                    click "Yes" so that you in the C/C++ perspective.
+                    </para></listitem>
+                <listitem><para>The left-hand navigation pane shows your
+                    project.
+                    You can display your source by double clicking the
+                    project's source file.
+                    </para></listitem>
+            </orderedlist>
+        </para>
+    </section>
+
+    <section id='mars-configuring-the-cross-toolchains'>
+        <title>Configuring the Cross-Toolchains</title>
+
+        <para>
+            The earlier section,
+            "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Mars Eclipse Yocto Plug-in</link>",
+            sets up the default project configurations.
+            You can override these settings for a given project by following
+            these steps:
+            <orderedlist>
+                <listitem><para>Select "Yocto Project Settings" from
+                    the "Project -> Properties" menu.
+                    This selection brings up the Yocto Project Settings
+                    Dialog and allows you to make changes specific to an
+                    individual project.</para>
+                    <para>By default, the Cross Compiler Options and Target
+                    Options for a project are inherited from settings you
+                    provided using the Preferences Dialog as described
+                    earlier in the
+                    "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Mars Eclipse Yocto Plug-in</link>" section.
+                    The Yocto Project Settings Dialog allows you to override
+                    those default settings for a given project.
+                    </para></listitem>
+                <listitem><para>Make or verify your configurations for the
+                    project and click "OK".
+                    </para></listitem>
+                <listitem><para>Right-click in the navigation pane and
+                    select "Reconfigure Project" from the pop-up menu.
+                    This selection reconfigures the project by running
+                    <filename>autogen.sh</filename> in the workspace for
+                    your project.
+                    The script also runs <filename>libtoolize</filename>,
+                    <filename>aclocal</filename>,
+                    <filename>autoconf</filename>,
+                    <filename>autoheader</filename>,
+                    <filename>automake --a</filename>, and
+                    <filename>./configure</filename>.
+                    Click on the "Console" tab beneath your source code to
+                    see the results of reconfiguring your project.
+                    </para></listitem>
+            </orderedlist>
+        </para>
+    </section>
+
+    <section id='mars-building-the-project'>
+        <title>Building the Project</title>
+
+        <para>
+            To build the project select "Build All" from the
+            "Project" menu.
+            The console should update and you can note the cross-compiler
+            you are using.
+            <note>
+                When building "Yocto Project SDK Autotools" projects, the
+                Eclipse IDE might display error messages for
+                Functions/Symbols/Types that cannot be "resolved", even when
+                the related include file is listed at the project navigator and
+                when the project is able to build.
+                For these cases only, it is recommended to add a new linked
+                folder to the appropriate sysroot.
+                Use these steps to add the linked folder:
+                <orderedlist>
+                    <listitem><para>
+                        Select the project.
+                        </para></listitem>
+                    <listitem><para>
+                        Select "Folder" from the
+                        <filename>File > New</filename> menu.
+                        </para></listitem>
+                    <listitem><para>
+                        In the "New Folder" Dialog, select "Link to alternate
+                        location (linked folder)".
+                        </para></listitem>
+                    <listitem><para>
+                        Click "Browse" to navigate to the include folder inside
+                        the same sysroot location selected in the Yocto Project
+                        configuration preferences.
+                        </para></listitem>
+                    <listitem><para>
+                        Click "OK".
+                        </para></listitem>
+                    <listitem><para>
+                        Click "Finish" to save the linked folder.
+                        </para></listitem>
+                </orderedlist>
+            </note>
+        </para>
+    </section>
+
+    <section id='mars-starting-qemu-in-user-space-nfs-mode'>
+        <title>Starting QEMU in User-Space NFS Mode</title>
+
+        <para>
+            To start the QEMU emulator from within Eclipse, follow these
+            steps:
+            <note>
+                See the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
+                chapter in the Yocto Project Development Manual
+                for more information on using QEMU.
+            </note>
+            <orderedlist>
+                <listitem><para>Expose and select "External Tools
+                    Configurations ..." from the "Run -> External Tools" menu.
+                    </para></listitem>
+                <listitem><para>
+                    Locate and select your image in the navigation panel to
+                    the left (e.g. <filename>qemu_i586-poky-linux</filename>).
+                    </para></listitem>
+                <listitem><para>
+                    Click "Run" to launch QEMU.
+                    <note>
+                        The host on which you are running QEMU must have
+                        the <filename>rpcbind</filename> utility running to be
+                        able to make RPC calls on a server on that machine.
+                        If QEMU does not invoke and you receive error messages
+                        involving <filename>rpcbind</filename>, follow the
+                        suggestions to get the service running.
+                        As an example, on a new Ubuntu 16.04 LTS installation,
+                        you must do the following in order to get QEMU to
+                        launch:
+                        <literallayout class='monospaced'>
+     $ sudo apt-get install rpcbind
+                        </literallayout>
+                        After installing <filename>rpcbind</filename>, you
+                        need to edit the
+                        <filename>/etc/init.d/rpcbind</filename> file to
+                        include the following line:
+                        <literallayout class='monospaced'>
+     OPTIONS="-i -w"
+                        </literallayout>
+                        After modifying the file, you need to start the
+                        service:
+                        <literallayout class='monospaced'>
+     $ sudo service portmap restart
+                        </literallayout>
+                    </note>
+                    </para></listitem>
+                <listitem><para>If needed, enter your host root password in
+                    the shell window at the prompt.
+                    This sets up a <filename>Tap 0</filename> connection
+                    needed for running in user-space NFS mode.
+                    </para></listitem>
+                <listitem><para>Wait for QEMU to launch.
+                    </para></listitem>
+                <listitem><para>Once QEMU launches, you can begin operating
+                    within that environment.
+                    One useful task at this point would be to determine the
+                    IP Address for the user-space NFS by using the
+                    <filename>ifconfig</filename> command.
+                    The IP address of the QEMU machine appears in the
+                    xterm window.
+                    You can use this address to help you see which particular
+                    IP address the instance of QEMU is using.
+                    </para></listitem>
+            </orderedlist>
+        </para>
+    </section>
+
+    <section id='mars-deploying-and-debugging-the-application'>
+        <title>Deploying and Debugging the Application</title>
+
+        <para>
+            Once the QEMU emulator is running the image, you can deploy
+            your application using the Eclipse IDE and then use
+            the emulator to perform debugging.
+            Follow these steps to deploy the application.
+            <note>
+                Currently, Eclipse does not support SSH port forwarding.
+                Consequently, if you need to run or debug a remote
+                application using the host display, you must create a
+                tunneling connection from outside Eclipse and keep
+                that connection alive during your work.
+                For example, in a new terminal, run the following:
+                <literallayout class='monospaced'>
+     $ ssh -XY <replaceable>user_name</replaceable>@<replaceable>remote_host_ip</replaceable>
+                </literallayout>
+                Using the above form, here is an example:
+                <literallayout class='monospaced'>
+     $ ssh -XY root@192.168.7.2
+                </literallayout>
+                After running the command, add the command to be executed
+                in Eclipse's run configuration before the application
+                as follows:
+                <literallayout class='monospaced'>
+     export DISPLAY=:10.0
+                </literallayout>
+                Be sure to not destroy the connection during your QEMU
+                session (i.e. do not
+                exit out of or close that shell).
+            </note>
+            <orderedlist>
+                <listitem><para>Select "Debug Configurations..." from the
+                    "Run" menu.</para></listitem>
+                <listitem><para>In the left area, expand
+                    <filename>C/C++Remote Application</filename>.
+                    </para></listitem>
+                <listitem><para>Locate your project and select it to bring
+                    up a new tabbed view in the Debug Configurations Dialog.
+                    </para></listitem>
+                <listitem><para>Click on the "Debugger" tab to see the
+                    cross-tool debugger you are using.
+                    Be sure to change to the debugger perspective in Eclipse.
+                    </para></listitem>
+                <listitem><para>Click on the "Main" tab.
+                    </para></listitem>
+                <listitem><para>Create a new connection to the QEMU instance
+                    by clicking on "new".</para></listitem>
+                <listitem><para>Select <filename>SSH</filename>, which means
+                    Secure Socket Shell.
+                    Optionally, you can select an TCF connection instead.
+                    </para></listitem>
+                <listitem><para>Click "Next".
+                    </para></listitem>
+                <listitem><para>Clear out the "Connection name" field and
+                    enter any name you want for the connection.
+                    </para></listitem>
+                <listitem><para>Put the IP address for the connection in
+                    the "Host" field.
+                    For QEMU, the default is <filename>192.168.7.2</filename>.
+                    However, if a previous QEMU session did not exit
+                    cleanly, the IP address increments (e.g.
+                    <filename>192.168.7.3</filename>).
+                    <note>
+                        You can find the IP address for the current QEMU
+                        session by looking in the xterm that opens when
+                        you launch QEMU.
+                    </note>
+                    </para></listitem>
+                <listitem><para>Enter <filename>root</filename>, which
+                    is the default for QEMU, for the "User" field.
+                    Be sure to leave the password field empty.
+                    </para></listitem>
+                <listitem><para>Click "Finish" to close the
+                    New Connections Dialog.
+                    </para></listitem>
+                <listitem><para>If necessary, use the drop-down menu now in the
+                    "Connection" field and pick the IP Address you entered.
+                     </para></listitem>
+                <listitem><para>Assuming you are connecting as the root user,
+                    which is the default for QEMU x86-64 SDK images provided by
+                    the Yocto Project, in the "Remote Absolute File Path for
+                    C/C++ Application" field, browse to
+                    <filename>/home/root</filename>.
+                    You could also browse to any other path you have write
+                    access to on the target such as
+                    <filename>/usr/bin</filename>.
+                    This location is where your application will be located on
+                    the QEMU system.
+                    If you fail to browse to and specify an appropriate
+                    location, QEMU will not understand what to remotely
+                    launch.
+                    Eclipse is helpful in that it auto fills your application
+                    name for you assuming you browsed to a directory.
+                    <note>
+                        If you are prompted to provide a username and to
+                        optionally set a password, be sure you provide
+                        "root" as the username and you leave the password
+                        field blank.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    Be sure you change to the "Debug" perspective in Eclipse.
+                    </para></listitem>
+                <listitem><para>Click "Debug"
+                    </para></listitem>
+                <listitem><para>Accept the debug perspective.
+                    </para></listitem>
+            </orderedlist>
+        </para>
+    </section>
+
+    <section id='mars-using-Linuxtools'>
+        <title>Using Linuxtools</title>
+
+        <para>
+            As mentioned earlier in the manual, performance tools exist
+            (Linuxtools) that enhance your development experience.
+            These tools are aids in developing and debugging applications and
+            images.
+            You can run these tools from within the Eclipse IDE through the
+            "Linuxtools" menu.
+        </para>
+
+        <para>
+            For information on how to configure and use these tools, see
+            <ulink url='http://www.eclipse.org/linuxtools/'>http://www.eclipse.org/linuxtools/</ulink>.
+        </para>
+    </section>
+</appendix>
+<!--
+vim: expandtab tw=80 ts=4
+-->
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-obtain.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-obtain.xml
index 3d4e364..3156f77 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-obtain.xml
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-obtain.xml
@@ -13,20 +13,20 @@
         You can use existing, pre-built toolchains by locating and running
         an SDK installer script that ships with the Yocto Project.
         Using this method, you select and download an architecture-specific
-        toolchain installer and then run the script to hand-install the
+        SDK installer and then run the script to hand-install the
         toolchain.
     </para>
 
     <para>
         You can find SDK installers here:
         <itemizedlist>
-            <listitem><para><emphasis>Standard SDK Installers</emphasis>
+            <listitem><para><emphasis>Standard SDK Installers:</emphasis>
                 Go to <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>
                 and find the folder that matches your host development system
                 (i.e. <filename>i686</filename> for 32-bit machines or
                 <filename>x86_64</filename> for 64-bit machines).</para>
 
-                <para>Go into that folder and download the toolchain installer
+                <para>Go into that folder and download the SDK installer
                 whose name includes the appropriate target architecture.
                 The toolchains provided by the Yocto Project are based off of
                 the <filename>core-image-sato</filename> image and contain
@@ -39,9 +39,14 @@
      poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
                 </literallayout>
                 </para></listitem>
-            <listitem><para><emphasis>Extensible SDK Installers</emphasis>
-                Installers for the extensible SDK are in
+            <listitem><para><emphasis>Extensible SDK Installers:</emphasis>
+                Installers for the extensible SDK are also located in
                 <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>.
+                These installers have the string
+                <filename>ext</filename> as part of their names:
+                <literallayout class='monospaced'>
+     poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh
+                </literallayout>
                 </para></listitem>
         </itemizedlist>
     </para>
@@ -51,8 +56,8 @@
     <title>Building an SDK Installer</title>
 
     <para>
-        As an alternative to locating and downloading a toolchain installer,
-        you can build the toolchain installer assuming you have first sourced
+        As an alternative to locating and downloading a SDK installer,
+        you can build the SDK installer assuming you have first sourced
         the environment setup script.
         See the
         "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
@@ -69,7 +74,7 @@
     </para>
 
     <para>
-        To build the toolchain installer for a standard SDK and populate
+        To build the SDK installer for a standard SDK and populate
         the SDK image, use the following command:
         <literallayout class='monospaced'>
      $ bitbake <replaceable>image</replaceable> -c populate_sdk
@@ -78,28 +83,38 @@
         <literallayout class='monospaced'>
      $ bitbake <replaceable>image</replaceable> -c populate_sdk_ext
         </literallayout>
-        These commands result in a toolchain installer that contains the sysroot
+        These commands result in a SDK installer that contains the sysroot
         that matches your target root filesystem.
     </para>
 
     <para>
-        When the <filename>bitbake</filename> command completes, the toolchain
+        When the <filename>bitbake</filename> command completes, the SDK
         installer will be in
         <filename>tmp/deploy/sdk</filename> in the Build Directory.
-        <note>
-            By default, this toolchain does not build static binaries.
-            If you want to use the toolchain to build these types of libraries,
-            you need to be sure your image has the appropriate static
-            development libraries.
-            Use the
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>
-            variable inside your <filename>local.conf</filename> file to
-            install the appropriate library packages.
-            Following is an example using <filename>glibc</filename> static
-            development libraries:
-            <literallayout class='monospaced'>
+        <note><title>Notes</title>
+            <itemizedlist>
+                <listitem><para>
+                    By default, this toolchain does not build static binaries.
+                    If you want to use the toolchain to build these types of
+                    libraries, you need to be sure your image has the
+                    appropriate static development libraries.
+                    Use the
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>
+                    variable inside your <filename>local.conf</filename> file
+                    to install the appropriate library packages.
+                    Following is an example using <filename>glibc</filename>
+                    static development libraries:
+                    <literallayout class='monospaced'>
      IMAGE_INSTALL_append = " glibc-staticdev"
-            </literallayout>
+                    </literallayout>
+                    </para></listitem>
+                <listitem><para>
+                    For additional information on building the installer,
+                    see the
+                    <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+                    wiki page.
+                    </para></listitem>
+            </itemizedlist>
         </note>
     </para>
 </section>
@@ -168,7 +183,7 @@
 
     <para>
         The following figure shows the resulting directory structure after
-        you install the Standard SDK by running the <filename>.sh</filename>
+        you install the Standard SDK by running the <filename>*.sh</filename>
         SDK installation script:
     </para>
 
@@ -191,7 +206,7 @@
         is the directory where the SDK is installed.
         By default, this directory is <filename>/opt/poky/</filename>.
         And, <replaceable>version</replaceable> represents the specific
-        snapshot of the SDK (e.g. <filename>&DISTRO;+snapshot</filename>).
+        snapshot of the SDK (e.g. <filename>&DISTRO;</filename>).
         Furthermore, <replaceable>target</replaceable> represents the target
         architecture (e.g. <filename>i586</filename>) and
         <replaceable>host</replaceable> represents the development system's
@@ -209,7 +224,7 @@
 
     <para>
         The following figure shows the resulting directory structure after
-        you install the Extensible SDK by running the <filename>.sh</filename>
+        you install the Extensible SDK by running the <filename>*.sh</filename>
         SDK installation script:
     </para>
 
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-extensible.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-extensible.xml
index 3e11fc9..1496476 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-extensible.xml
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-extensible.xml
@@ -4,63 +4,154 @@
 
 <chapter id='sdk-extensible'>
 
-<title>Using the Extensible SDK</title>
-
-<para>
-    This chapter describes the extensible SDK and how to use it.
-    The extensible SDK makes it easy to add new applications and libraries
-    to an image, modify the source for an existing component, test
-    changes on the target hardware, and ease integration into the rest of the
-    <ulink url='&YOCTO_DOCS_DEV_URL;#build-system-term'>OpenEmbedded build system</ulink>.
-</para>
-
-<para>
-    Information in this chapter covers features that are not part of the
-    standard SDK.
-    In other words, the chapter presents information unique to the
-    extensible SDK only.
-    For information on how to use the standard SDK, see the
-    "<link linkend='sdk-using-the-standard-sdk'>Using the Standard SDK</link>"
-    chapter.
-</para>
-
-<section id='sdk-setting-up-to-use-the-extensible-sdk'>
-    <title>Setting Up to Use the Extensible SDK</title>
+    <title>Using the Extensible SDK</title>
 
     <para>
-        Getting set up to use the extensible SDK is identical to getting set
-        up to use the standard SDK.
-        You still need to locate and run the installer and then run the
-        environment setup script.
+        This chapter describes the extensible SDK and how to install it.
+        Information covers the pieces of the SDK, how to install it, and
+        presents a look at using the <filename>devtool</filename>
+        functionality.
+        The extensible SDK makes it easy to add new applications and libraries
+        to an image, modify the source for an existing component, test
+        changes on the target hardware, and ease integration into the rest of
+        the
+        <ulink url='&YOCTO_DOCS_DEV_URL;#build-system-term'>OpenEmbedded build system</ulink>.
+        <note>
+            For a side-by-side comparison of main features supported for an
+            extensible SDK as compared to a standard SDK, see the
+            "<link linkend='sdk-manual-intro'>Introduction</link>"
+            section.
+        </note>
+    </para>
+
+    <para>
+        In addition to the functionality available through
+        <filename>devtool</filename>, you can alternatively make use of the
+        toolchain directly, for example from Makefile, Autotools, and
+        Eclipse-based projects.
         See the
-        "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
-        and the
-        "<link linkend='sdk-running-the-sdk-environment-setup-script'>Running the SDK Environment Setup Script</link>"
-        sections for general information.
-        The following items highlight the only differences between getting
-        set up to use the extensible SDK as compared to the standard SDK:
-        <itemizedlist>
-            <listitem><para><emphasis>Default Installation Directory:</emphasis>
-                By default, the extensible SDK installs into the
-                <filename>poky_sdk</filename> folder of your home directory.
-                As with the standard SDK, you can choose to install the
-                extensible SDK in any location when you run the installer.
-                However, unlike the standard SDK, the location you choose needs
-                to be writable for whichever users need to use the SDK,
-                since files will need to be written under that directory during
-                the normal course of operation.
-                </para></listitem>
-            <listitem><para><emphasis>Build Tools and Build System:</emphasis>
-                The extensible SDK installer performs additional tasks as
-                compared to the standard SDK installer.
-                The extensible SDK installer extracts build tools specific
-                to the SDK and the installer also prepares the internal build
-                system within the SDK.
-                Here is example output for running the extensible SDK
-                installer:
-                <literallayout class='monospaced'>
-     $ ./poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-2.1+snapshot.sh
-     Poky (Yocto Project Reference Distro) Extensible SDK installer version 2.1+snapshot
+        "<link linkend='sdk-working-projects'>Using the SDK Toolchain Directly</link>"
+        chapter for more information.
+    </para>
+
+    <section id='sdk-extensible-sdk-intro'>
+        <title>Why use the Extensible SDK and What is in It?</title>
+
+        <para>
+            The extensible SDK provides a cross-development toolchain and
+            libraries tailored to the contents of a specific image.
+            You would use the Extensible SDK if you want a toolchain experience
+            supplemented with the powerful set of <filename>devtool</filename>
+            commands tailored for the Yocto Project environment.
+        </para>
+
+        <para>
+            The installed extensible SDK consists of several files and
+            directories.
+            Basically, it contains an SDK environment setup script, some
+            configuration files, an internal build system, and the
+            <filename>devtool</filename> functionality.
+        </para>
+    </section>
+
+    <section id='sdk-setting-up-to-use-the-extensible-sdk'>
+        <title>Setting Up to Use the Extensible SDK</title>
+
+        <para>
+            The first thing you need to do is install the SDK on your host
+            development machine by running the <filename>*.sh</filename>
+            installation script.
+        </para>
+
+        <para>
+            You can download a tarball installer, which includes the
+            pre-built toolchain, the <filename>runqemu</filename>
+            script, the internal build system, <filename>devtool</filename>,
+            and support files from the appropriate directory under
+            <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>.
+            Toolchains are available for 32-bit and 64-bit x86 development
+            systems from the <filename>i686</filename> and
+            <filename>x86_64</filename> directories, respectively.
+            The toolchains the Yocto Project provides are based off the
+            <filename>core-image-sato</filename> image and contain
+            libraries appropriate for developing against that image.
+            Each type of development system supports five or more target
+            architectures.
+        </para>
+
+        <para>
+            The names of the tarball installer scripts are such that a
+            string representing the host system appears first in the
+            filename and then is immediately followed by a string
+            representing the target architecture.
+            An extensible SDK has the string "-ext" as part of the name.
+            <literallayout class='monospaced'>
+     poky-glibc-<replaceable>host_system</replaceable>-<replaceable>image_type</replaceable>-<replaceable>arch</replaceable>-toolchain-ext-<replaceable>release_version</replaceable>.sh
+
+     Where:
+         <replaceable>host_system</replaceable> is a string representing your development system:
+
+                    i686 or x86_64.
+
+         <replaceable>image_type</replaceable> is the image for which the SDK was built.
+
+         <replaceable>arch</replaceable> is a string representing the tuned target architecture:
+
+                    i586, x86_64, powerpc, mips, armv7a or armv5te
+
+         <replaceable>release_version</replaceable> is a string representing the release number of the
+                Yocto Project:
+
+                    &DISTRO;, &DISTRO;+snapshot
+            </literallayout>
+            For example, the following SDK installer is for a 64-bit
+            development host system and a i586-tuned target architecture
+            based off the SDK for <filename>core-image-sato</filename> and
+            using the current &DISTRO; snapshot:
+            <literallayout class='monospaced'>
+     poky-glibc-x86_64-core-image-sato-i586-toolchain-ext-&DISTRO;.sh
+            </literallayout>
+            <note>
+                As an alternative to downloading an SDK, you can build the
+                SDK installer.
+                For information on building the installer, see the
+                "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+                section.
+                Another helpful resource for building an installer is the
+                <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+                wiki page.
+                This wiki page focuses on development when using the Eclipse
+                IDE.
+            </note>
+        </para>
+
+        <para>
+            The SDK and toolchains are self-contained and by default are
+            installed into the <filename>poky_sdk</filename> folder in your
+            home directory.
+            You can choose to install the extensible SDK in any location when
+            you run the installer.
+            However, the location you choose needs to be writable for whichever
+            users need to use the SDK, since files will need to be written
+            under that directory during the normal course of operation.
+        </para>
+
+        <para>
+            The following command shows how to run the installer given a
+            toolchain tarball for a 64-bit x86 development host system and
+            a 64-bit x86 target architecture.
+            The example assumes the SDK installer is located in
+            <filename>~/Downloads/</filename>.
+            <note>
+                If you do not have write permissions for the directory
+                into which you are installing the SDK, the installer
+                notifies you and exits.
+                Be sure you have write permissions in the directory and
+                run the installer again.
+            </note>
+            <literallayout class='monospaced'>
+     $ ./poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-&DISTRO;.sh
+     Poky (Yocto Project Reference Distro) Extensible SDK installer version &DISTRO;
      ===================================================================================
      Enter target directory for SDK (default: ~/poky_sdk):
      You are about to install the SDK to "/home/scottrif/poky_sdk". Proceed[Y/n]? Y
@@ -72,1232 +163,1469 @@
      SDK has been successfully set up and is ready to be used.
      Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
       $ . /home/scottrif/poky_sdk/environment-setup-core2-64-poky-linux
-                </literallayout>
-                </para></listitem>
-        </itemizedlist>
-    </para>
+            </literallayout>
+        </para>
+    </section>
 
-    <para>
-        After installing the SDK, you need to run the SDK environment setup
-        script.
-        Here is the output:
-        <literallayout class='monospaced'>
+    <section id='sdk-running-the-extensible-sdk-environment-setup-script'>
+        <title>Running the Extensible SDK Environment Setup Script</title>
+
+        <para>
+            Once you have the SDK installed, you must run the SDK environment
+            setup script before you can actually use it.
+            This setup script resides in the directory you chose when you
+            installed the SDK, which is either the default
+            <filename>poky_sdk</filename> directory or the directory you
+            chose during installation.
+        </para>
+
+        <para>
+            Before running the script, be sure it is the one that matches the
+            architecture for which you are developing.
+            Environment setup scripts begin with the string
+            "<filename>environment-setup</filename>" and include as part of
+            their name the tuned target architecture.
+            As an example, the following commands set the working directory
+            to where the SDK was installed and then source the environment
+            setup script.
+            In this example, the setup script is for an IA-based
+            target machine using i586 tuning:
+            <literallayout class='monospaced'>
+     $ cd /home/scottrif/poky_sdk
      $ source environment-setup-core2-64-poky-linux
      SDK environment now set up; additionally you may now run devtool to perform development tasks.
      Run devtool --help for further details.
-        </literallayout>
-        Once you run the environment setup script, you have
-        <filename>devtool</filename> available.
-    </para>
-</section>
+            </literallayout>
+            When you run the setup script, many environment variables are
+            defined:
+            <literallayout class='monospaced'>
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKTARGETSYSROOT'><filename>SDKTARGETSYSROOT</filename></ulink> - The path to the sysroot used for cross-compilation
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-PKG_CONFIG_PATH'><filename>PKG_CONFIG_PATH</filename></ulink> - The path to the target pkg-config files
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIG_SITE'><filename>CONFIG_SITE</filename></ulink> - A GNU autoconf site file preconfigured for the target
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink> - The minimal command and arguments to run the C compiler
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXX'><filename>CXX</filename></ulink> - The minimal command and arguments to run the C++ compiler
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CPP'><filename>CPP</filename></ulink> - The minimal command and arguments to run the C preprocessor
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-AS'><filename>AS</filename></ulink> - The minimal command and arguments to run the assembler
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink> - The minimal command and arguments to run the linker
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-GDB'><filename>GDB</filename></ulink> - The minimal command and arguments to run the GNU Debugger
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-STRIP'><filename>STRIP</filename></ulink> - The minimal command and arguments to run 'strip', which strips symbols
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-RANLIB'><filename>RANLIB</filename></ulink> - The minimal command and arguments to run 'ranlib'
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJCOPY'><filename>OBJCOPY</filename></ulink> - The minimal command and arguments to run 'objcopy'
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJDUMP'><filename>OBJDUMP</filename></ulink> - The minimal command and arguments to run 'objdump'
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-AR'><filename>AR</filename></ulink> - The minimal command and arguments to run 'ar'
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-NM'><filename>NM</filename></ulink> - The minimal command and arguments to run 'nm'
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></ulink> - The toolchain binary prefix for the target tools
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CROSS_COMPILE'><filename>CROSS_COMPILE</filename></ulink> - The toolchain binary prefix for the target tools
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink> - The minimal arguments for GNU configure
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CFLAGS'><filename>CFLAGS</filename></ulink> - Suggested C flags
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXXFLAGS'><filename>CXXFLAGS</filename></ulink> - Suggested C++ flags
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-LDFLAGS'><filename>LDFLAGS</filename></ulink> - Suggested linker flags when you use CC to link
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CPPFLAGS'><filename>CPPFLAGS</filename></ulink> - Suggested preprocessor flags
+            </literallayout>
+        </para>
+    </section>
 
-<section id='using-devtool-in-your-sdk-workflow'>
-    <title>Using <filename>devtool</filename> in Your SDK Workflow</title>
-
-    <para>
-        The cornerstone of the extensible SDK is a command-line tool
-        called <filename>devtool</filename>.
-        This tool provides a number of features that help
-        you build, test and package software within the extensible SDK, and
-        optionally integrate it into an image built by the OpenEmbedded build
-        system.
-    </para>
-
-    <para>
-        The <filename>devtool</filename> command line is organized similarly
-        to
-        <ulink url='&YOCTO_DOCS_DEV_URL;#git'>Git</ulink> in that it has a
-        number of sub-commands for each function.
-        You can run <filename>devtool --help</filename> to see all the
-        commands.
-    </para>
-
-    <para>
-        Two <filename>devtool</filename> subcommands that provide
-        entry-points into development are:
-        <itemizedlist>
-            <listitem><para><emphasis><filename>devtool add</filename></emphasis>:
-                Assists in adding new software to be built.
-                </para></listitem>
-            <listitem><para><emphasis><filename>devtool modify</filename></emphasis>:
-                Sets up an environment to enable you to modify the source of
-                an existing component.
-                </para></listitem>
-        </itemizedlist>
-        As with the OpenEmbedded build system, "recipes" represent software
-        packages within <filename>devtool</filename>.
-        When you use <filename>devtool add</filename>, a recipe is
-        automatically created.
-        When you use <filename>devtool modify</filename>, the specified
-        existing recipe is used in order to determine where to get the source
-        code and how to patch it.
-        In both cases, an environment is set up so that when you build the
-        recipe a source tree that is under your control is used in order to
-        allow you to make changes to the source as desired.
-        By default, both new recipes and the source go into a "workspace"
-        directory under the SDK.
-    </para>
-
-    <para>
-        The remainder of this section presents the
-        <filename>devtool add</filename> and
-        <filename>devtool modify</filename> workflows.
-    </para>
-
-    <section id='sdk-use-devtool-to-add-an-application'>
-        <title>Use <filename>devtool add</filename> to Add an Application</title>
+    <section id='using-devtool-in-your-sdk-workflow'>
+        <title>Using <filename>devtool</filename> in Your SDK Workflow</title>
 
         <para>
-            The <filename>devtool add</filename> command generates
-            a new recipe based on existing source code.
-            This command takes advantage of the
-            <ulink url='&YOCTO_DOCS_DEV_URL;#devtool-the-workspace-layer-structure'>workspace</ulink>
-            layer that many <filename>devtool</filename> commands
-            use.
-            The command is flexible enough to allow you to extract source
-            code into both the workspace or a separate local Git repository
-            and to use existing code that does not need to be extracted.
+            The cornerstone of the extensible SDK is a command-line tool
+            called <filename>devtool</filename>.
+            This tool provides a number of features that help
+            you build, test and package software within the extensible SDK, and
+            optionally integrate it into an image built by the OpenEmbedded
+            build system.
         </para>
 
         <para>
-            Depending on your particular scenario, the arguments and options
-            you use with <filename>devtool add</filename> form different
-            combinations.
-            The following diagram shows common development flows
-            you would use with the <filename>devtool add</filename>
-            command:
+            The <filename>devtool</filename> command line is organized
+            similarly to
+            <ulink url='&YOCTO_DOCS_DEV_URL;#git'>Git</ulink> in that it has a
+            number of sub-commands for each function.
+            You can run <filename>devtool --help</filename> to see all the
+            commands.
         </para>
 
         <para>
-            <imagedata fileref="figures/sdk-devtool-add-flow.png" align="center" />
+            Three <filename>devtool</filename> subcommands that provide
+            entry-points into development are:
+            <itemizedlist>
+                <listitem><para>
+                    <emphasis><filename>devtool add</filename></emphasis>:
+                    Assists in adding new software to be built.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis><filename>devtool modify</filename></emphasis>:
+                    Sets up an environment to enable you to modify the source of
+                    an existing component.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis><filename>devtool upgrade</filename></emphasis>:
+                    Updates an existing recipe so that you can build it for
+                    an updated set of source files.
+                    </para></listitem>
+            </itemizedlist>
+            As with the OpenEmbedded build system, "recipes" represent software
+            packages within <filename>devtool</filename>.
+            When you use <filename>devtool add</filename>, a recipe is
+            automatically created.
+            When you use <filename>devtool modify</filename>, the specified
+            existing recipe is used in order to determine where to get the source
+            code and how to patch it.
+            In both cases, an environment is set up so that when you build the
+            recipe a source tree that is under your control is used in order to
+            allow you to make changes to the source as desired.
+            By default, both new recipes and the source go into a "workspace"
+            directory under the SDK.
         </para>
 
         <para>
-            <orderedlist>
-                <listitem><para><emphasis>Generating the New Recipe</emphasis>:
-                    The top part of the flow shows three scenarios by which
-                    you could use <filename>devtool add</filename> to
-                    generate a recipe based on existing source code.</para>
+            The remainder of this section presents the
+            <filename>devtool add</filename>,
+            <filename>devtool modify</filename>, and
+            <filename>devtool upgrade</filename> workflows.
+        </para>
 
-                    <para>In a shared development environment, it is
-                    typical where other developers are responsible for
-                    various areas of source code.
-                    As a developer, you are probably interested in using
-                    that source code as part of your development using
-                    the Yocto Project.
-                    All you need is access to the code, a recipe, and a
-                    controlled area in which to do your work.</para>
+        <section id='sdk-use-devtool-to-add-an-application'>
+            <title>Use <filename>devtool add</filename> to Add an Application</title>
 
-                    <para>Within the diagram, three possible scenarios
-                    feed into the <filename>devtool add</filename> workflow:
-                    <itemizedlist>
-                        <listitem><para><emphasis>Left</emphasis>:
-                            The left scenario represents a common situation
-                            where the source code does not exist locally
-                            and needs to be extracted.
-                            In this situation, you just let it get
-                            extracted to the default workspace - you do not
-                            want it in some specific location outside of the
-                            workspace.
-                            Thus, everything you need will be located in the
-                            workspace:
-                            <literallayout class='monospaced'>
+            <para>
+                The <filename>devtool add</filename> command generates
+                a new recipe based on existing source code.
+                This command takes advantage of the
+                <ulink url='&YOCTO_DOCS_DEV_URL;#devtool-the-workspace-layer-structure'>workspace</ulink>
+                layer that many <filename>devtool</filename> commands
+                use.
+                The command is flexible enough to allow you to extract source
+                code into both the workspace or a separate local Git repository
+                and to use existing code that does not need to be extracted.
+            </para>
+
+            <para>
+                Depending on your particular scenario, the arguments and options
+                you use with <filename>devtool add</filename> form different
+                combinations.
+                The following diagram shows common development flows
+                you would use with the <filename>devtool add</filename>
+                command:
+            </para>
+
+            <para>
+                <imagedata fileref="figures/sdk-devtool-add-flow.png" align="center" />
+            </para>
+
+            <para>
+                <orderedlist>
+                    <listitem><para><emphasis>Generating the New Recipe</emphasis>:
+                        The top part of the flow shows three scenarios by which
+                        you could use <filename>devtool add</filename> to
+                        generate a recipe based on existing source code.</para>
+
+                        <para>In a shared development environment, it is
+                        typical where other developers are responsible for
+                        various areas of source code.
+                        As a developer, you are probably interested in using
+                        that source code as part of your development using
+                        the Yocto Project.
+                        All you need is access to the code, a recipe, and a
+                        controlled area in which to do your work.</para>
+
+                        <para>Within the diagram, three possible scenarios
+                        feed into the <filename>devtool add</filename> workflow:
+                        <itemizedlist>
+                            <listitem><para><emphasis>Left</emphasis>:
+                                The left scenario represents a common situation
+                                where the source code does not exist locally
+                                and needs to be extracted.
+                                In this situation, you just let it get
+                                extracted to the default workspace - you do not
+                                want it in some specific location outside of the
+                                workspace.
+                                Thus, everything you need will be located in the
+                                workspace:
+                                <literallayout class='monospaced'>
      $ devtool add <replaceable>recipe fetchuri</replaceable>
-                            </literallayout>
-                            With this command, <filename>devtool</filename>
-                            creates a recipe and an append file in the
-                            workspace as well as extracts the upstream
-                            source files into a local Git repository also
-                            within the <filename>sources</filename> folder.
-                            </para></listitem>
-                        <listitem><para><emphasis>Middle</emphasis>:
-                            The middle scenario also represents a situation where
-                            the source code does not exist locally.
-                            In this case, the code is again upstream
-                            and needs to be extracted to some
-                            local area - this time outside of the default
-                            workspace.
-                            As always, if required <filename>devtool</filename> creates
-                            a Git repository locally during the extraction.
-                            Furthermore, the first positional argument
-                            <replaceable>srctree</replaceable> in this case
-                            identifies where the
-                            <filename>devtool add</filename> command
-                            will locate the extracted code outside of the
-                            workspace:
-                            <literallayout class='monospaced'>
+                                </literallayout>
+                                With this command, <filename>devtool</filename>
+                                creates a recipe and an append file in the
+                                workspace as well as extracts the upstream
+                                source files into a local Git repository also
+                                within the <filename>sources</filename> folder.
+                                </para></listitem>
+                            <listitem><para><emphasis>Middle</emphasis>:
+                                The middle scenario also represents a situation where
+                                the source code does not exist locally.
+                                In this case, the code is again upstream
+                                and needs to be extracted to some
+                                local area - this time outside of the default
+                                workspace.
+                                If required, <filename>devtool</filename>
+                                always creates
+                                a Git repository locally during the extraction.
+                                Furthermore, the first positional argument
+                                <replaceable>srctree</replaceable> in this case
+                                identifies where the
+                                <filename>devtool add</filename> command
+                                will locate the extracted code outside of the
+                                workspace:
+                                <literallayout class='monospaced'>
      $ devtool add <replaceable>recipe srctree fetchuri</replaceable>
-                            </literallayout>
-                            In summary, the source code is pulled from
-                            <replaceable>fetchuri</replaceable> and extracted
-                            into the location defined by
-                            <replaceable>srctree</replaceable> as a local
-                            Git repository.</para>
+                                </literallayout>
+                                In summary, the source code is pulled from
+                                <replaceable>fetchuri</replaceable> and extracted
+                                into the location defined by
+                                <replaceable>srctree</replaceable> as a local
+                                Git repository.</para>
 
-                            <para>Within workspace, <filename>devtool</filename>
-                            creates both the recipe and an append file
-                            for the recipe.
-                            </para></listitem>
-                        <listitem><para><emphasis>Right</emphasis>:
-                            The right scenario represents a situation
-                            where the source tree (srctree) has been
-                            previously prepared outside of the
-                            <filename>devtool</filename> workspace.
-                            </para>
+                                <para>Within workspace, <filename>devtool</filename>
+                                creates both the recipe and an append file
+                                for the recipe.
+                                </para></listitem>
+                            <listitem><para><emphasis>Right</emphasis>:
+                                The right scenario represents a situation
+                                where the source tree (srctree) has been
+                                previously prepared outside of the
+                                <filename>devtool</filename> workspace.
+                                </para>
 
-                            <para>The following command names the recipe
-                            and identifies where the existing source tree
-                            is located:
-                            <literallayout class='monospaced'>
+                                <para>The following command names the recipe
+                                and identifies where the existing source tree
+                                is located:
+                                <literallayout class='monospaced'>
      $ devtool add <replaceable>recipe srctree</replaceable>
-                            </literallayout>
-                            The command examines the source code and creates
-                            a recipe for it placing the recipe into the
-                            workspace.</para>
+                                </literallayout>
+                                The command examines the source code and creates
+                                a recipe for it placing the recipe into the
+                                workspace.</para>
 
-                            <para>Because the extracted source code already exists,
-                            <filename>devtool</filename> does not try to
-                            relocate it into the workspace - just the new
-                            the recipe is placed in the workspace.</para>
+                                <para>Because the extracted source code already exists,
+                                <filename>devtool</filename> does not try to
+                                relocate it into the workspace - just the new
+                                the recipe is placed in the workspace.</para>
 
-                            <para>Aside from a recipe folder, the command
-                            also creates an append folder and places an initial
-                            <filename>*.bbappend</filename> within.
-                            </para></listitem>
-                    </itemizedlist>
-                    </para></listitem>
-                <listitem><para><emphasis>Edit the Recipe</emphasis>:
-                    At this point, you can use <filename>devtool edit-recipe</filename>
-                    to open up the editor as defined by the
-                    <filename>$EDITOR</filename> environment variable
-                    and modify the file:
-                    <literallayout class='monospaced'>
-     $ devtool edit-recipe <replaceable>recipe</replaceable>
-                    </literallayout>
-                    From within the editor, you can make modifications to the
-                    recipe that take affect when you build it later.
-                    </para></listitem>
-                <listitem><para><emphasis>Build the Recipe or Rebuild the Image</emphasis>:
-                    At this point in the flow, the next step you
-                    take depends on what you are going to do with
-                    the new code.</para>
-                    <para>If you need to take the build output and eventually
-                    move it to the target hardware, you would use
-                    <filename>devtool build</filename>:
-                    <literallayout class='monospaced'>
-     $ devtool build <replaceable>recipe</replaceable>
-                    </literallayout></para>
-                    <para>On the other hand, if you want an image to
-                    contain the recipe's packages for immediate deployment
-                    onto a device (e.g. for testing purposes), you can use
-                    the <filename>devtool build-image</filename> command:
-                    <literallayout class='monospaced'>
-     $ devtool build-image <replaceable>image</replaceable>
-                    </literallayout>
-                    </para></listitem>
-                <listitem><para><emphasis>Deploy the Build Output</emphasis>:
-                    When you use the <filename>devtool build</filename>
-                    command to build out your recipe, you probably want to
-                    see if the resulting build output works as expected on target
-                    hardware.
-                    <note>
-                        This step assumes you have a previously built
-                        image that is already either running in QEMU or
-                        running on actual hardware.
-                        Also, it is assumed that for deployment of the image
-                        to the target, SSH is installed in the image and if
-                        the image is running on real hardware that you have
-                        network access to and from your development machine.
-                    </note>
-                    You can deploy your build output to that target hardware by
-                    using the <filename>devtool deploy-target</filename> command:
-                    <literallayout class='monospaced'>
-     $ devtool deploy-target <replaceable>recipe target</replaceable>
-                    </literallayout>
-                    The <replaceable>target</replaceable> is a live target machine
-                    running as an SSH server.</para>
-
-                    <para>You can, of course, also deploy the image you build
-                    using the <filename>devtool build-image</filename> command
-                    to actual hardware.
-                    However, <filename>devtool</filename> does not provide a
-                    specific command that allows you to do this.
-                    </para></listitem>
-                <listitem><para><emphasis>Optionally Update the Recipe With Patch Files</emphasis>:
-                    Once you are satisfied with the recipe, if you have made
-                    any changes to the source tree that you want to have
-                    applied by the recipe, you need to generate patches
-                    from those changes.
-                    You do this before moving the recipe
-                    to its final layer and cleaning up the workspace area
-                    <filename>devtool</filename> uses.
-                    This optional step is especially relevant if you are
-                    using or adding third-party software.</para>
-                    <para>To convert commits created using Git to patch files,
-                    use the <filename>devtool update-recipe</filename> command.
-                    <note>
-                        Any changes you want to turn into patches must be
-                        committed to the Git repository in the source tree.
-                    </note>
-                    <literallayout class='monospaced'>
-     $ devtool update-recipe <replaceable>recipe</replaceable>
-                    </literallayout>
-                    </para></listitem>
-                <listitem><para><emphasis>Move the Recipe to its Permanent Layer</emphasis>:
-                    Before cleaning up the workspace, you need to move the
-                    final recipe to its permanent layer.
-                    You must do this before using the
-                    <filename>devtool reset</filename> command if you want to
-                    retain the recipe.
-                    </para></listitem>
-                <listitem><para><emphasis>Reset the Recipe</emphasis>:
-                    As a final step, you can restore the state such that
-                    standard layers and the upstream source is used to build
-                    the recipe rather than data in the workspace.
-                    To reset the recipe, use the <filename>devtool reset</filename>
-                    command:
-                    <literallayout class='monospaced'>
-     $ devtool reset <replaceable>recipe</replaceable>
-                    </literallayout>
-                    </para></listitem>
-            </orderedlist>
-        </para>
-    </section>
-
-    <section id='sdk-devtool-use-devtool-modify-to-modify-the-source-of-an-existing-component'>
-        <title>Use <filename>devtool modify</filename> to Modify the Source of an Existing Component</title>
-
-        <para>
-            The <filename>devtool modify</filename> command prepares the
-            way to work on existing code that already has a recipe in
-            place.
-            The command is flexible enough to allow you to extract code,
-            specify the existing recipe, and keep track of and gather any
-            patch files from other developers that are
-            associated with the code.
-        </para>
-
-        <para>
-            Depending on your particular scenario, the arguments and options
-            you use with <filename>devtool modify</filename> form different
-            combinations.
-            The following diagram shows common development flows
-            you would use with the <filename>devtool modify</filename>
-            command:
-        </para>
-
-        <para>
-            <imagedata fileref="figures/sdk-devtool-modify-flow.png" align="center" />
-        </para>
-
-        <para>
-            <orderedlist>
-                <listitem><para><emphasis>Preparing to Modify the Code</emphasis>:
-                    The top part of the flow shows three scenarios by which
-                    you could use <filename>devtool modify</filename> to
-                    prepare to work on source files.
-                    Each scenario assumes the following:
-                    <itemizedlist>
-                        <listitem><para>The recipe exists in some layer external
-                            to the <filename>devtool</filename> workspace.
-                            </para></listitem>
-                        <listitem><para>The source files exist upstream in an
-                            un-extracted state or locally in a previously
-                            extracted state.
-                            </para></listitem>
-                    </itemizedlist>
-                    The typical situation is where another developer has
-                    created some layer for use with the Yocto Project and
-                    their recipe already resides in that layer.
-                    Furthermore, their source code is readily available
-                    either upstream or locally.
-                    <itemizedlist>
-                        <listitem><para><emphasis>Left</emphasis>:
-                            The left scenario represents a common situation
-                            where the source code does not exist locally
-                            and needs to be extracted.
-                            In this situation, the source is extracted
-                            into the default workspace location.
-                            The recipe, in this scenario, is in its own
-                            layer outside the workspace
-                            (i.e.
-                            <filename>meta-</filename><replaceable>layername</replaceable>).
-                            </para>
-
-                            <para>The following command identifies the recipe
-                            and by default extracts the source files:
-                            <literallayout class='monospaced'>
-     $ devtool modify <replaceable>recipe</replaceable>
-                            </literallayout>
-                            Once <filename>devtool</filename>locates the recipe,
-                            it uses the
-                            <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
-                            variable to locate the source code and
-                            any local patch files from other developers are
-                            located.
-                            <note>
-                                You cannot provide an URL for
-                                <replaceable>srctree</replaceable> when using the
-                                <filename>devtool modify</filename> command.
-                            </note>
-                            With this scenario, however, since no
-                            <replaceable>srctree</replaceable> argument exists, the
-                            <filename>devtool modify</filename> command by default
-                            extracts the source files to a Git structure.
-                            Furthermore, the location for the extracted source is the
-                            default area within the workspace.
-                            The result is that the command sets up both the source
-                            code and an append file within the workspace with the
-                            recipe remaining in its original location.
-                            </para></listitem>
-                        <listitem><para><emphasis>Middle</emphasis>:
-                            The middle scenario represents a situation where
-                            the source code also does not exist locally.
-                            In this case, the code is again upstream
-                            and needs to be extracted to some
-                            local area as a Git repository.
-                            The recipe, in this scenario, is again in its own
-                            layer outside the workspace.</para>
-
-                            <para>The following command tells
-                            <filename>devtool</filename> what recipe with
-                            which to work and, in this case, identifies a local
-                            area for the extracted source files that is outside
-                            of the default workspace:
-                            <literallayout class='monospaced'>
-     $ devtool modify <replaceable>recipe srctree</replaceable>
-                            </literallayout>
-                            As with all extractions, the command uses
-                            the recipe's <filename>SRC_URI</filename> to locate the
-                            source files.
-                            Once the files are located, the command by default
-                            extracts them.
-                            Providing the <replaceable>srctree</replaceable>
-                            argument instructs <filename>devtool</filename> where
-                            place the extracted source.</para>
-
-                            <para>Within workspace, <filename>devtool</filename>
-                            creates an append file for the recipe.
-                            The recipe remains in its original location but
-                            the source files are extracted to the location you
-                            provided with <replaceable>srctree</replaceable>.
-                            </para></listitem>
-                        <listitem><para><emphasis>Right</emphasis>:
-                            The right scenario represents a situation
-                            where the source tree
-                            (<replaceable>srctree</replaceable>) exists as a
-                            previously extracted Git structure outside of
-                            the <filename>devtool</filename> workspace.
-                            In this example, the recipe also exists
-                            elsewhere in its own layer.
-                            </para>
-
-                            <para>The following command tells
-                            <filename>devtool</filename> the recipe
-                            with which to work, uses the "-n" option to indicate
-                            source does not need to be extracted, and uses
-                            <replaceable>srctree</replaceable> to point to the
-                            previously extracted source files:
-                            <literallayout class='monospaced'>
-     $ devtool modify -n <replaceable>recipe srctree</replaceable>
-                            </literallayout>
-                            </para>
-
-                            <para>Once the command finishes, it creates only
-                            an append file for the recipe in the workspace.
-                            The recipe and the source code remain in their
-                            original locations.
-                            </para></listitem>
+                                <para>Aside from a recipe folder, the command
+                                also creates an append folder and places an initial
+                                <filename>*.bbappend</filename> within.
+                                </para></listitem>
                         </itemizedlist>
-                    </para></listitem>
-                <listitem><para><emphasis>Edit the Source</emphasis>:
-                    Once you have used the <filename>devtool modify</filename>
-                    command, you are free to make changes to the source
-                    files.
-                    You can use any editor you like to make and save
-                    your source code modifications.
-                    </para></listitem>
-                <listitem><para><emphasis>Build the Recipe</emphasis>:
-                    Once you have updated the source files, you can build
-                    the recipe.
-                    </para></listitem>
-                <listitem><para><emphasis>Deploy the Build Output</emphasis>:
-                    When you use the <filename>devtool build</filename>
-                    command to build out your recipe, you probably want to see
-                    if the resulting build output works as expected on target
-                    hardware.
-                    <note>
-                        This step assumes you have a previously built
-                        image that is already either running in QEMU or
-                        running on actual hardware.
-                        Also, it is assumed that for deployment of the image
-                        to the target, SSH is installed in the image and if
-                        the image is running on real hardware that you have
-                        network access to and from your development machine.
-                    </note>
-                    You can deploy your build output to that target hardware by
-                    using the <filename>devtool deploy-target</filename> command:
-                    <literallayout class='monospaced'>
+                        </para></listitem>
+                    <listitem><para><emphasis>Edit the Recipe</emphasis>:
+                        At this point, you can use <filename>devtool edit-recipe</filename>
+                        to open up the editor as defined by the
+                        <filename>$EDITOR</filename> environment variable
+                        and modify the file:
+                        <literallayout class='monospaced'>
+     $ devtool edit-recipe <replaceable>recipe</replaceable>
+                        </literallayout>
+                        From within the editor, you can make modifications to the
+                        recipe that take affect when you build it later.
+                        </para></listitem>
+                    <listitem><para><emphasis>Build the Recipe or Rebuild the Image</emphasis>:
+                        At this point in the flow, the next step you
+                        take depends on what you are going to do with
+                        the new code.</para>
+                        <para>If you need to take the build output and eventually
+                        move it to the target hardware, you would use
+                        <filename>devtool build</filename>:
+                        <literallayout class='monospaced'>
+     $ devtool build <replaceable>recipe</replaceable>
+                        </literallayout></para>
+                        <para>On the other hand, if you want an image to
+                        contain the recipe's packages for immediate deployment
+                        onto a device (e.g. for testing purposes), you can use
+                        the <filename>devtool build-image</filename> command:
+                        <literallayout class='monospaced'>
+     $ devtool build-image <replaceable>image</replaceable>
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para><emphasis>Deploy the Build Output</emphasis>:
+                        When you use the <filename>devtool build</filename>
+                        command to build out your recipe, you probably want to
+                        see if the resulting build output works as expected on target
+                        hardware.
+                        <note>
+                            This step assumes you have a previously built
+                            image that is already either running in QEMU or
+                            running on actual hardware.
+                            Also, it is assumed that for deployment of the image
+                            to the target, SSH is installed in the image and if
+                            the image is running on real hardware that you have
+                            network access to and from your development machine.
+                        </note>
+                        You can deploy your build output to that target hardware by
+                        using the <filename>devtool deploy-target</filename> command:
+                        <literallayout class='monospaced'>
      $ devtool deploy-target <replaceable>recipe target</replaceable>
-                    </literallayout>
-                    The <replaceable>target</replaceable> is a live target machine
-                    running as an SSH server.</para>
+                        </literallayout>
+                        The <replaceable>target</replaceable> is a live target machine
+                        running as an SSH server.</para>
 
-                    <para>You can, of course, also deploy the image you build
-                    using the <filename>devtool build-image</filename> command
-                    to actual hardware.
-                    However, <filename>devtool</filename> does not provide a
-                    specific command that allows you to do this.
-                    </para></listitem>
-                <listitem><para><emphasis>Optionally Create Patch Files for Your Changes</emphasis>:
-                    After you have debugged your changes, you can
-                    use <filename>devtool update-recipe</filename> to
-                    generate patch files for all the commits you have
-                    made.
-                    <note>
-                        Patch files are generated only for changes
-                        you have committed.
-                    </note>
-                    <literallayout class='monospaced'>
-     $ devtool update-recipe <replaceable>recipe</replaceable>
-                    </literallayout>
-                    By default, the
-                    <filename>devtool update-recipe</filename> command
-                    creates the patch files in a folder named the same
-                    as the recipe beneath the folder in which the recipe
-                    resides, and updates the recipe's
-                    <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
-                    statement to point to the generated patch files.
-                    <note>
-                        You can use the
-                        "--append <replaceable>LAYERDIR</replaceable>"
-                        option to cause the command to create append files
-                        in a specific layer rather than the default
-                        recipe layer.
-                    </note>
-                    </para></listitem>
-                <listitem><para><emphasis>Restore the Workspace</emphasis>:
-                    The <filename>devtool reset</filename> restores the
-                    state so that standard layers and upstream sources are
-                    used to build the recipe rather than what is in the
-                    workspace.
-                    <literallayout class='monospaced'>
-     $ devtool reset <replaceable>recipe</replaceable>
-                    </literallayout>
-                    </para></listitem>
-            </orderedlist>
-        </para>
+                        <para>You can, of course, also deploy the image you build
+                        using the <filename>devtool build-image</filename> command
+                        to actual hardware.
+                        However, <filename>devtool</filename> does not provide a
+                        specific command that allows you to do this.
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Finish Your Work With the Recipe</emphasis>:
+                        The <filename>devtool finish</filename> command creates
+                        any patches corresponding to commits in the local
+                        Git repository, moves the new recipe to a more permanent
+                        layer, and then resets the recipe so that the recipe is
+                        built normally rather than from the workspace.
+                        <literallayout class='monospaced'>
+     $ devtool finish <replaceable>recipe layer</replaceable>
+                        </literallayout>
+                        <note>
+                            Any changes you want to turn into patches must be
+                            committed to the Git repository in the source tree.
+                        </note></para>
+
+                        <para>As mentioned, the <filename>devtool finish</filename>
+                        command moves the final recipe to its permanent layer.
+                        </para>
+
+                        <para>As a final process of the
+                        <filename>devtool finish</filename> command, the state
+                        of the standard layers and the upstream source is
+                        restored so that you can build the recipe from those
+                        areas rather than the workspace.
+                        <note>
+                            You can use the <filename>devtool reset</filename>
+                            command to put things back should you decide you
+                            do not want to proceed with your work.
+                            If you do use this command, realize that the source
+                            tree is preserved.
+                        </note>
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
+
+        <section id='sdk-devtool-use-devtool-modify-to-modify-the-source-of-an-existing-component'>
+            <title>Use <filename>devtool modify</filename> to Modify the Source of an Existing Component</title>
+
+            <para>
+                The <filename>devtool modify</filename> command prepares the
+                way to work on existing code that already has a recipe in
+                place.
+                The command is flexible enough to allow you to extract code,
+                specify the existing recipe, and keep track of and gather any
+                patch files from other developers that are
+                associated with the code.
+            </para>
+
+            <para>
+                Depending on your particular scenario, the arguments and options
+                you use with <filename>devtool modify</filename> form different
+                combinations.
+                The following diagram shows common development flows
+                you would use with the <filename>devtool modify</filename>
+                command:
+            </para>
+
+            <para>
+                <imagedata fileref="figures/sdk-devtool-modify-flow.png" align="center" />
+            </para>
+
+            <para>
+                <orderedlist>
+                    <listitem><para><emphasis>Preparing to Modify the Code</emphasis>:
+                        The top part of the flow shows three scenarios by which
+                        you could use <filename>devtool modify</filename> to
+                        prepare to work on source files.
+                        Each scenario assumes the following:
+                        <itemizedlist>
+                            <listitem><para>The recipe exists in some layer external
+                                to the <filename>devtool</filename> workspace.
+                                </para></listitem>
+                            <listitem><para>The source files exist upstream in an
+                                un-extracted state or locally in a previously
+                                extracted state.
+                                </para></listitem>
+                        </itemizedlist>
+                        The typical situation is where another developer has
+                        created some layer for use with the Yocto Project and
+                        their recipe already resides in that layer.
+                        Furthermore, their source code is readily available
+                        either upstream or locally.
+                        <itemizedlist>
+                            <listitem><para><emphasis>Left</emphasis>:
+                                The left scenario represents a common situation
+                                where the source code does not exist locally
+                                and needs to be extracted.
+                                In this situation, the source is extracted
+                                into the default workspace location.
+                                The recipe, in this scenario, is in its own
+                                layer outside the workspace
+                                (i.e.
+                                <filename>meta-</filename><replaceable>layername</replaceable>).
+                                </para>
+
+                                <para>The following command identifies the recipe
+                                and by default extracts the source files:
+                                <literallayout class='monospaced'>
+     $ devtool modify <replaceable>recipe</replaceable>
+                                </literallayout>
+                                Once <filename>devtool</filename>locates the recipe,
+                                it uses the
+                                <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
+                                variable to locate the source code and
+                                any local patch files from other developers are
+                                located.
+                                <note>
+                                    You cannot provide an URL for
+                                    <replaceable>srctree</replaceable> when using the
+                                    <filename>devtool modify</filename> command.
+                                </note>
+                                With this scenario, however, since no
+                                <replaceable>srctree</replaceable> argument exists, the
+                                <filename>devtool modify</filename> command by default
+                                extracts the source files to a Git structure.
+                                Furthermore, the location for the extracted source is the
+                                default area within the workspace.
+                                The result is that the command sets up both the source
+                                code and an append file within the workspace with the
+                                recipe remaining in its original location.
+                                </para></listitem>
+                            <listitem><para><emphasis>Middle</emphasis>:
+                                The middle scenario represents a situation where
+                                the source code also does not exist locally.
+                                In this case, the code is again upstream
+                                and needs to be extracted to some
+                                local area as a Git repository.
+                                The recipe, in this scenario, is again in its own
+                                layer outside the workspace.</para>
+
+                                <para>The following command tells
+                                <filename>devtool</filename> what recipe with
+                                which to work and, in this case, identifies a local
+                                area for the extracted source files that is outside
+                                of the default workspace:
+                                <literallayout class='monospaced'>
+     $ devtool modify <replaceable>recipe srctree</replaceable>
+                                </literallayout>
+                                As with all extractions, the command uses
+                                the recipe's <filename>SRC_URI</filename> to locate the
+                                source files.
+                                Once the files are located, the command by default
+                                extracts them.
+                                Providing the <replaceable>srctree</replaceable>
+                                argument instructs <filename>devtool</filename> where
+                                place the extracted source.</para>
+
+                                <para>Within workspace, <filename>devtool</filename>
+                                creates an append file for the recipe.
+                                The recipe remains in its original location but
+                                the source files are extracted to the location you
+                                provided with <replaceable>srctree</replaceable>.
+                                </para></listitem>
+                            <listitem><para><emphasis>Right</emphasis>:
+                                The right scenario represents a situation
+                                where the source tree
+                                (<replaceable>srctree</replaceable>) exists as a
+                                previously extracted Git structure outside of
+                                the <filename>devtool</filename> workspace.
+                                In this example, the recipe also exists
+                                elsewhere in its own layer.
+                                </para>
+
+                                <para>The following command tells
+                                <filename>devtool</filename> the recipe
+                                with which to work, uses the "-n" option to indicate
+                                source does not need to be extracted, and uses
+                                <replaceable>srctree</replaceable> to point to the
+                                previously extracted source files:
+                                <literallayout class='monospaced'>
+     $ devtool modify -n <replaceable>recipe srctree</replaceable>
+                                </literallayout>
+                                </para>
+
+                                <para>Once the command finishes, it creates only
+                                an append file for the recipe in the workspace.
+                                The recipe and the source code remain in their
+                                original locations.
+                                </para></listitem>
+                            </itemizedlist>
+                        </para></listitem>
+                    <listitem><para><emphasis>Edit the Source</emphasis>:
+                        Once you have used the <filename>devtool modify</filename>
+                        command, you are free to make changes to the source
+                        files.
+                        You can use any editor you like to make and save
+                        your source code modifications.
+                        </para></listitem>
+                    <listitem><para><emphasis>Build the Recipe</emphasis>:
+                        Once you have updated the source files, you can build
+                        the recipe.
+                        </para></listitem>
+                    <listitem><para><emphasis>Deploy the Build Output</emphasis>:
+                        When you use the <filename>devtool build</filename>
+                        command to build out your recipe, you probably want to see
+                        if the resulting build output works as expected on target
+                        hardware.
+                        <note>
+                            This step assumes you have a previously built
+                            image that is already either running in QEMU or
+                            running on actual hardware.
+                            Also, it is assumed that for deployment of the image
+                            to the target, SSH is installed in the image and if
+                            the image is running on real hardware that you have
+                            network access to and from your development machine.
+                        </note>
+                        You can deploy your build output to that target hardware by
+                        using the <filename>devtool deploy-target</filename> command:
+                        <literallayout class='monospaced'>
+     $ devtool deploy-target <replaceable>recipe target</replaceable>
+                        </literallayout>
+                        The <replaceable>target</replaceable> is a live target machine
+                        running as an SSH server.</para>
+
+                        <para>You can, of course, also deploy the image you build
+                        using the <filename>devtool build-image</filename> command
+                        to actual hardware.
+                        However, <filename>devtool</filename> does not provide a
+                        specific command that allows you to do this.
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Finish Your Work With the Recipe</emphasis>:
+                        The <filename>devtool finish</filename> command creates
+                        any patches corresponding to commits in the local
+                        Git repository, updates the recipe to point to them
+                        (or creates a <filename>.bbappend</filename> file to do
+                        so, depending on the specified destination layer), and
+                        then resets the recipe so that the recipe is built normally
+                        rather than from the workspace.
+                        <literallayout class='monospaced'>
+     $ devtool finish <replaceable>recipe layer</replaceable>
+                        </literallayout>
+                        <note>
+                            Any changes you want to turn into patches must be
+                            committed to the Git repository in the source tree.
+                        </note></para>
+
+                        <para>Because there is no need to move the recipe,
+                        <filename>devtool finish</filename> either updates the
+                        original recipe in the original layer or the command
+                        creates a <filename>.bbappend</filename> in a different
+                        layer as provided by <replaceable>layer</replaceable>.
+                        </para>
+
+                        <para>As a final process of the
+                        <filename>devtool finish</filename> command, the state
+                        of the standard layers and the upstream source is
+                        restored so that you can build the recipe from those
+                        areas rather than the workspace.
+                        <note>
+                            You can use the <filename>devtool reset</filename>
+                            command to put things back should you decide you
+                            do not want to proceed with your work.
+                            If you do use this command, realize that the source
+                            tree is preserved.
+                        </note>
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
+
+        <section id='sdk-devtool-use-devtool-upgrade-to-create-a-version-of-the-recipe-that-supports-a-newer-version-of-the-software'>
+            <title>Use <filename>devtool upgrade</filename> to Create a Version of the Recipe that Supports a Newer Version of the Software</title>
+
+            <para>
+                The <filename>devtool upgrade</filename> command updates
+                an existing recipe so that you can build it for an updated
+                set of source files.
+                The command is flexible enough to allow you to specify
+                source code revision and versioning schemes, extract code into
+                or out of the <filename>devtool</filename> workspace, and
+                work with any source file forms that the fetchers support.
+            </para>
+
+            <para>
+                Depending on your particular scenario, the arguments and options
+                you use with <filename>devtool upgrade</filename> form different
+                combinations.
+                The following diagram shows a common development flow
+                you would use with the <filename>devtool modify</filename>
+                command:
+            </para>
+
+            <para>
+                <imagedata fileref="figures/sdk-devtool-upgrade-flow.png" align="center" />
+            </para>
+
+            <para>
+                <orderedlist>
+                    <listitem><para><emphasis>Initiate the Upgrade</emphasis>:
+                        The top part of the flow shows a typical scenario by which
+                        you could use <filename>devtool upgrade</filename>.
+                        The following conditions exist:
+                        <itemizedlist>
+                            <listitem><para>The recipe exists in some layer external
+                                to the <filename>devtool</filename> workspace.
+                                </para></listitem>
+                            <listitem><para>The source files for the new release
+                                exist adjacent to the same location pointed to by
+                                <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
+                                in the recipe (e.g. a tarball with the new version
+                                number in the name, or as a different revision in
+                                the upstream Git repository).
+                                </para></listitem>
+                        </itemizedlist>
+                        A common situation is where third-party software has
+                        undergone a revision so that it has been upgraded.
+                        The recipe you have access to is likely in your own layer.
+                        Thus, you need to upgrade the recipe to use the
+                        newer version of the software:
+                        <literallayout class='monospaced'>
+     $ devtool upgrade -V <replaceable>version recipe</replaceable>
+                        </literallayout>
+                        By default, the <filename>devtool upgrade</filename> command
+                        extracts source code into the <filename>sources</filename>
+                        directory in the workspace.
+                        If you want the code extracted to any other location, you
+                        need to provide the <replaceable>srctree</replaceable>
+                        positional argument with the command as follows:
+                        <literallayout class='monospaced'>
+     $ devtool upgrade -V <replaceable>version recipe srctree</replaceable>
+                        </literallayout>
+                        Also, in this example, the "-V" option is used to specify
+                        the new version.
+                        If the source files pointed to by the
+                        <filename>SRC_URI</filename> statement in the recipe are
+                        in a Git repository, you must provide the "-S" option and
+                        specify a revision for the software.</para>
+
+                        <para>Once <filename>devtool</filename> locates the recipe,
+                        it uses the <filename>SRC_URI</filename> variable to locate
+                        the source code and any local patch files from other
+                        developers are located.
+                        The result is that the command sets up the source
+                        code, the new version of the recipe, and an append file
+                        all within the workspace.
+                        </para></listitem>
+                    <listitem><para><emphasis>Resolve any Conflicts created by the Upgrade</emphasis>:
+                        At this point, there could be some conflicts due to the
+                        software being upgraded to a new version.
+                        This would occur if your recipe specifies some patch files in
+                        <filename>SRC_URI</filename> that conflict with changes
+                        made in the new version of the software.
+                        If this is the case, you need to resolve the conflicts
+                        by editing the source and following the normal
+                        <filename>git rebase</filename> conflict resolution
+                        process.</para>
+                        <para>Before moving onto the next step, be sure to resolve any
+                        such conflicts created through use of a newer or different
+                        version of the software.
+                        </para></listitem>
+                    <listitem><para><emphasis>Build the Recipe</emphasis>:
+                        Once you have your recipe in order, you can build it.
+                        You can either use <filename>devtool build</filename> or
+                        <filename>bitbake</filename>.
+                        Either method produces build output that is stored
+                        in
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>.
+                        </para></listitem>
+                    <listitem><para><emphasis>Deploy the Build Output</emphasis>:
+                        When you use the <filename>devtool build</filename>
+                        command or <filename>bitbake</filename> to build out your
+                        recipe, you probably want to see if the resulting build
+                        output works as expected on target hardware.
+                        <note>
+                            This step assumes you have a previously built
+                            image that is already either running in QEMU or
+                            running on actual hardware.
+                            Also, it is assumed that for deployment of the image
+                            to the target, SSH is installed in the image and if
+                            the image is running on real hardware that you have
+                            network access to and from your development machine.
+                        </note>
+                        You can deploy your build output to that target hardware by
+                        using the <filename>devtool deploy-target</filename> command:
+                        <literallayout class='monospaced'>
+     $ devtool deploy-target <replaceable>recipe target</replaceable>
+                        </literallayout>
+                        The <replaceable>target</replaceable> is a live target machine
+                        running as an SSH server.</para>
+                        <para>You can, of course, also deploy the image you build
+                        using the <filename>devtool build-image</filename> command
+                        to actual hardware.
+                        However, <filename>devtool</filename> does not provide a
+                        specific command that allows you to do this.
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Finish Your Work With the Recipe</emphasis>:
+                        The <filename>devtool finish</filename> command creates
+                        any patches corresponding to commits in the local
+                        Git repository, moves the new recipe to a more permanent
+                        layer, and then resets the recipe so that the recipe is
+                        built normally rather than from the workspace.
+                        If you specify a destination layer that is the same as
+                        the original source, then the old version of the
+                        recipe and associated files will be removed prior to
+                        adding the new version.
+                        <literallayout class='monospaced'>
+     $ devtool finish <replaceable>recipe layer</replaceable>
+                        </literallayout>
+                        <note>
+                            Any changes you want to turn into patches must be
+                            committed to the Git repository in the source tree.
+                        </note></para>
+                        <para>As a final process of the
+                        <filename>devtool finish</filename> command, the state
+                        of the standard layers and the upstream source is
+                        restored so that you can build the recipe from those
+                        areas rather than the workspace.
+                        <note>
+                            You can use the <filename>devtool reset</filename>
+                            command to put things back should you decide you
+                            do not want to proceed with your work.
+                            If you do use this command, realize that the source
+                            tree is preserved.
+                        </note>
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
     </section>
-</section>
 
-<section id='sdk-a-closer-look-at-devtool-add'>
-    <title>A Closer Look at <filename>devtool add</filename></title>
-
-    <para>
-        The <filename>devtool add</filename> command automatically creates a
-        recipe based on the source tree with which you provide it.
-        Currently, the command has support for the following:
-        <itemizedlist>
-            <listitem><para>
-                Autotools (<filename>autoconf</filename> and
-                <filename>automake</filename>)
-                </para></listitem>
-            <listitem><para>
-                CMake
-                </para></listitem>
-            <listitem><para>
-                Scons
-                </para></listitem>
-            <listitem><para>
-                <filename>qmake</filename>
-                </para></listitem>
-            <listitem><para>
-                Plain <filename>Makefile</filename>
-                </para></listitem>
-            <listitem><para>
-                Out-of-tree kernel module
-                </para></listitem>
-            <listitem><para>
-                Binary package (i.e. "-b" option)
-                </para></listitem>
-            <listitem><para>
-                Node.js module through
-                <filename>npm</filename>
-                </para></listitem>
-            <listitem><para>
-                Python modules that use <filename>setuptools</filename>
-                or <filename>distutils</filename>
-                </para></listitem>
-        </itemizedlist>
-    </para>
-
-    <para>
-        Apart from binary packages, the determination of how a source tree
-        should be treated is automatic based on the files present within
-        that source tree.
-        For example, if a <filename>CMakeLists.txt</filename> file is found,
-        then the source tree is assumed to be using
-        CMake and is treated accordingly.
-        <note>
-            In most cases, you need to edit the automatically generated
-            recipe in order to make it build properly.
-            Typically, you would go through several edit and build cycles
-            until you can build the recipe.
-            Once the recipe can be built, you could use possible further
-            iterations to test the recipe on the target device.
-        </note>
-    </para>
-
-    <para>
-        The remainder of this section covers specifics regarding how parts
-        of the recipe are generated.
-    </para>
-
-    <section id='sdk-name-and-version'>
-        <title>Name and Version</title>
+    <section id='sdk-a-closer-look-at-devtool-add'>
+        <title>A Closer Look at <filename>devtool add</filename></title>
 
         <para>
-            If you do not specify a name and version on the command
-            line, <filename>devtool add</filename> attempts to determine
-            the name and version of the software being built from
-            various metadata within the source tree.
-            Furthermore, the command sets the name of the created recipe
-            file accordingly.
-            If the name or version cannot be determined, the
-            <filename>devtool add</filename> command prints an error and
-            you must re-run the command with both the name and version
-            or just the name or version specified.
+            The <filename>devtool add</filename> command automatically creates a
+            recipe based on the source tree with which you provide it.
+            Currently, the command has support for the following:
+            <itemizedlist>
+                <listitem><para>
+                    Autotools (<filename>autoconf</filename> and
+                    <filename>automake</filename>)
+                    </para></listitem>
+                <listitem><para>
+                    CMake
+                    </para></listitem>
+                <listitem><para>
+                    Scons
+                    </para></listitem>
+                <listitem><para>
+                    <filename>qmake</filename>
+                    </para></listitem>
+                <listitem><para>
+                    Plain <filename>Makefile</filename>
+                    </para></listitem>
+                <listitem><para>
+                    Out-of-tree kernel module
+                    </para></listitem>
+                <listitem><para>
+                    Binary package (i.e. "-b" option)
+                    </para></listitem>
+                <listitem><para>
+                    Node.js module
+                    </para></listitem>
+                <listitem><para>
+                    Python modules that use <filename>setuptools</filename>
+                    or <filename>distutils</filename>
+                    </para></listitem>
+            </itemizedlist>
         </para>
 
         <para>
-            Sometimes the name or version determined from the source tree
-            might be incorrect.
-            For such a case, you must reset the recipe:
-            <literallayout class='monospaced'>
+            Apart from binary packages, the determination of how a source tree
+            should be treated is automatic based on the files present within
+            that source tree.
+            For example, if a <filename>CMakeLists.txt</filename> file is found,
+            then the source tree is assumed to be using
+            CMake and is treated accordingly.
+            <note>
+                In most cases, you need to edit the automatically generated
+                recipe in order to make it build properly.
+                Typically, you would go through several edit and build cycles
+                until you can build the recipe.
+                Once the recipe can be built, you could use possible further
+                iterations to test the recipe on the target device.
+            </note>
+        </para>
+
+        <para>
+            The remainder of this section covers specifics regarding how parts
+            of the recipe are generated.
+        </para>
+
+        <section id='sdk-name-and-version'>
+            <title>Name and Version</title>
+
+            <para>
+                If you do not specify a name and version on the command
+                line, <filename>devtool add</filename> attempts to determine
+                the name and version of the software being built from
+                various metadata within the source tree.
+                Furthermore, the command sets the name of the created recipe
+                file accordingly.
+                If the name or version cannot be determined, the
+                <filename>devtool add</filename> command prints an error and
+                you must re-run the command with both the name and version
+                or just the name or version specified.
+            </para>
+
+            <para>
+                Sometimes the name or version determined from the source tree
+                might be incorrect.
+                For such a case, you must reset the recipe:
+                <literallayout class='monospaced'>
      $ devtool reset -n <replaceable>recipename</replaceable>
-            </literallayout>
-            After running the <filename>devtool reset</filename> command,
-            you need to run <filename>devtool add</filename> again and
-            provide the name or the version.
-        </para>
-    </section>
+                </literallayout>
+                After running the <filename>devtool reset</filename> command,
+                you need to run <filename>devtool add</filename> again and
+                provide the name or the version.
+            </para>
+        </section>
 
-    <section id='sdk-dependency-detection-and-mapping'>
-        <title>Dependency Detection and Mapping</title>
+        <section id='sdk-dependency-detection-and-mapping'>
+            <title>Dependency Detection and Mapping</title>
 
-        <para>
-            The <filename>devtool add</filename> command attempts to
-            detect build-time dependencies and map them to other recipes
-            in the system.
-            During this mapping, the command fills in the names of those
-            recipes in the
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink>
-            value within the recipe.
-            If a dependency cannot be mapped, then a comment is placed in
-            the recipe indicating such.
-            The inability to map a dependency might be caused because the
-            naming is not recognized or because the dependency simply is
-            not available.
-            For cases where the dependency is not available, you must use
-            the <filename>devtool add</filename> command to add an
-            additional recipe to satisfy the dependency and then come
-            back to the first recipe and add its name to
-            <filename>DEPENDS</filename>.
-        </para>
+            <para>
+                The <filename>devtool add</filename> command attempts to
+                detect build-time dependencies and map them to other recipes
+                in the system.
+                During this mapping, the command fills in the names of those
+                recipes in the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink>
+                value within the recipe.
+                If a dependency cannot be mapped, then a comment is placed in
+                the recipe indicating such.
+                The inability to map a dependency might be caused because the
+                naming is not recognized or because the dependency simply is
+                not available.
+                For cases where the dependency is not available, you must use
+                the <filename>devtool add</filename> command to add an
+                additional recipe to satisfy the dependency and then come
+                back to the first recipe and add its name to
+                <filename>DEPENDS</filename>.
+            </para>
 
-        <para>
-            If you need to add runtime dependencies, you can do so by
-            adding the following to your recipe:
-            <literallayout class='monospaced'>
+            <para>
+                If you need to add runtime dependencies, you can do so by
+                adding the following to your recipe:
+                <literallayout class='monospaced'>
      RDEPENDS_${PN} += "dependency1 dependency2 ..."
-            </literallayout>
-            <note>
-                The <filename>devtool add</filename> command often cannot
-                distinguish between mandatory and optional dependencies.
-                Consequently, some of the detected dependencies might
-                in fact be optional.
-                When in doubt, consult the documentation or the configure
-                script for the software the recipe is building for further
-                details.
-                In some cases, you might find you can substitute the
-                dependency for an option to disable the associated
-                functionality passed to the configure script.
-            </note>
-        </para>
-    </section>
+                </literallayout>
+                <note>
+                    The <filename>devtool add</filename> command often cannot
+                    distinguish between mandatory and optional dependencies.
+                    Consequently, some of the detected dependencies might
+                    in fact be optional.
+                    When in doubt, consult the documentation or the configure
+                    script for the software the recipe is building for further
+                    details.
+                    In some cases, you might find you can substitute the
+                    dependency for an option to disable the associated
+                    functionality passed to the configure script.
+                </note>
+            </para>
+        </section>
 
-    <section id='sdk-license-detection'>
-        <title>License Detection</title>
+        <section id='sdk-license-detection'>
+            <title>License Detection</title>
 
-        <para>
-            The <filename>devtool add</filename> command attempts to
-            determine if the software you are adding is able to be
-            distributed under a common open-source license and sets the
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE'><filename>LICENSE</filename></ulink>
-            value accordingly.
-            You should double-check this value against the documentation
-            or source files for the software you are building and update
-            that <filename>LICENSE</filename> value if necessary.
-        </para>
+            <para>
+                The <filename>devtool add</filename> command attempts to
+                determine if the software you are adding is able to be
+                distributed under a common open-source license and sets the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE'><filename>LICENSE</filename></ulink>
+                value accordingly.
+                You should double-check this value against the documentation
+                or source files for the software you are building and update
+                that <filename>LICENSE</filename> value if necessary.
+            </para>
 
-        <para>
-            The <filename>devtool add</filename> command also sets the
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></ulink>
-            value to point to all files that appear to be license-related.
-            However, license statements often appear in comments at the top
-            of source files or within documentation.
-            Consequently, you might need to amend the
-            <filename>LIC_FILES_CHKSUM</filename> variable to point to one
-            or more of those comments if present.
-            Setting <filename>LIC_FILES_CHKSUM</filename> is particularly
-            important for third-party software.
-            The mechanism attempts to ensure correct licensing should you
-            upgrade the recipe to a newer upstream version in future.
-            Any change in licensing is detected and you receive an error
-            prompting you to check the license text again.
-        </para>
+            <para>
+                The <filename>devtool add</filename> command also sets the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></ulink>
+                value to point to all files that appear to be license-related.
+                However, license statements often appear in comments at the top
+                of source files or within documentation.
+                Consequently, you might need to amend the
+                <filename>LIC_FILES_CHKSUM</filename> variable to point to one
+                or more of those comments if present.
+                Setting <filename>LIC_FILES_CHKSUM</filename> is particularly
+                important for third-party software.
+                The mechanism attempts to ensure correct licensing should you
+                upgrade the recipe to a newer upstream version in future.
+                Any change in licensing is detected and you receive an error
+                prompting you to check the license text again.
+            </para>
 
-        <para>
-            If the <filename>devtool add</filename> command cannot
-            determine licensing information, the
-            <filename>LICENSE</filename> value is set to "CLOSED" and the
-            <filename>LIC_FILES_CHKSUM</filename> vaule remains unset.
-            This behavior allows you to continue with development but is
-            unlikely to be correct in all cases.
-            Consequently, you should check the documentation or source
-            files for the software you are building to determine the actual
-            license.
-        </para>
-    </section>
+            <para>
+                If the <filename>devtool add</filename> command cannot
+                determine licensing information, the
+                <filename>LICENSE</filename> value is set to "CLOSED" and the
+                <filename>LIC_FILES_CHKSUM</filename> value remains unset.
+                This behavior allows you to continue with development but is
+                unlikely to be correct in all cases.
+                Consequently, you should check the documentation or source
+                files for the software you are building to determine the actual
+                license.
+            </para>
+        </section>
 
-    <section id='sdk-adding-makefile-only-software'>
-        <title>Adding Makefile-Only Software</title>
+        <section id='sdk-adding-makefile-only-software'>
+            <title>Adding Makefile-Only Software</title>
 
-        <para>
-            The use of <filename>make</filename> by itself is very common
-            in both proprietary and open source software.
-            Unfortunately, Makefiles are often not written with
-            cross-compilation in mind.
-            Thus, <filename>devtool add</filename> often cannot do very
-            much to ensure that these Makefiles build correctly.
-            It is very common, for example, to explicitly call
-            <filename>gcc</filename> instead of using the
-            <filename>CC</filename> variable.
-            Usually, in a cross-compilation environment,
-            <filename>gcc</filename> is the compiler for the build host
-            and the cross-compiler is named something similar to
-            <filename>arm-poky-linux-gnueabi-gcc</filename> and might
-            require some arguments (e.g. to point to the associated sysroot
-            for the target machine).
-        </para>
+            <para>
+                The use of <filename>make</filename> by itself is very common
+                in both proprietary and open source software.
+                Unfortunately, Makefiles are often not written with
+                cross-compilation in mind.
+                Thus, <filename>devtool add</filename> often cannot do very
+                much to ensure that these Makefiles build correctly.
+                It is very common, for example, to explicitly call
+                <filename>gcc</filename> instead of using the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink>
+                variable.
+                Usually, in a cross-compilation environment,
+                <filename>gcc</filename> is the compiler for the build host
+                and the cross-compiler is named something similar to
+                <filename>arm-poky-linux-gnueabi-gcc</filename> and might
+                require some arguments (e.g. to point to the associated sysroot
+                for the target machine).
+            </para>
 
-        <para>
-            When writing a recipe for Makefile-only software, keep the
-            following in mind:
-            <itemizedlist>
-                <listitem><para>
-                    You probably need to patch the Makefile to use
-                    variables instead of hardcoding tools within the
-                    toolchain such as <filename>gcc</filename> and
-                    <filename>g++</filename>.
-                    </para></listitem>
-                <listitem><para>
-                    The environment in which <filename>make</filename> runs
-                    is set up with various standard variables for
-                    compilation (e.g. <filename>CC</filename>,
-                    <filename>CXX</filename>, and so forth) in a similar
-                    manner to the environment set up by the SDK's
-                    environment setup script.
-                    One easy way to see these variables is to run the
-                    <filename>devtool build</filename> command on the
-                    recipe and then look in
-                    <filename>oe-logs/run.do_compile</filename>.
-                    Towards the top of this file you will see a list of
-                    environment variables that are being set.
-                    You can take advantage of these variables within the
-                    Makefile.
-                    </para></listitem>
-                <listitem><para>
-                    If the Makefile sets a default for a variable using "=",
-                    that default overrides the value set in the environment,
-                    which is usually not desirable.
-                    In this situation, you can either patch the Makefile
-                    so it sets the default using the "?=" operator, or
-                    you can alternatively force the value on the
-                    <filename>make</filename> command line.
-                    To force the value on the command line, add the
-                    variable setting to
-                    <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></ulink>
-                    within the recipe as follows:
-                    <literallayout class='monospaced'>
-     EXTRA_OEMAKE += "'CC=${CC}' 'CXX=${CXX}'"
-                    </literallayout>
-                    In the above example, single quotes are used around the
-                    variable settings as the values are likely to contain
-                    spaces because required default options are passed to
-                    the compiler.
-                    </para></listitem>
-                <listitem><para>
-                    Hardcoding paths inside Makefiles is often problematic
-                    in a cross-compilation environment.
-                    This is particularly true because those hardcoded paths
-                    often point to locations on the build host and thus
-                    will either be read-only or will introduce
-                    contamination into the cross-compilation by virtue of
-                    being specific to the build host rather than the target.
-                    Patching the Makefile to use prefix variables or other
-                    path variables is usually the way to handle this.
-                    </para></listitem>
-                <listitem><para>
-                    Sometimes a Makefile runs target-specific commands such
-                    as <filename>ldconfig</filename>.
-                    For such cases, you might be able to simply apply
-                    patches that remove these commands from the Makefile.
-                    </para></listitem>
-            </itemizedlist>
-        </para>
-    </section>
-
-    <section id='sdk-adding-native-tools'>
-        <title>Adding Native Tools</title>
-
-        <para>
-            Often, you need to build additional tools that run on the
-            build host system as opposed to the target.
-            You should indicate this using one of the following methods
-            when you run <filename>devtool add</filename>:
-            <itemizedlist>
-                <listitem><para>
-                    Specify the name of the recipe such that it ends
-                    with "-native".
-                    Specifying the name like this produces a recipe that
-                    only builds for the build host.
-                    </para></listitem>
-                <listitem><para>
-                    Specify the "&dash;&dash;also-native" option with the
-                    <filename>devtool add</filename> command.
-                    Specifying this option creates a recipe file that still
-                    builds for the target but also creates a variant with
-                    a "-native" suffix that builds for the build host.
-                    </para></listitem>
-            </itemizedlist>
-            <note>
-                If you need to add a tool that is shipped as part of a
-                source tree that builds code for the target, you can
-                typically accomplish this by building the native and target
-                parts separately rather than within the same compilation
-                process.
-                Realize though that with the "&dash;&dash;also-native" option, you
-                can add the tool using just one recipe file.
-            </note>
-        </para>
-    </section>
-
-    <section id='sdk-adding-node-js-modules'>
-        <title>Adding Node.js Modules</title>
-
-        <para>
-            You can use the <filename>devtool add</filename> command in the
-            following form to add Node.js modules:
-            <literallayout class='monospaced'>
-     $ devtool add "npm://registry.npmjs.org;name=forever;version=0.15.1"
-            </literallayout>
-            The name and version parameters are mandatory.
-            Lockdown and shrinkwrap files are generated and pointed to by
-            the recipe in order to freeze the version that is fetched for
-            the dependencies according to the first time.
-            This also saves checksums that are verified on future fetches.
-            Together, these behaviors ensure the reproducibility and
-            integrity of the build.
-            <note><title>Notes</title>
+            <para>
+                When writing a recipe for Makefile-only software, keep the
+                following in mind:
                 <itemizedlist>
                     <listitem><para>
-                        You must use quotes around the URL.
-                        The <filename>devtool add</filename> does not require
-                        the quotes, but the shell considers ";" as a splitter
-                        between multiple commands.
-                        Thus, without the quotes,
-                        <filename>devtool add</filename> does not receive the
-                        other parts, which results in several "command not
-                        found" errors.
+                        You probably need to patch the Makefile to use
+                        variables instead of hardcoding tools within the
+                        toolchain such as <filename>gcc</filename> and
+                        <filename>g++</filename>.
                         </para></listitem>
                     <listitem><para>
-                        In order to support adding
-                        Node.js modules, a
-                        <filename>nodejs</filename> recipe must be part of your
-                        SDK in order to provide Node.js
-                        itself.
+                        The environment in which <filename>make</filename> runs
+                        is set up with various standard variables for
+                        compilation (e.g. <filename>CC</filename>,
+                        <filename>CXX</filename>, and so forth) in a similar
+                        manner to the environment set up by the SDK's
+                        environment setup script.
+                        One easy way to see these variables is to run the
+                        <filename>devtool build</filename> command on the
+                        recipe and then look in
+                        <filename>oe-logs/run.do_compile</filename>.
+                        Towards the top of this file you will see a list of
+                        environment variables that are being set.
+                        You can take advantage of these variables within the
+                        Makefile.
+                        </para></listitem>
+                    <listitem><para>
+                        If the Makefile sets a default for a variable using "=",
+                        that default overrides the value set in the environment,
+                        which is usually not desirable.
+                        In this situation, you can either patch the Makefile
+                        so it sets the default using the "?=" operator, or
+                        you can alternatively force the value on the
+                        <filename>make</filename> command line.
+                        To force the value on the command line, add the
+                        variable setting to
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></ulink>
+                        or
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></ulink>
+                        within the recipe.
+                        Here is an example using <filename>EXTRA_OEMAKE</filename>:
+                        <literallayout class='monospaced'>
+     EXTRA_OEMAKE += "'CC=${CC}' 'CXX=${CXX}'"
+                        </literallayout>
+                        In the above example, single quotes are used around the
+                        variable settings as the values are likely to contain
+                        spaces because required default options are passed to
+                        the compiler.
+                        </para></listitem>
+                    <listitem><para>
+                        Hardcoding paths inside Makefiles is often problematic
+                        in a cross-compilation environment.
+                        This is particularly true because those hardcoded paths
+                        often point to locations on the build host and thus
+                        will either be read-only or will introduce
+                        contamination into the cross-compilation by virtue of
+                        being specific to the build host rather than the target.
+                        Patching the Makefile to use prefix variables or other
+                        path variables is usually the way to handle this.
+                        </para></listitem>
+                    <listitem><para>
+                        Sometimes a Makefile runs target-specific commands such
+                        as <filename>ldconfig</filename>.
+                        For such cases, you might be able to simply apply
+                        patches that remove these commands from the Makefile.
                         </para></listitem>
                 </itemizedlist>
+            </para>
+        </section>
+
+        <section id='sdk-adding-native-tools'>
+            <title>Adding Native Tools</title>
+
+            <para>
+                Often, you need to build additional tools that run on the
+                build host system as opposed to the target.
+                You should indicate this using one of the following methods
+                when you run <filename>devtool add</filename>:
+                <itemizedlist>
+                    <listitem><para>
+                        Specify the name of the recipe such that it ends
+                        with "-native".
+                        Specifying the name like this produces a recipe that
+                        only builds for the build host.
+                        </para></listitem>
+                    <listitem><para>
+                        Specify the "&dash;&dash;also-native" option with the
+                        <filename>devtool add</filename> command.
+                        Specifying this option creates a recipe file that still
+                        builds for the target but also creates a variant with
+                        a "-native" suffix that builds for the build host.
+                        </para></listitem>
+                </itemizedlist>
+                <note>
+                    If you need to add a tool that is shipped as part of a
+                    source tree that builds code for the target, you can
+                    typically accomplish this by building the native and target
+                    parts separately rather than within the same compilation
+                    process.
+                    Realize though that with the "&dash;&dash;also-native" option, you
+                    can add the tool using just one recipe file.
+                </note>
+            </para>
+        </section>
+
+        <section id='sdk-adding-node-js-modules'>
+            <title>Adding Node.js Modules</title>
+
+            <para>
+                You can use the <filename>devtool add</filename> command two
+                different ways to add Node.js modules: 1) Through
+                <filename>npm</filename> and, 2) from a repository or local
+                source.
+            </para>
+
+            <para>
+                Use the following form to add Node.js modules through
+                <filename>npm</filename>:
+                <literallayout class='monospaced'>
+     $ devtool add "npm://registry.npmjs.org;name=forever;version=0.15.1"
+                </literallayout>
+                The name and version parameters are mandatory.
+                Lockdown and shrinkwrap files are generated and pointed to by
+                the recipe in order to freeze the version that is fetched for
+                the dependencies according to the first time.
+                This also saves checksums that are verified on future fetches.
+                Together, these behaviors ensure the reproducibility and
+                integrity of the build.
+                <note><title>Notes</title>
+                    <itemizedlist>
+                        <listitem><para>
+                            You must use quotes around the URL.
+                            The <filename>devtool add</filename> does not require
+                            the quotes, but the shell considers ";" as a splitter
+                            between multiple commands.
+                            Thus, without the quotes,
+                            <filename>devtool add</filename> does not receive the
+                            other parts, which results in several "command not
+                            found" errors.
+                            </para></listitem>
+                        <listitem><para>
+                            In order to support adding
+                            Node.js modules, a
+                            <filename>nodejs</filename> recipe must be part of your
+                            SDK in order to provide Node.js
+                            itself.
+                            </para></listitem>
+                    </itemizedlist>
+                </note>
+            </para>
+
+            <para>
+                As mentioned earlier, you can also add Node.js modules
+                directly from a repository or local source tree.
+                To add modules this way, use <filename>devtool add</filename> in
+                the following form:
+                <literallayout class='monospaced'>
+     $ devtool add https://github.com/diversario/node-ssdp
+                </literallayout>
+                In this example, <filename>devtool</filename> fetches the specified
+                Git repository, detects that the code is Node.js code, fetches
+                dependencies using <filename>npm</filename>, and sets
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
+                accordingly.
+            </para>
+        </section>
+    </section>
+
+    <section id='sdk-working-with-recipes'>
+        <title>Working With Recipes</title>
+
+        <para>
+            When building a recipe with <filename>devtool build</filename> the
+            typical build progression is as follows:
+            <orderedlist>
+                <listitem><para>
+                    Fetch the source
+                    </para></listitem>
+                <listitem><para>
+                    Unpack the source
+                    </para></listitem>
+                <listitem><para>
+                    Configure the source
+                    </para></listitem>
+                <listitem><para>
+                    Compiling the source
+                    </para></listitem>
+                <listitem><para>
+                    Install the build output
+                    </para></listitem>
+                <listitem><para>
+                    Package the installed output
+                    </para></listitem>
+            </orderedlist>
+            For recipes in the workspace, fetching and unpacking is disabled
+            as the source tree has already been prepared and is persistent.
+            Each of these build steps is defined as a function, usually with a
+            "do_" prefix.
+            These functions are typically shell scripts but can instead be written
+            in Python.
+        </para>
+
+        <para>
+            If you look at the contents of a recipe, you will see that the
+            recipe does not include complete instructions for building the
+            software.
+            Instead, common functionality is encapsulated in classes inherited
+            with the <filename>inherit</filename> directive, leaving the recipe
+            to describe just the things that are specific to the software to be
+            built.
+            A <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-base'><filename>base</filename></ulink>
+            class exists that is implicitly inherited by all recipes and provides
+            the functionality that most typical recipes need.
+        </para>
+
+        <para>
+            The remainder of this section presents information useful when
+            working with recipes.
+        </para>
+
+        <section id='sdk-finding-logs-and-work-files'>
+            <title>Finding Logs and Work Files</title>
+
+            <para>
+                When you are debugging a recipe that you previously created using
+                <filename>devtool add</filename> or whose source you are modifying
+                by using the <filename>devtool modify</filename> command, after
+                the first run of <filename>devtool build</filename>, you will
+                find some symbolic links created within the source tree:
+                <filename>oe-logs</filename>, which points to the directory in
+                which log files and run scripts for each build step are created
+                and <filename>oe-workdir</filename>, which points to the temporary
+                work area for the recipe.
+                You can use these links to get more information on what is
+                happening at each build step.
+            </para>
+
+            <para>
+                These locations under <filename>oe-workdir</filename> are
+                particularly useful:
+                <itemizedlist>
+                    <listitem><para><filename>image/</filename>:
+                        Contains all of the files installed at the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+                        stage.
+                        Within a recipe, this directory is referred to by the
+                        expression
+                        <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>.
+                        </para></listitem>
+                    <listitem><para><filename>sysroot-destdir/</filename>:
+                        Contains a subset of files installed within
+                        <filename>do_install</filename> that have been put into the
+                        shared sysroot.
+                        For more information, see the
+                        "<link linkend='sdk-sharing-files-between-recipes'>Sharing Files Between Recipes</link>"
+                        section.
+                        </para></listitem>
+                    <listitem><para><filename>packages-split/</filename>:
+                        Contains subdirectories for each package produced by the
+                        recipe.
+                        For more information, see the
+                        "<link linkend='sdk-packaging'>Packaging</link>" section.
+                        </para></listitem>
+                </itemizedlist>
+            </para>
+        </section>
+
+        <section id='sdk-setting-configure-arguments'>
+            <title>Setting Configure Arguments</title>
+
+            <para>
+                If the software your recipe is building uses GNU autoconf,
+                then a fixed set of arguments is passed to it to enable
+                cross-compilation plus any extras specified by
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></ulink>
+                or
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></ulink>
+                set within the recipe.
+                If you wish to pass additional options, add them to
+                <filename>EXTRA_OECONF</filename> or
+                <filename>PACKAGECONFIG_CONFARGS</filename>.
+                Other supported build tools have similar variables
+                (e.g.
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OECMAKE'><filename>EXTRA_OECMAKE</filename></ulink>
+                for CMake,
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OESCONS'><filename>EXTRA_OESCONS</filename></ulink>
+                for Scons, and so forth).
+                If you need to pass anything on the <filename>make</filename>
+                command line, you can use <filename>EXTRA_OEMAKE</filename> or the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></ulink>
+                variables to do so.
+            </para>
+
+            <para>
+                You can use the <filename>devtool configure-help</filename> command
+                to help you set the arguments listed in the previous paragraph.
+                The command determines the exact options being passed, and shows
+                them to you along with any custom arguments specified through
+                <filename>EXTRA_OECONF</filename> or
+                <filename>PACKAGECONFIG_CONFARGS</filename>.
+                If applicable, the command also shows you the output of the
+                configure script's "&dash;&dash;help" option as a reference.
+            </para>
+        </section>
+
+        <section id='sdk-sharing-files-between-recipes'>
+            <title>Sharing Files Between Recipes</title>
+
+            <para>
+                Recipes often need to use files provided by other recipes on
+                the build host.
+                For example, an application linking to a common library needs
+                access to the library itself and its associated headers.
+                The way this access is accomplished within the extensible SDK is
+                through the sysroot.
+                One sysroot exists per "machine" for which the SDK is being built.
+                In practical terms, this means a sysroot exists for the target
+                machine, and a sysroot exists for the build host.
+            </para>
+
+            <para>
+                Recipes should never write files directly into the sysroot.
+                Instead, files should be installed into standard locations
+                during the
+                <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+                task within the
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>
+                directory.
+                A subset of these files automatically go into the sysroot.
+                The reason for this limitation is that almost all files that go
+                into the sysroot are cataloged in manifests in order to ensure
+                they can be removed later when a recipe is modified or removed.
+                Thus, the sysroot is able to remain free from stale files.
+            </para>
+        </section>
+
+        <section id='sdk-packaging'>
+            <title>Packaging</title>
+
+            <para>
+                Packaging is not always particularly relevant within the
+                extensible SDK.
+                However, if you examine how build output gets into the final image
+                on the target device, it is important to understand packaging
+                because the contents of the image are expressed in terms of
+                packages and not recipes.
+            </para>
+
+            <para>
+                During the
+                <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package'><filename>do_package</filename></ulink>
+                task, files installed during the
+                <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+                task are split into one main package, which is almost always named
+                the same as the recipe, and several other packages.
+                This separation is done because not all of those installed files
+                are always useful in every image.
+                For example, you probably do not need any of the documentation
+                installed in a production image.
+                Consequently, for each recipe the documentation files are separated
+                into a <filename>-doc</filename> package.
+                Recipes that package software that has optional modules or
+                plugins might do additional package splitting as well.
+            </para>
+
+            <para>
+                After building a recipe you can see where files have gone by
+                looking in the <filename>oe-workdir/packages-split</filename>
+                directory, which contains a subdirectory for each package.
+                Apart from some advanced cases, the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGES'><filename>PACKAGES</filename></ulink>
+                and
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-FILES'><filename>FILES</filename></ulink>
+                variables controls splitting.
+                The <filename>PACKAGES</filename> variable lists all of the
+                packages to be produced, while the <filename>FILES</filename>
+                variable specifies which files to include in each package,
+                using an override to specify the package.
+                For example, <filename>FILES_${PN}</filename> specifies the files
+                to go into the main package (i.e. the main package is named the
+                same as the recipe and
+                <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink><filename>}</filename>
+                evaluates to the recipe name).
+                The order of the <filename>PACKAGES</filename> value is significant.
+                For each installed file, the first package whose
+                <filename>FILES</filename> value matches the file is the package
+                into which the file goes.
+                Defaults exist for both the <filename>PACKAGES</filename> and
+                <filename>FILES</filename> variables.
+                Consequently, you might find you do not even need to set these
+                variables in your recipe unless the software the recipe is
+                building installs files into non-standard locations.
+            </para>
+        </section>
+    </section>
+
+    <section id='sdk-restoring-the-target-device-to-its-original-state'>
+        <title>Restoring the Target Device to its Original State</title>
+
+        <para>
+            If you use the <filename>devtool deploy-target</filename>
+            command to write a recipe's build output to the target, and
+            you are working on an existing component of the system, then you
+            might find yourself in a situation where you need to restore the
+            original files that existed prior to running the
+            <filename>devtool deploy-target</filename> command.
+            Because the <filename>devtool deploy-target</filename> command
+            backs up any files it overwrites, you can use the
+            <filename>devtool undeploy-target</filename> to restore those files
+            and remove any other files the recipe deployed.
+            Consider the following example:
+            <literallayout class='monospaced'>
+     $ devtool undeploy-target lighttpd root@192.168.7.2
+            </literallayout>
+            If you have deployed multiple applications, you can remove them
+            all at once thus restoring the target device back to its
+            original state:
+            <literallayout class='monospaced'>
+     $ devtool undeploy-target -a root@192.168.7.2
+            </literallayout>
+            Information about files deployed to the target as well as any
+            backed up files are stored on the target itself.
+            This storage of course requires some additional space
+            on the target machine.
+            <note>
+                The <filename>devtool deploy-target</filename> and
+                <filename>devtool undeploy-target</filename> command do not
+                currently interact with any package management system on the
+                target device (e.g. RPM or OPKG).
+                Consequently, you should not intermingle operations
+                <filename>devtool deploy-target</filename> and the package
+                manager operations on the target device.
+                Doing so could result in a conflicting set of files.
             </note>
         </para>
     </section>
-</section>
 
-<section id='sdk-working-with-recipes'>
-    <title>Working With Recipes</title>
-
-    <para>
-        When building a recipe with <filename>devtool build</filename> the
-        typical build progression is as follows:
-        <orderedlist>
-            <listitem><para>
-                Fetch the source
-                </para></listitem>
-            <listitem><para>
-                Unpack the source
-                </para></listitem>
-            <listitem><para>
-                Configure the source
-                </para></listitem>
-            <listitem><para>
-                Compiling the source
-                </para></listitem>
-            <listitem><para>
-                Install the build output
-                </para></listitem>
-            <listitem><para>
-                Package the installed output
-                </para></listitem>
-        </orderedlist>
-        For recipes in the workspace, fetching and unpacking is disabled
-        as the source tree has already been prepared and is persistent.
-        Each of these build steps is defined as a function, usually with a
-        "do_" prefix.
-        These functions are typically shell scripts but can instead be written
-        in Python.
-    </para>
-
-    <para>
-        If you look at the contents of a recipe, you will see that the
-        recipe does not include complete instructions for building the
-        software.
-        Instead, common functionality is encapsulated in classes inherited
-        with the <filename>inherit</filename> directive, leaving the recipe
-        to describe just the things that are specific to the software to be
-        built.
-        A <ulink url='ref-classes-base'><filename>base</filename></ulink>
-        class exists that is implicitly inherited by all recipes and provides
-        the functionality that most typical recipes need.
-    </para>
-
-    <para>
-        The remainder of this section presents information useful when
-        working with recipes.
-    </para>
-
-    <section id='sdk-finding-logs-and-work-files'>
-        <title>Finding Logs and Work Files</title>
+    <section id='sdk-installing-additional-items-into-the-extensible-sdk'>
+        <title>Installing Additional Items Into the Extensible SDK</title>
 
         <para>
-            When you are debugging a recipe that you previously created using
-            <filename>devtool add</filename> or whose source you are modifying
-            by using the <filename>devtool modify</filename> command, after
-            the first run of <filename>devtool build</filename>, you will
-            find some symbolic links created within the source tree:
-            <filename>oe-logs</filename>, which points to the directory in
-            which log files and run scripts for each build step are created
-            and <filename>oe-workdir</filename>, which points to the temporary
-            work area for the recipe.
-            You can use these links to get more information on what is
-            happening at each build step.
-        </para>
-
-        <para>
-            These locations under <filename>oe-workdir</filename> are
-            particularly useful:
-            <itemizedlist>
-                <listitem><para><filename>image/</filename>:
-                    Contains all of the files installed at the
-                    <ulink url='&YOCTO_DOCS_REF_URL;ref-tasks-install'><filename>do_install</filename></ulink>
-                    stage.
-                    Within a recipe, this directory is referred to by the
-                    expression
-                    <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>.
-                    </para></listitem>
-                <listitem><para><filename>sysroot-destdir/</filename>:
-                    Contains a subset of files installed within
-                    <filename>do_install</filename> that have been put into the
-                    shared sysroot.
-                    For more information, see the
-                    "<link linkend='sdk-sharing-files-between-recipes'>Sharing Files Between Recipes</link>"
-                    section.
-                    </para></listitem>
-                <listitem><para><filename>packages-split/</filename>:
-                    Contains subdirectories for each package produced by the
-                    recipe.
-                    For more information, see the
-                    "<link linkend='sdk-packaging'>Packaging</link>" section.
-                    </para></listitem>
-            </itemizedlist>
-        </para>
-    </section>
-
-    <section id='sdk-setting-configure-arguments'>
-        <title>Setting Configure Arguments</title>
-
-        <para>
-            If the software your recipe is building uses GNU autoconf,
-            then a fixed set of arguments is passed to it to enable
-            cross-compilation plus any extras specified by
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></ulink>
-            set within the recipe.
-            If you wish to pass additional options, add them to
-            <filename>EXTRA_OECONF</filename>.
-            Other supported build tools have similar variables
-            (e.g.
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OECMAKE'><filename>EXTRA_OECMAKE</filename></ulink>
-            for CMake,
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OESCONS'><filename>EXTRA_OESCONS</filename></ulink>
-            for Scons, and so forth).
-            If you need to pass anything on the <filename>make</filename>
-            command line, you can use <filename>EXTRA_OEMAKE</filename> to do
-            so.
-        </para>
-
-        <para>
-            You can use the <filename>devtool configure-help</filename> command
-            to help you set the arguments listed in the previous paragraph.
-            The command determines the exact options being passed, and shows
-            them to you along with any custom arguments specified through
-            <filename>EXTRA_OECONF</filename>.
-            If applicable, the command also shows you the output of the
-            configure script's "&dash;&dash;help" option as a reference.
-        </para>
-    </section>
-
-    <section id='sdk-sharing-files-between-recipes'>
-        <title>Sharing Files Between Recipes</title>
-
-        <para>
-            Recipes often need to use files provided by other recipes on
-            the build host.
-            For example, an application linking to a common library needs
-            access to the library itself and its associated headers.
-            The way this access is accomplished within the extensible SDK is
-            through the sysroot.
-            One sysroot exists per "machine" for which the SDK is being built.
-            In practical terms, this means a sysroot exists for the target
-            machine, and a sysroot exists for the build host.
-        </para>
-
-        <para>
-            Recipes should never write files directly into the sysroot.
-            Instead, files should be installed into standard locations
-            during the
-            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
-            task within the
-            <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>
-            directory.
-            A subset of these files automatically go into the sysroot.
-            The reason for this limitation is that almost all files that go
-            into the sysroot are cataloged in manifests in order to ensure
-            they can be removed later when a recipe is modified or removed.
-            Thus, the sysroot is able to remain free from stale files.
-        </para>
-    </section>
-
-    <section id='sdk-packaging'>
-        <title>Packaging</title>
-
-        <para>
-            Packaging is not always particularly relevant within the
-            extensible SDK.
-            However, if you examine how build output gets into the final image
-            on the target device, it is important to understand packaging
-            because the contents of the image are expressed in terms of
-            packages and not recipes.
-        </para>
-
-        <para>
-            During the
-            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package'><filename>do_package</filename></ulink>
-            task, files installed during the
-            <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
-            task are split into one main package, which is almost always named
-            the same as the recipe, and several other packages.
-            This separation is done because not all of those installed files
-            are always useful in every image.
-            For example, you probably do not need any of the documentation
-            installed in a production image.
-            Consequently, for each recipe the documentation files are separated
-            into a <filename>-doc</filename> package.
-            Recipes that package software that has optional modules or
-            plugins might do additional package splitting as well.
-        </para>
-
-        <para>
-            After building a recipe you can see where files have gone by
-            looking in the <filename>oe-workdir/packages-split</filename>
-            directory, which contains a subdirectory for each package.
-            Apart from some advanced cases, the
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGES'><filename>PACKAGES</filename></ulink>
-            and
-            <ulink url='&YOCTO_DOCS_REF_URL;#var-FILES'><filename>FILES</filename></ulink>
-            variables controls splitting.
-            The <filename>PACKAGES</filename> variable lists all of the
-            packages to be produced, while the <filename>FILES</filename>
-            variable specifies which files to include in each package,
-            using an override to specify the package.
-            For example, <filename>FILES_${PN}</filename> specifies the files
-            to go into the main package (i.e. the main package is named the
-            same as the recipe and
-            <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink><filename>}</filename>
-            evaluates to the recipe name).
-            The order of the <filename>PACKAGES</filename> value is significant.
-            For each installed file, the first package whose
-            <filename>FILES</filename> value matches the file is the package
-            into which the file goes.
-            Defaults exist for both the <filename>PACKAGES</filename> and
-            <filename>FILES</filename> variables.
-            Consequently, you might find you do not even need to set these
-            variables in your recipe unless the software the recipe is
-            building installs files into non-standard locations.
-        </para>
-    </section>
-</section>
-
-<section id='sdk-restoring-the-target-device-to-its-original-state'>
-    <title>Restoring the Target Device to its Original State</title>
-
-    <para>
-        If you use the <filename>devtool deploy-target</filename>
-        command to write a recipe's build output to the target, and
-        you are working on an existing component of the system, then you
-        might find yourself in a situation where you need to restore the
-        original files that existed prior to running the
-        <filename>devtool deploy-target</filename> command.
-        Because the <filename>devtool deploy-target</filename> command
-        backs up any files it overwrites, you can use the
-        <filename>devtool undeploy-target</filename> to restore those files
-        and remove any other files the recipe deployed.
-        Consider the following example:
-        <literallayout class='monospaced'>
-     $ devtool undeploy-target lighttpd root@192.168.7.2
-        </literallayout>
-        If you have deployed multiple applications, you can remove them
-        all at once thus restoring the target device back to its
-        original state:
-        <literallayout class='monospaced'>
-     $ devtool undeploy-target -a root@192.168.7.2
-        </literallayout>
-        Information about files deployed to the target as well as any
-        backed up files are stored on the target itself.
-        This storage of course requires some additional space
-        on the target machine.
-        <note>
-            The <filename>devtool deploy-target</filename> and
-            <filename>devtool undeploy-target</filename> command do not
-            currently interact with any package management system on the
-            target device (e.g. RPM or OPKG).
-            Consequently, you should not intermingle operations
-            <filename>devtool deploy-target</filename> and the package
-            manager operations on the target device.
-            Doing so could result in a conflicting set of files.
-        </note>
-    </para>
-</section>
-
-<section id='sdk-installing-additional-items-into-the-extensible-sdk'>
-    <title>Installing Additional Items Into the Extensible SDK</title>
-
-    <para>
-        The extensible SDK typically only comes with a small number of tools
-        and libraries out of the box.
-        If you have a minimal SDK, then it starts mostly empty and is
-        populated on-demand.
-        However, sometimes you will need to explicitly install extra items
-        into the SDK.
-        If you need these extra items, you can first search for the items
-        using the <filename>devtool search</filename> command.
-        For example, suppose you need to link to libGL but you are not sure
-        which recipe provides it.
-        You can use the following command to find out:
-        <literallayout class='monospaced'>
+            The extensible SDK typically only comes with a small number of tools
+            and libraries out of the box.
+            If you have a minimal SDK, then it starts mostly empty and is
+            populated on-demand.
+            However, sometimes you will need to explicitly install extra items
+            into the SDK.
+            If you need these extra items, you can first search for the items
+            using the <filename>devtool search</filename> command.
+            For example, suppose you need to link to libGL but you are not sure
+            which recipe provides it.
+            You can use the following command to find out:
+            <literallayout class='monospaced'>
      $ devtool search libGL
      mesa                  A free implementation of the OpenGL API
-        </literallayout>
-        Once you know the recipe (i.e. <filename>mesa</filename> in this
-        example), you can install it:
-        <literallayout class='monospaced'>
+            </literallayout>
+            Once you know the recipe (i.e. <filename>mesa</filename> in this
+            example), you can install it:
+            <literallayout class='monospaced'>
      $ devtool sdk-install mesa
-        </literallayout>
-        By default, the <filename>devtool sdk-install</filename> assumes the
-        item is available in pre-built form from your SDK provider.
-        If the item is not available and it is acceptable to build the item
-        from source, you can add the "-s" option as follows:
-        <literallayout class='monospaced'>
+            </literallayout>
+            By default, the <filename>devtool sdk-install</filename> assumes the
+            item is available in pre-built form from your SDK provider.
+            If the item is not available and it is acceptable to build the item
+            from source, you can add the "-s" option as follows:
+            <literallayout class='monospaced'>
      $ devtool sdk-install -s mesa
-        </literallayout>
-        It is important to remember that building the item from source takes
-        significantly longer than installing the pre-built artifact.
-        Also, if no recipe exists for the item you want to add to the SDK, you
-        must instead add it using the <filename>devtool add</filename> command.
-    </para>
-</section>
+            </literallayout>
+            It is important to remember that building the item from source takes
+            significantly longer than installing the pre-built artifact.
+            Also, if no recipe exists for the item you want to add to the SDK, you
+            must instead add it using the <filename>devtool add</filename> command.
+        </para>
+    </section>
 
-<section id='sdk-updating-the-extensible-sdk'>
-     <title>Updating the Extensible SDK</title>
+    <section id='sdk-updating-the-extensible-sdk'>
+        <title>Updating the Extensible SDK</title>
 
-     <para>
-         If you are working with an extensible SDK that gets occasionally
-         updated (e.g. typically when that SDK has been provided to you by
-         another party), then you will need to manually pull down those
-         updates to your installed SDK.
-     </para>
+        <para>
+            If you are working with an extensible SDK that gets occasionally
+            updated (e.g. typically when that SDK has been provided to you by
+            another party), then you will need to manually pull down those
+            updates to your installed SDK.
+        </para>
 
-     <para>
-         To update your installed SDK, run the following:
-         <literallayout class='monospaced'>
+        <para>
+            To update your installed SDK, run the following:
+            <literallayout class='monospaced'>
      $ devtool sdk-update
-         </literallayout>
-         The previous command assumes your SDK provider has set the default
-         update URL for you.
-         If that URL has not been set, you need to specify it yourself as
-         follows:
-         <literallayout class='monospaced'>
+            </literallayout>
+            The previous command assumes your SDK provider has set the default
+            update URL for you.
+            If that URL has not been set, you need to specify it yourself as
+            follows:
+            <literallayout class='monospaced'>
      $ devtool sdk-update <replaceable>path_to_update_directory</replaceable>
-         </literallayout>
-         <note>
-             The URL needs to point specifically to a published SDK and not an
-             SDK installer that you would download and install.
-         </note>
-    </para>
-</section>
+            </literallayout>
+            <note>
+                The URL needs to point specifically to a published SDK and not an
+                SDK installer that you would download and install.
+            </note>
+        </para>
+    </section>
 
-<section id='sdk-creating-a-derivative-sdk-with-additional-components'>
-    <title>Creating a Derivative SDK With Additional Components</title>
+    <section id='sdk-creating-a-derivative-sdk-with-additional-components'>
+        <title>Creating a Derivative SDK With Additional Components</title>
 
-    <para>
-        You might need to produce an SDK that contains your own custom
-        libraries for sending to a third party (e.g., if you are a vendor with
-        customers needing to build their own software for the target platform).
-        If that is the case, then you can produce a derivative SDK based on
-        the currently installed SDK fairly easily.
-        Use these steps:
-        <orderedlist>
-            <listitem><para>If necessary, install an extensible SDK that
-                you want to use as a base for your derivative SDK.
-                </para></listitem>
-            <listitem><para>Source the environment script for the SDK.
-                </para></listitem>
-            <listitem><para>Add the extra libraries or other components
-                you want by using the <filename>devtool add</filename>
-                command.
-                </para></listitem>
-            <listitem><para>Run the <filename>devtool build-sdk</filename>
-                command.
-                </para></listitem>
-        </orderedlist>
-        The above procedure takes the recipes added to the workspace and
-        constructs a new SDK installer containing those recipes and the
-        resulting binary artifacts.
-        The recipes go into their own separate layer in the constructed
-        derivative SDK, leaving the workspace clean and ready for users
-        to add their own recipes.
-    </para>
-</section>
-
+        <para>
+            You might need to produce an SDK that contains your own custom
+            libraries for sending to a third party (e.g., if you are a vendor with
+            customers needing to build their own software for the target platform).
+            If that is the case, then you can produce a derivative SDK based on
+            the currently installed SDK fairly easily.
+            Use these steps:
+            <orderedlist>
+                <listitem><para>If necessary, install an extensible SDK that
+                    you want to use as a base for your derivative SDK.
+                    </para></listitem>
+                <listitem><para>Source the environment script for the SDK.
+                    </para></listitem>
+                <listitem><para>Add the extra libraries or other components
+                    you want by using the <filename>devtool add</filename>
+                    command.
+                    </para></listitem>
+                <listitem><para>Run the <filename>devtool build-sdk</filename>
+                    command.
+                    </para></listitem>
+            </orderedlist>
+            The above procedure takes the recipes added to the workspace and
+            constructs a new SDK installer containing those recipes and the
+            resulting binary artifacts.
+            The recipes go into their own separate layer in the constructed
+            derivative SDK, leaving the workspace clean and ready for users
+            to add their own recipes.
+        </para>
+    </section>
 </chapter>
 <!--
 vim: expandtab tw=80 ts=4
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-intro.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-intro.xml
index 88ae778..6840169 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-intro.xml
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-intro.xml
@@ -11,41 +11,53 @@
     <para>
         Welcome to the Yocto Project Software Development Kit (SDK)
         Developer's Guide.
-        This manual provides information that lets you use both the standard
-        Yocto Project SDK and an extensible SDK to develop applications and
-        images using the Yocto Project.
+        This manual provides information that explains how to use both the
+        Yocto Project extensible and standard SDKs to develop
+        applications and images.
         Additionally, the manual also provides information on how to use
         the popular <trademark class='trade'>Eclipse</trademark> IDE as part
-        of your application development workflow.
+        of your application development workflow within the SDK environment.
+        <note>
+            Prior to the 2.0 Release of the Yocto Project, application
+            development was primarily accomplished through the use of the
+            Application Development Toolkit (ADT) and the availability
+            of stand-alone cross-development toolchains and other tools.
+            With the 2.1 Release of the Yocto Project, application development
+            has transitioned to within a tool-rich extensible SDK and the more
+            traditional standard SDK.
+        </note>
     </para>
 
     <para>
-        Prior to the 2.0 Release of the Yocto Project, application
-        development was primarily accomplished through the use of the
-        Application Development Toolkit (ADT) and the availability
-        of stand-alone cross-development toolchains and other tools.
-        With the 2.1 Release of the Yocto Project, application development
-        has transitioned to within a more traditional SDK and extensible
-        SDK.
+        All SDKs consist of the following:
+        <itemizedlist>
+            <listitem><para><emphasis>Cross-Development Toolchain</emphasis>:
+                This toolchain contains a compiler, debugger, and various
+                miscellaneous tools.
+                </para></listitem>
+            <listitem><para><emphasis>Libraries, Headers, and Symbols</emphasis>:
+                The libraries, headers, and symbols are specific to the image
+                (i.e. they match the image).
+                </para></listitem>
+            <listitem><para><emphasis>Environment Setup Script</emphasis>:
+                This <filename>*.sh</filename> file, once run, sets up the
+                cross-development environment by defining variables and
+                preparing for SDK use.
+                </para></listitem>
+        </itemizedlist>
     </para>
 
     <para>
-        A standard SDK consists of a cross-development toolchain that contains
-        a compiler, debugger, and various miscellaneous tools; libraries,
-        headers, and symbols to match an image; and environment setup script.
-        You can use this SDK to independently develop and test code that is
-        destined to run on some target machine.
-    </para>
-
-    <para>
-        An extensible SDK consists of everything that the standard SDK has plus
-        tools that allow you to easily add new applications and libraries to
-        an image, modify the source of an existing component, test changes on
-        the target hardware, and easily integrate an application into the
+        Additionally an extensible SDK has tools that allow you to easily add
+        new applications and libraries to an image, modify the source of an
+        existing component, test changes on the target hardware, and easily
+        integrate an application into the
         <ulink url='&YOCTO_DOCS_DEV_URL;#build-system-term'>OpenEmbedded build system</ulink>.
     </para>
 
     <para>
+        You can use an SDK to independently develop and test code
+        that is destined to run on some target machine.
         SDKs are completely self-contained.
         The binaries are linked against their own copy of
         <filename>libc</filename>, which results in no dependencies
@@ -59,8 +71,8 @@
     </para>
 
     <para>
-        Another feature for the SDKs is that only one set of cross-canadian
-        toolchain binaries are produced per architecture.
+        Another feature for the SDKs is that only one set of cross-compiler
+        toolchain binaries are produced for any given architecture.
         This feature takes advantage of the fact that the target hardware can
         be passed to <filename>gcc</filename> as a set of compiler options.
         Those options are set up by the environment script and contained in
@@ -74,40 +86,122 @@
     </para>
 
     <para>
-        Going beyond the actual SDK, the SDK development environment consists
-        of the following:
+        The SDK development environment consists of the following:
         <itemizedlist>
-            <listitem><para>An architecture-specific cross-toolchain and
+            <listitem><para>The self-contained SDK, which is an
+                architecture-specific cross-toolchain and
                 matching sysroots (target and native) all built by the
-                OpenEmbedded build system.
+                OpenEmbedded build system (e.g. the SDK).
                 The toolchain and sysroots are based on a
                 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
                 configuration and extensions,
                 which allows you to cross-develop on the host machine for the
                 target hardware.
+                Additionally, the extensible SDK contains the
+                <filename>devtool</filename> functionality.
                 </para></listitem>
             <listitem><para>The Quick EMUlator (QEMU), which lets you simulate
                 target hardware.
                 QEMU is not literally part of the SDK.
                 You must build and include this emulator separately.
                 However, QEMU plays an important role in the development
-                process that revolves around use of and SDK.
+                process that revolves around use of the SDK.
                 </para></listitem>
             <listitem><para>The Eclipse IDE Yocto Plug-in.
-                This plug-in is also available for you if you are an Eclipse
+                This plug-in is available for you if you are an Eclipse
                 user.
                 In the same manner as QEMU, the plug-in is not literally part
                 of the SDK but is rather available for use as part of the
                 development process.
                 </para></listitem>
-            <listitem><para>Various user-space tools that greatly enhance
-                your application development experience.
+            <listitem><para>Various performance-related
+                <ulink url='http://www.eclipse.org/linuxtools/index.php'>tools</ulink>
+                that can enhance your development experience.
                 These tools are also separate from the actual SDK but can be
                 independently obtained and used in the development process.
                 </para></listitem>
         </itemizedlist>
     </para>
 
+    <para>
+        In summary, the extensible and standard SDK share many features.
+        However, the extensible SDK has powerful development tools to help you
+        more quickly develop applications.
+        Following is a table that summarizes the primary differences between
+        the standard and extensible SDK types when considering which to
+        build:
+        <informaltable frame='none'>
+            <tgroup cols='3' align='left' colsep='1' rowsep='1'>
+                <colspec colname='c1' colwidth='1*'/>
+                <colspec colname='c2' colwidth='1*'/>
+                <colspec colname='c3' colwidth='1*'/>
+                <thead>
+                    <row>
+                        <entry align="left"><emphasis>Feature</emphasis></entry>
+                        <entry align="left"><emphasis>Standard SDK</emphasis></entry>
+                        <entry align="left"><emphasis>Extensible SDK</emphasis></entry>
+                    </row>
+                </thead>
+                <tbody>
+                    <row>
+                        <entry align="left">Toolchain</entry>
+                        <entry align="left">Yes</entry>
+                        <entry align="left">Yes*</entry>
+                    </row>
+                    <row>
+                        <entry align="left">Debugger</entry>
+                        <entry align="left">Yes</entry>
+                        <entry align="left">Yes*</entry>
+                    </row>
+                    <row>
+                        <entry align="left">Size</entry>
+                        <entry align="left">100+ MBytes</entry>
+                        <entry align="left">1+ GBytes (or 300+ MBytes for minimal w/toolchain)</entry>
+                    </row>
+                    <row>
+                        <entry align="left"><filename>devtool</filename></entry>
+                        <entry align="left">No</entry>
+                        <entry align="left">Yes</entry>
+                    </row>
+                    <row>
+                        <entry align="left">Build Images</entry>
+                        <entry align="left">No</entry>
+                        <entry align="left">Yes</entry>
+                    </row>
+                    <row>
+                        <entry align="left">Updateable</entry>
+                        <entry align="left">No</entry>
+                        <entry align="left">Yes</entry>
+                    </row>
+                    <row>
+                        <entry align="left">Managed Sysroot**</entry>
+                        <entry align="left">No</entry>
+                        <entry align="left">Yes</entry>
+                    </row>
+                    <row>
+                        <entry align="left">Installed Packages</entry>
+                        <entry align="left">No***</entry>
+                        <entry align="left">Yes****</entry>
+                    </row>
+                    <row>
+                        <entry align="left">Construction</entry>
+                        <entry align="left">Packages</entry>
+                        <entry align="left">Shared State</entry>
+                    </row>
+                </tbody>
+            </tgroup>
+        </informaltable>
+        <literallayout class='monospaced'>
+     * Extensible SDK will contain the toolchain and debugger if <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></ulink> is "full" or <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></ulink> is "1", which is the default.
+
+     ** Sysroot is managed through use of <filename>devtool</filename>.  Thus, it is less likely that you will corrupt your SDK sysroot when you try to add additional libraries.
+
+     *** Runtime package management can be added to the standard SDK but it is not supported by default.
+
+     **** You must build and make the shared state available to extensible SDK users for "packages" you want to enable users to install.
+        </literallayout>
+    </para>
+
     <section id='the-cross-development-toolchain'>
         <title>The Cross-Development Toolchain</title>
 
@@ -117,7 +211,9 @@
             consists of a cross-compiler, cross-linker, and cross-debugger
             that are used to develop user-space applications for targeted
             hardware.
-            This toolchain is created by running a toolchain installer script
+            Additionally, for an extensible SDK, the toolchain also has
+            built-in <filename>devtool</filename> functionality.
+            This toolchain is created by running a SDK installer script
             or through a
             <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
             that is based on your Metadata configuration or extension for
@@ -183,68 +279,36 @@
             These extensions allow for cross-compilation, deployment, and
             execution of your output into a QEMU emulation session.
             You can also perform cross-debugging and profiling.
-            The environment also supports a suite of tools that allows you to
-            perform remote profiling, tracing, collection of power data,
-            collection of latency data, and collection of performance data.
+            The environment also supports many performance-related
+            <ulink url='http://www.eclipse.org/linuxtools/index.php'>tools</ulink>
+            that enhance your development experience.
+            <note>
+                Previous releases of the Eclipse Yocto Plug-in supported
+                "user-space tools" (i.e. LatencyTOP, PowerTOP, Perf, SystemTap,
+                and Lttng-ust) that also added to the development experience.
+                These tools have been deprecated beginning with this release
+                of the plug-in.
+            </note>
         </para>
 
         <para>
             For information about the application development workflow that
             uses the Eclipse IDE and for a detailed example of how to install
             and configure the Eclipse Yocto Project Plug-in, see the
-            "<link link='sdk-developing-applications-using-eclipse'>Developing Applications Using <trademark class='trade'>Eclipse</trademark></link>"
+            "<link linkend='sdk-developing-applications-using-eclipse'>Developing Applications Using <trademark class='trade'>Eclipse</trademark></link>"
             section.
         </para>
     </section>
 
-    <section id='user-space-tools'>
-        <title>User-Space Tools</title>
+    <section id='performance-enhancing-tools'>
+        <title>Performance Enhancing Tools</title>
 
         <para>
-            User-space tools are available as part of the SDK development
-            process and can be helpful.
-            The tools include LatencyTOP, PowerTOP, Perf, SystemTap,
-            and Lttng-ust.
-            These tools are common development tools for the Linux platform.
-            <itemizedlist>
-                <listitem><para><emphasis>LatencyTOP:</emphasis> LatencyTOP
-                    focuses on latency that causes skips in audio, stutters in
-                    your desktop experience, or situations that overload your
-                    server even when you have plenty of CPU power left.
-                    </para></listitem>
-                <listitem><para><emphasis>PowerTOP:</emphasis> Helps you
-                    determine what software is using the most power.
-                    You can find out more about PowerTOP at
-                    <ulink url='https://01.org/powertop/'></ulink>.</para></listitem>
-                <listitem><para><emphasis>Perf:</emphasis> Performance counters
-                    for Linux used to keep track of certain types of hardware
-                    and software events.
-                    For more information on these types of counters see
-                    <ulink url='https://perf.wiki.kernel.org/'></ulink>.
-                    For examples on how to setup and use this tool, see the
-                    "<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-perf'>perf</ulink>"
-                    section in the Yocto Project Profiling and Tracing Manual.
-                    </para></listitem>
-                <listitem><para><emphasis>SystemTap:</emphasis> A free software
-                    infrastructure that simplifies information gathering about
-                    a running Linux system.
-                    This information helps you diagnose performance or
-                    functional problems.
-                    SystemTap is not available as a user-space tool through
-                    the Eclipse IDE Yocto Plug-in.
-                    See <ulink url='http://sourceware.org/systemtap'></ulink>
-                    for more information on SystemTap.
-                    For examples on how to setup and use this tool, see the
-                    "<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-systemtap'>SystemTap</ulink>"
-                    section in the Yocto Project Profiling and Tracing Manual.
-                    </para></listitem>
-                <listitem><para><emphasis>Lttng-ust:</emphasis> A User-space
-                    Tracer designed to provide detailed information on
-                    user-space activity.
-                    See <ulink url='http://lttng.org/ust'></ulink> for more
-                    information on Lttng-ust.
-                    </para></listitem>
-            </itemizedlist>
+            Supported performance enhancing tools are available that let you
+            profile, debug, and perform tracing on your projects developed
+            using Eclipse.
+            For information on these tools see
+            <ulink url='http://www.eclipse.org/linuxtools/'>http://www.eclipse.org/linuxtools/</ulink>.
         </para>
     </section>
 </section>
@@ -264,7 +328,7 @@
         A developer can independently compile and test an object on their
         machine and then, when the object is ready for integration into an
         image, they can simply make it available to the machine that has the
-        the Yocto Project.
+        Yocto Project.
         Once the object is available, the image can be rebuilt using the
         Yocto Project to produce the modified image.
     </para>
@@ -274,9 +338,9 @@
         <orderedlist>
             <listitem><para><emphasis>Install the SDK for your target hardware:</emphasis>
                 For information on how to install the SDK, see the
-                "<link url='sdk-installing-the-sdk'>Installing the SDK</link>"
+                "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
                 section.</para></listitem>
-            <listitem><para><emphasis>Download the Target Image:</emphasis>
+            <listitem><para><emphasis>Download or Build the Target Image:</emphasis>
                 The Yocto Project supports several target architectures
                 and has many pre-built kernel images and root filesystem
                 images.</para>
@@ -303,12 +367,15 @@
                 64-bit architecture).
                 Download kernel, root filesystem, and any other files you
                 need for your process.
-                <note>In order to use the root filesystem in QEMU, you
-                need to extract it.
-                See the
-                "<link url='sdk-extracting-the-root-filesystem'>Extracting the Root Filesystem</link>"
-                section for information on how to extract the root
-                filesystem.</note></para></listitem>
+                <note>
+                    To use the root filesystem in QEMU, you
+                    need to extract it.
+                    See the
+                    "<link linkend='sdk-extracting-the-root-filesystem'>Extracting the Root Filesystem</link>"
+                    section for information on how to extract the root
+                    filesystem.
+                </note>
+                </para></listitem>
             <listitem><para><emphasis>Develop and Test your
                 Application:</emphasis>  At this point, you have the tools
                 to develop your application.
@@ -316,7 +383,7 @@
                 emulator, you can go to
                 <ulink url='http://wiki.qemu.org/Main_Page'>QEMU Home Page</ulink>
                 to download and learn about the emulator.
-                You can see the
+                See the
                 "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
                 chapter in the Yocto Project Development Manual
                 for information on using QEMU within the Yocto
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-customization.xsl b/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-customization.xsl
index dae992c..efa8a84 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-customization.xsl
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-customization.xsl
@@ -1,12 +1,11 @@
 <?xml version='1.0'?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
 
-<!--  <xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
--->
-
-  <xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
+  <xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
 
 <!--
+  <xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
+
   <xsl:import href="http://docbook.sourceforge.net/release/xsl/1.76.1/xhtml/docbook.xsl" />
 
 -->
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-eclipse-customization.xsl b/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-eclipse-customization.xsl
index 03555d6..77ba5f5 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-eclipse-customization.xsl
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual-eclipse-customization.xsl
@@ -5,14 +5,12 @@
 	xmlns:fo="http://www.w3.org/1999/XSL/Format"
 	version="1.0">
 
-<!--
   <xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/eclipse/eclipse3.xsl" />
--->
+
+<!--
 
   <xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/eclipse/eclipse3.xsl" />
 
-<!--
-
   <xsl:import
 	  href="http://docbook.sourceforge.net/release/xsl/1.76.1/eclipse/eclipse3.xsl" />
 
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 c860782..6c72a03 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual.xml
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual.xml
@@ -36,6 +36,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
        </revhistory>
 
     <copyright>
@@ -61,14 +66,18 @@
 
     <xi:include href="sdk-intro.xml"/>
 
+    <xi:include href="sdk-extensible.xml"/>
+
     <xi:include href="sdk-using.xml"/>
 
-    <xi:include href="sdk-extensible.xml"/>
+    <xi:include href="sdk-working-projects.xml"/>
 
     <xi:include href="sdk-appendix-obtain.xml"/>
 
     <xi:include href="sdk-appendix-customizing.xml"/>
 
+    <xi:include href="sdk-appendix-mars.xml"/>
+
 <!--    <index id='index'>
       <title>Index</title>
     </index>
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-using.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-using.xml
index 1ea47d3..7281e83 100644
--- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-using.xml
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-using.xml
@@ -3,74 +3,82 @@
 [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
 
 <chapter id='sdk-using-the-standard-sdk'>
-
-<title>Using the Standard SDK</title>
-
-<para>
-    This chapter describes the standard SDK and how to use it.
-    Information covers the pieces of the SDK, how to install it, and presents
-    several task-based procedures common for developing with a standard SDK.
-    <note>
-        The tasks you can perform using a standard SDK are also applicable
-        when you are using an extensible SDK.
-        For information on the differences when using an extensible SDK as
-        compared to an extensible SDK, see the
-        "<link linkend='sdk-extensible'>Using the Extensible SDK</link>"
-        chapter.
-    </note>
-</para>
-
-<section id='sdk-standard-sdk-intro'>
-    <title>Why use the Standard SDK and What is in It?</title>
+    <title>Using the Standard SDK</title>
 
     <para>
-        The Standard SDK provides a cross-development toolchain and libraries
-        tailored to the contents of a specific image.
-        You would use the Standard SDK if you want a more traditional toolchain
-        experience.
+        This chapter describes the standard SDK and how to install it.
+        Information includes unique installation and setup aspects for the
+        standard SDK.
+        <note>
+            For a side-by-side comparison of main features supported for a
+            standard SDK as compared to an extensible SDK, see the
+            "<link linkend='sdk-manual-intro'>Introduction</link>"
+            section.
+        </note>
     </para>
 
     <para>
-        The installed Standard SDK consists of several files and directories.
-        Basically, it contains an SDK environment setup script, some
-        configuration files, and host and target root filesystems to support
-        usage.
-        You can see the directory structure in the
-        "<link linkend='sdk-installed-standard-sdk-directory-structure'>Installed Standard SDK Directory Structure</link>"
-        section.
-    </para>
-</section>
-
-<section id='sdk-installing-the-sdk'>
-    <title>Installing the SDK</title>
-
-    <para>
-        The first thing you need to do is install the SDK on your host
-        development machine by running the <filename>.sh</filename>
-        installation script.
+        You can use a standard SDK to work on Makefile, Autotools, and
+        Eclipse-based projects.
+        See the
+        "<link linkend='sdk-working-projects'>Working with Different Types of Projects</link>"
+        chapter for more information.
     </para>
 
-    <para>
-        You can download a tarball installer, which includes the
-        pre-built toolchain, the <filename>runqemu</filename>
-        script, and support files from the appropriate directory under
-        <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>.
-        Toolchains are available for 32-bit and 64-bit x86 development
-        systems from the <filename>i686</filename> and
-        <filename>x86_64</filename> directories, respectively.
-        The toolchains the Yocto Project provides are based off the
-        <filename>core-image-sato</filename> image and contain
-        libraries appropriate for developing against that image.
-        Each type of development system supports five or more target
-        architectures.
-    </para>
+    <section id='sdk-standard-sdk-intro'>
+        <title>Why use the Standard SDK and What is in It?</title>
 
-    <para>
-        The names of the tarball installer scripts are such that a
-        string representing the host system appears first in the
-        filename and then is immediately followed by a string
-        representing the target architecture.
-        <literallayout class='monospaced'>
+        <para>
+            The Standard SDK provides a cross-development toolchain and
+            libraries tailored to the contents of a specific image.
+            You would use the Standard SDK if you want a more traditional
+            toolchain experience as compared to the extensible SDK, which
+            provides an internal build system and the
+            <filename>devtool</filename> functionality.
+        </para>
+
+        <para>
+            The installed Standard SDK consists of several files and
+            directories.
+            Basically, it contains an SDK environment setup script, some
+            configuration files, and host and target root filesystems to
+            support usage.
+            You can see the directory structure in the
+            "<link linkend='sdk-installed-standard-sdk-directory-structure'>Installed Standard SDK Directory Structure</link>"
+            section.
+        </para>
+    </section>
+
+    <section id='sdk-installing-the-sdk'>
+        <title>Installing the SDK</title>
+
+        <para>
+            The first thing you need to do is install the SDK on your host
+            development machine by running the <filename>*.sh</filename>
+            installation script.
+        </para>
+
+        <para>
+            You can download a tarball installer, which includes the
+            pre-built toolchain, the <filename>runqemu</filename>
+            script, and support files from the appropriate directory under
+            <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>.
+            Toolchains are available for 32-bit and 64-bit x86 development
+            systems from the <filename>i686</filename> and
+            <filename>x86_64</filename> directories, respectively.
+            The toolchains the Yocto Project provides are based off the
+            <filename>core-image-sato</filename> image and contain
+            libraries appropriate for developing against that image.
+            Each type of development system supports five or more target
+            architectures.
+        </para>
+
+        <para>
+            The names of the tarball installer scripts are such that a
+            string representing the host system appears first in the
+            filename and then is immediately followed by a string
+            representing the target architecture.
+            <literallayout class='monospaced'>
      poky-glibc-<replaceable>host_system</replaceable>-<replaceable>image_type</replaceable>-<replaceable>arch</replaceable>-toolchain-<replaceable>release_version</replaceable>.sh
 
      Where:
@@ -88,1378 +96,109 @@
                 Yocto Project:
 
                     &DISTRO;, &DISTRO;+snapshot
-        </literallayout>
-        For example, the following toolchain installer is for a 64-bit
-        development host system and a i586-tuned target architecture
-        based off the SDK for <filename>core-image-sato</filename> and
-        using the current &DISTRO; snapshot:
-        <literallayout class='monospaced'>
-     poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
-        </literallayout>
-    </para>
-
-    <para>
-        The SDK and toolchains are self-contained and by default are installed
-        into <filename>/opt/poky</filename>.
-        However, when you run the SDK installer, you can choose an
-        installation directory.
-        <note>
-            You must change the permissions on the toolchain
-            installer script so that it is executable:
-            <literallayout class='monospaced'>
-     $ chmod +x poky-glibc-x86_64-core-image-sato-i586-toolchain-2.1.sh
             </literallayout>
-        </note>
-    </para>
+            For example, the following SDK installer is for a 64-bit
+            development host system and a i586-tuned target architecture
+            based off the SDK for <filename>core-image-sato</filename> and
+            using the current &DISTRO; snapshot:
+            <literallayout class='monospaced'>
+     poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
+            </literallayout>
+            <note>
+                As an alternative to downloading an SDK, you can build the
+                SDK installer.
+                For information on building the installer, see the
+                "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+                section.
+                Another helpful resource for building an installer is the
+                <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+                wiki page.
+                This wiki page focuses on development when using the Eclipse
+                IDE.
+            </note>
+        </para>
 
-    <para>
-        The following command shows how to run the installer given a
-        toolchain tarball for a 64-bit x86 development host system and
-        a 32-bit x86 target architecture.
-        The example assumes the toolchain installer is located in
-        <filename>~/Downloads/</filename>.
-        <note>
-            If you do not have write permissions for the directory
-            into which you are installing the SDK, the installer
-            notifies you and exits.
-            Be sure you have write permissions in the directory and
-            run the installer again.
-        </note>
-        <literallayout class='monospaced'>
-     $ ./poky-glibc-x86_64-core-image-sato-i586-toolchain-2.1.sh
-     Poky (Yocto Project Reference Distro) SDK installer version 2.0
+        <para>
+            The SDK and toolchains are self-contained and by default are
+            installed into <filename>/opt/poky</filename>.
+            However, when you run the SDK installer, you can choose an
+            installation directory.
+            <note>
+                You must change the permissions on the SDK
+                installer script so that it is executable:
+                <literallayout class='monospaced'>
+     $ chmod +x poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
+                </literallayout>
+            </note>
+        </para>
+
+        <para>
+            The following command shows how to run the installer given a
+            toolchain tarball for a 64-bit x86 development host system and
+            a 32-bit x86 target architecture.
+            The example assumes the SDK installer is located in
+            <filename>~/Downloads/</filename>.
+            <note>
+                If you do not have write permissions for the directory
+                into which you are installing the SDK, the installer
+                notifies you and exits.
+                Be sure you have write permissions in the directory and
+                run the installer again.
+            </note>
+            <literallayout class='monospaced'>
+     $ ./poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
+     Poky (Yocto Project Reference Distro) SDK installer version &DISTRO;
      ===============================================================
-     Enter target directory for SDK (default: /opt/poky/2.1):
-     You are about to install the SDK to "/opt/poky/2.1". Proceed[Y/n]? Y
+     Enter target directory for SDK (default: /opt/poky/&DISTRO;):
+     You are about to install the SDK to "/opt/poky/&DISTRO;". Proceed[Y/n]? Y
      Extracting SDK.......................................................................done
      Setting it up...done
      SDK has been successfully set up and is ready to be used.
      Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
-      $ . /opt/poky/2.1/environment-setup-i586-poky-linux
-        </literallayout>
-    </para>
-
-    <para>
-        Again, reference the
-        "<link linkend='sdk-installed-standard-sdk-directory-structure'>Installed Standard SDK Directory Structure</link>"
-        section for more details on the resulting directory structure of
-        the installed SDK.
-    </para>
-</section>
-
-<section id='sdk-running-the-sdk-environment-setup-script'>
-    <title>Running the SDK Environment Setup Script</title>
-
-    <para>
-        Once you have the SDK installed, you must run the SDK environment
-        setup script before you can actually use it.
-        This setup script resides in the directory you chose when you installed
-        the SDK.
-        For information on where this setup script can reside, see the
-        "<link linkend='sdk-appendix-obtain'>Obtaining the SDK</link>"
-        Appendix.
-    </para>
-
-    <para>
-        Before running the script, be sure it is the one that matches the
-        architecture for which you are developing.
-        Environment setup scripts begin with the string
-        "<filename>environment-setup</filename>" and include as part of their
-        name the tuned target architecture.
-        For example, the command to source a setup script for an IA-based
-        target machine using i586 tuning and located in the default SDK
-        installation directory is as follows:
-        <literallayout class='monospaced'>
-     $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
-        </literallayout>
-        When you run the setup script, many environment variables are
-        defined:
-        <literallayout class='monospaced'>
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKTARGETSYSROOT'><filename>SDKTARGETSYSROOT</filename></ulink> - The path to the sysroot used for cross-compilation
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-PKG_CONFIG_PATH'><filename>PKG_CONFIG_PATH</filename></ulink> - The path to the target pkg-config files
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIG_SITE'><filename>CONFIG_SITE</filename></ulink> - A GNU autoconf site file preconfigured for the target
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink> - The minimal command and arguments to run the C compiler
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXX'><filename>CXX</filename></ulink> - The minimal command and arguments to run the C++ compiler
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CPP'><filename>CPP</filename></ulink> - The minimal command and arguments to run the C preprocessor
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-AS'><filename>AS</filename></ulink> - The minimal command and arguments to run the assembler
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink> - The minimal command and arguments to run the linker
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-GDB'><filename>GDB</filename></ulink> - The minimal command and arguments to run the GNU Debugger
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-STRIP'><filename>STRIP</filename></ulink> - The minimal command and arguments to run 'strip', which strips symbols
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-RANLIB'><filename>RANLIB</filename></ulink> - The minimal command and arguments to run 'ranlib'
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJCOPY'><filename>OBJCOPY</filename></ulink> - The minimal command and arguments to run 'objcopy'
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJDUMP'><filename>OBJDUMP</filename></ulink> - The minimal command and arguments to run 'objdump'
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-AR'><filename>AR</filename></ulink> - The minimal command and arguments to run 'ar'
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-NM'><filename>NM</filename></ulink> - The minimal command and arguments to run 'nm'
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></ulink> - The toolchain binary prefix for the target tools
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CROSS_COMPILE'><filename>CROSS_COMPILE</filename></ulink> - The toolchain binary prefix for the target tools
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink> - The minimal arguments for GNU configure
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CFLAGS'><filename>CFLAGS</filename></ulink> - Suggested C flags
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXXFLAGS'><filename>CXXFLAGS</filename></ulink> - Suggested C++ flags
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-LDFLAGS'><filename>LDFLAGS</filename></ulink> - Suggested linker flags when you use CC to link
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CPPFLAGS'><filename>CPPFLAGS</filename></ulink> - Suggested preprocessor flags
-        </literallayout>
-    </para>
-</section>
-
-<section id='autotools-based-projects'>
-    <title>Autotools-Based Projects</title>
-
-    <para>
-        Once you have a suitable cross-toolchain installed, it is very easy to
-        develop a project outside of the OpenEmbedded build system.
-        This section presents a simple "Helloworld" example that shows how
-        to set up, compile, and run the project.
-    </para>
-
-    <section id='creating-and-running-a-project-based-on-gnu-autotools'>
-        <title>Creating and Running a Project Based on GNU Autotools</title>
-
-        <para>
-            Follow these steps to create a simple Autotools-based project:
-            <orderedlist>
-                <listitem><para><emphasis>Create your directory:</emphasis>
-                    Create a clean directory for your project and then make
-                    that directory your working location:
-                    <literallayout class='monospaced'>
-     $ mkdir $HOME/helloworld
-     $ cd $HOME/helloworld
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Populate the directory:</emphasis>
-                    Create <filename>hello.c</filename>, <filename>Makefile.am</filename>,
-                    and <filename>configure.in</filename> files as follows:
-                    <itemizedlist>
-                        <listitem><para>For <filename>hello.c</filename>, include
-                            these lines:
-                            <literallayout class='monospaced'>
-     #include &lt;stdio.h&gt;
-
-     main()
-        {
-           printf("Hello World!\n");
-        }
-                            </literallayout></para></listitem>
-                        <listitem><para>For <filename>Makefile.am</filename>,
-                            include these lines:
-                            <literallayout class='monospaced'>
-     bin_PROGRAMS = hello
-     hello_SOURCES = hello.c
-                            </literallayout></para></listitem>
-                        <listitem><para>For <filename>configure.in</filename>,
-                            include these lines:
-                            <literallayout class='monospaced'>
-     AC_INIT(hello.c)
-     AM_INIT_AUTOMAKE(hello,0.1)
-     AC_PROG_CC
-     AC_PROG_INSTALL
-     AC_OUTPUT(Makefile)
-                            </literallayout></para></listitem>
-                    </itemizedlist></para></listitem>
-                <listitem><para><emphasis>Source the cross-toolchain
-                    environment setup file:</emphasis>
-                    Installation of the cross-toolchain creates a cross-toolchain
-                    environment setup script in the directory that the SDK
-                    was installed.
-                    Before you can use the tools to develop your project, you must
-                    source this setup script.
-                    The script begins with the string "environment-setup" and contains
-                    the machine architecture, which is followed by the string
-                    "poky-linux".
-                    Here is an example that sources a script from the
-                    default SDK installation directory that uses the
-                    32-bit Intel x86 Architecture and the
-                    &DISTRO_NAME; Yocto Project release:
-                    <literallayout class='monospaced'>
-     $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Generate the local aclocal.m4
-                    files and create the configure script:</emphasis>
-                    The following GNU Autotools generate the local
-                    <filename>aclocal.m4</filename> files and create the
-                    configure script:
-                    <literallayout class='monospaced'>
-     $ aclocal
-     $ autoconf
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Generate files needed by GNU
-                    coding standards:</emphasis>
-                    GNU coding standards require certain files in order for the
-                    project to be compliant.
-                    This command creates those files:
-                    <literallayout class='monospaced'>
-     $ touch NEWS README AUTHORS ChangeLog
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Generate the configure
-                    file:</emphasis>
-                    This command generates the <filename>configure</filename>:
-                    <literallayout class='monospaced'>
-     $ automake -a
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Cross-compile the project:</emphasis>
-                    This command compiles the project using the cross-compiler.
-                    The
-                    <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink>
-                    environment variable provides the minimal arguments for
-                    GNU configure:
-                    <literallayout class='monospaced'>
-     $ ./configure ${CONFIGURE_FLAGS}
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Make and install the project:</emphasis>
-                    These two commands generate and install the project into the
-                    destination directory:
-                    <literallayout class='monospaced'>
-     $ make
-     $ make install DESTDIR=./tmp
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Verify the installation:</emphasis>
-                    This command is a simple way to verify the installation
-                    of your project.
-                    Running the command prints the architecture on which
-                    the binary file can run.
-                    This architecture should be the same architecture that
-                    the installed cross-toolchain supports.
-                    <literallayout class='monospaced'>
-     $ file ./tmp/usr/local/bin/hello
-                    </literallayout></para></listitem>
-                <listitem><para><emphasis>Execute your project:</emphasis>
-                    To execute the project in the shell, simply enter the name.
-                    You could also copy the binary to the actual target hardware
-                    and run the project there as well:
-                    <literallayout class='monospaced'>
-     $ ./hello
-                    </literallayout>
-                    As expected, the project displays the "Hello World!" message.
-                    </para></listitem>
-            </orderedlist>
-        </para>
-    </section>
-
-    <section id='passing-host-options'>
-        <title>Passing Host Options</title>
-
-        <para>
-            For an Autotools-based project, you can use the cross-toolchain by just
-            passing the appropriate host option to <filename>configure.sh</filename>.
-            The host option you use is derived from the name of the environment setup
-            script found in the directory in which you installed the cross-toolchain.
-            For example, the host option for an ARM-based target that uses the GNU EABI
-            is <filename>armv5te-poky-linux-gnueabi</filename>.
-            You will notice that the name of the script is
-            <filename>environment-setup-armv5te-poky-linux-gnueabi</filename>.
-            Thus, the following command works to update your project and
-            rebuild it using the appropriate cross-toolchain tools:
-            <literallayout class='monospaced'>
-     $ ./configure --host=armv5te-poky-linux-gnueabi \
-        --with-libtool-sysroot=<replaceable>sysroot_dir</replaceable>
+      $ . /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
             </literallayout>
-            <note>
-                If the <filename>configure</filename> script results in problems recognizing the
-                <filename>--with-libtool-sysroot=</filename><replaceable>sysroot-dir</replaceable> option,
-                regenerate the script to enable the support by doing the following and then
-                run the script again:
-                <literallayout class='monospaced'>
-     $ libtoolize --automake
-     $ aclocal -I ${OECORE_NATIVE_SYSROOT}/usr/share/aclocal \
-        [-I <replaceable>dir_containing_your_project-specific_m4_macros</replaceable>]
-     $ autoconf
-     $ autoheader
-     $ automake -a
-                </literallayout>
-            </note>
-        </para>
-    </section>
-</section>
-
-<section id='makefile-based-projects'>
-    <title>Makefile-Based Projects</title>
-
-    <para>
-        For Makefile-based projects, the cross-toolchain environment variables
-        established by running the cross-toolchain environment setup script
-        are subject to general <filename>make</filename> rules.
-    </para>
-
-    <para>
-        To illustrate this, consider the following four cross-toolchain
-        environment variables:
-        <literallayout class='monospaced'>
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'>CC</ulink>=i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/1.8/sysroots/i586-poky-linux
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'>LD</ulink>=i586-poky-linux-ld --sysroot=/opt/poky/1.8/sysroots/i586-poky-linux
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CFLAGS'>CFLAGS</ulink>=-O2 -pipe -g -feliminate-unused-debug-types
-     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXXFLAGS'>CXXFLAGS</ulink>=-O2 -pipe -g -feliminate-unused-debug-types
-        </literallayout>
-        Now, consider the following three cases:
-        <itemizedlist>
-            <listitem><para><emphasis>Case 1 - No Variables Set in the <filename>Makefile</filename>:</emphasis>
-                Because these variables are not specifically set in the
-                <filename>Makefile</filename>, the variables retain their
-                values based on the environment.
-                </para></listitem>
-            <listitem><para><emphasis>Case 2 - Variables Set in the <filename>Makefile</filename>:</emphasis>
-                Specifically setting variables in the
-                <filename>Makefile</filename> during the build results in the
-                environment settings of the variables being overwritten.
-                </para></listitem>
-            <listitem><para><emphasis>Case 3 - Variables Set when the <filename>Makefile</filename> is Executed from the Command Line:</emphasis>
-                Executing the <filename>Makefile</filename> from the command
-                line results in the variables being overwritten with
-                command-line content regardless of what is being set in the
-                <filename>Makefile</filename>.
-                In this case, environment variables are not considered unless
-                you use the "-e" flag during the build:
-                <literallayout class='monospaced'>
-     $ make -e <replaceable>file</replaceable>
-                </literallayout>
-                If you use this flag, then the environment values of the
-                variables override any variables specifically set in the
-                <filename>Makefile</filename>.
-                </para></listitem>
-        </itemizedlist>
-        <note>
-            For the list of variables set up by the cross-toolchain environment
-            setup script, see the
-            "<link linkend='sdk-running-the-sdk-environment-setup-script'>Running the SDK Environment Setup Script</link>"
-            section.
-        </note>
-    </para>
-</section>
-
-<section id='sdk-developing-applications-using-eclipse'>
-    <title>Developing Applications Using <trademark class='trade'>Eclipse</trademark></title>
-
-    <para>
-        If you are familiar with the popular Eclipse IDE, you can use an
-        Eclipse Yocto Plug-in to allow you to develop, deploy, and test your
-        application all from within Eclipse.
-        This section describes general workflow using the SDK and Eclipse
-        and how to configure and set up Eclipse.
-    </para>
-
-    <section id='workflow-using-eclipse'>
-
-        <title>Workflow Using <trademark class='trade'>Eclipse</trademark></title>
-
-        <para>
-            The following figure and supporting list summarize the application
-            development general workflow that employs both the SDK Eclipse.
         </para>
 
         <para>
-            <imagedata fileref="figures/sdk-eclipse-dev-flow.png"
-                width="7in" depth="7in" align="center" scale="100" />
-        </para>
-
-        <para>
-            <orderedlist>
-                <listitem><para><emphasis>Prepare the host system for the Yocto Project</emphasis>:
-                    See
-                    "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
-                    and
-                    "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>" sections both
-                    in the Yocto Project Reference Manual for requirements.
-                    In particular, be sure your host system has the
-                    <filename>xterm</filename> package installed.
-                    </para></listitem>
-                <listitem><para><emphasis>Secure the Yocto Project kernel target image</emphasis>:
-                    You must have a target kernel image that has been built using the OpenEmbedded
-                    build system.</para>
-                    <para>Depending on whether the Yocto Project has a pre-built image that matches your target
-                    architecture and where you are going to run the image while you develop your application
-                    (QEMU or real hardware), the area from which you get the image differs.
-                        <itemizedlist>
-                            <listitem><para>Download the image from
-                                <ulink url='&YOCTO_MACHINES_DL_URL;'><filename>machines</filename></ulink>
-                                if your target architecture is supported and you are going to develop
-                                and test your application on actual hardware.</para></listitem>
-                            <listitem><para>Download the image from
-                                <ulink url='&YOCTO_QEMU_DL_URL;'>
-                                <filename>machines/qemu</filename></ulink> if your target architecture is supported
-                                and you are going to develop and test your application using the QEMU
-                                emulator.</para></listitem>
-                            <listitem><para>Build your image if you cannot find a pre-built image that matches
-                                your target architecture.
-                                If your target architecture is similar to a supported architecture, you can
-                                modify the kernel image before you build it.
-                                See the
-                                "<ulink url='&YOCTO_DOCS_DEV_URL;#patching-the-kernel'>Patching the Kernel</ulink>"
-                                section in the Yocto Project Development
-                                manual for an example.</para></listitem>
-                        </itemizedlist></para>
-                    <para>For information on pre-built kernel image naming schemes for images
-                    that can run on the QEMU emulator, see the
-                    <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-manual'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>.
-                    </para></listitem>
-                <listitem><para><emphasis>Install the SDK</emphasis>:
-                    The SDK provides a target-specific cross-development toolchain, the root filesystem,
-                    the QEMU emulator, and other tools that can help you develop your application.
-                    For information on how to install the SDK, see the
-                    "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
-                    section.
-                    </para></listitem>
-                <listitem><para><emphasis>Secure the target root filesystem
-                    and the Cross-development toolchain</emphasis>:
-                    You need to find and download the appropriate root filesystem and
-                    the cross-development toolchain.</para>
-                    <para>You can find the tarballs for the root filesystem in the same area used
-                    for the kernel image.
-                    Depending on the type of image you are running, the root filesystem you need differs.
-                    For example, if you are developing an application that runs on an image that
-                    supports Sato, you need to get a root filesystem that supports Sato.</para>
-                    <para>You can find the cross-development toolchains at
-                    <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'><filename>toolchains</filename></ulink>.
-                    Be sure to get the correct toolchain for your development host and your
-                    target architecture.
-                    See the "<link linkend='sdk-locating-pre-built-sdk-installers'>Locating Pre-Built SDK Installers</link>"
-                    section for information and the
-                    "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
-                    section for installation information.
-                    </para></listitem>
-                <listitem><para><emphasis>Create and build your application</emphasis>:
-                    At this point, you need to have source files for your application.
-                    Once you have the files, you can use the Eclipse IDE to import them and build the
-                    project.
-                    If you are not using Eclipse, you need to use the cross-development tools you have
-                    installed to create the image.</para></listitem>
-                <listitem><para><emphasis>Deploy the image with the application</emphasis>:
-                    If you are using the Eclipse IDE, you can deploy your image to the hardware or to
-                    QEMU through the project's preferences.
-                    If you are not using the Eclipse IDE, then you need to deploy the application
-                    to the hardware using other methods.
-                    Or, if you are using QEMU, you need to use that tool and
-                    load your image in for testing.
-                    See the
-                    "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
-                    chapter in the Yocto Project Development Manual
-                    for information on using QEMU.
-                    </para></listitem>
-                <listitem><para><emphasis>Test and debug the application</emphasis>:
-                    Once your application is deployed, you need to test it.
-                    Within the Eclipse IDE, you can use the debugging environment along with the
-                    set of installed user-space tools to debug your application.
-                    Of course, the same user-space tools are available separately if you choose
-                    not to use the Eclipse IDE.</para></listitem>
-           </orderedlist>
+            Again, reference the
+            "<link linkend='sdk-installed-standard-sdk-directory-structure'>Installed Standard SDK Directory Structure</link>"
+            section for more details on the resulting directory structure of
+            the installed SDK.
         </para>
     </section>
 
-    <section id='adt-eclipse'>
-        <title>Working Within Eclipse</title>
+    <section id='sdk-running-the-sdk-environment-setup-script'>
+        <title>Running the SDK Environment Setup Script</title>
 
         <para>
-            The Eclipse IDE is a popular development environment and it fully
-            supports development using the Yocto Project.
-            <note>
-                This release of the Yocto Project supports both the Luna
-                and Kepler versions of the Eclipse IDE.
-                Thus, the following information provides setup information for
-                both versions.
-            </note>
+            Once you have the SDK installed, you must run the SDK environment
+            setup script before you can actually use it.
+            This setup script resides in the directory you chose when you
+            installed the SDK.
+            For information on where this setup script can reside, see the
+            "<link linkend='sdk-appendix-obtain'>Obtaining the SDK</link>"
+            Appendix.
         </para>
 
         <para>
-            When you install and configure the Eclipse Yocto Project Plug-in
-            into the Eclipse IDE, you maximize your Yocto Project experience.
-            Installing and configuring the Plug-in results in an environment
-            that has extensions specifically designed to let you more easily
-            develop software.
-            These extensions allow for cross-compilation, deployment, and
-            execution of your output into a QEMU emulation session as well as
-            actual target hardware.
-            You can also perform cross-debugging and profiling.
-            The environment also supports a suite of tools that allows you
-            to perform remote profiling, tracing, collection of power data,
-            collection of latency data, and collection of performance data.
+            Before running the script, be sure it is the one that matches the
+            architecture for which you are developing.
+            Environment setup scripts begin with the string
+            "<filename>environment-setup</filename>" and include as part of
+            their name the tuned target architecture.
+            For example, the command to source a setup script for an IA-based
+            target machine using i586 tuning and located in the default SDK
+            installation directory is as follows:
+            <literallayout class='monospaced'>
+     $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
+            </literallayout>
+            When you run the setup script, the same environment variables are
+            defined as are when you run the setup script for an extensible SDK.
+            See the
+            "<link linkend='sdk-running-the-extensible-sdk-environment-setup-script'>Running the Extensible SDK Environment Setup Script</link>"
+            section for more information.
         </para>
-
-        <para>
-            This section describes how to install and configure the Eclipse IDE
-            Yocto Plug-in and how to use it to develop your application.
-        </para>
-
-        <section id='setting-up-the-eclipse-ide'>
-            <title>Setting Up the Eclipse IDE</title>
-
-            <para>
-                To develop within the Eclipse IDE, you need to do the following:
-                <orderedlist>
-                    <listitem><para>Install the optimal version of the Eclipse
-                       IDE.</para></listitem>
-                    <listitem><para>Configure the Eclipse IDE.
-                       </para></listitem>
-                    <listitem><para>Install the Eclipse Yocto Plug-in.
-                       </para></listitem>
-                    <listitem><para>Configure the Eclipse Yocto Plug-in.
-                       </para></listitem>
-                </orderedlist>
-                <note>
-                    Do not install Eclipse from your distribution's package
-                    repository.
-                    Be sure to install Eclipse from the official Eclipse
-                    download site as directed in the next section.
-                </note>
-            </para>
-
-            <section id='installing-eclipse-ide'>
-                <title>Installing the Eclipse IDE</title>
-
-                <para>
-                    It is recommended that you have the Luna SR2 (4.4.2)
-                    version of the Eclipse IDE installed on your development
-                    system.
-                    However, if you currently have the Kepler 4.3.2 version
-                    installed and you do not want to upgrade the IDE, you can
-                    configure Kepler to work with the Yocto Project.
-                </para>
-
-                <para>
-                    If you do not have the Luna SR2 (4.4.2) Eclipse IDE
-                    installed, you can find the tarball at
-                    <ulink url='&ECLIPSE_MAIN_URL;'></ulink>.
-                    From that site, choose the appropriate download from the
-                    "Eclipse IDE for C/C++ Developers".
-                    This version contains the Eclipse Platform, the Java
-                    Development Tools (JDT), and the Plug-in Development
-                    Environment.
-                </para>
-
-                <para>
-                    Once you have downloaded the tarball, extract it into a
-                    clean directory.
-                    For example, the following commands unpack and install the
-                    downloaded Eclipse IDE tarball into a clean directory
-                    using the default name <filename>eclipse</filename>:
-                    <literallayout class='monospaced'>
-     $ cd ~
-     $ tar -xzvf ~/Downloads/eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz
-                    </literallayout>
-                </para>
-            </section>
-
-            <section id='configuring-the-eclipse-ide'>
-                <title>Configuring the Eclipse IDE</title>
-
-                <para>
-                    This section presents the steps needed to configure the
-                    Eclipse IDE.
-                </para>
-
-                <para>
-                    Before installing and configuring the Eclipse Yocto Plug-in,
-                    you need to configure the Eclipse IDE.
-                    Follow these general steps:
-                    <orderedlist>
-                        <listitem><para>Start the Eclipse IDE.</para></listitem>
-                        <listitem><para>Make sure you are in your Workbench and
-                            select "Install New Software" from the "Help"
-                            pull-down menu.</para></listitem>
-                        <listitem><para>Select
-                            <filename>Luna - &ECLIPSE_LUNA_URL;</filename>
-                            from the "Work with:" pull-down menu.
-                            <note>
-                                For Kepler, select
-                                <filename>Kepler - &ECLIPSE_KEPLER_URL;</filename>
-                            </note>
-                            </para></listitem>
-                        <listitem><para>Expand the box next to "Linux Tools"
-                            and select the
-                            <filename>Linux Tools LTTng Tracer Control</filename>,
-                            <filename>Linux Tools LTTng Userspace Analysis</filename>,
-                            and
-                            <filename>LTTng Kernel Analysis</filename> boxes.
-                            If these selections do not appear in the list,
-                            that means the items are already installed.
-                            <note>
-                                For Kepler, select
-                                <filename>LTTng - Linux Tracing Toolkit</filename>
-                                box.
-                            </note>
-                            </para></listitem>
-                        <listitem><para>Expand the box next to "Mobile and
-                            Device Development" and select the following boxes.
-                            Again, if any of the following items are not
-                            available for selection, that means the items are
-                            already installed:
-                            <itemizedlist>
-                                <listitem><para><filename>C/C++ Remote Launch (Requires RSE Remote System Explorer)</filename></para></listitem>
-                                <listitem><para><filename>Remote System Explorer End-user Runtime</filename></para></listitem>
-                                <listitem><para><filename>Remote System Explorer User Actions</filename></para></listitem>
-                                <listitem><para><filename>Target Management Terminal (Core SDK)</filename></para></listitem>
-                                <listitem><para><filename>TCF Remote System Explorer add-in</filename></para></listitem>
-                                <listitem><para><filename>TCF Target Explorer</filename></para></listitem>
-                            </itemizedlist></para></listitem>
-                        <listitem><para>Expand the box next to "Programming
-                            Languages" and select the
-                            <filename>C/C++ Autotools Support</filename>
-                            and <filename>C/C++ Development Tools</filename>
-                            boxes.
-                            For Luna, these items do not appear on the list
-                            as they are already installed.
-                            </para></listitem>
-                        <listitem><para>Complete the installation and restart
-                            the Eclipse IDE.</para></listitem>
-                    </orderedlist>
-                </para>
-            </section>
-
-            <section id='installing-the-eclipse-yocto-plug-in'>
-                <title>Installing or Accessing the Eclipse Yocto Plug-in</title>
-
-                <para>
-                    You can install the Eclipse Yocto Plug-in into the Eclipse
-                    IDE one of two ways:  use the Yocto Project's Eclipse
-                    Update site to install the pre-built plug-in or build and
-                    install the plug-in from the latest source code.
-                </para>
-
-                <section id='new-software'>
-                    <title>Installing the Pre-built Plug-in from the Yocto Project Eclipse Update Site</title>
-
-                    <para>
-                        To install the Eclipse Yocto Plug-in from the update
-                        site, follow these steps:
-                        <orderedlist>
-                            <listitem><para>Start up the Eclipse IDE.
-                                </para></listitem>
-                            <listitem><para>In Eclipse, select "Install New
-                                Software" from the "Help" menu.
-                                </para></listitem>
-                            <listitem><para>Click "Add..." in the "Work with:"
-                                area.</para></listitem>
-                           <listitem><para>Enter
-                                <filename>&ECLIPSE_DL_PLUGIN_URL;/luna</filename>
-                                in the URL field and provide a meaningful name
-                                in the "Name" field.
-                                <note>
-                                    If you are using Kepler, use
-                                    <filename>&ECLIPSE_DL_PLUGIN_URL;/kepler</filename>
-                                    in the URL field.
-                                </note></para></listitem>
-                            <listitem><para>Click "OK" to have the entry added
-                                to the "Work with:" drop-down list.
-                                </para></listitem>
-                            <listitem><para>Select the entry for the plug-in
-                                from the "Work with:" drop-down list.
-                                </para></listitem>
-                            <listitem><para>Check the boxes next to
-                                <filename>Yocto Project ADT Plug-in</filename>,
-                                <filename>Yocto Project Bitbake Commander Plug-in</filename>,
-                                and
-                                <filename>Yocto Project Documentation plug-in</filename>.
-                                </para></listitem>
-                            <listitem><para>Complete the remaining software
-                                installation steps and then restart the Eclipse
-                                IDE to finish the installation of the plug-in.
-                                <note>
-                                    You can click "OK" when prompted about
-                                    installing software that contains unsigned
-                                    content.
-                                </note>
-                                </para></listitem>
-                        </orderedlist>
-                    </para>
-                </section>
-
-               <section id='zip-file-method'>
-                   <title>Installing the Plug-in Using the Latest Source Code</title>
-
-                   <para>
-                        To install the Eclipse Yocto Plug-in from the latest
-                        source code, follow these steps:
-                        <orderedlist>
-                            <listitem><para>Be sure your development system
-                                is not using OpenJDK to build the plug-in
-                                by doing the following:
-                                <orderedlist>
-                                    <listitem><para>Use the Oracle JDK.
-                                        If you don't have that, go to
-                                        <ulink url='http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html'></ulink>
-                                        and download the latest appropriate
-                                        Java SE Development Kit tarball for
-                                        your development system and
-                                        extract it into your home directory.
-                                        </para></listitem>
-                                    <listitem><para>In the shell you are going
-                                        to do your work, export the location of
-                                        the Oracle Java.
-                                        The previous step creates a new folder
-                                        for the extracted software.
-                                        You need to use the following
-                                        <filename>export</filename> command
-                                        and provide the specific location:
-                                        <literallayout class='monospaced'>
-     export PATH=~/<replaceable>extracted_jdk_location</replaceable>/bin:$PATH
-                                        </literallayout>
-                                        </para></listitem>
-                                </orderedlist>
-                                </para></listitem>
-                            <listitem><para>In the same shell, create a Git
-                                repository with:
-                                <literallayout class='monospaced'>
-     $ cd ~
-     $ git clone git://git.yoctoproject.org/eclipse-poky
-                                </literallayout>
-                                </para></listitem>
-                            <listitem><para>Be sure to checkout the correct
-                                tag.
-                                For example, if you are using Luna, do the
-                                following:
-                                <literallayout class='monospaced'>
-     $ git checkout luna/yocto-&DISTRO;
-                                </literallayout>
-                                This puts you in a detached HEAD state, which
-                                is fine since you are only going to be building
-                                and not developing.
-                                <note>
-                                    If you are building kepler, checkout the
-                                    <filename>kepler/yocto-&DISTRO;</filename>
-                                    branch.
-                                </note>
-                                </para></listitem>
-                            <listitem><para>Change to the
-                                <filename>scripts</filename>
-                                directory within the Git repository:
-                                <literallayout class='monospaced'>
-     $ cd scripts
-                                </literallayout>
-                                </para></listitem>
-                            <listitem><para>Set up the local build environment
-                                by running the setup script:
-                                <literallayout class='monospaced'>
-     $ ./setup.sh
-                                </literallayout>
-                                </para></listitem>
-                            <listitem><para>When the script finishes execution,
-                                it prompts you with instructions on how to run
-                                the <filename>build.sh</filename> script, which
-                                is also in the <filename>scripts</filename>
-                                directory of the Git repository created
-                                earlier.
-                                </para></listitem>
-                            <listitem><para>Run the <filename>build.sh</filename>
-                                script as directed.
-                                Be sure to provide the tag name, documentation
-                                branch, and a release name.
-                                Here is an example that uses the
-                                <filename>luna/yocto-&DISTRO;</filename> tag, the
-                                <filename>master</filename> documentation
-                                branch, and
-                                <filename>&DISTRO_NAME_NO_CAP;</filename> for the
-                                release name:
-                                <literallayout class='monospaced'>
-     $ ECLIPSE_HOME=/home/scottrif/eclipse-poky/scripts/eclipse ./build.sh luna/yocto-&DISTRO; master &DISTRO_NAME_NO_CAP; 2>&amp;1 | tee -a build.log
-                                </literallayout>
-                                After running the script, the file
-                                <filename>org.yocto.sdk-</filename><replaceable>release</replaceable><filename>-</filename><replaceable>date</replaceable><filename>-archive.zip</filename>
-                                is in the current directory.
-                                </para></listitem>
-                            <listitem><para>If necessary, start the Eclipse IDE
-                                and be sure you are in the Workbench.
-                                </para></listitem>
-                            <listitem><para>Select "Install New Software" from
-                                the "Help" pull-down menu.
-                                </para></listitem>
-                            <listitem><para>Click "Add".</para></listitem>
-                            <listitem><para>Provide anything you want in the
-                                "Name" field.
-                                </para></listitem>
-                            <listitem><para>Click "Archive" and browse to the
-                                ZIP file you built in step eight.
-                                This ZIP file should not be "unzipped", and must
-                                be the <filename>*archive.zip</filename> file
-                                created by running the
-                                <filename>build.sh</filename> script.
-                                </para></listitem>
-                            <listitem><para>Click the "OK" button.
-                                </para></listitem>
-                            <listitem><para>Check the boxes that appear in
-                                the installation window to install the
-                                <filename>Yocto Project ADT Plug-in</filename>,
-                                <filename>Yocto Project Bitbake Commander Plug-in</filename>,
-                                and the
-                                <filename>Yocto Project Documentation plug-in</filename>.
-                                </para></listitem>
-                            <listitem><para>Finish the installation by clicking
-                                through the appropriate buttons.
-                                You can click "OK" when prompted about
-                                installing software that contains unsigned
-                                content.
-                                </para></listitem>
-                            <listitem><para>Restart the Eclipse IDE if
-                                necessary.
-                                </para></listitem>
-                        </orderedlist>
-                    </para>
-
-                    <para>
-                        At this point you should be able to configure the
-                        Eclipse Yocto Plug-in as described in the
-                        "<link linkend='configuring-the-eclipse-yocto-plug-in'>Configuring the Eclipse Yocto Plug-in</link>"
-                        section.</para>
-                </section>
-            </section>
-
-            <section id='configuring-the-eclipse-yocto-plug-in'>
-                <title>Configuring the Eclipse Yocto Plug-in</title>
-
-                <para>
-                    Configuring the Eclipse Yocto Plug-in involves setting the
-                    Cross Compiler options and the Target options.
-                    The configurations you choose become the default settings
-                    for all projects.
-                    You do have opportunities to change them later when
-                    you configure the project (see the following section).
-                </para>
-
-                <para>
-                    To start, you need to do the following from within the
-                    Eclipse IDE:
-                    <itemizedlist>
-                        <listitem><para>Choose "Preferences" from the
-                            "Window" menu to display the Preferences Dialog.
-                            </para></listitem>
-                        <listitem><para>Click "Yocto Project ADT" to display
-                            the configuration screen.
-                            </para></listitem>
-                    </itemizedlist>
-                </para>
-
-                <section id='configuring-the-cross-compiler-options'>
-                    <title>Configuring the Cross-Compiler Options</title>
-
-                    <para>
-                        To configure the Cross Compiler Options, you must select
-                        the type of toolchain, point to the toolchain, specify
-                        the sysroot location, and select the target
-                        architecture.
-                        <itemizedlist>
-                            <listitem><para><emphasis>Selecting the Toolchain Type:</emphasis>
-                                Choose between
-                                <filename>Standalone pre-built toolchain</filename>
-                                and
-                                <filename>Build system derived toolchain</filename>
-                                for Cross Compiler Options.
-                                    <itemizedlist>
-                                        <listitem><para><emphasis>
-                                            <filename>Standalone Pre-built Toolchain:</filename></emphasis>
-                                            Select this mode when you are using
-                                            a stand-alone cross-toolchain.
-                                            For example, suppose you are an
-                                            application developer and do not
-                                            need to build a target image.
-                                            Instead, you just want to use an
-                                            architecture-specific toolchain on
-                                            an existing kernel and target root
-                                            filesystem.</para></listitem>
-                                       <listitem><para><emphasis>
-                                            <filename>Build System Derived Toolchain:</filename></emphasis>
-                                            Select this mode if the
-                                            cross-toolchain has been installed
-                                            and built as part of the
-                                            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
-                                            When you select
-                                            <filename>Build system derived toolchain</filename>,
-                                            you are using the toolchain bundled
-                                            inside the Build Directory.
-                                            </para></listitem>
-                                    </itemizedlist>
-                                </para></listitem>
-                            <listitem><para><emphasis>Point to the Toolchain:</emphasis>
-                                If you are using a stand-alone pre-built
-                                toolchain, you should be pointing to where it is
-                                installed.
-                                See the
-                                "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
-                                section for information about how the SDK is
-                                installed.</para>
-                                <para>If you are using a system-derived
-                                toolchain, the path you provide for the
-                                <filename>Toolchain Root Location</filename>
-                                field is the
-                                <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
-                                See the
-                                "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
-                                section.</para></listitem>
-                            <listitem><para><emphasis>Specify the Sysroot Location:</emphasis>
-                                This location is where the root filesystem for
-                                the target hardware resides.
-                                </para>
-                                <para>The location of
-                                the sysroot filesystem depends on where you
-                                separately extracted and installed the
-                                filesystem.</para>
-                                <para>For information on how to install the
-                                toolchain and on how to extract and install the
-                                sysroot filesystem, see the
-                                "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
-                                section.
-                                </para></listitem>
-                            <listitem><para><emphasis>Select the Target Architecture:</emphasis>
-                                The target architecture is the type of hardware
-                                you are going to use or emulate.
-                                Use the pull-down
-                                <filename>Target Architecture</filename> menu
-                                to make your selection.
-                                The pull-down menu should have the supported
-                                architectures.
-                                If the architecture you need is not listed in
-                                the menu, you will need to build the image.
-                                See the
-                                "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
-                                section of the Yocto Project Quick Start for
-                                more information.</para></listitem>
-                        </itemizedlist>
-                    </para>
-                </section>
-
-                <section id='configuring-the-target-options'>
-                    <title>Configuring the Target Options</title>
-
-                    <para>
-                        You can choose to emulate hardware using the QEMU
-                        emulator, or you can choose to run your image on actual
-                        hardware.
-                        <itemizedlist>
-                            <listitem><para><emphasis>QEMU:</emphasis>
-                                Select this option if you will be using the
-                                QEMU emulator.
-                                If you are using the emulator, you also need to
-                                locate the kernel and specify any custom
-                                options.</para>
-                                <para>If you selected
-                                <filename>Build system derived toolchain</filename>,
-                                the target kernel you built will be located in
-                                the Build Directory in
-                                <filename>tmp/deploy/images/<replaceable>machine</replaceable></filename>
-                                directory.
-                                If you selected
-                                <filename>Standalone pre-built toolchain</filename>,
-                                the pre-built image you downloaded is located
-                                in the directory you specified when you
-                                downloaded the image.</para>
-                                <para>Most custom options are for advanced QEMU
-                                users to further customize their QEMU instance.
-                                These options are specified between paired
-                                angled brackets.
-                                Some options must be specified outside the
-                                brackets.
-                                In particular, the options
-                                <filename>serial</filename>,
-                                <filename>nographic</filename>, and
-                                <filename>kvm</filename> must all be outside the
-                                brackets.
-                                Use the <filename>man qemu</filename> command
-                                to get help on all the options and their use.
-                                The following is an example:
-                               <literallayout class='monospaced'>
-    serial ‘&lt;-m 256 -full-screen&gt;’
-                                </literallayout></para>
-                                <para>
-                                Regardless of the mode, Sysroot is already
-                                defined as part of the Cross-Compiler Options
-                                configuration in the
-                                <filename>Sysroot Location:</filename> field.
-                                </para></listitem>
-                            <listitem><para><emphasis>External HW:</emphasis>
-                                Select this option if you will be using actual
-                                hardware.</para></listitem>
-                        </itemizedlist>
-                    </para>
-
-                    <para>
-                        Click the "OK" to save your plug-in configurations.
-                    </para>
-                </section>
-            </section>
-        </section>
-
-        <section id='creating-the-project'>
-            <title>Creating the Project</title>
-
-            <para>
-                You can create two types of projects:  Autotools-based, or
-                Makefile-based.
-                This section describes how to create Autotools-based projects
-                from within the Eclipse IDE.
-                For information on creating Makefile-based projects in a
-                terminal window, see the
-                "<link linkend='makefile-based-projects'>Makefile-Based Projects</link>"
-                section.
-                <note>
-                    Do not use special characters in project names
-                    (e.g. spaces, underscores, etc.).  Doing so can
-                    cause configuration to fail.
-                </note>
-            </para>
-
-            <para>
-                To create a project based on a Yocto template and then display
-                the source code, follow these steps:
-                <orderedlist>
-                    <listitem><para>Select "Project" from the "File -> New" menu.
-                        </para></listitem>
-                    <listitem><para>Double click <filename>CC++</filename>.
-                        </para></listitem>
-                    <listitem><para>Double click <filename>C Project</filename>
-                        to create the project.</para></listitem>
-                    <listitem><para>Expand <filename>Yocto Project ADT Autotools Project</filename>.
-                        </para></listitem>
-                    <listitem><para>Select <filename>Hello World ANSI C Autotools Project</filename>.
-                        This is an Autotools-based project based on a Yocto
-                        template.</para></listitem>
-                    <listitem><para>Put a name in the <filename>Project name:</filename>
-                        field.
-                        Do not use hyphens as part of the name.
-                        </para></listitem>
-                    <listitem><para>Click "Next".</para></listitem>
-                    <listitem><para>Add information in the
-                        <filename>Author</filename> and
-                        <filename>Copyright notice</filename> fields.
-                        </para></listitem>
-                    <listitem><para>Be sure the <filename>License</filename>
-                        field is correct.</para></listitem>
-                    <listitem><para>Click "Finish".</para></listitem>
-                    <listitem><para>If the "open perspective" prompt appears,
-                        click "Yes" so that you in the C/C++ perspective.
-                        </para></listitem>
-                    <listitem><para>The left-hand navigation pane shows your
-                        project.
-                        You can display your source by double clicking the
-                        project's source file.</para></listitem>
-                </orderedlist>
-            </para>
-        </section>
-
-        <section id='configuring-the-cross-toolchains'>
-            <title>Configuring the Cross-Toolchains</title>
-
-            <para>
-                The earlier section,
-                "<link linkend='configuring-the-eclipse-yocto-plug-in'>Configuring the Eclipse Yocto Plug-in</link>",
-                sets up the default project configurations.
-                You can override these settings for a given project by following
-                these steps:
-                <orderedlist>
-                    <listitem><para>Select "Change Yocto Project Settings" from
-                        the "Project" menu.
-                        This selection brings up the Yocto Project Settings
-                        Dialog and allows you to make changes specific to an
-                        individual project.</para>
-                        <para>By default, the Cross Compiler Options and Target
-                        Options for a project are inherited from settings you
-                        provided using the Preferences Dialog as described
-                        earlier in the
-                        "<link linkend='configuring-the-eclipse-yocto-plug-in'>Configuring the Eclipse Yocto Plug-in</link>" section.
-                        The Yocto Project Settings Dialog allows you to override
-                        those default settings for a given project.
-                        </para></listitem>
-                    <listitem><para>Make your configurations for the project
-                        and click "OK".
-                        </para></listitem>
-                    <listitem><para>Right-click in the navigation pane and
-                        select "Reconfigure Project" from the pop-up menu.
-                        This selection reconfigures the project by running
-                        <filename>autogen.sh</filename> in the workspace for
-                        your project.
-                        The script also runs <filename>libtoolize</filename>,
-                        <filename>aclocal</filename>,
-                        <filename>autoconf</filename>,
-                        <filename>autoheader</filename>,
-                        <filename>automake --a</filename>, and
-                        <filename>./configure</filename>.
-                        Click on the "Console" tab beneath your source code to
-                        see the results of reconfiguring your project.
-                        </para></listitem>
-                </orderedlist>
-            </para>
-        </section>
-
-        <section id='building-the-project'>
-            <title>Building the Project</title>
-
-            <para>
-                To build the project select "Build Project" from the
-                "Project" menu.
-                The console should update and you can note the cross-compiler
-                you are using.
-                <note>
-                    When building "Yocto Project ADT Autotools" projects, the Eclipse
-                    IDE might display error messages for Functions/Symbols/Types
-                    that cannot be "resolved", even when the related include file
-                    is listed at the project navigator and when the project is
-                    able to build.
-                    For these cases only, it is recommended to add a new linked
-                    folder to the appropriate sysroot.
-                    Use these steps to add the linked folder:
-                    <orderedlist>
-                        <listitem><para>
-                            Select the project.
-                            </para></listitem>
-                        <listitem><para>
-                            Select "Folder" from the
-                            <filename>File > New</filename> menu.
-                            </para></listitem>
-                        <listitem><para>
-                            In the "New Folder" Dialog, select "Link to alternate
-                            location (linked folder)".
-                            </para></listitem>
-                        <listitem><para>
-                            Click "Browse" to navigate to the include folder inside
-                            the same sysroot location selected in the Yocto Project
-                            configuration preferences.
-                            </para></listitem>
-                        <listitem><para>
-                            Click "OK".
-                            </para></listitem>
-                        <listitem><para>
-                            Click "Finish" to save the linked folder.
-                            </para></listitem>
-                    </orderedlist>
-                </note>
-            </para>
-        </section>
-
-        <section id='starting-qemu-in-user-space-nfs-mode'>
-            <title>Starting QEMU in User-Space NFS Mode</title>
-
-            <para>
-                To start the QEMU emulator from within Eclipse, follow these
-                steps:
-                <note>
-                    See the
-                    "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
-                    chapter in the Yocto Project Development Manual
-                    for more information on using QEMU.
-                </note>
-                <orderedlist>
-                    <listitem><para>Expose and select "External Tools" from
-                        the "Run" menu.
-                        Your image should appear as a selectable menu item.
-                        </para></listitem>
-                    <listitem><para>Select your image from the menu to launch
-                        the emulator in a new window.
-                        </para></listitem>
-                    <listitem><para>If needed, enter your host root password in
-                        the shell window at the prompt.
-                        This sets up a <filename>Tap 0</filename> connection
-                        needed for running in user-space NFS mode.
-                        </para></listitem>
-                    <listitem><para>Wait for QEMU to launch.</para></listitem>
-                    <listitem><para>Once QEMU launches, you can begin operating
-                        within that environment.
-                        One useful task at this point would be to determine the
-                        IP Address for the user-space NFS by using the
-                       <filename>ifconfig</filename> command.
-                       </para></listitem>
-                </orderedlist>
-            </para>
-        </section>
-
-        <section id='deploying-and-debugging-the-application'>
-            <title>Deploying and Debugging the Application</title>
-
-            <para>
-                Once the QEMU emulator is running the image, you can deploy
-                your application using the Eclipse IDE and then use
-                the emulator to perform debugging.
-                Follow these steps to deploy the application.
-                <note>
-                    Currently, Eclipse does not support SSH port forwarding.
-                    Consequently, if you need to run or debug a remote
-                    application using the host display, you must create a
-                    tunneling connection from outside Eclipse and keep
-                    that connection alive during your work.
-                    For example, in a new terminal, run the following:
-                    <literallayout class='monospaced'>
-     ssh -XY user_name@remote_host_ip
-                    </literallayout>
-                    After running the command, add the command to be executed
-                    in Eclipse's run configuration before the application
-                    as follows:
-                    <literallayout class='monospaced'>
-     export DISPLAY=:10.0
-                    </literallayout>
-                </note>
-                <orderedlist>
-                    <listitem><para>Select "Debug Configurations..." from the
-                        "Run" menu.</para></listitem>
-                    <listitem><para>In the left area, expand
-                        <filename>C/C++Remote Application</filename>.
-                        </para></listitem>
-                    <listitem><para>Locate your project and select it to bring
-                        up a new tabbed view in the Debug Configurations Dialog.
-                        </para></listitem>
-                    <listitem><para>Enter the absolute path into which you want
-                        to deploy the application.
-                        Use the "Remote Absolute File Path for
-                        C/C++Application:" field.
-                        For example, enter
-                        <filename>/usr/bin/<replaceable>programname</replaceable></filename>.
-                        </para></listitem>
-                    <listitem><para>Click on the "Debugger" tab to see the
-                        cross-tool debugger you are using.</para></listitem>
-                    <listitem><para>Click on the "Main" tab.</para></listitem>
-                    <listitem><para>Create a new connection to the QEMU instance
-                        by clicking on "new".</para></listitem>
-                    <listitem><para>Select <filename>TCF</filename>, which means
-                        Target Communication Framework.</para></listitem>
-                    <listitem><para>Click "Next".</para></listitem>
-                    <listitem><para>Clear out the "host name" field and enter
-                        the IP Address determined earlier.</para></listitem>
-                    <listitem><para>Click "Finish" to close the
-                        New Connections Dialog.</para></listitem>
-                    <listitem><para>Use the drop-down menu now in the
-                        "Connection" field and pick the IP Address you entered.
-                         </para></listitem>
-                    <listitem><para>Click "Debug" to bring up a login screen
-                        and login.</para></listitem>
-                    <listitem><para>Accept the debug perspective.
-                        </para></listitem>
-                </orderedlist>
-            </para>
-        </section>
-
-        <section id='running-user-space-tools'>
-            <title>Running User-Space Tools</title>
-
-            <para>
-                As mentioned earlier in the manual, several tools exist that
-                enhance your development experience.
-                These tools are aids in developing and debugging applications
-                and images.
-                You can run these user-space tools from within the Eclipse
-                IDE through the "YoctoProjectTools" menu.
-            </para>
-
-            <para>
-                Once you pick a tool, you need to configure it for the remote
-                target.
-                Every tool needs to have the connection configured.
-                You must select an existing TCF-based RSE connection to the
-                remote target.
-                If one does not exist, click "New" to create one.
-            </para>
-
-            <para>
-                Here are some specifics about the remote tools:
-                <itemizedlist>
-                    <listitem><para><emphasis><filename>Lttng2.0 trace import</filename>:</emphasis>
-                        Selecting this tool transfers the remote target's
-                        <filename>Lttng</filename> tracing data back to the
-                        local host machine and uses the Lttng Eclipse plug-in
-                        to graphically display the output.
-                        For information on how to use Lttng to trace an
-                        application,
-                        see <ulink url='http://lttng.org/documentation'></ulink>
-                        and the
-                        "<ulink url='&YOCTO_DOCS_PROF_URL;#lttng-linux-trace-toolkit-next-generation'>LTTng (Linux Trace Toolkit, next generation)</ulink>"
-                        section, which is in the Yocto Project Profiling and
-                        Tracing Manual.
-                        <note>Do not use
-                            <filename>Lttng-user space (legacy)</filename> tool.
-                            This tool no longer has any upstream support.</note>
-                        </para>
-                        <para>Before you use the
-                        <filename>Lttng2.0 trace import</filename> tool,
-                        you need to setup the Lttng Eclipse plug-in and create a
-                        Tracing project.
-                        Do the following:
-                        <orderedlist>
-                            <listitem><para>Select "Open Perspective" from the
-                                "Window" menu and then select "Other..." to
-                                bring up a menu of other perspectives.
-                                Choose "Tracing".
-                                </para></listitem>
-                            <listitem><para>Click "OK" to change the Eclipse
-                                perspective into the Tracing perspective.
-                                </para></listitem>
-                            <listitem><para>Create a new Tracing project by
-                                selecting "Project" from the "File -> New" menu.
-                                </para></listitem>
-                            <listitem><para>Choose "Tracing Project" from the
-                                "Tracing" menu and click "Next".
-                                </para></listitem>
-                            <listitem><para>Provide a name for your tracing
-                                project and click "Finish".
-                                </para></listitem>
-                            <listitem><para>Generate your tracing data on the
-                                remote target.</para></listitem>
-                            <listitem><para>Select "Lttng2.0 trace import"
-                                from the "Yocto Project Tools" menu to
-                                start the data import process.</para></listitem>
-                            <listitem><para>Specify your remote connection name.
-                                </para></listitem>
-                            <listitem><para>For the Ust directory path, specify
-                                the location of your remote tracing data.
-                                Make sure the location ends with
-                                <filename>ust</filename> (e.g.
-                                <filename>/usr/mysession/ust</filename>).
-                                </para></listitem>
-                            <listitem><para>Click "OK" to complete the import
-                                process.
-                                The data is now in the local tracing project
-                                you created.</para></listitem>
-                            <listitem><para>Right click on the data and then use
-                                the menu to Select "Generic CTF Trace" from the
-                                "Trace Type... -> Common Trace Format" menu to
-                                map the tracing type.</para></listitem>
-                            <listitem><para>Right click the mouse and select
-                                "Open" to bring up the Eclipse Lttng Trace
-                                Viewer so you view the tracing data.
-                                </para></listitem>
-                        </orderedlist></para></listitem>
-                    <listitem><para><emphasis><filename>PowerTOP</filename>:</emphasis>
-                        Selecting this tool runs PowerTOP on the remote target
-                        machine and displays the results in a new view called
-                        PowerTOP.</para>
-                        <para>The "Time to gather data(sec):" field is the time
-                        passed in seconds before data is gathered from the
-                        remote target for analysis.</para>
-                        <para>The "show pids in wakeups list:" field corresponds
-                        to the <filename>-p</filename> argument passed to
-                        <filename>PowerTOP</filename>.</para></listitem>
-                    <listitem><para><emphasis><filename>LatencyTOP and Perf</filename>:</emphasis>
-                        LatencyTOP identifies system latency, while
-                        Perf monitors the system's performance counter
-                        registers.
-                        Selecting either of these tools causes an RSE terminal
-                        view to appear from which you can run the tools.
-                        Both tools refresh the entire screen to display results
-                        while they run.
-                        For more information on setting up and using
-                        <filename>perf</filename>, see the
-                        "<ulink url='&YOCTO_DOCS_PROF_URL;#profile-manual-perf'>perf</ulink>"
-                        section in the Yocto Project Profiling and Tracing
-                        Manual.
-                        </para></listitem>
-                    <listitem><para><emphasis><filename>SystemTap</filename>:</emphasis>
-                        Systemtap is a tool that lets you create and reuse
-                        scripts to examine the activities of a live Linux
-                        system.
-                        You can easily extract, filter, and summarize data
-                        that helps you diagnose complex performance or
-                        functional problems.
-                        For more information on setting up and using
-                        <filename>SystemTap</filename>, see the
-                        <ulink url='https://sourceware.org/systemtap/documentation.html'>SystemTap Documentation</ulink>.
-                        </para></listitem>
-                    <listitem><para><emphasis><filename>yocto-bsp</filename>:</emphasis>
-                        The <filename>yocto-bsp</filename> tool lets you
-                        quickly set up a Board Support Package (BSP) layer.
-                        The tool requires a Metadata location, build location,
-                        BSP name, BSP output location, and a kernel
-                        architecture.
-                        For more information on the
-                        <filename>yocto-bsp</filename> tool outside of Eclipse,
-                        see the
-                        "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-yocto-bsp-script'>Creating a new BSP Layer Using the yocto-bsp Script</ulink>"
-                        section in the Yocto Project Board Support Package
-                        (BSP) Developer's Guide.
-                        </para></listitem>
-                </itemizedlist>
-            </para>
-        </section>
     </section>
-</section>
-
 </chapter>
 <!--
 vim: expandtab tw=80 ts=4
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-working-projects.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-working-projects.xml
new file mode 100644
index 0000000..df24aef
--- /dev/null
+++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-working-projects.xml
@@ -0,0 +1,1460 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
+
+<chapter id='sdk-working-projects'>
+
+    <title>Using the SDK Toolchain Directly</title>
+
+    <para>
+        You can use the SDK toolchain directly with Makefile,
+        Autotools, and <trademark class='trade'>Eclipse</trademark> based
+        projects.
+        This chapter covers information specific to each of these types of
+        projects.
+    </para>
+
+    <section id='autotools-based-projects'>
+        <title>Autotools-Based Projects</title>
+
+        <para>
+            Once you have a suitable cross-toolchain installed, it is very easy
+            to develop a project outside of the OpenEmbedded build system.
+            This section presents a simple "Helloworld" example that shows how
+            to set up, compile, and run the project.
+        </para>
+
+        <section id='creating-and-running-a-project-based-on-gnu-autotools'>
+            <title>Creating and Running a Project Based on GNU Autotools</title>
+
+            <para>
+                Follow these steps to create a simple Autotools-based project:
+                <orderedlist>
+                    <listitem><para>
+                        <emphasis>Create your directory:</emphasis>
+                        Create a clean directory for your project and then make
+                        that directory your working location:
+                        <literallayout class='monospaced'>
+     $ mkdir $HOME/helloworld
+     $ cd $HOME/helloworld
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Populate the directory:</emphasis>
+                        Create <filename>hello.c</filename>,
+                        <filename>Makefile.am</filename>,
+                        and <filename>configure.ac</filename> files as follows:
+                        <itemizedlist>
+                            <listitem><para>
+                                For <filename>hello.c</filename>, include
+                                these lines:
+                                <literallayout class='monospaced'>
+     #include &lt;stdio.h&gt;
+
+     main()
+        {
+           printf("Hello World!\n");
+        }
+                                </literallayout>
+                                </para></listitem>
+                            <listitem><para>
+                                For <filename>Makefile.am</filename>,
+                                include these lines:
+                                <literallayout class='monospaced'>
+     bin_PROGRAMS = hello
+     hello_SOURCES = hello.c
+                                </literallayout>
+                                </para></listitem>
+                            <listitem><para>
+                                For <filename>configure.in</filename>,
+                                include these lines:
+                                <literallayout class='monospaced'>
+     AC_INIT(hello,0.1)
+     AM_INIT_AUTOMAKE([foreign])
+     AC_PROG_CC
+     AC_PROG_INSTALL
+     AC_OUTPUT(Makefile)
+                                </literallayout>
+                                </para></listitem>
+                        </itemizedlist>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Source the cross-toolchain
+                        environment setup file:</emphasis>
+                        As described earlier in the manual, installing the
+                        cross-toolchain creates a cross-toolchain
+                        environment setup script in the directory that the SDK
+                        was installed.
+                        Before you can use the tools to develop your project,
+                        you must source this setup script.
+                        The script begins with the string "environment-setup"
+                        and contains the machine architecture, which is
+                        followed by the string "poky-linux".
+                        Here is an example that sources a script from the
+                        default SDK installation directory that uses the
+                        32-bit Intel x86 Architecture and the
+                        &DISTRO_NAME; Yocto Project release:
+                        <literallayout class='monospaced'>
+     $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Generate the local aclocal.m4
+                        files and create the configure script:</emphasis>
+                        The following GNU Autotools generate the local
+                        <filename>aclocal.m4</filename> files and create the
+                        configure script:
+                        <literallayout class='monospaced'>
+     $ aclocal
+     $ autoconf
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Generate files needed by GNU coding
+                        standards:</emphasis>
+                        GNU coding standards require certain files in order
+                        for the project to be compliant.
+                        This command creates those files:
+                        <literallayout class='monospaced'>
+     $ touch NEWS README AUTHORS ChangeLog
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Generate the configure file:</emphasis>
+                        This command generates the
+                        <filename>configure</filename>:
+                        <literallayout class='monospaced'>
+     $ automake -a
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Cross-compile the project:</emphasis>
+                        This command compiles the project using the
+                        cross-compiler.
+                        The
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink>
+                        environment variable provides the minimal arguments for
+                        GNU configure:
+                        <literallayout class='monospaced'>
+     $ ./configure ${CONFIGURE_FLAGS}
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Make and install the project:</emphasis>
+                        These two commands generate and install the project
+                        into the destination directory:
+                        <literallayout class='monospaced'>
+     $ make
+     $ make install DESTDIR=./tmp
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Verify the installation:</emphasis>
+                        This command is a simple way to verify the installation
+                        of your project.
+                        Running the command prints the architecture on which
+                        the binary file can run.
+                        This architecture should be the same architecture that
+                        the installed cross-toolchain supports.
+                        <literallayout class='monospaced'>
+     $ file ./tmp/usr/local/bin/hello
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Execute your project:</emphasis>
+                        To execute the project in the shell, simply enter
+                        the name.
+                        You could also copy the binary to the actual target
+                        hardware and run the project there as well:
+                        <literallayout class='monospaced'>
+     $ ./hello
+                        </literallayout>
+                        As expected, the project displays the "Hello World!"
+                        message.
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
+
+        <section id='passing-host-options'>
+            <title>Passing Host Options</title>
+
+            <para>
+                For an Autotools-based project, you can use the cross-toolchain
+                by just passing the appropriate host option to
+                <filename>configure.sh</filename>.
+                The host option you use is derived from the name of the
+                environment setup script found in the directory in which you
+                installed the cross-toolchain.
+                For example, the host option for an ARM-based target that uses
+                the GNU EABI is <filename>armv5te-poky-linux-gnueabi</filename>.
+                You will notice that the name of the script is
+                <filename>environment-setup-armv5te-poky-linux-gnueabi</filename>.
+                Thus, the following command works to update your project and
+                rebuild it using the appropriate cross-toolchain tools:
+                <literallayout class='monospaced'>
+     $ ./configure --host=armv5te-poky-linux-gnueabi \
+        --with-libtool-sysroot=<replaceable>sysroot_dir</replaceable>
+                </literallayout>
+                <note>
+                    If the <filename>configure</filename> script results in
+                    problems recognizing the
+                    <filename>--with-libtool-sysroot=</filename><replaceable>sysroot-dir</replaceable>
+                    option, regenerate the script to enable the support by
+                    doing the following and then run the script again:
+                    <literallayout class='monospaced'>
+     $ libtoolize --automake
+     $ aclocal -I ${OECORE_TARGET_SYSROOT}/usr/share/aclocal [-I <replaceable>dir_containing_your_project-specific_m4_macros</replaceable>]
+     $ autoconf
+     $ autoheader
+     $ automake -a
+                    </literallayout>
+                </note>
+            </para>
+        </section>
+    </section>
+
+    <section id='makefile-based-projects'>
+        <title>Makefile-Based Projects</title>
+
+        <para>
+            For Makefile-based projects, the cross-toolchain environment
+            variables established by running the cross-toolchain environment
+            setup script are subject to general <filename>make</filename>
+            rules.
+        </para>
+
+        <para>
+            To illustrate this, consider the following four cross-toolchain
+            environment variables:
+            <literallayout class='monospaced'>
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'>CC</ulink>=i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/&DISTRO;/sysroots/i586-poky-linux
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'>LD</ulink>=i586-poky-linux-ld --sysroot=/opt/poky/&DISTRO;/sysroots/i586-poky-linux
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CFLAGS'>CFLAGS</ulink>=-O2 -pipe -g -feliminate-unused-debug-types
+     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXXFLAGS'>CXXFLAGS</ulink>=-O2 -pipe -g -feliminate-unused-debug-types
+            </literallayout>
+            Now, consider the following three cases:
+            <itemizedlist>
+                <listitem><para>
+                    <emphasis>Case 1 - No Variables Set in the
+                    <filename>Makefile</filename>:</emphasis>
+                    Because these variables are not specifically set in the
+                    <filename>Makefile</filename>, the variables retain their
+                    values based on the environment.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Case 2 - Variables Set in the
+                    <filename>Makefile</filename>:</emphasis>
+                    Specifically setting variables in the
+                    <filename>Makefile</filename> during the build results in
+                    the environment settings of the variables being
+                    overwritten.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Case 3 - Variables Set when the
+                    <filename>Makefile</filename> is Executed from the
+                    Command Line:</emphasis>
+                    Executing the <filename>Makefile</filename> from the
+                    command-line results in the variables being overwritten
+                    with command-line content regardless of what is being set
+                    in the <filename>Makefile</filename>.
+                    In this case, environment variables are not considered
+                    unless you use the "-e" flag during the build:
+                    <literallayout class='monospaced'>
+     $ make -e <replaceable>file</replaceable>
+                    </literallayout>
+                    If you use this flag, then the environment values of the
+                    variables override any variables specifically set in the
+                    <filename>Makefile</filename>.
+                    </para></listitem>
+            </itemizedlist>
+            <note>
+                For the list of variables set up by the cross-toolchain
+                environment setup script, see the
+                "<link linkend='sdk-running-the-sdk-environment-setup-script'>Running the SDK Environment Setup Script</link>"
+                section.
+            </note>
+        </para>
+    </section>
+
+    <section id='sdk-developing-applications-using-eclipse'>
+        <title>Developing Applications Using <trademark class='trade'>Eclipse</trademark></title>
+
+        <para>
+            If you are familiar with the popular Eclipse IDE, you can use an
+            Eclipse Yocto Plug-in to allow you to develop, deploy, and test your
+            application all from within Eclipse.
+            This section describes general workflow using the SDK and Eclipse
+            and how to configure and set up Eclipse.
+        </para>
+
+        <section id='workflow-using-eclipse'>
+            <title>Workflow Using <trademark class='trade'>Eclipse</trademark></title>
+
+            <para>
+                The following figure and supporting list summarize the
+                application development general workflow that employs both the
+                SDK Eclipse.
+            </para>
+
+            <para>
+                <imagedata fileref="figures/sdk-eclipse-dev-flow.png"
+                    width="7in" depth="7in" align="center" scale="100" />
+            </para>
+
+            <para>
+                <orderedlist>
+                    <listitem><para>
+                        <emphasis>Prepare the host system for the Yocto
+                        Project</emphasis>:
+                        See
+                        "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
+                        and
+                        "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>"
+                        sections both in the Yocto Project Reference Manual for
+                        requirements.
+                        In particular, be sure your host system has the
+                        <filename>xterm</filename> package installed.
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Secure the Yocto Project kernel target
+                        image</emphasis>:
+                        You must have a target kernel image that has been built
+                        using the OpenEmbedded build system.</para>
+                        <para>Depending on whether the Yocto Project has a
+                        pre-built image that matches your target architecture
+                        and where you are going to run the image while you
+                        develop your application (QEMU or real hardware), the
+                        area from which you get the image differs.
+                        <itemizedlist>
+                            <listitem><para>
+                                Download the image from
+                                <ulink url='&YOCTO_MACHINES_DL_URL;'><filename>machines</filename></ulink>
+                                if your target architecture is supported and
+                                you are going to develop and test your
+                                application on actual hardware.
+                                </para></listitem>
+                            <listitem><para>
+                                Download the image from
+                                <ulink url='&YOCTO_QEMU_DL_URL;'>
+                                <filename>machines/qemu</filename></ulink> if
+                                your target architecture is supported and you
+                                are going to develop and test your application
+                                using the QEMU emulator.
+                                </para></listitem>
+                            <listitem><para>
+                                Build your image if you cannot find a pre-built
+                                image that matches your target architecture.
+                                If your target architecture is similar to a
+                                supported architecture, you can modify the
+                                kernel image before you build it.
+                                See the
+                                "<ulink url='&YOCTO_DOCS_DEV_URL;#patching-the-kernel'>Patching the Kernel</ulink>"
+                                section in the Yocto Project Development
+                                manual for an example.
+                                </para></listitem>
+                        </itemizedlist>
+                        </para></listitem>
+                    <listitem>
+                        <para><emphasis>Install the SDK</emphasis>:
+                        The SDK provides a target-specific cross-development
+                        toolchain, the root filesystem, the QEMU emulator, and
+                        other tools that can help you develop your application.
+                        For information on how to install the SDK, see the
+                        "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
+                        section.
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Secure the target root filesystem
+                        and the Cross-development toolchain</emphasis>:
+                        You need to find and download the appropriate root
+                        filesystem and the cross-development toolchain.</para>
+                        <para>You can find the tarballs for the root filesystem
+                        in the same area used for the kernel image.
+                        Depending on the type of image you are running, the
+                        root filesystem you need differs.
+                        For example, if you are developing an application that
+                        runs on an image that supports Sato, you need to get a
+                        root filesystem that supports Sato.</para>
+                        <para>You can find the cross-development toolchains at
+                        <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'><filename>toolchains</filename></ulink>.
+                        Be sure to get the correct toolchain for your
+                        development host and your target architecture.
+                        See the "<link linkend='sdk-locating-pre-built-sdk-installers'>Locating Pre-Built SDK Installers</link>"
+                        section for information and the
+                        "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
+                        section for installation information.
+                        <note>
+                            As an alternative to downloading an SDK, you can
+                            build the SDK installer.
+                            For information on building the installer, see the
+                            "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+                            section.
+                            Another helpful resource for building an installer
+                            is the
+                            <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+                            wiki page.
+                        </note>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Create and build your application</emphasis>:
+                        At this point, you need to have source files for your
+                        application.
+                        Once you have the files, you can use the Eclipse IDE
+                        to import them and build the project.
+                        If you are not using Eclipse, you need to use the
+                        cross-development tools you have installed to create
+                        the image.</para></listitem>
+                    <listitem><para>
+                        <emphasis>Deploy the image with the
+                        application</emphasis>:
+                        Using the Eclipse IDE, you can deploy your image to the
+                        hardware or to QEMU through the project's preferences.
+                        You can also use Eclipse to load and test your image
+                        under QEMU.
+                        See the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
+                        chapter in the Yocto Project Development Manual
+                        for information on using QEMU.
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Test and debug the application</emphasis>:
+                        Once your application is deployed, you need to test it.
+                        Within the Eclipse IDE, you can use the debugging
+                        environment along with supported performance enhancing
+                        <ulink url='http://www.eclipse.org/linuxtools/'>Linux Tools</ulink>.
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
+
+        <section id='adt-eclipse'>
+            <title>Working Within Eclipse</title>
+
+            <para>
+                The Eclipse IDE is a popular development environment and it
+                fully supports development using the Yocto Project.
+            </para>
+
+            <para>
+                When you install and configure the Eclipse Yocto Project
+                Plug-in into the Eclipse IDE, you maximize your Yocto
+                Project experience.
+                Installing and configuring the Plug-in results in an
+                environment that has extensions specifically designed to let
+                you more easily develop software.
+                These extensions allow for cross-compilation, deployment, and
+                execution of your output into a QEMU emulation session as well
+                as actual target hardware.
+                You can also perform cross-debugging and profiling.
+                The environment also supports performance enhancing
+                <ulink url='http://www.eclipse.org/linuxtools/'>tools</ulink>
+                that allow you to perform remote profiling, tracing,
+                collection of power data, collection of latency data, and
+                collection of performance data.
+                <note>
+                    This release of the Yocto Project supports both the Neon
+                    and Mars versions of the Eclipse IDE.
+                    This section provides information on how to use the Neon
+                    release with the Yocto Project.
+                    For information on how to use the Mars version of Eclipse
+                    with the Yocto Project, see
+                    "<link linkend='sdk-appendix-mars'>Appendix C</link>.
+                </note>
+            </para>
+
+            <section id='neon-setting-up-the-eclipse-ide'>
+                <title>Setting Up the Neon Version of the Eclipse IDE</title>
+
+                <para>
+                    To develop within the Eclipse IDE, you need to do the
+                    following:
+                    <orderedlist>
+                        <listitem><para>
+                            Install the Neon version of the Eclipse IDE.
+                            </para></listitem>
+                        <listitem><para>
+                            Configure the Eclipse IDE.
+                            </para></listitem>
+                        <listitem><para>
+                            Install the Eclipse Yocto Plug-in.
+                            </para></listitem>
+                        <listitem><para>
+                            Configure the Eclipse Yocto Plug-in.
+                            </para></listitem>
+                    </orderedlist>
+                    <note>
+                        Do not install Eclipse from your distribution's package
+                        repository.
+                        Be sure to install Eclipse from the official Eclipse
+                        download site as directed in the next section.
+                    </note>
+                </para>
+
+                <section id='neon-installing-eclipse-ide'>
+                    <title>Installing the Neon Eclipse IDE</title>
+
+                    <para>
+                        Follow these steps to locate, install, and configure
+                        Neon Eclipse:
+                        <orderedlist>
+                            <listitem><para>
+                                <emphasis>Locate the Neon Download:</emphasis>
+                                Open a browser and go to
+                                <ulink url='http://www.eclipse.org/mars/'>http://www.eclipse.org/neon/</ulink>.
+                                </para></listitem>
+                            <listitem><para>
+                                <emphasis>Download the Tarball:</emphasis>
+                                Click through the "Download" buttons to
+                                download the file.
+                                </para></listitem>
+                            <listitem><para>
+                                <emphasis>Unpack the Tarball:</emphasis>
+                                Move to a clean directory and unpack the
+                                tarball.
+                                Here is an example:
+                                <literallayout class='monospaced'>
+     $ cd ~
+     $ tar -xzvf ~/Downloads/eclipse-inst-linux64.tar.gz
+                                </literallayout>
+                                Everything unpacks into a folder named
+                                "eclipse-installer".
+                                </para></listitem>
+                            <listitem><para>
+                                <emphasis>Launch the Installer:</emphasis>
+                                Use the following commands to launch the
+                                installer:
+                                <literallayout class='monospaced'>
+     $ cd ~/eclipse-installer
+     $ ./eclipse-inst
+                                </literallayout>
+                                </para></listitem>
+                            <listitem><para>
+                                <emphasis>Select Your IDE:</emphasis>
+                                From the list, select the "Eclipse IDE for
+                                C/C++ Developers".
+                                </para></listitem>
+                            <listitem><para>
+                                <emphasis>Install the Software:</emphasis>
+                                Accept the default "cpp-neon" directory and
+                                click "Install".
+                                Accept any license agreements and approve any
+                                certificates.
+                                </para></listitem>
+                            <listitem><para>
+                                <emphasis>Launch Neon:</emphasis>
+                                Click the "Launch" button and accept the
+                                default "workspace".
+                                </para></listitem>
+                        </orderedlist>
+                    </para>
+                </section>
+
+                <section id='neon-configuring-the-mars-eclipse-ide'>
+                    <title>Configuring the Neon Eclipse IDE</title>
+
+                    <para>
+                        Follow these steps to configure the Neon Eclipse IDE.
+                        <note>
+                            Depending on how you installed Eclipse and what
+                            you have already done, some of the options will
+                            not appear.
+                            If you cannot find an option as directed by the
+                            manual, it has already been installed.
+                        </note>
+                        <orderedlist>
+                            <listitem><para>
+                                Be sure Eclipse is running and you are in your
+                                workbench.
+                                </para></listitem>
+                            <listitem><para>
+                                Select "Install New Software" from the "Help"
+                                pull-down menu.
+                                </para></listitem>
+                            <listitem><para>
+                                Select
+                                "Neon - http://download.eclipse.org/releases/neon"
+                                from the "Work with:" pull-down menu.
+                                </para></listitem>
+                            <listitem><para>
+                                Expand the box next to "Linux Tools" and select
+                                the following:
+                                <literallayout class='monospaced'>
+     C/C++ Remote (Over TCF/TE) Run/Debug Launcher
+     TM Terminal
+                                </literallayout>
+                                </para></listitem>
+                            <listitem><para>
+                                Expand the box next to "Mobile and Device
+                                Development" and select the following
+                                boxes:
+                                <literallayout class='monospaced'>
+     C/C++ Remote (Over TCF/TE) Run/Debug Launcher
+     Remote System Explorer User Actions
+     TM Terminal
+     TCF Remote System Explorer add-in
+     TCF Target Explorer
+                                </literallayout>
+                                </para></listitem>
+                            <listitem><para>
+                                Expand the box next to "Programming Languages"
+                                and select the following box:
+                                <literallayout class='monospaced'>
+     C/C++ Development Tools SDK
+                                </literallayout>
+                                </para></listitem>
+                            <listitem><para>
+                                Complete the installation by clicking through
+                                appropriate "Next" and "Finish" buttons.
+                                </para></listitem>
+                        </orderedlist>
+                    </para>
+                </section>
+
+                <section id='neon-installing-the-eclipse-yocto-plug-in'>
+                    <title>Installing or Accessing the Neon Eclipse Yocto Plug-in</title>
+
+                    <para>
+                        You can install the Eclipse Yocto Plug-in into the
+                        Eclipse IDE one of two ways:  use the Yocto Project's
+                        Eclipse Update site to install the pre-built plug-in
+                        or build and install the plug-in from the latest
+                        source code.
+                    </para>
+
+                    <section id='neon-new-software'>
+                        <title>Installing the Pre-built Plug-in from the Yocto Project Eclipse Update Site</title>
+
+                        <para>
+                            To install the Neon Eclipse Yocto Plug-in from the
+                            update site, follow these steps:
+                            <orderedlist>
+                                <listitem><para>
+                                    Start up the Eclipse IDE.
+                                    </para></listitem>
+                                <listitem><para>
+                                    In Eclipse, select "Install New
+                                    Software" from the "Help" menu.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Click "Add..." in the "Work with:" area.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Enter
+                                    <filename>&ECLIPSE_DL_PLUGIN_URL;/neon</filename>
+                                    in the URL field and provide a meaningful
+                                    name in the "Name" field.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Click "OK" to have the entry added
+                                    to the "Work with:" drop-down list.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Select the entry for the plug-in
+                                    from the "Work with:" drop-down list.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Check the boxes next to the following:
+                                    <literallayout class='monospaced'>
+     Yocto Project SDK Plug-in
+     Yocto Project Documentation plug-in
+                                    </literallayout>
+                                    </para></listitem>
+                                <listitem><para>
+                                    Complete the remaining software
+                                    installation steps and then restart the
+                                    Eclipse IDE to finish the installation of
+                                    the plug-in.
+                                    <note>
+                                        You can click "OK" when prompted about
+                                        installing software that contains
+                                        unsigned content.
+                                    </note>
+                                    </para></listitem>
+                            </orderedlist>
+                        </para>
+                    </section>
+
+                    <section id='neon-zip-file-method'>
+                        <title>Installing the Plug-in Using the Latest Source Code</title>
+
+                        <para>
+                            To install the Neon Eclipse Yocto Plug-in from the
+                            latest source code, follow these steps:
+                            <orderedlist>
+                                <listitem><para>
+                                    Be sure your development system
+                                    has JDK 1.8+
+                                    </para></listitem>
+                                <listitem><para>
+                                    Install X11-related packages:
+                                    <literallayout class='monospaced'>
+     $ sudo apt-get install xauth
+                                    </literallayout>
+                                    </para></listitem>
+                                <listitem><para>
+                                    In a new terminal shell, create a
+                                    Git repository with:
+                                    <literallayout class='monospaced'>
+     $ cd ~
+     $ git clone git://git.yoctoproject.org/eclipse-poky
+                                    </literallayout>
+                                    </para></listitem>
+                                <listitem><para>
+                                    Use Git to create the correct tag:
+                                    <literallayout class='monospaced'>
+     $ cd ~/eclipse-poky
+     $ git checkout neon/yocto-&DISTRO;
+                                    </literallayout>
+                                    This creates a local tag named
+                                    <filename>neon/yocto-&DISTRO;</filename>
+                                    based on the branch
+                                    <filename>origin/neon-master</filename>.
+                                    You are put into a detached HEAD state,
+                                    which is fine since you are only going to
+                                    be building and not developing.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Change to the <filename>scripts</filename>
+                                    directory within the Git repository:
+                                    <literallayout class='monospaced'>
+     $ cd scripts
+                                    </literallayout>
+                                    </para></listitem>
+                                <listitem><para>
+                                    Set up the local build environment
+                                    by running the setup script:
+                                    <literallayout class='monospaced'>
+     $ ./setup.sh
+                                    </literallayout>
+                                    When the script finishes execution,
+                                    it prompts you with instructions on how to
+                                    run the <filename>build.sh</filename>
+                                    script, which is also in the
+                                    <filename>scripts</filename> directory of
+                                    the Git repository created earlier.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Run the <filename>build.sh</filename>
+                                    script as directed.
+                                    Be sure to provide the tag name,
+                                    documentation branch, and a release name.
+                                    </para>
+                                    <para>
+                                    Following is an example:
+                                    <literallayout class='monospaced'>
+     $ ECLIPSE_HOME=/home/scottrif/eclipse-poky/scripts/eclipse ./build.sh -l neon/yocto-&DISTRO; master yocto-&DISTRO; 2>&amp;1 | tee build.log
+                                    </literallayout>
+                                    The previous example command adds the tag
+                                    you need for
+                                    <filename>mars/yocto-&DISTRO;</filename>
+                                    to <filename>HEAD</filename>, then tells
+                                    the build script to use the local (-l) Git
+                                    checkout for the build.
+                                    After running the script, the file
+                                    <filename>org.yocto.sdk-</filename><replaceable>release</replaceable><filename>-</filename><replaceable>date</replaceable><filename>-archive.zip</filename>
+                                    is in the current directory.
+                                    </para></listitem>
+                                <listitem><para>
+                                    If necessary, start the Eclipse IDE
+                                    and be sure you are in the Workbench.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Select "Install New Software" from
+                                    the "Help" pull-down menu.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Click "Add".
+                                    </para></listitem>
+                                <listitem><para>
+                                    Provide anything you want in the
+                                    "Name" field.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Click "Archive" and browse to the
+                                    ZIP file you built earlier.
+                                    This ZIP file should not be "unzipped", and
+                                    must be the
+                                    <filename>*archive.zip</filename> file
+                                    created by running the
+                                    <filename>build.sh</filename> script.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Click the "OK" button.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Check the boxes that appear in
+                                    the installation window to install the
+                                    following:
+                                    <literallayout class='monospaced'>
+     Yocto Project SDK Plug-in
+     Yocto Project Documentation plug-in
+                                    </literallayout>
+                                    </para></listitem>
+                                <listitem><para>
+                                    Finish the installation by clicking
+                                    through the appropriate buttons.
+                                    You can click "OK" when prompted about
+                                    installing software that contains unsigned
+                                    content.
+                                    </para></listitem>
+                                <listitem><para>
+                                    Restart the Eclipse IDE if necessary.
+                                    </para></listitem>
+                            </orderedlist>
+                        </para>
+
+                        <para>
+                            At this point you should be able to configure the
+                            Eclipse Yocto Plug-in as described in the
+                            "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>"
+                            section.
+                        </para>
+                    </section>
+                </section>
+
+                <section id='neon-configuring-the-eclipse-yocto-plug-in'>
+                    <title>Configuring the Neon Eclipse Yocto Plug-in</title>
+
+                    <para>
+                        Configuring the Neon Eclipse Yocto Plug-in involves
+                        setting the Cross Compiler options and the Target
+                        options.
+                        The configurations you choose become the default
+                        settings for all projects.
+                        You do have opportunities to change them later when
+                        you configure the project (see the following section).
+                    </para>
+
+                    <para>
+                        To start, you need to do the following from within the
+                        Eclipse IDE:
+                        <itemizedlist>
+                            <listitem><para>
+                                Choose "Preferences" from the "Window" menu to
+                                display the Preferences Dialog.
+                                </para></listitem>
+                            <listitem><para>
+                                Click "Yocto Project SDK" to display
+                                the configuration screen.
+                                </para></listitem>
+                        </itemizedlist>
+                        The following sub-sections describe how to configure
+                        the plug-in.
+                        <note>
+                            Throughout the descriptions, a start-to-finish
+                            example for preparing a QEMU image for use with
+                            Eclipse is referenced as the "wiki" and is linked
+                            to the example on the
+                            <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'> Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+                            wiki page.
+                        </note>
+                    </para>
+
+                    <section id='neon-configuring-the-cross-compiler-options'>
+                        <title>Configuring the Cross-Compiler Options</title>
+
+                        <para>
+                            Cross Compiler options enable Eclipse to use your
+                            specific cross compiler toolchain.
+                            To configure these options, you must select
+                            the type of toolchain, point to the toolchain,
+                            specify the sysroot location, and select the target
+                            architecture.
+                            <itemizedlist>
+                                <listitem><para>
+                                    <emphasis>Selecting the Toolchain
+                                    Type:</emphasis>
+                                    Choose between
+                                    <filename>Standalone pre-built toolchain</filename>
+                                    and
+                                    <filename>Build system derived toolchain</filename>
+                                    for Cross Compiler Options.
+                                    <itemizedlist>
+                                        <listitem><para>
+                                            <emphasis>
+                                            <filename>Standalone Pre-built Toolchain:</filename>
+                                            </emphasis>
+                                            Select this type when you are using
+                                            a stand-alone cross-toolchain.
+                                            For example, suppose you are an
+                                            application developer and do not
+                                            need to build a target image.
+                                            Instead, you just want to use an
+                                            architecture-specific toolchain on
+                                            an existing kernel and target root
+                                            filesystem.
+                                            In other words, you have downloaded
+                                            and installed a pre-built toolchain
+                                            for an existing image.
+                                            </para></listitem>
+                                        <listitem><para>
+                                            <emphasis>
+                                            <filename>Build System Derived Toolchain:</filename>
+                                            </emphasis>
+                                            Select this type if you built the
+                                            toolchain as part of the
+                                            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
+                                            When you select
+                                            <filename>Build system derived toolchain</filename>,
+                                            you are using the toolchain built
+                                            and bundled inside the Build
+                                            Directory.
+                                            For example, suppose you created a
+                                            suitable image using the steps in the
+                                            <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                                            In this situation, you would select
+                                            the
+                                            <filename>Build system derived toolchain</filename>.
+                                            </para></listitem>
+                                    </itemizedlist>
+                                    </para></listitem>
+                                <listitem><para>
+                                    <emphasis>Specify the Toolchain Root
+                                    Location:</emphasis>
+                                    If you are using a stand-alone pre-built
+                                    toolchain, you should be pointing to where
+                                    it is installed (e.g.
+                                    <filename>/opt/poky/&DISTRO;</filename>).
+                                    See the
+                                    "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
+                                    section for information about how the SDK is
+                                    installed.</para>
+                                    <para>If you are using a build system
+                                    derived toolchain, the path you provide for
+                                    the
+                                    <filename>Toolchain Root Location</filename>
+                                    field is the
+                                    <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+                                    from which you run the
+                                    <filename>bitbake</filename> command (e.g
+                                    <filename>/home/scottrif/poky/build</filename>).
+                                    </para>
+                                    <para>For more information, see the
+                                    "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+                                    section.
+                                    </para></listitem>
+                                <listitem><para>
+                                    <emphasis>Specify Sysroot Location:
+                                    </emphasis>
+                                    This location is where the root filesystem
+                                    for the target hardware resides.
+                                    </para>
+                                    <para>This location depends on where you
+                                    separately extracted and installed the
+                                    target filesystem.
+                                    As an example, suppose you prepared an
+                                    image using the steps in the
+                                    <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                                    If so, the
+                                    <filename>MY_QEMU_ROOTFS</filename>
+                                    directory is found in the
+                                    <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+                                    and you would browse to and select that
+                                    directory (e.g.
+                                    <filename>/home/scottrif/poky/build/MY_QEMU_ROOTFS</filename>).
+                                    </para>
+                                    <para>For more information on how to
+                                    install the toolchain and on how to extract
+                                    and install the sysroot filesystem, see the
+                                    "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+                                    section.
+                                    </para></listitem>
+                                <listitem><para>
+                                    <emphasis>Select the Target Architecture:
+                                    </emphasis>
+                                    The target architecture is the type of
+                                    hardware you are going to use or emulate.
+                                    Use the pull-down
+                                    <filename>Target Architecture</filename>
+                                    menu to make your selection.
+                                    The pull-down menu should have the
+                                    supported architectures.
+                                    If the architecture you need is not listed
+                                    in the menu, you will need to build the
+                                    image.
+                                    See the
+                                    "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
+                                    section of the Yocto Project Quick Start
+                                    for more information.
+                                    You can also see the
+                                    <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                                    </para></listitem>
+                            </itemizedlist>
+                        </para>
+                    </section>
+
+                    <section id='neon-configuring-the-target-options'>
+                        <title>Configuring the Target Options</title>
+
+                        <para>
+                            You can choose to emulate hardware using the QEMU
+                            emulator, or you can choose to run your image on
+                            actual hardware.
+                            <itemizedlist>
+                                <listitem><para>
+                                    <emphasis>QEMU:</emphasis>
+                                    Select this option if you will be using the
+                                    QEMU emulator.
+                                    If you are using the emulator, you also
+                                    need to locate the kernel and specify any
+                                    custom options.</para>
+                                    <para>If you selected the
+                                    <filename>Build system derived toolchain</filename>,
+                                    the target kernel you built will be located
+                                    in the
+                                    <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+                                    in
+                                    <filename>tmp/deploy/images/<replaceable>machine</replaceable></filename>
+                                    directory.
+                                    As an example, suppose you performed the
+                                    steps in the
+                                    <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
+                                    In this case, you specify your Build
+                                    Directory path followed by the image (e.g.
+                                    <filename>/home/scottrif/poky/build/tmp/deploy/images/qemux86/bzImage-qemux86.bin</filename>).
+                                    </para>
+                                    <para>If you selected the standalone
+                                    pre-built toolchain, the pre-built image
+                                    you downloaded is located in the directory
+                                    you specified when you downloaded the
+                                    image.</para>
+                                    <para>Most custom options are for advanced
+                                    QEMU users to further customize their QEMU
+                                    instance.
+                                    These options are specified between paired
+                                    angled brackets.
+                                    Some options must be specified outside the
+                                    brackets.
+                                    In particular, the options
+                                    <filename>serial</filename>,
+                                    <filename>nographic</filename>, and
+                                    <filename>kvm</filename> must all be
+                                    outside the brackets.
+                                    Use the <filename>man qemu</filename>
+                                    command to get help on all the options and
+                                    their use.
+                                    The following is an example:
+                                   <literallayout class='monospaced'>
+    serial ‘&lt;-m 256 -full-screen&gt;’
+                                    </literallayout></para>
+                                    <para>
+                                    Regardless of the mode, Sysroot is already
+                                    defined as part of the Cross-Compiler
+                                    Options configuration in the
+                                    <filename>Sysroot Location:</filename>
+                                    field.
+                                    </para></listitem>
+                                <listitem><para>
+                                    <emphasis>External HW:</emphasis>
+                                    Select this option if you will be using
+                                    actual hardware.</para></listitem>
+                            </itemizedlist>
+                        </para>
+
+                        <para>
+                            Click the "Apply" and "OK" to save your plug-in
+                            configurations.
+                        </para>
+                    </section>
+                </section>
+            </section>
+
+            <section id='neon-creating-the-project'>
+                <title>Creating the Project</title>
+
+                <para>
+                    You can create two types of projects:  Autotools-based, or
+                    Makefile-based.
+                    This section describes how to create Autotools-based
+                    projects from within the Eclipse IDE.
+                    For information on creating Makefile-based projects in a
+                    terminal window, see the
+                    "<link linkend='makefile-based-projects'>Makefile-Based Projects</link>"
+                    section.
+                    <note>
+                        Do not use special characters in project names
+                        (e.g. spaces, underscores, etc.).  Doing so can
+                        cause configuration to fail.
+                    </note>
+                </para>
+
+                <para>
+                    To create a project based on a Yocto template and then
+                    display the source code, follow these steps:
+                    <orderedlist>
+                        <listitem><para>
+                            Select "C Project" from the "File -> New" menu.
+                            </para></listitem>
+                        <listitem><para>
+                            Expand
+                            <filename>Yocto Project SDK Autotools Project</filename>.
+                            </para></listitem>
+                        <listitem><para>
+                            Select <filename>Hello World ANSI C Autotools Projects</filename>.
+                            This is an Autotools-based project based on a Yocto
+                            template.
+                            </para></listitem>
+                        <listitem><para>
+                            Put a name in the
+                            <filename>Project name:</filename> field.
+                            Do not use hyphens as part of the name
+                            (e.g. <filename>hello</filename>).
+                            </para></listitem>
+                        <listitem><para>
+                            Click "Next".
+                            </para></listitem>
+                        <listitem><para>
+                            Add appropriate information in the various fields.
+                            </para></listitem>
+                        <listitem><para>
+                            Click "Finish".
+                            </para></listitem>
+                        <listitem><para>
+                            If the "open perspective" prompt appears,
+                            click "Yes" so that you in the C/C++ perspective.
+                            </para></listitem>
+                        <listitem><para>The left-hand navigation pane shows
+                            your project.
+                            You can display your source by double clicking the
+                            project's source file.
+                            </para></listitem>
+                    </orderedlist>
+                </para>
+            </section>
+
+            <section id='neon-configuring-the-cross-toolchains'>
+                <title>Configuring the Cross-Toolchains</title>
+
+                <para>
+                    The earlier section,
+                    "<link linkend='neon-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>",
+                    sets up the default project configurations.
+                    You can override these settings for a given project by
+                    following these steps:
+                    <orderedlist>
+                        <listitem><para>
+                            Select "Yocto Project Settings" from
+                            the "Project -> Properties" menu.
+                            This selection brings up the Yocto Project Settings
+                            Dialog and allows you to make changes specific to
+                            an individual project.</para>
+                            <para>By default, the Cross Compiler Options and
+                            Target Options for a project are inherited from
+                            settings you provided using the Preferences Dialog
+                            as described earlier in the
+                            "<link linkend='neon-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>"
+                            section.
+                            The Yocto Project Settings Dialog allows you to
+                            override those default settings for a given
+                            project.
+                            </para></listitem>
+                        <listitem><para>
+                            Make or verify your configurations for the
+                            project and click "OK".
+                            </para></listitem>
+                        <listitem><para>
+                            Right-click in the navigation pane and
+                            select "Reconfigure Project" from the pop-up menu.
+                            This selection reconfigures the project by running
+                            <filename>autogen.sh</filename> in the workspace
+                            for your project.
+                            The script also runs
+                            <filename>libtoolize</filename>,
+                            <filename>aclocal</filename>,
+                            <filename>autoconf</filename>,
+                            <filename>autoheader</filename>,
+                            <filename>automake --a</filename>, and
+                            <filename>./configure</filename>.
+                            Click on the "Console" tab beneath your source code
+                            to see the results of reconfiguring your project.
+                            </para></listitem>
+                    </orderedlist>
+                </para>
+            </section>
+
+            <section id='neon-building-the-project'>
+                <title>Building the Project</title>
+
+                <para>
+                    To build the project select "Build All" from the
+                    "Project" menu.
+                    The console should update and you can note the
+                    cross-compiler you are using.
+                    <note>
+                        When building "Yocto Project SDK Autotools" projects,
+                        the Eclipse IDE might display error messages for
+                        Functions/Symbols/Types that cannot be "resolved",
+                        even when the related include file is listed at the
+                        project navigator and when the project is able to
+                        build.
+                        For these cases only, it is recommended to add a new
+                        linked folder to the appropriate sysroot.
+                        Use these steps to add the linked folder:
+                        <orderedlist>
+                            <listitem><para>
+                                Select the project.
+                                </para></listitem>
+                            <listitem><para>
+                                Select "Folder" from the
+                                <filename>File > New</filename> menu.
+                                </para></listitem>
+                            <listitem><para>
+                                In the "New Folder" Dialog, select "Link to
+                                alternate location (linked folder)".
+                                </para></listitem>
+                            <listitem><para>
+                                Click "Browse" to navigate to the include
+                                folder inside the same sysroot location
+                                selected in the Yocto Project
+                                configuration preferences.
+                                </para></listitem>
+                            <listitem><para>
+                                Click "OK".
+                                </para></listitem>
+                            <listitem><para>
+                                Click "Finish" to save the linked folder.
+                                </para></listitem>
+                        </orderedlist>
+                    </note>
+                </para>
+            </section>
+
+            <section id='neon-starting-qemu-in-user-space-nfs-mode'>
+                <title>Starting QEMU in User-Space NFS Mode</title>
+
+                <para>
+                    To start the QEMU emulator from within Eclipse, follow
+                    these steps:
+                    <note>
+                        See the
+                        "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
+                        chapter in the Yocto Project Development Manual
+                        for more information on using QEMU.
+                    </note>
+                    <orderedlist>
+                        <listitem><para>Expose and select "External Tools
+                            Configurations ..." from the "Run -> External
+                            Tools" menu.
+                            </para></listitem>
+                        <listitem><para>
+                            Locate and select your image in the navigation
+                            panel to the left
+                            (e.g. <filename>qemu_i586-poky-linux</filename>).
+                            </para></listitem>
+                        <listitem><para>
+                            Click "Run" to launch QEMU.
+                            <note>
+                                The host on which you are running QEMU must
+                                have the <filename>rpcbind</filename> utility
+                                running to be able to make RPC calls on a
+                                server on that machine.
+                                If QEMU does not invoke and you receive error
+                                messages involving
+                                <filename>rpcbind</filename>, follow the
+                                suggestions to get the service running.
+                                As an example, on a new Ubuntu 16.04 LTS
+                                installation, you must do the following in
+                                order to get QEMU to launch:
+                                <literallayout class='monospaced'>
+     $ sudo apt-get install rpcbind
+                                </literallayout>
+                                After installing <filename>rpcbind</filename>,
+                                you need to edit the
+                                <filename>/etc/init.d/rpcbind</filename> file
+                                to include the following line:
+                                <literallayout class='monospaced'>
+     OPTIONS="-i -w"
+                                </literallayout>
+                                After modifying the file, you need to start the
+                                service:
+                                <literallayout class='monospaced'>
+     $ sudo service portmap restart
+                                </literallayout>
+                            </note>
+                            </para></listitem>
+                        <listitem><para>
+                            If needed, enter your host root password in
+                            the shell window at the prompt.
+                            This sets up a <filename>Tap 0</filename>
+                            connection needed for running in user-space NFS
+                            mode.
+                            </para></listitem>
+                        <listitem><para>
+                            Wait for QEMU to launch.
+                            </para></listitem>
+                        <listitem><para>
+                            Once QEMU launches, you can begin operating
+                            within that environment.
+                            One useful task at this point would be to determine
+                            the IP Address for the user-space NFS by using the
+                            <filename>ifconfig</filename> command.
+                            The IP address of the QEMU machine appears in the
+                            xterm window.
+                            You can use this address to help you see which
+                            particular
+                            IP address the instance of QEMU is using.
+                            </para></listitem>
+                    </orderedlist>
+                </para>
+            </section>
+
+            <section id='neon-deploying-and-debugging-the-application'>
+                <title>Deploying and Debugging the Application</title>
+
+                <para>
+                    Once the QEMU emulator is running the image, you can deploy
+                    your application using the Eclipse IDE and then use
+                    the emulator to perform debugging.
+                    Follow these steps to deploy the application.
+                    <note>
+                        Currently, Eclipse does not support SSH port
+                        forwarding.
+                        Consequently, if you need to run or debug a remote
+                        application using the host display, you must create a
+                        tunneling connection from outside Eclipse and keep
+                        that connection alive during your work.
+                        For example, in a new terminal, run the following:
+                        <literallayout class='monospaced'>
+     $ ssh -XY <replaceable>user_name</replaceable>@<replaceable>remote_host_ip</replaceable>
+                        </literallayout>
+                        Using the above form, here is an example:
+                        <literallayout class='monospaced'>
+     $ ssh -XY root@192.168.7.2
+                        </literallayout>
+                        After running the command, add the command to be
+                        executed in Eclipse's run configuration before the
+                        application as follows:
+                        <literallayout class='monospaced'>
+     export DISPLAY=:10.0
+                        </literallayout>
+                        Be sure to not destroy the connection during your QEMU
+                        session (i.e. do not
+                        exit out of or close that shell).
+                    </note>
+                    <orderedlist>
+                        <listitem><para>
+                            Select "Debug Configurations..." from the
+                            "Run" menu.
+                            </para></listitem>
+                        <listitem><para>
+                            In the left area, expand
+                            <filename>C/C++Remote Application</filename>.
+                            </para></listitem>
+                        <listitem><para>
+                            Locate your project and select it to bring
+                            up a new tabbed view in the Debug Configurations
+                            Dialog.
+                            </para></listitem>
+                        <listitem><para>
+                            Click on the "Debugger" tab to see the
+                            cross-tool debugger you are using.
+                            Be sure to change to the debugger perspective in
+                            Eclipse.
+                            </para></listitem>
+                        <listitem><para>
+                            Click on the "Main" tab.
+                            </para></listitem>
+                        <listitem><para>
+                            Create a new connection to the QEMU instance
+                            by clicking on "new".</para></listitem>
+                        <listitem><para>Select <filename>SSH</filename>, which
+                            means Secure Socket Shell and then click "OK".
+                            Optionally, you can select an TCF connection
+                            instead.
+                            </para></listitem>
+                        <listitem><para>
+                            Clear out the "Connection name" field and
+                            enter any name you want for the connection.
+                            </para></listitem>
+                        <listitem><para>
+                            Put the IP address for the connection in
+                            the "Host" field.
+                            For QEMU, the default is
+                            <filename>192.168.7.2</filename>.
+                            However, if a previous QEMU session did not exit
+                            cleanly, the IP address increments (e.g.
+                            <filename>192.168.7.3</filename>).
+                            <note>
+                                You can find the IP address for the current
+                                QEMU session by looking in the xterm that
+                                opens when you launch QEMU.
+                            </note>
+                            </para></listitem>
+                        <listitem><para>
+                            Enter <filename>root</filename>, which
+                            is the default for QEMU, for the "User" field.
+                            Be sure to leave the password field empty.
+                            </para></listitem>
+                        <listitem><para>
+                            Click "Finish" to close the New Connections Dialog.
+                            </para></listitem>
+                        <listitem><para>
+                            If necessary, use the drop-down menu now in the
+                            "Connection" field and pick the IP Address you
+                            entered.
+                             </para></listitem>
+                        <listitem><para>
+                            Assuming you are connecting as the root
+                            user, which is the default for QEMU x86-64 SDK
+                            images provided by the Yocto Project, in the
+                            "Remote Absolute File Path for C/C++ Application"
+                            field, browse to
+                            <filename>/home/root/</filename><replaceable>ProjectName</replaceable>
+                            (e.g. <filename>/home/root/hello</filename>).
+                            You could also browse to any other path you have
+                            write access to on the target such as
+                            <filename>/usr/bin</filename>.
+                            This location is where your application will be
+                            located on the QEMU system.
+                            If you fail to browse to and specify an appropriate
+                            location, QEMU will not understand what to remotely
+                            launch.
+                            Eclipse is helpful in that it auto fills your
+                            application name for you assuming you browsed to a
+                            directory.
+                            <note>
+                                If you are prompted to provide a username and
+                                to optionally set a password, be sure you
+                                provide "root" as the username and you leave
+                                the password field blank.
+                            </note>
+                            </para></listitem>
+                        <listitem><para>
+                            Be sure you change to the "Debug" perspective in
+                            Eclipse.
+                            </para></listitem>
+                        <listitem><para>
+                            Click "Debug"
+                            </para></listitem>
+                        <listitem><para>
+                            Accept the debug perspective.
+                            </para></listitem>
+                    </orderedlist>
+                </para>
+            </section>
+
+            <section id='neon-using-Linuxtools'>
+                <title>Using Linuxtools</title>
+
+                <para>
+                    As mentioned earlier in the manual, performance tools exist
+                    (Linuxtools) that enhance your development experience.
+                    These tools are aids in developing and debugging
+                    applications and images.
+                    You can run these tools from within the Eclipse IDE through
+                    the "Linuxtools" menu.
+                </para>
+
+                <para>
+                    For information on how to configure and use these tools,
+                    see
+                    <ulink url='http://www.eclipse.org/linuxtools/'>http://www.eclipse.org/linuxtools/</ulink>.
+                </para>
+            </section>
+        </section>
+    </section>
+</chapter>
+<!--
+vim: expandtab tw=80 ts=4
+-->
diff --git a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml
index ee1dcba..a408024 100644
--- a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml
+++ b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml
@@ -111,6 +111,13 @@
                     </para></listitem>
             </itemizedlist>
         </para>
+
+        <para>
+            For an overview of Toaster shipped with the Yocto Project &DISTRO;
+            Release, see the
+            "<ulink url='https://youtu.be/BlXdOYLgPxA'>Toaster - Yocto Project 2.2</ulink>"
+            video.
+        </para>
     </section>
 
     <section id='toaster-installation-options'>
diff --git a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml
index 963b211..966c35d 100644
--- a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml
+++ b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml
@@ -31,7 +31,7 @@
             <filename>poky/build</filename>), start Toaster using this
             command:
             <literallayout class='monospaced'>
-     $ source ../bitbake/bin/toaster
+     $ source toaster start
             </literallayout>
             You can now run your builds from the command line, or with
             Toaster as explained in section
@@ -56,7 +56,23 @@
             set a different port.
             For example, the following command sets the port to "8400":
             <literallayout class='monospaced'>
-     $ source ../bitbake/bin/toaster webport=8400
+     $ source toaster start webport=8400
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='setting-a-different-address'>
+        <title>Setting a Different Address</title>
+
+        <para>
+            By default, Toaster binds to the loop back address
+            (i.e. localhost).
+            You can use the <filename>WEBPORT</filename> parameter to
+            set a different host.
+            For example, the following command sets the host and port
+            to "0.0.0.0:8400":
+            <literallayout class='monospaced'>
+     $ source toaster start webport=0.0.0.0:8400
             </literallayout>
         </para>
     </section>
@@ -116,12 +132,14 @@
             create a superuser by following these steps:
             <orderedlist>
               <listitem><para>
-                  If you used <filename>virtualenv</filename>, which is
+                  If you used <filename>pip3</filename>, which is
                   recommended, to set up the Toaster system dependencies,
-                  you need be sure the virtual environment is activated.
-                  To activate this environment, use the following command:
+                  you need be sure the local user path is in your
+                  <filename>PATH</filename> list.
+                  To append the pip3 local user path, use the following
+                  command:
                   <literallayout class='monospaced'>
-   $ source venv/bin/activate
+   $ export PATH=$PATH:$HOME/.local/bin
                   </literallayout>
                   </para></listitem>
               <listitem><para>
@@ -211,16 +229,23 @@
                       Use the Mysql database server.
                       </para></listitem>
                   <listitem><para>
-                      If you are using Ubuntu 14.04.3, run the following:
+                      If you are using Ubuntu 16.04, run the following:
                       <literallayout class='monospaced'>
-   $ sudo apt-get install apache2 libapache2-mod-wsgi mysql-server virtualenv libmysqlclient-dev
+   $ sudo apt-get install apache2 libapache2-mod-wsgi-py3 mysql-server python3-pip libmysqlclient-dev
                       </literallayout>
                       </para></listitem>
                   <listitem><para>
-                      If you are using Fedora 22 or a RedHat distribution, run
+                      If you are using Fedora 24 or a RedHat distribution, run
                       the following:
                       <literallayout class='monospaced'>
-   $ sudo dnf install httpd mod_wsgi python-virtualenv gcc mysql-devel
+   $ sudo dnf install httpd python3-mod_wsgi python3-pip mariadb-server mariadb-devel python3-devel
+                      </literallayout>
+                      </para></listitem>
+                  <listitem><para>
+                      If you are using openSUSE Leap 42.1, run
+                      the following:
+                      <literallayout class='monospaced'>
+   $ sudo zypper install apache2 apache2-mod_wsgi-python3 python3-pip mariadb mariadb-client python3-devel
                       </literallayout>
                       </para></listitem>
               </itemizedlist>
@@ -234,28 +259,31 @@
               Perform the following steps to install Toaster:
               <orderedlist>
                   <listitem><para>
+                      Create toaster user and set its home directory to
+                      <filename>/var/www/toaster</filename>:
+                      <literallayout class='monospaced'>
+    $ sudo /usr/sbin/useradd toaster -md /var/www/toaster -s /bin/false
+    $ sudo su - toaster -s /bin/bash
+                      </literallayout>
+                      </para></listitem>
+                  <listitem><para>
                       Checkout a copy of <filename>poky</filename>
                       into the web server directory.
                       You will be using <filename>/var/www/toaster</filename>:
                       <literallayout class='monospaced'>
-   $ mkdir -p /var/www/toaster
-   $ cd /var/www/toaster/
    $ git clone git://git.yoctoproject.org/poky
    $ git checkout &DISTRO_NAME_NO_CAP;
                       </literallayout>
                       </para></listitem>
                   <listitem><para>
-                      Initialize a virtual environment and install Toaster
-                      dependencies.
-                      Using a virtual environment keeps the Python packages
+                      Install Toaster
+                      dependencies using the --user flag which
+                      keeps the Python packages
                       isolated from your system-provided packages:
                       <literallayout class='monospaced'>
    $ cd /var/www/toaster/
-   $ virtualenv venv
-   $ source ./venv/bin/activate
-   $ pip install -r ./poky/bitbake/toaster-requirements.txt
-   $ pip install mysql
-   $ pip install MySQL-python
+   $ pip3 install --user -r ./poky/bitbake/toaster-requirements.txt
+   $ pip3 install --user mysqlclient
                       </literallayout>
                       <note>
                           Isolating these packages is not required but is
@@ -270,7 +298,9 @@
                       as follows:
                       <itemizedlist>
                           <listitem><para>
-                              Edit the <filename>DATABASE</filename> settings:
+                              Edit the
+                              <ulink url='http://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SECRET_KEY'>DATABASE</ulink>
+                              settings:
                               <literallayout class='monospaced'>
    DATABASES = {
        'default': {
@@ -285,13 +315,15 @@
                               </literallayout>
                               </para></listitem>
                           <listitem><para>
-                              Edit the <filename>SECRET_KEY</filename>:
+                              Edit the
+                              <ulink url='http://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SECRET_KEY'>SECRET_KEY</ulink>:
                               <literallayout class='monospaced'>
    SECRET_KEY = '<replaceable>your_secret_key</replaceable>'
                               </literallayout>
                               </para></listitem>
                           <listitem><para>
-                              Edit the <filename>STATIC_ROOT</filename>:
+                              Edit the
+                              <ulink url='http://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SECRET_KEY'>STATIC_ROOT</ulink>:
                               <literallayout class='monospaced'>
    STATIC_ROOT = '/var/www/toaster/static_files/'
                               </literallayout>
@@ -314,9 +346,9 @@
                       default data, and gather the statically-served files:
                       <literallayout class='monospaced'>
    $ cd  /var/www/toaster/poky/
-   $ ./bitbake/lib/toaster/manage.py syncdb
    $ ./bitbake/lib/toaster/manage.py migrate
-   $ TOASTER_DIR=`pwd` TOASTER_CONF=./meta-poky/conf/toasterconf.json ./bitbake/lib/toaster/manage.py checksettings
+   $ TOASTER_DIR=`pwd` TOASTER_CONF=./meta-poky/conf/toasterconf.json \
+     ./bitbake/lib/toaster/manage.py checksettings
    $ ./bitbake/lib/toaster/manage.py collectstatic
                       </literallayout>
                       </para>
@@ -324,8 +356,8 @@
                       <para>
                           For the above set of commands, after moving to the
                           <filename>poky</filename> directory,
-                          the <filename>syncdb</filename> and <filename>migrate</filename>
-                          commands ensure the database
+                          the <filename>migrate</filename>
+                          command ensures the database
                           schema has had changes propagated correctly (i.e.
                           migrations).
                       </para>
@@ -365,7 +397,8 @@
                           Finally, the <filename>collectstatic</filename> command
                           is a Django framework command that collects all the
                           statically served files into a designated directory to
-                          be served up by the Apache web server.
+                          be served up by the Apache web server as defined by
+                          <filename>STATIC_ROOT</filename>.
                       </para></listitem>
                   <listitem><para>
                       Add an Apache configuration file for Toaster to your Apache web
@@ -378,21 +411,35 @@
                       <literallayout class='monospaced'>
    /etc/httpd/conf.d/toaster.conf
                       </literallayout>
+                      If you are using OpenSUSE, put it here:
+                      <literallayout class='monospaced'>
+   /etc/apache2/conf.d/toaster.conf
+                      </literallayout>
                       Following is a sample Apache configuration for Toaster
                       you can follow:
                       <literallayout class='monospaced'>
    Alias /static /var/www/toaster/static_files
    &lt;Directory /var/www/toaster/static_files&gt;
-           Order allow,deny
-           Allow from all
-           Require all granted
+           &lt;IfModule mod_access_compat.c&gt;
+                   Order allow,deny
+                   Allow from all
+           &lt;/IfModule&gt;
+           &lt;IfModule !mod_access_compat.c&gt;
+                   Require all granted
+           &lt;/IfModule&gt;
    &lt;/Directory&gt;
 
-   WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/venv/lib/python2.7/site-packages
+   &lt;Directory /var/www/toaster/poky/bitbake/lib/toaster/toastermain&gt;
+           &lt;Files "wsgi.py"&gt;
+              Require all granted
+           &lt;/Files&gt;
+   &lt;/Directory&gt;
+
+   WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/.local/lib/python3.4/site-packages
 
    WSGIScriptAlias / "/var/www/toaster/poky/bitbake/lib/toaster/toastermain/wsgi.py"
    &lt;Location /&gt;
-       WSGIProcessGroup toastern_wsgi
+       WSGIProcessGroup toaster_wsgi
    &lt;/Location&gt;
                       </literallayout>
                       If you are using Ubuntu or Debian,
@@ -404,7 +451,7 @@
                       </literallayout>
                       Finally, restart Apache to make sure all new configuration
                       is loaded.
-                      For Ubuntu and Debian use:
+                      For Ubuntu, Debian, and OpenSUSE use:
                       <literallayout class='monospaced'>
    $ sudo service apache2 restart
                       </literallayout>
@@ -414,22 +461,53 @@
                       </literallayout>
                       </para></listitem>
                   <listitem><para>
-                      Install the build runner service.
-                      This service needs to be running in order to dispatch
-                      builds.
-                      Use this command:
+                      Prepare the systemd service to run Toaster builds.
+                      Here is a sample configuration file for the service:
                       <literallayout class='monospaced'>
-   /var/www/toaster/poky/bitbake/lib/toaster/manage.py runbuilds
+   [Unit]
+   Description=Toaster runbuilds
+
+   [Service]
+   Type=forking
+   User=toaster
+   ExecStart=/usr/bin/screen -d -m -S runbuilds /var/www/toaster/poky/bitbake/lib/toaster/runbuilds-service.sh start
+   ExecStop=/usr/bin/screen -S runbuilds -X quit
+   WorkingDirectory=/var/www/toaster/poky
+
+   [Install]
+   WantedBy=multi-user.target
                       </literallayout>
-                      Here is an example:
+                      Prepare the <filename>runbuilds-service.sh</filename>
+                      script that you need to place in the
+                      <filename>/var/www/toaster/poky/bitbake/lib/toaster/</filename>
+                      directory by setting up executable permissions:
                       <literallayout class='monospaced'>
-   #!/bin/sh
-   # toaster run builds dispatcher
-   cd /var/www/toaster/
-   source ./venv/bin/activate
-   ./bitbake/lib/toaster/manage.py runbuilds
+   #!/bin/bash
+
+   #export http_proxy=http://proxy.host.com:8080
+   #export https_proxy=http://proxy.host.com:8080
+   #export GIT_PROXY_COMMAND=$HOME/bin/gitproxy
+
+   cd ~/poky/
+   source ./oe-init-build-env build
+   source ../bitbake/bin/toaster $1 noweb
+   [ "$1" == 'start' ] &amp;&amp; /bin/bash
                       </literallayout>
                       </para></listitem>
+                  <listitem><para>
+                      Run the service:
+                      <literallayout class='monospaced'>
+   # service runbuilds start
+                      </literallayout>
+                      Since the service is running in a detached screen
+                      session, you can attach to it using this command:
+                      <literallayout class='monospaced'>
+   $ sudo su - toaster
+   $ screen -rS runbuilds
+                      </literallayout>
+                      You can detach from the service again using "Ctrl-a"
+                      followed by "d" key combination.
+                      </para></listitem>
               </orderedlist>
               You can now open up a browser and start using Toaster.
           </para>
diff --git a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-start.xml b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-start.xml
index daefa79..c5c6795 100644
--- a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-start.xml
+++ b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual-start.xml
@@ -22,6 +22,11 @@
             and
             "<ulink url='&YOCTO_DOCS_QS_URL;#releases'>Yocto Project Release</ulink>"
             sections in the Yocto Project Quick Start.
+ 	    For Ubuntu/Debian, you might also need to do an additional install
+            of pip3.
+                <literallayout class='monospaced'>
+     $ sudo apt-get install python3-pip
+                </literallayout>
         </para>
     </section>
 
@@ -42,56 +47,6 @@
             install-compatible format.
         </para>
 
-        <section id='toaster-virtual-environment'>
-            <title>Set Up a Python Virtual Environment</title>
-
-            <para>
-                Set up a Python virtual environment that allows you
-                to maintain a dedicated Python executable and its own
-                set of installed modules.
-                Doing so separates the executable from Python and the
-                modules provided by the operating system.
-                This separation avoids any version conflicts.
-                <note>
-                    Creating a virtual environment is not absolutely
-                    necessary.
-                    However, doing so is highly recommended.
-                </note>
-            </para>
-
-            <para>
-                Follow these steps to set up your virtual environment.
-                These steps assume a Ubuntu distribution:
-                <orderedlist>
-                    <listitem><para><emphasis>Install <filename>virtualenv</filename>:</emphasis>
-                        Install the supported
-                        <filename>python-virtualenv</filename> package from your
-                        distribution rather than using <filename>pip</filename>.
-                        <literallayout class='monospaced'>
-     $ sudo apt-get install python-virtualenv
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Create and Activate a Virtual Environment:</emphasis>
-                        <literallayout class='monospaced'>
-     $ virtualenv venv
-     $ source venv/bin/activate
-                        </literallayout>
-                        </para></listitem>
-                </orderedlist>
-                <note>
-                    After setting up a virtual environment in
-                    which to run Toaster, you must initialize that
-                    virtual environment each time you want to start
-                    Toaster.
-                    Use the following to initialize the environment just
-                    before you start Toaster:
-                    <literallayout class='monospaced'>
-     $ source venv/bin/activate
-                    </literallayout>
-                </note>
-            </para>
-        </section>
-
         <section id='toaster-load-packages'>
             <title>Install Toaster Packages</title>
 
@@ -99,7 +54,21 @@
                 You need to install the packages that Toaster requires.
                 Use this command:
                 <literallayout class='monospaced'>
-     $ pip install -r bitbake/toaster-requirements.txt
+     $ $ pip3 install --user -r bitbake/toaster-requirements.txt
+                </literallayout>
+                The previous command installs the necessary Toaster modules
+                into a local python 3 cache in your
+                <filename>$HOME</filename> directory.
+                The caches is actually located in
+                <filename>$HOME/.local</filename>.
+                To see what packages have been installed into your
+                <filename>$HOME</filename> directory, do the following:
+                <literallayout class='monospaced'>
+     $ pip3 list installed --local
+                </literallayout>
+                If you need to remove something, the following works:
+                <literallayout class='monospaced'>
+     $ pip3 uninstall PackageNameToUninstall
                 </literallayout>
             </para>
         </section>
diff --git a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual.xml b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual.xml
index 7a8912a..386c51b 100644
--- a/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual.xml
+++ b/import-layers/yocto-poky/documentation/toaster-manual/toaster-manual.xml
@@ -46,6 +46,11 @@
                 <date>April 2016</date>
                 <revremark>Released with the Yocto Project 2.1 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.2</revnumber>
+                <date>October 2016</date>
+                <revremark>Released with the Yocto Project 2.2 Release.</revremark>
+            </revision>
        </revhistory>
 
     <copyright>
diff --git a/import-layers/yocto-poky/documentation/tools/mega-manual.sed b/import-layers/yocto-poky/documentation/tools/mega-manual.sed
index 5a3bdf9..b6d265f 100644
--- a/import-layers/yocto-poky/documentation/tools/mega-manual.sed
+++ b/import-layers/yocto-poky/documentation/tools/mega-manual.sed
@@ -2,32 +2,32 @@
 # This style is for manual folders like "yocto-project-qs" and "poky-ref-manual".
 # This is the old way that did it.  Can't do that now that we have "bitbake-user-manual" strings
 # in the mega-manual.
-# s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/[a-z]*-[a-z]*-[a-z]*\/[a-z]*-[a-z]*-[a-z]*.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/yocto-project-qs\/yocto-project-qs.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/poky-ref-manual\/poky-ref-manual.html#/\"link\" href=\"#/g
+# s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/[a-z]*-[a-z]*-[a-z]*\/[a-z]*-[a-z]*-[a-z]*.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/yocto-project-qs\/yocto-project-qs.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/poky-ref-manual\/poky-ref-manual.html#/\"link\" href=\"#/g
 
 # Processes all other manuals (<word>-<word> style) except for the BitBake User Manual because
 # it is not included in the mega-manual.
 # This style is for manual folders that use two word, which is the standard now (e.g. "ref-manual").
 # This was the one-liner that worked before we introduced the BitBake User Manual, which is
 # not in the mega-manual.
-# s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/[a-z]*-[a-z]*\/[a-z]*-[a-z]*.html#/\"link\" href=\"#/g
+# s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/[a-z]*-[a-z]*\/[a-z]*-[a-z]*.html#/\"link\" href=\"#/g
 
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/sdk-manual\/sdk-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/bsp-guide\/bsp-guide.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/dev-manual\/dev-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/kernel-dev\/kernel-dev.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/profile-manual\/profile-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/ref-manual\/ref-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/toaster-manual\/toaster-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/yocto-project-qs\/yocto-project-qs.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/sdk-manual\/sdk-manual.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/bsp-guide\/bsp-guide.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/dev-manual\/dev-manual.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/kernel-dev\/kernel-dev.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/profile-manual\/profile-manual.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/ref-manual\/ref-manual.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/toaster-manual\/toaster-manual.html#/\"link\" href=\"#/g
+s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/yocto-project-qs\/yocto-project-qs.html#/\"link\" href=\"#/g
 
 # Process cases where just an external manual is referenced without an id anchor
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/yocto-project-qs\/yocto-project-qs.html\" target=\"_top\">Yocto Project Quick Start<\/a>/Yocto Project Quick Start/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/dev-manual\/dev-manual.html\" target=\"_top\">Yocto Project Development Manual<\/a>/Yocto Project Development Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/sdk-manual\/sdk-manual.html\" target=\"_top\">Yocto Project Software Development Kit (SDK) Developer's Guide<\/a>/Yocto Project Software Development Kit (SDK) Developer's Guide/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/bsp-guide\/bsp-guide.html\" target=\"_top\">Yocto Project Board Support Package (BSP) Developer's Guide<\/a>/Yocto Project Board Support Package (BSP) Developer's Guide/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/profile-manual\/profile-manual.html\" target=\"_top\">Yocto Project Profiling and Tracing Manual<\/a>/Yocto Project Profiling and Tracing Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/kernel-dev\/kernel-dev.html\" target=\"_top\">Yocto Project Linux Kernel Development Manual<\/a>/Yocto Project Linux Kernel Development Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/ref-manual\/ref-manual.html\" target=\"_top\">Yocto Project Reference Manual<\/a>/Yocto Project Reference Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.1\/toaster-manual\/toaster-manual.html\" target=\"_top\">Toaster User Manual<\/a>/Toaster User Manual/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/yocto-project-qs\/yocto-project-qs.html\" target=\"_top\">Yocto Project Quick Start<\/a>/Yocto Project Quick Start/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/dev-manual\/dev-manual.html\" target=\"_top\">Yocto Project Development Manual<\/a>/Yocto Project Development Manual/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/sdk-manual\/sdk-manual.html\" target=\"_top\">Yocto Project Software Development Kit (SDK) Developer's Guide<\/a>/Yocto Project Software Development Kit (SDK) Developer's Guide/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/bsp-guide\/bsp-guide.html\" target=\"_top\">Yocto Project Board Support Package (BSP) Developer's Guide<\/a>/Yocto Project Board Support Package (BSP) Developer's Guide/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/profile-manual\/profile-manual.html\" target=\"_top\">Yocto Project Profiling and Tracing Manual<\/a>/Yocto Project Profiling and Tracing Manual/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/kernel-dev\/kernel-dev.html\" target=\"_top\">Yocto Project Linux Kernel Development Manual<\/a>/Yocto Project Linux Kernel Development Manual/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/ref-manual\/ref-manual.html\" target=\"_top\">Yocto Project Reference Manual<\/a>/Yocto Project Reference Manual/g
+s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.2\/toaster-manual\/toaster-manual.html\" target=\"_top\">Toaster User Manual<\/a>/Toaster User Manual/g
diff --git a/import-layers/yocto-poky/documentation/yocto-project-qs/yocto-project-qs.xml b/import-layers/yocto-poky/documentation/yocto-project-qs/yocto-project-qs.xml
index c09e971..d18f0ae 100644
--- a/import-layers/yocto-poky/documentation/yocto-project-qs/yocto-project-qs.xml
+++ b/import-layers/yocto-poky/documentation/yocto-project-qs/yocto-project-qs.xml
@@ -255,8 +255,7 @@
                         tar 1.24 or greater
                         </para></listitem>
                     <listitem><para>
-                        Python 2.7.3 or greater excluding Python
-                        3.x, which is not supported.
+                        Python 3.4.0 or greater.
                         </para></listitem>
                 </itemizedlist>
                 If your build host does not meet any of these three listed
@@ -391,8 +390,8 @@
         </para>
 
         <para>
-            You can try out the Yocto Project using the command-line interface
-            by finishing this quick start, which presents steps that let you
+            To use the Yocto Project through the command-line interface,
+            finish this quick start, which presents steps that let you
             do the following:
             <itemizedlist>
                 <listitem><para>
@@ -401,230 +400,239 @@
                     </para></listitem>
                 <listitem><para>
                     Easily change configurations so that you can quickly
-                    create a second image, which would be for MinnowBoard
+                    create a second image that you can load onto bootable
+                    media and actually boot target hardware.
+                    This example uses the MinnowBoard
                     MAX-compatible boards.
                     </para></listitem>
             </itemizedlist>
             <note>
-                The steps in this section do not provide detail, but rather
-                provide minimal, working commands and examples designed to
-                just get you started.
+                The steps in the following two sections do not provide detail,
+                but rather provide minimal, working commands and examples
+                designed to just get you started.
                 For more details, see the appropriate manuals in the
                 <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project manual set</ulink>.
             </note>
         </para>
 
-        <para>
-            Use the following commands to build your image.
-            The OpenEmbedded build system creates an entire Linux
-            distribution, including the toolchain, from source.
-            <note><title>Note about Network Proxies</title>
-                <para>
-                    By default, the build process searches for source code
-                    using a pre-determined order through a set of
-                    locations.
-                    If you are working behind a firewall and your build
-                    host is not set up for proxies, you could encounter
-                    problems with the build process when fetching source
-                    code (e.g. fetcher failures or Git failures).
-                </para>
+        <section id='building-an-image-for-emulation'>
+            <title>Building an Image for Emulation</title>
 
-                <para>
-                    If you do not know your proxy settings, consult your
-                    local network infrastructure resources and get that
-                    information.
-                    A good starting point could also be to check your web
-                    browser settings.
-                    Finally, you can find more information on using the
-                    Yocto Project behind a firewall in the Yocto Project
-                    Reference Manual
-                    <ulink url='&YOCTO_DOCS_REF_URL;#how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>FAQ</ulink>
-                    and on the
-                    "<ulink url='https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
-                    wiki page.
-                </para>
-            </note>
-        </para>
+            <para>
+                Use the following commands to build your image.
+                The OpenEmbedded build system creates an entire Linux
+                distribution, including the toolchain, from source.
+                <note><title>Note about Network Proxies</title>
+                    <para>
+                        By default, the build process searches for source code
+                        using a pre-determined order through a set of
+                        locations.
+                        If you are working behind a firewall and your build
+                        host is not set up for proxies, you could encounter
+                        problems with the build process when fetching source
+                        code (e.g. fetcher failures or Git failures).
+                    </para>
 
-        <para>
-            <orderedlist>
-                <listitem><para><emphasis>Be Sure Your Build Host is Set Up:</emphasis>
-                    The steps to build an image in this section depend on
-                    your build host being properly set up.
-                    Be sure you have worked through the requirements
-                    described in the
-                    "<link linkend='yp-resources'>Setting Up to Use the Yocto Project</link>"
-                    section.
-                    </para></listitem>
-                <listitem><para><emphasis>Check Out Your Branch:</emphasis>
-                    Be sure you are in the
-                    <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
-                    (e.g. <filename>poky</filename>) and then check out
-                    the branch associated with the latest Yocto Project
-                    Release:
-                    <literallayout class='monospaced'>
+                    <para>
+                        If you do not know your proxy settings, consult your
+                        local network infrastructure resources and get that
+                        information.
+                        A good starting point could also be to check your web
+                        browser settings.
+                        Finally, you can find more information on using the
+                        Yocto Project behind a firewall in the Yocto Project
+                        Reference Manual
+                        <ulink url='&YOCTO_DOCS_REF_URL;#how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>FAQ</ulink>
+                        and on the
+                        "<ulink url='https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
+                        wiki page.
+                    </para>
+                </note>
+            </para>
+
+            <para>
+                <orderedlist>
+                    <listitem><para><emphasis>Be Sure Your Build Host is Set Up:</emphasis>
+                        The steps to build an image in this section depend on
+                        your build host being properly set up.
+                        Be sure you have worked through the requirements
+                        described in the
+                        "<link linkend='yp-resources'>Setting Up to Use the Yocto Project</link>"
+                        section.
+                        </para></listitem>
+                    <listitem><para><emphasis>Check Out Your Branch:</emphasis>
+                        Be sure you are in the
+                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
+                        (e.g. <filename>poky</filename>) and then check out
+                        the branch associated with the latest Yocto Project
+                        Release:
+                        <literallayout class='monospaced'>
      $ cd ~/poky
      $ git checkout -b &DISTRO_NAME_NO_CAP; origin/&DISTRO_NAME_NO_CAP;
-                    </literallayout>
-                    Git's <filename>checkout</filename> command checks out
-                    the current Yocto Project release into a local branch
-                    whose name matches the release (i.e.
-                    <filename>&DISTRO_NAME_NO_CAP;</filename>).
-                    The local branch tracks the upstream branch of the
-                    same name.
-                    Creating your own branch based on the released
-                    branch ensures you are using the latest files for
-                    that release.
-                    </para></listitem>
-                <listitem><para><emphasis>Initialize the Build Environment:</emphasis>
-                    Run the
-                    <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
-                    environment setup script to define the OpenEmbedded
-                    build environment on your build host.
-                    <literallayout class='monospaced'>
+                        </literallayout>
+                        Git's <filename>checkout</filename> command checks out
+                        the current Yocto Project release into a local branch
+                        whose name matches the release (i.e.
+                        <filename>&DISTRO_NAME_NO_CAP;</filename>).
+                        The local branch tracks the upstream branch of the
+                        same name.
+                        Creating your own branch based on the released
+                        branch ensures you are using the latest files for
+                        that release.
+                        </para></listitem>
+                    <listitem><para><emphasis>Initialize the Build Environment:</emphasis>
+                        Run the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
+                        environment setup script to define the OpenEmbedded
+                        build environment on your build host.
+                        <literallayout class='monospaced'>
      $ source &OE_INIT_FILE;
-                    </literallayout>
-                    Among other things, the script creates the
-                    <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
-                    which is <filename>build</filename> in this case
-                    and is located in the
-                    <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
-                    After the script runs, your current working directory
-                    is set to the Build Directory.
-                    Later, when the build completes, the Build Directory
-                    contains all the files created during the build.
-                    <note>
-                        For information on running a memory-resident
-                        <ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-components-bitbake'>BitBake</ulink>,
-                        see the
-                        <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>
-                        setup script.
-                    </note>
-                    </para></listitem>
-                <listitem><para><emphasis>Examine Your Local Configuration File:</emphasis>
-                    When you set up the build environment, a local
-                    configuration file named
-                    <filename>local.conf</filename> becomes available in
-                    a <filename>conf</filename> subdirectory of the
-                    Build Directory.
-                    Before using BitBake to start the build, you can
-                    look at this file and be sure your general
-                    configurations are how you want them:
-                    <itemizedlist>
-                        <listitem><para>
-                            To help conserve disk space during builds,
-                            you can add the following statement to your
-                            project's configuration file, which for this
-                            example is
-                            <filename>poky/build/conf/local.conf</filename>.
-                            Adding this statement deletes the work
-                            directory used for building a recipe once the
-                            recipe is built.
-                            <literallayout class='monospaced'>
+                        </literallayout>
+                        Among other things, the script creates the
+                        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
+                        which is <filename>build</filename> in this case
+                        and is located in the
+                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+                        After the script runs, your current working directory
+                        is set to the Build Directory.
+                        Later, when the build completes, the Build Directory
+                        contains all the files created during the build.
+                        <note>
+                            For information on running a memory-resident
+                            <ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-components-bitbake'>BitBake</ulink>,
+                            see the
+                            <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>
+                            setup script.
+                        </note>
+                        </para></listitem>
+                    <listitem><para><emphasis>Examine Your Local Configuration File:</emphasis>
+                        When you set up the build environment, a local
+                        configuration file named
+                        <filename>local.conf</filename> becomes available in
+                        a <filename>conf</filename> subdirectory of the
+                        Build Directory.
+                        Before using BitBake to start the build, you can
+                        look at this file and be sure your general
+                        configurations are how you want them:
+                        <itemizedlist>
+                            <listitem><para>
+                                To help conserve disk space during builds,
+                                you can add the following statement to your
+                                project's configuration file, which for this
+                                example is
+                                <filename>poky/build/conf/local.conf</filename>.
+                                Adding this statement deletes the work
+                                directory used for building a recipe once the
+                                recipe is built.
+                                <literallayout class='monospaced'>
      INHERIT += "rm_work"
-                            </literallayout>
-                            </para></listitem>
-                        <listitem><para>
-                            By default, the target machine for the build is
-                            <filename>qemux86</filename>,
-                            which produces an image that can be used in
-                            the QEMU emulator and is targeted at an
-                            <trademark class='registered'>Intel</trademark>
-                            32-bit based architecture.
-                            Further on in this example, this default is
-                            easily changed through the
-                            <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
-                            variable so that you can quickly
-                            build an image for a different machine.
-                            </para></listitem>
-                        <listitem><para>
-                            Another consideration before you build is the
-                            package manager used when creating the image.
-                            The default <filename>local.conf</filename>
-                            file selects the RPM package manager.
-                            You can control this configuration by using the
-                            <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink></filename>
-                            variable.</para>
-                            <para>Selection of the package manager is separate
-                            from whether package management is used at runtime
-                            in the target image.</para>
-                            <para>For additional package manager selection
-                            information, see the
-                            "<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-package'><filename>package.bbclass</filename></ulink>"
-                            section in the Yocto Project Reference Manual.
-                            </para></listitem>
-                    </itemizedlist>
-                    </para></listitem>
-                <listitem><para><emphasis>Start the Build:</emphasis>
-                    Continue with the following command to build an OS image
-                    for the target, which is
-                    <filename>core-image-sato</filename> in this example:
-                    <note>
-                        Depending on the number of processors and cores, the
-                        amount of RAM, the speed of your Internet connection
-                        and other factors, the build process could take several
-                        hours the first time you run it.
-                        Subsequent builds run much faster since parts of the
-                        build are cached.
-                    </note>
-                    <literallayout class='monospaced'>
+                                </literallayout>
+                                </para></listitem>
+                            <listitem><para>
+                                By default, the target machine for the build is
+                                <filename>qemux86</filename>,
+                                which produces an image that can be used in
+                                the QEMU emulator and is targeted at an
+                                <trademark class='registered'>Intel</trademark>
+                                32-bit based architecture.
+                                Further on in this example, this default is
+                                easily changed through the
+                                <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
+                                variable so that you can quickly
+                                build an image for a different machine.
+                                </para></listitem>
+                            <listitem><para>
+                                Another consideration before you build is the
+                                package manager used when creating the image.
+                                The default <filename>local.conf</filename>
+                                file selects the RPM package manager.
+                                You can control this configuration by using the
+                                <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink></filename>
+                                variable.</para>
+                                <para>Selection of the package manager is separate
+                                from whether package management is used at runtime
+                                in the target image.</para>
+                                <para>For additional package manager selection
+                                information, see the
+                                "<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-package'><filename>package.bbclass</filename></ulink>"
+                                section in the Yocto Project Reference Manual.
+                                </para></listitem>
+                        </itemizedlist>
+                        </para></listitem>
+                    <listitem><para><emphasis>Start the Build:</emphasis>
+                        Continue with the following command to build an OS image
+                        for the target, which is
+                        <filename>core-image-sato</filename> in this example:
+                        <note>
+                            Depending on the number of processors and cores, the
+                            amount of RAM, the speed of your Internet connection
+                            and other factors, the build process could take several
+                            hours the first time you run it.
+                            Subsequent builds run much faster since parts of the
+                            build are cached.
+                        </note>
+                        <literallayout class='monospaced'>
      $ bitbake core-image-sato
-                    </literallayout>
-                    For information on using the
-                    <filename>bitbake</filename> command, see the
-                    "<ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-components-bitbake'>BitBake</ulink>"
-                    section in the Yocto Project Reference Manual, or see the
-                    "<ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual-command'>BitBake Command</ulink>"
-                    section in the BitBake User Manual.
-                    For information on other targets, see the
-                    "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
-                    chapter in the Yocto Project Reference Manual.
-                    </para></listitem>
-                <listitem><para><emphasis>Simulate Your Image Using QEMU:</emphasis>
-                    Once this particular image is built, you can start QEMU
-                    and run the image:
-                    <literallayout class='monospaced'>
+                        </literallayout>
+                        For information on using the
+                        <filename>bitbake</filename> command, see the
+                        "<ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-components-bitbake'>BitBake</ulink>"
+                        section in the Yocto Project Reference Manual, or see the
+                        "<ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual-command'>BitBake Command</ulink>"
+                        section in the BitBake User Manual.
+                        For information on other targets, see the
+                        "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
+                        chapter in the Yocto Project Reference Manual.
+                        </para></listitem>
+                    <listitem><para><emphasis>Simulate Your Image Using QEMU:</emphasis>
+                        Once this particular image is built, you can start QEMU
+                        and run the image:
+                        <literallayout class='monospaced'>
      $ runqemu qemux86
-                    </literallayout>
-                    If you want to learn more about running QEMU, see the
-                    "<ulink url="&YOCTO_DOCS_DEV_URL;#dev-manual-qemu">Using the Quick EMUlator (QEMU)</ulink>"
-                    chapter in the Yocto Project Development Manual.
-                    </para></listitem>
-                <listitem><para><emphasis>Exit QEMU:</emphasis>
-                    Exit QEMU by either clicking on the shutdown icon or by
-                    opening a terminal, typing
-                    <filename>poweroff</filename>, and then pressing "Enter".
-                    </para></listitem>
-            </orderedlist>
-        </para>
+                        </literallayout>
+                        If you want to learn more about running QEMU, see the
+                        "<ulink url="&YOCTO_DOCS_DEV_URL;#dev-manual-qemu">Using the Quick EMUlator (QEMU)</ulink>"
+                        chapter in the Yocto Project Development Manual.
+                        </para></listitem>
+                    <listitem><para><emphasis>Exit QEMU:</emphasis>
+                        Exit QEMU by either clicking on the shutdown icon or by
+                        opening a terminal, typing
+                        <filename>poweroff</filename>, and then pressing "Enter".
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
 
-        <para id='qs-minnowboard-example'>
-            The following steps show how easy it is to set up to build an
-            image for a new machine.
-            These steps build an image for the MinnowBoard MAX, which is
-            supported by the Yocto Project and the
-            <filename>meta-intel</filename> <filename>intel-corei7-64</filename>
-            and <filename>intel-core2-32</filename> Board Support Packages
-            (BSPs).
-            <note>
-                The MinnowBoard MAX ships with 64-bit firmware.
-                If you want to use the board in 32-bit mode, you must
-                download the
-                <ulink url='http://firmware.intel.com/projects/minnowboard-max'>32-bit firmware</ulink>.
-            </note>
-        </para>
+        <section id='building-an-image-for-hardware'>
+            <title>Building an Image for Hardware</title>
 
-        <para>
-            <orderedlist>
-                <listitem><para><emphasis>Create a Local Copy of the
-                    <filename>meta-intel</filename> Repository:</emphasis>
-                    Building an image for the MinnowBoard MAX requires the
-                    <filename>meta-intel</filename> layer.
-                    Use the <filename>git clone</filename> command to create
-                    a local copy of the repository inside your
-                    <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
-                    which is <filename>poky</filename> in this example:
-                    <literallayout class='monospaced'>
+            <para id='qs-minnowboard-example'>
+                The following steps show how easy it is to set up to build an
+                image for a new machine.
+                These steps build an image for the MinnowBoard MAX, which is
+                supported by the Yocto Project and the
+                <filename>meta-intel</filename> <filename>intel-corei7-64</filename>
+                and <filename>intel-core2-32</filename> Board Support Packages
+                (BSPs).
+                <note>
+                    The MinnowBoard MAX ships with 64-bit firmware.
+                    If you want to use the board in 32-bit mode, you must
+                    download the
+                    <ulink url='http://firmware.intel.com/projects/minnowboard-max'>32-bit firmware</ulink>.
+                </note>
+            </para>
+
+            <para>
+                <orderedlist>
+                    <listitem><para><emphasis>Create a Local Copy of the
+                        <filename>meta-intel</filename> Repository:</emphasis>
+                        Building an image for the MinnowBoard MAX requires the
+                        <filename>meta-intel</filename> layer.
+                        Use the <filename>git clone</filename> command to create
+                        a local copy of the repository inside your
+                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
+                        which is <filename>poky</filename> in this example:
+                        <literallayout class='monospaced'>
      $ cd $HOME/poky
      $ git clone git://git.yoctoproject.org/meta-intel
      Cloning into 'meta-intel'...
@@ -634,121 +642,133 @@
      remote: Total 11988 (delta 6881), reused 11752 (delta 6645)
      Resolving deltas: 100% (6881/6881), done.
      Checking connectivity... done.
-                    </literallayout>
-                    By default when you clone a Git repository, the
-                    "master" branch is checked out.
-                    Before you build your image that uses the
-                    <filename>meta-intel</filename> layer, you must be
-                    sure that both repositories
-                    (<filename>meta-intel</filename> and
-                    <filename>poky</filename>) are using the same releases.
-                    Consequently, you need to checkout out the
-                    "<filename>&DISTRO_NAME_NO_CAP;</filename>" release after
-                    cloning <filename>meta-intel</filename>:
-                    <literallayout class='monospaced'>
+                        </literallayout>
+                        By default when you clone a Git repository, the
+                        "master" branch is checked out.
+                        Before you build your image that uses the
+                        <filename>meta-intel</filename> layer, you must be
+                        sure that both repositories
+                        (<filename>meta-intel</filename> and
+                        <filename>poky</filename>) are using the same releases.
+                        Consequently, you need to checkout out the
+                        "<filename>&DISTRO_NAME_NO_CAP;</filename>" release after
+                        cloning <filename>meta-intel</filename>:
+                        <literallayout class='monospaced'>
      $ cd $HOME/poky/meta-intel
      $ git checkout &DISTRO_NAME_NO_CAP;
      Branch &DISTRO_NAME_NO_CAP; set up to track remote branch &DISTRO_NAME_NO_CAP; from origin.
      Switched to a new branch '&DISTRO_NAME_NO_CAP;'
-                    </literallayout>
-                    </para></listitem>
-                <listitem><para><emphasis>Configure the Build:</emphasis>
-                    To configure the build, you edit the
-                    <filename>bblayers.conf</filename> and
-                    <filename>local.conf</filename> files, both of which are
-                    located in the <filename>build/conf</filename> directory.
-                    </para>
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para><emphasis>Configure the Build:</emphasis>
+                        To configure the build, you edit the
+                        <filename>bblayers.conf</filename> and
+                        <filename>local.conf</filename> files, both of which are
+                        located in the <filename>build/conf</filename> directory.
+                        </para>
 
-                    <para>Here is a quick way to make the edits.
-                    The first command uses the
-                    <filename>bitbake-layers add-layer</filename> command
-                    to add the <filename>meta-intel</filename>
-                    layer, which contains the <filename>intel-core*</filename>
-                    BSPs to the build.
-                    The second command selects the BSP by setting the
-                    <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
-                    variable.
-                    <literallayout class='monospaced'>
+                        <para>Here is a quick way to make the edits.
+                        The first command uses the
+                        <filename>bitbake-layers add-layer</filename> command
+                        to add the <filename>meta-intel</filename>
+                        layer, which contains the <filename>intel-core*</filename>
+                        BSPs to the build.
+                        The second command selects the BSP by setting the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
+                        variable.
+                        <literallayout class='monospaced'>
      $ cd $HOME/poky/build
      $ bitbake-layers add-layer "$HOME/poky/meta-intel"
      $ echo 'MACHINE = "intel-corei7-64"' >> conf/local.conf
-                    </literallayout>
-                    <note><title>Notes</title>
-                    <para>
-                        If you want a 64-bit build, use the following:
-                        <literallayout class='monospaced'>
+                        </literallayout>
+                        <note><title>Notes</title>
+                        <para>
+                            If you want a 64-bit build, use the following:
+                            <literallayout class='monospaced'>
      $ echo 'MACHINE = "intel-corei7-64"' >> conf/local.conf
-                        </literallayout>
-                    </para>
+                            </literallayout>
+                        </para>
 
-                    <para>
-                        If you want 32-bit images, use the following:
-                        <literallayout class='monospaced'>
+                        <para>
+                            If you want 32-bit images, use the following:
+                            <literallayout class='monospaced'>
      $ echo 'MACHINE = "intel-core2-32"' >> conf/local.conf
+                            </literallayout>
+                        </para>
+                        </note>
+                        </para></listitem>
+                    <listitem><para><emphasis>Build an Image for MinnowBoard MAX:</emphasis>
+                        The type of image you build depends on your goals.
+                        For example, the previous build created a
+                        <filename>core-image-sato</filename> image, which is an
+                        image with Sato support.
+                        It is possible to build many image types for the
+                        MinnowBoard MAX.
+                        Some possibilities are <filename>core-image-base</filename>,
+                        which is a console-only image.
+                        Another choice could be a
+                        <filename>core-image-full-cmdline</filename>, which is
+                        another console-only image but has more full-features
+                        Linux system functionality installed.
+                        For types of images you can build using the Yocto
+                        Project, see the
+                        "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
+                        chapter in the Yocto Project Reference Manual.</para>
+                        <para>Because configuration changes are minimal to set up
+                        for this second build, the OpenEmbedded build system can
+                        re-use files from previous builds as much as possible.
+                        Re-using files means this second build will be much faster
+                        than an initial build.
+                        For this example, the <filename>core-image-base</filename>
+                        image is built:
+                        <literallayout class='monospaced'>
+     $ bitbake core-image-base
                         </literallayout>
-                    </para>
-                    </note>
-                    </para></listitem>
-                <listitem><para><emphasis>Build a Minimal Image for MinnowBoard MAX:</emphasis>
-                    Use the following command to build the minimal image for
-                    MinnowBoard MAX.
-                    Because configuration changes are minimal to set up for
-                    this second build, the OpenEmbedded build system can
-                    re-use files from previous builds as much as possible.
-                    Re-using files means this second build will be much faster
-                    than an initial build.
-                    <literallayout class='monospaced'>
-     $ bitbake core-image-minimal
-                    </literallayout>
-                    Once the build completes, the resulting basic console image
-                    is located in the Build Directory here:
-                    <literallayout class='monospaced'>
-     tmp/deploy/images/intel-corei7-64/core-image-minimal-intel-corei7-64.hddimg
-                    </literallayout>
-                    </para></listitem>
-                <listitem><para><emphasis>Write the Image:</emphasis>
-                    You can write the image to a USB key, SATA drive, or SD
-                    card by using the <filename>mkefidisk.sh</filename> script,
-                    which is included in the <filename>poky</filename>
-                    repository at
-                    <filename>scripts/contrib/mkefidisk.sh</filename>:
-                    <literallayout class='monospaced'>
-     $ sudo $HOME/source/poky/scripts/contrib/mkefidisk.sh <replaceable>HOST_DEVICE</replaceable> \
-        tmp/deploy/images/intel-corei7-64/core-image-minimal-intel-corei7-64.hddimg <replaceable>TARGET_DEVICE</replaceable>
-                    </literallayout>
-                    In the previous command,
-                    <replaceable>HOST_DEVICE</replaceable> is the device node
-                    on the build host (e.g. <filename>/dev/sdc</filename> or
-                    <filename>/dev/mmcblk0</filename>).
-                    <replaceable>TARGET_DEVICE</replaceable> is the name of the
-                    device as the MinnowBoard MAX sees it (e.g.
-                    <filename>/dev/sda</filename> or
-                    <filename>/dev/mmcblk0</filename>).
-                    </para></listitem>
-                <listitem><para><emphasis>Boot the Hardware:</emphasis>
-                    With the boot device provisioned, you can insert the
-                    media into the MinnowBoard MAX and boot the hardware.
-                    The board should automatically detect the media and boot to
-                    the bootloader and subsequently the operating system.
-                    </para>
+                        Once the build completes, the resulting console-only image
+                        is located in the Build Directory here:
+                        <literallayout class='monospaced'>
+     tmp/deploy/images/intel-corei7-64/core-image-base-intel-corei7-64.hddimg
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para><emphasis>Write the Image:</emphasis>
+                        You can write the image just built to a bootable media
+                        (e.g. a USB key, SATA drive, SD card, etc.) using the
+                        <filename>dd</filename> utility:
+                        <literallayout class='monospaced'>
+     $ sudo dd if=tmp/deploy/images/intel-corei7-64/core-image-minimal-intel-corei7-64.wic of=TARGET_DEVICE
+                        </literallayout>
+                        In the previous command, the
+                        <filename>TARGET_DEVICE</filename> is the device node in
+                        the host machine (e.g. <filename>/dev/sdc</filename>, which
+                        is most likely a USB stick, or
+                        <filename>/dev/mmcblk0</filename>, which is most likely an
+                        SD card.
+                        </para></listitem>
+                    <listitem><para><emphasis>Boot the Hardware:</emphasis>
+                        With the boot device provisioned, you can insert the
+                        media into the MinnowBoard MAX and boot the hardware.
+                        The board should automatically detect the media and boot to
+                        the bootloader and subsequently the operating system.
+                        </para>
 
-                    <para>If the board does not boot automatically, you can
-                    boot it manually from the EFI shell as follows:
-                    <literallayout class='monospaced'>
+                        <para>If the board does not boot automatically, you can
+                        boot it manually from the EFI shell as follows:
+                        <literallayout class='monospaced'>
      Shell> connect -r
      Shell> map -r
      Shell> fs0:
      Shell> bootx64
-                    </literallayout>
-                    <note>
-                        For a 32-bit image use the following:
-                        <literallayout class='monospaced'>
-     Shell> bootia32
                         </literallayout>
-                    </note>
-                    </para></listitem>
-            </orderedlist>
-        </para>
+                        <note>
+                            For a 32-bit image use the following:
+                            <literallayout class='monospaced'>
+     Shell> bootia32
+                            </literallayout>
+                        </note>
+                        </para></listitem>
+                </orderedlist>
+            </para>
+        </section>
     </section>
 
     <section id='qs-next-steps'>
diff --git a/import-layers/yocto-poky/meta-poky/conf/distro/include/maintainers.inc b/import-layers/yocto-poky/meta-poky/conf/distro/include/maintainers.inc
index dbc33fc..db95111 100644
--- a/import-layers/yocto-poky/meta-poky/conf/distro/include/maintainers.inc
+++ b/import-layers/yocto-poky/meta-poky/conf/distro/include/maintainers.inc
@@ -40,34 +40,43 @@
 RECIPE_MAINTAINER_pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-apt = "Aníbal Limón <anibal.limon@linux.intel.com>"
-RECIPE_MAINTAINER_pn-aspell = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-apt-native = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-argp-standalone = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER_pn-asciidoc = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-aspell = "Jose Lamego <jose.a.lamego@linux.intel.com>"
 RECIPE_MAINTAINER_pn-at = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-at-spi2-atk = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-at-spi2-core = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-atk = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-attr = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-augeas = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-autoconf = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-autogen-native = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-automake = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-avahi = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-avahi-ui = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-avahi = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-avahi-ui = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-babeltrace = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-base-files = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-base-passwd = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-bash = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-bc = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-bash-completion = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-bc = "Jose Lamego <jose.a.lamego@linux.intel.com>"
 RECIPE_MAINTAINER_pn-bdwgc = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-beecrypt = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-bigreqsproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-bind = "Kai Kang <kai.kang@windriver.com>"
+RECIPE_MAINTAINER_pn-bind = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-binutils = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-binutils-cross = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-binutils-cross-canadian = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-binutils-crosssdk = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-bison = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-bjam-native = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-blktool = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-blktool = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-blktrace = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-bluez5 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-bmap-tools = "Ed Bartosh <ed.bartosh@linux.intel.com>"
 RECIPE_MAINTAINER_pn-boost = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-bootchart2 = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-bsd-headers = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-btrfs-tools = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-build-appliance-image = "Cristian Iorga <cristian.iorga@intel.com>"
 RECIPE_MAINTAINER_pn-build-compare = "Randy Witt <randy.e.witt@linux.intel.com>"
@@ -79,15 +88,17 @@
 RECIPE_MAINTAINER_pn-ca-certificates = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-cairo = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-calibrateproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-ccache = "Wenzong Fan <wenzong.fan@windriver.com>"
-RECIPE_MAINTAINER_pn-cdrtools-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-chkconfig = "Wenzong Fan <wenzong.fan@windriver.com>"
-RECIPE_MAINTAINER_pn-chkconfig-alternatives-native = "Wenzong Fan <wenzong.fan@windriver.com>"
-RECIPE_MAINTAINER_pn-chrpath = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-cantarell-fonts = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-ccache = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-cdrtools-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-chkconfig = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-chkconfig-alternatives-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-chrpath = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-clutter-1.0 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-clutter-gst-3.0 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-clutter-gtk-1.0 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-cmake = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-cmake = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-cmake-native = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-cogl-1.0 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-compositeproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-connman = "Maxin B. John <maxin.john@intel.com>"
@@ -112,22 +123,31 @@
 RECIPE_MAINTAINER_pn-core-image-sato = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-core-image-sato-dev = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-core-image-sato-sdk = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-core-image-sato-sdk-ptest = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-core-image-testmaster = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-core-image-testmaster-initramfs = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-core-image-weston = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-core-image-x11 = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-coreutils = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-cpio = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-cracklib = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-createrepo = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-cronie = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-cronie = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
 RECIPE_MAINTAINER_pn-cross-localedef-native = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER_pn-cryptodev-linux = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-cryptodev-module = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-cryptodev-tests = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-cups = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-curl = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-cwautomacros = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-damageproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-db = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-db = "Mark Hatle <mark.hatle@windriver.com>"
 RECIPE_MAINTAINER_pn-dbus = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-dbus-glib = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-dbus-test = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-dbus-wait = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-debianutils = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-depmodwrapper-cross = "Mark Hatle <mark.hatle@windriver.com>"
 RECIPE_MAINTAINER_pn-desktop-file-utils-native = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-dhcp = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-diffstat = "Chen Qi <Qi.Chen@windriver.com>"
@@ -135,32 +155,38 @@
 RECIPE_MAINTAINER_pn-directfb = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-directfb-examples = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-distcc = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-distcc-config = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-distcc-config = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-dmidecode = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-dmxproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-docbook-dsssl-stylesheets-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-docbook-sgml-dtd-3.1-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-docbook-sgml-dtd-4.1-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-docbook-sgml-dtd-4.5-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-docbook-utils-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-docbook-xml-dtd4 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-docbook-xsl-stylesheets = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-dosfstools = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-docbook-dsssl-stylesheets-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-docbook-sgml-dtd-3.1-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-docbook-sgml-dtd-4.1-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-docbook-sgml-dtd-4.5-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-docbook-utils-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-docbook-xml-dtd4 = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-docbook-xsl-stylesheets = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-dosfstools = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-dpkg = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-dri2proto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-dri3proto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-dropbear = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-dropbear = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-dtc = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-e2fsprogs = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-ed = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-eee-acpi-scripts = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-efilinux = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-eglinfo-fb = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-eglinfo-x11 = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-efilinux = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-elfutils = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-enchant = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-encodings = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-ethtool = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-eudev = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-expat = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-expat = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-expect = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-ffmpeg = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-file = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-findutils = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-fixesproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
@@ -174,8 +200,14 @@
 RECIPE_MAINTAINER_pn-formfactor = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-freetype = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-fstests = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-fts = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-gawk = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-gcc = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-gcc-cross = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-gcc-cross-canadian = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-gcc-cross-initial = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-gcc-crosssdk = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-gcc-crosssdk-initial = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-gcc-runtime = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-gcc-sanitizers = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-gcc-source = "Richard Purdie <richard.purdie@linuxfoundation.org>"
@@ -183,10 +215,12 @@
 RECIPE_MAINTAINER_pn-gconf = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gcr = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-gdb = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-gdb-cross = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-gdb-cross-canadian = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-gdbm = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-gdk-pixbuf = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-gettext = "Wenzong Fan <wenzong.fan@windriver.com>"
-RECIPE_MAINTAINER_pn-gettext-minimal-native = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER_pn-gettext = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-gettext-minimal-native = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-ghostscript = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-git = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-glew = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
@@ -194,21 +228,28 @@
 RECIPE_MAINTAINER_pn-glib-networking = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-glibc = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-glibc-initial = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-glibc-locale = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-glibc-mtrace = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-glibc-scripts = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-glproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gmp = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-gnome-common = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gnome-desktop-testing = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gnome-desktop3 = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-gnome-doc-utils = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-gnome-themes-standard = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gnu-config = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-gnu-efi = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-gnupg = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-gnutls = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-gobject-introspection = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-gperf = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-gpgme = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-gpgme = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER_pn-gptfdisk = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-grep = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-groff = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-grub = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-grub = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-grub-efi = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-gsettings-desktop-schemas = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gst-player = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gstreamer1.0 = "Maxin B. John <maxin.john@intel.com>"
@@ -222,7 +263,7 @@
 RECIPE_MAINTAINER_pn-gstreamer1.0-rtsp-server = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-gtk+ = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gtk+3 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-gtk-doc-stub = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-gtk-doc = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-gtk-engines = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gtk-icon-utils-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-gtk-sato-engine = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
@@ -237,13 +278,19 @@
 RECIPE_MAINTAINER_pn-hostap-conf = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-hostap-utils = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-hwlatdetect = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-i2c-tools = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-icecc-create-env-native = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-icon-naming-utils = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-icu = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-ifupdown = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-init-ifupdown = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-initramfs-boot = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-initramfs-framework = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-initramfs-live-boot = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-initramfs-live-install = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-initramfs-live-install-efi = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-install-efi-testfs = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-install-testfs = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-initscripts = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-inputproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-intltool = "Alexander Kanavin <alexander.kanavin@intel.com>"
@@ -254,8 +301,8 @@
 RECIPE_MAINTAINER_pn-iso-codes = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-iw = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-libjpeg-turbo = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-json-c = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-json-glib = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-json-c = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-json-glib = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-kbd = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-kbproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-kconfig-frontends = "Alexander Kanavin <alexander.kanavin@intel.com>"
@@ -265,10 +312,11 @@
 RECIPE_MAINTAINER_pn-kexec-tools = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-keymaps = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-kmod = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-kmod-native = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-l3afpad = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-lame = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-latencytop = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-ldconfig-native = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-leafpad = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-less = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-liba52 = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-libacpi = "Maxin B. John <maxin.john@intel.com>"
@@ -280,34 +328,38 @@
 RECIPE_MAINTAINER_pn-libav = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libbsd = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-libcap = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-libcap-ng = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-libcgroup = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libcheck = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-libclass-isa-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libclass-isa-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libcroco = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libdaemon = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libdmx = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libdrm = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-libdumpvalue-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libenv-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libdumpvalue-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libenv-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libepoxy = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-liberation-fonts = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-liberror-perl = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-libevdev = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libevent = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libexif = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libfakekey = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libffi = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libfile-checktree-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libfile-checktree-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libfm = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libfm-extra = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libfontenc = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libgcc = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-libgcc-initial = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-libgcrypt = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-libgfortran = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-libglade = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libglu = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-libgpg-error = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-libi18n-collate-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libgpg-error = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER_pn-libgudev = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-libi18n-collate-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libical = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-libice = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libiconv = "Alexander Kanavin <alexander.kanavin@intel.com>"
@@ -316,7 +368,6 @@
 RECIPE_MAINTAINER_pn-libinput = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libjson = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libksba = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libmad = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-libmatchbox = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libmpc = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>"
@@ -335,33 +386,37 @@
 RECIPE_MAINTAINER_pn-libpfm4 = "Matthew McClintock <msm@freescale.com>"
 RECIPE_MAINTAINER_pn-libpng = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-libpng12 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libpod-plainer-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libpod-plainer-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libproxy = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-libpthread-stubs = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-librsvg = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libsamplerate0 = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-libsdl = "Kai Kang <kai.kang@windriver.com>"
-RECIPE_MAINTAINER_pn-libsdl2 = "Kai Kang <kai.kang@windriver.com>"
+RECIPE_MAINTAINER_pn-libsdl = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-libsdl2 = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-libsecret = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libsm = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libsndfile1 = "Tanu Kaskinen <tanuk@iki.fi>"
+RECIPE_MAINTAINER_pn-libsolv = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-libsoup-2.4 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libtasn1 = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-libtheora = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libtimedate-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libtimedate-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libtirpc = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-libtool = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-libtool-cross = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-libtool-native = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-libunistring = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libunwind = "Bruce Ashfield <bruce.ashfield@windriver.com>"
 RECIPE_MAINTAINER_pn-liburcu = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-liburi-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libusb-compat = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libusb1 = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-liburi-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libusb-compat = "Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libusb1 = "Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libuser = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-libvorbis = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-libwebp = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libwnck3 = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-libx11 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-libx11-diet = "Kai Kang <kai.kang@windriver.com>"
+RECIPE_MAINTAINER_pn-libx11-diet = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libxau = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libxcalibrate = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libxcb = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
@@ -377,11 +432,12 @@
 RECIPE_MAINTAINER_pn-libxinerama = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libxkbcommon = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libxkbfile = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-libxml-namespacesupport-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-parser-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-sax-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-simple-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libxml-namespacesupport-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libxml-parser-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libxml-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libxml-sax-base-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libxml-sax-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-libxml-simple-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-libxml2 = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-libxmu = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-libxpm = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
@@ -408,14 +464,14 @@
 RECIPE_MAINTAINER_pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@windriver.com>"
 RECIPE_MAINTAINER_pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@windriver.com>"
 RECIPE_MAINTAINER_pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@windriver.com>"
-RECIPE_MAINTAINER_pn-linuxdoc-tools-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-linuxdoc-tools-native = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-logrotate = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-lrzsz = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-lsb = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-lsbinitscripts = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-lsbtest = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER_pn-lsbtest = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-lsof = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-ltp = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-ltp = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-lttng-modules = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-lttng-tools = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-lttng-ust = "Richard Purdie <richard.purdie@linuxfoundation.org>"
@@ -423,7 +479,8 @@
 RECIPE_MAINTAINER_pn-lzo = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-lzop = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-m4 = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-mailx = "Kai Kang <kai.kang@windriver.com>"
+RECIPE_MAINTAINER_pn-m4-native = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-mailx = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-make = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-makedepend = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-makedevs = "Chen Qi <Qi.Chen@windriver.com>"
@@ -445,9 +502,13 @@
 RECIPE_MAINTAINER_pn-mesa = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-mesa-demos = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-mesa-gl = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-meta-environment = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-meta-environment-extsdk = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-meta-extsdk-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-meta-ide-support = "Cristian Iorga <cristian.iorga@intel.com>"
 RECIPE_MAINTAINER_pn-meta-toolchain = "Cristian Iorga <cristian.iorga@intel.com>"
-RECIPE_MAINTAINER_pn-mingetty = "Kai Kang <kai.kang@windriver.com>"
+RECIPE_MAINTAINER_pn-meta-world-pkgdata = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-mingetty = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-mini-x-session = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-minicom = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-mkelfimage = "Alexander Kanavin <alexander.kanavin@intel.com>"
@@ -455,17 +516,24 @@
 RECIPE_MAINTAINER_pn-mkfontscale = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-mklibs-native = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-mktemp = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-mmc-utils = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-mobile-broadband-provider-info = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-modutils-initscripts = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-mpeg2dec = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-mpfr = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-mpg123 = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-msmtp = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-mtd-utils = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-mtdev = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-mtools = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-musl = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-mx-1.0 = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-nativesdk-buildtools-perl-dummy = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-nativesdk-qemu-helper = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-nativesdk-postinst-intercept = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-ncurses = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-neard = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-neon = "Maxin B. John <maxin.john@intel.com>"
@@ -473,24 +541,24 @@
 RECIPE_MAINTAINER_pn-netbase = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-nettle = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-nfs-export-root = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-nfs-utils = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-nfs-utils = "Mariano Lopez <mariano.lopez@linux.intel.com>"
 RECIPE_MAINTAINER_pn-npth = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-nspr = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-nss = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-nss-myhostname = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-ofono = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-oh-puzzles = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-openjade-native = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-opensp = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-openssh = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-openjade-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-opensp = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-openssh = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-openssl = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-opkg = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
 RECIPE_MAINTAINER_pn-opkg-arch-config = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
 RECIPE_MAINTAINER_pn-opkg-keyrings = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
 RECIPE_MAINTAINER_pn-opkg-utils = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
 RECIPE_MAINTAINER_pn-oprofile = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-oprofileui = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-oprofileui-server = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-orc = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-os-release = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-ossp-uuid = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-p11-kit = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-package-index = "Ross Burton <ross.burton@intel.com>"
@@ -500,6 +568,7 @@
 RECIPE_MAINTAINER_pn-packagegroup-core-clutter = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-core-device-devel = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-core-directfb = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-packagegroup-core-eclipse-debug = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-core-full-cmdline = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-core-lsb = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-core-nfs = "Ross Burton <ross.burton@intel.com>"
@@ -514,27 +583,32 @@
 RECIPE_MAINTAINER_pn-packagegroup-core-x11-base = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-core-x11-sato = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-core-x11-xserver = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-packagegroup-cross-canadian = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-packagegroup-self-hosted = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-pango = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-parted = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-patch = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER_pn-patchelf = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-pax = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-pax-utils = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER_pn-pbzip2 = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-pciutils = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-pcmanfm = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-pcmanfm = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
 RECIPE_MAINTAINER_pn-pcmciautils = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-perf = "Bruce Ashfield <bruce.ashfield@windriver.com>"
-RECIPE_MAINTAINER_pn-perl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-perl-native = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-piglit = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-perl = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-perl-native = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-piglit = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>"
 RECIPE_MAINTAINER_pn-pixman = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-pixz = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-pkgconfig = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-pm-utils = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-pointercal = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-pointercal-xinput = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-pong-clock = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-popt = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-popt = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-portmap = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-powertop = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-ppp = "Hongxu Jia <hongxu.jia@windriver.com>"
@@ -544,42 +618,55 @@
 RECIPE_MAINTAINER_pn-procps = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-pseudo = "Mark Hatle <mark.hatle@windriver.com>"
 RECIPE_MAINTAINER_pn-psmisc = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-psplash = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-psplash = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-ptest-runner = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-pulseaudio = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-pulseaudio-client-conf-sato = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-puzzles = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-python = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
 RECIPE_MAINTAINER_pn-python-native = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-async = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-dbus = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-distribute = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-docutils = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-git = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-gitdb = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-imaging = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-mako = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-async = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-distribute = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-git = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-gitdb = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-imaging = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-mako = "Jose Lamego <jose.a.lamego@linux.intel.com>"
 RECIPE_MAINTAINER_pn-python-native = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-nose = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-numpy = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-pexpect = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-pycairo = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-pycurl = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-pygobject = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-pygtk = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-pyrex = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-scons = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-scons-native = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-setuptools = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-smartpm = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python-smmap = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-nose = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-numpy = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-pexpect = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-ptyprocess = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-pycairo = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-pycurl = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-pygtk = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-pyrex = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-scons = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-scons-native = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-setuptools = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-six = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-smartpm = "Jose Lamego <jose.a.lamego@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python-smmap = "Jose Lamego <jose.a.lamego@linux.intel.com>"
 RECIPE_MAINTAINER_pn-python3 = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python3-distribute = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-async = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-dbus = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-distribute = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-docutils = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-git = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-gitdb = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-mako = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
 RECIPE_MAINTAINER_pn-python3-native = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python3-pip = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python3-setuptools = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-nose = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-numpy = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-pip = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-pygobject = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-setuptools = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-six = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
+RECIPE_MAINTAINER_pn-python3-smmap = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
 RECIPE_MAINTAINER_pn-qemu = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-qemu-helper-native = "Aníbal Limón <anibal.limon@linux.intel.com>"
+RECIPE_MAINTAINER_pn-qemuwrapper-cross = "Aníbal Limón <anibal.limon@linux.intel.com>"
 RECIPE_MAINTAINER_pn-quilt = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-quilt-native = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-quota = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-randrproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-readline = "Hongxu Jia <hongxu.jia@windriver.com>"
@@ -590,11 +677,12 @@
 RECIPE_MAINTAINER_pn-resourceproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-rgb = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-rpcbind = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER_pn-rng-tools = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-rpm = "Mark Hatle <mark.hatle@windriver.com>"
 RECIPE_MAINTAINER_pn-rpmresolve = "Mark Hatle <mark.hatle@windriver.com>"
 RECIPE_MAINTAINER_pn-rsync = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-rt-tests = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-ruby = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-ruby = "Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>"
 RECIPE_MAINTAINER_pn-run-postinsts = "Cristian Iorga <cristian.iorga@intel.com>"
 RECIPE_MAINTAINER_pn-rxvt-unicode = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-sato-icon-theme = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
@@ -603,16 +691,20 @@
 RECIPE_MAINTAINER_pn-screen = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-scrnsaverproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-sed = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-serf = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-setserial = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-settings-daemon = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-sgml-common = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-sgmlspl = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-sgml-common = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-sgml-common-native = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-sgmlspl = "Dengke Du <dengke.du@windriver.com>"
+RECIPE_MAINTAINER_pn-sgmlspl-native = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-shadow = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-shadow-securetty = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-shadow-sysroot = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-shared-mime-info = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-shutdown-desktop = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-slang = "Kai Kang <kai.kang@windriver.com>"
+RECIPE_MAINTAINER_pn-signing-keys = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-slang = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-socat = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER_pn-speex = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-speexdsp = "Tanu Kaskinen <tanuk@iki.fi>"
@@ -621,16 +713,19 @@
 RECIPE_MAINTAINER_pn-startup-notification = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-stat = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-strace = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-stress = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-subversion = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-sudo = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-swabber-native = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-swig = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-swig = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
 RECIPE_MAINTAINER_pn-sysfsutils = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-sysklogd = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-syslinux = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-sysprof = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-sysstat = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-systemd = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-systemd-boot = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-systemd-bootchart = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-systemd-compat-units = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-systemd-serialgetty = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-systemd-systemctl-native = "Chen Qi <Qi.Chen@windriver.com>"
@@ -643,15 +738,17 @@
 RECIPE_MAINTAINER_pn-tcf-agent = "Randy Witt <randy.e.witt@linux.intel.com>"
 RECIPE_MAINTAINER_pn-tcl = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-tcp-wrappers = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-testexport-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER_pn-texi2html = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-texinfo = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-texinfo = "Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-texinfo-dummy-native = "Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>"
 RECIPE_MAINTAINER_pn-tiff = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-time = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-tiny-init = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-trace-cmd = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-tremor = "Tanu Kaskinen <tanuk@iki.fi>"
 RECIPE_MAINTAINER_pn-tslib = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
-RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Mariano Lopez <mariano.lopez@linux.intel.com>"
 RECIPE_MAINTAINER_pn-tzcode-native = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-tzdata = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER_pn-u-boot = "Denys Dmytriyenko <denis@denix.org>"
@@ -659,28 +756,32 @@
 RECIPE_MAINTAINER_pn-u-boot-mkimage = "Denys Dmytriyenko <denis@denix.org>"
 RECIPE_MAINTAINER_pn-ubootchart = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-uclibc = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER_pn-uclibc-initial = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER_pn-udev-extraconf = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-unfs3 = "Randy Witt <randy.e.witt@linux.intel.com>"
 RECIPE_MAINTAINER_pn-unifdef = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-unzip = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-uninative-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER_pn-unzip = "Edwin Plauchu <edwin.plauchu.camacho@linux.intel.com>"
 RECIPE_MAINTAINER_pn-update-rc.d = "Ross Burton <ross.burton@intel.com>"
 RECIPE_MAINTAINER_pn-usbinit = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-usbutils = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-util-linux = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-util-macros = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-v86d = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-vala = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-valgrind = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-videoproto = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
 RECIPE_MAINTAINER_pn-vte = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-waffle = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-watchdog = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-wayland = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-wayland-protocols = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-webkitgtk = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-weston = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-weston-init = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-wget = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-which = "Alejandro Hernandez <alejandro.hernandez@linux.intel.com>"
+RECIPE_MAINTAINER_pn-which = "Mariano Lopez <mariano.lopez@linux.intel.com>"
 RECIPE_MAINTAINER_pn-wireless-tools = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-wpa-supplicant = "Maxin B. John <maxin.john@intel.com>"
 RECIPE_MAINTAINER_pn-x11-common = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
@@ -702,6 +803,7 @@
 RECIPE_MAINTAINER_pn-xeyes = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-xf86-input-evdev = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-xf86-input-keyboard = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-xf86-input-libinput = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-xf86-input-mouse = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-xf86-input-synaptics = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-xf86-input-vmmouse = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
@@ -742,8 +844,7 @@
 RECIPE_MAINTAINER_pn-xvinfo = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-xwininfo = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
 RECIPE_MAINTAINER_pn-xz = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-yasm = "Jussi Kukkonen <jussi.kukkonen@intel.com>"
+RECIPE_MAINTAINER_pn-yasm = "Dengke Du <dengke.du@windriver.com>"
 RECIPE_MAINTAINER_pn-zip = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER_pn-zisofs-tools-native = "Alexander Kanavin <alexander.kanavin@intel.com>"
 RECIPE_MAINTAINER_pn-zlib = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-stress = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-mmc-utils = "Maxin B. John <maxin.john@intel.com>"
diff --git a/import-layers/yocto-poky/meta-poky/conf/distro/include/poky-floating-revisions.inc b/import-layers/yocto-poky/meta-poky/conf/distro/include/poky-floating-revisions.inc
index e1abd3a..a3da043 100644
--- a/import-layers/yocto-poky/meta-poky/conf/distro/include/poky-floating-revisions.inc
+++ b/import-layers/yocto-poky/meta-poky/conf/distro/include/poky-floating-revisions.inc
@@ -19,7 +19,6 @@
 SRCREV_pn-settings-daemon ?= "${AUTOREV}"
 SRCREV_pn-screenshot ?= "${AUTOREV}"
 SRCREV_pn-libfakekey ?= "${AUTOREV}"
-SRCREV_pn-oprofileui ?= "${AUTOREV}"
 SRCREV_pn-psplash ?= "${AUTOREV}"
 SRCREV_pn-gtk-sato-engine ?= "${AUTOREV}"
 SRCREV_pn-matchbox-theme-sato ?= "${AUTOREV}"
diff --git a/import-layers/yocto-poky/meta-poky/conf/distro/poky-tiny.conf b/import-layers/yocto-poky/meta-poky/conf/distro/poky-tiny.conf
index ac05420..08bd497 100644
--- a/import-layers/yocto-poky/meta-poky/conf/distro/poky-tiny.conf
+++ b/import-layers/yocto-poky/meta-poky/conf/distro/poky-tiny.conf
@@ -80,11 +80,13 @@
 DISTRO_FEATURES_class-native = "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} ${POKY_DEFAULT_DISTRO_FEATURES}"
 DISTRO_FEATURES_class-nativesdk = "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} ${POKY_DEFAULT_DISTRO_FEATURES}"
 
-# Use tmpdevfs and the busybox runtime services
-VIRTUAL-RUNTIME_dev_manager = ""
-VIRTUAL-RUNTIME_login_manager = ""
-VIRTUAL-RUNTIME_init_manager = "tiny-init"
-VIRTUAL-RUNTIME_keymaps = ""
+# enable mdev/busybox for init
+VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
+VIRTUAL-RUNTIME_login_manager = "busybox"
+VIRTUAL-RUNTIME_init_manager = "busybox"
+VIRTUAL-RUNTIME_initscripts = "initscripts"
+VIRTUAL-RUNTIME_keymaps = "keymaps"
+DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
 
 # FIXME: Consider adding "modules" to MACHINE_FEATURES and using that in
 # packagegroup-core-base to select modutils-initscripts or not.  Similar with "net" and
@@ -96,6 +98,8 @@
 # character support.
 IMAGE_FSTYPES = "cpio.gz"
 
+QB_DEFAULT_FSTYPE = "${IMAGE_FSTYPES}"
+
 # Drop v86d from qemu dependency list (we support serial)
 # Drop grub from meta-intel BSPs
 # FIXME: A different mechanism is needed here. We could define -tiny
diff --git a/import-layers/yocto-poky/meta-poky/conf/distro/poky.conf b/import-layers/yocto-poky/meta-poky/conf/distro/poky.conf
index 722bbf1..ddf030a 100644
--- a/import-layers/yocto-poky/meta-poky/conf/distro/poky.conf
+++ b/import-layers/yocto-poky/meta-poky/conf/distro/poky.conf
@@ -1,7 +1,7 @@
 DISTRO = "poky"
 DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
-DISTRO_VERSION = "2.1"
-DISTRO_CODENAME = "krogoth"
+DISTRO_VERSION = "2.2"
+DISTRO_CODENAME = "morty"
 SDK_VENDOR = "-pokysdk"
 SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
 
@@ -21,13 +21,13 @@
 
 DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} ${POKY_DEFAULT_DISTRO_FEATURES}"
 
-PREFERRED_VERSION_linux-yocto ?= "4.4%"
-PREFERRED_VERSION_linux-yocto_qemux86 ?= "4.4%"
-PREFERRED_VERSION_linux-yocto_qemux86-64 ?= "4.4%"
-PREFERRED_VERSION_linux-yocto_qemuarm ?= "4.4%"
-PREFERRED_VERSION_linux-yocto_qemumips ?= "4.4%"
-PREFERRED_VERSION_linux-yocto_qemumips64 ?= "4.4%"
-PREFERRED_VERSION_linux-yocto_qemuppc ?= "4.4%"
+PREFERRED_VERSION_linux-yocto ?= "4.8%"
+PREFERRED_VERSION_linux-yocto_qemux86 ?= "4.8%"
+PREFERRED_VERSION_linux-yocto_qemux86-64 ?= "4.8%"
+PREFERRED_VERSION_linux-yocto_qemuarm ?= "4.8%"
+PREFERRED_VERSION_linux-yocto_qemumips ?= "4.8%"
+PREFERRED_VERSION_linux-yocto_qemumips64 ?= "4.8%"
+PREFERRED_VERSION_linux-yocto_qemuppc ?= "4.8%"
 
 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
 SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}"
@@ -70,21 +70,22 @@
 CONNECTIVITY_CHECK_URIS ?= "https://www.example.com/"
 
 SANITY_TESTED_DISTROS ?= " \
-            poky-1.7 \n \
             poky-1.8 \n \
             poky-2.0 \n \
+            poky-2.1 \n \
+            poky-2.2 \n \
             Ubuntu-14.04 \n \
             Ubuntu-14.10 \n \
             Ubuntu-15.04 \n \
             Ubuntu-15.10 \n \
-            Fedora-21 \n \
+            Ubuntu-16.04 \n \
             Fedora-22 \n \
             Fedora-23 \n \
-            CentOS-6.* \n \
-            CentOS-7.* \n \
-            Debian-7.* \n \
+            Fedora-24 \n \
+            CentOSLinux-7.* \n \
             Debian-8.* \n \
-            openSUSE-project-13.2 \n \
+            openSUSE-13.2 \n \
+            SUSELINUX-42.1 \n \
             "
 #
 # OELAYOUT_ABI allows us to notify users when the format of TMPDIR changes in 
diff --git a/import-layers/yocto-poky/meta-poky/conf/local.conf.sample b/import-layers/yocto-poky/meta-poky/conf/local.conf.sample
index a7b2d80..365b6eb 100644
--- a/import-layers/yocto-poky/meta-poky/conf/local.conf.sample
+++ b/import-layers/yocto-poky/meta-poky/conf/local.conf.sample
@@ -152,8 +152,7 @@
 #   - 'image-swab' to perform host system intrusion detection
 # NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
 # NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
-# image-prelink disabled for now due to issues with IFUNC symbol relocation
-USER_CLASSES ?= "buildstats image-mklibs"
+USER_CLASSES ?= "buildstats image-mklibs image-prelink"
 
 #
 # Runtime testing of images
diff --git a/import-layers/yocto-poky/meta-poky/conf/local.conf.sample.extended b/import-layers/yocto-poky/meta-poky/conf/local.conf.sample.extended
index aa7b42f..d407ffb 100644
--- a/import-layers/yocto-poky/meta-poky/conf/local.conf.sample.extended
+++ b/import-layers/yocto-poky/meta-poky/conf/local.conf.sample.extended
@@ -265,9 +265,6 @@
 #COPYLEFT_RECIPE_TYPES = 'target'
 #
 
-# Remove the old image before the new one generated to save disk space
-#RM_OLD_IMAGE = "1"
-
 #
 # GCC/LD FLAGS to enable more secure code generation
 #
@@ -371,16 +368,6 @@
 #IPK_HIERARCHICAL_FEED = "1"
 #
 
-# Using RPM4
-#
-# Currently the rootfs_rpm code has a hard depends on rpmresolve:do_populate_sysroot,
-# when using rpm4 the rpmresolve code will not compile due to a missing header file.
-# That dependency needs to be removed when using RPM4, also the PREFERRED_VERSION needs
-# to be set. This example shows how to enable rpm4
-# PREFERRED_VERSION_rpm = "4.11.2"
-# PREFERRED_VERSION_rpm-native = "4.11.2"
-# RPMROOTFSDEPENDS_remove = "rpmresolve-native:do_populate_sysroot"
-
 #
 # Use busybox/mdev for system initialization
 #
diff --git a/import-layers/yocto-poky/meta-poky/conf/toasterconf.json b/import-layers/yocto-poky/meta-poky/conf/toasterconf.json
index 606aac7..93fb929 100644
--- a/import-layers/yocto-poky/meta-poky/conf/toasterconf.json
+++ b/import-layers/yocto-poky/meta-poky/conf/toasterconf.json
@@ -40,13 +40,13 @@
             "name": "OpenEmbedded",
             "sourcetype": "layerindex",
             "apiurl": "http://layers.openembedded.org/layerindex/api/",
-            "branches": ["master", "jethro", "krogoth"]
+            "branches": ["master"]
         },
         {
             "name": "Imported layers",
             "sourcetype": "imported",
             "apiurl": "",
-            "branches": ["master", "jethro", "krogoth", "HEAD"]
+            "branches": ["master", "HEAD"]
 
         }
     ],
@@ -58,18 +58,6 @@
             "dirpath": "bitbake"
         },
         {
-            "name": "jethro",
-            "giturl": "remote:origin",
-            "branch": "jethro",
-            "dirpath": "bitbake"
-        },
-        {
-            "name": "krogoth",
-            "giturl": "remote:origin",
-            "branch": "krogoth",
-            "dirpath": "bitbake"
-        },
-        {
             "name": "HEAD",
             "giturl": "remote:origin",
             "branch": "HEAD",
@@ -90,24 +78,6 @@
             "helptext": "Toaster will run your builds using the tip of the <a href=\"http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/\">Yocto Project master branch</a>, where active development takes place. This is not a stable branch, so your builds might not work as expected."
         },
         {
-            "name": "jethro",
-            "description": "Yocto Project 2.0 Jethro",
-            "bitbake": "jethro",
-            "branch": "jethro",
-            "defaultlayers": [ "openembedded-core", "meta-yocto", "meta-yocto-bsp"],
-            "layersourcepriority": { "Imported layers": 99, "Local Yocto Project" : 10, "OpenEmbedded" :  0 },
-            "helptext": "Toaster will run your builds with the tip of the <a href=\"http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=jethro\">Yocto Project 2.0 \"Jethro\"</a> branch."
-        },
-        {
-            "name": "krogoth",
-            "description": "Yocto Project 2.1 Krogoth",
-            "bitbake": "krogoth",
-            "branch": "krogoth",
-            "defaultlayers": [ "openembedded-core", "meta-poky", "meta-yocto-bsp"],
-            "layersourcepriority": { "Imported layers": 99, "Local Yocto Project" : 10, "OpenEmbedded" :  0 },
-            "helptext": "Toaster will run your builds with the tip of the <a href=\"http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=krogoth\">Yocto Project 2.1 \"Krogoth\"</a> branch."
-        },
-        {
             "name": "local",
             "description": "Local Yocto Project",
             "bitbake": "HEAD",
diff --git a/import-layers/yocto-poky/meta-selftest/lib/devtool/test.py b/import-layers/yocto-poky/meta-selftest/lib/devtool/test.py
index b7474b5..31190f5 100644
--- a/import-layers/yocto-poky/meta-selftest/lib/devtool/test.py
+++ b/import-layers/yocto-poky/meta-selftest/lib/devtool/test.py
@@ -2,7 +2,7 @@
 
 def selftest_reverse(args, config, basepath, workspace):
     """Reverse the value passed to verify the plugin is executing."""
-    print args.value[::-1]
+    print(args.value[::-1])
 
 def register_commands(subparsers, context):
     parser_build = subparsers.add_parser('selftest-reverse', help='Reverse value (for selftest)',
diff --git a/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.json b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.json
new file mode 100644
index 0000000..e5ae46e
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.json
@@ -0,0 +1,6 @@
+{
+    "test_install_package": {
+        "pkg": "socat",
+        "rm": true
+    }
+}
diff --git a/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.py b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.py
new file mode 100644
index 0000000..a7e58ab
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.py
@@ -0,0 +1,55 @@
+import os
+
+from oeqa.oetest import oeRuntimeTest, skipModule
+from oeqa.utils.commands import runCmd
+from oeqa.utils.decorators import *
+
+class Selftest(oeRuntimeTest):
+
+    @skipUnlessPassed("test_ssh")
+    @tag("selftest_package_install")
+    def test_install_package(self):
+        """
+        Summary: Check basic package installation functionality.
+        Expected: 1. Before the test socat must be installed using scp.
+                  2. After the test socat must be unistalled using ssh.
+                     This can't be checked in this test.
+        Product: oe-core
+        Author: Mariano Lopez <mariano.lopez@intel.com>
+        """
+
+        (status, output) = self.target.run("socat -V")
+        self.assertEqual(status, 0, msg="socat is not installed")
+
+    @skipUnlessPassed("test_install_package")
+    @tag("selftest_package_install")
+    def test_verify_unistall(self):
+        """
+        Summary: Check basic package installation functionality.
+        Expected: 1. test_install_package must unistall socat.
+                     This test is just to verify that.
+        Product: oe-core
+        Author: Mariano Lopez <mariano.lopez@intel.com>
+        """
+
+        (status, output) = self.target.run("socat -V")
+        self.assertNotEqual(status, 0, msg="socat is still installed")
+
+    @tag("selftest_sdk")
+    def test_sdk(self):
+
+        result = runCmd("env -0")
+        sdk_path = search_sdk_path(result.output)
+        self.assertTrue(sdk_path, msg="Can't find SDK path")
+
+        tar_cmd = os.path.join(sdk_path, "tar")
+        result = runCmd("%s --help" % tar_cmd)
+
+def search_sdk_path(env):
+    for line in env.split("\0"):
+        (key, _, value) = line.partition("=")
+        if key == "PATH":
+            for path in value.split(":"):
+                if "pokysdk" in path:
+                    return path
+    return ""
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb
index a294ba7..9e93b8e 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb
@@ -5,9 +5,10 @@
 IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP}"
 
 IMAGE_FSTYPES = "wic"
-RM_OLD_IMAGE = "1"
 
-DEPENDS = "syslinux syslinux-native parted-native dosfstools-native mtools-native gptfdisk-native"
+DEPENDS = "syslinux syslinux-native dosfstools-native mtools-native gptfdisk-native"
+
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 
 # core-image-minimal is referenced in .wks, so we need its rootfs
 # to be ready before our rootfs
diff --git a/import-layers/yocto-poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb b/import-layers/yocto-poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb
index c5cd7a9..6416618 100644
--- a/import-layers/yocto-poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb
+++ b/import-layers/yocto-poky/meta-skeleton/recipes-skeleton/service/service_0.1.bb
@@ -9,7 +9,7 @@
 	   "
 
 do_compile () {
-	${CC} ${WORKDIR}/skeleton_test.c -o ${WORKDIR}/skeleton-test
+	${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/skeleton_test.c -o ${WORKDIR}/skeleton-test
 }
 
 do_install () {
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/beaglebone.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/beaglebone.conf
index 179d135..c487bd8 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/beaglebone.conf
+++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/beaglebone.conf
@@ -6,7 +6,7 @@
 XSERVER ?= "xserver-xorg \
            xf86-input-evdev \
            xf86-input-mouse \
-           xf86-video-fbdev \
+           xf86-video-modesetting \
            xf86-input-keyboard"
 
 MACHINE_EXTRA_RRECOMMENDS = " kernel-modules kernel-devicetree"
@@ -16,13 +16,16 @@
 DEFAULTTUNE ?= "cortexa8hf-neon"
 include conf/machine/include/tune-cortexa8.inc
 
-IMAGE_FSTYPES += "tar.bz2 jffs2"
+IMAGE_FSTYPES += "tar.bz2 jffs2 wic"
 EXTRA_IMAGECMD_jffs2 = "-lnp "
+WKS_FILE = "sdimage-bootpart.wks"
+IMAGE_INSTALL_append = " kernel-devicetree kernel-image-zimage"
+do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
 
 SERIAL_CONSOLE = "115200 ttyO0"
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ?= "4.4%"
+PREFERRED_VERSION_linux-yocto ?= "4.8%"
 
 KERNEL_IMAGETYPE = "zImage"
 KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/edgerouter.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/edgerouter.conf
index 6343dfc..720a947 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/edgerouter.conf
+++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/edgerouter.conf
@@ -11,12 +11,16 @@
 KERNEL_IMAGE_STRIP_EXTRA_SECTIONS  = ".comment"
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ?= "4.4%"
+PREFERRED_VERSION_linux-yocto ?= "4.8%"
 
 SERIAL_CONSOLE = "115200 ttyS0"
 USE_VT ?= "0"
 
 MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
 
-IMAGE_FSTYPES ?= "jffs2 tar.bz2"
+IMAGE_FSTYPES ?= "jffs2 tar.bz2 wic"
 JFFS2_ERASEBLOCK = "0x10000"
+
+WKS_FILE ?= "sdimage-bootpart.wks"
+IMAGE_BOOT_FILES ?= "vmlinux;vmlinux.64"
+do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86-64.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86-64.conf
index f76e35a..d843fd2 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86-64.conf
+++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86-64.conf
@@ -6,3 +6,7 @@
 DEFAULTTUNE ?= "core2-64"
 require conf/machine/include/tune-core2.inc
 require conf/machine/include/genericx86-common.inc
+
+PREFERRED_VERSION_linux-yocto_genericx86-64 ?= "4.8%"
+
+SERIAL_CONSOLES_CHECK = "ttyS0"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86.conf
index 798b62e..04a7e0b 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86.conf
+++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86.conf
@@ -8,3 +8,5 @@
 require conf/machine/include/genericx86-common.inc
 
 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check"
+
+PREFERRED_VERSION_linux-yocto_genericx86 ?= "4.8%"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/include/genericx86-common.inc b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/include/genericx86-common.inc
index 16b689d..2e59a95 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/include/genericx86-common.inc
+++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/include/genericx86-common.inc
@@ -1,4 +1,5 @@
 include conf/machine/include/x86-base.inc
+require conf/machine/include/qemuboot-x86.inc
 MACHINE_FEATURES += "wifi efi pcbios"
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
@@ -18,3 +19,8 @@
 GLIBC_ADDONS = "nptl"
 
 EXTRA_OECONF_append_pn-matchbox-panel-2 = " --with-battery=acpi"
+
+IMAGE_FSTYPES += "wic"
+WKS_FILE ?= "mkefidisk.wks"
+do_image_wic[depends] += "gptfdisk-native:do_populate_sysroot"
+do_image_wic[recrdeptask] += "do_bootimg"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf
index f3ad12d..a2ff07c 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf
+++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf
@@ -14,7 +14,7 @@
 
 MACHINE_FEATURES = "keyboard pci ext2 ext3 serial"
 
-PREFERRED_VERSION_linux-yocto ?= "4.4%"
+PREFERRED_VERSION_linux-yocto ?= "4.8%"
 PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
 
 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
@@ -22,7 +22,6 @@
             xf86-input-evdev \
             xf86-video-fbdev"
 
-PREFERRED_VERSION_u-boot ?= "v2013.07%"
 UBOOT_ENTRYPOINT = "0x00000000"
 
 KERNEL_DEVICETREE = "mpc8315erdb.dtb"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/systemd_boot.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/systemd_boot.py
new file mode 100644
index 0000000..f7f74db
--- /dev/null
+++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/systemd_boot.py
@@ -0,0 +1,56 @@
+from oeqa.selftest.base import oeSelfTest
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
+from oeqa.utils.decorators import testcase
+import re
+import os
+import sys
+import logging
+
+
+class Systemdboot(oeSelfTest):
+
+    def _common_setup(self):
+        """
+        Common setup for test cases: 1445, XXXX
+        """
+
+        # Set EFI_PROVIDER = "gummiboot" and MACHINE = "genericx86-64" in conf/local.conf
+        features = 'EFI_PROVIDER = "systemd-boot"\n'
+        features += 'MACHINE = "genericx86-64"'
+        self.append_config(features)
+
+    def _common_build(self):
+        """
+        Common build for test cases: 1445 , XXXX
+        """
+
+        # Build a genericx86-64/efi gummiboot image
+        bitbake('mtools-native core-image-minimal')
+
+
+    @testcase(1445)
+    def test_efi_systemdboot_images_can_be_built(self):
+        """
+        Summary:     Check if systemd-boot images can be built correctly
+        Expected:    1. File systemd-boot.efi should be available in $poky/build/tmp/deploy/images/genericx86-64
+                     2. 'systemd-boot" can be built correctly
+        Product:     oe-core
+        Author:      Jose Perez Carranza <jose.perez.carranza@intel.com>
+        AutomatedBy: Jose Perez Carranza <jose.perez.carranza@intel.com>
+        """
+
+        # We'd use DEPLOY_DIR_IMAGE here, except that we need its value for
+        # MACHINE="genericx86-64 which is probably not the one configured
+        systemdbootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64', 'systemd-bootx64.efi')
+
+        self._common_setup()
+
+        # Ensure we're actually testing that this gets built and not that
+        # it was around from an earlier build
+        bitbake('-c cleansstate systemd-boot')
+        runCmd('rm -f %s' % systemdbootfile)
+
+        self._common_build()
+
+        found = os.path.isfile(systemdbootfile)
+        self.assertTrue(found, 'Systemd-Boot file %s not found' % systemdbootfile)
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86-64/uClibc.machine b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86-64/uClibc.machine
deleted file mode 100644
index 305dc64..0000000
--- a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86-64/uClibc.machine
+++ /dev/null
@@ -1,69 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Fri Nov 23 15:49:33 2007
-#
-# TARGET_alpha is not set
-# TARGET_arm is not set
-# TARGET_bfin is not set
-# TARGET_cris is not set
-# TARGET_e1 is not set
-# TARGET_frv is not set
-# TARGET_h8300 is not set
-# TARGET_hppa is not set
-# TARGET_i386=y
-# TARGET_i960 is not set
-# TARGET_ia64 is not set
-# TARGET_m68k is not set
-# TARGET_microblaze is not set
-# TARGET_mips is not set
-# TARGET_nios is not set
-# TARGET_nios2 is not set
-# TARGET_powerpc is not set
-# TARGET_sh is not set
-# TARGET_sh64 is not set
-# TARGET_sparc is not set
-# TARGET_v850 is not set
-# TARGET_vax is not set
-TARGET_x86_64=y
-
-#
-# Target Architecture Features and Options
-#
-TARGET_ARCH="x86_64"
-FORCE_OPTIONS_FOR_ARCH=y
-# CONFIG_GENERIC_386 is not set
-# CONFIG_386 is not set
-# CONFIG_486 is not set
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_PENTIUMII is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_ELAN is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_WINCHIPC6 is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_CYRIXIII is not set
-# CONFIG_NEHEMIAH is not set
-TARGET_SUBARCH=""
-
-#
-# Using ELF file format
-#
-ARCH_LITTLE_ENDIAN=y
-
-#
-# Using Little Endian
-#
-ARCH_HAS_MMU=y
-ARCH_USE_MMU=y
-UCLIBC_HAS_FLOATS=y
-UCLIBC_HAS_FPU=y
-DO_C99_MATH=y
-KERNEL_HEADERS="/usr/include"
-HAVE_DOT_CONFIG=y
-
-UCLIBC_HAS_FENV=y
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86/uClibc.machine b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86/uClibc.machine
deleted file mode 100644
index 5df15f9..0000000
--- a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86/uClibc.machine
+++ /dev/null
@@ -1,69 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Fri Nov 23 15:49:33 2007
-#
-# TARGET_alpha is not set
-# TARGET_arm is not set
-# TARGET_bfin is not set
-# TARGET_cris is not set
-# TARGET_e1 is not set
-# TARGET_frv is not set
-# TARGET_h8300 is not set
-# TARGET_hppa is not set
-TARGET_i386=y
-# TARGET_i960 is not set
-# TARGET_ia64 is not set
-# TARGET_m68k is not set
-# TARGET_microblaze is not set
-# TARGET_mips is not set
-# TARGET_nios is not set
-# TARGET_nios2 is not set
-# TARGET_powerpc is not set
-# TARGET_sh is not set
-# TARGET_sh64 is not set
-# TARGET_sparc is not set
-# TARGET_v850 is not set
-# TARGET_vax is not set
-# TARGET_x86_64 is not set
-
-#
-# Target Architecture Features and Options
-#
-TARGET_ARCH="i386"
-FORCE_OPTIONS_FOR_ARCH=y
-CONFIG_GENERIC_386=y
-# CONFIG_386 is not set
-# CONFIG_486 is not set
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_PENTIUMII is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_ELAN is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_WINCHIPC6 is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_CYRIXIII is not set
-# CONFIG_NEHEMIAH is not set
-TARGET_SUBARCH=""
-
-#
-# Using ELF file format
-#
-ARCH_LITTLE_ENDIAN=y
-
-#
-# Using Little Endian
-#
-ARCH_HAS_MMU=y
-ARCH_USE_MMU=y
-UCLIBC_HAS_FLOATS=y
-UCLIBC_HAS_FPU=y
-DO_C99_MATH=y
-KERNEL_HEADERS="/usr/include"
-HAVE_DOT_CONFIG=y
-
-UCLIBC_HAS_FENV=y
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc_git.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc_git.bbappend
deleted file mode 100644
index 72d991c..0000000
--- a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc_git.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.1.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.1.bbappend
index b20a18b..74b9c7c 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.1.bbappend
+++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.1.bbappend
@@ -7,11 +7,11 @@
 KMACHINE_genericx86 ?= "common-pc"
 KMACHINE_genericx86-64 ?= "common-pc-64"
 
-SRCREV_machine_genericx86    ?= "304caa9480f19875e717faf3cad8cb7ecd758733"
-SRCREV_machine_genericx86-64 ?= "304caa9480f19875e717faf3cad8cb7ecd758733"
-SRCREV_machine_edgerouter ?= "79a31b9d23db126f8a6be3eb88fd683056a213f1"
-SRCREV_machine_beaglebone ?= "efb6ffb2ca96a364f916c9890ad023fc595e0e6e"
-SRCREV_machine_mpc8315e-rdb ?= "79a31b9d23db126f8a6be3eb88fd683056a213f1"
+SRCREV_machine_genericx86    ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_machine_genericx86-64 ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_machine_edgerouter ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_machine_beaglebone ?= "12532e753b50997690923e03edb3ac3368817a26"
+SRCREV_machine_mpc8315e-rdb ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
 
 COMPATIBLE_MACHINE_genericx86 = "genericx86"
 COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
@@ -19,5 +19,8 @@
 COMPATIBLE_MACHINE_beaglebone = "beaglebone"
 COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
 
-LINUX_VERSION_genericx86 = "4.1.18"
-LINUX_VERSION_genericx86-64 = "4.1.18"
+LINUX_VERSION_genericx86 = "4.1.33"
+LINUX_VERSION_genericx86-64 = "4.1.33"
+LINUX_VERSION_edgerouter = "4.1.33"
+LINUX_VERSION_beaglebone = "4.1.33"
+LINUX_VERSION_mpc8315e-rdb = "4.1.33"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend
index e31b0c8..3f0c4da 100644
--- a/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend
+++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend
@@ -7,11 +7,11 @@
 KBRANCH_beaglebone = "standard/beaglebone"
 KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb"
 
-SRCREV_machine_genericx86    ?= "3d2455f9da30f923c6bd69014fad4cc4ea738be6"
-SRCREV_machine_genericx86-64 ?= "3d2455f9da30f923c6bd69014fad4cc4ea738be6"
-SRCREV_machine_edgerouter ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2"
-SRCREV_machine_beaglebone ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2"
-SRCREV_machine_mpc8315e-rdb ?= "df00877ef9387b38b9601c82db57de2a1b23ce53"
+SRCREV_machine_genericx86    ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_genericx86-64 ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_edgerouter ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_beaglebone ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_mpc8315e-rdb ?= "7fa42ad9a43ca4bb1e578e208ffeddae2d6150e2"
 
 COMPATIBLE_MACHINE_genericx86 = "genericx86"
 COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
@@ -19,5 +19,8 @@
 COMPATIBLE_MACHINE_beaglebone = "beaglebone"
 COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
 
-LINUX_VERSION_genericx86 = "4.4.3"
-LINUX_VERSION_genericx86-64 = "4.4.3"
+LINUX_VERSION_genericx86 = "4.4.26"
+LINUX_VERSION_genericx86-64 = "4.4.26"
+LINUX_VERSION_edgerouter = "4.4.26"
+LINUX_VERSION_beaglebone = "4.4.26"
+LINUX_VERSION_mpc8315e-rdb = "4.4.26"
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..14fa38b
--- /dev/null
+++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,26 @@
+KBRANCH_genericx86  = "standard/base"
+KBRANCH_genericx86-64  = "standard/base"
+
+KMACHINE_genericx86 ?= "common-pc"
+KMACHINE_genericx86-64 ?= "common-pc-64"
+KBRANCH_edgerouter = "standard/edgerouter"
+KBRANCH_beaglebone = "standard/beaglebone"
+KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb"
+
+SRCREV_machine_genericx86    ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_genericx86-64 ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_edgerouter ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_beaglebone ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_mpc8315e-rdb ?= "4be88b03f6648004e74b68044fa2b05e81cf9a1b"
+
+COMPATIBLE_MACHINE_genericx86 = "genericx86"
+COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
+COMPATIBLE_MACHINE_edgerouter = "edgerouter"
+COMPATIBLE_MACHINE_beaglebone = "beaglebone"
+COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
+
+LINUX_VERSION_genericx86 = "4.8.3"
+LINUX_VERSION_genericx86-64 = "4.8.3"
+LINUX_VERSION_edgerouter = "4.8.3"
+LINUX_VERSION_beaglebone = "4.8.3"
+LINUX_VERSION_mpc8315e-rdb = "4.8.3"
diff --git a/import-layers/yocto-poky/meta/classes/allarch.bbclass b/import-layers/yocto-poky/meta/classes/allarch.bbclass
index 208cde6..ddc2a85 100644
--- a/import-layers/yocto-poky/meta/classes/allarch.bbclass
+++ b/import-layers/yocto-poky/meta/classes/allarch.bbclass
@@ -17,6 +17,7 @@
 
         # Set these to a common set of values, we shouldn't be using them other that for WORKDIR directory
         # naming anyway
+        d.setVar("baselib", "lib")
         d.setVar("TARGET_ARCH", "allarch")
         d.setVar("TARGET_OS", "linux")
         d.setVar("TARGET_CC_ARCH", "none")
@@ -41,6 +42,10 @@
         d.setVar("EXCLUDE_FROM_SHLIBS", "1")
         d.setVar("INHIBIT_PACKAGE_DEBUG_SPLIT", "1")
         d.setVar("INHIBIT_PACKAGE_STRIP", "1")
+
+        # These multilib values shouldn't change allarch packages so exclude them
+        d.setVarFlag("emit_pkgdata", "vardepsexclude", "MULTILIB_VARIANTS")
+        d.setVarFlag("write_specfile", "vardepsexclude", "MULTILIBS")
     elif bb.data.inherits_class('packagegroup', d) and not bb.data.inherits_class('nativesdk', d):
         bb.error("Please ensure recipe %s sets PACKAGE_ARCH before inherit packagegroup" % d.getVar("FILE", True))
 }
diff --git a/import-layers/yocto-poky/meta/classes/archiver.bbclass b/import-layers/yocto-poky/meta/classes/archiver.bbclass
index 2f3b278..9239983 100644
--- a/import-layers/yocto-poky/meta/classes/archiver.bbclass
+++ b/import-layers/yocto-poky/meta/classes/archiver.bbclass
@@ -132,7 +132,26 @@
 
     ar_outdir = d.getVar('ARCHIVER_OUTDIR', True)
     bb.note('Archiving the original source...')
-    fetch = bb.fetch2.Fetch([], d)
+    urls = d.getVar("SRC_URI", True).split()
+    # destsuffix (git fetcher) and subdir (everything else) are allowed to be
+    # absolute paths (for example, destsuffix=${S}/foobar).
+    # That messes with unpacking inside our tmpdir below, because the fetchers
+    # will then unpack in that directory and completely ignore the tmpdir.
+    # That breaks parallel tasks relying on ${S}, like do_compile.
+    #
+    # To solve this, we remove these parameters from all URLs.
+    # We do this even for relative paths because it makes the content of the
+    # archives more useful (no extra paths that are only used during
+    # compilation).
+    for i, url in enumerate(urls):
+        decoded = bb.fetch2.decodeurl(url)
+        for param in ('destsuffix', 'subdir'):
+            if param in decoded[5]:
+                del decoded[5][param]
+        encoded = bb.fetch2.encodeurl(decoded)
+        urls[i] = encoded
+    fetch = bb.fetch2.Fetch(urls, d)
+    tarball_suffix = {}
     for url in fetch.urls:
         local = fetch.localpath(url).rstrip("/");
         if os.path.isfile(local):
@@ -140,7 +159,21 @@
         elif os.path.isdir(local):
             tmpdir = tempfile.mkdtemp(dir=d.getVar('ARCHIVER_WORKDIR', True))
             fetch.unpack(tmpdir, (url,))
-            create_tarball(d, tmpdir + '/.', '', ar_outdir)
+            # To handle recipes with more than one source, we add the "name"
+            # URL parameter as suffix. We treat it as an error when
+            # there's more than one URL without a name, or a name gets reused.
+            # This is an additional safety net, in practice the name has
+            # to be set when using the git fetcher, otherwise SRCREV cannot
+            # be set separately for each URL.
+            params = bb.fetch2.decodeurl(url)[5]
+            name = params.get('name', '')
+            if name in tarball_suffix:
+                if not name:
+                    bb.fatal("Cannot determine archive names for original source because 'name' URL parameter is unset in more than one URL. Add it to at least one of these: %s %s" % (tarball_suffix[name], url))
+                else:
+                    bb.fatal("Cannot determine archive names for original source because 'name=' URL parameter '%s' is used twice. Make it unique in: %s %s" % (tarball_suffix[name], url))
+            tarball_suffix[name] = url
+            create_tarball(d, tmpdir + '/.', name, ar_outdir)
 
     # Emit patch series files for 'original'
     bb.note('Writing patch series files...')
@@ -270,9 +303,10 @@
         return
     ar_outdir = d.getVar('ARCHIVER_OUTDIR', True)
     ar_workdir = d.getVar('ARCHIVER_WORKDIR', True)
+    pn = d.getVar('PN', True)
 
     # The kernel class functions require it to be on work-shared, so we dont change WORKDIR
-    if not bb.data.inherits_class('kernel-yocto', d):
+    if not (bb.data.inherits_class('kernel-yocto', d) or pn.startswith('gcc-source')):
         # Change the WORKDIR to make do_unpack do_patch run in another dir.
         d.setVar('WORKDIR', ar_workdir)
 
@@ -290,7 +324,7 @@
         oe.path.copytree(src, src_orig)
 
     # Make sure gcc and kernel sources are patched only once
-    if not ((d.getVar('SRC_URI', True) == "" or bb.data.inherits_class('kernel-yocto', d))):
+    if not (d.getVar('SRC_URI', True) == "" or (bb.data.inherits_class('kernel-yocto', d) or pn.startswith('gcc-source'))):
         bb.build.exec_func('do_patch', d)
 
     # Create the patches
diff --git a/import-layers/yocto-poky/meta/classes/autotools.bbclass b/import-layers/yocto-poky/meta/classes/autotools.bbclass
index 6649f5d..c43ea9a 100644
--- a/import-layers/yocto-poky/meta/classes/autotools.bbclass
+++ b/import-layers/yocto-poky/meta/classes/autotools.bbclass
@@ -19,15 +19,13 @@
 
     return deps + 'gnu-config-native '
 
-EXTRA_OEMAKE = ""
-
 DEPENDS_prepend = "${@autotools_dep_prepend(d)} "
 
 inherit siteinfo
 
 # Space separated list of shell scripts with variables defined to supply test
 # results for autoconf tests we cannot run at build time.
-export CONFIG_SITE = "${@siteinfo_get_files(d, False)}"
+export CONFIG_SITE = "${@siteinfo_get_files(d)}"
 
 acpaths = "default"
 EXTRA_AUTORECONF = "--exclude=autopoint"
@@ -77,6 +75,8 @@
 		  ${@append_libtool_sysroot(d)}"
 CONFIGUREOPT_DEPTRACK ?= "--disable-dependency-tracking"
 
+CACHED_CONFIGUREVARS ?= ""
+
 AUTOTOOLS_SCRIPT_PATH ?= "${S}"
 CONFIGURE_SCRIPT ?= "${AUTOTOOLS_SCRIPT_PATH}/configure"
 
@@ -85,7 +85,7 @@
 oe_runconf () {
 	# Use relative path to avoid buildpaths in files
 	cfgscript_name="`basename ${CONFIGURE_SCRIPT}`"
-	cfgscript=`python -c "import os; print os.path.relpath(os.path.dirname('${CONFIGURE_SCRIPT}'), '.')"`/$cfgscript_name
+	cfgscript=`python3 -c "import os; print(os.path.relpath(os.path.dirname('${CONFIGURE_SCRIPT}'), '.'))"`/$cfgscript_name
 	if [ -x "$cfgscript" ] ; then
 		bbnote "Running $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} $@"
 		if ! ${CACHED_CONFIGUREVARS} $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"; then
@@ -129,12 +129,16 @@
 
 EXTRACONFFUNCS ??= ""
 
+EXTRA_OECONF_append = " ${PACKAGECONFIG_CONFARGS}"
+
 do_configure[prefuncs] += "autotools_preconfigure autotools_copy_aclocals ${EXTRACONFFUNCS}"
 do_configure[postfuncs] += "autotools_postconfigure"
 
-ACLOCALDIR = "${B}/aclocal-copy"
+ACLOCALDIR = "${WORKDIR}/aclocal-copy"
 
 python autotools_copy_aclocals () {
+    import copy
+
     s = d.getVar("AUTOTOOLS_SCRIPT_PATH", True)
     if not os.path.exists(s + "/configure.in") and not os.path.exists(s + "/configure.ac"):
         if not d.getVar("AUTOTOOLS_COPYACLOCAL", False):
@@ -163,36 +167,63 @@
     if start is None:
         bb.fatal("Couldn't find ourself in BB_TASKDEPDATA?")
 
-    # We need to find configure tasks which are either from <target> -> <target>
-    # or <native> -> <native> but not <target> -> <native> unless they're direct
-    # dependencies. This mirrors what would get restored from sstate.
-    done = [start]
-    next = [start]
+    # We need to figure out which m4 files we need to expose to this do_configure task.
+    # This needs to match what would get restored from sstate, which is controlled 
+    # ultimately by calls from bitbake to setscene_depvalid().
+    # That function expects a setscene dependency tree. We build a dependency tree 
+    # condensed to do_populate_sysroot -> do_populate_sysroot dependencies, similar to 
+    # that used by setscene tasks. We can then call into setscene_depvalid() and decide
+    # which dependencies we can "see" and should expose the m4 files for.
+    setscenedeps = copy.deepcopy(taskdepdata)
+
+    start = set([start])
+
+    # Create collapsed do_populate_sysroot -> do_populate_sysroot tree
+    for dep in taskdepdata:
+        data = setscenedeps[dep]        
+        if data[1] != "do_populate_sysroot":
+            for dep2 in setscenedeps:
+                data2 = setscenedeps[dep2]
+                if dep in data2[3]:
+                    data2[3].update(setscenedeps[dep][3])
+                    data2[3].remove(dep)
+            if dep in start:
+                start.update(setscenedeps[dep][3])
+                start.remove(dep)
+            del setscenedeps[dep]
+
+    # Remove circular references
+    for dep in setscenedeps:
+        if dep in setscenedeps[dep][3]:
+            setscenedeps[dep][3].remove(dep)
+
+    # Direct dependencies should be present and can be depended upon
+    for dep in start:
+        configuredeps.append(setscenedeps[dep][0])
+
+    # Call into setscene_depvalid for each sub-dependency and only copy m4 files
+    # for ones that would be restored from sstate.
+    done = list(start)
+    next = list(start)
     while next:
         new = []
         for dep in next:
-            data = taskdepdata[dep]
+            data = setscenedeps[dep]
             for datadep in data[3]:
                 if datadep in done:
                     continue
-                if (not data[0].endswith("-native")) and taskdepdata[datadep][0].endswith("-native") and dep != start:
+                taskdeps = {}
+                taskdeps[dep] = setscenedeps[dep][:2]
+                taskdeps[datadep] = setscenedeps[datadep][:2]
+                retval = setscene_depvalid(datadep, taskdeps, [], d)
+                if retval:
+                    bb.note("Skipping setscene dependency %s for m4 macro copying" % datadep)
                     continue
                 done.append(datadep)
                 new.append(datadep)
-                if taskdepdata[datadep][1] == "do_configure":
-                    configuredeps.append(taskdepdata[datadep][0])
+                configuredeps.append(setscenedeps[datadep][0])
         next = new
 
-    #configuredeps2 = []
-    #for dep in taskdepdata:
-    #    data = taskdepdata[dep]
-    #    if data[1] == "do_configure" and data[0] != pn:
-    #        configuredeps2.append(data[0])
-    #configuredeps.sort()
-    #configuredeps2.sort()
-    #bb.warn(str(configuredeps))
-    #bb.warn(str(configuredeps2))
-
     cp = []
     if nodeps:
         bb.warn("autotools: Unable to find task dependencies, -b being used? Pulling in all m4 files")
@@ -222,11 +253,14 @@
         t = os.path.join(aclocaldir, os.path.basename(c))
         if not os.path.exists(t):
             os.symlink(c, t)
-            
-    d.setVar("CONFIG_SITE", siteinfo_get_files(d, False))
+
+    # Refresh variable with cache files
+    d.setVar("CONFIG_SITE", siteinfo_get_files(d, aclocalcache=True))
 }
 autotools_copy_aclocals[vardepsexclude] += "MACHINE SDK_ARCH BUILD_ARCH SDK_OS BB_TASKDEPDATA"
 
+CONFIGURE_FILES = "${S}/configure.in ${S}/configure.ac ${S}/config.h.in ${S}/acinclude.m4 Makefile.am"
+
 autotools_do_configure() {
 	# WARNING: gross hack follows:
 	# An autotools built package generally needs these scripts, however only
@@ -236,6 +270,9 @@
 	# for a package whose autotools are old, on an x86_64 machine, which the old
 	# config.sub does not support.  Work around this by installing them manually
 	# regardless.
+
+	PRUNE_M4=""
+
 	for ac in `find ${S} -ignore_readdir_race -name configure.in -o -name configure.ac`; do
 		rm -f `dirname $ac`/configure
 	done
@@ -246,7 +283,7 @@
 		if [ x"${acpaths}" = xdefault ]; then
 			acpaths=
 			for i in `find ${AUTOTOOLS_SCRIPT_PATH} -ignore_readdir_race -maxdepth 2 -name \*.m4|grep -v 'aclocal.m4'| \
-				grep -v 'acinclude.m4' | grep -v 'aclocal-copy' | sed -e 's,\(.*/\).*$,\1,'|sort -u`; do
+				grep -v 'acinclude.m4' | sed -e 's,\(.*/\).*$,\1,'|sort -u`; do
 				acpaths="$acpaths -I $i"
 			done
 		else
@@ -285,17 +322,22 @@
 					cp ${STAGING_DATADIR_NATIVE}/gettext/po/remove-potcdate.sin ${S}/po/
 				fi
 			fi
-			for i in gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4; do
-				for j in `find ${S} -ignore_readdir_race -name $i | grep -v aclocal-copy`; do
-					rm $j
-				done
-			done
+			PRUNE_M4="$PRUNE_M4 gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4"
 		fi
 		mkdir -p m4
 		if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+			if ! echo "${DEPENDS}" | grep -q intltool-native; then
+				bbwarn "Missing DEPENDS on intltool-native"
+			fi
+			PRUNE_M4="$PRUNE_M4 intltool.m4"
 			bbnote Executing intltoolize --copy --force --automake
 			intltoolize --copy --force --automake
 		fi
+
+		for i in $PRUNE_M4; do
+			find ${S} -ignore_readdir_race -name $i -delete
+		done
+
 		bbnote Executing ACLOCAL=\"$ACLOCAL\" autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths
 		ACLOCAL="$ACLOCAL" autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || die "autoreconf execution failed."
 		cd $olddir
@@ -307,6 +349,10 @@
 	fi
 }
 
+autotools_do_compile() {
+    oe_runmake
+}
+
 autotools_do_install() {
 	oe_runmake 'DESTDIR=${D}' install
 	# Info dir listing isn't interesting at this point so remove it if it exists.
@@ -317,6 +363,6 @@
 
 inherit siteconfig
 
-EXPORT_FUNCTIONS do_configure do_install
+EXPORT_FUNCTIONS do_configure do_compile do_install
 
 B = "${WORKDIR}/build"
diff --git a/import-layers/yocto-poky/meta/classes/base.bbclass b/import-layers/yocto-poky/meta/classes/base.bbclass
index a7ca3a6..024fe43 100644
--- a/import-layers/yocto-poky/meta/classes/base.bbclass
+++ b/import-layers/yocto-poky/meta/classes/base.bbclass
@@ -10,7 +10,7 @@
 inherit metadata_scm
 inherit logging
 
-OE_IMPORTS += "os sys time oe.path oe.utils oe.data oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath"
+OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath"
 OE_IMPORTS[type] = "list"
 
 def oe_import(d):
@@ -105,12 +105,15 @@
         # any others should be covered by SRC_URI.
         try:
             path = bb.fetch.decodeurl(url)[2]
+            if not path:
+                raise bb.fetch.MalformedUrl(url)
+
             if path[0] == '/':
                 if path.startswith(tmpdir):
                     continue
                 filelist.append(path + ":" + str(os.path.exists(path)))
         except bb.fetch.MalformedUrl:
-            raise bb.build.FuncFailed(d.getVar('PN', True) + ": LIC_FILES_CHKSUM contains an invalid URL: " + url)
+            bb.fatal(d.getVar('PN', True) + ": LIC_FILES_CHKSUM contains an invalid URL: " + url)
     return " ".join(filelist)
 
 addtask fetch
@@ -128,30 +131,28 @@
         fetcher = bb.fetch2.Fetch(src_uri, d)
         fetcher.download()
     except bb.fetch2.BBFetchException as e:
-        raise bb.build.FuncFailed(e)
+        bb.fatal(str(e))
 }
 
 addtask unpack after do_fetch
 do_unpack[dirs] = "${WORKDIR}"
+
+python () {
+    if d.getVar('S', True) != d.getVar('WORKDIR', True):
+        d.setVarFlag('do_unpack', 'cleandirs', '${S}')
+    else:
+        d.setVarFlag('do_unpack', 'cleandirs', os.path.join('${S}', 'patches'))
+}
 python base_do_unpack() {
     src_uri = (d.getVar('SRC_URI', True) or "").split()
     if len(src_uri) == 0:
         return
 
-    rootdir = d.getVar('WORKDIR', True)
-
-    # Ensure that we cleanup ${S}/patches
-    # TODO: Investigate if we can remove
-    # the entire ${S} in this case.
-    s_dir = d.getVar('S', True)
-    p_dir = os.path.join(s_dir, 'patches')
-    bb.utils.remove(p_dir, True)
-
     try:
         fetcher = bb.fetch2.Fetch(src_uri, d)
-        fetcher.unpack(rootdir)
+        fetcher.unpack(d.getVar('WORKDIR', True))
     except bb.fetch2.BBFetchException as e:
-        raise bb.build.FuncFailed(e)
+        bb.fatal(str(e))
 }
 
 def pkgarch_mapping(d):
@@ -308,7 +309,7 @@
 }
 
 addtask install after do_compile
-do_install[dirs] = "${D} ${B}"
+do_install[dirs] = "${B}"
 # Remove and re-create ${D} so that is it guaranteed to be empty
 do_install[cleandirs] = "${D}"
 
@@ -430,12 +431,6 @@
         appendVar('RDEPENDS_${PN}', extrardeps)
         appendVar('PACKAGECONFIG_CONFARGS', extraconf)
 
-        # TODO: once all recipes/classes abusing EXTRA_OECONF
-        # to get PACKAGECONFIG options are fixed to use PACKAGECONFIG_CONFARGS
-        # move this appendVar to autotools.bbclass.
-        if not bb.data.inherits_class('cmake', d):
-            appendVar('EXTRA_OECONF', extraconf)
-
     pn = d.getVar('PN', True)
     license = d.getVar('LICENSE', True)
     if license == "INVALID":
@@ -477,7 +472,7 @@
         else:
             raise bb.parse.SkipPackage("incompatible with machine %s (not in COMPATIBLE_MACHINE)" % d.getVar('MACHINE', True))
 
-    source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', 0)
+    source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', False)
     if not source_mirror_fetch:
         need_host = d.getVar('COMPATIBLE_HOST', True)
         if need_host:
@@ -490,7 +485,7 @@
 
         check_license = False if pn.startswith("nativesdk-") else True
         for t in ["-native", "-cross-${TARGET_ARCH}", "-cross-initial-${TARGET_ARCH}",
-              "-crosssdk-${SDK_ARCH}", "-crosssdk-initial-${SDK_ARCH}",
+              "-crosssdk-${SDK_SYS}", "-crosssdk-initial-${SDK_SYS}",
               "-cross-canadian-${TRANSLATED_TARGET_ARCH}"]:
             if pn.endswith(d.expand(t)):
                 check_license = False
@@ -542,6 +537,19 @@
                 if pn in incompatwl:
                     bb.note("INCLUDING " + pn + " as buildable despite INCOMPATIBLE_LICENSE because it has been whitelisted")
 
+        # Try to verify per-package (LICENSE_<pkg>) values. LICENSE should be a
+        # superset of all per-package licenses. We do not do advanced (pattern)
+        # matching of license expressions - just check that all license strings
+        # in LICENSE_<pkg> are found in LICENSE.
+        license_set = oe.license.list_licenses(license)
+        for pkg in d.getVar('PACKAGES', True).split():
+            pkg_license = d.getVar('LICENSE_' + pkg, True)
+            if pkg_license:
+                unlisted = oe.license.list_licenses(pkg_license) - license_set
+                if unlisted:
+                    bb.warn("LICENSE_%s includes licenses (%s) that are not "
+                            "listed in LICENSE" % (pkg, ' '.join(unlisted)))
+
     needsrcrev = False
     srcuri = d.getVar('SRC_URI', True)
     for uri in srcuri.split():
@@ -566,6 +574,10 @@
             needsrcrev = True
             d.appendVarFlag('do_fetch', 'depends', ' mercurial-native:do_populate_sysroot')
 
+        # Perforce packages support SRCREV = "${AUTOREV}"
+        elif scheme == "p4":
+            needsrcrev = True
+
         # OSC packages should DEPEND on osc-native
         elif scheme == "osc":
             d.appendVarFlag('do_fetch', 'depends', ' osc-native:do_populate_sysroot')
@@ -658,8 +670,8 @@
     try:
         fetcher = bb.fetch2.Fetch(src_uri, d)
         fetcher.clean()
-    except bb.fetch2.BBFetchException, e:
-        raise bb.build.FuncFailed(e)
+    except bb.fetch2.BBFetchException as e:
+        bb.fatal(str(e))
 }
 do_cleanall[nostamp] = "1"
 
diff --git a/import-layers/yocto-poky/meta/classes/bash-completion.bbclass b/import-layers/yocto-poky/meta/classes/bash-completion.bbclass
index 74a878e..80ee9b4 100644
--- a/import-layers/yocto-poky/meta/classes/bash-completion.bbclass
+++ b/import-layers/yocto-poky/meta/classes/bash-completion.bbclass
@@ -1,3 +1,5 @@
+DEPENDS_append_class-target = " bash-completion"
+
 PACKAGES += "${PN}-bash-completion"
 
 FILES_${PN}-bash-completion = "${datadir}/bash-completion ${sysconfdir}/bash_completion.d"
diff --git a/import-layers/yocto-poky/meta/classes/buildhistory.bbclass b/import-layers/yocto-poky/meta/classes/buildhistory.bbclass
index 581d532..3a5bc2c 100644
--- a/import-layers/yocto-poky/meta/classes/buildhistory.bbclass
+++ b/import-layers/yocto-poky/meta/classes/buildhistory.bbclass
@@ -57,6 +57,9 @@
 # class.
 BUILDHISTORY_PRESERVE = "latest latest_srcrev"
 
+PATCH_GIT_USER_EMAIL ?= "buildhistory@oe"
+PATCH_GIT_USER_NAME ?= "OpenEmbedded"
+
 #
 # Write out metadata about this package for comparison when writing future packages
 #
@@ -145,7 +148,7 @@
                 elif name == "RCONFLICTS":
                     pkginfo.rconflicts = value
                 elif name == "PKGSIZE":
-                    pkginfo.size = long(value)
+                    pkginfo.size = int(value)
                 elif name == "FILES":
                     pkginfo.files = value
                 elif name == "FILELIST":
@@ -233,7 +236,7 @@
                 key = item[0]
                 if key.endswith('_' + pkg):
                     key = key[:-len(pkg)-1]
-                pkgdata[key] = item[1].decode('utf-8').decode('string_escape')
+                pkgdata[key] = item[1]
 
         pkge = pkgdata.get('PKGE', '0')
         pkgv = pkgdata['PKGV']
@@ -274,7 +277,7 @@
         # Gather information about packaged files
         val = pkgdata.get('FILES_INFO', '')
         dictval = json.loads(val)
-        filelist = dictval.keys()
+        filelist = list(dictval.keys())
         filelist.sort()
         pkginfo.filelist = " ".join(filelist)
 
@@ -288,14 +291,12 @@
 
 
 def write_recipehistory(rcpinfo, d):
-    import codecs
-
     bb.debug(2, "Writing recipe history")
 
     pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE', True)
 
     infofile = os.path.join(pkghistdir, "latest")
-    with codecs.open(infofile, "w", encoding='utf8') as f:
+    with open(infofile, "w") as f:
         if rcpinfo.pe != "0":
             f.write(u"PE = %s\n" %  rcpinfo.pe)
         f.write(u"PV = %s\n" %  rcpinfo.pv)
@@ -305,8 +306,6 @@
 
 
 def write_pkghistory(pkginfo, d):
-    import codecs
-
     bb.debug(2, "Writing package history for package %s" % pkginfo.name)
 
     pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE', True)
@@ -316,22 +315,20 @@
         bb.utils.mkdirhier(pkgpath)
 
     infofile = os.path.join(pkgpath, "latest")
-    with codecs.open(infofile, "w", encoding='utf8') as f:
+    with open(infofile, "w") as f:
         if pkginfo.pe != "0":
             f.write(u"PE = %s\n" %  pkginfo.pe)
         f.write(u"PV = %s\n" %  pkginfo.pv)
         f.write(u"PR = %s\n" %  pkginfo.pr)
 
-        pkgvars = {}
-        pkgvars['PKG'] = pkginfo.pkg if pkginfo.pkg != pkginfo.name else ''
-        pkgvars['PKGE'] = pkginfo.pkge if pkginfo.pkge != pkginfo.pe else ''
-        pkgvars['PKGV'] = pkginfo.pkgv if pkginfo.pkgv != pkginfo.pv else ''
-        pkgvars['PKGR'] = pkginfo.pkgr if pkginfo.pkgr != pkginfo.pr else ''
-        for pkgvar in pkgvars:
-            val = pkgvars[pkgvar]
-            if val:
-                f.write(u"%s = %s\n" % (pkgvar, val))
-
+        if pkginfo.pkg != pkginfo.name:
+            f.write(u"PKG = %s\n" % pkginfo.pkg)
+        if pkginfo.pkge != pkginfo.pe:
+            f.write(u"PKGE = %s\n" % pkginfo.pkge)
+        if pkginfo.pkgv != pkginfo.pv:
+            f.write(u"PKGV = %s\n" % pkginfo.pkgv)
+        if pkginfo.pkgr != pkginfo.pr:
+            f.write(u"PKGR = %s\n" % pkginfo.pkgr)
         f.write(u"RPROVIDES = %s\n" %  pkginfo.rprovides)
         f.write(u"RDEPENDS = %s\n" %  pkginfo.rdepends)
         f.write(u"RRECOMMENDS = %s\n" %  pkginfo.rrecommends)
@@ -349,7 +346,7 @@
         filevarpath = os.path.join(pkgpath, "latest.%s" % filevar)
         val = pkginfo.filevars[filevar]
         if val:
-            with codecs.open(filevarpath, "w", encoding='utf8') as f:
+            with open(filevarpath, "w") as f:
                 f.write(val)
         else:
             if os.path.exists(filevarpath):
@@ -565,11 +562,11 @@
                     tasksizes[task] = origtotal + fsize
                     filesizes[fn] = fsize
         with open(d.expand('${BUILDHISTORY_DIR_SDK}/sstate-package-sizes.txt'), 'w') as f:
-            filesizes_sorted = sorted(filesizes.items(), key=operator.itemgetter(1), reverse=True)
+            filesizes_sorted = sorted(filesizes.items(), key=operator.itemgetter(1, 0), reverse=True)
             for fn, size in filesizes_sorted:
                 f.write('%10d KiB %s\n' % (size, fn))
         with open(d.expand('${BUILDHISTORY_DIR_SDK}/sstate-task-sizes.txt'), 'w') as f:
-            tasksizes_sorted = sorted(tasksizes.items(), key=operator.itemgetter(1), reverse=True)
+            tasksizes_sorted = sorted(tasksizes.items(), key=operator.itemgetter(1, 0), reverse=True)
             for task, size in tasksizes_sorted:
                 f.write('%10d KiB %s\n' % (size, task))
 }
@@ -645,7 +642,7 @@
     sdkvars = "DISTRO DISTRO_VERSION SDK_NAME SDK_VERSION SDKMACHINE SDKIMAGE_FEATURES BAD_RECOMMENDATIONS NO_RECOMMENDATIONS PACKAGE_EXCLUDE"
     if d.getVar('BB_CURRENTTASK', True) == 'populate_sdk_ext':
         # Extensible SDK uses some additional variables
-        sdkvars += " SDK_LOCAL_CONF_WHITELIST SDK_LOCAL_CONF_BLACKLIST SDK_INHERIT_BLACKLIST SDK_UPDATE_URL SDK_EXT_TYPE SDK_RECRDEP_TASKS"
+        sdkvars += " SDK_LOCAL_CONF_WHITELIST SDK_LOCAL_CONF_BLACKLIST SDK_INHERIT_BLACKLIST SDK_UPDATE_URL SDK_EXT_TYPE SDK_RECRDEP_TASKS SDK_INCLUDE_PKGDATA SDK_INCLUDE_TOOLCHAIN"
     listvars = "SDKIMAGE_FEATURES BAD_RECOMMENDATIONS PACKAGE_EXCLUDE SDK_LOCAL_CONF_WHITELIST SDK_LOCAL_CONF_BLACKLIST SDK_INHERIT_BLACKLIST"
     return outputvars(sdkvars, listvars, d)
 
@@ -714,15 +711,9 @@
 			git tag -f build-minus-2 build-minus-1 > /dev/null 2>&1 || true
 			git tag -f build-minus-1 > /dev/null 2>&1 || true
 		fi
-		# If the user hasn't set up their name/email, set some defaults
-		# just for this repo (otherwise the commit will fail with older
-		# versions of git)
-		if ! git config user.email > /dev/null ; then
-			git config --local user.email "buildhistory@${DISTRO}"
-		fi
-		if ! git config user.name > /dev/null ; then
-			git config --local user.name "buildhistory"
-		fi
+
+		check_git_config
+
 		# Check if there are new/changed files to commit (other than metadata-revs)
 		repostatus=`git status --porcelain | grep -v " metadata-revs$"`
 		HOSTNAME=`hostname 2>/dev/null || echo unknown`
@@ -842,7 +833,7 @@
                         f.write('# SRCREV_%s = "%s"\n' % (name, orig_srcrev))
                     f.write('SRCREV_%s = "%s"\n' % (name, srcrev))
             else:
-                f.write('SRCREV = "%s"\n' % srcrevs.itervalues().next())
+                f.write('SRCREV = "%s"\n' % srcrevs.values())
             if len(tag_srcrevs) > 0:
                 for name, srcrev in tag_srcrevs.items():
                     f.write('# tag_%s = "%s"\n' % (name, srcrev))
diff --git a/import-layers/yocto-poky/meta/classes/buildstats-summary.bbclass b/import-layers/yocto-poky/meta/classes/buildstats-summary.bbclass
index d73350b..b86abcc 100644
--- a/import-layers/yocto-poky/meta/classes/buildstats-summary.bbclass
+++ b/import-layers/yocto-poky/meta/classes/buildstats-summary.bbclass
@@ -30,7 +30,11 @@
                 header_printed = True
                 bb.note("Build completion summary:")
 
-            bb.note("  {0}: {1}% sstate reuse ({2} setscene, {3} scratch)".format(t, 100*len(sstate)/(len(sstate)+len(no_sstate)), len(sstate), len(no_sstate)))
+            sstate_count = len(sstate)
+            no_sstate_count = len(no_sstate)
+            total_count = sstate_count + no_sstate_count
+            bb.note("  {0}: {1:.1f}% sstate reuse({2} setscene, {3} scratch)".format(
+                t, round(100 * sstate_count / total_count, 1), sstate_count, no_sstate_count))
 }
 addhandler buildstats_summary
 buildstats_summary[eventmask] = "bb.event.BuildCompleted"
diff --git a/import-layers/yocto-poky/meta/classes/buildstats.bbclass b/import-layers/yocto-poky/meta/classes/buildstats.bbclass
index 34ecb03..599a219 100644
--- a/import-layers/yocto-poky/meta/classes/buildstats.bbclass
+++ b/import-layers/yocto-poky/meta/classes/buildstats.bbclass
@@ -163,8 +163,13 @@
             bs = os.path.join(bsdir, "build_stats")
             with open(bs, "a") as f:
                 rootfs = d.getVar('IMAGE_ROOTFS', True)
-                rootfs_size = subprocess.Popen(["du", "-sh", rootfs], stdout=subprocess.PIPE).stdout.read()
-                f.write("Uncompressed Rootfs size: %s" % rootfs_size)
+                if os.path.isdir(rootfs):
+                    try:
+                        rootfs_size = subprocess.check_output(["du", "-sh", rootfs],
+                                stderr=subprocess.STDOUT).decode('utf-8')
+                        f.write("Uncompressed Rootfs size: %s" % rootfs_size)
+                    except subprocess.CalledProcessError as err:
+                        bb.warn("Failed to get rootfs size: %s" % err.output.decode('utf-8'))
 
     elif isinstance(e, bb.build.TaskFailed):
         # Can have a failure before TaskStarted so need to mkdir here too
diff --git a/import-layers/yocto-poky/meta/classes/ccache.bbclass b/import-layers/yocto-poky/meta/classes/ccache.bbclass
index 2cdce46..2e9837c 100644
--- a/import-layers/yocto-poky/meta/classes/ccache.bbclass
+++ b/import-layers/yocto-poky/meta/classes/ccache.bbclass
@@ -4,5 +4,3 @@
 
 do_configure[dirs] =+ "${CCACHE_DIR}"
 do_kernel_configme[dirs] =+ "${CCACHE_DIR}"
-
-do_clean[cleandirs] += "${CCACHE_DIR}"
diff --git a/import-layers/yocto-poky/meta/classes/chrpath.bbclass b/import-layers/yocto-poky/meta/classes/chrpath.bbclass
index 9c68855..3b5cd37 100644
--- a/import-layers/yocto-poky/meta/classes/chrpath.bbclass
+++ b/import-layers/yocto-poky/meta/classes/chrpath.bbclass
@@ -5,15 +5,17 @@
     import subprocess as sub
 
     p = sub.Popen([cmd, '-l', fpath],stdout=sub.PIPE,stderr=sub.PIPE)
-    err, out = p.communicate()
-    # If returned successfully, process stderr for results
+    out, err = p.communicate()
+    # If returned successfully, process stdout for results
     if p.returncode != 0:
         return
 
+    out = out.decode('utf-8')
+
     # Handle RUNPATH as well as RPATH
-    err = err.replace("RUNPATH=","RPATH=")
+    out = out.replace("RUNPATH=","RPATH=")
     # Throw away everything other than the rpath list
-    curr_rpath = err.partition("RPATH=")[2]
+    curr_rpath = out.partition("RPATH=")[2]
     #bb.note("Current rpath for %s is %s" % (fpath, curr_rpath.strip()))
     rpaths = curr_rpath.split(":")
     new_rpaths = []
@@ -37,18 +39,17 @@
         p = sub.Popen([cmd, '-r', args, fpath],stdout=sub.PIPE,stderr=sub.PIPE)
         out, err = p.communicate()
         if p.returncode != 0:
-            bb.error("%s: chrpath command failed with exit code %d:\n%s%s" % (d.getVar('PN', True), p.returncode, out, err))
-            raise bb.build.FuncFailed
+            bb.fatal("%s: chrpath command failed with exit code %d:\n%s%s" % (d.getVar('PN', True), p.returncode, out, err))
 
 def process_file_darwin(cmd, fpath, rootdir, baseprefix, tmpdir, d):
     import subprocess as sub
 
     p = sub.Popen([d.expand("${HOST_PREFIX}otool"), '-L', fpath],stdout=sub.PIPE,stderr=sub.PIPE)
-    err, out = p.communicate()
-    # If returned successfully, process stderr for results
+    out, err = p.communicate()
+    # If returned successfully, process stdout for results
     if p.returncode != 0:
         return
-    for l in err.split("\n"):
+    for l in out.split("\n"):
         if "(compatibility" not in l:
             continue
         rpath = l.partition("(compatibility")[0].strip()
@@ -57,7 +58,7 @@
 
         newpath = "@loader_path/" + os.path.relpath(rpath, os.path.dirname(fpath.replace(rootdir, "/")))
         p = sub.Popen([d.expand("${HOST_PREFIX}install_name_tool"), '-change', rpath, newpath, fpath],stdout=sub.PIPE,stderr=sub.PIPE)
-        err, out = p.communicate()
+        out, err = p.communicate()
 
 def process_dir (rootdir, directory, d):
     import stat
diff --git a/import-layers/yocto-poky/meta/classes/cmake.bbclass b/import-layers/yocto-poky/meta/classes/cmake.bbclass
index 02f313a..3e762de 100644
--- a/import-layers/yocto-poky/meta/classes/cmake.bbclass
+++ b/import-layers/yocto-poky/meta/classes/cmake.bbclass
@@ -84,6 +84,8 @@
 
 addtask generate_toolchain_file after do_patch before do_configure
 
+CONFIGURE_FILES = "CMakeLists.txt"
+
 cmake_do_configure() {
 	if [ "${OECMAKE_BUILDPATH}" ]; then
 		bbnote "cmake.bbclass no longer uses OECMAKE_BUILDPATH.  The default behaviour is now out-of-tree builds with B=WORKDIR/build."
@@ -108,25 +110,27 @@
 	  ${OECMAKE_SITEFILE} \
 	  ${OECMAKE_SOURCEPATH} \
 	  -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
-	  -DCMAKE_INSTALL_BINDIR:PATH=${bindir} \
-	  -DCMAKE_INSTALL_SBINDIR:PATH=${sbindir} \
-	  -DCMAKE_INSTALL_LIBEXECDIR:PATH=${libexecdir} \
+	  -DCMAKE_INSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('bindir', True), d.getVar('prefix', True))} \
+	  -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir', True), d.getVar('prefix', True))} \
+	  -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir', True), d.getVar('prefix', True))} \
 	  -DCMAKE_INSTALL_SYSCONFDIR:PATH=${sysconfdir} \
-	  -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${sharedstatedir} \
+	  -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir', True), d.  getVar('prefix', True))} \
 	  -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=${localstatedir} \
-	  -DCMAKE_INSTALL_LIBDIR:PATH=${libdir} \
-	  -DCMAKE_INSTALL_INCLUDEDIR:PATH=${includedir} \
-	  -DCMAKE_INSTALL_DATAROOTDIR:PATH=${datadir} \
+	  -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir', True), d.getVar('prefix', True))} \
+	  -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir', True), d.getVar('prefix', True))} \
+	  -DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir', True), d.getVar('prefix', True))} \
 	  -DCMAKE_INSTALL_SO_NO_EXE=0 \
 	  -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
 	  -DCMAKE_VERBOSE_MAKEFILE=1 \
+	  -DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
 	  ${EXTRA_OECMAKE} \
 	  -Wno-dev
 }
 
+do_compile[progress] = "percent"
 cmake_do_compile()  {
 	cd ${B}
-	base_do_compile
+	base_do_compile VERBOSE=1
 }
 
 cmake_do_install() {
diff --git a/import-layers/yocto-poky/meta/classes/cml1.bbclass b/import-layers/yocto-poky/meta/classes/cml1.bbclass
index b5dc028..5834806 100644
--- a/import-layers/yocto-poky/meta/classes/cml1.bbclass
+++ b/import-layers/yocto-poky/meta/classes/cml1.bbclass
@@ -42,6 +42,7 @@
 }
 do_menuconfig[depends] += "ncurses-native:do_populate_sysroot"
 do_menuconfig[nostamp] = "1"
+do_menuconfig[dirs] = "${B}"
 addtask menuconfig after do_configure
 
 python do_diffconfig() {
@@ -73,4 +74,5 @@
 }
 
 do_diffconfig[nostamp] = "1"
+do_diffconfig[dirs] = "${B}"
 addtask diffconfig
diff --git a/import-layers/yocto-poky/meta/classes/core-image.bbclass b/import-layers/yocto-poky/meta/classes/core-image.bbclass
index 705cad8..8431440 100644
--- a/import-layers/yocto-poky/meta/classes/core-image.bbclass
+++ b/import-layers/yocto-poky/meta/classes/core-image.bbclass
@@ -2,9 +2,6 @@
 #
 # Copyright (C) 2007-2011 Linux Foundation
 
-LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
-                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
 # IMAGE_FEATURES control content of the core reference images
 # 
 # By default we install packagegroup-core-boot and packagegroup-base-extended packages;
diff --git a/import-layers/yocto-poky/meta/classes/cross-canadian.bbclass b/import-layers/yocto-poky/meta/classes/cross-canadian.bbclass
index e07b1bd..21921b3 100644
--- a/import-layers/yocto-poky/meta/classes/cross-canadian.bbclass
+++ b/import-layers/yocto-poky/meta/classes/cross-canadian.bbclass
@@ -15,7 +15,8 @@
 # Update BASE_PACKAGE_ARCH and PACKAGE_ARCHS
 #
 PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}"
-CANADIANEXTRAOS = "linux-uclibc linux-musl"
+BASECANADIANEXTRAOS ?= "linux-uclibc linux-musl"
+CANADIANEXTRAOS = "${BASECANADIANEXTRAOS}"
 CANADIANEXTRAVENDOR = ""
 MODIFYTOS ??= "1"
 python () {
@@ -34,8 +35,13 @@
 
     tos = d.getVar("TARGET_OS", True)
     whitelist = []
+    extralibcs = [""]
+    if "uclibc" in d.getVar("BASECANADIANEXTRAOS", True):
+        extralibcs.append("uclibc")
+    if "musl" in d.getVar("BASECANADIANEXTRAOS", True):
+        extralibcs.append("musl")
     for variant in ["", "spe", "x32", "eabi", "n32"]:
-        for libc in ["", "uclibc", "musl"]:
+        for libc in extralibcs:
             entry = "linux"
             if variant and libc:
                 entry = entry + "-" + libc + variant
@@ -59,15 +65,22 @@
     if tarch == "x86_64":
         d.setVar("LIBCEXTENSION", "")
         d.setVar("ABIEXTENSION", "")
-        d.appendVar("CANADIANEXTRAOS", " linux-gnux32 linux-uclibcx32 linux-muslx32")
+        d.appendVar("CANADIANEXTRAOS", " linux-gnux32")
+        for extraos in d.getVar("BASECANADIANEXTRAOS", True).split():
+            d.appendVar("CANADIANEXTRAOS", " " + extraos + "x32")
     elif tarch == "powerpc":
         # PowerPC can build "linux" and "linux-gnuspe"
         d.setVar("LIBCEXTENSION", "")
         d.setVar("ABIEXTENSION", "")
-        d.appendVar("CANADIANEXTRAOS", " linux-gnuspe linux-uclibcspe linux-muslspe")
+        d.appendVar("CANADIANEXTRAOS", " linux-gnuspe")
+        for extraos in d.getVar("BASECANADIANEXTRAOS", True).split():
+            d.appendVar("CANADIANEXTRAOS", " " + extraos + "spe")
     elif tarch == "mips64":
-        d.appendVar("CANADIANEXTRAOS", " linux-gnun32 linux-uclibcn32 linux-musln32")
+        d.appendVar("CANADIANEXTRAOS", " linux-gnun32")
+        for extraos in d.getVar("BASECANADIANEXTRAOS", True).split():
+            d.appendVar("CANADIANEXTRAOS", " " + extraos + "n32")
     if tarch == "arm" or tarch == "armeb":
+        d.appendVar("CANADIANEXTRAOS", " linux-gnueabi linux-musleabi linux-uclibceabi")
         d.setVar("TARGET_OS", "linux-gnueabi")
     else:
         d.setVar("TARGET_OS", "linux")
diff --git a/import-layers/yocto-poky/meta/classes/cross.bbclass b/import-layers/yocto-poky/meta/classes/cross.bbclass
index 81d1c9d..01b0933 100644
--- a/import-layers/yocto-poky/meta/classes/cross.bbclass
+++ b/import-layers/yocto-poky/meta/classes/cross.bbclass
@@ -17,6 +17,8 @@
 HOST_LD_ARCH = "${BUILD_LD_ARCH}"
 HOST_AS_ARCH = "${BUILD_AS_ARCH}"
 
+export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir} /lib /lib64 /usr/lib /usr/lib64"
+
 STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_ARCH}${HOST_VENDOR}-${HOST_OS}"
 
 PACKAGE_ARCH = "${BUILD_ARCH}"
@@ -68,4 +70,16 @@
 
 USE_NLS = "no"
 
+export CC = "${BUILD_CC}"
+export CXX = "${BUILD_CXX}"
+export FC = "${BUILD_FC}"
+export CPP = "${BUILD_CPP}"
+export LD = "${BUILD_LD}"
+export CCLD = "${BUILD_CCLD}"
+export AR = "${BUILD_AR}"
+export AS = "${BUILD_AS}"
+export RANLIB = "${BUILD_RANLIB}"
+export STRIP = "${BUILD_STRIP}"
+export NM = "${BUILD_NM}"
+
 inherit nopackages
diff --git a/import-layers/yocto-poky/meta/classes/cve-check.bbclass b/import-layers/yocto-poky/meta/classes/cve-check.bbclass
new file mode 100644
index 0000000..1425a40
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/cve-check.bbclass
@@ -0,0 +1,265 @@
+# This class is used to check recipes against public CVEs.
+#
+# In order to use this class just inherit the class in the
+# local.conf file and it will add the cve_check task for
+# every recipe. The task can be used per recipe, per image,
+# or using the special cases "world" and "universe". The
+# cve_check task will print a warning for every unpatched
+# CVE found and generate a file in the recipe WORKDIR/cve
+# directory. If an image is build it will generate a report
+# in DEPLOY_DIR_IMAGE for all the packages used.
+#
+# Example:
+#   bitbake -c cve_check openssl
+#   bitbake core-image-sato
+#   bitbake -k -c cve_check universe
+#
+# DISCLAIMER
+#
+# This class/tool is meant to be used as support and not
+# the only method to check against CVEs. Running this tool
+# doesn't guarantee your packages are free of CVEs.
+
+CVE_CHECK_DB_DIR ?= "${DL_DIR}/CVE_CHECK"
+CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvd.db"
+
+CVE_CHECK_LOCAL_DIR ?= "${WORKDIR}/cve"
+CVE_CHECK_LOCAL_FILE ?= "${CVE_CHECK_LOCAL_DIR}/cve.log"
+CVE_CHECK_TMP_FILE ?= "${TMPDIR}/cve_check"
+
+CVE_CHECK_DIR ??= "${DEPLOY_DIR}/cve"
+CVE_CHECK_MANIFEST ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cve"
+CVE_CHECK_COPY_FILES ??= "1"
+CVE_CHECK_CREATE_MANIFEST ??= "1"
+
+# Whitelist for packages (PN)
+CVE_CHECK_PN_WHITELIST = "\
+    glibc-locale \
+"
+
+# Whitelist for CVE and version of package
+CVE_CHECK_CVE_WHITELIST = "{\
+    'CVE-2014-2524': ('6.3',), \
+}"
+
+python do_cve_check () {
+    """
+    Check recipe for patched and unpatched CVEs
+    """
+
+    if os.path.exists(d.getVar("CVE_CHECK_TMP_FILE", True)):
+        patched_cves = get_patches_cves(d)
+        patched, unpatched = check_cves(d, patched_cves)
+        if patched or unpatched:
+            cve_data = get_cve_info(d, patched + unpatched)
+            cve_write_data(d, patched, unpatched, cve_data)
+    else:
+        bb.note("Failed to update CVE database, skipping CVE check")
+}
+
+addtask cve_check after do_unpack before do_build
+do_cve_check[depends] = "cve-check-tool-native:do_populate_cve_db"
+do_cve_check[nostamp] = "1"
+
+python cve_check_cleanup () {
+    """
+    Delete the file used to gather all the CVE information.
+    """
+
+    bb.utils.remove(e.data.getVar("CVE_CHECK_TMP_FILE", True))
+}
+
+addhandler cve_check_cleanup
+cve_check_cleanup[eventmask] = "bb.cooker.CookerExit"
+
+python cve_check_write_rootfs_manifest () {
+    """
+    Create CVE manifest when building an image
+    """
+
+    import shutil
+
+    if os.path.exists(d.getVar("CVE_CHECK_TMP_FILE", True)):
+        bb.note("Writing rootfs CVE manifest")
+        deploy_dir = d.getVar("DEPLOY_DIR_IMAGE", True)
+        link_name = d.getVar("IMAGE_LINK_NAME", True)
+        manifest_name = d.getVar("CVE_CHECK_MANIFEST", True)
+        cve_tmp_file = d.getVar("CVE_CHECK_TMP_FILE", True)
+
+        shutil.copyfile(cve_tmp_file, manifest_name)
+
+        if manifest_name and os.path.exists(manifest_name):
+            manifest_link = os.path.join(deploy_dir, "%s.cve" % link_name)
+            # If we already have another manifest, update symlinks
+            if os.path.exists(os.path.realpath(manifest_link)):
+                os.remove(manifest_link)
+            os.symlink(os.path.basename(manifest_name), manifest_link)
+            bb.plain("Image CVE report stored in: %s" % manifest_name)
+}
+
+ROOTFS_POSTPROCESS_COMMAND_prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST', True) == '1' else ''}"
+
+def get_patches_cves(d):
+    """
+    Get patches that solve CVEs using the "CVE: " tag.
+    """
+
+    import re
+
+    pn = d.getVar("PN", True)
+    cve_match = re.compile("CVE:( CVE\-\d{4}\-\d+)+")
+    patched_cves = set()
+    bb.debug(2, "Looking for patches that solves CVEs for %s" % pn)
+    for url in src_patches(d):
+        patch_file = bb.fetch.decodeurl(url)[2]
+        with open(patch_file, "r", encoding="utf-8") as f:
+            try:
+                patch_text = f.read()
+            except UnicodeDecodeError:
+                bb.debug(1, "Failed to read patch %s using UTF-8 encoding"
+                        " trying with iso8859-1" %  patch_file)
+                f.close()
+                with open(patch_file, "r", encoding="iso8859-1") as f:
+                    patch_text = f.read()
+
+        # Search for the "CVE: " line
+        match = cve_match.search(patch_text)
+        if match:
+            # Get only the CVEs without the "CVE: " tag
+            cves = patch_text[match.start()+5:match.end()]
+            for cve in cves.split():
+                bb.debug(2, "Patch %s solves %s" % (patch_file, cve))
+                patched_cves.add(cve)
+        else:
+            bb.debug(2, "Patch %s doesn't solve CVEs" % patch_file)
+
+    return patched_cves
+
+def check_cves(d, patched_cves):
+    """
+    Run cve-check-tool looking for patched and unpatched CVEs.
+    """
+
+    import ast, csv, tempfile, subprocess, io
+
+    cves_patched = []
+    cves_unpatched = []
+    bpn = d.getVar("BPN", True)
+    pv = d.getVar("PV", True).split("git+")[0]
+    cves = " ".join(patched_cves)
+    cve_db_dir = d.getVar("CVE_CHECK_DB_DIR", True)
+    cve_whitelist = ast.literal_eval(d.getVar("CVE_CHECK_CVE_WHITELIST", True))
+    cve_cmd = "cve-check-tool"
+    cmd = [cve_cmd, "--no-html", "--csv", "--not-affected", "-t", "faux", "-d", cve_db_dir]
+
+    # If the recipe has been whitlisted we return empty lists
+    if d.getVar("PN", True) in d.getVar("CVE_CHECK_PN_WHITELIST", True).split():
+        bb.note("Recipe has been whitelisted, skipping check")
+        return ([], [])
+
+    # It is needed to export the proxies to download the database using HTTP
+    bb.utils.export_proxies(d)
+
+    try:
+        # Write the faux CSV file to be used with cve-check-tool
+        fd, faux = tempfile.mkstemp(prefix="cve-faux-")
+        with os.fdopen(fd, "w") as f:
+            f.write("%s,%s,%s," % (bpn, pv, cves))
+        cmd.append(faux)
+
+        output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8")
+        bb.debug(2, "Output of command %s:\n%s" % ("\n".join(cmd), output))
+    except subprocess.CalledProcessError as e:
+        bb.warn("Couldn't check for CVEs: %s (output %s)" % (e, e.output))
+    finally:
+        os.remove(faux)
+
+    for row in csv.reader(io.StringIO(output)):
+        # Third row has the unpatched CVEs
+        if row[2]:
+            for cve in row[2].split():
+                # Skip if the CVE has been whitlisted for the current version
+                if pv in cve_whitelist.get(cve,[]):
+                    bb.note("%s-%s has been whitelisted for %s" % (bpn, pv, cve))
+                else:
+                    cves_unpatched.append(cve)
+                    bb.debug(2, "%s-%s is not patched for %s" % (bpn, pv, cve))
+        # Fourth row has patched CVEs
+        if row[3]:
+            for cve in row[3].split():
+                cves_patched.append(cve)
+                bb.debug(2, "%s-%s is patched for %s" % (bpn, pv, cve))
+
+    return (cves_patched, cves_unpatched)
+
+def get_cve_info(d, cves):
+    """
+    Get CVE information from the database used by cve-check-tool.
+
+    Unfortunately the only way to get CVE info is set the output to
+    html (hard to parse) or query directly the database.
+    """
+
+    try:
+        import sqlite3
+    except ImportError:
+        from pysqlite2 import dbapi2 as sqlite3
+
+    cve_data = {}
+    db_file = d.getVar("CVE_CHECK_DB_FILE", True)
+    placeholder = ",".join("?" * len(cves))
+    query = "SELECT * FROM NVD WHERE id IN (%s)" % placeholder
+    conn = sqlite3.connect(db_file)
+    cur = conn.cursor()
+    for row in cur.execute(query, tuple(cves)):
+        cve_data[row[0]] = {}
+        cve_data[row[0]]["summary"] = row[1]
+        cve_data[row[0]]["score"] = row[2]
+        cve_data[row[0]]["modified"] = row[3]
+        cve_data[row[0]]["vector"] = row[4]
+    conn.close()
+
+    return cve_data
+
+def cve_write_data(d, patched, unpatched, cve_data):
+    """
+    Write CVE information in WORKDIR; and to CVE_CHECK_DIR, and
+    CVE manifest if enabled.
+    """
+
+    cve_file = d.getVar("CVE_CHECK_LOCAL_FILE", True)
+    nvd_link = "https://web.nvd.nist.gov/view/vuln/detail?vulnId="
+    write_string = ""
+    first_alert = True
+    bb.utils.mkdirhier(d.getVar("CVE_CHECK_LOCAL_DIR", True))
+
+    for cve in sorted(cve_data):
+        write_string += "PACKAGE NAME: %s\n" % d.getVar("PN", True)
+        write_string += "PACKAGE VERSION: %s\n" % d.getVar("PV", True)
+        write_string += "CVE: %s\n" % cve
+        if cve in patched:
+            write_string += "CVE STATUS: Patched\n"
+        else:
+            write_string += "CVE STATUS: Unpatched\n"
+            if first_alert:
+                bb.warn("Found unpatched CVE, for more information check %s" % cve_file)
+                first_alert = False
+        write_string += "CVE SUMMARY: %s\n" % cve_data[cve]["summary"]
+        write_string += "CVSS v2 BASE SCORE: %s\n" % cve_data[cve]["score"]
+        write_string += "VECTOR: %s\n" % cve_data[cve]["vector"]
+        write_string += "MORE INFORMATION: %s%s\n\n" % (nvd_link, cve)
+
+    with open(cve_file, "w") as f:
+        bb.note("Writing file %s with CVE information" % cve_file)
+        f.write(write_string)
+
+    if d.getVar("CVE_CHECK_COPY_FILES", True) == "1":
+        cve_dir = d.getVar("CVE_CHECK_DIR", True)
+        bb.utils.mkdirhier(cve_dir)
+        deploy_file = os.path.join(cve_dir, d.getVar("PN", True))
+        with open(deploy_file, "w") as f:
+            f.write(write_string)
+
+    if d.getVar("CVE_CHECK_CREATE_MANIFEST", True) == "1":
+        with open(d.getVar("CVE_CHECK_TMP_FILE", True), "a") as f:
+            f.write("%s" % write_string)
diff --git a/import-layers/yocto-poky/meta/classes/devshell.bbclass b/import-layers/yocto-poky/meta/classes/devshell.bbclass
index 341d9c0..be71aff 100644
--- a/import-layers/yocto-poky/meta/classes/devshell.bbclass
+++ b/import-layers/yocto-poky/meta/classes/devshell.bbclass
@@ -65,9 +65,6 @@
         os.dup2(m, sys.stdout.fileno())
         os.dup2(m, sys.stderr.fileno())
 
-        sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
-        sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0)
-
         bb.utils.nonblockingfd(sys.stdout)
         bb.utils.nonblockingfd(sys.stderr)
         bb.utils.nonblockingfd(sys.stdin)
@@ -93,6 +90,7 @@
             else:
                 prompt = ps1
             sys.stdout.write(prompt)
+            sys.stdout.flush()
 
         # Restore Ctrl+C since bitbake masks this
         def signal_handler(signal, frame):
@@ -114,6 +112,7 @@
                         continue
                 except EOFError as e:
                     sys.stdout.write("\n")
+                    sys.stdout.flush()
                 except (OSError, IOError) as e:
                     if e.errno == 11:
                         continue
diff --git a/import-layers/yocto-poky/meta/classes/distrodata.bbclass b/import-layers/yocto-poky/meta/classes/distrodata.bbclass
index 51bfc1e..fbb7402 100644
--- a/import-layers/yocto-poky/meta/classes/distrodata.bbclass
+++ b/import-layers/yocto-poky/meta/classes/distrodata.bbclass
@@ -1,4 +1,3 @@
-include conf/distro/include/package_regex.inc
 include conf/distro/include/upstream_tracking.inc
 include conf/distro/include/distro_alias.inc
 include conf/distro/include/maintainers.inc
diff --git a/import-layers/yocto-poky/meta/classes/distutils-common-base.bbclass b/import-layers/yocto-poky/meta/classes/distutils-common-base.bbclass
index 08511f5..824a1b6 100644
--- a/import-layers/yocto-poky/meta/classes/distutils-common-base.bbclass
+++ b/import-layers/yocto-poky/meta/classes/distutils-common-base.bbclass
@@ -1,7 +1,3 @@
-inherit python-dir
-
-EXTRA_OEMAKE = ""
-
 export STAGING_INCDIR
 export STAGING_LIBDIR
 
diff --git a/import-layers/yocto-poky/meta/classes/distutils-native-base.bbclass b/import-layers/yocto-poky/meta/classes/distutils-native-base.bbclass
deleted file mode 100644
index 509cb95..0000000
--- a/import-layers/yocto-poky/meta/classes/distutils-native-base.bbclass
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit distutils-common-base
-
-DEPENDS  += "${@["${PYTHON_PN}-native", ""][(d.getVar('PACKAGES', True) == '')]}"
diff --git a/import-layers/yocto-poky/meta/classes/distutils-tools.bbclass b/import-layers/yocto-poky/meta/classes/distutils-tools.bbclass
index 8d9b3f7..3ef9cc5 100644
--- a/import-layers/yocto-poky/meta/classes/distutils-tools.bbclass
+++ b/import-layers/yocto-poky/meta/classes/distutils-tools.bbclass
@@ -8,14 +8,12 @@
 distutils_do_compile() {
          STAGING_INCDIR=${STAGING_INCDIR} \
          STAGING_LIBDIR=${STAGING_LIBDIR} \
-         BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
          ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS} || \
          bbfatal_log "${PYTHON_PN} setup.py build_ext execution failed."
 }
 
 distutils_stage_headers() {
         install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install_headers execution failed."
 }
@@ -25,7 +23,6 @@
         STAGING_LIBDIR=${STAGING_LIBDIR} \
         install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
         PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install (stage) execution failed."
 }
@@ -37,7 +34,6 @@
         STAGING_INCDIR=${STAGING_INCDIR} \
         STAGING_LIBDIR=${STAGING_LIBDIR} \
         PYTHONPATH=${D}/${PYTHON_SITEPACKAGES_DIR} \
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install execution failed."
 
diff --git a/import-layers/yocto-poky/meta/classes/distutils.bbclass b/import-layers/yocto-poky/meta/classes/distutils.bbclass
index da48a2e..857572d 100644
--- a/import-layers/yocto-poky/meta/classes/distutils.bbclass
+++ b/import-layers/yocto-poky/meta/classes/distutils.bbclass
@@ -10,14 +10,12 @@
 distutils_do_compile() {
          STAGING_INCDIR=${STAGING_INCDIR} \
          STAGING_LIBDIR=${STAGING_LIBDIR} \
-         BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
          ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS} || \
          bbfatal_log "${PYTHON_PN} setup.py build execution failed."
 }
 
 distutils_stage_headers() {
         install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install_headers execution failed."
 }
@@ -27,7 +25,6 @@
         STAGING_LIBDIR=${STAGING_LIBDIR} \
         install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
         PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install (stage) execution failed."
 }
@@ -37,7 +34,6 @@
         STAGING_INCDIR=${STAGING_INCDIR} \
         STAGING_LIBDIR=${STAGING_LIBDIR} \
         PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install execution failed."
 
diff --git a/import-layers/yocto-poky/meta/classes/distutils3-base.bbclass b/import-layers/yocto-poky/meta/classes/distutils3-base.bbclass
index 2a093d3..82ab6a3 100644
--- a/import-layers/yocto-poky/meta/classes/distutils3-base.bbclass
+++ b/import-layers/yocto-poky/meta/classes/distutils3-base.bbclass
@@ -1,8 +1,5 @@
 DEPENDS  += "${@["${PYTHON_PN}-native ${PYTHON_PN}", ""][(d.getVar('PACKAGES', True) == '')]}"
 RDEPENDS_${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
 
-PYTHON_BASEVERSION = "3.5"
-PYTHON_ABI = "m"
-
 inherit distutils-common-base python3native
 
diff --git a/import-layers/yocto-poky/meta/classes/distutils3-native-base.bbclass b/import-layers/yocto-poky/meta/classes/distutils3-native-base.bbclass
deleted file mode 100644
index db9a1a7..0000000
--- a/import-layers/yocto-poky/meta/classes/distutils3-native-base.bbclass
+++ /dev/null
@@ -1,4 +0,0 @@
-PYTHON_BASEVERSION = "3.5"
-PYTHON_ABI = "m"
-
-inherit distutils-native-base
diff --git a/import-layers/yocto-poky/meta/classes/distutils3.bbclass b/import-layers/yocto-poky/meta/classes/distutils3.bbclass
index 4f6ca44..a6720c5 100644
--- a/import-layers/yocto-poky/meta/classes/distutils3.bbclass
+++ b/import-layers/yocto-poky/meta/classes/distutils3.bbclass
@@ -9,14 +9,8 @@
     --install-data=${D}/${datadir}"
 
 distutils3_do_compile() {
-        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
-                SYS=${MACHINE}
-        else
-                SYS=${HOST_SYS}
-        fi
         STAGING_INCDIR=${STAGING_INCDIR} \
         STAGING_LIBDIR=${STAGING_LIBDIR} \
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
         build ${DISTUTILS_BUILD_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py build_ext execution failed."
@@ -25,28 +19,16 @@
 
 distutils3_stage_headers() {
         install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
-        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
-                SYS=${MACHINE}
-        else
-                SYS=${HOST_SYS}
-        fi
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install_headers execution failed."
 }
 distutils3_stage_headers[vardepsexclude] = "MACHINE"
 
 distutils3_stage_all() {
-        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
-                SYS=${MACHINE}
-        else
-                SYS=${HOST_SYS}
-        fi
         STAGING_INCDIR=${STAGING_INCDIR} \
         STAGING_LIBDIR=${STAGING_LIBDIR} \
         install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
         PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install (stage) execution failed."
 }
@@ -54,15 +36,9 @@
 
 distutils3_do_install() {
         install -d ${D}${PYTHON_SITEPACKAGES_DIR}
-        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
-                SYS=${MACHINE}
-        else
-                SYS=${HOST_SYS}
-        fi
         STAGING_INCDIR=${STAGING_INCDIR} \
         STAGING_LIBDIR=${STAGING_LIBDIR} \
         PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
-        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
         bbfatal_log "${PYTHON_PN} setup.py install execution failed."
 
diff --git a/import-layers/yocto-poky/meta/classes/externalsrc.bbclass b/import-layers/yocto-poky/meta/classes/externalsrc.bbclass
index da7eb47..31908c3 100644
--- a/import-layers/yocto-poky/meta/classes/externalsrc.bbclass
+++ b/import-layers/yocto-poky/meta/classes/externalsrc.bbclass
@@ -29,6 +29,23 @@
 
 python () {
     externalsrc = d.getVar('EXTERNALSRC', True)
+
+    # If this is the base recipe and EXTERNALSRC is set for it or any of its
+    # derivatives, then enable BB_DONT_CACHE to force the recipe to always be
+    # re-parsed so that the file-checksums function for do_compile is run every
+    # time.
+    bpn = d.getVar('BPN', True)
+    if bpn == d.getVar('PN', True):
+        classextend = (d.getVar('BBCLASSEXTEND', True) or '').split()
+        if (externalsrc or
+                ('native' in classextend and
+                 d.getVar('EXTERNALSRC_pn-%s-native' % bpn, True)) or
+                ('nativesdk' in classextend and
+                 d.getVar('EXTERNALSRC_pn-nativesdk-%s' % bpn, True)) or
+                ('cross' in classextend and
+                 d.getVar('EXTERNALSRC_pn-%s-cross' % bpn, True))):
+            d.setVar('BB_DONT_CACHE', '1')
+
     if externalsrc:
         d.setVar('S', externalsrc)
         externalsrcbuild = d.getVar('EXTERNALSRC_BUILD', True)
@@ -85,10 +102,8 @@
         d.prependVarFlag('do_compile', 'prefuncs', "externalsrc_compile_prefunc ")
         d.prependVarFlag('do_configure', 'prefuncs', "externalsrc_configure_prefunc ")
 
-        # Force the recipe to be always re-parsed so that the file_checksums
-        # function is run every time
-        d.setVar('BB_DONT_CACHE', '1')
         d.setVarFlag('do_compile', 'file-checksums', '${@srctree_hash_files(d)}')
+        d.setVarFlag('do_configure', 'file-checksums', '${@srctree_configure_hash_files(d)}')
 
         # We don't want the workdir to go away
         d.appendVar('RM_WORK_EXCLUDE', ' ' + d.getVar('PN', True))
@@ -145,10 +160,31 @@
             env = os.environ.copy()
             env['GIT_INDEX_FILE'] = tmp_index.name
             subprocess.check_output(['git', 'add', '.'], cwd=s_dir, env=env)
-            sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env)
+            sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8")
         with open(oe_hash_file, 'w') as fobj:
             fobj.write(sha1)
         ret = oe_hash_file + ':True'
     else:
         ret = d.getVar('EXTERNALSRC', True) + '/*:True'
     return ret
+
+def srctree_configure_hash_files(d):
+    """
+    Get the list of files that should trigger do_configure to re-execute,
+    based on the value of CONFIGURE_FILES
+    """
+    in_files = (d.getVar('CONFIGURE_FILES', True) or '').split()
+    out_items = []
+    search_files = []
+    for entry in in_files:
+        if entry.startswith('/'):
+            out_items.append('%s:%s' % (entry, os.path.exists(entry)))
+        else:
+            search_files.append(entry)
+    if search_files:
+        s_dir = d.getVar('EXTERNALSRC', True)
+        for root, _, files in os.walk(s_dir):
+            for f in files:
+                if f in search_files:
+                    out_items.append('%s:True' % os.path.join(root, f))
+    return ' '.join(out_items)
diff --git a/import-layers/yocto-poky/meta/classes/gobject-introspection-data.bbclass b/import-layers/yocto-poky/meta/classes/gobject-introspection-data.bbclass
index b1bdd26..2ef6846 100644
--- a/import-layers/yocto-poky/meta/classes/gobject-introspection-data.bbclass
+++ b/import-layers/yocto-poky/meta/classes/gobject-introspection-data.bbclass
@@ -3,7 +3,5 @@
 #
 # It should be used in recipes to determine whether introspection data should be built,
 # so that qemu use can be avoided when necessary.
-GI_DATA_ENABLED = "${@bb.utils.contains('DISTRO_FEATURES', 'gobject-introspection-data', \
+GI_DATA_ENABLED ?= "${@bb.utils.contains('DISTRO_FEATURES', 'gobject-introspection-data', \
                       bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d), 'False', d)}"
-
-
diff --git a/import-layers/yocto-poky/meta/classes/gobject-introspection.bbclass b/import-layers/yocto-poky/meta/classes/gobject-introspection.bbclass
index 2d73e40..37389cb 100644
--- a/import-layers/yocto-poky/meta/classes/gobject-introspection.bbclass
+++ b/import-layers/yocto-poky/meta/classes/gobject-introspection.bbclass
@@ -1,22 +1,28 @@
 # Inherit this class in recipes to enable building their introspection files
 
-# This sets up autoconf-based recipes to build introspection data (or not),
+# python3native is inherited to prevent introspection tools being run with
+# host's python 3 (they need to be run with native python 3)
+#
+# This also sets up autoconf-based recipes to build introspection data (or not),
 # depending on distro and machine features (see gobject-introspection-data class).
-inherit gobject-introspection-data
-EXTRA_OECONF_prepend = "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection', '--disable-introspection', d)} "
+inherit python3native gobject-introspection-data
+EXTRA_OECONF_prepend_class-target = "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection', '--disable-introspection', d)} "
+
+# When building native recipes, disable introspection, as it is not necessary,
+# pulls in additional dependencies, and makes build times longer
+EXTRA_OECONF_prepend_class-native = "--disable-introspection "
+EXTRA_OECONF_prepend_class-nativesdk = "--disable-introspection "
 
 UNKNOWN_CONFIGURE_WHITELIST_append = " --enable-introspection --disable-introspection"
 
 # Generating introspection data depends on a combination of native and target
 # introspection tools, and qemu to run the target tools.
-DEPENDS_append = " gobject-introspection gobject-introspection-native qemu-native"
+DEPENDS_append_class-target = " gobject-introspection gobject-introspection-native qemu-native"
 
-# This is necessary for python scripts to succeed - distutils fails if these
-# are not set
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
+# Even though introspection is disabled on -native, gobject-introspection package is still
+# needed for m4 macros.
+DEPENDS_append_class-native = " gobject-introspection-native"
+DEPENDS_append_class-nativesdk = " gobject-introspection-native"
 
 # This is used by introspection tools to find .gir includes
 export XDG_DATA_DIRS = "${STAGING_DATADIR}"
diff --git a/import-layers/yocto-poky/meta/classes/grub-efi.bbclass b/import-layers/yocto-poky/meta/classes/grub-efi.bbclass
index 4ce3d28..17417ba 100644
--- a/import-layers/yocto-poky/meta/classes/grub-efi.bbclass
+++ b/import-layers/yocto-poky/meta/classes/grub-efi.bbclass
@@ -45,6 +45,8 @@
 		GRUB_IMAGE="bootx64.efi"
 	fi
 	install -m 0644 ${DEPLOY_DIR_IMAGE}/${GRUB_IMAGE} ${DEST}${EFIDIR}
+	EFIPATH=$(echo "${EFIDIR}" | sed 's/\//\\/g')
+	printf 'fs0:%s\%s\n' "$EFIPATH" "$GRUB_IMAGE" >${DEST}/startup.nsh
 
 	install -m 0644 ${GRUB_CFG} ${DEST}${EFIDIR}/grub.cfg
 }
@@ -57,7 +59,7 @@
 	cp $iso_dir/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR}
 	cp $iso_dir/vmlinuz ${EFIIMGDIR}
 	EFIPATH=$(echo "${EFIDIR}" | sed 's/\//\\/g')
-	echo "fs0:${EFIPATH}\\${GRUB_IMAGE}" > ${EFIIMGDIR}/startup.nsh
+	printf 'fs0:%s\%s\n' "$EFIPATH" "$GRUB_IMAGE" > ${EFIIMGDIR}/startup.nsh
 	if [ -f "$iso_dir/initrd" ] ; then
 		cp $iso_dir/initrd ${EFIIMGDIR}
 	fi
@@ -88,12 +90,12 @@
 
     cfile = d.getVar('GRUB_CFG', True)
     if not cfile:
-        raise bb.build.FuncFailed('Unable to read GRUB_CFG')
+        bb.fatal('Unable to read GRUB_CFG')
 
     try:
-         cfgfile = file(cfile, 'w')
+         cfgfile = open(cfile, 'w')
     except OSError:
-        raise bb.build.funcFailed('Unable to open %s' % (cfile))
+        bb.fatal('Unable to open %s' % cfile)
 
     cfgfile.write('# Automatically created by OE\n')
 
@@ -112,7 +114,7 @@
 
     root = d.getVar('GRUB_ROOT', True)
     if not root:
-        raise bb.build.FuncFailed('GRUB_ROOT not defined')
+        bb.fatal('GRUB_ROOT not defined')
 
     if gfxserial == "1":
         btypes = [ [ " graphics console", "" ],
@@ -125,7 +127,7 @@
 
         overrides = localdata.getVar('OVERRIDES', True)
         if not overrides:
-            raise bb.build.FuncFailed('OVERRIDES not defined')
+            bb.fatal('OVERRIDES not defined')
 
         for btype in btypes:
             localdata.setVar('OVERRIDES', label + ':' + overrides)
@@ -144,7 +146,8 @@
 
             if append:
                 append = replace_rootfs_uuid(d, append)
-                cfgfile.write('%s' % (append))
+                cfgfile.write(' %s' % (append))
+
             cfgfile.write(' %s' % btype[1])
             cfgfile.write('\n')
 
diff --git a/import-layers/yocto-poky/meta/classes/gtk-doc.bbclass b/import-layers/yocto-poky/meta/classes/gtk-doc.bbclass
index e32f98d..297eac6 100644
--- a/import-layers/yocto-poky/meta/classes/gtk-doc.bbclass
+++ b/import-layers/yocto-poky/meta/classes/gtk-doc.bbclass
@@ -1,25 +1,69 @@
-# Helper class to pull in the right gtk-doc dependencies and disable
-# gtk-doc.
+# Helper class to pull in the right gtk-doc dependencies and configure
+# gtk-doc to enable or disable documentation building (which requries the
+# use of usermode qemu).
+
+# This variable is set to True if api-documentation is in
+# DISTRO_FEATURES and qemu-usermode is in MACHINE_FEATURES, and False otherwise.
 #
-# Long-term it would be great if this class could be toggled between
-# gtk-doc-stub-native and the real gtk-doc-native, which would enable
-# re-generation of documentation.  For now, we'll make do with this which
-# packages up any existing documentation (so from tarball builds).
+# It should be used in recipes to determine whether gtk-doc based documentation should be built,
+# so that qemu use can be avoided when necessary.
+GTKDOC_ENABLED ?= "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', \
+                      bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d), 'False', d)}"
+
+EXTRA_OECONF_prepend_class-target = "${@bb.utils.contains('GTKDOC_ENABLED', 'True', '--enable-gtk-doc --enable-gtk-doc-html --disable-gtk-doc-pdf', \
+                                                                                    '--disable-gtk-doc', d)} "
+
+# When building native recipes, disable gtkdoc, as it is not necessary,
+# pulls in additional dependencies, and makes build times longer
+EXTRA_OECONF_prepend_class-native = "--disable-gtk-doc "
+EXTRA_OECONF_prepend_class-nativesdk = "--disable-gtk-doc "
+
+DEPENDS_append_class-target = " gtk-doc-native qemu-native"
+
+# Even though gtkdoc is disabled on -native, gtk-doc package is still
+# needed for m4 macros.
+DEPENDS_append_class-native = " gtk-doc-native"
+DEPENDS_append_class-nativesdk = " gtk-doc-native"
 
 # The documentation directory, where the infrastructure will be copied.
 # gtkdocize has a default of "." so to handle out-of-tree builds set this to $S.
 GTKDOC_DOCDIR ?= "${S}"
 
-DEPENDS_append = " gtk-doc-stub-native"
-
-EXTRA_OECONF_append = "\
-  --disable-gtk-doc \
-  --disable-gtk-doc-html \
-  --disable-gtk-doc-pdf \
-"
-
 do_configure_prepend () {
-	( cd ${S}; gtkdocize --docdir ${GTKDOC_DOCDIR} )
+	( cd ${S}; gtkdocize --docdir ${GTKDOC_DOCDIR} || true )
 }
 
+inherit qemu
+
+export STAGING_DIR_HOST
+
+do_compile_prepend_class-target () {
+
+        # Write out a qemu wrapper that will be given to gtkdoc-scangobj so that it
+        # can run target helper binaries through that.
+        qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\$GIR_EXTRA_LIBS_PATH','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+        cat > ${B}/gtkdoc-qemuwrapper << EOF
+#!/bin/sh
+# Use a modules directory which doesn't exist so we don't load random things
+# which may then get deleted (or their dependencies) and potentially segfault
+export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
+
+GIR_EXTRA_LIBS_PATH=\`find ${B} -name .libs| tr '\n' ':'\`\$GIR_EXTRA_LIBS_PATH
+
+if test -d ".libs"; then
+    $qemu_binary ".libs/\$@"
+else
+    $qemu_binary "\$@"
+fi
+
+if [ \$? -ne 0 ]; then
+    echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
+    echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
+    exit 1
+fi
+EOF
+        chmod +x ${B}/gtkdoc-qemuwrapper
+}
+
+
 inherit pkgconfig
diff --git a/import-layers/yocto-poky/meta/classes/gtk-immodules-cache.bbclass b/import-layers/yocto-poky/meta/classes/gtk-immodules-cache.bbclass
index c099cd3..ebbc9de 100644
--- a/import-layers/yocto-poky/meta/classes/gtk-immodules-cache.bbclass
+++ b/import-layers/yocto-poky/meta/classes/gtk-immodules-cache.bbclass
@@ -15,7 +15,8 @@
             ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-2.0')} \
                 $IMFILES > $D${libdir}/gtk-2.0/2.10.0/immodules.cache 2>/dev/null &&
                 sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
-        elif [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
+        fi
+        if [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
             IMFILES=$(ls $D${libdir}/gtk-3.0/*/immodules/*.so)
             ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-3.0')} \
                 $IMFILES > $D${libdir}/gtk-3.0/3.0.0/immodules.cache 2>/dev/null &&
@@ -40,7 +41,8 @@
             ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-2.0')} \
                 $IMFILES > $D${libdir}/gtk-2.0/2.10.0/immodules.cache 2>/dev/null &&
                 sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
-        elif [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
+        fi
+        if [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
             IMFILES=$(ls $D${libdir}/gtk-3.0/*/immodules/*.so)
             ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-3.0')} \
                 $IMFILES > $D${libdir}/gtk-3.0/3.0.0/immodules.cache 2>/dev/null &&
@@ -82,6 +84,6 @@
         gtkimmodules_check = d.getVar('GTKIMMODULES_PACKAGES', False)
         if not gtkimmodules_check:
             bb_filename = d.getVar('FILE', False)
-            raise bb.build.FuncFailed("ERROR: %s inherits gtk-immodules-cache but doesn't set GTKIMMODULES_PACKAGES" % bb_filename)
+            bb.fatal("ERROR: %s inherits gtk-immodules-cache but doesn't set GTKIMMODULES_PACKAGES" % bb_filename)
 }
 
diff --git a/import-layers/yocto-poky/meta/classes/gummiboot.bbclass b/import-layers/yocto-poky/meta/classes/gummiboot.bbclass
index 1ebb946..4f2dea6 100644
--- a/import-layers/yocto-poky/meta/classes/gummiboot.bbclass
+++ b/import-layers/yocto-poky/meta/classes/gummiboot.bbclass
@@ -34,6 +34,8 @@
         install -d ${DEST}/loader
         install -d ${DEST}/loader/entries
         install -m 0644 ${DEPLOY_DIR_IMAGE}/${EFI_IMAGE} ${DEST}${EFIDIR}/${DEST_EFI_IMAGE}
+        EFIPATH=$(echo "${EFIDIR}" | sed 's/\//\\/g')
+        printf 'fs0:%s\%s\n' "$EFIPATH" "$DEST_EFI_IMAGE" >${DEST}/startup.nsh
         install -m 0644 ${GUMMIBOOT_CFG} ${DEST}/loader/loader.conf
         for i in ${GUMMIBOOT_ENTRIES}; do
             install -m 0644 ${i} ${DEST}/loader/entries
@@ -72,7 +74,7 @@
     try:
          cfgfile = open(cfile, 'w')
     except OSError:
-        raise bb.build.funcFailed('Unable to open %s' % (cfile))
+        bb.fatal('Unable to open %s' % cfile)
 
     cfgfile.write('# Automatically created by OE\n')
     cfgfile.write('default %s\n' % (labels.split()[0]))
@@ -88,14 +90,14 @@
 
         overrides = localdata.getVar('OVERRIDES', True)
         if not overrides:
-            raise bb.build.FuncFailed('OVERRIDES not defined')
+            bb.fatal('OVERRIDES not defined')
 
         entryfile = "%s/%s.conf" % (s, label)
         d.appendVar("GUMMIBOOT_ENTRIES", " " + entryfile)
         try:
             entrycfg = open(entryfile, "w")
         except OSError:
-            raise bb.build.funcFailed('Unable to open %s' % (entryfile))
+            bb.fatal('Unable to open %s' % entryfile)
         localdata.setVar('OVERRIDES', label + ':' + overrides)
         bb.data.update_data(localdata)
 
diff --git a/import-layers/yocto-poky/meta/classes/icecc.bbclass b/import-layers/yocto-poky/meta/classes/icecc.bbclass
index e1c06c4..a837894 100644
--- a/import-layers/yocto-poky/meta/classes/icecc.bbclass
+++ b/import-layers/yocto-poky/meta/classes/icecc.bbclass
@@ -47,7 +47,8 @@
 
     # evaluate the expression by the shell if necessary
     if '`' in kernel_cc or '$(' in kernel_cc:
-        kernel_cc = os.popen("echo %s" % kernel_cc).read()[:-1]
+        import subprocess
+        kernel_cc = subprocess.check_output("echo %s" % kernel_cc, shell=True).decode("utf-8")[:-1]
 
     kernel_cc = d.expand(kernel_cc)
     kernel_cc = kernel_cc.replace('ccache', '').strip()
@@ -220,9 +221,14 @@
     # PATH or icecc-create-env script will silently create an invalid
     # compiler environment package.
     t = icecc_get_tool(bb, d, tool)
-    if t and os.popen("readlink -f %s" % t).read()[:-1] == get_icecc(d):
-        bb.error("%s is a symlink to %s in PATH and this prevents icecc from working" % (t, get_icecc(d)))
-        return ""
+    if t:
+        import subprocess
+        link_path = subprocess.check_output("readlink -f %s" % t, shell=True).decode("utf-8")[:-1]
+        if link_path == get_icecc(d):
+            bb.error("%s is a symlink to %s in PATH and this prevents icecc from working" % (t, get_icecc(d)))
+            return ""
+        else:
+            return t
     else:
         return t
 
diff --git a/import-layers/yocto-poky/meta/classes/image-buildinfo.bbclass b/import-layers/yocto-poky/meta/classes/image-buildinfo.bbclass
index 197b242..3003f5d 100644
--- a/import-layers/yocto-poky/meta/classes/image-buildinfo.bbclass
+++ b/import-layers/yocto-poky/meta/classes/image-buildinfo.bbclass
@@ -32,7 +32,7 @@
                                 shell=True,
                                 stderr=subprocess.STDOUT)
         return ""
-    except subprocess.CalledProcessError, ex:
+    except subprocess.CalledProcessError as ex:
         # Silently treat errors as "modified", without checking for the
         # (expected) return code 1 in a modified git repo. For example, we get
         # output and a 129 return code when a layer isn't a git repo at all.
@@ -71,7 +71,9 @@
 Layer Revisions:      |
 -----------------------
 ''',
-            get_layer_revs(d)
+            get_layer_revs(d),
+            '''
+'''
        ))
 }
 
diff --git a/import-layers/yocto-poky/meta/classes/image-live.bbclass b/import-layers/yocto-poky/meta/classes/image-live.bbclass
index c8a8610..4a634dc 100644
--- a/import-layers/yocto-poky/meta/classes/image-live.bbclass
+++ b/import-layers/yocto-poky/meta/classes/image-live.bbclass
@@ -43,7 +43,7 @@
 INITRD_IMAGE_LIVE ?= "core-image-minimal-initramfs"
 INITRD_LIVE ?= "${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE_LIVE}-${MACHINE}.cpio.gz"
 
-ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.ext4"
+ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.ext4"
 
 IMAGE_TYPEDEP_live = "ext4"
 IMAGE_TYPEDEP_iso = "ext4"
@@ -56,7 +56,7 @@
     if image_b == initrd_i:
         bb.error('INITRD_IMAGE_LIVE %s cannot use image live, hddimg or iso.' % initrd_i)
         bb.fatal('Check IMAGE_FSTYPES and INITRAMFS_FSTYPES settings.')
-    else:
+    elif initrd_i:
         d.appendVarFlag('do_bootimg', 'depends', ' %s:do_image_complete' % initrd_i)
 }
 
@@ -144,14 +144,14 @@
 	if [ "${PCBIOS}" = "1" ] && [ "${EFI}" != "1" ] ; then
 		# PCBIOS only media
 		mkisofs -V ${BOOTIMG_VOLUME_ID} \
-		        -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
+		        -o ${IMGDEPLOYDIR}/${IMAGE_NAME}.iso \
 			-b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} \
 			$mkisofs_compress_opts \
 			${MKISOFS_OPTIONS} $mkisofs_iso_level ${ISODIR}
 	else
 		# EFI only OR EFI+PCBIOS
 		mkisofs -A ${BOOTIMG_VOLUME_ID} -V ${BOOTIMG_VOLUME_ID} \
-		        -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
+		        -o ${IMGDEPLOYDIR}/${IMAGE_NAME}.iso \
 			-b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} \
 			$mkisofs_compress_opts ${MKISOFS_OPTIONS} $mkisofs_iso_level \
 			-eltorito-alt-boot -eltorito-platform efi \
@@ -160,7 +160,7 @@
 		isohybrid_args="-u"
 	fi
 
-	isohybrid $isohybrid_args ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso
+	isohybrid $isohybrid_args ${IMGDEPLOYDIR}/${IMAGE_NAME}.iso
 }
 
 build_fat_img() {
@@ -202,12 +202,6 @@
 	# Determine the final size in blocks accounting for some padding
 	BLOCKS=$(expr $(expr $SECTORS / 2) + ${BOOTIMG_EXTRA_SPACE})
 
-	# Ensure total sectors is an integral number of sectors per
-	# track or mcopy will complain. Sectors are 512 bytes, and we
-	# generate images with 32 sectors per track. This calculation is
-	# done in blocks, thus the mod by 16 instead of 32.
-	BLOCKS=$(expr $BLOCKS + $(expr 16 - $(expr $BLOCKS % 16)))
-
 	# mkdosfs will sometimes use FAT16 when it is not appropriate,
 	# resulting in a boot failure from SYSLINUX. Use FAT32 for
 	# images larger than 512MB, otherwise let mkdosfs decide.
@@ -258,13 +252,13 @@
 			fi
 		fi
 
-		build_fat_img ${HDDDIR} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
+		build_fat_img ${HDDDIR} ${IMGDEPLOYDIR}/${IMAGE_NAME}.hddimg
 
 		if [ "${PCBIOS}" = "1" ]; then
 			syslinux_hddimg_install
 		fi
 
-		chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
+		chmod 644 ${IMGDEPLOYDIR}/${IMAGE_NAME}.hddimg
 	fi
 }
 
diff --git a/import-layers/yocto-poky/meta/classes/image-swab.bbclass b/import-layers/yocto-poky/meta/classes/image-swab.bbclass
deleted file mode 100644
index 6b02cad..0000000
--- a/import-layers/yocto-poky/meta/classes/image-swab.bbclass
+++ /dev/null
@@ -1,94 +0,0 @@
-HOST_DATA ?= "${TMPDIR}/host-contamination-data/"
-SWABBER_REPORT ?= "${LOG_DIR}/swabber/"
-SWABBER_LOGS ?= "${LOG_DIR}/contamination-logs"
-TRACE_LOGDIR ?= "${SWABBER_LOGS}/${PACKAGE_ARCH}"
-TRACE_LOGFILE = "${TRACE_LOGDIR}/${PN}-${PV}"
-
-SWAB_ORIG_TASK := "${BB_DEFAULT_TASK}"
-BB_DEFAULT_TASK = "generate_swabber_report"
-
-# Several recipes don't build with parallel make when run under strace
-# Ideally these should be fixed but as a temporary measure disable parallel
-# builds for troublesome recipes
-PARALLEL_MAKE_pn-openssl = ""
-PARALLEL_MAKE_pn-glibc = ""
-PARALLEL_MAKE_pn-glib-2.0 = ""
-PARALLEL_MAKE_pn-libxml2 = ""
-PARALLEL_MAKE_pn-readline = ""
-PARALLEL_MAKE_pn-util-linux = ""
-PARALLEL_MAKE_pn-binutils = ""
-PARALLEL_MAKE_pn-bison = ""
-PARALLEL_MAKE_pn-cmake = ""
-PARALLEL_MAKE_pn-elfutils = ""
-PARALLEL_MAKE_pn-gcc = ""
-PARALLEL_MAKE_pn-gcc-runtime = ""
-PARALLEL_MAKE_pn-m4 = ""
-PARALLEL_MAKE_pn-opkg = ""
-PARALLEL_MAKE_pn-pkgconfig = ""
-PARALLEL_MAKE_pn-prelink = ""
-PARALLEL_MAKE_pn-rpm = ""
-PARALLEL_MAKE_pn-tcl = ""
-PARALLEL_MAKE_pn-beecrypt = ""
-PARALLEL_MAKE_pn-curl = ""
-PARALLEL_MAKE_pn-gmp = ""
-PARALLEL_MAKE_pn-libmpc = ""
-PARALLEL_MAKE_pn-libxslt = ""
-PARALLEL_MAKE_pn-lzo = ""
-PARALLEL_MAKE_pn-popt = ""
-PARALLEL_MAKE_pn-linux-wrs = ""
-PARALLEL_MAKE_pn-libgcrypt = ""
-PARALLEL_MAKE_pn-gpgme = ""
-PARALLEL_MAKE_pn-udev = ""
-PARALLEL_MAKE_pn-gnutls = ""
-
-python() {
-    # NOTE: It might be useful to detect host infection on native and cross
-    # packages but as it turns out to be pretty hard to do this for all native
-    # and cross packages which aren't swabber-native or one of its dependencies
-    # I have ignored them for now...
-    if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('nativesdk', d) and not bb.data.inherits_class('cross', d):
-        deps = (d.getVarFlag('do_setscene', 'depends', True) or "").split()
-        deps.append('strace-native:do_populate_sysroot')
-        d.setVarFlag('do_setscene', 'depends', " ".join(deps))
-        logdir = d.expand("${TRACE_LOGDIR}")
-        bb.utils.mkdirhier(logdir)
-    else:
-        d.setVar('STRACEFUNC', '')
-}
-
-STRACEPID = "${@os.getpid()}"
-STRACEFUNC = "imageswab_attachstrace"
-
-do_configure[prefuncs] += "${STRACEFUNC}"
-do_compile[prefuncs] += "${STRACEFUNC}"
-
-imageswab_attachstrace () {
-	STRACE=`which strace`
-
-	if [ -x "$STRACE" ]; then
-		swabber-strace-attach "$STRACE -f -o ${TRACE_LOGFILE}-${BB_CURRENTTASK}.log -e trace=open,execve -p ${STRACEPID}" "${TRACE_LOGFILE}-traceattach-${BB_CURRENTTASK}.log"
-	fi
-}
-
-do_generate_swabber_report () {
-
-	update_distro ${HOST_DATA}
-
-	# Swabber can't create the directory for us
-	mkdir -p ${SWABBER_REPORT}
-
-	REPORTSTAMP=${SWAB_ORIG_TASK}-`date +%2m%2d%2H%2M%Y`
-
-	if [ `which ccache` ] ; then
-		CCACHE_DIR=`( ccache -s | grep "cache directory" | grep -o '[^ ]*$' 2> /dev/null )`
- 	fi
-
-	if [ "$(ls -A ${HOST_DATA})" ]; then
-		echo "Generating swabber report"
-		swabber -d ${HOST_DATA} -l ${SWABBER_LOGS} -o ${SWABBER_REPORT}/report-${REPORTSTAMP}.txt -r ${SWABBER_REPORT}/extra_report-${REPORTSTAMP}.txt -c all -p ${TOPDIR} -f ${OEROOT}/meta/conf/swabber ${TOPDIR} ${OEROOT} ${CCACHE_DIR}
-	else
-		echo "No host data, cannot generate swabber report."
-	fi
-}
-addtask generate_swabber_report after do_${SWAB_ORIG_TASK}
-do_generate_swabber_report[depends] = "swabber-native:do_populate_sysroot"
diff --git a/import-layers/yocto-poky/meta/classes/image-vm.bbclass b/import-layers/yocto-poky/meta/classes/image-vm.bbclass
index 47f7326..2f35d6b 100644
--- a/import-layers/yocto-poky/meta/classes/image-vm.bbclass
+++ b/import-layers/yocto-poky/meta/classes/image-vm.bbclass
@@ -23,23 +23,24 @@
                                syslinux-native:do_populate_sysroot \
                                parted-native:do_populate_sysroot \
                                mtools-native:do_populate_sysroot \
-                               ${PN}:do_image_ext4 \
+                               ${PN}:do_image_${VM_ROOTFS_TYPE} \
                                "
 
-IMAGE_TYPEDEP_vmdk = "ext4"
-IMAGE_TYPEDEP_vdi = "ext4"
-IMAGE_TYPEDEP_qcow2 = "ext4"
-IMAGE_TYPEDEP_hdddirect = "ext4"
+IMAGE_TYPEDEP_vmdk = "${VM_ROOTFS_TYPE}"
+IMAGE_TYPEDEP_vdi = "${VM_ROOTFS_TYPE}"
+IMAGE_TYPEDEP_qcow2 = "${VM_ROOTFS_TYPE}"
+IMAGE_TYPEDEP_hdddirect = "${VM_ROOTFS_TYPE}"
 IMAGE_TYPES_MASKED += "vmdk vdi qcow2 hdddirect"
 
-ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.ext4"
+VM_ROOTFS_TYPE ?= "ext4"
+ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${VM_ROOTFS_TYPE}"
 
 # Used by bootloader
 LABELS_VM ?= "boot"
 ROOT_VM ?= "root=/dev/sda2"
 # Using an initramfs is optional. Enable it by setting INITRD_IMAGE_VM.
 INITRD_IMAGE_VM ?= ""
-INITRD_VM ?= "${@'${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE_VM}-${MACHINE}.cpio.gz' if '${INITRD_IMAGE_VM}' else ''}"
+INITRD_VM ?= "${@'${IMGDEPLOYDIR}/${INITRD_IMAGE_VM}-${MACHINE}.cpio.gz' if '${INITRD_IMAGE_VM}' else ''}"
 do_bootdirectdisk[depends] += "${@'${INITRD_IMAGE_VM}:do_image_complete' if '${INITRD_IMAGE_VM}' else ''}"
 
 BOOTDD_VOLUME_ID   ?= "boot"
@@ -51,7 +52,7 @@
 build_boot_dd() {
 	HDDDIR="${S}/hdd/boot"
 	HDDIMG="${S}/hdd.image"
-	IMAGE=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hdddirect
+	IMAGE=${IMGDEPLOYDIR}/${IMAGE_NAME}.hdddirect
 
 	populate_kernel $HDDDIR
 
@@ -65,12 +66,6 @@
 	BLOCKS=`du -bks $HDDDIR | cut -f 1`
 	BLOCKS=`expr $BLOCKS + ${BOOTDD_EXTRA_SPACE}`
 
-	# Ensure total sectors is an integral number of sectors per
-	# track or mcopy will complain. Sectors are 512 bytes, and we
-	# generate images with 32 sectors per track. This calculation is
-	# done in blocks, thus the mod by 16 instead of 32.
-	BLOCKS=$(expr $BLOCKS + $(expr 16 - $(expr $BLOCKS % 16)))
-
 	# Remove it since mkdosfs would fail when it exists
 	rm -f $HDDIMG
 	mkdosfs -n ${BOOTDD_VOLUME_ID} -S 512 -C $HDDIMG $BLOCKS 
@@ -109,9 +104,9 @@
 	dd if=$HDDIMG of=$IMAGE conv=notrunc seek=1 bs=512
 	dd if=${ROOTFS} of=$IMAGE conv=notrunc seek=$OFFSET bs=512
 
-	cd ${DEPLOY_DIR_IMAGE}
-	rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hdddirect
-	ln -s ${IMAGE_NAME}.hdddirect ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hdddirect
+	cd ${IMGDEPLOYDIR}
+
+	ln -sf ${IMAGE_NAME}.hdddirect ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.hdddirect
 } 
 
 python do_bootdirectdisk() {
@@ -146,8 +141,9 @@
 
 run_qemu_img (){
     type="$1"
-    qemu-img convert -O $type ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hdddirect ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.$type
-    ln -sf ${IMAGE_NAME}.$type ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.$type
+    qemu-img convert -O $type ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.hdddirect ${IMGDEPLOYDIR}/${IMAGE_NAME}.$type
+
+    ln -sf ${IMAGE_NAME}.$type ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.$type
 }
 create_vmdk_image () {
     run_qemu_img vmdk
diff --git a/import-layers/yocto-poky/meta/classes/image.bbclass b/import-layers/yocto-poky/meta/classes/image.bbclass
index 8bfd241..6111f6d 100644
--- a/import-layers/yocto-poky/meta/classes/image.bbclass
+++ b/import-layers/yocto-poky/meta/classes/image.bbclass
@@ -74,6 +74,8 @@
 export PACKAGE_INSTALL ?= "${IMAGE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL} ${FEATURE_INSTALL}"
 PACKAGE_INSTALL_ATTEMPTONLY ?= "${FEATURE_INSTALL_OPTIONAL}"
 
+IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete"
+
 # Images are generally built explicitly, do not need to be part of world.
 EXCLUDE_FROM_WORLD = "1"
 
@@ -114,11 +116,11 @@
 
 def rootfs_variables(d):
     from oe.rootfs import variable_depends
-    variables = ['IMAGE_DEVICE_TABLES','BUILD_IMAGES_FROM_FEEDS','IMAGE_TYPES_MASKED','IMAGE_ROOTFS_ALIGNMENT','IMAGE_OVERHEAD_FACTOR','IMAGE_ROOTFS_SIZE','IMAGE_ROOTFS_EXTRA_SPACE',
-                 'IMAGE_ROOTFS_MAXSIZE','IMAGE_NAME','IMAGE_LINK_NAME','IMAGE_MANIFEST','DEPLOY_DIR_IMAGE','RM_OLD_IMAGE','IMAGE_FSTYPES','IMAGE_INSTALL_COMPLEMENTARY','IMAGE_LINGUAS',
+    variables = ['IMAGE_DEVICE_TABLE','IMAGE_DEVICE_TABLES','BUILD_IMAGES_FROM_FEEDS','IMAGE_TYPES_MASKED','IMAGE_ROOTFS_ALIGNMENT','IMAGE_OVERHEAD_FACTOR','IMAGE_ROOTFS_SIZE','IMAGE_ROOTFS_EXTRA_SPACE',
+                 'IMAGE_ROOTFS_MAXSIZE','IMAGE_NAME','IMAGE_LINK_NAME','IMAGE_MANIFEST','DEPLOY_DIR_IMAGE','IMAGE_FSTYPES','IMAGE_INSTALL_COMPLEMENTARY','IMAGE_LINGUAS',
                  'MULTILIBRE_ALLOW_REP','MULTILIB_TEMP_ROOTFS','MULTILIB_VARIANTS','MULTILIBS','ALL_MULTILIB_PACKAGE_ARCHS','MULTILIB_GLOBAL_VARIANTS','BAD_RECOMMENDATIONS','NO_RECOMMENDATIONS',
                  'PACKAGE_ARCHS','PACKAGE_CLASSES','TARGET_VENDOR','TARGET_ARCH','TARGET_OS','OVERRIDES','BBEXTENDVARIANT','FEED_DEPLOYDIR_BASE_URI','INTERCEPT_DIR','USE_DEVFS',
-                 'COMPRESSIONTYPES', 'IMAGE_GEN_DEBUGFS', 'ROOTFS_RO_UNNEEDED']
+                 'CONVERSIONTYPES', 'IMAGE_GEN_DEBUGFS', 'ROOTFS_RO_UNNEEDED', 'IMGDEPLOYDIR', 'PACKAGE_EXCLUDE_COMPLEMENTARY']
     variables.extend(rootfs_command_variables(d))
     variables.extend(variable_depends(d))
     return " ".join(variables)
@@ -166,7 +168,7 @@
         if temp:
             bb.fatal("%s contains conflicting IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' '.join(list(temp))))
 
-    d.setVar('IMAGE_FEATURES', ' '.join(list(remain_features)))
+    d.setVar('IMAGE_FEATURES', ' '.join(sorted(list(remain_features))))
 
     check_image_features(d)
     initramfs_image = d.getVar('INITRAMFS_IMAGE', True) or ""
@@ -198,6 +200,17 @@
     from oe.rootfs import create_rootfs
     from oe.manifest import create_manifest
 
+    # NOTE: if you add, remove or significantly refactor the stages of this
+    # process then you should recalculate the weightings here. This is quite
+    # easy to do - just change the MultiStageProgressReporter line temporarily
+    # to pass debug=True as the last parameter and you'll get a printout of
+    # the weightings as well as a map to the lines where next_stage() was
+    # called. Of course this isn't critical, but it helps to keep the progress
+    # reporting accurate.
+    stage_weights = [1, 203, 354, 186, 65, 4228, 1, 353, 49, 330, 382, 23, 1]
+    progress_reporter = bb.progress.MultiStageProgressReporter(d, stage_weights)
+    progress_reporter.next_stage()
+
     # Handle package exclusions
     excl_pkgs = d.getVar("PACKAGE_EXCLUDE", True).split()
     inst_pkgs = d.getVar("PACKAGE_INSTALL", True).split()
@@ -230,11 +243,15 @@
     # Generate the initial manifest
     create_manifest(d)
 
-    # Generate rootfs
-    create_rootfs(d)
+    progress_reporter.next_stage()
+
+    # generate rootfs
+    create_rootfs(d, progress_reporter=progress_reporter)
+
+    progress_reporter.finish()
 }
 do_rootfs[dirs] = "${TOPDIR}"
-do_rootfs[cleandirs] += "${S}"
+do_rootfs[cleandirs] += "${S} ${IMGDEPLOYDIR}"
 do_rootfs[umask] = "022"
 addtask rootfs before do_build
 
@@ -258,8 +275,43 @@
 }
 do_image_complete[dirs] = "${TOPDIR}"
 do_image_complete[umask] = "022"
+SSTATETASKS += "do_image_complete"
+SSTATE_SKIP_CREATION_task-image-complete = '1'
+do_image_complete[sstate-inputdirs] = "${IMGDEPLOYDIR}"
+do_image_complete[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
+do_image_complete[stamp-extra-info] = "${MACHINE}"
 addtask do_image_complete after do_image before do_build
 
+# Add image-level QA/sanity checks to IMAGE_QA_COMMANDS
+#
+# IMAGE_QA_COMMANDS += " \
+#     image_check_everything_ok \
+# "
+# This task runs all functions in IMAGE_QA_COMMANDS after the image
+# construction has completed in order to validate the resulting image.
+fakeroot python do_image_qa () {
+    from oe.utils import ImageQAFailed
+
+    qa_cmds = (d.getVar('IMAGE_QA_COMMANDS', True) or '').split()
+    qamsg = ""
+
+    for cmd in qa_cmds:
+        try:
+            bb.build.exec_func(cmd, d)
+        except oe.utils.ImageQAFailed as e:
+            qamsg = qamsg + '\tImage QA function %s failed: %s\n' % (e.name, e.description)
+        except bb.build.FuncFailed as e:
+            qamsg = qamsg + '\tImage QA function %s failed' % e.name
+            if e.logfile:
+                qamsg = qamsg + ' (log file is located at %s)' % e.logfile
+            qamsg = qamsg + '\n'
+
+    if qamsg:
+        imgname = d.getVar('IMAGE_NAME', True)
+        bb.fatal("QA errors found whilst validating image: %s\n%s" % (imgname, qamsg))
+}
+addtask do_image_qa after do_image_complete before do_build
+
 #
 # Write environment variables used by wic
 # to tmp/sysroots/<machine>/imgdata/<image>.env
@@ -287,6 +339,7 @@
     d.appendVar('IMAGE_ROOTFS', '-dbg')
     d.appendVar('IMAGE_LINK_NAME', '-dbg')
     d.appendVar('IMAGE_NAME','-dbg')
+    d.setVar('IMAGE_BUILDING_DEBUGFS', 'true')
     debugfs_image_fstypes = d.getVar('IMAGE_FSTYPES_DEBUGFS', True)
     if debugfs_image_fstypes:
         d.setVar('IMAGE_FSTYPES', debugfs_image_fstypes)
@@ -297,8 +350,16 @@
 
 python () {
     vardeps = set()
-    ctypes = d.getVar('COMPRESSIONTYPES', True).split()
-    old_overrides = d.getVar('OVERRIDES', 0)
+    # We allow CONVERSIONTYPES to have duplicates. That avoids breaking
+    # derived distros when OE-core or some other layer independently adds
+    # the same type. There is still only one command for each type, but
+    # presumably the commands will do the same when the type is the same,
+    # even when added in different places.
+    #
+    # Without de-duplication, gen_conversion_cmds() below
+    # would create the same compression command multiple times.
+    ctypes = set(d.getVar('CONVERSIONTYPES', True).split())
+    old_overrides = d.getVar('OVERRIDES', False)
 
     def _image_base_type(type):
         basetype = type
@@ -354,6 +415,7 @@
     d.appendVarFlag('do_image', 'vardeps', ' '.join(vardeps))
 
     maskedtypes = (d.getVar('IMAGE_TYPES_MASKED', True) or "").split()
+    maskedtypes = [dbg + t for t in maskedtypes for dbg in ("", "debugfs_")]
 
     for t in basetypes:
         vardeps = set()
@@ -386,21 +448,30 @@
             cmds.append("\t" + image_cmd)
         else:
             bb.fatal("No IMAGE_CMD defined for IMAGE_FSTYPES entry '%s' - possibly invalid type name or missing support class" % t)
-        cmds.append(localdata.expand("\tcd ${DEPLOY_DIR_IMAGE}"))
+        cmds.append(localdata.expand("\tcd ${IMGDEPLOYDIR}"))
+
+        # Since a copy of IMAGE_CMD_xxx will be inlined within do_image_xxx,
+        # prevent a redundant copy of IMAGE_CMD_xxx being emitted as a function.
+        d.delVarFlag('IMAGE_CMD_' + realt, 'func')
 
         rm_tmp_images = set()
         def gen_conversion_cmds(bt):
             for ctype in ctypes:
-                if bt.endswith("." + ctype):
+                if bt[bt.find('.') + 1:] == ctype:
                     type = bt[0:-len(ctype) - 1]
                     if type.startswith("debugfs_"):
                         type = type[8:]
                     # Create input image first.
                     gen_conversion_cmds(type)
                     localdata.setVar('type', type)
-                    cmds.append("\t" + localdata.getVar("COMPRESS_CMD_" + ctype, True))
+                    cmd = "\t" + (localdata.getVar("CONVERSION_CMD_" + ctype, True) or localdata.getVar("COMPRESS_CMD_" + ctype, True))
+                    if cmd not in cmds:
+                        cmds.append(cmd)
+                    vardeps.add('CONVERSION_CMD_' + ctype)
                     vardeps.add('COMPRESS_CMD_' + ctype)
-                    subimages.append(type + "." + ctype)
+                    subimage = type + "." + ctype
+                    if subimage not in subimages:
+                        subimages.append(subimage)
                     if type not in alltypes:
                         rm_tmp_images.add(localdata.expand("${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"))
 
@@ -467,6 +538,12 @@
     base_size += rootfs_alignment - 1
     base_size -= base_size % rootfs_alignment
 
+    # Do not check image size of the debugfs image. This is not supposed
+    # to be deployed, etc. so it doesn't make sense to limit the size
+    # of the debug.
+    if (d.getVar('IMAGE_BUILDING_DEBUGFS', True) or "") == "true":
+        return base_size
+
     # Check the rootfs size against IMAGE_ROOTFS_MAXSIZE (if set)
     if rootfs_maxsize:
         rootfs_maxsize_int = int(rootfs_maxsize)
@@ -495,28 +572,26 @@
 #
 python create_symlinks() {
 
-    deploy_dir = d.getVar('DEPLOY_DIR_IMAGE', True)
+    deploy_dir = d.getVar('IMGDEPLOYDIR', True)
     img_name = d.getVar('IMAGE_NAME', True)
     link_name = d.getVar('IMAGE_LINK_NAME', True)
     manifest_name = d.getVar('IMAGE_MANIFEST', True)
     taskname = d.getVar("BB_CURRENTTASK", True)
     subimages = (d.getVarFlag("do_" + taskname, 'subimages', False) or "").split()
     imgsuffix = d.getVarFlag("do_" + taskname, 'imgsuffix', True) or d.expand("${IMAGE_NAME_SUFFIX}.")
-    os.chdir(deploy_dir)
 
     if not link_name:
         return
     for type in subimages:
-        if os.path.exists(img_name + imgsuffix + type):
-            dst = deploy_dir + "/" + link_name + "." + type
-            src = img_name + imgsuffix + type
+        dst = os.path.join(deploy_dir, link_name + "." + type)
+        src = img_name + imgsuffix + type
+        if os.path.exists(os.path.join(deploy_dir, src)):
             bb.note("Creating symlink: %s -> %s" % (dst, src))
             if os.path.islink(dst):
-                if d.getVar('RM_OLD_IMAGE', True) == "1" and \
-                        os.path.exists(os.path.realpath(dst)):
-                    os.remove(os.path.realpath(dst))
                 os.remove(dst)
             os.symlink(src, dst)
+        else:
+            bb.note("Skipping symlink, source does not exist: %s -> %s" % (dst, src))
 }
 
 MULTILIBRE_ALLOW_REP =. "${base_bindir}|${base_sbindir}|${bindir}|${sbindir}|${libexecdir}|${sysconfdir}|${nonarch_base_libdir}/udev|/lib/modules/[^/]*/modules.*|"
diff --git a/import-layers/yocto-poky/meta/classes/image_types.bbclass b/import-layers/yocto-poky/meta/classes/image_types.bbclass
index 53af7ca..1ce8334 100644
--- a/import-layers/yocto-poky/meta/classes/image_types.bbclass
+++ b/import-layers/yocto-poky/meta/classes/image_types.bbclass
@@ -11,41 +11,40 @@
 
 def imagetypes_getdepends(d):
     def adddep(depstr, deps):
-        for i in (depstr or "").split():
-            if i not in deps:
-                deps.append(i)
+        for d in (depstr or "").split():
+            # Add task dependency if not already present
+            if ":" not in d:
+                d += ":do_populate_sysroot"
+            deps.add(d)
 
-    deps = []
-    ctypes = d.getVar('COMPRESSIONTYPES', True).split()
     fstypes = set((d.getVar('IMAGE_FSTYPES', True) or "").split())
     fstypes |= set((d.getVar('IMAGE_FSTYPES_DEBUGFS', True) or "").split())
-    for type in fstypes:
-        if type in ["vmdk", "vdi", "qcow2", "hdddirect", "live", "iso", "hddimg"]:
-            type = "ext4"
-        basetype = type
-        for ctype in ctypes:
-            if type.endswith("." + ctype):
-                basetype = type[:-len("." + ctype)]
-                adddep(d.getVar("COMPRESS_DEPENDS_%s" % ctype, True), deps)
-                break
+
+    deps = set()
+    for typestring in fstypes:
+        types = typestring.split(".")
+        basetype, resttypes = types[0], types[1:]
+
+        adddep(d.getVar('IMAGE_DEPENDS_%s' % basetype, True) , deps)
         for typedepends in (d.getVar("IMAGE_TYPEDEP_%s" % basetype, True) or "").split():
             adddep(d.getVar('IMAGE_DEPENDS_%s' % typedepends, True) , deps)
-        adddep(d.getVar('IMAGE_DEPENDS_%s' % basetype, True) , deps)
+        for ctype in resttypes:
+            adddep(d.getVar("CONVERSION_DEPENDS_%s" % ctype, True), deps)
+            adddep(d.getVar("COMPRESS_DEPENDS_%s" % ctype, True), deps)
 
-    depstr = ""
-    for dep in deps:
-        depstr += " " + dep + ":do_populate_sysroot"
-    return depstr
+    # Sort the set so that ordering is consistant
+    return " ".join(sorted(deps))
 
-
-XZ_COMPRESSION_LEVEL ?= "-e -6"
+XZ_COMPRESSION_LEVEL ?= "-3"
 XZ_INTEGRITY_CHECK ?= "crc32"
 XZ_THREADS ?= "-T 0"
 
-JFFS2_SUM_EXTRA_ARGS ?= ""
-IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 ${EXTRA_IMAGECMD}"
+ZIP_COMPRESSION_LEVEL ?= "-9"
 
-IMAGE_CMD_cramfs = "mkfs.cramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cramfs ${EXTRA_IMAGECMD}"
+JFFS2_SUM_EXTRA_ARGS ?= ""
+IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 ${EXTRA_IMAGECMD}"
+
+IMAGE_CMD_cramfs = "mkfs.cramfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cramfs ${EXTRA_IMAGECMD}"
 
 oe_mkext234fs () {
 	fstype=$1
@@ -65,8 +64,8 @@
 		eval COUNT=\"$MIN_COUNT\"
 	fi
 	# Create a sparse image block
-	dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.$fstype seek=$ROOTFS_SIZE count=$COUNT bs=1024
-	mkfs.$fstype -F $extra_imagecmd ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.$fstype -d ${IMAGE_ROOTFS}
+	dd if=/dev/zero of=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.$fstype seek=$ROOTFS_SIZE count=$COUNT bs=1024
+	mkfs.$fstype -F $extra_imagecmd ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.$fstype -d ${IMAGE_ROOTFS}
 }
 
 IMAGE_CMD_ext2 = "oe_mkext234fs ext2 ${EXTRA_IMAGECMD}"
@@ -76,16 +75,16 @@
 MIN_BTRFS_SIZE ?= "16384"
 IMAGE_CMD_btrfs () {
 	if [ ${ROOTFS_SIZE} -gt ${MIN_BTRFS_SIZE} ]; then
-		dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.btrfs count=${ROOTFS_SIZE} bs=1024
-		mkfs.btrfs ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.btrfs
+		dd if=/dev/zero of=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.btrfs count=${ROOTFS_SIZE} bs=1024
+		mkfs.btrfs ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.btrfs
 	else
 		bbfatal "Rootfs is too small for BTRFS (Rootfs Actual Size: ${ROOTFS_SIZE}, BTRFS Minimum Size: ${MIN_BTRFS_SIZE})"
 	fi
 }
 
-IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs ${EXTRA_IMAGECMD} -noappend"
-IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-xz ${EXTRA_IMAGECMD} -noappend -comp xz"
-IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo"
+IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs ${EXTRA_IMAGECMD} -noappend"
+IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-xz ${EXTRA_IMAGECMD} -noappend -comp xz"
+IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo"
 
 # By default, tar from the host is used, which can be quite old. If
 # you need special parameters (like --xattrs) which are only supported
@@ -98,18 +97,25 @@
 # In practice, it turned out to be not needed when creating archives and
 # required when extracting, but it seems prudent to use it in both cases.
 IMAGE_CMD_TAR ?= "tar"
-IMAGE_CMD_tar = "${IMAGE_CMD_TAR} -cvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} ."
+IMAGE_CMD_tar = "${IMAGE_CMD_TAR} -cvf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} ."
 
 do_image_cpio[cleandirs] += "${WORKDIR}/cpio_append"
 IMAGE_CMD_cpio () {
-	(cd ${IMAGE_ROOTFS} && find . | cpio -o -H newc >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio)
-	if [ ! -L ${IMAGE_ROOTFS}/init -a ! -e ${IMAGE_ROOTFS}/init ]; then
-		if [ -L ${IMAGE_ROOTFS}/sbin/init -o -e ${IMAGE_ROOTFS}/sbin/init ]; then
-			ln -sf /sbin/init ${WORKDIR}/cpio_append/init
-		else
-			touch ${WORKDIR}/cpio_append/init
+	(cd ${IMAGE_ROOTFS} && find . | cpio -o -H newc >${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio)
+	# We only need the /init symlink if we're building the real
+	# image. The -dbg image doesn't need it! By being clever
+	# about this we also avoid 'touch' below failing, as it
+	# might be trying to touch /sbin/init on the host since both
+	# the normal and the -dbg image share the same WORKDIR
+	if [ "${IMAGE_BUILDING_DEBUGFS}" != "true" ]; then
+		if [ ! -L ${IMAGE_ROOTFS}/init ] && [ ! -e ${IMAGE_ROOTFS}/init ]; then
+			if [ -L ${IMAGE_ROOTFS}/sbin/init ] || [ -e ${IMAGE_ROOTFS}/sbin/init ]; then
+				ln -sf /sbin/init ${WORKDIR}/cpio_append/init
+			else
+				touch ${WORKDIR}/cpio_append/init
+			fi
+			(cd  ${WORKDIR}/cpio_append && echo ./init | cpio -oA -H newc -F ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio)
 		fi
-		(cd  ${WORKDIR}/cpio_append && echo ./init | cpio -oA -H newc -F ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio)
 	fi
 }
 
@@ -117,8 +123,8 @@
 ELF_APPEND ?= "ramdisk_size=32768 root=/dev/ram0 rw console="
 
 IMAGE_CMD_elf () {
-	test -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf && rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf
-	mkelfImage --kernel=${ELF_KERNEL} --initrd=${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.cpio.gz --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf --append='${ELF_APPEND}' ${EXTRA_IMAGECMD}
+	test -f ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf && rm -f ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf
+	mkelfImage --kernel=${ELF_KERNEL} --initrd=${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.cpio.gz --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf --append='${ELF_APPEND}' ${EXTRA_IMAGECMD}
 }
 
 IMAGE_TYPEDEP_elf = "cpio.gz"
@@ -136,20 +142,20 @@
 
 	echo \[ubifs\] > ubinize${vname}-${IMAGE_NAME}.cfg
 	echo mode=ubi >> ubinize${vname}-${IMAGE_NAME}.cfg
-	echo image=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs >> ubinize${vname}-${IMAGE_NAME}.cfg
+	echo image=${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs >> ubinize${vname}-${IMAGE_NAME}.cfg
 	echo vol_id=0 >> ubinize${vname}-${IMAGE_NAME}.cfg
 	echo vol_type=dynamic >> ubinize${vname}-${IMAGE_NAME}.cfg
 	echo vol_name=${UBI_VOLNAME} >> ubinize${vname}-${IMAGE_NAME}.cfg
 	echo vol_flags=autoresize >> ubinize${vname}-${IMAGE_NAME}.cfg
-	mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ${mkubifs_args}
-	ubinize -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubi ${ubinize_args} ubinize${vname}-${IMAGE_NAME}.cfg
+	mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ${mkubifs_args}
+	ubinize -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubi ${ubinize_args} ubinize${vname}-${IMAGE_NAME}.cfg
 
 	# Cleanup cfg file
-	mv ubinize${vname}-${IMAGE_NAME}.cfg ${DEPLOY_DIR_IMAGE}/
+	mv ubinize${vname}-${IMAGE_NAME}.cfg ${IMGDEPLOYDIR}/
 
 	# Create own symlinks for 'named' volumes
 	if [ -n "$vname" ]; then
-		cd ${DEPLOY_DIR_IMAGE}
+		cd ${IMGDEPLOYDIR}
 		if [ -e ${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ]; then
 			ln -sf ${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs \
 			${IMAGE_LINK_NAME}${vname}.ubifs
@@ -176,9 +182,9 @@
 	multiubi_mkfs "${MKUBIFS_ARGS}" "${UBINIZE_ARGS}"
 }
 
-IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}"
+IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}"
 
-WKS_FILE ?= "${IMAGE_BASENAME}.${MACHINE}.wks"
+WKS_FILE ??= "${IMAGE_BASENAME}.${MACHINE}.wks"
 WKS_FILES ?= "${WKS_FILE} ${IMAGE_BASENAME}.wks"
 WKS_SEARCH_PATH ?= "${THISDIR}:${@':'.join('%s/scripts/lib/wic/canned-wks' % l for l in '${BBPATH}:${COREBASE}'.split(':'))}"
 WKS_FULL_PATH = "${@wks_search('${WKS_FILES}'.split(), '${WKS_SEARCH_PATH}') or ''}"
@@ -193,22 +199,76 @@
             if searched:
                 return searched
 
+WIC_CREATE_EXTRA_ARGS ?= ""
+
 IMAGE_CMD_wic () {
-	out="${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}"
+	out="${IMGDEPLOYDIR}/${IMAGE_NAME}"
 	wks="${WKS_FULL_PATH}"
 	if [ -z "$wks" ]; then
 		bbfatal "No kickstart files from WKS_FILES were found: ${WKS_FILES}. Please set WKS_FILE or WKS_FILES appropriately."
 	fi
 
-	BUILDDIR="${TOPDIR}" wic create "$wks" --vars "${STAGING_DIR_TARGET}/imgdata/" -e "${IMAGE_BASENAME}" -o "$out/"
+	BUILDDIR="${TOPDIR}" wic create "$wks" --vars "${STAGING_DIR_TARGET}/imgdata/" -e "${IMAGE_BASENAME}" -o "$out/" ${WIC_CREATE_EXTRA_ARGS}
 	mv "$out/build/$(basename "${wks%.wks}")"*.direct "$out${IMAGE_NAME_SUFFIX}.wic"
 	rm -rf "$out/"
 }
 IMAGE_CMD_wic[vardepsexclude] = "WKS_FULL_PATH WKS_FILES"
 
 # Rebuild when the wks file or vars in WICVARS change
-USING_WIC = "${@bb.utils.contains_any('IMAGE_FSTYPES', 'wic ' + ' '.join('wic.%s' % c for c in '${COMPRESSIONTYPES}'.split()), '1', '', d)}"
-do_image_wic[file-checksums] += "${@'${WKS_FULL_PATH}:%s' % os.path.exists('${WKS_FULL_PATH}') if '${USING_WIC}' else ''}"
+USING_WIC = "${@bb.utils.contains_any('IMAGE_FSTYPES', 'wic ' + ' '.join('wic.%s' % c for c in '${CONVERSIONTYPES}'.split()), '1', '', d)}"
+WKS_FILE_CHECKSUM = "${@'${WKS_FULL_PATH}:%s' % os.path.exists('${WKS_FULL_PATH}') if '${USING_WIC}' else ''}"
+do_image_wic[file-checksums] += "${WKS_FILE_CHECKSUM}"
+
+python () {
+    if d.getVar('USING_WIC', True) and 'do_bootimg' in d:
+        bb.build.addtask('do_image_wic', '', 'do_bootimg', d)
+}
+
+python do_write_wks_template () {
+    """Write out expanded template contents to WKS_FULL_PATH."""
+    import re
+
+    template_body = d.getVar('_WKS_TEMPLATE', True)
+
+    # Remove any remnant variable references left behind by the expansion
+    # due to undefined variables
+    expand_var_regexp = re.compile(r"\${[^{}@\n\t :]+}")
+    while True:
+        new_body = re.sub(expand_var_regexp, '', template_body)
+        if new_body == template_body:
+            break
+        else:
+            template_body = new_body
+
+    wks_file = d.getVar('WKS_FULL_PATH', True)
+    with open(wks_file, 'w') as f:
+        f.write(template_body)
+}
+
+python () {
+    if d.getVar('USING_WIC', True):
+        wks_file_u = d.getVar('WKS_FULL_PATH', False)
+        wks_file = d.expand(wks_file_u)
+        base, ext = os.path.splitext(wks_file)
+        if ext == '.in' and os.path.exists(wks_file):
+            wks_out_file = os.path.join(d.getVar('WORKDIR', True), os.path.basename(base))
+            d.setVar('WKS_FULL_PATH', wks_out_file)
+            d.setVar('WKS_TEMPLATE_PATH', wks_file_u)
+            d.setVar('WKS_FILE_CHECKSUM', '${WKS_TEMPLATE_PATH}:True')
+
+            try:
+                with open(wks_file, 'r') as f:
+                    body = f.read()
+            except (IOError, OSError) as exc:
+                pass
+            else:
+                # Previously, I used expandWithRefs to get the dependency list
+                # and add it to WICVARS, but there's no point re-parsing the
+                # file in process_wks_template as well, so just put it in
+                # a variable and let the metadata deal with the deps.
+                d.setVar('_WKS_TEMPLATE', body)
+                bb.build.addtask('do_write_wks_template', 'do_image_wic', None, d)
+}
 
 EXTRA_IMAGECMD = ""
 
@@ -262,25 +322,35 @@
     wic wic.gz wic.bz2 wic.lzma \
 "
 
-COMPRESSIONTYPES = "gz bz2 lzma xz lz4 sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum"
-COMPRESS_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
-COMPRESS_CMD_gz = "gzip -f -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz"
-COMPRESS_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
-COMPRESS_CMD_xz = "xz -f -k -c ${XZ_COMPRESSION_LEVEL} ${XZ_THREADS} --check=${XZ_INTEGRITY_CHECK} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.xz"
-COMPRESS_CMD_lz4 = "lz4c -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.lz4"
-COMPRESS_CMD_sum = "sumtool -i ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sum ${JFFS2_SUM_EXTRA_ARGS}"
-COMPRESS_CMD_md5sum = "md5sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.md5sum"
-COMPRESS_CMD_sha1sum = "sha1sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha1sum"
-COMPRESS_CMD_sha224sum = "sha224sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha224sum"
-COMPRESS_CMD_sha256sum = "sha256sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha256sum"
-COMPRESS_CMD_sha384sum = "sha384sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha384sum"
-COMPRESS_CMD_sha512sum = "sha512sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha512sum"
-COMPRESS_DEPENDS_lzma = "xz-native"
-COMPRESS_DEPENDS_gz = ""
-COMPRESS_DEPENDS_bz2 = "pbzip2-native"
-COMPRESS_DEPENDS_xz = "xz-native"
-COMPRESS_DEPENDS_lz4 = "lz4-native"
-COMPRESS_DEPENDS_sum = "mtd-utils-native"
+# Compression is a special case of conversion. The old variable
+# names are still supported for backward-compatibility. When defining
+# new compression or conversion commands, use CONVERSIONTYPES and
+# CONVERSION_CMD/DEPENDS.
+COMPRESSIONTYPES ?= ""
+
+CONVERSIONTYPES = "gz bz2 lzma xz lz4 zip sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap ${COMPRESSIONTYPES}"
+CONVERSION_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD_gz = "gzip -f -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz"
+CONVERSION_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD_xz = "xz -f -k -c ${XZ_COMPRESSION_LEVEL} ${XZ_THREADS} --check=${XZ_INTEGRITY_CHECK} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.xz"
+CONVERSION_CMD_lz4 = "lz4c -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.lz4"
+CONVERSION_CMD_zip = "zip ${ZIP_COMPRESSION_LEVEL} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.zip ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD_sum = "sumtool -i ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sum ${JFFS2_SUM_EXTRA_ARGS}"
+CONVERSION_CMD_md5sum = "md5sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.md5sum"
+CONVERSION_CMD_sha1sum = "sha1sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha1sum"
+CONVERSION_CMD_sha224sum = "sha224sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha224sum"
+CONVERSION_CMD_sha256sum = "sha256sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha256sum"
+CONVERSION_CMD_sha384sum = "sha384sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha384sum"
+CONVERSION_CMD_sha512sum = "sha512sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha512sum"
+CONVERSION_CMD_bmap = "bmaptool create ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.bmap"
+CONVERSION_DEPENDS_lzma = "xz-native"
+CONVERSION_DEPENDS_gz = ""
+CONVERSION_DEPENDS_bz2 = "pbzip2-native"
+CONVERSION_DEPENDS_xz = "xz-native"
+CONVERSION_DEPENDS_lz4 = "lz4-native"
+CONVERSION_DEPENDS_zip = "zip-native"
+CONVERSION_DEPENDS_sum = "mtd-utils-native"
+CONVERSION_DEPENDS_bmap = "bmap-tools-native"
 
 RUNNABLE_IMAGE_TYPES ?= "ext2 ext3 ext4"
 RUNNABLE_MACHINE_PATTERNS ?= "qemu"
@@ -296,4 +366,4 @@
 
 # The WICVARS variable is used to define list of bitbake variables used in wic code
 # variables from this list is written to <image>.env file
-WICVARS ?= "BBLAYERS DEPLOY_DIR_IMAGE HDDDIR IMAGE_BASENAME IMAGE_BOOT_FILES IMAGE_LINK_NAME IMAGE_ROOTFS INITRAMFS_FSTYPES INITRD ISODIR MACHINE_ARCH ROOTFS_SIZE STAGING_DATADIR STAGING_DIR_NATIVE STAGING_LIBDIR TARGET_SYS"
+WICVARS ?= "BBLAYERS IMGDEPLOYDIR DEPLOY_DIR_IMAGE HDDDIR IMAGE_BASENAME IMAGE_BOOT_FILES IMAGE_LINK_NAME IMAGE_ROOTFS INITRAMFS_FSTYPES INITRD ISODIR MACHINE_ARCH ROOTFS_SIZE STAGING_DATADIR STAGING_DIR_NATIVE STAGING_LIBDIR TARGET_SYS"
diff --git a/import-layers/yocto-poky/meta/classes/image_types_uboot.bbclass b/import-layers/yocto-poky/meta/classes/image_types_uboot.bbclass
index 19e4aa2..6c8c1ff 100644
--- a/import-layers/yocto-poky/meta/classes/image_types_uboot.bbclass
+++ b/import-layers/yocto-poky/meta/classes/image_types_uboot.bbclass
@@ -2,25 +2,25 @@
 
 oe_mkimage () {
     mkimage -A ${UBOOT_ARCH} -O linux -T ramdisk -C $2 -n ${IMAGE_NAME} \
-        -d ${DEPLOY_DIR_IMAGE}/$1 ${DEPLOY_DIR_IMAGE}/$1.u-boot
+        -d ${IMGDEPLOYDIR}/$1 ${IMGDEPLOYDIR}/$1.u-boot
     if [ x$3 = x"clean" ]; then
         rm $1
     fi
 }
 
-COMPRESSIONTYPES += "gz.u-boot bz2.u-boot lzma.u-boot u-boot"
+CONVERSIONTYPES += "gz.u-boot bz2.u-boot lzma.u-boot u-boot"
 
-COMPRESS_DEPENDS_u-boot = "u-boot-mkimage-native"
-COMPRESS_CMD_u-boot      = "oe_mkimage ${IMAGE_NAME}.rootfs.${type} none"
+CONVERSION_DEPENDS_u-boot = "u-boot-mkimage-native"
+CONVERSION_CMD_u-boot      = "oe_mkimage ${IMAGE_NAME}.rootfs.${type} none"
 
-COMPRESS_DEPENDS_gz.u-boot = "u-boot-mkimage-native"
-COMPRESS_CMD_gz.u-boot      = "${COMPRESS_CMD_gz}; oe_mkimage ${IMAGE_NAME}.rootfs.${type}.gz gzip clean"
+CONVERSION_DEPENDS_gz.u-boot = "u-boot-mkimage-native"
+CONVERSION_CMD_gz.u-boot      = "${CONVERSION_CMD_gz}; oe_mkimage ${IMAGE_NAME}.rootfs.${type}.gz gzip clean"
 
-COMPRESS_DEPENDS_bz2.u-boot = "u-boot-mkimage-native"
-COMPRESS_CMD_bz2.u-boot      = "${COMPRESS_CMD_bz2}; oe_mkimage ${IMAGE_NAME}.rootfs.${type}.bz2 bzip2 clean"
+CONVERSION_DEPENDS_bz2.u-boot = "u-boot-mkimage-native"
+CONVERSION_CMD_bz2.u-boot      = "${CONVERSION_CMD_bz2}; oe_mkimage ${IMAGE_NAME}.rootfs.${type}.bz2 bzip2 clean"
 
-COMPRESS_DEPENDS_lzma.u-boot = "u-boot-mkimage-native"
-COMPRESS_CMD_lzma.u-boot      = "${COMPRESS_CMD_lzma}; oe_mkimage ${IMAGE_NAME}.rootfs.${type}.lzma lzma clean"
+CONVERSION_DEPENDS_lzma.u-boot = "u-boot-mkimage-native"
+CONVERSION_CMD_lzma.u-boot      = "${CONVERSION_CMD_lzma}; oe_mkimage ${IMAGE_NAME}.rootfs.${type}.lzma lzma clean"
 
 IMAGE_TYPES += "ext2.u-boot ext2.gz.u-boot ext2.bz2.u-boot ext2.lzma.u-boot ext3.gz.u-boot ext4.gz.u-boot cpio.gz.u-boot"
 
diff --git a/import-layers/yocto-poky/meta/classes/insane.bbclass b/import-layers/yocto-poky/meta/classes/insane.bbclass
index c57b217..1d73778 100644
--- a/import-layers/yocto-poky/meta/classes/insane.bbclass
+++ b/import-layers/yocto-poky/meta/classes/insane.bbclass
@@ -54,8 +54,8 @@
 # feel free to add and correct.
 #
 #           TARGET_OS  TARGET_ARCH   MACHINE, OSABI, ABIVERSION, Little Endian, 32bit?
-def package_qa_get_machine_dict():
-    return {
+def package_qa_get_machine_dict(d):
+    machdata = {
             "darwin9" : { 
                         "arm" :       (40,     0,    0,          True,          32),
                       },
@@ -66,6 +66,8 @@
                         "i586" :      (3,      0,    0,          True,          32),
                         "x86_64":     (62,     0,    0,          True,          64),
                         "epiphany":   (4643,   0,    0,          True,          32),
+                        "mips":       ( 8,     0,    0,          False,         32),
+                        "mipsel":     ( 8,     0,    0,          True,          32),
                       },
             "linux" : { 
                         "aarch64" :   (183,    0,    0,          True,          64),
@@ -87,6 +89,10 @@
                         "mipsel":     ( 8,     0,    0,          True,          32),
                         "mips64":     ( 8,     0,    0,          False,         64),
                         "mips64el":   ( 8,     0,    0,          True,          64),
+                        "mipsisa32r6":   ( 8,  0,    0,          False,         32),
+                        "mipsisa32r6el": ( 8,  0,    0,          True,          32),
+                        "mipsisa64r6":   ( 8,  0,    0,          False,         64),
+                        "mipsisa64r6el": ( 8,  0,    0,          True,          64),
                         "nios2":      (113,    0,    0,          True,          32),
                         "s390":       (22,     0,    0,          False,         32),
                         "sh4":        (42,     0,    0,          True,          32),
@@ -168,18 +174,32 @@
                       },
         }
 
+    # Add in any extra user supplied data which may come from a BSP layer, removing the
+    # need to always change this class directly
+    extra_machdata = (d.getVar("PACKAGEQA_EXTRA_MACHDEFFUNCS", True) or "").split()
+    for m in extra_machdata:
+        call = m + "(machdata, d)"
+        locs = { "machdata" : machdata, "d" : d}
+        machdata = bb.utils.better_eval(call, locs)
 
-def package_qa_clean_path(path,d):
-    """ Remove the common prefix from the path. In this case it is the TMPDIR"""
-    return path.replace(d.getVar("TMPDIR", True) + "/", "")
+    return machdata
+
+
+def package_qa_clean_path(path, d, pkg=None):
+    """
+    Remove redundant paths from the path for display.  If pkg isn't set then
+    TMPDIR is stripped, otherwise PKGDEST/pkg is stripped.
+    """
+    if pkg:
+        path = path.replace(os.path.join(d.getVar("PKGDEST", True), pkg), "/")
+    return path.replace(d.getVar("TMPDIR", True), "/").replace("//", "/")
 
 def package_qa_write_error(type, error, d):
     logfile = d.getVar('QA_LOGFILE', True)
     if logfile:
         p = d.getVar('P', True)
-        f = file( logfile, "a+")
-        print >> f, "%s: %s [%s]" % (p, error, type)
-        f.close()
+        with open(logfile, "a+") as f:
+            f.write("%s: %s [%s]\n" % (p, error, type))
 
 def package_qa_handle_error(error_class, error_msg, d):
     package_qa_write_error(error_class, error_msg, d)
@@ -400,7 +420,7 @@
         sysroot_path_usr = sysroot_path + exec_prefix
 
         try:
-            ldd_output = bb.process.Popen(["prelink-rtld", "--root", sysroot_path, path], stdout=sub.PIPE).stdout.read()
+            ldd_output = bb.process.Popen(["prelink-rtld", "--root", sysroot_path, path], stdout=sub.PIPE).stdout.read().decode("utf-8")
         except bb.process.CmdError:
             error_msg = pn + ": prelink-rtld aborted when processing %s" % path
             package_qa_handle_error("unsafe-references-in-binaries", error_msg, d)
@@ -495,6 +515,8 @@
     """
     Check if archs are compatible
     """
+    import re
+
     if not elf:
         return
 
@@ -520,15 +542,15 @@
 
     #if this will throw an exception, then fix the dict above
     (machine, osabi, abiversion, littleendian, bits) \
-        = package_qa_get_machine_dict()[target_os][target_arch]
+        = package_qa_get_machine_dict(d)[target_os][target_arch]
 
     # Check the architecture and endiannes of the binary
-    if not ((machine == elf.machine()) or \
-        ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == "linux-gnux32" or target_os == "linux-gnun32"))):
-        package_qa_add_message(messages, "arch", "Architecture did not match (%d to %d) on %s" % \
-                 (machine, elf.machine(), package_qa_clean_path(path,d)))
-    elif not ((bits == elf.abiSize()) or  \
-        ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == "linux-gnux32" or target_os == "linux-gnun32"))):
+    is_32 = (("virtual/kernel" in provides) or bb.data.inherits_class("module", d)) and \
+            (target_os == "linux-gnux32" or re.match('mips64.*32', d.getVar('DEFAULTTUNE', True)))
+    if not ((machine == elf.machine()) or is_32):
+        package_qa_add_message(messages, "arch", "Architecture did not match (%s, expected %s) on %s" % \
+                 (oe.qa.elf_machine_to_string(elf.machine()), oe.qa.elf_machine_to_string(machine), package_qa_clean_path(path,d)))
+    elif not ((bits == elf.abiSize()) or is_32):
         package_qa_add_message(messages, "arch", "Bit size did not match (%d to %d) %s on %s" % \
                  (bits, elf.abiSize(), bpn, package_qa_clean_path(path,d)))
     elif not littleendian == elf.isLittleEndian():
@@ -672,23 +694,24 @@
                 trimmed = path.replace(os.path.join (d.getVar("PKGDEST", True), name), "")
                 package_qa_add_message(messages, "symlink-to-sysroot", "Symlink %s in %s points to TMPDIR" % (trimmed, name))
 
-def package_qa_check_license(workdir, d):
+# Check license variables
+do_populate_lic[postfuncs] += "populate_lic_qa_checksum"
+python populate_lic_qa_checksum() {
     """
-    Check for changes in the license files 
+    Check for changes in the license files.
     """
     import tempfile
     sane = True
 
-    lic_files = d.getVar('LIC_FILES_CHKSUM', True)
+    lic_files = d.getVar('LIC_FILES_CHKSUM', True) or ''
     lic = d.getVar('LICENSE', True)
     pn = d.getVar('PN', True)
 
     if lic == "CLOSED":
         return
 
-    if not lic_files:
-        package_qa_handle_error("license-checksum", pn + ": Recipe file does not have license file information (LIC_FILES_CHKSUM)", d)
-        return
+    if not lic_files and d.getVar('SRC_URI', True):
+        sane = package_qa_handle_error("license-checksum", pn + ": Recipe file fetches files and does not have license file information (LIC_FILES_CHKSUM)", d)
 
     srcdir = d.getVar('S', True)
 
@@ -696,7 +719,7 @@
         try:
             (type, host, path, user, pswd, parm) = bb.fetch.decodeurl(url)
         except bb.fetch.MalformedUrl:
-            package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM contains an invalid URL: " + url, d)
+            sane = package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM contains an invalid URL: " + url, d)
             continue
         srclicfile = os.path.join(srcdir, path)
         if not os.path.isfile(srclicfile):
@@ -720,7 +743,7 @@
             linesout = 0
             for line in fi:
                 lineno += 1
-                if (lineno >= beginline): 
+                if (lineno >= beginline):
                     if ((lineno <= endline) or not endline):
                         fo.write(line)
                         linesout += 1
@@ -752,7 +775,11 @@
             else:
                 msg = pn + ": LIC_FILES_CHKSUM is not specified for " +  url
                 msg = msg + "\n" + pn + ": The md5 checksum is " + md5chksum
-            package_qa_handle_error("license-checksum", msg, d)
+            sane = package_qa_handle_error("license-checksum", msg, d)
+
+    if not sane:
+        bb.fatal("Fatal QA errors found, failing task.")
+}
 
 def package_qa_check_staged(path,d):
     """
@@ -984,12 +1011,12 @@
     return sane
 
 def package_qa_check_encoding(keys, encode, d):
-    def check_encoding(key,enc):
+    def check_encoding(key, enc):
         sane = True
         value = d.getVar(key, True)
         if value:
             try:
-                s = unicode(value, enc)
+                s = value.encode(enc)
             except UnicodeDecodeError as e:
                 error_msg = "%s has non %s characters" % (key,enc)
                 sane = False
@@ -1208,12 +1235,6 @@
 Missing inherit gettext?""" % (gt, config))
 
     ###########################################################################
-    # Check license variables
-    ###########################################################################
-
-    package_qa_check_license(workdir, d)
-
-    ###########################################################################
     # Check unrecognised configure options (with a white list)
     ###########################################################################
     if bb.data.inherits_class("autotools", d):
@@ -1221,7 +1242,7 @@
         try:
             flag = "WARNING: unrecognized options:"
             log = os.path.join(d.getVar('B', True), 'config.log')
-            output = subprocess.check_output(['grep', '-F', flag, log]).replace(', ', ' ')
+            output = subprocess.check_output(['grep', '-F', flag, log]).decode("utf-8").replace(', ', ' ')
             options = set()
             for line in output.splitlines():
                 options |= set(line.partition(flag)[2].split())
@@ -1250,10 +1271,9 @@
 }
 
 python do_qa_unpack() {
-    bb.note("Checking has ${S} been created")
-
+    src_uri = d.getVar('SRC_URI', True)
     s_dir = d.getVar('S', True)
-    if not os.path.exists(s_dir):
+    if src_uri and not os.path.exists(s_dir):
         bb.warn('%s: the directory %s (%s) pointed to by the S variable doesn\'t exist - please set S within the recipe to point to where the source has been unpacked to' % (d.getVar('PN', True), d.getVar('S', False), s_dir))
 }
 
@@ -1261,8 +1281,8 @@
 #addtask qa_staging after do_populate_sysroot before do_build
 do_populate_sysroot[postfuncs] += "do_qa_staging "
 
-# Check broken config.log files, for packages requiring Gettext which don't
-# have it in DEPENDS and for correct LIC_FILES_CHKSUM
+# Check broken config.log files, for packages requiring Gettext which
+# don't have it in DEPENDS.
 #addtask qa_configure after do_configure before do_compile
 do_configure[postfuncs] += "do_qa_configure "
 
diff --git a/import-layers/yocto-poky/meta/classes/kernel-arch.bbclass b/import-layers/yocto-poky/meta/classes/kernel-arch.bbclass
index 3ed5986..ea976c6 100644
--- a/import-layers/yocto-poky/meta/classes/kernel-arch.bbclass
+++ b/import-layers/yocto-poky/meta/classes/kernel-arch.bbclass
@@ -14,7 +14,7 @@
                parisc s390  v850 \
                avr32 blackfin \
                microblaze \
-               nios2"
+               nios2 arc xtensa"
 
 def map_kernel_arch(a, d):
     import re
@@ -25,7 +25,7 @@
     elif re.match('armeb$', a):                 return 'arm'
     elif re.match('aarch64$', a):               return 'arm64'
     elif re.match('aarch64_be$', a):            return 'arm64'
-    elif re.match('mips(el|64|64el)$', a):      return 'mips'
+    elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a):      return 'mips'
     elif re.match('p(pc|owerpc)(|64)', a):      return 'powerpc'
     elif re.match('sh(3|4)$', a):               return 'sh'
     elif re.match('bfin', a):                   return 'blackfin'
diff --git a/import-layers/yocto-poky/meta/classes/kernel-fitimage.bbclass b/import-layers/yocto-poky/meta/classes/kernel-fitimage.bbclass
index 332384d..05be1f0 100644
--- a/import-layers/yocto-poky/meta/classes/kernel-fitimage.bbclass
+++ b/import-layers/yocto-poky/meta/classes/kernel-fitimage.bbclass
@@ -1,4 +1,4 @@
-inherit kernel-uboot
+inherit kernel-uboot uboot-sign
 
 python __anonymous () {
     kerneltypes = d.getVar('KERNEL_IMAGETYPES', True) or ""
@@ -7,17 +7,28 @@
         depends = "%s u-boot-mkimage-native dtc-native" % depends
         d.setVar("DEPENDS", depends)
 
+        if d.getVar("UBOOT_ARCH", True) == "x86":
+            replacementtype = "bzImage"
+        else:
+            replacementtype = "zImage"
+
 	# Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
 	# to kernel.bbclass . We have to override it, since we pack zImage
 	# (at least for now) into the fitImage .
         typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or ""
         if 'fitImage' in typeformake.split():
-            d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('fitImage', 'zImage'))
+            d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('fitImage', replacementtype))
 
         image = d.getVar('INITRAMFS_IMAGE', True)
         if image:
             d.appendVarFlag('do_assemble_fitimage_initramfs', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
 
+        # Verified boot will sign the fitImage and append the public key to
+        # U-boot dtb. We ensure the U-Boot dtb is deployed before assembling
+        # the fitImage:
+        if d.getVar('UBOOT_SIGN_ENABLE', True):
+            uboot_pn = d.getVar('PREFERRED_PROVIDER_u-boot', True) or 'u-boot'
+            d.appendVarFlag('do_assemble_fitimage', 'depends', ' %s:do_deploy' % uboot_pn)
 }
 
 # Options for the device tree compiler passed to mkimage '-D' feature:
@@ -132,6 +143,33 @@
 }
 
 #
+# Emit the fitImage ITS setup section
+#
+# $1 ... .its filename
+# $2 ... Image counter
+# $3 ... Path to setup image
+fitimage_emit_section_setup() {
+
+	setup_csum="sha1"
+
+	cat << EOF >> ${1}
+                setup@${2} {
+                        description = "Linux setup.bin";
+                        data = /incbin/("${3}");
+                        type = "x86_setup";
+                        arch = "${UBOOT_ARCH}";
+                        os = "linux";
+                        compression = "none";
+                        load = <0x00090000>;
+                        entry = <0x00090000>;
+                        hash@1 {
+                                algo = "${setup_csum}";
+                        };
+                };
+EOF
+}
+
+#
 # Emit the fitImage ITS ramdisk section
 #
 # $1 ... .its filename
@@ -193,29 +231,34 @@
 # $2 ... Linux kernel ID
 # $3 ... DTB image ID
 # $4 ... ramdisk ID
+# $5 ... config ID
 fitimage_emit_section_config() {
 
 	conf_csum="sha1"
+	if [ -n "${UBOOT_SIGN_ENABLE}" ] ; then
+		conf_sign_keyname="${UBOOT_SIGN_KEYNAME}"
+	fi
 
 	# Test if we have any DTBs at all
-	if [ -z "${3}" -a -z "${4}" ] ; then
-		conf_desc="Boot Linux kernel"
-		fdt_line=""
-		ramdisk_line=""
-	elif [ -z "${4}" ]; then
-		conf_desc="Boot Linux kernel with FDT blob"
+	conf_desc="Linux kernel"
+	kernel_line="kernel = \"kernel@${2}\";"
+	fdt_line=""
+	ramdisk_line=""
+
+	if [ -n "${3}" ]; then
+		conf_desc="${conf_desc}, FDT blob"
 		fdt_line="fdt = \"fdt@${3}\";"
-		ramdisk_line=""
-	elif [ -z "${3}" ]; then
-		conf_desc="Boot Linux kernel with ramdisk"
-		fdt_line=""
-		ramdisk_line="ramdisk = \"ramdisk@${4}\";"
-	else
-		conf_desc="Boot Linux kernel with FDT blob, ramdisk"
-		fdt_line="fdt = \"fdt@${3}\";"
+	fi
+
+	if [ -n "${4}" ]; then
+		conf_desc="${conf_desc}, ramdisk"
 		ramdisk_line="ramdisk = \"ramdisk@${4}\";"
 	fi
-	kernel_line="kernel = \"kernel@${2}\";"
+
+	if [ -n "${5}" ]; then
+		conf_desc="${conf_desc}, setup"
+		setup_line="setup = \"setup@${5}\";"
+	fi
 
 	cat << EOF >> ${1}
                 default = "conf@1";
@@ -224,9 +267,40 @@
 			${kernel_line}
 			${fdt_line}
 			${ramdisk_line}
+			${setup_line}
                         hash@1 {
                                 algo = "${conf_csum}";
                         };
+EOF
+
+	if [ ! -z "${conf_sign_keyname}" ] ; then
+
+		sign_line="sign-images = \"kernel\""
+
+		if [ -n "${3}" ]; then
+			sign_line="${sign_line}, \"fdt\""
+		fi
+
+		if [ -n "${4}" ]; then
+			sign_line="${sign_line}, \"ramdisk\""
+		fi
+
+		if [ -n "${5}" ]; then
+			sign_line="${sign_line}, \"setup\""
+		fi
+
+		sign_line="${sign_line};"
+
+		cat << EOF >> ${1}
+                        signature@1 {
+                                algo = "${conf_csum},rsa2048";
+                                key-name-hint = "${conf_sign_keyname}";
+				${sign_line}
+                        };
+EOF
+	fi
+
+	cat << EOF >> ${1}
                 };
 EOF
 }
@@ -241,6 +315,7 @@
 	kernelcount=1
 	dtbcount=""
 	ramdiskcount=${3}
+	setupcount=""
 	rm -f ${1} arch/${ARCH}/boot/${2}
 
 	fitimage_emit_fit_header ${1}
@@ -274,7 +349,15 @@
 	fi
 
 	#
-	# Step 3: Prepare a ramdisk section.
+	# Step 3: Prepare a setup section. (For x86)
+	#
+	if test -e arch/${ARCH}/boot/setup.bin ; then
+		setupcount=1
+		fitimage_emit_section_setup ${1} "${setupcount}" arch/${ARCH}/boot/setup.bin
+	fi
+
+	#
+	# Step 4: Prepare a ramdisk section.
 	#
 	if [ "x${ramdiskcount}" = "x1" ] ; then
 		# Find and use the first initramfs image archive type we find
@@ -292,26 +375,39 @@
 
 	# Force the first Kernel and DTB in the default config
 	kernelcount=1
-	dtbcount=1
+	if test -n "${dtbcount}"; then
+		dtbcount=1
+	fi
 
 	#
-	# Step 4: Prepare a configurations section
+	# Step 5: Prepare a configurations section
 	#
 	fitimage_emit_section_maint ${1} confstart
 
-	fitimage_emit_section_config ${1} ${kernelcount} ${dtbcount} ${ramdiskcount}
+	fitimage_emit_section_config ${1} "${kernelcount}" "${dtbcount}" "${ramdiskcount}" "${setupcount}"
 
 	fitimage_emit_section_maint ${1} sectend
 
 	fitimage_emit_section_maint ${1} fitend
 
 	#
-	# Step 5: Assemble the image
+	# Step 6: Assemble the image
 	#
 	uboot-mkimage \
 		${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
 		-f ${1} \
 		arch/${ARCH}/boot/${2}
+
+	#
+	# Step 7: Sign the image and add public key to U-Boot dtb
+	#
+	if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then
+		uboot-mkimage \
+			${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
+			-F -k "${UBOOT_SIGN_KEYDIR}" \
+			-K "${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_BINARY}" \
+			-r arch/${ARCH}/boot/${2}
+	fi
 }
 
 do_assemble_fitimage() {
diff --git a/import-layers/yocto-poky/meta/classes/kernel-module-split.bbclass b/import-layers/yocto-poky/meta/classes/kernel-module-split.bbclass
index e1a70e6..08d2262 100644
--- a/import-layers/yocto-poky/meta/classes/kernel-module-split.bbclass
+++ b/import-layers/yocto-poky/meta/classes/kernel-module-split.bbclass
@@ -30,16 +30,12 @@
 
 KERNEL_MODULES_META_PACKAGE ?= "kernel-modules"
 
+KERNEL_MODULE_PACKAGE_PREFIX ?= ""
+
 python split_kernel_module_packages () {
     import re
 
     modinfoexp = re.compile("([^=]+)=(.*)")
-    kerverrexp = re.compile('^(.*-hh.*)[\.\+].*$')
-    depmodpat0 = re.compile("^(.*\.k?o):..*$")
-    depmodpat1 = re.compile("^(.*\.k?o):\s*(.*\.k?o)\s*$")
-    depmodpat2 = re.compile("^(.*\.k?o):\s*(.*\.k?o)\s*\\\$")
-    depmodpat3 = re.compile("^\t(.*\.k?o)\s*\\\$")
-    depmodpat4 = re.compile("^\t(.*\.k?o)\s*$")
 
     def extract_modinfo(file):
         import tempfile, subprocess
@@ -61,68 +57,6 @@
             vals[m.group(1)] = m.group(2)
         return vals
 
-    def parse_depmod():
-
-        dvar = d.getVar('PKGD', True)
-
-        kernelver = d.getVar('KERNEL_VERSION', True)
-        kernelver_stripped = kernelver
-        m = kerverrexp.match(kernelver)
-        if m:
-            kernelver_stripped = m.group(1)
-        staging_kernel_dir = d.getVar("STAGING_KERNEL_BUILDDIR", True)
-        system_map_file = "%s/boot/System.map-%s" % (dvar, kernelver)
-        if not os.path.exists(system_map_file):
-            system_map_file = "%s/System.map-%s" % (staging_kernel_dir, kernelver)
-            if not os.path.exists(system_map_file):
-                bb.fatal("System.map-%s does not exist in '%s/boot' nor STAGING_KERNEL_BUILDDIR '%s'" % (kernelver, dvar, staging_kernel_dir))
-
-        cmd = "depmod -n -a -b %s -F %s %s" % (dvar, system_map_file, kernelver_stripped)
-        f = os.popen(cmd, 'r')
-
-        deps = {}
-        line = f.readline()
-        while line:
-            if not depmodpat0.match(line):
-                line = f.readline()
-                continue
-            m1 = depmodpat1.match(line)
-            if m1:
-                deps[m1.group(1)] = m1.group(2).split()
-            else:
-                m2 = depmodpat2.match(line)
-                if m2:
-                    deps[m2.group(1)] = m2.group(2).split()
-                    line = f.readline()
-                    m3 = depmodpat3.match(line)
-                    while m3:
-                        deps[m2.group(1)].extend(m3.group(1).split())
-                        line = f.readline()
-                        m3 = depmodpat3.match(line)
-                    m4 = depmodpat4.match(line)
-                    deps[m2.group(1)].extend(m4.group(1).split())
-            line = f.readline()
-        f.close()
-        return deps
-
-    def get_dependencies(file, pattern, format):
-        # file no longer includes PKGD
-        file = file.replace(d.getVar('PKGD', True) or '', '', 1)
-        # instead is prefixed with /lib/modules/${KERNEL_VERSION}
-        file = file.replace("/lib/modules/%s/" % d.getVar('KERNEL_VERSION', True) or '', '', 1)
-
-        if file in module_deps:
-            dependencies = []
-            for i in module_deps[file]:
-                m = re.match(pattern, os.path.basename(i))
-                if not m:
-                    continue
-                on = legitimize_package_name(m.group(1))
-                dependency_pkg = format % on
-                dependencies.append(dependency_pkg)
-            return dependencies
-        return []
-
     def frob_metadata(file, pkg, pattern, format, basename):
         vals = extract_modinfo(file)
 
@@ -171,7 +105,13 @@
             d.setVar('DESCRIPTION_' + pkg, old_desc + "; " + vals["description"])
 
         rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS_' + pkg, True) or "")
-        for dep in get_dependencies(file, pattern, format):
+        modinfo_deps = []
+        if "depends" in vals and vals["depends"] != "":
+            for dep in vals["depends"].split(","):
+                on = legitimize_package_name(dep)
+                dependency_pkg = format % on
+                modinfo_deps.append(dependency_pkg)
+        for dep in modinfo_deps:
             if not dep in rdepends:
                 rdepends[dep] = []
         d.setVar('RDEPENDS_' + pkg, bb.utils.join_deps(rdepends, commasep=False))
@@ -179,9 +119,10 @@
         # Avoid automatic -dev recommendations for modules ending with -dev.
         d.setVarFlag('RRECOMMENDS_' + pkg, 'nodeprrecs', 1)
 
-    module_deps = parse_depmod()
     module_regex = '^(.*)\.k?o$'
-    module_pattern = 'kernel-module-%s'
+
+    module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX', True)
+    module_pattern = module_pattern_prefix + 'kernel-module-%s'
 
     postinst = d.getVar('pkg_postinst_modules', True)
     postrm = d.getVar('pkg_postrm_modules', True)
diff --git a/import-layers/yocto-poky/meta/classes/kernel-uimage.bbclass b/import-layers/yocto-poky/meta/classes/kernel-uimage.bbclass
index 2a187f5..340503a 100644
--- a/import-layers/yocto-poky/meta/classes/kernel-uimage.bbclass
+++ b/import-layers/yocto-poky/meta/classes/kernel-uimage.bbclass
@@ -14,8 +14,7 @@
         if d.getVar("KEEPUIMAGE", True) != 'yes':
             typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or ""
             if "uImage" in typeformake.split():
-                typeformake.replace('uImage', 'vmlinux')
-            d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
+                d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('uImage', 'vmlinux'))
 }
 
 do_uboot_mkimage() {
diff --git a/import-layers/yocto-poky/meta/classes/kernel-yocto.bbclass b/import-layers/yocto-poky/meta/classes/kernel-yocto.bbclass
index f86b3ef..6160a29 100644
--- a/import-layers/yocto-poky/meta/classes/kernel-yocto.bbclass
+++ b/import-layers/yocto-poky/meta/classes/kernel-yocto.bbclass
@@ -1,5 +1,7 @@
 # remove tasks that modify the source tree in case externalsrc is inherited
-SRCTREECOVEREDTASKS += "do_kernel_configme do_validate_branches do_kernel_configcheck do_kernel_checkout do_shared_workdir do_fetch do_unpack do_patch"
+SRCTREECOVEREDTASKS += "do_kernel_configme do_validate_branches do_kernel_configcheck do_kernel_checkout do_fetch do_unpack do_patch"
+PATCH_GIT_USER_EMAIL ?= "kernel-yocto@oe"
+PATCH_GIT_USER_NAME ?= "OpenEmbedded"
 
 # returns local (absolute) path names for all valid patches in the
 # src_uri
@@ -119,72 +121,54 @@
 	patches="${@" ".join(find_patches(d))}"
 	feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}"
 
-	# add any explicitly referenced features onto the end of the feature
-	# list that is passed to the kernel build scripts.
-	if [ -n "${KERNEL_FEATURES}" ]; then
-		for feat in ${KERNEL_FEATURES}; do
-			addon_features="$addon_features --feature $feat"
-		done
-	fi
-
 	# check for feature directories/repos/branches that were part of the
 	# SRC_URI. If they were supplied, we convert them into include directives
 	# for the update part of the process
-	if [ -n "${feat_dirs}" ]; then
-	    for f in ${feat_dirs}; do
+	for f in ${feat_dirs}; do
 		if [ -d "${WORKDIR}/$f/meta" ]; then
-		    includes="$includes -I${WORKDIR}/$f/meta"
-		elif [ -d "${WORKDIR}/$f" ]; then
-		    includes="$includes -I${WORKDIR}/$f"
+			includes="$includes -I${WORKDIR}/$f/kernel-meta"
+	        elif [ -d "${WORKDIR}/$f" ]; then
+			includes="$includes -I${WORKDIR}/$f"
 		fi
-	    done
+	done
+	for s in ${sccs} ${patches}; do
+		sdir=$(dirname $s)
+		includes="$includes -I${sdir}"
+                # if a SRC_URI passed patch or .scc has a subdir of "kernel-meta",
+                # then we add it to the search path
+                if [ -d "${sdir}/kernel-meta" ]; then
+			includes="$includes -I${sdir}/kernel-meta"
+                fi
+	done
+
+	# expand kernel features into their full path equivalents
+	bsp_definition=$(spp ${includes} --find -DKMACHINE=${KMACHINE} -DKTYPE=${LINUX_KERNEL_TYPE})
+	meta_dir=$(kgit --meta)
+
+	# run1: pull all the configuration fragments, no matter where they come from
+	elements="`echo -n ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}`"
+	if [ -n "${elements}" ]; then
+		scc --force -o ${S}/${meta_dir}:cfg,meta ${includes} ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}
 	fi
 
-	# updates or generates the target description
-	updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \
-                         ${includes} ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches}
-	if [ $? -ne 0 ]; then
-		bbfatal_log "Could not update ${machine_branch}"
+	# run2: only generate patches for elements that have been passed on the SRC_URI
+	elements="`echo -n ${sccs} ${patches} ${KERNEL_FEATURES}`"
+	if [ -n "${elements}" ]; then
+		scc --force -o ${S}/${meta_dir}:patch --cmds patch ${includes} ${sccs} ${patches} ${KERNEL_FEATURES}
 	fi
 }
 
 do_patch() {
 	cd ${S}
 
-	# executes and modifies the source tree as required
-	patchme ${KMACHINE}
-	if [ $? -ne 0 ]; then
-		bberror "Could not apply patches for ${KMACHINE}."
-		bbfatal_log "Patch failures can be resolved in the linux source directory ${S})"
-	fi
-
-	# check to see if the specified SRCREV is reachable from the final branch.
-	# if it wasn't something wrong has happened, and we should error.
-	machine_srcrev="${SRCREV_machine}"
-	if [ -z "${machine_srcrev}" ]; then
-		# fallback to SRCREV if a non machine_meta tree is being built
-		machine_srcrev="${SRCREV}"
-		# if SRCREV cannot be reached something is wrong.
-		if [ -z "${machine_srcrev}" ]; then
-			bbfatal "Neither SRCREV_machine or SRCREV was specified!"
-		fi
-	fi
-
-        current_branch=`git rev-parse --abbrev-ref HEAD`
-        machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}"
-        if [ "${current_branch}" != "${machine_branch}" ]; then
-            bbwarn "After meta data application, the kernel tree branch is ${current_branch}. The"
-            bbwarn "SRC_URI specified branch ${machine_branch}. The branch will be forced to ${machine_branch},"
-            bbwarn "but this means the board meta data (.scc files) do not match the SRC_URI specification."
-            bbwarn "The meta data and branch ${machine_branch} should be inspected to ensure the proper"
-            bbwarn "kernel is being built."
-            git checkout -f ${machine_branch}
-        fi
-
-	if [ "${machine_srcrev}" != "AUTOINC" ]; then
-		if ! [ "$(git rev-parse --verify ${machine_srcrev}~0)" = "$(git merge-base ${machine_srcrev} HEAD)" ]; then
-			bberror "SRCREV ${machine_srcrev} was specified, but is not reachable"
-			bbfatal "Check the BSP description for incorrect branch selection, or other errors."
+	check_git_config
+	meta_dir=$(kgit --meta)
+	(cd ${meta_dir}; ln -sf patch.queue series)
+	if [ -f "${meta_dir}/series" ]; then
+		kgit-s2q --gen -v --patches .kernel-meta/
+		if [ $? -ne 0 ]; then
+			bberror "Could not apply patches for ${KMACHINE}."
+			bbfatal_log "Patch failures can be resolved in the linux source directory ${S})"
 		fi
 	fi
 }
@@ -253,26 +237,37 @@
 
 do_kernel_configme[dirs] += "${S} ${B}"
 do_kernel_configme() {
-	bbnote "kernel configme"
-	export KMETA=${KMETA}
+	set +e
 
-	if [ -n "${KCONFIG_MODE}" ]; then
-		configmeflags=${KCONFIG_MODE}
-	else
-		# If a defconfig was passed, use =n as the baseline, which is achieved
-		# via --allnoconfig
+	# translate the kconfig_mode into something that merge_config.sh
+	# understands
+	case ${KCONFIG_MODE} in
+		*allnoconfig)
+			config_flags="-n"
+			;;
+		*alldefconfig)
+			config_flags=""
+			;;
+	    *)
 		if [ -f ${WORKDIR}/defconfig ]; then
-			configmeflags="--allnoconfig"
+			config_flags="-n"
 		fi
-	fi
+	    ;;
+	esac
 
 	cd ${S}
-	PATH=${PATH}:${S}/scripts/util
-	configme ${configmeflags} --reconfig --output ${B} ${LINUX_KERNEL_TYPE} ${KMACHINE}
+
+	meta_dir=$(kgit --meta)
+	configs="$(scc --configs -o ${meta_dir})"
+	if [ -z "${configs}" ]; then
+		bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)"
+	fi
+
+	CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}"	ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
 	if [ $? -ne 0 ]; then
 		bbfatal_log "Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}"
 	fi
-	
+
 	echo "# Global settings from linux recipe" >> ${B}/.config
 	echo "CONFIG_LOCALVERSION="\"${LINUX_VERSION_EXTENSION}\" >> ${B}/.config
 }
@@ -290,36 +285,23 @@
         kmeta = "." + kmeta
 
     pathprefix = "export PATH=%s:%s; " % (d.getVar('PATH', True), "${S}/scripts/util/")
-    cmd = d.expand("cd ${S}; kconf_check -config %s/meta-series ${S} ${B}" % kmeta)
+
+    cmd = d.expand("scc --configs -o ${S}/.kernel-meta")
+    ret, configs = oe.utils.getstatusoutput("%s%s" % (pathprefix, cmd))
+
+    cmd = d.expand("cd ${S}; kconf_check --report -o ${S}/%s/cfg/ ${B}/.config ${S} %s" % (kmeta,configs))
     ret, result = oe.utils.getstatusoutput("%s%s" % (pathprefix, cmd))
 
     config_check_visibility = int(d.getVar( "KCONF_AUDIT_LEVEL", True ) or 0)
     bsp_check_visibility = int(d.getVar( "KCONF_BSP_AUDIT_LEVEL", True ) or 0)
 
     # if config check visibility is non-zero, report dropped configuration values
-    mismatch_file = "${S}/" + kmeta + "/" + "mismatch.cfg"
+    mismatch_file = d.expand("${S}/%s/cfg/mismatch.txt" % kmeta)
     if os.path.exists(mismatch_file):
         if config_check_visibility:
             with open (mismatch_file, "r") as myfile:
                 results = myfile.read()
                 bb.warn( "[kernel config]: specified values did not make it into the kernel's final configuration:\n\n%s" % results)
-
-    # if config check visibility is level 2 or higher, report non-hardware options
-    nonhw_file = "${S}/" + kmeta + "/" + "nonhw_report.cfg"
-    if os.path.exists(nonhw_file):
-        if config_check_visibility > 1:
-            with open (nonhw_file, "r") as myfile:
-                results = myfile.read()
-                bb.warn( "[kernel config]: BSP specified non-hw configuration:\n\n%s" % results)
-
-    bsp_desc = "${S}/" + kmeta + "/" + "top_tgt"
-    if os.path.exists(bsp_desc) and bsp_check_visibility > 1:
-        with open (bsp_desc, "r") as myfile:
-            bsp_tgt = myfile.read()
-            m = re.match("^(.*)scratch.obj(.*)$", bsp_tgt)
-            if not m is None:
-                bb.warn( "[kernel]: An auto generated BSP description was used, this normally indicates a misconfiguration.\n" +
-                         "Check that your machine (%s) has an associated kernel description." % "${MACHINE}" )
 }
 
 # Ensure that the branches (BSP and meta) are on the locations specified by
diff --git a/import-layers/yocto-poky/meta/classes/kernel.bbclass b/import-layers/yocto-poky/meta/classes/kernel.bbclass
index e7e2cb3..25a153c 100644
--- a/import-layers/yocto-poky/meta/classes/kernel.bbclass
+++ b/import-layers/yocto-poky/meta/classes/kernel.bbclass
@@ -1,7 +1,7 @@
 inherit linux-kernel-base kernel-module-split
 
 PROVIDES += "virtual/kernel"
-DEPENDS += "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc kmod-native depmodwrapper-cross bc-native"
+DEPENDS += "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc kmod-native depmodwrapper-cross bc-native lzop-native"
 
 S = "${STAGING_KERNEL_DIR}"
 B = "${WORKDIR}/build"
@@ -127,9 +127,9 @@
 export OS = "${TARGET_OS}"
 export CROSS_COMPILE = "${TARGET_PREFIX}"
 
-KERNEL_PRIORITY ?= "${@int(d.getVar('PV',1).split('-')[0].split('+')[0].split('.')[0]) * 10000 + \
-                       int(d.getVar('PV',1).split('-')[0].split('+')[0].split('.')[1]) * 100 + \
-                       int(d.getVar('PV',1).split('-')[0].split('+')[0].split('.')[-1])}"
+KERNEL_PRIORITY ?= "${@int(d.getVar('PV', True).split('-')[0].split('+')[0].split('.')[0]) * 10000 + \
+                       int(d.getVar('PV', True).split('-')[0].split('+')[0].split('.')[1]) * 100 + \
+                       int(d.getVar('PV', True).split('-')[0].split('+')[0].split('.')[-1])}"
 
 KERNEL_RELEASE ?= "${KERNEL_VERSION}"
 
@@ -140,7 +140,7 @@
 #
 # configuration
 #
-export CMDLINE_CONSOLE = "console=${@d.getVar("KERNEL_CONSOLE",1) or "ttyS0"}"
+export CMDLINE_CONSOLE = "console=${@d.getVar("KERNEL_CONSOLE", True) or "ttyS0"}"
 
 KERNEL_VERSION = "${@get_kernelversion_headers('${B}')}"
 
@@ -156,10 +156,7 @@
 # Some Linux kernel configurations need additional parameters on the command line
 KERNEL_EXTRA_ARGS ?= ""
 
-# For the kernel, we don't want the '-e MAKEFLAGS=' in EXTRA_OEMAKE.
-# We don't want to override kernel Makefile variables from the environment
-EXTRA_OEMAKE = ""
-
+EXTRA_OEMAKE = " HOSTCC="${BUILD_CC}" HOSTCPP="${BUILD_CPP}""
 KERNEL_ALT_IMAGETYPE ??= ""
 
 copy_initramfs() {
@@ -203,7 +200,7 @@
 	echo "Finished copy of initramfs into ./usr"
 }
 
-INITRAMFS_BASE_NAME = "initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"
+INITRAMFS_BASE_NAME ?= "initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"
 INITRAMFS_BASE_NAME[vardepsexclude] = "DATETIME"
 do_bundle_initramfs () {
 	if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
@@ -232,8 +229,7 @@
 			if [ -n "$realpath" ]; then
 				mv -f $realpath $realpath.initramfs
 				mv -f $realpath.bak $realpath
-				cd ${B}/${KERNEL_OUTPUT_DIR}
-				ln -sf $linkpath.initramfs
+				ln -sf $linkpath.initramfs ${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs
 			else
 				mv -f ${KERNEL_OUTPUT_DIR}/$type ${KERNEL_OUTPUT_DIR}/$type.initramfs
 				mv -f ${KERNEL_OUTPUT_DIR}/$type.bak ${KERNEL_OUTPUT_DIR}/$type
@@ -247,6 +243,7 @@
 		done
 	fi
 }
+do_bundle_initramfs[dirs] = "${B}"
 
 python do_devshell_prepend () {
     os.environ["LDFLAGS"] = ''
@@ -291,7 +288,7 @@
 		# external kernel modules has a dependency on
 		# other kernel modules and will look at this
 		# file to do symbol lookups
-		cp Module.symvers ${STAGING_KERNEL_BUILDDIR}/
+		cp ${B}/Module.symvers ${STAGING_KERNEL_BUILDDIR}/
 	else
 		bbnote "no modules to compile"
 	fi
@@ -330,6 +327,36 @@
 }
 do_install[prefuncs] += "package_get_auto_pr"
 
+# Must be ran no earlier than after do_kernel_checkout or else Makefile won't be in ${S}/Makefile
+do_kernel_version_sanity_check() {
+	# The Makefile determines the kernel version shown at runtime
+	# Don't use KERNEL_VERSION because the headers it grabs the version from aren't generated until do_compile
+	VERSION=$(grep "^VERSION =" ${S}/Makefile | sed s/.*=\ *//)
+	PATCHLEVEL=$(grep "^PATCHLEVEL =" ${S}/Makefile | sed s/.*=\ *//)
+	SUBLEVEL=$(grep "^SUBLEVEL =" ${S}/Makefile | sed s/.*=\ *//)
+	EXTRAVERSION=$(grep "^EXTRAVERSION =" ${S}/Makefile | sed s/.*=\ *//)
+
+	# Build a string for regex and a plain version string
+	reg="^${VERSION}\.${PATCHLEVEL}"
+	vers="${VERSION}.${PATCHLEVEL}"
+	if [ -n "${SUBLEVEL}" ]; then
+		# Ignoring a SUBLEVEL of zero is fine
+		if [ "${SUBLEVEL}" = "0" ]; then
+			reg="${reg}(\.${SUBLEVEL})?"
+		else
+			reg="${reg}\.${SUBLEVEL}"
+			vers="${vers}.${SUBLEVEL}"
+		fi
+	fi
+	vers="${vers}${EXTRAVERSION}"
+	reg="${reg}${EXTRAVERSION}"
+
+	if [ -z `echo ${PV} | grep -E "${reg}"` ]; then
+		bbfatal "Package Version (${PV}) does not match of kernel being built (${vers}). Please update the PV variable to match the kernel source."
+	fi
+	exit 0
+}
+
 addtask shared_workdir after do_compile before do_compile_kernelmodules
 addtask shared_workdir_setscene
 
@@ -364,6 +391,14 @@
 	cp .config $kerneldir/
 	mkdir -p $kerneldir/include/config
 	cp include/config/kernel.release $kerneldir/include/config/kernel.release
+	if [ -e certs/signing_key.pem ]; then
+		# The signing_key.* files are stored in the certs/ dir in
+		# newer Linux kernels
+		mkdir -p $kerneldir/certs
+		cp certs/signing_key.* $kerneldir/certs/
+	elif [ -e signing_key.priv ]; then
+		cp signing_key.* $kerneldir/
+	fi
 
 	# We can also copy over all the generated files and avoid special cases
 	# like version.h, but we've opted to keep this small until file creep starts
@@ -434,6 +469,7 @@
 }
 
 do_savedefconfig() {
+	bbplain "Saving defconfig to:\n${B}/defconfig"
 	oe_runmake -C ${B} savedefconfig
 }
 do_savedefconfig[nostamp] = "1"
@@ -484,15 +520,18 @@
 }
 
 # Many scripts want to look in arch/$arch/boot for the bootable
-# image. This poses a problem for vmlinux based booting. This 
-# task arranges to have vmlinux appear in the normalized directory
-# location.
-do_kernel_link_vmlinux() {
+# image. This poses a problem for vmlinux and vmlinuz based
+# booting. This task arranges to have vmlinux and vmlinuz appear
+# in the normalized directory location.
+do_kernel_link_images() {
 	if [ ! -d "${B}/arch/${ARCH}/boot" ]; then
 		mkdir ${B}/arch/${ARCH}/boot
 	fi
 	cd ${B}/arch/${ARCH}/boot
 	ln -sf ../../../vmlinux
+	if [ -f ../../../vmlinuz ]; then
+		ln -sf ../../../vmlinuz
+	fi
 }
 
 do_strip() {
@@ -522,7 +561,7 @@
 }
 do_strip[dirs] = "${B}"
 
-addtask do_strip before do_sizecheck after do_kernel_link_vmlinux
+addtask do_strip before do_sizecheck after do_kernel_link_images
 
 # Support checking the kernel size since some kernels need to reside in partitions
 # with a fixed length or there is a limit in transferring the kernel to memory
@@ -583,8 +622,7 @@
 			initramfs_base_name=${type}-${INITRAMFS_BASE_NAME}
 			initramfs_symlink_name=${type}-initramfs-${MACHINE}
 			install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}.initramfs ${DEPLOYDIR}/${initramfs_base_name}.bin
-			cd ${DEPLOYDIR}
-			ln -sf ${initramfs_base_name}.bin ${initramfs_symlink_name}.bin
+			ln -sf ${initramfs_base_name}.bin ${DEPLOYDIR}/${initramfs_symlink_name}.bin
 		fi
 	done
 }
@@ -595,4 +633,3 @@
 addtask deploy after do_populate_sysroot
 
 EXPORT_FUNCTIONS do_deploy
-
diff --git a/import-layers/yocto-poky/meta/classes/libc-common.bbclass b/import-layers/yocto-poky/meta/classes/libc-common.bbclass
index bbc8016..11b0065 100644
--- a/import-layers/yocto-poky/meta/classes/libc-common.bbclass
+++ b/import-layers/yocto-poky/meta/classes/libc-common.bbclass
@@ -4,14 +4,12 @@
 		h=`echo $r|sed -e's,\.x$,.h,'`
 		install -m 0644 ${S}/sunrpc/rpcsvc/$h ${D}/${includedir}/rpcsvc/
 	done
-	install -d ${D}/${sysconfdir}/ 
-	install -m 0644 ${WORKDIR}/etc/ld.so.conf ${D}/${sysconfdir}/
+	install -Dm 0644 ${WORKDIR}/etc/ld.so.conf ${D}/${sysconfdir}/ld.so.conf
 	install -d ${D}${localedir}
 	make -f ${WORKDIR}/generate-supported.mk IN="${S}/localedata/SUPPORTED" OUT="${WORKDIR}/SUPPORTED"
 	# get rid of some broken files...
 	for i in ${GLIBC_BROKEN_LOCALES}; do
-		grep -v $i ${WORKDIR}/SUPPORTED > ${WORKDIR}/SUPPORTED.tmp
-		mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED
+		sed -i "/$i/d" ${WORKDIR}/SUPPORTED
 	done
 	rm -f ${D}${sysconfdir}/rpc
 	rm -rf ${D}${datadir}/zoneinfo
diff --git a/import-layers/yocto-poky/meta/classes/libc-package.bbclass b/import-layers/yocto-poky/meta/classes/libc-package.bbclass
index 467d567..2dc90c4 100644
--- a/import-layers/yocto-poky/meta/classes/libc-package.bbclass
+++ b/import-layers/yocto-poky/meta/classes/libc-package.bbclass
@@ -47,15 +47,6 @@
 
 OVERRIDES_append = ":${TARGET_ARCH}-${TARGET_OS}"
 
-do_configure_prepend() {
-        if [ -e ${S}/elf/ldd.bash.in ]; then
-                sed -e "s#@BASH@#/bin/sh#" -i ${S}/elf/ldd.bash.in
-        fi
-}
-
-
-
-# indentation removed on purpose
 locale_base_postinst() {
 #!/bin/sh
 
@@ -63,33 +54,14 @@
 	exit 1
 fi
 
-rm -rf ${TMP_LOCALE}
-mkdir -p ${TMP_LOCALE}
-if [ -f ${localedir}/locale-archive ]; then
-        cp ${localedir}/locale-archive ${TMP_LOCALE}/
-fi
-localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s --prefix=/tmp/locale %s
-mkdir -p ${localedir}/
-mv ${TMP_LOCALE}/locale-archive ${localedir}/
-rm -rf ${TMP_LOCALE}
+localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s %s
 }
 
-# indentation removed on purpose
 locale_base_postrm() {
 #!/bin/sh
-
-rm -rf ${TMP_LOCALE}
-mkdir -p ${TMP_LOCALE}
-if [ -f ${localedir}/locale-archive ]; then
-	cp ${localedir}/locale-archive ${TMP_LOCALE}/
-fi
-localedef --delete-from-archive --inputfile=${datadir}/locales/%s --charmap=%s --prefix=/tmp/locale %s
-mv ${TMP_LOCALE}/locale-archive ${localedir}/
-rm -rf ${TMP_LOCALE}
+localedef --delete-from-archive --inputfile=${datadir}/locales/%s --charmap=%s %s
 }
 
-
-TMP_LOCALE="/tmp/locale${localedir}"
 LOCALETREESRC ?= "${PKGD}"
 
 do_prep_locale_tree() {
@@ -150,6 +122,7 @@
         c_re = re.compile('^copy "(.*)"')
         i_re = re.compile('^include "(\w+)".*')
         for l in f.readlines():
+            l = l.decode("latin-1")
             m = c_re.match(l) or i_re.match(l)
             if m:
                 dp = legitimize_package_name('%s%s-gconv-%s' % (mlprefix, bpn, m.group(1)))
@@ -171,6 +144,7 @@
         c_re = re.compile('^copy "(.*)"')
         i_re = re.compile('^include "(\w+)".*')
         for l in f.readlines():
+            l = l.decode("latin-1")
             m = c_re.match(l) or i_re.match(l)
             if m:
                 dp = legitimize_package_name('%s%s-charmap-%s' % (mlprefix, bpn, m.group(1)))
@@ -191,6 +165,7 @@
         c_re = re.compile('^copy "(.*)"')
         i_re = re.compile('^include "(\w+)".*')
         for l in f.readlines():
+            l = l.decode("latin-1")
             m = c_re.match(l) or i_re.match(l)
             if m:
                 dp = legitimize_package_name(mlprefix+bpn+'-localedata-%s' % m.group(1))
@@ -223,7 +198,7 @@
     # GLIBC_GENERATE_LOCALES var specifies which locales to be generated. empty or "all" means all locales
     to_generate = d.getVar('GLIBC_GENERATE_LOCALES', True)
     if not to_generate or to_generate == 'all':
-        to_generate = supported.keys()
+        to_generate = sorted(supported.keys())
     else:
         to_generate = to_generate.split()
         for locale in to_generate:
@@ -274,9 +249,13 @@
                 "powerpc": " --uint32-align=4 --big-endian ",    \
                 "powerpc64": " --uint32-align=4 --big-endian ",  \
                 "mips":    " --uint32-align=4 --big-endian ",    \
+                "mipsisa32r6":    " --uint32-align=4 --big-endian ",    \
                 "mips64":  " --uint32-align=4 --big-endian ",    \
+                "mipsisa64r6":  " --uint32-align=4 --big-endian ",    \
                 "mipsel":  " --uint32-align=4 --little-endian ", \
+                "mipsisa32r6el":  " --uint32-align=4 --little-endian ", \
                 "mips64el":" --uint32-align=4 --little-endian ", \
+                "mipsisa64r6el":" --uint32-align=4 --little-endian ", \
                 "i586":    " --uint32-align=4 --little-endian ", \
                 "i686":    " --uint32-align=4 --little-endian ", \
                 "x86_64":  " --uint32-align=4 --little-endian "  }
@@ -285,9 +264,9 @@
                 localedef_opts = locale_arch_options[target_arch]
             else:
                 bb.error("locale_arch_options not found for target_arch=" + target_arch)
-                raise bb.build.FuncFailed("unknown arch:" + target_arch + " for locale_arch_options")
+                bb.fatal("unknown arch:" + target_arch + " for locale_arch_options")
 
-            localedef_opts += " --force --old-style --no-archive --prefix=%s \
+            localedef_opts += " --force  --no-archive --prefix=%s \
                 --inputfile=%s/%s/i18n/locales/%s --charmap=%s %s/%s" \
                 % (treedir, treedir, datadir, locale, encoding, outputpath, name)
 
@@ -295,7 +274,7 @@
                 (path, i18npath, gconvpath, localedef_opts)
         else: # earlier slower qemu way 
             qemu = qemu_target_binary(d) 
-            localedef_opts = "--force --old-style --no-archive --prefix=%s \
+            localedef_opts = "--force --no-archive --prefix=%s \
                 --inputfile=%s/i18n/locales/%s --charmap=%s %s" \
                 % (treedir, datadir, locale, encoding, name)
 
@@ -388,4 +367,3 @@
 python populate_packages_prepend () {
     bb.build.exec_func('package_do_split_gconvs', d)
 }
-
diff --git a/import-layers/yocto-poky/meta/classes/license.bbclass b/import-layers/yocto-poky/meta/classes/license.bbclass
index 43944e6..da4fc3e 100644
--- a/import-layers/yocto-poky/meta/classes/license.bbclass
+++ b/import-layers/yocto-poky/meta/classes/license.bbclass
@@ -181,8 +181,10 @@
                 key,val = line.split(": ", 1)
                 man_dic[dep][key] = val[:-1]
 
-    image_license_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY', True),
-            d.getVar('IMAGE_NAME', True), 'image_license.manifest')
+    lic_manifest_dir = os.path.join(d.getVar('LICENSE_DIRECTORY', True),
+                                    d.getVar('IMAGE_NAME', True))
+    bb.utils.mkdirhier(lic_manifest_dir)
+    image_license_manifest = os.path.join(lic_manifest_dir, 'image_license.manifest')
     write_license_files(d, image_license_manifest, man_dic)
 
 def get_deployed_dependencies(d):
@@ -198,7 +200,7 @@
     # it might contain the bootloader.
     taskdata = d.getVar("BB_TASKDEPDATA", False)
     depends = list(set([dep[0] for dep
-                    in taskdata.itervalues()
+                    in list(taskdata.values())
                     if not dep[0].endswith("-native")]))
     extra_depends = d.getVar("EXTRA_IMAGEDEPENDS", True)
     boot_depends = get_boot_dependencies(d)
@@ -259,7 +261,7 @@
             depends.append(dep)
         # We need to search for the provider of the dependency
         else:
-            for taskdep in taskdepdata.itervalues():
+            for taskdep in taskdepdata.values():
                 # The fifth field contains what the task provides
                 if dep in taskdep[4]:
                     info_file = os.path.join(
@@ -340,6 +342,7 @@
 
 def copy_license_files(lic_files_paths, destdir):
     import shutil
+    import errno
 
     bb.utils.mkdirhier(destdir)
     for (basename, path) in lic_files_paths:
@@ -348,12 +351,21 @@
             dst = os.path.join(destdir, basename)
             if os.path.exists(dst):
                 os.remove(dst)
-            if os.access(src, os.W_OK) and (os.stat(src).st_dev == os.stat(destdir).st_dev):
-                os.link(src, dst)
+            canlink = os.access(src, os.W_OK) and (os.stat(src).st_dev == os.stat(destdir).st_dev)
+            if canlink:
                 try:
-                    os.chown(dst,0,0)
+                    os.link(src, dst)
                 except OSError as err:
-                    import errno
+                    if err.errno == errno.EXDEV:
+                        # Copy license files if hard-link is not possible even if st_dev is the
+                        # same on source and destination (docker container with device-mapper?)
+                        canlink = False
+                    else:
+                        raise
+                try:
+                    if canlink:
+                        os.chown(dst,0,0)
+                except OSError as err:
                     if err.errno in (errno.EPERM, errno.EINVAL):
                         # Suppress "Operation not permitted" error, as
                         # sometimes this function is not executed under pseudo.
@@ -362,7 +374,7 @@
                         pass
                     else:
                         raise
-            else:
+            if not canlink:
                 shutil.copyfile(src, dst)
         except Exception as e:
             bb.warn("Could not copy license file %s to %s: %s" % (src, dst, e))
@@ -373,21 +385,8 @@
     """
     import shutil
     import oe.license
+    from collections import defaultdict, OrderedDict
 
-    pn = d.getVar('PN', True)
-    for package in d.getVar('PACKAGES', True):
-        if d.getVar('LICENSE_' + package, True):
-            license_types = license_types + ' & ' + \
-                            d.getVar('LICENSE_' + package, True)
-
-    #If we get here with no license types, then that means we have a recipe 
-    #level license. If so, we grab only those.
-    try:
-        license_types
-    except NameError:        
-        # All the license types at the recipe level
-        license_types = d.getVar('LICENSE', True)
- 
     # All the license files for the package
     lic_files = d.getVar('LIC_FILES_CHKSUM', True)
     pn = d.getVar('PN', True)
@@ -397,6 +396,8 @@
     generic_directory = d.getVar('COMMON_LICENSE_DIR', True)
     # List of basename, path tuples
     lic_files_paths = []
+    # Entries from LIC_FILES_CHKSUM
+    lic_chksums = {}
     license_source_dirs = []
     license_source_dirs.append(generic_directory)
     try:
@@ -426,7 +427,6 @@
         license_source = None
         # If the generic does not exist we need to check to see if there is an SPDX mapping to it,
         # unless NO_GENERIC_LICENSE is set.
-
         for lic_dir in license_source_dirs:
             if not os.path.isfile(os.path.join(lic_dir, license_type)):
                 if d.getVarFlag('SPDXLICENSEMAP', license_type, True) != None:
@@ -440,6 +440,7 @@
                 license_source = lic_dir
                 break
 
+        non_generic_lic = d.getVarFlag('NO_GENERIC_LICENSE', license_type, True)
         if spdx_generic and license_source:
             # we really should copy to generic_ + spdx_generic, however, that ends up messing the manifest
             # audit up. This should be fixed in emit_pkgdata (or, we actually got and fix all the recipes)
@@ -451,13 +452,11 @@
             if d.getVarFlag('NO_GENERIC_LICENSE', license_type, True):
                 bb.warn("%s: %s is a generic license, please don't use NO_GENERIC_LICENSE for it." % (pn, license_type))
 
-        elif d.getVarFlag('NO_GENERIC_LICENSE', license_type, True):
+        elif non_generic_lic and non_generic_lic in lic_chksums:
             # if NO_GENERIC_LICENSE is set, we copy the license files from the fetched source
             # of the package rather than the license_source_dirs.
-            for (basename, path) in lic_files_paths:
-                if d.getVarFlag('NO_GENERIC_LICENSE', license_type, True) == basename:
-                    lic_files_paths.append(("generic_" + license_type, path))
-                    break
+            lic_files_paths.append(("generic_" + license_type,
+                                    os.path.join(srcdir, non_generic_lic)))
         else:
             # Add explicity avoid of CLOSED license because this isn't generic
             if license_type != 'CLOSED':
@@ -466,7 +465,7 @@
             pass
 
     if not generic_directory:
-        raise bb.build.FuncFailed("COMMON_LICENSE_DIR is unset. Please set this in your distro config")
+        bb.fatal("COMMON_LICENSE_DIR is unset. Please set this in your distro config")
 
     if not lic_files:
         # No recipe should have an invalid license file. This is checked else
@@ -478,19 +477,32 @@
         try:
             (type, host, path, user, pswd, parm) = bb.fetch.decodeurl(url)
         except bb.fetch.MalformedUrl:
-            raise bb.build.FuncFailed("%s: LIC_FILES_CHKSUM contains an invalid URL:  %s" % (d.getVar('PF', True), url))
+            bb.fatal("%s: LIC_FILES_CHKSUM contains an invalid URL:  %s" % (d.getVar('PF', True), url))
         # We want the license filename and path
-        srclicfile = os.path.join(srcdir, path)
-        lic_files_paths.append((os.path.basename(path), srclicfile))
+        chksum = parm['md5'] if 'md5' in parm else parm['sha256']
+        lic_chksums[path] = chksum
 
     v = FindVisitor()
     try:
-        v.visit_string(license_types)
+        v.visit_string(d.getVar('LICENSE', True))
     except oe.license.InvalidLicense as exc:
         bb.fatal('%s: %s' % (d.getVar('PF', True), exc))
     except SyntaxError:
         bb.warn("%s: Failed to parse it's LICENSE field." % (d.getVar('PF', True)))
 
+    # Add files from LIC_FILES_CHKSUM to list of license files
+    lic_chksum_paths = defaultdict(OrderedDict)
+    for path, chksum in lic_chksums.items():
+        lic_chksum_paths[os.path.basename(path)][chksum] = os.path.join(srcdir, path)
+    for basename, files in lic_chksum_paths.items():
+        if len(files) == 1:
+            lic_files_paths.append((basename, list(files.values())[0]))
+        else:
+            # If there are multiple different license files with identical
+            # basenames we rename them to <file>.0, <file>.1, ...
+            for i, path in enumerate(files.values()):
+                lic_files_paths.append(("%s.%d" % (basename, i), path))
+
     return lic_files_paths
 
 def return_spdx(d, license):
@@ -633,7 +645,7 @@
     licenses = d.getVar('LICENSE', True)
     from oe.license import license_operator, license_operator_chars, license_pattern
 
-    elements = filter(lambda x: x.strip(), license_operator.split(licenses))
+    elements = list(filter(lambda x: x.strip(), license_operator.split(licenses)))
     for pos, element in enumerate(elements):
         if license_pattern.match(element):
             if pos > 0 and license_pattern.match(elements[pos - 1]):
@@ -656,8 +668,6 @@
 IMAGE_POSTPROCESS_COMMAND_prepend = "write_deploy_manifest; "
 do_image[recrdeptask] += "do_populate_lic"
 
-do_populate_lic_setscene[dirs] = "${LICSSTATEDIR}/${PN}"
-do_populate_lic_setscene[cleandirs] = "${LICSSTATEDIR}"
 python do_populate_lic_setscene () {
     sstate_setscene(d)
 }
diff --git a/import-layers/yocto-poky/meta/classes/linuxloader.bbclass b/import-layers/yocto-poky/meta/classes/linuxloader.bbclass
index 5c4dc5c..117b030 100644
--- a/import-layers/yocto-poky/meta/classes/linuxloader.bbclass
+++ b/import-layers/yocto-poky/meta/classes/linuxloader.bbclass
@@ -1,7 +1,13 @@
 
 linuxloader () {
 	case ${TARGET_ARCH} in
-		powerpc | mips | mipsel | microblaze )
+		powerpc | microblaze )
+			dynamic_loader="${base_libdir}/ld.so.1"
+			;;
+		mipsisa32r6el | mipsisa32r6 | mipsisa64r6el | mipsisa64r6)
+			dynamic_loader="${base_libdir}/ld-linux-mipsn8.so.1"
+			;;
+		mips* )
 			dynamic_loader="${base_libdir}/ld.so.1"
 			;;
 		powerpc64)
diff --git a/import-layers/yocto-poky/meta/classes/live-vm-common.bbclass b/import-layers/yocto-poky/meta/classes/live-vm-common.bbclass
index c751385..734697f 100644
--- a/import-layers/yocto-poky/meta/classes/live-vm-common.bbclass
+++ b/import-layers/yocto-poky/meta/classes/live-vm-common.bbclass
@@ -31,14 +31,18 @@
 inherit ${PCBIOS_CLASS}
 
 KERNEL_IMAGETYPE ??= "bzImage"
+VM_DEFAULT_KERNEL ??= "${KERNEL_IMAGETYPE}"
 
 populate_kernel() {
 	dest=$1
 	install -d $dest
 
 	# Install bzImage, initrd, and rootfs.img in DEST for all loaders to use.
-	if [ -e ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} ]; then
-		install -m 0644 ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} $dest/vmlinuz
+	bbnote "Trying to install ${DEPLOY_DIR_IMAGE}/${VM_DEFAULT_KERNEL} as $dest/vmlinuz"
+	if [ -e ${DEPLOY_DIR_IMAGE}/${VM_DEFAULT_KERNEL} ]; then
+		install -m 0644 ${DEPLOY_DIR_IMAGE}/${VM_DEFAULT_KERNEL} $dest/vmlinuz
+	else
+		bbwarn "${DEPLOY_DIR_IMAGE}/${VM_DEFAULT_KERNEL} doesn't exist"
 	fi
 
 	# initrd is made of concatenation of multiple filesystem images
diff --git a/import-layers/yocto-poky/meta/classes/metadata_scm.bbclass b/import-layers/yocto-poky/meta/classes/metadata_scm.bbclass
index 0f7f423..2e6fac2 100644
--- a/import-layers/yocto-poky/meta/classes/metadata_scm.bbclass
+++ b/import-layers/yocto-poky/meta/classes/metadata_scm.bbclass
@@ -4,8 +4,7 @@
 def base_detect_revision(d):
     path = base_get_scmbasepath(d)
 
-    scms = [base_get_metadata_git_revision, \
-            base_get_metadata_svn_revision]
+    scms = [base_get_metadata_git_revision]
 
     for scm in scms:
         rev = scm(path, d)
@@ -27,7 +26,7 @@
     return "<unknown>"
 
 def base_get_scmbasepath(d):
-    return d.getVar( 'COREBASE', True)
+    return os.path.join(d.getVar('COREBASE', True), 'meta')
 
 def base_get_metadata_monotone_branch(path, d):
     monotone_branch = "<unknown>"
diff --git a/import-layers/yocto-poky/meta/classes/mirrors.bbclass b/import-layers/yocto-poky/meta/classes/mirrors.bbclass
index 9e6d483..1184708 100644
--- a/import-layers/yocto-poky/meta/classes/mirrors.bbclass
+++ b/import-layers/yocto-poky/meta/classes/mirrors.bbclass
@@ -21,13 +21,13 @@
 ${DEBIAN_MIRROR}	ftp://ftp.tr.debian.org/debian/pool \n \
 ${GNU_MIRROR}	ftp://mirrors.kernel.org/gnu \n \
 ${KERNELORG_MIRROR}	http://www.kernel.org/pub \n \
-ftp://ftp.gnupg.org/gcrypt/     ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/ \n \
-ftp://ftp.gnupg.org/gcrypt/     ftp://ftp.surfnet.nl/pub/security/gnupg/ \n \
-ftp://ftp.gnupg.org/gcrypt/     http://gulus.USherbrooke.ca/pub/appl/GnuPG/ \n \
+${GNUPG_MIRROR}	ftp://ftp.gnupg.org/gcrypt \n \
+${GNUPG_MIRROR}	ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt \n \
+${GNUPG_MIRROR}	ftp://mirrors.dotsrc.org/gcrypt \n \
 ftp://dante.ctan.org/tex-archive ftp://ftp.fu-berlin.de/tex/CTAN \n \
 ftp://dante.ctan.org/tex-archive http://sunsite.sut.ac.jp/pub/archives/ctan/ \n \
 ftp://dante.ctan.org/tex-archive http://ctan.unsw.edu.au/ \n \
-ftp://ftp.gnutls.org/gcrypt/gnutls ftp://ftp.gnupg.org/gcrypt/gnutls/ \n \
+ftp://ftp.gnutls.org/gcrypt/gnutls ${GNUPG_MIRROR} \n \
 http://ftp.info-zip.org/pub/infozip/src/ http://mirror.switch.ch/ftp/mirror/infozip/src/ \n \
 http://ftp.info-zip.org/pub/infozip/src/ ftp://sunsite.icm.edu.pl/pub/unix/archiving/info-zip/src/ \n \
 ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/  ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/lsof/ \n \
diff --git a/import-layers/yocto-poky/meta/classes/module.bbclass b/import-layers/yocto-poky/meta/classes/module.bbclass
index 01c9309..68e3d34 100644
--- a/import-layers/yocto-poky/meta/classes/module.bbclass
+++ b/import-layers/yocto-poky/meta/classes/module.bbclass
@@ -8,6 +8,15 @@
 
 MODULES_INSTALL_TARGET ?= "modules_install"
 
+python __anonymous () {
+    depends = d.getVar('DEPENDS', True)
+    extra_symbols = []
+    for dep in depends.split():
+        if dep.startswith("kernel-module-"):
+            extra_symbols.append("${STAGING_INCDIR}/" + dep + "/Module.symvers")
+    d.setVar('KBUILD_EXTRA_SYMBOLS', " ".join(extra_symbols))
+}
+
 module_do_compile() {
 	unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
 	oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR}   \
@@ -15,6 +24,7 @@
 		   CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
 		   AR="${KERNEL_AR}" \
 	           O=${STAGING_KERNEL_BUILDDIR} \
+		   KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \
 		   ${MAKE_TARGETS}
 }
 
@@ -24,6 +34,11 @@
 	           CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
 	           O=${STAGING_KERNEL_BUILDDIR} \
 	           ${MODULES_INSTALL_TARGET}
+
+	install -d -m0755 ${D}${includedir}/${BPN}
+	cp -a --no-preserve=ownership ${B}/Module.symvers ${D}${includedir}/${BPN}
+	# it doesn't actually seem to matter which path is specified here
+	sed -e 's:${B}/::g' -i ${D}${includedir}/${BPN}/Module.symvers
 }
 
 EXPORT_FUNCTIONS do_compile do_install
diff --git a/import-layers/yocto-poky/meta/classes/multilib_global.bbclass b/import-layers/yocto-poky/meta/classes/multilib_global.bbclass
index 67dc72b..11ae268 100644
--- a/import-layers/yocto-poky/meta/classes/multilib_global.bbclass
+++ b/import-layers/yocto-poky/meta/classes/multilib_global.bbclass
@@ -72,6 +72,7 @@
             pkg = pkg.replace("virtual/", "")
             virt = "virtual/"
         for p in prefixes:
+            newval = None
             if pkg != "kernel":
                 newval = p + "-" + val
 
@@ -86,7 +87,7 @@
 
             # implement alternative multilib name
             newname = localdata.expand("PREFERRED_PROVIDER_" + virt + p + "-" + pkg)
-            if not d.getVar(newname, False):
+            if not d.getVar(newname, False) and newval != None:
                 d.setVar(newname, localdata.expand(newval))
         # Avoid future variable key expansion
         provexp = d.expand(prov)
diff --git a/import-layers/yocto-poky/meta/classes/multilib_header.bbclass b/import-layers/yocto-poky/meta/classes/multilib_header.bbclass
index 5ee0a2d..304c28e 100644
--- a/import-layers/yocto-poky/meta/classes/multilib_header.bbclass
+++ b/import-layers/yocto-poky/meta/classes/multilib_header.bbclass
@@ -52,3 +52,8 @@
 oe_multilib_header_class-native () {
 	return
 }
+
+# Nor do we need multilib headers for nativesdk builds.
+oe_multilib_header_class-nativesdk () {
+	return
+}
diff --git a/import-layers/yocto-poky/meta/classes/native.bbclass b/import-layers/yocto-poky/meta/classes/native.bbclass
index f67ef00..143f8a9 100644
--- a/import-layers/yocto-poky/meta/classes/native.bbclass
+++ b/import-layers/yocto-poky/meta/classes/native.bbclass
@@ -87,8 +87,7 @@
 
 baselib = "lib"
 
-# Libtool's default paths are correct for the native machine
-lt_cv_sys_lib_dlsearch_path_spec[unexport] = "1"
+export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir} /lib /lib64 /usr/lib /usr/lib64"
 
 NATIVE_PACKAGE_PATH_SUFFIX ?= ""
 bindir .= "${NATIVE_PACKAGE_PATH_SUFFIX}"
diff --git a/import-layers/yocto-poky/meta/classes/nativesdk.bbclass b/import-layers/yocto-poky/meta/classes/nativesdk.bbclass
index f74da62..a78257c 100644
--- a/import-layers/yocto-poky/meta/classes/nativesdk.bbclass
+++ b/import-layers/yocto-poky/meta/classes/nativesdk.bbclass
@@ -10,6 +10,8 @@
 CLASSOVERRIDE = "class-nativesdk"
 MACHINEOVERRIDES = ""
 
+MULTILIBS = ""
+
 #
 # Update PACKAGE_ARCH and PACKAGE_ARCHS
 #
diff --git a/import-layers/yocto-poky/meta/classes/nopackages.bbclass b/import-layers/yocto-poky/meta/classes/nopackages.bbclass
index 0c2761b..559f507 100644
--- a/import-layers/yocto-poky/meta/classes/nopackages.bbclass
+++ b/import-layers/yocto-poky/meta/classes/nopackages.bbclass
@@ -4,3 +4,9 @@
 deltask do_package_write_deb
 deltask do_package_qa
 deltask do_packagedata
+deltask do_package_setscene
+deltask do_package_write_rpm_setscene
+deltask do_package_write_ipk_setscene
+deltask do_package_write_deb_setscene
+deltask do_package_qa_setscene
+deltask do_packagedata_setscene
diff --git a/import-layers/yocto-poky/meta/classes/npm.bbclass b/import-layers/yocto-poky/meta/classes/npm.bbclass
index 9843e87..fce4c11 100644
--- a/import-layers/yocto-poky/meta/classes/npm.bbclass
+++ b/import-layers/yocto-poky/meta/classes/npm.bbclass
@@ -1,9 +1,25 @@
 DEPENDS_prepend = "nodejs-native "
+RDEPENDS_${PN}_prepend = "nodejs "
 S = "${WORKDIR}/npmpkg"
 
 NPM_INSTALLDIR = "${D}${libdir}/node_modules/${PN}"
 
+# function maps arch names to npm arch names
+def npm_oe_arch_map(target_arch, d):
+    import re
+    if   re.match('p(pc|owerpc)(|64)', target_arch): return 'ppc'
+    elif re.match('i.86$', target_arch): return 'ia32'
+    elif re.match('x86_64$', target_arch): return 'x64'
+    elif re.match('arm64$', target_arch): return 'arm'
+    return target_arch
+
+NPM_ARCH ?= "${@npm_oe_arch_map(d.getVar('TARGET_ARCH', True), d)}"
+
 npm_do_compile() {
+	# Copy in any additionally fetched modules
+	if [ -d ${WORKDIR}/node_modules ] ; then
+		cp -a ${WORKDIR}/node_modules ${S}/
+	fi
 	# changing the home directory to the working directory, the .npmrc will
 	# be created in this directory
 	export HOME=${WORKDIR}
@@ -12,7 +28,7 @@
 	# clear cache before every build
 	npm cache clear
 	# Install pkg into ${S} without going to the registry
-	npm --arch=${TARGET_ARCH} --production --no-registry install
+	npm --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry install
 }
 
 npm_do_install() {
@@ -35,10 +51,10 @@
         if pdata:
             version = pdata.get('version', None)
             if version:
-                d.setVar('PKGV_%s' % expanded_pkgname, version.encode("utf8"))
+                d.setVar('PKGV_%s' % expanded_pkgname, version)
             description = pdata.get('description', None)
             if description:
-                d.setVar('SUMMARY_%s' % expanded_pkgname, description.replace(u"\u2018", "'").replace(u"\u2019", "'").encode("utf8"))
+                d.setVar('SUMMARY_%s' % expanded_pkgname, description.replace(u"\u2018", "'").replace(u"\u2019", "'"))
     d.appendVar('RDEPENDS_%s' % d.getVar('PN', True), ' %s' % ' '.join(pkgnames).replace('_', '-'))
 }
 
diff --git a/import-layers/yocto-poky/meta/classes/oelint.bbclass b/import-layers/yocto-poky/meta/classes/oelint.bbclass
index 1b051ca..c4febc2 100644
--- a/import-layers/yocto-poky/meta/classes/oelint.bbclass
+++ b/import-layers/yocto-poky/meta/classes/oelint.bbclass
@@ -45,7 +45,7 @@
 
     def findKey(path, key):
         ret = True
-        f = file('%s' % path, mode = 'r')
+        f = open('%s' % path, mode = 'r')
         line = f.readline()
         while line:
             if line.find(key) != -1:
diff --git a/import-layers/yocto-poky/meta/classes/package.bbclass b/import-layers/yocto-poky/meta/classes/package.bbclass
index 76b9f86..a6f0a7a 100644
--- a/import-layers/yocto-poky/meta/classes/package.bbclass
+++ b/import-layers/yocto-poky/meta/classes/package.bbclass
@@ -63,7 +63,7 @@
     def fixutf(m):
         cp = m.group(1)
         if cp:
-            return ('\u%s' % cp).decode('unicode_escape').encode('utf-8')
+            return ('\\u%s' % cp).encode('latin-1').decode('unicode_escape')
 
     # Handle unicode codepoints encoded as <U0123>, as in glibc locale files.
     s = re.sub('<U([0-9A-Fa-f]{1,4})>', fixutf, s)
@@ -146,7 +146,7 @@
 
 
     packages = d.getVar('PACKAGES', True).split()
-    split_packages = []
+    split_packages = set()
 
     if postinst:
         postinst = '#!/bin/sh\n' + postinst + '\n'
@@ -183,7 +183,7 @@
             continue
         on = legitimize_package_name(m.group(1))
         pkg = output_pattern % on
-        split_packages.append(pkg)
+        split_packages.add(pkg)
         if not pkg in packages:
             if prepend:
                 packages = [pkg] + packages
@@ -226,7 +226,7 @@
             hook(f, pkg, file_regex, output_pattern, m.group(1))
 
     d.setVar('PACKAGES', ' '.join(packages))
-    return split_packages
+    return list(split_packages)
 
 PACKAGE_DEPENDS += "file-native"
 
@@ -259,14 +259,30 @@
                 continue
         files.append(f)
 
-    for f in files:
+    symlink_paths = []
+    for ind, f in enumerate(files):
+        # Handle directory symlinks. Truncate path to the lowest level symlink
+        parent = ''
+        for dirname in f.split('/')[:-1]:
+            parent = os.path.join(parent, dirname)
+            if dirname == '.':
+                continue
+            if cpath.islink(parent):
+                bb.warn("FILES contains file '%s' which resides under a "
+                        "directory symlink. Please fix the recipe and use the "
+                        "real path for the file." % f[1:])
+                symlink_paths.append(f)
+                files[ind] = parent
+                f = parent
+                break
+
         if not cpath.islink(f):
             if cpath.isdir(f):
                 newfiles = [ os.path.join(f,x) for x in os.listdir(f) ]
                 if newfiles:
                     files += newfiles
 
-    return files
+    return files, symlink_paths
 
 # Called in package_<rpm,ipk,deb>.bbclass to get the correct list of configuration files
 def get_conffiles(pkg, d):
@@ -281,7 +297,7 @@
     if conffiles == None:
         conffiles = ""
     conffiles = conffiles.split()
-    conf_orig_list = files_from_filevars(conffiles)
+    conf_orig_list = files_from_filevars(conffiles)[0]
 
     # Remove links and directories from conf_orig_list to get conf_list which only contains normal files
     conf_list = []
@@ -841,6 +857,9 @@
     dvar = d.getVar('PKGD', True)
     pn = d.getVar('PN', True)
 
+    oldcwd = os.getcwd()
+    os.chdir(dvar)
+
     # We default to '.debug' style
     if d.getVar('PACKAGE_DEBUG_SPLIT_STYLE', True) == 'debug-file-directory':
         # Single debug-file-directory style debug info
@@ -864,8 +883,6 @@
     sourcefile = d.expand("${WORKDIR}/debugsources.list")
     bb.utils.remove(sourcefile)
 
-    os.chdir(dvar)
-
     # Return type (bits):
     # 0 - not elf
     # 1 - ELF
@@ -903,7 +920,8 @@
     inodes = {}
     libdir = os.path.abspath(dvar + os.sep + d.getVar("libdir", True))
     baselibdir = os.path.abspath(dvar + os.sep + d.getVar("base_libdir", True))
-    if (d.getVar('INHIBIT_PACKAGE_STRIP', True) != '1'):
+    if (d.getVar('INHIBIT_PACKAGE_STRIP', True) != '1' or \
+            d.getVar('INHIBIT_PACKAGE_DEBUG_SPLIT', True) != '1'):
         for root, dirs, files in cpath.walk(dvar):
             for f in files:
                 file = os.path.join(root, f)
@@ -1051,6 +1069,7 @@
     #
     # End of strip
     #
+    os.chdir(oldcwd)
 }
 
 python populate_packages () {
@@ -1108,7 +1127,7 @@
             filesvar.replace("//", "/")
 
         origfiles = filesvar.split()
-        files = files_from_filevars(origfiles)
+        files, symlink_paths = files_from_filevars(origfiles)
 
         if autodebug and pkg.endswith("-dbg"):
             files.extend(debug)
@@ -1149,13 +1168,19 @@
             fpath = os.path.join(root,file)
             if not cpath.islink(file):
                 os.link(file, fpath)
-                fstat = cpath.stat(file)
-                os.chmod(fpath, fstat.st_mode)
-                os.chown(fpath, fstat.st_uid, fstat.st_gid)
                 continue
             ret = bb.utils.copyfile(file, fpath)
             if ret is False or ret == 0:
-                raise bb.build.FuncFailed("File population failed")
+                bb.fatal("File population failed")
+
+        # Check if symlink paths exist
+        for file in symlink_paths:
+            if not os.path.exists(os.path.join(root,file)):
+                bb.fatal("File '%s' cannot be packaged into '%s' because its "
+                         "parent directory structure does not exist. One of "
+                         "its parent directories is a symlink whose target "
+                         "directory is not included in the package." %
+                         (file, pkg))
 
     os.umask(oldumask)
     os.chdir(workdir)
@@ -1258,8 +1283,8 @@
     def write_if_exists(f, pkg, var):
         def encode(str):
             import codecs
-            c = codecs.getencoder("string_escape")
-            return c(str)[0]
+            c = codecs.getencoder("unicode_escape")
+            return c(str)[0].decode("latin1")
 
         val = d.getVar('%s_%s' % (var, pkg), True)
         if val:
@@ -1465,7 +1490,7 @@
     import re, pipes
     import subprocess as sub
 
-    exclude_shlibs = d.getVar('EXCLUDE_FROM_SHLIBS', 0)
+    exclude_shlibs = d.getVar('EXCLUDE_FROM_SHLIBS', False)
     if exclude_shlibs:
         bb.note("not generating shlibs")
         return
@@ -1503,7 +1528,7 @@
             m = re.match("\s+RPATH\s+([^\s]*)", l)
             if m:
                 rpaths = m.group(1).replace("$ORIGIN", ldir).split(":")
-                rpath = map(os.path.normpath, rpaths)
+                rpath = list(map(os.path.normpath, rpaths))
         for l in lines:
             m = re.match("\s+NEEDED\s+([^\s]*)", l)
             if m:
@@ -1554,19 +1579,19 @@
         if file.endswith('.dylib') or file.endswith('.so'):
             rpath = []
             p = sub.Popen([d.expand("${HOST_PREFIX}otool"), '-l', file],stdout=sub.PIPE,stderr=sub.PIPE)
-            err, out = p.communicate()
-            # If returned successfully, process stderr for results
+            out, err = p.communicate()
+            # If returned successfully, process stdout for results
             if p.returncode == 0:
-                for l in err.split("\n"):
+                for l in out.split("\n"):
                     l = l.strip()
                     if l.startswith('path '):
                         rpath.append(l.split()[1])
 
         p = sub.Popen([d.expand("${HOST_PREFIX}otool"), '-L', file],stdout=sub.PIPE,stderr=sub.PIPE)
-        err, out = p.communicate()
-        # If returned successfully, process stderr for results
+        out, err = p.communicate()
+        # If returned successfully, process stdout for results
         if p.returncode == 0:
-            for l in err.split("\n"):
+            for l in out.split("\n"):
                 l = l.strip()
                 if not l or l.endswith(":"):
                     continue
@@ -1673,7 +1698,7 @@
                 bb.debug(2, '%s: Dependency %s covered by PRIVATE_LIBS' % (pkg, n[0]))
                 continue
             if n[0] in shlib_provider.keys():
-                shlib_provider_path = list()
+                shlib_provider_path = []
                 for k in shlib_provider[n[0]].keys():
                     shlib_provider_path.append(k)
                 match = None
@@ -2128,4 +2153,3 @@
     runtime_mapping_rename("RDEPENDS", pkg, d)
     runtime_mapping_rename("RRECOMMENDS", pkg, d)
     runtime_mapping_rename("RSUGGESTS", pkg, d)
-
diff --git a/import-layers/yocto-poky/meta/classes/package_deb.bbclass b/import-layers/yocto-poky/meta/classes/package_deb.bbclass
index e1d05a7..fb6034c 100644
--- a/import-layers/yocto-poky/meta/classes/package_deb.bbclass
+++ b/import-layers/yocto-poky/meta/classes/package_deb.bbclass
@@ -52,6 +52,9 @@
     import re, copy
     import textwrap
     import subprocess
+    import collections
+
+    oldcwd = os.getcwd()
 
     workdir = d.getVar('WORKDIR', True)
     if not workdir:
@@ -117,13 +120,13 @@
 
         controldir = os.path.join(root, 'DEBIAN')
         bb.utils.mkdirhier(controldir)
-        os.chmod(controldir, 0755)
+        os.chmod(controldir, 0o755)
         try:
             import codecs
             ctrlfile = codecs.open(os.path.join(controldir, 'control'), 'w', 'utf-8')
         except OSError:
             bb.utils.unlockfile(lf)
-            raise bb.build.FuncFailed("unable to open control file for writing.")
+            bb.fatal("unable to open control file for writing")
 
         fields = []
         pe = d.getVar('PKGE', True)
@@ -173,7 +176,7 @@
                 # Special behavior for description...
                 if 'DESCRIPTION' in fs:
                      summary = localdata.getVar('SUMMARY', True) or localdata.getVar('DESCRIPTION', True) or "."
-                     ctrlfile.write('Description: %s\n' % unicode(summary,'utf-8'))
+                     ctrlfile.write('Description: %s\n' % summary)
                      description = localdata.getVar('DESCRIPTION', True) or "."
                      description = textwrap.dedent(description).strip()
                      if '\\n' in description:
@@ -182,29 +185,25 @@
                              # We don't limit the width when manually indent, but we do
                              # need the textwrap.fill() to set the initial_indent and
                              # subsequent_indent, so set a large width
-                             ctrlfile.write('%s\n' % unicode(textwrap.fill(t, width=100000, initial_indent=' ', subsequent_indent=' '),'utf-8'))
+                             ctrlfile.write('%s\n' % textwrap.fill(t, width=100000, initial_indent=' ', subsequent_indent=' '))
                      else:
                          # Auto indent
-                         ctrlfile.write('%s\n' % unicode(textwrap.fill(description.strip(), width=74, initial_indent=' ', subsequent_indent=' '),'utf-8'))
+                         ctrlfile.write('%s\n' % textwrap.fill(description.strip(), width=74, initial_indent=' ', subsequent_indent=' '))
 
                 else:
-                     ctrlfile.write(unicode(c % tuple(pullData(fs, localdata)),'utf-8'))
+                     ctrlfile.write(c % tuple(pullData(fs, localdata)))
         except KeyError:
             import sys
             (type, value, traceback) = sys.exc_info()
             bb.utils.unlockfile(lf)
             ctrlfile.close()
-            raise bb.build.FuncFailed("Missing field for deb generation: %s" % value)
-        except UnicodeDecodeError:
-            bb.utils.unlockfile(lf)
-            ctrlfile.close()
-            raise bb.build.FuncFailed("Non UTF-8 characters found in one of the fields")
+            bb.fatal("Missing field for deb generation: %s" % value)
 
         # more fields
 
         custom_fields_chunk = get_package_additional_metadata("deb", localdata)
         if custom_fields_chunk is not None:
-            ctrlfile.write(unicode(custom_fields_chunk))
+            ctrlfile.write(custom_fields_chunk)
             ctrlfile.write("\n")
 
         mapping_rename_hook(localdata)
@@ -234,7 +233,7 @@
 
         rdepends = bb.utils.explode_dep_versions2(localdata.getVar("RDEPENDS", True) or "")
         debian_cmp_remap(rdepends)
-        for dep in rdepends.keys():
+        for dep in list(rdepends.keys()):
                 if dep == pkg:
                         del rdepends[dep]
                         continue
@@ -242,30 +241,31 @@
                         del rdepends[dep]
         rrecommends = bb.utils.explode_dep_versions2(localdata.getVar("RRECOMMENDS", True) or "")
         debian_cmp_remap(rrecommends)
-        for dep in rrecommends.keys():
+        for dep in list(rrecommends.keys()):
                 if '*' in dep:
                         del rrecommends[dep]
         rsuggests = bb.utils.explode_dep_versions2(localdata.getVar("RSUGGESTS", True) or "")
         debian_cmp_remap(rsuggests)
         # Deliberately drop version information here, not wanted/supported by deb
         rprovides = dict.fromkeys(bb.utils.explode_dep_versions2(localdata.getVar("RPROVIDES", True) or ""), [])
+        rprovides = collections.OrderedDict(sorted(rprovides.items(), key=lambda x: x[0]))
         debian_cmp_remap(rprovides)
         rreplaces = bb.utils.explode_dep_versions2(localdata.getVar("RREPLACES", True) or "")
         debian_cmp_remap(rreplaces)
         rconflicts = bb.utils.explode_dep_versions2(localdata.getVar("RCONFLICTS", True) or "")
         debian_cmp_remap(rconflicts)
         if rdepends:
-            ctrlfile.write("Depends: %s\n" % unicode(bb.utils.join_deps(rdepends)))
+            ctrlfile.write("Depends: %s\n" % bb.utils.join_deps(rdepends))
         if rsuggests:
-            ctrlfile.write("Suggests: %s\n" % unicode(bb.utils.join_deps(rsuggests)))
+            ctrlfile.write("Suggests: %s\n" % bb.utils.join_deps(rsuggests))
         if rrecommends:
-            ctrlfile.write("Recommends: %s\n" % unicode(bb.utils.join_deps(rrecommends)))
+            ctrlfile.write("Recommends: %s\n" % bb.utils.join_deps(rrecommends))
         if rprovides:
-            ctrlfile.write("Provides: %s\n" % unicode(bb.utils.join_deps(rprovides)))
+            ctrlfile.write("Provides: %s\n" % bb.utils.join_deps(rprovides))
         if rreplaces:
-            ctrlfile.write("Replaces: %s\n" % unicode(bb.utils.join_deps(rreplaces)))
+            ctrlfile.write("Replaces: %s\n" % bb.utils.join_deps(rreplaces))
         if rconflicts:
-            ctrlfile.write("Conflicts: %s\n" % unicode(bb.utils.join_deps(rconflicts)))
+            ctrlfile.write("Conflicts: %s\n" % bb.utils.join_deps(rconflicts))
         ctrlfile.close()
 
         for script in ["preinst", "postinst", "prerm", "postrm"]:
@@ -277,7 +277,7 @@
                 scriptfile = open(os.path.join(controldir, script), 'w')
             except OSError:
                 bb.utils.unlockfile(lf)
-                raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
+                bb.fatal("unable to open %s script file for writing" % script)
 
             if scriptvar.startswith("#!"):
                 pos = scriptvar.find("\n") + 1
@@ -293,7 +293,7 @@
             scriptfile.write(scriptvar[pos:])
             scriptfile.write('\n')
             scriptfile.close()
-            os.chmod(os.path.join(controldir, script), 0755)
+            os.chmod(os.path.join(controldir, script), 0o755)
 
         conffiles_str = ' '.join(get_conffiles(pkg, d))
         if conffiles_str:
@@ -301,7 +301,7 @@
                 conffiles = open(os.path.join(controldir, 'conffiles'), 'w')
             except OSError:
                 bb.utils.unlockfile(lf)
-                raise bb.build.FuncFailed("unable to open conffiles for writing.")
+                bb.fatal("unable to open conffiles for writing")
             for f in conffiles_str.split():
                 if os.path.exists(oe.path.join(root, f)):
                     conffiles.write('%s\n' % f)
@@ -311,10 +311,11 @@
         ret = subprocess.call("PATH=\"%s\" dpkg-deb -b %s %s" % (localdata.getVar("PATH", True), root, pkgoutdir), shell=True)
         if ret != 0:
             bb.utils.unlockfile(lf)
-            raise bb.build.FuncFailed("dpkg-deb execution failed")
+            bb.fatal("dpkg-deb execution failed")
 
         cleanupcontrol(root)
         bb.utils.unlockfile(lf)
+    os.chdir(oldcwd)
 }
 # Indirect references to these vars
 do_package_write_deb[vardeps] += "PKGV PKGR PKGV DESCRIPTION SECTION PRIORITY MAINTAINER DPKG_ARCH PN HOMEPAGE"
diff --git a/import-layers/yocto-poky/meta/classes/package_ipk.bbclass b/import-layers/yocto-poky/meta/classes/package_ipk.bbclass
index f1ad1d5..eb00932 100644
--- a/import-layers/yocto-poky/meta/classes/package_ipk.bbclass
+++ b/import-layers/yocto-poky/meta/classes/package_ipk.bbclass
@@ -20,6 +20,9 @@
     import re, copy
     import textwrap
     import subprocess
+    import collections
+
+    oldcwd = os.getcwd()
 
     workdir = d.getVar('WORKDIR', True)
     outdir = d.getVar('PKGWRITEDIRIPK', True)
@@ -105,7 +108,7 @@
             ctrlfile = open(os.path.join(controldir, 'control'), 'w')
         except OSError:
             bb.utils.unlockfile(lf)
-            raise bb.build.FuncFailed("unable to open control file for writing.")
+            bb.fatal("unable to open control file for writing")
 
         fields = []
         pe = d.getVar('PKGE', True)
@@ -159,7 +162,7 @@
             (type, value, traceback) = sys.exc_info()
             ctrlfile.close()
             bb.utils.unlockfile(lf)
-            raise bb.build.FuncFailed("Missing field for ipk generation: %s" % value)
+            bb.fatal("Missing field for ipk generation: %s" % value)
         # more fields
 
         custom_fields_chunk = get_package_additional_metadata("ipk", localdata)
@@ -190,6 +193,7 @@
         debian_cmp_remap(rsuggests)
         # Deliberately drop version information here, not wanted/supported by ipk
         rprovides = dict.fromkeys(bb.utils.explode_dep_versions2(localdata.getVar("RPROVIDES", True) or ""), [])
+        rprovides = collections.OrderedDict(sorted(rprovides.items(), key=lambda x: x[0]))
         debian_cmp_remap(rprovides)
         rreplaces = bb.utils.explode_dep_versions2(localdata.getVar("RREPLACES", True) or "")
         debian_cmp_remap(rreplaces)
@@ -222,10 +226,10 @@
                 scriptfile = open(os.path.join(controldir, script), 'w')
             except OSError:
                 bb.utils.unlockfile(lf)
-                raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
+                bb.fatal("unable to open %s script file for writing" % script)
             scriptfile.write(scriptvar)
             scriptfile.close()
-            os.chmod(os.path.join(controldir, script), 0755)
+            os.chmod(os.path.join(controldir, script), 0o755)
 
         conffiles_str = ' '.join(get_conffiles(pkg, d))
         if conffiles_str:
@@ -233,7 +237,7 @@
                 conffiles = open(os.path.join(controldir, 'conffiles'), 'w')
             except OSError:
                 bb.utils.unlockfile(lf)
-                raise bb.build.FuncFailed("unable to open conffiles for writing.")
+                bb.fatal("unable to open conffiles for writing")
             for f in conffiles_str.split():
                 if os.path.exists(oe.path.join(root, f)):
                     conffiles.write('%s\n' % f)
@@ -241,10 +245,10 @@
 
         os.chdir(basedir)
         ret = subprocess.call("PATH=\"%s\" %s %s %s" % (localdata.getVar("PATH", True),
-                                                          d.getVar("OPKGBUILDCMD",1), pkg, pkgoutdir), shell=True)
+                                                          d.getVar("OPKGBUILDCMD", True), pkg, pkgoutdir), shell=True)
         if ret != 0:
             bb.utils.unlockfile(lf)
-            raise bb.build.FuncFailed("opkg-build execution failed")
+            bb.fatal("opkg-build execution failed")
 
         if d.getVar('IPK_SIGN_PACKAGES', True) == '1':
             ipkver = "%s-%s" % (d.getVar('PKGV', True), d.getVar('PKGR', True))
@@ -254,6 +258,7 @@
         cleanupcontrol(root)
         bb.utils.unlockfile(lf)
 
+    os.chdir(oldcwd)
 }
 # Otherwise allarch packages may change depending on override configuration
 do_package_ipk[vardepsexclude] = "OVERRIDES"
diff --git a/import-layers/yocto-poky/meta/classes/package_rpm.bbclass b/import-layers/yocto-poky/meta/classes/package_rpm.bbclass
index 7d523a1..c431545 100644
--- a/import-layers/yocto-poky/meta/classes/package_rpm.bbclass
+++ b/import-layers/yocto-poky/meta/classes/package_rpm.bbclass
@@ -58,12 +58,12 @@
     try:
         dependsfile = open(outdepends, 'w')
     except OSError:
-        raise bb.build.FuncFailed("unable to open spec file for writing.")
+        bb.fatal("unable to open spec file for writing")
 
     dump_filerdeps('RDEPENDS', dependsfile, d)
 
     dependsfile.close()
-    os.chmod(outdepends, 0755)
+    os.chmod(outdepends, 0o755)
 
     # OE-core / RPM Provides
     outprovides = workdir + "/" + srcname + ".provides"
@@ -71,12 +71,12 @@
     try:
         providesfile = open(outprovides, 'w')
     except OSError:
-        raise bb.build.FuncFailed("unable to open spec file for writing.")
+        bb.fatal("unable to open spec file for writing")
 
     dump_filerdeps('RPROVIDES', providesfile, d)
 
     providesfile.close()
-    os.chmod(outprovides, 0755)
+    os.chmod(outprovides, 0o755)
 
     return (outdepends, outprovides)
 
@@ -617,7 +617,7 @@
     try:
         specfile = open(outspecfile, 'w')
     except OSError:
-        raise bb.build.FuncFailed("unable to open spec file for writing.")
+        bb.fatal("unable to open spec file for writing")
 
     # RPMSPEC_PREAMBLE is a way to add arbitrary text to the top
     # of the generated spec file
@@ -702,7 +702,7 @@
     pkgarch = d.expand('${PACKAGE_ARCH_EXTEND}${HOST_VENDOR}-${HOST_OS}')
     magicfile = d.expand('${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc')
     bb.utils.mkdirhier(pkgwritedir)
-    os.chmod(pkgwritedir, 0755)
+    os.chmod(pkgwritedir, 0o755)
 
     cmd = rpmbuild
     cmd = cmd + " --nodeps --short-circuit --target " + pkgarch + " --buildroot " + pkgd
diff --git a/import-layers/yocto-poky/meta/classes/package_tar.bbclass b/import-layers/yocto-poky/meta/classes/package_tar.bbclass
index 854e645..e217814 100644
--- a/import-layers/yocto-poky/meta/classes/package_tar.bbclass
+++ b/import-layers/yocto-poky/meta/classes/package_tar.bbclass
@@ -4,6 +4,9 @@
 
 python do_package_tar () {
     import subprocess
+
+    oldcwd = os.getcwd()
+
     workdir = d.getVar('WORKDIR', True)
     if not workdir:
         bb.error("WORKDIR not defined, unable to package")
@@ -49,6 +52,8 @@
         ret = subprocess.call(args + [tarfn] + dlist)
         if ret != 0:
             bb.error("Creation of tar %s failed." % tarfn)
+
+    os.chdir(oldcwd)
 }
 
 python () {
diff --git a/import-layers/yocto-poky/meta/classes/packagefeed-stability.bbclass b/import-layers/yocto-poky/meta/classes/packagefeed-stability.bbclass
new file mode 100644
index 0000000..aa01def
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/packagefeed-stability.bbclass
@@ -0,0 +1,252 @@
+# Class to avoid copying packages into the feed if they haven't materially changed
+#
+# Copyright (C) 2015 Intel Corporation
+# Released under the MIT license (see COPYING.MIT for details)
+#
+# This class effectively intercepts packages as they are written out by
+# do_package_write_*, causing them to be written into a different
+# directory where we can compare them to whatever older packages might
+# be in the "real" package feed directory, and avoid copying the new
+# package to the feed if it has not materially changed. The idea is to
+# avoid unnecessary churn in the packages when dependencies trigger task
+# reexecution (and thus repackaging). Enabling the class is simple:
+#
+# INHERIT += "packagefeed-stability"
+#
+# Caveats:
+# 1) Latest PR values in the build system may not match those in packages
+#    seen on the target (naturally)
+# 2) If you rebuild from sstate without the existing package feed present,
+#    you will lose the "state" of the package feed i.e. the preserved old
+#    package versions. Not the end of the world, but would negate the
+#    entire purpose of this class.
+#
+# Note that running -c cleanall on a recipe will purposely delete the old
+# package files so they will definitely be copied the next time.
+
+python() {
+    if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d):
+        return
+    # Package backend agnostic intercept
+    # This assumes that the package_write task is called package_write_<pkgtype>
+    # and that the directory in which packages should be written is
+    # pointed to by the variable DEPLOY_DIR_<PKGTYPE>
+    for pkgclass in (d.getVar('PACKAGE_CLASSES', True) or '').split():
+        if pkgclass.startswith('package_'):
+            pkgtype = pkgclass.split('_', 1)[1]
+            pkgwritefunc = 'do_package_write_%s' % pkgtype
+            sstate_outputdirs = d.getVarFlag(pkgwritefunc, 'sstate-outputdirs', False)
+            deploydirvar = 'DEPLOY_DIR_%s' % pkgtype.upper()
+            deploydirvarref = '${' + deploydirvar + '}'
+            pkgcomparefunc = 'do_package_compare_%s' % pkgtype
+
+            if bb.data.inherits_class('image', d):
+                d.appendVarFlag('do_rootfs', 'recrdeptask', ' ' + pkgcomparefunc)
+
+            if bb.data.inherits_class('populate_sdk_base', d):
+                d.appendVarFlag('do_populate_sdk', 'recrdeptask', ' ' + pkgcomparefunc)
+
+            if bb.data.inherits_class('populate_sdk_ext', d):
+                d.appendVarFlag('do_populate_sdk_ext', 'recrdeptask', ' ' + pkgcomparefunc)
+
+            d.appendVarFlag('do_build', 'recrdeptask', ' ' + pkgcomparefunc)
+
+            if d.getVarFlag(pkgwritefunc, 'noexec', True) or not d.getVarFlag(pkgwritefunc, 'task', True):
+                # Packaging is disabled for this recipe, we shouldn't do anything
+                continue
+
+            if deploydirvarref in sstate_outputdirs:
+                deplor_dir_pkgtype = d.expand(deploydirvarref + '-prediff')
+                # Set intermediate output directory
+                d.setVarFlag(pkgwritefunc, 'sstate-outputdirs', sstate_outputdirs.replace(deploydirvarref, deplor_dir_pkgtype))
+                # Update SSTATE_DUPWHITELIST to avoid shared location conflicted error
+                d.appendVar('SSTATE_DUPWHITELIST', ' %s' % deplor_dir_pkgtype)
+
+            d.setVar(pkgcomparefunc, d.getVar('do_package_compare', False))
+            d.setVarFlags(pkgcomparefunc, d.getVarFlags('do_package_compare', False))
+            d.appendVarFlag(pkgcomparefunc, 'depends', ' build-compare-native:do_populate_sysroot')
+            bb.build.addtask(pkgcomparefunc, 'do_build', 'do_packagedata ' + pkgwritefunc, d)
+}
+
+# This isn't the real task function - it's a template that we use in the
+# anonymous python code above
+fakeroot python do_package_compare () {
+    currenttask = d.getVar('BB_CURRENTTASK', True)
+    pkgtype = currenttask.rsplit('_', 1)[1]
+    package_compare_impl(pkgtype, d)
+}
+
+def package_compare_impl(pkgtype, d):
+    import errno
+    import fnmatch
+    import glob
+    import subprocess
+    import oe.sstatesig
+
+    pn = d.getVar('PN', True)
+    deploydir = d.getVar('DEPLOY_DIR_%s' % pkgtype.upper(), True)
+    prepath = deploydir + '-prediff/'
+
+    # Find out PKGR values are
+    pkgdatadir = d.getVar('PKGDATA_DIR', True)
+    packages = []
+    try:
+        with open(os.path.join(pkgdatadir, pn), 'r') as f:
+            for line in f:
+                if line.startswith('PACKAGES:'):
+                    packages = line.split(':', 1)[1].split()
+                    break
+    except IOError as e:
+        if e.errno == errno.ENOENT:
+            pass
+
+    if not packages:
+        bb.debug(2, '%s: no packages, nothing to do' % pn)
+        return
+
+    pkgrvalues = {}
+    rpkgnames = {}
+    rdepends = {}
+    pkgvvalues = {}
+    for pkg in packages:
+        with open(os.path.join(pkgdatadir, 'runtime', pkg), 'r') as f:
+            for line in f:
+                if line.startswith('PKGR:'):
+                    pkgrvalues[pkg] = line.split(':', 1)[1].strip()
+                if line.startswith('PKGV:'):
+                    pkgvvalues[pkg] = line.split(':', 1)[1].strip()
+                elif line.startswith('PKG_%s:' % pkg):
+                    rpkgnames[pkg] = line.split(':', 1)[1].strip()
+                elif line.startswith('RDEPENDS_%s:' % pkg):
+                    rdepends[pkg] = line.split(':', 1)[1].strip()
+
+    # Prepare a list of the runtime package names for packages that were
+    # actually produced
+    rpkglist = []
+    for pkg, rpkg in rpkgnames.items():
+        if os.path.exists(os.path.join(pkgdatadir, 'runtime', pkg + '.packaged')):
+            rpkglist.append((rpkg, pkg))
+    rpkglist.sort(key=lambda x: len(x[0]), reverse=True)
+
+    pvu = d.getVar('PV', False)
+    if '$' + '{SRCPV}' in pvu:
+        pvprefix = pvu.split('$' + '{SRCPV}', 1)[0]
+    else:
+        pvprefix = None
+
+    pkgwritetask = 'package_write_%s' % pkgtype
+    files = []
+    docopy = False
+    manifest, _ = oe.sstatesig.sstate_get_manifest_filename(pkgwritetask, d)
+    mlprefix = d.getVar('MLPREFIX', True)
+    # Copy recipe's all packages if one of the packages are different to make
+    # they have the same PR.
+    with open(manifest, 'r') as f:
+        for line in f:
+            if line.startswith(prepath):
+                srcpath = line.rstrip()
+                if os.path.isfile(srcpath):
+                    destpath = os.path.join(deploydir, os.path.relpath(srcpath, prepath))
+
+                    # This is crude but should work assuming the output
+                    # package file name starts with the package name
+                    # and rpkglist is sorted by length (descending)
+                    pkgbasename = os.path.basename(destpath)
+                    pkgname = None
+                    for rpkg, pkg in rpkglist:
+                        if mlprefix and pkgtype == 'rpm' and rpkg.startswith(mlprefix):
+                            rpkg = rpkg[len(mlprefix):]
+                        if pkgbasename.startswith(rpkg):
+                            pkgr = pkgrvalues[pkg]
+                            destpathspec = destpath.replace(pkgr, '*')
+                            if pvprefix:
+                                pkgv = pkgvvalues[pkg]
+                                if pkgv.startswith(pvprefix):
+                                    pkgvsuffix = pkgv[len(pvprefix):]
+                                    if '+' in pkgvsuffix:
+                                        newpkgv = pvprefix + '*+' + pkgvsuffix.split('+', 1)[1]
+                                        destpathspec = destpathspec.replace(pkgv, newpkgv)
+                            pkgname = pkg
+                            break
+                    else:
+                        bb.warn('Unable to map %s back to package' % pkgbasename)
+                        destpathspec = destpath
+
+                    oldfile = None
+                    if not docopy:
+                        oldfiles = glob.glob(destpathspec)
+                        if oldfiles:
+                            oldfile = oldfiles[-1]
+                            result = subprocess.call(['pkg-diff.sh', oldfile, srcpath])
+                            if result != 0:
+                                docopy = True
+                                bb.note("%s and %s are different, will copy packages" % (oldfile, srcpath))
+                        else:
+                            docopy = True
+                            bb.note("No old packages found for %s, will copy packages" % pkgname)
+
+                    files.append((pkgname, pkgbasename, srcpath, destpath))
+
+    # Remove all the old files and copy again if docopy
+    if docopy:
+        bb.plain('Copying packages for recipe %s' % pn)
+        pcmanifest = os.path.join(prepath, d.expand('pkg-compare-manifest-${MULTIMACH_TARGET_SYS}-${PN}'))
+        try:
+            with open(pcmanifest, 'r') as f:
+                for line in f:
+                    fn = line.rstrip()
+                    if fn:
+                        try:
+                            os.remove(fn)
+                            bb.note('Removed old package %s' % fn)
+                        except OSError as e:
+                            if e.errno == errno.ENOENT:
+                                pass
+        except IOError as e:
+            if e.errno == errno.ENOENT:
+                pass
+
+        # Create new manifest
+        with open(pcmanifest, 'w') as f:
+            for pkgname, pkgbasename, srcpath, destpath in files:
+                destdir = os.path.dirname(destpath)
+                bb.utils.mkdirhier(destdir)
+                # Remove allarch rpm pkg if it is already existed (for
+                # multilib), they're identical in theory, but sstate.bbclass
+                # copies it again, so keep align with that.
+                if os.path.exists(destpath) and pkgtype == 'rpm' \
+                        and d.getVar('PACKAGE_ARCH', True) == 'all':
+                    os.unlink(destpath)
+                if (os.stat(srcpath).st_dev == os.stat(destdir).st_dev):
+                    # Use a hard link to save space
+                    os.link(srcpath, destpath)
+                else:
+                    shutil.copyfile(srcpath, destpath)
+                f.write('%s\n' % destpath)
+    else:
+        bb.plain('Not copying packages for recipe %s' % pn)
+
+do_cleansstate[postfuncs] += "pfs_cleanpkgs"
+python pfs_cleanpkgs () {
+    import errno
+    for pkgclass in (d.getVar('PACKAGE_CLASSES', True) or '').split():
+        if pkgclass.startswith('package_'):
+            pkgtype = pkgclass.split('_', 1)[1]
+            deploydir = d.getVar('DEPLOY_DIR_%s' % pkgtype.upper(), True)
+            prepath = deploydir + '-prediff'
+            pcmanifest = os.path.join(prepath, d.expand('pkg-compare-manifest-${MULTIMACH_TARGET_SYS}-${PN}'))
+            try:
+                with open(pcmanifest, 'r') as f:
+                    for line in f:
+                        fn = line.rstrip()
+                        if fn:
+                            try:
+                                os.remove(fn)
+                            except OSError as e:
+                                if e.errno == errno.ENOENT:
+                                    pass
+                os.remove(pcmanifest)
+            except IOError as e:
+                if e.errno == errno.ENOENT:
+                    pass
+}
diff --git a/import-layers/yocto-poky/meta/classes/packagegroup.bbclass b/import-layers/yocto-poky/meta/classes/packagegroup.bbclass
index 38bdbd3..3928c8a 100644
--- a/import-layers/yocto-poky/meta/classes/packagegroup.bbclass
+++ b/import-layers/yocto-poky/meta/classes/packagegroup.bbclass
@@ -14,6 +14,8 @@
 # Fully expanded - so it applies the overrides as well
 PACKAGE_ARCH_EXPANDED := "${PACKAGE_ARCH}"
 
+LICENSE ?= "MIT"
+
 inherit ${@oe.utils.ifelse(d.getVar('PACKAGE_ARCH_EXPANDED', True) == 'all', 'allarch', '')}
 
 # This automatically adds -dbg and -dev flavours of all PACKAGES
diff --git a/import-layers/yocto-poky/meta/classes/patch.bbclass b/import-layers/yocto-poky/meta/classes/patch.bbclass
index 3d22ad8..1f6927b 100644
--- a/import-layers/yocto-poky/meta/classes/patch.bbclass
+++ b/import-layers/yocto-poky/meta/classes/patch.bbclass
@@ -5,6 +5,9 @@
 
 PATCHDEPENDENCY = "${PATCHTOOL}-native:do_populate_sysroot"
 
+PATCH_GIT_USER_NAME ?= "OpenEmbedded"
+PATCH_GIT_USER_EMAIL ?= "oe.patch@oe"
+
 inherit terminal
 
 def src_patches(d, all = False ):
diff --git a/import-layers/yocto-poky/meta/classes/pixbufcache.bbclass b/import-layers/yocto-poky/meta/classes/pixbufcache.bbclass
index dbe11e1..3f48a0f 100644
--- a/import-layers/yocto-poky/meta/classes/pixbufcache.bbclass
+++ b/import-layers/yocto-poky/meta/classes/pixbufcache.bbclass
@@ -54,6 +54,7 @@
 # An error exit during populate_sysroot_setscene allows bitbake to
 # try to recover by re-building the package.
 #
+DEPENDS_append_class-native = " gdk-pixbuf-native"
 SSTATEPOSTINSTFUNCS_append_class-native = " pixbufcache_sstate_postinst"
 
 # See base.bbclass for the other half of this
@@ -61,7 +62,8 @@
 	if [ "${BB_CURRENTTASK}" = "populate_sysroot" ]; then
 		${gdkpixbuf_complete}
 	elif [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]; then
-		echo "${gdkpixbuf_complete}" >> ${STAGING_DIR}/sstatecompletions
+		if [ -x ${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders ]; then
+			echo "${gdkpixbuf_complete}" >> ${STAGING_DIR}/sstatecompletions
+		fi
 	fi
 }
-
diff --git a/import-layers/yocto-poky/meta/classes/populate_sdk_base.bbclass b/import-layers/yocto-poky/meta/classes/populate_sdk_base.bbclass
index 008bb57..4462b52 100644
--- a/import-layers/yocto-poky/meta/classes/populate_sdk_base.bbclass
+++ b/import-layers/yocto-poky/meta/classes/populate_sdk_base.bbclass
@@ -26,6 +26,8 @@
 SDK_OUTPUT = "${SDK_DIR}/image"
 SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
 
+SDKDEPLOYDIR = "${WORKDIR}/${SDKMACHINE}-deploy-${PN}-populate-sdk"
+
 B_task-populate-sdk = "${SDK_DIR}"
 
 SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${REAL_MULTIMACH_TARGET_SYS}"
@@ -58,8 +60,8 @@
 SDKEXTPATH ?= "~/${@d.getVar('DISTRO', True)}_sdk"
 SDK_TITLE ?= "${@d.getVar('DISTRO_NAME', True) or d.getVar('DISTRO', True)} SDK"
 
-SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
-SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
+SDK_TARGET_MANIFEST = "${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
+SDK_HOST_MANIFEST = "${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
 python write_target_sdk_manifest () {
     from oe.sdk import sdk_list_installed_packages
     from oe.utils import format_pkg_list
@@ -90,9 +92,9 @@
 # Some archs override this, we need the nativesdk version
 # turns out this is hard to get from the datastore due to TRANSLATED_TARGET_ARCH
 # manipulation.
-SDK_OLDEST_KERNEL = "2.6.32"
+SDK_OLDEST_KERNEL = "3.2.0"
 
-fakeroot python do_populate_sdk() {
+def populate_sdk_common(d):
     from oe.sdk import populate_sdk
     from oe.manifest import create_manifest, Manifest
 
@@ -114,7 +116,16 @@
                     manifest_type=Manifest.MANIFEST_TYPE_SDK_TARGET)
 
     populate_sdk(d)
+
+fakeroot python do_populate_sdk() {
+    populate_sdk_common(d)
 }
+SSTATETASKS += "do_populate_sdk"
+SSTATE_SKIP_CREATION_task-populate-sdk = '1'
+do_populate_sdk[cleandirs] = "${SDKDEPLOYDIR}"
+do_populate_sdk[sstate-inputdirs] = "${SDKDEPLOYDIR}"
+do_populate_sdk[sstate-outputdirs] = "${SDK_DEPLOY}"
+do_populate_sdk[stamp-extra-info] = "${MACHINE}${SDKMACHINE}"
 
 fakeroot create_sdk_files() {
 	cp ${COREBASE}/scripts/relocate_sdk.py ${SDK_OUTPUT}/${SDKPATH}/
@@ -136,7 +147,8 @@
         return os.path.abspath(path)
 
     # Get scan root
-    SCAN_ROOT = norm_path("${SDK_OUTPUT}/${SDKPATH}/sysroots/")
+    SCAN_ROOT = norm_path("%s/%s/sysroots/" % (d.getVar('SDK_OUTPUT', True),
+                                               d.getVar('SDKPATH', True)))
 
     bb.note('Checking SDK sysroots at ' + SCAN_ROOT)
 
@@ -180,14 +192,14 @@
 
 fakeroot tar_sdk() {
 	# Package it up
-	mkdir -p ${SDK_DEPLOY}
+	mkdir -p ${SDKDEPLOYDIR}
 	cd ${SDK_OUTPUT}/${SDKPATH}
-	tar ${SDKTAROPTS} -cf - . | pixz > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+	tar ${SDKTAROPTS} -cf - . | pixz > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
 }
 
 fakeroot create_shar() {
 	# copy in the template shar extractor script
-	cp ${COREBASE}/meta/files/toolchain-shar-extract.sh ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
+	cp ${COREBASE}/meta/files/toolchain-shar-extract.sh ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
 
 	rm -f ${T}/pre_install_command ${T}/post_install_command
 
@@ -203,7 +215,7 @@
 EOF
 	sed -i -e '/@SDK_PRE_INSTALL_COMMAND@/r ${T}/pre_install_command' \
 		-e '/@SDK_POST_INSTALL_COMMAND@/r ${T}/post_install_command' \
-		${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
+		${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
 
 	# substitute variables
 	sed -i -e 's#@SDK_ARCH@#${SDK_ARCH}#g' \
@@ -215,16 +227,16 @@
 		-e 's#@SDK_VERSION@#${SDK_VERSION}#g' \
 		-e '/@SDK_PRE_INSTALL_COMMAND@/d' \
 		-e '/@SDK_POST_INSTALL_COMMAND@/d' \
-		${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
+		${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
 
 	# add execution permission
-	chmod +x ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
+	chmod +x ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
 
 	# append the SDK tarball
-	cat ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >> ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
+	cat ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz >> ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
 
 	# delete the old tarball, we don't need it anymore
-	rm ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
+	rm ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.xz
 }
 
 populate_sdk_log_check() {
@@ -251,7 +263,7 @@
 def sdk_variables(d):
     variables = ['BUILD_IMAGES_FROM_FEEDS','SDK_OS','SDK_OUTPUT','SDKPATHNATIVE','SDKTARGETSYSROOT','SDK_DIR','SDK_VENDOR','SDKIMAGE_INSTALL_COMPLEMENTARY','SDK_PACKAGE_ARCHS','SDK_OUTPUT',
                  'SDKTARGETSYSROOT','MULTILIB_VARIANTS','MULTILIBS','ALL_MULTILIB_PACKAGE_ARCHS','MULTILIB_GLOBAL_VARIANTS','BAD_RECOMMENDATIONS','NO_RECOMMENDATIONS','PACKAGE_ARCHS',
-                 'PACKAGE_CLASSES','TARGET_VENDOR','TARGET_VENDOR','TARGET_ARCH','TARGET_OS','BBEXTENDVARIANT','FEED_DEPLOYDIR_BASE_URI']
+                 'PACKAGE_CLASSES','TARGET_VENDOR','TARGET_VENDOR','TARGET_ARCH','TARGET_OS','BBEXTENDVARIANT','FEED_DEPLOYDIR_BASE_URI', 'PACKAGE_EXCLUDE_COMPLEMENTARY']
     variables.extend(sdk_command_variables(d))
     return " ".join(variables)
 
diff --git a/import-layers/yocto-poky/meta/classes/populate_sdk_ext.bbclass b/import-layers/yocto-poky/meta/classes/populate_sdk_ext.bbclass
index 87518d1..0f0525d 100644
--- a/import-layers/yocto-poky/meta/classes/populate_sdk_ext.bbclass
+++ b/import-layers/yocto-poky/meta/classes/populate_sdk_ext.bbclass
@@ -20,34 +20,43 @@
 
 # Options are full or minimal
 SDK_EXT_TYPE ?= "full"
+SDK_INCLUDE_PKGDATA ?= "0"
+SDK_INCLUDE_TOOLCHAIN ?= "${@'1' if d.getVar('SDK_EXT_TYPE', True) == 'full' else '0'}"
 
 SDK_RECRDEP_TASKS ?= ""
 
 SDK_LOCAL_CONF_WHITELIST ?= ""
 SDK_LOCAL_CONF_BLACKLIST ?= "CONF_VERSION \
                              BB_NUMBER_THREADS \
+                             BB_NUMBER_PARSE_THREADS \
                              PARALLEL_MAKE \
                              PRSERV_HOST \
                              SSTATE_MIRRORS \
+                             DL_DIR \
+                             SSTATE_DIR \
+                             TMPDIR \
                             "
 SDK_INHERIT_BLACKLIST ?= "buildhistory icecc"
 SDK_UPDATE_URL ?= ""
 
 SDK_TARGETS ?= "${PN}"
 
-def get_sdk_install_targets(d):
+def get_sdk_install_targets(d, images_only=False):
     sdk_install_targets = ''
-    if d.getVar('SDK_EXT_TYPE', True) != 'minimal':
+    if images_only or d.getVar('SDK_EXT_TYPE', True) != 'minimal':
         sdk_install_targets = d.getVar('SDK_TARGETS', True)
 
         depd = d.getVar('BB_TASKDEPDATA', False)
-        for v in depd.itervalues():
+        for v in depd.values():
             if v[1] == 'do_image_complete':
                 if v[0] not in sdk_install_targets:
                     sdk_install_targets += ' {}'.format(v[0])
 
-    if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1':
-        sdk_install_targets += ' meta-world-pkgdata:do_allpackagedata'
+    if not images_only:
+        if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1':
+            sdk_install_targets += ' meta-world-pkgdata:do_allpackagedata'
+        if d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1':
+            sdk_install_targets += ' meta-extsdk-toolchain:do_populate_sysroot'
 
     return sdk_install_targets
 
@@ -76,6 +85,67 @@
 
 SDK_TITLE_task-populate-sdk-ext = "${@d.getVar('DISTRO_NAME', True) or d.getVar('DISTRO', True)} Extensible SDK"
 
+def clean_esdk_builddir(d, sdkbasepath):
+    """Clean up traces of the fake build for create_filtered_tasklist()"""
+    import shutil
+    cleanpaths = 'cache conf/sanity_info conf/templateconf.cfg tmp'.split()
+    for pth in cleanpaths:
+        fullpth = os.path.join(sdkbasepath, pth)
+        if os.path.isdir(fullpth):
+            shutil.rmtree(fullpth)
+        elif os.path.isfile(fullpth):
+            os.remove(fullpth)
+
+def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath):
+    """
+    Create a filtered list of tasks. Also double-checks that the build system
+    within the SDK basically works and required sstate artifacts are available.
+    """
+    import tempfile
+    import shutil
+    import oe.copy_buildsystem
+
+    # Create a temporary build directory that we can pass to the env setup script
+    shutil.copyfile(sdkbasepath + '/conf/local.conf', sdkbasepath + '/conf/local.conf.bak')
+    try:
+        with open(sdkbasepath + '/conf/local.conf', 'a') as f:
+            # Force the use of sstate from the build system
+            f.write('\nSSTATE_DIR_forcevariable = "%s"\n' % d.getVar('SSTATE_DIR', True))
+            f.write('SSTATE_MIRRORS_forcevariable = ""\n')
+            # Ensure TMPDIR is the default so that clean_esdk_builddir() can delete it
+            f.write('TMPDIR_forcevariable = "${TOPDIR}/tmp"\n')
+            # Drop uninative if the build isn't using it (or else NATIVELSBSTRING will
+            # be different and we won't be able to find our native sstate)
+            if not bb.data.inherits_class('uninative', d):
+                f.write('INHERIT_remove = "uninative"\n')
+
+        # Unfortunately the default SDKPATH (or even a custom value) may contain characters that bitbake
+        # will not allow in its COREBASE path, so we need to rename the directory temporarily
+        temp_sdkbasepath = d.getVar('SDK_OUTPUT', True) + '/tmp-renamed-sdk'
+        # Delete any existing temp dir
+        try:
+            shutil.rmtree(temp_sdkbasepath)
+        except FileNotFoundError:
+            pass
+        os.rename(sdkbasepath, temp_sdkbasepath)
+        try:
+            cmdprefix = '. %s .; ' % conf_initpath
+            logfile = d.getVar('WORKDIR', True) + '/tasklist_bb_log.txt'
+            try:
+                oe.copy_buildsystem.check_sstate_task_list(d, get_sdk_install_targets(d), tasklistfile, cmdprefix=cmdprefix, cwd=temp_sdkbasepath, logfile=logfile)
+            except bb.process.ExecutionError as e:
+                msg = 'Failed to generate filtered task list for extensible SDK:\n%s' %  e.stdout.rstrip()
+                if 'attempted to execute unexpectedly and should have been setscened' in e.stdout:
+                    msg += '\n----------\n\nNOTE: "attempted to execute unexpectedly and should have been setscened" errors indicate this may be caused by missing sstate artifacts that were likely produced in earlier builds, but have been subsequently deleted for some reason.\n'
+                bb.fatal(msg)
+        finally:
+            os.rename(temp_sdkbasepath, sdkbasepath)
+        # Clean out residue of running bitbake, which check_sstate_task_list()
+        # will effectively do
+        clean_esdk_builddir(d, sdkbasepath)
+    finally:
+        os.replace(sdkbasepath + '/conf/local.conf.bak', sdkbasepath + '/conf/local.conf')
+
 python copy_buildsystem () {
     import re
     import shutil
@@ -125,8 +195,8 @@
     d.setVar('scriptrelpath', scriptrelpath)
 
     # Write out config file for devtool
-    import ConfigParser
-    config = ConfigParser.SafeConfigParser()
+    import configparser
+    config = configparser.SafeConfigParser()
     config.add_section('General')
     config.set('General', 'bitbake_subdir', conf_bbpath)
     config.set('General', 'init_path', conf_initpath)
@@ -170,6 +240,14 @@
         f.write('    $' + '{SDKBASEMETAPATH}/workspace \\\n')
         f.write('    "\n')
 
+    # Copy uninative tarball
+    # For now this is where uninative.bbclass expects the tarball
+    uninative_file = d.expand('${SDK_DEPLOY}/${BUILD_ARCH}-nativesdk-libc.tar.bz2')
+    uninative_checksum = bb.utils.sha256_file(uninative_file)
+    uninative_outdir = '%s/downloads/uninative/%s' % (baseoutpath, uninative_checksum)
+    bb.utils.mkdirhier(uninative_outdir)
+    shutil.copy(uninative_file, uninative_outdir)
+
     env_whitelist = (d.getVar('BB_ENV_EXTRAWHITE', True) or '').split()
     env_whitelist_values = {}
 
@@ -204,7 +282,10 @@
             # Write a newline just in case there's none at the end of the original
             f.write('\n')
 
-            f.write('INHERIT += "%s"\n\n' % 'uninative')
+            f.write('DL_DIR = "${TOPDIR}/downloads"\n')
+
+            f.write('INHERIT += "%s"\n' % 'uninative')
+            f.write('UNINATIVE_CHECKSUM[%s] = "%s"\n\n' % (d.getVar('BUILD_ARCH', True), uninative_checksum))
             f.write('CONF_VERSION = "%s"\n\n' % d.getVar('CONF_VERSION', False))
 
             # Some classes are not suitable for SDK, remove them from INHERIT
@@ -219,9 +300,12 @@
             # warning.
             f.write('SIGGEN_LOCKEDSIGS_SSTATE_EXISTS_CHECK = "none"\n\n')
 
-            # Error if the sigs in the locked-signature file don't match
+            # Warn if the sigs in the locked-signature file don't match
             # the sig computed from the metadata.
-            f.write('SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "error"\n\n')
+            f.write('SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "warn"\n\n')
+
+            # Set up whitelist for run on install
+            f.write('BB_SETSCENE_ENFORCE_WHITELIST = "%:* *:do_shared_workdir *:do_rm_work"\n\n')
 
             # Hide the config information from bitbake output (since it's fixed within the SDK)
             f.write('BUILDCFG_HEADER = ""\n')
@@ -263,7 +347,7 @@
     # Ensure any variables set from the external environment (by way of
     # BB_ENV_EXTRAWHITE) are set in the SDK's configuration
     extralines = []
-    for name, value in env_whitelist_values.iteritems():
+    for name, value in env_whitelist_values.items():
         actualvalue = d.getVar(name, True) or ''
         if value != actualvalue:
             extralines.append('%s = "%s"\n' % (name, actualvalue))
@@ -276,7 +360,7 @@
             f.write('\n')
 
     # Filter the locked signatures file to just the sstate tasks we are interested in
-    excluded_targets = d.getVar('SDK_TARGETS', True)
+    excluded_targets = get_sdk_install_targets(d, images_only=True)
     sigfile = d.getVar('WORKDIR', True) + '/locked-sigs.inc'
     lockedsigs_pruned = baseoutpath + '/conf/locked-sigs.inc'
     oe.copy_buildsystem.prune_lockedsigs([],
@@ -289,6 +373,15 @@
     # uninative.bbclass sets NATIVELSBSTRING to 'universal'
     fixedlsbstring = 'universal'
 
+    sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1')
+    sdk_ext_type = d.getVar('SDK_EXT_TYPE', True)
+    if sdk_ext_type != 'minimal' or sdk_include_toolchain or derivative:
+        # Create the filtered task list used to generate the sstate cache shipped with the SDK
+        tasklistfn = d.getVar('WORKDIR', True) + '/tasklist.txt'
+        create_filtered_tasklist(d, baseoutpath, tasklistfn, conf_initpath)
+    else:
+        tasklistfn = None
+
     # Add packagedata if enabled
     if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1':
         lockedsigs_base = d.getVar('WORKDIR', True) + '/locked-sigs-base.inc'
@@ -300,7 +393,21 @@
                                              lockedsigs_pruned,
                                              lockedsigs_copy)
 
-    if d.getVar('SDK_EXT_TYPE', True) == 'minimal':
+    if sdk_include_toolchain:
+        lockedsigs_base = d.getVar('WORKDIR', True) + '/locked-sigs-base2.inc'
+        lockedsigs_toolchain = d.getVar('STAGING_DIR_HOST', True) + '/locked-sigs/locked-sigs-extsdk-toolchain.inc'
+        shutil.move(lockedsigs_pruned, lockedsigs_base)
+        oe.copy_buildsystem.merge_lockedsigs([],
+                                             lockedsigs_base,
+                                             lockedsigs_toolchain,
+                                             lockedsigs_pruned)
+        oe.copy_buildsystem.create_locked_sstate_cache(lockedsigs_toolchain,
+                                                       d.getVar('SSTATE_DIR', True),
+                                                       sstate_out, d,
+                                                       fixedlsbstring,
+                                                       filterfile=tasklistfn)
+
+    if sdk_ext_type == 'minimal':
         if derivative:
             # Assume the user is not going to set up an additional sstate
             # mirror, thus we need to copy the additional artifacts (from
@@ -316,12 +423,14 @@
                 oe.copy_buildsystem.create_locked_sstate_cache(lockedsigs_extra,
                                                                d.getVar('SSTATE_DIR', True),
                                                                sstate_out, d,
-                                                               fixedlsbstring)
+                                                               fixedlsbstring,
+                                                               filterfile=tasklistfn)
     else:
         oe.copy_buildsystem.create_locked_sstate_cache(lockedsigs_pruned,
                                                        d.getVar('SSTATE_DIR', True),
                                                        sstate_out, d,
-                                                       fixedlsbstring)
+                                                       fixedlsbstring,
+                                                       filterfile=tasklistfn)
 
     # We don't need sstate do_package files
     for root, dirs, files in os.walk(sstate_out):
@@ -346,38 +455,98 @@
                 f.write('%s\t%s\n' % (chksum, os.path.relpath(fn, baseoutpath)))
 }
 
-def extsdk_get_buildtools_filename(d):
-    return '*-buildtools-nativesdk-standalone-*.sh'
+def get_current_buildtools(d):
+    """Get the file name of the current buildtools installer"""
+    import glob
+    btfiles = glob.glob(os.path.join(d.getVar('SDK_DEPLOY', True), '*-buildtools-nativesdk-standalone-*.sh'))
+    btfiles.sort(key=os.path.getctime)
+    return os.path.basename(btfiles[-1])
+
+def get_sdk_required_utilities(buildtools_fn, d):
+    """Find required utilities that aren't provided by the buildtools"""
+    sanity_required_utilities = (d.getVar('SANITY_REQUIRED_UTILITIES', True) or '').split()
+    sanity_required_utilities.append(d.expand('${BUILD_PREFIX}gcc'))
+    sanity_required_utilities.append(d.expand('${BUILD_PREFIX}g++'))
+    buildtools_installer = os.path.join(d.getVar('SDK_DEPLOY', True), buildtools_fn)
+    filelist, _ = bb.process.run('%s -l' % buildtools_installer)
+    localdata = bb.data.createCopy(d)
+    localdata.setVar('SDKPATH', '.')
+    sdkpathnative = localdata.getVar('SDKPATHNATIVE', True)
+    sdkbindirs = [localdata.getVar('bindir_nativesdk', True),
+                  localdata.getVar('sbindir_nativesdk', True),
+                  localdata.getVar('base_bindir_nativesdk', True),
+                  localdata.getVar('base_sbindir_nativesdk', True)]
+    for line in filelist.splitlines():
+        splitline = line.split()
+        if len(splitline) > 5:
+            fn = splitline[5]
+            if not fn.startswith('./'):
+                fn = './%s' % fn
+            if fn.startswith(sdkpathnative):
+                relpth = '/' + os.path.relpath(fn, sdkpathnative)
+                for bindir in sdkbindirs:
+                    if relpth.startswith(bindir):
+                        relpth = os.path.relpath(relpth, bindir)
+                        if relpth in sanity_required_utilities:
+                            sanity_required_utilities.remove(relpth)
+                        break
+    return ' '.join(sanity_required_utilities)
 
 install_tools() {
 	install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}
-	lnr ${SDK_OUTPUT}/${SDKPATH}/${scriptrelpath}/devtool ${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/devtool
-	lnr ${SDK_OUTPUT}/${SDKPATH}/${scriptrelpath}/recipetool ${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/recipetool
+	scripts="devtool recipetool oe-find-native-sysroot runqemu*"
+	for script in $scripts; do
+		for scriptfn in `find ${SDK_OUTPUT}/${SDKPATH}/${scriptrelpath} -maxdepth 1 -executable -name "$script"`; do
+			lnr ${scriptfn} ${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/`basename $scriptfn`
+		done
+	done
+	# We can't use the same method as above because files in the sysroot won't exist at this point
+	# (they get populated from sstate on installation)
+	if [ "${SDK_INCLUDE_TOOLCHAIN}" == "1" ] ; then
+		binrelpath=${@os.path.relpath(d.getVar('STAGING_BINDIR_NATIVE',True), d.getVar('TOPDIR', True))}
+		lnr ${SDK_OUTPUT}/${SDKPATH}/$binrelpath/unfsd ${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/unfsd
+	fi
 	touch ${SDK_OUTPUT}/${SDKPATH}/.devtoolbase
 
-	localconf=${SDK_OUTPUT}/${SDKPATH}/conf/local.conf
-
 	# find latest buildtools-tarball and install it
-	buildtools_path=`ls -t1 ${SDK_DEPLOY}/${@extsdk_get_buildtools_filename(d)} | head -n1`
-	install $buildtools_path ${SDK_OUTPUT}/${SDKPATH}
-
-	# For now this is where uninative.bbclass expects the tarball
-	chksum=`sha256sum ${SDK_DEPLOY}/${BUILD_ARCH}-nativesdk-libc.tar.bz2 | cut -f 1 -d ' '`
-	install -d ${SDK_OUTPUT}/${SDKPATH}/downloads/uninative/$chksum/
-	install ${SDK_DEPLOY}/${BUILD_ARCH}-nativesdk-libc.tar.bz2 ${SDK_OUTPUT}/${SDKPATH}/downloads/uninative/$chksum/
-	echo "UNINATIVE_CHECKSUM[${BUILD_ARCH}] = '$chksum'" >> ${SDK_OUTPUT}/${SDKPATH}/conf/local.conf
+	install ${SDK_DEPLOY}/${SDK_BUILDTOOLS_INSTALLER} ${SDK_OUTPUT}/${SDKPATH}
 
 	install -m 0644 ${COREBASE}/meta/files/ext-sdk-prepare.py ${SDK_OUTPUT}/${SDKPATH}
 }
 do_populate_sdk_ext[file-checksums] += "${COREBASE}/meta/files/ext-sdk-prepare.py:True"
 
-# Since bitbake won't run as root it doesn't make sense to try and install
-# the extensible sdk as root.
 sdk_ext_preinst() {
+	# Since bitbake won't run as root it doesn't make sense to try and install
+	# the extensible sdk as root.
 	if [ "`id -u`" = "0" ]; then
 		echo "ERROR: The extensible sdk cannot be installed as root."
 		exit 1
 	fi
+	if ! command -v locale > /dev/null; then
+		echo "ERROR: The installer requires the locale command, please install it first"
+		exit 1
+	fi
+        # Check setting of LC_ALL set above
+	canonicalised_locale=`echo $LC_ALL | sed 's/UTF-8/utf8/'`
+	if ! locale -a | grep -q $canonicalised_locale ; then
+		echo "ERROR: the installer requires the $LC_ALL locale to be installed (but not selected), please install it first"
+		exit 1
+	fi
+	# The relocation script used by buildtools installer requires python
+	if ! command -v python > /dev/null; then
+		echo "ERROR: The installer requires python, please install it first"
+		exit 1
+	fi
+	missing_utils=""
+	for util in ${SDK_REQUIRED_UTILITIES}; do
+		if ! command -v $util > /dev/null; then
+			missing_utils="$missing_utils $util"
+		fi
+	done
+	if [ -n "$missing_utils" ] ; then
+		echo "ERROR: the SDK requires the following missing utilities, please install them: $missing_utils"
+		exit 1
+	fi
 	SDK_EXTENSIBLE="1"
 	if [ "$publish" = "1" ] ; then
 		EXTRA_TAR_OPTIONS="$EXTRA_TAR_OPTIONS --exclude=ext-sdk-prepare.py"
@@ -392,14 +561,16 @@
 sdk_ext_postinst() {
 	printf "\nExtracting buildtools...\n"
 	cd $target_sdk_dir
-	printf "buildtools\ny" | ./*buildtools-nativesdk-standalone* > /dev/null || ( printf 'ERROR: buildtools installation failed\n' ; exit 1 )
+	env_setup_script="$target_sdk_dir/environment-setup-${REAL_MULTIMACH_TARGET_SYS}"
+	printf "buildtools\ny" | ./${SDK_BUILDTOOLS_INSTALLER} > buildtools.log || { printf 'ERROR: buildtools installation failed:\n' ; cat buildtools.log ; echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script ; exit 1 ; }
 
 	# Delete the buildtools tar file since it won't be used again
-	rm ./*buildtools-nativesdk-standalone*.sh -f
+	rm -f ./${SDK_BUILDTOOLS_INSTALLER}
+	# We don't need the log either since it succeeded
+	rm -f buildtools.log
 
 	# Make sure when the user sets up the environment, they also get
 	# the buildtools-tarball tools in their path.
-	env_setup_script="$target_sdk_dir/environment-setup-${REAL_MULTIMACH_TARGET_SYS}"
 	echo ". $target_sdk_dir/buildtools/environment-setup*" >> $env_setup_script
 
 	# Allow bitbake environment setup to be ran as part of this sdk.
@@ -420,7 +591,7 @@
 		# current working directory when first ran, nor will it set $1 when
 		# sourcing a script. That is why this has to look so ugly.
 		LOGFILE="$target_sdk_dir/preparing_build_system.log"
-		sh -c ". buildtools/environment-setup* > $LOGFILE && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> $LOGFILE && python $target_sdk_dir/ext-sdk-prepare.py '${SDK_INSTALL_TARGETS}' >> $LOGFILE 2>&1" || { echo "ERROR: SDK preparation failed: see $LOGFILE"; echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script ; exit 1 ; }
+		sh -c ". buildtools/environment-setup* > $LOGFILE && cd $target_sdk_dir/`dirname ${oe_init_build_env_path}` && set $target_sdk_dir && . $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> $LOGFILE && python $target_sdk_dir/ext-sdk-prepare.py $LOGFILE '${SDK_INSTALL_TARGETS}'" || { echo "printf 'ERROR: this SDK was not fully installed and needs reinstalling\n'" >> $env_setup_script ; exit 1 ; }
 		rm $target_sdk_dir/ext-sdk-prepare.py
 	fi
 	echo done
@@ -438,12 +609,22 @@
         bb.fatal('The extensible SDK can currently only be built for the same architecture as the machine being built on - SDK_ARCH is set to %s (likely via setting SDKMACHINE) which is different from the architecture of the build machine (%s). Unable to continue.' % (d.getVar('SDK_ARCH', True), d.getVar('BUILD_ARCH', True)))
 
     d.setVar('SDK_INSTALL_TARGETS', get_sdk_install_targets(d))
+    buildtools_fn = get_current_buildtools(d)
+    d.setVar('SDK_REQUIRED_UTILITIES', get_sdk_required_utilities(buildtools_fn, d))
+    d.setVar('SDK_BUILDTOOLS_INSTALLER', buildtools_fn)
+    d.setVar('SDKDEPLOYDIR', '${SDKEXTDEPLOYDIR}')
 
-    bb.build.exec_func("do_populate_sdk", d)
+    populate_sdk_common(d)
 }
 
 def get_ext_sdk_depends(d):
-    return d.getVarFlag('do_rootfs', 'depends', True) + ' ' + d.getVarFlag('do_build', 'depends', True)
+    # Note: the deps varflag is a list not a string, so we need to specify expand=False
+    deps = d.getVarFlag('do_image_complete', 'deps', False)
+    pn = d.getVar('PN', True)
+    deplist = ['%s:%s' % (pn, dep) for dep in deps]
+    for task in ['do_image_complete', 'do_rootfs', 'do_build']:
+        deplist.extend((d.getVarFlag(task, 'depends', True) or '').split())
+    return ' '.join(deplist)
 
 python do_sdk_depends() {
     # We have to do this separately in its own task so we avoid recursing into
@@ -471,7 +652,8 @@
 
 do_populate_sdk_ext[depends] = "${@d.getVarFlag('do_populate_sdk', 'depends', False)} \
                                 buildtools-tarball:do_populate_sdk uninative-tarball:do_populate_sdk \
-                                ${@'meta-world-pkgdata:do_collect_packagedata' if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1' else ''}"
+                                ${@'meta-world-pkgdata:do_collect_packagedata' if d.getVar('SDK_INCLUDE_PKGDATA', True) == '1' else ''} \
+                                ${@'meta-extsdk-toolchain:do_locked_sigs' if d.getVar('SDK_INCLUDE_TOOLCHAIN', True) == '1' else ''}"
 
 do_populate_sdk_ext[rdepends] += "${@' '.join([x + ':do_build' for x in d.getVar('SDK_TARGETS', True).split()])}"
 
@@ -484,4 +666,13 @@
 # always runs.
 do_populate_sdk_ext[nostamp] = "1"
 
+SDKEXTDEPLOYDIR = "${WORKDIR}/deploy-${PN}-populate-sdk-ext"
+
+SSTATETASKS += "do_populate_sdk_ext"
+SSTATE_SKIP_CREATION_task-populate-sdk-ext = '1'
+do_populate_sdk_ext[cleandirs] = "${SDKDEPLOYDIR}"
+do_populate_sdk_ext[sstate-inputdirs] = "${SDKEXTDEPLOYDIR}"
+do_populate_sdk_ext[sstate-outputdirs] = "${SDK_DEPLOY}"
+do_populate_sdk_ext[stamp-extra-info] = "${MACHINE}"
+
 addtask populate_sdk_ext after do_sdk_depends
diff --git a/import-layers/yocto-poky/meta/classes/python-dir.bbclass b/import-layers/yocto-poky/meta/classes/python-dir.bbclass
index ebfa4b3..a11dc35 100644
--- a/import-layers/yocto-poky/meta/classes/python-dir.bbclass
+++ b/import-layers/yocto-poky/meta/classes/python-dir.bbclass
@@ -1,5 +1,5 @@
-PYTHON_BASEVERSION ?= "2.7"
-PYTHON_ABI ?= ""
+PYTHON_BASEVERSION = "2.7"
+PYTHON_ABI = ""
 PYTHON_DIR = "python${PYTHON_BASEVERSION}"
-PYTHON_PN = "python${@'' if '${PYTHON_BASEVERSION}'.startswith('2') else '3'}"
+PYTHON_PN = "python"
 PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/import-layers/yocto-poky/meta/classes/python3-dir.bbclass b/import-layers/yocto-poky/meta/classes/python3-dir.bbclass
new file mode 100644
index 0000000..06bb046
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/python3-dir.bbclass
@@ -0,0 +1,5 @@
+PYTHON_BASEVERSION = "3.5"
+PYTHON_ABI = "m"
+PYTHON_DIR = "python${PYTHON_BASEVERSION}"
+PYTHON_PN = "python3"
+PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/import-layers/yocto-poky/meta/classes/python3native.bbclass b/import-layers/yocto-poky/meta/classes/python3native.bbclass
index 8ec6b76..ef468b3 100644
--- a/import-layers/yocto-poky/meta/classes/python3native.bbclass
+++ b/import-layers/yocto-poky/meta/classes/python3native.bbclass
@@ -1,7 +1,13 @@
-PYTHON_BASEVERSION = "3.5"
-
-inherit python-dir
+inherit python3-dir
 
 PYTHON="${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN}"
 EXTRANATIVEPATH += "${PYTHON_PN}-native"
-DEPENDS += " ${PYTHON_PN}-native "
+DEPENDS_append = " ${PYTHON_PN}-native "
+
+# python-config and other scripts are using distutils modules
+# which we patch to access these variables
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+# autoconf macros will use their internal default preference otherwise
+export PYTHON
diff --git a/import-layers/yocto-poky/meta/classes/pythonnative.bbclass b/import-layers/yocto-poky/meta/classes/pythonnative.bbclass
index 97029dc..4e0381b 100644
--- a/import-layers/yocto-poky/meta/classes/pythonnative.bbclass
+++ b/import-layers/yocto-poky/meta/classes/pythonnative.bbclass
@@ -5,4 +5,12 @@
 # PYTHON_EXECUTABLE is used by cmake
 PYTHON_EXECUTABLE="${PYTHON}"
 EXTRANATIVEPATH += "${PYTHON_PN}-native"
-DEPENDS += " ${PYTHON_PN}-native "
+DEPENDS_append = " ${PYTHON_PN}-native "
+
+# python-config and other scripts are using distutils modules
+# which we patch to access these variables
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+# autoconf macros will use their internal default preference otherwise
+export PYTHON
diff --git a/import-layers/yocto-poky/meta/classes/qemu.bbclass b/import-layers/yocto-poky/meta/classes/qemu.bbclass
index 75739db..f2d4d1c 100644
--- a/import-layers/yocto-poky/meta/classes/qemu.bbclass
+++ b/import-layers/yocto-poky/meta/classes/qemu.bbclass
@@ -4,6 +4,11 @@
 #
 
 def qemu_target_binary(data):
+    package_arch = data.getVar("PACKAGE_ARCH", True)
+    qemu_target_binary = (data.getVar("QEMU_TARGET_BINARY_%s" % package_arch, True) or "")
+    if qemu_target_binary:
+        return qemu_target_binary
+
     target_arch = data.getVar("TARGET_ARCH", True)
     if target_arch in ("i486", "i586", "i686"):
         target_arch = "i386"
diff --git a/import-layers/yocto-poky/meta/classes/qemuboot.bbclass b/import-layers/yocto-poky/meta/classes/qemuboot.bbclass
new file mode 100644
index 0000000..b5cc93d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/qemuboot.bbclass
@@ -0,0 +1,82 @@
+# Help runqemu boot target board, "QB" means Qemu Boot, the following
+# vars can be set in conf files, such as <bsp.conf> to make it can be
+# boot by runqemu:
+#
+# QB_SYSTEM_NAME: qemu name, e.g., "qemu-system-i386"
+# QB_OPT_APPEND: options to append to qemu, e.g., "-show-cursor"
+# QB_DEFAULT_KERNEL: default kernel to boot, e.g., "bzImage"
+# QB_DEFAULT_FSTYPE: default FSTYPE to boot, e.g., "ext4"
+# QB_MEM: memory, e.g., "-m 512"
+# QB_MACHINE: qemu machine, e.g., "-machine virt"
+# QB_CPU: qemu cpu, e.g., "-cpu qemu32"
+# QB_CPU_KVM: the similar to QB_CPU, but used when kvm, e.g., '-cpu kvm64',
+#             set it when support kvm.
+# QB_KERNEL_CMDLINE_APPEND: options to append to kernel's -append
+#                           option, e.g., "console=ttyS0 console=tty"
+# QB_DTB: qemu dtb name
+# QB_AUDIO_DRV: qemu audio driver, e.g., "alsa", set it when support audio
+# QB_AUDIO_OPT: qemu audio option, e.g., "-soundhw ac97,es1370", used
+#               when QB_AUDIO_DRV is set.
+# QB_KERNEL_ROOT: kernel's root, e.g., /dev/vda
+# QB_TAP_OPT: netowrk option for 'tap' mode, e.g.,
+#             "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0"
+#              Note, runqemu will replace "@TAP@" with the one which is used, such as tap0, tap1 ...
+# QB_SLIRP_OPT: network option for SLIRP mode, e.g.,
+#             "-netdev user,id=net0 -device virtio-net-device,netdev=net0"
+# QB_ROOTFS_OPT: used as rootfs, e.g.,
+#               "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
+#              Note, runqemu will replace "@ROOTFS@" with the one which is used, such as core-image-minimal-qemuarm64.ext4.
+# QB_SERIAL_OPT: serial port, e.g., "-serial mon:stdio"
+# QB_TCPSERIAL_OPT: tcp serial port option, e.g.,
+#                   " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
+#                   Note, runqemu will replace "@PORT@" with the port number which is used.
+#
+# Usage:
+# IMAGE_CLASSES += "qemuboot"
+# See "runqemu help" for more info
+
+QB_MEM ?= "-m 256"
+QB_SERIAL_OPT ?= "-serial mon:stdio -serial null"
+QB_DEFAULT_KERNEL ?= "${KERNEL_IMAGETYPE}"
+QB_DEFAULT_FSTYPE ?= "ext4"
+QB_OPT_APPEND ?= "-show-cursor"
+
+# Create qemuboot.conf
+ROOTFS_POSTPROCESS_COMMAND += "write_qemuboot_conf; "
+
+python write_qemuboot_conf() {
+    import configparser
+
+    build_vars = ['MACHINE', 'TUNE_ARCH', 'DEPLOY_DIR_IMAGE', \
+                'KERNEL_IMAGETYPE', 'IMAGE_NAME', 'IMAGE_LINK_NAME', \
+                'STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE', \
+                'STAGING_DIR_HOST']
+
+    # Vars from bsp
+    qb_vars = []
+    for k in d.keys():
+        if k.startswith('QB_'):
+            qb_vars.append(k)
+
+    qemuboot = "%s/%s.qemuboot.conf" % (d.getVar('DEPLOY_DIR_IMAGE', True), d.getVar('IMAGE_NAME', True))
+    qemuboot_link = "%s/%s.qemuboot.conf" % (d.getVar('DEPLOY_DIR_IMAGE', True), d.getVar('IMAGE_LINK_NAME', True))
+    cf = configparser.ConfigParser()
+    cf.add_section('config_bsp')
+    for k in build_vars + qb_vars:
+        cf.set('config_bsp', k, '%s' % d.getVar(k, True))
+
+    # QB_DEFAULT_KERNEL's value of KERNEL_IMAGETYPE is the name of a symlink
+    # to the kernel file, which hinders relocatability of the qb conf.
+    # Read the link and replace it with the full filename of the target.
+    kernel_link = os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), d.getVar('QB_DEFAULT_KERNEL', True))
+    kernel = os.path.realpath(kernel_link)
+    cf.set('config_bsp', 'QB_DEFAULT_KERNEL', kernel)
+
+    bb.utils.mkdirhier(os.path.dirname(qemuboot))
+    with open(qemuboot, 'w') as f:
+        cf.write(f)
+
+    if os.path.lexists(qemuboot_link):
+       os.remove(qemuboot_link)
+    os.symlink(os.path.basename(qemuboot), qemuboot_link)
+}
diff --git a/import-layers/yocto-poky/meta/classes/recipe_sanity.bbclass b/import-layers/yocto-poky/meta/classes/recipe_sanity.bbclass
index 295611f..add34df 100644
--- a/import-layers/yocto-poky/meta/classes/recipe_sanity.bbclass
+++ b/import-layers/yocto-poky/meta/classes/recipe_sanity.bbclass
@@ -8,7 +8,7 @@
         return
 
     for var in d.getVar("__recipe_sanity_badruntimevars", True).split():
-        val = d.getVar(var, 0)
+        val = d.getVar(var, False)
         if val and val != cfgdata.get(var):
             __note("%s should be %s_${PN}" % (var, var), d)
 
@@ -16,11 +16,11 @@
 __recipe_sanity_reqdiffvars = ""
 def req_vars(cfgdata, d):
     for var in d.getVar("__recipe_sanity_reqvars", True).split():
-        if not d.getVar(var, 0):
+        if not d.getVar(var, False):
             __note("%s should be set" % var, d)
 
     for var in d.getVar("__recipe_sanity_reqdiffvars", True).split():
-        val = d.getVar(var, 0)
+        val = d.getVar(var, False)
         cfgval = cfgdata.get(var)
 
         if not val:
@@ -29,7 +29,7 @@
             __note("%s should be defined to something other than default (%s)" % (var, cfgval), d)
 
 def var_renames_overwrite(cfgdata, d):
-    renames = d.getVar("__recipe_sanity_renames", 0)
+    renames = d.getVar("__recipe_sanity_renames", False)
     if renames:
         for (key, newkey, oldvalue, newvalue) in renames:
             if oldvalue != newvalue and oldvalue != cfgdata.get(newkey):
@@ -50,7 +50,7 @@
         if cfg.find(i) != -1:
             return False
 
-    for clsfile in d.getVar("__inherit_cache", 0):
+    for clsfile in d.getVar("__inherit_cache", False):
         (base, _) = os.path.splitext(os.path.basename(clsfile))
         if cfg.find("%s_do_configure" % base) != -1:
             __note("autotools_base usage needs verification, spotted %s_do_configure" % base, d)
@@ -60,7 +60,7 @@
 def can_delete_FILESPATH(cfgdata, d):
     expected = cfgdata.get("FILESPATH")
     expectedpaths = d.expand(expected)
-    unexpanded = d.getVar("FILESPATH", 0)
+    unexpanded = d.getVar("FILESPATH", False)
     filespath = d.getVar("FILESPATH", True).split(":")
     filespath = [os.path.normpath(f) for f in filespath if os.path.exists(f)]
     for fp in filespath:
@@ -73,7 +73,7 @@
 def can_delete_FILESDIR(cfgdata, d):
     expected = cfgdata.get("FILESDIR")
     #expected = "${@bb.utils.which(d.getVar('FILESPATH', True), '.')}"
-    unexpanded = d.getVar("FILESDIR", 0)
+    unexpanded = d.getVar("FILESDIR", False)
     if unexpanded is None:
         return False
 
@@ -90,7 +90,7 @@
     for k in ["S", "PV", "PN", "DESCRIPTION", "DEPENDS",
               "SECTION", "PACKAGES", "EXTRA_OECONF", "EXTRA_OEMAKE"]:
     #for k in cfgdata:
-        unexpanded = d.getVar(k, 0)
+        unexpanded = d.getVar(k, False)
         cfgunexpanded = cfgdata.get(k)
         if not cfgunexpanded:
             continue
@@ -117,7 +117,7 @@
         #(can_use_autotools_base, "candidate for use of autotools_base"),
         (incorrect_nonempty_PACKAGES, "native or cross recipe with non-empty PACKAGES"),
     ]
-    cfgdata = d.getVar("__recipe_sanity_cfgdata", 0)
+    cfgdata = d.getVar("__recipe_sanity_cfgdata", False)
 
     for (func, msg) in sanitychecks:
         if func(cfgdata, d):
@@ -143,8 +143,8 @@
 
     cfgdata = {}
     for k in d.keys():
-        if not isinstance(d.getVar(k, 0), bb.data_smart.DataSmart):
-            cfgdata[k] = d.getVar(k, 0)
+        if not isinstance(d.getVar(k, False), bb.data_smart.DataSmart):
+            cfgdata[k] = d.getVar(k, False)
 
     d.setVar("__recipe_sanity_cfgdata", cfgdata)
     #d.setVar("__recipe_sanity_cfgdata", d)
diff --git a/import-layers/yocto-poky/meta/classes/report-error.bbclass b/import-layers/yocto-poky/meta/classes/report-error.bbclass
index 82b5bcd..5bb231e 100644
--- a/import-layers/yocto-poky/meta/classes/report-error.bbclass
+++ b/import-layers/yocto-poky/meta/classes/report-error.bbclass
@@ -42,8 +42,8 @@
             data['distro'] = e.data.getVar("DISTRO", True)
             data['target_sys'] = e.data.getVar("TARGET_SYS", True)
             data['failures'] = []
-            data['component'] = e.getPkgs()[0]
-            data['branch_commit'] = base_detect_branch(e.data) + ": " + base_detect_revision(e.data)
+            data['component'] = " ".join(e.getPkgs())
+            data['branch_commit'] = str(base_detect_branch(e.data)) + ": " + str(base_detect_revision(e.data))
             lock = bb.utils.lockfile(datafile + '.lock')
             errorreport_savedata(e, data, "error-report.txt")
             bb.utils.unlockfile(lock)
@@ -58,6 +58,13 @@
                 try:
                     logFile = codecs.open(log, 'r', 'utf-8')
                     logdata = logFile.read()
+
+                    # Replace host-specific paths so the logs are cleaner
+                    for d in ("TOPDIR", "TMPDIR"):
+                        s = e.data.getVar(d, True)
+                        if s:
+                            logdata = logdata.replace(s, d)
+
                     logFile.close()
                 except:
                     logdata = "Unable to read log file"
diff --git a/import-layers/yocto-poky/meta/classes/rm_work.bbclass b/import-layers/yocto-poky/meta/classes/rm_work.bbclass
index c647d88..b71a9d1 100644
--- a/import-layers/yocto-poky/meta/classes/rm_work.bbclass
+++ b/import-layers/yocto-poky/meta/classes/rm_work.bbclass
@@ -15,6 +15,9 @@
 # to try and reduce disk usage
 BB_SCHEDULER ?= "completion"
 
+# Run the rm_work task in the idle scheduling class
+BB_TASK_IONICE_LEVEL_task-rm_work = "3.0"
+
 RMWORK_ORIG_TASK := "${BB_DEFAULT_TASK}"
 BB_DEFAULT_TASK = "rm_work_all"
 
@@ -63,14 +66,10 @@
                 i=dummy
                 break
                 ;;
-            *do_rootfs*)
-               i=dummy
-               break
-               ;;
-            *do_image*)
-               i=dummy
-               break
-               ;;
+            *do_rootfs*|*do_image*|*do_bootimg*|*do_bootdirectdisk*|*do_vmimg*)
+                i=dummy
+                break
+                ;;
             *do_build*)
                 i=dummy
                 break
@@ -119,6 +118,8 @@
 rm_work_rootfs[cleandirs] = "${WORKDIR}/rootfs"
 
 python () {
+    if bb.data.inherits_class('kernel', d):
+        d.appendVar("RM_WORK_EXCLUDE", ' ' + d.getVar("PN", True))
     # If the recipe name is in the RM_WORK_EXCLUDE, skip the recipe.
     excludes = (d.getVar("RM_WORK_EXCLUDE", True) or "").split()
     pn = d.getVar("PN", True)
diff --git a/import-layers/yocto-poky/meta/classes/rootfs-postcommands.bbclass b/import-layers/yocto-poky/meta/classes/rootfs-postcommands.bbclass
index 95d28af..0c7ceea 100644
--- a/import-layers/yocto-poky/meta/classes/rootfs-postcommands.bbclass
+++ b/import-layers/yocto-poky/meta/classes/rootfs-postcommands.bbclass
@@ -15,13 +15,13 @@
 ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", "read_only_rootfs_hook; ", "",d)}'
 
 # Write manifest
-IMAGE_MANIFEST = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest"
+IMAGE_MANIFEST = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.manifest"
 ROOTFS_POSTUNINSTALL_COMMAND =+ "write_image_manifest ; "
 # Set default postinst log file
 POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
 # Set default target for systemd images
 SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains("IMAGE_FEATURES", "x11-base", "graphical.target", "multi-user.target", d)}'
-ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; ", "", d)}'
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; systemd_create_users;", "", d)}'
 
 ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
 
@@ -30,7 +30,34 @@
 SSH_DISABLE_DNS_LOOKUP ?= " ssh_disable_dns_lookup ; "
 ROOTFS_POSTPROCESS_COMMAND_append_qemuall = "${SSH_DISABLE_DNS_LOOKUP}"
 
-
+systemd_create_users () {
+	for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd.conf ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd-remote.conf; do
+		[ -e $conffile ] || continue
+		grep -v "^#" $conffile | sed -e '/^$/d' | while read type name id comment; do
+		if [ "$type" = "u" ]; then
+			useradd_params="--shell /sbin/nologin"
+			[ "$id" != "-" ] && useradd_params="$useradd_params --uid $id"
+			[ "$comment" != "-" ] && useradd_params="$useradd_params --comment $comment"
+			useradd_params="$useradd_params --system $name"
+			eval useradd --root ${IMAGE_ROOTFS} $useradd_params || true
+		elif [ "$type" = "g" ]; then
+			groupadd_params=""
+			[ "$id" != "-" ] && groupadd_params="$groupadd_params --gid $id"
+			groupadd_params="$groupadd_params --system $name"
+			eval groupadd --root ${IMAGE_ROOTFS} $groupadd_params || true
+		elif [ "$type" = "m" ]; then
+			group=$id
+			if [ ! `grep -q "^${group}:" ${IMAGE_ROOTFS}${sysconfdir}/group` ]; then
+				eval groupadd --root ${IMAGE_ROOTFS} --system $group
+			fi
+			if [ ! `grep -q "^${name}:" ${IMAGE_ROOTFS}${sysconfdir}/passwd` ]; then
+				eval useradd --root ${IMAGE_ROOTFS} --shell /sbin/nologin --system $name
+			fi
+			eval usermod --root ${IMAGE_ROOTFS} -a -G $group $name
+		fi
+		done
+	done
+}
 
 #
 # A hook function to support read-only-rootfs IMAGE_FEATURES
@@ -73,27 +100,6 @@
 			${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh
 		fi
 	fi
-
-	if ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "true", "false", d)}; then
-	    # Update user database files so that services don't fail for a read-only systemd system
-	    for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd.conf ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd-remote.conf; do
-		[ -e $conffile ] || continue
-		grep -v "^#" $conffile | sed -e '/^$/d' | while read type name id comment; do
-		    if [ "$type" = "u" ]; then
-			useradd_params=""
-			[ "$id" != "-" ] && useradd_params="$useradd_params --uid $id"
-			[ "$comment" != "-" ] && useradd_params="$useradd_params --comment $comment"
-			useradd_params="$useradd_params --system $name"
-			eval useradd --root ${IMAGE_ROOTFS} $useradd_params || true
-		    elif [ "$type" = "g" ]; then
-			groupadd_params=""
-			[ "$id" != "-" ] && groupadd_params="$groupadd_params --gid $id"
-			groupadd_params="$groupadd_params --system $name"
-			eval groupadd --root ${IMAGE_ROOTFS} $groupadd_params || true
-		    fi
-		done
-	    done
-	fi
 }
 
 #
@@ -211,7 +217,7 @@
     from oe.rootfs import image_list_installed_packages
     from oe.utils import format_pkg_list
 
-    deploy_dir = d.getVar('DEPLOY_DIR_IMAGE', True)
+    deploy_dir = d.getVar('IMGDEPLOYDIR', True)
     link_name = d.getVar('IMAGE_LINK_NAME', True)
     manifest_name = d.getVar('IMAGE_MANIFEST', True)
 
@@ -226,9 +232,6 @@
     if os.path.exists(manifest_name):
         manifest_link = deploy_dir + "/" + link_name + ".manifest"
         if os.path.lexists(manifest_link):
-            if d.getVar('RM_OLD_IMAGE', True) == "1" and \
-                    os.path.exists(os.path.realpath(manifest_link)):
-                os.remove(os.path.realpath(manifest_link))
             os.remove(manifest_link)
         os.symlink(os.path.basename(manifest_name), manifest_link)
 }
diff --git a/import-layers/yocto-poky/meta/classes/rootfs_rpm.bbclass b/import-layers/yocto-poky/meta/classes/rootfs_rpm.bbclass
index 0d2e897..37730a7 100644
--- a/import-layers/yocto-poky/meta/classes/rootfs_rpm.bbclass
+++ b/import-layers/yocto-poky/meta/classes/rootfs_rpm.bbclass
@@ -5,8 +5,8 @@
 ROOTFS_PKGMANAGE = "rpm smartpm"
 ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts"
 
-# Add 50Meg of extra space for Smart
-IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("PACKAGE_INSTALL", "smartpm", " + 51200", "" ,d)}"
+# Add 100Meg of extra space for Smart
+IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("PACKAGE_INSTALL", "smartpm", " + 102400", "" ,d)}"
 
 # Smart is python based, so be sure python-native is available to us.
 EXTRANATIVEPATH += "python-native"
@@ -24,11 +24,6 @@
 do_rootfs[recrdeptask] += "do_package_write_rpm"
 do_rootfs[vardeps] += "PACKAGE_FEED_URIS"
 
-# RPM doesn't work with multiple rootfs generation at once due to collisions in the use of files 
-# in ${DEPLOY_DIR_RPM}. This can be removed if package_update_index_rpm can be called concurrently
-do_rootfs[lockfiles] += "${DEPLOY_DIR_RPM}/rpm.lock"
-do_populate_sdk[lockfiles] += "${DEPLOY_DIR_RPM}/rpm.lock"
-
 python () {
     if d.getVar('BUILD_IMAGES_FROM_FEEDS', True):
         flags = d.getVarFlag('do_rootfs', 'recrdeptask', True)
diff --git a/import-layers/yocto-poky/meta/classes/sanity.bbclass b/import-layers/yocto-poky/meta/classes/sanity.bbclass
index 77813e4..7682ffb 100644
--- a/import-layers/yocto-poky/meta/classes/sanity.bbclass
+++ b/import-layers/yocto-poky/meta/classes/sanity.bbclass
@@ -135,8 +135,7 @@
         bb.note("Your conf/bblayers.conf has been automatically updated.")
         return
 
-        if not status.reparse:
-            status.addresult()
+        status.addresult()
 
     elif current_lconf == 6 and lconf_version > 6:
         # Handle rename of meta-yocto -> meta-poky
@@ -459,19 +458,19 @@
 
         # Check if GCC could work without march
         if not result:
-            status,res = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc gcc_test.c -o gcc_test")
+            status,res = oe.utils.getstatusoutput(sanity_data.expand("${BUILD_CC} gcc_test.c -o gcc_test"))
             if status == 0:
                 result = True;
 
         if not result:
-            status,res = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native gcc_test.c -o gcc_test")
+            status,res = oe.utils.getstatusoutput(sanity_data.expand("${BUILD_CC} -march=native gcc_test.c -o gcc_test"))
             if status == 0:
                 message = "BUILD_CFLAGS_append = \" -march=native\""
                 result = True;
 
         if not result:
             build_arch = sanity_data.getVar('BUILD_ARCH', True)
-            status,res = oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=%s gcc_test.c -o gcc_test" % build_arch)
+            status,res = oe.utils.getstatusoutput(sanity_data.expand("${BUILD_CC} -march=%s gcc_test.c -o gcc_test" % build_arch))
             if status == 0:
                 message = "BUILD_CFLAGS_append = \" -march=%s\"" % build_arch
                 result = True;
@@ -557,20 +556,17 @@
         return "Required perl module(s) not found: %s\n\n%s\n" % (ret, errresult)
     return None
 
-def sanity_check_conffiles(status, d):
+def sanity_check_conffiles(d):
     funcs = d.getVar('BBLAYERS_CONF_UPDATE_FUNCS', True).split()
     for func in funcs:
         conffile, current_version, required_version, func = func.split(":")
         if check_conf_exists(conffile, d) and d.getVar(current_version, True) is not None and \
                 d.getVar(current_version, True) != d.getVar(required_version, True):
-            success = True
             try:
                 bb.build.exec_func(func, d, pythonexception=True)
             except NotImplementedError as e:
-                success = False
-                status.addresult(str(e))
-            if success:
-                status.reparse = True
+                bb.fatal(e)
+            d.setVar("BB_INVALIDCONF", True)
 
 def sanity_handle_abichanges(status, d):
     #
@@ -673,11 +669,11 @@
     if not check_app_exists("${MAKE}", d):
         missing = missing + "GNU make,"
 
-    if not check_app_exists('${BUILD_PREFIX}gcc', d):
-        missing = missing + "C Compiler (%sgcc)," % d.getVar("BUILD_PREFIX", True)
+    if not check_app_exists('${BUILD_CC}', d):
+        missing = missing + "C Compiler (%s)," % d.getVar("BUILD_CC", True)
 
-    if not check_app_exists('${BUILD_PREFIX}g++', d):
-        missing = missing + "C++ Compiler (%sg++)," % d.getVar("BUILD_PREFIX", True)
+    if not check_app_exists('${BUILD_CXX}', d):
+        missing = missing + "C++ Compiler (%s)," % d.getVar("BUILD_CXX", True)
 
     required_utilities = d.getVar('SANITY_REQUIRED_UTILITIES', True)
 
@@ -746,7 +742,7 @@
             status.addresult("You have a 32-bit libc, but no 32-bit headers.  You must install the 32-bit libc headers.\n")
 
     bbpaths = d.getVar('BBPATH', True).split(":")
-    if ("." in bbpaths or "./" in bbpaths or "" in bbpaths) and not status.reparse:
+    if ("." in bbpaths or "./" in bbpaths or "" in bbpaths):
         status.addresult("BBPATH references the current directory, either through "    \
                 "an empty entry, a './' or a '.'.\n\t This is unsafe and means your "\
                 "layer configuration is adding empty elements to BBPATH.\n\t "\
@@ -765,6 +761,16 @@
     # Check that TMPDIR isn't located on nfs
     status.addresult(check_not_nfs(tmpdir, "TMPDIR"))
 
+def sanity_check_locale(d):
+    """
+    Currently bitbake switches locale to en_US.UTF-8 so check that this locale actually exists.
+    """
+    import locale
+    try:
+        locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
+    except locale.Error:
+        raise_sanity_error("You system needs to support the en_US.UTF-8 locale.", d)
+
 def check_sanity_everybuild(status, d):
     import os, stat
     # Sanity tests which test the users environment so need to run at each build (or are so cheap
@@ -784,7 +790,7 @@
     if (LooseVersion(bb.__version__) < LooseVersion(minversion)):
         status.addresult('Bitbake version %s is required and version %s was found\n' % (minversion, bb.__version__))
 
-    sanity_check_conffiles(status, d)
+    sanity_check_locale(d)
 
     paths = d.getVar('PATH', True).split(":")
     if "." in paths or "./" in paths or "" in paths:
@@ -829,8 +835,8 @@
 
     check_supported_distro(d)
 
-    omask = os.umask(022)
-    if omask & 0755:
+    omask = os.umask(0o022)
+    if omask & 0o755:
         status.addresult("Please use a umask which allows a+rx and u+rwx\n")
     os.umask(omask)
 
@@ -891,13 +897,13 @@
                 continue
 
             if mirror.startswith('file://'):
-                import urlparse
-                check_symlink(urlparse.urlparse(mirror).path, d)
+                import urllib
+                check_symlink(urllib.parse.urlparse(mirror).path, d)
                 # SSTATE_MIRROR ends with a /PATH string
                 if mirror.endswith('/PATH'):
                     # remove /PATH$ from SSTATE_MIRROR to get a working
                     # base directory path
-                    mirror_base = urlparse.urlparse(mirror[:-1*len('/PATH')]).path
+                    mirror_base = urllib.parse.urlparse(mirror[:-1*len('/PATH')]).path
                     check_symlink(mirror_base, d)
 
     # Check that TMPDIR hasn't changed location since the last time we were run
@@ -920,17 +926,17 @@
         with open(checkfile, "w") as f:
             f.write(tmpdir)
 
-    # Check /bin/sh links to dash or bash
-    real_sh = os.path.realpath('/bin/sh')
-    if not real_sh.endswith('/dash') and not real_sh.endswith('/bash'):
-        status.addresult("Error, /bin/sh links to %s, must be dash or bash\n" % real_sh)
+    # If /bin/sh is a symlink, check that it points to dash or bash
+    if os.path.islink('/bin/sh'):
+        real_sh = os.path.realpath('/bin/sh')
+        if not real_sh.endswith('/dash') and not real_sh.endswith('/bash'):
+            status.addresult("Error, /bin/sh links to %s, must be dash or bash\n" % real_sh)
 
 def check_sanity(sanity_data):
     class SanityStatus(object):
         def __init__(self):
             self.messages = ""
             self.network_error = False
-            self.reparse = False
 
         def addresult(self, message):
             if message:
@@ -986,7 +992,6 @@
 
     if status.messages != "":
         raise_sanity_error(sanity_data.expand(status.messages), sanity_data, status.network_error)
-    return status.reparse
 
 # Create a copy of the datastore and finalise it to ensure appends and 
 # overrides are set - the datastore has yet to be finalised at ConfigParsed
@@ -995,15 +1000,20 @@
     sanity_data.finalize()
     return sanity_data
 
+addhandler config_reparse_eventhandler
+config_reparse_eventhandler[eventmask] = "bb.event.ConfigParsed"
+python config_reparse_eventhandler() {
+    sanity_check_conffiles(e.data)
+}
+
 addhandler check_sanity_eventhandler
 check_sanity_eventhandler[eventmask] = "bb.event.SanityCheck bb.event.NetworkTest"
 python check_sanity_eventhandler() {
     if bb.event.getName(e) == "SanityCheck":
         sanity_data = copy_data(e)
+        check_sanity(sanity_data)
         if e.generateevents:
             sanity_data.setVar("SANITY_USE_EVENTS", "1")
-        reparse = check_sanity(sanity_data)
-        e.data.setVar("BB_INVALIDCONF", reparse)
         bb.event.fire(bb.event.SanityCheckPassed(), e.data)
     elif bb.event.getName(e) == "NetworkTest":
         sanity_data = copy_data(e)
diff --git a/import-layers/yocto-poky/meta/classes/scons.bbclass b/import-layers/yocto-poky/meta/classes/scons.bbclass
index 1579b05..b9ae19d 100644
--- a/import-layers/yocto-poky/meta/classes/scons.bbclass
+++ b/import-layers/yocto-poky/meta/classes/scons.bbclass
@@ -10,7 +10,7 @@
 }
 
 scons_do_install() {
-        ${STAGING_BINDIR_NATIVE}/scons PREFIX=${D}${prefix} prefix=${D}${prefix} install ${EXTRA_OESCONS}|| \
+        ${STAGING_BINDIR_NATIVE}/scons install_root=${D}${prefix} PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} install || \
         die "scons install execution failed."
 }
 
diff --git a/import-layers/yocto-poky/meta/classes/sdl.bbclass b/import-layers/yocto-poky/meta/classes/sdl.bbclass
deleted file mode 100644
index cc31288..0000000
--- a/import-layers/yocto-poky/meta/classes/sdl.bbclass
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# (C) Michael 'Mickey' Lauer <mickey@Vanille.de>
-#
-
-DEPENDS += "virtual/libsdl libsdl-mixer libsdl-image"
-SECTION = "x11/games"
diff --git a/import-layers/yocto-poky/meta/classes/sip.bbclass b/import-layers/yocto-poky/meta/classes/sip.bbclass
deleted file mode 100644
index 6ed2a13..0000000
--- a/import-layers/yocto-poky/meta/classes/sip.bbclass
+++ /dev/null
@@ -1,61 +0,0 @@
-# Build Class for Sip based Python Bindings
-# (C) Michael 'Mickey' Lauer <mickey@Vanille.de>
-#
-STAGING_SIPDIR ?= "${STAGING_DATADIR_NATIVE}/sip"
-
-DEPENDS  =+ "sip-native"
-RDEPENDS_${PN} += "python-sip"
-
-# default stuff, do not uncomment
-# EXTRA_SIPTAGS = "-tWS_X11 -tQt_4_3_0"
-
-# do_generate is before do_configure so ensure that sip_native is populated in sysroot before executing it
-do_generate[depends] += "sip-native:do_populate_sysroot"
-
-sip_do_generate() {
-	if [ -z "${SIP_MODULES}" ]; then 
-		MODULES="`ls sip/*mod.sip`"
-	else
-		MODULES="${SIP_MODULES}"
-	fi
-
-	if [ -z "$MODULES" ]; then
-		die "SIP_MODULES not set and no modules found in $PWD"
-        else
-		bbnote "using modules '${SIP_MODULES}' and tags '${EXTRA_SIPTAGS}'"
-	fi
-
-	if [ -z "${EXTRA_SIPTAGS}" ]; then
-		die "EXTRA_SIPTAGS needs to be set!"
-	else
-		SIPTAGS="${EXTRA_SIPTAGS}"
-	fi
-
-	if [ ! -z "${SIP_FEATURES}" ]; then
-		FEATURES="-z ${SIP_FEATURES}"
-		bbnote "sip feature file: ${SIP_FEATURES}"
-	fi
-
-	for module in $MODULES
-	do
-		install -d ${module}/
-		echo "calling 'sip4 -I sip -I ${STAGING_SIPDIR} ${SIPTAGS} ${FEATURES} -c ${module} -b ${module}/${module}.pro.in sip/${module}/${module}mod.sip'"
-		sip4 -I ${STAGING_SIPDIR} -I sip ${SIPTAGS} ${FEATURES} -c ${module} -b ${module}/${module}.sbf \
-			sip/${module}/${module}mod.sip || die "Error calling sip on ${module}"
-		sed -e 's,target,TARGET,' -e 's,sources,SOURCES,' -e 's,headers,HEADERS,' \
-			${module}/${module}.sbf | sed s,"moc_HEADERS =","HEADERS +=", \
-			>${module}/${module}.pro
-		echo "TEMPLATE=lib" >>${module}/${module}.pro
-		[ "${module}" = "qt" ] 		&& echo "" 		>>${module}/${module}.pro
-		[ "${module}" = "qtcanvas" ] 	&& echo ""		>>${module}/${module}.pro
-		[ "${module}" = "qttable" ] 	&& echo ""		>>${module}/${module}.pro
-		[ "${module}" = "qwt" ] 	&& echo ""		>>${module}/${module}.pro
-		[ "${module}" = "qtpe" ]        && echo ""		>>${module}/${module}.pro
-		[ "${module}" = "qtpe" ]        && echo "LIBS+=-lqpe"	>>${module}/${module}.pro
-		true
-	done
-}
-
-EXPORT_FUNCTIONS do_generate
-
-addtask generate after do_unpack do_patch before do_configure
diff --git a/import-layers/yocto-poky/meta/classes/siteinfo.bbclass b/import-layers/yocto-poky/meta/classes/siteinfo.bbclass
index 50141a3..6eca004 100644
--- a/import-layers/yocto-poky/meta/classes/siteinfo.bbclass
+++ b/import-layers/yocto-poky/meta/classes/siteinfo.bbclass
@@ -36,7 +36,11 @@
         "mips": "endian-big bit-32 mips-common",
         "mips64": "endian-big bit-64 mips-common",
         "mips64el": "endian-little bit-64 mips-common",
+        "mipsisa64r6": "endian-big bit-64 mips-common",
+        "mipsisa64r6el": "endian-little bit-64 mips-common",
         "mipsel": "endian-little bit-32 mips-common",
+        "mipsisa32r6": "endian-big bit-32 mips-common",
+        "mipsisa32r6el": "endian-little bit-32 mips-common",
         "powerpc": "endian-big bit-32 powerpc-common",
         "nios2": "endian-little bit-32 nios2-common",
         "powerpc64": "endian-big bit-64 powerpc-common",
@@ -107,6 +111,14 @@
         "x86_64-mingw32": "bit-64",
     }
 
+    # Add in any extra user supplied data which may come from a BSP layer, removing the
+    # need to always change this class directly
+    extra_siteinfo = (d.getVar("SITEINFO_EXTRA_DATAFUNCS", True) or "").split()
+    for m in extra_siteinfo:
+        call = m + "(archinfo, osinfo, targetinfo, d)"
+        locs = { "archinfo" : archinfo, "osinfo" : osinfo, "targetinfo" : targetinfo, "d" : d}
+        archinfo, osinfo, targetinfo = bb.utils.better_eval(call, locs)
+
     hostarch = d.getVar("HOST_ARCH", True)
     hostos = d.getVar("HOST_OS", True)
     target = "%s-%s" % (hostarch, hostos)
@@ -145,7 +157,7 @@
         bb.fatal("Please add your architecture to siteinfo.bbclass")
 }
 
-def siteinfo_get_files(d, no_cache = False):
+def siteinfo_get_files(d, aclocalcache = False):
     sitedata = siteinfo_data(d)
     sitefiles = ""
     for path in d.getVar("BBPATH", True).split(":"):
@@ -154,11 +166,17 @@
             if os.path.exists(filename):
                 sitefiles += filename + " "
 
-    if no_cache: return sitefiles
+    if not aclocalcache:
+        return sitefiles
 
-    # Now check for siteconfig cache files
-    # Use the files copied to the aclocal cache generated by autotools.bbclass
-    # to avoid races
+    # Now check for siteconfig cache files in the directory setup by autotools.bbclass to
+    # avoid races.
+    #
+    # ACLOCALDIR may or may not exist so cache should only be set to True from autotools.bbclass
+    # after files have been copied into this location. To do otherwise risks parsing/signature
+    # issues and the directory being created/removed whilst this code executes. This can happen
+    # when a multilib recipe is parsed along with its base variant which may be running at the time
+    # causing rare but nasty failures
     path_siteconfig = d.getVar('ACLOCALDIR', True)
     if path_siteconfig and os.path.isdir(path_siteconfig):
         for i in os.listdir(path_siteconfig):
@@ -166,7 +184,6 @@
                 continue
             filename = os.path.join(path_siteconfig, i)
             sitefiles += filename + " "
-
     return sitefiles
 
 #
diff --git a/import-layers/yocto-poky/meta/classes/spdx.bbclass b/import-layers/yocto-poky/meta/classes/spdx.bbclass
index 0c92765..89394d3 100644
--- a/import-layers/yocto-poky/meta/classes/spdx.bbclass
+++ b/import-layers/yocto-poky/meta/classes/spdx.bbclass
@@ -219,14 +219,13 @@
 def run_fossology(foss_command, full_spdx):
     import string, re
     import subprocess
-    
-    p = subprocess.Popen(foss_command.split(),
-        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    foss_output, foss_error = p.communicate()
-    if p.returncode != 0:
+
+    try:
+        foss_output = subprocess.check_output(foss_command.split(),
+                stderr=subprocess.STDOUT).decode('utf-8')
+    except subprocess.CalledProcessError as e:
         return None
 
-    foss_output = unicode(foss_output, "utf-8")
     foss_output = string.replace(foss_output, '\r', '')
 
     # Package info
diff --git a/import-layers/yocto-poky/meta/classes/sstate.bbclass b/import-layers/yocto-poky/meta/classes/sstate.bbclass
index 8c62327..172384b 100644
--- a/import-layers/yocto-poky/meta/classes/sstate.bbclass
+++ b/import-layers/yocto-poky/meta/classes/sstate.bbclass
@@ -17,6 +17,9 @@
 SSTATE_EXTRAPATHWILDCARD = ""
 SSTATE_PATHSPEC   = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/${SSTATE_PKGSPEC}"
 
+# explicitly make PV to depend on evaluated value of PV variable
+PV[vardepvalue] = "${PV}"
+
 # We don't want the sstate to depend on things like the distro string
 # of the system, we let the sstate paths take care of this.
 SSTATE_EXTRAPATH[vardepvalue] = ""
@@ -27,6 +30,8 @@
 SSTATE_DUPWHITELIST += "${STAGING_ETCDIR_NATIVE}/sgml ${STAGING_DATADIR_NATIVE}/sgml"
 # Archive the sources for many architectures in one deploy folder
 SSTATE_DUPWHITELIST += "${DEPLOY_DIR_SRC}"
+# Ignore overlapping README
+SSTATE_DUPWHITELIST += "${DEPLOY_DIR}/sdk/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt"
 
 SSTATE_SCAN_FILES ?= "*.la *-config *_config"
 SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f'
@@ -95,7 +100,7 @@
         scan_cmd = "grep -Irl ${STAGING_DIR} ${SSTATE_BUILDDIR}"
         d.setVar('SSTATE_SCAN_CMD', scan_cmd)
 
-    unique_tasks = set((d.getVar('SSTATETASKS', True) or "").split())
+    unique_tasks = sorted(set((d.getVar('SSTATETASKS', True) or "").split()))
     d.setVar('SSTATETASKS', " ".join(unique_tasks))
     for task in unique_tasks:
         d.prependVarFlag(task, 'prefuncs', "sstate_task_prefunc ")
@@ -170,6 +175,8 @@
     if os.access(manifest, os.R_OK):
         bb.fatal("Package already staged (%s)?!" % manifest)
 
+    d.setVar("SSTATE_INST_POSTRM", manifest + ".postrm")
+
     locks = []
     for lock in ss['lockfiles-shared']:
         locks.append(bb.utils.lockfile(lock, True))
@@ -200,6 +207,7 @@
             f = os.path.normpath(f)
             realmatch = True
             for w in whitelist:
+                w = os.path.normpath(w)
                 if f.startswith(w):
                     realmatch = False
                     break
@@ -402,6 +410,13 @@
         except OSError:
             pass
 
+    postrm = manifest + ".postrm"
+    if os.path.exists(manifest + ".postrm"):
+        import subprocess
+        os.chmod(postrm, 0o755)
+        subprocess.call(postrm, shell=True)
+        oe.path.remove(postrm)
+
     oe.path.remove(manifest)
 
 def sstate_clean(ss, d):
@@ -563,6 +578,8 @@
     for state in ss['dirs']:
         if not os.path.exists(state[1]):
             continue
+        if d.getVar('SSTATE_SKIP_CREATION', True) == '1':
+            continue
         srcbase = state[0].rstrip("/").rsplit('/', 1)[0]
         for walkroot, dirs, files in os.walk(state[1]):
             for file in files:
@@ -623,10 +640,10 @@
 
     # Try a fetch from the sstate mirror, if it fails just return and
     # we will build the package
-    uris = ['file://{0}'.format(sstatefetch),
-            'file://{0}.siginfo'.format(sstatefetch)]
+    uris = ['file://{0};downloadfilename={0}'.format(sstatefetch),
+            'file://{0}.siginfo;downloadfilename={0}.siginfo'.format(sstatefetch)]
     if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG", True), False):
-        uris += ['file://{0}.sig'.format(sstatefetch)]
+        uris += ['file://{0}.sig;downloadfilename={0}.sig'.format(sstatefetch)]
 
     for srcuri in uris:
         localdata.setVar('SRC_URI', srcuri)
@@ -634,12 +651,6 @@
             fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
             fetcher.download()
 
-            # Need to optimise this, if using file:// urls, the fetcher just changes the local path
-            # For now work around by symlinking
-            localpath = bb.data.expand(fetcher.localpath(srcuri), localdata)
-            if localpath != sstatepkg and os.path.exists(localpath) and not os.path.exists(sstatepkg):
-                os.symlink(localpath, sstatepkg)
-
         except bb.fetch2.BBFetchException:
             break
 
@@ -647,7 +658,7 @@
     shared_state = sstate_state_fromvars(d)
     accelerate = sstate_installpkg(shared_state, d)
     if not accelerate:
-        raise bb.build.FuncFailed("No suitable staging package found")
+        bb.fatal("No suitable staging package found")
 
 python sstate_task_prefunc () {
     shared_state = sstate_state_fromvars(d)
@@ -661,9 +672,9 @@
     sstate_install(shared_state, d)
     for intercept in shared_state['interceptfuncs']:
         bb.build.exec_func(intercept, d, (d.getVar("WORKDIR", True),))
-    omask = os.umask(002)
-    if omask != 002:
-       bb.note("Using umask 002 (not %0o) for sstate packaging" % omask)
+    omask = os.umask(0o002)
+    if omask != 0o002:
+       bb.note("Using umask 0o002 (not %0o) for sstate packaging" % omask)
     sstate_package(shared_state, d)
     os.umask(omask)
 }
@@ -725,6 +736,7 @@
 
     ret = []
     missed = []
+    missing = []
     extension = ".tgz"
     if siginfo:
         extension = extension + ".siginfo"
@@ -746,6 +758,18 @@
 
         return spec, extrapath, tname
 
+    def sstate_pkg_to_pn(pkg, d):
+        """
+        Translate an sstate filename to a PN value by way of SSTATE_PKGSPEC. This is slightly hacky but
+        we don't have access to everything in this context.
+        """
+        pkgspec = d.getVar('SSTATE_PKGSPEC', False)
+        try:
+            idx = pkgspec.split(':').index('${PN}')
+        except ValueError:
+            bb.fatal('Unable to find ${PN} in SSTATE_PKGSPEC')
+        return pkg.split(':')[idx]
+
 
     for task in range(len(sq_fn)):
 
@@ -780,6 +804,8 @@
         if localdata.getVar('BB_NO_NETWORK', True) == "1" and localdata.getVar('SSTATE_MIRROR_ALLOW_NETWORK', True) == "1":
             localdata.delVar('BB_NO_NETWORK')
 
+        whitelist = bb.runqueue.get_setscene_enforce_whitelist(d)
+
         from bb.fetch2 import FetchConnectionCache
         def checkstatus_init(thread_worker):
             thread_worker.connection_cache = FetchConnectionCache()
@@ -806,7 +832,14 @@
             except:
                 missed.append(task)
                 bb.debug(2, "SState: Unsuccessful fetch test for %s" % srcuri)
-                pass     
+                if whitelist:
+                    pn = sstate_pkg_to_pn(sstatefile, d)
+                    taskname = sq_task[task]
+                    if not bb.runqueue.check_setscene_enforce_whitelist(pn, taskname, whitelist):
+                        missing.append(task)
+                        bb.error('Sstate artifact unavailable for %s.%s' % (pn, taskname))
+                pass
+            bb.event.fire(bb.event.ProcessProgress("Checking sstate mirror object availability", len(tasklist) - thread_worker.tasks.qsize()), d)
 
         tasklist = []
         for task in range(len(sq_fn)):
@@ -817,16 +850,23 @@
             tasklist.append((task, sstatefile))
 
         if tasklist:
-            bb.note("Checking sstate mirror object availability (for %s objects)" % len(tasklist))
+            bb.event.fire(bb.event.ProcessStarted("Checking sstate mirror object availability", len(tasklist)), d)
+
             import multiprocessing
             nproc = min(multiprocessing.cpu_count(), len(tasklist))
 
+            bb.event.enable_threadlock()
             pool = oe.utils.ThreadedPool(nproc, len(tasklist),
                     worker_init=checkstatus_init, worker_end=checkstatus_end)
             for t in tasklist:
                 pool.add_task(checkstatus, t)
             pool.start()
             pool.wait_completion()
+            bb.event.disable_threadlock()
+
+            bb.event.fire(bb.event.ProcessFinished("Checking sstate mirror object availability"), d)
+            if whitelist and missing:
+                bb.fatal('Required artifacts were unavailable - exiting')
 
     inheritlist = d.getVar("INHERIT", True)
     if "toaster" in inheritlist:
@@ -905,6 +945,9 @@
             # Nothing need depend on libc-initial/gcc-cross-initial
             if "-initial" in taskdependees[task][0]:
                 continue
+            # For meta-extsdk-toolchain we want all sysroot dependencies
+            if taskdependees[dep][0] == 'meta-extsdk-toolchain':
+                return False
             # Native/Cross populate_sysroot need their dependencies
             if isNativeCross(taskdependees[task][0]) and isNativeCross(taskdependees[dep][0]):
                 return False
@@ -982,6 +1025,8 @@
         for r in toremove:
             (stamp, manifest, workdir) = r.split()
             for m in glob.glob(manifest + ".*"):
+                if m.endswith(".postrm"):
+                    continue
                 sstate_clean_manifest(m, d)
             bb.utils.remove(stamp + "*")
             if removeworkdir:
diff --git a/import-layers/yocto-poky/meta/classes/staging.bbclass b/import-layers/yocto-poky/meta/classes/staging.bbclass
index bc5dfa8..a0b09a0 100644
--- a/import-layers/yocto-poky/meta/classes/staging.bbclass
+++ b/import-layers/yocto-poky/meta/classes/staging.bbclass
@@ -1,3 +1,37 @@
+# These directories will be staged in the sysroot
+SYSROOT_DIRS = " \
+    ${includedir} \
+    ${libdir} \
+    ${base_libdir} \
+    ${nonarch_base_libdir} \
+    ${datadir} \
+"
+
+# These directories are also staged in the sysroot when they contain files that
+# are usable on the build system
+SYSROOT_DIRS_NATIVE = " \
+    ${bindir} \
+    ${sbindir} \
+    ${base_bindir} \
+    ${base_sbindir} \
+    ${libexecdir} \
+    ${sysconfdir} \
+    ${localstatedir} \
+"
+SYSROOT_DIRS_append_class-native = " ${SYSROOT_DIRS_NATIVE}"
+SYSROOT_DIRS_append_class-cross = " ${SYSROOT_DIRS_NATIVE}"
+SYSROOT_DIRS_append_class-crosssdk = " ${SYSROOT_DIRS_NATIVE}"
+
+# These directories will not be staged in the sysroot
+SYSROOT_DIRS_BLACKLIST = " \
+    ${mandir} \
+    ${docdir} \
+    ${infodir} \
+    ${datadir}/locale \
+    ${datadir}/applications \
+    ${datadir}/fonts \
+    ${datadir}/pixmaps \
+"
 
 sysroot_stage_dir() {
 	src="$1"
@@ -14,43 +48,18 @@
 	)
 }
 
-sysroot_stage_libdir() {
-	src="$1"
-	dest="$2"
-
-	sysroot_stage_dir $src $dest
-}
-
 sysroot_stage_dirs() {
 	from="$1"
 	to="$2"
 
-	sysroot_stage_dir $from${includedir} $to${includedir}
-	if [ "${BUILD_SYS}" = "${HOST_SYS}" ]; then
-		sysroot_stage_dir $from${bindir} $to${bindir}
-		sysroot_stage_dir $from${sbindir} $to${sbindir}
-		sysroot_stage_dir $from${base_bindir} $to${base_bindir}
-		sysroot_stage_dir $from${base_sbindir} $to${base_sbindir}
-		sysroot_stage_dir $from${libexecdir} $to${libexecdir}
-		sysroot_stage_dir $from${sysconfdir} $to${sysconfdir}
-		sysroot_stage_dir $from${localstatedir} $to${localstatedir}
-	fi
-	if [ -d $from${libdir} ]
-	then
-		sysroot_stage_libdir $from${libdir} $to${libdir}
-	fi
-	if [ -d $from${base_libdir} ]
-	then
-		sysroot_stage_libdir $from${base_libdir} $to${base_libdir}
-	fi
-	if [ -d $from${nonarch_base_libdir} ]
-	then
-		sysroot_stage_libdir $from${nonarch_base_libdir} $to${nonarch_base_libdir}
-	fi
-	sysroot_stage_dir $from${datadir} $to${datadir}
-	# We don't care about docs/info/manpages/locales
-	rm -rf $to${mandir}/ $to${docdir}/ $to${infodir}/ ${to}${datadir}/locale/
-	rm -rf $to${datadir}/applications/ $to${datadir}/fonts/ $to${datadir}/pixmaps/
+	for dir in ${SYSROOT_DIRS}; do
+		sysroot_stage_dir "$from$dir" "$to$dir"
+	done
+
+	# Remove directories we do not care about
+	for dir in ${SYSROOT_DIRS_BLACKLIST}; do
+		rm -rf "$to$dir"
+	done
 }
 
 sysroot_stage_all() {
@@ -172,13 +181,26 @@
 do_configure[prefuncs] += "sysroot_cleansstate"
 
 
+BB_SETSCENE_VERIFY_FUNCTION2 = "sysroot_checkhashes2"
+
+def sysroot_checkhashes2(covered, tasknames, fns, d, invalidtasks):
+    problems = set()
+    configurefns = set()
+    for tid in invalidtasks:
+        if tasknames[tid] == "do_configure" and tid not in covered:
+            configurefns.add(fns[tid])
+    for tid in covered:
+        if tasknames[tid] == "do_populate_sysroot" and fns[tid] in configurefns:
+            problems.add(tid)
+    return problems
+
 BB_SETSCENE_VERIFY_FUNCTION = "sysroot_checkhashes"
 
 def sysroot_checkhashes(covered, tasknames, fnids, fns, d, invalidtasks = None):
     problems = set()
     configurefnids = set()
     if not invalidtasks:
-        invalidtasks = xrange(len(tasknames))
+        invalidtasks = range(len(tasknames))
     for task in invalidtasks:
         if tasknames[task] == "do_configure" and task not in covered:
             configurefnids.add(fnids[task])
diff --git a/import-layers/yocto-poky/meta/classes/syslinux.bbclass b/import-layers/yocto-poky/meta/classes/syslinux.bbclass
index 4fcb0c5..7778fd7 100644
--- a/import-layers/yocto-poky/meta/classes/syslinux.bbclass
+++ b/import-layers/yocto-poky/meta/classes/syslinux.bbclass
@@ -30,6 +30,7 @@
 SYSLINUX_PROMPT ?= "0"
 SYSLINUX_TIMEOUT ?= "50"
 AUTO_SYSLINUXMENU ?= "1"
+SYSLINUX_ALLOWOPTIONS ?= "1"
 SYSLINUX_ROOT ?= "${ROOT}"
 SYSLINUX_CFG_VM  ?= "${S}/syslinux_vm.cfg"
 SYSLINUX_CFG_LIVE ?= "${S}/syslinux_live.cfg"
@@ -71,7 +72,7 @@
 }
 
 syslinux_hddimg_install() {
-	syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
+	syslinux ${IMGDEPLOYDIR}/${IMAGE_NAME}.hddimg
 }
 
 syslinux_hdddirect_install() {
@@ -99,12 +100,12 @@
 
     cfile = d.getVar('SYSLINUX_CFG', True)
     if not cfile:
-        raise bb.build.FuncFailed('Unable to read SYSLINUX_CFG')
+        bb.fatal('Unable to read SYSLINUX_CFG')
 
     try:
-        cfgfile = file(cfile, 'w')
+        cfgfile = open(cfile, 'w')
     except OSError:
-        raise bb.build.funcFailed('Unable to open %s' % (cfile))
+        bb.fatal('Unable to open %s' % cfile)
 
     cfgfile.write('# Automatically created by OE\n')
 
@@ -114,7 +115,12 @@
         for opt in opts.split(';'):
             cfgfile.write('%s\n' % opt)
 
-    cfgfile.write('ALLOWOPTIONS 1\n');
+    allowoptions = d.getVar('SYSLINUX_ALLOWOPTIONS', True)
+    if allowoptions:
+        cfgfile.write('ALLOWOPTIONS %s\n' % allowoptions)
+    else:
+        cfgfile.write('ALLOWOPTIONS 1\n')
+
     syslinux_default_console = d.getVar('SYSLINUX_DEFAULT_CONSOLE', True)
     syslinux_serial_tty = d.getVar('SYSLINUX_SERIAL_TTY', True)
     syslinux_serial = d.getVar('SYSLINUX_SERIAL', True)
@@ -154,7 +160,7 @@
 
         overrides = localdata.getVar('OVERRIDES', True)
         if not overrides:
-            raise bb.build.FuncFailed('OVERRIDES not defined')
+            bb.fatal('OVERRIDES not defined')
 
         localdata.setVar('OVERRIDES', label + ':' + overrides)
         bb.data.update_data(localdata)
@@ -166,7 +172,7 @@
 
         root= d.getVar('SYSLINUX_ROOT', True)
         if not root:
-            raise bb.build.FuncFailed('SYSLINUX_ROOT not defined')
+            bb.fatal('SYSLINUX_ROOT not defined')
 
         for btype in btypes:
             cfgfile.write('LABEL %s%s\nKERNEL /vmlinuz\n' % (btype[0], label))
@@ -190,3 +196,4 @@
 
     cfgfile.close()
 }
+build_syslinux_cfg[dirs] = "${S}"
diff --git a/import-layers/yocto-poky/meta/classes/systemd-boot.bbclass b/import-layers/yocto-poky/meta/classes/systemd-boot.bbclass
new file mode 100644
index 0000000..05244c7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/systemd-boot.bbclass
@@ -0,0 +1,124 @@
+# Copyright (C) 2016 Intel Corporation
+#
+# Released under the MIT license (see COPYING.MIT)
+
+# systemd-boot.bbclass - The "systemd-boot" is essentially the gummiboot merged into systemd.
+#                        The original standalone gummiboot project is dead without any more
+#                        maintenance. As a start point, we replace all gummitboot occurrences
+#                        with systemd-boot in gummiboot.bbclass to have a base version of this
+#                        systemd-boot.bbclass.
+#
+# Set EFI_PROVIDER = "systemd-boot" to use systemd-boot on your live images instead of grub-efi
+# (images built by image-live.bbclass or image-vm.bbclass)
+
+do_bootimg[depends] += "${MLPREFIX}systemd-boot:do_deploy"
+do_bootdirectdisk[depends] += "${MLPREFIX}systemd-boot:do_deploy"
+
+EFIDIR = "/EFI/BOOT"
+
+SYSTEMD_BOOT_CFG ?= "${S}/loader.conf"
+SYSTEMD_BOOT_ENTRIES ?= ""
+SYSTEMD_BOOT_TIMEOUT ?= "10"
+
+# Need UUID utility code.
+inherit fs-uuid
+
+efi_populate() {
+        DEST=$1
+
+        EFI_IMAGE="systemd-bootia32.efi"
+        DEST_EFI_IMAGE="bootia32.efi"
+        if [ "${TARGET_ARCH}" = "x86_64" ]; then
+            EFI_IMAGE="systemd-bootx64.efi"
+            DEST_EFI_IMAGE="bootx64.efi"
+        fi
+
+        install -d ${DEST}${EFIDIR}
+        # systemd-boot requires these paths for configuration files
+        # they are not customizable so no point in new vars
+        install -d ${DEST}/loader
+        install -d ${DEST}/loader/entries
+        install -m 0644 ${DEPLOY_DIR_IMAGE}/${EFI_IMAGE} ${DEST}${EFIDIR}/${DEST_EFI_IMAGE}
+        install -m 0644 ${SYSTEMD_BOOT_CFG} ${DEST}/loader/loader.conf
+        for i in ${SYSTEMD_BOOT_ENTRIES}; do
+            install -m 0644 ${i} ${DEST}/loader/entries
+        done
+}
+
+efi_iso_populate() {
+        iso_dir=$1
+        efi_populate $iso_dir
+        mkdir -p ${EFIIMGDIR}/${EFIDIR}
+        cp $iso_dir/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR}
+        cp $iso_dir/vmlinuz ${EFIIMGDIR}
+        EFIPATH=$(echo "${EFIDIR}" | sed 's/\//\\/g')
+        echo "fs0:${EFIPATH}\\${DEST_EFI_IMAGE}" > ${EFIIMGDIR}/startup.nsh
+        if [ -f "$iso_dir/initrd" ] ; then
+            cp $iso_dir/initrd ${EFIIMGDIR}
+        fi
+}
+
+efi_hddimg_populate() {
+        efi_populate $1
+}
+
+python build_efi_cfg() {
+    s = d.getVar("S", True)
+    labels = d.getVar('LABELS', True)
+    if not labels:
+        bb.debug(1, "LABELS not defined, nothing to do")
+        return
+
+    if labels == []:
+        bb.debug(1, "No labels, nothing to do")
+        return
+
+    cfile = d.getVar('SYSTEMD_BOOT_CFG', True)
+    try:
+         cfgfile = open(cfile, 'w')
+    except OSError:
+        bb.fatal('Unable to open %s' % cfile)
+
+    cfgfile.write('# Automatically created by OE\n')
+    cfgfile.write('default %s\n' % (labels.split()[0]))
+    timeout = d.getVar('SYSTEMD_BOOT_TIMEOUT', True)
+    if timeout:
+        cfgfile.write('timeout %s\n' % timeout)
+    else:
+        cfgfile.write('timeout 10\n')
+    cfgfile.close()
+
+    for label in labels.split():
+        localdata = d.createCopy()
+
+        overrides = localdata.getVar('OVERRIDES', True)
+        if not overrides:
+            bb.fatal('OVERRIDES not defined')
+
+        entryfile = "%s/%s.conf" % (s, label)
+        d.appendVar("SYSTEMD_BOOT_ENTRIES", " " + entryfile)
+        try:
+            entrycfg = open(entryfile, "w")
+        except OSError:
+            bb.fatal('Unable to open %s' % entryfile)
+        localdata.setVar('OVERRIDES', label + ':' + overrides)
+        bb.data.update_data(localdata)
+
+        entrycfg.write('title %s\n' % label)
+        entrycfg.write('linux /vmlinuz\n')
+
+        append = localdata.getVar('APPEND', True)
+        initrd = localdata.getVar('INITRD', True)
+
+        if initrd:
+            entrycfg.write('initrd /initrd\n')
+        lb = label
+        if label == "install":
+            lb = "install-efi"
+        entrycfg.write('options LABEL=%s ' % lb)
+        if append:
+            append = replace_rootfs_uuid(d, append)
+            entrycfg.write('%s' % append)
+        entrycfg.write('\n')
+        entrycfg.close()
+}
diff --git a/import-layers/yocto-poky/meta/classes/systemd.bbclass b/import-layers/yocto-poky/meta/classes/systemd.bbclass
index db7873f..d56c760 100644
--- a/import-layers/yocto-poky/meta/classes/systemd.bbclass
+++ b/import-layers/yocto-poky/meta/classes/systemd.bbclass
@@ -165,8 +165,7 @@
                 if path_found != '':
                     systemd_add_files_and_parse(pkg_systemd, path_found, service, keys)
                 else:
-                    raise bb.build.FuncFailed("SYSTEMD_SERVICE_%s value %s does not exist" % \
-                        (pkg_systemd, service))
+                    bb.fatal("SYSTEMD_SERVICE_%s value %s does not exist" % (pkg_systemd, service))
 
     # Run all modifications once when creating package
     if os.path.exists(d.getVar("D", True)):
diff --git a/import-layers/yocto-poky/meta/classes/terminal.bbclass b/import-layers/yocto-poky/meta/classes/terminal.bbclass
index 9f4c24e..a94f755 100644
--- a/import-layers/yocto-poky/meta/classes/terminal.bbclass
+++ b/import-layers/yocto-poky/meta/classes/terminal.bbclass
@@ -29,7 +29,7 @@
         bb.data.emit_func(cmd_func, script, envdata)
         script.write(cmd_func)
         script.write("\n")
-    os.chmod(runfile, 0755)
+    os.chmod(runfile, 0o755)
 
     return runfile
 
diff --git a/import-layers/yocto-poky/meta/classes/testexport.bbclass b/import-layers/yocto-poky/meta/classes/testexport.bbclass
new file mode 100644
index 0000000..5147020
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/testexport.bbclass
@@ -0,0 +1,206 @@
+# Copyright (C) 2016 Intel Corporation
+#
+# Released under the MIT license (see COPYING.MIT)
+#
+#
+# testexport.bbclass allows to execute runtime test outside OE environment.
+# Most of the tests are commands run on target image over ssh.
+# To use it add testexport to global inherit and call your target image with -c testexport
+# You can try it out like this:
+# - First build an image. i.e. core-image-sato
+# - Add INHERIT += "testexport" in local.conf
+# - Then bitbake core-image-sato -c testexport. That will generate the directory structure
+#   to execute the runtime tests using runexported.py.
+#
+# For more information on TEST_SUITES check testimage class.
+
+TEST_LOG_DIR ?= "${WORKDIR}/testexport"
+TEST_EXPORT_DIR ?= "${TMPDIR}/testexport/${PN}"
+TEST_EXPORT_PACKAGED_DIR ?= "packages/packaged"
+TEST_EXPORT_EXTRACTED_DIR ?= "packages/extracted"
+
+TEST_TARGET ?= "simpleremote"
+TEST_TARGET_IP ?= ""
+TEST_SERVER_IP ?= ""
+
+TEST_EXPORT_SDK_PACKAGES ?= ""
+TEST_EXPORT_SDK_ENABLED ?= "0"
+TEST_EXPORT_SDK_NAME ?= "testexport-tools-nativesdk"
+TEST_EXPORT_SDK_DIR ?= "sdk"
+
+TEST_EXPORT_DEPENDS = ""
+TEST_EXPORT_DEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'cpio-native:do_populate_sysroot', '', d)}"
+TEST_EXPORT_DEPENDS += "${@bb.utils.contains('TEST_EXPORT_SDK_ENABLED', '1', 'testexport-tarball:do_populate_sdk', '', d)}"
+TEST_EXPORT_LOCK = "${TMPDIR}/testimage.lock"
+
+python do_testexport() {
+    testexport_main(d)
+}
+
+addtask testexport
+do_testexport[nostamp] = "1"
+do_testexport[depends] += "${TEST_EXPORT_DEPENDS} ${TESTIMAGEDEPENDS}"
+do_testexport[lockfiles] += "${TEST_EXPORT_LOCK}"
+
+def exportTests(d,tc):
+    import json
+    import shutil
+    import pkgutil
+    import re
+    import oe.path
+
+    exportpath = d.getVar("TEST_EXPORT_DIR", True)
+
+    savedata = {}
+    savedata["d"] = {}
+    savedata["target"] = {}
+    savedata["target"]["ip"] = tc.target.ip or d.getVar("TEST_TARGET_IP", True)
+    savedata["target"]["server_ip"] = tc.target.server_ip or d.getVar("TEST_SERVER_IP", True)
+
+    keys = [ key for key in d.keys() if not key.startswith("_") and not key.startswith("BB") \
+            and not key.startswith("B_pn") and not key.startswith("do_") and not d.getVarFlag(key, "func", True)]
+    for key in keys:
+        try:
+            savedata["d"][key] = d.getVar(key, True)
+        except bb.data_smart.ExpansionError:
+            # we don't care about those anyway
+            pass
+
+    json_file = os.path.join(exportpath, "testdata.json")
+    with open(json_file, "w") as f:
+            json.dump(savedata, f, skipkeys=True, indent=4, sort_keys=True)
+
+    # Replace absolute path with relative in the file
+    exclude_path = os.path.join(d.getVar("COREBASE", True),'meta','lib','oeqa')
+    f1 = open(json_file,'r').read()
+    f2 = open(json_file,'w')
+    m = f1.replace(exclude_path,'oeqa')
+    f2.write(m)
+    f2.close()
+
+    # now start copying files
+    # we'll basically copy everything under meta/lib/oeqa, with these exceptions
+    #  - oeqa/targetcontrol.py - not needed
+    #  - oeqa/selftest - something else
+    # That means:
+    #   - all tests from oeqa/runtime defined in TEST_SUITES (including from other layers)
+    #   - the contents of oeqa/utils and oeqa/runtime/files
+    #   - oeqa/oetest.py and oeqa/runexport.py (this will get copied to exportpath not exportpath/oeqa)
+    #   - __init__.py files
+    bb.utils.mkdirhier(os.path.join(exportpath, "oeqa/runtime/files"))
+    bb.utils.mkdirhier(os.path.join(exportpath, "oeqa/utils"))
+    # copy test modules, this should cover tests in other layers too
+    bbpath = d.getVar("BBPATH", True).split(':')
+    for t in tc.testslist:
+        isfolder = False
+        if re.search("\w+\.\w+\.test_\S+", t):
+            t = '.'.join(t.split('.')[:3])
+        mod = pkgutil.get_loader(t)
+        # More depth than usual?
+        if (t.count('.') > 2):
+            for p in bbpath:
+                foldername = os.path.join(p, 'lib',  os.sep.join(t.split('.')).rsplit(os.sep, 1)[0])
+                if os.path.isdir(foldername):
+                    isfolder = True
+                    target_folder = os.path.join(exportpath, "oeqa", "runtime", os.path.basename(foldername))
+                    if not os.path.exists(target_folder):
+                        oe.path.copytree(foldername, target_folder)
+        if not isfolder:
+            shutil.copy2(mod.path, os.path.join(exportpath, "oeqa/runtime"))
+            json_file = "%s.json" % mod.path.rsplit(".", 1)[0]
+            if os.path.isfile(json_file):
+                shutil.copy2(json_file, os.path.join(exportpath, "oeqa/runtime"))
+    # Get meta layer
+    for layer in d.getVar("BBLAYERS", True).split():
+        if os.path.basename(layer) == "meta":
+            meta_layer = layer
+            break
+    # copy oeqa/oetest.py and oeqa/runexported.py
+    oeqadir = os.path.join(meta_layer, "lib/oeqa")
+    shutil.copy2(os.path.join(oeqadir, "oetest.py"), os.path.join(exportpath, "oeqa"))
+    shutil.copy2(os.path.join(oeqadir, "runexported.py"), exportpath)
+    # copy oeqa/utils/*.py
+    for root, dirs, files in os.walk(os.path.join(oeqadir, "utils")):
+        for f in files:
+            if f.endswith(".py"):
+                shutil.copy2(os.path.join(root, f), os.path.join(exportpath, "oeqa/utils"))
+    # copy oeqa/runtime/files/*
+    for root, dirs, files in os.walk(os.path.join(oeqadir, "runtime/files")):
+        for f in files:
+            shutil.copy2(os.path.join(root, f), os.path.join(exportpath, "oeqa/runtime/files"))
+
+    # Create tar file for common parts of testexport
+    create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR", True))
+
+    # Copy packages needed for runtime testing
+    test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR", True)
+    if os.listdir(test_pkg_dir):
+        export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR", True), "packages")
+        oe.path.copytree(test_pkg_dir, export_pkg_dir)
+        # Create tar file for packages needed by the DUT
+        create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE", True), export_pkg_dir)
+
+    # Copy SDK
+    if d.getVar("TEST_EXPORT_SDK_ENABLED", True) == "1":
+        sdk_deploy = d.getVar("SDK_DEPLOY", True)
+        tarball_name = "%s.sh" % d.getVar("TEST_EXPORT_SDK_NAME", True)
+        tarball_path = os.path.join(sdk_deploy, tarball_name)
+        export_sdk_dir = os.path.join(d.getVar("TEST_EXPORT_DIR", True),
+                                      d.getVar("TEST_EXPORT_SDK_DIR", True))
+        bb.utils.mkdirhier(export_sdk_dir)
+        shutil.copy2(tarball_path, export_sdk_dir)
+
+        # Create tar file for the sdk
+        create_tarball(d, "testexport_sdk_%s.tar.gz" % d.getVar("SDK_ARCH", True), export_sdk_dir)
+
+    bb.plain("Exported tests to: %s" % exportpath)
+
+def testexport_main(d):
+    from oeqa.oetest import ExportTestContext
+    from oeqa.targetcontrol import get_target_controller
+    from oeqa.utils.dump import get_host_dumper
+
+    test_create_extract_dirs(d)
+    export_dir = d.getVar("TEST_EXPORT_DIR", True)
+    bb.utils.mkdirhier(d.getVar("TEST_LOG_DIR", True))
+    bb.utils.remove(export_dir, recurse=True)
+    bb.utils.mkdirhier(export_dir)
+
+    # the robot dance
+    target = get_target_controller(d)
+
+    # test context
+    tc = ExportTestContext(d, target)
+
+    # this is a dummy load of tests
+    # we are doing that to find compile errors in the tests themselves
+    # before booting the image
+    try:
+        tc.loadTests()
+    except Exception as e:
+        import traceback
+        bb.fatal("Loading tests failed:\n%s" % traceback.format_exc())
+
+    tc.extract_packages()
+    exportTests(d,tc)
+
+def create_tarball(d, tar_name, src_dir):
+
+    import tarfile
+
+    tar_path = os.path.join(d.getVar("TEST_EXPORT_DIR", True), tar_name)
+    current_dir = os.getcwd()
+    src_dir = src_dir.rstrip('/')
+    dir_name = os.path.dirname(src_dir)
+    base_name = os.path.basename(src_dir)
+
+    os.chdir(dir_name)
+    tar = tarfile.open(tar_path, "w:gz")
+    tar.add(base_name)
+    tar.close()
+    os.chdir(current_dir)
+
+
+testexport_main[vardepsexclude] =+ "BB_ORIGENV"
+
+inherit testimage
diff --git a/import-layers/yocto-poky/meta/classes/testimage.bbclass b/import-layers/yocto-poky/meta/classes/testimage.bbclass
index e77bb11..6b6781d 100644
--- a/import-layers/yocto-poky/meta/classes/testimage.bbclass
+++ b/import-layers/yocto-poky/meta/classes/testimage.bbclass
@@ -8,7 +8,7 @@
 # To use it add testimage to global inherit and call your target image with -c testimage
 # You can try it out like this:
 # - first build a qemu core-image-sato
-# - add INHERIT += "testimage" in local.conf
+# - add IMAGE_CLASSES += "testimage" in local.conf
 # - then bitbake core-image-sato -c testimage. That will run a standard suite of tests.
 
 # You can set (or append to) TEST_SUITES in local.conf to select the tests
@@ -30,7 +30,10 @@
 TEST_LOG_DIR ?= "${WORKDIR}/testimage"
 
 TEST_EXPORT_DIR ?= "${TMPDIR}/testimage/${PN}"
-TEST_EXPORT_ONLY ?= "0"
+TEST_INSTALL_TMP_DIR ?= "${WORKDIR}/testimage/install_tmp"
+TEST_NEEDED_PACKAGES_DIR ?= "${WORKDIR}/testimage/packages"
+TEST_EXTRACTED_DIR ?= "${TEST_NEEDED_PACKAGES_DIR}/extracted"
+TEST_PACKAGED_DIR ?= "${TEST_NEEDED_PACKAGES_DIR}/packaged"
 
 RPMTESTSUITE = "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'smart rpm', '', d)}"
 MINTESTSUITE = "ping"
@@ -48,25 +51,33 @@
 DEFAULT_TEST_SUITES_pn-core-image-sato-sdk = "${NETTESTSUITE} connman xorg perl python \
     ${DEVTESTSUITE} parselogs ${RPMTESTSUITE}"
 DEFAULT_TEST_SUITES_pn-core-image-lsb-dev = "${NETTESTSUITE} pam perl python parselogs ${RPMTESTSUITE}"
-DEFAULT_TEST_SUITES_pn-core-image-lsb-sdk = "${NETTESTSUITE} buildcvs buildiptables buildsudoku \
+DEFAULT_TEST_SUITES_pn-core-image-lsb-sdk = "${NETTESTSUITE} buildcvs buildiptables buildgalculator \
     connman ${DEVTESTSUITE} pam perl python parselogs ${RPMTESTSUITE}"
 DEFAULT_TEST_SUITES_pn-meta-toolchain = "auto"
 
 # aarch64 has no graphics
 DEFAULT_TEST_SUITES_remove_aarch64 = "xorg"
 
-#qemumips is too slow for buildsudoku
-DEFAULT_TEST_SUITES_remove_qemumips = "buildsudoku"
+# qemumips is quite slow and has reached the timeout limit several times on the YP build cluster,
+# mitigate this by removing build tests for qemumips machines.
+MIPSREMOVE ??= "buildcvs buildiptables buildgalculator"
+DEFAULT_TEST_SUITES_remove_qemumips = "${MIPSREMOVE}"
+DEFAULT_TEST_SUITES_remove_qemumips64 = "${MIPSREMOVE}"
 
 TEST_SUITES ?= "${DEFAULT_TEST_SUITES}"
 
 TEST_QEMUBOOT_TIMEOUT ?= "1000"
 TEST_TARGET ?= "qemu"
-TEST_TARGET_IP ?= ""
-TEST_SERVER_IP ?= ""
 
 TESTIMAGEDEPENDS = ""
 TESTIMAGEDEPENDS_qemuall = "qemu-native:do_populate_sysroot qemu-helper-native:do_populate_sysroot"
+TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'cpio-native:do_populate_sysroot', '', d)}"
+TESTIMAGEDEPENDS_qemuall += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'cpio-native:do_populate_sysroot', '', d)}"
+TESTIMAGEDEPENDS_qemuall += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'createrepo-native:do_populate_sysroot', '', d)}"
+TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'python-smartpm-native:do_populate_sysroot', '', d)}"
+TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'ipk', 'opkg-utils-native:do_populate_sysroot', '', d)}"
+TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'deb', 'apt-native:do_populate_sysroot', '', d)}"
+
 
 TESTIMAGELOCK = "${TMPDIR}/testimage.lock"
 TESTIMAGELOCK_qemuall = ""
@@ -103,102 +114,12 @@
 python do_testimage() {
     testimage_main(d)
 }
+
 addtask testimage
 do_testimage[nostamp] = "1"
 do_testimage[depends] += "${TESTIMAGEDEPENDS}"
 do_testimage[lockfiles] += "${TESTIMAGELOCK}"
 
-def exportTests(d,tc):
-    import json
-    import shutil
-    import pkgutil
-    import re
-
-    exportpath = d.getVar("TEST_EXPORT_DIR", True)
-
-    savedata = {}
-    savedata["d"] = {}
-    savedata["target"] = {}
-    savedata["host_dumper"] = {}
-    for key in tc.__dict__:
-        # special cases
-        if key not in ['d', 'target', 'host_dumper', 'suite']:
-            savedata[key] = getattr(tc, key)
-    savedata["target"]["ip"] = tc.target.ip or d.getVar("TEST_TARGET_IP", True)
-    savedata["target"]["server_ip"] = tc.target.server_ip or d.getVar("TEST_SERVER_IP", True)
-
-    keys = [ key for key in d.keys() if not key.startswith("_") and not key.startswith("BB") \
-            and not key.startswith("B_pn") and not key.startswith("do_") and not d.getVarFlag(key, "func", True)]
-    for key in keys:
-        try:
-            savedata["d"][key] = d.getVar(key, True)
-        except bb.data_smart.ExpansionError:
-            # we don't care about those anyway
-            pass
-
-    savedata["host_dumper"]["parent_dir"] = tc.host_dumper.parent_dir
-    savedata["host_dumper"]["cmds"] = tc.host_dumper.cmds
-
-    json_file = os.path.join(exportpath, "testdata.json")
-    with open(json_file, "w") as f:
-            json.dump(savedata, f, skipkeys=True, indent=4, sort_keys=True)
-
-    # Replace absolute path with relative in the file
-    exclude_path = os.path.join(d.getVar("COREBASE", True),'meta','lib','oeqa')
-    f1 = open(json_file,'r').read()
-    f2 = open(json_file,'w')
-    m = f1.replace(exclude_path,'oeqa')
-    f2.write(m)
-    f2.close()
-
-    # now start copying files
-    # we'll basically copy everything under meta/lib/oeqa, with these exceptions
-    #  - oeqa/targetcontrol.py - not needed
-    #  - oeqa/selftest - something else
-    # That means:
-    #   - all tests from oeqa/runtime defined in TEST_SUITES (including from other layers)
-    #   - the contents of oeqa/utils and oeqa/runtime/files
-    #   - oeqa/oetest.py and oeqa/runexport.py (this will get copied to exportpath not exportpath/oeqa)
-    #   - __init__.py files
-    bb.utils.mkdirhier(os.path.join(exportpath, "oeqa/runtime/files"))
-    bb.utils.mkdirhier(os.path.join(exportpath, "oeqa/utils"))
-    # copy test modules, this should cover tests in other layers too
-    bbpath = d.getVar("BBPATH", True).split(':')
-    for t in tc.testslist:
-        isfolder = False
-        if re.search("\w+\.\w+\.test_\S+", t):
-            t = '.'.join(t.split('.')[:3])
-        mod = pkgutil.get_loader(t)
-        # More depth than usual?
-        if (t.count('.') > 2):
-            for p in bbpath:
-                foldername = os.path.join(p, 'lib',  os.sep.join(t.split('.')).rsplit(os.sep, 1)[0])
-                if os.path.isdir(foldername):
-                    isfolder = True
-                    target_folder = os.path.join(exportpath, "oeqa", "runtime", os.path.basename(foldername))
-                    if not os.path.exists(target_folder):
-                        shutil.copytree(foldername, target_folder)
-        if not isfolder:
-            shutil.copy2(mod.filename, os.path.join(exportpath, "oeqa/runtime"))
-    # copy __init__.py files
-    oeqadir = pkgutil.get_loader("oeqa").filename
-    shutil.copy2(os.path.join(oeqadir, "__init__.py"), os.path.join(exportpath, "oeqa"))
-    shutil.copy2(os.path.join(oeqadir, "runtime/__init__.py"), os.path.join(exportpath, "oeqa/runtime"))
-    # copy oeqa/oetest.py and oeqa/runexported.py
-    shutil.copy2(os.path.join(oeqadir, "oetest.py"), os.path.join(exportpath, "oeqa"))
-    shutil.copy2(os.path.join(oeqadir, "runexported.py"), exportpath)
-    # copy oeqa/utils/*.py
-    for root, dirs, files in os.walk(os.path.join(oeqadir, "utils")):
-        for f in files:
-            if f.endswith(".py"):
-                shutil.copy2(os.path.join(root, f), os.path.join(exportpath, "oeqa/utils"))
-    # copy oeqa/runtime/files/*
-    for root, dirs, files in os.walk(os.path.join(oeqadir, "runtime/files")):
-        for f in files:
-            shutil.copy2(os.path.join(root, f), os.path.join(exportpath, "oeqa/runtime/files"))
-
-    bb.plain("Exported tests to: %s" % exportpath)
-
 def testimage_main(d):
     import unittest
     import os
@@ -210,11 +131,8 @@
     from oeqa.utils.dump import get_host_dumper
 
     pn = d.getVar("PN", True)
-    export = oe.utils.conditional("TEST_EXPORT_ONLY", "1", True, False, d)
     bb.utils.mkdirhier(d.getVar("TEST_LOG_DIR", True))
-    if export:
-        bb.utils.remove(d.getVar("TEST_EXPORT_DIR", True), recurse=True)
-        bb.utils.mkdirhier(d.getVar("TEST_EXPORT_DIR", True))
+    test_create_extract_dirs(d)
 
     # we need the host dumper in test context
     host_dumper = get_host_dumper(d)
@@ -234,29 +152,39 @@
         import traceback
         bb.fatal("Loading tests failed:\n%s" % traceback.format_exc())
 
-    if export:
+    tc.extract_packages()
+    target.deploy()
+    try:
+        bootparams = None
+        if d.getVar('VIRTUAL-RUNTIME_init_manager', '') == 'systemd':
+            bootparams = 'systemd.log_level=debug systemd.log_target=console'
+        target.start(extra_bootparams=bootparams)
+        starttime = time.time()
+        result = tc.runTests()
+        stoptime = time.time()
+        if result.wasSuccessful():
+            bb.plain("%s - Ran %d test%s in %.3fs" % (pn, result.testsRun, result.testsRun != 1 and "s" or "", stoptime - starttime))
+            msg = "%s - OK - All required tests passed" % pn
+            skipped = len(result.skipped)
+            if skipped:
+                msg += " (skipped=%d)" % skipped
+            bb.plain(msg)
+        else:
+            bb.fatal("%s - FAILED - check the task log and the ssh log" % pn)
+    finally:
         signal.signal(signal.SIGTERM, tc.origsigtermhandler)
-        tc.origsigtermhandler = None
-        exportTests(d,tc)
-    else:
-        target.deploy()
-        try:
-            target.start()
-            starttime = time.time()
-            result = tc.runTests()
-            stoptime = time.time()
-            if result.wasSuccessful():
-                bb.plain("%s - Ran %d test%s in %.3fs" % (pn, result.testsRun, result.testsRun != 1 and "s" or "", stoptime - starttime))
-                msg = "%s - OK - All required tests passed" % pn
-                skipped = len(result.skipped)
-                if skipped:
-                    msg += " (skipped=%d)" % skipped
-                bb.plain(msg)
-            else:
-                raise bb.build.FuncFailed("%s - FAILED - check the task log and the ssh log" % pn )
-        finally:
-            signal.signal(signal.SIGTERM, tc.origsigtermhandler)
-            target.stop()
+        target.stop()
+
+def test_create_extract_dirs(d):
+    install_path = d.getVar("TEST_INSTALL_TMP_DIR", True)
+    package_path = d.getVar("TEST_PACKAGED_DIR", True)
+    extracted_path = d.getVar("TEST_EXTRACTED_DIR", True)
+    bb.utils.mkdirhier(d.getVar("TEST_LOG_DIR", True))
+    bb.utils.remove(package_path, recurse=True)
+    bb.utils.mkdirhier(install_path)
+    bb.utils.mkdirhier(package_path)
+    bb.utils.mkdirhier(extracted_path)
+
 
 testimage_main[vardepsexclude] =+ "BB_ORIGENV"
 
diff --git a/import-layers/yocto-poky/meta/classes/testsdk.bbclass b/import-layers/yocto-poky/meta/classes/testsdk.bbclass
index f4dc2c3..77c9203 100644
--- a/import-layers/yocto-poky/meta/classes/testsdk.bbclass
+++ b/import-layers/yocto-poky/meta/classes/testsdk.bbclass
@@ -44,7 +44,7 @@
                 msg += " (skipped=%d)" % skipped
             bb.plain(msg)
         else:
-            raise bb.build.FuncFailed("%s - FAILED - check the task log and the commands log" % pn )
+            bb.fatal("%s - FAILED - check the task log and the commands log" % pn)
 
 def testsdk_main(d):
     import os
@@ -65,7 +65,7 @@
     try:
         subprocess.check_output("cd %s; %s <<EOF\n./tc\nY\nEOF" % (sdktestdir, tcname), shell=True)
     except subprocess.CalledProcessError as e:
-        bb.fatal("Couldn't install the SDK:\n%s" % e.output)
+        bb.fatal("Couldn't install the SDK:\n%s" % e.output.decode("utf-8"))
 
     try:
         run_test_context(SDKTestContext, d, sdktestdir, tcname, pn)
@@ -113,10 +113,18 @@
     testdir = d.expand("${WORKDIR}/testsdkext/")
     bb.utils.remove(testdir, True)
     bb.utils.mkdirhier(testdir)
+    sdkdir = os.path.join(testdir, 'tc')
     try:
-        subprocess.check_output("%s -y -d %s/tc" % (tcname, testdir), shell=True)
+        subprocess.check_output("%s -y -d %s" % (tcname, sdkdir), shell=True)
     except subprocess.CalledProcessError as e:
-        bb.fatal("Couldn't install the SDK EXT:\n%s" % e.output)
+        msg = "Couldn't install the extensible SDK:\n%s" % e.output.decode("utf-8")
+        logfn = os.path.join(sdkdir, 'preparing_build_system.log')
+        if os.path.exists(logfn):
+            msg += '\n\nContents of preparing_build_system.log:\n'
+            with open(logfn, 'r') as f:
+                for line in f:
+                    msg += line
+        bb.fatal(msg)
 
     try:
         bb.plain("Running SDK Compatibility tests ...")
diff --git a/import-layers/yocto-poky/meta/classes/tinderclient.bbclass b/import-layers/yocto-poky/meta/classes/tinderclient.bbclass
index 2bc75fc..917b74d 100644
--- a/import-layers/yocto-poky/meta/classes/tinderclient.bbclass
+++ b/import-layers/yocto-poky/meta/classes/tinderclient.bbclass
@@ -10,10 +10,10 @@
             h.endheaders()
             h.send(body)
             errcode, errmsg, headers = h.getreply()
-            #print errcode, errmsg, headers
+            #print(errcode, errmsg, headers)
             return (errcode,errmsg, headers, h.file)
         except:
-            print "Error sending the report!"
+            print("Error sending the report!")
             # try again
             pass
 
@@ -82,7 +82,7 @@
     # we only need on build_status.pl but sending it
     # always does not hurt
     try:
-        f = file(d.getVar('TMPDIR',True)+'/tinder-machine.id', 'r')
+        f = open(d.getVar('TMPDIR',True)+'/tinder-machine.id', 'r')
         id = f.read()
         variables['machine_id'] = id
     except:
@@ -111,11 +111,11 @@
 
     selector = url + "/xml/build_start.pl"
 
-    #print "selector %s and url %s" % (selector, url)
+    #print("selector %s and url %s" % (selector, url))
 
     # now post it
     errcode, errmsg, headers, h_file = tinder_http_post(server,selector,content_type, body)
-    #print errcode, errmsg, headers
+    #print(errcode, errmsg, headers)
     report = h_file.read()
 
     # now let us find the machine id that was assigned to us
@@ -127,7 +127,7 @@
 
     # now we will need to save the machine number
     # we will override any previous numbers
-    f = file(d.getVar('TMPDIR', True)+"/tinder-machine.id", 'w')
+    f = open(d.getVar('TMPDIR', True)+"/tinder-machine.id", 'w')
     f.write(report)
 
 
@@ -147,8 +147,8 @@
     while len(new_log) > 0:
         content_type, body = tinder_format_http_post(d,status,new_log[0:18000])
         errcode, errmsg, headers, h_file = tinder_http_post(server,selector,content_type, body)
-        #print errcode, errmsg, headers
-        #print h.file.read()
+        #print(errcode, errmsg, headers)
+        #print(h.file.read())
         new_log = new_log[18000:]
 
 
@@ -278,7 +278,7 @@
 
         try:
             # truncate the tinder log file
-            f = file(event.data.getVar('TINDER_LOG', True), 'w')
+            f = open(event.data.getVar('TINDER_LOG', True), 'w')
             f.write("")
             f.close()
         except:
@@ -287,7 +287,7 @@
         try:
             # write a status to the file. This is needed for the -k option
             # of BitBake
-            g = file(event.data.getVar('TMPDIR', True)+"/tinder-status", 'w')
+            g = open(event.data.getVar('TMPDIR', True)+"/tinder-status", 'w')
             g.write("")
             g.close()
         except IOError:
@@ -319,14 +319,14 @@
         log += "<--- TINDERBOX Package %s failed (FAILURE)\n" % event.data.getVar('PF', True)
         status = 200
         # remember the failure for the -k case
-        h = file(event.data.getVar('TMPDIR', True)+"/tinder-status", 'w')
+        h = open(event.data.getVar('TMPDIR', True)+"/tinder-status", 'w')
         h.write("200")
     elif name == "BuildCompleted":
         log += "Build Completed\n"
         status = 100
         # Check if we have a old status...
         try:
-            h = file(event.data.getVar('TMPDIR',True)+'/tinder-status', 'r')
+            h = open(event.data.getVar('TMPDIR',True)+'/tinder-status', 'r')
             status = int(h.read())
         except:
             pass
@@ -342,7 +342,7 @@
         log += "Error:Was Runtime: %d\n" % event.isRuntime()
         status = 200
         # remember the failure for the -k case
-        h = file(event.data.getVar('TMPDIR', True)+"/tinder-status", 'w')
+        h = open(event.data.getVar('TMPDIR', True)+"/tinder-status", 'w')
         h.write("200")
 
     # now post the log
diff --git a/import-layers/yocto-poky/meta/classes/toaster.bbclass b/import-layers/yocto-poky/meta/classes/toaster.bbclass
index 1a70f14..4bddf34 100644
--- a/import-layers/yocto-poky/meta/classes/toaster.bbclass
+++ b/import-layers/yocto-poky/meta/classes/toaster.bbclass
@@ -33,6 +33,7 @@
 
     def _get_git_branch(layer_path):
         branch = subprocess.Popen("git symbolic-ref HEAD 2>/dev/null ", cwd=layer_path, shell=True, stdout=subprocess.PIPE).communicate()[0]
+        branch = branch.decode('utf-8')
         branch = branch.replace('refs/heads/', '').rstrip()
         return branch
 
@@ -135,60 +136,16 @@
 
 # 2. Dump output image files information
 
-python toaster_image_dumpdata() {
-    """
-    Image filename for output images is not standardized.
-    image_types.bbclass will spell out IMAGE_CMD_xxx variables that actually
-    have hardcoded ways to create image file names in them.
-    So we look for files starting with the set name.
-
-    We also look for other files in the images/ directory which don't
-    match IMAGE_NAME, such as the kernel bzImage, modules tarball etc.
-    """
-
-    dir_to_walk = d.getVar('DEPLOY_DIR_IMAGE', True);
-    image_name = d.getVar('IMAGE_NAME', True);
-    image_info_data = {}
-    artifact_info_data = {}
-
-    # collect all images and artifacts in the images directory
-    for dirpath, dirnames, filenames in os.walk(dir_to_walk):
-        for filename in filenames:
-            full_path = os.path.join(dirpath, filename)
-            try:
-                if filename.startswith(image_name):
-                    # image
-                    image_info_data[full_path] = os.stat(full_path).st_size
-                else:
-                    # other non-image artifact
-                    if not os.path.islink(full_path):
-                        artifact_info_data[full_path] = os.stat(full_path).st_size
-            except OSError as e:
-                bb.event.fire(bb.event.MetadataEvent("OSErrorException", e), d)
-
-    bb.event.fire(bb.event.MetadataEvent("ImageFileSize", image_info_data), d)
-    bb.event.fire(bb.event.MetadataEvent("ArtifactFileSize", artifact_info_data), d)
-}
-
 python toaster_artifact_dumpdata() {
     """
-    Dump data about artifacts in the SDK_DEPLOY directory
+    Dump data about SDK variables
     """
 
-    dir_to_walk = d.getVar("SDK_DEPLOY", True)
-    artifact_info_data = {}
+    event_data = {
+      "TOOLCHAIN_OUTPUTNAME": d.getVar("TOOLCHAIN_OUTPUTNAME", True)
+    }
 
-    # collect all artifacts in the sdk directory
-    for dirpath, dirnames, filenames in os.walk(dir_to_walk):
-        for filename in filenames:
-            full_path = os.path.join(dirpath, filename)
-            try:
-                if not os.path.islink(full_path):
-                    artifact_info_data[full_path] = os.stat(full_path).st_size
-            except OSError as e:
-                bb.event.fire(bb.event.MetadataEvent("OSErrorException", e), d)
-
-    bb.event.fire(bb.event.MetadataEvent("ArtifactFileSize", artifact_info_data), d)
+    bb.event.fire(bb.event.MetadataEvent("SDKArtifactInfo", event_data), d)
 }
 
 # collect list of buildstats files based on fired events; when the build completes, collect all stats and fire an event with collected data
@@ -331,15 +288,22 @@
                             images[target][dependsname] = {'size': 0, 'depends' : []}
                         images[target][pname]['depends'].append((dependsname, deptype))
 
-            with open("%s/files-in-image.txt" % installed_img_path, "r") as fin:
-                for line in fin:
-                    lc = [ x for x in line.strip().split(" ") if len(x) > 0 ]
-                    if lc[0].startswith("l"):
-                        files[target]['syms'].append(lc)
-                    elif lc[0].startswith("d"):
-                        files[target]['dirs'].append(lc)
-                    else:
-                        files[target]['files'].append(lc)
+            # files-in-image.txt is only generated if an image file is created,
+            # so the file entries ('syms', 'dirs', 'files') for a target will be
+            # empty for rootfs builds and other "image" tasks which don't
+            # produce image files
+            # (e.g. "bitbake core-image-minimal -c populate_sdk")
+            files_in_image_path = "%s/files-in-image.txt" % installed_img_path
+            if os.path.exists(files_in_image_path):
+                with open(files_in_image_path, "r") as fin:
+                    for line in fin:
+                        lc = [ x for x in line.strip().split(" ") if len(x) > 0 ]
+                        if lc[0].startswith("l"):
+                            files[target]['syms'].append(lc)
+                        elif lc[0].startswith("d"):
+                            files[target]['dirs'].append(lc)
+                        else:
+                            files[target]['files'].append(lc)
 
             for pname in images[target]:
                 if not pname in allpkgs:
@@ -360,15 +324,18 @@
 
 }
 
-# dump information related to license manifest path
-
-python toaster_licensemanifest_dump() {
-    deploy_dir = d.getVar('DEPLOY_DIR', True);
-    image_name = d.getVar('IMAGE_NAME', True);
-
-    data = { 'deploy_dir' : deploy_dir, 'image_name' : image_name }
-
-    bb.event.fire(bb.event.MetadataEvent("LicenseManifestPath", data), d)
+# get list of artifacts from sstate manifest
+python toaster_artifacts() {
+    if e.taskname in ["do_deploy", "do_image_complete", "do_populate_sdk", "do_populate_sdk_ext"]:
+        d2 = d.createCopy()
+        d2.setVar('FILE', e.taskfile)
+        d2.setVar('SSTATE_MANMACH', d2.expand("${MACHINE}"))
+        manifest = oe.sstatesig.sstate_get_manifest_filename(e.taskname[3:], d2)[0]
+        if os.access(manifest, os.R_OK):
+            with open(manifest) as fmanifest:
+                artifacts = [fname.strip() for fname in fmanifest]
+                data = {"task": e.taskid, "artifacts": artifacts}
+                bb.event.fire(bb.event.MetadataEvent("TaskArtifacts", data), d2)
 }
 
 # set event handlers
@@ -381,17 +348,17 @@
 addhandler toaster_buildhistory_dump
 toaster_buildhistory_dump[eventmask] = "bb.event.BuildCompleted"
 
+addhandler toaster_artifacts
+toaster_artifacts[eventmask] = "bb.runqueue.runQueueTaskSkipped bb.runqueue.runQueueTaskCompleted"
+
 do_packagedata_setscene[postfuncs] += "toaster_package_dumpdata "
 do_packagedata_setscene[vardepsexclude] += "toaster_package_dumpdata "
 
 do_package[postfuncs] += "toaster_package_dumpdata "
 do_package[vardepsexclude] += "toaster_package_dumpdata "
 
-do_image_complete[postfuncs] += "toaster_image_dumpdata "
-do_image_complete[vardepsexclude] += "toaster_image_dumpdata "
-
-do_rootfs[postfuncs] += "toaster_licensemanifest_dump "
-do_rootfs[vardepsexclude] += "toaster_licensemanifest_dump "
-
 do_populate_sdk[postfuncs] += "toaster_artifact_dumpdata "
 do_populate_sdk[vardepsexclude] += "toaster_artifact_dumpdata "
+
+do_populate_sdk_ext[postfuncs] += "toaster_artifact_dumpdata "
+do_populate_sdk_ext[vardepsexclude] += "toaster_artifact_dumpdata "
\ No newline at end of file
diff --git a/import-layers/yocto-poky/meta/classes/toolchain-scripts-base.bbclass b/import-layers/yocto-poky/meta/classes/toolchain-scripts-base.bbclass
new file mode 100644
index 0000000..2489b9d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/toolchain-scripts-base.bbclass
@@ -0,0 +1,11 @@
+#This function create a version information file
+toolchain_create_sdk_version () {
+	local versionfile=$1
+	rm -f $versionfile
+	touch $versionfile
+	echo 'Distro: ${DISTRO}' >> $versionfile
+	echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
+	echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
+	echo 'Timestamp: ${DATETIME}' >> $versionfile
+}
+toolchain_create_sdk_version[vardepsexclude] = "DATETIME"
diff --git a/import-layers/yocto-poky/meta/classes/toolchain-scripts.bbclass b/import-layers/yocto-poky/meta/classes/toolchain-scripts.bbclass
index 2e2c93a..0e11f2d 100644
--- a/import-layers/yocto-poky/meta/classes/toolchain-scripts.bbclass
+++ b/import-layers/yocto-poky/meta/classes/toolchain-scripts.bbclass
@@ -1,4 +1,4 @@
-inherit siteinfo kernel-arch
+inherit toolchain-scripts-base siteinfo kernel-arch
 
 # We want to be able to change the value of MULTIMACH_TARGET_SYS, because it
 # doesn't always match our expectations... but we default to the stock value
@@ -6,9 +6,13 @@
 TARGET_CC_ARCH_append_libc-uclibc = " -muclibc"
 TARGET_CC_ARCH_append_libc-musl = " -mmusl"
 
+# default debug prefix map isn't valid in the SDK
+DEBUG_PREFIX_MAP = ""
+
 # This function creates an environment-setup-script for use in a deployable SDK
 toolchain_create_sdk_env_script () {
-	# Create environment setup script
+	# Create environment setup script.  Remember that $SDKTARGETSYSROOT should
+	# only be expanded on the target at runtime.
 	base_sbindir=${10:-${base_sbindir_nativesdk}}
 	base_bindir=${9:-${base_bindir_nativesdk}}
 	sbindir=${8:-${sbindir_nativesdk}}
@@ -29,7 +33,7 @@
 	echo "export PATH=$sdkpathnative$bindir:$sdkpathnative$sbindir:$sdkpathnative$base_bindir:$sdkpathnative$base_sbindir:$sdkpathnative$bindir/../${HOST_SYS}/bin:$sdkpathnative$bindir/${TARGET_SYS}"$EXTRAPATH':$PATH' >> $script
 	echo "export CCACHE_PATH=$sdkpathnative$bindir:$sdkpathnative$bindir/../${HOST_SYS}/bin:$sdkpathnative$bindir/${TARGET_SYS}"$EXTRAPATH':$CCACHE_PATH' >> $script
 	echo 'export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT' >> $script
-	echo 'export PKG_CONFIG_PATH=$SDKTARGETSYSROOT'"$libdir"'/pkgconfig' >> $script
+	echo 'export PKG_CONFIG_PATH=$SDKTARGETSYSROOT'"$libdir"'/pkgconfig:$SDKTARGETSYSROOT'"$prefix"'/share/pkgconfig' >> $script
 	echo 'export CONFIG_SITE=${SDKPATH}/site-config-'"${multimach_target_sys}" >> $script
 	echo "export OECORE_NATIVE_SYSROOT=\"$sdkpathnative\"" >> $script
 	echo 'export OECORE_TARGET_SYSROOT="$SDKTARGETSYSROOT"' >> $script
@@ -89,19 +93,19 @@
 # Append environment subscripts
 if [ -d "\$OECORE_TARGET_SYSROOT/environment-setup.d" ]; then
     for envfile in \$OECORE_TARGET_SYSROOT/environment-setup.d/*.sh; do
-	    source \$envfile
+	    . \$envfile
     done
 fi
 if [ -d "\$OECORE_NATIVE_SYSROOT/environment-setup.d" ]; then
     for envfile in \$OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do
-	    source \$envfile
+	    . \$envfile
     done
 fi
 EOF
 }
 
 #we get the cached site config in the runtime
-TOOLCHAIN_CONFIGSITE_NOCACHE = "${@siteinfo_get_files(d, True)}"
+TOOLCHAIN_CONFIGSITE_NOCACHE = "${@siteinfo_get_files(d)}"
 TOOLCHAIN_CONFIGSITE_SYSROOTCACHE = "${STAGING_DIR}/${MLPREFIX}${MACHINE}/${target_datadir}/${TARGET_SYS}_config_site.d"
 TOOLCHAIN_NEED_CONFIGSITE_CACHE ??= "virtual/${MLPREFIX}libc ncurses"
 
@@ -132,18 +136,6 @@
 # The immediate expansion above can result in unwanted path dependencies here
 toolchain_create_sdk_siteconfig[vardepsexclude] = "TOOLCHAIN_CONFIGSITE_SYSROOTCACHE"
 
-#This function create a version information file
-toolchain_create_sdk_version () {
-	local versionfile=$1
-	rm -f $versionfile
-	touch $versionfile
-	echo 'Distro: ${DISTRO}' >> $versionfile
-	echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
-	echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
-	echo 'Timestamp: ${DATETIME}' >> $versionfile
-}
-toolchain_create_sdk_version[vardepsexclude] = "DATETIME"
-
 python __anonymous () {
     import oe.classextend
     deps = ""
diff --git a/import-layers/yocto-poky/meta/classes/uboot-config.bbclass b/import-layers/yocto-poky/meta/classes/uboot-config.bbclass
index cb061af..3f760f2 100644
--- a/import-layers/yocto-poky/meta/classes/uboot-config.bbclass
+++ b/import-layers/yocto-poky/meta/classes/uboot-config.bbclass
@@ -3,7 +3,7 @@
 # The format to specify it, in the machine, is:
 #
 # UBOOT_CONFIG ??= <default>
-# UBOOT_CONFIG[foo] = "config,images"
+# UBOOT_CONFIG[foo] = "config,images,binary"
 #
 # or
 #
@@ -11,9 +11,13 @@
 #
 # Copyright 2013, 2014 (C) O.S. Systems Software LTDA.
 
+UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}"
+
 python () {
     ubootmachine = d.getVar("UBOOT_MACHINE", True)
     ubootconfigflags = d.getVarFlags('UBOOT_CONFIG')
+    ubootbinary = d.getVar('UBOOT_BINARY', True)
+    ubootbinaries = d.getVar('UBOOT_BINARIES', True)
     # The "doc" varflag is special, we don't want to see it here
     ubootconfigflags.pop('doc', None)
 
@@ -27,6 +31,9 @@
     if ubootmachine and ubootconfigflags:
         raise bb.parse.SkipPackage("You cannot use UBOOT_MACHINE and UBOOT_CONFIG at the same time.")
 
+    if ubootconfigflags and ubootbinaries:
+        raise bb.parse.SkipPackage("You cannot use UBOOT_BINARIES as it is internal to uboot_config.bbclass.")
+
     if not ubootconfigflags:
         return
 
@@ -36,13 +43,19 @@
             for f, v in ubootconfigflags.items():
                 if config == f: 
                     items = v.split(',')
-                    if items[0] and len(items) > 2:
-                        raise bb.parse.SkipPackage('Only config,images can be specified!')
+                    if items[0] and len(items) > 3:
+                        raise bb.parse.SkipPackage('Only config,images,binary can be specified!')
                     d.appendVar('UBOOT_MACHINE', ' ' + items[0])
                     # IMAGE_FSTYPES appending
                     if len(items) > 1 and items[1]:
                         bb.debug(1, "Appending '%s' to IMAGE_FSTYPES." % items[1])
                         d.appendVar('IMAGE_FSTYPES', ' ' + items[1])
+                    if len(items) > 2 and items[2]:
+                        bb.debug(1, "Appending '%s' to UBOOT_BINARIES." % items[2])
+                        d.appendVar('UBOOT_BINARIES', ' ' + items[2])
+                    else:
+                        bb.debug(1, "Appending '%s' to UBOOT_BINARIES." % ubootbinary)
+                        d.appendVar('UBOOT_BINARIES', ' ' + ubootbinary)
                     break
     elif len(ubootconfig) == 0:
        raise bb.parse.SkipPackage('You must set a default in UBOOT_CONFIG.')
diff --git a/import-layers/yocto-poky/meta/classes/uboot-extlinux-config.bbclass b/import-layers/yocto-poky/meta/classes/uboot-extlinux-config.bbclass
new file mode 100644
index 0000000..df91386
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/uboot-extlinux-config.bbclass
@@ -0,0 +1,126 @@
+# uboot-extlinux-config.bbclass
+#
+# This class allow the extlinux.conf generation for U-Boot use. The
+# U-Boot support for it is given to allow the Generic Distribution
+# Configuration specification use by OpenEmbedded-based products.
+#
+# External variables:
+#
+# UBOOT_EXTLINUX_CONSOLE           - Set to "console=ttyX" to change kernel boot
+#                                    default console.
+# UBOOT_EXTLINUX_LABELS            - A list of targets for the automatic config.
+# UBOOT_EXTLINUX_KERNEL_ARGS       - Add additional kernel arguments.
+# UBOOT_EXTLINUX_KERNEL_IMAGE      - Kernel image name.
+# UBOOT_EXTLINUX_FDTDIR            - Device tree directory.
+# UBOOT_EXTLINUX_INITRD            - Indicates a list of filesystem images to
+#                                    concatenate and use as an initrd (optional).
+# UBOOT_EXTLINUX_MENU_DESCRIPTION  - Name to use as description.
+# UBOOT_EXTLINUX_ROOT              - Root kernel cmdline.
+#
+# If there's only one label system will boot automatically and menu won't be
+# created. If you want to use more than one labels, e.g linux and alternate,
+# use overrides to set menu description, console and others variables.
+#
+# Ex:
+#
+# UBOOT_EXTLINUX_LABELS ??= "default fallback"
+#
+# UBOOT_EXTLINUX_KERNEL_IMAGE_default ??= "../zImage"
+# UBOOT_EXTLINUX_MENU_DESCRIPTION_default ??= "Linux Default"
+#
+# UBOOT_EXTLINUX_KERNEL_IMAGE_fallback ??= "../zImage-fallback"
+# UBOOT_EXTLINUX_MENU_DESCRIPTION_fallback ??= "Linux Fallback"
+#
+# Results:
+#
+# menu title Select the boot mode
+# LABEL Linux Default
+#   KERNEL ../zImage
+#   FDTDIR ../
+#   APPEND root=/dev/mmcblk2p2 rootwait rw console=${console}
+# LABEL Linux Fallback
+#   KERNEL ../zImage-fallback
+#   FDTDIR ../
+#   APPEND root=/dev/mmcblk2p2 rootwait rw console=${console}
+#
+# Copyright (C) 2016, O.S. Systems Software LTDA.  All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+#
+# The kernel has an internal default console, which you can override with
+# a console=...some_tty...
+UBOOT_EXTLINUX_CONSOLE ??= "console=${console}"
+UBOOT_EXTLINUX_LABELS ??= "linux"
+UBOOT_EXTLINUX_FDTDIR ??= "../"
+UBOOT_EXTLINUX_KERNEL_IMAGE ??= "../${KERNEL_IMAGETYPE}"
+UBOOT_EXTLINUX_KERNEL_ARGS ??= "rootwait rw"
+UBOOT_EXTLINUX_MENU_DESCRIPTION_linux ??= "${DISTRO_NAME}"
+
+UBOOT_EXTLINUX_CONFIG = "${B}/extlinux.conf"
+
+python create_extlinux_config() {
+    if d.getVar("UBOOT_EXTLINUX", True) != "1":
+      return
+
+    if not d.getVar('WORKDIR', True):
+        bb.error("WORKDIR not defined, unable to package")
+
+    labels = d.getVar('UBOOT_EXTLINUX_LABELS', True)
+    if not labels:
+        bb.fatal("UBOOT_EXTLINUX_LABELS not defined, nothing to do")
+
+    if not labels.strip():
+        bb.fatal("No labels, nothing to do")
+
+    cfile = d.getVar('UBOOT_EXTLINUX_CONFIG', True)
+    if not cfile:
+        bb.fatal('Unable to read UBOOT_EXTLINUX_CONFIG')
+
+    try:
+        with open(cfile, 'w') as cfgfile:
+            cfgfile.write('# Generic Distro Configuration file generated by OpenEmbedded\n')
+
+            if len(labels.split()) > 1:
+                cfgfile.write('menu title Select the boot mode\n')
+
+            for label in labels.split():
+                localdata = bb.data.createCopy(d)
+
+                overrides = localdata.getVar('OVERRIDES', True)
+                if not overrides:
+                    bb.fatal('OVERRIDES not defined')
+
+                localdata.setVar('OVERRIDES', label + ':' + overrides)
+                bb.data.update_data(localdata)
+
+                extlinux_console = localdata.getVar('UBOOT_EXTLINUX_CONSOLE', True)
+
+                menu_description = localdata.getVar('UBOOT_EXTLINUX_MENU_DESCRIPTION', True)
+                if not menu_description:
+                    menu_description = label
+
+                root = localdata.getVar('UBOOT_EXTLINUX_ROOT', True)
+                if not root:
+                    bb.fatal('UBOOT_EXTLINUX_ROOT not defined')
+
+                kernel_image = localdata.getVar('UBOOT_EXTLINUX_KERNEL_IMAGE', True)
+                fdtdir = localdata.getVar('UBOOT_EXTLINUX_FDTDIR', True)
+                if fdtdir:
+                    cfgfile.write('LABEL %s\n\tKERNEL %s\n\tFDTDIR %s\n' %
+                                 (menu_description, kernel_image, fdtdir))
+                else:
+                    cfgfile.write('LABEL %s\n\tKERNEL %s\n' % (menu_description, kernel_image))
+
+                kernel_args = localdata.getVar('UBOOT_EXTLINUX_KERNEL_ARGS', True)
+
+                initrd = localdata.getVar('UBOOT_EXTLINUX_INITRD', True)
+                if initrd:
+                    cfgfile.write('\tINITRD %s\n'% initrd)
+
+                kernel_args = root + " " + kernel_args
+                cfgfile.write('\tAPPEND %s %s\n' % (kernel_args, extlinux_console))
+
+    except OSError:
+        bb.fatal('Unable to open %s' % (cfile))
+}
+
+do_install[prefuncs] += "create_extlinux_config"
diff --git a/import-layers/yocto-poky/meta/classes/uboot-sign.bbclass b/import-layers/yocto-poky/meta/classes/uboot-sign.bbclass
new file mode 100644
index 0000000..3c56db8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/classes/uboot-sign.bbclass
@@ -0,0 +1,95 @@
+# This file is part of U-Boot verified boot support and is intended to be
+# inherited from u-boot recipe and from kernel-fitimage.bbclass.
+#
+# The signature procedure requires the user to generate an RSA key and
+# certificate in a directory and to define the following variable:
+#
+#   UBOOT_SIGN_KEYDIR = "/keys/directory"
+#   UBOOT_SIGN_KEYNAME = "dev" # keys name in keydir (eg. "dev.crt", "dev.key")
+#   UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000"
+#   UBOOT_SIGN_ENABLE = "1"
+#
+# As verified boot depends on fitImage generation, following is also required:
+#
+#   KERNEL_CLASSES ?= " kernel-fitimage "
+#   KERNEL_IMAGETYPE ?= "fitImage"
+#
+# The signature support is limited to the use of CONFIG_OF_SEPARATE in U-Boot.
+#
+# The tasks sequence is set as below, using DEPLOY_IMAGE_DIR as common place to
+# treat the device tree blob:
+#
+#   u-boot:do_deploy_dtb
+#   u-boot:do_deploy
+#   virtual/kernel:do_assemble_fitimage
+#   u-boot:do_concat_dtb
+#   u-boot:do_install
+#
+# For more details on signature process, please refer to U-boot documentation.
+
+# Signature activation.
+UBOOT_SIGN_ENABLE ?= "0"
+
+# Default value for deployment filenames.
+UBOOT_DTB_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.dtb"
+UBOOT_DTB_BINARY ?= "u-boot.dtb"
+UBOOT_DTB_SYMLINK ?= "u-boot-${MACHINE}.dtb"
+UBOOT_NODTB_IMAGE ?= "u-boot-nodtb-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
+UBOOT_NODTB_BINARY ?= "u-boot-nodtb.${UBOOT_SUFFIX}"
+UBOOT_NODTB_SYMLINK ?= "u-boot-nodtb-${MACHINE}.${UBOOT_SUFFIX}"
+
+#
+# Following is relevant only for u-boot recipes:
+#
+
+do_deploy_dtb () {
+	mkdir -p ${DEPLOYDIR}
+	cd ${DEPLOYDIR}
+
+	if [ -f ${B}/${UBOOT_DTB_BINARY} ]; then
+		install ${B}/${UBOOT_DTB_BINARY} ${DEPLOYDIR}/${UBOOT_DTB_IMAGE}
+		rm -f ${UBOOT_DTB_BINARY} ${UBOOT_DTB_SYMLINK}
+		ln -sf ${UBOOT_DTB_IMAGE} ${UBOOT_DTB_SYMLINK}
+		ln -sf ${UBOOT_DTB_IMAGE} ${UBOOT_DTB_BINARY}
+	fi
+	if [ -f ${B}/${UBOOT_NODTB_BINARY} ]; then
+		install ${B}/${UBOOT_NODTB_BINARY} ${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}
+		rm -f ${UBOOT_NODTB_BINARY} ${UBOOT_NODTB_SYMLINK}
+		ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_SYMLINK}
+		ln -sf ${UBOOT_NODTB_IMAGE} ${UBOOT_NODTB_BINARY}
+	fi
+}
+
+do_concat_dtb () {
+	# Concatenate U-Boot w/o DTB & DTB with public key
+	# (cf. kernel-fitimage.bbclass for more details)
+	if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ]; then
+		if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \
+			[ -e "${DEPLOYDIR}/${UBOOT_DTB_IMAGE}" ]; then
+			cd ${B}
+			oe_runmake EXT_DTB=${DEPLOYDIR}/${UBOOT_DTB_IMAGE}
+			install ${S}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
+			install ${S}/${UBOOT_BINARY} ${DEPLOY_DIR_IMAGE}/${UBOOT_IMAGE}
+		elif [ -e "${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}" -a -e "${DEPLOYDIR}/${UBOOT_DTB_IMAGE}" ]; then
+			cd ${DEPLOYDIR}
+			cat ${UBOOT_NODTB_IMAGE} ${UBOOT_DTB_IMAGE} | tee ${B}/${UBOOT_BINARY} > ${UBOOT_IMAGE}
+		else
+			bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available."
+		fi
+	fi
+}
+
+python () {
+	uboot_pn = d.getVar('PREFERRED_PROVIDER_u-boot', True) or 'u-boot'
+	if d.getVar('UBOOT_SIGN_ENABLE', True) == '1' and d.getVar('PN', True) == uboot_pn:
+		kernel_pn = d.getVar('PREFERRED_PROVIDER_virtual/kernel', True)
+
+		# u-boot.dtb and u-boot-nodtb.bin are deployed _before_ do_deploy
+		# Thus, do_deploy_setscene will also populate them in DEPLOY_IMAGE_DIR
+		bb.build.addtask('do_deploy_dtb', 'do_deploy', 'do_compile', d)
+
+		# do_concat_dtb is scheduled _before_ do_install as it overwrite the
+		# u-boot.bin in both DEPLOYDIR and DEPLOY_IMAGE_DIR.
+		bb.build.addtask('do_concat_dtb', 'do_install', None, d)
+		d.appendVarFlag('do_concat_dtb', 'depends', ' %s:do_assemble_fitimage' % kernel_pn)
+}
diff --git a/import-layers/yocto-poky/meta/classes/update-alternatives.bbclass b/import-layers/yocto-poky/meta/classes/update-alternatives.bbclass
index 70a8185..1fdd681 100644
--- a/import-layers/yocto-poky/meta/classes/update-alternatives.bbclass
+++ b/import-layers/yocto-poky/meta/classes/update-alternatives.bbclass
@@ -71,14 +71,14 @@
 
     # First compute them for non_pkg versions
     for v in vars:
-        for flag in (d.getVarFlags(v) or {}):
+        for flag in sorted((d.getVarFlags(v) or {}).keys()):
             if flag == "doc" or flag == "vardeps" or flag == "vardepsexp":
                 continue
             d.appendVar('%s_VARDEPS' % (v), ' %s:%s' % (flag, d.getVarFlag(v, flag, False)))
 
     for p in pkgs:
         for v in vars:
-            for flag in (d.getVarFlags("%s_%s" % (v,p)) or {}):
+            for flag in sorted((d.getVarFlags("%s_%s" % (v,p)) or {}).keys()):
                 if flag == "doc" or flag == "vardeps" or flag == "vardepsexp":
                     continue
                 d.appendVar('%s_VARDEPS_%s' % (v,p), ' %s:%s' % (flag, d.getVarFlag('%s_%s' % (v,p), flag, False)))
diff --git a/import-layers/yocto-poky/meta/classes/update-rc.d.bbclass b/import-layers/yocto-poky/meta/classes/update-rc.d.bbclass
index 2a0a74a..321924b 100644
--- a/import-layers/yocto-poky/meta/classes/update-rc.d.bbclass
+++ b/import-layers/yocto-poky/meta/classes/update-rc.d.bbclass
@@ -1,6 +1,7 @@
 UPDATERCPN ?= "${PN}"
 
-DEPENDS_append_class-target = " update-rc.d-native update-rc.d initscripts"
+DEPENDS_append_class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', ' update-rc.d-native update-rc.d initscripts', '', d)}"
+
 UPDATERCD = "update-rc.d"
 UPDATERCD_class-cross = ""
 UPDATERCD_class-native = ""
@@ -12,7 +13,7 @@
 
 updatercd_preinst() {
 if [ -z "$D" -a -f "${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
-	${INIT_D_DIR}/${INITSCRIPT_NAME} stop
+	${INIT_D_DIR}/${INITSCRIPT_NAME} stop || :
 fi
 if type update-rc.d >/dev/null 2>/dev/null; then
 	if [ -n "$D" ]; then
@@ -36,8 +37,8 @@
 }
 
 updatercd_prerm() {
-if [ -z "$D" ]; then
-	${INIT_D_DIR}/${INITSCRIPT_NAME} stop
+if [ -z "$D" -a -x "${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
+	${INIT_D_DIR}/${INITSCRIPT_NAME} stop || :
 fi
 }
 
@@ -56,15 +57,15 @@
 def update_rc_after_parse(d):
     if d.getVar('INITSCRIPT_PACKAGES', False) == None:
         if d.getVar('INITSCRIPT_NAME', False) == None:
-            raise bb.build.FuncFailed("%s inherits update-rc.d but doesn't set INITSCRIPT_NAME" % d.getVar('FILE', False))
+            bb.fatal("%s inherits update-rc.d but doesn't set INITSCRIPT_NAME" % d.getVar('FILE', False))
         if d.getVar('INITSCRIPT_PARAMS', False) == None:
-            raise bb.build.FuncFailed("%s inherits update-rc.d but doesn't set INITSCRIPT_PARAMS" % d.getVar('FILE', False))
+            bb.fatal("%s inherits update-rc.d but doesn't set INITSCRIPT_PARAMS" % d.getVar('FILE', False))
 
 python __anonymous() {
     update_rc_after_parse(d)
 }
 
-PACKAGESPLITFUNCS_prepend = "populate_packages_updatercd "
+PACKAGESPLITFUNCS_prepend = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'populate_packages_updatercd ', '', d)}"
 PACKAGESPLITFUNCS_remove_class-nativesdk = "populate_packages_updatercd "
 
 populate_packages_updatercd[vardeps] += "updatercd_prerm updatercd_postrm updatercd_preinst updatercd_postinst"
@@ -120,8 +121,7 @@
 
     # Check that this class isn't being inhibited (generally, by
     # systemd.bbclass) before doing any work.
-    if bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d) or \
-       not d.getVar("INHIBIT_UPDATERCD_BBCLASS", True):
+    if not d.getVar("INHIBIT_UPDATERCD_BBCLASS", True):
         pkgs = d.getVar('INITSCRIPT_PACKAGES', True)
         if pkgs == None:
             pkgs = d.getVar('UPDATERCPN', True)
diff --git a/import-layers/yocto-poky/meta/classes/useradd-staticids.bbclass b/import-layers/yocto-poky/meta/classes/useradd-staticids.bbclass
index a9b506d..afb580a 100644
--- a/import-layers/yocto-poky/meta/classes/useradd-staticids.bbclass
+++ b/import-layers/yocto-poky/meta/classes/useradd-staticids.bbclass
@@ -4,6 +4,7 @@
     import argparse
     import itertools
     import re
+    import errno
 
     class myArgumentParser( argparse.ArgumentParser ):
         def _print_message(self, message, file=None):
@@ -15,7 +16,7 @@
             error(message)
 
         def error(self, message):
-            raise bb.build.FuncFailed(message)
+            bb.fatal(message)
 
     def list_extend(iterable, length, obj = None):
         """Ensure that iterable is the specified length by extending with obj
@@ -30,22 +31,33 @@
         are set)."""
         id_table = dict()
         for conf in file_list.split():
-            if os.path.exists(conf):
-                f = open(conf, "r")
-                for line in f:
-                    if line.startswith('#'):
-                        continue
-                    # Make sure there always are at least exp_fields elements in
-                    # the field list. This allows for leaving out trailing
-                    # colons in the files.
-                    fields = list_extend(line.rstrip().split(":"), exp_fields)
-                    if fields[0] not in id_table:
-                        id_table[fields[0]] = fields
-                    else:
-                        id_table[fields[0]] = list(itertools.imap(lambda x, y: x or y, fields, id_table[fields[0]]))
+            try:
+                with open(conf, "r") as f:
+                    for line in f:
+                        if line.startswith('#'):
+                            continue
+                        # Make sure there always are at least exp_fields
+                        # elements in the field list. This allows for leaving
+                        # out trailing colons in the files.
+                        fields = list_extend(line.rstrip().split(":"), exp_fields)
+                        if fields[0] not in id_table:
+                            id_table[fields[0]] = fields
+                        else:
+                            id_table[fields[0]] = list(map(lambda x, y: x or y, fields, id_table[fields[0]]))
+            except IOError as e:
+                if e.errno == errno.ENOENT:
+                    pass
 
         return id_table
 
+    def handle_missing_id(id, type, pkg):
+        # For backwards compatibility we accept "1" in addition to "error"
+        if d.getVar('USERADD_ERROR_DYNAMIC', True) == 'error' or d.getVar('USERADD_ERROR_DYNAMIC', True) == '1':
+            #bb.error("Skipping recipe %s, package %s which adds %sname %s does not have a static ID defined." % (d.getVar('PN', True),  pkg, type, id))
+            bb.fatal("%s - %s: %sname %s does not have a static ID defined." % (d.getVar('PN', True), pkg, type, id))
+        elif d.getVar('USERADD_ERROR_DYNAMIC', True) == 'warn':
+            bb.warn("%s - %s: %sname %s does not have a static ID defined." % (d.getVar('PN', True), pkg, type, id))
+
     # We parse and rewrite the useradd components
     def rewrite_useradd(params):
         # The following comes from --help on useradd from shadow
@@ -93,9 +105,9 @@
             if not param:
                 continue
             try:
-                uaargs = parser.parse_args(re.split('''[ \t]*(?=(?:[^'"]|'[^']*'|"[^"]*")*$)''', param))
+                uaargs = parser.parse_args(re.split('''[ \t]+(?=(?:[^'"]|'[^']*'|"[^"]*")*$)''', param))
             except:
-                raise bb.build.FuncFailed("%s: Unable to parse arguments for USERADD_PARAM_%s: '%s'" % (d.getVar('PN', True), pkg, param))
+                bb.fatal("%s: Unable to parse arguments for USERADD_PARAM_%s: '%s'" % (d.getVar('PN', True), pkg, param))
 
             # Read all passwd files specified in USERADD_UID_TABLES or files/passwd
             # Use the standard passwd layout:
@@ -112,6 +124,8 @@
                 users = merge_files(get_passwd_list(d), 7)
 
             if uaargs.LOGIN not in users:
+                if not uaargs.uid or not uaargs.uid.isdigit() or not uaargs.gid:
+                    handle_missing_id(uaargs.LOGIN, 'user', pkg)
                 continue
 
             field = users[uaargs.LOGIN]
@@ -161,9 +175,8 @@
             uaargs.shell = field[6] or uaargs.shell
 
             # Should be an error if a specific option is set...
-            if d.getVar('USERADD_ERROR_DYNAMIC', True) == '1' and not ((uaargs.uid and uaargs.uid.isdigit()) and uaargs.gid):
-                #bb.error("Skipping recipe %s, package %s which adds username %s does not have a static uid defined." % (d.getVar('PN', True),  pkg, uaargs.LOGIN))
-                raise bb.build.FuncFailed("%s - %s: Username %s does not have a static uid defined." % (d.getVar('PN', True), pkg, uaargs.LOGIN))
+            if not uaargs.uid or not uaargs.uid.isdigit() or not uaargs.gid:
+                 handle_missing_id(uaargs.LOGIN, 'user', pkg)
 
             # Reconstruct the args...
             newparam  = ['', ' --defaults'][uaargs.defaults]
@@ -227,9 +240,9 @@
                 continue
             try:
                 # If we're processing multiple lines, we could have left over values here...
-                gaargs = parser.parse_args(re.split('''[ \t]*(?=(?:[^'"]|'[^']*'|"[^"]*")*$)''', param))
+                gaargs = parser.parse_args(re.split('''[ \t]+(?=(?:[^'"]|'[^']*'|"[^"]*")*$)''', param))
             except:
-                raise bb.build.FuncFailed("%s: Unable to parse arguments for GROUPADD_PARAM_%s: '%s'" % (d.getVar('PN', True), pkg, param))
+                bb.fatal("%s: Unable to parse arguments for GROUPADD_PARAM_%s: '%s'" % (d.getVar('PN', True), pkg, param))
 
             # Read all group files specified in USERADD_GID_TABLES or files/group
             # Use the standard group layout:
@@ -244,6 +257,8 @@
                 groups = merge_files(get_group_list(d), 4)
 
             if gaargs.GROUP not in groups:
+                if not gaargs.gid or not gaargs.gid.isdigit():
+                    handle_missing_id(gaargs.GROUP, 'group', pkg)
                 continue
 
             field = groups[gaargs.GROUP]
@@ -253,9 +268,8 @@
                     bb.warn("%s: Changing groupname %s's gid from (%s) to (%s), verify configuration files!" % (d.getVar('PN', True), gaargs.GROUP, gaargs.gid, field[2]))
                 gaargs.gid = field[2]
 
-            if d.getVar('USERADD_ERROR_DYNAMIC', True) == '1' and not (gaargs.gid and gaargs.gid.isdigit()):
-                #bb.error("Skipping recipe %s, package %s which adds groupname %s does not have a static gid defined." % (d.getVar('PN', True),  pkg, gaargs.GROUP))
-                raise bb.build.FuncFailed("%s - %s: Groupname %s does not have a static gid defined." % (d.getVar('PN', True), pkg, gaargs.GROUP))
+            if not gaargs.gid or not gaargs.gid.isdigit():
+                handle_missing_id(gaargs.GROUP, 'group', pkg)
 
             # Reconstruct the args...
             newparam  = ['', ' --force'][gaargs.force]
@@ -271,6 +285,19 @@
 
         return ";".join(newparams).strip()
 
+    # The parsing of the current recipe depends on the content of
+    # the files listed in USERADD_UID/GID_TABLES. We need to tell bitbake
+    # about that explicitly to trigger re-parsing and thus re-execution of
+    # this code when the files change.
+    bbpath = d.getVar('BBPATH', True)
+    for varname, default in (('USERADD_UID_TABLES', 'files/passwd'),
+                             ('USERADD_GID_TABLES', 'files/group')):
+        tables = d.getVar(varname, True)
+        if not tables:
+            tables = default
+        for conf_file in tables.split():
+            bb.parse.mark_dependency(d, bb.utils.which(bbpath, conf_file))
+
     # Load and process the users and groups, rewriting the adduser/addgroup params
     useradd_packages = d.getVar('USERADD_PACKAGES', True)
 
diff --git a/import-layers/yocto-poky/meta/classes/useradd.bbclass b/import-layers/yocto-poky/meta/classes/useradd.bbclass
index ee402ac..3cff08e 100644
--- a/import-layers/yocto-poky/meta/classes/useradd.bbclass
+++ b/import-layers/yocto-poky/meta/classes/useradd.bbclass
@@ -3,11 +3,7 @@
 # base-passwd-cross provides the default passwd and group files in the
 # target sysroot, and shadow -native and -sysroot provide the utilities
 # and support files needed to add and modify user and group accounts
-DEPENDS_append = "${USERADDDEPENDS}"
-USERADDDEPENDS = " base-files shadow-native shadow-sysroot shadow"
-USERADDDEPENDS_class-cross = ""
-USERADDDEPENDS_class-native = ""
-USERADDDEPENDS_class-nativesdk = ""
+DEPENDS_append_class-target = " base-files shadow-native shadow-sysroot shadow"
 
 # This preinstall function can be run in four different contexts:
 #
@@ -54,15 +50,15 @@
 	echo "Running groupadd commands..."
 	# Invoke multiple instances of groupadd for parameter lists
 	# separated by ';'
-	opts=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1`
-	remaining=`echo "$GROUPADD_PARAM" | cut -d ';' -f 2-`
+	opts=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
+	remaining=`echo "$GROUPADD_PARAM" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'`
 	while test "x$opts" != "x"; do
 		perform_groupadd "$SYSROOT" "$OPT $opts"
 		if test "x$opts" = "x$remaining"; then
 			break
 		fi
-		opts=`echo "$remaining" | cut -d ';' -f 1`
-		remaining=`echo "$remaining" | cut -d ';' -f 2-`
+		opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
+		remaining=`echo "$remaining" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'`
 	done
 fi 
 
@@ -70,15 +66,15 @@
 	echo "Running useradd commands..."
 	# Invoke multiple instances of useradd for parameter lists
 	# separated by ';'
-	opts=`echo "$USERADD_PARAM" | cut -d ';' -f 1`
-	remaining=`echo "$USERADD_PARAM" | cut -d ';' -f 2-`
+	opts=`echo "$USERADD_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
+	remaining=`echo "$USERADD_PARAM" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'`
 	while test "x$opts" != "x"; do
 		perform_useradd "$SYSROOT" "$OPT $opts"
 		if test "x$opts" = "x$remaining"; then
 			break
 		fi
-		opts=`echo "$remaining" | cut -d ';' -f 1`
-		remaining=`echo "$remaining" | cut -d ';' -f 2-`
+		opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
+		remaining=`echo "$remaining" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'`
 	done
 fi
 
@@ -86,15 +82,15 @@
 	echo "Running groupmems commands..."
 	# Invoke multiple instances of groupmems for parameter lists
 	# separated by ';'
-	opts=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 1`
-	remaining=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 2-`
+	opts=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
+	remaining=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'`
 	while test "x$opts" != "x"; do
 		perform_groupmems "$SYSROOT" "$OPT $opts"
 		if test "x$opts" = "x$remaining"; then
 			break
 		fi
-		opts=`echo "$remaining" | cut -d ';' -f 1`
-		remaining=`echo "$remaining" | cut -d ';' -f 2-`
+		opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
+		remaining=`echo "$remaining" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'`
 	done
 fi
 }
@@ -103,7 +99,7 @@
 	# Pseudo may (do_install) or may not (do_populate_sysroot_setscene) be running 
 	# at this point so we're explicit about the environment so pseudo can load if 
 	# not already present.
-	export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${STAGING_DIR_NATIVE}${bindir}/pseudo"
+	export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${STAGING_DIR_NATIVE}${bindir_native}/pseudo"
 
 	# Explicitly set $D since it isn't set to anything
 	# before do_install
@@ -129,57 +125,53 @@
 
 userdel_sysroot_sstate () {
 if test "x${STAGING_DIR_TARGET}" != "x"; then
-    if [ "${BB_CURRENTTASK}" = "configure" -o "${BB_CURRENTTASK}" = "clean" ]; then
-        export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${STAGING_DIR_NATIVE}${bindir}/pseudo"
+    if [ "${BB_CURRENTTASK}" = "clean" ]; then
+        export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${STAGING_DIR_NATIVE}${bindir_native}/pseudo"
         OPT="--root ${STAGING_DIR_TARGET}"
 
         # Remove groups and users defined for package
         GROUPADD_PARAM="${@get_all_cmd_params(d, 'groupadd')}"
         USERADD_PARAM="${@get_all_cmd_params(d, 'useradd')}"
 
-        if test "x`echo $USERADD_PARAM | tr -d '[:space:]'`" != "x"; then
-            user=`echo "$USERADD_PARAM" | cut -d ';' -f 1 | awk '{ print $NF }'`
+        user=`echo "$USERADD_PARAM" | cut -d ';' -f 1 | awk '{ print $NF }'`
+        remaining=`echo "$USERADD_PARAM" | cut -d ';' -f 2- -s | sed -e 's#[ \t]*$##'`
+        while test "x$user" != "x"; do
             perform_userdel "${STAGING_DIR_TARGET}" "$OPT $user"
-        fi
+            user=`echo "$remaining" | cut -d ';' -f 1 | awk '{ print $NF }'`
+            remaining=`echo "$remaining" | cut -d ';' -f 2- -s | sed -e 's#[ \t]*$##'`
+        done
 
-        if test "x`echo $GROUPADD_PARAM | tr -d '[:space:]'`" != "x"; then
-            group=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1 | awk '{ print $NF }'`
-            perform_groupdel "${STAGING_DIR_TARGET}" "$OPT $group"
-        fi
+        user=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1 | awk '{ print $NF }'`
+        remaining=`echo "$GROUPADD_PARAM" | cut -d ';' -f 2- -s | sed -e 's#[ \t]*$##'`
+        while test "x$user" != "x"; do
+            perform_groupdel "${STAGING_DIR_TARGET}" "$OPT $user"
+            user=`echo "$remaining" | cut -d ';' -f 1 | awk '{ print $NF }'`
+            remaining=`echo "$remaining" | cut -d ';' -f 2- -s | sed -e 's#[ \t]*$##'`
+        done
 
     fi
 fi
 }
 
-SSTATECLEANFUNCS = "userdel_sysroot_sstate"
-SSTATECLEANFUNCS_class-cross = ""
-SSTATECLEANFUNCS_class-native = ""
-SSTATECLEANFUNCS_class-nativesdk = ""
+SSTATECLEANFUNCS_append_class-target = " userdel_sysroot_sstate"
 
 do_install[prefuncs] += "${SYSROOTFUNC}"
-SYSROOTFUNC = "useradd_sysroot"
-SYSROOTFUNC_class-cross = ""
-SYSROOTFUNC_class-native = ""
-SYSROOTFUNC_class-nativesdk = ""
-SSTATEPREINSTFUNCS += "${SYSROOTPOSTFUNC}"
-SYSROOTPOSTFUNC = "useradd_sysroot_sstate"
-SYSROOTPOSTFUNC_class-cross = ""
-SYSROOTPOSTFUNC_class-native = ""
-SYSROOTPOSTFUNC_class-nativesdk = ""
+SYSROOTFUNC_class-target = "useradd_sysroot"
+SYSROOTFUNC = ""
 
-USERADDSETSCENEDEPS = "${MLPREFIX}base-passwd:do_populate_sysroot_setscene pseudo-native:do_populate_sysroot_setscene shadow-native:do_populate_sysroot_setscene ${MLPREFIX}shadow-sysroot:do_populate_sysroot_setscene"
-USERADDSETSCENEDEPS_class-cross = ""
-USERADDSETSCENEDEPS_class-native = ""
-USERADDSETSCENEDEPS_class-nativesdk = ""
+SSTATEPREINSTFUNCS_append_class-target = " useradd_sysroot_sstate"
+
 do_package_setscene[depends] += "${USERADDSETSCENEDEPS}"
 do_populate_sysroot_setscene[depends] += "${USERADDSETSCENEDEPS}"
+USERADDSETSCENEDEPS_class-target = "${MLPREFIX}base-passwd:do_populate_sysroot_setscene pseudo-native:do_populate_sysroot_setscene shadow-native:do_populate_sysroot_setscene ${MLPREFIX}shadow-sysroot:do_populate_sysroot_setscene"
+USERADDSETSCENEDEPS = ""
 
 # Recipe parse-time sanity checks
 def update_useradd_after_parse(d):
     useradd_packages = d.getVar('USERADD_PACKAGES', True)
 
     if not useradd_packages:
-        raise bb.build.FuncFailed("%s inherits useradd but doesn't set USERADD_PACKAGES" % d.getVar('FILE', False))
+        bb.fatal("%s inherits useradd but doesn't set USERADD_PACKAGES" % d.getVar('FILE', False))
 
     for pkg in useradd_packages.split():
         if not d.getVar('USERADD_PARAM_%s' % pkg, True) and not d.getVar('GROUPADD_PARAM_%s' % pkg, True) and not d.getVar('GROUPMEMS_PARAM_%s' % pkg, True):
@@ -203,7 +195,7 @@
     for pkg in useradd_packages.split():
         param = d.getVar(param_type % pkg, True)
         if param:
-            params.append(param)
+            params.append(param.rstrip(" ;"))
 
     return "; ".join(params)
 
diff --git a/import-layers/yocto-poky/meta/classes/useradd_base.bbclass b/import-layers/yocto-poky/meta/classes/useradd_base.bbclass
index 0d81acc..ba87edc 100644
--- a/import-layers/yocto-poky/meta/classes/useradd_base.bbclass
+++ b/import-layers/yocto-poky/meta/classes/useradd_base.bbclass
@@ -17,7 +17,6 @@
 	local groupname=`echo "$opts" | awk '{ print $NF }'`
 	local group_exists="`grep "^$groupname:" $rootdir/etc/group || true`"
 	if test "x$group_exists" = "x"; then
-		opts=`echo $opts | sed s/\'/\"/g`
 		eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO groupadd \$opts\" || true
 		group_exists="`grep "^$groupname:" $rootdir/etc/group || true`"
 		if test "x$group_exists" = "x"; then
@@ -35,7 +34,6 @@
 	local username=`echo "$opts" | awk '{ print $NF }'`
 	local user_exists="`grep "^$username:" $rootdir/etc/passwd || true`"
 	if test "x$user_exists" = "x"; then
-		opts=`echo $opts | sed s/\'/\"/g`
 		eval flock -x $rootdir${sysconfdir} -c  \"$PSEUDO useradd \$opts\" || true
 		user_exists="`grep "^$username:" $rootdir/etc/passwd || true`"
 		if test "x$user_exists" = "x"; then
@@ -53,14 +51,6 @@
 	local groupname=`echo "$opts" | awk '{ for (i = 1; i < NF; i++) if ($i == "-g" || $i == "--group") print $(i+1) }'`
 	local username=`echo "$opts" | awk '{ for (i = 1; i < NF; i++) if ($i == "-a" || $i == "--add") print $(i+1) }'`
 	bbnote "${PN}: Running groupmems command with group $groupname and user $username"
-	# groupmems fails if /etc/gshadow does not exist
-	local gshadow=""
-	if [ -f $rootdir${sysconfdir}/gshadow ]; then
-		gshadow="yes"
-	else
-		gshadow="no"
-		touch $rootdir${sysconfdir}/gshadow
-	fi
 	local mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*" $rootdir/etc/group || true`"
 	if test "x$mem_exists" = "x"; then
 		eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO groupmems \$opts\" || true
@@ -71,10 +61,6 @@
 	else
 		bbnote "${PN}: group $groupname already contains $username, not re-adding it"
 	fi
-	if test "x$gshadow" = "xno"; then
-		rm -f $rootdir${sysconfdir}/gshadow
-		rm -f $rootdir${sysconfdir}/gshadow-
-	fi
 }
 
 perform_groupdel () {
diff --git a/import-layers/yocto-poky/meta/classes/utility-tasks.bbclass b/import-layers/yocto-poky/meta/classes/utility-tasks.bbclass
index 5bcfd0b..7ba56e2 100644
--- a/import-layers/yocto-poky/meta/classes/utility-tasks.bbclass
+++ b/import-layers/yocto-poky/meta/classes/utility-tasks.bbclass
@@ -46,8 +46,8 @@
     try:
         fetcher = bb.fetch2.Fetch(src_uri, d)
         fetcher.checkstatus()
-    except bb.fetch2.BBFetchException, e:
-        raise bb.build.FuncFailed(e)
+    except bb.fetch2.BBFetchException as e:
+        bb.fatal(str(e))
 }
 
 addtask checkuriall after do_checkuri
diff --git a/import-layers/yocto-poky/meta/classes/utils.bbclass b/import-layers/yocto-poky/meta/classes/utils.bbclass
index 81b92cb..dbb5e4c 100644
--- a/import-layers/yocto-poky/meta/classes/utils.bbclass
+++ b/import-layers/yocto-poky/meta/classes/utils.bbclass
@@ -24,6 +24,7 @@
     return oe.utils.version_less_or_equal(variable, checkvalue, truevalue, falsevalue, d)
 
 def base_contains(variable, checkvalues, truevalue, falsevalue, d):
+    bb.note('base_contains is deprecated, please use bb.utils.contains instead.')
     return bb.utils.contains(variable, checkvalues, truevalue, falsevalue, d)
 
 def base_both_contain(variable1, variable2, checkvalue, d):
@@ -61,15 +62,18 @@
 oe_soinstall() {
 	# Purpose: Install shared library file and
 	#          create the necessary links
-	# Example:
-	#
-	# oe_
-	#
-	#bbnote installing shared library $1 to $2
-	#
+	# Example: oe_soinstall libfoo.so.1.2.3 ${D}${libdir}
 	libname=`basename $1`
+	case "$libname" in
+	    *.so)
+	        bbfatal "oe_soinstall: Shared library must haved versioned filename (e.g. libfoo.so.1.2.3)"
+	        ;;
+	esac
 	install -m 755 $1 $2/$libname
 	sonamelink=`${HOST_PREFIX}readelf -d $1 |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'`
+	if [ -z $sonamelink ]; then
+		bbfatal "oe_soinstall: $libname is missing ELF tag 'SONAME'."
+	fi
 	solink=`echo $libname | sed -e 's/\.so\..*/.so/'`
 	ln -sf $libname $2/$sonamelink
 	ln -sf $libname $2/$solink
@@ -248,7 +252,7 @@
 create_cmdline_wrapper () {
 	# Create a wrapper script where commandline options are needed
 	#
-	# These are useful to work around relocation issues, by passing extra options 
+	# These are useful to work around relocation issues, by passing extra options
 	# to a program
 	#
 	# Usage: create_cmdline_wrapper FILENAME <extra-options>
@@ -302,7 +306,7 @@
 
 
 def check_app_exists(app, d):
-    app = d.expand(app)
+    app = d.expand(app).strip()
     path = d.getVar('PATH', d, True)
     return bool(bb.utils.which(path, app))
 
@@ -322,7 +326,7 @@
     overrides.reverse()
     for o in overrides:
         for p in path:
-            if p != "": 
+            if p != "":
                 filespath.append(os.path.join(p, o))
     return ":".join(filespath)
 
@@ -378,3 +382,50 @@
     else:
         ret = values
     return " ".join(ret)
+
+def all_multilib_tune_list(vars, d):
+    """
+    Return a list of ${VAR} for each variable VAR in vars from each 
+    multilib tune configuration.
+    Is safe to be called from a multilib recipe/context as it can
+    figure out the original tune and remove the multilib overrides.
+    """
+    values = {}
+    for v in vars:
+        values[v] = []
+
+    localdata = bb.data.createCopy(d)
+    overrides = localdata.getVar("OVERRIDES", False).split(":")
+    newoverrides = []
+    for o in overrides:
+        if not o.startswith("virtclass-multilib-"):
+            newoverrides.append(o)
+    localdata.setVar("OVERRIDES", ":".join(newoverrides))
+    localdata.setVar("MLPREFIX", "")
+    origdefault = localdata.getVar("DEFAULTTUNE_MULTILIB_ORIGINAL", True)
+    if origdefault:
+        localdata.setVar("DEFAULTTUNE", origdefault)
+    bb.data.update_data(localdata)
+    values['ml'] = ['']
+    for v in vars:
+        values[v].append(localdata.getVar(v, True))
+    variants = d.getVar("MULTILIB_VARIANTS", True) or ""
+    for item in variants.split():
+        localdata = bb.data.createCopy(d)
+        overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
+        localdata.setVar("OVERRIDES", overrides)
+        localdata.setVar("MLPREFIX", item + "-")
+        bb.data.update_data(localdata)
+        values[v].append(localdata.getVar(v, True))
+        values['ml'].append(item)
+    return values
+
+# If the user hasn't set up their name/email, set some defaults
+check_git_config() {
+	if ! git config user.email > /dev/null ; then
+		git config --local user.email "${PATCH_GIT_USER_EMAIL}"
+	fi
+	if ! git config user.name > /dev/null ; then
+		git config --local user.name "${PATCH_GIT_USER_NAME}"
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/conf/bitbake.conf b/import-layers/yocto-poky/meta/conf/bitbake.conf
index 40796aa..54a587f 100644
--- a/import-layers/yocto-poky/meta/conf/bitbake.conf
+++ b/import-layers/yocto-poky/meta/conf/bitbake.conf
@@ -15,7 +15,7 @@
 # Path prefixes
 export base_prefix = ""
 export prefix = "/usr"
-export exec_prefix = "/usr"
+export exec_prefix = "${prefix}"
 
 # Base paths
 export base_bindir = "${base_prefix}/bin"
@@ -129,7 +129,7 @@
 TARGET_LD_ARCH = "${TUNE_LDARGS}"
 TARGET_AS_ARCH = "${TUNE_ASARGS}"
 
-SDK_ARCH = "${BUILD_ARCH}"
+SDKMACHINE ??= "x86_64"
 SDK_OS = "${BUILD_OS}"
 SDK_VENDOR = "-oesdk"
 SDK_SYS = "${SDK_ARCH}${SDK_VENDOR}${@['-' + d.getVar('SDK_OS', True), ''][d.getVar('SDK_OS', True) == ('' or 'custom')]}"
@@ -247,7 +247,7 @@
 DESCRIPTION_${PN}-doc ?= "${DESCRIPTION}  \
 This package contains documentation."
 
-LICENSE = "INVALID"
+LICENSE ??= "INVALID"
 MAINTAINER = "OE-Core Developers <openembedded-core@lists.openembedded.org>"
 HOMEPAGE = ""
 
@@ -284,7 +284,8 @@
             ${sysconfdir} ${sharedstatedir} ${localstatedir} \
             ${base_bindir}/* ${base_sbindir}/* \
             ${base_libdir}/*${SOLIBS} \
-            ${base_prefix}/lib/udev/rules.d ${prefix}/lib/udev/rules.d \
+            ${base_prefix}/lib/udev ${prefix}/lib/udev \
+            ${base_libdir}/udev ${libdir}/udev \
             ${datadir}/${BPN} ${libdir}/${BPN}/* \
             ${datadir}/pixmaps ${datadir}/applications \
             ${datadir}/idl ${datadir}/omf ${datadir}/sounds \
@@ -403,8 +404,14 @@
 # Kernel info.
 ##################################################################
 
-OLDEST_KERNEL = "2.6.32"
+OLDEST_KERNEL = "3.2.0"
 OLDEST_KERNEL_aarch64 = "3.14"
+OLDEST_KERNEL_nios2 = "3.19"
+
+# Define where the kernel headers are installed on the target as well as where
+# they are staged.
+KERNEL_SRC_PATH = "/usr/src/kernel"
+
 STAGING_KERNEL_DIR = "${TMPDIR}/work-shared/${MACHINE}/kernel-source"
 STAGING_KERNEL_BUILDDIR = "${TMPDIR}/work-shared/${MACHINE}/kernel-build-artifacts"
 
@@ -444,10 +451,10 @@
 # Disable ccache explicitly if CCACHE is null since gcc may be a symlink
 # of ccache some distributions (e.g., Fedora 17).
 export CCACHE_DISABLE ??= "${@[0,1][d.getVar('CCACHE', True) == '']}"
-# Assign CCACHE_DIR a default value to fix a bug of ccache 3.1.7,
-# since it would always create CCACHE_DIR/.ccache even if
-# CCACHE_DISABLE = 1.
-export CCACHE_DIR ??= "${@os.getenv('HOME')}"
+# ccache < 3.1.10 will create CCACHE_DIR on startup even if disabled, and
+# autogen sets HOME=/dev/null so in certain situations builds can fail.
+# Explicitly export CCACHE_DIR until we can assume ccache >3.1.10 on the host.
+export CCACHE_DIR ??= "${@os.getenv('HOME')}/.ccache"
 
 TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TARGET}"
 
@@ -465,6 +472,7 @@
 export OBJDUMP = "${HOST_PREFIX}objdump"
 export STRINGS = "${HOST_PREFIX}strings"
 export NM = "${HOST_PREFIX}nm"
+export READELF = "${HOST_PREFIX}readelf"
 PYTHON = "${@sys.executable}"
 
 export BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
@@ -482,7 +490,7 @@
 export MAKE = "make"
 EXTRA_OEMAKE = ""
 EXTRA_OECONF = ""
-export LC_ALL = "C"
+export LC_ALL = "en_US.UTF-8"
 
 ##################################################################
 # Patch handling.
@@ -495,10 +503,9 @@
 ##################################################################
 
 export BUILD_CPPFLAGS = "-isystem${STAGING_INCDIR_NATIVE}"
-BUILDSDK_CPPFLAGS = "-isystem${STAGING_INCDIR}"
+BUILDSDK_CPPFLAGS = ""
 export CPPFLAGS = "${TARGET_CPPFLAGS}"
 export TARGET_CPPFLAGS = ""
-#export TARGET_CPPFLAGS = "-isystem${STAGING_DIR_TARGET}${includedir}"
 
 export BUILD_CFLAGS = "${BUILD_CPPFLAGS} ${BUILD_OPTIMIZATION}"
 BUILDSDK_CFLAGS = "${BUILDSDK_CPPFLAGS} ${BUILD_OPTIMIZATION}"
@@ -517,12 +524,7 @@
                         -Wl,-rpath,${STAGING_BASE_LIBDIR_NATIVE} \
                         -Wl,-O1"
 
-BUILDSDK_LDFLAGS = "-L${STAGING_LIBDIR} \
-                    -Wl,-rpath-link,${STAGING_LIBDIR} \
-                    -Wl,-rpath,${libdir} -Wl,-O1 \
-                    -L${STAGING_DIR_HOST}${base_libdir} \
-                    -Wl,-rpath-link,${STAGING_DIR_HOST}${base_libdir} \
-                    -Wl,-rpath,${base_libdir} -Wl,-O1"
+BUILDSDK_LDFLAGS = "-Wl,-O1"
 
 LINKER_HASH_STYLE ??= "gnu"
 # mips does not support GNU hash style therefore we override
@@ -532,6 +534,11 @@
 LINKER_HASH_STYLE_mips64el = "sysv"
 LINKER_HASH_STYLE_mips64n32 = "sysv"
 LINKER_HASH_STYLE_mips64eln32 = "sysv"
+LINKER_HASH_STYLE_mipsisa32r6 = "sysv"
+LINKER_HASH_STYLE_mipsisa32r6el = "sysv"
+LINKER_HASH_STYLE_mipsisa64r6 = "sysv"
+LINKER_HASH_STYLE_mipsisa64r6el = "sysv"
+
 TARGET_LINK_HASH_STYLE ?= "${@['-Wl,--hash-style=gnu',''][d.getVar('LINKER_HASH_STYLE', True) != 'gnu']}"
 
 export LDFLAGS = "${TARGET_LDFLAGS}"
@@ -549,11 +556,11 @@
 ##################################################################
 # Optimization flags.
 ##################################################################
-DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types \
-                -fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
-                -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
-                -fdebug-prefix-map=${STAGING_DIR_HOST}= \
+DEBUG_PREFIX_MAP ?= "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
+                     -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
+                     -fdebug-prefix-map=${STAGING_DIR_HOST}= \
 "
+DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}"
 
 # Disabled until the option works properly -feliminate-dwarf2-dups
 FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}"
@@ -572,12 +579,13 @@
 # Download locations and utilities.
 ##################################################################
 
-APACHE_MIRROR = "http://www.eu.apache.org/dist/"
+APACHE_MIRROR = "http://archive.apache.org/dist"
 DEBIAN_MIRROR = "ftp://ftp.debian.org/debian/pool"
 GENTOO_MIRROR = "http://distfiles.gentoo.org/distfiles"
 GNOME_GIT = "git://git.gnome.org"
 GNOME_MIRROR = "http://ftp.gnome.org/pub/GNOME/sources"
 GNU_MIRROR = "http://ftp.gnu.org/gnu"
+GNUPG_MIRROR = "https://www.gnupg.org/ftp/gcrypt"
 GPE_MIRROR = "http://gpe.linuxtogo.org/download/source"
 KERNELORG_MIRROR = "http://kernel.org/pub"
 SOURCEFORGE_MIRROR = "http://downloads.sourceforge.net"
@@ -595,6 +603,7 @@
     GNOME_GIT \
     GNOME_MIRROR \
     GNU_MIRROR \
+    GNUPG_MIRROR \
     GPE_MIRROR \
     KERNELORG_MIRROR \
     SAVANNAH_GNU_MIRROR \
@@ -713,6 +722,7 @@
 DL_DIR ?= "${TOPDIR}/downloads"
 SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
 IMAGE_FSTYPES ?= "tar.gz"
+IMAGE_FSTYPES_DEBUGFS ?= "${IMAGE_FSTYPES}"
 
 INITRAMFS_FSTYPES ?= "cpio.gz"
 # The maximum size in Kbytes for the generated initramfs image size.
@@ -798,7 +808,7 @@
 
 # Setup our default hash policy
 BB_SIGNATURE_HANDLER ?= "OEBasicHash"
-BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \
+BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DIR \
     SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \
     USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \
     PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \
@@ -809,12 +819,14 @@
     SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_EXTRAWHITE DISABLE_SANITY_CHECKS \
     PARALLEL_MAKE BB_NUMBER_THREADS BB_ORIGENV BB_INVALIDCONF BBINCLUDED \
     GIT_PROXY_COMMAND ALL_PROXY all_proxy NO_PROXY no_proxy FTP_PROXY ftp_proxy \
-    HTTP_PROXY http_proxy HTTPS_PROXY https_proxy SOCKS5_USER SOCKS5_PASSWD"
+    HTTP_PROXY http_proxy HTTPS_PROXY https_proxy SOCKS5_USER SOCKS5_PASSWD \
+    BB_SETSCENE_ENFORCE"
 BB_SIGNATURE_EXCLUDE_FLAGS ?= "doc deps depends \
     lockfiles type vardepsexclude vardeps vardepvalue vardepvalueexclude \
     file-checksums python func task export unexport noexec nostamp dirs cleandirs \
     sstate-lockfile-shared prefuncs postfuncs export_func deptask rdeptask \
-    recrdeptask nodeprrecs stamp-extra-info sstate-outputdirs filename lineno"
+    recrdeptask nodeprrecs stamp-extra-info sstate-outputdirs filename lineno \
+    progress"
 
 MLPREFIX ??= ""
 MULTILIB_VARIANTS ??= ""
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/default-distrovars.inc b/import-layers/yocto-poky/meta/conf/distro/include/default-distrovars.inc
index fac4deb..f7ed943 100644
--- a/import-layers/yocto-poky/meta/conf/distro/include/default-distrovars.inc
+++ b/import-layers/yocto-poky/meta/conf/distro/include/default-distrovars.inc
@@ -23,7 +23,7 @@
 IMAGE_FEATURES ?= ""
 
 WHITELIST_GPL-3.0 ?= ""
-LGPLv2_WHITELIST_GPL-3.0 ?= "libidn"
+LGPLv2_WHITELIST_GPL-3.0 ?= ""
 
 COMMERCIAL_AUDIO_PLUGINS ?= ""
 # COMMERCIAL_AUDIO_PLUGINS ?= "gst-plugins-ugly-mad gst-plugins-ugly-mpegaudioparse"
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/default-versions.inc b/import-layers/yocto-poky/meta/conf/distro/include/default-versions.inc
index a04ea71..cc8c533 100644
--- a/import-layers/yocto-poky/meta/conf/distro/include/default-versions.inc
+++ b/import-layers/yocto-poky/meta/conf/distro/include/default-versions.inc
@@ -2,11 +2,6 @@
 # Default preferred versions
 #
 
-# Force the python versions in one place
-PYTHON_BASEVERSION ?= "2.7"
-PREFERRED_VERSION_python ?= "2.7.11"
-PREFERRED_VERSION_python-native ?= "2.7.11"
-
 # Force the older version of liberation-fonts until we fix the fontforge issue
 PREFERRED_VERSION_liberation-fonts ?= "1.04"
 
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/distro_alias.inc b/import-layers/yocto-poky/meta/conf/distro/include/distro_alias.inc
index c8f9395..10efb09 100644
--- a/import-layers/yocto-poky/meta/conf/distro/include/distro_alias.inc
+++ b/import-layers/yocto-poky/meta/conf/distro/include/distro_alias.inc
@@ -13,7 +13,6 @@
 DISTRO_PN_ALIAS_pn-alsa-utils-alsaconf = "OE-Core"
 DISTRO_PN_ALIAS_pn-alsa-utils-scripts = "OE-Core"
 DISTRO_PN_ALIAS_pn-atk = "Fedora=atk OpenSuSE=atk"
-DISTRO_PN_ALIAS_pn-augeas = "Ubuntu=libaugeas0 Debian=libaugeas0"
 DISTRO_PN_ALIAS_pn-avahi-ui = "Ubuntu=avahi-discover Debian=avahi-discover"
 DISTRO_PN_ALIAS_pn-babeltrace = "OSPDT"
 DISTRO_PN_ALIAS_pn-bdwgc = "OSPDT"
@@ -46,7 +45,6 @@
 DISTRO_PN_ALIAS_pn-console-tools = "Debian=console-tools Ubuntu=console-tools"
 DISTRO_PN_ALIAS_pn-core-image-base = "OE-Core"
 DISTRO_PN_ALIAS_pn-core-image-clutter = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-directfb = "OE-Core"
 DISTRO_PN_ALIAS_pn-core-image-full-cmdline = "OE-Core"
 DISTRO_PN_ALIAS_pn-core-image-kernel-dev = "OE-Core"
 DISTRO_PN_ALIAS_pn-core-image-lsb = "OE-Core"
@@ -75,7 +73,6 @@
 DISTRO_PN_ALIAS_pn-dbus-test = "Fedora=dbus Ubuntu=dbus"
 DISTRO_PN_ALIAS_pn-dbus-wait = "OpenedHand"
 DISTRO_PN_ALIAS_pn-depmodwrapper-cross = "OE-Core"
-DISTRO_PN_ALIAS_pn-directfb-examples = "Debian=directfb Fedora=directfb"
 DISTRO_PN_ALIAS_pn-distcc = "Debian=distcc Fedora=distcc"
 DISTRO_PN_ALIAS_pn-distcc-config = "OpenedHand"
 DISTRO_PN_ALIAS_pn-dmxproto = "Meego=xorg-x11-proto-dmxproto Ubuntu=x11proto-dmx Debian=x11proto-dmx"
@@ -134,7 +131,7 @@
 DISTRO_PN_ALIAS_pn-gstreamer1.0-rtsp-server = "Ubuntu=gstreamer0.10-rtsp Fedora=gstreamer-rtsp"
 DISTRO_PN_ALIAS_pn-gtk+ = "Meego=gtk2 Fedora=gtk2 OpenSuSE=gtk2 Ubuntu=gtk+2.0 Mandriva=gtk+2.0 Debian=gtk+2.0"
 DISTRO_PN_ALIAS_pn-gtk+3 = "Ubuntu=gtk+3.0 Debian=gtk+3.0 Fedora=gtk3"
-DISTRO_PN_ALIAS_pn-gtk-doc-stub = "Fedora=gtk-doc Ubuntu=gtk-doc"
+DISTRO_PN_ALIAS_pn-gtk-doc = "Fedora=gtk-doc Ubuntu=gtk-doc"
 DISTRO_PN_ALIAS_pn-gtk-engines = "Fedora=gtk2-engines OpenSuSE=gtk2-engines Ubuntu=gtk2-engines Mandriva=gtk-engines2 Debian=gtk2-engines"
 DISTRO_PN_ALIAS_pn-gtk-sato-engine = "OpenedHand"
 DISTRO_PN_ALIAS_pn-gtk-icon-utils-native = "OSPDT"
@@ -216,7 +213,6 @@
 DISTRO_PN_ALIAS_pn-libxi = "Ubuntu=libxi Fedora=libXi"
 DISTRO_PN_ALIAS_pn-libxkbcommon = "Fedora=libxkbcommon Debian=libxkbcommon"
 DISTRO_PN_ALIAS_pn-libxscrnsaver = "Fedora=libXScrnSaver Ubuntu=libxss1 Mandriva=libxscrnsaver"
-DISTRO_PN_ALIAS_pn-libxsettings-client = "Debian=libxsettings-client0 Ubuntu=libxsettings-client0 Mandriva=libXsettings-client0"
 DISTRO_PN_ALIAS_pn-libxxf86misc = "Mandriva=libxxf86misc Fedora=libXxf86misc"
 DISTRO_PN_ALIAS_pn-linux-dummy = "Intel"
 DISTRO_PN_ALIAS_pn-linux-firmware = "Fedora=linux-firmware Ubuntu=linux-firmware"
@@ -281,8 +277,6 @@
 DISTRO_PN_ALIAS_pn-opkg-nogpg = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
 DISTRO_PN_ALIAS_pn-opkg-utils = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
 DISTRO_PN_ALIAS_pn-oprofile = "Debian=oprofile Fedora=oprofile"
-DISTRO_PN_ALIAS_pn-oprofileui = "Fedora=oprofileui Ubuntu=oprofile-gui Debian=oprofile-gui"
-DISTRO_PN_ALIAS_pn-oprofileui-server = "Fedora=oprofileui Ubuntu=oprofile-gui Debian=oprofile-gui"
 DISTRO_PN_ALIAS_pn-os-release = "OE-Core"
 DISTRO_PN_ALIAS_pn-packagegroup-base = "OE-Core"
 DISTRO_PN_ALIAS_pn-packagegroup-core = "OE-Core"
@@ -290,7 +284,6 @@
 DISTRO_PN_ALIAS_pn-packagegroup-core-buildessential = "OE-Core"
 DISTRO_PN_ALIAS_pn-packagegroup-core-clutter = "OE-Core"
 DISTRO_PN_ALIAS_pn-packagegroup-core-device-devel = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-directfb = "OE-Core"
 DISTRO_PN_ALIAS_pn-packagegroup-core-eclipse-debug = "OE-Core"
 DISTRO_PN_ALIAS_pn-packagegroup-core-full-cmdline = "OE-Core"
 DISTRO_PN_ALIAS_pn-packagegroup-core-lsb = "OE-Core"
@@ -318,7 +311,6 @@
 DISTRO_PN_ALIAS_pn-perf = "OSPDT"
 DISTRO_PN_ALIAS_pn-piglit = "OE-Core"
 DISTRO_PN_ALIAS_pn-pkgconfig = "Ubuntu=pkg-config Fedora=pkgconfig"
-DISTRO_PN_ALIAS_pn-pointercal = "OE-Core"
 DISTRO_PN_ALIAS_pn-pointercal-xinput = "OE-Core"
 DISTRO_PN_ALIAS_pn-pong-clock = "OpenedHand"
 DISTRO_PN_ALIAS_pn-portmap = "Debian=rpcbind Fedora=rpcbind"
@@ -338,12 +330,10 @@
 DISTRO_PN_ALIAS_pn-python-dbus = "Ubuntu=python-dbus Debian=python-dbus Mandriva=python-dbus"
 DISTRO_PN_ALIAS_pn-python-distribute = "Opensuse=python-setuptools Fedora=python-setuptools"
 DISTRO_PN_ALIAS_pn-python-git = "Debian=python-git Fedora=GitPython"
-DISTRO_PN_ALIAS_pn-python-imaging = "Mandriva=python-imaging Debian=python-imaging"
 DISTRO_PN_ALIAS_pn-python-mako = "Fedora=python-mako Opensuse=python-Mako"
 DISTRO_PN_ALIAS_pn-python-pycairo = "Meego=pycairo Fedora=pycairo Ubuntu=pycairo Debian=pycairo"
 DISTRO_PN_ALIAS_pn-python-pycurl = "Debian=python-pycurl Ubuntu=python-pycurl"
 DISTRO_PN_ALIAS_pn-python-pygobject = "Meego=pygobject2 Fedora=pygobject2 Ubuntu=pygobject Debian=pygobject"
-DISTRO_PN_ALIAS_pn-python-pyrex = "Mandriva=python-pyrex Ubuntu=python-pyrex"
 DISTRO_PN_ALIAS_pn-python-scons = "Fedora=scons OpenSuSE=scons Ubuntu=scons Mandriva=scons Debian=scons"
 DISTRO_PN_ALIAS_pn-python-setuptools = "Mandriva=python-setup OpenSuSE=python-setup-git"
 DISTRO_PN_ALIAS_pn-python-smartpm = "Debian=smart OpenSuSE=smart"
@@ -388,7 +378,6 @@
 DISTRO_PN_ALIAS_pn-tiny-init = "OSPDT"
 DISTRO_PN_ALIAS_pn-trace-cmd = "Mandriva=trace-cmd Ubuntu=trace-cmd"
 DISTRO_PN_ALIAS_pn-tremor = "OSPDT upstream=http://www.xiph.org/vorbis/"
-DISTRO_PN_ALIAS_pn-tslib = "Debian=tslib Ubuntu=tslib"
 DISTRO_PN_ALIAS_pn-ttf-bitstream-vera = "Debian=ttf-bitstream-vera Ubuntu=ttf-bitstream-vera"
 DISTRO_PN_ALIAS_pn-tzcode = "OSPDT"
 DISTRO_PN_ALIAS_pn-u-boot-fw-utils = "Ubuntu=u-boot-tools Debian=u-boot-tools"
@@ -457,7 +446,6 @@
 DISTRO_PN_ALIAS_pn-xserver-xf86-lite = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
 DISTRO_PN_ALIAS_pn-xserver-xorg = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
 DISTRO_PN_ALIAS_pn-xset = "Fedora=xorg-x11-server-utils Ubuntu=x11-xserver-utils Debian=x11-xserver-utils Opensuse=xorg-x11"
-DISTRO_PN_ALIAS_pn-xtscal = "OSPDT upstream=http://gpe.linuxtogo.org/download/source/"
 DISTRO_PN_ALIAS_pn-xuser-account = "OE-Core"
 DISTRO_PN_ALIAS_pn-xvideo-tests = "OpenedHand"
 DISTRO_PN_ALIAS_pn-xvinfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/package_regex.inc b/import-layers/yocto-poky/meta/conf/distro/include/package_regex.inc
deleted file mode 100644
index 9fc1157..0000000
--- a/import-layers/yocto-poky/meta/conf/distro/include/package_regex.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-# NOTE: THIS FILE IS DEPRECATED. Please add new entries to the recipes themselves.
-#
-# package_regex.inc - This file contains data that tracks
-# upstream project associated with a given recipe. This list is needed
-# for recipes that version information can not be automagically discovered.
-# As we automate this checking, this file will slowly be reduced.
-#"
-# This data is used by the package reporting system (packages.yoctoproject.org)
-#"
-# The format is as a bitbake variable override for each recipe
-#"
-#       UPSTREAM_CHECK_URI_pn-<recipe name> = "recipe_url"
-#	 - This is the url used by the package checking system to
-#	   get the latest version of the package
-#       UPSTREAM_CHECK_REGEX_pn-<recipe name> = "package_regex"
-#	 - This is the regex the package checking system uses to
-#	   parse the page found at UPSTREAM_CHECK_URI_pn-<recipe name>
-#	UPSTREAM_CHECK_GITTAGREGEX_pn-<recipe name> = "git_tag_regex"
-#	 - When source code is fetched from git, git tags are used to
-#	   determine the upstream release version. This regex can be used
-#	   to filter only relevant tags.
-#
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/security_flags.inc b/import-layers/yocto-poky/meta/conf/distro/include/security_flags.inc
index ff5f34e..eca835e 100644
--- a/import-layers/yocto-poky/meta/conf/distro/include/security_flags.inc
+++ b/import-layers/yocto-poky/meta/conf/distro/include/security_flags.inc
@@ -9,8 +9,11 @@
 # -O0 which then results in a compiler warning.
 lcl_maybe_fortify = "${@base_conditional('DEBUG_BUILD','1','','-D_FORTIFY_SOURCE=2',d)}"
 
-SECURITY_CFLAGS ?= "-fstack-protector-strong -pie -fpie ${lcl_maybe_fortify}"
-SECURITY_NO_PIE_CFLAGS ?= "-fstack-protector-strong ${lcl_maybe_fortify}"
+# Error on use of format strings that represent possible security problems
+SECURITY_STRINGFORMAT ?= "-Wformat -Wformat-security -Werror=format-security"
+
+SECURITY_CFLAGS ?= "-fstack-protector-strong -pie -fpie ${lcl_maybe_fortify} ${SECURITY_STRINGFORMAT}"
+SECURITY_NO_PIE_CFLAGS ?= "-fstack-protector-strong ${lcl_maybe_fortify} ${SECURITY_STRINGFORMAT}"
 
 SECURITY_LDFLAGS ?= "-fstack-protector-strong -Wl,-z,relro,-z,now"
 SECURITY_X_LDFLAGS ?= "-fstack-protector-strong -Wl,-z,relro"
@@ -26,7 +29,6 @@
 SECURITY_CFLAGS_pn-lttng-tools_arm = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-aspell = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-beecrypt = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-blktrace = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-coreutils = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-cups = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-db = "${SECURITY_NO_PIE_CFLAGS}"
@@ -37,10 +39,9 @@
 SECURITY_CFLAGS_pn-enchant = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-expect = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-flac = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-flex = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-gcc = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-gcc-runtime = ""
-SECURITY_CFLAGS_pn-gcc-sanitizers = ""
+SECURITY_CFLAGS_pn-gcc-sanitizers = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-gdb = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-gmp = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-gnutls = "${SECURITY_NO_PIE_CFLAGS}"
@@ -50,8 +51,6 @@
 SECURITY_CFLAGS_pn-grub-efi-x86-native = ""
 SECURITY_CFLAGS_pn-grub-efi-i586-native = ""
 SECURITY_CFLAGS_pn-grub-efi-x86-64-native = ""
-SECURITY_CFLAGS_pn-gst-plugins-bad = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-gst-plugins-gl = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-gstreamer1.0-plugins-bad = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-gstreamer1.0-plugins-good = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-harfbuzz = "${SECURITY_NO_PIE_CFLAGS}"
@@ -59,28 +58,30 @@
 SECURITY_CFLAGS_pn-iptables = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-libaio = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-libcap = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-libgcc = ""
+SECURITY_CFLAGS_pn-libgcc = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-libid3tag = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-libnewt = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-libnewt-python = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-libglu = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-libpcap = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-libpcre = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-libproxy = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-lttng-ust = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-mesa = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-mesa-gl = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-openssl = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-opensp = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-ppp = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-python = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-python-imaging = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-python-pycurl = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-python-smartpm = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-python-numpy = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-python3-numpy = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-python3-pycairo = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-python3 = "${SECURITY_NO_PIE_CFLAGS}"
 # Revert RPM to using internally supported values
 SECURITY_CFLAGS_pn-rpm = "${lcl_maybe_fortify} -fstack-protector"
 SECURITY_CFLAGS_pn-syslinux = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-slang = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-source-highlight = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-tcl = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-tiff = "${SECURITY_NO_PIE_CFLAGS}"
 SECURITY_CFLAGS_pn-uclibc = ""
@@ -88,18 +89,22 @@
 SECURITY_CFLAGS_pn-valgrind = ""
 SECURITY_CFLAGS_pn-zlib = "${SECURITY_NO_PIE_CFLAGS}"
 
-# These 2 have text relco errors with the pie options enabled
-SECURITY_CFLAGS_pn-ltp = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-pulseaudio = "${SECURITY_NO_PIE_CFLAGS}"
+# Recipes which fail to compile when elevating -Wformat-security to an error
+SECURITY_STRINGFORMAT_pn-busybox = ""
+SECURITY_STRINGFORMAT_pn-console-tools = ""
+SECURITY_STRINGFORMAT_pn-cmake = ""
+SECURITY_STRINGFORMAT_pn-expect = ""
+SECURITY_STRINGFORMAT_pn-gcc = ""
+SECURITY_STRINGFORMAT_pn-gettext = ""
+SECURITY_STRINGFORMAT_pn-kexec-tools = ""
+SECURITY_STRINGFORMAT_pn-oh-puzzles = ""
 
 TARGET_CFLAGS_append_class-target = " ${SECURITY_CFLAGS}"
 TARGET_LDFLAGS_append_class-target = " ${SECURITY_LDFLAGS}"
 
 SECURITY_LDFLAGS_remove_pn-gcc-runtime = "-fstack-protector-strong"
-SECURITY_LDFLAGS_remove_pn-gcc-sanitizers = "-fstack-protector-strong"
 SECURITY_LDFLAGS_remove_pn-glibc = "-fstack-protector-strong"
 SECURITY_LDFLAGS_remove_pn-glibc-initial = "-fstack-protector-strong"
-SECURITY_LDFLAGS_remove_pn-libgcc = "-fstack-protector-strong"
 SECURITY_LDFLAGS_remove_pn-uclibc = "-fstack-protector-strong"
 SECURITY_LDFLAGS_remove_pn-uclibc-initial = "-fstack-protector-strong"
 SECURITY_LDFLAGS_pn-xf86-video-fbdev = "${SECURITY_X_LDFLAGS}"
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/tclibc-uclibc.inc b/import-layers/yocto-poky/meta/conf/distro/include/tclibc-uclibc.inc
deleted file mode 100644
index 14c3cdb..0000000
--- a/import-layers/yocto-poky/meta/conf/distro/include/tclibc-uclibc.inc
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# uclibc specific configuration
-#
-
-LIBCEXTENSION = "-uclibc"
-
-# Add uclibc overrides to the overrides.
-LIBCOVERRIDE = ":libc-uclibc"
-OVERRIDES .= "${LIBCOVERRIDE}"
-
-PREFERRED_PROVIDER_virtual/libc ?= "uclibc"
-PREFERRED_PROVIDER_virtual/libiconv ?= "libiconv"
-PREFERRED_PROVIDER_virtual/libintl ?= "gettext"
-PREFERRED_PROVIDER_virtual/nativesdk-libintl ?= "nativesdk-glibc"
-PREFERRED_PROVIDER_virtual/nativesdk-libiconv ?= "nativesdk-glibc"
-
-USE_NLS ?= "no"
-
-CXXFLAGS += "-fvisibility-inlines-hidden"
-
-IMAGE_LINGUAS = ""
-
-LIBC_DEPENDENCIES = "\
-    uclibc \
-    uclibc-dbg \
-    uclibc-dev \
-    uclibc-thread-db \
-    "
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/tcmode-default.inc b/import-layers/yocto-poky/meta/conf/distro/include/tcmode-default.inc
index c412420..ca3c5ec 100644
--- a/import-layers/yocto-poky/meta/conf/distro/include/tcmode-default.inc
+++ b/import-layers/yocto-poky/meta/conf/distro/include/tcmode-default.inc
@@ -9,10 +9,10 @@
 PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs = "gcc-runtime"
 PREFERRED_PROVIDER_gdb = "gdb"
 
-PREFERRED_PROVIDER_virtual/${SDK_PREFIX}binutils-crosssdk ?= "binutils-crosssdk-${SDK_ARCH}"
-PREFERRED_PROVIDER_virtual/${SDK_PREFIX}gcc-initial = "gcc-crosssdk-initial-${SDK_ARCH}"
-PREFERRED_PROVIDER_virtual/${SDK_PREFIX}gcc = "gcc-crosssdk-${SDK_ARCH}"
-PREFERRED_PROVIDER_virtual/${SDK_PREFIX}g++ = "gcc-crosssdk-${SDK_ARCH}"
+PREFERRED_PROVIDER_virtual/${SDK_PREFIX}binutils-crosssdk ?= "binutils-crosssdk-${SDK_SYS}"
+PREFERRED_PROVIDER_virtual/${SDK_PREFIX}gcc-initial = "gcc-crosssdk-initial-${SDK_SYS}"
+PREFERRED_PROVIDER_virtual/${SDK_PREFIX}gcc = "gcc-crosssdk-${SDK_SYS}"
+PREFERRED_PROVIDER_virtual/${SDK_PREFIX}g++ = "gcc-crosssdk-${SDK_SYS}"
 PREFERRED_PROVIDER_virtual/${SDK_PREFIX}compilerlibs = "nativesdk-gcc-runtime"
 
 # Default libc config
@@ -22,19 +22,19 @@
 PREFERRED_PROVIDER_virtual/nativesdk-${SDK_PREFIX}libc-initial ?= "nativesdk-glibc-initial"
 PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
 
-GCCVERSION ?= "5.3%"
+GCCVERSION ?= "6.2%"
 SDKGCCVERSION ?= "${GCCVERSION}"
-BINUVERSION ?= "2.26%"
-GDBVERSION ?= "7.10%"
-GLIBCVERSION ?= "2.23"
+BINUVERSION ?= "2.27%"
+GDBVERSION ?= "7.11%"
+GLIBCVERSION ?= "2.24"
 UCLIBCVERSION ?= "1.0%"
-LINUXLIBCVERSION ?= "4.4"
+LINUXLIBCVERSION ?= "4.8%"
 
 PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
 PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
 PREFERRED_VERSION_gcc-cross-initial-${TARGET_ARCH} ?= "${GCCVERSION}"
-PREFERRED_VERSION_gcc-crosssdk-${SDK_ARCH} ?= "${SDKGCCVERSION}"
-PREFERRED_VERSION_gcc-crosssdk-initial-${SDK_ARCH} ?= "${SDKGCCVERSION}"
+PREFERRED_VERSION_gcc-crosssdk-${SDK_SYS} ?= "${SDKGCCVERSION}"
+PREFERRED_VERSION_gcc-crosssdk-initial-${SDK_SYS} ?= "${SDKGCCVERSION}"
 PREFERRED_VERSION_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} ?= "${GCCVERSION}"
 PREFERRED_VERSION_gcc-runtime ?= "${GCCVERSION}"
 PREFERRED_VERSION_gcc-sanitizers ?= "${GCCVERSION}"
@@ -68,7 +68,7 @@
 PREFERRED_VERSION_uclibc-initial           ?= "${UCLIBCVERSION}"
 # don't use version earlier than 1.4 for gzip-native, as it's necessary for
 # some packages using an archive format incompatible with earlier gzip
-PREFERRED_VERSION_gzip-native ?= "1.6"
+PREFERRED_VERSION_gzip-native ?= "1.8"
 
 # Setup suitable toolchain flags
 require conf/distro/include/as-needed.inc
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/world-broken.inc b/import-layers/yocto-poky/meta/conf/distro/include/world-broken.inc
index a5f6371..d4bdddf 100644
--- a/import-layers/yocto-poky/meta/conf/distro/include/world-broken.inc
+++ b/import-layers/yocto-poky/meta/conf/distro/include/world-broken.inc
@@ -47,3 +47,10 @@
 
 # error: 'RTLD_NEXT' was not declared in this scope
 EXCLUDE_FROM_WORLD_pn-gcc-sanitizers_libc-musl = "1"
+
+# gcc fails to build when libuwind is staged before building gcc since
+# it then finds the unwind.h header from libunwind and not from libgcc
+# and on arm specially they are different since libgcc defines some functions
+# as macros which are functions in libunwind and it fails during linking
+# libbacktrace/backtrace.c:76: undefined reference to `_Unwind_GetIP'
+EXCLUDE_FROM_WORLD_pn-libunwind_libc-musl_arm = "1"
diff --git a/import-layers/yocto-poky/meta/conf/distro/include/yocto-uninative.inc b/import-layers/yocto-poky/meta/conf/distro/include/yocto-uninative.inc
index 85e613a..975edec 100644
--- a/import-layers/yocto-poky/meta/conf/distro/include/yocto-uninative.inc
+++ b/import-layers/yocto-poky/meta/conf/distro/include/yocto-uninative.inc
@@ -6,6 +6,6 @@
 # to the distro running on the build machine.
 #
 
-UNINATIVE_URL = "http://downloads.yoctoproject.org/releases/uninative/0.95/"
-UNINATIVE_CHECKSUM[i686] ?= "5f27d7e0f4dd2ed80a7ff6a0d88af107b08e00765b31ed3aa180cc5ce15b0811"
-UNINATIVE_CHECKSUM[x86_64] ?= "26d46c61ad88cc245e31c88549717c0092a838d111b93ec169d88b08cc027581"
+UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/1.4/"
+UNINATIVE_CHECKSUM[i686] ?= "b4bc60511ce479736808273ffa043df4ed2a225407dd7ca150ae6220d9ce76d5"
+UNINATIVE_CHECKSUM[x86_64] ?= "101ff8f2580c193488db9e76f9646fb6ed38b65fb76f403acb0e2178ce7127ca"
diff --git a/import-layers/yocto-poky/meta/conf/documentation.conf b/import-layers/yocto-poky/meta/conf/documentation.conf
index dcc324c..06527cb 100644
--- a/import-layers/yocto-poky/meta/conf/documentation.conf
+++ b/import-layers/yocto-poky/meta/conf/documentation.conf
@@ -28,7 +28,7 @@
 do_kernel_checkout[doc] = "Checks out source/meta branches for a linux-yocto style kernel"
 do_kernel_configcheck[doc] = "Validates the kernel configuration for a linux-yocto style kernel"
 do_kernel_configme[doc] = "Assembles the kernel configuration for a linux-yocto style kernel"
-do_kernel_link_vmlinux[doc] = "Creates a symbolic link in arch/$arch/boot for vmlinux kernel images"
+do_kernel_link_images[doc] = "Creates a symbolic link in arch/$arch/boot for vmlinux and vmlinuz kernel images"
 do_listtasks[doc] = "Lists all defined tasks for a target"
 do_menuconfig[doc] = "Runs 'make menuconfig' for the kernel"
 do_package[doc] = "Analyzes the content of the holding area and splits it into subsets based on available packages and files"
@@ -349,7 +349,6 @@
 RCONFLICTS[doc] = "The list of packages that conflict with another package. Note that the package will not be installed if the conflicting packages are not first removed."
 RDEPENDS[doc] = "Lists a package's runtime dependencies (i.e. other packages) that must be installed for the package to be built. They must be the names of other packages as listed in the PACKAGES variable, not recipe names (PN)."
 REQUIRED_DISTRO_FEATURES[doc] = "When a recipe inherits the distro_features_check class, this variable identifies distribution features that must exist in the current configuration in order for the OpenEmbedded build system to build the recipe."
-RM_OLD_IMAGE[doc] = "Reclaims disk space by removing previously built versions of the same image from the images directory pointed to by the DEPLOY_DIR variable."
 RM_WORK_EXCLUDE[doc] = "With rm_work enabled, this variable specifies a list of packages whose work directories should not be removed."
 ROOTFS[doc] = "Indicates a filesystem image to include as the root filesystem."
 ROOTFS_POSTPROCESS_COMMAND[doc] = "Added by classes to run post processing commands once the OpenEmbedded build system has created the root filesystem."
@@ -452,8 +451,12 @@
 UBOOT_TARGET[doc] = "Specifies the target used for building U-Boot."
 USE_DEVFS[doc] = "When building images, specifies to populate or not /dev. This variable defaults to '1' (leave directory empty, surely because devtmpfs do the job). Set it to '0' to use makedevs (or consider using a custom file with IMAGE_DEVICE_TABLES)."
 USER_CLASSES[doc] = "List of additional classes to use when building images that enable extra features."
+USERADD_ERROR_DYNAMIC[doc] = "If set to 'error', forces the OpenEmbedded build system to produce an error if the user identification (uid) and group identification (gid) values are not defined in any of the files listed in USERADD_UID_TABLES and USERADD_GID_TABLES. If set to 'warn', a warning will be issued instead."
+USERADD_GID_TABLES[doc] = "Specifies a password file to use for obtaining static group identification (gid) values when the OpenEmbedded build system adds a group to the system during package installation."
 USERADD_PACKAGES[doc] = "When a recipe inherits the useradd class, this variable specifies the individual packages within the recipe that require users and/or groups to be added."
 USERADD_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the useradd command if you wish to add a user to the system when the package is installed."
+USERADD_UID_TABLES[doc] = "Specifies a password file to use for obtaining static user identification (uid) values when the OpenEmbedded build system adds a user to the system during package installation."
+USERADDEXTENSION[doc] = "When set to 'useradd-staticids', causes the OpenEmbedded build system to base all user and group additions on files listed in USERADD_UID_TABLES and USERADD_GID_TABLES."
 
 #W
 
diff --git a/import-layers/yocto-poky/meta/conf/layer.conf b/import-layers/yocto-poky/meta/conf/layer.conf
index 10b98f5..24b4df0 100644
--- a/import-layers/yocto-poky/meta/conf/layer.conf
+++ b/import-layers/yocto-poky/meta/conf/layer.conf
@@ -9,7 +9,7 @@
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
-LAYERVERSION_core = "8"
+LAYERVERSION_core = "9"
 
 BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"
 
@@ -26,7 +26,6 @@
   connman-conf \
   formfactor \
   xserver-xf86-config \
-  pointercal \
   pointercal-xinput \
   base-files \
   keymaps \
@@ -47,6 +46,7 @@
   ppp-dialin->ppp \
   resolvconf->bash \
   docbook-xsl-stylesheets->perl \
+  ca-certificates->openssl \
   initramfs-framework->${VIRTUAL-RUNTIME_base-utils} \
   initramfs-framework->systemd \
   initramfs-framework->eudev \
diff --git a/import-layers/yocto-poky/meta/conf/machine-sdk/i586.conf b/import-layers/yocto-poky/meta/conf/machine-sdk/i586.conf
index baacce7..41e5e15 100644
--- a/import-layers/yocto-poky/meta/conf/machine-sdk/i586.conf
+++ b/import-layers/yocto-poky/meta/conf/machine-sdk/i586.conf
@@ -1,3 +1,4 @@
 SDK_ARCH = "i586"
 SDK_CC_ARCH = "-march=i586"
+ABIEXTENSION_class-nativesdk = ""
 
diff --git a/import-layers/yocto-poky/meta/conf/machine-sdk/i686.conf b/import-layers/yocto-poky/meta/conf/machine-sdk/i686.conf
index ffdb461..fe40697 100644
--- a/import-layers/yocto-poky/meta/conf/machine-sdk/i686.conf
+++ b/import-layers/yocto-poky/meta/conf/machine-sdk/i686.conf
@@ -1,2 +1,3 @@
 SDK_ARCH = "i686"
 SDK_CC_ARCH = "-march=i686"
+ABIEXTENSION_class-nativesdk = ""
diff --git a/import-layers/yocto-poky/meta/conf/machine-sdk/x86_64.conf b/import-layers/yocto-poky/meta/conf/machine-sdk/x86_64.conf
index 812d67c..61439b4 100644
--- a/import-layers/yocto-poky/meta/conf/machine-sdk/x86_64.conf
+++ b/import-layers/yocto-poky/meta/conf/machine-sdk/x86_64.conf
@@ -1 +1,2 @@
 SDK_ARCH = "x86_64"
+ABIEXTENSION_class-nativesdk = ""
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/arm/arch-armv7ve.inc b/import-layers/yocto-poky/meta/conf/machine/include/arm/arch-armv7ve.inc
index 79e1ef6..e13156c 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/arm/arch-armv7ve.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/arm/arch-armv7ve.inc
@@ -5,8 +5,7 @@
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', ' -march=armv7ve', '', d)}"
 MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', 'armv7ve:', '' ,d)}"
 
-require conf/machine/include/arm/arch-armv6.inc
-require conf/machine/include/arm/feature-arm-neon.inc
+require conf/machine/include/arm/arch-armv7a.inc
 
 # Little Endian base configs
 AVAILTUNES += "armv7ve armv7vet armv7ve-vfpv3d16 armv7vet-vfpv3d16 armv7ve-vfpv3 armv7vet-vfpv3 armv7ve-neon armv7vet-neon armv7ve-neon-vfpv4 armv7vet-neon-vfpv4"
@@ -30,8 +29,8 @@
 TUNE_FEATURES_tune-armv7vet-neon       = "${TUNE_FEATURES_tune-armv7vet} neon"
 TUNE_FEATURES_tune-armv7ve-neon-vfpv4  = "${TUNE_FEATURES_tune-armv7ve-neon}  vfpv4"
 TUNE_FEATURES_tune-armv7vet-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vet-neon} vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7ve             = "${PACKAGE_EXTRA_ARCHS_tune-armv6}  armv7ve armv7ve-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vet            = "${PACKAGE_EXTRA_ARCHS_tune-armv6t} armv7ve armv7ve-vfp armv7vet2-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7ve             = "${PACKAGE_EXTRA_ARCHS_tune-armv7a}  armv7ve armv7ve-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7vet            = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7ve armv7ve-vfp armv7vet2-vfp"
 PACKAGE_EXTRA_ARCHS_tune-armv7ve-vfpv3d16    = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve}  armv7ve-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7vet-vfpv3d16   = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet} armv7ve-vfpv3d16 armv7vet2-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7ve-vfpv3       = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-vfpv3d16}  armv7ve-vfpv3"
@@ -63,8 +62,8 @@
 TUNE_FEATURES_tune-armv7vethf-neon       = "${TUNE_FEATURES_tune-armv7vet-neon}       callconvention-hard"
 TUNE_FEATURES_tune-armv7vehf-neon-vfpv4  = "${TUNE_FEATURES_tune-armv7ve-neon-vfpv4}  callconvention-hard"
 TUNE_FEATURES_tune-armv7vethf-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vet-neon-vfpv4} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehf             = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf}  armv7vehf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethf            = "${PACKAGE_EXTRA_ARCHS_tune-armv6thf} armv7vehf-vfp armv7vet2hf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7vehf             = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf}  armv7vehf-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7vethf            = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7vehf-vfp armv7vet2hf-vfp"
 PACKAGE_EXTRA_ARCHS_tune-armv7vehf-vfpv3d16    = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf}  armv7vehf-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7vethf-vfpv3d16   = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf} armv7vehf-vfpv3d16 armv7vet2hf-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7vehf-vfpv3       = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-vfpv3d16}  armv7vehf-vfpv3"
@@ -96,8 +95,8 @@
 TUNE_FEATURES_tune-armv7vetb-neon       = "${TUNE_FEATURES_tune-armv7vet-neon}       bigendian"
 TUNE_FEATURES_tune-armv7veb-neon-vfpv4  = "${TUNE_FEATURES_tune-armv7ve-neon-vfpv4}  bigendian"
 TUNE_FEATURES_tune-armv7vetb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vet-neon-vfpv4} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv7veb             = "${PACKAGE_EXTRA_ARCHS_tune-armv6b}  armv7veb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vetb            = "${PACKAGE_EXTRA_ARCHS_tune-armv6tb} armv7veb-vfp armv7vet2b-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7veb             = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab}  armv7veb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7vetb            = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7veb-vfp armv7vet2b-vfp"
 PACKAGE_EXTRA_ARCHS_tune-armv7veb-vfpv3d16    = "${PACKAGE_EXTRA_ARCHS_tune-armv7veb}  armv7veb-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7vetb-vfpv3d16   = "${PACKAGE_EXTRA_ARCHS_tune-armv7vetb} armv7veb-vfpv3d16 armv7vet2b-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7veb-vfpv3       = "${PACKAGE_EXTRA_ARCHS_tune-armv7veb-vfpv3d16}  armv7veb-vfpv3"
@@ -129,8 +128,8 @@
 TUNE_FEATURES_tune-armv7vethfb-neon       = "${TUNE_FEATURES_tune-armv7vethf-neon}       bigendian"
 TUNE_FEATURES_tune-armv7vehfb-neon-vfpv4  = "${TUNE_FEATURES_tune-armv7vehf-neon-vfpv4}  bigendian"
 TUNE_FEATURES_tune-armv7vethfb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vethf-neon-vfpv4} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehfb             = "${PACKAGE_EXTRA_ARCHS_tune-armv6hfb}  armv7vehfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethfb            = "${PACKAGE_EXTRA_ARCHS_tune-armv6thfb} armv7vehfb-vfp armv7vet2hfb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7vehfb             = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb}  armv7vehfb-vfp"
+PACKAGE_EXTRA_ARCHS_tune-armv7vethfb            = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb} armv7vehfb-vfp armv7vet2hfb-vfp"
 PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-vfpv3d16    = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehfb}  armv7vehfb-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-vfpv3d16   = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethfb} armv7vehfb-vfpv3d16 armv7vet2hfb-vfpv3d16"
 PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-vfpv3       = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-vfpv3d16}  armv7vehfb-vfpv3"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-neon.inc b/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-neon.inc
index 50d9175..b34af8e 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-neon.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-neon.inc
@@ -8,7 +8,7 @@
 TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'neon', ' neon', '', d)}"
 
 TUNEVALID[vfpv3d16] = "Enable Vector Floating Point Version 3 with 16 registers (vfpv3-d16) unit."
-TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv3d16', ' vfpv3d16', '', d)}"
+TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv3d16', ' vfpv3-d16', '', d)}"
 
 TUNEVALID[vfpv3] = "Enable Vector Floating Point Version 3 with 32 registers (vfpv3) unit."
 TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv3', ' vfpv3', '' , d)}"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-vfp.inc b/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-vfp.inc
index 4247255..9ef31e7 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-vfp.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/arm/feature-arm-vfp.inc
@@ -6,7 +6,7 @@
 TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfp', ' vfp', '', d)}"
 
 TUNE_CCARGS  .= "${@ (' -mfpu=%s ' % d.getVar('TUNE_CCARGS_MFPU', True).split()[-1]) if (d.getVar('TUNE_CCARGS_MFPU', True) != '') else ''}"
-ARMPKGSFX_FPU = "${@ ('-%s'        % d.getVar('TUNE_CCARGS_MFPU', True).split()[-1]) if (d.getVar('TUNE_CCARGS_MFPU', True) != '') else ''}"
+ARMPKGSFX_FPU = "${@ ('-%s'        % d.getVar('TUNE_CCARGS_MFPU', True).split()[-1].replace('vfpv3-d16', 'vfpv3d16')) if (d.getVar('TUNE_CCARGS_MFPU', True) != '') else ''}"
 
 TUNEVALID[callconvention-hard] = "Enable EABI hard float call convention, requires VFP."
 TUNE_CCARGS_MFLOAT = "${@ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d) if (d.getVar('TUNE_CCARGS_MFPU', True) != '') else '' }"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/mips/README b/import-layers/yocto-poky/meta/conf/machine/include/mips/README
index c375f31..62fa156 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/mips/README
+++ b/import-layers/yocto-poky/meta/conf/machine/include/mips/README
@@ -1,3 +1,6 @@
+2016/09/30 - Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
+  - Add Release 6 support
+
 2012/03/30 - Mark Hatle <mark.hatle@windriver.com>
   - Initial Version
 
@@ -6,9 +9,14 @@
  *) Hardware/Software Floating Point
  *) o32, n32, n64 ABI
 
+Release 6 of the ISA is a major revision and doesn't build up on previous
+releases of the ISA.
+
+For more details about tuples, check https://wiki.debian.org/Multiarch/Tuples
+
 TUNE_ARCH, the GNU canonical arch, is defined as:
 
-mips${MIPSPKGSFX_BYTE}${MIPSPKGSFX_ENDIAN}
+"mips${MIPSPKGSFX_32R6}${MIPSPKGSFX_64R6}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}"
 
 The package arch is defined in such a way to generated a standard naming
 scheme.  The scheme is: <mips variant>[-nf][-n32]
@@ -34,3 +42,12 @@
 MIPSPKGSFX_ABI - This is used to specify an alternative ABI when the previous
 values are not enough to distringuish the package.  "-n32" is added when
 building for N32 ABI.
+
+MIPSPKGSFX_R6 - This is used to specify the presence of release 6.
+"r6" is added in the tuple for release 6 of the isa.
+
+MIPSPKGSFX_64R6 - This is used to specify "isa" in the tuple.
+Release 6 onwards we use "mipsisa64" instead of just "mips64".
+
+MIPSPKGSFX_32R6 -  This is used to specify "isa32" in the tuple.
+Release 6 onwards we use "mipsisa32" instead of just "mips".
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/mips/arch-mips.inc b/import-layers/yocto-poky/meta/conf/machine/include/mips/arch-mips.inc
index 89d17e7..6069ca1 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/mips/arch-mips.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/mips/arch-mips.inc
@@ -20,6 +20,9 @@
 ABIEXTENSION .= "${@bb.utils.contains('TUNE_FEATURES', 'n32', 'n32', '' ,d)}"
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'n32', ' -mabi=n32', '', d)}"
 
+# user mode qemu doesn't support mips64 n32: "Invalid ELF image for this architecture"
+MACHINE_FEATURES_BACKFILL_CONSIDERED_append = " ${@bb.utils.contains('TUNE_FEATURES', 'n32', 'qemu-usermode', '', d)}"
+
 TUNEVALID[n64] = "MIPS64 n64 ABI"
 TUNECONFLICTS[n64] = "o32 n32"
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'n64', ' -mabi=64', '', d)}"
@@ -29,14 +32,22 @@
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard', ' -mhard-float', ' -msoft-float', d)}"
 TARGET_FPU = "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard', '', 'soft', d)}"
 
+# MIPS r6 ABI
+TUNEVALID[r6] = "Use r6"
+TUNEVALID[mipsisa64r6] = "Use 64r6"
+TUNEVALID[mipsisa32r6] = "Use 32r6"
+
 # Package naming
 MIPSPKGSFX_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el', d)}"
 MIPSPKGSFX_BYTE = "${@bb.utils.contains('TUNE_FEATURES', 'n64' , '64', '', d)}"
 MIPSPKGSFX_BYTE .= "${@bb.utils.contains('TUNE_FEATURES', 'n32' , '64', '', d)}"
 MIPSPKGSFX_FPU = "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard' , '', '-nf', d)}"
 MIPSPKGSFX_ABI = "${@bb.utils.contains('TUNE_FEATURES', 'n32', '-n32', '', d)}"
+MIPSPKGSFX_R6 = "${@bb.utils.contains('TUNE_FEATURES', 'r6', 'r6', '', d)}"
+MIPSPKGSFX_64R6 = "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', 'isa', '', d)}"
+MIPSPKGSFX_32R6 = "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa32r6', 'isa32', '', d)}"
 
-TUNE_ARCH = "mips${MIPSPKGSFX_BYTE}${MIPSPKGSFX_ENDIAN}"
+TUNE_ARCH = "mips${MIPSPKGSFX_32R6}${MIPSPKGSFX_64R6}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}"
 TUNE_PKGARCH = "${MIPSPKGSFX_VARIANT_tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}"
 
 # Base tunes
@@ -100,3 +111,29 @@
 BASE_LIB_tune-mips64el-nf = "lib64"
 MIPSPKGSFX_VARIANT_tune-mips64el-nf = "${TUNE_ARCH}"
 PACKAGE_EXTRA_ARCHS_tune-mips64el-nf = "mips64el-nf"
+
+# MIPS 64 + o32
+AVAILTUNES += "mips64-o32 mips64el-o32"
+
+TUNE_FEATURES_tune-mips64-o32 = "o32 bigendian fpu-hard"
+BASE_LIB_tune-mips64-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64-o32 = "mips mips64-o32"
+
+TUNE_FEATURES_tune-mips64el-o32 = "o32 fpu-hard"
+BASE_LIB_tune-mips64el-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64el-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64el-o32 = "mipsel mips64el-o32 mips64el-o32"
+
+# MIPS 64 o32 and Soft Float
+AVAILTUNES += "mips64-nf-o32 mips64el-nf-o32"
+
+TUNE_FEATURES_tune-mips64-nf-o32 = "o32 bigendian"
+BASE_LIB_tune-mips64-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64-nf-o32 = "mips-nf mips64-nf-o32"
+
+TUNE_FEATURES_tune-mips64el-nf-o32 = "o32"
+BASE_LIB_tune-mips64el-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64el-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64el-nf-o32 = "mipsel-nf mips64el-nf-o32"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/mips/feature-mips-mips16e.inc b/import-layers/yocto-poky/meta/conf/machine/include/mips/feature-mips-mips16e.inc
new file mode 100644
index 0000000..05011de
--- /dev/null
+++ b/import-layers/yocto-poky/meta/conf/machine/include/mips/feature-mips-mips16e.inc
@@ -0,0 +1,17 @@
+TUNEVALID[mips16e] = "Build target packages with MIPS16e ASE instructions"
+MIPS_MIPS16E_OPT = "${@['mno-mips16', 'mips16'][d.getVar('MIPS_INSTRUCTION_SET', True) == 'mips16e']}"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ' -${MIPS_MIPS16E_OPT}', '', d)}"
+
+MIPSPKGSFX_MIPS16E .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', '-m16', '', d) if d.getVar('MIPS_MIPS16E_OPT', True) == 'mips16' else ''}"
+
+# Whether to compile with code to allow interworking between the two
+# instruction sets. This allows mips16e code to be executed on a primarily
+# mips32/64 system and vice versa. It is strongly recommended that DISTROs not
+# turn this off - the actual cost is very small.
+TUNEVALID[no-interlink-compressed] = "Disable mixing of standard and MIPS16e code"
+MIPS16_TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'no-interlink-compressed', ' -mno-interlink-compressed', ' -minterlink-compressed', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ' ${MIPS16_TUNE_CCARGS}', '', d)}"
+OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ':mips16e', '', d)}"
+
+# show status (if compiling in MIPS16e mode)
+BUILDCFG_VARS += "${@['', 'MIPS_INSTRUCTION_SET'][d.getVar('MIPS_INSTRUCTION_SET', True) == 'mips16e']}"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/mips/tune-mips-24k.inc b/import-layers/yocto-poky/meta/conf/machine/include/mips/tune-mips-24k.inc
new file mode 100644
index 0000000..828acd4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/conf/machine/include/mips/tune-mips-24k.inc
@@ -0,0 +1,51 @@
+DEFAULTTUNE ?= "mips32r2-24kc"
+
+MIPSPKGSFX_MIPS16E ??= ""
+
+require conf/machine/include/tune-mips32r2.inc
+require conf/machine/include/mips/feature-mips-mips16e.inc
+
+
+TUNEVALID[24kc] = "Enable MIPS 24Kc processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "24kc", " -mtune=24kc", "", d)}"
+TUNEVALID[24kec] = "Enable MIPS 24KEc processor optimizations, including DSP"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "24kec", " -mtune=24kec -mdsp", "", d)}"
+
+
+AVAILTUNES += "mips32r2-24kc   mips32r2-24kec   mips32r2-24kec-m16"
+AVAILTUNES += "mips32r2el-24kc mips32r2el-24kec mips32r2el-24kec-m16"
+
+# big endian: kc, kc+dsp=kec, kc+dsp+mips16e=kec-m16
+TUNE_FEATURES_tune-mips32r2-24kc = "${TUNE_FEATURES_tune-mips32r2-nf} 24kc"
+TUNE_FEATURES_tune-mips32r2-24kec = "${TUNE_FEATURES_tune-mips32r2-nf} 24kec"
+TUNE_FEATURES_tune-mips32r2-24kec-m16 = "${TUNE_FEATURES_tune-mips32r2-24kec} mips16e"
+
+MIPSPKGSFX_VARIANT_tune-mips32r2-24kc = "mips32r2-24kc"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kc = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-nf} mips32r2-24kc-nf"
+QEMU_EXTRAOPTIONS_mips32r2-24kc-nf = " -cpu 24Kc"
+
+MIPSPKGSFX_VARIANT_tune-mips32r2-24kec = "mips32r2-24kec"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kec = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kc} mips32r2-24kec-nf"
+QEMU_EXTRAOPTIONS_mips32r2-24kec-nf = " -cpu 24KEc"
+
+MIPSPKGSFX_VARIANT_tune-mips32r2-24kec-m16 = "mips32r2-24kec${MIPSPKGSFX_MIPS16E}"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kec-m16 = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kec} mips32r2-24kec-m16-nf"
+QEMU_EXTRAOPTIONS_mips32r2-24kec-m16-nf = " -cpu 24KEc"
+
+
+# little endian: kc, kc+dsp=kec, kc+dsp+mips16e=kec-m16
+TUNE_FEATURES_tune-mips32r2el-24kc = "${TUNE_FEATURES_tune-mips32r2el-nf} 24kc"
+TUNE_FEATURES_tune-mips32r2el-24kec = "${TUNE_FEATURES_tune-mips32r2el-nf} 24kec"
+TUNE_FEATURES_tune-mips32r2el-24kec-m16 = "${TUNE_FEATURES_tune-mips32r2el-24kec} mips16e"
+
+MIPSPKGSFX_VARIANT_tune-mips32r2el-24kc = "mips32r2el-24kc"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kc = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-nf} mips32r2el-24kc-nf"
+QEMU_EXTRAOPTIONS_mips32r2el-24kc-nf = " -cpu 24Kc"
+
+MIPSPKGSFX_VARIANT_tune-mips32r2el-24kec = "mips32r2el-24kec"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kec = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kc} mips32r2el-24kec-nf"
+QEMU_EXTRAOPTIONS_mips32r2el-24kec-nf = " -cpu 24KEc"
+
+MIPSPKGSFX_VARIANT_tune-mips32r2el-24kec-m16 = "mips32r2el-24kec${MIPSPKGSFX_MIPS16E}"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kec-m16 = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kec} mips32r2el-24kec-m16-nf"
+QEMU_EXTRAOPTIONS_mips32r2el-24kec-m16-nf = " -cpu 24KEc"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc b/import-layers/yocto-poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc
index 49419b6..f751c6b 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/powerpc/arch-powerpc64.inc
@@ -7,6 +7,9 @@
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'm64', ' -m64', '', d)}"
 TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', [ 'm64' ], 'powerpc64', '', d)}"
 
+# user mode qemu doesn't support ppc64
+MACHINE_FEATURES_BACKFILL_CONSIDERED_append = " ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'qemu-usermode', '', d)}"
+
 AVAILTUNES += "powerpc64"
 TUNE_FEATURES_tune-powerpc64 = "m64 fpu-hard"
 BASE_LIB_tune-powerpc64 = "lib64"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/qemu.inc b/import-layers/yocto-poky/meta/conf/machine/include/qemu.inc
index f44dbe6..2bc4dc2 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/qemu.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/qemu.inc
@@ -29,3 +29,5 @@
 KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
 
 MACHINE_EXTRA_RRECOMMENDS += "rng-tools"
+
+IMAGE_CLASSES += "qemuboot"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/qemuboot-mips.inc b/import-layers/yocto-poky/meta/conf/machine/include/qemuboot-mips.inc
new file mode 100644
index 0000000..0c60cf2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/conf/machine/include/qemuboot-mips.inc
@@ -0,0 +1,8 @@
+# For runqemu
+IMAGE_CLASSES += "qemuboot"
+QB_MEM = "-m 256"
+QB_MACHINE = "-machine malta"
+QB_KERNEL_CMDLINE_APPEND = "console=ttyS0 console=tty"
+# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
+QB_OPT_APPEND = "-vga cirrus -show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
+QB_SYSTEM_NAME = "qemu-system-${TUNE_ARCH}"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/qemuboot-x86.inc b/import-layers/yocto-poky/meta/conf/machine/include/qemuboot-x86.inc
new file mode 100644
index 0000000..06ac983
--- /dev/null
+++ b/import-layers/yocto-poky/meta/conf/machine/include/qemuboot-x86.inc
@@ -0,0 +1,15 @@
+# For runqemu
+IMAGE_CLASSES += "qemuboot"
+QB_SYSTEM_NAME_x86 = "qemu-system-i386"
+QB_CPU_x86 = "-cpu qemu32"
+QB_CPU_KVM_x86 = "-cpu kvm32"
+
+QB_SYSTEM_NAME_x86-64 = "qemu-system-x86_64"
+QB_CPU_x86-64 = "-cpu core2duo"
+QB_CPU_KVM_x86-64 = "-cpu kvm64"
+
+QB_AUDIO_DRV = "alsa"
+QB_AUDIO_OPT = "-soundhw ac97,es1370"
+QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=640x480-32 oprofile.timer=1 uvesafb.task_timeout=-1"
+# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
+QB_OPT_APPEND = "-vga vmware -show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/tune-mips32r2.inc b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips32r2.inc
index 0e95ec8..5e398cb 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/tune-mips32r2.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips32r2.inc
@@ -6,6 +6,7 @@
 TUNECONFLICTS[mips32r2] = "n64 n32"
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips32r2', ' -march=mips32r2', '', d)}"
 
+# hard float
 AVAILTUNES += "mips32r2 mips32r2el"
 
 TUNE_FEATURES_tune-mips32r2 = "${TUNE_FEATURES_tune-mips} mips32r2"
@@ -15,3 +16,14 @@
 TUNE_FEATURES_tune-mips32r2el = "${TUNE_FEATURES_tune-mipsel} mips32r2"
 MIPSPKGSFX_VARIANT_tune-mips32r2el = "mips32r2el"
 PACKAGE_EXTRA_ARCHS_tune-mips32r2el = "mipsel mips32el mips32r2el"
+
+# soft float
+AVAILTUNES += "mips32r2-nf mips32r2el-nf"
+
+TUNE_FEATURES_tune-mips32r2-nf = "${TUNE_FEATURES_tune-mips-nf} mips32r2"
+MIPSPKGSFX_VARIANT_tune-mips32r2-nf = "mips32r2"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2-nf = "mips-nf mips32-nf mips32r2-nf"
+
+TUNE_FEATURES_tune-mips32r2el-nf = "${TUNE_FEATURES_tune-mipsel-nf} mips32r2"
+MIPSPKGSFX_VARIANT_tune-mips32r2el-nf = "mips32r2el"
+PACKAGE_EXTRA_ARCHS_tune-mips32r2el-nf = "mipsel-nf mips32el-nf mips32r2el-nf"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/tune-mips32r6.inc b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips32r6.inc
new file mode 100644
index 0000000..4721319
--- /dev/null
+++ b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips32r6.inc
@@ -0,0 +1,29 @@
+DEFAULTTUNE ?= "mipsisa32r6el"
+
+require conf/machine/include/mips/arch-mips.inc
+
+TUNEVALID[mipsisa32r6] = "Enable mipsisa32r6 specific processor optimizations"
+TUNECONFLICTS[mipsisa32r6] = "n64 n32"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa32r6', ' -march=mips32r6', '', d)}"
+
+# Base Tunes
+AVAILTUNES += "mipsisa32r6 mipsisa32r6el"
+
+TUNE_FEATURES_tune-mipsisa32r6 = "bigendian mipsisa32r6 fpu-hard r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa32r6 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6 = "mipsisa32r6"
+
+TUNE_FEATURES_tune-mipsisa32r6el = "fpu-hard mipsisa32r6 r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa32r6el = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6el = "mipsisa32r6el"
+
+# Soft Float
+AVAILTUNES += "mipsisa32r6-nf mipsisa32r6el-nf"
+
+TUNE_FEATURES_tune-mipsisa32r6-nf = "bigendian mipsisa32r6 r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa32r6-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6-nf = "mipsisa32r6-nf"
+
+TUNE_FEATURES_tune-mipsisa32r6el-nf = "mipsisa32r6 r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa32r6el-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6el-nf = "mipsisa32r6el-nf"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/tune-mips64r2.inc b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips64r2.inc
new file mode 100644
index 0000000..75d7535
--- /dev/null
+++ b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips64r2.inc
@@ -0,0 +1,84 @@
+DEFAULTTUNE ?= "mips64r2"
+
+require conf/machine/include/tune-mips64.inc
+
+TUNEVALID[mips64r2] = "Enable mips64r2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips64r2', ' -march=mips64r2', '', d)}"
+
+# Base tunes
+AVAILTUNES += "mips64r2 mips64r2el"
+
+TUNE_FEATURES_tune-mips64r2 = "${TUNE_FEATURES_tune-mips64} mips64r2"
+BASE_LIB_tune-mips64r2 = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64r2 = "mips64r2"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2 = "mips64 mips64r2"
+
+TUNE_FEATURES_tune-mips64r2el = "${TUNE_FEATURES_tune-mips64el} mips64r2"
+BASE_LIB_tune-mips64r2el = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64r2el = "mips64r2el"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2el = "mips64el mips64r2el"
+
+# MIPS 64r2 Soft Float
+AVAILTUNES += "mips64r2-nf mips64r2el-nf"
+
+TUNE_FEATURES_tune-mips64r2-nf = "${TUNE_FEATURES_tune-mips64-nf} mips64r2"
+BASE_LIB_tune-mips64r2-nf = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64r2-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2-nf = "mips64-nf mips64r2-nf"
+
+TUNE_FEATURES_tune-mips64r2el-nf = "${TUNE_FEATURES_tune-mips64el-nf} mips64r2"
+BASE_LIB_tune-mips64r2el-nf = "lib64"
+MIPSPKGSFX_VARIANT_tune-mips64r2el-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2el-nf = "mips64el-nf mips64r2el-nf"
+
+# MIPS 64r2 n32
+AVAILTUNES += "mips64r2-n32 mips64r2el-n32"
+
+TUNE_FEATURES_tune-mips64r2-n32 = "${TUNE_FEATURES_tune-mips64-n32} mips64r2"
+BASE_LIB_tune-mips64r2-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64r2-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2-n32 = "mips64-n32 mips64r2-n32"
+
+TUNE_FEATURES_tune-mips64r2el-n32 = "${TUNE_FEATURES_tune-mips64el-n32} mips64r2"
+BASE_LIB_tune-mips64r2el-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64r2el-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2el-n32 = "mips64el-n32 mips64r2el-n32"
+
+# MIPS 64r2 n32 and Soft Float
+AVAILTUNES += "mips64r2-nf-n32 mips64r2el-nf-n32"
+
+TUNE_FEATURES_tune-mips64r2-nf-n32 = "${TUNE_FEATURES_tune-mips64-nf-n32} mips64r2"
+BASE_LIB_tune-mips64r2-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64r2-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2-nf-n32 = "mips64-nf-n32 mips64r2-nf-n32"
+
+TUNE_FEATURES_tune-mips64r2el-nf-n32 = "${TUNE_FEATURES_tune-mips64el-nf-n32} mips64r2"
+BASE_LIB_tune-mips64r2el-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT_tune-mips64r2el-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2el-nf-n32 = "mips64el-nf-n32 mips64r2el-nf-n32"
+
+# MIPS 64r2 o32
+AVAILTUNES += "mips64r2-o32 mips64r2el-o32"
+
+TUNE_FEATURES_tune-mips64r2-o32 = "${TUNE_FEATURES_tune-mips64-o32} mips64r2"
+BASE_LIB_tune-mips64r2-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64r2-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2-o32 = "mips mips64-o32 mips64r2-o32"
+
+TUNE_FEATURES_tune-mips64r2el-o32 = "${TUNE_FEATURES_tune-mips64el-o32} mips64r2"
+BASE_LIB_tune-mips64r2el-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64r2el-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2el-o32 = "mipsel mips64el-o32 mips64r2el-o32"
+
+# MIPS 64r2 o32 and Soft Float
+AVAILTUNES += "mips64r2-nf-o32 mips64r2el-nf-o32"
+
+TUNE_FEATURES_tune-mips64r2-nf-o32 = "${TUNE_FEATURES_tune-mips64-nf-o32} mips64r2"
+BASE_LIB_tune-mips64r2-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64r2-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2-nf-o32 = "mips-nf mips64r2-nf-o32"
+
+TUNE_FEATURES_tune-mips64r2el-nf-o32 = "${TUNE_FEATURES_tune-mips64el-nf-o32} mips64r2"
+BASE_LIB_tune-mips64r2el-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT_tune-mips64r2el-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS_tune-mips64r2el-nf-o32 = "mipsel-nf mips64r2el-nf-o32"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/tune-mips64r6.inc b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips64r6.inc
new file mode 100644
index 0000000..f0ad564
--- /dev/null
+++ b/import-layers/yocto-poky/meta/conf/machine/include/tune-mips64r6.inc
@@ -0,0 +1,32 @@
+DEFAULTTUNE ?= "mipsisa64r6el"
+
+require conf/machine/include/mips/arch-mips.inc
+
+TUNEVALID[mipsisa64r6] = "Enable mipsisa64r6 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', ' -march=mips64r6', '', d)}"
+
+# Base Tunes
+AVAILTUNES += "mipsisa64r6 mipsisa64r6el"
+
+TUNE_FEATURES_tune-mipsisa64r6 = "bigendian fpu-hard n64 mipsisa64r6 r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa64r6 = "${TUNE_ARCH}"
+BASE_LIB_tune-mipsisa64r6 = "lib64"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6 = "mipsisa64r6"
+
+TUNE_FEATURES_tune-mipsisa64r6el = "fpu-hard r6 n64 mipsisa64r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa64r6el = "${TUNE_ARCH}"
+BASE_LIB_tune-mipsisa64r6el = "lib64"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6el = "mipsisa64r6el"
+
+# Soft Float
+AVAILTUNES += "mipsisa64r6-nf mipsisa64r6el-nf"
+
+TUNE_FEATURES_tune-mipsisa64r6-nf = "bigendian r6 n64 mipsisa64r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa64r6-nf = "${TUNE_ARCH}"
+BASE_LIB_tune-mipsisa64r6-nf = "lib64"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6-nf = "mipsisa64r6"
+
+TUNE_FEATURES_tune-mipsisa64r6el-nf = "r6 n64 mipsisa64r6"
+MIPSPKGSFX_VARIANT_tune-mipsisa64r6el-nf = "${TUNE_ARCH}"
+BASE_LIB_tune-mipsisa64r6el-nf = "lib64"
+PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6el-nf = "mipsisa64r6el-nf"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce500mc.inc b/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce500mc.inc
index a1ca9be..bc26a0f 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce500mc.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce500mc.inc
@@ -12,3 +12,6 @@
 
 # glibc configure options to get e500mc specific library (for sqrt)
 GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppce500mc', '-with-cpu=e500mc', '', d)}"
+
+# pass -mcpu=e500mc for ppce500mc kernel cross compile
+TARGET_CC_KERNEL_ARCH = "-mcpu=e500mc"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce5500.inc b/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce5500.inc
index ace2614..cebb244 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce5500.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce5500.inc
@@ -18,3 +18,6 @@
 
 # glibc configure options to get e5500 specific library (for sqrt)
 GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'e5500', '--with-cpu=e5500', '', d)}"
+
+# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
+MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'e5500', ' qemu-usermode', '', d)}"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce6500.inc b/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce6500.inc
index da1e864..5db7e76 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce6500.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/tune-ppce6500.inc
@@ -19,3 +19,6 @@
 # glibc configure options to get e6500 specific library
 GLIBC_EXTRA_OECONF_powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
 GLIBC_EXTRA_OECONF_powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
+
+# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
+MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'e6500', ' qemu-usermode', '', d)}"
diff --git a/import-layers/yocto-poky/meta/conf/machine/include/x86-base.inc b/import-layers/yocto-poky/meta/conf/machine/include/x86-base.inc
index 5663145..479e89e 100644
--- a/import-layers/yocto-poky/meta/conf/machine/include/x86-base.inc
+++ b/import-layers/yocto-poky/meta/conf/machine/include/x86-base.inc
@@ -20,7 +20,7 @@
 # kernel-related variables
 #
 PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ??= "4.4%"
+PREFERRED_VERSION_linux-yocto ??= "4.8%"
 
 #
 # XSERVER subcomponents, used to build the XSERVER variable
diff --git a/import-layers/yocto-poky/meta/conf/machine/qemuarm.conf b/import-layers/yocto-poky/meta/conf/machine/qemuarm.conf
index cdad03f..17402ef 100644
--- a/import-layers/yocto-poky/meta/conf/machine/qemuarm.conf
+++ b/import-layers/yocto-poky/meta/conf/machine/qemuarm.conf
@@ -10,3 +10,11 @@
 
 SERIAL_CONSOLES = "115200;ttyAMA0 115200;ttyAMA1"
 
+# For runqemu
+QB_SYSTEM_NAME = "qemu-system-arm"
+QB_MACHINE = "-machine versatilepb"
+QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,115200 console=tty"
+# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
+QB_OPT_APPEND = "-show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
+PREFERRED_VERSION_linux-yocto ??= "4.8%"
+QB_DTB = "${@base_version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}"
diff --git a/import-layers/yocto-poky/meta/conf/machine/qemuarm64.conf b/import-layers/yocto-poky/meta/conf/machine/qemuarm64.conf
index f59fb15..d075062 100644
--- a/import-layers/yocto-poky/meta/conf/machine/qemuarm64.conf
+++ b/import-layers/yocto-poky/meta/conf/machine/qemuarm64.conf
@@ -8,3 +8,17 @@
 KERNEL_IMAGETYPE = "Image"
 
 SERIAL_CONSOLES = "38400;ttyAMA0 38400;hvc0"
+
+# For runqemu
+QB_SYSTEM_NAME = "qemu-system-aarch64"
+QB_MEM = "-m 512"
+QB_MACHINE = "-machine virt"
+QB_CPU = "-cpu cortex-a57"
+QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,38400"
+# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
+QB_OPT_APPEND = "-show-cursor -device virtio-rng-pci"
+QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0,mac=@MAC@"
+QB_SLIRP_OPT = "-netdev user,id=net0 -device virtio-net-device,netdev=net0"
+QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
+QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
diff --git a/import-layers/yocto-poky/meta/conf/machine/qemumips.conf b/import-layers/yocto-poky/meta/conf/machine/qemumips.conf
index fbf8137..3182ea1 100644
--- a/import-layers/yocto-poky/meta/conf/machine/qemumips.conf
+++ b/import-layers/yocto-poky/meta/conf/machine/qemumips.conf
@@ -4,6 +4,7 @@
 
 require conf/machine/include/qemu.inc
 require conf/machine/include/tune-mips32r2.inc
+require conf/machine/include/qemuboot-mips.inc
 
 KERNEL_IMAGETYPE = "vmlinux"
 KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
diff --git a/import-layers/yocto-poky/meta/conf/machine/qemumips64.conf b/import-layers/yocto-poky/meta/conf/machine/qemumips64.conf
index 8c3f1fe..9529f4c 100644
--- a/import-layers/yocto-poky/meta/conf/machine/qemumips64.conf
+++ b/import-layers/yocto-poky/meta/conf/machine/qemumips64.conf
@@ -4,6 +4,7 @@
 
 require conf/machine/include/qemu.inc
 require conf/machine/include/tune-mips64.inc
+require conf/machine/include/qemuboot-mips.inc
 
 KERNEL_IMAGETYPE = "vmlinux"
 KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
diff --git a/import-layers/yocto-poky/meta/conf/machine/qemuppc.conf b/import-layers/yocto-poky/meta/conf/machine/qemuppc.conf
index bf0038d..8703c20 100644
--- a/import-layers/yocto-poky/meta/conf/machine/qemuppc.conf
+++ b/import-layers/yocto-poky/meta/conf/machine/qemuppc.conf
@@ -11,3 +11,11 @@
 
 SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
 
+# For runqemu
+QB_SYSTEM_NAME = "qemu-system-ppc"
+QB_MACHINE = "-machine mac99"
+QB_CPU = "-cpu G4"
+QB_KERNEL_CMDLINE_APPEND = "console=tty console=ttyS0"
+# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
+QB_OPT_APPEND = "-show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
+QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-pci,netdev=net0,mac=@MAC@"
diff --git a/import-layers/yocto-poky/meta/conf/machine/qemux86-64.conf b/import-layers/yocto-poky/meta/conf/machine/qemux86-64.conf
index 489194a..b191ddd 100644
--- a/import-layers/yocto-poky/meta/conf/machine/qemux86-64.conf
+++ b/import-layers/yocto-poky/meta/conf/machine/qemux86-64.conf
@@ -10,6 +10,7 @@
 require conf/machine/include/qemu.inc
 DEFAULTTUNE ?= "core2-64"
 require conf/machine/include/tune-core2.inc
+require conf/machine/include/qemuboot-x86.inc
 
 KERNEL_IMAGETYPE = "bzImage"
 
@@ -22,7 +23,10 @@
            xf86-input-evdev \
            xf86-video-cirrus \
            xf86-video-fbdev \
-           xf86-video-vmware"
+           xf86-video-vmware \
+           xf86-video-modesetting \
+           xserver-xorg-module-libint10 \
+           "
 
 MACHINE_FEATURES += "x86"
 
diff --git a/import-layers/yocto-poky/meta/conf/machine/qemux86.conf b/import-layers/yocto-poky/meta/conf/machine/qemux86.conf
index 3cc8091..8555fd6 100644
--- a/import-layers/yocto-poky/meta/conf/machine/qemux86.conf
+++ b/import-layers/yocto-poky/meta/conf/machine/qemux86.conf
@@ -9,6 +9,7 @@
 
 require conf/machine/include/qemu.inc
 require conf/machine/include/tune-i586.inc
+require conf/machine/include/qemuboot-x86.inc
 
 KERNEL_IMAGETYPE = "bzImage"
 
@@ -21,7 +22,10 @@
            xf86-input-evdev \
            xf86-video-cirrus \
            xf86-video-fbdev \
-           xf86-video-vmware"
+           xf86-video-vmware \
+           xf86-video-modesetting \
+           xserver-xorg-module-libint10 \
+           "
 
 MACHINE_FEATURES += "x86"
 
diff --git a/import-layers/yocto-poky/meta/conf/multilib.conf b/import-layers/yocto-poky/meta/conf/multilib.conf
index 50303fb..1403a03 100644
--- a/import-layers/yocto-poky/meta/conf/multilib.conf
+++ b/import-layers/yocto-poky/meta/conf/multilib.conf
@@ -24,4 +24,5 @@
 # inside the multilib sysroot.  Fix this by explicitly adding the MACHINE's
 # architecture-independent pkgconfig location to PKG_CONFIG_PATH.
 PKG_CONFIG_PATH .= ":${STAGING_DIR}/${MACHINE}${datadir}/pkgconfig"
-PKG_CONFIG_PATH[vardepsexclude] = "MACHINE"
+PKG_CONFIG_PATH[vardepsexclude] = "MACHINE datadir STAGING_DIR"
+PKG_CONFIG_PATH[vardepvalueexclude] = ":${STAGING_DIR}/${MACHINE}${datadir}/pkgconfig"
diff --git a/import-layers/yocto-poky/meta/conf/sanity.conf b/import-layers/yocto-poky/meta/conf/sanity.conf
index 7021bf9..dcf60b7 100644
--- a/import-layers/yocto-poky/meta/conf/sanity.conf
+++ b/import-layers/yocto-poky/meta/conf/sanity.conf
@@ -3,7 +3,7 @@
 # See sanity.bbclass
 #
 # Expert users can confirm their sanity with "touch conf/sanity.conf"
-BB_MIN_VERSION = "1.29.1"
+BB_MIN_VERSION = "1.31.2"
 
 SANITY_ABIFILE = "${TMPDIR}/abi_version"
 
diff --git a/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/blacklist b/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/blacklist
deleted file mode 100644
index 5fdb8f2..0000000
--- a/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/blacklist
+++ /dev/null
@@ -1,6 +0,0 @@
-libneon27-gnutls
-openjdk-6-jre-headless
-openjdk-6-jre-lib
-openjdk-6-jre
-libdbus-1-3
-libneon27-gnutls
diff --git a/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/filters b/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/filters
deleted file mode 100644
index a447f70..0000000
--- a/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/filters
+++ /dev/null
@@ -1,7 +0,0 @@
-/usr/local/lib/python2.6
-/usr/lib/python2.6
-/usr/lib/pymodules/python2.6
-/usr/lib/perl/5.10
-# which is part of the debianutils packages, but we don't want to put the entire
-# debianutils package in the whitelist.
-/usr/bin/which
diff --git a/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/whitelist b/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/whitelist
deleted file mode 100644
index f0fe963..0000000
--- a/import-layers/yocto-poky/meta/conf/swabber/Ubuntu-10.04.1-64/whitelist
+++ /dev/null
@@ -1,23 +0,0 @@
-base-files
-dash
-libacl1
-libattr1
-libbz2-1.0
-libc6
-libc-bin
-libglib2.0-0
-libncurses5
-libselinux1
-libsqlite3-0
-libssl0.9.8
-mime-support
-perl-base
-python2.6
-python2.6-minimal
-python-apport
-python-gst0.10
-python-imaging
-python-minimal
-python-support
-python-zope.interface
-zlib1g
diff --git a/import-layers/yocto-poky/meta/conf/swabber/generic/blacklist b/import-layers/yocto-poky/meta/conf/swabber/generic/blacklist
deleted file mode 100644
index 396bcb4..0000000
--- a/import-layers/yocto-poky/meta/conf/swabber/generic/blacklist
+++ /dev/null
@@ -1,2 +0,0 @@
-udev
-dkpg
diff --git a/import-layers/yocto-poky/meta/conf/swabber/generic/filters b/import-layers/yocto-poky/meta/conf/swabber/generic/filters
deleted file mode 100644
index 3b10fcb..0000000
--- a/import-layers/yocto-poky/meta/conf/swabber/generic/filters
+++ /dev/null
@@ -1,10 +0,0 @@
-/tmp
-/etc/localtime
-/etc/ld.so.cache
-/etc/ld.so.conf
-/etc/passwd
-/etc/group
-/etc/nsswitch.conf
-/proc
-/dev/null
-/dev/tty
diff --git a/import-layers/yocto-poky/meta/conf/swabber/generic/whitelist b/import-layers/yocto-poky/meta/conf/swabber/generic/whitelist
deleted file mode 100644
index 48ec2af..0000000
--- a/import-layers/yocto-poky/meta/conf/swabber/generic/whitelist
+++ /dev/null
@@ -1,15 +0,0 @@
-bash
-bzip2
-ccache
-coreutils
-cpp
-file
-findutils
-gawk
-grep
-hostname
-make
-sed
-tar
-util-linux
-zlib1g
diff --git a/import-layers/yocto-poky/meta/conf/toasterconf.json b/import-layers/yocto-poky/meta/conf/toasterconf.json
index c27880e..796125b 100644
--- a/import-layers/yocto-poky/meta/conf/toasterconf.json
+++ b/import-layers/yocto-poky/meta/conf/toasterconf.json
@@ -13,7 +13,7 @@
             "name": "Local OpenEmbedded",
             "sourcetype": "local",
             "apiurl": "../../",
-            "branches": ["HEAD", "master", "jethro", "krogoth"],
+            "branches": ["HEAD", "master"],
             "layers": [
                 {
                     "name": "openembedded-core",
@@ -27,13 +27,13 @@
             "name": "OpenEmbedded",
             "sourcetype": "layerindex",
             "apiurl": "http://layers.openembedded.org/layerindex/api/",
-            "branches": ["master", "jethro", "krogoth"]
+            "branches": ["master"]
         },
         {
             "name": "Imported layers",
             "sourcetype": "imported",
             "apiurl": "",
-            "branches": ["master", "jethro", "krogoth", "HEAD"]
+            "branches": ["master", "HEAD"]
 
         }
     ],
@@ -45,18 +45,6 @@
             "dirpath": ""
         },
         {
-            "name": "jethro",
-            "giturl": "git://git.openembedded.org/bitbake",
-            "branch": "1.28",
-            "dirpath": ""
-        },
-        {
-            "name": "krogoth",
-            "giturl": "git://git.openembedded.org/bitbake",
-            "branch": "1.30",
-            "dirpath": ""
-        },
-        {
             "name": "HEAD",
             "giturl": "git://git.openembedded.org/bitbake",
             "branch": "HEAD",
@@ -77,24 +65,6 @@
             "helptext": "Toaster will run your builds using the tip of the <a href=\"http://cgit.openembedded.org/openembedded-core/log/\">OpenEmbedded master</a> branch, where active development takes place. This is not a stable branch, so your builds might not work as expected."
         },
         {
-            "name": "jethro",
-            "description": "OpenEmbedded Jethro",
-            "bitbake": "jethro",
-            "branch": "jethro",
-            "defaultlayers": [ "openembedded-core" ],
-            "layersourcepriority": { "Imported layers": 99, "Local OpenEmbedded" : 10, "OpenEmbedded" :  0 },
-            "helptext": "Toaster will run your builds with the tip of the <a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=jethro\">OpenEmbedded \"Jethro\"</a> branch"
-        },
-        {
-            "name": "krogoth",
-            "description": "OpenEmbedded Krogoth",
-            "bitbake": "krogoth",
-            "branch": "krogoth",
-            "defaultlayers": [ "openembedded-core" ],
-            "layersourcepriority": { "Imported layers": 99, "Local OpenEmbedded" : 10, "OpenEmbedded" :  0 },
-            "helptext": "Toaster will run your builds with the tip of the <a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=krogoth\">OpenEmbedded \"Krogoth\"</a> branch"
-        },
-        {
             "name": "local",
             "description": "Local OpenEmbedded",
             "bitbake": "HEAD",
diff --git a/import-layers/yocto-poky/meta/files/ext-sdk-prepare.py b/import-layers/yocto-poky/meta/files/ext-sdk-prepare.py
index 605e2eb..78c1d16 100644
--- a/import-layers/yocto-poky/meta/files/ext-sdk-prepare.py
+++ b/import-layers/yocto-poky/meta/files/ext-sdk-prepare.py
@@ -5,93 +5,62 @@
 import sys
 import os
 import subprocess
+import signal
 
-def exec_watch(cmd, **options):
-    """Run program with stdout shown on sys.stdout"""
-    if isinstance(cmd, basestring) and not "shell" in options:
-        options["shell"] = True
+def reenable_sigint():
+    signal.signal(signal.SIGINT, signal.SIG_DFL)
 
-    process = subprocess.Popen(
-        cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, **options
-    )
+def run_command_interruptible(cmd):
+    """
+    Run a command with output displayed on the console, but ensure any Ctrl+C is
+    processed only by the child process.
+    """
+    signal.signal(signal.SIGINT, signal.SIG_IGN)
+    try:
+        ret = subprocess.call(cmd, shell=True, preexec_fn=reenable_sigint)
+    finally:
+        signal.signal(signal.SIGINT, signal.SIG_DFL)
+    return ret
 
-    buf = ''
-    while True:
-        out = process.stdout.read(1)
-        if out:
-            sys.stdout.write(out)
-            sys.stdout.flush()
-            buf += out
-        elif out == '' and process.poll() != None:
-            break
-
-    return process.returncode, buf
-
-def check_unexpected(lines, recipes):
-    """Check for unexpected output lines from dry run"""
-    unexpected = []
-    for line in lines.splitlines():
-        if 'Running task' in line:
-            for recipe in recipes:
-                if recipe in line:
-                    break
-            else:
-                line = line.split('Running', 1)[-1]
-                if 'do_rm_work' not in line:
-                    unexpected.append(line.rstrip())
-        elif 'Running setscene' in line:
-            unexpected.append(line.rstrip())
-    return unexpected
+def get_last_consolelog():
+    '''Return the most recent console log file'''
+    logdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tmp', 'log', 'cooker')
+    if os.path.exists(logdir):
+        mcdir = os.listdir(logdir)
+        if mcdir:
+            logdir = os.path.join(logdir, mcdir[0])
+            logfiles = [os.path.join(logdir, fn) for fn in os.listdir(logdir)]
+            logfiles.sort(key=os.path.getmtime)
+            if logfiles:
+                return os.path.join(logdir, logfiles[-1])
+    return None
 
 def main():
     if len(sys.argv) < 2:
+        print('Please specify output log file')
+        return 1
+    logfile = sys.argv[1]
+    if len(sys.argv) < 3:
         sdk_targets = []
     else:
-        sdk_targets = ' '.join(sys.argv[1:]).split()
+        sdk_targets = ' '.join(sys.argv[2:]).split()
     if not sdk_targets:
         # Just do a parse so the cache is primed
-        ret, _ = exec_watch('bitbake -p')
+        ret = run_command_interruptible('bitbake -p --quiet')
         return ret
 
-    print('Preparing SDK for %s...' % ', '.join(sdk_targets))
+    with open(logfile, 'a') as logf:
+        logf.write('Preparing SDK for %s...\n' % ', '.join(sdk_targets))
 
-    ret, out = exec_watch('bitbake %s --setscene-only' % ' '.join(sdk_targets))
-    if ret:
-        return ret
-
-    targetlist = []
-    for target in sdk_targets:
-        if ':' in target:
-            target = target.split(':')[0]
-        if not target in targetlist:
-            targetlist.append(target)
-
-    recipes = []
-    for target in targetlist:
-        try:
-            out = subprocess.check_output(('bitbake -e %s' % target).split(), stderr=subprocess.STDOUT)
-            for line in out.splitlines():
-                if line.startswith('FILE='):
-                    splitval = line.rstrip().split('=')
-                    if len(splitval) > 1:
-                        recipes.append(splitval[1].strip('"'))
-                    break
-        except subprocess.CalledProcessError as e:
-            print('ERROR: Failed to get recipe for target %s:\n%s' % (target, e.output))
-            return 1
-
-    try:
-        out = subprocess.check_output('bitbake %s -n' % ' '.join(sdk_targets), stderr=subprocess.STDOUT, shell=True)
-        unexpected = check_unexpected(out, recipes)
-    except subprocess.CalledProcessError as e:
-        print('ERROR: Failed to execute dry-run:\n%s' % e.output)
-        return 1
-
-    if unexpected:
-        print('ERROR: Unexpected tasks or setscene left over to be executed:')
-        for line in unexpected:
-            print('  ' + line)
-        return 1
+        ret = run_command_interruptible('BB_SETSCENE_ENFORCE=1 bitbake --quiet %s' % ' '.join(sdk_targets))
+        lastlog = get_last_consolelog()
+        if lastlog:
+            with open(lastlog, 'r') as f:
+                for line in f:
+                    logf.write(line)
+        if ret:
+            print('ERROR: SDK preparation failed: error log written to %s' % logfile)
+            return ret
 
 if __name__ == "__main__":
     try:
diff --git a/import-layers/yocto-poky/meta/files/toolchain-shar-extract.sh b/import-layers/yocto-poky/meta/files/toolchain-shar-extract.sh
index 397be11..9295ddc 100644
--- a/import-layers/yocto-poky/meta/files/toolchain-shar-extract.sh
+++ b/import-layers/yocto-poky/meta/files/toolchain-shar-extract.sh
@@ -1,6 +1,8 @@
 #!/bin/sh
 
 [ -z "$ENVCLEANED" ] && exec /usr/bin/env -i ENVCLEANED=1 HOME="$HOME" \
+	LC_ALL=en_US.UTF-8 \
+	TERM=$TERM \
 	http_proxy="$http_proxy" https_proxy="$https_proxy" ftp_proxy="$ftp_proxy" \
 	no_proxy="$no_proxy" all_proxy="$all_proxy" GIT_PROXY_COMMAND="$GIT_PROXY_COMMAND" "$0" "$@"
 [ -f /etc/environment ] && . /etc/environment
@@ -26,7 +28,7 @@
 if [ "$INST_ARCH" != "$SDK_ARCH" ]; then
 	# Allow for installation of ix86 SDK on x86_64 host
 	if [ "$INST_ARCH" != x86_64 -o "$SDK_ARCH" != ix86 ]; then
-		echo "Error: Installation machine not supported!"
+		echo "Error: Incompatible SDK installer! Your host is $INST_ARCH and this SDK was built for $SDK_ARCH hosts."
 		exit 1
 	fi
 fi
@@ -45,7 +47,8 @@
 savescripts=0
 verbose=0
 publish=0
-while getopts ":yd:npDRS" OPT; do
+listcontents=0
+while getopts ":yd:npDRSl" OPT; do
 	case $OPT in
 	y)
 		answer="Y"
@@ -70,6 +73,9 @@
 	S)
 		savescripts=1
 		;;
+	l)
+		listcontents=1
+		;;
 	*)
 		echo "Usage: $(basename $0) [-y] [-d <dir>]"
 		echo "  -y         Automatic yes to all prompts"
@@ -81,11 +87,18 @@
 		echo "  -S         Save relocation scripts"
 		echo "  -R         Do not relocate executables"
 		echo "  -D         use set -x to see what is going on"
+		echo "  -l         list files that will be extracted"
 		exit 1
 		;;
 	esac
 done
 
+payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1))
+if [ "$listcontents" = "1" ] ; then
+    tail -n +$payload_offset $0| tar tvJ || exit 1
+    exit
+fi
+
 titlestr="@SDK_TITLE@ installer version @SDK_VERSION@"
 printf "%s\n" "$titlestr"
 printf "%${#titlestr}s\n" | tr " " "="
@@ -130,6 +143,16 @@
 		     "characters such as spaces, @, \$ or +. Abort!"
 		exit 1
 	fi
+	# The build system doesn't work well with /tmp on NFS
+	fs_dev_path="$target_sdk_dir"
+	while [ ! -d "$fs_dev_path" ] ; do
+		fs_dev_path=`dirname $fs_dev_path`
+        done
+	fs_dev_type=`stat -f -c '%t' "$fs_dev_path"`
+	if [ "$fsdevtype" = "6969" ] ; then
+		echo "The target directory path $target_sdk_dir is on NFS, this is not possible. Abort!"
+		exit 1
+	fi
 else
 	if [ -n "$(echo $target_sdk_dir|grep ' ')" ]; then
 		echo "The target directory path ($target_sdk_dir) contains spaces. Abort!"
@@ -185,8 +208,6 @@
 	$SUDO_EXEC mkdir -p $target_sdk_dir >/dev/null 2>&1
 fi
 
-payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1))
-
 printf "Extracting SDK..."
 tail -n +$payload_offset $0| $SUDO_EXEC tar xJ -C $target_sdk_dir --checkpoint=.2500 $EXTRA_TAR_OPTIONS || exit 1
 echo "done"
diff --git a/import-layers/yocto-poky/meta/files/toolchain-shar-relocate.sh b/import-layers/yocto-poky/meta/files/toolchain-shar-relocate.sh
index d4bcf0e..e3c1001 100644
--- a/import-layers/yocto-poky/meta/files/toolchain-shar-relocate.sh
+++ b/import-layers/yocto-poky/meta/files/toolchain-shar-relocate.sh
@@ -1,3 +1,8 @@
+if ! xargs --version > /dev/null 2>&1; then
+	echo "xargs is required by the relocation script, please install it first. Abort!"
+	exit 1
+fi
+
 # fix dynamic loader paths in all ELF SDK binaries
 native_sysroot=$($SUDO_EXEC cat $env_setup_script |grep 'OECORE_NATIVE_SYSROOT='|cut -d'=' -f2|tr -d '"')
 dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
@@ -7,6 +12,10 @@
 fi
 executable_files=$($SUDO_EXEC find $native_sysroot -type f \
 	\( -perm -0100 -o -perm -0010 -o -perm -0001 \) -printf "'%h/%f' ")
+if [ "x$executable_files" = "x" ]; then
+   echo "SDK relocate failed, could not get executalbe files"
+   exit 1
+fi
 
 tdir=`mktemp -d`
 if [ x$tdir = x ] ; then
@@ -14,7 +23,7 @@
    exit 1
 fi
 cat <<EOF >> $tdir/relocate_sdk.sh
-#!/bin/bash
+#!/bin/sh
 for py in python python2 python3
 do
 	PYTHON=\`which \${py} 2>/dev/null\`
@@ -53,9 +62,18 @@
         -e "s:^#! */usr/bin/perl.*:#! /usr/bin/env perl:g" \
         -e "s: /usr/bin/perl: /usr/bin/env perl:g"
 
+if [ $? -ne 0 ]; then
+	echo "Failed to replace perl. Relocate script failed. Abort!"
+	exit 1
+fi
+
 # change all symlinks pointing to @SDKPATH@
 for l in $($SUDO_EXEC find $native_sysroot -type l); do
 	$SUDO_EXEC ln -sfn $(readlink $l|$SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
+	if [ $? -ne 0 ]; then
+		echo "Failed to setup symlinks. Relocate script failed. Abort!"
+		exit 1
+    fi
 done
 
 echo done
diff --git a/import-layers/yocto-poky/meta/lib/oe/buildhistory_analysis.py b/import-layers/yocto-poky/meta/lib/oe/buildhistory_analysis.py
index 5395c76..b6c0265 100644
--- a/import-layers/yocto-poky/meta/lib/oe/buildhistory_analysis.py
+++ b/import-layers/yocto-poky/meta/lib/oe/buildhistory_analysis.py
@@ -62,7 +62,7 @@
 
         def pkglist_combine(depver):
             pkglist = []
-            for k,v in depver.iteritems():
+            for k,v in depver.items():
                 if v:
                     pkglist.append("%s (%s)" % (k,v))
                 else:
@@ -190,7 +190,7 @@
 
 
 def blob_to_dict(blob):
-    alines = blob.data_stream.read().splitlines()
+    alines = [line for line in blob.data_stream.read().decode('utf-8').splitlines()]
     adict = {}
     for line in alines:
         splitv = [i.strip() for i in line.split('=',1)]
@@ -220,7 +220,7 @@
     adict = file_list_to_dict(alines)
     bdict = file_list_to_dict(blines)
     filechanges = []
-    for path, splitv in adict.iteritems():
+    for path, splitv in adict.items():
         newsplitv = bdict.pop(path, None)
         if newsplitv:
             # Check type
@@ -359,6 +359,24 @@
                 if ' '.join(alist) == ' '.join(blist):
                     continue
 
+            if key == 'PKGR' and not report_all:
+                vers = []
+                # strip leading 'r' and dots
+                for ver in (astr.split()[0], bstr.split()[0]):
+                    if ver.startswith('r'):
+                        ver = ver[1:]
+                    vers.append(ver.replace('.', ''))
+                maxlen = max(len(vers[0]), len(vers[1]))
+                try:
+                    # pad with '0' and convert to int
+                    vers = [int(ver.ljust(maxlen, '0')) for ver in vers]
+                except ValueError:
+                    pass
+                else:
+                     # skip decrements and increments
+                    if abs(vers[0] - vers[1]) == 1:
+                        continue
+
             chg = ChangeRecord(path, key, astr, bstr, monitored)
             changes.append(chg)
     return changes
@@ -378,34 +396,34 @@
             if filename == 'latest':
                 changes.extend(compare_dict_blobs(path, d.a_blob, d.b_blob, report_all, report_ver))
             elif filename.startswith('latest.'):
-                chg = ChangeRecord(path, filename, d.a_blob.data_stream.read(), d.b_blob.data_stream.read(), True)
+                chg = ChangeRecord(path, filename, d.a_blob.data_stream.read().decode('utf-8'), d.b_blob.data_stream.read().decode('utf-8'), True)
                 changes.append(chg)
         elif path.startswith('images/'):
             filename = os.path.basename(d.a_blob.path)
             if filename in img_monitor_files:
                 if filename == 'files-in-image.txt':
-                    alines = d.a_blob.data_stream.read().splitlines()
-                    blines = d.b_blob.data_stream.read().splitlines()
+                    alines = d.a_blob.data_stream.read().decode('utf-8').splitlines()
+                    blines = d.b_blob.data_stream.read().decode('utf-8').splitlines()
                     filechanges = compare_file_lists(alines,blines)
                     if filechanges:
                         chg = ChangeRecord(path, filename, None, None, True)
                         chg.filechanges = filechanges
                         changes.append(chg)
                 elif filename == 'installed-package-names.txt':
-                    alines = d.a_blob.data_stream.read().splitlines()
-                    blines = d.b_blob.data_stream.read().splitlines()
+                    alines = d.a_blob.data_stream.read().decode('utf-8').splitlines()
+                    blines = d.b_blob.data_stream.read().decode('utf-8').splitlines()
                     filechanges = compare_lists(alines,blines)
                     if filechanges:
                         chg = ChangeRecord(path, filename, None, None, True)
                         chg.filechanges = filechanges
                         changes.append(chg)
                 else:
-                    chg = ChangeRecord(path, filename, d.a_blob.data_stream.read(), d.b_blob.data_stream.read(), True)
+                    chg = ChangeRecord(path, filename, d.a_blob.data_stream.read().decode('utf-8'), d.b_blob.data_stream.read().decode('utf-8'), True)
                     changes.append(chg)
             elif filename == 'image-info.txt':
                 changes.extend(compare_dict_blobs(path, d.a_blob, d.b_blob, report_all, report_ver))
             elif '/image-files/' in path:
-                chg = ChangeRecord(path, filename, d.a_blob.data_stream.read(), d.b_blob.data_stream.read(), True)
+                chg = ChangeRecord(path, filename, d.a_blob.data_stream.read().decode('utf-8'), d.b_blob.data_stream.read().decode('utf-8'), True)
                 changes.append(chg)
 
     # Look for added preinst/postinst/prerm/postrm
@@ -419,7 +437,7 @@
             if filename == 'latest':
                 addedpkgs.append(path)
             elif filename.startswith('latest.'):
-                chg = ChangeRecord(path, filename[7:], '', d.b_blob.data_stream.read(), True)
+                chg = ChangeRecord(path, filename[7:], '', d.b_blob.data_stream.read().decode('utf-8'), True)
                 addedchanges.append(chg)
     for chg in addedchanges:
         found = False
@@ -436,7 +454,7 @@
         if path.startswith('packages/'):
             filename = os.path.basename(d.a_blob.path)
             if filename != 'latest' and filename.startswith('latest.'):
-                chg = ChangeRecord(path, filename[7:], d.a_blob.data_stream.read(), '', True)
+                chg = ChangeRecord(path, filename[7:], d.a_blob.data_stream.read().decode('utf-8'), '', True)
                 changes.append(chg)
 
     # Link related changes
diff --git a/import-layers/yocto-poky/meta/lib/oe/classextend.py b/import-layers/yocto-poky/meta/lib/oe/classextend.py
index 5107ecd..4c8a000 100644
--- a/import-layers/yocto-poky/meta/lib/oe/classextend.py
+++ b/import-layers/yocto-poky/meta/lib/oe/classextend.py
@@ -1,3 +1,5 @@
+import collections
+
 class ClassExtender(object):
     def __init__(self, extname, d):
         self.extname = extname
@@ -77,7 +79,7 @@
             self.d.setVar("EXTENDPKGV", orig)
             return
         deps = bb.utils.explode_dep_versions2(deps)
-        newdeps = {}
+        newdeps = collections.OrderedDict()
         for dep in deps:
             newdeps[self.map_depends(dep)] = deps[dep]
 
diff --git a/import-layers/yocto-poky/meta/lib/oe/classutils.py b/import-layers/yocto-poky/meta/lib/oe/classutils.py
index 58188fd..e7856c8 100644
--- a/import-layers/yocto-poky/meta/lib/oe/classutils.py
+++ b/import-layers/yocto-poky/meta/lib/oe/classutils.py
@@ -1,4 +1,11 @@
-class ClassRegistry(type):
+
+class ClassRegistryMeta(type):
+    """Give each ClassRegistry their own registry"""
+    def __init__(cls, name, bases, attrs):
+        cls.registry = {}
+        type.__init__(cls, name, bases, attrs)
+
+class ClassRegistry(type, metaclass=ClassRegistryMeta):
     """Maintain a registry of classes, indexed by name.
 
 Note that this implementation requires that the names be unique, as it uses
@@ -12,12 +19,6 @@
 control over whether the class will be added to the registry (e.g. to keep
 abstract base classes out of the registry)."""
     priority = 0
-    class __metaclass__(type):
-        """Give each ClassRegistry their own registry"""
-        def __init__(cls, name, bases, attrs):
-            cls.registry = {}
-            type.__init__(cls, name, bases, attrs)
-
     def __init__(cls, name, bases, attrs):
         super(ClassRegistry, cls).__init__(name, bases, attrs)
         try:
@@ -34,7 +35,7 @@
 
     @classmethod
     def prioritized(tcls):
-        return sorted(tcls.registry.values(),
+        return sorted(list(tcls.registry.values()),
                       key=lambda v: v.priority, reverse=True)
 
     def unregister(cls):
diff --git a/import-layers/yocto-poky/meta/lib/oe/copy_buildsystem.py b/import-layers/yocto-poky/meta/lib/oe/copy_buildsystem.py
index 7b9a0ee..afaff68 100644
--- a/import-layers/yocto-poky/meta/lib/oe/copy_buildsystem.py
+++ b/import-layers/yocto-poky/meta/lib/oe/copy_buildsystem.py
@@ -17,7 +17,7 @@
     def __init__(self, context, d):
         self.d = d
         self.context = context
-        self.layerdirs = d.getVar('BBLAYERS', True).split()
+        self.layerdirs = [os.path.abspath(pth) for pth in d.getVar('BBLAYERS', True).split()]
         self.layers_exclude = (d.getVar('SDK_LAYERS_EXCLUDE', True) or "").split()
 
     def copy_bitbake_and_layers(self, destdir, workspace_name=None):
@@ -26,7 +26,7 @@
         bb.utils.mkdirhier(destdir)
         layers = list(self.layerdirs)
 
-        corebase = self.d.getVar('COREBASE', True)
+        corebase = os.path.abspath(self.d.getVar('COREBASE', True))
         layers.append(corebase)
 
         # Exclude layers
@@ -124,7 +124,7 @@
 def generate_locked_sigs(sigfile, d):
     bb.utils.mkdirhier(os.path.dirname(sigfile))
     depd = d.getVar('BB_TASKDEPDATA', False)
-    tasks = ['%s.%s' % (v[2], v[1]) for v in depd.itervalues()]
+    tasks = ['%s.%s' % (v[2], v[1]) for v in depd.values()]
     bb.parse.siggen.dump_lockedsigs(sigfile, tasks)
 
 def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output):
@@ -145,7 +145,7 @@
                     invalue = True
                     f.write(line)
 
-def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_output, copy_output):
+def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_output, copy_output=None):
     merged = {}
     arch_order = []
     with open(lockedsigs_main, 'r') as f:
@@ -195,23 +195,46 @@
                     fulltypes.append(typename)
             f.write('SIGGEN_LOCKEDSIGS_TYPES = "%s"\n' % ' '.join(fulltypes))
 
-    write_sigs_file(copy_output, tocopy.keys(), tocopy)
+    if copy_output:
+        write_sigs_file(copy_output, list(tocopy.keys()), tocopy)
     if merged_output:
         write_sigs_file(merged_output, arch_order, merged)
 
-def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cache, d, fixedlsbstring=""):
+def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cache, d, fixedlsbstring="", filterfile=None):
+    import shutil
     bb.note('Generating sstate-cache...')
 
     nativelsbstring = d.getVar('NATIVELSBSTRING', True)
-    bb.process.run("gen-lockedsig-cache %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring))
-    if fixedlsbstring:
+    bb.process.run("gen-lockedsig-cache %s %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring, filterfile or ''))
+    if fixedlsbstring and nativelsbstring != fixedlsbstring:
         nativedir = output_sstate_cache + '/' + nativelsbstring
         if os.path.isdir(nativedir):
             destdir = os.path.join(output_sstate_cache, fixedlsbstring)
-            bb.utils.mkdirhier(destdir)
+            for root, _, files in os.walk(nativedir):
+                for fn in files:
+                    src = os.path.join(root, fn)
+                    dest = os.path.join(destdir, os.path.relpath(src, nativedir))
+                    if os.path.exists(dest):
+                        # Already exists, and it'll be the same file, so just delete it
+                        os.unlink(src)
+                    else:
+                        bb.utils.mkdirhier(os.path.dirname(dest))
+                        shutil.move(src, dest)
 
-            dirlist = os.listdir(nativedir)
-            for i in dirlist:
-                src = os.path.join(nativedir, i)
-                dest = os.path.join(destdir, i)
-                os.rename(src, dest)
+def check_sstate_task_list(d, targets, filteroutfile, cmdprefix='', cwd=None, logfile=None):
+    import subprocess
+
+    bb.note('Generating sstate task list...')
+
+    if not cwd:
+        cwd = os.getcwd()
+    if logfile:
+        logparam = '-l %s' % logfile
+    else:
+        logparam = ''
+    cmd = "%sBB_SETSCENE_ENFORCE=1 PSEUDO_DISABLED=1 oe-check-sstate %s -s -o %s %s" % (cmdprefix, targets, filteroutfile, logparam)
+    env = dict(d.getVar('BB_ORIGENV', False))
+    env.pop('BUILDDIR', '')
+    pathitems = env['PATH'].split(':')
+    env['PATH'] = ':'.join([item for item in pathitems if not item.endswith('/bitbake/bin')])
+    bb.process.run(cmd, stderr=subprocess.STDOUT, env=env, cwd=cwd, executable='/bin/bash')
diff --git a/import-layers/yocto-poky/meta/lib/oe/data.py b/import-layers/yocto-poky/meta/lib/oe/data.py
index e495721..ee48950 100644
--- a/import-layers/yocto-poky/meta/lib/oe/data.py
+++ b/import-layers/yocto-poky/meta/lib/oe/data.py
@@ -7,11 +7,11 @@
     flags = d.getVarFlags(key)
     if flags is not None:
         flags = dict((flag, d.expand(value))
-                     for flag, value in flags.iteritems())
+                     for flag, value in list(flags.items()))
     else:
         flags = {}
 
     try:
         return oe.maketype.create(d.getVar(key, True) or '', var_type, **flags)
-    except (TypeError, ValueError), exc:
+    except (TypeError, ValueError) as exc:
         bb.msg.fatal("Data", "%s: %s" % (key, str(exc)))
diff --git a/import-layers/yocto-poky/meta/lib/oe/distro_check.py b/import-layers/yocto-poky/meta/lib/oe/distro_check.py
index 8655a6f..87c52fa 100644
--- a/import-layers/yocto-poky/meta/lib/oe/distro_check.py
+++ b/import-layers/yocto-poky/meta/lib/oe/distro_check.py
@@ -1,53 +1,35 @@
 from contextlib import contextmanager
-@contextmanager
+
+from bb.utils import export_proxies
+
 def create_socket(url, d):
     import urllib
-    socket = urllib.urlopen(url, proxies=get_proxies(d))
-    try:
-        yield socket
-    finally:
-        socket.close()
 
-def get_proxies(d):
-    proxies = {}
-    for key in ['http', 'https', 'ftp', 'ftps', 'no', 'all']:
-        proxy = d.getVar(key + '_proxy', True)
-        if proxy:
-            proxies[key] = proxy
-    return proxies
+    socket = None
+    try:
+        export_proxies(d)
+        socket = urllib.request.urlopen(url)
+    except:
+        bb.warn("distro_check: create_socket url %s can't access" % url)
+
+    return socket
 
 def get_links_from_url(url, d):
     "Return all the href links found on the web location"
 
-    import sgmllib
-    
-    class LinksParser(sgmllib.SGMLParser):
-        def parse(self, s):
-            "Parse the given string 's'."
-            self.feed(s)
-            self.close()
-    
-        def __init__(self, verbose=0):
-            "Initialise an object passing 'verbose' to the superclass."
-            sgmllib.SGMLParser.__init__(self, verbose)
-            self.hyperlinks = []
-    
-        def start_a(self, attributes):
-            "Process a hyperlink and its 'attributes'."
-            for name, value in attributes:
-                if name == "href":
-                    self.hyperlinks.append(value.strip('/'))
-    
-        def get_hyperlinks(self):
-            "Return the list of hyperlinks."
-            return self.hyperlinks
+    from bs4 import BeautifulSoup, SoupStrainer
 
-    with create_socket(url,d) as sock:
+    hyperlinks = []
+
+    webpage = ''
+    sock = create_socket(url,d)
+    if sock:
         webpage = sock.read()
 
-    linksparser = LinksParser()
-    linksparser.parse(webpage)
-    return linksparser.get_hyperlinks()
+    soup = BeautifulSoup(webpage, "html.parser", parse_only=SoupStrainer("a"))
+    for line in soup.find_all('a', href=True):
+        hyperlinks.append(line['href'].strip('/'))
+    return hyperlinks
 
 def find_latest_numeric_release(url, d):
     "Find the latest listed numeric release on the given url"
@@ -104,8 +86,8 @@
 
     bb.note("Reading %s: %s" % (url, section))
     links = get_links_from_url(url, d)
-    srpms = filter(is_src_rpm, links)
-    names_list = map(package_name_from_srpm, srpms)
+    srpms = list(filter(is_src_rpm, links))
+    names_list = list(map(package_name_from_srpm, srpms))
 
     new_pkgs = []
     for pkgs in names_list:
@@ -162,14 +144,18 @@
 
 def get_debian_style_source_package_list(url, section, d):
     "Return the list of package-names stored in the debian style Sources.gz file"
-    with create_socket(url,d) as sock:
-        webpage = sock.read()
-        import tempfile
-        tmpfile = tempfile.NamedTemporaryFile(mode='wb', prefix='oecore.', suffix='.tmp', delete=False)
-        tmpfilename=tmpfile.name
-        tmpfile.write(sock.read())
-        tmpfile.close()
+    import tempfile
     import gzip
+
+    webpage = ''
+    sock = create_socket(url,d)
+    if sock:
+        webpage = sock.read()
+
+    tmpfile = tempfile.NamedTemporaryFile(mode='wb', prefix='oecore.', suffix='.tmp', delete=False)
+    tmpfilename=tmpfile.name
+    tmpfile.write(sock.read())
+    tmpfile.close()
     bb.note("Reading %s: %s" % (url, section))
 
     f = gzip.open(tmpfilename)
@@ -266,9 +252,9 @@
     import fcntl
     try:
         if not os.path.exists(datetime_file):
-            open(datetime_file, 'w+b').close() # touch the file so that the next open won't fail
+            open(datetime_file, 'w+').close() # touch the file so that the next open won't fail
 
-        f = open(datetime_file, "r+b")
+        f = open(datetime_file, "r+")
         fcntl.lockf(f, fcntl.LOCK_EX)
         saved_datetime = f.read()
         if saved_datetime[0:8] != datetime[0:8]:
@@ -357,8 +343,8 @@
 
     
     if tmp != None:
-	list = tmp.split(' ')
-	for item in list:
+        list = tmp.split(' ')
+        for item in list:
             matching_distros.append(item)
     bb.note("Matching: %s" % matching_distros)
     return matching_distros
diff --git a/import-layers/yocto-poky/meta/lib/oe/gpg_sign.py b/import-layers/yocto-poky/meta/lib/oe/gpg_sign.py
index b83ee86..38eb0cb 100644
--- a/import-layers/yocto-poky/meta/lib/oe/gpg_sign.py
+++ b/import-layers/yocto-poky/meta/lib/oe/gpg_sign.py
@@ -71,11 +71,11 @@
                     passphrase = fobj.readline();
 
             job = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
-            (_, stderr) = job.communicate(passphrase)
+            (_, stderr) = job.communicate(passphrase.encode("utf-8"))
 
             if job.returncode:
                 raise bb.build.FuncFailed("GPG exited with code %d: %s" %
-                                          (job.returncode, stderr))
+                                          (job.returncode, stderr.decode("utf-8")))
 
         except IOError as e:
             bb.error("IO error (%s): %s" % (e.errno, e.strerror))
@@ -90,7 +90,7 @@
         """Return the gpg version"""
         import subprocess
         try:
-            return subprocess.check_output((self.gpg_bin, "--version")).split()[2]
+            return subprocess.check_output((self.gpg_bin, "--version")).split()[2].decode("utf-8")
         except subprocess.CalledProcessError as e:
             raise bb.build.FuncFailed("Could not get gpg version: %s" % e)
 
@@ -113,4 +113,3 @@
         return LocalSigner(d)
     else:
         bb.fatal("Unsupported signing backend '%s'" % backend)
-
diff --git a/import-layers/yocto-poky/meta/lib/oe/license.py b/import-layers/yocto-poky/meta/lib/oe/license.py
index f0f661c..8d2fd17 100644
--- a/import-layers/yocto-poky/meta/lib/oe/license.py
+++ b/import-layers/yocto-poky/meta/lib/oe/license.py
@@ -47,7 +47,7 @@
     """Get elements based on OpenEmbedded license strings"""
     def get_elements(self, licensestr):
         new_elements = []
-        elements = filter(lambda x: x.strip(), license_operator.split(licensestr))
+        elements = list([x for x in license_operator.split(licensestr) if x.strip()])
         for pos, element in enumerate(elements):
             if license_pattern.match(element):
                 if pos > 0 and license_pattern.match(elements[pos-1]):
@@ -118,8 +118,8 @@
     def choose_licenses(alpha, beta):
         """Select the option in an OR which is the 'best' (has the most
         included licenses)."""
-        alpha_weight = len(filter(include_license, alpha))
-        beta_weight = len(filter(include_license, beta))
+        alpha_weight = len(list(filter(include_license, alpha)))
+        beta_weight = len(list(filter(include_license, beta)))
         if alpha_weight > beta_weight:
             return alpha
         else:
@@ -132,8 +132,8 @@
         blacklist = []
 
     licenses = flattened_licenses(licensestr, choose_licenses)
-    excluded = filter(lambda lic: exclude_license(lic), licenses)
-    included = filter(lambda lic: include_license(lic), licenses)
+    excluded = [lic for lic in licenses if exclude_license(lic)]
+    included = [lic for lic in licenses if include_license(lic)]
     if excluded:
         return False, excluded
     else:
@@ -215,3 +215,21 @@
     manifest.licensestr = manifest.licensestr.replace('[', '(').replace(']', ')')
 
     return (manifest.licensestr, manifest.licenses)
+
+class ListVisitor(LicenseVisitor):
+    """Record all different licenses found in the license string"""
+    def __init__(self):
+        self.licenses = set()
+
+    def visit_Str(self, node):
+        self.licenses.add(node.s)
+
+def list_licenses(licensestr):
+    """Simply get a list of all licenses mentioned in a license string.
+       Binary operators are not applied or taken into account in any way"""
+    visitor = ListVisitor()
+    try:
+        visitor.visit_string(licensestr)
+    except SyntaxError as exc:
+        raise LicenseSyntaxError(licensestr, exc)
+    return visitor.licenses
diff --git a/import-layers/yocto-poky/meta/lib/oe/maketype.py b/import-layers/yocto-poky/meta/lib/oe/maketype.py
index 139f333..f88981d 100644
--- a/import-layers/yocto-poky/meta/lib/oe/maketype.py
+++ b/import-layers/yocto-poky/meta/lib/oe/maketype.py
@@ -6,7 +6,8 @@
 """
 
 import inspect
-import types
+import oe.types as types
+import collections
 
 available_types = {}
 
@@ -53,7 +54,9 @@
     if type(obj) is type:
         obj = obj.__init__
 
-    args, varargs, keywords, defaults = inspect.getargspec(obj)
+    sig = inspect.signature(obj)
+    args = list(sig.parameters.keys())
+    defaults = list(s for s in sig.parameters.keys() if sig.parameters[s].default != inspect.Parameter.empty)
     flaglist = []
     if args:
         if len(args) > 1 and args[0] == 'self':
@@ -93,7 +96,7 @@
         continue
 
     obj = getattr(types, name)
-    if not callable(obj):
+    if not isinstance(obj, collections.Callable):
         continue
 
     register(name, obj)
diff --git a/import-layers/yocto-poky/meta/lib/oe/manifest.py b/import-layers/yocto-poky/meta/lib/oe/manifest.py
index 42832f1..95f8eb2 100644
--- a/import-layers/yocto-poky/meta/lib/oe/manifest.py
+++ b/import-layers/yocto-poky/meta/lib/oe/manifest.py
@@ -4,11 +4,10 @@
 import bb
 
 
-class Manifest(object):
+class Manifest(object, metaclass=ABCMeta):
     """
     This is an abstract class. Do not instantiate this directly.
     """
-    __metaclass__ = ABCMeta
 
     PKG_TYPE_MUST_INSTALL = "mip"
     PKG_TYPE_MULTILIB = "mlp"
@@ -219,7 +218,7 @@
                 if var in self.vars_to_split:
                     split_pkgs = self._split_multilib(self.d.getVar(var, True))
                     if split_pkgs is not None:
-                        pkgs = dict(pkgs.items() + split_pkgs.items())
+                        pkgs = dict(list(pkgs.items()) + list(split_pkgs.items()))
                 else:
                     pkg_list = self.d.getVar(var, True)
                     if pkg_list is not None:
@@ -269,7 +268,7 @@
                 if var in self.vars_to_split:
                     split_pkgs = self._split_multilib(self.d.getVar(var, True))
                     if split_pkgs is not None:
-                        pkgs = dict(pkgs.items() + split_pkgs.items())
+                        pkgs = dict(list(pkgs.items()) + list(split_pkgs.items()))
                 else:
                     pkg_list = self.d.getVar(var, True)
                     if pkg_list is not None:
diff --git a/import-layers/yocto-poky/meta/lib/oe/package.py b/import-layers/yocto-poky/meta/lib/oe/package.py
index 2887689..02642f2 100644
--- a/import-layers/yocto-poky/meta/lib/oe/package.py
+++ b/import-layers/yocto-poky/meta/lib/oe/package.py
@@ -8,7 +8,7 @@
     # 8 - shared library
     # 16 - kernel module
 
-    import commands, stat, subprocess
+    import stat, subprocess
 
     (file, elftype, strip) = arg
 
@@ -64,8 +64,8 @@
 
     def process_deps(pipe, pkg, pkgdest, provides, requires):
         for line in pipe:
-            f = line.split(" ", 1)[0].strip()
-            line = line.split(" ", 1)[1].strip()
+            f = line.decode("utf-8").split(" ", 1)[0].strip()
+            line = line.decode("utf-8").split(" ", 1)[1].strip()
 
             if line.startswith("Requires:"):
                 i = requires
@@ -114,7 +114,12 @@
             m = list_re.match(file)
             if m:
                 dep_pkg = m.group(1)
-                fd = open(os.path.join(dir, file))
+                try:
+                    fd = open(os.path.join(dir, file))
+                except IOError:
+                    # During a build unrelated shlib files may be deleted, so
+                    # handle files disappearing between the listdirs and open.
+                    continue
                 lines = fd.readlines()
                 fd.close()
                 for l in lines:
@@ -149,7 +154,7 @@
                 if os.path.exists(pkgfile):
                     with open(pkgfile, 'r') as f:
                         data = json.loads(f.read())
-                packages[pkgname] = (relpth, data)
+                    packages[pkgname] = (relpth, data)
     # We want the main package for a module sorted *after* its subpackages
     # (so that it doesn't otherwise steal the files for the subpackage), so
     # this is a cheap way to do that whilst still having an otherwise
diff --git a/import-layers/yocto-poky/meta/lib/oe/package_manager.py b/import-layers/yocto-poky/meta/lib/oe/package_manager.py
index b4b359a..3cee973 100644
--- a/import-layers/yocto-poky/meta/lib/oe/package_manager.py
+++ b/import-layers/yocto-poky/meta/lib/oe/package_manager.py
@@ -5,9 +5,11 @@
 import shutil
 import multiprocessing
 import re
+import collections
 import bb
 import tempfile
 import oe.utils
+import oe.path
 import string
 from oe.gpg_sign import get_signer
 
@@ -17,20 +19,79 @@
 
     try:
         bb.note("Executing '%s' ..." % index_cmd)
-        result = subprocess.check_output(index_cmd, stderr=subprocess.STDOUT, shell=True)
+        result = subprocess.check_output(index_cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
     except subprocess.CalledProcessError as e:
         return("Index creation command '%s' failed with return code %d:\n%s" %
-               (e.cmd, e.returncode, e.output))
+               (e.cmd, e.returncode, e.output.decode("utf-8")))
 
     if result:
         bb.note(result)
 
     return None
 
+"""
+This method parse the output from the package managerand return
+a dictionary with the information of the packages. This is used
+when the packages are in deb or ipk format.
+"""
+def opkg_query(cmd_output):
+    verregex = re.compile(' \([=<>]* [^ )]*\)')
+    output = dict()
+    pkg = ""
+    arch = ""
+    ver = ""
+    filename = ""
+    dep = []
+    pkgarch = ""
+    for line in cmd_output.splitlines():
+        line = line.rstrip()
+        if ':' in line:
+            if line.startswith("Package: "):
+                pkg = line.split(": ")[1]
+            elif line.startswith("Architecture: "):
+                arch = line.split(": ")[1]
+            elif line.startswith("Version: "):
+                ver = line.split(": ")[1]
+            elif line.startswith("File: ") or line.startswith("Filename:"):
+                filename = line.split(": ")[1]
+                if "/" in filename:
+                    filename = os.path.basename(filename)
+            elif line.startswith("Depends: "):
+                depends = verregex.sub('', line.split(": ")[1])
+                for depend in depends.split(", "):
+                    dep.append(depend)
+            elif line.startswith("Recommends: "):
+                recommends = verregex.sub('', line.split(": ")[1])
+                for recommend in recommends.split(", "):
+                    dep.append("%s [REC]" % recommend)
+            elif line.startswith("PackageArch: "):
+                pkgarch = line.split(": ")[1]
 
-class Indexer(object):
-    __metaclass__ = ABCMeta
+        # When there is a blank line save the package information
+        elif not line:
+            # IPK doesn't include the filename
+            if not filename:
+                filename = "%s_%s_%s.ipk" % (pkg, ver, arch)
+            if pkg:
+                output[pkg] = {"arch":arch, "ver":ver,
+                        "filename":filename, "deps": dep, "pkgarch":pkgarch }
+            pkg = ""
+            arch = ""
+            ver = ""
+            filename = ""
+            dep = []
+            pkgarch = ""
 
+    if pkg:
+        if not filename:
+            filename = "%s_%s_%s.ipk" % (pkg, ver, arch)
+        output[pkg] = {"arch":arch, "ver":ver,
+                "filename":filename, "deps": dep }
+
+    return output
+
+
+class Indexer(object, metaclass=ABCMeta):
     def __init__(self, d, deploy_dir):
         self.d = d
         self.deploy_dir = deploy_dir
@@ -42,13 +103,8 @@
 
 class RpmIndexer(Indexer):
     def get_ml_prefix_and_os_list(self, arch_var=None, os_var=None):
-        package_archs = {
-            'default': [],
-        }
-
-        target_os = {
-            'default': "",
-        }
+        package_archs = collections.OrderedDict()
+        target_os = collections.OrderedDict()
 
         if arch_var is not None and os_var is not None:
             package_archs['default'] = self.d.getVar(arch_var, True).split()
@@ -79,7 +135,7 @@
                         target_os[eext[1]] = localdata.getVar("TARGET_OS",
                                                               True).strip()
 
-        ml_prefix_list = dict()
+        ml_prefix_list = collections.OrderedDict()
         for mlib in package_archs:
             if mlib == 'default':
                 ml_prefix_list[mlib] = package_archs[mlib]
@@ -281,9 +337,7 @@
 
 
 
-class PkgsList(object):
-    __metaclass__ = ABCMeta
-
+class PkgsList(object, metaclass=ABCMeta):
     def __init__(self, d, rootfs_dir):
         self.d = d
         self.rootfs_dir = rootfs_dir
@@ -293,57 +347,6 @@
         pass
 
 
-    """
-    This method parse the output from the package manager
-    and return a dictionary with the information of the
-    installed packages. This is used whne the packages are
-    in deb or ipk format
-    """
-    def opkg_query(self, cmd_output):
-        verregex = re.compile(' \([=<>]* [^ )]*\)')
-        output = dict()
-        filename = ""
-        dep = []
-        pkg = ""
-        for line in cmd_output.splitlines():
-            line = line.rstrip()
-            if ':' in line:
-                if line.startswith("Package: "):
-                    pkg = line.split(": ")[1]
-                elif line.startswith("Architecture: "):
-                    arch = line.split(": ")[1]
-                elif line.startswith("Version: "):
-                    ver = line.split(": ")[1]
-                elif line.startswith("File: "):
-                    filename = line.split(": ")[1]
-                elif line.startswith("Depends: "):
-                    depends = verregex.sub('', line.split(": ")[1])
-                    for depend in depends.split(", "):
-                        dep.append(depend)
-                elif line.startswith("Recommends: "):
-                    recommends = verregex.sub('', line.split(": ")[1])
-                    for recommend in recommends.split(", "):
-                        dep.append("%s [REC]" % recommend)
-            else:
-                # IPK doesn't include the filename
-                if not filename:
-                    filename = "%s_%s_%s.ipk" % (pkg, ver, arch)
-                if pkg:
-                    output[pkg] = {"arch":arch, "ver":ver,
-                            "filename":filename, "deps": dep }
-                pkg = ""
-                filename = ""
-                dep = []
-
-        if pkg:
-            if not filename:
-                filename = "%s_%s_%s.ipk" % (pkg, ver, arch)
-            output[pkg] = {"arch":arch, "ver":ver,
-                    "filename":filename, "deps": dep }
-
-        return output
-
-
 class RpmPkgsList(PkgsList):
     def __init__(self, d, rootfs_dir, arch_var=None, os_var=None):
         super(RpmPkgsList, self).__init__(d, rootfs_dir)
@@ -357,10 +360,10 @@
         # Determine rpm version
         cmd = "%s --version" % self.rpm_cmd
         try:
-            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
         except subprocess.CalledProcessError as e:
             bb.fatal("Getting rpm version failed. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
     '''
     Translate the RPM/Smart format names to the OE multilib format names
@@ -401,10 +404,10 @@
                "-t", self.image_rpmlib]
 
         try:
-            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip()
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip().decode("utf-8")
         except subprocess.CalledProcessError as e:
             bb.fatal("Cannot get the package dependencies. Command '%s' "
-                     "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output))
+                     "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
 
         return output
 
@@ -415,10 +418,10 @@
 
         try:
             # bb.note(cmd)
-            tmp_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).strip()
+            tmp_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).strip().decode("utf-8")
         except subprocess.CalledProcessError as e:
             bb.fatal("Cannot get the installed packages list. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
         output = dict()
         deps = dict()
@@ -475,11 +478,13 @@
         # output streams separately and check for empty stderr.
         p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
         cmd_output, cmd_stderr = p.communicate()
+        cmd_output = cmd_output.decode("utf-8")
+        cmd_stderr = cmd_stderr.decode("utf-8")
         if p.returncode or cmd_stderr:
             bb.fatal("Cannot get the installed packages list. Command '%s' "
                      "returned %d and stderr:\n%s" % (cmd, p.returncode, cmd_stderr))
 
-        return self.opkg_query(cmd_output)
+        return opkg_query(cmd_output)
 
 
 class DpkgPkgsList(PkgsList):
@@ -492,19 +497,18 @@
         cmd.append("-f=Package: ${Package}\nArchitecture: ${PackageArch}\nVersion: ${Version}\nFile: ${Package}_${Version}_${Architecture}.deb\nDepends: ${Depends}\nRecommends: ${Recommends}\n\n")
 
         try:
-            cmd_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip()
+            cmd_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip().decode("utf-8")
         except subprocess.CalledProcessError as e:
             bb.fatal("Cannot get the installed packages list. Command '%s' "
-                     "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output))
+                     "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
 
-        return self.opkg_query(cmd_output)
+        return opkg_query(cmd_output)
 
 
-class PackageManager(object):
+class PackageManager(object, metaclass=ABCMeta):
     """
     This is an abstract class. Do not instantiate this directly.
     """
-    __metaclass__ = ABCMeta
 
     def __init__(self, d):
         self.d = d
@@ -594,15 +598,15 @@
                globs]
         exclude = self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY', True)
         if exclude:
-            cmd.extend(['-x', exclude])
+            cmd.extend(['--exclude=' + '|'.join(exclude.split())])
         try:
             bb.note("Installing complementary packages ...")
             bb.note('Running %s' % cmd)
-            complementary_pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+            complementary_pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8")
         except subprocess.CalledProcessError as e:
             bb.fatal("Could not compute complementary packages list. Command "
                      "'%s' returned %d:\n%s" %
-                     (' '.join(cmd), e.returncode, e.output))
+                     (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
         self.install(complementary_pkgs.split(), attempt_only=True)
         os.remove(installed_pkgs_file)
 
@@ -631,8 +635,8 @@
     def construct_uris(self, uris, base_paths):
         def _append(arr1, arr2, sep='/'):
             res = []
-            narr1 = map(lambda a: string.rstrip(a, sep), arr1)
-            narr2 = map(lambda a: string.lstrip(string.rstrip(a, sep), sep), arr2)
+            narr1 = [a.rstrip(sep) for a in arr1]
+            narr2 = [a.rstrip(sep).lstrip(sep) for a in arr2]
             for a1 in narr1:
                 if arr2:
                     for a2 in narr2:
@@ -682,7 +686,8 @@
         if not os.path.exists(self.d.expand('${T}/saved')):
             bb.utils.mkdirhier(self.d.expand('${T}/saved'))
 
-        self.indexer = RpmIndexer(self.d, self.deploy_dir)
+        packageindex_dir = os.path.join(self.d.getVar('WORKDIR', True), 'rpms')
+        self.indexer = RpmIndexer(self.d, packageindex_dir)
         self.pkgs_list = RpmPkgsList(self.d, self.target_rootfs, arch_var, os_var)
 
         self.ml_prefix_list, self.ml_os_list = self.indexer.get_ml_prefix_and_os_list(arch_var, os_var)
@@ -697,18 +702,19 @@
             arch_list = self.feed_archs.split()
         else:
             # List must be prefered to least preferred order
-            default_platform_extra = set()
-            platform_extra = set()
+            default_platform_extra = list()
+            platform_extra = list()
             bbextendvariant = self.d.getVar('BBEXTENDVARIANT', True) or ""
             for mlib in self.ml_os_list:
                 for arch in self.ml_prefix_list[mlib]:
                     plt = arch.replace('-', '_') + '-.*-' + self.ml_os_list[mlib]
                     if mlib == bbextendvariant:
-                            default_platform_extra.add(plt)
+                        if plt not in default_platform_extra:
+                            default_platform_extra.append(plt)
                     else:
-                            platform_extra.add(plt)
-
-            platform_extra = platform_extra.union(default_platform_extra)
+                        if plt not in platform_extra:
+                            platform_extra.append(plt)
+            platform_extra = default_platform_extra + platform_extra
 
             for canonical_arch in platform_extra:
                 arch = canonical_arch.split('-')[0]
@@ -724,7 +730,7 @@
         for uri in feed_uris:
             if arch_list:
                 for arch in arch_list:
-                    bb.note('Note: adding Smart channel url%d%s (%s)' %
+                    bb.note('Adding Smart channel url%d%s (%s)' %
                             (uri_iterator, arch, channel_priority))
                     self._invoke_smart('channel --add url%d-%s type=rpm-md baseurl=%s/%s -y'
                                        % (uri_iterator, arch, uri, arch))
@@ -732,7 +738,7 @@
                                        (uri_iterator, arch, channel_priority))
                     channel_priority -= 5
             else:
-                bb.note('Note: adding Smart channel url%d (%s)' %
+                bb.note('Adding Smart channel url%d (%s)' %
                         (uri_iterator, channel_priority))
                 self._invoke_smart('channel --add url%d type=rpm-md baseurl=%s -y'
                                    % (uri_iterator, uri))
@@ -774,12 +780,12 @@
         try:
             complementary_pkgs = subprocess.check_output(cmd,
                                                          stderr=subprocess.STDOUT,
-                                                         shell=True)
+                                                         shell=True).decode("utf-8")
             # bb.note(complementary_pkgs)
             return complementary_pkgs
         except subprocess.CalledProcessError as e:
             bb.fatal("Could not invoke smart. Command "
-                     "'%s' returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "'%s' returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
     def _search_pkg_name_in_feeds(self, pkg, feed_archs):
         for arch in feed_archs:
@@ -798,7 +804,7 @@
                 (self.smart_cmd, self.smart_opt, pkg)
         cmd += " | sed -ne 's/ *Provides://p'"
         bb.note('cmd: %s' % cmd)
-        output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+        output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
         # Found a provider
         if output:
             bb.note('Found providers for %s: %s' % (pkg, output))
@@ -833,11 +839,13 @@
                     new_pkg = self._search_pkg_name_in_feeds(subst, feed_archs)
                     if not new_pkg:
                         # Failed to translate, package not found!
-                        err_msg = '%s not found in the %s feeds (%s).\n' % \
-                                  (pkg, mlib, " ".join(feed_archs))
+                        err_msg = '%s not found in the %s feeds (%s) in %s.' % \
+                                  (pkg, mlib, " ".join(feed_archs), self.d.getVar('DEPLOY_DIR_RPM', True))
                         if not attempt_only:
-                            err_msg += " ".join(self.fullpkglist)
-                            bb.fatal(err_msg)
+                            bb.error(err_msg)
+                            bb.fatal("This is often caused by an empty package declared " \
+                                     "in a recipe's PACKAGES variable. (Empty packages are " \
+                                     "not constructed unless ALLOW_EMPTY_<pkg> = '1' is used.)")
                         bb.warn(err_msg)
                     else:
                         new_pkgs.append(new_pkg)
@@ -850,11 +858,13 @@
                 default_archs = self.ml_prefix_list['default']
                 new_pkg = self._search_pkg_name_in_feeds(pkg, default_archs)
                 if not new_pkg:
-                    err_msg = '%s not found in the base feeds (%s).\n' % \
-                              (pkg, ' '.join(default_archs))
+                    err_msg = '%s not found in the feeds (%s) in %s.' % \
+                                  (pkg, " ".join(default_archs), self.d.getVar('DEPLOY_DIR_RPM', True))
                     if not attempt_only:
-                        err_msg += " ".join(self.fullpkglist)
-                        bb.fatal(err_msg)
+                        bb.error(err_msg)
+                        bb.fatal("This is often caused by an empty package declared " \
+                                 "in a recipe's PACKAGES variable. (Empty packages are " \
+                                 "not constructed unless ALLOW_EMPTY_<pkg> = '1' is used.)")
                     bb.warn(err_msg)
                 else:
                     new_pkgs.append(new_pkg)
@@ -946,7 +956,7 @@
             subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
         except subprocess.CalledProcessError as e:
             bb.fatal("Create rpm database failed. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
         # Import GPG key to RPM database of the target system
         if self.d.getVar('RPM_SIGN_PACKAGES', True) == '1':
             pubkey_path = self.d.getVar('RPM_GPG_PUBKEY', True)
@@ -1006,9 +1016,19 @@
         ch_already_added = []
         for canonical_arch in platform_extra:
             arch = canonical_arch.split('-')[0]
-            arch_channel = os.path.join(self.deploy_dir, arch)
-            if os.path.exists(arch_channel) and not arch in ch_already_added:
-                bb.note('Note: adding Smart channel %s (%s)' %
+            arch_channel = os.path.join(self.d.getVar('WORKDIR', True), 'rpms', arch)
+            oe.path.remove(arch_channel)
+            deploy_arch_dir = os.path.join(self.deploy_dir, arch)
+            if not os.path.exists(deploy_arch_dir):
+                    continue
+
+            lockfilename = self.d.getVar('DEPLOY_DIR_RPM', True) + "/rpm.lock"
+            lf = bb.utils.lockfile(lockfilename, False)
+            oe.path.copyhardlinktree(deploy_arch_dir, arch_channel)
+            bb.utils.unlockfile(lf)
+
+            if not arch in ch_already_added:
+                bb.note('Adding Smart channel %s (%s)' %
                         (arch, channel_priority))
                 self._invoke_smart('channel --add %s type=rpm-md baseurl=%s -y'
                                    % (arch, arch_channel))
@@ -1080,8 +1100,8 @@
                                                 native_root)
         open(self.scriptlet_wrapper, 'w+').write(scriptlet_content)
 
-        bb.note("Note: configuring RPM cross-install scriptlet_wrapper")
-        os.chmod(self.scriptlet_wrapper, 0755)
+        bb.note("configuring RPM cross-install scriptlet_wrapper")
+        os.chmod(self.scriptlet_wrapper, 0o755)
         cmd = 'config --set rpm-extra-macros._cross_scriptlet_wrapper=%s' % \
               self.scriptlet_wrapper
         self._invoke_smart(cmd)
@@ -1099,7 +1119,7 @@
             sub_rdep = sub_data.get("RDEPENDS_" + pkg)
             if not sub_rdep:
                 continue
-            done = bb.utils.explode_dep_versions2(sub_rdep).keys()
+            done = list(bb.utils.explode_dep_versions2(sub_rdep).keys())
             next = done
             # Find all the rdepends on dependency chain
             while next:
@@ -1182,6 +1202,9 @@
                     new_depends[new_depend] = deps[depend]
                 pkgs = bb.utils.join_deps(new_depends, commasep=True).split(', ')
         pkgs = self._pkg_translate_oe_to_smart(pkgs, attempt_only)
+        if not pkgs:
+            bb.note("There are no packages to install")
+            return
         if not attempt_only:
             bb.note('to be installed: %s' % ' '.join(pkgs))
             cmd = "%s %s install -y %s" % \
@@ -1193,11 +1216,11 @@
             cmd = "%s %s install --attempt -y %s" % \
                   (self.smart_cmd, self.smart_opt, ' '.join(pkgs))
         try:
-            output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+            output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
             bb.note(output)
         except subprocess.CalledProcessError as e:
             bb.fatal("Unable to install packages. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
     '''
     Remove pkgs with smart, the pkg name is smart/rpm format
@@ -1223,11 +1246,11 @@
 
         try:
             bb.note(cmd)
-            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
             bb.note(output)
         except subprocess.CalledProcessError as e:
             bb.note("Unable to remove packages. Command '%s' "
-                    "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                    "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
     def upgrade(self):
         bb.note('smart upgrade')
@@ -1300,7 +1323,7 @@
                         install_pkgs.append(pkg)
         except subprocess.CalledProcessError as e:
             bb.note("Unable to dump install packages. Command '%s' "
-                    "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                    "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
         # Recovery rpmsys channel
         self._invoke_smart('channel --enable rpmsys')
         return install_pkgs
@@ -1342,7 +1365,7 @@
                         available_pkgs.append(pkg.strip())
         except subprocess.CalledProcessError as e:
             bb.note("Unable to list all available packages. Command '%s' "
-                    "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                    "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
         self.fullpkglist = available_pkgs
 
@@ -1369,12 +1392,12 @@
 
         try:
             bb.note(cmd)
-            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).strip()
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).strip().decode("utf-8")
             bb.note(output)
-            os.chmod(saved_dir, 0755)
+            os.chmod(saved_dir, 0o755)
         except subprocess.CalledProcessError as e:
             bb.fatal("Invoke save_rpmpostinst failed. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
     '''Write common configuration for target usage'''
     def rpm_setup_smart_target_config(self):
@@ -1398,8 +1421,157 @@
         for f in rpm_db_locks:
             bb.utils.remove(f, True)
 
+    """
+    Returns a dictionary with the package info.
+    """
+    def package_info(self, pkg):
+        cmd = "%s %s info --urls %s" % (self.smart_cmd, self.smart_opt, pkg)
+        try:
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
+        except subprocess.CalledProcessError as e:
+            bb.fatal("Unable to list available packages. Command '%s' "
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
-class OpkgPM(PackageManager):
+        # Set default values to avoid UnboundLocalError
+        arch = ""
+        ver = ""
+        filename = ""
+
+        #Parse output
+        for line in output.splitlines():
+            line = line.rstrip()
+            if line.startswith("Name:"):
+                pkg = line.split(": ")[1]
+            elif line.startswith("Version:"):
+                tmp_str = line.split(": ")[1]
+                ver, arch = tmp_str.split("@")
+                break
+
+        # Get filename
+        index = re.search("^URLs", output, re.MULTILINE)
+        tmp_str = output[index.end():]
+        for line in tmp_str.splitlines():
+            if "/" in line:
+                line = line.lstrip()
+                filename = line.split(" ")[0]
+                break
+
+        # To have the same data type than other package_info methods
+        filepath = os.path.join(self.deploy_dir, arch, filename)
+        pkg_dict = {}
+        pkg_dict[pkg] = {"arch":arch, "ver":ver, "filename":filename,
+                         "filepath": filepath}
+
+        return pkg_dict
+
+    """
+    Returns the path to a tmpdir where resides the contents of a package.
+
+    Deleting the tmpdir is responsability of the caller.
+
+    """
+    def extract(self, pkg):
+        pkg_info = self.package_info(pkg)
+        if not pkg_info:
+            bb.fatal("Unable to get information for package '%s' while "
+                     "trying to extract the package."  % pkg)
+
+        pkg_path = pkg_info[pkg]["filepath"]
+
+        cpio_cmd = bb.utils.which(os.getenv("PATH"), "cpio")
+        rpm2cpio_cmd = bb.utils.which(os.getenv("PATH"), "rpm2cpio")
+
+        if not os.path.isfile(pkg_path):
+            bb.fatal("Unable to extract package for '%s'."
+                     "File %s doesn't exists" % (pkg, pkg_path))
+
+        tmp_dir = tempfile.mkdtemp()
+        current_dir = os.getcwd()
+        os.chdir(tmp_dir)
+
+        try:
+            cmd = "%s %s | %s -idmv" % (rpm2cpio_cmd, pkg_path, cpio_cmd)
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+        except subprocess.CalledProcessError as e:
+            bb.utils.remove(tmp_dir, recurse=True)
+            bb.fatal("Unable to extract %s package. Command '%s' "
+                     "returned %d:\n%s" % (pkg_path, cmd, e.returncode, e.output.decode("utf-8")))
+        except OSError as e:
+            bb.utils.remove(tmp_dir, recurse=True)
+            bb.fatal("Unable to extract %s package. Command '%s' "
+                     "returned %d:\n%s at %s" % (pkg_path, cmd, e.errno, e.strerror, e.filename))
+
+        bb.note("Extracted %s to %s" % (pkg_path, tmp_dir))
+        os.chdir(current_dir)
+
+        return tmp_dir
+
+
+class OpkgDpkgPM(PackageManager):
+    """
+    This is an abstract class. Do not instantiate this directly.
+    """
+    def __init__(self, d):
+        super(OpkgDpkgPM, self).__init__(d)
+
+    """
+    Returns a dictionary with the package info.
+
+    This method extracts the common parts for Opkg and Dpkg
+    """
+    def package_info(self, pkg, cmd):
+
+        try:
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
+        except subprocess.CalledProcessError as e:
+            bb.fatal("Unable to list available packages. Command '%s' "
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
+        return opkg_query(output)
+
+    """
+    Returns the path to a tmpdir where resides the contents of a package.
+
+    Deleting the tmpdir is responsability of the caller.
+
+    This method extracts the common parts for Opkg and Dpkg
+    """
+    def extract(self, pkg, pkg_info):
+
+        ar_cmd = bb.utils.which(os.getenv("PATH"), "ar")
+        tar_cmd = bb.utils.which(os.getenv("PATH"), "tar")
+        pkg_path = pkg_info[pkg]["filepath"]
+
+        if not os.path.isfile(pkg_path):
+            bb.fatal("Unable to extract package for '%s'."
+                     "File %s doesn't exists" % (pkg, pkg_path))
+
+        tmp_dir = tempfile.mkdtemp()
+        current_dir = os.getcwd()
+        os.chdir(tmp_dir)
+
+        try:
+            cmd = "%s x %s" % (ar_cmd, pkg_path)
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+            cmd = "%s xf data.tar.*" % tar_cmd
+            output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
+        except subprocess.CalledProcessError as e:
+            bb.utils.remove(tmp_dir, recurse=True)
+            bb.fatal("Unable to extract %s package. Command '%s' "
+                     "returned %d:\n%s" % (pkg_path, cmd, e.returncode, e.output.decode("utf-8")))
+        except OSError as e:
+            bb.utils.remove(tmp_dir, recurse=True)
+            bb.fatal("Unable to extract %s package. Command '%s' "
+                     "returned %d:\n%s at %s" % (pkg_path, cmd, e.errno, e.strerror, e.filename))
+
+        bb.note("Extracted %s to %s" % (pkg_path, tmp_dir))
+        bb.utils.remove(os.path.join(tmp_dir, "debian-binary"))
+        bb.utils.remove(os.path.join(tmp_dir, "control.tar.gz"))
+        os.chdir(current_dir)
+
+        return tmp_dir
+
+
+class OpkgPM(OpkgDpkgPM):
     def __init__(self, d, target_rootfs, config_file, archs, task_name='target'):
         super(OpkgPM, self).__init__(d)
 
@@ -1411,7 +1583,7 @@
         self.deploy_dir = self.d.getVar("DEPLOY_DIR_IPK", True)
         self.deploy_lock_file = os.path.join(self.deploy_dir, "deploy.lock")
         self.opkg_cmd = bb.utils.which(os.getenv('PATH'), "opkg")
-        self.opkg_args = "--volatile-cache -f %s -o %s " % (self.config_file, target_rootfs)
+        self.opkg_args = "--volatile-cache -f %s -t %s -o %s " % (self.config_file, self.d.expand('${T}/ipktemp/') ,target_rootfs)
         self.opkg_args += self.d.getVar("OPKG_ARGS", True)
 
         opkg_lib_dir = self.d.getVar('OPKGLIBDIR', True)
@@ -1552,12 +1724,12 @@
                     for arch in archs:
                         if (self.feed_archs is None) and (not os.path.exists(os.path.join(self.deploy_dir, arch))):
                             continue
-                        bb.note('Note: adding opkg feed url-%s-%d (%s)' %
+                        bb.note('Adding opkg feed url-%s-%d (%s)' %
                             (arch, uri_iterator, uri))
                         config_file.write("src/gz uri-%s-%d %s/%s\n" %
                                           (arch, uri_iterator, uri, arch))
                 else:
-                    bb.note('Note: adding opkg feed url-%d (%s)' %
+                    bb.note('Adding opkg feed url-%d (%s)' %
                         (uri_iterator, uri))
                     config_file.write("src/gz uri-%d %s\n" %
                                       (uri_iterator, uri))
@@ -1574,7 +1746,7 @@
         except subprocess.CalledProcessError as e:
             self.deploy_dir_unlock()
             bb.fatal("Unable to update the package index files. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
         self.deploy_dir_unlock()
 
@@ -1595,12 +1767,12 @@
         try:
             bb.note("Installing the following packages: %s" % ' '.join(pkgs))
             bb.note(cmd)
-            output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+            output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
             bb.note(output)
         except subprocess.CalledProcessError as e:
             (bb.fatal, bb.note)[attempt_only]("Unable to install packages. "
                                               "Command '%s' returned %d:\n%s" %
-                                              (cmd, e.returncode, e.output))
+                                              (cmd, e.returncode, e.output.decode("utf-8")))
 
     def remove(self, pkgs, with_dependencies=True):
         if with_dependencies:
@@ -1612,11 +1784,11 @@
 
         try:
             bb.note(cmd)
-            output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+            output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT).decode("utf-8")
             bb.note(output)
         except subprocess.CalledProcessError as e:
             bb.fatal("Unable to remove packages. Command '%s' "
-                     "returned %d:\n%s" % (e.cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
 
     def write_index(self):
         self.deploy_dir_lock()
@@ -1659,10 +1831,10 @@
                 pkg_info = cmd + pkg
 
                 try:
-                    output = subprocess.check_output(pkg_info.split(), stderr=subprocess.STDOUT).strip()
+                    output = subprocess.check_output(pkg_info.split(), stderr=subprocess.STDOUT).strip().decode("utf-8")
                 except subprocess.CalledProcessError as e:
                     bb.fatal("Cannot get package info. Command '%s' "
-                             "returned %d:\n%s" % (pkg_info, e.returncode, e.output))
+                             "returned %d:\n%s" % (pkg_info, e.returncode, e.output.decode("utf-8")))
 
                 if output == "":
                     bb.note("Ignored bad recommendation: '%s' is "
@@ -1699,7 +1871,7 @@
             subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
         except subprocess.CalledProcessError as e:
             bb.fatal("Unable to update. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
         # Dummy installation
         cmd = "%s %s --noaction install %s " % (self.opkg_cmd,
@@ -1709,7 +1881,7 @@
             output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
         except subprocess.CalledProcessError as e:
             bb.fatal("Unable to dummy install packages. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
         bb.utils.remove(temp_rootfs, True)
 
@@ -1734,8 +1906,37 @@
                             self.opkg_dir,
                             symlinks=True)
 
+    """
+    Returns a dictionary with the package info.
+    """
+    def package_info(self, pkg):
+        cmd = "%s %s info %s" % (self.opkg_cmd, self.opkg_args, pkg)
+        pkg_info = super(OpkgPM, self).package_info(pkg, cmd)
 
-class DpkgPM(PackageManager):
+        pkg_arch = pkg_info[pkg]["arch"]
+        pkg_filename = pkg_info[pkg]["filename"]
+        pkg_info[pkg]["filepath"] = \
+                os.path.join(self.deploy_dir, pkg_arch, pkg_filename)
+
+        return pkg_info
+
+    """
+    Returns the path to a tmpdir where resides the contents of a package.
+
+    Deleting the tmpdir is responsability of the caller.
+    """
+    def extract(self, pkg):
+        pkg_info = self.package_info(pkg)
+        if not pkg_info:
+            bb.fatal("Unable to get information for package '%s' while "
+                     "trying to extract the package."  % pkg)
+
+        tmp_dir = super(OpkgPM, self).extract(pkg, pkg_info)
+        bb.utils.remove(os.path.join(tmp_dir, "data.tar.gz"))
+
+        return tmp_dir
+
+class DpkgPM(OpkgDpkgPM):
     def __init__(self, d, target_rootfs, archs, base_archs, apt_conf_dir=None):
         super(DpkgPM, self).__init__(d)
         self.target_rootfs = target_rootfs
@@ -1746,6 +1947,7 @@
             self.apt_conf_dir = apt_conf_dir
         self.apt_conf_file = os.path.join(self.apt_conf_dir, "apt.conf")
         self.apt_get_cmd = bb.utils.which(os.getenv('PATH'), "apt-get")
+        self.apt_cache_cmd = bb.utils.which(os.getenv('PATH'), "apt-cache")
 
         self.apt_args = d.getVar("APT_ARGS", True)
 
@@ -1823,7 +2025,7 @@
                         subprocess.check_output(p_full, stderr=subprocess.STDOUT)
                     except subprocess.CalledProcessError as e:
                         bb.note("%s for package %s failed with %d:\n%s" %
-                                (suffix[1], pkg_name, e.returncode, e.output))
+                                (suffix[1], pkg_name, e.returncode, e.output.decode("utf-8")))
                         failed_pkgs.append(pkg_name)
                         break
 
@@ -1841,7 +2043,7 @@
             subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
         except subprocess.CalledProcessError as e:
             bb.fatal("Unable to update the package index files. Command '%s' "
-                     "returned %d:\n%s" % (e.cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
 
         self.deploy_dir_unlock()
 
@@ -1860,7 +2062,7 @@
         except subprocess.CalledProcessError as e:
             (bb.fatal, bb.note)[attempt_only]("Unable to install packages. "
                                               "Command '%s' returned %d:\n%s" %
-                                              (cmd, e.returncode, e.output))
+                                              (cmd, e.returncode, e.output.decode("utf-8")))
 
         # rename *.dpkg-new files/dirs
         for root, dirs, files in os.walk(self.target_rootfs):
@@ -1891,7 +2093,7 @@
             subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
         except subprocess.CalledProcessError as e:
             bb.fatal("Unable to remove packages. Command '%s' "
-                     "returned %d:\n%s" % (e.cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (e.cmd, e.returncode, e.output.decode("utf-8")))
 
     def write_index(self):
         self.deploy_dir_lock()
@@ -1925,11 +2127,11 @@
             for uri in feed_uris:
                 if arch_list:
                     for arch in arch_list:
-                        bb.note('Note: adding dpkg channel at (%s)' % uri)
+                        bb.note('Adding dpkg channel at (%s)' % uri)
                         sources_file.write("deb %s/%s ./\n" %
                                            (uri, arch))
                 else:
-                    bb.note('Note: adding dpkg channel at (%s)' % uri)
+                    bb.note('Adding dpkg channel at (%s)' % uri)
                     sources_file.write("deb %s ./\n" % uri)
 
     def _create_configs(self, archs, base_archs):
@@ -2024,11 +2226,40 @@
             subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
         except subprocess.CalledProcessError as e:
             bb.fatal("Cannot fix broken dependencies. Command '%s' "
-                     "returned %d:\n%s" % (cmd, e.returncode, e.output))
+                     "returned %d:\n%s" % (cmd, e.returncode, e.output.decode("utf-8")))
 
     def list_installed(self):
         return DpkgPkgsList(self.d, self.target_rootfs).list_pkgs()
 
+    """
+    Returns a dictionary with the package info.
+    """
+    def package_info(self, pkg):
+        cmd = "%s show %s" % (self.apt_cache_cmd, pkg)
+        pkg_info = super(DpkgPM, self).package_info(pkg, cmd)
+
+        pkg_arch = pkg_info[pkg]["pkgarch"]
+        pkg_filename = pkg_info[pkg]["filename"]
+        pkg_info[pkg]["filepath"] = \
+                os.path.join(self.deploy_dir, pkg_arch, pkg_filename)
+
+        return pkg_info
+
+    """
+    Returns the path to a tmpdir where resides the contents of a package.
+
+    Deleting the tmpdir is responsability of the caller.
+    """
+    def extract(self, pkg):
+        pkg_info = self.package_info(pkg)
+        if not pkg_info:
+            bb.fatal("Unable to get information for package '%s' while "
+                     "trying to extract the package."  % pkg)
+
+        tmp_dir = super(DpkgPM, self).extract(pkg, pkg_info)
+        bb.utils.remove(os.path.join(tmp_dir, "data.tar.xz"))
+
+        return tmp_dir
 
 def generate_index_files(d):
     classes = d.getVar('PACKAGE_CLASSES', True).replace("package_", "").split()
diff --git a/import-layers/yocto-poky/meta/lib/oe/packagedata.py b/import-layers/yocto-poky/meta/lib/oe/packagedata.py
index bc0fd06..21d4de9 100644
--- a/import-layers/yocto-poky/meta/lib/oe/packagedata.py
+++ b/import-layers/yocto-poky/meta/lib/oe/packagedata.py
@@ -8,7 +8,7 @@
     pkgdata = {}
 
     def decode(str):
-        c = codecs.getdecoder("string_escape")
+        c = codecs.getdecoder("unicode_escape")
         return c(str)[0]
 
     if os.access(fn, os.R_OK):
@@ -66,7 +66,7 @@
         bb.warn("No files in %s?" % pkgdatadir)
         files = []
 
-    for pn in filter(lambda f: not os.path.isdir(os.path.join(pkgdatadir, f)), files):
+    for pn in [f for f in files if not os.path.isdir(os.path.join(pkgdatadir, f))]:
         try:
             pkgdata = read_pkgdatafile(os.path.join(pkgdatadir, pn))
         except OSError:
diff --git a/import-layers/yocto-poky/meta/lib/oe/packagegroup.py b/import-layers/yocto-poky/meta/lib/oe/packagegroup.py
index a6fee5f..9781927 100644
--- a/import-layers/yocto-poky/meta/lib/oe/packagegroup.py
+++ b/import-layers/yocto-poky/meta/lib/oe/packagegroup.py
@@ -16,11 +16,11 @@
             yield pkg
 
 def required_packages(features, d):
-    req = filter(lambda feature: not is_optional(feature, d), features)
+    req = [feature for feature in features if not is_optional(feature, d)]
     return packages(req, d)
 
 def optional_packages(features, d):
-    opt = filter(lambda feature: is_optional(feature, d), features)
+    opt = [feature for feature in features if is_optional(feature, d)]
     return packages(opt, d)
 
 def active_packages(features, d):
diff --git a/import-layers/yocto-poky/meta/lib/oe/patch.py b/import-layers/yocto-poky/meta/lib/oe/patch.py
index 9d36172..0332f10 100644
--- a/import-layers/yocto-poky/meta/lib/oe/patch.py
+++ b/import-layers/yocto-poky/meta/lib/oe/patch.py
@@ -117,43 +117,50 @@
                 return None
             return os.sep.join(filesplit[striplevel:])
 
-        copiedmode = False
-        filelist = []
-        with open(patchfile) as f:
-            for line in f:
-                if line.startswith('--- '):
-                    patchpth = patchedpath(line)
-                    if not patchpth:
-                        break
-                    if copiedmode:
-                        addedfile = patchpth
-                    else:
-                        removedfile = patchpth
-                elif line.startswith('+++ '):
-                    addedfile = patchedpath(line)
-                    if not addedfile:
-                        break
-                elif line.startswith('*** '):
-                    copiedmode = True
-                    removedfile = patchedpath(line)
-                    if not removedfile:
-                        break
-                else:
-                    removedfile = None
-                    addedfile = None
+        for encoding in ['utf-8', 'latin-1']:
+            try:
+                copiedmode = False
+                filelist = []
+                with open(patchfile) as f:
+                    for line in f:
+                        if line.startswith('--- '):
+                            patchpth = patchedpath(line)
+                            if not patchpth:
+                                break
+                            if copiedmode:
+                                addedfile = patchpth
+                            else:
+                                removedfile = patchpth
+                        elif line.startswith('+++ '):
+                            addedfile = patchedpath(line)
+                            if not addedfile:
+                                break
+                        elif line.startswith('*** '):
+                            copiedmode = True
+                            removedfile = patchedpath(line)
+                            if not removedfile:
+                                break
+                        else:
+                            removedfile = None
+                            addedfile = None
 
-                if addedfile and removedfile:
-                    if removedfile == '/dev/null':
-                        mode = 'A'
-                    elif addedfile == '/dev/null':
-                        mode = 'D'
-                    else:
-                        mode = 'M'
-                    if srcdir:
-                        fullpath = os.path.abspath(os.path.join(srcdir, addedfile))
-                    else:
-                        fullpath = addedfile
-                    filelist.append((fullpath, mode))
+                        if addedfile and removedfile:
+                            if removedfile == '/dev/null':
+                                mode = 'A'
+                            elif addedfile == '/dev/null':
+                                mode = 'D'
+                            else:
+                                mode = 'M'
+                            if srcdir:
+                                fullpath = os.path.abspath(os.path.join(srcdir, addedfile))
+                            else:
+                                fullpath = addedfile
+                            filelist.append((fullpath, mode))
+            except UnicodeDecodeError:
+                continue
+            break
+        else:
+            raise PatchError('Unable to decode %s' % patchfile)
 
         return filelist
 
@@ -274,30 +281,43 @@
 
     def __init__(self, dir, d):
         PatchTree.__init__(self, dir, d)
+        self.commituser = d.getVar('PATCH_GIT_USER_NAME', True)
+        self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL', True)
 
     @staticmethod
     def extractPatchHeader(patchfile):
         """
         Extract just the header lines from the top of a patch file
         """
-        lines = []
-        with open(patchfile, 'r') as f:
-            for line in f.readlines():
-                if line.startswith('Index: ') or line.startswith('diff -') or line.startswith('---'):
-                    break
-                lines.append(line)
+        for encoding in ['utf-8', 'latin-1']:
+            lines = []
+            try:
+                with open(patchfile, 'r', encoding=encoding) as f:
+                    for line in f:
+                        if line.startswith('Index: ') or line.startswith('diff -') or line.startswith('---'):
+                            break
+                        lines.append(line)
+            except UnicodeDecodeError:
+                continue
+            break
+        else:
+            raise PatchError('Unable to find a character encoding to decode %s' % patchfile)
         return lines
 
     @staticmethod
     def decodeAuthor(line):
         from email.header import decode_header
         authorval = line.split(':', 1)[1].strip().replace('"', '')
-        return decode_header(authorval)[0][0]
+        result =  decode_header(authorval)[0][0]
+        if hasattr(result, 'decode'):
+            result = result.decode('utf-8')
+        return result
 
     @staticmethod
     def interpretPatchHeader(headerlines):
         import re
         author_re = re.compile('[\S ]+ <\S+@\S+\.\S+>')
+        from_commit_re = re.compile('^From [a-z0-9]{40} .*')
         outlines = []
         author = None
         date = None
@@ -327,11 +347,39 @@
                 # git is fussy about author formatting i.e. it must be Name <email@domain>
                 if author_re.match(authorval):
                     author = authorval
+            elif from_commit_re.match(line):
+                # We don't want the From <commit> line - if it's present it will break rebasing
+                continue
             outlines.append(line)
+
+        if not subject:
+            firstline = None
+            for line in headerlines:
+                line = line.strip()
+                if firstline:
+                    if line:
+                        # Second line is not blank, the first line probably isn't usable
+                        firstline = None
+                    break
+                elif line:
+                    firstline = line
+            if firstline and not firstline.startswith(('#', 'Index:', 'Upstream-Status:')) and len(firstline) < 100:
+                subject = firstline
+
         return outlines, author, date, subject
 
     @staticmethod
-    def prepareCommit(patchfile):
+    def gitCommandUserOptions(cmd, commituser=None, commitemail=None, d=None):
+        if d:
+            commituser = d.getVar('PATCH_GIT_USER_NAME', True)
+            commitemail = d.getVar('PATCH_GIT_USER_EMAIL', True)
+        if commituser:
+            cmd += ['-c', 'user.name="%s"' % commituser]
+        if commitemail:
+            cmd += ['-c', 'user.email="%s"' % commitemail]
+
+    @staticmethod
+    def prepareCommit(patchfile, commituser=None, commitemail=None):
         """
         Prepare a git commit command line based on the header from a patch file
         (typically this is useful for patches that cannot be applied with "git am" due to formatting)
@@ -340,21 +388,24 @@
         # Process patch header and extract useful information
         lines = GitApplyTree.extractPatchHeader(patchfile)
         outlines, author, date, subject = GitApplyTree.interpretPatchHeader(lines)
-        if not author or not subject:
+        if not author or not subject or not date:
             try:
-                shellcmd = ["git", "log", "--format=email", "--diff-filter=A", "--", patchfile]
+                shellcmd = ["git", "log", "--format=email", "--follow", "--diff-filter=A", "--", patchfile]
                 out = runcmd(["sh", "-c", " ".join(shellcmd)], os.path.dirname(patchfile))
             except CmdError:
                 out = None
             if out:
                 _, newauthor, newdate, newsubject = GitApplyTree.interpretPatchHeader(out.splitlines())
-                if not author or not date:
-                    # These really need to go together
+                if not author:
+                    # If we're setting the author then the date should be set as well
                     author = newauthor
                     date = newdate
+                elif not date:
+                    # If we don't do this we'll get the current date, at least this will be closer
+                    date = newdate
                 if not subject:
                     subject = newsubject
-        if subject:
+        if subject and outlines and not outlines[0].strip() == subject:
             outlines.insert(0, '%s\n\n' % subject.strip())
 
         # Write out commit message to a file
@@ -363,7 +414,9 @@
             for line in outlines:
                 tf.write(line)
         # Prepare git command
-        cmd = ["git", "commit", "-F", tmpfile]
+        cmd = ["git"]
+        GitApplyTree.gitCommandUserOptions(cmd, commituser, commitemail)
+        cmd += ["commit", "-F", tmpfile]
         # git doesn't like plain email addresses as authors
         if author and '<' in author:
             cmd.append('--author="%s"' % author)
@@ -384,16 +437,24 @@
             out = runcmd(["sh", "-c", " ".join(shellcmd)], tree)
             if out:
                 for srcfile in out.split():
-                    patchlines = []
-                    outfile = None
-                    with open(srcfile, 'r') as f:
-                        for line in f:
-                            if line.startswith(GitApplyTree.patch_line_prefix):
-                                outfile = line.split()[-1].strip()
-                                continue
-                            if line.startswith(GitApplyTree.ignore_commit_prefix):
-                                continue
-                            patchlines.append(line)
+                    for encoding in ['utf-8', 'latin-1']:
+                        patchlines = []
+                        outfile = None
+                        try:
+                            with open(srcfile, 'r', encoding=encoding) as f:
+                                for line in f:
+                                    if line.startswith(GitApplyTree.patch_line_prefix):
+                                        outfile = line.split()[-1].strip()
+                                        continue
+                                    if line.startswith(GitApplyTree.ignore_commit_prefix):
+                                        continue
+                                    patchlines.append(line)
+                        except UnicodeDecodeError:
+                            continue
+                        break
+                    else:
+                        raise PatchError('Unable to find a character encoding to decode %s' % srcfile)
+
                     if not outfile:
                         outfile = os.path.basename(srcfile)
                     with open(os.path.join(outdir, outfile), 'w') as of:
@@ -434,12 +495,14 @@
             # change other places which read it back
             f.write('echo >> $1\n')
             f.write('echo "%s: $PATCHFILE" >> $1\n' % GitApplyTree.patch_line_prefix)
-        os.chmod(commithook, 0755)
+        os.chmod(commithook, 0o755)
         shutil.copy2(commithook, applyhook)
         try:
             patchfilevar = 'PATCHFILE="%s"' % os.path.basename(patch['file'])
             try:
-                shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot, "am", "-3", "--keep-cr", "-p%s" % patch['strippath']]
+                shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot]
+                self.gitCommandUserOptions(shellcmd, self.commituser, self.commitemail)
+                shellcmd += ["am", "-3", "--keep-cr", "-p%s" % patch['strippath']]
                 return _applypatchhelper(shellcmd, patch, force, reverse, run)
             except CmdError:
                 # Need to abort the git am, or we'll still be within it at the end
@@ -469,7 +532,7 @@
                 shellcmd = ["git", "reset", "HEAD", self.patchdir]
                 output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
                 # Commit the result
-                (tmpfile, shellcmd) = self.prepareCommit(patch['file'])
+                (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail)
                 try:
                     shellcmd.insert(0, patchfilevar)
                     output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
@@ -672,7 +735,7 @@
                 f.write("echo 'Run \"quilt refresh\" when patch is corrected, press CTRL+D to exit.'\n")
                 f.write("echo ''\n")
                 f.write(" ".join(patchcmd) + "\n")
-            os.chmod(rcfile, 0775)
+            os.chmod(rcfile, 0o775)
 
             self.terminal("bash --rcfile " + rcfile, 'Patch Rejects: Please fix patch rejects manually', self.patchset.d)
 
diff --git a/import-layers/yocto-poky/meta/lib/oe/path.py b/import-layers/yocto-poky/meta/lib/oe/path.py
index 413ebfb..06a5af2 100644
--- a/import-layers/yocto-poky/meta/lib/oe/path.py
+++ b/import-layers/yocto-poky/meta/lib/oe/path.py
@@ -65,22 +65,30 @@
     # This way we also preserve hardlinks between files in the tree.
 
     bb.utils.mkdirhier(dst)
-    cmd = 'tar -cf - -C %s -p . | tar -xf - -C %s' % (src, dst)
-    check_output(cmd, shell=True, stderr=subprocess.STDOUT)
+    cmd = "tar --xattrs --xattrs-include='*' -cf - -C %s -p . | tar --xattrs --xattrs-include='*' -xf - -C %s" % (src, dst)
+    subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
 
 def copyhardlinktree(src, dst):
     """ Make the hard link when possible, otherwise copy. """
     bb.utils.mkdirhier(dst)
     if os.path.isdir(src) and not len(os.listdir(src)):
-        return	
+        return
 
     if (os.stat(src).st_dev ==  os.stat(dst).st_dev):
         # Need to copy directories only with tar first since cp will error if two 
         # writers try and create a directory at the same time
-        cmd = 'cd %s; find . -type d -print | tar -cf - -C %s -p --files-from - --no-recursion | tar -xf - -C %s' % (src, src, dst)
-        check_output(cmd, shell=True, stderr=subprocess.STDOUT)
-        cmd = 'cd %s; find . -print0 | cpio --null -pdlu %s' % (src, dst)
-        check_output(cmd, shell=True, stderr=subprocess.STDOUT)
+        cmd = "cd %s; find . -type d -print | tar --xattrs --xattrs-include='*' -cf - -C %s -p --no-recursion --files-from - | tar --xattrs --xattrs-include='*' -xf - -C %s" % (src, src, dst)
+        subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
+        source = ''
+        if os.path.isdir(src):
+            import glob
+            if len(glob.glob('%s/.??*' % src)) > 0:
+                source = '%s/.??* ' % src
+            source = source + '%s/*' % src
+        else:
+            source = src
+        cmd = 'cp -afl --preserve=xattr %s %s' % (source, dst)
+        subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
     else:
         copytree(src, dst)
 
@@ -105,47 +113,6 @@
         if e.errno != errno.EEXIST or os.readlink(destination) != source:
             raise
 
-class CalledProcessError(Exception):
-    def __init__(self, retcode, cmd, output = None):
-        self.retcode = retcode
-        self.cmd = cmd
-        self.output = output
-    def __str__(self):
-        return "Command '%s' returned non-zero exit status %d with output %s" % (self.cmd, self.retcode, self.output)
-
-# Not needed when we move to python 2.7
-def check_output(*popenargs, **kwargs):
-    r"""Run command with arguments and return its output as a byte string.
-
-    If the exit code was non-zero it raises a CalledProcessError.  The
-    CalledProcessError object will have the return code in the returncode
-    attribute and output in the output attribute.
-
-    The arguments are the same as for the Popen constructor.  Example:
-
-    >>> check_output(["ls", "-l", "/dev/null"])
-    'crw-rw-rw- 1 root root 1, 3 Oct 18  2007 /dev/null\n'
-
-    The stdout argument is not allowed as it is used internally.
-    To capture standard error in the result, use stderr=STDOUT.
-
-    >>> check_output(["/bin/sh", "-c",
-    ...               "ls -l non_existent_file ; exit 0"],
-    ...              stderr=STDOUT)
-    'ls: non_existent_file: No such file or directory\n'
-    """
-    if 'stdout' in kwargs:
-        raise ValueError('stdout argument not allowed, it will be overridden.')
-    process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
-    output, unused_err = process.communicate()
-    retcode = process.poll()
-    if retcode:
-        cmd = kwargs.get("args")
-        if cmd is None:
-            cmd = popenargs[0]
-        raise CalledProcessError(retcode, cmd, output=output)
-    return output
-
 def find(dir, **walkoptions):
     """ Given a directory, recurses into that directory,
     returning all files as absolute paths. """
diff --git a/import-layers/yocto-poky/meta/lib/oe/prservice.py b/import-layers/yocto-poky/meta/lib/oe/prservice.py
index b0cbcb1..0054f95 100644
--- a/import-layers/yocto-poky/meta/lib/oe/prservice.py
+++ b/import-layers/yocto-poky/meta/lib/oe/prservice.py
@@ -1,7 +1,7 @@
 
 def prserv_make_conn(d, check = False):
     import prserv.serv
-    host_params = filter(None, (d.getVar("PRSERV_HOST", True) or '').split(':'))
+    host_params = list([_f for _f in (d.getVar("PRSERV_HOST", True) or '').split(':') if _f])
     try:
         conn = None
         conn = prserv.serv.PRServerConnection(host_params[0], int(host_params[1]))
@@ -9,7 +9,7 @@
             if not conn.ping():
                 raise Exception('service not available')
         d.setVar("__PRSERV_CONN",conn)
-    except Exception, exc:
+    except Exception as exc:
         bb.fatal("Connecting to PR service %s:%s failed: %s" % (host_params[0], host_params[1], str(exc)))
 
     return conn
@@ -114,7 +114,7 @@
     bb.utils.unlockfile(lf)
 
 def prserv_check_avail(d):
-    host_params = filter(None, (d.getVar("PRSERV_HOST", True) or '').split(':'))
+    host_params = list([_f for _f in (d.getVar("PRSERV_HOST", True) or '').split(':') if _f])
     try:
         if len(host_params) != 2:
             raise TypeError
diff --git a/import-layers/yocto-poky/meta/lib/oe/qa.py b/import-layers/yocto-poky/meta/lib/oe/qa.py
index 3cfeee7..fbe719d 100644
--- a/import-layers/yocto-poky/meta/lib/oe/qa.py
+++ b/import-layers/yocto-poky/meta/lib/oe/qa.py
@@ -43,48 +43,48 @@
         if not os.path.isfile(self.name):
             raise NotELFFileError("%s is not a normal file" % self.name)
 
-        self.file = file(self.name, "r")
-        # Read 4k which should cover most of the headers we're after
-        self.data = self.file.read(4096)
+        with open(self.name, "rb") as f:
+            # Read 4k which should cover most of the headers we're after
+            self.data = f.read(4096)
 
         if len(self.data) < ELFFile.EI_NIDENT + 4:
             raise NotELFFileError("%s is not an ELF" % self.name)
 
-        self.my_assert(self.data[0], chr(0x7f) )
-        self.my_assert(self.data[1], 'E')
-        self.my_assert(self.data[2], 'L')
-        self.my_assert(self.data[3], 'F')
+        self.my_assert(self.data[0], 0x7f)
+        self.my_assert(self.data[1], ord('E'))
+        self.my_assert(self.data[2], ord('L'))
+        self.my_assert(self.data[3], ord('F'))
         if self.bits == 0:
-            if self.data[ELFFile.EI_CLASS] == chr(ELFFile.ELFCLASS32):
+            if self.data[ELFFile.EI_CLASS] == ELFFile.ELFCLASS32:
                 self.bits = 32
-            elif self.data[ELFFile.EI_CLASS] == chr(ELFFile.ELFCLASS64):
+            elif self.data[ELFFile.EI_CLASS] == ELFFile.ELFCLASS64:
                 self.bits = 64
             else:
                 # Not 32-bit or 64.. lets assert
                 raise NotELFFileError("ELF but not 32 or 64 bit.")
         elif self.bits == 32:
-            self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32))
+            self.my_assert(self.data[ELFFile.EI_CLASS], ELFFile.ELFCLASS32)
         elif self.bits == 64:
-            self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS64))
+            self.my_assert(self.data[ELFFile.EI_CLASS], ELFFile.ELFCLASS64)
         else:
             raise NotELFFileError("Must specify unknown, 32 or 64 bit size.")
-        self.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) )
+        self.my_assert(self.data[ELFFile.EI_VERSION], ELFFile.EV_CURRENT)
 
         self.sex = self.data[ELFFile.EI_DATA]
-        if self.sex == chr(ELFFile.ELFDATANONE):
+        if self.sex == ELFFile.ELFDATANONE:
             raise NotELFFileError("self.sex == ELFDATANONE")
-        elif self.sex == chr(ELFFile.ELFDATA2LSB):
+        elif self.sex == ELFFile.ELFDATA2LSB:
             self.sex = "<"
-        elif self.sex == chr(ELFFile.ELFDATA2MSB):
+        elif self.sex == ELFFile.ELFDATA2MSB:
             self.sex = ">"
         else:
             raise NotELFFileError("Unknown self.sex")
 
     def osAbi(self):
-        return ord(self.data[ELFFile.EI_OSABI])
+        return self.data[ELFFile.EI_OSABI]
 
     def abiVersion(self):
-        return ord(self.data[ELFFile.EI_ABIVERSION])
+        return self.data[ELFFile.EI_ABIVERSION]
 
     def abiSize(self):
         return self.bits
@@ -144,8 +144,28 @@
             bb.note("%s %s %s failed: %s" % (objdump, cmd, self.name, e))
             return ""
 
+def elf_machine_to_string(machine):
+    """
+    Return the name of a given ELF e_machine field or the hex value as a string
+    if it isn't recognised.
+    """
+    try:
+        return {
+            0x02: "SPARC",
+            0x03: "x86",
+            0x08: "MIPS",
+            0x14: "PowerPC",
+            0x28: "ARM",
+            0x2A: "SuperH",
+            0x32: "IA-64",
+            0x3E: "x86-64",
+            0xB7: "AArch64"
+        }[machine]
+    except:
+        return "Unknown (%s)" % repr(machine)
+
 if __name__ == "__main__":
     import sys
     elf = ELFFile(sys.argv[1])
     elf.open()
-    print elf.isDynamic()
+    print(elf.isDynamic())
diff --git a/import-layers/yocto-poky/meta/lib/oe/recipeutils.py b/import-layers/yocto-poky/meta/lib/oe/recipeutils.py
index 6c7adb5..58e4028 100644
--- a/import-layers/yocto-poky/meta/lib/oe/recipeutils.py
+++ b/import-layers/yocto-poky/meta/lib/oe/recipeutils.py
@@ -2,7 +2,7 @@
 #
 # Some code borrowed from the OE layer index
 #
-# Copyright (C) 2013-2015 Intel Corporation
+# Copyright (C) 2013-2016 Intel Corporation
 #
 
 import sys
@@ -11,31 +11,32 @@
 import tempfile
 import textwrap
 import difflib
-import utils
+from . import utils
 import shutil
 import re
 import fnmatch
+import glob
 from collections import OrderedDict, defaultdict
 
 
 # Help us to find places to insert values
-recipe_progression = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'do_package()', 'do_deploy()']
+recipe_progression = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LICENSE_FLAGS', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRCPV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'EXTRA_OECMAKE', 'EXTRA_OESCONS', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'populate_packages()', 'do_package()', 'do_deploy()']
 # Variables that sometimes are a bit long but shouldn't be wrapped
 nowrap_vars = ['SUMMARY', 'HOMEPAGE', 'BUGTRACKER', 'SRC_URI[md5sum]', 'SRC_URI[sha256sum]']
 list_vars = ['SRC_URI', 'LIC_FILES_CHKSUM']
 meta_vars = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION']
 
 
-def pn_to_recipe(cooker, pn):
+def pn_to_recipe(cooker, pn, mc=''):
     """Convert a recipe name (PN) to the path to the recipe file"""
     import bb.providers
 
-    if pn in cooker.recipecache.pkg_pn:
-        best = bb.providers.findBestProvider(pn, cooker.data, cooker.recipecache, cooker.recipecache.pkg_pn)
+    if pn in cooker.recipecaches[mc].pkg_pn:
+        best = bb.providers.findBestProvider(pn, cooker.data, cooker.recipecaches[mc], cooker.recipecaches[mc].pkg_pn)
         return best[3]
-    elif pn in cooker.recipecache.providers:
-        filenames = cooker.recipecache.providers[pn]
-        eligible, foundUnique = bb.providers.filterProviders(filenames, pn, cooker.expanded_data, cooker.recipecache)
+    elif pn in cooker.recipecaches[mc].providers:
+        filenames = cooker.recipecaches[mc].providers[pn]
+        eligible, foundUnique = bb.providers.filterProviders(filenames, pn, cooker.expanded_data, cooker.recipecaches[mc])
         filename = eligible[0]
         return filename
     else:
@@ -49,13 +50,14 @@
     return taskdata.get_reasons(pn)
 
 
-def parse_recipe(fn, appendfiles, d):
+def parse_recipe(cooker, fn, appendfiles):
     """
     Parse an individual recipe file, optionally with a list of
     bbappend files.
     """
     import bb.cache
-    envdata = bb.cache.Cache.loadDataFull(fn, appendfiles, d)
+    parser = bb.cache.NoCache(cooker.databuilder)
+    envdata = parser.loadDataFull(fn, appendfiles)
     return envdata
 
 
@@ -78,7 +80,7 @@
         appendfiles = cooker.collection.get_file_appends(recipefile)
     else:
         appendfiles = None
-    return parse_recipe(recipefile, appendfiles, d)
+    return parse_recipe(cooker, recipefile, appendfiles)
 
 
 def get_var_files(fn, varlist, d):
@@ -158,15 +160,19 @@
     return outlist
 
 
-def patch_recipe_file(fn, values, patch=False, relpath=''):
-    """Update or insert variable values into a recipe file (assuming you
-       have already identified the exact file you want to update.)
+def patch_recipe_lines(fromlines, values, trailing_newline=True):
+    """Update or insert variable values into lines from a recipe.
        Note that some manual inspection/intervention may be required
        since this cannot handle all situations.
     """
 
     import bb.utils
 
+    if trailing_newline:
+        newline = '\n'
+    else:
+        newline = ''
+
     recipe_progression_res = []
     recipe_progression_restrs = []
     for item in recipe_progression:
@@ -190,14 +196,14 @@
     remainingnames = {}
     for k in values.keys():
         remainingnames[k] = get_recipe_pos(k)
-    remainingnames = OrderedDict(sorted(remainingnames.iteritems(), key=lambda x: x[1]))
+    remainingnames = OrderedDict(sorted(remainingnames.items(), key=lambda x: x[1]))
 
     modifying = False
 
     def outputvalue(name, lines, rewindcomments=False):
         if values[name] is None:
             return
-        rawtext = '%s = "%s"\n' % (name, values[name])
+        rawtext = '%s = "%s"%s' % (name, values[name], newline)
         addlines = []
         if name in nowrap_vars:
             addlines.append(rawtext)
@@ -205,19 +211,19 @@
             splitvalue = split_var_value(values[name], assignment=False)
             if len(splitvalue) > 1:
                 linesplit = ' \\\n' + (' ' * (len(name) + 4))
-                addlines.append('%s = "%s%s"\n' % (name, linesplit.join(splitvalue), linesplit))
+                addlines.append('%s = "%s%s"%s' % (name, linesplit.join(splitvalue), linesplit, newline))
             else:
                 addlines.append(rawtext)
         else:
             wrapped = textwrap.wrap(rawtext)
             for wrapline in wrapped[:-1]:
-                addlines.append('%s \\\n' % wrapline)
-            addlines.append('%s\n' % wrapped[-1])
+                addlines.append('%s \\%s' % (wrapline, newline))
+            addlines.append('%s%s' % (wrapped[-1], newline))
         if rewindcomments:
             # Ensure we insert the lines before any leading comments
             # (that we'd want to ensure remain leading the next value)
             for i, ln in reversed(list(enumerate(lines))):
-                if ln[0] != '#':
+                if not ln.startswith('#'):
                     lines[i+1:i+1] = addlines
                     break
             else:
@@ -230,7 +236,7 @@
         if modifying:
             # Insert anything that should come before this variable
             pos = get_recipe_pos(varname)
-            for k in remainingnames.keys()[:]:
+            for k in list(remainingnames):
                 if remainingnames[k] > -1 and pos >= remainingnames[k] and not k in existingnames:
                     outputvalue(k, newlines, rewindcomments=True)
                     del remainingnames[k]
@@ -247,19 +253,33 @@
 
     # First run - establish which values we want to set are already in the file
     varlist = [re.escape(item) for item in values.keys()]
-    with open(fn, 'r') as f:
-        changed, fromlines = bb.utils.edit_metadata(f, varlist, patch_recipe_varfunc)
+    bb.utils.edit_metadata(fromlines, varlist, patch_recipe_varfunc)
     # Second run - actually set everything
     modifying = True
     varlist.extend(recipe_progression_restrs)
     changed, tolines = bb.utils.edit_metadata(fromlines, varlist, patch_recipe_varfunc, match_overrides=True)
 
     if remainingnames:
-        if tolines[-1].strip() != '':
+        if tolines and tolines[-1].strip() != '':
             tolines.append('\n')
         for k in remainingnames.keys():
             outputvalue(k, tolines)
 
+    return changed, tolines
+
+
+def patch_recipe_file(fn, values, patch=False, relpath=''):
+    """Update or insert variable values into a recipe file (assuming you
+       have already identified the exact file you want to update.)
+       Note that some manual inspection/intervention may be required
+       since this cannot handle all situations.
+    """
+
+    with open(fn, 'r') as f:
+        fromlines = f.readlines()
+
+    _, tolines = patch_recipe_lines(fromlines, values)
+
     if patch:
         relfn = os.path.relpath(fn, relpath)
         diff = difflib.unified_diff(fromlines, tolines, 'a/%s' % relfn, 'b/%s' % relfn)
@@ -318,7 +338,7 @@
     varfiles = get_var_files(fn, varlist, d)
     locs = localise_file_vars(fn, varfiles, varlist)
     patches = []
-    for f,v in locs.iteritems():
+    for f,v in locs.items():
         vals = {k: varvalues[k] for k in v}
         patchdata = patch_recipe_file(f, vals, patch, relpath)
         if patch:
@@ -347,6 +367,7 @@
     # Copy local files to target directory and gather any remote files
     bb_dir = os.path.dirname(d.getVar('FILE', True)) + os.sep
     remotes = []
+    copied = []
     includes = [path for path in d.getVar('BBINCLUDED', True).split() if
                 path.startswith(bb_dir) and os.path.exists(path)]
     for path in fetch.localpaths() + includes:
@@ -358,13 +379,14 @@
                 if not os.path.exists(subdir):
                     os.makedirs(subdir)
                 shutil.copy2(path, os.path.join(tgt_dir, relpath))
+                copied.append(relpath)
         else:
             remotes.append(path)
     # Simply copy whole meta dir, if requested
     if whole_dir:
         shutil.copytree(bb_dir, tgt_dir)
 
-    return remotes
+    return copied, remotes
 
 
 def get_recipe_local_files(d, patches=False):
@@ -378,8 +400,16 @@
                     bb.utils.exec_flat_python_func('patch_path', uri, fetch, '')):
                 continue
             # Skip files that are referenced by absolute path
-            if not os.path.isabs(fetch.ud[uri].basepath):
-                ret[fetch.ud[uri].basepath] = fetch.localpath(uri)
+            fname = fetch.ud[uri].basepath
+            if os.path.isabs(fname):
+                continue
+            # Handle subdir=
+            subdir = fetch.ud[uri].parm.get('subdir', '')
+            if subdir:
+                if os.path.isabs(subdir):
+                    continue
+                fname = os.path.join(subdir, fname)
+            ret[fname] = fetch.localpath(uri)
     return ret
 
 
@@ -419,8 +449,8 @@
 def validate_pn(pn):
     """Perform validation on a recipe name (PN) for a new recipe."""
     reserved_names = ['forcevariable', 'append', 'prepend', 'remove']
-    if not re.match('[0-9a-z-.]+', pn):
-        return 'Recipe name "%s" is invalid: only characters 0-9, a-z, - and . are allowed' % pn
+    if not re.match('^[0-9a-z-.+]+$', pn):
+        return 'Recipe name "%s" is invalid: only characters 0-9, a-z, -, + and . are allowed' % pn
     elif pn in reserved_names:
         return 'Recipe name "%s" is invalid: is a reserved keyword' % pn
     elif pn.startswith('pn-'):
@@ -430,6 +460,60 @@
     return ''
 
 
+def get_bbfile_path(d, destdir, extrapathhint=None):
+    """
+    Determine the correct path for a recipe within a layer
+    Parameters:
+        d: Recipe-specific datastore
+        destdir: destination directory. Can be the path to the base of the layer or a
+            partial path somewhere within the layer.
+        extrapathhint: a path relative to the base of the layer to try
+    """
+    import bb.cookerdata
+
+    destdir = os.path.abspath(destdir)
+    destlayerdir = find_layerdir(destdir)
+
+    # Parse the specified layer's layer.conf file directly, in case the layer isn't in bblayers.conf
+    confdata = d.createCopy()
+    confdata.setVar('BBFILES', '')
+    confdata.setVar('LAYERDIR', destlayerdir)
+    destlayerconf = os.path.join(destlayerdir, "conf", "layer.conf")
+    confdata = bb.cookerdata.parse_config_file(destlayerconf, confdata)
+    pn = d.getVar('PN', True)
+
+    bbfilespecs = (confdata.getVar('BBFILES', True) or '').split()
+    if destdir == destlayerdir:
+        for bbfilespec in bbfilespecs:
+            if not bbfilespec.endswith('.bbappend'):
+                for match in glob.glob(bbfilespec):
+                    splitext = os.path.splitext(os.path.basename(match))
+                    if splitext[1] == '.bb':
+                        mpn = splitext[0].split('_')[0]
+                        if mpn == pn:
+                            return os.path.dirname(match)
+
+    # Try to make up a path that matches BBFILES
+    # this is a little crude, but better than nothing
+    bpn = d.getVar('BPN', True)
+    recipefn = os.path.basename(d.getVar('FILE', True))
+    pathoptions = [destdir]
+    if extrapathhint:
+        pathoptions.append(os.path.join(destdir, extrapathhint))
+    if destdir == destlayerdir:
+        pathoptions.append(os.path.join(destdir, 'recipes-%s' % bpn, bpn))
+        pathoptions.append(os.path.join(destdir, 'recipes', bpn))
+        pathoptions.append(os.path.join(destdir, bpn))
+    elif not destdir.endswith(('/' + pn, '/' + bpn)):
+        pathoptions.append(os.path.join(destdir, bpn))
+    closepath = ''
+    for pathoption in pathoptions:
+        bbfilepath = os.path.join(pathoption, 'test.bb')
+        for bbfilespec in bbfilespecs:
+            if fnmatch.fnmatchcase(bbfilepath, bbfilespec):
+                return pathoption
+    return None
+
 def get_bbappend_path(d, destlayerdir, wildcardver=False):
     """Determine how a bbappend for a recipe should be named and located within another layer"""
 
@@ -536,7 +620,7 @@
     bbappendlines = []
     if extralines:
         if isinstance(extralines, dict):
-            for name, value in extralines.iteritems():
+            for name, value in extralines.items():
                 bbappendlines.append((name, '=', value))
         else:
             # Do our best to split it
@@ -550,14 +634,14 @@
                     raise Exception('Invalid extralines value passed')
 
     def popline(varname):
-        for i in xrange(0, len(bbappendlines)):
+        for i in range(0, len(bbappendlines)):
             if bbappendlines[i][0] == varname:
                 line = bbappendlines.pop(i)
                 return line
         return None
 
     def appendline(varname, op, value):
-        for i in xrange(0, len(bbappendlines)):
+        for i in range(0, len(bbappendlines)):
             item = bbappendlines[i]
             if item[0] == varname:
                 bbappendlines[i] = (item[0], item[1], item[2] + ' ' + value)
@@ -576,7 +660,7 @@
     copyfiles = {}
     if srcfiles:
         instfunclines = []
-        for newfile, origsrcfile in srcfiles.iteritems():
+        for newfile, origsrcfile in srcfiles.items():
             srcfile = origsrcfile
             srcurientry = None
             if not srcfile:
@@ -644,7 +728,7 @@
 
                 if removevar in removevalues:
                     remove = removevalues[removevar]
-                    if isinstance(remove, basestring):
+                    if isinstance(remove, str):
                         if remove in splitval:
                             splitval.remove(remove)
                             changed = True
@@ -674,7 +758,7 @@
 
         varnames = [item[0] for item in bbappendlines]
         if removevalues:
-            varnames.extend(removevalues.keys())
+            varnames.extend(list(removevalues.keys()))
 
         with open(appendpath, 'r') as f:
             (updated, newlines) = bb.utils.edit_metadata(f, varnames, appendfile_varfunc)
@@ -699,7 +783,7 @@
     if copyfiles:
         if machine:
             destsubdir = os.path.join(destsubdir, machine)
-        for newfile, srcfile in copyfiles.iteritems():
+        for newfile, srcfile in copyfiles.items():
             filedest = os.path.join(appenddir, destsubdir, os.path.basename(srcfile))
             if os.path.abspath(newfile) != os.path.abspath(filedest):
                 bb.note('Copying %s to %s' % (newfile, filedest))
@@ -710,14 +794,16 @@
 
 
 def find_layerdir(fn):
-    """ Figure out relative path to base of layer for a file (e.g. a recipe)"""
-    pth = os.path.dirname(fn)
+    """ Figure out the path to the base of the layer containing a file (e.g. a recipe)"""
+    pth = fn
     layerdir = ''
     while pth:
         if os.path.exists(os.path.join(pth, 'conf', 'layer.conf')):
             layerdir = pth
             break
         pth = os.path.dirname(pth)
+        if pth == '/':
+            return None
     return layerdir
 
 
@@ -725,12 +811,12 @@
     """Replace common directory paths with appropriate variable references (e.g. /etc becomes ${sysconfdir})"""
     dirvars = {}
     # Sort by length so we get the variables we're interested in first
-    for var in sorted(d.keys(), key=len):
+    for var in sorted(list(d.keys()), key=len):
         if var.endswith('dir') and var.lower() == var:
             value = d.getVar(var, True)
             if value.startswith('/') and not '\n' in value and value not in dirvars:
                 dirvars[value] = var
-    for dirpath in sorted(dirvars.keys(), reverse=True):
+    for dirpath in sorted(list(dirvars.keys()), reverse=True):
         path = path.replace(dirpath, '${%s}' % dirvars[dirpath])
     return path
 
diff --git a/import-layers/yocto-poky/meta/lib/oe/rootfs.py b/import-layers/yocto-poky/meta/lib/oe/rootfs.py
index a95e1b7..a348b97 100644
--- a/import-layers/yocto-poky/meta/lib/oe/rootfs.py
+++ b/import-layers/yocto-poky/meta/lib/oe/rootfs.py
@@ -10,17 +10,17 @@
 import re
 
 
-class Rootfs(object):
+class Rootfs(object, metaclass=ABCMeta):
     """
     This is an abstract class. Do not instantiate this directly.
     """
-    __metaclass__ = ABCMeta
 
-    def __init__(self, d):
+    def __init__(self, d, progress_reporter=None):
         self.d = d
         self.pm = None
         self.image_rootfs = self.d.getVar('IMAGE_ROOTFS', True)
-        self.deploy_dir_image = self.d.getVar('DEPLOY_DIR_IMAGE', True)
+        self.deploydir = self.d.getVar('IMGDEPLOYDIR', True)
+        self.progress_reporter = progress_reporter
 
         self.install_order = Manifest.INSTALL_ORDER
 
@@ -40,51 +40,46 @@
     def _log_check(self):
         pass
 
-    def _log_check_warn(self):
-        r = re.compile('^(warn|Warn|NOTE: warn|NOTE: Warn|WARNING:)')
+    def _log_check_common(self, type, match):
+        # Ignore any lines containing log_check to avoid recursion, and ignore
+        # lines beginning with a + since sh -x may emit code which isn't
+        # actually executed, but may contain error messages
+        excludes = [ 'log_check', r'^\+' ]
+        if hasattr(self, 'log_check_expected_regexes'):
+            excludes.extend(self.log_check_expected_regexes)
+        excludes = [re.compile(x) for x in excludes]
+        r = re.compile(match)
         log_path = self.d.expand("${T}/log.do_rootfs")
+        messages = []
         with open(log_path, 'r') as log:
             for line in log:
-                if 'log_check' in line or 'NOTE:' in line:
+                for ee in excludes:
+                    m = ee.search(line)
+                    if m:
+                        break
+                if m:
                     continue
 
                 m = r.search(line)
                 if m:
-                    bb.warn('[log_check] %s: found a warning message in the logfile (keyword \'%s\'):\n[log_check] %s'
-				    % (self.d.getVar('PN', True), m.group(), line))
+                    messages.append('[log_check] %s' % line)
+        if messages:
+            if len(messages) == 1:
+                msg = '1 %s message' % type
+            else:
+                msg = '%d %s messages' % (len(messages), type)
+            msg = '[log_check] %s: found %s in the logfile:\n%s' % \
+                (self.d.getVar('PN', True), msg, ''.join(messages))
+            if type == 'error':
+                bb.fatal(msg)
+            else:
+                bb.warn(msg)
+
+    def _log_check_warn(self):
+        self._log_check_common('warning', '^(warn|Warn|WARNING:)')
 
     def _log_check_error(self):
-        r = re.compile(self.log_check_regex)
-        log_path = self.d.expand("${T}/log.do_rootfs")
-        with open(log_path, 'r') as log:
-            found_error = 0
-            message = "\n"
-            for line in log:
-                if 'log_check' in line:
-                    continue
-
-                if hasattr(self, 'log_check_expected_errors_regexes'):
-                    m = None
-                    for ee in self.log_check_expected_errors_regexes:
-                        m = re.search(ee, line)
-                        if m:
-                            break
-                    if m:
-                        continue
-
-                m = r.search(line)
-                if m:
-                    found_error = 1
-                    bb.warn('[log_check] In line: [%s]' % line)
-                    bb.warn('[log_check] %s: found an error message in the logfile (keyword \'%s\'):\n[log_check] %s'
-				    % (self.d.getVar('PN', True), m.group(), line))
-
-                if found_error >= 1 and found_error <= 5:
-                    message += line + '\n'
-                    found_error += 1
-
-                if found_error == 6:
-                    bb.fatal(message)
+        self._log_check_common('error', self.log_check_regex)
 
     def _insert_feed_uris(self):
         if bb.utils.contains("IMAGE_FEATURES", "package-management",
@@ -121,8 +116,10 @@
 
         bb.note("  Copying back package database...")
         for dir in dirs:
+            if not os.path.isdir(self.image_rootfs + '-orig' + dir):
+                continue
             bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(dir))
-            shutil.copytree(self.image_rootfs + '-orig' + dir, self.image_rootfs + dir)
+            shutil.copytree(self.image_rootfs + '-orig' + dir, self.image_rootfs + dir, symlinks=True)
 
         cpath = oe.cachedpath.CachedPath()
         # Copy files located in /usr/lib/debug or /usr/src/debug
@@ -185,16 +182,19 @@
 
         bb.utils.mkdirhier(self.image_rootfs)
 
-        bb.utils.mkdirhier(self.deploy_dir_image)
+        bb.utils.mkdirhier(self.deploydir)
 
         shutil.copytree(postinst_intercepts_dir, intercepts_dir)
 
         shutil.copy(self.d.expand("${COREBASE}/meta/files/deploydir_readme.txt"),
-                    self.deploy_dir_image +
+                    self.deploydir +
                     "/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt")
 
         execute_pre_post_process(self.d, pre_process_cmds)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         # call the package manager dependent create method
         self._create()
 
@@ -209,6 +209,9 @@
 
         execute_pre_post_process(self.d, post_process_cmds)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         if bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
                          True, False, self.d):
             delayed_postinsts = self._get_delayed_postinsts()
@@ -222,6 +225,9 @@
 
         self._uninstall_unneeded()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self._insert_feed_uris()
 
         self._run_ldconfig()
@@ -232,6 +238,10 @@
         self._cleanup()
         self._log_check()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
+
     def _uninstall_unneeded(self):
         # Remove unneeded init script symlinks
         delayed_postinsts = self._get_delayed_postinsts()
@@ -243,7 +253,9 @@
 
         image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
                                         True, False, self.d)
-        if image_rorfs:
+        image_rorfs_force = self.d.getVar('FORCE_RO_REMOVE', True)
+
+        if image_rorfs or image_rorfs_force == "1":
             # Remove components that we don't need if it's a read-only rootfs
             unneeded_pkgs = self.d.getVar("ROOTFS_RO_UNNEEDED", True).split()
             pkgs_installed = image_list_installed_packages(self.d)
@@ -363,8 +375,8 @@
 
 
 class RpmRootfs(Rootfs):
-    def __init__(self, d, manifest_dir):
-        super(RpmRootfs, self).__init__(d)
+    def __init__(self, d, manifest_dir, progress_reporter=None):
+        super(RpmRootfs, self).__init__(d, progress_reporter)
         self.log_check_regex = '(unpacking of archive failed|Cannot find package'\
                                '|exit 1|ERROR: |Error: |Error |ERROR '\
                                '|Failed |Failed: |Failed$|Failed\(\d+\):)'
@@ -422,11 +434,17 @@
 
         execute_pre_post_process(self.d, rpm_pre_process_cmds)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self.pm.dump_all_available_pkgs()
 
         if self.inc_rpm_image_gen == "1":
             self._create_incremental(pkgs_to_install)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self.pm.update()
 
         pkgs = []
@@ -437,12 +455,24 @@
             else:
                 pkgs += pkgs_to_install[pkg_type]
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self.pm.install(pkgs)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self.pm.install(pkgs_attempt, True)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self.pm.install_complementary()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self._setup_dbg_rootfs(['/etc/rpm', '/var/lib/rpm', '/var/lib/smart'])
 
         execute_pre_post_process(self.d, rpm_post_process_cmds)
@@ -454,6 +484,10 @@
 
         self.pm.rpm_setup_smart_target_config()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
+
     @staticmethod
     def _depends_list():
         return ['DEPLOY_DIR_RPM', 'INC_RPM_IMAGE_GEN', 'RPM_PREPROCESS_COMMANDS',
@@ -474,32 +508,6 @@
         # already saved in /etc/rpm-postinsts
         pass
 
-    def _log_check_error(self):
-        r = re.compile('(unpacking of archive failed|Cannot find package|exit 1|ERR|Fail)')
-        log_path = self.d.expand("${T}/log.do_rootfs")
-        with open(log_path, 'r') as log:
-            found_error = 0
-            message = "\n"
-            for line in log.read().split('\n'):
-                if 'log_check' in line:
-                    continue
-                # sh -x may emit code which isn't actually executed
-                if line.startswith('+'):
-		    continue
-
-                m = r.search(line)
-                if m:
-                    found_error = 1
-                    bb.warn('log_check: There were error messages in the logfile')
-                    bb.warn('log_check: Matched keyword: [%s]\n\n' % m.group())
-
-                if found_error >= 1 and found_error <= 5:
-                    message += line + '\n'
-                    found_error += 1
-
-                if found_error == 6:
-                    bb.fatal(message)
-
     def _log_check(self):
         self._log_check_warn()
         self._log_check_error()
@@ -524,8 +532,8 @@
            bb.utils.remove(self.pm.install_dir_path, True)
 
 class DpkgOpkgRootfs(Rootfs):
-    def __init__(self, d):
-        super(DpkgOpkgRootfs, self).__init__(d)
+    def __init__(self, d, progress_reporter=None):
+        super(DpkgOpkgRootfs, self).__init__(d, progress_reporter)
 
     def _get_pkgs_postinsts(self, status_file):
         def _get_pkg_depends_list(pkg_depends):
@@ -565,7 +573,7 @@
                     pkg_depends = m_depends.group(1)
 
         # remove package dependencies not in postinsts
-        pkg_names = pkgs.keys()
+        pkg_names = list(pkgs.keys())
         for pkg_name in pkg_names:
             deps = pkgs[pkg_name][:]
 
@@ -598,7 +606,7 @@
             pkgs = self._get_pkgs_postinsts(status_file)
         if pkgs:
             root = "__packagegroup_postinst__"
-            pkgs[root] = pkgs.keys()
+            pkgs[root] = list(pkgs.keys())
             _dep_resolve(pkgs, root, pkg_list, [])
             pkg_list.remove(root)
 
@@ -619,10 +627,10 @@
             num += 1
 
 class DpkgRootfs(DpkgOpkgRootfs):
-    def __init__(self, d, manifest_dir):
-        super(DpkgRootfs, self).__init__(d)
+    def __init__(self, d, manifest_dir, progress_reporter=None):
+        super(DpkgRootfs, self).__init__(d, progress_reporter)
         self.log_check_regex = '^E:'
-        self.log_check_expected_errors_regexes = \
+        self.log_check_expected_regexes = \
         [
             "^E: Unmet dependencies."
         ]
@@ -648,15 +656,31 @@
 
         execute_pre_post_process(self.d, deb_pre_process_cmds)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+            # Don't support incremental, so skip that
+            self.progress_reporter.next_stage()
+
         self.pm.update()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         for pkg_type in self.install_order:
             if pkg_type in pkgs_to_install:
                 self.pm.install(pkgs_to_install[pkg_type],
                                 [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
 
+        if self.progress_reporter:
+            # Don't support attemptonly, so skip that
+            self.progress_reporter.next_stage()
+            self.progress_reporter.next_stage()
+
         self.pm.install_complementary()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self._setup_dbg_rootfs(['/var/lib/dpkg'])
 
         self.pm.fix_broken_dependencies()
@@ -667,6 +691,9 @@
 
         execute_pre_post_process(self.d, deb_post_process_cmds)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
     @staticmethod
     def _depends_list():
         return ['DEPLOY_DIR_DEB', 'DEB_SDK_ARCH', 'APTCONF_TARGET', 'APT_ARGS', 'DPKG_ARCH', 'DEB_PREPROCESS_COMMANDS', 'DEB_POSTPROCESS_COMMANDS']
@@ -692,8 +719,8 @@
 
 
 class OpkgRootfs(DpkgOpkgRootfs):
-    def __init__(self, d, manifest_dir):
-        super(OpkgRootfs, self).__init__(d)
+    def __init__(self, d, manifest_dir, progress_reporter=None):
+        super(OpkgRootfs, self).__init__(d, progress_reporter)
         self.log_check_regex = '(exit 1|Collected errors)'
 
         self.manifest = OpkgManifest(d, manifest_dir)
@@ -887,13 +914,24 @@
 
         execute_pre_post_process(self.d, opkg_pre_process_cmds)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+            # Steps are a bit different in order, skip next
+            self.progress_reporter.next_stage()
+
         self.pm.update()
 
         self.pm.handle_bad_recommendations()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         if self.inc_opkg_image_gen == "1":
             self._remove_extra_packages(pkgs_to_install)
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         for pkg_type in self.install_order:
             if pkg_type in pkgs_to_install:
                 # For multilib, we perform a sanity test before final install
@@ -905,15 +943,24 @@
                 self.pm.install(pkgs_to_install[pkg_type],
                                 [False, True][pkg_type == Manifest.PKG_TYPE_ATTEMPT_ONLY])
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
         self.pm.install_complementary()
 
-        self._setup_dbg_rootfs(['/var/lib/opkg'])
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
+        self._setup_dbg_rootfs(['/etc', '/var/lib/opkg', '/usr/lib/ssl'])
 
         execute_pre_post_process(self.d, opkg_post_process_cmds)
 
         if self.inc_opkg_image_gen == "1":
             self.pm.backup_packaging_data()
 
+        if self.progress_reporter:
+            self.progress_reporter.next_stage()
+
     @staticmethod
     def _depends_list():
         return ['IPKGCONF_SDK', 'IPK_FEED_URIS', 'DEPLOY_DIR_IPK', 'IPKGCONF_TARGET', 'INC_IPK_IMAGE_GEN', 'OPKG_ARGS', 'OPKGLIBDIR', 'OPKG_PREPROCESS_COMMANDS', 'OPKG_POSTPROCESS_COMMANDS', 'OPKGLIBDIR']
@@ -949,16 +996,16 @@
     cls = get_class_for_type(img_type)
     return cls._depends_list()
 
-def create_rootfs(d, manifest_dir=None):
+def create_rootfs(d, manifest_dir=None, progress_reporter=None):
     env_bkp = os.environ.copy()
 
     img_type = d.getVar('IMAGE_PKGTYPE', True)
     if img_type == "rpm":
-        RpmRootfs(d, manifest_dir).create()
+        RpmRootfs(d, manifest_dir, progress_reporter).create()
     elif img_type == "ipk":
-        OpkgRootfs(d, manifest_dir).create()
+        OpkgRootfs(d, manifest_dir, progress_reporter).create()
     elif img_type == "deb":
-        DpkgRootfs(d, manifest_dir).create()
+        DpkgRootfs(d, manifest_dir, progress_reporter).create()
 
     os.environ.clear()
     os.environ.update(env_bkp)
diff --git a/import-layers/yocto-poky/meta/lib/oe/sdk.py b/import-layers/yocto-poky/meta/lib/oe/sdk.py
index f15fbdb..c74525f 100644
--- a/import-layers/yocto-poky/meta/lib/oe/sdk.py
+++ b/import-layers/yocto-poky/meta/lib/oe/sdk.py
@@ -8,9 +8,7 @@
 import traceback
 
 
-class Sdk(object):
-    __metaclass__ = ABCMeta
-
+class Sdk(object, metaclass=ABCMeta):
     def __init__(self, d, manifest_dir):
         self.d = d
         self.sdk_output = self.d.getVar('SDK_OUTPUT', True)
@@ -155,14 +153,16 @@
 
         execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND", True))
 
-        self.target_pm.remove_packaging_data()
+        if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+            self.target_pm.remove_packaging_data()
 
         bb.note("Installing NATIVESDK packages")
         self._populate_sysroot(self.host_pm, self.host_manifest)
 
         execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND", True))
 
-        self.host_pm.remove_packaging_data()
+        if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+            self.host_pm.remove_packaging_data()
 
         # Move host RPM library data
         native_rpm_state_dir = os.path.join(self.sdk_output,
@@ -232,14 +232,16 @@
 
         execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND", True))
 
-        self.target_pm.remove_packaging_data()
+        if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+            self.target_pm.remove_packaging_data()
 
         bb.note("Installing NATIVESDK packages")
         self._populate_sysroot(self.host_pm, self.host_manifest)
 
         execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND", True))
 
-        self.host_pm.remove_packaging_data()
+        if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+            self.host_pm.remove_packaging_data()
 
         target_sysconfdir = os.path.join(self.sdk_target_sysroot, self.sysconfdir)
         host_sysconfdir = os.path.join(self.sdk_host_sysroot, self.sysconfdir)
@@ -247,12 +249,12 @@
         self.mkdirhier(target_sysconfdir)
         shutil.copy(self.target_conf, target_sysconfdir)
         os.chmod(os.path.join(target_sysconfdir,
-                              os.path.basename(self.target_conf)), 0644)
+                              os.path.basename(self.target_conf)), 0o644)
 
         self.mkdirhier(host_sysconfdir)
         shutil.copy(self.host_conf, host_sysconfdir)
         os.chmod(os.path.join(host_sysconfdir,
-                              os.path.basename(self.host_conf)), 0644)
+                              os.path.basename(self.host_conf)), 0o644)
 
         native_opkg_state_dir = os.path.join(self.sdk_output, self.sdk_native_path,
                                              self.d.getVar('localstatedir_nativesdk', True).strip('/'),
@@ -314,6 +316,9 @@
 
         self._copy_apt_dir_to(os.path.join(self.sdk_target_sysroot, "etc", "apt"))
 
+        if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+            self.target_pm.remove_packaging_data()
+
         bb.note("Installing NATIVESDK packages")
         self._populate_sysroot(self.host_pm, self.host_manifest)
 
@@ -322,6 +327,9 @@
         self._copy_apt_dir_to(os.path.join(self.sdk_output, self.sdk_native_path,
                                            "etc", "apt"))
 
+        if not bb.utils.contains("SDKIMAGE_FEATURES", "package-management", True, False, self.d):
+            self.host_pm.remove_packaging_data()
+
         native_dpkg_state_dir = os.path.join(self.sdk_output, self.sdk_native_path,
                                              "var", "lib", "dpkg")
         self.mkdirhier(native_dpkg_state_dir)
diff --git a/import-layers/yocto-poky/meta/lib/oe/sstatesig.py b/import-layers/yocto-poky/meta/lib/oe/sstatesig.py
index 01dce66..8224e3a 100644
--- a/import-layers/yocto-poky/meta/lib/oe/sstatesig.py
+++ b/import-layers/yocto-poky/meta/lib/oe/sstatesig.py
@@ -130,7 +130,9 @@
         super(bb.siggen.SignatureGeneratorBasicHash, self).set_taskdata(coredata)
 
     def dump_sigs(self, dataCache, options):
-        self.dump_lockedsigs()
+        sigfile = os.getcwd() + "/locked-sigs.inc"
+        bb.plain("Writing locked sigs to %s" % sigfile)
+        self.dump_lockedsigs(sigfile)
         return super(bb.siggen.SignatureGeneratorBasicHash, self).dump_sigs(dataCache, options)
 
     def get_taskhash(self, fn, task, deps, dataCache):
@@ -181,11 +183,7 @@
             return
         super(bb.siggen.SignatureGeneratorBasicHash, self).dump_sigtask(fn, task, stampbase, runtime)
 
-    def dump_lockedsigs(self, sigfile=None, taskfilter=None):
-        if not sigfile:
-            sigfile = os.getcwd() + "/locked-sigs.inc"
-
-        bb.plain("Writing locked sigs to %s" % sigfile)
+    def dump_lockedsigs(self, sigfile, taskfilter=None):
         types = {}
         for k in self.runtaskdeps:
             if taskfilter:
@@ -210,7 +208,7 @@
                         continue
                     f.write("    " + self.lockedpnmap[fn] + ":" + task + ":" + self.taskhash[k] + " \\\n")
                 f.write('    "\n')
-            f.write('SIGGEN_LOCKEDSIGS_TYPES_%s = "%s"' % (self.machine, " ".join(types.keys())))
+            f.write('SIGGEN_LOCKEDSIGS_TYPES_%s = "%s"' % (self.machine, " ".join(list(types.keys()))))
 
     def checkhashes(self, missed, ret, sq_fn, sq_task, sq_hash, sq_hashfn, d):
         warn_msgs = []
@@ -220,7 +218,7 @@
         for task in range(len(sq_fn)):
             if task not in ret:
                 for pn in self.lockedsigs:
-                    if sq_hash[task] in self.lockedsigs[pn].itervalues():
+                    if sq_hash[task] in iter(self.lockedsigs[pn].values()):
                         if sq_task[task] == 'do_shared_workdir':
                             continue
                         sstate_missing_msgs.append("Locked sig is set for %s:%s (%s) yet not in sstate cache?"
diff --git a/import-layers/yocto-poky/meta/lib/oe/terminal.py b/import-layers/yocto-poky/meta/lib/oe/terminal.py
index 634daa9..3901ad3 100644
--- a/import-layers/yocto-poky/meta/lib/oe/terminal.py
+++ b/import-layers/yocto-poky/meta/lib/oe/terminal.py
@@ -25,9 +25,7 @@
         return bool(cls.command)
 
 
-class Terminal(Popen):
-    __metaclass__ = Registry
-
+class Terminal(Popen, metaclass=Registry):
     def __init__(self, sh_cmd, title=None, env=None, d=None):
         fmt_sh_cmd = self.format_command(sh_cmd, title)
         try:
@@ -41,7 +39,7 @@
 
     def format_command(self, sh_cmd, title):
         fmt = {'title': title or 'Terminal', 'command': sh_cmd}
-        if isinstance(self.command, basestring):
+        if isinstance(self.command, str):
             return shlex.split(self.command.format(**fmt))
         else:
             return [element.format(**fmt) for element in self.command]
@@ -53,7 +51,7 @@
             raise UnsupportedTerminal(self.name)
 
 class Gnome(XTerminal):
-    command = 'gnome-terminal -t "{title}" --disable-factory -x {command}'
+    command = 'gnome-terminal -t "{title}" -x {command}'
     priority = 2
 
     def __init__(self, sh_cmd, title=None, env=None, d=None):
@@ -63,12 +61,28 @@
         # Once fixed on the gnome-terminal project, this should be removed.
         if os.getenv('LC_ALL'): os.putenv('LC_ALL','')
 
-        # Check version
-        vernum = check_terminal_version("gnome-terminal")
-        if vernum and LooseVersion(vernum) >= '3.10':
-            logger.debug(1, 'Gnome-Terminal 3.10 or later does not support --disable-factory')
-            self.command = 'gnome-terminal -t "{title}" -x {command}'
-        XTerminal.__init__(self, sh_cmd, title, env, d)
+        # We need to know when the command completes but gnome-terminal gives us no way 
+        # to do this. We therefore write the pid to a file using a "phonehome" wrapper
+        # script, then monitor the pid until it exits. Thanks gnome!
+        import tempfile
+        pidfile = tempfile.NamedTemporaryFile(delete = False).name
+        try:
+            sh_cmd = "oe-gnome-terminal-phonehome " + pidfile + " " + sh_cmd
+            XTerminal.__init__(self, sh_cmd, title, env, d)
+            while os.stat(pidfile).st_size <= 0:
+                continue
+            with open(pidfile, "r") as f:
+                pid = int(f.readline())
+        finally:
+            os.unlink(pidfile)
+
+        import time
+        while True:
+            try:
+                os.kill(pid, 0)
+                time.sleep(0.1)
+            except OSError:
+               return
 
 class Mate(XTerminal):
     command = 'mate-terminal -t "{title}" -x {command}'
@@ -248,7 +262,7 @@
         newenv["LANG"] = "C"
         p = sub.Popen(['sh', '-c', cmdversion], stdout=sub.PIPE, stderr=sub.PIPE, env=newenv)
         out, err = p.communicate()
-        ver_info = out.rstrip().split('\n')
+        ver_info = out.decode().rstrip().split('\n')
     except OSError as exc:
         import errno
         if exc.errno == errno.ENOENT:
diff --git a/import-layers/yocto-poky/meta/lib/oe/tests/test_elf.py b/import-layers/yocto-poky/meta/lib/oe/tests/test_elf.py
new file mode 100644
index 0000000..1f59037
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oe/tests/test_elf.py
@@ -0,0 +1,21 @@
+import unittest
+import oe.qa
+
+class TestElf(unittest.TestCase):
+    def test_machine_name(self):
+        """
+        Test elf_machine_to_string()
+        """
+        self.assertEqual(oe.qa.elf_machine_to_string(0x02), "SPARC")
+        self.assertEqual(oe.qa.elf_machine_to_string(0x03), "x86")
+        self.assertEqual(oe.qa.elf_machine_to_string(0x08), "MIPS")
+        self.assertEqual(oe.qa.elf_machine_to_string(0x14), "PowerPC")
+        self.assertEqual(oe.qa.elf_machine_to_string(0x28), "ARM")
+        self.assertEqual(oe.qa.elf_machine_to_string(0x2A), "SuperH")
+        self.assertEqual(oe.qa.elf_machine_to_string(0x32), "IA-64")
+        self.assertEqual(oe.qa.elf_machine_to_string(0x3E), "x86-64")
+        self.assertEqual(oe.qa.elf_machine_to_string(0xB7), "AArch64")
+
+        self.assertEqual(oe.qa.elf_machine_to_string(0x00), "Unknown (0)")
+        self.assertEqual(oe.qa.elf_machine_to_string(0xDEADBEEF), "Unknown (3735928559)")
+        self.assertEqual(oe.qa.elf_machine_to_string("foobar"), "Unknown ('foobar')")
diff --git a/import-layers/yocto-poky/meta/lib/oe/tests/test_path.py b/import-layers/yocto-poky/meta/lib/oe/tests/test_path.py
index 3d41ce1..44d0681 100644
--- a/import-layers/yocto-poky/meta/lib/oe/tests/test_path.py
+++ b/import-layers/yocto-poky/meta/lib/oe/tests/test_path.py
@@ -55,7 +55,7 @@
         for d in self.DIRS:
             os.mkdir(os.path.join(self.root, d))
         for f in self.FILES:
-            file(os.path.join(self.root, f), "w")
+            open(os.path.join(self.root, f), "w")
         for l in self.LINKS:
             os.symlink(l[1], os.path.join(self.root, l[0]))
 
@@ -85,5 +85,5 @@
 
     def test_loop(self):
         for e in self.EXCEPTIONS:
-            self.assertRaisesRegexp(OSError, r'\[Errno %u\]' % e[1],
+            self.assertRaisesRegex(OSError, r'\[Errno %u\]' % e[1],
                                     self.__realpath, e[0], False, False)
diff --git a/import-layers/yocto-poky/meta/lib/oe/types.py b/import-layers/yocto-poky/meta/lib/oe/types.py
index 7f47c17..4ae58ac 100644
--- a/import-layers/yocto-poky/meta/lib/oe/types.py
+++ b/import-layers/yocto-poky/meta/lib/oe/types.py
@@ -33,7 +33,7 @@
     Acts as a multiple choice for the user.  To use this, set the variable
     type flag to 'choice', and set the 'choices' flag to a space separated
     list of valid values."""
-    if not isinstance(value, basestring):
+    if not isinstance(value, str):
         raise TypeError("choice accepts a string, not '%s'" % type(value))
 
     value = value.lower()
@@ -106,7 +106,7 @@
     Valid values for false: 'no', 'n', 'false', 'f', '0'
     """
 
-    if not isinstance(value, basestring):
+    if not isinstance(value, str):
         raise TypeError("boolean accepts a string, not '%s'" % type(value))
 
     value = value.lower()
diff --git a/import-layers/yocto-poky/meta/lib/oe/utils.py b/import-layers/yocto-poky/meta/lib/oe/utils.py
index 30d3062..d6545b1 100644
--- a/import-layers/yocto-poky/meta/lib/oe/utils.py
+++ b/import-layers/yocto-poky/meta/lib/oe/utils.py
@@ -23,13 +23,13 @@
         return iffalse
 
 def conditional(variable, checkvalue, truevalue, falsevalue, d):
-    if d.getVar(variable,1) == checkvalue:
+    if d.getVar(variable, True) == checkvalue:
         return truevalue
     else:
         return falsevalue
 
 def less_or_equal(variable, checkvalue, truevalue, falsevalue, d):
-    if float(d.getVar(variable,1)) <= float(checkvalue):
+    if float(d.getVar(variable, True)) <= float(checkvalue):
         return truevalue
     else:
         return falsevalue
@@ -46,7 +46,7 @@
     val2 = d.getVar(variable2, True)
     val1 = set(val1.split())
     val2 = set(val2.split())
-    if isinstance(checkvalue, basestring):
+    if isinstance(checkvalue, str):
         checkvalue = set(checkvalue.split())
     else:
         checkvalue = set(checkvalue)
@@ -85,11 +85,11 @@
 
 def str_filter(f, str, d):
     from re import match
-    return " ".join(filter(lambda x: match(f, x, 0), str.split()))
+    return " ".join([x for x in str.split() if match(f, x, 0)])
 
 def str_filter_out(f, str, d):
     from re import match
-    return " ".join(filter(lambda x: not match(f, x, 0), str.split()))
+    return " ".join([x for x in str.split() if not match(f, x, 0)])
 
 def param_bool(cfg, field, dflt = None):
     """Lookup <field> in <cfg> map and convert it to a boolean; take
@@ -134,7 +134,7 @@
     PN-dbg PN-doc PN-locale-eb-gb removed.
     """
     pn = d.getVar('PN', True)
-    blacklist = map(lambda suffix: pn + suffix, ('', '-dbg', '-dev', '-doc', '-locale', '-staticdev'))
+    blacklist = [pn + suffix for suffix in ('', '-dbg', '-dev', '-doc', '-locale', '-staticdev')]
     localepkg = pn + "-locale-"
     pkgs = []
 
@@ -235,7 +235,7 @@
 # so implement a version here
 #
 
-from Queue import Queue
+from queue import Queue
 from threading import Thread
 
 class ThreadedWorker(Thread):
@@ -249,7 +249,7 @@
         self.worker_end = worker_end
 
     def run(self):
-        from Queue import Empty
+        from queue import Empty
 
         if self.worker_init is not None:
             self.worker_init(self)
@@ -264,8 +264,8 @@
 
             try:
                 func(self, *args, **kargs)
-            except Exception, e:
-                print e
+            except Exception as e:
+                print(e)
             finally:
                 self.tasks.task_done()
 
@@ -304,3 +304,16 @@
     with open(ldsoconf, "w") as f:
         f.write(d.getVar("base_libdir", True) + '\n')
         f.write(d.getVar("libdir", True) + '\n')
+
+class ImageQAFailed(bb.build.FuncFailed):
+    def __init__(self, description, name=None, logfile=None):
+        self.description = description
+        self.name = name
+        self.logfile=logfile
+
+    def __str__(self):
+        msg = 'Function failed: %s' % self.name
+        if self.description:
+            msg = msg + ' (%s)' % self.description
+
+        return msg
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/__init__.py b/import-layers/yocto-poky/meta/lib/oeqa/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/import-layers/yocto-poky/meta/lib/oeqa/__init__.py
+++ /dev/null
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/buildperf/__init__.py b/import-layers/yocto-poky/meta/lib/oeqa/buildperf/__init__.py
new file mode 100644
index 0000000..605f429
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/buildperf/__init__.py
@@ -0,0 +1,19 @@
+# Copyright (c) 2016, Intel Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+"""Build performance tests"""
+from .base import (BuildPerfTestCase,
+                   BuildPerfTestLoader,
+                   BuildPerfTestResult,
+                   BuildPerfTestRunner,
+                   KernelDropCaches,
+                   runCmd2)
+from .test_basic import *
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/buildperf/base.py b/import-layers/yocto-poky/meta/lib/oeqa/buildperf/base.py
new file mode 100644
index 0000000..59dd025
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/buildperf/base.py
@@ -0,0 +1,551 @@
+# Copyright (c) 2016, Intel Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+"""Build performance test base classes and functionality"""
+import glob
+import json
+import logging
+import os
+import re
+import resource
+import shutil
+import socket
+import time
+import traceback
+import unittest
+from datetime import datetime, timedelta
+from functools import partial
+from multiprocessing import Process
+from multiprocessing import SimpleQueue
+
+import oe.path
+from oeqa.utils.commands import CommandError, runCmd, get_bb_vars
+from oeqa.utils.git import GitError, GitRepo
+
+# Get logger for this module
+log = logging.getLogger('build-perf')
+
+# Our own version of runCmd which does not raise AssertErrors which would cause
+# errors to interpreted as failures
+runCmd2 = partial(runCmd, assert_error=False)
+
+
+class KernelDropCaches(object):
+    """Container of the functions for dropping kernel caches"""
+    sudo_passwd = None
+
+    @classmethod
+    def check(cls):
+        """Check permssions for dropping kernel caches"""
+        from getpass import getpass
+        from locale import getdefaultlocale
+        cmd = ['sudo', '-k', '-n', 'tee', '/proc/sys/vm/drop_caches']
+        ret = runCmd2(cmd, ignore_status=True, data=b'0')
+        if ret.output.startswith('sudo:'):
+            pass_str = getpass(
+                "\nThe script requires sudo access to drop caches between "
+                "builds (echo 3 > /proc/sys/vm/drop_caches).\n"
+                "Please enter your sudo password: ")
+            cls.sudo_passwd = bytes(pass_str, getdefaultlocale()[1])
+
+    @classmethod
+    def drop(cls):
+        """Drop kernel caches"""
+        cmd = ['sudo', '-k']
+        if cls.sudo_passwd:
+            cmd.append('-S')
+            input_data = cls.sudo_passwd + b'\n'
+        else:
+            cmd.append('-n')
+            input_data = b''
+        cmd += ['tee', '/proc/sys/vm/drop_caches']
+        input_data += b'3'
+        runCmd2(cmd, data=input_data)
+
+
+def str_to_fn(string):
+    """Convert string to a sanitized filename"""
+    return re.sub(r'(\W+)', '-', string, flags=re.LOCALE)
+
+
+class ResultsJsonEncoder(json.JSONEncoder):
+    """Extended encoder for build perf test results"""
+    unix_epoch = datetime.utcfromtimestamp(0)
+
+    def default(self, obj):
+        """Encoder for our types"""
+        if isinstance(obj, datetime):
+            # NOTE: we assume that all timestamps are in UTC time
+            return (obj - self.unix_epoch).total_seconds()
+        if isinstance(obj, timedelta):
+            return obj.total_seconds()
+        return json.JSONEncoder.default(self, obj)
+
+
+class BuildPerfTestResult(unittest.TextTestResult):
+    """Runner class for executing the individual tests"""
+    # List of test cases to run
+    test_run_queue = []
+
+    def __init__(self, out_dir, *args, **kwargs):
+        super(BuildPerfTestResult, self).__init__(*args, **kwargs)
+
+        self.out_dir = out_dir
+        # Get Git parameters
+        try:
+            self.repo = GitRepo('.')
+        except GitError:
+            self.repo = None
+        self.git_commit, self.git_commit_count, self.git_branch = \
+                self.get_git_revision()
+        self.hostname = socket.gethostname()
+        self.product = os.getenv('OE_BUILDPERFTEST_PRODUCT', 'oe-core')
+        self.start_time = self.elapsed_time = None
+        self.successes = []
+        log.info("Using Git branch:commit %s:%s (%s)", self.git_branch,
+                 self.git_commit, self.git_commit_count)
+
+    def get_git_revision(self):
+        """Get git branch and commit under testing"""
+        commit = os.getenv('OE_BUILDPERFTEST_GIT_COMMIT')
+        commit_cnt = os.getenv('OE_BUILDPERFTEST_GIT_COMMIT_COUNT')
+        branch = os.getenv('OE_BUILDPERFTEST_GIT_BRANCH')
+        if not self.repo and (not commit or not commit_cnt or not branch):
+            log.info("The current working directory doesn't seem to be a Git "
+                     "repository clone. You can specify branch and commit "
+                     "displayed in test results with OE_BUILDPERFTEST_GIT_BRANCH, "
+                     "OE_BUILDPERFTEST_GIT_COMMIT and "
+                     "OE_BUILDPERFTEST_GIT_COMMIT_COUNT environment variables")
+        else:
+            if not commit:
+                commit = self.repo.rev_parse('HEAD^0')
+                commit_cnt = self.repo.run_cmd(['rev-list', '--count', 'HEAD^0'])
+            if not branch:
+                branch = self.repo.get_current_branch()
+                if not branch:
+                    log.debug('Currently on detached HEAD')
+        return str(commit), str(commit_cnt), str(branch)
+
+    def addSuccess(self, test):
+        """Record results from successful tests"""
+        super(BuildPerfTestResult, self).addSuccess(test)
+        self.successes.append((test, None))
+
+    def startTest(self, test):
+        """Pre-test hook"""
+        test.base_dir = self.out_dir
+        os.mkdir(test.out_dir)
+        log.info("Executing test %s: %s", test.name, test.shortDescription())
+        self.stream.write(datetime.now().strftime("[%Y-%m-%d %H:%M:%S] "))
+        super(BuildPerfTestResult, self).startTest(test)
+
+    def startTestRun(self):
+        """Pre-run hook"""
+        self.start_time = datetime.utcnow()
+
+    def stopTestRun(self):
+        """Pre-run hook"""
+        self.elapsed_time = datetime.utcnow() - self.start_time
+        self.write_results_json()
+
+    def all_results(self):
+        result_map = {'SUCCESS': self.successes,
+                      'FAIL': self.failures,
+                      'ERROR': self.errors,
+                      'EXP_FAIL': self.expectedFailures,
+                      'UNEXP_SUCCESS': self.unexpectedSuccesses,
+                      'SKIPPED': self.skipped}
+        for status, tests in result_map.items():
+            for test in tests:
+                yield (status, test)
+
+
+    def update_globalres_file(self, filename):
+        """Write results to globalres csv file"""
+        # Map test names to time and size columns in globalres
+        # The tuples represent index and length of times and sizes
+        # respectively
+        gr_map = {'test1': ((0, 1), (8, 1)),
+                  'test12': ((1, 1), (None, None)),
+                  'test13': ((2, 1), (9, 1)),
+                  'test2': ((3, 1), (None, None)),
+                  'test3': ((4, 3), (None, None)),
+                  'test4': ((7, 1), (10, 2))}
+
+        if self.repo:
+            git_tag_rev = self.repo.run_cmd(['describe', self.git_commit])
+        else:
+            git_tag_rev = self.git_commit
+
+        values = ['0'] * 12
+        for status, (test, msg) in self.all_results():
+            if status in ['ERROR', 'SKIPPED']:
+                continue
+            (t_ind, t_len), (s_ind, s_len) = gr_map[test.name]
+            if t_ind is not None:
+                values[t_ind:t_ind + t_len] = test.times
+            if s_ind is not None:
+                values[s_ind:s_ind + s_len] = test.sizes
+
+        log.debug("Writing globalres log to %s", filename)
+        with open(filename, 'a') as fobj:
+            fobj.write('{},{}:{},{},'.format(self.hostname,
+                                             self.git_branch,
+                                             self.git_commit,
+                                             git_tag_rev))
+            fobj.write(','.join(values) + '\n')
+
+    def write_results_json(self):
+        """Write test results into a json-formatted file"""
+        results = {'tester_host': self.hostname,
+                   'git_branch': self.git_branch,
+                   'git_commit': self.git_commit,
+                   'git_commit_count': self.git_commit_count,
+                   'product': self.product,
+                   'start_time': self.start_time,
+                   'elapsed_time': self.elapsed_time}
+
+        tests = {}
+        for status, (test, reason) in self.all_results():
+            tests[test.name] = {'name': test.name,
+                                'description': test.shortDescription(),
+                                'status': status,
+                                'start_time': test.start_time,
+                                'elapsed_time': test.elapsed_time,
+                                'cmd_log_file': os.path.relpath(test.cmd_log_file,
+                                                                self.out_dir),
+                                'measurements': test.measurements}
+        results['tests'] = tests
+
+        with open(os.path.join(self.out_dir, 'results.json'), 'w') as fobj:
+            json.dump(results, fobj, indent=4, sort_keys=True,
+                      cls=ResultsJsonEncoder)
+
+
+    def git_commit_results(self, repo_path, branch=None, tag=None):
+        """Commit results into a Git repository"""
+        repo = GitRepo(repo_path, is_topdir=True)
+        if not branch:
+            branch = self.git_branch
+        else:
+            # Replace keywords
+            branch = branch.format(git_branch=self.git_branch,
+                                   tester_host=self.hostname)
+
+        log.info("Committing test results into %s %s", repo_path, branch)
+        tmp_index = os.path.join(repo_path, '.git', 'index.oe-build-perf')
+        try:
+            # Create new commit object from the new results
+            env_update = {'GIT_INDEX_FILE': tmp_index,
+                          'GIT_WORK_TREE': self.out_dir}
+            repo.run_cmd('add .', env_update)
+            tree = repo.run_cmd('write-tree', env_update)
+            parent = repo.rev_parse(branch)
+            msg = "Results of {}:{}\n".format(self.git_branch, self.git_commit)
+            git_cmd = ['commit-tree', tree, '-m', msg]
+            if parent:
+                git_cmd += ['-p', parent]
+            commit = repo.run_cmd(git_cmd, env_update)
+
+            # Update branch head
+            git_cmd = ['update-ref', 'refs/heads/' + branch, commit]
+            if parent:
+                git_cmd.append(parent)
+            repo.run_cmd(git_cmd)
+
+            # Update current HEAD, if we're on branch 'branch'
+            if repo.get_current_branch() == branch:
+                log.info("Updating %s HEAD to latest commit", repo_path)
+                repo.run_cmd('reset --hard')
+
+            # Create (annotated) tag
+            if tag:
+                # Find tags matching the pattern
+                tag_keywords = dict(git_branch=self.git_branch,
+                                    git_commit=self.git_commit,
+                                    git_commit_count=self.git_commit_count,
+                                    tester_host=self.hostname,
+                                    tag_num='[0-9]{1,5}')
+                tag_re = re.compile(tag.format(**tag_keywords) + '$')
+                tag_keywords['tag_num'] = 0
+                for existing_tag in repo.run_cmd('tag').splitlines():
+                    if tag_re.match(existing_tag):
+                        tag_keywords['tag_num'] += 1
+
+                tag = tag.format(**tag_keywords)
+                msg = "Test run #{} of {}:{}\n".format(tag_keywords['tag_num'],
+                                                       self.git_branch,
+                                                       self.git_commit)
+                repo.run_cmd(['tag', '-a', '-m', msg, tag, commit])
+
+        finally:
+            if os.path.exists(tmp_index):
+                os.unlink(tmp_index)
+
+
+class BuildPerfTestCase(unittest.TestCase):
+    """Base class for build performance tests"""
+    SYSRES = 'sysres'
+    DISKUSAGE = 'diskusage'
+    build_target = None
+
+    def __init__(self, *args, **kwargs):
+        super(BuildPerfTestCase, self).__init__(*args, **kwargs)
+        self.name = self._testMethodName
+        self.base_dir = None
+        self.start_time = None
+        self.elapsed_time = None
+        self.measurements = []
+        self.bb_vars = get_bb_vars()
+        # TODO: remove 'times' and 'sizes' arrays when globalres support is
+        # removed
+        self.times = []
+        self.sizes = []
+
+    @property
+    def out_dir(self):
+        return os.path.join(self.base_dir, self.name)
+
+    @property
+    def cmd_log_file(self):
+        return os.path.join(self.out_dir, 'commands.log')
+
+    def setUp(self):
+        """Set-up fixture for each test"""
+        if self.build_target:
+            self.log_cmd_output(['bitbake', self.build_target,
+                                 '-c', 'fetchall'])
+
+    def run(self, *args, **kwargs):
+        """Run test"""
+        self.start_time = datetime.now()
+        super(BuildPerfTestCase, self).run(*args, **kwargs)
+        self.elapsed_time = datetime.now() - self.start_time
+
+    def log_cmd_output(self, cmd):
+        """Run a command and log it's output"""
+        cmd_str = cmd if isinstance(cmd, str) else ' '.join(cmd)
+        log.info("Logging command: %s", cmd_str)
+        try:
+            with open(self.cmd_log_file, 'a') as fobj:
+                runCmd2(cmd, stdout=fobj)
+        except CommandError as err:
+            log.error("Command failed: %s", err.retcode)
+            raise
+
+    def measure_cmd_resources(self, cmd, name, legend, save_bs=False):
+        """Measure system resource usage of a command"""
+        def _worker(data_q, cmd, **kwargs):
+            """Worker process for measuring resources"""
+            try:
+                start_time = datetime.now()
+                ret = runCmd2(cmd, **kwargs)
+                etime = datetime.now() - start_time
+                rusage_struct = resource.getrusage(resource.RUSAGE_CHILDREN)
+                iostat = {}
+                with open('/proc/{}/io'.format(os.getpid())) as fobj:
+                    for line in fobj.readlines():
+                        key, val = line.split(':')
+                        iostat[key] = int(val)
+                rusage = {}
+                # Skip unused fields, (i.e. 'ru_ixrss', 'ru_idrss', 'ru_isrss',
+                # 'ru_nswap', 'ru_msgsnd', 'ru_msgrcv' and 'ru_nsignals')
+                for key in ['ru_utime', 'ru_stime', 'ru_maxrss', 'ru_minflt',
+                            'ru_majflt', 'ru_inblock', 'ru_oublock',
+                            'ru_nvcsw', 'ru_nivcsw']:
+                    rusage[key] = getattr(rusage_struct, key)
+                data_q.put({'ret': ret,
+                            'start_time': start_time,
+                            'elapsed_time': etime,
+                            'rusage': rusage,
+                            'iostat': iostat})
+            except Exception as err:
+                data_q.put(err)
+
+        cmd_str = cmd if isinstance(cmd, str) else ' '.join(cmd)
+        log.info("Timing command: %s", cmd_str)
+        data_q = SimpleQueue()
+        try:
+            with open(self.cmd_log_file, 'a') as fobj:
+                proc = Process(target=_worker, args=(data_q, cmd,),
+                               kwargs={'stdout': fobj})
+                proc.start()
+                data = data_q.get()
+                proc.join()
+            if isinstance(data, Exception):
+                raise data
+        except CommandError:
+            log.error("Command '%s' failed, see %s for more details", cmd_str,
+                      self.cmd_log_file)
+            raise
+        etime = data['elapsed_time']
+
+        measurement = {'type': self.SYSRES,
+                       'name': name,
+                       'legend': legend}
+        measurement['values'] = {'start_time': data['start_time'],
+                                 'elapsed_time': etime,
+                                 'rusage': data['rusage'],
+                                 'iostat': data['iostat']}
+        if save_bs:
+            bs_file = self.save_buildstats(legend)
+            measurement['values']['buildstats_file'] = \
+                    os.path.relpath(bs_file, self.base_dir)
+
+        self.measurements.append(measurement)
+
+        # Append to 'times' array for globalres log
+        e_sec = etime.total_seconds()
+        self.times.append('{:d}:{:02d}:{:05.2f}'.format(int(e_sec / 3600),
+                                                      int((e_sec % 3600) / 60),
+                                                       e_sec % 60))
+
+    def measure_disk_usage(self, path, name, legend, apparent_size=False):
+        """Estimate disk usage of a file or directory"""
+        cmd = ['du', '-s', '--block-size', '1024']
+        if apparent_size:
+            cmd.append('--apparent-size')
+        cmd.append(path)
+
+        ret = runCmd2(cmd)
+        size = int(ret.output.split()[0])
+        log.debug("Size of %s path is %s", path, size)
+        measurement = {'type': self.DISKUSAGE,
+                       'name': name,
+                       'legend': legend}
+        measurement['values'] = {'size': size}
+        self.measurements.append(measurement)
+        # Append to 'sizes' array for globalres log
+        self.sizes.append(str(size))
+
+    def save_buildstats(self, label=None):
+        """Save buildstats"""
+        def split_nevr(nevr):
+            """Split name and version information from recipe "nevr" string"""
+            n_e_v, revision = nevr.rsplit('-', 1)
+            match = re.match(r'^(?P<name>\S+)-((?P<epoch>[0-9]{1,5})_)?(?P<version>[0-9]\S*)$',
+                             n_e_v)
+            if not match:
+                # If we're not able to parse a version starting with a number, just
+                # take the part after last dash
+                match = re.match(r'^(?P<name>\S+)-((?P<epoch>[0-9]{1,5})_)?(?P<version>[^-]+)$',
+                                 n_e_v)
+            name = match.group('name')
+            version = match.group('version')
+            epoch = match.group('epoch')
+            return name, epoch, version, revision
+
+        def bs_to_json(filename):
+            """Convert (task) buildstats file into json format"""
+            bs_json = {'iostat': {},
+                       'rusage': {},
+                       'child_rusage': {}}
+            with open(filename) as fobj:
+                for line in fobj.readlines():
+                    key, val = line.split(':', 1)
+                    val = val.strip()
+                    if key == 'Started':
+                        start_time = datetime.utcfromtimestamp(float(val))
+                        bs_json['start_time'] = start_time
+                    elif key == 'Ended':
+                        end_time = datetime.utcfromtimestamp(float(val))
+                    elif key.startswith('IO '):
+                        split = key.split()
+                        bs_json['iostat'][split[1]] = int(val)
+                    elif key.find('rusage') >= 0:
+                        split = key.split()
+                        ru_key = split[-1]
+                        if ru_key in ('ru_stime', 'ru_utime'):
+                            val = float(val)
+                        else:
+                            val = int(val)
+                        ru_type = 'rusage' if split[0] == 'rusage' else \
+                                                          'child_rusage'
+                        bs_json[ru_type][ru_key] = val
+                    elif key == 'Status':
+                        bs_json['status'] = val
+            bs_json['elapsed_time'] = end_time - start_time
+            return bs_json
+
+        log.info('Saving buildstats in JSON format')
+        bs_dirs = sorted(os.listdir(self.bb_vars['BUILDSTATS_BASE']))
+        if len(bs_dirs) > 1:
+            log.warning("Multiple buildstats found for test %s, only "
+                        "archiving the last one", self.name)
+        bs_dir = os.path.join(self.bb_vars['BUILDSTATS_BASE'], bs_dirs[-1])
+
+        buildstats = []
+        for fname in os.listdir(bs_dir):
+            recipe_dir = os.path.join(bs_dir, fname)
+            if not os.path.isdir(recipe_dir):
+                continue
+            name, epoch, version, revision = split_nevr(fname)
+            recipe_bs = {'name': name,
+                         'epoch': epoch,
+                         'version': version,
+                         'revision': revision,
+                         'tasks': {}}
+            for task in os.listdir(recipe_dir):
+                recipe_bs['tasks'][task] = bs_to_json(os.path.join(recipe_dir,
+                                                                   task))
+            buildstats.append(recipe_bs)
+
+        # Write buildstats into json file
+        postfix = '.' + str_to_fn(label) if label else ''
+        postfix += '.json'
+        outfile = os.path.join(self.out_dir, 'buildstats' + postfix)
+        with open(outfile, 'w') as fobj:
+            json.dump(buildstats, fobj, indent=4, sort_keys=True,
+                      cls=ResultsJsonEncoder)
+        return outfile
+
+    def rm_tmp(self):
+        """Cleanup temporary/intermediate files and directories"""
+        log.debug("Removing temporary and cache files")
+        for name in ['bitbake.lock', 'conf/sanity_info',
+                     self.bb_vars['TMPDIR']]:
+            oe.path.remove(name, recurse=True)
+
+    def rm_sstate(self):
+        """Remove sstate directory"""
+        log.debug("Removing sstate-cache")
+        oe.path.remove(self.bb_vars['SSTATE_DIR'], recurse=True)
+
+    def rm_cache(self):
+        """Drop bitbake caches"""
+        oe.path.remove(self.bb_vars['PERSISTENT_DIR'], recurse=True)
+
+    @staticmethod
+    def sync():
+        """Sync and drop kernel caches"""
+        log.debug("Syncing and dropping kernel caches""")
+        KernelDropCaches.drop()
+        os.sync()
+        # Wait a bit for all the dirty blocks to be written onto disk
+        time.sleep(3)
+
+
+class BuildPerfTestLoader(unittest.TestLoader):
+    """Test loader for build performance tests"""
+    sortTestMethodsUsing = None
+
+
+class BuildPerfTestRunner(unittest.TextTestRunner):
+    """Test loader for build performance tests"""
+    sortTestMethodsUsing = None
+
+    def __init__(self, out_dir, *args, **kwargs):
+        super(BuildPerfTestRunner, self).__init__(*args, **kwargs)
+        self.out_dir = out_dir
+
+    def _makeResult(self):
+       return BuildPerfTestResult(self.out_dir, self.stream, self.descriptions,
+                                  self.verbosity)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/buildperf/test_basic.py b/import-layers/yocto-poky/meta/lib/oeqa/buildperf/test_basic.py
new file mode 100644
index 0000000..7a48c1e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/buildperf/test_basic.py
@@ -0,0 +1,127 @@
+# Copyright (c) 2016, Intel Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+"""Basic set of build performance tests"""
+import os
+import shutil
+
+import oe.path
+from oeqa.buildperf import BuildPerfTestCase
+from oeqa.utils.commands import get_bb_vars
+
+
+class Test1P1(BuildPerfTestCase):
+    build_target = 'core-image-sato'
+
+    def test1(self):
+        """Measure wall clock of bitbake core-image-sato and size of tmp dir"""
+        self.rm_tmp()
+        self.rm_sstate()
+        self.rm_cache()
+        self.sync()
+        self.measure_cmd_resources(['bitbake', self.build_target], 'build',
+                                   'bitbake ' + self.build_target, save_bs=True)
+        self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir')
+
+
+class Test1P2(BuildPerfTestCase):
+    build_target = 'virtual/kernel'
+
+    def test12(self):
+        """Measure bitbake virtual/kernel"""
+        # Build and cleans state in order to get all dependencies pre-built
+        self.log_cmd_output(['bitbake', self.build_target])
+        self.log_cmd_output(['bitbake', self.build_target, '-c', 'cleansstate'])
+
+        self.sync()
+        self.measure_cmd_resources(['bitbake', self.build_target], 'build',
+                                   'bitbake ' + self.build_target)
+
+
+class Test1P3(BuildPerfTestCase):
+    build_target = 'core-image-sato'
+
+    def test13(self):
+        """Build core-image-sato with rm_work enabled"""
+        postfile = os.path.join(self.out_dir, 'postfile.conf')
+        with open(postfile, 'w') as fobj:
+            fobj.write('INHERIT += "rm_work"\n')
+        try:
+            self.rm_tmp()
+            self.rm_sstate()
+            self.rm_cache()
+            self.sync()
+            cmd = ['bitbake', '-R', postfile, self.build_target]
+            self.measure_cmd_resources(cmd, 'build',
+                                       'bitbake' + self.build_target,
+                                       save_bs=True)
+            self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir')
+        finally:
+            os.unlink(postfile)
+
+
+class Test2(BuildPerfTestCase):
+    build_target = 'core-image-sato'
+
+    def test2(self):
+        """Measure bitbake core-image-sato -c rootfs with sstate"""
+        # Build once in order to populate sstate cache
+        self.log_cmd_output(['bitbake', self.build_target])
+
+        self.rm_tmp()
+        self.rm_cache()
+        self.sync()
+        cmd = ['bitbake', self.build_target, '-c', 'rootfs']
+        self.measure_cmd_resources(cmd, 'do_rootfs', 'bitbake do_rootfs')
+
+
+class Test3(BuildPerfTestCase):
+
+    def test3(self):
+        """Parsing time metrics (bitbake -p)"""
+        # Drop all caches and parse
+        self.rm_cache()
+        oe.path.remove(os.path.join(self.bb_vars['TMPDIR'], 'cache'), True)
+        self.measure_cmd_resources(['bitbake', '-p'], 'parse_1',
+                                   'bitbake -p (no caches)')
+        # Drop tmp/cache
+        oe.path.remove(os.path.join(self.bb_vars['TMPDIR'], 'cache'), True)
+        self.measure_cmd_resources(['bitbake', '-p'], 'parse_2',
+                                   'bitbake -p (no tmp/cache)')
+        # Parse with fully cached data
+        self.measure_cmd_resources(['bitbake', '-p'], 'parse_3',
+                                   'bitbake -p (cached)')
+
+
+class Test4(BuildPerfTestCase):
+    build_target = 'core-image-sato'
+
+    def test4(self):
+        """eSDK metrics"""
+        self.log_cmd_output("bitbake {} -c do_populate_sdk_ext".format(
+            self.build_target))
+        self.bb_vars = get_bb_vars(None, self.build_target)
+        tmp_dir = self.bb_vars['TMPDIR']
+        installer = os.path.join(
+            self.bb_vars['SDK_DEPLOY'],
+            self.bb_vars['TOOLCHAINEXT_OUTPUTNAME'] + '.sh')
+        # Measure installer size
+        self.measure_disk_usage(installer, 'installer_bin', 'eSDK installer',
+                                apparent_size=True)
+        # Measure deployment time and deployed size
+        deploy_dir = os.path.join(tmp_dir, 'esdk-deploy')
+        if os.path.exists(deploy_dir):
+            shutil.rmtree(deploy_dir)
+        self.sync()
+        self.measure_cmd_resources([installer, '-y', '-d', deploy_dir],
+                                   'deploy', 'eSDK deploy')
+        self.measure_disk_usage(deploy_dir, 'deploy_dir', 'deploy dir',
+                                apparent_size=True)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/controllers/masterimage.py b/import-layers/yocto-poky/meta/lib/oeqa/controllers/masterimage.py
index 522f9eb..9ce3bf8 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/controllers/masterimage.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/controllers/masterimage.py
@@ -24,9 +24,7 @@
 
 from abc import ABCMeta, abstractmethod
 
-class MasterImageHardwareTarget(oeqa.targetcontrol.BaseTarget):
-
-    __metaclass__ = ABCMeta
+class MasterImageHardwareTarget(oeqa.targetcontrol.BaseTarget, metaclass=ABCMeta):
 
     supported_image_fstypes = ['tar.gz', 'tar.bz2']
 
@@ -199,3 +197,43 @@
         self.power_cycle(self.master)
         # there are better ways than a timeout but this should work for now
         time.sleep(120)
+
+
+class SystemdbootTarget(MasterImageHardwareTarget):
+
+    def __init__(self, d):
+        super(SystemdbootTarget, self).__init__(d)
+        # this the value we need to set in the LoaderEntryOneShot EFI variable
+        # so the system boots the 'test' bootloader label and not the default
+        # The first four bytes are EFI bits, and the rest is an utf-16le string
+        # (EFI vars values need to be utf-16)
+        # $ echo -en "test\0" | iconv -f ascii -t utf-16le | hexdump -C
+        # 00000000  74 00 65 00 73 00 74 00  00 00                    |t.e.s.t...|
+        self.efivarvalue = r'\x07\x00\x00\x00\x74\x00\x65\x00\x73\x00\x74\x00\x00\x00'
+        self.deploy_cmds = [
+                'mount -L boot /boot',
+                'mkdir -p /mnt/testrootfs',
+                'mount -L testrootfs /mnt/testrootfs',
+                'modprobe efivarfs',
+                'mount -t efivarfs efivarfs /sys/firmware/efi/efivars',
+                'cp ~/test-kernel /boot',
+                'rm -rf /mnt/testrootfs/*',
+                'tar xvf ~/test-rootfs.%s -C /mnt/testrootfs' % self.image_fstype,
+                'printf "%s" > /sys/firmware/efi/efivars/LoaderEntryOneShot-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f' % self.efivarvalue
+                ]
+
+    def _deploy(self):
+        # make sure these aren't mounted
+        self.master.run("umount /boot; umount /mnt/testrootfs; umount /sys/firmware/efi/efivars;")
+        # from now on, every deploy cmd should return 0
+        # else an exception will be thrown by sshcontrol
+        self.master.ignore_status = False
+        self.master.copy_to(self.rootfs, "~/test-rootfs." + self.image_fstype)
+        self.master.copy_to(self.kernel, "~/test-kernel")
+        for cmd in self.deploy_cmds:
+            self.master.run(cmd)
+
+    def _start(self, params=None):
+        self.power_cycle(self.master)
+        # there are better ways than a timeout but this should work for now
+        time.sleep(120)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/oetest.py b/import-layers/yocto-poky/meta/lib/oeqa/oetest.py
index 3ed5bb8..95d3bf7 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/oetest.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/oetest.py
@@ -12,6 +12,8 @@
 import inspect
 import subprocess
 import signal
+import shutil
+import functools
 try:
     import bb
 except ImportError:
@@ -54,18 +56,29 @@
 @LogResults
 class oeTest(unittest.TestCase):
 
+    pscmd = "ps"
     longMessage = True
 
     @classmethod
     def hasPackage(self, pkg):
-        for item in oeTest.tc.pkgmanifest.split('\n'):
-            if re.match(pkg, item):
+        """
+        True if the full package name exists in the manifest, False otherwise.
+        """
+        return pkg in oeTest.tc.pkgmanifest
+
+    @classmethod
+    def hasPackageMatch(self, match):
+        """
+        True if match exists in the manifest as a regular expression substring,
+        False otherwise.
+        """
+        for s in oeTest.tc.pkgmanifest:
+            if re.match(match, s):
                 return True
         return False
 
     @classmethod
     def hasFeature(self,feature):
-
         if feature in oeTest.tc.imagefeatures or \
                 feature in oeTest.tc.distrofeatures:
             return True
@@ -78,6 +91,9 @@
         super(oeRuntimeTest, self).__init__(methodName)
 
     def setUp(self):
+        # Install packages in the DUT
+        self.tc.install_uninstall_packages(self.id())
+
         # Check if test needs to run
         if self.tc.sigterm:
             self.fail("Got SIGTERM")
@@ -91,6 +107,9 @@
         pass
 
     def tearDown(self):
+        # Unistall packages in the DUT
+        self.tc.install_uninstall_packages(self.id(), False)
+
         res = getResults()
         # If a test fails or there is an exception dump
         # for QemuTarget only
@@ -117,6 +136,15 @@
             if status != 0:
                 return status
 
+class OETestCalledProcessError(subprocess.CalledProcessError):
+    def __str__(self):
+        if hasattr(self, "stderr"):
+            return "Command '%s' returned non-zero exit status %d with output %s and stderr %s" % (self.cmd, self.returncode, self.output, self.stderr)
+        else:
+            return "Command '%s' returned non-zero exit status %d with output %s" % (self.cmd, self.returncode, self.output)
+
+subprocess.CalledProcessError = OETestCalledProcessError
+
 class oeSDKTest(oeTest):
     def __init__(self, methodName='runTest'):
         self.sdktestdir = oeSDKTest.tc.sdktestdir
@@ -124,13 +152,12 @@
 
     @classmethod
     def hasHostPackage(self, pkg):
-
         if re.search(pkg, oeTest.tc.hostpkgmanifest):
             return True
         return False
 
     def _run(self, cmd):
-        return subprocess.check_output(". %s > /dev/null; %s;" % (self.tc.sdkenv, cmd), shell=True)
+        return subprocess.check_output(". %s > /dev/null; %s;" % (self.tc.sdkenv, cmd), shell=True, stderr=subprocess.STDOUT).decode("utf-8")
 
 class oeSDKExtTest(oeSDKTest):
     def _run(self, cmd):
@@ -142,7 +169,7 @@
         env['PATH'] = avoid_paths_in_environ(paths_to_avoid)
 
         return subprocess.check_output(". %s > /dev/null;"\
-            " %s;" % (self.tc.sdkenv, cmd), shell=True, env=env)
+            " %s;" % (self.tc.sdkenv, cmd), stderr=subprocess.STDOUT, shell=True, env=env).decode("utf-8")
 
 def getmodule(pos=2):
     # stack returns a list of tuples containg frame information
@@ -185,15 +212,22 @@
         _buffer_logger = ""
 
 class TestContext(object):
-    def __init__(self, d):
+    def __init__(self, d, exported=False):
         self.d = d
 
         self.testsuites = self._get_test_suites()
-        self.testslist = self._get_tests_list(d.getVar("BBPATH", True).split(':'))
+
+        if exported:
+            path = [os.path.dirname(os.path.abspath(__file__))]
+            extrapath = ""
+        else:
+            path = d.getVar("BBPATH", True).split(':')
+            extrapath = "lib/oeqa"
+
+        self.testslist = self._get_tests_list(path, extrapath)
         self.testsrequired = self._get_test_suites_required()
 
-        self.filesdir = os.path.join(os.path.dirname(os.path.abspath(
-            oeqa.runtime.__file__)), "files")
+        self.filesdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "runtime/files")
         self.imagefeatures = d.getVar("IMAGE_FEATURES", True).split()
         self.distrofeatures = d.getVar("DISTRO_FEATURES", True).split()
 
@@ -212,7 +246,7 @@
         return " ".join(tcs)
 
     # return test list by type also filter if TEST_SUITES is specified
-    def _get_tests_list(self, bbpath):
+    def _get_tests_list(self, bbpath, extrapath):
         testslist = []
 
         type = self._get_test_namespace()
@@ -226,11 +260,11 @@
                     continue
                 found = False
                 for p in bbpath:
-                    if os.path.exists(os.path.join(p, 'lib', 'oeqa', type, testname + '.py')):
+                    if os.path.exists(os.path.join(p, extrapath, type, testname + ".py")):
                         testslist.append("oeqa." + type + "." + testname)
                         found = True
                         break
-                    elif os.path.exists(os.path.join(p, 'lib', 'oeqa', type, testname.split(".")[0] + '.py')):
+                    elif os.path.exists(os.path.join(p, extrapath, type, testname.split(".")[0] + ".py")):
                         testslist.append("oeqa." + type + "." + testname)
                         found = True
                         break
@@ -239,8 +273,6 @@
 
         if "auto" in self.testsuites:
             def add_auto_list(path):
-                if not os.path.exists(os.path.join(path, '__init__.py')):
-                    bb.fatal('Tests directory %s exists but is missing __init__.py' % path)
                 files = sorted([f for f in os.listdir(path) if f.endswith('.py') and not f.startswith('_')])
                 for f in files:
                     module = 'oeqa.' + type + '.' + f[:-3]
@@ -255,6 +287,51 @@
 
         return testslist
 
+    def getTestModules(self):
+        """
+        Returns all the test modules in the testlist.
+        """
+
+        import pkgutil
+
+        modules = []
+        for test in self.testslist:
+            if re.search("\w+\.\w+\.test_\S+", test):
+                test = '.'.join(t.split('.')[:3])
+            module = pkgutil.get_loader(test)
+            modules.append(module)
+
+        return modules
+
+    def getModulefromID(self, test_id):
+        """
+        Returns the test module based on a test id.
+        """
+
+        module_name = ".".join(test_id.split(".")[:3])
+        modules = self.getTestModules()
+        for module in modules:
+            if module.name == module_name:
+                return module
+
+        return None
+
+    def getTests(self, test):
+        '''Return all individual tests executed when running the suite.'''
+        # Unfortunately unittest does not have an API for this, so we have
+        # to rely on implementation details. This only needs to work
+        # for TestSuite containing TestCase.
+        method = getattr(test, '_testMethodName', None)
+        if method:
+            # leaf case: a TestCase
+            yield test
+        else:
+            # Look into TestSuite.
+            tests = getattr(test, '_tests', [])
+            for t1 in tests:
+                for t2 in self.getTests(t1):
+                    yield t2
+
     def loadTests(self):
         setattr(oeTest, "tc", self)
 
@@ -263,36 +340,20 @@
         suites = [testloader.loadTestsFromName(name) for name in self.testslist]
         suites = filterByTagExp(suites, getattr(self, "tagexp", None))
 
-        def getTests(test):
-            '''Return all individual tests executed when running the suite.'''
-            # Unfortunately unittest does not have an API for this, so we have
-            # to rely on implementation details. This only needs to work
-            # for TestSuite containing TestCase.
-            method = getattr(test, '_testMethodName', None)
-            if method:
-                # leaf case: a TestCase
-                yield test
-            else:
-                # Look into TestSuite.
-                tests = getattr(test, '_tests', [])
-                for t1 in tests:
-                    for t2 in getTests(t1):
-                        yield t2
-
         # Determine dependencies between suites by looking for @skipUnlessPassed
         # method annotations. Suite A depends on suite B if any method in A
         # depends on a method on B.
         for suite in suites:
             suite.dependencies = []
             suite.depth = 0
-            for test in getTests(suite):
+            for test in self.getTests(suite):
                 methodname = getattr(test, '_testMethodName', None)
                 if methodname:
                     method = getattr(test, methodname)
                     depends_on = getattr(method, '_depends_on', None)
                     if depends_on:
                         for dep_suite in suites:
-                            if depends_on in [getattr(t, '_testMethodName', None) for t in getTests(dep_suite)]:
+                            if depends_on in [getattr(t, '_testMethodName', None) for t in self.getTests(dep_suite)]:
                                 if dep_suite not in suite.dependencies and \
                                    dep_suite is not suite:
                                     suite.dependencies.append(dep_suite)
@@ -314,7 +375,14 @@
         for index, suite in enumerate(suites):
             set_suite_depth(suite)
             suite.index = index
-        suites.sort(cmp=lambda a,b: cmp((a.depth, a.index), (b.depth, b.index)))
+
+        def cmp(a, b):
+            return (a > b) - (a < b)
+
+        def cmpfunc(a, b):
+            return cmp((a.depth, a.index), (b.depth, b.index))
+
+        suites.sort(key=functools.cmp_to_key(cmpfunc))
 
         self.suite = testloader.suiteClass(suites)
 
@@ -331,35 +399,24 @@
 
         return runner.run(self.suite)
 
-class ImageTestContext(TestContext):
-    def __init__(self, d, target, host_dumper):
-        super(ImageTestContext, self).__init__(d)
-
-        self.tagexp =  d.getVar("TEST_SUITES_TAGS", True)
+class RuntimeTestContext(TestContext):
+    def __init__(self, d, target, exported=False):
+        super(RuntimeTestContext, self).__init__(d, exported)
 
         self.target = target
-        self.host_dumper = host_dumper
 
+        self.pkgmanifest = {}
         manifest = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True),
                 d.getVar("IMAGE_LINK_NAME", True) + ".manifest")
         nomanifest = d.getVar("IMAGE_NO_MANIFEST", True)
         if nomanifest is None or nomanifest != "1":
             try:
                 with open(manifest) as f:
-                    self.pkgmanifest = f.read()
+                    for line in f:
+                        (pkg, arch, version) = line.strip().split()
+                        self.pkgmanifest[pkg] = (version, arch)
             except IOError as e:
                 bb.fatal("No package manifest file found. Did you build the image?\n%s" % e)
-        else:
-            self.pkgmanifest = ""
-
-        self.sigterm = False
-        self.origsigtermhandler = signal.getsignal(signal.SIGTERM)
-        signal.signal(signal.SIGTERM, self._sigterm_exception)
-
-    def _sigterm_exception(self, signum, stackframe):
-        bb.warn("TestImage received SIGTERM, shutting down...")
-        self.sigterm = True
-        self.target.stop()
 
     def _get_test_namespace(self):
         return "runtime"
@@ -382,8 +439,223 @@
         return [t for t in self.d.getVar("TEST_SUITES", True).split() if t != "auto"]
 
     def loadTests(self):
-        super(ImageTestContext, self).loadTests()
-        setattr(oeRuntimeTest, "pscmd", "ps -ef" if oeTest.hasPackage("procps") else "ps")
+        super(RuntimeTestContext, self).loadTests()
+        if oeTest.hasPackage("procps"):
+            oeRuntimeTest.pscmd = "ps -ef"
+
+    def extract_packages(self):
+        """
+        Find packages that will be needed during runtime.
+        """
+
+        modules = self.getTestModules()
+        bbpaths = self.d.getVar("BBPATH", True).split(":")
+
+        shutil.rmtree(self.d.getVar("TEST_EXTRACTED_DIR", True))
+        shutil.rmtree(self.d.getVar("TEST_PACKAGED_DIR", True))
+        for module in modules:
+            json_file = self._getJsonFile(module)
+            if json_file:
+                needed_packages = self._getNeededPackages(json_file)
+                self._perform_package_extraction(needed_packages)
+
+    def _perform_package_extraction(self, needed_packages):
+        """
+        Extract packages that will be needed during runtime.
+        """
+
+        import oe.path
+
+        extracted_path = self.d.getVar("TEST_EXTRACTED_DIR", True)
+        packaged_path = self.d.getVar("TEST_PACKAGED_DIR", True)
+
+        for key,value in needed_packages.items():
+            packages = ()
+            if isinstance(value, dict):
+                packages = (value, )
+            elif isinstance(value, list):
+                packages = value
+            else:
+                bb.fatal("Failed to process needed packages for %s; "
+                         "Value must be a dict or list" % key)
+
+            for package in packages:
+                pkg = package["pkg"]
+                rm = package.get("rm", False)
+                extract = package.get("extract", True)
+                if extract:
+                    dst_dir = os.path.join(extracted_path, pkg)
+                else:
+                    dst_dir = os.path.join(packaged_path)
+
+                # Extract package and copy it to TEST_EXTRACTED_DIR
+                pkg_dir = self._extract_in_tmpdir(pkg)
+                if extract:
+
+                    # Same package used for more than one test,
+                    # don't need to extract again.
+                    if os.path.exists(dst_dir):
+                        continue
+                    oe.path.copytree(pkg_dir, dst_dir)
+                    shutil.rmtree(pkg_dir)
+
+                # Copy package to TEST_PACKAGED_DIR
+                else:
+                    self._copy_package(pkg)
+
+    def _getJsonFile(self, module):
+        """
+        Returns the path of the JSON file for a module, empty if doesn't exitst.
+        """
+
+        module_file = module.path
+        json_file = "%s.json" % module_file.rsplit(".", 1)[0]
+        if os.path.isfile(module_file) and os.path.isfile(json_file):
+            return json_file
+        else:
+            return ""
+
+    def _getNeededPackages(self, json_file, test=None):
+        """
+        Returns a dict with needed packages based on a JSON file.
+
+
+        If a test is specified it will return the dict just for that test.
+        """
+
+        import json
+
+        needed_packages = {}
+
+        with open(json_file) as f:
+            test_packages = json.load(f)
+        for key,value in test_packages.items():
+            needed_packages[key] = value
+
+        if test:
+            if test in needed_packages:
+                needed_packages = needed_packages[test]
+            else:
+                needed_packages = {}
+
+        return needed_packages
+
+    def _extract_in_tmpdir(self, pkg):
+        """"
+        Returns path to a temp directory where the package was
+        extracted without dependencies.
+        """
+
+        from oeqa.utils.package_manager import get_package_manager
+
+        pkg_path = os.path.join(self.d.getVar("TEST_INSTALL_TMP_DIR", True), pkg)
+        pm = get_package_manager(self.d, pkg_path)
+        extract_dir = pm.extract(pkg)
+        shutil.rmtree(pkg_path)
+
+        return extract_dir
+
+    def _copy_package(self, pkg):
+        """
+        Copy the RPM, DEB or IPK package to dst_dir
+        """
+
+        from oeqa.utils.package_manager import get_package_manager
+
+        pkg_path = os.path.join(self.d.getVar("TEST_INSTALL_TMP_DIR", True), pkg)
+        dst_dir = self.d.getVar("TEST_PACKAGED_DIR", True)
+        pm = get_package_manager(self.d, pkg_path)
+        pkg_info = pm.package_info(pkg)
+        file_path = pkg_info[pkg]["filepath"]
+        shutil.copy2(file_path, dst_dir)
+        shutil.rmtree(pkg_path)
+
+    def install_uninstall_packages(self, test_id, pkg_dir, install):
+        """
+        Check if the test requires a package and Install/Unistall it in the DUT
+        """
+
+        test = test_id.split(".")[4]
+        module = self.getModulefromID(test_id)
+        json = self._getJsonFile(module)
+        if json:
+            needed_packages = self._getNeededPackages(json, test)
+            if needed_packages:
+                self._install_uninstall_packages(needed_packages, pkg_dir, install)
+
+    def _install_uninstall_packages(self, needed_packages, pkg_dir, install=True):
+        """
+        Install/Unistall packages in the DUT without using a package manager
+        """
+
+        if isinstance(needed_packages, dict):
+            packages = [needed_packages]
+        elif isinstance(needed_packages, list):
+            packages = needed_packages
+
+        for package in packages:
+            pkg = package["pkg"]
+            rm = package.get("rm", False)
+            extract = package.get("extract", True)
+            src_dir = os.path.join(pkg_dir, pkg)
+
+            # Install package
+            if install and extract:
+                self.target.connection.copy_dir_to(src_dir, "/")
+
+            # Unistall package
+            elif not install and rm:
+                self.target.connection.delete_dir_structure(src_dir, "/")
+
+class ImageTestContext(RuntimeTestContext):
+    def __init__(self, d, target, host_dumper):
+        super(ImageTestContext, self).__init__(d, target)
+
+        self.tagexp = d.getVar("TEST_SUITES_TAGS", True)
+
+        self.host_dumper = host_dumper
+
+        self.sigterm = False
+        self.origsigtermhandler = signal.getsignal(signal.SIGTERM)
+        signal.signal(signal.SIGTERM, self._sigterm_exception)
+
+    def _sigterm_exception(self, signum, stackframe):
+        bb.warn("TestImage received SIGTERM, shutting down...")
+        self.sigterm = True
+        self.target.stop()
+
+    def install_uninstall_packages(self, test_id, install=True):
+        """
+        Check if the test requires a package and Install/Unistall it in the DUT
+        """
+
+        pkg_dir = self.d.getVar("TEST_EXTRACTED_DIR", True)
+        super(ImageTestContext, self).install_uninstall_packages(test_id, pkg_dir, install)
+
+class ExportTestContext(RuntimeTestContext):
+    def __init__(self, d, target, exported=False, parsedArgs={}):
+        """
+        This class is used when exporting tests and when are executed outside OE environment.
+
+        parsedArgs can contain the following:
+            - tag:      Filter test by tag.
+        """
+        super(ExportTestContext, self).__init__(d, target, exported)
+
+        tag = parsedArgs.get("tag", None)
+        self.tagexp = tag if tag != None else d.getVar("TEST_SUITES_TAGS", True)
+
+        self.sigterm = None
+
+    def install_uninstall_packages(self, test_id, install=True):
+        """
+        Check if the test requires a package and Install/Unistall it in the DUT
+        """
+
+        export_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
+        extracted_dir = self.d.getVar("TEST_EXPORT_EXTRACTED_DIR", True)
+        pkg_dir = os.path.join(export_dir, extracted_dir)
+        super(ExportTestContext, self).install_uninstall_packages(test_id, pkg_dir, install)
 
 class SDKTestContext(TestContext):
     def __init__(self, d, sdktestdir, sdkenv, tcname, *args):
@@ -396,8 +668,11 @@
         if not hasattr(self, 'target_manifest'):
             self.target_manifest = d.getVar("SDK_TARGET_MANIFEST", True)
         try:
+            self.pkgmanifest = {}
             with open(self.target_manifest) as f:
-                 self.pkgmanifest = f.read()
+                for line in f:
+                    (pkg, arch, version) = line.strip().split()
+                    self.pkgmanifest[pkg] = (version, arch)
         except IOError as e:
             bb.fatal("No package manifest file found. Did you build the sdk image?\n%s" % e)
 
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runexported.py b/import-layers/yocto-poky/meta/lib/oeqa/runexported.py
index cc89e13..7e245c4 100755
--- a/import-layers/yocto-poky/meta/lib/oeqa/runexported.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runexported.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 
 # Copyright (C) 2013 Intel Corporation
@@ -30,9 +30,9 @@
 
 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "oeqa")))
 
-from oeqa.oetest import TestContext
+from oeqa.oetest import ExportTestContext
+from oeqa.utils.commands import runCmd, updateEnv
 from oeqa.utils.sshcontrol import SSHControl
-from oeqa.utils.dump import get_host_dumper
 
 # this isn't pretty but we need a fake target object
 # for running the tests externally as we don't care
@@ -69,10 +69,6 @@
     def getVar(self, key, unused = None):
         return self.get(key, "")
 
-class ExportTestContext(TestContext):
-    def __init__(self, d):
-        self.d = d
-
 def main():
 
     parser = argparse.ArgumentParser()
@@ -85,6 +81,7 @@
             specified in the json if that directory actually exists or it will error out.")
     parser.add_argument("-l", "--log-dir", dest="log_dir", help="This sets the path for TEST_LOG_DIR. If not specified \
             the current dir is used. This is used for usually creating a ssh log file and a scp test file.")
+    parser.add_argument("-a", "--tag", dest="tag", help="Only run test with specified tag.")
     parser.add_argument("json", help="The json file exported by the build system", default="testdata.json", nargs='?')
 
     args = parser.parse_args()
@@ -111,30 +108,41 @@
         if not os.path.isdir(d["DEPLOY_DIR"]):
             print("WARNING: The path to DEPLOY_DIR does not exist: %s" % d["DEPLOY_DIR"])
 
+    parsedArgs = {}
+    parsedArgs["tag"] = args.tag
+
+    extract_sdk(d)
 
     target = FakeTarget(d)
     for key in loaded["target"].keys():
         setattr(target, key, loaded["target"][key])
 
-    host_dumper = get_host_dumper(d)
-    host_dumper.parent_dir = loaded["host_dumper"]["parent_dir"]
-    host_dumper.cmds = loaded["host_dumper"]["cmds"]
-
     target.exportStart()
-    tc = ExportTestContext(d)
-
-    setattr(tc, "d", d)
-    setattr(tc, "target", target)
-    setattr(tc, "host_dumper", host_dumper)
-    for key in loaded.keys():
-        if key != "d" and key != "target" and key != "host_dumper":
-            setattr(tc, key, loaded[key])
-
+    tc = ExportTestContext(d, target, True, parsedArgs)
     tc.loadTests()
     tc.runTests()
 
     return 0
 
+def extract_sdk(d):
+    """
+    Extract SDK if needed
+    """
+
+    export_dir = os.path.dirname(os.path.realpath(__file__))
+    tools_dir = d.getVar("TEST_EXPORT_SDK_DIR", True)
+    tarball_name = "%s.sh" % d.getVar("TEST_EXPORT_SDK_NAME", True)
+    tarball_path = os.path.join(export_dir, tools_dir, tarball_name)
+    extract_path = os.path.join(export_dir, "sysroot")
+    if os.path.isfile(tarball_path):
+        print ("Found SDK tarball %s. Extracting..." % tarball_path)
+        result = runCmd("%s -y -d %s" % (tarball_path, extract_path))
+        for f in os.listdir(extract_path):
+            if f.startswith("environment-setup"):
+                print("Setting up SDK environment...")
+                env_file = os.path.join(extract_path, f)
+                updateEnv(env_file)
+
 if __name__ == "__main__":
     try:
         ret = main()
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/__init__.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/__init__.py
deleted file mode 100644
index 4cf3fa7..0000000
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# Enable other layers to have tests in the same named directory
-from pkgutil import extend_path
-__path__ = extend_path(__path__, __name__)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/_ptest.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/_ptest.py
index 0621028..71324d3 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/_ptest.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/_ptest.py
@@ -11,7 +11,7 @@
 def setUpModule():
     if not oeRuntimeTest.hasFeature("package-management"):
         skipModule("Image doesn't have package management feature")
-    if not oeRuntimeTest.hasPackage("smart"):
+    if not oeRuntimeTest.hasPackage("smartpm"):
         skipModule("Image doesn't have smart installed")
     if "package_rpm" != oeRuntimeTest.tc.d.getVar("PACKAGE_CLASSES", True).split()[0]:
         skipModule("Rpm is not the primary package manager")
@@ -105,7 +105,7 @@
     def test_ptestrunner(self):
         self.add_smart_channel()
         (runnerstatus, result) = self.target.run('which ptest-runner', 0)
-        cond = oeRuntimeTest.hasPackage("ptest-runner") and oeRuntimeTest.hasFeature("ptest") and oeRuntimeTest.hasPackage("-ptest") and (runnerstatus != 0)
+        cond = oeRuntimeTest.hasPackage("ptest-runner") and oeRuntimeTest.hasFeature("ptest") and oeRuntimeTest.hasPackageMatch("-ptest") and (runnerstatus != 0)
         if cond:
             self.install_packages(self.install_complementary("*-ptest"))
             self.install_packages(['ptest-runner'])
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildgalculator.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildgalculator.py
new file mode 100644
index 0000000..28ba29e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildgalculator.py
@@ -0,0 +1,23 @@
+from oeqa.oetest import oeRuntimeTest, skipModule
+from oeqa.utils.decorators import *
+from oeqa.utils.targetbuild import TargetBuildProject
+
+def setUpModule():
+    if not oeRuntimeTest.hasFeature("tools-sdk"):
+        skipModule("Image doesn't have tools-sdk in IMAGE_FEATURES")
+
+class GalculatorTest(oeRuntimeTest):
+    @skipUnlessPassed("test_ssh")
+    def test_galculator(self):
+        try:
+            project = TargetBuildProject(oeRuntimeTest.tc.target, oeRuntimeTest.tc.d,
+                                      "http://galculator.mnim.org/downloads/galculator-2.1.4.tar.bz2")
+            project.download_archive()
+
+            self.assertEqual(project.run_configure(), 0,
+                            msg="Running configure failed")
+
+            self.assertEqual(project.run_make(), 0,
+                            msg="Running make failed")
+        finally:
+            project.clean()
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildiptables.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildiptables.py
index 09e252d..bc75d0a 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildiptables.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildiptables.py
@@ -11,7 +11,7 @@
     @classmethod
     def setUpClass(self):
         self.project = TargetBuildProject(oeRuntimeTest.tc.target, oeRuntimeTest.tc.d,
-                        "http://netfilter.org/projects/iptables/files/iptables-1.4.13.tar.bz2")
+                        "http://downloads.yoctoproject.org/mirror/sources/iptables-1.4.13.tar.bz2")
         self.project.download_archive()
 
     @testcase(206)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildsudoku.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildsudoku.py
deleted file mode 100644
index 802b060..0000000
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/buildsudoku.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from oeqa.oetest import oeRuntimeTest, skipModule
-from oeqa.utils.decorators import *
-from oeqa.utils.targetbuild import TargetBuildProject
-
-def setUpModule():
-    if not oeRuntimeTest.hasFeature("tools-sdk"):
-        skipModule("Image doesn't have tools-sdk in IMAGE_FEATURES")
-
-class SudokuTest(oeRuntimeTest):
-
-    @classmethod
-    def setUpClass(self):
-        self.project = TargetBuildProject(oeRuntimeTest.tc.target, oeRuntimeTest.tc.d,
-                        "http://downloads.sourceforge.net/project/sudoku-savant/sudoku-savant/sudoku-savant-1.3/sudoku-savant-1.3.tar.bz2")
-        self.project.download_archive()
-
-    @testcase(207)
-    @skipUnlessPassed("test_ssh")
-    def test_sudoku(self):
-        self.assertEqual(self.project.run_configure(), 0,
-                        msg="Running configure failed")
-
-        self.assertEqual(self.project.run_make(), 0,
-                        msg="Running make failed")
-
-    @classmethod
-    def tearDownClass(self):
-        self.project.clean()
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/connman.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/connman.py
index bd9dba3..003fefe 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/connman.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/connman.py
@@ -27,5 +27,5 @@
     def test_connmand_running(self):
         (status, output) = self.target.run(oeRuntimeTest.pscmd + ' | grep [c]onnmand')
         if status != 0:
-            print self.service_status("connman")
+            print(self.service_status("connman"))
             self.fail("No connmand process running")
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/files/test.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/files/test.py
index f3a2273..f389225 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/files/test.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/files/test.py
@@ -3,4 +3,4 @@
 os.system('touch /tmp/testfile.python')
 
 a = 9.01e+21 - 9.01e+21 + 0.01
-print "the value of a is %s" % a
+print("the value of a is %s" % a)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/parselogs.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/parselogs.py
index dec9ebe..8efe2d1 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/parselogs.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/parselogs.py
@@ -55,18 +55,25 @@
     'Could not enable PowerButton event',
     'probe of LNXPWRBN:00 failed with error -22',
     'pmd_set_huge: Cannot satisfy',
+    'failed to setup card detect gpio',
+    'amd_nb: Cannot enumerate AMD northbridges',
+    'failed to retrieve link info, disabling eDP',
 ] + common_errors
 
 qemux86_common = [
     'wrong ELF class',
     "fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.",
     "can't claim BAR ",
+    'amd_nb: Cannot enumerate AMD northbridges',
+    'uvesafb: 5000 ms task timeout, infinitely waiting',
+    'tsc: HPET/PMTIMER calibration failed',
 ] + common_errors
 
 ignore_errors = { 
     'default' : common_errors,
     'qemux86' : [
         'Failed to access perfctr msr (MSR',
+        'pci 0000:00:00.0: [Firmware Bug]: reg 0x..: invalid BAR (can\'t size)',
         ] + qemux86_common,
     'qemux86-64' : qemux86_common,
     'qemumips' : [
@@ -81,16 +88,28 @@
         'host side 80-wire cable detection failed, limiting max speed',
         'mode "640x480" test failed',
         'Failed to load module "glx"',
+        'can\'t handle BAR above 4GB',
+        'Cannot reserve Legacy IO',
         ] + common_errors,
     'qemuarm' : [
         'mmci-pl18x: probe of fpga:05 failed with error -22',
         'mmci-pl18x: probe of fpga:0b failed with error -22',
-        'Failed to load module "glx"'
+        'Failed to load module "glx"',
+        'OF: amba_device_add() failed (-19) for /amba/smc@10100000',
+        'OF: amba_device_add() failed (-19) for /amba/mpmc@10110000',
+        'OF: amba_device_add() failed (-19) for /amba/sctl@101e0000',
+        'OF: amba_device_add() failed (-19) for /amba/watchdog@101e1000',
+        'OF: amba_device_add() failed (-19) for /amba/sci@101f0000',
+        'OF: amba_device_add() failed (-19) for /amba/ssp@101f4000',
+        'OF: amba_device_add() failed (-19) for /amba/fpga/sci@a000',
+        'Failed to initialize \'/amba/timer@101e3000\': -22',
+        'jitterentropy: Initialization failed with host not compliant with requirements: 2',
         ] + common_errors,
     'qemuarm64' : [
         'Fatal server error:',
         '(EE) Server terminated with error (1). Closing log file.',
         'dmi: Firmware registration failed.',
+        'irq: type mismatch, failed to map hwirq-27 for /intc',
         ] + common_errors,
     'emenlow' : [
         '[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness',
@@ -110,11 +129,19 @@
         '(EE) Failed to load module psbdrv',
         '(EE) open /dev/fb0: No such file or directory',
         '(EE) AIGLX: reverting to software rendering',
+        'dmi: Firmware registration failed.',
+        'ioremap error for 0x78',
         ] + x86_common,
     'intel-corei7-64' : x86_common,
     'crownbay' : x86_common,
     'genericx86' : x86_common,
-    'genericx86-64' : x86_common,
+    'genericx86-64' : [
+        'Direct firmware load for i915',
+        'Failed to load firmware i915',
+        'Failed to fetch GuC',
+        'Failed to initialize GuC',
+        'The driver is built-in, so to load the firmware you need to',
+        ] + x86_common,
     'edgerouter' : [
         'Fatal server error:',
         ] + common_errors,
@@ -153,6 +180,9 @@
     def getMachine(self):
         return oeRuntimeTest.tc.d.getVar("MACHINE", True)
 
+    def getWorkdir(self):
+        return oeRuntimeTest.tc.d.getVar("WORKDIR", True)
+
     #get some information on the CPU of the machine to display at the beginning of the output. This info might be useful in some cases.
     def getHardwareInfo(self):
         hwi = ""
@@ -190,16 +220,19 @@
 
     #copy the log files to be parsed locally
     def transfer_logs(self, log_list):
-        target_logs = 'target_logs'
+        workdir = self.getWorkdir()
+        self.target_logs = workdir + '/' + 'target_logs'
+        target_logs = self.target_logs
         if not os.path.exists(target_logs):
             os.makedirs(target_logs)
+        bb.utils.remove(self.target_logs + "/*")
         for f in log_list:
             self.target.copy_from(f, target_logs)
 
     #get the local list of logs
     def get_local_log_list(self, log_locations):
         self.transfer_logs(self.getLogList(log_locations))
-        logs = [ os.path.join('target_logs',f) for f in os.listdir('target_logs') if os.path.isfile(os.path.join('target_logs',f)) ]
+        logs = [ os.path.join(self.target_logs, f) for f in os.listdir(self.target_logs) if os.path.isfile(os.path.join(self.target_logs, f)) ]
         return logs
 
     #build the grep command to be used with filters and exclusions
@@ -238,7 +271,7 @@
             result = None
             thegrep = self.build_grepcmd(errors, ignore_errors, log)
             try:
-                result = subprocess.check_output(thegrep, shell=True)
+                result = subprocess.check_output(thegrep, shell=True).decode("utf-8")
             except:
                 pass
             if (result is not None):
@@ -246,7 +279,7 @@
                 rez = result.splitlines()
                 for xrez in rez:
                     try:
-                        grep_output = subprocess.check_output(['grep', '-F', xrez, '-B', str(lines_before), '-A', str(lines_after), log])
+                        grep_output = subprocess.check_output(['grep', '-F', xrez, '-B', str(lines_before), '-A', str(lines_after), log]).decode("utf-8")
                     except:
                         pass
                     results[log.replace('target_logs/','')][xrez]=grep_output
@@ -262,7 +295,7 @@
         self.write_dmesg()
         log_list = self.get_local_log_list(self.log_locations)
         result = self.parse_logs(self.errors, self.ignore_errors, log_list)
-        print self.getHardwareInfo()
+        print(self.getHardwareInfo())
         errcount = 0
         for log in result:
             self.msg += "Log: "+log+"\n"
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/ping.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/ping.py
index 80c4601..0f27447 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/ping.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/ping.py
@@ -14,7 +14,7 @@
         endtime = time.time() + 60
         while count < 5 and time.time() < endtime:
             proc = subprocess.Popen("ping -c 1 %s" % self.target.ip, shell=True, stdout=subprocess.PIPE)
-            output += proc.communicate()[0]
+            output += proc.communicate()[0].decode("utf-8")
             if proc.poll() == 0:
                 count += 1
             else:
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/python.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/python.py
index 26edb7a..29a231c 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/python.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/python.py
@@ -4,7 +4,7 @@
 from oeqa.utils.decorators import *
 
 def setUpModule():
-    if not oeRuntimeTest.hasPackage("python"):
+    if not oeRuntimeTest.hasPackage("python-core"):
         skipModule("No python package in the image")
 
 
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/rpm.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/rpm.py
index 624c515..7f514ca 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/rpm.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/rpm.py
@@ -51,12 +51,32 @@
     @testcase(1096)
     @skipUnlessPassed('test_ssh')
     def test_rpm_query_nonroot(self):
-        (status, output) = self.target.run('useradd test1')
-        self.assertTrue(status == 0, msg="Failed to create new user: " + output)
-        (status, output) = self.target.run('sudo -u test1 id')
-        self.assertTrue('(test1)' in output, msg="Failed to execute as new user")
-        (status, output) = self.target.run('sudo -u test1 rpm -qa')
-        self.assertEqual(status, 0, msg="status: %s. Cannot run rpm -qa: %s" % (status, output))
+
+        def set_up_test_user(u):
+            (status, output) = self.target.run("id -u %s" % u)
+            if status == 0:
+                pass
+            else:
+                (status, output) = self.target.run("useradd %s" % u)
+                self.assertTrue(status == 0, msg="Failed to create new user: " + output)
+
+        def exec_as_test_user(u):
+            (status, output) = self.target.run("su -c id %s" % u)
+            self.assertTrue("({0})".format(u) in output, msg="Failed to execute as new user")
+            (status, output) = self.target.run("su -c \"rpm -qa\" %s " % u)
+            self.assertEqual(status, 0, msg="status: %s. Cannot run rpm -qa: %s" % (status, output))
+
+        def unset_up_test_user(u):
+            (status, output) = self.target.run("userdel -r %s" % u)
+            self.assertTrue(status == 0, msg="Failed to erase user: %s" % output)
+
+        tuser = 'test1'
+
+        try:
+            set_up_test_user(tuser)
+            exec_as_test_user(tuser)
+        finally:
+            unset_up_test_user(tuser)
 
     @testcase(195)
     @skipUnlessPassed('test_rpm_install')
@@ -98,4 +118,3 @@
     @classmethod
     def tearDownClass(self):
         oeRuntimeTest.tc.target.run('rm -f /tmp/rpm-doc.rpm')
-
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/smart.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/smart.py
index 126d614..6cdb10d 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/smart.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/smart.py
@@ -1,5 +1,7 @@
 import unittest
 import re
+import oe
+import subprocess
 from oeqa.oetest import oeRuntimeTest, skipModule
 from oeqa.utils.decorators import *
 from oeqa.utils.httpserver import HTTPService
@@ -7,7 +9,7 @@
 def setUpModule():
     if not oeRuntimeTest.hasFeature("package-management"):
         skipModule("Image doesn't have package management feature")
-    if not oeRuntimeTest.hasPackage("smart"):
+    if not oeRuntimeTest.hasPackage("smartpm"):
         skipModule("Image doesn't have smart installed")
     if "package_rpm" != oeRuntimeTest.tc.d.getVar("PACKAGE_CLASSES", True).split()[0]:
         skipModule("Rpm is not the primary package manager")
@@ -53,9 +55,50 @@
 class SmartRepoTest(SmartTest):
 
     @classmethod
+    def create_index(self, arg):
+        index_cmd = arg
+        try:
+            bb.note("Executing '%s' ..." % index_cmd)
+            result = subprocess.check_output(index_cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
+        except subprocess.CalledProcessError as e:
+            return("Index creation command '%s' failed with return code %d:\n%s" %
+                    (e.cmd, e.returncode, e.output.decode("utf-8")))
+        if result:
+            bb.note(result)
+        return None
+
+    @classmethod
     def setUpClass(self):
         self.repolist = []
-        self.repo_server = HTTPService(oeRuntimeTest.tc.d.getVar('DEPLOY_DIR', True), oeRuntimeTest.tc.target.server_ip)
+
+        # Index RPMs
+        rpm_createrepo = bb.utils.which(os.getenv('PATH'), "createrepo")
+        index_cmds = []
+        rpm_dirs_found = False
+        archs = (oeRuntimeTest.tc.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS', True) or "").replace('-', '_').split()
+        for arch in archs:
+            rpm_dir = os.path.join(oeRuntimeTest.tc.d.getVar('DEPLOY_DIR_RPM', True), arch)
+            idx_path = os.path.join(oeRuntimeTest.tc.d.getVar('WORKDIR', True), 'rpm', arch)
+            db_path = os.path.join(oeRuntimeTest.tc.d.getVar('WORKDIR', True), 'rpmdb', arch)
+            if not os.path.isdir(rpm_dir):
+                continue
+            if os.path.exists(db_path):
+                bb.utils.remove(dbpath, True)
+            lockfilename = oeRuntimeTest.tc.d.getVar('DEPLOY_DIR_RPM', True) + "/rpm.lock"
+            lf = bb.utils.lockfile(lockfilename, False)
+            oe.path.copyhardlinktree(rpm_dir, idx_path)
+            # Full indexes overload a 256MB image so reduce the number of rpms
+            # in the feed. Filter to p* since we use the psplash packages and
+            # this leaves some allarch and machine arch packages too.
+            bb.utils.remove(idx_path + "*/[a-oq-z]*.rpm")
+            bb.utils.unlockfile(lf)
+            index_cmds.append("%s --dbpath %s --update -q %s" % (rpm_createrepo, db_path, idx_path))
+            rpm_dirs_found = True
+         # Create repodata¬
+        result = oe.utils.multiprocess_exec(index_cmds, self.create_index)
+        if result:
+            bb.fatal('%s' % ('\n'.join(result)))
+        self.repo_server = HTTPService(oeRuntimeTest.tc.d.getVar('WORKDIR', True), oeRuntimeTest.tc.target.server_ip)
         self.repo_server.start()
 
     @classmethod
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/syslog.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/syslog.py
index 2601dd9..8f55032 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/syslog.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/syslog.py
@@ -9,7 +9,6 @@
 class SyslogTest(oeRuntimeTest):
 
     @testcase(201)
-    @skipUnlessPassed("test_syslog_help")
     def test_syslog_running(self):
         (status,output) = self.target.run(oeRuntimeTest.pscmd + ' | grep -i [s]yslogd')
         self.assertEqual(status, 0, msg="no syslogd process, ps output: %s" % self.target.run(oeRuntimeTest.pscmd)[1])
@@ -19,8 +18,16 @@
     @testcase(1149)
     @skipUnlessPassed("test_syslog_running")
     def test_syslog_logger(self):
-        (status,output) = self.target.run('logger foobar && test -e /var/log/messages && grep foobar /var/log/messages || logread | grep foobar')
-        self.assertEqual(status, 0, msg="Test log string not found in /var/log/messages. Output: %s " % output)
+        (status, output) = self.target.run('logger foobar')
+        self.assertEqual(status, 0, msg="Can't log into syslog. Output: %s " % output)
+
+        (status, output) = self.target.run('grep foobar /var/log/messages')
+        if status != 0:
+            if oeRuntimeTest.tc.d.getVar("VIRTUAL-RUNTIME_init_manager", "") == "systemd":
+                (status, output) = self.target.run('journalctl -o cat | grep foobar')
+            else:
+                (status, output) = self.target.run('logread | grep foobar')
+        self.assertEqual(status, 0, msg="Test log string not found in /var/log/messages or logread. Output: %s " % output)
 
     @testcase(1150)
     @skipUnlessPassed("test_syslog_running")
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/runtime/systemd.py b/import-layers/yocto-poky/meta/lib/oeqa/runtime/systemd.py
index 2b2f10d..8de799c 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/runtime/systemd.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/runtime/systemd.py
@@ -57,7 +57,7 @@
         self.systemctl('--version')
 
     @testcase(551)
-    @skipUnlessPassed('test_system_basic')
+    @skipUnlessPassed('test_systemd_basic')
     def test_systemd_list(self):
         self.systemctl('list-unit-files')
 
@@ -153,7 +153,7 @@
             if check_match: break
         # put the startup time in the test log
         if check_match:
-            print "%s" % check_match
+            print("%s" % check_match)
         else:
             self.skipTest("Error at obtaining the boot time from journalctl")
         boot_time_sec = 0
@@ -174,5 +174,5 @@
             self.skipTest("Error when parsing time from boot string")
         #Assert the target boot time against systemd's unit start timeout
         if boot_time_sec > systemd_TimeoutStartSec:
-            print "Target boot time %s exceeds systemd's TimeoutStartSec %s"\
-                    %(boot_time_sec, systemd_TimeoutStartSec)
+            print("Target boot time %s exceeds systemd's TimeoutStartSec %s"\
+                    %(boot_time_sec, systemd_TimeoutStartSec))
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildgalculator.py b/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildgalculator.py
new file mode 100644
index 0000000..dc2fa9c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildgalculator.py
@@ -0,0 +1,27 @@
+from oeqa.oetest import oeSDKTest, skipModule
+from oeqa.utils.decorators import *
+from oeqa.utils.targetbuild import SDKBuildProject
+
+def setUpModule():
+    if not (oeSDKTest.hasPackage("gtk+3") or oeSDKTest.hasPackage("libgtk-3.0")):
+        skipModule("Image doesn't have gtk+3 in manifest")
+
+class GalculatorTest(oeSDKTest):
+    def test_galculator(self):
+        try:
+            project = SDKBuildProject(oeSDKTest.tc.sdktestdir + "/galculator/",
+                                      oeSDKTest.tc.sdkenv, oeSDKTest.tc.d,
+                                      "http://galculator.mnim.org/downloads/galculator-2.1.4.tar.bz2")
+
+            project.download_archive()
+
+            # regenerate configure to get support for --with-libtool-sysroot
+            legacy_preconf=("autoreconf -i -f -I ${OECORE_TARGET_SYSROOT}/usr/share/aclocal -I m4;")
+
+            self.assertEqual(project.run_configure(extra_cmds=legacy_preconf),
+                             0, msg="Running configure failed")
+
+            self.assertEqual(project.run_make(), 0,
+                            msg="Running make failed")
+        finally:
+            project.clean()
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildiptables.py b/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildiptables.py
index 062e531..f0cb8a4 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildiptables.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildiptables.py
@@ -8,7 +8,7 @@
     @classmethod
     def setUpClass(self):
         self.project = SDKBuildProject(oeSDKTest.tc.sdktestdir + "/iptables/", oeSDKTest.tc.sdkenv, oeSDKTest.tc.d,
-                        "http://netfilter.org/projects/iptables/files/iptables-1.4.13.tar.bz2")
+                        "http://downloads.yoctoproject.org/mirror/sources/iptables-1.4.13.tar.bz2")
         self.project.download_archive()
 
     def test_iptables(self):
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildsudoku.py b/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildsudoku.py
deleted file mode 100644
index dea77c6..0000000
--- a/import-layers/yocto-poky/meta/lib/oeqa/sdk/buildsudoku.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from oeqa.oetest import oeSDKTest, skipModule
-from oeqa.utils.decorators import *
-from oeqa.utils.targetbuild import SDKBuildProject
-
-def setUpModule():
-    if not oeSDKTest.hasPackage("gtk\+"):
-        skipModule("Image doesn't have gtk+ in manifest")
-
-class SudokuTest(oeSDKTest):
-
-    @classmethod
-    def setUpClass(self):
-        self.project = SDKBuildProject(oeSDKTest.tc.sdktestdir + "/sudoku/", oeSDKTest.tc.sdkenv, oeSDKTest.tc.d,
-                        "http://downloads.sourceforge.net/project/sudoku-savant/sudoku-savant/sudoku-savant-1.3/sudoku-savant-1.3.tar.bz2")
-        self.project.download_archive()
-
-    def test_sudoku(self):
-        self.assertEqual(self.project.run_configure(), 0,
-                        msg="Running configure failed")
-
-        self.assertEqual(self.project.run_make(), 0,
-                        msg="Running make failed")
-
-    @classmethod
-    def tearDownClass(self):
-        self.project.clean()
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/sdkext/devtool.py b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/devtool.py
index c5bb310..65f41f6 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/sdkext/devtool.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/devtool.py
@@ -1,32 +1,108 @@
 import shutil
-
+import subprocess
+import urllib.request
 from oeqa.oetest import oeSDKExtTest
 from oeqa.utils.decorators import *
 
 class DevtoolTest(oeSDKExtTest):
-
     @classmethod
     def setUpClass(self):
         self.myapp_src = os.path.join(self.tc.sdkextfilesdir, "myapp")
         self.myapp_dst = os.path.join(self.tc.sdktestdir, "myapp")
         shutil.copytree(self.myapp_src, self.myapp_dst)
 
+        self.myapp_cmake_src = os.path.join(self.tc.sdkextfilesdir, "myapp_cmake")
+        self.myapp_cmake_dst = os.path.join(self.tc.sdktestdir, "myapp_cmake")
+        shutil.copytree(self.myapp_cmake_src, self.myapp_cmake_dst)
+
+    def _test_devtool_build(self, directory):
+        self._run('devtool add myapp %s' % directory)
+        try:
+            self._run('devtool build myapp')
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset myapp')
+            raise e
+        self._run('devtool reset myapp')
+
+    def _test_devtool_build_package(self, directory):
+        self._run('devtool add myapp %s' % directory)
+        try:
+            self._run('devtool package myapp')
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset myapp')
+            raise e
+        self._run('devtool reset myapp')
+
     def test_devtool_location(self):
         output = self._run('which devtool')
         self.assertEqual(output.startswith(self.tc.sdktestdir), True, \
             msg="Seems that devtool isn't the eSDK one: %s" % output)
-
+    
     @skipUnlessPassed('test_devtool_location')
     def test_devtool_add_reset(self):
         self._run('devtool add myapp %s' % self.myapp_dst)
         self._run('devtool reset myapp')
-
+    
+    @testcase(1473)
     @skipUnlessPassed('test_devtool_location')
-    def test_devtool_build(self):
-        self._run('devtool add myapp %s' % self.myapp_dst)
-        self._run('devtool build myapp')
-        self._run('devtool reset myapp')
+    def test_devtool_build_make(self):
+        self._test_devtool_build(self.myapp_dst)
+    
+    @testcase(1474)
+    @skipUnlessPassed('test_devtool_location')
+    def test_devtool_build_esdk_package(self):
+        self._test_devtool_build_package(self.myapp_dst)
+
+    @testcase(1479)
+    @skipUnlessPassed('test_devtool_location')
+    def test_devtool_build_cmake(self):
+        self._test_devtool_build(self.myapp_cmake_dst)
+    
+    @testcase(1482)
+    @skipUnlessPassed('test_devtool_location')
+    def test_extend_autotools_recipe_creation(self):
+        req = 'https://github.com/rdfa/librdfa'
+        recipe = "bbexample"
+        self._run('devtool add %s %s' % (recipe, req) )
+        try:
+            self._run('devtool build %s' % recipe)
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset %s' % recipe)
+            raise e
+        self._run('devtool reset %s' % recipe)
+
+    @testcase(1484)
+    @skipUnlessPassed('test_devtool_location')
+    def test_devtool_kernelmodule(self):
+        docfile = 'https://github.com/umlaeute/v4l2loopback.git'
+        recipe = 'v4l2loopback-driver'
+        self._run('devtool add %s %s' % (recipe, docfile) )
+        try:
+            self._run('devtool build %s' % recipe)
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset %s' % recipe)
+            raise e
+        self._run('devtool reset %s' % recipe)
+
+    @testcase(1478)
+    @skipUnlessPassed('test_devtool_location')
+    def test_recipes_for_nodejs(self):
+        package_nodejs = "npm://registry.npmjs.org;name=winston;version=2.2.0"
+        self._run('devtool add %s ' % package_nodejs)
+        try:
+            self._run('devtool build %s ' % package_nodejs)
+        except Exception as e:
+            print(e.output)
+            self._run('devtool reset %s' % package_nodejs)
+            raise e
+        self._run('devtool reset %s '% package_nodejs)
+
 
     @classmethod
     def tearDownClass(self):
         shutil.rmtree(self.myapp_dst)
+        shutil.rmtree(self.myapp_cmake_dst)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/sdkext/files/myapp_cmake/CMakeLists.txt b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/files/myapp_cmake/CMakeLists.txt
new file mode 100644
index 0000000..19d773d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/files/myapp_cmake/CMakeLists.txt
@@ -0,0 +1,11 @@
+cmake_minimum_required (VERSION 2.6)
+project (myapp)
+# The version number.
+set (myapp_VERSION_MAJOR 1)
+set (myapp_VERSION_MINOR 0)
+
+# add the executable
+add_executable (myapp myapp.c)
+
+install(TARGETS myapp
+        RUNTIME DESTINATION bin)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c
new file mode 100644
index 0000000..f0b63f0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/files/myapp_cmake/myapp.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int
+main(int argc, char *argv[])
+{
+	printf("Hello world\n");
+
+	return 0;
+}
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/sdkext/sdk_update.py b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/sdk_update.py
index 7a2a6fe..2ade839 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/sdkext/sdk_update.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/sdkext/sdk_update.py
@@ -30,9 +30,6 @@
     def test_sdk_update_http(self):
         output = self._run("devtool sdk-update \"%s\"" % self.http_url)
 
-    def test_sdk_update_local(self):
-        output = self._run("devtool sdk-update \"%s\"" % self.publish_dir)
-
     @classmethod
     def tearDownClass(self):
         self.http_service.stop()
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/_toaster.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/_toaster.py
index c424659..15ea9df 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/_toaster.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/_toaster.py
@@ -2,7 +2,7 @@
 import os
 import sys
 import shlex, subprocess
-import urllib, commands, time, getpass, re, json, shlex
+import urllib.request, urllib.parse, urllib.error, subprocess, time, getpass, re, json, shlex
 
 import oeqa.utils.ftools as ftools
 from oeqa.selftest.base import oeSelfTest
@@ -290,7 +290,7 @@
         layers = Layer.objects.values('id', 'layer_index_url')
         cnt_err = []
         for layer in layers:
-            resp = urllib.urlopen(layer['layer_index_url'])
+            resp = urllib.request.urlopen(layer['layer_index_url'])
             if (resp.getcode() != 200):
                 cnt_err.append(layer['id'])
         self.assertEqual(len(cnt_err), 0, msg = 'Errors for layer id: %s' % cnt_err)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/base.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/base.py
index e10455e..26c93f9 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/base.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/base.py
@@ -28,17 +28,47 @@
     def __init__(self, methodName="runTest"):
         self.builddir = os.environ.get("BUILDDIR")
         self.localconf_path = os.path.join(self.builddir, "conf/local.conf")
+        self.localconf_backup = os.path.join(self.builddir, "conf/local.bk")
         self.testinc_path = os.path.join(self.builddir, "conf/selftest.inc")
         self.local_bblayers_path = os.path.join(self.builddir, "conf/bblayers.conf")
+        self.local_bblayers_backup = os.path.join(self.builddir,
+                                                  "conf/bblayers.bk")
         self.testinc_bblayers_path = os.path.join(self.builddir, "conf/bblayers.inc")
         self.machineinc_path = os.path.join(self.builddir, "conf/machine.inc")
         self.testlayer_path = oeSelfTest.testlayer_path
         self._extra_tear_down_commands = []
-        self._track_for_cleanup = [self.testinc_path, self.testinc_bblayers_path, self.machineinc_path]
+        self._track_for_cleanup = [
+            self.testinc_path, self.testinc_bblayers_path,
+            self.machineinc_path, self.localconf_backup,
+            self.local_bblayers_backup]
         super(oeSelfTest, self).__init__(methodName)
 
     def setUp(self):
         os.chdir(self.builddir)
+        # Check if local.conf or bblayers.conf files backup exists
+        # from a previous failed test and restore them
+        if os.path.isfile(self.localconf_backup) or os.path.isfile(
+                self.local_bblayers_backup):
+            self.log.debug("Found a local.conf and/or bblayers.conf backup \
+from a previously aborted test. Restoring these files now, but tests should \
+be re-executed from a clean environment to ensure accurate results.")
+            try:
+                shutil.copyfile(self.localconf_backup, self.localconf_path)
+            except OSError as e:
+                if e.errno != errno.ENOENT:
+                    raise
+            try:
+                shutil.copyfile(self.local_bblayers_backup,
+                                self.local_bblayers_path)
+            except OSError as e:
+                if e.errno != errno.ENOENT:
+                    raise
+        else:
+            # backup local.conf and bblayers.conf
+            shutil.copyfile(self.localconf_path, self.localconf_backup)
+            shutil.copyfile(self.local_bblayers_path,
+                            self.local_bblayers_backup)
+            self.log.debug("Creating local.conf and bblayers.conf backups.")
         # we don't know what the previous test left around in config or inc files
         # if it failed so we need a fresh start
         try:
@@ -67,7 +97,7 @@
                 machine = custommachine
             machine_conf = 'MACHINE ??= "%s"\n' % machine
             self.set_machine_config(machine_conf)
-            print 'MACHINE: %s' % machine
+            print('MACHINE: %s' % machine)
 
         # tests might need their own setup
         # but if they overwrite this one they have to call
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/bbtests.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/bbtests.py
index 26728a4..baae1e0 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/bbtests.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/bbtests.py
@@ -29,7 +29,7 @@
     def test_event_handler(self):
         self.write_config("INHERIT += \"test_events\"")
         result = bitbake('m4-native')
-        find_build_started = re.search("NOTE: Test for bb\.event\.BuildStarted(\n.*)*NOTE: Preparing RunQueue", result.output)
+        find_build_started = re.search("NOTE: Test for bb\.event\.BuildStarted(\n.*)*NOTE: Executing RunQueue Tasks", result.output)
         find_build_completed = re.search("Tasks Summary:.*(\n.*)*NOTE: Test for bb\.event\.BuildCompleted", result.output)
         self.assertTrue(find_build_started, msg = "Match failed in:\n%s"  % result.output)
         self.assertTrue(find_build_completed, msg = "Match failed in:\n%s" % result.output)
@@ -64,12 +64,15 @@
 
     @testcase(108)
     def test_invalid_patch(self):
+        # This patch already exists in SRC_URI so adding it again will cause the
+        # patch to fail.
         self.write_recipeinc('man', 'SRC_URI += "file://man-1.5h1-make.patch"')
+        self.write_config("INHERIT_remove = \"report-error\"")
         result = bitbake('man -c patch', ignore_status=True)
         self.delete_recipeinc('man')
         bitbake('-cclean man')
         line = self.getline(result, "Function failed: patch_do_patch")
-        self.assertTrue(line and line.startswith("ERROR:"), msg = "Though no man-1.5h1-make.patch file exists, bitbake didn't output any err. message. bitbake output: %s" % result.output)
+        self.assertTrue(line and line.startswith("ERROR:"), msg = "Repeated patch application didn't fail. bitbake output: %s" % result.output)
 
     @testcase(1354)
     def test_force_task_1(self):
@@ -131,6 +134,7 @@
         self.write_recipeinc('man', data)
         self.write_config("""DL_DIR = \"${TOPDIR}/download-selftest\"
 SSTATE_DIR = \"${TOPDIR}/download-selftest\"
+INHERIT_remove = \"report-error\"
 """)
         self.track_for_cleanup(os.path.join(self.builddir, "download-selftest"))
 
@@ -141,7 +145,7 @@
         self.assertEqual(result.status, 1, msg="Command succeded when it should have failed. bitbake output: %s" % result.output)
         self.assertTrue('Fetcher failure: Unable to find file file://invalid anywhere. The paths that were searched were:' in result.output, msg = "\"invalid\" file \
 doesn't exist, yet no error message encountered. bitbake output: %s" % result.output)
-        line = self.getline(result, 'Function failed: Fetcher failure for URL: \'file://invalid\'. Unable to fetch URL from any source.')
+        line = self.getline(result, 'Fetcher failure for URL: \'file://invalid\'. Unable to fetch URL from any source.')
         self.assertTrue(line and line.startswith("ERROR:"), msg = "\"invalid\" file \
 doesn't exist, yet fetcher didn't report any error. bitbake output: %s" % result.output)
 
@@ -212,6 +216,7 @@
     def test_continue(self):
         self.write_config("""DL_DIR = \"${TOPDIR}/download-selftest\"
 SSTATE_DIR = \"${TOPDIR}/download-selftest\"
+INHERIT_remove = \"report-error\"
 """)
         self.track_for_cleanup(os.path.join(self.builddir, "download-selftest"))
         self.write_recipeinc('man',"\ndo_fail_task () {\nexit 1 \n}\n\naddtask do_fail_task before do_fetch\n" )
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/buildoptions.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/buildoptions.py
index 35d5dfd..9487898 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/buildoptions.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/buildoptions.py
@@ -30,22 +30,6 @@
         incremental_removed = re.search("NOTE: load old install solution for incremental install\nNOTE: creating new install solution for incremental install(\n.*)*NOTE: incremental removed:.*openssh-sshd-.*", log_data_removed)
         self.assertTrue(incremental_removed, msg = "Match failed in:\n%s" % log_data_removed)
 
-    @testcase(925)
-    def test_rm_old_image(self):
-        bitbake("core-image-minimal")
-        deploydir = get_bb_var("DEPLOY_DIR_IMAGE", target="core-image-minimal")
-        imagename = get_bb_var("IMAGE_LINK_NAME", target="core-image-minimal")
-        deploydir_files = os.listdir(deploydir)
-        track_original_files = []
-        for image_file in deploydir_files:
-            if imagename in image_file and os.path.islink(os.path.join(deploydir, image_file)):
-                track_original_files.append(os.path.realpath(os.path.join(deploydir, image_file)))
-        self.write_config("RM_OLD_IMAGE = \"1\"")
-        bitbake("-C rootfs core-image-minimal")
-        deploydir_files = os.listdir(deploydir)
-        remaining_not_expected = [path for path in track_original_files if os.path.basename(path) in deploydir_files]
-        self.assertFalse(remaining_not_expected, msg="\nThe following image files were not removed: %s" % ', '.join(map(str, remaining_not_expected)))
-
     @testcase(286)
     def test_ccache_tool(self):
         bitbake("ccache-native")
@@ -89,8 +73,9 @@
     def test_options_warnqa_errorqa_switch(self):
         bitbake("xcursor-transparent-theme -ccleansstate")
 
+        self.write_config("INHERIT_remove = \"report-error\"")
         if "packages-list" not in get_bb_var("ERROR_QA"):
-            self.write_config("ERROR_QA_append = \" packages-list\"")
+            self.append_config("ERROR_QA_append = \" packages-list\"")
 
         self.write_recipeinc('xcursor-transparent-theme', 'PACKAGES += \"${PN}-dbg\"')
         res = bitbake("xcursor-transparent-theme", ignore_status=True)
@@ -199,78 +184,6 @@
         self.run_buildhistory_operation(target, target_config="PR = \"r1\"", change_bh_location=True)
         self.run_buildhistory_operation(target, target_config="PR = \"r0\"", change_bh_location=False, expect_error=True, error_regex=error)
 
-    @testcase(1386)
-    def test_buildhistory_does_not_change_signatures(self):
-        """
-        Summary:     Ensure that buildhistory does not change signatures
-        Expected:    Only 'do_rootfs' task should be rerun
-        Product:     oe-core
-        Author:      Daniel Istrate <daniel.alexandrux.istrate@intel.com>
-        AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
-        """
-
-        tmpdir1_name = 'tmpsig1'
-        tmpdir2_name = 'tmpsig2'
-        builddir = os.environ.get('BUILDDIR')
-        tmpdir1 = os.path.join(builddir, tmpdir1_name)
-        tmpdir2 = os.path.join(builddir, tmpdir2_name)
-
-        self.track_for_cleanup(tmpdir1)
-        self.track_for_cleanup(tmpdir2)
-
-        features = 'TMPDIR = "%s"\n' % tmpdir1
-        self.write_config(features)
-        bitbake('core-image-minimal -S none -c rootfs')
-
-        features = 'TMPDIR = "%s"\n' % tmpdir2
-        features += 'INHERIT += "buildhistory"\n'
-        self.write_config(features)
-        bitbake('core-image-minimal -S none -c rootfs')
-
-        def get_files(d):
-            f = []
-            for root, dirs, files in os.walk(d):
-                for name in files:
-                    f.append(os.path.join(root, name))
-            return f
-
-        files1 = get_files(tmpdir1 + '/stamps')
-        files2 = get_files(tmpdir2 + '/stamps')
-        files2 = [x.replace(tmpdir2_name, tmpdir1_name) for x in files2]
-
-        f1 = set(files1)
-        f2 = set(files2)
-        sigdiff = f1 - f2
-
-        self.assertEqual(len(sigdiff), 1, 'Expected 1 signature differences. Out: %s' % list(sigdiff))
-
-        unexpected_diff = []
-
-        # No new signatures should appear apart from do_rootfs
-        found_do_rootfs_flag = False
-
-        for sig in sigdiff:
-            if 'do_rootfs' in sig:
-                found_do_rootfs_flag = True
-            else:
-                unexpected_diff.append(sig)
-
-        self.assertTrue(found_do_rootfs_flag, 'Task do_rootfs did not rerun.')
-        self.assertFalse(unexpected_diff, 'Found unexpected signature differences. Out: %s' % unexpected_diff)
-
-
-class BuildImagesTest(oeSelfTest):
-    @testcase(563)
-    def test_directfb(self):
-        """
-        This method is used to test the build of directfb image for arm arch.
-        In essence we build a coreimagedirectfb and test the exitcode of bitbake that in case of success is 0.
-        """
-        self.add_command_to_tearDown('cleanup-workdir')
-        self.write_config("DISTRO_FEATURES_remove = \"x11\"\nDISTRO_FEATURES_append = \" directfb\"\nMACHINE ??= \"qemuarm\"")
-        res = bitbake("core-image-directfb", ignore_status=True)
-        self.assertEqual(res.status, 0, "\ncoreimagedirectfb failed to build. Please check logs for further details.\nbitbake output %s" % res.output)
-
 class ArchiverTest(oeSelfTest):
     @testcase(926)
     def test_arch_work_dir_and_export_source(self):
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/devtool.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/devtool.py
index 132a73d..e992dcf 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/devtool.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/devtool.py
@@ -5,10 +5,11 @@
 import shutil
 import tempfile
 import glob
+import fnmatch
 
 import oeqa.utils.ftools as ftools
 from oeqa.selftest.base import oeSelfTest
-from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer, runqemu
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer, runqemu, get_test_layer
 from oeqa.utils.decorators import testcase
 
 class DevtoolBase(oeSelfTest):
@@ -50,7 +51,7 @@
 
 
         missingvars = {}
-        for var, value in checkvars.iteritems():
+        for var, value in checkvars.items():
             if value is not None:
                 missingvars[var] = value
         self.assertEqual(missingvars, {}, 'Some expected variables not found in recipe: %s' % checkvars)
@@ -207,12 +208,14 @@
         tempdir = tempfile.mkdtemp(prefix='devtoolqa')
         self.track_for_cleanup(tempdir)
         pn = 'dbus-wait'
+        srcrev = '6cc6077a36fe2648a5f993fe7c16c9632f946517'
         # We choose an https:// git URL here to check rewriting the URL works
         url = 'https://git.yoctoproject.org/git/dbus-wait'
         # Force fetching to "noname" subdir so we verify we're picking up the name from autoconf
         # instead of the directory name
         result = runCmd('git clone %s noname' % url, cwd=tempdir)
         srcdir = os.path.join(tempdir, 'noname')
+        result = runCmd('git reset --hard %s' % srcrev, cwd=srcdir)
         self.assertTrue(os.path.isfile(os.path.join(srcdir, 'configure.ac')), 'Unable to find configure script in source directory')
         # Test devtool add
         self.track_for_cleanup(self.workspacedir)
@@ -235,7 +238,7 @@
         checkvars['S'] = '${WORKDIR}/git'
         checkvars['PV'] = '0.1+git${SRCPV}'
         checkvars['SRC_URI'] = 'git://git.yoctoproject.org/git/dbus-wait;protocol=https'
-        checkvars['SRCREV'] = '${AUTOREV}'
+        checkvars['SRCREV'] = srcrev
         checkvars['DEPENDS'] = set(['dbus'])
         self._test_recipe_contents(recipefile, checkvars, [])
 
@@ -345,7 +348,7 @@
         self.track_for_cleanup(self.workspacedir)
         self.add_command_to_tearDown('bitbake -c cleansstate %s' % testrecipe)
         self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
-        result = runCmd('devtool add %s %s -f %s' % (testrecipe, srcdir, url))
+        result = runCmd('devtool add %s %s -a -f %s' % (testrecipe, srcdir, url))
         self.assertTrue(os.path.exists(os.path.join(self.workspacedir, 'conf', 'layer.conf')), 'Workspace directory not created: %s' % result.output)
         self.assertTrue(os.path.isfile(os.path.join(srcdir, 'configure.ac')), 'Unable to find configure.ac in source directory')
         # Test devtool status
@@ -357,7 +360,7 @@
         self.assertIn('_git.bb', recipefile, 'Recipe file incorrectly named')
         checkvars = {}
         checkvars['S'] = '${WORKDIR}/git'
-        checkvars['PV'] = '1.11+git${SRCPV}'
+        checkvars['PV'] = '1.12+git${SRCPV}'
         checkvars['SRC_URI'] = url
         checkvars['SRCREV'] = '${AUTOREV}'
         self._test_recipe_contents(recipefile, checkvars, [])
@@ -465,12 +468,11 @@
         testrecipes = 'perf kernel-devsrc package-index core-image-minimal meta-toolchain packagegroup-core-sdk meta-ide-support'.split()
         # Find actual name of gcc-source since it now includes the version - crude, but good enough for this purpose
         result = runCmd('bitbake-layers show-recipes gcc-source*')
-        reading = False
         for line in result.output.splitlines():
-            if line.startswith('=='):
-                reading = True
-            elif reading and not line.startswith(' '):
-                testrecipes.append(line.split(':')[0])
+            # just match those lines that contain a real target
+            m = re.match('(?P<recipe>^[a-zA-Z0-9.-]+)(?P<colon>:$)', line)
+            if m:
+                testrecipes.append(m.group('recipe'))
         for testrecipe in testrecipes:
             # Check it's a valid recipe
             bitbake('%s -e' % testrecipe)
@@ -816,28 +818,28 @@
 
         # Check bbappend contents
         result = runCmd('git rev-parse HEAD', cwd=tempsrcdir)
-        expectedlines = ['SRCREV = "%s"\n' % result.output,
-                         '\n',
-                         'SRC_URI = "%s"\n' % git_uri,
-                         '\n']
+        expectedlines = set(['SRCREV = "%s"\n' % result.output,
+                             '\n',
+                             'SRC_URI = "%s"\n' % git_uri,
+                             '\n'])
         with open(bbappendfile, 'r') as f:
-            self.assertEqual(expectedlines, f.readlines())
+            self.assertEqual(expectedlines, set(f.readlines()))
 
         # Check we can run it again and bbappend isn't modified
         result = runCmd('devtool update-recipe -m srcrev %s -a %s' % (testrecipe, templayerdir))
         with open(bbappendfile, 'r') as f:
-            self.assertEqual(expectedlines, f.readlines())
+            self.assertEqual(expectedlines, set(f.readlines()))
         # Drop new commit and check SRCREV changes
         result = runCmd('git reset HEAD^', cwd=tempsrcdir)
         result = runCmd('devtool update-recipe -m srcrev %s -a %s' % (testrecipe, templayerdir))
         self.assertFalse(os.path.exists(os.path.join(appenddir, testrecipe)), 'Patch directory should not be created')
         result = runCmd('git rev-parse HEAD', cwd=tempsrcdir)
-        expectedlines = ['SRCREV = "%s"\n' % result.output,
-                         '\n',
-                         'SRC_URI = "%s"\n' % git_uri,
-                         '\n']
+        expectedlines = set(['SRCREV = "%s"\n' % result.output,
+                             '\n',
+                             'SRC_URI = "%s"\n' % git_uri,
+                             '\n'])
         with open(bbappendfile, 'r') as f:
-            self.assertEqual(expectedlines, f.readlines())
+            self.assertEqual(expectedlines, set(f.readlines()))
         # Put commit back and check we can run it if layer isn't in bblayers.conf
         os.remove(bbappendfile)
         result = runCmd('git commit -a -m "Change the Makefile"', cwd=tempsrcdir)
@@ -846,12 +848,12 @@
         self.assertIn('WARNING: Specified layer is not currently enabled in bblayers.conf', result.output)
         self.assertFalse(os.path.exists(os.path.join(appenddir, testrecipe)), 'Patch directory should not be created')
         result = runCmd('git rev-parse HEAD', cwd=tempsrcdir)
-        expectedlines = ['SRCREV = "%s"\n' % result.output,
-                         '\n',
-                         'SRC_URI = "%s"\n' % git_uri,
-                         '\n']
+        expectedlines = set(['SRCREV = "%s"\n' % result.output,
+                             '\n',
+                             'SRC_URI = "%s"\n' % git_uri,
+                             '\n'])
         with open(bbappendfile, 'r') as f:
-            self.assertEqual(expectedlines, f.readlines())
+            self.assertEqual(expectedlines, set(f.readlines()))
         # Deleting isn't expected to work under these circumstances
 
     @testcase(1370)
@@ -1188,3 +1190,159 @@
         s = "Microsoft Made No Profit From Anyone's Zunes Yo"
         result = runCmd("devtool --quiet selftest-reverse \"%s\"" % s)
         self.assertEqual(result.output, s[::-1])
+
+    def _setup_test_devtool_finish_upgrade(self):
+        # Check preconditions
+        self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
+        self.track_for_cleanup(self.workspacedir)
+        self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+        # Use a "real" recipe from meta-selftest
+        recipe = 'devtool-upgrade-test1'
+        oldversion = '1.5.3'
+        newversion = '1.6.0'
+        oldrecipefile = get_bb_var('FILE', recipe)
+        recipedir = os.path.dirname(oldrecipefile)
+        result = runCmd('git status --porcelain .', cwd=recipedir)
+        if result.output.strip():
+            self.fail('Recipe directory for %s contains uncommitted changes' % recipe)
+        tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+        self.track_for_cleanup(tempdir)
+        # Check that recipe is not already under devtool control
+        result = runCmd('devtool status')
+        self.assertNotIn(recipe, result.output)
+        # Do the upgrade
+        result = runCmd('devtool upgrade %s %s -V %s' % (recipe, tempdir, newversion))
+        # Check devtool status and make sure recipe is present
+        result = runCmd('devtool status')
+        self.assertIn(recipe, result.output)
+        self.assertIn(tempdir, result.output)
+        # Make a change to the source
+        result = runCmd('sed -i \'/^#include "pv.h"/a \\/* Here is a new comment *\\/\' src/pv/number.c', cwd=tempdir)
+        result = runCmd('git status --porcelain', cwd=tempdir)
+        self.assertIn('M src/pv/number.c', result.output)
+        result = runCmd('git commit src/pv/number.c -m "Add a comment to the code"', cwd=tempdir)
+        # Check if patch is there
+        recipedir = os.path.dirname(oldrecipefile)
+        olddir = os.path.join(recipedir, recipe + '-' + oldversion)
+        patchfn = '0001-Add-a-note-line-to-the-quick-reference.patch'
+        self.assertTrue(os.path.exists(os.path.join(olddir, patchfn)), 'Original patch file does not exist')
+        return recipe, oldrecipefile, recipedir, olddir, newversion, patchfn
+
+    def test_devtool_finish_upgrade_origlayer(self):
+        recipe, oldrecipefile, recipedir, olddir, newversion, patchfn = self._setup_test_devtool_finish_upgrade()
+        # Ensure the recipe is where we think it should be (so that cleanup doesn't trash things)
+        self.assertIn('/meta-selftest/', recipedir)
+        # Try finish to the original layer
+        self.add_command_to_tearDown('rm -rf %s ; cd %s ; git checkout %s' % (recipedir, os.path.dirname(recipedir), recipedir))
+        result = runCmd('devtool finish %s meta-selftest' % recipe)
+        result = runCmd('devtool status')
+        self.assertNotIn(recipe, result.output, 'Recipe should have been reset by finish but wasn\'t')
+        self.assertFalse(os.path.exists(os.path.join(self.workspacedir, 'recipes', recipe)), 'Recipe directory should not exist after finish')
+        self.assertFalse(os.path.exists(oldrecipefile), 'Old recipe file should have been deleted but wasn\'t')
+        self.assertFalse(os.path.exists(os.path.join(olddir, patchfn)), 'Old patch file should have been deleted but wasn\'t')
+        newrecipefile = os.path.join(recipedir, '%s_%s.bb' % (recipe, newversion))
+        newdir = os.path.join(recipedir, recipe + '-' + newversion)
+        self.assertTrue(os.path.exists(newrecipefile), 'New recipe file should have been copied into existing layer but wasn\'t')
+        self.assertTrue(os.path.exists(os.path.join(newdir, patchfn)), 'Patch file should have been copied into new directory but wasn\'t')
+        self.assertTrue(os.path.exists(os.path.join(newdir, '0002-Add-a-comment-to-the-code.patch')), 'New patch file should have been created but wasn\'t')
+
+    def test_devtool_finish_upgrade_otherlayer(self):
+        recipe, oldrecipefile, recipedir, olddir, newversion, patchfn = self._setup_test_devtool_finish_upgrade()
+        # Ensure the recipe is where we think it should be (so that cleanup doesn't trash things)
+        self.assertIn('/meta-selftest/', recipedir)
+        # Try finish to a different layer - should create a bbappend
+        # This cleanup isn't strictly necessary but do it anyway just in case it goes wrong and writes to here
+        self.add_command_to_tearDown('rm -rf %s ; cd %s ; git checkout %s' % (recipedir, os.path.dirname(recipedir), recipedir))
+        oe_core_dir = os.path.join(get_bb_var('COREBASE'), 'meta')
+        newrecipedir = os.path.join(oe_core_dir, 'recipes-test', 'devtool')
+        newrecipefile = os.path.join(newrecipedir, '%s_%s.bb' % (recipe, newversion))
+        self.track_for_cleanup(newrecipedir)
+        result = runCmd('devtool finish %s oe-core' % recipe)
+        result = runCmd('devtool status')
+        self.assertNotIn(recipe, result.output, 'Recipe should have been reset by finish but wasn\'t')
+        self.assertFalse(os.path.exists(os.path.join(self.workspacedir, 'recipes', recipe)), 'Recipe directory should not exist after finish')
+        self.assertTrue(os.path.exists(oldrecipefile), 'Old recipe file should not have been deleted')
+        self.assertTrue(os.path.exists(os.path.join(olddir, patchfn)), 'Old patch file should not have been deleted')
+        newdir = os.path.join(newrecipedir, recipe + '-' + newversion)
+        self.assertTrue(os.path.exists(newrecipefile), 'New recipe file should have been copied into existing layer but wasn\'t')
+        self.assertTrue(os.path.exists(os.path.join(newdir, patchfn)), 'Patch file should have been copied into new directory but wasn\'t')
+        self.assertTrue(os.path.exists(os.path.join(newdir, '0002-Add-a-comment-to-the-code.patch')), 'New patch file should have been created but wasn\'t')
+
+    def _setup_test_devtool_finish_modify(self):
+        # Check preconditions
+        self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
+        # Try modifying a recipe
+        self.track_for_cleanup(self.workspacedir)
+        recipe = 'mdadm'
+        oldrecipefile = get_bb_var('FILE', recipe)
+        recipedir = os.path.dirname(oldrecipefile)
+        result = runCmd('git status --porcelain .', cwd=recipedir)
+        if result.output.strip():
+            self.fail('Recipe directory for %s contains uncommitted changes' % recipe)
+        tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+        self.track_for_cleanup(tempdir)
+        self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+        result = runCmd('devtool modify %s %s' % (recipe, tempdir))
+        self.assertTrue(os.path.exists(os.path.join(tempdir, 'Makefile')), 'Extracted source could not be found')
+        # Test devtool status
+        result = runCmd('devtool status')
+        self.assertIn(recipe, result.output)
+        self.assertIn(tempdir, result.output)
+        # Make a change to the source
+        result = runCmd('sed -i \'/^#include "mdadm.h"/a \\/* Here is a new comment *\\/\' maps.c', cwd=tempdir)
+        result = runCmd('git status --porcelain', cwd=tempdir)
+        self.assertIn('M maps.c', result.output)
+        result = runCmd('git commit maps.c -m "Add a comment to the code"', cwd=tempdir)
+        for entry in os.listdir(recipedir):
+            filesdir = os.path.join(recipedir, entry)
+            if os.path.isdir(filesdir):
+                break
+        else:
+            self.fail('Unable to find recipe files directory for %s' % recipe)
+        return recipe, oldrecipefile, recipedir, filesdir
+
+    def test_devtool_finish_modify_origlayer(self):
+        recipe, oldrecipefile, recipedir, filesdir = self._setup_test_devtool_finish_modify()
+        # Ensure the recipe is where we think it should be (so that cleanup doesn't trash things)
+        self.assertIn('/meta/', recipedir)
+        # Try finish to the original layer
+        self.add_command_to_tearDown('rm -rf %s ; cd %s ; git checkout %s' % (recipedir, os.path.dirname(recipedir), recipedir))
+        result = runCmd('devtool finish %s meta' % recipe)
+        result = runCmd('devtool status')
+        self.assertNotIn(recipe, result.output, 'Recipe should have been reset by finish but wasn\'t')
+        self.assertFalse(os.path.exists(os.path.join(self.workspacedir, 'recipes', recipe)), 'Recipe directory should not exist after finish')
+        expected_status = [(' M', '.*/%s$' % os.path.basename(oldrecipefile)),
+                           ('??', '.*/.*-Add-a-comment-to-the-code.patch$')]
+        self._check_repo_status(recipedir, expected_status)
+
+    def test_devtool_finish_modify_otherlayer(self):
+        recipe, oldrecipefile, recipedir, filesdir = self._setup_test_devtool_finish_modify()
+        # Ensure the recipe is where we think it should be (so that cleanup doesn't trash things)
+        self.assertIn('/meta/', recipedir)
+        relpth = os.path.relpath(recipedir, os.path.join(get_bb_var('COREBASE'), 'meta'))
+        appenddir = os.path.join(get_test_layer(), relpth)
+        self.track_for_cleanup(appenddir)
+        # Try finish to the original layer
+        self.add_command_to_tearDown('rm -rf %s ; cd %s ; git checkout %s' % (recipedir, os.path.dirname(recipedir), recipedir))
+        result = runCmd('devtool finish %s meta-selftest' % recipe)
+        result = runCmd('devtool status')
+        self.assertNotIn(recipe, result.output, 'Recipe should have been reset by finish but wasn\'t')
+        self.assertFalse(os.path.exists(os.path.join(self.workspacedir, 'recipes', recipe)), 'Recipe directory should not exist after finish')
+        result = runCmd('git status --porcelain .', cwd=recipedir)
+        if result.output.strip():
+            self.fail('Recipe directory for %s contains the following unexpected changes after finish:\n%s' % (recipe, result.output.strip()))
+        recipefn = os.path.splitext(os.path.basename(oldrecipefile))[0]
+        recipefn = recipefn.split('_')[0] + '_%'
+        appendfile = os.path.join(appenddir, recipefn + '.bbappend')
+        self.assertTrue(os.path.exists(appendfile), 'bbappend %s should have been created but wasn\'t' % appendfile)
+        newdir = os.path.join(appenddir, recipe)
+        files = os.listdir(newdir)
+        foundpatch = None
+        for fn in files:
+            if fnmatch.fnmatch(fn, '*-Add-a-comment-to-the-code.patch'):
+                foundpatch = fn
+        if not foundpatch:
+            self.fail('No patch file created next to bbappend')
+        files.remove(foundpatch)
+        if files:
+            self.fail('Unexpected file(s) copied next to bbappend: %s' % ', '.join(files))
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/eSDK.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/eSDK.py
new file mode 100644
index 0000000..9d5c680
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/eSDK.py
@@ -0,0 +1,103 @@
+import unittest
+import tempfile
+import shutil
+import os
+import glob
+import logging
+import subprocess
+import oeqa.utils.ftools as ftools
+from oeqa.utils.decorators import testcase 
+from oeqa.selftest.base import oeSelfTest
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var
+from oeqa.utils.httpserver import HTTPService
+
+class oeSDKExtSelfTest(oeSelfTest):
+    """
+    # Bugzilla Test Plan: 6033
+    # This code is planned to be part of the automation for eSDK containig
+    # Install libraries and headers, image generation binary feeds.
+    """
+
+    @staticmethod
+    def get_esdk_environment(env_eSDK, tmpdir_eSDKQA):
+        # XXX: at this time use the first env need to investigate
+        # what environment load oe-selftest, i586, x86_64
+        pattern = os.path.join(tmpdir_eSDKQA, 'environment-setup-*')
+        return glob.glob(pattern)[0]
+    
+    @staticmethod
+    def run_esdk_cmd(env_eSDK, tmpdir_eSDKQA, cmd, postconfig=None, **options):
+        if postconfig:
+            esdk_conf_file = os.path.join(tmpdir_eSDKQA, 'conf', 'local.conf')
+            with open(esdk_conf_file, 'a+') as f:
+                f.write(postconfig)
+        if not options:
+            options = {}
+        if not 'shell' in options:
+            options['shell'] = True
+
+        runCmd("cd %s; . %s; %s" % (tmpdir_eSDKQA, env_eSDK, cmd), **options)
+
+    @staticmethod
+    def generate_eSDK(image):
+        pn_task = '%s -c populate_sdk_ext' % image
+        bitbake(pn_task)
+
+    @staticmethod
+    def get_eSDK_toolchain(image):
+        pn_task = '%s -c populate_sdk_ext' % image
+
+        sdk_deploy = get_bb_var('SDK_DEPLOY', pn_task)
+        toolchain_name = get_bb_var('TOOLCHAINEXT_OUTPUTNAME', pn_task)
+        return os.path.join(sdk_deploy, toolchain_name + '.sh')
+    
+
+    @classmethod
+    def setUpClass(cls):
+        # Start to serve sstate dir
+        sstate_dir = os.path.join(os.environ['BUILDDIR'], 'sstate-cache')
+        cls.http_service = HTTPService(sstate_dir)
+        cls.http_service.start()
+
+        http_url = "127.0.0.1:%d" % cls.http_service.port
+ 
+        image = 'core-image-minimal'
+
+        cls.tmpdir_eSDKQA = tempfile.mkdtemp(prefix='eSDKQA')
+        oeSDKExtSelfTest.generate_eSDK(image)
+
+        # Install eSDK
+        ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(image)
+        runCmd("%s -y -d \"%s\"" % (ext_sdk_path, cls.tmpdir_eSDKQA))
+
+        cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
+
+        # Configure eSDK to use sstate mirror from poky
+        sstate_config="""
+SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
+SSTATE_MIRRORS =  "file://.* http://%s/PATH"
+        """ % http_url
+        with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
+            f.write(sstate_config)
+
+      
+    @classmethod
+    def tearDownClass(cls):
+        shutil.rmtree(cls.tmpdir_eSDKQA)
+        cls.http_service.stop()
+
+    @testcase (1471)
+    def test_install_libraries_headers(self):
+        pn_sstate = 'bc'
+        bitbake(pn_sstate)
+        cmd = "devtool sdk-install %s " % pn_sstate
+        oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)
+    
+    @testcase(1472)
+    def test_image_generation_binary_feeds(self):
+        image = 'core-image-minimal'
+        cmd = "devtool build-image %s" % image
+        oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/esdk_prepare.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/esdk_prepare.py
deleted file mode 100755
index 1b36a0d..0000000
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/esdk_prepare.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env python
-
-import shutil, tempfile
-import sys
-import os
-import imp
-import unittest
-try:
-    from oeqa.utils.commands import get_bb_var
-except ImportError:
-    pass
-
-# module under test
-module_file_name = "ext-sdk-prepare.py"
-module_path = ""
-
-class ExtSdkPrepareTest(unittest.TestCase):
-
-    """ unit test for fix for Yocto #9019 """
-
-    @classmethod
-    def setUpClass(self):
-        # copy module under test to temp dir
-        self.test_dir = tempfile.mkdtemp()
-        module_dest_path = os.path.join(self.test_dir, module_file_name)
-        try:
-            shutil.copy(module_path, self.test_dir)
-            # load module under test
-            self.test_mod = imp.load_source("", module_dest_path)
-        except:
-            print "error: unable to copy or load %s [src: %s, dst: %s]" % \
-                    (module_file_name, module_path, module_dest_path)
-            sys.exit(1)
-
-    def test_prepare_unexpected(self):
-        # test data
-        # note: pathnames have been truncated from the actual bitbake
-        # output as they are not important for the test.
-        test_data = ( 
-            'NOTE: Running noexec task 9 of 6539 (ID: 28, quilt/quilt-native_0.64.bb, do_build)\n'
-            'NOTE: Running task 10 of 6539 (ID: 29, quilt/quilt-native_0.64.bb, do_package)\n'
-            'NOTE: Running task 11 of 6539 (ID: 30, quilt/quilt-native_0.64.bb, do_rm_work)\n'
-            'NOTE: Running noexec task 6402 of 6539 (ID: 1, images/core-image-sato.bb, do_patch)\n'
-            'NOTE: Running task 6538 of 6539 (ID: 14, images/core-image-sato.bb, do_rm_work)\n'
-        )
-        # expected warning output
-        expected = [ (' task 10 of 6539 (ID: 29, quilt/quilt-native_0.64.bb, do_package)') ]
-        # recipe to test, matching test input data
-        recipes = [ "core-image-sato.bb" ]
-
-        # run the test
-        output = self.test_mod.check_unexpected(test_data, recipes)
-        self.assertEqual(output, expected)
-
-    @classmethod
-    def tearDownClass(self):
-        # remove temp dir
-        shutil.rmtree(self.test_dir)
-
-if __name__ == '__main__':
-    # running from command line - i.e., not under oe-selftest
-    # directory containing module under test comes from command line
-    if len(sys.argv) == 2 and os.path.isdir(sys.argv[1]):
-        module_path = os.path.join(sys.argv[1], module_file_name)
-        suite = unittest.TestLoader().loadTestsFromTestCase(ExtSdkPrepareTest)
-        unittest.TextTestRunner().run(suite)
-    else:
-        progname = os.path.basename(sys.argv[0])
-        print "%s: missing directory path" % progname
-        print "usage: %s /path/to/directory-of(ext-sdk-prepare.py)" % progname
-        sys.exit(1)
-else:
-    # running under oe-selftest
-    # determine module source dir from COREBASE and expected path
-    module_path = os.path.join(get_bb_var("COREBASE"), "meta", "files", module_file_name)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/imagefeatures.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/imagefeatures.py
index 8a53899..d015c49 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/imagefeatures.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/imagefeatures.py
@@ -98,3 +98,30 @@
         # Build a core-image-weston
         bitbake('core-image-weston')
 
+    def test_bmap(self):
+        """
+        Summary:     Check bmap support
+        Expected:    1. core-image-minimal can be build with bmap support
+                     2. core-image-minimal is sparse
+        Product:     oe-core
+        Author:      Ed Bartosh <ed.bartosh@linux.intel.com>
+        """
+
+        features = 'IMAGE_FSTYPES += " ext4 ext4.bmap"'
+        self.write_config(features)
+
+        image_name = 'core-image-minimal'
+        bitbake(image_name)
+
+        deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+        link_name = get_bb_var('IMAGE_LINK_NAME', image_name)
+        image_path = os.path.join(deploy_dir_image, "%s.ext4" % link_name)
+        bmap_path = "%s.bmap" % image_path
+
+        # check if result image and bmap file are in deploy directory
+        self.assertTrue(os.path.exists(image_path))
+        self.assertTrue(os.path.exists(bmap_path))
+
+        # check if result image is sparse
+        image_stat = os.stat(image_path)
+        self.assertTrue(image_stat.st_size > image_stat.st_blocks * 512)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/liboe.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/liboe.py
new file mode 100644
index 0000000..35131eb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/liboe.py
@@ -0,0 +1,93 @@
+from oeqa.selftest.base import oeSelfTest
+from oeqa.utils.commands import get_bb_var, bitbake, runCmd
+import oe.path
+import glob
+import os
+import os.path
+
+class LibOE(oeSelfTest):
+    def test_copy_tree_special(self):
+        """
+        Summary:    oe.path.copytree() should copy files with special character
+        Expected:   'test file with sp£c!al @nd spaces' should exist in
+                    copy destination
+        Product:    OE-Core
+        Author:     Joshua Lock <joshua.g.lock@intel.com>
+        """
+        tmp_dir = get_bb_var('TMPDIR')
+        testloc = oe.path.join(tmp_dir, 'liboetests')
+        src = oe.path.join(testloc, 'src')
+        dst = oe.path.join(testloc, 'dst')
+        bb.utils.mkdirhier(testloc)
+        bb.utils.mkdirhier(src)
+        testfilename = 'test file with sp£c!al @nd spaces'
+
+        # create the test file and copy it
+        open(oe.path.join(src, testfilename), 'w+b').close()
+        oe.path.copytree(src, dst)
+
+        # ensure path exists in dest
+        fileindst = os.path.isfile(oe.path.join(dst, testfilename))
+        self.assertTrue(fileindst, "File with spaces doesn't exist in dst")
+
+        oe.path.remove(testloc)
+
+    def test_copy_tree_xattr(self):
+        """
+        Summary:    oe.path.copytree() should preserve xattr on copied files
+        Expected:   testxattr file in destination should have user.oetest
+                    extended attribute
+        Product:    OE-Core
+        Author:     Joshua Lock <joshua.g.lock@intel.com>
+        """
+        tmp_dir = get_bb_var('TMPDIR')
+        testloc = oe.path.join(tmp_dir, 'liboetests')
+        src = oe.path.join(testloc, 'src')
+        dst = oe.path.join(testloc, 'dst')
+        bb.utils.mkdirhier(testloc)
+        bb.utils.mkdirhier(src)
+        testfilename = 'testxattr'
+
+        # ensure we have setfattr available
+        bitbake("attr-native")
+        bindir = get_bb_var('STAGING_BINDIR_NATIVE')
+
+        # create a file with xattr and copy it
+        open(oe.path.join(src, testfilename), 'w+b').close()
+        runCmd('%s/setfattr -n user.oetest -v "testing liboe" %s' % (bindir, oe.path.join(src, testfilename)))
+        oe.path.copytree(src, dst)
+
+        # ensure file in dest has user.oetest xattr
+        result = runCmd('%s/getfattr -n user.oetest %s' % (bindir, oe.path.join(dst, testfilename)))
+        self.assertIn('user.oetest="testing liboe"', result.output, 'Extended attribute not sert in dst')
+
+        oe.path.remove(testloc)
+
+    def test_copy_hardlink_tree_count(self):
+        """
+        Summary:    oe.path.copyhardlinktree() shouldn't miss out files
+        Expected:   src and dst should have the same number of files
+        Product:    OE-Core
+        Author:     Joshua Lock <joshua.g.lock@intel.com>
+        """
+        tmp_dir = get_bb_var('TMPDIR')
+        testloc = oe.path.join(tmp_dir, 'liboetests')
+        src = oe.path.join(testloc, 'src')
+        dst = oe.path.join(testloc, 'dst')
+        bb.utils.mkdirhier(testloc)
+        bb.utils.mkdirhier(src)
+        testfiles = ['foo', 'bar', '.baz', 'quux']
+
+        def touchfile(tf):
+            open(oe.path.join(src, tf), 'w+b').close()
+
+        for f in testfiles:
+            touchfile(f)
+
+        oe.path.copyhardlinktree(src, dst)
+
+        dstcnt = len(os.listdir(dst))
+        srccnt = len(os.listdir(src))
+        self.assertEquals(dstcnt, len(testfiles), "Number of files in dst (%s) differs from number of files in src(%s)." % (dstcnt, srccnt))
+
+        oe.path.remove(testloc)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/lic-checksum.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/lic-checksum.py
index cac6d84..2e81373 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/lic-checksum.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/lic-checksum.py
@@ -12,20 +12,24 @@
     # the license qa to fail due to a mismatched md5sum.
     @testcase(1197)
     def test_nonmatching_checksum(self):
-        bitbake_cmd = '-c configure emptytest'
+        bitbake_cmd = '-c populate_lic emptytest'
         error_msg = 'emptytest: The new md5 checksum is 8d777f385d3dfec8815d20f7496026dc'
 
         lic_file, lic_path = tempfile.mkstemp()
         os.close(lic_file)
         self.track_for_cleanup(lic_path)
 
-        self.write_recipeinc('emptytest', 'INHIBIT_DEFAULT_DEPS = "1"')
-        self.append_recipeinc('emptytest', 'LIC_FILES_CHKSUM = "file://%s;md5=d41d8cd98f00b204e9800998ecf8427e"' % lic_path)
+        self.write_recipeinc('emptytest', """
+INHIBIT_DEFAULT_DEPS = "1"
+LIC_FILES_CHKSUM = "file://%s;md5=d41d8cd98f00b204e9800998ecf8427e"
+SRC_URI = "file://%s;md5=d41d8cd98f00b204e9800998ecf8427e"
+""" % (lic_path, lic_path))
         result = bitbake(bitbake_cmd)
 
         with open(lic_path, "w") as f:
             f.write("data")
 
+        self.write_config("INHERIT_remove = \"report-error\"")
         result = bitbake(bitbake_cmd, ignore_status=True)
         if error_msg not in result.output:
             raise AssertionError(result.output)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/pkgdata.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/pkgdata.py
index 138b03a..5a63f89 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/pkgdata.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/pkgdata.py
@@ -131,15 +131,15 @@
         # Test recipe-space package name
         result = runCmd('oe-pkgdata-util list-pkg-files zlib-dev zlib-doc')
         files = splitoutput(result.output)
-        self.assertIn('zlib-dev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-doc', files.keys(), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
         self.assertIn(os.path.join(includedir, 'zlib.h'), files['zlib-dev'])
         self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['zlib-doc'])
         # Test runtime package name
         result = runCmd('oe-pkgdata-util list-pkg-files -r libz1 libz-dev')
         files = splitoutput(result.output)
-        self.assertIn('libz1', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-dev', files.keys(), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz1', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
         self.assertGreater(len(files['libz1']), 1)
         libspec = os.path.join(base_libdir, 'libz.so.1.*')
         found = False
@@ -152,12 +152,12 @@
         # Test recipe
         result = runCmd('oe-pkgdata-util list-pkg-files -p zlib')
         files = splitoutput(result.output)
-        self.assertIn('zlib-dbg', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-doc', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-dev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-staticdev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertNotIn('zlib-locale', files.keys(), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertNotIn('zlib-locale', list(files.keys()), "listed pkgs. files: %s" %result.output)
         # (ignore ptest, might not be there depending on config)
         self.assertIn(os.path.join(includedir, 'zlib.h'), files['zlib-dev'])
         self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['zlib-doc'])
@@ -165,36 +165,36 @@
         # Test recipe, runtime
         result = runCmd('oe-pkgdata-util list-pkg-files -p zlib -r')
         files = splitoutput(result.output)
-        self.assertIn('libz-dbg', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-doc', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-dev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-staticdev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz1', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertNotIn('libz-locale', files.keys(), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz1', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertNotIn('libz-locale', list(files.keys()), "listed pkgs. files: %s" %result.output)
         self.assertIn(os.path.join(includedir, 'zlib.h'), files['libz-dev'])
         self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['libz-doc'])
         self.assertIn(os.path.join(libdir, 'libz.a'), files['libz-staticdev'])
         # Test recipe, unpackaged
         result = runCmd('oe-pkgdata-util list-pkg-files -p zlib -u')
         files = splitoutput(result.output)
-        self.assertIn('zlib-dbg', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-doc', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-dev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-staticdev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('zlib-locale', files.keys(), "listed pkgs. files: %s" %result.output) # this is the key one
+        self.assertIn('zlib-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('zlib-locale', list(files.keys()), "listed pkgs. files: %s" %result.output) # this is the key one
         self.assertIn(os.path.join(includedir, 'zlib.h'), files['zlib-dev'])
         self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['zlib-doc'])
         self.assertIn(os.path.join(libdir, 'libz.a'), files['zlib-staticdev'])
         # Test recipe, runtime, unpackaged
         result = runCmd('oe-pkgdata-util list-pkg-files -p zlib -r -u')
         files = splitoutput(result.output)
-        self.assertIn('libz-dbg', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-doc', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-dev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-staticdev', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz1', files.keys(), "listed pkgs. files: %s" %result.output)
-        self.assertIn('libz-locale', files.keys(), "listed pkgs. files: %s" %result.output) # this is the key one
+        self.assertIn('libz-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz1', list(files.keys()), "listed pkgs. files: %s" %result.output)
+        self.assertIn('libz-locale', list(files.keys()), "listed pkgs. files: %s" %result.output) # this is the key one
         self.assertIn(os.path.join(includedir, 'zlib.h'), files['libz-dev'])
         self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['libz-doc'])
         self.assertIn(os.path.join(libdir, 'libz.a'), files['libz-staticdev'])
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/recipetool.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/recipetool.py
index e72911b..db1f8de 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/recipetool.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/recipetool.py
@@ -1,7 +1,7 @@
 import os
 import logging
 import tempfile
-import urlparse
+import urllib.parse
 
 from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer
 from oeqa.utils.decorators import testcase
@@ -278,7 +278,7 @@
                          '}\n']
         _, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/etc/selftest-replaceme-patched', self.testfile, '', expectedlines, ['testfile'])
         for line in output.splitlines():
-            if line.startswith('WARNING: '):
+            if 'WARNING: ' in line:
                 self.assertIn('add-file.patch', line, 'Unexpected warning found in output:\n%s' % line)
                 break
         else:
@@ -383,13 +383,13 @@
     @testcase(1194)
     def test_recipetool_create_git(self):
         # Ensure we have the right data in shlibs/pkgdata
-        bitbake('libpng pango libx11 libxext jpeg libxsettings-client libcheck')
+        bitbake('libpng pango libx11 libxext jpeg libcheck')
         # Try adding a recipe
         tempsrc = os.path.join(self.tempdir, 'srctree')
         os.makedirs(tempsrc)
         recipefile = os.path.join(self.tempdir, 'libmatchbox.bb')
         srcuri = 'git://git.yoctoproject.org/libmatchbox'
-        result = runCmd('recipetool create -o %s %s -x %s' % (recipefile, srcuri, tempsrc))
+        result = runCmd(['recipetool', 'create', '-o', recipefile, srcuri + ";rev=9f7cf8895ae2d39c465c04cc78e918c157420269", '-x', tempsrc])
         self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
         checkvars = {}
         checkvars['LICENSE'] = 'LGPLv2.1'
@@ -397,7 +397,7 @@
         checkvars['S'] = '${WORKDIR}/git'
         checkvars['PV'] = '1.11+git${SRCPV}'
         checkvars['SRC_URI'] = srcuri
-        checkvars['DEPENDS'] = set(['libcheck', 'libjpeg-turbo', 'libpng', 'libx11', 'libxsettings-client', 'libxext', 'pango'])
+        checkvars['DEPENDS'] = set(['libcheck', 'libjpeg-turbo', 'libpng', 'libx11', 'libxext', 'pango'])
         inherits = ['autotools', 'pkgconfig']
         self._test_recipe_contents(recipefile, checkvars, inherits)
 
@@ -442,6 +442,49 @@
         inherits = ['cmake', 'python-dir', 'gettext', 'pkgconfig']
         self._test_recipe_contents(recipefile, checkvars, inherits)
 
+    def test_recipetool_create_github(self):
+        # Basic test to see if github URL mangling works
+        temprecipe = os.path.join(self.tempdir, 'recipe')
+        os.makedirs(temprecipe)
+        recipefile = os.path.join(temprecipe, 'meson_git.bb')
+        srcuri = 'https://github.com/mesonbuild/meson'
+        result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
+        self.assertTrue(os.path.isfile(recipefile))
+        checkvars = {}
+        checkvars['LICENSE'] = set(['Apache-2.0'])
+        checkvars['SRC_URI'] = 'git://github.com/mesonbuild/meson;protocol=https'
+        inherits = ['setuptools']
+        self._test_recipe_contents(recipefile, checkvars, inherits)
+
+    def test_recipetool_create_github_tarball(self):
+        # Basic test to ensure github URL mangling doesn't apply to release tarballs
+        temprecipe = os.path.join(self.tempdir, 'recipe')
+        os.makedirs(temprecipe)
+        pv = '0.32.0'
+        recipefile = os.path.join(temprecipe, 'meson_%s.bb' % pv)
+        srcuri = 'https://github.com/mesonbuild/meson/releases/download/%s/meson-%s.tar.gz' % (pv, pv)
+        result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
+        self.assertTrue(os.path.isfile(recipefile))
+        checkvars = {}
+        checkvars['LICENSE'] = set(['Apache-2.0'])
+        checkvars['SRC_URI'] = 'https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${PV}.tar.gz'
+        inherits = ['setuptools']
+        self._test_recipe_contents(recipefile, checkvars, inherits)
+
+    def test_recipetool_create_git_http(self):
+        # Basic test to check http git URL mangling works
+        temprecipe = os.path.join(self.tempdir, 'recipe')
+        os.makedirs(temprecipe)
+        recipefile = os.path.join(temprecipe, 'matchbox-terminal_git.bb')
+        srcuri = 'http://git.yoctoproject.org/git/matchbox-terminal'
+        result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
+        self.assertTrue(os.path.isfile(recipefile))
+        checkvars = {}
+        checkvars['LICENSE'] = set(['GPLv2'])
+        checkvars['SRC_URI'] = 'git://git.yoctoproject.org/git/matchbox-terminal;protocol=http'
+        inherits = ['pkgconfig', 'autotools']
+        self._test_recipe_contents(recipefile, checkvars, inherits)
+
 class RecipetoolAppendsrcBase(RecipetoolBase):
     def _try_recipetool_appendsrcfile(self, testrecipe, newfile, destfile, options, expectedlines, expectedfiles):
         cmd = 'recipetool appendsrcfile %s %s %s %s %s' % (options, self.templayerdir, testrecipe, newfile, destfile)
@@ -471,7 +514,7 @@
         '''Return the first file:// in SRC_URI for the specified recipe.'''
         src_uri = get_bb_var('SRC_URI', recipe).split()
         for uri in src_uri:
-            p = urlparse.urlparse(uri)
+            p = urllib.parse.urlparse(uri)
             if p.scheme == 'file':
                 return p.netloc + p.path
 
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/runtime-test.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/runtime-test.py
new file mode 100644
index 0000000..c2d5b45
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/runtime-test.py
@@ -0,0 +1,105 @@
+from oeqa.selftest.base import oeSelfTest
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
+from oeqa.utils.decorators import testcase
+import os
+
+class TestExport(oeSelfTest):
+
+    def test_testexport_basic(self):
+        """
+        Summary: Check basic testexport functionality with only ping test enabled.
+        Expected: 1. testexport directory must be created.
+                  2. runexported.py must run without any error/exception.
+                  3. ping test must succeed.
+        Product: oe-core
+        Author: Mariano Lopez <mariano.lopez@intel.com>
+        """
+
+        features = 'INHERIT += "testexport"\n'
+        # These aren't the actual IP addresses but testexport class needs something defined
+        features += 'TEST_SERVER_IP = "192.168.7.1"\n'
+        features += 'TEST_TARGET_IP = "192.168.7.1"\n'
+        features += 'TEST_SUITES = "ping"\n'
+        self.write_config(features)
+
+        # Build tesexport for core-image-minimal
+        bitbake('core-image-minimal')
+        bitbake('-c testexport core-image-minimal')
+
+        # Verify if TEST_EXPORT_DIR was created
+        testexport_dir = get_bb_var('TEST_EXPORT_DIR', 'core-image-minimal')
+        isdir = os.path.isdir(testexport_dir)
+        self.assertEqual(True, isdir, 'Failed to create testexport dir: %s' % testexport_dir)
+
+        with runqemu('core-image-minimal') as qemu:
+            # Attempt to run runexported.py to perform ping test
+            runexported_path = os.path.join(testexport_dir, "runexported.py")
+            testdata_path = os.path.join(testexport_dir, "testdata.json")
+            cmd = "%s -t %s -s %s %s" % (runexported_path, qemu.ip, qemu.server_ip, testdata_path)
+            result = runCmd(cmd)
+            self.assertEqual(0, result.status, 'runexported.py returned a non 0 status')
+
+            # Verify ping test was succesful
+            failure = True if 'FAIL' in result.output else False
+            self.assertNotEqual(True, failure, 'ping test failed')
+
+    def test_testexport_sdk(self):
+        """
+        Summary: Check sdk functionality for testexport.
+        Expected: 1. testexport directory must be created.
+                  2. SDK tarball must exists.
+                  3. Uncompressing of tarball must succeed.
+                  4. Check if the SDK directory is added to PATH.
+                  5. Run tar from the SDK directory.
+        Product: oe-core
+        Author: Mariano Lopez <mariano.lopez@intel.com>
+        """
+
+        features = 'INHERIT += "testexport"\n'
+        # These aren't the actual IP addresses but testexport class needs something defined
+        features += 'TEST_SERVER_IP = "192.168.7.1"\n'
+        features += 'TEST_TARGET_IP = "192.168.7.1"\n'
+        features += 'TEST_SUITES = "ping"\n'
+        features += 'TEST_SUITES_TAGS = "selftest_sdk"\n'
+        features += 'TEST_EXPORT_SDK_ENABLED = "1"\n'
+        features += 'TEST_EXPORT_SDK_PACKAGES = "nativesdk-tar"\n'
+        self.write_config(features)
+
+        # Build tesexport for core-image-minimal
+        bitbake('core-image-minimal')
+        bitbake('-c testexport core-image-minimal')
+
+        # Check for SDK
+        testexport_dir = get_bb_var('TEST_EXPORT_DIR', 'core-image-minimal')
+        sdk_dir = get_bb_var('TEST_EXPORT_SDK_DIR', 'core-image-minimal')
+        tarball_name = "%s.sh" % get_bb_var('TEST_EXPORT_SDK_NAME', 'core-image-minimal')
+        tarball_path = os.path.join(testexport_dir, sdk_dir, tarball_name)
+        self.assertEqual(os.path.isfile(tarball_path), True, "Couldn't find SDK tarball: %s" % tarball_path)
+
+        # Run runexported.py
+        runexported_path = os.path.join(testexport_dir, "runexported.py")
+        testdata_path = os.path.join(testexport_dir, "testdata.json")
+        cmd = "%s %s" % (runexported_path, testdata_path)
+        result = runCmd(cmd)
+        self.assertEqual(0, result.status, 'runexported.py returned a non 0 status')
+
+
+class TestImage(oeSelfTest):
+
+    def test_testimage_install(self):
+        """
+        Summary: Check install packages functionality for testimage/testexport.
+        Expected: 1. Import tests from a directory other than meta.
+                  2. Check install/unistall of socat.
+        Product: oe-core
+        Author: Mariano Lopez <mariano.lopez@intel.com>
+        """
+
+        features = 'INHERIT += "testimage"\n'
+        features += 'TEST_SUITES = "ping ssh selftest"\n'
+        features += 'TEST_SUITES_TAGS = "selftest_package_install"\n'
+        self.write_config(features)
+
+        # Build core-image-sato and testimage
+        bitbake('core-image-full-cmdline socat')
+        bitbake('-c testimage core-image-full-cmdline')
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/signing.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/signing.py
index 1babca0..4c12d6d 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/signing.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/signing.py
@@ -12,30 +12,22 @@
 class Signing(oeSelfTest):
 
     gpg_dir = ""
-    pub_key_name = 'key.pub'
-    secret_key_name = 'key.secret'
+    pub_key_path = ""
+    secret_key_path = ""
 
     @classmethod
     def setUpClass(cls):
-        # Import the gpg keys
+        # Check that we can find the gpg binary and fail early if we can't
+        if not shutil.which("gpg"):
+            raise AssertionError("This test needs GnuPG")
 
-        cls.gpg_dir = os.path.join(cls.testlayer_path, 'files/signing/')
+        cls.gpg_home_dir = tempfile.TemporaryDirectory(prefix="oeqa-signing-")
+        cls.gpg_dir = cls.gpg_home_dir.name
 
-        # key.secret key.pub are located in gpg_dir
-        pub_key_location = cls.gpg_dir + cls.pub_key_name
-        secret_key_location = cls.gpg_dir + cls.secret_key_name
-        runCmd('gpg --homedir %s --import %s %s' % (cls.gpg_dir, pub_key_location, secret_key_location))
+        cls.pub_key_path = os.path.join(cls.testlayer_path, 'files', 'signing', "key.pub")
+        cls.secret_key_path = os.path.join(cls.testlayer_path, 'files', 'signing', "key.secret")
 
-    @classmethod
-    def tearDownClass(cls):
-        # Delete the files generated by 'gpg --import'
-
-        gpg_files = glob.glob(cls.gpg_dir + '*.gpg*')
-        random_seed_file = cls.gpg_dir + 'random_seed'
-        gpg_files.append(random_seed_file)
-
-        for gpg_file in gpg_files:
-            runCmd('rm -f ' + gpg_file)
+        runCmd('gpg --homedir %s --import %s %s' % (cls.gpg_dir, cls.pub_key_path, cls.secret_key_path))
 
     @testcase(1362)
     def test_signing_packages(self):
@@ -57,7 +49,7 @@
         feature = 'INHERIT += "sign_rpm"\n'
         feature += 'RPM_GPG_PASSPHRASE = "test123"\n'
         feature += 'RPM_GPG_NAME = "testuser"\n'
-        feature += 'RPM_GPG_PUBKEY = "%s%s"\n' % (self.gpg_dir, self.pub_key_name)
+        feature += 'RPM_GPG_PUBKEY = "%s"\n' % self.pub_key_path
         feature += 'GPG_PATH = "%s"\n' % self.gpg_dir
 
         self.write_config(feature)
@@ -81,8 +73,8 @@
         # Use a temporary rpmdb
         rpmdb = tempfile.mkdtemp(prefix='oeqa-rpmdb')
 
-        runCmd('%s/rpm --define "_dbpath %s" --import %s%s' %
-               (staging_bindir_native, rpmdb, self.gpg_dir, self.pub_key_name))
+        runCmd('%s/rpm --define "_dbpath %s" --import %s' %
+               (staging_bindir_native, rpmdb, self.pub_key_path))
 
         ret = runCmd('%s/rpm --define "_dbpath %s" --checksig %s' %
                      (staging_bindir_native, rpmdb, pkg_deploy))
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/sstatetests.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/sstatetests.py
index acaf405..6642539 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/sstatetests.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/sstatetests.py
@@ -237,6 +237,7 @@
 BUILD_ARCH = "x86_64"
 BUILD_OS = "linux"
 SDKMACHINE = "x86_64"
+PACKAGE_CLASSES = "package_rpm package_ipk package_deb"
 """)
         self.track_for_cleanup(topdir + "/tmp-sstatesamehash")
         bitbake("core-image-sato -S none")
@@ -246,6 +247,7 @@
 BUILD_ARCH = "i686"
 BUILD_OS = "linux"
 SDKMACHINE = "i686"
+PACKAGE_CLASSES = "package_rpm package_ipk package_deb"
 """)
         self.track_for_cleanup(topdir + "/tmp-sstatesamehash2")
         bitbake("core-image-sato -S none")
@@ -264,7 +266,7 @@
         files2 = get_files(topdir + "/tmp-sstatesamehash2/stamps/")
         files2 = [x.replace("tmp-sstatesamehash2", "tmp-sstatesamehash").replace("i686-linux", "x86_64-linux").replace("i686" + targetvendor + "-linux", "x86_64" + targetvendor + "-linux", ) for x in files2]
         self.maxDiff = None
-        self.assertItemsEqual(files1, files2)
+        self.assertCountEqual(files1, files2)
 
 
     @testcase(1271)
@@ -298,7 +300,7 @@
         files2 = get_files(topdir + "/tmp-sstatesamehash2/stamps/")
         files2 = [x.replace("tmp-sstatesamehash2", "tmp-sstatesamehash") for x in files2]
         self.maxDiff = None
-        self.assertItemsEqual(files1, files2)
+        self.assertCountEqual(files1, files2)
 
     @testcase(1368)
     def test_sstate_allarch_samesigs(self):
@@ -309,19 +311,48 @@
         the two MACHINE values.
         """
 
+        configA = """
+TMPDIR = \"${TOPDIR}/tmp-sstatesamehash\"
+MACHINE = \"qemux86-64\"
+"""
+        configB = """
+TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\"
+MACHINE = \"qemuarm\"
+"""
+        self.sstate_allarch_samesigs(configA, configB)
+
+    def test_sstate_allarch_samesigs_multilib(self):
+        """
+        The sstate checksums of allarch multilib packages should be independent of whichever
+        MACHINE is set. Check this using bitbake -S.
+        Also, rather than duplicate the test, check nativesdk stamps are the same between
+        the two MACHINE values.
+        """
+
+        configA = """
+TMPDIR = \"${TOPDIR}/tmp-sstatesamehash\"
+MACHINE = \"qemux86-64\"
+require conf/multilib.conf
+MULTILIBS = \"multilib:lib32\"
+DEFAULTTUNE_virtclass-multilib-lib32 = \"x86\"
+"""
+        configB = """
+TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\"
+MACHINE = \"qemuarm\"
+require conf/multilib.conf
+MULTILIBS = \"\"
+"""
+        self.sstate_allarch_samesigs(configA, configB)
+
+    def sstate_allarch_samesigs(self, configA, configB):
+
         topdir = get_bb_var('TOPDIR')
         targetos = get_bb_var('TARGET_OS')
         targetvendor = get_bb_var('TARGET_VENDOR')
-        self.write_config("""
-TMPDIR = \"${TOPDIR}/tmp-sstatesamehash\"
-MACHINE = \"qemux86\"
-""")
+        self.write_config(configA)
         self.track_for_cleanup(topdir + "/tmp-sstatesamehash")
         bitbake("world meta-toolchain -S none")
-        self.write_config("""
-TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\"
-MACHINE = \"qemuarm\"
-""")
+        self.write_config(configB)
         self.track_for_cleanup(topdir + "/tmp-sstatesamehash2")
         bitbake("world meta-toolchain -S none")
 
@@ -393,7 +424,7 @@
         files2 = get_files(topdir + "/tmp-sstatesamehash2/stamps")
         files2 = [x.replace("tmp-sstatesamehash2", "tmp-sstatesamehash") for x in files2]
         self.maxDiff = None
-        self.assertItemsEqual(files1, files2)
+        self.assertCountEqual(files1, files2)
 
 
     def test_sstate_noop_samesigs(self):
@@ -411,9 +442,11 @@
 DL_DIR = "${TOPDIR}/download1"
 TIME = "111111"
 DATE = "20161111"
-INHERIT_remove = "buildstats-summary buildhistory"
+INHERIT_remove = "buildstats-summary buildhistory uninative"
+http_proxy = ""
 """)
         self.track_for_cleanup(topdir + "/tmp-sstatesamehash")
+        self.track_for_cleanup(topdir + "/download1")
         bitbake("world meta-toolchain -S none")
         self.write_config("""
 TMPDIR = "${TOPDIR}/tmp-sstatesamehash2"
@@ -422,9 +455,13 @@
 DL_DIR = "${TOPDIR}/download2"
 TIME = "222222"
 DATE = "20161212"
+# Always remove uninative as we're changing proxies
+INHERIT_remove = "uninative"
 INHERIT += "buildstats-summary buildhistory"
+http_proxy = "http://example.com/"
 """)
         self.track_for_cleanup(topdir + "/tmp-sstatesamehash2")
+        self.track_for_cleanup(topdir + "/download2")
         bitbake("world meta-toolchain -S none")
 
         def get_files(d):
@@ -439,23 +476,23 @@
         files1 = get_files(topdir + "/tmp-sstatesamehash/stamps/")
         files2 = get_files(topdir + "/tmp-sstatesamehash2/stamps/")
         # Remove items that are identical in both sets
-        for k,v in files1.viewitems() & files2.viewitems():
+        for k,v in files1.items() & files2.items():
             del files1[k]
             del files2[k]
         if not files1 and not files2:
             # No changes, so we're done
             return
 
-        for k in files1.viewkeys() | files2.viewkeys():
+        for k in files1.keys() | files2.keys():
             if k in files1 and k in files2:
-                print "%s differs:" % k
-                print subprocess.check_output(("bitbake-diffsigs",
+                print("%s differs:" % k)
+                print(subprocess.check_output(("bitbake-diffsigs",
                                                topdir + "/tmp-sstatesamehash/stamps/" + k + "." + files1[k],
-                                               topdir + "/tmp-sstatesamehash2/stamps/" + k + "." + files2[k]))
+                                               topdir + "/tmp-sstatesamehash2/stamps/" + k + "." + files2[k])))
             elif k in files1 and k not in files2:
-                print "%s in files1" % k
+                print("%s in files1" % k)
             elif k not in files1 and k in files2:
-                print "%s in files2" % k
+                print("%s in files2" % k)
             else:
                 assert "shouldn't reach here"
         self.fail("sstate hashes not identical.")
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/wic.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/wic.py
index a569fbf..faac11e 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/wic.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/selftest/wic.py
@@ -49,7 +49,7 @@
         # setUpClass being unavailable.
         if not Wic.image_is_ready:
             bitbake('syslinux syslinux-native parted-native gptfdisk-native '
-                    'dosfstools-native mtools-native')
+                    'dosfstools-native mtools-native bmap-tools-native')
             bitbake('core-image-minimal')
             Wic.image_is_ready = True
 
@@ -276,3 +276,26 @@
             status, output = qemu.run_serial(command)
             self.assertEqual(1, status, 'Failed to run command "%s": %s' % (command, output))
             self.assertEqual(output, '/dev/root /\r\n/dev/vda3 /mnt')
+
+    def test_bmap(self):
+        """Test generation of .bmap file"""
+        image = "directdisk"
+        status = runCmd("wic create %s -e core-image-minimal --bmap" % image).status
+        self.assertEqual(0, status)
+        self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
+        self.assertEqual(1, len(glob(self.resultdir + "%s-*direct.bmap" % image)))
+
+    def test_systemd_bootdisk(self):
+        """Test creation of systemd-bootdisk image"""
+        image = "systemd-bootdisk"
+        self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
+                                   % image).status)
+        self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
+
+    def test_sdimage_bootpart(self):
+        """Test creation of sdimage-bootpart image"""
+        image = "sdimage-bootpart"
+        self.write_config('IMAGE_BOOT_FILES = "bzImage"\n')
+        self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
+                                   % image).status)
+        self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/targetcontrol.py b/import-layers/yocto-poky/meta/lib/oeqa/targetcontrol.py
index 5422a61..24669f4 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/targetcontrol.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/targetcontrol.py
@@ -43,9 +43,7 @@
         return controller(d)
 
 
-class BaseTarget(object):
-
-    __metaclass__ = ABCMeta
+class BaseTarget(object, metaclass=ABCMeta):
 
     supported_image_fstypes = []
 
@@ -68,7 +66,7 @@
         bb.note("SSH log file: %s" %  self.sshlog)
 
     @abstractmethod
-    def start(self, params=None, ssh=True):
+    def start(self, params=None, ssh=True, extra_bootparams=None):
         pass
 
     @abstractmethod
@@ -121,12 +119,17 @@
 
         self.image_fstype = self.get_image_fstype(d)
         self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime)
-        self.origrootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True),  d.getVar("IMAGE_LINK_NAME", True) + '.' + self.image_fstype)
-        self.rootfs = os.path.join(self.testdir, d.getVar("IMAGE_LINK_NAME", True) + '-testimage.' + self.image_fstype)
+        self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True),  d.getVar("IMAGE_LINK_NAME", True) + '.' + self.image_fstype)
         self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
         dump_target_cmds = d.getVar("testimage_dump_target", True)
         dump_host_cmds = d.getVar("testimage_dump_host", True)
         dump_dir = d.getVar("TESTIMAGE_DUMP_DIR", True)
+        if d.getVar("QEMU_USE_KVM", False) is not None \
+           and d.getVar("QEMU_USE_KVM", False) == "True" \
+           and "x86" in d.getVar("MACHINE", True):
+            use_kvm = True
+        else:
+            use_kvm = False
 
         # Log QemuRunner log output to a file
         import oe.path
@@ -155,17 +158,14 @@
                             display = d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True),
                             logfile = self.qemulog,
                             boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True)),
+                            use_kvm = use_kvm,
                             dump_dir = dump_dir,
                             dump_host_cmds = d.getVar("testimage_dump_host", True))
 
         self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner)
 
     def deploy(self):
-        try:
-            bb.utils.mkdirhier(self.testdir)
-            shutil.copyfile(self.origrootfs, self.rootfs)
-        except Exception as e:
-            bb.fatal("Error copying rootfs: %s" % e)
+        bb.utils.mkdirhier(self.testdir)
 
         qemuloglink = os.path.join(self.testdir, "qemu_boot_log")
         if os.path.islink(qemuloglink):
@@ -176,8 +176,8 @@
         bb.note("Qemu log file: %s" % self.qemulog)
         super(QemuTarget, self).deploy()
 
-    def start(self, params=None, ssh=True):
-        if self.runner.start(params, get_ip=ssh):
+    def start(self, params=None, ssh=True, extra_bootparams=None):
+        if self.runner.start(params, get_ip=ssh, extra_bootparams=extra_bootparams):
             if ssh:
                 self.ip = self.runner.ip
                 self.server_ip = self.runner.server_ip
@@ -232,7 +232,7 @@
     def deploy(self):
         super(SimpleRemoteTarget, self).deploy()
 
-    def start(self, params=None, ssh=True):
+    def start(self, params=None, ssh=True, extra_bootparams=None):
         if ssh:
             self.connection = SSHControl(self.ip, logfile=self.sshlog, port=self.port)
 
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/commands.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/commands.py
index 48f6441..5cd0f74 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/commands.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/commands.py
@@ -41,7 +41,7 @@
         self.data = data
 
         self.options = dict(self.defaultopts)
-        if isinstance(self.cmd, basestring):
+        if isinstance(self.cmd, str):
             self.options["shell"] = True
         if self.data:
             self.options['stdin'] = subprocess.PIPE
@@ -78,7 +78,10 @@
                 self.process.kill()
                 self.thread.join()
 
-        self.output = self.output.rstrip()
+        if not self.output:
+            self.output = ""
+        else:
+            self.output = self.output.decode("utf-8", errors='replace').rstrip()
         self.status = self.process.poll()
 
         self.log.debug("Command '%s' returned %d as exit code." % (self.cmd, self.status))
@@ -103,6 +106,7 @@
     result.command = command
     result.status = cmd.status
     result.output = cmd.output
+    result.error = cmd.error
     result.pid = cmd.process.pid
 
     if result.status and not ignore_status:
@@ -123,7 +127,7 @@
     else:
         extra_args = ""
 
-    if isinstance(command, basestring):
+    if isinstance(command, str):
         cmd = "bitbake " + extra_args + " " + command
     else:
         cmd = [ "bitbake" ] + [a for a in (command + extra_args.split(" ")) if a not in [""]]
@@ -141,22 +145,45 @@
     else:
         return bitbake("-e", postconfig=postconfig).output
 
-def get_bb_var(var, target=None, postconfig=None):
-    val = None
+def get_bb_vars(variables=None, target=None, postconfig=None):
+    """Get values of multiple bitbake variables"""
     bbenv = get_bb_env(target, postconfig=postconfig)
+
+    var_re = re.compile(r'^(export )?(?P<var>\w+)="(?P<value>.*)"$')
+    unset_re = re.compile(r'^unset (?P<var>\w+)$')
     lastline = None
+    values = {}
     for line in bbenv.splitlines():
-        if re.search("^(export )?%s=" % var, line):
-            val = line.split('=', 1)[1]
-            val = val.strip('\"')
-            break
-        elif re.match("unset %s$" % var, line):
-            # Handle [unexport] variables
-            if lastline.startswith('#   "'):
-                val = lastline.split('\"')[1]
-                break
+        match = var_re.match(line)
+        val = None
+        if match:
+            val = match.group('value')
+        else:
+            match = unset_re.match(line)
+            if match:
+                # Handle [unexport] variables
+                if lastline.startswith('#   "'):
+                    val = lastline.split('"')[1]
+        if val:
+            var = match.group('var')
+            if variables is None:
+                values[var] = val
+            else:
+                if var in variables:
+                    values[var] = val
+                    variables.remove(var)
+                # Stop after all required variables have been found
+                if not variables:
+                    break
         lastline = line
-    return val
+    if variables:
+        # Fill in missing values
+        for var in variables:
+            values[var] = None
+    return values
+
+def get_bb_var(var, target=None, postconfig=None):
+    return get_bb_vars([var], target, postconfig)[var]
 
 def get_test_layer():
     layers = get_bb_var("BBLAYERS").split()
@@ -196,7 +223,7 @@
         tinfoil.config_data.setVar("TEST_QEMUBOOT_TIMEOUT", "1000")
         import oe.recipeutils
         recipefile = oe.recipeutils.pn_to_recipe(tinfoil.cooker, pn)
-        recipedata = oe.recipeutils.parse_recipe(recipefile, [], tinfoil.config_data)
+        recipedata = oe.recipeutils.parse_recipe(tinfoil.cooker, recipefile, [])
 
         # The QemuRunner log is saved out, but we need to ensure it is at the right
         # log level (and then ensure that since it's a child of the BitBake logger,
@@ -237,3 +264,15 @@
             qemu.stop()
         except:
             pass
+
+def updateEnv(env_file):
+    """
+    Source a file and update environment.
+    """
+
+    cmd = ". %s; env -0" % env_file
+    result = runCmd(cmd)
+
+    for line in result.output.split("\0"):
+        (key, _, value) = line.partition("=")
+        os.environ[key] = value
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/decorators.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/decorators.py
index 0d79223..25f9c54 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/decorators.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/decorators.py
@@ -57,6 +57,7 @@
         self.testcase = testcase
 
     def __call__(self,f):
+        @wraps(f)
         def wrapped_f(*args, **kwargs):
             res = getResults()
             if self.testcase in (res.getFailList() or res.getErrorList()):
@@ -71,6 +72,7 @@
         self.testcase = testcase
 
     def __call__(self,f):
+        @wraps(f)
         def wrapped_f(*args, **kwargs):
             res = getResults()
             if self.testcase in res.getSkipList():
@@ -85,6 +87,7 @@
         self.testcase = testcase
 
     def __call__(self,f):
+        @wraps(f)
         def wrapped_f(*args, **kwargs):
             res = getResults()
             if self.testcase in res.getSkipList() or \
@@ -97,11 +100,11 @@
         return wrapped_f
 
 class testcase(object):
-
     def __init__(self, test_case):
         self.test_case = test_case
 
     def __call__(self, func):
+        @wraps(func)
         def wrapped_f(*args, **kwargs):
             return func(*args, **kwargs)
         wrapped_f.test_case = self.test_case
@@ -112,6 +115,8 @@
     def filter(self, record):
         return record.levelno == 100
 
+import inspect
+
 def LogResults(original_class):
     orig_method = original_class.run
 
@@ -121,6 +126,19 @@
     logfile = os.path.join(os.getcwd(),'results-'+caller+'.'+timestamp+'.log')
     linkfile = os.path.join(os.getcwd(),'results-'+caller+'.log')
 
+    def get_class_that_defined_method(meth):
+        if inspect.ismethod(meth):
+            for cls in inspect.getmro(meth.__self__.__class__):
+               if cls.__dict__.get(meth.__name__) is meth:
+                    return cls
+            meth = meth.__func__ # fallback to __qualname__ parsing
+        if inspect.isfunction(meth):
+            cls = getattr(inspect.getmodule(meth),
+                          meth.__qualname__.split('.<locals>', 1)[0].rsplit('.', 1)[0])
+            if isinstance(cls, type):
+               return cls
+        return None
+
     #rewrite the run method of unittest.TestCase to add testcase logging
     def run(self, result, *args, **kws):
         orig_method(self, result, *args, **kws)
@@ -132,7 +150,7 @@
         except AttributeError:
             test_case = self._testMethodName
 
-        class_name = str(testMethod.im_class).split("'")[1]
+        class_name = str(get_class_that_defined_method(testMethod)).split("'")[1]
 
         #create custom logging level for filtering.
         custom_log_level = 100
@@ -171,10 +189,24 @@
         if passed:
             local_log.results("Testcase "+str(test_case)+": PASSED")
 
+        # XXX: In order to avoid race condition when test if exists the linkfile
+        # use bb.utils.lock, the best solution is to create a unique name for the
+        # link file.
+        try:
+            import bb
+            has_bb = True
+            lockfilename = linkfile + '.lock'
+        except ImportError:
+            has_bb = False
+
+        if has_bb:
+            lf = bb.utils.lockfile(lockfilename, block=True)
         # Create symlink to the current log
-        if os.path.exists(linkfile):
+        if os.path.lexists(linkfile):
             os.remove(linkfile)
         os.symlink(logfile, linkfile)
+        if has_bb:
+            bb.utils.unlockfile(lf)
 
     original_class.run = run
 
@@ -212,7 +244,7 @@
     def wrap_ob(ob):
         for name in args:
             setattr(ob, __tag_prefix + name, True)
-        for name, value in kwargs.iteritems():
+        for name, value in kwargs.items():
             setattr(ob, __tag_prefix + name, value)
         return ob
     return wrap_ob
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/dump.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/dump.py
index 63a591d..71422a9 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/dump.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/dump.py
@@ -3,7 +3,7 @@
 import errno
 import datetime
 import itertools
-from commands import runCmd
+from .commands import runCmd
 
 def get_host_dumper(d):
     cmds = d.getVar("testimage_dump_host", True)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/git.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/git.py
new file mode 100644
index 0000000..ae85d27
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/git.py
@@ -0,0 +1,68 @@
+#
+# Copyright (C) 2016 Intel Corporation
+#
+# Released under the MIT license (see COPYING.MIT)
+#
+"""Git repository interactions"""
+import os
+
+from oeqa.utils.commands import runCmd
+
+
+class GitError(Exception):
+    """Git error handling"""
+    pass
+
+class GitRepo(object):
+    """Class representing a Git repository clone"""
+    def __init__(self, path, is_topdir=False):
+        self.top_dir = self._run_git_cmd_at(['rev-parse', '--show-toplevel'],
+                                            path)
+        realpath = os.path.realpath(path)
+        if is_topdir and realpath != self.top_dir:
+            raise GitError("{} is not a Git top directory".format(realpath))
+
+    @staticmethod
+    def _run_git_cmd_at(git_args, cwd, **kwargs):
+        """Run git command at a specified directory"""
+        git_cmd = 'git ' if isinstance(git_args, str) else ['git']
+        git_cmd += git_args
+        ret = runCmd(git_cmd, ignore_status=True, cwd=cwd, **kwargs)
+        if ret.status:
+            cmd_str = git_cmd if isinstance(git_cmd, str) \
+                                else ' '.join(git_cmd)
+            raise GitError("'{}' failed with exit code {}: {}".format(
+                cmd_str, ret.status, ret.output))
+        return ret.output.strip()
+
+    @staticmethod
+    def init(path):
+        """Initialize a new Git repository"""
+        GitRepo._run_git_cmd_at('init', cwd=path)
+        return GitRepo(path, is_topdir=True)
+
+    def run_cmd(self, git_args, env_update=None):
+        """Run Git command"""
+        env = None
+        if env_update:
+            env = os.environ.copy()
+            env.update(env_update)
+        return self._run_git_cmd_at(git_args, self.top_dir, env=env)
+
+    def rev_parse(self, revision):
+        """Do git rev-parse"""
+        try:
+            return self.run_cmd(['rev-parse', revision])
+        except GitError:
+            # Revision does not exist
+            return None
+
+    def get_current_branch(self):
+        """Get current branch"""
+        try:
+            # Strip 11 chars, i.e. 'refs/heads' from the beginning
+            return self.run_cmd(['symbolic-ref', 'HEAD'])[11:]
+        except GitError:
+            return None
+
+
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/httpserver.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/httpserver.py
index 76518d8..7d12331 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/httpserver.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/httpserver.py
@@ -1,8 +1,9 @@
-import SimpleHTTPServer
+import http.server
 import multiprocessing
 import os
+from socketserver import ThreadingMixIn
 
-class HTTPServer(SimpleHTTPServer.BaseHTTPServer.HTTPServer):
+class HTTPServer(ThreadingMixIn, http.server.HTTPServer):
 
     def server_start(self, root_dir):
         import signal
@@ -10,7 +11,7 @@
         os.chdir(root_dir)
         self.serve_forever()
 
-class HTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
+class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
 
     def log_message(self, format_str, *args):
         pass
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/logparser.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/logparser.py
index 87b5035..b377dcd 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/logparser.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/logparser.py
@@ -3,7 +3,7 @@
 import sys
 import os
 import re
-import ftools
+from . import ftools
 
 
 # A parser that can be used to identify weather a line is a test result or a section statement.
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/package_manager.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/package_manager.py
new file mode 100644
index 0000000..099ecc9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/package_manager.py
@@ -0,0 +1,29 @@
+def get_package_manager(d, root_path):
+    """
+    Returns an OE package manager that can install packages in root_path.
+    """
+    from oe.package_manager import RpmPM, OpkgPM, DpkgPM
+
+    pkg_class = d.getVar("IMAGE_PKGTYPE", True)
+    if pkg_class == "rpm":
+        pm = RpmPM(d,
+                   root_path,
+                   d.getVar('TARGET_VENDOR', True))
+        pm.create_configs()
+
+    elif pkg_class == "ipk":
+        pm = OpkgPM(d,
+                    root_path,
+                    d.getVar("IPKGCONF_TARGET", True),
+                    d.getVar("ALL_MULTILIB_PACKAGE_ARCHS", True))
+
+    elif pkg_class == "deb":
+        pm = DpkgPM(d,
+                    root_path,
+                    d.getVar('PACKAGE_ARCHS', True),
+                    d.getVar('DPKG_ARCH', True))
+
+    pm.write_index()
+    pm.update()
+
+    return pm
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/qemurunner.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/qemurunner.py
index 784cf96..8f1b5b9 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/qemurunner.py
@@ -20,16 +20,17 @@
 
 import logging
 logger = logging.getLogger("BitBake.QemuRunner")
+logger.addHandler(logging.StreamHandler())
 
 # Get Unicode non printable control chars
-control_range = range(0,32)+range(127,160)
-control_chars = [unichr(x) for x in control_range
-                if unichr(x) not in string.printable]
+control_range = list(range(0,32))+list(range(127,160))
+control_chars = [chr(x) for x in control_range
+                if chr(x) not in string.printable]
 re_control_char = re.compile('[%s]' % re.escape("".join(control_chars)))
 
 class QemuRunner:
 
-    def __init__(self, machine, rootfs, display, tmpdir, deploy_dir_image, logfile, boottime, dump_dir, dump_host_cmds):
+    def __init__(self, machine, rootfs, display, tmpdir, deploy_dir_image, logfile, boottime, dump_dir, dump_host_cmds, use_kvm):
 
         # Popen object for runqemu
         self.runqemu = None
@@ -49,6 +50,7 @@
         self.boottime = boottime
         self.logged = False
         self.thread = None
+        self.use_kvm = use_kvm
 
         self.runqemutime = 60
         self.host_dumper = HostDumper(dump_host_cmds, dump_dir)
@@ -71,7 +73,8 @@
         if self.logfile:
             # It is needed to sanitize the data received from qemu
             # because is possible to have control characters
-            msg = re_control_char.sub('', unicode(msg, 'utf-8'))
+            msg = msg.decode("utf-8")
+            msg = re_control_char.sub('', msg)
             with codecs.open(self.logfile, "a", encoding="utf-8") as f:
                 f.write("%s" % msg)
 
@@ -79,7 +82,7 @@
         import fcntl
         fl = fcntl.fcntl(o, fcntl.F_GETFL)
         fcntl.fcntl(o, fcntl.F_SETFL, fl | os.O_NONBLOCK)
-        return os.read(o.fileno(), 1000000)
+        return os.read(o.fileno(), 1000000).decode("utf-8")
 
 
     def handleSIGCHLD(self, signum, frame):
@@ -91,7 +94,7 @@
                 self._dump_host()
                 raise SystemExit
 
-    def start(self, qemuparams = None, get_ip = True):
+    def start(self, qemuparams = None, get_ip = True, extra_bootparams = None):
         if self.display:
             os.environ["DISPLAY"] = self.display
             # Set this flag so that Qemu doesn't do any grabs as SDL grabs
@@ -114,12 +117,16 @@
         try:
             threadsock, threadport = self.create_socket()
             self.server_socket, self.serverport = self.create_socket()
-        except socket.error, msg:
+        except socket.error as msg:
             logger.error("Failed to create listening socket: %s" % msg[1])
             return False
 
 
-        self.qemuparams = 'bootparams="console=tty1 console=ttyS0,115200n8 printk.time=1" qemuparams="-serial tcp:127.0.0.1:{}"'.format(threadport)
+        bootparams = 'console=tty1 console=ttyS0,115200n8 printk.time=1'
+        if extra_bootparams:
+            bootparams = bootparams + ' ' + extra_bootparams
+
+        self.qemuparams = 'bootparams="{0}" qemuparams="-serial tcp:127.0.0.1:{1}"'.format(bootparams, threadport)
         if not self.display:
             self.qemuparams = 'nographic ' + self.qemuparams
         if qemuparams:
@@ -128,7 +135,15 @@
         self.origchldhandler = signal.getsignal(signal.SIGCHLD)
         signal.signal(signal.SIGCHLD, self.handleSIGCHLD)
 
-        launch_cmd = 'runqemu tcpserial=%s %s %s %s' % (self.serverport, self.machine, self.rootfs, self.qemuparams)
+        launch_cmd = 'runqemu snapshot '
+        if self.use_kvm:
+            logger.info('Using kvm for runqemu')
+            launch_cmd += 'kvm '
+        else:
+            logger.info('Not using kvm for runqemu')
+        launch_cmd += 'tcpserial=%s %s %s %s' % (self.serverport, self.machine, self.rootfs, self.qemuparams)
+        logger.info('launchcmd=%s'%(launch_cmd))
+
         # FIXME: We pass in stdin=subprocess.PIPE here to work around stty
         # blocking at the end of the runqemu script when using this within
         # oe-selftest (this makes stty error out immediately). There ought
@@ -137,12 +152,12 @@
         output = self.runqemu.stdout
 
         #
-        # We need the preexec_fn above so that all runqemu processes can easily be killed 
+        # We need the preexec_fn above so that all runqemu processes can easily be killed
         # (by killing their process group). This presents a problem if this controlling
-        # process itself is killed however since those processes don't notice the death 
+        # process itself is killed however since those processes don't notice the death
         # of the parent and merrily continue on.
         #
-        # Rather than hack runqemu to deal with this, we add something here instead. 
+        # Rather than hack runqemu to deal with this, we add something here instead.
         # Basically we fork off another process which holds an open pipe to the parent
         # and also is setpgrp. If/when the pipe sees EOF from the parent dieing, it kills
         # the process group. This is like pctrl's PDEATHSIG but for a process group
@@ -192,7 +207,7 @@
                     else:
                         self.ip = ips[0]
                         self.server_ip = ips[1]
-                except IndexError, ValueError:
+                except (IndexError, ValueError):
                     logger.info("Couldn't get ip from qemu process arguments! Here is the qemu command line used:\n%s\nand output from runqemu:\n%s" % (cmdline, self.getOutput(output)))
                     self._dump_host()
                     self.stop()
@@ -219,6 +234,7 @@
             stopread = False
             qemusock = None
             bootlog = ''
+            data = b''
             while time.time() < endtime and not stopread:
                 sread, swrite, serror = select.select(socklist, [], [], 5)
                 for sock in sread:
@@ -229,14 +245,19 @@
                         socklist.remove(self.server_socket)
                         logger.info("Connection from %s:%s" % addr)
                     else:
-                        data = sock.recv(1024)
+                        data = data + sock.recv(1024)
                         if data:
-                            bootlog += data
-                            if re.search(".* login:", bootlog):
-                                self.server_socket = qemusock
-                                stopread = True
-                                reachedlogin = True
-                                logger.info("Reached login banner")
+                            try:
+                                data = data.decode("utf-8", errors="surrogateescape")
+                                bootlog += data
+                                data = b''
+                                if re.search(".* login:", bootlog):
+                                    self.server_socket = qemusock
+                                    stopread = True
+                                    reachedlogin = True
+                                    logger.info("Reached login banner")
+                            except UnicodeDecodeError:
+                                continue
                         else:
                             socklist.remove(sock)
                             sock.close()
@@ -277,13 +298,14 @@
         if hasattr(self, "origchldhandler"):
             signal.signal(signal.SIGCHLD, self.origchldhandler)
         if self.runqemu:
-            os.kill(self.monitorpid, signal.SIGKILL)
-            logger.info("Sending SIGTERM to runqemu")
-            try:
-                os.killpg(os.getpgid(self.runqemu.pid), signal.SIGTERM)
-            except OSError as e:
-                if e.errno != errno.ESRCH:
-                    raise
+            if hasattr(self, "monitorpid"):
+                os.kill(self.monitorpid, signal.SIGKILL)
+                logger.info("Sending SIGTERM to runqemu")
+                try:
+                    os.killpg(os.getpgid(self.runqemu.pid), signal.SIGTERM)
+                except OSError as e:
+                    if e.errno != errno.ESRCH:
+                        raise
             endtime = time.time() + self.runqemutime
             while self.runqemu.poll() is None and time.time() < endtime:
                 time.sleep(1)
@@ -325,7 +347,7 @@
         # Walk the process tree from the process specified looking for a qemu-system. Return its [pid'cmd]
         #
         ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,command'], stdout=subprocess.PIPE).communicate()[0]
-        processes = ps.split('\n')
+        processes = ps.decode("utf-8").split('\n')
         nfields = len(processes[0].split()) - 1
         pids = {}
         commands = {}
@@ -354,9 +376,9 @@
                 if p not in parents:
                     parents.append(p)
                     newparents = next
-        #print "Children matching %s:" % str(parents)
+        #print("Children matching %s:" % str(parents))
         for p in parents:
-            # Need to be careful here since runqemu-internal runs "ldd qemu-system-xxxx"
+            # Need to be careful here since runqemu runs "ldd qemu-system-xxxx"
             # Also, old versions of ldd (2.11) run "LD_XXXX qemu-system-xxxx"
             basecmd = commands[p].split()[0]
             basecmd = os.path.basename(basecmd)
@@ -370,14 +392,14 @@
 
         data = ''
         status = 0
-        self.server_socket.sendall(command)
+        self.server_socket.sendall(command.encode('utf-8'))
         keepreading = True
         while keepreading:
             sread, _, _ = select.select([self.server_socket],[],[],5)
             if sread:
                 answer = self.server_socket.recv(1024)
                 if answer:
-                    data += answer
+                    data += answer.decode('utf-8')
                     # Search the prompt to stop
                     if re.search("[a-zA-Z0-9]+@[a-zA-Z0-9\-]+:~#", data):
                         keepreading = False
@@ -442,7 +464,7 @@
     def stop(self):
         self.logger.info("Stopping logging thread")
         if self.running:
-            os.write(self.writepipe, "stop")
+            os.write(self.writepipe, bytes("stop", "utf-8"))
 
     def teardown(self):
         self.logger.info("Tearing down logging thread")
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/qemutinyrunner.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/qemutinyrunner.py
index 4f95101..d554f0d 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/qemutinyrunner.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/qemutinyrunner.py
@@ -13,7 +13,7 @@
 import socket
 import select
 import bb
-from qemurunner import QemuRunner
+from .qemurunner import QemuRunner
 
 class QemuTinyRunner(QemuRunner):
 
@@ -50,7 +50,7 @@
                 self.server_socket.connect(self.socketfile)
                 bb.note("Created listening socket for qemu serial console.")
                 tries = 0
-            except socket.error, msg:
+            except socket.error as msg:
                 self.server_socket.close()
                 bb.fatal("Failed to create listening socket.")
                 tries -= 1
@@ -60,7 +60,7 @@
             with open(self.logfile, "a") as f:
                 f.write("%s" % msg)
 
-    def start(self, qemuparams = None):
+    def start(self, qemuparams = None, ssh=True, extra_bootparams=None):
 
         if self.display:
             os.environ["DISPLAY"] = self.display
@@ -102,7 +102,7 @@
             bb.note("Qemu pid didn't appeared in %s seconds" % self.runqemutime)
             output = self.runqemu.stdout
             self.stop()
-            bb.note("Output from runqemu:\n%s" % output.read())
+            bb.note("Output from runqemu:\n%s" % output.read().decode("utf-8"))
             return False
 
         return self.is_alive()
@@ -131,7 +131,7 @@
         # Walk the process tree from the process specified looking for a qemu-system. Return its [pid'cmd]
         #
         ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,command'], stdout=subprocess.PIPE).communicate()[0]
-        processes = ps.split('\n')
+        processes = ps.decode("utf-8").split('\n')
         nfields = len(processes[0].split()) - 1
         pids = {}
         commands = {}
@@ -160,11 +160,11 @@
                 if p not in parents:
                     parents.append(p)
                     newparents = next
-        #print "Children matching %s:" % str(parents)
+        #print("Children matching %s:" % str(parents))
         for p in parents:
-            # Need to be careful here since runqemu-internal runs "ldd qemu-system-xxxx"
+            # Need to be careful here since runqemu runs "ldd qemu-system-xxxx"
             # Also, old versions of ldd (2.11) run "LD_XXXX qemu-system-xxxx"
             basecmd = commands[p].split()[0]
             basecmd = os.path.basename(basecmd)
             if "qemu-system" in basecmd and "-serial unix" in commands[p]:
-                return [int(p),commands[p]]
\ No newline at end of file
+                return [int(p),commands[p]]
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/sshcontrol.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/sshcontrol.py
index 1658744..05d6502 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/sshcontrol.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/sshcontrol.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Copyright (C) 2013 Intel Corporation
 #
 # Released under the MIT license (see COPYING.MIT)
@@ -51,16 +52,19 @@
             endtime = self.starttime + timeout
             eof = False
             while time.time() < endtime and not eof:
-                if select.select([self.process.stdout], [], [], 5)[0] != []:
-                    data = os.read(self.process.stdout.fileno(), 1024)
-                    if not data:
-                        self.process.stdout.close()
-                        eof = True
-                    else:
-                        output += data
-                        self.log(data)
-                        endtime = time.time() + timeout
-
+                try:
+                    if select.select([self.process.stdout], [], [], 5)[0] != []:
+                        data = os.read(self.process.stdout.fileno(), 1024)
+                        if not data:
+                            self.process.stdout.close()
+                            eof = True
+                        else:
+                            data = data.decode("utf-8")
+                            output += data
+                            self.log(data)
+                            endtime = time.time() + timeout
+                except InterruptedError:
+                    continue
 
             # process hasn't returned yet
             if not eof:
@@ -145,9 +149,97 @@
         return self._internal_run(command, timeout, self.ignore_status)
 
     def copy_to(self, localpath, remotepath):
-        command = self.scp + [localpath, '%s@%s:%s' % (self.user, self.ip, remotepath)]
-        return self._internal_run(command, ignore_status=False)
+        if os.path.islink(localpath):
+            link = os.readlink(localpath)
+            dst_dir, dst_base = os.path.split(remotepath)
+            return self.run("cd %s; ln -s %s %s" % (dst_dir, link, dst_base))
+        else:
+            command = self.scp + [localpath, '%s@%s:%s' % (self.user, self.ip, remotepath)]
+            return self._internal_run(command, ignore_status=False)
 
     def copy_from(self, remotepath, localpath):
         command = self.scp + ['%s@%s:%s' % (self.user, self.ip, remotepath), localpath]
         return self._internal_run(command, ignore_status=False)
+
+    def copy_dir_to(self, localpath, remotepath):
+        """
+        Copy recursively localpath directory to remotepath in target.
+        """
+
+        for root, dirs, files in os.walk(localpath):
+            # Create directories in the target as needed
+            for d in dirs:
+                tmp_dir = os.path.join(root, d).replace(localpath, "")
+                new_dir = os.path.join(remotepath, tmp_dir.lstrip("/"))
+                cmd = "mkdir -p %s" % new_dir
+                self.run(cmd)
+
+            # Copy files into the target
+            for f in files:
+                tmp_file = os.path.join(root, f).replace(localpath, "")
+                dst_file = os.path.join(remotepath, tmp_file.lstrip("/"))
+                src_file = os.path.join(root, f)
+                self.copy_to(src_file, dst_file)
+
+
+    def delete_files(self, remotepath, files):
+        """
+        Delete files in target's remote path.
+        """
+
+        cmd = "rm"
+        if not isinstance(files, list):
+            files = [files]
+
+        for f in files:
+            cmd = "%s %s" % (cmd, os.path.join(remotepath, f))
+
+        self.run(cmd)
+
+
+    def delete_dir(self, remotepath):
+        """
+        Delete remotepath directory in target.
+        """
+
+        cmd = "rmdir %s" % remotepath
+        self.run(cmd)
+
+
+    def delete_dir_structure(self, localpath, remotepath):
+        """
+        Delete recursively localpath structure directory in target's remotepath.
+
+        This function is very usefult to delete a package that is installed in
+        the DUT and the host running the test has such package extracted in tmp
+        directory.
+
+        Example:
+            pwd: /home/user/tmp
+            tree:   .
+                    └── work
+                        ├── dir1
+                        │   └── file1
+                        └── dir2
+
+            localpath = "/home/user/tmp" and remotepath = "/home/user"
+
+            With the above variables this function will try to delete the
+            directory in the DUT in this order:
+                /home/user/work/dir1/file1
+                /home/user/work/dir1        (if dir is empty)
+                /home/user/work/dir2        (if dir is empty)
+                /home/user/work             (if dir is empty)
+        """
+
+        for root, dirs, files in os.walk(localpath, topdown=False):
+            # Delete files first
+            tmpdir = os.path.join(root).replace(localpath, "")
+            remotedir = os.path.join(remotepath, tmpdir.lstrip("/"))
+            self.delete_files(remotedir, files)
+
+            # Remove dirs if empty
+            for d in dirs:
+                tmpdir = os.path.join(root, d).replace(localpath, "")
+                remotedir = os.path.join(remotepath, tmpdir.lstrip("/"))
+                self.delete_dir(remotepath)
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/targetbuild.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/targetbuild.py
index f850d78..59593f5 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/targetbuild.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/targetbuild.py
@@ -10,18 +10,17 @@
 import subprocess
 from abc import ABCMeta, abstractmethod
 
-class BuildProject():
-
-    __metaclass__ = ABCMeta
+class BuildProject(metaclass=ABCMeta):
 
     def __init__(self, d, uri, foldername=None, tmpdir="/tmp/"):
         self.d = d
         self.uri = uri
         self.archive = os.path.basename(uri)
         self.localarchive = os.path.join(tmpdir,self.archive)
-        self.fname = re.sub(r'.tar.bz2|tar.gz$', '', self.archive)
         if foldername:
             self.fname = foldername
+        else:
+            self.fname = re.sub(r'\.tar\.bz2$|\.tar\.gz$|\.tar\.xz$', '', self.archive)
 
     # Download self.archive to self.localarchive
     def _download_archive(self):
@@ -118,10 +117,10 @@
         subprocess.check_call(cmd, shell=True)
 
         #Change targetdir to project folder
-        self.targetdir = self.targetdir + self.fname
+        self.targetdir = os.path.join(self.targetdir, self.fname)
 
-    def run_configure(self, configure_args=''):
-        return super(SDKBuildProject, self).run_configure(configure_args=(configure_args or '$CONFIGURE_FLAGS'), extra_cmds=' gnu-configize; ')
+    def run_configure(self, configure_args='', extra_cmds=' gnu-configize; '):
+        return super(SDKBuildProject, self).run_configure(configure_args=(configure_args or '$CONFIGURE_FLAGS'), extra_cmds=extra_cmds)
 
     def run_install(self, install_args=''):
         return super(SDKBuildProject, self).run_install(install_args=(install_args or "DESTDIR=%s/../install" % self.targetdir))
@@ -134,4 +133,3 @@
     def _run(self, cmd):
         self.log("Running . %s; " % self.sdkenv + cmd)
         return subprocess.call(". %s; " % self.sdkenv + cmd, shell=True)
-
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/utils/testexport.py b/import-layers/yocto-poky/meta/lib/oeqa/utils/testexport.py
index 243463b..57be2ca 100644
--- a/import-layers/yocto-poky/meta/lib/oeqa/utils/testexport.py
+++ b/import-layers/yocto-poky/meta/lib/oeqa/utils/testexport.py
@@ -6,7 +6,7 @@
 
 import os, re, glob as g, shutil as sh,sys
 from time import sleep
-from commands import runCmd
+from .commands import runCmd
 from difflib import SequenceMatcher as SM
 
 try:
@@ -17,13 +17,13 @@
             pass
         def plain(self, msg):
             if msg:
-                print msg
+                print(msg)
         def warn(self, msg):
             if msg:
-                print "WARNING: " + msg
+                print("WARNING: " + msg)
         def fatal(self, msg):
             if msg:
-                print "FATAL:" + msg
+                print("FATAL:" + msg)
                 sys.exit(1)
     bb = my_log()    
 
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid/0001-Fix-out-of-source-build.patch b/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid/0001-Fix-out-of-source-build.patch
deleted file mode 100644
index d1aa3aa..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid/0001-Fix-out-of-source-build.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 5d32b65af750e2007730f3d55a552a186aed81a6 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Wed, 20 Jan 2016 14:08:29 +0200
-Subject: [PATCH] Fix out of source build
-
-Since the source directory contains another config.h, the build
-directory should be searched first.
-
-Upstream-Status: Submitted
-[https://sourceforge.net/p/acpid2/tickets/10/]
-
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- sock.c      | 2 +-
- ud_socket.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sock.c b/sock.c
-index 644d460..9e04501 100644
---- a/sock.c
-+++ b/sock.c
-@@ -21,7 +21,7 @@
-  */
- 
- #ifdef HAVE_CONFIG_H
--#include "config.h"
-+#include <config.h>
- #endif
- 
- #include <unistd.h>
-diff --git a/ud_socket.c b/ud_socket.c
-index 1790917..83b2aa9 100644
---- a/ud_socket.c
-+++ b/ud_socket.c
-@@ -4,7 +4,7 @@
-  */
- 
- #ifdef HAVE_CONFIG_H
--#include "config.h"
-+#include <config.h>
- #endif
- 
- #include <stdio.h>
--- 
-2.4.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid_2.0.26.bb b/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid_2.0.26.bb
deleted file mode 100644
index c3bd51f..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid_2.0.26.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require acpid.inc
-
-SRC_URI += "file://0001-Fix-out-of-source-build.patch"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
-                    file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
-
-SRC_URI[md5sum] = "f6d772e35ed907f1cc14ad1a546fd473"
-SRC_URI[sha256sum] = "8384f37e4f260f50183e2e20039823d8f06aed9db56924fe92097b7e0b2e0343"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid_2.0.27.bb b/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid_2.0.27.bb
new file mode 100644
index 0000000..509fcfe
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/acpid/acpid_2.0.27.bb
@@ -0,0 +1,7 @@
+require acpid.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+                    file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
+
+SRC_URI[md5sum] = "e41bdf628e122edb4342fca432ea7db9"
+SRC_URI[sha256sum] = "820c223e53cc11d9d7229fb1ffc2c2205f1054082c80f83f5a4ec4df16d3a616"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb b/import-layers/yocto-poky/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
index 4ff6ad0..82c2649 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
+++ b/import-layers/yocto-poky/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
@@ -9,7 +9,7 @@
                     file://apm.h;beginline=6;endline=18;md5=7d4acc1250910a89f84ce3cc6557c4c2"
 DEPENDS = "libtool-cross"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_3.2.2.orig.tar.gz;name=tarball \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/a/${BPN}/${BPN}_3.2.2.orig.tar.gz;name=tarball \
            file://legacy.patch \
            file://libtool.patch \
            file://unlinux.patch \
@@ -26,6 +26,7 @@
 
 # for this package we're mostly interested in tracking debian patches,
 # and not in the upstream version where all development has effectively stopped
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/apmd/"
 UPSTREAM_CHECK_REGEX = "(?P<pver>((\d+\.*)+)-((\d+\.*)+))\.(diff|debian\.tar)\.(gz|xz)"
 
 S = "${WORKDIR}/apmd-3.2.2.orig"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi/aarch64-initplat.c-fix-const-qualifier.patch b/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi/aarch64-initplat.c-fix-const-qualifier.patch
new file mode 100644
index 0000000..965f074
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi/aarch64-initplat.c-fix-const-qualifier.patch
@@ -0,0 +1,35 @@
+From dc83b84dc8b4e71efce47143497aac6c126065cf Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Mon, 18 Jul 2016 08:40:29 -0700
+Subject: [PATCH] lib/aarch64/initplat.c: fix const qualifier
+
+Fixed:
+initplat.c:44:35: error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
+     unsigned char *p = dest, *q = src;
+                                   ^~~
+cc1: all warnings being treated as errors
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ lib/aarch64/initplat.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/lib/aarch64/initplat.c b/lib/aarch64/initplat.c
+index 2ac03a7..aae7beb 100644
+--- a/lib/aarch64/initplat.c
++++ b/lib/aarch64/initplat.c
+@@ -41,7 +41,8 @@ void *memset(void *s, int c, __SIZE_TYPE__ n)
+ 
+ void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n)
+ {
+-    unsigned char *p = dest, *q = src;
++    unsigned char *p = dest;
++    const unsigned char *q = src;
+ 
+     while (n--)
+         *p++ = *q++;
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi/gnu-efi-Make-setjmp.S-portable-to-ARM.patch b/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi/gnu-efi-Make-setjmp.S-portable-to-ARM.patch
deleted file mode 100644
index ced128a..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi/gnu-efi-Make-setjmp.S-portable-to-ARM.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 8a356d4b6a242ce63b73920d3ed33f88f9e12fe3 Mon Sep 17 00:00:00 2001
-From: Wenzong Fan <wenzong.fan@windriver.com>
-Date: Sun, 6 Sep 2015 05:20:43 -0400
-Subject: [PATCH] gnu-efi: Make setjmp.S portable to ARM
-
-This patch fixes the following error:
-
-  .../lib/arm/setjmp.S:18: Error: unrecognized symbol type ""
-  .../lib/arm/setjmp.S:26: Error: unrecognized symbol type ""
-
-The problem is the assembly syntax that is used is not portable to ARM,
-where the '@' symbol is a comment:
-
-  > Note on targets where the @ character is the start of a comment
-  > (eg ARM) then another character is used instead. For example the
-  > ARM port uses the % character.
-
-(From https://sourceware.org/binutils/docs-2.25/as/Section.html#Section)
-
-Upstream-Status: Pending
-
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
----
- lib/arm/setjmp.S | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/lib/arm/setjmp.S b/lib/arm/setjmp.S
-index 6e3fbf0..85c8705 100644
---- a/lib/arm/setjmp.S
-+++ b/lib/arm/setjmp.S
-@@ -15,7 +15,7 @@ BASIS,
- 	.text
- 	.arm
- 	.globl	setjmp
--	.type	setjmp, @function
-+	.type	setjmp, %function
- setjmp:
- 	mov	r3, r13
- 	stmia	r0, {r3-r12,r14}
-@@ -23,6 +23,6 @@ setjmp:
- 	bx	lr
- 
- 	.globl	longjmp
--	.type	longjmp, @function
-+	.type	longjmp, %function
- longjmp:
- 	ldmia	r0, {r3-r12,r14}
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.3.bb b/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.3.bb
deleted file mode 100644
index eca3459..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.3.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Libraries for producing EFI binaries"
-HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
-SECTION = "devel"
-LICENSE = "GPLv2+ | BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=9;md5=2240d7bbdf0928294c2f4a68b14d6591 \
-                    file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
-                    file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \
-                    file://inc/efishellparm.h;beginline=4;endline=11;md5=468b1231b05bbc84bae3a0d5774e3bb5 \
-                    file://lib/arm/div64.S;beginline=6;endline=12;md5=a96c84f5ad12b4f011f98b5d039242f2 \
-                    file://lib/arm/math.c;beginline=4;endline=10;md5=64dd1987cee1dcf59d11aa572cfa644e \
-                    file://lib/arm/initplat.c;beginline=4;endline=10;md5=64dd1987cee1dcf59d11aa572cfa644e \
-                    file://lib/arm/lib1funcs.S;beginline=9;endline=33;md5=f56d5ebbc87136bc66cfe24db82bcf01 \
-                    file://lib/aarch64/math.c;beginline=9;endline=33;md5=cfade4c560e033a7bb02dab282872c7d \
-                    file://lib/aarch64/initplat.c;beginline=9;endline=33;md5=900cb1ffbe3e1ded344102be921830f1 \
-                   "
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2 \
-           file://parallel-make-archives.patch \
-           file://lib-Makefile-fix-parallel-issue.patch \
-           file://gnu-efi-Make-setjmp.S-portable-to-ARM.patch \
-           file://gcc46-compatibility.patch \
-          "
-
-SRC_URI[md5sum] = "15a4bcbc18a9a5e8110ed955970622e6"
-SRC_URI[sha256sum] = "c530f21a15fd9c214dd92d29a6caa20fac989289267512020b6da1f5e6f5b4cb"
-
-COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux"
-
-def gnu_efi_arch(d):
-    import re
-    tarch = d.getVar("TARGET_ARCH", True)
-    if re.match("i[3456789]86", tarch):
-        return "ia32"
-    return tarch
-
-EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
-                'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \
-                "
-
-do_install() {
-        oe_runmake install INSTALLROOT="${D}"
-}
-
-FILES_${PN} += "${libdir}/*.lds"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.4.bb b/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.4.bb
new file mode 100644
index 0000000..e0d8ee7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.4.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Libraries for producing EFI binaries"
+HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
+SECTION = "devel"
+LICENSE = "GPLv2+ | BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
+                    file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
+                    file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \
+                    file://inc/efishellparm.h;beginline=4;endline=11;md5=468b1231b05bbc84bae3a0d5774e3bb5 \
+                    file://lib/arm/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+                    file://lib/arm/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+                    file://lib/aarch64/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+                    file://lib/aarch64/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+                   "
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2 \
+           file://parallel-make-archives.patch \
+           file://lib-Makefile-fix-parallel-issue.patch \
+           file://gcc46-compatibility.patch \
+           file://aarch64-initplat.c-fix-const-qualifier.patch \
+          "
+
+SRC_URI[md5sum] = "612e0f327f31c4b8468ef55f4eeb9649"
+SRC_URI[sha256sum] = "51a00428c3ccb96db24089ed8394843c4f83cf8f42c6a4dfddb4b7c23f2bf8af"
+
+COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux"
+COMPATIBLE_HOST_armv4 = 'null'
+
+def gnu_efi_arch(d):
+    import re
+    tarch = d.getVar("TARGET_ARCH", True)
+    if re.match("i[3456789]86", tarch):
+        return "ia32"
+    return tarch
+
+EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
+                'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \
+                "
+
+# gnu-efi's Makefile treats prefix as toolchain prefix, so don't
+# export it.
+prefix[unexport] = "1"
+
+do_install() {
+        oe_runmake install INSTALLROOT="${D}"
+}
+
+FILES_${PN} += "${libdir}/*.lds"
+
+BBCLASSEXTEND = "native"
+
+# It doesn't support sse, its make.defaults sets:
+# CFLAGS += -mno-mmx -mno-sse
+# So also remove -mfpmath=sse from TUNE_CCARGS
+TUNE_CCARGS_remove = "-mfpmath=sse"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/0001-grub-core-gettext-gettext.c-main_context-secondary_c.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/0001-grub-core-gettext-gettext.c-main_context-secondary_c.patch
new file mode 100644
index 0000000..6ec2363
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/0001-grub-core-gettext-gettext.c-main_context-secondary_c.patch
@@ -0,0 +1,39 @@
+From f30c692c1f9ef0e93bee2b408a24baa017f1ca9d Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder@gmail.com>
+Date: Thu, 7 Nov 2013 01:01:47 +0100
+Subject: [PATCH] 	* grub-core/gettext/gettext.c (main_context),
+ (secondary_context): 	Define after defining type and not before.
+
+---
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport
+
+ ChangeLog                   | 5 +++++
+ grub-core/gettext/gettext.c | 4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c
+index df73570..4880cef 100644
+--- a/grub-core/gettext/gettext.c
++++ b/grub-core/gettext/gettext.c
+@@ -34,8 +34,6 @@ GRUB_MOD_LICENSE ("GPLv3+");
+    http://www.gnu.org/software/autoconf/manual/gettext/MO-Files.html .
+ */
+ 
+-static struct grub_gettext_context main_context, secondary_context;
+-
+ static const char *(*grub_gettext_original) (const char *s);
+ 
+ struct grub_gettext_msg
+@@ -69,6 +67,8 @@ struct grub_gettext_context
+   struct grub_gettext_msg *grub_gettext_msg_list;
+ };
+ 
++static struct grub_gettext_context main_context, secondary_context;
++
+ #define MO_MAGIC_NUMBER 		0x950412de
+ 
+ static grub_err_t
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fix-enable_execute_stack-check.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fix-enable_execute_stack-check.patch
index 09ef4db..1ff3c1c 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fix-enable_execute_stack-check.patch
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fix-enable_execute_stack-check.patch
@@ -10,7 +10,7 @@
 configure:20323: $? = 1
 configure:20327: error: ccache i586-poky-linux-gcc  -m32    -march=core2 -msse3 -mtune=generic -mfpmath=sse --sysroot=/builddisk/build/build0/tmp/sysroots/emenlow failed to produce assembly code
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/04/13
 
 Index: grub-2.00/acinclude.m4
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fpmath-sse-387-fix.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fpmath-sse-387-fix.patch
index c557f13..dd30d94 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fpmath-sse-387-fix.patch
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-2.00-fpmath-sse-387-fix.patch
@@ -6,7 +6,7 @@
 conftest.c:1:0: error: SSE instruction set disabled, using 387 arithmetics [-Werror]
 cc1: all warnings being treated as errors
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/04/13
 
 Index: grub-1.99/configure.ac
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch
new file mode 100644
index 0000000..935c472
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch
@@ -0,0 +1,61 @@
+From 7461a3de38b66edbe2f5593f9bdab9f2704d32bc Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 17 Aug 2016 04:06:34 -0400
+Subject: [PATCH] grub module explicitly keeps symbole .module_license
+
+While using oe-core toolchain to strip grub module 'all_video.mod',
+it stripped symbol table:
+--------------
+root@localhost:~# objdump -t all_video.mod
+
+all_video.mod:     file format elf64-x86-64
+
+SYMBOL TABLE:
+no symbols
+--------------
+
+It caused grub to load module all_video failed.
+--------------
+grub> insmod all_video
+error: no symbol table.
+--------------
+
+Tweak strip option to keep symbol .module_license could workaround
+the issue.
+--------------
+root@localhost:~# objdump -t all_video.mod
+
+all_video.mod:     file format elf64-x86-64
+
+SYMBOL TABLE:
+0000000000000000 l    d  .text  0000000000000000 .text
+0000000000000000 l    d  .data  0000000000000000 .data
+0000000000000000 l    d  .module_license        0000000000000000 .module_license
+0000000000000000 l    d  .bss   0000000000000000 .bss
+0000000000000000 l    d  .moddeps       0000000000000000 .moddeps
+0000000000000000 l    d  .modname       0000000000000000 .modname
+--------------
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ grub-core/genmod.sh.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/grub-core/genmod.sh.in b/grub-core/genmod.sh.in
+index 76df0bb..39a9cfc 100644
+--- a/grub-core/genmod.sh.in
++++ b/grub-core/genmod.sh.in
+@@ -59,7 +59,7 @@ if test x@TARGET_APPLE_CC@ != x1; then
+ 	if test x@platform@ != xemu; then
+ 	    @STRIP@ --strip-unneeded \
+ 		-K grub_mod_init -K grub_mod_fini \
+-		-K _grub_mod_init -K _grub_mod_fini \
++		-K _grub_mod_init -K _grub_mod_fini -K .module_license \
+ 		-R .note.gnu.gold-version -R .note.GNU-stack \
+ 		-R .note -R .comment $tmpfile || exit 1
+ 	fi
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub2-remove-sparc64-setup-from-x86-builds.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub2-remove-sparc64-setup-from-x86-builds.patch
index 6259a1a..5168d3c 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub2-remove-sparc64-setup-from-x86-builds.patch
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub2-remove-sparc64-setup-from-x86-builds.patch
@@ -1,104 +1,44 @@
+Subject: [PATCH] grub2: remove grub-sparc64-setup from x86 builds
+
+* remove the grub-sparc64-setup files from the x86 builds.
+
 Upstream-Status: Inappropriate [embedded specific]
 
-remove the grub-sparc64-setup files from the x86 builds.
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.util.def | 18 ------------------
+ 1 file changed, 18 deletions(-)
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+diff --git a/Makefile.util.def b/Makefile.util.def
+index b80187c..a670cf2 100644
+--- a/Makefile.util.def
++++ b/Makefile.util.def
+@@ -321,24 +321,6 @@ program = {
+ };
+ 
+ program = {
+-  name = grub-sparc64-setup;
+-  installdir = sbin;
+-  mansection = 8;
+-  common = util/grub-setup.c;
+-  common = util/lvm.c;
+-  common = grub-core/kern/emu/argp_common.c;
+-  common = grub-core/lib/reed_solomon.c;
+-  common = util/ieee1275/ofpath.c;
+-
+-  ldadd = libgrubmods.a;
+-  ldadd = libgrubkern.a;
+-  ldadd = libgrubgcry.a;
+-  ldadd = grub-core/gnulib/libgnu.a;
+-  ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
+-  cppflags = '-DGRUB_SETUP_SPARC64=1';
+-};
+-
+-program = {
+   name = grub-ofpathname;
+   installdir = sbin;
+   mansection = 8;
+-- 
+2.8.1
 
---- a/Makefile.util.am	2014-08-15 11:41:02.441011278 -0700
-+++ b/Makefile.util.am	2014-08-15 11:44:26.245021142 -0700
-@@ -4692,9 +4692,9 @@
- endif
- 
- if COND_emu
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
-@@ -4715,9 +4715,9 @@
- endif
- 
- if COND_i386_pc
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
-@@ -4738,9 +4738,9 @@
- endif
- 
- if COND_i386_efi
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
-@@ -4761,9 +4761,9 @@
- endif
- 
- if COND_i386_qemu
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
-@@ -4784,9 +4784,9 @@
- endif
- 
- if COND_i386_coreboot
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
-@@ -4807,9 +4807,9 @@
- endif
- 
- if COND_i386_multiboot
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
-@@ -4830,9 +4830,9 @@
- endif
- 
- if COND_i386_ieee1275
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
-@@ -4853,9 +4853,9 @@
- endif
- 
- if COND_x86_64_efi
--sbin_PROGRAMS += grub-sparc64-setup
-+sbin_PROGRAMS +=
- if COND_MAN_PAGES
--man_MANS += grub-sparc64-setup.8
-+man_MANS +=
- 
- grub-sparc64-setup.8: grub-sparc64-setup
- 	chmod a+x grub-sparc64-setup
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch
index 87ec29e..ce3238f 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch
@@ -20,7 +20,7 @@
 arithmetics [-Werror]
 cc1: all warnings being treated as errors
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
 Upstream-Status: Pending
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc
index 146dde6..b10f633 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc
@@ -12,6 +12,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "ftp://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \
+           file://grub-module-explicitly-keeps-symbole-.module_license.patch \
            file://grub-2.00-fpmath-sse-387-fix.patch \
            file://check-if-liblzma-is-disabled.patch \
            file://fix-issue-with-flex-2.5.37.patch \
@@ -30,9 +31,10 @@
            file://0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch \
            file://0001-Remove-direct-_llseek-code-and-require-long-filesyst.patch \
            file://fix-texinfo.patch \
+           file://0001-grub-core-gettext-gettext.c-main_context-secondary_c.patch \
             "
 
-DEPENDS = "flex-native bison-native"
+DEPENDS = "flex-native bison-native autogen-native"
 
 SRC_URI[md5sum] = "e927540b6eda8b024fb0391eeaa4091c"
 SRC_URI[sha256sum] = "65b39a0558f8c802209c574f4d02ca263a804e8a564bc6caf1cd0fd3b3cc11e3"
@@ -59,11 +61,10 @@
 	# for its own purposes. Remove the OE versions from the environment to
 	# avoid conflicts.
 	unset TARGET_CPPFLAGS TARGET_CFLAGS TARGET_CXXFLAGS TARGET_LDFLAGS
+	( cd ${S}
+	${S}/autogen.sh )
 }
 
 # grub and grub-efi's sysroot/${datadir}/grub/grub-mkconfig_lib are
 # conflicted, remove it since no one uses it.
-SYSROOT_PREPROCESS_FUNCS_class-target += "remove_sysroot_mkconfig_lib"
-remove_sysroot_mkconfig_lib() {
-    rm -r "${SYSROOT_DESTDIR}${datadir}/grub/grub-mkconfig_lib"
-}
+SYSROOT_DIRS_BLACKLIST += "${datadir}/grub/grub-mkconfig_lib"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.00.bb b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.00.bb
index 778074a..07e1d10 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.00.bb
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.00.bb
@@ -1,6 +1,6 @@
 require grub2.inc
 
-RDEPENDS_${PN} = "diffutils freetype"
+RDEPENDS_${PN} = "diffutils freetype grub-editenv"
 PR = "r1"
 
 EXTRA_OECONF = "--with-platform=pc --disable-grub-mkfont --program-prefix="" \
@@ -8,6 +8,10 @@
 
 EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '--enable-largefile', '--disable-largefile', d)}"
 
+PACKAGES =+ "grub-editenv"
+
+FILES_grub-editenv = "${bindir}/grub-editenv"
+
 do_install_append () {
     install -d ${D}${sysconfdir}/grub.d
 }
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_git.bb b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_git.bb
index 6919c9a..493b695 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_git.bb
@@ -1,14 +1,12 @@
 require grub2.inc
 
-DEPENDS += "autogen-native"
-
 DEFAULT_PREFERENCE = "-1"
 DEFAULT_PREFERENCE_arm = "1"
 
 FILESEXTRAPATHS =. "${FILE_DIRNAME}/grub-git:"
 
 PV = "2.00+${SRCPV}"
-SRCREV = "b95e92678882f56056c64ae29092bc9cf129905f"
+SRCREV = "7a5b301e3adb8e054288518a325135a1883c1c6c"
 SRC_URI = "git://git.savannah.gnu.org/grub.git \
            file://0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch \
            file://autogen.sh-exclude-pc.patch \
@@ -18,6 +16,7 @@
 S = "${WORKDIR}/git"
 
 COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)'
+COMPATIBLE_HOST_armv7a = 'null'
 
 inherit autotools gettext texinfo
 
@@ -33,11 +32,6 @@
 
 EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '--enable-largefile', '--disable-largefile', d)}"
 
-do_configure_prepend() {
-    ( cd ${S}
-      ${S}/autogen.sh )
-}
-
 do_install_append () {
     install -d ${D}${sysconfdir}/grub.d
     rm -rf ${D}${libdir}/charset.alias
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/libacpi_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/libacpi_fix_for_x32.patch
index 2fed344..86a16c2 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/libacpi_fix_for_x32.patch
+++ b/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/libacpi_fix_for_x32.patch
@@ -7,7 +7,7 @@
 
 Patch Received from:  H.J. Lu <hjl.tools@gmail.com>
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/05
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/05
 
 Index: libacpi-0.2/Makefile
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/use_correct_strip_in_cross_environment.patch b/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/use_correct_strip_in_cross_environment.patch
index bca75fb..ef376aa 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/use_correct_strip_in_cross_environment.patch
+++ b/import-layers/yocto-poky/meta/recipes-bsp/libacpi/files/use_correct_strip_in_cross_environment.patch
@@ -6,7 +6,7 @@
 | make: *** [test-libacpi] Error 1
 | ERROR: oe_runmake failed
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/07
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/07
 
 Index: libacpi-0.2/Makefile
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch
index b4529f4..682f1c9 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/lrzsz_fix_for_automake-1.12.patch
@@ -9,7 +9,7 @@
 | src/Makefile.am:11: error: automatic de-ANSI-fication support has been removed
 
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/03
 
 Index: lrzsz-0.12.20/configure.in
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pciutils/pciutils_3.4.1.bb b/import-layers/yocto-poky/meta/recipes-bsp/pciutils/pciutils_3.4.1.bb
deleted file mode 100644
index 33be525..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pciutils/pciutils_3.4.1.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-SUMMARY = "PCI utilities"
-DESCRIPTION = 'The PCI Utilities package contains a library for portable access \
-to PCI bus configuration space and several utilities based on this library.'
-HOMEPAGE = "http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml"
-SECTION = "console/utils"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-DEPENDS = "zlib kmod"
-
-SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz \
-           file://configure.patch \
-           file://guess-fix.patch \
-           file://makefile.patch"
-
-SRC_URI[md5sum] = "35763bb1eab7bc9bf6eb6efb72cbc8a1"
-SRC_URI[sha256sum] = "865554cc5604d1644bd8da38d94845405e2a319a6d5acabc6a0296417684a82a"
-
-inherit multilib_header
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'hwdb', '', d)}"
-PACKAGECONFIG[hwdb] = "HWDB=yes,HWDB=no,udev"
-
-PCI_CONF_FLAG = "ZLIB=yes DNS=yes SHARED=yes"
-
-# see configure.patch
-do_configure () {
-	(
-	  cd lib && \
-	  # EXTRA_OECONF for this recipe could only possibly contain 'HWDB=yes/no', so we put it
-	  # before ./configure
-	  ${PCI_CONF_FLAG} ${EXTRA_OECONF} ./configure ${PV} ${datadir} ${TARGET_OS} ${TARGET_ARCH}
-	)
-}
-
-export PREFIX = "${prefix}"
-export SBINDIR = "${sbindir}"
-export SHAREDIR = "${datadir}"
-export MANDIR = "${mandir}"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS= ${PCI_CONF_FLAG}"
-
-# The configure script breaks if the HOST variable is set
-HOST[unexport] = "1"
-
-do_install () {
-	oe_runmake DESTDIR=${D} install install-lib
-
-	install -d ${D}${bindir}
-	ln -s ../sbin/lspci ${D}${bindir}/lspci
-
-	oe_multilib_header pci/config.h
-}
-
-PACKAGES =+ "${PN}-ids libpci"
-FILES_${PN}-ids = "${datadir}/pci.ids*"
-FILES_libpci = "${libdir}/libpci.so.*"
-SUMMARY_${PN}-ids = "PCI utilities - device ID database"
-DESCRIPTION_${PN}-ids = "Package providing the PCI device ID database for pciutils."
-RDEPENDS_${PN} += "${PN}-ids"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pciutils/pciutils_3.5.1.bb b/import-layers/yocto-poky/meta/recipes-bsp/pciutils/pciutils_3.5.1.bb
new file mode 100644
index 0000000..d32b119
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/pciutils/pciutils_3.5.1.bb
@@ -0,0 +1,60 @@
+SUMMARY = "PCI utilities"
+DESCRIPTION = 'The PCI Utilities package contains a library for portable access \
+to PCI bus configuration space and several utilities based on this library.'
+HOMEPAGE = "http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml"
+SECTION = "console/utils"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "zlib kmod"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz \
+           file://configure.patch \
+           file://guess-fix.patch \
+           file://makefile.patch"
+
+SRC_URI[md5sum] = "0879a8f7ac51f4e874cfc6b3521a13cc"
+SRC_URI[sha256sum] = "2bf3a4605a562fb6b8b7673bff85a474a5cf383ed7e4bd8886b4f0939013d42f"
+
+inherit multilib_header
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'hwdb', '', d)}"
+PACKAGECONFIG[hwdb] = "HWDB=yes,HWDB=no,udev"
+
+PCI_CONF_FLAG = "ZLIB=yes DNS=yes SHARED=yes"
+
+# see configure.patch
+do_configure () {
+	(
+	  cd lib && \
+	  # PACKAGECONFIG_CONFARGS for this recipe could only possibly contain 'HWDB=yes/no',
+	  # so we put it before ./configure
+	  ${PCI_CONF_FLAG} ${PACKAGECONFIG_CONFARGS} ./configure ${PV} ${datadir} ${TARGET_OS} ${TARGET_ARCH}
+	)
+}
+
+export PREFIX = "${prefix}"
+export SBINDIR = "${sbindir}"
+export SHAREDIR = "${datadir}"
+export MANDIR = "${mandir}"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS= ${PCI_CONF_FLAG}"
+
+# The configure script breaks if the HOST variable is set
+HOST[unexport] = "1"
+
+do_install () {
+	oe_runmake DESTDIR=${D} install install-lib
+
+	install -d ${D}${bindir}
+	ln -s ../sbin/lspci ${D}${bindir}/lspci
+
+	oe_multilib_header pci/config.h
+}
+
+PACKAGES =+ "${PN}-ids libpci"
+FILES_${PN}-ids = "${datadir}/pci.ids*"
+FILES_libpci = "${libdir}/libpci.so.*"
+SUMMARY_${PN}-ids = "PCI utilities - device ID database"
+DESCRIPTION_${PN}-ids = "Package providing the PCI device ID database for pciutils."
+RDEPENDS_${PN} += "${PN}-ids"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pcmciautils/pcmciautils_018.bb b/import-layers/yocto-poky/meta/recipes-bsp/pcmciautils/pcmciautils_018.bb
index 3556a45..bf0f58a 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/pcmciautils/pcmciautils_018.bb
+++ b/import-layers/yocto-poky/meta/recipes-bsp/pcmciautils/pcmciautils_018.bb
@@ -9,5 +9,3 @@
 SRC_URI[sha256sum] = "57c27be8f04ef4d535bcfa988567316cc57659fe69068327486dab53791e6558"
 
 PR = "r1"
-
-FILES_${PN} += "*/udev */*/udev"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/COPYING b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/COPYING
deleted file mode 100644
index 63f5293..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/COPYING
+++ /dev/null
@@ -1,2 +0,0 @@
-This is a blank COPYING file, and should be filled in by original author in future.
-
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/pointercal
deleted file mode 100644
index e69de29..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/pointercal
+++ /dev/null
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarm/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarm/pointercal
deleted file mode 100644
index abd84ca..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarm/pointercal
+++ /dev/null
@@ -1 +0,0 @@
-8313 4 -8526 7 8334 -82604 65536
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarmv6/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarmv6/pointercal
deleted file mode 100644
index abd84ca..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarmv6/pointercal
+++ /dev/null
@@ -1 +0,0 @@
-8313 4 -8526 7 8334 -82604 65536
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarmv7/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarmv7/pointercal
deleted file mode 100644
index abd84ca..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuarmv7/pointercal
+++ /dev/null
@@ -1 +0,0 @@
-8313 4 -8526 7 8334 -82604 65536
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemumips/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemumips/pointercal
deleted file mode 100644
index abd84ca..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemumips/pointercal
+++ /dev/null
@@ -1 +0,0 @@
-8313 4 -8526 7 8334 -82604 65536
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuppc/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuppc/pointercal
deleted file mode 100644
index c2d6e37..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemuppc/pointercal
+++ /dev/null
Binary files differ
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemux86-64/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemux86-64/pointercal
deleted file mode 100644
index 640053d..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemux86-64/pointercal
+++ /dev/null
@@ -1 +0,0 @@
-1280 0 1002 0 960 328 65536
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemux86/pointercal b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemux86/pointercal
deleted file mode 100644
index 640053d..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal/qemux86/pointercal
+++ /dev/null
@@ -1 +0,0 @@
-1280 0 1002 0 960 328 65536
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal_0.0.bb b/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal_0.0.bb
deleted file mode 100644
index df735a5..0000000
--- a/import-layers/yocto-poky/meta/recipes-bsp/pointercal/pointercal_0.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Touchscreen calibration data"
-SECTION = "base"
-PR = "r11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4b5fcfc87fb615860d398b5e38685edf"
-
-SRC_URI = "file://pointercal \
-           file://COPYING"
-
-S = "${WORKDIR}"
-
-do_install() {
-	# Only install file if it has a contents
-	if [ -s ${S}/pointercal ]; then
-	        install -d ${D}${sysconfdir}/
-	        install -m 0644 ${S}/pointercal ${D}${sysconfdir}/
-	fi
-}
-
-ALLOW_EMPTY_${PN} = "1"
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-INHIBIT_DEFAULT_DEPS = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/systemd-boot/files/0001-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch b/import-layers/yocto-poky/meta/recipes-bsp/systemd-boot/files/0001-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch
new file mode 100644
index 0000000..103d286
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/systemd-boot/files/0001-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch
@@ -0,0 +1,61 @@
+From 9dcd2c80347493f73800d8c1cb539f1daef14394 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Tue, 26 Jul 2016 03:54:42 -0400
+Subject: [PATCH] use lnr wrapper instead of looking for --relative option for ln
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ Makefile.am  | 6 +++---
+ configure.ac | 2 --
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 305099a..f08d023 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -247,7 +247,7 @@ define move-to-rootlibdir
+ 		$(MKDIR_P) $(DESTDIR)$(rootlibdir) && \
+ 		so_img_name=$$(readlink $(DESTDIR)$(libdir)/$$libname) && \
+ 		rm -f $(DESTDIR)$(libdir)/$$libname && \
+-		$(LN_S) --relative -f $(DESTDIR)$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \
++		lnr $(DESTDIR)$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \
+ 		mv $(DESTDIR)$(libdir)/$$libname.* $(DESTDIR)$(rootlibdir); \
+ 	fi
+ endef
+@@ -321,7 +321,7 @@ define install-relative-aliases
+ 	while [ -n "$$1" ]; do \
+ 		$(MKDIR_P) `dirname $(DESTDIR)$$dir/$$2` && \
+ 		rm -f $(DESTDIR)$$dir/$$2 && \
+-		$(LN_S) --relative $(DESTDIR)$$1 $(DESTDIR)$$dir/$$2 && \
++		lnr $(DESTDIR)$$1 $(DESTDIR)$$dir/$$2 && \
+ 		shift 2 || exit $$?; \
+ 	done
+ endef
+@@ -2906,7 +2906,7 @@ systemd_dbus1_generator_LDADD = \
+ dbus1-generator-install-hook:
+ 	$(AM_V_at)$(MKDIR_P) $(DESTDIR)$(usergeneratordir)
+ 	$(AM_V_RM)rm -f $(DESTDIR)$(usergeneratordir)/systemd-dbus1-generator
+-	$(AM_V_LN)$(LN_S) --relative -f $(DESTDIR)$(systemgeneratordir)/systemd-dbus1-generator $(DESTDIR)$(usergeneratordir)/systemd-dbus1-generator
++	$(AM_V_LN)lnr $(DESTDIR)$(systemgeneratordir)/systemd-dbus1-generator $(DESTDIR)$(usergeneratordir)/systemd-dbus1-generator
+ 
+ dbus1-generator-uninstall-hook:
+ 	rm -f $(DESTDIR)$(usergeneratordir)/systemd-dbus1-generator
+diff --git a/configure.ac b/configure.ac
+index 329861a..52c6e3d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -110,8 +110,6 @@ AC_PATH_PROG([SULOGIN], [sulogin], [/usr/sbin/sulogin], [$PATH:/usr/sbin:/sbin])
+ AC_PATH_PROG([MOUNT_PATH], [mount], [/usr/bin/mount], [$PATH:/usr/sbin:/sbin])
+ AC_PATH_PROG([UMOUNT_PATH], [umount], [/usr/bin/umount], [$PATH:/usr/sbin:/sbin])
+ 
+-AS_IF([! ln --relative --help > /dev/null 2>&1], [AC_MSG_ERROR([*** ln doesn't support --relative ***])])
+-
+ M4_DEFINES=
+ 
+ AC_CHECK_TOOL(OBJCOPY, objcopy)
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/systemd-boot/systemd-boot.bb b/import-layers/yocto-poky/meta/recipes-bsp/systemd-boot/systemd-boot.bb
new file mode 100644
index 0000000..5b1164e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/systemd-boot/systemd-boot.bb
@@ -0,0 +1,38 @@
+require recipes-core/systemd/systemd.inc
+
+DEPENDS = "intltool-native libcap util-linux gnu-efi"
+
+SRC_URI += "file://0001-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch"
+
+inherit autotools pkgconfig gettext
+inherit deploy
+
+EXTRA_OECONF = " --enable-gnuefi \
+                 --with-efi-includedir=${STAGING_INCDIR} \
+                 --with-efi-ldsdir=${STAGING_LIBDIR} \
+                 --with-efi-libdir=${STAGING_LIBDIR} \
+                 --disable-manpages \
+               "
+
+# Imported from gummiboot recipe
+TUNE_CCARGS_remove = "-mfpmath=sse"
+COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux"
+
+do_compile() {
+	SYSTEMD_BOOT_EFI_ARCH="ia32"
+	if [ "${TARGET_ARCH}" = "x86_64" ]; then
+		SYSTEMD_BOOT_EFI_ARCH="x64"
+	fi
+
+	oe_runmake systemd-boot${SYSTEMD_BOOT_EFI_ARCH}.efi
+}
+
+do_install() {
+	# Bypass systemd installation with a NOP
+	:
+}
+
+do_deploy () {
+	install ${B}/systemd-boot*.efi ${DEPLOYDIR}
+}
+addtask deploy before do_build after do_compile
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2016.03.bb b/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2016.03.bb
index dfda5c1..79f1548 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2016.03.bb
+++ b/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2016.03.bb
@@ -40,10 +40,7 @@
 	install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv
 }
 
-SYSROOT_PREPROCESS_FUNCS_class-cross = "uboot_fw_utils_cross"
-uboot_fw_utils_cross() {
-	sysroot_stage_dir ${D}${bindir_cross} ${SYSROOT_DESTDIR}${bindir_cross}
-}
+SYSROOT_DIRS_append_class-cross = " ${bindir_cross}"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 BBCLASSEXTEND = "cross"
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot.inc b/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot.inc
index 3ba866d..252aae9 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/import-layers/yocto-poky/meta/recipes-bsp/u-boot/u-boot.inc
@@ -9,10 +9,11 @@
 SRC_URI = "git://git.denx.de/u-boot.git;branch=master"
 
 S = "${WORKDIR}/git"
+B = "${WORKDIR}/build"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
-inherit uboot-config deploy
+inherit uboot-config uboot-extlinux-config uboot-sign deploy
 
 EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" V=1'
 EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
@@ -32,7 +33,6 @@
 # but enable individual recipes to change this value.
 UBOOT_SUFFIX ??= "bin"
 UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
-UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}"
 UBOOT_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_SUFFIX}"
 UBOOT_MAKE_TARGET ?= "all"
 
@@ -65,9 +65,15 @@
 UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}"
 UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}"
 
+# U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf
+# to find EXTLINUX conf file.
+UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux"
+UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf"
+UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${PR}"
+
 do_compile () {
 	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d)}" = "ld-is-gold" ] ; then
-		sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' config.mk
+		sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' ${S}/config.mk
 	fi
 
 	unset LDFLAGS
@@ -79,41 +85,48 @@
 		echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
 		echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
 	fi
-    
-    if [ "x${UBOOT_CONFIG}" != "x" ]
+
+    if [ -n "${UBOOT_CONFIG}" ]
     then
+        unset i j k
         for config in ${UBOOT_MACHINE}; do
-            i=`expr $i + 1`;
-            for type  in ${UBOOT_CONFIG}; do
-                j=`expr $j + 1`;
+            i=$(expr $i + 1);
+            for type in ${UBOOT_CONFIG}; do
+                j=$(expr $j + 1);
                 if [ $j -eq $i ]
                 then
-                    oe_runmake O=${config} ${config}
-                    oe_runmake O=${config} ${UBOOT_MAKE_TARGET}
-                    cp  ${S}/${config}/${UBOOT_BINARY}  ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
+                    oe_runmake -C ${S} O=${B}/${config} ${config}
+                    oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET}
+                    for binary in ${UBOOT_BINARIES}; do
+                        k=$(expr $k + 1);
+                        if [ $k -eq $i ]; then
+                            cp ${B}/${config}/${binary} ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
+                        fi
+                    done
+                    unset k
                 fi
             done
             unset  j
         done
         unset  i
     else
-        oe_runmake ${UBOOT_MACHINE}
-        oe_runmake ${UBOOT_MAKE_TARGET}
+        oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
+        oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_TARGET}
     fi
 
 }
 
 do_install () {
-    if [ "x${UBOOT_CONFIG}" != "x" ]
+    if [ -n "${UBOOT_CONFIG}" ]
     then
         for config in ${UBOOT_MACHINE}; do
-            i=`expr $i + 1`;
+            i=$(expr $i + 1);
             for type in ${UBOOT_CONFIG}; do
-                j=`expr $j + 1`;
+                j=$(expr $j + 1);
                 if [ $j -eq $i ]
                 then
                     install -d ${D}/boot
-                    install ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
+                    install -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
                     ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
                     ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}
                 fi
@@ -123,21 +136,21 @@
         unset  i
     else
         install -d ${D}/boot
-        install ${S}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
+        install -m 644 ${B}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
         ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY}
     fi
 
-    if [ "x${UBOOT_ELF}" != "x" ]
+    if [ -n "${UBOOT_ELF}" ]
     then
-        if [ "x${UBOOT_CONFIG}" != "x" ]
+        if [ -n "${UBOOT_CONFIG}" ]
         then
             for config in ${UBOOT_MACHINE}; do
-                i=`expr $i + 1`;
+                i=$(expr $i + 1);
                 for type in ${UBOOT_CONFIG}; do
-                    j=`expr $j + 1`;
+                    j=$(expr $j + 1);
                     if [ $j -eq $i ]
                     then
-                        install ${S}/${config}/${UBOOT_ELF} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
+                        install -m 644 ${B}/${config}/${UBOOT_ELF} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
                         ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
                         ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${D}/boot/${UBOOT_BINARY}
                     fi
@@ -146,7 +159,7 @@
             done
             unset i
         else
-            install ${S}/${UBOOT_ELF} ${D}/boot/${UBOOT_ELF_IMAGE}
+            install -m 644 ${B}/${UBOOT_ELF} ${D}/boot/${UBOOT_ELF_IMAGE}
             ln -sf ${UBOOT_ELF_IMAGE} ${D}/boot/${UBOOT_ELF_BINARY}
         fi
     fi
@@ -156,17 +169,17 @@
         install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
     fi
 
-    if [ "x${SPL_BINARY}" != "x" ]
+    if [ -n "${SPL_BINARY}" ]
     then
-        if [ "x${UBOOT_CONFIG}" != "x" ]   
+        if [ -n "${UBOOT_CONFIG}" ]
         then
             for config in ${UBOOT_MACHINE}; do
-                i=`expr $i + 1`;
+                i=$(expr $i + 1);
                 for type in ${UBOOT_CONFIG}; do
-                    j=`expr $j + 1`;
+                    j=$(expr $j + 1);
                     if [ $j -eq $i ]
                     then
-                         install ${S}/${config}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}-${type}-${PV}-${PR}
+                         install -m 644 ${B}/${config}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}-${type}-${PV}-${PR}
                          ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${D}/boot/${SPL_BINARYNAME}-${type}
                          ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${D}/boot/${SPL_BINARYNAME}
                     fi
@@ -175,61 +188,67 @@
             done
             unset  i
         else
-            install ${S}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}
+            install -m 644 ${B}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}
             ln -sf ${SPL_IMAGE} ${D}/boot/${SPL_BINARYNAME}
         fi
     fi
 
-    if [ "x${UBOOT_ENV}" != "x" ]
+    if [ -n "${UBOOT_ENV}" ]
     then
-        install ${WORKDIR}/${UBOOT_ENV_BINARY} ${D}/boot/${UBOOT_ENV_IMAGE}
+        install -m 644 ${WORKDIR}/${UBOOT_ENV_BINARY} ${D}/boot/${UBOOT_ENV_IMAGE}
         ln -sf ${UBOOT_ENV_IMAGE} ${D}/boot/${UBOOT_ENV_BINARY}
     fi
+
+    if [ "${UBOOT_EXTLINUX}" = "1" ]
+    then
+        install -Dm 0644 ${UBOOT_EXTLINUX_CONFIG} ${D}/${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_CONF_NAME}
+    fi
+
 }
 
 FILES_${PN} = "/boot ${sysconfdir}"
 
 do_deploy () {
-    if [ "x${UBOOT_CONFIG}" != "x" ]
+    if [ -n "${UBOOT_CONFIG}" ]
     then
         for config in ${UBOOT_MACHINE}; do
-            i=`expr $i + 1`;
+            i=$(expr $i + 1);
             for type in ${UBOOT_CONFIG}; do
-                j=`expr $j + 1`;
+                j=$(expr $j + 1);
                 if [ $j -eq $i ]
                 then
                     install -d ${DEPLOYDIR}
-                    install ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
+                    install -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
                     cd ${DEPLOYDIR}
                     ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}-${type}
                     ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}
                     ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}-${type}
                     ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}
-                fi 
-            done 
+                fi
+            done
             unset  j
         done
         unset  i
     else
         install -d ${DEPLOYDIR}
-        install ${S}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
+        install -m 644 ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
         cd ${DEPLOYDIR}
         rm -f ${UBOOT_BINARY} ${UBOOT_SYMLINK}
         ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK}
         ln -sf ${UBOOT_IMAGE} ${UBOOT_BINARY}
    fi
 
-    if [ "x${UBOOT_ELF}" != "x" ]
+    if [ -n "${UBOOT_ELF}" ]
     then
-        if [ "x${UBOOT_CONFIG}" != "x" ]
+        if [ -n "${UBOOT_CONFIG}" ]
         then
             for config in ${UBOOT_MACHINE}; do
-                i=`expr $i + 1`;
+                i=$(expr $i + 1);
                 for type in ${UBOOT_CONFIG}; do
-                    j=`expr $j + 1`;
+                    j=$(expr $j + 1);
                     if [ $j -eq $i ]
                     then
-                        install ${S}/${config}/${UBOOT_ELF} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
+                        install -m 644 ${B}/${config}/${UBOOT_ELF} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
                         ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}-${type}
                         ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}
                         ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}-${type}
@@ -240,24 +259,24 @@
             done
             unset i
         else
-            install ${S}/${UBOOT_ELF} ${DEPLOYDIR}/${UBOOT_ELF_IMAGE}
+            install -m 644 ${B}/${UBOOT_ELF} ${DEPLOYDIR}/${UBOOT_ELF_IMAGE}
             ln -sf ${UBOOT_ELF_IMAGE} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}
             ln -sf ${UBOOT_ELF_IMAGE} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}
         fi
     fi
 
 
-     if [ "x${SPL_BINARY}" != "x" ]
+     if [ -n "${SPL_BINARY}" ]
      then
-         if [ "x${UBOOT_CONFIG}" != "x" ]   
+         if [ -n "${UBOOT_CONFIG}" ]
          then
              for config in ${UBOOT_MACHINE}; do
-                 i=`expr $i + 1`;
+                 i=$(expr $i + 1);
                  for type in ${UBOOT_CONFIG}; do
-                     j=`expr $j + 1`;
+                     j=$(expr $j + 1);
                      if [ $j -eq $i ]
                      then
-                         install ${S}/${config}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}-${type}-${PV}-${PR}
+                         install -m 644 ${B}/${config}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}-${type}-${PV}-${PR}
                          rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}-${type}
                          ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_BINARYNAME}-${type}
                          ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_BINARYNAME}
@@ -269,7 +288,7 @@
              done
              unset  i
          else
-             install ${S}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}
+             install -m 644 ${B}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}
              rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}
              ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_BINARYNAME}
              ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_SYMLINK}
@@ -277,13 +296,20 @@
      fi
 
 
-    if [ "x${UBOOT_ENV}" != "x" ]
+    if [ -n "${UBOOT_ENV}" ]
     then
-        install ${WORKDIR}/${UBOOT_ENV_BINARY} ${DEPLOYDIR}/${UBOOT_ENV_IMAGE}
+        install -m 644 ${WORKDIR}/${UBOOT_ENV_BINARY} ${DEPLOYDIR}/${UBOOT_ENV_IMAGE}
         rm -f ${DEPLOYDIR}/${UBOOT_ENV_BINARY} ${DEPLOYDIR}/${UBOOT_ENV_SYMLINK}
         ln -sf ${UBOOT_ENV_IMAGE} ${DEPLOYDIR}/${UBOOT_ENV_BINARY}
         ln -sf ${UBOOT_ENV_IMAGE} ${DEPLOYDIR}/${UBOOT_ENV_SYMLINK}
     fi
+
+    if [ "${UBOOT_EXTLINUX}" = "1" ]
+    then
+        install -m 644 ${UBOOT_EXTLINUX_CONFIG} ${DEPLOYDIR}/${UBOOT_EXTLINUX_SYMLINK}
+        ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}
+        ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}
+    fi
 }
 
 addtask deploy before do_build after do_compile
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/v86d/v86d/aarch64-host.patch b/import-layers/yocto-poky/meta/recipes-bsp/v86d/v86d/aarch64-host.patch
new file mode 100644
index 0000000..701fed7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-bsp/v86d/v86d/aarch64-host.patch
@@ -0,0 +1,18 @@
+Accept aarch64 as valid build host
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: v86d-0.1.10/configure
+===================================================================
+--- v86d-0.1.10.orig/configure
++++ v86d-0.1.10/configure
+@@ -26,7 +26,7 @@ copt_x86emu_test()
+ 	local m=`uname -m`
+ 	if [ "$m" = "i686" -o "$m" = "i586" -o "$m" = "i486" -o "$m" = "i386" ]; then
+ 		echo "n";
+-	elif [ "$m" = "x86_64" ]; then
++	elif [ "$m" = "x86_64" -o "$m" = "aarch64" ]; then
+ 		echo "y";
+ 	else
+ 		echo "It looks like your architecture '$m' isn't supported by this version of v86d." >&2
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/v86d/v86d_0.1.10.bb b/import-layers/yocto-poky/meta/recipes-bsp/v86d/v86d_0.1.10.bb
index f502072..1046d63 100644
--- a/import-layers/yocto-poky/meta/recipes-bsp/v86d/v86d_0.1.10.bb
+++ b/import-layers/yocto-poky/meta/recipes-bsp/v86d/v86d_0.1.10.bb
@@ -13,7 +13,9 @@
            file://Update-x86emu-from-X.org.patch \
            file://fbsetup \
            file://uvesafb.conf \
-           file://ar-from-env.patch"
+           file://ar-from-env.patch \
+           file://aarch64-host.patch \
+"
 
 SRC_URI[md5sum] = "51c792ba7b874ad8c43f0d3da4cfabe0"
 SRC_URI[sha256sum] = "634964ae18ef68c8493add2ce150e3b4502badeb0d9194b4bd81241d25e6735c"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi-ui_0.6.32.bb b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi-ui_0.6.32.bb
index 3966b4c..ac36461 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi-ui_0.6.32.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi-ui_0.6.32.bb
@@ -6,22 +6,20 @@
 
 require avahi.inc
 
-inherit python-dir pythonnative distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+inherit distro_features_check
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
-PACKAGECONFIG ??= "dbus python"
-PACKAGECONFIG[python] = "--enable-python,--disable-python,python-native python"
-
+SRC_URI += "file://0001-configure.ac-install-GtkBuilder-interface-files-for-.patch"
 SRC_URI[md5sum] = "22b5e705d3eabb31d26f2e1e7b074013"
 SRC_URI[sha256sum] = "d54991185d514a0aba54ebeb408d7575b60f5818a772e28fa0e18b98bc1db454"
 
-DEPENDS += "avahi gtk+ libglade"
+DEPENDS += "avahi"
 
-AVAHI_GTK = "--enable-gtk --disable-gtk3 --disable-pygtk"
+AVAHI_GTK = "gtk3"
 
 S = "${WORKDIR}/avahi-${PV}"
 
-PACKAGES = "${PN} ${PN}-utils ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc python-avahi avahi-discover"
+PACKAGES = "${PN} ${PN}-utils ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc avahi-discover"
 
 FILES_${PN} = "${libdir}/libavahi-ui*.so.*"
 FILES_${PN}-dev += "${libdir}/libavahi-ui${SOLIBSDEV}"
@@ -29,14 +27,10 @@
 
 FILES_${PN}-utils = "${bindir}/b* ${datadir}/applications/b*"
 
-FILES_python-avahi = "${PYTHON_SITEPACKAGES_DIR}/avahi ${PYTHON_SITEPACKAGES_DIR}/avahi_discover"
 FILES_avahi-discover = "${datadir}/applications/avahi-discover.desktop \
-                        ${datadir}/avahi/interfaces/avahi-discover* \
+                        ${datadir}/avahi/interfaces/avahi-discover.ui \
                         ${bindir}/avahi-discover-standalone \
-                        ${datadir}/avahi/interfaces/avahi-discover.glade"
-
-RDEPENDS_python-avahi = "python-core python-dbus"
-
+                        "
 
 do_install_append () {
 	rm ${D}${sysconfdir} -rf
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi.inc b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi.inc
index 81aad79..234646d 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi.inc
@@ -23,8 +23,14 @@
           "
 UPSTREAM_CHECK_URI = "https://github.com/lathiat/avahi/releases/"
 
-PACKAGECONFIG ??= "dbus"
+# For gtk related PACKAGECONFIGs: gtk, gtk3 and pygtk
+AVAHI_GTK ?= ""
+
+PACKAGECONFIG ??= "dbus ${AVAHI_GTK}"
 PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
+PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+"
+PACKAGECONFIG[gtk3] = "--enable-gtk3,--disable-gtk3,gtk+3"
+PACKAGECONFIG[pygtk] = "--enable-pygtk,--disable-pygtk,"
 
 USERADD_PACKAGES = "avahi-daemon avahi-autoipd"
 USERADD_PARAM_avahi-daemon = "--system --home /var/run/avahi-daemon \
@@ -51,14 +57,12 @@
              --disable-manpages \
              ${EXTRA_OECONF_SYSVINIT} \
              ${EXTRA_OECONF_SYSTEMD} \
-             ${AVAHI_GTK} \
            "
 
 # The distro choice determines what init scripts are installed
 EXTRA_OECONF_SYSVINIT = "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','--with-distro=debian','--with-distro=none',d)}"
 EXTRA_OECONF_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES','systemd','--with-systemdsystemunitdir=${systemd_unitdir}/system/','--without-systemdsystemunitdir',d)}"
 
-AVAHI_GTK ?= "--disable-gtk --disable-gtk3"
 
 LDFLAGS_append_libc-uclibc = " -lintl"
 LDFLAGS_append_uclinux-uclibc = " -lintl"
@@ -71,7 +75,7 @@
 }
 
 do_compile_prepend() {
-    export GIR_EXTRA_LIBS_PATH="${B}/avahi-common/.libs:${B}/avahi-client/.libs:${B}/avahi-glib/.libs"
+    export GIR_EXTRA_LIBS_PATH="${B}/avahi-gobject/.libs:${B}/avahi-common/.libs:${B}/avahi-client/.libs:${B}/avahi-glib/.libs"
 }
 
 PACKAGES =+ "avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib libavahi-ui avahi-autoipd avahi-utils"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi_0.6.32.bb b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi_0.6.32.bb
index 6670106..bfa6304 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi_0.6.32.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/avahi_0.6.32.bb
@@ -12,6 +12,8 @@
                     file://avahi-daemon/main.c;endline=21;md5=9ee77368c5407af77caaef1b07285969 \
                     file://avahi-client/client.h;endline=23;md5=f4ac741a25c4f434039ba3e18c8674cf"
 
+SRC_URI += "file://avahi-fix-resource-unavaiable.patch"
+
 SRC_URI[md5sum] = "22b5e705d3eabb31d26f2e1e7b074013"
 SRC_URI[sha256sum] = "d54991185d514a0aba54ebeb408d7575b60f5818a772e28fa0e18b98bc1db454"
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/files/0001-configure.ac-install-GtkBuilder-interface-files-for-.patch b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/files/0001-configure.ac-install-GtkBuilder-interface-files-for-.patch
new file mode 100644
index 0000000..8ccef08
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/files/0001-configure.ac-install-GtkBuilder-interface-files-for-.patch
@@ -0,0 +1,28 @@
+From a59f13fab31a6e25bb03b2c2bc3aea576f857b6c Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Sun, 12 Jun 2016 18:32:49 +0300
+Subject: [PATCH] configure.ac: install GtkBuilder interface files for GTK+3
+ too
+
+Upstream-Status: Pending
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index aebb716..48bdf63 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -965,7 +965,7 @@ AC_SUBST(avahi_socket)
+ #
+ # Avahi interfaces dir
+ #
+-if test "x$HAVE_PYTHON_DBUS" = "xyes" -o "x$HAVE_GTK" = "xyes"; then
++if test "x$HAVE_PYTHON_DBUS" = "xyes" -o "x$HAVE_GTK" = "xyes" -o "x$HAVE_GTK3" = "xyes"; then
+ 	interfacesdir="${datadir}/${PACKAGE}/interfaces/"
+ 	AC_SUBST(interfacesdir)
+ fi
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/avahi/files/avahi-fix-resource-unavaiable.patch b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/files/avahi-fix-resource-unavaiable.patch
new file mode 100644
index 0000000..5a2fd75
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/avahi/files/avahi-fix-resource-unavaiable.patch
@@ -0,0 +1,30 @@
+Upstream-Status: Backport
+
+Backport from:
+https://github.com/experimental-platform/platform-hostname-avahi/pull/9
+
+It sometimes fails to run avahi with error: "Could not receive return value
+from daemon process". It has same root cause with
+https://github.com/lxc/lxc/issues/25.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From 5150983102ad5ad43f0dae203cb332c168eb5a71 Mon Sep 17 00:00:00 2001
+From: Hinnerk Haardt <haardt@information-control.de>
+Date: Thu, 17 Dec 2015 11:52:19 +0100
+Subject: [PATCH] Fix `chroot.c: fork() failed: Resource temporarily
+ unavailable` as per https://github.com/lxc/lxc/issues/25.
+
+---
+ avahi-daemon/avahi-daemon.conf | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/avahi-daemon/avahi-daemon.conf b/avahi-daemon/avahi-daemon.conf
+index 95166f8..3d5b7a6 100644
+--- a/avahi-daemon/avahi-daemon.conf
++++ b/avahi-daemon/avahi-daemon.conf
+@@ -65,4 +65,3 @@ rlimit-data=4194304
+ rlimit-fsize=0
+ rlimit-nofile=768
+ rlimit-stack=4194304
+-rlimit-nproc=3
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-1286_2.patch b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-1286_2.patch
index a31ea81..5f5cb0d 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-1286_2.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-1286_2.patch
@@ -5,6 +5,9 @@
  failure due to improper                         DNAME handling when parsing
  fetch reply messages.                         (CVE-2016-1286) [RT #41753]
 
+CVE: CVE-2016-1286
+Upstream-Status: Backport
+
 (cherry picked from commit 2de89ee9de8c8da9dc153a754b02dcdbb7fe2374)
 Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
 ---
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-2775.patch b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-2775.patch
new file mode 100644
index 0000000..5393063
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-2775.patch
@@ -0,0 +1,90 @@
+From 9d8aba8a7778721ae2cee6e4670a8e6be6590b05 Mon Sep 17 00:00:00 2001
+From: Mark Andrews <marka@isc.org>
+Date: Wed, 12 Oct 2016 19:52:59 +0900
+Subject: [PATCH]
+4406.   [security]      getrrsetbyname with a non absolute name could
+                        trigger an infinite recursion bug in lwresd
+                        and named with lwres configured if when combined
+                        with a search list entry the resulting name is
+                        too long. (CVE-2016-2775) [RT #42694]
+
+Backport commit 38cc2d14e218e536e0102fa70deef99461354232 from the
+v9.11.0_patch branch.
+
+CVE: CVE-2016-2775
+Upstream-Status: Backport
+
+Signed-off-by: zhengruoqin <zhengrq.fnst@cn.fujitsu.com>
+
+---
+ CHANGES                          |  6 ++++++
+ bin/named/lwdgrbn.c              | 16 ++++++++++------
+ bin/tests/system/lwresd/lwtest.c |  9 ++++++++-
+ 3 files changed, 24 insertions(+), 7 deletions(-)
+
+diff --git a/CHANGES b/CHANGES
+index d2e3360..d0a9d12 100644
+--- a/CHANGES
++++ b/CHANGES
+@@ -1,3 +1,9 @@
++4406.   [security]      getrrsetbyname with a non absolute name could
++                        trigger an infinite recursion bug in lwresd
++                        and named with lwres configured if when combined
++                        with a search list entry the resulting name is
++                        too long. (CVE-2016-2775) [RT #42694]
++
+ 4322.  [security]      Duplicate EDNS COOKIE options in a response could
+                        trigger an assertion failure. (CVE-2016-2088)
+                        [RT #41809]
+diff --git a/bin/named/lwdgrbn.c b/bin/named/lwdgrbn.c
+index 3e7b15b..e1e9adc 100644
+--- a/bin/named/lwdgrbn.c
++++ b/bin/named/lwdgrbn.c
+@@ -403,14 +403,18 @@ start_lookup(ns_lwdclient_t *client) {
+ 	INSIST(client->lookup == NULL);
+ 
+ 	dns_fixedname_init(&absname);
+-	result = ns_lwsearchctx_current(&client->searchctx,
+-					dns_fixedname_name(&absname));
++
+ 	/*
+-	 * This will return failure if relative name + suffix is too long.
+-	 * In this case, just go on to the next entry in the search path.
++         * Perform search across all search domains until success
++         * is returned. Return in case of failure.
+ 	 */
+-	if (result != ISC_R_SUCCESS)
+-		start_lookup(client);
++        while (ns_lwsearchctx_current(&client->searchctx,
++                        dns_fixedname_name(&absname)) != ISC_R_SUCCESS) {
++                if (ns_lwsearchctx_next(&client->searchctx) != ISC_R_SUCCESS) {
++                        ns_lwdclient_errorpktsend(client, LWRES_R_FAILURE);
++                        return;
++                }
++        }
+ 
+ 	result = dns_lookup_create(cm->mctx,
+ 				   dns_fixedname_name(&absname),
+diff --git a/bin/tests/system/lwresd/lwtest.c b/bin/tests/system/lwresd/lwtest.c
+index ad9b551..3eb4a66 100644
+--- a/bin/tests/system/lwresd/lwtest.c
++++ b/bin/tests/system/lwresd/lwtest.c
+@@ -768,7 +768,14 @@ main(void) {
+ 	test_getrrsetbyname("e.example1.", 1, 2, 1, 1, 1);
+ 	test_getrrsetbyname("e.example1.", 1, 46, 2, 0, 1);
+ 	test_getrrsetbyname("", 1, 1, 0, 0, 0);
+-
++        test_getrrsetbyname("123456789.123456789.123456789.123456789."
++                            "123456789.123456789.123456789.123456789."
++                            "123456789.123456789.123456789.123456789."
++                            "123456789.123456789.123456789.123456789."
++                            "123456789.123456789.123456789.123456789."
++                            "123456789.123456789.123456789.123456789."
++                            "123456789", 1, 1, 0, 0, 0);
++ 
+ 	if (fails == 0)
+ 		printf("I:ok\n");
+ 	return (fails);
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-2776.patch b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-2776.patch
new file mode 100644
index 0000000..738bf60
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-2776.patch
@@ -0,0 +1,123 @@
+From 1171111657081970585f9f0e03b476358c33a6c0 Mon Sep 17 00:00:00 2001
+From: Mark Andrews <marka@isc.org>
+Date: Wed, 12 Oct 2016 20:36:52 +0900
+Subject: [PATCH] 
+4467.   [security]      It was possible to trigger an assertion when 
+                        rendering a message. (CVE-2016-2776) [RT #43139]
+
+Backport commit 2bd0922cf995b9ac205fc83baf7e220b95c6bf12 from the
+v9.11.0_patch branch.
+
+CVE: CVE-2016-2776
+Upstream-Status: Backport
+
+Signed-off-by: zhengruoqin <zhengrq.fnst@cn.fujitsu.com>
+
+---
+ CHANGES           |  3 +++
+ lib/dns/message.c | 42 +++++++++++++++++++++++++++++++-----------
+ 2 files changed, 34 insertions(+), 11 deletions(-)
+
+diff --git a/CHANGES b/CHANGES
+index d0a9d12..5c8c61a 100644
+--- a/CHANGES
++++ b/CHANGES
+@@ -1,3 +1,6 @@
++4467.   [security]      It was possible to trigger an assertion when
++                        rendering a message. (CVE-2016-2776) [RT #43139]
++
+ 4406.   [security]      getrrsetbyname with a non absolute name could
+                         trigger an infinite recursion bug in lwresd
+                         and named with lwres configured if when combined
+diff --git a/lib/dns/message.c b/lib/dns/message.c
+index 6b5b4bb..b74dc81 100644
+--- a/lib/dns/message.c
++++ b/lib/dns/message.c
+@@ -1754,7 +1754,7 @@ dns_message_renderbegin(dns_message_t *msg, dns_compress_t *cctx,
+ 	if (r.length < DNS_MESSAGE_HEADERLEN)
+ 		return (ISC_R_NOSPACE);
+ 
+-	if (r.length < msg->reserved)
++        if (r.length - DNS_MESSAGE_HEADERLEN < msg->reserved)
+ 		return (ISC_R_NOSPACE);
+ 
+ 	/*
+@@ -1895,8 +1895,29 @@ norender_rdataset(const dns_rdataset_t *rdataset, unsigned int options,
+ 
+ 	return (ISC_TRUE);
+ }
+-
+ #endif
++
++static isc_result_t
++renderset(dns_rdataset_t *rdataset, dns_name_t *owner_name,
++         dns_compress_t *cctx, isc_buffer_t *target,
++         unsigned int reserved, unsigned int options, unsigned int *countp)
++{
++       isc_result_t result;
++
++       /*
++        * Shrink the space in the buffer by the reserved amount.
++        */
++       if (target->length - target->used < reserved)
++               return (ISC_R_NOSPACE);
++
++       target->length -= reserved;
++       result = dns_rdataset_towire(rdataset, owner_name,
++                                    cctx, target, options, countp);
++       target->length += reserved;
++
++       return (result);
++}
++
+ isc_result_t
+ dns_message_rendersection(dns_message_t *msg, dns_section_t sectionid,
+ 			  unsigned int options)
+@@ -1939,6 +1960,8 @@ dns_message_rendersection(dns_message_t *msg, dns_section_t sectionid,
+ 	/*
+ 	 * Shrink the space in the buffer by the reserved amount.
+ 	 */
++        if (msg->buffer->length - msg->buffer->used < msg->reserved)
++                return (ISC_R_NOSPACE);
+ 	msg->buffer->length -= msg->reserved;
+ 
+ 	total = 0;
+@@ -2214,9 +2237,8 @@ dns_message_renderend(dns_message_t *msg) {
+ 		 * Render.
+ 		 */
+ 		count = 0;
+-		result = dns_rdataset_towire(msg->opt, dns_rootname,
+-					     msg->cctx, msg->buffer, 0,
+-					     &count);
++                result = renderset(msg->opt, dns_rootname, msg->cctx,
++                                   msg->buffer, msg->reserved, 0, &count);
+ 		msg->counts[DNS_SECTION_ADDITIONAL] += count;
+ 		if (result != ISC_R_SUCCESS)
+ 			return (result);
+@@ -2232,9 +2254,8 @@ dns_message_renderend(dns_message_t *msg) {
+ 		if (result != ISC_R_SUCCESS)
+ 			return (result);
+ 		count = 0;
+-		result = dns_rdataset_towire(msg->tsig, msg->tsigname,
+-					     msg->cctx, msg->buffer, 0,
+-					     &count);
++                result = renderset(msg->tsig, msg->tsigname, msg->cctx,
++                                   msg->buffer, msg->reserved, 0, &count);
+ 		msg->counts[DNS_SECTION_ADDITIONAL] += count;
+ 		if (result != ISC_R_SUCCESS)
+ 			return (result);
+@@ -2255,9 +2276,8 @@ dns_message_renderend(dns_message_t *msg) {
+ 		 * the owner name of a SIG(0) is irrelevant, and will not
+ 		 * be set in a message being rendered.
+ 		 */
+-		result = dns_rdataset_towire(msg->sig0, dns_rootname,
+-					     msg->cctx, msg->buffer, 0,
+-					     &count);
++                result = renderset(msg->sig0, dns_rootname, msg->cctx,
++                                   msg->buffer, msg->reserved, 0, &count);
+ 		msg->counts[DNS_SECTION_ADDITIONAL] += count;
+ 		if (result != ISC_R_SUCCESS)
+ 			return (result);
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/dont-test-on-host.patch b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/dont-test-on-host.patch
index 6989d6d..b02ecb1 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/dont-test-on-host.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/dont-test-on-host.patch
@@ -1,6 +1,6 @@
 Upstream-Status: Pending
 
-Signed-off-by Saul Wold <sgw@linux.intel.com>
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
 
 Index: bind-9.9.5/bin/Makefile.in
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind_9.10.3-P3.bb b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind_9.10.3-P3.bb
index 1e3a20f..4e2e856 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind_9.10.3-P3.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bind/bind_9.10.3-P3.bb
@@ -25,6 +25,8 @@
            file://CVE-2016-1286_1.patch \
            file://CVE-2016-1286_2.patch \
            file://CVE-2016-2088.patch \
+           file://CVE-2016-2775.patch \
+           file://CVE-2016-2776.patch \
            "
 
 SRC_URI[md5sum] = "bcf7e772b616f7259420a3edc5df350a"
@@ -56,7 +58,7 @@
 
 PARALLEL_MAKE = ""
 
-RDEPENDS_${PN} = "python-core"
+RDEPENDS_${PN} = "python3-core"
 RDEPENDS_${PN}-dev = ""
 
 PACKAGE_BEFORE_PN += "${PN}-utils"
@@ -81,7 +83,7 @@
 	install -d "${D}${sysconfdir}/init.d"
 	install -m 644 ${S}/conf/* "${D}${sysconfdir}/bind/"
 	install -m 755 "${S}/init.d" "${D}${sysconfdir}/init.d/bind"
-	sed -i -e '1s,#!.*python,#! /usr/bin/env python,' ${D}${sbindir}/dnssec-coverage ${D}${sbindir}/dnssec-checkds
+	sed -i -e '1s,#!.*python,#! /usr/bin/python3,' ${D}${sbindir}/dnssec-coverage ${D}${sbindir}/dnssec-checkds
 
 	# Install systemd related files
 	install -d ${D}${sbindir}
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5.inc b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5.inc
index a508229..ecefb7b 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -18,6 +18,7 @@
 
 SRC_URI = "\
     ${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
+    file://out-of-tree.patch \
     file://init \
     file://run-ptest \
     ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
@@ -25,7 +26,7 @@
 "
 S = "${WORKDIR}/bluez-${PV}"
 
-inherit autotools-brokensep pkgconfig systemd update-rc.d distro_features_check ptest
+inherit autotools pkgconfig systemd update-rc.d distro_features_check ptest
 
 EXTRA_OECONF = "\
   --enable-tools \
@@ -60,17 +61,25 @@
 	    install -m 0644 ${S}/profiles/input/input.conf ${D}/${sysconfdir}/bluetooth/
 	fi
 
+  if [ -f ${D}/${sysconfdir}/init.d/bluetooth ]; then
+    sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}/${sysconfdir}/init.d/bluetooth
+  fi
+
 	# Install desired tools that upstream leaves in build area
         for f in ${NOINST_TOOLS} ; do
 	    install -m 755 ${B}/$f ${D}/${bindir}
 	done
+
+        # Patch python tools to use Python 3; they should be source compatible, but
+        # still refer to Python 2 in the shebang
+        sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${libdir}/bluez/test/*
 }
 
 ALLOW_EMPTY_libasound-module-bluez = "1"
 PACKAGES =+ "libasound-module-bluez ${PN}-testtools ${PN}-obex ${PN}-noinst-tools"
 
 FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so ${datadir}/alsa"
-FILES_${PN} += "${libdir}/bluetooth/plugins/*.so ${base_libdir}/udev/ ${nonarch_base_libdir}/udev/ ${systemd_unitdir}/ ${datadir}/dbus-1"
+FILES_${PN} += "${libdir}/bluetooth/plugins/*.so ${systemd_unitdir}/ ${datadir}/dbus-1"
 FILES_${PN}-dev += "\
   ${libdir}/bluetooth/plugins/*.la \
   ${libdir}/alsa-lib/*.la \
@@ -94,7 +103,7 @@
 
 FILES_${PN}-noinst-tools = "${@get_noinst_tools_paths(d, bb, d.getVar('NOINST_TOOLS', True))}"
 
-RDEPENDS_${PN}-testtools += "python python-dbus python-pygobject"
+RDEPENDS_${PN}-testtools += "python3 python3-dbus python3-pygobject"
 
 SYSTEMD_SERVICE_${PN} = "bluetooth.service"
 INITSCRIPT_PACKAGES = "${PN}"
@@ -108,5 +117,5 @@
 
 do_install_ptest() {
         cp -r ${B}/unit/ ${D}${PTEST_PATH}
-        rm ${D}${PTEST_PATH}/unit/*.c ${D}${PTEST_PATH}/unit/*.o
+        rm -f ${D}${PTEST_PATH}/unit/*.o
 }
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5/init b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5/init
index 1606a5c..489e9b9 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5/init
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5/init
@@ -3,7 +3,7 @@
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 DESC=bluetooth
 
-DAEMON=/usr/lib/bluez5/bluetooth/bluetoothd
+DAEMON=@LIBEXECDIR@/bluetooth/bluetoothd
 
 # If you want to be ignore error of "org.freedesktop.hostname1",
 # please enable NOPLUGIN_OPTION.
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch
new file mode 100644
index 0000000..3ee79d7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch
@@ -0,0 +1,26 @@
+From ed55b49a226ca3909f52416be2ae5ce1c5ca2cb2 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Fri, 22 Apr 2016 15:40:37 +0100
+Subject: [PATCH] Makefile.obexd: add missing mkdir in builtin.h generation
+
+In parallel out-of-tree builds it's possible that obexd/src/builtin.h is
+generated before the target directory has been implicitly created. Solve this by
+creating the directory before writing into it.
+
+Upstream-Status: Submitted
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+---
+ Makefile.obexd | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.obexd b/Makefile.obexd
+index 2e33cbc..c8286f0 100644
+--- a/Makefile.obexd
++++ b/Makefile.obexd
+@@ -105,2 +105,3 @@ obexd/src/plugin.$(OBJEXT): obexd/src/builtin.h
+ obexd/src/builtin.h: obexd/src/genbuiltin $(obexd_builtin_sources)
++	$(AM_V_at)$(MKDIR_P) $(dir $@)
+ 	$(AM_V_GEN)$(srcdir)/obexd/src/genbuiltin $(obexd_builtin_modules) > $@
+-- 
+2.8.0.rc3
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5_5.37.bb b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5_5.37.bb
deleted file mode 100644
index db20f79..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5_5.37.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-require bluez5.inc
-
-REQUIRED_DISTRO_FEATURES = "bluez5"
-
-SRC_URI[md5sum] = "33177e5743e24b2b3738f72be64e3ffb"
-SRC_URI[sha256sum] = "c14ba9ddcb0055522073477b8fd8bf1ddf5d219e75fdfd4699b7e0ce5350d6b0"
-
-# noinst programs in Makefile.tools that are conditional on READLINE
-# support
-NOINST_TOOLS_READLINE ?= " \
-    attrib/gatttool \
-    tools/obex-client-tool \
-    tools/obex-server-tool \
-    tools/bluetooth-player \
-    tools/obexctl \
-"
-
-# noinst programs in Makefile.tools that are conditional on EXPERIMENTAL
-# support
-NOINST_TOOLS_EXPERIMENTAL ?= " \
-    emulator/btvirt \
-    emulator/b1ee \
-    emulator/hfp \
-    tools/3dsp \
-    tools/mgmt-tester \
-    tools/gap-tester \
-    tools/l2cap-tester \
-    tools/sco-tester \
-    tools/smp-tester \
-    tools/hci-tester \
-    tools/rfcomm-tester \
-    tools/bdaddr \
-    tools/avinfo \
-    tools/avtest \
-    tools/scotest \
-    tools/amptest \
-    tools/hwdb \
-    tools/hcieventmask \
-    tools/hcisecfilter \
-    tools/btmgmt \
-    tools/btinfo \
-    tools/btattach \
-    tools/btsnoop \
-    tools/btproxy \
-    tools/btiotest \
-    tools/mcaptest \
-    tools/cltest \
-    tools/oobtest \
-    tools/seq2bseq \
-    tools/ibeacon \
-    tools/btgatt-client \
-    tools/btgatt-server \
-    tools/gatt-service \
-    profiles/iap/iapd \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5_5.41.bb b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5_5.41.bb
new file mode 100644
index 0000000..522aab7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/bluez5/bluez5_5.41.bb
@@ -0,0 +1,55 @@
+require bluez5.inc
+
+REQUIRED_DISTRO_FEATURES = "bluez5"
+
+SRC_URI[md5sum] = "318341b2188698130adb73236ee69244"
+SRC_URI[sha256sum] = "df7dc4462494dad4e60a2943240d584f6e760235dca64f5f10eba46dbab7f5f0"
+
+# noinst programs in Makefile.tools that are conditional on READLINE
+# support
+NOINST_TOOLS_READLINE ?= " \
+    attrib/gatttool \
+    tools/obex-client-tool \
+    tools/obex-server-tool \
+    tools/bluetooth-player \
+    tools/obexctl \
+    tools/btmgmt \
+"
+
+# noinst programs in Makefile.tools that are conditional on EXPERIMENTAL
+# support
+NOINST_TOOLS_EXPERIMENTAL ?= " \
+    emulator/btvirt \
+    emulator/b1ee \
+    emulator/hfp \
+    tools/3dsp \
+    tools/mgmt-tester \
+    tools/gap-tester \
+    tools/l2cap-tester \
+    tools/sco-tester \
+    tools/smp-tester \
+    tools/hci-tester \
+    tools/rfcomm-tester \
+    tools/bdaddr \
+    tools/avinfo \
+    tools/avtest \
+    tools/scotest \
+    tools/amptest \
+    tools/hwdb \
+    tools/hcieventmask \
+    tools/hcisecfilter \
+    tools/btinfo \
+    tools/btattach \
+    tools/btsnoop \
+    tools/btproxy \
+    tools/btiotest \
+    tools/mcaptest \
+    tools/cltest \
+    tools/oobtest \
+    tools/seq2bseq \
+    tools/ibeacon \
+    tools/btgatt-client \
+    tools/btgatt-server \
+    tools/gatt-service \
+    profiles/iap/iapd \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman-gnome/0001-Port-to-Gtk3.patch b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman-gnome/0001-Port-to-Gtk3.patch
new file mode 100644
index 0000000..c93e9b4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman-gnome/0001-Port-to-Gtk3.patch
@@ -0,0 +1,277 @@
+From a59b0fac02e74a971ac3f08bf28c17ce361a9526 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Wed, 2 Mar 2016 15:47:49 +0200
+Subject: [PATCH] Port to Gtk3
+
+Some unused (or not useful) code was removed, functionality should stay
+the same.
+
+Code still contains quite a few uses of deprecated API.
+
+Upstream-Status: Submitted
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ applet/agent.c        |  3 +--
+ applet/main.c         | 43 -------------------------------------------
+ applet/status.c       |  8 --------
+ configure.ac          |  3 +--
+ properties/ethernet.c | 14 +++++++-------
+ properties/main.c     |  2 +-
+ properties/wifi.c     | 12 ++++++------
+ 7 files changed, 16 insertions(+), 69 deletions(-)
+
+diff --git a/applet/agent.c b/applet/agent.c
+index 65bed08..04fe86a 100644
+--- a/applet/agent.c
++++ b/applet/agent.c
+@@ -126,7 +126,6 @@ static void request_input_dialog(GHashTable *request,
+ 	gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
+ 	gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
+ 	gtk_window_set_urgency_hint(GTK_WINDOW(dialog), TRUE);
+-	gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
+ 	input->dialog = dialog;
+ 
+ 	gtk_dialog_add_button(GTK_DIALOG(dialog),
+@@ -139,7 +138,7 @@ static void request_input_dialog(GHashTable *request,
+ 	gtk_table_set_row_spacings(GTK_TABLE(table), 4);
+ 	gtk_table_set_col_spacings(GTK_TABLE(table), 20);
+ 	gtk_container_set_border_width(GTK_CONTAINER(table), 12);
+-	gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), table);
++	gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area (GTK_DIALOG(dialog))), table);
+ 
+ 	label = gtk_label_new(_("Please provide some network information:"));
+ 	gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
+diff --git a/applet/main.c b/applet/main.c
+index f12d371..cd16285 100644
+--- a/applet/main.c
++++ b/applet/main.c
+@@ -157,46 +157,6 @@ static void name_owner_changed(DBusGProxy *proxy, const char *name,
+ 	}
+ }
+ 
+-static void open_uri(GtkWindow *parent, const char *uri)
+-{
+-	GtkWidget *dialog;
+-	GdkScreen *screen;
+-	GError *error = NULL;
+-	gchar *cmdline;
+-
+-	screen = gtk_window_get_screen(parent);
+-
+-	cmdline = g_strconcat("xdg-open ", uri, NULL);
+-
+-	if (gdk_spawn_command_line_on_screen(screen,
+-				cmdline, &error) == FALSE) {
+-		dialog = gtk_message_dialog_new(parent,
+-				GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,
+-				GTK_BUTTONS_CLOSE, "%s", error->message);
+-		gtk_dialog_run(GTK_DIALOG(dialog));
+-		gtk_widget_destroy(dialog);
+-		g_error_free(error);
+-	}
+-
+-	g_free(cmdline);
+-}
+-
+-static void about_url_hook(GtkAboutDialog *dialog,
+-				const gchar *url, gpointer data)
+-{
+-	open_uri(GTK_WINDOW(dialog), url);
+-}
+-
+-static void about_email_hook(GtkAboutDialog *dialog,
+-				const gchar *email, gpointer data)
+-{
+-	gchar *uri;
+-
+-	uri = g_strconcat("mailto:", email, NULL);
+-	open_uri(GTK_WINDOW(dialog), uri);
+-	g_free(uri);
+-}
+-
+ static void about_callback(GtkWidget *item, gpointer user_data)
+ {
+ 	const gchar *authors[] = {
+@@ -204,9 +164,6 @@ static void about_callback(GtkWidget *item, gpointer user_data)
+ 		NULL
+ 	};
+ 
+-	gtk_about_dialog_set_url_hook(about_url_hook, NULL, NULL);
+-	gtk_about_dialog_set_email_hook(about_email_hook, NULL, NULL);
+-
+ 	gtk_show_about_dialog(NULL, "version", VERSION,
+ 			"copyright", "Copyright \xc2\xa9 2008 Intel Corporation",
+ 			"comments", _("A connection manager for the GNOME desktop"),
+diff --git a/applet/status.c b/applet/status.c
+index aed6f1e..015ff29 100644
+--- a/applet/status.c
++++ b/applet/status.c
+@@ -102,8 +102,6 @@ static void icon_animation_start(IconAnimation *animation,
+ {
+ 	available = TRUE;
+ 
+-	gtk_status_icon_set_tooltip(statusicon, NULL);
+-
+ 	animation->start = start;
+ 	animation->end = (end == 0) ? animation->count - 1 : end;
+ 
+@@ -120,8 +118,6 @@ static void icon_animation_stop(IconAnimation *animation)
+ {
+ 	available = TRUE;
+ 
+-	gtk_status_icon_set_tooltip(statusicon, NULL);
+-
+ 	if (animation->id > 0)
+ 		g_source_remove(animation->id);
+ 
+@@ -251,8 +247,6 @@ void status_unavailable(void)
+ 	available = FALSE;
+ 
+ 	gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_notifier);
+-	gtk_status_icon_set_tooltip(statusicon,
+-				"Connection Manager daemon is not running");
+ 
+ 	gtk_status_icon_set_visible(statusicon, TRUE);
+ }
+@@ -299,7 +293,6 @@ static void set_ready(gint signal)
+ 
+ 	if (signal < 0) {
+ 		gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_wired);
+-		gtk_status_icon_set_tooltip(statusicon, NULL);
+ 		return;
+ 	}
+ 
+@@ -311,7 +304,6 @@ static void set_ready(gint signal)
+ 		index = 4;
+ 
+ 	gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_signal[index]);
+-	gtk_status_icon_set_tooltip(statusicon, NULL);
+ }
+ 
+ struct timeout_data {
+diff --git a/configure.ac b/configure.ac
+index b972e07..a4dad5d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -55,8 +55,7 @@ AC_SUBST(DBUS_LIBS)
+ DBUS_BINDING_TOOL="dbus-binding-tool"
+ AC_SUBST(DBUS_BINDING_TOOL)
+ 
+-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.8, dummy=yes,
+-				AC_MSG_ERROR(gtk+ >= 2.8 is required))
++PKG_CHECK_MODULES(GTK, gtk+-3.0)
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+ 
+diff --git a/properties/ethernet.c b/properties/ethernet.c
+index 31db7a0..0b6b423 100644
+--- a/properties/ethernet.c
++++ b/properties/ethernet.c
+@@ -82,7 +82,7 @@ void add_ethernet_switch_button(GtkWidget *mainbox, GtkTreeIter *iter,
+ 	gtk_container_set_border_width(GTK_CONTAINER(vbox), 24);
+ 	gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);
+ 
+-	table = gtk_table_new(1, 1, TRUE);
++	table = gtk_table_new(1, 1, FALSE);
+ 	gtk_table_set_row_spacings(GTK_TABLE(table), 10);
+ 	gtk_table_set_col_spacings(GTK_TABLE(table), 10);
+ 	gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
+@@ -136,7 +136,7 @@ void add_ethernet_service(GtkWidget *mainbox, GtkTreeIter *iter, struct config_d
+ 	gtk_container_set_border_width(GTK_CONTAINER(vbox), 24);
+ 	gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);
+ 
+-	table = gtk_table_new(5, 5, TRUE);
++	table = gtk_table_new(5, 5, FALSE);
+ 	gtk_table_set_row_spacings(GTK_TABLE(table), 10);
+ 	gtk_table_set_col_spacings(GTK_TABLE(table), 10);
+ 	gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
+@@ -144,9 +144,9 @@ void add_ethernet_service(GtkWidget *mainbox, GtkTreeIter *iter, struct config_d
+ 	label = gtk_label_new(_("Configuration:"));
+ 	gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 0, 1);
+ 
+-	combo = gtk_combo_box_new_text();
+-	gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "DHCP");
+-	gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "MANUAL");
++	combo = gtk_combo_box_text_new();
++	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "DHCP");
++	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "MANUAL");
+ 	gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(combo),
+ 					separator_function, NULL, NULL);
+ 	gtk_table_attach_defaults(GTK_TABLE(table), combo, 2, 4, 0, 1);
+@@ -219,7 +219,7 @@ void update_ethernet_ipv4(struct config_data *data, guint policy)
+ 	case CONNMAN_POLICY_DHCP:
+ 		gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
+ 		for (i = 0; i < 3; i++) {
+-			gtk_entry_set_editable(GTK_ENTRY(entry[i]), 0);
++			gtk_editable_set_editable(GTK_EDITABLE(entry[i]), 0);
+ 			gtk_widget_set_sensitive(entry[i], 0);
+ 			gtk_entry_set_text(GTK_ENTRY(entry[i]), _(""));
+ 		}
+@@ -227,7 +227,7 @@ void update_ethernet_ipv4(struct config_data *data, guint policy)
+ 	case CONNMAN_POLICY_MANUAL:
+ 		gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 1);
+ 		for (i = 0; i < 3; i++) {
+-			gtk_entry_set_editable(GTK_ENTRY(entry[i]), 1);
++			gtk_editable_set_editable(GTK_EDITABLE(entry[i]), 1);
+ 			gtk_widget_set_sensitive(entry[i], 1);
+ 		}
+ 		break;
+diff --git a/properties/main.c b/properties/main.c
+index c05f443..6f76361 100644
+--- a/properties/main.c
++++ b/properties/main.c
+@@ -429,7 +429,7 @@ static GtkWidget *create_interfaces(GtkWidget *window)
+ 
+ 	scrolled = gtk_scrolled_window_new(NULL, NULL);
+ 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+-				GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
++				GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ 	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled),
+ 							GTK_SHADOW_OUT);
+ 	gtk_box_pack_start(GTK_BOX(hbox), scrolled, FALSE, TRUE, 0);
+diff --git a/properties/wifi.c b/properties/wifi.c
+index bd325ef..a5827e0 100644
+--- a/properties/wifi.c
++++ b/properties/wifi.c
+@@ -125,7 +125,7 @@ void add_wifi_switch_button(GtkWidget *mainbox, GtkTreeIter *iter,
+ 	gtk_container_set_border_width(GTK_CONTAINER(vbox), 24);
+ 	gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);
+ 
+-	table = gtk_table_new(1, 1, TRUE);
++	table = gtk_table_new(1, 1, FALSE);
+ 	gtk_table_set_row_spacings(GTK_TABLE(table), 10);
+ 	gtk_table_set_col_spacings(GTK_TABLE(table), 10);
+ 	gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
+@@ -185,9 +185,9 @@ static void wifi_ipconfig(GtkWidget *table, struct config_data *data, GtkTreeIte
+ 	gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 3, 4);
+ 	data->ipv4.label[0] = label;
+ 
+-	combo = gtk_combo_box_new_text();
+-	gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "DHCP");
+-	gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Manual");
++	combo = gtk_combo_box_text_new();
++	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "DHCP");
++	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Manual");
+ 
+ 	gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(combo),
+ 			separator_function, NULL, NULL);
+@@ -335,14 +335,14 @@ void update_wifi_ipv4(struct config_data *data, guint policy)
+ 	case CONNMAN_POLICY_DHCP:
+ 		gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
+ 		for (i = 0; i < 3; i++) {
+-			gtk_entry_set_editable(GTK_ENTRY(entry[i]), 0);
++			gtk_editable_set_editable(GTK_EDITABLE(entry[i]), 0);
+ 			gtk_widget_set_sensitive(entry[i], 0);
+ 		}
+ 		break;
+ 	case CONNMAN_POLICY_MANUAL:
+ 		gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 1);
+ 		for (i = 0; i < 3; i++) {
+-			gtk_entry_set_editable(GTK_ENTRY(entry[i]), 1);
++			gtk_editable_set_editable(GTK_EDITABLE(entry[i]), 1);
+ 			gtk_widget_set_sensitive(entry[i], 1);
+ 		}
+ 		break;
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman-gnome_0.7.bb b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
index 7b875f0..a56bd37 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
@@ -6,7 +6,7 @@
                     file://properties/main.c;beginline=1;endline=20;md5=50c77c81871308b033ab7a1504626afb \
                     file://common/connman-dbus.c;beginline=1;endline=20;md5=de6b485c0e717a0236402d220187717a"
 
-DEPENDS = "gtk+ dbus-glib intltool-native gettext-native"
+DEPENDS = "gtk+3 dbus-glib dbus-glib-native intltool-native gettext-native"
 
 # 0.7 tag
 SRCREV = "cf3c325b23dae843c5499a113591cfbc98acb143"
@@ -15,12 +15,13 @@
            file://null_check_for_ipv4_config.patch \
            file://images/* \
            file://connman-gnome-fix-dbus-interface-name.patch \
+           file://0001-Port-to-Gtk3.patch \
           "
 
 S = "${WORKDIR}/git"
 
 inherit autotools-brokensep gtk-icon-cache pkgconfig distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
 RDEPENDS_${PN} = "connman"
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman.inc b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman.inc
index c375251..35a7eed 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman.inc
@@ -26,11 +26,9 @@
     --enable-loopback \
     --enable-ethernet \
     --enable-tools \
-    --enable-test \
     --disable-polkit \
     --enable-client \
 "
-CFLAGS += "-D_GNU_SOURCE"
 
 PACKAGECONFIG ??= "wispr \
                    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd','systemd', '', d)} \
@@ -140,10 +138,7 @@
 FILES_${PN}-tools = "${bindir}/wispr"
 RDEPENDS_${PN}-tools ="${PN}"
 
-FILES_${PN}-tests = "${bindir}/*-test ${libdir}/${BPN}/test/*"
-RDEPENDS_${PN}-tests = "python-dbus python-pygobject python-textutils python-subprocess python-fcntl python-netclient \
-                        ${PN} \
-"
+FILES_${PN}-tests = "${bindir}/*-test"
 
 FILES_${PN}-client = "${bindir}/connmanctl"
 RDEPENDS_${PN}-client ="${PN}"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0001-Detect-backtrace-API-availability-before-using-it.patch b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0001-Detect-backtrace-API-availability-before-using-it.patch
deleted file mode 100644
index 5dc6fd6..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0001-Detect-backtrace-API-availability-before-using-it.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 00d4447395725abaa651e12ed40095081e04011e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 13 Sep 2015 13:22:01 -0700
-Subject: [PATCH 1/3] Detect backtrace() API availability before using it
-
-C libraries besides glibc do not have backtrace() implemented
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- configure.ac | 2 ++
- src/log.c    | 5 ++---
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 69c0eeb..90099f2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -171,6 +171,8 @@ fi
- AM_CONDITIONAL(PPTP, test "${enable_pptp}" != "no")
- AM_CONDITIONAL(PPTP_BUILTIN, test "${enable_pptp}" = "builtin")
- 
-+AC_CHECK_HEADERS([execinfo.h])
-+
- AC_CHECK_HEADERS(resolv.h, dummy=yes,
- 	AC_MSG_ERROR(resolver header files are required))
- AC_CHECK_LIB(resolv, ns_initparse, dummy=yes, [
-diff --git a/src/log.c b/src/log.c
-index a693bd0..5b40c1f 100644
---- a/src/log.c
-+++ b/src/log.c
-@@ -30,7 +30,6 @@
- #include <stdlib.h>
- #include <string.h>
- #include <syslog.h>
--#include <execinfo.h>
- #include <dlfcn.h>
- 
- #include "connman.h"
-@@ -215,9 +214,9 @@ static void print_backtrace(unsigned int offset)
- static void signal_handler(int signo)
- {
- 	connman_error("Aborting (signal %d) [%s]", signo, program_exec);
--
-+#ifdef HAVE_EXECINFO_H
- 	print_backtrace(2);
--
-+#endif /* HAVE_EXECINFO_H */
- 	exit(EXIT_FAILURE);
- }
- 
--- 
-2.5.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0001-iptables-Add-missing-function-item-of-xtables-to-mat.patch b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0001-iptables-Add-missing-function-item-of-xtables-to-mat.patch
deleted file mode 100644
index 1b5a3e4..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0001-iptables-Add-missing-function-item-of-xtables-to-mat.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From acea08a0e4234a4c1a87bedc087c73ff36de0c7b Mon Sep 17 00:00:00 2001
-From: Wu Zheng <wu.zheng@intel.com>
-Date: Thu, 28 Jan 2016 18:04:17 +0800
-Subject: [PATCH] iptables: Add missing function item of xtables to match
- iptables 1.6
-
-The struct of xtables_globals has been modified in iptables 1.6.
-If connman runs with iptables 1.6, it can crash.
-
-Program received signal SIGSEGV, Segmentation fault.
-0x00000000 in ?? ()
-0xb7dea89c in xtables_find_target () from /usr/lib/libxtables.so.11
-0xb7deac1c in ?? () from /usr/lib/libxtables.so.11
-0xb7dea793 in xtables_find_target () from /usr/lib/libxtables.so.11
-
-The the missing function item of xtables is added to xtables_globals.
-
-Upstream-Status: Backport
-
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
-Signed-off-by: Wu Zheng <wu.zheng@intel.com>
----
- src/iptables.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/iptables.c b/src/iptables.c
-index bc0c763..5ef757a 100644
---- a/src/iptables.c
-+++ b/src/iptables.c
-@@ -1566,6 +1566,9 @@ struct xtables_globals iptables_globals = {
- 	.option_offset = 0,
- 	.opts = iptables_opts,
- 	.orig_opts = iptables_opts,
-+#if XTABLES_VERSION_CODE > 10
-+	.compat_rev = xtables_compatible_revision,
-+#endif
- };
- 
- static struct xtables_target *prepare_target(struct connman_iptables *table,
--- 
-2.4.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0003-Fix-header-inclusions-for-musl.patch b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0003-Fix-header-inclusions-for-musl.patch
deleted file mode 100644
index eefc683..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0003-Fix-header-inclusions-for-musl.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 67645a01a2f3f52625d8dd77f2811a9e213e1b7d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 13 Sep 2015 13:28:20 -0700
-Subject: [PATCH] Fix header inclusions for musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- gweb/gresolv.c        | 1 +
- plugins/wifi.c        | 3 +--
- src/tethering.c       | 2 --
- tools/dhcp-test.c     | 1 -
- tools/dnsproxy-test.c | 1 +
- 5 files changed, 3 insertions(+), 5 deletions(-)
-
-Index: connman-1.30/gweb/gresolv.c
-===================================================================
---- connman-1.30.orig/gweb/gresolv.c
-+++ connman-1.30/gweb/gresolv.c
-@@ -28,6 +28,7 @@
- #include <stdarg.h>
- #include <string.h>
- #include <stdlib.h>
-+#include <stdio.h>
- #include <resolv.h>
- #include <sys/types.h>
- #include <sys/socket.h>
-Index: connman-1.30/plugins/wifi.c
-===================================================================
---- connman-1.30.orig/plugins/wifi.c
-+++ connman-1.30/plugins/wifi.c
-@@ -30,9 +30,8 @@
- #include <string.h>
- #include <sys/ioctl.h>
- #include <sys/socket.h>
--#include <linux/if_arp.h>
--#include <linux/wireless.h>
- #include <net/ethernet.h>
-+#include <linux/wireless.h>
- 
- #ifndef IFF_LOWER_UP
- #define IFF_LOWER_UP	0x10000
-Index: connman-1.30/src/tethering.c
-===================================================================
---- connman-1.30.orig/src/tethering.c
-+++ connman-1.30/src/tethering.c
-@@ -31,10 +31,8 @@
- #include <stdio.h>
- #include <sys/ioctl.h>
- #include <net/if.h>
--#include <linux/sockios.h>
- #include <string.h>
- #include <fcntl.h>
--#include <linux/if_tun.h>
- #include <netinet/in.h>
- #include <linux/if_bridge.h>
- 
-Index: connman-1.30/tools/dhcp-test.c
-===================================================================
---- connman-1.30.orig/tools/dhcp-test.c
-+++ connman-1.30/tools/dhcp-test.c
-@@ -33,7 +33,6 @@
- #include <arpa/inet.h>
- #include <net/route.h>
- #include <net/ethernet.h>
--#include <linux/if_arp.h>
- 
- #include <gdhcp/gdhcp.h>
- 
-Index: connman-1.30/tools/dnsproxy-test.c
-===================================================================
---- connman-1.30.orig/tools/dnsproxy-test.c
-+++ connman-1.30/tools/dnsproxy-test.c
-@@ -27,6 +27,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
-+#include <stdio.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <sys/types.h>
-Index: connman-1.30/configure.ac
-===================================================================
---- connman-1.30.orig/configure.ac
-+++ connman-1.30/configure.ac
-@@ -173,6 +173,8 @@ AM_CONDITIONAL(PPTP_BUILTIN, test "${ena
- 
- AC_CHECK_HEADERS([execinfo.h])
- 
-+AC_CHECK_MEMBERS([struct in6_pktinfo.ipi6_addr], [], [], [[#include <netinet/in.h>]])
-+
- AC_CHECK_HEADERS(resolv.h, dummy=yes,
- 	AC_MSG_ERROR(resolver header files are required))
- AC_CHECK_LIB(resolv, ns_initparse, dummy=yes, [
-Index: connman-1.30/gdhcp/common.h
-===================================================================
---- connman-1.30.orig/gdhcp/common.h
-+++ connman-1.30/gdhcp/common.h
-@@ -19,6 +19,7 @@
-  *
-  */
- 
-+#include <config.h>
- #include <netinet/udp.h>
- #include <netinet/ip.h>
- 
-@@ -170,8 +171,8 @@ static const uint8_t dhcp_option_lengths
- 	[OPTION_U32]	= 4,
- };
- 
--/* already defined within netinet/in.h if using GNU compiler */
--#ifndef __USE_GNU
-+/* already defined within netinet/in.h if using GNU or musl libc */
-+#ifndef HAVE_STRUCT_IN6_PKTINFO_IPI6_ADDR
- struct in6_pktinfo {
- 	struct in6_addr ipi6_addr;  /* src/dst IPv6 address */
- 	unsigned int ipi6_ifindex;  /* send/recv interface index */
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/includes.patch b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/includes.patch
new file mode 100644
index 0000000..55cb187
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/includes.patch
@@ -0,0 +1,423 @@
+Fix various issues which cause problems under musl.
+
+Upstream-Status: Submitted
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 630516bcc0233b047f65665c003201ba6e77453d Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 9 Aug 2016 16:22:36 +0100
+Subject: [PATCH 1/3] Use AC_USE_SYSTEM_EXTENSIONS
+
+Instead of using #define _GNU_SOURCE in some source files which causes problems
+when building with musl as more files need the define, simply use
+AC_USE_SYSTEM_EXTENSIONS in configure.ac to get it defined globally.
+---
+ configure.ac       | 1 +
+ gdhcp/client.c     | 1 -
+ plugins/tist.c     | 1 -
+ src/backtrace.c    | 1 -
+ src/inet.c         | 1 -
+ src/log.c          | 1 -
+ src/ntp.c          | 1 -
+ src/resolver.c     | 1 -
+ src/rfkill.c       | 1 -
+ src/stats.c        | 1 -
+ src/timezone.c     | 1 -
+ tools/stats-tool.c | 1 -
+ tools/tap-test.c   | 1 -
+ tools/wispr.c      | 1 -
+ vpn/plugins/vpn.c  | 1 -
+ 15 files changed, 1 insertion(+), 14 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6e66ab3..bacf5ec 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -20,6 +20,7 @@ AC_SUBST(abs_top_srcdir)
+ AC_SUBST(abs_top_builddir)
+ 
+ AC_LANG_C
++AC_USE_SYSTEM_EXTENSIONS
+ 
+ AC_PROG_CC
+ AM_PROG_CC_C_O
+diff --git a/gdhcp/client.c b/gdhcp/client.c
+index fbb40ab..3aeb089 100644
+--- a/gdhcp/client.c
++++ b/gdhcp/client.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <errno.h>
+ #include <unistd.h>
+diff --git a/plugins/tist.c b/plugins/tist.c
+index ad5ef79..cc2800a 100644
+--- a/plugins/tist.c
++++ b/plugins/tist.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <stdbool.h>
+ #include <stdlib.h>
+diff --git a/src/backtrace.c b/src/backtrace.c
+index 6a66c0a..4dbdda8 100644
+--- a/src/backtrace.c
++++ b/src/backtrace.c
+@@ -24,7 +24,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+diff --git a/src/inet.c b/src/inet.c
+index 69ded19..81d92c2 100644
+--- a/src/inet.c
++++ b/src/inet.c
+@@ -25,7 +25,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <errno.h>
+ #include <unistd.h>
+diff --git a/src/log.c b/src/log.c
+index 9bae4a3..f7e82e5 100644
+--- a/src/log.c
++++ b/src/log.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <stdarg.h>
+diff --git a/src/ntp.c b/src/ntp.c
+index dd246eb..db8ae96 100644
+--- a/src/ntp.c
++++ b/src/ntp.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+diff --git a/src/resolver.c b/src/resolver.c
+index fbe4be7..ef61f92 100644
+--- a/src/resolver.c
++++ b/src/resolver.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <errno.h>
+ #include <fcntl.h>
+diff --git a/src/rfkill.c b/src/rfkill.c
+index 2bfb092..af49d12 100644
+--- a/src/rfkill.c
++++ b/src/rfkill.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <errno.h>
+ #include <fcntl.h>
+diff --git a/src/stats.c b/src/stats.c
+index 26343b1..cfcdc94 100644
+--- a/src/stats.c
++++ b/src/stats.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <errno.h>
+ #include <sys/mman.h>
+ #include <sys/types.h>
+diff --git a/src/timezone.c b/src/timezone.c
+index e346b11..8e91267 100644
+--- a/src/timezone.c
++++ b/src/timezone.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <errno.h>
+ #include <stdio.h>
+ #include <fcntl.h>
+diff --git a/tools/stats-tool.c b/tools/stats-tool.c
+index b076478..428d94b 100644
+--- a/tools/stats-tool.c
++++ b/tools/stats-tool.c
+@@ -22,7 +22,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <sys/mman.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+diff --git a/tools/tap-test.c b/tools/tap-test.c
+index fdc098a..57917f5 100644
+--- a/tools/tap-test.c
++++ b/tools/tap-test.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <errno.h>
+ #include <fcntl.h>
+diff --git a/tools/wispr.c b/tools/wispr.c
+index d5f9341..e56dfc1 100644
+--- a/tools/wispr.c
++++ b/tools/wispr.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+diff --git a/vpn/plugins/vpn.c b/vpn/plugins/vpn.c
+index 9a42385..479c3a7 100644
+--- a/vpn/plugins/vpn.c
++++ b/vpn/plugins/vpn.c
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #endif
+ 
+-#define _GNU_SOURCE
+ #include <string.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+-- 
+2.8.1
+
+
+From b8b7878e6cb2a1ed4fcfa256f7e232511a40e3d9 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 9 Aug 2016 15:37:50 +0100
+Subject: [PATCH 2/3] Check for in6_pktinfo.ipi6_addr explicitly
+
+Instead of assuming that just glibc has this structure, check for it at
+configure as musl also has it.
+
+Based on work by Khem Raj <raj.khem@gmail.com>.
+---
+ configure.ac   | 2 ++
+ gdhcp/common.h | 5 +++--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index bacf5ec..ad00456 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -186,6 +186,8 @@ AC_CHECK_LIB(resolv, ns_initparse, dummy=yes, [
+ AC_CHECK_HEADERS([execinfo.h])
+ AM_CONDITIONAL([BACKTRACE], [test "${ac_cv_header_execinfo_h}" = "yes"])
+ 
++AC_CHECK_MEMBERS([struct in6_pktinfo.ipi6_addr], [], [], [[#include <netinet/in.h>]])
++
+ AC_CHECK_FUNC(signalfd, dummy=yes,
+ 			AC_MSG_ERROR(signalfd support is required))
+ 
+diff --git a/gdhcp/common.h b/gdhcp/common.h
+index 75abc18..6899499 100644
+--- a/gdhcp/common.h
++++ b/gdhcp/common.h
+@@ -19,6 +19,7 @@
+  *
+  */
+ 
++#include <config.h>
+ #include <netinet/udp.h>
+ #include <netinet/ip.h>
+ 
+@@ -170,8 +171,8 @@ static const uint8_t dhcp_option_lengths[] = {
+ 	[OPTION_U32]	= 4,
+ };
+ 
+-/* already defined within netinet/in.h if using GNU compiler */
+-#ifndef __USE_GNU
++/* already defined within netinet/in.h if using glibc or musl */
++#ifndef HAVE_STRUCT_IN6_PKTINFO_IPI6_ADDR
+ struct in6_pktinfo {
+ 	struct in6_addr ipi6_addr;  /* src/dst IPv6 address */
+ 	unsigned int ipi6_ifindex;  /* send/recv interface index */
+-- 
+2.8.1
+
+
+From c0726e432fa0274a2b9c70179b03df6720972816 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 9 Aug 2016 15:19:23 +0100
+Subject: [PATCH 3/3] Rationalise includes
+
+gweb/gresolv.c uses snprintf() and isspace() so it should include stdio.h and
+ctype.h.
+
+tools/dnsproxy-test uses functions from stdio.h.
+
+musl warns when sys/ headers are included when the non-sys form should be used,
+so switch sys/errno.h and so on to errno.h.
+
+musl also causes redefinition errors when pieces of the networking headers are
+included, so remove the redundant includes.
+
+Based on work by Khem Raj <raj.khem@gmail.com>.
+---
+ gweb/gresolv.c               | 2 ++
+ plugins/wifi.c               | 3 +--
+ src/ippool.c                 | 1 -
+ src/iptables.c               | 2 +-
+ src/tethering.c              | 2 --
+ tools/dhcp-test.c            | 1 -
+ tools/dnsproxy-test.c        | 1 +
+ tools/private-network-test.c | 2 +-
+ tools/tap-test.c             | 2 +-
+ 9 files changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/gweb/gresolv.c b/gweb/gresolv.c
+index 8a51a9f..d55027c 100644
+--- a/gweb/gresolv.c
++++ b/gweb/gresolv.c
+@@ -23,11 +23,13 @@
+ #include <config.h>
+ #endif
+ 
++#include <ctype.h>
+ #include <errno.h>
+ #include <unistd.h>
+ #include <stdarg.h>
+ #include <string.h>
+ #include <stdlib.h>
++#include <stdio.h>
+ #include <resolv.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+diff --git a/plugins/wifi.c b/plugins/wifi.c
+index 9d56671..148131d 100644
+--- a/plugins/wifi.c
++++ b/plugins/wifi.c
+@@ -30,9 +30,8 @@
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+-#include <linux/if_arp.h>
+-#include <linux/wireless.h>
+ #include <net/ethernet.h>
++#include <linux/wireless.h>
+ 
+ #ifndef IFF_LOWER_UP
+ #define IFF_LOWER_UP	0x10000
+diff --git a/src/ippool.c b/src/ippool.c
+index cea1dcc..8a645da 100644
+--- a/src/ippool.c
++++ b/src/ippool.c
+@@ -28,7 +28,6 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
+-#include <sys/errno.h>
+ #include <sys/socket.h>
+ 
+ #include "connman.h"
+diff --git a/src/iptables.c b/src/iptables.c
+index 5ef757a..82e3ac4 100644
+--- a/src/iptables.c
++++ b/src/iptables.c
+@@ -28,7 +28,7 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
+-#include <sys/errno.h>
++#include <errno.h>
+ #include <sys/socket.h>
+ #include <xtables.h>
+ #include <inttypes.h>
+diff --git a/src/tethering.c b/src/tethering.c
+index 3153349..ad062d5 100644
+--- a/src/tethering.c
++++ b/src/tethering.c
+@@ -31,10 +31,8 @@
+ #include <stdio.h>
+ #include <sys/ioctl.h>
+ #include <net/if.h>
+-#include <linux/sockios.h>
+ #include <string.h>
+ #include <fcntl.h>
+-#include <linux/if_tun.h>
+ #include <netinet/in.h>
+ #include <linux/if_bridge.h>
+ 
+diff --git a/tools/dhcp-test.c b/tools/dhcp-test.c
+index c34e10a..eae66fc 100644
+--- a/tools/dhcp-test.c
++++ b/tools/dhcp-test.c
+@@ -33,7 +33,6 @@
+ #include <arpa/inet.h>
+ #include <net/route.h>
+ #include <net/ethernet.h>
+-#include <linux/if_arp.h>
+ 
+ #include <gdhcp/gdhcp.h>
+ 
+diff --git a/tools/dnsproxy-test.c b/tools/dnsproxy-test.c
+index 551cae9..371e2e2 100644
+--- a/tools/dnsproxy-test.c
++++ b/tools/dnsproxy-test.c
+@@ -24,6 +24,7 @@
+ #endif
+ 
+ #include <errno.h>
++#include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+diff --git a/tools/private-network-test.c b/tools/private-network-test.c
+index 3dd115b..2828bb3 100644
+--- a/tools/private-network-test.c
++++ b/tools/private-network-test.c
+@@ -32,7 +32,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <signal.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/signalfd.h>
+ #include <unistd.h>
+ 
+diff --git a/tools/tap-test.c b/tools/tap-test.c
+index 57917f5..cb3ee62 100644
+--- a/tools/tap-test.c
++++ b/tools/tap-test.c
+@@ -28,7 +28,7 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <string.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/ioctl.h>
+ 
+ #include <netinet/in.h>
+-- 
+2.8.1
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/no-version-scripts.patch b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/no-version-scripts.patch
new file mode 100644
index 0000000..e96e38b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/no-version-scripts.patch
@@ -0,0 +1,27 @@
+With binutils 2.27 on at least MIPS, connmand will crash on startup.  This
+appears to be due to the symbol visibilty scripts hiding symbols that stdio
+looks up at runtime, resulting in it segfaulting.
+
+This certainly appears to be a bug in binutils 2.27 although the problem has
+been known about for some time:
+
+https://sourceware.org/bugzilla/show_bug.cgi?id=17908
+
+As the version scripts are only used to hide symbols from plugins we can safely
+remove the scripts to work around the problem until binutils is fixed.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/Makefile.am b/Makefile.am
+index d70725c..76ae432 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -132,2 +132 @@ src_connmand_LDADD = gdbus/libgdbus-internal.la $(builtin_libadd) \
+-src_connmand_LDFLAGS = -Wl,--export-dynamic \
+-				-Wl,--version-script=$(srcdir)/src/connman.ver
++src_connmand_LDFLAGS = -Wl,--export-dynamic
+@@ -166,2 +165 @@ vpn_connman_vpnd_LDADD = gdbus/libgdbus-internal.la $(builtin_vpn_libadd) \
+-vpn_connman_vpnd_LDFLAGS = -Wl,--export-dynamic \
+-				-Wl,--version-script=$(srcdir)/vpn/vpn.ver
++vpn_connman_vpnd_LDFLAGS = -Wl,--export-dynamic
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman_1.31.bb b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman_1.31.bb
deleted file mode 100644
index e71d221..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman_1.31.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require connman.inc
-
-SRC_URI  = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
-            file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
-            file://0001-Detect-backtrace-API-availability-before-using-it.patch \
-            file://0002-resolve-musl-does-not-implement-res_ninit.patch \
-            file://0003-Fix-header-inclusions-for-musl.patch \
-            file://0001-iptables-Add-missing-function-item-of-xtables-to-mat.patch \
-            file://connman \
-            "
-SRC_URI[md5sum] = "cb1c413fcc4f49430294bbd7a92f5f3c"
-SRC_URI[sha256sum] = "88fcf0b6df334796b90e2fd2e434d6f5b36cd6f13b886a119b8c90276b72b8e2"
-
-RRECOMMENDS_${PN} = "connman-conf"
-
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman_1.33.bb b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman_1.33.bb
new file mode 100644
index 0000000..6ea1a08
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/connman/connman_1.33.bb
@@ -0,0 +1,14 @@
+require connman.inc
+
+SRC_URI  = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
+            file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
+            file://connman \
+            file://no-version-scripts.patch \
+            file://includes.patch \
+            "
+SRC_URI_append_libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch"
+
+SRC_URI[md5sum] = "c51903fd3e7a6a371d12ac5d72a1fa01"
+SRC_URI[sha256sum] = "bc8946036fa70124d663136f9f6b6238d897ca482782df907b07a428b09df5a0"
+
+RRECOMMENDS_${PN} = "connman-conf"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp.inc b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp.inc
index 5e396f1..aafdd0a 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp.inc
@@ -46,7 +46,8 @@
                 --with-cli-lease-file=${localstatedir}/lib/dhcp/dhclient.leases \
                 --with-cli6-lease-file=${localstatedir}/lib/dhcp/dhclient6.leases \
                 --with-libbind=${STAGING_LIBDIR}/ \
-		--enable-paranoia \
+                --enable-paranoia \
+                --with-randomdev=/dev/random \
                "
 
 do_install_append () {
@@ -78,6 +79,7 @@
 	sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
 	sed -i -e 's,@base_bindir@,${base_bindir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
 	sed -i -e 's,@localstatedir@,${localstatedir},g' ${D}${systemd_unitdir}/system/dhcpd*.service
+       sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcrelay.service
 }
 
 PACKAGES += "dhcp-server dhcp-server-config dhcp-client dhcp-relay dhcp-omshell"
@@ -94,7 +96,6 @@
 FILES_${PN}-relay = "${sbindir}/dhcrelay ${sysconfdir}/init.d/dhcp-relay ${sysconfdir}/default/dhcp-relay"
 
 FILES_${PN}-client = "${base_sbindir}/dhclient ${base_sbindir}/dhclient-script ${sysconfdir}/dhcp/dhclient.conf"
-RDEPENDS_${PN}-client = "bash"
 
 FILES_${PN}-omshell = "${bindir}/omshell"
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/0001-site.h-enable-gentle-shutdown.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/0001-site.h-enable-gentle-shutdown.patch
index 4344212..47443a5 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/0001-site.h-enable-gentle-shutdown.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/0001-site.h-enable-gentle-shutdown.patch
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/includes/site.h b/includes/site.h
-index 73fa4e8..9c33de3 100644
+index 1dd1251..abb66e4 100644
 --- a/includes/site.h
 +++ b/includes/site.h
-@@ -280,7 +280,7 @@
+@@ -289,7 +289,7 @@
     situations.  We plan to revisit this feature and may
     make non-backwards compatible changes including the
     removal of this define.  Use at your own risk.  */
@@ -21,5 +21,5 @@
  /* Include old error codes.  This is provided in case you
     are building an external program similar to omshell for
 -- 
-1.9.1
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/CVE-2015-8605.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/CVE-2015-8605.patch
deleted file mode 100644
index 923d5d5..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/CVE-2015-8605.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-Solves CVE-2015-8605 that caused DoS when an invalid lenght field in IPv4 UDP
-was recived by the server.
-
-Upstream-Status: Backport
-CVE: CVE-2015-8605
-
-Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
-
-=======================================================================
-diff --git a/common/packet.c b/common/packet.c
-index b530432..e600e37 100644
---- a/common/packet.c
-+++ b/common/packet.c
-@@ -220,7 +220,28 @@ ssize_t decode_hw_header (interface, buf, bufix, from)
- 	}
- }
- 
--/* UDP header and IP header decoded together for convenience. */
-+/*!
-+ *
-+ * \brief UDP header and IP header decoded together for convenience.
-+ *
-+ * Attempt to decode the UDP and IP headers and, if necessary, checksum
-+ * the packet.
-+ *
-+ * \param inteface - the interface on which the packet was recevied
-+ * \param buf - a pointer to the buffer for the received packet
-+ * \param bufix - where to start processing the buffer, previous
-+ *                routines may have processed parts of the buffer already
-+ * \param from - space to return the address of the packet sender
-+ * \param buflen - remaining length of the buffer, this will have been
-+ *                 decremented by bufix by the caller
-+ * \param rbuflen - space to return the length of the payload from the udp
-+ *                  header
-+ * \param csum_ready - indication if the checksum is valid for use
-+ *                     non-zero indicates the checksum should be validated
-+ *
-+ * \return - the index to the first byte of the udp payload (that is the
-+ *           start of the DHCP packet
-+ */
- 
- ssize_t
- decode_udp_ip_header(struct interface_info *interface,
-@@ -231,7 +252,7 @@ decode_udp_ip_header(struct interface_info *interface,
-   unsigned char *data;
-   struct ip ip;
-   struct udphdr udp;
--  unsigned char *upp, *endbuf;
-+  unsigned char *upp;
-   u_int32_t ip_len, ulen, pkt_len;
-   static unsigned int ip_packets_seen = 0;
-   static unsigned int ip_packets_bad_checksum = 0;
-@@ -241,11 +262,8 @@ decode_udp_ip_header(struct interface_info *interface,
-   static unsigned int udp_packets_length_overflow = 0;
-   unsigned len;
- 
--  /* Designate the end of the input buffer for bounds checks. */
--  endbuf = buf + bufix + buflen;
--
-   /* Assure there is at least an IP header there. */
--  if ((buf + bufix + sizeof(ip)) > endbuf)
-+  if (sizeof(ip) > buflen)
- 	  return -1;
- 
-   /* Copy the IP header into a stack aligned structure for inspection.
-@@ -257,13 +275,17 @@ decode_udp_ip_header(struct interface_info *interface,
-   ip_len = (*upp & 0x0f) << 2;
-   upp += ip_len;
- 
--  /* Check the IP packet length. */
-+  /* Check packet lengths are within the buffer:
-+   * first the ip header (ip_len)
-+   * then the packet length from the ip header (pkt_len)
-+   * then the udp header (ip_len + sizeof(udp)
-+   * We are liberal in what we accept, the udp payload should fit within
-+   * pkt_len, but we only check against the full buffer size.
-+   */
-   pkt_len = ntohs(ip.ip_len);
--  if (pkt_len > buflen)
--	return -1;
--
--  /* Assure after ip_len bytes that there is enough room for a UDP header. */
--  if ((upp + sizeof(udp)) > endbuf)
-+  if ((ip_len > buflen) ||
-+      (pkt_len > buflen) ||
-+      ((ip_len + sizeof(udp)) > buflen))
- 	  return -1;
- 
-   /* Copy the UDP header into a stack aligned structure for inspection. */
-@@ -284,7 +306,8 @@ decode_udp_ip_header(struct interface_info *interface,
- 	return -1;
- 
-   udp_packets_length_checked++;
--  if ((upp + ulen) > endbuf) {
-+  /* verify that the payload length from the udp packet fits in the buffer */
-+  if ((ip_len + ulen) > buflen) {
- 	udp_packets_length_overflow++;
- 	if (((udp_packets_length_checked > 4) &&
- 	     (udp_packets_length_overflow != 0)) &&
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/CVE-2016-2774.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/CVE-2016-2774.patch
deleted file mode 100644
index 4836dbc..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/CVE-2016-2774.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From b9f56d578ebfd649b5d829960540859ac6ca931c Mon Sep 17 00:00:00 2001
-From: Catalin Enache <catalin.enache@windriver.com>
-Date: Tue, 12 Apr 2016 18:23:31 +0300
-Subject: [PATCH] Add patch to limit the value of an fd we accept for a
- connection.
-
-By limiting the highest value we accept for an fd we limit the number
-of connections.
-
-Upstream-Status: Backport
-CVE: CVE-2016-2774
-
-Author: Shawn Routhier <sar@isc.org>
-Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
----
- includes/site.h   | 6 ++++++
- omapip/listener.c | 9 +++++++--
- 3 files changed, 18 insertions(+), 2 deletions(-)
-
-diff --git a/includes/site.h b/includes/site.h
-index 9c33de3..df020c8 100644
---- a/includes/site.h
-+++ b/includes/site.h
-@@ -290,6 +290,12 @@
-    this option will be removed at some time. */
- /* #define INCLUDE_OLD_DHCP_ISC_ERROR_CODES */
- 
-+/* Limit the value of a file descriptor the serve will use
-+   when accepting a connecting request.  This can be used to
-+   limit the number of TCP connections that the server will
-+   allow at one time.  A value of 0 means there is no limit.*/
-+#define MAX_FD_VALUE 200
-+
- /* Include definitions for various options.  In general these
-    should be left as is, but if you have already defined one
-    of these and prefer your definition you can comment the 
-diff --git a/omapip/listener.c b/omapip/listener.c
-index 8bdcdbd..61473cf 100644
---- a/omapip/listener.c
-+++ b/omapip/listener.c
-@@ -3,7 +3,7 @@
-    Subroutines that support the generic listener object. */
- 
- /*
-- * Copyright (c) 2012,2014 by Internet Systems Consortium, Inc. ("ISC")
-+ * Copyright (c) 2012,2014,2016 by Internet Systems Consortium, Inc. ("ISC")
-  * Copyright (c) 2004,2007,2009 by Internet Systems Consortium, Inc. ("ISC")
-  * Copyright (c) 1999-2003 by Internet Software Consortium
-  *
-@@ -233,7 +233,12 @@ isc_result_t omapi_accept (omapi_object_t *h)
- 			return ISC_R_NORESOURCES;
- 		return ISC_R_UNEXPECTED;
- 	}
--	
-+
-+	if ((MAX_FD_VALUE != 0) && (socket > MAX_FD_VALUE)) {
-+		close(socket);
-+		return (ISC_R_NORESOURCES);
-+	}
-+
- #if defined (TRACING)
- 	/* If we're recording a trace, remember the connection. */
- 	if (trace_record ()) {
--- 
-2.7.4
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-drop-resolv.conf.dhclient.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-drop-resolv.conf.dhclient.patch
index 47ea555..96095a5 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-drop-resolv.conf.dhclient.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/dhclient-script-drop-resolv.conf.dhclient.patch
@@ -66,5 +66,5 @@
  }
  
 -- 
-1.8.1.2
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/fix-external-bind.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/fix-external-bind.patch
deleted file mode 100644
index 956c5d8..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/fix-external-bind.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-Upstream-Status: Pending
-
-11/30/2010
---with-libbind=PATH is available but not used by Makefile,
-this patch is to allow building with external bind
-
-Signed-off-by: Qing He <qing.he@intel.com>
-
-Rebase the patch to 4.3.3
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
-diff --git a/Makefile.am b/Makefile.am
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -25,7 +25,7 @@ EXTRA_DIST = RELNOTES LICENSE \
- 	     bind/Makefile.in bind/bind.tar.gz bind/version.tmp \
- 	     common/tests/Atffile server/tests/Atffile
- 
--SUBDIRS = bind includes tests common omapip client dhcpctl relay server
-+SUBDIRS = includes tests common omapip client dhcpctl relay server
- 
- nobase_include_HEADERS = dhcpctl/dhcpctl.h
- 
-diff --git a/client/Makefile.am b/client/Makefile.am
---- a/client/Makefile.am
-+++ b/client/Makefile.am
-@@ -10,8 +10,8 @@ dhclient_SOURCES = clparse.c dhclient.c dhc6.c \
- 		   scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
- 		   scripts/netbsd scripts/nextstep scripts/openbsd \
- 		   scripts/solaris scripts/openwrt
--dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.a ../bind/lib/libirs.a \
--		 ../bind/lib/libdns.a ../bind/lib/libisccfg.a ../bind/lib/libisc.a
-+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.a $(libbind)/libirs.a \
-+		 $(libbind)/libdns.a $(libbind)/libisccfg.a $(libbind)/libisc.a
- man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
- EXTRA_DIST = $(man_MANS)
- 
-diff --git a/configure.ac b/configure.ac
---- a/configure.ac
-+++ b/configure.ac
-@@ -623,6 +623,7 @@ no)
- 	fi	
- 	;;
- esac
-+AC_SUBST([libbind])
- 
- # OpenLDAP support.
- AC_ARG_WITH(ldap,
-diff --git a/dhcpctl/Makefile.am b/dhcpctl/Makefile.am
---- a/dhcpctl/Makefile.am
-+++ b/dhcpctl/Makefile.am
-@@ -6,12 +6,12 @@ EXTRA_DIST = $(man_MANS)
- 
- omshell_SOURCES = omshell.c
- omshell_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
--	        ../bind/lib/libirs.a ../bind/lib/libdns.a \
--	        ../bind/lib/libisccfg.a ../bind/lib/libisc.a
-+	        $(libbind)/libirs.a $(libbind)/libdns.a \
-+	        $(libbind)/libisccfg.a $(libbind)/libisc.a
- 
- libdhcpctl_a_SOURCES = dhcpctl.c callback.c remote.c
- 
- cltest_SOURCES = cltest.c
- cltest_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
--	       ../bind/lib/libirs.a ../bind/lib/libdns.a \
--               ../bind/lib/libisccfg.a ../bind/lib/libisc.a
-+	       $(libbind)/libirs.a $(libbind)/libdns.a \
-+               $(libbind)/libisccfg.a $(libbind)/libisc.a
-diff --git a/omapip/Makefile.am b/omapip/Makefile.am
---- a/omapip/Makefile.am
-+++ b/omapip/Makefile.am
-@@ -10,6 +10,6 @@ man_MANS = omapi.3
- EXTRA_DIST = $(man_MANS)
- 
- svtest_SOURCES = test.c
--svtest_LDADD = libomapi.a ../bind/lib/libirs.a ../bind/lib/libdns.a \
--		../bind/lib/libisccfg.a ../bind/lib/libisc.a
-+svtest_LDADD = libomapi.a $(libbind)/libirs.a $(libbind)/libdns.a \
-+		$(libbind)/libisccfg.a $(libbind)/libisc.a
- 
-diff --git a/relay/Makefile.am b/relay/Makefile.am
---- a/relay/Makefile.am
-+++ b/relay/Makefile.am
-@@ -3,8 +3,8 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"'
- sbin_PROGRAMS = dhcrelay
- dhcrelay_SOURCES = dhcrelay.c
- dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
--		 ../bind/lib/libirs.a ../bind/lib/libdns.a \
--		 ../bind/lib/libisccfg.a ../bind/lib/libisc.a
-+		 $(libbind)/libirs.a $(libbind)/libdns.a \
-+		 $(libbind)/libisccfg.a $(libbind)/libisc.a
- man_MANS = dhcrelay.8
- EXTRA_DIST = $(man_MANS)
- 
-diff --git a/server/Makefile.am b/server/Makefile.am
---- a/server/Makefile.am
-+++ b/server/Makefile.am
-@@ -14,10 +14,12 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
- 
- dhcpd_CFLAGS = $(LDAP_CFLAGS)
- dhcpd_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
--	      ../dhcpctl/libdhcpctl.a ../bind/lib/libirs.a \
--	      ../bind/lib/libdns.a ../bind/lib/libisccfg.a ../bind/lib/libisc.a \
-+	      ../dhcpctl/libdhcpctl.a $(libbind)/libirs.a \
-+	      $(libbind)/libdns.a $(libbind)/libisccfg.a $(libbind)/libisc.a \
- 	      $(LDAP_LIBS)		
- 
-+ dhcpd_CFLAGS = $(LDAP_CFLAGS)
-+
- man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
- EXTRA_DIST = $(man_MANS)
- 
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/fixsepbuild.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/fixsepbuild.patch
index b3f8fdb..2f44147 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/fixsepbuild.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/fixsepbuild.patch
@@ -4,80 +4,88 @@
 
 RP 2013/03/21
 
-Rebase to 4.3.1
+Rebase to 4.3.4
+
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 ---
+ client/Makefile.am  | 4 ++--
+ common/Makefile.am  | 3 ++-
+ dhcpctl/Makefile.am | 2 ++
+ omapip/Makefile.am  | 1 +
+ relay/Makefile.am   | 2 +-
+ server/Makefile.am  | 2 +-
+ 6 files changed, 9 insertions(+), 5 deletions(-)
+
 diff --git a/client/Makefile.am b/client/Makefile.am
-index 8411960..1740f72 100644
+index 2cb83d8..4730bb3 100644
 --- a/client/Makefile.am
 +++ b/client/Makefile.am
-@@ -4,6 +4,8 @@
- # production code. Sadly, we are not there yet.
- SUBDIRS = . tests
+@@ -7,11 +7,11 @@ SUBDIRS = . tests
+ BINDLIBDIR = @BINDDIR@/lib
  
-+AM_CPPFLAGS = -I$(top_srcdir)/includes
-+
+ AM_CPPFLAGS = -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"' \
+-	      -DLOCALSTATEDIR='"$(localstatedir)"'
++	      -DLOCALSTATEDIR='"$(localstatedir)"' -I$(top_srcdir)/includes
+ 
  dist_sysconf_DATA = dhclient.conf.example
  sbin_PROGRAMS = dhclient
- dhclient_SOURCES = clparse.c dhclient.c dhc6.c \
-@@ -17,8 +19,8 @@ EXTRA_DIST = $(man_MANS)
- 
- dhclient.o: dhclient.c
- 	$(COMPILE) -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"' \
--		   -DLOCALSTATEDIR='"$(localstatedir)"' -c dhclient.c
-+		   -DLOCALSTATEDIR='"$(localstatedir)"' -c $(srcdir)/dhclient.c
- 
- dhc6.o: dhc6.c
- 	$(COMPILE) -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"' \
--		   -DLOCALSTATEDIR='"$(localstatedir)"' -c dhc6.c
-+		   -DLOCALSTATEDIR='"$(localstatedir)"' -c $(srcdir)/dhc6.c
+-dhclient_SOURCES = clparse.c dhclient.c dhc6.c \
++dhclient_SOURCES = $(srcdir)/clparse.c $(srcdir)/dhclient.c $(srcdir)/dhc6.c \
+ 		   scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
+ 		   scripts/netbsd scripts/nextstep scripts/openbsd \
+ 		   scripts/solaris scripts/openwrt
 diff --git a/common/Makefile.am b/common/Makefile.am
-index eddef05..5ce045f 100644
+index 113aee8..0f24fbb 100644
 --- a/common/Makefile.am
 +++ b/common/Makefile.am
-@@ -1,4 +1,4 @@
--AM_CPPFLAGS = -I.. -DLOCALSTATEDIR='"@localstatedir@"'
+@@ -1,4 +1,5 @@
+-AM_CPPFLAGS = -I$(top_srcdir) -DLOCALSTATEDIR='"@localstatedir@"'
 +AM_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_srcdir) -DLOCALSTATEDIR='"@localstatedir@"'
++
  AM_CFLAGS = $(LDAP_CFLAGS)
  
  noinst_LIBRARIES = libdhcp.a
 diff --git a/dhcpctl/Makefile.am b/dhcpctl/Makefile.am
-index 2987a53..cd72d75 100644
+index ceb0de1..ba8dd8b 100644
 --- a/dhcpctl/Makefile.am
 +++ b/dhcpctl/Makefile.am
-@@ -1,3 +1,5 @@
+@@ -1,5 +1,7 @@
+ BINDLIBDIR = @BINDDIR@/lib
+ 
 +AM_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_srcdir)
 +
  bin_PROGRAMS = omshell
  lib_LIBRARIES = libdhcpctl.a
  noinst_PROGRAMS = cltest
 diff --git a/omapip/Makefile.am b/omapip/Makefile.am
-index 5074479..9c0fab3 100644
+index 446a594..dd1afa0 100644
 --- a/omapip/Makefile.am
 +++ b/omapip/Makefile.am
-@@ -1,3 +1,5 @@
+@@ -1,4 +1,5 @@
+ BINDLIBDIR = @BINDDIR@/lib
 +AM_CPPFLAGS = -I$(top_srcdir)/includes
-+
+ 
  lib_LIBRARIES = libomapi.a
  noinst_PROGRAMS = svtest
- 
 diff --git a/relay/Makefile.am b/relay/Makefile.am
-index ec72a31..f842071 100644
+index 3060eca..6d652f6 100644
 --- a/relay/Makefile.am
 +++ b/relay/Makefile.am
-@@ -1,4 +1,4 @@
+@@ -1,6 +1,6 @@
+ BINDLIBDIR = @BINDDIR@/lib
+ 
 -AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"'
 +AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"' -I$(top_srcdir)/includes
  
  sbin_PROGRAMS = dhcrelay
  dhcrelay_SOURCES = dhcrelay.c
 diff --git a/server/Makefile.am b/server/Makefile.am
-index a446f0b..d0b873a 100644
+index 54feedf..3990b9c 100644
 --- a/server/Makefile.am
 +++ b/server/Makefile.am
-@@ -4,7 +4,7 @@
- # production code. Sadly, we are not there yet.
- SUBDIRS = . tests
+@@ -6,7 +6,7 @@ SUBDIRS = . tests
+ 
+ BINDLIBDIR = @BINDDIR@/lib
  
 -AM_CPPFLAGS = -I.. -DLOCALSTATEDIR='"@localstatedir@"'
 +AM_CPPFLAGS = -I$(top_srcdir) -DLOCALSTATEDIR='"@localstatedir@"' -I$(top_srcdir)/includes
@@ -85,5 +93,5 @@
  dist_sysconf_DATA = dhcpd.conf.example
  sbin_PROGRAMS = dhcpd
 -- 
-1.9.1
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/libxml2-configure-argument.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/libxml2-configure-argument.patch
new file mode 100644
index 0000000..1435662
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/libxml2-configure-argument.patch
@@ -0,0 +1,38 @@
+Add configure argument to make the libxml2 dependency explicit and
+determinisitic.
+
+Upstream-Status: Pending
+
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+
+Rebase to 4.3.4
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 726c88e..1684df1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -718,7 +718,16 @@ AC_SUBST(BINDSRCDIR)
+ 
+ # We need to find libxml2 if bind was built with support enabled
+ # otherwise we'll fail to build omapip/test.c
+-AC_SEARCH_LIBS(xmlTextWriterStartElement, [xml2],)
++AC_ARG_WITH(libxml2,
++	AS_HELP_STRING([--with-libxml2], [link against libxml2. this is needed if bind was built with xml2 support enabled]),
++	with_libxml2="$withval", with_libxml2="no")
++
++if test x$with_libxml2 != xno; then
++    AC_SEARCH_LIBS(xmlTextWriterStartElement, [xml2],
++                   [if test x$with_libxml2 != xauto; then
++                        AC_MSG_FAILURE([*** Cannot find xmlTextWriterStartElement with -lxml2 and libxml2 was requested])
++                    fi])
++fi
+ 
+ # OpenLDAP support.
+ AC_ARG_WITH(ldap,
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/link-with-lcrypto.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/link-with-lcrypto.patch
index 57e10b0..0d0e0dd 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/link-with-lcrypto.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/link-with-lcrypto.patch
@@ -5,14 +5,20 @@
 from bind that are linked to libcrypto. This is why i added a patch in order to add
 -lcrypto to LIBS.
 
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
 Upstream-Status: Pending
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
 
-Index: dhcp-4.2.3-P2-r0/dhcp-4.2.3-P2/configure.ac
-===================================================================
---- dhcp-4.2.3-P2.orig/configure.ac	2012-02-02 18:04:20.843023196 +0200
-+++ dhcp-4.2.3-P2/configure.ac	2012-02-02 17:58:16.000000000 +0200
-@@ -456,6 +456,10 @@
+Rebase to 4.3.4
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 097b0c3..726c88e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -584,6 +584,10 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void foo() __attribute__((noreturn));
  # Look for optional headers.
  AC_CHECK_HEADERS(sys/socket.h net/if_dl.h net/if6.h regex.h)
  
@@ -23,3 +29,6 @@
  # Solaris needs some libraries for functions
  AC_SEARCH_LIBS(socket, [socket])
  AC_SEARCH_LIBS(inet_ntoa, [nsl])
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/remove-dhclient-script-bash-dependency.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/remove-dhclient-script-bash-dependency.patch
new file mode 100644
index 0000000..997b9f6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/remove-dhclient-script-bash-dependency.patch
@@ -0,0 +1,55 @@
+From 8aed2a9ff09cb0d584ad0a7340fe3a596879d9b1 Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Thu, 21 Jul 2016 19:07:02 -0700
+Subject: [PATCH] remove dhclient-script bash dependency
+
+Take the dash compatible IPv6 link-local address test from the Debian
+version of dhclient-script.
+
+Note that although "echo -e" in the OE version of dhclient-script is
+technically bash specific too, it is supported by Busybox echo when
+Busybox is configured with CONFIG_FEATURE_FANCY_ECHO enabled (which
+is the default in the OE Busybox defconfig) therefore leave as-is.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ client/scripts/linux | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/client/scripts/linux b/client/scripts/linux
+index 232a0aa..1383f46 100755
+--- a/client/scripts/linux
++++ b/client/scripts/linux
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ # dhclient-script for Linux. Dan Halbert, March, 1997.
+ # Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
+ # No guarantees about this. I'm a novice at the details of Linux
+@@ -47,11 +47,11 @@ make_resolv_conf() {
+     if [ "x${new_dhcp6_domain_search}" != x ] ; then
+       resolv_conf="search ${new_dhcp6_domain_search}\n"
+     fi
+-    shopt -s nocasematch 
+     for nameserver in ${new_dhcp6_name_servers} ; do
+       # If the nameserver has a link-local address
+       # add a <zone_id> (interface name) to it.
+-      if  [[ "$nameserver" =~ ^fe80:: ]]
++      if [ "${nameserver##fe80::}" != "$nameserver" ] ||
++         [ "${nameserver##FE80::}" != "$nameserver" ]
+       then
+ 	zone_id="%$interface"
+       else
+@@ -59,7 +59,6 @@ make_resolv_conf() {
+       fi
+       resolv_conf="${resolv_conf}nameserver ${nameserver}$zone_id\n"
+     done
+-    shopt -u nocasematch 
+ 
+     echo -e "${resolv_conf}" > /etc/resolv.conf
+   fi
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch
index 61dd6a7..d84df5c 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/replace-ifconfig-route.patch
@@ -8,23 +8,32 @@
 
 Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com>
 
---- dhcp-4.2.5-P1/client/scripts/linux.orig	2013-09-04 12:22:55.000000000 +0500
-+++ dhcp-4.2.5-P1/client/scripts/linux	2013-09-04 12:52:19.068761518 +0500
-@@ -103,17 +103,11 @@
+Rebase to 4.3.4
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ client/scripts/linux | 82 ++++++++++++++++++++++++++++------------------------
+ 1 file changed, 45 insertions(+), 37 deletions(-)
+
+diff --git a/client/scripts/linux b/client/scripts/linux
+index a02cfd9..232a0aa 100755
+--- a/client/scripts/linux
++++ b/client/scripts/linux
+@@ -101,17 +101,11 @@ fi
  if [ x$old_broadcast_address != x ]; then
    old_broadcast_arg="broadcast $old_broadcast_address"
  fi
 -if [ x$new_subnet_mask != x ]; then
 -  new_subnet_arg="netmask $new_subnet_mask"
--fi
++if [ -n "$new_subnet_mask" ]; then
++    new_mask="/$new_subnet_mask"
+ fi
 -if [ x$old_subnet_mask != x ]; then
 -  old_subnet_arg="netmask $old_subnet_mask"
 -fi
 -if [ x$alias_subnet_mask != x ]; then
 -  alias_subnet_arg="netmask $alias_subnet_mask"
-+if [ -n "$new_subnet_mask" ]; then
-+    new_mask="/$new_subnet_mask"
- fi
+-fi
 -if [ x$new_interface_mtu != x ]; then
 -  mtu_arg="mtu $new_interface_mtu"
 +if [ -n "$alias_subnet_mask" ]; then
@@ -32,7 +41,7 @@
  fi
  if [ x$IF_METRIC != x ]; then
    metric_arg="metric $IF_METRIC"
-@@ -127,9 +121,9 @@
+@@ -125,9 +119,9 @@ fi
  if [ x$reason = xPREINIT ]; then
    if [ x$alias_ip_address != x ]; then
      # Bring down alias interface. Its routes will disappear too.
@@ -44,7 +53,7 @@
  
    # We need to give the kernel some time to get the interface up.
    sleep 1
-@@ -156,25 +150,30 @@
+@@ -154,25 +148,30 @@ if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
    if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
  		[ x$alias_ip_address != x$old_ip_address ]; then
      # Possible new alias. Remove old alias.
@@ -81,7 +90,7 @@
      done
    else
      # we haven't changed the address, have we changed other options           
-@@ -182,21 +181,23 @@
+@@ -180,21 +179,23 @@ if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
      if [ x$new_routers != x ] && [ x$new_routers != x$old_routers ] ; then
        # if we've changed routers delete the old and add the new.
        for router in $old_routers; do
@@ -112,7 +121,7 @@
    fi
    make_resolv_conf
    exit_with_hooks 0
-@@ -206,42 +207,49 @@
+@@ -204,42 +205,49 @@ if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \
     || [ x$reason = xSTOP ]; then
    if [ x$alias_ip_address != x ]; then
      # Turn off alias interface.
@@ -174,3 +183,6 @@
    exit_with_hooks 1
  fi
  
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/tweak-to-support-external-bind.patch b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/tweak-to-support-external-bind.patch
new file mode 100644
index 0000000..03c6abb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp/tweak-to-support-external-bind.patch
@@ -0,0 +1,117 @@
+From ad7bb401f47714fc30c408853b796ce0f1c7e65f Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Sat, 11 Jun 2016 22:51:44 -0400
+Subject: [PATCH] tweak to support external bind
+
+Tweak the external bind to oe-core's sysroot rather than
+external bind source build.
+
+Upstream-Status: Inappropriate <oe-core specific>
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ client/Makefile.am       | 2 +-
+ client/tests/Makefile.am | 2 +-
+ common/tests/Makefile.am | 2 +-
+ dhcpctl/Makefile.am      | 2 +-
+ omapip/Makefile.am       | 2 +-
+ relay/Makefile.am        | 2 +-
+ server/Makefile.am       | 2 +-
+ server/tests/Makefile.am | 2 +-
+ 8 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/client/Makefile.am b/client/Makefile.am
+index 4730bb3..84d8131 100644
+--- a/client/Makefile.am
++++ b/client/Makefile.am
+@@ -4,7 +4,7 @@
+ # production code. Sadly, we are not there yet.
+ SUBDIRS = . tests
+ 
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ 
+ AM_CPPFLAGS = -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"' \
+ 	      -DLOCALSTATEDIR='"$(localstatedir)"' -I$(top_srcdir)/includes
+diff --git a/client/tests/Makefile.am b/client/tests/Makefile.am
+index da69ea9..fe35e57 100644
+--- a/client/tests/Makefile.am
++++ b/client/tests/Makefile.am
+@@ -1,6 +1,6 @@
+ SUBDIRS = .
+ 
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ 
+ AM_CPPFLAGS = $(ATF_CFLAGS) -DUNIT_TEST -I$(top_srcdir)/includes
+ AM_CPPFLAGS += -I@BINDDIR@/include -I$(top_srcdir)
+diff --git a/common/tests/Makefile.am b/common/tests/Makefile.am
+index f8d6b0e..05cd9c1 100644
+--- a/common/tests/Makefile.am
++++ b/common/tests/Makefile.am
+@@ -1,6 +1,6 @@
+ SUBDIRS = .
+ 
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ 
+ AM_CPPFLAGS = $(ATF_CFLAGS) -I$(top_srcdir)/includes
+ 
+diff --git a/dhcpctl/Makefile.am b/dhcpctl/Makefile.am
+index ba8dd8b..9b2486e 100644
+--- a/dhcpctl/Makefile.am
++++ b/dhcpctl/Makefile.am
+@@ -1,4 +1,4 @@
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ 
+ AM_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_srcdir)
+ 
+diff --git a/omapip/Makefile.am b/omapip/Makefile.am
+index dd1afa0..e4a8599 100644
+--- a/omapip/Makefile.am
++++ b/omapip/Makefile.am
+@@ -1,4 +1,4 @@
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ AM_CPPFLAGS = -I$(top_srcdir)/includes
+ 
+ lib_LIBRARIES = libomapi.a
+diff --git a/relay/Makefile.am b/relay/Makefile.am
+index 6d652f6..b3bf578 100644
+--- a/relay/Makefile.am
++++ b/relay/Makefile.am
+@@ -1,4 +1,4 @@
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ 
+ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"' -I$(top_srcdir)/includes
+ 
+diff --git a/server/Makefile.am b/server/Makefile.am
+index 3990b9c..b5d8c2d 100644
+--- a/server/Makefile.am
++++ b/server/Makefile.am
+@@ -4,7 +4,7 @@
+ # production code. Sadly, we are not there yet.
+ SUBDIRS = . tests
+ 
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ 
+ AM_CPPFLAGS = -I$(top_srcdir) -DLOCALSTATEDIR='"@localstatedir@"' -I$(top_srcdir)/includes
+ 
+diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am
+index 65a9f74..2892309 100644
+--- a/server/tests/Makefile.am
++++ b/server/tests/Makefile.am
+@@ -1,6 +1,6 @@
+ SUBDIRS = .
+ 
+-BINDLIBDIR = @BINDDIR@/lib
++BINDLIBDIR = @BINDDIR@
+ 
+ AM_CPPFLAGS = $(ATF_CFLAGS) -DUNIT_TEST -I$(top_srcdir)/includes
+ AM_CPPFLAGS += -I@BINDDIR@/include -I$(top_srcdir)
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp_4.3.3.bb b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp_4.3.3.bb
deleted file mode 100644
index 4e8cd27..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp_4.3.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require dhcp.inc
-
-SRC_URI += "file://dhcp-3.0.3-dhclient-dbus.patch;striplevel=0 \
-            file://fix-external-bind.patch \
-            file://link-with-lcrypto.patch \
-            file://fixsepbuild.patch \
-            file://dhclient-script-drop-resolv.conf.dhclient.patch \
-            file://replace-ifconfig-route.patch \
-            file://CVE-2015-8605.patch \
-            file://0001-site.h-enable-gentle-shutdown.patch \
-            file://CVE-2016-2774.patch \
-           "
-
-SRC_URI[md5sum] = "c5577b09c9017cdd319a11ff6364268e"
-SRC_URI[sha256sum] = "553c4945b09b1c1b904c4780f34f72aaefa2fc8c6556715de0bc9d4e3d255ede"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp_4.3.4.bb b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp_4.3.4.bb
new file mode 100644
index 0000000..4151eb1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/dhcp_4.3.4.bb
@@ -0,0 +1,18 @@
+require dhcp.inc
+
+SRC_URI += "file://dhcp-3.0.3-dhclient-dbus.patch;striplevel=0 \
+            file://link-with-lcrypto.patch \
+            file://fixsepbuild.patch \
+            file://dhclient-script-drop-resolv.conf.dhclient.patch \
+            file://replace-ifconfig-route.patch \
+            file://0001-site.h-enable-gentle-shutdown.patch \
+            file://libxml2-configure-argument.patch \
+            file://tweak-to-support-external-bind.patch \
+            file://remove-dhclient-script-bash-dependency.patch \
+           "
+
+SRC_URI[md5sum] = "0138319fe2b788cf4bdf34fbeaf9ff54"
+SRC_URI[sha256sum] = "f5115aee3dd3e6925de4ba47b80ab732ba48b481c8364b6ebade2d43698d607e"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[bind-httpstats] = "--with-libxml2,--without-libxml2,libxml2"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/files/dhcrelay.service b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/files/dhcrelay.service
index a2d8189..15ff927 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/files/dhcrelay.service
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/dhcp/files/dhcrelay.service
@@ -3,7 +3,8 @@
 After=network.target
 
 [Service]
-ExecStart=@SBINDIR@/dhcrelay -d --no-pid
+EnvironmentFile=@SYSCONFDIR@/default/dhcp-relay
+ExecStart=@SBINDIR@/dhcrelay -d --no-pid -q $SERVERS
 
 [Install]
 WantedBy=multi-user.target
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2.inc b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2.inc
index 86e9310..63e7ca9 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2.inc
@@ -11,7 +11,7 @@
 
 DEPENDS = "flex-native bison-native iptables elfutils"
 
-inherit update-alternatives
+inherit update-alternatives bash-completion
 
 EXTRA_OEMAKE = "CC='${CC}' KERNEL_INCLUDE=${STAGING_INCDIR} DOCDIR=${docdir}/iproute2 SUBDIRS='lib tc ip bridge misc genl' SBINDIR='${base_sbindir}' LIBDIR='${libdir}'"
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2/iproute2-4.3.0-musl.patch b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2/iproute2-4.3.0-musl.patch
index 1b415a5..8c078f6 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2/iproute2-4.3.0-musl.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2/iproute2-4.3.0-musl.patch
@@ -1,64 +1,35 @@
-From 48596709d8ab59727b79a5c6db33ebb251c36543 Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Thu, 19 Nov 2015 17:44:25 +0100
 Subject: [PATCH] Avoid in6_addr redefinition
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
 
 Due to both <netinet/in.h> and <linux/in6.h> being included, the
 in6_addr is being redefined: once from the C library headers and once
 from the kernel headers. This causes some build failures with for
-example the musl C library:
-
-In file included from ../include/linux/xfrm.h:4:0,
-                 from xfrm.h:29,
-                 from ipxfrm.c:39:
-../include/linux/in6.h:32:8: error: redefinition of ‘struct in6_addr’
- struct in6_addr {
-        ^
-In file included from .../output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netdb.h:9:0,
-                 from ipxfrm.c:34:
-.../output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:24:8: note: originally defined here
- struct in6_addr
-        ^
+example the musl C library.
 
 In order to fix this, use just the C library header <netinet/in.h>.
-
 Original patch taken from
 http://git.alpinelinux.org/cgit/aports/tree/main/iproute2/musl-fixes.patch.
 
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
+(Refreshed the patch for 4.6 release)
+
 Upstream-Status: Pending
 
- include/libiptc/ipt_kernel_headers.h | 2 --
- include/linux/if_bridge.h            | 1 -
- include/linux/netfilter.h            | 2 --
- include/linux/xfrm.h                 | 1 -
- 4 files changed, 6 deletions(-)
-
-diff --git a/include/libiptc/ipt_kernel_headers.h b/include/libiptc/ipt_kernel_headers.h
-index 7e87828..9566be5 100644
---- a/include/libiptc/ipt_kernel_headers.h
-+++ b/include/libiptc/ipt_kernel_headers.h
-@@ -15,12 +15,10 @@
- #else /* libc5 */
- #include <sys/socket.h>
- #include <linux/ip.h>
--#include <linux/in.h>
- #include <linux/if.h>
- #include <linux/icmp.h>
- #include <linux/tcp.h>
- #include <linux/udp.h>
- #include <linux/types.h>
--#include <linux/in6.h>
- #endif
- #endif
-diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
-index ee197a3..f823aa4 100644
---- a/include/linux/if_bridge.h
-+++ b/include/linux/if_bridge.h
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+----
+diff -Naur iproute2-4.6.0-orig/include/libiptc/ipt_kernel_headers.h iproute2-4.6.0/include/libiptc/ipt_kernel_headers.h
+--- iproute2-4.6.0-orig/include/libiptc/ipt_kernel_headers.h	2016-05-23 12:03:23.821826910 +0300
++++ iproute2-4.6.0/include/libiptc/ipt_kernel_headers.h	2016-05-23 12:04:23.714078154 +0300
+@@ -6,7 +6,6 @@
+ #include <limits.h>
+ 
+ #include <netinet/ip.h>
+-#include <netinet/in.h>
+ #include <netinet/ip_icmp.h>
+ #include <netinet/tcp.h>
+ #include <netinet/udp.h>
+diff -Naur iproute2-4.6.0-orig/include/linux/if_bridge.h iproute2-4.6.0/include/linux/if_bridge.h
+--- iproute2-4.6.0-orig/include/linux/if_bridge.h	2016-05-23 12:03:23.821826910 +0300
++++ iproute2-4.6.0/include/linux/if_bridge.h	2016-05-23 12:04:23.716078129 +0300
 @@ -15,7 +15,6 @@
  
  #include <linux/types.h>
@@ -67,10 +38,9 @@
  
  #define SYSFS_BRIDGE_ATTR	"bridge"
  #define SYSFS_BRIDGE_FDB	"brforward"
-diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
-index b71b4c9..3e4e6ae 100644
---- a/include/linux/netfilter.h
-+++ b/include/linux/netfilter.h
+diff -Naur iproute2-4.6.0-orig/include/linux/netfilter.h iproute2-4.6.0/include/linux/netfilter.h
+--- iproute2-4.6.0-orig/include/linux/netfilter.h	2016-05-23 12:03:23.821826910 +0300
++++ iproute2-4.6.0/include/linux/netfilter.h	2016-05-23 12:04:23.717078117 +0300
 @@ -4,8 +4,6 @@
  #include <linux/types.h>
  
@@ -80,10 +50,20 @@
  
  /* Responses from hook functions. */
  #define NF_DROP 0
-diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h
-index b8f5451..a9761a5 100644
---- a/include/linux/xfrm.h
-+++ b/include/linux/xfrm.h
+diff -Naur iproute2-4.6.0-orig/include/linux/netfilter_ipv4/ip_tables.h iproute2-4.6.0/include/linux/netfilter_ipv4/ip_tables.h
+--- iproute2-4.6.0-orig/include/linux/netfilter_ipv4/ip_tables.h	2016-05-18 21:56:02.000000000 +0300
++++ iproute2-4.6.0/include/linux/netfilter_ipv4/ip_tables.h	2016-05-23 12:09:22.888337961 +0300
+@@ -17,7 +17,6 @@
+ 
+ #include <linux/types.h>
+ 
+-#include <linux/if.h>
+ #include <linux/netfilter_ipv4.h>
+ 
+ #include <linux/netfilter/x_tables.h>
+diff -Naur iproute2-4.6.0-orig/include/linux/xfrm.h iproute2-4.6.0/include/linux/xfrm.h
+--- iproute2-4.6.0-orig/include/linux/xfrm.h	2016-05-23 12:03:23.821826910 +0300
++++ iproute2-4.6.0/include/linux/xfrm.h	2016-05-23 12:04:23.718078104 +0300
 @@ -1,7 +1,6 @@
  #ifndef _LINUX_XFRM_H
  #define _LINUX_XFRM_H
@@ -92,6 +72,14 @@
  #include <linux/types.h>
  
  /* All of the structures in this file may not change size as they are
--- 
-2.6.3
-
+diff -Naur iproute2-4.6.0-orig/include/utils.h iproute2-4.6.0/include/utils.h
+--- iproute2-4.6.0-orig/include/utils.h	2016-05-23 12:03:23.821826910 +0300
++++ iproute2-4.6.0/include/utils.h	2016-05-23 12:04:23.718078104 +0300
+@@ -1,6 +1,7 @@
+ #ifndef __UTILS_H__
+ #define __UTILS_H__ 1
+ 
++#include <sys/param.h>  /* MAXPATHLEN */
+ #include <sys/types.h>
+ #include <asm/types.h>
+ #include <resolv.h>
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2/iproute2-fix-building-with-musl.patch b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2/iproute2-fix-building-with-musl.patch
deleted file mode 100644
index c83a243..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2/iproute2-fix-building-with-musl.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-iproute2: fix building with musl
-
-We need limits.h for PATH_MAX, fixes:
-
-rt_names.c:364:13: error: ‘PATH_MAX’ undeclared (first use in this
-function)
-
-Upstream-Status: Backport
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
-diff --git a/lib/rt_names.c b/lib/rt_names.c
-index f6d17c0..b665d3e 100644
---- a/lib/rt_names.c
-+++ b/lib/rt_names.c
-@@ -18,6 +18,7 @@
- #include <sys/time.h>
- #include <sys/socket.h>
- #include <dirent.h>
-+#include <limits.h>
- 
- #include <asm/types.h>
- #include <linux/rtnetlink.h>
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2_4.4.0.bb b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2_4.4.0.bb
deleted file mode 100644
index 7979e8b..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2_4.4.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require iproute2.inc
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
-           file://configure-cross.patch \
-           file://0001-iproute2-de-bash-scripts.patch \
-           file://iproute2-4.3.0-musl.patch \
-           file://iproute2-fix-building-with-musl.patch \
-          "
-SRC_URI[md5sum] = "d762653ec3e1ab0d4a9689e169ca184f"
-SRC_URI[sha256sum] = "bc91c367288a19f78ef800cd6840363be1f22da8436fbae88e1a7250490d6514"
-
-# CFLAGS are computed in Makefile and reference CCOPTS
-#
-EXTRA_OEMAKE_append = " CCOPTS='${CFLAGS}'"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2_4.7.0.bb b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2_4.7.0.bb
new file mode 100644
index 0000000..426f989
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/iproute2/iproute2_4.7.0.bb
@@ -0,0 +1,13 @@
+require iproute2.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
+           file://configure-cross.patch \
+           file://0001-iproute2-de-bash-scripts.patch \
+           file://iproute2-4.3.0-musl.patch \
+          "
+SRC_URI[md5sum] = "d4b205830cdc2702f8a0cbd6232129cd"
+SRC_URI[sha256sum] = "8f60dbcfb33a79daae0638f53bdcaa4310c0aa59ae39af8a234020dc69bb7b92"
+
+# CFLAGS are computed in Makefile and reference CCOPTS
+#
+EXTRA_OEMAKE_append = " CCOPTS='${CFLAGS}'"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw/0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch b/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw/0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch
index 2e52c80..715b88d 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw/0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw/0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch
@@ -7,27 +7,33 @@
 Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
 Signed-off-by: Maxin B. John <maxin.john@intel.com>
 ---
-diff -Naur iw-4.3-origin/version.sh iw-4.3/version.sh
---- iw-4.3-origin/version.sh	2015-11-20 16:37:58.762077162 +0200
-+++ iw-4.3/version.sh	2015-11-20 16:52:05.526491150 +0200
-@@ -3,21 +3,7 @@
- VERSION="4.3"
- OUT="$1"
+diff -Naur iw-4.7-orig/version.sh iw-4.7/version.sh
+--- iw-4.7-orig/version.sh	2016-05-31 12:52:46.000000000 +0300
++++ iw-4.7/version.sh	2016-06-01 11:21:58.307409060 +0300
+@@ -15,27 +15,7 @@
+ SRC_DIR=$(cd ${SRC_DIR}; pwd)
+ cd "${SRC_DIR}"
  
+-v=""
 -if [ -d .git ] && head=`git rev-parse --verify HEAD 2>/dev/null`; then
--	git update-index --refresh --unmerged > /dev/null
--	descr=$(git describe --match=v*)
+-    git update-index --refresh --unmerged > /dev/null
+-    descr=$(git describe --match=v* 2>/dev/null)
+-    if [ $? -eq 0 ]; then
+-        # on git builds check that the version number above
+-        # is correct...
+-        if [ "${descr%%-*}" = "v$VERSION" ]; then
+-            v="${descr#v}"
+-            if git diff-index --name-only HEAD | read dummy ; then
+-                v="$v"-dirty
+-            fi
+-        fi
+-    fi
+-fi
 -
--	# on git builds check that the version number above
--	# is correct...
--	[ "${descr%%-*}" = "v$VERSION" ] || exit 2
--
--	v="${descr#v}"
--	if git diff-index --name-only HEAD | read dummy ; then
--		v="$v"-dirty
--	fi
--else
--	v="$VERSION"
+-# set to the default version when failed to get the version
+-# information with git
+-if [ -z "${v}" ]; then
+-    v="$VERSION"
 -fi
 +v="$VERSION"
  
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw_4.3.bb b/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw_4.3.bb
deleted file mode 100644
index 6865e7a..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw_4.3.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "nl80211 based CLI configuration utility for wireless devices"
-DESCRIPTION = "iw is a new nl80211 based CLI configuration utility for \
-wireless devices. It supports almost all new drivers that have been added \
-to the kernel recently. "
-HOMEPAGE = "http://wireless.kernel.org/en/users/Documentation/iw"
-SECTION = "base"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=878618a5c4af25e9b93ef0be1a93f774"
-
-DEPENDS = "libnl"
-
-SRC_URI = "http://www.kernel.org/pub/software/network/iw/${BP}.tar.gz \
-           file://0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch \
-           file://separate-objdir.patch \
-"
-
-SRC_URI[md5sum] = "5ca622a270687d6862c9024fab266871"
-SRC_URI[sha256sum] = "2a853d95ffbd2b06c058b40ef4e6fa76a52c2709b05fb1976761fe13e9d9e39f"
-
-inherit pkgconfig
-
-EXTRA_OEMAKE = "\
-    -f '${S}/Makefile' \
-    \
-    'PREFIX=${prefix}' \
-    'SBINDIR=${sbindir}' \
-    'MANDIR=${mandir}' \
-"
-B = "${WORKDIR}/build"
-
-do_install() {
-    oe_runmake 'DESTDIR=${D}' install
-}
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw_4.7.bb b/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw_4.7.bb
new file mode 100644
index 0000000..e9f4141
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/iw/iw_4.7.bb
@@ -0,0 +1,33 @@
+SUMMARY = "nl80211 based CLI configuration utility for wireless devices"
+DESCRIPTION = "iw is a new nl80211 based CLI configuration utility for \
+wireless devices. It supports almost all new drivers that have been added \
+to the kernel recently. "
+HOMEPAGE = "http://wireless.kernel.org/en/users/Documentation/iw"
+SECTION = "base"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=878618a5c4af25e9b93ef0be1a93f774"
+
+DEPENDS = "libnl"
+
+SRC_URI = "http://www.kernel.org/pub/software/network/iw/${BP}.tar.gz \
+           file://0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch \
+           file://separate-objdir.patch \
+"
+
+SRC_URI[md5sum] = "19d1edd276b2ac0c6cccfc7ae8d2b732"
+SRC_URI[sha256sum] = "758092229f13d691968060a0ad41364ba8eb8da4503626c20233a5b1eb33b4d9"
+
+inherit pkgconfig
+
+EXTRA_OEMAKE = "\
+    -f '${S}/Makefile' \
+    \
+    'PREFIX=${prefix}' \
+    'SBINDIR=${sbindir}' \
+    'MANDIR=${mandir}' \
+"
+B = "${WORKDIR}/build"
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/libpcap/libpcap.inc b/import-layers/yocto-poky/meta/recipes-connectivity/libpcap/libpcap.inc
index b7601b0..7b29a52 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/libpcap/libpcap.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/libpcap/libpcap.inc
@@ -20,12 +20,15 @@
 
 EXTRA_OECONF = "--with-pcap=linux"
 
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)}"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
+"
 PACKAGECONFIG[bluez4] = "--enable-bluetooth,--disable-bluetooth,bluez4"
 # Add a dummy PACKAGECONFIG for bluez5 since it is not supported by libpcap.
 PACKAGECONFIG[bluez5] = ",,"
 PACKAGECONFIG[canusb] = "--enable-canusb,--enable-canusb=no,libusb"
 PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
 PACKAGECONFIG[libnl] = "--with-libnl,--without-libnl,libnl"
 
 CPPFLAGS_prepend = "-I${S} "
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/neard/neard_0.15.bb b/import-layers/yocto-poky/meta/recipes-connectivity/neard/neard_0.15.bb
deleted file mode 100644
index 93bddb3..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/neard/neard_0.15.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-SUMMARY = "Linux NFC daemon"
-DESCRIPTION = "A daemon for the Linux Near Field Communication stack"
-HOMEPAGE = "http://01.org/linux-nfc"
-LICENSE = "GPLv2"
-
-DEPENDS = "dbus glib-2.0 libnl"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/network/nfc/${BP}.tar.xz \
-           file://neard.in \
-           file://Makefile.am-fix-parallel-issue.patch \
-           file://Makefile.am-do-not-ship-version.h.patch \
-          "
-SRC_URI[md5sum] = "b746ce62eeef88e8de90765e00a75a1c"
-SRC_URI[sha256sum] = "651f6513d32cdaf8a426255d03aff38a6620a89b0567ec2b36606c6330a93353"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
- file://src/near.h;beginline=1;endline=20;md5=358e4deefef251a4761e1ffacc965d13 \
- "
-
-inherit autotools pkgconfig systemd update-rc.d bluetooth
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
-
-PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_unitdir}/system/ --with-systemduserunitdir=${systemd_unitdir}/user/,--disable-systemd"
-
-EXTRA_OECONF += "--enable-tools"
-
-# This would copy neard start-stop shell and test scripts
-do_install_append() {
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-		install -d ${D}${sysconfdir}/init.d/
-		sed "s:@installpath@:${libexecdir}/nfc:" ${WORKDIR}/neard.in \
-		  > ${D}${sysconfdir}/init.d/neard
-		chmod 0755 ${D}${sysconfdir}/init.d/neard
-	fi
-
-	# Install the tests for neard-tests
-	install -d ${D}${libdir}/neard
-	install -m 0755 ${S}/test/* ${D}${libdir}/${BPN}/
-	install -m 0755 ${B}/tools/nfctool/nfctool ${D}${libdir}/${BPN}/
-}
-
-PACKAGES =+ "${PN}-tests"
-
-FILES_${PN}-tests = "${libdir}/${BPN}/*-test"
-
-RDEPENDS_${PN} = "dbus python python-dbus python-pygobject"
-
-# Bluez & Wifi are not mandatory except for handover
-RRECOMMENDS_${PN} = "\
-                     ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)} \
-                     ${@bb.utils.contains('DISTRO_FEATURES', 'wifi','wpa-supplicant', '', d)} \
-                    "
-
-RDEPENDS_${PN}-tests = "python python-dbus python-pygobject"
-
-INITSCRIPT_NAME = "neard"
-INITSCRIPT_PARAMS = "defaults 64"
-
-SYSTEMD_SERVICE_${PN} = "neard.service"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/neard/neard_0.16.bb b/import-layers/yocto-poky/meta/recipes-connectivity/neard/neard_0.16.bb
new file mode 100644
index 0000000..5433dc3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/neard/neard_0.16.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Linux NFC daemon"
+DESCRIPTION = "A daemon for the Linux Near Field Communication stack"
+HOMEPAGE = "http://01.org/linux-nfc"
+LICENSE = "GPLv2"
+
+DEPENDS = "dbus glib-2.0 libnl"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/network/nfc/${BP}.tar.xz \
+           file://neard.in \
+           file://Makefile.am-fix-parallel-issue.patch \
+           file://Makefile.am-do-not-ship-version.h.patch \
+          "
+SRC_URI[md5sum] = "5c691fb7872856dc0d909c298bc8cb41"
+SRC_URI[sha256sum] = "eae3b11c541a988ec11ca94b7deab01080cd5b58cfef3ced6ceac9b6e6e65b36"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
+ file://src/near.h;beginline=1;endline=20;md5=358e4deefef251a4761e1ffacc965d13 \
+ "
+
+inherit autotools pkgconfig systemd update-rc.d bluetooth
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+
+PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_unitdir}/system/ --with-systemduserunitdir=${systemd_unitdir}/user/,--disable-systemd"
+
+EXTRA_OECONF += "--enable-tools"
+
+# This would copy neard start-stop shell and test scripts
+do_install_append() {
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+		install -d ${D}${sysconfdir}/init.d/
+		sed "s:@installpath@:${libexecdir}/nfc:" ${WORKDIR}/neard.in \
+		  > ${D}${sysconfdir}/init.d/neard
+		chmod 0755 ${D}${sysconfdir}/init.d/neard
+	fi
+}
+
+RDEPENDS_${PN} = "dbus"
+
+# Bluez & Wifi are not mandatory except for handover
+RRECOMMENDS_${PN} = "\
+                     ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)} \
+                     ${@bb.utils.contains('DISTRO_FEATURES', 'wifi','wpa-supplicant', '', d)} \
+                    "
+
+INITSCRIPT_NAME = "neard"
+INITSCRIPT_PARAMS = "defaults 64"
+
+SYSTEMD_SERVICE_${PN} = "neard.service"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.3.bb b/import-layers/yocto-poky/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.3.bb
index a6268f3..8540503 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.3.bb
@@ -64,10 +64,13 @@
                 --with-statdpath=/var/lib/nfs/statd \
                "
 
-PACKAGECONFIG ??= "tcp-wrappers"
+PACKAGECONFIG ??= "tcp-wrappers \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
+"
 PACKAGECONFIG_remove_libc-musl = "tcp-wrappers"
 PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers,tcp-wrappers"
 PACKAGECONFIG[nfsidmap] = "--enable-nfsidmap,--disable-nfsidmap,keyutils"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
 
 INHIBIT_AUTO_STAGE = "1"
 
@@ -88,7 +91,7 @@
 		      ${sysconfdir}/init.d/nfscommon \
 		      ${systemd_unitdir}/system/nfs-statd.service"
 FILES_${PN}-stats = "${sbindir}/mountstats ${sbindir}/nfsiostat"
-RDEPENDS_${PN}-stats = "python"
+RDEPENDS_${PN}-stats = "python3-core"
 
 FILES_${PN} += "${systemd_unitdir}"
 
@@ -140,4 +143,8 @@
 	rm -f ${D}${sbindir}/rpcdebug
 	rm -f ${D}${sbindir}/rpcgen
 	rm -f ${D}${sbindir}/locktest
+
+        # Make python tools use python 3
+        sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${sbindir}/mountstats ${D}${sbindir}/nfsiostat
+
 }
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono.inc b/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono.inc
index c415a39..9c47c6f 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono.inc
@@ -26,12 +26,17 @@
 do_install_append() {
   install -d ${D}${sysconfdir}/init.d/
   install -m 0755 ${WORKDIR}/ofono ${D}${sysconfdir}/init.d/ofono
+
+  # Ofono still has one test tool that refers to Python 2 in the shebang
+  sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${libdir}/ofono/test/set-ddr
+
 }
 
 PACKAGES =+ "${PN}-tests"
 
 RDEPENDS_${PN} += "dbus"
+RRECOMMENDS_${PN} += "kernel-module-tun mobile-broadband-provider-info"
 
-FILES_${PN} += "${base_libdir}/udev ${systemd_unitdir}"
+FILES_${PN} += "${systemd_unitdir}"
 FILES_${PN}-tests = "${libdir}/${BPN}/test"
-RDEPENDS_${PN}-tests = "python python-pygobject python-dbus"
+RDEPENDS_${PN}-tests = "python3 python3-pygobject python3-dbus"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono/Revert-test-Convert-to-Python-3.patch b/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono/Revert-test-Convert-to-Python-3.patch
deleted file mode 100644
index 5f8ca77..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono/Revert-test-Convert-to-Python-3.patch
+++ /dev/null
@@ -1,1270 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-From 572fc23f6efd65a2ef9e6c957b2506108738672b Mon Sep 17 00:00:00 2001
-From: Cristian Iorga <cristian.iorga@intel.com>
-Date: Mon, 25 Aug 2014 16:59:39 +0300
-Subject: [PATCH] Revert "test: Convert to Python 3"
-
-This reverts commit c027ab9fbc1a8e8c9e76bcd123df1ad7696307c2.
----
- test/activate-context          |  2 +-
- test/answer-calls              |  2 +-
- test/backtrace                 |  2 +-
- test/cancel-ussd               |  2 +-
- test/cdma-connman-disable      |  2 +-
- test/cdma-connman-enable       |  2 +-
- test/cdma-dial-number          |  2 +-
- test/cdma-hangup               |  2 +-
- test/cdma-list-call            |  2 +-
- test/cdma-set-credentials      |  2 +-
- test/change-pin                |  2 +-
- test/create-internet-context   |  2 +-
- test/create-mms-context        |  2 +-
- test/create-multiparty         |  2 +-
- test/deactivate-all            |  2 +-
- test/deactivate-context        |  2 +-
- test/dial-number               |  2 +-
- test/disable-call-forwarding   |  2 +-
- test/disable-gprs              |  2 +-
- test/disable-modem             |  2 +-
- test/display-icon              |  2 +-
- test/enable-cbs                |  2 +-
- test/enable-gprs               |  2 +-
- test/enable-modem              |  2 +-
- test/enter-pin                 |  2 +-
- test/get-icon                  |  2 +-
- test/get-operators             |  2 +-
- test/get-tech-preference       |  2 +-
- test/hangup-active             |  2 +-
- test/hangup-all                |  2 +-
- test/hangup-call               |  2 +-
- test/hangup-multiparty         |  2 +-
- test/hold-and-answer           |  2 +-
- test/initiate-ussd             |  4 ++--
- test/list-calls                |  2 +-
- test/list-contexts             |  2 +-
- test/list-messages             |  2 +-
- test/list-modems               |  2 +-
- test/list-operators            |  2 +-
- test/lock-pin                  |  2 +-
- test/lockdown-modem            |  2 +-
- test/monitor-ofono             |  4 ++--
- test/offline-modem             |  2 +-
- test/online-modem              |  2 +-
- test/private-chat              |  2 +-
- test/process-context-settings  |  2 +-
- test/receive-sms               |  2 +-
- test/reject-calls              |  2 +-
- test/release-and-answer        |  2 +-
- test/release-and-swap          |  2 +-
- test/remove-contexts           |  2 +-
- test/reset-pin                 |  2 +-
- test/scan-for-operators        |  2 +-
- test/send-sms                  |  2 +-
- test/send-ussd                 |  4 ++--
- test/send-vcal                 |  2 +-
- test/send-vcard                |  2 +-
- test/set-call-forwarding       |  2 +-
- test/set-cbs-topics            |  2 +-
- test/set-context-property      |  2 +-
- test/set-fast-dormancy         |  2 +-
- test/set-gsm-band              |  2 +-
- test/set-mic-volume            |  2 +-
- test/set-mms-details           |  2 +-
- test/set-msisdn                |  2 +-
- test/set-roaming-allowed       |  2 +-
- test/set-speaker-volume        |  2 +-
- test/set-tech-preference       |  2 +-
- test/set-tty                   |  2 +-
- test/set-umts-band             |  2 +-
- test/set-use-sms-reports       |  2 +-
- test/swap-calls                |  2 +-
- test/test-advice-of-charge     |  2 +-
- test/test-call-barring         |  2 +-
- test/test-call-forwarding      |  2 +-
- test/test-call-settings        |  2 +-
- test/test-cbs                  |  4 ++--
- test/test-gnss                 |  4 ++--
- test/test-message-waiting      |  2 +-
- test/test-modem                |  2 +-
- test/test-network-registration |  2 +-
- test/test-phonebook            |  2 +-
- test/test-push-notification    |  2 +-
- test/test-smart-messaging      |  2 +-
- test/test-sms                  | 18 +++++++++---------
- test/test-ss                   |  2 +-
- test/test-ss-control-cb        |  2 +-
- test/test-ss-control-cf        |  2 +-
- test/test-ss-control-cs        |  2 +-
- test/test-stk-menu             | 34 +++++++++++++++++-----------------
- test/unlock-pin                |  2 +-
- 94 files changed, 124 insertions(+), 124 deletions(-)
-
-diff --git a/test/activate-context b/test/activate-context
-index e4fc702..4241396 100755
---- a/test/activate-context
-+++ b/test/activate-context
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/answer-calls b/test/answer-calls
-index daa794b..45ff08f 100755
---- a/test/answer-calls
-+++ b/test/answer-calls
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/backtrace b/test/backtrace
-index 03c7632..c624709 100755
---- a/test/backtrace
-+++ b/test/backtrace
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import os
- import re
-diff --git a/test/cancel-ussd b/test/cancel-ussd
-index e7559ba..1797f26 100755
---- a/test/cancel-ussd
-+++ b/test/cancel-ussd
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/cdma-connman-disable b/test/cdma-connman-disable
-index 3adc14d..0ddc0cd 100755
---- a/test/cdma-connman-disable
-+++ b/test/cdma-connman-disable
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/cdma-connman-enable b/test/cdma-connman-enable
-index ac16a2d..a3cca01 100755
---- a/test/cdma-connman-enable
-+++ b/test/cdma-connman-enable
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/cdma-dial-number b/test/cdma-dial-number
-index 683431e..9cdfb24 100755
---- a/test/cdma-dial-number
-+++ b/test/cdma-dial-number
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/cdma-hangup b/test/cdma-hangup
-index 41ffa60..493ece4 100755
---- a/test/cdma-hangup
-+++ b/test/cdma-hangup
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/cdma-list-call b/test/cdma-list-call
-index b132353..5d36a69 100755
---- a/test/cdma-list-call
-+++ b/test/cdma-list-call
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/cdma-set-credentials b/test/cdma-set-credentials
-index a60c86e..a286b0e 100755
---- a/test/cdma-set-credentials
-+++ b/test/cdma-set-credentials
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/change-pin b/test/change-pin
-index 301c6ce..000ce53 100755
---- a/test/change-pin
-+++ b/test/change-pin
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/create-internet-context b/test/create-internet-context
-index 1089053..efd0998 100755
---- a/test/create-internet-context
-+++ b/test/create-internet-context
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/create-mms-context b/test/create-mms-context
-index 598336f..e5be08d 100755
---- a/test/create-mms-context
-+++ b/test/create-mms-context
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/create-multiparty b/test/create-multiparty
-index 1b76010..97047c3 100755
---- a/test/create-multiparty
-+++ b/test/create-multiparty
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/deactivate-all b/test/deactivate-all
-index 5aa8587..427009e 100755
---- a/test/deactivate-all
-+++ b/test/deactivate-all
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/deactivate-context b/test/deactivate-context
-index 5c86a71..df47d2e 100755
---- a/test/deactivate-context
-+++ b/test/deactivate-context
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/dial-number b/test/dial-number
-index fe5adad..ee674d9 100755
---- a/test/dial-number
-+++ b/test/dial-number
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/disable-call-forwarding b/test/disable-call-forwarding
-index 811e4fa..3609816 100755
---- a/test/disable-call-forwarding
-+++ b/test/disable-call-forwarding
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- from gi.repository import GLib
-diff --git a/test/disable-gprs b/test/disable-gprs
-index 61ce216..c6c40a5 100755
---- a/test/disable-gprs
-+++ b/test/disable-gprs
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/disable-modem b/test/disable-modem
-index 6fba857..ca8c8d8 100755
---- a/test/disable-modem
-+++ b/test/disable-modem
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/display-icon b/test/display-icon
-index ac40818..753d14d 100755
---- a/test/display-icon
-+++ b/test/display-icon
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/enable-cbs b/test/enable-cbs
-index 4a8bf66..c08bf2b 100755
---- a/test/enable-cbs
-+++ b/test/enable-cbs
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/enable-gprs b/test/enable-gprs
-index 68d5ef0..8664891 100755
---- a/test/enable-gprs
-+++ b/test/enable-gprs
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/enable-modem b/test/enable-modem
-index fc5958a..dfaaaa8 100755
---- a/test/enable-modem
-+++ b/test/enable-modem
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/enter-pin b/test/enter-pin
-index 9556363..c6ee669 100755
---- a/test/enter-pin
-+++ b/test/enter-pin
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/get-icon b/test/get-icon
-index 5569a33..fdaaee7 100755
---- a/test/get-icon
-+++ b/test/get-icon
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/get-operators b/test/get-operators
-index 0f35c80..62354c5 100755
---- a/test/get-operators
-+++ b/test/get-operators
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/get-tech-preference b/test/get-tech-preference
-index 7ba6365..77d20d0 100755
---- a/test/get-tech-preference
-+++ b/test/get-tech-preference
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus, sys
- 
-diff --git a/test/hangup-active b/test/hangup-active
-index 82e0eb0..5af62ab 100755
---- a/test/hangup-active
-+++ b/test/hangup-active
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/hangup-all b/test/hangup-all
-index 3a0138d..32933db 100755
---- a/test/hangup-all
-+++ b/test/hangup-all
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/hangup-call b/test/hangup-call
-index 5a2de20..447020c 100755
---- a/test/hangup-call
-+++ b/test/hangup-call
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/hangup-multiparty b/test/hangup-multiparty
-index 24751c3..48fe342 100755
---- a/test/hangup-multiparty
-+++ b/test/hangup-multiparty
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/hold-and-answer b/test/hold-and-answer
-index da3be57..2c47e27 100755
---- a/test/hold-and-answer
-+++ b/test/hold-and-answer
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/initiate-ussd b/test/initiate-ussd
-index faf50d0..d7022f1 100755
---- a/test/initiate-ussd
-+++ b/test/initiate-ussd
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-@@ -45,7 +45,7 @@ if state == "idle":
- print("State: %s" % (state))
- 
- while state == "user-response":
--	response = input("Enter response: ")
-+	response = raw_input("Enter response: ")
- 
- 	result = ussd.Respond(response, timeout=100)
- 
-diff --git a/test/list-calls b/test/list-calls
-index f3ee991..08668c6 100755
---- a/test/list-calls
-+++ b/test/list-calls
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/list-contexts b/test/list-contexts
-index 78278ca..f0d4094 100755
---- a/test/list-contexts
-+++ b/test/list-contexts
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/list-messages b/test/list-messages
-index 9f5bce3..cfccbea 100755
---- a/test/list-messages
-+++ b/test/list-messages
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/list-modems b/test/list-modems
-index b9f510a..ed66124 100755
---- a/test/list-modems
-+++ b/test/list-modems
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/list-operators b/test/list-operators
-index 064c4e3..349bf41 100755
---- a/test/list-operators
-+++ b/test/list-operators
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/lock-pin b/test/lock-pin
-index 96ea9c2..5579735 100755
---- a/test/lock-pin
-+++ b/test/lock-pin
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/lockdown-modem b/test/lockdown-modem
-index 4e04205..781abb6 100755
---- a/test/lockdown-modem
-+++ b/test/lockdown-modem
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/monitor-ofono b/test/monitor-ofono
-index 8830757..bd31617 100755
---- a/test/monitor-ofono
-+++ b/test/monitor-ofono
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-@@ -6,7 +6,7 @@ import dbus
- import dbus.mainloop.glib
- 
- _dbus2py = {
--	dbus.String : str,
-+	dbus.String : unicode,
- 	dbus.UInt32 : int,
- 	dbus.Int32 : int,
- 	dbus.Int16 : int,
-diff --git a/test/offline-modem b/test/offline-modem
-index e8c043a..ea1f522 100755
---- a/test/offline-modem
-+++ b/test/offline-modem
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus, sys
- 
-diff --git a/test/online-modem b/test/online-modem
-index 029c4a5..310ed7d 100755
---- a/test/online-modem
-+++ b/test/online-modem
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus, sys
- 
-diff --git a/test/private-chat b/test/private-chat
-index e7e5406..ef2ef6c 100755
---- a/test/private-chat
-+++ b/test/private-chat
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/process-context-settings b/test/process-context-settings
-index 8a3ecfa..0f058b2 100755
---- a/test/process-context-settings
-+++ b/test/process-context-settings
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import os
- import dbus
-diff --git a/test/receive-sms b/test/receive-sms
-index a0c6915..c23eb14 100755
---- a/test/receive-sms
-+++ b/test/receive-sms
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/reject-calls b/test/reject-calls
-index 71b243e..9edf1ff 100755
---- a/test/reject-calls
-+++ b/test/reject-calls
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/release-and-answer b/test/release-and-answer
-index dec8e17..25fd818 100755
---- a/test/release-and-answer
-+++ b/test/release-and-answer
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/release-and-swap b/test/release-and-swap
-index cb8c84e..7b3569f 100755
---- a/test/release-and-swap
-+++ b/test/release-and-swap
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/remove-contexts b/test/remove-contexts
-index b54184e..c5082cb 100755
---- a/test/remove-contexts
-+++ b/test/remove-contexts
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- 
-diff --git a/test/reset-pin b/test/reset-pin
-index 3fbd126..b429254 100755
---- a/test/reset-pin
-+++ b/test/reset-pin
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/scan-for-operators b/test/scan-for-operators
-index b4fc05e..749c710 100755
---- a/test/scan-for-operators
-+++ b/test/scan-for-operators
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/send-sms b/test/send-sms
-index 98808aa..e06444d 100755
---- a/test/send-sms
-+++ b/test/send-sms
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/send-ussd b/test/send-ussd
-index a20e098..e585883 100755
---- a/test/send-ussd
-+++ b/test/send-ussd
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-@@ -46,7 +46,7 @@ if state == "idle":
- print("State: %s" % (state))
- 
- while state == "user-response":
--	response = input("Enter response: ")
-+	response = raw_input("Enter response: ")
- 
- 	print(ussd.Respond(response, timeout=100))
- 
-diff --git a/test/send-vcal b/test/send-vcal
-index 566daef..7f8272b 100755
---- a/test/send-vcal
-+++ b/test/send-vcal
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/send-vcard b/test/send-vcard
-index 4dedf51..250b36f 100755
---- a/test/send-vcard
-+++ b/test/send-vcard
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/set-call-forwarding b/test/set-call-forwarding
-index 49d1ce0..9fd358b 100755
---- a/test/set-call-forwarding
-+++ b/test/set-call-forwarding
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- from gi.repository import GLib
-diff --git a/test/set-cbs-topics b/test/set-cbs-topics
-index db95e16..78d6d44 100755
---- a/test/set-cbs-topics
-+++ b/test/set-cbs-topics
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/set-context-property b/test/set-context-property
-index 5ff7a67..64a6fb8 100755
---- a/test/set-context-property
-+++ b/test/set-context-property
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/set-fast-dormancy b/test/set-fast-dormancy
-index ef77bcd..7bf7715 100755
---- a/test/set-fast-dormancy
-+++ b/test/set-fast-dormancy
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/set-gsm-band b/test/set-gsm-band
-index b37bcb5..3c17c10 100755
---- a/test/set-gsm-band
-+++ b/test/set-gsm-band
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/set-mic-volume b/test/set-mic-volume
-index cd6c73f..e0bff49 100755
---- a/test/set-mic-volume
-+++ b/test/set-mic-volume
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/set-mms-details b/test/set-mms-details
-index 6ee59fa..d2d0838 100755
---- a/test/set-mms-details
-+++ b/test/set-mms-details
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/set-msisdn b/test/set-msisdn
-index b5fe819..01f284d 100755
---- a/test/set-msisdn
-+++ b/test/set-msisdn
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/set-roaming-allowed b/test/set-roaming-allowed
-index 698c8b6..9e3e058 100755
---- a/test/set-roaming-allowed
-+++ b/test/set-roaming-allowed
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/set-speaker-volume b/test/set-speaker-volume
-index 6d4e301..7962f39 100755
---- a/test/set-speaker-volume
-+++ b/test/set-speaker-volume
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/set-tech-preference b/test/set-tech-preference
-index b549abc..2666cbd 100755
---- a/test/set-tech-preference
-+++ b/test/set-tech-preference
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/set-tty b/test/set-tty
-index eed1fba..53d6b99 100755
---- a/test/set-tty
-+++ b/test/set-tty
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/set-umts-band b/test/set-umts-band
-index 0bae5c4..c1e6448 100755
---- a/test/set-umts-band
-+++ b/test/set-umts-band
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/set-use-sms-reports b/test/set-use-sms-reports
-index 288d4e1..a4efe4f 100755
---- a/test/set-use-sms-reports
-+++ b/test/set-use-sms-reports
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
-diff --git a/test/swap-calls b/test/swap-calls
-index 018a8d3..eeb257b 100755
---- a/test/swap-calls
-+++ b/test/swap-calls
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/test-advice-of-charge b/test/test-advice-of-charge
-index 6e87e61..0f1f57f 100755
---- a/test/test-advice-of-charge
-+++ b/test/test-advice-of-charge
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- import sys
-diff --git a/test/test-call-barring b/test/test-call-barring
-index eedb69f..be4ab57 100755
---- a/test/test-call-barring
-+++ b/test/test-call-barring
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- import sys
-diff --git a/test/test-call-forwarding b/test/test-call-forwarding
-index 5db84d7..01a7294 100755
---- a/test/test-call-forwarding
-+++ b/test/test-call-forwarding
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-call-settings b/test/test-call-settings
-index 435594c..5d7ee49 100755
---- a/test/test-call-settings
-+++ b/test/test-call-settings
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-cbs b/test/test-cbs
-index a5cec06..13cdd80 100755
---- a/test/test-cbs
-+++ b/test/test-cbs
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import dbus.mainloop.glib
-@@ -78,7 +78,7 @@ def set_topics(cbs):
- 	invalidData = False;
- 	index = 0
- 
--	topics = input('Enter the topic ID(s) you want to register to: ')
-+	topics = raw_input('Enter the topic ID(s) you want to register to: ')
- 
- 	while index < len(topics):
- 		if topics[index] == ',' or topics[index] == '-':
-diff --git a/test/test-gnss b/test/test-gnss
-index 6ae64db..aa0b160 100755
---- a/test/test-gnss
-+++ b/test/test-gnss
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- import sys
-@@ -40,7 +40,7 @@ def print_menu():
- def stdin_handler(channel, condition, gnss, path):
- 	in_key = os.read(channel.unix_get_fd(), 160).rstrip().decode('UTF-8')
- 	if in_key == '0':
--		xml = input('type the element and press enter: ')
-+		xml = raw_input('type the element and press enter: ')
- 		try:
- 			gnss.SendPositioningElement(dbus.String(xml))
- 			print("ok")
-diff --git a/test/test-message-waiting b/test/test-message-waiting
-index 432862e..b93fbf3 100755
---- a/test/test-message-waiting
-+++ b/test/test-message-waiting
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- import sys
-diff --git a/test/test-modem b/test/test-modem
-index aa38b1f..29dbf14 100755
---- a/test/test-modem
-+++ b/test/test-modem
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-network-registration b/test/test-network-registration
-index 68b4347..c5ad586 100755
---- a/test/test-network-registration
-+++ b/test/test-network-registration
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- import sys
-diff --git a/test/test-phonebook b/test/test-phonebook
-index 42646d3..116fd4f 100755
---- a/test/test-phonebook
-+++ b/test/test-phonebook
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus, sys
- 
-diff --git a/test/test-push-notification b/test/test-push-notification
-index d972ad3..ecc6afb 100755
---- a/test/test-push-notification
-+++ b/test/test-push-notification
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-smart-messaging b/test/test-smart-messaging
-index f22efd2..188ac1e 100755
---- a/test/test-smart-messaging
-+++ b/test/test-smart-messaging
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-sms b/test/test-sms
-index 30ac651..49935e1 100755
---- a/test/test-sms
-+++ b/test/test-sms
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- # -*- coding: utf-8 -*-
- 
- from gi.repository import GLib
-@@ -132,7 +132,7 @@ def stdin_handler(channel, condition, sms, value, number):
- 		lock = "on"
- 		if in_key == '0':
- 			print_send_sms_menu()
--			sms_type = input('Select SMS type: ')
-+			sms_type = raw_input('Select SMS type: ')
- 
- 			if sms_type == '1':
- 				message_send(sms, number, value)
-@@ -150,49 +150,49 @@ def stdin_handler(channel, condition, sms, value, number):
- 
- 		elif in_key == '1':
- 			message_delivery_report(sms, 1)
--			send_msg = input('Send test message[y/n]?: ')
-+			send_msg = raw_input('Send test message[y/n]?: ')
- 			if send_msg == 'y':
- 				message_send(sms, number, ("(1)" + value +
- 						": UseDeliveryReports[TRUE]"))
- 
- 		elif in_key == '2':
- 			message_delivery_report(sms, 0)
--			send_msg = input('Send test message[y/n]?: ')
-+			send_msg = raw_input('Send test message[y/n]?: ')
- 			if send_msg == 'y':
- 				message_send(sms, number, ("(2) " + value +
- 						": UseDeliveryReports[FALSE]"))
- 
- 		elif in_key == '3':
- 			message_service_center_address(sms, SCA)
--			send_msg = input('Send test message[y/n]?: ')
-+			send_msg = raw_input('Send test message[y/n]?: ')
- 			if send_msg == 'y':
- 				message_send(sms, number, ("(3) " + value +
- 						": ServiceCenterAddress"))
- 
- 		elif in_key == '4':
- 			message_bearer(sms, "ps-only")
--			send_msg = input('Send test message[y/n]?: ')
-+			send_msg = raw_input('Send test message[y/n]?: ')
- 			if send_msg == 'y':
- 				message_send(sms, number, ("(4) " + value +
- 						": Bearer[ps-only]"))
- 
- 		elif in_key == '5':
- 			message_bearer(sms, "cs-only")
--			send_msg = input('Send test message[y/n]?: ')
-+			send_msg = raw_input('Send test message[y/n]?: ')
- 			if send_msg == 'y':
- 				message_send(sms, number, ("(5) " + value +
- 						": Bearer[cs-only]"))
- 
- 		elif in_key == '6':
- 			message_bearer(sms, "ps-preferred")
--			send_msg = input('Send test message[y/n]?: ')
-+			send_msg = raw_input('Send test message[y/n]?: ')
- 			if send_msg == 'y':
- 				message_send(sms, number, ("(6) " + value +
- 						": Bearer[ps-preferred]"))
- 
- 		elif in_key == '7':
- 			message_bearer(sms, "cs-preferred")
--			send_msg = input('Send test message[y/n]?: ')
-+			send_msg = raw_input('Send test message[y/n]?: ')
- 			if send_msg == 'y':
- 				message_send(sms,number, ("(7) " + value +
- 						": Bearer[cs-preferred]"))
-diff --git a/test/test-ss b/test/test-ss
-index 4cd8732..2c80806 100755
---- a/test/test-ss
-+++ b/test/test-ss
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import sys
- import dbus
-diff --git a/test/test-ss-control-cb b/test/test-ss-control-cb
-index ddae6d3..86bac9b 100755
---- a/test/test-ss-control-cb
-+++ b/test/test-ss-control-cb
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-ss-control-cf b/test/test-ss-control-cf
-index 095eb5d..d30bf4f 100755
---- a/test/test-ss-control-cf
-+++ b/test/test-ss-control-cf
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-ss-control-cs b/test/test-ss-control-cs
-index 8180474..e0ed1d1 100755
---- a/test/test-ss-control-cs
-+++ b/test/test-ss-control-cs
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-diff --git a/test/test-stk-menu b/test/test-stk-menu
-index 0cf8fa2..ac0a5bd 100755
---- a/test/test-stk-menu
-+++ b/test/test-stk-menu
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- from gi.repository import GLib
- 
-@@ -58,7 +58,7 @@ class StkAgent(dbus.service.Object):
- 			index += 1
- 
- 		print("\nDefault: %d" % (default))
--		select = input("Enter Selection (t, b):")
-+		select = raw_input("Enter Selection (t, b):")
- 
- 		if select == 'b':
- 			raise GoBack("User wishes to go back")
-@@ -75,7 +75,7 @@ class StkAgent(dbus.service.Object):
- 		print("DisplayText (%s)" % (title))
- 		print("Icon: (%d)" % (int(icon)))
- 		print("Urgent: (%d)" % (urgent))
--		key = input("Press return to clear ('t' terminates, "
-+		key = raw_input("Press return to clear ('t' terminates, "
- 						"'b' goes back, 'n' busy, "
- 						"'w' return and wait):")
- 
-@@ -108,7 +108,7 @@ class StkAgent(dbus.service.Object):
- 		print("Hide typing: (%s)" % (hide_typing))
- 		print("Enter characters, min: %d, max: %d:" % (min_chars,
- 								max_chars))
--		userin = input("")
-+		userin = raw_input("")
- 
- 		return userin
- 
-@@ -122,7 +122,7 @@ class StkAgent(dbus.service.Object):
- 		print("Hide typing: (%s)" % (hide_typing))
- 		print("Enter digits, min: %d, max: %d:" % (min_chars,
- 								max_chars))
--		userin = input("'t' terminates, 'b' goes back:")
-+		userin = raw_input("'t' terminates, 'b' goes back:")
- 
- 		if userin == 'b':
- 			raise GoBack("User wishes to go back")
-@@ -136,7 +136,7 @@ class StkAgent(dbus.service.Object):
- 	def RequestKey(self, title, icon):
- 		print("Title: (%s)" % (title))
- 		print("Icon: (%d)" % (int(icon)))
--		key = input("Enter Key (t, b):")
-+		key = raw_input("Enter Key (t, b):")
- 
- 		if key == 'b':
- 			raise GoBack("User wishes to go back")
-@@ -150,7 +150,7 @@ class StkAgent(dbus.service.Object):
- 	def RequestDigit(self, title, icon):
- 		print("Title: (%s)" % (title))
- 		print("Icon: (%d)" % (int(icon)))
--		key = input("Enter Digit (t, b):")
-+		key = raw_input("Enter Digit (t, b):")
- 
- 		if key == 'b':
- 			raise GoBack("User wishes to go back")
-@@ -164,7 +164,7 @@ class StkAgent(dbus.service.Object):
- 	def RequestQuickDigit(self, title, icon):
- 		print("Title: (%s)" % (title))
- 		print("Icon: (%d)" % (int(icon)))
--		key = input("Quick digit (0-9, *, #, t, b):")
-+		key = raw_input("Quick digit (0-9, *, #, t, b):")
- 
- 		if key == 'b':
- 			raise GoBack("User wishes to go back")
-@@ -178,7 +178,7 @@ class StkAgent(dbus.service.Object):
- 	def RequestConfirmation(self, title, icon):
- 		print("Title: (%s)" % (title))
- 		print("Icon: (%d)" % (int(icon)))
--		key = input("Enter Confirmation (t, b, y, n):")
-+		key = raw_input("Enter Confirmation (t, b, y, n):")
- 
- 		if key == 'b':
- 			raise GoBack("User wishes to go back")
-@@ -194,7 +194,7 @@ class StkAgent(dbus.service.Object):
- 	def ConfirmCallSetup(self, info, icon):
- 		print("Information: (%s)" % (info))
- 		print("Icon: (%d)" % (int(icon)))
--		key = input("Enter Confirmation (t, y, n):")
-+		key = raw_input("Enter Confirmation (t, y, n):")
- 
- 		if key == 't':
- 			raise EndSession("User wishes to terminate session")
-@@ -209,7 +209,7 @@ class StkAgent(dbus.service.Object):
- 		print("Information: (%s)" % (info))
- 		print("Icon: (%d)" % (int(icon)))
- 		print("URL (%s)" % (url))
--		key = input("Enter Confirmation (y, n):")
-+		key = raw_input("Enter Confirmation (y, n):")
- 
- 		if key == 'y':
- 			return True
-@@ -232,7 +232,7 @@ class StkAgent(dbus.service.Object):
- 		signal.alarm(5)
- 
- 		try:
--			key = input("Press return to end before end of"
-+			key = raw_input("Press return to end before end of"
- 							 " single tone (t):")
- 			signal.alarm(0)
- 
-@@ -250,7 +250,7 @@ class StkAgent(dbus.service.Object):
- 		print("LoopTone: %s" % (tone))
- 		print("Text: %s" % (text))
- 		print("Icon: %d" % (int(icon)))
--		key = input("Press return to end before timeout "
-+		key = raw_input("Press return to end before timeout "
- 				"('t' terminates, 'w' return and wait):")
- 
- 		if key == 'w':
-@@ -279,7 +279,7 @@ class StkAgent(dbus.service.Object):
- 	def DisplayAction(self, text, icon):
- 		print("Text: (%s)" % (text))
- 		print("Icon: (%d)" % (int(icon)))
--		key = input("Press 't' to terminate the session ")
-+		key = raw_input("Press 't' to terminate the session ")
- 
- 		if key == 't':
- 			raise EndSession("User wishes to terminate session")
-@@ -289,7 +289,7 @@ class StkAgent(dbus.service.Object):
- 	def ConfirmOpenChannel(self, info, icon):
- 		print("Open channel confirmation: (%s)" % (info))
- 		print("Icon: (%d)" % (int(icon)))
--		key = input("Enter Confirmation (t, y, n):")
-+		key = raw_input("Enter Confirmation (t, y, n):")
- 
- 		if key == 't':
- 			raise EndSession("User wishes to terminate session")
-@@ -299,7 +299,7 @@ class StkAgent(dbus.service.Object):
- 			return False
- 
- _dbus2py = {
--	dbus.String : str,
-+	dbus.String : unicode,
- 	dbus.UInt32 : int,
- 	dbus.Int32 : int,
- 	dbus.Int16 : int,
-@@ -396,7 +396,7 @@ if __name__ == '__main__':
- 		except:
- 			pass
- 
--		select = int(input("Enter Selection: "))
-+		select = int(raw_input("Enter Selection: "))
- 		stk.SelectItem(select, path)
- 	elif mode == 'agent':
- 		path = "/test/agent"
-diff --git a/test/unlock-pin b/test/unlock-pin
-index 61f4765..10b6626 100755
---- a/test/unlock-pin
-+++ b/test/unlock-pin
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/python
- 
- import dbus
- import sys
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono_1.17.bb b/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono_1.17.bb
deleted file mode 100644
index 947f9d7..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono_1.17.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require ofono.inc
-
-SRC_URI  = "\
-  ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
-  file://ofono \
-  file://Revert-test-Convert-to-Python-3.patch \
-"
-SRC_URI[md5sum] = "d280b1d267ba5bf391d2a898fea7c748"
-SRC_URI[sha256sum] = "cbf20f07fd15253c682b23c1786d517f505c3688f7c4ea93da777e1523b89635"
-
-CFLAGS_append_libc-uclibc = " -D_GNU_SOURCE"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono_1.18.bb b/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono_1.18.bb
new file mode 100644
index 0000000..b070731
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/ofono/ofono_1.18.bb
@@ -0,0 +1,10 @@
+require ofono.inc
+
+SRC_URI  = "\
+  ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
+  file://ofono \
+"
+SRC_URI[md5sum] = "0a6b37c8ace891cb2a7ca5d121043a0a"
+SRC_URI[sha256sum] = "53cdbf342913f46bce4827241c60e24255a3d43a94945edf77482ae5b312d51f"
+
+CFLAGS_append_libc-uclibc = " -D_GNU_SOURCE"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_2.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_2.patch
deleted file mode 100644
index 9fac69c..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_2.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From f98a09cacff7baad8748c9aa217afd155a4d493f Mon Sep 17 00:00:00 2001
-From: "mmcc@openbsd.org" <mmcc@openbsd.org>
-Date: Tue, 20 Oct 2015 03:36:35 +0000
-Subject: [PATCH] upstream commit
-
-Replace a function-local allocation with stack memory.
-
-ok djm@
-
-Upstream-ID: c09fbbab637053a2ab9f33ca142b4e20a4c5a17e
-Upstream-Status: Backport
-CVE: CVE-2016-1907
-
-[YOCTO #8935]
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- clientloop.c | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
-
-diff --git a/clientloop.c b/clientloop.c
-index 87ceb3d..1e05cba 100644
---- a/clientloop.c
-+++ b/clientloop.c
-@@ -1,4 +1,4 @@
--/* $OpenBSD: clientloop.c,v 1.275 2015/07/10 06:21:53 markus Exp $ */
-+/* $OpenBSD: clientloop.c,v 1.276 2015/10/20 03:36:35 mmcc Exp $ */
- /*
-  * Author: Tatu Ylonen <ylo@cs.hut.fi>
-  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
-@@ -311,11 +311,10 @@ client_x11_get_proto(const char *display, const char *xauth_path,
- 	static char proto[512], data[512];
- 	FILE *f;
- 	int got_data = 0, generated = 0, do_unlink = 0, i;
--	char *xauthdir, *xauthfile;
-+	char xauthdir[PATH_MAX] = "", xauthfile[PATH_MAX] = "";
- 	struct stat st;
- 	u_int now, x11_timeout_real;
- 
--	xauthdir = xauthfile = NULL;
- 	*_proto = proto;
- 	*_data = data;
- 	proto[0] = data[0] = '\0';
-@@ -343,8 +342,6 @@ client_x11_get_proto(const char *display, const char *xauth_path,
- 			display = xdisplay;
- 		}
- 		if (trusted == 0) {
--			xauthdir = xmalloc(PATH_MAX);
--			xauthfile = xmalloc(PATH_MAX);
- 			mktemp_proto(xauthdir, PATH_MAX);
- 			/*
- 			 * The authentication cookie should briefly outlive
-@@ -407,8 +404,6 @@ client_x11_get_proto(const char *display, const char *xauth_path,
- 		unlink(xauthfile);
- 		rmdir(xauthdir);
- 	}
--	free(xauthdir);
--	free(xauthfile);
- 
- 	/*
- 	 * If we didn't get authentication data, just make up some
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_3.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_3.patch
deleted file mode 100644
index 3dfc51a..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_3.patch
+++ /dev/null
@@ -1,329 +0,0 @@
-From ed4ce82dbfa8a3a3c8ea6fa0db113c71e234416c Mon Sep 17 00:00:00 2001
-From: "djm@openbsd.org" <djm@openbsd.org>
-Date: Wed, 13 Jan 2016 23:04:47 +0000
-Subject: [PATCH] upstream commit
-
-eliminate fallback from untrusted X11 forwarding to trusted
- forwarding when the X server disables the SECURITY extension; Reported by
- Thomas Hoger; ok deraadt@
-
-Upstream-ID: f76195bd2064615a63ef9674a0e4096b0713f938
-Upstream-Status: Backport
-CVE: CVE-2016-1907
-
-[YOCTO #8935]
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- clientloop.c | 114 ++++++++++++++++++++++++++++++++++++-----------------------
- clientloop.h |   4 +--
- mux.c        |  22 ++++++------
- ssh.c        |  23 +++++-------
- 4 files changed, 93 insertions(+), 70 deletions(-)
-
-Index: openssh-7.1p2/clientloop.c
-===================================================================
---- openssh-7.1p2.orig/clientloop.c
-+++ openssh-7.1p2/clientloop.c
-@@ -1,4 +1,4 @@
--/* $OpenBSD: clientloop.c,v 1.276 2015/10/20 03:36:35 mmcc Exp $ */
-+/* $OpenBSD: clientloop.c,v 1.279 2016/01/13 23:04:47 djm Exp $ */
- /*
-  * Author: Tatu Ylonen <ylo@cs.hut.fi>
-  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
-@@ -288,6 +288,9 @@ client_x11_display_valid(const char *dis
- {
- 	size_t i, dlen;
- 
-+	if (display == NULL)
-+		return 0;
-+
- 	dlen = strlen(display);
- 	for (i = 0; i < dlen; i++) {
- 		if (!isalnum((u_char)display[i]) &&
-@@ -301,34 +304,33 @@ client_x11_display_valid(const char *dis
- 
- #define SSH_X11_PROTO		"MIT-MAGIC-COOKIE-1"
- #define X11_TIMEOUT_SLACK	60
--void
-+int
- client_x11_get_proto(const char *display, const char *xauth_path,
-     u_int trusted, u_int timeout, char **_proto, char **_data)
- {
--	char cmd[1024];
--	char line[512];
--	char xdisplay[512];
-+	char cmd[1024], line[512], xdisplay[512];
-+	char xauthfile[PATH_MAX], xauthdir[PATH_MAX];
- 	static char proto[512], data[512];
- 	FILE *f;
--	int got_data = 0, generated = 0, do_unlink = 0, i;
--	char xauthdir[PATH_MAX] = "", xauthfile[PATH_MAX] = "";
-+	int got_data = 0, generated = 0, do_unlink = 0, i, r;
- 	struct stat st;
- 	u_int now, x11_timeout_real;
- 
- 	*_proto = proto;
- 	*_data = data;
--	proto[0] = data[0] = '\0';
-+	proto[0] = data[0] = xauthfile[0] = xauthdir[0] = '\0';
- 
--	if (xauth_path == NULL ||(stat(xauth_path, &st) == -1)) {
--		debug("No xauth program.");
--	} else if (!client_x11_display_valid(display)) {
--		logit("DISPLAY '%s' invalid, falling back to fake xauth data",
-+	if (!client_x11_display_valid(display)) {
-+		logit("DISPLAY \"%s\" invalid; disabling X11 forwarding",
- 		    display);
--	} else {
--		if (display == NULL) {
--			debug("x11_get_proto: DISPLAY not set");
--			return;
--		}
-+		return -1;
-+	}
-+	if (xauth_path != NULL && stat(xauth_path, &st) == -1) {
-+		debug("No xauth program.");
-+		xauth_path = NULL;
-+	}
-+
-+	if (xauth_path != NULL) {
- 		/*
- 		 * Handle FamilyLocal case where $DISPLAY does
- 		 * not match an authorization entry.  For this we
-@@ -337,43 +339,60 @@ client_x11_get_proto(const char *display
- 		 *      is not perfect.
- 		 */
- 		if (strncmp(display, "localhost:", 10) == 0) {
--			snprintf(xdisplay, sizeof(xdisplay), "unix:%s",
--			    display + 10);
-+			if ((r = snprintf(xdisplay, sizeof(xdisplay), "unix:%s",
-+			    display + 10)) < 0 ||
-+			    (size_t)r >= sizeof(xdisplay)) {
-+				error("%s: display name too long", __func__);
-+				return -1;
-+			}
- 			display = xdisplay;
- 		}
- 		if (trusted == 0) {
--			mktemp_proto(xauthdir, PATH_MAX);
- 			/*
-+			 * Generate an untrusted X11 auth cookie.
-+			 *
- 			 * The authentication cookie should briefly outlive
- 			 * ssh's willingness to forward X11 connections to
- 			 * avoid nasty fail-open behaviour in the X server.
- 			 */
-+			mktemp_proto(xauthdir, sizeof(xauthdir));
-+			if (mkdtemp(xauthdir) == NULL) {
-+				error("%s: mkdtemp: %s",
-+				    __func__, strerror(errno));
-+				return -1;
-+			}
-+			do_unlink = 1;
-+			if ((r = snprintf(xauthfile, sizeof(xauthfile),
-+			    "%s/xauthfile", xauthdir)) < 0 ||
-+			    (size_t)r >= sizeof(xauthfile)) {
-+				error("%s: xauthfile path too long", __func__);
-+				unlink(xauthfile);
-+				rmdir(xauthdir);
-+				return -1;
-+			}
-+
- 			if (timeout >= UINT_MAX - X11_TIMEOUT_SLACK)
- 				x11_timeout_real = UINT_MAX;
- 			else
- 				x11_timeout_real = timeout + X11_TIMEOUT_SLACK;
--			if (mkdtemp(xauthdir) != NULL) {
--				do_unlink = 1;
--				snprintf(xauthfile, PATH_MAX, "%s/xauthfile",
--				    xauthdir);
--				snprintf(cmd, sizeof(cmd),
--				    "%s -f %s generate %s " SSH_X11_PROTO
--				    " untrusted timeout %u 2>" _PATH_DEVNULL,
--				    xauth_path, xauthfile, display,
--				    x11_timeout_real);
--				debug2("x11_get_proto: %s", cmd);
--				if (x11_refuse_time == 0) {
--					now = monotime() + 1;
--					if (UINT_MAX - timeout < now)
--						x11_refuse_time = UINT_MAX;
--					else
--						x11_refuse_time = now + timeout;
--					channel_set_x11_refuse_time(
--					    x11_refuse_time);
--				}
--				if (system(cmd) == 0)
--					generated = 1;
-+			if ((r = snprintf(cmd, sizeof(cmd),
-+			    "%s -f %s generate %s " SSH_X11_PROTO
-+			    " untrusted timeout %u 2>" _PATH_DEVNULL,
-+			    xauth_path, xauthfile, display,
-+			    x11_timeout_real)) < 0 ||
-+			    (size_t)r >= sizeof(cmd))
-+				fatal("%s: cmd too long", __func__);
-+			debug2("%s: %s", __func__, cmd);
-+			if (x11_refuse_time == 0) {
-+				now = monotime() + 1;
-+				if (UINT_MAX - timeout < now)
-+					x11_refuse_time = UINT_MAX;
-+				else
-+					x11_refuse_time = now + timeout;
-+				channel_set_x11_refuse_time(x11_refuse_time);
- 			}
-+			if (system(cmd) == 0)
-+				generated = 1;
- 		}
- 
- 		/*
-@@ -395,9 +414,7 @@ client_x11_get_proto(const char *display
- 				got_data = 1;
- 			if (f)
- 				pclose(f);
--		} else
--			error("Warning: untrusted X11 forwarding setup failed: "
--			    "xauth key data not generated");
-+		}
- 	}
- 
- 	if (do_unlink) {
-@@ -405,6 +422,13 @@ client_x11_get_proto(const char *display
- 		rmdir(xauthdir);
- 	}
- 
-+	/* Don't fall back to fake X11 data for untrusted forwarding */
-+	if (!trusted && !got_data) {
-+		error("Warning: untrusted X11 forwarding setup failed: "
-+		    "xauth key data not generated");
-+		return -1;
-+	}
-+
- 	/*
- 	 * If we didn't get authentication data, just make up some
- 	 * data.  The forwarding code will check the validity of the
-@@ -427,6 +451,8 @@ client_x11_get_proto(const char *display
- 			rnd >>= 8;
- 		}
- 	}
-+
-+	return 0;
- }
- 
- /*
-Index: openssh-7.1p2/clientloop.h
-===================================================================
---- openssh-7.1p2.orig/clientloop.h
-+++ openssh-7.1p2/clientloop.h
-@@ -1,4 +1,4 @@
--/* $OpenBSD: clientloop.h,v 1.31 2013/06/02 23:36:29 dtucker Exp $ */
-+/* $OpenBSD: clientloop.h,v 1.32 2016/01/13 23:04:47 djm Exp $ */
- 
- /*
-  * Author: Tatu Ylonen <ylo@cs.hut.fi>
-@@ -39,7 +39,7 @@
- 
- /* Client side main loop for the interactive session. */
- int	 client_loop(int, int, int);
--void	 client_x11_get_proto(const char *, const char *, u_int, u_int,
-+int	 client_x11_get_proto(const char *, const char *, u_int, u_int,
- 	    char **, char **);
- void	 client_global_request_reply_fwd(int, u_int32_t, void *);
- void	 client_session2_setup(int, int, int, const char *, struct termios *,
-Index: openssh-7.1p2/mux.c
-===================================================================
---- openssh-7.1p2.orig/mux.c
-+++ openssh-7.1p2/mux.c
-@@ -1,4 +1,4 @@
--/* $OpenBSD: mux.c,v 1.54 2015/08/19 23:18:26 djm Exp $ */
-+/* $OpenBSD: mux.c,v 1.58 2016/01/13 23:04:47 djm Exp $ */
- /*
-  * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
-  *
-@@ -1354,16 +1354,18 @@ mux_session_confirm(int id, int success,
- 		char *proto, *data;
- 
- 		/* Get reasonable local authentication information. */
--		client_x11_get_proto(display, options.xauth_location,
-+		if (client_x11_get_proto(display, options.xauth_location,
- 		    options.forward_x11_trusted, options.forward_x11_timeout,
--		    &proto, &data);
--		/* Request forwarding with authentication spoofing. */
--		debug("Requesting X11 forwarding with authentication "
--		    "spoofing.");
--		x11_request_forwarding_with_spoofing(id, display, proto,
--		    data, 1);
--		client_expect_confirm(id, "X11 forwarding", CONFIRM_WARN);
--		/* XXX exit_on_forward_failure */
-+		    &proto, &data) == 0) {
-+			/* Request forwarding with authentication spoofing. */
-+			debug("Requesting X11 forwarding with authentication "
-+			    "spoofing.");
-+			x11_request_forwarding_with_spoofing(id, display, proto,
-+			    data, 1);
-+			/* XXX exit_on_forward_failure */
-+			client_expect_confirm(id, "X11 forwarding",
-+			    CONFIRM_WARN);
-+		}
- 	}
- 
- 	if (cctx->want_agent_fwd && options.forward_agent) {
-Index: openssh-7.1p2/ssh.c
-===================================================================
---- openssh-7.1p2.orig/ssh.c
-+++ openssh-7.1p2/ssh.c
-@@ -1,4 +1,4 @@
--/* $OpenBSD: ssh.c,v 1.420 2015/07/30 00:01:34 djm Exp $ */
-+/* $OpenBSD: ssh.c,v 1.433 2016/01/13 23:04:47 djm Exp $ */
- /*
-  * Author: Tatu Ylonen <ylo@cs.hut.fi>
-  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
-@@ -1604,6 +1604,7 @@ ssh_session(void)
- 	struct winsize ws;
- 	char *cp;
- 	const char *display;
-+	char *proto = NULL, *data = NULL;
- 
- 	/* Enable compression if requested. */
- 	if (options.compression) {
-@@ -1674,13 +1675,9 @@ ssh_session(void)
- 	display = getenv("DISPLAY");
- 	if (display == NULL && options.forward_x11)
- 		debug("X11 forwarding requested but DISPLAY not set");
--	if (options.forward_x11 && display != NULL) {
--		char *proto, *data;
--		/* Get reasonable local authentication information. */
--		client_x11_get_proto(display, options.xauth_location,
--		    options.forward_x11_trusted,
--		    options.forward_x11_timeout,
--		    &proto, &data);
-+	if (options.forward_x11 && client_x11_get_proto(display,
-+	    options.xauth_location, options.forward_x11_trusted,
-+	    options.forward_x11_timeout, &proto, &data) == 0) {
- 		/* Request forwarding with authentication spoofing. */
- 		debug("Requesting X11 forwarding with authentication "
- 		    "spoofing.");
-@@ -1770,6 +1767,7 @@ ssh_session2_setup(int id, int success,
- 	extern char **environ;
- 	const char *display;
- 	int interactive = tty_flag;
-+	char *proto = NULL, *data = NULL;
- 
- 	if (!success)
- 		return; /* No need for error message, channels code sens one */
-@@ -1777,12 +1775,9 @@ ssh_session2_setup(int id, int success,
- 	display = getenv("DISPLAY");
- 	if (display == NULL && options.forward_x11)
- 		debug("X11 forwarding requested but DISPLAY not set");
--	if (options.forward_x11 && display != NULL) {
--		char *proto, *data;
--		/* Get reasonable local authentication information. */
--		client_x11_get_proto(display, options.xauth_location,
--		    options.forward_x11_trusted,
--		    options.forward_x11_timeout, &proto, &data);
-+	if (options.forward_x11 && client_x11_get_proto(display,
-+	    options.xauth_location, options.forward_x11_trusted,
-+	    options.forward_x11_timeout, &proto, &data) == 0) {
- 		/* Request forwarding with authentication spoofing. */
- 		debug("Requesting X11 forwarding with authentication "
- 		    "spoofing.");
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_upstream_commit.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_upstream_commit.patch
deleted file mode 100644
index f3d132e..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/CVE-2016-1907_upstream_commit.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From d77148e3a3ef6c29b26ec74331455394581aa257 Mon Sep 17 00:00:00 2001
-From: "djm@openbsd.org" <djm@openbsd.org>
-Date: Sun, 8 Nov 2015 21:59:11 +0000
-Subject: [PATCH] upstream commit
-
-fix OOB read in packet code caused by missing return
- statement found by Ben Hawkes; ok markus@ deraadt@
-
-Upstream-ID: a3e3a85434ebfa0690d4879091959591f30efc62
-
-Upstream-Status: Backport
-CVE: CVE-2016-1907
-
-[YOCTO #8935]
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- packet.c | 1 +
- 1 file changed, 1 insertion(+)
-
-Index: openssh-7.1p2/packet.c
-===================================================================
---- openssh-7.1p2.orig/packet.c
-+++ openssh-7.1p2/packet.c
-@@ -1855,6 +1855,7 @@ ssh_packet_process_incoming(struct ssh *
- 		if (len >= state->packet_discard) {
- 			if ((r = ssh_packet_stop_discard(ssh)) != 0)
- 				return r;
-+			return SSH_ERR_CONN_CORRUPT;
- 		}
- 		state->packet_discard -= len;
- 		return 0;
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/fix-potential-signed-overflow-in-pointer-arithmatic.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/fix-potential-signed-overflow-in-pointer-arithmatic.patch
new file mode 100644
index 0000000..df64a14
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/fix-potential-signed-overflow-in-pointer-arithmatic.patch
@@ -0,0 +1,99 @@
+From 3328e98bcbf2930cd7eea3e6c92ad5dcbdf4794f Mon Sep 17 00:00:00 2001
+From: Yuanjie Huang <yuanjie.huang@windriver.com>
+Date: Wed, 24 Aug 2016 03:15:43 +0000
+Subject: [PATCH] Fix potential signed overflow in pointer arithmatic
+
+Pointer arithmatic results in implementation defined signed integer
+type, so that 's - src' in strlcpy and others may trigger signed overflow.
+In case of compilation by gcc or clang with -ftrapv option, the overflow
+would lead to program abort.
+
+Upstream-status: Submitted [http://bugzilla.mindrot.org/show_bug.cgi?id=2608]
+
+Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com>
+---
+ openbsd-compat/strlcat.c | 8 ++++++--
+ openbsd-compat/strlcpy.c | 8 ++++++--
+ openbsd-compat/strnlen.c | 8 ++++++--
+ 3 files changed, 18 insertions(+), 6 deletions(-)
+
+diff --git a/openbsd-compat/strlcat.c b/openbsd-compat/strlcat.c
+index bcc1b61..e758ebf 100644
+--- a/openbsd-compat/strlcat.c
++++ b/openbsd-compat/strlcat.c
+@@ -23,6 +23,7 @@
+ 
+ #include <sys/types.h>
+ #include <string.h>
++#include <stdint.h>
+ 
+ /*
+  * Appends src to string dst of size siz (unlike strncat, siz is the
+@@ -55,8 +56,11 @@ strlcat(char *dst, const char *src, size_t siz)
+ 		s++;
+ 	}
+ 	*d = '\0';
+-
+-	return(dlen + (s - src));	/* count does not include NUL */
++        /*
++	 * Cast pointers to unsigned type before calculation, to avoid signed
++	 * overflow when the string ends where the MSB has changed.
++	 */
++	return (dlen + ((uintptr_t)s - (uintptr_t)src));	/* count does not include NUL */
+ }
+ 
+ #endif /* !HAVE_STRLCAT */
+diff --git a/openbsd-compat/strlcpy.c b/openbsd-compat/strlcpy.c
+index b4b1b60..b06f374 100644
+--- a/openbsd-compat/strlcpy.c
++++ b/openbsd-compat/strlcpy.c
+@@ -23,6 +23,7 @@
+ 
+ #include <sys/types.h>
+ #include <string.h>
++#include <stdint.h>
+ 
+ /*
+  * Copy src to string dst of size siz.  At most siz-1 characters
+@@ -51,8 +52,11 @@ strlcpy(char *dst, const char *src, size_t siz)
+ 		while (*s++)
+ 			;
+ 	}
+-
+-	return(s - src - 1);	/* count does not include NUL */
++        /*
++	 * Cast pointers to unsigned type before calculation, to avoid signed
++	 * overflow when the string ends where the MSB has changed.
++	 */
++	return ((uintptr_t)s - (uintptr_t)src - 1);	/* count does not include NUL */
+ }
+ 
+ #endif /* !HAVE_STRLCPY */
+diff --git a/openbsd-compat/strnlen.c b/openbsd-compat/strnlen.c
+index 93d5155..9b8de5d 100644
+--- a/openbsd-compat/strnlen.c
++++ b/openbsd-compat/strnlen.c
+@@ -23,6 +23,7 @@
+ #include <sys/types.h>
+ 
+ #include <string.h>
++#include <stdint.h>
+ 
+ size_t
+ strnlen(const char *str, size_t maxlen)
+@@ -31,7 +32,10 @@ strnlen(const char *str, size_t maxlen)
+ 
+ 	for (cp = str; maxlen != 0 && *cp != '\0'; cp++, maxlen--)
+ 		;
+-
+-	return (size_t)(cp - str);
++        /*
++	 * Cast pointers to unsigned type before calculation, to avoid signed
++	 * overflow when the string ends where the MSB has changed.
++	 */
++	return (size_t)((uintptr_t)cp - (uintptr_t)str);
+ }
+ #endif
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/init b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/init
index 70d4a34..1f63725 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/init
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/init
@@ -41,7 +41,7 @@
 }
 
 check_config() {
-	/usr/sbin/sshd -t || exit 1
+	/usr/sbin/sshd -t $SSHD_OPTS || exit 1
 }
 
 check_keys() {
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/openssh-7.1p1-conditional-compile-des-in-cipher.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/openssh-7.1p1-conditional-compile-des-in-cipher.patch
new file mode 100644
index 0000000..2773c14
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/openssh-7.1p1-conditional-compile-des-in-cipher.patch
@@ -0,0 +1,118 @@
+From d7eb26785ad4f25fb09fae46726ab8ca3fe16921 Mon Sep 17 00:00:00 2001
+From: Haiqing Bai <Haiqing.Bai@windriver.com>
+Date: Mon, 22 Aug 2016 14:11:16 +0300
+Subject: [PATCH] Remove des in cipher.
+
+Upstream-Status: Pending
+
+Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ cipher.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/cipher.c b/cipher.c
+index 031bda9..6cd667a 100644
+--- a/cipher.c
++++ b/cipher.c
+@@ -53,8 +53,10 @@
+ 
+ #ifdef WITH_SSH1
+ extern const EVP_CIPHER *evp_ssh1_bf(void);
++#ifndef OPENSSL_NO_DES
+ extern const EVP_CIPHER *evp_ssh1_3des(void);
+ extern int ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int);
++#endif /* OPENSSL_NO_DES */
+ #endif
+ 
+ struct sshcipher {
+@@ -79,15 +81,19 @@ struct sshcipher {
+ 
+ static const struct sshcipher ciphers[] = {
+ #ifdef WITH_SSH1
++#ifndef OPENSSL_NO_DES
+ 	{ "des",	SSH_CIPHER_DES, 8, 8, 0, 0, 0, 1, EVP_des_cbc },
+ 	{ "3des",	SSH_CIPHER_3DES, 8, 16, 0, 0, 0, 1, evp_ssh1_3des },
++#endif /* OPENSSL_NO_DES */
+ # ifndef OPENSSL_NO_BF
+ 	{ "blowfish",	SSH_CIPHER_BLOWFISH, 8, 32, 0, 0, 0, 1, evp_ssh1_bf },
+ # endif /* OPENSSL_NO_BF */
+ #endif /* WITH_SSH1 */
+ #ifdef WITH_OPENSSL
+ 	{ "none",	SSH_CIPHER_NONE, 8, 0, 0, 0, 0, 0, EVP_enc_null },
++#ifndef OPENSSL_NO_DES
+ 	{ "3des-cbc",	SSH_CIPHER_SSH2, 8, 24, 0, 0, 0, 1, EVP_des_ede3_cbc },
++#endif /* OPENSSL_NO_DES */
+ # ifndef OPENSSL_NO_BF
+ 	{ "blowfish-cbc",
+ 			SSH_CIPHER_SSH2, 8, 16, 0, 0, 0, 1, EVP_bf_cbc },
+@@ -171,8 +177,10 @@ cipher_keylen(const struct sshcipher *c)
+ u_int
+ cipher_seclen(const struct sshcipher *c)
+ {
++#ifndef OPENSSL_NO_DES
+ 	if (strcmp("3des-cbc", c->name) == 0)
+ 		return 14;
++#endif /* OPENSSL_NO_DES */
+ 	return cipher_keylen(c);
+ }
+ 
+@@ -209,11 +217,13 @@ u_int
+ cipher_mask_ssh1(int client)
+ {
+ 	u_int mask = 0;
++#ifndef OPENSSL_NO_DES
+ 	mask |= 1 << SSH_CIPHER_3DES;		/* Mandatory */
+ 	mask |= 1 << SSH_CIPHER_BLOWFISH;
+ 	if (client) {
+ 		mask |= 1 << SSH_CIPHER_DES;
+ 	}
++#endif /*OPENSSL_NO_DES*/
+ 	return mask;
+ }
+ 
+@@ -553,7 +563,9 @@ cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len)
+ 	switch (c->number) {
+ #ifdef WITH_OPENSSL
+ 	case SSH_CIPHER_SSH2:
++#ifndef OPENSSL_NO_DES
+ 	case SSH_CIPHER_DES:
++#endif /* OPENSSL_NO_DES */
+ 	case SSH_CIPHER_BLOWFISH:
+ 		evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);
+ 		if (evplen == 0)
+@@ -576,8 +588,10 @@ cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len)
+ 		break;
+ #endif
+ #ifdef WITH_SSH1
++#ifndef OPENSSL_NO_DES
+ 	case SSH_CIPHER_3DES:
+ 		return ssh1_3des_iv(&cc->evp, 0, iv, 24);
++#endif /* OPENSSL_NO_DES */
+ #endif
+ 	default:
+ 		return SSH_ERR_INVALID_ARGUMENT;
+@@ -601,7 +615,9 @@ cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv)
+ 	switch (c->number) {
+ #ifdef WITH_OPENSSL
+ 	case SSH_CIPHER_SSH2:
++#ifndef OPENSSL_NO_DES
+ 	case SSH_CIPHER_DES:
++#endif /* OPENSSL_NO_DES */
+ 	case SSH_CIPHER_BLOWFISH:
+ 		evplen = EVP_CIPHER_CTX_iv_length(&cc->evp);
+ 		if (evplen <= 0)
+@@ -616,8 +632,10 @@ cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv)
+ 		break;
+ #endif
+ #ifdef WITH_SSH1
++#ifndef OPENSSL_NO_DES
+ 	case SSH_CIPHER_3DES:
+ 		return ssh1_3des_iv(&cc->evp, 1, (u_char *)iv, 24);
++#endif /* OPENSSL_NO_DES */
+ #endif
+ 	default:
+ 		return SSH_ERR_INVALID_ARGUMENT;
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/openssh-7.1p1-conditional-compile-des-in-pkcs11.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/openssh-7.1p1-conditional-compile-des-in-pkcs11.patch
new file mode 100644
index 0000000..815af42
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/openssh-7.1p1-conditional-compile-des-in-pkcs11.patch
@@ -0,0 +1,70 @@
+From 04cfd84423f693d879dc3ffebb0f6fe2680c254f Mon Sep 17 00:00:00 2001
+From: Haiqing Bai <Haiqing.Bai@windriver.com>
+Date: Fri, 18 Mar 2016 15:59:21 +0800
+Subject: [PATCH 3/3] remove des in pkcs11.
+
+Upstream-Status: Pending
+
+Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
+
+---
+ pkcs11.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/pkcs11.h b/pkcs11.h
+index b01d58f..98b36e6 100644
+--- a/pkcs11.h
++++ b/pkcs11.h
+@@ -342,9 +342,11 @@ typedef unsigned long ck_key_type_t;
+ #define CKK_GENERIC_SECRET	(0x10)
+ #define CKK_RC2			(0x11)
+ #define CKK_RC4			(0x12)
++#ifndef OPENSSL_NO_DES
+ #define CKK_DES			(0x13)
+ #define CKK_DES2		(0x14)
+ #define CKK_DES3		(0x15)
++#endif /* OPENSSL_NO_DES */
+ #define CKK_CAST		(0x16)
+ #define CKK_CAST3		(0x17)
+ #define CKK_CAST128		(0x18)
+@@ -512,6 +514,7 @@ typedef unsigned long ck_mechanism_type_t;
+ #define CKM_RC2_CBC_PAD			(0x105)
+ #define CKM_RC4_KEY_GEN			(0x110)
+ #define CKM_RC4				(0x111)
++#ifndef OPENSSL_NO_DES
+ #define CKM_DES_KEY_GEN			(0x120)
+ #define CKM_DES_ECB			(0x121)
+ #define CKM_DES_CBC			(0x122)
+@@ -525,6 +528,7 @@ typedef unsigned long ck_mechanism_type_t;
+ #define CKM_DES3_MAC			(0x134)
+ #define CKM_DES3_MAC_GENERAL		(0x135)
+ #define CKM_DES3_CBC_PAD		(0x136)
++#endif /* OPENSSL_NO_DES */
+ #define CKM_CDMF_KEY_GEN		(0x140)
+ #define CKM_CDMF_ECB			(0x141)
+ #define CKM_CDMF_CBC			(0x142)
+@@ -610,8 +614,10 @@ typedef unsigned long ck_mechanism_type_t;
+ #define CKM_MD5_KEY_DERIVATION		(0x390)
+ #define CKM_MD2_KEY_DERIVATION		(0x391)
+ #define CKM_SHA1_KEY_DERIVATION		(0x392)
++#ifndef OPENSSL_NO_DES
+ #define CKM_PBE_MD2_DES_CBC		(0x3a0)
+ #define CKM_PBE_MD5_DES_CBC		(0x3a1)
++#endif /* OPENSSL_NO_DES */
+ #define CKM_PBE_MD5_CAST_CBC		(0x3a2)
+ #define CKM_PBE_MD5_CAST3_CBC		(0x3a3)
+ #define CKM_PBE_MD5_CAST5_CBC		(0x3a4)
+@@ -620,8 +626,10 @@ typedef unsigned long ck_mechanism_type_t;
+ #define CKM_PBE_SHA1_CAST128_CBC	(0x3a5)
+ #define CKM_PBE_SHA1_RC4_128		(0x3a6)
+ #define CKM_PBE_SHA1_RC4_40		(0x3a7)
++#ifndef OPENSSL_NO_DES
+ #define CKM_PBE_SHA1_DES3_EDE_CBC	(0x3a8)
+ #define CKM_PBE_SHA1_DES2_EDE_CBC	(0x3a9)
++#endif /* OPENSSL_NO_DES */
+ #define CKM_PBE_SHA1_RC2_128_CBC	(0x3aa)
+ #define CKM_PBE_SHA1_RC2_40_CBC		(0x3ab)
+ #define CKM_PKCS5_PBKD2			(0x3b0)
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh_7.1p2.bb b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh_7.1p2.bb
deleted file mode 100644
index 3b5e28a..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh_7.1p2.bb
+++ /dev/null
@@ -1,161 +0,0 @@
-SUMMARY = "Secure rlogin/rsh/rcp/telnet replacement"
-DESCRIPTION = "Secure rlogin/rsh/rcp/telnet replacement (OpenSSH) \
-Ssh (Secure Shell) is a program for logging into a remote machine \
-and for executing commands on a remote machine."
-HOMEPAGE = "http://openssh.org"
-SECTION = "console/network"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=e326045657e842541d3f35aada442507"
-
-DEPENDS = "zlib openssl"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-
-SRC_URI = "ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
-           file://sshd_config \
-           file://ssh_config \
-           file://init \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
-           file://sshd.socket \
-           file://sshd@.service \
-           file://sshdgenkeys.service \
-           file://volatiles.99_sshd \
-           file://add-test-support-for-busybox.patch \
-           file://run-ptest \
-           file://CVE-2016-1907_upstream_commit.patch \
-           file://CVE-2016-1907_2.patch \
-           file://CVE-2016-1907_3.patch "
-
-PAM_SRC_URI = "file://sshd"
-
-SRC_URI[md5sum] = "4d8547670e2a220d5ef805ad9e47acf2"
-SRC_URI[sha256sum] = "dd75f024dcf21e06a0d6421d582690bf987a1f6323e32ad6619392f3bfde6bbd"
-
-inherit useradd update-rc.d update-alternatives systemd
-
-USERADD_PACKAGES = "${PN}-sshd"
-USERADD_PARAM_${PN}-sshd = "--system --no-create-home --home-dir /var/run/sshd --shell /bin/false --user-group sshd"
-INITSCRIPT_PACKAGES = "${PN}-sshd"
-INITSCRIPT_NAME_${PN}-sshd = "sshd"
-INITSCRIPT_PARAMS_${PN}-sshd = "defaults 9"
-
-SYSTEMD_PACKAGES = "${PN}-sshd"
-SYSTEMD_SERVICE_${PN}-sshd = "sshd.socket"
-
-inherit autotools-brokensep ptest
-
-# LFS support:
-CFLAGS += "-D__FILE_OFFSET_BITS=64"
-
-# login path is hardcoded in sshd
-EXTRA_OECONF = "'LOGIN_PROGRAM=${base_bindir}/login' \
-                ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
-                --without-zlib-version-check \
-                --with-privsep-path=/var/run/sshd \
-                --sysconfdir=${sysconfdir}/ssh \
-                --with-xauth=/usr/bin/xauth \
-                --disable-strip \
-                "
-
-# Since we do not depend on libbsd, we do not want configure to use it
-# just because it finds libutil.h.  But, specifying --disable-libutil
-# causes compile errors, so...
-CACHED_CONFIGUREVARS += "ac_cv_header_bsd_libutil_h=no ac_cv_header_libutil_h=no"
-
-# passwd path is hardcoded in sshd
-CACHED_CONFIGUREVARS += "ac_cv_path_PATH_PASSWD_PROG=${bindir}/passwd"
-
-# We don't want to depend on libblockfile
-CACHED_CONFIGUREVARS += "ac_cv_header_maillock_h=no"
-
-# This is a workaround for uclibc because including stdio.h
-# pulls in pthreads.h and causes conflicts in function prototypes.
-# This results in compilation failure, so unless this is fixed,
-# disable pam for uclibc.
-EXTRA_OECONF_append_libc-uclibc=" --without-pam"
-
-do_configure_prepend () {
-	export LD="${CC}"
-	install -m 0644 ${WORKDIR}/sshd_config ${B}/
-	install -m 0644 ${WORKDIR}/ssh_config ${B}/
-	if [ ! -e acinclude.m4 -a -e aclocal.m4 ]; then
-		cp aclocal.m4 acinclude.m4
-	fi
-}
-
-do_compile_ptest() {
-        # skip regress/unittests/ binaries: this will silently skip
-        # unittests in run-ptests which is good because they are so slow.
-        oe_runmake regress/modpipe regress/setuid-allowed regress/netcat
-}
-
-do_install_append () {
-	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
-		install -D -m 0644 ${WORKDIR}/sshd ${D}${sysconfdir}/pam.d/sshd
-		sed -i -e 's:#UsePAM no:UsePAM yes:' ${D}${sysconfdir}/ssh/sshd_config
-	fi
-
-	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "x11" ]; then
-		sed -i -e 's:#X11Forwarding no:X11Forwarding yes:' ${D}${sysconfdir}/ssh/sshd_config
-	fi
-
-	install -d ${D}${sysconfdir}/init.d
-	install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/sshd
-	rm -f ${D}${bindir}/slogin ${D}${datadir}/Ssh.bin
-	rmdir ${D}${localstatedir}/run/sshd ${D}${localstatedir}/run ${D}${localstatedir}
-	install -d ${D}/${sysconfdir}/default/volatiles
-	install -m 644 ${WORKDIR}/volatiles.99_sshd ${D}/${sysconfdir}/default/volatiles/99_sshd
-	install -m 0755 ${S}/contrib/ssh-copy-id ${D}${bindir}
-
-	# Create config files for read-only rootfs
-	install -d ${D}${sysconfdir}/ssh
-	install -m 644 ${D}${sysconfdir}/ssh/sshd_config ${D}${sysconfdir}/ssh/sshd_config_readonly
-	sed -i '/HostKey/d' ${D}${sysconfdir}/ssh/sshd_config_readonly
-	echo "HostKey /var/run/ssh/ssh_host_rsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
-	echo "HostKey /var/run/ssh/ssh_host_dsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
-	echo "HostKey /var/run/ssh/ssh_host_ecdsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
-
-	install -d ${D}${systemd_unitdir}/system
-	install -c -m 0644 ${WORKDIR}/sshd.socket ${D}${systemd_unitdir}/system
-	install -c -m 0644 ${WORKDIR}/sshd@.service ${D}${systemd_unitdir}/system
-	install -c -m 0644 ${WORKDIR}/sshdgenkeys.service ${D}${systemd_unitdir}/system
-	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-		-e 's,@SBINDIR@,${sbindir},g' \
-		-e 's,@BINDIR@,${bindir},g' \
-		${D}${systemd_unitdir}/system/sshd.socket ${D}${systemd_unitdir}/system/*.service
-}
-
-do_install_ptest () {
-	sed -i -e "s|^SFTPSERVER=.*|SFTPSERVER=${libexecdir}/sftp-server|" regress/test-exec.sh
-	cp -r regress ${D}${PTEST_PATH}
-}
-
-ALLOW_EMPTY_${PN} = "1"
-
-PACKAGES =+ "${PN}-keygen ${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-sftp ${PN}-misc ${PN}-sftp-server"
-FILES_${PN}-scp = "${bindir}/scp.${BPN}"
-FILES_${PN}-ssh = "${bindir}/ssh.${BPN} ${sysconfdir}/ssh/ssh_config"
-FILES_${PN}-sshd = "${sbindir}/sshd ${sysconfdir}/init.d/sshd ${systemd_unitdir}/system"
-FILES_${PN}-sshd += "${sysconfdir}/ssh/moduli ${sysconfdir}/ssh/sshd_config ${sysconfdir}/ssh/sshd_config_readonly ${sysconfdir}/default/volatiles/99_sshd ${sysconfdir}/pam.d/sshd"
-FILES_${PN}-sftp = "${bindir}/sftp"
-FILES_${PN}-sftp-server = "${libexecdir}/sftp-server"
-FILES_${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
-FILES_${PN}-keygen = "${bindir}/ssh-keygen"
-
-RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
-RDEPENDS_${PN}-sshd += "${PN}-keygen ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-keyinit pam-plugin-loginuid', '', d)}"
-RDEPENDS_${PN}-ptest += "${PN}-sftp ${PN}-misc ${PN}-sftp-server make"
-
-RPROVIDES_${PN}-ssh = "ssh"
-RPROVIDES_${PN}-sshd = "sshd"
-
-RCONFLICTS_${PN} = "dropbear"
-RCONFLICTS_${PN}-sshd = "dropbear"
-RCONFLICTS_${PN}-keygen = "ssh-keygen"
-
-CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
-CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
-
-ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE_${PN}-scp = "scp"
-ALTERNATIVE_${PN}-ssh = "ssh"
-
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh_7.3p1.bb b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh_7.3p1.bb
new file mode 100644
index 0000000..039b0ff
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh_7.3p1.bb
@@ -0,0 +1,164 @@
+SUMMARY = "A suite of security-related network utilities based on \
+the SSH protocol including the ssh client and sshd server"
+DESCRIPTION = "Secure rlogin/rsh/rcp/telnet replacement (OpenSSH) \
+Ssh (Secure Shell) is a program for logging into a remote machine \
+and for executing commands on a remote machine."
+HOMEPAGE = "http://www.openssh.com/"
+SECTION = "console/network"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=e326045657e842541d3f35aada442507"
+
+DEPENDS = "zlib openssl"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
+           file://sshd_config \
+           file://ssh_config \
+           file://init \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+           file://sshd.socket \
+           file://sshd@.service \
+           file://sshdgenkeys.service \
+           file://volatiles.99_sshd \
+           file://add-test-support-for-busybox.patch \
+           file://run-ptest \
+           file://openssh-7.1p1-conditional-compile-des-in-cipher.patch \
+           file://openssh-7.1p1-conditional-compile-des-in-pkcs11.patch \
+           file://fix-potential-signed-overflow-in-pointer-arithmatic.patch \
+           "
+
+PAM_SRC_URI = "file://sshd"
+
+SRC_URI[md5sum] = "dfadd9f035d38ce5d58a3bf130b86d08"
+SRC_URI[sha256sum] = "3ffb989a6dcaa69594c3b550d4855a5a2e1718ccdde7f5e36387b424220fbecc"
+
+inherit useradd update-rc.d update-alternatives systemd
+
+USERADD_PACKAGES = "${PN}-sshd"
+USERADD_PARAM_${PN}-sshd = "--system --no-create-home --home-dir /var/run/sshd --shell /bin/false --user-group sshd"
+INITSCRIPT_PACKAGES = "${PN}-sshd"
+INITSCRIPT_NAME_${PN}-sshd = "sshd"
+INITSCRIPT_PARAMS_${PN}-sshd = "defaults 9"
+
+SYSTEMD_PACKAGES = "${PN}-sshd"
+SYSTEMD_SERVICE_${PN}-sshd = "sshd.socket"
+
+inherit autotools-brokensep ptest
+
+# LFS support:
+CFLAGS += "-D__FILE_OFFSET_BITS=64"
+
+# login path is hardcoded in sshd
+EXTRA_OECONF = "'LOGIN_PROGRAM=${base_bindir}/login' \
+                ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
+                --without-zlib-version-check \
+                --with-privsep-path=/var/run/sshd \
+                --sysconfdir=${sysconfdir}/ssh \
+                --with-xauth=/usr/bin/xauth \
+                --disable-strip \
+                "
+
+# Since we do not depend on libbsd, we do not want configure to use it
+# just because it finds libutil.h.  But, specifying --disable-libutil
+# causes compile errors, so...
+CACHED_CONFIGUREVARS += "ac_cv_header_bsd_libutil_h=no ac_cv_header_libutil_h=no"
+
+# passwd path is hardcoded in sshd
+CACHED_CONFIGUREVARS += "ac_cv_path_PATH_PASSWD_PROG=${bindir}/passwd"
+
+# We don't want to depend on libblockfile
+CACHED_CONFIGUREVARS += "ac_cv_header_maillock_h=no"
+
+# This is a workaround for uclibc because including stdio.h
+# pulls in pthreads.h and causes conflicts in function prototypes.
+# This results in compilation failure, so unless this is fixed,
+# disable pam for uclibc.
+EXTRA_OECONF_append_libc-uclibc=" --without-pam"
+
+do_configure_prepend () {
+	export LD="${CC}"
+	install -m 0644 ${WORKDIR}/sshd_config ${B}/
+	install -m 0644 ${WORKDIR}/ssh_config ${B}/
+	if [ ! -e acinclude.m4 -a -e aclocal.m4 ]; then
+		cp aclocal.m4 acinclude.m4
+	fi
+}
+
+do_compile_ptest() {
+        # skip regress/unittests/ binaries: this will silently skip
+        # unittests in run-ptests which is good because they are so slow.
+        oe_runmake regress/modpipe regress/setuid-allowed regress/netcat
+}
+
+do_install_append () {
+	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
+		install -D -m 0644 ${WORKDIR}/sshd ${D}${sysconfdir}/pam.d/sshd
+		sed -i -e 's:#UsePAM no:UsePAM yes:' ${D}${sysconfdir}/ssh/sshd_config
+	fi
+
+	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "x11" ]; then
+		sed -i -e 's:#X11Forwarding no:X11Forwarding yes:' ${D}${sysconfdir}/ssh/sshd_config
+	fi
+
+	install -d ${D}${sysconfdir}/init.d
+	install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/sshd
+	rm -f ${D}${bindir}/slogin ${D}${datadir}/Ssh.bin
+	rmdir ${D}${localstatedir}/run/sshd ${D}${localstatedir}/run ${D}${localstatedir}
+	install -d ${D}/${sysconfdir}/default/volatiles
+	install -m 644 ${WORKDIR}/volatiles.99_sshd ${D}/${sysconfdir}/default/volatiles/99_sshd
+	install -m 0755 ${S}/contrib/ssh-copy-id ${D}${bindir}
+
+	# Create config files for read-only rootfs
+	install -d ${D}${sysconfdir}/ssh
+	install -m 644 ${D}${sysconfdir}/ssh/sshd_config ${D}${sysconfdir}/ssh/sshd_config_readonly
+	sed -i '/HostKey/d' ${D}${sysconfdir}/ssh/sshd_config_readonly
+	echo "HostKey /var/run/ssh/ssh_host_rsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+	echo "HostKey /var/run/ssh/ssh_host_dsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+	echo "HostKey /var/run/ssh/ssh_host_ecdsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+	echo "HostKey /var/run/ssh/ssh_host_ed25519_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+
+	install -d ${D}${systemd_unitdir}/system
+	install -c -m 0644 ${WORKDIR}/sshd.socket ${D}${systemd_unitdir}/system
+	install -c -m 0644 ${WORKDIR}/sshd@.service ${D}${systemd_unitdir}/system
+	install -c -m 0644 ${WORKDIR}/sshdgenkeys.service ${D}${systemd_unitdir}/system
+	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+		-e 's,@SBINDIR@,${sbindir},g' \
+		-e 's,@BINDIR@,${bindir},g' \
+		${D}${systemd_unitdir}/system/sshd.socket ${D}${systemd_unitdir}/system/*.service
+}
+
+do_install_ptest () {
+	sed -i -e "s|^SFTPSERVER=.*|SFTPSERVER=${libexecdir}/sftp-server|" regress/test-exec.sh
+	cp -r regress ${D}${PTEST_PATH}
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGES =+ "${PN}-keygen ${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-sftp ${PN}-misc ${PN}-sftp-server"
+FILES_${PN}-scp = "${bindir}/scp.${BPN}"
+FILES_${PN}-ssh = "${bindir}/ssh.${BPN} ${sysconfdir}/ssh/ssh_config"
+FILES_${PN}-sshd = "${sbindir}/sshd ${sysconfdir}/init.d/sshd ${systemd_unitdir}/system"
+FILES_${PN}-sshd += "${sysconfdir}/ssh/moduli ${sysconfdir}/ssh/sshd_config ${sysconfdir}/ssh/sshd_config_readonly ${sysconfdir}/default/volatiles/99_sshd ${sysconfdir}/pam.d/sshd"
+FILES_${PN}-sftp = "${bindir}/sftp"
+FILES_${PN}-sftp-server = "${libexecdir}/sftp-server"
+FILES_${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
+FILES_${PN}-keygen = "${bindir}/ssh-keygen"
+
+RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
+RDEPENDS_${PN}-sshd += "${PN}-keygen ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-keyinit pam-plugin-loginuid', '', d)}"
+RDEPENDS_${PN}-ptest += "${PN}-sftp ${PN}-misc ${PN}-sftp-server make"
+
+RPROVIDES_${PN}-ssh = "ssh"
+RPROVIDES_${PN}-sshd = "sshd"
+
+RCONFLICTS_${PN} = "dropbear"
+RCONFLICTS_${PN}-sshd = "dropbear"
+RCONFLICTS_${PN}-keygen = "ssh-keygen"
+
+CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
+CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
+
+ALTERNATIVE_PRIORITY = "90"
+ALTERNATIVE_${PN}-scp = "scp"
+ALTERNATIVE_${PN}-ssh = "ssh"
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl.inc b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl.inc
index a5ddf4d..f3a2c5a 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl.inc
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl.inc
@@ -8,7 +8,7 @@
 LICENSE = "openssl"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8"
 
-DEPENDS = "hostperl-runtime-native"
+DEPENDS = "makedepend-native hostperl-runtime-native"
 DEPENDS_append_class-target = " openssl-native"
 
 SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
@@ -36,15 +36,15 @@
 FILES_libcrypto = "${libdir}/libcrypto${SOLIBS}"
 FILES_libssl = "${libdir}/libssl${SOLIBS}"
 FILES_${PN} =+ " ${libdir}/ssl/*"
-FILES_${PN}-misc = "${libdir}/ssl/misc ${bindir}/c_rehash"
+FILES_${PN}-misc = "${libdir}/ssl/misc"
 RDEPENDS_${PN}-misc = "${@bb.utils.contains('PACKAGECONFIG', 'perl', 'perl', '', d)}"
 
 # Add the openssl.cnf file to the openssl-conf package.  Make the libcrypto
 # package RRECOMMENDS on this package.  This will enable the configuration
 # file to be installed for both the base openssl package and the libcrypto
 # package since the base openssl package depends on the libcrypto package.
-FILES_openssl-conf = "${libdir}/ssl/openssl.cnf"
-CONFFILES_openssl-conf = "${libdir}/ssl/openssl.cnf"
+FILES_openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
+CONFFILES_openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
 RRECOMMENDS_libcrypto += "openssl-conf"
 RDEPENDS_${PN}-ptest += "${PN}-misc make perl perl-module-filehandle bc"
 
@@ -114,7 +114,10 @@
 		target=debian-mipsel
 		;;
         linux-*-mips64 | linux-mips64)
-               target=linux-mips
+               target=debian-mips64
+                ;;
+        linux-*-mips64el | linux-mips64el)
+               target=debian-mips64el
                 ;;
 	linux-microblaze*|linux-nios2*)
 		target=linux-generic32
@@ -149,10 +152,14 @@
 }
 
 do_compile () {
+	oe_runmake depend
 	oe_runmake
 }
 
 do_compile_ptest () {
+	# build dependencies for test directory too
+	export DIRS="$DIRS test"
+	oe_runmake depend
 	oe_runmake buildtest
 }
 
@@ -168,36 +175,60 @@
 	install -d ${D}${includedir}
 	cp --dereference -R include/openssl ${D}${includedir}
 
+	install -Dm 0755 ${WORKDIR}/openssl-c_rehash.sh ${D}${bindir}/c_rehash
+	sed -i -e 's,/etc/openssl,${sysconfdir}/ssl,g' ${D}${bindir}/c_rehash
+
 	oe_multilib_header openssl/opensslconf.h
 	if [ "${@bb.utils.contains('PACKAGECONFIG', 'perl', 'perl', '', d)}" = "perl" ]; then
-		install -m 0755 ${S}/tools/c_rehash ${D}${bindir}
-		sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${bindir}/c_rehash
 		sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/CA.pl
 		sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/tsget
-		# The c_rehash utility isn't installed by the normal installation process.
 	else
-		rm -f ${D}${bindir}/c_rehash
 		rm -f ${D}${libdir}/ssl/misc/CA.pl ${D}${libdir}/ssl/misc/tsget
 	fi
+
+	# Create SSL structure
+	install -d ${D}${sysconfdir}/ssl/
+	mv ${D}${libdir}/ssl/openssl.cnf \
+	   ${D}${libdir}/ssl/certs \
+	   ${D}${libdir}/ssl/private \
+	   \
+	   ${D}${sysconfdir}/ssl/
+	ln -sf ${sysconfdir}/ssl/certs ${D}${libdir}/ssl/certs
+	ln -sf ${sysconfdir}/ssl/private ${D}${libdir}/ssl/private
+	ln -sf ${sysconfdir}/ssl/openssl.cnf ${D}${libdir}/ssl/openssl.cnf
 }
 
 do_install_ptest () {
 	cp -r -L Makefile.org Makefile test ${D}${PTEST_PATH}
 	cp Configure config e_os.h ${D}${PTEST_PATH}
 	cp -r -L include ${D}${PTEST_PATH}
-	ln -sf ${base_libdir}/libcrypto.a ${D}${PTEST_PATH}
+	ln -sf ${libdir}/libcrypto.a ${D}${PTEST_PATH}
 	ln -sf ${libdir}/libssl.a ${D}${PTEST_PATH}
 	mkdir -p ${D}${PTEST_PATH}/crypto
 	cp crypto/constant_time_locl.h ${D}${PTEST_PATH}/crypto
 	cp -r certs ${D}${PTEST_PATH}
 	mkdir -p ${D}${PTEST_PATH}/apps
 	ln -sf ${libdir}/ssl/misc/CA.sh  ${D}${PTEST_PATH}/apps
-	ln -sf ${libdir}/ssl/openssl.cnf ${D}${PTEST_PATH}/apps
+	ln -sf ${sysconfdir}/ssl/openssl.cnf ${D}${PTEST_PATH}/apps
 	ln -sf ${bindir}/openssl         ${D}${PTEST_PATH}/apps
+	cp apps/server.pem              ${D}${PTEST_PATH}/apps
 	cp apps/server2.pem             ${D}${PTEST_PATH}/apps
 	mkdir -p ${D}${PTEST_PATH}/util
 	install util/opensslwrap.sh    ${D}${PTEST_PATH}/util
 	install util/shlib_wrap.sh     ${D}${PTEST_PATH}/util
+	# Time stamps are relevant for "make alltests", otherwise
+	# make may try to recompile binaries. Not only must the
+	# binary files be newer than the sources, they also must
+	# be more recent than the header files in /usr/include.
+	#
+	# Using "cp -a" is not sufficient, because do_install
+	# does not preserve the original time stamps.
+	#
+	# So instead of using the original file stamps, we set
+	# the current time for all files. Binaries will get
+	# modified again later when stripping them, but that's okay.
+	touch ${D}${PTEST_PATH}
+	find ${D}${PTEST_PATH} -type f -print0 | xargs --verbose -0 touch -r ${D}${PTEST_PATH}
 }
 
 do_install_append_class-native() {
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/crypto_use_bigint_in_x86-64_perl.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/crypto_use_bigint_in_x86-64_perl.patch
deleted file mode 100644
index af3989f..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/crypto_use_bigint_in_x86-64_perl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Upstream-Status: Backport
-
-When building on x32 systems where the default type is 32bit, make sure
-we can transparently represent 64bit integers.  Otherwise we end up with
-build errors like:
-/usr/bin/perl asm/ghash-x86_64.pl elf > ghash-x86_64.s
-Integer overflow in hexadecimal number at asm/../../perlasm/x86_64-xlate.pl line 201, <> line 890.
-...
-ghash-x86_64.s: Assembler messages:
-ghash-x86_64.s:890: Error: junk '.15473355479995e+19' after expression
-
-We don't enable this globally as there are some cases where we'd get
-32bit values interpreted as unsigned when we need them as signed.
-
-Reported-by: Bertrand Jacquin <bertrand@jacquin.bzh>
-URL: https://bugs.gentoo.org/542618
-
-Signed-off-By: Armin Kuster <akuster@mvista.com>
-
-Index: openssl-1.0.2a/crypto/perlasm/x86_64-xlate.pl
-===================================================================
---- openssl-1.0.2a.orig/crypto/perlasm/x86_64-xlate.pl
-+++ openssl-1.0.2a/crypto/perlasm/x86_64-xlate.pl
-@@ -194,7 +194,10 @@ my %globals;
-     }
-     sub out {
-     	my $self = shift;
--
-+	# When building on x32 ABIs, the expanded hex value might be too
-+	# big to fit into 32bits. Enable transparent 64bit support here
-+	# so we can safely print it out.
-+	use bigint;
- 	if ($gas) {
- 	    # Solaris /usr/ccs/bin/as can't handle multiplications
- 	    # in $self->{value}
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/debian/ca.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/debian/ca.patch
index aba4d42..fb745e4 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/debian/ca.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/debian/ca.patch
@@ -7,7 +7,7 @@
 @@ -65,6 +65,7 @@
  foreach (@ARGV) {
  	if ( /^(-\?|-h|-help)$/ ) {
- 	    print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
+ 	    print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-signcert|-verify\n";
 +	    print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
  	    exit 0;
  	} elsif (/^-newcert$/) {
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch
index 06d1ea6..2a318a4 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/fix-cipher-des-ede3-cfb1.patch
@@ -4,7 +4,7 @@
 the cipher des-ede3-cfb1. Complete bug log and patch is present here:
 http://rt.openssl.org/Ticket/Display.html?id=2867
 
-Signed-Off-By: Muhammad Shakeel <muhammad_shakeel@mentor.com>
+Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com>
 
 Index: openssl-1.0.2/crypto/evp/e_des3.c
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch
index cebc8cf..f736e5c 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch
@@ -8,16 +8,16 @@
 
 Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
 ---
-Index: openssl-1.0.2/crypto/evp/digest.c
+Index: openssl-1.0.2h/crypto/evp/digest.c
 ===================================================================
---- openssl-1.0.2.orig/crypto/evp/digest.c
-+++ openssl-1.0.2/crypto/evp/digest.c
-@@ -208,7 +208,7 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, c
-         return 0;
+--- openssl-1.0.2h.orig/crypto/evp/digest.c
++++ openssl-1.0.2h/crypto/evp/digest.c
+@@ -211,7 +211,7 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, c
+         type = ctx->digest;
      }
  #endif
 -    if (ctx->digest != type) {
 +    if (type && (ctx->digest != type)) {
-         if (ctx->digest && ctx->digest->ctx_size)
+         if (ctx->digest && ctx->digest->ctx_size) {
              OPENSSL_free(ctx->md_data);
-         ctx->digest = type;
+             ctx->md_data = NULL;
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-c_rehash.sh b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-c_rehash.sh
new file mode 100644
index 0000000..f67f415
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-c_rehash.sh
@@ -0,0 +1,210 @@
+#!/bin/sh
+#
+# Ben Secrest <blsecres@gmail.com>
+#
+# sh c_rehash script, scan all files in a directory
+# and add symbolic links to their hash values.
+#
+# based on the c_rehash perl script distributed with openssl
+#
+# LICENSE: See OpenSSL license
+# ^^acceptable?^^
+#
+
+# default certificate location
+DIR=/etc/openssl
+
+# for filetype bitfield
+IS_CERT=$(( 1 << 0 ))
+IS_CRL=$(( 1 << 1 ))
+
+
+# check to see if a file is a certificate file or a CRL file
+# arguments:
+#       1. the filename to be scanned
+# returns:
+#       bitfield of file type; uses ${IS_CERT} and ${IS_CRL}
+#
+check_file()
+{
+    local IS_TYPE=0
+
+    # make IFS a newline so we can process grep output line by line
+    local OLDIFS=${IFS}
+    IFS=$( printf "\n" )
+
+    # XXX: could be more efficient to have two 'grep -m' but is -m portable?
+    for LINE in $( grep '^-----BEGIN .*-----' ${1} )
+    do
+	if echo ${LINE} \
+	    | grep -q -E '^-----BEGIN (X509 |TRUSTED )?CERTIFICATE-----'
+	then
+	    IS_TYPE=$(( ${IS_TYPE} | ${IS_CERT} ))
+
+	    if [ $(( ${IS_TYPE} & ${IS_CRL} )) -ne 0 ]
+	    then
+	    	break
+	    fi
+	elif echo ${LINE} | grep -q '^-----BEGIN X509 CRL-----'
+	then
+	    IS_TYPE=$(( ${IS_TYPE} | ${IS_CRL} ))
+
+	    if [ $(( ${IS_TYPE} & ${IS_CERT} )) -ne 0 ]
+	    then
+	    	break
+	    fi
+	fi
+    done
+
+    # restore IFS
+    IFS=${OLDIFS}
+
+    return ${IS_TYPE}
+}
+
+
+#
+# use openssl to fingerprint a file
+#    arguments:
+#	1. the filename to fingerprint
+#	2. the method to use (x509, crl)
+#    returns:
+#	none
+#    assumptions:
+#	user will capture output from last stage of pipeline
+#
+fingerprint()
+{
+    ${SSL_CMD} ${2} -fingerprint -noout -in ${1} | sed 's/^.*=//' | tr -d ':'
+}
+
+
+#
+# link_hash - create links to certificate files
+#    arguments:
+#       1. the filename to create a link for
+#	2. the type of certificate being linked (x509, crl)
+#    returns:
+#	0 on success, 1 otherwise
+#
+link_hash()
+{
+    local FINGERPRINT=$( fingerprint ${1} ${2} )
+    local HASH=$( ${SSL_CMD} ${2} -hash -noout -in ${1} )
+    local SUFFIX=0
+    local LINKFILE=''
+    local TAG=''
+
+    if [ ${2} = "crl" ]
+    then
+    	TAG='r'
+    fi
+
+    LINKFILE=${HASH}.${TAG}${SUFFIX}
+
+    while [ -f ${LINKFILE} ]
+    do
+	if [ ${FINGERPRINT} = $( fingerprint ${LINKFILE} ${2} ) ]
+	then
+	    echo "NOTE: Skipping duplicate file ${1}" >&2
+	    return 1
+	fi	
+
+	SUFFIX=$(( ${SUFFIX} + 1 ))
+	LINKFILE=${HASH}.${TAG}${SUFFIX}
+    done
+
+    echo "${1} => ${LINKFILE}"
+
+    # assume any system with a POSIX shell will either support symlinks or
+    # do something to handle this gracefully
+    ln -s ${1} ${LINKFILE}
+
+    return 0
+}
+
+
+# hash_dir create hash links in a given directory
+hash_dir()
+{
+    echo "Doing ${1}"
+
+    cd ${1}
+
+    ls -1 * 2>/dev/null | while read FILE
+    do
+        if echo ${FILE} | grep -q -E '^[[:xdigit:]]{8}\.r?[[:digit:]]+$' \
+	    	&& [ -h "${FILE}" ]
+        then
+            rm ${FILE}
+        fi
+    done
+
+    ls -1 *.pem *.cer *.crt *.crl 2>/dev/null | while read FILE
+    do
+	check_file ${FILE}
+        local FILE_TYPE=${?}
+	local TYPE_STR=''
+
+        if [ $(( ${FILE_TYPE} & ${IS_CERT} )) -ne 0 ]
+        then
+            TYPE_STR='x509'
+        elif [ $(( ${FILE_TYPE} & ${IS_CRL} )) -ne 0 ]
+        then
+            TYPE_STR='crl'
+        else
+            echo "NOTE: ${FILE} does not contain a certificate or CRL: skipping" >&2
+	    continue
+        fi
+
+	link_hash ${FILE} ${TYPE_STR}
+    done
+}
+
+
+# choose the name of an ssl application
+if [ -n "${OPENSSL}" ]
+then
+    SSL_CMD=$(which ${OPENSSL} 2>/dev/null)
+else
+    SSL_CMD=/usr/bin/openssl
+    OPENSSL=${SSL_CMD}
+    export OPENSSL
+fi
+
+# fix paths
+PATH=${PATH}:${DIR}/bin
+export PATH
+
+# confirm existance/executability of ssl command
+if ! [ -x ${SSL_CMD} ]
+then
+    echo "${0}: rehashing skipped ('openssl' program not available)" >&2
+    exit 0
+fi
+
+# determine which directories to process
+old_IFS=$IFS
+if [ ${#} -gt 0 ]
+then
+    IFS=':'
+    DIRLIST=${*}
+elif [ -n "${SSL_CERT_DIR}" ]
+then
+    DIRLIST=$SSL_CERT_DIR
+else
+    DIRLIST=${DIR}/certs
+fi
+
+IFS=':'
+
+# process directories
+for CERT_DIR in ${DIRLIST}
+do
+    if [ -d ${CERT_DIR} -a -w ${CERT_DIR} ]
+    then
+        IFS=$old_IFS
+        hash_dir ${CERT_DIR}
+        IFS=':'
+    fi
+done
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-util-perlpath.pl-cwd.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-util-perlpath.pl-cwd.patch
new file mode 100644
index 0000000..065b9b1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl-util-perlpath.pl-cwd.patch
@@ -0,0 +1,34 @@
+From e427748f3bb5d37e78dc8d70a558c373aa8ababb Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Mon, 19 Sep 2016 22:06:28 -0700
+Subject: [PATCH] util/perlpath.pl: make it work when cwd is not in @INC
+
+Fixed when building on Debian-testing:
+| Can't locate find.pl in @INC (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.2 /usr/local/share/perl/5.22.2 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at perlpath.pl line 7.
+
+The find.pl is added by oe-core, so once openssl/find.pl is removed,
+then this patch can be dropped.
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ util/perlpath.pl | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/util/perlpath.pl b/util/perlpath.pl
+index a1f236b..5599892 100755
+--- a/util/perlpath.pl
++++ b/util/perlpath.pl
+@@ -4,6 +4,8 @@
+ # line in all scripts that rely on perl.
+ #
+ 
++BEGIN { unshift @INC, "."; }
++
+ require "find.pl";
+ 
+ $#ARGV == 0 || print STDERR "usage: perlpath newpath  (eg /usr/bin)\n";
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch
index cbce32c..0f08a64 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/openssl_fix_for_x32.patch
@@ -2,10 +2,10 @@
 
 Received from H J Liu @ Intel
 Make the assembly syntax compatible with x32 gcc. Othewise x32 gcc throws errors.
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/07/13
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/07/13
 
 ported the patch to the 1.0.0e version
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/01
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/01
 Index: openssl-1.0.2/crypto/bn/bn.h
 ===================================================================
 --- openssl-1.0.2.orig/crypto/bn/bn.h
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/parallel.patch b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/parallel.patch
index b6c2c14..f3f4c99 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/parallel.patch
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/parallel.patch
@@ -6,6 +6,9 @@
 Upstream-Status: Pending
 Signed-off-by: Ross Burton <ross.burton@intel.com>
 
+Refreshed for 1.0.2i
+Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
+
 --- openssl-1.0.2g/crypto/Makefile
 +++ openssl-1.0.2g/crypto/Makefile
 @@ -85,11 +85,11 @@
@@ -133,7 +136,7 @@
  		fi; \
 --- openssl-1.0.2g/test/Makefile
 +++ openssl-1.0.2g/test/Makefile
-@@ -139,7 +139,7 @@
+@@ -144,7 +144,7 @@
  tags:
  	ctags $(SRC)
  
@@ -142,7 +145,7 @@
  
  apps:
  	@(cd ..; $(MAKE) DIRS=apps all)
-@@ -421,130 +421,130 @@
+@@ -438,136 +438,136 @@
  		link_app.$${shlib_target}
  
  $(RSATEST)$(EXE_EXT): $(RSATEST).o $(DLIBCRYPTO)
@@ -309,13 +312,21 @@
 -	@target=$(CLIENTHELLOTEST) $(BUILD_CMD)
 +	+@target=$(CLIENTHELLOTEST) $(BUILD_CMD)
  
+ $(BADDTLSTEST)$(EXE_EXT): $(BADDTLSTEST).o
+-	@target=$(BADDTLSTEST) $(BUILD_CMD)
++	+@target=$(BADDTLSTEST) $(BUILD_CMD)
+ 
  $(SSLV2CONFTEST)$(EXE_EXT): $(SSLV2CONFTEST).o
 -	@target=$(SSLV2CONFTEST) $(BUILD_CMD)
 +	+@target=$(SSLV2CONFTEST) $(BUILD_CMD)
  
+ $(DTLSTEST)$(EXE_EXT): $(DTLSTEST).o ssltestlib.o $(DLIBSSL) $(DLIBCRYPTO)
+-	@target=$(DTLSTEST); exobj=ssltestlib.o; $(BUILD_CMD)
++	+@target=$(DTLSTEST); exobj=ssltestlib.o; $(BUILD_CMD)
+ 
  #$(AESTEST).o: $(AESTEST).c
  #	$(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
-@@ -557,7 +557,7 @@
+@@ -580,6 +580,6 @@
  #	fi
  
  dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO)
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl_1.0.2g.bb b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl_1.0.2g.bb
deleted file mode 100644
index 290f129..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl_1.0.2g.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-require openssl.inc
-
-# For target side versions of openssl enable support for OCF Linux driver
-# if they are available.
-DEPENDS += "cryptodev-linux"
-
-CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=27ffa5d74bb5a337056c14b2ef93fbf6"
-
-export DIRS = "crypto ssl apps engines"
-export OE_LDFLAGS="${LDFLAGS}"
-
-SRC_URI += "file://find.pl;subdir=${BP}/util/ \
-            file://run-ptest \
-            file://configure-targets.patch \
-            file://shared-libs.patch \
-            file://oe-ldflags.patch \
-            file://engines-install-in-libdir-ssl.patch \
-            file://debian1.0.2/block_diginotar.patch \
-            file://debian1.0.2/block_digicert_malaysia.patch \
-            file://debian/ca.patch \
-            file://debian/c_rehash-compat.patch \
-            file://debian/debian-targets.patch \
-            file://debian/man-dir.patch \
-            file://debian/man-section.patch \
-            file://debian/no-rpath.patch \
-            file://debian/no-symbolic.patch \
-            file://debian/pic.patch \
-            file://debian1.0.2/version-script.patch \
-            file://openssl_fix_for_x32.patch \
-            file://fix-cipher-des-ede3-cfb1.patch \
-            file://openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch \
-            file://openssl-fix-des.pod-error.patch \
-            file://Makefiles-ptest.patch \
-            file://ptest-deps.patch \
-            file://crypto_use_bigint_in_x86-64_perl.patch \
-            file://openssl-1.0.2a-x32-asm.patch \
-            file://ptest_makefile_deps.patch  \
-            file://configure-musl-target.patch \
-            file://parallel.patch \
-           "
-
-SRC_URI[md5sum] = "f3c710c045cdee5fd114feb69feba7aa"
-SRC_URI[sha256sum] = "b784b1b3907ce39abf4098702dade6365522a253ad1552e267a9a0e89594aa33"
-
-PACKAGES =+ "${PN}-engines"
-FILES_${PN}-engines = "${libdir}/ssl/engines/*.so ${libdir}/engines"
-
-# The crypto_use_bigint patch means that perl's bignum module needs to be
-# installed, but some distributions (for example Fedora 23) don't ship it by
-# default.  As the resulting error is very misleading check for bignum before
-# building.
-do_configure_prepend() {
-	if ! perl -Mbigint -e true; then
-		bbfatal "The perl module 'bignum' was not found but this is required to build openssl.  Please install this module (often packaged as perl-bignum) and re-run bitbake."
-	fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl_1.0.2j.bb b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl_1.0.2j.bb
new file mode 100644
index 0000000..257e3cf
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl_1.0.2j.bb
@@ -0,0 +1,58 @@
+require openssl.inc
+
+# For target side versions of openssl enable support for OCF Linux driver
+# if they are available.
+DEPENDS += "cryptodev-linux"
+
+CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=27ffa5d74bb5a337056c14b2ef93fbf6"
+
+export DIRS = "crypto ssl apps engines"
+export OE_LDFLAGS="${LDFLAGS}"
+
+SRC_URI += "file://find.pl;subdir=${BP}/util/ \
+            file://run-ptest \
+            file://openssl-c_rehash.sh \
+            file://configure-targets.patch \
+            file://shared-libs.patch \
+            file://oe-ldflags.patch \
+            file://engines-install-in-libdir-ssl.patch \
+            file://debian1.0.2/block_diginotar.patch \
+            file://debian1.0.2/block_digicert_malaysia.patch \
+            file://debian/ca.patch \
+            file://debian/c_rehash-compat.patch \
+            file://debian/debian-targets.patch \
+            file://debian/man-dir.patch \
+            file://debian/man-section.patch \
+            file://debian/no-rpath.patch \
+            file://debian/no-symbolic.patch \
+            file://debian/pic.patch \
+            file://debian1.0.2/version-script.patch \
+            file://openssl_fix_for_x32.patch \
+            file://fix-cipher-des-ede3-cfb1.patch \
+            file://openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch \
+            file://openssl-fix-des.pod-error.patch \
+            file://Makefiles-ptest.patch \
+            file://ptest-deps.patch \
+            file://openssl-1.0.2a-x32-asm.patch \
+            file://ptest_makefile_deps.patch  \
+            file://configure-musl-target.patch \
+            file://parallel.patch \
+            file://openssl-util-perlpath.pl-cwd.patch \
+           "
+SRC_URI[md5sum] = "96322138f0b69e61b7212bc53d5e912b"
+SRC_URI[sha256sum] = "e7aff292be21c259c6af26469c7a9b3ba26e9abaaffd325e3dccc9785256c431"
+
+PACKAGES =+ "${PN}-engines"
+FILES_${PN}-engines = "${libdir}/ssl/engines/*.so ${libdir}/engines"
+
+# The crypto_use_bigint patch means that perl's bignum module needs to be
+# installed, but some distributions (for example Fedora 23) don't ship it by
+# default.  As the resulting error is very misleading check for bignum before
+# building.
+do_configure_prepend() {
+	if ! perl -Mbigint -e true; then
+		bbfatal "The perl module 'bignum' was not found but this is required to build openssl.  Please install this module (often packaged as perl-bignum) and re-run bitbake."
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/ppp/ppp/ppp-fix-building-with-linux-4.8.patch b/import-layers/yocto-poky/meta/recipes-connectivity/ppp/ppp/ppp-fix-building-with-linux-4.8.patch
new file mode 100644
index 0000000..f77b0de
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/ppp/ppp/ppp-fix-building-with-linux-4.8.patch
@@ -0,0 +1,44 @@
+From 3da19af53e2eee2e77b456cfbb9d633b06656d38 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Thu, 13 Oct 2016 13:41:43 +0800
+Subject: [PATCH] ppp: fix building with linux-4.8
+
+Fix a build error when using the linux-4.8 headers that results in:
+
+In file included from pppoe.h:87:0,
+                 from plugin.c:29:
+../usr/include/netinet/in.h:211:8: note: originally defined here
+ struct in6_addr
+        ^~~~~~~~
+In file included from ../usr/include/linux/if_pppol2tp.h:20:0,
+                 from ../usr/include/linux/if_pppox.h:26,
+                 from plugin.c:52:
+../usr/include/linux/in6.h:49:8: error: redefinition of 'struct sockaddr_in6'
+ struct sockaddr_in6 {
+        ^~~~~~~~~~~~
+
+Upstream-Status: Submitted [1]
+
+[1] https://github.com/paulusmack/ppp/pull/69
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ pppd/plugins/rp-pppoe/pppoe.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h
+index 9ab2eee..96d2794 100644
+--- a/pppd/plugins/rp-pppoe/pppoe.h
++++ b/pppd/plugins/rp-pppoe/pppoe.h
+@@ -84,7 +84,7 @@ typedef unsigned long UINT32_t;
+ #include <linux/if_ether.h>
+ #endif
+ 
+-#include <netinet/in.h>
++#include <linux/in.h>
+ 
+ #ifdef HAVE_NETINET_IF_ETHER_H
+ #include <sys/types.h>
+-- 
+2.8.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/ppp/ppp_2.4.7.bb b/import-layers/yocto-poky/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
index 4437b5c..56dbd98 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
@@ -30,6 +30,7 @@
            file://0001-ppp-Fix-compilation-errors-in-Makefile.patch \
            file://ppp@.service \
            file://fix-CVE-2015-3310.patch \
+           file://ppp-fix-building-with-linux-4.8.patch \
 "
 
 SRC_URI_append_libc-musl = "\
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/resolvconf/resolvconf_1.78.bb b/import-layers/yocto-poky/meta/recipes-connectivity/resolvconf/resolvconf_1.78.bb
deleted file mode 100644
index f4c5851..0000000
--- a/import-layers/yocto-poky/meta/recipes-connectivity/resolvconf/resolvconf_1.78.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-SUMMARY = "name server information handler"
-DESCRIPTION = "Resolvconf is a framework for keeping track of the system's \
-information about currently available nameservers. It sets \
-itself up as the intermediary between programs that supply \
-nameserver information and programs that need nameserver \
-information."
-SECTION = "console/network"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
-AUTHOR = "Thomas Hood"
-HOMEPAGE = "http://packages.debian.org/resolvconf"
-RDEPENDS_${PN} = "bash"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20150828T220730Z/pool/main/r/${BPN}/${BPN}_1.78.tar.xz \
-           file://fix-path-for-busybox.patch \
-           file://99_resolvconf \
-          "
-
-SRC_URI[md5sum] = "373a9f9544c84aa477a7425ae773b8b5"
-SRC_URI[sha256sum] = "961b22e8fcf0c7de7e90a050323e6fa221bc8b25a5348c160be3506f7e73a7a3"
-
-# the package is taken from snapshots.debian.org; that source is static and goes stale
-# so we check the latest upstream from a directory that does get updated
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/r/resolvconf/"
-
-inherit allarch
-
-do_compile () {
-	:
-}
-
-do_install () {
-	install -d ${D}${sysconfdir}/default/volatiles
-	install -m 0644 ${WORKDIR}/99_resolvconf ${D}${sysconfdir}/default/volatiles
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-		install -d ${D}${sysconfdir}/tmpfiles.d
-		echo "d /run/${BPN}/interface - - - -" \
-		     > ${D}${sysconfdir}/tmpfiles.d/resolvconf.conf
-	fi
-	install -d ${D}${base_libdir}/${BPN}
-	install -d ${D}${sysconfdir}/${BPN}
-	ln -snf ${localstatedir}/run/${BPN} ${D}${sysconfdir}/${BPN}/run
-	install -d ${D}${sysconfdir} ${D}${base_sbindir}
-	install -d ${D}${mandir}/man8 ${D}${docdir}/${P}
-	cp -pPR etc/* ${D}${sysconfdir}/
-	chown -R root:root ${D}${sysconfdir}/
-	install -m 0755 bin/resolvconf ${D}${base_sbindir}/
-	install -m 0755 bin/list-records ${D}${base_libdir}/${BPN}
-	install -d ${D}/${sysconfdir}/network/if-up.d
-	install -m 0755 debian/resolvconf.000resolvconf.if-up ${D}/${sysconfdir}/network/if-up.d/000resolvconf
-	install -d ${D}/${sysconfdir}/network/if-down.d
-	install -m 0755 debian/resolvconf.resolvconf.if-down ${D}/${sysconfdir}/network/if-down.d/resolvconf
-	install -m 0644 README ${D}${docdir}/${P}/
-	install -m 0644 man/resolvconf.8 ${D}${mandir}/man8/
-}
-
-pkg_postinst_${PN} () {
-	if [ -z "$D" ]; then
-		if command -v systemd-tmpfiles >/dev/null; then
-			systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/resolvconf.conf
-		elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
-			${sysconfdir}/init.d/populate-volatile.sh update
-		fi
-	fi
-}
-
-FILES_${PN} += "${base_libdir}/${BPN}"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/resolvconf/resolvconf_1.79.bb b/import-layers/yocto-poky/meta/recipes-connectivity/resolvconf/resolvconf_1.79.bb
new file mode 100644
index 0000000..8550177
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/resolvconf/resolvconf_1.79.bb
@@ -0,0 +1,67 @@
+SUMMARY = "name server information handler"
+DESCRIPTION = "Resolvconf is a framework for keeping track of the system's \
+information about currently available nameservers. It sets \
+itself up as the intermediary between programs that supply \
+nameserver information and programs that need nameserver \
+information."
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+AUTHOR = "Thomas Hood"
+HOMEPAGE = "http://packages.debian.org/resolvconf"
+RDEPENDS_${PN} = "bash"
+
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160520T044340Z/pool/main/r/${BPN}/${BPN}_1.79.tar.xz \
+           file://fix-path-for-busybox.patch \
+           file://99_resolvconf \
+          "
+
+SRC_URI[md5sum] = "aab2382020fc518f06a06e924c56d300"
+SRC_URI[sha256sum] = "8e2843cd4162b706f0481b3c281657728cbc2822e50a64fff79b79bd8aa870a0"
+
+# the package is taken from snapshots.debian.org; that source is static and goes stale
+# so we check the latest upstream from a directory that does get updated
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/r/resolvconf/"
+
+inherit allarch
+
+do_compile () {
+	:
+}
+
+do_install () {
+	install -d ${D}${sysconfdir}/default/volatiles
+	install -m 0644 ${WORKDIR}/99_resolvconf ${D}${sysconfdir}/default/volatiles
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+		install -d ${D}${sysconfdir}/tmpfiles.d
+		echo "d /run/${BPN}/interface - - - -" \
+		     > ${D}${sysconfdir}/tmpfiles.d/resolvconf.conf
+	fi
+	install -d ${D}${base_libdir}/${BPN}
+	install -d ${D}${sysconfdir}/${BPN}
+	ln -snf ${localstatedir}/run/${BPN} ${D}${sysconfdir}/${BPN}/run
+	install -d ${D}${sysconfdir} ${D}${base_sbindir}
+	install -d ${D}${mandir}/man8 ${D}${docdir}/${P}
+	cp -pPR etc/* ${D}${sysconfdir}/
+	chown -R root:root ${D}${sysconfdir}/
+	install -m 0755 bin/resolvconf ${D}${base_sbindir}/
+	install -m 0755 bin/list-records ${D}${base_libdir}/${BPN}
+	install -d ${D}/${sysconfdir}/network/if-up.d
+	install -m 0755 debian/resolvconf.000resolvconf.if-up ${D}/${sysconfdir}/network/if-up.d/000resolvconf
+	install -d ${D}/${sysconfdir}/network/if-down.d
+	install -m 0755 debian/resolvconf.resolvconf.if-down ${D}/${sysconfdir}/network/if-down.d/resolvconf
+	install -m 0644 README ${D}${docdir}/${P}/
+	install -m 0644 man/resolvconf.8 ${D}${mandir}/man8/
+}
+
+pkg_postinst_${PN} () {
+	if [ -z "$D" ]; then
+		if command -v systemd-tmpfiles >/dev/null; then
+			systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/resolvconf.conf
+		elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+			${sysconfdir}/init.d/populate-volatile.sh update
+		fi
+	fi
+}
+
+FILES_${PN} += "${base_libdir}/${BPN}"
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/socat/socat_1.7.3.1.bb b/import-layers/yocto-poky/meta/recipes-connectivity/socat/socat_1.7.3.1.bb
index 6da9a17..4da6d39 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/socat/socat_1.7.3.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/socat/socat_1.7.3.1.bb
@@ -25,9 +25,7 @@
 
 EXTRA_AUTORECONF += "--exclude=autoheader"
 
-EXTRA_OECONF += "ac_cv_have_z_modifier=yes sc_cv_sys_crdly_shift=9 \
-        sc_cv_sys_tabdly_shift=11 sc_cv_sys_csize_shift=4 \
-        ac_cv_ispeed_offset=13 \
+EXTRA_OECONF += "ac_cv_have_z_modifier=yes \
         ac_cv_header_bsd_libutil_h=no \
 "
 
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch
new file mode 100644
index 0000000..dd7d5f7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch
@@ -0,0 +1,55 @@
+From 73e4abb24a936014727924d8b0b2965edfc117dd Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <jouni@qca.qualcomm.com>
+Date: Fri, 4 Mar 2016 18:46:41 +0200
+Subject: [PATCH 1/3] Reject psk parameter set with invalid passphrase
+ character
+
+WPA/WPA2-Personal passphrase is not allowed to include control
+characters. Reject a passphrase configuration attempt if that passphrase
+includes an invalid passphrase.
+
+This fixes an issue where wpa_supplicant could have updated the
+configuration file psk parameter with arbitrary data from the control
+interface or D-Bus interface. While those interfaces are supposed to be
+accessible only for trusted users/applications, it may be possible that
+an untrusted user has access to a management software component that
+does not validate the passphrase value before passing it to
+wpa_supplicant.
+
+This could allow such an untrusted user to inject up to 63 characters of
+almost arbitrary data into the configuration file. Such configuration
+file could result in wpa_supplicant trying to load a library (e.g.,
+opensc_engine_path, pkcs11_engine_path, pkcs11_module_path,
+load_dynamic_eap) from user controlled location when starting again.
+This would allow code from that library to be executed under the
+wpa_supplicant process privileges.
+
+Upstream-Status: Backport
+
+CVE: CVE-2016-4477
+
+Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
+Signed-off-by: Zhixiong Chi <Zhixiong.Chi@windriver.com>
+---
+ wpa_supplicant/config.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
+index b1c7870..fdd9643 100644
+--- a/wpa_supplicant/config.c
++++ b/wpa_supplicant/config.c
+@@ -478,6 +478,12 @@ static int wpa_config_parse_psk(const struct parse_data *data,
+ 		}
+ 		wpa_hexdump_ascii_key(MSG_MSGDUMP, "PSK (ASCII passphrase)",
+ 				      (u8 *) value, len);
++		if (has_ctrl_char((u8 *) value, len)) {
++			wpa_printf(MSG_ERROR,
++				   "Line %d: Invalid passphrase character",
++				   line);
++			return -1;
++		}
+ 		if (ssid->passphrase && os_strlen(ssid->passphrase) == len &&
+ 		    os_memcmp(ssid->passphrase, value, len) == 0) {
+ 			/* No change to the previously configured value */
+-- 
+1.9.1
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-WPS-Reject-a-Credential-with-invalid-passphrase.patch b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-WPS-Reject-a-Credential-with-invalid-passphrase.patch
new file mode 100644
index 0000000..db222e4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-WPS-Reject-a-Credential-with-invalid-passphrase.patch
@@ -0,0 +1,86 @@
+From ecbb0b3dc122b0d290987cf9c84010bbe53e1022 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <jouni@qca.qualcomm.com>
+Date: Fri, 4 Mar 2016 17:20:18 +0200
+Subject: [PATCH 1/2] WPS: Reject a Credential with invalid passphrase
+
+WPA/WPA2-Personal passphrase is not allowed to include control
+characters. Reject a Credential received from a WPS Registrar both as
+STA (Credential) and AP (AP Settings) if the credential is for WPAPSK or
+WPA2PSK authentication type and includes an invalid passphrase.
+
+This fixes an issue where hostapd or wpa_supplicant could have updated
+the configuration file PSK/passphrase parameter with arbitrary data from
+an external device (Registrar) that may not be fully trusted. Should
+such data include a newline character, the resulting configuration file
+could become invalid and fail to be parsed.
+
+Upstream-Status: Backport
+
+CVE: CVE-2016-4476
+
+Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
+Signed-off-by: Zhixiong Chi <Zhixiong.Chi@windriver.com>
+---
+ src/utils/common.c         | 12 ++++++++++++
+ src/utils/common.h         |  1 +
+ src/wps/wps_attr_process.c | 10 ++++++++++
+ 3 files changed, 23 insertions(+)
+
+diff --git a/src/utils/common.c b/src/utils/common.c
+index 450e2c6..27b7c02 100644
+--- a/src/utils/common.c
++++ b/src/utils/common.c
+@@ -697,6 +697,18 @@ int is_hex(const u8 *data, size_t len)
+ }
+ 
+ 
++int has_ctrl_char(const u8 *data, size_t len)
++{
++	size_t i;
++
++	for (i = 0; i < len; i++) {
++		if (data[i] < 32 || data[i] == 127)
++			return 1;
++	}
++	return 0;
++}
++
++
+ size_t merge_byte_arrays(u8 *res, size_t res_len,
+ 			 const u8 *src1, size_t src1_len,
+ 			 const u8 *src2, size_t src2_len)
+diff --git a/src/utils/common.h b/src/utils/common.h
+index 701dbb2..a972240 100644
+--- a/src/utils/common.h
++++ b/src/utils/common.h
+@@ -488,6 +488,7 @@ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len);
+ 
+ char * wpa_config_parse_string(const char *value, size_t *len);
+ int is_hex(const u8 *data, size_t len);
++int has_ctrl_char(const u8 *data, size_t len);
+ size_t merge_byte_arrays(u8 *res, size_t res_len,
+ 			 const u8 *src1, size_t src1_len,
+ 			 const u8 *src2, size_t src2_len);
+diff --git a/src/wps/wps_attr_process.c b/src/wps/wps_attr_process.c
+index eadb22f..e8c4579 100644
+--- a/src/wps/wps_attr_process.c
++++ b/src/wps/wps_attr_process.c
+@@ -229,6 +229,16 @@ static int wps_workaround_cred_key(struct wps_credential *cred)
+ 		cred->key_len--;
+ #endif /* CONFIG_WPS_STRICT */
+ 	}
++
++
++	if (cred->auth_type & (WPS_AUTH_WPAPSK | WPS_AUTH_WPA2PSK) &&
++	    (cred->key_len < 8 || has_ctrl_char(cred->key, cred->key_len))) {
++		wpa_printf(MSG_INFO, "WPS: Reject credential with invalid WPA/WPA2-Personal passphrase");
++		wpa_hexdump_ascii_key(MSG_INFO, "WPS: Network Key",
++				      cred->key, cred->key_len);
++		return -1;
++	}
++
+ 	return 0;
+ }
+ 
+--
+1.9.1
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-Reject-SET_CRED-commands-with-newline-characters-in-.patch b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-Reject-SET_CRED-commands-with-newline-characters-in-.patch
new file mode 100644
index 0000000..cad7425
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-Reject-SET_CRED-commands-with-newline-characters-in-.patch
@@ -0,0 +1,66 @@
+From b166cd84a77a6717be9600bf95378a0055d6f5a5 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <jouni@qca.qualcomm.com>
+Date: Tue, 5 Apr 2016 23:33:10 +0300
+Subject: [PATCH 2/3] Reject SET_CRED commands with newline characters in the
+ string values
+
+Most of the cred block parameters are written as strings without
+filtering and if there is an embedded newline character in the value,
+unexpected configuration file data might be written.
+
+This fixes an issue where wpa_supplicant could have updated the
+configuration file cred parameter with arbitrary data from the control
+interface or D-Bus interface. While those interfaces are supposed to be
+accessible only for trusted users/applications, it may be possible that
+an untrusted user has access to a management software component that
+does not validate the credential value before passing it to
+wpa_supplicant.
+
+This could allow such an untrusted user to inject almost arbitrary data
+into the configuration file. Such configuration file could result in
+wpa_supplicant trying to load a library (e.g., opensc_engine_path,
+pkcs11_engine_path, pkcs11_module_path, load_dynamic_eap) from user
+controlled location when starting again. This would allow code from that
+library to be executed under the wpa_supplicant process privileges.
+
+Upstream-Status: Backport
+
+CVE: CVE-2016-4477
+
+Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
+Signed-off-by: Zhixiong Chi <Zhixiong.Chi@windriver.com>
+---
+ wpa_supplicant/config.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
+index eb97cd5..69152ef 100644
+--- a/wpa_supplicant/config.c
++++ b/wpa_supplicant/config.c
+@@ -2896,6 +2896,8 @@ int wpa_config_set_cred(struct wpa_cred *cred, const char *var,
+ 
+ 	if (os_strcmp(var, "password") == 0 &&
+ 	    os_strncmp(value, "ext:", 4) == 0) {
++		if (has_newline(value))
++			return -1;
+ 		str_clear_free(cred->password);
+ 		cred->password = os_strdup(value);
+ 		cred->ext_password = 1;
+@@ -2946,9 +2948,14 @@ int wpa_config_set_cred(struct wpa_cred *cred, const char *var,
+ 	}
+ 
+ 	val = wpa_config_parse_string(value, &len);
+-	if (val == NULL) {
++	if (val == NULL ||
++	    (os_strcmp(var, "excluded_ssid") != 0 &&
++	     os_strcmp(var, "roaming_consortium") != 0 &&
++	     os_strcmp(var, "required_roaming_consortium") != 0 &&
++	     has_newline(val))) {
+ 		wpa_printf(MSG_ERROR, "Line %d: invalid field '%s' string "
+ 			   "value '%s'.", line, var, value);
++		os_free(val);
+ 		return -1;
+ 	}
+ 
+-- 
+1.9.1
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-Remove-newlines-from-wpa_supplicant-config-network-o.patch b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-Remove-newlines-from-wpa_supplicant-config-network-o.patch
new file mode 100644
index 0000000..cc7b01a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-Remove-newlines-from-wpa_supplicant-config-network-o.patch
@@ -0,0 +1,86 @@
+From 0fe5a234240a108b294a87174ad197f6b5cb38e9 Mon Sep 17 00:00:00 2001
+From: Paul Stewart <pstew@google.com>
+Date: Thu, 3 Mar 2016 15:40:19 -0800
+Subject: [PATCH 2/2] Remove newlines from wpa_supplicant config network
+ output
+
+Spurious newlines output while writing the config file can corrupt the
+wpa_supplicant configuration. Avoid writing these for the network block
+parameters. This is a generic filter that cover cases that may not have
+been explicitly addressed with a more specific commit to avoid control
+characters in the psk parameter.
+
+Upstream-Status: Backport
+
+CVE: CVE-2016-4476
+
+Signed-off-by: Paul Stewart <pstew@google.com>
+Signed-off-by: Zhixiong Chi <Zhixiong.Chi.wrs.com>
+---
+ src/utils/common.c      | 11 +++++++++++
+ src/utils/common.h      |  1 +
+ wpa_supplicant/config.c | 15 +++++++++++++--
+ 3 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/src/utils/common.c b/src/utils/common.c
+index 27b7c02..9856463 100644
+--- a/src/utils/common.c
++++ b/src/utils/common.c
+@@ -709,6 +709,17 @@ int has_ctrl_char(const u8 *data, size_t len)
+ }
+ 
+ 
++int has_newline(const char *str)
++{
++	while (*str) {
++		if (*str == '\n' || *str == '\r')
++			return 1;
++		str++;
++	}
++	return 0;
++}
++
++
+ size_t merge_byte_arrays(u8 *res, size_t res_len,
+ 			 const u8 *src1, size_t src1_len,
+ 			 const u8 *src2, size_t src2_len)
+diff --git a/src/utils/common.h b/src/utils/common.h
+index a972240..d19927b 100644
+--- a/src/utils/common.h
++++ b/src/utils/common.h
+@@ -489,6 +489,7 @@ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len);
+ char * wpa_config_parse_string(const char *value, size_t *len);
+ int is_hex(const u8 *data, size_t len);
+ int has_ctrl_char(const u8 *data, size_t len);
++int has_newline(const char *str);
+ size_t merge_byte_arrays(u8 *res, size_t res_len,
+ 			 const u8 *src1, size_t src1_len,
+ 			 const u8 *src2, size_t src2_len);
+diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
+index fdd9643..eb97cd5 100644
+--- a/wpa_supplicant/config.c
++++ b/wpa_supplicant/config.c
+@@ -2699,8 +2699,19 @@ char * wpa_config_get(struct wpa_ssid *ssid, const char *var)
+ 
+ 	for (i = 0; i < NUM_SSID_FIELDS; i++) {
+ 		const struct parse_data *field = &ssid_fields[i];
+-		if (os_strcmp(var, field->name) == 0)
+-			return field->writer(field, ssid);
++		if (os_strcmp(var, field->name) == 0) {
++			char *ret = field->writer(field, ssid);
++
++			if (ret && has_newline(ret)) {
++				wpa_printf(MSG_ERROR,
++					   "Found newline in value for %s; not returning it",
++					   var);
++				os_free(ret);
++				ret = NULL;
++			}
++
++			return ret;
++		}
+ 	}
+ 
+ 	return NULL;
+--
+1.9.1
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0003-Reject-SET-commands-with-newline-characters-in-the-s.patch b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0003-Reject-SET-commands-with-newline-characters-in-the-s.patch
new file mode 100644
index 0000000..5375db7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0003-Reject-SET-commands-with-newline-characters-in-the-s.patch
@@ -0,0 +1,54 @@
+From 2a3f56502b52375c3bf113cf92adfa99bad6b488 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <jouni@qca.qualcomm.com>
+Date: Tue, 5 Apr 2016 23:55:48 +0300
+Subject: [PATCH 3/3] Reject SET commands with newline characters in the
+ string values
+
+Many of the global configuration parameters are written as strings
+without filtering and if there is an embedded newline character in the
+value, unexpected configuration file data might be written.
+
+This fixes an issue where wpa_supplicant could have updated the
+configuration file global parameter with arbitrary data from the control
+interface or D-Bus interface. While those interfaces are supposed to be
+accessible only for trusted users/applications, it may be possible that
+an untrusted user has access to a management software component that
+does not validate the value of a parameter before passing it to
+wpa_supplicant.
+
+This could allow such an untrusted user to inject almost arbitrary data
+into the configuration file. Such configuration file could result in
+wpa_supplicant trying to load a library (e.g., opensc_engine_path,
+pkcs11_engine_path, pkcs11_module_path, load_dynamic_eap) from user
+controlled location when starting again. This would allow code from that
+library to be executed under the wpa_supplicant process privileges.
+
+Upstream-Status: Backport
+
+CVE: CVE-2016-4477
+
+Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
+Signed-off-by: Zhixiong Chi <Zhixiong.Chi@windriver.com>
+---
+ wpa_supplicant/config.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
+index 69152ef..d9a1603 100644
+--- a/wpa_supplicant/config.c
++++ b/wpa_supplicant/config.c
+@@ -3764,6 +3764,12 @@ static int wpa_global_config_parse_str(const struct global_parse_data *data,
+ 		return -1;
+ 	}
+ 
++	if (has_newline(pos)) {
++		wpa_printf(MSG_ERROR, "Line %d: invalid %s value with newline",
++			   line, data->name);
++		return -1;
++	}
++
+ 	tmp = os_strdup(pos);
+ 	if (tmp == NULL)
+ 		return -1;
+-- 
+1.9.1
diff --git a/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb
index 935c8af..a4160e1 100644
--- a/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb
+++ b/import-layers/yocto-poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb
@@ -24,6 +24,11 @@
            file://wpa_supplicant.conf \
            file://wpa_supplicant.conf-sane \
            file://99_wpa_supplicant \
+           file://0001-WPS-Reject-a-Credential-with-invalid-passphrase.patch \
+           file://0002-Remove-newlines-from-wpa_supplicant-config-network-o.patch \
+           file://0001-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch \
+           file://0002-Reject-SET_CRED-commands-with-newline-characters-in-.patch \
+           file://0003-Reject-SET-commands-with-newline-characters-in-the-s.patch \
           "
 SRC_URI[md5sum] = "96ff75c3a514f1f324560a2376f13110"
 SRC_URI[sha256sum] = "cce55bae483b364eae55c35ba567c279be442ed8bab5b80a3c7fb0d057b9b316"
diff --git a/import-layers/yocto-poky/meta/recipes-core/base-files/base-files/profile b/import-layers/yocto-poky/meta/recipes-core/base-files/base-files/profile
index 53c2680..7367fd1 100644
--- a/import-layers/yocto-poky/meta/recipes-core/base-files/base-files/profile
+++ b/import-layers/yocto-poky/meta/recipes-core/base-files/base-files/profile
@@ -5,12 +5,6 @@
 EDITOR="vi"			# needed for packages like cron, git-commit
 test -z "$TERM" && TERM="vt100"	# Basic terminal capab. For screen etc.
 
-if [ ! -e /etc/localtime -a ! -e /etc/TZ ]; then
-	TZ="UTC"		# Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html 
-				# for an explanation of how to set this to your local timezone.
-	export TZ
-fi
-
 if [ "$HOME" = "ROOTHOME" ]; then
    PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
 fi
@@ -20,17 +14,22 @@
 fi
 
 if [ -d /etc/profile.d ]; then
-  for i in /etc/profile.d/* ; do
-    . $i
+  for i in /etc/profile.d/*.sh ; do
+    if [ -f $i -a -r $i ]; then
+      . $i
+    fi
   done
   unset i
 fi
 
-if [ -x /usr/bin/resize ];then
-  /usr/bin/resize >/dev/null
+if [ -x /usr/bin/resize ] && termpath="`tty`"; then
+  # Make sure we are on a serial console (i.e. the device used starts with /dev/tty),
+  # otherwise we confuse e.g. the eclipse launcher which tries do use ssh
+  case "$termpath" in
+  /dev/tty*) resize >/dev/null
+  esac
 fi
 
 export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
 
 umask 022
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb b/import-layers/yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb
index d391707..5333110 100644
--- a/import-layers/yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb
@@ -165,9 +165,7 @@
         done
 }
 
-sysroot_stage_all_append () {
-	sysroot_stage_dir ${D}${sysconfdir}/skel ${SYSROOT_DESTDIR}${sysconfdir}/skel
-}
+SYSROOT_DIRS += "${sysconfdir}/skel"
 
 PACKAGES = "${PN}-doc ${PN} ${PN}-dev ${PN}-dbg"
 FILES_${PN} = "/"
@@ -177,4 +175,3 @@
 
 CONFFILES_${PN} = "${sysconfdir}/fstab ${@['', '${sysconfdir}/hostname'][(d.getVar('hostname', True) != '')]} ${sysconfdir}/shells"
 CONFFILES_${PN} += "${sysconfdir}/motd ${sysconfdir}/nsswitch.conf ${sysconfdir}/profile"
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/bsd-headers/bsd-headers.bb b/import-layers/yocto-poky/meta/recipes-core/bsd-headers/bsd-headers.bb
index 8f43d43..c9945d4 100644
--- a/import-layers/yocto-poky/meta/recipes-core/bsd-headers/bsd-headers.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/bsd-headers/bsd-headers.bb
@@ -1,7 +1,7 @@
 # Copyright (C) 2016 Khem Raj <raj.khem@gmail.com>
 # Released under the MIT license (see COPYING.MIT for the terms)
 
-DESCRIPTION = "bsd compatible headers"
+SUMMARY = "BSD compatible headers"
 LICENSE = "BSD-3-Clause & BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://sys-queue.h;beginline=1;endline=32;md5=c6352b0f03bb448600456547d334b56f"
 SECTION = "devel"
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox.inc b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox.inc
index 5e91a26..b2f1960 100644
--- a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox.inc
@@ -19,7 +19,7 @@
 export EXTRA_LDFLAGS = "${LDFLAGS}"
 
 # We don't want '-e MAKEFLAGS=' in EXTRA_OEMAKE
-EXTRA_OEMAKE = "CC='${CC}' LD='${CCLD}' V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y"
+EXTRA_OEMAKE = "CC='${CC}' LD='${CCLD}' V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y HOSTCC='${BUILD_CC}' HOSTCPP='${BUILD_CPP}'"
 
 PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock"
 
@@ -286,8 +286,8 @@
                         for i in $tmp
                         do
                                 j=`echo ${i} | sed s/\;/\ /g`
-                                label=`echo ${i} | sed -e 's/tty//' -e 's/^.*;//' -e 's/;.*//'`
-                                echo "tty$label::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab
+                                id=`echo ${i} | sed -e 's/^.*;//' -e 's/;.*//'`
+                                echo "$id::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab
                         done
                 fi
         fi
@@ -423,7 +423,7 @@
 	# remove syslog
 	if test "x$D" = "x"; then
 		if test "$1" = "upgrade" -o "$1" = "remove"; then
-			${sysconfdir}/init.d/syslog stop
+			${sysconfdir}/init.d/syslog stop || :
 		fi
 	fi
 }
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/0001-flock-update-the-behaviour-of-c-parameter-to-match-u.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/0001-flock-update-the-behaviour-of-c-parameter-to-match-u.patch
new file mode 100644
index 0000000..8bcbd73
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/0001-flock-update-the-behaviour-of-c-parameter-to-match-u.patch
@@ -0,0 +1,73 @@
+From 198f18addf1d814c2fefcb492f3b9fbd221669bb Mon Sep 17 00:00:00 2001
+From: "Maxin B. John" <maxin.john@intel.com>
+Date: Wed, 20 Apr 2016 18:24:45 +0300
+Subject: [PATCH] flock: update the behaviour of -c parameter to match upstream
+
+In upstream, -c 'PROG ARGS' means "run sh -c 'PROG ARGS'"
+
+function                                             old     new   delta
+flock_main                                           286     377     +91
+.rodata                                           155849  155890     +41
+
+Upstream-Status: Submitted
+[ http://lists.busybox.net/pipermail/busybox/2016-April/084142.html ]
+
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+ util-linux/flock.c | 20 ++++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+diff --git a/util-linux/flock.c b/util-linux/flock.c
+index 05a747f..c85a25d 100644
+--- a/util-linux/flock.c
++++ b/util-linux/flock.c
+@@ -20,6 +20,7 @@ int flock_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int flock_main(int argc UNUSED_PARAM, char **argv)
+ {
+ 	int mode, opt, fd;
++    char *cmd_args[4];
+ 	enum {
+ 		OPT_s = (1 << 0),
+ 		OPT_x = (1 << 1),
+@@ -57,7 +58,6 @@ int flock_main(int argc UNUSED_PARAM, char **argv)
+ 	/* If it is "flock FILE -c PROG", then -c isn't caught by getopt32:
+ 	 * we use "+" in order to support "flock -opt FILE PROG -with-opts",
+ 	 * we need to remove -c by hand.
+-	 * TODO: in upstream, -c 'PROG ARGS' means "run sh -c 'PROG ARGS'"
+ 	 */
+ 	if (argv[0]
+ 	 && argv[0][0] == '-'
+@@ -65,7 +65,10 @@ int flock_main(int argc UNUSED_PARAM, char **argv)
+ 	    || (ENABLE_LONG_OPTS && strcmp(argv[0] + 1, "-command") == 0)
+ 	    )
+ 	) {
+-		argv++;
++        if (argc != optind + 3)
++            bb_error_msg_and_die("-c requires exactly one command argument");
++        else
++            argv++;
+ 	}
+ 
+ 	if (OPT_s == LOCK_SH && OPT_x == LOCK_EX && OPT_n == LOCK_NB && OPT_u == LOCK_UN) {
+@@ -89,9 +92,14 @@ int flock_main(int argc UNUSED_PARAM, char **argv)
+ 			return EXIT_FAILURE;
+ 		bb_perror_nomsg_and_die();
+ 	}
+-
+-	if (argv[0])
+-		return spawn_and_wait(argv);
+-
++    if (argv[0]) {
++        cmd_args[0] = getenv("SHELL");
++        if (!cmd_args[0])
++            cmd_args[0] = (char*)DEFAULT_SHELL;
++        cmd_args[1] = (char*)"-c";
++        cmd_args[2] = argv[0];
++        cmd_args[3] = NULL;
++        return spawn_and_wait(cmd_args);
++    }
+ 	return EXIT_SUCCESS;
+ }
+-- 
+2.4.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/0001-sed-fix-sed-n-flushes-pattern-space-terminates-early.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/0001-sed-fix-sed-n-flushes-pattern-space-terminates-early.patch
new file mode 100644
index 0000000..4f53984
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/0001-sed-fix-sed-n-flushes-pattern-space-terminates-early.patch
@@ -0,0 +1,72 @@
+From 903542f7331c58007a3ef938d41e1c55fc329648 Mon Sep 17 00:00:00 2001
+From: Dengke Du <dengke.du@windriver.com>
+Date: Wed, 31 Aug 2016 23:40:43 -0400
+Subject: [PATCH] sed: fix "sed n (flushes pattern space, terminates early)"
+ testcase failure
+
+This patch fix "sed n (flushes pattern space, terminates early)"
+testcase failure. We can see it at:
+
+	https://git.busybox.net/busybox/commit/?id=76d72376e0244a5cafd4880cdc623e37d86a75e4
+
+Upstream-Status: Backport
+
+Signed-off-by: Dengke Du <dengke.du@windriver.com>
+---
+ editors/sed.c       | 19 ++++++++++---------
+ testsuite/sed.tests |  6 +-----
+ 2 files changed, 11 insertions(+), 14 deletions(-)
+
+diff --git a/editors/sed.c b/editors/sed.c
+index 7bbf820..259c39c 100644
+--- a/editors/sed.c
++++ b/editors/sed.c
+@@ -1274,16 +1274,17 @@ static void process_files(void)
+ 		case 'n':
+ 			if (!G.be_quiet)
+ 				sed_puts(pattern_space, last_gets_char);
+-			if (next_line) {
+-				free(pattern_space);
+-				pattern_space = next_line;
+-				last_gets_char = next_gets_char;
+-				next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char);
+-				substituted = 0;
+-				linenum++;
+-				break;
++			if (next_line == NULL) {
++				/* If no next line, jump to end of script and exit. */
++				goto discard_line;
+ 			}
+-			/* fall through */
++			free(pattern_space);
++			pattern_space = next_line;
++			last_gets_char = next_gets_char;
++			next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char);
++			substituted = 0;
++			linenum++;
++			break;
+ 
+ 		/* Quit.  End of script, end of input. */
+ 		case 'q':
+diff --git a/testsuite/sed.tests b/testsuite/sed.tests
+index 34479e5..96ff7a5 100755
+--- a/testsuite/sed.tests
++++ b/testsuite/sed.tests
+@@ -73,13 +73,9 @@ testing "sed t (test/branch clears test bit)" "sed -e 's/a/b/;:loop;t loop'" \
+ testing "sed T (!test/branch)" "sed -e 's/a/1/;T notone;p;: notone;p'" \
+ 	"1\n1\n1\nb\nb\nc\nc\n" "" "a\nb\nc\n"
+ 
+-test x"$SKIP_KNOWN_BUGS" = x"" && {
+-# Normal sed end-of-script doesn't print "c" because n flushed the pattern
+-# space.  If n hits EOF, pattern space is empty when script ends.
+-# Query: how does this interact with no newline at EOF?
+ testing "sed n (flushes pattern space, terminates early)" "sed -e 'n;p'" \
+ 	"a\nb\nb\nc\n" "" "a\nb\nc\n"
+-}
++
+ # non-GNU sed: N does _not_ flush pattern space, therefore c is eaten @ script end
+ # GNU sed: N flushes pattern space, therefore c is printed too @ script end
+ testing "sed N (flushes pattern space (GNU behavior))" "sed -e 'N;p'" \
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2147.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2147.patch
new file mode 100644
index 0000000..84cae6a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2147.patch
@@ -0,0 +1,57 @@
+From d474ffc68290e0a83651c4432eeabfa62cd51e87 Mon Sep 17 00:00:00 2001
+From: Denys Vlasenko <vda.linux@googlemail.com>
+Date: Thu, 10 Mar 2016 11:47:58 +0100
+Subject: [PATCH] udhcp: fix a SEGV on malformed RFC1035-encoded domain name
+
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+
+Upstream-Status: Backport
+CVE: CVE-2016-2147
+
+https://git.busybox.net/busybox/commit/?id=d474ffc
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ networking/udhcp/domain_codec.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+Index: busybox-1.23.2/networking/udhcp/domain_codec.c
+===================================================================
+--- busybox-1.23.2.orig/networking/udhcp/domain_codec.c
++++ busybox-1.23.2/networking/udhcp/domain_codec.c
+@@ -63,11 +63,10 @@ char* FAST_FUNC dname_dec(const uint8_t
+ 				if (crtpos + *c + 1 > clen) /* label too long? abort */
+ 					return NULL;
+ 				if (dst)
+-					memcpy(dst + len, c + 1, *c);
++					/* \3com ---> "com." */
++					((char*)mempcpy(dst + len, c + 1, *c))[0] = '.';
+ 				len += *c + 1;
+ 				crtpos += *c + 1;
+-				if (dst)
+-					dst[len - 1] = '.';
+ 			} else {
+ 				/* NUL: end of current domain name */
+ 				if (retpos == 0) {
+@@ -78,7 +77,10 @@ char* FAST_FUNC dname_dec(const uint8_t
+ 					crtpos = retpos;
+ 					retpos = depth = 0;
+ 				}
+-				if (dst)
++				if (dst && len != 0)
++					/* \4host\3com\0\4host and we are at \0:
++					 * \3com was converted to "com.", change dot to space.
++					 */
+ 					dst[len - 1] = ' ';
+ 			}
+ 
+@@ -228,6 +230,9 @@ int main(int argc, char **argv)
+ 	int len;
+ 	uint8_t *encoded;
+ 
++        uint8_t str[6] = { 0x00, 0x00, 0x02, 0x65, 0x65, 0x00 };
++        printf("NUL:'%s'\n",   dname_dec(str, 6, ""));
++
+ #define DNAME_DEC(encoded,pre) dname_dec((uint8_t*)(encoded), sizeof(encoded), (pre))
+ 	printf("'%s'\n",       DNAME_DEC("\4host\3com\0", "test1:"));
+ 	printf("test2:'%s'\n", DNAME_DEC("\4host\3com\0\4host\3com\0", ""));
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2147_2.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2147_2.patch
new file mode 100644
index 0000000..1473d46
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2147_2.patch
@@ -0,0 +1,32 @@
+From 1b7c17391de66502dd7a97c866e0a33681edbb1f Mon Sep 17 00:00:00 2001
+From: Denys Vlasenko <vda.linux@googlemail.com>
+Date: Fri, 11 Mar 2016 00:26:58 +0100
+Subject: [PATCH] udhcpc: fix a warning in debug code
+
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+Upsteam-Status: Backport
+CVE: CVE-2016-2147 regression fix
+
+https://git.busybox.net/busybox/commit/?id=1b7c17
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ networking/udhcp/domain_codec.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/networking/udhcp/domain_codec.c b/networking/udhcp/domain_codec.c
+index cee31f1..5a923cc 100644
+--- a/networking/udhcp/domain_codec.c
++++ b/networking/udhcp/domain_codec.c
+@@ -7,6 +7,7 @@
+  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+  */
+ #ifdef DNS_COMPR_TESTING
++# define _GNU_SOURCE
+ # define FAST_FUNC /* nothing */
+ # define xmalloc malloc
+ # include <stdlib.h>
+-- 
+2.3.5
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2148.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2148.patch
new file mode 100644
index 0000000..af04a7f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-2148.patch
@@ -0,0 +1,74 @@
+From 352f79acbd759c14399e39baef21fc4ffe180ac2 Mon Sep 17 00:00:00 2001
+From: Denys Vlasenko <vda.linux@googlemail.com>
+Date: Fri, 26 Feb 2016 15:54:56 +0100
+Subject: [PATCH] udhcpc: fix OPTION_6RD parsing (could overflow its malloced
+ buffer)
+
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+
+Upstream-Status: Backport
+CVE: CVE-2016-2148
+https://git.busybox.net/busybox/commit/?id=352f79
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ networking/udhcp/common.c | 15 +++++++++++++--
+ networking/udhcp/dhcpc.c  |  4 ++--
+ 2 files changed, 15 insertions(+), 4 deletions(-)
+
+Index: busybox-1.23.2/networking/udhcp/common.c
+===================================================================
+--- busybox-1.23.2.orig/networking/udhcp/common.c
++++ busybox-1.23.2/networking/udhcp/common.c
+@@ -142,7 +142,7 @@ const char dhcp_option_strings[] ALIGN1
+  * udhcp_str2optset: to determine how many bytes to allocate.
+  * xmalloc_optname_optval: to estimate string length
+  * from binary option length: (option[LEN] / dhcp_option_lengths[opt_type])
+- * is the number of elements, multiply in by one element's string width
++ * is the number of elements, multiply it by one element's string width
+  * (len_of_option_as_string[opt_type]) and you know how wide string you need.
+  */
+ const uint8_t dhcp_option_lengths[] ALIGN1 = {
+@@ -162,7 +162,18 @@ const uint8_t dhcp_option_lengths[] ALIG
+ 	[OPTION_S32] =     4,
+ 	/* Just like OPTION_STRING, we use minimum length here */
+ 	[OPTION_STATIC_ROUTES] = 5,
+-	[OPTION_6RD] =    22,  /* ignored by udhcp_str2optset */
++	[OPTION_6RD] =    12,  /* ignored by udhcp_str2optset */
++	/* The above value was chosen as follows:
++	 * len_of_option_as_string[] for this option is >60: it's a string of the form
++	 * "32 128 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 255.255.255.255 ".
++	 * Each additional ipv4 address takes 4 bytes in binary option and appends
++	 * another "255.255.255.255 " 16-byte string. We can set [OPTION_6RD] = 4
++	 * but this severely overestimates string length: instead of 16 bytes,
++	 * it adds >60 for every 4 bytes in binary option.
++	 * We cheat and declare here that option is in units of 12 bytes.
++	 * This adds more than 60 bytes for every three ipv4 addresses - more than enough.
++	 * (Even 16 instead of 12 should work, but let's be paranoid).
++	 */
+ };
+ 
+ 
+Index: busybox-1.23.2/networking/udhcp/dhcpc.c
+===================================================================
+--- busybox-1.23.2.orig/networking/udhcp/dhcpc.c
++++ busybox-1.23.2/networking/udhcp/dhcpc.c
+@@ -103,7 +103,7 @@ static const uint8_t len_of_option_as_st
+ 	[OPTION_IP              ] = sizeof("255.255.255.255 "),
+ 	[OPTION_IP_PAIR         ] = sizeof("255.255.255.255 ") * 2,
+ 	[OPTION_STATIC_ROUTES   ] = sizeof("255.255.255.255/32 255.255.255.255 "),
+-	[OPTION_6RD             ] = sizeof("32 128 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 255.255.255.255 "),
++	[OPTION_6RD             ] = sizeof("132 128 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 255.255.255.255 "),
+ 	[OPTION_STRING          ] = 1,
+ 	[OPTION_STRING_HOST     ] = 1,
+ #if ENABLE_FEATURE_UDHCP_RFC3397
+@@ -214,7 +214,7 @@ static NOINLINE char *xmalloc_optname_op
+ 	type = optflag->flags & OPTION_TYPE_MASK;
+ 	optlen = dhcp_option_lengths[type];
+ 	upper_length = len_of_option_as_string[type]
+-		* ((unsigned)(len + optlen - 1) / (unsigned)optlen);
++		* ((unsigned)(len + optlen) / (unsigned)optlen);
+ 
+ 	dest = ret = xmalloc(upper_length + strlen(opt_name) + 2);
+ 	dest += sprintf(ret, "%s=", opt_name);
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/busybox-kbuild-race-fix-commit-d8e61bb.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/busybox-kbuild-race-fix-commit-d8e61bb.patch
new file mode 100644
index 0000000..38302e0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/busybox-kbuild-race-fix-commit-d8e61bb.patch
@@ -0,0 +1,53 @@
+Upstream-Status: Backport
+
+Patch addressing a parallel make race in Busybox
+
+  http://git.busybox.net/busybox/commit/?id=d8e61bbf13d0cf38d477255cfd5dc71c5d51d575
+
+Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
+
+From d8e61bbf13d0cf38d477255cfd5dc71c5d51d575 Mon Sep 17 00:00:00 2001
+From: Denys Vlasenko <vda.linux@googlemail.com>
+Date: Sun, 21 Aug 2016 22:00:20 +0200
+Subject: build system: different fix for
+ include/applet_tables.h/include/NUM_APPLETS.h
+
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+
+diff --git a/applets/Kbuild.src b/applets/Kbuild.src
+index 5cc1827..3aedbbf 100644
+--- a/applets/Kbuild.src
++++ b/applets/Kbuild.src
+@@ -29,7 +29,7 @@ applets/applets.o: include/usage_compressed.h include/applet_tables.h
+ 
+ applets/applet_tables: .config include/applets.h
+ applets/usage:         .config include/applets.h
+-applets/usage_pod:     .config include/applets.h include/applet_tables.h include/NUM_APPLETS.h
++applets/usage_pod:     .config include/applets.h include/applet_tables.h
+ 
+ quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
+       cmd_gen_usage_compressed = $(srctree_slash)applets/usage_compressed include/usage_compressed.h applets
+@@ -37,8 +37,21 @@ quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
+ include/usage_compressed.h: applets/usage $(srctree_slash)applets/usage_compressed
+ 	$(call cmd,gen_usage_compressed)
+ 
+-quiet_cmd_gen_applet_tables = GEN     include/applet_tables.h
++quiet_cmd_gen_applet_tables = GEN     include/applet_tables.h include/NUM_APPLETS.h
+       cmd_gen_applet_tables = applets/applet_tables include/applet_tables.h include/NUM_APPLETS.h
+ 
+-include/applet_tables.h include/NUM_APPLETS.h: applets/applet_tables
++include/NUM_APPLETS.h: applets/applet_tables
++	$(call cmd,gen_applet_tables)
++
++# In fact, include/applet_tables.h depends only on applets/applet_tables,
++# and is generated by it. But specifying only it can run
++# applets/applet_tables twice, possibly in parallel.
++# We say that it also needs NUM_APPLETS.h
++#
++# Unfortunately, we need to list the same command,
++# and it can be executed twice (sequentially).
++# The alternative is to not list any command,
++# and then if include/applet_tables.h is deleted, it won't be rebuilt.
++#
++include/applet_tables.h: include/NUM_APPLETS.h applets/applet_tables
+ 	$(call cmd,gen_applet_tables)
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/commit-applet_tables-fix-commit-0dddbc1.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/commit-applet_tables-fix-commit-0dddbc1.patch
new file mode 100644
index 0000000..7f80a1d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/commit-applet_tables-fix-commit-0dddbc1.patch
@@ -0,0 +1,61 @@
+Upstream-Status: Backport
+
+Patch addressing a parallel make race in Busybox
+
+  http://git.busybox.net/busybox/commit/?id=0dddbc1a59795a77679d8c5ef48a2795cb470563
+
+Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
+
+From 0dddbc1a59795a77679d8c5ef48a2795cb470563 Mon Sep 17 00:00:00 2001
+From: Denys Vlasenko <vda.linux@googlemail.com>
+Date: Tue, 23 Aug 2016 20:21:36 +0200
+Subject: build system: always rewrite NUM_APPLETS.h
+
+Conditional rewrite can keep NUM_APPLETS.h mtime old,
+this causes make to try to regenerate it at every invocation.
+
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+
+diff --git a/applets/applet_tables.c b/applets/applet_tables.c
+index 8401a15..ef911a4 100644
+--- a/applets/applet_tables.c
++++ b/applets/applet_tables.c
+@@ -192,27 +192,28 @@ int main(int argc, char **argv)
+ 	printf("};\n");
+ #endif
+ 	//printf("#endif /* SKIP_definitions */\n");
++
+ //	printf("\n");
+ //	printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN);
+ 
+ 	if (argv[2]) {
+-		char line_old[80];
+-		char line_new[80];
+ 		FILE *fp;
++		char line_new[80];
++//		char line_old[80];
+ 
+-		line_old[0] = 0;
+-		fp = fopen(argv[2], "r");
+-		if (fp) {
+-			fgets(line_old, sizeof(line_old), fp);
+-			fclose(fp);
+-		}
+ 		sprintf(line_new, "#define NUM_APPLETS %u\n", NUM_APPLETS);
+-		if (strcmp(line_old, line_new) != 0) {
++//		line_old[0] = 0;
++//		fp = fopen(argv[2], "r");
++//		if (fp) {
++//			fgets(line_old, sizeof(line_old), fp);
++//			fclose(fp);
++//		}
++//		if (strcmp(line_old, line_new) != 0) {
+ 			fp = fopen(argv[2], "w");
+ 			if (!fp)
+ 				return 1;
+ 			fputs(line_new, fp);
+-		}
++//		}
+ 	}
+ 
+ 	return 0;
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/defconfig b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/defconfig
index ffea6be..c0459d5 100644
--- a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/defconfig
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/defconfig
@@ -135,7 +135,7 @@
 CONFIG_FEATURE_SEAMLESS_BZ2=y
 CONFIG_FEATURE_SEAMLESS_GZ=y
 CONFIG_FEATURE_SEAMLESS_Z=y
-CONFIG_AR=y
+# CONFIG_AR is not set
 # CONFIG_FEATURE_AR_LONG_FILENAMES is not set
 # CONFIG_FEATURE_AR_CREATE is not set
 # CONFIG_UNCOMPRESS is not set
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/ip_fix_problem_on_mips64_n64_big_endian_musl_systems.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/ip_fix_problem_on_mips64_n64_big_endian_musl_systems.patch
new file mode 100644
index 0000000..41c5656
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/ip_fix_problem_on_mips64_n64_big_endian_musl_systems.patch
@@ -0,0 +1,90 @@
+From 4ab372d49a6e82b0bf097dedb96d26330c5f2d5f Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sun, 24 Apr 2016 17:39:02 +0200
+Subject: [PATCH] ip: fix problem on mips64 n64 big endian musl systems
+
+Use designated initializers for struct msghdr.
+The struct layout is non-portable and musl libc does not match what busybox expects.
+
+Signed-off-by: Szabolcs Nagy <nsz@port70.net>
+Tested-by: Waldemar Brodkorb <wbx@openadk.org>
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+
+Upstream-Status: Backport
+
+https://git.busybox.net/busybox/commit/?id=4ab372d49a6e82b0bf097dedb96d26330c5f2d5f
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ networking/libiproute/libnetlink.c | 37 ++++++++++++++++++++++++-------------
+ 1 file changed, 24 insertions(+), 13 deletions(-)
+
+diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c
+index c7533a4..cbb5daf 100644
+--- a/networking/libiproute/libnetlink.c
++++ b/networking/libiproute/libnetlink.c
+@@ -71,11 +71,15 @@ int FAST_FUNC rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, in
+ 	struct nlmsghdr nlh;
+ 	struct sockaddr_nl nladdr;
+ 	struct iovec iov[2] = { { &nlh, sizeof(nlh) }, { req, len } };
++	/* Use designated initializers, struct layout is non-portable */
+ 	struct msghdr msg = {
+-		(void*)&nladdr, sizeof(nladdr),
+-		iov,  2,
+-		NULL, 0,
+-		0
++		.msg_name = (void*)&nladdr,
++		.msg_namelen = sizeof(nladdr),
++		.msg_iov = iov,
++		.msg_iovlen = 2,
++		.msg_control = NULL,
++		.msg_controllen = 0,
++		.msg_flags = 0
+ 	};
+ 
+ 	memset(&nladdr, 0, sizeof(nladdr));
+@@ -104,12 +108,15 @@ static int rtnl_dump_filter(struct rtnl_handle *rth,
+ 	while (1) {
+ 		int status;
+ 		struct nlmsghdr *h;
+-
++		/* Use designated initializers, struct layout is non-portable */
+ 		struct msghdr msg = {
+-			(void*)&nladdr, sizeof(nladdr),
+-			&iov, 1,
+-			NULL, 0,
+-			0
++			.msg_name = (void*)&nladdr,
++			.msg_namelen = sizeof(nladdr),
++			.msg_iov = &iov,
++			.msg_iovlen = 1,
++			.msg_control = NULL,
++			.msg_controllen = 0,
++			.msg_flags = 0
+ 		};
+ 
+ 		status = recvmsg(rth->fd, &msg, 0);
+@@ -211,11 +218,15 @@ int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
+ 	struct sockaddr_nl nladdr;
+ 	struct iovec iov = { (void*)n, n->nlmsg_len };
+ 	char   *buf = xmalloc(8*1024); /* avoid big stack buffer */
++	/* Use designated initializers, struct layout is non-portable */
+ 	struct msghdr msg = {
+-		(void*)&nladdr, sizeof(nladdr),
+-		&iov, 1,
+-		NULL, 0,
+-		0
++		.msg_name = (void*)&nladdr,
++		.msg_namelen = sizeof(nladdr),
++		.msg_iov = &iov,
++		.msg_iovlen = 1,
++		.msg_control = NULL,
++		.msg_controllen = 0,
++		.msg_flags = 0
+ 	};
+ 
+ 	memset(&nladdr, 0, sizeof(nladdr));
+-- 
+2.3.5
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/makefile-fix-backport.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/makefile-fix-backport.patch
new file mode 100644
index 0000000..2e9842e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/makefile-fix-backport.patch
@@ -0,0 +1,40 @@
+From 9e5820a86277818c2f83c11c2aa76d7f0a38283e Mon Sep 17 00:00:00 2001
+From: Denys Vlasenko <vda.linux@googlemail.com>
+Date: Sun, 14 Aug 2016 02:54:27 +0200
+Subject: build system: fix include/NUM_APPLETS.h generation
+
+TBH, it's more like "work around my bad makefile-fu" than "fix"...
+
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+---
+ applets/Kbuild.src | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+Upstream-Status: Backport
+
+diff --git a/applets/Kbuild.src b/applets/Kbuild.src
+index b612399..5cc1827 100644
+--- a/applets/Kbuild.src
++++ b/applets/Kbuild.src
+@@ -29,7 +29,7 @@ applets/applets.o: include/usage_compressed.h include/applet_tables.h
+ 
+ applets/applet_tables: .config include/applets.h
+ applets/usage:         .config include/applets.h
+-applets/usage_pod:     .config include/applet_tables.h include/applets.h
++applets/usage_pod:     .config include/applets.h include/applet_tables.h include/NUM_APPLETS.h
+ 
+ quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
+       cmd_gen_usage_compressed = $(srctree_slash)applets/usage_compressed include/usage_compressed.h applets
+@@ -40,8 +40,5 @@ include/usage_compressed.h: applets/usage $(srctree_slash)applets/usage_compress
+ quiet_cmd_gen_applet_tables = GEN     include/applet_tables.h
+       cmd_gen_applet_tables = applets/applet_tables include/applet_tables.h include/NUM_APPLETS.h
+ 
+-include/applet_tables.h: applets/applet_tables
+-	$(call cmd,gen_applet_tables)
+-
+-include/NUM_APPLETS.h: applets/applet_tables
++include/applet_tables.h include/NUM_APPLETS.h: applets/applet_tables
+ 	$(call cmd,gen_applet_tables)
+-- 
+cgit v0.12
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/makefile-libbb-race.patch b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/makefile-libbb-race.patch
new file mode 100644
index 0000000..97278ab
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox/makefile-libbb-race.patch
@@ -0,0 +1,34 @@
+There is a potential race when building libbb, as some header files  
+needed by libbb are not generated yet (or are being modified) at the time
+libbb is compiled.
+This patch avoids this scenario by building libbb as the last directory.
+
+Upstream-Status: Submitted
+Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
+
+Index: busybox-1.24.1/Makefile
+===================================================================
+diff --git a/Makefile b/Makefile
+index 5cfc763..69f3831 100644
+--- a/Makefile
++++ b/Makefile
+@@ -738,9 +738,18 @@ $(sort $(busybox-all)): $(busybox-dirs) ;
+ # Error messages still appears in the original language
+ 
+ PHONY += $(busybox-dirs)
+-$(busybox-dirs): prepare scripts
++
++libbb-dir = $(filter libbb,$(busybox-dirs))
++busybox-dirs1 = $(filter-out libbb,$(busybox-dirs))
++
++$(busybox-dirs1): prepare scripts
+ 	$(Q)$(MAKE) $(build)=$@
+ 
++ifneq ($(libbb-dir),)
++$(libbb-dir): | $(busybox-dirs1)
++	$(Q)$(MAKE) $(build)=$@
++endif
++
+ # Build the kernel release string
+ # The KERNELRELEASE is stored in a file named .kernelrelease
+ # to be used when executing for example make install or make modules_install
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox_1.24.1.bb b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox_1.24.1.bb
index bdaa5a5..df0e131 100644
--- a/import-layers/yocto-poky/meta/recipes-core/busybox/busybox_1.24.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/busybox_1.24.1.bb
@@ -32,6 +32,7 @@
            file://busybox-1.24.1-unzip.patch \
            file://busybox-1.24.1-unzip-regression.patch \
            file://busybox-1.24.1-truncate-open-mode.patch \
+           file://0001-flock-update-the-behaviour-of-c-parameter-to-match-u.patch \
            file://mount-via-label.cfg \
            file://sha1sum.cfg \
            file://sha256sum.cfg \
@@ -43,6 +44,15 @@
            file://rcS \
            file://rcK \
            file://runlevel \
+           file://CVE-2016-2148.patch \
+           file://CVE-2016-2147.patch \
+           file://CVE-2016-2147_2.patch \
+           file://ip_fix_problem_on_mips64_n64_big_endian_musl_systems.patch \
+           file://makefile-fix-backport.patch \
+           file://0001-sed-fix-sed-n-flushes-pattern-space-terminates-early.patch \
+           file://busybox-kbuild-race-fix-commit-d8e61bb.patch \
+           file://commit-applet_tables-fix-commit-0dddbc1.patch \
+           file://makefile-libbb-race.patch \
 "
 SRC_URI_append_libc-musl = " file://musl.cfg "
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/files/busybox-syslog.default b/import-layers/yocto-poky/meta/recipes-core/busybox/files/busybox-syslog.default
index e516caf..2dced80 100644
--- a/import-layers/yocto-poky/meta/recipes-core/busybox/files/busybox-syslog.default
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/files/busybox-syslog.default
@@ -1,4 +1,4 @@
-OPTIONS="-C"
+#OPTIONS="-C"
 # The above option means syslogd will log to 16K shm circular buffer.
 # You could use `logread' to read it.
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/files/inittab b/import-layers/yocto-poky/meta/recipes-core/busybox/files/inittab
index bfec4a7..2bc831c 100644
--- a/import-layers/yocto-poky/meta/recipes-core/busybox/files/inittab
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/files/inittab
@@ -1,13 +1,13 @@
 # This is run first except when booting in single-user mode.
 
 # Startup the system
-null::sysinit:/bin/mount -t proc proc /proc
-null::sysinit:/bin/mount -t sysfs sysfs /sys
-null::sysinit:/bin/mount -t devtmpfs devtmpfs /dev
-null::sysinit:/bin/mount -o remount,rw /
-null::sysinit:/bin/mkdir -p /dev/pts
-null::sysinit:/bin/mount -t devpts devpts /dev/pts
-null::sysinit:/bin/mount -a
+::sysinit:/bin/mount -t proc proc /proc
+::sysinit:/bin/mount -t sysfs sysfs /sys
+::sysinit:/bin/mount -t devtmpfs devtmpfs /dev
+::sysinit:/bin/mount -o remount,rw /
+::sysinit:/bin/mkdir -p /dev/pts
+::sysinit:/bin/mount -t devpts devpts /dev/pts
+::sysinit:/bin/mount -a
 
 ::sysinit:/etc/init.d/rcS
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/busybox/files/mdev b/import-layers/yocto-poky/meta/recipes-core/busybox/files/mdev
index 9625247..8c9c06e 100755
--- a/import-layers/yocto-poky/meta/recipes-core/busybox/files/mdev
+++ b/import-layers/yocto-poky/meta/recipes-core/busybox/files/mdev
@@ -1,10 +1,12 @@
 #!/bin/sh
-
+mount -t proc proc /proc
+mount -t sysfs sysfs /sys
 mount -t tmpfs tmpfs /dev  -o size=64k,mode=0755
 mkdir /dev/pts /dev/shm
 chmod 777 /dev/shm
 mount -t devpts devpts /dev/pts
 touch /dev/mdev.seq
+#sysctl -w kernel.hotplug=/sbin/mdev
 echo "/sbin/mdev" > /proc/sys/kernel/hotplug
 mdev -s
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/coreutils_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/coreutils_fix_for_automake-1.12.patch
index 02730db..64e5f12 100644
--- a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/coreutils_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/coreutils_fix_for_automake-1.12.patch
@@ -11,7 +11,7 @@
 | configure.ac:40: the top level
 | autom4te: m4 failed with exit status: 1
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/04
 
 Index: coreutils-6.9/m4/jm-macros.m4
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/futimens.patch b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/futimens.patch
index 5ca590b..5088106 100644
--- a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/futimens.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/futimens.patch
@@ -3,7 +3,7 @@
 # coreutils uses gnulib which conflicts with newer libc header on futimens
 # this patch simply renames coreutils futimes to avoid confliction
 #
-# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-08-18
+# Signed-off-by: Kevin Tian <kevin.tian@intel.com>, 2010-08-18
 # (this patch is licensed under GPLv2)
 
 diff --git a/lib/utimens.c b/lib/utimens.c
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/gnulib_m4.patch b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/gnulib_m4.patch
index 8f35552..8a8ffa7 100644
--- a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/gnulib_m4.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/gnulib_m4.patch
@@ -3,7 +3,7 @@
 # remove the line to cause recursive inclusion error from autoreconf, sicne
 # newer autoconf has included this definition. Simply rename it here.
 #
-# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-08-18
+# Signed-off-by: Kevin Tian <kevin.tian@intel.com>, 2010-08-18
 # (this patch is licensed under GPLv2)
 
 diff --git a/extensions.m4 b/extensions.m4
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/man-touch.patch b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/man-touch.patch
index c42cb9c..59a4fe0 100644
--- a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/man-touch.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-6.9/man-touch.patch
@@ -6,7 +6,7 @@
 # is with target format which can't be invoked on build system, disable building
 # 'touch' man page here.
 #
-# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-08-18
+# Signed-off-by: Kevin Tian <kevin.tian@intel.com>, 2010-08-18
 # (this patch is licensed under GPLv2)
 
 diff --git a/man/Makefile.am b/man/Makefile.am
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-8.25/0001-uname-report-processor-and-hardware-correctly.patch b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-8.25/0001-uname-report-processor-and-hardware-correctly.patch
index c5f449f..3c43e1d 100644
--- a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-8.25/0001-uname-report-processor-and-hardware-correctly.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-8.25/0001-uname-report-processor-and-hardware-correctly.patch
@@ -1,4 +1,4 @@
-Upstream-Status: Rejected
+Upstream-Status: Denied
 
 Subject: uname: report processor and hardware correctly
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-8.25/disable-ls-output-quoting.patch b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-8.25/disable-ls-output-quoting.patch
new file mode 100644
index 0000000..e68c213
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils-8.25/disable-ls-output-quoting.patch
@@ -0,0 +1,49 @@
+Subject: revert inconsistent ls quoting
+
+This is a revert of upstream commit 109b9220cead6e979d22d16327c4d9f8350431cc.
+
+Bug-Debian: https://bugs.debian.org/813164
+
+Upstream-Status: Submitted
+
+Originally-by: Adam Borowski <kilobyte@angband.pl>
+[PG: patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813164#78 ]
+Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
+
+---
+
+--- coreutils-8.25.orig/NEWS
++++ coreutils-8.25/NEWS
+@@ -71,9 +71,6 @@ GNU coreutils NEWS
+   df now prefers sources towards the root of a device when
+   eliding duplicate bind mounted entries.
+ 
+-  ls now quotes file names unambiguously and appropriate for use in a shell,
+-  when outputting to a terminal.
+-
+   join, sort, uniq with --zero-terminated, now treat '\n' as a field delimiter.
+ 
+ ** Improvements
+--- coreutils-8.25.orig/doc/coreutils.texi
++++ coreutils-8.25/doc/coreutils.texi
+@@ -7750,8 +7750,8 @@ this"} in the default C locale.  This lo
+ 
+ You can specify the default value of the @option{--quoting-style} option
+ with the environment variable @env{QUOTING_STYLE}@.  If that environment
+-variable is not set, the default value is @samp{shell-escape} when the
+-output is a terminal, and @samp{literal} otherwise.
++variable is not set, the default value is @samp{literal}, but this
++default may change to @samp{shell} in a future version of this package.
+ 
+ @item --show-control-chars
+ @opindex --show-control-chars
+--- coreutils-8.25.orig/src/ls.c
++++ coreutils-8.25/src/ls.c
+@@ -1581,7 +1581,6 @@ decode_switches (int argc, char **argv)
+       if (isatty (STDOUT_FILENO))
+         {
+           format = many_per_line;
+-          set_quoting_style (NULL, shell_escape_quoting_style);
+           /* See description of qmark_funny_chars, above.  */
+           qmark_funny_chars = true;
+         }
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_6.9.bb b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_6.9.bb
index 9ce717d..35700a3 100644
--- a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_6.9.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_6.9.bb
@@ -88,6 +88,10 @@
 
 ALTERNATIVE_${PN} = "lbracket ${bindir_progs} ${base_bindir_progs} ${sbindir_progs}"
 
+ALTERNATIVE_${PN}-doc = "su.1 hostname.1"
+ALTERNATIVE_LINK_NAME[su.1] = "${mandir}/man1/su.1"
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
+
 ALTERNATIVE_PRIORITY[uptime] = "10"
 ALTERNATIVE_PRIORITY[hostname] = "10"
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_8.25.bb b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_8.25.bb
index 419a693..df6ad38 100644
--- a/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_8.25.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/coreutils/coreutils_8.25.bb
@@ -19,6 +19,7 @@
            file://fix-selinux-flask.patch \
            file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
            file://0001-uname-report-processor-and-hardware-correctly.patch \
+           file://disable-ls-output-quoting.patch \
           "
 
 SRC_URI[tarball.md5sum] = "070e43ba7f618d747414ef56ab248a48"
@@ -37,7 +38,8 @@
     ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'xattr', '', d)} \
 "
 
-PACKAGECONFIG_class-native ??= ""
+# The lib/oe/path.py requires xattr
+PACKAGECONFIG_class-native ??= "xattr"
 
 # with, without, depends, rdepends
 #
@@ -69,6 +71,15 @@
 	mkdir -p ${B}/src
 }
 
+do_install_class-native() {
+	autotools_do_install
+	# remove groups to fix conflict with shadow-native
+	rm -f ${D}${STAGING_BINDIR_NATIVE}/groups
+	# The return is a must since native doesn't need the
+	# do_install_append() in the below.
+	return
+}
+
 do_install_append() {
 	for i in df mktemp base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done
 
@@ -91,16 +102,13 @@
 	cp -a ${D}${mandir}/man1/test.1 ${D}${mandir}/man1/lbracket.1.${BPN}
 }
 
-do_install_append_class-native(){
-	# remove groups to fix conflict with shadow-native
-	rm -f ${D}${STAGING_BINDIR_NATIVE}/groups
-}
-
 inherit update-alternatives
 
 ALTERNATIVE_PRIORITY = "100"
 ALTERNATIVE_${PN} = "lbracket ${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base64 mktemp df"
-ALTERNATIVE_${PN}-doc = "base64.1 mktemp.1 df.1 lbracket.1 groups.1 kill.1 uptime.1 stat.1"
+ALTERNATIVE_${PN}-doc = "base64.1 mktemp.1 df.1 lbracket.1 groups.1 kill.1 uptime.1 stat.1  hostname.1"
+
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
 
 ALTERNATIVE_LINK_NAME[base64] = "${base_bindir}/base64"
 ALTERNATIVE_TARGET[base64] = "${bindir}/base64.${BPN}"
diff --git a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-glib.inc b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-glib.inc
index 4661e3a..55f710f 100644
--- a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-glib.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-glib.inc
@@ -15,7 +15,7 @@
            file://test-install-makefile.patch \
 "
 
-inherit autotools pkgconfig gettext bash-completion
+inherit autotools pkgconfig gettext bash-completion gtk-doc
 
 #default disable regression tests, some unit test code in non testing code
 #PACKAGECONFIG_pn-${PN} = "tests" enable regression tests local.conf
diff --git a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-test_1.10.10.bb b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-test_1.10.10.bb
new file mode 100644
index 0000000..650b7ab
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-test_1.10.10.bb
@@ -0,0 +1,58 @@
+SUMMARY = "D-Bus test package (for D-bus functionality testing only)"
+HOMEPAGE = "http://dbus.freedesktop.org"
+SECTION = "base"
+LICENSE = "AFL-2 | GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
+                    file://dbus/dbus.h;beginline=6;endline=20;md5=7755c9d7abccd5dbd25a6a974538bb3c"
+
+DEPENDS = "dbus glib-2.0"
+
+RDEPENDS_${PN} += "make"
+RDEPENDS_${PN}-dev = ""
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
+           file://tmpdir.patch \
+           file://run-ptest \
+           file://python-config.patch \
+           file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
+           "
+
+SRC_URI[md5sum] = "495676d240eb982921b3ad1343526849"
+SRC_URI[sha256sum] = "9d8f1d069ab4d1a0255d7b400ea3bcef4430c42e729b1012abb2890e3f739a43"
+
+S="${WORKDIR}/dbus-${PV}"
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/dbus:"
+
+inherit autotools pkgconfig gettext ptest upstream-version-is-even
+
+EXTRA_OECONF_X = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '--with-x', '--without-x', d)}"
+EXTRA_OECONF_X_class-native = "--without-x"
+
+EXTRA_OECONF = "--enable-tests \
+                --enable-modular-tests \
+                --enable-installed-tests \
+                --enable-checks \
+                --enable-asserts \
+                --enable-verbose-mode \
+                --disable-xml-docs \
+                --disable-doxygen-docs \
+                --disable-libaudit \
+                --disable-systemd \
+                --without-systemdsystemunitdir \
+                --with-dbus-test-dir=${PTEST_PATH} \
+                ${EXTRA_OECONF_X}"
+
+do_install() {
+    :
+}
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/test
+	l="shell printf refs syslog marshal syntax corrupt dbus-daemon dbus-daemon-eavesdrop loopback relay"
+	for i in $l; do install ${B}/test/.libs/test-$i ${D}${PTEST_PATH}/test; done
+	l="bus bus-system bus-launch-helper"
+	for i in $l; do install ${B}/bus/.libs/test-$i ${D}${PTEST_PATH}/test; done
+	install ${B}/dbus/.libs/test-dbus ${D}${PTEST_PATH}/test
+	cp -r ${B}/test/data ${D}${PTEST_PATH}/test
+}
+RDEPENDS_${PN}-ptest += "bash"
diff --git a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-test_1.10.6.bb b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-test_1.10.6.bb
deleted file mode 100644
index a768a09..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus-test_1.10.6.bb
+++ /dev/null
@@ -1,61 +0,0 @@
-SUMMARY = "D-Bus test package (for D-bus functionality testing only)"
-HOMEPAGE = "http://dbus.freedesktop.org"
-SECTION = "base"
-LICENSE = "AFL-2 | GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
-                    file://dbus/dbus.h;beginline=6;endline=20;md5=7755c9d7abccd5dbd25a6a974538bb3c"
-
-DEPENDS = "python-pygobject dbus"
-
-RDEPENDS_${PN} += "make"
-RDEPENDS_${PN}-dev = ""
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
-           file://tmpdir.patch \
-           file://dbus-1.init  \
-           file://run-ptest \
-           file://python-config.patch \
-           file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
-           "
-
-SRC_URI[md5sum] = "26d0cf3a1c9782cb0e342101f0450440"
-SRC_URI[sha256sum] = "b5fefa08a77edd76cd64d872db949eebc02cf6f3f8be82e4bbc641742af5d35f"
-
-S="${WORKDIR}/dbus-${PV}"
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/dbus:"
-
-inherit autotools pkgconfig gettext ptest upstream-version-is-even
-
-EXTRA_OECONF_X = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '--with-x', '--without-x', d)}"
-EXTRA_OECONF_X_class-native = "--without-x"
-
-EXTRA_OECONF = "--enable-tests \
-                --enable-modular-tests \
-                --enable-installed-tests \
-                --enable-checks \
-                --enable-asserts \
-                --enable-verbose-mode \
-                --disable-xml-docs \
-                --disable-doxygen-docs \
-                --disable-libaudit \
-                --disable-systemd \
-                --without-systemdsystemunitdir \
-                --with-dbus-test-dir=${PTEST_PATH} \
-                ${EXTRA_OECONF_X}"
-
-do_install() {
-    :
-}
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/test
-	case1="shell printf refs syslog"
-	for i in ${case1}; do install ${B}/test/test-$i ${D}${PTEST_PATH}/test; done
-	case2="marshal syntax corrupt dbus-daemon dbus-daemon-eavesdrop loopback relay"
-	for i in ${case2}; do install ${B}/test/.libs/test-$i ${D}${PTEST_PATH}/test; done
-	case3="bus bus-system bus-launch-helper"
-	for i in ${case3}; do install ${B}/bus/test-$i ${D}${PTEST_PATH}/test; done
-	install ${B}/dbus/test-dbus ${D}${PTEST_PATH}/test
-	cp -r ${B}/test/data ${D}${PTEST_PATH}/test
-}
-RDEPENDS_${PN}-ptest += "bash"
diff --git a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus/0001-configure.ac-explicitely-check-stdint.h.patch b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus/0001-configure.ac-explicitely-check-stdint.h.patch
new file mode 100644
index 0000000..85acb7b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus/0001-configure.ac-explicitely-check-stdint.h.patch
@@ -0,0 +1,38 @@
+From 1bfde222926be624a30a6e4b2cdc2c5064a36298 Mon Sep 17 00:00:00 2001
+From: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
+Date: Fri, 29 Jul 2016 01:19:37 +0300
+Subject: [PATCH] configure.ac: explicitely check stdint.h
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Otherwise HAVE_STDINT_H will not be defined or the var will not be
+picked up from cache so builds could fail with errors like:
+| ../../dbus-1.10.8/dbus/dbus-internals.h:239:8: error: ‘uintptr_t’ undeclared (first use in this function)
+
+Signed-off-by: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
+[smcv: fix Autoconf underquoting]
+Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
+
+Upstream-Status: Backport [from dbus-1.10]
+
+---
+ configure.ac | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index cf5c5b9..a228d63 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -699,6 +699,8 @@ AC_CHECK_HEADERS(byteswap.h)
+ 
+ AC_CHECK_HEADERS(unistd.h)
+ 
++AC_CHECK_HEADERS([stdint.h])
++
+ AC_CHECK_HEADERS(ws2tcpip.h)
+ 
+ AC_CHECK_HEADERS(alloca.h)
+-- 
+2.9.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus/0001-configure.ac-support-large-file-for-stat64.patch b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus/0001-configure.ac-support-large-file-for-stat64.patch
deleted file mode 100644
index c6eac2b..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus/0001-configure.ac-support-large-file-for-stat64.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From e18bd3a571be716d90bedc835a014472470ae7bd Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 30 Dec 2015 10:58:39 +0800
-Subject: [PATCH] configure.ac: support large-file for stat64
-
-While starting dbus-daemon on a 32-bit linux host and it invokes
-fstat to load /etc/dbus-1/system.conf through NFS. If system.conf
-was created with a large indoe number on 64-bit host. The above
-fstat invoking failed. Here is the log of strace:
-............
-$ ls -i /etc/dbus-1/system.conf
-53778558109 /etc/dbus-1/system.conf
-
-$ strace /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
-|open("/etc/dbus-1/system.conf", O_RDONLY) = 4
-|fstat64(4, {st_mode=S_IFREG|0644, st_size=3340, ...}) = 0
-|close(4) = 0
-|close(3) = 0
-|write(2, "Failed to start message bus: Fai"..., 109Failed to start message bus:
-Failed to stat "/etc/dbus-1/system.conf": Value too large for defined data type
-|) = 109
-|exit_group(1) = ?
-|+++ exited with 1 +++
-............
-
-In this situation, we should support large-file for stat64. Add marco
-AC_SYS_LARGEFILE to do the detection at configure time. It can be disabled
-by configuring with the `--disable-largefile' option.
-
-Upstream-Status: Backport
-
-Bug: https://bugs.freedesktop.org/show_bug.cgi?id=93545
-https://bugs.freedesktop.org/attachment.cgi?id=120747
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/configure.ac b/configure.ac
-index 82806ba..cb5a60b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -64,6 +64,7 @@ AC_SUBST(DBUS_VERSION)
- AC_PROG_CC
- AM_PROG_CC_C_O
- AC_PROG_CXX
- AC_USE_SYSTEM_EXTENSIONS
-+AC_SYS_LARGEFILE
- AC_ISC_POSIX
- AC_HEADER_STDC
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus_1.10.10.bb b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus_1.10.10.bb
new file mode 100644
index 0000000..4db0b9b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus_1.10.10.bb
@@ -0,0 +1,181 @@
+SUMMARY = "D-Bus message bus"
+DESCRIPTION = "D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a \"single instance\" application or daemon, and to launch applications and daemons on demand when their services are needed."
+HOMEPAGE = "http://dbus.freedesktop.org"
+SECTION = "base"
+LICENSE = "AFL-2 | GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
+                    file://dbus/dbus.h;beginline=6;endline=20;md5=7755c9d7abccd5dbd25a6a974538bb3c"
+DEPENDS = "expat virtual/libintl"
+RDEPENDS_dbus_class-native = ""
+RDEPENDS_dbus_class-nativesdk = ""
+PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${PN}-ptest', '', d)}"
+ALLOW_EMPTY_dbus-ptest = "1"
+RDEPENDS_dbus-ptest_class-target = "dbus-test-ptest"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
+           file://tmpdir.patch \
+           file://dbus-1.init \
+           file://os-test.patch \
+           file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
+           file://0001-configure.ac-explicitely-check-stdint.h.patch \
+"
+
+SRC_URI[md5sum] = "495676d240eb982921b3ad1343526849"
+SRC_URI[sha256sum] = "9d8f1d069ab4d1a0255d7b400ea3bcef4430c42e729b1012abb2890e3f739a43"
+
+inherit useradd autotools pkgconfig gettext update-rc.d upstream-version-is-even
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "start 02 5 3 2 . stop 20 0 1 6 ."
+
+python __anonymous() {
+    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+}
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "-r netdev"
+USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \
+                       --no-create-home --shell /bin/false \
+                       --user-group messagebus"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+DEBIANNAME_${PN} = "dbus-1"
+
+PACKAGES =+ "${PN}-lib"
+
+OLDPKGNAME = "dbus-x11"
+OLDPKGNAME_class-nativesdk = ""
+
+# for compatibility
+RPROVIDES_${PN} = "${OLDPKGNAME}"
+RREPLACES_${PN} += "${OLDPKGNAME}"
+
+FILES_${PN} = "${bindir}/dbus-daemon* \
+               ${bindir}/dbus-uuidgen \
+               ${bindir}/dbus-cleanup-sockets \
+               ${bindir}/dbus-send \
+               ${bindir}/dbus-monitor \
+               ${bindir}/dbus-launch \
+               ${bindir}/dbus-run-session \
+               ${bindir}/dbus-update-activation-environment \
+               ${libexecdir}/dbus* \
+               ${sysconfdir} \
+               ${localstatedir} \
+               ${datadir}/dbus-1/services \
+               ${datadir}/dbus-1/system-services \
+               ${datadir}/dbus-1/session.d \
+               ${datadir}/dbus-1/session.conf \
+               ${datadir}/dbus-1/system.d \
+               ${datadir}/dbus-1/system.conf \
+               ${systemd_system_unitdir} \
+               ${systemd_user_unitdir} \
+"
+FILES_${PN}-lib = "${libdir}/lib*.so.*"
+RRECOMMENDS_${PN}-lib = "${PN}"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-test-tool"
+
+pkg_postinst_dbus() {
+	# If both systemd and sysvinit are enabled, mask the dbus-1 init script
+        if ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','true','false',d)}; then
+		if [ -n "$D" ]; then
+			OPTS="--root=$D"
+		fi
+		systemctl $OPTS mask dbus-1.service
+	fi
+
+	if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
+		/etc/init.d/populate-volatile.sh update
+	fi
+}
+
+EXTRA_OECONF = "--disable-tests \
+                --disable-xml-docs \
+                --disable-doxygen-docs \
+                --disable-libaudit \
+                "
+
+EXTRA_OECONF_append_class-native = " --disable-selinux"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG_class-native = ""
+PACKAGECONFIG_class-nativesdk = ""
+
+PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_system_unitdir},--disable-systemd --without-systemdsystemunitdir,systemd"
+PACKAGECONFIG[x11] = "--with-x --enable-x11-autolaunch,--without-x --disable-x11-autolaunch, virtual/libx11 libsm"
+PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
+PACKAGECONFIG[user-session] = "--enable-user-session --with-systemduserunitdir=${systemd_user_unitdir},--disable-user-session"
+
+do_install() {
+	autotools_do_install
+
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+		install -d ${D}${sysconfdir}/init.d
+		sed 's:@bindir@:${bindir}:' < ${WORKDIR}/dbus-1.init >${WORKDIR}/dbus-1.init.sh
+		install -m 0755 ${WORKDIR}/dbus-1.init.sh ${D}${sysconfdir}/init.d/dbus-1
+	fi
+
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+		for i in dbus.target.wants sockets.target.wants multi-user.target.wants; do \
+			install -d ${D}${systemd_system_unitdir}/$i; done
+		install -m 0644 ${B}/bus/dbus.service ${B}/bus/dbus.socket ${D}${systemd_system_unitdir}/
+		cd ${D}${systemd_system_unitdir}/dbus.target.wants/
+		ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/dbus.target.wants/dbus.socket
+		ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/sockets.target.wants/dbus.socket
+		ln -fs ../dbus.service ${D}${systemd_system_unitdir}/multi-user.target.wants/dbus.service
+	fi
+
+	install -d ${D}${sysconfdir}/default/volatiles
+	echo "d messagebus messagebus 0755 ${localstatedir}/run/dbus none" \
+	     > ${D}${sysconfdir}/default/volatiles/99_dbus
+
+
+	mkdir -p ${D}${localstatedir}/lib/dbus
+
+	chown messagebus:messagebus ${D}${localstatedir}/lib/dbus
+
+	chown root:messagebus ${D}${libexecdir}/dbus-daemon-launch-helper
+	chmod 4755 ${D}${libexecdir}/dbus-daemon-launch-helper
+
+	# Remove Red Hat initscript
+	rm -rf ${D}${sysconfdir}/rc.d
+
+	# Remove empty testexec directory as we don't build tests
+	rm -rf ${D}${libdir}/dbus-1.0/test
+
+	# Remove /var/run as it is created on startup
+	rm -rf ${D}${localstatedir}/run
+}
+
+do_install_class-native() {
+	autotools_do_install
+
+	# for dbus-glib-native introspection generation
+	install -d ${D}${STAGING_DATADIR_NATIVE}/dbus/
+	# N.B. is below install actually required?
+	install -m 0644 bus/session.conf ${D}${STAGING_DATADIR_NATIVE}/dbus/session.conf
+
+	# dbus-glib-native and dbus-glib need this xml file
+	./bus/dbus-daemon --introspect > ${D}${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml
+	
+	# dbus-launch has no X support so lets not install it in case the host
+	# has a more featured and useful version
+	rm -f ${D}${bindir}/dbus-launch
+}
+
+do_install_class-nativesdk() {
+	autotools_do_install
+
+	# dbus-launch has no X support so lets not install it in case the host
+	# has a more featured and useful version
+	rm -f ${D}${bindir}/dbus-launch
+
+	# Remove /var/run to avoid QA error
+	rm -rf ${D}${localstatedir}/run
+}
+BBCLASSEXTEND = "native nativesdk"
+
+INSANE_SKIP_${PN}-ptest += "build-deps"
diff --git a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus_1.10.6.bb b/import-layers/yocto-poky/meta/recipes-core/dbus/dbus_1.10.6.bb
deleted file mode 100644
index 245798a..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/dbus/dbus_1.10.6.bb
+++ /dev/null
@@ -1,181 +0,0 @@
-SUMMARY = "D-Bus message bus"
-DESCRIPTION = "D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a \"single instance\" application or daemon, and to launch applications and daemons on demand when their services are needed."
-HOMEPAGE = "http://dbus.freedesktop.org"
-SECTION = "base"
-LICENSE = "AFL-2 | GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
-                    file://dbus/dbus.h;beginline=6;endline=20;md5=7755c9d7abccd5dbd25a6a974538bb3c"
-DEPENDS = "expat virtual/libintl"
-RDEPENDS_dbus_class-native = ""
-RDEPENDS_dbus_class-nativesdk = ""
-PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${PN}-ptest', '', d)}"
-ALLOW_EMPTY_dbus-ptest = "1"
-RDEPENDS_dbus-ptest_class-target = "dbus-test-ptest"
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
-           file://tmpdir.patch \
-           file://dbus-1.init \
-           file://os-test.patch \
-           file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
-           file://0001-configure.ac-support-large-file-for-stat64.patch \
-"
-
-SRC_URI[md5sum] = "26d0cf3a1c9782cb0e342101f0450440"
-SRC_URI[sha256sum] = "b5fefa08a77edd76cd64d872db949eebc02cf6f3f8be82e4bbc641742af5d35f"
-
-inherit useradd autotools pkgconfig gettext update-rc.d upstream-version-is-even
-
-INITSCRIPT_NAME = "dbus-1"
-INITSCRIPT_PARAMS = "start 02 5 3 2 . stop 20 0 1 6 ."
-
-python __anonymous() {
-    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
-        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r netdev"
-USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \
-                       --no-create-home --shell /bin/false \
-                       --user-group messagebus"
-
-CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
-
-DEBIANNAME_${PN} = "dbus-1"
-
-PACKAGES =+ "${PN}-lib"
-
-OLDPKGNAME = "dbus-x11"
-OLDPKGNAME_class-nativesdk = ""
-
-# for compatibility
-RPROVIDES_${PN} = "${OLDPKGNAME}"
-RREPLACES_${PN} += "${OLDPKGNAME}"
-
-FILES_${PN} = "${bindir}/dbus-daemon* \
-               ${bindir}/dbus-uuidgen \
-               ${bindir}/dbus-cleanup-sockets \
-               ${bindir}/dbus-send \
-               ${bindir}/dbus-monitor \
-               ${bindir}/dbus-launch \
-               ${bindir}/dbus-run-session \
-               ${bindir}/dbus-update-activation-environment \
-               ${libexecdir}/dbus* \
-               ${sysconfdir} \
-               ${localstatedir} \
-               ${datadir}/dbus-1/services \
-               ${datadir}/dbus-1/system-services \
-               ${datadir}/dbus-1/session.d \
-               ${datadir}/dbus-1/session.conf \
-               ${datadir}/dbus-1/system.d \
-               ${datadir}/dbus-1/system.conf \
-               ${systemd_system_unitdir} \
-               ${systemd_user_unitdir} \
-"
-FILES_${PN}-lib = "${libdir}/lib*.so.*"
-RRECOMMENDS_${PN}-lib = "${PN}"
-FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-test-tool"
-
-pkg_postinst_dbus() {
-	# If both systemd and sysvinit are enabled, mask the dbus-1 init script
-        if ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','true','false',d)}; then
-		if [ -n "$D" ]; then
-			OPTS="--root=$D"
-		fi
-		systemctl $OPTS mask dbus-1.service
-	fi
-
-	if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
-		/etc/init.d/populate-volatile.sh update
-	fi
-}
-
-EXTRA_OECONF = "--disable-tests \
-                --disable-xml-docs \
-                --disable-doxygen-docs \
-                --disable-libaudit \
-                "
-
-EXTRA_OECONF_append_class-native = " --disable-selinux"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
-PACKAGECONFIG_class-native = ""
-PACKAGECONFIG_class-nativesdk = ""
-
-PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_system_unitdir},--disable-systemd --without-systemdsystemunitdir,systemd"
-PACKAGECONFIG[x11] = "--with-x --enable-x11-autolaunch,--without-x --disable-x11-autolaunch, virtual/libx11 libsm"
-PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
-PACKAGECONFIG[user-session] = "--enable-user-session --with-systemduserunitdir=${systemd_user_unitdir},--disable-user-session"
-
-do_install() {
-	autotools_do_install
-
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-		install -d ${D}${sysconfdir}/init.d
-		sed 's:@bindir@:${bindir}:' < ${WORKDIR}/dbus-1.init >${WORKDIR}/dbus-1.init.sh
-		install -m 0755 ${WORKDIR}/dbus-1.init.sh ${D}${sysconfdir}/init.d/dbus-1
-	fi
-
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-		for i in dbus.target.wants sockets.target.wants multi-user.target.wants; do \
-			install -d ${D}${systemd_system_unitdir}/$i; done
-		install -m 0644 ${B}/bus/dbus.service ${B}/bus/dbus.socket ${D}${systemd_system_unitdir}/
-		cd ${D}${systemd_system_unitdir}/dbus.target.wants/
-		ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/dbus.target.wants/dbus.socket
-		ln -fs ../dbus.socket ${D}${systemd_system_unitdir}/sockets.target.wants/dbus.socket
-		ln -fs ../dbus.service ${D}${systemd_system_unitdir}/multi-user.target.wants/dbus.service
-	fi
-
-	install -d ${D}${sysconfdir}/default/volatiles
-	echo "d messagebus messagebus 0755 ${localstatedir}/run/dbus none" \
-	     > ${D}${sysconfdir}/default/volatiles/99_dbus
-
-
-	mkdir -p ${D}${localstatedir}/lib/dbus
-
-	chown messagebus:messagebus ${D}${localstatedir}/lib/dbus
-
-	chown root:messagebus ${D}${libexecdir}/dbus-daemon-launch-helper
-	chmod 4755 ${D}${libexecdir}/dbus-daemon-launch-helper
-
-	# Remove Red Hat initscript
-	rm -rf ${D}${sysconfdir}/rc.d
-
-	# Remove empty testexec directory as we don't build tests
-	rm -rf ${D}${libdir}/dbus-1.0/test
-
-	# Remove /var/run as it is created on startup
-	rm -rf ${D}${localstatedir}/run
-}
-
-do_install_class-native() {
-	autotools_do_install
-
-	# for dbus-glib-native introspection generation
-	install -d ${D}${STAGING_DATADIR_NATIVE}/dbus/
-	# N.B. is below install actually required?
-	install -m 0644 bus/session.conf ${D}${STAGING_DATADIR_NATIVE}/dbus/session.conf
-
-	# dbus-glib-native and dbus-glib need this xml file
-	./bus/dbus-daemon --introspect > ${D}${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml
-	
-	# dbus-launch has no X support so lets not install it in case the host
-	# has a more featured and useful version
-	rm -f ${D}${bindir}/dbus-launch
-}
-
-do_install_class-nativesdk() {
-	autotools_do_install
-
-	# dbus-launch has no X support so lets not install it in case the host
-	# has a more featured and useful version
-	rm -f ${D}${bindir}/dbus-launch
-
-	# Remove /var/run to avoid QA error
-	rm -rf ${D}${localstatedir}/run
-}
-BBCLASSEXTEND = "native nativesdk"
-
-INSANE_SKIP_${PN}-ptest += "build-deps"
diff --git a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear.inc b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear.inc
index 1dce2a5..bda7eb8 100644
--- a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear.inc
@@ -17,6 +17,7 @@
            file://0003-configure.patch \
            file://0004-fix-2kb-keys.patch \
            file://0007-dropbear-fix-for-x32-abi.patch \
+           file://fix-libtomcrypt-libtommath-ordering.patch \
            file://init \
            file://dropbearkey.service \
            file://dropbear@.service \
@@ -44,9 +45,12 @@
 SBINCOMMANDS = "dropbear dropbearkey dropbearconvert"
 BINCOMMANDS = "dbclient ssh scp"
 EXTRA_OEMAKE = 'MULTI=1 SCPPROGRESS=1 PROGRAMS="${SBINCOMMANDS} ${BINCOMMANDS}"'
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[system-libtom] = "--disable-bundled-libtom,--enable-bundled-libtom,libtommath libtomcrypt"
+
 EXTRA_OECONF += "\
  ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}"
-CFLAGS += "-DSFTPSERVER_PATH=\\"${libdir}/openssh/sftp-server\\""
 
 do_install() {
 	install -d ${D}${sysconfdir} \
diff --git a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch
index b450121..60b302b 100644
--- a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch
@@ -10,7 +10,7 @@
 2013/05/23
 Received this fix from H J Lu.
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 
 # HG changeset patch
 # User H.J. Lu <hjl.tools@gmail.com>
diff --git a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/fix-libtomcrypt-libtommath-ordering.patch b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/fix-libtomcrypt-libtommath-ordering.patch
new file mode 100644
index 0000000..de930f2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/fix-libtomcrypt-libtommath-ordering.patch
@@ -0,0 +1,48 @@
+From 2fd8d2aedad0c50cdf1e43edd2387874b720ad4c Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Fri, 16 Sep 2016 12:18:23 -0700
+Subject: [PATCH] fix libtomcrypt/libtommath ordering
+
+To prevent build failures when using system libtom libraries and
+linking with --as-needed, LIBTOM_LIBS should be in the order
+-ltomcrypt -ltommath, not the other way around, ie libs should be
+prepended to LIBTOM_LIBS as they are found, not appended.
+
+Note that LIBTOM_LIBS is not used when linking with the bundled
+libtom libs.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ configure.ac | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b6abe4c..85bb8bc 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -390,16 +390,16 @@ AC_ARG_ENABLE(bundled-libtom,
+ 			AC_MSG_NOTICE(Forcing bundled libtom*)
+ 		else
+ 			BUNDLED_LIBTOM=0
+-			AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="$LIBTOM_LIBS -ltommath", 
++			AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="-ltommath $LIBTOM_LIBS",
+ 				[AC_MSG_ERROR([Missing system libtommath and --disable-bundled-libtom was specified])] )
+-			AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="$LIBTOM_LIBS -ltomcrypt", 
++			AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="-ltomcrypt $LIBTOM_LIBS",
+ 				[AC_MSG_ERROR([Missing system libtomcrypt and --disable-bundled-libtom was specified])] )
+ 		fi
+ 	],
+ 	[
+ 		BUNDLED_LIBTOM=0
+-		AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="$LIBTOM_LIBS -ltommath", BUNDLED_LIBTOM=1)
+-		AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="$LIBTOM_LIBS -ltomcrypt", BUNDLED_LIBTOM=1)
++		AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="-ltommath $LIBTOM_LIBS", BUNDLED_LIBTOM=1)
++		AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="-ltomcrypt $LIBTOM_LIBS", BUNDLED_LIBTOM=1)
+ 	]
+ )
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/init b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/init
index e8fed3f..434bd6b 100755
--- a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/init
+++ b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/init
@@ -62,13 +62,13 @@
         if [ -f "$DROPBEAR_RSAKEY" -a ! -s "$DROPBEAR_RSAKEY" ]; then
                 rm $DROPBEAR_RSAKEY || true
         fi
-        test -f $DROPBEAR_RSAKEY || dropbearkey -t rsa -f $DROPBEAR_RSAKEY
+        test -f $DROPBEAR_RSAKEY || dropbearkey -t rsa -f $DROPBEAR_RSAKEY $DROPBEAR_RSAKEY_ARGS
 	;;
     dsa)
         if [ -f "$DROPBEAR_DSSKEY" -a ! -s "$DROPBEAR_DSSKEY" ]; then
                 rm $DROPBEAR_DSSKEY || true
         fi
-        test -f $DROPBEAR_DSSKEY || dropbearkey -t dss -f $DROPBEAR_DSSKEY
+        test -f $DROPBEAR_DSSKEY || dropbearkey -t dss -f $DROPBEAR_DSSKEY $DROPBEAR_DSSKEY_ARGS
 	;;
   esac
 done
diff --git a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/support-out-of-tree-builds.patch b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/support-out-of-tree-builds.patch
new file mode 100644
index 0000000..df6efb4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear/support-out-of-tree-builds.patch
@@ -0,0 +1,43 @@
+From: =?UTF-8?q?Henrik=20Nordstr=C3=B6m?= <henrik@knc.nu>
+Date: Wed, 11 May 2016 12:35:06 +0200
+Subject: [PATCH] Support out-of-tree builds usign bundled libtom
+
+When building out-of-tree we need both source and generated
+folders in include paths to find both distributed and generated
+headers.
+
+
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Backport
+---
+ libtomcrypt/Makefile.in | 2 +-
+ libtommath/Makefile.in  | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libtomcrypt/Makefile.in b/libtomcrypt/Makefile.in
+index 3056ef0..7970700 100644
+--- a/libtomcrypt/Makefile.in
++++ b/libtomcrypt/Makefile.in
+@@ -19,7 +19,7 @@ srcdir=@srcdir@
+ 
+ # Compilation flags. Note the += does not write over the user's CFLAGS!
+ # The rest of the flags come from the parent Dropbear makefile
+-CFLAGS += -c -I$(srcdir)/src/headers/ -I$(srcdir)/../ -DLTC_SOURCE -I$(srcdir)/../libtommath/
++CFLAGS += -c -Isrc/headers/ -I$(srcdir)/src/headers/ -I../ -I$(srcdir)/../ -DLTC_SOURCE -I../libtommath/ -I$(srcdir)/../libtommath/
+ 
+ # additional warnings (newer GCC 3.4 and higher)
+ ifdef GCC_34
+diff --git a/libtommath/Makefile.in b/libtommath/Makefile.in
+index 06aba68..019c50b 100644
+--- a/libtommath/Makefile.in
++++ b/libtommath/Makefile.in
+@@ -9,7 +9,7 @@ VPATH=@srcdir@
+ srcdir=@srcdir@
+ 
+ # So that libtommath can include Dropbear headers for options and m_burn()
+-CFLAGS += -I$(srcdir)/../libtomcrypt/src/headers/ -I$(srcdir)/../
++CFLAGS += -I. -I$(srcdir) -I../libtomcrypt/src/headers/ -I$(srcdir)/../libtomcrypt/src/headers/ -I../ -I$(srcdir)/../
+ 
+ ifndef IGNORE_SPEED
+ 
diff --git a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear_2015.71.bb b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear_2015.71.bb
deleted file mode 100644
index 6332579..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear_2015.71.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require dropbear.inc
-
-SRC_URI[md5sum] = "2ccc0a2f3e37ca221db12c5af6a88137"
-SRC_URI[sha256sum] = "376214169c0e187ee9f48ae1a99b3f835016ad5b98ede4bfd1cf581deba783af"
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear_2016.74.bb b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear_2016.74.bb
new file mode 100644
index 0000000..a702097
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/dropbear/dropbear_2016.74.bb
@@ -0,0 +1,7 @@
+require dropbear.inc
+
+SRC_URI += "file://support-out-of-tree-builds.patch"
+
+SRC_URI[md5sum] = "9ad0172731e0f16623937804643b5bd8"
+SRC_URI[sha256sum] = "2720ea54ed009af812701bcc290a2a601d5c107d12993e5d92c0f5f81f718891"
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/expat/expat-2.1.0/autotools.patch b/import-layers/yocto-poky/meta/recipes-core/expat/expat-2.1.0/autotools.patch
deleted file mode 100644
index 0e59969..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/expat/expat-2.1.0/autotools.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Avoid using expat's m4 files
-
-Upstream-Status: Inappropriate [Other]
-Workaround specific to our build system.
-
-Signed-off-by: Kevin Tian <kevin.tian@intel.com>
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
-Updated to apply over expat 2.1.0
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-
-diff -Nurd expat-2.1.0/configure.in expat-2.1.0/configure.in
---- expat-2.1.0/configure.in	2012-03-04 01:45:53.000000000 +0200
-+++ expat-2.1.0/configure.in	2012-05-10 21:04:44.000000000 +0300
-@@ -51,8 +51,6 @@
- 
- AC_CONFIG_HEADER(expat_config.h)
- 
--sinclude(conftools/ac_c_bigendian_cross.m4)
--
- AC_LIBTOOL_WIN32_DLL
- AC_PROG_LIBTOOL
- 
diff --git a/import-layers/yocto-poky/meta/recipes-core/expat/expat-2.1.0/expat-CVE-2015-1283.patch b/import-layers/yocto-poky/meta/recipes-core/expat/expat-2.1.0/expat-CVE-2015-1283.patch
deleted file mode 100644
index 1d0acb6..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/expat/expat-2.1.0/expat-CVE-2015-1283.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Multiple integer overflows in the XML_GetBuffer function in Expat 
-through 2.1.0, allow remote attackers to cause a denial of service 
-(heap-based buffer overflow) or possibly have unspecified other 
-impact via crafted XML data.
-
-CVSSv2:  (AV:N/AC:M/Au:N/C:P/I:P/A:P)
-
-CVE: CVE-2015-1283
-Upstream-Status: Backport
-
-Signed-off-by: Eric Rahm <erahm@mozilla.com>
-Signed-off-by: Zhixiong Chi <zhixiong.chi@windirver.com>
-
-Index: expat-2.1.0/lib/xmlparse.c
-===================================================================
---- expat-2.1.0.orig/lib/xmlparse.c	2012-03-11 13:13:12.000000000 +0800
-+++ expat-2.1.0/lib/xmlparse.c	2015-12-23 10:29:07.347361329 +0800
-@@ -1678,6 +1678,12 @@
- void * XMLCALL
- XML_GetBuffer(XML_Parser parser, int len)
- {
-+/* BEGIN MOZILLA CHANGE (sanity check len) */
-+  if (len < 0) {
-+    errorCode = XML_ERROR_NO_MEMORY;
-+    return NULL;
-+  }
-+/* END MOZILLA CHANGE */
-   switch (ps_parsing) {
-   case XML_SUSPENDED:
-     errorCode = XML_ERROR_SUSPENDED;
-@@ -1689,8 +1695,13 @@
-   }
- 
-   if (len > bufferLim - bufferEnd) {
--    /* FIXME avoid integer overflow */
-     int neededSize = len + (int)(bufferEnd - bufferPtr);
-+/* BEGIN MOZILLA CHANGE (sanity check neededSize) */
-+    if (neededSize < 0) {
-+      errorCode = XML_ERROR_NO_MEMORY;
-+      return NULL;
-+    }
-+/* END MOZILLA CHANGE */
- #ifdef XML_CONTEXT_BYTES
-     int keep = (int)(bufferPtr - buffer);
- 
-@@ -1719,7 +1730,15 @@
-         bufferSize = INIT_BUFFER_SIZE;
-       do {
-         bufferSize *= 2;
--      } while (bufferSize < neededSize);
-+/* BEGIN MOZILLA CHANGE (prevent infinite loop on overflow) */
-+      } while (bufferSize < neededSize && bufferSize > 0);
-+/* END MOZILLA CHANGE */
-+/* BEGIN MOZILLA CHANGE (sanity check bufferSize) */
-+      if (bufferSize <= 0) {
-+        errorCode = XML_ERROR_NO_MEMORY;
-+        return NULL;
-+      }
-+/* END MOZILLA CHANGE */
-       newBuf = (char *)MALLOC(bufferSize);
-       if (newBuf == 0) {
-         errorCode = XML_ERROR_NO_MEMORY;
diff --git a/import-layers/yocto-poky/meta/recipes-core/expat/expat.inc b/import-layers/yocto-poky/meta/recipes-core/expat/expat.inc
index 4bd60a2..fe9d7e7 100644
--- a/import-layers/yocto-poky/meta/recipes-core/expat/expat.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/expat/expat.inc
@@ -4,9 +4,8 @@
 SECTION = "libs"
 LICENSE = "MIT"
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/expat/expat-${PV}.tar.gz \
+SRC_URI = "${SOURCEFORGE_MIRROR}/expat/expat-${PV}.tar.bz2 \
            file://autotools.patch \
-           file://expat-CVE-2015-1283.patch \
 	  "
 
 inherit autotools lib_package gzipnative
diff --git a/import-layers/yocto-poky/meta/recipes-core/expat/expat/autotools.patch b/import-layers/yocto-poky/meta/recipes-core/expat/expat/autotools.patch
new file mode 100644
index 0000000..3d3c5ba
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/expat/expat/autotools.patch
@@ -0,0 +1,24 @@
+Avoid using expat's m4 files
+
+Upstream-Status: Inappropriate [Other]
+Workaround specific to our build system.
+
+Signed-off-by: Kevin Tian <kevin.tian@intel.com>
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+
+Updated to apply over expat 2.1.0
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+
+diff -Nurd expat-2.1.0/configure.in expat-2.1.0/configure.in
+--- expat-2.1.0/configure.ac	2012-03-04 01:45:53.000000000 +0200
++++ expat-2.1.0/configure.ac	2012-05-10 21:04:44.000000000 +0300
+@@ -51,8 +51,6 @@
+ 
+ AC_CONFIG_HEADER(expat_config.h)
+ 
+-sinclude(conftools/ac_c_bigendian_cross.m4)
+-
+ AC_LIBTOOL_WIN32_DLL
+ AC_PROG_LIBTOOL
+ 
diff --git a/import-layers/yocto-poky/meta/recipes-core/expat/expat_2.1.0.bb b/import-layers/yocto-poky/meta/recipes-core/expat/expat_2.1.0.bb
deleted file mode 100644
index b958742..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/expat/expat_2.1.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require expat.inc
-LIC_FILES_CHKSUM = "file://COPYING;md5=1b71f681713d1256e1c23b0890920874"
-
-SRC_URI[md5sum] = "dd7dab7a5fea97d2a6a43f511449b7cd"
-SRC_URI[sha256sum] = "823705472f816df21c8f6aa026dd162b280806838bb55b3432b0fb1fcca7eb86"
diff --git a/import-layers/yocto-poky/meta/recipes-core/expat/expat_2.2.0.bb b/import-layers/yocto-poky/meta/recipes-core/expat/expat_2.2.0.bb
new file mode 100644
index 0000000..ef21a11
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/expat/expat_2.2.0.bb
@@ -0,0 +1,5 @@
+require expat.inc
+LIC_FILES_CHKSUM = "file://COPYING;md5=9c3ee559c6f9dcee1043ead112139f4f"
+
+SRC_URI[md5sum] = "2f47841c829facb346eb6e3fab5212e2"
+SRC_URI[sha256sum] = "d9e50ff2d19b3538bd2127902a89987474e1a4db8e43a66a4d1a712ab9a504ff"
diff --git a/import-layers/yocto-poky/meta/recipes-core/fts/fts.bb b/import-layers/yocto-poky/meta/recipes-core/fts/fts.bb
index c301720..9d8230f 100644
--- a/import-layers/yocto-poky/meta/recipes-core/fts/fts.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/fts/fts.bb
@@ -1,7 +1,7 @@
 # Copyright (C) 2015 Khem Raj <raj.khem@gmail.com>
 # Released under the MIT license (see COPYING.MIT for the terms)
 
-DESCRIPTION = "keith bostic's POSIX file tree stream operations library"
+SUMMARY = "POSIX file tree stream operations library"
 HOMEPAGE = "https://sites.google.com/a/bostic.com/keithbostic"
 LICENSE = "BSD-4-Clause"
 LIC_FILES_CHKSUM = "file://fts.h;beginline=1;endline=36;md5=2532eddb3d1a21905723a4011ec4e085"
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_aclocal_version.patch b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_aclocal_version.patch
index 7293f5b..49a10f5 100644
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_aclocal_version.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_aclocal_version.patch
@@ -5,7 +5,7 @@
 
 Upstream-Status: Inappropriate [configuration]
 
-Signed-off-by Saul Wold <sgw@linux.intel.com>
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
 
 Index: gettext-0.16.1/autoconf-lib-link/m4/lib-link.m4
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_gnu_source_circular.patch b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_gnu_source_circular.patch
index 0686149..fd5feeb 100644
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_gnu_source_circular.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.16.1/fix_gnu_source_circular.patch
@@ -6,7 +6,7 @@
 
 Upstream-Status: Inappropriate [licensing]
 
-Signed-off-by Saul Wold <sgw@linux.intel.com>
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
 
 diff -ru gettext-0.16.1/gettext-runtime/gnulib-m4/extensions.m4 gettext.patched/gettext-runtime/gnulib-m4/extensions.m4
 --- gettext-0.16.1/gettext-runtime/gnulib-m4/extensions.m4	2006-11-27 09:14:38.000000000 -0800
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.6/add-with-bisonlocaledir.patch b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.6/add-with-bisonlocaledir.patch
rename to import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.6/parallel.patch b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.6/parallel.patch
rename to import-layers/yocto-poky/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/COPYING b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/COPYING
deleted file mode 100644
index 8d11d1d..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/COPYING
+++ /dev/null
@@ -1,4 +0,0 @@
-dnl Copyright (C) 1995-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/Makefile.in.in b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/Makefile.in.in
deleted file mode 100644
index 8906ba0..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/Makefile.in.in
+++ /dev/null
@@ -1,465 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-#
-# Origin: gettext-0.19
-GETTEXT_MACRO_VERSION = 0.19
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-
-SED = @SED@
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-datadir = @datadir@
-localedir = @localedir@
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-MKDIR_P = @MKDIR_P@
-
-GMSGFMT_ = @GMSGFMT@
-GMSGFMT_no = @GMSGFMT@
-GMSGFMT_yes = @GMSGFMT_015@
-GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = @MSGFMT@
-MSGFMT_no = @MSGFMT@
-MSGFMT_yes = @MSGFMT_015@
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
-XGETTEXT_ = @XGETTEXT@
-XGETTEXT_no = @XGETTEXT@
-XGETTEXT_yes = @XGETTEXT_015@
-XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot
-POFILESDEPS_yes = $(POFILESDEPS_)
-POFILESDEPS_no =
-POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT))
-
-DISTFILESDEPS_ = update-po
-DISTFILESDEPS_yes = $(DISTFILESDEPS_)
-DISTFILESDEPS_no =
-DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
-	@echo "$(MSGFMT) -c -o $@ $<"; \
-	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
-	@lang=`echo $* | sed -e 's,.*/,,'`; \
-	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
-	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
-	sed -e '/^#/d' $< > t-$@
-	mv t-$@ $@
-
-
-all: all-@USE_NLS@
-
-all-yes: stamp-po
-all-no:
-
-# Ensure that the gettext macros and this Makefile.in.in are in sync.
-CHECK_MACRO_VERSION = \
-	test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
-	  || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
-	       exit 1; \
-	     }
-
-# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
-# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
-# we don't want to bother translators with empty POT files). We assume that
-# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
-	@$(CHECK_MACRO_VERSION)
-	test ! -f $(srcdir)/$(DOMAIN).pot || \
-	  test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
-	@test ! -f $(srcdir)/$(DOMAIN).pot || { \
-	  echo "touch stamp-po" && \
-	  echo timestamp > stamp-poT && \
-	  mv stamp-poT stamp-po; \
-	}
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-# The determination of whether the package xyz is a GNU one is based on the
-# heuristic whether some file in the top level directory mentions "GNU xyz".
-# If GNU 'find' is available, we avoid grepping through monster files.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
-	package_gnu="$(PACKAGE_GNU)"; \
-	test -n "$$package_gnu" || { \
-	  if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
-		 LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \
-			       -size -10000000c -exec grep 'GNU @PACKAGE@' \
-			       /dev/null '{}' ';' 2>/dev/null; \
-	       else \
-		 LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
-	       fi; \
-	     } | grep -v 'libtool:' >/dev/null; then \
-	     package_gnu=yes; \
-	   else \
-	     package_gnu=no; \
-	   fi; \
-	}; \
-	if test "$$package_gnu" = "yes"; then \
-	  package_prefix='GNU '; \
-	else \
-	  package_prefix=''; \
-	fi; \
-	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
-	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
-	else \
-	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
-	fi; \
-	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
-	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
-	      --files-from=$(srcdir)/POTFILES.in \
-	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
-	      --msgid-bugs-address="$$msgid_bugs_address" \
-	    ;; \
-	  *) \
-	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
-	      --files-from=$(srcdir)/POTFILES.in \
-	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
-	      --package-name="$${package_prefix}@PACKAGE@" \
-	      --package-version='@VERSION@' \
-	      --msgid-bugs-address="$$msgid_bugs_address" \
-	    ;; \
-	esac
-	test ! -f $(DOMAIN).po || { \
-	  if test -f $(srcdir)/$(DOMAIN).pot; then \
-	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
-	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
-	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
-	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
-	    else \
-	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
-	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-	    fi; \
-	  else \
-	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-	  fi; \
-	}
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
-	$(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(POFILESDEPS)
-	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
-	if test -f "$(srcdir)/$${lang}.po"; then \
-	  test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \
-	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
-	  cd $(srcdir) \
-	    && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	           '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
-	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
-	           *) \
-	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
-	         esac; \
-	       }; \
-	else \
-	  $(MAKE) $${lang}.po-create; \
-	fi
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data-@USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
-	  for file in $(DISTFILES.common) Makevars.template; do \
-	    $(INSTALL_DATA) $(srcdir)/$$file \
-			    $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	  for file in Makevars; do \
-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	else \
-	  : ; \
-	fi
-install-data-no: all
-install-data-yes: all
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  dir=$(localedir)/$$lang/LC_MESSAGES; \
-	  $(MKDIR_P) $(DESTDIR)$$dir; \
-	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
-	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
-	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
-	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-	    if test -n "$$lc"; then \
-	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-	         for file in *; do \
-	           if test -f $$file; then \
-	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-	           fi; \
-	         done); \
-	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	      else \
-	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-	          :; \
-	        else \
-	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        fi; \
-	      fi; \
-	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
-	    fi; \
-	  done; \
-	done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data-@USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
-	else \
-	  : ; \
-	fi
-installdirs-data-no:
-installdirs-data-yes:
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  dir=$(localedir)/$$lang/LC_MESSAGES; \
-	  $(MKDIR_P) $(DESTDIR)$$dir; \
-	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-	    if test -n "$$lc"; then \
-	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-	         for file in *; do \
-	           if test -f $$file; then \
-	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-	           fi; \
-	         done); \
-	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	      else \
-	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-	          :; \
-	        else \
-	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        fi; \
-	      fi; \
-	    fi; \
-	  done; \
-	done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data-@USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  for file in $(DISTFILES.common) Makevars.template; do \
-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	else \
-	  : ; \
-	fi
-uninstall-data-no:
-uninstall-data-yes:
-	catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
-	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	  done; \
-	done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
-	rm -f remove-potcdate.sed
-	rm -f stamp-poT
-	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
-	rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
-	rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
-	@echo "This command is intended for maintainers to use;"
-	@echo "it deletes files that may require special tools to rebuild."
-	rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
-	test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS)
-	@$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
-	dists="$(DISTFILES)"; \
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  dists="$$dists Makevars.template"; \
-	fi; \
-	if test -f $(srcdir)/$(DOMAIN).pot; then \
-	  dists="$$dists $(DOMAIN).pot stamp-po"; \
-	fi; \
-	if test -f $(srcdir)/ChangeLog; then \
-	  dists="$$dists ChangeLog"; \
-	fi; \
-	for i in 0 1 2 3 4 5 6 7 8 9; do \
-	  if test -f $(srcdir)/ChangeLog.$$i; then \
-	    dists="$$dists ChangeLog.$$i"; \
-	  fi; \
-	done; \
-	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
-	for file in $$dists; do \
-	  if test -f $$file; then \
-	    cp -p $$file $(distdir) || exit 1; \
-	  else \
-	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
-	  fi; \
-	done
-
-update-po: Makefile
-	$(MAKE) $(DOMAIN).pot-update
-	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
-	$(MAKE) update-gmo
-
-# General rule for creating PO files.
-
-.nop.po-create:
-	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
-	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
-	exit 1
-
-# General rule for updating PO files.
-
-.nop.po-update:
-	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
-	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
-	tmpdir=`pwd`; \
-	echo "$$lang:"; \
-	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
-	cd $(srcdir); \
-	if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	       '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
-	         $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
-	       *) \
-	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
-	     esac; \
-	   }; then \
-	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
-	    rm -f $$tmpdir/$$lang.new.po; \
-	  else \
-	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
-	      :; \
-	    else \
-	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
-	      exit 1; \
-	    fi; \
-	  fi; \
-	else \
-	  echo "msgmerge for $$lang.po failed!" 1>&2; \
-	  rm -f $$tmpdir/$$lang.new.po; \
-	fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
-	@:
-
-# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
-# because execution permission bits may not work on the current file system.
-# Use @SHELL@, which is the shell determined by autoconf for the use by its
-# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
-Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
-	cd $(top_builddir) \
-	  && @SHELL@ ./config.status $(subdir)/$@.in po-directories
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/aclocal.tgz b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/aclocal.tgz
deleted file mode 100644
index b04ba55..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/aclocal.tgz
+++ /dev/null
Binary files differ
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/config.rpath b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/config.rpath
deleted file mode 100755
index b625621..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/config.rpath
+++ /dev/null
@@ -1,684 +0,0 @@
-#! /bin/sh
-# Output a system dependent set of variables, describing how to set the
-# run time search path of shared libraries in an executable.
-#
-#   Copyright 1996-2014 Free Software Foundation, Inc.
-#   Taken from GNU libtool, 2001
-#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-#   This file is free software; the Free Software Foundation gives
-#   unlimited permission to copy and/or distribute it, with or without
-#   modifications, as long as this notice is preserved.
-#
-# The first argument passed to this file is the canonical host specification,
-#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
-# should be set by the caller.
-#
-# The set of defined variables is at the end of this script.
-
-# Known limitations:
-# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
-#   than 256 bytes, otherwise the compiler driver will dump core. The only
-#   known workaround is to choose shorter directory names for the build
-#   directory and/or the installation directory.
-
-# All known linkers require a '.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-shrext=.so
-
-host="$1"
-host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-# Code taken from libtool.m4's _LT_CC_BASENAME.
-
-for cc_temp in $CC""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
-
-# Code taken from libtool.m4's _LT_COMPILER_PIC.
-
-wl=
-if test "$GCC" = yes; then
-  wl='-Wl,'
-else
-  case "$host_os" in
-    aix*)
-      wl='-Wl,'
-      ;;
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      ;;
-    hpux9* | hpux10* | hpux11*)
-      wl='-Wl,'
-      ;;
-    irix5* | irix6* | nonstopux*)
-      wl='-Wl,'
-      ;;
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-        ecc*)
-          wl='-Wl,'
-          ;;
-        icc* | ifort*)
-          wl='-Wl,'
-          ;;
-        lf95*)
-          wl='-Wl,'
-          ;;
-        nagfor*)
-          wl='-Wl,-Wl,,'
-          ;;
-        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-          wl='-Wl,'
-          ;;
-        ccc*)
-          wl='-Wl,'
-          ;;
-        xl* | bgxl* | bgf* | mpixl*)
-          wl='-Wl,'
-          ;;
-        como)
-          wl='-lopt='
-          ;;
-        *)
-          case `$CC -V 2>&1 | sed 5q` in
-            *Sun\ F* | *Sun*Fortran*)
-              wl=
-              ;;
-            *Sun\ C*)
-              wl='-Wl,'
-              ;;
-          esac
-          ;;
-      esac
-      ;;
-    newsos6)
-      ;;
-    *nto* | *qnx*)
-      ;;
-    osf3* | osf4* | osf5*)
-      wl='-Wl,'
-      ;;
-    rdos*)
-      ;;
-    solaris*)
-      case $cc_basename in
-        f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-          wl='-Qoption ld '
-          ;;
-        *)
-          wl='-Wl,'
-          ;;
-      esac
-      ;;
-    sunos4*)
-      wl='-Qoption ld '
-      ;;
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      wl='-Wl,'
-      ;;
-    sysv4*MP*)
-      ;;
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      wl='-Wl,'
-      ;;
-    unicos*)
-      wl='-Wl,'
-      ;;
-    uts4*)
-      ;;
-  esac
-fi
-
-# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
-
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-
-case "$host_os" in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
-  # Set some defaults for GNU ld with shared library support. These
-  # are reset later if shared libraries are not supported. Putting them
-  # here allows them to be overridden if necessary.
-  # Unlike libtool, we use -rpath here, not --rpath, since the documented
-  # option of GNU ld is called -rpath, not --rpath.
-  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-  case "$host_os" in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-        ld_shlibs=no
-      fi
-      ;;
-    amigaos*)
-      case "$host_cpu" in
-        powerpc)
-          ;;
-        m68k)
-          hardcode_libdir_flag_spec='-L$libdir'
-          hardcode_minus_L=yes
-          ;;
-      esac
-      ;;
-    beos*)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    cygwin* | mingw* | pw32* | cegcc*)
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    haiku*)
-      ;;
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      ;;
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    netbsd*)
-      ;;
-    solaris*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-        ld_shlibs=no
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-          ld_shlibs=no
-          ;;
-        *)
-          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
-          else
-            ld_shlibs=no
-          fi
-          ;;
-      esac
-      ;;
-    sunos4*)
-      hardcode_direct=yes
-      ;;
-    *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-  esac
-  if test "$ld_shlibs" = no; then
-    hardcode_libdir_flag_spec=
-  fi
-else
-  case "$host_os" in
-    aix3*)
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes; then
-        # Neither direct hardcoding nor static linking is supported with a
-        # broken collect2.
-        hardcode_direct=unsupported
-      fi
-      ;;
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-        # On IA64, the linker does run time linking by default, so we don't
-        # have to do anything special.
-        aix_use_runtimelinking=no
-      else
-        aix_use_runtimelinking=no
-        # Test if we are trying to use run time linking or normal
-        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-        # need to do runtime linking.
-        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-          for ld_flag in $LDFLAGS; do
-            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-              aix_use_runtimelinking=yes
-              break
-            fi
-          done
-          ;;
-        esac
-      fi
-      hardcode_direct=yes
-      hardcode_libdir_separator=':'
-      if test "$GCC" = yes; then
-        case $host_os in aix4.[012]|aix4.[012].*)
-          collect2name=`${CC} -print-prog-name=collect2`
-          if test -f "$collect2name" && \
-            strings "$collect2name" | grep resolve_lib_name >/dev/null
-          then
-            # We have reworked collect2
-            :
-          else
-            # We have old collect2
-            hardcode_direct=unsupported
-            hardcode_minus_L=yes
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_libdir_separator=
-          fi
-          ;;
-        esac
-      fi
-      # Begin _LT_AC_SYS_LIBPATH_AIX.
-      echo 'int main () { return 0; }' > conftest.c
-      ${CC} ${LDFLAGS} conftest.c -o conftest
-      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-      if test -z "$aix_libpath"; then
-        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-      fi
-      if test -z "$aix_libpath"; then
-        aix_libpath="/usr/lib:/lib"
-      fi
-      rm -f conftest.c conftest
-      # End _LT_AC_SYS_LIBPATH_AIX.
-      if test "$aix_use_runtimelinking" = yes; then
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-      else
-        if test "$host_cpu" = ia64; then
-          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-        else
-          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        fi
-      fi
-      ;;
-    amigaos*)
-      case "$host_cpu" in
-        powerpc)
-          ;;
-        m68k)
-          hardcode_libdir_flag_spec='-L$libdir'
-          hardcode_minus_L=yes
-          ;;
-      esac
-      ;;
-    bsdi[45]*)
-      ;;
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      libext=lib
-      ;;
-    darwin* | rhapsody*)
-      hardcode_direct=no
-      if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
-        :
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    dgux*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      ;;
-    freebsd2.[01]*)
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      ;;
-    freebsd* | dragonfly*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    hpux9*)
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      ;;
-    hpux10*)
-      if test "$with_gnu_ld" = no; then
-        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator=:
-        hardcode_direct=yes
-        # hardcode_minus_L: Not really in the search PATH,
-        # but as the default location of the library.
-        hardcode_minus_L=yes
-      fi
-      ;;
-    hpux11*)
-      if test "$with_gnu_ld" = no; then
-        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator=:
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct=no
-            ;;
-          *)
-            hardcode_direct=yes
-            # hardcode_minus_L: Not really in the search PATH,
-            # but as the default location of the library.
-            hardcode_minus_L=yes
-            ;;
-        esac
-      fi
-      ;;
-    irix5* | irix6* | nonstopux*)
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    netbsd*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    newsos6)
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    *nto* | *qnx*)
-      ;;
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-        hardcode_direct=yes
-        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-        else
-          case "$host_os" in
-            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-              hardcode_libdir_flag_spec='-R$libdir'
-              ;;
-            *)
-              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-              ;;
-          esac
-        fi
-      else
-        ld_shlibs=no
-      fi
-      ;;
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      ;;
-    osf3*)
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-    osf4* | osf5*)
-      if test "$GCC" = yes; then
-        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-        # Both cc and cxx compiler support -rpath directly
-        hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      hardcode_libdir_separator=:
-      ;;
-    solaris*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      ;;
-    sunos4*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      ;;
-    sysv4)
-      case $host_vendor in
-        sni)
-          hardcode_direct=yes # is this really true???
-          ;;
-        siemens)
-          hardcode_direct=no
-          ;;
-        motorola)
-          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-          ;;
-      esac
-      ;;
-    sysv4.3*)
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-        ld_shlibs=yes
-      fi
-      ;;
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      ;;
-    sysv5* | sco3.2v5* | sco5v6*)
-      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-      hardcode_libdir_separator=':'
-      ;;
-    uts4*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      ;;
-    *)
-      ld_shlibs=no
-      ;;
-  esac
-fi
-
-# Check dynamic linker characteristics
-# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
-# Unlike libtool.m4, here we don't care about _all_ names of the library, but
-# only about the one the linker finds when passed -lNAME. This is the last
-# element of library_names_spec in libtool.m4, or possibly two of them if the
-# linker has special search rules.
-library_names_spec=      # the last element of library_names_spec in libtool.m4
-libname_spec='lib$name'
-case "$host_os" in
-  aix3*)
-    library_names_spec='$libname.a'
-    ;;
-  aix[4-9]*)
-    library_names_spec='$libname$shrext'
-    ;;
-  amigaos*)
-    case "$host_cpu" in
-      powerpc*)
-        library_names_spec='$libname$shrext' ;;
-      m68k)
-        library_names_spec='$libname.a' ;;
-    esac
-    ;;
-  beos*)
-    library_names_spec='$libname$shrext'
-    ;;
-  bsdi[45]*)
-    library_names_spec='$libname$shrext'
-    ;;
-  cygwin* | mingw* | pw32* | cegcc*)
-    shrext=.dll
-    library_names_spec='$libname.dll.a $libname.lib'
-    ;;
-  darwin* | rhapsody*)
-    shrext=.dylib
-    library_names_spec='$libname$shrext'
-    ;;
-  dgux*)
-    library_names_spec='$libname$shrext'
-    ;;
-  freebsd[23].*)
-    library_names_spec='$libname$shrext$versuffix'
-    ;;
-  freebsd* | dragonfly*)
-    library_names_spec='$libname$shrext'
-    ;;
-  gnu*)
-    library_names_spec='$libname$shrext'
-    ;;
-  haiku*)
-    library_names_spec='$libname$shrext'
-    ;;
-  hpux9* | hpux10* | hpux11*)
-    case $host_cpu in
-      ia64*)
-        shrext=.so
-        ;;
-      hppa*64*)
-        shrext=.sl
-        ;;
-      *)
-        shrext=.sl
-        ;;
-    esac
-    library_names_spec='$libname$shrext'
-    ;;
-  interix[3-9]*)
-    library_names_spec='$libname$shrext'
-    ;;
-  irix5* | irix6* | nonstopux*)
-    library_names_spec='$libname$shrext'
-    case "$host_os" in
-      irix5* | nonstopux*)
-        libsuff= shlibsuff=
-        ;;
-      *)
-        case $LD in
-          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
-          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
-          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
-          *) libsuff= shlibsuff= ;;
-        esac
-        ;;
-    esac
-    ;;
-  linux*oldld* | linux*aout* | linux*coff*)
-    ;;
-  linux* | k*bsd*-gnu | kopensolaris*-gnu)
-    library_names_spec='$libname$shrext'
-    ;;
-  knetbsd*-gnu)
-    library_names_spec='$libname$shrext'
-    ;;
-  netbsd*)
-    library_names_spec='$libname$shrext'
-    ;;
-  newsos6)
-    library_names_spec='$libname$shrext'
-    ;;
-  *nto* | *qnx*)
-    library_names_spec='$libname$shrext'
-    ;;
-  openbsd*)
-    library_names_spec='$libname$shrext$versuffix'
-    ;;
-  os2*)
-    libname_spec='$name'
-    shrext=.dll
-    library_names_spec='$libname.a'
-    ;;
-  osf3* | osf4* | osf5*)
-    library_names_spec='$libname$shrext'
-    ;;
-  rdos*)
-    ;;
-  solaris*)
-    library_names_spec='$libname$shrext'
-    ;;
-  sunos4*)
-    library_names_spec='$libname$shrext$versuffix'
-    ;;
-  sysv4 | sysv4.3*)
-    library_names_spec='$libname$shrext'
-    ;;
-  sysv4*MP*)
-    library_names_spec='$libname$shrext'
-    ;;
-  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-    library_names_spec='$libname$shrext'
-    ;;
-  tpf*)
-    library_names_spec='$libname$shrext'
-    ;;
-  uts4*)
-    library_names_spec='$libname$shrext'
-    ;;
-esac
-
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
-shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
-escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-
-LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
-
-# How to pass a linker flag through the compiler.
-wl="$escaped_wl"
-
-# Static library suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally "so").
-shlibext="$shlibext"
-
-# Format of library name prefix.
-libname_spec="$escaped_libname_spec"
-
-# Library names that the linker finds when passed -lNAME.
-library_names_spec="$escaped_library_names_spec"
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator="$hardcode_libdir_separator"
-
-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct="$hardcode_direct"
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L="$hardcode_minus_L"
-
-EOF
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
rename to import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING
new file mode 100644
index 0000000..3671ab6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING
@@ -0,0 +1,4 @@
+dnl Copyright (C) 1995-2016 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in
new file mode 100644
index 0000000..38c293d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in
@@ -0,0 +1,483 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without any warranty.
+#
+# Origin: gettext-0.19.8
+GETTEXT_MACRO_VERSION = 0.19
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SED = @SED@
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+# When building gettext-tools, we prefer to use the built programs
+# rather than installed programs.  However, we can't do that when we
+# are cross compiling.
+CROSS_COMPILING = @CROSS_COMPILING@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot
+POFILESDEPS_yes = $(POFILESDEPS_)
+POFILESDEPS_no =
+POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT))
+
+DISTFILESDEPS_ = update-po
+DISTFILESDEPS_yes = $(DISTFILESDEPS_)
+DISTFILESDEPS_no =
+DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+	@echo "$(MSGFMT) -c -o $@ $<"; \
+	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+	@lang=`echo $* | sed -e 's,.*/,,'`; \
+	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
+	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+	sed -e '/^#/d' $< > t-$@
+	mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+CHECK_MACRO_VERSION = \
+	test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+	  || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+	       exit 1; \
+	     }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+	@$(CHECK_MACRO_VERSION)
+	test ! -f $(srcdir)/$(DOMAIN).pot || \
+	  test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+	@test ! -f $(srcdir)/$(DOMAIN).pot || { \
+	  echo "touch stamp-po" && \
+	  echo timestamp > stamp-poT && \
+	  mv stamp-poT stamp-po; \
+	}
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+# The determination of whether the package xyz is a GNU one is based on the
+# heuristic whether some file in the top level directory mentions "GNU xyz".
+# If GNU 'find' is available, we avoid grepping through monster files.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+	package_gnu="$(PACKAGE_GNU)"; \
+	test -n "$$package_gnu" || { \
+	  if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
+		 LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \
+			       -size -10000000c -exec grep 'GNU @PACKAGE@' \
+			       /dev/null '{}' ';' 2>/dev/null; \
+	       else \
+		 LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
+	       fi; \
+	     } | grep -v 'libtool:' >/dev/null; then \
+	     package_gnu=yes; \
+	   else \
+	     package_gnu=no; \
+	   fi; \
+	}; \
+	if test "$$package_gnu" = "yes"; then \
+	  package_prefix='GNU '; \
+	else \
+	  package_prefix=''; \
+	fi; \
+	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+	else \
+	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+	fi; \
+	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+	      --files-from=$(srcdir)/POTFILES.in \
+	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
+	      --msgid-bugs-address="$$msgid_bugs_address" \
+	    ;; \
+	  *) \
+	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+	      --files-from=$(srcdir)/POTFILES.in \
+	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
+	      --package-name="$${package_prefix}@PACKAGE@" \
+	      --package-version='@VERSION@' \
+	      --msgid-bugs-address="$$msgid_bugs_address" \
+	    ;; \
+	esac
+	test ! -f $(DOMAIN).po || { \
+	  if test -f $(srcdir)/$(DOMAIN).pot-header; then \
+	    sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \
+	    cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \
+	    rm -f $(DOMAIN).1po; \
+	  fi; \
+	  if test -f $(srcdir)/$(DOMAIN).pot; then \
+	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+	    else \
+	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+	    fi; \
+	  else \
+	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+	  fi; \
+	}
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+	$(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(POFILESDEPS)
+	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+	if test -f "$(srcdir)/$${lang}.po"; then \
+	  test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \
+	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+	  cd $(srcdir) \
+	    && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+	           '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+	           *) \
+	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+	         esac; \
+	       }; \
+	else \
+	  $(MAKE) $${lang}.po-create; \
+	fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	  for file in $(DISTFILES.common) Makevars.template; do \
+	    $(INSTALL_DATA) $(srcdir)/$$file \
+			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	  for file in Makevars; do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+install-data-no: all
+install-data-yes: all
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $(DESTDIR)$$dir; \
+	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+	    if test -n "$$lc"; then \
+	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+	         for file in *; do \
+	           if test -f $$file; then \
+	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+	           fi; \
+	         done); \
+	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	      else \
+	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+	          :; \
+	        else \
+	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        fi; \
+	      fi; \
+	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+	    fi; \
+	  done; \
+	done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+	else \
+	  : ; \
+	fi
+installdirs-data-no:
+installdirs-data-yes:
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $(DESTDIR)$$dir; \
+	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+	    if test -n "$$lc"; then \
+	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+	         for file in *; do \
+	           if test -f $$file; then \
+	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+	           fi; \
+	         done); \
+	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+	      else \
+	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+	          :; \
+	        else \
+	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+	        fi; \
+	      fi; \
+	    fi; \
+	  done; \
+	done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  for file in $(DISTFILES.common) Makevars.template; do \
+	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+	  done; \
+	else \
+	  : ; \
+	fi
+uninstall-data-no:
+uninstall-data-yes:
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+	  done; \
+	done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+	rm -f remove-potcdate.sed
+	rm -f stamp-poT
+	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+	rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+	rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+	test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS)
+	@$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+	dists="$(DISTFILES)"; \
+	if test "$(PACKAGE)" = "gettext-tools"; then \
+	  dists="$$dists Makevars.template"; \
+	fi; \
+	if test -f $(srcdir)/$(DOMAIN).pot; then \
+	  dists="$$dists $(DOMAIN).pot stamp-po"; \
+	fi; \
+	if test -f $(srcdir)/ChangeLog; then \
+	  dists="$$dists ChangeLog"; \
+	fi; \
+	for i in 0 1 2 3 4 5 6 7 8 9; do \
+	  if test -f $(srcdir)/ChangeLog.$$i; then \
+	    dists="$$dists ChangeLog.$$i"; \
+	  fi; \
+	done; \
+	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+	for file in $$dists; do \
+	  if test -f $$file; then \
+	    cp -p $$file $(distdir) || exit 1; \
+	  else \
+	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+	  fi; \
+	done
+
+update-po: Makefile
+	$(MAKE) $(DOMAIN).pot-update
+	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+	$(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+	exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+	if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \
+	tmpdir=`pwd`; \
+	echo "$$lang:"; \
+	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+	cd $(srcdir); \
+	if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+	       '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+	         $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+	       *) \
+	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+	     esac; \
+	   }; then \
+	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+	    rm -f $$tmpdir/$$lang.new.po; \
+	  else \
+	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	      :; \
+	    else \
+	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	      exit 1; \
+	    fi; \
+	  fi; \
+	else \
+	  echo "msgmerge for $$lang.po failed!" 1>&2; \
+	  rm -f $$tmpdir/$$lang.new.po; \
+	fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+	@:
+
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+	cd $(top_builddir) \
+	  && @SHELL@ ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz
new file mode 100644
index 0000000..9b2d1f5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz
Binary files differ
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath
new file mode 100755
index 0000000..98183ff
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath
@@ -0,0 +1,684 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+#   Copyright 1996-2016 Free Software Foundation, Inc.
+#   Taken from GNU libtool, 2001
+#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+#   This file is free software; the Free Software Foundation gives
+#   unlimited permission to copy and/or distribute it, with or without
+#   modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+#   than 256 bytes, otherwise the compiler driver will dump core. The only
+#   known workaround is to choose shorter directory names for the build
+#   directory and/or the installation directory.
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+  wl='-Wl,'
+else
+  case "$host_os" in
+    aix*)
+      wl='-Wl,'
+      ;;
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      ;;
+    hpux9* | hpux10* | hpux11*)
+      wl='-Wl,'
+      ;;
+    irix5* | irix6* | nonstopux*)
+      wl='-Wl,'
+      ;;
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+        ecc*)
+          wl='-Wl,'
+          ;;
+        icc* | ifort*)
+          wl='-Wl,'
+          ;;
+        lf95*)
+          wl='-Wl,'
+          ;;
+        nagfor*)
+          wl='-Wl,-Wl,,'
+          ;;
+        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+          wl='-Wl,'
+          ;;
+        ccc*)
+          wl='-Wl,'
+          ;;
+        xl* | bgxl* | bgf* | mpixl*)
+          wl='-Wl,'
+          ;;
+        como)
+          wl='-lopt='
+          ;;
+        *)
+          case `$CC -V 2>&1 | sed 5q` in
+            *Sun\ F* | *Sun*Fortran*)
+              wl=
+              ;;
+            *Sun\ C*)
+              wl='-Wl,'
+              ;;
+          esac
+          ;;
+      esac
+      ;;
+    newsos6)
+      ;;
+    *nto* | *qnx*)
+      ;;
+    osf3* | osf4* | osf5*)
+      wl='-Wl,'
+      ;;
+    rdos*)
+      ;;
+    solaris*)
+      case $cc_basename in
+        f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+          wl='-Qoption ld '
+          ;;
+        *)
+          wl='-Wl,'
+          ;;
+      esac
+      ;;
+    sunos4*)
+      wl='-Qoption ld '
+      ;;
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      wl='-Wl,'
+      ;;
+    sysv4*MP*)
+      ;;
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      wl='-Wl,'
+      ;;
+    unicos*)
+      wl='-Wl,'
+      ;;
+    uts4*)
+      ;;
+  esac
+fi
+
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # Set some defaults for GNU ld with shared library support. These
+  # are reset later if shared libraries are not supported. Putting them
+  # here allows them to be overridden if necessary.
+  # Unlike libtool, we use -rpath here, not --rpath, since the documented
+  # option of GNU ld is called -rpath, not --rpath.
+  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  case "$host_os" in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+        ld_shlibs=no
+      fi
+      ;;
+    amigaos*)
+      case "$host_cpu" in
+        powerpc)
+          ;;
+        m68k)
+          hardcode_libdir_flag_spec='-L$libdir'
+          hardcode_minus_L=yes
+          ;;
+      esac
+      ;;
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    cygwin* | mingw* | pw32* | cegcc*)
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    haiku*)
+      ;;
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      ;;
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    netbsd*)
+      ;;
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+        ld_shlibs=no
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+          ld_shlibs=no
+          ;;
+        *)
+          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+          else
+            ld_shlibs=no
+          fi
+          ;;
+      esac
+      ;;
+    sunos4*)
+      hardcode_direct=yes
+      ;;
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+  esac
+  if test "$ld_shlibs" = no; then
+    hardcode_libdir_flag_spec=
+  fi
+else
+  case "$host_os" in
+    aix3*)
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes; then
+        # Neither direct hardcoding nor static linking is supported with a
+        # broken collect2.
+        hardcode_direct=unsupported
+      fi
+      ;;
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+        # On IA64, the linker does run time linking by default, so we don't
+        # have to do anything special.
+        aix_use_runtimelinking=no
+      else
+        aix_use_runtimelinking=no
+        # Test if we are trying to use run time linking or normal
+        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+        # need to do runtime linking.
+        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+          for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+              aix_use_runtimelinking=yes
+              break
+            fi
+          done
+          ;;
+        esac
+      fi
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      if test "$GCC" = yes; then
+        case $host_os in aix4.[012]|aix4.[012].*)
+          collect2name=`${CC} -print-prog-name=collect2`
+          if test -f "$collect2name" && \
+            strings "$collect2name" | grep resolve_lib_name >/dev/null
+          then
+            # We have reworked collect2
+            :
+          else
+            # We have old collect2
+            hardcode_direct=unsupported
+            hardcode_minus_L=yes
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_libdir_separator=
+          fi
+          ;;
+        esac
+      fi
+      # Begin _LT_AC_SYS_LIBPATH_AIX.
+      echo 'int main () { return 0; }' > conftest.c
+      ${CC} ${LDFLAGS} conftest.c -o conftest
+      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      if test -z "$aix_libpath"; then
+        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      fi
+      if test -z "$aix_libpath"; then
+        aix_libpath="/usr/lib:/lib"
+      fi
+      rm -f conftest.c conftest
+      # End _LT_AC_SYS_LIBPATH_AIX.
+      if test "$aix_use_runtimelinking" = yes; then
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+      else
+        if test "$host_cpu" = ia64; then
+          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+        else
+          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        fi
+      fi
+      ;;
+    amigaos*)
+      case "$host_cpu" in
+        powerpc)
+          ;;
+        m68k)
+          hardcode_libdir_flag_spec='-L$libdir'
+          hardcode_minus_L=yes
+          ;;
+      esac
+      ;;
+    bsdi[45]*)
+      ;;
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      libext=lib
+      ;;
+    darwin* | rhapsody*)
+      hardcode_direct=no
+      if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    dgux*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    freebsd2.[01]*)
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    freebsd* | dragonfly*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    hpux9*)
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      ;;
+    hpux10*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        hardcode_direct=yes
+        # hardcode_minus_L: Not really in the search PATH,
+        # but as the default location of the library.
+        hardcode_minus_L=yes
+      fi
+      ;;
+    hpux11*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct=no
+            ;;
+          *)
+            hardcode_direct=yes
+            # hardcode_minus_L: Not really in the search PATH,
+            # but as the default location of the library.
+            hardcode_minus_L=yes
+            ;;
+        esac
+      fi
+      ;;
+    irix5* | irix6* | nonstopux*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    netbsd*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    newsos6)
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    *nto* | *qnx*)
+      ;;
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+        hardcode_direct=yes
+        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        else
+          case "$host_os" in
+            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+              hardcode_libdir_flag_spec='-R$libdir'
+              ;;
+            *)
+              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+              ;;
+          esac
+        fi
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      ;;
+    osf3*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    osf4* | osf5*)
+      if test "$GCC" = yes; then
+        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+        # Both cc and cxx compiler support -rpath directly
+        hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+    solaris*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      ;;
+    sunos4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    sysv4)
+      case $host_vendor in
+        sni)
+          hardcode_direct=yes # is this really true???
+          ;;
+        siemens)
+          hardcode_direct=no
+          ;;
+        motorola)
+          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+          ;;
+      esac
+      ;;
+    sysv4.3*)
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        ld_shlibs=yes
+      fi
+      ;;
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      ;;
+    sysv5* | sco3.2v5* | sco5v6*)
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      ;;
+    uts4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    *)
+      ld_shlibs=no
+      ;;
+  esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec=      # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+  aix3*)
+    library_names_spec='$libname.a'
+    ;;
+  aix[4-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  amigaos*)
+    case "$host_cpu" in
+      powerpc*)
+        library_names_spec='$libname$shrext' ;;
+      m68k)
+        library_names_spec='$libname.a' ;;
+    esac
+    ;;
+  beos*)
+    library_names_spec='$libname$shrext'
+    ;;
+  bsdi[45]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  cygwin* | mingw* | pw32* | cegcc*)
+    shrext=.dll
+    library_names_spec='$libname.dll.a $libname.lib'
+    ;;
+  darwin* | rhapsody*)
+    shrext=.dylib
+    library_names_spec='$libname$shrext'
+    ;;
+  dgux*)
+    library_names_spec='$libname$shrext'
+    ;;
+  freebsd[23].*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  freebsd* | dragonfly*)
+    library_names_spec='$libname$shrext'
+    ;;
+  gnu*)
+    library_names_spec='$libname$shrext'
+    ;;
+  haiku*)
+    library_names_spec='$libname$shrext'
+    ;;
+  hpux9* | hpux10* | hpux11*)
+    case $host_cpu in
+      ia64*)
+        shrext=.so
+        ;;
+      hppa*64*)
+        shrext=.sl
+        ;;
+      *)
+        shrext=.sl
+        ;;
+    esac
+    library_names_spec='$libname$shrext'
+    ;;
+  interix[3-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  irix5* | irix6* | nonstopux*)
+    library_names_spec='$libname$shrext'
+    case "$host_os" in
+      irix5* | nonstopux*)
+        libsuff= shlibsuff=
+        ;;
+      *)
+        case $LD in
+          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+          *) libsuff= shlibsuff= ;;
+        esac
+        ;;
+    esac
+    ;;
+  linux*oldld* | linux*aout* | linux*coff*)
+    ;;
+  linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  knetbsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  netbsd*)
+    library_names_spec='$libname$shrext'
+    ;;
+  newsos6)
+    library_names_spec='$libname$shrext'
+    ;;
+  *nto* | *qnx*)
+    library_names_spec='$libname$shrext'
+    ;;
+  openbsd*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  os2*)
+    libname_spec='$name'
+    shrext=.dll
+    library_names_spec='$libname.a'
+    ;;
+  osf3* | osf4* | osf5*)
+    library_names_spec='$libname$shrext'
+    ;;
+  rdos*)
+    ;;
+  solaris*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sunos4*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  sysv4 | sysv4.3*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv4*MP*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    library_names_spec='$libname$shrext'
+    ;;
+  tpf*)
+    library_names_spec='$libname$shrext'
+    ;;
+  uts4*)
+    library_names_spec='$libname$shrext'
+    ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/remove-potcdate.sin b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.4/remove-potcdate.sin
rename to import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-native_0.19.4.bb b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-native_0.19.4.bb
deleted file mode 100644
index 1d4a443..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-native_0.19.4.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Minimal gettext for supporting native autoconf/automake"
-DESCRIPTION = "Contains the m4 macros sufficient to support building \
-autoconf/automake. This provides a significant build time speedup by \
-the removal of gettext-native from most dependency chains (now only \
-needed for gettext for the target)."
-SRC_URI = "file://aclocal.tgz \
-           file://config.rpath \
-           file://Makefile.in.in \
-           file://remove-potcdate.sin \
-           file://COPYING \
-           file://0001-PATCH-Disable-the-test-to-convert-euc-jp.patch \
-"
-
-INHIBIT_DEFAULT_DEPS = "1"
-INHIBIT_AUTOTOOLS_DEPS = "1"
-
-LICENSE = "FSF-Unlimited"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1b20675cd5158442f6007d022f46b35b"
-
-inherit native
-
-
-S = "${WORKDIR}"
-
-do_install () {
-	install -d ${D}${datadir}/aclocal/
-	cp ${WORKDIR}/*.m4 ${D}${datadir}/aclocal/
-	install -d ${D}${datadir}/gettext/po/
-	cp ${WORKDIR}/config.rpath ${D}${datadir}/gettext/
-	cp ${WORKDIR}/Makefile.in.in ${D}${datadir}/gettext/po/
-	cp ${WORKDIR}/remove-potcdate.sin ${D}${datadir}/gettext/po/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb
new file mode 100644
index 0000000..26ff199
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Minimal gettext for supporting native autoconf/automake"
+DESCRIPTION = "Contains the m4 macros sufficient to support building \
+autoconf/automake. This provides a significant build time speedup by \
+the removal of gettext-native from most dependency chains (now only \
+needed for gettext for the target)."
+SRC_URI = "file://aclocal.tgz \
+           file://config.rpath \
+           file://Makefile.in.in \
+           file://remove-potcdate.sin \
+           file://COPYING \
+           file://0001-PATCH-Disable-the-test-to-convert-euc-jp.patch \
+"
+
+INHIBIT_DEFAULT_DEPS = "1"
+INHIBIT_AUTOTOOLS_DEPS = "1"
+
+LICENSE = "FSF-Unlimited"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4bd090a20bfcd1a18f1f79837b5e3e91"
+
+inherit native
+
+S = "${WORKDIR}"
+
+do_install () {
+	install -d ${D}${datadir}/aclocal/
+	cp ${WORKDIR}/*.m4 ${D}${datadir}/aclocal/
+	install -d ${D}${datadir}/gettext/po/
+	cp ${WORKDIR}/config.rpath ${D}${datadir}/gettext/
+	cp ${WORKDIR}/Makefile.in.in ${D}${datadir}/gettext/po/
+	cp ${WORKDIR}/remove-potcdate.sin ${D}${datadir}/gettext/po/
+}
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.16.1.bb b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.16.1.bb
index cd0b759..e79f4da 100644
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.16.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.16.1.bb
@@ -9,7 +9,7 @@
 DEPENDS = "virtual/libiconv"
 DEPENDS_class-native = ""
 PROVIDES = "virtual/libintl virtual/gettext"
-PROVIDES_class-native = ""
+PROVIDES_class-native = "virtual/gettext-native"
 
 SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
            file://gettext-vpath.patch \
@@ -21,16 +21,28 @@
            file://hardcode_macro_version.patch \
           "
 
-LDFLAGS_prepend_libc-uclibc = " -lrt -lpthread "
-
 SRC_URI[md5sum] = "3d9ad24301c6d6b17ec30704a13fe127"
 SRC_URI[sha256sum] = "0bf850d1a079fb5a61f0a47b1a9efd35eb44032255375e1cedb0253bc27b376d"
 
 PARALLEL_MAKE = ""
 
+LDFLAGS_prepend_libc-uclibc = " -lrt -lpthread "
+
 inherit autotools texinfo
 
-EXTRA_OECONF += "--without-lisp --disable-csharp --disable-openmp --without-emacs"
+EXTRA_OECONF += "--without-lispdir \
+                 --disable-csharp \
+                 --disable-libasprintf \
+                 --disable-java \
+                 --disable-native-java \
+                 --disable-openmp \
+                 --without-emacs \
+                "
+EXTRA_OECONF_append_libc-musl = "\
+                                 gt_cv_func_gnugettext1_libc=yes \
+                                 gt_cv_func_gnugettext2_libc=yes \
+                                "
+
 acpaths = '-I ${S}/autoconf-lib-link/m4/ \
            -I ${S}/gettext-runtime/m4 \
            -I ${S}/gettext-tools/m4'
@@ -41,7 +53,6 @@
 
 do_install_append_libc-musl () {
 	rm -f ${D}${libdir}/charset.alias
-	rm -f ${D}${includedir}/libintl.h
 }
 
 # these lack the .x behind the .so, but shouldn't be in the -dev package
@@ -93,20 +104,21 @@
                              ${infodir}/autosprintf.info \
                             "
 
-
 do_install_append() {
-	rm -f ${D}${libdir}/preloadable_libintl.so
+    rm -f ${D}${libdir}/preloadable_libintl.so
+}
+
+do_install_append_class-native () {
+	rm ${D}${datadir}/aclocal/*
+	rm ${D}${datadir}/gettext/config.rpath
+	rm ${D}${datadir}/gettext/po/Makefile.in.in
+	rm ${D}${datadir}/gettext/po/remove-potcdate.sin
 }
 
 # Anyone inheriting gettext will have both gettext-native and gettext
 # available, and we don't want to use older macros from the target gettext in
 # a non-gplv3 build, so kill them and let dependent recipes rely on
 # gettext-native.
-
-SYSROOT_PREPROCESS_FUNCS += "remove_sysroot_m4_macros"
-
-remove_sysroot_m4_macros () {
-    rm -r "${SYSROOT_DESTDIR}${datadir}/aclocal"
-}
+SYSROOT_DIRS_BLACKLIST += "${datadir}/aclocal"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.19.6.bb b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.19.6.bb
deleted file mode 100644
index 592e4fc..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.19.6.bb
+++ /dev/null
@@ -1,115 +0,0 @@
-SUMMARY = "Utilities and libraries for producing multi-lingual messages"
-DESCRIPTION = "GNU gettext is a set of tools that provides a framework to help other programs produce multi-lingual messages. These tools include a set of conventions about how programs should be written to support message catalogs, a directory and file naming organization for the message catalogs themselves, a runtime library supporting the retrieval of translated messages, and a few stand-alone programs to massage in various ways the sets of translatable and already translated strings."
-HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
-SECTION = "libs"
-LICENSE = "GPLv3+ & LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-DEPENDS = "gettext-native virtual/libiconv expat"
-DEPENDS_class-native = "gettext-minimal-native"
-PROVIDES = "virtual/libintl virtual/gettext"
-PROVIDES_class-native = "virtual/gettext-native"
-RCONFLICTS_${PN} = "proxy-libintl"
-SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
-	   file://parallel.patch \
-	   file://add-with-bisonlocaledir.patch \
-"
-
-SRC_URI[md5sum] = "6d1447f8c5c45c329371ef4bfe7d79a5"
-SRC_URI[sha256sum] = "ed4b4c19bd3a3034eb6769500a3592ff616759ef43cf30586dbb7a17c9dd695d"
-
-PACKAGECONFIG[msgcat-curses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/..,--disable-curses,ncurses,"
-
-LDFLAGS_prepend_libc-uclibc = " -lrt -lpthread "
-
-inherit autotools texinfo
-
-EXTRA_OECONF += "--without-lispdir \
-                 --disable-csharp \
-                 --disable-libasprintf \
-                 --disable-java \
-                 --disable-native-java \
-                 --disable-openmp \
-                 --disable-acl \
-                 --with-included-glib \
-                 --without-emacs \
-                 --without-cvs \
-                 --without-git \
-                 --with-included-libxml \
-                 --with-included-libcroco \
-                 --with-included-libunistring \
-                "
-EXTRA_OECONF_append_class-target = " \
-                 --with-bisonlocaledir=${datadir}/locale \
-"
-
-acpaths = '-I ${S}/gettext-runtime/m4 \
-           -I ${S}/gettext-tools/m4'
-
-do_install_append_libc-musl () {
-	rm -f ${D}${libdir}/charset.alias
-	rm -f ${D}${includedir}/libintl.h
-	rm -f ${D}${libdir}/libintl.la
-}
-
-# these lack the .x behind the .so, but shouldn't be in the -dev package
-# Otherwise you get the following results:
-# 7.4M    glibc/images/ep93xx/Angstrom-console-image-glibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
-# 25M     uclibc/images/ep93xx/Angstrom-console-image-uclibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
-# because gettext depends on gettext-dev, which pulls in more -dev packages:
-# 15228   KiB /ep93xx/libstdc++-dev_4.2.2-r2_ep93xx.ipk
-# 1300    KiB /ep93xx/uclibc-dev_0.9.29-r8_ep93xx.ipk
-# 140     KiB /armv4t/gettext-dev_0.14.1-r6_armv4t.ipk
-# 4       KiB /ep93xx/libgcc-s-dev_4.2.2-r2_ep93xx.ipk
-
-PACKAGES =+ "libgettextlib libgettextsrc"
-FILES_libgettextlib = "${libdir}/libgettextlib-*.so*"
-FILES_libgettextsrc = "${libdir}/libgettextsrc-*.so*"
-
-PACKAGES =+ "gettext-runtime gettext-runtime-dev gettext-runtime-doc"
-
-FILES_${PN} += "${libdir}/${BPN}/*"
-
-FILES_gettext-runtime = "${bindir}/gettext \
-                         ${bindir}/ngettext \
-                         ${bindir}/envsubst \
-                         ${bindir}/gettext.sh \
-                         ${libdir}/libasprintf.so* \
-                         ${libdir}/GNU.Gettext.dll \
-                        "
-FILES_gettext-runtime_append_libc-uclibc = " ${libdir}/libintl.so.* \
-                                             ${libdir}/charset.alias \
-                                           "
-FILES_gettext-runtime-dev += "${libdir}/libasprintf.a \
-                      ${includedir}/autosprintf.h \
-                     "
-FILES_gettext-runtime-dev_append_libc-uclibc = " ${libdir}/libintl.so \
-                                                 ${includedir}/libintl.h \
-                                               "
-FILES_gettext-runtime-doc = "${mandir}/man1/gettext.* \
-                             ${mandir}/man1/ngettext.* \
-                             ${mandir}/man1/envsubst.* \
-                             ${mandir}/man1/.* \
-                             ${mandir}/man3/* \
-                             ${docdir}/gettext/gettext.* \
-                             ${docdir}/gettext/ngettext.* \
-                             ${docdir}/gettext/envsubst.* \
-                             ${docdir}/gettext/*.3.html \
-                             ${datadir}/gettext/ABOUT-NLS \
-                             ${docdir}/gettext/csharpdoc/* \
-                             ${docdir}/libasprintf/autosprintf.html \
-                             ${infodir}/autosprintf.info \
-                            "
-
-do_install_append() {
-    rm -f ${D}${libdir}/preloadable_libintl.so
-}
-
-do_install_append_class-native () {
-	rm ${D}${datadir}/aclocal/*
-	rm ${D}${datadir}/gettext/config.rpath
-	rm ${D}${datadir}/gettext/po/Makefile.in.in
-	rm ${D}${datadir}/gettext/po/remove-potcdate.sin
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.19.8.1.bb b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.19.8.1.bb
new file mode 100644
index 0000000..7b8c1e8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/gettext/gettext_0.19.8.1.bb
@@ -0,0 +1,120 @@
+SUMMARY = "Utilities and libraries for producing multi-lingual messages"
+DESCRIPTION = "GNU gettext is a set of tools that provides a framework to help other programs produce multi-lingual messages. These tools include a set of conventions about how programs should be written to support message catalogs, a directory and file naming organization for the message catalogs themselves, a runtime library supporting the retrieval of translated messages, and a few stand-alone programs to massage in various ways the sets of translatable and already translated strings."
+HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
+SECTION = "libs"
+LICENSE = "GPLv3+ & LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "gettext-native virtual/libiconv expat"
+DEPENDS_class-native = "gettext-minimal-native"
+PROVIDES = "virtual/libintl virtual/gettext"
+PROVIDES_class-native = "virtual/gettext-native"
+RCONFLICTS_${PN} = "proxy-libintl"
+SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
+	   file://parallel.patch \
+	   file://add-with-bisonlocaledir.patch \
+"
+
+SRC_URI[md5sum] = "97e034cf8ce5ba73a28ff6c3c0638092"
+SRC_URI[sha256sum] = "ff942af0e438ced4a8b0ea4b0b6e0d6d657157c5e2364de57baa279c1c125c43"
+
+PACKAGECONFIG[msgcat-curses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/..,--disable-curses,ncurses,"
+
+LDFLAGS_prepend_libc-uclibc = " -lrt -lpthread "
+
+inherit autotools texinfo
+
+EXTRA_OECONF += "--without-lispdir \
+                 --disable-csharp \
+                 --disable-libasprintf \
+                 --disable-java \
+                 --disable-native-java \
+                 --disable-openmp \
+                 --disable-acl \
+                 --with-included-glib \
+                 --without-emacs \
+                 --without-cvs \
+                 --without-git \
+                 --with-included-libxml \
+                 --with-included-libcroco \
+                 --with-included-libunistring \
+                "
+EXTRA_OECONF_append_class-target = " \
+                 --with-bisonlocaledir=${datadir}/locale \
+"
+
+acpaths = '-I ${S}/gettext-runtime/m4 \
+           -I ${S}/gettext-tools/m4'
+
+do_install_append_libc-musl () {
+	rm -f ${D}${libdir}/charset.alias
+	rm -f ${D}${includedir}/libintl.h
+	rm -f ${D}${libdir}/libintl.la
+}
+
+# these lack the .x behind the .so, but shouldn't be in the -dev package
+# Otherwise you get the following results:
+# 7.4M    glibc/images/ep93xx/Angstrom-console-image-glibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
+# 25M     uclibc/images/ep93xx/Angstrom-console-image-uclibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
+# because gettext depends on gettext-dev, which pulls in more -dev packages:
+# 15228   KiB /ep93xx/libstdc++-dev_4.2.2-r2_ep93xx.ipk
+# 1300    KiB /ep93xx/uclibc-dev_0.9.29-r8_ep93xx.ipk
+# 140     KiB /armv4t/gettext-dev_0.14.1-r6_armv4t.ipk
+# 4       KiB /ep93xx/libgcc-s-dev_4.2.2-r2_ep93xx.ipk
+
+PACKAGES =+ "libgettextlib libgettextsrc"
+FILES_libgettextlib = "${libdir}/libgettextlib-*.so*"
+FILES_libgettextsrc = "${libdir}/libgettextsrc-*.so*"
+
+PACKAGES =+ "gettext-runtime gettext-runtime-dev gettext-runtime-doc"
+
+FILES_${PN} += "${libdir}/${BPN}/*"
+
+# The its/Makefile.am has defined:
+# itsdir = $(pkgdatadir)$(PACKAGE_SUFFIX)/its
+# not itsdir = $(pkgdatadir), so use wildcard to match the version.
+FILES_${PN} += "${datadir}/${BPN}-*/*"
+
+FILES_gettext-runtime = "${bindir}/gettext \
+                         ${bindir}/ngettext \
+                         ${bindir}/envsubst \
+                         ${bindir}/gettext.sh \
+                         ${libdir}/libasprintf.so* \
+                         ${libdir}/GNU.Gettext.dll \
+                        "
+FILES_gettext-runtime_append_libc-uclibc = " ${libdir}/libintl.so.* \
+                                             ${libdir}/charset.alias \
+                                           "
+FILES_gettext-runtime-dev += "${libdir}/libasprintf.a \
+                      ${includedir}/autosprintf.h \
+                     "
+FILES_gettext-runtime-dev_append_libc-uclibc = " ${libdir}/libintl.so \
+                                                 ${includedir}/libintl.h \
+                                               "
+FILES_gettext-runtime-doc = "${mandir}/man1/gettext.* \
+                             ${mandir}/man1/ngettext.* \
+                             ${mandir}/man1/envsubst.* \
+                             ${mandir}/man1/.* \
+                             ${mandir}/man3/* \
+                             ${docdir}/gettext/gettext.* \
+                             ${docdir}/gettext/ngettext.* \
+                             ${docdir}/gettext/envsubst.* \
+                             ${docdir}/gettext/*.3.html \
+                             ${datadir}/gettext/ABOUT-NLS \
+                             ${docdir}/gettext/csharpdoc/* \
+                             ${docdir}/libasprintf/autosprintf.html \
+                             ${infodir}/autosprintf.info \
+                            "
+
+do_install_append() {
+    rm -f ${D}${libdir}/preloadable_libintl.so
+}
+
+do_install_append_class-native () {
+	rm ${D}${datadir}/aclocal/*
+	rm ${D}${datadir}/gettext/config.rpath
+	rm ${D}${datadir}/gettext/po/Makefile.in.in
+	rm ${D}${datadir}/gettext/po/remove-potcdate.sin
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch
new file mode 100644
index 0000000..aee96aa
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch
@@ -0,0 +1,42 @@
+From d6501b107940e9f548c89236d773c6d33c15a5c9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 16 Apr 2016 13:28:59 -0700
+Subject: [PATCH 1/2] Do not ignore return value of write()
+
+gcc warns about ignoring return value when compiling
+with fortify turned on.
+
+assert when write() fails
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ glib/tests/unix.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/glib/tests/unix.c b/glib/tests/unix.c
+index 3543458..4e7ed85 100644
+--- a/glib/tests/unix.c
++++ b/glib/tests/unix.c
+@@ -32,14 +32,15 @@ test_pipe (void)
+   GError *error = NULL;
+   int pipefd[2];
+   char buf[1024];
+-  ssize_t bytes_read;
++  ssize_t bytes_read, bytes_written;
+   gboolean res;
+ 
+   res = g_unix_open_pipe (pipefd, FD_CLOEXEC, &error);
+   g_assert (res);
+   g_assert_no_error (error);
+ 
+-  write (pipefd[1], "hello", sizeof ("hello"));
++  bytes_written = write (pipefd[1], "hello", sizeof ("hello"));
++  g_assert (bytes_written != -1 && "write() failed");
+   memset (buf, 0, sizeof (buf));
+   bytes_read = read (pipefd[0], buf, sizeof(buf) - 1);
+   g_assert_cmpint (bytes_read, >, 0);
+-- 
+2.8.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0001-configure.ac-Do-not-use-readlink-when-cross-compilin.patch b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0001-configure.ac-Do-not-use-readlink-when-cross-compilin.patch
deleted file mode 100644
index 0be3631..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0001-configure.ac-Do-not-use-readlink-when-cross-compilin.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-commit 9b38d507ec37b3d7d4df6095fa7ed16b47d399f7
-Author: Drew Moseley <drew_moseley@mentor.com>
-Date:   Sat Mar 29 21:10:43 2014 -0400
-
-    configure.ac: Do not use readlink when cross compiling.
-
-    Do not use readlink to set ABS_GLIB_RUNTIME_LIBDIR when cross
-    compiling.  Doing so causes host paths to potentially pollute
-    the target.
-
-    Note that in this case the path is not converted to absolute if
-    it contains any ".." references so it's not completely correct.
-
-    Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=727575]
-    Signed-off-by: Drew Moseley <drew_moseley@mentor.com>
-
-diff -rub glib-2.38.2.orig/configure.ac glib-2.38.2/configure.ac
---- glib-2.38.2.orig/configure.ac	2014-04-03 20:17:13.035567143 -0400
-+++ glib-2.38.2/configure.ac	2014-04-03 20:19:07.071566057 -0400
-@@ -275,7 +275,11 @@
-            [],
- 	   [with_runtime_libdir=""])
- GLIB_RUNTIME_LIBDIR="$with_runtime_libdir"
-+AS_IF([ test $cross_compiling = yes ], [
-+ABS_GLIB_RUNTIME_LIBDIR="$libdir/$with_runtime_libdir"
-+], [
- ABS_GLIB_RUNTIME_LIBDIR="`readlink -m $libdir/$with_runtime_libdir`"
-+])
- AC_SUBST(GLIB_RUNTIME_LIBDIR)
- AC_SUBST(ABS_GLIB_RUNTIME_LIBDIR)
- AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"])
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Ignore-y2k-warnings.patch b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Ignore-y2k-warnings.patch
new file mode 100644
index 0000000..f61fa0a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Ignore-y2k-warnings.patch
@@ -0,0 +1,42 @@
+From b06b22fecc7deda8c65e28670562ca2371e4e725 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 16 Apr 2016 13:43:54 -0700
+Subject: [PATCH 2/2] tests: Ignore y2k warnings
+
+silences
+| ../../../../../../../../workspace/sources/glib-2.0/glib/tests/gdatetime.c: In function 'test_strftime':
+| ../../../../../../../../workspace/sources/glib-2.0/glib/tests/gdatetime.c:1338:3: error: '%c' yields only last 2 digits of year in some locales [-Werror=format-y2k]
+|    "a%a A%A b%b B%B c%c C%C d%d e%e F%F g%g G%G h%h H%H I%I j%j m%m M%M "
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ glib/tests/gdatetime.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c
+index 16a163c..e6062fc 100644
+--- a/glib/tests/gdatetime.c
++++ b/glib/tests/gdatetime.c
+@@ -1326,6 +1326,9 @@ test_z (void)
+   g_time_zone_unref (tz);
+ }
+ 
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-y2k"
++
+ static void
+ test_strftime (void)
+ {
+@@ -1351,6 +1354,7 @@ test_strftime (void)
+     }
+ #endif
+ }
++#pragma GCC diagnostic pop
+ 
+ static void
+ test_find_interval (void)
+-- 
+2.8.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
index f1e688c..9b4ded1 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
@@ -46,7 +46,7 @@
 @@ -545,7 +548,6 @@ test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) --
  
  EXTRA_DIST += test.gresource.xml test1.txt test2.gresource.xml test2.txt test3.gresource.xml test3.txt test4.gresource.xml
- CLEANFILES += test_resources.c test_resources2.[ch] plugin_resources.c test.gresource
+ CLEANFILES += test-generated.txt test_resources.c test_resources2.[ch] plugin_resources.c test.gresource
 -endif # !CROSS_COMPILING
  
  BUILT_SOURCES += giotypefuncs.c
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/glib-2.0-configure-readlink.patch b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/glib-2.0-configure-readlink.patch
deleted file mode 100644
index 9759d11..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/glib-2.0-configure-readlink.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-configure.ac: change readlink -f to -m
-
-Change "readlink -f" to "readlink -m" since $libdir/$with_runtime_libdir
-may not exist.
-
-This patch should go to the upstream, I will send it sooner.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
---- a/configure.ac
-+++ b/configure.ac
-@@ -271,7 +271,7 @@ AC_ARG_WITH(runtime-libdir,
-            [],
- 	   [with_runtime_libdir=""])
- GLIB_RUNTIME_LIBDIR="$with_runtime_libdir"
--ABS_GLIB_RUNTIME_LIBDIR="`readlink -f $libdir/$with_runtime_libdir`"
-+ABS_GLIB_RUNTIME_LIBDIR="`readlink -m $libdir/$with_runtime_libdir`"
- AC_SUBST(GLIB_RUNTIME_LIBDIR)
- AC_SUBST(ABS_GLIB_RUNTIME_LIBDIR)
- AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"])
--- 
-1.8.1.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
index f9e3f3d..65d5b43 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
@@ -6,44 +6,42 @@
 Upstream-Status: Inappropriate
 Signed-off-by: Ross Burton <ross.burton@intel.com>
 
+Port patch to 2.48
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ gio/giomodule.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
 diff --git a/gio/giomodule.c b/gio/giomodule.c
-index 56c498c..a2e32b7 100644
+index da7c167..cc0bc7c 100644
 --- a/gio/giomodule.c
 +++ b/gio/giomodule.c
-@@ -47,6 +47,27 @@
- #include "gdesktopappinfo.h"
- #endif
- 
+@@ -40,6 +40,8 @@
+ #include "gnetworkmonitor.h"
+ #ifdef G_OS_WIN32
+ #include "gregistrysettingsbackend.h"
++#else
 +#include <dlfcn.h>
-+
-+/*
-+ * Generate a GIO module directory based on where glib is installed
-+ */
-+static const char *
-+_get_gio_module_dir (void)
-+{
-+  Dl_info info;
-+
-+  if (dladdr (g_io_module_new, &info)) {
-+    char *libdir = g_path_get_dirname (info.dli_fname);
-+    char *dir = g_build_filename (libdir, "gio", "modules", NULL);
-+    g_free (libdir);
-+    return dir;
-+  } else {
-+    return GIO_MODULE_DIR;
-+  }
-+}
-+
-+
- /**
-  * SECTION:giomodule
-  * @short_description: Loadable GIO Modules
-@@ -1057,7 +1078,7 @@ _g_io_modules_ensure_loaded (void)
-       /* Then load the compiled in path */
-       module_dir = g_getenv ("GIO_MODULE_DIR");
-       if (module_dir == NULL)
--        module_dir = GIO_MODULE_DIR;
-+        module_dir = _get_gio_module_dir ();
+ #endif
+ #include <glib/gstdio.h>
  
-       g_io_modules_scan_all_in_directory_with_scope (module_dir, scope);
+@@ -1036,7 +1038,15 @@ get_gio_module_dir (void)
+ #endif
+       g_free (install_dir);
+ #else
+-      module_dir = g_strdup (GIO_MODULE_DIR);
++      Dl_info info;
++
++      if (dladdr (g_io_module_new, &info)) {
++        char *libdir = g_path_get_dirname (info.dli_fname);
++        module_dir = g_build_filename (libdir, "gio", "modules", NULL);
++        g_free (libdir);
++      } else {
++        module_dir = g_strdup (GIO_MODULE_DIR);
++      }
+ #endif
+     }
  
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0_2.46.2.bb b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0_2.46.2.bb
deleted file mode 100644
index 8e445b4..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0_2.46.2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-require glib.inc
-
-PE = "1"
-
-SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
-           file://configure-libtool.patch \
-           file://fix-conflicting-rand.patch \
-           file://glib-2.0-configure-readlink.patch \
-           file://run-ptest \
-           file://ptest-paths.patch \
-           file://uclibc_musl_translation.patch \
-           file://0001-configure.ac-Do-not-use-readlink-when-cross-compilin.patch \
-           file://allow-run-media-sdX-drive-mount-if-username-root.patch \
-	   file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \
-           file://Enable-more-tests-while-cross-compiling.patch \
-           file://gi-exclude.patch \
-           file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \
-          "
-
-SRC_URI_append_class-native = " file://glib-gettextize-dir.patch \
-                                file://relocate-modules.patch"
-
-SRC_URI[md5sum] = "7f815d6e46df68e070cb421ed7f1139e"
-SRC_URI[sha256sum] = "5031722e37036719c1a09163cc6cf7c326e4c4f1f1e074b433c156862bd733db"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0_2.48.2.bb b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0_2.48.2.bb
new file mode 100644
index 0000000..a45f644
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib-2.0_2.48.2.bb
@@ -0,0 +1,26 @@
+require glib.inc
+
+PE = "1"
+
+SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
+           file://configure-libtool.patch \
+           file://fix-conflicting-rand.patch \
+           file://run-ptest \
+           file://ptest-paths.patch \
+           file://uclibc_musl_translation.patch \
+           file://allow-run-media-sdX-drive-mount-if-username-root.patch \
+           file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \
+           file://Enable-more-tests-while-cross-compiling.patch \
+           file://gi-exclude.patch \
+           file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \
+           file://0001-Do-not-ignore-return-value-of-write.patch \
+           file://0002-tests-Ignore-y2k-warnings.patch \
+           "
+
+SRC_URI_append_class-native = " file://glib-gettextize-dir.patch \
+                                file://relocate-modules.patch"
+
+SRC_URI[md5sum] = "f4ac1aa2efd4f5798c37625ea697ac57"
+SRC_URI[sha256sum] = "f25e751589cb1a58826eac24fbd4186cda4518af772806b666a3f91f66e6d3f4"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib.inc b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib.inc
index e764fad..906e0d4 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/glib-2.0/glib.inc
@@ -26,7 +26,7 @@
 
 LEAD_SONAME = "libglib-2.0.*"
 
-inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache
+inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache python3native
 
 S = "${WORKDIR}/glib-${PV}"
 
@@ -44,7 +44,7 @@
 EXTRA_OECONF_append_libc-uclibc = " --with-libiconv=gnu"
 
 do_configure_prepend() {
-	sed -i -e '1s,#!.*,#!${USRBINPATH}/env python,' ${S}/gio/gdbus-2.0/codegen/gdbus-codegen.in
+	sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/gio/gdbus-2.0/codegen/gdbus-codegen.in
 }
 
 FILES_${PN} = "${libdir}/lib*${SOLIBS} \
@@ -59,7 +59,8 @@
                     ${bindir}/glib-mkenums \
                     ${bindir}/glib-compile-resources \
                     ${datadir}/glib-2.0/gettext/po/Makefile.in.in \
-                    ${datadir}/glib-2.0/schemas/gschema.dtd"
+                    ${datadir}/glib-2.0/schemas/gschema.dtd \
+                    ${datadir}/gettext/its"
 FILES_${PN}-dbg += "${datadir}/glib-2.0/gdb ${datadir}/gdb"
 FILES_${PN}-codegen = "${datadir}/glib-2.0/codegen/*.py \
                        ${bindir}/gdbus-codegen"
@@ -67,15 +68,19 @@
 
 ARM_INSTRUCTION_SET_armv4 = "arm"
 ARM_INSTRUCTION_SET_armv5 = "arm"
+# Valgrind runtime detection works using hand-written assembly, which
+# doesn't support mips16e
+CPPFLAGS_append_class-target_mips16e = " -DNVALGRIND=1"
 
 USE_NLS = "yes"
 
 do_install_append () {
 	if [ -f ${D}${bindir}/gtester-report ]; then
-		sed ${D}${bindir}/gtester-report -i -e '1s|^#!.*|#!/usr/bin/env python|'
+		sed ${D}${bindir}/gtester-report -i -e '1s|^#!.*|#!/usr/bin/env python3|'
 	fi
 
 	# Remove some unpackaged files
+	rm -rf ${D}${datadir}/glib-2.0/codegen/__pycache__
 	rm -f ${D}${datadir}/glib-2.0/codegen/*.pyc
 	rm -f ${D}${datadir}/glib-2.0/codegen/*.pyo
 
@@ -108,8 +113,6 @@
             tzdata-asia \
             tzdata-europe \
             tzdata-posix \
-            python-pygobject \
-            python-dbus \
             shared-mime-info \
            "
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-networking/glib-networking_2.46.1.bb b/import-layers/yocto-poky/meta/recipes-core/glib-networking/glib-networking_2.46.1.bb
deleted file mode 100644
index 749ac98..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glib-networking/glib-networking_2.46.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "GLib networking extensions"
-DESCRIPTION = "glib-networking contains the implementations of certain GLib networking features that cannot be implemented directly in GLib itself because of their dependencies."
-HOMEPAGE = "http://git.gnome.org/browse/glib-networking/"
-BUGTRACKER = "http://bugzilla.gnome.org"
-
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-SECTION = "libs"
-DEPENDS = "glib-2.0 intltool-native"
-
-SRC_URI[archive.md5sum] = "c000e0b579f5d8fd48efebc7ac4d95dc"
-SRC_URI[archive.sha256sum] = "d5034214217f705891b6c9e719cc2c583c870bfcfdc454ebbb5e5e8940ac90b1"
-
-PACKAGECONFIG ??= "ca-certificates gnutls"
-
-# No explicit dependency as it works without ca-certificates installed
-PACKAGECONFIG[ca-certificates] = "--with-ca-certificates=${sysconfdir}/ssl/certs/ca-certificates.crt,--without-ca-certificates"
-PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
-PACKAGECONFIG[libproxy] = "--with-libproxy,--without-libproxy,libproxy"
-PACKAGECONFIG[pkcs11] = "--with-pkcs11,--without-pkcs11,p11-kit"
-
-EXTRA_OECONF = "--without-gnome-proxy"
-
-inherit gnomebase gettext upstream-version-is-even gio-module-cache
-
-FILES_${PN} += "${libdir}/gio/modules/libgio*.so ${datadir}/dbus-1/services/"
-FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la"
-FILES_${PN}-staticdev += "${libdir}/gio/modules/libgio*.a"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glib-networking/glib-networking_2.48.2.bb b/import-layers/yocto-poky/meta/recipes-core/glib-networking/glib-networking_2.48.2.bb
new file mode 100644
index 0000000..50d9983
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glib-networking/glib-networking_2.48.2.bb
@@ -0,0 +1,29 @@
+SUMMARY = "GLib networking extensions"
+DESCRIPTION = "glib-networking contains the implementations of certain GLib networking features that cannot be implemented directly in GLib itself because of their dependencies."
+HOMEPAGE = "http://git.gnome.org/browse/glib-networking/"
+BUGTRACKER = "http://bugzilla.gnome.org"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+SECTION = "libs"
+DEPENDS = "glib-2.0 intltool-native"
+
+SRC_URI[archive.md5sum] = "d7cf81d52c856b0c66f7821021f40e08"
+SRC_URI[archive.sha256sum] = "925c0c49d6b2b8b5695f2e33cd952d1dbb7d18d3f2f796413577719315bb3a84"
+
+PACKAGECONFIG ??= "ca-certificates gnutls"
+
+# No explicit dependency as it works without ca-certificates installed
+PACKAGECONFIG[ca-certificates] = "--with-ca-certificates=${sysconfdir}/ssl/certs/ca-certificates.crt,--without-ca-certificates"
+PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
+PACKAGECONFIG[libproxy] = "--with-libproxy,--without-libproxy,libproxy"
+PACKAGECONFIG[pkcs11] = "--with-pkcs11,--without-pkcs11,p11-kit"
+
+EXTRA_OECONF = "--without-gnome-proxy"
+
+inherit gnomebase gettext upstream-version-is-even gio-module-cache
+
+FILES_${PN} += "${libdir}/gio/modules/libgio*.so ${datadir}/dbus-1/services/"
+FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la"
+FILES_${PN}-staticdev += "${libdir}/gio/modules/libgio*.a"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native/fix_for_centos_5.8.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native/fix_for_centos_5.8.patch
deleted file mode 100644
index 186a480..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native/fix_for_centos_5.8.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Upstream-Status: Inappropriate [other]
-
-This is a hack to fix building the locale bits on an older
-CentOs 5.X machine
-
-Index: git/locale/programs/config.h
-===================================================================
---- git/locale/programs/config.h
-+++ git.orig/locale/programs/config.h
-@@ -19,6 +19,8 @@
- #ifndef _LD_CONFIG_H
- #define _LD_CONFIG_H	1
- 
-+#define DUMMY_LOCALE_T
-+
- /* Use the internal textdomain used for libc messages.  */
- #define PACKAGE _libc_intl_domainname
- #ifndef VERSION
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native_2.23.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native_2.23.bb
deleted file mode 100644
index fa930fd..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native_2.23.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "Cross locale generation tool for glibc"
-HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
-SECTION = "libs"
-LICENSE = "LGPL-2.1"
-
-LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
-      file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-      file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
-      file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-
-
-inherit native
-inherit autotools
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:${FILE_DIRNAME}/glibc:"
-
-SRCBRANCH ?= "release/${PV}/master"
-GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
-
-SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
-           git://github.com/kraj/localedef;branch=master;name=localedef;destsuffix=git/localedef \
-           file://fix_for_centos_5.8.patch \
-           ${EGLIBCPATCHES} \
-"
-EGLIBCPATCHES = "\
-           file://0016-timezone-re-written-tzselect-as-posix-sh.patch \
-           file://0017-Remove-bash-dependency-for-nscd-init-script.patch \
-           file://0018-eglibc-Cross-building-and-testing-instructions.patch \
-           file://0019-eglibc-Help-bootstrap-cross-toolchain.patch \
-           file://0020-eglibc-cherry-picked-from.patch \
-           file://0021-eglibc-Clear-cache-lines-on-ppc8xx.patch \
-           file://0022-eglibc-Resolve-__fpscr_values-on-SH4.patch \
-           file://0023-eglibc-Install-PIC-archives.patch \
-           file://0025-eglibc-Forward-port-cross-locale-generation-support.patch \
-"
-
-SRCREV_glibc ?= "e742928c1592b43db6809db4f39e67be151cdd27"
-SRCREV_localedef ?= "5a81ff9f06a7a808d4c3d37bbf34077a4c5902ed"
-
-# Makes for a rather long rev (22 characters), but...
-#
-SRCREV_FORMAT = "glibc_localedef"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF = "--with-glibc=${S}"
-CFLAGS += "-fgnu89-inline -std=gnu99 -DIS_IN\(x\)='0'"
-
-do_configure () {
-	${S}/localedef/configure ${EXTRA_OECONF}
-}
-
-
-do_install() {
-	install -d ${D}${bindir}
-	install -m 0755 ${B}/localedef ${D}${bindir}/cross-localedef
-}
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native_2.24.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native_2.24.bb
new file mode 100644
index 0000000..d4ccced
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/cross-localedef-native_2.24.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Cross locale generation tool for glibc"
+HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
+SECTION = "libs"
+LICENSE = "LGPL-2.1"
+
+LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
+      file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+      file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
+      file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+# Tell autotools that we're working in the localedef directory
+#
+AUTOTOOLS_SCRIPT_PATH = "${S}/localedef"
+
+inherit native
+inherit autotools
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:${FILE_DIRNAME}/glibc:"
+
+SRCBRANCH ?= "release/${PV}/master"
+GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
+
+SRCREV_glibc ?= "ea23815a795f72035262953dad5beb03e09c17dd"
+SRCREV_localedef ?= "29869b6dc11427c5bab839bdb155c85a7c644c71"
+
+SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
+           git://github.com/kraj/localedef;branch=master;name=localedef;destsuffix=git/localedef \
+           file://0016-timezone-re-written-tzselect-as-posix-sh.patch \
+           file://0017-Remove-bash-dependency-for-nscd-init-script.patch \
+           file://0018-eglibc-Cross-building-and-testing-instructions.patch \
+           file://0019-eglibc-Help-bootstrap-cross-toolchain.patch \
+           file://0020-eglibc-cherry-picked-from.patch \
+           file://0021-eglibc-Clear-cache-lines-on-ppc8xx.patch \
+           file://0022-eglibc-Resolve-__fpscr_values-on-SH4.patch \
+           file://0023-eglibc-Install-PIC-archives.patch \
+           file://0024-eglibc-Forward-port-cross-locale-generation-support.patch \
+           file://0025-Define-DUMMY_LOCALE_T-if-not-defined.patch \
+"
+# Makes for a rather long rev (22 characters), but...
+#
+SRCREV_FORMAT = "glibc_localedef"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF = "--with-glibc=${S}"
+CFLAGS += "-fgnu89-inline -std=gnu99 -DIS_IN\(x\)='0'"
+
+do_install() {
+	install -d ${D}${bindir}
+	install -m 0755 ${B}/localedef ${D}${bindir}/cross-localedef
+}
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial.inc b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial.inc
index 5975fd2..2e3bc81 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial.inc
@@ -5,13 +5,13 @@
 PACKAGES_DYNAMIC = ""
 
 STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
-STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
 TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
 
 do_configure () {
 	(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
 	find ${S} -name "configure" | xargs touch
-	cfgscript=`python -c "import os; print os.path.relpath('${S}', '.')"`/configure
+	cfgscript=`python3 -c "import os; print(os.path.relpath('${S}', '.'))"`/configure
 	$cfgscript --host=${TARGET_SYS} --build=${BUILD_SYS} \
 		--prefix=/usr \
 		--without-cvs --disable-sanity-checks \
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial_2.23.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial_2.24.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial_2.23.bb
rename to import-layers/yocto-poky/meta/recipes-core/glibc/glibc-initial_2.24.bb
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-ld.inc b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-ld.inc
index c5f4db2..b982368 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-ld.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-ld.inc
@@ -14,10 +14,14 @@
         "mips64el-n32": ["ld.so.1", "FLAG_ELF_LIBC6"],
         "mips64el": ["ld.so.1", "FLAG_ELF_LIBC6"],
         "mips-nf": ["ld.so.1", "FLAG_ELF_LIBC6"],
+        "mipsisa32r6": ["ld-linux-mipsn8.so.1", "FLAG_ELF_LIBC6"],
+        "mipsisa32r6el": ["ld-linux-mipsn8.so.1", "FLAG_ELF_LIBC6"],
         "mips64-nf-n32": ["ld.so.1", "FLAG_ELF_LIBC6"],
         "mips64-nf": ["ld.so.1", "FLAG_ELF_LIBC6"],
         "mips64el-nf-n32": ["ld.so.1", "FLAG_ELF_LIBC6"],
         "mips64el-nf": ["ld.so.1", "FLAG_ELF_LIBC6"],
+        "mipsisa64r6": ["ld-linux-mipsn8.so.1", "FLAG_ELF_LIBC6"],
+        "mipsisa64r6el": ["ld-linux-mipsn8.so.1", "FLAG_ELF_LIBC6"],
         "powerpc": ["ld.so.1", "FLAG_ELF_LIBC6"],
         "powerpc-nf": ["ld.so.1", "FLAG_ELF_LIBC6"],
         "powerpc64": ["ld64.so.1", "FLAG_ELF_LIBC6"],
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale.inc b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale.inc
index e868e38..0a7adfc 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale.inc
@@ -19,7 +19,7 @@
 
 # default to disabled 
 ENABLE_BINARY_LOCALE_GENERATION ?= "0"
-ENABLE_BINARY_LOCALE_GENERATION_pn-nativesdk-glibc-locale = "0"
+ENABLE_BINARY_LOCALE_GENERATION_pn-nativesdk-glibc-locale = "1"
 
 #enable locale generation on these arches
 # BINARY_LOCALE_ARCHES is a space separated list of regular expressions
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale_2.23.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale_2.24.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale_2.23.bb
rename to import-layers/yocto-poky/meta/recipes-core/glibc/glibc-locale_2.24.bb
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-mtrace_2.23.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-mtrace_2.24.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/glibc/glibc-mtrace_2.23.bb
rename to import-layers/yocto-poky/meta/recipes-core/glibc/glibc-mtrace_2.24.bb
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts.inc b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts.inc
index 3a06773..bce0a42 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts.inc
@@ -14,3 +14,7 @@
 		install -m 0755 ${SRC}/$i ${D}${bindir}/
 	done
 }
+
+# sotruss script requires sotruss-lib.so (given by libsotruss package), 
+# to produce trace of the library calls.
+RDEPENDS_${PN} += "libsotruss"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts_2.23.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts_2.24.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts_2.23.bb
rename to import-layers/yocto-poky/meta/recipes-core/glibc/glibc-scripts_2.24.bb
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc.inc b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc.inc
index bf1dccd..e85c704 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc.inc
@@ -3,7 +3,7 @@
 require glibc-testing.inc
 
 STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
-STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
 PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
 
 TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-locale-fix-hard-coded-reference-to-gcc-E.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-locale-fix-hard-coded-reference-to-gcc-E.patch
new file mode 100644
index 0000000..d5fce73
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-locale-fix-hard-coded-reference-to-gcc-E.patch
@@ -0,0 +1,39 @@
+From 2c0ab83eb54c0e0fccbf261726dc03803b236079 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Rosen?= <jeremy.rosen@smile.fr>
+Date: Mon, 22 Aug 2016 16:09:25 +0200
+Subject: [PATCH] locale: fix hard-coded reference to gcc -E
+
+When new version of compilers are published, they may not be compatible with 
+older versions of software. This is particularly common when software is built
+with -Werror.
+
+Autotools provides a way for a user to specify the name of his compiler using a
+set of variables ($CC $CXX $CPP etc.). Those variables are used correctly when
+compiling glibc but the script used to generate transliterations in the locale/
+subdirectory directly calls the gcc binary to get the output of the 
+preprocessor instead of using the $CPP variable provided by the build 
+environment. 
+
+This patch replaces the hard-coded reference to the gcc binary with the proper
+environment variable, thus allowing a user to override it.
+
+Upstream-Status : Submitted [https://sourceware.org/ml/libc-alpha/2016-08/msg00746.html]
+
+---
+ locale/gen-translit.pl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/locale/gen-translit.pl b/locale/gen-translit.pl
+index 30d3f2f..7b287fa 100644
+--- a/locale/gen-translit.pl
++++ b/locale/gen-translit.pl
+@@ -1,5 +1,5 @@
+ #!/usr/bin/perl -w
+-open F, "cat C-translit.h.in | gcc -E - |" || die "Cannot preprocess input file";
++open F, 'cat C-translit.h.in | ${CPP:-gcc -E} - |' || die "Cannot preprocess input file";
+ 
+ 
+ sub cstrlen {
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
index 97c2800..ca33758 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
@@ -1,7 +1,7 @@
-From 66d04e2cd8badb0984050e4e9f2732f47151fbbf Mon Sep 17 00:00:00 2001
+From 7e11aafc3a7cb873b3f648740c8acd379597e4d1 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 01:48:24 +0000
-Subject: [PATCH 01/24] nativesdk-glibc: Look for host system ld.so.cache as
+Subject: [PATCH 01/25] nativesdk-glibc: Look for host system ld.so.cache as
  well
 
 Upstream-Status: Inappropriate [embedded specific]
@@ -31,7 +31,7 @@
  1 file changed, 8 insertions(+), 8 deletions(-)
 
 diff --git a/elf/dl-load.c b/elf/dl-load.c
-index 6fb615e..ee3d1e6 100644
+index c0d6249..2c73105 100644
 --- a/elf/dl-load.c
 +++ b/elf/dl-load.c
 @@ -2094,6 +2094,14 @@ _dl_map_object (struct link_map *loader, const char *name,
@@ -65,5 +65,5 @@
        if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
  	_dl_debug_printf ("\n");
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
index 473b894..5428468 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
@@ -1,7 +1,7 @@
-From 179dc5f1e13c3ff96d5f21a2a78c089cf120ceb8 Mon Sep 17 00:00:00 2001
+From 5fd884dc28d5d84001fae8ffdd8be698bb84143e Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 01:50:00 +0000
-Subject: [PATCH 02/24] nativesdk-glibc: Fix buffer overrun with a relocated
+Subject: [PATCH 02/25] nativesdk-glibc: Fix buffer overrun with a relocated
  SDK
 
 When ld-linux-*.so.2 is relocated to a path that is longer than the
@@ -22,7 +22,7 @@
  1 file changed, 12 insertions(+)
 
 diff --git a/elf/dl-load.c b/elf/dl-load.c
-index ee3d1e6..c4a42e9 100644
+index 2c73105..c7b8797 100644
 --- a/elf/dl-load.c
 +++ b/elf/dl-load.c
 @@ -1793,7 +1793,19 @@ open_path (const char *name, size_t namelen, int mode,
@@ -46,5 +46,5 @@
      {
        struct r_search_path_elem *this_dir = *dirs;
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
index 60f9f17..7cba6cc 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
@@ -1,7 +1,7 @@
-From e76048898ae9aa49dc70d6f9b1bbc22082e61fe3 Mon Sep 17 00:00:00 2001
+From c99892f2018cd7fa0f37b53e6cebec99fa036472 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 01:51:38 +0000
-Subject: [PATCH 03/24] nativesdk-glibc: Raise the size of arrays containing dl
+Subject: [PATCH 03/25] nativesdk-glibc: Raise the size of arrays containing dl
  paths
 
 This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings
@@ -24,10 +24,10 @@
  sysdeps/generic/dl-cache.h | 4 ----
  6 files changed, 13 insertions(+), 9 deletions(-)
 
-diff --git a/elf/dl-cache.c b/elf/dl-cache.c
-index dec49bc..862f1d8 100644
---- a/elf/dl-cache.c
-+++ b/elf/dl-cache.c
+Index: git/elf/dl-cache.c
+===================================================================
+--- git.orig/elf/dl-cache.c
++++ git/elf/dl-cache.c
 @@ -132,6 +132,10 @@ do									      \
  while (0)
  
@@ -39,11 +39,11 @@
  int
  internal_function
  _dl_cache_libcmp (const char *p1, const char *p2)
-diff --git a/elf/dl-load.c b/elf/dl-load.c
-index c4a42e9..acf6c03 100644
---- a/elf/dl-load.c
-+++ b/elf/dl-load.c
-@@ -106,8 +106,8 @@ static size_t max_capstrlen attribute_relro;
+Index: git/elf/dl-load.c
+===================================================================
+--- git.orig/elf/dl-load.c
++++ git/elf/dl-load.c
+@@ -106,8 +106,8 @@ static size_t max_capstrlen attribute_re
  /* Get the generated information about the trusted directories.  */
  #include "trusted-dirs.h"
  
@@ -54,10 +54,10 @@
  {
    SYSTEM_DIRS_LEN
  };
-diff --git a/elf/interp.c b/elf/interp.c
-index 422ea95e..6d61a36 100644
---- a/elf/interp.c
-+++ b/elf/interp.c
+Index: git/elf/interp.c
+===================================================================
+--- git.orig/elf/interp.c
++++ git/elf/interp.c
 @@ -18,5 +18,5 @@
  
  #include <runtime-linker.h>
@@ -65,11 +65,11 @@
 -const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
 +const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp")))
    = RUNTIME_LINKER;
-diff --git a/elf/ldconfig.c b/elf/ldconfig.c
-index f54ec22..0e78a83 100644
---- a/elf/ldconfig.c
-+++ b/elf/ldconfig.c
-@@ -167,6 +167,9 @@ static struct argp argp =
+Index: git/elf/ldconfig.c
+===================================================================
+--- git.orig/elf/ldconfig.c
++++ git/elf/ldconfig.c
+@@ -168,6 +168,9 @@ static struct argp argp =
    options, parse_opt, NULL, doc, NULL, more_help, NULL
  };
  
@@ -79,10 +79,10 @@
  /* Check if string corresponds to an important hardware capability or
     a platform.  */
  static int
-diff --git a/elf/rtld.c b/elf/rtld.c
-index 52160df..80f0582 100644
---- a/elf/rtld.c
-+++ b/elf/rtld.c
+Index: git/elf/rtld.c
+===================================================================
+--- git.orig/elf/rtld.c
++++ git/elf/rtld.c
 @@ -99,6 +99,7 @@ uintptr_t __pointer_chk_guard_local
  strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
  #endif
@@ -91,7 +91,7 @@
  
  /* List of auditing DSOs.  */
  static struct audit_list
-@@ -873,12 +874,12 @@ of this helper program; chances are you did not intend to run this program.\n\
+@@ -873,12 +874,12 @@ of this helper program; chances are you
    --list                list all dependencies and how they are resolved\n\
    --verify              verify that given object really is a dynamically linked\n\
  			object we can handle\n\
@@ -106,10 +106,10 @@
  
        ++_dl_skip_args;
        --_dl_argc;
-diff --git a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h
-index 70d4aeb..5c726d0 100644
---- a/sysdeps/generic/dl-cache.h
-+++ b/sysdeps/generic/dl-cache.h
+Index: git/sysdeps/generic/dl-cache.h
+===================================================================
+--- git.orig/sysdeps/generic/dl-cache.h
++++ git/sysdeps/generic/dl-cache.h
 @@ -27,10 +27,6 @@
    ((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
  #endif
@@ -134,3 +134,38 @@
  
  /* The path elements, as determined by the __gconv_get_path function.
     All path elements end in a slash.  */
+Index: git/locale/findlocale.c
+===================================================================
+--- git.orig/locale/findlocale.c
++++ git/locale/findlocale.c
+@@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attr
+    which are somehow addressed.  */
+ struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST];
+ 
+-const char _nl_default_locale_path[] attribute_hidden = COMPLOCALEDIR;
++char _nl_default_locale_path[4096] __attribute__ ((section (".gccrelocprefix"))) attribute_hidden = COMPLOCALEDIR;
+ 
+ /* Checks if the name is actually present, that is, not NULL and not
+    empty.  */
+@@ -168,7 +168,7 @@ _nl_find_locale (const char *locale_path
+ 
+       /* Nothing in the archive.  Set the default path to search below.  */
+       locale_path = _nl_default_locale_path;
+-      locale_path_len = sizeof _nl_default_locale_path;
++      locale_path_len = strlen(_nl_default_locale_path) + 1;
+     }
+   else
+     /* We really have to load some data.  First see whether the name is
+Index: git/locale/localeinfo.h
+===================================================================
+--- git.orig/locale/localeinfo.h
++++ git/locale/localeinfo.h
+@@ -322,7 +322,7 @@ _nl_lookup_word (locale_t l, int categor
+ }
+ 
+ /* Default search path if no LOCPATH environment variable.  */
+-extern const char _nl_default_locale_path[] attribute_hidden;
++extern char _nl_default_locale_path[] attribute_hidden;
+ 
+ /* Load the locale data for CATEGORY from the file specified by *NAME.
+    If *NAME is "", use environment variables as specified by POSIX, and
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
index 21f04a1..3127de6 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
@@ -1,7 +1,7 @@
-From 2e1638115f0f924ee8235eee9265047054c15cfd Mon Sep 17 00:00:00 2001
+From a56e7aa2fd10b178b9498f88a7a2ca8aad671a53 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 31 Dec 2015 14:35:35 -0800
-Subject: [PATCH 04/24] nativesdk-glibc: Allow 64 bit atomics for x86
+Subject: [PATCH 04/25] nativesdk-glibc: Allow 64 bit atomics for x86
 
 The fix consist of allowing 64bit atomic ops for x86.
 This should be safe for i586 and newer CPUs.
@@ -11,11 +11,13 @@
 Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
+Upstream-Status: Pending
+
  sysdeps/i386/atomic-machine.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/sysdeps/i386/atomic-machine.h b/sysdeps/i386/atomic-machine.h
-index 59f3d34..6f6b7ff 100644
+index ce62b33..4fe44ea 100644
 --- a/sysdeps/i386/atomic-machine.h
 +++ b/sysdeps/i386/atomic-machine.h
 @@ -54,7 +54,7 @@ typedef uintmax_t uatomic_max_t;
@@ -28,5 +30,5 @@
  
  
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
index ba8c92e..dc0dfad 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
@@ -1,7 +1,7 @@
-From 7ff57edfe24b4243373fcb896ee0b613938c1ec9 Mon Sep 17 00:00:00 2001
+From 450473ce27b47cebec2c5c5b611a8c8bed41e6e8 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:01:50 +0000
-Subject: [PATCH 05/24] fsl e500/e5500/e6500/603e fsqrt implementation
+Subject: [PATCH 05/25] fsl e500/e5500/e6500/603e fsqrt implementation
 
 Upstream-Status: Pending
 Signed-off-by: Edmar Wienskoski <edmar@freescale.com>
@@ -1580,5 +1580,5 @@
 @@ -0,0 +1 @@
 +powerpc/powerpc64/e6500/fpu
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
index 086a73d..f267f66 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
@@ -1,7 +1,7 @@
-From 61129ef3ee735b300604f75d50e01cb29f4387f4 Mon Sep 17 00:00:00 2001
+From bb065b78e9e0d3301e64a26e37550a657c885ebc Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:11:22 +0000
-Subject: [PATCH 06/24] readlib: Add OECORE_KNOWN_INTERPRETER_NAMES to known
+Subject: [PATCH 06/25] readlib: Add OECORE_KNOWN_INTERPRETER_NAMES to known
  names
 
 This bolts in a hook for OE to pass its own version of interpreter
@@ -17,7 +17,7 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/elf/readlib.c b/elf/readlib.c
-index 7fd5b8a..2f5da9f 100644
+index 8a66ffe..08d56fc 100644
 --- a/elf/readlib.c
 +++ b/elf/readlib.c
 @@ -51,6 +51,7 @@ static struct known_names interpreters[] =
@@ -29,5 +29,5 @@
  
  static struct known_names known_libs[] =
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch
index 952784b..612e892 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch
@@ -1,7 +1,7 @@
-From f936548decac99501f9a4c522a3211d16542fa49 Mon Sep 17 00:00:00 2001
+From 4a91bbdb11a15f93094695bba4e0849c421fad48 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:15:07 +0000
-Subject: [PATCH 07/24] ppc/sqrt: Fix undefined reference to `__sqrt_finite'
+Subject: [PATCH 07/25] ppc/sqrt: Fix undefined reference to `__sqrt_finite'
 
 on ppc fixes the errors like below
 | ./.libs/libpulsecore-1.1.so: undefined reference to `__sqrt_finite'
@@ -204,5 +204,5 @@
  }
 +strong_alias (__ieee754_sqrtf, __sqrtf_finite)
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
index 8d513ab..9e222b7 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
@@ -1,7 +1,7 @@
-From d02704895fdce917e337619a4414042f63edd88b Mon Sep 17 00:00:00 2001
+From ce2746a1560b4430d89d114e1b65c7be225b4c2a Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:16:38 +0000
-Subject: [PATCH 08/24] __ieee754_sqrt{,f} are now inline functions and call
+Subject: [PATCH 08/25] __ieee754_sqrt{,f} are now inline functions and call
  out __slow versions
 
 Upstream-Status: Pending
@@ -383,5 +383,5 @@
 +
  strong_alias (__ieee754_sqrtf, __sqrtf_finite)
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch
index 12f24fb..7aa74df 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch
@@ -1,7 +1,7 @@
-From 502f061d846e58aac7aca67e4e0d6ba9e0763b17 Mon Sep 17 00:00:00 2001
+From 1b61649e545de76dd79a5e2c39bb16d0c4623160 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:20:09 +0000
-Subject: [PATCH 09/24] Quote from bug 1443 which explains what the patch does
+Subject: [PATCH 09/25] Quote from bug 1443 which explains what the patch does
  :
 
   We build some random program and link it with -lust.  When we run it,
@@ -45,7 +45,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
-index 6fb20bd..8805537 100644
+index 60eee00..7d54d5e 100644
 --- a/sysdeps/arm/dl-machine.h
 +++ b/sysdeps/arm/dl-machine.h
 @@ -499,7 +499,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
@@ -58,5 +58,5 @@
  
  	case R_ARM_TLS_TPOFF32:
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch
index 77bd7d1..14963a3 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch
@@ -1,7 +1,7 @@
-From 69a3e30b49d28a7386d18725528652931510cbfc Mon Sep 17 00:00:00 2001
+From 91af416408b8718b004c83d93a6daa1f34cba48d Mon Sep 17 00:00:00 2001
 From: Ting Liu <b28495@freescale.com>
 Date: Wed, 19 Dec 2012 04:39:57 -0600
-Subject: [PATCH 10/24] eglibc: run libm-err-tab.pl with specific dirs in ${S}
+Subject: [PATCH 10/25] eglibc: run libm-err-tab.pl with specific dirs in ${S}
 
 libm-err-tab.pl will parse all the files named "libm-test-ulps"
 in the given dir recursively. To avoid parsing the one in
@@ -10,7 +10,7 @@
 aarch64/libm-test-ulps), run libm-err-tab.pl with specific dirs
 in ${S}.
 
-Upstream-Status: Inappropriate [OE specific]
+Upstream-Status: inappropriate [OE specific]
 
 Signed-off-by: Ting Liu <b28495@freescale.com>
 ---
@@ -18,7 +18,7 @@
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/manual/Makefile b/manual/Makefile
-index cdb6763..0b32a0a 100644
+index f2f694f..e062833 100644
 --- a/manual/Makefile
 +++ b/manual/Makefile
 @@ -105,7 +105,8 @@ $(objpfx)libm-err.texi: $(objpfx)stamp-libm-err
@@ -32,5 +32,5 @@
  	touch $@
  
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
index 251e5f5..e92d04c 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
@@ -1,7 +1,7 @@
-From 4cf52971a841304aec30b2e975f81d7ad9d42ef0 Mon Sep 17 00:00:00 2001
+From 6a71f688471fe0c85f8ad9afc4ee0723a20aae1d Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:24:46 +0000
-Subject: [PATCH 11/24] __ieee754_sqrt{,f} are now inline functions and call
+Subject: [PATCH 11/25] __ieee754_sqrt{,f} are now inline functions and call
  out __slow versions
 
 Upstream-Status: Pending
@@ -57,5 +57,5 @@
  #endif
  {
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0012-Make-ld-version-output-matching-grok-gold-s-output.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0012-Make-ld-version-output-matching-grok-gold-s-output.patch
index 3208a0c..4cba03f 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0012-Make-ld-version-output-matching-grok-gold-s-output.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0012-Make-ld-version-output-matching-grok-gold-s-output.patch
@@ -1,7 +1,7 @@
-From b356816d6e005ecda7adbed9627a4315ad39de39 Mon Sep 17 00:00:00 2001
+From f9d024edb158659e403b51cc9d93da9bca6e5d7b Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:25:45 +0000
-Subject: [PATCH 12/24] Make ld --version output matching grok gold's output
+Subject: [PATCH 12/25] Make ld --version output matching grok gold's output
 
 adapted from from upstream branch roland/gold-vs-libc
 
@@ -14,10 +14,10 @@
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/configure b/configure
-index aa05d49..6dabd11 100755
+index 8fe5937..7888a3f 100755
 --- a/configure
 +++ b/configure
-@@ -4486,7 +4486,7 @@ else
+@@ -4482,7 +4482,7 @@ else
    # Found it, now check the version.
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
  $as_echo_n "checking version of $LD... " >&6; }
@@ -27,10 +27,10 @@
      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
      2.1[0-9][0-9]*|2.2[2-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
 diff --git a/configure.ac b/configure.ac
-index ee7a3f1..b4b95b9 100644
+index 3c766b7..6908a99 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -948,7 +948,7 @@ AC_CHECK_PROG_VER(AS, $AS, --version,
+@@ -944,7 +944,7 @@ AC_CHECK_PROG_VER(AS, $AS, --version,
  		  [2.1[0-9][0-9]*|2.2[2-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
  		  AS=: critic_missing="$critic_missing as")
  AC_CHECK_PROG_VER(LD, $LD, --version,
@@ -40,5 +40,5 @@
  		  LD=: critic_missing="$critic_missing ld")
  
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
index 82fa100..6a82f8d 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
@@ -1,7 +1,7 @@
-From 10003d48f83f7a4f7fa562ed89af904a544b6323 Mon Sep 17 00:00:00 2001
+From 2ece12093c8ba4cf688d235f35d36f1feb02324c Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:27:10 +0000
-Subject: [PATCH 13/24] sysdeps/gnu/configure.ac: handle correctly
+Subject: [PATCH 13/25] sysdeps/gnu/configure.ac: handle correctly
  $libc_cv_rootsbindir
 
 Upstream-Status:Pending
@@ -38,5 +38,5 @@
    ;;
  esac
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch
index ea3e167..d14a6d4 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch
@@ -1,7 +1,7 @@
-From cafa8a7ef830e02cdbf928471e06d11054946940 Mon Sep 17 00:00:00 2001
+From 9fec083dc99d2b524090e1d098e03709eed64a72 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:28:41 +0000
-Subject: [PATCH 14/24] Add unused attribute
+Subject: [PATCH 14/25] Add unused attribute
 
 Helps in avoiding gcc warning when header is is included in
 a source file which does not use both functions
@@ -17,7 +17,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/iconv/gconv_charset.h b/iconv/gconv_charset.h
-index 80290bc..7890a8e 100644
+index 95cbce7..191a0dd 100644
 --- a/iconv/gconv_charset.h
 +++ b/iconv/gconv_charset.h
 @@ -21,7 +21,7 @@
@@ -30,5 +30,5 @@
  {
    int slash_count = 0;
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch
index 90e12b8..8ceccec 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch
@@ -1,7 +1,7 @@
-From 4d6bead19874e519752ceeb2a15897ff2ffbe5e8 Mon Sep 17 00:00:00 2001
+From 1794a97cba0b09b726eebc565c783c7b7c22dfba Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:31:06 +0000
-Subject: [PATCH 15/24] 'yes' within the path sets wrong config variables
+Subject: [PATCH 15/25] 'yes' within the path sets wrong config variables
 
 It seems that the 'AC_EGREP_CPP(yes...' example is quite popular
 but being such a short word to grep it is likely to produce
@@ -165,7 +165,7 @@
    ], libc_cv_nios2_be=yes, libc_cv_nios2_be=no)])
  if test $libc_cv_nios2_be = yes; then
 diff --git a/sysdeps/unix/sysv/linux/mips/configure b/sysdeps/unix/sysv/linux/mips/configure
-index dee56aa..f2049ed 100644
+index a5513fa..283b293 100644
 --- a/sysdeps/unix/sysv/linux/mips/configure
 +++ b/sysdeps/unix/sysv/linux/mips/configure
 @@ -414,11 +414,11 @@ else
@@ -183,7 +183,7 @@
  else
    libc_cv_mips_nan2008=no
 diff --git a/sysdeps/unix/sysv/linux/mips/configure.ac b/sysdeps/unix/sysv/linux/mips/configure.ac
-index 45147c5..4224af1 100644
+index 9147aa4..7898e24 100644
 --- a/sysdeps/unix/sysv/linux/mips/configure.ac
 +++ b/sysdeps/unix/sysv/linux/mips/configure.ac
 @@ -105,9 +105,9 @@ AC_COMPILE_IFELSE(
@@ -259,5 +259,5 @@
      ], libc_cv_ppc64_def_call_elf=yes, libc_cv_ppc64_def_call_elf=no)])
    if test $libc_cv_ppc64_def_call_elf = no; then
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
index e51b611..e5b5083 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
@@ -1,7 +1,7 @@
-From 3e8586eb3509e2f0d6dfb74be8f89a30b06b56e9 Mon Sep 17 00:00:00 2001
+From fdb5c9c88e3d1bc5ae6ef9ebcfcf560d3c42f0a6 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:33:03 +0000
-Subject: [PATCH 16/24] timezone: re-written tzselect as posix sh
+Subject: [PATCH 16/25] timezone: re-written tzselect as posix sh
 
 To avoid the bash dependency.
 
@@ -15,10 +15,10 @@
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/timezone/Makefile b/timezone/Makefile
-index 99566cb..b6e757e 100644
+index dee7568..66a50be 100644
 --- a/timezone/Makefile
 +++ b/timezone/Makefile
-@@ -122,7 +122,7 @@ $(testdata)/XT%: testdata/XT%
+@@ -120,7 +120,7 @@ $(testdata)/XT%: testdata/XT%
  	cp $< $@
  
  $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
@@ -28,7 +28,7 @@
  	    -e '/TZVERSION=/s|see_Makefile|"$(version)"|' \
  	    -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \
 diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh
-index 9d70691..25f45a8 100755
+index 2c3b2f4..0c04a61 100755
 --- a/timezone/tzselect.ksh
 +++ b/timezone/tzselect.ksh
 @@ -35,7 +35,7 @@ REPORT_BUGS_TO=tz@iana.org
@@ -38,8 +38,8 @@
 -: ${TZDIR=`pwd`}
 +: ${TZDIR=$(pwd)}
  
- # Check for awk Posix compliance.
- ($AWK -v x=y 'BEGIN { exit 123 }') </dev/null >/dev/null 2>&1
+ # Output one argument as-is to standard output.
+ # Safer than 'echo', which can mishandle '\' or leading '-'.
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
index 0c9ae6c..c8da05d 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
@@ -1,7 +1,7 @@
-From cd9d9fe7316f4ce4ca9d8e67e22f5718879535e4 Mon Sep 17 00:00:00 2001
+From 88ad88d014a5ee68b0e044d2def5ab13743c8ae0 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 31 Dec 2015 14:33:02 -0800
-Subject: [PATCH 17/24] Remove bash dependency for nscd init script
+Subject: [PATCH 17/25] Remove bash dependency for nscd init script
 
 The nscd init script uses #! /bin/bash but only really uses one bashism
 (translated strings), so remove them and switch the shell to #!/bin/sh.
@@ -9,6 +9,8 @@
 Signed-off-by: Ross Burton <ross.burton@intel.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
+Upstream-Status: Pending
+
  nscd/nscd.init | 14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
@@ -69,5 +71,5 @@
  	;;
  esac
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
index e282e60..1750765 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
@@ -1,7 +1,7 @@
-From 8f554f4a1beb39182aad9cd9b5e1da69464dff7e Mon Sep 17 00:00:00 2001
+From 49c0ad7dc2e02e808ed150296a109b586c34115a Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:42:58 +0000
-Subject: [PATCH 18/24] eglibc: Cross building and testing instructions
+Subject: [PATCH 18/25] eglibc: Cross building and testing instructions
 
 Ported from eglibc
 Upstream-Status: Pending
@@ -615,5 +615,5 @@
 +  simply place copies of these libraries in the top GLIBC build
 +  directory.
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
index c04e0a1..f983d86 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
@@ -1,7 +1,7 @@
-From c2d49eab20db4ab02b6de62092fedc623d757146 Mon Sep 17 00:00:00 2001
+From e881face7a10354612bf634b44e09e3bc6462c67 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:49:28 +0000
-Subject: [PATCH 19/24] eglibc: Help bootstrap cross toolchain
+Subject: [PATCH 19/25] eglibc: Help bootstrap cross toolchain
 
 Taken from EGLIBC, r1484 + r1525
 
@@ -29,7 +29,7 @@
  create mode 100644 include/stubs-bootstrap.h
 
 diff --git a/Makefile b/Makefile
-index 9a01c93..a6ae003 100644
+index 32748b3..6d055ba 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -69,9 +69,18 @@ subdir-dirs = include
@@ -96,5 +96,5 @@
 +   EGLIBC subdir 'stubs' make targets, on every .o file in EGLIBC, but
 +   an empty stubs.h like this will do fine for GCC.  */
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0020-eglibc-cherry-picked-from.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0020-eglibc-cherry-picked-from.patch
index 4362efa..30c4c69 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0020-eglibc-cherry-picked-from.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0020-eglibc-cherry-picked-from.patch
@@ -1,7 +1,7 @@
-From 588d936b9aa65e7cc8b1eb2cad1d209087db43a9 Mon Sep 17 00:00:00 2001
+From 723a31d3e2627211b39fbcc08f75b3c23c4096c5 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 31 Dec 2015 15:10:33 -0800
-Subject: [PATCH 20/24] eglibc: cherry-picked from
+Subject: [PATCH 20/25] eglibc: cherry-picked from
 
 http://www.eglibc.org/archives/patches/msg00772.html
 
@@ -15,10 +15,10 @@
  1 file changed, 13 insertions(+), 1 deletion(-)
 
 diff --git a/resolv/res_libc.c b/resolv/res_libc.c
-index a8394e0..981ac7c 100644
+index a4b376f..3256e12 100644
 --- a/resolv/res_libc.c
 +++ b/resolv/res_libc.c
-@@ -18,6 +18,7 @@
+@@ -21,11 +21,13 @@
  #include <atomic.h>
  #include <limits.h>
  #include <sys/types.h>
@@ -26,15 +26,13 @@
  #include <netinet/in.h>
  #include <arpa/nameser.h>
  #include <resolv.h>
-@@ -28,6 +29,7 @@
-    out) since res_init() should go into libc.so but the rest of that
-    file should not.  */
+ #include <libc-lock.h>
  
 +__libc_lock_define_initialized (static, lock);
  extern unsigned long long int __res_initstamp attribute_hidden;
  /* We have atomic increment operations on 64-bit platforms.  */
  #if __WORDSIZE == 64
-@@ -35,7 +37,6 @@ extern unsigned long long int __res_initstamp attribute_hidden;
+@@ -33,7 +35,6 @@ extern unsigned long long int __res_initstamp attribute_hidden;
  # define atomicincunlock(lock) (void) 0
  # define atomicinc(var) catomic_increment (&(var))
  #else
@@ -42,7 +40,7 @@
  # define atomicinclock(lock) __libc_lock_lock (lock)
  # define atomicincunlock(lock) __libc_lock_unlock (lock)
  # define atomicinc(var) ++var
-@@ -94,7 +95,18 @@ res_init(void) {
+@@ -92,7 +93,18 @@ res_init(void) {
  int
  __res_maybe_init (res_state resp, int preinit)
  {
@@ -62,5 +60,5 @@
  			if (resp->nscount > 0)
  				__res_iclose (resp, true);
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0021-eglibc-Clear-cache-lines-on-ppc8xx.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0021-eglibc-Clear-cache-lines-on-ppc8xx.patch
index 225f22f..8931c9e 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0021-eglibc-Clear-cache-lines-on-ppc8xx.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0021-eglibc-Clear-cache-lines-on-ppc8xx.patch
@@ -1,7 +1,7 @@
-From b74e34e6f53816ad57b13ba6fd70a97db1bc1eae Mon Sep 17 00:00:00 2001
+From 9699873820d0347c2f377f0d86bce615d87a5e47 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 31 Dec 2015 15:15:09 -0800
-Subject: [PATCH 21/24] eglibc: Clear cache lines on ppc8xx
+Subject: [PATCH 21/25] eglibc: Clear cache lines on ppc8xx
 
 2007-06-13  Nathan Sidwell  <nathan@codesourcery.com>
             Mark Shinwell  <shinwell@codesourcery.com>
@@ -21,7 +21,7 @@
  2 files changed, 28 insertions(+), 2 deletions(-)
 
 diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
-index c2504ff..d50f1cb 100644
+index 98ec2b3..b384ae0 100644
 --- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
 +++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
 @@ -24,9 +24,21 @@ int __cache_line_size attribute_hidden;
@@ -48,7 +48,7 @@
  	break;
  
 diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-start.c b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
-index 209a16d..5d8572d 100644
+index 0efd297..8cc0ef8 100644
 --- a/sysdeps/unix/sysv/linux/powerpc/libc-start.c
 +++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
 @@ -73,11 +73,25 @@ __libc_start_main (int argc, char **argv,
@@ -79,5 +79,5 @@
  	break;
  #ifndef SHARED
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0022-eglibc-Resolve-__fpscr_values-on-SH4.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0022-eglibc-Resolve-__fpscr_values-on-SH4.patch
index 88b20f6..f53f5ff 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0022-eglibc-Resolve-__fpscr_values-on-SH4.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0022-eglibc-Resolve-__fpscr_values-on-SH4.patch
@@ -1,7 +1,7 @@
-From 8f483cb1f21ab6431ff99e8d30d56b91607ae918 Mon Sep 17 00:00:00 2001
+From 8904f4249c930d187e19c7e9d3e73c835d11e18f Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 00:55:53 +0000
-Subject: [PATCH 22/24] eglibc: Resolve __fpscr_values on SH4
+Subject: [PATCH 22/25] eglibc: Resolve __fpscr_values on SH4
 
 2010-09-29  Nobuhiro Iwamatsu  <iwamatsu@nigauri.org>
             Andrew Stubbs  <ams@codesourcery.com>
@@ -33,7 +33,7 @@
      # a*
      alphasort64;
 diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.S b/sysdeps/unix/sysv/linux/sh/sysdep.S
-index a02b7e2..b9be326 100644
+index 0024d79..d1db7e4 100644
 --- a/sysdeps/unix/sysv/linux/sh/sysdep.S
 +++ b/sysdeps/unix/sysv/linux/sh/sysdep.S
 @@ -30,3 +30,14 @@ ENTRY (__syscall_error)
@@ -52,5 +52,5 @@
 +weak_alias (___fpscr_values, __fpscr_values)
 +
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0023-eglibc-Install-PIC-archives.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0023-eglibc-Install-PIC-archives.patch
index d95ea3b..f985f3c 100644
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0023-eglibc-Install-PIC-archives.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0023-eglibc-Install-PIC-archives.patch
@@ -1,7 +1,7 @@
-From 58d424884eed7efde6c90af0cd7c6c37cf9b444a Mon Sep 17 00:00:00 2001
+From 1947f211fab4001e84bb52868cddbd401e597889 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2015 01:57:01 +0000
-Subject: [PATCH 23/24] eglibc: Install PIC archives
+Subject: [PATCH 23/25] eglibc: Install PIC archives
 
 Forward port from eglibc
 
@@ -29,7 +29,7 @@
  1 file changed, 40 insertions(+), 2 deletions(-)
 
 diff --git a/Makerules b/Makerules
-index fa24030..1ff4634 100644
+index 53eabfa..1cd2a53 100644
 --- a/Makerules
 +++ b/Makerules
 @@ -694,6 +694,9 @@ ifeq ($(build-shared),yes)
@@ -119,5 +119,5 @@
  install-no-libc.a-nosubdir: install-bin-nosubdir install-bin-script-nosubdir \
  			    install-rootsbin-nosubdir install-sbin-nosubdir \
 -- 
-2.6.4
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0024-eglibc-Forward-port-cross-locale-generation-support.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0024-eglibc-Forward-port-cross-locale-generation-support.patch
new file mode 100644
index 0000000..c45b557
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0024-eglibc-Forward-port-cross-locale-generation-support.patch
@@ -0,0 +1,566 @@
+From 11d7633178301add26a24657e2f1596a2f7dddce Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2015 01:33:49 +0000
+Subject: [PATCH 24/25] eglibc: Forward port cross locale generation support
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/Makefile               |  3 ++-
+ locale/catnames.c             | 48 +++++++++++++++++++++++++++++++++++
+ locale/localeinfo.h           |  2 +-
+ locale/programs/charmap-dir.c |  6 +++++
+ locale/programs/ld-collate.c  | 17 ++++++-------
+ locale/programs/ld-ctype.c    | 27 ++++++++++----------
+ locale/programs/ld-time.c     | 31 +++++++++++++++--------
+ locale/programs/linereader.c  |  2 +-
+ locale/programs/localedef.c   |  8 ++++++
+ locale/programs/locfile.c     |  5 +++-
+ locale/programs/locfile.h     | 59 +++++++++++++++++++++++++++++++++++++++++--
+ locale/setlocale.c            | 30 ----------------------
+ 12 files changed, 169 insertions(+), 69 deletions(-)
+ create mode 100644 locale/catnames.c
+
+diff --git a/locale/Makefile b/locale/Makefile
+index c5379e6..c98c675 100644
+--- a/locale/Makefile
++++ b/locale/Makefile
+@@ -25,7 +25,8 @@ include ../Makeconfig
+ headers		= locale.h bits/locale.h langinfo.h xlocale.h
+ routines	= setlocale findlocale loadlocale loadarchive \
+ 		  localeconv nl_langinfo nl_langinfo_l mb_cur_max \
+-		  newlocale duplocale freelocale uselocale
++		  newlocale duplocale freelocale uselocale \
++		  catnames
+ tests		= tst-C-locale tst-locname tst-duplocale
+ categories	= ctype messages monetary numeric time paper name \
+ 		  address telephone measurement identification collate
+diff --git a/locale/catnames.c b/locale/catnames.c
+new file mode 100644
+index 0000000..9fad357
+--- /dev/null
++++ b/locale/catnames.c
+@@ -0,0 +1,48 @@
++/* Copyright (C) 2006  Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++#include "localeinfo.h"
++
++/* Define an array of category names (also the environment variable names).  */
++const union catnamestr_t _nl_category_names attribute_hidden =
++  {
++    {
++#define DEFINE_CATEGORY(category, category_name, items, a) \
++      category_name,
++#include "categories.def"
++#undef DEFINE_CATEGORY
++    }
++  };
++
++const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
++  {
++#define DEFINE_CATEGORY(category, category_name, items, a) \
++    [category] = offsetof (union catnamestr_t, CATNAMEMF (__LINE__)),
++#include "categories.def"
++#undef DEFINE_CATEGORY
++  };
++
++/* An array of their lengths, for convenience.  */
++const uint8_t _nl_category_name_sizes[] attribute_hidden =
++  {
++#define DEFINE_CATEGORY(category, category_name, items, a) \
++    [category] = sizeof (category_name) - 1,
++#include "categories.def"
++#undef	DEFINE_CATEGORY
++    [LC_ALL] = sizeof ("LC_ALL") - 1
++  };
+diff --git a/locale/localeinfo.h b/locale/localeinfo.h
+index 94627f3..d0db77b 100644
+--- a/locale/localeinfo.h
++++ b/locale/localeinfo.h
+@@ -224,7 +224,7 @@ __libc_tsd_define (extern, __locale_t, LOCALE)
+    unused.  We can manage this playing some tricks with weak references.
+    But with thread-local locale settings, it becomes quite ungainly unless
+    we can use __thread variables.  So only in that case do we attempt this.  */
+-#ifndef SHARED
++#if !defined SHARED && !defined IN_GLIBC_LOCALEDEF
+ # include <tls.h>
+ # define NL_CURRENT_INDIRECT	1
+ #endif
+diff --git a/locale/programs/charmap-dir.c b/locale/programs/charmap-dir.c
+index 99fcd35..5e528dc 100644
+--- a/locale/programs/charmap-dir.c
++++ b/locale/programs/charmap-dir.c
+@@ -19,7 +19,9 @@
+ #include <error.h>
+ #include <fcntl.h>
+ #include <libintl.h>
++#ifndef NO_UNCOMPRESS
+ #include <spawn.h>
++#endif
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -156,6 +158,7 @@ charmap_closedir (CHARMAP_DIR *cdir)
+   return closedir (dir);
+ }
+ 
++#ifndef NO_UNCOMPRESS
+ /* Creates a subprocess decompressing the given pathname, and returns
+    a stream reading its output (the decompressed data).  */
+ static
+@@ -204,6 +207,7 @@ fopen_uncompressed (const char *pathname, const char *compressor)
+     }
+   return NULL;
+ }
++#endif
+ 
+ /* Opens a charmap for reading, given its name (not an alias name).  */
+ FILE *
+@@ -226,6 +230,7 @@ charmap_open (const char *directory, const char *name)
+   if (stream != NULL)
+     return stream;
+ 
++#ifndef NO_UNCOMPRESS
+   memcpy (p, ".gz", 4);
+   stream = fopen_uncompressed (pathname, "gzip");
+   if (stream != NULL)
+@@ -235,6 +240,7 @@ charmap_open (const char *directory, const char *name)
+   stream = fopen_uncompressed (pathname, "bzip2");
+   if (stream != NULL)
+     return stream;
++#endif
+ 
+   return NULL;
+ }
+diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
+index 1e125f6..3b2867f 100644
+--- a/locale/programs/ld-collate.c
++++ b/locale/programs/ld-collate.c
+@@ -350,7 +350,7 @@ new_element (struct locale_collate_t *collate, const char *mbs, size_t mbslen,
+     }
+   if (wcs != NULL)
+     {
+-      size_t nwcs = wcslen ((wchar_t *) wcs);
++      size_t nwcs = wcslen_uint32 (wcs);
+       uint32_t zero = 0;
+       /* Handle <U0000> as a single character.  */
+       if (nwcs == 0)
+@@ -1776,8 +1776,7 @@ symbol `%s' has the same encoding as"), (*eptr)->name);
+ 
+ 	      if ((*eptr)->nwcs == runp->nwcs)
+ 		{
+-		  int c = wmemcmp ((wchar_t *) (*eptr)->wcs,
+-				   (wchar_t *) runp->wcs, runp->nwcs);
++		  int c = wmemcmp_uint32 ((*eptr)->wcs, runp->wcs, runp->nwcs);
+ 
+ 		  if (c == 0)
+ 		    {
+@@ -2010,9 +2009,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
+ 	     one consecutive entry.  */
+ 	  if (runp->wcnext != NULL
+ 	      && runp->nwcs == runp->wcnext->nwcs
+-	      && wmemcmp ((wchar_t *) runp->wcs,
+-			  (wchar_t *)runp->wcnext->wcs,
+-			  runp->nwcs - 1) == 0
++	      && wmemcmp_uint32 (runp->wcs,
++				 runp->wcnext->wcs,
++				 runp->nwcs - 1) == 0
+ 	      && (runp->wcs[runp->nwcs - 1]
+ 		  == runp->wcnext->wcs[runp->nwcs - 1] + 1))
+ 	    {
+@@ -2036,9 +2035,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
+ 		runp = runp->wcnext;
+ 	      while (runp->wcnext != NULL
+ 		     && runp->nwcs == runp->wcnext->nwcs
+-		     && wmemcmp ((wchar_t *) runp->wcs,
+-				 (wchar_t *)runp->wcnext->wcs,
+-				 runp->nwcs - 1) == 0
++		     && wmemcmp_uint32 (runp->wcs,
++					runp->wcnext->wcs,
++					runp->nwcs - 1) == 0
+ 		     && (runp->wcs[runp->nwcs - 1]
+ 			 == runp->wcnext->wcs[runp->nwcs - 1] + 1));
+ 
+diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
+index 0fd141c..68136e6 100644
+--- a/locale/programs/ld-ctype.c
++++ b/locale/programs/ld-ctype.c
+@@ -926,7 +926,7 @@ ctype_output (struct localedef_t *locale, const struct charmap_t *charmap,
+   allocate_arrays (ctype, charmap, ctype->repertoire);
+ 
+   default_missing_len = (ctype->default_missing
+-			 ? wcslen ((wchar_t *) ctype->default_missing)
++			 ? wcslen_uint32 (ctype->default_missing)
+ 			 : 0);
+ 
+   init_locale_data (&file, nelems);
+@@ -1937,7 +1937,7 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
+ 	    ignore = 1;
+ 	  else
+ 	    /* This value is usable.  */
+-	    obstack_grow (ob, to_wstr, wcslen ((wchar_t *) to_wstr) * 4);
++	    obstack_grow (ob, to_wstr, wcslen_uint32 (to_wstr) * 4);
+ 
+ 	  first = 0;
+ 	}
+@@ -2471,8 +2471,8 @@ with character code range values one must use the absolute ellipsis `...'"));
+ 	    }
+ 
+ 	handle_tok_digit:
+-	  class_bit = _ISwdigit;
+-	  class256_bit = _ISdigit;
++	  class_bit = BITw (tok_digit);
++	  class256_bit = BIT (tok_digit);
+ 	  handle_digits = 1;
+ 	  goto read_charclass;
+ 
+@@ -3929,8 +3929,7 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
+ 
+ 	  while (idx < number)
+ 	    {
+-	      int res = wcscmp ((const wchar_t *) sorted[idx]->from,
+-				(const wchar_t *) runp->from);
++	      int res = wcscmp_uint32 (sorted[idx]->from, runp->from);
+ 	      if (res == 0)
+ 		{
+ 		  replace = 1;
+@@ -3967,11 +3966,11 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
+       for (size_t cnt = 0; cnt < number; ++cnt)
+ 	{
+ 	  struct translit_to_t *srunp;
+-	  from_len += wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
++	  from_len += wcslen_uint32 (sorted[cnt]->from) + 1;
+ 	  srunp = sorted[cnt]->to;
+ 	  while (srunp != NULL)
+ 	    {
+-	      to_len += wcslen ((const wchar_t *) srunp->str) + 1;
++	      to_len += wcslen_uint32 (srunp->str) + 1;
+ 	      srunp = srunp->next;
+ 	    }
+ 	  /* Plus one for the extra NUL character marking the end of
+@@ -3995,18 +3994,18 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
+ 	  ctype->translit_from_idx[cnt] = from_len;
+ 	  ctype->translit_to_idx[cnt] = to_len;
+ 
+-	  len = wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
+-	  wmemcpy ((wchar_t *) &ctype->translit_from_tbl[from_len],
+-		   (const wchar_t *) sorted[cnt]->from, len);
++	  len = wcslen_uint32 (sorted[cnt]->from) + 1;
++	  wmemcpy_uint32 (&ctype->translit_from_tbl[from_len],
++			  sorted[cnt]->from, len);
+ 	  from_len += len;
+ 
+ 	  ctype->translit_to_idx[cnt] = to_len;
+ 	  srunp = sorted[cnt]->to;
+ 	  while (srunp != NULL)
+ 	    {
+-	      len = wcslen ((const wchar_t *) srunp->str) + 1;
+-	      wmemcpy ((wchar_t *) &ctype->translit_to_tbl[to_len],
+-		       (const wchar_t *) srunp->str, len);
++	      len = wcslen_uint32 (srunp->str) + 1;
++	      wmemcpy_uint32 (&ctype->translit_to_tbl[to_len],
++			      srunp->str, len);
+ 	      to_len += len;
+ 	      srunp = srunp->next;
+ 	    }
+diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
+index 87531bc..5f2c266 100644
+--- a/locale/programs/ld-time.c
++++ b/locale/programs/ld-time.c
+@@ -215,8 +215,10 @@ No definition for %s category found"), "LC_TIME"));
+ 	}
+       else
+ 	{
++	  static const uint32_t wt_fmt_ampm[]
++	    = { '%','I',':','%','M',':','%','S',' ','%','p',0 };
+ 	  time->t_fmt_ampm = "%I:%M:%S %p";
+-	  time->wt_fmt_ampm = (const uint32_t *) L"%I:%M:%S %p";
++	  time->wt_fmt_ampm = wt_fmt_ampm;
+ 	}
+     }
+ 
+@@ -226,7 +228,7 @@ No definition for %s category found"), "LC_TIME"));
+       const int days_per_month[12] = { 31, 29, 31, 30, 31, 30,
+ 				       31, 31, 30, 31 ,30, 31 };
+       size_t idx;
+-      wchar_t *wstr;
++      uint32_t *wstr;
+ 
+       time->era_entries =
+ 	(struct era_data *) xmalloc (time->num_era
+@@ -464,18 +466,18 @@ No definition for %s category found"), "LC_TIME"));
+ 	    }
+ 
+ 	  /* Now generate the wide character name and format.  */
+-	  wstr = wcschr ((wchar_t *) time->wera[idx], L':');/* end direction */
+-	  wstr = wstr ? wcschr (wstr + 1, L':') : NULL;	/* end offset */
+-	  wstr = wstr ? wcschr (wstr + 1, L':') : NULL;	/* end start */
+-	  wstr = wstr ? wcschr (wstr + 1, L':') : NULL;	/* end end */
++	  wstr = wcschr_uint32 (time->wera[idx], L':'); /* end direction */
++	  wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end offset */
++	  wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end start */
++	  wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end end */
+ 	  if (wstr != NULL)
+ 	    {
+-	      time->era_entries[idx].wname = (uint32_t *) wstr + 1;
+-	      wstr = wcschr (wstr + 1, L':');	/* end name */
++	      time->era_entries[idx].wname = wstr + 1;
++	      wstr = wcschr_uint32 (wstr + 1, L':'); /* end name */
+ 	      if (wstr != NULL)
+ 		{
+ 		  *wstr = L'\0';
+-		  time->era_entries[idx].wformat = (uint32_t *) wstr + 1;
++		  time->era_entries[idx].wformat = wstr + 1;
+ 		}
+ 	      else
+ 		time->era_entries[idx].wname =
+@@ -534,7 +536,16 @@ No definition for %s category found"), "LC_TIME"));
+   if (time->date_fmt == NULL)
+     time->date_fmt = "%a %b %e %H:%M:%S %Z %Y";
+   if (time->wdate_fmt == NULL)
+-    time->wdate_fmt = (const uint32_t *) L"%a %b %e %H:%M:%S %Z %Y";
++    {
++      static const uint32_t wdate_fmt[] =
++	{ '%','a',' ',
++	  '%','b',' ',
++	  '%','e',' ',
++	  '%','H',':','%','M',':','%','S',' ',
++	  '%','Z',' ',
++	  '%','Y',0 };
++      time->wdate_fmt = wdate_fmt;
++    }
+ }
+ 
+ 
+diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
+index b885f65..0afb631 100644
+--- a/locale/programs/linereader.c
++++ b/locale/programs/linereader.c
+@@ -595,7 +595,7 @@ get_string (struct linereader *lr, const struct charmap_t *charmap,
+ {
+   int return_widestr = lr->return_widestr;
+   char *buf;
+-  wchar_t *buf2 = NULL;
++  uint32_t *buf2 = NULL;
+   size_t bufact;
+   size_t bufmax = 56;
+ 
+diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
+index 6becd9a..8ddd080 100644
+--- a/locale/programs/localedef.c
++++ b/locale/programs/localedef.c
+@@ -114,6 +114,7 @@ void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ #define OPT_LIST_ARCHIVE 309
+ #define OPT_LITTLE_ENDIAN 400
+ #define OPT_BIG_ENDIAN 401
++#define OPT_UINT32_ALIGN 402
+ 
+ /* Definitions of arguments for argp functions.  */
+ static const struct argp_option options[] =
+@@ -150,6 +151,8 @@ static const struct argp_option options[] =
+     N_("Generate little-endian output") },
+   { "big-endian", OPT_BIG_ENDIAN, NULL, 0,
+     N_("Generate big-endian output") },
++  { "uint32-align", OPT_UINT32_ALIGN, "ALIGNMENT", 0,
++    N_("Set the target's uint32_t alignment in bytes (default 4)") },
+   { NULL, 0, NULL, 0, NULL }
+ };
+ 
+@@ -239,12 +242,14 @@ main (int argc, char *argv[])
+      ctype locale.  (P1003.2 4.35.5.2)  */
+   setlocale (LC_CTYPE, "POSIX");
+ 
++#ifndef NO_SYSCONF
+   /* Look whether the system really allows locale definitions.  POSIX
+      defines error code 3 for this situation so I think it must be
+      a fatal error (see P1003.2 4.35.8).  */
+   if (sysconf (_SC_2_LOCALEDEF) < 0)
+     WITH_CUR_LOCALE (error (3, 0, _("\
+ FATAL: system does not define `_POSIX2_LOCALEDEF'")));
++#endif
+ 
+   /* Process charmap file.  */
+   charmap = charmap_read (charmap_file, verbose, 1, be_quiet, 1);
+@@ -338,6 +343,9 @@ parse_opt (int key, char *arg, struct argp_state *state)
+     case OPT_BIG_ENDIAN:
+       set_big_endian (true);
+       break;
++    case OPT_UINT32_ALIGN:
++      uint32_align_mask = strtol (arg, NULL, 0) - 1;
++      break;
+     case 'c':
+       force_output = 1;
+       break;
+diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c
+index 32f5cd2..02967b0 100644
+--- a/locale/programs/locfile.c
++++ b/locale/programs/locfile.c
+@@ -544,6 +544,9 @@ compare_files (const char *filename1, const char *filename2, size_t size,
+    machine running localedef.  */
+ bool swap_endianness_p;
+ 
++/* The target's value of __align__(uint32_t) - 1.  */
++unsigned int uint32_align_mask = 3;
++
+ /* When called outside a start_locale_structure/end_locale_structure
+    or start_locale_prelude/end_locale_prelude block, record that the
+    next byte in FILE's obstack will be the first byte of a new element.
+@@ -621,7 +624,7 @@ add_locale_string (struct locale_file *file, const char *string)
+ void
+ add_locale_wstring (struct locale_file *file, const uint32_t *string)
+ {
+-  add_locale_uint32_array (file, string, wcslen ((const wchar_t *) string) + 1);
++  add_locale_uint32_array (file, string, wcslen_uint32 (string) + 1);
+ }
+ 
+ /* Record that FILE's next element is the 32-bit integer VALUE.  */
+diff --git a/locale/programs/locfile.h b/locale/programs/locfile.h
+index a3dd904..2c7763a 100644
+--- a/locale/programs/locfile.h
++++ b/locale/programs/locfile.h
+@@ -71,6 +71,8 @@ extern void write_all_categories (struct localedef_t *definitions,
+ 
+ extern bool swap_endianness_p;
+ 
++extern unsigned int uint32_align_mask;
++
+ /* Change the output to be big-endian if BIG_ENDIAN is true and
+    little-endian otherwise.  */
+ static inline void
+@@ -89,7 +91,8 @@ maybe_swap_uint32 (uint32_t value)
+ }
+ 
+ /* Likewise, but munge an array of N uint32_ts starting at ARRAY.  */
+-static inline void
++static void
++__attribute__ ((unused))
+ maybe_swap_uint32_array (uint32_t *array, size_t n)
+ {
+   if (swap_endianness_p)
+@@ -99,7 +102,8 @@ maybe_swap_uint32_array (uint32_t *array, size_t n)
+ 
+ /* Like maybe_swap_uint32_array, but the array of N elements is at
+    the end of OBSTACK's current object.  */
+-static inline void
++static void
++__attribute__ ((unused))
+ maybe_swap_uint32_obstack (struct obstack *obstack, size_t n)
+ {
+   maybe_swap_uint32_array ((uint32_t *) obstack_next_free (obstack) - n, n);
+@@ -276,4 +280,55 @@ extern void identification_output (struct localedef_t *locale,
+ 				   const struct charmap_t *charmap,
+ 				   const char *output_path);
+ 
++static size_t wcslen_uint32 (const uint32_t *str) __attribute__ ((unused));
++static uint32_t * wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
++static uint32_t * wcschr_uint32 (const uint32_t *s, uint32_t ch) __attribute__ ((unused));
++static int wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2) __attribute__ ((unused));
++static int wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
++
++static size_t
++wcslen_uint32 (const uint32_t *str)
++{
++  size_t len = 0;
++  while (str[len] != 0)
++    len++;
++  return len;
++}
++
++static  int
++wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n)
++{
++  while (n-- != 0)
++    {
++      int diff = *s1++ - *s2++;
++      if (diff != 0)
++	return diff;
++    }
++  return 0;
++}
++
++static int
++wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2)
++{
++  while (*s1 != 0 && *s1 == *s2)
++    s1++, s2++;
++  return *s1 - *s2;
++}
++
++static uint32_t *
++wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n)
++{
++  return memcpy (s1, s2, n * sizeof (uint32_t));
++}
++
++static uint32_t *
++wcschr_uint32 (const uint32_t *s, uint32_t ch)
++{
++  do
++    if (*s == ch)
++      return (uint32_t *) s;
++  while (*s++ != 0);
++  return 0;
++}
++
+ #endif /* locfile.h */
+diff --git a/locale/setlocale.c b/locale/setlocale.c
+index 69b3141..1cef0be 100644
+--- a/locale/setlocale.c
++++ b/locale/setlocale.c
+@@ -64,36 +64,6 @@ static char *const _nl_current_used[] =
+ #endif
+ 
+ 
+-/* Define an array of category names (also the environment variable names).  */
+-const union catnamestr_t _nl_category_names attribute_hidden =
+-  {
+-    {
+-#define DEFINE_CATEGORY(category, category_name, items, a) \
+-      category_name,
+-#include "categories.def"
+-#undef DEFINE_CATEGORY
+-    }
+-  };
+-
+-const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
+-  {
+-#define DEFINE_CATEGORY(category, category_name, items, a) \
+-    [category] = offsetof (union catnamestr_t, CATNAMEMF (__LINE__)),
+-#include "categories.def"
+-#undef DEFINE_CATEGORY
+-  };
+-
+-/* An array of their lengths, for convenience.  */
+-const uint8_t _nl_category_name_sizes[] attribute_hidden =
+-  {
+-#define DEFINE_CATEGORY(category, category_name, items, a) \
+-    [category] = sizeof (category_name) - 1,
+-#include "categories.def"
+-#undef	DEFINE_CATEGORY
+-    [LC_ALL] = sizeof ("LC_ALL") - 1
+-  };
+-
+-
+ #ifdef NL_CURRENT_INDIRECT
+ # define WEAK_POSTLOAD(postload) weak_extern (postload)
+ #else
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0025-Define-DUMMY_LOCALE_T-if-not-defined.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0025-Define-DUMMY_LOCALE_T-if-not-defined.patch
new file mode 100644
index 0000000..9d60d02
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0025-Define-DUMMY_LOCALE_T-if-not-defined.patch
@@ -0,0 +1,32 @@
+From 89ec25290d34413ce5c8ba6c378e31dbae3a37c0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Apr 2016 21:11:00 -0700
+Subject: [PATCH 25/25] Define DUMMY_LOCALE_T if not defined
+
+This is a hack to fix building the locale bits on an older
+CentOs 5.X machine
+
+Upstream-Status: Inappropriate [other]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/programs/config.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/locale/programs/config.h b/locale/programs/config.h
+index f606365..0e5f8c3 100644
+--- a/locale/programs/config.h
++++ b/locale/programs/config.h
+@@ -19,6 +19,9 @@
+ #ifndef _LD_CONFIG_H
+ #define _LD_CONFIG_H	1
+ 
++#ifndef DUMMY_LOCALE_T
++#define DUMMY_LOCALE_T
++#endif
+ /* Use the internal textdomain used for libc messages.  */
+ #define PACKAGE _libc_intl_domainname
+ #ifndef VERSION
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0025-eglibc-Forward-port-cross-locale-generation-support.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0025-eglibc-Forward-port-cross-locale-generation-support.patch
deleted file mode 100644
index 68d1119..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0025-eglibc-Forward-port-cross-locale-generation-support.patch
+++ /dev/null
@@ -1,566 +0,0 @@
-From a5695930aec68b3f501e475d8705cddbb63f695e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 01:33:49 +0000
-Subject: [PATCH 25/25] eglibc: Forward port cross locale generation support
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- locale/Makefile               |  3 ++-
- locale/catnames.c             | 48 +++++++++++++++++++++++++++++++++++
- locale/localeinfo.h           |  2 +-
- locale/programs/charmap-dir.c |  6 +++++
- locale/programs/ld-collate.c  | 17 ++++++-------
- locale/programs/ld-ctype.c    | 27 ++++++++++----------
- locale/programs/ld-time.c     | 31 +++++++++++++++--------
- locale/programs/linereader.c  |  2 +-
- locale/programs/localedef.c   |  8 ++++++
- locale/programs/locfile.c     |  5 +++-
- locale/programs/locfile.h     | 59 +++++++++++++++++++++++++++++++++++++++++--
- locale/setlocale.c            | 30 ----------------------
- 12 files changed, 169 insertions(+), 69 deletions(-)
- create mode 100644 locale/catnames.c
-
-diff --git a/locale/Makefile b/locale/Makefile
-index 75afbe1..d32523b 100644
---- a/locale/Makefile
-+++ b/locale/Makefile
-@@ -25,7 +25,8 @@ include ../Makeconfig
- headers		= locale.h bits/locale.h langinfo.h xlocale.h
- routines	= setlocale findlocale loadlocale loadarchive \
- 		  localeconv nl_langinfo nl_langinfo_l mb_cur_max \
--		  newlocale duplocale freelocale uselocale
-+		  newlocale duplocale freelocale uselocale \
-+		  catnames
- tests		= tst-C-locale tst-locname tst-duplocale
- categories	= ctype messages monetary numeric time paper name \
- 		  address telephone measurement identification collate
-diff --git a/locale/catnames.c b/locale/catnames.c
-new file mode 100644
-index 0000000..9fad357
---- /dev/null
-+++ b/locale/catnames.c
-@@ -0,0 +1,48 @@
-+/* Copyright (C) 2006  Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, write to the Free
-+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+   02111-1307 USA.  */
-+
-+#include "localeinfo.h"
-+
-+/* Define an array of category names (also the environment variable names).  */
-+const union catnamestr_t _nl_category_names attribute_hidden =
-+  {
-+    {
-+#define DEFINE_CATEGORY(category, category_name, items, a) \
-+      category_name,
-+#include "categories.def"
-+#undef DEFINE_CATEGORY
-+    }
-+  };
-+
-+const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
-+  {
-+#define DEFINE_CATEGORY(category, category_name, items, a) \
-+    [category] = offsetof (union catnamestr_t, CATNAMEMF (__LINE__)),
-+#include "categories.def"
-+#undef DEFINE_CATEGORY
-+  };
-+
-+/* An array of their lengths, for convenience.  */
-+const uint8_t _nl_category_name_sizes[] attribute_hidden =
-+  {
-+#define DEFINE_CATEGORY(category, category_name, items, a) \
-+    [category] = sizeof (category_name) - 1,
-+#include "categories.def"
-+#undef	DEFINE_CATEGORY
-+    [LC_ALL] = sizeof ("LC_ALL") - 1
-+  };
-diff --git a/locale/localeinfo.h b/locale/localeinfo.h
-index 789da44..4ac9249 100644
---- a/locale/localeinfo.h
-+++ b/locale/localeinfo.h
-@@ -224,7 +224,7 @@ __libc_tsd_define (extern, __locale_t, LOCALE)
-    unused.  We can manage this playing some tricks with weak references.
-    But with thread-local locale settings, it becomes quite ungainly unless
-    we can use __thread variables.  So only in that case do we attempt this.  */
--#ifndef SHARED
-+#if !defined SHARED && !defined IN_GLIBC_LOCALEDEF
- # include <tls.h>
- # define NL_CURRENT_INDIRECT	1
- #endif
-diff --git a/locale/programs/charmap-dir.c b/locale/programs/charmap-dir.c
-index cf7adea..ef3b811 100644
---- a/locale/programs/charmap-dir.c
-+++ b/locale/programs/charmap-dir.c
-@@ -19,7 +19,9 @@
- #include <error.h>
- #include <fcntl.h>
- #include <libintl.h>
-+#ifndef NO_UNCOMPRESS
- #include <spawn.h>
-+#endif
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -156,6 +158,7 @@ charmap_closedir (CHARMAP_DIR *cdir)
-   return closedir (dir);
- }
- 
-+#ifndef NO_UNCOMPRESS
- /* Creates a subprocess decompressing the given pathname, and returns
-    a stream reading its output (the decompressed data).  */
- static
-@@ -204,6 +207,7 @@ fopen_uncompressed (const char *pathname, const char *compressor)
-     }
-   return NULL;
- }
-+#endif
- 
- /* Opens a charmap for reading, given its name (not an alias name).  */
- FILE *
-@@ -226,6 +230,7 @@ charmap_open (const char *directory, const char *name)
-   if (stream != NULL)
-     return stream;
- 
-+#ifndef NO_UNCOMPRESS
-   memcpy (p, ".gz", 4);
-   stream = fopen_uncompressed (pathname, "gzip");
-   if (stream != NULL)
-@@ -235,6 +240,7 @@ charmap_open (const char *directory, const char *name)
-   stream = fopen_uncompressed (pathname, "bzip2");
-   if (stream != NULL)
-     return stream;
-+#endif
- 
-   return NULL;
- }
-diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
-index dc0fe30..3c88c6d 100644
---- a/locale/programs/ld-collate.c
-+++ b/locale/programs/ld-collate.c
-@@ -350,7 +350,7 @@ new_element (struct locale_collate_t *collate, const char *mbs, size_t mbslen,
-     }
-   if (wcs != NULL)
-     {
--      size_t nwcs = wcslen ((wchar_t *) wcs);
-+      size_t nwcs = wcslen_uint32 (wcs);
-       uint32_t zero = 0;
-       /* Handle <U0000> as a single character.  */
-       if (nwcs == 0)
-@@ -1776,8 +1776,7 @@ symbol `%s' has the same encoding as"), (*eptr)->name);
- 
- 	      if ((*eptr)->nwcs == runp->nwcs)
- 		{
--		  int c = wmemcmp ((wchar_t *) (*eptr)->wcs,
--				   (wchar_t *) runp->wcs, runp->nwcs);
-+		  int c = wmemcmp_uint32 ((*eptr)->wcs, runp->wcs, runp->nwcs);
- 
- 		  if (c == 0)
- 		    {
-@@ -2010,9 +2009,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
- 	     one consecutive entry.  */
- 	  if (runp->wcnext != NULL
- 	      && runp->nwcs == runp->wcnext->nwcs
--	      && wmemcmp ((wchar_t *) runp->wcs,
--			  (wchar_t *)runp->wcnext->wcs,
--			  runp->nwcs - 1) == 0
-+	      && wmemcmp_uint32 (runp->wcs,
-+				 runp->wcnext->wcs,
-+				 runp->nwcs - 1) == 0
- 	      && (runp->wcs[runp->nwcs - 1]
- 		  == runp->wcnext->wcs[runp->nwcs - 1] + 1))
- 	    {
-@@ -2036,9 +2035,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
- 		runp = runp->wcnext;
- 	      while (runp->wcnext != NULL
- 		     && runp->nwcs == runp->wcnext->nwcs
--		     && wmemcmp ((wchar_t *) runp->wcs,
--				 (wchar_t *)runp->wcnext->wcs,
--				 runp->nwcs - 1) == 0
-+		     && wmemcmp_uint32 (runp->wcs,
-+					runp->wcnext->wcs,
-+					runp->nwcs - 1) == 0
- 		     && (runp->wcs[runp->nwcs - 1]
- 			 == runp->wcnext->wcs[runp->nwcs - 1] + 1));
- 
-diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
-index 3f464ef..b7b6b51 100644
---- a/locale/programs/ld-ctype.c
-+++ b/locale/programs/ld-ctype.c
-@@ -926,7 +926,7 @@ ctype_output (struct localedef_t *locale, const struct charmap_t *charmap,
-   allocate_arrays (ctype, charmap, ctype->repertoire);
- 
-   default_missing_len = (ctype->default_missing
--			 ? wcslen ((wchar_t *) ctype->default_missing)
-+			 ? wcslen_uint32 (ctype->default_missing)
- 			 : 0);
- 
-   init_locale_data (&file, nelems);
-@@ -1937,7 +1937,7 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
- 	    ignore = 1;
- 	  else
- 	    /* This value is usable.  */
--	    obstack_grow (ob, to_wstr, wcslen ((wchar_t *) to_wstr) * 4);
-+	    obstack_grow (ob, to_wstr, wcslen_uint32 (to_wstr) * 4);
- 
- 	  first = 0;
- 	}
-@@ -2471,8 +2471,8 @@ with character code range values one must use the absolute ellipsis `...'"));
- 	    }
- 
- 	handle_tok_digit:
--	  class_bit = _ISwdigit;
--	  class256_bit = _ISdigit;
-+	  class_bit = BITw (tok_digit);
-+	  class256_bit = BIT (tok_digit);
- 	  handle_digits = 1;
- 	  goto read_charclass;
- 
-@@ -3929,8 +3929,7 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
- 
- 	  while (idx < number)
- 	    {
--	      int res = wcscmp ((const wchar_t *) sorted[idx]->from,
--				(const wchar_t *) runp->from);
-+	      int res = wcscmp_uint32 (sorted[idx]->from, runp->from);
- 	      if (res == 0)
- 		{
- 		  replace = 1;
-@@ -3967,11 +3966,11 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
-       for (size_t cnt = 0; cnt < number; ++cnt)
- 	{
- 	  struct translit_to_t *srunp;
--	  from_len += wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
-+	  from_len += wcslen_uint32 (sorted[cnt]->from) + 1;
- 	  srunp = sorted[cnt]->to;
- 	  while (srunp != NULL)
- 	    {
--	      to_len += wcslen ((const wchar_t *) srunp->str) + 1;
-+	      to_len += wcslen_uint32 (srunp->str) + 1;
- 	      srunp = srunp->next;
- 	    }
- 	  /* Plus one for the extra NUL character marking the end of
-@@ -3995,18 +3994,18 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
- 	  ctype->translit_from_idx[cnt] = from_len;
- 	  ctype->translit_to_idx[cnt] = to_len;
- 
--	  len = wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
--	  wmemcpy ((wchar_t *) &ctype->translit_from_tbl[from_len],
--		   (const wchar_t *) sorted[cnt]->from, len);
-+	  len = wcslen_uint32 (sorted[cnt]->from) + 1;
-+	  wmemcpy_uint32 (&ctype->translit_from_tbl[from_len],
-+			  sorted[cnt]->from, len);
- 	  from_len += len;
- 
- 	  ctype->translit_to_idx[cnt] = to_len;
- 	  srunp = sorted[cnt]->to;
- 	  while (srunp != NULL)
- 	    {
--	      len = wcslen ((const wchar_t *) srunp->str) + 1;
--	      wmemcpy ((wchar_t *) &ctype->translit_to_tbl[to_len],
--		       (const wchar_t *) srunp->str, len);
-+	      len = wcslen_uint32 (srunp->str) + 1;
-+	      wmemcpy_uint32 (&ctype->translit_to_tbl[to_len],
-+			      srunp->str, len);
- 	      to_len += len;
- 	      srunp = srunp->next;
- 	    }
-diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
-index db490c6..75dc505 100644
---- a/locale/programs/ld-time.c
-+++ b/locale/programs/ld-time.c
-@@ -215,8 +215,10 @@ No definition for %s category found"), "LC_TIME"));
- 	}
-       else
- 	{
-+	  static const uint32_t wt_fmt_ampm[]
-+	    = { '%','I',':','%','M',':','%','S',' ','%','p',0 };
- 	  time->t_fmt_ampm = "%I:%M:%S %p";
--	  time->wt_fmt_ampm = (const uint32_t *) L"%I:%M:%S %p";
-+	  time->wt_fmt_ampm = wt_fmt_ampm;
- 	}
-     }
- 
-@@ -226,7 +228,7 @@ No definition for %s category found"), "LC_TIME"));
-       const int days_per_month[12] = { 31, 29, 31, 30, 31, 30,
- 				       31, 31, 30, 31 ,30, 31 };
-       size_t idx;
--      wchar_t *wstr;
-+      uint32_t *wstr;
- 
-       time->era_entries =
- 	(struct era_data *) xmalloc (time->num_era
-@@ -464,18 +466,18 @@ No definition for %s category found"), "LC_TIME"));
- 	    }
- 
- 	  /* Now generate the wide character name and format.  */
--	  wstr = wcschr ((wchar_t *) time->wera[idx], L':');/* end direction */
--	  wstr = wstr ? wcschr (wstr + 1, L':') : NULL;	/* end offset */
--	  wstr = wstr ? wcschr (wstr + 1, L':') : NULL;	/* end start */
--	  wstr = wstr ? wcschr (wstr + 1, L':') : NULL;	/* end end */
-+	  wstr = wcschr_uint32 (time->wera[idx], L':'); /* end direction */
-+	  wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end offset */
-+	  wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end start */
-+	  wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end end */
- 	  if (wstr != NULL)
- 	    {
--	      time->era_entries[idx].wname = (uint32_t *) wstr + 1;
--	      wstr = wcschr (wstr + 1, L':');	/* end name */
-+	      time->era_entries[idx].wname = wstr + 1;
-+	      wstr = wcschr_uint32 (wstr + 1, L':'); /* end name */
- 	      if (wstr != NULL)
- 		{
- 		  *wstr = L'\0';
--		  time->era_entries[idx].wformat = (uint32_t *) wstr + 1;
-+		  time->era_entries[idx].wformat = wstr + 1;
- 		}
- 	      else
- 		time->era_entries[idx].wname =
-@@ -530,7 +532,16 @@ No definition for %s category found"), "LC_TIME"));
-   if (time->date_fmt == NULL)
-     time->date_fmt = "%a %b %e %H:%M:%S %Z %Y";
-   if (time->wdate_fmt == NULL)
--    time->wdate_fmt = (const uint32_t *) L"%a %b %e %H:%M:%S %Z %Y";
-+    {
-+      static const uint32_t wdate_fmt[] =
-+	{ '%','a',' ',
-+	  '%','b',' ',
-+	  '%','e',' ',
-+	  '%','H',':','%','M',':','%','S',' ',
-+	  '%','Z',' ',
-+	  '%','Y',0 };
-+      time->wdate_fmt = wdate_fmt;
-+    }
- }
- 
- 
-diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
-index 2e05130..653b68c 100644
---- a/locale/programs/linereader.c
-+++ b/locale/programs/linereader.c
-@@ -595,7 +595,7 @@ get_string (struct linereader *lr, const struct charmap_t *charmap,
- {
-   int return_widestr = lr->return_widestr;
-   char *buf;
--  wchar_t *buf2 = NULL;
-+  uint32_t *buf2 = NULL;
-   size_t bufact;
-   size_t bufmax = 56;
- 
-diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
-index fd6ca51..328d36c 100644
---- a/locale/programs/localedef.c
-+++ b/locale/programs/localedef.c
-@@ -114,6 +114,7 @@ void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
- #define OPT_LIST_ARCHIVE 309
- #define OPT_LITTLE_ENDIAN 400
- #define OPT_BIG_ENDIAN 401
-+#define OPT_UINT32_ALIGN 402
- 
- /* Definitions of arguments for argp functions.  */
- static const struct argp_option options[] =
-@@ -150,6 +151,8 @@ static const struct argp_option options[] =
-     N_("Generate little-endian output") },
-   { "big-endian", OPT_BIG_ENDIAN, NULL, 0,
-     N_("Generate big-endian output") },
-+  { "uint32-align", OPT_UINT32_ALIGN, "ALIGNMENT", 0,
-+    N_("Set the target's uint32_t alignment in bytes (default 4)") },
-   { NULL, 0, NULL, 0, NULL }
- };
- 
-@@ -239,12 +242,14 @@ main (int argc, char *argv[])
-      ctype locale.  (P1003.2 4.35.5.2)  */
-   setlocale (LC_CTYPE, "POSIX");
- 
-+#ifndef NO_SYSCONF
-   /* Look whether the system really allows locale definitions.  POSIX
-      defines error code 3 for this situation so I think it must be
-      a fatal error (see P1003.2 4.35.8).  */
-   if (sysconf (_SC_2_LOCALEDEF) < 0)
-     WITH_CUR_LOCALE (error (3, 0, _("\
- FATAL: system does not define `_POSIX2_LOCALEDEF'")));
-+#endif
- 
-   /* Process charmap file.  */
-   charmap = charmap_read (charmap_file, verbose, 1, be_quiet, 1);
-@@ -338,6 +343,9 @@ parse_opt (int key, char *arg, struct argp_state *state)
-     case OPT_BIG_ENDIAN:
-       set_big_endian (true);
-       break;
-+    case OPT_UINT32_ALIGN:
-+      uint32_align_mask = strtol (arg, NULL, 0) - 1;
-+      break;
-     case 'c':
-       force_output = 1;
-       break;
-diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c
-index 33da52e..f790c4c 100644
---- a/locale/programs/locfile.c
-+++ b/locale/programs/locfile.c
-@@ -544,6 +544,9 @@ compare_files (const char *filename1, const char *filename2, size_t size,
-    machine running localedef.  */
- bool swap_endianness_p;
- 
-+/* The target's value of __align__(uint32_t) - 1.  */
-+unsigned int uint32_align_mask = 3;
-+
- /* When called outside a start_locale_structure/end_locale_structure
-    or start_locale_prelude/end_locale_prelude block, record that the
-    next byte in FILE's obstack will be the first byte of a new element.
-@@ -621,7 +624,7 @@ add_locale_string (struct locale_file *file, const char *string)
- void
- add_locale_wstring (struct locale_file *file, const uint32_t *string)
- {
--  add_locale_uint32_array (file, string, wcslen ((const wchar_t *) string) + 1);
-+  add_locale_uint32_array (file, string, wcslen_uint32 (string) + 1);
- }
- 
- /* Record that FILE's next element is the 32-bit integer VALUE.  */
-diff --git a/locale/programs/locfile.h b/locale/programs/locfile.h
-index 6fc441b..118b171 100644
---- a/locale/programs/locfile.h
-+++ b/locale/programs/locfile.h
-@@ -71,6 +71,8 @@ extern void write_all_categories (struct localedef_t *definitions,
- 
- extern bool swap_endianness_p;
- 
-+extern unsigned int uint32_align_mask;
-+
- /* Change the output to be big-endian if BIG_ENDIAN is true and
-    little-endian otherwise.  */
- static inline void
-@@ -89,7 +91,8 @@ maybe_swap_uint32 (uint32_t value)
- }
- 
- /* Likewise, but munge an array of N uint32_ts starting at ARRAY.  */
--static inline void
-+static void
-+__attribute__ ((unused))
- maybe_swap_uint32_array (uint32_t *array, size_t n)
- {
-   if (swap_endianness_p)
-@@ -99,7 +102,8 @@ maybe_swap_uint32_array (uint32_t *array, size_t n)
- 
- /* Like maybe_swap_uint32_array, but the array of N elements is at
-    the end of OBSTACK's current object.  */
--static inline void
-+static void
-+__attribute__ ((unused))
- maybe_swap_uint32_obstack (struct obstack *obstack, size_t n)
- {
-   maybe_swap_uint32_array ((uint32_t *) obstack_next_free (obstack) - n, n);
-@@ -276,4 +280,55 @@ extern void identification_output (struct localedef_t *locale,
- 				   const struct charmap_t *charmap,
- 				   const char *output_path);
- 
-+static size_t wcslen_uint32 (const uint32_t *str) __attribute__ ((unused));
-+static uint32_t * wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
-+static uint32_t * wcschr_uint32 (const uint32_t *s, uint32_t ch) __attribute__ ((unused));
-+static int wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2) __attribute__ ((unused));
-+static int wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
-+
-+static size_t
-+wcslen_uint32 (const uint32_t *str)
-+{
-+  size_t len = 0;
-+  while (str[len] != 0)
-+    len++;
-+  return len;
-+}
-+
-+static  int
-+wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n)
-+{
-+  while (n-- != 0)
-+    {
-+      int diff = *s1++ - *s2++;
-+      if (diff != 0)
-+	return diff;
-+    }
-+  return 0;
-+}
-+
-+static int
-+wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2)
-+{
-+  while (*s1 != 0 && *s1 == *s2)
-+    s1++, s2++;
-+  return *s1 - *s2;
-+}
-+
-+static uint32_t *
-+wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n)
-+{
-+  return memcpy (s1, s2, n * sizeof (uint32_t));
-+}
-+
-+static uint32_t *
-+wcschr_uint32 (const uint32_t *s, uint32_t ch)
-+{
-+  do
-+    if (*s == ch)
-+      return (uint32_t *) s;
-+  while (*s++ != 0);
-+  return 0;
-+}
-+
- #endif /* locfile.h */
-diff --git a/locale/setlocale.c b/locale/setlocale.c
-index ead030d..b551332 100644
---- a/locale/setlocale.c
-+++ b/locale/setlocale.c
-@@ -64,36 +64,6 @@ static char *const _nl_current_used[] =
- #endif
- 
- 
--/* Define an array of category names (also the environment variable names).  */
--const union catnamestr_t _nl_category_names attribute_hidden =
--  {
--    {
--#define DEFINE_CATEGORY(category, category_name, items, a) \
--      category_name,
--#include "categories.def"
--#undef DEFINE_CATEGORY
--    }
--  };
--
--const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
--  {
--#define DEFINE_CATEGORY(category, category_name, items, a) \
--    [category] = offsetof (union catnamestr_t, CATNAMEMF (__LINE__)),
--#include "categories.def"
--#undef DEFINE_CATEGORY
--  };
--
--/* An array of their lengths, for convenience.  */
--const uint8_t _nl_category_name_sizes[] attribute_hidden =
--  {
--#define DEFINE_CATEGORY(category, category_name, items, a) \
--    [category] = sizeof (category_name) - 1,
--#include "categories.def"
--#undef	DEFINE_CATEGORY
--    [LC_ALL] = sizeof ("LC_ALL") - 1
--  };
--
--
- #ifdef NL_CURRENT_INDIRECT
- # define WEAK_POSTLOAD(postload) weak_extern (postload)
- #else
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0026-When-disabling-SSE-make-sure-fpmath-is-not-set-to-us.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0026-When-disabling-SSE-make-sure-fpmath-is-not-set-to-us.patch
deleted file mode 100644
index 2b889a9..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0026-When-disabling-SSE-make-sure-fpmath-is-not-set-to-us.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 97fe7f1b23ea1f17533884b8fa7f7eb40087d558 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 5 Jan 2016 17:50:00 -0800
-Subject: [PATCH] When disabling SSE,  make sure -fpmath is not set to use SSE
- either
-
-This fixes errors when we inject sse options through CFLAGS and now
-that we have -Werror turned on by default this warning turns to become
-error on x86
-
-gcc -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -x c /dev/null -S
--mno-sse -mno-mmx
-
-generates warning
-/dev/null:1:0: warning: SSE instruction set disabled, using 387
-arithmetics
-
-where as
-
-gcc -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -x c /dev/null -S
--mno-sse -mno-mmx -mfpmath=387
-
-Generates no warnings
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- ChangeLog             | 5 +++++
- sysdeps/i386/Makefile | 2 +-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile
-index 168512f..70153b3 100644
---- a/sysdeps/i386/Makefile
-+++ b/sysdeps/i386/Makefile
-@@ -89,7 +89,7 @@ ifeq ($(subdir),elf)
- # the first 3 mm/xmm/ymm/zmm registers are used to pass vector parameters
- # which must be preserved.
- CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
--		   -mno-sse -mno-mmx)
-+		   -mno-sse -mno-mmx -mfpmath=387)
- 
- tests-special += $(objpfx)tst-ld-sse-use.out
- $(objpfx)tst-ld-sse-use.out: ../sysdeps/i386/tst-ld-sse-use.sh $(objpfx)ld.so
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0026-build_local_scope.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0026-build_local_scope.patch
new file mode 100644
index 0000000..8e0cb83
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0026-build_local_scope.patch
@@ -0,0 +1,56 @@
+From 6e4ec5a3c5fe63b6458036f18d43124de4a7e724 Mon Sep 17 00:00:00 2001
+From: Mark Hatle <mark.hatle@windriver.com>
+Date: Thu, 18 Aug 2016 14:07:58 -0500
+Subject: [PATCH] elf/dl-deps.c: Make _dl_build_local_scope breadth first
+
+According to the ELF specification:
+
+When resolving symbolic references, the dynamic linker examines the symbol
+tables with a breadth-first search.
+
+This function was using a depth first search.  By doing so the conflict
+resolution reported to the prelinker (when LD_TRACE_PRELINKING=1 is set)
+was incorrect.  This caused problems when their were various circular
+dependencies between libraries.  The problem usually manifested itself by
+the wrong IFUNC being executed.
+
+[BZ# 20488]
+
+Upstream-Status: Submitted [libc-alpha]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+---
+ elf/dl-deps.c | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/elf/dl-deps.c b/elf/dl-deps.c
+index 6a82987..fc37c87 100644
+--- a/elf/dl-deps.c
++++ b/elf/dl-deps.c
+@@ -73,13 +73,19 @@ _dl_build_local_scope (struct link_map **list, struct link_map *map)
+ {
+   struct link_map **p = list;
+   struct link_map **q;
++  struct link_map **r;
+ 
+   *p++ = map;
+   map->l_reserved = 1;
+-  if (map->l_initfini)
+-    for (q = map->l_initfini + 1; *q; ++q)
+-      if (! (*q)->l_reserved)
+-	p += _dl_build_local_scope (p, *q);
++
++  for (r = list; r < p; ++r)
++    if ((*r)->l_initfini)
++      for (q = (*r)->l_initfini + 1; *q; ++q)
++	if (! (*q)->l_reserved)
++	  {
++	    *p++ = *q;
++	    (*q)->l_reserved = 1;
++	  }
+   return p - list;
+ }
+ 
+-- 
+2.5.5
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc_2.23.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc_2.23.bb
deleted file mode 100644
index 18f4066..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc_2.23.bb
+++ /dev/null
@@ -1,133 +0,0 @@
-require glibc.inc
-
-LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
-      file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-      file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
-      file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS += "gperf-native"
-
-SRCREV ?= "e742928c1592b43db6809db4f39e67be151cdd27"
-
-SRCBRANCH ?= "release/${PV}/master"
-
-GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
-
-SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
-           file://0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch \
-           file://0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \
-           file://0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch \
-           file://0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
-           file://0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch \
-           file://0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
-           file://0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
-           file://0012-Make-ld-version-output-matching-grok-gold-s-output.patch \
-           file://0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch \
-           file://0014-Add-unused-attribute.patch \
-           file://0015-yes-within-the-path-sets-wrong-config-variables.patch \
-           file://0016-timezone-re-written-tzselect-as-posix-sh.patch \
-           file://0017-Remove-bash-dependency-for-nscd-init-script.patch \
-           file://0018-eglibc-Cross-building-and-testing-instructions.patch \
-           file://0019-eglibc-Help-bootstrap-cross-toolchain.patch \
-           file://0020-eglibc-cherry-picked-from.patch \
-           file://0021-eglibc-Clear-cache-lines-on-ppc8xx.patch \
-           file://0022-eglibc-Resolve-__fpscr_values-on-SH4.patch \
-           file://0023-eglibc-Install-PIC-archives.patch \
-           file://0025-eglibc-Forward-port-cross-locale-generation-support.patch \
-           file://0026-When-disabling-SSE-make-sure-fpmath-is-not-set-to-us.patch \
-"
-
-SRC_URI += "\
-           file://etc/ld.so.conf \
-           file://generate-supported.mk \
-"
-
-SRC_URI_append_class-nativesdk = "\
-           file://0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch \
-           file://0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch \
-           file://0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch \
-           file://0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch \
-"
-
-S = "${WORKDIR}/git"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-PACKAGES_DYNAMIC = ""
-
-# the -isystem in bitbake.conf screws up glibc do_stage
-BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
-TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
-
-GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN es_CR.ISO-8859-1"
-
-#
-# We will skip parsing glibc when target system C library selection is not glibc
-# this helps in easing out parsing for non-glibc system libraries
-#
-COMPATIBLE_HOST_libc-musl_class-target = "null"
-COMPATIBLE_HOST_libc-uclibc_class-target = "null"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
-                --without-cvs --disable-profile \
-                --disable-debug --without-gd \
-                --enable-clocale=gnu \
-                --enable-add-ons \
-                --with-headers=${STAGING_INCDIR} \
-                --without-selinux \
-                --enable-obsolete-rpc \
-                ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_libc_fpu_setting(bb, d)}"
-EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'libc-inet-anl', '--enable-nscd', '--disable-nscd', d)}"
-
-
-do_patch_append() {
-    bb.build.exec_func('do_fix_readlib_c', d)
-}
-
-do_fix_readlib_c () {
-	sed -i -e 's#OECORE_KNOWN_INTERPRETER_NAMES#${EGLIBC_KNOWN_INTERPRETER_NAMES}#' ${S}/elf/readlib.c
-}
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
-        (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
-        find ${S} -name "configure" | xargs touch
-        CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
-	  yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
-	  rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
-	# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
-	unset LDFLAGS
-	base_do_compile
-	(
-		cd ${S}/sunrpc/rpcsvc
-		for r in ${rpcsvc}; do
-			h=`echo $r|sed -e's,\.x$,.h,'`
-			rm -f $h
-			${B}/sunrpc/cross-rpcgen -h $r -o $h || bbwarn "${PN}: unable to generate header for $r"
-		done
-	)
-	echo "Adjust ldd script"
-	if [ -n "${RTLDLIST}" ]
-	then
-		prevrtld=`cat ${B}/elf/ldd | grep "^RTLDLIST=" | sed 's#^RTLDLIST="\?\([^"]*\)"\?$#\1#'`
-		if [ "${prevrtld}" != "${RTLDLIST}" ]
-		then
-			sed -i ${B}/elf/ldd -e "s#^RTLDLIST=.*\$#RTLDLIST=\"${prevrtld} ${RTLDLIST}\"#"
-		fi
-	fi
-
-}
-
-require glibc-package.inc
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc_2.24.bb b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc_2.24.bb
new file mode 100644
index 0000000..f5a21b2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc_2.24.bb
@@ -0,0 +1,140 @@
+require glibc.inc
+
+LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
+      file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+      file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
+      file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS += "gperf-native"
+
+SRCREV ?= "ea23815a795f72035262953dad5beb03e09c17dd"
+
+SRCBRANCH ?= "release/${PV}/master"
+
+GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
+
+SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
+           file://0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch \
+           file://0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \
+           file://0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch \
+           file://0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
+           file://0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch \
+           file://0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
+           file://0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
+           file://0012-Make-ld-version-output-matching-grok-gold-s-output.patch \
+           file://0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch \
+           file://0014-Add-unused-attribute.patch \
+           file://0015-yes-within-the-path-sets-wrong-config-variables.patch \
+           file://0016-timezone-re-written-tzselect-as-posix-sh.patch \
+           file://0017-Remove-bash-dependency-for-nscd-init-script.patch \
+           file://0018-eglibc-Cross-building-and-testing-instructions.patch \
+           file://0019-eglibc-Help-bootstrap-cross-toolchain.patch \
+           file://0020-eglibc-cherry-picked-from.patch \
+           file://0021-eglibc-Clear-cache-lines-on-ppc8xx.patch \
+           file://0022-eglibc-Resolve-__fpscr_values-on-SH4.patch \
+           file://0023-eglibc-Install-PIC-archives.patch \
+           file://0024-eglibc-Forward-port-cross-locale-generation-support.patch \
+           file://0025-Define-DUMMY_LOCALE_T-if-not-defined.patch \
+           file://0026-build_local_scope.patch \
+"
+
+SRC_URI += "\
+           file://etc/ld.so.conf \
+           file://generate-supported.mk \
+           file://0001-locale-fix-hard-coded-reference-to-gcc-E.patch \
+           "
+
+SRC_URI_append_class-nativesdk = "\
+           file://0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch \
+           file://0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch \
+           file://0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch \
+           file://0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch \
+"
+
+S = "${WORKDIR}/git"
+B = "${WORKDIR}/build-${TARGET_SYS}"
+
+PACKAGES_DYNAMIC = ""
+
+# the -isystem in bitbake.conf screws up glibc do_stage
+BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
+TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
+
+GLIBC_BROKEN_LOCALES = ""
+#
+# We will skip parsing glibc when target system C library selection is not glibc
+# this helps in easing out parsing for non-glibc system libraries
+#
+COMPATIBLE_HOST_libc-musl_class-target = "null"
+COMPATIBLE_HOST_libc-uclibc_class-target = "null"
+
+EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
+                --without-cvs --disable-profile \
+                --disable-debug --without-gd \
+                --enable-clocale=gnu \
+                --enable-add-ons \
+                --with-headers=${STAGING_INCDIR} \
+                --without-selinux \
+                --enable-obsolete-rpc \
+                ${GLIBC_EXTRA_OECONF}"
+
+EXTRA_OECONF += "${@get_libc_fpu_setting(bb, d)}"
+EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'libc-inet-anl', '--enable-nscd', '--disable-nscd', d)}"
+
+
+do_patch_append() {
+    bb.build.exec_func('do_fix_readlib_c', d)
+}
+
+do_fix_readlib_c () {
+	sed -i -e 's#OECORE_KNOWN_INTERPRETER_NAMES#${EGLIBC_KNOWN_INTERPRETER_NAMES}#' ${S}/elf/readlib.c
+}
+
+do_configure () {
+# override this function to avoid the autoconf/automake/aclocal/autoheader
+# calls for now
+# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
+# version check and doesn't really help with anything
+        (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
+        find ${S} -name "configure" | xargs touch
+        CPPFLAGS="" oe_runconf
+}
+
+rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
+	  yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
+	  rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
+
+do_compile () {
+	# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
+	unset LDFLAGS
+	base_do_compile
+	(
+		cd ${S}/sunrpc/rpcsvc
+		for r in ${rpcsvc}; do
+			h=`echo $r|sed -e's,\.x$,.h,'`
+			rm -f $h
+			${B}/sunrpc/cross-rpcgen -h $r -o $h || bbwarn "${PN}: unable to generate header for $r"
+		done
+	)
+	echo "Adjust ldd script"
+	if [ -n "${RTLDLIST}" ]
+	then
+		prevrtld=`cat ${B}/elf/ldd | grep "^RTLDLIST=" | sed 's#^RTLDLIST="\?\([^"]*\)"\?$#\1#'`
+		if [ "${prevrtld}" != "${RTLDLIST}" ]
+		then
+			sed -i ${B}/elf/ldd -e "s#^RTLDLIST=.*\$#RTLDLIST=\"${prevrtld} ${RTLDLIST}\"#"
+		fi
+	fi
+
+}
+
+# Use the host locale archive when built for nativesdk so that we don't need to
+# ship a complete (100MB) locale set.
+do_compile_prepend_class-nativesdk() {
+    echo "complocaledir=/usr/lib/locale" >> ${S}/configparms
+}
+
+require glibc-package.inc
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-core/ifupdown/ifupdown_0.8.2.bb b/import-layers/yocto-poky/meta/recipes-core/ifupdown/ifupdown_0.8.2.bb
index 732b295..9de01f9 100644
--- a/import-layers/yocto-poky/meta/recipes-core/ifupdown/ifupdown_0.8.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/ifupdown/ifupdown_0.8.2.bb
@@ -13,8 +13,6 @@
 	  "
 SRCREV = "05ea2fd4f49bb1201aeef2a42efbcff8f336112f"
 
-EXTRA_OEMAKE = ""
-
 S = "${WORKDIR}/git"
 
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/images/build-appliance-image_14.0.0.bb b/import-layers/yocto-poky/meta/recipes-core/images/build-appliance-image_14.0.0.bb
deleted file mode 100644
index bdcb921..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/images/build-appliance-image_14.0.0.bb
+++ /dev/null
@@ -1,120 +0,0 @@
-SUMMARY = "An image containing the build system itself"
-DESCRIPTION = "An image containing the build system that you can boot and run using either VMware Player or VMware Workstation."
-HOMEPAGE = "http://www.yoctoproject.org/documentation/build-appliance"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
-                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-IMAGE_INSTALL = "packagegroup-core-boot packagegroup-core-ssh-openssh packagegroup-self-hosted kernel-dev kernel-devsrc "
-
-IMAGE_FEATURES += "x11-base package-management splash"
-
-# Ensure there's enough space to do a core-image-sato build, with rm_work enabled
-IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
-
-# Do a quiet boot with limited console messages
-APPEND += "rootfstype=ext4 quiet"
-
-DEPENDS = "zip-native"
-IMAGE_FSTYPES = "vmdk"
-
-inherit core-image module-base
-
-SRCREV ?= "5f84d6545e6d7a2be8e603a1f4b1afae0dad0a9b"
-SRC_URI = "git://git.yoctoproject.org/poky;branch=krogoth \
-           file://Yocto_Build_Appliance.vmx \
-           file://Yocto_Build_Appliance.vmxf \
-           file://README_VirtualBox_Guest_Additions.txt \
-          "
-BA_INCLUDE_SOURCES ??= "0"
-
-IMAGE_CMD_ext4_append () {
-	# We don't need to reserve much space for root, 0.5% is more than enough
-	tune2fs -m 0.5 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4
-}
-
-fakeroot do_populate_poky_src () {
-	# Because fetch2's git's unpack uses -s cloneflag, the unpacked git repo
-	# will become invalid in the target.
-	rm -rf ${WORKDIR}/git/.git
-	rm -f ${WORKDIR}/git/.gitignore
-
-	cp -R ${WORKDIR}/git ${IMAGE_ROOTFS}/home/builder/poky
-
-	mkdir -p ${IMAGE_ROOTFS}/home/builder/poky/build/conf
-	mkdir -p ${IMAGE_ROOTFS}/home/builder/poky/build/downloads
-	if [ ${BA_INCLUDE_SOURCES} != 0 ]; then
-		cp -RpL ${DL_DIR}/* ${IMAGE_ROOTFS}/home/builder/poky/build/downloads/
-		# Remove the git2_* tarballs -- this is ok since we still have the git2/.
-		rm -rf ${IMAGE_ROOTFS}/home/builder/poky/build/downloads/git2_*
-	fi
-
-	# Place the README_VirtualBox_Guest_Additions file in builders home folder.
-	cp ${WORKDIR}/README_VirtualBox_Guest_Additions.txt ${IMAGE_ROOTFS}/home/builder/
-
-	# Create a symlink, needed for out-of-tree kernel modules build
-	ln -snr ${IMAGE_ROOTFS}/usr/src/kernel ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
-
-	echo "/usr/bin" > ${IMAGE_ROOTFS}/home/builder/poky/build/pseudodone
-	echo "INHERIT += \"rm_work\"" >> ${IMAGE_ROOTFS}/home/builder/poky/build/conf/auto.conf
-	mkdir -p ${IMAGE_ROOTFS}/home/builder/pseudo
-	echo "export PSEUDO_PREFIX=/usr" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "export PSEUDO_LOCALSTATEDIR=/home/builder/pseudo" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "export PSEUDO_LIBDIR=/usr/lib/pseudo/lib64" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-
-	# Also save (for reference only) the actual SRCREV used to create this image
-	echo "export BA_SRCREV=${SRCREV}" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "# If working behind a proxy and using the provided oe-git-proxy script" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "# you need to set ALL_PROXY based on your proxy settings." >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "# Example ALL_PROXY values:" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "# export ALL_PROXY=https://proxy.example.com:8080" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-	echo "# export ALL_PROXY=socks://socks.example.com:1080" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
-
-	chown builder.builder ${IMAGE_ROOTFS}/home/builder/pseudo
-
-	chown -R builder.builder ${IMAGE_ROOTFS}/home/builder/poky
-	chmod -R ug+rw ${IMAGE_ROOTFS}/home/builder/poky
-
-	# Assume we will need CDROM to install guest additions
-	mkdir -p ${IMAGE_ROOTFS}/media/cdrom
-
-	# Allow builder to use sudo
-	echo "builder ALL=(ALL) NOPASSWD: ALL" >> ${IMAGE_ROOTFS}/etc/sudoers
-
-	# Load tap/tun at startup
-	ln -sr ${IMAGE_ROOTFS}/usr/sbin/iptables ${IMAGE_ROOTFS}/sbin/iptables
-	echo "tun" >> ${IMAGE_ROOTFS}/etc/modules
-
-	# Use Clearlooks GTK+ theme
-	mkdir -p ${IMAGE_ROOTFS}/etc/gtk-2.0
-	echo 'gtk-theme-name = "Clearlooks"' > ${IMAGE_ROOTFS}/etc/gtk-2.0/gtkrc
-}
-
-IMAGE_PREPROCESS_COMMAND += "do_populate_poky_src; "
-
-addtask rootfs after do_unpack
-
-python () {
-	# Ensure we run these usually noexec tasks
-	d.delVarFlag("do_fetch", "noexec")
-	d.delVarFlag("do_unpack", "noexec")
-}
-
-create_bundle_files () {
-	cd ${WORKDIR}
-	mkdir -p Yocto_Build_Appliance
-	cp *.vmx* Yocto_Build_Appliance
-	ln -sf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmdk Yocto_Build_Appliance/Yocto_Build_Appliance.vmdk
-	zip -r ${DEPLOY_DIR_IMAGE}/Yocto_Build_Appliance-${DATETIME}.zip Yocto_Build_Appliance
-	ln -sf Yocto_Build_Appliance-${DATETIME}.zip ${DEPLOY_DIR_IMAGE}/Yocto_Build_Appliance.zip 
-}
-create_bundle_files[vardepsexclude] = "DATETIME"
-
-python do_bundle_files() {
-    bb.build.exec_func('create_bundle_files', d)
-}
-
-addtask bundle_files after do_vmimg before do_build
-do_bundle_files[nostamp] = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/import-layers/yocto-poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
new file mode 100644
index 0000000..e6ed0f4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -0,0 +1,117 @@
+SUMMARY = "An image containing the build system itself"
+DESCRIPTION = "An image containing the build system that you can boot and run using either VMware Player or VMware Workstation."
+HOMEPAGE = "http://www.yoctoproject.org/documentation/build-appliance"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+IMAGE_INSTALL = "packagegroup-core-boot packagegroup-core-ssh-openssh packagegroup-self-hosted \
+                 kernel-dev kernel-devsrc connman connman-plugin-ethernet dhcp-client"
+
+IMAGE_FEATURES += "x11-base package-management splash"
+
+# Ensure there's enough space to do a core-image-sato build, with rm_work enabled
+IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
+
+# Do a quiet boot with limited console messages
+APPEND += "rootfstype=ext4 quiet"
+
+DEPENDS = "zip-native"
+IMAGE_FSTYPES = "vmdk"
+
+inherit core-image module-base
+
+SRCREV ?= "746c681be4c744d0c6c2d3225b94550241546f65"
+SRC_URI = "git://git.yoctoproject.org/poky;branch=morty \
+           file://Yocto_Build_Appliance.vmx \
+           file://Yocto_Build_Appliance.vmxf \
+           file://README_VirtualBox_Guest_Additions.txt \
+          "
+BA_INCLUDE_SOURCES ??= "0"
+
+IMAGE_CMD_ext4_append () {
+	# We don't need to reserve much space for root, 0.5% is more than enough
+	tune2fs -m 0.5 ${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.ext4
+}
+
+fakeroot do_populate_poky_src () {
+	# Because fetch2's git's unpack uses -s cloneflag, the unpacked git repo
+	# will become invalid in the target.
+	rm -rf ${WORKDIR}/git/.git
+	rm -f ${WORKDIR}/git/.gitignore
+
+	cp -R ${WORKDIR}/git ${IMAGE_ROOTFS}/home/builder/poky
+
+	mkdir -p ${IMAGE_ROOTFS}/home/builder/poky/build/conf
+	mkdir -p ${IMAGE_ROOTFS}/home/builder/poky/build/downloads
+	if [ ${BA_INCLUDE_SOURCES} != 0 ]; then
+		cp -RpL ${DL_DIR}/* ${IMAGE_ROOTFS}/home/builder/poky/build/downloads/
+		# Remove the git2_* tarballs -- this is ok since we still have the git2/.
+		rm -rf ${IMAGE_ROOTFS}/home/builder/poky/build/downloads/git2_*
+	fi
+
+	# Place the README_VirtualBox_Guest_Additions file in builders home folder.
+	cp ${WORKDIR}/README_VirtualBox_Guest_Additions.txt ${IMAGE_ROOTFS}/home/builder/
+
+	# Create a symlink, needed for out-of-tree kernel modules build
+	lnr ${IMAGE_ROOTFS}${KERNEL_SRC_PATH} ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
+
+	echo "INHERIT += \"rm_work\"" >> ${IMAGE_ROOTFS}/home/builder/poky/build/conf/auto.conf
+	echo "export LC_ALL=en_US.utf8" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+
+	# Also save (for reference only) the actual SRCREV used to create this image
+	echo "export BA_SRCREV=${SRCREV}" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+	echo "" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+	echo "export PATH=$PATH:/sbin" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+	echo "" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+
+	echo "# If working behind a proxy and using the provided oe-git-proxy script" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+	echo "# you need to set ALL_PROXY based on your proxy settings." >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+	echo "# Example ALL_PROXY values:" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+	echo "# export ALL_PROXY=https://proxy.example.com:8080" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+	echo "# export ALL_PROXY=socks://socks.example.com:1080" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
+
+	chown -R builder.builder ${IMAGE_ROOTFS}/home/builder/poky
+	chmod -R ug+rw ${IMAGE_ROOTFS}/home/builder/poky
+
+	# Assume we will need CDROM to install guest additions
+	mkdir -p ${IMAGE_ROOTFS}/media/cdrom
+
+	# Allow builder to use sudo
+	echo "builder ALL=(ALL) NOPASSWD: ALL" >> ${IMAGE_ROOTFS}/etc/sudoers
+
+	# Load tap/tun at startup
+	lnr ${IMAGE_ROOTFS}/usr/sbin/iptables ${IMAGE_ROOTFS}/sbin/iptables
+	echo "tun" >> ${IMAGE_ROOTFS}/etc/modules
+
+	# Use Clearlooks GTK+ theme
+	mkdir -p ${IMAGE_ROOTFS}/etc/gtk-2.0
+	echo 'gtk-theme-name = "Clearlooks"' > ${IMAGE_ROOTFS}/etc/gtk-2.0/gtkrc
+}
+
+IMAGE_PREPROCESS_COMMAND += "do_populate_poky_src; "
+
+addtask rootfs after do_unpack
+
+python () {
+	# Ensure we run these usually noexec tasks
+	d.delVarFlag("do_fetch", "noexec")
+	d.delVarFlag("do_unpack", "noexec")
+}
+
+create_bundle_files () {
+	cd ${WORKDIR}
+	mkdir -p Yocto_Build_Appliance
+	cp *.vmx* Yocto_Build_Appliance
+	ln -sf ${IMGDEPLOYDIR}/${IMAGE_NAME}.vmdk Yocto_Build_Appliance/Yocto_Build_Appliance.vmdk
+	zip -r ${IMGDEPLOYDIR}/Yocto_Build_Appliance-${DATETIME}.zip Yocto_Build_Appliance
+	ln -sf Yocto_Build_Appliance-${DATETIME}.zip ${IMGDEPLOYDIR}/Yocto_Build_Appliance.zip
+}
+create_bundle_files[vardepsexclude] = "DATETIME"
+
+python do_bundle_files() {
+    bb.build.exec_func('create_bundle_files', d)
+}
+
+addtask bundle_files after do_vmimg before do_image_complete
diff --git a/import-layers/yocto-poky/meta/recipes-core/images/core-image-minimal-initramfs.bb b/import-layers/yocto-poky/meta/recipes-core/images/core-image-minimal-initramfs.bb
index 8d7c0d2..5794a25 100644
--- a/import-layers/yocto-poky/meta/recipes-core/images/core-image-minimal-initramfs.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/images/core-image-minimal-initramfs.bb
@@ -20,3 +20,6 @@
 IMAGE_ROOTFS_EXTRA_SPACE = "0"
 
 BAD_RECOMMENDATIONS += "busybox-syslog"
+
+# Use the same restriction as initramfs-live-install
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install-efi.sh b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install-efi.sh
index d58826a..441e252 100644
--- a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install-efi.sh
+++ b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install-efi.sh
@@ -29,7 +29,13 @@
 
 echo "Searching for hard drives ..."
 
-for device in `ls /sys/block/`; do
+# Some eMMC devices have special sub devices such as mmcblk0boot0 etc
+# we're currently only interested in the root device so pick them wisely
+devices=`ls /sys/block/ | grep -v mmcblk` || true
+mmc_devices=`ls /sys/block/ | grep "mmcblk[0-9]\{1,\}$"` || true
+devices="$devices $mmc_devices"
+
+for device in $devices; do
     case $device in
         loop*)
             # skip loop device
@@ -78,17 +84,23 @@
         cat /sys/block/$hdname/device/uevent
     fi
     echo
-    # Get user choice
-    while true; do
-        echo -n "Do you want to install this image there? [y/n] "
-        read answer
-        if [ "$answer" = "y" -o "$answer" = "n" ]; then
+done
+
+# Get user choice
+while true; do
+    echo "Please select an install target or press n to exit ($hdnamelist ): "
+    read answer
+    if [ "$answer" = "n" ]; then
+        echo "Installation manually aborted."
+        exit 1
+    fi
+    for hdname in $hdnamelist; do
+        if [ "$answer" = "$hdname" ]; then
+            TARGET_DEVICE_NAME=$answer
             break
         fi
-        echo "Please answer y or n"
     done
-    if [ "$answer" = "y" ]; then
-        TARGET_DEVICE_NAME=$hdname
+    if [ -n "$TARGET_DEVICE_NAME" ]; then
         break
     fi
 done
@@ -116,8 +128,8 @@
 mkdir -p /tmp
 
 # Create /etc/mtab if not present
-if [ ! -e /etc/mtab ]; then
-    cat /proc/mounts > /etc/mtab
+if [ ! -e /etc/mtab ] && [ -e /proc/mounts ]; then
+    ln -sf /proc/mounts /etc/mtab
 fi
 
 disk_size=$(parted ${device} unit mb print | grep '^Disk .*: .*MB' | cut -d" " -f 3 | sed -e "s/MB//")
@@ -138,6 +150,12 @@
     part_prefix="p"
     rootwait="rootwait"
 fi
+
+# USB devices also require rootwait
+if [ -n `readlink /dev/disk/by-id/usb* | grep $TARGET_DEVICE_NAME` ]; then
+    rootwait="rootwait"
+fi
+
 bootfs=${device}${part_prefix}1
 rootfs=${device}${part_prefix}2
 swap=${device}${part_prefix}3
diff --git a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install.sh b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install.sh
index c5623ee..04ce5fb 100644
--- a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -28,7 +28,13 @@
 
 echo "Searching for hard drives ..."
 
-for device in `ls /sys/block/`; do
+# Some eMMC devices have special sub devices such as mmcblk0boot0 etc
+# we're currently only interested in the root device so pick them wisely
+devices=`ls /sys/block/ | grep -v mmcblk` || true
+mmc_devices=`ls /sys/block/ | grep "mmcblk[0-9]\{1,\}$"` || true
+devices="$devices $mmc_devices"
+
+for device in $devices; do
     case $device in
         loop*)
             # skip loop device
@@ -72,17 +78,23 @@
         cat /sys/block/$hdname/device/uevent
     fi
     echo
-    # Get user choice
-    while true; do
-        echo -n "Do you want to install this image there? [y/n] "
-        read answer
-        if [ "$answer" = "y" -o "$answer" = "n" ]; then
+done
+
+# Get user choice
+while true; do
+    echo "Please select an install target or press n to exit ($hdnamelist ): "
+    read answer
+    if [ "$answer" = "n" ]; then
+        echo "Installation manually aborted."
+        exit 1
+    fi
+    for hdname in $hdnamelist; do
+        if [ "$answer" = "$hdname" ]; then
+            TARGET_DEVICE_NAME=$answer
             break
         fi
-        echo "Please answer y or n"
     done
-    if [ "$answer" = "y" ]; then
-        TARGET_DEVICE_NAME=$hdname
+    if [ -n "$TARGET_DEVICE_NAME" ]; then
         break
     fi
 done
@@ -112,8 +124,8 @@
 fi
 
 mkdir -p /tmp
-if [ ! -L /etc/mtab ]; then
-    cat /proc/mounts > /etc/mtab
+if [ ! -L /etc/mtab ] && [ -e /proc/mounts ]; then
+    ln -sf /proc/mounts /etc/mtab
 fi
 
 disk_size=$(parted ${device} unit mb print | grep '^Disk .*: .*MB' | cut -d" " -f 3 | sed -e "s/MB//")
@@ -146,6 +158,11 @@
     rootwait="rootwait"
 fi
 
+# USB devices also require rootwait
+if [ -n `readlink /dev/disk/by-id/usb* | grep $TARGET_DEVICE_NAME` ]; then
+    rootwait="rootwait"
+fi
+
 if [ $grub_version -eq 0 ] ; then
     bios_boot=''
     bootfs=${device}${part_prefix}1
diff --git a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-live.sh b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-live.sh
index 09fb479..441b41c 100644
--- a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -80,7 +80,9 @@
 boot_live_root() {
     # Watches the udev event queue, and exits if all current events are handled
     udevadm settle --timeout=3 --quiet
-    killall "${_UDEV_DAEMON##*/}" 2>/dev/null
+    # Kills the current udev running processes, which survived after
+    # device node creation events were handled, to avoid unexpected behavior
+    killall -9 "${_UDEV_DAEMON##*/}" 2>/dev/null
 
     # Allow for identification of the real root even after boot
     mkdir -p  ${ROOT_MOUNT}/media/realroot
diff --git a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/finish b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/finish
index d09bbb8..717383e 100755
--- a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/finish
+++ b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/finish
@@ -8,39 +8,6 @@
 
 finish_run() {
 	if [ -n "$ROOTFS_DIR" ]; then
-		if [ -n "$bootparam_rootdelay" ]; then
-			debug "Sleeping for $rootdelay second(s) to wait root to settle..."
-			sleep $bootparam_rootdelay
-		fi
-
-		if [ -n "$bootparam_root" ]; then
-			debug "No e2fs compatible filesystem has been mounted, mounting $bootparam_root..."
-
-			if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
-				root_uuid=`echo $bootparam_root | cut -c6-`
-				bootparam_root="/dev/disk/by-uuid/$root_uuid"
-			fi
-
-			if [ -e "$bootparam_root" ]; then
-				flags=""
-				if [ -n "$bootparam_ro" ]; then
-					if [  -n "$bootparam_rootflags" ]; then
-						bootparam_rootflags="$bootparam_rootflags,"
-					fi
-					bootparam_rootflags="${bootparam_rootflags}ro"
-				fi
-				if [ -n "$bootparam_rootflags" ]; then
-					flags="$flags -o$bootparam_rootflags"
-				fi
-				if [ -n "$bootparam_rootfstype" ]; then
-					flags="$flags -t$bootparam_rootfstype"
-				fi
-				mount $flags $bootparam_root $ROOTFS_DIR
-			else
-				msg "root '$bootparam_root' doesn't exist."
-			fi
-		fi
-
 		if [ ! -d $ROOTFS_DIR/dev ]; then
 			fatal "ERROR: There's no '/dev' on rootfs."
 		fi
diff --git a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/init b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/init
index 204f237..37527a8 100755
--- a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/init
+++ b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/init
@@ -76,8 +76,8 @@
 # make mount stop complaining about missing /etc/fstab
 touch /etc/fstab
 
-# initialize /proc, /sys and /var/lock
-mkdir -p /proc /sys /var/lock
+# initialize /proc, /sys, /run/lock and /var/lock
+mkdir -p /proc /sys /run/lock /var/lock
 mount -t proc proc /proc
 mount -t sysfs sysfs /sys
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
new file mode 100644
index 0000000..14768f1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
@@ -0,0 +1,62 @@
+#!/bin/sh
+# Copyright (C) 2011 O.S. Systems Software LTDA.
+# Licensed on MIT
+
+rootfs_enabled() {
+	return 0
+}
+
+rootfs_run() {
+        if [ -z "$ROOTFS_DIR" ]; then
+		return
+        fi
+	C=0
+	delay=${bootparam_rootdelay:-1}
+	timeout=${bootparam_roottimeout:-5}
+	while [ ! -d $ROOTFS_DIR/dev ]; do
+		if [ $(( $C * $delay )) -gt $timeout ]; then
+			fatal "root '$bootparam_root' doesn't exist or does not contain a /dev."
+		fi
+
+		if [ -n "$bootparam_root" ]; then
+			debug "No e2fs compatible filesystem has been mounted, mounting $bootparam_root..."
+
+			if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
+				root_uuid=`echo $bootparam_root | cut -c6-`
+				bootparam_root="/dev/disk/by-uuid/$root_uuid"
+			fi
+
+			if [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
+				root_uuid=`echo $bootparam_root | cut -c10-`
+				bootparam_root="/dev/disk/by-partuuid/$root_uuid"
+			fi
+
+			if [ -e "$bootparam_root" ]; then
+				flags=""
+				if [ -n "$bootparam_ro" ] && ! echo "$bootparam_rootflags" | grep -w -q "ro"; then
+					if [  -n "$bootparam_rootflags" ]; then
+						bootparam_rootflags="$bootparam_rootflags,"
+					fi
+					bootparam_rootflags="${bootparam_rootflags}ro"
+				fi
+				if [ -n "$bootparam_rootflags" ]; then
+					flags="$flags -o$bootparam_rootflags"
+				fi
+				if [ -n "$bootparam_rootfstype" ]; then
+					flags="$flags -t$bootparam_rootfstype"
+				fi
+				mount $flags $bootparam_root $ROOTFS_DIR
+				if [ -d $ROOTFS_DIR/dev ]; then
+					break
+				else
+					# It is unlikely to change, but keep trying anyway.
+					# Perhaps we pick a different device next time.
+					umount $ROOTFS_DIR
+					fi
+				fi
+		fi
+		debug "Sleeping for $delay second(s) to wait root to settle..."
+		sleep $delay
+		C=$(( $C + 1 ))
+	done
+}
diff --git a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index 0664a95..67a1b04 100644
--- a/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
@@ -8,6 +8,7 @@
 inherit allarch
 
 SRC_URI = "file://init \
+           file://rootfs \
            file://finish \
            file://mdev \
            file://udev \
@@ -21,6 +22,7 @@
 
     # base
     install -m 0755 ${WORKDIR}/init ${D}/init
+    install -m 0755 ${WORKDIR}/rootfs ${D}/init.d/90-rootfs
     install -m 0755 ${WORKDIR}/finish ${D}/init.d/99-finish
 
     # mdev
@@ -45,12 +47,21 @@
             initramfs-module-mdev \
             initramfs-module-udev \
             initramfs-module-e2fs \
+            initramfs-module-rootfs \
             initramfs-module-debug"
 
 FILES_${PN}-base = "/init /init.d/99-finish /dev"
 
+# 99-finish in base depends on some other module which mounts
+# the rootfs, like 90-rootfs. To replace that default, use
+# BAD_RECOMMENDATIONS += "initramfs-module-rootfs" in your
+# initramfs recipe and install something else, or install
+# something that runs earlier (for example, a 89-my-rootfs)
+# and mounts the rootfs. Then 90-rootfs will proceed immediately.
+RRECOMMENDS_${PN}-base += "initramfs-module-rootfs"
+
 SUMMARY_initramfs-module-mdev = "initramfs support for mdev"
-RDEPENDS_initramfs-module-mdev = "${PN}-base"
+RDEPENDS_initramfs-module-mdev = "${PN}-base busybox-mdev"
 FILES_initramfs-module-mdev = "/init.d/01-mdev"
 
 SUMMARY_initramfs-module-udev = "initramfs support for udev"
@@ -61,6 +72,10 @@
 RDEPENDS_initramfs-module-e2fs = "${PN}-base"
 FILES_initramfs-module-e2fs = "/init.d/10-e2fs"
 
+SUMMARY_initramfs-module-rootfs = "initramfs support for locating and mounting the root partition"
+RDEPENDS_initramfs-module-rootfs = "${PN}-base"
+FILES_initramfs-module-rootfs = "/init.d/90-rootfs"
+
 SUMMARY_initramfs-module-debug = "initramfs dynamic debug support"
 RDEPENDS_initramfs-module-debug = "${PN}-base"
 FILES_initramfs-module-debug = "/init.d/00-debug"
diff --git a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh
index dfee2af..02f0351 100755
--- a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh
+++ b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh
@@ -69,7 +69,7 @@
 # before fsck, since fsck can be quite memory-hungry.
 #
 test "$VERBOSE" != no && echo "Activating swap"
-swapon -a 2> /dev/null
+[ -x /sbin/swapon ] && swapon -a
 
 #
 # Check the root filesystem.
diff --git a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/dmesg.sh b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/dmesg.sh
old mode 100644
new mode 100755
index a97b068..2b9eba6
--- a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/dmesg.sh
+++ b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/dmesg.sh
@@ -8,8 +8,8 @@
 ### END INIT INFO
 
 if [ -f /var/log/dmesg ]; then
-	if [ -f /usr/sbin/logrotate ]; then
-		logrotate -f /etc/logrotate-dmesg.conf
+	if LOGPATH=$(which logrotate); then
+		$LOGPATH -f /etc/logrotate-dmesg.conf
 	else
 		mv -f /var/log/dmesg /var/log/dmesg.old
 	fi
diff --git a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh
index 94bae42..c719be5 100755
--- a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh
+++ b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh
@@ -33,7 +33,7 @@
 # Execute swapon command again, in case we want to swap to
 # a file on a now mounted filesystem.
 #
-swapon -a 2> /dev/null
+[ -x /sbin/swapon ] && swapon -a
 
 : exit 0
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/umountfs b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/umountfs
index 61324c6..7fb5c58 100755
--- a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/umountfs
+++ b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts-1.0/umountfs
@@ -12,7 +12,7 @@
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
 echo "Deactivating swap..."
-swapoff -a
+[ -x /sbin/swapoff ] && swapoff -a
 
 # We leave /proc mounted.
 echo "Unmounting local filesystems..."
diff --git a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts_1.0.bb b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts_1.0.bb
index 148491f..8f110b0 100644
--- a/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts_1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/initscripts/initscripts_1.0.bb
@@ -138,7 +138,7 @@
 	update-rc.d -r ${D} sysfs.sh start 02 S .
 	update-rc.d -r ${D} populate-volatile.sh start 37 S .
 	update-rc.d -r ${D} read-only-rootfs-hook.sh start 29 S .
-	update-rc.d -r ${D} devpts.sh start 38 S .
+	update-rc.d -r ${D} devpts.sh start 06 S .
 	if [ "${TARGET_ARCH}" = "arm" ]; then
 	        update-rc.d -r ${D} alignment.sh start 06 S .
 	fi
diff --git a/import-layers/yocto-poky/meta/recipes-core/kbd/kbd/run-ptest b/import-layers/yocto-poky/meta/recipes-core/kbd/kbd/run-ptest
new file mode 100644
index 0000000..7a2d205
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/kbd/kbd/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+CURDIR=$(dirname `readlink -f $0`)
+make -k -C ${CURDIR}/tests check-TESTS
diff --git a/import-layers/yocto-poky/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch b/import-layers/yocto-poky/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch
new file mode 100644
index 0000000..27d6f42
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch
@@ -0,0 +1,56 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+kbd is out of source built, then the value of $(srcdir) is relative path of
+${S}/tests to ${B}/tests. Macro DATADIR is defined with $(srcdir) and replaced
+in .c files by compiler, and string @DATADIR@ is replaced with $(srdir) by rule
+"%: %.in" in Makefile.
+
+But kbd-ptest puts test cases and resource files in same directory, then some
+ptest cases fail to find resources.
+
+Replace DATADIR and @DATADIR@ with current directory(dot) to make test cases
+run as expected.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 1976333..b36aef3 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -1,7 +1,7 @@
+ AM_CPPFLAGS = \
+ 	-I$(srcdir)/../src/libkeymap \
+ 	-I$(builddir)/../src/libkeymap \
+-	-DDATADIR=\"$(srcdir)\" -DBUILDDIR=\"$(builddir)\"
++	-DDATADIR=\".\" -DBUILDDIR=\"$(builddir)\"
+ 
+ AM_CFLAGS = $(CHECK_CFLAGS)
+ LDADD  = $(top_builddir)/src/libkeymap/libkeymap.la $(CHECK_LIBS)
+diff --git a/tests/alt-is-meta.in b/tests/alt-is-meta.in
+index ddd5ed8..772fb51 100755
+--- a/tests/alt-is-meta.in
++++ b/tests/alt-is-meta.in
+@@ -7,8 +7,8 @@ cd "$cwd"
+ rc=0
+ temp="$(mktemp "@BUILDDIR@/temp.XXXXXXXXX")"
+ 
+-./libkeymap-showmaps "@DATADIR@"/alt-is-meta.map > "$temp" || rc=$?
+-cmp -s "@DATADIR@//alt-is-meta.output" "$temp" || rc=$?
++./libkeymap-showmaps ./alt-is-meta.map > "$temp" || rc=$?
++cmp -s "./alt-is-meta.output" "$temp" || rc=$?
+ 
+ if [ "$rc" != 0 ]; then
+ 	printf 'failed\n'
+diff --git a/tests/dumpkeys-fulltable.in b/tests/dumpkeys-fulltable.in
+index 7c856e5..14d92c1 100755
+--- a/tests/dumpkeys-fulltable.in
++++ b/tests/dumpkeys-fulltable.in
+@@ -5,7 +5,7 @@ cwd="$(readlink -ev "${0%/*}")"
+ cd "$cwd"
+ 
+ BUILDDIR="@BUILDDIR@"
+-DATADIR="@DATADIR@"
++DATADIR="."
+ 
+ check_keymap() {
+ 	local kmap temp rc
diff --git a/import-layers/yocto-poky/meta/recipes-core/kbd/kbd_2.0.3.bb b/import-layers/yocto-poky/meta/recipes-core/kbd/kbd_2.0.3.bb
index 858dc05..54d1683 100644
--- a/import-layers/yocto-poky/meta/recipes-core/kbd/kbd_2.0.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/kbd/kbd_2.0.3.bb
@@ -11,6 +11,8 @@
 RCONFLICTS_${PN} = "console-tools"
 
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \
+           file://run-ptest \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'file://set-proper-path-of-resources.patch', '', d)} \
           "
 
 SRC_URI[md5sum] = "231b46e7142eb41ea3ae06d2ded3c208"
@@ -19,6 +21,21 @@
 PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
 PACKAGECONFIG[pam] = "--enable-vlock, --disable-vlock, libpam,"
 
+do_compile_ptest() {
+    oe_runmake -C ${B}/tests dumpkeys-fulltable alt-is-meta
+}
+
+do_install_ptest() {
+    install -D ${B}/tests/Makefile ${D}${PTEST_PATH}/tests/Makefile
+    sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \
+	-e '/libkeymap_.*_SOURCES =/d' -e '/$(EXEEXT):/,/^$/d' ${D}${PTEST_PATH}/tests/Makefile
+
+    find ${B}/tests -executable -exec install {} ${D}${PTEST_PATH}/tests \;
+    find ${S}/tests \( -name \*.map -o -name \*.bin -o -name \*.output \) -exec install {} ${D}${PTEST_PATH}/tests \;
+
+    install -D -m 755 ${S}/config/test-driver ${D}${PTEST_PATH}/config/test-driver
+}
+
 PACKAGES += "${PN}-consolefonts ${PN}-keymaps ${PN}-unimaps ${PN}-consoletrans"
 
 FILES_${PN}-consolefonts = "${datadir}/consolefonts"
@@ -26,10 +43,11 @@
 FILES_${PN}-keymaps = "${datadir}/keymaps"
 FILES_${PN}-unimaps = "${datadir}/unimaps"
 
+RDEPENDS_${PN}-ptest = "make"
+
 inherit update-alternatives
 
 ALTERNATIVE_${PN} = "chvt deallocvt fgconsole openvt"
 ALTERNATIVE_PRIORITY = "100"
 
 BBCLASSEXTEND = "native"
-PARALLEL_MAKEINST = ""
diff --git a/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/configure.ac-fix-cross-compiling-warning.patch b/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/configure.ac-fix-cross-compiling-warning.patch
deleted file mode 100644
index 2f8079b..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/configure.ac-fix-cross-compiling-warning.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-configure.ac: fix cross compiling warning
-
-There is a warning while cross compiling which triggered a
-failure by do_qa_configure
-...
-|configure:12652: checking for gzread in -lz
-|configure:12677: mips-poky-linux-gcc  -meb -mabi=32 -mhard-float
- -L/lib conftest.c -lz   >&5
-|ld: warning: library search path "/lib" is unsafe for cross-compilation
-...
-
-While do the lib checking, do not add '-L${Z_DIR}/lib' to LDFLAGS could fix it.
-
-Upstream-Status: Inappropriate [oe specific]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 9a90600..0bac8a4 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -391,8 +391,6 @@ if test "$with_zlib" = "no"; then
-     echo "Disabling compression support"
- else
-     AC_CHECK_HEADERS(zlib.h,
--        [SAVE_LDFLAGS="${LDFLAGS}"
--	 LDFLAGS="-L${Z_DIR}/lib"
- 	AC_CHECK_LIB(z, gzread,[
- 	    AC_DEFINE([HAVE_LIBZ], [1], [Have compression library])
- 	    WITH_ZLIB=1
-@@ -406,8 +404,7 @@ else
- 		esac]
- 	    else
- 		Z_LIBS="-lz"
--	    fi])
--	 LDFLAGS="${SAVE_LDFLAGS}"])
-+	    fi]))
- fi
- 
- AC_SUBST(Z_CFLAGS)
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2_2.9.3.bb b/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2_2.9.3.bb
deleted file mode 100644
index 9c9873f..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2_2.9.3.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "XML C Parser Library and Toolkit"
-DESCRIPTION = "The XML Parser Library allows for manipulation of XML files.  Libxml2 exports Push and Pull type parser interfaces for both XML and HTML.  It can do DTD validation at parse time, on a parsed document instance or with an arbitrary DTD.  Libxml2 includes complete XPath, XPointer and Xinclude implementations.  It also has a SAX like interface, which is designed to be compatible with Expat."
-HOMEPAGE = "http://www.xmlsoft.org/"
-BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://Copyright;md5=2044417e2e5006b65a8b9067b683fcf1 \
-                    file://hash.c;beginline=6;endline=15;md5=96f7296605eae807670fb08947829969 \
-                    file://list.c;beginline=4;endline=13;md5=cdbfa3dee51c099edb04e39f762ee907 \
-                    file://trio.c;beginline=5;endline=14;md5=6c025753c86d958722ec76e94cae932e"
-
-DEPENDS = "zlib"
-
-SRC_URI = "ftp://xmlsoft.org/libxml2/libxml2-${PV}.tar.gz;name=libtar \
-           http://www.w3.org/XML/Test/xmlts20080827.tar.gz;name=testtar \
-           file://libxml-64bit.patch \
-           file://ansidecl.patch \
-           file://runtest.patch \
-           file://run-ptest \
-           file://python-sitepackages-dir.patch \
-           file://libxml-m4-use-pkgconfig.patch \
-           file://configure.ac-fix-cross-compiling-warning.patch \
-          "
-
-SRC_URI[libtar.md5sum] = "daece17e045f1c107610e137ab50c179"
-SRC_URI[libtar.sha256sum] = "4de9e31f46b44d34871c22f54bfc54398ef124d6f7cafb1f4a5958fbcd3ba12d"
-SRC_URI[testtar.md5sum] = "ae3d1ebe000a3972afa104ca7f0e1b4a"
-SRC_URI[testtar.sha256sum] = "96151685cec997e1f9f3387e3626d61e6284d4d6e66e0e440c209286c03e9cc7"
-
-BINCONFIG = "${bindir}/xml2-config"
-
-inherit autotools pkgconfig binconfig-disabled pythonnative ptest
-
-RDEPENDS_${PN}-ptest += "python-core"
-
-RDEPENDS_${PN}-python += "python-core"
-
-RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-gconv-ebcdic-us glibc-gconv-ibm1141"
-
-export PYTHON_SITE_PACKAGES="${PYTHON_SITEPACKAGES_DIR}"
-
-PACKAGECONFIG ??= "python"
-PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python"
-
-# WARNING: zlib is require for RPM use
-EXTRA_OECONF = "--without-debug --without-legacy --with-catalog --without-docbook --with-c14n --without-lzma --with-fexceptions"
-EXTRA_OECONF_class-native = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
-EXTRA_OECONF_class-nativesdk = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
-EXTRA_OECONF_linuxstdbase = "--with-debug --with-legacy --with-docbook --with-c14n --without-lzma --with-zlib"
-
-# required for python binding
-export HOST_SYS
-export BUILD_SYS
-export STAGING_LIBDIR
-export STAGING_INCDIR
-
-python populate_packages_prepend () {
-    # autonamer would call this libxml2-2, but we don't want that
-    if d.getVar('DEBIAN_NAMES', True):
-        d.setVar('PKG_libxml2', '${MLPREFIX}libxml2')
-}
-
-PACKAGES += "${PN}-utils ${PN}-python"
-
-FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
-FILES_${PN}-dev += "${libdir}/xml2Conf.sh ${libdir}/cmake/*"
-FILES_${PN}-utils += "${bindir}/*"
-FILES_${PN}-python += "${PYTHON_SITEPACKAGES_DIR}"
-
-do_install_ptest () {
-	cp -r ${WORKDIR}/xmlconf ${D}${PTEST_PATH}
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2_2.9.4.bb b/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2_2.9.4.bb
new file mode 100644
index 0000000..59874be
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/libxml/libxml2_2.9.4.bb
@@ -0,0 +1,75 @@
+SUMMARY = "XML C Parser Library and Toolkit"
+DESCRIPTION = "The XML Parser Library allows for manipulation of XML files.  Libxml2 exports Push and Pull type parser interfaces for both XML and HTML.  It can do DTD validation at parse time, on a parsed document instance or with an arbitrary DTD.  Libxml2 includes complete XPath, XPointer and Xinclude implementations.  It also has a SAX like interface, which is designed to be compatible with Expat."
+HOMEPAGE = "http://www.xmlsoft.org/"
+BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://Copyright;md5=2044417e2e5006b65a8b9067b683fcf1 \
+                    file://hash.c;beginline=6;endline=15;md5=96f7296605eae807670fb08947829969 \
+                    file://list.c;beginline=4;endline=13;md5=cdbfa3dee51c099edb04e39f762ee907 \
+                    file://trio.c;beginline=5;endline=14;md5=6c025753c86d958722ec76e94cae932e"
+
+DEPENDS = "zlib virtual/libiconv"
+
+SRC_URI = "ftp://xmlsoft.org/libxml2/libxml2-${PV}.tar.gz;name=libtar \
+           http://www.w3.org/XML/Test/xmlts20080827.tar.gz;name=testtar \
+           file://libxml-64bit.patch \
+           file://ansidecl.patch \
+           file://runtest.patch \
+           file://run-ptest \
+           file://python-sitepackages-dir.patch \
+           file://libxml-m4-use-pkgconfig.patch \
+          "
+
+SRC_URI[libtar.md5sum] = "ae249165c173b1ff386ee8ad676815f5"
+SRC_URI[libtar.sha256sum] = "ffb911191e509b966deb55de705387f14156e1a56b21824357cdf0053233633c"
+SRC_URI[testtar.md5sum] = "ae3d1ebe000a3972afa104ca7f0e1b4a"
+SRC_URI[testtar.sha256sum] = "96151685cec997e1f9f3387e3626d61e6284d4d6e66e0e440c209286c03e9cc7"
+
+BINCONFIG = "${bindir}/xml2-config"
+
+inherit autotools pkgconfig binconfig-disabled pythonnative ptest
+
+RDEPENDS_${PN}-ptest += "python-core"
+
+RDEPENDS_${PN}-python += "python-core"
+
+RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-gconv-ebcdic-us glibc-gconv-ibm1141"
+
+export PYTHON_SITE_PACKAGES="${PYTHON_SITEPACKAGES_DIR}"
+
+PACKAGECONFIG ??= "python \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
+"
+PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+# WARNING: zlib is require for RPM use
+EXTRA_OECONF = "--without-debug --without-legacy --with-catalog --without-docbook --with-c14n --without-lzma --with-fexceptions"
+EXTRA_OECONF_class-native = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
+EXTRA_OECONF_class-nativesdk = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
+EXTRA_OECONF_linuxstdbase = "--with-debug --with-legacy --with-docbook --with-c14n --without-lzma --with-zlib"
+
+python populate_packages_prepend () {
+    # autonamer would call this libxml2-2, but we don't want that
+    if d.getVar('DEBIAN_NAMES', True):
+        d.setVar('PKG_libxml2', '${MLPREFIX}libxml2')
+}
+
+PACKAGES += "${PN}-utils ${PN}-python"
+
+FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES_${PN}-dev += "${libdir}/xml2Conf.sh ${libdir}/cmake/*"
+FILES_${PN}-utils += "${bindir}/*"
+FILES_${PN}-python += "${PYTHON_SITEPACKAGES_DIR}"
+
+do_configure_prepend () {
+	# executables take longer to package: these should not be executable
+	find ${WORKDIR}/xmlconf/ -type f -exec chmod -x {} \+
+}
+
+do_install_ptest () {
+	cp -r ${WORKDIR}/xmlconf ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/buildtools-tarball.bb b/import-layers/yocto-poky/meta/recipes-core/meta/buildtools-tarball.bb
index e9578ca..5808c95 100644
--- a/import-layers/yocto-poky/meta/recipes-core/meta/buildtools-tarball.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/buildtools-tarball.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "SDK type target for building a standalone tarball containing python, chrpath, make, git and tar. The \
+DESCRIPTION = "SDK type target for building a standalone tarball containing python3, chrpath, make, git and tar. The \
                tarball can be used to run bitbake builds on systems which don't meet the usual version requirements."
 SUMMARY = "Standalone tarball for running builds on systems with inadequate software"
 LICENSE = "MIT"
@@ -8,11 +8,10 @@
 TOOLCHAIN_TARGET_TASK ?= ""
 
 TOOLCHAIN_HOST_TASK ?= "\
-    nativesdk-python-core \
-    nativesdk-python-modules \
-    nativesdk-python-misc \
-    nativesdk-python-git \
-    nativesdk-python-pexpect \
+    nativesdk-python3-core \
+    nativesdk-python3-modules \
+    nativesdk-python3-misc \
+    nativesdk-python3-git \
     nativesdk-ncurses-terminfo-base \
     nativesdk-chrpath \
     nativesdk-tar \
@@ -24,11 +23,18 @@
     nativesdk-wget \
     nativesdk-ca-certificates \
     nativesdk-texinfo \
+    nativesdk-locale-base-en-us \
     "
 
+MULTIMACH_TARGET_SYS = "${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
+PACKAGE_ARCH = "${SDK_ARCH}_${SDK_OS}"
+PACKAGE_ARCHS = ""
+TARGET_ARCH = "none"
+TARGET_OS = "none"
+
 SDK_PACKAGE_ARCHS += "buildtools-dummy-${SDKPKGSUFFIX}"
 
-TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-buildtools-nativesdk-standalone-${DISTRO_VERSION}"
+TOOLCHAIN_OUTPUTNAME ?= "${SDK_ARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}"
 
 SDK_TITLE = "Build tools"
 
@@ -38,7 +44,17 @@
 
 inherit meta
 inherit populate_sdk
-inherit toolchain-scripts
+inherit toolchain-scripts-base
+inherit nopackages
+
+deltask install
+deltask package
+deltask packagedata
+deltask populate_sysroot
+
+do_populate_sdk[stamp-extra-info] = "${PACKAGE_ARCH}"
+
+REAL_MULTIMACH_TARGET_SYS = "none"
 
 create_sdk_files_append () {
 	rm -f ${SDK_OUTPUT}/${SDKPATH}/site-config-*
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/meta-environment.bb b/import-layers/yocto-poky/meta/recipes-core/meta/meta-environment.bb
index 49d45f6..d9e045f 100644
--- a/import-layers/yocto-poky/meta/recipes-core/meta/meta-environment.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/meta-environment.bb
@@ -12,6 +12,8 @@
 
 inherit toolchain-scripts
 TOOLCHAIN_NEED_CONFIGSITE_CACHE_append = " zlib"
+# Need to expand here before cross-candian changes HOST_ARCH -> SDK_ARCH
+TOOLCHAIN_CONFIGSITE_NOCACHE := "${TOOLCHAIN_CONFIGSITE_NOCACHE}"
 
 SDK_DIR = "${WORKDIR}/sdk"
 SDK_OUTPUT = "${SDK_DIR}/image"
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/meta-extsdk-toolchain.bb b/import-layers/yocto-poky/meta/recipes-core/meta/meta-extsdk-toolchain.bb
new file mode 100644
index 0000000..2bd9a5b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/meta-extsdk-toolchain.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Extensible SDK toolchain meta-recipe"
+DESCRIPTION = "Meta-recipe for ensuring the build directory contains all appropriate toolchain packages for using an IDE"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+DEPENDS = "virtual/libc gdb-cross-${TARGET_ARCH} qemu-native qemu-helper-native unfs3-native"
+
+do_populate_sysroot[deptask] = "do_populate_sysroot"
+
+# NOTE: There is logic specific to this recipe in setscene_depvalid()
+# within sstate.bbclass, so if you copy or rename this and expect the same
+# functionality you'll need to modify that as well.
+
+LOCKED_SIGS_INDIR = "${D}/locked-sigs"
+
+addtask do_locked_sigs after do_populate_sysroot
+SSTATETASKS += "do_locked_sigs"
+do_locked_sigs[sstate-inputdirs] = "${LOCKED_SIGS_INDIR}"
+do_locked_sigs[sstate-outputdirs] = "${STAGING_DIR_HOST}/locked-sigs"
+
+python do_locked_sigs() {
+    import oe.copy_buildsystem
+    outdir = os.path.join(d.getVar('LOCKED_SIGS_INDIR', True))
+    bb.utils.mkdirhier(outdir)
+    sigfile = os.path.join(outdir, 'locked-sigs-extsdk-toolchain.inc')
+    oe.copy_buildsystem.generate_locked_sigs(sigfile, d)
+}
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/meta-ide-support.bb b/import-layers/yocto-poky/meta/recipes-core/meta/meta-ide-support.bb
index 86c57cd..c4ddcfc 100644
--- a/import-layers/yocto-poky/meta/recipes-core/meta/meta-ide-support.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/meta-ide-support.bb
@@ -7,7 +7,7 @@
 DEPENDS = "virtual/libc gdb-cross-${TARGET_ARCH} qemu-native qemu-helper-native unfs3-native"
 PR = "r3"
 
-inherit meta toolchain-scripts
+inherit meta toolchain-scripts nopackages
 
 do_populate_ide_support () {
   toolchain_create_tree_env_script
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/meta-world-pkgdata.bb b/import-layers/yocto-poky/meta/recipes-core/meta/meta-world-pkgdata.bb
index 3c5db50..81c8647 100644
--- a/import-layers/yocto-poky/meta/recipes-core/meta/meta-world-pkgdata.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/meta-world-pkgdata.bb
@@ -1,5 +1,6 @@
 SUMMARY = "Pulls in pkgdata for world"
 LICENSE = "MIT"
+
 INHIBIT_DEFAULT_DEPS = "1"
 
 addtask do_allpackagedata before do_build
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/signing-keys.bb b/import-layers/yocto-poky/meta/recipes-core/meta/signing-keys.bb
index e843301..3779037 100644
--- a/import-layers/yocto-poky/meta/recipes-core/meta/signing-keys.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/signing-keys.bb
@@ -1,7 +1,7 @@
 # Copyright (C) 2015 Intel Corporation
 # Released under the MIT license (see COPYING.MIT for the terms)
 
-DESCRIPTION = "Make public keys of the signing keys available"
+SUMMARY = "Makes public keys of the signing keys available"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
                     file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
@@ -12,6 +12,8 @@
 EXCLUDE_FROM_WORLD = "1"
 INHIBIT_DEFAULT_DEPS = "1"
 
+SYSROOT_DIRS += "${sysconfdir}/pki"
+
 PACKAGES =+ "${PN}-ipk ${PN}-rpm ${PN}-packagefeed"
 
 FILES_${PN}-rpm = "${sysconfdir}/pki/rpm-gpg"
@@ -54,10 +56,6 @@
     fi
 }
 
-sysroot_stage_all_append () {
-    sysroot_stage_dir ${D}${sysconfdir}/pki ${SYSROOT_DESTDIR}${sysconfdir}/pki
-}
-
 do_deploy () {
     if [ -f "${B}/rpm-key" ]; then
         install -D -m 0644 "${B}/rpm-key" "${DEPLOYDIR}/RPM-GPG-KEY-${DISTRO_VERSION}"
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/testexport-tarball.bb b/import-layers/yocto-poky/meta/recipes-core/meta/testexport-tarball.bb
new file mode 100644
index 0000000..d9861c4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/testexport-tarball.bb
@@ -0,0 +1,58 @@
+DESCRIPTION = "SDK type target for standalone tarball containing packages defined by TEST_EXPORT_TOOLS. The \
+               tarball can be used to run missing programs on testing systems which don't have such tools.\
+               This recipe is almost the same as buildtools-tarball"
+SUMMARY = "Standalone tarball for test systems with missing software"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+TEST_EXPORT_SDK_PACKAGES ??= ""
+
+TOOLCHAIN_TARGET_TASK ?= ""
+
+TOOLCHAIN_HOST_TASK ?= "${TEST_EXPORT_SDK_PACKAGES}"
+
+SDK_PACKAGE_ARCHS += "tesexport-tools-${SDKPKGSUFFIX}"
+
+TOOLCHAIN_OUTPUTNAME ?= "${TEST_EXPORT_SDK_NAME}"
+
+SDK_TITLE = "Testexport tools"
+
+RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
+
+EXCLUDE_FROM_WORLD = "1"
+
+inherit meta
+inherit populate_sdk
+inherit toolchain-scripts
+
+create_sdk_files_append () {
+	rm -f ${SDK_OUTPUT}/${SDKPATH}/site-config-*
+	rm -f ${SDK_OUTPUT}/${SDKPATH}/environment-setup-*
+	rm -f ${SDK_OUTPUT}/${SDKPATH}/version-*
+
+	# Generate new (mini) sdk-environment-setup file
+	script=${1:-${SDK_OUTPUT}/${SDKPATH}/environment-setup-${SDK_SYS}}
+	touch $script
+	echo 'export PATH=${SDKPATHNATIVE}${bindir_nativesdk}:$PATH' >> $script
+	# In order for the self-extraction script to correctly extract and set up things,
+	# we need a 'OECORE_NATIVE_SYSROOT=xxx' line in environment setup script.
+	# However, testexport-tarball is inherently a tool set instead of a fully functional SDK,
+	# so instead of exporting the variable, we use a comment here.
+	echo '#OECORE_NATIVE_SYSROOT="${SDKPATHNATIVE}"' >> $script
+	toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${SDK_SYS}
+
+	echo 'export GIT_SSL_CAINFO="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
+
+	if [ "${SDKMACHINE}" = "i686" ]; then
+		echo 'export NO32LIBS="0"' >>$script
+		echo 'echo "$BB_ENV_EXTRAWHITE" | grep -q "NO32LIBS"' >>$script
+		echo '[ $? != 0 ] && export BB_ENV_EXTRAWHITE="NO32LIBS $BB_ENV_EXTRAWHITE"' >>$script
+	fi
+}
+
+# testexport-tarball doesn't need config site
+TOOLCHAIN_NEED_CONFIGSITE_CACHE = ""
+
+# The recipe doesn't need any default deps
+INHIBIT_DEFAULT_DEPS = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-core/meta/uninative-tarball.bb b/import-layers/yocto-poky/meta/recipes-core/meta/uninative-tarball.bb
index a983e42..e203a83 100644
--- a/import-layers/yocto-poky/meta/recipes-core/meta/uninative-tarball.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/meta/uninative-tarball.bb
@@ -16,6 +16,12 @@
 
 INHIBIT_DEFAULT_DEPS = "1"
 
+MULTIMACH_TARGET_SYS = "${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
+PACKAGE_ARCH = "${SDK_ARCH}_${SDK_OS}"
+PACKAGE_ARCHS = ""
+TARGET_ARCH = "none"
+TARGET_OS = "none"
+
 TOOLCHAIN_OUTPUTNAME ?= "${SDK_ARCH}-nativesdk-libc"
 
 RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
@@ -24,14 +30,19 @@
 
 inherit meta
 inherit populate_sdk
+inherit nopackages
 
 deltask install
 deltask package
 deltask packagedata
+deltask populate_sysroot
+
+do_populate_sdk[stamp-extra-info] = "${PACKAGE_ARCH}"
 
 SDK_DEPENDS += "patchelf-native"
 
 SDK_PACKAGING_FUNC = ""
+REAL_MULTIMACH_TARGET_SYS = "none"
 
 fakeroot create_sdk_files() {
 	cp ${COREBASE}/scripts/relocate_sdk.py ${SDK_OUTPUT}/${SDKPATH}/
@@ -44,13 +55,12 @@
 
 
 fakeroot tar_sdk() {
-	mkdir -p ${SDK_DEPLOY}
 	cd ${SDK_OUTPUT}/${SDKPATH}
 
 	DEST="./${SDK_ARCH}-${SDK_OS}"
 	mv sysroots/${SDK_SYS} $DEST
 	rm sysroots -rf
-	patchelf --set-interpreter ${@''.join('a' for n in xrange(1024))} $DEST/usr/bin/patchelf
+	patchelf --set-interpreter ${@''.join('a' for n in range(1024))} $DEST/usr/bin/patchelf
 	mv $DEST/usr/bin/patchelf $DEST/usr/bin/patchelf-uninative
-	tar ${SDKTAROPTS} -c -j --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
+	tar ${SDKTAROPTS} -c -j --file=${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
 }
diff --git a/import-layers/yocto-poky/meta/recipes-core/musl/musl.inc b/import-layers/yocto-poky/meta/recipes-core/musl/musl.inc
index d27867f..7ed931c 100644
--- a/import-layers/yocto-poky/meta/recipes-core/musl/musl.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/musl/musl.inc
@@ -9,7 +9,7 @@
 HOMEPAGE = "http://www.musl-libc.org/"
 LICENSE = "MIT"
 SECTION = "libs"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=082411391b4d1ace0d30f4c84317cc05"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=7928b7ad32ceda04932478e330e52f7f"
 
 PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
 TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
@@ -17,10 +17,13 @@
 INHIBIT_DEFAULT_DEPS = "1"
 
 STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
-STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
 
 
 FILES_SOLIBSDEV = ""
 FILES_${PN} += "${libdir}/lib*${SOLIBSDEV}"
 INSANE_SKIP_${PN} = "dev-so"
 
+# Doesn't compile in MIPS16e mode due to use of hand-written
+# assembly
+MIPS_INSTRUCTION_SET = "mips"
diff --git a/import-layers/yocto-poky/meta/recipes-core/musl/musl_git.bb b/import-layers/yocto-poky/meta/recipes-core/musl/musl_git.bb
index d4f9819..c07101b 100644
--- a/import-layers/yocto-poky/meta/recipes-core/musl/musl_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/musl/musl_git.bb
@@ -3,9 +3,9 @@
 
 require musl.inc
 
-SRCREV = "5978eb703ce0e64dd778a88c1ffffb76fe5e2202"
+SRCREV = "39494a273eaa6b714e0fa0c59ce7a1f5fbc80a1e"
 
-PV = "1.1.14+git${SRCPV}"
+PV = "1.1.15+git${SRCPV}"
 
 # mirror is at git://github.com/kraj/musl.git
 
@@ -26,8 +26,6 @@
 
 export CROSS_COMPILE="${TARGET_PREFIX}"
 
-EXTRA_OEMAKE = ""
-
 LDFLAGS += "-Wl,-soname,libc.so"
 
 CONFIGUREOPTS = " \
@@ -52,6 +50,10 @@
 
 	install -d ${D}${bindir}
 	ln -s ../../${libdir}/libc.so ${D}${bindir}/ldd
+	for l in crypt dl m pthread resolv rt util xnet
+	do
+		ln -s libc.so ${D}${libdir}/lib$l.so
+	done
 }
 
 RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev"
diff --git a/import-layers/yocto-poky/meta/recipes-core/ncurses/ncurses_6.0+20160213.bb b/import-layers/yocto-poky/meta/recipes-core/ncurses/ncurses_6.0+20160213.bb
deleted file mode 100644
index 0d56481..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/ncurses/ncurses_6.0+20160213.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require ncurses.inc
-
-SRC_URI += "file://tic-hang.patch \
-            file://config.cache \
-"
-# commit id corresponds to the revision in package version
-SRCREV = "a25949ff653ac5ae7a204381a3ebfd800feeaa01"
-S = "${WORKDIR}/git"
-EXTRA_OECONF += "--with-abi-version=5"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+(\+\d+)*)"
diff --git a/import-layers/yocto-poky/meta/recipes-core/ncurses/ncurses_6.0+20160625.bb b/import-layers/yocto-poky/meta/recipes-core/ncurses/ncurses_6.0+20160625.bb
new file mode 100644
index 0000000..6514613
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/ncurses/ncurses_6.0+20160625.bb
@@ -0,0 +1,10 @@
+require ncurses.inc
+
+SRC_URI += "file://tic-hang.patch \
+            file://config.cache \
+"
+# commit id corresponds to the revision in package version
+SRCREV = "63dd558cb8e888d6fab5f00bbf7842736a2356b9"
+S = "${WORKDIR}/git"
+EXTRA_OECONF += "--with-abi-version=5"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+(\+\d+)*)"
diff --git a/import-layers/yocto-poky/meta/recipes-core/netbase/netbase_5.3.bb b/import-layers/yocto-poky/meta/recipes-core/netbase/netbase_5.3.bb
index ccd89ff..543596a 100644
--- a/import-layers/yocto-poky/meta/recipes-core/netbase/netbase_5.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/netbase/netbase_5.3.bb
@@ -6,13 +6,14 @@
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
 PE = "1"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/n/netbase/netbase_${PV}.tar.xz \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/n/${BPN}/${BPN}_${PV}.tar.xz \
            file://netbase-add-rpcbind-as-an-alias-to-sunrpc.patch \
            file://hosts"
 
 SRC_URI[md5sum] = "2637a27fd3de02a278d2b5be7e6558c1"
 SRC_URI[sha256sum] = "81f6c69795044d62b8ad959cf9daf049d0545fd466c52860ad3f933b1e97b88b"
 
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/n/netbase/"
 do_install () {
 	install -d ${D}/${mandir}/man8 ${D}${sysconfdir}
 	install -m 0644 ${WORKDIR}/hosts ${D}${sysconfdir}/hosts
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb
index 0c6a530..2c2abed 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb
@@ -24,6 +24,7 @@
     nativesdk-makedevs \
     nativesdk-smartpm \
     nativesdk-postinst-intercept \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'nativesdk-wayland', '', d)} \
     "
 
 RDEPENDS_${PN}_darwin = "\
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-base.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-base.bb
index 9e40b28..2e94fde 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-base.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-base.bb
@@ -1,5 +1,4 @@
 SUMMARY = "Merge machine and distro options to create a basic machine task/package"
-LICENSE = "MIT"
 PR = "r83"
 
 #
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-boot.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
index bac93b8..04bc0f2 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
@@ -4,7 +4,6 @@
 
 SUMMARY = "Minimal boot requirements"
 DESCRIPTION = "The minimal set of packages required to boot the system"
-LICENSE = "MIT"
 PR = "r17"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
index 74ed247..78cc65d 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
@@ -4,7 +4,6 @@
 #
 
 SUMMARY = "Essential build dependencies"
-LICENSE = "MIT"
 
 inherit packagegroup
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
index e7b013d..c45463f 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
@@ -1,5 +1,4 @@
 SUMMARY = "Remote debugging tools for Eclipse integration"
-LICENSE = "MIT"
 
 inherit packagegroup
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
index 1882d3a..b345e31 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "NFS package groups"
-LICENSE = "MIT"
 PR = "r2"
 
 inherit packagegroup
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
index bee1665..aceba78 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "Software development tools"
-LICENSE = "MIT"
 PR = "r9"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -30,6 +29,7 @@
 SANITIZERS = "libasan-dev libubsan-dev"
 SANITIZERS_aarch64 = ""
 SANITIZERS_mips = ""
+SANITIZERS_mipsel = ""
 SANITIZERS_mips64 = ""
 SANITIZERS_mips64n32 = ""
 SANITIZERS_nios2 = ""
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
index e99946f..5ec3f6c 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
@@ -1,5 +1,4 @@
 SUMMARY = "Dropbear SSH client/server"
-LICENSE = "MIT"
 PR = "r1"
 
 inherit packagegroup
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
index 32d20e6..703f956 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
@@ -1,5 +1,4 @@
 SUMMARY = "OpenSSH SSH client/server"
-LICENSE = "MIT"
 PR = "r1"
 
 inherit packagegroup
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
index 6997f39..274e11a 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
@@ -1,6 +1,5 @@
 SUMMARY = "Target packages for the standalone SDK"
 PR = "r8"
-LICENSE = "MIT"
 
 inherit packagegroup
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
index 82347b9..9fc2b0e 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "Debugging tools"
-LICENSE = "MIT"
 
 inherit packagegroup
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
index ff2b577..dd98445 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "Profiling tools"
-LICENSE = "MIT"
 
 PR = "r3"
 
@@ -12,8 +11,9 @@
 inherit packagegroup
 
 PROFILE_TOOLS_X = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'sysprof', '', d)}"
-# sysprof doesn't support aarch64
+# sysprof doesn't support aarch64 and nios2
 PROFILE_TOOLS_X_aarch64 = ""
+PROFILE_TOOLS_X_nios2 = ""
 PROFILE_TOOLS_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-analyze', '', d)}"
 
 RRECOMMENDS_${PN} = "\
@@ -37,6 +37,7 @@
 SYSTEMTAP_libc-uclibc = ""
 SYSTEMTAP_libc-musl = ""
 SYSTEMTAP_mips = ""
+SYSTEMTAP_mipsel = ""
 SYSTEMTAP_mips64 = ""
 SYSTEMTAP_mips64n32 = ""
 SYSTEMTAP_nios2 = ""
@@ -59,16 +60,19 @@
 
 BABELTRACE = "babeltrace"
 
-# valgrind does not work on mips
+# valgrind does not work on the following configurations/architectures
 
 VALGRIND = "valgrind"
 VALGRIND_libc-uclibc = ""
 VALGRIND_libc-musl = ""
 VALGRIND_mips = ""
+VALGRIND_mipsel = ""
 VALGRIND_mips64 = ""
 VALGRIND_mips64n32 = ""
 VALGRIND_nios2 = ""
-VALGRIND_arm = ""
+VALGRIND_armv4 = ""
+VALGRIND_armv5 = ""
+VALGRIND_armv6 = ""
 VALGRIND_aarch64 = ""
 
 RDEPENDS_${PN} = "\
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
index e8d585e..3170978 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "Testing tools/applications"
-LICENSE = "MIT"
 
 PR = "r2"
 
@@ -18,7 +17,6 @@
 
 X11GLTOOLS = "\
     mesa-demos \
-    piglit \
     "
 
 3GTOOLS = "\
@@ -27,7 +25,7 @@
 
 X11TOOLS = "\
     fstests \
-    gst-player-bin \
+    gst-player \
     x11perf \
     xrestop \
     xwininfo \
@@ -37,8 +35,6 @@
 
 RDEPENDS_${PN} = "\
     blktool \
-    tslib-calibrate \
-    tslib-tests \
     lrzsz \
     ${KEXECTOOLS} \
     alsa-utils-amixer \
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
index 180dd96..d551147 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
@@ -1,6 +1,5 @@
 SUMMARY = "Host SDK package for cross canadian toolchain"
 PN = "packagegroup-cross-canadian-${MACHINE}"
-LICENSE = "MIT"
 
 inherit cross-canadian packagegroup
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
index 225204d..73430b8 100644
--- a/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
@@ -5,7 +5,6 @@
 SUMMARY = "Self-hosting"
 DESCRIPTION = "Packages required to run the build system"
 PR = "r13"
-LICENSE = "MIT"
 
 inherit packagegroup  distro_features_check
 # rdepends on libx11-dev
@@ -29,9 +28,6 @@
     "
 
 RDEPENDS_packagegroup-self-hosted-host-tools = "\
-    connman \
-    connman-plugin-ethernet \
-    dhcp-client \
     e2fsprogs \
     e2fsprogs-e2fsck \
     e2fsprogs-mke2fs \
@@ -125,8 +121,6 @@
     groff \
     gzip \
     settings-daemon \
-    hicolor-icon-theme \
-    sato-icon-theme \
     libaio \
     libusb1 \
     libxml2 \
@@ -153,11 +147,11 @@
     perl-modules \
     perl-pod \
     python \
-    python-compiler \
-    python-git \
-    python-misc \
     python-modules \
-    python-rpm \
+    python-git \
+    python3 \
+    python3-modules \
+    python3-git \
     quota \
     readline \
     rpm \
@@ -191,10 +185,10 @@
     libsdl \
     libsdl-dev \
     libx11-dev \
-    gtk-theme-clearlooks \
+    adwaita-icon-theme \
     xdg-utils \
     epiphany \
-    leafpad \
+    l3afpad \
     pcmanfm \
     vte \
     "
diff --git a/import-layers/yocto-poky/meta/recipes-core/readline/readline.inc b/import-layers/yocto-poky/meta/recipes-core/readline/readline.inc
index 35df8b4..1a0a155 100644
--- a/import-layers/yocto-poky/meta/recipes-core/readline/readline.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/readline/readline.inc
@@ -32,6 +32,8 @@
 	oe_libinstall -so -C shlib libreadline ${D}${libdir}
 
 	rmdir ${D}${bindir}
+	rm -rf ${D}${datadir}/${BPN}/*.c
+	rmdir ${D}${datadir}/${BPN} || true
 
 	install -m 0755 -d ${D}${sysconfdir}
 	install -m 0644 ${WORKDIR}/inputrc ${D}${sysconfdir}/inputrc
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd-compat-units.bb b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd-compat-units.bb
index 0b8ff09..421fc06 100644
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd-compat-units.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd-compat-units.bb
@@ -9,10 +9,12 @@
 
 S = "${WORKDIR}"
 
-inherit allarch
+inherit distro_features_check
 
 ALLOW_EMPTY_${PN} = "1"
 
+REQUIRED_DISTRO_FEATURES = "systemd"
+
 SYSTEMD_DISABLED_SYSV_SERVICES = " \
   busybox-udhcpc \
   hwclock \
@@ -23,21 +25,24 @@
 "
 
 pkg_postinst_${PN} () {
-	cd $D${sysconfdir}/init.d
+
+	cd $D${sysconfdir}/init.d  ||  exit 0
 
 	echo "Disabling the following sysv scripts: "
 
-	OPTS=""
-
 	if [ -n "$D" ]; then
 		OPTS="--root=$D"
+	else
+		OPTS=""
 	fi
 
 	for i in ${SYSTEMD_DISABLED_SYSV_SERVICES} ; do
-		if [ \( -e $i -o $i.sh \) -a ! \( -e $D${sysconfdir}/systemd/system/$i.service -o  -e $D${systemd_unitdir}/system/$i.service \) ] ; then
-			echo -n "$i: " ; systemctl ${OPTS} mask $i.service
+		if [ -e $i -o -e $i.sh ]  &&   ! [ -e $D${sysconfdir}/systemd/system/$i.service -o -e $D${systemd_unitdir}/system/$i.service ] ; then
+			echo -n "$i: "
+			systemctl $OPTS mask $i.service
 		fi
-	done ; echo
+	done
+	echo
 }
 
-RDPEPENDS_${PN} = "systemd"
+RDEPENDS_${PN} = "systemd"
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd.inc b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd.inc
new file mode 100644
index 0000000..f800f42
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd.inc
@@ -0,0 +1,25 @@
+SUMMARY = "A System and service manager"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/systemd"
+
+DESCRIPTION = "systemd is a system and service manager for Linux, compatible with \
+SysV and LSB init scripts. systemd provides aggressive parallelization \
+capabilities, uses socket and D-Bus activation for starting services, \
+offers on-demand starting of daemons, keeps track of processes using \
+Linux cgroups, supports snapshotting and restoring of the system \
+state, maintains mount and automount points and implements an \
+elaborate transactional dependency-based service control logic. It can \
+work as a drop-in replacement for sysvinit."
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
+                    file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
+
+SRCREV = "3a74d4fc90cb322a4784a3515bef7118c8f8c5ba"
+
+SRC_URI = "git://github.com/systemd/systemd.git;protocol=git"
+
+PV = "230+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+LDFLAGS_append_libc-uclibc = " -lrt -lssp_nonshared -lssp "
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0003-define-exp10-if-missing.patch b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0003-define-exp10-if-missing.patch
index f183261..e62d580 100644
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0003-define-exp10-if-missing.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0003-define-exp10-if-missing.patch
@@ -1,6 +1,3 @@
-From 699893a05edac5194f9670529bacfaeb67252edb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Dec 2015 00:42:49 +0000
 Subject: [PATCH 03/36] define exp10 if missing
 
 Inspired by: http://peter.korsgaard.com/patches/alsa-utils/alsamixer-fix-build-on-uClibc-exp10.patch
@@ -11,23 +8,25 @@
 
 Signed-off-by: Samuel Martin <s.martin49@gmail.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/basic/missing.h | 5 +++++
  1 file changed, 5 insertions(+)
 
 diff --git a/src/basic/missing.h b/src/basic/missing.h
-index f3d3236..ee7e7ea 100644
+index 651e414..fafa233 100644
 --- a/src/basic/missing.h
 +++ b/src/basic/missing.h
-@@ -1169,3 +1169,8 @@ static inline key_serial_t request_key(const char *type, const char *description
- #endif
+@@ -1013,4 +1013,9 @@ typedef int32_t key_serial_t;
  
  #endif
-+
+ 
 +#ifdef __UCLIBC__
 +/* 10^x = 10^(log e^x) = (e^x)^log10 = e^(x * log 10) */
 +#define exp10(x) (exp((x) * log(10)))
 +#endif /* __UCLIBC__ */
++
+ #include "missing_syscall.h"
 -- 
-1.8.3.1
+2.8.3
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0014-Make-root-s-home-directory-configurable.patch b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0014-Make-root-s-home-directory-configurable.patch
index 4a576aa..2eea0ff 100644
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0014-Make-root-s-home-directory-configurable.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0014-Make-root-s-home-directory-configurable.patch
@@ -1,6 +1,3 @@
-From 786883cfa13e21f060ee6da6cabb94845f4349a0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Dec 2015 05:18:20 +0000
 Subject: [PATCH 14/36] Make root's home directory configurable
 
 OpenEmbedded has a configurable home directory for root. Allow
@@ -14,6 +11,7 @@
 
 Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  Makefile.am                       | 2 ++
  configure.ac                      | 7 +++++++
@@ -26,10 +24,10 @@
  8 files changed, 20 insertions(+), 11 deletions(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index b3f3343..a99e8eb 100644
+index 305099a..88c1250 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -202,6 +202,7 @@ AM_CPPFLAGS = \
+@@ -206,6 +206,7 @@ AM_CPPFLAGS = \
  	-DLIBDIR=\"$(libdir)\" \
  	-DROOTLIBDIR=\"$(rootlibdir)\" \
  	-DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \
@@ -37,7 +35,7 @@
  	-DTEST_DIR=\"$(abs_top_srcdir)/test\" \
  	-I $(top_srcdir)/src \
  	-I $(top_builddir)/src/basic \
-@@ -5713,6 +5714,7 @@ EXTRA_DIST += \
+@@ -5863,6 +5864,7 @@ EXTRA_DIST += \
  substitutions = \
         '|rootlibexecdir=$(rootlibexecdir)|' \
         '|rootbindir=$(rootbindir)|' \
@@ -46,10 +44,10 @@
         '|SYSTEMCTL=$(rootbindir)/systemctl|' \
         '|SYSTEMD_NOTIFY=$(rootbindir)/systemd-notify|' \
 diff --git a/configure.ac b/configure.ac
-index c5ab9d0..16c83bb 100644
+index 329861a..01764f5 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1470,6 +1470,11 @@ AC_ARG_WITH([rootlibdir],
+@@ -1478,6 +1478,11 @@ AC_ARG_WITH([rootlibdir],
          [with_rootlibdir=${libdir}])
  AX_NORMALIZE_PATH([with_rootlibdir])
  
@@ -61,7 +59,7 @@
  AC_ARG_WITH([pamlibdir],
          AS_HELP_STRING([--with-pamlibdir=DIR], [Directory for PAM modules]),
          [],
-@@ -1553,6 +1558,7 @@ AC_SUBST([pamlibdir], [$with_pamlibdir])
+@@ -1562,6 +1567,7 @@ AC_SUBST([pamlibdir], [$with_pamlibdir])
  AC_SUBST([pamconfdir], [$with_pamconfdir])
  AC_SUBST([rootprefix], [$with_rootprefix])
  AC_SUBST([rootlibdir], [$with_rootlibdir])
@@ -69,19 +67,19 @@
  
  AC_CONFIG_FILES([
          Makefile
-@@ -1643,6 +1649,7 @@ AC_MSG_RESULT([
-         includedir:              ${includedir}
-         lib dir:                 ${libdir}
-         rootlib dir:             ${with_rootlibdir}
-+        root home dir:           ${with_roothomedir}
-         SysV init scripts:       ${SYSTEM_SYSVINIT_PATH}
-         SysV rc?.d directories:  ${SYSTEM_SYSVRCND_PATH}
-         Build Python:            ${PYTHON}
+@@ -1653,6 +1659,7 @@ AC_MSG_RESULT([
+         includedir:                        ${includedir}
+         lib dir:                           ${libdir}
+         rootlib dir:                       ${with_rootlibdir}
++        root home dir:                     ${with_roothomedir}
+         SysV init scripts:                 ${SYSTEM_SYSVINIT_PATH}
+         SysV rc?.d directories:            ${SYSTEM_SYSVRCND_PATH}
+         Build Python:                      ${PYTHON}
 diff --git a/src/basic/user-util.c b/src/basic/user-util.c
-index 19155bc..55672b3 100644
+index f65ca3e..da1101a 100644
 --- a/src/basic/user-util.c
 +++ b/src/basic/user-util.c
-@@ -122,7 +122,7 @@ int get_user_creds(
+@@ -123,7 +123,7 @@ int get_user_creds(
                          *gid = 0;
  
                  if (home)
@@ -90,7 +88,7 @@
  
                  if (shell)
                          *shell = "/bin/sh";
-@@ -353,7 +353,7 @@ int get_home_dir(char **_h) {
+@@ -354,7 +354,7 @@ int get_home_dir(char **_h) {
          /* Hardcode home directory for root to avoid NSS */
          u = getuid();
          if (u == 0) {
@@ -100,10 +98,10 @@
                          return -ENOMEM;
  
 diff --git a/src/core/namespace.c b/src/core/namespace.c
-index b573f00..0f70b14 100644
+index 203d122..45c0d11 100644
 --- a/src/core/namespace.c
 +++ b/src/core/namespace.c
-@@ -409,7 +409,7 @@ int setup_namespace(
+@@ -415,7 +415,7 @@ int setup_namespace(
                          home_dir = strjoina("-", home_dir);
                          run_user_dir = prefix_roota(root_directory, "/run/user");
                          run_user_dir = strjoina("-", run_user_dir);
@@ -113,24 +111,24 @@
  
                          r = append_mounts(&m, STRV_MAKE(home_dir, run_user_dir, root_dir),
 diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index 65e65ec..12f0ee8 100644
+index 8ec0584..51df00b 100644
 --- a/src/nspawn/nspawn.c
 +++ b/src/nspawn/nspawn.c
-@@ -2564,7 +2564,7 @@ static int inner_child(
+@@ -2739,7 +2739,7 @@ static int inner_child(
          if (envp[n_env])
-                 n_env ++;
+                 n_env++;
  
 -        if ((asprintf((char**)(envp + n_env++), "HOME=%s", home ? home: "/root") < 0) ||
 +        if ((asprintf((char**)(envp + n_env++), "HOME=%s", home ? home: ROOTHOMEDIR) < 0) ||
              (asprintf((char**)(envp + n_env++), "USER=%s", arg_user ? arg_user : "root") < 0) ||
              (asprintf((char**)(envp + n_env++), "LOGNAME=%s", arg_user ? arg_user : "root") < 0))
                  return log_oom();
-@@ -2647,7 +2647,7 @@ static int inner_child(
- #endif /* HAVE_EXECVPE */
+@@ -2816,7 +2816,7 @@ static int inner_child(
          else {
                  if (!arg_chdir)
--                        chdir(home ?: "/root");
-+                        chdir(home ?: ROOTHOMEDIR);
+                         /* If we cannot change the directory, we'll end up in /, that is expected. */
+-                        (void) chdir(home ?: "/root");
++                        (void) chdir(home ?: ROOTHOMEDIR);
  
                  execle("/bin/bash", "-bash", NULL, env_use);
                  execle("/bin/sh", "-sh", NULL, env_use);
@@ -150,10 +148,10 @@
  ExecStopPost=-@SYSTEMCTL@ poweroff
  Type=idle
 diff --git a/units/emergency.service.in b/units/emergency.service.in
-index fb390ea..5623a57 100644
+index 0de16f2..4826062 100644
 --- a/units/emergency.service.in
 +++ b/units/emergency.service.in
-@@ -14,8 +14,8 @@ Conflicts=rescue.service
+@@ -15,8 +15,8 @@ Conflicts=syslog.socket
  Before=shutdown.target
  
  [Service]
@@ -180,5 +178,5 @@
  ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
  ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default"
 -- 
-1.8.3.1
+2.8.3
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0015-systemd-user-avoid-using-system-auth.patch b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0015-systemd-user-avoid-using-system-auth.patch
index a351237..6e6f344 100644
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0015-systemd-user-avoid-using-system-auth.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0015-systemd-user-avoid-using-system-auth.patch
@@ -1,6 +1,3 @@
-From f70a1a9605cd3adac450c49a5a69da6e9acda517 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 20 Feb 2015 05:26:25 +0000
 Subject: [PATCH 15/36] systemd-user: avoid using system-auth
 
 In OE, we don't provide system-auth, instead, we use common-* files.
@@ -10,15 +7,16 @@
 
 Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/login/systemd-user.m4 | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/src/login/systemd-user.m4 b/src/login/systemd-user.m4
-index 7933508..16b73d2 100644
+index f188a8e..862d8d7 100644
 --- a/src/login/systemd-user.m4
 +++ b/src/login/systemd-user.m4
-@@ -2,10 +2,10 @@
+@@ -2,11 +2,11 @@
  #
  # Used by systemd --user instances.
  
@@ -29,8 +27,9 @@
  session  required pam_selinux.so close
  session  required pam_selinux.so nottys open
  )m4_dnl
+ session  required pam_loginuid.so
 -session  include system-auth
 +session  include common-session
 -- 
-1.8.3.1
+2.8.3
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0017-Revert-udev-remove-userspace-firmware-loading-suppor.patch b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0017-Revert-udev-remove-userspace-firmware-loading-suppor.patch
index 8e6289d..642625f 100644
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0017-Revert-udev-remove-userspace-firmware-loading-suppor.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0017-Revert-udev-remove-userspace-firmware-loading-suppor.patch
@@ -1,6 +1,3 @@
-From 9a3a4e16b36e762291cd1574ec71d7954f8b5363 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Dec 2015 05:33:32 +0000
 Subject: [PATCH 17/36] Revert "udev: remove userspace firmware loading
  support"
 
@@ -13,21 +10,21 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  Makefile.am                      |  12 +++
- README                           |   6 +-
+ README                           |   4 +-
  TODO                             |   1 +
  configure.ac                     |  22 ++++++
  src/udev/udev-builtin-firmware.c | 154 +++++++++++++++++++++++++++++++++++++++
  src/udev/udev-builtin.c          |   3 +
  src/udev/udev.h                  |   6 ++
  src/udev/udevd.c                 |  13 ++++
- 8 files changed, 214 insertions(+), 3 deletions(-)
+ 8 files changed, 213 insertions(+), 2 deletions(-)
  create mode 100644 src/udev/udev-builtin-firmware.c
 
 diff --git a/Makefile.am b/Makefile.am
-index a99e8eb..b5c6ba7 100644
+index 305099a..e774976 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -3573,6 +3573,18 @@ libudev_core_la_LIBADD = \
+@@ -3706,6 +3706,18 @@ libudev_core_la_LIBADD = \
  	$(BLKID_LIBS) \
  	$(KMOD_LIBS)
  
@@ -47,17 +44,10 @@
  libudev_core_la_SOURCES += \
  	src/udev/udev-builtin-kmod.c
 diff --git a/README b/README
-index 41fb07a..10230ac 100644
+index ca8993c..87f3297 100644
 --- a/README
 +++ b/README
-@@ -50,14 +50,14 @@ REQUIREMENTS:
-           CONFIG_PROC_FS
-           CONFIG_FHANDLE (libudev, mount and bind mount handling)
- 
--        udev will fail to work with the legacy sysfs layout:
-+        Udev will fail to work with the legacy layout:
-           CONFIG_SYSFS_DEPRECATED=n
- 
+@@ -56,8 +56,8 @@ REQUIREMENTS:
          Legacy hotplug slows down the system and confuses udev:
            CONFIG_UEVENT_HELPER_PATH=""
  
@@ -69,11 +59,11 @@
  
          Some udev rules and virtualization detection relies on it:
 diff --git a/TODO b/TODO
-index 92cc8cc..25f6849 100644
+index fac9ccf..2645582 100644
 --- a/TODO
 +++ b/TODO
-@@ -628,6 +628,7 @@ Features:
- * rename "userspace" to "core-os"
+@@ -642,6 +642,7 @@ Features:
+ * initialize the hostname from the fs label of /, if /etc/hostname does not exist?
  
  * udev:
 +  - remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n)
@@ -81,10 +71,10 @@
    - kill scsi_id
    - add trigger --subsystem-match=usb/usb_device device
 diff --git a/configure.ac b/configure.ac
-index 16c83bb..36d20b5 100644
+index 329861a..af85405 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1353,6 +1353,25 @@ AC_ARG_ENABLE(hwdb, [AC_HELP_STRING([--disable-hwdb], [disable hardware database
+@@ -1361,6 +1361,25 @@ AC_ARG_ENABLE(hwdb, [AC_HELP_STRING([--disable-hwdb], [disable hardware database
  AM_CONDITIONAL(ENABLE_HWDB, [test x$enable_hwdb = xyes])
  
  # ------------------------------------------------------------------------------
@@ -103,23 +93,23 @@
 +done
 +IFS=$OLD_IFS
 +AC_SUBST(FIRMWARE_PATH)
-+AS_IF([test "x${FIRMWARE_PATH}" != "x"], [ AC_DEFINE(HAVE_FIRMWARE, 1, [Define if FIRMWARE is available]) ])
++AS_IF([test "x${FIRMWARE_PATH}" != "x"], [ AC_DEFINE(HAVE_FIRMWARE, 1, [Define if FIRMWARE is availabe]) ])
 +AM_CONDITIONAL(ENABLE_FIRMWARE, [test "x${FIRMWARE_PATH}" != "x"])
 +
 +# ------------------------------------------------------------------------------
  have_manpages=no
  AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
  AC_PATH_PROG([XSLTPROC], [xsltproc])
-@@ -1653,6 +1672,9 @@ AC_MSG_RESULT([
-         SysV init scripts:       ${SYSTEM_SYSVINIT_PATH}
-         SysV rc?.d directories:  ${SYSTEM_SYSVRCND_PATH}
-         Build Python:            ${PYTHON}
-+        Installation Python:     ${PYTHON_BINARY}
-+        sphinx binary:           ${SPHINX_BUILD}
-+        firmware path:           ${FIRMWARE_PATH}
-         PAM modules dir:         ${with_pamlibdir}
-         PAM configuration dir:   ${with_pamconfdir}
-         D-Bus policy dir:        ${with_dbuspolicydir}
+@@ -1656,6 +1675,9 @@ AC_MSG_RESULT([
+         SysV init scripts:                 ${SYSTEM_SYSVINIT_PATH}
+         SysV rc?.d directories:            ${SYSTEM_SYSVRCND_PATH}
+         Build Python:                      ${PYTHON}
++        Installation Python:               ${PYTHON_BINARY}
++        sphinx binary:                     ${SPHINX_BUILD}
++        firmware path:                     ${FIRMWARE_PATH}
+         PAM modules dir:                   ${with_pamlibdir}
+         PAM configuration dir:             ${with_pamconfdir}
+         D-Bus policy dir:                  ${with_dbuspolicydir}
 diff --git a/src/udev/udev-builtin-firmware.c b/src/udev/udev-builtin-firmware.c
 new file mode 100644
 index 0000000..bd8c2fb
@@ -295,10 +285,10 @@
          [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
          [UDEV_BUILTIN_KEYBOARD] = &udev_builtin_keyboard,
 diff --git a/src/udev/udev.h b/src/udev/udev.h
-index 1f9c812..fa35a88 100644
+index 8433e8d..d32366d 100644
 --- a/src/udev/udev.h
 +++ b/src/udev/udev.h
-@@ -147,6 +147,9 @@ enum udev_builtin_cmd {
+@@ -148,6 +148,9 @@ enum udev_builtin_cmd {
          UDEV_BUILTIN_BLKID,
  #endif
          UDEV_BUILTIN_BTRFS,
@@ -308,7 +298,7 @@
          UDEV_BUILTIN_HWDB,
          UDEV_BUILTIN_INPUT_ID,
          UDEV_BUILTIN_KEYBOARD,
-@@ -175,6 +178,9 @@ struct udev_builtin {
+@@ -176,6 +179,9 @@ struct udev_builtin {
  extern const struct udev_builtin udev_builtin_blkid;
  #endif
  extern const struct udev_builtin udev_builtin_btrfs;
@@ -319,7 +309,7 @@
  extern const struct udev_builtin udev_builtin_input_id;
  extern const struct udev_builtin udev_builtin_keyboard;
 diff --git a/src/udev/udevd.c b/src/udev/udevd.c
-index bb92f16..84024ac 100644
+index e9dd2f4..0abc28e 100644
 --- a/src/udev/udevd.c
 +++ b/src/udev/udevd.c
 @@ -125,6 +125,9 @@ struct event {
@@ -332,7 +322,7 @@
  };
  
  static inline struct event *node_to_event(struct udev_list_node *node) {
-@@ -613,6 +616,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) {
+@@ -614,6 +617,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) {
          event->devnum = udev_device_get_devnum(dev);
          event->is_block = streq("block", udev_device_get_subsystem(dev));
          event->ifindex = udev_device_get_ifindex(dev);
@@ -343,7 +333,7 @@
  
          log_debug("seq %llu queued, '%s' '%s'", udev_device_get_seqnum(dev),
               udev_device_get_action(dev), udev_device_get_subsystem(dev));
-@@ -698,6 +705,12 @@ static bool is_devpath_busy(Manager *manager, struct event *event) {
+@@ -699,6 +706,12 @@ static bool is_devpath_busy(Manager *manager, struct event *event) {
                          return true;
                  }
  
@@ -357,5 +347,5 @@
                  if (event->devpath[common] == '/') {
                          event->delaying_seqnum = loop_event->seqnum;
 -- 
-1.8.3.1
+2.8.3
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0018-make-test-dir-configurable.patch b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0018-make-test-dir-configurable.patch
index 5f3f2e8..5d13e4a 100644
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0018-make-test-dir-configurable.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0018-make-test-dir-configurable.patch
@@ -1,6 +1,3 @@
-From 569cd3cf9806a02226d26c4104dbe44262f93d33 Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Fri, 22 Jan 2016 16:44:11 +0800
 Subject: [PATCH 18/36] make test dir configurable
 
 Upstream-Status: Pending
@@ -9,16 +6,17 @@
 is not the compilation dir, so make it configurable
 
 Signed-off-by: Roy Li <rongqing.li@windriver.com>
+
 ---
  Makefile.am  | 2 +-
  configure.ac | 7 +++++++
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index b5c6ba7..d3cd961 100644
+index a94636a..dbd3386 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -203,7 +203,7 @@ AM_CPPFLAGS = \
+@@ -207,7 +207,7 @@ AM_CPPFLAGS = \
  	-DROOTLIBDIR=\"$(rootlibdir)\" \
  	-DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \
  	-DROOTHOMEDIR=\"$(roothomedir)\" \
@@ -28,10 +26,10 @@
  	-I $(top_builddir)/src/basic \
  	-I $(top_srcdir)/src/basic \
 diff --git a/configure.ac b/configure.ac
-index 36d20b5..d96dc5a 100644
+index 45aae8a..c53fae2 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1494,6 +1494,11 @@ AC_ARG_WITH([roothomedir],
+@@ -1518,6 +1518,11 @@ AC_ARG_WITH([roothomedir],
          [],
          [with_roothomedir=/root])
  
@@ -43,7 +41,7 @@
  AC_ARG_WITH([pamlibdir],
          AS_HELP_STRING([--with-pamlibdir=DIR], [Directory for PAM modules]),
          [],
-@@ -1578,6 +1583,7 @@ AC_SUBST([pamconfdir], [$with_pamconfdir])
+@@ -1603,6 +1608,7 @@ AC_SUBST([pamconfdir], [$with_pamconfdir])
  AC_SUBST([rootprefix], [$with_rootprefix])
  AC_SUBST([rootlibdir], [$with_rootlibdir])
  AC_SUBST([roothomedir], [$with_roothomedir])
@@ -51,14 +49,14 @@
  
  AC_CONFIG_FILES([
          Makefile
-@@ -1669,6 +1675,7 @@ AC_MSG_RESULT([
-         lib dir:                 ${libdir}
-         rootlib dir:             ${with_rootlibdir}
-         root home dir:           ${with_roothomedir}
-+        test dir:                ${with_testdir}
-         SysV init scripts:       ${SYSTEM_SYSVINIT_PATH}
-         SysV rc?.d directories:  ${SYSTEM_SYSVRCND_PATH}
-         Build Python:            ${PYTHON}
+@@ -1695,6 +1701,7 @@ AC_MSG_RESULT([
+         lib dir:                           ${libdir}
+         rootlib dir:                       ${with_rootlibdir}
+         root home dir:                     ${with_roothomedir}
++        test dir:                          ${with_testdir}
+         SysV init scripts:                 ${SYSTEM_SYSVINIT_PATH}
+         SysV rc?.d directories:            ${SYSTEM_SYSVRCND_PATH}
+         Build Python:                      ${PYTHON}
 -- 
-1.8.3.1
+2.8.3
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0023-build-sys-fix-build-with-libgrcypt-disabled.patch b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0023-build-sys-fix-build-with-libgrcypt-disabled.patch
deleted file mode 100644
index 1ae3d66..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/0023-build-sys-fix-build-with-libgrcypt-disabled.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From b68f10bf1f7519e012da5e35fab3a57da7dc46d4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 27 Mar 2016 17:33:54 -0400
-Subject: [PATCH] build-sys: fix build with libgrcypt disabled
-
-- Move gcrypt.h include inside grcrypt-util.h.
-- Allow gcrypt-util.[ch] to be compiled even without gcrypt.
-This allows the logic in files using gcrypt to be simplified.
-
-- Fix compilation of systemd-resolve without gcrypt.
-systemd-resolved already supported that.
-
-Upstream-Status: Backport [ https://github.com/systemd/systemd/pull/2905 ]
-
-Fixes [YOCTO #9219]
-
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- Makefile.am                |  8 ++++----
- src/resolve/resolve-tool.c |  3 +--
- src/shared/gcrypt-util.c   |  4 +++-
- src/shared/gcrypt-util.h   | 14 ++++++++++++++
- 4 files changed, 22 insertions(+), 7 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 2b72a53..95eaa9a 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -4262,7 +4262,9 @@ libsystemd_journal_internal_la_SOURCES = \
- 	src/journal/mmap-cache.h \
- 	src/journal/compress.c \
- 	src/journal/audit-type.h \
--	src/journal/audit-type.c
-+	src/journal/audit-type.c \
-+	src/shared/gcrypt-util.h \
-+	src/shared/gcrypt-util.c
- 
- nodist_libsystemd_journal_internal_la_SOURCES = \
- 	src/journal/audit_type-to-name.h
-@@ -4294,9 +4296,7 @@ libsystemd_journal_internal_la_SOURCES += \
- 	src/journal/journal-authenticate.c \
- 	src/journal/journal-authenticate.h \
- 	src/journal/fsprg.c \
--	src/journal/fsprg.h \
--	src/shared/gcrypt-util.c \
--	src/shared/gcrypt-util.h
-+	src/journal/fsprg.h
- 
- libsystemd_journal_internal_la_LIBADD += \
- 	$(GCRYPT_LIBS)
-diff --git a/src/resolve/resolve-tool.c b/src/resolve/resolve-tool.c
-index 009cc73..14ee01c 100644
---- a/src/resolve/resolve-tool.c
-+++ b/src/resolve/resolve-tool.c
-@@ -17,7 +17,6 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
- 
--#include <gcrypt.h>
- #include <getopt.h>
- #include <net/if.h>
- 
-@@ -863,7 +862,7 @@ static int resolve_openpgp(sd_bus *bus, const char *address) {
-         }
-         domain++;
- 
--        r = string_hashsum(address, domain - 1 - address, GCRY_MD_SHA224, &hashed);
-+        r = string_hashsum_sha224(address, domain - 1 - address, &hashed);
-         if (r < 0)
-                 return log_error_errno(r, "Hashing failed: %m");
- 
-diff --git a/src/shared/gcrypt-util.c b/src/shared/gcrypt-util.c
-index 4ff9452..39b544b 100644
---- a/src/shared/gcrypt-util.c
-+++ b/src/shared/gcrypt-util.c
-@@ -19,10 +19,11 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
- 
-+#ifdef HAVE_GCRYPT
- #include <gcrypt.h>
- 
--#include "hexdecoct.h"
- #include "gcrypt-util.h"
-+#include "hexdecoct.h"
- 
- void initialize_libgcrypt(bool secmem) {
-         const char *p;
-@@ -67,3 +68,4 @@ int string_hashsum(const char *s, size_t len, int md_algorithm, char **out) {
-         *out = enc;
-         return 0;
- }
-+#endif
-diff --git a/src/shared/gcrypt-util.h b/src/shared/gcrypt-util.h
-index c7652c2..cf33b3c 100644
---- a/src/shared/gcrypt-util.h
-+++ b/src/shared/gcrypt-util.h
-@@ -19,7 +19,21 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
- 
-+#include <errno.h>
- #include <stdbool.h>
-+#include <stddef.h>
-+
-+#ifdef HAVE_GCRYPT
-+#include <gcrypt.h>
- 
- void initialize_libgcrypt(bool secmem);
- int string_hashsum(const char *s, size_t len, int md_algorithm, char **out);
-+#endif
-+
-+static inline int string_hashsum_sha224(const char *s, size_t len, char **out) {
-+#ifdef HAVE_GCRYPT
-+        return string_hashsum(s, len, GCRY_MD_SHA224, out);
-+#else
-+        return -EOPNOTSUPP;
-+#endif
-+}
--- 
-2.4.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/udev-re-enable-mount-propagation-for-udevd.patch b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/udev-re-enable-mount-propagation-for-udevd.patch
new file mode 100644
index 0000000..23e22d4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd/udev-re-enable-mount-propagation-for-udevd.patch
@@ -0,0 +1,31 @@
+From: Michael Biebl <biebl@debian.org>
+Date: Sat, 27 Sep 2014 04:19:24 +0200
+Subject: udev: re-enable mount propagation for udevd
+
+Upstream-Status: Backport [http://http.debian.net/debian/pool/main/s/systemd/systemd_215-17+deb8u4.debian.tar.xz]
+
+laptop-mode-tools remounts file systems from within a udev rule to apply
+certain mount options. With MountFlags=slave, those mounts then become private
+to the systemd-udevd namespace and are no longer accessible from outside the
+namespace.
+While the root cause is the broken behaviour of laptop-mode-tools, with mount
+propagation turned off, this can result in a read-only root file system.
+Therefore revert the relevant parts from commit
+c2c13f2df42e0691aecabe3979ea81cd7faa35c7 to re-enable mount propagation for
+udevd.
+
+Once affected packages have been fixed, this patch should be dropped
+again.
+
+Closes: #762018
+diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in
+index e7216d6..1e9a600 100644
+--- a/units/systemd-udevd.service.in
++++ b/units/systemd-udevd.service.in
+@@ -21,6 +21,5 @@ Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket
+ Restart=always
+ RestartSec=0
+ ExecStart=@rootlibexecdir@/systemd-udevd
+-MountFlags=slave
+ KillMode=mixed
+ WatchdogSec=1min
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd_229.bb b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd_229.bb
deleted file mode 100644
index c23c749..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd_229.bb
+++ /dev/null
@@ -1,579 +0,0 @@
-SUMMARY = "A System and service manager"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/systemd"
-
-DESCRIPTION = "systemd is a system and service manager for Linux, compatible with \
-SysV and LSB init scripts. systemd provides aggressive parallelization \
-capabilities, uses socket and D-Bus activation for starting services, \
-offers on-demand starting of daemons, keeps track of processes using \
-Linux cgroups, supports snapshotting and restoring of the system \
-state, maintains mount and automount points and implements an \
-elaborate transactional dependency-based service control logic. It can \
-work as a drop-in replacement for sysvinit."
-
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
-                    file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
-
-PROVIDES = "udev"
-
-PE = "1"
-
-DEPENDS = "kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline libcap libcgroup qemu-native util-linux"
-
-SECTION = "base/shell"
-
-inherit useradd pkgconfig autotools perlnative update-rc.d update-alternatives qemu systemd ptest gettext bash-completion
-
-SRCREV = "714c62b46379abb7558c544665522aca91691e10"
-
-PV = "229+git${SRCPV}"
-
-SRC_URI = "git://github.com/systemd/systemd.git;protocol=git \
-           file://touchscreen.rules \
-           file://00-create-volatile.conf \
-           file://init \
-           file://run-ptest \
-           file://0003-define-exp10-if-missing.patch \
-           file://0004-Use-getenv-when-secure-versions-are-not-available.patch \
-           file://0005-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
-           file://0006-configure-Check-for-additional-features-that-uclibc-.patch \
-           file://0007-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch \
-           file://0008-nspawn-Use-execvpe-only-when-libc-supports-it.patch \
-           file://0009-util-bypass-unimplemented-_SC_PHYS_PAGES-system-conf.patch \
-           file://0010-implment-systemd-sysv-install-for-OE.patch \
-           file://0011-nss-mymachines-Build-conditionally-when-HAVE_MYHOSTN.patch \
-           file://0012-rules-whitelist-hd-devices.patch \
-           file://0013-sysv-generator-add-support-for-executing-scripts-und.patch \
-           file://0014-Make-root-s-home-directory-configurable.patch \
-           file://0015-systemd-user-avoid-using-system-auth.patch \
-           file://0016-Revert-rules-remove-firmware-loading-rules.patch \
-           file://0017-Revert-udev-remove-userspace-firmware-loading-suppor.patch \
-           file://0018-make-test-dir-configurable.patch \
-           file://0019-remove-duplicate-include-uchar.h.patch \
-           file://0020-check-for-uchar.h-in-configure.patch \
-           file://0021-include-missing.h-for-getting-secure_getenv-definiti.patch \
-           file://0022-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch \
-           file://0023-build-sys-fix-build-with-libgrcypt-disabled.patch \
-"
-SRC_URI_append_libc-uclibc = "\
-           file://0002-units-Prefer-getty-to-agetty-in-console-setup-system.patch \
-"
-SRC_URI_append_qemuall = " file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
-
-S = "${WORKDIR}/git"
-
-LDFLAGS_append_libc-uclibc = " -lrt -lssp_nonshared -lssp "
-
-GTKDOC_DOCDIR = "${S}/docs/"
-
-PACKAGECONFIG ??= "xz \
-                   ldconfig \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
-                   ${@bb.utils.contains('MACHINE_FEATURES', 'efi', 'efi', '', d)} \
-                   binfmt \
-                   randomseed \
-                   machined \
-                   backlight \
-                   quotacheck \
-                   bootchart \
-                   hostnamed \
-                   ${@bb.utils.contains('TCLIBC', 'glibc', 'myhostname sysusers', '', d)} \
-                   hibernate \
-                   timedated \
-                   timesyncd \
-                   localed \
-                   kdbus \
-                   ima \
-                   smack \
-                   logind \
-                   firstboot \
-                   utmp \
-                   polkit \
-"
-PACKAGECONFIG_remove_libc-musl = "selinux"
-PACKAGECONFIG_remove_libc-musl = "smack"
-
-# Use the upstream systemd serial-getty@.service and rely on
-# systemd-getty-generator instead of using the OE-core specific
-# systemd-serialgetty.bb - not enabled by default.
-PACKAGECONFIG[serial-getty-generator] = ""
-
-PACKAGECONFIG[journal-upload] = "--enable-libcurl,--disable-libcurl,curl"
-# Sign the journal for anti-tampering
-PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt"
-PACKAGECONFIG[cryptsetup] = "--enable-libcryptsetup,--disable-libcryptsetup,cryptsetup"
-PACKAGECONFIG[microhttpd] = "--enable-microhttpd,--disable-microhttpd,libmicrohttpd"
-PACKAGECONFIG[elfutils] = "--enable-elfutils,--disable-elfutils,elfutils"
-PACKAGECONFIG[resolved] = "--enable-resolved,--disable-resolved"
-PACKAGECONFIG[networkd] = "--enable-networkd,--disable-networkd"
-PACKAGECONFIG[machined] = "--enable-machined,--disable-machined"
-PACKAGECONFIG[backlight] = "--enable-backlight,--disable-backlight"
-PACKAGECONFIG[quotacheck] = "--enable-quotacheck,--disable-quotacheck"
-PACKAGECONFIG[bootchart] = "--enable-bootchart,--disable-bootchart"
-PACKAGECONFIG[hostnamed] = "--enable-hostnamed,--disable-hostnamed"
-PACKAGECONFIG[myhostname] = "--enable-myhostname,--disable-myhostname"
-PACKAGECONFIG[rfkill] = "--enable-rfkill,--disable-rfkill"
-PACKAGECONFIG[hibernate] = "--enable-hibernate,--disable-hibernate"
-PACKAGECONFIG[timedated] = "--enable-timedated,--disable-timedated"
-PACKAGECONFIG[timesyncd] = "--enable-timesyncd,--disable-timesyncd"
-PACKAGECONFIG[localed] = "--enable-localed,--disable-localed"
-PACKAGECONFIG[efi] = "--enable-efi,--disable-efi"
-PACKAGECONFIG[kdbus] = "--enable-kdbus,--disable-kdbus"
-PACKAGECONFIG[ima] = "--enable-ima,--disable-ima"
-PACKAGECONFIG[smack] = "--enable-smack,--disable-smack"
-# libseccomp is found in meta-security
-PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
-PACKAGECONFIG[logind] = "--enable-logind,--disable-logind"
-PACKAGECONFIG[sysusers] = "--enable-sysusers,--disable-sysusers"
-PACKAGECONFIG[firstboot] = "--enable-firstboot,--disable-firstboot"
-PACKAGECONFIG[randomseed] = "--enable-randomseed,--disable-randomseed"
-PACKAGECONFIG[binfmt] = "--enable-binfmt,--disable-binfmt"
-PACKAGECONFIG[utmp] = "--enable-utmp,--disable-utmp"
-PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit"
-# importd requires curl/xz/zlib/bzip2/gcrypt
-PACKAGECONFIG[importd] = "--enable-importd,--disable-importd"
-PACKAGECONFIG[libidn] = "--enable-libidn,--disable-libidn,libidn"
-PACKAGECONFIG[audit] = "--enable-audit,--disable-audit,audit"
-PACKAGECONFIG[manpages] = "--enable-manpages,--disable-manpages,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-PACKAGECONFIG[pam] = "--enable-pam,--disable-pam,libpam"
-# Verify keymaps on locale change
-PACKAGECONFIG[xkbcommon] = "--enable-xkbcommon,--disable-xkbcommon,libxkbcommon"
-# Update NAT firewall rules
-PACKAGECONFIG[iptc] = "--enable-libiptc,--disable-libiptc,iptables"
-PACKAGECONFIG[ldconfig] = "--enable-ldconfig,--disable-ldconfig,,"
-PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
-PACKAGECONFIG[valgrind] = "ac_cv_header_valgrind_memcheck_h=yes ac_cv_header_valgrind_valgrind_h=yes ,ac_cv_header_valgrind_memcheck_h=no ac_cv_header_valgrind_valgrind_h=no ,valgrind"
-PACKAGECONFIG[qrencode] = "--enable-qrencode,--disable-qrencode,qrencode"
-PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
-PACKAGECONFIG[coredump] = "--enable-coredump,--disable-coredump"
-PACKAGECONFIG[bzip2] = "--enable-bzip2,--disable-bzip2,bzip2"
-PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
-PACKAGECONFIG[xz] = "--enable-xz,--disable-xz,xz"
-PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_KILL=${base_bindir}/kill"
-CACHED_CONFIGUREVARS += "ac_cv_path_KMOD=${base_bindir}/kmod"
-CACHED_CONFIGUREVARS += "ac_cv_path_QUOTACHECK=${sbindir}/quotacheck"
-CACHED_CONFIGUREVARS += "ac_cv_path_QUOTAON=${sbindir}/quotaon"
-CACHED_CONFIGUREVARS += "ac_cv_path_SULOGIN=${base_sbindir}/sulogin"
-
-# Helper variables to clarify locations.  This mirrors the logic in systemd's
-# build system.
-rootprefix ?= "${base_prefix}"
-rootlibdir ?= "${base_libdir}"
-rootlibexecdir = "${rootprefix}/lib"
-
-CACHED_CONFIGUREVARS_class-target = "\
-                         ac_cv_path_MOUNT_PATH=${base_bindir}/mount \
-                         ac_cv_path_UMOUNT_PATH=${base_bindir}/umount \
-                         ac_cv_path_KMOD=${base_bindir}/kmod \
-                         ac_cv_path_KILL=${base_bindir}/kill \
-                         ac_cv_path_SULOGIN=${base_sbindir}/sulogin \
-                         ac_cv_path_KEXEC=${sbindir}/kexec \
-                         ac_cv_path_QUOTACHECK=${sbindir}/quotacheck \
-                         ac_cv_path_QUOTAON=${sbindir}/quotaon \
-			 "
-
-EXTRA_OECONF = " --with-rootprefix=${rootprefix} \
-                 --with-rootlibdir=${rootlibdir} \
-                 --with-roothomedir=${ROOT_HOME} \
-                 --enable-split-usr \
-                 --without-python \
-                 --with-sysvrcnd-path=${sysconfdir} \
-                 --with-firmware-path=/lib/firmware \
-                 --with-testdir=${PTEST_PATH} \
-               "
-# per the systemd README, define VALGRIND=1 to run under valgrind
-CFLAGS .= "${@bb.utils.contains('PACKAGECONFIG', 'valgrind', ' -DVALGRIND=1', '', d)}"
-
-# disable problematic GCC 5.2 optimizations [YOCTO #8291]
-FULL_OPTIMIZATION_append_arm = " -fno-schedule-insns -fno-schedule-insns2"
-
-do_configure_prepend() {
-	export NM="${HOST_PREFIX}gcc-nm"
-	export AR="${HOST_PREFIX}gcc-ar"
-	export RANLIB="${HOST_PREFIX}gcc-ranlib"
-	export KMOD="${base_bindir}/kmod"
-	if [ -d ${S}/units.pre_sed ] ; then
-		cp -r ${S}/units.pre_sed ${S}/units
-	else
-		cp -r ${S}/units ${S}/units.pre_sed
-	fi
-	sed -i -e 's:-DTEST_DIR=\\\".*\\\":-DTEST_DIR=\\\"${PTEST_PATH}/tests/test\\\":' ${S}/Makefile.am
-	sed -i -e 's:-DCATALOG_DIR=\\\".*\\\":-DCATALOG_DIR=\\\"${PTEST_PATH}/tests/catalog\\\":' ${S}/Makefile.am
-}
-
-do_install() {
-	autotools_do_install
-	install -d ${D}/${base_sbindir}
-	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
-		# Provided by a separate recipe
-		rm ${D}${systemd_unitdir}/system/serial-getty* -f
-	fi
-
-	# Provide support for initramfs
-	[ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
-	[ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
-
-	# Create machine-id
-	# 20:12 < mezcalero> koen: you have three options: a) run systemd-machine-id-setup at install time, b) have / read-only and an empty file there (for stateless) and c) boot with / writable
-	touch ${D}${sysconfdir}/machine-id
-
-
-	install -d ${D}${sysconfdir}/udev/rules.d/
-	install -d ${D}${sysconfdir}/tmpfiles.d
-	install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
-
-	install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-		install -d ${D}${sysconfdir}/init.d
-		install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
-		sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
-	fi
-
-	chown root:systemd-journal ${D}/${localstatedir}/log/journal
-
-        # Delete journal README, as log can be symlinked inside volatile.
-        rm -f ${D}/${localstatedir}/log/README
-
-	install -d ${D}${systemd_unitdir}/system/graphical.target.wants
-	install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
-	install -d ${D}${systemd_unitdir}/system/poweroff.target.wants
-	install -d ${D}${systemd_unitdir}/system/reboot.target.wants
-	install -d ${D}${systemd_unitdir}/system/rescue.target.wants
-
-	# Create symlinks for systemd-update-utmp-runlevel.service
-	if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/graphical.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/multi-user.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/poweroff.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/reboot.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/rescue.target.wants/systemd-update-utmp-runlevel.service
-	fi
-
-	# Enable journal to forward message to syslog daemon
-	sed -i -e 's/.*ForwardToSyslog.*/ForwardToSyslog=yes/' ${D}${sysconfdir}/systemd/journald.conf
-	# this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
-	# for existence else it fails
-	if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
-		${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
-	fi
-	if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
-		# if resolved is disabled, it won't handle the link of resolv.conf, so
-		# set it up ourselves
-		ln -s ../run/resolv.conf ${D}${sysconfdir}/resolv.conf
-		echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
-		echo 'f /run/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
-	fi
-	install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install
-}
-
-do_install_ptest () {
-       # install data files needed for tests
-       install -d ${D}${PTEST_PATH}/tests/test
-       cp -rfL ${S}/test/* ${D}${PTEST_PATH}/tests/test
-       sed -i 's/"tree"/"ls"/' ${D}${PTEST_PATH}/tests/test/udev-test.pl
-
-       install -d ${D}${PTEST_PATH}/tests/catalog
-       install ${S}/catalog/* ${D}${PTEST_PATH}/tests/catalog/
-
-       install -D ${S}/build-aux/test-driver ${D}${PTEST_PATH}/tests/build-aux/test-driver
-
-       install -d ${D}${PTEST_PATH}/tests/rules
-       install ${B}/rules/* ${D}${PTEST_PATH}/tests/rules/
-
-       # This directory needs to be there for udev-test.pl to work.
-       install -d ${D}${libdir}/udev/rules.d
-
-       # install actual test binaries
-       install -m 0755 ${B}/test-* ${D}${PTEST_PATH}/tests/
-       install -m 0755 ${B}/.libs/test-* ${D}${PTEST_PATH}/tests/
-
-       install ${B}/Makefile ${D}${PTEST_PATH}/tests/
-}
-
-python populate_packages_prepend (){
-    systemdlibdir = d.getVar("rootlibdir", True)
-    do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
-}
-PACKAGES_DYNAMIC += "^lib(udev|systemd).*"
-
-PACKAGES =+ "\
-    ${PN}-gui \
-    ${PN}-vconsole-setup \
-    ${PN}-initramfs \
-    ${PN}-analyze \
-    ${PN}-kernel-install \
-    ${PN}-rpm-macros \
-    ${PN}-binfmt \
-    ${PN}-pam \
-    ${PN}-zsh-completion \
-    ${PN}-xorg-xinitrc \
-    ${PN}-extra-utils \
-"
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)}"
-SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M --shell /bin/nologin systemd-journal-gateway;', '', d)}"
-USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;', '', d)}"
-GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal"
-
-FILES_${PN}-analyze = "${bindir}/systemd-analyze"
-
-FILES_${PN}-initramfs = "/init"
-RDEPENDS_${PN}-initramfs = "${PN}"
-
-RDEPENDS_${PN}-ptest += "gawk make perl python bash xz \
-                         tzdata tzdata-americas tzdata-asia \
-                         tzdata-europe tzdata-africa tzdata-antarctica \
-                         tzdata-arctic tzdata-atlantic tzdata-australia \
-                         tzdata-pacific tzdata-posix"
-
-FILES_${PN}-ptest += "${libdir}/udev/rules.d"
-
-FILES_${PN}-gui = "${bindir}/systemadm"
-
-FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
-                              ${systemd_unitdir}/system/systemd-vconsole-setup.service \
-                              ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service"
-
-RDEPENDS_${PN}-kernel-install += "bash"
-FILES_${PN}-kernel-install = "${bindir}/kernel-install \
-                              ${sysconfdir}/kernel/ \
-                              ${exec_prefix}/lib/kernel \
-                             "
-FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
-                         "
-
-FILES_${PN}-xorg-xinitrc = "${sysconfdir}/X11/xinit/xinitrc.d/*"
-
-FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions"
-
-FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
-                      ${exec_prefix}/lib/binfmt.d \
-                      ${rootlibexecdir}/systemd/systemd-binfmt \
-                      ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \
-                      ${systemd_unitdir}/system/systemd-binfmt.service"
-RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc"
-
-RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
-
-FILES_${PN}-extra-utils = "\
-                        ${base_bindir}/systemd-escape \
-                        ${base_bindir}/systemd-inhibit \
-                        ${bindir}/systemd-detect-virt \
-                        ${bindir}/systemd-path \
-                        ${bindir}/systemd-run \
-                        ${bindir}/systemd-cat \
-                        ${bindir}/systemd-delta \
-                        ${bindir}/systemd-cgls \
-                        ${bindir}/systemd-cgtop \
-                        ${bindir}/systemd-stdio-bridge \
-                        ${base_bindir}/systemd-ask-password \
-                        ${base_bindir}/systemd-tty-ask-password-agent \
-                        ${systemd_unitdir}/system/systemd-ask-password-console.path \
-                        ${systemd_unitdir}/system/systemd-ask-password-console.service \
-                        ${systemd_unitdir}/system/systemd-ask-password-wall.path \
-                        ${systemd_unitdir}/system/systemd-ask-password-wall.service \
-                        ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-console.path \
-                        ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-wall.path \
-                        ${systemd_unitdir}/system/multi-user.target.wants/systemd-ask-password-wall.path \
-                        ${rootlibexecdir}/systemd/systemd-resolve-host \
-                        ${rootlibexecdir}/systemd/systemd-ac-power \
-                        ${rootlibexecdir}/systemd/systemd-activate \
-                        ${bindir}/systemd-nspawn \
-                        ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
-                        ${systemd_unitdir}/system/systemd-nspawn@.service \
-                        ${rootlibexecdir}/systemd/systemd-bus-proxyd \
-                        ${systemd_unitdir}/system/systemd-bus-proxyd.service \
-                        ${systemd_unitdir}/system/systemd-bus-proxyd.socket \
-                        ${rootlibexecdir}/systemd/systemd-socket-proxyd \
-                        ${rootlibexecdir}/systemd/systemd-reply-password \
-                        ${rootlibexecdir}/systemd/systemd-sleep \
-                        ${rootlibexecdir}/systemd/system-sleep \
-                        ${systemd_unitdir}/system/systemd-hibernate.service \
-                        ${systemd_unitdir}/system/systemd-hybrid-sleep.service \
-                        ${systemd_unitdir}/system/systemd-suspend.service \
-                        ${systemd_unitdir}/system/sleep.target \
-                        ${rootlibexecdir}/systemd/systemd-initctl \
-                        ${systemd_unitdir}/system/systemd-initctl.service \
-                        ${systemd_unitdir}/system/systemd-initctl.socket \
-                        ${systemd_unitdir}/system/sockets.target.wants/systemd-initctl.socket \
-                        ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
-                        ${rootlibexecdir}/systemd/systemd-cgroups-agent \
-"
-
-CONFFILES_${PN} = "${sysconfdir}/machine-id \
-                ${sysconfdir}/systemd/coredump.conf \
-                ${sysconfdir}/systemd/journald.conf \
-                ${sysconfdir}/systemd/logind.conf \
-                ${sysconfdir}/systemd/system.conf \
-                ${sysconfdir}/systemd/user.conf"
-
-FILES_${PN} = " ${base_bindir}/* \
-                ${datadir}/dbus-1/services \
-                ${datadir}/dbus-1/system-services \
-                ${datadir}/polkit-1 \
-                ${datadir}/${BPN} \
-                ${datadir}/factory \
-                ${sysconfdir}/dbus-1/ \
-                ${sysconfdir}/machine-id \
-                ${sysconfdir}/modules-load.d/ \
-                ${sysconfdir}/pam.d/ \
-                ${sysconfdir}/sysctl.d/ \
-                ${sysconfdir}/systemd/ \
-                ${sysconfdir}/tmpfiles.d/ \
-                ${sysconfdir}/xdg/ \
-                ${sysconfdir}/init.d/README \
-                ${sysconfdir}/resolv.conf \
-                ${rootlibexecdir}/systemd/* \
-                ${systemd_unitdir}/* \
-                ${base_libdir}/security/*.so \
-                ${libdir}/libnss_* \
-                /cgroup \
-                ${bindir}/systemd* \
-                ${bindir}/busctl \
-                ${bindir}/coredumpctl \
-                ${bindir}/localectl \
-                ${bindir}/hostnamectl \
-                ${bindir}/timedatectl \
-                ${bindir}/bootctl \
-                ${bindir}/kernel-install \
-                ${exec_prefix}/lib/tmpfiles.d/*.conf \
-                ${exec_prefix}/lib/systemd \
-                ${exec_prefix}/lib/modules-load.d \
-                ${exec_prefix}/lib/sysctl.d \
-                ${exec_prefix}/lib/sysusers.d \
-                ${localstatedir} \
-                ${nonarch_base_libdir}/udev/rules.d/70-uaccess.rules \
-                ${nonarch_base_libdir}/udev/rules.d/71-seat.rules \
-                ${nonarch_base_libdir}/udev/rules.d/73-seat-late.rules \
-                ${nonarch_base_libdir}/udev/rules.d/99-systemd.rules \
-               "
-
-FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
-
-RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})"
-RDEPENDS_${PN} += "volatile-binds update-rc.d"
-
-RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)} \
-                      systemd-vconsole-setup \
-                      systemd-extra-utils \
-                      systemd-compat-units udev-hwdb \
-                      util-linux-agetty  util-linux-fsck e2fsprogs-e2fsck \
-                      kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \
-                      os-release \
-"
-
-INSANE_SKIP_${PN}-doc += " libdir"
-
-PACKAGES =+ "udev udev-hwdb"
-
-RPROVIDES_udev = "hotplug"
-
-RDEPENDS_udev-hwdb += "udev"
-
-FILES_udev += "${base_sbindir}/udevd \
-               ${rootlibexecdir}/systemd/systemd-udevd \
-               ${rootlibexecdir}/udev/accelerometer \
-               ${rootlibexecdir}/udev/ata_id \
-               ${rootlibexecdir}/udev/cdrom_id \
-               ${rootlibexecdir}/udev/collect \
-               ${rootlibexecdir}/udev/findkeyboards \
-               ${rootlibexecdir}/udev/keyboard-force-release.sh \
-               ${rootlibexecdir}/udev/keymap \
-               ${rootlibexecdir}/udev/mtd_probe \
-               ${rootlibexecdir}/udev/scsi_id \
-               ${rootlibexecdir}/udev/v4l_id \
-               ${rootlibexecdir}/udev/keymaps \
-               ${rootlibexecdir}/udev/rules.d/*.rules \
-               ${sysconfdir}/udev \
-               ${sysconfdir}/init.d/systemd-udevd \
-               ${systemd_unitdir}/system/*udev* \
-               ${systemd_unitdir}/system/*.wants/*udev* \
-               ${base_bindir}/udevadm \
-               ${datadir}/bash-completion/completions/udevadm \
-              "
-
-FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d"
-
-INITSCRIPT_PACKAGES = "udev"
-INITSCRIPT_NAME_udev = "systemd-udevd"
-INITSCRIPT_PARAMS_udev = "start 03 S ."
-
-python __anonymous() {
-    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
-        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
-
-# TODO:
-# u-a for runlevel and telinit
-
-ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel"
-
-ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd"
-ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
-ALTERNATIVE_PRIORITY[init] ?= "300"
-
-ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
-ALTERNATIVE_PRIORITY[halt] ?= "300"
-
-ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
-ALTERNATIVE_PRIORITY[reboot] ?= "300"
-
-ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
-ALTERNATIVE_PRIORITY[shutdown] ?= "300"
-
-ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
-ALTERNATIVE_PRIORITY[poweroff] ?= "300"
-
-ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
-ALTERNATIVE_PRIORITY[runlevel] ?= "300"
-
-pkg_postinst_${PN} () {
-	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
-		-e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
-		-i $D${sysconfdir}/nsswitch.conf
-}
-
-pkg_prerm_${PN} () {
-	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
-		-e '/^hosts:/s/\s*myhostname//' \
-		-i $D${sysconfdir}/nsswitch.conf
-}
-
-pkg_postinst_udev-hwdb () {
-	if test -n "$D"; then
-		${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \
-			--root $D
-		chown root:root $D${sysconfdir}/udev/hwdb.bin
-	else
-		udevadm hwdb --update
-	fi
-}
-
-pkg_prerm_udev-hwdb () {
-	rm -f $D${sysconfdir}/udev/hwdb.bin
-}
-
-# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
-# that we don't build both udev and systemd in world builds.
-python () {
-    if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
-        raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
-
-    import re
-    if re.match('.*musl*', d.getVar('TARGET_OS', True)) != None:
-        raise bb.parse.SkipPackage("Not _yet_ supported on musl based targets")
-}
diff --git a/import-layers/yocto-poky/meta/recipes-core/systemd/systemd_230.bb b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd_230.bb
new file mode 100644
index 0000000..a949fe8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/systemd/systemd_230.bb
@@ -0,0 +1,598 @@
+require systemd.inc
+
+PROVIDES = "udev"
+
+PE = "1"
+
+DEPENDS = "kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline libcap libcgroup qemu-native util-linux"
+
+SECTION = "base/shell"
+
+inherit useradd pkgconfig autotools perlnative update-rc.d update-alternatives qemu systemd ptest gettext bash-completion
+
+SRC_URI += " \
+           file://touchscreen.rules \
+           file://00-create-volatile.conf \
+           file://init \
+           file://run-ptest \
+           file://0003-define-exp10-if-missing.patch \
+           file://0004-Use-getenv-when-secure-versions-are-not-available.patch \
+           file://0005-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
+           file://0006-configure-Check-for-additional-features-that-uclibc-.patch \
+           file://0007-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch \
+           file://0008-nspawn-Use-execvpe-only-when-libc-supports-it.patch \
+           file://0009-util-bypass-unimplemented-_SC_PHYS_PAGES-system-conf.patch \
+           file://0010-implment-systemd-sysv-install-for-OE.patch \
+           file://0011-nss-mymachines-Build-conditionally-when-HAVE_MYHOSTN.patch \
+           file://0012-rules-whitelist-hd-devices.patch \
+           file://0013-sysv-generator-add-support-for-executing-scripts-und.patch \
+           file://0014-Make-root-s-home-directory-configurable.patch \
+           file://0015-systemd-user-avoid-using-system-auth.patch \
+           file://0016-Revert-rules-remove-firmware-loading-rules.patch \
+           file://0017-Revert-udev-remove-userspace-firmware-loading-suppor.patch \
+           file://0018-make-test-dir-configurable.patch \
+           file://0019-remove-duplicate-include-uchar.h.patch \
+           file://0020-check-for-uchar.h-in-configure.patch \
+           file://0021-include-missing.h-for-getting-secure_getenv-definiti.patch \
+           file://0022-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch \
+           file://udev-re-enable-mount-propagation-for-udevd.patch \
+"
+SRC_URI_append_libc-uclibc = "\
+           file://0002-units-Prefer-getty-to-agetty-in-console-setup-system.patch \
+"
+SRC_URI_append_qemuall = " file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
+
+PACKAGECONFIG ??= "xz \
+                   ldconfig \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
+                   ${@bb.utils.contains('MACHINE_FEATURES', 'efi', 'efi', '', d)} \
+                   binfmt \
+                   randomseed \
+                   machined \
+                   backlight \
+                   quotacheck \
+                   hostnamed \
+                   ${@bb.utils.contains('TCLIBC', 'glibc', 'myhostname sysusers', '', d)} \
+                   hibernate \
+                   timedated \
+                   timesyncd \
+                   localed \
+                   kdbus \
+                   ima \
+                   smack \
+                   logind \
+                   firstboot \
+                   utmp \
+                   polkit \
+"
+PACKAGECONFIG_remove_libc-musl = "selinux"
+PACKAGECONFIG_remove_libc-musl = "smack"
+
+# Use the upstream systemd serial-getty@.service and rely on
+# systemd-getty-generator instead of using the OE-core specific
+# systemd-serialgetty.bb - not enabled by default.
+PACKAGECONFIG[serial-getty-generator] = ""
+
+PACKAGECONFIG[journal-upload] = "--enable-libcurl,--disable-libcurl,curl"
+# Sign the journal for anti-tampering
+PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt"
+PACKAGECONFIG[cryptsetup] = "--enable-libcryptsetup,--disable-libcryptsetup,cryptsetup"
+PACKAGECONFIG[microhttpd] = "--enable-microhttpd,--disable-microhttpd,libmicrohttpd"
+PACKAGECONFIG[elfutils] = "--enable-elfutils,--disable-elfutils,elfutils"
+PACKAGECONFIG[resolved] = "--enable-resolved,--disable-resolved"
+PACKAGECONFIG[networkd] = "--enable-networkd,--disable-networkd"
+PACKAGECONFIG[machined] = "--enable-machined,--disable-machined"
+PACKAGECONFIG[backlight] = "--enable-backlight,--disable-backlight"
+PACKAGECONFIG[quotacheck] = "--enable-quotacheck,--disable-quotacheck"
+PACKAGECONFIG[hostnamed] = "--enable-hostnamed,--disable-hostnamed"
+PACKAGECONFIG[myhostname] = "--enable-myhostname,--disable-myhostname"
+PACKAGECONFIG[rfkill] = "--enable-rfkill,--disable-rfkill"
+PACKAGECONFIG[hibernate] = "--enable-hibernate,--disable-hibernate"
+PACKAGECONFIG[timedated] = "--enable-timedated,--disable-timedated"
+PACKAGECONFIG[timesyncd] = "--enable-timesyncd,--disable-timesyncd"
+PACKAGECONFIG[localed] = "--enable-localed,--disable-localed"
+PACKAGECONFIG[efi] = "--enable-efi,--disable-efi"
+PACKAGECONFIG[kdbus] = "--enable-kdbus,--disable-kdbus"
+PACKAGECONFIG[ima] = "--enable-ima,--disable-ima"
+PACKAGECONFIG[smack] = "--enable-smack,--disable-smack"
+# libseccomp is found in meta-security
+PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
+PACKAGECONFIG[logind] = "--enable-logind,--disable-logind"
+PACKAGECONFIG[sysusers] = "--enable-sysusers,--disable-sysusers"
+PACKAGECONFIG[firstboot] = "--enable-firstboot,--disable-firstboot"
+PACKAGECONFIG[randomseed] = "--enable-randomseed,--disable-randomseed"
+PACKAGECONFIG[binfmt] = "--enable-binfmt,--disable-binfmt"
+PACKAGECONFIG[utmp] = "--enable-utmp,--disable-utmp"
+PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit"
+# importd requires curl/xz/zlib/bzip2/gcrypt
+PACKAGECONFIG[importd] = "--enable-importd,--disable-importd"
+PACKAGECONFIG[libidn] = "--enable-libidn,--disable-libidn,libidn"
+PACKAGECONFIG[audit] = "--enable-audit,--disable-audit,audit"
+PACKAGECONFIG[manpages] = "--enable-manpages,--disable-manpages,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+PACKAGECONFIG[pam] = "--enable-pam,--disable-pam,libpam"
+# Verify keymaps on locale change
+PACKAGECONFIG[xkbcommon] = "--enable-xkbcommon,--disable-xkbcommon,libxkbcommon"
+# Update NAT firewall rules
+PACKAGECONFIG[iptc] = "--enable-libiptc,--disable-libiptc,iptables"
+PACKAGECONFIG[ldconfig] = "--enable-ldconfig,--disable-ldconfig,,"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
+PACKAGECONFIG[valgrind] = "ac_cv_header_valgrind_memcheck_h=yes ac_cv_header_valgrind_valgrind_h=yes ,ac_cv_header_valgrind_memcheck_h=no ac_cv_header_valgrind_valgrind_h=no ,valgrind"
+PACKAGECONFIG[qrencode] = "--enable-qrencode,--disable-qrencode,qrencode"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
+PACKAGECONFIG[coredump] = "--enable-coredump,--disable-coredump"
+PACKAGECONFIG[bzip2] = "--enable-bzip2,--disable-bzip2,bzip2"
+PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
+PACKAGECONFIG[xz] = "--enable-xz,--disable-xz,xz"
+PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_KILL=${base_bindir}/kill"
+CACHED_CONFIGUREVARS += "ac_cv_path_KMOD=${base_bindir}/kmod"
+CACHED_CONFIGUREVARS += "ac_cv_path_QUOTACHECK=${sbindir}/quotacheck"
+CACHED_CONFIGUREVARS += "ac_cv_path_QUOTAON=${sbindir}/quotaon"
+CACHED_CONFIGUREVARS += "ac_cv_path_SULOGIN=${base_sbindir}/sulogin"
+
+# Helper variables to clarify locations.  This mirrors the logic in systemd's
+# build system.
+rootprefix ?= "${base_prefix}"
+rootlibdir ?= "${base_libdir}"
+rootlibexecdir = "${rootprefix}/lib"
+
+CACHED_CONFIGUREVARS_class-target = "\
+                         ac_cv_path_MOUNT_PATH=${base_bindir}/mount \
+                         ac_cv_path_UMOUNT_PATH=${base_bindir}/umount \
+                         ac_cv_path_KMOD=${base_bindir}/kmod \
+                         ac_cv_path_KILL=${base_bindir}/kill \
+                         ac_cv_path_SULOGIN=${base_sbindir}/sulogin \
+                         ac_cv_path_KEXEC=${sbindir}/kexec \
+                         ac_cv_path_QUOTACHECK=${sbindir}/quotacheck \
+                         ac_cv_path_QUOTAON=${sbindir}/quotaon \
+			 "
+
+EXTRA_OECONF = " --with-rootprefix=${rootprefix} \
+                 --with-rootlibdir=${rootlibdir} \
+                 --with-roothomedir=${ROOT_HOME} \
+                 --enable-split-usr \
+                 --without-python \
+                 --with-sysvrcnd-path=${sysconfdir} \
+                 --with-firmware-path=/lib/firmware \
+                 --with-testdir=${PTEST_PATH} \
+               "
+# per the systemd README, define VALGRIND=1 to run under valgrind
+CFLAGS .= "${@bb.utils.contains('PACKAGECONFIG', 'valgrind', ' -DVALGRIND=1', '', d)}"
+
+# disable problematic GCC 5.2 optimizations [YOCTO #8291]
+FULL_OPTIMIZATION_append_arm = " -fno-schedule-insns -fno-schedule-insns2"
+
+do_configure_prepend() {
+	export NM="${HOST_PREFIX}gcc-nm"
+	export AR="${HOST_PREFIX}gcc-ar"
+	export RANLIB="${HOST_PREFIX}gcc-ranlib"
+	export KMOD="${base_bindir}/kmod"
+	if [ -d ${S}/units.pre_sed ] ; then
+		cp -r ${S}/units.pre_sed ${S}/units
+	else
+		cp -r ${S}/units ${S}/units.pre_sed
+	fi
+	sed -i -e 's:-DTEST_DIR=\\\".*\\\":-DTEST_DIR=\\\"${PTEST_PATH}/tests/test\\\":' ${S}/Makefile.am
+	sed -i -e 's:-DCATALOG_DIR=\\\".*\\\":-DCATALOG_DIR=\\\"${PTEST_PATH}/tests/catalog\\\":' ${S}/Makefile.am
+}
+
+do_install() {
+	autotools_do_install
+	install -d ${D}/${base_sbindir}
+	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
+		# Provided by a separate recipe
+		rm ${D}${systemd_unitdir}/system/serial-getty* -f
+	fi
+
+	# Provide support for initramfs
+	[ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
+	[ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
+
+	# Create machine-id
+	# 20:12 < mezcalero> koen: you have three options: a) run systemd-machine-id-setup at install time, b) have / read-only and an empty file there (for stateless) and c) boot with / writable
+	touch ${D}${sysconfdir}/machine-id
+
+
+	install -d ${D}${sysconfdir}/udev/rules.d/
+	install -d ${D}${sysconfdir}/tmpfiles.d
+	install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
+	install -d ${D}${libdir}/pkgconfig
+	install -m 0644 ${B}/src/udev/udev.pc ${D}${libdir}/pkgconfig/
+
+	install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
+
+	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
+		install -d ${D}${sysconfdir}/init.d
+		install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
+		sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
+	fi
+
+	chown root:systemd-journal ${D}/${localstatedir}/log/journal
+
+	# Delete journal README, as log can be symlinked inside volatile.
+	rm -f ${D}/${localstatedir}/log/README
+
+	install -d ${D}${systemd_unitdir}/system/graphical.target.wants
+	install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
+	install -d ${D}${systemd_unitdir}/system/poweroff.target.wants
+	install -d ${D}${systemd_unitdir}/system/reboot.target.wants
+	install -d ${D}${systemd_unitdir}/system/rescue.target.wants
+
+	# Create symlinks for systemd-update-utmp-runlevel.service
+	if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/graphical.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/multi-user.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/poweroff.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/reboot.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/rescue.target.wants/systemd-update-utmp-runlevel.service
+	fi
+
+	# Enable journal to forward message to syslog daemon
+	sed -i -e 's/.*ForwardToSyslog.*/ForwardToSyslog=yes/' ${D}${sysconfdir}/systemd/journald.conf
+	# Set the maximium size of runtime journal to 64M as default
+	sed -i -e 's/.*RuntimeMaxUse.*/RuntimeMaxUse=64M/' ${D}${sysconfdir}/systemd/journald.conf
+
+	# this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
+	# for existence else it fails
+	if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
+		${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
+	fi
+	if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
+		# if resolved is disabled, it won't handle the link of resolv.conf, so
+		# set it up ourselves
+		ln -s ../run/resolv.conf ${D}${sysconfdir}/resolv.conf
+		echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
+		echo 'f /run/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
+	fi
+	install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install
+}
+
+do_install_ptest () {
+       # install data files needed for tests
+       install -d ${D}${PTEST_PATH}/tests/test
+       cp -rfL ${S}/test/* ${D}${PTEST_PATH}/tests/test
+       # python is disabled for systemd, thus removing these python testing scripts
+       rm ${D}${PTEST_PATH}/tests/test/*.py
+       sed -i 's/"tree"/"ls"/' ${D}${PTEST_PATH}/tests/test/udev-test.pl
+
+       install -d ${D}${PTEST_PATH}/tests/catalog
+       install ${S}/catalog/* ${D}${PTEST_PATH}/tests/catalog/
+
+       install -D ${S}/build-aux/test-driver ${D}${PTEST_PATH}/tests/build-aux/test-driver
+
+       install -d ${D}${PTEST_PATH}/tests/rules
+       install ${B}/rules/* ${D}${PTEST_PATH}/tests/rules/
+
+       # This directory needs to be there for udev-test.pl to work.
+       install -d ${D}${libdir}/udev/rules.d
+
+       # install actual test binaries
+       install -m 0755 ${B}/test-* ${D}${PTEST_PATH}/tests/
+       install -m 0755 ${B}/.libs/test-* ${D}${PTEST_PATH}/tests/
+
+       install ${B}/Makefile ${D}${PTEST_PATH}/tests/
+}
+
+python populate_packages_prepend (){
+    systemdlibdir = d.getVar("rootlibdir", True)
+    do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
+}
+PACKAGES_DYNAMIC += "^lib(udev|systemd).*"
+
+PACKAGES =+ "\
+    ${PN}-gui \
+    ${PN}-vconsole-setup \
+    ${PN}-initramfs \
+    ${PN}-analyze \
+    ${PN}-kernel-install \
+    ${PN}-rpm-macros \
+    ${PN}-binfmt \
+    ${PN}-pam \
+    ${PN}-zsh-completion \
+    ${PN}-xorg-xinitrc \
+    ${PN}-container \
+    ${PN}-extra-utils \
+"
+
+SUMMARY_${PN}-container = "Tools for containers and VMs"
+DESCRIPTION_${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
+
+SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)}"
+SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"
+
+USERADD_PACKAGES = "${PN} ${PN}-extra-utils"
+USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M --shell /bin/nologin systemd-journal-gateway;', '', d)}"
+USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M --shell /bin/nologin systemd-journal-remote;', '', d)}"
+USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '--system -d / -M --shell /bin/nologin systemd-journal-upload;', '', d)}"
+USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;', '', d)}"
+USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /bin/nologin systemd-network;', '', d)}"
+USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /bin/nologin systemd-coredump;', '', d)}"
+USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /bin/nologin systemd-resolve;', '', d)}"
+GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal"
+USERADD_PARAM_${PN}-extra-utils += "--system -d / -M --shell /bin/nologin systemd-bus-proxy;"
+
+FILES_${PN}-analyze = "${bindir}/systemd-analyze"
+
+FILES_${PN}-initramfs = "/init"
+RDEPENDS_${PN}-initramfs = "${PN}"
+
+RDEPENDS_${PN}-ptest += "gawk make perl bash xz \
+                         tzdata tzdata-americas tzdata-asia \
+                         tzdata-europe tzdata-africa tzdata-antarctica \
+                         tzdata-arctic tzdata-atlantic tzdata-australia \
+                         tzdata-pacific tzdata-posix"
+
+FILES_${PN}-ptest += "${libdir}/udev/rules.d"
+
+FILES_${PN}-gui = "${bindir}/systemadm"
+
+FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
+                              ${systemd_unitdir}/system/systemd-vconsole-setup.service \
+                              ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service"
+
+RDEPENDS_${PN}-kernel-install += "bash"
+FILES_${PN}-kernel-install = "${bindir}/kernel-install \
+                              ${sysconfdir}/kernel/ \
+                              ${exec_prefix}/lib/kernel \
+                             "
+FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
+                         "
+
+FILES_${PN}-xorg-xinitrc = "${sysconfdir}/X11/xinit/xinitrc.d/*"
+
+FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions"
+
+FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
+                      ${exec_prefix}/lib/binfmt.d \
+                      ${rootlibexecdir}/systemd/systemd-binfmt \
+                      ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \
+                      ${systemd_unitdir}/system/systemd-binfmt.service"
+RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc"
+
+RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
+
+FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
+                         ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
+                         ${base_bindir}/machinectl \
+                         ${bindir}/systemd-nspawn \
+                         ${nonarch_libdir}/systemd/import-pubring.gpg \
+                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \
+                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \
+                         ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \
+                         ${systemd_system_unitdir}/machine.slice \
+                         ${systemd_system_unitdir}/machines.target \
+                         ${systemd_system_unitdir}/org.freedesktop.import1.busname \
+                         ${systemd_system_unitdir}/org.freedesktop.machine1.busname \
+                         ${systemd_system_unitdir}/systemd-importd.service \
+                         ${systemd_system_unitdir}/systemd-machined.service \
+                         ${systemd_system_unitdir}/var-lib-machines.mount \
+                         ${rootlibexecdir}/systemd/systemd-import \
+                         ${rootlibexecdir}/systemd/systemd-importd \
+                         ${rootlibexecdir}/systemd/systemd-journal-gatewayd \
+                         ${rootlibexecdir}/systemd/systemd-journal-remote \
+                         ${rootlibexecdir}/systemd/systemd-journal-upload \
+                         ${rootlibexecdir}/systemd/systemd-machined \
+                         ${rootlibexecdir}/systemd/systemd-pull \
+                         ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
+                         ${systemd_system_unitdir}/systemd-nspawn@.service \
+                         ${libdir}/libnss_mymachines.so.2 \
+                         ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
+                         ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \
+                         ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \
+                         ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
+                        "
+
+FILES_${PN}-extra-utils = "\
+                        ${base_bindir}/systemd-escape \
+                        ${base_bindir}/systemd-inhibit \
+                        ${bindir}/systemd-detect-virt \
+                        ${bindir}/systemd-path \
+                        ${bindir}/systemd-run \
+                        ${bindir}/systemd-cat \
+                        ${bindir}/systemd-delta \
+                        ${bindir}/systemd-cgls \
+                        ${bindir}/systemd-cgtop \
+                        ${bindir}/systemd-stdio-bridge \
+                        ${base_bindir}/systemd-ask-password \
+                        ${base_bindir}/systemd-tty-ask-password-agent \
+                        ${systemd_unitdir}/system/systemd-ask-password-console.path \
+                        ${systemd_unitdir}/system/systemd-ask-password-console.service \
+                        ${systemd_unitdir}/system/systemd-ask-password-wall.path \
+                        ${systemd_unitdir}/system/systemd-ask-password-wall.service \
+                        ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-console.path \
+                        ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-wall.path \
+                        ${systemd_unitdir}/system/multi-user.target.wants/systemd-ask-password-wall.path \
+                        ${rootlibexecdir}/systemd/systemd-resolve-host \
+                        ${rootlibexecdir}/systemd/systemd-ac-power \
+                        ${rootlibexecdir}/systemd/systemd-activate \
+                        ${rootlibexecdir}/systemd/systemd-bus-proxyd \
+                        ${systemd_unitdir}/system/systemd-bus-proxyd.service \
+                        ${systemd_unitdir}/system/systemd-bus-proxyd.socket \
+                        ${rootlibexecdir}/systemd/systemd-socket-proxyd \
+                        ${rootlibexecdir}/systemd/systemd-reply-password \
+                        ${rootlibexecdir}/systemd/systemd-sleep \
+                        ${rootlibexecdir}/systemd/system-sleep \
+                        ${systemd_unitdir}/system/systemd-hibernate.service \
+                        ${systemd_unitdir}/system/systemd-hybrid-sleep.service \
+                        ${systemd_unitdir}/system/systemd-suspend.service \
+                        ${systemd_unitdir}/system/sleep.target \
+                        ${rootlibexecdir}/systemd/systemd-initctl \
+                        ${systemd_unitdir}/system/systemd-initctl.service \
+                        ${systemd_unitdir}/system/systemd-initctl.socket \
+                        ${systemd_unitdir}/system/sockets.target.wants/systemd-initctl.socket \
+                        ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
+                        ${rootlibexecdir}/systemd/systemd-cgroups-agent \
+"
+
+CONFFILES_${PN} = "${sysconfdir}/machine-id \
+                ${sysconfdir}/systemd/coredump.conf \
+                ${sysconfdir}/systemd/journald.conf \
+                ${sysconfdir}/systemd/logind.conf \
+                ${sysconfdir}/systemd/system.conf \
+                ${sysconfdir}/systemd/user.conf"
+
+FILES_${PN} = " ${base_bindir}/* \
+                ${datadir}/dbus-1/services \
+                ${datadir}/dbus-1/system-services \
+                ${datadir}/polkit-1 \
+                ${datadir}/${BPN} \
+                ${datadir}/factory \
+                ${sysconfdir}/dbus-1/ \
+                ${sysconfdir}/machine-id \
+                ${sysconfdir}/modules-load.d/ \
+                ${sysconfdir}/pam.d/ \
+                ${sysconfdir}/sysctl.d/ \
+                ${sysconfdir}/systemd/ \
+                ${sysconfdir}/tmpfiles.d/ \
+                ${sysconfdir}/xdg/ \
+                ${sysconfdir}/init.d/README \
+                ${sysconfdir}/resolv.conf \
+                ${rootlibexecdir}/systemd/* \
+                ${systemd_unitdir}/* \
+                ${base_libdir}/security/*.so \
+                ${libdir}/libnss_* \
+                /cgroup \
+                ${bindir}/systemd* \
+                ${bindir}/busctl \
+                ${bindir}/coredumpctl \
+                ${bindir}/localectl \
+                ${bindir}/hostnamectl \
+                ${bindir}/timedatectl \
+                ${bindir}/bootctl \
+                ${bindir}/kernel-install \
+                ${exec_prefix}/lib/tmpfiles.d/*.conf \
+                ${exec_prefix}/lib/systemd \
+                ${exec_prefix}/lib/modules-load.d \
+                ${exec_prefix}/lib/sysctl.d \
+                ${exec_prefix}/lib/sysusers.d \
+                ${localstatedir} \
+                ${nonarch_base_libdir}/udev/rules.d/70-uaccess.rules \
+                ${nonarch_base_libdir}/udev/rules.d/71-seat.rules \
+                ${nonarch_base_libdir}/udev/rules.d/73-seat-late.rules \
+                ${nonarch_base_libdir}/udev/rules.d/99-systemd.rules \
+               "
+
+FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
+
+RDEPENDS_${PN} += "kmod dbus util-linux-mount udev (= ${EXTENDPKGV})"
+RDEPENDS_${PN} += "volatile-binds update-rc.d"
+
+RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)} \
+                      systemd-vconsole-setup \
+                      systemd-extra-utils \
+                      systemd-compat-units udev-hwdb \
+                      util-linux-agetty  util-linux-fsck e2fsprogs-e2fsck \
+                      kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \
+                      os-release \
+"
+
+INSANE_SKIP_${PN}-doc += " libdir"
+
+PACKAGES =+ "udev udev-hwdb"
+
+RPROVIDES_udev = "hotplug"
+
+RDEPENDS_udev-hwdb += "udev"
+
+FILES_udev += "${base_sbindir}/udevd \
+               ${rootlibexecdir}/systemd/systemd-udevd \
+               ${rootlibexecdir}/udev/accelerometer \
+               ${rootlibexecdir}/udev/ata_id \
+               ${rootlibexecdir}/udev/cdrom_id \
+               ${rootlibexecdir}/udev/collect \
+               ${rootlibexecdir}/udev/findkeyboards \
+               ${rootlibexecdir}/udev/keyboard-force-release.sh \
+               ${rootlibexecdir}/udev/keymap \
+               ${rootlibexecdir}/udev/mtd_probe \
+               ${rootlibexecdir}/udev/scsi_id \
+               ${rootlibexecdir}/udev/v4l_id \
+               ${rootlibexecdir}/udev/keymaps \
+               ${rootlibexecdir}/udev/rules.d/*.rules \
+               ${sysconfdir}/udev \
+               ${sysconfdir}/init.d/systemd-udevd \
+               ${systemd_unitdir}/system/*udev* \
+               ${systemd_unitdir}/system/*.wants/*udev* \
+               ${base_bindir}/udevadm \
+               ${datadir}/bash-completion/completions/udevadm \
+              "
+
+FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d"
+
+INITSCRIPT_PACKAGES = "udev"
+INITSCRIPT_NAME_udev = "systemd-udevd"
+INITSCRIPT_PARAMS_udev = "start 03 S ."
+
+python __anonymous() {
+    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+}
+
+# TODO:
+# u-a for runlevel and telinit
+
+ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel"
+
+ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd"
+ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
+ALTERNATIVE_PRIORITY[init] ?= "300"
+
+ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
+ALTERNATIVE_PRIORITY[halt] ?= "300"
+
+ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
+ALTERNATIVE_PRIORITY[reboot] ?= "300"
+
+ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
+ALTERNATIVE_PRIORITY[shutdown] ?= "300"
+
+ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
+ALTERNATIVE_PRIORITY[poweroff] ?= "300"
+
+ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
+ALTERNATIVE_PRIORITY[runlevel] ?= "300"
+
+pkg_postinst_${PN} () {
+	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
+		-e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
+		-i $D${sysconfdir}/nsswitch.conf
+}
+
+pkg_prerm_${PN} () {
+	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
+		-e '/^hosts:/s/\s*myhostname//' \
+		-i $D${sysconfdir}/nsswitch.conf
+}
+
+pkg_postinst_udev-hwdb () {
+	if test -n "$D"; then
+		${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \
+			--root $D
+		chown root:root $D${sysconfdir}/udev/hwdb.bin
+	else
+		udevadm hwdb --update
+	fi
+}
+
+pkg_prerm_udev-hwdb () {
+	rm -f $D${sysconfdir}/udev/hwdb.bin
+}
+
+# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
+# that we don't build both udev and systemd in world builds.
+python () {
+    if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+        raise bb.parse.SkipPackage("'systemd' not in DISTRO_FEATURES")
+
+    import re
+    if re.match('.*musl*', d.getVar('TARGET_OS', True)) != None:
+        raise bb.parse.SkipPackage("Not _yet_ supported on musl based targets")
+}
diff --git a/import-layers/yocto-poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/import-layers/yocto-poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
index c5b8cdc..f136ad8 100644
--- a/import-layers/yocto-poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
@@ -26,7 +26,8 @@
     for i in $tmp
     do
 	j=`echo ${i} | sed s/\;/\ /g`
-	label=`echo ${i} | sed -e 's/tty//' -e 's/^.*;//' -e 's/;.*//'`
+	l=`echo ${i} | sed -e 's/tty//' -e 's/^.*;//' -e 's/;.*//'`
+	label=`echo $l | sed 's/.*\(....\)/\1/'`
 	echo "$label:12345:respawn:${base_bindir}/start_getty ${j}" >> ${D}${sysconfdir}/inittab
     done
 
@@ -57,9 +58,12 @@
 	tmp="${SERIAL_CONSOLES_CHECK}"
 	for i in $tmp
 	do
-		j=`echo ${i} | sed s/^.*\;//g`
+		j=`echo ${i} | sed -e s/^.*\;//g -e s/\:.*//g`
+		k=`echo ${i} | sed s/^.*\://g`
 		if [ -z "`grep ${j} /proc/consoles`" ]; then
-			sed -i /^.*${j}$/d /etc/inittab
+			if [ -z "${k}" ] || [ -z "`grep ${k} /proc/consoles`" ] || [ ! -e /dev/${j} ]; then
+				sed -i /^.*${j}$/d /etc/inittab
+			fi
 		fi
 	done
 	kill -HUP 1
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/funcs b/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/funcs
deleted file mode 100644
index ccc8539..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/funcs
+++ /dev/null
@@ -1,474 +0,0 @@
-a64l
-abs
-access
-__adjtimex
-alarm
-alphasort
-argz_append
-__argz_count
-argz_create_sep
-argz_insert
-__argz_next
-argz_next
-__argz_stringify
-argz_stringify
-asprintf
-atexit
-atof
-atoi
-bcmp
-bcopy
-bindresvport
-bind_textdomain_codeset
-btowc
-bzero
-calloc
-canonicalize_file_name
-catgets
-cfgetospeed
-cfsetispeed
-cfsetspeed
-chmod
-chown
-chroot
-clock
-close
-closedir
-closelog
-confstr
-connect
-daemon
-dcgettext
-difftime
-dirfd
-dirname
-dngettext
-dup2
-ecvt
-endgrent
-endmntent
-endpwent
-endutent
-endutxent
-epoll_ctl
-err
-ether_hostton
-ether_ntohost
-euidaccess
-execv
-fchdir
-fchmod
-fchmodat
-fchown
-fchownat
-fcntl
-fcvt
-fdatasync
-fdopendir
-feof_unlocked
-fgets_unlocked
-fgetxattr
-finite
-flistxattr
-flock
-flockfile
-fnmatch
-fork
-fpathconf
-__fpending
-fprintf
-free
-freeaddrinfo
-freeifaddrs
-fseeko
-__fsetlocking
-fsetxattr
-fstat64
-fstat
-fstatfs
-fsync
-ftello
-ftime
-ftruncate
-funlockfile
-futimes
-futimesat
-gai_strerror
-gcvt
-getaddrinfo
-getc_unlocked
-getcwd
-getdelim
-getdomainname
-getdtablesize
-getegid
-getenv
-geteuid
-getgid
-getgrent
-getgrent_r
-getgrgid_r
-getgrnam
-getgrnam_r
-getgrouplist
-getgroups
-gethostbyaddr_r
-gethostbyname2
-gethostbyname
-gethostbyname_r
-gethostent
-gethostid
-gethostname
-getifaddrs
-getline
-getloadavg
-getmntent
-getmsg
-getnameinfo
-getnetbyaddr_r
-getnetgrent_r
-getopt
-getopt_long
-getopt_long_only
-getpagesize
-getpass
-getpeername
-getpgrp
-getpid
-getppid
-getprotoent_r
-getpwent
-getpwent_r
-getpwnam
-getpwnam_r
-getpwuid
-getpwuid_r
-getresuid
-getrlimit
-getrusage
-getservbyname
-getservbyname_r
-getservbyport_r
-getservent
-getservent_r
-getspnam
-getspnam_r
-gettimeofday
-getttyent
-getttynam
-getuid
-getusershell
-getutent
-getutid
-getutline
-getutmp
-getutmpx
-getutxent
-getutxid
-getutxline
-getwd
-getxattr
-glob
-gmtime
-gmtime_r
-grantpt
-group_member
-herror
-hstrerror
-iconv
-iconv_open
-if_freenameindex
-if_indextoname
-if_nameindex
-if_nametoindex
-index
-inet_addr
-inet_aton
-inet_ntoa
-inet_ntop
-inet_pton
-initgroups
-innetgr
-iruserok
-isascii
-isatty
-isblank
-isgraph
-isinf
-isnan
-isprint
-isspace
-iswalnum
-iswcntrl
-iswctype
-iswprint
-iswspace
-iswupper
-isxdigit
-kill
-killpg
-lchown
-lckpwdf
-lgetxattr
-link
-listxattr
-llistxattr
-localtime
-localtime_r
-lockf
-lrand48
-lsearch
-lseek64
-lsetxattr
-lstat
-mallinfo
-malloc
-mblen
-mbrlen
-mbrtowc
-mbsinit
-mbsrtowcs
-mbtowc
-memalign
-memchr
-memcmp
-memcpy
-memmove
-mempcpy
-memrchr
-memset
-mkdir
-mkdirat
-mkdtemp
-mkfifo
-mknod
-mkstemp64
-mkstemp
-mktime
-mlock
-mmap
-mtrace
-munlock
-munmap
-nanosleep
-nice
-nl_langinfo
-ntp_adjtime
-ntp_gettime
-_obstack_free
-on_exit
-open64
-open
-openat
-opendir
-openlog
-pathconf
-pipe
-poll
-popen
-posix_memalign
-prctl
-pread
-printf
-__progname
-pselect
-pthread_mutex_lock
-ptsname
-putenv
-putgrent
-putpwent
-putspent
-pututline
-pututxline
-putwc
-pwrite
-qsort
-raise
-rand
-random
-rand_r
-read
-readdir
-readdir_r
-readlink
-realloc
-realpath
-re_comp
-recvmsg
-re_exec
-regcomp
-regexec
-remove
-rename
-re_search
-rmdir
-rpmatch
-rresvport_af
-ruserok
-ruserok_af
-sbrk
-scandir
-sched_setscheduler
-sched_yield
-__secure_getenv
-select
-semctl
-semget
-sendmsg
-setbuf
-setbuffer
-setegid
-setenv
-seteuid
-setgid
-setgroups
-sethostname
-setitimer
-_setjmp
-setjmp
-setlinebuf
-setlocale
-setmntent
-setpgid
-setpgrp
-setpriority
-setregid
-setresgid
-setresuid
-setreuid
-setrlimit
-setsid
-setsockopt
-settimeofday
-setuid
-setutent
-setutxent
-setvbuf
-setxattr
-sgetspent
-shmat
-shmctl
-shmdt
-shmget
-shutdown
-sigaction
-sigaddset
-sigaltstack
-sigblock
-sigemptyset
-sighold
-siginterrupt
-signal
-sigprocmask
-sigset
-sigsetmask
-sigstack
-sigsuspend
-sigvec
-snprintf
-socket
-socketpair
-sprintf
-srand48
-srand
-srandom
-sscanf
-stat
-statfs
-statvfs
-stime
-stpcpy
-strcasecmp
-strcasestr
-strchr
-strchrnul
-strcmp
-strcspn
-strdup
-strerror
-strerror_r
-strftime
-strlen
-strncasecmp
-strncmp
-strndup
-strnlen
-strpbrk
-strptime
-strrchr
-strsep
-strsignal
-strspn
-strstr
-strtod
-strtoimax
-strtok_r
-strtol
-strtoll
-strtoul
-strtoull
-strtoumax
-strverscmp
-strxfrm
-symlink
-sync
-sysconf
-sysctl
-sysinfo
-syslog
-_sys_siglist
-sys_siglist
-system
-tcgetattr
-tcgetpgrp
-tcsetattr
-tcsetpgrp
-time
-timegm
-times
-timezone
-tmpnam
-towlower
-towupper
-truncate
-tsearch
-ttyname
-tzset
-ulimit
-umask
-uname
-unlink
-unsetenv
-unshare
-updwtmp
-updwtmpx
-usleep
-ustat
-utime
-utimes
-utmpname
-utmpxname
-valloc
-vasprintf
-verrx
-vfork
-vfprintf
-vfscanf
-vhangup
-vprintf
-vsnprintf
-vsprintf
-wait3
-wait4
-waitpid
-wcrtomb
-wcscoll
-wcsdup
-wcslen
-wctob
-wctomb
-wctype
-wcwidth
-wmemchr
-wmemcpy
-wmempcpy
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/headers b/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/headers
deleted file mode 100644
index 609ab53..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/headers
+++ /dev/null
@@ -1,156 +0,0 @@
-aio.h
-alloca.h
-argz.h
-arpa/inet.h
-arpa/nameser.h
-asm/byteorder.h
-asm/ioctls.h
-asm/page.h
-asm/types.h
-assert.h
-byteswap.h
-crypt.h
-ctype.h
-dirent.h
-dlfcn.h
-elf.h
-endian.h
-err.h
-errno.h
-execinfo.h
-fcntl.h
-features.h
-float.h
-fstab.h
-ftw.h
-getopt.h
-glob.h
-grp.h
-iconv.h
-ifaddrs.h
-inttypes.h
-langinfo.h
-lastlog.h
-libgen.h
-libintl.h
-limits.h
-linux/capability.h
-linux/fd.h
-linux/fs.h
-linux/hayesesp.h
-linux/hdreg.h
-linux/icmp.h
-linux/in6.h
-linux/joystick.h
-linux/ptrace.h
-linux/serial.h
-linux/sonypi.h
-linux/unistd.h
-linux/utsname.h
-linux/version.h
-locale.h
-malloc.h
-math.h
-mcheck.h
-memory.h
-mntent.h
-mqueue.h
-netdb.h
-net/if.h
-netinet/ether.h
-netinet/in.h
-netinet/ip6.h
-netinet/ip.h
-netinet/tcp.h
-netinet/udp.h
-netipx/ipx.h
-net/route.h
-paths.h
-poll.h
-pthread.h
-pty.h
-pwd.h
-regex.h
-resolv.h
-rpc/rpc.h
-rpc/types.h
-sched.h
-scsi/scsi.h
-search.h
-semaphore.h
-setjmp.h
-sgtty.h
-shadow.h
-signal.h
-stdarg.h
-stdbool.h
-stdc
-stddef.h
-stdint.h
-stdio.h
-stdlib.h
-string.h
-strings.h
-stropts.h
-sys/bitypes.h
-sys/cdefs.h
-sys/dir.h
-sys/epoll.h
-sysexits.h
-sys/fcntl.h
-sys/file.h
-sys/fsuid.h
-sys/ioctl.h
-sys/ipc.h
-syslog.h
-sys/mman.h
-sys/mount.h
-sys/mtio.h
-sys/param.h
-sys/poll.h
-sys/prctl.h
-sys/ptrace.h
-sys/queue.h
-sys/reg.h
-sys/resource.h
-sys/select.h
-sys/sem.h
-sys/shm.h
-sys/signal.h
-sys/socket.h
-sys/socketvar.h
-sys/soundcard.h
-sys/statfs.h
-sys/stat.h
-sys/statvfs.h
-sys/stropts.h
-sys/swap.h
-sys/sysctl.h
-sys/sysinfo.h
-sys/sysmacros.h
-sys/termios.h
-sys/timeb.h
-sys/time.h
-sys/times.h
-sys/timex.h
-sys/types.h
-sys/uio.h
-sys/un.h
-sys/unistd.h
-sys/user.h
-sys/utsname.h
-sys/vfs.h
-sys/wait.h
-termio.h
-termios.h
-time.h
-ttyent.h
-ulimit.h
-unistd.h
-ustat.h
-utime.h
-utmp.h
-utmpx.h
-values.h
-wchar.h
-wctype.h
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/types b/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/types
deleted file mode 100644
index 178bd85..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/site_config/types
+++ /dev/null
@@ -1,21 +0,0 @@
-char
-char *
-double
-float
-int
-long
-long double
-long int
-long long
-long long int
-short
-short int
-signed char
-unsigned char
-unsigned int
-unsigned long
-unsigned long int
-unsigned long long int
-unsigned short
-unsigned short int
-void *
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-config.inc b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-config.inc
deleted file mode 100644
index ed7b522..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-config.inc
+++ /dev/null
@@ -1,143 +0,0 @@
-DEPENDS += "kern-tools-native"
-inherit cml1
-#
-# Set the ARCH environment variable for uClibc compilation.
-# Return value must match one of the architectures known to uClibc:
-# libc/sysdeps/*/*
-#
-
-valid_archs = "\
-alpha \
-arm \
-avr32 \
-bfin \
-c6x \
-cris \
-e1 \
-frv \
-h8300 \
-hppa \
-i386 \
-i960 \
-ia64 \
-m68k \
-microblaze \
-mips \
-nios \
-nios2 \
-powerpc \
-sh \
-sh64 \
-sparc \
-v850 \
-vax \
-x86_64 \
-xtensa \
-"
-def map_uclibc_arch(a, d):
-    """Return the uClibc architecture for the given TARGET_ARCH."""
-    import re
-
-    valid_archs = d.getVar('valid_archs', True).split()
-
-    if re.match('^(arm|sa110).*', a):
-        return 'arm'
-    elif re.match('^(i.86|athlon)$', a):
-        return 'i386'
-    elif re.match('^mips.*', a):
-        return 'mips'
-    elif re.match('^parisc.*', a):
-        return 'hppa'
-    elif re.match('^ppc.*', a):
-        return 'powerpc'
-    elif re.match('^s390.*', a):
-        return 's390'
-    elif re.match('^sh.*', a):
-        return 'sh'
-    elif re.match('^(sun|sparc).*', a):
-        return 'sparc'
-    elif re.match('^xtensa.*', a):
-        return 'xtensa'
-    elif a in valid_archs:
-        return a
-    else:
-        bb.error("cannot map '%s' to a uClibc architecture" % a)
-
-export UCLIBC_ARCH = "${@map_uclibc_arch(d.getVar('TARGET_ARCH', True), d)}"
-
-def map_uclibc_abi(o, d):
-    """Return the uClibc ABI for the given TARGET_OS."""
-    import re
-
-    arch = d.getVar('TARGET_ARCH', True)
-    if map_uclibc_arch(d.getVar('TARGET_ARCH', True), d) == "arm":
-        if re.match('.*eabi$', o):
-            return 'ARM_EABI'
-        else:
-            return 'ARM_OABI'
-    # FIXME: This is inaccurate! Handle o32, n32, n64
-    elif re.match('^mips.*64$', arch):
-        return 'MIPS_N64_ABI'
-    elif re.match('^mips.*', arch):
-        return 'MIPS_O32_ABI'
-    return ""
-
-export UCLIBC_ABI = "${@map_uclibc_abi(d.getVar('TARGET_OS', True), d)}"
-
-def map_uclibc_endian(a, d):
-    """Return the uClibc endianess for the given TARGET_ARCH."""
-    import re
-
-    # Always BE
-    if re.match('^(avr32|e1|frv|(parisc|hppa)|m68k|microblaze|powerpc.*|(sparc|sun).*)$', a):
-        return 'BIG'
-    # Possibly BE
-    elif re.match('^(((arm|sa110).*eb)|h8300.*eb|(parisc|hppa).*eb|mips|mips64|sh.*eb|xtensa.*eb)$', a):
-        return 'BIG'
-    return 'LITTLE'
-
-export UCLIBC_ENDIAN = "${@map_uclibc_endian(d.getVar('TARGET_ARCH', True), d)}"
-
-# internal helper
-def uclibc_cfg(feature, features, tokens, cnf, rem):
-    if type(tokens) == type(""):
-        tokens = [tokens]
-    rem.extend(['/^[# ]*' + token + '[ =]/d' for token in tokens])
-    if type(features) == type([]) and feature in features:
-        cnf.extend([token + '=y' for token in tokens])
-    else:
-        cnf.extend(['# ' + token + ' is not set' for token in tokens])
-
-# Map distro features to config settings
-def features_to_uclibc_settings(d):
-    cnf, rem = ([], [])
-    distro_features = d.getVar('DISTRO_FEATURES', True).split()
-    uclibc_cfg('ipv4',      distro_features, 'UCLIBC_HAS_IPV4', cnf, rem)
-    uclibc_cfg('ipv6',      distro_features, 'UCLIBC_HAS_IPV6', cnf, rem)
-    uclibc_cfg('largefile', distro_features, 'UCLIBC_HAS_LFS', cnf, rem)
-    uclibc_cfg('nls',       distro_features, 'UCLIBC_HAS_LOCALE', cnf, rem)
-    uclibc_cfg('thumb-interwork', distro_features,'USE_BX', cnf, rem)
-    uclibc_cfg('xattr',     distro_features, 'UCLIBC_HAS_XATTR', cnf, rem)
-    uclibc_cfg('ssp',       distro_features, 'UCLIBC_HAS_SSP', cnf, rem)
-    uclibc_cfg('ssp',       distro_features, 'UCLIBC_BUILD_SSP', cnf, rem)
-    uclibc_cfg('argp',       distro_features, 'UCLIBC_HAS_ARGP', cnf, rem)
-    uclibc_cfg('libc-posix-clang-wchar',  distro_features,'UCLIBC_HAS_WCHAR', cnf, rem)
-    return "\n".join(cnf), "\n".join(rem)
-# X, Y = ${@features_to_uclibc_settings(d)}
-# unfortunately doesn't seem to work with bitbake, workaround:
-def features_to_uclibc_conf(d):
-    cnf, rem = features_to_uclibc_settings(d)
-    return cnf
-def features_to_uclibc_del(d):
-    cnf, rem = features_to_uclibc_settings(d)
-    return rem
-
-# returns all the elements from the src uri that are .cfg files
-def find_cfgs(d):
-    sources=src_patches(d, True)
-    sources_list=[]
-    for s in sources:
-        if s.endswith('.cfg'):
-            sources_list.append(s)
-
-    return sources_list
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc
deleted file mode 100644
index a56fa7c..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-SRCREV = "003b266cbeb370a8eae91dc256197f00798c6f93"
-
-PV = "1.0.12+git${SRCPV}"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/uclibc-git:"
-
-SRC_URI = "git://uclibc-ng.org/git/uclibc-ng \
-        file://0001-Disable-lrount_tes-function.patch \
-        file://uClibc.machine \
-        file://uClibc.distro \
-        file://obstack.cfg \
-        file://locale.cfg \
-"
-S = "${WORKDIR}/git"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-Disable-lrount_tes-function.patch b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-Disable-lrount_tes-function.patch
deleted file mode 100644
index 506f146..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-Disable-lrount_tes-function.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 14b865b3438d0df29b4969148678d8fa8943e1ef Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 16 Aug 2015 20:49:33 -0700
-Subject: [PATCH 1/7] Disable lrount_tes() function
-
-Its not used anyway, avoids some strict compiler warnings
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- test/math/libm-test.inc | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/test/math/libm-test.inc b/test/math/libm-test.inc
-index f50b48b..6d70a95 100644
---- a/test/math/libm-test.inc
-+++ b/test/math/libm-test.inc
-@@ -3470,7 +3470,6 @@ logb_test (void)
- }
- 
- 
--#if 0
- static void
- lround_test (void)
- {
-@@ -3605,7 +3604,6 @@ llround_test (void)
- 
-   END (llround);
- }
--#endif
- 
- static void
- modf_test (void)
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/locale.cfg b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/locale.cfg
deleted file mode 100644
index fc66435..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/locale.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-UCLIBC_HAS_LOCALE=y
-UCLIBC_HAS_XLOCALE=y
-UCLIBC_BUILD_MINIMAL_LOCALE=y
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/obstack.cfg b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/obstack.cfg
deleted file mode 100644
index 36bf9d6..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/obstack.cfg
+++ /dev/null
@@ -1 +0,0 @@
-UCLIBC_HAS_OBSTACK=y
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.distro b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.distro
deleted file mode 100644
index 7785ce8..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.distro
+++ /dev/null
@@ -1,195 +0,0 @@
-#
-# General Library Settings
-#
-# HAVE_NO_PIC is not set
-# DOPIC is not set
-# HAVE_NO_SHARED is not set
-# ARCH_HAS_NO_LDSO is not set
-HAVE_SHARED=y
-# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
-LDSO_LDD_SUPPORT=y
-LDSO_CACHE_SUPPORT=y
-# LDSO_PRELOAD_FILE_SUPPORT is not set
-LDSO_BASE_FILENAME="ld.so"
-# UCLIBC_STATIC_LDCONFIG is not set
-LDSO_RUNPATH=y
-UCLIBC_CTOR_DTOR=y
-LDSO_GNU_HASH_SUPPORT=y
-# HAS_NO_THREADS is not set
-UCLIBC_HAS_THREADS=y
-UCLIBC_HAS_THREADS_NATIVE=y
-PTHREADS_DEBUG_SUPPORT=y
-# LINUXTHREADS_OLD is not set
-UCLIBC_HAS_LFS=y
-# MALLOC is not set
-# MALLOC_SIMPLE is not set
-MALLOC_STANDARD=y
-MALLOC_GLIBC_COMPAT=y
-UCLIBC_DYNAMIC_ATEXIT=y
-COMPAT_ATEXIT=y
-UCLIBC_SUSV3_LEGACY=y
-UCLIBC_SUSV3_LEGACY_MACROS=y
-UCLIBC_SUSV4_LEGACY=y
-UCLIBC_HAS_SHADOW=y
-UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
-UCLIBC_HAS___PROGNAME=y
-UNIX98PTY_ONLY=y
-ASSUME_DEVPTS=y
-UCLIBC_HAS_LIBUTIL=y
-UCLIBC_HAS_TM_EXTENSIONS=y
-UCLIBC_HAS_TZ_CACHING=y
-UCLIBC_HAS_TZ_FILE=y
-UCLIBC_HAS_TZ_FILE_READ_MANY=y
-UCLIBC_TZ_FILE_PATH="/etc/TZ"
-
-#
-# Advanced Library Settings
-#
-UCLIBC_PWD_BUFFER_SIZE=256
-UCLIBC_GRP_BUFFER_SIZE=256
-
-#
-# Networking Support
-#
-UCLIBC_HAS_IPV6=y
-UCLIBC_HAS_RPC=y
-UCLIBC_HAS_FULL_RPC=y
-UCLIBC_HAS_REENTRANT_RPC=y
-UCLIBC_USE_NETLINK=y
-UCLIBC_SUPPORT_AI_ADDRCONFIG=y
-
-UCLIBC_HAS_BSD_RES_CLOSE=y
-UCLIBC_HAS_LIBRESOLV_STUB=y
-UCLIBC_HAS_LIBNSL_STUB=y
-
-#
-# String and Stdio Support
-#
-UCLIBC_HAS_STRING_GENERIC_OPT=y
-UCLIBC_HAS_STRING_ARCH_OPT=y
-UCLIBC_HAS_CTYPE_TABLES=y
-UCLIBC_HAS_CTYPE_SIGNED=y
-# UCLIBC_HAS_CTYPE_UNSAFE is not set
-UCLIBC_HAS_CTYPE_CHECKED=y
-# UCLIBC_HAS_CTYPE_ENFORCED is not set
-UCLIBC_HAS_WCHAR=y
-# UCLIBC_HAS_LOCALE is not set
-UCLIBC_HAS_HEXADECIMAL_FLOATS=y
-UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
-UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
-UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
-# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
-UCLIBC_HAS_STDIO_BUFSIZ_4096=y
-# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
-UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
-# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
-UCLIBC_HAS_STDIO_GETC_MACRO=y
-UCLIBC_HAS_STDIO_PUTC_MACRO=y
-UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
-# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
-UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
-UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
-UCLIBC_HAS_PRINTF_M_SPEC=y
-UCLIBC_HAS_ERRNO_MESSAGES=y
-# UCLIBC_HAS_SYS_ERRLIST is not set
-UCLIBC_HAS_SIGNUM_MESSAGES=y
-# UCLIBC_HAS_SYS_SIGLIST is not set
-UCLIBC_HAS_GNU_GETOPT=y
-UCLIBC_HAS_GNU_GETSUBOPT=y
-
-#
-# Big and Tall
-#
-UCLIBC_HAS_REGEX=y
-# UCLIBC_HAS_REGEX_OLD is not set
-UCLIBC_HAS_FNMATCH=y
-# UCLIBC_HAS_FNMATCH_OLD is not set
-UCLIBC_HAS_WORDEXP=y
-UCLIBC_HAS_NFTW=y
-UCLIBC_HAS_FTW=y
-UCLIBC_HAS_FTS=y
-UCLIBC_HAS_GLOB=y
-UCLIBC_HAS_GNU_GLOB=y
-
-#
-# Library Installation Options
-#
-SHARED_LIB_LOADER_PREFIX="/lib"
-RUNTIME_PREFIX="/"
-DEVEL_PREFIX="//usr"
-MULTILIB_DIR="lib"
-
-#
-# Security options
-#
-# UCLIBC_BUILD_PIE is not set
-# UCLIBC_HAS_ARC4RANDOM is not set
-# HAVE_NO_SSP is not set
-# UCLIBC_HAS_SSP is not set
-UCLIBC_BUILD_RELRO=y
-UCLIBC_BUILD_NOW=y
-UCLIBC_BUILD_NOEXECSTACK=y
-
-#
-# uClibc development/debugging options
-#
-CROSS_COMPILER_PREFIX=""
-UCLIBC_EXTRA_CFLAGS=""
-# DODEBUG is not set
-# DODEBUG_PT is not set
-# DOSTRIP is not set
-# DOASSERTS is not set
-# SUPPORT_LD_DEBUG is not set
-# SUPPORT_LD_DEBUG_EARLY is not set
-# UCLIBC_MALLOC_DEBUGGING is not set
-UCLIBC_HAS_BACKTRACE=y
-WARNINGS="-Wall"
-# EXTRA_WARNINGS is not set
-# DOMULTI is not set
-# UCLIBC_MJN3_ONLY is not set
-
-# math stuff for perl
-DO_C99_MATH=y
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
-UCLIBC_HAS_FENV=y
-UCLIBC_LINUX_MODULE_26=y
-# UCLIBC_LINUX_MODULE_24 is not set
-UCLIBC_LINUX_SPECIFIC=y
-UCLIBC_HAS_REALTIME=y
-UCLIBC_HAS_ADVANCED_REALTIME=y
-UCLIBC_HAS_NETWORK_SUPPORT=y
-UCLIBC_HAS_SOCKET=y
-UCLIBC_HAS_BSD_ERR=y
-UCLIBC_HAS_SYSLOG=y
-UCLIBC_HAS_CRYPT=y
-UCLIBC_HAS_CRYPT_IMPL=y
-UCLIBC_HAS_GNU_ERROR=y
-UCLIBC_HAS_PTY=y
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_HAS_EPOLL=y
-UCLIBC_HAS_FLOATS=y
-
-# The below option is needed for ARM since depending
-# upong what intruction set is chosen this will be
-# enabled. As such it is harmless and will be punted
-# by menuconfig for other arches.
-
-# COMPILE_IN_THUMB_MODE is not set
-
-# needed by shadow
-UCLIBC_HAS_UTMP=y
-# needed by systemd
-UCLIBC_HAS_UTMPX=y
-UCLIBC_LINUX_MODULE_26=y
-UCLIBC_HAS_RESOLVER_SUPPORT=y
-# needed for LTP
-UCLIBC_SUSV4_LEGACY=y
-UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
-DO_XSI_MATH=y
-UCLIBC_SV4_DEPRECATED=y
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.machine b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.machine
deleted file mode 100644
index 595f444..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.machine
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Version: 0.9.32-git
-# Mon Jul 19 01:34:29 2010
-#
-#
-# Using ELF file format
-#
-FORCE_OPTIONS_FOR_ARCH=y
-ARCH_HAS_MMU=y
-ARCH_USE_MMU=y
-KERNEL_HEADERS="/usr/include"
-HAVE_DOT_CONFIG=y
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-initial_git.bb b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-initial_git.bb
deleted file mode 100644
index c937ccb..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-initial_git.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SECTION = "base"
-require uclibc.inc
-require uclibc-git.inc
-
-DEPENDS = "linux-libc-headers ncurses-native virtual/${TARGET_PREFIX}gcc-initial libgcc-initial kern-tools-native"
-PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
-
-PACKAGES = ""
-PACKAGES_DYNAMIC = ""
-
-STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
-STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
-
-do_install() {
-	# Install initial headers into the cross dir
-	make PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
-		install_headers install_startfiles
-
-        # add links to linux-libc-headers: final uclibc build need this.
-        for t in linux asm asm-generic; do
-                if [ -d ${D}${includedir}/$t ]; then
-                    rm -rf ${D}${includedir}/$t
-                fi
-                ln -sf ${STAGING_DIR_TARGET}${includedir}/$t ${D}${includedir}/
-        done
-
-}
-do_compile() {
-	:
-}
-
-do_siteconfig () {
-        :
-}
-
-do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_TCBOOTSTRAP}/"
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-package.inc b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-package.inc
deleted file mode 100644
index 439f84e..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc-package.inc
+++ /dev/null
@@ -1,36 +0,0 @@
-# Ensure the uclibc-dev package is processed before uclibc-staticdev to allow
-# *_nonshared.a libraries to be packaged in the uclibc-dev package.
-PACKAGES = "ldd uclibc-utils uclibc-gconv uclibc-thread-db uclibc-argp uclibc-backtrace uclibc-libcrypt uclibc-libintl uclibc-libnsl uclibc-libresolv uclibc-libm uclibc-libdl uclibc-libutil uclibc-libpthread uclibc-librt ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}"
-
-FILES_uclibc-libcrypt = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so"
-FILES_uclibc-libintl = "${base_libdir}/libintl*.so.* ${base_libdir}/libintl-*.so"
-FILES_uclibc-libnsl = "${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so"
-FILES_uclibc-libresolv = "${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so"
-FILES_uclibc-libm = "${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so"
-FILES_uclibc-libdl = "${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so"
-FILES_uclibc-libutil = "${base_libdir}/libutil*.so.* ${base_libdir}/libutil-*.so"
-FILES_uclibc-libpthread = "${base_libdir}/libpthread*.so.* ${base_libdir}/libpthread-*.so"
-FILES_uclibc-librt = "${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so"
-
-FILES_ldd = "${bindir}/ldd"
-FILES_uclibc-utils = "${bindir} ${sbindir}"
-FILES_uclibc-gconv = "${libdir}/gconv"
-FILES_uclibc-thread-db = "${base_libdir}/libthread_db*"
-FILES_uclibc-argp = "${base_libdir}/libuargp-*.so ${base_libdir}/libuargp*.so.*"
-FILES_uclibc-backtrace = "${base_libdir}/libubacktrace-*.so ${base_libdir}/libubacktrace*.so.*"
-
-# The last line (gdb and lib1) is for uclinux-uclibc builds
-uclibc_baselibs = "${base_libdir}/ld*.so.* ${base_libdir}/ld*.so \
-                   ${base_libdir}/libc*.so.* ${base_libdir}/libuClibc-*.so \
-                   ${libdir}/libc.gdb ${libdir}/libc ${base_libdir}/lib1.so \
-                  "
-FILES_SOLIBSDEV = "${libdir}/lib*${SOLIBSDEV}"
-FILES_${PN}-dev += "\
-        ${libdir}/lib*.so \
-        ${libdir}/*_nonshared.a \
-        ${libdir}/[S]*crt[1in].o \
-        ${libdir}/crtreloc*.o \
-        ${includedir}/*.h ${includedir}/*/*.h \
-       "
-FILES_${PN} = "${sysconfdir} ${uclibc_baselibs} /sbin/ldconfig \
-               ${libexecdir} ${datadir}/zoneinfo ${libdir}/locale"
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc.inc b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc.inc
deleted file mode 100644
index 1d42284..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc.inc
+++ /dev/null
@@ -1,168 +0,0 @@
-SUMMARY = "C library for embedded systems"
-DESCRIPTION = "The name uClibc is an abbreviation for 'the \
-microcontroller C library'. For simplicity, uClibc is pronounced \
-'yew-see-lib-see'.  The goal of uClibc is to provide as much \
-functionality as possible in a small amount of space, and it is intended \
-primarily for embedded use. It is also highly configurable in supported \
-features, at the cost of ABI differences for different configurations. \
-uClibc has been designed from the ground up to be a C library for \
-embedded Linux.  It is NOT compatible with binaries linked against glibc."
-
-LICENSE = "LGPLv2.1+"
-SECTION = "libs"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-		    file://COPYING.LIB.boilerplate;md5=aaddeadcddeb918297e0e4afc52ce46f \
-file://${S}/test/regex/testregex.c;beginline=1;endline=31;md5=234efb227d0a40677f895e4a1e26e960"
-
-require uclibc-config.inc
-
-PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
-TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
-
-# siteconfig.bbclass runs configure which needs a working compiler
-# For the compiler to work we need a working libc yet libc isn't
-# in the sysroots directory at this point. This means the libc.so
-# linker script won't work as the --sysroot setting isn't correct.
-# Here we create a hacked up libc linker script and pass in the right
-# flags to let configure work. Ugly.
-EXTRASITECONFIG = "CFLAGS='${CFLAGS} -Wl,-L${WORKDIR}/site_config_libc -L${WORKDIR}/site_config_libc -L${SYSROOT_DESTDIR}${libdir} -L${SYSROOT_DESTDIR}${base_libdir} -Wl,-L${SYSROOT_DESTDIR}${libdir} -Wl,-L${SYSROOT_DESTDIR}${base_libdir}'"
-siteconfig_do_siteconfig_gencache_prepend = " \
-mkdir -p ${WORKDIR}/site_config_libc; \
-cp ${SYSROOT_DESTDIR}${libdir}/libc.so ${WORKDIR}/site_config_libc; \
-sed -i -e 's# ${base_libdir}# ${SYSROOT_DESTDIR}${base_libdir}#g' -e 's# ${libdir}# ${SYSROOT_DESTDIR}${libdir}#g' ${WORKDIR}/site_config_libc/libc.so; \
-"
-
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-COMPATIBLE_HOST = ".*-uclibc.*"
-
-INHIBIT_DEFAULT_DEPS = "1"
-
-# There appears to be a parallel race in uclibc:
-# GEN /extra/locale/locale_collate.h
-# xargs: ../..//extra/locale/gen_collate: Text file busy
-# make[1]: *** [../..//extra/locale/locale_collate.h] Error 126
-PARALLEL_MAKE = ""
-
-# do_stage barfs on a CC with whitespace, therefore put the 'HOST_CC_ARCH' in
-# the CFLAGS (when building the utils).
-OEMAKE_NO_CC = "'STRIPTOOL=true' 'LD=${LD}'"
-EXTRA_OEMAKE = "${OEMAKE_NO_CC} \
-                'HOSTCC=${BUILD_CC}' \
-                'HOST_CFLAGS=${BUILD_CFLAGS}' \
-                'CC=${CC}' \
-                ARCH=${UCLIBC_ARCH}"
-
-EXTRA_OEMAKE_task_do_package = "${OEMAKE_NO_CC}"
-
-# enable verbose output:
-export V="2"
-
-# -O<n> -fno-omit-frame-pointer ends up with GCC ICE on thumb as reported
-# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44860
-#
-CFLAGS_remove_arm = "-fno-omit-frame-pointer"
-UCLIBC_EXTRA_CFLAGS  = "${@oe_filter_out('(-I\S+|-i\S+)', '${CFLAGS}', d)}"
-
-configmangle = '/^KERNEL_HEADERS/d; \
-                /^RUNTIME_PREFIX/d; \
-                /^DEVEL_PREFIX/d; \
-                /^SHARED_LIB_LOADER_PREFIX/d; \
-                /^UCLIBC_EXTRA_CFLAGS/d; \
-                s,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g; \
-                ${@["","s,.*COMPILE_IN_THUMB_MODE.*,COMPILE_IN_THUMB_MODE=y,;"][d.getVar("ARM_INSTRUCTION_SET", True) == "thumb"]} \
-                ${@["","s,.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=y,;"][d.getVar("USE_NLS", True) == "yes"]} \
-                ${@["","s,.*LDSO_GNU_HASH_SUPPORT.*,# LDSO_GNU_HASH_SUPPORT is not set,;"][d.getVar("TARGET_ARCH", True) in ['mips', 'mipsel', 'mips64', 'mips64el', 'avr32']]} \
-                /^CROSS/d; \
-                /^TARGET_ARCH=/d; \
-                /^TARGET_/s,^\([^=]*\).*,# \1 is not set,g; \
-                s,^DOSTRIP.*,# DOSTRIP is not set,g; \
-                /_[EO]*ABI/d; \
-                /HAS_FPU/d; \
-                ${@["","s,.*MULTILIB_DIR.*,MULTILIB_DIR=\"${baselib}\",;"][d.getVar("baselib", True) != "lib"]} \
-               '
-OE_FEATURES = "${@features_to_uclibc_conf(d)}"
-OE_DEL      = "${@features_to_uclibc_del(d)}"
-python () {
-    if "${OE_DEL}":
-        d.setVar('configmangle_append', "${OE_DEL}" + "\n")
-
-    # by default uclibc uses mips1 ISA for o32 ABI
-    # if we use TARGET_CC_ARCH="-march=mips32" we end up 
-    # with conflicting march options to gcc. Here we
-    # ask for MIPS32 ISA to match the chosen arch
-    tune = d.getVar("DEFAULTTUNE", True)
-    if tune.startswith('mips32'):
-        import re
-        tune = re.sub('(el)*(-nf)*', '', tune)
-        d.setVar('configmangle_append',
-                 "/^### MIPS32_CHECK$/a\\\nCONFIG_MIPS_ISA_%s=y\n\n" % (tune.upper()))
-    if "${OE_FEATURES}":
-        d.setVar('configmangle_append',
-                   "/^### DISTRO FEATURES$/a\\\n%s\n\n" %
-                   ("\\n".join((d.expand("${OE_FEATURES}").split("\n")))))
-    d.setVar('configmangle_append',
-                 "/^### CROSS$/a\\\n%s\n" %
-                  ("\\n".join(["CROSS_COMPILER_PREFIX=\"${TARGET_PREFIX}\"",
-                        "UCLIBC_EXTRA_CFLAGS=\"${UCLIBC_EXTRA_CFLAGS}\"",
-                         "KERNEL_HEADERS=\"${STAGING_INCDIR}\"",
-                         "RUNTIME_PREFIX=\"/\"",
-                         "DEVEL_PREFIX=\"/${prefix}\"",
-                         "SHARED_LIB_LOADER_PREFIX=\"/lib\"",
-                        ])
-                  ))
-    d.setVar('configmangle_append',
-                 "/^### TGT$/a\\\nTARGET_ARCH=\"%s\"\\nTARGET_%s=y\n" %
-                        ("${UCLIBC_ARCH}", "${UCLIBC_ARCH}"))
-    d.setVar('configmangle_append',
-    "/^### FPU$/a\\\n%s\n\n" % (["UCLIBC_HAS_FPU=y","# UCLIBC_HAS_FPU is not set"][d.getVar('TARGET_FPU', True) in [ 'soft' ]]))
-    if "${UCLIBC_ENDIAN}":
-        d.setVar('configmangle_append',
-                   "/^### ABI$/a\\\nARCH_WANTS_%s_ENDIAN=y\n\n" % ("${UCLIBC_ENDIAN}"))
-    if "${UCLIBC_ABI}":
-        d.setVar('configmangle_append',
-                   "/^### ABI$/a\\\nCONFIG_%s=y\n\n" % ("${UCLIBC_ABI}"))
-}
-
-python do_patch_append() {
-    import subprocess
-    subprocess.call("ln -sf ${STAGING_INCDIR}/linux ${S}/include/linux", shell=True)
-    subprocess.call("ln -sf ${STAGING_INCDIR}/asm ${S}/include/asm", shell=True)
-}
-
-do_configure() {
-        rm -f ${S}/.config
-
-        # OpenEmbedded splits the uClibc.config in two parts:
-        # uClibc.machine, uClibc.distro
-        echo "### uClibc.machine ###" >${S}/merged.config
-        cat ${WORKDIR}/uClibc.machine >>${S}/merged.config
-        echo "### uClibc.distro ###" >>${S}/merged.config
-        cat ${WORKDIR}/uClibc.distro >>${S}/merged.config
-        echo "### CROSS" >>${S}/merged.config
-        echo "### TGT" >>${S}/merged.config
-        echo "### MMU" >>${S}/merged.config
-        echo "### FPU" >>${S}/merged.config
-        echo "### ABI" >>${S}/merged.config
-        echo "### DISTRO FEATURES" >>${S}/merged.config
-        echo "### MIPS32_CHECK" >>${S}/merged.config
-
-        # Mangle the resulting .config depending on OE variables
-        sed -i -e '${configmangle}' ${S}/merged.config
-	cp ${S}/merged.config .config
-        merge_config.sh -r -n -m .config ${@" ".join(find_cfgs(d))}
-	cml1_do_configure
-
-}
-
-do_install() {
-	oe_runmake PREFIX=${D} install
-	rm -rf ${D}${includedir}/iconv.h
-}
-
-# build ldd, ldconfig and friends but only for full uclibc
-do_install_append_pn-uclibc () {
-        oe_runmake PREFIX=${D} "SSP_ALL_CFLAGS=${TARGET_LINK_HASH_STYLE}" -C utils utils_install
-}
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc_git.bb b/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc_git.bb
deleted file mode 100644
index fd02b3d..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/uclibc/uclibc_git.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require uclibc.inc
-require uclibc-package.inc
-require uclibc-git.inc
-
-STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
-STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
-
-PROVIDES += "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
-
-DEPENDS = "virtual/${TARGET_PREFIX}binutils \
-           virtual/${TARGET_PREFIX}gcc-initial \
-           virtual/${TARGET_PREFIX}libc-initial \
-           linux-libc-headers ncurses-native \
-           libgcc-initial kern-tools-native"
-
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev"
-# uclibc does not really have libsegfault but then using the one from glibc is also not
-# going to work. So we pretend that we have it to make bitbake not pull other recipes
-# to satisfy this dependency for the images/tasks
-
-RPROVIDES_${PN} += "libsegfault rtld(GNU_HASH)"
diff --git a/import-layers/yocto-poky/meta/recipes-core/udev/eudev_3.1.5.bb b/import-layers/yocto-poky/meta/recipes-core/udev/eudev_3.1.5.bb
deleted file mode 100644
index ea19ec4..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/udev/eudev_3.1.5.bb
+++ /dev/null
@@ -1,107 +0,0 @@
-SUMMARY = "eudev is a fork of systemd's udev"
-HOMEPAGE = "https://wiki.gentoo.org/wiki/Eudev"
-LICENSE = "GPLv2.0+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = "glib-2.0 glib-2.0-native gperf-native kmod libxslt-native util-linux"
-
-PROVIDES = "udev"
-
-SRC_URI = "https://github.com/gentoo/${BPN}/archive/v${PV}.tar.gz \
-           file://devfs-udev.rules \
-           file://init \
-           file://links.conf \
-           file://local.rules \
-           file://permissions.rules \
-           file://run.rules \
-           file://udev-cache \
-           file://udev-cache.default \
-           file://udev.rules \
-"
-UPSTREAM_CHECK_URI = "https://github.com/gentoo/eudev/releases"
-
-SRC_URI[md5sum] = "e130f892d8744e292cb855db79935f68"
-SRC_URI[sha256sum] = "ce9d5fa91e3a42c7eb95512ca0fa2a631e89833053066bb6cdf42046b2a88553"
-
-inherit autotools update-rc.d qemu
-
-EXTRA_OECONF = " \
-    --sbindir=${base_sbindir} \
-    --libexecdir=${nonarch_base_libdir} \
-    --with-rootlibdir=${base_libdir} \
-    --with-rootprefix= \
-"
-
-do_install_append() {
-	install -d ${D}${sysconfdir}/init.d
-	install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
-	install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
-	sed -i s%@UDEVD@%${base_sbindir}/udevd% ${D}${sysconfdir}/init.d/udev
-	sed -i s%@UDEVD@%${base_sbindir}/udevd% ${D}${sysconfdir}/init.d/udev-cache
-
-	install -d ${D}${sysconfdir}/default
-	install -m 0755 ${WORKDIR}/udev-cache.default ${D}${sysconfdir}/default/udev-cache
-
-	touch ${D}${sysconfdir}/udev/cache.data
-
-	install -d ${D}${sysconfdir}/udev/rules.d
-	install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
-
-	# Use classic network interface naming scheme
-	touch ${D}${sysconfdir}/udev/rules.d/80-net-name-slot.rules
-
-	# Fix for multilib systems where libs along with confs are installed incorrectly
-	if ! [ -d ${D}${nonarch_base_libdir}/udev ]
-	then
-		install -d ${D}${nonarch_base_libdir}/udev
-		mv ${D}${base_libdir}/udev ${D}${nonarch_base_libdir}
-	fi
-
-	# hid2hci has moved to bluez4. removed in udev as of version 169
-	rm -f ${D}${base_libdir}/udev/hid2hci
-}
-
-INITSCRIPT_PACKAGES = "eudev udev-cache"
-INITSCRIPT_NAME_eudev = "udev"
-INITSCRIPT_PARAMS_eudev = "start 04 S ."
-INITSCRIPT_NAME_udev-cache = "udev-cache"
-INITSCRIPT_PARAMS_udev-cache = "start 36 S ."
-
-PACKAGES =+ "libudev"
-PACKAGES =+ "udev-cache"
-PACKAGES =+ "eudev-hwdb"
-
-
-FILES_${PN} += "${libexecdir} ${nonarch_base_libdir}/udev ${bindir}/udevadm"
-FILES_${PN}-dev = "${datadir}/pkgconfig/udev.pc \
-                   ${includedir}/libudev.h ${libdir}/libudev.so \
-                   ${includedir}/udev.h ${libdir}/libudev.la \
-                   ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc"
-FILES_libudev = "${base_libdir}/libudev.so.*"
-FILES_udev-cache = "${sysconfdir}/init.d/udev-cache ${sysconfdir}/default/udev-cache"
-FILES_eudev-hwdb = "${sysconfdir}/udev/hwdb.d"
-
-RDEPENDS_eudev-hwdb += "eudev"
-
-RRECOMMENDS_${PN} += "udev-cache eudev-hwdb"
-
-RPROVIDES_${PN} = "hotplug udev"
-
-python () {
-    if bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
-        raise bb.parse.SkipPackage("'systemd' in DISTRO_FEATURES")
-}
-
-pkg_postinst_eudev-hwdb () {
-    if test -n "$D"; then
-        ${@qemu_run_binary(d, '$D', '${bindir}/udevadm')} hwdb --update --root $D
-        chown root:root $D${sysconfdir}/udev/hwdb.bin
-    else
-        udevadm hwdb --update
-    fi
-}
-
-pkg_prerm_eudev-hwdb () {
-        rm -f $D${sysconfdir}/udev/hwdb.bin
-}
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/udev/eudev_3.2.bb b/import-layers/yocto-poky/meta/recipes-core/udev/eudev_3.2.bb
new file mode 100644
index 0000000..211252c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/udev/eudev_3.2.bb
@@ -0,0 +1,101 @@
+SUMMARY = "eudev is a fork of systemd's udev"
+HOMEPAGE = "https://wiki.gentoo.org/wiki/Eudev"
+LICENSE = "GPLv2.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "glib-2.0 glib-2.0-native gperf-native kmod libxslt-native util-linux"
+
+PROVIDES = "udev"
+
+SRC_URI = "https://github.com/gentoo/${BPN}/archive/v${PV}.tar.gz \
+           file://devfs-udev.rules \
+           file://init \
+           file://links.conf \
+           file://local.rules \
+           file://permissions.rules \
+           file://run.rules \
+           file://udev-cache \
+           file://udev-cache.default \
+           file://udev.rules \
+"
+UPSTREAM_CHECK_URI = "https://github.com/gentoo/eudev/releases"
+
+SRC_URI[md5sum] = "9eb477cc8718db272b5d24dff1126b04"
+SRC_URI[sha256sum] = "37829d37f4beb7e358ca33abc1ad0907d87f917ce157777aeaeebeacae24efdc"
+
+inherit autotools update-rc.d qemu pkgconfig
+
+EXTRA_OECONF = " \
+    --sbindir=${base_sbindir} \
+    --with-rootlibdir=${base_libdir} \
+    --with-rootprefix= \
+"
+
+PACKAGECONFIG ??= "hwdb"
+PACKAGECONFIG[hwdb] = "--enable-hwdb,--disable-hwdb"
+
+do_install_append() {
+	install -d ${D}${sysconfdir}/init.d
+	install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
+	install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
+	sed -i s%@UDEVD@%${base_sbindir}/udevd% ${D}${sysconfdir}/init.d/udev
+	sed -i s%@UDEVD@%${base_sbindir}/udevd% ${D}${sysconfdir}/init.d/udev-cache
+
+	install -d ${D}${sysconfdir}/default
+	install -m 0755 ${WORKDIR}/udev-cache.default ${D}${sysconfdir}/default/udev-cache
+
+	touch ${D}${sysconfdir}/udev/cache.data
+
+	install -d ${D}${sysconfdir}/udev/rules.d
+	install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
+
+	# Use classic network interface naming scheme
+	touch ${D}${sysconfdir}/udev/rules.d/80-net-name-slot.rules
+
+	# hid2hci has moved to bluez4. removed in udev as of version 169
+	rm -f ${D}${base_libdir}/udev/hid2hci
+}
+
+INITSCRIPT_PACKAGES = "eudev udev-cache"
+INITSCRIPT_NAME_eudev = "udev"
+INITSCRIPT_PARAMS_eudev = "start 04 S ."
+INITSCRIPT_NAME_udev-cache = "udev-cache"
+INITSCRIPT_PARAMS_udev-cache = "start 36 S ."
+
+PACKAGES =+ "libudev"
+PACKAGES =+ "udev-cache"
+PACKAGES =+ "eudev-hwdb"
+
+
+FILES_${PN} += "${libexecdir} ${base_libdir}/udev ${bindir}/udevadm"
+FILES_${PN}-dev = "${datadir}/pkgconfig/udev.pc \
+                   ${includedir}/libudev.h ${libdir}/libudev.so \
+                   ${includedir}/udev.h ${libdir}/libudev.la \
+                   ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc"
+FILES_libudev = "${base_libdir}/libudev.so.*"
+FILES_udev-cache = "${sysconfdir}/init.d/udev-cache ${sysconfdir}/default/udev-cache"
+FILES_eudev-hwdb = "${sysconfdir}/udev/hwdb.d"
+
+RDEPENDS_eudev-hwdb += "eudev"
+
+RRECOMMENDS_${PN} += "udev-cache"
+
+RPROVIDES_${PN} = "hotplug udev"
+
+python () {
+    if bb.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d):
+        raise bb.parse.SkipPackage("'systemd' in DISTRO_FEATURES")
+}
+
+pkg_postinst_eudev-hwdb () {
+    if test -n "$D"; then
+        ${@qemu_run_binary(d, '$D', '${bindir}/udevadm')} hwdb --update --root $D
+        chown root:root $D${sysconfdir}/udev/hwdb.bin
+    else
+        udevadm hwdb --update
+    fi
+}
+
+pkg_prerm_eudev-hwdb () {
+        rm -f $D${sysconfdir}/udev/hwdb.bin
+}
diff --git a/import-layers/yocto-poky/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb b/import-layers/yocto-poky/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
index c15cb78..3b965c5 100644
--- a/import-layers/yocto-poky/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
+++ b/import-layers/yocto-poky/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
@@ -1,5 +1,5 @@
 SUMMARY = "manage symlinks in /etc/rcN.d"
-DESCRIPTION = "update-rc.d is a utilities that allows the management of symlinks to the initscripts in the /etc/rcN.d directory structure."
+DESCRIPTION = "update-rc.d is a utility that allows the management of symlinks to the initscripts in the /etc/rcN.d directory structure."
 SECTION = "base"
 
 LICENSE = "GPLv2+"
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux.inc b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux.inc
index 8c0c630..c635502 100644
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux.inc
+++ b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux.inc
@@ -17,7 +17,8 @@
                     file://libmount/COPYING;md5=fb93f01d4361069c5616327705373b16 \
                     file://libblkid/COPYING;md5=fb93f01d4361069c5616327705373b16"
 
-inherit autotools gettext pkgconfig systemd update-alternatives python-dir ptest bash-completion
+#gtk-doc is not enabled as it requires xmlto which requires util-linux
+inherit autotools gettext pkgconfig systemd update-alternatives python3-dir bash-completion ptest
 DEPENDS = "zlib ncurses"
 DEPENDS_append_class-native = " lzo-native"
 DEPENDS_append_class-nativesdk = " lzo-native"
@@ -32,7 +33,7 @@
              util-linux-mkfs util-linux-mcookie util-linux-reset \
              util-linux-mkfs.cramfs util-linux-fsck.cramfs util-linux-fstrim \
              util-linux-partx util-linux-hwclock util-linux-mountpoint \
-             util-linux-findfs util-linux-getopt util-linux-sulogin"
+             util-linux-findfs util-linux-getopt util-linux-sulogin util-linux-prlimit"
 PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', 'util-linux-pylibmount', '', d)}"
 PACKAGES =+ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'util-linux-runuser', '', d)}"
 
@@ -61,14 +62,14 @@
 PACKAGECONFIG[libcap-ng] = "--enable-setpriv,--disable-setpriv,libcap-ng,"
 
 # Build python bindings for libmount
-PACKAGECONFIG[pylibmount] = "--with-python --enable-pylibmount,--without-python --disable-pylibmount,python"
+PACKAGECONFIG[pylibmount] = "--with-python=3 --enable-pylibmount,--without-python --disable-pylibmount,python3"
 
 # Readline support
 PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
 
 FILES_${PN}-doc += "${datadir}/getopt/getopt-*.*"
 
-FILES_${PN}-dev += "${libdir}/${PYTHON_DIR}/dist-packages/libmount/pylibmount.la"
+FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.la"
 
 FILES_util-linux-agetty = "${base_sbindir}/agetty"
 FILES_util-linux-fdisk = "${base_sbindir}/fdisk.${BPN}"
@@ -89,9 +90,11 @@
 FILES_util-linux-findfs = "${sbindir}/findfs"
 FILES_util-linux-getopt = "${base_bindir}/getopt.${BPN}"
 FILES_util-linux-runuser = "${sbindir}/runuser"
+FILES_util-linux-prlimit = "${bindir}/prlimit"
 
-FILES_util-linux-pylibmount = "${libdir}/${PYTHON_DIR}/dist-packages/libmount/pylibmount.so \
-                               ${libdir}/${PYTHON_DIR}/dist-packages/libmount/__init__.*"
+FILES_util-linux-pylibmount = "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.so \
+                               ${PYTHON_SITEPACKAGES_DIR}/libmount/__init__.* \
+                               ${PYTHON_SITEPACKAGES_DIR}/libmount/__pycache__/*"
 FILES_util-linux-lscpu = "${bindir}/lscpu"
 
 FILES_util-linux-fsck = "${base_sbindir}/fsck*"
@@ -116,7 +119,7 @@
 RDEPENDS_${PN} = "util-linux-umount util-linux-swaponoff util-linux-losetup util-linux-sulogin"
 RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'util-linux-runuser', '', d)}"
 
-RRECOMMENDS_${PN} = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-linux-mount util-linux-readprofile util-linux-mkfs util-linux-mountpoint"
+RRECOMMENDS_${PN} = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-linux-mount util-linux-readprofile util-linux-mkfs util-linux-mountpoint util-linux-prlimit"
 
 RRECOMMENDS_${PN}_class-native = ""
 RRECOMMENDS_${PN}_class-nativesdk = ""
@@ -280,7 +283,7 @@
                       extra_depends='', prepend=True, allow_links=True)
 }
 
-RDEPENDS_${PN}-ptest = "bash"
+RDEPENDS_${PN}-ptest = "bash grep coreutils"
 
 do_compile_ptest() {
     oe_runmake buildtest-TESTS
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/avoid_unsupported_grep_opts.patch b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/avoid_unsupported_grep_opts.patch
deleted file mode 100644
index a0d5efa..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/avoid_unsupported_grep_opts.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Avoid unsupported grep options
-
-Signed-off-by: Tudor Florea <tudor.florea@enea.com>
-Upstream-Status: Pending
-
-diff -ruN a/ts/ipcs/headers b/ts/ipcs/headers
---- a/tests/ts/ipcs/headers	2013-09-04 11:03:36.118613250 +0200
-+++ b/teste/ts/ipcs/headers	2013-09-04 11:03:27.906958437 +0200
-@@ -22,35 +22,35 @@
- ts_init "$*"
- 
- ts_log "test: shm headers"
--$TS_CMD_IPCS -m -t | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -m -p | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -m -c | grep --after-context=1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -m -t | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -m -p | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -m -c | grep -A 1 "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -m -l | grep "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -m -u | grep "^---"  >> $TS_OUTPUT
- echo >> $TS_OUTPUT
- 
- ts_log "test: mesg headers"
--$TS_CMD_IPCS -q -t | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -q -p | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -q -c | grep --after-context=1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -q -t | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -q -p | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -q -c | grep -A 1 "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -q -l | grep  "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -q -u | grep  "^---"  >> $TS_OUTPUT
- echo >> $TS_OUTPUT
- 
- ts_log "test: sem headers"
--$TS_CMD_IPCS -s -t | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -s -p | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -s -c | grep --after-context=1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -s -t | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -s -p | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -s -c | grep -A 1 "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -s -l | grep  "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -s -u | grep  "^---"  >> $TS_OUTPUT
- echo >> $TS_OUTPUT
- 
- ts_log "test: all headers"
--$TS_CMD_IPCS -a | grep --after-context=1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -a | grep -A 1 "^---"  >> $TS_OUTPUT
- 
--$TS_CMD_IPCS -a -t | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -a -p | grep --after-context=1 "^---"  >> $TS_OUTPUT
--$TS_CMD_IPCS -a -c | grep --after-context=1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -a -t | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -a -p | grep -A 1 "^---"  >> $TS_OUTPUT
-+$TS_CMD_IPCS -a -c | grep -A 1 "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -a -l | grep "^---"  >> $TS_OUTPUT
- $TS_CMD_IPCS -a -u | grep "^---"  >> $TS_OUTPUT
- 
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/avoid_unsupported_sleep_param.patch b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/avoid_unsupported_sleep_param.patch
deleted file mode 100644
index 7a63a4e..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/avoid_unsupported_sleep_param.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Avoid unsupported sleep parameter
-
-Signed-off-by: Tudor Florea <tudor.florea@enea.com>
-Upstream-Status: Pending
-
-diff -ruN a/simple b/simple
---- a/tests/ts/tailf/simple	2015-11-12 11:34:49.971817130 +0200
-+++ b/tests/ts/tailf/simple	2013-11-12 11:34:37.876325128 +0200
-@@ -27,9 +27,9 @@
- 
- $TS_CMD_TAILF $INPUT > $TS_OUTPUT 2>&1 &
- 
--sleep 0.5
-+sleep 1
- echo {0..9} >> $INPUT
--sleep 0.5
-+sleep 1
- 
- rm -f $INPUT
- 
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch
index 0eb8810..417ca1d 100644
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch
@@ -3,16 +3,23 @@
 Signed-off-by: Tudor Florea <tudor.florea@enea.com>
 Upstream-Status: Pending
 
-diff -ruN a/functions.sh b/functions.sh
---- a/tests/functions.sh	2015-11-12 21:32:02.434542124 +0100
-+++ b/tests/functions.sh	2015-11-12 21:40:37.095317280 +0100
-@@ -297,7 +297,7 @@
- 	if [ "$TS_PARALLEL" == "yes" ]; then
- 		TS_TITLE=$(printf "%13s: %-30s ...\n%16s: %-27s ..." "$TS_COMPONENT" "$TS_DESC" "" "$TS_SUBNAME")
- 	else
--		TS_TITLE=$(printf "%16s: %-27s ..." "" "$TS_SUBNAME")
-+               TS_TITLE=$(printf "%13s: %-30s ..." "$TS_COMPONENT" "$TS_SUBNAME")
- 		echo -n "$TS_TITLE"
+---
+ tests/functions.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/functions.sh b/tests/functions.sh
+index 5246605..b24dc15 100644
+--- a/tests/functions.sh
++++ b/tests/functions.sh
+@@ -320,7 +320,7 @@ function ts_init_subtest {
+ 
+ 	if [ "$TS_PARSABLE" != "yes" ]; then
+ 		[ $TS_NSUBTESTS -eq 1 ] && echo
+-		printf "%16s: %-27s ..." "" "$TS_SUBNAME"
++		printf "%13s: %-30s ..." "$TS_COMPONENT" "$TS_SUBNAME"
  	fi
  }
+ 
+-- 
+2.8.3
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/ptest.patch b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/ptest.patch
index 837f189..0537f7d 100644
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/ptest.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/ptest.patch
@@ -2,16 +2,22 @@
 
 Signed-off-by: Tudor Florea <tudor.florea@enea.com>
 Upstream-Status: Pending
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
 
-diff -ruN a/Makefile.am b/Makefile.am
---- a/Makefile.am	2015-11-12 20:29:46.778396936 +0100
-+++ b/Makefile.am	2015-11-12 20:32:24.342450279 +0100
-@@ -48,7 +48,7 @@
+diff --git a/Makefile.am b/Makefile.am
+index bbaccb1..7d5a6bb 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -48,6 +48,7 @@ systemdsystemunit_DATA =
  dist_bashcompletion_DATA =
  check_PROGRAMS =
  dist_check_SCRIPTS =
--TESTS =
 +TESTS = $(check_PROGRAMS)
  
  PATHFILES =
+ 
+-- 
+2.8.3
 
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/util-linux-native.patch b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/util-linux-native.patch
deleted file mode 100644
index 1f496de..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/util-linux-native.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Support older hosts with latest util-linux-native
-
-mkostemp is not defined on older machines.  So we detect this and
-provide a define that uses mkstemp instead.
-
-O_CLOEXEC is not defined on older machines.  It is however defined
-in the 'c.h' header.  Fix up the users to include 'c.h'.
-
-fdisks/fdisksunlabel.c was modified to use qsort_r, however
-this is not defined on older hosts.  Revert:
-  commit c69bbca9c1f6645097bd20fe3a21f5a99a2a0698
-  fdisk: (sun): use ask API, remove global variable
-
-Upstream-Status: Inappropriate [other]
-Patches revert upstream changes in order to support older
-machines.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- configure.ac | 1 +
- include/c.h  | 7 +++++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index eb3680b..93e015f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -318,6 +318,7 @@ AC_CHECK_FUNCS([ \
- 	llseek \
- 	lseek64 \
- 	mempcpy \
-+	mkostemp \
- 	nanosleep \
- 	open_memstream \
- 	personality \
-diff --git a/include/c.h b/include/c.h
-index e423e8b..cf33b94 100644
---- a/include/c.h
-+++ b/include/c.h
-@@ -233,6 +233,13 @@ static inline int dirfd(DIR *d)
- #endif
- 
- /*
-+ * mkostemp replacement
-+ */
-+#ifndef HAVE_MKOSTEMP
-+#define mkostemp(template, flags) mkstemp(template)
-+#endif
-+
-+/*
-  * MAXHOSTNAMELEN replacement
-  */
- static inline size_t get_hostname_max(void)
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/util-linux-ng-2.16-mount_lock_path.patch b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/util-linux-ng-2.16-mount_lock_path.patch
deleted file mode 100644
index 5773d7e..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/util-linux-ng-2.16-mount_lock_path.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-The FHS indicates that /etc must be capable of being mounted R/O.
-
-The FHS also indicates that lock files belong in /var/lock, and /var must
-be R/W as soon as possible during boot.
-
-This patch moves the mtab lock file from the potentially R/O /etc, to the
-R/W /var/lock area.  This lock file is used when mounting disks and making
-other mount adjustments.  The _PATH_MOUNTED_TMP is not adjusted, as failing
-to write to this file does not cause any functional limitations.
-
-(Note, if /etc is R/O, then /etc/mtab should be a symlink to /proc/mounts)
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
---- util-linux-ng-2.16/include/pathnames.h.orig
-+++ util-linux-ng-2.16/include/pathnames.h
-@@ -90,7 +90,7 @@
- # endif
- #endif
- 
--#define _PATH_MOUNTED_LOCK	_PATH_MOUNTED "~"
-+#define _PATH_MOUNTED_LOCK	"/var/lock/mtab~"
- #define _PATH_MOUNTED_TMP	_PATH_MOUNTED ".tmp"
- 
- #ifndef _PATH_DEV
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/uuid-test-error-api.patch b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/uuid-test-error-api.patch
index 1b0ff79..a6fde5d 100644
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/uuid-test-error-api.patch
+++ b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux/uuid-test-error-api.patch
@@ -3,19 +3,23 @@
 Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
-Index: util-linux-2.27.1/tests/helpers/test_uuidd.c
-===================================================================
---- util-linux-2.27.1.orig/tests/helpers/test_uuidd.c
-+++ util-linux-2.27.1/tests/helpers/test_uuidd.c
+---
+ misc-utils/test_uuidd.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 61 insertions(+), 1 deletion(-)
+
+diff --git a/misc-utils/test_uuidd.c b/misc-utils/test_uuidd.c
+index 36f3b3d..7d579ce 100644
+--- a/misc-utils/test_uuidd.c
++++ b/misc-utils/test_uuidd.c
 @@ -23,7 +23,6 @@
   *
   *	make uuidd uuidgen localstatedir=/var
   */
 -#include <error.h>
- #include <libgen.h>
  #include <pthread.h>
  #include <stdio.h>
-@@ -39,6 +38,17 @@
+ #include <stdlib.h>
+@@ -38,6 +37,17 @@
  #include "xalloc.h"
  #include "strutils.h"
  
@@ -33,7 +37,7 @@
  #define LOG(level,args) if (loglev >= level) { fprintf args; }
  
  size_t nprocesses = 4;
-@@ -257,6 +267,56 @@ static void object_dump(size_t idx, obje
+@@ -256,6 +266,56 @@ static void object_dump(size_t idx, object_t *obj)
  	fprintf(stderr, "}\n");
  }
  
@@ -90,3 +94,6 @@
  int main(int argc, char *argv[])
  {
  	size_t i, nfailed = 0, nignored = 0;
+-- 
+2.8.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux_2.27.1.bb b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux_2.27.1.bb
deleted file mode 100644
index 7549158..0000000
--- a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux_2.27.1.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-MAJOR_VERSION = "2.27"
-require util-linux.inc
-
-# To support older hosts, we need to patch and/or revert
-# some upstream changes.  Only do this for native packages.
-OLDHOST = ""
-OLDHOST_class-native = "file://util-linux-native.patch \
-                        file://util-linux-native-qsort.patch \
-			"
-
-SRC_URI += "file://util-linux-ng-2.16-mount_lock_path.patch \
-            file://configure-sbindir.patch \
-            file://runuser.pamd \
-            file://runuser-l.pamd \
-            ${OLDHOST} \
-            file://ptest.patch \
-            file://run-ptest \
-            file://avoid_unsupported_sleep_param.patch \
-            file://avoid_unsupported_grep_opts.patch \
-            file://display_testname_for_subtest.patch \
-            file://avoid_parallel_tests.patch \
-            file://uuid-test-error-api.patch \
-"
-SRC_URI[md5sum] = "3cd2698d1363a2c64091c2dadc974647"
-SRC_URI[sha256sum] = "0a818fcdede99aec43ffe6ca5b5388bff80d162f2f7bd4541dca94fecb87a290"
-
-CACHED_CONFIGUREVARS += "scanf_cv_alloc_modifier=ms"
-
-EXTRA_OECONF_class-native = "${SHARED_EXTRA_OECONF} \
-                             --disable-fallocate \
-			     --disable-use-tty-group \
-"
-EXTRA_OECONF_class-nativesdk = "${SHARED_EXTRA_OECONF} \
-                                --disable-fallocate \
-				--disable-use-tty-group \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux_2.28.1.bb b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux_2.28.1.bb
new file mode 100644
index 0000000..f232cb9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-core/util-linux/util-linux_2.28.1.bb
@@ -0,0 +1,31 @@
+MAJOR_VERSION = "2.28"
+require util-linux.inc
+
+# To support older hosts, we need to patch and/or revert
+# some upstream changes.  Only do this for native packages.
+OLDHOST = ""
+OLDHOST_class-native = "file://util-linux-native-qsort.patch"
+
+SRC_URI += "file://configure-sbindir.patch \
+            file://runuser.pamd \
+            file://runuser-l.pamd \
+            ${OLDHOST} \
+            file://ptest.patch \
+            file://run-ptest \
+            file://display_testname_for_subtest.patch \
+            file://avoid_parallel_tests.patch \
+            file://uuid-test-error-api.patch \
+"
+SRC_URI[md5sum] = "e2d863efaf4fd330a42c5efe9f1b02b4"
+SRC_URI[sha256sum] = "3ece4ea4a34ef786b68f5c415e848390424232abd1ee00f7ee5bddc30657b60f"
+
+CACHED_CONFIGUREVARS += "scanf_cv_alloc_modifier=ms"
+
+EXTRA_OECONF_class-native = "${SHARED_EXTRA_OECONF} \
+                             --disable-fallocate \
+			     --disable-use-tty-group \
+"
+EXTRA_OECONF_class-nativesdk = "${SHARED_EXTRA_OECONF} \
+                                --disable-fallocate \
+				--disable-use-tty-group \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native.inc b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native.inc
index 27cc9ff..9fa206e 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native.inc
@@ -17,8 +17,8 @@
 }
 
 python do_install_config () {
-    indir = os.path.dirname(d.getVar('FILE',1))
-    infile = file(oe.path.join(indir, 'files', 'apt.conf'), 'r')
+    indir = os.path.dirname(d.getVar('FILE', True))
+    infile = open(oe.path.join(indir, 'files', 'apt.conf'), 'r')
     data = infile.read()
     infile.close()
 
@@ -30,7 +30,7 @@
 
     outpath = oe.path.join(outdir, 'apt.conf.sample')
     if not os.path.exists(outpath):
-        outfile = file(outpath, 'w')
+        outfile = open(outpath, 'w')
         outfile.write(data)
         outfile.close()
 }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native_1.0.10.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native_1.2.12.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native_1.0.10.1.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/apt/apt-native_1.2.12.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt.inc b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt.inc
index 78ef5a7..3026370 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt.inc
@@ -2,7 +2,7 @@
 LICENSE = "GPLv2.0+"
 SECTION = "base"
 
-SRC_URI = "http://snapshot.debian.org/archive/debian/20150805T094928Z/pool/main/a/${BPN}/${BPN}_${PV}.tar.xz \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160526T162943Z/pool/main/a/${BPN}/${BPN}_${PV}.tar.xz \
            file://use-host.patch \
            file://makerace.patch \
            file://no-nls-dpkg.patch \
@@ -12,16 +12,17 @@
            file://disable-configure-in-makefile.patch \
            file://disable-test.patch \
            file://0001-environment.mak-musl-based-systems-can-generate-shar.patch \
+           file://0001-apt-1.2.12-Fix-musl-build.patch \
            "
-SRC_URI[md5sum] = "6505c4297b338adb2087ce87bbc4a276"
-SRC_URI[sha256sum] = "3fb1de9598363c416591d49e3c285458e095b035e6c06d5b944a54e15fc9b543"
+SRC_URI[md5sum] = "80f6f0ef110a45a7e5af8a9d233fb0e7"
+SRC_URI[sha256sum] = "e820d27cba73476df4abcff27dadd1b5847474bfe85f7e9202a9a07526973ea6"
 LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
 # the package is taken from snapshots.debian.org; that source is static and goes stale
 # so we check the latest upstream from a directory that does get updated
 UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/apt/"
 
-inherit autotools gettext
+inherit autotools gettext useradd
 
 EXTRA_AUTORECONF = "--exclude=autopoint,autoheader"
 
@@ -29,3 +30,6 @@
     rm -rf ${S}/buildlib/config.sub
     rm -rf ${S}/buildlib/config.guess
 }
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --no-create-home --home-dir /nonexistent --shell /bin/false --user-group _apt"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
index d33069b..b3a883b 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
@@ -1,4 +1,4 @@
-From 106797f1c66fa578dad21fd9380bf9d576573dfd Mon Sep 17 00:00:00 2001
+From dfc1370d50322e2e9d225a7a63b44993fc01a727 Mon Sep 17 00:00:00 2001
 From: Roy Li <rongqing.li@windriver.com>
 Date: Fri, 22 May 2015 08:05:15 +0800
 Subject: [PATCH] Revert "always run 'dpkg --configure -a' at the end of our
@@ -16,21 +16,16 @@
 
 Signed-off-by: Roy Li <rongqing.li@windriver.com>
 ---
- apt-pkg/deb/dpkgpm.cc                              |  9 +--
- test/integration/framework                         | 25 ++++----
- test/integration/test-apt-progress-fd              | 67 +++++++++----------
- test/integration/test-apt-progress-fd-deb822       | 18 ++----
- test/integration/test-apt-progress-fd-error        |  2 +-
- ...est-bug-769609-triggers-still-pending-after-run | 75 ----------------------
- .../test-no-fds-leaked-to-maintainer-scripts       |  6 +-
- 7 files changed, 56 insertions(+), 146 deletions(-)
- delete mode 100755 test/integration/test-bug-769609-triggers-still-pending-after-run
+ apt-pkg/deb/dpkgpm.cc                                     |  9 ++-------
+ test/integration/test-apt-progress-fd-deb822              | 14 +++++++-------
+ test/integration/test-no-fds-leaked-to-maintainer-scripts |  6 ++----
+ 3 files changed, 11 insertions(+), 18 deletions(-)
 
 diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
-index b187efb..f269764 100644
+index 834cb0e..84ded3a 100644
 --- a/apt-pkg/deb/dpkgpm.cc
 +++ b/apt-pkg/deb/dpkgpm.cc
-@@ -1049,12 +1049,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
+@@ -1037,12 +1037,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
  	 PackagesTotal++;
        }
     }
@@ -42,8 +37,8 @@
 -   ++PackagesTotal;
  }
                                                                          /*}}}*/
- #if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR < 13)
-@@ -1294,8 +1288,9 @@ bool pkgDPkgPM::GoNoABIBreak(APT::Progress::PackageManager *progress)
+ bool pkgDPkgPM::Go(int StatusFd)
+@@ -1250,8 +1244,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
  
     // support subpressing of triggers processing for special
     // cases like d-i that runs the triggers handling manually
@@ -54,159 +49,11 @@
        List.push_back(Item(Item::ConfigurePending, PkgIterator()));
  
     // for the progress
-diff --git a/test/integration/framework b/test/integration/framework
-index 70ad381..00672ad 100644
---- a/test/integration/framework
-+++ b/test/integration/framework
-@@ -1178,13 +1178,10 @@ testnopackage() {
- 	fi
- }
- 
--testdpkgstatus() {
--	local STATE="$1"
--	local NR="$2"
--	shift 2
--	msgtest "Test that $NR package(s) are in state $STATE with" "dpkg -l $*"
--	local PKGS="$(dpkg -l "$@" 2>/dev/null | grep "^${STATE}" | wc -l)"
--	if [ "$PKGS" != $NR ]; then
-+testdpkginstalled() {
-+	msgtest "Test for correctly installed package(s) with" "dpkg -l $*"
-+	local PKGS="$(dpkg -l "$@" 2>/dev/null | grep '^i' | wc -l)"
-+	if [ "$PKGS" != $# ]; then
- 		echo >&2 $PKGS
- 		dpkg -l "$@" | grep '^[a-z]' >&2
- 		msgfail
-@@ -1193,12 +1190,16 @@ testdpkgstatus() {
- 	fi
- }
- 
--testdpkginstalled() {
--	testdpkgstatus 'ii' "$#" "$@"
--}
--
- testdpkgnotinstalled() {
--	testdpkgstatus 'ii' '0' "$@"
-+	msgtest "Test for correctly not-installed package(s) with" "dpkg -l $*"
-+	local PKGS="$(dpkg -l "$@" 2> /dev/null | grep '^i' | wc -l)"
-+	if [ "$PKGS" != 0 ]; then
-+		echo
-+		dpkg -l "$@" | grep '^[a-z]' >&2
-+		msgfail
-+	else
-+		msgpass
-+	fi
- }
- 
- testmarkedauto() {
-diff --git a/test/integration/test-apt-progress-fd b/test/integration/test-apt-progress-fd
-index 68cc043..d72e7e7 100755
---- a/test/integration/test-apt-progress-fd
-+++ b/test/integration/test-apt-progress-fd
-@@ -19,14 +19,13 @@ testequal "dlstatus:1:0:Retrieving file 1 of 1
- dlstatus:1:0:Retrieving file 1 of 1
- pmstatus:dpkg-exec:0:Running dpkg
- pmstatus:testing:0:Installing testing (amd64)
--pmstatus:testing:16.6667:Preparing testing (amd64)
--pmstatus:testing:33.3333:Unpacking testing (amd64)
--pmstatus:testing:50:Preparing to configure testing (amd64)
--pmstatus:dpkg-exec:50:Running dpkg
--pmstatus:testing:50:Configuring testing (amd64)
--pmstatus:testing:66.6667:Configuring testing (amd64)
--pmstatus:testing:83.3333:Installed testing (amd64)
--pmstatus:dpkg-exec:83.3333:Running dpkg" cat apt-progress.log
-+pmstatus:testing:20:Preparing testing (amd64)
-+pmstatus:testing:40:Unpacking testing (amd64)
-+pmstatus:testing:60:Preparing to configure testing (amd64)
-+pmstatus:dpkg-exec:60:Running dpkg
-+pmstatus:testing:60:Configuring testing (amd64)
-+pmstatus:testing:80:Configuring testing (amd64)
-+pmstatus:testing:100:Installed testing (amd64)" cat apt-progress.log
- 
- # upgrade
- exec 3> apt-progress.log
-@@ -35,14 +34,13 @@ testequal "dlstatus:1:0:Retrieving file 1 of 1
- dlstatus:1:0:Retrieving file 1 of 1
- pmstatus:dpkg-exec:0:Running dpkg
- pmstatus:testing:0:Installing testing (amd64)
--pmstatus:testing:16.6667:Preparing testing (amd64)
--pmstatus:testing:33.3333:Unpacking testing (amd64)
--pmstatus:testing:50:Preparing to configure testing (amd64)
--pmstatus:dpkg-exec:50:Running dpkg
--pmstatus:testing:50:Configuring testing (amd64)
--pmstatus:testing:66.6667:Configuring testing (amd64)
--pmstatus:testing:83.3333:Installed testing (amd64)
--pmstatus:dpkg-exec:83.3333:Running dpkg" cat apt-progress.log
-+pmstatus:testing:20:Preparing testing (amd64)
-+pmstatus:testing:40:Unpacking testing (amd64)
-+pmstatus:testing:60:Preparing to configure testing (amd64)
-+pmstatus:dpkg-exec:60:Running dpkg
-+pmstatus:testing:60:Configuring testing (amd64)
-+pmstatus:testing:80:Configuring testing (amd64)
-+pmstatus:testing:100:Installed testing (amd64)" cat apt-progress.log
- 
- # reinstall
- exec 3> apt-progress.log
-@@ -51,24 +49,22 @@ testequal "dlstatus:1:0:Retrieving file 1 of 1
- dlstatus:1:0:Retrieving file 1 of 1
- pmstatus:dpkg-exec:0:Running dpkg
- pmstatus:testing:0:Installing testing (amd64)
--pmstatus:testing:16.6667:Preparing testing (amd64)
--pmstatus:testing:33.3333:Unpacking testing (amd64)
--pmstatus:testing:50:Preparing to configure testing (amd64)
--pmstatus:dpkg-exec:50:Running dpkg
--pmstatus:testing:50:Configuring testing (amd64)
--pmstatus:testing:66.6667:Configuring testing (amd64)
--pmstatus:testing:83.3333:Installed testing (amd64)
--pmstatus:dpkg-exec:83.3333:Running dpkg" cat apt-progress.log
-+pmstatus:testing:20:Preparing testing (amd64)
-+pmstatus:testing:40:Unpacking testing (amd64)
-+pmstatus:testing:60:Preparing to configure testing (amd64)
-+pmstatus:dpkg-exec:60:Running dpkg
-+pmstatus:testing:60:Configuring testing (amd64)
-+pmstatus:testing:80:Configuring testing (amd64)
-+pmstatus:testing:100:Installed testing (amd64)" cat apt-progress.log
- 
- # and remove
- exec 3> apt-progress.log
- testsuccess aptget remove testing -y -o APT::Status-Fd=3
- testequal "pmstatus:dpkg-exec:0:Running dpkg
- pmstatus:testing:0:Removing testing (amd64)
--pmstatus:testing:25:Preparing for removal of testing (amd64)
--pmstatus:testing:50:Removing testing (amd64)
--pmstatus:testing:75:Removed testing (amd64)
--pmstatus:dpkg-exec:75:Running dpkg" cat apt-progress.log
-+pmstatus:testing:33.3333:Preparing for removal of testing (amd64)
-+pmstatus:testing:66.6667:Removing testing (amd64)
-+pmstatus:testing:100:Removed testing (amd64)" cat apt-progress.log
- 
- # install non-native and ensure we get proper progress info
- exec 3> apt-progress.log
-@@ -79,13 +75,12 @@ testequal "dlstatus:1:0:Retrieving file 1 of 1
- dlstatus:1:0:Retrieving file 1 of 1
- pmstatus:dpkg-exec:0:Running dpkg
- pmstatus:testing2:0:Installing testing2 (i386)
--pmstatus:testing2:16.6667:Preparing testing2 (i386)
--pmstatus:testing2:33.3333:Unpacking testing2 (i386)
--pmstatus:testing2:50:Preparing to configure testing2 (i386)
--pmstatus:dpkg-exec:50:Running dpkg
--pmstatus:testing2:50:Configuring testing2 (i386)
--pmstatus:testing2:66.6667:Configuring testing2 (i386)
--pmstatus:testing2:83.3333:Installed testing2 (i386)
--pmstatus:dpkg-exec:83.3333:Running dpkg" cat apt-progress.log
-+pmstatus:testing2:20:Preparing testing2 (i386)
-+pmstatus:testing2:40:Unpacking testing2 (i386)
-+pmstatus:testing2:60:Preparing to configure testing2 (i386)
-+pmstatus:dpkg-exec:60:Running dpkg
-+pmstatus:testing2:60:Configuring testing2 (i386)
-+pmstatus:testing2:80:Configuring testing2 (i386)
-+pmstatus:testing2:100:Installed testing2 (i386)" cat apt-progress.log
- 
- rm -f apt-progress*.log
 diff --git a/test/integration/test-apt-progress-fd-deb822 b/test/integration/test-apt-progress-fd-deb822
-index badc985..9d22794 100755
+index 58fd732..3359762 100755
 --- a/test/integration/test-apt-progress-fd-deb822
 +++ b/test/integration/test-apt-progress-fd-deb822
-@@ -27,41 +27,37 @@ Message: Installing testing (amd64)
+@@ -27,36 +27,36 @@ Message: Installing testing (amd64)
  
  Status: progress
  Package: testing:amd64
@@ -248,109 +95,10 @@
 -Percent: 83.3333
 +Percent: 100
  Message: Installed testing (amd64)
--
--Status: progress
--Percent: 83.3333
--Message: Running dpkg
- " cat apt-progress.log
  
- 
-diff --git a/test/integration/test-apt-progress-fd-error b/test/integration/test-apt-progress-fd-error
-index 6323007..a47095b 100755
---- a/test/integration/test-apt-progress-fd-error
-+++ b/test/integration/test-apt-progress-fd-error
-@@ -18,7 +18,7 @@ setupaptarchive
- exec 3> apt-progress.log
- testfailure aptget install foo1 foo2 -y -o APT::Status-Fd=3
- msgtest "Ensure correct error message"
--if grep -q "aptarchive/pool/foo2_0.8.15_amd64.deb:36.3636:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1 0.8.15" apt-progress.log; then
-+if grep -q "aptarchive/pool/foo2_0.8.15_amd64.deb:40:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1 0.8.15" apt-progress.log; then
- 	msgpass
- else
- 	cat apt-progress.log
-diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run
-deleted file mode 100755
-index 146fa76..0000000
---- a/test/integration/test-bug-769609-triggers-still-pending-after-run
-+++ /dev/null
-@@ -1,75 +0,0 @@
--#!/bin/sh
--set -e
--
--TESTDIR=$(readlink -f $(dirname $0))
--. $TESTDIR/framework
--
--setupenvironment
--configarchitecture 'amd64'
--
--msgtest 'Check if installed dpkg supports' 'noawait trigger'
--if dpkg-checkbuilddeps -d 'dpkg (>= 1.16.1)' /dev/null; then
--	msgpass
--else
--	msgskip 'dpkg version too old'
--	exit 0
--fi
--configdpkgnoopchroot
--
--buildtriggerpackages() {
--	local TYPE="$1"
--	setupsimplenativepackage "triggerable-$TYPE" 'all' '1.0' 'unstable' "Depends: trigdepends-$TYPE"
--	BUILDDIR="incoming/triggerable-${TYPE}-1.0"
--	cat >${BUILDDIR}/debian/postinst <<EOF
--#!/bin/sh
--if [ "\$1" = 'triggered' ]; then
--	ls -l /proc/self/fd/
--fi
--EOF
--	echo "$TYPE /usr/share/doc" > ${BUILDDIR}/debian/triggers
--	buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
--	rm -rf "$BUILDDIR"
--	buildsimplenativepackage "trigdepends-$TYPE" 'all' '1.0' 'unstable'
--}
--
--#buildtriggerpackages 'interest'
--buildtriggerpackages 'interest-noawait'
--buildsimplenativepackage "trigstuff" 'all' '1.0' 'unstable'
--
--setupaptarchive
--
--runtests() {
--	local TYPE="$1"
--	msgmsg 'Working with trigger type' "$TYPE"
--	testsuccess aptget install triggerable-$TYPE -y
--	cp rootdir/tmp/testsuccess.output terminal.output
--	testsuccess grep '^REWRITE ' terminal.output
--	testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
--
--	testsuccess aptget install trigdepends-$TYPE -y --reinstall
--	cp rootdir/tmp/testsuccess.output terminal.output
--	testsuccess grep '^REWRITE ' terminal.output
--	testsuccess grep ' root root ' terminal.output
--	testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
--
--	testsuccess aptget install trigstuff -y
--	cp rootdir/tmp/testsuccess.output terminal.output
--	testsuccess grep '^REWRITE ' terminal.output
--	testsuccess grep ' root root ' terminal.output
--	testdpkginstalled triggerable-$TYPE trigdepends-$TYPE trigstuff
--
--	testsuccess aptget purge trigstuff -y
--	cp rootdir/tmp/testsuccess.output terminal.output
--	testsuccess grep '^REWRITE ' terminal.output
--	testsuccess grep ' root root ' terminal.output
--	testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
--	testdpkgnotinstalled trigstuff
--
--	testsuccess aptget purge trigdepends-$TYPE -y
--	cp rootdir/tmp/testsuccess.output terminal.output
--	testfailure grep '^REWRITE ' terminal.output
--	testfailure grep ' root root ' terminal.output
--	testdpkgnotinstalled triggerable-$TYPE trigdepends-$TYPE
--}
--#runtests 'interest'
--runtests 'interest-noawait'
+ Status: progress
 diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts
-index 41c0570..d3960d7 100755
+index d86e638..ef6d23b 100755
 --- a/test/integration/test-no-fds-leaked-to-maintainer-scripts
 +++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts
 @@ -59,8 +59,7 @@ startup packages configure
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch
new file mode 100644
index 0000000..04b0406
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch
@@ -0,0 +1,50 @@
+From 33b97e089d4a98d3acd20bd78337dd915b989bc2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
+Date: Fri, 5 Aug 2016 15:24:27 -0500
+Subject: [PATCH] apt 1.2.12: Fix musl build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+methods/connect.cc: Musl doesn't support AI_IDN flag in netdb.h
+header so define it manually.
+apt-pkg/contrib/srvrec.h: Add explicity include of sys/types.h
+to avoid errors in types u_int_SIZE.
+
+Upstream-status: Pending
+
+Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
+---
+ apt-pkg/contrib/srvrec.h | 1 +
+ methods/connect.cc       | 3 +++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
+index 01b8102..15b6875 100644
+--- a/apt-pkg/contrib/srvrec.h
++++ b/apt-pkg/contrib/srvrec.h
+@@ -9,6 +9,7 @@
+ #ifndef SRVREC_H
+ #define SRVREC_H
+ 
++#include <sys/types.h>
+ #include <arpa/nameser.h>
+ #include <vector>
+ #include <string>
+diff --git a/methods/connect.cc b/methods/connect.cc
+index 07a730b..bb0ab5a 100644
+--- a/methods/connect.cc
++++ b/methods/connect.cc
+@@ -33,6 +33,9 @@
+ #include <sys/socket.h>
+ #include <arpa/inet.h>
+ #include <netdb.h>
++#ifndef AI_IDN
++#define AI_IDN 0x0040
++#endif
+ 
+ #include "connect.h"
+ #include "rfc2553emu.h"
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-fix-the-gcc-version-check.patch b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-fix-the-gcc-version-check.patch
index beea56d..3ac9246 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-fix-the-gcc-version-check.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-fix-the-gcc-version-check.patch
@@ -1,4 +1,4 @@
-From 15c6ef6a827d3681ad06e862d27ab3dfb84cb687 Mon Sep 17 00:00:00 2001
+From 53c5d0982f03fd0e24c4195d6e1e42b9ade9d500 Mon Sep 17 00:00:00 2001
 From: Roy Li <rongqing.li@windriver.com>
 Date: Wed, 27 May 2015 14:30:28 +0800
 Subject: [PATCH] fix the gcc version check
@@ -9,37 +9,29 @@
 
 Signed-off-by: Roy Li <rongqing.li@windriver.com>
 ---
- apt-pkg/cacheset.h           |  4 ++--
- apt-pkg/deb/debsrcrecords.cc | 12 ++++++------
- apt-pkg/srcrecords.cc        |  4 ++--
- apt-pkg/srcrecords.h         |  4 ++--
- apt-pkg/vendorlist.cc        |  4 ++--
- 5 files changed, 14 insertions(+), 14 deletions(-)
+ apt-pkg/contrib/macros.h     | 2 +-
+ apt-pkg/deb/debsrcrecords.cc | 4 ++--
+ apt-pkg/srcrecords.cc        | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
 
-diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h
-index b7229bc..8cc2917 100644
---- a/apt-pkg/cacheset.h
-+++ b/apt-pkg/cacheset.h
-@@ -119,12 +119,12 @@ public:
- 		inline std::string FullName(bool const Pretty) const { return getPkg().FullName(Pretty); }
- 		inline std::string FullName() const { return getPkg().FullName(); }
- 		APT_DEPRECATED inline const char *Section() const {
+diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h
+index 2727fd8..0ecae50 100644
+--- a/apt-pkg/contrib/macros.h
++++ b/apt-pkg/contrib/macros.h
+@@ -136,7 +136,7 @@
+ #endif
+ #endif
+ 
 -#if __GNUC__ >= 4
 +#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	#pragma GCC diagnostic push
- 	#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- #endif
- 	   return getPkg().Section();
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	#pragma GCC diagnostic pop
- #endif
- 		}
+ 	#define APT_IGNORE_DEPRECATED_PUSH \
+ 		_Pragma("GCC diagnostic push") \
+ 		_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
 diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc
-index 49a348d..4bc9dcf 100644
+index e8295de..40160b2 100644
 --- a/apt-pkg/deb/debsrcrecords.cc
 +++ b/apt-pkg/deb/debsrcrecords.cc
-@@ -126,13 +126,13 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &F)
+@@ -139,13 +139,13 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &F)
     for (std::vector<pkgSrcRecords::File2>::const_iterator f2 = F2.begin(); f2 != F2.end(); ++f2)
     {
        pkgSrcRecords::File2 f;
@@ -55,46 +47,11 @@
  	#pragma GCC diagnostic pop
  #endif
        f.Path = f2->Path;
-@@ -190,14 +190,14 @@ bool debSrcRecordParser::Files2(std::vector<pkgSrcRecords::File2> &List)
- 	 // we have it already, store the new hash and be done
- 	 if (file != List.end())
- 	 {
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	// set for compatibility only, so warn users not us
- 	#pragma GCC diagnostic push
- 	#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- #endif
- 	    if (checksumField == "Files")
- 	       file->MD5Hash = hash;
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	#pragma GCC diagnostic pop
- #endif
- 	    // an error here indicates that we have two different hashes for the same file
-@@ -212,7 +212,7 @@ bool debSrcRecordParser::Files2(std::vector<pkgSrcRecords::File2> &List)
- 	 F.FileSize = strtoull(size.c_str(), NULL, 10);
- 	 F.Hashes.push_back(hashString);
- 
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	// set for compatibility only, so warn users not us
- 	#pragma GCC diagnostic push
- 	#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-@@ -220,7 +220,7 @@ bool debSrcRecordParser::Files2(std::vector<pkgSrcRecords::File2> &List)
- 	 F.Size = F.FileSize;
- 	 if (checksumField == "Files")
- 	    F.MD5Hash = hash;
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	#pragma GCC diagnostic pop
- #endif
- 
 diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc
-index 3175ee7..340e796 100644
+index 53d7e60..1484828 100644
 --- a/apt-pkg/srcrecords.cc
 +++ b/apt-pkg/srcrecords.cc
-@@ -160,7 +160,7 @@ bool pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2> &F2)/*{{{*/
+@@ -157,7 +157,7 @@ bool pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2> &F2)/*{{{*/
     for (std::vector<pkgSrcRecords::File>::const_iterator f = F.begin(); f != F.end(); ++f)
     {
        pkgSrcRecords::File2 f2;
@@ -103,7 +60,7 @@
  	#pragma GCC diagnostic push
  	#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  #endif
-@@ -168,7 +168,7 @@ bool pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2> &F2)/*{{{*/
+@@ -165,7 +165,7 @@ bool pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2> &F2)/*{{{*/
        f2.Size = f->Size;
        f2.Hashes.push_back(HashString("MD5Sum", f->MD5Hash));
        f2.FileSize = f->Size;
@@ -112,49 +69,6 @@
  	#pragma GCC diagnostic pop
  #endif
        f2.Path = f->Path;
-diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h
-index dde22bd..91f8061 100644
---- a/apt-pkg/srcrecords.h
-+++ b/apt-pkg/srcrecords.h
-@@ -30,7 +30,7 @@ class pkgSrcRecords
- {
-    public:
- 
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	// ensure that con- & de-structor don't trigger this warning
- 	#pragma GCC diagnostic push
- 	#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-@@ -48,7 +48,7 @@ class pkgSrcRecords
-       unsigned long long FileSize;
-       HashStringList Hashes;
-    };
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	#pragma GCC diagnostic pop
- #endif
- 
-diff --git a/apt-pkg/vendorlist.cc b/apt-pkg/vendorlist.cc
-index fb33ff1..ba1d3c3 100644
---- a/apt-pkg/vendorlist.cc
-+++ b/apt-pkg/vendorlist.cc
-@@ -11,7 +11,7 @@
- 
- #include <apti18n.h>
- 
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	#pragma GCC diagnostic push
- 	#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- #endif
-@@ -163,6 +163,6 @@ const Vendor* pkgVendorList::FindVendor(const std::vector<string> GPGVOutput)	/*
- }
- 									/*}}}*/
- 
--#if __GNUC__ >= 4
-+#if __GNUC__ >= 4 + (6 >= __GNUC_MINOR__)
- 	#pragma GCC diagnostic pop
- #endif
 -- 
-1.9.1
+2.1.4
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-remove-Wsuggest-attribute-from-CFLAGS.patch b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-remove-Wsuggest-attribute-from-CFLAGS.patch
index 7c42ff0..47870e3 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-remove-Wsuggest-attribute-from-CFLAGS.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/0001-remove-Wsuggest-attribute-from-CFLAGS.patch
@@ -1,4 +1,4 @@
-From 2bff7ee06a4f96e7d326991d61fb86f8aa651d48 Mon Sep 17 00:00:00 2001
+From 9fdf50d63df08ee65e7d8e62c35f19ac4841bca9 Mon Sep 17 00:00:00 2001
 From: Roy Li <rongqing.li@windriver.com>
 Date: Wed, 27 May 2015 09:48:45 +0800
 Subject: [PATCH] remove Wsuggest-attribute from CXXFLAGS
@@ -15,29 +15,29 @@
  2 files changed, 2 deletions(-)
 
 diff --git a/buildlib/environment.mak.in b/buildlib/environment.mak.in
-index b0a8d9d..91ed011 100644
+index 9620722..c344d01 100644
 --- a/buildlib/environment.mak.in
 +++ b/buildlib/environment.mak.in
-@@ -11,7 +11,6 @@ CPPFLAGS+= @CPPFLAGS@ @DEFS@ -D_REENTRANT -D_FORTIFY_SOURCE=2
- CXX = @CXX@
- CXXFLAGS+= @CXXFLAGS@ -Wall -Wextra
+@@ -14,7 +14,6 @@ CXXFLAGS+= @CXXFLAGS@ -Wall -Wextra
  CXXFLAGS+= -Wcast-align -Wlogical-op -Wredundant-decls -Wmissing-declarations -Wunsafe-loop-optimizations
--CXXFLAGS+= -Wsuggest-attribute=pure -Wsuggest-attribute=const -Wsuggest-attribute=noreturn
+ CXXFLAGS+= -Wctor-dtor-privacy -Wdisabled-optimization -Winit-self -Wmissing-include-dirs -Wnoexcept -Wsign-promo -Wundef
+ # suggests methods which already have such an attribute
+-#CXXFLAGS+= -Wsuggest-attribute=pure -Wsuggest-attribute=const -Wsuggest-attribute=noreturn
+ # sanitize options to be enabled for testing
+ #CXXFLAGS+= -fsanitize=address -fsanitize=undefined -fno-sanitize=vptr
  # a bit too pedantic to be run by default
- #CXXFLAGS+= -Wpedantic -Wno-long-long -Wno-vla -Wno-variadic-macros
- NUM_PROCS = @NUM_PROCS@
 diff --git a/test/libapt/makefile b/test/libapt/makefile
-index 7f23ace..e805f13 100644
+index 5ff9cf6..c5b5190 100644
 --- a/test/libapt/makefile
 +++ b/test/libapt/makefile
-@@ -39,7 +39,6 @@ CXXFLAGS += -pthread
+@@ -40,7 +40,6 @@ CXXFLAGS += -pthread
  # disable some flags for gtest again
  CXXFLAGS+= -Wno-missing-declarations
  CXXFLAGS+= -Wno-missing-field-initializers
 -CXXFLAGS+= -Wno-suggest-attribute=pure -Wno-suggest-attribute=const -Wno-suggest-attribute=noreturn
+ CXXFLAGS+= -Wno-undef
  
  # All Google Test headers.  Usually you shouldn't change this definition.
- GTEST_HEADERS = /usr/include/gtest/*.h \
 -- 
-1.9.1
+2.1.4
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/disable-test.patch b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/disable-test.patch
index 676795d..0532671 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/disable-test.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt/disable-test.patch
@@ -1,35 +1,51 @@
-[PATCH] disable test
+From 67bc7948e0a721c75d636931abc105da5dcb0763 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
+Date: Thu, 26 May 2016 15:32:11 -0500
+Subject: [PATCH] [PATCH] disable test
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
 
 Upstream-Status: Inappropriate [configuration]
 
 test needs gtest package, so not build the test dir
 
 Signed-off-by: Roy Li <rongqing.li@windriver.com>
+Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
 ---
- Makefile     | 7 +++----
- configure.ac | 6 ------
- 2 files changed, 3 insertions(+), 10 deletions(-)
+ Makefile     | 9 +++------
+ configure.ac | 7 -------
+ 2 files changed, 3 insertions(+), 13 deletions(-)
 
 diff --git a/Makefile b/Makefile
-index 5f5fb27..5070e96 100644
+index 7680f08..69527a5 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -9,8 +9,8 @@ endif
  .PHONY: default
  default: startup all
  
--.PHONY: headers library clean veryclean all binary program doc test update-po
+-.PHONY: fast headers library clean veryclean all binary program doc test update-po
 -all headers library clean veryclean binary program doc manpages docbook test update-po startup dirs:
-+.PHONY: headers library clean veryclean all binary program doc update-po
++.PHONY: fast headers library clean veryclean all binary program doc update-po
 +all headers library clean veryclean binary program doc manpages docbook update-po startup dirs:
  	$(MAKE) -C vendor $@
  	$(MAKE) -C apt-pkg $@
  	$(MAKE) -C apt-inst $@
-@@ -21,9 +21,8 @@ all headers library clean veryclean binary program doc manpages docbook test upd
+@@ -21,8 +21,6 @@ all headers library clean veryclean binary program doc manpages docbook test upd
  	$(MAKE) -C dselect $@
- #	$(MAKE) -C doc $@
+ 	$(MAKE) -C doc $@
  	$(MAKE) -C po $@
--	$(MAKE) -C test $@
+-	# FIXME: -C test has issue swith parallel builds, investigate!
+-	-$(MAKE) -C test $@
+ 
+ fast:
+ 	$(MAKE) -C vendor all
+@@ -32,9 +30,8 @@ fast:
+ 	$(MAKE) -C methods all
+ 	$(MAKE) -C cmdline all
+ 	$(MAKE) -C ftparchive all
+-	$(MAKE) -C test all
  
 -all headers library clean veryclean binary program doc manpages docbook test update-po: startup dirs
 +all headers library clean veryclean binary program doc manpages docbook update-po: startup dirs
@@ -37,22 +53,23 @@
  dirs: startup
  
 diff --git a/configure.ac b/configure.ac
-index 5663aaf..b0f9564 100644
+index 1f05da5..e47f459 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -89,12 +89,6 @@ AC_CHECK_LIB(curl, curl_easy_init,
+@@ -90,13 +90,6 @@ AC_CHECK_LIB(curl, curl_easy_init,
       AC_MSG_ERROR([failed: I need CURL due https support]),
  )
  
 -AC_LANG_PUSH([C++])
 -AC_CHECK_HEADER(gtest/gtest.h,,
--     AC_MSG_ERROR([failed: I need gtest to build tests]),
+-     AC_MSG_WARN([failed: I need gtest (packaged as libgtest-dev) for unit testing]),
 -)
 -AC_LANG_POP([C++])
 -
- 
+-
  AC_SUBST(BDBLIB)
  
+ HAVE_ZLIB=no
 -- 
-1.9.1
+2.1.4
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt_1.0.10.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt_1.0.10.1.bb
deleted file mode 100644
index 85c0d56..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt_1.0.10.1.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DEPENDS = "curl db zlib"
-RDEPENDS_${PN} = "dpkg bash debianutils"
-require apt.inc
-
-require apt-package.inc
-
-PACKAGECONFIG ??= "lzma"
-PACKAGECONFIG[lzma] = "ac_cv_lib_lzma_lzma_easy_encoder=yes,ac_cv_lib_lzma_lzma_easy_encoder=no,xz"
-PACKAGECONFIG[bz2] = "ac_cv_lib_bz2_BZ2_bzopen=yes,ac_cv_lib_bz2_BZ2_bzopen=no,bzip2"
-
-FILES_${PN} += "${bindir}/apt-key"
-apt-manpages += "doc/apt-key.8"
-
-do_install_append() {
-    #Write the correct apt-architecture to apt.conf
-    APT_CONF=${D}/etc/apt/apt.conf
-    echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
-    oe_libinstall -so -C bin libapt-private ${D}${libdir}/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/apt_1.2.12.bb b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt_1.2.12.bb
new file mode 100644
index 0000000..ae0bce9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/apt_1.2.12.bb
@@ -0,0 +1,20 @@
+DEPENDS = "curl db zlib"
+RDEPENDS_${PN} = "dpkg bash debianutils"
+require apt.inc
+
+require apt-package.inc
+
+PACKAGECONFIG ??= "lzma"
+PACKAGECONFIG[lzma] = "ac_cv_lib_lzma_lzma_easy_encoder=yes,ac_cv_lib_lzma_lzma_easy_encoder=no,xz"
+PACKAGECONFIG[bz2] = "ac_cv_lib_bz2_BZ2_bzopen=yes,ac_cv_lib_bz2_BZ2_bzopen=no,bzip2"
+PACKAGECONFIG[lz4] = "ac_cv_lib_lz4_LZ4F_createCompressionContext=yes,ac_cv_lib_lz4_LZ4F_createCompressionContext=no,lz4"
+
+FILES_${PN} += "${bindir}/apt-key"
+apt-manpages += "doc/apt-key.8"
+
+do_install_append() {
+    #Write the correct apt-architecture to apt.conf
+    APT_CONF=${D}/etc/apt/apt.conf
+    echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
+    oe_libinstall -so -C bin libapt-private ${D}${libdir}/
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/apt/files/no-curl.patch b/import-layers/yocto-poky/meta/recipes-devtools/apt/files/no-curl.patch
index 30238fa..0838552 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/apt/files/no-curl.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/apt/files/no-curl.patch
@@ -1,13 +1,23 @@
 Upstream-Status: Inappropriate [configuration]
+From 5d61ac822fd9a3871cd5089389c210606232ecdc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
+Date: Thu, 26 May 2016 15:34:45 -0500
+Subject: [PATCH] Upstream-Status: Inappropriate [configuration]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
 
+Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
 ---
- configure.in     |    6 ------
- methods/makefile |    7 -------
- 2 files changed, 13 deletions(-)
+ configure.ac     | 7 -------
+ methods/makefile | 7 -------
+ 2 files changed, 14 deletions(-)
 
+diff --git a/configure.ac b/configure.ac
+index e47f459..cd24264 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -86,12 +86,6 @@ AC_CHECK_HEADER(db.h,
+@@ -83,13 +83,6 @@ AC_CHECK_HEADER(db.h,
  
  LIBS="$saveLIBS"
  
@@ -17,9 +27,12 @@
 -        curl_ok=no)],
 -     AC_MSG_ERROR([failed: I need CURL due https support]),
 -)
- 
+-
  AC_SUBST(BDBLIB)
  
+ HAVE_ZLIB=no
+diff --git a/methods/makefile b/methods/makefile
+index 3274e92..255086b 100644
 --- a/methods/makefile
 +++ b/methods/makefile
 @@ -51,13 +51,6 @@ LIB_MAKES = apt-pkg/makefile
@@ -28,11 +41,14 @@
  
 -# The https method
 -PROGRAM=https
--SLIBS = -lapt-pkg -lcurl $(INTLLIBS)
+-SLIBS = -lapt-pkg -lcurl $(INTLLIBS) -lresolv
 -LIB_MAKES = apt-pkg/makefile
 -SOURCE = https.cc server.cc
 -include $(PROGRAM_H)
 -
  # The ftp method
  PROGRAM=ftp
- SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS)
+ SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) -lresolv
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/autoconf/autoconf/autoreconf-include.patch b/import-layers/yocto-poky/meta/recipes-devtools/autoconf/autoconf/autoreconf-include.patch
deleted file mode 100644
index 31326f0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/autoconf/autoconf/autoreconf-include.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Pending
-
-Index: autoconf-2.63/bin/autoreconf.in
-===================================================================
---- autoconf-2.63.orig/bin/autoreconf.in	2008-08-28 03:08:10.000000000 +0100
-+++ autoconf-2.63/bin/autoreconf.in	2008-12-31 17:38:40.000000000 +0000
-@@ -190,6 +190,7 @@
-   $autoconf   .= join (' --prepend-include=', '', map { shell_quote ($_) } @prepend_include);
-   $autoheader .= join (' --include=', '', map { shell_quote ($_) } @include);
-   $autoheader .= join (' --prepend-include=', '', map { shell_quote ($_) } @prepend_include);
-+  $aclocal    .= join (' -I ', '', map { shell_quote ($_) } @include);
- 
-   # --install and --symlink;
-   if ($install)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/autoconf/autoconf_2.69.bb b/import-layers/yocto-poky/meta/recipes-devtools/autoconf/autoconf_2.69.bb
index adb6ad7..aa1877a 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/autoconf/autoconf_2.69.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/autoconf/autoconf_2.69.bb
@@ -5,8 +5,7 @@
 LICENSE = "GPLv2 & GPLv3"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
 		    file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504"
-SRC_URI += "file://autoreconf-include.patch \
-	    file://check-automake-cross-warning.patch \
+SRC_URI += "file://check-automake-cross-warning.patch \
 	    file://autoreconf-exclude.patch \
 	    file://autoreconf-gnuconfigize.patch \
             file://config_site.patch \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen-native_5.18.10.bb b/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen-native_5.18.10.bb
new file mode 100644
index 0000000..274427c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen-native_5.18.10.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Automated text and program generation tool"
+DESCRIPTION = "AutoGen is a tool designed to simplify the creation and\
+ maintenance of programs that contain large amounts of repetitious text.\
+ It is especially valuable in programs that have several blocks of text\
+ that must be kept synchronized."
+HOMEPAGE = "http://www.gnu.org/software/autogen/"
+SECTION = "devel"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "${GNU_MIRROR}/autogen/rel${PV}/autogen-${PV}.tar.gz \
+           file://increase-timeout-limit.patch \
+           file://mk-tpl-config.sh-force-exit-value-to-be-0-in-subproc.patch \
+           file://fix-script-err-when-processing-libguile.patch \
+"
+
+SRC_URI[md5sum] = "2d1b5226e1929d0680011df631289571"
+SRC_URI[sha256sum] = "0b8681d9724c481d3b726b5a9e81d3d09dc7f307d1a801c76d0a30d8f843d20a"
+
+UPSTREAM_CHECK_URI = "http://ftp.gnu.org/gnu/autogen/"
+UPSTREAM_CHECK_REGEX = "rel(?P<pver>\d+(\.\d+)+)/"
+
+DEPENDS = "guile-native libtool-native libxml2-native"
+
+inherit autotools texinfo native pkgconfig
+
+# autogen-native links against libguile which may have been relocated with sstate
+# these environment variables ensure there isn't a relocation issue
+export GUILE_LOAD_PATH = "${STAGING_DATADIR_NATIVE}/guile/2.0"
+export GUILE_LOAD_COMPILED_PATH = "${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache"
+
+do_install_append () {
+	create_wrapper ${D}/${bindir}/autogen \
+		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \
+		GUILE_LOAD_COMPILED_PATH=${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen-native_5.18.6.bb b/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen-native_5.18.6.bb
deleted file mode 100644
index d77b827..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen-native_5.18.6.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Automated text and program generation tool"
-DESCRIPTION = "AutoGen is a tool designed to simplify the creation and\
- maintenance of programs that contain large amounts of repetitious text.\
- It is especially valuable in programs that have several blocks of text\
- that must be kept synchronized."
-HOMEPAGE = "http://www.gnu.org/software/autogen/"
-SECTION = "devel"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "${GNU_MIRROR}/autogen/rel${PV}/autogen-${PV}.tar.gz \
-           file://increase-timeout-limit.patch \
-           file://mk-tpl-config.sh-force-exit-value-to-be-0-in-subproc.patch \
-           file://redirect-output-dir.patch \
-"
-
-SRC_URI[md5sum] = "fdee403e524c0af3ded6b3becb365671"
-SRC_URI[sha256sum] = "2fc7f12a5ecb3b1e8bd4364aa906b837cff01f80edb7d2fb38ed8b9dfbcd3271"
-
-UPSTREAM_CHECK_URI = "http://ftp.gnu.org/gnu/autogen/"
-UPSTREAM_CHECK_REGEX = "rel(?P<pver>\d+(\.\d+)+)/"
-
-DEPENDS = "guile-native libtool-native libxml2-native"
-
-inherit autotools texinfo native pkgconfig
-
-# autogen-native links against libguile which may have been relocated with sstate
-# these environment variables ensure there isn't a relocation issue
-export GUILE_LOAD_PATH = "${STAGING_DATADIR_NATIVE}/guile/2.0"
-export GUILE_LOAD_COMPILED_PATH = "${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache"
-
-do_install_append () {
-	create_wrapper ${D}/${bindir}/autogen \
-		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \
-		GUILE_LOAD_COMPILED_PATH=${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen/fix-script-err-when-processing-libguile.patch b/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen/fix-script-err-when-processing-libguile.patch
new file mode 100644
index 0000000..694a395
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen/fix-script-err-when-processing-libguile.patch
@@ -0,0 +1,37 @@
+autogen-native: fix script err when processing libguile
+
+do_configure for autogen will fail if project directory path
+contains '-I' character, which is caused by the unsuitable sed
+script when processing libguile.
+
+Upstream-Status: Pending
+
+Signed-off-by: Zhenbo Gao <zhenbo.gao@windriver.com>
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+
+diff --git a/config/ag_macros.m4 b/config/ag_macros.m4
+index 58186b6..58ed2ad 100644
+--- a/config/ag_macros.m4
++++ b/config/ag_macros.m4
+@@ -32,7 +32,7 @@ AC_DEFUN([INVOKE_AG_MACROS_LAST],[
+   GUILE_FLAGS
+   [ag_gv=`gdir=\`pkg-config --cflags-only-I \
+   guile-${GUILE_EFFECTIVE_VERSION} | \
+-  sed 's/-I *//;s/ *-I.*/ /g'\`
++  sed 's/ *-I *\// \//g'\`
+   for d in $gdir
+   do  test -f "$d/libguile/version.h" && gdir=$d && break
+   done
+diff --git a/config/misc.def b/config/misc.def
+index 490d361..6e183ef 100644
+--- a/config/misc.def
++++ b/config/misc.def
+@@ -342,7 +342,7 @@ do-always = <<- _END_ALWAYS_
+ 	GUILE_FLAGS
+ 	[ag_gv=`gdir=\`pkg-config --cflags-only-I \
+ 			guile-${GUILE_EFFECTIVE_VERSION} | \
+-			sed 's/-I *//;s/ *-I.*/ /g'\`
++			sed 's/ *-I *\// \//g'\`
+ 		test -z "$gdir" && gdir=/usr/include
+ 		for d in $gdir
+ 		do  test -f "$d/libguile/version.h" && gdir=$d && break
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen/redirect-output-dir.patch b/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen/redirect-output-dir.patch
deleted file mode 100644
index fc5a71b..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/autogen/autogen/redirect-output-dir.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-[PATCH] redirect the dir of mklibsrc-log.tx
-
-Upstream-Status: Pending
-
-redirect mklibsrc-log.tx to builddir, not /tmp; otherwise mklibsrc-log.tx
-maybe unable to be written if other users is building autogen at the same time.
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- pkg/libopts/mklibsrc.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pkg/libopts/mklibsrc.sh b/pkg/libopts/mklibsrc.sh
-index 416b402..d612fbc 100644
---- a/pkg/libopts/mklibsrc.sh
-+++ b/pkg/libopts/mklibsrc.sh
-@@ -19,7 +19,7 @@
- ##  with this program.  If not, see <http://www.gnu.org/licenses/>.
- 
- set -ex
--exec 2> /tmp/mklibsrc-log.tx
-+exec 2> $top_builddir/mklibsrc-log.tx
- 
- top_builddir=`cd $top_builddir ; pwd`
- top_srcdir=`cd $top_srcdir ; pwd`
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/automake/automake/python-libdir.patch b/import-layers/yocto-poky/meta/recipes-devtools/automake/automake/python-libdir.patch
index 47541bd..2a48b13 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/automake/automake/python-libdir.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/automake/automake/python-libdir.patch
@@ -1,3 +1,8 @@
+From 472a3d36c97ef7535f05d6c185edcbc22b0074c4 Mon Sep 17 00:00:00 2001
+From: Kumar Gala <galak@kernel.crashing.org>
+Date: Thu, 11 Aug 2011 01:26:33 -0500
+Subject: [PATCH 1/4] automake: Update for python.m4 to respect libdir
+
 Upstream-Status: Inappropriate [embedded specific]
 
 Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
@@ -5,11 +10,17 @@
 Updated for automake-1.12.6
 
 Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
 
-diff -Nurd automake-1.12.6/m4/python.m4 automake-1.12.6/m4/python.m4
---- automake-1.12.6/m4/python.m4	2012-12-13 22:02:25.000000000 +0200
-+++ automake-1.12.6/m4/python.m4	2012-12-27 17:40:26.558164660 +0200
-@@ -91,12 +91,13 @@
+---
+ m4/python.m4 | 27 +++++++--------------------
+ 1 file changed, 7 insertions(+), 20 deletions(-)
+
+diff --git a/m4/python.m4 b/m4/python.m4
+index 5b2c695..ed19261 100644
+--- a/m4/python.m4
++++ b/m4/python.m4
+@@ -91,12 +91,13 @@ AC_DEFUN([AM_PATH_PYTHON],
      [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
    AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
  
@@ -25,17 +36,23 @@
    AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
  
    dnl At times (like when building shared libraries) you may want
-@@ -148,7 +149,8 @@
- else:
-     from distutils import sysconfig
-     sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+@@ -141,14 +142,7 @@ except ImportError:
+      else
+        am_py_prefix=$prefix
+      fi
+-     am_cv_python_pythondir=`$PYTHON -c "
+-$am_python_setup_sysconfig
+-if can_use_sysconfig:
+-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+-else:
+-    from distutils import sysconfig
+-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
 -sys.stdout.write(sitedir)"`
-+sys.stdout.write(sitedir)" ||
-+     echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
++     am_cv_python_pythondir=`echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
       case $am_cv_python_pythondir in
       $am_py_prefix*)
         am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-@@ -158,7 +160,7 @@
+@@ -158,7 +152,7 @@ sys.stdout.write(sitedir)"`
         case $am_py_prefix in
           /usr|/System*) ;;
           *)
@@ -44,17 +61,23 @@
  	  ;;
         esac
         ;;
-@@ -190,7 +192,8 @@
- else:
-     from distutils import sysconfig
-     sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+@@ -183,14 +177,7 @@ sys.stdout.write(sitedir)"`
+      else
+        am_py_exec_prefix=$exec_prefix
+      fi
+-     am_cv_python_pyexecdir=`$PYTHON -c "
+-$am_python_setup_sysconfig
+-if can_use_sysconfig:
+-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+-else:
+-    from distutils import sysconfig
+-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
 -sys.stdout.write(sitedir)"`
-+sys.stdout.write(sitedir)" ||
-+     echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
++     am_cv_python_pyexecdir=`echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
       case $am_cv_python_pyexecdir in
       $am_py_exec_prefix*)
         am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-@@ -200,7 +203,7 @@
+@@ -200,7 +187,7 @@ sys.stdout.write(sitedir)"`
         case $am_py_exec_prefix in
           /usr|/System*) ;;
           *)
@@ -63,3 +86,6 @@
  	   ;;
         esac
         ;;
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-2.26.inc b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-2.26.inc
deleted file mode 100644
index 6d535fc..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-2.26.inc
+++ /dev/null
@@ -1,42 +0,0 @@
-LIC_FILES_CHKSUM="\
-    file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
-    file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674\
-    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504\
-    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6\
-    file://gas/COPYING;md5=d32239bcb673463ab874e80d47fae504\
-    file://include/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
-    file://include/COPYING3;md5=d32239bcb673463ab874e80d47fae504\
-    file://libiberty/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7\
-    file://bfd/COPYING;md5=d32239bcb673463ab874e80d47fae504\
-    "
-
-def binutils_branch_version(d):
-    pvsplit = d.getVar('PV', True).split('.')
-    return pvsplit[0] + "_" + pvsplit[1]
-
-BINUPV = "${@binutils_branch_version(d)}"
-
-UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
-
-SRCREV = "71fa566a9cf2597b60a58c1d7c148bab637454a6"
-SRC_URI = "\
-     git://sourceware.org/git/binutils-gdb.git;branch=binutils-${BINUPV}-branch;protocol=git \
-     file://0002-configure-widen-the-regexp-for-SH-architectures.patch \
-     file://0003-Point-scripts-location-to-libdir.patch \
-     file://0004-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \
-     file://0005-Explicitly-link-with-libm-on-uclibc.patch \
-     file://0006-Use-libtool-2.4.patch \
-     file://0007-Add-the-armv5e-architecture-to-binutils.patch \
-     file://0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch \
-     file://0009-warn-for-uses-of-system-directories-when-cross-linki.patch \
-     file://0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
-     file://0011-Change-default-emulation-for-mips64-linux.patch \
-     file://0012-Add-support-for-Netlogic-XLP.patch \
-     file://0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch \
-     file://0014-Correct-nios2-_gp-address-computation.patch \
-"
-S  = "${WORKDIR}/git"
-
-do_configure_prepend () {
-        rm -rf ${S}/gdb ${S}/libdecnumber ${S}/readline ${S}/sim
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-2.27.inc b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-2.27.inc
new file mode 100644
index 0000000..af1420b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-2.27.inc
@@ -0,0 +1,44 @@
+LIC_FILES_CHKSUM="\
+    file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
+    file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674\
+    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504\
+    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6\
+    file://gas/COPYING;md5=d32239bcb673463ab874e80d47fae504\
+    file://include/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
+    file://include/COPYING3;md5=d32239bcb673463ab874e80d47fae504\
+    file://libiberty/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7\
+    file://bfd/COPYING;md5=d32239bcb673463ab874e80d47fae504\
+    "
+
+def binutils_branch_version(d):
+    pvsplit = d.getVar('PV', True).split('.')
+    return pvsplit[0] + "_" + pvsplit[1]
+
+BINUPV = "${@binutils_branch_version(d)}"
+
+UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
+
+SRCREV = "5fe53ce37f9d9dd544ec8cc9e2863b68e1a61f4c"
+SRC_URI = "\
+     git://sourceware.org/git/binutils-gdb.git;branch=binutils-${BINUPV}-branch;protocol=git \
+     file://0002-configure-widen-the-regexp-for-SH-architectures.patch \
+     file://0003-Point-scripts-location-to-libdir.patch \
+     file://0004-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \
+     file://0005-Explicitly-link-with-libm-on-uclibc.patch \
+     file://0006-Use-libtool-2.4.patch \
+     file://0007-Add-the-armv5e-architecture-to-binutils.patch \
+     file://0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch \
+     file://0009-warn-for-uses-of-system-directories-when-cross-linki.patch \
+     file://0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
+     file://0011-Change-default-emulation-for-mips64-linux.patch \
+     file://0012-Add-support-for-Netlogic-XLP.patch \
+     file://0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
+     file://0014-libtool-remove-rpath.patch \
+     file://0015-binutils-mips-gas-pic-relax-linkonce.diff \
+     file://0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch \
+"
+S  = "${WORKDIR}/git"
+
+do_configure_prepend () {
+        rm -rf ${S}/gdb ${S}/libdecnumber ${S}/readline ${S}/sim
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross-canadian_2.26.bb b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross-canadian_2.27.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross-canadian_2.26.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross-canadian_2.27.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross_2.26.bb b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross_2.27.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross_2.26.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-cross_2.27.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-crosssdk_2.26.bb b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-crosssdk_2.26.bb
deleted file mode 100644
index 788106f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-crosssdk_2.26.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require binutils-cross_${PV}.bb
-
-inherit crosssdk
-
-PN = "binutils-crosssdk-${TARGET_ARCH}"
-
-PROVIDES = "virtual/${TARGET_PREFIX}binutils-crosssdk"
-
-SRC_URI += "file://0001-Generate-relocatable-SDKs.patch"
-
-do_configure_prepend () {
-	sed -i 's#/usr/local/lib /lib /usr/lib#${SDKPATHNATIVE}/lib ${SDKPATHNATIVE}/usr/lib /usr/local/lib /lib /usr/lib#' ${S}/ld/configure.tgt
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-crosssdk_2.27.bb b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-crosssdk_2.27.bb
new file mode 100644
index 0000000..62c03d7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils-crosssdk_2.27.bb
@@ -0,0 +1,13 @@
+require binutils-cross_${PV}.bb
+
+inherit crosssdk
+
+PN = "binutils-crosssdk-${SDK_SYS}"
+
+PROVIDES = "virtual/${TARGET_PREFIX}binutils-crosssdk"
+
+SRC_URI += "file://0001-Generate-relocatable-SDKs.patch"
+
+do_configure_prepend () {
+	sed -i 's#/usr/local/lib /lib /usr/lib#${SDKPATHNATIVE}/lib ${SDKPATHNATIVE}/usr/lib /usr/local/lib /lib /usr/lib#' ${S}/ld/configure.tgt
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils.inc b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils.inc
index 43e2aa2..75d190f 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils.inc
@@ -57,7 +57,6 @@
 	strings \
 	strip \
 "
-USE_ALTERNATIVES_FOR_remove_mips = "ld.gold dwp"
 
 python do_package_prepend() {
     make_alts = d.getVar("USE_ALTERNATIVES_FOR", True) or ""
@@ -72,6 +71,7 @@
 
 EXTRA_OECONF = "--program-prefix=${TARGET_PREFIX} \
                 --disable-werror \
+                --enable-deterministic-archives \
                 --enable-plugins \
                 ${LDGOLD} \
                 ${@bb.utils.contains('DISTRO_FEATURES', 'multiarch', '--enable-64-bit-bfd', '', d)}"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0001-Generate-relocatable-SDKs.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0001-Generate-relocatable-SDKs.patch
index 91f9017..cad704a 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0001-Generate-relocatable-SDKs.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0001-Generate-relocatable-SDKs.patch
@@ -1,7 +1,7 @@
-From 3c75355342a8562ccb65b8bbbe81a0495fec5c57 Mon Sep 17 00:00:00 2001
+From 2dae6b137ce609fd008f2063034a4403d95484c5 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:58:54 +0000
-Subject: [PATCH 01/14] Generate relocatable SDKs
+Subject: [PATCH 01/13] Generate relocatable SDKs
 
 This patch will modify the ELF linker scripts so that the crosssdk
 linker will generate binaries with a 4096 bytes PT_INTERP section. When the binaries
@@ -18,7 +18,7 @@
  2 files changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/ld/genscripts.sh b/ld/genscripts.sh
-index a84d233..d12c4e2 100755
+index eb262e7..1a3b8bc 100755
 --- a/ld/genscripts.sh
 +++ b/ld/genscripts.sh
 @@ -277,6 +277,7 @@ DATA_ALIGNMENT_u="${DATA_ALIGNMENT_u-${DATA_ALIGNMENT_r}}"
@@ -43,7 +43,7 @@
  LD_FLAG=
  DATA_ALIGNMENT=${DATA_ALIGNMENT_}
 diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
-index ec78c90..f9e7a31 100644
+index f0c6439..223c55f 100644
 --- a/ld/scripttempl/elf.sc
 +++ b/ld/scripttempl/elf.sc
 @@ -136,8 +136,8 @@ if test -n "${COMMONPAGESIZE}"; then
@@ -58,5 +58,5 @@
  if test -z "$PLT"; then
    IPLT=".iplt         ${RELOCATING-0} : { *(.iplt) }"
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0002-configure-widen-the-regexp-for-SH-architectures.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0002-configure-widen-the-regexp-for-SH-architectures.patch
index 4a202d0..8d7cf00 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0002-configure-widen-the-regexp-for-SH-architectures.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0002-configure-widen-the-regexp-for-SH-architectures.patch
@@ -1,7 +1,7 @@
-From b1ae604880562ed065f614a745d3f8922838bc5a Mon Sep 17 00:00:00 2001
+From e4cd40722f597dff39c7214fab1742dd5bcc67eb Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:07:33 +0000
-Subject: [PATCH 02/14] configure: widen the regexp for SH architectures
+Subject: [PATCH 02/13] configure: widen the regexp for SH architectures
 
 gprof needs to know about uclibc
 
@@ -14,10 +14,10 @@
  2 files changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/configure b/configure
-index 34b66f7..85414ab 100755
+index ad3dfb7..2a74a77 100755
 --- a/configure
 +++ b/configure
-@@ -3445,7 +3445,7 @@ case "${target}" in
+@@ -3444,7 +3444,7 @@ case "${target}" in
      ;;
    s390-*-* | s390x-*-*)
      ;;
@@ -26,7 +26,7 @@
      ;;
    sh64-*-* | sh5*-*-*)
      ;;
-@@ -3939,7 +3939,7 @@ case "${target}" in
+@@ -3946,7 +3946,7 @@ case "${target}" in
    or1k*-*-*)
      noconfigdirs="$noconfigdirs gdb"
      ;;
@@ -36,10 +36,10 @@
        sh*-*-elf)
           ;;
 diff --git a/gprof/configure b/gprof/configure
-index 693b927..d4db554 100755
+index bf3ecaa..626e1c7 100755
 --- a/gprof/configure
 +++ b/gprof/configure
-@@ -5869,6 +5869,11 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+@@ -5873,6 +5873,11 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
    lt_cv_deplibs_check_method=pass_all
    ;;
  
@@ -52,5 +52,5 @@
    if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
      lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0003-Point-scripts-location-to-libdir.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0003-Point-scripts-location-to-libdir.patch
index 2c70ecd..acc198b 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0003-Point-scripts-location-to-libdir.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0003-Point-scripts-location-to-libdir.patch
@@ -1,7 +1,7 @@
-From 01808e8ef8ee709c8218d962601c18a63a063a1f Mon Sep 17 00:00:00 2001
+From 93c49f6197bd59b2abbf04b3296bf10029b80f48 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:09:58 +0000
-Subject: [PATCH 03/14] Point scripts location to libdir
+Subject: [PATCH 03/13] Point scripts location to libdir
 
 Upstream-Status: Inappropriate [debian patch]
 
@@ -12,7 +12,7 @@
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/ld/Makefile.am b/ld/Makefile.am
-index 0b3b049..3871c74 100644
+index 0598923..b478ba7 100644
 --- a/ld/Makefile.am
 +++ b/ld/Makefile.am
 @@ -57,7 +57,7 @@ endif
@@ -25,10 +25,10 @@
  EMUL = @EMUL@
  EMULATION_OFILES = @EMULATION_OFILES@
 diff --git a/ld/Makefile.in b/ld/Makefile.in
-index ed98f87..530e4c9 100644
+index 7c78198..5eb67e0 100644
 --- a/ld/Makefile.in
 +++ b/ld/Makefile.in
-@@ -413,7 +413,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+@@ -451,7 +451,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
  # We put the scripts in the directory $(scriptdir)/ldscripts.
  # We can't put the scripts in $(datadir) because the SEARCH_DIR
  # directives need to be different for native and cross linkers.
@@ -38,5 +38,5 @@
  BFDDIR = $(BASEDIR)/bfd
  INCDIR = $(BASEDIR)/include
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0004-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0004-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
index 8f0a402..28a17f3 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0004-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0004-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
@@ -1,7 +1,7 @@
-From c008c7f97c1cf487749c6c375820a1f3b3c6c53d Mon Sep 17 00:00:00 2001
+From 4ff83779de8621715c6c2a79cf7ed8d74ff2d7c5 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:27:17 +0000
-Subject: [PATCH 04/14] Only generate an RPATH entry if LD_RUN_PATH is not
+Subject: [PATCH 04/13] Only generate an RPATH entry if LD_RUN_PATH is not
  empty
 
 for cases where -rpath isn't specified. debian (#151024)
@@ -15,10 +15,10 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
-index 0405d4f..73c5447 100644
+index 47fa549..f4c640e 100644
 --- a/ld/emultempl/elf32.em
 +++ b/ld/emultempl/elf32.em
-@@ -1242,6 +1242,8 @@ fragment <<EOF
+@@ -1244,6 +1244,8 @@ fragment <<EOF
  	      && command_line.rpath == NULL)
  	    {
  	      lib_path = (const char *) getenv ("LD_RUN_PATH");
@@ -27,7 +27,7 @@
  	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
  						      force))
  		break;
-@@ -1523,6 +1525,8 @@ gld${EMULATION_NAME}_before_allocation (void)
+@@ -1525,6 +1527,8 @@ gld${EMULATION_NAME}_before_allocation (void)
    rpath = command_line.rpath;
    if (rpath == NULL)
      rpath = (const char *) getenv ("LD_RUN_PATH");
@@ -37,5 +37,5 @@
    for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0005-Explicitly-link-with-libm-on-uclibc.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0005-Explicitly-link-with-libm-on-uclibc.patch
index 92ead7f..331f782 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0005-Explicitly-link-with-libm-on-uclibc.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0005-Explicitly-link-with-libm-on-uclibc.patch
@@ -1,7 +1,7 @@
-From 6a41635e29c4a6c064b1f66e79a8fe2026f4361b Mon Sep 17 00:00:00 2001
+From 18a7ae169e8d55ace683357d1de6b07e4fdf797a Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:32:49 +0000
-Subject: [PATCH 05/14] Explicitly link with libm on uclibc
+Subject: [PATCH 05/13] Explicitly link with libm on uclibc
 
 Description:
 
@@ -31,7 +31,7 @@
  1 file changed, 6 insertions(+)
 
 diff --git a/gas/configure.tgt b/gas/configure.tgt
-index 0b490d4..086e0d2 100644
+index e2df659..1b9fd99 100644
 --- a/gas/configure.tgt
 +++ b/gas/configure.tgt
 @@ -487,6 +487,12 @@ case ${generic_target} in
@@ -48,5 +48,5 @@
    aarch64 | alpha | arm | i386 | ia64 | microblaze | mips | ns32k | or1k | or1knd | pdp11 | ppc | sparc | z80 | z8k)
      bfd_gas=yes
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch
index e54ab1b..f0fdf46 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch
@@ -1,7 +1,7 @@
-From da70f0876cdd8ed703d9ed1524212ccfefb09ef3 Mon Sep 17 00:00:00 2001
+From 71adcde3648db47f7fa155db12810591ffd3ae34 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sun, 14 Feb 2016 17:04:07 +0000
-Subject: [PATCH 06/14] Use libtool 2.4
+Subject: [PATCH 06/13] Use libtool 2.4
 
 get libtool sysroot support
 
@@ -9,28 +9,28 @@
 ---
 Upstream-Status: Pending
 
- bfd/configure        | 1322 +++++++++++++++++------
+ bfd/configure        | 1318 +++++++++++++++++------
  bfd/configure.ac     |    2 +-
- binutils/configure   | 1320 +++++++++++++++++------
+ binutils/configure   | 1316 +++++++++++++++++------
  configure            |    4 +-
- gas/configure        | 1320 +++++++++++++++++------
- gprof/configure      | 1325 +++++++++++++++++------
- ld/configure         | 1695 +++++++++++++++++++++--------
+ gas/configure        | 1314 +++++++++++++++++------
+ gprof/configure      | 1321 +++++++++++++++++------
+ ld/configure         | 1691 +++++++++++++++++++++--------
  libtool.m4           | 1080 +++++++++++++------
  ltmain.sh            | 2925 +++++++++++++++++++++++++++++++++-----------------
  ltoptions.m4         |    2 +-
  ltversion.m4         |   12 +-
  lt~obsolete.m4       |    2 +-
- opcodes/configure    | 1322 +++++++++++++++++------
+ opcodes/configure    | 1318 +++++++++++++++++------
  opcodes/configure.ac |    2 +-
  zlib/configure       | 1320 +++++++++++++++++------
- 15 files changed, 9944 insertions(+), 3709 deletions(-)
+ 15 files changed, 9930 insertions(+), 3697 deletions(-)
 
 diff --git a/bfd/configure b/bfd/configure
-index 7411c6d..eae743e 100755
+index a437569..575a257 100755
 --- a/bfd/configure
 +++ b/bfd/configure
-@@ -670,6 +670,9 @@ OTOOL
+@@ -671,6 +671,9 @@ OTOOL
  LIPO
  NMEDIT
  DSYMUTIL
@@ -40,7 +40,7 @@
  OBJDUMP
  LN_S
  NM
-@@ -782,6 +785,7 @@ enable_static
+@@ -784,6 +787,7 @@ enable_static
  with_pic
  enable_fast_install
  with_gnu_ld
@@ -48,7 +48,7 @@
  enable_libtool_lock
  enable_plugins
  enable_largefile
-@@ -1458,6 +1462,8 @@ Optional Packages:
+@@ -1460,6 +1464,8 @@ Optional Packages:
    --with-pic              try to use only PIC/non-PIC objects [default=use
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
@@ -57,7 +57,7 @@
    --with-mmap             try using mmap for BFD input files if available
    --with-separate-debug-dir=DIR
                            Look for global separate debug info in DIR
-@@ -5388,8 +5394,8 @@ esac
+@@ -5392,8 +5398,8 @@ esac
  
  
  
@@ -68,7 +68,7 @@
  
  
  
-@@ -5429,7 +5435,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5433,7 +5439,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
  $as_echo_n "checking how to print strings... " >&6; }
  # Test print first, because it will be a builtin if present.
@@ -77,7 +77,7 @@
     test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
    ECHO='print -r --'
  elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6115,8 +6121,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6119,8 +6125,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
  # Try some XSI features
  xsi_shell=no
  ( _lt_dummy="a/b/c"
@@ -88,7 +88,7 @@
      && eval 'test $(( 1 + 1 )) -eq 2 \
      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
    && xsi_shell=yes
-@@ -6165,6 +6171,80 @@ esac
+@@ -6169,6 +6175,80 @@ esac
  
  
  
@@ -169,7 +169,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
  $as_echo_n "checking for $LD option to reload object files... " >&6; }
  if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -6181,6 +6261,11 @@ case $reload_flag in
+@@ -6185,6 +6265,11 @@ case $reload_flag in
  esac
  reload_cmds='$LD$reload_flag -o $output$reload_objs'
  case $host_os in
@@ -181,7 +181,7 @@
    darwin*)
      if test "$GCC" = yes; then
        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6349,7 +6434,8 @@ mingw* | pw32*)
+@@ -6353,7 +6438,8 @@ mingw* | pw32*)
      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
      lt_cv_file_magic_cmd='func_win32_libid'
    else
@@ -191,7 +191,7 @@
      lt_cv_file_magic_cmd='$OBJDUMP -f'
    fi
    ;;
-@@ -6503,6 +6589,21 @@ esac
+@@ -6507,6 +6593,21 @@ esac
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
  $as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -213,7 +213,7 @@
  file_magic_cmd=$lt_cv_file_magic_cmd
  deplibs_check_method=$lt_cv_deplibs_check_method
  test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6518,9 +6619,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6522,9 +6623,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
  
  
  
@@ -378,7 +378,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6536,7 +6790,7 @@ do
+@@ -6540,7 +6794,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -387,7 +387,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6556,11 +6810,15 @@ $as_echo "no" >&6; }
+@@ -6560,11 +6814,15 @@ $as_echo "no" >&6; }
  fi
  
  
@@ -406,7 +406,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6576,7 +6834,7 @@ do
+@@ -6580,7 +6838,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -415,7 +415,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6595,6 +6853,10 @@ else
+@@ -6599,6 +6857,10 @@ else
  $as_echo "no" >&6; }
  fi
  
@@ -426,7 +426,7 @@
    if test "x$ac_ct_AR" = x; then
      AR="false"
    else
-@@ -6606,16 +6868,72 @@ ac_tool_warned=yes ;;
+@@ -6610,16 +6872,72 @@ ac_tool_warned=yes ;;
  esac
      AR=$ac_ct_AR
    fi
@@ -503,7 +503,7 @@
  
  
  
-@@ -6957,8 +7275,8 @@ esac
+@@ -6961,8 +7279,8 @@ esac
  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  
  # Transform an extracted symbol line into symbol name and symbol address
@@ -514,7 +514,7 @@
  
  # Handle CRLF in mingw tool chain
  opt_cr=
-@@ -6994,6 +7312,7 @@ for ac_symprfx in "" "_"; do
+@@ -6998,6 +7316,7 @@ for ac_symprfx in "" "_"; do
    else
      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
    fi
@@ -522,7 +522,7 @@
  
    # Check to see that the pipe works correctly.
    pipe_works=no
-@@ -7035,6 +7354,18 @@ _LT_EOF
+@@ -7039,6 +7358,18 @@ _LT_EOF
        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
  	  cat <<_LT_EOF > conftest.$ac_ext
@@ -541,7 +541,7 @@
  #ifdef __cplusplus
  extern "C" {
  #endif
-@@ -7046,7 +7377,7 @@ _LT_EOF
+@@ -7050,7 +7381,7 @@ _LT_EOF
  	  cat <<_LT_EOF >> conftest.$ac_ext
  
  /* The mapping between symbol names and symbols.  */
@@ -550,7 +550,7 @@
    const char *name;
    void       *address;
  }
-@@ -7072,8 +7403,8 @@ static const void *lt_preloaded_setup() {
+@@ -7076,8 +7407,8 @@ static const void *lt_preloaded_setup() {
  _LT_EOF
  	  # Now try linking the two files.
  	  mv conftest.$ac_objext conftstm.$ac_objext
@@ -561,7 +561,7 @@
  	  LIBS="conftstm.$ac_objext"
  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7083,8 +7414,8 @@ _LT_EOF
+@@ -7087,8 +7418,8 @@ _LT_EOF
    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
  	    pipe_works=yes
  	  fi
@@ -572,7 +572,7 @@
  	else
  	  echo "cannot find nm_test_func in $nlist" >&5
  	fi
-@@ -7121,6 +7452,16 @@ else
+@@ -7125,6 +7456,16 @@ else
  $as_echo "ok" >&6; }
  fi
  
@@ -589,7 +589,7 @@
  
  
  
-@@ -7142,6 +7483,45 @@ fi
+@@ -7146,6 +7487,45 @@ fi
  
  
  
@@ -635,7 +635,7 @@
  # Check whether --enable-libtool-lock was given.
  if test "${enable_libtool_lock+set}" = set; then :
    enableval=$enable_libtool_lock;
-@@ -7348,6 +7728,123 @@ esac
+@@ -7352,6 +7732,123 @@ esac
  
  need_locks="$enable_libtool_lock"
  
@@ -759,7 +759,7 @@
  
    case $host_os in
      rhapsody* | darwin*)
-@@ -7911,6 +8408,8 @@ _LT_EOF
+@@ -7915,6 +8412,8 @@ _LT_EOF
        $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
        echo "$AR cru libconftest.a conftest.o" >&5
        $AR cru libconftest.a conftest.o 2>&5
@@ -768,7 +768,7 @@
        cat > conftest.c << _LT_EOF
  int main() { return 0;}
  _LT_EOF
-@@ -8075,7 +8574,8 @@ fi
+@@ -8079,7 +8578,8 @@ fi
  LIBTOOL_DEPS="$ltmain"
  
  # Always use our own libtool.
@@ -778,7 +778,7 @@
  
  
  
-@@ -8164,7 +8664,7 @@ aix3*)
+@@ -8168,7 +8668,7 @@ aix3*)
  esac
  
  # Global variables:
@@ -787,7 +787,7 @@
  can_build_shared=yes
  
  # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8462,8 +8962,6 @@ fi
+@@ -8466,8 +8966,6 @@ fi
  lt_prog_compiler_pic=
  lt_prog_compiler_static=
  
@@ -796,7 +796,7 @@
  
    if test "$GCC" = yes; then
      lt_prog_compiler_wl='-Wl,'
-@@ -8629,6 +9127,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8633,6 +9131,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	lt_prog_compiler_pic='--shared'
  	lt_prog_compiler_static='--static'
  	;;
@@ -809,7 +809,7 @@
        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
          # Portland Group compilers (*not* the Pentium gcc compiler,
  	# which looks to be a dead project)
-@@ -8691,7 +9195,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8695,7 +9199,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
        lt_prog_compiler_pic='-KPIC'
        lt_prog_compiler_static='-Bstatic'
        case $cc_basename in
@@ -818,7 +818,7 @@
  	lt_prog_compiler_wl='-Qoption ld ';;
        *)
  	lt_prog_compiler_wl='-Wl,';;
-@@ -8748,13 +9252,17 @@ case $host_os in
+@@ -8752,13 +9256,17 @@ case $host_os in
      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
      ;;
  esac
@@ -842,7 +842,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -8815,6 +9323,11 @@ fi
+@@ -8819,6 +9327,11 @@ fi
  
  
  
@@ -854,7 +854,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -9165,7 +9678,8 @@ _LT_EOF
+@@ -9169,7 +9682,8 @@ _LT_EOF
        allow_undefined_flag=unsupported
        always_export_symbols=no
        enable_shared_with_static_runtimes=yes
@@ -864,7 +864,7 @@
  
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9264,12 +9778,12 @@ _LT_EOF
+@@ -9268,12 +9782,12 @@ _LT_EOF
  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
  	  hardcode_libdir_flag_spec=
  	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -879,7 +879,7 @@
  	  fi
  	  ;;
  	esac
-@@ -9283,8 +9797,8 @@ _LT_EOF
+@@ -9287,8 +9801,8 @@ _LT_EOF
  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  	wlarc=
        else
@@ -890,7 +890,7 @@
        fi
        ;;
  
-@@ -9302,8 +9816,8 @@ _LT_EOF
+@@ -9306,8 +9820,8 @@ _LT_EOF
  
  _LT_EOF
        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -901,7 +901,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9349,8 +9863,8 @@ _LT_EOF
+@@ -9353,8 +9867,8 @@ _LT_EOF
  
      *)
        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -912,7 +912,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9480,7 +9994,13 @@ _LT_EOF
+@@ -9484,7 +9998,13 @@ _LT_EOF
  	allow_undefined_flag='-berok'
          # Determine the default libpath from the value encoded in an
          # empty executable.
@@ -927,7 +927,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9493,22 +10013,29 @@ main ()
+@@ -9497,22 +10017,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -970,7 +970,7 @@
  
          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
          archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9520,7 +10047,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9524,7 +10051,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	else
  	 # Determine the default libpath from the value encoded in an
  	 # empty executable.
@@ -985,7 +985,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9533,22 +10066,29 @@ main ()
+@@ -9537,22 +10070,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -1028,7 +1028,7 @@
  
  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
  	  # Warning - without using the other run time loading flags,
-@@ -9593,20 +10133,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9597,20 +10137,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # Microsoft Visual C++.
        # hardcode_libdir_flag_spec is actually meaningless, as there is
        # no search path for DLLs.
@@ -1106,7 +1106,7 @@
        ;;
  
      darwin* | rhapsody*)
-@@ -9667,7 +10250,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9671,7 +10254,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
      freebsd* | dragonfly*)
@@ -1115,7 +1115,7 @@
        hardcode_libdir_flag_spec='-R$libdir'
        hardcode_direct=yes
        hardcode_shlibpath_var=no
-@@ -9675,7 +10258,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9679,7 +10262,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux9*)
        if test "$GCC" = yes; then
@@ -1124,7 +1124,7 @@
        else
  	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
        fi
-@@ -9691,7 +10274,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9695,7 +10278,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux10*)
        if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -1133,7 +1133,7 @@
        else
  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
        fi
-@@ -9715,10 +10298,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9719,10 +10302,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  	  ;;
  	ia64*)
@@ -1146,7 +1146,7 @@
  	  ;;
  	esac
        else
-@@ -9797,23 +10380,36 @@ fi
+@@ -9801,23 +10384,36 @@ fi
  
      irix5* | irix6* | nonstopux*)
        if test "$GCC" = yes; then
@@ -1191,7 +1191,7 @@
        else
  	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
  	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9898,7 +10494,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9902,7 +10498,7 @@ rm -f core conftest.err conftest.$ac_objext \
      osf4* | osf5*)	# as osf3* with the addition of -msym flag
        if test "$GCC" = yes; then
  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -1200,7 +1200,7 @@
  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
        else
  	allow_undefined_flag=' -expect_unresolved \*'
-@@ -9917,9 +10513,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9921,9 +10517,9 @@ rm -f core conftest.err conftest.$ac_objext \
        no_undefined_flag=' -z defs'
        if test "$GCC" = yes; then
  	wlarc='${wl}'
@@ -1212,7 +1212,7 @@
        else
  	case `$CC -V 2>&1` in
  	*"Compilers 5.0"*)
-@@ -10495,8 +11091,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10499,8 +11095,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -1224,7 +1224,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -10529,13 +11126,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10533,13 +11130,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -1297,7 +1297,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -10627,7 +11282,7 @@ haiku*)
+@@ -10631,7 +11286,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -1306,16 +1306,7 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -11423,7 +12078,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11426 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11467,10 +12122,10 @@ else
+@@ -11471,10 +12126,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -1328,16 +1319,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11529,7 +12184,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11532 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11573,10 +12228,10 @@ else
+@@ -11577,10 +12232,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -1350,7 +1332,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15121,7 +15776,7 @@ SHARED_LDFLAGS=
+@@ -14078,7 +14733,7 @@ SHARED_LDFLAGS=
  if test "$enable_shared" = "yes"; then
    x=`sed -n -e 's/^[ 	]*PICFLAG[ 	]*=[ 	]*//p' < ../libiberty/Makefile | sed -n '$p'`
    if test -n "$x"; then
@@ -1359,7 +1341,7 @@
    fi
  
  # More hacks to build DLLs on Windows.
-@@ -16746,13 +17401,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -16789,13 +17444,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
  lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
  lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
  lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -1380,7 +1362,7 @@
  STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
  RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
  old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -16767,14 +17429,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -16810,14 +17472,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
  lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -1399,7 +1381,7 @@
  DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
  NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
  LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -16807,12 +17472,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -16850,12 +17515,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
  hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
  inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -1413,7 +1395,7 @@
  file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
  variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
  need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -16867,8 +17532,13 @@ reload_flag \
+@@ -16910,8 +17575,13 @@ reload_flag \
  OBJDUMP \
  deplibs_check_method \
  file_magic_cmd \
@@ -1427,7 +1409,7 @@
  STRIP \
  RANLIB \
  CC \
-@@ -16878,12 +17548,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -16921,12 +17591,14 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -1443,7 +1425,7 @@
  DSYMUTIL \
  NMEDIT \
  LIPO \
-@@ -16899,7 +17571,6 @@ no_undefined_flag \
+@@ -16942,7 +17614,6 @@ no_undefined_flag \
  hardcode_libdir_flag_spec \
  hardcode_libdir_flag_spec_ld \
  hardcode_libdir_separator \
@@ -1451,7 +1433,7 @@
  exclude_expsyms \
  include_expsyms \
  file_list_spec \
-@@ -16935,6 +17606,7 @@ module_cmds \
+@@ -16978,6 +17649,7 @@ module_cmds \
  module_expsym_cmds \
  export_symbols_cmds \
  prelink_cmds \
@@ -1459,7 +1441,7 @@
  postinstall_cmds \
  postuninstall_cmds \
  finish_cmds \
-@@ -17714,7 +18386,8 @@ $as_echo X"$file" |
+@@ -17757,7 +18429,8 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -1469,7 +1451,7 @@
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -17817,19 +18490,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -17860,19 +18533,42 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -1513,7 +1495,7 @@
  # A symbol stripping program.
  STRIP=$lt_STRIP
  
-@@ -17859,6 +18555,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -17902,6 +18598,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  # Transform the output of nm in a C name address pair when lib prefix is needed.
  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
  
@@ -1526,7 +1508,7 @@
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
-@@ -17868,6 +18570,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -17911,6 +18613,9 @@ MAGIC_CMD=$MAGIC_CMD
  # Must we lock files when doing compilation?
  need_locks=$lt_need_locks
  
@@ -1536,7 +1518,7 @@
  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  DSYMUTIL=$lt_DSYMUTIL
  
-@@ -17982,12 +18687,12 @@ with_gcc=$GCC
+@@ -18025,12 +18730,12 @@ with_gcc=$GCC
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
  
@@ -1552,7 +1534,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static
  
-@@ -18074,9 +18779,6 @@ inherit_rpath=$inherit_rpath
+@@ -18117,9 +18822,6 @@ inherit_rpath=$inherit_rpath
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs
  
@@ -1562,7 +1544,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols
  
-@@ -18092,6 +18794,9 @@ include_expsyms=$lt_include_expsyms
+@@ -18135,6 +18837,9 @@ include_expsyms=$lt_include_expsyms
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds
  
@@ -1572,7 +1554,7 @@
  # Specify filename containing input files.
  file_list_spec=$lt_file_list_spec
  
-@@ -18124,210 +18829,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -18167,210 +18872,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
    # text mode, it properly converts lines to CR/LF.  This bash problem
    # is reportedly fixed, but why not run on old versions too?
@@ -1947,10 +1929,10 @@
    chmod +x "$ofile"
  
 diff --git a/bfd/configure.ac b/bfd/configure.ac
-index 6f5e85f..44bd02c 100644
+index 669cff7..5f57877 100644
 --- a/bfd/configure.ac
 +++ b/bfd/configure.ac
-@@ -567,7 +567,7 @@ changequote(,)dnl
+@@ -253,7 +253,7 @@ changequote(,)dnl
    x=`sed -n -e 's/^[ 	]*PICFLAG[ 	]*=[ 	]*//p' < ../libiberty/Makefile | sed -n '$p'`
  changequote([,])dnl
    if test -n "$x"; then
@@ -1960,10 +1942,10 @@
  
  # More hacks to build DLLs on Windows.
 diff --git a/binutils/configure b/binutils/configure
-index d4f3e1e..a6df5bb 100755
+index 6cbf17c..6d20600 100755
 --- a/binutils/configure
 +++ b/binutils/configure
-@@ -657,8 +657,11 @@ OTOOL
+@@ -658,8 +658,11 @@ OTOOL
  LIPO
  NMEDIT
  DSYMUTIL
@@ -1975,7 +1957,7 @@
  OBJDUMP
  LN_S
  NM
-@@ -769,6 +772,7 @@ enable_static
+@@ -771,6 +774,7 @@ enable_static
  with_pic
  enable_fast_install
  with_gnu_ld
@@ -1983,7 +1965,7 @@
  enable_libtool_lock
  enable_plugins
  enable_largefile
-@@ -1441,6 +1445,8 @@ Optional Packages:
+@@ -1443,6 +1447,8 @@ Optional Packages:
    --with-pic              try to use only PIC/non-PIC objects [default=use
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
@@ -1992,7 +1974,7 @@
    --with-system-zlib      use installed libz
    --with-gnu-ld           assume the C compiler uses GNU ld default=no
    --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
-@@ -5155,8 +5161,8 @@ esac
+@@ -5159,8 +5165,8 @@ esac
  
  
  
@@ -2003,7 +1985,7 @@
  
  
  
-@@ -5196,7 +5202,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5200,7 +5206,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
  $as_echo_n "checking how to print strings... " >&6; }
  # Test print first, because it will be a builtin if present.
@@ -2012,7 +1994,7 @@
     test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
    ECHO='print -r --'
  elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5882,8 +5888,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5886,8 +5892,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
  # Try some XSI features
  xsi_shell=no
  ( _lt_dummy="a/b/c"
@@ -2023,7 +2005,7 @@
      && eval 'test $(( 1 + 1 )) -eq 2 \
      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
    && xsi_shell=yes
-@@ -5932,6 +5938,80 @@ esac
+@@ -5936,6 +5942,80 @@ esac
  
  
  
@@ -2104,7 +2086,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
  $as_echo_n "checking for $LD option to reload object files... " >&6; }
  if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5948,6 +6028,11 @@ case $reload_flag in
+@@ -5952,6 +6032,11 @@ case $reload_flag in
  esac
  reload_cmds='$LD$reload_flag -o $output$reload_objs'
  case $host_os in
@@ -2116,7 +2098,7 @@
    darwin*)
      if test "$GCC" = yes; then
        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6116,7 +6201,8 @@ mingw* | pw32*)
+@@ -6120,7 +6205,8 @@ mingw* | pw32*)
      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
      lt_cv_file_magic_cmd='func_win32_libid'
    else
@@ -2126,7 +2108,7 @@
      lt_cv_file_magic_cmd='$OBJDUMP -f'
    fi
    ;;
-@@ -6270,6 +6356,21 @@ esac
+@@ -6274,6 +6360,21 @@ esac
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
  $as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -2148,7 +2130,7 @@
  file_magic_cmd=$lt_cv_file_magic_cmd
  deplibs_check_method=$lt_cv_deplibs_check_method
  test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6285,9 +6386,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6289,9 +6390,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
  
  
  
@@ -2313,7 +2295,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6303,7 +6557,7 @@ do
+@@ -6307,7 +6561,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -2322,7 +2304,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6323,11 +6577,15 @@ $as_echo "no" >&6; }
+@@ -6327,11 +6581,15 @@ $as_echo "no" >&6; }
  fi
  
  
@@ -2341,7 +2323,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6343,7 +6601,7 @@ do
+@@ -6347,7 +6605,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -2350,7 +2332,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6362,6 +6620,10 @@ else
+@@ -6366,6 +6624,10 @@ else
  $as_echo "no" >&6; }
  fi
  
@@ -2361,7 +2343,7 @@
    if test "x$ac_ct_AR" = x; then
      AR="false"
    else
-@@ -6373,12 +6635,10 @@ ac_tool_warned=yes ;;
+@@ -6377,12 +6639,10 @@ ac_tool_warned=yes ;;
  esac
      AR=$ac_ct_AR
    fi
@@ -2376,7 +2358,7 @@
  
  
  
-@@ -6390,6 +6650,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6394,6 +6654,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
  
  
  
@@ -2441,7 +2423,7 @@
  if test -n "$ac_tool_prefix"; then
    # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
  set dummy ${ac_tool_prefix}strip; ac_word=$2
-@@ -6724,8 +7042,8 @@ esac
+@@ -6728,8 +7046,8 @@ esac
  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  
  # Transform an extracted symbol line into symbol name and symbol address
@@ -2452,7 +2434,7 @@
  
  # Handle CRLF in mingw tool chain
  opt_cr=
-@@ -6761,6 +7079,7 @@ for ac_symprfx in "" "_"; do
+@@ -6765,6 +7083,7 @@ for ac_symprfx in "" "_"; do
    else
      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
    fi
@@ -2460,7 +2442,7 @@
  
    # Check to see that the pipe works correctly.
    pipe_works=no
-@@ -6802,6 +7121,18 @@ _LT_EOF
+@@ -6806,6 +7125,18 @@ _LT_EOF
        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
  	  cat <<_LT_EOF > conftest.$ac_ext
@@ -2479,7 +2461,7 @@
  #ifdef __cplusplus
  extern "C" {
  #endif
-@@ -6813,7 +7144,7 @@ _LT_EOF
+@@ -6817,7 +7148,7 @@ _LT_EOF
  	  cat <<_LT_EOF >> conftest.$ac_ext
  
  /* The mapping between symbol names and symbols.  */
@@ -2488,7 +2470,7 @@
    const char *name;
    void       *address;
  }
-@@ -6839,8 +7170,8 @@ static const void *lt_preloaded_setup() {
+@@ -6843,8 +7174,8 @@ static const void *lt_preloaded_setup() {
  _LT_EOF
  	  # Now try linking the two files.
  	  mv conftest.$ac_objext conftstm.$ac_objext
@@ -2499,7 +2481,7 @@
  	  LIBS="conftstm.$ac_objext"
  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6850,8 +7181,8 @@ _LT_EOF
+@@ -6854,8 +7185,8 @@ _LT_EOF
    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
  	    pipe_works=yes
  	  fi
@@ -2510,7 +2492,7 @@
  	else
  	  echo "cannot find nm_test_func in $nlist" >&5
  	fi
-@@ -6888,6 +7219,21 @@ else
+@@ -6892,6 +7223,21 @@ else
  $as_echo "ok" >&6; }
  fi
  
@@ -2532,7 +2514,7 @@
  
  
  
-@@ -6906,6 +7252,40 @@ fi
+@@ -6910,6 +7256,40 @@ fi
  
  
  
@@ -2573,7 +2555,7 @@
  
  
  
-@@ -7115,6 +7495,123 @@ esac
+@@ -7119,6 +7499,123 @@ esac
  
  need_locks="$enable_libtool_lock"
  
@@ -2697,7 +2679,7 @@
  
    case $host_os in
      rhapsody* | darwin*)
-@@ -7678,6 +8175,8 @@ _LT_EOF
+@@ -7682,6 +8179,8 @@ _LT_EOF
        $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
        echo "$AR cru libconftest.a conftest.o" >&5
        $AR cru libconftest.a conftest.o 2>&5
@@ -2706,7 +2688,7 @@
        cat > conftest.c << _LT_EOF
  int main() { return 0;}
  _LT_EOF
-@@ -7873,7 +8372,8 @@ fi
+@@ -7877,7 +8376,8 @@ fi
  LIBTOOL_DEPS="$ltmain"
  
  # Always use our own libtool.
@@ -2716,7 +2698,7 @@
  
  
  
-@@ -7962,7 +8462,7 @@ aix3*)
+@@ -7966,7 +8466,7 @@ aix3*)
  esac
  
  # Global variables:
@@ -2725,7 +2707,7 @@
  can_build_shared=yes
  
  # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8260,8 +8760,6 @@ fi
+@@ -8264,8 +8764,6 @@ fi
  lt_prog_compiler_pic=
  lt_prog_compiler_static=
  
@@ -2734,7 +2716,7 @@
  
    if test "$GCC" = yes; then
      lt_prog_compiler_wl='-Wl,'
-@@ -8427,6 +8925,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8431,6 +8929,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	lt_prog_compiler_pic='--shared'
  	lt_prog_compiler_static='--static'
  	;;
@@ -2747,7 +2729,7 @@
        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
          # Portland Group compilers (*not* the Pentium gcc compiler,
  	# which looks to be a dead project)
-@@ -8489,7 +8993,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8493,7 +8997,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
        lt_prog_compiler_pic='-KPIC'
        lt_prog_compiler_static='-Bstatic'
        case $cc_basename in
@@ -2756,7 +2738,7 @@
  	lt_prog_compiler_wl='-Qoption ld ';;
        *)
  	lt_prog_compiler_wl='-Wl,';;
-@@ -8546,13 +9050,17 @@ case $host_os in
+@@ -8550,13 +9054,17 @@ case $host_os in
      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
      ;;
  esac
@@ -2780,7 +2762,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -8613,6 +9121,11 @@ fi
+@@ -8617,6 +9125,11 @@ fi
  
  
  
@@ -2792,7 +2774,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -8963,7 +9476,8 @@ _LT_EOF
+@@ -8967,7 +9480,8 @@ _LT_EOF
        allow_undefined_flag=unsupported
        always_export_symbols=no
        enable_shared_with_static_runtimes=yes
@@ -2802,7 +2784,7 @@
  
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9062,12 +9576,12 @@ _LT_EOF
+@@ -9066,12 +9580,12 @@ _LT_EOF
  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
  	  hardcode_libdir_flag_spec=
  	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -2817,7 +2799,7 @@
  	  fi
  	  ;;
  	esac
-@@ -9081,8 +9595,8 @@ _LT_EOF
+@@ -9085,8 +9599,8 @@ _LT_EOF
  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  	wlarc=
        else
@@ -2828,7 +2810,7 @@
        fi
        ;;
  
-@@ -9100,8 +9614,8 @@ _LT_EOF
+@@ -9104,8 +9618,8 @@ _LT_EOF
  
  _LT_EOF
        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -2839,7 +2821,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9147,8 +9661,8 @@ _LT_EOF
+@@ -9151,8 +9665,8 @@ _LT_EOF
  
      *)
        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -2850,7 +2832,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9278,7 +9792,13 @@ _LT_EOF
+@@ -9282,7 +9796,13 @@ _LT_EOF
  	allow_undefined_flag='-berok'
          # Determine the default libpath from the value encoded in an
          # empty executable.
@@ -2865,7 +2847,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9291,22 +9811,29 @@ main ()
+@@ -9295,22 +9815,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -2908,7 +2890,7 @@
  
          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
          archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9318,7 +9845,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9322,7 +9849,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	else
  	 # Determine the default libpath from the value encoded in an
  	 # empty executable.
@@ -2923,7 +2905,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9331,22 +9864,29 @@ main ()
+@@ -9335,22 +9868,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -2966,7 +2948,7 @@
  
  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
  	  # Warning - without using the other run time loading flags,
-@@ -9391,20 +9931,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9395,20 +9935,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # Microsoft Visual C++.
        # hardcode_libdir_flag_spec is actually meaningless, as there is
        # no search path for DLLs.
@@ -3044,7 +3026,7 @@
        ;;
  
      darwin* | rhapsody*)
-@@ -9465,7 +10048,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9469,7 +10052,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
      freebsd* | dragonfly*)
@@ -3053,7 +3035,7 @@
        hardcode_libdir_flag_spec='-R$libdir'
        hardcode_direct=yes
        hardcode_shlibpath_var=no
-@@ -9473,7 +10056,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9477,7 +10060,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux9*)
        if test "$GCC" = yes; then
@@ -3062,7 +3044,7 @@
        else
  	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
        fi
-@@ -9489,7 +10072,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9493,7 +10076,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux10*)
        if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -3071,7 +3053,7 @@
        else
  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
        fi
-@@ -9513,10 +10096,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9517,10 +10100,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  	  ;;
  	ia64*)
@@ -3084,7 +3066,7 @@
  	  ;;
  	esac
        else
-@@ -9595,23 +10178,36 @@ fi
+@@ -9599,23 +10182,36 @@ fi
  
      irix5* | irix6* | nonstopux*)
        if test "$GCC" = yes; then
@@ -3129,7 +3111,7 @@
        else
  	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
  	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9696,7 +10292,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9700,7 +10296,7 @@ rm -f core conftest.err conftest.$ac_objext \
      osf4* | osf5*)	# as osf3* with the addition of -msym flag
        if test "$GCC" = yes; then
  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -3138,7 +3120,7 @@
  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
        else
  	allow_undefined_flag=' -expect_unresolved \*'
-@@ -9715,9 +10311,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9719,9 +10315,9 @@ rm -f core conftest.err conftest.$ac_objext \
        no_undefined_flag=' -z defs'
        if test "$GCC" = yes; then
  	wlarc='${wl}'
@@ -3150,7 +3132,7 @@
        else
  	case `$CC -V 2>&1` in
  	*"Compilers 5.0"*)
-@@ -10293,8 +10889,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10297,8 +10893,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -3162,7 +3144,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -10327,13 +10924,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10331,13 +10928,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -3235,7 +3217,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -10425,7 +11080,7 @@ haiku*)
+@@ -10429,7 +11084,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -3244,16 +3226,7 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -11221,7 +11876,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11224 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11265,10 +11920,10 @@ else
+@@ -11269,10 +11924,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -3266,16 +3239,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11327,7 +11982,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11330 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11371,10 +12026,10 @@ else
+@@ -11375,10 +12030,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -3288,7 +3252,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15355,13 +16010,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -15392,13 +16047,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
  lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
  lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
  lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -3309,7 +3273,7 @@
  STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
  RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
  old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -15376,14 +16038,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -15413,14 +16075,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
  lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -3328,7 +3292,7 @@
  DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
  NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
  LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -15416,12 +16081,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -15453,12 +16118,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
  hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
  inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -3342,7 +3306,7 @@
  file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
  variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
  need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -15476,8 +16141,13 @@ reload_flag \
+@@ -15513,8 +16178,13 @@ reload_flag \
  OBJDUMP \
  deplibs_check_method \
  file_magic_cmd \
@@ -3356,7 +3320,7 @@
  STRIP \
  RANLIB \
  CC \
-@@ -15487,12 +16157,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -15524,12 +16194,14 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -3372,7 +3336,7 @@
  DSYMUTIL \
  NMEDIT \
  LIPO \
-@@ -15508,7 +16180,6 @@ no_undefined_flag \
+@@ -15545,7 +16217,6 @@ no_undefined_flag \
  hardcode_libdir_flag_spec \
  hardcode_libdir_flag_spec_ld \
  hardcode_libdir_separator \
@@ -3380,7 +3344,7 @@
  exclude_expsyms \
  include_expsyms \
  file_list_spec \
-@@ -15544,6 +16215,7 @@ module_cmds \
+@@ -15581,6 +16252,7 @@ module_cmds \
  module_expsym_cmds \
  export_symbols_cmds \
  prelink_cmds \
@@ -3388,7 +3352,7 @@
  postinstall_cmds \
  postuninstall_cmds \
  finish_cmds \
-@@ -16301,7 +16973,8 @@ $as_echo X"$file" |
+@@ -16338,7 +17010,8 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -3398,7 +3362,7 @@
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -16404,19 +17077,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -16441,19 +17114,42 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -3442,7 +3406,7 @@
  # A symbol stripping program.
  STRIP=$lt_STRIP
  
-@@ -16446,6 +17142,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -16483,6 +17179,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  # Transform the output of nm in a C name address pair when lib prefix is needed.
  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
  
@@ -3455,7 +3419,7 @@
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
-@@ -16455,6 +17157,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -16492,6 +17194,9 @@ MAGIC_CMD=$MAGIC_CMD
  # Must we lock files when doing compilation?
  need_locks=$lt_need_locks
  
@@ -3465,7 +3429,7 @@
  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  DSYMUTIL=$lt_DSYMUTIL
  
-@@ -16569,12 +17274,12 @@ with_gcc=$GCC
+@@ -16606,12 +17311,12 @@ with_gcc=$GCC
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
  
@@ -3481,7 +3445,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static
  
-@@ -16661,9 +17366,6 @@ inherit_rpath=$inherit_rpath
+@@ -16698,9 +17403,6 @@ inherit_rpath=$inherit_rpath
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs
  
@@ -3491,7 +3455,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols
  
-@@ -16679,6 +17381,9 @@ include_expsyms=$lt_include_expsyms
+@@ -16716,6 +17418,9 @@ include_expsyms=$lt_include_expsyms
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds
  
@@ -3501,7 +3465,7 @@
  # Specify filename containing input files.
  file_list_spec=$lt_file_list_spec
  
-@@ -16711,210 +17416,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -16748,210 +17453,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
    # text mode, it properly converts lines to CR/LF.  This bash problem
    # is reportedly fixed, but why not run on old versions too?
@@ -3876,10 +3840,10 @@
    chmod +x "$ofile"
  
 diff --git a/configure b/configure
-index 85414ab..34b66f7 100755
+index 2a74a77..ad3dfb7 100755
 --- a/configure
 +++ b/configure
-@@ -3445,7 +3445,7 @@ case "${target}" in
+@@ -3444,7 +3444,7 @@ case "${target}" in
      ;;
    s390-*-* | s390x-*-*)
      ;;
@@ -3888,7 +3852,7 @@
      ;;
    sh64-*-* | sh5*-*-*)
      ;;
-@@ -3939,7 +3939,7 @@ case "${target}" in
+@@ -3946,7 +3946,7 @@ case "${target}" in
    or1k*-*-*)
      noconfigdirs="$noconfigdirs gdb"
      ;;
@@ -3898,10 +3862,10 @@
        sh*-*-elf)
           ;;
 diff --git a/gas/configure b/gas/configure
-index dd9c953..89f18b3 100755
+index f7753b8..45da030 100755
 --- a/gas/configure
 +++ b/gas/configure
-@@ -647,8 +647,11 @@ OTOOL
+@@ -648,8 +648,11 @@ OTOOL
  LIPO
  NMEDIT
  DSYMUTIL
@@ -3913,7 +3877,7 @@
  OBJDUMP
  LN_S
  NM
-@@ -759,6 +762,7 @@ enable_static
+@@ -761,6 +764,7 @@ enable_static
  with_pic
  enable_fast_install
  with_gnu_ld
@@ -3921,16 +3885,7 @@
  enable_libtool_lock
  enable_plugins
  enable_largefile
-@@ -1430,6 +1434,8 @@ Optional Packages:
-   --with-pic              try to use only PIC/non-PIC objects [default=use
-                           both]
-   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-+  --with-libtool-sysroot=DIR Search for dependent libraries within DIR
-+                        (or the compiler's sysroot if not specified).
-   --with-system-zlib      use installed libz
- 
- Some influential environment variables:
-@@ -4909,8 +4915,8 @@ esac
+@@ -4919,8 +4923,8 @@ esac
  
  
  
@@ -3941,7 +3896,7 @@
  
  
  
-@@ -4950,7 +4956,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -4960,7 +4964,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
  $as_echo_n "checking how to print strings... " >&6; }
  # Test print first, because it will be a builtin if present.
@@ -3950,7 +3905,7 @@
     test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
    ECHO='print -r --'
  elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5636,8 +5642,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5646,8 +5650,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
  # Try some XSI features
  xsi_shell=no
  ( _lt_dummy="a/b/c"
@@ -3961,7 +3916,7 @@
      && eval 'test $(( 1 + 1 )) -eq 2 \
      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
    && xsi_shell=yes
-@@ -5686,6 +5692,80 @@ esac
+@@ -5696,6 +5700,80 @@ esac
  
  
  
@@ -4042,7 +3997,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
  $as_echo_n "checking for $LD option to reload object files... " >&6; }
  if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5702,6 +5782,11 @@ case $reload_flag in
+@@ -5712,6 +5790,11 @@ case $reload_flag in
  esac
  reload_cmds='$LD$reload_flag -o $output$reload_objs'
  case $host_os in
@@ -4054,7 +4009,7 @@
    darwin*)
      if test "$GCC" = yes; then
        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -5870,7 +5955,8 @@ mingw* | pw32*)
+@@ -5880,7 +5963,8 @@ mingw* | pw32*)
      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
      lt_cv_file_magic_cmd='func_win32_libid'
    else
@@ -4064,7 +4019,7 @@
      lt_cv_file_magic_cmd='$OBJDUMP -f'
    fi
    ;;
-@@ -6024,6 +6110,21 @@ esac
+@@ -6034,6 +6118,21 @@ esac
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
  $as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -4086,7 +4041,7 @@
  file_magic_cmd=$lt_cv_file_magic_cmd
  deplibs_check_method=$lt_cv_deplibs_check_method
  test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6039,9 +6140,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6049,9 +6148,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
  
  
  
@@ -4251,7 +4206,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6057,7 +6311,7 @@ do
+@@ -6067,7 +6319,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -4260,7 +4215,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6077,11 +6331,15 @@ $as_echo "no" >&6; }
+@@ -6087,11 +6339,15 @@ $as_echo "no" >&6; }
  fi
  
  
@@ -4279,7 +4234,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6097,7 +6355,7 @@ do
+@@ -6107,7 +6363,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -4288,7 +4243,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6116,6 +6374,10 @@ else
+@@ -6126,6 +6382,10 @@ else
  $as_echo "no" >&6; }
  fi
  
@@ -4299,7 +4254,7 @@
    if test "x$ac_ct_AR" = x; then
      AR="false"
    else
-@@ -6127,12 +6389,10 @@ ac_tool_warned=yes ;;
+@@ -6137,12 +6397,10 @@ ac_tool_warned=yes ;;
  esac
      AR=$ac_ct_AR
    fi
@@ -4314,7 +4269,7 @@
  
  
  
-@@ -6144,6 +6404,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6154,6 +6412,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
  
  
  
@@ -4379,7 +4334,7 @@
  if test -n "$ac_tool_prefix"; then
    # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
  set dummy ${ac_tool_prefix}strip; ac_word=$2
-@@ -6478,8 +6796,8 @@ esac
+@@ -6488,8 +6804,8 @@ esac
  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  
  # Transform an extracted symbol line into symbol name and symbol address
@@ -4390,7 +4345,7 @@
  
  # Handle CRLF in mingw tool chain
  opt_cr=
-@@ -6515,6 +6833,7 @@ for ac_symprfx in "" "_"; do
+@@ -6525,6 +6841,7 @@ for ac_symprfx in "" "_"; do
    else
      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
    fi
@@ -4398,7 +4353,7 @@
  
    # Check to see that the pipe works correctly.
    pipe_works=no
-@@ -6556,6 +6875,18 @@ _LT_EOF
+@@ -6566,6 +6883,18 @@ _LT_EOF
        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
  	  cat <<_LT_EOF > conftest.$ac_ext
@@ -4417,7 +4372,7 @@
  #ifdef __cplusplus
  extern "C" {
  #endif
-@@ -6567,7 +6898,7 @@ _LT_EOF
+@@ -6577,7 +6906,7 @@ _LT_EOF
  	  cat <<_LT_EOF >> conftest.$ac_ext
  
  /* The mapping between symbol names and symbols.  */
@@ -4426,7 +4381,7 @@
    const char *name;
    void       *address;
  }
-@@ -6593,8 +6924,8 @@ static const void *lt_preloaded_setup() {
+@@ -6603,8 +6932,8 @@ static const void *lt_preloaded_setup() {
  _LT_EOF
  	  # Now try linking the two files.
  	  mv conftest.$ac_objext conftstm.$ac_objext
@@ -4437,7 +4392,7 @@
  	  LIBS="conftstm.$ac_objext"
  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6604,8 +6935,8 @@ _LT_EOF
+@@ -6614,8 +6943,8 @@ _LT_EOF
    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
  	    pipe_works=yes
  	  fi
@@ -4448,7 +4403,7 @@
  	else
  	  echo "cannot find nm_test_func in $nlist" >&5
  	fi
-@@ -6642,6 +6973,21 @@ else
+@@ -6652,6 +6981,21 @@ else
  $as_echo "ok" >&6; }
  fi
  
@@ -4470,7 +4425,7 @@
  
  
  
-@@ -6660,6 +7006,40 @@ fi
+@@ -6670,6 +7014,40 @@ fi
  
  
  
@@ -4511,7 +4466,7 @@
  
  
  
-@@ -6869,6 +7249,123 @@ esac
+@@ -6879,6 +7257,123 @@ esac
  
  need_locks="$enable_libtool_lock"
  
@@ -4635,7 +4590,7 @@
  
    case $host_os in
      rhapsody* | darwin*)
-@@ -7432,6 +7929,8 @@ _LT_EOF
+@@ -7442,6 +7937,8 @@ _LT_EOF
        $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
        echo "$AR cru libconftest.a conftest.o" >&5
        $AR cru libconftest.a conftest.o 2>&5
@@ -4644,7 +4599,7 @@
        cat > conftest.c << _LT_EOF
  int main() { return 0;}
  _LT_EOF
-@@ -7627,7 +8126,8 @@ fi
+@@ -7637,7 +8134,8 @@ fi
  LIBTOOL_DEPS="$ltmain"
  
  # Always use our own libtool.
@@ -4654,7 +4609,7 @@
  
  
  
-@@ -7716,7 +8216,7 @@ aix3*)
+@@ -7726,7 +8224,7 @@ aix3*)
  esac
  
  # Global variables:
@@ -4663,7 +4618,7 @@
  can_build_shared=yes
  
  # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8014,8 +8514,6 @@ fi
+@@ -8024,8 +8522,6 @@ fi
  lt_prog_compiler_pic=
  lt_prog_compiler_static=
  
@@ -4672,7 +4627,7 @@
  
    if test "$GCC" = yes; then
      lt_prog_compiler_wl='-Wl,'
-@@ -8181,6 +8679,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8191,6 +8687,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	lt_prog_compiler_pic='--shared'
  	lt_prog_compiler_static='--static'
  	;;
@@ -4685,7 +4640,7 @@
        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
          # Portland Group compilers (*not* the Pentium gcc compiler,
  	# which looks to be a dead project)
-@@ -8243,7 +8747,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8253,7 +8755,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
        lt_prog_compiler_pic='-KPIC'
        lt_prog_compiler_static='-Bstatic'
        case $cc_basename in
@@ -4694,7 +4649,7 @@
  	lt_prog_compiler_wl='-Qoption ld ';;
        *)
  	lt_prog_compiler_wl='-Wl,';;
-@@ -8300,13 +8804,17 @@ case $host_os in
+@@ -8310,13 +8812,17 @@ case $host_os in
      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
      ;;
  esac
@@ -4718,7 +4673,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -8367,6 +8875,11 @@ fi
+@@ -8377,6 +8883,11 @@ fi
  
  
  
@@ -4730,7 +4685,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -8717,7 +9230,8 @@ _LT_EOF
+@@ -8727,7 +9238,8 @@ _LT_EOF
        allow_undefined_flag=unsupported
        always_export_symbols=no
        enable_shared_with_static_runtimes=yes
@@ -4740,7 +4695,7 @@
  
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8816,12 +9330,12 @@ _LT_EOF
+@@ -8826,12 +9338,12 @@ _LT_EOF
  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
  	  hardcode_libdir_flag_spec=
  	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -4755,7 +4710,7 @@
  	  fi
  	  ;;
  	esac
-@@ -8835,8 +9349,8 @@ _LT_EOF
+@@ -8845,8 +9357,8 @@ _LT_EOF
  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  	wlarc=
        else
@@ -4766,7 +4721,7 @@
        fi
        ;;
  
-@@ -8854,8 +9368,8 @@ _LT_EOF
+@@ -8864,8 +9376,8 @@ _LT_EOF
  
  _LT_EOF
        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -4777,7 +4732,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -8901,8 +9415,8 @@ _LT_EOF
+@@ -8911,8 +9423,8 @@ _LT_EOF
  
      *)
        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -4788,7 +4743,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9032,7 +9546,13 @@ _LT_EOF
+@@ -9042,7 +9554,13 @@ _LT_EOF
  	allow_undefined_flag='-berok'
          # Determine the default libpath from the value encoded in an
          # empty executable.
@@ -4803,7 +4758,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9045,22 +9565,29 @@ main ()
+@@ -9055,22 +9573,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -4846,7 +4801,7 @@
  
          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
          archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9072,7 +9599,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9082,7 +9607,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	else
  	 # Determine the default libpath from the value encoded in an
  	 # empty executable.
@@ -4861,7 +4816,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9085,22 +9618,29 @@ main ()
+@@ -9095,22 +9626,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -4904,7 +4859,7 @@
  
  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
  	  # Warning - without using the other run time loading flags,
-@@ -9145,20 +9685,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9155,20 +9693,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # Microsoft Visual C++.
        # hardcode_libdir_flag_spec is actually meaningless, as there is
        # no search path for DLLs.
@@ -4982,7 +4937,7 @@
        ;;
  
      darwin* | rhapsody*)
-@@ -9219,7 +9802,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9229,7 +9810,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
      freebsd* | dragonfly*)
@@ -4991,7 +4946,7 @@
        hardcode_libdir_flag_spec='-R$libdir'
        hardcode_direct=yes
        hardcode_shlibpath_var=no
-@@ -9227,7 +9810,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9237,7 +9818,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux9*)
        if test "$GCC" = yes; then
@@ -5000,7 +4955,7 @@
        else
  	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
        fi
-@@ -9243,7 +9826,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9253,7 +9834,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux10*)
        if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -5009,7 +4964,7 @@
        else
  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
        fi
-@@ -9267,10 +9850,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9277,10 +9858,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  	  ;;
  	ia64*)
@@ -5022,7 +4977,7 @@
  	  ;;
  	esac
        else
-@@ -9349,23 +9932,36 @@ fi
+@@ -9359,23 +9940,36 @@ fi
  
      irix5* | irix6* | nonstopux*)
        if test "$GCC" = yes; then
@@ -5067,7 +5022,7 @@
        else
  	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
  	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9450,7 +10046,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9460,7 +10054,7 @@ rm -f core conftest.err conftest.$ac_objext \
      osf4* | osf5*)	# as osf3* with the addition of -msym flag
        if test "$GCC" = yes; then
  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -5076,7 +5031,7 @@
  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
        else
  	allow_undefined_flag=' -expect_unresolved \*'
-@@ -9469,9 +10065,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9479,9 +10073,9 @@ rm -f core conftest.err conftest.$ac_objext \
        no_undefined_flag=' -z defs'
        if test "$GCC" = yes; then
  	wlarc='${wl}'
@@ -5088,7 +5043,7 @@
        else
  	case `$CC -V 2>&1` in
  	*"Compilers 5.0"*)
-@@ -10047,8 +10643,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10057,8 +10651,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -5100,7 +5055,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -10081,13 +10678,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10091,13 +10686,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -5173,7 +5128,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -10179,7 +10834,7 @@ haiku*)
+@@ -10189,7 +10842,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -5182,16 +5137,7 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -10975,7 +11630,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 10978 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11019,10 +11674,10 @@ else
+@@ -11029,10 +11682,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -5204,16 +5150,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11081,7 +11736,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11084 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11125,10 +11780,10 @@ else
+@@ -11135,10 +11788,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -5226,7 +5163,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15276,13 +15931,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -15350,13 +16003,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
  lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
  lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
  lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -5247,7 +5184,7 @@
  STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
  RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
  old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -15297,14 +15959,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -15371,14 +16031,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
  lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -5266,7 +5203,7 @@
  DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
  NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
  LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -15337,12 +16002,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -15411,12 +16074,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
  hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
  inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -5280,7 +5217,7 @@
  file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
  variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
  need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -15397,8 +16062,13 @@ reload_flag \
+@@ -15471,8 +16134,13 @@ reload_flag \
  OBJDUMP \
  deplibs_check_method \
  file_magic_cmd \
@@ -5294,7 +5231,7 @@
  STRIP \
  RANLIB \
  CC \
-@@ -15408,12 +16078,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -15482,12 +16150,14 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -5310,7 +5247,7 @@
  DSYMUTIL \
  NMEDIT \
  LIPO \
-@@ -15429,7 +16101,6 @@ no_undefined_flag \
+@@ -15503,7 +16173,6 @@ no_undefined_flag \
  hardcode_libdir_flag_spec \
  hardcode_libdir_flag_spec_ld \
  hardcode_libdir_separator \
@@ -5318,7 +5255,7 @@
  exclude_expsyms \
  include_expsyms \
  file_list_spec \
-@@ -15465,6 +16136,7 @@ module_cmds \
+@@ -15539,6 +16208,7 @@ module_cmds \
  module_expsym_cmds \
  export_symbols_cmds \
  prelink_cmds \
@@ -5326,7 +5263,7 @@
  postinstall_cmds \
  postuninstall_cmds \
  finish_cmds \
-@@ -16229,7 +16901,8 @@ $as_echo X"$file" |
+@@ -16303,7 +16973,8 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -5336,7 +5273,7 @@
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -16332,19 +17005,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -16406,19 +17077,42 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -5380,7 +5317,7 @@
  # A symbol stripping program.
  STRIP=$lt_STRIP
  
-@@ -16374,6 +17070,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -16448,6 +17142,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  # Transform the output of nm in a C name address pair when lib prefix is needed.
  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
  
@@ -5393,7 +5330,7 @@
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
-@@ -16383,6 +17085,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -16457,6 +17157,9 @@ MAGIC_CMD=$MAGIC_CMD
  # Must we lock files when doing compilation?
  need_locks=$lt_need_locks
  
@@ -5403,7 +5340,7 @@
  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  DSYMUTIL=$lt_DSYMUTIL
  
-@@ -16497,12 +17202,12 @@ with_gcc=$GCC
+@@ -16571,12 +17274,12 @@ with_gcc=$GCC
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
  
@@ -5419,7 +5356,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static
  
-@@ -16589,9 +17294,6 @@ inherit_rpath=$inherit_rpath
+@@ -16663,9 +17366,6 @@ inherit_rpath=$inherit_rpath
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs
  
@@ -5429,7 +5366,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols
  
-@@ -16607,6 +17309,9 @@ include_expsyms=$lt_include_expsyms
+@@ -16681,6 +17381,9 @@ include_expsyms=$lt_include_expsyms
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds
  
@@ -5439,7 +5376,7 @@
  # Specify filename containing input files.
  file_list_spec=$lt_file_list_spec
  
-@@ -16639,210 +17344,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -16713,210 +17416,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
    # text mode, it properly converts lines to CR/LF.  This bash problem
    # is reportedly fixed, but why not run on old versions too?
@@ -5814,10 +5751,10 @@
    chmod +x "$ofile"
  
 diff --git a/gprof/configure b/gprof/configure
-index d4db554..78b292c 100755
+index 626e1c7..a88719c 100755
 --- a/gprof/configure
 +++ b/gprof/configure
-@@ -629,8 +629,11 @@ OTOOL
+@@ -630,8 +630,11 @@ OTOOL
  LIPO
  NMEDIT
  DSYMUTIL
@@ -5829,7 +5766,7 @@
  OBJDUMP
  LN_S
  NM
-@@ -741,6 +744,7 @@ enable_static
+@@ -743,6 +746,7 @@ enable_static
  with_pic
  enable_fast_install
  with_gnu_ld
@@ -5837,7 +5774,7 @@
  enable_libtool_lock
  enable_plugins
  enable_largefile
-@@ -1399,6 +1403,8 @@ Optional Packages:
+@@ -1401,6 +1405,8 @@ Optional Packages:
    --with-pic              try to use only PIC/non-PIC objects [default=use
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
@@ -5846,7 +5783,7 @@
  
  Some influential environment variables:
    CC          C compiler command
-@@ -4831,8 +4837,8 @@ esac
+@@ -4835,8 +4841,8 @@ esac
  
  
  
@@ -5857,7 +5794,7 @@
  
  
  
-@@ -4872,7 +4878,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -4876,7 +4882,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
  $as_echo_n "checking how to print strings... " >&6; }
  # Test print first, because it will be a builtin if present.
@@ -5866,7 +5803,7 @@
     test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
    ECHO='print -r --'
  elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5558,8 +5564,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5562,8 +5568,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
  # Try some XSI features
  xsi_shell=no
  ( _lt_dummy="a/b/c"
@@ -5877,7 +5814,7 @@
      && eval 'test $(( 1 + 1 )) -eq 2 \
      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
    && xsi_shell=yes
-@@ -5608,6 +5614,80 @@ esac
+@@ -5612,6 +5618,80 @@ esac
  
  
  
@@ -5958,7 +5895,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
  $as_echo_n "checking for $LD option to reload object files... " >&6; }
  if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5624,6 +5704,11 @@ case $reload_flag in
+@@ -5628,6 +5708,11 @@ case $reload_flag in
  esac
  reload_cmds='$LD$reload_flag -o $output$reload_objs'
  case $host_os in
@@ -5970,7 +5907,7 @@
    darwin*)
      if test "$GCC" = yes; then
        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -5792,7 +5877,8 @@ mingw* | pw32*)
+@@ -5796,7 +5881,8 @@ mingw* | pw32*)
      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
      lt_cv_file_magic_cmd='func_win32_libid'
    else
@@ -5980,7 +5917,7 @@
      lt_cv_file_magic_cmd='$OBJDUMP -f'
    fi
    ;;
-@@ -5869,11 +5955,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+@@ -5873,11 +5959,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
    lt_cv_deplibs_check_method=pass_all
    ;;
  
@@ -5992,7 +5929,7 @@
  netbsd*)
    if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
      lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-@@ -5951,6 +6032,21 @@ esac
+@@ -5955,6 +6036,21 @@ esac
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
  $as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -6014,7 +5951,7 @@
  file_magic_cmd=$lt_cv_file_magic_cmd
  deplibs_check_method=$lt_cv_deplibs_check_method
  test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -5966,9 +6062,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5970,9 +6066,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
  
  
  
@@ -6179,7 +6116,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_AR+set}" = set; then :
-@@ -5984,7 +6233,7 @@ do
+@@ -5988,7 +6237,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -6188,7 +6125,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6004,11 +6253,15 @@ $as_echo "no" >&6; }
+@@ -6008,11 +6257,15 @@ $as_echo "no" >&6; }
  fi
  
  
@@ -6207,7 +6144,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6024,7 +6277,7 @@ do
+@@ -6028,7 +6281,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -6216,7 +6153,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6043,6 +6296,10 @@ else
+@@ -6047,6 +6300,10 @@ else
  $as_echo "no" >&6; }
  fi
  
@@ -6227,7 +6164,7 @@
    if test "x$ac_ct_AR" = x; then
      AR="false"
    else
-@@ -6054,12 +6311,10 @@ ac_tool_warned=yes ;;
+@@ -6058,12 +6315,10 @@ ac_tool_warned=yes ;;
  esac
      AR=$ac_ct_AR
    fi
@@ -6242,7 +6179,7 @@
  
  
  
-@@ -6071,6 +6326,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6075,6 +6330,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
  
  
  
@@ -6307,7 +6244,7 @@
  if test -n "$ac_tool_prefix"; then
    # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
  set dummy ${ac_tool_prefix}strip; ac_word=$2
-@@ -6405,8 +6718,8 @@ esac
+@@ -6409,8 +6722,8 @@ esac
  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  
  # Transform an extracted symbol line into symbol name and symbol address
@@ -6318,7 +6255,7 @@
  
  # Handle CRLF in mingw tool chain
  opt_cr=
-@@ -6442,6 +6755,7 @@ for ac_symprfx in "" "_"; do
+@@ -6446,6 +6759,7 @@ for ac_symprfx in "" "_"; do
    else
      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
    fi
@@ -6326,7 +6263,7 @@
  
    # Check to see that the pipe works correctly.
    pipe_works=no
-@@ -6483,6 +6797,18 @@ _LT_EOF
+@@ -6487,6 +6801,18 @@ _LT_EOF
        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
  	  cat <<_LT_EOF > conftest.$ac_ext
@@ -6345,7 +6282,7 @@
  #ifdef __cplusplus
  extern "C" {
  #endif
-@@ -6494,7 +6820,7 @@ _LT_EOF
+@@ -6498,7 +6824,7 @@ _LT_EOF
  	  cat <<_LT_EOF >> conftest.$ac_ext
  
  /* The mapping between symbol names and symbols.  */
@@ -6354,7 +6291,7 @@
    const char *name;
    void       *address;
  }
-@@ -6520,8 +6846,8 @@ static const void *lt_preloaded_setup() {
+@@ -6524,8 +6850,8 @@ static const void *lt_preloaded_setup() {
  _LT_EOF
  	  # Now try linking the two files.
  	  mv conftest.$ac_objext conftstm.$ac_objext
@@ -6365,7 +6302,7 @@
  	  LIBS="conftstm.$ac_objext"
  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6531,8 +6857,8 @@ _LT_EOF
+@@ -6535,8 +6861,8 @@ _LT_EOF
    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
  	    pipe_works=yes
  	  fi
@@ -6376,7 +6313,7 @@
  	else
  	  echo "cannot find nm_test_func in $nlist" >&5
  	fi
-@@ -6569,6 +6895,18 @@ else
+@@ -6573,6 +6899,18 @@ else
  $as_echo "ok" >&6; }
  fi
  
@@ -6395,7 +6332,7 @@
  
  
  
-@@ -6590,6 +6928,43 @@ fi
+@@ -6594,6 +6932,43 @@ fi
  
  
  
@@ -6439,7 +6376,7 @@
  # Check whether --enable-libtool-lock was given.
  if test "${enable_libtool_lock+set}" = set; then :
    enableval=$enable_libtool_lock;
-@@ -6796,6 +7171,123 @@ esac
+@@ -6800,6 +7175,123 @@ esac
  
  need_locks="$enable_libtool_lock"
  
@@ -6563,7 +6500,7 @@
  
    case $host_os in
      rhapsody* | darwin*)
-@@ -7359,6 +7851,8 @@ _LT_EOF
+@@ -7363,6 +7855,8 @@ _LT_EOF
        $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
        echo "$AR cru libconftest.a conftest.o" >&5
        $AR cru libconftest.a conftest.o 2>&5
@@ -6572,7 +6509,7 @@
        cat > conftest.c << _LT_EOF
  int main() { return 0;}
  _LT_EOF
-@@ -7554,7 +8048,8 @@ fi
+@@ -7558,7 +8052,8 @@ fi
  LIBTOOL_DEPS="$ltmain"
  
  # Always use our own libtool.
@@ -6582,7 +6519,7 @@
  
  
  
-@@ -7643,7 +8138,7 @@ aix3*)
+@@ -7647,7 +8142,7 @@ aix3*)
  esac
  
  # Global variables:
@@ -6591,7 +6528,7 @@
  can_build_shared=yes
  
  # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -7941,8 +8436,6 @@ fi
+@@ -7945,8 +8440,6 @@ fi
  lt_prog_compiler_pic=
  lt_prog_compiler_static=
  
@@ -6600,7 +6537,7 @@
  
    if test "$GCC" = yes; then
      lt_prog_compiler_wl='-Wl,'
-@@ -8108,6 +8601,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8112,6 +8605,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	lt_prog_compiler_pic='--shared'
  	lt_prog_compiler_static='--static'
  	;;
@@ -6613,7 +6550,7 @@
        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
          # Portland Group compilers (*not* the Pentium gcc compiler,
  	# which looks to be a dead project)
-@@ -8170,7 +8669,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8174,7 +8673,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
        lt_prog_compiler_pic='-KPIC'
        lt_prog_compiler_static='-Bstatic'
        case $cc_basename in
@@ -6622,7 +6559,7 @@
  	lt_prog_compiler_wl='-Qoption ld ';;
        *)
  	lt_prog_compiler_wl='-Wl,';;
-@@ -8227,13 +8726,17 @@ case $host_os in
+@@ -8231,13 +8730,17 @@ case $host_os in
      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
      ;;
  esac
@@ -6646,7 +6583,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -8294,6 +8797,11 @@ fi
+@@ -8298,6 +8801,11 @@ fi
  
  
  
@@ -6658,7 +6595,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -8644,7 +9152,8 @@ _LT_EOF
+@@ -8648,7 +9156,8 @@ _LT_EOF
        allow_undefined_flag=unsupported
        always_export_symbols=no
        enable_shared_with_static_runtimes=yes
@@ -6668,7 +6605,7 @@
  
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8743,12 +9252,12 @@ _LT_EOF
+@@ -8747,12 +9256,12 @@ _LT_EOF
  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
  	  hardcode_libdir_flag_spec=
  	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -6683,7 +6620,7 @@
  	  fi
  	  ;;
  	esac
-@@ -8762,8 +9271,8 @@ _LT_EOF
+@@ -8766,8 +9275,8 @@ _LT_EOF
  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  	wlarc=
        else
@@ -6694,7 +6631,7 @@
        fi
        ;;
  
-@@ -8781,8 +9290,8 @@ _LT_EOF
+@@ -8785,8 +9294,8 @@ _LT_EOF
  
  _LT_EOF
        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -6705,7 +6642,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -8828,8 +9337,8 @@ _LT_EOF
+@@ -8832,8 +9341,8 @@ _LT_EOF
  
      *)
        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -6716,7 +6653,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -8959,7 +9468,13 @@ _LT_EOF
+@@ -8963,7 +9472,13 @@ _LT_EOF
  	allow_undefined_flag='-berok'
          # Determine the default libpath from the value encoded in an
          # empty executable.
@@ -6731,7 +6668,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -8972,22 +9487,29 @@ main ()
+@@ -8976,22 +9491,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -6774,7 +6711,7 @@
  
          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
          archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -8999,7 +9521,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9003,7 +9525,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	else
  	 # Determine the default libpath from the value encoded in an
  	 # empty executable.
@@ -6789,7 +6726,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9012,22 +9540,29 @@ main ()
+@@ -9016,22 +9544,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -6832,7 +6769,7 @@
  
  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
  	  # Warning - without using the other run time loading flags,
-@@ -9072,20 +9607,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9076,20 +9611,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # Microsoft Visual C++.
        # hardcode_libdir_flag_spec is actually meaningless, as there is
        # no search path for DLLs.
@@ -6910,7 +6847,7 @@
        ;;
  
      darwin* | rhapsody*)
-@@ -9146,7 +9724,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9150,7 +9728,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
      freebsd* | dragonfly*)
@@ -6919,7 +6856,7 @@
        hardcode_libdir_flag_spec='-R$libdir'
        hardcode_direct=yes
        hardcode_shlibpath_var=no
-@@ -9154,7 +9732,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9158,7 +9736,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux9*)
        if test "$GCC" = yes; then
@@ -6928,7 +6865,7 @@
        else
  	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
        fi
-@@ -9170,7 +9748,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9174,7 +9752,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux10*)
        if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -6937,7 +6874,7 @@
        else
  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
        fi
-@@ -9194,10 +9772,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9198,10 +9776,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  	  ;;
  	ia64*)
@@ -6950,7 +6887,7 @@
  	  ;;
  	esac
        else
-@@ -9276,23 +9854,36 @@ fi
+@@ -9280,23 +9858,36 @@ fi
  
      irix5* | irix6* | nonstopux*)
        if test "$GCC" = yes; then
@@ -6995,7 +6932,7 @@
        else
  	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
  	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9377,7 +9968,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9381,7 +9972,7 @@ rm -f core conftest.err conftest.$ac_objext \
      osf4* | osf5*)	# as osf3* with the addition of -msym flag
        if test "$GCC" = yes; then
  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -7004,7 +6941,7 @@
  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
        else
  	allow_undefined_flag=' -expect_unresolved \*'
-@@ -9396,9 +9987,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9400,9 +9991,9 @@ rm -f core conftest.err conftest.$ac_objext \
        no_undefined_flag=' -z defs'
        if test "$GCC" = yes; then
  	wlarc='${wl}'
@@ -7016,7 +6953,7 @@
        else
  	case `$CC -V 2>&1` in
  	*"Compilers 5.0"*)
-@@ -9974,8 +10565,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9978,8 +10569,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -7028,7 +6965,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -10008,13 +10600,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10012,13 +10604,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -7101,7 +7038,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -10106,7 +10756,7 @@ haiku*)
+@@ -10110,7 +10760,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -7110,16 +7047,7 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -10902,7 +11552,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 10900 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -10946,10 +11596,10 @@ else
+@@ -10950,10 +11600,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -7132,16 +7060,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11008,7 +11658,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11006 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11052,10 +11702,10 @@ else
+@@ -11056,10 +11706,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -7154,7 +7073,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12924,13 +13574,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -12961,13 +13611,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
  lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
  lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
  lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -7175,7 +7094,7 @@
  STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
  RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
  old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -12945,14 +13602,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -12982,14 +13639,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
  lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -7194,7 +7113,7 @@
  DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
  NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
  LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -12985,12 +13645,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -13022,12 +13682,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
  hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
  inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -7208,7 +7127,7 @@
  file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
  variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
  need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -13045,8 +13705,13 @@ reload_flag \
+@@ -13082,8 +13742,13 @@ reload_flag \
  OBJDUMP \
  deplibs_check_method \
  file_magic_cmd \
@@ -7222,7 +7141,7 @@
  STRIP \
  RANLIB \
  CC \
-@@ -13056,12 +13721,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -13093,12 +13758,14 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -7238,7 +7157,7 @@
  DSYMUTIL \
  NMEDIT \
  LIPO \
-@@ -13077,7 +13744,6 @@ no_undefined_flag \
+@@ -13114,7 +13781,6 @@ no_undefined_flag \
  hardcode_libdir_flag_spec \
  hardcode_libdir_flag_spec_ld \
  hardcode_libdir_separator \
@@ -7246,7 +7165,7 @@
  exclude_expsyms \
  include_expsyms \
  file_list_spec \
-@@ -13113,6 +13779,7 @@ module_cmds \
+@@ -13150,6 +13816,7 @@ module_cmds \
  module_expsym_cmds \
  export_symbols_cmds \
  prelink_cmds \
@@ -7254,7 +7173,7 @@
  postinstall_cmds \
  postuninstall_cmds \
  finish_cmds \
-@@ -13869,7 +14536,8 @@ $as_echo X"$file" |
+@@ -13906,7 +14573,8 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -7264,7 +7183,7 @@
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -13972,19 +14640,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -14009,19 +14677,42 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -7308,7 +7227,7 @@
  # A symbol stripping program.
  STRIP=$lt_STRIP
  
-@@ -14014,6 +14705,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -14051,6 +14742,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  # Transform the output of nm in a C name address pair when lib prefix is needed.
  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
  
@@ -7321,7 +7240,7 @@
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
-@@ -14023,6 +14720,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -14060,6 +14757,9 @@ MAGIC_CMD=$MAGIC_CMD
  # Must we lock files when doing compilation?
  need_locks=$lt_need_locks
  
@@ -7331,7 +7250,7 @@
  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  DSYMUTIL=$lt_DSYMUTIL
  
-@@ -14137,12 +14837,12 @@ with_gcc=$GCC
+@@ -14174,12 +14874,12 @@ with_gcc=$GCC
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
  
@@ -7347,7 +7266,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static
  
-@@ -14229,9 +14929,6 @@ inherit_rpath=$inherit_rpath
+@@ -14266,9 +14966,6 @@ inherit_rpath=$inherit_rpath
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs
  
@@ -7357,7 +7276,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols
  
-@@ -14247,6 +14944,9 @@ include_expsyms=$lt_include_expsyms
+@@ -14284,6 +14981,9 @@ include_expsyms=$lt_include_expsyms
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds
  
@@ -7367,7 +7286,7 @@
  # Specify filename containing input files.
  file_list_spec=$lt_file_list_spec
  
-@@ -14279,210 +14979,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -14316,210 +15016,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
    # text mode, it properly converts lines to CR/LF.  This bash problem
    # is reportedly fixed, but why not run on old versions too?
@@ -7742,10 +7661,10 @@
    chmod +x "$ofile"
  
 diff --git a/ld/configure b/ld/configure
-index 8095b71..eb4f0d7 100755
+index f9be51a..3df1149 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -657,8 +657,11 @@ OTOOL
+@@ -658,8 +658,11 @@ OTOOL
  LIPO
  NMEDIT
  DSYMUTIL
@@ -7757,7 +7676,7 @@
  OBJDUMP
  LN_S
  NM
-@@ -779,6 +782,7 @@ enable_static
+@@ -781,6 +784,7 @@ enable_static
  with_pic
  enable_fast_install
  with_gnu_ld
@@ -7765,7 +7684,7 @@
  enable_libtool_lock
  enable_plugins
  enable_largefile
-@@ -1458,6 +1462,8 @@ Optional Packages:
+@@ -1462,6 +1466,8 @@ Optional Packages:
    --with-pic              try to use only PIC/non-PIC objects [default=use
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
@@ -7774,7 +7693,7 @@
    --with-lib-path=dir1:dir2...  set default LIB_PATH
    --with-sysroot=DIR Search for usr/lib et al within DIR.
  
-@@ -5649,8 +5655,8 @@ esac
+@@ -5656,8 +5662,8 @@ esac
  
  
  
@@ -7785,7 +7704,7 @@
  
  
  
-@@ -5690,7 +5696,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5697,7 +5703,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
  $as_echo_n "checking how to print strings... " >&6; }
  # Test print first, because it will be a builtin if present.
@@ -7794,7 +7713,7 @@
     test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
    ECHO='print -r --'
  elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6376,8 +6382,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6383,8 +6389,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
  # Try some XSI features
  xsi_shell=no
  ( _lt_dummy="a/b/c"
@@ -7805,7 +7724,7 @@
      && eval 'test $(( 1 + 1 )) -eq 2 \
      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
    && xsi_shell=yes
-@@ -6426,6 +6432,80 @@ esac
+@@ -6433,6 +6439,80 @@ esac
  
  
  
@@ -7886,7 +7805,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
  $as_echo_n "checking for $LD option to reload object files... " >&6; }
  if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -6442,6 +6522,11 @@ case $reload_flag in
+@@ -6449,6 +6529,11 @@ case $reload_flag in
  esac
  reload_cmds='$LD$reload_flag -o $output$reload_objs'
  case $host_os in
@@ -7898,7 +7817,7 @@
    darwin*)
      if test "$GCC" = yes; then
        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6610,7 +6695,8 @@ mingw* | pw32*)
+@@ -6617,7 +6702,8 @@ mingw* | pw32*)
      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
      lt_cv_file_magic_cmd='func_win32_libid'
    else
@@ -7908,7 +7827,7 @@
      lt_cv_file_magic_cmd='$OBJDUMP -f'
    fi
    ;;
-@@ -6764,6 +6850,21 @@ esac
+@@ -6771,6 +6857,21 @@ esac
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
  $as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -7930,7 +7849,7 @@
  file_magic_cmd=$lt_cv_file_magic_cmd
  deplibs_check_method=$lt_cv_deplibs_check_method
  test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6779,9 +6880,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6786,9 +6887,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
  
  
  
@@ -8095,7 +8014,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6797,7 +7051,7 @@ do
+@@ -6804,7 +7058,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -8104,7 +8023,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6817,11 +7071,15 @@ $as_echo "no" >&6; }
+@@ -6824,11 +7078,15 @@ $as_echo "no" >&6; }
  fi
  
  
@@ -8123,7 +8042,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6837,7 +7095,7 @@ do
+@@ -6844,7 +7102,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -8132,7 +8051,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6856,6 +7114,10 @@ else
+@@ -6863,6 +7121,10 @@ else
  $as_echo "no" >&6; }
  fi
  
@@ -8143,7 +8062,7 @@
    if test "x$ac_ct_AR" = x; then
      AR="false"
    else
-@@ -6867,12 +7129,12 @@ ac_tool_warned=yes ;;
+@@ -6874,12 +7136,12 @@ ac_tool_warned=yes ;;
  esac
      AR=$ac_ct_AR
    fi
@@ -8160,7 +8079,7 @@
  
  
  
-@@ -6882,6 +7144,62 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6889,6 +7151,62 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
  
  
  
@@ -8223,7 +8142,7 @@
  
  
  if test -n "$ac_tool_prefix"; then
-@@ -7218,8 +7536,8 @@ esac
+@@ -7225,8 +7543,8 @@ esac
  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  
  # Transform an extracted symbol line into symbol name and symbol address
@@ -8234,7 +8153,7 @@
  
  # Handle CRLF in mingw tool chain
  opt_cr=
-@@ -7255,6 +7573,7 @@ for ac_symprfx in "" "_"; do
+@@ -7262,6 +7580,7 @@ for ac_symprfx in "" "_"; do
    else
      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
    fi
@@ -8242,7 +8161,7 @@
  
    # Check to see that the pipe works correctly.
    pipe_works=no
-@@ -7296,6 +7615,18 @@ _LT_EOF
+@@ -7303,6 +7622,18 @@ _LT_EOF
        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
  	  cat <<_LT_EOF > conftest.$ac_ext
@@ -8261,7 +8180,7 @@
  #ifdef __cplusplus
  extern "C" {
  #endif
-@@ -7307,7 +7638,7 @@ _LT_EOF
+@@ -7314,7 +7645,7 @@ _LT_EOF
  	  cat <<_LT_EOF >> conftest.$ac_ext
  
  /* The mapping between symbol names and symbols.  */
@@ -8270,7 +8189,7 @@
    const char *name;
    void       *address;
  }
-@@ -7333,8 +7664,8 @@ static const void *lt_preloaded_setup() {
+@@ -7340,8 +7671,8 @@ static const void *lt_preloaded_setup() {
  _LT_EOF
  	  # Now try linking the two files.
  	  mv conftest.$ac_objext conftstm.$ac_objext
@@ -8281,7 +8200,7 @@
  	  LIBS="conftstm.$ac_objext"
  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7344,8 +7675,8 @@ _LT_EOF
+@@ -7351,8 +7682,8 @@ _LT_EOF
    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
  	    pipe_works=yes
  	  fi
@@ -8292,7 +8211,7 @@
  	else
  	  echo "cannot find nm_test_func in $nlist" >&5
  	fi
-@@ -7382,6 +7713,19 @@ else
+@@ -7389,6 +7720,19 @@ else
  $as_echo "ok" >&6; }
  fi
  
@@ -8312,7 +8231,7 @@
  
  
  
-@@ -7402,6 +7746,42 @@ fi
+@@ -7409,6 +7753,42 @@ fi
  
  
  
@@ -8355,7 +8274,7 @@
  
  # Check whether --enable-libtool-lock was given.
  if test "${enable_libtool_lock+set}" = set; then :
-@@ -7609,6 +7989,123 @@ esac
+@@ -7616,6 +7996,123 @@ esac
  
  need_locks="$enable_libtool_lock"
  
@@ -8479,7 +8398,7 @@
  
    case $host_os in
      rhapsody* | darwin*)
-@@ -8172,6 +8669,8 @@ _LT_EOF
+@@ -8179,6 +8676,8 @@ _LT_EOF
        $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
        echo "$AR cru libconftest.a conftest.o" >&5
        $AR cru libconftest.a conftest.o 2>&5
@@ -8488,7 +8407,7 @@
        cat > conftest.c << _LT_EOF
  int main() { return 0;}
  _LT_EOF
-@@ -8240,6 +8739,16 @@ done
+@@ -8247,6 +8746,16 @@ done
  
  
  
@@ -8505,7 +8424,7 @@
  
  
  # Set options
-@@ -8368,7 +8877,8 @@ fi
+@@ -8375,7 +8884,8 @@ fi
  LIBTOOL_DEPS="$ltmain"
  
  # Always use our own libtool.
@@ -8515,7 +8434,7 @@
  
  
  
-@@ -8457,7 +8967,7 @@ aix3*)
+@@ -8464,7 +8974,7 @@ aix3*)
  esac
  
  # Global variables:
@@ -8524,7 +8443,7 @@
  can_build_shared=yes
  
  # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8755,8 +9265,6 @@ fi
+@@ -8762,8 +9272,6 @@ fi
  lt_prog_compiler_pic=
  lt_prog_compiler_static=
  
@@ -8533,7 +8452,7 @@
  
    if test "$GCC" = yes; then
      lt_prog_compiler_wl='-Wl,'
-@@ -8922,6 +9430,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8929,6 +9437,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	lt_prog_compiler_pic='--shared'
  	lt_prog_compiler_static='--static'
  	;;
@@ -8546,7 +8465,7 @@
        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
          # Portland Group compilers (*not* the Pentium gcc compiler,
  	# which looks to be a dead project)
-@@ -8984,7 +9498,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8991,7 +9505,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
        lt_prog_compiler_pic='-KPIC'
        lt_prog_compiler_static='-Bstatic'
        case $cc_basename in
@@ -8555,7 +8474,7 @@
  	lt_prog_compiler_wl='-Qoption ld ';;
        *)
  	lt_prog_compiler_wl='-Wl,';;
-@@ -9041,13 +9555,17 @@ case $host_os in
+@@ -9048,13 +9562,17 @@ case $host_os in
      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
      ;;
  esac
@@ -8579,7 +8498,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -9108,6 +9626,11 @@ fi
+@@ -9115,6 +9633,11 @@ fi
  
  
  
@@ -8591,7 +8510,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -9458,7 +9981,8 @@ _LT_EOF
+@@ -9465,7 +9988,8 @@ _LT_EOF
        allow_undefined_flag=unsupported
        always_export_symbols=no
        enable_shared_with_static_runtimes=yes
@@ -8601,7 +8520,7 @@
  
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9557,12 +10081,12 @@ _LT_EOF
+@@ -9564,12 +10088,12 @@ _LT_EOF
  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
  	  hardcode_libdir_flag_spec=
  	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -8616,7 +8535,7 @@
  	  fi
  	  ;;
  	esac
-@@ -9576,8 +10100,8 @@ _LT_EOF
+@@ -9583,8 +10107,8 @@ _LT_EOF
  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  	wlarc=
        else
@@ -8627,7 +8546,7 @@
        fi
        ;;
  
-@@ -9595,8 +10119,8 @@ _LT_EOF
+@@ -9602,8 +10126,8 @@ _LT_EOF
  
  _LT_EOF
        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -8638,7 +8557,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9642,8 +10166,8 @@ _LT_EOF
+@@ -9649,8 +10173,8 @@ _LT_EOF
  
      *)
        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -8649,7 +8568,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9773,7 +10297,13 @@ _LT_EOF
+@@ -9780,7 +10304,13 @@ _LT_EOF
  	allow_undefined_flag='-berok'
          # Determine the default libpath from the value encoded in an
          # empty executable.
@@ -8664,7 +8583,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9786,22 +10316,29 @@ main ()
+@@ -9793,22 +10323,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -8707,7 +8626,7 @@
  
          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
          archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9813,7 +10350,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9820,7 +10357,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	else
  	 # Determine the default libpath from the value encoded in an
  	 # empty executable.
@@ -8722,7 +8641,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9826,22 +10369,29 @@ main ()
+@@ -9833,22 +10376,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -8765,7 +8684,7 @@
  
  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
  	  # Warning - without using the other run time loading flags,
-@@ -9885,21 +10435,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9892,21 +10442,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # When not using gcc, we currently assume that we are using
        # Microsoft Visual C++.
        # hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -8845,7 +8764,7 @@
        ;;
  
      darwin* | rhapsody*)
-@@ -9960,7 +10553,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9967,7 +10560,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
      freebsd* | dragonfly*)
@@ -8854,7 +8773,7 @@
        hardcode_libdir_flag_spec='-R$libdir'
        hardcode_direct=yes
        hardcode_shlibpath_var=no
-@@ -9968,7 +10561,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9975,7 +10568,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux9*)
        if test "$GCC" = yes; then
@@ -8863,7 +8782,7 @@
        else
  	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
        fi
-@@ -9984,7 +10577,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9991,7 +10584,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux10*)
        if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -8872,7 +8791,7 @@
        else
  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
        fi
-@@ -10008,10 +10601,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -10015,10 +10608,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  	  ;;
  	ia64*)
@@ -8885,7 +8804,7 @@
  	  ;;
  	esac
        else
-@@ -10090,23 +10683,36 @@ fi
+@@ -10097,23 +10690,36 @@ fi
  
      irix5* | irix6* | nonstopux*)
        if test "$GCC" = yes; then
@@ -8930,7 +8849,7 @@
        else
  	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
  	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -10191,7 +10797,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10198,7 +10804,7 @@ rm -f core conftest.err conftest.$ac_objext \
      osf4* | osf5*)	# as osf3* with the addition of -msym flag
        if test "$GCC" = yes; then
  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -8939,7 +8858,7 @@
  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
        else
  	allow_undefined_flag=' -expect_unresolved \*'
-@@ -10210,9 +10816,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10217,9 +10823,9 @@ rm -f core conftest.err conftest.$ac_objext \
        no_undefined_flag=' -z defs'
        if test "$GCC" = yes; then
  	wlarc='${wl}'
@@ -8951,7 +8870,7 @@
        else
  	case `$CC -V 2>&1` in
  	*"Compilers 5.0"*)
-@@ -10788,8 +11394,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10795,8 +11401,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -8963,7 +8882,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -10822,13 +11429,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10829,13 +11436,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -9036,7 +8955,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -10920,7 +11585,7 @@ haiku*)
+@@ -10927,7 +11592,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -9045,16 +8964,7 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -11716,7 +12381,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11719 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11760,10 +12425,10 @@ else
+@@ -11767,10 +12432,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -9067,16 +8977,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11822,7 +12487,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11825 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11866,10 +12531,10 @@ else
+@@ -11873,10 +12538,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -9089,7 +8990,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12261,6 +12926,7 @@ $RM -r conftest*
+@@ -12268,6 +12933,7 @@ $RM -r conftest*
  
    # Allow CC to be a program name with arguments.
    lt_save_CC=$CC
@@ -9097,7 +8998,7 @@
    lt_save_LD=$LD
    lt_save_GCC=$GCC
    GCC=$GXX
-@@ -12278,6 +12944,7 @@ $RM -r conftest*
+@@ -12285,6 +12951,7 @@ $RM -r conftest*
    fi
    test -z "${LDCXX+set}" || LD=$LDCXX
    CC=${CXX-"c++"}
@@ -9105,7 +9006,7 @@
    compiler=$CC
    compiler_CXX=$CC
    for cc_temp in $compiler""; do
-@@ -12560,7 +13227,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+@@ -12567,7 +13234,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
            allow_undefined_flag_CXX='-berok'
            # Determine the default libpath from the value encoded in an empty
            # executable.
@@ -9120,7 +9021,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -12573,22 +13246,29 @@ main ()
+@@ -12580,22 +13253,29 @@ main ()
  _ACEOF
  if ac_fn_cxx_try_link "$LINENO"; then :
  
@@ -9163,7 +9064,7 @@
  
            hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
  
-@@ -12601,7 +13281,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12608,7 +13288,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
            else
  	    # Determine the default libpath from the value encoded in an
  	    # empty executable.
@@ -9178,7 +9079,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -12614,22 +13300,29 @@ main ()
+@@ -12621,22 +13307,29 @@ main ()
  _ACEOF
  if ac_fn_cxx_try_link "$LINENO"; then :
  
@@ -9221,7 +9122,7 @@
  
  	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
  	    # Warning - without using the other run time loading flags,
-@@ -12672,29 +13365,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12679,29 +13372,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
          ;;
  
        cygwin* | mingw* | pw32* | cegcc*)
@@ -9320,7 +9221,7 @@
        darwin* | rhapsody*)
  
  
-@@ -12800,7 +13539,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12807,7 +13546,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
              ;;
            *)
              if test "$GXX" = yes; then
@@ -9329,7 +9230,7 @@
              else
                # FIXME: insert proper C++ library support
                ld_shlibs_CXX=no
-@@ -12871,10 +13610,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12878,10 +13617,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  	            ;;
  	          ia64*)
@@ -9342,7 +9243,7 @@
  	            ;;
  	        esac
  	      fi
-@@ -12915,9 +13654,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12922,9 +13661,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
            *)
  	    if test "$GXX" = yes; then
  	      if test "$with_gnu_ld" = no; then
@@ -9354,7 +9255,7 @@
  	      fi
  	    fi
  	    link_all_deplibs_CXX=yes
-@@ -12987,20 +13726,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12994,20 +13733,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	      prelink_cmds_CXX='tpldir=Template.dir~
  		rm -rf $tpldir~
  		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
@@ -9379,7 +9280,7 @@
  	      ;;
  	    *) # Version 6 and above use weak symbols
  	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-@@ -13195,7 +13934,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13202,7 +13941,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
  		  ;;
  	        *)
@@ -9388,7 +9289,7 @@
  		  ;;
  	      esac
  
-@@ -13241,7 +13980,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13248,7 +13987,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
        solaris*)
          case $cc_basename in
@@ -9397,7 +9298,7 @@
  	    # Sun C++ 4.2, 5.x and Centerline C++
              archive_cmds_need_lc_CXX=yes
  	    no_undefined_flag_CXX=' -zdefs'
-@@ -13282,9 +14021,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13289,9 +14028,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
  	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
  	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
@@ -9409,7 +9310,7 @@
  
  	        # Commands to make compiler produce verbose output that lists
  	        # what "hidden" libraries, object files and flags are used when
-@@ -13419,6 +14158,13 @@ private:
+@@ -13426,6 +14165,13 @@ private:
  };
  _LT_EOF
  
@@ -9423,7 +9324,7 @@
  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
    (eval $ac_compile) 2>&5
    ac_status=$?
-@@ -13432,7 +14178,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13439,7 +14185,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
    pre_test_object_deps_done=no
  
    for p in `eval "$output_verbose_link_cmd"`; do
@@ -9432,7 +9333,7 @@
  
      -L* | -R* | -l*)
         # Some compilers place space between "-{L,R}" and the path.
-@@ -13441,13 +14187,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13448,13 +14194,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
            test $p = "-R"; then
  	 prev=$p
  	 continue
@@ -9459,7 +9360,7 @@
  	   # Internal compiler library paths should come after those
  	   # provided the user.  The postdeps already come after the
  	   # user supplied libs so there is no need to process them.
-@@ -13467,8 +14222,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13474,8 +14229,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
  	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
  	 fi
         fi
@@ -9470,7 +9371,7 @@
      *.$objext)
         # This assumes that the test object file only shows up
         # once in the compiler output.
-@@ -13504,6 +14261,7 @@ else
+@@ -13511,6 +14268,7 @@ else
  fi
  
  $RM -f confest.$objext
@@ -9478,7 +9379,7 @@
  
  # PORTME: override above test on systems where it is broken
  case $host_os in
-@@ -13539,7 +14297,7 @@ linux*)
+@@ -13546,7 +14304,7 @@ linux*)
  
  solaris*)
    case $cc_basename in
@@ -9487,7 +9388,7 @@
      # The more standards-conforming stlport4 library is
      # incompatible with the Cstd library. Avoid specifying
      # it if it's in CXXFLAGS. Ignore libCrun as
-@@ -13604,8 +14362,6 @@ fi
+@@ -13611,8 +14369,6 @@ fi
  lt_prog_compiler_pic_CXX=
  lt_prog_compiler_static_CXX=
  
@@ -9496,7 +9397,7 @@
  
    # C++ specific cases for pic, static, wl, etc.
    if test "$GXX" = yes; then
-@@ -13710,6 +14466,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -13717,6 +14473,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	  ;;
  	esac
  	;;
@@ -9508,7 +9409,7 @@
        dgux*)
  	case $cc_basename in
  	  ec++*)
-@@ -13862,7 +14623,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -13869,7 +14630,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	;;
        solaris*)
  	case $cc_basename in
@@ -9517,7 +9418,7 @@
  	    # Sun C++ 4.2, 5.x and Centerline C++
  	    lt_prog_compiler_pic_CXX='-KPIC'
  	    lt_prog_compiler_static_CXX='-Bstatic'
-@@ -13927,10 +14688,17 @@ case $host_os in
+@@ -13934,10 +14695,17 @@ case $host_os in
      lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
      ;;
  esac
@@ -9538,7 +9439,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -13988,6 +14756,8 @@ fi
+@@ -13995,6 +14763,8 @@ fi
  
  
  
@@ -9547,7 +9448,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -14165,6 +14935,7 @@ fi
+@@ -14172,6 +14942,7 @@ fi
  $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
  
    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
@@ -9555,7 +9456,7 @@
    case $host_os in
    aix[4-9]*)
      # If we're using GNU nm, then we don't want the "-C" option.
-@@ -14179,15 +14950,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+@@ -14186,15 +14957,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
      ;;
    pw32*)
      export_symbols_cmds_CXX="$ltdll_cmds"
@@ -9581,7 +9482,7 @@
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
  $as_echo "$ld_shlibs_CXX" >&6; }
-@@ -14450,8 +15226,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -14457,8 +15233,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -9593,7 +9494,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -14483,13 +15260,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -14490,13 +15267,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -9666,7 +9567,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -14580,7 +15415,7 @@ haiku*)
+@@ -14587,7 +15422,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -9675,7 +9576,7 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -15039,6 +15874,7 @@ fi
+@@ -15046,6 +15881,7 @@ fi
    fi # test -n "$compiler"
  
    CC=$lt_save_CC
@@ -9683,7 +9584,7 @@
    LDCXX=$LD
    LD=$lt_save_LD
    GCC=$lt_save_GCC
-@@ -17953,13 +18789,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -17982,13 +18818,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
  lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
  lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
  lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -9704,7 +9605,7 @@
  STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
  RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
  old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -17974,14 +18817,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -18003,14 +18846,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
  lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -9723,7 +9624,7 @@
  DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
  NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
  LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -18014,12 +18860,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -18043,12 +18889,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
  hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
  inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -9737,7 +9638,7 @@
  file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
  variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
  need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -18058,8 +18904,8 @@ old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote
+@@ -18087,8 +18933,8 @@ old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote
  compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
  GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
  lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
@@ -9747,7 +9648,7 @@
  lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
  lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
  archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-@@ -18086,12 +18932,12 @@ hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_
+@@ -18115,12 +18961,12 @@ hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_
  hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
  inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
@@ -9761,7 +9662,7 @@
  file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
  hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
  compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-@@ -18129,8 +18975,13 @@ reload_flag \
+@@ -18158,8 +19004,13 @@ reload_flag \
  OBJDUMP \
  deplibs_check_method \
  file_magic_cmd \
@@ -9775,7 +9676,7 @@
  STRIP \
  RANLIB \
  CC \
-@@ -18140,12 +18991,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -18169,12 +19020,14 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -9791,7 +9692,7 @@
  DSYMUTIL \
  NMEDIT \
  LIPO \
-@@ -18161,7 +19014,6 @@ no_undefined_flag \
+@@ -18190,7 +19043,6 @@ no_undefined_flag \
  hardcode_libdir_flag_spec \
  hardcode_libdir_flag_spec_ld \
  hardcode_libdir_separator \
@@ -9799,7 +9700,7 @@
  exclude_expsyms \
  include_expsyms \
  file_list_spec \
-@@ -18183,8 +19035,8 @@ LD_CXX \
+@@ -18212,8 +19064,8 @@ LD_CXX \
  reload_flag_CXX \
  compiler_CXX \
  lt_prog_compiler_no_builtin_flag_CXX \
@@ -9809,7 +9710,7 @@
  lt_prog_compiler_static_CXX \
  lt_cv_prog_compiler_c_o_CXX \
  export_dynamic_flag_spec_CXX \
-@@ -18196,7 +19048,6 @@ no_undefined_flag_CXX \
+@@ -18225,7 +19077,6 @@ no_undefined_flag_CXX \
  hardcode_libdir_flag_spec_CXX \
  hardcode_libdir_flag_spec_ld_CXX \
  hardcode_libdir_separator_CXX \
@@ -9817,7 +9718,7 @@
  exclude_expsyms_CXX \
  include_expsyms_CXX \
  file_list_spec_CXX \
-@@ -18230,6 +19081,7 @@ module_cmds \
+@@ -18259,6 +19110,7 @@ module_cmds \
  module_expsym_cmds \
  export_symbols_cmds \
  prelink_cmds \
@@ -9825,7 +9726,7 @@
  postinstall_cmds \
  postuninstall_cmds \
  finish_cmds \
-@@ -18244,7 +19096,8 @@ archive_expsym_cmds_CXX \
+@@ -18273,7 +19125,8 @@ archive_expsym_cmds_CXX \
  module_cmds_CXX \
  module_expsym_cmds_CXX \
  export_symbols_cmds_CXX \
@@ -9835,7 +9736,7 @@
      case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
      *[\\\\\\\`\\"\\\$]*)
        eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-@@ -19037,7 +19890,8 @@ $as_echo X"$file" |
+@@ -19066,7 +19919,8 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -9845,7 +9746,7 @@
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -19140,19 +19994,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -19169,19 +20023,42 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -9889,7 +9790,7 @@
  # A symbol stripping program.
  STRIP=$lt_STRIP
  
-@@ -19182,6 +20059,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -19211,6 +20088,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  # Transform the output of nm in a C name address pair when lib prefix is needed.
  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
  
@@ -9902,7 +9803,7 @@
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
-@@ -19191,6 +20074,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -19220,6 +20103,9 @@ MAGIC_CMD=$MAGIC_CMD
  # Must we lock files when doing compilation?
  need_locks=$lt_need_locks
  
@@ -9912,7 +9813,7 @@
  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  DSYMUTIL=$lt_DSYMUTIL
  
-@@ -19305,12 +20191,12 @@ with_gcc=$GCC
+@@ -19334,12 +20220,12 @@ with_gcc=$GCC
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
  
@@ -9928,7 +9829,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static
  
-@@ -19397,9 +20283,6 @@ inherit_rpath=$inherit_rpath
+@@ -19426,9 +20312,6 @@ inherit_rpath=$inherit_rpath
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs
  
@@ -9938,7 +9839,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols
  
-@@ -19415,6 +20298,9 @@ include_expsyms=$lt_include_expsyms
+@@ -19444,6 +20327,9 @@ include_expsyms=$lt_include_expsyms
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds
  
@@ -9948,7 +9849,7 @@
  # Specify filename containing input files.
  file_list_spec=$lt_file_list_spec
  
-@@ -19461,210 +20347,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -19490,210 +20376,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
    # text mode, it properly converts lines to CR/LF.  This bash problem
    # is reportedly fixed, but why not run on old versions too?
@@ -10322,7 +10223,7 @@
      (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
    chmod +x "$ofile"
  
-@@ -19692,12 +20537,12 @@ with_gcc=$GCC_CXX
+@@ -19721,12 +20566,12 @@ with_gcc=$GCC_CXX
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
  
@@ -10338,7 +10239,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static_CXX
  
-@@ -19784,9 +20629,6 @@ inherit_rpath=$inherit_rpath_CXX
+@@ -19813,9 +20658,6 @@ inherit_rpath=$inherit_rpath_CXX
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs_CXX
  
@@ -10348,7 +10249,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols_CXX
  
-@@ -19802,6 +20644,9 @@ include_expsyms=$lt_include_expsyms_CXX
+@@ -19831,6 +20673,9 @@ include_expsyms=$lt_include_expsyms_CXX
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds_CXX
  
@@ -10359,7 +10260,7 @@
  file_list_spec=$lt_file_list_spec_CXX
  
 diff --git a/libtool.m4 b/libtool.m4
-index 4b2d30a..008d331 100644
+index 24d13f3..e45fdc6 100644
 --- a/libtool.m4
 +++ b/libtool.m4
 @@ -1,7 +1,8 @@
@@ -16451,7 +16352,7 @@
  	      case "$perm_rpath " in
  	      *" $libdir "*) ;;
 -	      *) perm_rpath="$perm_rpath $libdir" ;;
-+	      *) func_apped perm_rpath " $libdir" ;;
++	      *) func_append perm_rpath " $libdir" ;;
  	      esac
  	    fi
  	  done
@@ -17442,10 +17343,10 @@
  # These exist entirely to fool aclocal when bootstrapping libtool.
  #
 diff --git a/opcodes/configure b/opcodes/configure
-index eedb184..d3076e1 100755
+index f615634..a340983 100755
 --- a/opcodes/configure
 +++ b/opcodes/configure
-@@ -648,6 +648,9 @@ OTOOL
+@@ -649,6 +649,9 @@ OTOOL
  LIPO
  NMEDIT
  DSYMUTIL
@@ -17455,7 +17356,7 @@
  OBJDUMP
  LN_S
  NM
-@@ -760,6 +763,7 @@ enable_static
+@@ -762,6 +765,7 @@ enable_static
  with_pic
  enable_fast_install
  with_gnu_ld
@@ -17463,7 +17364,7 @@
  enable_libtool_lock
  enable_targets
  enable_werror
-@@ -1420,6 +1424,8 @@ Optional Packages:
+@@ -1422,6 +1426,8 @@ Optional Packages:
    --with-pic              try to use only PIC/non-PIC objects [default=use
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
@@ -17472,7 +17373,7 @@
  
  Some influential environment variables:
    CC          C compiler command
-@@ -5110,8 +5116,8 @@ esac
+@@ -5114,8 +5120,8 @@ esac
  
  
  
@@ -17483,7 +17384,7 @@
  
  
  
-@@ -5151,7 +5157,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5155,7 +5161,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
  $as_echo_n "checking how to print strings... " >&6; }
  # Test print first, because it will be a builtin if present.
@@ -17492,7 +17393,7 @@
     test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
    ECHO='print -r --'
  elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5837,8 +5843,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5841,8 +5847,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
  # Try some XSI features
  xsi_shell=no
  ( _lt_dummy="a/b/c"
@@ -17503,7 +17404,7 @@
      && eval 'test $(( 1 + 1 )) -eq 2 \
      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
    && xsi_shell=yes
-@@ -5887,6 +5893,80 @@ esac
+@@ -5891,6 +5897,80 @@ esac
  
  
  
@@ -17584,7 +17485,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
  $as_echo_n "checking for $LD option to reload object files... " >&6; }
  if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5903,6 +5983,11 @@ case $reload_flag in
+@@ -5907,6 +5987,11 @@ case $reload_flag in
  esac
  reload_cmds='$LD$reload_flag -o $output$reload_objs'
  case $host_os in
@@ -17596,7 +17497,7 @@
    darwin*)
      if test "$GCC" = yes; then
        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6071,7 +6156,8 @@ mingw* | pw32*)
+@@ -6075,7 +6160,8 @@ mingw* | pw32*)
      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
      lt_cv_file_magic_cmd='func_win32_libid'
    else
@@ -17606,7 +17507,7 @@
      lt_cv_file_magic_cmd='$OBJDUMP -f'
    fi
    ;;
-@@ -6225,6 +6311,21 @@ esac
+@@ -6229,6 +6315,21 @@ esac
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
  $as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -17628,7 +17529,7 @@
  file_magic_cmd=$lt_cv_file_magic_cmd
  deplibs_check_method=$lt_cv_deplibs_check_method
  test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6240,9 +6341,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6244,9 +6345,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
  
  
  
@@ -17793,7 +17694,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6258,7 +6512,7 @@ do
+@@ -6262,7 +6516,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -17802,7 +17703,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6278,11 +6532,15 @@ $as_echo "no" >&6; }
+@@ -6282,11 +6536,15 @@ $as_echo "no" >&6; }
  fi
  
  
@@ -17821,7 +17722,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6298,7 +6556,7 @@ do
+@@ -6302,7 +6560,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -17830,7 +17731,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -6317,6 +6575,10 @@ else
+@@ -6321,6 +6579,10 @@ else
  $as_echo "no" >&6; }
  fi
  
@@ -17841,7 +17742,7 @@
    if test "x$ac_ct_AR" = x; then
      AR="false"
    else
-@@ -6328,16 +6590,72 @@ ac_tool_warned=yes ;;
+@@ -6332,16 +6594,72 @@ ac_tool_warned=yes ;;
  esac
      AR=$ac_ct_AR
    fi
@@ -17918,7 +17819,7 @@
  
  
  
-@@ -6679,8 +6997,8 @@ esac
+@@ -6683,8 +7001,8 @@ esac
  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  
  # Transform an extracted symbol line into symbol name and symbol address
@@ -17929,7 +17830,7 @@
  
  # Handle CRLF in mingw tool chain
  opt_cr=
-@@ -6716,6 +7034,7 @@ for ac_symprfx in "" "_"; do
+@@ -6720,6 +7038,7 @@ for ac_symprfx in "" "_"; do
    else
      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
    fi
@@ -17937,7 +17838,7 @@
  
    # Check to see that the pipe works correctly.
    pipe_works=no
-@@ -6757,6 +7076,18 @@ _LT_EOF
+@@ -6761,6 +7080,18 @@ _LT_EOF
        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
  	  cat <<_LT_EOF > conftest.$ac_ext
@@ -17956,7 +17857,7 @@
  #ifdef __cplusplus
  extern "C" {
  #endif
-@@ -6768,7 +7099,7 @@ _LT_EOF
+@@ -6772,7 +7103,7 @@ _LT_EOF
  	  cat <<_LT_EOF >> conftest.$ac_ext
  
  /* The mapping between symbol names and symbols.  */
@@ -17965,7 +17866,7 @@
    const char *name;
    void       *address;
  }
-@@ -6794,8 +7125,8 @@ static const void *lt_preloaded_setup() {
+@@ -6798,8 +7129,8 @@ static const void *lt_preloaded_setup() {
  _LT_EOF
  	  # Now try linking the two files.
  	  mv conftest.$ac_objext conftstm.$ac_objext
@@ -17976,7 +17877,7 @@
  	  LIBS="conftstm.$ac_objext"
  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6805,8 +7136,8 @@ _LT_EOF
+@@ -6809,8 +7140,8 @@ _LT_EOF
    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
  	    pipe_works=yes
  	  fi
@@ -17987,7 +17888,7 @@
  	else
  	  echo "cannot find nm_test_func in $nlist" >&5
  	fi
-@@ -6843,6 +7174,16 @@ else
+@@ -6847,6 +7178,16 @@ else
  $as_echo "ok" >&6; }
  fi
  
@@ -18004,7 +17905,7 @@
  
  
  
-@@ -6864,6 +7205,45 @@ fi
+@@ -6868,6 +7209,45 @@ fi
  
  
  
@@ -18050,7 +17951,7 @@
  # Check whether --enable-libtool-lock was given.
  if test "${enable_libtool_lock+set}" = set; then :
    enableval=$enable_libtool_lock;
-@@ -7070,6 +7450,123 @@ esac
+@@ -7074,6 +7454,123 @@ esac
  
  need_locks="$enable_libtool_lock"
  
@@ -18174,7 +18075,7 @@
  
    case $host_os in
      rhapsody* | darwin*)
-@@ -7633,6 +8130,8 @@ _LT_EOF
+@@ -7637,6 +8134,8 @@ _LT_EOF
        $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
        echo "$AR cru libconftest.a conftest.o" >&5
        $AR cru libconftest.a conftest.o 2>&5
@@ -18183,7 +18084,7 @@
        cat > conftest.c << _LT_EOF
  int main() { return 0;}
  _LT_EOF
-@@ -7798,7 +8297,8 @@ fi
+@@ -7802,7 +8301,8 @@ fi
  LIBTOOL_DEPS="$ltmain"
  
  # Always use our own libtool.
@@ -18193,7 +18094,7 @@
  
  
  
-@@ -7887,7 +8387,7 @@ aix3*)
+@@ -7891,7 +8391,7 @@ aix3*)
  esac
  
  # Global variables:
@@ -18202,7 +18103,7 @@
  can_build_shared=yes
  
  # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8185,8 +8685,6 @@ fi
+@@ -8189,8 +8689,6 @@ fi
  lt_prog_compiler_pic=
  lt_prog_compiler_static=
  
@@ -18211,7 +18112,7 @@
  
    if test "$GCC" = yes; then
      lt_prog_compiler_wl='-Wl,'
-@@ -8352,6 +8850,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8356,6 +8854,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	lt_prog_compiler_pic='--shared'
  	lt_prog_compiler_static='--static'
  	;;
@@ -18224,7 +18125,7 @@
        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
          # Portland Group compilers (*not* the Pentium gcc compiler,
  	# which looks to be a dead project)
-@@ -8414,7 +8918,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8418,7 +8922,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
        lt_prog_compiler_pic='-KPIC'
        lt_prog_compiler_static='-Bstatic'
        case $cc_basename in
@@ -18233,7 +18134,7 @@
  	lt_prog_compiler_wl='-Qoption ld ';;
        *)
  	lt_prog_compiler_wl='-Wl,';;
-@@ -8471,13 +8975,17 @@ case $host_os in
+@@ -8475,13 +8979,17 @@ case $host_os in
      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
      ;;
  esac
@@ -18257,7 +18158,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -8538,6 +9046,11 @@ fi
+@@ -8542,6 +9050,11 @@ fi
  
  
  
@@ -18269,7 +18170,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -8888,7 +9401,8 @@ _LT_EOF
+@@ -8892,7 +9405,8 @@ _LT_EOF
        allow_undefined_flag=unsupported
        always_export_symbols=no
        enable_shared_with_static_runtimes=yes
@@ -18279,7 +18180,7 @@
  
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8987,12 +9501,12 @@ _LT_EOF
+@@ -8991,12 +9505,12 @@ _LT_EOF
  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
  	  hardcode_libdir_flag_spec=
  	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -18294,7 +18195,7 @@
  	  fi
  	  ;;
  	esac
-@@ -9006,8 +9520,8 @@ _LT_EOF
+@@ -9010,8 +9524,8 @@ _LT_EOF
  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  	wlarc=
        else
@@ -18305,7 +18206,7 @@
        fi
        ;;
  
-@@ -9025,8 +9539,8 @@ _LT_EOF
+@@ -9029,8 +9543,8 @@ _LT_EOF
  
  _LT_EOF
        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -18316,7 +18217,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9072,8 +9586,8 @@ _LT_EOF
+@@ -9076,8 +9590,8 @@ _LT_EOF
  
      *)
        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -18327,7 +18228,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -9203,7 +9717,13 @@ _LT_EOF
+@@ -9207,7 +9721,13 @@ _LT_EOF
  	allow_undefined_flag='-berok'
          # Determine the default libpath from the value encoded in an
          # empty executable.
@@ -18342,7 +18243,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9216,22 +9736,29 @@ main ()
+@@ -9220,22 +9740,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -18385,7 +18286,7 @@
  
          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
          archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9243,7 +9770,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9247,7 +9774,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	else
  	 # Determine the default libpath from the value encoded in an
  	 # empty executable.
@@ -18400,7 +18301,7 @@
  /* end confdefs.h.  */
  
  int
-@@ -9256,22 +9789,29 @@ main ()
+@@ -9260,22 +9793,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -18443,7 +18344,7 @@
  
  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
  	  # Warning - without using the other run time loading flags,
-@@ -9316,20 +9856,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9320,20 +9860,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # Microsoft Visual C++.
        # hardcode_libdir_flag_spec is actually meaningless, as there is
        # no search path for DLLs.
@@ -18521,7 +18422,7 @@
        ;;
  
      darwin* | rhapsody*)
-@@ -9390,7 +9973,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9394,7 +9977,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
      freebsd* | dragonfly*)
@@ -18530,7 +18431,7 @@
        hardcode_libdir_flag_spec='-R$libdir'
        hardcode_direct=yes
        hardcode_shlibpath_var=no
-@@ -9398,7 +9981,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9402,7 +9985,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux9*)
        if test "$GCC" = yes; then
@@ -18539,7 +18440,7 @@
        else
  	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
        fi
-@@ -9414,7 +9997,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9418,7 +10001,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux10*)
        if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -18548,7 +18449,7 @@
        else
  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
        fi
-@@ -9438,10 +10021,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9442,10 +10025,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  	  ;;
  	ia64*)
@@ -18561,7 +18462,7 @@
  	  ;;
  	esac
        else
-@@ -9520,23 +10103,36 @@ fi
+@@ -9524,23 +10107,36 @@ fi
  
      irix5* | irix6* | nonstopux*)
        if test "$GCC" = yes; then
@@ -18606,7 +18507,7 @@
        else
  	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
  	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9621,7 +10217,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9625,7 +10221,7 @@ rm -f core conftest.err conftest.$ac_objext \
      osf4* | osf5*)	# as osf3* with the addition of -msym flag
        if test "$GCC" = yes; then
  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -18615,7 +18516,7 @@
  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
        else
  	allow_undefined_flag=' -expect_unresolved \*'
-@@ -9640,9 +10236,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9644,9 +10240,9 @@ rm -f core conftest.err conftest.$ac_objext \
        no_undefined_flag=' -z defs'
        if test "$GCC" = yes; then
  	wlarc='${wl}'
@@ -18627,7 +18528,7 @@
        else
  	case `$CC -V 2>&1` in
  	*"Compilers 5.0"*)
-@@ -10218,8 +10814,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10222,8 +10818,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -18639,7 +18540,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -10252,13 +10849,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10256,13 +10853,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -18712,7 +18613,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -10350,7 +11005,7 @@ haiku*)
+@@ -10354,7 +11009,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -18721,16 +18622,7 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -11146,7 +11801,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11149 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11190,10 +11845,10 @@ else
+@@ -11194,10 +11849,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -18743,16 +18635,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11252,7 +11907,7 @@ else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 11255 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
-@@ -11296,10 +11951,10 @@ else
+@@ -11300,10 +11955,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -18765,7 +18648,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12462,7 +13117,7 @@ if test "$enable_shared" = "yes"; then
+@@ -12499,7 +13154,7 @@ if test "$enable_shared" = "yes"; then
  # since libbfd may not pull in the entirety of libiberty.
    x=`sed -n -e 's/^[ 	]*PICFLAG[ 	]*=[ 	]*//p' < ../libiberty/Makefile | sed -n '$p'`
    if test -n "$x"; then
@@ -18774,7 +18657,7 @@
    fi
  
    case "${host}" in
-@@ -13436,13 +14091,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -13473,13 +14128,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
  lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
  lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
  lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -18795,7 +18678,7 @@
  STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
  RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
  old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -13457,14 +14119,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -13494,14 +14156,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
  lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -18814,7 +18697,7 @@
  DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
  NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
  LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -13497,12 +14162,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -13534,12 +14199,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
  hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
  inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -18828,7 +18711,7 @@
  file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
  variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
  need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -13557,8 +14222,13 @@ reload_flag \
+@@ -13594,8 +14259,13 @@ reload_flag \
  OBJDUMP \
  deplibs_check_method \
  file_magic_cmd \
@@ -18842,7 +18725,7 @@
  STRIP \
  RANLIB \
  CC \
-@@ -13568,12 +14238,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -13605,12 +14275,14 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -18858,7 +18741,7 @@
  DSYMUTIL \
  NMEDIT \
  LIPO \
-@@ -13589,7 +14261,6 @@ no_undefined_flag \
+@@ -13626,7 +14298,6 @@ no_undefined_flag \
  hardcode_libdir_flag_spec \
  hardcode_libdir_flag_spec_ld \
  hardcode_libdir_separator \
@@ -18866,7 +18749,7 @@
  exclude_expsyms \
  include_expsyms \
  file_list_spec \
-@@ -13625,6 +14296,7 @@ module_cmds \
+@@ -13662,6 +14333,7 @@ module_cmds \
  module_expsym_cmds \
  export_symbols_cmds \
  prelink_cmds \
@@ -18874,7 +18757,7 @@
  postinstall_cmds \
  postuninstall_cmds \
  finish_cmds \
-@@ -14381,7 +15053,8 @@ $as_echo X"$file" |
+@@ -14418,7 +15090,8 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -18884,7 +18767,7 @@
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -14484,19 +15157,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -14521,19 +15194,42 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -18928,7 +18811,7 @@
  # A symbol stripping program.
  STRIP=$lt_STRIP
  
-@@ -14526,6 +15222,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -14563,6 +15259,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  # Transform the output of nm in a C name address pair when lib prefix is needed.
  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
  
@@ -18941,7 +18824,7 @@
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
-@@ -14535,6 +15237,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -14572,6 +15274,9 @@ MAGIC_CMD=$MAGIC_CMD
  # Must we lock files when doing compilation?
  need_locks=$lt_need_locks
  
@@ -18951,7 +18834,7 @@
  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  DSYMUTIL=$lt_DSYMUTIL
  
-@@ -14649,12 +15354,12 @@ with_gcc=$GCC
+@@ -14686,12 +15391,12 @@ with_gcc=$GCC
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
  
@@ -18967,7 +18850,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static
  
-@@ -14741,9 +15446,6 @@ inherit_rpath=$inherit_rpath
+@@ -14778,9 +15483,6 @@ inherit_rpath=$inherit_rpath
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs
  
@@ -18977,7 +18860,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols
  
-@@ -14759,6 +15461,9 @@ include_expsyms=$lt_include_expsyms
+@@ -14796,6 +15498,9 @@ include_expsyms=$lt_include_expsyms
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds
  
@@ -18987,7 +18870,7 @@
  # Specify filename containing input files.
  file_list_spec=$lt_file_list_spec
  
-@@ -14791,210 +15496,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -14828,210 +15533,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
    # text mode, it properly converts lines to CR/LF.  This bash problem
    # is reportedly fixed, but why not run on old versions too?
@@ -19362,7 +19245,7 @@
    chmod +x "$ofile"
  
 diff --git a/opcodes/configure.ac b/opcodes/configure.ac
-index 07e3162..c0c75d4 100644
+index c7f4783..f2e002d 100644
 --- a/opcodes/configure.ac
 +++ b/opcodes/configure.ac
 @@ -167,7 +167,7 @@ changequote(,)dnl
@@ -19375,7 +19258,7 @@
  
    case "${host}" in
 diff --git a/zlib/configure b/zlib/configure
-index 8378857..7584940 100755
+index bba9fd2..25a2dae 100755
 --- a/zlib/configure
 +++ b/zlib/configure
 @@ -614,8 +614,11 @@ OTOOL
@@ -19390,7 +19273,7 @@
  OBJDUMP
  LN_S
  NM
-@@ -736,6 +739,7 @@ enable_static
+@@ -737,6 +740,7 @@ enable_static
  with_pic
  enable_fast_install
  with_gnu_ld
@@ -19398,7 +19281,7 @@
  enable_libtool_lock
  enable_host_shared
  '
-@@ -1384,6 +1388,8 @@ Optional Packages:
+@@ -1385,6 +1389,8 @@ Optional Packages:
    --with-pic              try to use only PIC/non-PIC objects [default=use
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
@@ -19407,7 +19290,7 @@
  
  Some influential environment variables:
    CC          C compiler command
-@@ -3907,8 +3913,8 @@ esac
+@@ -3910,8 +3916,8 @@ esac
  
  
  
@@ -19418,7 +19301,7 @@
  
  
  
-@@ -3948,7 +3954,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -3951,7 +3957,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
  $as_echo_n "checking how to print strings... " >&6; }
  # Test print first, because it will be a builtin if present.
@@ -19427,7 +19310,7 @@
     test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
    ECHO='print -r --'
  elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -4764,8 +4770,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -4767,8 +4773,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
  # Try some XSI features
  xsi_shell=no
  ( _lt_dummy="a/b/c"
@@ -19438,7 +19321,7 @@
      && eval 'test $(( 1 + 1 )) -eq 2 \
      && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
    && xsi_shell=yes
-@@ -4814,6 +4820,80 @@ esac
+@@ -4817,6 +4823,80 @@ esac
  
  
  
@@ -19519,7 +19402,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
  $as_echo_n "checking for $LD option to reload object files... " >&6; }
  if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -4830,6 +4910,11 @@ case $reload_flag in
+@@ -4833,6 +4913,11 @@ case $reload_flag in
  esac
  reload_cmds='$LD$reload_flag -o $output$reload_objs'
  case $host_os in
@@ -19531,7 +19414,7 @@
    darwin*)
      if test "$GCC" = yes; then
        reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -4998,7 +5083,8 @@ mingw* | pw32*)
+@@ -5001,7 +5086,8 @@ mingw* | pw32*)
      lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
      lt_cv_file_magic_cmd='func_win32_libid'
    else
@@ -19541,7 +19424,7 @@
      lt_cv_file_magic_cmd='$OBJDUMP -f'
    fi
    ;;
-@@ -5152,6 +5238,21 @@ esac
+@@ -5155,6 +5241,21 @@ esac
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
  $as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -19563,7 +19446,7 @@
  file_magic_cmd=$lt_cv_file_magic_cmd
  deplibs_check_method=$lt_cv_deplibs_check_method
  test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -5167,9 +5268,163 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5170,9 +5271,163 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
  
  
  
@@ -19729,7 +19612,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_AR+set}" = set; then :
-@@ -5185,7 +5440,7 @@ do
+@@ -5188,7 +5443,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -19738,7 +19621,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -5205,11 +5460,15 @@ $as_echo "no" >&6; }
+@@ -5208,11 +5463,15 @@ $as_echo "no" >&6; }
  fi
  
  
@@ -19757,7 +19640,7 @@
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
  $as_echo_n "checking for $ac_word... " >&6; }
  if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -5225,7 +5484,7 @@ do
+@@ -5228,7 +5487,7 @@ do
    test -z "$as_dir" && as_dir=.
      for ac_exec_ext in '' $ac_executable_extensions; do
    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
@@ -19766,7 +19649,7 @@
      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
      break 2
    fi
-@@ -5244,6 +5503,10 @@ else
+@@ -5247,6 +5506,10 @@ else
  $as_echo "no" >&6; }
  fi
  
@@ -19777,7 +19660,7 @@
    if test "x$ac_ct_AR" = x; then
      AR="false"
    else
-@@ -5255,16 +5518,72 @@ ac_tool_warned=yes ;;
+@@ -5258,16 +5521,72 @@ ac_tool_warned=yes ;;
  esac
      AR=$ac_ct_AR
    fi
@@ -19854,7 +19737,7 @@
  
  
  
-@@ -5606,8 +5925,8 @@ esac
+@@ -5609,8 +5928,8 @@ esac
  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  
  # Transform an extracted symbol line into symbol name and symbol address
@@ -19865,7 +19748,7 @@
  
  # Handle CRLF in mingw tool chain
  opt_cr=
-@@ -5643,6 +5962,7 @@ for ac_symprfx in "" "_"; do
+@@ -5646,6 +5965,7 @@ for ac_symprfx in "" "_"; do
    else
      lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
    fi
@@ -19873,7 +19756,7 @@
  
    # Check to see that the pipe works correctly.
    pipe_works=no
-@@ -5684,6 +6004,18 @@ _LT_EOF
+@@ -5687,6 +6007,18 @@ _LT_EOF
        if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
  	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
  	  cat <<_LT_EOF > conftest.$ac_ext
@@ -19892,7 +19775,7 @@
  #ifdef __cplusplus
  extern "C" {
  #endif
-@@ -5695,7 +6027,7 @@ _LT_EOF
+@@ -5698,7 +6030,7 @@ _LT_EOF
  	  cat <<_LT_EOF >> conftest.$ac_ext
  
  /* The mapping between symbol names and symbols.  */
@@ -19901,7 +19784,7 @@
    const char *name;
    void       *address;
  }
-@@ -5721,8 +6053,8 @@ static const void *lt_preloaded_setup() {
+@@ -5724,8 +6056,8 @@ static const void *lt_preloaded_setup() {
  _LT_EOF
  	  # Now try linking the two files.
  	  mv conftest.$ac_objext conftstm.$ac_objext
@@ -19912,7 +19795,7 @@
  	  LIBS="conftstm.$ac_objext"
  	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
  	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -5732,8 +6064,8 @@ _LT_EOF
+@@ -5735,8 +6067,8 @@ _LT_EOF
    test $ac_status = 0; } && test -s conftest${ac_exeext}; then
  	    pipe_works=yes
  	  fi
@@ -19923,7 +19806,7 @@
  	else
  	  echo "cannot find nm_test_func in $nlist" >&5
  	fi
-@@ -5770,6 +6102,19 @@ else
+@@ -5773,6 +6105,19 @@ else
  $as_echo "ok" >&6; }
  fi
  
@@ -19943,7 +19826,7 @@
  
  
  
-@@ -5790,6 +6135,41 @@ fi
+@@ -5793,6 +6138,41 @@ fi
  
  
  
@@ -19985,7 +19868,7 @@
  
  
  # Check whether --enable-libtool-lock was given.
-@@ -6001,6 +6381,123 @@ esac
+@@ -6004,6 +6384,123 @@ esac
  
  need_locks="$enable_libtool_lock"
  
@@ -20109,7 +19992,7 @@
  
    case $host_os in
      rhapsody* | darwin*)
-@@ -6567,6 +7064,8 @@ _LT_EOF
+@@ -6570,6 +7067,8 @@ _LT_EOF
        $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
        echo "$AR cru libconftest.a conftest.o" >&5
        $AR cru libconftest.a conftest.o 2>&5
@@ -20118,7 +20001,7 @@
        cat > conftest.c << _LT_EOF
  int main() { return 0;}
  _LT_EOF
-@@ -7030,7 +7529,8 @@ fi
+@@ -7033,7 +7532,8 @@ fi
  LIBTOOL_DEPS="$ltmain"
  
  # Always use our own libtool.
@@ -20128,7 +20011,7 @@
  
  
  
-@@ -7119,7 +7619,7 @@ aix3*)
+@@ -7122,7 +7622,7 @@ aix3*)
  esac
  
  # Global variables:
@@ -20137,7 +20020,7 @@
  can_build_shared=yes
  
  # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -7417,8 +7917,6 @@ fi
+@@ -7420,8 +7920,6 @@ fi
  lt_prog_compiler_pic=
  lt_prog_compiler_static=
  
@@ -20146,7 +20029,7 @@
  
    if test "$GCC" = yes; then
      lt_prog_compiler_wl='-Wl,'
-@@ -7584,6 +8082,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7587,6 +8085,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
  	lt_prog_compiler_pic='--shared'
  	lt_prog_compiler_static='--static'
  	;;
@@ -20159,7 +20042,7 @@
        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
          # Portland Group compilers (*not* the Pentium gcc compiler,
  	# which looks to be a dead project)
-@@ -7646,7 +8150,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7649,7 +8153,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
        lt_prog_compiler_pic='-KPIC'
        lt_prog_compiler_static='-Bstatic'
        case $cc_basename in
@@ -20168,7 +20051,7 @@
  	lt_prog_compiler_wl='-Qoption ld ';;
        *)
  	lt_prog_compiler_wl='-Wl,';;
-@@ -7703,13 +8207,17 @@ case $host_os in
+@@ -7706,13 +8210,17 @@ case $host_os in
      lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
      ;;
  esac
@@ -20192,7 +20075,7 @@
  
  #
  # Check to make sure the PIC flag actually works.
-@@ -7770,6 +8278,11 @@ fi
+@@ -7773,6 +8281,11 @@ fi
  
  
  
@@ -20204,7 +20087,7 @@
  #
  # Check to make sure the static flag actually works.
  #
-@@ -8120,7 +8633,8 @@ _LT_EOF
+@@ -8123,7 +8636,8 @@ _LT_EOF
        allow_undefined_flag=unsupported
        always_export_symbols=no
        enable_shared_with_static_runtimes=yes
@@ -20214,7 +20097,7 @@
  
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
          archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8219,12 +8733,12 @@ _LT_EOF
+@@ -8222,12 +8736,12 @@ _LT_EOF
  	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
  	  hardcode_libdir_flag_spec=
  	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -20229,7 +20112,7 @@
  	  fi
  	  ;;
  	esac
-@@ -8238,8 +8752,8 @@ _LT_EOF
+@@ -8241,8 +8755,8 @@ _LT_EOF
  	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  	wlarc=
        else
@@ -20240,7 +20123,7 @@
        fi
        ;;
  
-@@ -8257,8 +8771,8 @@ _LT_EOF
+@@ -8260,8 +8774,8 @@ _LT_EOF
  
  _LT_EOF
        elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -20251,7 +20134,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -8304,8 +8818,8 @@ _LT_EOF
+@@ -8307,8 +8821,8 @@ _LT_EOF
  
      *)
        if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -20262,7 +20145,7 @@
        else
  	ld_shlibs=no
        fi
-@@ -8435,7 +8949,13 @@ _LT_EOF
+@@ -8438,7 +8952,13 @@ _LT_EOF
  	allow_undefined_flag='-berok'
          # Determine the default libpath from the value encoded in an
          # empty executable.
@@ -20277,7 +20160,7 @@
    as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
  fi
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -8451,22 +8971,29 @@ main ()
+@@ -8454,22 +8974,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -20320,7 +20203,7 @@
  
          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
          archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -8478,7 +9005,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8481,7 +9008,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	else
  	 # Determine the default libpath from the value encoded in an
  	 # empty executable.
@@ -20335,7 +20218,7 @@
    as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
  fi
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -8494,22 +9027,29 @@ main ()
+@@ -8497,22 +9030,29 @@ main ()
  _ACEOF
  if ac_fn_c_try_link "$LINENO"; then :
  
@@ -20378,7 +20261,7 @@
  
  	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
  	  # Warning - without using the other run time loading flags,
-@@ -8554,20 +9094,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8557,20 +9097,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # Microsoft Visual C++.
        # hardcode_libdir_flag_spec is actually meaningless, as there is
        # no search path for DLLs.
@@ -20456,7 +20339,7 @@
        ;;
  
      darwin* | rhapsody*)
-@@ -8628,7 +9211,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8631,7 +9214,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
      freebsd* | dragonfly*)
@@ -20465,7 +20348,7 @@
        hardcode_libdir_flag_spec='-R$libdir'
        hardcode_direct=yes
        hardcode_shlibpath_var=no
-@@ -8636,7 +9219,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8639,7 +9222,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux9*)
        if test "$GCC" = yes; then
@@ -20474,7 +20357,7 @@
        else
  	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
        fi
-@@ -8652,7 +9235,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8655,7 +9238,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  
      hpux10*)
        if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -20483,7 +20366,7 @@
        else
  	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
        fi
-@@ -8676,10 +9259,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8679,10 +9262,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
  	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  	  ;;
  	ia64*)
@@ -20496,7 +20379,7 @@
  	  ;;
  	esac
        else
-@@ -8758,26 +9341,39 @@ fi
+@@ -8761,26 +9344,39 @@ fi
  
      irix5* | irix6* | nonstopux*)
        if test "$GCC" = yes; then
@@ -20544,7 +20427,7 @@
        else
  	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
  	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -8862,7 +9458,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -8865,7 +9461,7 @@ rm -f core conftest.err conftest.$ac_objext \
      osf4* | osf5*)	# as osf3* with the addition of -msym flag
        if test "$GCC" = yes; then
  	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -20553,7 +20436,7 @@
  	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
        else
  	allow_undefined_flag=' -expect_unresolved \*'
-@@ -8881,9 +9477,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -8884,9 +9480,9 @@ rm -f core conftest.err conftest.$ac_objext \
        no_undefined_flag=' -z defs'
        if test "$GCC" = yes; then
  	wlarc='${wl}'
@@ -20565,7 +20448,7 @@
        else
  	case `$CC -V 2>&1` in
  	*"Compilers 5.0"*)
-@@ -9459,8 +10055,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9462,8 +10058,9 @@ cygwin* | mingw* | pw32* | cegcc*)
    need_version=no
    need_lib_prefix=no
  
@@ -20577,7 +20460,7 @@
      library_names_spec='$libname.dll.a'
      # DLL is installed to $(libdir)/../bin by postinstall_cmds
      postinstall_cmds='base_file=`basename \${file}`~
-@@ -9493,13 +10090,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9496,13 +10093,71 @@ cygwin* | mingw* | pw32* | cegcc*)
        library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
        ;;
      esac
@@ -20650,7 +20533,7 @@
    # FIXME: first we should search . and the directory the executable is in
    shlibpath_var=PATH
    ;;
-@@ -9591,7 +10246,7 @@ haiku*)
+@@ -9594,7 +10249,7 @@ haiku*)
    soname_spec='${libname}${release}${shared_ext}$major'
    shlibpath_var=LIBRARY_PATH
    shlibpath_overrides_runpath=yes
@@ -20659,16 +20542,16 @@
    hardcode_into_libs=yes
    ;;
  
-@@ -10405,7 +11060,7 @@ else
+@@ -10408,7 +11063,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 10408 "configure"
+-#line 10411 "configure"
 +#line $LINENO "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -10449,10 +11104,10 @@ else
+@@ -10452,10 +11107,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -20681,16 +20564,16 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -10511,7 +11166,7 @@ else
+@@ -10514,7 +11169,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
--#line 10514 "configure"
+-#line 10517 "configure"
 +#line $LINENO "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -10555,10 +11210,10 @@ else
+@@ -10558,10 +11213,10 @@ else
  /* When -fvisbility=hidden is used, assume the code has been annotated
     correspondingly for the symbols needed.  */
  #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -20703,7 +20586,7 @@
  int main ()
  {
    void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11990,13 +12645,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -11993,13 +12648,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
  lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
  lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
  lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -20724,7 +20607,7 @@
  STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
  RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
  old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -12011,14 +12673,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -12014,14 +12676,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
  lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -20743,7 +20626,7 @@
  DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
  NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
  LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -12051,12 +12716,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -12054,12 +12719,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
  hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
  inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
  link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -20757,7 +20640,7 @@
  file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
  variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
  need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -12111,8 +12776,13 @@ reload_flag \
+@@ -12114,8 +12779,13 @@ reload_flag \
  OBJDUMP \
  deplibs_check_method \
  file_magic_cmd \
@@ -20771,7 +20654,7 @@
  STRIP \
  RANLIB \
  CC \
-@@ -12122,12 +12792,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -12125,12 +12795,14 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -20787,7 +20670,7 @@
  DSYMUTIL \
  NMEDIT \
  LIPO \
-@@ -12143,7 +12815,6 @@ no_undefined_flag \
+@@ -12146,7 +12818,6 @@ no_undefined_flag \
  hardcode_libdir_flag_spec \
  hardcode_libdir_flag_spec_ld \
  hardcode_libdir_separator \
@@ -20795,7 +20678,7 @@
  exclude_expsyms \
  include_expsyms \
  file_list_spec \
-@@ -12179,6 +12850,7 @@ module_cmds \
+@@ -12182,6 +12853,7 @@ module_cmds \
  module_expsym_cmds \
  export_symbols_cmds \
  prelink_cmds \
@@ -20803,7 +20686,7 @@
  postinstall_cmds \
  postuninstall_cmds \
  finish_cmds \
-@@ -12768,7 +13440,8 @@ $as_echo X"$file" |
+@@ -12771,7 +13443,8 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -20813,7 +20696,7 @@
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -12871,19 +13544,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -12874,19 +13547,42 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -20857,7 +20740,7 @@
  # A symbol stripping program.
  STRIP=$lt_STRIP
  
-@@ -12913,6 +13609,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -12916,6 +13612,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  # Transform the output of nm in a C name address pair when lib prefix is needed.
  global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
  
@@ -20870,7 +20753,7 @@
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
-@@ -12922,6 +13624,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -12925,6 +13627,9 @@ MAGIC_CMD=$MAGIC_CMD
  # Must we lock files when doing compilation?
  need_locks=$lt_need_locks
  
@@ -20880,7 +20763,7 @@
  # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  DSYMUTIL=$lt_DSYMUTIL
  
-@@ -13036,12 +13741,12 @@ with_gcc=$GCC
+@@ -13039,12 +13744,12 @@ with_gcc=$GCC
  # Compiler flag to turn off builtin functions.
  no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
  
@@ -20896,7 +20779,7 @@
  # Compiler flag to prevent dynamic linking.
  link_static_flag=$lt_lt_prog_compiler_static
  
-@@ -13128,9 +13833,6 @@ inherit_rpath=$inherit_rpath
+@@ -13131,9 +13836,6 @@ inherit_rpath=$inherit_rpath
  # Whether libtool must link a program against all its dependency libraries.
  link_all_deplibs=$link_all_deplibs
  
@@ -20906,7 +20789,7 @@
  # Set to "yes" if exported symbols are required.
  always_export_symbols=$always_export_symbols
  
-@@ -13146,6 +13848,9 @@ include_expsyms=$lt_include_expsyms
+@@ -13149,6 +13851,9 @@ include_expsyms=$lt_include_expsyms
  # Commands necessary for linking programs (against libraries) with templates.
  prelink_cmds=$lt_prelink_cmds
  
@@ -20916,7 +20799,7 @@
  # Specify filename containing input files.
  file_list_spec=$lt_file_list_spec
  
-@@ -13178,210 +13883,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -13181,210 +13886,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
    # text mode, it properly converts lines to CR/LF.  This bash problem
    # is reportedly fixed, but why not run on old versions too?
@@ -21291,5 +21174,4 @@
    chmod +x "$ofile"
  
 -- 
-2.7.1
-
+2.9.0
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch
index cb3f83b..795abf3 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch
@@ -1,7 +1,7 @@
-From 4ff9dbe13f38e4fea24fbcc9879cf7352c0561ff Mon Sep 17 00:00:00 2001
+From 9475aee8a702aa531737ec12dfd928d52951bc84 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:37:10 +0000
-Subject: [PATCH 07/14] Add the armv5e architecture to binutils
+Subject: [PATCH 07/13] Add the armv5e architecture to binutils
 
 Binutils has a comment that indicates it is supposed to match gcc for
 all of the support "-march=" settings, but it was lacking the armv5e setting.
@@ -19,10 +19,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
-index 3bd4bc9..5d99921 100644
+index 73d0531..4b9e32f 100644
 --- a/gas/config/tc-arm.c
 +++ b/gas/config/tc-arm.c
-@@ -24791,6 +24791,7 @@ static const struct arm_arch_option_table arm_archs[] =
+@@ -25421,6 +25421,7 @@ static const struct arm_arch_option_table arm_archs[] =
    ARM_ARCH_OPT ("armv4t",	ARM_ARCH_V4T,	 FPU_ARCH_FPA),
    ARM_ARCH_OPT ("armv4txm",	ARM_ARCH_V4TxM,	 FPU_ARCH_FPA),
    ARM_ARCH_OPT ("armv5",	ARM_ARCH_V5,	 FPU_ARCH_VFP),
@@ -31,5 +31,5 @@
    ARM_ARCH_OPT ("armv5txm",	ARM_ARCH_V5TxM,	 FPU_ARCH_VFP),
    ARM_ARCH_OPT ("armv5te",	ARM_ARCH_V5TE,	 FPU_ARCH_VFP),
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
index f8382f8..af524ce 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
@@ -1,7 +1,7 @@
-From cb36d94dbd521752e6444418af500e139a26eabb Mon Sep 17 00:00:00 2001
+From b2d277937d11f1ce1d581f48ff74a25822a052da Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:39:01 +0000
-Subject: [PATCH 08/14] don't let the distro compiler point to the wrong
+Subject: [PATCH 08/13] don't let the distro compiler point to the wrong
  installation location
 
 Thanks to RP for helping find the source code causing the issue.
@@ -17,7 +17,7 @@
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
-index 7d7e2f4..1aaaf0e 100644
+index c7a4568..f766b72 100644
 --- a/libiberty/Makefile.in
 +++ b/libiberty/Makefile.in
 @@ -364,7 +364,8 @@ install-strip: install
@@ -31,5 +31,5 @@
  	if test -n "${target_header_dir}"; then \
  		${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch
index d3f510b..3c83e69 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch
@@ -1,7 +1,7 @@
-From 4daa841ce16ba52b717bdff9eb1dfc4f19638814 Mon Sep 17 00:00:00 2001
+From 7ab8e318659eb5d9adc758c78d084a95560b93fd Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Fri, 15 Jan 2016 06:31:09 +0000
-Subject: [PATCH 09/14] warn for uses of system directories when cross linking
+Subject: [PATCH 09/13] warn for uses of system directories when cross linking
 
 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
 
@@ -63,10 +63,10 @@
  9 files changed, 86 insertions(+)
 
 diff --git a/ld/config.in b/ld/config.in
-index 276fb77..35c58eb 100644
+index 2c6d698..d3cb7e8 100644
 --- a/ld/config.in
 +++ b/ld/config.in
-@@ -14,6 +14,9 @@
+@@ -17,6 +17,9 @@
     language is requested. */
  #undef ENABLE_NLS
  
@@ -77,10 +77,10 @@
  #undef EXTRA_SHLIB_EXTENSION
  
 diff --git a/ld/configure b/ld/configure
-index eb4f0d7..e9054b4 100755
+index 3df1149..0601c98 100755
 --- a/ld/configure
 +++ b/ld/configure
-@@ -790,6 +790,7 @@ with_lib_path
+@@ -792,6 +792,7 @@ with_lib_path
  enable_targets
  enable_64_bit_bfd
  with_sysroot
@@ -88,7 +88,7 @@
  enable_gold
  enable_got
  enable_compressed_debug_sections
-@@ -1446,6 +1447,8 @@ Optional Features:
+@@ -1449,6 +1450,8 @@ Optional Features:
    --disable-largefile     omit support for large files
    --enable-targets        alternative target configurations
    --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
@@ -97,7 +97,7 @@
    --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
    --enable-got=<type>     GOT handling scheme (target, single, negative,
                            multigot)
-@@ -16306,6 +16309,19 @@ fi
+@@ -16313,6 +16316,19 @@ fi
  
  
  
@@ -118,7 +118,7 @@
  if test "${enable_gold+set}" = set; then :
    enableval=$enable_gold; case "${enableval}" in
 diff --git a/ld/configure.ac b/ld/configure.ac
-index e28f38e..7b474e7 100644
+index d17281f..9fb3db9 100644
 --- a/ld/configure.ac
 +++ b/ld/configure.ac
 @@ -95,6 +95,16 @@ AC_SUBST(use_sysroot)
@@ -139,10 +139,10 @@
  dnl "install_as_default" is set to false if gold is the default linker.
  dnl "installed_linker" is the installed BFD linker name.
 diff --git a/ld/ld.h b/ld/ld.h
-index d84ec4e..3476b26 100644
+index 85a48ad..a8fdddf 100644
 --- a/ld/ld.h
 +++ b/ld/ld.h
-@@ -164,6 +164,14 @@ typedef struct {
+@@ -169,6 +169,14 @@ typedef struct
    /* If set, display the target memory usage (per memory region).  */
    bfd_boolean print_memory_usage;
  
@@ -158,10 +158,10 @@
    enum endian_enum endian;
  
 diff --git a/ld/ld.texinfo b/ld/ld.texinfo
-index 2389661..d06112b 100644
+index bc16764..838c75d 100644
 --- a/ld/ld.texinfo
 +++ b/ld/ld.texinfo
-@@ -2338,6 +2338,18 @@ string identifying the original linked file does not change.
+@@ -2357,6 +2357,18 @@ string identifying the original linked file does not change.
  
  Passing @code{none} for @var{style} disables the setting from any
  @code{--build-id} options earlier on the command line.
@@ -181,7 +181,7 @@
  
  @c man end
 diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 96f9ecc..af231c0 100644
+index e397737..013727b 100644
 --- a/ld/ldfile.c
 +++ b/ld/ldfile.c
 @@ -114,6 +114,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
@@ -209,7 +209,7 @@
  
  /* Try to open a BFD for a lang_input_statement.  */
 diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 6f11e7b..0ca3110 100644
+index cf943e4..12cfcaa 100644
 --- a/ld/ldlex.h
 +++ b/ld/ldlex.h
 @@ -144,6 +144,8 @@ enum option_values
@@ -222,7 +222,7 @@
  
  /* The initial parser states.  */
 diff --git a/ld/ldmain.c b/ld/ldmain.c
-index bb0b9cc..a23c56c 100644
+index e7a8dff..3ccf2af 100644
 --- a/ld/ldmain.c
 +++ b/ld/ldmain.c
 @@ -257,6 +257,8 @@ main (int argc, char **argv)
@@ -235,7 +235,7 @@
    /* We initialize DEMANGLING based on the environment variable
       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
 diff --git a/ld/lexsup.c b/ld/lexsup.c
-index e2fb212..a2064f1 100644
+index 6d28e91..5c9da57 100644
 --- a/ld/lexsup.c
 +++ b/ld/lexsup.c
 @@ -530,6 +530,14 @@ static const struct ld_option ld_options[] =
@@ -269,5 +269,5 @@
      }
  
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
index 4074241..e2f6a51 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
@@ -1,7 +1,7 @@
-From bb9eb09411ddcef515f0f7ad7c29214b0766e960 Mon Sep 17 00:00:00 2001
+From 27fc7a4927ab92925a5be84217959d9f1c808ccc Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:42:38 +0000
-Subject: [PATCH 10/14] Fix rpath in libtool when sysroot is enabled
+Subject: [PATCH 10/13] Fix rpath in libtool when sysroot is enabled
 
 Enabling sysroot support in libtool exposed a bug where the final
 library had an RPATH encoded into it which still pointed to the
@@ -48,5 +48,5 @@
  	    if test -z "$hardcode_libdirs"; then
  	      hardcode_libdirs="$libdir"
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch
index c0d2d71..3fdb5eb 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch
@@ -1,7 +1,7 @@
-From af1b4ee69b4fd617b88127ed40c3ca7351a9532f Mon Sep 17 00:00:00 2001
+From 6b018e8129298dbd5b714e459ef0b3aef5bbce13 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 2 Mar 2015 01:44:14 +0000
-Subject: [PATCH 11/14] Change default emulation for mips64*-*-linux
+Subject: [PATCH 11/13] Change default emulation for mips64*-*-linux
 
 we change the default emulations to be N64 instead of N32
 
@@ -14,10 +14,10 @@
  2 files changed, 8 insertions(+), 8 deletions(-)
 
 diff --git a/bfd/config.bfd b/bfd/config.bfd
-index c5688cb..5c27b49 100644
+index b998830..ab17e72 100644
 --- a/bfd/config.bfd
 +++ b/bfd/config.bfd
-@@ -1087,12 +1087,12 @@ case "${targ}" in
+@@ -1101,12 +1101,12 @@ case "${targ}" in
      targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
      ;;
    mips64*el-*-linux*)
@@ -35,10 +35,10 @@
    mips*el-*-linux*)
      targ_defvec=mips_elf32_trad_le_vec
 diff --git a/ld/configure.tgt b/ld/configure.tgt
-index 6b6bbf2..b45b1e5 100644
+index a3db909..212327c 100644
 --- a/ld/configure.tgt
 +++ b/ld/configure.tgt
-@@ -509,11 +509,11 @@ mips*el-*-vxworks*)	targ_emul=elf32elmipvxworks
+@@ -513,11 +513,11 @@ mips*el-*-vxworks*)	targ_emul=elf32elmipvxworks
  mips*-*-vxworks*)	targ_emul=elf32ebmipvxworks
  		        targ_extra_emuls="elf32elmipvxworks" ;;
  mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
@@ -55,5 +55,5 @@
  mips*el-*-linux-*)	targ_emul=elf32ltsmip
  			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch
index af7f12f..8103347 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch
@@ -1,7 +1,7 @@
-From 9f967c555b3fda64af4549ae252a0fba00120529 Mon Sep 17 00:00:00 2001
+From c2e138f4ccdf8af81c18c8511c901d3deee696b5 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sun, 14 Feb 2016 17:06:19 +0000
-Subject: [PATCH 12/14] Add support for Netlogic XLP
+Subject: [PATCH 12/13] Add support for Netlogic XLP
 
 Patch From: Nebu Philips <nphilips@netlogicmicro.com>
 
@@ -35,10 +35,10 @@
  15 files changed, 65 insertions(+), 25 deletions(-)
 
 diff --git a/bfd/aoutx.h b/bfd/aoutx.h
-index f78b910..d0d8dd3 100644
+index be0126a..4ca7e24 100644
 --- a/bfd/aoutx.h
 +++ b/bfd/aoutx.h
-@@ -802,6 +802,7 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
+@@ -812,6 +812,7 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
  	case bfd_mach_mipsisa64r6:
  	case bfd_mach_mips_sb1:
  	case bfd_mach_mips_xlr:
@@ -47,10 +47,10 @@
  	  arch_flags = M_MIPS2;
  	  break;
 diff --git a/bfd/archures.c b/bfd/archures.c
-index 51068b9..727741f 100644
+index 96c9109..5a30d02 100644
 --- a/bfd/archures.c
 +++ b/bfd/archures.c
-@@ -181,6 +181,7 @@ DESCRIPTION
+@@ -197,6 +197,7 @@ DESCRIPTION
  .#define bfd_mach_mips_octeon2		6502
  .#define bfd_mach_mips_octeon3          6503
  .#define bfd_mach_mips_xlr              887682   {* decimal 'XLR'  *}
@@ -59,10 +59,10 @@
  .#define bfd_mach_mipsisa32r2           33
  .#define bfd_mach_mipsisa32r3           34
 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
-index 779ffbf..bf5a565 100644
+index 30513c4..5e8ed4c 100644
 --- a/bfd/bfd-in2.h
 +++ b/bfd/bfd-in2.h
-@@ -1993,6 +1993,7 @@ enum bfd_architecture
+@@ -2008,6 +2008,7 @@ enum bfd_architecture
  #define bfd_mach_mips_octeon2          6502
  #define bfd_mach_mips_octeon3          6503
  #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */
@@ -71,10 +71,10 @@
  #define bfd_mach_mipsisa32r2           33
  #define bfd_mach_mipsisa32r3           34
 diff --git a/bfd/config.bfd b/bfd/config.bfd
-index 5c27b49..d553039 100644
+index ab17e72..863be89 100644
 --- a/bfd/config.bfd
 +++ b/bfd/config.bfd
-@@ -1066,6 +1066,11 @@ case "${targ}" in
+@@ -1084,6 +1084,11 @@ case "${targ}" in
      targ_defvec=mips_elf32_le_vec
      targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
      ;;
@@ -83,11 +83,11 @@
 +	targ_selvecs="mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
 +	want64=true
 +	;;
-   mips*-*-elf* | mips*-*-rtems* | mips*-*-vxworks | mips*-*-windiss)
+   mips*-*-elf* | mips*-*-rtems* | mips*-*-windiss | mips*-*-none)
      targ_defvec=mips_elf32_be_vec
      targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
 diff --git a/bfd/cpu-mips.c b/bfd/cpu-mips.c
-index 8a9475d..de7e5a3 100644
+index d209fb6..b6a86ae 100644
 --- a/bfd/cpu-mips.c
 +++ b/bfd/cpu-mips.c
 @@ -104,7 +104,8 @@ enum
@@ -111,10 +111,10 @@
  
  /* The default architecture is mips:3000, but with a machine number of
 diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
-index 1f2f4a3..700afd3 100644
+index e47276b..71c30a0 100644
 --- a/bfd/elfxx-mips.c
 +++ b/bfd/elfxx-mips.c
-@@ -6605,6 +6605,9 @@ _bfd_elf_mips_mach (flagword flags)
+@@ -6646,6 +6646,9 @@ _bfd_elf_mips_mach (flagword flags)
      case E_MIPS_MACH_XLR:
        return bfd_mach_mips_xlr;
  
@@ -124,7 +124,7 @@
      default:
        switch (flags & EF_MIPS_ARCH)
  	{
-@@ -11901,6 +11904,10 @@ mips_set_isa_flags (bfd *abfd)
+@@ -11949,6 +11952,10 @@ mips_set_isa_flags (bfd *abfd)
        val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON2;
        break;
  
@@ -135,7 +135,7 @@
      case bfd_mach_mipsisa32:
        val = E_MIPS_ARCH_32;
        break;
-@@ -13931,6 +13938,7 @@ static const struct mips_mach_extension mips_mach_extensions[] =
+@@ -13975,6 +13982,7 @@ static const struct mips_mach_extension mips_mach_extensions[] =
    { bfd_mach_mips_octeonp, bfd_mach_mips_octeon },
    { bfd_mach_mips_octeon, bfd_mach_mipsisa64r2 },
    { bfd_mach_mips_loongson_3a, bfd_mach_mipsisa64r2 },
@@ -144,10 +144,10 @@
    /* MIPS64 extensions.  */
    { bfd_mach_mipsisa64r2, bfd_mach_mipsisa64 },
 diff --git a/binutils/readelf.c b/binutils/readelf.c
-index d5dd46f..66810cc 100644
+index 274ddd1..d31558c 100644
 --- a/binutils/readelf.c
 +++ b/binutils/readelf.c
-@@ -3140,6 +3140,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
+@@ -3230,6 +3230,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
  	    case E_MIPS_MACH_OCTEON2: strcat (buf, ", octeon2"); break;
  	    case E_MIPS_MACH_OCTEON3: strcat (buf, ", octeon3"); break;
  	    case E_MIPS_MACH_XLR:  strcat (buf, ", xlr"); break;
@@ -156,7 +156,7 @@
  	    /* We simply ignore the field in this case to avoid confusion:
  	       MIPS ELF does not specify EF_MIPS_MACH, it is a GNU
 diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
-index a2d45a4..75902c0 100644
+index eb8b26b..e59dce6 100644
 --- a/gas/config/tc-mips.c
 +++ b/gas/config/tc-mips.c
 @@ -552,6 +552,7 @@ static int mips_32bitmode = 0;
@@ -175,20 +175,20 @@
     )
  
  /* Whether the processor uses hardware interlocks to protect reads
-@@ -18702,7 +18704,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] =
+@@ -18858,7 +18860,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] =
    /* Broadcom XLP.
       XLP is mostly like XLR, with the prominent exception that it is
       MIPS64R2 rather than MIPS64.  */
 -  { "xlp",	      0, 0,			ISA_MIPS64R2, CPU_XLR },
 +  { "xlp",	      0, 0,			ISA_MIPS64R2, CPU_XLP },
  
-   /* i6400.  */
+   /* MIPS 64 Release 6 */
    { "i6400",	      0, ASE_MSA,		ISA_MIPS64R6, CPU_MIPS64R6},
 diff --git a/gas/configure b/gas/configure
-index 89f18b3..86b19ae 100755
+index 45da030..aba89f7 100755
 --- a/gas/configure
 +++ b/gas/configure
-@@ -12851,6 +12851,9 @@ _ACEOF
+@@ -12914,6 +12914,9 @@ _ACEOF
  	  mipsisa64r6 | mipsisa64r6el)
  	    mips_cpu=mips64r6
  	    ;;
@@ -199,7 +199,7 @@
  	    mips_cpu=r3900
  	    ;;
 diff --git a/gas/configure.tgt b/gas/configure.tgt
-index 086e0d2..2b71270 100644
+index 1b9fd99..a9f1977 100644
 --- a/gas/configure.tgt
 +++ b/gas/configure.tgt
 @@ -339,7 +339,7 @@ case ${generic_target} in
@@ -212,10 +212,10 @@
    mips-*-openbsd*)			fmt=elf em=tmips ;;
  
 diff --git a/include/elf/mips.h b/include/elf/mips.h
-index 57de3bc..9ba141d 100644
+index 7e813de..d7d72c1 100644
 --- a/include/elf/mips.h
 +++ b/include/elf/mips.h
-@@ -285,6 +285,7 @@ END_RELOC_NUMBERS (R_MIPS_maxext)
+@@ -290,6 +290,7 @@ END_RELOC_NUMBERS (R_MIPS_maxext)
  #define E_MIPS_MACH_SB1         0x008a0000
  #define E_MIPS_MACH_OCTEON	0x008b0000
  #define E_MIPS_MACH_XLR     	0x008c0000
@@ -224,10 +224,10 @@
  #define E_MIPS_MACH_OCTEON3	0x008e0000
  #define E_MIPS_MACH_5400	0x00910000
 diff --git a/include/opcode/mips.h b/include/opcode/mips.h
-index 9318fcc..9be5645 100644
+index b1d4ef6..f2c8e88 100644
 --- a/include/opcode/mips.h
 +++ b/include/opcode/mips.h
-@@ -1228,8 +1228,10 @@ static const unsigned int mips_isa_table[] = {
+@@ -1232,8 +1232,10 @@ static const unsigned int mips_isa_table[] = {
  #define INSN_LOONGSON_2F          0x80000000
  /* Loongson 3A.  */
  #define INSN_LOONGSON_3A          0x00000400
@@ -240,7 +240,7 @@
  
  /* DSP ASE */
  #define ASE_DSP			0x00000001
-@@ -1326,6 +1328,7 @@ static const unsigned int mips_isa_table[] = {
+@@ -1331,6 +1333,7 @@ static const unsigned int mips_isa_table[] = {
  #define CPU_OCTEON2	6502
  #define CPU_OCTEON3	6503
  #define CPU_XLR     	887682   	/* decimal 'XLR'   */
@@ -248,7 +248,7 @@
  
  /* Return true if the given CPU is included in INSN_* mask MASK.  */
  
-@@ -1403,6 +1406,9 @@ cpu_is_member (int cpu, unsigned int mask)
+@@ -1408,6 +1411,9 @@ cpu_is_member (int cpu, unsigned int mask)
        return ((mask & INSN_ISA_MASK) == INSN_ISA32R6)
  	     || ((mask & INSN_ISA_MASK) == INSN_ISA64R6);
  
@@ -259,10 +259,10 @@
        return FALSE;
      }
 diff --git a/ld/configure.tgt b/ld/configure.tgt
-index b45b1e5..fb2f36a 100644
+index 212327c..212e09c 100644
 --- a/ld/configure.tgt
 +++ b/ld/configure.tgt
-@@ -495,6 +495,8 @@ mips*el-sde-elf*)	targ_emul=elf32ltsmip
+@@ -499,6 +499,8 @@ mips*el-sde-elf* | mips*el-mti-elf* | mips*el-img-elf*)
  mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
  			targ_emul=elf32btsmip
  			targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip" ;;
@@ -272,7 +272,7 @@
  			targ_extra_emuls="elf32lr5900"
  			targ_extra_libpath=$targ_extra_emuls ;;
 diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
-index 8200920..40d9fe2 100644
+index 3f874e7..9813d0e 100644
 --- a/opcodes/mips-dis.c
 +++ b/opcodes/mips-dis.c
 @@ -648,13 +648,11 @@ const struct mips_arch_choice mips_arch_choices[] =
@@ -295,7 +295,7 @@
    /* This entry, mips16, is here only for ISA/processor selection; do
       not print its name.  */
 diff --git a/opcodes/mips-opc.c b/opcodes/mips-opc.c
-index 402f887..3764836 100644
+index a95eff1..99fb7bb 100644
 --- a/opcodes/mips-opc.c
 +++ b/opcodes/mips-opc.c
 @@ -320,7 +320,8 @@ decode_mips_operand (const char *p)
@@ -308,7 +308,7 @@
  #define IVIRT	ASE_VIRT
  #define IVIRT64	ASE_VIRT64
  
-@@ -957,6 +958,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -958,6 +959,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
  {"clo",			"U,s",		0x70000021, 0xfc0007ff, WR_1|RD_2,		0,		I32|N55,	0,	I37 },
  {"clz",			"d,s",		0x00000050, 0xfc1f07ff, WR_1|RD_2,		0,		I37,		0,	0 },
  {"clz",			"U,s",		0x70000020, 0xfc0007ff, WR_1|RD_2,		0,		I32|N55,	0,	I37 },
@@ -316,7 +316,7 @@
  /* ctc0 is at the bottom of the table.  */
  {"ctc1",		"t,G",		0x44c00000, 0xffe007ff,	RD_1|WR_CC|CM,		0,		I1,		0,	0 },
  {"ctc1",		"t,S",		0x44c00000, 0xffe007ff,	RD_1|WR_CC|CM,		0,		I1,		0,	0 },
-@@ -989,12 +991,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -990,12 +992,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
  {"daddiu",		"t,r,j",	0x64000000, 0xfc000000, WR_1|RD_2,		0,		I3,		0,	0 },
  {"daddu",		"d,v,t",	0x0000002d, 0xfc0007ff, WR_1|RD_2|RD_3,		0,		I3,		0,	0 },
  {"daddu",		"t,r,I",	0,    (int) M_DADDU_I,	INSN_MACRO,		0,		I3,		0,	0 },
@@ -331,7 +331,7 @@
  /* dctr and dctw are used on the r5000.  */
  {"dctr",		"o(b)",	 	0xbc050000, 0xfc1f0000, RD_2,			0,		I3,		0,	0 },
  {"dctw",		"o(b)",		0xbc090000, 0xfc1f0000, RD_2,			0,		I3,		0,	0 },
-@@ -1066,6 +1069,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1067,6 +1070,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
  {"dmfc0",		"t,G,H",	0x40200000, 0xffe007f8,	WR_1|RD_C0|LC,		0,		I64,		0,	0 },
  {"dmfgc0",		"t,G",		0x40600100, 0xffe007ff, WR_1|RD_C0|LC,		0,		0,		IVIRT64, 0 },
  {"dmfgc0",		"t,G,H",	0x40600100, 0xffe007f8, WR_1|RD_C0|LC,		0,		0,		IVIRT64, 0 },
@@ -339,7 +339,7 @@
  {"dmt",			"",		0x41600bc1, 0xffffffff, TRAP,			0,		0,		MT32,	0 },
  {"dmt",			"t",		0x41600bc1, 0xffe0ffff, WR_1|TRAP,		0,		0,		MT32,	0 },
  {"dmtc0",		"t,G",		0x40a00000, 0xffe007ff,	RD_1|WR_C0|WR_CC|CM,	0,		I3,		0,	EE },
-@@ -1081,6 +1085,8 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1082,6 +1086,8 @@ const struct mips_opcode mips_builtin_opcodes[] =
  /* dmfc3 is at the bottom of the table.  */
  /* dmtc3 is at the bottom of the table.  */
  {"dmuh",		"d,s,t",	0x000000dc, 0xfc0007ff, WR_1|RD_2|RD_3,		0,		I69,		0,	0 },
@@ -348,7 +348,7 @@
  {"dmul",		"d,s,t",	0x0000009c, 0xfc0007ff, WR_1|RD_2|RD_3,		0,		I69,		0,	0 },
  {"dmul",		"d,v,t",	0x70000003, 0xfc0007ff, WR_1|RD_2|RD_3|WR_HILO,	0,		IOCT,		0,	0 },
  {"dmul",		"d,v,t",	0,    (int) M_DMUL,	INSN_MACRO,		0,		I3,		0,	M32|I69 },
-@@ -1234,9 +1240,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1235,9 +1241,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
  {"ld",			"s,-b(+R)",	0xec180000, 0xfc1c0000, WR_1,			RD_pc,		I69,		0,	0 },
  {"ld",			"t,A(b)",	0,    (int) M_LD_AB,	INSN_MACRO,		0,		I1,		0,	0 },
  {"ld",			"t,o(b)",	0xdc000000, 0xfc000000, WR_1|RD_3|LM,		0,		I3,		0,	0 },
@@ -361,7 +361,7 @@
  {"ldc1",		"T,o(b)",	0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D,	0,		I2,		0,	SF },
  {"ldc1",		"E,o(b)",	0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D,	0,		I2,		0,	SF },
  {"ldc1",		"T,A(b)",	0,    (int) M_LDC1_AB,	INSN_MACRO,		INSN2_M_FP_D,	I2,		0,	SF },
-@@ -1401,7 +1407,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1402,7 +1408,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
  {"mflo",		"d,9",		0x00000012, 0xff9f07ff, WR_1|RD_LO,		0,		0,		D32,	0 },
  {"mflo1",		"d",		0x70000012, 0xffff07ff,	WR_1|RD_LO,		0,		EE,		0,	0 },
  {"mflhxu",		"d",		0x00000052, 0xffff07ff,	WR_1|MOD_HILO,		0,		0,		SMT,	0 },
@@ -370,7 +370,7 @@
  {"mfsa",		"d",		0x00000028, 0xffff07ff,	WR_1,			0,		EE,		0,	0 },
  {"min.ob",		"X,Y,Q",	0x78000006, 0xfc20003f,	WR_1|RD_2|RD_3|FP_D,	0,		SB1,		MX,	0 },
  {"min.ob",		"D,S,Q",	0x48000006, 0xfc20003f,	WR_1|RD_2|RD_3|FP_D,	0,		N54,		0,	0 },
-@@ -1446,10 +1452,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1447,10 +1453,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
  /* move is at the top of the table.  */
  {"msgn.qh",		"X,Y,Q",	0x78200000, 0xfc20003f,	WR_1|RD_2|RD_3|FP_D,	0,		0,		MX,	0 },
  {"msgsnd",		"t",		0,    (int) M_MSGSND,	INSN_MACRO,		0,		XLR,		0,	0 },
@@ -386,7 +386,7 @@
  {"msub.d",		"D,R,S,T",	0x4c000029, 0xfc00003f, WR_1|RD_2|RD_3|RD_4|FP_D, 0,		I4_33,		0,	I37 },
  {"msub.d",		"D,S,T",	0x46200019, 0xffe0003f,	WR_1|RD_2|RD_3|FP_D,	0,		IL2E,		0,	0 },
  {"msub.d",		"D,S,T",	0x72200019, 0xffe0003f,	WR_1|RD_2|RD_3|FP_D,	0,		IL2F,		0,	0 },
-@@ -1499,7 +1508,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1500,7 +1509,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
  {"mtlo",		"s,7",		0x00000013, 0xfc1fe7ff, RD_1|WR_LO,		0,		0,		D32,	0 },
  {"mtlo1",		"s",		0x70000013, 0xfc1fffff,	RD_1|WR_LO,		0,		EE,		0,	0 },
  {"mtlhx",		"s",		0x00000053, 0xfc1fffff,	RD_1|MOD_HILO,		0,		0,		SMT,	0 },
@@ -395,7 +395,7 @@
  {"mtm0",		"s",		0x70000008, 0xfc1fffff, RD_1,			0,		IOCT,		0,	0 },
  {"mtm0",    		"s,t",		0x70000008, 0xfc00ffff, RD_1|RD_2,		0,		IOCT3,		0,	0 },
  {"mtm1",		"s",		0x7000000c, 0xfc1fffff, RD_1,			0,		IOCT,		0,	0 },
-@@ -1936,9 +1945,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1937,9 +1946,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
  {"suxc1",		"S,t(b)",	0x4c00000d, 0xfc0007ff, RD_1|RD_2|RD_3|SM|FP_D,	0,		I5_33|N55,	0,	I37},
  {"sw",			"t,o(b)",	0xac000000, 0xfc000000,	RD_1|RD_3|SM,		0,		I1,		0,	0 },
  {"sw",			"t,A(b)",	0,    (int) M_SW_AB,	INSN_MACRO,		0,		I1,		0,	0 },
@@ -409,5 +409,5 @@
  {"swc0",		"E,A(b)",	0,    (int) M_SWC0_AB,	INSN_MACRO,		0,		I1,		0,	IOCT|IOCTP|IOCT2|I37 },
  {"swc1",		"T,o(b)",	0xe4000000, 0xfc000000,	RD_1|RD_3|SM|FP_S,	0,		I1,		0,	0 },
 -- 
-2.7.1
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch
deleted file mode 100644
index 24af120..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 9619a608528383a44ccc1637ae939b5f3e97adc5 Mon Sep 17 00:00:00 2001
-From: Sandra Loosemore <sandra@codesourcery.com>
-Date: Wed, 9 Dec 2015 16:13:58 -0800
-Subject: [PATCH 13/14] Fix GOT address computations in initial PLT entries for
- nios2.
-
-2015-12-09  Sandra Loosemore  <sandra@codesourcery.com>
-
-	bfd/
-	* elf32-nios2.c (nios2_elf32_finish_dynamic_sections): Correct
-	%hiadj/%lo computations for _GLOBAL_OFFSET_TABLE_ in initial
-	PLT entries.  Assert alignment requirements.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Backport
----
- bfd/elf32-nios2.c | 23 ++++++++++++++++-------
- 1 file changed, 16 insertions(+), 7 deletions(-)
-
-diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c
-index 6b29d8b..1c54320 100644
---- a/bfd/elf32-nios2.c
-+++ b/bfd/elf32-nios2.c
-@@ -5383,12 +5383,17 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd,
- 				 + sgotplt->output_offset);
- 	  if (bfd_link_pic (info))
- 	    {
--	      bfd_vma corrected = got_address - (splt->output_section->vma
--						 + splt->output_offset + 4);
-+	      bfd_vma got_pcrel = got_address - (splt->output_section->vma
-+						 + splt->output_offset);
-+	      /* Both GOT and PLT must be aligned to a 16-byte boundary
-+		 for the two loads to share the %hiadj part.  The 4-byte
-+		 offset for nextpc is accounted for in the %lo offsets
-+		 on the loads.  */
-+	      BFD_ASSERT ((got_pcrel & 0xf) == 0);
- 	      nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6);
--	      nios2_elf32_install_imm16 (splt, 4, hiadj (corrected));
--	      nios2_elf32_install_imm16 (splt, 12, (corrected & 0xffff) + 4);
--	      nios2_elf32_install_imm16 (splt, 16, (corrected & 0xffff) + 8);
-+	      nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel));
-+	      nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff);
-+	      nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff);
- 	    }
- 	  else
- 	    {
-@@ -5404,6 +5409,10 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd,
- 			    6 | ((res_size - (res_offset + 4)) << 6),
- 			    splt->contents + res_offset);
- 
-+	      /* The GOT must be aligned to a 16-byte boundary for the
-+		 two loads to share the same %hiadj part.  */
-+	      BFD_ASSERT ((got_address & 0xf) == 0);
-+
- 	      nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7);
- 	      nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start));
- 	      nios2_elf32_install_imm16 (splt, res_size + 4,
-@@ -5411,9 +5420,9 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd,
- 	      nios2_elf32_install_imm16 (splt, res_size + 12,
- 					 hiadj (got_address));
- 	      nios2_elf32_install_imm16 (splt, res_size + 16,
--					 (got_address & 0xffff) + 4);
-+					 (got_address + 4) & 0xffff);
- 	      nios2_elf32_install_imm16 (splt, res_size + 20,
--					 (got_address & 0xffff) + 8);
-+					 (got_address + 8) & 0xffff);
- 	    }
- 	}
-     }
--- 
-2.7.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
new file mode 100644
index 0000000..f314d64
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
@@ -0,0 +1,36 @@
+From 0c04c3b626998c8e7b595381b35456428581f52a Mon Sep 17 00:00:00 2001
+From: Zhenhua Luo <zhenhua.luo@nxp.com>
+Date: Sat, 11 Jun 2016 22:08:29 -0500
+Subject: [PATCH 13/13] fix the incorrect assembling for ppc wait mnemonic
+
+Signed-off-by: Zhenhua Luo <zhenhua.luo@nxp.com>
+
+Upstream-Status: Pending
+---
+ opcodes/ppc-opc.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
+index 8106ab7..ca4b0f3 100644
+--- a/opcodes/ppc-opc.c
++++ b/opcodes/ppc-opc.c
+@@ -4811,7 +4811,6 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ {"ldepx",	X(31,29),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
+ 
+ {"waitasec",	X(31,30),      XRTRARB_MASK, POWER8,	POWER9,		{0}},
+-{"wait",	X(31,30),	XWC_MASK,    POWER9,	0,		{WC}},
+ 
+ {"lwepx",	X(31,31),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
+ 
+@@ -4865,7 +4864,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+ 
+ {"waitrsv",	X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0,		{0}},
+ {"waitimpl",	X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0,		{0}},
+-{"wait",	X(31,62),	XWC_MASK,    E500MC|PPCA2, 0,		{WC}},
++{"wait",	X(31,62),	XWC_MASK,    E500MC|PPCA2|POWER9, 0,	{WC}},
+ 
+ {"dcbstep",	XRT(31,63,0),	XRT_MASK,    E500MC|PPCA2, 0,		{RA0, RB}},
+ 
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0014-Correct-nios2-_gp-address-computation.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0014-Correct-nios2-_gp-address-computation.patch
deleted file mode 100644
index 86eeded..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0014-Correct-nios2-_gp-address-computation.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From 27f155fd0ab4ba954366643dbfdc3c7104933794 Mon Sep 17 00:00:00 2001
-From: Sandra Loosemore <sandra@codesourcery.com>
-Date: Sun, 27 Dec 2015 12:30:26 -0800
-Subject: [PATCH 14/14] Correct nios2 _gp address computation.
-
-2015-12-27  Sandra Loosemore  <sandra@codesourcery.com>
-
-	bfd/
-	* elf32-nios2.c (nios2_elf_assign_gp): Correct computation of _gp
-	address.
-	(nios2_elf32_relocate_section): Tidy code for R_NIOS2_GPREL error
-	messages.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Backport
----
- bfd/elf32-nios2.c | 31 +++++++++++++++++++++----------
- 1 file changed, 21 insertions(+), 10 deletions(-)
-
-diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c
-index 1c54320..babecf3 100644
---- a/bfd/elf32-nios2.c
-+++ b/bfd/elf32-nios2.c
-@@ -3086,7 +3086,15 @@ lookup:
- 	case bfd_link_hash_defined:
- 	case bfd_link_hash_defweak:
- 	  gp_found = TRUE;
--	  *pgp = lh->u.def.value;
-+	  {
-+	    asection *sym_sec = lh->u.def.section;
-+	    bfd_vma sym_value = lh->u.def.value;
-+
-+	    if (sym_sec->output_section)
-+	      sym_value = (sym_value + sym_sec->output_offset
-+			   + sym_sec->output_section->vma);
-+	    *pgp = sym_value;
-+	  }
- 	  break;
- 	case bfd_link_hash_indirect:
- 	case bfd_link_hash_warning:
-@@ -3719,7 +3727,6 @@ nios2_elf32_relocate_section (bfd *output_bfd,
-       struct elf32_nios2_link_hash_entry *eh;
-       bfd_vma relocation;
-       bfd_vma gp;
--      bfd_vma reloc_address;
-       bfd_reloc_status_type r = bfd_reloc_ok;
-       const char *name = NULL;
-       int r_type;
-@@ -3762,12 +3769,6 @@ nios2_elf32_relocate_section (bfd *output_bfd,
-       if (bfd_link_relocatable (info))
- 	continue;
- 
--      if (sec && sec->output_section)
--	reloc_address = (sec->output_section->vma + sec->output_offset
--			 + rel->r_offset);
--      else
--	reloc_address = 0;
--
-       if (howto)
- 	{
- 	  switch (howto->type)
-@@ -3816,6 +3817,15 @@ nios2_elf32_relocate_section (bfd *output_bfd,
- 	      /* Turns an absolute address into a gp-relative address.  */
- 	      if (!nios2_elf_assign_gp (output_bfd, &gp, info))
- 		{
-+		  bfd_vma reloc_address;
-+
-+		  if (sec && sec->output_section)
-+		    reloc_address = (sec->output_section->vma
-+				     + sec->output_offset
-+				     + rel->r_offset);
-+		  else
-+		    reloc_address = 0;
-+
- 		  format = _("global pointer relative relocation at address "
- 			     "0x%08x when _gp not defined\n");
- 		  sprintf (msgbuf, format, reloc_address);
-@@ -3825,7 +3835,7 @@ nios2_elf32_relocate_section (bfd *output_bfd,
- 	      else
- 		{
- 		  bfd_vma symbol_address = rel->r_addend + relocation;
--		  relocation = relocation + rel->r_addend - gp;
-+		  relocation = symbol_address - gp;
- 		  rel->r_addend = 0;
- 		  if (((signed) relocation < -32768
- 		       || (signed) relocation > 32767)
-@@ -3833,6 +3843,8 @@ nios2_elf32_relocate_section (bfd *output_bfd,
- 			  || h->root.type == bfd_link_hash_defined
- 			  || h->root.type == bfd_link_hash_defweak))
- 		    {
-+		      if (h)
-+			name = h->root.root.string;
- 		      format = _("Unable to reach %s (at 0x%08x) from the "
- 				 "global pointer (at 0x%08x) because the "
- 				 "offset (%d) is out of the allowed range, "
-@@ -3848,7 +3860,6 @@ nios2_elf32_relocate_section (bfd *output_bfd,
- 						  rel->r_offset, relocation,
- 						  rel->r_addend);
- 		}
--
- 	      break;
- 	    case R_NIOS2_UJMP:
- 	      r = nios2_elf32_do_ujmp_relocate (input_bfd, howto,
--- 
-2.7.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch
new file mode 100644
index 0000000..d56948f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0014-libtool-remove-rpath.patch
@@ -0,0 +1,100 @@
+Apply these patches from our libtool patches as not only are redundant RPATHs a
+waste of space but they can cause incorrect linking when native packages are
+restored from sstate.
+
+fix-rpath.patch:
+We don't want to add RPATHS which match default linker
+search paths, they're a waste of space. This patch
+filters libtools list and removes the ones we don't need.
+
+norm-rpath.patch:
+Libtool may be passed link paths of the form "/usr/lib/../lib", which
+fool its detection code into thinking it should be included as an
+RPATH in the generated binary.  Normalize before comparision.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 683317c..860a16a 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -8053,8 +8053,14 @@ EOF
+ 		  esac
+ 		fi
+ 	      else
+-		eval flag=\"$hardcode_libdir_flag_spec\"
+-		func_append dep_rpath " $flag"
++                # We only want to hardcode in an rpath if it isn't in the
++                # default dlsearch path.
++	        case " $sys_lib_dlsearch_path " in
++	        *" $libdir "*) ;;
++	        *) eval flag=\"$hardcode_libdir_flag_spec\"
++                   func_append dep_rpath " $flag"
++                   ;;
++	        esac
+ 	      fi
+ 	    elif test -n "$runpath_var"; then
+ 	      case "$perm_rpath " in
+@@ -8790,8 +8796,14 @@ EOF
+ 	      esac
+ 	    fi
+ 	  else
+-	    eval flag=\"$hardcode_libdir_flag_spec\"
+-	    func_append rpath " $flag"
++            # We only want to hardcode in an rpath if it isn't in the
++            # default dlsearch path.
++	    case " $sys_lib_dlsearch_path " in
++	    *" $libdir "*) ;;
++	    *) eval flag=\"$hardcode_libdir_flag_spec\"
++               rpath+=" $flag"
++               ;;
++	    esac
+ 	  fi
+ 	elif test -n "$runpath_var"; then
+ 	  case "$perm_rpath " in
+@@ -8841,8 +8853,14 @@ EOF
+ 	      esac
+ 	    fi
+ 	  else
+-	    eval flag=\"$hardcode_libdir_flag_spec\"
+-	    func_append rpath " $flag"
++            # We only want to hardcode in an rpath if it isn't in the
++            # default dlsearch path.
++	    case " $sys_lib_dlsearch_path " in
++	    *" $libdir "*) ;;
++	    *) eval flag=\"$hardcode_libdir_flag_spec\"
++               func_append rpath " $flag"
++               ;;
++	    esac
+ 	  fi
+ 	elif test -n "$runpath_var"; then
+ 	  case "$finalize_perm_rpath " in
+diff --git a/ltmain.sh b/ltmain.sh
+index 683317c..860a16a 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -8055,8 +8055,10 @@ EOF
+ 	      else
+                 # We only want to hardcode in an rpath if it isn't in the
+                 # default dlsearch path.
++                func_normal_abspath "$libdir"
++                libdir_norm=$func_normal_abspath_result
+ 	        case " $sys_lib_dlsearch_path " in
+-	        *" $libdir "*) ;;
++	        *" $libdir_norm "*) ;;
+ 	        *) eval flag=\"$hardcode_libdir_flag_spec\"
+                    func_append dep_rpath " $flag"
+                    ;;
+@@ -8798,8 +8800,10 @@ EOF
+ 	  else
+             # We only want to hardcode in an rpath if it isn't in the
+             # default dlsearch path.
++            func_normal_abspath "$libdir"
++            libdir_norm=$func_normal_abspath_result
+ 	    case " $sys_lib_dlsearch_path " in
+-	    *" $libdir "*) ;;
++	    *" $libdir_norm "*) ;;
+ 	    *) eval flag=\"$hardcode_libdir_flag_spec\"
+                rpath+=" $flag"
+                ;;
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch
new file mode 100644
index 0000000..f3e3a11
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0015-Refine-.cfi_sections-check-to-only-consider-compact-.patch
@@ -0,0 +1,97 @@
+From 3d3424e9a8d6ad56160b98bf6e223c0346164468 Mon Sep 17 00:00:00 2001
+From: Matthew Fortune <matthew.fortune@imgtec.com>
+Date: Thu, 29 Sep 2016 11:13:46 +0100
+Subject: [PATCH] Refine .cfi_sections check to only consider compact eh_frame
+
+The .cfi_sections directive can be safely used multiple times
+with different sections named at any time unless the compact form
+of exception handling is requested after CFI information has
+been emitted.  Only the compact form of CFI information changes
+the way in which CFI is generated and therefore cannot be
+retrospectively requested after generating CFI information.
+
+gas/
+
+	PR gas/20648
+	* dw2gencfi.c (dot_cfi_sections): Refine the check for
+	inconsistent .cfi_sections to only consider compact vs non
+	compact forms.
+	* testsuite/gas/cfi/cfi-common-9.d: New file.
+	* testsuite/gas/cfi/cfi-common-9.s: New file.
+	* testsuite/gas/cfi/cfi.exp: Run new test.
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com
+
+ gas/ChangeLog                        | 10 ++++++++++
+ gas/dw2gencfi.c                      |  5 ++++-
+ gas/testsuite/gas/cfi/cfi-common-9.d | 23 +++++++++++++++++++++++
+ gas/testsuite/gas/cfi/cfi-common-9.s |  4 ++++
+ gas/testsuite/gas/cfi/cfi.exp        |  1 +
+ 5 files changed, 42 insertions(+), 1 deletion(-)
+ create mode 100644 gas/testsuite/gas/cfi/cfi-common-9.d
+ create mode 100644 gas/testsuite/gas/cfi/cfi-common-9.s
+
+Index: git/gas/dw2gencfi.c
+===================================================================
+--- git.orig/gas/dw2gencfi.c
++++ git/gas/dw2gencfi.c
+@@ -1244,7 +1244,10 @@ dot_cfi_sections (int ignored ATTRIBUTE_
+       }
+ 
+   demand_empty_rest_of_line ();
+-  if (cfi_sections_set && cfi_sections != sections)
++  if (cfi_sections_set
++      && (sections & (CFI_EMIT_eh_frame | CFI_EMIT_eh_frame_compact))
++      && (cfi_sections & (CFI_EMIT_eh_frame | CFI_EMIT_eh_frame_compact))
++	 != (sections & (CFI_EMIT_eh_frame | CFI_EMIT_eh_frame_compact)))
+     as_bad (_("inconsistent uses of .cfi_sections"));
+   cfi_sections = sections;
+ }
+Index: git/gas/testsuite/gas/cfi/cfi-common-9.d
+===================================================================
+--- /dev/null
++++ git/gas/testsuite/gas/cfi/cfi-common-9.d
+@@ -0,0 +1,23 @@
++#objdump: -Wf
++#name: CFI common 9
++#...
++Contents of the .eh_frame section:
++
++00000000 0+0010 0+0000 CIE
++  Version:               1
++  Augmentation:          "zR"
++  Code alignment factor: .*
++  Data alignment factor: .*
++  Return address column: .*
++  Augmentation data:     [01]b
++
++  DW_CFA_nop
++  DW_CFA_nop
++  DW_CFA_nop
++
++00000014 0+00(10|18|1c|20) 0+0018 FDE cie=0+0000 pc=.*
++
++  DW_CFA_nop
++  DW_CFA_nop
++  DW_CFA_nop
++#...
+Index: git/gas/testsuite/gas/cfi/cfi-common-9.s
+===================================================================
+--- /dev/null
++++ git/gas/testsuite/gas/cfi/cfi-common-9.s
+@@ -0,0 +1,4 @@
++	.cfi_sections .eh_frame
++	.cfi_startproc simple
++	.cfi_sections .debug_frame
++	.cfi_endproc
+Index: git/gas/testsuite/gas/cfi/cfi.exp
+===================================================================
+--- git.orig/gas/testsuite/gas/cfi/cfi.exp
++++ git/gas/testsuite/gas/cfi/cfi.exp
+@@ -135,4 +135,5 @@ if { ![istarget "hppa64*-*"] } then {
+     run_dump_test "cfi-common-6"
+   }
+   run_dump_test "cfi-common-7"
++  run_dump_test "cfi-common-9"
+ }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0015-binutils-mips-gas-pic-relax-linkonce.diff b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0015-binutils-mips-gas-pic-relax-linkonce.diff
new file mode 100644
index 0000000..78b971a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0015-binutils-mips-gas-pic-relax-linkonce.diff
@@ -0,0 +1,65 @@
+Patch taken from Binutils Bugzilla:
+
+  https://sourceware.org/bugzilla/show_bug.cgi?id=20649
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+
+Index: binutils/gas/config/tc-mips.c
+===================================================================
+--- binutils.orig/gas/config/tc-mips.c	2016-09-29 05:12:31.000000000 +0100
++++ binutils/gas/config/tc-mips.c	2016-09-29 20:05:13.257411084 +0100
+@@ -1353,7 +1353,7 @@ static void s_mips_stab (int);
+ static void s_mips_weakext (int);
+ static void s_mips_file (int);
+ static void s_mips_loc (int);
+-static bfd_boolean pic_need_relax (symbolS *, asection *);
++static bfd_boolean pic_need_relax (symbolS *);
+ static int relaxed_branch_length (fragS *, asection *, int);
+ static int relaxed_micromips_16bit_branch_length (fragS *, asection *, int);
+ static int relaxed_micromips_32bit_branch_length (fragS *, asection *, int);
+@@ -4258,6 +4258,8 @@ mips_move_text_labels (void)
+   mips_move_labels (seg_info (now_seg)->label_list, TRUE);
+ }
+ 
++/* Duplicate the test for LINK_ONCE sections as in `adjust_reloc_syms'.  */
++
+ static bfd_boolean
+ s_is_linkonce (symbolS *sym, segT from_seg)
+ {
+@@ -14823,7 +14825,7 @@ mips_frob_file (void)
+ 	 constants; we'll report an error for those later.  */
+       if (got16_reloc_p (l->fixp->fx_r_type)
+ 	  && !(l->fixp->fx_addsy
+-	       && pic_need_relax (l->fixp->fx_addsy, l->seg)))
++	       && pic_need_relax (l->fixp->fx_addsy)))
+ 	continue;
+ 
+       /* Check quickly whether the next fixup happens to be a matching %lo.  */
+@@ -17043,7 +17045,7 @@ nopic_need_relax (symbolS *sym, int befo
+ /* Return true if the given symbol should be considered local for SVR4 PIC.  */
+ 
+ static bfd_boolean
+-pic_need_relax (symbolS *sym, asection *segtype)
++pic_need_relax (symbolS *sym)
+ {
+   asection *symsec;
+ 
+@@ -17068,7 +17070,6 @@ pic_need_relax (symbolS *sym, asection *
+   return (!bfd_is_und_section (symsec)
+ 	  && !bfd_is_abs_section (symsec)
+ 	  && !bfd_is_com_section (symsec)
+-	  && !s_is_linkonce (sym, segtype)
+ 	  /* A global or weak symbol is treated as external.  */
+ 	  && (!S_IS_WEAK (sym) && !S_IS_EXTERNAL (sym)));
+ }
+@@ -17507,7 +17508,7 @@ md_estimate_size_before_relax (fragS *fr
+   if (mips_pic == NO_PIC)
+     change = nopic_need_relax (fragp->fr_symbol, 0);
+   else if (mips_pic == SVR4_PIC)
+-    change = pic_need_relax (fragp->fr_symbol, segtype);
++    change = pic_need_relax (fragp->fr_symbol);
+   else if (mips_pic == VXWORKS_PIC)
+     /* For vxworks, GOT16 relocations never have a corresponding LO16.  */
+     change = 0;
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils_2.26.bb b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils_2.26.bb
deleted file mode 100644
index b70ffbf..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils_2.26.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-require binutils.inc
-require binutils-${PV}.inc
-
-DEPENDS += "flex bison zlib"
-
-EXTRA_OECONF += "--with-sysroot=/ \
-                --enable-install-libbfd \
-                --enable-install-libiberty \
-                --enable-shared \
-                --with-system-zlib \
-                "
-
-EXTRA_OECONF_class-native = "--enable-targets=all \
-                             --enable-64-bit-bfd \
-                             --enable-install-libiberty \
-                             --enable-install-libbfd"
-
-do_install_class-native () {
-	autotools_do_install
-
-	# Install the libiberty header
-	install -d ${D}${includedir}
-	install -m 644 ${S}/include/ansidecl.h ${D}${includedir}
-	install -m 644 ${S}/include/libiberty.h ${D}${includedir}
-
-	# We only want libiberty, libbfd and libopcodes
-	rm -rf ${D}${bindir}
-	rm -rf ${D}${prefix}/${TARGET_SYS}
-	rm -rf ${D}${prefix}/lib/ldscripts
-	rm -rf ${D}${prefix}/share/info
-	rm -rf ${D}${prefix}/share/locale
-	rm -rf ${D}${prefix}/share/man
-	rmdir ${D}${prefix}/share || :
-	rmdir ${D}/${libdir}/gcc-lib || :
-	rmdir ${D}/${libdir}64/gcc-lib || :
-	rmdir ${D}/${libdir} || :
-	rmdir ${D}/${libdir}64 || :
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils_2.27.bb b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils_2.27.bb
new file mode 100644
index 0000000..b51437b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils_2.27.bb
@@ -0,0 +1,45 @@
+require binutils.inc
+require binutils-${PV}.inc
+
+DEPENDS += "flex bison zlib"
+
+EXTRA_OECONF += "--with-sysroot=/ \
+                --enable-install-libbfd \
+                --enable-install-libiberty \
+                --enable-shared \
+                --with-system-zlib \
+                "
+
+EXTRA_OEMAKE_append_libc-musl = "\
+                                 gt_cv_func_gnugettext1_libc=yes \
+                                 gt_cv_func_gnugettext2_libc=yes \
+                                "
+EXTRA_OECONF_class-native = "--enable-targets=all \
+                             --enable-64-bit-bfd \
+                             --enable-install-libiberty \
+                             --enable-install-libbfd \
+                             --disable-werror"
+
+do_install_class-native () {
+	autotools_do_install
+
+	# Install the libiberty header
+	install -d ${D}${includedir}
+	install -m 644 ${S}/include/ansidecl.h ${D}${includedir}
+	install -m 644 ${S}/include/libiberty.h ${D}${includedir}
+
+	# We only want libiberty, libbfd and libopcodes
+	rm -rf ${D}${bindir}
+	rm -rf ${D}${prefix}/${TARGET_SYS}
+	rm -rf ${D}${prefix}/lib/ldscripts
+	rm -rf ${D}${prefix}/share/info
+	rm -rf ${D}${prefix}/share/locale
+	rm -rf ${D}${prefix}/share/man
+	rmdir ${D}${prefix}/share || :
+	rmdir ${D}/${libdir}/gcc-lib || :
+	rmdir ${D}/${libdir}64/gcc-lib || :
+	rmdir ${D}/${libdir} || :
+	rmdir ${D}/${libdir}64 || :
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2/0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch b/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2/0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch
new file mode 100644
index 0000000..118814a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2/0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch
@@ -0,0 +1,30 @@
+From 2225ab2038bfe50f16f972e39d89bcd0bd7767f5 Mon Sep 17 00:00:00 2001
+From: Steffen Pankratz <kratz00@gmx.de>
+Date: Tue, 9 Feb 2016 13:49:42 +0100
+Subject: [PATCH] Fixed: Missing default value for BOOTLOG_DEST
+
+Upstream-Status: Backport
+
+BUILDLOG_DEST seems to be a typo or mix-up which was introduced with 281d1df80884bf2969c509ec60ee8a6593524fe8
+
+Signed-off-by: Peter Liu <peter.x.liu@external.atlascopco.com>
+---
+ bootchartd.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bootchartd.in b/bootchartd.in
+index f58ab9e..30af677 100755
+--- a/bootchartd.in
++++ b/bootchartd.in
+@@ -37,7 +37,7 @@ PATH="/sbin:/bin:/usr/sbin:/usr/bin:$PATH"
+ 
+ # Defaults, in case we can't find our configuration
+ SAMPLE_HZ=50
+-BUILDLOG_DEST=/var/log/bootchart.tgz
++BOOTLOG_DEST=/var/log/bootchart.tgz
+ AUTO_RENDER="no"
+ AUTO_RENDER_DIR="/var/log"
+ AUTO_RENDER_FORMAT="png"
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2/0001-collector-Allocate-space-on-heap-for-chunks.patch b/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2/0001-collector-Allocate-space-on-heap-for-chunks.patch
new file mode 100644
index 0000000..7a8813e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2/0001-collector-Allocate-space-on-heap-for-chunks.patch
@@ -0,0 +1,45 @@
+From 09505532b49573663fb4ff4dad424dc2ef4c1f84 Mon Sep 17 00:00:00 2001
+From: Kyle Russell <bkylerussell@gmail.com>
+Date: Wed, 13 Jul 2016 17:30:00 -0400
+Subject: [PATCH] collector: Allocate space on heap for chunks
+
+Nicer for embedded devices which may have smaller stack limitations.
+
+Upstream-Status: Submitted [https://github.com/xrmx/bootchart/pull/74]
+
+Signed-off-by: Kyle Russell <bkylerussell@gmail.com>
+---
+ collector/dump.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/collector/dump.c b/collector/dump.c
+index e673b5b..2f094b4 100644
+--- a/collector/dump.c
++++ b/collector/dump.c
+@@ -184,12 +184,12 @@ static void dump_buffers (DumpState *s)
+ 	log ("reading %d chunks (of %d) ...\n", max_chunk, s->map.max_chunk);
+ 	for (i = 0; i < max_chunk; i++) {
+ 		FILE *output;
+-		char buffer[CHUNK_SIZE];
+-		Chunk *c = (Chunk *)&buffer;
++		char *buffer = malloc(CHUNK_SIZE);
++		Chunk *c = (Chunk *)buffer;
+ 		size_t addr = (size_t) s->map.chunks[i];
+ 
+ 		lseek (s->mem, addr, SEEK_SET);
+-		read (s->mem, &buffer, CHUNK_SIZE);
++		read (s->mem, buffer, CHUNK_SIZE);
+ 		/*      log ("type: '%s' len %d\n",
+ 			c->dest_stream, (int)c->length); */
+ 
+@@ -197,6 +197,7 @@ static void dump_buffers (DumpState *s)
+ 		fwrite (c->data, 1, c->length, output);
+ 		bytes_dumped += c->length;
+ 		fclose (output);
++                free(buffer);
+ 	}
+ 	log ("wrote %ld kb\n", (long)(bytes_dumped+1023)/1024);
+ }
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb b/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
index 86c614a..4f01734 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
@@ -92,14 +92,18 @@
 
 SRC_URI = "git://github.com/mmeeks/bootchart.git \
            file://bootchartd_stop.sh \
+           file://0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch \
+           file://0001-collector-Allocate-space-on-heap-for-chunks.patch \
           "
 
 S = "${WORKDIR}/git"
 SRCREV = "48e0071048564c6af75ab969e842d6dec808da09"
 
-inherit systemd
-inherit update-rc.d
-inherit pythonnative
+inherit systemd update-rc.d python3native update-alternatives
+
+ALTERNATIVE_${PN} = "bootchartd"
+ALTERNATIVE_LINK_NAME[bootchartd] = "${base_sbindir}/bootchartd"
+ALTERNATIVE_PRIORITY = "100"
 
 # The only reason to build bootchart2-native is for a native pybootchartgui.
 BBCLASSEXTEND = "native"
@@ -110,13 +114,6 @@
 INITSCRIPT_NAME = "bootchartd_stop.sh"
 INITSCRIPT_PARAMS = "start 99 2 3 4 5 ."
 
-# We want native pybootchartgui to execute with the correct Python interpeter.
-do_compile_append_class-native () {
-    echo "#! ${PYTHON}" | cat - ${S}/pybootchartgui.py > ${WORKDIR}/temp_pybootchartgui
-    mv ${WORKDIR}/temp_pybootchartgui ${S}/pybootchartgui.py
-    chmod +x ${S}/pybootchartgui
-}
-
 do_compile_prepend () {
     export PY_LIBDIR="${libdir}/${PYTHON_DIR}"
     export BINDIR="${bindir}"
@@ -135,17 +132,21 @@
     install -m 0755 ${WORKDIR}/bootchartd_stop.sh ${D}${sysconfdir}/init.d
 
     echo 'EXIT_PROC="$EXIT_PROC matchbox-window-manager"' >> ${D}${sysconfdir}/bootchartd.conf
+
+   # Use python 3 instead of python 2
+   sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${bindir}/pybootchartgui
 }
 
 PACKAGES =+ "pybootchartgui"
-FILES_pybootchartgui += "${libdir}/python*/site-packages/pybootchartgui ${bindir}/pybootchartgui"
-RDEPENDS_pybootchartgui = "python-pycairo python-compression python-image python-textutils python-shell python-compression python-codecs"
+FILES_pybootchartgui += "${PYTHON_SITEPACKAGES_DIR}/pybootchartgui ${bindir}/pybootchartgui"
+RDEPENDS_pybootchartgui = "python3-pycairo python3-compression python3-image python3-textutils python3-shell python3-compression python3-codecs"
 RDEPENDS_${PN}_class-target += "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'sysvinit-pidof', 'procps', d)}"
 RDEPENDS_${PN}_class-target += "lsb"
-DEPENDS_append_class-native = " python-pycairo-native"
+DEPENDS_append_class-native = " python3-pycairo-native"
 
 PACKAGES =+ "bootchartd-stop-initscript"
 FILES_bootchartd-stop-initscript += "${sysconfdir}/init.d ${sysconfdir}/rc*.d"
+RDEPENDS_bootchartd-stop-initscript = "${PN}"
 
 FILES_${PN} += "${base_libdir}/bootchart/bootchart-collector"
 FILES_${PN} += "${base_libdir}/bootchart/tmpfs"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/fix-symlink-creation-multiple-times.patch b/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/fix-symlink-creation-multiple-times.patch
deleted file mode 100644
index a945496..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/fix-symlink-creation-multiple-times.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 05ab78e9183575e38f342e05a056cb7bcd1e52e1 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 18 Feb 2016 20:41:28 -0500
-Subject: [PATCH] btrfs-progs: fix symlink creation multiple times
-
-The rule to create symlink in Makefile caused parallel issue:
-$ make -j 40 DESTDIR=/image install BUILD_VERBOSE=1
-...
-  1     [LN]     libbtrfs.so.0
-  2     [LN]     libbtrfs.so
-  3 ln -s -f libbtrfs.so.0.1 libbtrfs.so.0
-  4 ln -s -f libbtrfs.so.0.1 libbtrfs.so.0
-  5 ln -s -f libbtrfs.so.0.1 libbtrfs.so
-  6 ln -s -f libbtrfs.so.0.1 libbtrfs.so
-...
-
-It failed occasionally:
-...
-|symlinkat: couldn't stat 'git/libbtrfs.so' even though symlink
-creation succeeded (No such file or directory).
-|ln: failed to create symbolic link 'libbtrfs.so': No such file or directory
-...
-
-Upstream-Status: Submitted [linux-btrfs@vger.kernel.org]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- Makefile.in | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index 1f4002e..16eeaf9 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -236,8 +236,7 @@ $(libs_static): $(libbtrfs_objects)
- 
- $(lib_links):
- 	@echo "    [LN]     $@"
--	$(Q)$(LN_S) -f libbtrfs.so.0.1 libbtrfs.so.0
--	$(Q)$(LN_S) -f libbtrfs.so.0.1 libbtrfs.so
-+	$(Q)$(LN_S) -f libbtrfs.so.0.1 $@
- 
- # keep intermediate files from the below implicit rules around
- .PRECIOUS: $(addsuffix .o,$(progs))
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.4.bb
deleted file mode 100644
index 32e7bae..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.4.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Checksumming Copy on Write Filesystem utilities"
-DESCRIPTION = "Btrfs is a new copy on write filesystem for Linux aimed at \
-implementing advanced features while focusing on fault tolerance, repair and \
-easy administration. \
-This package contains utilities (mkfs, fsck, btrfsctl) used to work with \
-btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3."
-
-HOMEPAGE = "https://btrfs.wiki.kernel.org"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067"
-SECTION = "base"
-DEPENDS = "util-linux attr e2fsprogs lzo acl"
-RDEPENDS_${PN} = "libgcc"
-
-SRCREV = "21258fab2caeade405a15ba932d373b364aa6e8c"
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \
-           file://fix-parallel.patch \
-           file://fix-symlink-creation-multiple-times.patch \
-"
-
-inherit autotools-brokensep pkgconfig
-
-EXTRA_OECONF += "--disable-documentation"
-EXTRA_OECONF_append_libc-musl = " --disable-backtrace "
-
-
-do_configure_prepend() {
-      sh autogen.sh
-}
-
-S = "${WORKDIR}/git"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.7.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.7.1.bb
new file mode 100644
index 0000000..becf093
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.7.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Checksumming Copy on Write Filesystem utilities"
+DESCRIPTION = "Btrfs is a new copy on write filesystem for Linux aimed at \
+implementing advanced features while focusing on fault tolerance, repair and \
+easy administration. \
+This package contains utilities (mkfs, fsck, btrfsctl) used to work with \
+btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3."
+
+HOMEPAGE = "https://btrfs.wiki.kernel.org"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067"
+SECTION = "base"
+DEPENDS = "util-linux attr e2fsprogs lzo acl"
+RDEPENDS_${PN} = "libgcc"
+
+SRCREV = "6819fbcdcab63c2d95da1a2997e37be9a71ca533"
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \
+           file://fix-parallel.patch \
+"
+
+inherit autotools-brokensep pkgconfig
+
+EXTRA_OECONF += "--disable-documentation"
+EXTRA_OECONF_append_libc-musl = " --disable-backtrace "
+
+
+do_configure_prepend() {
+      sh autogen.sh
+}
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/build-compare_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/build-compare_git.bb
index 676f11d..fa9c6b4 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/build-compare_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/build-compare_git.bb
@@ -9,6 +9,12 @@
            file://Rename-rpm-check.sh-to-pkg-diff.sh.patch;striplevel=1 \
            file://Ignore-DWARF-sections.patch;striplevel=1 \
            file://0001-Add-support-for-deb-and-ipk-packaging.patch \
+           file://functions.sh-remove-space-at-head.patch \
+           file://functions.sh-run-rpm-once-to-make-it-faster.patch \
+           file://pkg-diff.sh-check-for-fifo-named-pipe.patch \
+           file://pkg-diff.sh-check_single_file-return-at-once-when-sa.patch \
+           file://pkg-diff.sh-remove-space-in-the-end-for-ftype.patch \
+           file://functions.sh-improve-deb-and-ipk-checking.patch \
            "
 
 SRCREV = "c5352c054c6ef15735da31b76d6d88620f4aff0a"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/0001-Add-support-for-deb-and-ipk-packaging.patch b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/0001-Add-support-for-deb-and-ipk-packaging.patch
index 5c15218..82fd816 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/0001-Add-support-for-deb-and-ipk-packaging.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/0001-Add-support-for-deb-and-ipk-packaging.patch
@@ -3,7 +3,7 @@
 Date: Tue, 1 Sep 2015 12:04:33 +0100
 Subject: [PATCH] Add support for deb and ipk packaging
 
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pull/10]
 
 Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
 ---
@@ -34,7 +34,7 @@
      return $RES
  }
 +
-+function adjust_controlfile () {
++function adjust_controlfile() {
 +    cat $1/control | sed '/^Version: /d' > $1/control.fixed
 +    mv $1/control.fixed $1/control
 +    cat $2/control | sed '/^Version: /d' > $2/control.fixed
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-improve-deb-and-ipk-checking.patch b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-improve-deb-and-ipk-checking.patch
new file mode 100644
index 0000000..05420f8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-improve-deb-and-ipk-checking.patch
@@ -0,0 +1,117 @@
+From b4eb7fde10318162bd2d02b9017ef51746752a91 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 14 Jul 2016 23:14:21 -0700
+Subject: [PATCH 4/4] functions.sh: improve deb and ipk checking
+
+* The deb and ipk's depends version string is like:
+  Depends: libc6 (>= 2.24)
+  Update trim_release_old and trim_release_new to match the bracket in
+  the end ")".
+
+* The deb's data tarball now is .tar.xz, and ipk's is .tar.gz.
+
+* Update adjust_controlfile() to make ituse trim_release_old and
+  trim_release_new.
+
+Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pull/10]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ functions.sh | 45 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 28 insertions(+), 17 deletions(-)
+
+diff --git a/functions.sh b/functions.sh
+index aa572f9..fe493ba 100755
+--- a/functions.sh
++++ b/functions.sh
+@@ -78,7 +78,7 @@ check_header()
+ function trim_release_old()
+ {
+   sed -e "
+-  /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_old_regex_l\$\)/{s,$version_release_old_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_old_regex_s,@VERSION@-@RELEASE_SHORT@,g}
++  /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_old_regex_l\$\|$version_release_old_regex_l)\)/{s,$version_release_old_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_old_regex_s,@VERSION@-@RELEASE_SHORT@,g}
+   s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_old_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
+   s/^ *//g
+   "
+@@ -86,7 +86,7 @@ function trim_release_old()
+ function trim_release_new()
+ {
+   sed -e "
+-  /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_new_regex_l\$\)/{s,$version_release_new_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_new_regex_s,@VERSION@-@RELEASE_SHORT@,g}
++  /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_new_regex_l\$\|$version_release_new_regex_l)\)/{s,$version_release_new_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_new_regex_s,@VERSION@-@RELEASE_SHORT@,g}
+   s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_new_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
+   s/^ *//g
+   "
+@@ -133,8 +133,8 @@ function unpackage()
+             ar x $file
+             tar xf control.tar.gz
+             rm control.tar.gz
+-            tar xf data.tar.gz
+-            rm data.tar.gz
++            tar xf data.tar.[xg]z
++            rm data.tar.[xg]z
+             ;;
+     esac
+     popd 1>/dev/null
+@@ -164,6 +164,22 @@ function get_value()
+     sed -n -e "/^___${1}___/,/^___${1}___/p" $2 | sed -e "/^___${1}___/d"
+ }
+ 
++# Set version_release_old_regex_s, version_release_old_regex_l and
++# name_ver_rel_old_regex_l, also the new ones.
++function set_regex() {
++    # Remember to quote the . which is in release
++    # Short version without B_CN
++    version_release_old_regex_s=${version_release_old%.*}
++    version_release_old_regex_s=${version_release_old_regex_s//./\\.}
++    version_release_new_regex_s=${version_release_new%.*}
++    version_release_new_regex_s=${version_release_new_regex_s//./\\.}
++    # Long version with B_CNT
++    version_release_old_regex_l=${version_release_old//./\\.}
++    version_release_new_regex_l=${version_release_new//./\\.}
++    name_ver_rel_old_regex_l=${name_ver_rel_old//./\\.}
++    name_ver_rel_new_regex_l=${name_ver_rel_new//./\\.}
++}
++
+ # Compare just the rpm meta data of two rpms
+ # Returns:
+ # 0 in case of same content
+@@ -194,17 +210,7 @@ function cmp_spec ()
+     version_release_old="$(get_value QF_VER_REL $spec_old)"
+     name_ver_rel_old="$(get_value QF_NAME_VER_REL $spec_old)"
+ 
+-    # Remember to quote the . which is in release
+-    # Short version without B_CN
+-    version_release_old_regex_s=${version_release_old%.*}
+-    version_release_old_regex_s=${version_release_old_regex_s//./\\.}
+-    version_release_new_regex_s=${version_release_new%.*}
+-    version_release_new_regex_s=${version_release_new_regex_s//./\\.}
+-    # Long version with B_CNT
+-    version_release_old_regex_l=${version_release_old//./\\.}
+-    version_release_new_regex_l=${version_release_new//./\\.}
+-    name_ver_rel_old_regex_l=${name_ver_rel_old//./\\.}
+-    name_ver_rel_new_regex_l=${name_ver_rel_new//./\\.}
++    set_regex
+ 
+     # Check the whole spec file at first, return 0 immediately if the
+     # are the same.
+@@ -285,9 +291,14 @@ function cmp_spec ()
+ }
+ 
+ function adjust_controlfile() {
+-    cat $1/control | sed '/^Version: /d' > $1/control.fixed
++    version_release_old="`sed -ne 's/^Version: \(.*\)/\1/p' $1/control`"
++    name_ver_rel_old="`sed -n -e 's/^Package: \(.*\)/\1/p' $1/control`-`sed -n -e 's/^Version: \(.*\)/\1/p' $1/control`"
++    version_release_new="`sed -ne 's/^Version: \(.*\)/\1/p' $2/control`"
++    name_ver_rel_new="`sed -n -e 's/^Package: \(.*\)/\1/p' $2/control`-`sed -n -e 's/^Version: \(.*\)/\1/p' $2/control`"
++    set_regex
++    cat $1/control | trim_release_old > $1/control.fixed
+     mv $1/control.fixed $1/control
+-    cat $2/control | sed '/^Version: /d' > $2/control.fixed
++    cat $2/control | trim_release_new > $2/control.fixed
+     mv $2/control.fixed $2/control
+ }
+ 
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-remove-space-at-head.patch b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-remove-space-at-head.patch
new file mode 100644
index 0000000..02e96ba
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-remove-space-at-head.patch
@@ -0,0 +1,41 @@
+From 402a821e604f280e62c34bf4d40c6d1b4c6c892d Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Mon, 4 Jul 2016 20:11:33 -0700
+Subject: [PATCH] functions.sh: remove space at head
+
+The command like:
+rpm -qp --nodigest --nosignature --qf '<foo> [%{REQUIRENAME}\n]\n'
+                                            ^^space
+
+The space will be printed, and will impact the check result, so remove it.
+
+Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pull/9]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ functions.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/functions.sh b/functions.sh
+index 85c9003..b1069d2 100644
+--- a/functions.sh
++++ b/functions.sh
+@@ -26,6 +26,7 @@ function trim_release_old()
+   sed -e "
+   /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_old_regex_l\$\)/{s,$version_release_old_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_old_regex_s,@VERSION@-@RELEASE_SHORT@,g}
+   s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_old_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
++  s/^ *//g
+   "
+ }
+ function trim_release_new()
+@@ -33,6 +34,7 @@ function trim_release_new()
+   sed -e "
+   /\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_new_regex_l\$\)/{s,$version_release_new_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_new_regex_s,@VERSION@-@RELEASE_SHORT@,g}
+   s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_new_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
++  s/^ *//g
+   "
+ }
+ # Get single directory or filename with long or short release string
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-run-rpm-once-to-make-it-faster.patch b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-run-rpm-once-to-make-it-faster.patch
new file mode 100644
index 0000000..f5b99d9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/functions.sh-run-rpm-once-to-make-it-faster.patch
@@ -0,0 +1,361 @@
+From f34d632c427b1e1570ef9136454fc01d8c9f10a6 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 7 Jul 2016 19:34:09 -0700
+Subject: [PATCH] functions.sh: run rpm once to make it faster
+
+The rpm tool is a heavy process, it ran 16 (or 17 for kernel)
+"rpm -qp" times when the pkgs are identical, now we only run
+"rpm -qp --qf <all we need>" twice (one is for old pkg, and one is for
+new), save the results to spec_old and spec_new, then use sed command to
+get what we need later, this can make it 75% faster when the pkgs are
+identical. Here is the rough data on my host Ubuntu 14.04.4, 32 cores
+CPU and 128G mem:
+* When the pkgs are identical:
+  - Before the patch: 1s
+  - After the patch: 0.26s
+  I compare the whole spec firstly, and return 0 if they are the same,
+  or go on checking one by one if not, without this, it would be 0.46s,
+  the gain is great when there are lot of packages, usually, we have
+  more than 10,000 rpms to compare.
+
+* When the pkgs are different:
+  That depends on where is the different, if the different is at the
+  comparing rpmtags stage:
+  - Before the patch: 0.26s
+  - After the patch: 0.29s
+  Increased 0.03s, but if the different is happend later than comparing
+  rpmtags, it will save time.
+
+Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pull/9]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ functions.sh | 245 ++++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 132 insertions(+), 113 deletions(-)
+ mode change 100644 => 100755 functions.sh
+
+diff --git a/functions.sh b/functions.sh
+old mode 100644
+new mode 100755
+index b1069d2..aa572f9
+--- a/functions.sh
++++ b/functions.sh
+@@ -10,9 +10,63 @@
+ 
+ RPM="rpm -qp --nodigest --nosignature"
+ 
+-check_header() 
++# Name, Version, Release
++QF_NAME="%{NAME}"
++QF_VER_REL="%{VERSION}-%{RELEASE}"
++QF_NAME_VER_REL="%{NAME}-%{VERSION}-%{RELEASE}"
++
++# provides destroy this because at least the self-provide includes the
++# -buildnumber :-(
++QF_PROVIDES="[%{PROVIDENAME} %{PROVIDEFLAGS} %{PROVIDEVERSION}\\n]\\n"
++QF_PROVIDES="$QF_PROVIDES [%{REQUIRENAME} %{REQUIREFLAGS} %{REQUIREVERSION}\\n]\\n"
++QF_PROVIDES="$QF_PROVIDES [%{CONFLICTNAME} %{CONFLICTFLAGS} %{CONFLICTVERSION}\\n]\\n"
++QF_PROVIDES="$QF_PROVIDES [%{OBSOLETENAME} %{OBSOLETEFLAGS} %{OBSOLETEVERSION}\\n]\\n"
++
++# don't look at RELEASE, it contains our build number
++QF_TAGS="%{NAME} %{VERSION} %{EPOCH}\\n"
++QF_TAGS="$QF_TAGS %{SUMMARY}\\n%{DESCRIPTION}\\n"
++# the DISTURL tag can be used as checkin ID
++QF_TAGS="$QF_TAGS %{VENDOR} %{DISTRIBUTION} %{DISTURL}"
++QF_TAGS="$QF_TAGS %{LICENSE} %{LICENSE}\\n"
++QF_TAGS="$QF_TAGS %{GROUP} %{URL} %{EXCLUDEARCH} %{EXCLUDEOS} %{EXCLUSIVEARCH}\\n"
++QF_TAGS="$QF_TAGS %{EXCLUSIVEOS} %{RPMVERSION} %{PLATFORM}\\n"
++QF_TAGS="$QF_TAGS %{PAYLOADFORMAT} %{PAYLOADCOMPRESSOR} %{PAYLOADFLAGS}\\n"
++
++# XXX We also need to check the existence (but not the content (!))
++# of SIGGPG (and perhaps the other SIG*)
++# XXX We don't look at triggers
++QF_TAGS="$QF_TAGS [%{VERIFYSCRIPTPROG} %{VERIFYSCRIPT}]\\n"
++# Only the first ChangeLog entry; should be enough
++QF_TAGS="$QF_TAGS %{CHANGELOGTIME} %{CHANGELOGNAME} %{CHANGELOGTEXT}\\n"
++
++# scripts, might contain release number
++QF_SCRIPT="[%{PREINPROG} %{PREIN}\\n]\\n[%{POSTINPROG} %{POSTIN}\\n]\\n[%{PREUNPROG} %{PREUN}\\n]\\n[%{POSTUNPROG} %{POSTUN}\\n]\\n"
++
++# Now the files. We leave out mtime and size.  For normal files
++# the size will influence the MD5 anyway.  For directories the sizes can
++# differ, depending on which file system the package was built.  To not
++# have to filter out directories we simply ignore all sizes.
++# Also leave out FILEDEVICES, FILEINODES (depends on the build host),
++# FILECOLORS, FILECLASS (normally useful but file output contains mtimes),
++# FILEDEPENDSX and FILEDEPENDSN.
++# Also FILELANGS (or?)
++QF_FILELIST="[%{FILENAMES} %{FILEFLAGS} %{FILESTATES} %{FILEMODES:octal} %{FILEUSERNAME} %{FILEGROUPNAME} %{FILERDEVS} %{FILEVERIFYFLAGS} %{FILELINKTOS}\n]\\n"
++# ??? what to do with FILEPROVIDE and FILEREQUIRE?
++
++QF_CHECKSUM="[%{FILENAMES} %{FILEMD5S} %{FILEFLAGS}\n]\\n"
++
++QF_ALL="\n___QF_NAME___\n${QF_NAME}\n___QF_NAME___\n"
++QF_ALL="$QF_ALL\n___QF_TAGS___\n${QF_TAGS}\n___QF_TAGS___\n"
++QF_ALL="$QF_ALL\n___QF_VER_REL___\n${QF_VER_REL}\n___QF_VER_REL___\n"
++QF_ALL="$QF_ALL\n___QF_NAME_VER_REL___\n${QF_NAME_VER_REL}\n___QF_NAME_VER_REL___\n"
++QF_ALL="$QF_ALL\n___QF_PROVIDES___\n${QF_PROVIDES}\n___QF_PROVIDES___\n"
++QF_ALL="$QF_ALL\n___QF_SCRIPT___\n${QF_SCRIPT}\n___QF_SCRIPT___\n"
++QF_ALL="$QF_ALL\n___QF_FILELIST___\n${QF_FILELIST}\n___QF_FILELIST___\n"
++QF_ALL="$QF_ALL\n___QF_CHECKSUM___\n${QF_CHECKSUM}\n___QF_CHECKSUM___\n"
++
++check_header()
+ {
+-   $RPM --qf "$QF" "$1"
++   $RPM --qf "$1" "$2"
+ }
+ 
+ # Trim version-release string:
+@@ -47,18 +101,6 @@ function grep_release_new()
+   grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src)/[^/]+(${version_release_new_regex_l}(\$|[^/]+\$)|${version_release_new_regex_s}(\$|[^/]+\$))"
+ }
+ 
+-function check_provides()
+-{
+-  local pkg=$1
+-  # provides destroy this because at least the self-provide includes the
+-  # -buildnumber :-(
+-  QF="[%{PROVIDENAME} %{PROVIDEFLAGS} %{PROVIDEVERSION}\\n]\\n"
+-  QF="$QF [%{REQUIRENAME} %{REQUIREFLAGS} %{REQUIREVERSION}\\n]\\n"
+-  QF="$QF [%{CONFLICTNAME} %{CONFLICTFLAGS} %{CONFLICTVERSION}\\n]\\n"
+-  QF="$QF [%{OBSOLETENAME} %{OBSOLETEFLAGS} %{OBSOLETEVERSION}\\n]\\n"
+-  check_header "$pkg"
+-}
+-
+ #usage unpackage <file> $dir
+ # Unpack files in directory $dir
+ # like /usr/bin/unpackage - just for one file and with no options
+@@ -98,6 +140,30 @@ function unpackage()
+     popd 1>/dev/null
+ }
+ 
++# Run diff command on the files
++# $1: printed info
++# $2: file1
++# $3: file2
++function comp_file()
++{
++    echo "comparing $1"
++    if ! diff -au $2 $3; then
++      if test -z "$check_all"; then
++        rm $2 $3 $spec_old $spec_new
++        return 1
++      fi
++    fi
++    return 0
++}
++
++# Get var's value from specfile.
++# $1: var name
++# $2: specfile
++function get_value()
++{
++    sed -n -e "/^___${1}___/,/^___${1}___/p" $2 | sed -e "/^___${1}___/d"
++}
++
+ # Compare just the rpm meta data of two rpms
+ # Returns:
+ # 0 in case of same content
+@@ -107,56 +173,29 @@ function unpackage()
+ function cmp_spec ()
+ {
+     local RES
+-    local file1 file2
++    local file_old file_new
+     local f
+     local sh=$1
+     local oldrpm=$2
+     local newrpm=$3
+ 
+-    QF="%{NAME}"
+-    
+-    # don't look at RELEASE, it contains our build number
+-    QF="$QF %{VERSION} %{EPOCH}\\n"
+-    QF="$QF %{SUMMARY}\\n%{DESCRIPTION}\\n"
+-    QF="$QF %{VENDOR} %{DISTRIBUTION} %{DISTURL}"
+-    QF="$QF %{LICENSE} %{LICENSE}\\n"
+-    QF="$QF %{GROUP} %{URL} %{EXCLUDEARCH} %{EXCLUDEOS} %{EXCLUSIVEARCH}\\n"
+-    QF="$QF %{EXCLUSIVEOS} %{RPMVERSION} %{PLATFORM}\\n"
+-    QF="$QF %{PAYLOADFORMAT} %{PAYLOADCOMPRESSOR} %{PAYLOADFLAGS}\\n"
+-    
+- 
+-    # XXX We also need to check the existence (but not the content (!))
+-    # of SIGGPG (and perhaps the other SIG*)
+-    
+-    # XXX We don't look at triggers
+-    
+-    QF="$QF [%{VERIFYSCRIPTPROG} %{VERIFYSCRIPT}]\\n"
+-    
+-    # Only the first ChangeLog entry; should be enough
+-    QF="$QF %{CHANGELOGTIME} %{CHANGELOGNAME} %{CHANGELOGTEXT}\\n"
+-    
+-    file1=`mktemp`
+-    file2=`mktemp`
+-    
+-    check_header $oldrpm > $file1
+-    check_header $newrpm > $file2
+-    
+-    # the DISTURL tag can be used as checkin ID
+-    #echo "$QF"
+-    echo "comparing rpmtags"
+-    if ! diff -au $file1 $file2; then
+-      if test -z "$check_all"; then
+-        rm $file1 $file2
+-        return 1
+-      fi
+-    fi
+-    
++    file_old=`mktemp`
++    file_new=`mktemp`
++    spec_old=`mktemp`
++    spec_new=`mktemp`
++
++    check_header "$QF_ALL" $oldrpm > $spec_old
++    check_header "$QF_ALL" $newrpm > $spec_new
++
++    name_new="$(get_value QF_NAME $spec_new)"
++    version_release_new="$(get_value QF_VER_REL $spec_new)"
++    name_ver_rel_new="$(get_value QF_NAME_VER_REL $spec_new)"
++
++    version_release_old="$(get_value QF_VER_REL $spec_old)"
++    name_ver_rel_old="$(get_value QF_NAME_VER_REL $spec_old)"
++
+     # Remember to quote the . which is in release
+-    version_release_old=$($RPM --qf "%{VERSION}-%{RELEASE}" "$oldrpm")
+-    version_release_new=$($RPM --qf "%{VERSION}-%{RELEASE}" "$newrpm")
+-    name_ver_rel_old=$($RPM --qf "%{NAME}-%{VERSION}-%{RELEASE}" "$oldrpm")
+-    name_ver_rel_new=$($RPM --qf "%{NAME}-%{VERSION}-%{RELEASE}" "$newrpm")
+-    # Short version without B_CNT
++    # Short version without B_CN
+     version_release_old_regex_s=${version_release_old%.*}
+     version_release_old_regex_s=${version_release_old_regex_s//./\\.}
+     version_release_new_regex_s=${version_release_new%.*}
+@@ -166,10 +205,27 @@ function cmp_spec ()
+     version_release_new_regex_l=${version_release_new//./\\.}
+     name_ver_rel_old_regex_l=${name_ver_rel_old//./\\.}
+     name_ver_rel_new_regex_l=${name_ver_rel_new//./\\.}
++
++    # Check the whole spec file at first, return 0 immediately if the
++    # are the same.
++    cat $spec_old | trim_release_old > $file_old
++    cat $spec_new | trim_release_new > $file_new
++    echo "comparing the whole specfile"
++    if diff -au $spec_old $spec_new; then
++      if test -z "$check_all"; then
++        rm $file_old $file_new $spec_old $spec_new
++        return 0
++      fi
++    fi
++
++    get_value QF_TAGS $spec_old > $file_old
++    get_value QF_TAGS $spec_new > $file_new
++    comp_file rpmtags $file_old $file_new || return 1
++
+     # This might happen when?!
+     echo "comparing RELEASE"
+     if [ "${version_release_old%.*}" != "${version_release_new%.*}" ] ; then
+-      case $($RPM --qf '%{NAME}' "$newrpm") in
++      case $name_new in
+         kernel-*)
+           # Make sure all kernel packages have the same %RELEASE
+           echo "release prefix mismatch"
+@@ -181,71 +237,34 @@ function cmp_spec ()
+         *) ;;
+       esac
+     fi
+-    
+-    check_provides $oldrpm | trim_release_old | sort > $file1
+-    check_provides $newrpm | trim_release_new | sort > $file2
+-    
+-    echo "comparing PROVIDES"
+-    if ! diff -au $file1 $file2; then
+-      if test -z "$check_all"; then
+-        rm $file1 $file2
+-        return 1
+-      fi
+-    fi
+ 
+-    # scripts, might contain release number
+-    QF="[%{PREINPROG} %{PREIN}\\n]\\n[%{POSTINPROG} %{POSTIN}\\n]\\n[%{PREUNPROG} %{PREUN}\\n]\\n[%{POSTUNPROG} %{POSTUN}\\n]\\n"
+-    check_header $oldrpm | trim_release_old > $file1
+-    check_header $newrpm | trim_release_new > $file2
++    get_value QF_PROVIDES $spec_old | trim_release_old | sort > $file_old
++    get_value QF_PROVIDES $spec_new | trim_release_new | sort > $file_new
++    comp_file PROVIDES $file_old $file_new || return 1
++
++    get_value QF_SCRIPT $spec_old | trim_release_old > $file_old
++    get_value QF_SCRIPT $spec_new | trim_release_new > $file_new
++    comp_file scripts $file_old $file_new || return 1
+ 
+-    echo "comparing scripts"
+-    if ! diff -au $file1 $file2; then
+-      if test -z "$check_all"; then
+-        rm $file1 $file2
+-        return 1
+-      fi
+-    fi
+-    
+     # First check the file attributes and later the md5s
+-    
+-    # Now the files.  We leave out mtime and size.  For normal files
+-    # the size will influence the MD5 anyway.  For directories the sizes can
+-    # differ, depending on which file system the package was built.  To not
+-    # have to filter out directories we simply ignore all sizes.
+-    # Also leave out FILEDEVICES, FILEINODES (depends on the build host),
+-    # FILECOLORS, FILECLASS (normally useful but file output contains mtimes), 
+-    # FILEDEPENDSX and FILEDEPENDSN. 
+-    # Also FILELANGS (or?)
+-    QF="[%{FILENAMES} %{FILEFLAGS} %{FILESTATES} %{FILEMODES:octal} %{FILEUSERNAME} %{FILEGROUPNAME} %{FILERDEVS} %{FILEVERIFYFLAGS} %{FILELINKTOS}\n]\\n"
+-    # ??? what to do with FILEPROVIDE and FILEREQUIRE?
+-
+-    check_header $oldrpm | trim_release_old > $file1
+-    check_header $newrpm | trim_release_new > $file2
+-    
+-    echo "comparing filelist"
+-    if ! diff -au $file1 $file2; then
+-      if test -z "$check_all"; then
+-        rm $file1 $file2
+-        return 1
+-      fi
+-    fi
+-    
++    get_value QF_FILELIST $spec_old | trim_release_old > $file_old
++    get_value QF_FILELIST $spec_new | trim_release_new > $file_new
++    comp_file filelist $file_old $file_new || return 1
++
+     # now the md5sums. if they are different, we check more detailed
+     # if there are different filenames, we will already have aborted before
+     # file flag 64 means "ghost", filter those out.
+-    QF="[%{FILENAMES} %{FILEMD5S} %{FILEFLAGS}\n]\\n"
+-    check_header $oldrpm |grep -v " 64$"| trim_release_old > $file1
+-    check_header $newrpm |grep -v " 64$"| trim_release_new > $file2
+-    
++    get_value QF_CHECKSUM $spec_old | grep -v " 64$" | trim_release_old > $file_old
++    get_value QF_CHECKSUM $spec_new | grep -v " 64$" | trim_release_new > $file_new
+     RES=2
+     # done if the same
+     echo "comparing file checksum"
+-    if cmp -s $file1 $file2; then
++    if cmp -s $file_old $file_new; then
+       RES=0
+     fi
+-    
++
+     # Get only files with different MD5sums
+-    files=`diff -U0 $file1 $file2 | fgrep -v +++ | grep ^+ | cut -b2- | awk '{print $1}'`
++    files=`diff -U0 $file_old $file_new | fgrep -v +++ | grep ^+ | cut -b2- | awk '{print $1}'`
+ 
+     if test -f "$sh"; then
+       echo "creating rename script"
+@@ -261,7 +280,7 @@ function cmp_spec ()
+       done >> "${sh}"
+     fi
+     #
+-    rm $file1 $file2
++    rm $file_old $file_new
+     return $RES
+ }
+ 
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-check-for-fifo-named-pipe.patch b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-check-for-fifo-named-pipe.patch
new file mode 100644
index 0000000..e4f0c54
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-check-for-fifo-named-pipe.patch
@@ -0,0 +1,35 @@
+From a78fe4f792a9ac9f4d364e836c8855f48561d6f2 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 14 Jul 2016 19:52:18 -0700
+Subject: [PATCH 3/4] pkg-diff.sh: check for fifo(named pipe)
+
+Otherwise "cmp -s fifo1 fifo2" will wait for inputing forever.
+
+Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pull/10]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ pkg-diff.sh | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/pkg-diff.sh b/pkg-diff.sh
+index 5dd3a38..1f353aa 100644
+--- a/pkg-diff.sh
++++ b/pkg-diff.sh
+@@ -735,6 +735,13 @@ check_single_file()
+          return 1
+        fi
+        ;;
++     fifo*pipe*)
++       ftype_new="`/usr/bin/file new/$file | sed -e 's@^[^:]\+:[[:blank:]]*@@' -e 's@[[:blank:]]*$@@'`"
++       if [ "$ftype_new" = "$ftype"  ]; then
++         return 0
++       fi
++       return 1
++       ;;
+      *)
+        if ! diff_two_files; then
+            return 1
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-check_single_file-return-at-once-when-sa.patch b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-check_single_file-return-at-once-when-sa.patch
new file mode 100644
index 0000000..b42af25
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-check_single_file-return-at-once-when-sa.patch
@@ -0,0 +1,37 @@
+From 657983ef9ca8f8354172682e17408c4f6b5bc667 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 14 Jul 2016 19:46:08 -0700
+Subject: [PATCH 1/4] pkg-diff.sh: check_single_file(): return at once when
+ same
+
+If the two files are the same, return at once, this can save a lot of
+time when there are archives inside archives.
+
+Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pull/10]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ pkg-diff.sh | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/pkg-diff.sh b/pkg-diff.sh
+index 3cf10aa..402d4a4 100644
+--- a/pkg-diff.sh
++++ b/pkg-diff.sh
+@@ -293,6 +293,13 @@ check_compressed_file()
+ check_single_file()
+ {
+   local file="$1"
++
++  # If the two files are the same, return at once.
++  if [ -f old/$file -a -f new/$file ]; then
++    if cmp -s old/$file new/$file; then
++      return 0
++    fi
++  fi
+   case $file in
+     *.spec)
+        sed -i -e "s,Release:.*$release1,Release: @RELEASE@," old/$file
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-remove-space-in-the-end-for-ftype.patch b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-remove-space-in-the-end-for-ftype.patch
new file mode 100644
index 0000000..8077172
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/build-compare/files/pkg-diff.sh-remove-space-in-the-end-for-ftype.patch
@@ -0,0 +1,32 @@
+From 836a6783df9c582a834fca239f227063a5687715 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 14 Jul 2016 19:49:12 -0700
+Subject: [PATCH 2/4] pkg-diff.sh: remove space in the end for ftype
+
+Versions of file like 5.14 returns a " " in the end, for example:
+ftype="directory ", but we need ftype="directory", remove the space to
+fix the problem.
+
+Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pull/10]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ pkg-diff.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pkg-diff.sh b/pkg-diff.sh
+index 402d4a4..5dd3a38 100644
+--- a/pkg-diff.sh
++++ b/pkg-diff.sh
+@@ -633,7 +633,7 @@ check_single_file()
+       ;;
+   esac
+ 
+-  ftype=`/usr/bin/file old/$file | sed 's@^[^:]\+:[[:blank:]]*@@'`
++  ftype=`/usr/bin/file old/$file | sed -e 's@^[^:]\+:[[:blank:]]*@@' -e 's@[[:blank:]]*$@@'`
+   case $ftype in
+      PE32\ executable*Mono\/\.Net\ assembly*)
+        echo "PE32 Mono/.Net assembly: $file"
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ccache/ccache_3.2.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/ccache/ccache_3.2.4.bb
deleted file mode 100644
index fd45e41..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/ccache/ccache_3.2.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require ccache.inc
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b3c337e7664559a789d9f7a93e5283c1"
-
-SRCREV = "2254797f1c5cfb83c4272da7b138f7f47218eb7d"
-
-SRC_URI += " \
-            file://0002-dev.mk.in-fix-file-name-too-long.patch \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ccache/ccache_3.2.5.bb b/import-layers/yocto-poky/meta/recipes-devtools/ccache/ccache_3.2.5.bb
new file mode 100644
index 0000000..afd1b0e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/ccache/ccache_3.2.5.bb
@@ -0,0 +1,11 @@
+require ccache.inc
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b8a4fa173ed91c1a5204ea4f9c9eadc3"
+
+SRCREV = "424d3ae1fb73444c6c38bf189f8fc048f66d6499"
+
+SRC_URI += " \
+            file://0002-dev.mk.in-fix-file-name-too-long.patch \
+            file://Revert-Create-man-page-in-the-make-install-from-git-.patch \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ccache/files/Revert-Create-man-page-in-the-make-install-from-git-.patch b/import-layers/yocto-poky/meta/recipes-devtools/ccache/files/Revert-Create-man-page-in-the-make-install-from-git-.patch
new file mode 100644
index 0000000..f0208b9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/ccache/files/Revert-Create-man-page-in-the-make-install-from-git-.patch
@@ -0,0 +1,33 @@
+From 94fabcdda5c7e54ccdbc1f0aeccb26ce30e61226 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Mon, 18 Jul 2016 19:53:00 -0700
+Subject: [PATCH] Revert "Create man page in the make-install-from-git-repo
+ case"
+
+This reverts commit b86784902d28defd5e475c8922de594787df4541.
+
+We dont' have asciidoc, so revert it.
+
+Upstream-Status: Inappropriate [OE-Core specific]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index d474f2a..c6cdc04 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -76,7 +76,7 @@ ccache$(EXEEXT): $(ccache_objs) $(extra_libs)
+ 	$(CC) $(all_cflags) -o $@ $(ccache_objs) $(LDFLAGS) $(extra_libs) $(LIBS)
+ 
+ .PHONY: install
+-install: all $(srcdir)/ccache.1
++install: all
+ 	$(installcmd) -d $(DESTDIR)$(bindir)
+ 	$(installcmd) -m 755 ccache$(EXEEXT) $(DESTDIR)$(bindir)
+ 	$(installcmd) -d $(DESTDIR)$(mandir)/man1
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake-native_3.4.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake-native_3.4.3.bb
deleted file mode 100644
index cb4e749..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake-native_3.4.3.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require cmake.inc
-inherit native
-
-# Using cmake's internal libarchive, so some dependencies are needed
-DEPENDS += "bzip2-native zlib-native"
-
-SRC_URI += "\
-    file://cmlibarchive-disable-ext2fs.patch \
-"
-
-# Disable ccmake since we don't depend on ncurses
-CMAKE_EXTRACONF = "\
-    -DBUILD_CursesDialog=0 \
-    -DENABLE_ACL=0 -DHAVE_ACL_LIBACL_H=0 \
-    -DHAVE_SYS_ACL_H=0 \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake-native_3.6.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake-native_3.6.1.bb
new file mode 100644
index 0000000..aec0d64d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake-native_3.6.1.bb
@@ -0,0 +1,36 @@
+require cmake.inc
+inherit native
+
+DEPENDS += "bzip2-replacement-native expat-native xz-native zlib-native curl-native"
+
+SRC_URI += "\
+    file://cmlibarchive-disable-ext2fs.patch \
+"
+
+B = "${WORKDIR}/build"
+do_configure[cleandirs] = "${B}"
+
+# Disable ccmake since we don't depend on ncurses
+CMAKE_EXTRACONF = "\
+    -DCMAKE_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE} \
+    -DBUILD_CursesDialog=0 \
+    -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
+    -DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=0 \
+    -DCMAKE_USE_SYSTEM_LIBRARY_LIBARCHIVE=0 \
+    -DENABLE_ACL=0 -DHAVE_ACL_LIBACL_H=0 \
+    -DHAVE_SYS_ACL_H=0 \
+"
+
+do_configure () {
+	${S}/configure --verbose --prefix=${prefix} -- ${CMAKE_EXTRACONF}
+}
+
+do_compile() {
+	oe_runmake
+}
+
+do_install() {
+	oe_runmake 'DESTDIR=${D}' install
+}
+
+do_compile[progress] = "percent"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake.inc b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake.inc
index 968d003..4fcb0b1 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake.inc
@@ -6,24 +6,21 @@
 BUGTRACKER = "http://public.kitware.com/Bug/my_view_page.php"
 SECTION = "console/utils"
 LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://Copyright.txt;md5=3ba5a6c34481652ce573e5c4e1d707e4 \
+LIC_FILES_CHKSUM = "file://Copyright.txt;md5=052f86c15bbde68af55c7f7b340ab639 \
                     file://Source/cmake.h;beginline=1;endline=10;md5=341736dae83c9e344b53eeb1bc7d7bc2"
 
-CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV',1).split('.')[0:2])}"
+CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV', True).split('.')[0:2])}"
 
 SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \
            file://support-oe-qt4-tools-names.patch \
            file://qt4-fail-silent.patch \
-           file://0001-Add-NIOS2-CPU-support.patch \
            "
 
-SRC_URI[md5sum] = "4cb3ff35b2472aae70f542116d616e63"
-SRC_URI[sha256sum] = "b73f8c1029611df7ed81796bf5ca8ba0ef41c6761132340c73ffe42704f980fa"
+SRC_URI[md5sum] = "d6dd661380adacdb12f41b926ec99545"
+SRC_URI[sha256sum] = "28ee98ec40427d41a45673847db7a905b59ce9243bb866eaf59dce0f58aaef11"
 
 UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar"
 
-inherit autotools
-
 # Ugly hack to work around undefined OE_QMAKE_PATH_EXTERNAL_HOST_BINS variable
 # and possibly missing qmake binary (qtbase-native can be removed from sysroot
 # e.g. in order to upgrade it, even when there is target qtbase)
@@ -46,10 +43,3 @@
 	sed -i 's/^  find_package(Qt5Widgets REQUIRED)/#  find_package(Qt5Widgets REQUIRED)/g' ${S}/Tests/QtAutogen/CMakeLists.txt
 	sed -i 's/^  find_package(Qt5Core REQUIRED)/#  find_package(Qt5Core REQUIRED)/g' ${S}/Tests/QtAutogen/autorcc_depends/CMakeLists.txt
 }
-
-# Extra flags to pass to cmake invoked by bootstrap
-CMAKE_EXTRACONF = ""
-
-do_configure () {
-	${S}/configure --prefix=${prefix} -- ${CMAKE_EXTRACONF}
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake/0001-Add-NIOS2-CPU-support.patch b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake/0001-Add-NIOS2-CPU-support.patch
deleted file mode 100644
index 6e0ab9f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake/0001-Add-NIOS2-CPU-support.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 3f8c3d3011ea192da2c761560b615f55763715ef Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Thu, 26 Nov 2015 21:31:04 +0100
-Subject: [PATCH] Add NIOS2 CPU support
-
-Add necessary bits to support the NIOS2 little-endian CPU.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Cc: Ley Foon Tan <lftan@altera.com>
-Cc: Thomas Chou <thomas@wytron.com.tw>
-Cc: Walter Goossens <waltergoossens@home.nl>
-Upstream-Status: Submitted
----
- Source/kwsys/CPU.h.in    | 4 ++++
- Utilities/KWIML/ABI.h.in | 4 ++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/Source/kwsys/CPU.h.in b/Source/kwsys/CPU.h.in
-index 884d71a..66ffbb1 100644
---- a/Source/kwsys/CPU.h.in
-+++ b/Source/kwsys/CPU.h.in
-@@ -88,6 +88,10 @@
- #elif defined(__mips) || defined(__mips__) || defined(__MIPS__)
- # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
- 
-+/* NIOS2 */
-+#elif defined(__NIOS2__) || defined(__NIOS2) || defined(__nios2__)
-+# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE
-+
- /* OpenRISC 1000 */
- #elif defined(__or1k__)
- # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG
-diff --git a/Utilities/KWIML/ABI.h.in b/Utilities/KWIML/ABI.h.in
-index 6300ada..87b6e96 100644
---- a/Utilities/KWIML/ABI.h.in
-+++ b/Utilities/KWIML/ABI.h.in
-@@ -398,6 +398,10 @@ suppression macro @KWIML@_ABI_NO_VERIFY was defined.
- #elif defined(__mips) || defined(__mips__) || defined(__MIPS__)
- # define @KWIML@_ABI_ENDIAN_ID @KWIML@_ABI_ENDIAN_ID_BIG
- 
-+/* NIOS2 */
-+#elif defined(__NIOS2__) || defined(__NIOS2) || defined(__nios2__)
-+# define @KWIML@_ABI_ENDIAN_ID @KWIML@_ABI_ENDIAN_ID_LITTLE
-+
- /* OpenRISC 1000 */
- #elif defined(__or1k__)
- # define @KWIML@_ABI_ENDIAN_ID @KWIML@_ABI_ENDIAN_ID_BIG
--- 
-2.6.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
index 60014bb..6518408 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
+++ b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
@@ -3,13 +3,17 @@
 set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS}  CACHE STRING "" FORCE )
 set( CMAKE ASM_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "" FORCE )
 set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE )
+
 set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT} )
 set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
 set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
 set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
+set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
 
-string(REGEX MATCH "sysroots/([a-zA-Z0-9]+)" CMAKE_SYSTEM_PROCESSOR $ENV{SDKTARGETSYSROOT})
-string(REGEX REPLACE "sysroots/" "" CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
+# Set CMAKE_SYSTEM_PROCESSOR from the sysroot name (assuming processor-distro-os).
+if ($ENV{SDKTARGETSYSROOT} MATCHES "/sysroots/([a-zA-Z0-9_-]+)-.+-.+")
+  set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_MATCH_1})
+endif()
 
 # Include the toolchain configuration subscripts
 file( GLOB toolchain_config_files "${CMAKE_TOOLCHAIN_FILE}.d/*.cmake" )
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake_3.4.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake_3.4.3.bb
deleted file mode 100644
index 2f188f0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake_3.4.3.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-require cmake.inc
-
-inherit cmake
-
-DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
-
-SRC_URI_append_class-nativesdk = " \
-    file://OEToolchainConfig.cmake \
-    file://environment.d-cmake.sh"
-
-# Strip ${prefix} from ${docdir}, set result into docdir_stripped
-python () {
-    prefix=d.getVar("prefix", True)
-    docdir=d.getVar("docdir", True)
-
-    if not docdir.startswith(prefix):
-        raise bb.build.FuncFailed('docdir must contain prefix as its prefix')
-
-    docdir_stripped = docdir[len(prefix):]
-    if len(docdir_stripped) > 0 and docdir_stripped[0] == '/':
-        docdir_stripped = docdir_stripped[1:]
-
-    d.setVar("docdir_stripped", docdir_stripped)
-}
-
-EXTRA_OECMAKE=" \
-    -DCMAKE_DOC_DIR=${docdir_stripped}/cmake-${CMAKE_MAJOR_VERSION} \
-    -DCMAKE_USE_SYSTEM_LIBRARY_BZIP2=1 \
-    -DCMAKE_USE_SYSTEM_LIBRARY_CURL=1 \
-    -DCMAKE_USE_SYSTEM_LIBRARY_EXPAT=1 \
-    -DCMAKE_USE_SYSTEM_LIBRARY_FORM=1 \
-    -DCMAKE_USE_SYSTEM_LIBRARY_LIBARCHIVE=1 \
-    -DCMAKE_USE_SYSTEM_LIBRARY_LIBLZMA=1 \
-    -DCMAKE_USE_SYSTEM_LIBRARY_ZLIB=1 \
-    -DKWSYS_CHAR_IS_SIGNED=1 \
-    -DBUILD_CursesDialog=0 \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '-DKWSYS_LFS_WORKS=1', '-DKWSYS_LFS_DISABLE=1', d)} \
-"
-
-do_install_append_class-nativesdk() {
-    mkdir -p ${D}${datadir}/cmake
-    install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
-
-    mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
-    install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
-}
-
-FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}"
-
-FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}"
-FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake_3.6.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake_3.6.1.bb
new file mode 100644
index 0000000..850d6de
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/cmake/cmake_3.6.1.bb
@@ -0,0 +1,48 @@
+require cmake.inc
+
+inherit cmake
+
+DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
+
+SRC_URI_append_class-nativesdk = " \
+    file://OEToolchainConfig.cmake \
+    file://environment.d-cmake.sh"
+
+# Strip ${prefix} from ${docdir}, set result into docdir_stripped
+python () {
+    prefix=d.getVar("prefix", True)
+    docdir=d.getVar("docdir", True)
+
+    if not docdir.startswith(prefix):
+        bb.fatal('docdir must contain prefix as its prefix')
+
+    docdir_stripped = docdir[len(prefix):]
+    if len(docdir_stripped) > 0 and docdir_stripped[0] == '/':
+        docdir_stripped = docdir_stripped[1:]
+
+    d.setVar("docdir_stripped", docdir_stripped)
+}
+
+EXTRA_OECMAKE=" \
+    -DCMAKE_DOC_DIR=${docdir_stripped}/cmake-${CMAKE_MAJOR_VERSION} \
+    -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
+    -DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=0 \
+    -DKWSYS_CHAR_IS_SIGNED=1 \
+    -DBUILD_CursesDialog=0 \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '-DKWSYS_LFS_WORKS=1', '-DKWSYS_LFS_DISABLE=1', d)} \
+"
+
+do_install_append_class-nativesdk() {
+    mkdir -p ${D}${datadir}/cmake
+    install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
+
+    mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
+    install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
+}
+
+FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}"
+
+FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}"
+FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/cve-check-tool_5.6.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/cve-check-tool_5.6.4.bb
new file mode 100644
index 0000000..1baadea
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/cve-check-tool_5.6.4.bb
@@ -0,0 +1,54 @@
+SUMMARY = "cve-check-tool"
+DESCRIPTION = "cve-check-tool is a tool for checking known (public) CVEs.\
+The tool will identify potentially vunlnerable software packages within Linux distributions through version matching."
+HOMEPAGE = "https://github.com/ikeydoherty/cve-check-tool"
+SECTION = "Development/Tools"
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e8c1458438ead3c34974bc0be3a03ed6"
+
+SRC_URI = "https://github.com/ikeydoherty/${BPN}/releases/download/v${PV}/${BP}.tar.xz \
+           file://check-for-malloc_trim-before-using-it.patch \
+           file://0001-print-progress-in-percent-when-downloading-CVE-db.patch \
+          "
+
+SRC_URI[md5sum] = "c5f4247140fc9be3bf41491d31a34155"
+SRC_URI[sha256sum] = "b8f283be718af8d31232ac1bfc10a0378fb958aaaa49af39168f8acf501e6a5b"
+
+DEPENDS = "libcheck glib-2.0 json-glib curl libxml2 sqlite3 openssl ca-certificates"
+
+RDEPENDS_${PN} = "ca-certificates"
+
+inherit pkgconfig autotools
+
+EXTRA_OECONF = "--disable-coverage"
+CFLAGS_append = " -Wno-error=pedantic"
+
+do_populate_cve_db() {
+    if [ "${BB_NO_NETWORK}" = "1" ] ; then
+        bberror "BB_NO_NETWORK is set; Can't update cve-check-tool database, CVEs won't be checked"
+        return
+    fi
+
+    # In case we don't inherit cve-check class, use default values defined in the class.
+    cve_dir="${CVE_CHECK_DB_DIR}"
+    cve_file="${CVE_CHECK_TMP_FILE}"
+
+    [ -z "${cve_dir}" ] && cve_dir="${DL_DIR}/CVE_CHECK"
+    [ -z "${cve_file}" ] && cve_file="${TMPDIR}/cve_check"
+
+    bbdebug 2 "Updating cve-check-tool database located in $cve_dir"
+    if cve-check-update -d "$cve_dir" ; then
+        printf "CVE database was updated on %s UTC\n\n" "$(LANG=C date --utc +'%F %T')" > "$cve_file"
+    else
+        bbwarn "Error in executing cve-check-update"
+        if [ "${@'1' if bb.data.inherits_class('cve-check', d) else '0'}" -ne 0 ] ; then
+            bbwarn "Failed to update cve-check-tool database, CVEs won't be checked"
+        fi
+    fi
+}
+
+addtask populate_cve_db after do_populate_sysroot
+do_populate_cve_db[nostamp] = "1"
+do_populate_cve_db[progress] = "percent"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/files/0001-print-progress-in-percent-when-downloading-CVE-db.patch b/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/files/0001-print-progress-in-percent-when-downloading-CVE-db.patch
new file mode 100644
index 0000000..0510e3a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/files/0001-print-progress-in-percent-when-downloading-CVE-db.patch
@@ -0,0 +1,135 @@
+From e9ed26cde63f8ca7607a010a518329339f8c02d3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 26 Sep 2016 12:12:41 +0100
+Subject: [PATCH] print progress in percent when downloading CVE db
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+Signed-off-by: André Draszik <git@andred.net>
+---
+ src/library/fetch.c | 28 +++++++++++++++++++++++++++-
+ src/library/fetch.h |  3 ++-
+ src/update.c        | 16 ++++++++++++----
+ 3 files changed, 41 insertions(+), 6 deletions(-)
+
+diff --git a/src/library/fetch.c b/src/library/fetch.c
+index 06d4b30..0fe6d76 100644
+--- a/src/library/fetch.c
++++ b/src/library/fetch.c
+@@ -37,13 +37,37 @@ static size_t write_func(void *ptr, size_t size, size_t nmemb, struct fetch_t *f
+         return fwrite(ptr, size, nmemb, f->f);
+ }
+ 
+-FetchStatus fetch_uri(const char *uri, const char *target, bool verbose)
++struct percent_t {
++        unsigned int start;
++        unsigned int end;
++};
++
++static int progress_callback_new(void *ptr, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow)
++{
++        (void) ultotal;
++        (void) ulnow;
++
++        struct percent_t *percent = (struct percent_t *) ptr;
++
++        if (dltotal && percent && percent->end >= percent->start) {
++                unsigned int diff = percent->end - percent->start;
++                if (diff) {
++                        fprintf(stderr,"completed: "CURL_FORMAT_OFF_T"%%\r", percent->start + (diff * dlnow / dltotal));
++                }
++        }
++
++        return 0;
++}
++
++FetchStatus fetch_uri(const char *uri, const char *target, bool verbose,
++                      unsigned int start_percent, unsigned int end_percent)
+ {
+         FetchStatus ret = FETCH_STATUS_FAIL;
+         CURLcode res;
+         struct stat st;
+         CURL *curl = NULL;
+         struct fetch_t *f = NULL;
++        struct percent_t percent = { .start = start_percent, .end = end_percent };
+ 
+         curl = curl_easy_init();
+         if (!curl) {
+@@ -67,6 +91,8 @@ FetchStatus fetch_uri(const char *uri, const char *target, bool verbose)
+         }
+         if (verbose) {
+                 (void)curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
++                (void)curl_easy_setopt(curl, CURLOPT_XFERINFODATA, &percent);
++                (void)curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, progress_callback_new);
+         }
+         res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, (curl_write_callback)write_func);
+         if (res != CURLE_OK) {
+diff --git a/src/library/fetch.h b/src/library/fetch.h
+index 70c3779..4cce5d1 100644
+--- a/src/library/fetch.h
++++ b/src/library/fetch.h
+@@ -28,7 +28,8 @@ typedef enum {
+  * @param verbose Whether to be verbose
+  * @return A FetchStatus, indicating the operation taken
+  */
+-FetchStatus fetch_uri(const char *uri, const char *target, bool verbose);
++FetchStatus fetch_uri(const char *uri, const char *target, bool verbose,
++                      unsigned int this_percent, unsigned int next_percent);
+ 
+ /**
+  * Attempt to extract the given gzipped file
+diff --git a/src/update.c b/src/update.c
+index 30fbe96..eaeeefd 100644
+--- a/src/update.c
++++ b/src/update.c
+@@ -266,7 +266,8 @@ static inline void update_end(int fd, const char *update_fname, bool ok)
+ }
+ 
+ static int do_fetch_update(int year, const char *db_dir, CveDB *cve_db,
+-                           bool db_exist, bool verbose)
++                           bool db_exist, bool verbose,
++                           unsigned int this_percent, unsigned int next_percent)
+ {
+         const char nvd_uri[] = URI_PREFIX;
+         autofree(cve_string) *uri_meta = NULL;
+@@ -330,14 +331,14 @@ refetch:
+         }
+ 
+         /* Fetch NVD META file */
+-        st = fetch_uri(uri_meta->str, nvdcve_meta->str, verbose);
++        st = fetch_uri(uri_meta->str, nvdcve_meta->str, verbose, this_percent, this_percent);
+         if (st == FETCH_STATUS_FAIL) {
+                 fprintf(stderr, "Failed to fetch %s\n", uri_meta->str);
+                 return -1;
+         }
+ 
+         /* Fetch NVD XML file */
+-        st = fetch_uri(uri_data_gz->str, nvdcve_data_gz->str, verbose);
++        st = fetch_uri(uri_data_gz->str, nvdcve_data_gz->str, verbose, this_percent, next_percent);
+         switch (st) {
+         case FETCH_STATUS_FAIL:
+                 fprintf(stderr, "Failed to fetch %s\n", uri_data_gz->str);
+@@ -459,10 +460,17 @@ bool update_db(bool quiet, const char *db_file)
+         for (int i = YEAR_START; i <= year+1; i++) {
+                 int y = i > year ? -1 : i;
+                 int rc;
++                unsigned int start_percent = ((i+0 - YEAR_START) * 100) / (year+2 - YEAR_START);
++                unsigned int end_percent = ((i+1 - YEAR_START) * 100) / (year+2 - YEAR_START);
+ 
+-                rc = do_fetch_update(y, db_dir, cve_db, db_exist, !quiet);
++                if (!quiet)
++                        fprintf(stderr, "completed: %u%%\r", start_percent);
++                rc = do_fetch_update(y, db_dir, cve_db, db_exist, !quiet,
++                                     start_percent, end_percent);
+                 switch (rc) {
+                 case 0:
++                        if (!quiet)
++                                fprintf(stderr,"completed: %u%%\r", end_percent);
+                         continue;
+                 case ENOMEM:
+                         goto oom;
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/files/check-for-malloc_trim-before-using-it.patch b/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/files/check-for-malloc_trim-before-using-it.patch
new file mode 100644
index 0000000..0774ad9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/cve-check-tool/files/check-for-malloc_trim-before-using-it.patch
@@ -0,0 +1,51 @@
+From ce64633b9733e962b8d8482244301f614d8b5845 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 22 Aug 2016 22:54:24 -0700
+Subject: [PATCH] Check for malloc_trim before using it
+
+malloc_trim is gnu specific and not all libc
+implement it, threfore write a configure check
+to poke for it first and use the define to
+guard its use.
+
+Helps in compiling on musl based systems
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted [https://github.com/ikeydoherty/cve-check-tool/pull/48]
+ configure.ac | 2 ++
+ src/core.c   | 4 ++--
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d3b66ce..79c3542 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -19,6 +19,8 @@ m4_define([json_required_version], [0.16.0])
+ m4_define([openssl_required_version],[1.0.0])
+ # TODO: Set minimum sqlite
+ 
++AC_CHECK_FUNCS_ONCE(malloc_trim)
++
+ PKG_CHECK_MODULES(CVE_CHECK_TOOL,
+                  [
+                   glib-2.0 >= glib_required_version,
+diff --git a/src/core.c b/src/core.c
+index 6263031..0d5df29 100644
+--- a/src/core.c
++++ b/src/core.c
+@@ -498,9 +498,9 @@ bool cve_db_load(CveDB *self, const char *fname)
+         }
+ 
+         b = true;
+-
++#ifdef HAVE_MALLOC_TRIM
+         malloc_trim(0);
+-
++#endif
+         xmlFreeTextReader(r);
+         if (fd) {
+                 close(fd);
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.22.bb b/import-layers/yocto-poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.22.bb
deleted file mode 100644
index f899cd2..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.22.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SECTION = "console/utils"
-SUMMARY = "Command line utilities for working with *.desktop files"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
-LICENSE = "GPLv2"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "glib-2.0-native"
-
-SRC_URI = "http://freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "c6b9f9aac1ea143091178c23437e6cd0"
-SRC_URI[sha256sum] = "843532672692f98e9b2d6ae6cc8658da562dfde1606c7f33d9d227a344de56c5"
-
-inherit autotools native
-
-S = "${WORKDIR}/desktop-file-utils-${PV}"
-
-EXTRA_OECONF += "ac_cv_prog_EMACS=no"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.23.bb b/import-layers/yocto-poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.23.bb
new file mode 100644
index 0000000..54daabe
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.23.bb
@@ -0,0 +1,18 @@
+SECTION = "console/utils"
+SUMMARY = "Command line utilities for working with *.desktop files"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "glib-2.0-native"
+
+SRC_URI = "http://freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "599133d51cc9a41bfec186414906b6f1"
+SRC_URI[sha256sum] = "6c094031bdec46c9f621708f919084e1cb5294e2c5b1e4c883b3e70cb8903385"
+
+inherit autotools native
+
+S = "${WORKDIR}/desktop-file-utils-${PV}"
+
+EXTRA_OECONF += "ac_cv_prog_EMACS=no"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/distcc/distcc_3.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/distcc/distcc_3.1.bb
deleted file mode 100644
index f8879c8..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/distcc/distcc_3.1.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "A parallel build system"
-DESCRIPTION = "distcc is a parallel build system that distributes \
-compilation of C/C++/ObjC code across machines on a network."
-SECTION = "devel"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-DEPENDS = "avahi"
-
-GTKCONFIG = "gtk"
-GTKCONFIG_libc-uclibc = ""
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${GTKCONFIG}', '', d)} popt"
-PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk --without-gnome,gtk+"
-# use system popt by default
-PACKAGECONFIG[popt] = "--without-included-popt,--with-included-popt,popt"
-
-RRECOMMENDS_${PN} = "avahi-daemon"
-
-SRC_URI = "git://github.com/distcc/distcc.git \
-           file://separatebuilddir.patch \
-           file://0001-zeroconf-Include-fcntl.h.patch \
-           file://default \
-           file://distccmon-gnome.desktop \
-           file://distcc \
-           file://distcc.service"
-SRCREV = "9a172d3d20042754a30c0cd9a5d63fd1a8120c31"
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig update-rc.d useradd systemd
-
-EXTRA_OECONF += "--disable-Werror PYTHON=/dev/null"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system \
-                       --home /dev/null \
-                       --no-create-home \
-                       --gid nogroup \
-                       distcc"
-
-INITSCRIPT_NAME = "distcc"
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "distcc.service"
-
-do_install_append() {
-    install -d ${D}${sysconfdir}/init.d/
-    install -d ${D}${sysconfdir}/default
-    install -m 0755 ${WORKDIR}/distcc ${D}${sysconfdir}/init.d/
-    install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/distcc
-    install -d ${D}${systemd_unitdir}/system/
-    install -m 0644 ${WORKDIR}/distcc.service ${D}${systemd_unitdir}/system
-    sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/distcc.service
-    ${DESKTOPINSTALL}
-}
-DESKTOPINSTALL = ""
-DESKTOPINSTALL_libc-glibc () {
-    install -d ${D}${datadir}/distcc/
-    install -m 0644 ${WORKDIR}/distccmon-gnome.desktop ${D}${datadir}/distcc/
-}
-PACKAGES += "distcc-distmon-gnome"
-
-FILES_${PN} = " ${sysconfdir} \
-		${bindir}/distcc \
-    ${bindir}/lsdistcc \
-		${bindir}/distccd \
-		${bindir}/distccmon-text \
-		${systemd_unitdir}/system/distcc.service"
-FILES_distcc-distmon-gnome = "  ${bindir}/distccmon-gnome \
-				${datadir}/distcc"
-
-pkg_postrm_${PN} () {
-	deluser distcc || true
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/distcc/distcc_3.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/distcc/distcc_3.2.bb
new file mode 100644
index 0000000..c084ad2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/distcc/distcc_3.2.bb
@@ -0,0 +1,71 @@
+SUMMARY = "A parallel build system"
+DESCRIPTION = "distcc is a parallel build system that distributes \
+compilation of C/C++/ObjC code across machines on a network."
+SECTION = "devel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "avahi binutils"
+
+PACKAGECONFIG ??= "popt"
+PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk --without-gnome,gtk+"
+# use system popt by default
+PACKAGECONFIG[popt] = "--without-included-popt,--with-included-popt,popt"
+
+RRECOMMENDS_${PN} = "avahi-daemon"
+
+SRC_URI = "git://github.com/distcc/distcc.git;branch=${PV} \
+           file://separatebuilddir.patch \
+           file://0001-zeroconf-Include-fcntl.h.patch \
+           file://default \
+           file://distccmon-gnome.desktop \
+           file://distcc \
+           file://distcc.service"
+SRCREV = "d8b18df3e9dcbe4f092bed565835d3975e99432c"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig update-rc.d useradd systemd
+
+EXTRA_OECONF += "--disable-Werror PYTHON='' --disable-pump-mode"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system \
+                       --home /dev/null \
+                       --no-create-home \
+                       --gid nogroup \
+                       distcc"
+
+INITSCRIPT_NAME = "distcc"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "distcc.service"
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/init.d/
+    install -d ${D}${sysconfdir}/default
+    install -m 0755 ${WORKDIR}/distcc ${D}${sysconfdir}/init.d/
+    install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/distcc
+    install -d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/distcc.service ${D}${systemd_unitdir}/system
+    sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/distcc.service
+    ${DESKTOPINSTALL}
+}
+DESKTOPINSTALL = ""
+DESKTOPINSTALL_libc-glibc () {
+    install -d ${D}${datadir}/distcc/
+    install -m 0644 ${WORKDIR}/distccmon-gnome.desktop ${D}${datadir}/distcc/
+}
+PACKAGES += "distcc-distmon-gnome"
+
+FILES_${PN} = " ${sysconfdir} \
+		${bindir}/distcc \
+    ${bindir}/lsdistcc \
+		${bindir}/distccd \
+		${bindir}/distccmon-text \
+		${systemd_unitdir}/system/distcc.service"
+FILES_distcc-distmon-gnome = "  ${bindir}/distccmon-gnome \
+				${datadir}/distcc"
+
+pkg_postrm_${PN} () {
+	deluser distcc || true
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/distcc/files/separatebuilddir.patch b/import-layers/yocto-poky/meta/recipes-devtools/distcc/files/separatebuilddir.patch
index b9e3e42..7580b55 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/distcc/files/separatebuilddir.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/distcc/files/separatebuilddir.patch
@@ -6,16 +6,16 @@
 
 Upstream-Status: Pending
 
-Index: distcc-3.1/Makefile.in
+Index: git/Makefile.in
 ===================================================================
---- distcc-3.1.orig/Makefile.in	2008-12-02 21:50:31.000000000 +0000
-+++ distcc-3.1/Makefile.in	2013-03-08 10:49:24.224400937 +0000
-@@ -1088,7 +1088,7 @@
+--- git.orig/Makefile.in
++++ git/Makefile.in
+@@ -1117,7 +1117,7 @@ install-example: $(example_DOCS)
  install-gnome-data: $(gnome_data)
  	$(mkinstalldirs) "$(DESTDIR)$(pkgdatadir)"
- 	for p in $(gnome_data); do				\
--	$(INSTALL_DATA) "$$p" "$(DESTDIR)$(pkgdatadir)" || exit 1; \
-+	$(INSTALL_DATA) "$(srcdir)/$$p" "$(DESTDIR)$(pkgdatadir)" || exit 1; \
+ 	for p in $(gnome_data); do \
+-	  $(INSTALL_DATA) "$$p" "$(DESTDIR)$(pkgdatadir)" || exit 1; \
++	  $(INSTALL_DATA) "$(srcdir)/$$p" "$(DESTDIR)$(pkgdatadir)" || exit 1; \
  	done
  
  install-conf: $(conf_files) $(default_files)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb b/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb
index de1bc39..2f13dba 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb
@@ -11,7 +11,7 @@
 # Note: the upstream sources are not distributed with a license file.
 # LICENSE-OASIS is included as a "patch" to workaround this. When
 # upgrading this recipe, please verify whether this is still needed.
-SRC_URI = "${DEBIAN_MIRROR}/main/d/docbook-xml/docbook-xml_${PV}.orig.tar.gz \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/d/docbook-xml/docbook-xml_${PV}.orig.tar.gz \
            file://LICENSE-OASIS \
            file://docbook-xml-update-catalog.xml.patch \
            file://docbook-xml.xml \
@@ -20,6 +20,8 @@
 SRC_URI[md5sum] = "487b4d44e15cffb1f4048af23f98208e"
 SRC_URI[sha256sum] = "b0f8edcf697f5318e63dd98c9a931f3fee167af0805ba441db372e0f17b2a44f"
 
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/docbook-xml/"
+
 S="${WORKDIR}/docbook-xml-4.5.c31424"
 
 inherit allarch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl.xml b/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl.xml
index a1a576a..c60555a 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl.xml
+++ b/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets/docbook-xsl.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
-<delegateURI uriStartString="http://docbook.sourceforge.net/release/xsl/" catalog="file:///usr/share/xml/docbook/xsl-stylesheets-1.78.1/catalog.xml"/>
-<delegateSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/" catalog="file:///usr/share/xml/docbook/xsl-stylesheets-1.78.1/catalog.xml"/>
+<delegateURI uriStartString="http://docbook.sourceforge.net/release/xsl/" catalog="file:///usr/share/xml/docbook/xsl-stylesheets/catalog.xml"/>
+<delegateSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/" catalog="file:///usr/share/xml/docbook/xsl-stylesheets/catalog.xml"/>
 </catalog>
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.78.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.78.1.bb
deleted file mode 100644
index 52de3ab..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.78.1.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "XSL stylesheets for processing DocBook XML to various output formats"
-HOMEPAGE = "http://docbook.sourceforge.net"
-LICENSE = "XSL"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6eeeed43d498c22a835382533356462"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/docbook/docbook-xsl-${PV}.tar.bz2 \
-           file://docbook-xsl.xml \
-           file://docbook-xsl-stylesheets-no-bashism-in-docbook-xsl-up.patch \
-"
-
-SRC_URI[md5sum] = "6dd0f89131cc35bf4f2ed105a1c17771"
-SRC_URI[sha256sum] = "c98f7296ab5c8ccd2e0bc07634976a37f50847df2d8a59bdb1e157664700b467"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/docbook/files/docbook-xsl/"
-# Reject versions ending in .0 as those are release candidates
-UPSTREAM_CHECK_REGEX = "/docbook-xsl/(?P<pver>(\d+[\.\-_]*)+(?!\.0)\.\d+)/"
-
-S = "${WORKDIR}/docbook-xsl-${PV}"
-
-inherit allarch
-BBCLASSEXTEND = "native"
-
-SSTATEPOSTINSTFUNCS_append_class-native = " docbook_xsl_stylesheets_sstate_postinst"
-SYSROOT_PREPROCESS_FUNCS_append_class-native = " docbook_xsl_stylesheets_sysroot_preprocess"
-
-do_configure (){
-	:
-}
-
-do_compile (){
-	:
-}
-
-do_install () {
-	# Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/docbook-xsl.html
-	# for details.
-	install -v -m755 -d ${D}${datadir}/xml/docbook/xsl-stylesheets-${PV}
-	ln -s xsl-stylesheets-${PV} ${D}${datadir}/xml/docbook/xsl-stylesheets
-
-	cp -v -R VERSION common eclipse epub extensions fo highlighting html \
-		htmlhelp images javahelp lib manpages params profiling \
-		roundtrip slides template tests tools webhelp website \
-		xhtml xhtml-1_1 catalog.xml \
-	${D}${datadir}/xml/docbook/xsl-stylesheets-1.78.1
-
-	ln -s VERSION ${D}/${datadir}/xml/docbook/xsl-stylesheets-1.78.1/VERSION.xsl
-
-	install -v -m644 -D README \
-		${D}${datadir}/doc/docbook-xsl-1.78.1/README.txt
-	install -v -m644    RELEASE-NOTES* NEWS* \
-		${D}${datadir}/doc/docbook-xsl-1.78.1
-
-	install -d ${D}${sysconfdir}/xml/
-	install -m 755  ${WORKDIR}/docbook-xsl.xml ${D}${sysconfdir}/xml/docbook-xsl.xml
-
-}
-
-docbook_xsl_stylesheets_sstate_postinst () {
-    if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
-    then
-        # Ensure that the catalog file sgml-docbook.cat is properly
-        # updated when the package is installed from sstate cache.
-        sed -i -e "s|file://.*/usr/share/xml|file://${datadir}/xml|g" ${SYSROOT_DESTDIR}${sysconfdir}/xml/docbook-xsl.xml
-    fi
-}
-
-docbook_xsl_stylesheets_sysroot_preprocess () {
-    # Update the hardcode dir in docbook-xml.xml
-    sed -i -e "s|file:///usr/share/xml|file://${datadir}/xml|g" ${SYSROOT_DESTDIR}${sysconfdir}/xml/docbook-xsl.xml
-}
-
-RDEPENDS_${PN} += "perl"
-FILES_${PN} = "${datadir}/xml/* ${sysconfdir}/xml/docbook-xsl.xml"
-FILES_${PN}-doc = "${datadir}/doc/*"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
new file mode 100644
index 0000000..aa03a82
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
@@ -0,0 +1,74 @@
+SUMMARY = "XSL stylesheets for processing DocBook XML to various output formats"
+HOMEPAGE = "http://docbook.sourceforge.net"
+LICENSE = "XSL"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6beadd98f9c54ab0c387e14211ee4d0e"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/docbook/docbook-xsl-${PV}.tar.bz2 \
+           file://docbook-xsl.xml \
+           file://docbook-xsl-stylesheets-no-bashism-in-docbook-xsl-up.patch \
+"
+
+SRC_URI[md5sum] = "b48cbf929a2ad85e6672f710777ca7bc"
+SRC_URI[sha256sum] = "725f452e12b296956e8bfb876ccece71eeecdd14b94f667f3ed9091761a4a968"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/docbook/files/docbook-xsl/"
+# Reject versions ending in .0 as those are release candidates
+UPSTREAM_CHECK_REGEX = "/docbook-xsl/(?P<pver>(\d+[\.\-_]*)+(?!\.0)\.\d+)/"
+
+S = "${WORKDIR}/docbook-xsl-${PV}"
+
+inherit allarch
+BBCLASSEXTEND = "native"
+
+SSTATEPOSTINSTFUNCS_append_class-native = " docbook_xsl_stylesheets_sstate_postinst"
+SYSROOT_PREPROCESS_FUNCS_append_class-native = " docbook_xsl_stylesheets_sysroot_preprocess"
+
+do_configure (){
+	:
+}
+
+do_compile (){
+	:
+}
+
+do_install () {
+	# Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/docbook-xsl.html
+	# for details.
+	install -v -m755 -d ${D}${datadir}/xml/docbook/xsl-stylesheets-${PV}
+	ln -s xsl-stylesheets-${PV} ${D}${datadir}/xml/docbook/xsl-stylesheets
+
+	cp -v -R VERSION assembly common eclipse epub epub3 fo \
+		highlighting html htmlhelp images javahelp lib manpages \
+		params profiling roundtrip slides template webhelp website \
+		xhtml xhtml-1_1 xhtml5 catalog.xml \
+		${D}${datadir}/xml/docbook/xsl-stylesheets-${PV}
+
+	ln -s VERSION ${D}/${datadir}/xml/docbook/xsl-stylesheets-${PV}/VERSION.xsl
+
+	install -v -m644 -D README \
+		${D}${datadir}/doc/docbook-xsl-${PV}/README.txt
+	install -v -m644    RELEASE-NOTES* NEWS* \
+		${D}${datadir}/doc/docbook-xsl-${PV}
+
+	install -d ${D}${sysconfdir}/xml/
+	install -m 755  ${WORKDIR}/docbook-xsl.xml ${D}${sysconfdir}/xml/docbook-xsl.xml
+
+}
+
+docbook_xsl_stylesheets_sstate_postinst () {
+    if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
+    then
+        # Ensure that the catalog file sgml-docbook.cat is properly
+        # updated when the package is installed from sstate cache.
+        sed -i -e "s|file://.*/usr/share/xml|file://${datadir}/xml|g" ${SYSROOT_DESTDIR}${sysconfdir}/xml/docbook-xsl.xml
+    fi
+}
+
+docbook_xsl_stylesheets_sysroot_preprocess () {
+    # Update the hardcode dir in docbook-xml.xml
+    sed -i -e "s|file:///usr/share/xml|file://${datadir}/xml|g" ${SYSROOT_DESTDIR}${sysconfdir}/xml/docbook-xsl.xml
+}
+
+RDEPENDS_${PN} += "perl"
+FILES_${PN} = "${datadir}/xml/* ${sysconfdir}/xml/docbook-xsl.xml"
+FILES_${PN}-doc = "${datadir}/doc/*"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools/0001-mkfs.fat-fix-incorrect-int-type.patch b/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools/0001-mkfs.fat-fix-incorrect-int-type.patch
deleted file mode 100644
index 3497ca5..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools/0001-mkfs.fat-fix-incorrect-int-type.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 3b95786af13e28157d889bd90a384ee255f2d91d Mon Sep 17 00:00:00 2001
-From: "Yann E. MORIN" <yann.morin.1998@free.fr>
-Date: Sun, 16 Aug 2015 15:55:43 +0200
-Subject: [PATCH] mkfs.fat: fix incorrect int type
-
-u_int32_t is not a stanard type, while uint32_t is. This fixes builds
-with the musl C library, which only defines so-called "clean" headers;
-build failures are like (back-quotes and elision manually added for
-readability):
-
-    http://autobuild.buildroot.org/results/a09/a0923d7f6d4dbae02eba4c5024bbdae3a52aa85a/build-end.log
-
-    /home/peko/autobuild/instance-1/output/host/usr/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE \
-        -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64   -Os  -D_GNU_SOURCE -D_LARGEFILE_SOURCE \
-        -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -c -o mkfs.fat.o src/mkfs.fat.c
-    src/mkfs.fat.c: In function 'main':
-    src/mkfs.fat.c:1415:18: error: 'u_int32_t' undeclared (first use in this function)
-         volume_id = (u_int32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec); [...]
-                      ^
-    src/mkfs.fat.c:1415:18: note: each undeclared identifier is reported only once for each
-    function it appears in
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-Signed-off-by: Andreas Bombe <aeb@debian.org>
----
-Upstream-Status: Backport
-
- src/mkfs.fat.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/mkfs.fat.c b/src/mkfs.fat.c
-index b38d116..dddbe24 100644
---- a/src/mkfs.fat.c
-+++ b/src/mkfs.fat.c
-@@ -1412,7 +1412,7 @@ int main(int argc, char **argv)
- 
-     gettimeofday(&create_timeval, NULL);
-     create_time = create_timeval.tv_sec;
--    volume_id = (u_int32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec);	/* Default volume ID = creation time, fudged for more uniqueness */
-+    volume_id = (uint32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec);	/* Default volume ID = creation time, fudged for more uniqueness */
-     check_atari();
- 
-     printf("mkfs.fat " VERSION " (" VERSION_DATE ")\n");
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools/largefile.patch b/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools/largefile.patch
deleted file mode 100644
index 7f7d835..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools/largefile.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-defer setting largefile flags to build makery
-in a cross build we can not do runtime config tests
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Inappropriate[Cross compile Specific]
-Index: dosfstools-3.0.28/Makefile
-===================================================================
---- dosfstools-3.0.28.orig/Makefile
-+++ dosfstools-3.0.28/Makefile
-@@ -27,8 +27,7 @@ SBINDIR = $(PREFIX)/sbin
- DOCDIR = $(PREFIX)/share/doc
- MANDIR = $(PREFIX)/share/man
- 
--#OPTFLAGS = -O2 -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
--OPTFLAGS = -O2 -fomit-frame-pointer -D_GNU_SOURCE $(shell getconf LFS_CFLAGS)
-+OPTFLAGS = -O2 -fomit-frame-pointer
- #WARNFLAGS = -Wall -pedantic -std=c99
- WARNFLAGS = -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings
- DEBUGFLAGS = -g
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools_3.0.28.bb b/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools_3.0.28.bb
deleted file mode 100644
index 6fc3e41..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools_3.0.28.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-# dosfstools OE build file
-# Copyright (C) 2004-2006, Advanced Micro Devices, Inc.  All Rights Reserved
-# Copyright (C) 2015, Sören Brinkmann <soeren.brinkmann@gmail>  All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-SUMMARY = "DOS FAT Filesystem Utilities"
-HOMEPAGE = "https://github.com/dosfstools/dosfstools"
-
-SECTION = "base"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "https://github.com/dosfstools/dosfstools/releases/download/v3.0.28/dosfstools-3.0.28.tar.xz \
-           file://largefile.patch \
-           file://0001-mkfs.fat-fix-incorrect-int-type.patch \
-          "
-SRC_URI[md5sum] = "6a047a6c65186b9ebb1853709adb36db"
-SRC_URI[sha256sum] = "ee95913044ecf2719b63ea11212917649709a6e53209a72d622135aaa8517ee2"
-
-UPSTREAM_CHECK_URI = "https://github.com/dosfstools/dosfstools/releases"
-
-CFLAGS += "-D_GNU_SOURCE ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', '', d)}"
-
-FILES_${PN} = "${base_sbindir}"
-FILES_${PN}-doc = "${mandir} ${docdir}"
-
-do_install () {
-	oe_runmake "PREFIX=${D}${prefix}" "SBINDIR=${D}${base_sbindir}" \
-		   "MANDIR=${D}${mandir}" "DOCDIR=${D}${docdir}" install
-}
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools_4.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools_4.0.bb
new file mode 100644
index 0000000..e7b1f61
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/dosfstools/dosfstools_4.0.bb
@@ -0,0 +1,25 @@
+# dosfstools OE build file
+# Copyright (C) 2004-2006, Advanced Micro Devices, Inc.  All Rights Reserved
+# Copyright (C) 2015, Sören Brinkmann <soeren.brinkmann@gmail>  All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+SUMMARY = "DOS FAT Filesystem Utilities"
+HOMEPAGE = "https://github.com/dosfstools/dosfstools"
+
+SECTION = "base"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "https://github.com/dosfstools/dosfstools/releases/download/v${PV}/${BP}.tar.xz \
+          "
+SRC_URI[md5sum] = "20f8388b99702f276c973d228c7cff45"
+SRC_URI[sha256sum] = "9037738953559d1efe04fc5408b6846216cc0138f7f9d32de80b6ec3c35e7daf"
+
+UPSTREAM_CHECK_URI = "https://github.com/dosfstools/dosfstools/releases"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--without-udev --enable-compat-symlinks"
+
+CFLAGS += "-D_GNU_SOURCE ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', '', d)}"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg.inc b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg.inc
index 3d9e7e3..e8d8a9b 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg.inc
@@ -2,15 +2,13 @@
 LICENSE = "GPLv2.0+"
 SECTION = "base"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.xz"
-
-SRC_URI_append_class-native = " file://0001-When-running-do_package_write_deb-we-have-trees-of-h.patch"
-
 DEPENDS = "zlib bzip2 perl ncurses"
 DEPENDS_class-native = "bzip2-replacement-native zlib-native virtual/update-alternatives-native gettext-native perl-native"
 RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} xz run-postinsts perl"
 RDEPENDS_${PN}_class-native = "xz-native"
 
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/dpkg/"
+
 inherit autotools gettext perlnative pkgconfig systemd
 
 python () {
@@ -35,6 +33,7 @@
 		"
 
 EXTRA_OECONF += "TAR=tar"
+EXTRA_OECONF_append_class-target = " DEB_HOST_ARCH=${DPKG_ARCH}"
 
 do_configure () {
     echo >> ${S}/m4/compiler.m4
@@ -74,6 +73,14 @@
 PACKAGES += "${PN}-perl"
 FILES_${PN}-perl = "${libdir}/perl"
 
+# Split out start-stop-daemon to its own package.  Note that it
+# is installed in a different directory than the one used for
+# the bitbake version.
+#
+PACKAGES =+ "${PN}-start-stop"
+FILES_${PN}-start-stop = "${sbindir}/start-stop-daemon"
+
+RDEPENDS_${PN} += "${PN}-start-stop"
+
+
 BBCLASSEXTEND = "native"
-
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/0001-When-running-do_package_write_deb-we-have-trees-of-h.patch b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/0001-When-running-do_package_write_deb-we-have-trees-of-h.patch
deleted file mode 100644
index 49ef853..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/0001-When-running-do_package_write_deb-we-have-trees-of-h.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From e391bdba238d1371fc5b67cdae08b06eb5ada5c2 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 26 Aug 2015 15:48:13 +0300
-Subject: [PATCH] When running do_package_write_deb, we have trees of
- hardlinked files such as the dbg source files in ${PN}-dbg. If something
- makes another copy of one of those files (or deletes one), the number of
- links a file has changes and tar can notice this, e.g.:
-
-| DEBUG: Executing python function do_package_deb
-| dpkg-deb: building package `sed-ptest' in `/media/build1/poky/build/tmp/work/i586-poky-linux/sed/4.2.2-r0/deploy-debs/i586/sed-ptest_4.2.2-r0.3_i386.deb'.
-| tar: ./usr/lib/sed/ptest/testsuite/tst-regex2: file changed as we read it
-| dpkg-deb: error: subprocess tar -cf returned error exit status 1
-
-Tar returns an error of 1 when files 'change' and other errors codes
-in other error cases. We tweak dpkg-deb here so that it ignores an exit
-code of 1 from tar. The files don't really change (and we have locking in
-place to avoid that kind of issue).
-
-Upstream-Status: Inappropriate
-RP 2015/3/27
----
- dpkg-deb/build.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
-index 2ddeec6..af363f0 100644
---- a/dpkg-deb/build.c
-+++ b/dpkg-deb/build.c
-@@ -452,7 +452,7 @@ static void
- tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
-              struct compress_params *tar_compress_params, int fd_out)
- {
--  int pipe_filenames[2], pipe_tarball[2];
-+  int pipe_filenames[2], pipe_tarball[2], rc;
-   pid_t pid_tar, pid_comp;
- 
-   /* Fork off a tar. We will feed it a list of filenames on stdin later. */
-@@ -493,7 +493,9 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
-   /* All done, clean up wait for tar and <compress> to finish their job. */
-   close(pipe_filenames[1]);
-   subproc_reap(pid_comp, _("<compress> from tar -cf"), 0);
--  subproc_reap(pid_tar, "tar -cf", 0);
-+  rc = subproc_reap(pid_tar, "tar -cf", SUBPROC_RETERROR);
-+  if (rc && rc != 1)
-+    ohshite(_("subprocess %s returned error exit status %d"), "tar -cf", rc);
- }
- 
- /**
-@@ -509,7 +511,7 @@ do_build(const char *const *argv)
-   char *debar;
-   char *tfbuf;
-   int arfd;
--  int p1[2], gzfd;
-+  int p1[2], gzfd, rc;
-   pid_t c1, c2;
- 
-   /* Decode our arguments. */
-@@ -590,7 +592,9 @@ do_build(const char *const *argv)
-   }
-   close(p1[0]);
-   subproc_reap(c2, _("<compress> from tar -cf"), 0);
--  subproc_reap(c1, "tar -cf", 0);
-+  rc = subproc_reap(c1, "tar -cf", SUBPROC_RETERROR);
-+  if (rc && rc != 1)
-+    ohshite(_("subprocess %s returned error exit status %d"), "tar -cf", rc);
- 
-   if (lseek(gzfd, 0, SEEK_SET))
-     ohshite(_("failed to rewind temporary file (%s)"), _("control member"));
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch
index 9f77c6c..80504ce 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch
@@ -8,30 +8,41 @@
 Upstream-Status: Inappropriate [OE Specific]
 
 RP 2011/12/07
+ALIMON 2016/05/26
+
 ---
- src/script.c | 31 ++-----------------------------
- 1 file changed, 2 insertions(+), 29 deletions(-)
+ src/script.c | 39 +++------------------------------------
+ 1 file changed, 3 insertions(+), 36 deletions(-)
 
 diff --git a/src/script.c b/src/script.c
-index a958145..24c49f9 100644
+index 3c88be8..ce66a86 100644
 --- a/src/script.c
 +++ b/src/script.c
-@@ -100,36 +100,9 @@ maintscript_pre_exec(struct command *cmd)
- 	size_t instdirl = strlen(instdir);
- 
- 	if (*instdir) {
+@@ -97,43 +97,10 @@ setexecute(const char *path, struct stat *stab)
+ static const char *
+ maintscript_pre_exec(struct command *cmd)
+ {
+-	const char *admindir = dpkg_db_get_dir();
+-	const char *changedir = fc_script_chrootless ? instdir : "/";
+-	size_t instdirl = strlen(instdir);
+-
+-	if (*instdir && !fc_script_chrootless) {
 -		if (strncmp(admindir, instdir, instdirl) != 0)
 -			ohshit(_("admindir must be inside instdir for dpkg to work properly"));
 -		if (setenv("DPKG_ADMINDIR", admindir + instdirl, 1) < 0)
 -			ohshite(_("unable to setenv for subprocesses"));
+-		if (setenv("DPKG_ROOT", "", 1) < 0)
+-			ohshite(_("unable to setenv for subprocesses"));
 -
 -		if (chroot(instdir))
 -			ohshite(_("failed to chroot to '%.250s'"), instdir);
--	}
++	if (*instdir) {
++		setenv("D", instdir, 1);
+ 	}
 -	/* Switch to a known good directory to give the maintainer script
 -	 * a saner environment, also needed after the chroot(). */
--	if (chdir("/"))
--		ohshite(_("failed to chdir to '%.255s'"), "/");
+-	if (chdir(changedir))
+-		ohshite(_("failed to chdir to '%.255s'"), changedir);
 -	if (debug_has_flag(dbg_scripts)) {
 -		struct varbuf args = VARBUF_INIT;
 -		const char **argv = cmd->argv;
@@ -44,9 +55,8 @@
 -		debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename,
 -		      args.buf);
 -		varbuf_destroy(&args);
-+		setenv("D", instdir, 1);
- 	}
--	if (!instdirl)
+-	}
+-	if (!instdirl || fc_script_chrootless)
 -		return cmd->filename;
 -
 -	assert(strlen(cmd->filename) >= instdirl);
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/add_armeb_triplet_entry.patch b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/add_armeb_triplet_entry.patch
index af275de..dc69eb2 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/add_armeb_triplet_entry.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/add_armeb_triplet_entry.patch
@@ -25,14 +25,22 @@
 
 Signed-off-by: Krishnanjanappa, Jagadeesh <jagadeesh.krishnanjanappa@caviumnetworks.com>
 
-diff -Naurp dpkg-1.17.21_org/triplettable dpkg-1.17.21/triplettable
---- dpkg-1.17.21_org/triplettable	2015-04-08 17:08:52.370759171 +0530
-+++ dpkg-1.17.21/triplettable	2015-04-08 17:09:12.406752081 +0530
-@@ -9,6 +9,7 @@ musleabihf-linux-arm	musl-linux-armhf
- musl-linux-<cpu>	musl-linux-<cpu>
- gnueabihf-linux-arm	armhf
+---
+ triplettable | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/triplettable b/triplettable
+index abe4726..1e9c247 100644
+--- a/triplettable
++++ b/triplettable
+@@ -11,6 +11,7 @@ gnueabihf-linux-arm	armhf
  gnueabi-linux-arm	armel
+ gnuabin32-linux-mips64r6el	mipsn32r6el
+ gnuabin32-linux-mips64r6	mipsn32r6
 +gnueabi-linux-armeb	armeb
  gnuabin32-linux-mips64el	mipsn32el
  gnuabin32-linux-mips64	mipsn32
- gnuabi64-linux-mips64el	mips64el
+ gnuabi64-linux-mips64r6el	mips64r6el
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/fix-abs-redefine.patch b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/fix-abs-redefine.patch
deleted file mode 100644
index e73311c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg/fix-abs-redefine.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Upstream-Status: Pending
-
-dpkg defines:
-#define DPKG_BEGIN_DECLS	extern "C" {
-
-That makes header cstdlib included in a extern "C" block which is not supported
-by gcc 4.8. It fails on Fedora 19:
-
-/usr/include/c++/4.8.1/cstdlib: In function ‘long long int std::abs(long long int)’:
-/usr/include/c++/4.8.1/cstdlib:174:20: error: declaration of C function ‘long long int std::abs(long long int)’ conflicts with
-   abs(long long __x) { return __builtin_llabs (__x); }
-                    ^
-/usr/include/c++/4.8.1/cstdlib:166:3: error: previous declaration ‘long int std::abs(long int)’ here
-   abs(long __i) { return __builtin_labs(__i); }
-   ^
-
-Move include gettext.h out of the extern "C" block to fix this issue.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
---- dpkg-1.17.1/lib/dpkg/i18n.h.orig	2013-08-13 17:31:28.870935573 +0800
-+++ dpkg-1.17.1/lib/dpkg/i18n.h	2013-08-13 17:31:37.893065249 +0800
-@@ -23,8 +23,6 @@
- 
- #include <dpkg/macros.h>
- 
--DPKG_BEGIN_DECLS
--
- /**
-  * @defgroup i18n Internationalization support
-  * @ingroup dpkg-internal
-@@ -33,6 +31,8 @@
- 
- #include <gettext.h>
- 
-+DPKG_BEGIN_DECLS
-+
- /* We need to include this because pgettext() uses LC_MESSAGES, but libintl.h
-  * which gets pulled by gettext.h only includes it if building optimized. */
- #include <locale.h>
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg_1.18.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg_1.18.4.bb
deleted file mode 100644
index 7876944..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg_1.18.4.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require dpkg.inc
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI_append_class-native =" file://glibc2.5-sync_file_range.patch "
-SRC_URI += "file://noman.patch \
-            file://remove-tar-no-timestamp.patch \
-            file://fix-abs-redefine.patch \
-            file://arch_pm.patch \
-            file://dpkg-configure.service \
-            file://add_armeb_triplet_entry.patch \
-	    file://0002-Adapt-to-linux-wrs-kernel-version-which-has-characte.patch \
-	    file://0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch \
-	    file://0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch \
-	    file://0005-dpkg-compiler.m4-remove-Wvla.patch \
-	    file://0006-add-musleabi-to-known-target-tripets.patch \
-           "
-
-SRC_URI[md5sum] = "e95b513c89693f6ec3ab53b6b1c3defd"
-SRC_URI[sha256sum] = "fe89243868888ce715bf45861f26264f767d4e4dbd0d6f1a26ce60bbbbf106da"
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg_1.18.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg_1.18.7.bb
new file mode 100644
index 0000000..28fdc13
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/dpkg/dpkg_1.18.7.bb
@@ -0,0 +1,19 @@
+require dpkg.inc
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160509T100042Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz \
+           file://noman.patch \
+           file://remove-tar-no-timestamp.patch \
+           file://arch_pm.patch \
+           file://dpkg-configure.service \
+           file://add_armeb_triplet_entry.patch \
+           file://0002-Adapt-to-linux-wrs-kernel-version-which-has-characte.patch \
+           file://0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch \
+           file://0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch \
+           file://0005-dpkg-compiler.m4-remove-Wvla.patch \
+           file://0006-add-musleabi-to-known-target-tripets.patch \
+           "
+SRC_URI_append_class-native = " file://glibc2.5-sync_file_range.patch "
+
+SRC_URI[md5sum] = "073dbf2129a54b0fc627464bf8af4a1b"
+SRC_URI[sha256sum] = "ace36d3a6dc750a42baf797f9e75ec580a21f92bb9ff96b482100755d6d9b87b"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
index 09e4ea5..74e92f6 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
@@ -9,7 +9,7 @@
 LICENSE_e2fsprogs-fsck = "GPLv2"
 LICENSE_e2fsprogs-tune2fs = "GPLv2"
 LICENSE_e2fsprogs-badblocks = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b48f21d765b875bd10400975d12c1ca2 \
+LIC_FILES_CHKSUM = "file://NOTICE;md5=b48f21d765b875bd10400975d12c1ca2 \
                       file://lib/ext2fs/ext2fs.h;beginline=1;endline=9;md5=596a8dedcb4e731c6b21c7a46fba6bef \
                       file://lib/e2p/e2p.h;beginline=1;endline=7;md5=8a74ade8f9d65095d70ef2d4bf48e36a \
                       file://lib/uuid/uuid.h.in;beginline=1;endline=32;md5=dbb8079e114a5f841934b99e59c8820a \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch
index 656fb6e..e66cd4d 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch
@@ -9,26 +9,31 @@
 the latest stable e2fsprogs release.
 
 Upstream-Status: Inappropriate [configuration]
-
 Signed-off-by: Jonathan Liu <net147@gmail.com>
+
+Rebase to 1.43:
+The upstream has disabled metadata_csum by default
+this rebase just revert 64bit feature.
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 ---
  misc/mke2fs.conf.in | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
-index a049d61..106ee80 100644
+index 78fe50a..6f1940e 100644
 --- a/misc/mke2fs.conf.in
 +++ b/misc/mke2fs.conf.in
-@@ -11,7 +11,8 @@
+@@ -11,8 +11,9 @@
  		features = has_journal
  	}
  	ext4 = {
--		features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize
+-		features = has_journal,extent,huge_file,flex_bg,64bit,dir_nlink,extra_isize
 +		features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
-+		auto_64-bit_support = 1
  		inode_size = 256
++		auto_64-bit_support = 1
  	}
  	ext4dev = {
+ 		features = has_journal,extent,huge_file,flex_bg,inline_data,64bit,dir_nlink,extra_isize
 -- 
-2.7.2
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
new file mode 100644
index 0000000..33054c6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
@@ -0,0 +1,32 @@
+Subject: [PATCH] Fix missing check for permission denied.
+
+If the path to "ROOT_SYSCONFDIR/mke2fs.conf" has a permission denied problem,
+then the get_dirlist() call will return EACCES. But the code in profile_init
+will treat that as a fatal error and all executions will fail with:
+      Couldn't init profile successfully (error: 13).
+
+Upstream-Status: Pending
+
+Written-by: Henrik Wallin <henrik.b.wallin@ericsson.com>
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ lib/support/profile.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/support/profile.c b/lib/support/profile.c
+index 51a3314..1c1039f 100644
+--- a/lib/support/profile.c
++++ b/lib/support/profile.c
+@@ -335,7 +335,7 @@ profile_init(const char **files, profile_t *ret_profile)
+ 				*last = new_file;
+ 				last = &new_file->next;
+ 			}
+-		} else if ((retval != ENOTDIR) &&
++		} else if ((retval != ENOTDIR) && (retval != EACCES) &&
+ 			   strcmp(*fs, default_filename))
+ 			goto errout;
+ 
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/xattr_ordering.patch b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/xattr_ordering.patch
deleted file mode 100644
index 782a7b1..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/xattr_ordering.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-From: "Darrick J. Wong" <darrick.wong@oracle.com>
-To: tytso@mit.edu, darrick.wong@oracle.com
-Cc: linux-ext4@vger.kernel.org, Darren Hart <dvhart@linux.intel.com>,
- Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Sat, 13 Feb 2016 14:38:24 -0800
-Message-ID: <20160213223824.25381.8002.stgit@birch.djwong.org>
-In-Reply-To: <20160213223725.25381.20929.stgit@birch.djwong.org>
-References: <20160213223725.25381.20929.stgit@birch.djwong.org>
-User-Agent: StGit/0.17.1-dirty
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-X-Source-IP: aserv0022.oracle.com [141.146.126.234]
-X-Evolution-Source: 1358860361.4566.33@ted
-Content-Transfer-Encoding: 8bit
-
-Richard Purdie reports that libext2fs doesn't sort attribute keys in
-the xattr block correctly, causing the kernel to return -ENODATA when
-querying attributes that should be there.  Therefore, sort attributes
-so that whatever ends up in the xattr block is sorted according to
-what the kernel expects.
-
-Cc: Darren Hart <dvhart@linux.intel.com>
-Reported-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
----
- lib/ext2fs/ext_attr.c        |   24 +++++++++++-
- tests/d_xattr_sorting/expect |   29 ++++++++++++++
- tests/d_xattr_sorting/name   |    1 
- tests/d_xattr_sorting/script |   86 ++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 139 insertions(+), 1 deletion(-)
- create mode 100644 tests/d_xattr_sorting/expect
- create mode 100644 tests/d_xattr_sorting/name
- create mode 100644 tests/d_xattr_sorting/script
-
-Upstream-Status: Submitted
-
-
-diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c
-index 0a4f8c0..b121837 100644
---- a/lib/ext2fs/ext_attr.c
-+++ b/lib/ext2fs/ext_attr.c
-@@ -254,10 +254,15 @@ static struct ea_name_index ea_names[] = {
- 	{0, NULL},
- };
- 
-+static int find_ea_index(char *fullname, char **name, int *index);
-+
- /* Push empty attributes to the end and inlinedata to the front. */
- static int attr_compare(const void *a, const void *b)
- {
- 	const struct ext2_xattr *xa = a, *xb = b;
-+	char *xa_suffix, *xb_suffix;
-+	int xa_idx, xb_idx;
-+	int cmp;
- 
- 	if (xa->name == NULL)
- 		return +1;
-@@ -267,7 +272,24 @@ static int attr_compare(const void *a, const void *b)
- 		return -1;
- 	else if (!strcmp(xb->name, "system.data"))
- 		return +1;
--	return 0;
-+
-+	/*
-+	 * Duplicate the kernel's sorting algorithm because xattr blocks
-+	 * require sorted keys.
-+	 */
-+	xa_suffix = xa->name;
-+	xb_suffix = xb->name;
-+	xa_idx = xb_idx = 0;
-+	find_ea_index(xa->name, &xa_suffix, &xa_idx);
-+	find_ea_index(xb->name, &xb_suffix, &xb_idx);
-+	cmp = xa_idx - xb_idx;
-+	if (cmp)
-+		return cmp;
-+	cmp = strlen(xa_suffix) - strlen(xb_suffix);
-+	if (cmp)
-+		return cmp;
-+	cmp = strcmp(xa_suffix, xb_suffix);
-+	return cmp;
- }
- 
- static const char *find_ea_prefix(int index)
-diff --git a/tests/d_xattr_sorting/expect b/tests/d_xattr_sorting/expect
-new file mode 100644
-index 0000000..17da663
---- /dev/null
-+++ b/tests/d_xattr_sorting/expect
-@@ -0,0 +1,29 @@
-+debugfs sort extended attributes
-+mke2fs -Fq -b 1024 test.img 512
-+Exit status is 0
-+ea_set / security.SMEG64 -f /tmp/b
-+Exit status is 0
-+ea_set / security.imb -f /tmp/b
-+Exit status is 0
-+ea_set / user.moo cow
-+Exit status is 0
-+ea_list /
-+Extended attributes:
-+  user.moo = "cow" (3)
-+  security.imb = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" (256)
-+  security.SMEG64 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" (256)
-+Exit status is 0
-+ea_get / security.imb
-+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-+Exit status is 0
-+ea_get / nosuchea
-+ea_get: Extended attribute key not found while getting extended attribute
-+Exit status is 0
-+e2fsck -yf -N test_filesys
-+Pass 1: Checking inodes, blocks, and sizes
-+Pass 2: Checking directory structure
-+Pass 3: Checking directory connectivity
-+Pass 4: Checking reference counts
-+Pass 5: Checking group summary information
-+test_filesys: 11/64 files (0.0% non-contiguous), 29/512 blocks
-+Exit status is 0
-diff --git a/tests/d_xattr_sorting/name b/tests/d_xattr_sorting/name
-new file mode 100644
-index 0000000..dde8926
---- /dev/null
-+++ b/tests/d_xattr_sorting/name
-@@ -0,0 +1 @@
-+sort extended attributes in debugfs
-diff --git a/tests/d_xattr_sorting/script b/tests/d_xattr_sorting/script
-new file mode 100644
-index 0000000..30c189a
---- /dev/null
-+++ b/tests/d_xattr_sorting/script
-@@ -0,0 +1,86 @@
-+if test -x $DEBUGFS_EXE; then
-+
-+OUT=$test_name.log
-+EXP=$test_dir/expect
-+VERIFY_FSCK_OPT=-yf
-+
-+TEST_DATA=$test_name.tmp
-+VERIFY_DATA=$test_name.ver.tmp
-+
-+echo "debugfs sort extended attributes" > $OUT
-+
-+dd if=/dev/zero of=$TMPFILE bs=1k count=512 > /dev/null 2>&1
-+
-+echo "mke2fs -Fq -b 1024 test.img 512" >> $OUT
-+
-+$MKE2FS -Fq $TMPFILE 512 > /dev/null 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT
-+
-+perl -e 'print "x" x 256;' > /tmp/b
-+
-+echo "ea_set / security.SMEG64 -f /tmp/b" > $OUT.new
-+$DEBUGFS -w -R "ea_set / security.SMEG64 -f /tmp/b" $TMPFILE >> $OUT.new 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT.new
-+sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
-+
-+echo "ea_set / security.imb -f /tmp/b" > $OUT.new
-+$DEBUGFS -w -R "ea_set / security.imb -f /tmp/b" $TMPFILE >> $OUT.new 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT.new
-+sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
-+
-+echo "ea_set / user.moo cow" > $OUT.new
-+$DEBUGFS -w -R "ea_set / user.moo cow" $TMPFILE >> $OUT.new 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT.new
-+sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
-+
-+rm -rf /tmp/b
-+
-+echo "ea_list /" > $OUT.new
-+$DEBUGFS -w -R "ea_list /" $TMPFILE >> $OUT.new 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT.new
-+sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
-+
-+echo "ea_get / security.imb" > $OUT.new
-+$DEBUGFS -w -R "ea_get / security.imb" $TMPFILE >> $OUT.new 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT.new
-+sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
-+
-+echo "ea_get / nosuchea" > $OUT.new
-+$DEBUGFS -w -R "ea_get / nosuchea" $TMPFILE >> $OUT.new 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT.new
-+sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
-+
-+echo e2fsck $VERIFY_FSCK_OPT -N test_filesys > $OUT.new
-+$FSCK $VERIFY_FSCK_OPT -N test_filesys $TMPFILE >> $OUT.new 2>&1
-+status=$?
-+echo Exit status is $status >> $OUT.new
-+sed -f $cmd_dir/filter.sed $OUT.new >> $OUT
-+
-+#
-+# Do the verification
-+#
-+
-+rm -f $TMPFILE $OUT.new
-+cmp -s $OUT $EXP
-+status=$?
-+
-+if [ "$status" = 0 ] ; then
-+	echo "$test_name: $test_description: ok"
-+	touch $test_name.ok
-+else
-+	echo "$test_name: $test_description: failed"
-+	diff $DIFF_OPTS $EXP $OUT > $test_name.failed
-+fi
-+
-+unset VERIFY_FSCK_OPT NATIVE_FSCK_OPT OUT EXP TEST_DATA VERIFY_DATA
-+
-+else #if test -x $DEBUGFS_EXE; then
-+	echo "$test_name: $test_description: skipped"
-+fi
-
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.bb b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.bb
new file mode 100644
index 0000000..f4855bc
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.bb
@@ -0,0 +1,111 @@
+require e2fsprogs.inc
+
+PR = "r1"
+
+SRC_URI += "file://acinclude.m4 \
+            file://remove.ldconfig.call.patch \
+            file://quiet-debugfs.patch \
+            file://run-ptest \
+            file://ptest.patch \
+            file://mkdir.patch \
+            file://Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch \
+"
+
+SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch"
+
+SRCREV = "d6adf070b0e85f209c0d7f310188b134b5cb7180"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$"
+
+EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \
+                --enable-elf-shlibs --disable-libuuid --disable-uuidd \
+                --disable-libblkid --enable-verbose-makecmds"
+
+EXTRA_OECONF_darwin = "--libdir=${base_libdir} --sbindir=${base_sbindir} --enable-bsd-shlibs"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[fuse] = '--enable-fuse2fs,--disable-fuse2fs,fuse'
+
+do_configure_prepend () {
+	cp ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+do_install () {
+	oe_runmake 'DESTDIR=${D}' install
+	oe_runmake 'DESTDIR=${D}' install-libs
+	# We use blkid from util-linux now so remove from here
+	rm -f ${D}${base_libdir}/libblkid*
+	rm -rf ${D}${includedir}/blkid
+	rm -f ${D}${base_libdir}/pkgconfig/blkid.pc
+	rm -f ${D}${base_sbindir}/blkid
+	rm -f ${D}${base_sbindir}/fsck
+	rm -f ${D}${base_sbindir}/findfs
+
+	# e2initrd_helper and the pkgconfig files belong in libdir
+	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+		install -d ${D}${libdir}
+		mv ${D}${base_libdir}/e2initrd_helper ${D}${libdir}
+		mv ${D}${base_libdir}/pkgconfig ${D}${libdir}
+	fi
+
+	oe_multilib_header ext2fs/ext2_types.h
+	install -d ${D}${base_bindir}
+	mv ${D}${bindir}/chattr ${D}${base_bindir}/chattr.e2fsprogs
+
+	install -v -m 755 ${S}/contrib/populate-extfs.sh ${D}${base_sbindir}/
+
+	# Clean host path (build directory) in compile_et, mk_cmds
+	sed -i -e "s,\(ET_DIR=.*\)${S}/lib/et\(.*\),\1${datadir}/et\2,g" ${D}${bindir}/compile_et
+	sed -i -e "s,\(SS_DIR=.*\)${S}/lib/ss\(.*\),\1${datadir}/ss\2,g" ${D}${bindir}/mk_cmds
+}
+
+# Need to find the right mke2fs.conf file
+e2fsprogs_conf_fixup () {
+	for i in mke2fs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev; do
+		create_wrapper ${D}${base_sbindir}/$i MKE2FS_CONFIG=${sysconfdir}/mke2fs.conf
+	done
+}
+
+do_install_append_class-native() {
+	e2fsprogs_conf_fixup
+}
+
+do_install_append_class-nativesdk() {
+	e2fsprogs_conf_fixup
+}
+
+RDEPENDS_e2fsprogs = "e2fsprogs-badblocks"
+RRECOMMENDS_e2fsprogs = "e2fsprogs-mke2fs e2fsprogs-e2fsck"
+
+PACKAGES =+ "e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks e2fsprogs-resize2fs"
+PACKAGES =+ "libcomerr libss libe2p libext2fs"
+
+FILES_e2fsprogs-resize2fs = "${base_sbindir}/resize2fs*"
+FILES_e2fsprogs-e2fsck = "${base_sbindir}/e2fsck ${base_sbindir}/fsck.ext*"
+FILES_e2fsprogs-mke2fs = "${base_sbindir}/mke2fs ${base_sbindir}/mkfs.ext* ${sysconfdir}/mke2fs.conf"
+FILES_e2fsprogs-tune2fs = "${base_sbindir}/tune2fs ${base_sbindir}/e2label"
+FILES_e2fsprogs-badblocks = "${base_sbindir}/badblocks"
+FILES_libcomerr = "${base_libdir}/libcom_err.so.*"
+FILES_libss = "${base_libdir}/libss.so.*"
+FILES_libe2p = "${base_libdir}/libe2p.so.*"
+FILES_libext2fs = "${libdir}/e2initrd_helper ${base_libdir}/libext2fs.so.*"
+FILES_${PN}-dev += "${datadir}/*/*.awk ${datadir}/*/*.sed ${base_libdir}/*.so ${bindir}/compile_et ${bindir}/mk_cmds"
+
+ALTERNATIVE_${PN} = "chattr"
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_LINK_NAME[chattr] = "${base_bindir}/chattr"
+ALTERNATIVE_TARGET[chattr] = "${base_bindir}/chattr.e2fsprogs"
+
+ALTERNATIVE_${PN}-doc = "fsck.8"
+ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8"
+
+RDEPENDS_${PN}-ptest += "${PN} ${PN}-tune2fs coreutils procps bash"
+
+do_compile_ptest() {
+	oe_runmake -C ${B}/tests
+}
+
+do_install_ptest() {
+	cp -a ${B}/tests ${D}${PTEST_PATH}/test
+	cp -a ${S}/tests/* ${D}${PTEST_PATH}/test
+	sed -e 's!../e2fsck/e2fsck!e2fsck!g' -i ${D}${PTEST_PATH}/test/*/expect*
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_git.bb
deleted file mode 100644
index 9cde8e4..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_git.bb
+++ /dev/null
@@ -1,111 +0,0 @@
-require e2fsprogs.inc
-
-SRC_URI += "file://acinclude.m4 \
-            file://remove.ldconfig.call.patch \
-            file://quiet-debugfs.patch \
-            file://run-ptest \
-            file://ptest.patch \
-            file://mkdir.patch \
-            file://xattr_ordering.patch \
-            file://Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch \
-"
-
-SRCREV = "0f26747167cc9d82df849b0aad387bf824f04544"
-PV = "1.42.99+1.43+git${SRCPV}"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$"
-
-EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \
-                --enable-elf-shlibs --disable-libuuid --disable-uuidd \
-                --disable-libblkid --enable-verbose-makecmds"
-
-EXTRA_OECONF_darwin = "--libdir=${base_libdir} --sbindir=${base_sbindir} --enable-bsd-shlibs"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[fuse] = '--enable-fuse2fs,--disable-fuse2fs,fuse'
-
-do_configure_prepend () {
-	cp ${WORKDIR}/acinclude.m4 ${S}/
-}
-
-do_install () {
-	oe_runmake 'DESTDIR=${D}' install
-	oe_runmake 'DESTDIR=${D}' install-libs
-	# We use blkid from util-linux now so remove from here
-	rm -f ${D}${base_libdir}/libblkid*
-	rm -rf ${D}${includedir}/blkid
-	rm -f ${D}${base_libdir}/pkgconfig/blkid.pc
-	rm -f ${D}${base_sbindir}/blkid
-	rm -f ${D}${base_sbindir}/fsck
-	rm -f ${D}${base_sbindir}/findfs
-
-	# e2initrd_helper and the pkgconfig files belong in libdir
-	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
-		install -d ${D}${libdir}
-		mv ${D}${base_libdir}/e2initrd_helper ${D}${libdir}
-		mv ${D}${base_libdir}/pkgconfig ${D}${libdir}
-	fi
-
-	oe_multilib_header ext2fs/ext2_types.h
-	install -d ${D}${base_bindir}
-	mv ${D}${bindir}/chattr ${D}${base_bindir}/chattr.e2fsprogs
-
-	install -v -m 755 ${S}/contrib/populate-extfs.sh ${D}${base_sbindir}/
-}
-
-# Need to find the right mke2fs.conf file
-e2fsprogs_conf_fixup () {
-	for i in mke2fs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev; do
-		create_wrapper ${D}${base_sbindir}/$i MKE2FS_CONFIG=${sysconfdir}/mke2fs.conf
-	done
-}
-
-do_install_append_class-target() {
-	# Clean host path in compile_et, mk_cmds
-	sed -i -e "s,ET_DIR=\"${S}/lib/et\",ET_DIR=\"${datadir}/et\",g" ${D}${bindir}/compile_et
-	sed -i -e "s,SS_DIR=\"${S}/lib/ss\",SS_DIR=\"${datadir}/ss\",g" ${D}${bindir}/mk_cmds
-}
-
-do_install_append_class-native() {
-	e2fsprogs_conf_fixup
-}
-
-do_install_append_class-nativesdk() {
-	e2fsprogs_conf_fixup
-}
-
-RDEPENDS_e2fsprogs = "e2fsprogs-badblocks"
-RRECOMMENDS_e2fsprogs = "e2fsprogs-mke2fs e2fsprogs-e2fsck"
-
-PACKAGES =+ "e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks e2fsprogs-resize2fs"
-PACKAGES =+ "libcomerr libss libe2p libext2fs"
-
-FILES_e2fsprogs-resize2fs = "${base_sbindir}/resize2fs*"
-FILES_e2fsprogs-e2fsck = "${base_sbindir}/e2fsck ${base_sbindir}/fsck.ext*"
-FILES_e2fsprogs-mke2fs = "${base_sbindir}/mke2fs ${base_sbindir}/mkfs.ext* ${sysconfdir}/mke2fs.conf"
-FILES_e2fsprogs-tune2fs = "${base_sbindir}/tune2fs ${base_sbindir}/e2label"
-FILES_e2fsprogs-badblocks = "${base_sbindir}/badblocks"
-FILES_libcomerr = "${base_libdir}/libcom_err.so.*"
-FILES_libss = "${base_libdir}/libss.so.*"
-FILES_libe2p = "${base_libdir}/libe2p.so.*"
-FILES_libext2fs = "${libdir}/e2initrd_helper ${base_libdir}/libext2fs.so.*"
-FILES_${PN}-dev += "${datadir}/*/*.awk ${datadir}/*/*.sed ${base_libdir}/*.so"
-
-ALTERNATIVE_${PN} = "chattr"
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_LINK_NAME[chattr] = "${base_bindir}/chattr"
-ALTERNATIVE_TARGET[chattr] = "${base_bindir}/chattr.e2fsprogs"
-
-ALTERNATIVE_${PN}-doc = "fsck.8"
-ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8"
-
-RDEPENDS_${PN}-ptest += "${PN} ${PN}-tune2fs coreutils procps bash"
-
-do_compile_ptest() {
-	oe_runmake -C ${B}/tests
-}
-
-do_install_ptest() {
-	cp -a ${B}/tests ${D}${PTEST_PATH}/test
-	cp -a ${S}/tests/* ${D}${PTEST_PATH}/test
-	sed -e 's!../e2fsck/e2fsck!e2fsck!g' -i ${D}${PTEST_PATH}/test/*/expect*
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.148/fix_for_gcc-4.7.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.148/fix_for_gcc-4.7.patch
index bd634b4..c78f95d 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.148/fix_for_gcc-4.7.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.148/fix_for_gcc-4.7.patch
@@ -2,7 +2,7 @@
 gcc 4.7 does not like pointer conversion, so have a void * tmp var to work 
 around following compilation issue.
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2011/07/07
 
 | md5.c: In function 'md5_finish_ctx':
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.148/gcc6.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.148/gcc6.patch
new file mode 100644
index 0000000..b56a754
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.148/gcc6.patch
@@ -0,0 +1,23 @@
+Fix warnings found with gcc6
+
+| ../../elfutils-0.148/libdw/dwarf_siblingof.c: In function 'dwarf_siblingof':
+| ../../elfutils-0.148/libdw/dwarf_siblingof.c:69:6: error: nonnull argument 'result' compared to NULL [-Werror=nonnull-compare]
+|    if (result == NULL)
+|       ^
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Inappropriate [ unmaintained ]
+Index: elfutils-0.148/libdw/dwarf_siblingof.c
+===================================================================
+--- elfutils-0.148.orig/libdw/dwarf_siblingof.c
++++ elfutils-0.148/libdw/dwarf_siblingof.c
+@@ -66,9 +66,6 @@ dwarf_siblingof (die, result)
+   if (die == NULL)
+     return -1;
+ 
+-  if (result == NULL)
+-    return -1;
+-
+   if (result != die)
+     result->addr = NULL;
+ 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch
deleted file mode 100644
index c8d1c89..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch
+++ /dev/null
@@ -1,1163 +0,0 @@
-From 4b0fe80b3951f044c1c1b14d1d7f5f0b8ab67507 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 06:35:34 +0000
-Subject: [PATCH] build: Provide alternatives for glibc assumptions helps
- compiling it on musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- Makefile.am                      |  2 +-
- lib/color.c                      |  2 +-
- lib/crc32_file.c                 |  4 +++-
- lib/fixedsizehash.h              |  4 ++--
- lib/system.h                     | 11 +++++++++++
- lib/xmalloc.c                    |  2 +-
- libasm/asm_end.c                 |  2 +-
- libasm/asm_newscn.c              |  2 +-
- libcpu/i386_gendis.c             |  2 +-
- libcpu/i386_lex.c                |  2 +-
- libcpu/i386_parse.c              |  2 +-
- libdw/Makefile.am                |  2 +-
- libdw/libdw_alloc.c              |  3 ++-
- libdwfl/Makefile.am              |  2 ++
- libdwfl/dwfl_build_id_find_elf.c |  3 ++-
- libdwfl/dwfl_error.c             |  4 +++-
- libdwfl/dwfl_module_getdwarf.c   |  1 +
- libdwfl/find-debuginfo.c         |  2 +-
- libdwfl/libdwfl_crc32_file.c     | 10 ++++++++++
- libdwfl/linux-kernel-modules.c   |  1 +
- libebl/eblopenbackend.c          |  2 +-
- libebl/eblwstrtab.c              |  2 +-
- libelf/elf.h                     |  9 ++++++---
- libelf/libelf.h                  |  1 +
- libelf/libelfP.h                 |  1 +
- src/addr2line.c                  |  2 +-
- src/ar.c                         |  2 +-
- src/arlib.c                      |  2 +-
- src/arlib2.c                     |  2 +-
- src/elfcmp.c                     |  2 +-
- src/elflint.c                    |  2 +-
- src/findtextrel.c                |  2 +-
- src/i386_ld.c                    |  2 +-
- src/ld.c                         |  2 +-
- src/ldgeneric.c                  |  2 +-
- src/ldlex.c                      |  2 +-
- src/ldscript.c                   |  2 +-
- src/nm.c                         |  2 +-
- src/objdump.c                    |  2 +-
- src/ranlib.c                     |  2 +-
- src/readelf.c                    |  2 +-
- src/size.c                       |  2 +-
- src/stack.c                      |  2 +-
- src/strings.c                    |  2 +-
- src/strip.c                      |  2 +-
- src/unstrip.c                    |  2 +-
- tests/addrscopes.c               |  2 +-
- tests/allregs.c                  |  2 +-
- tests/backtrace-data.c           |  2 +-
- tests/backtrace-dwarf.c          |  2 +-
- tests/backtrace.c                |  2 +-
- tests/buildid.c                  |  2 +-
- tests/debugaltlink.c             |  2 +-
- tests/debuglink.c                |  2 +-
- tests/deleted.c                  |  2 +-
- tests/dwfl-addr-sect.c           |  2 +-
- tests/dwfl-bug-addr-overflow.c   |  2 +-
- tests/dwfl-bug-fd-leak.c         |  2 +-
- tests/dwfl-bug-getmodules.c      |  2 +-
- tests/dwfl-report-elf-align.c    |  2 +-
- tests/dwfllines.c                |  2 +-
- tests/dwflmodtest.c              |  2 +-
- tests/dwflsyms.c                 |  2 +-
- tests/early-offscn.c             |  2 +-
- tests/ecp.c                      |  2 +-
- tests/find-prologues.c           |  2 +-
- tests/funcretval.c               |  2 +-
- tests/funcscopes.c               |  2 +-
- tests/getsrc_die.c               |  2 +-
- tests/line2addr.c                |  2 +-
- tests/low_high_pc.c              |  2 +-
- tests/md5-sha1-test.c            |  2 +-
- tests/rdwrmmap.c                 |  2 +-
- tests/saridx.c                   |  2 +-
- tests/sectiondump.c              |  2 +-
- tests/varlocs.c                  |  2 +-
- tests/vdsosyms.c                 |  2 +-
- 77 files changed, 109 insertions(+), 73 deletions(-)
-
-Index: elfutils-0.164/Makefile.am
-===================================================================
---- elfutils-0.164.orig/Makefile.am
-+++ elfutils-0.164/Makefile.am
-@@ -24,7 +24,7 @@ pkginclude_HEADERS = version.h
- 
- # Add doc back when we have some real content.
- SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \
--	  backends src po tests
-+	  backends po tests
- 
- EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
- 	     COPYING COPYING-GPLV2 COPYING-LGPLV3
-Index: elfutils-0.164/lib/color.c
-===================================================================
---- elfutils-0.164.orig/lib/color.c
-+++ elfutils-0.164/lib/color.c
-@@ -32,7 +32,7 @@
- #endif
- 
- #include <argp.h>
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- #include <stdlib.h>
- #include <string.h>
-Index: elfutils-0.164/lib/crc32_file.c
-===================================================================
---- elfutils-0.164.orig/lib/crc32_file.c
-+++ elfutils-0.164/lib/crc32_file.c
-@@ -30,12 +30,14 @@
- # include <config.h>
- #endif
- 
--#include "system.h"
- #include <errno.h>
- #include <unistd.h>
-+#include <stdint.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
- 
-+#include "system.h"
-+
- int
- crc32_file (int fd, uint32_t *resp)
- {
-Index: elfutils-0.164/lib/fixedsizehash.h
-===================================================================
---- elfutils-0.164.orig/lib/fixedsizehash.h
-+++ elfutils-0.164/lib/fixedsizehash.h
-@@ -30,12 +30,12 @@
- #include <errno.h>
- #include <stdlib.h>
- #include <string.h>
--#include <sys/cdefs.h>
- #include <sys/param.h>
- 
- #include <system.h>
- 
--#define CONCAT(t1,t2) __CONCAT (t1,t2)
-+#define CONCAT1(x,y) x##y
-+#define CONCAT(x,y) CONCAT1(x,y)
- 
- /* Before including this file the following macros must be defined:
- 
-Index: elfutils-0.164/lib/system.h
-===================================================================
---- elfutils-0.164.orig/lib/system.h
-+++ elfutils-0.164/lib/system.h
-@@ -49,6 +49,16 @@
- #else
- # error "Unknown byte order"
- #endif
-+#ifndef TEMP_FAILURE_RETRY
-+#define TEMP_FAILURE_RETRY(expression) \
-+  (__extension__							      \
-+    ({ long int __result;						      \
-+       do __result = (long int) (expression);				      \
-+       while (__result == -1L && errno == EINTR);			      \
-+       __result; }))
-+#endif
-+
-+#define error(status, errno, ...) err(status, __VA_ARGS__)
- 
- extern void *xmalloc (size_t) __attribute__ ((__malloc__));
- extern void *xcalloc (size_t, size_t) __attribute__ ((__malloc__));
-Index: elfutils-0.164/lib/xmalloc.c
-===================================================================
---- elfutils-0.164.orig/lib/xmalloc.c
-+++ elfutils-0.164/lib/xmalloc.c
-@@ -30,7 +30,7 @@
- # include <config.h>
- #endif
- 
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- #include <stddef.h>
- #include <stdlib.h>
-Index: elfutils-0.164/libasm/asm_end.c
-===================================================================
---- elfutils-0.164.orig/libasm/asm_end.c
-+++ elfutils-0.164/libasm/asm_end.c
-@@ -32,7 +32,7 @@
- #endif
- 
- #include <assert.h>
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- #include <stdio.h>
- #include <stdlib.h>
-Index: elfutils-0.164/libasm/asm_newscn.c
-===================================================================
---- elfutils-0.164.orig/libasm/asm_newscn.c
-+++ elfutils-0.164/libasm/asm_newscn.c
-@@ -32,7 +32,7 @@
- #endif
- 
- #include <assert.h>
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- #include <stdlib.h>
- #include <string.h>
-Index: elfutils-0.164/libcpu/i386_gendis.c
-===================================================================
---- elfutils-0.164.orig/libcpu/i386_gendis.c
-+++ elfutils-0.164/libcpu/i386_gendis.c
-@@ -31,7 +31,7 @@
- # include <config.h>
- #endif
- 
--#include <error.h>
-+#include <err.h>
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
-Index: elfutils-0.164/libcpu/i386_lex.c
-===================================================================
---- elfutils-0.164.orig/libcpu/i386_lex.c
-+++ elfutils-0.164/libcpu/i386_lex.c
-@@ -571,7 +571,7 @@ char *i386_text;
- #endif
- 
- #include <ctype.h>
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- 
- #include <system.h>
-Index: elfutils-0.164/libcpu/i386_parse.c
-===================================================================
---- elfutils-0.164.orig/libcpu/i386_parse.c
-+++ elfutils-0.164/libcpu/i386_parse.c
-@@ -107,7 +107,7 @@
- #include <assert.h>
- #include <ctype.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <inttypes.h>
- #include <libintl.h>
- #include <math.h>
-Index: elfutils-0.164/libdw/Makefile.am
-===================================================================
---- elfutils-0.164.orig/libdw/Makefile.am
-+++ elfutils-0.164/libdw/Makefile.am
-@@ -117,7 +117,7 @@ libdw.so$(EXEEXT): $(srcdir)/libdw.map l
- 		-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
- 		-Wl,--version-script,$<,--no-undefined \
- 		-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
--		-ldl $(argp_LDADD) $(zip_LIBS) $(libdw_so_LDLIBS)
-+		-ldl $(argp_LDADD) $(zip_LIBS) $(libdw_so_LDLIBS) -lfts -largp
- 	@$(textrel_check)
- 	$(AM_V_at)ln -fs $@ $@.$(VERSION)
- 
-Index: elfutils-0.164/libdw/libdw_alloc.c
-===================================================================
---- elfutils-0.164.orig/libdw/libdw_alloc.c
-+++ elfutils-0.164/libdw/libdw_alloc.c
-@@ -31,11 +31,12 @@
- # include <config.h>
- #endif
- 
--#include <error.h>
-+#include <err.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <sys/param.h>
- #include "libdwP.h"
-+#include "system.h"
- 
- 
- void *
-Index: elfutils-0.164/libdwfl/Makefile.am
-===================================================================
---- elfutils-0.164.orig/libdwfl/Makefile.am
-+++ elfutils-0.164/libdwfl/Makefile.am
-@@ -86,6 +86,8 @@ libelf = ../libelf/libelf.so
- libebl = ../libebl/libebl.a
- libeu = ../lib/libeu.a
- 
-+LDADD = -lfts
-+
- libdwfl_pic_a_SOURCES =
- am_libdwfl_pic_a_OBJECTS = $(libdwfl_a_SOURCES:.c=.os)
- 
-Index: elfutils-0.164/libdwfl/dwfl_build_id_find_elf.c
-===================================================================
---- elfutils-0.164.orig/libdwfl/dwfl_build_id_find_elf.c
-+++ elfutils-0.164/libdwfl/dwfl_build_id_find_elf.c
-@@ -27,6 +27,7 @@
-    not, see <http://www.gnu.org/licenses/>.  */
- 
- #include "libdwflP.h"
-+#include "system.h"
- #include <inttypes.h>
- #include <fcntl.h>
- #include <unistd.h>
-@@ -94,7 +95,7 @@ __libdwfl_open_by_build_id (Dwfl_Module
- 	{
- 	  if (*file_name != NULL)
- 	    free (*file_name);
--	  *file_name = canonicalize_file_name (name);
-+	  *file_name = realpath (name, NULL);
- 	  if (*file_name == NULL)
- 	    {
- 	      *file_name = name;
-Index: elfutils-0.164/libdwfl/dwfl_error.c
-===================================================================
---- elfutils-0.164.orig/libdwfl/dwfl_error.c
-+++ elfutils-0.164/libdwfl/dwfl_error.c
-@@ -140,6 +140,7 @@ __libdwfl_seterrno (Dwfl_Error error)
- const char *
- dwfl_errmsg (int error)
- {
-+  static __thread char s[64] = "";
-   if (error == 0 || error == -1)
-     {
-       int last_error = global_error;
-@@ -154,7 +155,8 @@ dwfl_errmsg (int error)
-   switch (error &~ 0xffff)
-     {
-     case OTHER_ERROR (ERRNO):
--      return strerror_r (error & 0xffff, "bad", 0);
-+      strerror_r (error & 0xffff, s, sizeof(s));
-+      return s;
-     case OTHER_ERROR (LIBELF):
-       return elf_errmsg (error & 0xffff);
-     case OTHER_ERROR (LIBDW):
-Index: elfutils-0.164/libdwfl/dwfl_module_getdwarf.c
-===================================================================
---- elfutils-0.164.orig/libdwfl/dwfl_module_getdwarf.c
-+++ elfutils-0.164/libdwfl/dwfl_module_getdwarf.c
-@@ -31,6 +31,7 @@
- #include <fcntl.h>
- #include <string.h>
- #include <unistd.h>
-+#include "system.h"
- #include "../libdw/libdwP.h"	/* DWARF_E_* values are here.  */
- #include "../libelf/libelfP.h"
- 
-Index: elfutils-0.164/libdwfl/find-debuginfo.c
-===================================================================
---- elfutils-0.164.orig/libdwfl/find-debuginfo.c
-+++ elfutils-0.164/libdwfl/find-debuginfo.c
-@@ -372,7 +372,7 @@ dwfl_standard_find_debuginfo (Dwfl_Modul
-       /* If FILE_NAME is a symlink, the debug file might be associated
- 	 with the symlink target name instead.  */
- 
--      char *canon = canonicalize_file_name (file_name);
-+      char *canon = realpath (file_name, NULL);
-       if (canon != NULL && strcmp (file_name, canon))
- 	fd = find_debuginfo_in_path (mod, canon,
- 				     debuglink_file, debuglink_crc,
-Index: elfutils-0.164/libdwfl/libdwfl_crc32_file.c
-===================================================================
---- elfutils-0.164.orig/libdwfl/libdwfl_crc32_file.c
-+++ elfutils-0.164/libdwfl/libdwfl_crc32_file.c
-@@ -31,6 +31,16 @@
- 
- #define crc32_file attribute_hidden __libdwfl_crc32_file
- #define crc32 __libdwfl_crc32
-+
-+#ifndef TEMP_FAILURE_RETRY
-+#define TEMP_FAILURE_RETRY(expression) \
-+  (__extension__							      \
-+    ({ long int __result;						      \
-+       do __result = (long int) (expression);				      \
-+       while (__result == -1L && errno == EINTR);			      \
-+       __result; }))
-+#endif
-+
- #define LIB_SYSTEM_H	1
- #include <libdwflP.h>
- #include "../lib/crc32_file.c"
-Index: elfutils-0.164/libdwfl/linux-kernel-modules.c
-===================================================================
---- elfutils-0.164.orig/libdwfl/linux-kernel-modules.c
-+++ elfutils-0.164/libdwfl/linux-kernel-modules.c
-@@ -34,6 +34,7 @@
- #include <config.h>
- 
- #include "libdwflP.h"
-+#include "system.h"
- #include <inttypes.h>
- #include <errno.h>
- #include <stdio.h>
-Index: elfutils-0.164/libebl/eblopenbackend.c
-===================================================================
---- elfutils-0.164.orig/libebl/eblopenbackend.c
-+++ elfutils-0.164/libebl/eblopenbackend.c
-@@ -32,7 +32,7 @@
- 
- #include <assert.h>
- #include <dlfcn.h>
--#include <error.h>
-+#include <err.h>
- #include <libelfP.h>
- #include <dwarf.h>
- #include <stdlib.h>
-Index: elfutils-0.164/libebl/eblwstrtab.c
-===================================================================
---- elfutils-0.164.orig/libebl/eblwstrtab.c
-+++ elfutils-0.164/libebl/eblwstrtab.c
-@@ -305,7 +305,7 @@ copystrings (struct Ebl_WStrent *nodep,
- 
-   /* Process the current node.  */
-   nodep->offset = *offsetp;
--  *freep = wmempcpy (*freep, nodep->string, nodep->len);
-+  *freep = wmemcpy (*freep, nodep->string, nodep->len) + nodep->len;
-   *offsetp += nodep->len * sizeof (wchar_t);
- 
-   for (subs = nodep->next; subs != NULL; subs = subs->next)
-Index: elfutils-0.164/libelf/elf.h
-===================================================================
---- elfutils-0.164.orig/libelf/elf.h
-+++ elfutils-0.164/libelf/elf.h
-@@ -21,7 +21,9 @@
- 
- #include <features.h>
- 
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- 
- /* Standard ELF types.  */
- 
-@@ -3552,7 +3554,8 @@ enum
- 
- #define R_TILEGX_NUM		130
- 
--
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
- 
- #endif	/* elf.h */
-Index: elfutils-0.164/libelf/libelf.h
-===================================================================
---- elfutils-0.164.orig/libelf/libelf.h
-+++ elfutils-0.164/libelf/libelf.h
-@@ -29,6 +29,7 @@
- #ifndef _LIBELF_H
- #define _LIBELF_H 1
- 
-+#include <fcntl.h>
- #include <stdint.h>
- #include <sys/types.h>
- 
-Index: elfutils-0.164/libelf/libelfP.h
-===================================================================
---- elfutils-0.164.orig/libelf/libelfP.h
-+++ elfutils-0.164/libelf/libelfP.h
-@@ -36,6 +36,7 @@
- 
- #include <ar.h>
- #include <gelf.h>
-+#include <libelf.h>
- 
- #include <errno.h>
- #include <stdint.h>
-Index: elfutils-0.164/src/addr2line.c
-===================================================================
---- elfutils-0.164.orig/src/addr2line.c
-+++ elfutils-0.164/src/addr2line.c
-@@ -23,7 +23,7 @@
- #include <argp.h>
- #include <assert.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <inttypes.h>
- #include <libdwfl.h>
-Index: elfutils-0.164/src/ar.c
-===================================================================
---- elfutils-0.164.orig/src/ar.c
-+++ elfutils-0.164/src/ar.c
-@@ -22,7 +22,7 @@
- 
- #include <argp.h>
- #include <assert.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <libintl.h>
-Index: elfutils-0.164/src/arlib.c
-===================================================================
---- elfutils-0.164.orig/src/arlib.c
-+++ elfutils-0.164/src/arlib.c
-@@ -21,7 +21,7 @@
- #endif
- 
- #include <assert.h>
--#include <error.h>
-+#include <err.h>
- #include <gelf.h>
- #include <libintl.h>
- #include <stdio.h>
-Index: elfutils-0.164/src/arlib2.c
-===================================================================
---- elfutils-0.164.orig/src/arlib2.c
-+++ elfutils-0.164/src/arlib2.c
-@@ -20,7 +20,7 @@
- # include <config.h>
- #endif
- 
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- #include <limits.h>
- #include <string.h>
-Index: elfutils-0.164/src/elfcmp.c
-===================================================================
---- elfutils-0.164.orig/src/elfcmp.c
-+++ elfutils-0.164/src/elfcmp.c
-@@ -23,7 +23,7 @@
- #include <argp.h>
- #include <assert.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <locale.h>
- #include <libintl.h>
-Index: elfutils-0.164/src/elflint.c
-===================================================================
---- elfutils-0.164.orig/src/elflint.c
-+++ elfutils-0.164/src/elflint.c
-@@ -24,7 +24,7 @@
- #include <assert.h>
- #include <byteswap.h>
- #include <endian.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <inttypes.h>
-Index: elfutils-0.164/src/findtextrel.c
-===================================================================
---- elfutils-0.164.orig/src/findtextrel.c
-+++ elfutils-0.164/src/findtextrel.c
-@@ -23,7 +23,7 @@
- #include <argp.h>
- #include <assert.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <libdw.h>
-Index: elfutils-0.164/src/i386_ld.c
-===================================================================
---- elfutils-0.164.orig/src/i386_ld.c
-+++ elfutils-0.164/src/i386_ld.c
-@@ -20,7 +20,7 @@
- #endif
- 
- #include <assert.h>
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- #include <stdlib.h>
- #include <string.h>
-Index: elfutils-0.164/src/ld.c
-===================================================================
---- elfutils-0.164.orig/src/ld.c
-+++ elfutils-0.164/src/ld.c
-@@ -21,7 +21,7 @@
- 
- #include <argp.h>
- #include <assert.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <libelf.h>
- #include <libintl.h>
-Index: elfutils-0.164/src/ldgeneric.c
-===================================================================
---- elfutils-0.164.orig/src/ldgeneric.c
-+++ elfutils-0.164/src/ldgeneric.c
-@@ -23,7 +23,7 @@
- #include <ctype.h>
- #include <dlfcn.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <fnmatch.h>
- #include <gelf.h>
-Index: elfutils-0.164/src/ldlex.c
-===================================================================
---- elfutils-0.164.orig/src/ldlex.c
-+++ elfutils-0.164/src/ldlex.c
-@@ -1099,7 +1099,7 @@ char *ldtext;
- #include <assert.h>
- #include <ctype.h>
- #include <elf.h>
--#include <error.h>
-+#include <err.h>
- #include <inttypes.h>
- #include <libintl.h>
- #include <stdbool.h>
-Index: elfutils-0.164/src/ldscript.c
-===================================================================
---- elfutils-0.164.orig/src/ldscript.c
-+++ elfutils-0.164/src/ldscript.c
-@@ -95,7 +95,7 @@
- #endif
- 
- #include <assert.h>
--#include <error.h>
-+#include <err.h>
- #include <libintl.h>
- #include <stdbool.h>
- #include <stdint.h>
-Index: elfutils-0.164/src/nm.c
-===================================================================
---- elfutils-0.164.orig/src/nm.c
-+++ elfutils-0.164/src/nm.c
-@@ -26,7 +26,7 @@
- #include <ctype.h>
- #include <dwarf.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <inttypes.h>
-Index: elfutils-0.164/src/objdump.c
-===================================================================
---- elfutils-0.164.orig/src/objdump.c
-+++ elfutils-0.164/src/objdump.c
-@@ -21,7 +21,7 @@
- #endif
- 
- #include <argp.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <inttypes.h>
- #include <libintl.h>
-Index: elfutils-0.164/src/ranlib.c
-===================================================================
---- elfutils-0.164.orig/src/ranlib.c
-+++ elfutils-0.164/src/ranlib.c
-@@ -24,7 +24,7 @@
- #include <argp.h>
- #include <assert.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <libintl.h>
-Index: elfutils-0.164/src/readelf.c
-===================================================================
---- elfutils-0.164.orig/src/readelf.c
-+++ elfutils-0.164/src/readelf.c
-@@ -25,7 +25,7 @@
- #include <ctype.h>
- #include <dwarf.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <inttypes.h>
-Index: elfutils-0.164/src/size.c
-===================================================================
---- elfutils-0.164.orig/src/size.c
-+++ elfutils-0.164/src/size.c
-@@ -21,7 +21,7 @@
- #endif
- 
- #include <argp.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <inttypes.h>
-Index: elfutils-0.164/src/stack.c
-===================================================================
---- elfutils-0.164.orig/src/stack.c
-+++ elfutils-0.164/src/stack.c
-@@ -18,7 +18,7 @@
- #include <config.h>
- #include <assert.h>
- #include <argp.h>
--#include <error.h>
-+#include <err.h>
- #include <stdlib.h>
- #include <inttypes.h>
- #include <stdio.h>
-Index: elfutils-0.164/src/strings.c
-===================================================================
---- elfutils-0.164.orig/src/strings.c
-+++ elfutils-0.164/src/strings.c
-@@ -25,7 +25,7 @@
- #include <ctype.h>
- #include <endian.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <inttypes.h>
-Index: elfutils-0.164/src/strip.c
-===================================================================
---- elfutils-0.164.orig/src/strip.c
-+++ elfutils-0.164/src/strip.c
-@@ -24,7 +24,7 @@
- #include <assert.h>
- #include <byteswap.h>
- #include <endian.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <libelf.h>
-Index: elfutils-0.164/src/unstrip.c
-===================================================================
---- elfutils-0.164.orig/src/unstrip.c
-+++ elfutils-0.164/src/unstrip.c
-@@ -31,7 +31,7 @@
- #include <argp.h>
- #include <assert.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <fnmatch.h>
- #include <libintl.h>
-Index: elfutils-0.164/tests/addrscopes.c
-===================================================================
---- elfutils-0.164.orig/tests/addrscopes.c
-+++ elfutils-0.164/tests/addrscopes.c
-@@ -25,7 +25,7 @@
- #include <stdio_ext.h>
- #include <locale.h>
- #include <stdlib.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- 
- 
-Index: elfutils-0.164/tests/allregs.c
-===================================================================
---- elfutils-0.164.orig/tests/allregs.c
-+++ elfutils-0.164/tests/allregs.c
-@@ -21,7 +21,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
--#include <error.h>
-+#include <err.h>
- #include <locale.h>
- #include <argp.h>
- #include <assert.h>
-Index: elfutils-0.164/tests/backtrace-data.c
-===================================================================
---- elfutils-0.164.orig/tests/backtrace-data.c
-+++ elfutils-0.164/tests/backtrace-data.c
-@@ -27,7 +27,7 @@
- #include <dirent.h>
- #include <stdlib.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <unistd.h>
- #include <dwarf.h>
- #if defined(__x86_64__) && defined(__linux__)
-Index: elfutils-0.164/tests/backtrace-dwarf.c
-===================================================================
---- elfutils-0.164.orig/tests/backtrace-dwarf.c
-+++ elfutils-0.164/tests/backtrace-dwarf.c
-@@ -22,7 +22,7 @@
- #include <stdio_ext.h>
- #include <locale.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <unistd.h>
- #include <sys/ptrace.h>
- #include <sys/types.h>
-Index: elfutils-0.164/tests/backtrace.c
-===================================================================
---- elfutils-0.164.orig/tests/backtrace.c
-+++ elfutils-0.164/tests/backtrace.c
-@@ -24,7 +24,7 @@
- #include <dirent.h>
- #include <stdlib.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <unistd.h>
- #include <dwarf.h>
- #ifdef __linux__
-Index: elfutils-0.164/tests/buildid.c
-===================================================================
---- elfutils-0.164.orig/tests/buildid.c
-+++ elfutils-0.164/tests/buildid.c
-@@ -23,7 +23,7 @@
- #include ELFUTILS_HEADER(elf)
- #include ELFUTILS_HEADER(dwelf)
- #include <stdio.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <stdlib.h>
- #include <sys/types.h>
-Index: elfutils-0.164/tests/debugaltlink.c
-===================================================================
---- elfutils-0.164.orig/tests/debugaltlink.c
-+++ elfutils-0.164/tests/debugaltlink.c
-@@ -23,7 +23,7 @@
- #include ELFUTILS_HEADER(dw)
- #include ELFUTILS_HEADER(dwelf)
- #include <stdio.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <stdlib.h>
- #include <sys/types.h>
-Index: elfutils-0.164/tests/debuglink.c
-===================================================================
---- elfutils-0.164.orig/tests/debuglink.c
-+++ elfutils-0.164/tests/debuglink.c
-@@ -21,7 +21,7 @@
- #include <errno.h>
- #include ELFUTILS_HEADER(dwelf)
- #include <stdio.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <stdlib.h>
- #include <sys/types.h>
-Index: elfutils-0.164/tests/deleted.c
-===================================================================
---- elfutils-0.164.orig/tests/deleted.c
-+++ elfutils-0.164/tests/deleted.c
-@@ -21,7 +21,7 @@
- #include <unistd.h>
- #include <assert.h>
- #include <stdio.h>
--#include <error.h>
-+#include <err.h>
- #include <errno.h>
- #ifdef __linux__
- #include <sys/prctl.h>
-Index: elfutils-0.164/tests/dwfl-addr-sect.c
-===================================================================
---- elfutils-0.164.orig/tests/dwfl-addr-sect.c
-+++ elfutils-0.164/tests/dwfl-addr-sect.c
-@@ -23,7 +23,7 @@
- #include <stdio_ext.h>
- #include <stdlib.h>
- #include <string.h>
--#include <error.h>
-+#include <err.h>
- #include <locale.h>
- #include <argp.h>
- #include ELFUTILS_HEADER(dwfl)
-Index: elfutils-0.164/tests/dwfl-bug-addr-overflow.c
-===================================================================
---- elfutils-0.164.orig/tests/dwfl-bug-addr-overflow.c
-+++ elfutils-0.164/tests/dwfl-bug-addr-overflow.c
-@@ -20,7 +20,7 @@
- #include <inttypes.h>
- #include <stdio.h>
- #include <stdio_ext.h>
--#include <error.h>
-+#include <err.h>
- #include <locale.h>
- #include ELFUTILS_HEADER(dwfl)
- 
-Index: elfutils-0.164/tests/dwfl-bug-fd-leak.c
-===================================================================
---- elfutils-0.164.orig/tests/dwfl-bug-fd-leak.c
-+++ elfutils-0.164/tests/dwfl-bug-fd-leak.c
-@@ -24,7 +24,7 @@
- #include <dirent.h>
- #include <stdlib.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <unistd.h>
- #include <dwarf.h>
- #include <sys/resource.h>
-Index: elfutils-0.164/tests/dwfl-bug-getmodules.c
-===================================================================
---- elfutils-0.164.orig/tests/dwfl-bug-getmodules.c
-+++ elfutils-0.164/tests/dwfl-bug-getmodules.c
-@@ -18,7 +18,7 @@
- #include <config.h>
- #include ELFUTILS_HEADER(dwfl)
- 
--#include <error.h>
-+#include <err.h>
- 
- static const Dwfl_Callbacks callbacks =
-   {
-Index: elfutils-0.164/tests/dwfl-report-elf-align.c
-===================================================================
---- elfutils-0.164.orig/tests/dwfl-report-elf-align.c
-+++ elfutils-0.164/tests/dwfl-report-elf-align.c
-@@ -20,7 +20,7 @@
- #include <inttypes.h>
- #include <stdio.h>
- #include <stdio_ext.h>
--#include <error.h>
-+#include <err.h>
- #include <locale.h>
- #include <string.h>
- #include <stdlib.h>
-Index: elfutils-0.164/tests/dwfllines.c
-===================================================================
---- elfutils-0.164.orig/tests/dwfllines.c
-+++ elfutils-0.164/tests/dwfllines.c
-@@ -27,7 +27,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
--#include <error.h>
-+#include <err.h>
- 
- int
- main (int argc, char *argv[])
-Index: elfutils-0.164/tests/dwflmodtest.c
-===================================================================
---- elfutils-0.164.orig/tests/dwflmodtest.c
-+++ elfutils-0.164/tests/dwflmodtest.c
-@@ -23,7 +23,7 @@
- #include <stdio_ext.h>
- #include <stdlib.h>
- #include <string.h>
--#include <error.h>
-+#include <err.h>
- #include <locale.h>
- #include <argp.h>
- #include ELFUTILS_HEADER(dwfl)
-Index: elfutils-0.164/tests/dwflsyms.c
-===================================================================
---- elfutils-0.164.orig/tests/dwflsyms.c
-+++ elfutils-0.164/tests/dwflsyms.c
-@@ -25,7 +25,7 @@
- #include <stdio.h>
- #include <stdio_ext.h>
- #include <stdlib.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- 
- static const char *
-Index: elfutils-0.164/tests/early-offscn.c
-===================================================================
---- elfutils-0.164.orig/tests/early-offscn.c
-+++ elfutils-0.164/tests/early-offscn.c
-@@ -19,7 +19,7 @@
- #endif
- 
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <stdio.h>
-Index: elfutils-0.164/tests/ecp.c
-===================================================================
---- elfutils-0.164.orig/tests/ecp.c
-+++ elfutils-0.164/tests/ecp.c
-@@ -20,7 +20,7 @@
- #endif
- 
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <stdlib.h>
-Index: elfutils-0.164/tests/find-prologues.c
-===================================================================
---- elfutils-0.164.orig/tests/find-prologues.c
-+++ elfutils-0.164/tests/find-prologues.c
-@@ -25,7 +25,7 @@
- #include <stdio_ext.h>
- #include <locale.h>
- #include <stdlib.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <fnmatch.h>
- 
-Index: elfutils-0.164/tests/funcretval.c
-===================================================================
---- elfutils-0.164.orig/tests/funcretval.c
-+++ elfutils-0.164/tests/funcretval.c
-@@ -25,7 +25,7 @@
- #include <stdio_ext.h>
- #include <locale.h>
- #include <stdlib.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <fnmatch.h>
- 
-Index: elfutils-0.164/tests/funcscopes.c
-===================================================================
---- elfutils-0.164.orig/tests/funcscopes.c
-+++ elfutils-0.164/tests/funcscopes.c
-@@ -25,7 +25,7 @@
- #include <stdio_ext.h>
- #include <locale.h>
- #include <stdlib.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <fnmatch.h>
- 
-Index: elfutils-0.164/tests/getsrc_die.c
-===================================================================
---- elfutils-0.164.orig/tests/getsrc_die.c
-+++ elfutils-0.164/tests/getsrc_die.c
-@@ -19,7 +19,7 @@
- #endif
- 
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <inttypes.h>
- #include <libelf.h>
-Index: elfutils-0.164/tests/line2addr.c
-===================================================================
---- elfutils-0.164.orig/tests/line2addr.c
-+++ elfutils-0.164/tests/line2addr.c
-@@ -26,7 +26,7 @@
- #include <locale.h>
- #include <stdlib.h>
- #include <string.h>
--#include <error.h>
-+#include <err.h>
- 
- 
- static void
-Index: elfutils-0.164/tests/low_high_pc.c
-===================================================================
---- elfutils-0.164.orig/tests/low_high_pc.c
-+++ elfutils-0.164/tests/low_high_pc.c
-@@ -25,7 +25,7 @@
- #include <stdio_ext.h>
- #include <locale.h>
- #include <stdlib.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <fnmatch.h>
- 
-Index: elfutils-0.164/tests/md5-sha1-test.c
-===================================================================
---- elfutils-0.164.orig/tests/md5-sha1-test.c
-+++ elfutils-0.164/tests/md5-sha1-test.c
-@@ -19,7 +19,7 @@
- #endif
- 
- #include <string.h>
--#include <error.h>
-+#include <err.h>
- 
- #include "md5.h"
- #include "sha1.h"
-Index: elfutils-0.164/tests/rdwrmmap.c
-===================================================================
---- elfutils-0.164.orig/tests/rdwrmmap.c
-+++ elfutils-0.164/tests/rdwrmmap.c
-@@ -19,7 +19,7 @@
- #endif
- 
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <unistd.h>
-Index: elfutils-0.164/tests/saridx.c
-===================================================================
---- elfutils-0.164.orig/tests/saridx.c
-+++ elfutils-0.164/tests/saridx.c
-@@ -17,7 +17,7 @@
- 
- #include <config.h>
- 
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <stdio.h>
-Index: elfutils-0.164/tests/sectiondump.c
-===================================================================
---- elfutils-0.164.orig/tests/sectiondump.c
-+++ elfutils-0.164/tests/sectiondump.c
-@@ -18,7 +18,7 @@
- #include <config.h>
- 
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <fcntl.h>
- #include <gelf.h>
- #include <inttypes.h>
-Index: elfutils-0.164/tests/varlocs.c
-===================================================================
---- elfutils-0.164.orig/tests/varlocs.c
-+++ elfutils-0.164/tests/varlocs.c
-@@ -25,7 +25,7 @@
- #include <dwarf.h>
- #include <stdio.h>
- #include <stdlib.h>
--#include <error.h>
-+#include <err.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-Index: elfutils-0.164/tests/vdsosyms.c
-===================================================================
---- elfutils-0.164.orig/tests/vdsosyms.c
-+++ elfutils-0.164/tests/vdsosyms.c
-@@ -18,7 +18,7 @@
- #include <config.h>
- #include <assert.h>
- #include <errno.h>
--#include <error.h>
-+#include <err.h>
- #include <inttypes.h>
- #include <stdio.h>
- #include <string.h>
-Index: elfutils-0.164/libelf/elf_getarsym.c
-===================================================================
---- elfutils-0.164.orig/libelf/elf_getarsym.c
-+++ elfutils-0.164/libelf/elf_getarsym.c
-@@ -302,7 +302,7 @@ elf_getarsym (Elf *elf, size_t *ptr)
- 		arsym[cnt].as_off = (*u32)[cnt];
- 
- 	      arsym[cnt].as_hash = _dl_elf_hash (str_data);
--	      str_data = rawmemchr (str_data, '\0') + 1;
-+	      str_data = memchr (str_data, '\0', SIZE_MAX) + 1;
- 	    }
- 
- 	  /* At the end a special entry.  */
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/uclibc-support.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/uclibc-support.patch
deleted file mode 100644
index 966b70f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/uclibc-support.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 3daec2dd11a04955f95e8f65a48820103d84dbec Mon Sep 17 00:00:00 2001
-From: Junling Zheng <zhengjunling@huawei.com>
-Date: Thu, 9 Apr 2015 12:12:49 +0000
-Subject: [PATCH] uclibc support for elfutils 0.161
-
-on uclibc systems libintl and libuargp are separate from libc.
-so they need to be specified on commandline when we use proxy-libintl
-then libintl is a static archive so it should be listed last since
-elfutils does not respect disable-nls we need to link in libintl
-
-We add a new option --enable-uclibc which will be used to control
-the uclibc specific configurations during build.
-
-Upstream-Status: Inappropriate [uclibc specific]
-
-Signed-off-by: Khem Raj <raj.khem>
-Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
-[Junling Zheng:
- - adjust context
-]
----
- configure.ac       | 8 ++++++++
- libcpu/Makefile.am | 4 ++++
- libdw/Makefile.am  | 7 ++++++-
- libelf/Makefile.am | 5 +++++
- 4 files changed, 23 insertions(+), 1 deletion(-)
-
-Index: elfutils-0.164/configure.ac
-===================================================================
---- elfutils-0.164.orig/configure.ac
-+++ elfutils-0.164/configure.ac
-@@ -66,6 +66,14 @@ AS_IF([test "$use_locks" = yes],
- 
- AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
- 
-+AC_ARG_ENABLE([uclibc],
-+AS_HELP_STRING([--enable-uclibc], [Use uclibc for system libraries]),
-+use_uclibc=yes, use_uclibc=no)
-+AM_CONDITIONAL(USE_UCLIBC, test "$use_uclibc" = yes)
-+AS_IF([test "$use_uclibc" = yes], [AC_DEFINE(USE_UCLIBC)])
-+
-+AH_TEMPLATE([USE_UCLIBC], [Defined if uclibc libraries are used.])
-+
- AC_PROG_CC
- AC_PROG_RANLIB
- AC_PROG_YACC
-@@ -291,18 +299,13 @@ AC_LINK_IFELSE(
- )
- 
- dnl If our libc doesn't provide argp, then test for libargp
--if test "$libc_has_argp" = "false" ; then
--	AC_MSG_WARN("libc does not have argp")
--	AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
--
--	if test "$have_argp" = "false"; then
--		AC_MSG_ERROR("no libargp found")
--	else
--		argp_LDADD="-largp"
--	fi
--else
--	argp_LDADD=""
--fi
-+AS_IF([test "x$libc_has_argp" = "xfalse"],
-+	[AC_MSG_WARN("libc does not have argp")
-+	AC_CHECK_LIB([argp], [argp_parse], [have_argp="true" argp_LDADD="-largp"], [have_argp="false"])], [argp_LDADD=""])
-+
-+AS_IF([test "x$libc_has_argp" = "xfalse" -a "x$have_argp" = "xfalse"],
-+	AC_CHECK_LIB([uargp], [argp_parse], [have_uargp="true" argp_LDADD="-luargp"], [have_uargp="false"])], [argp_LDADD=""])
-+
- AC_SUBST([argp_LDADD])
- 
- dnl The directories with content.
-Index: elfutils-0.164/libcpu/Makefile.am
-===================================================================
---- elfutils-0.164.orig/libcpu/Makefile.am
-+++ elfutils-0.164/libcpu/Makefile.am
-@@ -80,6 +80,10 @@ i386_parse_CFLAGS = -DNMNES="`wc -l < i3
- i386_lex.o: i386_parse.h
- i386_gendis_LDADD = $(libeu) -lm
- 
-+if USE_UCLIBC
-+i386_gendis_LDADD += -lintl
-+endif
-+
- i386_parse.h: i386_parse.c ;
- 
- EXTRA_DIST = defs/i386
-Index: elfutils-0.164/libdw/Makefile.am
-===================================================================
---- elfutils-0.164.orig/libdw/Makefile.am
-+++ elfutils-0.164/libdw/Makefile.am
-@@ -102,6 +102,11 @@ endif
- libdw_pic_a_SOURCES =
- am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
- 
-+libdw_so_LDLIBS =
-+if USE_UCLIBC
-+libdw_so_LDLIBS += -lintl
-+endif
-+
- libdw_so_SOURCES =
- libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
- 	  ../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
-@@ -112,7 +117,7 @@ libdw.so$(EXEEXT): $(srcdir)/libdw.map l
- 		-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
- 		-Wl,--version-script,$<,--no-undefined \
- 		-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
--		-ldl $(argp_LDADD) $(zip_LIBS)
-+		-ldl $(argp_LDADD) $(zip_LIBS) $(libdw_so_LDLIBS)
- 	@$(textrel_check)
- 	$(AM_V_at)ln -fs $@ $@.$(VERSION)
- 
-Index: elfutils-0.164/libelf/Makefile.am
-===================================================================
---- elfutils-0.164.orig/libelf/Makefile.am
-+++ elfutils-0.164/libelf/Makefile.am
-@@ -93,7 +93,12 @@ libelf_a_SOURCES = elf_version.c elf_has
- libelf_pic_a_SOURCES =
- am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
- 
-+
- libelf_so_LDLIBS =
-+if USE_UCLIBC
-+libelf_so_LDLIBS += -lintl
-+endif
-+
- if USE_LOCKS
- libelf_so_LDLIBS += -lpthread
- endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-Ignore-differences-between-mips-machine-identifiers.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-Ignore-differences-between-mips-machine-identifiers.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-Ignore-differences-between-mips-machine-identifiers.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-Ignore-differences-between-mips-machine-identifiers.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch
new file mode 100644
index 0000000..38b31f6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch
@@ -0,0 +1,1163 @@
+From 4b0fe80b3951f044c1c1b14d1d7f5f0b8ab67507 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 31 Dec 2015 06:35:34 +0000
+Subject: [PATCH] build: Provide alternatives for glibc assumptions helps
+ compiling it on musl
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ Makefile.am                      |  2 +-
+ lib/color.c                      |  2 +-
+ lib/crc32_file.c                 |  4 +++-
+ lib/fixedsizehash.h              |  4 ++--
+ lib/system.h                     | 11 +++++++++++
+ lib/xmalloc.c                    |  2 +-
+ libasm/asm_end.c                 |  2 +-
+ libasm/asm_newscn.c              |  2 +-
+ libcpu/i386_gendis.c             |  2 +-
+ libcpu/i386_lex.c                |  2 +-
+ libcpu/i386_parse.c              |  2 +-
+ libdw/Makefile.am                |  2 +-
+ libdw/libdw_alloc.c              |  3 ++-
+ libdwfl/Makefile.am              |  2 ++
+ libdwfl/dwfl_build_id_find_elf.c |  3 ++-
+ libdwfl/dwfl_error.c             |  4 +++-
+ libdwfl/dwfl_module_getdwarf.c   |  1 +
+ libdwfl/find-debuginfo.c         |  2 +-
+ libdwfl/libdwfl_crc32_file.c     | 10 ++++++++++
+ libdwfl/linux-kernel-modules.c   |  1 +
+ libebl/eblopenbackend.c          |  2 +-
+ libebl/eblwstrtab.c              |  2 +-
+ libelf/elf.h                     |  9 ++++++---
+ libelf/libelf.h                  |  1 +
+ libelf/libelfP.h                 |  1 +
+ src/addr2line.c                  |  2 +-
+ src/ar.c                         |  2 +-
+ src/arlib.c                      |  2 +-
+ src/arlib2.c                     |  2 +-
+ src/elfcmp.c                     |  2 +-
+ src/elflint.c                    |  2 +-
+ src/findtextrel.c                |  2 +-
+ src/i386_ld.c                    |  2 +-
+ src/ld.c                         |  2 +-
+ src/ldgeneric.c                  |  2 +-
+ src/ldlex.c                      |  2 +-
+ src/ldscript.c                   |  2 +-
+ src/nm.c                         |  2 +-
+ src/objdump.c                    |  2 +-
+ src/ranlib.c                     |  2 +-
+ src/readelf.c                    |  2 +-
+ src/size.c                       |  2 +-
+ src/stack.c                      |  2 +-
+ src/strings.c                    |  2 +-
+ src/strip.c                      |  2 +-
+ src/unstrip.c                    |  2 +-
+ tests/addrscopes.c               |  2 +-
+ tests/allregs.c                  |  2 +-
+ tests/backtrace-data.c           |  2 +-
+ tests/backtrace-dwarf.c          |  2 +-
+ tests/backtrace.c                |  2 +-
+ tests/buildid.c                  |  2 +-
+ tests/debugaltlink.c             |  2 +-
+ tests/debuglink.c                |  2 +-
+ tests/deleted.c                  |  2 +-
+ tests/dwfl-addr-sect.c           |  2 +-
+ tests/dwfl-bug-addr-overflow.c   |  2 +-
+ tests/dwfl-bug-fd-leak.c         |  2 +-
+ tests/dwfl-bug-getmodules.c      |  2 +-
+ tests/dwfl-report-elf-align.c    |  2 +-
+ tests/dwfllines.c                |  2 +-
+ tests/dwflmodtest.c              |  2 +-
+ tests/dwflsyms.c                 |  2 +-
+ tests/early-offscn.c             |  2 +-
+ tests/ecp.c                      |  2 +-
+ tests/find-prologues.c           |  2 +-
+ tests/funcretval.c               |  2 +-
+ tests/funcscopes.c               |  2 +-
+ tests/getsrc_die.c               |  2 +-
+ tests/line2addr.c                |  2 +-
+ tests/low_high_pc.c              |  2 +-
+ tests/md5-sha1-test.c            |  2 +-
+ tests/rdwrmmap.c                 |  2 +-
+ tests/saridx.c                   |  2 +-
+ tests/sectiondump.c              |  2 +-
+ tests/varlocs.c                  |  2 +-
+ tests/vdsosyms.c                 |  2 +-
+ 77 files changed, 109 insertions(+), 73 deletions(-)
+
+Index: elfutils-0.166/Makefile.am
+===================================================================
+--- elfutils-0.166.orig/Makefile.am
++++ elfutils-0.166/Makefile.am
+@@ -28,7 +28,7 @@ pkginclude_HEADERS = version.h
+ 
+ # Add doc back when we have some real content.
+ SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \
+-	  backends src po tests
++	  backends po tests
+ 
+ EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
+ 	     COPYING COPYING-GPLV2 COPYING-LGPLV3
+Index: elfutils-0.166/lib/color.c
+===================================================================
+--- elfutils-0.166.orig/lib/color.c
++++ elfutils-0.166/lib/color.c
+@@ -32,7 +32,7 @@
+ #endif
+ 
+ #include <argp.h>
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ #include <stdlib.h>
+ #include <string.h>
+Index: elfutils-0.166/lib/crc32_file.c
+===================================================================
+--- elfutils-0.166.orig/lib/crc32_file.c
++++ elfutils-0.166/lib/crc32_file.c
+@@ -30,12 +30,14 @@
+ # include <config.h>
+ #endif
+ 
+-#include "system.h"
+ #include <errno.h>
+ #include <unistd.h>
++#include <stdint.h>
+ #include <sys/stat.h>
+ #include <sys/mman.h>
+ 
++#include "system.h"
++
+ int
+ crc32_file (int fd, uint32_t *resp)
+ {
+Index: elfutils-0.166/lib/fixedsizehash.h
+===================================================================
+--- elfutils-0.166.orig/lib/fixedsizehash.h
++++ elfutils-0.166/lib/fixedsizehash.h
+@@ -30,12 +30,12 @@
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <sys/cdefs.h>
+ #include <sys/param.h>
+ 
+ #include <system.h>
+ 
+-#define CONCAT(t1,t2) __CONCAT (t1,t2)
++#define CONCAT1(x,y) x##y
++#define CONCAT(x,y) CONCAT1(x,y)
+ 
+ /* Before including this file the following macros must be defined:
+ 
+Index: elfutils-0.166/lib/system.h
+===================================================================
+--- elfutils-0.166.orig/lib/system.h
++++ elfutils-0.166/lib/system.h
+@@ -49,6 +49,16 @@
+ #else
+ # error "Unknown byte order"
+ #endif
++#ifndef TEMP_FAILURE_RETRY
++#define TEMP_FAILURE_RETRY(expression) \
++  (__extension__							      \
++    ({ long int __result;						      \
++       do __result = (long int) (expression);				      \
++       while (__result == -1L && errno == EINTR);			      \
++       __result; }))
++#endif
++
++#define error(status, errno, ...) err(status, __VA_ARGS__)
+ 
+ extern void *xmalloc (size_t) __attribute__ ((__malloc__));
+ extern void *xcalloc (size_t, size_t) __attribute__ ((__malloc__));
+Index: elfutils-0.166/lib/xmalloc.c
+===================================================================
+--- elfutils-0.166.orig/lib/xmalloc.c
++++ elfutils-0.166/lib/xmalloc.c
+@@ -30,7 +30,7 @@
+ # include <config.h>
+ #endif
+ 
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ #include <stddef.h>
+ #include <stdlib.h>
+Index: elfutils-0.166/libasm/asm_end.c
+===================================================================
+--- elfutils-0.166.orig/libasm/asm_end.c
++++ elfutils-0.166/libasm/asm_end.c
+@@ -32,7 +32,7 @@
+ #endif
+ 
+ #include <assert.h>
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+Index: elfutils-0.166/libasm/asm_newscn.c
+===================================================================
+--- elfutils-0.166.orig/libasm/asm_newscn.c
++++ elfutils-0.166/libasm/asm_newscn.c
+@@ -32,7 +32,7 @@
+ #endif
+ 
+ #include <assert.h>
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ #include <stdlib.h>
+ #include <string.h>
+Index: elfutils-0.166/libcpu/i386_gendis.c
+===================================================================
+--- elfutils-0.166.orig/libcpu/i386_gendis.c
++++ elfutils-0.166/libcpu/i386_gendis.c
+@@ -31,7 +31,7 @@
+ # include <config.h>
+ #endif
+ 
+-#include <error.h>
++#include <err.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+Index: elfutils-0.166/libcpu/i386_lex.c
+===================================================================
+--- elfutils-0.166.orig/libcpu/i386_lex.c
++++ elfutils-0.166/libcpu/i386_lex.c
+@@ -578,7 +578,7 @@ char *i386_text;
+ #endif
+ 
+ #include <ctype.h>
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ 
+ #include <system.h>
+Index: elfutils-0.166/libcpu/i386_parse.c
+===================================================================
+--- elfutils-0.166.orig/libcpu/i386_parse.c
++++ elfutils-0.166/libcpu/i386_parse.c
+@@ -107,7 +107,7 @@
+ #include <assert.h>
+ #include <ctype.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <inttypes.h>
+ #include <libintl.h>
+ #include <math.h>
+Index: elfutils-0.166/libdw/Makefile.am
+===================================================================
+--- elfutils-0.166.orig/libdw/Makefile.am
++++ elfutils-0.166/libdw/Makefile.am
+@@ -117,7 +117,7 @@ libdw.so$(EXEEXT): $(srcdir)/libdw.map l
+ 		-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
+ 		-Wl,--version-script,$<,--no-undefined \
+ 		-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
+-		-ldl -lz $(argp_LDADD) $(zip_LIBS) $(libdw_so_LDLIBS)
++		-ldl -lz $(argp_LDADD) $(zip_LIBS) $(libdw_so_LDLIBS) -lfts -largp
+ 	@$(textrel_check)
+ 	$(AM_V_at)ln -fs $@ $@.$(VERSION)
+ 
+Index: elfutils-0.166/libdw/libdw_alloc.c
+===================================================================
+--- elfutils-0.166.orig/libdw/libdw_alloc.c
++++ elfutils-0.166/libdw/libdw_alloc.c
+@@ -31,11 +31,12 @@
+ # include <config.h>
+ #endif
+ 
+-#include <error.h>
++#include <err.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <sys/param.h>
+ #include "libdwP.h"
++#include "system.h"
+ 
+ 
+ void *
+Index: elfutils-0.166/libdwfl/Makefile.am
+===================================================================
+--- elfutils-0.166.orig/libdwfl/Makefile.am
++++ elfutils-0.166/libdwfl/Makefile.am
+@@ -84,6 +84,8 @@ libelf = ../libelf/libelf.so
+ libebl = ../libebl/libebl.a
+ libeu = ../lib/libeu.a
+ 
++LDADD = -lfts
++
+ libdwfl_pic_a_SOURCES =
+ am_libdwfl_pic_a_OBJECTS = $(libdwfl_a_SOURCES:.c=.os)
+ 
+Index: elfutils-0.166/libdwfl/dwfl_build_id_find_elf.c
+===================================================================
+--- elfutils-0.166.orig/libdwfl/dwfl_build_id_find_elf.c
++++ elfutils-0.166/libdwfl/dwfl_build_id_find_elf.c
+@@ -27,6 +27,7 @@
+    not, see <http://www.gnu.org/licenses/>.  */
+ 
+ #include "libdwflP.h"
++#include "system.h"
+ #include <inttypes.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+@@ -94,7 +95,7 @@ __libdwfl_open_by_build_id (Dwfl_Module
+ 	{
+ 	  if (*file_name != NULL)
+ 	    free (*file_name);
+-	  *file_name = canonicalize_file_name (name);
++	  *file_name = realpath (name, NULL);
+ 	  if (*file_name == NULL)
+ 	    {
+ 	      *file_name = name;
+Index: elfutils-0.166/libdwfl/dwfl_error.c
+===================================================================
+--- elfutils-0.166.orig/libdwfl/dwfl_error.c
++++ elfutils-0.166/libdwfl/dwfl_error.c
+@@ -140,6 +140,7 @@ __libdwfl_seterrno (Dwfl_Error error)
+ const char *
+ dwfl_errmsg (int error)
+ {
++  static __thread char s[64] = "";
+   if (error == 0 || error == -1)
+     {
+       int last_error = global_error;
+@@ -154,7 +155,8 @@ dwfl_errmsg (int error)
+   switch (error &~ 0xffff)
+     {
+     case OTHER_ERROR (ERRNO):
+-      return strerror_r (error & 0xffff, "bad", 0);
++      strerror_r (error & 0xffff, s, sizeof(s));
++      return s;
+     case OTHER_ERROR (LIBELF):
+       return elf_errmsg (error & 0xffff);
+     case OTHER_ERROR (LIBDW):
+Index: elfutils-0.166/libdwfl/dwfl_module_getdwarf.c
+===================================================================
+--- elfutils-0.166.orig/libdwfl/dwfl_module_getdwarf.c
++++ elfutils-0.166/libdwfl/dwfl_module_getdwarf.c
+@@ -31,6 +31,7 @@
+ #include <fcntl.h>
+ #include <string.h>
+ #include <unistd.h>
++#include "system.h"
+ #include "../libdw/libdwP.h"	/* DWARF_E_* values are here.  */
+ #include "../libelf/libelfP.h"
+ 
+Index: elfutils-0.166/libdwfl/find-debuginfo.c
+===================================================================
+--- elfutils-0.166.orig/libdwfl/find-debuginfo.c
++++ elfutils-0.166/libdwfl/find-debuginfo.c
+@@ -385,7 +385,7 @@ dwfl_standard_find_debuginfo (Dwfl_Modul
+       /* If FILE_NAME is a symlink, the debug file might be associated
+ 	 with the symlink target name instead.  */
+ 
+-      char *canon = canonicalize_file_name (file_name);
++      char *canon = realpath (file_name, NULL);
+       if (canon != NULL && strcmp (file_name, canon))
+ 	fd = find_debuginfo_in_path (mod, canon,
+ 				     debuglink_file, debuglink_crc,
+Index: elfutils-0.166/libdwfl/libdwfl_crc32_file.c
+===================================================================
+--- elfutils-0.166.orig/libdwfl/libdwfl_crc32_file.c
++++ elfutils-0.166/libdwfl/libdwfl_crc32_file.c
+@@ -31,6 +31,16 @@
+ 
+ #define crc32_file attribute_hidden __libdwfl_crc32_file
+ #define crc32 __libdwfl_crc32
++
++#ifndef TEMP_FAILURE_RETRY
++#define TEMP_FAILURE_RETRY(expression) \
++  (__extension__							      \
++    ({ long int __result;						      \
++       do __result = (long int) (expression);				      \
++       while (__result == -1L && errno == EINTR);			      \
++       __result; }))
++#endif
++
+ #define LIB_SYSTEM_H	1
+ #include <libdwflP.h>
+ #include "../lib/crc32_file.c"
+Index: elfutils-0.166/libdwfl/linux-kernel-modules.c
+===================================================================
+--- elfutils-0.166.orig/libdwfl/linux-kernel-modules.c
++++ elfutils-0.166/libdwfl/linux-kernel-modules.c
+@@ -34,6 +34,7 @@
+ #include <config.h>
+ 
+ #include "libdwflP.h"
++#include "system.h"
+ #include <inttypes.h>
+ #include <errno.h>
+ #include <stdio.h>
+Index: elfutils-0.166/libebl/eblopenbackend.c
+===================================================================
+--- elfutils-0.166.orig/libebl/eblopenbackend.c
++++ elfutils-0.166/libebl/eblopenbackend.c
+@@ -32,7 +32,7 @@
+ 
+ #include <assert.h>
+ #include <dlfcn.h>
+-#include <error.h>
++#include <err.h>
+ #include <libelfP.h>
+ #include <dwarf.h>
+ #include <stdlib.h>
+Index: elfutils-0.166/libebl/eblwstrtab.c
+===================================================================
+--- elfutils-0.166.orig/libebl/eblwstrtab.c
++++ elfutils-0.166/libebl/eblwstrtab.c
+@@ -305,7 +305,7 @@ copystrings (struct Ebl_WStrent *nodep,
+ 
+   /* Process the current node.  */
+   nodep->offset = *offsetp;
+-  *freep = wmempcpy (*freep, nodep->string, nodep->len);
++  *freep = wmemcpy (*freep, nodep->string, nodep->len) + nodep->len;
+   *offsetp += nodep->len * sizeof (wchar_t);
+ 
+   for (subs = nodep->next; subs != NULL; subs = subs->next)
+Index: elfutils-0.166/libelf/elf.h
+===================================================================
+--- elfutils-0.166.orig/libelf/elf.h
++++ elfutils-0.166/libelf/elf.h
+@@ -21,7 +21,9 @@
+ 
+ #include <features.h>
+ 
+-__BEGIN_DECLS
++#ifdef __cplusplus
++extern "C" {
++#endif
+ 
+ /* Standard ELF types.  */
+ 
+@@ -3591,7 +3593,8 @@ enum
+ 
+ #define R_TILEGX_NUM		130
+ 
+-
+-__END_DECLS
++#ifdef __cplusplus
++}
++#endif
+ 
+ #endif	/* elf.h */
+Index: elfutils-0.166/libelf/libelf.h
+===================================================================
+--- elfutils-0.166.orig/libelf/libelf.h
++++ elfutils-0.166/libelf/libelf.h
+@@ -29,6 +29,7 @@
+ #ifndef _LIBELF_H
+ #define _LIBELF_H 1
+ 
++#include <fcntl.h>
+ #include <stdint.h>
+ #include <sys/types.h>
+ 
+Index: elfutils-0.166/libelf/libelfP.h
+===================================================================
+--- elfutils-0.166.orig/libelf/libelfP.h
++++ elfutils-0.166/libelf/libelfP.h
+@@ -36,6 +36,7 @@
+ 
+ #include <ar.h>
+ #include <gelf.h>
++#include <libelf.h>
+ 
+ #include <errno.h>
+ #include <stdbool.h>
+Index: elfutils-0.166/src/addr2line.c
+===================================================================
+--- elfutils-0.166.orig/src/addr2line.c
++++ elfutils-0.166/src/addr2line.c
+@@ -23,7 +23,7 @@
+ #include <argp.h>
+ #include <assert.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <inttypes.h>
+ #include <libdwfl.h>
+Index: elfutils-0.166/src/ar.c
+===================================================================
+--- elfutils-0.166.orig/src/ar.c
++++ elfutils-0.166/src/ar.c
+@@ -22,7 +22,7 @@
+ 
+ #include <argp.h>
+ #include <assert.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <libintl.h>
+Index: elfutils-0.166/src/arlib.c
+===================================================================
+--- elfutils-0.166.orig/src/arlib.c
++++ elfutils-0.166/src/arlib.c
+@@ -21,7 +21,7 @@
+ #endif
+ 
+ #include <assert.h>
+-#include <error.h>
++#include <err.h>
+ #include <gelf.h>
+ #include <libintl.h>
+ #include <stdio.h>
+Index: elfutils-0.166/src/arlib2.c
+===================================================================
+--- elfutils-0.166.orig/src/arlib2.c
++++ elfutils-0.166/src/arlib2.c
+@@ -20,7 +20,7 @@
+ # include <config.h>
+ #endif
+ 
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ #include <limits.h>
+ #include <string.h>
+Index: elfutils-0.166/src/elfcmp.c
+===================================================================
+--- elfutils-0.166.orig/src/elfcmp.c
++++ elfutils-0.166/src/elfcmp.c
+@@ -23,7 +23,7 @@
+ #include <argp.h>
+ #include <assert.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <locale.h>
+ #include <libintl.h>
+Index: elfutils-0.166/src/elflint.c
+===================================================================
+--- elfutils-0.166.orig/src/elflint.c
++++ elfutils-0.166/src/elflint.c
+@@ -24,7 +24,7 @@
+ #include <assert.h>
+ #include <byteswap.h>
+ #include <endian.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <inttypes.h>
+Index: elfutils-0.166/src/findtextrel.c
+===================================================================
+--- elfutils-0.166.orig/src/findtextrel.c
++++ elfutils-0.166/src/findtextrel.c
+@@ -23,7 +23,7 @@
+ #include <argp.h>
+ #include <assert.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <libdw.h>
+Index: elfutils-0.166/src/i386_ld.c
+===================================================================
+--- elfutils-0.166.orig/src/i386_ld.c
++++ elfutils-0.166/src/i386_ld.c
+@@ -20,7 +20,7 @@
+ #endif
+ 
+ #include <assert.h>
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ #include <stdlib.h>
+ #include <string.h>
+Index: elfutils-0.166/src/ld.c
+===================================================================
+--- elfutils-0.166.orig/src/ld.c
++++ elfutils-0.166/src/ld.c
+@@ -21,7 +21,7 @@
+ 
+ #include <argp.h>
+ #include <assert.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <libelf.h>
+ #include <libintl.h>
+Index: elfutils-0.166/src/ldgeneric.c
+===================================================================
+--- elfutils-0.166.orig/src/ldgeneric.c
++++ elfutils-0.166/src/ldgeneric.c
+@@ -23,7 +23,7 @@
+ #include <ctype.h>
+ #include <dlfcn.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <fnmatch.h>
+ #include <gelf.h>
+Index: elfutils-0.166/src/ldlex.c
+===================================================================
+--- elfutils-0.166.orig/src/ldlex.c
++++ elfutils-0.166/src/ldlex.c
+@@ -1106,7 +1106,7 @@ char *ldtext;
+ #include <assert.h>
+ #include <ctype.h>
+ #include <elf.h>
+-#include <error.h>
++#include <err.h>
+ #include <inttypes.h>
+ #include <libintl.h>
+ #include <stdbool.h>
+Index: elfutils-0.166/src/ldscript.c
+===================================================================
+--- elfutils-0.166.orig/src/ldscript.c
++++ elfutils-0.166/src/ldscript.c
+@@ -95,7 +95,7 @@
+ #endif
+ 
+ #include <assert.h>
+-#include <error.h>
++#include <err.h>
+ #include <libintl.h>
+ #include <stdbool.h>
+ #include <stdint.h>
+Index: elfutils-0.166/src/nm.c
+===================================================================
+--- elfutils-0.166.orig/src/nm.c
++++ elfutils-0.166/src/nm.c
+@@ -26,7 +26,7 @@
+ #include <ctype.h>
+ #include <dwarf.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <inttypes.h>
+Index: elfutils-0.166/src/objdump.c
+===================================================================
+--- elfutils-0.166.orig/src/objdump.c
++++ elfutils-0.166/src/objdump.c
+@@ -21,7 +21,7 @@
+ #endif
+ 
+ #include <argp.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <inttypes.h>
+ #include <libintl.h>
+Index: elfutils-0.166/src/ranlib.c
+===================================================================
+--- elfutils-0.166.orig/src/ranlib.c
++++ elfutils-0.166/src/ranlib.c
+@@ -24,7 +24,7 @@
+ #include <argp.h>
+ #include <assert.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <libintl.h>
+Index: elfutils-0.166/src/readelf.c
+===================================================================
+--- elfutils-0.166.orig/src/readelf.c
++++ elfutils-0.166/src/readelf.c
+@@ -25,7 +25,7 @@
+ #include <ctype.h>
+ #include <dwarf.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <inttypes.h>
+Index: elfutils-0.166/src/size.c
+===================================================================
+--- elfutils-0.166.orig/src/size.c
++++ elfutils-0.166/src/size.c
+@@ -21,7 +21,7 @@
+ #endif
+ 
+ #include <argp.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <inttypes.h>
+Index: elfutils-0.166/src/stack.c
+===================================================================
+--- elfutils-0.166.orig/src/stack.c
++++ elfutils-0.166/src/stack.c
+@@ -18,7 +18,7 @@
+ #include <config.h>
+ #include <assert.h>
+ #include <argp.h>
+-#include <error.h>
++#include <err.h>
+ #include <stdlib.h>
+ #include <inttypes.h>
+ #include <stdio.h>
+Index: elfutils-0.166/src/strings.c
+===================================================================
+--- elfutils-0.166.orig/src/strings.c
++++ elfutils-0.166/src/strings.c
+@@ -25,7 +25,7 @@
+ #include <ctype.h>
+ #include <endian.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <inttypes.h>
+Index: elfutils-0.166/src/strip.c
+===================================================================
+--- elfutils-0.166.orig/src/strip.c
++++ elfutils-0.166/src/strip.c
+@@ -24,7 +24,7 @@
+ #include <assert.h>
+ #include <byteswap.h>
+ #include <endian.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <libelf.h>
+Index: elfutils-0.166/src/unstrip.c
+===================================================================
+--- elfutils-0.166.orig/src/unstrip.c
++++ elfutils-0.166/src/unstrip.c
+@@ -31,7 +31,7 @@
+ #include <argp.h>
+ #include <assert.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <fnmatch.h>
+ #include <libintl.h>
+Index: elfutils-0.166/tests/addrscopes.c
+===================================================================
+--- elfutils-0.166.orig/tests/addrscopes.c
++++ elfutils-0.166/tests/addrscopes.c
+@@ -25,7 +25,7 @@
+ #include <stdio_ext.h>
+ #include <locale.h>
+ #include <stdlib.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ 
+ 
+Index: elfutils-0.166/tests/allregs.c
+===================================================================
+--- elfutils-0.166.orig/tests/allregs.c
++++ elfutils-0.166/tests/allregs.c
+@@ -21,7 +21,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <error.h>
++#include <err.h>
+ #include <locale.h>
+ #include <argp.h>
+ #include <assert.h>
+Index: elfutils-0.166/tests/backtrace-data.c
+===================================================================
+--- elfutils-0.166.orig/tests/backtrace-data.c
++++ elfutils-0.166/tests/backtrace-data.c
+@@ -27,7 +27,7 @@
+ #include <dirent.h>
+ #include <stdlib.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <unistd.h>
+ #include <dwarf.h>
+ #if defined(__x86_64__) && defined(__linux__)
+Index: elfutils-0.166/tests/backtrace-dwarf.c
+===================================================================
+--- elfutils-0.166.orig/tests/backtrace-dwarf.c
++++ elfutils-0.166/tests/backtrace-dwarf.c
+@@ -22,7 +22,7 @@
+ #include <stdio_ext.h>
+ #include <locale.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <unistd.h>
+ #include <sys/ptrace.h>
+ #include <sys/types.h>
+Index: elfutils-0.166/tests/backtrace.c
+===================================================================
+--- elfutils-0.166.orig/tests/backtrace.c
++++ elfutils-0.166/tests/backtrace.c
+@@ -24,7 +24,7 @@
+ #include <dirent.h>
+ #include <stdlib.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <unistd.h>
+ #include <dwarf.h>
+ #ifdef __linux__
+Index: elfutils-0.166/tests/buildid.c
+===================================================================
+--- elfutils-0.166.orig/tests/buildid.c
++++ elfutils-0.166/tests/buildid.c
+@@ -23,7 +23,7 @@
+ #include ELFUTILS_HEADER(elf)
+ #include ELFUTILS_HEADER(dwelf)
+ #include <stdio.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <stdlib.h>
+ #include <sys/types.h>
+Index: elfutils-0.166/tests/debugaltlink.c
+===================================================================
+--- elfutils-0.166.orig/tests/debugaltlink.c
++++ elfutils-0.166/tests/debugaltlink.c
+@@ -23,7 +23,7 @@
+ #include ELFUTILS_HEADER(dw)
+ #include ELFUTILS_HEADER(dwelf)
+ #include <stdio.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <stdlib.h>
+ #include <sys/types.h>
+Index: elfutils-0.166/tests/debuglink.c
+===================================================================
+--- elfutils-0.166.orig/tests/debuglink.c
++++ elfutils-0.166/tests/debuglink.c
+@@ -21,7 +21,7 @@
+ #include <errno.h>
+ #include ELFUTILS_HEADER(dwelf)
+ #include <stdio.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <stdlib.h>
+ #include <sys/types.h>
+Index: elfutils-0.166/tests/deleted.c
+===================================================================
+--- elfutils-0.166.orig/tests/deleted.c
++++ elfutils-0.166/tests/deleted.c
+@@ -21,7 +21,7 @@
+ #include <unistd.h>
+ #include <assert.h>
+ #include <stdio.h>
+-#include <error.h>
++#include <err.h>
+ #include <errno.h>
+ #ifdef __linux__
+ #include <sys/prctl.h>
+Index: elfutils-0.166/tests/dwfl-addr-sect.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwfl-addr-sect.c
++++ elfutils-0.166/tests/dwfl-addr-sect.c
+@@ -23,7 +23,7 @@
+ #include <stdio_ext.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <error.h>
++#include <err.h>
+ #include <locale.h>
+ #include <argp.h>
+ #include ELFUTILS_HEADER(dwfl)
+Index: elfutils-0.166/tests/dwfl-bug-addr-overflow.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwfl-bug-addr-overflow.c
++++ elfutils-0.166/tests/dwfl-bug-addr-overflow.c
+@@ -20,7 +20,7 @@
+ #include <inttypes.h>
+ #include <stdio.h>
+ #include <stdio_ext.h>
+-#include <error.h>
++#include <err.h>
+ #include <locale.h>
+ #include ELFUTILS_HEADER(dwfl)
+ 
+Index: elfutils-0.166/tests/dwfl-bug-fd-leak.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwfl-bug-fd-leak.c
++++ elfutils-0.166/tests/dwfl-bug-fd-leak.c
+@@ -24,7 +24,7 @@
+ #include <dirent.h>
+ #include <stdlib.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <unistd.h>
+ #include <dwarf.h>
+ 
+Index: elfutils-0.166/tests/dwfl-bug-getmodules.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwfl-bug-getmodules.c
++++ elfutils-0.166/tests/dwfl-bug-getmodules.c
+@@ -18,7 +18,7 @@
+ #include <config.h>
+ #include ELFUTILS_HEADER(dwfl)
+ 
+-#include <error.h>
++#include <err.h>
+ 
+ static const Dwfl_Callbacks callbacks =
+   {
+Index: elfutils-0.166/tests/dwfl-report-elf-align.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwfl-report-elf-align.c
++++ elfutils-0.166/tests/dwfl-report-elf-align.c
+@@ -20,7 +20,7 @@
+ #include <inttypes.h>
+ #include <stdio.h>
+ #include <stdio_ext.h>
+-#include <error.h>
++#include <err.h>
+ #include <locale.h>
+ #include <string.h>
+ #include <stdlib.h>
+Index: elfutils-0.166/tests/dwfllines.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwfllines.c
++++ elfutils-0.166/tests/dwfllines.c
+@@ -27,7 +27,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <error.h>
++#include <err.h>
+ 
+ int
+ main (int argc, char *argv[])
+Index: elfutils-0.166/tests/dwflmodtest.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwflmodtest.c
++++ elfutils-0.166/tests/dwflmodtest.c
+@@ -23,7 +23,7 @@
+ #include <stdio_ext.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <error.h>
++#include <err.h>
+ #include <locale.h>
+ #include <argp.h>
+ #include ELFUTILS_HEADER(dwfl)
+Index: elfutils-0.166/tests/dwflsyms.c
+===================================================================
+--- elfutils-0.166.orig/tests/dwflsyms.c
++++ elfutils-0.166/tests/dwflsyms.c
+@@ -25,7 +25,7 @@
+ #include <stdio.h>
+ #include <stdio_ext.h>
+ #include <stdlib.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ 
+ static const char *
+Index: elfutils-0.166/tests/early-offscn.c
+===================================================================
+--- elfutils-0.166.orig/tests/early-offscn.c
++++ elfutils-0.166/tests/early-offscn.c
+@@ -19,7 +19,7 @@
+ #endif
+ 
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <stdio.h>
+Index: elfutils-0.166/tests/ecp.c
+===================================================================
+--- elfutils-0.166.orig/tests/ecp.c
++++ elfutils-0.166/tests/ecp.c
+@@ -20,7 +20,7 @@
+ #endif
+ 
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <stdlib.h>
+Index: elfutils-0.166/tests/find-prologues.c
+===================================================================
+--- elfutils-0.166.orig/tests/find-prologues.c
++++ elfutils-0.166/tests/find-prologues.c
+@@ -25,7 +25,7 @@
+ #include <stdio_ext.h>
+ #include <locale.h>
+ #include <stdlib.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <fnmatch.h>
+ 
+Index: elfutils-0.166/tests/funcretval.c
+===================================================================
+--- elfutils-0.166.orig/tests/funcretval.c
++++ elfutils-0.166/tests/funcretval.c
+@@ -25,7 +25,7 @@
+ #include <stdio_ext.h>
+ #include <locale.h>
+ #include <stdlib.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <fnmatch.h>
+ 
+Index: elfutils-0.166/tests/funcscopes.c
+===================================================================
+--- elfutils-0.166.orig/tests/funcscopes.c
++++ elfutils-0.166/tests/funcscopes.c
+@@ -25,7 +25,7 @@
+ #include <stdio_ext.h>
+ #include <locale.h>
+ #include <stdlib.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <fnmatch.h>
+ 
+Index: elfutils-0.166/tests/getsrc_die.c
+===================================================================
+--- elfutils-0.166.orig/tests/getsrc_die.c
++++ elfutils-0.166/tests/getsrc_die.c
+@@ -19,7 +19,7 @@
+ #endif
+ 
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <inttypes.h>
+ #include <libelf.h>
+Index: elfutils-0.166/tests/line2addr.c
+===================================================================
+--- elfutils-0.166.orig/tests/line2addr.c
++++ elfutils-0.166/tests/line2addr.c
+@@ -26,7 +26,7 @@
+ #include <locale.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <error.h>
++#include <err.h>
+ 
+ 
+ static void
+Index: elfutils-0.166/tests/low_high_pc.c
+===================================================================
+--- elfutils-0.166.orig/tests/low_high_pc.c
++++ elfutils-0.166/tests/low_high_pc.c
+@@ -25,7 +25,7 @@
+ #include <stdio_ext.h>
+ #include <locale.h>
+ #include <stdlib.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <fnmatch.h>
+ 
+Index: elfutils-0.166/tests/md5-sha1-test.c
+===================================================================
+--- elfutils-0.166.orig/tests/md5-sha1-test.c
++++ elfutils-0.166/tests/md5-sha1-test.c
+@@ -19,7 +19,7 @@
+ #endif
+ 
+ #include <string.h>
+-#include <error.h>
++#include <err.h>
+ 
+ #include "md5.h"
+ #include "sha1.h"
+Index: elfutils-0.166/tests/rdwrmmap.c
+===================================================================
+--- elfutils-0.166.orig/tests/rdwrmmap.c
++++ elfutils-0.166/tests/rdwrmmap.c
+@@ -19,7 +19,7 @@
+ #endif
+ 
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <stdio.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+Index: elfutils-0.166/tests/saridx.c
+===================================================================
+--- elfutils-0.166.orig/tests/saridx.c
++++ elfutils-0.166/tests/saridx.c
+@@ -17,7 +17,7 @@
+ 
+ #include <config.h>
+ 
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <stdio.h>
+Index: elfutils-0.166/tests/sectiondump.c
+===================================================================
+--- elfutils-0.166.orig/tests/sectiondump.c
++++ elfutils-0.166/tests/sectiondump.c
+@@ -18,7 +18,7 @@
+ #include <config.h>
+ 
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <fcntl.h>
+ #include <gelf.h>
+ #include <inttypes.h>
+Index: elfutils-0.166/tests/varlocs.c
+===================================================================
+--- elfutils-0.166.orig/tests/varlocs.c
++++ elfutils-0.166/tests/varlocs.c
+@@ -25,7 +25,7 @@
+ #include <dwarf.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <error.h>
++#include <err.h>
+ #include <string.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+Index: elfutils-0.166/tests/vdsosyms.c
+===================================================================
+--- elfutils-0.166.orig/tests/vdsosyms.c
++++ elfutils-0.166/tests/vdsosyms.c
+@@ -18,7 +18,7 @@
+ #include <config.h>
+ #include <assert.h>
+ #include <errno.h>
+-#include <error.h>
++#include <err.h>
+ #include <inttypes.h>
+ #include <stdio.h>
+ #include <string.h>
+Index: elfutils-0.166/libelf/elf_getarsym.c
+===================================================================
+--- elfutils-0.166.orig/libelf/elf_getarsym.c
++++ elfutils-0.166/libelf/elf_getarsym.c
+@@ -302,7 +302,7 @@ elf_getarsym (Elf *elf, size_t *ptr)
+ 		arsym[cnt].as_off = (*u32)[cnt];
+ 
+ 	      arsym[cnt].as_hash = _dl_elf_hash (str_data);
+-	      str_data = rawmemchr (str_data, '\0') + 1;
++	      str_data = memchr (str_data, '\0', SIZE_MAX) + 1;
+ 	    }
+ 
+ 	  /* At the end a special entry.  */
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-elf_getarsym-Silence-Werror-maybe-uninitialized-fals.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-elf_getarsym-Silence-Werror-maybe-uninitialized-fals.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-elf_getarsym-Silence-Werror-maybe-uninitialized-fals.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-elf_getarsym-Silence-Werror-maybe-uninitialized-fals.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-fix-a-stack-usage-warning.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-fix-a-stack-usage-warning.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-fix-a-stack-usage-warning.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-fix-a-stack-usage-warning.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-remove-the-unneed-checking.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-remove-the-unneed-checking.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0001-remove-the-unneed-checking.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-remove-the-unneed-checking.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0003-Add-mips-n64-relocation-format-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0003-Add-mips-n64-relocation-format-hack.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/0003-Add-mips-n64-relocation-format-hack.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0003-Add-mips-n64-relocation-format-hack.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/aarch64_uio.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/aarch64_uio.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/aarch64_uio.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/aarch64_uio.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/arm_backend.diff b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/arm_backend.diff
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/arm_backend.diff
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/arm_backend.diff
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/elfcmp-fix-self-comparision.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/elfcmp-fix-self-comparision.patch
new file mode 100644
index 0000000..6c150bb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/elfcmp-fix-self-comparision.patch
@@ -0,0 +1,41 @@
+From 836a16fe5b5bab4a3afe2c991c104652775ce3a3 Mon Sep 17 00:00:00 2001
+From: David Abdurachmanov <davidlt@cern.ch>
+Date: Mon, 11 Apr 2016 16:00:57 +0200
+Subject: elfcmp: fix self-comparison error with GCC 6
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Noticed with Fedora 24 Alpha, gcc (GCC) 6.0.0 20160406
+(Red Hat 6.0.0-0.20).
+
+elfcmp.c: In function ‘main’:
+elfcmp.c:364:199: error: self-comparison always evaluates
+to false [-Werror=tautological-compare]
+        if (unlikely (name1 == NULL || name2 == NULL
+
+Signed-off-by: David Abdurachmanov <davidlt@cern.ch>
+---
+
+Upstream-Status: Backport
+
+ src/ChangeLog | 4 ++++
+ src/elfcmp.c  | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/elfcmp.c b/src/elfcmp.c
+index 852b92f..7b5d39c 100644
+--- a/src/elfcmp.c
++++ b/src/elfcmp.c
+@@ -368,7 +368,7 @@ main (int argc, char *argv[])
+ 				&& sym1->st_shndx != SHN_UNDEF)
+ 			    || sym1->st_info != sym2->st_info
+ 			    || sym1->st_other != sym2->st_other
+-			    || sym1->st_shndx != sym1->st_shndx))
++			    || sym1->st_shndx != sym2->st_shndx))
+ 		{
+ 		  // XXX Do we want to allow reordered symbol tables?
+ 		symtab_mismatch:
+-- 
+cgit v0.12
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/fixheadercheck.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/fixheadercheck.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/fixheadercheck.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/fixheadercheck.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/hppa_backend.diff b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/hppa_backend.diff
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/hppa_backend.diff
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/hppa_backend.diff
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/kfreebsd_path.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/kfreebsd_path.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/kfreebsd_path.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/kfreebsd_path.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/m68k_backend.diff b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/m68k_backend.diff
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/m68k_backend.diff
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/m68k_backend.diff
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/mips_backend.diff b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/mips_backend.diff
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/mips_backend.diff
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/mips_backend.diff
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/mips_readelf_w.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/mips_readelf_w.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/mips_readelf_w.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/mips_readelf_w.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/shadow.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/shadow.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/shadow.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/shadow.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/testsuite-ignore-elflint.diff b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/testsuite-ignore-elflint.diff
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.164/testsuite-ignore-elflint.diff
rename to import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/testsuite-ignore-elflint.diff
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/uclibc-support.patch b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/uclibc-support.patch
new file mode 100644
index 0000000..6299998
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/uclibc-support.patch
@@ -0,0 +1,128 @@
+From 3daec2dd11a04955f95e8f65a48820103d84dbec Mon Sep 17 00:00:00 2001
+From: Junling Zheng <zhengjunling@huawei.com>
+Date: Thu, 9 Apr 2015 12:12:49 +0000
+Subject: [PATCH] uclibc support for elfutils 0.161
+
+on uclibc systems libintl and libuargp are separate from libc.
+so they need to be specified on commandline when we use proxy-libintl
+then libintl is a static archive so it should be listed last since
+elfutils does not respect disable-nls we need to link in libintl
+
+We add a new option --enable-uclibc which will be used to control
+the uclibc specific configurations during build.
+
+Upstream-Status: Inappropriate [uclibc specific]
+
+Signed-off-by: Khem Raj <raj.khem>
+Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
+[Junling Zheng:
+ - adjust context
+]
+---
+ configure.ac       | 8 ++++++++
+ libcpu/Makefile.am | 4 ++++
+ libdw/Makefile.am  | 7 ++++++-
+ libelf/Makefile.am | 5 +++++
+ 4 files changed, 23 insertions(+), 1 deletion(-)
+
+Index: elfutils-0.166/configure.ac
+===================================================================
+--- elfutils-0.166.orig/configure.ac
++++ elfutils-0.166/configure.ac
+@@ -79,6 +79,14 @@ AS_IF([test "$use_locks" = yes],
+ 
+ AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
+ 
++AC_ARG_ENABLE([uclibc],
++AS_HELP_STRING([--enable-uclibc], [Use uclibc for system libraries]),
++use_uclibc=yes, use_uclibc=no)
++AM_CONDITIONAL(USE_UCLIBC, test "$use_uclibc" = yes)
++AS_IF([test "$use_uclibc" = yes], [AC_DEFINE(USE_UCLIBC)])
++
++AH_TEMPLATE([USE_UCLIBC], [Defined if uclibc libraries are used.])
++
+ AC_PROG_CC
+ AC_PROG_RANLIB
+ AC_PROG_YACC
+@@ -347,18 +355,13 @@ AC_LINK_IFELSE(
+ )
+ 
+ dnl If our libc doesn't provide argp, then test for libargp
+-if test "$libc_has_argp" = "false" ; then
+-	AC_MSG_WARN("libc does not have argp")
+-	AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
+-
+-	if test "$have_argp" = "false"; then
+-		AC_MSG_ERROR("no libargp found")
+-	else
+-		argp_LDADD="-largp"
+-	fi
+-else
+-	argp_LDADD=""
+-fi
++AS_IF([test "x$libc_has_argp" = "xfalse"],
++	[AC_MSG_WARN("libc does not have argp")
++	AC_CHECK_LIB([argp], [argp_parse], [have_argp="true" argp_LDADD="-largp"], [have_argp="false"])], [argp_LDADD=""])
++
++AS_IF([test "x$libc_has_argp" = "xfalse" -a "x$have_argp" = "xfalse"],
++	AC_CHECK_LIB([uargp], [argp_parse], [have_uargp="true" argp_LDADD="-luargp"], [have_uargp="false"])], [argp_LDADD=""])
++
+ AC_SUBST([argp_LDADD])
+ 
+ dnl The directories with content.
+Index: elfutils-0.166/libcpu/Makefile.am
+===================================================================
+--- elfutils-0.166.orig/libcpu/Makefile.am
++++ elfutils-0.166/libcpu/Makefile.am
+@@ -80,6 +80,10 @@ i386_parse_CFLAGS = -DNMNES="`wc -l < i3
+ i386_lex.o: i386_parse.h
+ i386_gendis_LDADD = $(libeu) -lm
+ 
++if USE_UCLIBC
++i386_gendis_LDADD += -lintl
++endif
++
+ i386_parse.h: i386_parse.c ;
+ 
+ EXTRA_DIST = defs/i386
+Index: elfutils-0.166/libdw/Makefile.am
+===================================================================
+--- elfutils-0.166.orig/libdw/Makefile.am
++++ elfutils-0.166/libdw/Makefile.am
+@@ -102,6 +102,11 @@ endif
+ libdw_pic_a_SOURCES =
+ am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
+ 
++libdw_so_LDLIBS =
++if USE_UCLIBC
++libdw_so_LDLIBS += -lintl
++endif
++
+ libdw_so_SOURCES =
+ libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
+ 	  ../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
+@@ -112,7 +117,7 @@ libdw.so$(EXEEXT): $(srcdir)/libdw.map l
+ 		-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
+ 		-Wl,--version-script,$<,--no-undefined \
+ 		-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
+-		-ldl -lz $(argp_LDADD) $(zip_LIBS)
++		-ldl -lz $(argp_LDADD) $(zip_LIBS) $(libdw_so_LDLIBS)
+ 	@$(textrel_check)
+ 	$(AM_V_at)ln -fs $@ $@.$(VERSION)
+ 
+Index: elfutils-0.166/libelf/Makefile.am
+===================================================================
+--- elfutils-0.166.orig/libelf/Makefile.am
++++ elfutils-0.166/libelf/Makefile.am
+@@ -96,6 +96,11 @@ libelf_pic_a_SOURCES =
+ am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
+ 
+ libelf_so_LDLIBS = -lz
++
++if USE_UCLIBC
++libelf_so_LDLIBS += -lintl
++endif
++
+ if USE_LOCKS
+ libelf_so_LDLIBS += -lpthread
+ endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.148.bb b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.148.bb
index ff53257..6080c17 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.148.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.148.bb
@@ -34,6 +34,7 @@
         file://Fix_elf_cvt_gunhash.patch \
         file://elf_begin.c-CVE-2014-9447-fix.patch \
         file://fix-build-gcc-4.8.patch \
+        file://gcc6.patch \
 "
 # Only apply when building uclibc based target recipe
 SRC_URI_append_libc-uclibc = " file://uclibc-support-for-elfutils-0.148.patch"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.164.bb b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.164.bb
deleted file mode 100644
index 4964c05..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.164.bb
+++ /dev/null
@@ -1,89 +0,0 @@
-SUMMARY = "Utilities and libraries for handling compiled object files"
-HOMEPAGE = "https://fedorahosted.org/elfutils"
-SECTION = "base"
-LICENSE = "(GPLv3 & Elfutils-Exception)"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "libtool bzip2 zlib virtual/libintl"
-DEPENDS_append_libc-musl = " argp-standalone fts "
-
-SRC_URI = "https://fedorahosted.org/releases/e/l/elfutils/${PV}/${BP}.tar.bz2"
-
-SRC_URI[md5sum] = "2e4536c1c48034f188a80789a59114d8"
-SRC_URI[sha256sum] = "9683c025928a12d06b7fe812928aa6235249e22d197d086f7084606a48165900"
-
-SRC_URI += "\
-        file://dso-link-change.patch \
-        file://Fix_elf_cvt_gunhash.patch \
-        file://fixheadercheck.patch \
-        file://0001-elf_getarsym-Silence-Werror-maybe-uninitialized-fals.patch \
-        file://0001-remove-the-unneed-checking.patch \
-        file://0001-fix-a-stack-usage-warning.patch \
-        file://aarch64_uio.patch \
-        file://shadow.patch \
-"
-
-# pick the patch from debian
-# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.164-1.debian.tar.xz
-SRC_URI += "\
-        file://hppa_backend.diff \
-        file://arm_backend.diff \
-        file://mips_backend.diff \
-        file://m68k_backend.diff \
-        file://testsuite-ignore-elflint.diff \
-        file://mips_readelf_w.patch \
-        file://kfreebsd_path.patch \
-        file://0001-Ignore-differences-between-mips-machine-identifiers.patch \
-        file://0002-Add-support-for-mips64-abis-in-mips_retval.c.patch \
-        file://0003-Add-mips-n64-relocation-format-hack.patch \
-        file://uclibc-support.patch \
-"
-SRC_URI_append_libc-musl = " file://0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch "
-
-# The buildsystem wants to generate 2 .h files from source using a binary it just built,
-# which can not pass the cross compiling, so let's work around it by adding 2 .h files
-# along with the do_configure_prepend()
-
-inherit autotools gettext
-
-EXTRA_OECONF = "--program-prefix=eu- --without-lzma"
-EXTRA_OECONF_append_class-native = " --without-bzlib"
-EXTRA_OECONF_append_libc-uclibc = " --enable-uclibc"
-
-do_install_append() {
-	if [ "${TARGET_ARCH}" != "x86_64" ] && [ -z `echo "${TARGET_ARCH}"|grep 'i.86'` ];then
-		rm -f ${D}${bindir}/eu-objdump
-	fi
-}
-
-# we can not build complete elfutils when using uclibc
-# but some recipes e.g. gcc 4.5 depends on libelf so we
-# build only libelf for uclibc case
-
-EXTRA_OEMAKE_libc-uclibc = "-C libelf"
-EXTRA_OEMAKE_class-native = ""
-EXTRA_OEMAKE_class-nativesdk = ""
-
-ALLOW_EMPTY_${PN}_libc-musl = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Package utilities separately
-PACKAGES =+ "${PN}-binutils libelf libasm libdw"
-FILES_${PN}-binutils = "\
-    ${bindir}/eu-addr2line \
-    ${bindir}/eu-ld \
-    ${bindir}/eu-nm \
-    ${bindir}/eu-readelf \
-    ${bindir}/eu-size \
-    ${bindir}/eu-strip"
-
-FILES_libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
-FILES_libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
-FILES_libdw  = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
-# Some packages have the version preceeding the .so instead properly
-# versioned .so.<version>, so we need to reorder and repackage.
-#FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
-#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
-
-# The package contains symlinks that trip up insane
-INSANE_SKIP_${MLPREFIX}libdw = "dev-so"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.166.bb b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.166.bb
new file mode 100644
index 0000000..5c436d3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils_0.166.bb
@@ -0,0 +1,89 @@
+SUMMARY = "Utilities and libraries for handling compiled object files"
+HOMEPAGE = "https://fedorahosted.org/elfutils"
+SECTION = "base"
+LICENSE = "(GPLv3 & Elfutils-Exception)"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+DEPENDS = "libtool bzip2 zlib virtual/libintl"
+DEPENDS_append_libc-musl = " argp-standalone fts "
+
+SRC_URI = "https://fedorahosted.org/releases/e/l/elfutils/${PV}/${BP}.tar.bz2"
+SRC_URI[md5sum] = "d4e462b7891915dc5326bccefa2024ff"
+SRC_URI[sha256sum] = "3c056914c8a438b210be0d790463b960fc79d234c3f05ce707cbff80e94cba30"
+
+SRC_URI += "\
+        file://dso-link-change.patch \
+        file://Fix_elf_cvt_gunhash.patch \
+        file://fixheadercheck.patch \
+        file://0001-elf_getarsym-Silence-Werror-maybe-uninitialized-fals.patch \
+        file://0001-remove-the-unneed-checking.patch \
+        file://0001-fix-a-stack-usage-warning.patch \
+        file://aarch64_uio.patch \
+        file://shadow.patch \
+"
+
+# pick the patch from debian
+# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.164-1.debian.tar.xz
+SRC_URI += "\
+        file://hppa_backend.diff \
+        file://arm_backend.diff \
+        file://mips_backend.diff \
+        file://m68k_backend.diff \
+        file://testsuite-ignore-elflint.diff \
+        file://mips_readelf_w.patch \
+        file://kfreebsd_path.patch \
+        file://0001-Ignore-differences-between-mips-machine-identifiers.patch \
+        file://0002-Add-support-for-mips64-abis-in-mips_retval.c.patch \
+        file://0003-Add-mips-n64-relocation-format-hack.patch \
+        file://uclibc-support.patch \
+        file://elfcmp-fix-self-comparision.patch \
+"
+SRC_URI_append_libc-musl = " file://0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch "
+
+# The buildsystem wants to generate 2 .h files from source using a binary it just built,
+# which can not pass the cross compiling, so let's work around it by adding 2 .h files
+# along with the do_configure_prepend()
+
+inherit autotools gettext
+
+EXTRA_OECONF = "--program-prefix=eu- --without-lzma"
+EXTRA_OECONF_append_class-native = " --without-bzlib"
+EXTRA_OECONF_append_libc-uclibc = " --enable-uclibc"
+
+do_install_append() {
+	if [ "${TARGET_ARCH}" != "x86_64" ] && [ -z `echo "${TARGET_ARCH}"|grep 'i.86'` ];then
+		rm -f ${D}${bindir}/eu-objdump
+	fi
+}
+
+# we can not build complete elfutils when using uclibc
+# but some recipes e.g. gcc 4.5 depends on libelf so we
+# build only libelf for uclibc case
+
+EXTRA_OEMAKE_libc-uclibc = "-C libelf"
+EXTRA_OEMAKE_class-native = ""
+EXTRA_OEMAKE_class-nativesdk = ""
+
+ALLOW_EMPTY_${PN}_libc-musl = "1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Package utilities separately
+PACKAGES =+ "${PN}-binutils libelf libasm libdw"
+FILES_${PN}-binutils = "\
+    ${bindir}/eu-addr2line \
+    ${bindir}/eu-ld \
+    ${bindir}/eu-nm \
+    ${bindir}/eu-readelf \
+    ${bindir}/eu-size \
+    ${bindir}/eu-strip"
+
+FILES_libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
+FILES_libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
+FILES_libdw  = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
+# Some packages have the version preceeding the .so instead properly
+# versioned .so.<version>, so we need to reorder and repackage.
+#FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
+#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
+
+# The package contains symlinks that trip up insane
+INSANE_SKIP_${MLPREFIX}libdw = "dev-so"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/file/file/host-file.patch b/import-layers/yocto-poky/meta/recipes-devtools/file/file/host-file.patch
deleted file mode 100644
index a7efbdc..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/file/file/host-file.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Upstream-Status: Submitted (http://bugs.gw.com/view.php?id=485)
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 3cde199d03b39632361c275cd30fa0612a03138b Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Mon, 19 Oct 2015 10:30:57 +0100
-Subject: [PATCH 2/2] When using the host file, respect FILE_COMPILE
-
-If we're cross-compiling and not using the file binary that was just built,
-execute the binary that we've been told to use (via FILE_COMPILE) when checking
-the version instead of assuming that "file" is correct as the actual compile
-uses FILE_COMPILE so different binaries may be used.
----
- magic/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/magic/Makefile.am b/magic/Makefile.am
-index 89ac844..67067fe 100644
---- a/magic/Makefile.am
-+++ b/magic/Makefile.am
-@@ -293,7 +293,7 @@ ${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP)
- 	@(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \
- 	    echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \
- 	  else \
--	    v=$$(file --version | sed -e s/file-// -e q); \
-+	    v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \
- 	    if [ "$$v" != "${PACKAGE_VERSION}" ]; then \
- 		echo "Cannot use the installed version of file ($$v) to"; \
- 		echo "cross-compile file ${PACKAGE_VERSION}"; \
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/file/file_5.25.bb b/import-layers/yocto-poky/meta/recipes-devtools/file/file_5.25.bb
deleted file mode 100644
index 68bad69..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/file/file_5.25.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "File classification tool"
-DESCRIPTION = "File attempts to classify files depending \
-on their contents and prints a description if a match is found."
-HOMEPAGE = "http://www.darwinsys.com/file/"
-SECTION = "console/utils"
-
-# two clause BSD
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=6a7382872edb68d33e1a9398b6e03188"
-
-DEPENDS = "zlib file-replacement-native"
-DEPENDS_class-native = "zlib-native"
-
-# Blacklist a bogus tag in upstream check
-UPSTREAM_CHECK_GITTAGREGEX = "FILE(?P<pver>(?!6_23).+)"
-
-SRC_URI = "git://github.com/file/file.git \
-        file://debian-742262.patch \
-        file://0001-Add-P-prompt-into-Usage-info.patch \
-        file://host-file.patch \
-        "
-
-SRCREV = "f45db89ddc91692b662fffbabbdafc7bc4c00f5e"
-S = "${WORKDIR}/git"
-
-inherit autotools
-
-EXTRA_OEMAKE_append_class-target = "-e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
-EXTRA_OEMAKE_append_class-nativesdk = "-e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
-
-FILES_${PN} += "${datadir}/misc/*.mgc"
-
-do_install_append_class-native() {
-	create_cmdline_wrapper ${D}/${bindir}/file \
-		--magic-file ${datadir}/misc/magic.mgc
-}
-
-do_install_append_class-nativesdk() {
-	create_cmdline_wrapper ${D}/${bindir}/file \
-		--magic-file ${datadir}/misc/magic.mgc
-}
-
-BBCLASSEXTEND = "native nativesdk"
-PROVIDES_append_class-native = " file-replacement-native"
-# Don't use NATIVE_PACKAGE_PATH_SUFFIX as that hides libmagic from anyone who
-# depends on file-replacement-native.
-bindir_append_class-native = "/file-native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/file/file_5.28.bb b/import-layers/yocto-poky/meta/recipes-devtools/file/file_5.28.bb
new file mode 100644
index 0000000..e64a89c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/file/file_5.28.bb
@@ -0,0 +1,48 @@
+SUMMARY = "File classification tool"
+DESCRIPTION = "File attempts to classify files depending \
+on their contents and prints a description if a match is found."
+HOMEPAGE = "http://www.darwinsys.com/file/"
+SECTION = "console/utils"
+
+# two clause BSD
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=6a7382872edb68d33e1a9398b6e03188"
+
+DEPENDS = "zlib file-replacement-native"
+DEPENDS_class-native = "zlib-native"
+
+# Blacklist a bogus tag in upstream check
+UPSTREAM_CHECK_GITTAGREGEX = "FILE(?P<pver>(?!6_23).+)"
+
+SRC_URI = "git://github.com/file/file.git \
+        file://debian-742262.patch \
+        file://0001-Add-P-prompt-into-Usage-info.patch \
+        "
+
+SRCREV = "3c521817322a6bf5160cfeb09b9145ccde587b2a"
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+EXTRA_OEMAKE_append_class-target = "-e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
+EXTRA_OEMAKE_append_class-nativesdk = "-e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
+
+CFLAGS_append = " -std=c99"
+
+FILES_${PN} += "${datadir}/misc/*.mgc"
+
+do_install_append_class-native() {
+	create_cmdline_wrapper ${D}/${bindir}/file \
+		--magic-file ${datadir}/misc/magic.mgc
+}
+
+do_install_append_class-nativesdk() {
+	create_cmdline_wrapper ${D}/${bindir}/file \
+		--magic-file ${datadir}/misc/magic.mgc
+}
+
+BBCLASSEXTEND = "native nativesdk"
+PROVIDES_append_class-native = " file-replacement-native"
+# Don't use NATIVE_PACKAGE_PATH_SUFFIX as that hides libmagic from anyone who
+# depends on file-replacement-native.
+bindir_append_class-native = "/file-native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/flex/flex/0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch b/import-layers/yocto-poky/meta/recipes-devtools/flex/flex/0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch
new file mode 100644
index 0000000..438ca5f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/flex/flex/0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch
@@ -0,0 +1,64 @@
+From 7072befe1397af4eb01c3ff7edf99f0cd5076089 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 30 Aug 2016 14:25:32 +0200
+Subject: [PATCH] avoid c++ comments in c-code - fails with gcc-6
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fixes:
+
+| error: C++ style comments are not allowed in ISO C90
+| num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/flex.skl | 2 +-
+ src/scan.c   | 2 +-
+ src/skel.c   | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/flex.skl b/src/flex.skl
+index 73a0b9e..ed71627 100644
+--- a/src/flex.skl
++++ b/src/flex.skl
+@@ -2350,7 +2350,7 @@ void yyFlexLexer::yyensure_buffer_stack(void)
+ 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ 		 * immediate realloc on the next call.
+          */
+-		num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
++		num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+ 		YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+ 								(num_to_alloc * sizeof(struct yy_buffer_state*)
+ 								M4_YY_CALL_LAST_ARG);
+diff --git a/src/scan.c b/src/scan.c
+index b55df2d..f1dce75 100644
+--- a/src/scan.c
++++ b/src/scan.c
+@@ -4672,7 +4672,7 @@ static void yyensure_buffer_stack (void)
+ 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ 		 * immediate realloc on the next call.
+          */
+-		num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
++		num_to_alloc = 1; /* After all that talk, this was set to 1 anyways...*/
+ 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+ 								(num_to_alloc * sizeof(struct yy_buffer_state*)
+ 								);
+diff --git a/src/skel.c b/src/skel.c
+index ef657d3..26cc889 100644
+--- a/src/skel.c
++++ b/src/skel.c
+@@ -2561,7 +2561,7 @@ const char *skel[] = {
+   "		 * scanner will even need a stack. We use 2 instead of 1 to avoid an",
+   "		 * immediate realloc on the next call.",
+   "         */",
+-  "		num_to_alloc = 1; // After all that talk, this was set to 1 anyways...",
++  "		num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */",
+   "		YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc",
+   "								(num_to_alloc * sizeof(struct yy_buffer_state*)",
+   "								M4_YY_CALL_LAST_ARG);",
+-- 
+2.5.5
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/flex/flex/CVE-2016-6354.patch b/import-layers/yocto-poky/meta/recipes-devtools/flex/flex/CVE-2016-6354.patch
new file mode 100644
index 0000000..216ac7a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/flex/flex/CVE-2016-6354.patch
@@ -0,0 +1,59 @@
+From 3939eccdff598f47e5b37b05d58bf1b44d3796e7 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Fri, 7 Oct 2016 14:15:38 +0300
+Subject: [PATCH] Prevent buffer overflow in yy_get_next_buffer
+
+This is upstream commit a5cbe929ac3255d371e698f62dc256afe7006466
+with some additional backporting to make binutils build again.
+
+Upstream-Status: Backport
+CVE: CVE-2016-6354
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ src/flex.skl | 2 +-
+ src/scan.c   | 2 +-
+ src/skel.c   | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/flex.skl b/src/flex.skl
+index ed71627..814d562 100644
+--- a/src/flex.skl
++++ b/src/flex.skl
+@@ -1718,7 +1718,7 @@ int yyFlexLexer::yy_get_next_buffer()
+ 
+ 	else
+ 		{
+-			yy_size_t num_to_read =
++			int num_to_read =
+ 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+ 
+ 		while ( num_to_read <= 0 )
+diff --git a/src/scan.c b/src/scan.c
+index f1dce75..1949872 100644
+--- a/src/scan.c
++++ b/src/scan.c
+@@ -4181,7 +4181,7 @@ static int yy_get_next_buffer (void)
+ 
+ 	else
+ 		{
+-			yy_size_t num_to_read =
++			int num_to_read =
+ 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+ 
+ 		while ( num_to_read <= 0 )
+diff --git a/src/skel.c b/src/skel.c
+index 26cc889..0344d18 100644
+--- a/src/skel.c
++++ b/src/skel.c
+@@ -1929,7 +1929,7 @@ const char *skel[] = {
+   "",
+   "	else",
+   "		{",
+-  "			yy_size_t num_to_read =",
++  "			int num_to_read =",
+   "			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;",
+   "",
+   "		while ( num_to_read <= 0 )",
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/flex/flex_2.6.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/flex/flex_2.6.0.bb
index 8285426..ab35b09 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/flex/flex_2.6.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/flex/flex_2.6.0.bb
@@ -14,12 +14,16 @@
            file://run-ptest \
            file://do_not_create_pdf_doc.patch \
            file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
+           file://0002-avoid-c-comments-in-c-code-fails-with-gcc-6.patch \
+           file://CVE-2016-6354.patch \
            ${@bb.utils.contains('PTEST_ENABLED', '1', '', 'file://disable-tests.patch', d)} \
            "
 
 SRC_URI[md5sum] = "266270f13c48ed043d95648075084d59"
 SRC_URI[sha256sum] = "24e611ef5a4703a191012f80c1027dc9d12555183ce0ecd46f3636e587e9b8e9"
 
+# Flex has moved to github from 2.6.1 onwards
+UPSTREAM_CHECK_URI = "https://github.com/westes/flex/releases"
 UPSTREAM_CHECK_REGEX = "flex-(?P<pver>\d+(\.\d+)+)\.tar"
 
 inherit autotools gettext texinfo ptest
@@ -51,5 +55,8 @@
 	cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
 	cp -r ${S}/tests/* ${D}${PTEST_PATH}
 	cp -r ${B}/tests/* ${D}${PTEST_PATH}
-	sed -e 's/^Makefile:/_Makefile:/' -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/^top_srcdir = \(.*\)/top_srcdir = ./'  -i ${D}${PTEST_PATH}/Makefile
+	sed -e 's/^Makefile:/_Makefile:/' \
+	    -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/^top_srcdir = \(.*\)/top_srcdir = ./' \
+	    -e 's/^builddir = \(.*\)/builddir = ./' -e 's/^top_builddir = \(.*\)/top_builddir = ./' \
+	    -i ${D}${PTEST_PATH}/Makefile
 }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9.inc
deleted file mode 100644
index 7e03f31..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9.inc
+++ /dev/null
@@ -1,139 +0,0 @@
-require gcc-common.inc
-
-# Third digit in PV should be incremented after a minor release
-
-PV = "4.9.3"
-
-# BINV should be incremented to a revision after a minor gcc release
-
-BINV = "4.9.3"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-4.9:"
-
-DEPENDS =+ "mpfr gmp libmpc zlib"
-NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
-
-LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
-
-LIC_FILES_CHKSUM = "\
-    file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
-    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
-    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
-    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-    file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \
-"
-
-SRC_URI = "\
-    ${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
-    file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
-    file://0002-uclibc-conf.patch \
-    file://0003-gcc-uclibc-locale-ctype_touplow_t.patch \
-    file://0004-uclibc-locale.patch \
-    file://0005-uclibc-locale-no__x.patch \
-    file://0006-uclibc-locale-wchar_fix.patch \
-    file://0007-uclibc-locale-update.patch \
-    file://0008-missing-execinfo_h.patch \
-    file://0009-c99-snprintf.patch \
-    file://0010-c99-complex-ugly-hack.patch \
-    file://0011-index_macro.patch \
-    file://0013-libstdc-namespace.patch \
-    file://0014-sh-pr24836.patch \
-    file://0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch \
-    file://0016-gcc-poison-system-directories.patch \
-    file://0017-gcc-poison-dir-extend.patch \
-    file://0018-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
-    file://0019-64-bit-multilib-hack.patch \
-    file://0020-optional-libstdc.patch \
-    file://0021-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
-    file://0022-COLLECT_GCC_OPTIONS.patch \
-    file://0023-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
-    file://0025-fortran-cross-compile-hack.patch \
-    file://0026-libgcc-sjlj-check.patch \
-    file://0027-cpp-honor-sysroot.patch \
-    file://0028-MIPS64-Default-to-N64-ABI.patch \
-    file://0029-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
-    file://0030-gcc-Fix-argument-list-too-long-error.patch \
-    file://0031-Disable-sdt.patch \
-    file://0032-libtool.patch \
-    file://0033-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
-    file://0034-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
-    file://0040-fix-g++-sysroot.patch \
-    file://0041-libtool-avoid-libdir.patch \
-    file://0043-cpp.patch \
-    file://0044-gengtypes.patch \
-    file://0046-libatomic-deptracking.patch \
-    file://0047-repomembug.patch \
-    file://0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch \
-    file://0050-Revert-Use-dbx_reg_number-for-spanning-registers.patch \
-    file://0051-eabispe.patch \
-    file://0052-Add-target-hook-to-override-DWARF2-frame-register-si.patch \
-    file://0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch \
-    file://0054-gcc-Makefile.in-fix-parallel-building-failure.patch \
-    file://0055-dwarf-reg-processing-helper.patch \
-    file://0056-define-default-cfa-register-mapping.patch \
-    file://0057-aarch64-config.patch \
-    file://0058-gcc-r212171.patch \
-    file://0059-gcc-PR-rtl-optimization-63348.patch \
-    file://0060-Only-allow-e500-double-in-SPE_SIMD_REGNO_P-registers.patch \
-    file://0061-target-gcc-includedir.patch \
-    file://0062-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
-    file://0063-nativesdk-gcc-support.patch \
-    file://0064-handle-target-sysroot-multilib.patch \
-    file://0065-gcc-483-universal-initializer-no-warning.patch \
-    file://0066-cxxflags-for-build.patch \
-    file://0067-fix-arm-thumb.patch \
-    file://0067-gcc-musl-support.patch \
-    file://0068-musl-dynamic-linker.patch \
-    file://0069-musl-no-fixincludes.patch \
-    file://0070-libstdc-musl.patch \
-    file://0071-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch \
-    file://0072-support-ffile-prefix-map.patch \
-    file://0073-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch \
-    file://0074-fdebug-prefix-map-support-to-remap-relative-path.patch \
-"
-SRC_URI[md5sum] = "6f831b4d251872736e8e9cc09746f327"
-SRC_URI[sha256sum] = "2332b2a5a321b57508b9031354a8503af6fdfb868b8c1748d33028d100a8b67e"
-
-UPSTREAM_CHECK_REGEX = "gcc-(?P<pver>4\.9\.\d+).tar"
-
-S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
-B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
-
-# Language Overrides
-FORTRAN = ""
-JAVA = ""
-
-LTO = "--enable-lto"
-
-EXTRA_OECONF_BASE = "\
-    ${LTO} \
-    --enable-libssp \
-    --disable-bootstrap \
-    --disable-libmudflap \
-    --with-system-zlib \
-    --with-linker-hash-style=${LINKER_HASH_STYLE} \
-    --enable-linker-build-id \
-    --with-ppl=no \
-    --with-cloog=no \
-    --enable-checking=release \
-    --enable-cheaders=c_global \
-"
-
-EXTRA_OECONF_INITIAL = "\
-    --disable-libmudflap \
-    --disable-libgomp \
-    --disable-libssp \
-    --disable-libquadmath \
-    --with-system-zlib \
-    --disable-lto \
-    --disable-plugin \
-    --enable-decimal-float=no \
-"
-
-EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
-
-EXTRA_OECONF_PATHS = "\
-    --with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
-    --with-sysroot=/not/exist \
-    --with-build-sysroot=${STAGING_DIR_TARGET} \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
deleted file mode 100644
index e588011..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From bf3d96ae58fa180b8b468d25dc2e0209daca2751 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:37:11 +0400
-Subject: [PATCH 01/35] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- configure    |    2 +-
- configure.ac |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure b/configure
-index d809535..1b76c90 100755
---- a/configure
-+++ b/configure
-@@ -7439,7 +7439,7 @@ fi
- # for target_alias and gcc doesn't manage it consistently.
- target_configargs="--cache-file=./config.cache ${target_configargs}"
- 
--FLAGS_FOR_TARGET=
-+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
- case " $target_configdirs " in
-  *" newlib "*)
-   case " $target_configargs " in
-diff --git a/configure.ac b/configure.ac
-index 48ec1aa..89d1d3f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2873,7 +2873,7 @@ fi
- # for target_alias and gcc doesn't manage it consistently.
- target_configargs="--cache-file=./config.cache ${target_configargs}"
- 
--FLAGS_FOR_TARGET=
-+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
- case " $target_configdirs " in
-  *" newlib "*)
-   case " $target_configargs " in
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0002-uclibc-conf.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0002-uclibc-conf.patch
deleted file mode 100644
index dda3b10..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0002-uclibc-conf.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From d030973c872c00d916921d84deee0af2c0d38081 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:38:25 +0400
-Subject: [PATCH 02/35] uclibc-conf
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- contrib/regression/objs-gcc.sh |    4 ++++
- libjava/classpath/ltconfig     |    4 ++--
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
-index 60b0497..6dc7ead 100755
---- a/contrib/regression/objs-gcc.sh
-+++ b/contrib/regression/objs-gcc.sh
-@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
-diff --git a/libjava/classpath/ltconfig b/libjava/classpath/ltconfig
-index 743d951..ae4ea60 100755
---- a/libjava/classpath/ltconfig
-+++ b/libjava/classpath/ltconfig
-@@ -603,7 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
- 
- # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
- case $host_os in
--linux-gnu*) ;;
-+linux-gnu*|linux-uclibc*) ;;
- linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
- esac
- 
-@@ -1247,7 +1247,7 @@ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0003-gcc-uclibc-locale-ctype_touplow_t.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0003-gcc-uclibc-locale-ctype_touplow_t.patch
deleted file mode 100644
index 7098e99..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0003-gcc-uclibc-locale-ctype_touplow_t.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From d2d9dd756c4356d14dd7ae003856344cb4f37985 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:40:12 +0400
-Subject: [PATCH 03/35] gcc-uclibc-locale-ctype_touplow_t
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libstdc++-v3/config/locale/generic/c_locale.cc |    5 +++++
- libstdc++-v3/config/locale/generic/c_locale.h  |    9 +++++++++
- libstdc++-v3/config/os/gnu-linux/ctype_base.h  |    9 +++++++++
- 3 files changed, 23 insertions(+)
-
-diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc
-index 0d309a5..f2f1e1f 100644
---- a/libstdc++-v3/config/locale/generic/c_locale.cc
-+++ b/libstdc++-v3/config/locale/generic/c_locale.cc
-@@ -263,5 +263,10 @@ _GLIBCXX_END_NAMESPACE_VERSION
- #ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
- #define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
-   extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
-+#ifdef __UCLIBC__
-+// This is because __c_locale is of type __ctype_touplow_t* which is short on uclibc. for glibc its int*
-+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPs, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPs);
-+#else
- _GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
-+#endif
- #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
-diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h
-index b5fd989..3da9a5d 100644
---- a/libstdc++-v3/config/locale/generic/c_locale.h
-+++ b/libstdc++-v3/config/locale/generic/c_locale.h
-@@ -40,13 +40,22 @@
- 
- #include <clocale>
- 
-+#ifdef __UCLIBC__
-+#include <features.h>
-+#include <ctype.h>
-+#endif
-+
- #define _GLIBCXX_NUM_CATEGORIES 0
- 
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
- 
-+#ifdef __UCLIBC__
-+  typedef __ctype_touplow_t*	__c_locale;
-+#else
-   typedef int*			__c_locale;
-+#endif
- 
-   // Convert numeric value of type double and long double to string and
-   // return length of string.  If vsnprintf is available use it, otherwise
-diff --git a/libstdc++-v3/config/os/gnu-linux/ctype_base.h b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
-index 2d8e978..14eb08f 100644
---- a/libstdc++-v3/config/os/gnu-linux/ctype_base.h
-+++ b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
-@@ -33,6 +33,11 @@
- 
- // Information as gleaned from /usr/include/ctype.h
- 
-+#ifdef __UCLIBC__
-+#include <features.h>
-+#include <ctype.h>
-+#endif
-+
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
-@@ -41,7 +46,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
-   struct ctype_base
-   {
-     // Non-standard typedefs.
-+#ifdef __UCLIBC__
-+    typedef const __ctype_touplow_t*	__to_type;
-+#else
-     typedef const int* 		__to_type;
-+#endif
- 
-     // NB: Offsets into ctype<char>::_M_table force a particular size
-     // on the mask type. Because of this, we don't use an enum.
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0004-uclibc-locale.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0004-uclibc-locale.patch
deleted file mode 100644
index 49f5f33..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0004-uclibc-locale.patch
+++ /dev/null
@@ -1,2862 +0,0 @@
-From a55c751a449c2cbf0b3fcc07aab1b86bf9661510 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:41:39 +0400
-Subject: [PATCH 04/35] uclibc-locale
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libstdc++-v3/acinclude.m4                          |   37 ++
- .../config/locale/uclibc/c++locale_internal.h      |   63 ++
- libstdc++-v3/config/locale/uclibc/c_locale.cc      |  160 +++++
- libstdc++-v3/config/locale/uclibc/c_locale.h       |  117 ++++
- .../config/locale/uclibc/codecvt_members.cc        |  308 +++++++++
- .../config/locale/uclibc/collate_members.cc        |   80 +++
- libstdc++-v3/config/locale/uclibc/ctype_members.cc |  300 +++++++++
- .../config/locale/uclibc/messages_members.cc       |  100 +++
- .../config/locale/uclibc/messages_members.h        |  118 ++++
- .../config/locale/uclibc/monetary_members.cc       |  692 ++++++++++++++++++++
- .../config/locale/uclibc/numeric_members.cc        |  160 +++++
- libstdc++-v3/config/locale/uclibc/time_members.cc  |  406 ++++++++++++
- libstdc++-v3/config/locale/uclibc/time_members.h   |   68 ++
- libstdc++-v3/configure                             |   75 +++
- libstdc++-v3/include/c_compatibility/wchar.h       |    2 +
- libstdc++-v3/include/c_std/cwchar                  |    2 +
- 16 files changed, 2688 insertions(+)
- create mode 100644 libstdc++-v3/config/locale/uclibc/c++locale_internal.h
- create mode 100644 libstdc++-v3/config/locale/uclibc/c_locale.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/c_locale.h
- create mode 100644 libstdc++-v3/config/locale/uclibc/codecvt_members.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/collate_members.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/ctype_members.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/messages_members.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/messages_members.h
- create mode 100644 libstdc++-v3/config/locale/uclibc/monetary_members.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/numeric_members.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/time_members.cc
- create mode 100644 libstdc++-v3/config/locale/uclibc/time_members.h
-
-diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
-index 0871a6a..326d7ef 100644
---- a/libstdc++-v3/acinclude.m4
-+++ b/libstdc++-v3/acinclude.m4
-@@ -1905,6 +1905,9 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
- 	enable_clocale_flag=gnu
- 	;;
-@@ -2069,6 +2072,40 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-new file mode 100644
-index 0000000..2ae3e4a
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-@@ -0,0 +1,63 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+// Written by Jakub Jelinek <jakub@redhat.com>
-+
-+#include <bits/c++config.h>
-+#include <clocale>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning clean this up
-+#endif
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+
-+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
-+extern "C" __typeof(strcoll_l) __strcoll_l;
-+extern "C" __typeof(strftime_l) __strftime_l;
-+extern "C" __typeof(strtod_l) __strtod_l;
-+extern "C" __typeof(strtof_l) __strtof_l;
-+extern "C" __typeof(strtold_l) __strtold_l;
-+extern "C" __typeof(strxfrm_l) __strxfrm_l;
-+extern "C" __typeof(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+extern "C" __typeof(iswctype_l) __iswctype_l;
-+extern "C" __typeof(towlower_l) __towlower_l;
-+extern "C" __typeof(towupper_l) __towupper_l;
-+extern "C" __typeof(wcscoll_l) __wcscoll_l;
-+extern "C" __typeof(wcsftime_l) __wcsftime_l;
-+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
-+extern "C" __typeof(wctype_l) __wctype_l;
-+#endif
-+
-+#endif // GLIBC 2.3 and later
-diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
-new file mode 100644
-index 0000000..5081dc1
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
-@@ -0,0 +1,160 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <cerrno>  // For errno
-+#include <locale>
-+#include <stdexcept>
-+#include <langinfo.h>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
-+#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
-+#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
-+#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
-+#define __strtof_l(S, E, L)         strtof((S), (E))
-+#define __strtod_l(S, E, L)         strtod((S), (E))
-+#define __strtold_l(S, E, L)        strtold((S), (E))
-+#warning should dummy __newlocale check for C|POSIX ?
-+#define __newlocale(a, b, c)        NULL
-+#define __freelocale(a)             ((void)0)
-+#define __duplocale(a)              __c_locale()
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  float __f = __strtof_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __f;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  double __d = __strtod_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __d;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __ld;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  void
-+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
-+				    __c_locale __old)
-+  {
-+    __cloc = __newlocale(1 << LC_ALL, __s, __old);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    if (!__cloc)
-+      {
-+	// This named locale is not supported by the underlying OS.
-+	__throw_runtime_error(__N("locale::facet::_S_create_c_locale "
-+			      "name not valid"));
-+      }
-+#endif
-+  }
-+
-+  void
-+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
-+  {
-+    if (_S_get_c_locale() != __cloc)
-+      __freelocale(__cloc);
-+  }
-+
-+  __c_locale
-+  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
-+  { return __duplocale(__cloc); }
-+} // namespace std
-+
-+namespace __gnu_cxx
-+{
-+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
-+    {
-+      "LC_CTYPE",
-+      "LC_NUMERIC",
-+      "LC_TIME",
-+      "LC_COLLATE",
-+      "LC_MONETARY",
-+      "LC_MESSAGES",
-+#if _GLIBCXX_NUM_CATEGORIES != 0
-+      "LC_PAPER",
-+      "LC_NAME",
-+      "LC_ADDRESS",
-+      "LC_TELEPHONE",
-+      "LC_MEASUREMENT",
-+      "LC_IDENTIFICATION"
-+#endif
-+    };
-+}
-+
-+namespace std
-+{
-+  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
-+}  // namespace std
-diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
-new file mode 100644
-index 0000000..da07c1f
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
-@@ -0,0 +1,117 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out,
-+		     const int __size __attribute__ ((__unused__)),
-+		     const char* __fmt,
-+#ifdef __UCLIBC_HAS_XCLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XCLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff --git a/libstdc++-v3/config/locale/uclibc/codecvt_members.cc b/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
-new file mode 100644
-index 0000000..64aa962
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
-@@ -0,0 +1,308 @@
-+// std::codecvt implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <cstdlib>  // For MB_CUR_MAX
-+#include <climits>  // For MB_LEN_MAX
-+#include <bits/c++locale_internal.h>
-+
-+namespace std
-+{
-+  // Specializations.
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_out(state_type& __state, const intern_type* __from,
-+	 const intern_type* __from_end, const intern_type*& __from_next,
-+	 extern_type* __to, extern_type* __to_end,
-+	 extern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // wcsnrtombs is *very* fast but stops if encounters NUL characters:
-+    // in case we fall back to wcrtomb and then continue, in a loop.
-+    // NB: wcsnrtombs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
-+						      __from_end - __from_next);
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	const size_t __conv = wcsnrtombs(__to_next, &__from_next,
-+					 __from_chunk_end - __from_next,
-+					 __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // wcrtomb.
-+	    for (; __from < __from_next; ++__from)
-+	      __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
-+	    __state = __tmp_state;
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    extern_type __buf[MB_LEN_MAX];
-+	    __tmp_state = __state;
-+	    const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
-+	    if (__conv > static_cast<size_t>(__to_end - __to_next))
-+	      __ret = partial;
-+	    else
-+	      {
-+		memcpy(__to_next, __buf, __conv);
-+		__state = __tmp_state;
-+		__to_next += __conv;
-+		++__from_next;
-+	      }
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret;
-+  }
-+
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_in(state_type& __state, const extern_type* __from,
-+	const extern_type* __from_end, const extern_type*& __from_next,
-+	intern_type* __to, intern_type* __to_end,
-+	intern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we store a L'\0' and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
-+								  __from_end
-+								  - __from_next));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	size_t __conv = mbsnrtowcs(__to_next, &__from_next,
-+				   __from_chunk_end - __from_next,
-+				   __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (;; ++__to_next, __from += __conv)
-+	      {
-+		__conv = mbrtowc(__to_next, __from, __from_end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __from_next = __from;
-+	    __state = __tmp_state;
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    // It is unclear what to return in this case (see DR 382).
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    if (__to_next < __to_end)
-+	      {
-+		// XXX Probably wrong for stateful encodings
-+		__tmp_state = __state;
-+		++__from_next;
-+		*__to_next++ = L'\0';
-+	      }
-+	    else
-+	      __ret = partial;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret;
-+  }
-+
-+  int
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_encoding() const throw()
-+  {
-+    // XXX This implementation assumes that the encoding is
-+    // stateless and is either single-byte or variable-width.
-+    int __ret = 0;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    if (MB_CUR_MAX == 1)
-+      __ret = 1;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }
-+
-+  int
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_max_length() const throw()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    // XXX Probably wrong for stateful encodings.
-+    int __ret = MB_CUR_MAX;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }
-+
-+  int
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_length(state_type& __state, const extern_type* __from,
-+	    const extern_type* __end, size_t __max) const
-+  {
-+    int __ret = 0;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we advance past it and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+
-+    // A dummy internal buffer is needed in order for mbsnrtocws to consider
-+    // its fourth parameter (it wouldn't with NULL as first parameter).
-+    wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
-+							   * __max));
-+    while (__from < __end && __max)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
-+								  __end
-+								  - __from));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __end;
-+
-+	const extern_type* __tmp_from = __from;
-+	size_t __conv = mbsnrtowcs(__to, &__from,
-+				   __from_chunk_end - __from,
-+				   __max, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (__from = __tmp_from;; __from += __conv)
-+	      {
-+		__conv = mbrtowc(NULL, __from, __end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __state = __tmp_state;
-+	    __ret += __from - __tmp_from;
-+	    break;
-+	  }
-+	if (!__from)
-+	  __from = __from_chunk_end;
-+
-+	__ret += __from - __tmp_from;
-+	__max -= __conv;
-+
-+	if (__from < __end && __max)
-+	  {
-+	    // XXX Probably wrong for stateful encodings
-+	    __tmp_state = __state;
-+	    ++__from;
-+	    ++__ret;
-+	    --__max;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret;
-+  }
-+#endif
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
-new file mode 100644
-index 0000000..c2664a7
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
-@@ -0,0 +1,80 @@
-+// std::collate implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
-+#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
-+#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
-+#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
-+#endif
-+
-+namespace std
-+{
-+  // These are basically extensions to char_traits, and perhaps should
-+  // be put there instead of here.
-+  template<>
-+    int
-+    collate<char>::_M_compare(const char* __one, const char* __two) const
-+    {
-+      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+
-+  template<>
-+    size_t
-+    collate<char>::_M_transform(char* __to, const char* __from,
-+				size_t __n) const
-+    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    int
-+    collate<wchar_t>::_M_compare(const wchar_t* __one,
-+				 const wchar_t* __two) const
-+    {
-+      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+
-+  template<>
-+    size_t
-+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
-+				   size_t __n) const
-+    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+#endif
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-new file mode 100644
-index 0000000..7294e3a
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-@@ -0,0 +1,300 @@
-+// std::ctype implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __wctype_l(S, L)           wctype((S))
-+#define __towupper_l(C, L)         towupper((C))
-+#define __towlower_l(C, L)         towlower((C))
-+#define __iswctype_l(C, M, L)      iswctype((C), (M))
-+#endif
-+
-+namespace std
-+{
-+  // NB: The other ctype<char> specializations are in src/locale.cc and
-+  // various /config/os/* files.
-+  template<>
-+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
-+    : ctype<char>(0, false, __refs)
-+    {
-+      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	{
-+	  this->_S_destroy_c_locale(this->_M_c_locale_ctype);
-+	  this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
-+	  this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
-+	  this->_M_table = this->_M_c_locale_ctype->__ctype_b;
-+#endif
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  ctype<wchar_t>::__wmask_type
-+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
-+  {
-+    __wmask_type __ret;
-+    switch (__m)
-+      {
-+      case space:
-+	__ret = __wctype_l("space", _M_c_locale_ctype);
-+	break;
-+      case print:
-+	__ret = __wctype_l("print", _M_c_locale_ctype);
-+	break;
-+      case cntrl:
-+	__ret = __wctype_l("cntrl", _M_c_locale_ctype);
-+	break;
-+      case upper:
-+	__ret = __wctype_l("upper", _M_c_locale_ctype);
-+	break;
-+      case lower:
-+	__ret = __wctype_l("lower", _M_c_locale_ctype);
-+	break;
-+      case alpha:
-+	__ret = __wctype_l("alpha", _M_c_locale_ctype);
-+	break;
-+      case digit:
-+	__ret = __wctype_l("digit", _M_c_locale_ctype);
-+	break;
-+      case punct:
-+	__ret = __wctype_l("punct", _M_c_locale_ctype);
-+	break;
-+      case xdigit:
-+	__ret = __wctype_l("xdigit", _M_c_locale_ctype);
-+	break;
-+      case alnum:
-+	__ret = __wctype_l("alnum", _M_c_locale_ctype);
-+	break;
-+      case graph:
-+	__ret = __wctype_l("graph", _M_c_locale_ctype);
-+	break;
-+      default:
-+	__ret = __wmask_type();
-+      }
-+    return __ret;
-+  }
-+
-+  wchar_t
-+  ctype<wchar_t>::do_toupper(wchar_t __c) const
-+  { return __towupper_l(__c, _M_c_locale_ctype); }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+
-+  wchar_t
-+  ctype<wchar_t>::do_tolower(wchar_t __c) const
-+  { return __towlower_l(__c, _M_c_locale_ctype); }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+
-+  bool
-+  ctype<wchar_t>::
-+  do_is(mask __m, wchar_t __c) const
-+  {
-+    // Highest bitmask in ctype_base == 10, but extra in "C"
-+    // library for blank.
-+    bool __ret = false;
-+    const size_t __bitmasksize = 11;
-+    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+      if (__m & _M_bit[__bitcur]
-+	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	{
-+	  __ret = true;
-+	  break;
-+	}
-+    return __ret;
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
-+  {
-+    for (; __lo < __hi; ++__vec, ++__lo)
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11;
-+	mask __m = 0;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	    __m |= _M_bit[__bitcur];
-+	*__vec = __m;
-+      }
-+    return __hi;
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi && !this->do_is(__m, *__lo))
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
-+  {
-+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  wchar_t
-+  ctype<wchar_t>::
-+  do_widen(char __c) const
-+  { return _M_widen[static_cast<unsigned char>(__c)]; }
-+
-+  const char*
-+  ctype<wchar_t>::
-+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-+  {
-+    while (__lo < __hi)
-+      {
-+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
-+	++__lo;
-+	++__dest;
-+      }
-+    return __hi;
-+  }
-+
-+  char
-+  ctype<wchar_t>::
-+  do_narrow(wchar_t __wc, char __dfault) const
-+  {
-+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
-+      return _M_narrow[__wc];
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    const int __c = wctob(__wc);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return (__c == EOF ? __dfault : static_cast<char>(__c));
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
-+	    char* __dest) const
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    if (_M_narrow_ok)
-+      while (__lo < __hi)
-+	{
-+	  if (*__lo >= 0 && *__lo < 128)
-+	    *__dest = _M_narrow[*__lo];
-+	  else
-+	    {
-+	      const int __c = wctob(*__lo);
-+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	    }
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+    else
-+      while (__lo < __hi)
-+	{
-+	  const int __c = wctob(*__lo);
-+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __hi;
-+  }
-+
-+  void
-+  ctype<wchar_t>::_M_initialize_ctype()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    wint_t __i;
-+    for (__i = 0; __i < 128; ++__i)
-+      {
-+	const int __c = wctob(__i);
-+	if (__c == EOF)
-+	  break;
-+	else
-+	  _M_narrow[__i] = static_cast<char>(__c);
-+      }
-+    if (__i == 128)
-+      _M_narrow_ok = true;
-+    else
-+      _M_narrow_ok = false;
-+    for (size_t __j = 0;
-+	 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
-+      _M_widen[__j] = btowc(__j);
-+
-+    for (size_t __k = 0; __k <= 11; ++__k)
-+      {
-+	_M_bit[__k] = static_cast<mask>(_ISbit(__k));
-+	_M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
-+      }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+  }
-+#endif //  _GLIBCXX_USE_WCHAR_T
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
-new file mode 100644
-index 0000000..13594d9
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
-@@ -0,0 +1,100 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix gettext stuff
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__dcgettext(const char *domainname,
-+			     const char *msgid, int category);
-+#undef gettext
-+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
-+#else
-+#undef gettext
-+#define gettext(msgid) (msgid)
-+#endif
-+
-+namespace std
-+{
-+  // Specializations.
-+  template<>
-+    string
-+    messages<char>::do_get(catalog, int, int, const string& __dfault) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
-+      __uselocale(__old);
-+      return string(__msg);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      const char* __msg = gettext(__dfault.c_str());
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return string(__msg);
-+#else
-+      const char* __msg = gettext(__dfault.c_str());
-+      return string(__msg);
-+#endif
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    wstring
-+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
-+    {
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      __uselocale(__old);
-+      return _M_convert_from_char(__msg);
-+# elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return _M_convert_from_char(__msg);
-+# else
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      return _M_convert_from_char(__msg);
-+# endif
-+    }
-+#endif
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
-new file mode 100644
-index 0000000..1424078
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
-@@ -0,0 +1,118 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix prototypes for *textdomain funcs
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__textdomain(const char *domainname);
-+extern "C" char *__bindtextdomain(const char *domainname,
-+				  const char *dirname);
-+#else
-+#undef __textdomain
-+#undef __bindtextdomain
-+#define __textdomain(D)           ((void)0)
-+#define __bindtextdomain(D,P)     ((void)0)
-+#endif
-+
-+  // Non-virtual member functions.
-+  template<typename _CharT>
-+     messages<_CharT>::messages(size_t __refs)
-+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
-+     _M_name_messages(_S_get_c_name())
-+     { }
-+
-+  template<typename _CharT>
-+     messages<_CharT>::messages(__c_locale __cloc, const char* __s,
-+				size_t __refs)
-+     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
-+     _M_name_messages(__s)
-+     {
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       _M_name_messages = __tmp;
-+     }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog
-+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
-+			   const char* __dir) const
-+    {
-+      __bindtextdomain(__s.c_str(), __dir);
-+      return this->do_open(__s, __loc);
-+    }
-+
-+  // Virtual member functions.
-+  template<typename _CharT>
-+    messages<_CharT>::~messages()
-+    {
-+      if (_M_name_messages != _S_get_c_name())
-+	delete [] _M_name_messages;
-+      _S_destroy_c_locale(_M_c_locale_messages);
-+    }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog
-+    messages<_CharT>::do_open(const basic_string<char>& __s,
-+			      const locale&) const
-+    {
-+      // No error checking is done, assume the catalog exists and can
-+      // be used.
-+      __textdomain(__s.c_str());
-+      return 0;
-+    }
-+
-+  template<typename _CharT>
-+    void
-+    messages<_CharT>::do_close(catalog) const
-+    { }
-+
-+   // messages_byname
-+   template<typename _CharT>
-+     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
-+     : messages<_CharT>(__refs)
-+     {
-+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
-+	 delete [] this->_M_name_messages;
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       this->_M_name_messages = __tmp;
-+
-+       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	 {
-+	   this->_S_destroy_c_locale(this->_M_c_locale_messages);
-+	   this->_S_create_c_locale(this->_M_c_locale_messages, __s);
-+	 }
-+     }
-diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-new file mode 100644
-index 0000000..aa52731
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-@@ -0,0 +1,692 @@
-+// std::moneypunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning optimize this for uclibc
-+#warning tailor for stub locale support
-+#endif
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  // Construct and return valid pattern consisting of some combination of:
-+  // space none symbol sign value
-+  money_base::pattern
-+  money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
-+  {
-+    pattern __ret;
-+
-+    // This insanely complicated routine attempts to construct a valid
-+    // pattern for use with monyepunct. A couple of invariants:
-+
-+    // if (__precedes) symbol -> value
-+    // else value -> symbol
-+
-+    // if (__space) space
-+    // else none
-+
-+    // none == never first
-+    // space never first or last
-+
-+    // Any elegant implementations of this are welcome.
-+    switch (__posn)
-+      {
-+      case 0:
-+      case 1:
-+	// 1 The sign precedes the value and symbol.
-+	__ret.field[0] = sign;
-+	if (__space)
-+	  {
-+	    // Pattern starts with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[3] = symbol;
-+	      }
-+	    __ret.field[2] = space;
-+	  }
-+	else
-+	  {
-+	    // Pattern starts with sign and ends with none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 2:
-+	// 2 The sign follows the value and symbol.
-+	if (__space)
-+	  {
-+	    // Pattern either ends with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[1] = space;
-+	    __ret.field[3] = sign;
-+	  }
-+	else
-+	  {
-+	    // Pattern ends with sign then none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[1] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[1] = symbol;
-+	      }
-+	    __ret.field[2] = sign;
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 3:
-+	// 3 The sign immediately precedes the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = sign;
-+	    __ret.field[1] = symbol;
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = symbol;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = sign;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      case 4:
-+	// 4 The sign immediately follows the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = symbol;
-+	    __ret.field[1] = sign;
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = sign;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      default:
-+	;
-+      }
-+    return __ret;
-+  }
-+
-+  template<>
-+    void
-+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc,
-+						     const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == true
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
-+							__nposn);
-+	}
-+    }
-+
-+  template<>
-+    void
-+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc,
-+						      const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, false>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == false
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
-+							__nposn);
-+	}
-+    }
-+
-+  template<>
-+    moneypunct<char, true>::~moneypunct()
-+    { delete _M_data; }
-+
-+  template<>
-+    moneypunct<char, false>::~moneypunct()
-+    { delete _M_data; }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+							const char*)
-+#else
-+							const char* __name)
-+#endif
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<wchar_t, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __u.__w;
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  try
-+	    {
-+	      mbstate_t __state;
-+	      size_t __len = strlen(__cpossign);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+	      _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+	      _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+	      _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+	  catch (...)
-+	    {
-+	      delete _M_data;
-+	      _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+	      __throw_exception_again;
-+	    }
-+
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
-+							__nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<>
-+  void
-+  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+						       const char*)
-+#else
-+                                                       const char* __name)
-+#endif
-+  {
-+    if (!_M_data)
-+      _M_data = new __moneypunct_cache<wchar_t, false>;
-+
-+    if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+          _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+          union { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __u.__w;
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  try
-+            {
-+              mbstate_t __state;
-+              size_t __len;
-+              __len = strlen(__cpossign);
-+              if (__len)
-+                {
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+              _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+              _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+              _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+          catch (...)
-+	    {
-+	      delete _M_data;
-+              _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+              __throw_exception_again;
-+	    }
-+
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
-+	                                                __pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
-+	                                                __nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<>
-+    moneypunct<wchar_t, true>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+
-+  template<>
-+    moneypunct<wchar_t, false>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+#endif
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-new file mode 100644
-index 0000000..883ec1a
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-@@ -0,0 +1,160 @@
-+// std::numpunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT,
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP,
-+							__cloc));
-+
-+	  // Check for NULL, which implies no grouping.
-+	  if (_M_data->_M_thousands_sep == '\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = "true";
-+      _M_data->_M_truename_size = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<>
-+    numpunct<char>::~numpunct()
-+    { delete _M_data; }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<wchar_t>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+	  union { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __u.__w;
-+
-+	  if (_M_data->_M_thousands_sep == L'\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = L"true";
-+      _M_data->_M_truename_size = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<>
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
-new file mode 100644
-index 0000000..e0707d7
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
-@@ -0,0 +1,406 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format,
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<>
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
-+							     __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format,
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<>
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
-+
-+	  union { char *__s; wchar_t *__w; } __u;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
-+	  _M_data->_M_date_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
-+	  _M_data->_M_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
-+	  _M_data->_M_am = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
-+	  _M_data->_M_pm = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
-+	  _M_data->_M_am_pm_format = __u.__w;
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
-+	  _M_data->_M_day1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
-+	  _M_data->_M_day2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
-+	  _M_data->_M_day3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
-+	  _M_data->_M_day4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
-+	  _M_data->_M_day5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
-+	  _M_data->_M_day6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
-+	  _M_data->_M_day7 = __u.__w;
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
-+	  _M_data->_M_aday1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
-+	  _M_data->_M_aday2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
-+	  _M_data->_M_aday3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
-+	  _M_data->_M_aday4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
-+	  _M_data->_M_aday5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
-+	  _M_data->_M_aday6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
-+	  _M_data->_M_aday7 = __u.__w;
-+
-+	  // Month names, starting with "C"'s January.
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
-+	  _M_data->_M_month01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
-+	  _M_data->_M_month02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
-+	  _M_data->_M_month03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
-+	  _M_data->_M_month04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
-+	  _M_data->_M_month05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
-+	  _M_data->_M_month06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
-+	  _M_data->_M_month07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
-+	  _M_data->_M_month08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
-+	  _M_data->_M_month09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
-+	  _M_data->_M_month10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
-+	  _M_data->_M_month11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
-+	  _M_data->_M_month12 = __u.__w;
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
-+	  _M_data->_M_amonth01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
-+	  _M_data->_M_amonth02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
-+	  _M_data->_M_amonth03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
-+	  _M_data->_M_amonth04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
-+	  _M_data->_M_amonth05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
-+	  _M_data->_M_amonth06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
-+	  _M_data->_M_amonth07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
-+	  _M_data->_M_amonth08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
-+	  _M_data->_M_amonth09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
-+	  _M_data->_M_amonth10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
-+	  _M_data->_M_amonth11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
-+	  _M_data->_M_amonth12 = __u.__w;
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
-new file mode 100644
-index 0000000..ba8e858
---- /dev/null
-+++ b/libstdc++-v3/config/locale/uclibc/time_members.h
-@@ -0,0 +1,68 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(size_t __refs)
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
-+    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
-+				     size_t __refs)
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
-+    _M_name_timepunct(__s)
-+    {
-+      char* __tmp = new char[std::strlen(__s) + 1];
-+      std::strcpy(__tmp, __s);
-+      _M_name_timepunct = __tmp;
-+      _M_initialize_timepunct(__cloc);
-+    }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::~__timepunct()
-+    {
-+      if (_M_name_timepunct != _S_get_c_name())
-+	delete [] _M_name_timepunct;
-+      delete _M_data;
-+      _S_destroy_c_locale(_M_c_locale_timepunct);
-+    }
-diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
-index f40ddcf..c57a751 100755
---- a/libstdc++-v3/configure
-+++ b/libstdc++-v3/configure
-@@ -15822,6 +15822,9 @@ fi
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
- 	enable_clocale_flag=gnu
- 	;;
-@@ -16079,6 +16082,78 @@ $as_echo "newlib" >&6; }
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: uclibc" >&5
-+$as_echo "uclibc" >&6; }
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      # Extract the first word of "msgfmt", so it can be a program name with args.
-+set dummy msgfmt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if test "${ac_cv_prog_check_msgfmt+set}" = set; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test -n "$check_msgfmt"; then
-+  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+    for ac_exec_ext in '' $ac_executable_extensions; do
-+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+    ac_cv_prog_check_msgfmt="yes"
-+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+  done
-+IFS=$as_save_IFS
-+
-+  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
-+fi
-+fi
-+check_msgfmt=$ac_cv_prog_check_msgfmt
-+if test -n "$check_msgfmt"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $check_msgfmt" >&5
-+$as_echo "$check_msgfmt" >&6; }
-+else
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+
-+
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff --git a/libstdc++-v3/include/c_compatibility/wchar.h b/libstdc++-v3/include/c_compatibility/wchar.h
-index 580d725..3fe61b8 100644
---- a/libstdc++-v3/include/c_compatibility/wchar.h
-+++ b/libstdc++-v3/include/c_compatibility/wchar.h
-@@ -101,7 +101,9 @@ using std::wmemcmp;
- using std::wmemcpy;
- using std::wmemmove;
- using std::wmemset;
-+#if _GLIBCXX_HAVE_WCSFTIME
- using std::wcsftime;
-+#endif
- 
- #if _GLIBCXX_USE_C99
- using std::wcstold;
-diff --git a/libstdc++-v3/include/c_std/cwchar b/libstdc++-v3/include/c_std/cwchar
-index 0e6b1fc..405aee2 100644
---- a/libstdc++-v3/include/c_std/cwchar
-+++ b/libstdc++-v3/include/c_std/cwchar
-@@ -175,7 +175,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
-   using ::wcscoll;
-   using ::wcscpy;
-   using ::wcscspn;
-+#if _GLIBCXX_HAVE_WCSFTIME
-   using ::wcsftime;
-+#endif
-   using ::wcslen;
-   using ::wcsncat;
-   using ::wcsncmp;
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0005-uclibc-locale-no__x.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0005-uclibc-locale-no__x.patch
deleted file mode 100644
index dcbbfe4..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0005-uclibc-locale-no__x.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-From 6a3e8506a12c12728d8b29901defd738be43757f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:42:36 +0400
-Subject: [PATCH 05/35] uclibc-locale-no__x
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- .../config/locale/uclibc/c++locale_internal.h      |   45 ++++++++++++++++++++
- libstdc++-v3/config/locale/uclibc/c_locale.cc      |   14 ------
- libstdc++-v3/config/locale/uclibc/c_locale.h       |    1 +
- .../config/locale/uclibc/collate_members.cc        |    7 ---
- libstdc++-v3/config/locale/uclibc/ctype_members.cc |    7 ---
- .../config/locale/uclibc/messages_members.cc       |    7 +--
- .../config/locale/uclibc/messages_members.h        |   18 +++-----
- .../config/locale/uclibc/monetary_members.cc       |    4 --
- .../config/locale/uclibc/numeric_members.cc        |    3 --
- libstdc++-v3/config/locale/uclibc/time_members.cc  |    3 --
- 10 files changed, 55 insertions(+), 54 deletions(-)
-
-diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-index 2ae3e4a..e74fddf 100644
---- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-@@ -60,4 +60,49 @@ extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
- extern "C" __typeof(wctype_l) __wctype_l;
- #endif
- 
-+# define __nl_langinfo_l nl_langinfo_l
-+# define __strcoll_l strcoll_l
-+# define __strftime_l strftime_l
-+# define __strtod_l strtod_l
-+# define __strtof_l strtof_l
-+# define __strtold_l strtold_l
-+# define __strxfrm_l strxfrm_l
-+# define __newlocale newlocale
-+# define __freelocale freelocale
-+# define __duplocale duplocale
-+# define __uselocale uselocale
-+
-+# ifdef _GLIBCXX_USE_WCHAR_T
-+#  define __iswctype_l iswctype_l
-+#  define __towlower_l towlower_l
-+#  define __towupper_l towupper_l
-+#  define __wcscoll_l wcscoll_l
-+#  define __wcsftime_l wcsftime_l
-+#  define __wcsxfrm_l wcsxfrm_l
-+#  define __wctype_l wctype_l
-+# endif
-+
-+#else
-+# define __nl_langinfo_l(N, L)       nl_langinfo((N))
-+# define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
-+# define __strtod_l(S, E, L)         strtod((S), (E))
-+# define __strtof_l(S, E, L)         strtof((S), (E))
-+# define __strtold_l(S, E, L)        strtold((S), (E))
-+# define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
-+# warning should dummy __newlocale check for C|POSIX ?
-+# define __newlocale(a, b, c)        NULL
-+# define __freelocale(a)             ((void)0)
-+# define __duplocale(a)              __c_locale()
-+//# define __uselocale ?
-+//
-+# ifdef _GLIBCXX_USE_WCHAR_T
-+#  define __iswctype_l(C, M, L)       iswctype((C), (M))
-+#  define __towlower_l(C, L)          towlower((C))
-+#  define __towupper_l(C, L)          towupper((C))
-+#  define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
-+//#  define __wcsftime_l(S, M, F, T, L)  wcsftime((S), (M), (F), (T))
-+#  define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
-+#  define __wctype_l(S, L)            wctype((S))
-+# endif
-+
- #endif // GLIBC 2.3 and later
-diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
-index 5081dc1..21430d0 100644
---- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
-+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
-@@ -39,20 +39,6 @@
- #include <langinfo.h>
- #include <bits/c++locale_internal.h>
- 
--#ifndef __UCLIBC_HAS_XLOCALE__
--#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
--#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
--#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
--#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
--#define __strtof_l(S, E, L)         strtof((S), (E))
--#define __strtod_l(S, E, L)         strtod((S), (E))
--#define __strtold_l(S, E, L)        strtold((S), (E))
--#warning should dummy __newlocale check for C|POSIX ?
--#define __newlocale(a, b, c)        NULL
--#define __freelocale(a)             ((void)0)
--#define __duplocale(a)              __c_locale()
--#endif
--
- namespace std
- {
-   template<>
-diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
-index da07c1f..4bca5f1 100644
---- a/libstdc++-v3/config/locale/uclibc/c_locale.h
-+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
-@@ -68,6 +68,7 @@ namespace __gnu_cxx
- {
-   extern "C" __typeof(uselocale) __uselocale;
- }
-+#define __uselocale uselocale
- #endif
- 
- namespace std
-diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
-index c2664a7..ec5c329 100644
---- a/libstdc++-v3/config/locale/uclibc/collate_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
-@@ -36,13 +36,6 @@
- #include <locale>
- #include <bits/c++locale_internal.h>
- 
--#ifndef __UCLIBC_HAS_XLOCALE__
--#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
--#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
--#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
--#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
--#endif
--
- namespace std
- {
-   // These are basically extensions to char_traits, and perhaps should
-diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-index 7294e3a..7b12861 100644
---- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-@@ -38,13 +38,6 @@
- #undef _LIBC
- #include <bits/c++locale_internal.h>
- 
--#ifndef __UCLIBC_HAS_XLOCALE__
--#define __wctype_l(S, L)           wctype((S))
--#define __towupper_l(C, L)         towupper((C))
--#define __towlower_l(C, L)         towlower((C))
--#define __iswctype_l(C, M, L)      iswctype((C), (M))
--#endif
--
- namespace std
- {
-   // NB: The other ctype<char> specializations are in src/locale.cc and
-diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
-index 13594d9..d7693b4 100644
---- a/libstdc++-v3/config/locale/uclibc/messages_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
-@@ -39,13 +39,10 @@
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning fix gettext stuff
- #endif
--#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
--extern "C" char *__dcgettext(const char *domainname,
--			     const char *msgid, int category);
- #undef gettext
--#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES)
- #else
--#undef gettext
- #define gettext(msgid) (msgid)
- #endif
- 
-diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
-index 1424078..d89da33 100644
---- a/libstdc++-v3/config/locale/uclibc/messages_members.h
-+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
-@@ -36,15 +36,11 @@
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning fix prototypes for *textdomain funcs
- #endif
--#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
--extern "C" char *__textdomain(const char *domainname);
--extern "C" char *__bindtextdomain(const char *domainname,
--				  const char *dirname);
--#else
--#undef __textdomain
--#undef __bindtextdomain
--#define __textdomain(D)           ((void)0)
--#define __bindtextdomain(D,P)     ((void)0)
-+#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#undef textdomain
-+#undef bindtextdomain
-+#define textdomain(D)           ((void)0)
-+#define bindtextdomain(D,P)     ((void)0)
- #endif
- 
-   // Non-virtual member functions.
-@@ -70,7 +66,7 @@ extern "C" char *__bindtextdomain(const char *domainname,
-     messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
- 			   const char* __dir) const
-     {
--      __bindtextdomain(__s.c_str(), __dir);
-+      bindtextdomain(__s.c_str(), __dir);
-       return this->do_open(__s, __loc);
-     }
- 
-@@ -90,7 +86,7 @@ extern "C" char *__bindtextdomain(const char *domainname,
-     {
-       // No error checking is done, assume the catalog exists and can
-       // be used.
--      __textdomain(__s.c_str());
-+      textdomain(__s.c_str());
-       return 0;
-     }
- 
-diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-index aa52731..2e6f80a 100644
---- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-@@ -43,10 +43,6 @@
- #warning tailor for stub locale support
- #endif
- 
--#ifndef __UCLIBC_HAS_XLOCALE__
--#define __nl_langinfo_l(N, L)         nl_langinfo((N))
--#endif
--
- namespace std
- {
-   // Construct and return valid pattern consisting of some combination of:
-diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-index 883ec1a..2c70642 100644
---- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-@@ -41,9 +41,6 @@
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning tailor for stub locale support
- #endif
--#ifndef __UCLIBC_HAS_XLOCALE__
--#define __nl_langinfo_l(N, L)         nl_langinfo((N))
--#endif
- 
- namespace std
- {
-diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
-index e0707d7..d848ed5 100644
---- a/libstdc++-v3/config/locale/uclibc/time_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
-@@ -40,9 +40,6 @@
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning tailor for stub locale support
- #endif
--#ifndef __UCLIBC_HAS_XLOCALE__
--#define __nl_langinfo_l(N, L)         nl_langinfo((N))
--#endif
- 
- namespace std
- {
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0006-uclibc-locale-wchar_fix.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0006-uclibc-locale-wchar_fix.patch
deleted file mode 100644
index 3406859..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0006-uclibc-locale-wchar_fix.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 225511a3aeb193a916b3999f0b640a392caa67cd Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:45:57 +0400
-Subject: [PATCH 06/35] uclibc-locale-wchar_fix
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libstdc++-v3/config/locale/uclibc/monetary_members.cc |    4 ++--
- libstdc++-v3/config/locale/uclibc/numeric_members.cc  |   13 +++++++++++++
- 2 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-index 2e6f80a..31ebb9f 100644
---- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-@@ -401,7 +401,7 @@ namespace std
- # ifdef __UCLIBC_HAS_XLOCALE__
- 	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
- 	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
--# else
-+# elif defined __UCLIBC_HAS_LOCALE__
- 	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
- 	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
- # endif
-@@ -556,7 +556,7 @@ namespace std
- # ifdef __UCLIBC_HAS_XLOCALE__
- 	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
- 	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
--# else
-+# elif defined __UCLIBC_HAS_LOCALE__
- 	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
- 	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
- # endif
-diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-index 2c70642..d5c8961 100644
---- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-@@ -127,12 +127,25 @@ namespace std
- 	{
- 	  // Named locale.
- 	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be numeric
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# elif defined __UCLIBC_HAS_LOCALE__
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
- 	  union { char *__s; wchar_t __w; } __u;
- 	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
- 	  _M_data->_M_decimal_point = __u.__w;
- 
- 	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
- 	  _M_data->_M_thousands_sep = __u.__w;
-+#endif
- 
- 	  if (_M_data->_M_thousands_sep == L'\0')
- 	    _M_data->_M_grouping = "";
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0007-uclibc-locale-update.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0007-uclibc-locale-update.patch
deleted file mode 100644
index 5851123..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0007-uclibc-locale-update.patch
+++ /dev/null
@@ -1,542 +0,0 @@
-From 6ffe7c46f52d27864c3df3663e16ec9ddee71e8f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:46:58 +0400
-Subject: [PATCH 07/35] uclibc-locale-update
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- .../config/locale/uclibc/c++locale_internal.h      |    3 +
- libstdc++-v3/config/locale/uclibc/c_locale.cc      |   74 +++++++++-----------
- libstdc++-v3/config/locale/uclibc/c_locale.h       |   42 ++++++-----
- libstdc++-v3/config/locale/uclibc/ctype_members.cc |   51 ++++++++++----
- .../config/locale/uclibc/messages_members.h        |   12 ++--
- .../config/locale/uclibc/monetary_members.cc       |   34 +++++----
- .../config/locale/uclibc/numeric_members.cc        |    5 ++
- libstdc++-v3/config/locale/uclibc/time_members.cc  |   18 +++--
- libstdc++-v3/config/locale/uclibc/time_members.h   |   17 +++--
- 9 files changed, 158 insertions(+), 98 deletions(-)
-
-diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-index e74fddf..971a6b4 100644
---- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-@@ -31,6 +31,9 @@
- 
- #include <bits/c++config.h>
- #include <clocale>
-+#include <cstdlib>
-+#include <cstring>
-+#include <cstddef>
- 
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning clean this up
-diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
-index 21430d0..1b9d8e1 100644
---- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
-+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
-@@ -39,23 +39,20 @@
- #include <langinfo.h>
- #include <bits/c++locale_internal.h>
- 
--namespace std
--{
-+_GLIBCXX_BEGIN_NAMESPACE(std)
-+
-   template<>
-     void
-     __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
- 		   const __c_locale& __cloc)
-     {
--      if (!(__err & ios_base::failbit))
--	{
--	  char* __sanity;
--	  errno = 0;
--	  float __f = __strtof_l(__s, &__sanity, __cloc);
--          if (__sanity != __s && errno != ERANGE)
--	    __v = __f;
--	  else
--	    __err |= ios_base::failbit;
--	}
-+      char* __sanity;
-+      errno = 0;
-+      float __f = __strtof_l(__s, &__sanity, __cloc);
-+      if (__sanity != __s && errno != ERANGE)
-+	__v = __f;
-+      else
-+	__err |= ios_base::failbit;
-     }
- 
-   template<>
-@@ -63,16 +60,13 @@ namespace std
-     __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
- 		   const __c_locale& __cloc)
-     {
--      if (!(__err & ios_base::failbit))
--	{
--	  char* __sanity;
--	  errno = 0;
--	  double __d = __strtod_l(__s, &__sanity, __cloc);
--          if (__sanity != __s && errno != ERANGE)
--	    __v = __d;
--	  else
--	    __err |= ios_base::failbit;
--	}
-+      char* __sanity;
-+      errno = 0;
-+      double __d = __strtod_l(__s, &__sanity, __cloc);
-+      if (__sanity != __s && errno != ERANGE)
-+	__v = __d;
-+      else
-+	__err |= ios_base::failbit;
-     }
- 
-   template<>
-@@ -80,16 +74,13 @@ namespace std
-     __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
- 		   const __c_locale& __cloc)
-     {
--      if (!(__err & ios_base::failbit))
--	{
--	  char* __sanity;
--	  errno = 0;
--	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
--          if (__sanity != __s && errno != ERANGE)
--	    __v = __ld;
--	  else
--	    __err |= ios_base::failbit;
--	}
-+      char* __sanity;
-+      errno = 0;
-+      long double __ld = __strtold_l(__s, &__sanity, __cloc);
-+      if (__sanity != __s && errno != ERANGE)
-+	__v = __ld;
-+      else
-+	__err |= ios_base::failbit;
-     }
- 
-   void
-@@ -110,17 +101,18 @@ namespace std
-   void
-   locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
-   {
--    if (_S_get_c_locale() != __cloc)
-+    if (__cloc && _S_get_c_locale() != __cloc)
-       __freelocale(__cloc);
-   }
- 
-   __c_locale
-   locale::facet::_S_clone_c_locale(__c_locale& __cloc)
-   { return __duplocale(__cloc); }
--} // namespace std
- 
--namespace __gnu_cxx
--{
-+_GLIBCXX_END_NAMESPACE
-+
-+_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-+
-   const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
-     {
-       "LC_CTYPE",
-@@ -138,9 +130,11 @@ namespace __gnu_cxx
-       "LC_IDENTIFICATION"
- #endif
-     };
--}
- 
--namespace std
--{
-+_GLIBCXX_END_NAMESPACE
-+
-+_GLIBCXX_BEGIN_NAMESPACE(std)
-+
-   const char* const* const locale::_S_categories = __gnu_cxx::category_names;
--}  // namespace std
-+
-+_GLIBCXX_END_NAMESPACE
-diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
-index 4bca5f1..64a6d46 100644
---- a/libstdc++-v3/config/locale/uclibc/c_locale.h
-+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
-@@ -39,21 +39,23 @@
- #pragma GCC system_header
- 
- #include <cstring>              // get std::strlen
--#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <cstdio>               // get std::vsnprintf or std::vsprintf
- #include <clocale>
- #include <langinfo.h>		// For codecvt
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning fix this
- #endif
--#ifdef __UCLIBC_HAS_LOCALE__
-+#ifdef _GLIBCXX_USE_ICONV
- #include <iconv.h>		// For codecvt using iconv, iconv_t
- #endif
--#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
--#include <libintl.h> 		// For messages
-+#ifdef HAVE_LIBINTL_H
-+#include <libintl.h>		// For messages
- #endif
-+#include <cstdarg>
- 
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning what is _GLIBCXX_C_LOCALE_GNU for
-+// psm: used in os/gnu-linux/ctype_noninline.h
- #endif
- #define _GLIBCXX_C_LOCALE_GNU 1
- 
-@@ -78,23 +80,25 @@ namespace std
- #else
-   typedef int*			__c_locale;
- #endif
--
--  // Convert numeric value of type _Tv to string and return length of
--  // string.  If snprintf is available use it, otherwise fall back to
--  // the unsafe sprintf which, in general, can be dangerous and should
-+  // Convert numeric value of type double to string and return length of
-+  // string.  If vsnprintf is available use it, otherwise fall back to
-+  // the unsafe vsprintf which, in general, can be dangerous and should
-   // be avoided.
--  template<typename _Tv>
--    int
--    __convert_from_v(char* __out,
--		     const int __size __attribute__ ((__unused__)),
--		     const char* __fmt,
--#ifdef __UCLIBC_HAS_XCLOCALE__
--		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    inline int
-+    __convert_from_v(const __c_locale&
-+#ifndef __UCLIBC_HAS_XCLOCALE__
-+	__cloc __attribute__ ((__unused__))
-+#endif
-+		     ,
-+		     char* __out,
-+		     const int __size,
-+		     const char* __fmt, ...)
-     {
-+      va_list __args;
-+#ifdef __UCLIBC_HAS_XCLOCALE__
-+
-       __c_locale __old = __gnu_cxx::__uselocale(__cloc);
- #else
--		     _Tv __v, const __c_locale&, int __prec)
--    {
- # ifdef __UCLIBC_HAS_LOCALE__
-       char* __old = std::setlocale(LC_ALL, NULL);
-       char* __sav = new char[std::strlen(__old) + 1];
-@@ -103,7 +107,9 @@ namespace std
- # endif
- #endif
- 
--      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+      va_start(__args, __fmt);
-+      const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
-+      va_end(__args);
- 
- #ifdef __UCLIBC_HAS_XCLOCALE__
-       __gnu_cxx::__uselocale(__old);
-diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-index 7b12861..13e011d 100644
---- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-@@ -33,16 +33,20 @@
- 
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- 
-+#include <features.h>
-+#ifdef __UCLIBC_HAS_LOCALE__
- #define _LIBC
- #include <locale>
- #undef _LIBC
-+#else
-+#include <locale>
-+#endif
- #include <bits/c++locale_internal.h>
- 
--namespace std
--{
-+_GLIBCXX_BEGIN_NAMESPACE(std)
-+
-   // NB: The other ctype<char> specializations are in src/locale.cc and
-   // various /config/os/* files.
--  template<>
-     ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
-     : ctype<char>(0, false, __refs)
-     {
-@@ -57,6 +61,8 @@ namespace std
- #endif
- 	}
-     }
-+    ctype_byname<char>::~ctype_byname()
-+    { }
- 
- #ifdef _GLIBCXX_USE_WCHAR_T
-   ctype<wchar_t>::__wmask_type
-@@ -138,17 +144,33 @@ namespace std
-   ctype<wchar_t>::
-   do_is(mask __m, wchar_t __c) const
-   {
--    // Highest bitmask in ctype_base == 10, but extra in "C"
--    // library for blank.
-+    // The case of __m == ctype_base::space is particularly important,
-+    // due to its use in many istream functions.  Therefore we deal with
-+    // it first, exploiting the knowledge that on GNU systems _M_bit[5]
-+    // is the mask corresponding to ctype_base::space.  NB: an encoding
-+    // change would not affect correctness!
-+
-     bool __ret = false;
--    const size_t __bitmasksize = 11;
--    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
--      if (__m & _M_bit[__bitcur]
--	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
--	{
--	  __ret = true;
--	  break;
--	}
-+    if (__m == _M_bit[5])
-+      __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
-+    else
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__m & _M_bit[__bitcur])
-+	    {
-+	      if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+		{
-+		  __ret = true;
-+		  break;
-+		}
-+	      else if (__m == _M_bit[__bitcur])
-+		break;
-+	    }
-+      }
-+
-     return __ret;
-   }
- 
-@@ -290,4 +312,5 @@ namespace std
- #endif
-   }
- #endif //  _GLIBCXX_USE_WCHAR_T
--}
-+
-+_GLIBCXX_END_NAMESPACE
-diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
-index d89da33..067657a 100644
---- a/libstdc++-v3/config/locale/uclibc/messages_members.h
-+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
-@@ -53,12 +53,16 @@
-   template<typename _CharT>
-      messages<_CharT>::messages(__c_locale __cloc, const char* __s,
- 				size_t __refs)
--     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
--     _M_name_messages(__s)
-+     : facet(__refs), _M_c_locale_messages(NULL),
-+     _M_name_messages(NULL)
-      {
--       char* __tmp = new char[std::strlen(__s) + 1];
--       std::strcpy(__tmp, __s);
-+       const size_t __len = std::strlen(__s) + 1;
-+       char* __tmp = new char[__len];
-+       std::memcpy(__tmp, __s, __len);
-        _M_name_messages = __tmp;
-+
-+       // Last to avoid leaking memory if new throws.
-+       _M_c_locale_messages = _S_clone_c_locale(__cloc);
-      }
- 
-   template<typename _CharT>
-diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-index 31ebb9f..7679b9c 100644
---- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-@@ -33,9 +33,14 @@
- 
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- 
-+#include <features.h>
-+#ifdef __UCLIBC_HAS_LOCALE__
- #define _LIBC
- #include <locale>
- #undef _LIBC
-+#else
-+#include <locale>
-+#endif
- #include <bits/c++locale_internal.h>
- 
- #ifdef __UCLIBC_MJN3_ONLY__
-@@ -206,7 +211,7 @@ namespace std
- 	  }
- 	break;
-       default:
--	;
-+	__ret = pattern();
-       }
-     return __ret;
-   }
-@@ -390,7 +395,9 @@ namespace std
- 	  __c_locale __old = __uselocale(__cloc);
- #else
- 	  // Switch to named locale so that mbsrtowcs will work.
--	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+  	  char* __old = setlocale(LC_ALL, NULL);
-+          const size_t __llen = strlen(__old) + 1;
-+          char* __sav = new char[__llen];
- 	  setlocale(LC_ALL, __name);
- #endif
- 
-@@ -477,8 +484,8 @@ namespace std
- #ifdef __UCLIBC_HAS_XLOCALE__
- 	      __uselocale(__old);
- #else
--	      setlocale(LC_ALL, __old);
--	      free(__old);
-+	      setlocale(LC_ALL, __sav);
-+	      delete [] __sav;
- #endif
- 	      __throw_exception_again;
- 	    }
-@@ -498,8 +505,8 @@ namespace std
- #ifdef __UCLIBC_HAS_XLOCALE__
- 	  __uselocale(__old);
- #else
--	  setlocale(LC_ALL, __old);
--	  free(__old);
-+	  setlocale(LC_ALL, __sav);
-+	  delete [] __sav;
- #endif
- 	}
-     }
-@@ -545,8 +552,11 @@ namespace std
- 	  __c_locale __old = __uselocale(__cloc);
- #else
- 	  // Switch to named locale so that mbsrtowcs will work.
--	  char* __old = strdup(setlocale(LC_ALL, NULL));
--	  setlocale(LC_ALL, __name);
-+          char* __old = setlocale(LC_ALL, NULL);
-+          const size_t __llen = strlen(__old) + 1;
-+          char* __sav = new char[__llen];
-+          memcpy(__sav, __old, __llen);
-+          setlocale(LC_ALL, __name);
- #endif
- 
- #ifdef __UCLIBC_MJN3_ONLY__
-@@ -633,8 +643,8 @@ namespace std
- #ifdef __UCLIBC_HAS_XLOCALE__
- 	      __uselocale(__old);
- #else
--	      setlocale(LC_ALL, __old);
--	      free(__old);
-+	      setlocale(LC_ALL, __sav);
-+	      delete [] __sav;
- #endif
-               __throw_exception_again;
- 	    }
-@@ -653,8 +663,8 @@ namespace std
- #ifdef __UCLIBC_HAS_XLOCALE__
- 	  __uselocale(__old);
- #else
--	  setlocale(LC_ALL, __old);
--	  free(__old);
-+	  setlocale(LC_ALL, __sav);
-+	  delete [] __sav;
- #endif
- 	}
-     }
-diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-index d5c8961..8ae8969 100644
---- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-@@ -33,9 +33,14 @@
- 
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- 
-+#include <features.h>
-+#ifdef __UCLIBC_HAS_LOCALE__
- #define _LIBC
- #include <locale>
- #undef _LIBC
-+#else
-+#include <locale>
-+#endif
- #include <bits/c++locale_internal.h>
- 
- #ifdef __UCLIBC_MJN3_ONLY__
-diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
-index d848ed5..f24d53e 100644
---- a/libstdc++-v3/config/locale/uclibc/time_members.cc
-+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
-@@ -53,11 +53,14 @@ namespace std
-       const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
- 					_M_c_locale_timepunct);
- #else
--      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      char* __old = setlocale(LC_ALL, NULL);
-+      const size_t __llen = strlen(__old) + 1;
-+      char* __sav = new char[__llen];
-+      memcpy(__sav, __old, __llen);
-       setlocale(LC_ALL, _M_name_timepunct);
-       const size_t __len = strftime(__s, __maxlen, __format, __tm);
--      setlocale(LC_ALL, __old);
--      free(__old);
-+      setlocale(LC_ALL, __sav);
-+      delete [] __sav;
- #endif
-       // Make sure __s is null terminated.
-       if (__len == 0)
-@@ -207,11 +210,14 @@ namespace std
-       const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
- 					_M_c_locale_timepunct);
- #else
--      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      char* __old = setlocale(LC_ALL, NULL);
-+      const size_t __llen = strlen(__old) + 1;
-+      char* __sav = new char[__llen];
-+      memcpy(__sav, __old, __llen);
-       setlocale(LC_ALL, _M_name_timepunct);
-       const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
--      setlocale(LC_ALL, __old);
--      free(__old);
-+      setlocale(LC_ALL, __sav);
-+      delete [] __sav;
- #endif
-       // Make sure __s is null terminated.
-       if (__len == 0)
-diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
-index ba8e858..1665dde 100644
---- a/libstdc++-v3/config/locale/uclibc/time_members.h
-+++ b/libstdc++-v3/config/locale/uclibc/time_members.h
-@@ -50,12 +50,21 @@
-     __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
- 				     size_t __refs)
-     : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
--    _M_name_timepunct(__s)
-+    _M_name_timepunct(NULL)
-     {
--      char* __tmp = new char[std::strlen(__s) + 1];
--      std::strcpy(__tmp, __s);
-+      const size_t __len = std::strlen(__s) + 1;
-+      char* __tmp = new char[__len];
-+      std::memcpy(__tmp, __s, __len);
-       _M_name_timepunct = __tmp;
--      _M_initialize_timepunct(__cloc);
-+
-+      try
-+	{ _M_initialize_timepunct(__cloc); }
-+      catch(...)
-+	{
-+	  delete [] _M_name_timepunct;
-+	  __throw_exception_again;
-+	}
-+
-     }
- 
-   template<typename _CharT>
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0008-missing-execinfo_h.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0008-missing-execinfo_h.patch
deleted file mode 100644
index 2823809..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0008-missing-execinfo_h.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 9f2158451981cf0a80cfabdc79ae31bb6976a801 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:48:10 +0400
-Subject: [PATCH 08/35] missing-execinfo_h
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- boehm-gc/include/gc.h |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/boehm-gc/include/gc.h b/boehm-gc/include/gc.h
-index c51e017..a7ba8dc 100644
---- a/boehm-gc/include/gc.h
-+++ b/boehm-gc/include/gc.h
-@@ -503,7 +503,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROTO((size_t lb));
- #if defined(__linux__) || defined(__GLIBC__)
- # include <features.h>
- # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
--     && !defined(__ia64__)
-+     && !defined(__ia64__) && !defined(__UCLIBC__)
- #   ifndef GC_HAVE_BUILTIN_BACKTRACE
- #     define GC_HAVE_BUILTIN_BACKTRACE
- #   endif
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0009-c99-snprintf.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0009-c99-snprintf.patch
deleted file mode 100644
index 7168778..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0009-c99-snprintf.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e393e076f1ab82d25e1aa04d6edea27b41d3eb06 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:49:03 +0400
-Subject: [PATCH 09/35] c99-snprintf
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libstdc++-v3/include/c_std/cstdio |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libstdc++-v3/include/c_std/cstdio b/libstdc++-v3/include/c_std/cstdio
-index e85bd83..6af839a 100644
---- a/libstdc++-v3/include/c_std/cstdio
-+++ b/libstdc++-v3/include/c_std/cstdio
-@@ -139,7 +139,7 @@ namespace std
-   using ::vsprintf;
- } // namespace std
- 
--#if _GLIBCXX_USE_C99
-+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
- 
- #undef snprintf
- #undef vfscanf
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0010-c99-complex-ugly-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0010-c99-complex-ugly-hack.patch
deleted file mode 100644
index b628571..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0010-c99-complex-ugly-hack.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 73f69d806e2c9561a54995223431a1076cfd6164 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:49:57 +0400
-Subject: [PATCH 10/35] c99-complex-ugly-hack
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- libstdc++-v3/configure |    3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
-index c57a751..a1333e2 100755
---- a/libstdc++-v3/configure
-+++ b/libstdc++-v3/configure
-@@ -18734,6 +18734,9 @@ $as_echo_n "checking for ISO C99 support to TR1 in <complex.h>... " >&6; }
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <complex.h>
-+#ifdef __UCLIBC__
-+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
-+#endif
- int
- main ()
- {
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0011-index_macro.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0011-index_macro.patch
deleted file mode 100644
index 8ee79b0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0011-index_macro.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From b037953e40312b45ab84ed0a3ad882bb5e413101 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:51:02 +0400
-Subject: [PATCH 11/35] index_macro
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libstdc++-v3/include/ext/rope       |    3 +++
- libstdc++-v3/include/ext/ropeimpl.h |    3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/libstdc++-v3/include/ext/rope b/libstdc++-v3/include/ext/rope
-index 38eb1e8..158d21a 100644
---- a/libstdc++-v3/include/ext/rope
-+++ b/libstdc++-v3/include/ext/rope
-@@ -55,6 +55,9 @@
- #include <bits/gthr.h>
- #include <tr1/functional>
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- # ifdef __GC
- #   define __GC_CONST const
- # else
-diff --git a/libstdc++-v3/include/ext/ropeimpl.h b/libstdc++-v3/include/ext/ropeimpl.h
-index d7b5cbd..b9b3acb 100644
---- a/libstdc++-v3/include/ext/ropeimpl.h
-+++ b/libstdc++-v3/include/ext/ropeimpl.h
-@@ -48,6 +48,9 @@
- #include <ext/memory> // For uninitialized_copy_n
- #include <ext/numeric> // For power
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0013-libstdc-namespace.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0013-libstdc-namespace.patch
deleted file mode 100644
index 4a3efde..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0013-libstdc-namespace.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 104e4d66208f2726b14d2f5eebce90700cbc83c8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:54:02 +0400
-Subject: [PATCH 13/35] libstdc++-namespace
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libstdc++-v3/config/locale/uclibc/messages_members.h |    4 +++-
- libstdc++-v3/config/locale/uclibc/time_members.h     |    4 +++-
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
-index 067657a..dd76a6c 100644
---- a/libstdc++-v3/config/locale/uclibc/messages_members.h
-+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
-@@ -32,7 +32,8 @@
- //
- 
- // Written by Benjamin Kosnik <bkoz@redhat.com>
--
-+namespace std
-+{
- #ifdef __UCLIBC_MJN3_ONLY__
- #warning fix prototypes for *textdomain funcs
- #endif
-@@ -116,3 +117,4 @@
- 	   this->_S_create_c_locale(this->_M_c_locale_messages, __s);
- 	 }
-      }
-+}
-diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
-index 1665dde..905c433 100644
---- a/libstdc++-v3/config/locale/uclibc/time_members.h
-+++ b/libstdc++-v3/config/locale/uclibc/time_members.h
-@@ -33,7 +33,8 @@
- //
- 
- // Written by Benjamin Kosnik <bkoz@redhat.com>
--
-+namespace std
-+{
-   template<typename _CharT>
-     __timepunct<_CharT>::__timepunct(size_t __refs)
-     : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
-@@ -75,3 +76,4 @@
-       delete _M_data;
-       _S_destroy_c_locale(_M_c_locale_timepunct);
-     }
-+}
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0014-sh-pr24836.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0014-sh-pr24836.patch
deleted file mode 100644
index cb8fd52..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0014-sh-pr24836.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From edc9acb181810f234b6b9f7d2820b0e4f6a1eeaf Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:54:48 +0400
-Subject: [PATCH 14/35] sh-pr24836
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-
-http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
-http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
----
- gcc/configure    |    2 +-
- gcc/configure.ac |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index e12a180..135bbf5 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -23378,7 +23378,7 @@ foo:	.long	25
- 	tls_first_minor=14
- 	tls_as_opt="-m64 -Aesame --fatal-warnings"
- 	;;
--  sh-*-* | sh[34]-*-*)
-+  sh-*-* | sh[34]*-*-*)
-     conftest_s='
- 	.section ".tdata","awT",@progbits
- foo:	.long	25
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index eba3577..6363a21 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -3141,7 +3141,7 @@ foo:	.long	25
- 	tls_first_minor=14
- 	tls_as_opt="-m64 -Aesame --fatal-warnings"
- 	;;
--  sh-*-* | sh[34]-*-*)
-+  sh-*-* | sh[34]*-*-*)
-     conftest_s='
- 	.section ".tdata","awT",@progbits
- foo:	.long	25
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch
deleted file mode 100644
index 37c46fc..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0015-arm-Use-TARGET_ENDIAN_OPTION-for-determining-MULTILI.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 50e5366005b0f6af27378e2a5c3cb9f9936a7e62 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:58:36 +0400
-Subject: [PATCH 15/35] arm: Use TARGET_ENDIAN_OPTION for determining
- MULTILIB_DEFAULTS
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/config/arm/linux-elf.h |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: gcc-4.9.2/gcc/config/arm/coff.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/arm/coff.h
-+++ gcc-4.9.2/gcc/config/arm/coff.h
-@@ -32,8 +32,11 @@
- #define TARGET_DEFAULT (MASK_APCS_FRAME)
- 
- #ifndef MULTILIB_DEFAULTS
-+#ifndef TARGET_ENDIAN_OPTION
-+#define TARGET_ENDIAN_OPTION "mlittle-endian"
-+#endif
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }
-+  { "marm", TARGET_ENDIAN_OPTION, "mfloat-abi=soft", "mno-thumb-interwork" }
- #endif
- 
- /* This is COFF, but prefer stabs.  */
-Index: gcc-4.9.2/gcc/config/arm/elf.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/arm/elf.h
-+++ gcc-4.9.2/gcc/config/arm/elf.h
-@@ -116,8 +116,11 @@
- #endif
- 
- #ifndef MULTILIB_DEFAULTS
-+#ifndef TARGET_ENDIAN_OPTION
-+#define TARGET_ENDIAN_OPTION "mlittle-endian"
-+#endif
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork", "fno-leading-underscore" }
-+  { "marm", TARGET_ENDIAN_OPTION, "mfloat-abi=soft", "mno-thumb-interwork", "fno-leading-underscore" }
- #endif
- 
- #define TARGET_ASM_FILE_START_APP_OFF true
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0016-gcc-poison-system-directories.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0016-gcc-poison-system-directories.patch
deleted file mode 100644
index 475ef96..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0016-gcc-poison-system-directories.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-From 160397ef3c3331099af028f1b8d3e085b07d88ad Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:59:00 +0400
-Subject: [PATCH 16/35] gcc: poison-system-directories
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [distribution: codesourcery]
----
- gcc/Makefile.in     |    2 +-
- gcc/common.opt      |    4 ++++
- gcc/config.in       |    6 ++++++
- gcc/configure       |   20 ++++++++++++++++++--
- gcc/configure.ac    |   10 ++++++++++
- gcc/doc/invoke.texi |    9 +++++++++
- gcc/gcc.c           |    2 ++
- gcc/incpath.c       |   19 +++++++++++++++++++
- 8 files changed, 69 insertions(+), 3 deletions(-)
-
-Index: gcc-4.9-20140316/gcc/common.opt
-===================================================================
---- gcc-4.9-20140316.orig/gcc/common.opt
-+++ gcc-4.9-20140316/gcc/common.opt
-@@ -603,6 +603,10 @@ Wpedantic
- Common Var(pedantic) Warning
- Issue warnings needed for strict compliance to the standard
- 
-+Wpoison-system-directories
-+Common Var(flag_poison_system_directories) Init(1) Warning
-+Warn for -I and -L options using system directories if cross compiling
-+
- Wshadow
- Common Var(warn_shadow) Warning
- Warn when one local variable shadows another
-Index: gcc-4.9-20140316/gcc/config.in
-===================================================================
---- gcc-4.9-20140316.orig/gcc/config.in
-+++ gcc-4.9-20140316/gcc/config.in
-@@ -138,6 +138,12 @@
- #endif
- 
- 
-+/* Define to warn for use of native system header directories */
-+#ifndef USED_FOR_TARGET
-+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
-+#endif
-+
-+
- /* Define if you want all operations on RTL (the basic data structure of the
-    optimizer and back end) to be checked for dynamic type safety at runtime.
-    This is quite expensive. */
-Index: gcc-4.9-20140316/gcc/configure
-===================================================================
---- gcc-4.9-20140316.orig/gcc/configure
-+++ gcc-4.9-20140316/gcc/configure
-@@ -928,6 +928,7 @@ with_system_zlib
- enable_maintainer_mode
- enable_link_mutex
- enable_version_specific_runtime_libs
-+enable_poison_system_directories
- enable_plugin
- enable_host_shared
- enable_libquadmath_support
-@@ -1648,6 +1649,8 @@ Optional Features:
-   --enable-version-specific-runtime-libs
-                           specify that runtime libraries should be installed
-                           in a compiler-specific directory
-+  --enable-poison-system-directories
-+                          warn for use of native system header directories
-   --enable-plugin         enable plugin support
-   --enable-host-shared    build host code as shared libraries
-   --disable-libquadmath-support
-@@ -27702,6 +27705,19 @@ if test "${enable_version_specific_runti
- fi
- 
- 
-+# Check whether --enable-poison-system-directories was given.
-+if test "${enable_poison_system_directories+set}" = set; then :
-+  enableval=$enable_poison_system_directories;
-+else
-+  enable_poison_system_directories=no
-+fi
-+
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+
-+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
-+
-+fi
-+
- # Substitute configuration variables
- 
- 
-Index: gcc-4.9-20140316/gcc/configure.ac
-===================================================================
---- gcc-4.9-20140316.orig/gcc/configure.ac
-+++ gcc-4.9-20140316/gcc/configure.ac
-@@ -5366,6 +5366,16 @@ AC_ARG_ENABLE(version-specific-runtime-l
-                 [specify that runtime libraries should be
-                  installed in a compiler-specific directory])])
- 
-+AC_ARG_ENABLE([poison-system-directories],
-+             AS_HELP_STRING([--enable-poison-system-directories],
-+                            [warn for use of native system header directories]),,
-+             [enable_poison_system_directories=no])
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
-+           [1],
-+           [Define to warn for use of native system header directories])
-+fi
-+
- # Substitute configuration variables
- AC_SUBST(subdirs)
- AC_SUBST(srcdir)
-Index: gcc-4.9-20140316/gcc/doc/invoke.texi
-===================================================================
---- gcc-4.9-20140316.orig/gcc/doc/invoke.texi
-+++ gcc-4.9-20140316/gcc/doc/invoke.texi
-@@ -260,6 +260,7 @@ Objective-C and Objective-C++ Dialects}.
- -Woverlength-strings  -Wpacked  -Wpacked-bitfield-compat  -Wpadded @gol
- -Wparentheses  -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
- -Wpointer-arith  -Wno-pointer-to-int-cast @gol
-+-Wno-poison-system-directories @gol
- -Wredundant-decls  -Wno-return-local-addr @gol
- -Wreturn-type  -Wsequence-point  -Wshadow @gol
- -Wsign-compare  -Wsign-conversion -Wfloat-conversion @gol
-@@ -4230,6 +4231,14 @@ headers---for that, @option{-Wunknown-pr
-  for most targets, it is made up of code and thus requires the stack
-  to be made executable in order for the program to work properly.
- 
-+@item -Wno-poison-system-directories
-+@opindex Wno-poison-system-directories
-+Do not warn for @option{-I} or @option{-L} options using system
-+directories such as @file{/usr/include} when cross compiling.  This
-+option is intended for use in chroot environments when such
-+directories contain the correct headers and libraries for the target
-+system rather than the host.
-+
- @item -Wfloat-equal
- @opindex Wfloat-equal
- @opindex Wno-float-equal
-Index: gcc-4.9-20140316/gcc/gcc.c
-===================================================================
---- gcc-4.9-20140316.orig/gcc/gcc.c
-+++ gcc-4.9-20140316/gcc/gcc.c
-@@ -764,6 +764,8 @@ proper position among the other output f
-    "%{fuse-ld=*:-fuse-ld=%*}\
-     %X %{o*} %{e*} %{N} %{n} %{r}\
-     %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} " VTABLE_VERIFICATION_SPEC " \
-+    %{Wno-poison-system-directories:--no-poison-system-directories}\
-+    %{Werror=poison-system-directories:--error-poison-system-directories}\
-     %{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\
-     %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
-     %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\
-Index: gcc-4.9-20140316/gcc/incpath.c
-===================================================================
---- gcc-4.9-20140316.orig/gcc/incpath.c
-+++ gcc-4.9-20140316/gcc/incpath.c
-@@ -28,6 +28,7 @@
- #include "intl.h"
- #include "incpath.h"
- #include "cppdefault.h"
-+#include "diagnostic-core.h"
- 
- /* Microsoft Windows does not natively support inodes.
-    VMS has non-numeric inodes.  */
-@@ -382,6 +383,24 @@ merge_include_chains (const char *sysroo
- 	}
-       fprintf (stderr, _("End of search list.\n"));
-     }
-+
-+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
-+  if (flag_poison_system_directories)
-+    {
-+       struct cpp_dir *p;
-+
-+       for (p = heads[QUOTE]; p; p = p->next)
-+         {
-+          if ((!strncmp (p->name, "/usr/include", 12))
-+              || (!strncmp (p->name, "/usr/local/include", 18))
-+              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
-+            warning (OPT_Wpoison_system_directories,
-+                     "include location \"%s\" is unsafe for "
-+                     "cross-compilation",
-+                     p->name);
-+         }
-+    }
-+#endif
- }
- 
- /* Use given -I paths for #include "..." but not #include <...>, and
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0017-gcc-poison-dir-extend.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0017-gcc-poison-dir-extend.patch
deleted file mode 100644
index 9e81efd..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0017-gcc-poison-dir-extend.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From e99c9c97266d6d3e8cac798aa91408250c4d60cf Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:00:34 +0400
-Subject: [PATCH 17/35] gcc-poison-dir-extend
-
-Add /sw/include and /opt/include based on the original
-zecke-no-host-includes.patch patch.  The original patch checked for
-/usr/include, /sw/include and /opt/include and then triggered a failure and
-aborted.
-
-Instead, we add the two missing items to the current scan.  If the user
-wants this to be a failure, they can add "-Werror=poison-system-directories".
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/incpath.c |    4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/gcc/incpath.c b/gcc/incpath.c
-index cd41c78..eac4a92 100644
---- a/gcc/incpath.c
-+++ b/gcc/incpath.c
-@@ -393,7 +393,9 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
-          {
-           if ((!strncmp (p->name, "/usr/include", 12))
-               || (!strncmp (p->name, "/usr/local/include", 18))
--              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
-+              || (!strncmp (p->name, "/usr/X11R6/include", 18))
-+              || (!strncmp (p->name, "/sw/include", 11))
-+              || (!strncmp (p->name, "/opt/include", 12)))
-             warning (OPT_Wpoison_system_directories,
-                      "include location \"%s\" is unsafe for "
-                      "cross-compilation",
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0018-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0018-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
deleted file mode 100644
index a28cafd..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0018-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 56207fa2923e8edf774e98ffac82666091076be3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:08:31 +0400
-Subject: [PATCH 18/35] gcc-4.3.3: SYSROOT_CFLAGS_FOR_TARGET
-
-Before committing, I noticed that PR/32161 was marked as a dup of PR/32009, but my previous patch did not fix it.
-
-This alternative patch is better because it lets you just use CFLAGS_FOR_TARGET to set the compilation flags for libgcc. Since bootstrapped target libraries are never compiled with the native compiler, it makes little sense to use different flags for stage1 and later stages. And it also makes little sense to use a different variable than CFLAGS_FOR_TARGET.
-
-Other changes I had to do include:
-
-- moving the creation of default CFLAGS_FOR_TARGET from Makefile.am to configure.ac, because otherwise the BOOT_CFLAGS are substituted into CFLAGS_FOR_TARGET (which is "-O2 -g $(CFLAGS)") via $(CFLAGS). It is also cleaner this way though.
-
-- passing the right CFLAGS to configure scripts as exported environment variables
-
-I also stopped passing LIBCFLAGS to configure scripts since they are unused in the whole src tree. And I updated the documentation as H-P reminded me to do.
-
-Bootstrapped/regtested i686-pc-linux-gnu, will commit to 4.4 shortly. Ok for 4.3?
-
-Signed-off-by: Paolo Bonzini  <bonzini@gnu.org>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- configure |   32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-diff --git a/configure b/configure
-index 1b76c90..e4dce7c 100755
---- a/configure
-+++ b/configure
-@@ -6772,6 +6772,38 @@ fi
- 
- 
- 
-+# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
-+# might be empty or "-g".  We don't require a C++ compiler, so CXXFLAGS
-+# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
-+# We want to ensure that TARGET libraries (which we know are built with
-+# gcc) are built with "-O2 -g", so include those options when setting
-+# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
-+if test "x$CFLAGS_FOR_TARGET" = x; then
-+  CFLAGS_FOR_TARGET=$CFLAGS
-+  case " $CFLAGS " in
-+    *" -O2 "*) ;;
-+    *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
-+  esac
-+  case " $CFLAGS " in
-+    *" -g "* | *" -g3 "*) ;;
-+    *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
-+  esac
-+fi
-+
-+
-+if test "x$CXXFLAGS_FOR_TARGET" = x; then
-+  CXXFLAGS_FOR_TARGET=$CXXFLAGS
-+  case " $CXXFLAGS " in
-+    *" -O2 "*) ;;
-+    *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
-+  esac
-+  case " $CXXFLAGS " in
-+    *" -g "* | *" -g3 "*) ;;
-+    *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
-+  esac
-+fi
-+
-+
- # Handle --with-headers=XXX.  If the value is not "yes", the contents of
- # the named directory are copied to $(tooldir)/sys-include.
- if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0019-64-bit-multilib-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0019-64-bit-multilib-hack.patch
deleted file mode 100644
index 058be0c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0019-64-bit-multilib-hack.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 18fde5740b09324dfb9cf41e9849672573ff5fa0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:10:06 +0400
-Subject: [PATCH 19/35] 64-bit multilib hack.
-
-GCC has internal multilib handling code but it assumes a very specific rigid directory
-layout. The build system implementation of multilib layout is very generic and allows
-complete customisation of the library directories.
-
-This patch is a partial solution to allow any custom directories to be passed into gcc
-and handled correctly. It forces gcc to use the base_libdir (which is the current
-directory, "."). We need to do this for each multilib that is configured as we don't
-know which compiler options may be being passed into the compiler. Since we have a compiler
-per mulitlib at this point that isn't an issue.
-
-The one problem is the target compiler is only going to work for the default multlilib at
-this point. Ideally we'd figure out which multilibs were being enabled with which paths
-and be able to patch these entries with a complete set of correct paths but this we
-don't have such code at this point. This is something the target gcc recipe should do
-and override these platform defaults in its build config.
-
-RP 15/8/11
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Elvis Dowson <elvis.dowson@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/config/i386/t-linux64   |    6 ++----
- gcc/config/mips/t-linux64   |   10 +++-------
- gcc/config/rs6000/t-linux64 |    5 ++---
- 3 files changed, 7 insertions(+), 14 deletions(-)
-
-Index: gcc-4.9-20140316/gcc/config/i386/t-linux64
-===================================================================
---- gcc-4.9-20140316.orig/gcc/config/i386/t-linux64
-+++ gcc-4.9-20140316/gcc/config/i386/t-linux64
-@@ -32,7 +32,5 @@
- #
- comma=,
- MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
--MULTILIB_DIRNAMES   = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
--MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
--MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
--MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
-+MULTILIB_DIRNAMES = . .
-+MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
-Index: gcc-4.9-20140316/gcc/config/mips/t-linux64
-===================================================================
---- gcc-4.9-20140316.orig/gcc/config/mips/t-linux64
-+++ gcc-4.9-20140316/gcc/config/mips/t-linux64
-@@ -17,10 +17,6 @@
- # <http://www.gnu.org/licenses/>.
- 
- MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
--MULTILIB_DIRNAMES = n32 32 64
--MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
--MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
--MULTILIB_OSDIRNAMES = \
--	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
--	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
--	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
-+MULTILIB_DIRNAMES = . . .
-+MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
-+
-Index: gcc-4.9-20140316/gcc/config/rs6000/t-linux64
-===================================================================
---- gcc-4.9-20140316.orig/gcc/config/rs6000/t-linux64
-+++ gcc-4.9-20140316/gcc/config/rs6000/t-linux64
-@@ -26,10 +26,9 @@
- # MULTILIB_OSDIRNAMES according to what is found on the target.
- 
- MULTILIB_OPTIONS    := m64/m32
--MULTILIB_DIRNAMES   := 64 32
-+MULTILIB_DIRNAMES   := . .
- MULTILIB_EXTRA_OPTS := 
--MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
--MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
-+MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
- 
- rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
- 	$(COMPILE) $<
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0020-optional-libstdc.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0020-optional-libstdc.patch
deleted file mode 100644
index 5b46614..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0020-optional-libstdc.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 307c8ff3ef666b7bd5ac733863f2fbb27a9d521e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:12:56 +0400
-Subject: [PATCH 20/35] optional libstdc
-
-gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
-will not run correctly since by default the linker will try to link against libstdc++
-which shouldn't exist yet. We need an option to disable -lstdc++
-option whilst leaving -lc, -lgcc and other automatic library dependencies added by gcc
-driver. This patch adds such an option which only disables the -lstdc++.
-
-A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
-do this officially, the likely answer is don't build libstdc++ separately.
-
-RP 29/6/10
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- gcc/c-family/c.opt  |    4 ++++
- gcc/cp/g++spec.c    |    1 +
- gcc/doc/invoke.texi |    9 +++++++--
- gcc/gcc.c           |    1 +
- 4 files changed, 13 insertions(+), 2 deletions(-)
-
-Index: gcc-4.9-20140316/gcc/c-family/c.opt
-===================================================================
---- gcc-4.9-20140316.orig/gcc/c-family/c.opt
-+++ gcc-4.9-20140316/gcc/c-family/c.opt
-@@ -1323,6 +1323,10 @@ nostdinc++
- C++ ObjC++
- Do not search standard system include directories for C++
- 
-+nostdlib++
-+Driver
-+Do not link standard C++ runtime library
-+
- o
- C ObjC C++ ObjC++ Joined Separate
- ; Documented in common.opt
-Index: gcc-4.9-20140316/gcc/cp/g++spec.c
-===================================================================
---- gcc-4.9-20140316.orig/gcc/cp/g++spec.c
-+++ gcc-4.9-20140316/gcc/cp/g++spec.c
-@@ -138,6 +138,7 @@ lang_specific_driver (struct cl_decoded_
-       switch (decoded_options[i].opt_index)
- 	{
- 	case OPT_nostdlib:
-+	case OPT_nostdlib__:
- 	case OPT_nodefaultlibs:
- 	  library = -1;
- 	  break;
-Index: gcc-4.9-20140316/gcc/doc/invoke.texi
-===================================================================
---- gcc-4.9-20140316.orig/gcc/doc/invoke.texi
-+++ gcc-4.9-20140316/gcc/doc/invoke.texi
-@@ -193,6 +193,7 @@ in the following sections.
- -fvisibility-inlines-hidden @gol
- -fvtable-verify=@var{std|preinit|none} @gol
- -fvtv-counts -fvtv-debug @gol
-+-nostdlib++ @gol
- -fvisibility-ms-compat @gol
- -fext-numeric-literals @gol
- -Wabi  -Wconversion-null  -Wctor-dtor-privacy @gol
-@@ -457,7 +458,7 @@ Objective-C and Objective-C++ Dialects}.
- -nostartfiles  -nodefaultlibs  -nostdlib -pie -rdynamic @gol
- -s  -static -static-libgcc -static-libstdc++ @gol
- -static-libasan -static-libtsan -static-liblsan -static-libubsan @gol
---shared -shared-libgcc  -symbolic @gol
-+-shared -shared-libgcc  -symbolic -nostdlib++ @gol
- -T @var{script}  -Wl,@var{option}  -Xlinker @var{option} @gol
- -u @var{symbol}}
- 
-@@ -10285,6 +10286,11 @@ These entries are usually resolved by en
- libc.  These entry points should be supplied through some other
- mechanism when this option is specified.
- 
-+@item -nostdlib++
-+@opindex nostdlib++
-+Do not use the standard system C++ runtime libraries when linking.
-+Only the libraries you specify will be passed to the linker.
-+
- @cindex @option{-lgcc}, use with @option{-nostdlib}
- @cindex @option{-nostdlib} and unresolved references
- @cindex unresolved references and @option{-nostdlib}
-Index: gcc-4.9-20140316/gcc/gcc.c
-===================================================================
---- gcc-4.9-20140316.orig/gcc/gcc.c
-+++ gcc-4.9-20140316/gcc/gcc.c
-@@ -772,6 +772,7 @@ proper position among the other output f
-     %(mflib) " STACK_SPLIT_SPEC "\
-     %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
-     %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
-+    %{!nostdlib++:}\
-     %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}"
- #endif
- 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0021-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0021-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
deleted file mode 100644
index eb3c61f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0021-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 004696e054ae9dc71d512cc755ccc4074fc62b2d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:14:20 +0400
-Subject: [PATCH 21/35] gcc: disable MASK_RELAX_PIC_CALLS bit
-
-The new feature added after 4.3.3
-"http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html"
-will cause cc1plus eat up all the system memory when build webkit-gtk.
-The function mips_get_pic_call_symbol keeps on recursively calling itself.
-Disable this feature to walk aside the bug.
-
-Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [configuration]
----
- gcc/configure    |    7 -------
- gcc/configure.ac |    7 -------
- 2 files changed, 14 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index b65d21d..bdab45a 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -25829,13 +25829,6 @@ $as_echo_n "checking assembler and linker for explicit JALR relocation... " >&6;
-         rm -f conftest.*
-       fi
-     fi
--    if test $gcc_cv_as_ld_jalr_reloc = yes; then
--      if test x$target_cpu_default = x; then
--        target_cpu_default=MASK_RELAX_PIC_CALLS
--      else
--        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
--      fi
--    fi
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ld_jalr_reloc" >&5
- $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
- 
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index e226b85..5f5c909 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -4099,13 +4099,6 @@ x:
-         rm -f conftest.*
-       fi
-     fi
--    if test $gcc_cv_as_ld_jalr_reloc = yes; then
--      if test x$target_cpu_default = x; then
--        target_cpu_default=MASK_RELAX_PIC_CALLS
--      else
--        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
--      fi
--    fi
-     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
- 
-     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0022-COLLECT_GCC_OPTIONS.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0022-COLLECT_GCC_OPTIONS.patch
deleted file mode 100644
index 40c8abf..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0022-COLLECT_GCC_OPTIONS.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 7f5c9dcc71c8b83a0b5596266cc4bdf0936e8e00 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:16:28 +0400
-Subject: [PATCH 22/35] COLLECT_GCC_OPTIONS
-
-This patch adds --sysroot into COLLECT_GCC_OPTIONS which is used to
-invoke collect2.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/gcc.c |    9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 477752f..51062aa 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -4098,6 +4098,15 @@ set_collect_gcc_options (void)
- 		sizeof ("COLLECT_GCC_OPTIONS=") - 1);
- 
-   first_time = TRUE;
-+#ifdef HAVE_LD_SYSROOT
-+  if (target_system_root_changed && target_system_root)
-+    {
-+      obstack_grow (&collect_obstack, "'--sysroot=", sizeof("'--sysroot=")-1);
-+      obstack_grow (&collect_obstack, target_system_root,strlen(target_system_root));
-+      obstack_grow (&collect_obstack, "'", 1);
-+      first_time = FALSE;
-+    }
-+#endif
-   for (i = 0; (int) i < n_switches; i++)
-     {
-       const char *const *args;
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0023-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0023-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
deleted file mode 100644
index fddfe9e..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0023-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From f7d49ca445e60faa1b5256c6b4f96c1ee5c0e353 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:17:25 +0400
-Subject: [PATCH 23/35] Use the defaults.h in ${B} instead of ${S}, and t-oe
- in ${B}
-
-Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B}, so that
-the source can be shared between gcc-cross-initial,
-gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk build.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-
-While compiling gcc-crosssdk-initial-x86_64 on some host, there is
-occasionally failure that test the existance of default.h doesn't
-work, the reason is tm_include_list='** defaults.h' rather than
-tm_include_list='** ./defaults.h'
-
-So we add the test condition for this situation.
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/Makefile.in  |    2 +-
- gcc/configure    |    4 ++--
- gcc/configure.ac |    4 ++--
- gcc/mkconfig.sh  |    4 ++--
- 4 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index d1ab22f..15fe4b6 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -483,7 +483,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
- TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@
- 
- xmake_file=@xmake_file@
--tmake_file=@tmake_file@
-+tmake_file=@tmake_file@ ./t-oe
- TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
- TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
- TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
-diff --git a/gcc/configure b/gcc/configure
-index 5399b2b..60a04bd 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -11631,8 +11631,8 @@ for f in $tm_file; do
-        tm_include_list="${tm_include_list} $f"
-        ;;
-     defaults.h )
--       tm_file_list="${tm_file_list} \$(srcdir)/$f"
--       tm_include_list="${tm_include_list} $f"
-+       tm_file_list="${tm_file_list} ./$f"
-+       tm_include_list="${tm_include_list} ./$f"
-        ;;
-     * )
-        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index f87c3b6..460e0d9 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -1740,8 +1740,8 @@ for f in $tm_file; do
-        tm_include_list="${tm_include_list} $f"
-        ;;
-     defaults.h )
--       tm_file_list="${tm_file_list} \$(srcdir)/$f"
--       tm_include_list="${tm_include_list} $f"
-+       tm_file_list="${tm_file_list} ./$f"
-+       tm_include_list="${tm_include_list} ./$f"
-        ;;
-     * )
-        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
-diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
-index c7146ed..b153f45 100644
---- a/gcc/mkconfig.sh
-+++ b/gcc/mkconfig.sh
-@@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then
-     if [ $# -ge 1 ]; then
- 	echo '#ifdef IN_GCC' >> ${output}T
- 	for file in "$@"; do
--	    if test x"$file" = x"defaults.h"; then
-+	    if test x"$file" = x"./defaults.h" -o x"$file" = x"defaults.h"; then
- 		postpone_defaults_h="yes"
- 	    else
- 		echo "# include \"$file\"" >> ${output}T
-@@ -106,7 +106,7 @@ esac
- 
- # If we postponed including defaults.h, add the #include now.
- if test x"$postpone_defaults_h" = x"yes"; then
--    echo "# include \"defaults.h\"" >> ${output}T
-+    echo "# include \"./defaults.h\"" >> ${output}T
- fi
- 
- # Add multiple inclusion protection guard, part two.
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0025-fortran-cross-compile-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0025-fortran-cross-compile-hack.patch
deleted file mode 100644
index 0e7914d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0025-fortran-cross-compile-hack.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From af8a56ea4e17b2909eff2c57704ab43ef24f28d3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:20:01 +0400
-Subject: [PATCH 25/35] fortran cross-compile hack.
-
-* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
-used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
-directory.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- libgfortran/configure    |    2 +-
- libgfortran/configure.ac |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libgfortran/configure b/libgfortran/configure
-index 8385e96..b8f7a92 100755
---- a/libgfortran/configure
-+++ b/libgfortran/configure
-@@ -12704,7 +12704,7 @@ esac
- 
- # We need gfortran to compile parts of the library
- #AC_PROG_FC(gfortran)
--FC="$GFORTRAN"
-+#FC="$GFORTRAN"
- ac_ext=${ac_fc_srcext-f}
- ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
- ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
-index 7d97fed..3f9f484 100644
---- a/libgfortran/configure.ac
-+++ b/libgfortran/configure.ac
-@@ -227,7 +227,7 @@ AC_SUBST(enable_static)
- 
- # We need gfortran to compile parts of the library
- #AC_PROG_FC(gfortran)
--FC="$GFORTRAN"
-+#FC="$GFORTRAN"
- AC_PROG_FC(gfortran)
- 
- # extra LD Flags which are required for targets
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0026-libgcc-sjlj-check.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0026-libgcc-sjlj-check.patch
deleted file mode 100644
index d4efab9..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0026-libgcc-sjlj-check.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 08c2398445e6cac282488f64ae6bf29cbcd8db23 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:20:50 +0400
-Subject: [PATCH 26/35] libgcc-sjlj-check
-
-ac_fn_c_try_compile doesnt seem to keep the intermediate files
-which are needed for sjlj test to pass since it greps into the
-generated file. So we run the compiler command using AC_TRY_COMMAND
-which then generates the needed .s file
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libgcc/configure    |   10 ++++++----
- libgcc/configure.ac |   10 ++++------
- 2 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/libgcc/configure b/libgcc/configure
-index 1425df6..d18e3cb 100644
---- a/libgcc/configure
-+++ b/libgcc/configure
-@@ -4208,17 +4208,19 @@ void foo ()
- }
- 
- _ACEOF
--CFLAGS_hold=$CFLAGS
--CFLAGS="--save-temps -fexceptions"
- libgcc_cv_lib_sjlj_exceptions=unknown
--if ac_fn_c_try_compile; then :
-+if { ac_try='${CC-cc} -fexceptions -S conftest.c -o conftest.s 1>&5'
-+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }; }; then
-   if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
-     libgcc_cv_lib_sjlj_exceptions=yes
-   elif grep _Unwind_Resume conftest.s >/dev/null 2>&1; then
-     libgcc_cv_lib_sjlj_exceptions=no
-   fi
- fi
--CFLAGS=$CFLAGS_hold
- rm -f conftest*
- 
- fi
-diff --git a/libgcc/configure.ac b/libgcc/configure.ac
-index 8b7aba5..c7c9644 100644
---- a/libgcc/configure.ac
-+++ b/libgcc/configure.ac
-@@ -216,16 +216,14 @@ void foo ()
-   bar();
- }
- ])])
--CFLAGS_hold=$CFLAGS
--CFLAGS="--save-temps -fexceptions"
- libgcc_cv_lib_sjlj_exceptions=unknown
--AS_IF([ac_fn_c_try_compile],
--  [if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
-+if AC_TRY_COMMAND(${CC-cc} -fexceptions -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+  if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
-     libgcc_cv_lib_sjlj_exceptions=yes
-   elif grep _Unwind_Resume conftest.s >/dev/null 2>&1; then
-     libgcc_cv_lib_sjlj_exceptions=no
--  fi])
--CFLAGS=$CFLAGS_hold
-+  fi
-+fi
- rm -f conftest*
- ])
- 
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0027-cpp-honor-sysroot.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0027-cpp-honor-sysroot.patch
deleted file mode 100644
index 05e9521..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0027-cpp-honor-sysroot.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From a0f9bd09c816ad29ecf7c29d6c27f7df97710364 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:22:00 +0400
-Subject: [PATCH 27/35] cpp: honor sysroot.
-
-Currently, if the gcc toolchain is relocated and installed from sstate, then you try and compile
-preprocessed source (.i or .ii files), the compiler will try and access the builtin sysroot location
-rather than the --sysroot option specified on the commandline. If access to that directory is
-permission denied (unreadable), gcc will error.
-
-This happens when ccache is in use due to the fact it uses preprocessed source files.
-
-The fix below adds %I to the cpp-output spec macro so the default substitutions for -iprefix,
--isystem, -isysroot happen and the correct sysroot is used.
-
-[YOCTO #2074]
-
-RP 2012/04/13
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/cp/lang-specs.h |    2 +-
- gcc/gcc.c           |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
-index a001c3e..1aae1e4 100644
---- a/gcc/cp/lang-specs.h
-+++ b/gcc/cp/lang-specs.h
-@@ -63,5 +63,5 @@ along with GCC; see the file COPYING3.  If not see
-   {".ii", "@c++-cpp-output", 0, 0, 0},
-   {"@c++-cpp-output",
-    "%{!M:%{!MM:%{!E:\
--    cc1plus -fpreprocessed %i %(cc1_options) %2\
-+    cc1plus -fpreprocessed %i %I %(cc1_options) %2\
-     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 51062aa..cf6b99e 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1042,7 +1042,7 @@ static const struct compiler default_compilers[] =
-                     %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
-   {".i", "@cpp-output", 0, 0, 0},
-   {"@cpp-output",
--   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
-+   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
-   {".s", "@assembler", 0, 0, 0},
-   {"@assembler",
-    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0028-MIPS64-Default-to-N64-ABI.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0028-MIPS64-Default-to-N64-ABI.patch
deleted file mode 100644
index 2638720..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0028-MIPS64-Default-to-N64-ABI.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 301e18d4711db5925e767fad08dffa9cfe0a2f1f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:23:08 +0400
-Subject: [PATCH 28/35] MIPS64: Default to N64 ABI
-
-MIPS64 defaults to n32 ABI, this patch makes it
-so that it defaults to N64 ABI
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [OE config specific]
----
- gcc/config.gcc |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/config.gcc b/gcc/config.gcc
-index 1a0be50..989c2fb 100644
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -1797,7 +1797,7 @@ mips*-mti-linux*)
- mips64*-*-linux* | mipsisa64*-*-linux*)
- 	tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h"
- 	tmake_file="${tmake_file} mips/t-linux64"
--	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
-+	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_64"
- 	case ${target} in
- 		mips64el-st-linux-gnu)
- 			tm_file="${tm_file} mips/st.h"
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0029-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0029-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
deleted file mode 100644
index 969d290..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0029-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From 29d12344fb682a053de53eb08b95704cf3b67af2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:24:50 +0400
-Subject: [PATCH 29/35] Define GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
- relative to SYSTEMLIBS_DIR
-
-This patch defines GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
-relative to SYSTEMLIBS_DIR which can be set in generated headers
-This breaks the assumption of hardcoded multilib in gcc
-Change is only for the supported architectures in OE including
-SH, sparc, alpha for possible future support (if any)
-
-Removes the do_headerfix task in metadata
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [OE configuration]
----
- gcc/config/alpha/linux-elf.h |    4 ++--
- gcc/config/arm/linux-eabi.h  |    4 ++--
- gcc/config/arm/linux-elf.h   |    2 +-
- gcc/config/i386/linux.h      |    2 +-
- gcc/config/i386/linux64.h    |    6 +++---
- gcc/config/mips/linux.h      |    2 +-
- gcc/config/mips/linux64.h    |    8 ++++----
- gcc/config/rs6000/linux64.h  |    8 ++++----
- gcc/config/sh/linux.h        |    2 +-
- gcc/config/sparc/linux.h     |    2 +-
- gcc/config/sparc/linux64.h   |    4 ++--
- 11 files changed, 22 insertions(+), 22 deletions(-)
-
-Index: gcc-4.9.0/gcc/config/alpha/linux-elf.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/alpha/linux-elf.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/alpha/linux-elf.h	2014-05-07 16:43:50.605106535 +0000
-@@ -23,8 +23,8 @@
- #define EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
--#define GLIBC_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
--#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define GLIBC_DYNAMIC_LINKER	SYSTEMLIBS_DIR "ld-linux.so.2"
-+#define UCLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-uClibc.so.0"
- #if DEFAULT_LIBC == LIBC_UCLIBC
- #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
- #elif DEFAULT_LIBC == LIBC_GLIBC
-Index: gcc-4.9.0/gcc/config/arm/linux-eabi.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/arm/linux-eabi.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/arm/linux-eabi.h	2014-05-07 16:43:50.605106535 +0000
-@@ -68,8 +68,8 @@
-    GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
- 
- #undef  GLIBC_DYNAMIC_LINKER
--#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
--#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
-+#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT SYSTEMLIBS_DIR "ld-linux.so.3"
-+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT SYSTEMLIBS_DIR "ld-linux-armhf.so.3"
- #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
- 
- #define GLIBC_DYNAMIC_LINKER \
-Index: gcc-4.9.0/gcc/config/arm/linux-elf.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/arm/linux-elf.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/arm/linux-elf.h	2014-05-07 16:43:50.605106535 +0000
-@@ -57,7 +57,7 @@
- 
- #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
- 
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
- 
- #define LINUX_TARGET_LINK_SPEC  "%{h*} \
-    %{static:-Bstatic} \
-Index: gcc-4.9.0/gcc/config/i386/linux.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/i386/linux.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/i386/linux.h	2014-05-07 16:43:50.605106535 +0000
-@@ -20,4 +20,4 @@
- <http://www.gnu.org/licenses/>.  */
- 
- #define GNU_USER_LINK_EMULATION "elf_i386"
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
-Index: gcc-4.9.0/gcc/config/i386/linux64.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/i386/linux64.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/i386/linux64.h	2014-05-07 16:43:50.605106535 +0000
-@@ -27,6 +27,6 @@
- #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
- #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
- 
--#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
--#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
--#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
-+#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
-+#define GLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ld-linux-x32.so.2"
-Index: gcc-4.9.0/gcc/config/mips/linux.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/mips/linux.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/mips/linux.h	2014-05-07 16:43:50.605106535 +0000
-@@ -18,8 +18,8 @@
- <http://www.gnu.org/licenses/>.  */
- 
- #define GLIBC_DYNAMIC_LINKER \
--  "%{mnan=2008:/lib/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
- 
- #undef UCLIBC_DYNAMIC_LINKER
- #define UCLIBC_DYNAMIC_LINKER \
--  "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
-Index: gcc-4.9.0/gcc/config/mips/linux64.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/mips/linux64.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/mips/linux64.h	2014-05-07 16:43:50.605106535 +0000
-@@ -23,20 +23,20 @@
- #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
- 
- #define GLIBC_DYNAMIC_LINKER32 \
--  "%{mnan=2008:/lib/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
- #define GLIBC_DYNAMIC_LINKER64 \
--  "%{mnan=2008:/lib64/ld-linux-mipsn8.so.1;:/lib64/ld.so.1}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
- #define GLIBC_DYNAMIC_LINKERN32 \
--  "%{mnan=2008:/lib32/ld-linux-mipsn8.so.1;:/lib32/ld.so.1}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
- 
- #undef UCLIBC_DYNAMIC_LINKER32
- #define UCLIBC_DYNAMIC_LINKER32 \
--  "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
- #undef UCLIBC_DYNAMIC_LINKER64
- #define UCLIBC_DYNAMIC_LINKER64 \
--  "%{mnan=2008:/lib/ld64-uClibc-mipsn8.so.0;:/lib/ld64-uClibc.so.0}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld64-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld64-uClibc.so.0}"
- #define UCLIBC_DYNAMIC_LINKERN32 \
--  "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
-+  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
- 
- #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
- #define GNU_USER_DYNAMIC_LINKERN32 \
-Index: gcc-4.9.0/gcc/config/rs6000/linux64.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/rs6000/linux64.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/rs6000/linux64.h	2014-05-07 16:43:50.605106535 +0000
-@@ -367,14 +367,14 @@
- #undef	LINK_OS_DEFAULT_SPEC
- #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
- 
--#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
-+#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld.so.1"
- #ifdef LINUX64_DEFAULT_ABI_ELFv2
--#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib64/ld64.so.1;:/lib64/ld64.so.2}"
-+#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:" SYSTEMLIBS_DIR "ld64.so.1;:" SYSTEMLIBS_DIR "ld64.so.2}"
- #else
--#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib64/ld64.so.2;:/lib64/ld64.so.1}"
-+#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:" SYSTEMLIBS_DIR "ld64.so.2;:" SYSTEMLIBS_DIR "ld64.so.1}"
- #endif
--#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
--#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
- #if DEFAULT_LIBC == LIBC_UCLIBC
- #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
- #elif DEFAULT_LIBC == LIBC_GLIBC
-Index: gcc-4.9.0/gcc/config/sh/linux.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/sh/linux.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/sh/linux.h	2014-05-07 16:43:50.605106535 +0000
-@@ -43,7 +43,7 @@
- 
- #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
- 
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
- 
- #undef SUBTARGET_LINK_EMUL_SUFFIX
- #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
-Index: gcc-4.9.0/gcc/config/sparc/linux.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/sparc/linux.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/sparc/linux.h	2014-05-07 16:43:50.605106535 +0000
-@@ -83,7 +83,7 @@
-    When the -shared link option is used a final link is not being
-    done.  */
- 
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
- 
- #undef  LINK_SPEC
- #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
-Index: gcc-4.9.0/gcc/config/sparc/linux64.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/sparc/linux64.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/sparc/linux64.h	2014-05-07 16:43:50.605106535 +0000
-@@ -92,8 +92,8 @@
-    When the -shared link option is used a final link is not being
-    done.  */
- 
--#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
--#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-linux.so.2"
-+#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux.so.2"
- 
- #ifdef SPARC_BI_ARCH
- 
-Index: gcc-4.9.0/gcc/config/linux.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/linux.h	2014-05-07 16:43:50.609106535 +0000
-+++ gcc-4.9.0/gcc/config/linux.h	2014-05-07 16:43:50.605106535 +0000
-@@ -73,10 +73,10 @@
-    GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
-    GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
-    supporting both 32-bit and 64-bit compilation.  */
--#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
--#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
--#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
--#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
-+#define UCLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ldx32-uClibc.so.0"
- #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
- #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
- #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0030-gcc-Fix-argument-list-too-long-error.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0030-gcc-Fix-argument-list-too-long-error.patch
deleted file mode 100644
index 2ceaff6..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0030-gcc-Fix-argument-list-too-long-error.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From c1816c160156f99c34e6a0a0311bb0219326804e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:26:37 +0400
-Subject: [PATCH 30/35] gcc: Fix argument list too long error.
-
-There would be an "Argument list too long" error when the
-build directory is longer than 200, this is caused by:
-
-headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`
-
-The PLUGIN_HEADERS is too long before sort, so the "echo" can't handle
-it, use the $(sort list) of GNU make which can handle the too long list
-would fix the problem, the header would be short enough after sorted.
-The "tr ' ' '\012'" was used for translating the space to "\n", the
-$(sort list) doesn't need this.
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/Makefile.in |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 2320497..8562a62 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -4627,7 +4627,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype
- # We keep the directory structure for files in config or c-family and .def
- # files. All other files are flattened to a single directory.
- 	$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
--	headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`; \
-+	headers="$(sort $(PLUGIN_HEADERS))"; \
- 	srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
- 	for file in $$headers; do \
- 	  if [ -f $$file ] ; then \
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0031-Disable-sdt.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0031-Disable-sdt.patch
deleted file mode 100644
index 2c1d5e0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0031-Disable-sdt.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From b85265bc94ec1beaf1d3b697c03db62991553467 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:28:10 +0400
-Subject: [PATCH 31/35] Disable sdt.
-
-We don't list dtrace in DEPENDS so we shouldn't be depending on this header.
-It may or may not exist from preivous builds though. To be determinstic, disable
-sdt.h usage always. This avoids build failures if the header is removed after configure
-but before libgcc is compiled for example.
-
-RP 2012/8/7
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Disable sdt for libstdc++-v3.
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
-Upstream-Status: Inappropriate [hack]
----
- gcc/configure             | 12 ++++++------
- gcc/configure.ac          | 18 +++++++++---------
- libstdc++-v3/configure    |  6 +++---
- libstdc++-v3/configure.ac |  2 +-
- 4 files changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index 3c550a6..01c7626 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -26812,12 +26812,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5
- $as_echo_n "checking sys/sdt.h in the target C library... " >&6; }
- have_sys_sdt_h=no
--if test -f $target_header_dir/sys/sdt.h; then
--  have_sys_sdt_h=yes
--
--$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
--
--fi
-+#if test -f $target_header_dir/sys/sdt.h; then
-+#  have_sys_sdt_h=yes
-+#
-+#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
-+#
-+#fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
- $as_echo "$have_sys_sdt_h" >&6; }
- 
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 3601ab6..06e501f 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -4779,15 +4779,15 @@ if test x$gcc_cv_libc_provides_ssp = xyes; then
- fi
- 
- # Test for <sys/sdt.h> on the target.
--GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
--AC_MSG_CHECKING(sys/sdt.h in the target C library)
--have_sys_sdt_h=no
--if test -f $target_header_dir/sys/sdt.h; then
--  have_sys_sdt_h=yes
--  AC_DEFINE(HAVE_SYS_SDT_H, 1,
--            [Define if your target C library provides sys/sdt.h])
--fi
--AC_MSG_RESULT($have_sys_sdt_h)
-+#GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
-+#AC_MSG_CHECKING(sys/sdt.h in the target C library)
-+#have_sys_sdt_h=no
-+#if test -f $target_header_dir/sys/sdt.h; then
-+#  have_sys_sdt_h=yes
-+#  AC_DEFINE(HAVE_SYS_SDT_H, 1,
-+#            [Define if your target C library provides sys/sdt.h])
-+#fi
-+#AC_MSG_RESULT($have_sys_sdt_h)
- 
- # Check if TFmode long double should be used by default or not.
- # Some glibc targets used DFmode long double, but with glibc 2.4
-diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
-index 4953c9f..53a1145 100755
---- a/libstdc++-v3/configure
-+++ b/libstdc++-v3/configure
-@@ -20578,11 +20578,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- 
--  if test $glibcxx_cv_sys_sdt_h = yes; then
-+#  if test $glibcxx_cv_sys_sdt_h = yes; then
- 
--$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
-+#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
- 
--  fi
-+#  fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sys_sdt_h" >&5
- $as_echo "$glibcxx_cv_sys_sdt_h" >&6; }
- 
-diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
-index 73d430a..f2135e2 100644
---- a/libstdc++-v3/configure.ac
-+++ b/libstdc++-v3/configure.ac
-@@ -211,7 +211,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN
- GLIBCXX_CHECK_SC_NPROC_ONLN
- GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP
- GLIBCXX_CHECK_SYSCTL_HW_NCPU
--GLIBCXX_CHECK_SDT_H
-+#GLIBCXX_CHECK_SDT_H
- 
- # Check for available headers.
- AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
--- 
-1.8.3.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0032-libtool.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0032-libtool.patch
deleted file mode 100644
index 3b3d1b6..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0032-libtool.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 6c715fcfa262adadca81c68a1f3f69aa3187a501 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:29:11 +0400
-Subject: [PATCH 32/35] libtool
-
-libstdc++ from gcc-runtime gets created with -rpath=/usr/lib/../lib for qemux86-64
-when running on am x86_64 build host.
-
-This patch stops this speading to libdir in the libstdc++.la file within libtool.
-Arguably, it shouldn't be passing this into libtool in the first place but
-for now this resolves the nastiest problems this causes.
-
-func_normal_abspath would resolve an empty path to `pwd` so we need
-to filter the zero case.
-
-RP 2012/8/24
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- ltmain.sh |    4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/ltmain.sh b/ltmain.sh
-index a03433f..46f47c2 100644
---- a/ltmain.sh
-+++ b/ltmain.sh
-@@ -6359,6 +6359,10 @@ func_mode_link ()
- 	func_warning "ignoring multiple \`-rpath's for a libtool library"
- 
-       install_libdir="$1"
-+      if test -n "$install_libdir"; then
-+	func_normal_abspath "$install_libdir"
-+	install_libdir=$func_normal_abspath_result
-+      fi
- 
-       oldlibs=
-       if test -z "$rpath"; then
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0033-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0033-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
deleted file mode 100644
index b236c37a..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0033-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 97e4591c20310425e7aca0e6712a8d9480e7744c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:30:32 +0400
-Subject: [PATCH 33/35] gcc: armv4: pass fix-v4bx to linker to support EABI.
-
-The LINK_SPEC for linux gets overwritten by linux-eabi.h which
-means the value of TARGET_FIX_V4BX_SPEC gets lost and as a result
-the option is not passed to linker when chosing march=armv4
-This patch redefines this in linux-eabi.h and reinserts it
-for eabi defaulting toolchains.
-
-We might want to send it upstream.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/config/arm/linux-eabi.h |    6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-Index: gcc-4.9-20140316/gcc/config/arm/linux-eabi.h
-===================================================================
---- gcc-4.9-20140316.orig/gcc/config/arm/linux-eabi.h
-+++ gcc-4.9-20140316/gcc/config/arm/linux-eabi.h
-@@ -77,10 +77,14 @@
-     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
-     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
- 
-+/* For armv4 we pass --fix-v4bx to linker to support EABI */
-+#undef TARGET_FIX_V4BX_SPEC
-+#define TARGET_FIX_V4BX_SPEC "%{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4: --fix-v4bx}"
-+
- /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
-    use the GNU/Linux version, not the generic BPABI version.  */
- #undef  LINK_SPEC
--#define LINK_SPEC EABI_LINK_SPEC					\
-+#define LINK_SPEC TARGET_FIX_V4BX_SPEC EABI_LINK_SPEC			\
-   LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC,				\
- 		       LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
- 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0034-Use-the-multilib-config-files-from-B-instead-of-usin.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0034-Use-the-multilib-config-files-from-B-instead-of-usin.patch
deleted file mode 100644
index 66b9f89..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0034-Use-the-multilib-config-files-from-B-instead-of-usin.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From fc5e4beaea856a2b486c770ad3addc0f5bb3100e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:33:04 +0400
-Subject: [PATCH 34/35] Use the multilib config files from ${B} instead of
- using the ones from ${S}
-
-Use the multilib config files from ${B} instead of using the ones from ${S}
-so that the source can be shared between gcc-cross-initial,
-gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk build.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Upstream-Status: Inappropriate [configuration]
----
- gcc/configure    |   22 ++++++++++++++++++----
- gcc/configure.ac |   22 ++++++++++++++++++----
- 2 files changed, 36 insertions(+), 8 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index 8bc0c98..3cd0817 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -11519,10 +11519,20 @@ done
- tmake_file_=
- for f in ${tmake_file}
- do
--	if test -f ${srcdir}/config/$f
--	then
--		tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
--	fi
-+  case $f in
-+    */t-linux64 )
-+       if test -f ./config/$f
-+       then
-+         tmake_file_="${tmake_file_} ./config/$f"
-+       fi
-+       ;;
-+    * )
-+       if test -f ${srcdir}/config/$f
-+       then
-+         tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
-+       fi
-+       ;;
-+  esac
- done
- tmake_file="${tmake_file_}"
- 
-@@ -11533,6 +11543,10 @@ tm_file_list="options.h"
- tm_include_list="options.h insn-constants.h"
- for f in $tm_file; do
-   case $f in
-+    */linux64.h )
-+       tm_file_list="${tm_file_list} ./config/$f"
-+       tm_include_list="${tm_include_list} ./config/$f"
-+       ;;
-     ./* )
-        f=`echo $f | sed 's/^..//'`
-        tm_file_list="${tm_file_list} $f"
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 5e5e84f..415a6df 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -1700,10 +1700,20 @@ done
- tmake_file_=
- for f in ${tmake_file}
- do
--	if test -f ${srcdir}/config/$f
--	then
--		tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
--	fi
-+  case $f in
-+    */t-linux64 )
-+       if test -f ./config/$f
-+       then
-+         tmake_file_="${tmake_file_} ./config/$f"
-+       fi
-+       ;;
-+    * )
-+       if test -f ${srcdir}/config/$f
-+       then
-+         tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
-+       fi
-+       ;;
-+  esac
- done
- tmake_file="${tmake_file_}"
- 
-@@ -1714,6 +1724,10 @@ tm_file_list="options.h"
- tm_include_list="options.h insn-constants.h"
- for f in $tm_file; do
-   case $f in
-+    */linux64.h )
-+       tm_file_list="${tm_file_list} ./config/$f"
-+       tm_include_list="${tm_include_list} ./config/$f"
-+       ;;
-     ./* )
-        f=`echo $f | sed 's/^..//'`
-        tm_file_list="${tm_file_list} $f"
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0040-fix-g++-sysroot.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0040-fix-g++-sysroot.patch
deleted file mode 100644
index d50aa5c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0040-fix-g++-sysroot.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Portions of
-
-http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg26013.html
-
-are not upstreamed yet. So lets keep missing pieces.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: gcc-4.8.1/gcc/configure.ac
-===================================================================
---- gcc-4.8.1.orig/gcc/configure.ac	2013-07-15 15:55:49.488399132 -0700
-+++ gcc-4.8.1/gcc/configure.ac	2013-07-15 16:02:31.772406679 -0700
-@@ -148,7 +148,9 @@
- if test "${with_sysroot+set}" = set; then
-   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
-   if test "${gcc_gxx_without_sysroot}"; then
--    gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
-+    if test x${with_sysroot} != x/; then
-+      gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
-+    fi
-     gcc_gxx_include_dir_add_sysroot=1
-   fi
- fi
-Index: gcc-4.8.1/gcc/configure
-===================================================================
---- gcc-4.8.1.orig/gcc/configure	2013-07-15 15:55:49.472399132 -0700
-+++ gcc-4.8.1/gcc/configure	2013-07-15 16:02:31.780406680 -0700
-@@ -3325,7 +3325,9 @@
- if test "${with_sysroot+set}" = set; then
-   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
-   if test "${gcc_gxx_without_sysroot}"; then
--    gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
-+    if test x${with_sysroot} != x/; then
-+      gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
-+    fi
-     gcc_gxx_include_dir_add_sysroot=1
-   fi
- fi
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0041-libtool-avoid-libdir.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0041-libtool-avoid-libdir.patch
deleted file mode 100644
index 2dd9610..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0041-libtool-avoid-libdir.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Avoid using libdir from .la which usually points to a host path
-
-Upstream-Status: Inappropriate [embedded specific]
-Signed-off-by: Jonathan Liu <net147@gmail.com>
-
-diff --git a/ltmain.sh b/ltmain.sh
-index a03433f..1902a90 100644
---- a/ltmain.sh
-+++ b/ltmain.sh
-@@ -5628,6 +5628,9 @@ func_mode_link ()
- 	    absdir="$abs_ladir"
- 	    libdir="$abs_ladir"
- 	  else
-+	    # Instead of using libdir from .la which usually points to a host path,
-+	    # use the path the .la is contained in.
-+	    libdir="$abs_ladir"
- 	    dir="$libdir"
- 	    absdir="$libdir"
- 	  fi
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0043-cpp.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0043-cpp.patch
deleted file mode 100644
index eaf8646..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0043-cpp.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-The OE environment sets and exports CPP as being the target gcc. When building 
-gcc-cross-canadian for a mingw targetted sdk, the following can be found in
-build.x86_64-pokysdk-mingw32.i586-poky-linux/build-x86_64-linux/libiberty/config.log:
-
-configure:3641: checking for _FILE_OFFSET_BITS value needed for large files
-configure:3666: gcc  -c -isystem/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe  conftest.c >&5
-configure:3666: $? = 0
-configure:3698: result: no
-configure:3786: checking how to run the C preprocessor
-configure:3856: result: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32
-configure:3876: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32  conftest.c
-configure:3876: $? = 0
-
-Note this is a *build* target (in build-x86_64-linux) so it should be using 
-the host "gcc", not x86_64-pokysdk-mingw32-gcc. Since the mingw32 headers are 
-very different, using the wrong cpp is a real problem. It is leaking into 
-configure through the CPP variable. Ultimately this leads to build failures 
-related to not being able to include a process.h file for pem-unix.c.
-
-The fix is to ensure we export a sane CPP value into the build environment when
-using build targets. We could define a CPP_FOR_BUILD value which may be the version
-which needs to be upstreamed but for now, this fix is good enough to avoid the 
-problem.
-
-RP 22/08/2013
-
-Upstream-Status: Pending
-
-Index: gcc-4.8.1/Makefile.in
-===================================================================
---- gcc-4.8.1.orig/Makefile.in	2013-03-30 11:25:03.000000000 +0000
-+++ gcc-4.8.1/Makefile.in	2013-08-13 12:03:17.151988882 +0000
-@@ -149,6 +149,7 @@
- 	AR="$(AR_FOR_BUILD)"; export AR; \
- 	AS="$(AS_FOR_BUILD)"; export AS; \
- 	CC="$(CC_FOR_BUILD)"; export CC; \
-+	CPP="$(CC_FOR_BUILD) -E"; export CPP; \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
- 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0044-gengtypes.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0044-gengtypes.patch
deleted file mode 100644
index e38761d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0044-gengtypes.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-gengtype is generated for both the build system and the target. -DGENERATOR_FILE
-was added in the patch http://gcc.gnu.org/ml/gcc-patches/2012-07/msg00273.html
-and was applied to both versions of gengtype.
-
-Unfortunately the presence of this flag triggers the build configuration (bconfig.h) 
-to be included for the target build of gengtype. Compiling gengtype with the target 
-compiler and bconfig.h can result in errors if the build and target systems are 
-dissimilar. An example case this fails is cross compiling gcc on linux for a darwin 
-target system:
-
-In file included from /media/build1/poky/build/tmp/work-shared/gcc-4.8.1-r0/gcc-4.8.1/gcc/gengtype-parse.c:25:0:
-| /media/build1/poky/build/tmp/work-shared/gcc-4.8.1-r0/gcc-4.8.1/gcc/gengtype-parse.c: In function 'void parse_error(const char*, ...)':
-| /media/build1/poky/build/tmp/work-shared/gcc-4.8.1-r0/gcc-4.8.1/gcc/system.h:93:53: error: 'fputc_unlocked' was not declared in this scope
-|  #  define fputc(C, Stream) fputc_unlocked (C, Stream)
-
-which occurs since auto-build.h and auto-host.h have differnet values of
-HAVE_FPUTC_UNLOCKED:
-
-#define HAVE_FPUTC_UNLOCKED 1
-/* #undef HAVE_FPUTS_UNLOCKED */
-
-The obvious fix is to only include the flag on build/ targets which this patch does, however 
-this also leads to compile errors due to const_tree being undefined but used in double_int.h
-
-I added a GENERATOR_FILE2 flag to workaround those in the 
-target case and allow the build to succeed.
-
-Only the build/gengtypes should have the -DGENERATOR_FILE 
-
-RP 22/8/2013
-
-Upstream-Status: Pending
-
-Index: gcc-4.8.1/gcc/Makefile.in
-===================================================================
---- gcc-4.8.1.orig/gcc/Makefile.in	2013-08-19 11:40:36.844014424 +0000
-+++ gcc-4.8.1/gcc/Makefile.in	2013-08-19 11:40:37.784014402 +0000
-@@ -3903,27 +3903,29 @@
- 
- gengtype-lex.o build/gengtype-lex.o : gengtype-lex.c gengtype.h $(SYSTEM_H)
- gengtype-lex.o: $(CONFIG_H) $(BCONFIG_H)
--CFLAGS-gengtype-lex.o += -DGENERATOR_FILE
-+CFLAGS-build/gengtype-lex.o += -DGENERATOR_FILE
- build/gengtype-lex.o: $(BCONFIG_H)
- 
- gengtype-parse.o build/gengtype-parse.o : gengtype-parse.c gengtype.h \
-   $(SYSTEM_H)
- gengtype-parse.o: $(CONFIG_H)
--CFLAGS-gengtype-parse.o += -DGENERATOR_FILE
-+CFLAGS-build/gengtype-parse.o += -DGENERATOR_FILE
- build/gengtype-parse.o: $(BCONFIG_H)
- 
- gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \
-   gengtype.h errors.h double-int.h version.h $(HASHTAB_H) $(OBSTACK_H) \
-   $(XREGEX_H)
- gengtype-state.o: $(CONFIG_H)
--CFLAGS-gengtype-state.o += -DGENERATOR_FILE
-+CFLAGS-gengtype-state.o += -DGENERATOR_FILE2
-+CFLAGS-build/gengtype-state.o += -DGENERATOR_FILE
- build/gengtype-state.o: $(BCONFIG_H)
- 
- gengtype.o build/gengtype.o : gengtype.c $(SYSTEM_H) gengtype.h 	\
-   rtl.def insn-notes.def errors.h double-int.h version.h $(HASHTAB_H) \
-   $(OBSTACK_H) $(XREGEX_H)
- gengtype.o: $(CONFIG_H)
--CFLAGS-gengtype.o += -DGENERATOR_FILE
-+CFLAGS-gengtype.o += -DGENERATOR_FILE2
-+CFLAGS-build/gengtype.o += -DGENERATOR_FILE
- build/gengtype.o: $(BCONFIG_H)
- 
- build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h	\
-@@ -3988,7 +3990,7 @@
- # any system header is included.
- gengtype-lex.c : gengtype-lex.l
- 	-$(FLEX) $(FLEXFLAGS) -o$@ $< && { \
--	  echo '#include "bconfig.h"' > $@.tmp; \
-+	  echo '' > $@.tmp; \
- 	  cat $@ >> $@.tmp; \
- 	  mv $@.tmp $@; \
- 	}
-Index: gcc-4.8.1/gcc/double-int.h
-===================================================================
---- gcc-4.8.1.orig/gcc/double-int.h	2013-01-30 11:04:30.000000000 +0000
-+++ gcc-4.8.1/gcc/double-int.h	2013-08-19 11:41:51.564012719 +0000
-@@ -448,10 +448,12 @@
- 
- 
- #ifndef GENERATOR_FILE
-+#ifndef GENERATOR_FILE2
- /* Conversion to and from GMP integer representations.  */
- 
- void mpz_set_double_int (mpz_t, double_int, bool);
- double_int mpz_get_double_int (const_tree, mpz_t, bool);
- #endif
-+#endif
- 
- #endif /* DOUBLE_INT_H */
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0046-libatomic-deptracking.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0046-libatomic-deptracking.patch
deleted file mode 100644
index 6ea4f42..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0046-libatomic-deptracking.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-gcc 4.8 won't build with --disable-dependency-tracking since the *.Ppo files
-don't get created unless --enable-dependency-tracking is true.
-
-This patch ensures we only use those compiler options when its enabled.
-
-Upstream-Status: Submitted
-
-(Problem was already reported upstream, attached this patch there
-http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55930)
-
-RP 
-2012/09/22
-
-Index: gcc-4.8.1/libatomic/Makefile.am
-===================================================================
---- gcc-4.8.1.orig/libatomic/Makefile.am	2013-01-14 18:16:23.000000000 +0000
-+++ gcc-4.8.1/libatomic/Makefile.am	2013-09-22 10:38:18.904064750 +0000
-@@ -100,7 +100,8 @@
- IFUNC_DEF	= -DIFUNC_ALT=$(PAT_S)
- IFUNC_OPT	= $(word $(PAT_S),$(IFUNC_OPTIONS))
- 
--M_DEPS		= -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_TRUE@M_DEPS		= -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_FALSE@M_DEPS		= 
- M_SIZE		= -DN=$(PAT_N)
- M_IFUNC		= $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
- M_FILE		= $(PAT_BASE)_n.c
-Index: gcc-4.8.1/libatomic/Makefile.in
-===================================================================
---- gcc-4.8.1.orig/libatomic/Makefile.in	2013-05-31 09:09:26.000000000 +0000
-+++ gcc-4.8.1/libatomic/Makefile.in	2013-09-22 10:40:42.520059917 +0000
-@@ -298,7 +298,8 @@
- PAT_S = $(word 3,$(PAT_SPLIT))
- IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
- IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
--M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-+@AMDEP_FALSE@M_DEPS = 
- M_SIZE = -DN=$(PAT_N)
- M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
- M_FILE = $(PAT_BASE)_n.c
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0047-repomembug.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0047-repomembug.patch
deleted file mode 100644
index 9afd55c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0047-repomembug.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-When compiling a project using -frepo, .rpo files are written alongside
-the .o file, the symbols either have O or C against them. During final linking,
-the objects can be recompiled with some of the entries tweaked/chosen by the 
-tlink.c code (visible with TLINK_VERBOSE=3), it does this by changing O -> C
-in the .rpo files.
-
-My tests showed that init_repo (cp/repo.c) was correctly calling 
-IDENTIFIER_REPO_CHOSEN against the right identifers and setting the
-chosen bit.
-
-By the time finish_repo() or emit_repo_p() were called, the pointer returned
-by get_identifier() for the symbol marked during init_repo had changed and
-the chosen bit was no longer set. This lead to linking bugs like:
-
-collect: relinking
-collect2: error: '_ZNK6sudoku5ClearINS_8SequenceEEclERS1_' was assigned to 'board.rpo', but was not defined during recompilation, or vice versa
-
-The problem is that the garbage collection is getting called before
-finish_repo() is called and ggc_protect_identifiers is set to false 
-so the identifiers are not preserved. They are recreated but the 
-chosen bits get wiped out which is why the pointer changes and the 
-chosen bit is not set.
-
-The fix is to change ggc_protect_identifiers *after* the finish_repo 
-calls are made.
-
-Reproduction is tricky since you need to trigger the garbage collector at
-just the right moment.
-
-RP 2013/10/9
-
-[YOCTO #5133]
-
-Upstream-Status: Pending
-
-Index: gcc-4.8.1/gcc/toplev.c
-===================================================================
---- gcc-4.8.1.orig/gcc/toplev.c	2013-03-28 08:29:51.000000000 +0000
-+++ gcc-4.8.1/gcc/toplev.c	2013-10-09 20:27:17.089228023 +0000
-@@ -551,11 +551,11 @@
-   if (flag_syntax_only || flag_wpa)
-     return;
- 
--  ggc_protect_identifiers = false;
--
-   /* This must also call finalize_compilation_unit.  */
-   lang_hooks.decls.final_write_globals ();
- 
-+  ggc_protect_identifiers = false;
-+
-   if (seen_error ())
-     return;
- 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
deleted file mode 100644
index b98f8ff..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 9e0e19eac2562f73858602fe26e2044eb8b20c47 Mon Sep 17 00:00:00 2001
-From: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
-Date: Wed, 5 Feb 2014 16:52:31 +0200
-Subject: [PATCH] Enable SPE & AltiVec generation on powepc*linux target
-
-When is configured with --target=powerpc-linux, the resulting GCC will 
-not be able to generate code for SPE targets (e500v1/v2).
-GCC configured with --target=powerpc-linuxspe will not be able to
-generate AltiVec instructions (for e6500).
-This patch modifies the configured file such that SPE or AltiVec code
-can be generated when gcc is configured with --target=powerpc-linux.
-The ABI and speciffic instructions can be selected through the
-"-mabi=spe or -mabi=altivec" and the "-mspe or -maltivec" parameters.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
----
- gcc/config.gcc |    7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/gcc/config.gcc b/gcc/config.gcc
-index cb7a94e..d392c2b 100644
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -2068,7 +2068,12 @@ powerpc-*-rtems*)
- 	tmake_file="rs6000/t-fprules rs6000/t-rtems t-rtems rs6000/t-ppccomm"
- 	;;
- powerpc*-*-linux*)
--	tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h"
-+	case ${target} in
-+	    powerpc*-*-linux*spe* | powerpc*-*-linux*altivec*)
-+		tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h" ;;
-+	    *)
-+		tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h rs6000/linuxaltivec.h rs6000/linuxspe.h rs6000/e500.h" ;;
-+	esac
- 	extra_options="${extra_options} rs6000/sysv4.opt"
- 	tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
- 	case ${target} in
--- 
-1.7.9.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0050-Revert-Use-dbx_reg_number-for-spanning-registers.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0050-Revert-Use-dbx_reg_number-for-spanning-registers.patch
deleted file mode 100644
index aead6f6..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0050-Revert-Use-dbx_reg_number-for-spanning-registers.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-Upstream-Status: Pending
-
-From cb9b1c041b634a4c128896e3d3eed4082608c797 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 3 May 2014 19:25:17 -0700
-Subject: [PATCH] Revert "2013-05-21  Christian Bruel 
- <christian.bruel@st.com>"
-
-This reverts commit 3983036a8b6b2710c57777194f21507819a73553.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Conflicts:
-	gcc/ChangeLog
----
- gcc/ChangeLog   | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- gcc/dwarf2out.c |  33 +++++----
- 2 files changed, 234 insertions(+), 18 deletions(-)
-
-diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
-index 1272326..6ac2b28 100644
---- a/gcc/dwarf2out.c
-+++ b/gcc/dwarf2out.c
-@@ -10870,27 +10870,25 @@ static dw_loc_descr_ref
- multiple_reg_loc_descriptor (rtx rtl, rtx regs,
- 			     enum var_init_status initialized)
- {
--  int size, i;
-+  int nregs, size, i;
-+  unsigned reg;
-   dw_loc_descr_ref loc_result = NULL;
- 
--  /* Simple, contiguous registers.  */
--  if (regs == NULL_RTX)
--    {
--      unsigned reg = REGNO (rtl);
--      int nregs;
--
-+  reg = REGNO (rtl);
- #ifdef LEAF_REG_REMAP
--      if (crtl->uses_only_leaf_regs)
--	{
--	  int leaf_reg = LEAF_REG_REMAP (reg);
--	  if (leaf_reg != -1)
--	    reg = (unsigned) leaf_reg;
--	}
-+  if (crtl->uses_only_leaf_regs)
-+    {
-+      int leaf_reg = LEAF_REG_REMAP (reg);
-+      if (leaf_reg != -1)
-+	reg = (unsigned) leaf_reg;
-+    }
- #endif
-+  gcc_assert ((unsigned) DBX_REGISTER_NUMBER (reg) == dbx_reg_number (rtl));
-+  nregs = hard_regno_nregs[REGNO (rtl)][GET_MODE (rtl)];
- 
--      gcc_assert ((unsigned) DBX_REGISTER_NUMBER (reg) == dbx_reg_number (rtl));
--      nregs = hard_regno_nregs[REGNO (rtl)][GET_MODE (rtl)];
--
-+  /* Simple, contiguous registers.  */
-+  if (regs == NULL_RTX)
-+    {
-       size = GET_MODE_SIZE (GET_MODE (rtl)) / nregs;
- 
-       loc_result = NULL;
-@@ -10918,9 +10916,10 @@ multiple_reg_loc_descriptor (rtx rtl, rtx regs,
-     {
-       dw_loc_descr_ref t;
- 
--      t = one_reg_loc_descriptor (dbx_reg_number (XVECEXP (regs, 0, i)),
-+      t = one_reg_loc_descriptor (REGNO (XVECEXP (regs, 0, i)),
- 				  VAR_INIT_STATUS_INITIALIZED);
-       add_loc_descr (&loc_result, t);
-+      size = GET_MODE_SIZE (GET_MODE (XVECEXP (regs, 0, 0)));
-       add_loc_descr_op_piece (&loc_result, size);
-     }
- 
--- 
-1.9.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0051-eabispe.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0051-eabispe.patch
deleted file mode 100644
index 55e3890..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0051-eabispe.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Upstream-Status: Pending
-
-Taken from http://gcc.gnu.org/ml/gcc-patches/2014-04/msg02064.html
-
-2014-04-30  Cesar Philippidis  <cesar@codesourcery.com>
-
-	gcc/
-	* dwarf2cfi.c (dwf_regno): Don't assert reg is a pseudo
-	register.
-	
-
-diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
-index 4180890..40ef0e2 100644
---- a/gcc/dwarf2cfi.c
-+++ b/gcc/dwarf2cfi.c
-@@ -906,7 +906,6 @@ notice_eh_throw (rtx insn)
- static inline unsigned
- dwf_regno (const_rtx reg)
- {
--  gcc_assert (REGNO (reg) < FIRST_PSEUDO_REGISTER);
-   return DWARF_FRAME_REGNUM (REGNO (reg));
- }
- 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0052-Add-target-hook-to-override-DWARF2-frame-register-si.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0052-Add-target-hook-to-override-DWARF2-frame-register-si.patch
deleted file mode 100644
index f6958b3..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0052-Add-target-hook-to-override-DWARF2-frame-register-si.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From d626297e87e19251a284ea1e9360e831b48999ca Mon Sep 17 00:00:00 2001
-From: mpf <mpf@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Thu, 4 Sep 2014 08:32:05 +0000
-Subject: [PATCH] Add target hook to override DWARF2 frame register size
-
-gcc/
-
-	* target.def (TARGET_DWARF_FRAME_REG_MODE): New target hook.
-	* targhooks.c (default_dwarf_frame_reg_mode): New function.
-	* targhooks.h (default_dwarf_frame_reg_mode): New prototype.
-	* doc/tm.texi.in (TARGET_DWARF_FRAME_REG_MODE): Document.
-	* doc/tm.texi: Regenerate.
-	* dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Abstract mode
-	selection logic to default_dwarf_frame_reg_mode.
-
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214898 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [gcc 5.0]
-
----
- gcc/ChangeLog      | 10 ++++++++++
- gcc/doc/tm.texi    |  7 +++++++
- gcc/doc/tm.texi.in |  2 ++
- gcc/dwarf2cfi.c    |  4 +---
- gcc/target.def     | 11 +++++++++++
- gcc/targhooks.c    | 13 +++++++++++++
- gcc/targhooks.h    |  1 +
- 7 files changed, 45 insertions(+), 3 deletions(-)
-
-Index: gcc-4.9.2/gcc/doc/tm.texi
-===================================================================
---- gcc-4.9.2.orig/gcc/doc/tm.texi
-+++ gcc-4.9.2/gcc/doc/tm.texi
-@@ -9017,6 +9017,13 @@ register in Dwarf.  Otherwise, this hook
- If not defined, the default is to return @code{NULL_RTX}.
- @end deftypefn
- 
-+@deftypefn {Target Hook} {enum machine_mode} TARGET_DWARF_FRAME_REG_MODE (int @var{regno})
-+Given a register, this hook should return the mode which the
-+corresponding Dwarf frame register should have.  This is normally
-+used to return a smaller mode than the raw mode to prevent call
-+clobbered parts of a register altering the frame register size
-+@end deftypefn
-+
- @deftypefn {Target Hook} void TARGET_INIT_DWARF_REG_SIZES_EXTRA (tree @var{address})
- If some registers are represented in Dwarf-2 unwind information in
- multiple pieces, define this hook to fill in information about the
-Index: gcc-4.9.2/gcc/doc/tm.texi.in
-===================================================================
---- gcc-4.9.2.orig/gcc/doc/tm.texi.in
-+++ gcc-4.9.2/gcc/doc/tm.texi.in
-@@ -6745,6 +6745,8 @@ the target supports DWARF 2 frame unwind
- 
- @hook TARGET_DWARF_REGISTER_SPAN
- 
-+@hook TARGET_DWARF_FRAME_REG_MODE
-+
- @hook TARGET_INIT_DWARF_REG_SIZES_EXTRA
- 
- @hook TARGET_ASM_TTYPE
-Index: gcc-4.9.2/gcc/dwarf2cfi.c
-===================================================================
---- gcc-4.9.2.orig/gcc/dwarf2cfi.c
-+++ gcc-4.9.2/gcc/dwarf2cfi.c
-@@ -271,11 +271,9 @@ expand_builtin_init_dwarf_reg_sizes (tre
-       if (rnum < DWARF_FRAME_REGISTERS)
- 	{
- 	  HOST_WIDE_INT offset = rnum * GET_MODE_SIZE (mode);
--	  enum machine_mode save_mode = reg_raw_mode[i];
- 	  HOST_WIDE_INT size;
-+	  enum machine_mode save_mode = targetm.dwarf_frame_reg_mode (i);
- 
--	  if (HARD_REGNO_CALL_PART_CLOBBERED (i, save_mode))
--	    save_mode = choose_hard_reg_mode (i, 1, true);
- 	  if (dnum == DWARF_FRAME_RETURN_COLUMN)
- 	    {
- 	      if (save_mode == VOIDmode)
-Index: gcc-4.9.2/gcc/target.def
-===================================================================
---- gcc-4.9.2.orig/gcc/target.def
-+++ gcc-4.9.2/gcc/target.def
-@@ -3218,6 +3218,17 @@ If not defined, the default is to return
-  rtx, (rtx reg),
-  hook_rtx_rtx_null)
- 
-+/* Given a register return the mode of the corresponding DWARF frame
-+   register.  */
-+DEFHOOK
-+(dwarf_frame_reg_mode,
-+ "Given a register, this hook should return the mode which the\n\
-+corresponding Dwarf frame register should have.  This is normally\n\
-+used to return a smaller mode than the raw mode to prevent call\n\
-+clobbered parts of a register altering the frame register size",
-+ enum machine_mode, (int regno),
-+ default_dwarf_frame_reg_mode)
-+
- /* If expand_builtin_init_dwarf_reg_sizes needs to fill in table
-    entries not corresponding directly to registers below
-    FIRST_PSEUDO_REGISTER, this hook should generate the necessary
-Index: gcc-4.9.2/gcc/targhooks.c
-===================================================================
---- gcc-4.9.2.orig/gcc/targhooks.c
-+++ gcc-4.9.2/gcc/targhooks.c
-@@ -1438,6 +1438,19 @@ default_debug_unwind_info (void)
-   return UI_NONE;
- }
- 
-+/* Determine the correct mode for a Dwarf frame register that represents
-+   register REGNO.  */
-+
-+enum machine_mode
-+default_dwarf_frame_reg_mode (int regno)
-+{
-+  enum machine_mode save_mode = reg_raw_mode[regno];
-+
-+  if (HARD_REGNO_CALL_PART_CLOBBERED (regno, save_mode))
-+    save_mode = choose_hard_reg_mode (regno, 1, true);
-+  return save_mode;
-+}
-+
- /* To be used by targets where reg_raw_mode doesn't return the right
-    mode for registers used in apply_builtin_return and apply_builtin_arg.  */
- 
-Index: gcc-4.9.2/gcc/targhooks.h
-===================================================================
---- gcc-4.9.2.orig/gcc/targhooks.h
-+++ gcc-4.9.2/gcc/targhooks.h
-@@ -194,6 +194,7 @@ extern int default_label_align_max_skip
- extern int default_jump_align_max_skip (rtx);
- extern section * default_function_section(tree decl, enum node_frequency freq,
- 					  bool startup, bool exit);
-+extern enum machine_mode default_dwarf_frame_reg_mode (int);
- extern enum machine_mode default_get_reg_raw_mode (int);
- 
- extern void *default_get_pch_validity (size_t *);
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch
deleted file mode 100644
index 23b445c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From a22a222c8f9299f6c07a0274388ade7d4ab8c28d Mon Sep 17 00:00:00 2001
-From: Paul Gortmaker <paul.gortmaker@windriver.com>
-Date: Fri, 20 Jun 2014 16:41:08 -0400
-Subject: [PATCH] gcc: fix segfault from calling free on non-malloc'd area
-
-We see the following on a 32bit gcc installed on 64 bit host:
-
-  Reading symbols from ./i586-pokymllib32-linux-gcc...done.
-  (gdb) run
-  Starting program: x86-pokymllib32-linux/lib32-gcc/4.9.0-r0/image/usr/bin/i586-pokymllib32-linux-gcc
-
-  Program received signal SIGSEGV, Segmentation fault.
-  0xf7e957e0 in free () from /lib/i386-linux-gnu/libc.so.6
-  (gdb) bt
-  #0  0xf7e957e0 in free () from /lib/i386-linux-gnu/libc.so.6
-  #1  0x0804b73c in set_multilib_dir () at gcc-4.9.0/gcc/gcc.c:7827
-  #2  main (argc=1, argv=0xffffd504) at gcc-4.9.0/gcc/gcc.c:6688
-  (gdb)
-
-The problem arises because we conditionally assign the pointer we
-eventually free, and the conditional may assign the pointer to the
-non-malloc'd internal string "." which fails when we free it here:
-
-   if (multilib_dir == NULL && multilib_os_dir != NULL
-       && strcmp (multilib_os_dir, ".") == 0)
-     {
-       free (CONST_CAST (char *, multilib_os_dir));
-       ...
-
-As suggested by Jakub, ensure the "." case is also malloc'd via
-xstrdup() and hence the pointer for the "." case can be freed.
-
-Cc: Jakub Jelinek <jakub@redhat.com>
-Cc: Jeff Law <law@redhat.com>
-Cc: Matthias Klose <doko@ubuntu.com>
-CC: Tobias Burnus <burnus@net-b.de>
-Upstream-Status: Accepted [ https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02069.html ]
-Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 9ac18e60d801..168acf7eb0c9 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -7790,10 +7790,15 @@ set_multilib_dir (void)
- 		q2++;
- 	      if (*q2 == ':')
- 		ml_end = q2;
--	      new_multilib_os_dir = XNEWVEC (char, ml_end - q);
--	      memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1);
--	      new_multilib_os_dir[ml_end - q - 1] = '\0';
--	      multilib_os_dir = *new_multilib_os_dir ? new_multilib_os_dir : ".";
-+	      if (ml_end - q == 1)
-+		multilib_os_dir = xstrdup (".");
-+	      else
-+		{
-+		  new_multilib_os_dir = XNEWVEC (char, ml_end - q);
-+		  memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1);
-+		  new_multilib_os_dir[ml_end - q - 1] = '\0';
-+		  multilib_os_dir = new_multilib_os_dir;
-+		}
- 
- 	      if (q2 < end && *q2 == ':')
- 		{
--- 
-1.9.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0054-gcc-Makefile.in-fix-parallel-building-failure.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0054-gcc-Makefile.in-fix-parallel-building-failure.patch
deleted file mode 100644
index 7e8efa1..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0054-gcc-Makefile.in-fix-parallel-building-failure.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-gcc/Makefile.in: fix parallel building failure
-
-The gcc-ar.o, gcc-nm.o, gcc-ranlib.o and errors.o included
-config.h which was a generated file. But no explicity rule
-to clarify the dependency. There was potential building
-failure while parallel make.
-
-For gcc-ar.o, gcc-nm.o and gcc-ranlib.o, they were compiled from one C
-source file gcc-ar.c, we add them to ALL_HOST_BACKEND_OBJS, so the
-'$(ALL_HOST_OBJS) : | $(generated_files)' rule could work for these
-objects.
-
-For errors.o, it is part of gengtype, and the gengtype generator program
-is special: Two versions are built. One is for the build machine, and one
-is for the host. We refered what gengtype-parse.o did (which also is part
-of gengtype).
-
-[GCC #61899]
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61899
-
-Upstream-Status: Submitted [gcc-patches@gcc.gnu.org]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/Makefile.in | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 6475cba..56e50bb 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -1481,13 +1481,16 @@ OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \
- 	opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
- 	hash-table.o file-find.o
- 
-+# Objects compiled from one C source file gcc-ar.c
-+OBJS-gcc-ar = gcc-ar.o gcc-nm.o gcc-ranlib.o
-+
- # This lists all host objects for the front ends.
- ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
- 
- ALL_HOST_BACKEND_OBJS = $(GCC_OBJS) $(OBJS) $(OBJS-libcommon) \
-   $(OBJS-libcommon-target) @TREEBROWSER@ main.o c-family/cppspec.o \
-   $(COLLECT2_OBJS) $(EXTRA_GCC_OBJS) $(GCOV_OBJS) $(GCOV_DUMP_OBJS) \
--  lto-wrapper.o
-+  lto-wrapper.o $(OBJS-gcc-ar)
- 
- # This lists all host object files, whether they are included in this
- # compilation or not.
-@@ -2437,6 +2440,8 @@ gengtype-parse.o: $(CONFIG_H)
- CFLAGS-build/gengtype-parse.o += -DGENERATOR_FILE
- build/gengtype-parse.o: $(BCONFIG_H)
- 
-+errors.o : $(CONFIG_H)
-+
- gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \
-   gengtype.h errors.h double-int.h version.h $(HASHTAB_H) $(OBSTACK_H) \
-   $(XREGEX_H)
--- 
-1.8.1.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0055-dwarf-reg-processing-helper.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0055-dwarf-reg-processing-helper.patch
deleted file mode 100644
index 557dab0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0055-dwarf-reg-processing-helper.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 4fd39f1329379e00f958394adde6be96f0caf21f Mon Sep 17 00:00:00 2001
-From: hainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Fri, 5 Dec 2014 16:53:22 +0000
-Subject: [PATCH] 2014-12-05  Olivier Hainque  <hainque@adacore.com>
-
-        * dwarf2cfi.c (init_one_dwarf_reg_size): New helper, processing
-        one particular reg for expand_builtin_init_dwarf_reg_sizes.
-        (expand_builtin_init_dwarf_reg_sizes): Rework to use helper and
-        account for dwarf register spans.
-
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218428 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [gcc 5.0]
-
----
- gcc/ChangeLog   |  7 +++++
- gcc/dwarf2cfi.c | 98 +++++++++++++++++++++++++++++++++++++++++++++------------
- 2 files changed, 85 insertions(+), 20 deletions(-)
-
-Index: gcc-4.9.2/gcc/dwarf2cfi.c
-===================================================================
---- gcc-4.9.2.orig/gcc/dwarf2cfi.c
-+++ gcc-4.9.2/gcc/dwarf2cfi.c
-@@ -252,7 +252,59 @@ init_return_column_size (enum machine_mo
- 		  gen_int_mode (size, mode));
- }
- 
--/* Generate code to initialize the register size table.  */
-+/* Datastructure used by expand_builtin_init_dwarf_reg_sizes and
-+   init_one_dwarf_reg_size to communicate on what has been done by the
-+   latter.  */
-+
-+typedef struct
-+{
-+  /* Whether the dwarf return column was initialized.  */
-+  bool wrote_return_column;
-+
-+  /* For each hard register REGNO, whether init_one_dwarf_reg_size
-+     was given REGNO to process already.  */
-+  bool processed_regno [FIRST_PSEUDO_REGISTER];
-+
-+} init_one_dwarf_reg_state;
-+
-+/* Helper for expand_builtin_init_dwarf_reg_sizes.  Generate code to
-+   initialize the dwarf register size table entry corresponding to register
-+   REGNO in REGMODE.  TABLE is the table base address, SLOTMODE is the mode to
-+   use for the size entry to initialize, and INIT_STATE is the communication
-+   datastructure conveying what we're doing to our caller.  */
-+
-+static
-+void init_one_dwarf_reg_size (int regno, machine_mode regmode,
-+			      rtx table, machine_mode slotmode,
-+			      init_one_dwarf_reg_state *init_state)
-+{
-+  const unsigned int dnum = DWARF_FRAME_REGNUM (regno);
-+  const unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1);
-+
-+  const HOST_WIDE_INT slotoffset = rnum * GET_MODE_SIZE (slotmode);
-+  const HOST_WIDE_INT regsize = GET_MODE_SIZE (regmode);
-+
-+  init_state->processed_regno[regno] = true;
-+
-+  if (rnum >= DWARF_FRAME_REGISTERS)
-+    return;
-+
-+  if (dnum == DWARF_FRAME_RETURN_COLUMN)
-+    {
-+      if (regmode == VOIDmode)
-+	return;
-+      init_state->wrote_return_column = true;
-+    }
-+
-+  if (slotoffset < 0)
-+    return;
-+
-+  emit_move_insn (adjust_address (table, slotmode, slotoffset),
-+		  gen_int_mode (regsize, slotmode));
-+}
-+
-+/* Generate code to initialize the dwarf register size table located
-+   at the provided ADDRESS.  */
- 
- void
- expand_builtin_init_dwarf_reg_sizes (tree address)
-@@ -261,35 +313,40 @@ expand_builtin_init_dwarf_reg_sizes (tre
-   enum machine_mode mode = TYPE_MODE (char_type_node);
-   rtx addr = expand_normal (address);
-   rtx mem = gen_rtx_MEM (BLKmode, addr);
--  bool wrote_return_column = false;
-+
-+  init_one_dwarf_reg_state init_state;
-+
-+  memset ((char *)&init_state, 0, sizeof (init_state));
- 
-   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-     {
--      unsigned int dnum = DWARF_FRAME_REGNUM (i);
--      unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1);
--
--      if (rnum < DWARF_FRAME_REGISTERS)
--	{
--	  HOST_WIDE_INT offset = rnum * GET_MODE_SIZE (mode);
--	  HOST_WIDE_INT size;
--	  enum machine_mode save_mode = targetm.dwarf_frame_reg_mode (i);
-+      machine_mode save_mode;
-+      rtx span;
- 
--	  if (dnum == DWARF_FRAME_RETURN_COLUMN)
-+      /* No point in processing a register multiple times.  This could happen
-+        with register spans, e.g. when a reg is first processed as a piece of
-+        a span, then as a register on its own later on.  */
-+
-+      if (init_state.processed_regno[i])
-+       continue;
-+
-+      save_mode = targetm.dwarf_frame_reg_mode (i);
-+      span = targetm.dwarf_register_span (gen_rtx_REG (save_mode, i));
-+      if (!span)
-+       init_one_dwarf_reg_size (i, save_mode, mem, mode, &init_state);
-+      else
-+       {
-+         for (int si = 0; si < XVECLEN (span, 0); si++)
- 	    {
--	      if (save_mode == VOIDmode)
--		continue;
--	      wrote_return_column = true;
--	    }
--	  size = GET_MODE_SIZE (save_mode);
--	  if (offset < 0)
--	    continue;
-+             rtx reg = XVECEXP (span, 0, si);
-+             init_one_dwarf_reg_size
-+               (REGNO (reg), GET_MODE (reg), mem, mode, &init_state);
-+           }
- 
--	  emit_move_insn (adjust_address (mem, mode, offset),
--			  gen_int_mode (size, mode));
- 	}
-     }
- 
--  if (!wrote_return_column)
-+  if (!init_state.wrote_return_column)
-     init_return_column_size (mode, mem, DWARF_FRAME_RETURN_COLUMN);
- 
- #ifdef DWARF_ALT_FRAME_RETURN_COLUMN
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0056-define-default-cfa-register-mapping.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0056-define-default-cfa-register-mapping.patch
deleted file mode 100644
index 3b6c94c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0056-define-default-cfa-register-mapping.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From c0235a33de8c4f78cce35b2a8c2035c83fe1bd14 Mon Sep 17 00:00:00 2001
-From: hainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Fri, 5 Dec 2014 17:01:42 +0000
-Subject: [PATCH] 2014-12-05  Olivier Hainque  <hainque@adacore.com>
-
-        gcc/
-        * defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default.
-        * dwarf2cfi.c (init_one_dwarf_reg_size): Honor
-        DWARF_REG_TO_UNWIND_COLUMN.
-
-        libgcc/
-        * unwind-dw2.c (DWARF_REG_TO_UNWIND_COLUMN): Remove default def,
-        now provided by defaults.h.
-
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218429 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [gcc 5.0]
-
----
- gcc/ChangeLog       | 6 ++++++
- gcc/defaults.h      | 5 +++++
- gcc/dwarf2cfi.c     | 3 ++-
- libgcc/ChangeLog    | 5 +++++
- libgcc/unwind-dw2.c | 4 ----
- 5 files changed, 18 insertions(+), 5 deletions(-)
-
-Index: gcc-4.9.2/gcc/defaults.h
-===================================================================
---- gcc-4.9.2.orig/gcc/defaults.h
-+++ gcc-4.9.2/gcc/defaults.h
-@@ -438,6 +438,11 @@ see the files COPYING3 and COPYING.RUNTI
- #define DWARF_FRAME_REGNUM(REG) DBX_REGISTER_NUMBER (REG)
- #endif
- 
-+/* The mapping from dwarf CFA reg number to internal dwarf reg numbers.  */
-+#ifndef DWARF_REG_TO_UNWIND_COLUMN
-+#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
-+#endif
-+
- /* Map register numbers held in the call frame info that gcc has
-    collected using DWARF_FRAME_REGNUM to those that should be output in
-    .debug_frame and .eh_frame.  */
-Index: gcc-4.9.2/gcc/dwarf2cfi.c
-===================================================================
---- gcc-4.9.2.orig/gcc/dwarf2cfi.c
-+++ gcc-4.9.2/gcc/dwarf2cfi.c
-@@ -280,8 +280,9 @@ void init_one_dwarf_reg_size (int regno,
- {
-   const unsigned int dnum = DWARF_FRAME_REGNUM (regno);
-   const unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1);
-+  const unsigned int dcol = DWARF_REG_TO_UNWIND_COLUMN (rnum);
- 
--  const HOST_WIDE_INT slotoffset = rnum * GET_MODE_SIZE (slotmode);
-+  const HOST_WIDE_INT slotoffset = dcol * GET_MODE_SIZE (slotmode);
-   const HOST_WIDE_INT regsize = GET_MODE_SIZE (regmode);
- 
-   init_state->processed_regno[regno] = true;
-Index: gcc-4.9.2/libgcc/unwind-dw2.c
-===================================================================
---- gcc-4.9.2.orig/libgcc/unwind-dw2.c
-+++ gcc-4.9.2/libgcc/unwind-dw2.c
-@@ -55,10 +55,6 @@
- #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS
- #endif
- 
--#ifndef DWARF_REG_TO_UNWIND_COLUMN
--#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
--#endif
--
- /* ??? For the public function interfaces, we tend to gcc_assert that the
-    column numbers are in range.  For the dwarf2 unwind info this does happen,
-    although so far in a case that doesn't actually matter.
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0057-aarch64-config.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0057-aarch64-config.patch
deleted file mode 100644
index f295596..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0057-aarch64-config.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Disable the MULTILIB_OSDIRNAMES and other multilib options.
-
-Hard coding the MULTILIB_OSDIRNAMES with ../lib64 is causing problems on
-systems where the libdir is NOT set to /lib64.  This is allowed by the ABI, as
-long as the dynamic loader is present in /lib.
-
-We simply want to use the default rules in gcc to find and configure the 
-normal libdir.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-Index: gcc-4.9.1/gcc/config/aarch64/t-aarch64-linux
-===================================================================
---- gcc-4.9.1.orig/gcc/config/aarch64/t-aarch64-linux
-+++ gcc-4.9.1/gcc/config/aarch64/t-aarch64-linux
-@@ -21,11 +21,11 @@
- LIB1ASMSRC   = aarch64/lib1funcs.asm
- LIB1ASMFUNCS = _aarch64_sync_cache_range
- 
--AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
--MULTILIB_OSDIRNAMES = .=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
--MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
-+#AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
-+#MULTILIB_OSDIRNAMES = .=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
-+#MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
- 
- # Disable the multilib for linux-gnu targets for the time being; focus
- # on the baremetal targets.
--MULTILIB_OPTIONS    =
--MULTILIB_DIRNAMES   =
-+#MULTILIB_OPTIONS    =
-+#MULTILIB_DIRNAMES   =
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0058-gcc-r212171.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0058-gcc-r212171.patch
deleted file mode 100644
index d442ba8..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0058-gcc-r212171.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From ca03cf1b133d66eb978c68f6dbc345e9aabcba88 Mon Sep 17 00:00:00 2001
-From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Mon, 30 Jun 2014 19:30:52 +0000
-Subject: [PATCH] r212171
-
-* except.c (emit_note_eh_region_end): New helper
- function. 	(convert_to_eh_region_ranges): Use
- emit_note_eh_region_end to 	emit EH_REGION_END note. 
- * jump.c (cleanup_barriers): Do not split a call and its 
- corresponding CALL_ARG_LOCATION note.
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212171 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Upstream-Status: Backport [https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=212171]
-Signed-off-by: Baoshan Pang <baoshan.pang@windriver.com>
----
- gcc/except.c |   23 ++++++++++++++++++-----
- gcc/jump.c   |   19 +++++++++++++++----
- 2 files changed, 33 insertions(+), 9 deletions(-)
-
-diff --git a/gcc/except.c b/gcc/except.c
-index dc5c1d2..7ac114f 100644
---- a/gcc/except.c
-+++ b/gcc/except.c
-@@ -2466,6 +2466,20 @@ add_call_site (rtx landing_pad, int action, int section)
-   return call_site_base + crtl->eh.call_site_record_v[section]->length () - 1;
- }
- 
-+static rtx
-+emit_note_eh_region_end (rtx insn)
-+{
-+  rtx next = NEXT_INSN (insn);
-+
-+  /* Make sure we do not split a call and its corresponding
-+     CALL_ARG_LOCATION note.  */
-+  if (next && NOTE_P (next)
-+      && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)
-+    insn = next;
-+
-+  return emit_note_after (NOTE_INSN_EH_REGION_END, insn);
-+}
-+
- /* Turn REG_EH_REGION notes back into NOTE_INSN_EH_REGION notes.
-    The new note numbers will not refer to region numbers, but
-    instead to call site entries.  */
-@@ -2544,8 +2558,8 @@ convert_to_eh_region_ranges (void)
- 		note = emit_note_before (NOTE_INSN_EH_REGION_BEG,
- 					 first_no_action_insn_before_switch);
- 		NOTE_EH_HANDLER (note) = call_site;
--		note = emit_note_after (NOTE_INSN_EH_REGION_END,
--					last_no_action_insn_before_switch);
-+		note
-+		  = emit_note_eh_region_end (last_no_action_insn_before_switch);
- 		NOTE_EH_HANDLER (note) = call_site;
- 		gcc_assert (last_action != -3
- 			    || (last_action_insn
-@@ -2569,8 +2583,7 @@ convert_to_eh_region_ranges (void)
- 		    first_no_action_insn = NULL_RTX;
- 		  }
- 
--		note = emit_note_after (NOTE_INSN_EH_REGION_END,
--					last_action_insn);
-+		note = emit_note_eh_region_end (last_action_insn);
- 		NOTE_EH_HANDLER (note) = call_site;
- 	      }
- 
-@@ -2617,7 +2630,7 @@ convert_to_eh_region_ranges (void)
- 
-   if (last_action >= -1 && ! first_no_action_insn)
-     {
--      note = emit_note_after (NOTE_INSN_EH_REGION_END, last_action_insn);
-+      note = emit_note_eh_region_end (last_action_insn);
-       NOTE_EH_HANDLER (note) = call_site;
-     }
- 
-diff --git a/gcc/jump.c b/gcc/jump.c
-index 9418f65..a5e5f52 100644
---- a/gcc/jump.c
-+++ b/gcc/jump.c
-@@ -121,15 +121,26 @@ rebuild_jump_labels_chain (rtx chain)
- static unsigned int
- cleanup_barriers (void)
- {
--  rtx insn, next, prev;
--  for (insn = get_insns (); insn; insn = next)
-+  rtx insn;
-+  for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
-     {
--      next = NEXT_INSN (insn);
-       if (BARRIER_P (insn))
- 	{
--	  prev = prev_nonnote_insn (insn);
-+	  rtx prev = prev_nonnote_insn (insn);
- 	  if (!prev)
- 	    continue;
-+
-+	  if (CALL_P (prev))
-+	    {
-+	      /* Make sure we do not split a call and its corresponding
-+		 CALL_ARG_LOCATION note.  */
-+	      rtx next = NEXT_INSN (prev);
-+
-+	      if (NOTE_P (next)
-+		  && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)
-+		prev = next;
-+	    }
-+
- 	  if (BARRIER_P (prev))
- 	    delete_insn (insn);
- 	  else if (prev != PREV_INSN (insn))
--- 
-1.7.9.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0059-gcc-PR-rtl-optimization-63348.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0059-gcc-PR-rtl-optimization-63348.patch
deleted file mode 100644
index de827cb..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0059-gcc-PR-rtl-optimization-63348.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 6eae3e637fcc22d21b51d44d61e3a9cb4825e776 Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Thu, 30 Oct 2014 20:37:14 -0700
-Subject: [PATCH]PR rtl-optimization/63348
- 
-PR rtl-optimization/63348
-* emit-rtl.c (try_split): Do not emit extra barrier.
-
-Note: this patch is to fix the side effect introduced by r212171 which was reported at:
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63348
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215613 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Upstream-Status: Backport [https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=215613]
-Signed-off-by: Baoshan Pang <baoshan.pang@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- gcc/emit-rtl.c |   11 -----------
- 1 files changed, 0 insertions(+), 11 deletions(-)
-
-diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
-index 4736f8d..ae69dbd 100644
---- a/gcc/emit-rtl.c
-+++ b/gcc/emit-rtl.c
-@@ -3422,7 +3422,6 @@ try_split (rtx pat, rtx trial, int last)
- {
-   rtx before = PREV_INSN (trial);
-   rtx after = NEXT_INSN (trial);
--  int has_barrier = 0;
-   rtx note, seq, tem;
-   int probability;
-   rtx insn_last, insn;
-@@ -3441,14 +3440,6 @@ try_split (rtx pat, rtx trial, int last)
- 
-   split_branch_probability = -1;
- 
--  /* If we are splitting a JUMP_INSN, it might be followed by a BARRIER.
--     We may need to handle this specially.  */
--  if (after && BARRIER_P (after))
--    {
--      has_barrier = 1;
--      after = NEXT_INSN (after);
--    }
--
-   if (!seq)
-     return trial;
- 
-@@ -3594,8 +3585,6 @@ try_split (rtx pat, rtx trial, int last)
-   tem = emit_insn_after_setloc (seq, trial, INSN_LOCATION (trial));
- 
-   delete_insn (trial);
--  if (has_barrier)
--    emit_barrier_after (tem);
- 
-   /* Recursively call try_split for each new insn created; by the
-      time control returns here that insn will be fully split, so
--- 
-1.7.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0060-Only-allow-e500-double-in-SPE_SIMD_REGNO_P-registers.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0060-Only-allow-e500-double-in-SPE_SIMD_REGNO_P-registers.patch
deleted file mode 100644
index 75a9fdd..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0060-Only-allow-e500-double-in-SPE_SIMD_REGNO_P-registers.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 5c0092070253113cf0d9c45eacc884b3ecc34d81 Mon Sep 17 00:00:00 2001
-From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Sat, 25 Oct 2014 00:23:17 +0000
-Subject: [PATCH] Only allow e500 double in SPE_SIMD_REGNO_P registers.
-
-rs6000_hard_regno_nregs_internal allows SPE vectors in single
-registers satisfying SPE_SIMD_REGNO_P (i.e. register numbers 0 to
-31).  However, the corresponding test for e500 double treats all
-registers as being able to store a 64-bit value, rather than just
-those GPRs.
-
-Logically this inconsistency is wrong; in addition, it causes problems
-unwinding from signal handlers.  linux-unwind.h uses
-ARG_POINTER_REGNUM as a place to store the return address from a
-signal handler, but this logic in rs6000_hard_regno_nregs_internal
-results in that being considered an 8-byte register, resulting in
-assertion failures.
-(<https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02625.html> first
-needs to be applied for unwinding to work in general on e500.)  This
-patch makes rs6000_hard_regno_nregs_internal handle the e500 double
-case consistently with SPE vectors.
-
-Tested with no regressions with cross to powerpc-linux-gnuspe (given
-the aforementioned patch applied).  Failures of signal handling
-unwinding tests such as gcc.dg/cleanup-{8,9,10,11}.c are fixed by this
-patch.
-
-	* config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Do
-	not allow e500 double in registers not satisyfing
-	SPE_SIMD_REGNO_P.
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216688 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [gcc 5.0]
-
----
- gcc/ChangeLog              | 6 ++++++
- gcc/config/rs6000/rs6000.c | 2 +-
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-Index: gcc-4.9.2/gcc/config/rs6000/rs6000.c
-===================================================================
---- gcc-4.9.2.orig/gcc/config/rs6000/rs6000.c
-+++ gcc-4.9.2/gcc/config/rs6000/rs6000.c
-@@ -1703,7 +1703,7 @@ rs6000_hard_regno_nregs_internal (int re
-      SCmode so as to pass the value correctly in a pair of
-      registers.  */
-   else if (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode) && mode != SCmode
--	   && !DECIMAL_FLOAT_MODE_P (mode))
-+	   && !DECIMAL_FLOAT_MODE_P (mode) && SPE_SIMD_REGNO_P (regno))
-     reg_size = UNITS_PER_FP_WORD;
- 
-   else
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0061-target-gcc-includedir.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0061-target-gcc-includedir.patch
deleted file mode 100644
index f48c66d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0061-target-gcc-includedir.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Ensure target gcc headers can be included
-
-There are a few headers installed as part of the OpenEmbedded
-gcc-runtime target (omp.h, ssp/*.h). Being installed from a recipe
-built for the target architecture, these are within the target
-sysroot and not cross/nativesdk; thus they weren't able to be
-found by gcc with the existing search paths. Add support for
-picking up these headers under the sysroot supplied on the gcc
-command line in order to resolve this.
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
-Upstream-Status: Pending
-
---- a/gcc/Makefile.in	2014-12-23 11:57:33.327873331 +0000
-+++ b/gcc/Makefile.in	2015-01-21 11:32:35.447305394 +0000
-@@ -587,6 +587,7 @@
- 
- # Directory in which the compiler finds libraries etc.
- libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(version)
-+libsubdir_target = gcc/$(target_noncanonical)/$(version)
- # Directory in which the compiler finds executables
- libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(version)
- # Directory in which all plugin resources are installed
-@@ -2534,6 +2535,7 @@
- 
- PREPROCESSOR_DEFINES = \
-   -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
-+  -DGCC_INCLUDE_SUBDIR_TARGET=\"$(libsubdir_target)/include\" \
-   -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
-   -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
-   -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
---- a/gcc/cppdefault.c	2015-01-13 17:40:26.131012725 +0000
-+++ b/gcc/cppdefault.c	2015-01-21 11:30:08.928426492 +0000
-@@ -59,6 +59,10 @@
-     /* This is the dir for gcc's private headers.  */
-     { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
- #endif
-+#ifdef GCC_INCLUDE_SUBDIR_TARGET
-+    /* This is the dir for gcc's private headers under the specified sysroot.  */
-+    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
-+#endif
- #ifdef LOCAL_INCLUDE_DIR
-     /* /usr/local/include comes before the fixincluded header files.  */
-     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
-diff --git a/gcc/defaults.h b/gcc/defaults.h
-index f94ae17..d98b40b 100644
---- a/gcc/defaults.h
-+++ b/gcc/defaults.h
-@@ -1390,4 +1390,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- 
- #endif /* GCC_INSN_FLAGS_H  */
- 
-+/* Default prefixes to attach to command names.  */
-+
-+#ifndef STANDARD_STARTFILE_PREFIX_1
-+#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
-+#endif
-+#ifndef STANDARD_STARTFILE_PREFIX_2
-+#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
-+#endif
-+
- #endif  /* ! GCC_DEFAULTS_H */
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 9f0b781..174fca8 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1189,13 +1189,6 @@ static const char *gcc_libexec_prefix;
- 
- /* Default prefixes to attach to command names.  */
- 
--#ifndef STANDARD_STARTFILE_PREFIX_1
--#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
--#endif
--#ifndef STANDARD_STARTFILE_PREFIX_2
--#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
--#endif
--
- #ifdef CROSS_DIRECTORY_STRUCTURE  /* Don't use these prefixes for a cross compiler.  */
- #undef MD_EXEC_PREFIX
- #undef MD_STARTFILE_PREFIX
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0062-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0062-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
deleted file mode 100644
index c48bd48..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0062-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 861bcfd4ae814f351e0c668ee26d01d1331e0422 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 28 Apr 2015 23:15:27 -0700
-Subject: [PATCH 36/37] Use SYSTEMLIBS_DIR replacement instead of hardcoding
- base_libdir
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config/aarch64/aarch64-linux.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: gcc-4.9.2/gcc/config/aarch64/aarch64-linux.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/aarch64/aarch64-linux.h
-+++ gcc-4.9.2/gcc/config/aarch64/aarch64-linux.h
-@@ -21,7 +21,7 @@
- #ifndef GCC_AARCH64_LINUX_H
- #define GCC_AARCH64_LINUX_H
- 
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
-+#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}.so.1"
- 
- #define CPP_SPEC "%{pthread:-D_REENTRANT}"
- 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0063-nativesdk-gcc-support.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0063-nativesdk-gcc-support.patch
deleted file mode 100644
index f9efa45..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0063-nativesdk-gcc-support.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-Being able to build a nativesdk gcc is useful, particularly in cases
-where the host compiler may be of an incompatible version (or a 32
-bit compiler is needed).
-
-Sadly, building nativesdk-gcc is not straight forward. We install
-nativesdk-gcc into a relocatable location and this means that its
-library locations can change. "Normal" sysroot support doesn't help
-in this case since the values of paths like "libdir" change, not just
-base root directory of the system.
-
-In order to handle this we do two things:
-
-a) Add %r into spec file markup which can be used for injected paths
-   such as SYSTEMLIBS_DIR (see gcc_multilib_setup()).
-b) Add other paths which need relocation into a .gccrelocprefix section
-   which the relocation code will notice and adjust automatically.
-
-Upstream-Status: Inappropriate
-RP 2015/7/28
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 5fd3d0a..2de29aa 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -120,6 +120,8 @@ static const char *target_system_root = TARGET_SYSTEM_ROOT;
- #else
- static const char *target_system_root = 0;
- #endif
-+ 
-+static char target_relocatable_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSTEMLIBS_DIR;
- 
- /* Nonzero means pass the updated target_system_root to the compiler.  */
- 
-@@ -384,6 +386,7 @@ or with constant text in a single argument.
-  %G     process LIBGCC_SPEC as a spec.
-  %R     Output the concatenation of target_system_root and
-         target_sysroot_suffix.
-+ %r     Output the base path target_relocatable_prefix
-  %S     process STARTFILE_SPEC as a spec.  A capital S is actually used here.
-  %E     process ENDFILE_SPEC as a spec.  A capital E is actually used here.
-  %C     process CPP_SPEC as a spec.
-@@ -1218,10 +1221,10 @@ static const char *gcc_libexec_prefix;
-    gcc_exec_prefix is set because, in that case, we know where the
-    compiler has been installed, and use paths relative to that
-    location instead.  */
--static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
--static const char *const standard_libexec_prefix = STANDARD_LIBEXEC_PREFIX;
--static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
--static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
-+static char standard_exec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
-+static char standard_libexec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_LIBEXEC_PREFIX;
-+static char standard_bindir_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_BINDIR_PREFIX;
-+static char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
- 
- /* For native compilers, these are well-known paths containing
-    components that may be provided by the system.  For cross
-@@ -1229,9 +1232,9 @@ static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
- static const char *md_exec_prefix = MD_EXEC_PREFIX;
- static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
- static const char *md_startfile_prefix_1 = MD_STARTFILE_PREFIX_1;
--static const char *const standard_startfile_prefix_1
-+static char standard_startfile_prefix_1[4096] __attribute__ ((section (".gccrelocprefix")))
-   = STANDARD_STARTFILE_PREFIX_1;
--static const char *const standard_startfile_prefix_2
-+static char standard_startfile_prefix_2[4096] __attribute__ ((section (".gccrelocprefix")))
-   = STANDARD_STARTFILE_PREFIX_2;
- 
- /* A relative path to be used in finding the location of tools
-@@ -5305,6 +5308,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
- 	      }
- 	    break;
- 
-+          case 'r':
-+              obstack_grow (&obstack, target_relocatable_prefix,
-+		      strlen (target_relocatable_prefix));
-+            break;
-+
- 	  case 'S':
- 	    value = do_spec_1 (startfile_spec, 0, NULL);
- 	    if (value != 0)
-
-diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
-index dad69e6..cf43f28 100644
---- a/gcc/cppdefault.c
-+++ b/gcc/cppdefault.c
-@@ -35,6 +35,30 @@
- # undef CROSS_INCLUDE_DIR
- #endif
- 
-+static char GPLUSPLUS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_INCLUDE_DIR;
-+static char GCC_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GCC_INCLUDE_DIR;
-+static char GPLUSPLUS_TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_TOOL_INCLUDE_DIR;
-+static char GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_BACKWARD_INCLUDE_DIR;
-+static char STANDARD_STARTFILE_PREFIX_2VAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET;
-+#ifdef LOCAL_INCLUDE_DIR
-+static char LOCAL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = LOCAL_INCLUDE_DIR;
-+#endif
-+#ifdef PREFIX_INCLUDE_DIR
-+static char PREFIX_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX_INCLUDE_DIR;
-+#endif
-+#ifdef FIXED_INCLUDE_DIR
-+static char FIXED_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = FIXED_INCLUDE_DIR;
-+#endif
-+#ifdef CROSS_INCLUDE_DIR
-+static char CROSS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = CROSS_INCLUDE_DIR;
-+#endif
-+#ifdef TOOL_INCLUDE_DIR
-+static char TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = TOOL_INCLUDE_DIR;
-+#endif
-+#ifdef NATIVE_SYSTEM_HEADER_DIR
-+static char NATIVE_SYSTEM_HEADER_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = NATIVE_SYSTEM_HEADER_DIR;
-+#endif
-+
- const struct default_include cpp_include_defaults[]
- #ifdef INCLUDE_DEFAULTS
- = INCLUDE_DEFAULTS;
-@@ -42,38 +66,38 @@ const struct default_include cpp_include_defaults[]
- = {
- #ifdef GPLUSPLUS_INCLUDE_DIR
-     /* Pick up GNU C++ generic include files.  */
--    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
-+    { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,
-       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
- #endif
- #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
-     /* Pick up GNU C++ target-dependent include files.  */
--    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
-+    { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,
-       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
- #endif
- #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
-     /* Pick up GNU C++ backward and deprecated include files.  */
--    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
-+    { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,
-       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
- #endif
- #ifdef GCC_INCLUDE_DIR
-     /* This is the dir for gcc's private headers.  */
--    { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
-+    { GCC_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
- #endif
- #ifdef GCC_INCLUDE_SUBDIR_TARGET
-     /* This is the dir for gcc's private headers under the specified sysroot.  */
--    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
-+    { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0 },
- #endif
- #ifdef LOCAL_INCLUDE_DIR
-     /* /usr/local/include comes before the fixincluded header files.  */
--    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
--    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
-+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 },
-+    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
- #endif
- #ifdef PREFIX_INCLUDE_DIR
--    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
-+    { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0 },
- #endif
- #ifdef FIXED_INCLUDE_DIR
-     /* This is the dir for fixincludes.  */
--    { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
-+    { FIXED_INCLUDE_DIRVAR, "GCC", 0, 0, 0,
-       /* A multilib suffix needs adding if different multilibs use
- 	 different headers.  */
- #ifdef SYSROOT_HEADERS_SUFFIX_SPEC
-@@ -85,16 +109,16 @@ const struct default_include cpp_include_defaults[]
- #endif
- #ifdef CROSS_INCLUDE_DIR
-     /* One place the target system's headers might be.  */
--    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
-+    { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
- #endif
- #ifdef TOOL_INCLUDE_DIR
-     /* Another place the target system's headers might be.  */
--    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
-+    { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0 },
- #endif
- #ifdef NATIVE_SYSTEM_HEADER_DIR
-     /* /usr/include comes dead last.  */
--    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
--    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
-+    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
-+    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
- #endif
-     { 0, 0, 0, 0, 0, 0 }
-   };
-diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
-index 30b6fed..2ef96b7 100644
---- a/gcc/cppdefault.h
-+++ b/gcc/cppdefault.h
-@@ -33,7 +33,8 @@
- 
- struct default_include
- {
--  const char *const fname;	/* The name of the directory.  */
-+  const char *fname;     /* The name of the directory.  */
-+
-   const char *const component;	/* The component containing the directory
- 				   (see update_path in prefix.c) */
-   const char cplusplus;		/* Only look here if we're compiling C++.  */
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0064-handle-target-sysroot-multilib.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0064-handle-target-sysroot-multilib.patch
deleted file mode 100644
index 5356984..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0064-handle-target-sysroot-multilib.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-Search target sysroot gcc version specific dirs with multilib.
-
-We install the gcc libraries (such as crtbegin.p) into
-<sysroot><libdir>/<target-sys>/5.2.0/
-which is a default search path for GCC (aka multi_suffix in the 
-code below). <target-sys> is 'machine' in gcc's terminology. We use
-these directories so that multiple gcc versions could in theory 
-co-exist on target.
-
-We only want to build one gcc-cross-canadian per arch and have this work 
-for all multilibs. <target-sys> can be handled by mapping the multilib
-<target-sys> to the one used by gcc-cross-canadian, e.g. mips64-polkmllib32-linux 
-is symlinked to by mips64-poky-linux.
-
-The default gcc search path in the target sysroot for a "lib64" mutlilib is:
-
-<sysroot>/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/lib32/../lib64/
-<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/usr/lib32/../lib64/
-<sysroot>/lib32/
-<sysroot>/usr/lib32/
-
-which means that the lib32 crtbegin.o will be found and the lib64 ones
-will not which leads to compiler failures.
-
-This patch injects a multilib version of that path first so the lib64
-binaries can be found first. With this change the search path becomes:
-
-<sysroot>/lib32/../lib64/mips64-poky-linux/5.2.0/
-<sysroot>/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/lib32/../lib64/
-<sysroot>/usr/lib32/../lib64/mips64-poky-linux/5.2.0/
-<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
-<sysroot>/usr/lib32/../lib64/
-<sysroot>/lib32/
-<sysroot>/usr/lib32/
-
-Upstream-Status: Pending
-RP 2015/7/31
-
-Index: gcc-5.2.0/gcc/gcc.c
-===================================================================
---- gcc-5.2.0.orig/gcc/gcc.c
-+++ gcc-5.2.0/gcc/gcc.c
-@@ -2305,7 +2305,7 @@ for_each_path (const struct path_prefix
-       if (path == NULL)
- 	{
- 	  len = paths->max_len + extra_space + 1;
--	  len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len);
-+	  len += MAX ((suffix_len + multi_os_dir_len), multiarch_len);
- 	  path = XNEWVEC (char, len);
- 	}
- 
-@@ -2317,6 +2317,33 @@ for_each_path (const struct path_prefix
- 	  /* Look first in MACHINE/VERSION subdirectory.  */
- 	  if (!skip_multi_dir)
- 	    {
-+	      if (!(pl->os_multilib ? skip_multi_os_dir : skip_multi_dir))
-+	        {
-+	          const char *this_multi;
-+	          size_t this_multi_len;
-+
-+	          if (pl->os_multilib)
-+		    {
-+		      this_multi = multi_os_dir;
-+		      this_multi_len = multi_os_dir_len;
-+		    }
-+	          else
-+		    {
-+		      this_multi = multi_dir;
-+		      this_multi_len = multi_dir_len;
-+		    }
-+
-+	          /* Look in multilib MACHINE/VERSION subdirectory first */
-+	          if (this_multi_len)
-+	            {
-+		      memcpy (path + len, this_multi, this_multi_len + 1);
-+	              memcpy (path + len + this_multi_len, multi_suffix, suffix_len + 1);
-+	              ret = callback (path, callback_info);
-+	                if (ret)
-+		          break;
-+	            }
-+	        }
-+
- 	      memcpy (path + len, multi_suffix, suffix_len + 1);
- 	      ret = callback (path, callback_info);
- 	      if (ret)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0065-gcc-483-universal-initializer-no-warning.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0065-gcc-483-universal-initializer-no-warning.patch
deleted file mode 100644
index fde227b..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0065-gcc-483-universal-initializer-no-warning.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-Upstream-Status: Backport
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-Fix for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119
-wrong warning when using the universal zero initializer {0}
-
-Backported to GCC 4.8.3
-
-Subject: 2014-06-05  S. Gilles  <sgilles@terpmail.umd.edu>
-X-Git-Url: http://repo.or.cz/w/official-gcc.git/commitdiff_plain/95cdf3fdf2d440eb7775def8e35ab970651c33d9?hp=14a3093e9943937cbc63dfbf4d51ca60f8325b29
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211289 138bc75d-0d04-0410-961f-82ee72b054a4
-
---- gcc-4.8.3.org/gcc/c/c-typeck.c	2014-08-03 20:52:09.257042137 +0200
-+++ gcc-4.8.3/gcc/c/c-typeck.c	2014-08-03 20:57:10.645042614 +0200
-@@ -62,9 +62,9 @@
-    if expr.original_code == SIZEOF_EXPR.  */
- tree c_last_sizeof_arg;
- 
--/* Nonzero if we've already printed a "missing braces around initializer"
--   message within this initializer.  */
--static int missing_braces_mentioned;
-+/* Nonzero if we might need to print a "missing braces around
-+   initializer" message within this initializer.  */
-+static int found_missing_braces;
- 
- static int require_constant_value;
- static int require_constant_elements;
-@@ -6379,6 +6379,9 @@
- /* 1 if this constructor is erroneous so far.  */
- static int constructor_erroneous;
- 
-+/* 1 if this constructor is the universal zero initializer { 0 }.  */
-+static int constructor_zeroinit;
-+
- /* Structure for managing pending initializer elements, organized as an
-    AVL tree.  */
- 
-@@ -6540,7 +6543,7 @@
-   constructor_stack = 0;
-   constructor_range_stack = 0;
- 
--  missing_braces_mentioned = 0;
-+  found_missing_braces = 0;
- 
-   spelling_base = 0;
-   spelling_size = 0;
-@@ -6635,6 +6638,7 @@
-   constructor_type = type;
-   constructor_incremental = 1;
-   constructor_designated = 0;
-+  constructor_zeroinit = 1;
-   designator_depth = 0;
-   designator_erroneous = 0;
- 
-@@ -6832,11 +6836,8 @@
- 	set_nonincremental_init (braced_init_obstack);
-     }
- 
--  if (implicit == 1 && warn_missing_braces && !missing_braces_mentioned)
--    {
--      missing_braces_mentioned = 1;
--      warning_init (OPT_Wmissing_braces, "missing braces around initializer");
--    }
-+  if (implicit == 1)
-+    found_missing_braces = 1;
- 
-   if (TREE_CODE (constructor_type) == RECORD_TYPE
- 	   || TREE_CODE (constructor_type) == UNION_TYPE)
-@@ -6969,16 +6970,23 @@
- 	}
-     }
- 
-+  if (vec_safe_length (constructor_elements) != 1)
-+    constructor_zeroinit = 0;
-+
-+  /* Warn when some structs are initialized with direct aggregation.  */
-+  if (!implicit && found_missing_braces && warn_missing_braces
-+      && !constructor_zeroinit)
-+    {
-+      warning_init (OPT_Wmissing_braces,
-+		    "missing braces around initializer");
-+    }
-+
-   /* Warn when some struct elements are implicitly initialized to zero.  */
-   if (warn_missing_field_initializers
-       && constructor_type
-       && TREE_CODE (constructor_type) == RECORD_TYPE
-       && constructor_unfilled_fields)
-     {
--	bool constructor_zeroinit =
--	 (vec_safe_length (constructor_elements) == 1
--	  && integer_zerop ((*constructor_elements)[0].value));
--
- 	/* Do not warn for flexible array members or zero-length arrays.  */
- 	while (constructor_unfilled_fields
- 	       && (!DECL_SIZE (constructor_unfilled_fields)
-@@ -8093,6 +8101,9 @@
-   designator_depth = 0;
-   designator_erroneous = 0;
- 
-+  if (!implicit && value.value && !integer_zerop (value.value))
-+    constructor_zeroinit = 0;
-+
-   /* Handle superfluous braces around string cst as in
-      char x[] = {"foo"}; */
-   if (string_flag
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0066-cxxflags-for-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0066-cxxflags-for-build.patch
deleted file mode 100644
index 1105e29..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0066-cxxflags-for-build.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-Fix various _FOR_BUILD and related variables
-
-When doing a FOR_BUILD thing, you have to override CFLAGS with
-CFLAGS_FOR_BUILD. And if you use C++, you also have to override
-CXXFLAGS with CXXFLAGS_FOR_BUILD.
-Without this, when building for mingw, you end up trying to use
-the mingw headers for a host build.
-
-The same goes for other variables as well, such as CPPFLAGS,
-CPP, and GMPINC.
-
-Upstream-Status: Pending
-
-Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff --git a/Makefile.in b/Makefile.in
-index 9370174..011c29a 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -152,6 +152,7 @@ BUILD_EXPORTS = \
- 	CPP="$(CC_FOR_BUILD) -E"; export CPP; \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
- 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
- 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
- 	GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
-@@ -170,6 +171,9 @@ BUILD_EXPORTS = \
- # built for the build system to override those in BASE_FLAGS_TO_PASS.
- EXTRA_BUILD_FLAGS = \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
-+	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
-+	CPP="$(CC_FOR_BUILD) -E" \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
- 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
- 
- # This is the list of directories to built for the host system.
-@@ -187,6 +191,7 @@ HOST_SUBDIR = @host_subdir@
- HOST_EXPORTS = \
- 	$(BASE_EXPORTS) \
- 	CC="$(CC)"; export CC; \
-+	CPP="$(CC) -E"; export CPP; \
- 	ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
- 	CFLAGS="$(CFLAGS)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-@@ -711,6 +715,7 @@ BASE_FLAGS_TO_PASS = \
- 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
- 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
- 	"CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
-+	"CXXFLAGS_FOR_BUILD=$(CXXFLAGS_FOR_BUILD)" \
- 	"EXPECT=$(EXPECT)" \
- 	"FLEX=$(FLEX)" \
- 	"INSTALL=$(INSTALL)" \
-diff --git a/Makefile.tpl b/Makefile.tpl
-index 1ea1954..78a59c3 100644
---- a/Makefile.tpl
-+++ b/Makefile.tpl
-@@ -154,6 +154,7 @@ BUILD_EXPORTS = \
- 	CC="$(CC_FOR_BUILD)"; export CC; \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
- 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
- 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
- 	GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
-@@ -172,6 +173,9 @@ BUILD_EXPORTS = \
- # built for the build system to override those in BASE_FLAGS_TO_PASS.
- EXTRA_BUILD_FLAGS = \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
-+	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
-+	CPP="$(CC_FOR_BUILD) -E" \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
- 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
- 
- # This is the list of directories to built for the host system.
-@@ -189,6 +193,7 @@ HOST_SUBDIR = @host_subdir@
- HOST_EXPORTS = \
- 	$(BASE_EXPORTS) \
- 	CC="$(CC)"; export CC; \
-+	CPP="$(CC) -E"; export CPP; \
- 	ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
- 	CFLAGS="$(CFLAGS)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index cd5bc4a..98ae4f4 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -762,7 +762,7 @@ BUILD_LINKERFLAGS = $(BUILD_CXXFLAGS)
- # Native linker and preprocessor flags.  For x-fragment overrides.
- BUILD_LDFLAGS=@BUILD_LDFLAGS@
- BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
--		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
-+		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS_FOR_BUILD)
- 
- # Actual name to use when installing a native compiler.
- GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
-diff --git a/gcc/configure b/gcc/configure
-index c7ac14b..5ac63e4 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -11521,7 +11521,7 @@ else
- 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
- 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
--	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
-+	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
- 	${realsrcdir}/configure \
- 		--enable-languages=${enable_languages-all} \
- 		--target=$target_alias --host=$build_alias --build=$build_alias
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 50856e6..17a4dfd 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -1633,7 +1633,7 @@ else
- 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
- 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
--	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
-+	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
- 	${realsrcdir}/configure \
- 		--enable-languages=${enable_languages-all} \
- 		--target=$target_alias --host=$build_alias --build=$build_alias
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0067-fix-arm-thumb.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0067-fix-arm-thumb.patch
deleted file mode 100644
index 2f262e3..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0067-fix-arm-thumb.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Upstream-Status: Accepted
-
-Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
----
-
-2015-11-25  Vladimir Makarov  <vmakarov@redhat.com>
-
-	PR rtl-optimization/67954
-	* lra-constraints.c (curr_insn_transform): Add check on scratch
-	pseudo when change class to NO_REGS.  Add an assert.
-
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230894 138bc75d-0d04-0410-961f-82ee72b054a4
----
-
-diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
-index 4670e81..c62bf6a 100644
---- a/gcc/lra-constraints.c
-+++ b/gcc/lra-constraints.c
-@@ -3725,7 +3725,8 @@ curr_insn_transform (bool check_only_p)
- 		 assigment pass and the scratch pseudo will be
- 		 spilled.  Spilled scratch pseudos are transformed
- 		 back to scratches at the LRA end.  */
--	      && lra_former_scratch_operand_p (curr_insn, i))
-+	      && lra_former_scratch_operand_p (curr_insn, i)
-+	      && lra_former_scratch_p (REGNO (op)))
- 	    {
- 	      int regno = REGNO (op);
- 	      lra_change_class (regno, NO_REGS, "      Change to", true);
-@@ -3734,6 +3735,8 @@ curr_insn_transform (bool check_only_p)
- 		   spilled pseudo as there is only one such insn, the
- 		   current one.  */
- 		reg_renumber[regno] = -1;
-+	      lra_assert (bitmap_single_bit_set_p
-+			  (&lra_reg_info[REGNO (op)].insn_bitmap));
- 	    }
- 	  /* We can do an optional reload.  If the pseudo got a hard
- 	     reg, we might improve the code through inheritance.  If
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0067-gcc-musl-support.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0067-gcc-musl-support.patch
deleted file mode 100644
index 9a0b5ad..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0067-gcc-musl-support.patch
+++ /dev/null
@@ -1,267 +0,0 @@
-# HG changeset patch
-# Parent e5b4564f249f8634194bdabef4b3057d0e54ee97
-Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker.
-Upstream-Status: backport [partial]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-
-Index: gcc-4.9.0/gcc/config.gcc
-===================================================================
---- gcc-4.9.0.orig/gcc/config.gcc	2014-04-22 22:44:17.153567150 -0700
-+++ gcc-4.9.0/gcc/config.gcc	2014-04-23 23:54:31.427357051 -0700
-@@ -594,7 +594,7 @@
- esac
- 
- # Common C libraries.
--tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
-+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
- 
- # 32-bit x86 processors supported by --with-arch=.  Each processor
- # MUST be separated by exactly one space.
-@@ -719,6 +719,9 @@
-     *-*-*uclibc*)
-       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
-       ;;
-+    *-*-*musl*)
-+      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
-+      ;;
-     *)
-       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
-       ;;
-@@ -2328,6 +2331,11 @@
- 	    powerpc*-*-linux*paired*)
- 		tm_file="${tm_file} rs6000/750cl.h" ;;
- 	esac
-+        case ${target} in
-+	    *-linux*-musl*)
-+		enable_secureplt=yes ;;
-+	esac
-+
- 	if test x${enable_secureplt} = xyes; then
- 		tm_file="rs6000/secureplt.h ${tm_file}"
- 	fi
-Index: gcc-4.9.0/gcc/config/linux.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/linux.h	2014-01-02 14:23:26.000000000 -0800
-+++ gcc-4.9.0/gcc/config/linux.h	2014-04-24 00:11:29.034028895 -0700
-@@ -32,10 +32,12 @@
- #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
- #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
- #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
-+#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
- #else
- #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
- #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
- #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
-+#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
- #endif
- 
- #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
-@@ -53,18 +55,21 @@
-    uClibc or Bionic is the default C library and whether
-    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
- 
--#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
--  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
-+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
-+  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
- 
- #if DEFAULT_LIBC == LIBC_GLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
--  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
- #elif DEFAULT_LIBC == LIBC_UCLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
--  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
- #elif DEFAULT_LIBC == LIBC_BIONIC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
--  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
-+#elif DEFAULT_LIBC == LIBC_MUSL
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
- #else
- #error "Unsupported DEFAULT_LIBC"
- #endif /* DEFAULT_LIBC */
-@@ -84,16 +89,16 @@
- 
- #define GNU_USER_DYNAMIC_LINKER						\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
--			 BIONIC_DYNAMIC_LINKER)
-+			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
- #define GNU_USER_DYNAMIC_LINKER32					\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
--			 BIONIC_DYNAMIC_LINKER32)
-+			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
- #define GNU_USER_DYNAMIC_LINKER64					\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
--			 BIONIC_DYNAMIC_LINKER64)
-+			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
- #define GNU_USER_DYNAMIC_LINKERX32					\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
--			 BIONIC_DYNAMIC_LINKERX32)
-+			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
- 
- /* Whether we have Bionic libc runtime */
- #undef TARGET_HAS_BIONIC
-@@ -127,3 +132,74 @@
- # define TARGET_LIBC_HAS_FUNCTION linux_libc_has_function
- 
- #endif
-+
-+/* musl avoids problematic includes by rearranging the include directories.
-+ * Unfortunately, this is mostly duplicated from cppdefault.c */
-+#if DEFAULT_LIBC == LIBC_MUSL
-+#define INCLUDE_DEFAULTS_MUSL_GPP			\
-+    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
-+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
-+    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
-+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
-+    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
-+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
-+
-+#ifdef LOCAL_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
-+    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
-+    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_LOCAL
-+#endif
-+
-+#ifdef PREFIX_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
-+    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_PREFIX
-+#endif
-+
-+#ifdef CROSS_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_CROSS			\
-+    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_CROSS
-+#endif
-+
-+#ifdef TOOL_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_TOOL			\
-+    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_TOOL
-+#endif
-+
-+#ifdef NATIVE_SYSTEM_HEADER_DIR
-+#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
-+    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
-+    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_NATIVE
-+#endif
-+
-+#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
-+# undef INCLUDE_DEFAULTS_MUSL_LOCAL
-+# define INCLUDE_DEFAULTS_MUSL_LOCAL
-+# undef INCLUDE_DEFAULTS_MUSL_NATIVE
-+# define INCLUDE_DEFAULTS_MUSL_NATIVE
-+#else
-+# undef INCLUDE_DEFAULTS_MUSL_CROSS
-+# define INCLUDE_DEFAULTS_MUSL_CROSS
-+#endif
-+
-+#undef INCLUDE_DEFAULTS
-+#define INCLUDE_DEFAULTS				\
-+  {							\
-+    INCLUDE_DEFAULTS_MUSL_GPP				\
-+    INCLUDE_DEFAULTS_MUSL_PREFIX			\
-+    INCLUDE_DEFAULTS_MUSL_CROSS				\
-+    INCLUDE_DEFAULTS_MUSL_TOOL				\
-+    INCLUDE_DEFAULTS_MUSL_NATIVE			\
-+    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
-+    { 0, 0, 0, 0, 0, 0 }				\
-+  }
-+#endif
-Index: gcc-4.9.0/gcc/config/linux.opt
-===================================================================
---- gcc-4.9.0.orig/gcc/config/linux.opt	2014-01-02 14:23:26.000000000 -0800
-+++ gcc-4.9.0/gcc/config/linux.opt	2014-04-22 22:44:17.280233817 -0700
-@@ -30,3 +30,7 @@
- muclibc
- Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
- Use uClibc C library
-+
-+mmusl
-+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
-+Use musl C library
-Index: gcc-4.9.0/gcc/ginclude/stddef.h
-===================================================================
---- gcc-4.9.0.orig/gcc/ginclude/stddef.h	2014-01-02 14:23:26.000000000 -0800
-+++ gcc-4.9.0/gcc/ginclude/stddef.h	2014-04-22 22:44:17.280233817 -0700
-@@ -181,6 +181,7 @@
- #ifndef _GCC_SIZE_T
- #ifndef _SIZET_
- #ifndef __size_t
-+#ifndef __DEFINED_size_t /* musl */
- #define __size_t__	/* BeOS */
- #define __SIZE_T__	/* Cray Unicos/Mk */
- #define _SIZE_T
-@@ -197,6 +198,7 @@
- #define ___int_size_t_h
- #define _GCC_SIZE_T
- #define _SIZET_
-+#define __DEFINED_size_t /* musl */
- #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
-   || defined(__FreeBSD_kernel__)
- /* __size_t is a typedef on FreeBSD 5, must not trash it. */
-@@ -214,6 +216,7 @@
- typedef long ssize_t;
- #endif /* __BEOS__ */
- #endif /* !(defined (__GNUG__) && defined (size_t)) */
-+#endif /* __DEFINED_size_t */
- #endif /* __size_t */
- #endif /* _SIZET_ */
- #endif /* _GCC_SIZE_T */
-Index: gcc-4.9.0/gcc/config/rs6000/secureplt.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/rs6000/secureplt.h	2014-01-02 14:23:26.000000000 -0800
-+++ gcc-4.9.0/gcc/config/rs6000/secureplt.h	2014-04-23 23:55:15.114024175 -0700
-@@ -18,3 +18,4 @@
- <http://www.gnu.org/licenses/>.  */
- 
- #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
-+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
-Index: gcc-4.9.0/gcc/config/rs6000/sysv4.h
-===================================================================
---- gcc-4.9.0.orig/gcc/config/rs6000/sysv4.h	2014-04-23 23:52:13.854023015 -0700
-+++ gcc-4.9.0/gcc/config/rs6000/sysv4.h	2014-04-24 00:10:55.550695334 -0700
-@@ -538,6 +538,10 @@
- #define CC1_SECURE_PLT_DEFAULT_SPEC ""
- #endif
- 
-+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
-+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
-+#endif
-+
- /* Pass -G xxx to the compiler.  */
- #define	CC1_SPEC "%{G*} %(cc1_cpu)" \
- "%{meabi: %{!mcall-*: -mcall-sysv }} \
-@@ -585,7 +589,8 @@
- 
- /* Override the default target of the linker.  */
- #define	LINK_TARGET_SPEC \
--  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
-+  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
-+  "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
- 
- /* Any specific OS flags.  */
- #define LINK_OS_SPEC "\
-@@ -894,6 +899,7 @@
-   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
-   { "link_os_default",		LINK_OS_DEFAULT_SPEC },			\
-   { "cc1_secure_plt_default",	CC1_SECURE_PLT_DEFAULT_SPEC },		\
-+  { "link_secure_plt_default",	LINK_SECURE_PLT_DEFAULT_SPEC },		\
-   { "cpp_os_ads",		CPP_OS_ADS_SPEC },			\
-   { "cpp_os_yellowknife",	CPP_OS_YELLOWKNIFE_SPEC },		\
-   { "cpp_os_mvme",		CPP_OS_MVME_SPEC },			\
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0068-musl-dynamic-linker.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0068-musl-dynamic-linker.patch
deleted file mode 100644
index 605ac66..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0068-musl-dynamic-linker.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-# HG changeset patch
-# Parent 6738fd6f6fcc2a72f2ba527bda3325642af26885
-Support for arm-linux-musl.
-Upstream-Status: Backport [partial]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-
-Index: gcc-4.9.2/gcc/config/arm/linux-eabi.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/arm/linux-eabi.h
-+++ gcc-4.9.2/gcc/config/arm/linux-eabi.h
-@@ -81,6 +81,23 @@
- #undef TARGET_FIX_V4BX_SPEC
- #define TARGET_FIX_V4BX_SPEC "%{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4: --fix-v4bx}"
- 
-+/* For ARM musl currently supports four dynamic linkers:
-+   - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
-+   - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
-+   - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
-+   - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
-+   musl does not support the legacy OABI mode.
-+   All the dynamic linkers live in /lib.
-+   We default to soft-float, EL. */
-+#undef  MUSL_DYNAMIC_LINKER
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
-+#else
-+#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
-+#endif
-+#define MUSL_DYNAMIC_LINKER \
-+  SYSTEMLIBS_DIR "ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
-+
- /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
-    use the GNU/Linux version, not the generic BPABI version.  */
- #undef  LINK_SPEC
-Index: gcc-4.9.2/libitm/config/arm/hwcap.cc
-===================================================================
---- gcc-4.9.2.orig/libitm/config/arm/hwcap.cc
-+++ gcc-4.9.2/libitm/config/arm/hwcap.cc
-@@ -40,7 +40,11 @@ int GTM_hwcap HIDDEN = 0
- 
- #ifdef __linux__
- #include <unistd.h>
-+#ifdef __GLIBC__
- #include <sys/fcntl.h>
-+#else
-+#include <fcntl.h>
-+#endif
- #include <elf.h>
- 
- static void __attribute__((constructor))
-Index: gcc-4.9.2/gcc/config/i386/linux.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/i386/linux.h
-+++ gcc-4.9.2/gcc/config/i386/linux.h
-@@ -21,3 +21,4 @@ along with GCC; see the file COPYING3.
- 
- #define GNU_USER_LINK_EMULATION "elf_i386"
- #define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
-+#define MUSL_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-musl-i386.so.1"
-Index: gcc-4.9.2/gcc/config/i386/linux64.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/i386/linux64.h
-+++ gcc-4.9.2/gcc/config/i386/linux64.h
-@@ -30,3 +30,8 @@ see the files COPYING3 and COPYING.RUNTI
- #define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-linux.so.2"
- #define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
- #define GLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ld-linux-x32.so.2"
-+
-+#define MUSL_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-musl-i386.so.1"
-+#define MUSL_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-musl-x86_64.so.1"
-+#define MUSL_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ld-musl-x32.so.1"
-+
-Index: gcc-4.9.2/gcc/config/mips/linux.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/mips/linux.h
-+++ gcc-4.9.2/gcc/config/mips/linux.h
-@@ -23,3 +23,6 @@ along with GCC; see the file COPYING3.
- #undef UCLIBC_DYNAMIC_LINKER
- #define UCLIBC_DYNAMIC_LINKER \
-   "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
-+
-+#define MUSL_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-musl-mips.so.1"
-+
-Index: gcc-4.9.2/gcc/config/mips/linux64.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/mips/linux64.h
-+++ gcc-4.9.2/gcc/config/mips/linux64.h
-@@ -39,6 +39,11 @@ along with GCC; see the file COPYING3.
-   "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
- 
- #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
-+
-+#define MUSL_DYNAMIC_LINKERN32 SYSTEMLIBS_DIR "ld-musl-mips.so.1"
-+#define MUSL_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-musl-mips.so.1"
-+#define MUSL_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-musl-mips.so.1"
-+
- #define GNU_USER_DYNAMIC_LINKERN32 \
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
--			 BIONIC_DYNAMIC_LINKERN32)
-+			 BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKERN32)
-Index: gcc-4.9.2/gcc/config/rs6000/linux64.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/rs6000/linux64.h
-+++ gcc-4.9.2/gcc/config/rs6000/linux64.h
-@@ -375,17 +375,22 @@ extern int dot_symbols;
- #endif
- #define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
- #define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
-+#define MUSL_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-musl-powerpc.so.1"
-+#define MUSL_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-musl-powerpc64.so.1"
-+
- #if DEFAULT_LIBC == LIBC_UCLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
- #elif DEFAULT_LIBC == LIBC_GLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
-+#elif DEFAULT_LIBC == LIBC_MUSL
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
- #else
- #error "Unsupported DEFAULT_LIBC"
- #endif
- #define GNU_USER_DYNAMIC_LINKER32 \
--  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
-+  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
- #define GNU_USER_DYNAMIC_LINKER64 \
--  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
-+  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
- 
- #undef  DEFAULT_ASM_ENDIAN
- #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-Index: gcc-4.9.2/gcc/config/rs6000/sysv4.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/rs6000/sysv4.h
-+++ gcc-4.9.2/gcc/config/rs6000/sysv4.h
-@@ -768,15 +768,19 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
- 
- #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
- #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
-+
- #if DEFAULT_LIBC == LIBC_UCLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
-+#elif DEFAULT_LIBC == LIBC_MUSL
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
- #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
- #else
- #error "Unsupported DEFAULT_LIBC"
- #endif
- #define GNU_USER_DYNAMIC_LINKER \
--  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
-+  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
- 
- #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
-   %{rdynamic:-export-dynamic} \
-Index: gcc-4.9.2/libitm/config/linux/x86/tls.h
-===================================================================
---- gcc-4.9.2.orig/libitm/config/linux/x86/tls.h
-+++ gcc-4.9.2/libitm/config/linux/x86/tls.h
-@@ -25,16 +25,19 @@
- #ifndef LIBITM_X86_TLS_H
- #define LIBITM_X86_TLS_H 1
- 
--#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
-+#if defined(__GLIBC_PREREQ)
-+#if __GLIBC_PREREQ(2, 10)
- /* Use slots in the TCB head rather than __thread lookups.
-    GLIBC has reserved words 10 through 13 for TM.  */
- #define HAVE_ARCH_GTM_THREAD 1
- #define HAVE_ARCH_GTM_THREAD_DISP 1
- #endif
-+#endif
- 
- #include "config/generic/tls.h"
- 
--#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
-+#if defined(__GLIBC_PREREQ)
-+#if __GLIBC_PREREQ(2, 10)
- namespace GTM HIDDEN {
- 
- #ifdef __x86_64__
-@@ -101,5 +104,6 @@ static inline void set_abi_disp(struct a
- 
- } // namespace GTM
- #endif /* >= GLIBC 2.10 */
-+#endif
- 
- #endif // LIBITM_X86_TLS_H
-Index: gcc-4.9.2/gcc/config/aarch64/aarch64-linux.h
-===================================================================
---- gcc-4.9.2.orig/gcc/config/aarch64/aarch64-linux.h
-+++ gcc-4.9.2/gcc/config/aarch64/aarch64-linux.h
-@@ -25,6 +25,8 @@
- 
- #define CPP_SPEC "%{pthread:-D_REENTRANT}"
- 
-+#define MUSL_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-musl-aarch64.so.1"
-+
- #define LINUX_TARGET_LINK_SPEC  "%{h*}		\
-    %{static:-Bstatic}				\
-    %{shared:-shared}				\
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0069-musl-no-fixincludes.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0069-musl-no-fixincludes.patch
deleted file mode 100644
index e2b18a4..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0069-musl-no-fixincludes.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-# HG changeset patch
-# Parent 600a8a422ccaf5627ad1f5a138e7398df2b9e9d8
-Get rid of ever-broken fixincludes on musl.
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-
-Index: gcc-4.9-20140316/fixincludes/mkfixinc.sh
-===================================================================
---- gcc-4.9-20140316.orig/fixincludes/mkfixinc.sh
-+++ gcc-4.9-20140316/fixincludes/mkfixinc.sh
-@@ -19,7 +19,8 @@ case $machine in
-     powerpc-*-eabi*    | \
-     powerpc-*-rtems*   | \
-     powerpcle-*-eabisim* | \
--    powerpcle-*-eabi* )
-+    powerpcle-*-eabi* | \
-+    *-musl* )
- 	#  IF there is no include fixing,
- 	#  THEN create a no-op fixer and exit
- 	(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0070-libstdc-musl.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0070-libstdc-musl.patch
deleted file mode 100644
index 048e481..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0070-libstdc-musl.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: gcc-4.9-20140316/libstdc++-v3/configure.host
-===================================================================
---- gcc-4.9-20140316.orig/libstdc++-v3/configure.host	2014-03-26 01:12:19.466008193 -0700
-+++ gcc-4.9-20140316/libstdc++-v3/configure.host	2014-03-26 01:43:48.222684357 -0700
-@@ -264,14 +264,24 @@
-     os_include_dir="os/bsd/freebsd"
-     ;;
-   gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
-+    # check for musl by target
-+    case "${host_os}" in
-+      *-musl*)
-+        os_include_dir="os/generic"
-+        ;;
-+      *)
-     if [ "$uclibc" = "yes" ]; then
-       os_include_dir="os/uclibc"
-     elif [ "$bionic" = "yes" ]; then
-       os_include_dir="os/bionic"
-+    elif [ "$musl" = "yes" ]; then
-+      os_include_dir="os/generic"
-     else
-       os_include_dir="os/gnu-linux"
-     fi
-     ;;
-+    esac
-+    ;;
-   hpux*)
-     os_include_dir="os/hpux"
-     ;;
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0071-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0071-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch
deleted file mode 100644
index e8f79b5..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0071-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 32593b38082ea65f4c82159254adf1e0dc2423be Mon Sep 17 00:00:00 2001
-From: bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Tue, 16 Feb 2016 03:15:15 -0500
-Subject: [PATCH] Ignore -fdebug-prefix-map in producer string (by Daniel Kahn
- Gillmor)
-
-* dwarf2out.c (gen_producer_string): Ignore -fdebug-prefix-map.
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231835 138bc75d-0d04-0410-961f-82ee72b054a4
-
-Upstream-Status: Backport
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/dwarf2out.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
-index 3614c10..526f114 100644
---- a/gcc/dwarf2out.c
-+++ b/gcc/dwarf2out.c
-@@ -19670,6 +19670,7 @@ gen_producer_string (void)
-       case OPT_fpreprocessed:
-       case OPT_fltrans_output_list_:
-       case OPT_fresolution_:
-+      case OPT_fdebug_prefix_map_:
- 	/* Ignore these.  */
- 	continue;
-       default:
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch
deleted file mode 100644
index 9809a6a..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch
+++ /dev/null
@@ -1,284 +0,0 @@
-From e863be798ed13312a0faf0b961275f211a8123ab Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 17 Mar 2016 00:32:17 -0400
-Subject: [PATCH] gcc/libcpp: support -ffile-prefix-map=<old>=<new>
-
-Similar -fdebug-prefix-map, add option -ffile-prefix-map to map one
-directory name (old) to another (new) in __FILE__, __BASE_FILE__ and
-__builtin_FILE ().
-
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70268
-
-Upstream-Status: Submitted [gcc-patches@gcc.gnu.org]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/c-family/c-opts.c     |  6 ++++
- gcc/c-family/c.opt        |  4 +++
- gcc/dwarf2out.c           |  1 +
- gcc/gimplify.c            |  2 ++
- libcpp/Makefile.in        | 10 +++---
- libcpp/file-map.c         | 92 +++++++++++++++++++++++++++++++++++++++++++++++
- libcpp/include/file-map.h | 30 ++++++++++++++++
- libcpp/macro.c            |  2 ++
- 8 files changed, 142 insertions(+), 5 deletions(-)
- create mode 100644 libcpp/file-map.c
- create mode 100644 libcpp/include/file-map.h
-
-diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
-index dd5fd23..9c004a1 100644
---- a/gcc/c-family/c-opts.c
-+++ b/gcc/c-family/c-opts.c
-@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.  If not see
- #include "options.h"
- #include "plugin.h"		/* For PLUGIN_INCLUDE_FILE event.  */
- #include "mkdeps.h"
-+#include "file-map.h"
- #include "c-target.h"
- #include "tm.h"			/* For BYTES_BIG_ENDIAN,
- 				   DOLLARS_IN_IDENTIFIERS,
-@@ -553,6 +554,11 @@ c_common_handle_option (size_t scode, const char *arg, int value,
-       cpp_opts->narrow_charset = arg;
-       break;
- 
-+    case OPT_ffile_prefix_map_:
-+      if (add_file_prefix_map (arg) < 0)
-+        error ("invalid argument %qs to -ffile-prefix-map", arg);
-+      break;
-+
-     case OPT_fwide_exec_charset_:
-       cpp_opts->wide_charset = arg;
-       break;
-diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
-index f295805..3a99662 100644
---- a/gcc/c-family/c.opt
-+++ b/gcc/c-family/c.opt
-@@ -928,6 +928,10 @@ fexec-charset=
- C ObjC C++ ObjC++ Joined RejectNegative
- -fexec-charset=<cset>	Convert all strings and character constants to character set <cset>
- 
-+ffile-prefix-map=
-+C ObjC C++ ObjC++ Joined RejectNegative
-+-ffile-prefix-map=<old=new>	Map one directory name to another in __FILE__, __BASE_FILE__ and __builtin_FILE ()
-+
- fextended-identifiers
- C ObjC C++ ObjC++
- Permit universal character names (\\u and \\U) in identifiers
-diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
-index 99bf6e2..3e58cfd 100644
---- a/gcc/dwarf2out.c
-+++ b/gcc/dwarf2out.c
-@@ -19199,6 +19199,7 @@ gen_producer_string (void)
-       case OPT_fltrans_output_list_:
-       case OPT_fresolution_:
-       case OPT_fdebug_prefix_map_:
-+      case OPT_ffile_prefix_map_:
- 	/* Ignore these.  */
- 	continue;
-       default:
-diff --git a/gcc/gimplify.c b/gcc/gimplify.c
-index 89e7334..a7a97c0 100644
---- a/gcc/gimplify.c
-+++ b/gcc/gimplify.c
-@@ -59,6 +59,7 @@ along with GCC; see the file COPYING3.  If not see
- #include "omp-low.h"
- #include "gimple-low.h"
- #include "cilk.h"
-+#include "file-map.h"
- 
- #include "langhooks-def.h"	/* FIXME: for lhd_set_decl_assembler_name */
- #include "tree-pass.h"		/* FIXME: only for PROP_gimple_any */
-@@ -2288,6 +2289,7 @@ gimplify_call_expr (tree *expr_p, gimple_seq *pre_p, bool want_value)
-       case BUILT_IN_FILE:
- 	{
- 	  expanded_location loc = expand_location (EXPR_LOCATION (*expr_p));
-+	  loc.file = remap_file_filename (loc.file);
- 	  *expr_p = build_string_literal (strlen (loc.file) + 1, loc.file);
- 	  return GS_OK;
- 	}
-diff --git a/libcpp/Makefile.in b/libcpp/Makefile.in
-index 5561c97..5017256 100644
---- a/libcpp/Makefile.in
-+++ b/libcpp/Makefile.in
-@@ -84,12 +84,12 @@ DEPMODE = $(CXXDEPMODE)
- 
- 
- libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
--	expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
--	mkdeps.o pch.o symtab.o traditional.o
-+	expr.o file-map.o files.o identifiers.o init.o lex.o line-map.o \
-+	macro.o mkdeps.o pch.o symtab.o traditional.o
- 
- libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
--	expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
--	mkdeps.c pch.c symtab.c traditional.c
-+	expr.c file-map.c files.c identifiers.c init.c lex.c line-map.c \
-+	macro.c mkdeps.c pch.c symtab.c traditional.c
- 
- all: libcpp.a $(USED_CATALOGS)
- 
-@@ -263,7 +263,7 @@ po/$(PACKAGE).pot: $(libcpp_a_SOURCES)
- 
- TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \
-     include/line-map.h include/symtab.h include/cpp-id-data.h \
--    include/cpplib.h include/mkdeps.h system.h
-+    include/cpplib.h include/mkdeps.h system.h include/file-map.h
- 
- TAGS: $(TAGS_SOURCES)
- 	cd $(srcdir) && etags $(TAGS_SOURCES)
-diff --git a/libcpp/file-map.c b/libcpp/file-map.c
-new file mode 100644
-index 0000000..04e851b
---- /dev/null
-+++ b/libcpp/file-map.c
-@@ -0,0 +1,92 @@
-+/* Map one directory name to another in __FILE__, __BASE_FILE__
-+   and __builtin_FILE ().
-+   Copyright (C) 2001-2016 Free Software Foundation, Inc.
-+
-+This program is free software; you can redistribute it and/or modify it
-+under the terms of the GNU General Public License as published by the
-+Free Software Foundation; either version 3, or (at your option) any
-+later version.
-+
-+This program is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with this program; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.
-+
-+ In other words, you are welcome to use, share and improve this program.
-+ You are forbidden to forbid anyone else to use, share and improve
-+ what you give them.   Help stamp out software-hoarding!  */
-+
-+#include "config.h"
-+#include "system.h"
-+#include "file-map.h"
-+
-+/* Structure recording the mapping from source file and directory
-+   names at compile time to __FILE__ */
-+typedef struct file_prefix_map
-+{
-+  const char *old_prefix;
-+  const char *new_prefix;
-+  size_t old_len;
-+  size_t new_len;
-+  struct file_prefix_map *next;
-+} file_prefix_map;
-+
-+/* Linked list of such structures.  */
-+static file_prefix_map *file_prefix_maps;
-+
-+/* Record prefix mapping of __FILE__.  ARG is the argument to
-+   -ffile-prefix-map and must be of the form OLD=NEW.  */
-+int
-+add_file_prefix_map (const char *arg)
-+{
-+  file_prefix_map *map;
-+  const char *p;
-+
-+  p = strchr (arg, '=');
-+  if (!p)
-+  {
-+      fprintf(stderr, "invalid argument %qs to -ffile-prefix-map", arg);
-+      return -1;
-+  }
-+  map = XNEW (file_prefix_map);
-+  map->old_prefix = xstrndup (arg, p - arg);
-+  map->old_len = p - arg;
-+  p++;
-+  map->new_prefix = xstrdup (p);
-+  map->new_len = strlen (p);
-+  map->next = file_prefix_maps;
-+  file_prefix_maps = map;
-+
-+  return 0;
-+}
-+
-+/* Perform user-specified mapping of __FILE__ prefixes.  Return
-+   the new name corresponding to filename.  */
-+
-+const char *
-+remap_file_filename (const char *filename)
-+{
-+  file_prefix_map *map;
-+  char *s;
-+  const char *name;
-+  size_t name_len;
-+
-+  for (map = file_prefix_maps; map; map = map->next)
-+    if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
-+      break;
-+  if (!map)
-+    return filename;
-+  name = filename + map->old_len;
-+  name_len = strlen (name) + 1;
-+  s = (char *) alloca (name_len + map->new_len);
-+  memcpy (s, map->new_prefix, map->new_len);
-+  memcpy (s + map->new_len, name, name_len);
-+
-+  return xstrdup (s);
-+}
-+
-+
-diff --git a/libcpp/include/file-map.h b/libcpp/include/file-map.h
-new file mode 100644
-index 0000000..e6f8cbf
---- /dev/null
-+++ b/libcpp/include/file-map.h
-@@ -0,0 +1,30 @@
-+/* Map one directory name to another in __FILE__, __BASE_FILE__
-+   and __builtin_FILE ().
-+   Copyright (C) 2001-2016 Free Software Foundation, Inc.
-+
-+This program is free software; you can redistribute it and/or modify it
-+under the terms of the GNU General Public License as published by the
-+Free Software Foundation; either version 3, or (at your option) any
-+later version.
-+
-+This program is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with this program; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.
-+
-+ In other words, you are welcome to use, share and improve this program.
-+ You are forbidden to forbid anyone else to use, share and improve
-+ what you give them.   Help stamp out software-hoarding!  */
-+
-+#ifndef LIBCPP_FILE_MAP_H
-+#define LIBCPP_FILE_MAP_H
-+
-+const char * remap_file_filename (const char *filename);
-+
-+int add_file_prefix_map (const char *arg);
-+
-+#endif /* !LIBCPP_FILE_MAP_H  */
-diff --git a/libcpp/macro.c b/libcpp/macro.c
-index 11e50f4..5c6f90e 100644
---- a/libcpp/macro.c
-+++ b/libcpp/macro.c
-@@ -26,6 +26,7 @@ along with this program; see the file COPYING3.  If not see
- #include "system.h"
- #include "cpplib.h"
- #include "internal.h"
-+#include "file-map.h"
- 
- typedef struct macro_arg macro_arg;
- /* This structure represents the tokens of a macro argument.  These
-@@ -288,6 +289,7 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
- 	    if (!name)
- 	      abort ();
- 	  }
-+	name = remap_file_filename (name);
- 	len = strlen (name);
- 	buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
- 	result = buf;
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0073-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0073-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch
deleted file mode 100644
index 94e45ed..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0073-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 5e10baff84038d26dc3d59b2412ba1db92cb8274 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 17 Mar 2016 00:34:01 -0400
-Subject: [PATCH 2/2] Reuse -fdebug-prefix-map to replace -ffile-prefix-map
-
-The oe-core may use external toolchain to compile,
-which may not support -ffile-prefix-map.
-
-Since we use -fdebug-prefix-map to do the same thing,
-so we could reuse it to replace -ffile-prefix-map.
-
-Upstream-Status: Inappropriate[oe-core specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/opts-global.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/gcc/opts-global.c b/gcc/opts-global.c
-index 111884b..037f6c8 100644
---- a/gcc/opts-global.c
-+++ b/gcc/opts-global.c
-@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
- #include "toplev.h"
- #include "tree-pass.h"
- #include "context.h"
-+#include "file-map.h"
- 
- typedef const char *const_char_p; /* For DEF_VEC_P.  */
- 
-@@ -354,6 +355,9 @@ handle_common_deferred_options (void)
- 
- 	case OPT_fdebug_prefix_map_:
- 	  add_debug_prefix_map (opt->arg);
-+
-+	  /* Reuse -fdebug-prefix-map to replace -ffile-prefix-map */
-+	  add_file_prefix_map (opt->arg);
- 	  break;
- 
- 	case OPT_fdump_:
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0074-fdebug-prefix-map-support-to-remap-relative-path.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0074-fdebug-prefix-map-support-to-remap-relative-path.patch
deleted file mode 100644
index 0b91fdb..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-4.9/0074-fdebug-prefix-map-support-to-remap-relative-path.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 289ad2969a5966c603bf6928ce442db74c4cbb25 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 24 Mar 2016 11:23:14 -0400
-Subject: [PATCH] gcc/final.c: -fdebug-prefix-map support to remap sources with
- relative path
-
-PR other/70428
-* final.c (remap_debug_filename): Use lrealpath to translate
-relative path before remapping
-
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70428
-Upstream-Status: Submitted [gcc-patches@gcc.gnu.org]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
-diff --git a/gcc/final.c b/gcc/final.c
-index 55cf509..c3594c2 100644
---- a/gcc/final.c
-+++ b/gcc/final.c
-@@ -1554,16 +1554,25 @@ remap_debug_filename (const char *filename)
-   const char *name;
-   size_t name_len;
- 
-+  /* Support to remap filename with relative path  */
-+  char *realpath = lrealpath (filename);
-+  if (realpath == NULL)
-+    return filename;
-+
-   for (map = debug_prefix_maps; map; map = map->next)
--    if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
-+    if (filename_ncmp (realpath, map->old_prefix, map->old_len) == 0)
-       break;
-   if (!map)
--    return filename;
--  name = filename + map->old_len;
-+    {
-+      free (realpath);
-+      return filename;
-+    }
-+  name = realpath + map->old_len;
-   name_len = strlen (name) + 1;
-   s = (char *) alloca (name_len + map->new_len);
-   memcpy (s, map->new_prefix, map->new_len);
-   memcpy (s + map->new_len, name, name_len);
-+  free (realpath);
-   return ggc_strdup (s);
- }
- 
--- 
-2.7.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3.inc
deleted file mode 100644
index 9808be1..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3.inc
+++ /dev/null
@@ -1,143 +0,0 @@
-require gcc-common.inc
-
-# Third digit in PV should be incremented after a minor release
-
-PV = "5.3.0"
-
-#SNAP = "5-20150405"
-
-# BINV should be incremented to a revision after a minor gcc release
-
-BINV = "5.3.0"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-5.3:${FILE_DIRNAME}/gcc-5.3/backport:"
-
-DEPENDS =+ "mpfr gmp libmpc zlib"
-NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
-
-LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
-
-LIC_FILES_CHKSUM = "\
-    file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
-    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
-    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
-    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-    file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \
-"
-#BASEURI = "http://www.netgull.com/gcc/snapshots/${SNAP}/gcc-${SNAP}.tar.bz2"
-BASEURI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2"
-
-SRC_URI = "\
-           ${BASEURI} \
-           ${BACKPORTS} \
-           file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
-           file://0002-uclibc-conf.patch \
-           file://0003-gcc-uclibc-locale-ctype_touplow_t.patch \
-           file://0004-uclibc-locale.patch \
-           file://0005-uclibc-locale-no__x.patch \
-           file://0006-uclibc-locale-wchar_fix.patch \
-           file://0007-uclibc-locale-update.patch \
-           file://0008-missing-execinfo_h.patch \
-           file://0009-c99-snprintf.patch \
-           file://0010-gcc-poison-system-directories.patch \
-           file://0011-gcc-poison-dir-extend.patch \
-           file://0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
-           file://0013-64-bit-multilib-hack.patch \
-           file://0014-optional-libstdc.patch \
-           file://0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
-           file://0016-COLLECT_GCC_OPTIONS.patch \
-           file://0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
-           file://0018-fortran-cross-compile-hack.patch \
-           file://0019-libgcc-sjlj-check.patch \
-           file://0020-cpp-honor-sysroot.patch \
-           file://0021-MIPS64-Default-to-N64-ABI.patch \
-           file://0022-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
-           file://0023-gcc-Fix-argument-list-too-long-error.patch \
-           file://0024-Disable-sdt.patch \
-           file://0025-libtool.patch \
-           file://0026-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
-           file://0027-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
-           file://0028-Avoid-using-libdir-from-.la-which-usually-points-to-.patch \
-           file://0029-export-CPP.patch \
-           file://0030-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch \
-           file://0031-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch \
-           file://0032-Ensure-target-gcc-headers-can-be-included.patch \
-           file://0033-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch \
-           file://0034-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
-           file://0035-Dont-link-the-plugins-with-libgomp-explicitly.patch \
-           file://0036-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
-           file://0037-aarch64-Add-support-for-musl-ldso.patch \
-           file://0038-fix-g-sysroot.patch \
-           file://0039-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
-           file://0040-handle-sysroot-support-for-nativesdk-gcc.patch \
-           file://0041-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
-           file://0042-Fix-various-_FOR_BUILD-and-related-variables.patch \
-           file://0043-libstdc-Support-musl.patch \
-           file://0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch \
-           file://0045-Support-for-arm-linux-musl.patch \
-           file://0046-Get-rid-of-ever-broken-fixincludes-on-musl.patch \
-           file://0047-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
-           file://0048-ssp_nonshared.patch \
-           file://0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch \
-           file://0050-powerpc-pass-secure-plt-to-the-linker.patch \
-           file://0051-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch \
-           file://0052-nios2-use-ret-with-r31.patch \
-           file://0053-expr.c-PR-target-65358-Avoid-clobbering-partial-argu.patch \
-           file://0054-support-ffile-prefix-map.patch \
-           file://0055-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch \
-           file://0056-Enable-libc-provide-ssp-and-gcc_cv_target_dl_iterate.patch \
-           file://0057-unwind-fix-for-musl.patch \
-           file://0058-fdebug-prefix-map-support-to-remap-relative-path.patch \
-"
-
-BACKPORTS = ""
-
-SRC_URI[md5sum] = "c9616fd448f980259c31de613e575719"
-SRC_URI[sha256sum] = "b84f5592e9218b73dbae612b5253035a7b34a9a1f7688d2e1bfaaf7267d5c4db"
-
-#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${SNAP}"
-S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
-B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
-
-# Language Overrides
-FORTRAN = ""
-JAVA = ""
-
-LTO = "--enable-lto"
-
-EXTRA_OECONF_BASE = "\
-    ${LTO} \
-    --enable-libssp \
-    --enable-libitm \
-    --disable-bootstrap \
-    --disable-libmudflap \
-    --with-system-zlib \
-    --with-linker-hash-style=${LINKER_HASH_STYLE} \
-    --enable-linker-build-id \
-    --with-ppl=no \
-    --with-cloog=no \
-    --enable-checking=release \
-    --enable-cheaders=c_global \
-    --without-isl \
-"
-
-EXTRA_OECONF_INITIAL = "\
-    --disable-libmudflap \
-    --disable-libgomp \
-    --disable-libitm \
-    --disable-libquadmath \
-    --with-system-zlib \
-    --disable-lto \
-    --disable-plugin \
-    --enable-decimal-float=no \
-    --without-isl \
-    gcc_cv_libc_provides_ssp=yes \
-"
-
-EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
-
-EXTRA_OECONF_PATHS = "\
-    --with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
-    --with-sysroot=/not/exist \
-    --with-build-sysroot=${STAGING_DIR_TARGET} \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch
deleted file mode 100644
index b91c02d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch
+++ /dev/null
@@ -1,270 +0,0 @@
-From 0b54799d80fb859c7b142467e4d42c99db59df50 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 8 Dec 2015 08:30:35 +0000
-Subject: [PATCH 44/46] Adding -mmusl as a musl libc specifier, and the
- necessary hacks for it to know how to find musl's dynamic linker.
-
-Upstream-Status: Backport [partial]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config.gcc                |  10 ++++-
- gcc/config/linux.h            | 100 +++++++++++++++++++++++++++++++++++++-----
- gcc/config/linux.opt          |   4 ++
- gcc/config/rs6000/secureplt.h |   1 +
- gcc/config/rs6000/sysv4.h     |   5 +++
- gcc/ginclude/stddef.h         |   3 ++
- 6 files changed, 110 insertions(+), 13 deletions(-)
-
-diff --git a/gcc/config.gcc b/gcc/config.gcc
-index 3825bd5..39ce047 100644
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -575,7 +575,7 @@ case ${target} in
- esac
- 
- # Common C libraries.
--tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
-+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
- 
- # 32-bit x86 processors supported by --with-arch=.  Each processor
- # MUST be separated by exactly one space.
-@@ -720,6 +720,9 @@ case ${target} in
-     *-*-*uclibc*)
-       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
-       ;;
-+    *-*-*musl*)
-+      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
-+      ;;
-     *)
-       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
-       ;;
-@@ -2420,6 +2423,11 @@ powerpc*-*-linux*)
- 	    powerpc*-*-linux*paired*)
- 		tm_file="${tm_file} rs6000/750cl.h" ;;
- 	esac
-+        case ${target} in
-+	    *-linux*-musl*)
-+		enable_secureplt=yes ;;
-+	esac
-+
- 	if test x${enable_secureplt} = xyes; then
- 		tm_file="rs6000/secureplt.h ${tm_file}"
- 	fi
-diff --git a/gcc/config/linux.h b/gcc/config/linux.h
-index 22b9be5..ca9a17f 100644
---- a/gcc/config/linux.h
-+++ b/gcc/config/linux.h
-@@ -32,10 +32,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
- #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
- #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
-+#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
- #else
- #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
- #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
- #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
-+#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
- #endif
- 
- #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
-@@ -53,18 +55,21 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-    uClibc or Bionic is the default C library and whether
-    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
- 
--#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
--  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
-+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
-+  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
- 
- #if DEFAULT_LIBC == LIBC_GLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
--  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
- #elif DEFAULT_LIBC == LIBC_UCLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
--  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
- #elif DEFAULT_LIBC == LIBC_BIONIC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
--  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
-+#elif DEFAULT_LIBC == LIBC_MUSL
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
- #else
- #error "Unsupported DEFAULT_LIBC"
- #endif /* DEFAULT_LIBC */
-@@ -84,16 +89,16 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- 
- #define GNU_USER_DYNAMIC_LINKER						\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
--			 BIONIC_DYNAMIC_LINKER)
-+			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
- #define GNU_USER_DYNAMIC_LINKER32					\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
--			 BIONIC_DYNAMIC_LINKER32)
-+			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
- #define GNU_USER_DYNAMIC_LINKER64					\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
--			 BIONIC_DYNAMIC_LINKER64)
-+			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
- #define GNU_USER_DYNAMIC_LINKERX32					\
-   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
--			 BIONIC_DYNAMIC_LINKERX32)
-+			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
- 
- /* Whether we have Bionic libc runtime */
- #undef TARGET_HAS_BIONIC
-@@ -123,3 +128,74 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- # define TARGET_LIBC_HAS_FUNCTION linux_libc_has_function
- 
- #endif
-+
-+/* musl avoids problematic includes by rearranging the include directories.
-+ * Unfortunately, this is mostly duplicated from cppdefault.c */
-+#if DEFAULT_LIBC == LIBC_MUSL
-+#define INCLUDE_DEFAULTS_MUSL_GPP			\
-+    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
-+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
-+    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
-+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
-+    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
-+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
-+
-+#ifdef LOCAL_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
-+    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
-+    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_LOCAL
-+#endif
-+
-+#ifdef PREFIX_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
-+    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_PREFIX
-+#endif
-+
-+#ifdef CROSS_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_CROSS			\
-+    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_CROSS
-+#endif
-+
-+#ifdef TOOL_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_TOOL			\
-+    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_TOOL
-+#endif
-+
-+#ifdef NATIVE_SYSTEM_HEADER_DIR
-+#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
-+    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
-+    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_NATIVE
-+#endif
-+
-+#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
-+# undef INCLUDE_DEFAULTS_MUSL_LOCAL
-+# define INCLUDE_DEFAULTS_MUSL_LOCAL
-+# undef INCLUDE_DEFAULTS_MUSL_NATIVE
-+# define INCLUDE_DEFAULTS_MUSL_NATIVE
-+#else
-+# undef INCLUDE_DEFAULTS_MUSL_CROSS
-+# define INCLUDE_DEFAULTS_MUSL_CROSS
-+#endif
-+
-+#undef INCLUDE_DEFAULTS
-+#define INCLUDE_DEFAULTS				\
-+  {							\
-+    INCLUDE_DEFAULTS_MUSL_GPP				\
-+    INCLUDE_DEFAULTS_MUSL_PREFIX			\
-+    INCLUDE_DEFAULTS_MUSL_CROSS				\
-+    INCLUDE_DEFAULTS_MUSL_TOOL				\
-+    INCLUDE_DEFAULTS_MUSL_NATIVE			\
-+    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
-+    { 0, 0, 0, 0, 0, 0 }				\
-+  }
-+#endif
-diff --git a/gcc/config/linux.opt b/gcc/config/linux.opt
-index c054338..9334f74 100644
---- a/gcc/config/linux.opt
-+++ b/gcc/config/linux.opt
-@@ -30,3 +30,7 @@ Use GNU C library
- muclibc
- Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
- Use uClibc C library
-+
-+mmusl
-+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
-+Use musl C library
-diff --git a/gcc/config/rs6000/secureplt.h b/gcc/config/rs6000/secureplt.h
-index b463463..77edf2a 100644
---- a/gcc/config/rs6000/secureplt.h
-+++ b/gcc/config/rs6000/secureplt.h
-@@ -18,3 +18,4 @@ along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
- 
- #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
-+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
-diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
-index c6c31dc..7cd07e0 100644
---- a/gcc/config/rs6000/sysv4.h
-+++ b/gcc/config/rs6000/sysv4.h
-@@ -538,6 +538,10 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
- #define CC1_SECURE_PLT_DEFAULT_SPEC ""
- #endif
- 
-+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
-+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
-+#endif
-+
- /* Pass -G xxx to the compiler.  */
- #undef CC1_SPEC
- #define	CC1_SPEC "%{G*} %(cc1_cpu)" \
-@@ -889,6 +893,7 @@ ncrtn.o%s"
-   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
-   { "link_os_default",		LINK_OS_DEFAULT_SPEC },			\
-   { "cc1_secure_plt_default",	CC1_SECURE_PLT_DEFAULT_SPEC },		\
-+  { "link_secure_plt_default",	LINK_SECURE_PLT_DEFAULT_SPEC },		\
-   { "cpp_os_ads",		CPP_OS_ADS_SPEC },			\
-   { "cpp_os_yellowknife",	CPP_OS_YELLOWKNIFE_SPEC },		\
-   { "cpp_os_mvme",		CPP_OS_MVME_SPEC },			\
-diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
-index f20a41b..eb879ef 100644
---- a/gcc/ginclude/stddef.h
-+++ b/gcc/ginclude/stddef.h
-@@ -184,6 +184,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
- #ifndef _GCC_SIZE_T
- #ifndef _SIZET_
- #ifndef __size_t
-+#ifndef __DEFINED_size_t /* musl */
- #define __size_t__	/* BeOS */
- #define __SIZE_T__	/* Cray Unicos/Mk */
- #define _SIZE_T
-@@ -200,6 +201,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
- #define ___int_size_t_h
- #define _GCC_SIZE_T
- #define _SIZET_
-+#define __DEFINED_size_t /* musl */
- #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
-   || defined(__DragonFly__) \
-   || defined(__FreeBSD_kernel__)
-@@ -218,6 +220,7 @@ typedef __SIZE_TYPE__ size_t;
- typedef long ssize_t;
- #endif /* __BEOS__ */
- #endif /* !(defined (__GNUG__) && defined (size_t)) */
-+#endif /* __DEFINED_size_t */
- #endif /* __size_t */
- #endif /* _SIZET_ */
- #endif /* _GCC_SIZE_T */
--- 
-2.6.3
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4.inc
new file mode 100644
index 0000000..338530f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4.inc
@@ -0,0 +1,146 @@
+require gcc-common.inc
+
+# Third digit in PV should be incremented after a minor release
+
+PV = "5.4.0"
+
+#SNAP = "5-20150405"
+
+# BINV should be incremented to a revision after a minor gcc release
+
+BINV = "5.4.0"
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-5.4:${FILE_DIRNAME}/gcc-5.4/backport:"
+
+DEPENDS =+ "mpfr gmp libmpc zlib"
+NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
+
+LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
+
+LIC_FILES_CHKSUM = "\
+    file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
+    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+    file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \
+"
+#BASEURI = "http://www.netgull.com/gcc/snapshots/${SNAP}/gcc-${SNAP}.tar.bz2"
+BASEURI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2"
+
+SRC_URI = "\
+           ${BASEURI} \
+           ${BACKPORTS} \
+           file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
+           file://0002-uclibc-conf.patch \
+           file://0003-gcc-uclibc-locale-ctype_touplow_t.patch \
+           file://0004-uclibc-locale.patch \
+           file://0005-uclibc-locale-no__x.patch \
+           file://0006-uclibc-locale-wchar_fix.patch \
+           file://0007-uclibc-locale-update.patch \
+           file://0008-missing-execinfo_h.patch \
+           file://0009-c99-snprintf.patch \
+           file://0010-gcc-poison-system-directories.patch \
+           file://0011-gcc-poison-dir-extend.patch \
+           file://0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
+           file://0013-64-bit-multilib-hack.patch \
+           file://0014-optional-libstdc.patch \
+           file://0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
+           file://0016-COLLECT_GCC_OPTIONS.patch \
+           file://0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
+           file://0018-fortran-cross-compile-hack.patch \
+           file://0019-libgcc-sjlj-check.patch \
+           file://0020-cpp-honor-sysroot.patch \
+           file://0021-MIPS64-Default-to-N64-ABI.patch \
+           file://0022-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
+           file://0023-gcc-Fix-argument-list-too-long-error.patch \
+           file://0024-Disable-sdt.patch \
+           file://0025-libtool.patch \
+           file://0026-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
+           file://0027-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
+           file://0028-Avoid-using-libdir-from-.la-which-usually-points-to-.patch \
+           file://0029-export-CPP.patch \
+           file://0030-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch \
+           file://0031-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch \
+           file://0032-Ensure-target-gcc-headers-can-be-included.patch \
+           file://0033-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch \
+           file://0034-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
+           file://0035-Dont-link-the-plugins-with-libgomp-explicitly.patch \
+           file://0036-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
+           file://0037-aarch64-Add-support-for-musl-ldso.patch \
+           file://0038-fix-g-sysroot.patch \
+           file://0039-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
+           file://0040-handle-sysroot-support-for-nativesdk-gcc.patch \
+           file://0041-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
+           file://0042-Fix-various-_FOR_BUILD-and-related-variables.patch \
+           file://0043-libstdc-Support-musl.patch \
+           file://0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch \
+           file://0045-Support-for-arm-linux-musl.patch \
+           file://0046-Get-rid-of-ever-broken-fixincludes-on-musl.patch \
+           file://0047-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
+           file://0048-ssp_nonshared.patch \
+           file://0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch \
+           file://0050-powerpc-pass-secure-plt-to-the-linker.patch \
+           file://0051-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch \
+           file://0052-nios2-use-ret-with-r31.patch \
+           file://0053-expr.c-PR-target-65358-Avoid-clobbering-partial-argu.patch \
+           file://0054-support-ffile-prefix-map.patch \
+           file://0055-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch \
+           file://0056-Enable-libc-provide-ssp-and-gcc_cv_target_dl_iterate.patch \
+           file://0057-unwind-fix-for-musl.patch \
+           file://0058-fdebug-prefix-map-support-to-remap-relative-path.patch \
+           file://0059-libgcc-use-ldflags.patch \
+"
+
+BACKPORTS = ""
+
+SRC_URI[md5sum] = "4c626ac2a83ef30dfb9260e6f59c2b30"
+SRC_URI[sha256sum] = "608df76dec2d34de6558249d8af4cbee21eceddbcb580d666f7a5a583ca3303a"
+
+UPSTREAM_CHECK_REGEX = "gcc-(?P<pver>5\.\d+\.\d+).tar"
+
+#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${SNAP}"
+S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
+B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
+
+# Language Overrides
+FORTRAN = ""
+JAVA = ""
+
+LTO = "--enable-lto"
+
+EXTRA_OECONF_BASE = "\
+    ${LTO} \
+    --enable-libssp \
+    --enable-libitm \
+    --disable-bootstrap \
+    --disable-libmudflap \
+    --with-system-zlib \
+    --with-linker-hash-style=${LINKER_HASH_STYLE} \
+    --enable-linker-build-id \
+    --with-ppl=no \
+    --with-cloog=no \
+    --enable-checking=release \
+    --enable-cheaders=c_global \
+    --without-isl \
+"
+
+EXTRA_OECONF_INITIAL = "\
+    --disable-libmudflap \
+    --disable-libgomp \
+    --disable-libitm \
+    --disable-libquadmath \
+    --with-system-zlib \
+    --disable-lto \
+    --disable-plugin \
+    --enable-decimal-float=no \
+    --without-isl \
+    gcc_cv_libc_provides_ssp=yes \
+"
+
+EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
+
+EXTRA_OECONF_PATHS = "\
+    --with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
+    --with-sysroot=/not/exist \
+    --with-build-sysroot=${STAGING_DIR_TARGET} \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0002-uclibc-conf.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0002-uclibc-conf.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0002-uclibc-conf.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0002-uclibc-conf.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0003-gcc-uclibc-locale-ctype_touplow_t.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0003-gcc-uclibc-locale-ctype_touplow_t.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0003-gcc-uclibc-locale-ctype_touplow_t.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0003-gcc-uclibc-locale-ctype_touplow_t.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0004-uclibc-locale.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0004-uclibc-locale.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0004-uclibc-locale.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0004-uclibc-locale.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0005-uclibc-locale-no__x.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0005-uclibc-locale-no__x.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0005-uclibc-locale-no__x.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0005-uclibc-locale-no__x.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0006-uclibc-locale-wchar_fix.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0006-uclibc-locale-wchar_fix.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0006-uclibc-locale-wchar_fix.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0006-uclibc-locale-wchar_fix.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0007-uclibc-locale-update.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0007-uclibc-locale-update.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0007-uclibc-locale-update.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0007-uclibc-locale-update.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0008-missing-execinfo_h.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0008-missing-execinfo_h.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0008-missing-execinfo_h.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0008-missing-execinfo_h.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0009-c99-snprintf.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0009-c99-snprintf.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0009-c99-snprintf.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0009-c99-snprintf.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0010-gcc-poison-system-directories.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0010-gcc-poison-system-directories.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0010-gcc-poison-system-directories.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0010-gcc-poison-system-directories.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0011-gcc-poison-dir-extend.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0011-gcc-poison-dir-extend.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0011-gcc-poison-dir-extend.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0011-gcc-poison-dir-extend.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0013-64-bit-multilib-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0013-64-bit-multilib-hack.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0013-64-bit-multilib-hack.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0013-64-bit-multilib-hack.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0014-optional-libstdc.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0014-optional-libstdc.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0014-optional-libstdc.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0014-optional-libstdc.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0016-COLLECT_GCC_OPTIONS.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0016-COLLECT_GCC_OPTIONS.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0016-COLLECT_GCC_OPTIONS.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0016-COLLECT_GCC_OPTIONS.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0018-fortran-cross-compile-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0018-fortran-cross-compile-hack.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0018-fortran-cross-compile-hack.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0018-fortran-cross-compile-hack.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0019-libgcc-sjlj-check.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0019-libgcc-sjlj-check.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0019-libgcc-sjlj-check.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0019-libgcc-sjlj-check.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0020-cpp-honor-sysroot.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0020-cpp-honor-sysroot.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0020-cpp-honor-sysroot.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0020-cpp-honor-sysroot.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0021-MIPS64-Default-to-N64-ABI.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0021-MIPS64-Default-to-N64-ABI.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0021-MIPS64-Default-to-N64-ABI.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0021-MIPS64-Default-to-N64-ABI.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0022-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0022-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0022-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0022-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0023-gcc-Fix-argument-list-too-long-error.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0023-gcc-Fix-argument-list-too-long-error.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0023-gcc-Fix-argument-list-too-long-error.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0023-gcc-Fix-argument-list-too-long-error.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0024-Disable-sdt.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0024-Disable-sdt.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0024-Disable-sdt.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0024-Disable-sdt.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0025-libtool.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0025-libtool.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0025-libtool.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0025-libtool.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0026-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0026-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0026-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0026-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0027-Use-the-multilib-config-files-from-B-instead-of-usin.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0027-Use-the-multilib-config-files-from-B-instead-of-usin.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0027-Use-the-multilib-config-files-from-B-instead-of-usin.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0027-Use-the-multilib-config-files-from-B-instead-of-usin.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0028-Avoid-using-libdir-from-.la-which-usually-points-to-.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0028-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0028-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0028-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0029-export-CPP.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0029-export-CPP.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0029-export-CPP.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0029-export-CPP.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0030-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0030-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0030-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0030-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0031-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0031-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0031-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0031-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0032-Ensure-target-gcc-headers-can-be-included.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0032-Ensure-target-gcc-headers-can-be-included.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0032-Ensure-target-gcc-headers-can-be-included.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0032-Ensure-target-gcc-headers-can-be-included.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0033-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0033-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0033-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0033-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0034-Don-t-search-host-directory-during-relink-if-inst_pr.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0034-Don-t-search-host-directory-during-relink-if-inst_pr.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0034-Don-t-search-host-directory-during-relink-if-inst_pr.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0034-Don-t-search-host-directory-during-relink-if-inst_pr.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0035-Dont-link-the-plugins-with-libgomp-explicitly.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0035-Dont-link-the-plugins-with-libgomp-explicitly.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0035-Dont-link-the-plugins-with-libgomp-explicitly.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0035-Dont-link-the-plugins-with-libgomp-explicitly.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0036-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0036-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0036-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0036-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0037-aarch64-Add-support-for-musl-ldso.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0037-aarch64-Add-support-for-musl-ldso.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0037-aarch64-Add-support-for-musl-ldso.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0037-aarch64-Add-support-for-musl-ldso.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0038-fix-g-sysroot.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0038-fix-g-sysroot.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0038-fix-g-sysroot.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0038-fix-g-sysroot.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0039-libcc1-fix-libcc1-s-install-path-and-rpath.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0039-libcc1-fix-libcc1-s-install-path-and-rpath.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0039-libcc1-fix-libcc1-s-install-path-and-rpath.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0039-libcc1-fix-libcc1-s-install-path-and-rpath.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0040-handle-sysroot-support-for-nativesdk-gcc.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0040-handle-sysroot-support-for-nativesdk-gcc.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0040-handle-sysroot-support-for-nativesdk-gcc.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0040-handle-sysroot-support-for-nativesdk-gcc.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0041-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0041-Search-target-sysroot-gcc-version-specific-dirs-with.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0041-Search-target-sysroot-gcc-version-specific-dirs-with.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0041-Search-target-sysroot-gcc-version-specific-dirs-with.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0042-Fix-various-_FOR_BUILD-and-related-variables.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0042-Fix-various-_FOR_BUILD-and-related-variables.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0042-Fix-various-_FOR_BUILD-and-related-variables.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0042-Fix-various-_FOR_BUILD-and-related-variables.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0043-libstdc-Support-musl.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0043-libstdc-Support-musl.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0043-libstdc-Support-musl.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0043-libstdc-Support-musl.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch
new file mode 100644
index 0000000..26aa96c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0044-Adding-mmusl-as-a-musl-libc-specifier-and-the-necess.patch
@@ -0,0 +1,270 @@
+From 0b54799d80fb859c7b142467e4d42c99db59df50 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 8 Dec 2015 08:30:35 +0000
+Subject: [PATCH 44/46] Adding -mmusl as a musl libc specifier, and the
+ necessary hacks for it to know how to find musl's dynamic linker.
+
+Upstream-Status: Backport [partial]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/config.gcc                |  10 ++++-
+ gcc/config/linux.h            | 100 +++++++++++++++++++++++++++++++++++++-----
+ gcc/config/linux.opt          |   4 ++
+ gcc/config/rs6000/secureplt.h |   1 +
+ gcc/config/rs6000/sysv4.h     |   5 +++
+ gcc/ginclude/stddef.h         |   3 ++
+ 6 files changed, 110 insertions(+), 13 deletions(-)
+
+Index: gcc-5.4.0/gcc/config.gcc
+===================================================================
+--- gcc-5.4.0.orig/gcc/config.gcc
++++ gcc-5.4.0/gcc/config.gcc
+@@ -575,7 +575,7 @@ case ${target} in
+ esac
+ 
+ # Common C libraries.
+-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
+ 
+ # 32-bit x86 processors supported by --with-arch=.  Each processor
+ # MUST be separated by exactly one space.
+@@ -720,6 +720,9 @@ case ${target} in
+     *-*-*uclibc*)
+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
+       ;;
++    *-*-*musl*)
++      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
++      ;;
+     *)
+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
+       ;;
+@@ -2420,6 +2423,11 @@ powerpc*-*-linux*)
+ 	    powerpc*-*-linux*paired*)
+ 		tm_file="${tm_file} rs6000/750cl.h" ;;
+ 	esac
++        case ${target} in
++	    *-linux*-musl*)
++		enable_secureplt=yes ;;
++	esac
++
+ 	if test x${enable_secureplt} = xyes; then
+ 		tm_file="rs6000/secureplt.h ${tm_file}"
+ 	fi
+Index: gcc-5.4.0/gcc/config/linux.h
+===================================================================
+--- gcc-5.4.0.orig/gcc/config/linux.h
++++ gcc-5.4.0/gcc/config/linux.h
+@@ -32,10 +32,12 @@ see the files COPYING3 and COPYING.RUNTI
+ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
+ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
+ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
+ #else
+ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
+ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
+ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
+ #endif
+ 
+ #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
+@@ -53,18 +55,21 @@ see the files COPYING3 and COPYING.RUNTI
+    uClibc or Bionic is the default C library and whether
+    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
+ 
+-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
+-  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
++  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
+ 
+ #if DEFAULT_LIBC == LIBC_GLIBC
+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
+-  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
+ #elif DEFAULT_LIBC == LIBC_UCLIBC
+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
+-  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
+ #elif DEFAULT_LIBC == LIBC_BIONIC
+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
+-  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
++#elif DEFAULT_LIBC == LIBC_MUSL
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
+ #else
+ #error "Unsupported DEFAULT_LIBC"
+ #endif /* DEFAULT_LIBC */
+@@ -84,16 +89,16 @@ see the files COPYING3 and COPYING.RUNTI
+ 
+ #define GNU_USER_DYNAMIC_LINKER						\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
+-			 BIONIC_DYNAMIC_LINKER)
++			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
+ #define GNU_USER_DYNAMIC_LINKER32					\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
+-			 BIONIC_DYNAMIC_LINKER32)
++			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
+ #define GNU_USER_DYNAMIC_LINKER64					\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
+-			 BIONIC_DYNAMIC_LINKER64)
++			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
+ #define GNU_USER_DYNAMIC_LINKERX32					\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
+-			 BIONIC_DYNAMIC_LINKERX32)
++			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
+ 
+ /* Whether we have Bionic libc runtime */
+ #undef TARGET_HAS_BIONIC
+@@ -123,3 +128,74 @@ see the files COPYING3 and COPYING.RUNTI
+ # define TARGET_LIBC_HAS_FUNCTION linux_libc_has_function
+ 
+ #endif
++
++/* musl avoids problematic includes by rearranging the include directories.
++ * Unfortunately, this is mostly duplicated from cppdefault.c */
++#if DEFAULT_LIBC == LIBC_MUSL
++#define INCLUDE_DEFAULTS_MUSL_GPP			\
++    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
++    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
++    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
++
++#ifdef LOCAL_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
++#else
++#define INCLUDE_DEFAULTS_MUSL_LOCAL
++#endif
++
++#ifdef PREFIX_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
++    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_PREFIX
++#endif
++
++#ifdef CROSS_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_CROSS			\
++    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_CROSS
++#endif
++
++#ifdef TOOL_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_TOOL			\
++    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_TOOL
++#endif
++
++#ifdef NATIVE_SYSTEM_HEADER_DIR
++#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
++#else
++#define INCLUDE_DEFAULTS_MUSL_NATIVE
++#endif
++
++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
++# define INCLUDE_DEFAULTS_MUSL_LOCAL
++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
++# define INCLUDE_DEFAULTS_MUSL_NATIVE
++#else
++# undef INCLUDE_DEFAULTS_MUSL_CROSS
++# define INCLUDE_DEFAULTS_MUSL_CROSS
++#endif
++
++#undef INCLUDE_DEFAULTS
++#define INCLUDE_DEFAULTS				\
++  {							\
++    INCLUDE_DEFAULTS_MUSL_GPP				\
++    INCLUDE_DEFAULTS_MUSL_PREFIX			\
++    INCLUDE_DEFAULTS_MUSL_CROSS				\
++    INCLUDE_DEFAULTS_MUSL_TOOL				\
++    INCLUDE_DEFAULTS_MUSL_NATIVE			\
++    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
++    { 0, 0, 0, 0, 0, 0 }				\
++  }
++#endif
+Index: gcc-5.4.0/gcc/config/linux.opt
+===================================================================
+--- gcc-5.4.0.orig/gcc/config/linux.opt
++++ gcc-5.4.0/gcc/config/linux.opt
+@@ -28,5 +28,9 @@ Target Report RejectNegative Var(linux_l
+ Use GNU C library
+ 
+ muclibc
+-Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
++Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mmusl)
+ Use uClibc C library
++
++mmusl
++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mbionic)
++Use musl C library
+Index: gcc-5.4.0/gcc/config/rs6000/secureplt.h
+===================================================================
+--- gcc-5.4.0.orig/gcc/config/rs6000/secureplt.h
++++ gcc-5.4.0/gcc/config/rs6000/secureplt.h
+@@ -18,3 +18,4 @@ along with GCC; see the file COPYING3.
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
+Index: gcc-5.4.0/gcc/config/rs6000/sysv4.h
+===================================================================
+--- gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h
++++ gcc-5.4.0/gcc/config/rs6000/sysv4.h
+@@ -538,6 +538,10 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
+ #define CC1_SECURE_PLT_DEFAULT_SPEC ""
+ #endif
+ 
++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
++#endif
++
+ /* Pass -G xxx to the compiler.  */
+ #undef CC1_SPEC
+ #define	CC1_SPEC "%{G*} %(cc1_cpu)" \
+@@ -889,6 +893,7 @@ ncrtn.o%s"
+   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
+   { "link_os_default",		LINK_OS_DEFAULT_SPEC },			\
+   { "cc1_secure_plt_default",	CC1_SECURE_PLT_DEFAULT_SPEC },		\
++  { "link_secure_plt_default",	LINK_SECURE_PLT_DEFAULT_SPEC },		\
+   { "cpp_os_ads",		CPP_OS_ADS_SPEC },			\
+   { "cpp_os_yellowknife",	CPP_OS_YELLOWKNIFE_SPEC },		\
+   { "cpp_os_mvme",		CPP_OS_MVME_SPEC },			\
+Index: gcc-5.4.0/gcc/ginclude/stddef.h
+===================================================================
+--- gcc-5.4.0.orig/gcc/ginclude/stddef.h
++++ gcc-5.4.0/gcc/ginclude/stddef.h
+@@ -184,6 +184,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
+ #ifndef _GCC_SIZE_T
+ #ifndef _SIZET_
+ #ifndef __size_t
++#ifndef __DEFINED_size_t /* musl */
+ #define __size_t__	/* BeOS */
+ #define __SIZE_T__	/* Cray Unicos/Mk */
+ #define _SIZE_T
+@@ -200,6 +201,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
+ #define ___int_size_t_h
+ #define _GCC_SIZE_T
+ #define _SIZET_
++#define __DEFINED_size_t /* musl */
+ #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
+   || defined(__DragonFly__) \
+   || defined(__FreeBSD_kernel__)
+@@ -218,6 +220,7 @@ typedef __SIZE_TYPE__ size_t;
+ typedef long ssize_t;
+ #endif /* __BEOS__ */
+ #endif /* !(defined (__GNUG__) && defined (size_t)) */
++#endif /* __DEFINED_size_t */
+ #endif /* __size_t */
+ #endif /* _SIZET_ */
+ #endif /* _GCC_SIZE_T */
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0045-Support-for-arm-linux-musl.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0045-Support-for-arm-linux-musl.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0045-Support-for-arm-linux-musl.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0045-Support-for-arm-linux-musl.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0046-Get-rid-of-ever-broken-fixincludes-on-musl.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0046-Get-rid-of-ever-broken-fixincludes-on-musl.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0046-Get-rid-of-ever-broken-fixincludes-on-musl.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0046-Get-rid-of-ever-broken-fixincludes-on-musl.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0047-nios2-Define-MUSL_DYNAMIC_LINKER.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0047-nios2-Define-MUSL_DYNAMIC_LINKER.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0047-nios2-Define-MUSL_DYNAMIC_LINKER.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0047-nios2-Define-MUSL_DYNAMIC_LINKER.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0048-ssp_nonshared.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0048-ssp_nonshared.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0048-ssp_nonshared.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0048-ssp_nonshared.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0050-powerpc-pass-secure-plt-to-the-linker.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0050-powerpc-pass-secure-plt-to-the-linker.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0050-powerpc-pass-secure-plt-to-the-linker.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0050-powerpc-pass-secure-plt-to-the-linker.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0051-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0051-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0051-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0051-Ignore-fdebug-prefix-map-in-producer-string-by-Danie.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0052-nios2-use-ret-with-r31.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0052-nios2-use-ret-with-r31.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0052-nios2-use-ret-with-r31.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0052-nios2-use-ret-with-r31.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0053-expr.c-PR-target-65358-Avoid-clobbering-partial-argu.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0053-expr.c-PR-target-65358-Avoid-clobbering-partial-argu.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0053-expr.c-PR-target-65358-Avoid-clobbering-partial-argu.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0053-expr.c-PR-target-65358-Avoid-clobbering-partial-argu.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0054-support-ffile-prefix-map.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0054-support-ffile-prefix-map.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0054-support-ffile-prefix-map.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0054-support-ffile-prefix-map.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0055-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0055-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0055-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0055-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0056-Enable-libc-provide-ssp-and-gcc_cv_target_dl_iterate.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0056-Enable-libc-provide-ssp-and-gcc_cv_target_dl_iterate.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0056-Enable-libc-provide-ssp-and-gcc_cv_target_dl_iterate.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0056-Enable-libc-provide-ssp-and-gcc_cv_target_dl_iterate.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0057-unwind-fix-for-musl.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0057-unwind-fix-for-musl.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0057-unwind-fix-for-musl.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0057-unwind-fix-for-musl.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0058-fdebug-prefix-map-support-to-remap-relative-path.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0058-fdebug-prefix-map-support-to-remap-relative-path.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.3/0058-fdebug-prefix-map-support-to-remap-relative-path.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0058-fdebug-prefix-map-support-to-remap-relative-path.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0059-libgcc-use-ldflags.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0059-libgcc-use-ldflags.patch
new file mode 100644
index 0000000..325b72a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-5.4/0059-libgcc-use-ldflags.patch
@@ -0,0 +1,16 @@
+Link libgcc using LDFLAGS, not just SHLIB_LDFLAGS
+
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+Upstream-Status: Pending
+
+--- gcc-5.3.0.orig/libgcc/config/t-slibgcc
++++ gcc-5.3.0/libgcc/config/t-slibgcc
+@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_S
+ 	$(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+ 
+ SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+-	$(SHLIB_LDFLAGS) \
++	$(LDFLAGS) $(SHLIB_LDFLAGS) \
+ 	-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
+ 	$(SHLIB_OBJS) $(SHLIB_LC) && \
+ 	rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2.inc
new file mode 100644
index 0000000..b118995
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2.inc
@@ -0,0 +1,133 @@
+require gcc-common.inc
+
+# Third digit in PV should be incremented after a minor release
+
+PV = "6.2.0"
+
+# BINV should be incremented to a revision after a minor gcc release
+
+BINV = "6.2.0"
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-6.2:${FILE_DIRNAME}/gcc-6.2/backport:"
+
+DEPENDS =+ "mpfr gmp libmpc zlib"
+NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
+
+LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
+
+LIC_FILES_CHKSUM = "\
+    file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
+    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+    file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \
+"
+
+
+BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2"
+#SRCREV = "bd9a826d5448db11d29d2ec5884e7e679066f140"
+#BASEURI ?= "git://github.com/gcc-mirror/gcc;branch=gcc-6-branch;protocol=git"
+#BASEURI ?= "ftp://sourceware.org/pub/gcc/snapshots/6.2.0-RC-20160815/gcc-6.2.0-RC-20160815.tar.bz2"
+
+SRC_URI = "\
+           ${BASEURI} \
+           file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
+           file://0002-uclibc-conf.patch \
+           file://0003-gcc-uclibc-locale-ctype_touplow_t.patch \
+           file://0004-uclibc-locale.patch \
+           file://0005-uclibc-locale-no__x.patch \
+           file://0006-uclibc-locale-wchar_fix.patch \
+           file://0007-uclibc-locale-update.patch \
+           file://0008-missing-execinfo_h.patch \
+           file://0009-c99-snprintf.patch \
+           file://0010-gcc-poison-system-directories.patch \
+           file://0011-gcc-poison-dir-extend.patch \
+           file://0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
+           file://0013-64-bit-multilib-hack.patch \
+           file://0014-optional-libstdc.patch \
+           file://0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
+           file://0016-COLLECT_GCC_OPTIONS.patch \
+           file://0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
+           file://0018-fortran-cross-compile-hack.patch \
+           file://0019-cpp-honor-sysroot.patch \
+           file://0020-MIPS64-Default-to-N64-ABI.patch \
+           file://0021-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
+           file://0022-gcc-Fix-argument-list-too-long-error.patch \
+           file://0023-Disable-sdt.patch \
+           file://0024-libtool.patch \
+           file://0025-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
+           file://0026-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
+           file://0027-Avoid-using-libdir-from-.la-which-usually-points-to-.patch \
+           file://0028-export-CPP.patch \
+           file://0029-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch \
+           file://0030-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch \
+           file://0031-Ensure-target-gcc-headers-can-be-included.patch \
+           file://0032-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch \
+           file://0033-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
+           file://0034-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
+           file://0035-aarch64-Add-support-for-musl-ldso.patch \
+           file://0036-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
+           file://0037-handle-sysroot-support-for-nativesdk-gcc.patch \
+           file://0038-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
+           file://0039-Fix-various-_FOR_BUILD-and-related-variables.patch \
+           file://0040-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
+           file://0041-ssp_nonshared.patch \
+           file://0042-gcc-libcpp-support-ffile-prefix-map-old-new.patch \
+           file://0043-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch \
+           file://0044-gcc-final.c-fdebug-prefix-map-support-to-remap-sourc.patch \
+           file://0045-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch \
+           file://0046-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
+           file://0047-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
+           ${BACKPORTS} \
+"
+BACKPORTS = ""
+
+SRC_URI[md5sum] = "9768625159663b300ae4de2f4745fcc4"
+SRC_URI[sha256sum] = "9944589fc722d3e66308c0ce5257788ebd7872982a718aa2516123940671b7c5"
+
+S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
+#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/git"
+B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
+
+# Language Overrides
+FORTRAN = ""
+JAVA = ""
+
+LTO = "--enable-lto"
+
+EXTRA_OECONF_BASE = "\
+    ${LTO} \
+    --enable-libssp \
+    --enable-libitm \
+    --disable-bootstrap \
+    --disable-libmudflap \
+    --with-system-zlib \
+    --with-linker-hash-style=${LINKER_HASH_STYLE} \
+    --enable-linker-build-id \
+    --with-ppl=no \
+    --with-cloog=no \
+    --enable-checking=release \
+    --enable-cheaders=c_global \
+    --without-isl \
+"
+
+EXTRA_OECONF_INITIAL = "\
+    --disable-libmudflap \
+    --disable-libgomp \
+    --disable-libitm \
+    --disable-libquadmath \
+    --with-system-zlib \
+    --disable-lto \
+    --disable-plugin \
+    --enable-decimal-float=no \
+    --without-isl \
+    gcc_cv_libc_provides_ssp=yes \
+"
+
+EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
+
+EXTRA_OECONF_PATHS = "\
+    --with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
+    --with-sysroot=/not/exist \
+    --with-build-sysroot=${STAGING_DIR_TARGET} \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
new file mode 100644
index 0000000..415f091
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
@@ -0,0 +1,42 @@
+From 92ed30da16b7487b334f739be177eb39885ab772 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:37:11 +0400
+Subject: [PATCH 01/46] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+---
+ configure    | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 35f231e..bfadc33 100755
+--- a/configure
++++ b/configure
+@@ -7550,7 +7550,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+ 
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+  *" newlib "*)
+   case " $target_configargs " in
+diff --git a/configure.ac b/configure.ac
+index 74bf58a..197d61b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3149,7 +3149,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+ 
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+  *" newlib "*)
+   case " $target_configargs " in
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0002-uclibc-conf.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0002-uclibc-conf.patch
new file mode 100644
index 0000000..4d284ef
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0002-uclibc-conf.patch
@@ -0,0 +1,53 @@
+From 4efc5a258c812875743647d756f75c93c4d514a5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:38:25 +0400
+Subject: [PATCH 02/46] uclibc-conf
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ contrib/regression/objs-gcc.sh | 4 ++++
+ libjava/classpath/ltconfig     | 4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
+index 60b0497..6dc7ead 100755
+--- a/contrib/regression/objs-gcc.sh
++++ b/contrib/regression/objs-gcc.sh
+@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
+  then
+   make all-gdb all-dejagnu all-ld || exit 1
+   make install-gdb install-dejagnu install-ld || exit 1
++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
++ then
++  make all-gdb all-dejagnu all-ld || exit 1
++  make install-gdb install-dejagnu install-ld || exit 1
+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
+   make bootstrap || exit 1
+   make install || exit 1
+diff --git a/libjava/classpath/ltconfig b/libjava/classpath/ltconfig
+index d318957..df55950 100755
+--- a/libjava/classpath/ltconfig
++++ b/libjava/classpath/ltconfig
+@@ -603,7 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+ 
+ # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+ case $host_os in
+-linux-gnu*) ;;
++linux-gnu*|linux-uclibc*) ;;
+ linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+ esac
+ 
+@@ -1247,7 +1247,7 @@ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+   ;;
+ 
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+   version_type=linux
+   need_lib_prefix=no
+   need_version=no
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0003-gcc-uclibc-locale-ctype_touplow_t.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0003-gcc-uclibc-locale-ctype_touplow_t.patch
new file mode 100644
index 0000000..df07feb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0003-gcc-uclibc-locale-ctype_touplow_t.patch
@@ -0,0 +1,87 @@
+From ad5fd283fc7ef04f66c7fb003805364ea3bd34e9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:40:12 +0400
+Subject: [PATCH 03/46] gcc-uclibc-locale-ctype_touplow_t
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ libstdc++-v3/config/locale/generic/c_locale.cc | 5 +++++
+ libstdc++-v3/config/locale/generic/c_locale.h  | 9 +++++++++
+ libstdc++-v3/config/os/gnu-linux/ctype_base.h  | 9 +++++++++
+ 3 files changed, 23 insertions(+)
+
+diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc
+index ef6ce8f..4740636 100644
+--- a/libstdc++-v3/config/locale/generic/c_locale.cc
++++ b/libstdc++-v3/config/locale/generic/c_locale.cc
+@@ -273,5 +273,10 @@ _GLIBCXX_END_NAMESPACE_VERSION
+ #ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+ #define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
+   extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
++#ifdef __UCLIBC__
++// This is because __c_locale is of type __ctype_touplow_t* which is short on uclibc. for glibc its int*
++_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPs, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPs);
++#else
+ _GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
++#endif
+ #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h
+index 794471e..d65f955 100644
+--- a/libstdc++-v3/config/locale/generic/c_locale.h
++++ b/libstdc++-v3/config/locale/generic/c_locale.h
+@@ -40,13 +40,22 @@
+ 
+ #include <clocale>
+ 
++#ifdef __UCLIBC__
++#include <features.h>
++#include <ctype.h>
++#endif
++
+ #define _GLIBCXX_NUM_CATEGORIES 0
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
++#ifdef __UCLIBC__
++  typedef __ctype_touplow_t*	__c_locale;
++#else
+   typedef int*			__c_locale;
++#endif
+ 
+   // Convert numeric value of type double and long double to string and
+   // return length of string.  If vsnprintf is available use it, otherwise
+diff --git a/libstdc++-v3/config/os/gnu-linux/ctype_base.h b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
+index 591c793..55eb0e9 100644
+--- a/libstdc++-v3/config/os/gnu-linux/ctype_base.h
++++ b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
+@@ -33,6 +33,11 @@
+ 
+ // Information as gleaned from /usr/include/ctype.h
+ 
++#ifdef __UCLIBC__
++#include <features.h>
++#include <ctype.h>
++#endif
++
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+@@ -41,7 +46,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   struct ctype_base
+   {
+     // Non-standard typedefs.
++#ifdef __UCLIBC__
++    typedef const __ctype_touplow_t*	__to_type;
++#else
+     typedef const int* 		__to_type;
++#endif
+ 
+     // NB: Offsets into ctype<char>::_M_table force a particular size
+     // on the mask type. Because of this, we don't use an enum.
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0004-uclibc-locale.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0004-uclibc-locale.patch
new file mode 100644
index 0000000..ae2627c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0004-uclibc-locale.patch
@@ -0,0 +1,2862 @@
+From 68bd083357e78678a9baac760beb2a31f00954a5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:41:39 +0400
+Subject: [PATCH 04/46] uclibc-locale
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ libstdc++-v3/acinclude.m4                          |  37 ++
+ .../config/locale/uclibc/c++locale_internal.h      |  63 ++
+ libstdc++-v3/config/locale/uclibc/c_locale.cc      | 160 +++++
+ libstdc++-v3/config/locale/uclibc/c_locale.h       | 117 ++++
+ .../config/locale/uclibc/codecvt_members.cc        | 308 +++++++++
+ .../config/locale/uclibc/collate_members.cc        |  80 +++
+ libstdc++-v3/config/locale/uclibc/ctype_members.cc | 300 +++++++++
+ .../config/locale/uclibc/messages_members.cc       | 100 +++
+ .../config/locale/uclibc/messages_members.h        | 118 ++++
+ .../config/locale/uclibc/monetary_members.cc       | 692 +++++++++++++++++++++
+ .../config/locale/uclibc/numeric_members.cc        | 160 +++++
+ libstdc++-v3/config/locale/uclibc/time_members.cc  | 406 ++++++++++++
+ libstdc++-v3/config/locale/uclibc/time_members.h   |  68 ++
+ libstdc++-v3/configure                             |  75 +++
+ libstdc++-v3/include/c_compatibility/wchar.h       |   2 +
+ libstdc++-v3/include/c_std/cwchar                  |   2 +
+ 16 files changed, 2688 insertions(+)
+ create mode 100644 libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+ create mode 100644 libstdc++-v3/config/locale/uclibc/c_locale.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/c_locale.h
+ create mode 100644 libstdc++-v3/config/locale/uclibc/codecvt_members.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/collate_members.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/ctype_members.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/messages_members.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/messages_members.h
+ create mode 100644 libstdc++-v3/config/locale/uclibc/monetary_members.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/numeric_members.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/time_members.cc
+ create mode 100644 libstdc++-v3/config/locale/uclibc/time_members.h
+
+diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
+index b0f88cb..a0ee36b 100644
+--- a/libstdc++-v3/acinclude.m4
++++ b/libstdc++-v3/acinclude.m4
+@@ -2358,6 +2358,9 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
+   # Default to "generic".
+   if test $enable_clocale_flag = auto; then
+     case ${target_os} in
++      *-uclibc*)
++        enable_clocale_flag=uclibc
++        ;;
+       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ 	enable_clocale_flag=gnu
+ 	;;
+@@ -2542,6 +2545,40 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
+       CTIME_CC=config/locale/generic/time_members.cc
+       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+       ;;
++    uclibc)
++      AC_MSG_RESULT(uclibc)
++
++      # Declare intention to use gettext, and add support for specific
++      # languages.
++      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
++      ALL_LINGUAS="de fr"
++
++      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
++      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
++      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
++        USE_NLS=yes
++      fi
++      # Export the build objects.
++      for ling in $ALL_LINGUAS; do \
++        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
++        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
++      done
++      AC_SUBST(glibcxx_MOFILES)
++      AC_SUBST(glibcxx_POFILES)
++
++      CLOCALE_H=config/locale/uclibc/c_locale.h
++      CLOCALE_CC=config/locale/uclibc/c_locale.cc
++      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
++      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
++      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
++      CMESSAGES_H=config/locale/uclibc/messages_members.h
++      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
++      CMONEY_CC=config/locale/uclibc/monetary_members.cc
++      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
++      CTIME_H=config/locale/uclibc/time_members.h
++      CTIME_CC=config/locale/uclibc/time_members.cc
++      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
++      ;;
+   esac
+ 
+   # This is where the testsuite looks for locale catalogs, using the
+diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+new file mode 100644
+index 0000000..2ae3e4a
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+@@ -0,0 +1,63 @@
++// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
++
++// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++// Written by Jakub Jelinek <jakub@redhat.com>
++
++#include <bits/c++config.h>
++#include <clocale>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning clean this up
++#endif
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++
++extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
++extern "C" __typeof(strcoll_l) __strcoll_l;
++extern "C" __typeof(strftime_l) __strftime_l;
++extern "C" __typeof(strtod_l) __strtod_l;
++extern "C" __typeof(strtof_l) __strtof_l;
++extern "C" __typeof(strtold_l) __strtold_l;
++extern "C" __typeof(strxfrm_l) __strxfrm_l;
++extern "C" __typeof(newlocale) __newlocale;
++extern "C" __typeof(freelocale) __freelocale;
++extern "C" __typeof(duplocale) __duplocale;
++extern "C" __typeof(uselocale) __uselocale;
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++extern "C" __typeof(iswctype_l) __iswctype_l;
++extern "C" __typeof(towlower_l) __towlower_l;
++extern "C" __typeof(towupper_l) __towupper_l;
++extern "C" __typeof(wcscoll_l) __wcscoll_l;
++extern "C" __typeof(wcsftime_l) __wcsftime_l;
++extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
++extern "C" __typeof(wctype_l) __wctype_l;
++#endif
++
++#endif // GLIBC 2.3 and later
+diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
+new file mode 100644
+index 0000000..5081dc1
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
+@@ -0,0 +1,160 @@
++// Wrapper for underlying C-language localization -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.8  Standard locale categories.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <cerrno>  // For errno
++#include <locale>
++#include <stdexcept>
++#include <langinfo.h>
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
++#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
++#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
++#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
++#define __strtof_l(S, E, L)         strtof((S), (E))
++#define __strtod_l(S, E, L)         strtod((S), (E))
++#define __strtold_l(S, E, L)        strtold((S), (E))
++#warning should dummy __newlocale check for C|POSIX ?
++#define __newlocale(a, b, c)        NULL
++#define __freelocale(a)             ((void)0)
++#define __duplocale(a)              __c_locale()
++#endif
++
++namespace std
++{
++  template<>
++    void
++    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
++		   const __c_locale& __cloc)
++    {
++      if (!(__err & ios_base::failbit))
++	{
++	  char* __sanity;
++	  errno = 0;
++	  float __f = __strtof_l(__s, &__sanity, __cloc);
++          if (__sanity != __s && errno != ERANGE)
++	    __v = __f;
++	  else
++	    __err |= ios_base::failbit;
++	}
++    }
++
++  template<>
++    void
++    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
++		   const __c_locale& __cloc)
++    {
++      if (!(__err & ios_base::failbit))
++	{
++	  char* __sanity;
++	  errno = 0;
++	  double __d = __strtod_l(__s, &__sanity, __cloc);
++          if (__sanity != __s && errno != ERANGE)
++	    __v = __d;
++	  else
++	    __err |= ios_base::failbit;
++	}
++    }
++
++  template<>
++    void
++    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
++		   const __c_locale& __cloc)
++    {
++      if (!(__err & ios_base::failbit))
++	{
++	  char* __sanity;
++	  errno = 0;
++	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
++          if (__sanity != __s && errno != ERANGE)
++	    __v = __ld;
++	  else
++	    __err |= ios_base::failbit;
++	}
++    }
++
++  void
++  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
++				    __c_locale __old)
++  {
++    __cloc = __newlocale(1 << LC_ALL, __s, __old);
++#ifdef __UCLIBC_HAS_XLOCALE__
++    if (!__cloc)
++      {
++	// This named locale is not supported by the underlying OS.
++	__throw_runtime_error(__N("locale::facet::_S_create_c_locale "
++			      "name not valid"));
++      }
++#endif
++  }
++
++  void
++  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
++  {
++    if (_S_get_c_locale() != __cloc)
++      __freelocale(__cloc);
++  }
++
++  __c_locale
++  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
++  { return __duplocale(__cloc); }
++} // namespace std
++
++namespace __gnu_cxx
++{
++  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
++    {
++      "LC_CTYPE",
++      "LC_NUMERIC",
++      "LC_TIME",
++      "LC_COLLATE",
++      "LC_MONETARY",
++      "LC_MESSAGES",
++#if _GLIBCXX_NUM_CATEGORIES != 0
++      "LC_PAPER",
++      "LC_NAME",
++      "LC_ADDRESS",
++      "LC_TELEPHONE",
++      "LC_MEASUREMENT",
++      "LC_IDENTIFICATION"
++#endif
++    };
++}
++
++namespace std
++{
++  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
++}  // namespace std
+diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
+new file mode 100644
+index 0000000..da07c1f
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
+@@ -0,0 +1,117 @@
++// Wrapper for underlying C-language localization -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.8  Standard locale categories.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#ifndef _C_LOCALE_H
++#define _C_LOCALE_H 1
++
++#pragma GCC system_header
++
++#include <cstring>              // get std::strlen
++#include <cstdio>               // get std::snprintf or std::sprintf
++#include <clocale>
++#include <langinfo.h>		// For codecvt
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this
++#endif
++#ifdef __UCLIBC_HAS_LOCALE__
++#include <iconv.h>		// For codecvt using iconv, iconv_t
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++#include <libintl.h> 		// For messages
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning what is _GLIBCXX_C_LOCALE_GNU for
++#endif
++#define _GLIBCXX_C_LOCALE_GNU 1
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix categories
++#endif
++// #define _GLIBCXX_NUM_CATEGORIES 6
++#define _GLIBCXX_NUM_CATEGORIES 0
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++namespace __gnu_cxx
++{
++  extern "C" __typeof(uselocale) __uselocale;
++}
++#endif
++
++namespace std
++{
++#ifdef __UCLIBC_HAS_XLOCALE__
++  typedef __locale_t		__c_locale;
++#else
++  typedef int*			__c_locale;
++#endif
++
++  // Convert numeric value of type _Tv to string and return length of
++  // string.  If snprintf is available use it, otherwise fall back to
++  // the unsafe sprintf which, in general, can be dangerous and should
++  // be avoided.
++  template<typename _Tv>
++    int
++    __convert_from_v(char* __out,
++		     const int __size __attribute__ ((__unused__)),
++		     const char* __fmt,
++#ifdef __UCLIBC_HAS_XCLOCALE__
++		     _Tv __v, const __c_locale& __cloc, int __prec)
++    {
++      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
++#else
++		     _Tv __v, const __c_locale&, int __prec)
++    {
++# ifdef __UCLIBC_HAS_LOCALE__
++      char* __old = std::setlocale(LC_ALL, NULL);
++      char* __sav = new char[std::strlen(__old) + 1];
++      std::strcpy(__sav, __old);
++      std::setlocale(LC_ALL, "C");
++# endif
++#endif
++
++      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
++
++#ifdef __UCLIBC_HAS_XCLOCALE__
++      __gnu_cxx::__uselocale(__old);
++#elif defined __UCLIBC_HAS_LOCALE__
++      std::setlocale(LC_ALL, __sav);
++      delete [] __sav;
++#endif
++      return __ret;
++    }
++}
++
++#endif
+diff --git a/libstdc++-v3/config/locale/uclibc/codecvt_members.cc b/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
+new file mode 100644
+index 0000000..64aa962
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
+@@ -0,0 +1,308 @@
++// std::codecvt implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.1.5 - Template class codecvt
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <cstdlib>  // For MB_CUR_MAX
++#include <climits>  // For MB_LEN_MAX
++#include <bits/c++locale_internal.h>
++
++namespace std
++{
++  // Specializations.
++#ifdef _GLIBCXX_USE_WCHAR_T
++  codecvt_base::result
++  codecvt<wchar_t, char, mbstate_t>::
++  do_out(state_type& __state, const intern_type* __from,
++	 const intern_type* __from_end, const intern_type*& __from_next,
++	 extern_type* __to, extern_type* __to_end,
++	 extern_type*& __to_next) const
++  {
++    result __ret = ok;
++    state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++    // wcsnrtombs is *very* fast but stops if encounters NUL characters:
++    // in case we fall back to wcrtomb and then continue, in a loop.
++    // NB: wcsnrtombs is a GNU extension
++    for (__from_next = __from, __to_next = __to;
++	 __from_next < __from_end && __to_next < __to_end
++	 && __ret == ok;)
++      {
++	const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
++						      __from_end - __from_next);
++	if (!__from_chunk_end)
++	  __from_chunk_end = __from_end;
++
++	__from = __from_next;
++	const size_t __conv = wcsnrtombs(__to_next, &__from_next,
++					 __from_chunk_end - __from_next,
++					 __to_end - __to_next, &__state);
++	if (__conv == static_cast<size_t>(-1))
++	  {
++	    // In case of error, in order to stop at the exact place we
++	    // have to start again from the beginning with a series of
++	    // wcrtomb.
++	    for (; __from < __from_next; ++__from)
++	      __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
++	    __state = __tmp_state;
++	    __ret = error;
++	  }
++	else if (__from_next && __from_next < __from_chunk_end)
++	  {
++	    __to_next += __conv;
++	    __ret = partial;
++	  }
++	else
++	  {
++	    __from_next = __from_chunk_end;
++	    __to_next += __conv;
++	  }
++
++	if (__from_next < __from_end && __ret == ok)
++	  {
++	    extern_type __buf[MB_LEN_MAX];
++	    __tmp_state = __state;
++	    const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
++	    if (__conv > static_cast<size_t>(__to_end - __to_next))
++	      __ret = partial;
++	    else
++	      {
++		memcpy(__to_next, __buf, __conv);
++		__state = __tmp_state;
++		__to_next += __conv;
++		++__from_next;
++	      }
++	  }
++      }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++
++    return __ret;
++  }
++
++  codecvt_base::result
++  codecvt<wchar_t, char, mbstate_t>::
++  do_in(state_type& __state, const extern_type* __from,
++	const extern_type* __from_end, const extern_type*& __from_next,
++	intern_type* __to, intern_type* __to_end,
++	intern_type*& __to_next) const
++  {
++    result __ret = ok;
++    state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
++    // in case we store a L'\0' and then continue, in a loop.
++    // NB: mbsnrtowcs is a GNU extension
++    for (__from_next = __from, __to_next = __to;
++	 __from_next < __from_end && __to_next < __to_end
++	 && __ret == ok;)
++      {
++	const extern_type* __from_chunk_end;
++	__from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
++								  __from_end
++								  - __from_next));
++	if (!__from_chunk_end)
++	  __from_chunk_end = __from_end;
++
++	__from = __from_next;
++	size_t __conv = mbsnrtowcs(__to_next, &__from_next,
++				   __from_chunk_end - __from_next,
++				   __to_end - __to_next, &__state);
++	if (__conv == static_cast<size_t>(-1))
++	  {
++	    // In case of error, in order to stop at the exact place we
++	    // have to start again from the beginning with a series of
++	    // mbrtowc.
++	    for (;; ++__to_next, __from += __conv)
++	      {
++		__conv = mbrtowc(__to_next, __from, __from_end - __from,
++				 &__tmp_state);
++		if (__conv == static_cast<size_t>(-1)
++		    || __conv == static_cast<size_t>(-2))
++		  break;
++	      }
++	    __from_next = __from;
++	    __state = __tmp_state;
++	    __ret = error;
++	  }
++	else if (__from_next && __from_next < __from_chunk_end)
++	  {
++	    // It is unclear what to return in this case (see DR 382).
++	    __to_next += __conv;
++	    __ret = partial;
++	  }
++	else
++	  {
++	    __from_next = __from_chunk_end;
++	    __to_next += __conv;
++	  }
++
++	if (__from_next < __from_end && __ret == ok)
++	  {
++	    if (__to_next < __to_end)
++	      {
++		// XXX Probably wrong for stateful encodings
++		__tmp_state = __state;
++		++__from_next;
++		*__to_next++ = L'\0';
++	      }
++	    else
++	      __ret = partial;
++	  }
++      }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++
++    return __ret;
++  }
++
++  int
++  codecvt<wchar_t, char, mbstate_t>::
++  do_encoding() const throw()
++  {
++    // XXX This implementation assumes that the encoding is
++    // stateless and is either single-byte or variable-width.
++    int __ret = 0;
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++    if (MB_CUR_MAX == 1)
++      __ret = 1;
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++    return __ret;
++  }
++
++  int
++  codecvt<wchar_t, char, mbstate_t>::
++  do_max_length() const throw()
++  {
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++    // XXX Probably wrong for stateful encodings.
++    int __ret = MB_CUR_MAX;
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++    return __ret;
++  }
++
++  int
++  codecvt<wchar_t, char, mbstate_t>::
++  do_length(state_type& __state, const extern_type* __from,
++	    const extern_type* __end, size_t __max) const
++  {
++    int __ret = 0;
++    state_type __tmp_state(__state);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_codecvt);
++#endif
++
++    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
++    // in case we advance past it and then continue, in a loop.
++    // NB: mbsnrtowcs is a GNU extension
++
++    // A dummy internal buffer is needed in order for mbsnrtocws to consider
++    // its fourth parameter (it wouldn't with NULL as first parameter).
++    wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
++							   * __max));
++    while (__from < __end && __max)
++      {
++	const extern_type* __from_chunk_end;
++	__from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
++								  __end
++								  - __from));
++	if (!__from_chunk_end)
++	  __from_chunk_end = __end;
++
++	const extern_type* __tmp_from = __from;
++	size_t __conv = mbsnrtowcs(__to, &__from,
++				   __from_chunk_end - __from,
++				   __max, &__state);
++	if (__conv == static_cast<size_t>(-1))
++	  {
++	    // In case of error, in order to stop at the exact place we
++	    // have to start again from the beginning with a series of
++	    // mbrtowc.
++	    for (__from = __tmp_from;; __from += __conv)
++	      {
++		__conv = mbrtowc(NULL, __from, __end - __from,
++				 &__tmp_state);
++		if (__conv == static_cast<size_t>(-1)
++		    || __conv == static_cast<size_t>(-2))
++		  break;
++	      }
++	    __state = __tmp_state;
++	    __ret += __from - __tmp_from;
++	    break;
++	  }
++	if (!__from)
++	  __from = __from_chunk_end;
++
++	__ret += __from - __tmp_from;
++	__max -= __conv;
++
++	if (__from < __end && __max)
++	  {
++	    // XXX Probably wrong for stateful encodings
++	    __tmp_state = __state;
++	    ++__from;
++	    ++__ret;
++	    --__max;
++	  }
++      }
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++
++    return __ret;
++  }
++#endif
++}
+diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
+new file mode 100644
+index 0000000..c2664a7
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
+@@ -0,0 +1,80 @@
++// std::collate implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
++#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
++#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
++#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
++#endif
++
++namespace std
++{
++  // These are basically extensions to char_traits, and perhaps should
++  // be put there instead of here.
++  template<>
++    int
++    collate<char>::_M_compare(const char* __one, const char* __two) const
++    {
++      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
++      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
++    }
++
++  template<>
++    size_t
++    collate<char>::_M_transform(char* __to, const char* __from,
++				size_t __n) const
++    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template<>
++    int
++    collate<wchar_t>::_M_compare(const wchar_t* __one,
++				 const wchar_t* __two) const
++    {
++      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
++      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
++    }
++
++  template<>
++    size_t
++    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
++				   size_t __n) const
++    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
++#endif
++}
+diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+new file mode 100644
+index 0000000..7294e3a
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+@@ -0,0 +1,300 @@
++// std::ctype implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __wctype_l(S, L)           wctype((S))
++#define __towupper_l(C, L)         towupper((C))
++#define __towlower_l(C, L)         towlower((C))
++#define __iswctype_l(C, M, L)      iswctype((C), (M))
++#endif
++
++namespace std
++{
++  // NB: The other ctype<char> specializations are in src/locale.cc and
++  // various /config/os/* files.
++  template<>
++    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
++    : ctype<char>(0, false, __refs)
++    {
++      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
++	{
++	  this->_S_destroy_c_locale(this->_M_c_locale_ctype);
++	  this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
++#ifdef __UCLIBC_HAS_XLOCALE__
++	  this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
++	  this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
++	  this->_M_table = this->_M_c_locale_ctype->__ctype_b;
++#endif
++	}
++    }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  ctype<wchar_t>::__wmask_type
++  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
++  {
++    __wmask_type __ret;
++    switch (__m)
++      {
++      case space:
++	__ret = __wctype_l("space", _M_c_locale_ctype);
++	break;
++      case print:
++	__ret = __wctype_l("print", _M_c_locale_ctype);
++	break;
++      case cntrl:
++	__ret = __wctype_l("cntrl", _M_c_locale_ctype);
++	break;
++      case upper:
++	__ret = __wctype_l("upper", _M_c_locale_ctype);
++	break;
++      case lower:
++	__ret = __wctype_l("lower", _M_c_locale_ctype);
++	break;
++      case alpha:
++	__ret = __wctype_l("alpha", _M_c_locale_ctype);
++	break;
++      case digit:
++	__ret = __wctype_l("digit", _M_c_locale_ctype);
++	break;
++      case punct:
++	__ret = __wctype_l("punct", _M_c_locale_ctype);
++	break;
++      case xdigit:
++	__ret = __wctype_l("xdigit", _M_c_locale_ctype);
++	break;
++      case alnum:
++	__ret = __wctype_l("alnum", _M_c_locale_ctype);
++	break;
++      case graph:
++	__ret = __wctype_l("graph", _M_c_locale_ctype);
++	break;
++      default:
++	__ret = __wmask_type();
++      }
++    return __ret;
++  }
++
++  wchar_t
++  ctype<wchar_t>::do_toupper(wchar_t __c) const
++  { return __towupper_l(__c, _M_c_locale_ctype); }
++
++  const wchar_t*
++  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
++  {
++    while (__lo < __hi)
++      {
++        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
++        ++__lo;
++      }
++    return __hi;
++  }
++
++  wchar_t
++  ctype<wchar_t>::do_tolower(wchar_t __c) const
++  { return __towlower_l(__c, _M_c_locale_ctype); }
++
++  const wchar_t*
++  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
++  {
++    while (__lo < __hi)
++      {
++        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
++        ++__lo;
++      }
++    return __hi;
++  }
++
++  bool
++  ctype<wchar_t>::
++  do_is(mask __m, wchar_t __c) const
++  {
++    // Highest bitmask in ctype_base == 10, but extra in "C"
++    // library for blank.
++    bool __ret = false;
++    const size_t __bitmasksize = 11;
++    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++      if (__m & _M_bit[__bitcur]
++	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
++	{
++	  __ret = true;
++	  break;
++	}
++    return __ret;
++  }
++
++  const wchar_t*
++  ctype<wchar_t>::
++  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
++  {
++    for (; __lo < __hi; ++__vec, ++__lo)
++      {
++	// Highest bitmask in ctype_base == 10, but extra in "C"
++	// library for blank.
++	const size_t __bitmasksize = 11;
++	mask __m = 0;
++	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++	  if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
++	    __m |= _M_bit[__bitcur];
++	*__vec = __m;
++      }
++    return __hi;
++  }
++
++  const wchar_t*
++  ctype<wchar_t>::
++  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
++  {
++    while (__lo < __hi && !this->do_is(__m, *__lo))
++      ++__lo;
++    return __lo;
++  }
++
++  const wchar_t*
++  ctype<wchar_t>::
++  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
++  {
++    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
++      ++__lo;
++    return __lo;
++  }
++
++  wchar_t
++  ctype<wchar_t>::
++  do_widen(char __c) const
++  { return _M_widen[static_cast<unsigned char>(__c)]; }
++
++  const char*
++  ctype<wchar_t>::
++  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
++  {
++    while (__lo < __hi)
++      {
++	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
++	++__lo;
++	++__dest;
++      }
++    return __hi;
++  }
++
++  char
++  ctype<wchar_t>::
++  do_narrow(wchar_t __wc, char __dfault) const
++  {
++    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
++      return _M_narrow[__wc];
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++    const int __c = wctob(__wc);
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++    return (__c == EOF ? __dfault : static_cast<char>(__c));
++  }
++
++  const wchar_t*
++  ctype<wchar_t>::
++  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
++	    char* __dest) const
++  {
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++    if (_M_narrow_ok)
++      while (__lo < __hi)
++	{
++	  if (*__lo >= 0 && *__lo < 128)
++	    *__dest = _M_narrow[*__lo];
++	  else
++	    {
++	      const int __c = wctob(*__lo);
++	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++	    }
++	  ++__lo;
++	  ++__dest;
++	}
++    else
++      while (__lo < __hi)
++	{
++	  const int __c = wctob(*__lo);
++	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++	  ++__lo;
++	  ++__dest;
++	}
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++    return __hi;
++  }
++
++  void
++  ctype<wchar_t>::_M_initialize_ctype()
++  {
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __c_locale __old = __uselocale(_M_c_locale_ctype);
++#endif
++    wint_t __i;
++    for (__i = 0; __i < 128; ++__i)
++      {
++	const int __c = wctob(__i);
++	if (__c == EOF)
++	  break;
++	else
++	  _M_narrow[__i] = static_cast<char>(__c);
++      }
++    if (__i == 128)
++      _M_narrow_ok = true;
++    else
++      _M_narrow_ok = false;
++    for (size_t __j = 0;
++	 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
++      _M_widen[__j] = btowc(__j);
++
++    for (size_t __k = 0; __k <= 11; ++__k)
++      {
++	_M_bit[__k] = static_cast<mask>(_ISbit(__k));
++	_M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
++      }
++#ifdef __UCLIBC_HAS_XLOCALE__
++    __uselocale(__old);
++#endif
++  }
++#endif //  _GLIBCXX_USE_WCHAR_T
++}
+diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
+new file mode 100644
+index 0000000..13594d9
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
+@@ -0,0 +1,100 @@
++// std::messages implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix gettext stuff
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++extern "C" char *__dcgettext(const char *domainname,
++			     const char *msgid, int category);
++#undef gettext
++#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
++#else
++#undef gettext
++#define gettext(msgid) (msgid)
++#endif
++
++namespace std
++{
++  // Specializations.
++  template<>
++    string
++    messages<char>::do_get(catalog, int, int, const string& __dfault) const
++    {
++#ifdef __UCLIBC_HAS_XLOCALE__
++      __c_locale __old = __uselocale(_M_c_locale_messages);
++      const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
++      __uselocale(__old);
++      return string(__msg);
++#elif defined __UCLIBC_HAS_LOCALE__
++      char* __old = strdup(setlocale(LC_ALL, NULL));
++      setlocale(LC_ALL, _M_name_messages);
++      const char* __msg = gettext(__dfault.c_str());
++      setlocale(LC_ALL, __old);
++      free(__old);
++      return string(__msg);
++#else
++      const char* __msg = gettext(__dfault.c_str());
++      return string(__msg);
++#endif
++    }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template<>
++    wstring
++    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
++    {
++# ifdef __UCLIBC_HAS_XLOCALE__
++      __c_locale __old = __uselocale(_M_c_locale_messages);
++      char* __msg = gettext(_M_convert_to_char(__dfault));
++      __uselocale(__old);
++      return _M_convert_from_char(__msg);
++# elif defined __UCLIBC_HAS_LOCALE__
++      char* __old = strdup(setlocale(LC_ALL, NULL));
++      setlocale(LC_ALL, _M_name_messages);
++      char* __msg = gettext(_M_convert_to_char(__dfault));
++      setlocale(LC_ALL, __old);
++      free(__old);
++      return _M_convert_from_char(__msg);
++# else
++      char* __msg = gettext(_M_convert_to_char(__dfault));
++      return _M_convert_from_char(__msg);
++# endif
++    }
++#endif
++}
+diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
+new file mode 100644
+index 0000000..1424078
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
+@@ -0,0 +1,118 @@
++// std::messages implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.7.1.2  messages functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix prototypes for *textdomain funcs
++#endif
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++extern "C" char *__textdomain(const char *domainname);
++extern "C" char *__bindtextdomain(const char *domainname,
++				  const char *dirname);
++#else
++#undef __textdomain
++#undef __bindtextdomain
++#define __textdomain(D)           ((void)0)
++#define __bindtextdomain(D,P)     ((void)0)
++#endif
++
++  // Non-virtual member functions.
++  template<typename _CharT>
++     messages<_CharT>::messages(size_t __refs)
++     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
++     _M_name_messages(_S_get_c_name())
++     { }
++
++  template<typename _CharT>
++     messages<_CharT>::messages(__c_locale __cloc, const char* __s,
++				size_t __refs)
++     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
++     _M_name_messages(__s)
++     {
++       char* __tmp = new char[std::strlen(__s) + 1];
++       std::strcpy(__tmp, __s);
++       _M_name_messages = __tmp;
++     }
++
++  template<typename _CharT>
++    typename messages<_CharT>::catalog
++    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
++			   const char* __dir) const
++    {
++      __bindtextdomain(__s.c_str(), __dir);
++      return this->do_open(__s, __loc);
++    }
++
++  // Virtual member functions.
++  template<typename _CharT>
++    messages<_CharT>::~messages()
++    {
++      if (_M_name_messages != _S_get_c_name())
++	delete [] _M_name_messages;
++      _S_destroy_c_locale(_M_c_locale_messages);
++    }
++
++  template<typename _CharT>
++    typename messages<_CharT>::catalog
++    messages<_CharT>::do_open(const basic_string<char>& __s,
++			      const locale&) const
++    {
++      // No error checking is done, assume the catalog exists and can
++      // be used.
++      __textdomain(__s.c_str());
++      return 0;
++    }
++
++  template<typename _CharT>
++    void
++    messages<_CharT>::do_close(catalog) const
++    { }
++
++   // messages_byname
++   template<typename _CharT>
++     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
++     : messages<_CharT>(__refs)
++     {
++       if (this->_M_name_messages != locale::facet::_S_get_c_name())
++	 delete [] this->_M_name_messages;
++       char* __tmp = new char[std::strlen(__s) + 1];
++       std::strcpy(__tmp, __s);
++       this->_M_name_messages = __tmp;
++
++       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
++	 {
++	   this->_S_destroy_c_locale(this->_M_c_locale_messages);
++	   this->_S_create_c_locale(this->_M_c_locale_messages, __s);
++	 }
++     }
+diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+new file mode 100644
+index 0000000..aa52731
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+@@ -0,0 +1,692 @@
++// std::moneypunct implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning optimize this for uclibc
++#warning tailor for stub locale support
++#endif
++
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L)         nl_langinfo((N))
++#endif
++
++namespace std
++{
++  // Construct and return valid pattern consisting of some combination of:
++  // space none symbol sign value
++  money_base::pattern
++  money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
++  {
++    pattern __ret;
++
++    // This insanely complicated routine attempts to construct a valid
++    // pattern for use with monyepunct. A couple of invariants:
++
++    // if (__precedes) symbol -> value
++    // else value -> symbol
++
++    // if (__space) space
++    // else none
++
++    // none == never first
++    // space never first or last
++
++    // Any elegant implementations of this are welcome.
++    switch (__posn)
++      {
++      case 0:
++      case 1:
++	// 1 The sign precedes the value and symbol.
++	__ret.field[0] = sign;
++	if (__space)
++	  {
++	    // Pattern starts with sign.
++	    if (__precedes)
++	      {
++		__ret.field[1] = symbol;
++		__ret.field[3] = value;
++	      }
++	    else
++	      {
++		__ret.field[1] = value;
++		__ret.field[3] = symbol;
++	      }
++	    __ret.field[2] = space;
++	  }
++	else
++	  {
++	    // Pattern starts with sign and ends with none.
++	    if (__precedes)
++	      {
++		__ret.field[1] = symbol;
++		__ret.field[2] = value;
++	      }
++	    else
++	      {
++		__ret.field[1] = value;
++		__ret.field[2] = symbol;
++	      }
++	    __ret.field[3] = none;
++	  }
++	break;
++      case 2:
++	// 2 The sign follows the value and symbol.
++	if (__space)
++	  {
++	    // Pattern either ends with sign.
++	    if (__precedes)
++	      {
++		__ret.field[0] = symbol;
++		__ret.field[2] = value;
++	      }
++	    else
++	      {
++		__ret.field[0] = value;
++		__ret.field[2] = symbol;
++	      }
++	    __ret.field[1] = space;
++	    __ret.field[3] = sign;
++	  }
++	else
++	  {
++	    // Pattern ends with sign then none.
++	    if (__precedes)
++	      {
++		__ret.field[0] = symbol;
++		__ret.field[1] = value;
++	      }
++	    else
++	      {
++		__ret.field[0] = value;
++		__ret.field[1] = symbol;
++	      }
++	    __ret.field[2] = sign;
++	    __ret.field[3] = none;
++	  }
++	break;
++      case 3:
++	// 3 The sign immediately precedes the symbol.
++	if (__precedes)
++	  {
++	    __ret.field[0] = sign;
++	    __ret.field[1] = symbol;
++	    if (__space)
++	      {
++		__ret.field[2] = space;
++		__ret.field[3] = value;
++	      }
++	    else
++	      {
++		__ret.field[2] = value;
++		__ret.field[3] = none;
++	      }
++	  }
++	else
++	  {
++	    __ret.field[0] = value;
++	    if (__space)
++	      {
++		__ret.field[1] = space;
++		__ret.field[2] = sign;
++		__ret.field[3] = symbol;
++	      }
++	    else
++	      {
++		__ret.field[1] = sign;
++		__ret.field[2] = symbol;
++		__ret.field[3] = none;
++	      }
++	  }
++	break;
++      case 4:
++	// 4 The sign immediately follows the symbol.
++	if (__precedes)
++	  {
++	    __ret.field[0] = symbol;
++	    __ret.field[1] = sign;
++	    if (__space)
++	      {
++		__ret.field[2] = space;
++		__ret.field[3] = value;
++	      }
++	    else
++	      {
++		__ret.field[2] = value;
++		__ret.field[3] = none;
++	      }
++	  }
++	else
++	  {
++	    __ret.field[0] = value;
++	    if (__space)
++	      {
++		__ret.field[1] = space;
++		__ret.field[2] = symbol;
++		__ret.field[3] = sign;
++	      }
++	    else
++	      {
++		__ret.field[1] = symbol;
++		__ret.field[2] = sign;
++		__ret.field[3] = none;
++	      }
++	  }
++	break;
++      default:
++	;
++      }
++    return __ret;
++  }
++
++  template<>
++    void
++    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc,
++						     const char*)
++    {
++      if (!_M_data)
++	_M_data = new __moneypunct_cache<char, true>;
++
++      if (!__cloc)
++	{
++	  // "C" locale
++	  _M_data->_M_decimal_point = '.';
++	  _M_data->_M_thousands_sep = ',';
++	  _M_data->_M_grouping = "";
++	  _M_data->_M_grouping_size = 0;
++	  _M_data->_M_curr_symbol = "";
++	  _M_data->_M_curr_symbol_size = 0;
++	  _M_data->_M_positive_sign = "";
++	  _M_data->_M_positive_sign_size = 0;
++	  _M_data->_M_negative_sign = "";
++	  _M_data->_M_negative_sign_size = 0;
++	  _M_data->_M_frac_digits = 0;
++	  _M_data->_M_pos_format = money_base::_S_default_pattern;
++	  _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
++	}
++      else
++	{
++	  // Named locale.
++	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
++							__cloc));
++	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
++							__cloc));
++	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
++
++	  char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
++	  if (!__nposn)
++	    _M_data->_M_negative_sign = "()";
++	  else
++	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
++							__cloc);
++	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
++
++	  // _Intl == true
++	  _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
++	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
++	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
++						      __cloc));
++	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
++	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
++	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
++	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++							__pposn);
++	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
++	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
++	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++							__nposn);
++	}
++    }
++
++  template<>
++    void
++    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc,
++						      const char*)
++    {
++      if (!_M_data)
++	_M_data = new __moneypunct_cache<char, false>;
++
++      if (!__cloc)
++	{
++	  // "C" locale
++	  _M_data->_M_decimal_point = '.';
++	  _M_data->_M_thousands_sep = ',';
++	  _M_data->_M_grouping = "";
++	  _M_data->_M_grouping_size = 0;
++	  _M_data->_M_curr_symbol = "";
++	  _M_data->_M_curr_symbol_size = 0;
++	  _M_data->_M_positive_sign = "";
++	  _M_data->_M_positive_sign_size = 0;
++	  _M_data->_M_negative_sign = "";
++	  _M_data->_M_negative_sign_size = 0;
++	  _M_data->_M_frac_digits = 0;
++	  _M_data->_M_pos_format = money_base::_S_default_pattern;
++	  _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
++	}
++      else
++	{
++	  // Named locale.
++	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT,
++							__cloc));
++	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
++							__cloc));
++	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
++
++	  char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
++	  if (!__nposn)
++	    _M_data->_M_negative_sign = "()";
++	  else
++	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
++							__cloc);
++	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
++
++	  // _Intl == false
++	  _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
++	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
++	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
++	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
++	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
++	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
++	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++							__pposn);
++	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
++	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
++	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++							__nposn);
++	}
++    }
++
++  template<>
++    moneypunct<char, true>::~moneypunct()
++    { delete _M_data; }
++
++  template<>
++    moneypunct<char, false>::~moneypunct()
++    { delete _M_data; }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template<>
++    void
++    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc,
++#ifdef __UCLIBC_HAS_XLOCALE__
++							const char*)
++#else
++							const char* __name)
++#endif
++    {
++      if (!_M_data)
++	_M_data = new __moneypunct_cache<wchar_t, true>;
++
++      if (!__cloc)
++	{
++	  // "C" locale
++	  _M_data->_M_decimal_point = L'.';
++	  _M_data->_M_thousands_sep = L',';
++	  _M_data->_M_grouping = "";
++	  _M_data->_M_grouping_size = 0;
++	  _M_data->_M_curr_symbol = L"";
++	  _M_data->_M_curr_symbol_size = 0;
++	  _M_data->_M_positive_sign = L"";
++	  _M_data->_M_positive_sign_size = 0;
++	  _M_data->_M_negative_sign = L"";
++	  _M_data->_M_negative_sign_size = 0;
++	  _M_data->_M_frac_digits = 0;
++	  _M_data->_M_pos_format = money_base::_S_default_pattern;
++	  _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++	  // Use ctype::widen code without the facet...
++	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++	    _M_data->_M_atoms[__i] =
++	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
++	}
++      else
++	{
++	  // Named locale.
++#ifdef __UCLIBC_HAS_XLOCALE__
++	  __c_locale __old = __uselocale(__cloc);
++#else
++	  // Switch to named locale so that mbsrtowcs will work.
++	  char* __old = strdup(setlocale(LC_ALL, NULL));
++	  setlocale(LC_ALL, __name);
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be monetary
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# else
++	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
++	  union { char *__s; wchar_t __w; } __u;
++	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
++	  _M_data->_M_decimal_point = __u.__w;
++
++	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
++	  _M_data->_M_thousands_sep = __u.__w;
++#endif
++	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++
++	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
++	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
++
++	  wchar_t* __wcs_ps = 0;
++	  wchar_t* __wcs_ns = 0;
++	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
++	  try
++	    {
++	      mbstate_t __state;
++	      size_t __len = strlen(__cpossign);
++	      if (__len)
++		{
++		  ++__len;
++		  memset(&__state, 0, sizeof(mbstate_t));
++		  __wcs_ps = new wchar_t[__len];
++		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
++		  _M_data->_M_positive_sign = __wcs_ps;
++		}
++	      else
++		_M_data->_M_positive_sign = L"";
++	      _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
++
++	      __len = strlen(__cnegsign);
++	      if (!__nposn)
++		_M_data->_M_negative_sign = L"()";
++	      else if (__len)
++		{
++		  ++__len;
++		  memset(&__state, 0, sizeof(mbstate_t));
++		  __wcs_ns = new wchar_t[__len];
++		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
++		  _M_data->_M_negative_sign = __wcs_ns;
++		}
++	      else
++		_M_data->_M_negative_sign = L"";
++	      _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
++
++	      // _Intl == true.
++	      __len = strlen(__ccurr);
++	      if (__len)
++		{
++		  ++__len;
++		  memset(&__state, 0, sizeof(mbstate_t));
++		  wchar_t* __wcs = new wchar_t[__len];
++		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
++		  _M_data->_M_curr_symbol = __wcs;
++		}
++	      else
++		_M_data->_M_curr_symbol = L"";
++	      _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
++	    }
++	  catch (...)
++	    {
++	      delete _M_data;
++	      _M_data = 0;
++	      delete __wcs_ps;
++	      delete __wcs_ns;
++#ifdef __UCLIBC_HAS_XLOCALE__
++	      __uselocale(__old);
++#else
++	      setlocale(LC_ALL, __old);
++	      free(__old);
++#endif
++	      __throw_exception_again;
++	    }
++
++	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
++						      __cloc));
++	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
++	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
++	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
++	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++							__pposn);
++	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
++	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
++	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++							__nposn);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++	  __uselocale(__old);
++#else
++	  setlocale(LC_ALL, __old);
++	  free(__old);
++#endif
++	}
++    }
++
++  template<>
++  void
++  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
++#ifdef __UCLIBC_HAS_XLOCALE__
++						       const char*)
++#else
++                                                       const char* __name)
++#endif
++  {
++    if (!_M_data)
++      _M_data = new __moneypunct_cache<wchar_t, false>;
++
++    if (!__cloc)
++	{
++	  // "C" locale
++	  _M_data->_M_decimal_point = L'.';
++	  _M_data->_M_thousands_sep = L',';
++	  _M_data->_M_grouping = "";
++          _M_data->_M_grouping_size = 0;
++	  _M_data->_M_curr_symbol = L"";
++	  _M_data->_M_curr_symbol_size = 0;
++	  _M_data->_M_positive_sign = L"";
++	  _M_data->_M_positive_sign_size = 0;
++	  _M_data->_M_negative_sign = L"";
++	  _M_data->_M_negative_sign_size = 0;
++	  _M_data->_M_frac_digits = 0;
++	  _M_data->_M_pos_format = money_base::_S_default_pattern;
++	  _M_data->_M_neg_format = money_base::_S_default_pattern;
++
++	  // Use ctype::widen code without the facet...
++	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
++	    _M_data->_M_atoms[__i] =
++	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
++	}
++      else
++	{
++	  // Named locale.
++#ifdef __UCLIBC_HAS_XLOCALE__
++	  __c_locale __old = __uselocale(__cloc);
++#else
++	  // Switch to named locale so that mbsrtowcs will work.
++	  char* __old = strdup(setlocale(LC_ALL, NULL));
++	  setlocale(LC_ALL, __name);
++#endif
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be monetary
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# else
++	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
++          union { char *__s; wchar_t __w; } __u;
++	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
++	  _M_data->_M_decimal_point = __u.__w;
++
++	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
++	  _M_data->_M_thousands_sep = __u.__w;
++#endif
++	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
++          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++
++	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
++	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
++	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
++
++	  wchar_t* __wcs_ps = 0;
++	  wchar_t* __wcs_ns = 0;
++	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
++	  try
++            {
++              mbstate_t __state;
++              size_t __len;
++              __len = strlen(__cpossign);
++              if (__len)
++                {
++		  ++__len;
++		  memset(&__state, 0, sizeof(mbstate_t));
++		  __wcs_ps = new wchar_t[__len];
++		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
++		  _M_data->_M_positive_sign = __wcs_ps;
++		}
++	      else
++		_M_data->_M_positive_sign = L"";
++              _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
++
++	      __len = strlen(__cnegsign);
++	      if (!__nposn)
++		_M_data->_M_negative_sign = L"()";
++	      else if (__len)
++		{
++		  ++__len;
++		  memset(&__state, 0, sizeof(mbstate_t));
++		  __wcs_ns = new wchar_t[__len];
++		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
++		  _M_data->_M_negative_sign = __wcs_ns;
++		}
++	      else
++		_M_data->_M_negative_sign = L"";
++              _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
++
++	      // _Intl == true.
++	      __len = strlen(__ccurr);
++	      if (__len)
++		{
++		  ++__len;
++		  memset(&__state, 0, sizeof(mbstate_t));
++		  wchar_t* __wcs = new wchar_t[__len];
++		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
++		  _M_data->_M_curr_symbol = __wcs;
++		}
++	      else
++		_M_data->_M_curr_symbol = L"";
++              _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
++	    }
++          catch (...)
++	    {
++	      delete _M_data;
++              _M_data = 0;
++	      delete __wcs_ps;
++	      delete __wcs_ns;
++#ifdef __UCLIBC_HAS_XLOCALE__
++	      __uselocale(__old);
++#else
++	      setlocale(LC_ALL, __old);
++	      free(__old);
++#endif
++              __throw_exception_again;
++	    }
++
++	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
++	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
++	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
++	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
++	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace,
++	                                                __pposn);
++	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
++	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
++	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace,
++	                                                __nposn);
++
++#ifdef __UCLIBC_HAS_XLOCALE__
++	  __uselocale(__old);
++#else
++	  setlocale(LC_ALL, __old);
++	  free(__old);
++#endif
++	}
++    }
++
++  template<>
++    moneypunct<wchar_t, true>::~moneypunct()
++    {
++      if (_M_data->_M_positive_sign_size)
++	delete [] _M_data->_M_positive_sign;
++      if (_M_data->_M_negative_sign_size
++          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
++	delete [] _M_data->_M_negative_sign;
++      if (_M_data->_M_curr_symbol_size)
++	delete [] _M_data->_M_curr_symbol;
++      delete _M_data;
++    }
++
++  template<>
++    moneypunct<wchar_t, false>::~moneypunct()
++    {
++      if (_M_data->_M_positive_sign_size)
++	delete [] _M_data->_M_positive_sign;
++      if (_M_data->_M_negative_sign_size
++          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
++	delete [] _M_data->_M_negative_sign;
++      if (_M_data->_M_curr_symbol_size)
++	delete [] _M_data->_M_curr_symbol;
++      delete _M_data;
++    }
++#endif
++}
+diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+new file mode 100644
+index 0000000..883ec1a
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+@@ -0,0 +1,160 @@
++// std::numpunct implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#define _LIBC
++#include <locale>
++#undef _LIBC
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning tailor for stub locale support
++#endif
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L)         nl_langinfo((N))
++#endif
++
++namespace std
++{
++  template<>
++    void
++    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
++    {
++      if (!_M_data)
++	_M_data = new __numpunct_cache<char>;
++
++      if (!__cloc)
++	{
++	  // "C" locale
++	  _M_data->_M_grouping = "";
++	  _M_data->_M_grouping_size = 0;
++	  _M_data->_M_use_grouping = false;
++
++	  _M_data->_M_decimal_point = '.';
++	  _M_data->_M_thousands_sep = ',';
++
++	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
++	    _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
++
++	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
++	    _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
++	}
++      else
++	{
++	  // Named locale.
++	  _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT,
++							__cloc));
++	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP,
++							__cloc));
++
++	  // Check for NULL, which implies no grouping.
++	  if (_M_data->_M_thousands_sep == '\0')
++	    _M_data->_M_grouping = "";
++	  else
++	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
++	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++	}
++
++      // NB: There is no way to extact this info from posix locales.
++      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
++      _M_data->_M_truename = "true";
++      _M_data->_M_truename_size = 4;
++      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
++      _M_data->_M_falsename = "false";
++      _M_data->_M_falsename_size = 5;
++    }
++
++  template<>
++    numpunct<char>::~numpunct()
++    { delete _M_data; }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template<>
++    void
++    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
++    {
++      if (!_M_data)
++	_M_data = new __numpunct_cache<wchar_t>;
++
++      if (!__cloc)
++	{
++	  // "C" locale
++	  _M_data->_M_grouping = "";
++	  _M_data->_M_grouping_size = 0;
++	  _M_data->_M_use_grouping = false;
++
++	  _M_data->_M_decimal_point = L'.';
++	  _M_data->_M_thousands_sep = L',';
++
++	  // Use ctype::widen code without the facet...
++	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
++	    _M_data->_M_atoms_out[__i] =
++	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
++
++	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
++	    _M_data->_M_atoms_in[__j] =
++	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
++	}
++      else
++	{
++	  // Named locale.
++	  // NB: In the GNU model wchar_t is always 32 bit wide.
++	  union { char *__s; wchar_t __w; } __u;
++	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
++	  _M_data->_M_decimal_point = __u.__w;
++
++	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
++	  _M_data->_M_thousands_sep = __u.__w;
++
++	  if (_M_data->_M_thousands_sep == L'\0')
++	    _M_data->_M_grouping = "";
++	  else
++	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
++	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
++	}
++
++      // NB: There is no way to extact this info from posix locales.
++      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
++      _M_data->_M_truename = L"true";
++      _M_data->_M_truename_size = 4;
++      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
++      _M_data->_M_falsename = L"false";
++      _M_data->_M_falsename_size = 5;
++    }
++
++  template<>
++    numpunct<wchar_t>::~numpunct()
++    { delete _M_data; }
++ #endif
++}
+diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
+new file mode 100644
+index 0000000..e0707d7
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
+@@ -0,0 +1,406 @@
++// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
++// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning tailor for stub locale support
++#endif
++#ifndef __UCLIBC_HAS_XLOCALE__
++#define __nl_langinfo_l(N, L)         nl_langinfo((N))
++#endif
++
++namespace std
++{
++  template<>
++    void
++    __timepunct<char>::
++    _M_put(char* __s, size_t __maxlen, const char* __format,
++	   const tm* __tm) const
++    {
++#ifdef __UCLIBC_HAS_XLOCALE__
++      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
++					_M_c_locale_timepunct);
++#else
++      char* __old = strdup(setlocale(LC_ALL, NULL));
++      setlocale(LC_ALL, _M_name_timepunct);
++      const size_t __len = strftime(__s, __maxlen, __format, __tm);
++      setlocale(LC_ALL, __old);
++      free(__old);
++#endif
++      // Make sure __s is null terminated.
++      if (__len == 0)
++	__s[0] = '\0';
++    }
++
++  template<>
++    void
++    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
++    {
++      if (!_M_data)
++	_M_data = new __timepunct_cache<char>;
++
++      if (!__cloc)
++	{
++	  // "C" locale
++	  _M_c_locale_timepunct = _S_get_c_locale();
++
++	  _M_data->_M_date_format = "%m/%d/%y";
++	  _M_data->_M_date_era_format = "%m/%d/%y";
++	  _M_data->_M_time_format = "%H:%M:%S";
++	  _M_data->_M_time_era_format = "%H:%M:%S";
++	  _M_data->_M_date_time_format = "";
++	  _M_data->_M_date_time_era_format = "";
++	  _M_data->_M_am = "AM";
++	  _M_data->_M_pm = "PM";
++	  _M_data->_M_am_pm_format = "";
++
++	  // Day names, starting with "C"'s Sunday.
++	  _M_data->_M_day1 = "Sunday";
++	  _M_data->_M_day2 = "Monday";
++	  _M_data->_M_day3 = "Tuesday";
++	  _M_data->_M_day4 = "Wednesday";
++	  _M_data->_M_day5 = "Thursday";
++	  _M_data->_M_day6 = "Friday";
++	  _M_data->_M_day7 = "Saturday";
++
++	  // Abbreviated day names, starting with "C"'s Sun.
++	  _M_data->_M_aday1 = "Sun";
++	  _M_data->_M_aday2 = "Mon";
++	  _M_data->_M_aday3 = "Tue";
++	  _M_data->_M_aday4 = "Wed";
++	  _M_data->_M_aday5 = "Thu";
++	  _M_data->_M_aday6 = "Fri";
++	  _M_data->_M_aday7 = "Sat";
++
++	  // Month names, starting with "C"'s January.
++	  _M_data->_M_month01 = "January";
++	  _M_data->_M_month02 = "February";
++	  _M_data->_M_month03 = "March";
++	  _M_data->_M_month04 = "April";
++	  _M_data->_M_month05 = "May";
++	  _M_data->_M_month06 = "June";
++	  _M_data->_M_month07 = "July";
++	  _M_data->_M_month08 = "August";
++	  _M_data->_M_month09 = "September";
++	  _M_data->_M_month10 = "October";
++	  _M_data->_M_month11 = "November";
++	  _M_data->_M_month12 = "December";
++
++	  // Abbreviated month names, starting with "C"'s Jan.
++	  _M_data->_M_amonth01 = "Jan";
++	  _M_data->_M_amonth02 = "Feb";
++	  _M_data->_M_amonth03 = "Mar";
++	  _M_data->_M_amonth04 = "Apr";
++	  _M_data->_M_amonth05 = "May";
++	  _M_data->_M_amonth06 = "Jun";
++	  _M_data->_M_amonth07 = "Jul";
++	  _M_data->_M_amonth08 = "Aug";
++	  _M_data->_M_amonth09 = "Sep";
++	  _M_data->_M_amonth10 = "Oct";
++	  _M_data->_M_amonth11 = "Nov";
++	  _M_data->_M_amonth12 = "Dec";
++	}
++      else
++	{
++	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
++
++	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
++	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
++	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
++	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
++	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
++	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
++							     __cloc);
++	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
++	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
++	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
++
++	  // Day names, starting with "C"'s Sunday.
++	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
++	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
++	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
++	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
++	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
++	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
++	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
++
++	  // Abbreviated day names, starting with "C"'s Sun.
++	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
++	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
++	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
++	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
++	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
++	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
++	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
++
++	  // Month names, starting with "C"'s January.
++	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
++	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
++	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
++	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
++	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
++	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
++	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
++	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
++	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
++	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
++	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
++	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
++
++	  // Abbreviated month names, starting with "C"'s Jan.
++	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
++	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
++	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
++	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
++	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
++	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
++	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
++	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
++	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
++	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
++	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
++	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
++	}
++    }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++  template<>
++    void
++    __timepunct<wchar_t>::
++    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format,
++	   const tm* __tm) const
++    {
++#ifdef __UCLIBC_HAS_XLOCALE__
++      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
++      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
++					_M_c_locale_timepunct);
++#else
++      char* __old = strdup(setlocale(LC_ALL, NULL));
++      setlocale(LC_ALL, _M_name_timepunct);
++      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
++      setlocale(LC_ALL, __old);
++      free(__old);
++#endif
++      // Make sure __s is null terminated.
++      if (__len == 0)
++	__s[0] = L'\0';
++    }
++
++  template<>
++    void
++    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
++    {
++      if (!_M_data)
++	_M_data = new __timepunct_cache<wchar_t>;
++
++#warning wide time stuff
++//       if (!__cloc)
++	{
++	  // "C" locale
++	  _M_c_locale_timepunct = _S_get_c_locale();
++
++	  _M_data->_M_date_format = L"%m/%d/%y";
++	  _M_data->_M_date_era_format = L"%m/%d/%y";
++	  _M_data->_M_time_format = L"%H:%M:%S";
++	  _M_data->_M_time_era_format = L"%H:%M:%S";
++	  _M_data->_M_date_time_format = L"";
++	  _M_data->_M_date_time_era_format = L"";
++	  _M_data->_M_am = L"AM";
++	  _M_data->_M_pm = L"PM";
++	  _M_data->_M_am_pm_format = L"";
++
++	  // Day names, starting with "C"'s Sunday.
++	  _M_data->_M_day1 = L"Sunday";
++	  _M_data->_M_day2 = L"Monday";
++	  _M_data->_M_day3 = L"Tuesday";
++	  _M_data->_M_day4 = L"Wednesday";
++	  _M_data->_M_day5 = L"Thursday";
++	  _M_data->_M_day6 = L"Friday";
++	  _M_data->_M_day7 = L"Saturday";
++
++	  // Abbreviated day names, starting with "C"'s Sun.
++	  _M_data->_M_aday1 = L"Sun";
++	  _M_data->_M_aday2 = L"Mon";
++	  _M_data->_M_aday3 = L"Tue";
++	  _M_data->_M_aday4 = L"Wed";
++	  _M_data->_M_aday5 = L"Thu";
++	  _M_data->_M_aday6 = L"Fri";
++	  _M_data->_M_aday7 = L"Sat";
++
++	  // Month names, starting with "C"'s January.
++	  _M_data->_M_month01 = L"January";
++	  _M_data->_M_month02 = L"February";
++	  _M_data->_M_month03 = L"March";
++	  _M_data->_M_month04 = L"April";
++	  _M_data->_M_month05 = L"May";
++	  _M_data->_M_month06 = L"June";
++	  _M_data->_M_month07 = L"July";
++	  _M_data->_M_month08 = L"August";
++	  _M_data->_M_month09 = L"September";
++	  _M_data->_M_month10 = L"October";
++	  _M_data->_M_month11 = L"November";
++	  _M_data->_M_month12 = L"December";
++
++	  // Abbreviated month names, starting with "C"'s Jan.
++	  _M_data->_M_amonth01 = L"Jan";
++	  _M_data->_M_amonth02 = L"Feb";
++	  _M_data->_M_amonth03 = L"Mar";
++	  _M_data->_M_amonth04 = L"Apr";
++	  _M_data->_M_amonth05 = L"May";
++	  _M_data->_M_amonth06 = L"Jun";
++	  _M_data->_M_amonth07 = L"Jul";
++	  _M_data->_M_amonth08 = L"Aug";
++	  _M_data->_M_amonth09 = L"Sep";
++	  _M_data->_M_amonth10 = L"Oct";
++	  _M_data->_M_amonth11 = L"Nov";
++	  _M_data->_M_amonth12 = L"Dec";
++	}
++#if 0
++      else
++	{
++	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
++
++	  union { char *__s; wchar_t *__w; } __u;
++
++	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
++	  _M_data->_M_date_format = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
++	  _M_data->_M_date_era_format = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
++	  _M_data->_M_time_format = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
++	  _M_data->_M_time_era_format = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
++	  _M_data->_M_date_time_format = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
++	  _M_data->_M_date_time_era_format = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
++	  _M_data->_M_am = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
++	  _M_data->_M_pm = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
++	  _M_data->_M_am_pm_format = __u.__w;
++
++	  // Day names, starting with "C"'s Sunday.
++	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
++	  _M_data->_M_day1 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
++	  _M_data->_M_day2 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
++	  _M_data->_M_day3 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
++	  _M_data->_M_day4 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
++	  _M_data->_M_day5 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
++	  _M_data->_M_day6 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
++	  _M_data->_M_day7 = __u.__w;
++
++	  // Abbreviated day names, starting with "C"'s Sun.
++	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
++	  _M_data->_M_aday1 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
++	  _M_data->_M_aday2 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
++	  _M_data->_M_aday3 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
++	  _M_data->_M_aday4 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
++	  _M_data->_M_aday5 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
++	  _M_data->_M_aday6 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
++	  _M_data->_M_aday7 = __u.__w;
++
++	  // Month names, starting with "C"'s January.
++	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
++	  _M_data->_M_month01 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
++	  _M_data->_M_month02 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
++	  _M_data->_M_month03 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
++	  _M_data->_M_month04 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
++	  _M_data->_M_month05 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
++	  _M_data->_M_month06 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
++	  _M_data->_M_month07 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
++	  _M_data->_M_month08 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
++	  _M_data->_M_month09 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
++	  _M_data->_M_month10 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
++	  _M_data->_M_month11 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
++	  _M_data->_M_month12 = __u.__w;
++
++	  // Abbreviated month names, starting with "C"'s Jan.
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
++	  _M_data->_M_amonth01 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
++	  _M_data->_M_amonth02 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
++	  _M_data->_M_amonth03 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
++	  _M_data->_M_amonth04 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
++	  _M_data->_M_amonth05 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
++	  _M_data->_M_amonth06 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
++	  _M_data->_M_amonth07 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
++	  _M_data->_M_amonth08 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
++	  _M_data->_M_amonth09 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
++	  _M_data->_M_amonth10 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
++	  _M_data->_M_amonth11 = __u.__w;
++	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
++	  _M_data->_M_amonth12 = __u.__w;
++	}
++#endif // 0
++    }
++#endif
++}
+diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
+new file mode 100644
+index 0000000..ba8e858
+--- /dev/null
++++ b/libstdc++-v3/config/locale/uclibc/time_members.h
+@@ -0,0 +1,68 @@
++// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 2, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
++// USA.
++
++// As a special exception, you may use this file as part of a free software
++// library without restriction.  Specifically, if other files instantiate
++// templates or use macros or inline functions from this file, or you compile
++// this file and link it with other files to produce an executable, this
++// file does not by itself cause the resulting executable to be covered by
++// the GNU General Public License.  This exception does not however
++// invalidate any other reasons why the executable file might be covered by
++// the GNU General Public License.
++
++//
++// ISO C++ 14882: 22.2.5.1.2 - time_get functions
++// ISO C++ 14882: 22.2.5.3.2 - time_put functions
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++  template<typename _CharT>
++    __timepunct<_CharT>::__timepunct(size_t __refs)
++    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
++    _M_name_timepunct(_S_get_c_name())
++    { _M_initialize_timepunct(); }
++
++  template<typename _CharT>
++    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
++    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
++    _M_name_timepunct(_S_get_c_name())
++    { _M_initialize_timepunct(); }
++
++  template<typename _CharT>
++    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
++				     size_t __refs)
++    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
++    _M_name_timepunct(__s)
++    {
++      char* __tmp = new char[std::strlen(__s) + 1];
++      std::strcpy(__tmp, __s);
++      _M_name_timepunct = __tmp;
++      _M_initialize_timepunct(__cloc);
++    }
++
++  template<typename _CharT>
++    __timepunct<_CharT>::~__timepunct()
++    {
++      if (_M_name_timepunct != _S_get_c_name())
++	delete [] _M_name_timepunct;
++      delete _M_data;
++      _S_destroy_c_locale(_M_c_locale_timepunct);
++    }
+diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
+index 41797a9..8a5481c 100755
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -15830,6 +15830,9 @@ fi
+   # Default to "generic".
+   if test $enable_clocale_flag = auto; then
+     case ${target_os} in
++      *-uclibc*)
++        enable_clocale_flag=uclibc
++        ;;
+       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ 	enable_clocale_flag=gnu
+ 	;;
+@@ -16108,6 +16111,78 @@ $as_echo "newlib" >&6; }
+       CTIME_CC=config/locale/generic/time_members.cc
+       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
+       ;;
++    uclibc)
++      { $as_echo "$as_me:${as_lineno-$LINENO}: result: uclibc" >&5
++$as_echo "uclibc" >&6; }
++
++      # Declare intention to use gettext, and add support for specific
++      # languages.
++      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
++      ALL_LINGUAS="de fr"
++
++      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
++      # Extract the first word of "msgfmt", so it can be a program name with args.
++set dummy msgfmt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_check_msgfmt+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  if test -n "$check_msgfmt"; then
++  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_prog_check_msgfmt="yes"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
++fi
++fi
++check_msgfmt=$ac_cv_prog_check_msgfmt
++if test -n "$check_msgfmt"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $check_msgfmt" >&5
++$as_echo "$check_msgfmt" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
++        USE_NLS=yes
++      fi
++      # Export the build objects.
++      for ling in $ALL_LINGUAS; do \
++        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
++        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
++      done
++
++
++
++      CLOCALE_H=config/locale/uclibc/c_locale.h
++      CLOCALE_CC=config/locale/uclibc/c_locale.cc
++      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
++      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
++      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
++      CMESSAGES_H=config/locale/uclibc/messages_members.h
++      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
++      CMONEY_CC=config/locale/uclibc/monetary_members.cc
++      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
++      CTIME_H=config/locale/uclibc/time_members.h
++      CTIME_CC=config/locale/uclibc/time_members.cc
++      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
++      ;;
+   esac
+ 
+   # This is where the testsuite looks for locale catalogs, using the
+diff --git a/libstdc++-v3/include/c_compatibility/wchar.h b/libstdc++-v3/include/c_compatibility/wchar.h
+index 55a0b52..7d8bb15 100644
+--- a/libstdc++-v3/include/c_compatibility/wchar.h
++++ b/libstdc++-v3/include/c_compatibility/wchar.h
+@@ -101,7 +101,9 @@ using std::wmemcmp;
+ using std::wmemcpy;
+ using std::wmemmove;
+ using std::wmemset;
++#if _GLIBCXX_HAVE_WCSFTIME
+ using std::wcsftime;
++#endif
+ 
+ #if _GLIBCXX_USE_C99_WCHAR
+ using std::wcstold;
+diff --git a/libstdc++-v3/include/c_std/cwchar b/libstdc++-v3/include/c_std/cwchar
+index dc4cef02..256d126 100644
+--- a/libstdc++-v3/include/c_std/cwchar
++++ b/libstdc++-v3/include/c_std/cwchar
+@@ -175,7 +175,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   using ::wcscoll;
+   using ::wcscpy;
+   using ::wcscspn;
++#if _GLIBCXX_HAVE_WCSFTIME
+   using ::wcsftime;
++#endif
+   using ::wcslen;
+   using ::wcsncat;
+   using ::wcsncmp;
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0005-uclibc-locale-no__x.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0005-uclibc-locale-no__x.patch
new file mode 100644
index 0000000..3275016
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0005-uclibc-locale-no__x.patch
@@ -0,0 +1,257 @@
+From c01c14e8e9be382ecd4121ee70f5003b4cb0f904 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:42:36 +0400
+Subject: [PATCH 05/46] uclibc-locale-no__x
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ .../config/locale/uclibc/c++locale_internal.h      | 45 ++++++++++++++++++++++
+ libstdc++-v3/config/locale/uclibc/c_locale.cc      | 14 -------
+ libstdc++-v3/config/locale/uclibc/c_locale.h       |  1 +
+ .../config/locale/uclibc/collate_members.cc        |  7 ----
+ libstdc++-v3/config/locale/uclibc/ctype_members.cc |  7 ----
+ .../config/locale/uclibc/messages_members.cc       |  7 +---
+ .../config/locale/uclibc/messages_members.h        | 18 ++++-----
+ .../config/locale/uclibc/monetary_members.cc       |  4 --
+ .../config/locale/uclibc/numeric_members.cc        |  3 --
+ libstdc++-v3/config/locale/uclibc/time_members.cc  |  3 --
+ 10 files changed, 55 insertions(+), 54 deletions(-)
+
+diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+index 2ae3e4a..e74fddf 100644
+--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
++++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+@@ -60,4 +60,49 @@ extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
+ extern "C" __typeof(wctype_l) __wctype_l;
+ #endif
+ 
++# define __nl_langinfo_l nl_langinfo_l
++# define __strcoll_l strcoll_l
++# define __strftime_l strftime_l
++# define __strtod_l strtod_l
++# define __strtof_l strtof_l
++# define __strtold_l strtold_l
++# define __strxfrm_l strxfrm_l
++# define __newlocale newlocale
++# define __freelocale freelocale
++# define __duplocale duplocale
++# define __uselocale uselocale
++
++# ifdef _GLIBCXX_USE_WCHAR_T
++#  define __iswctype_l iswctype_l
++#  define __towlower_l towlower_l
++#  define __towupper_l towupper_l
++#  define __wcscoll_l wcscoll_l
++#  define __wcsftime_l wcsftime_l
++#  define __wcsxfrm_l wcsxfrm_l
++#  define __wctype_l wctype_l
++# endif
++
++#else
++# define __nl_langinfo_l(N, L)       nl_langinfo((N))
++# define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
++# define __strtod_l(S, E, L)         strtod((S), (E))
++# define __strtof_l(S, E, L)         strtof((S), (E))
++# define __strtold_l(S, E, L)        strtold((S), (E))
++# define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
++# warning should dummy __newlocale check for C|POSIX ?
++# define __newlocale(a, b, c)        NULL
++# define __freelocale(a)             ((void)0)
++# define __duplocale(a)              __c_locale()
++//# define __uselocale ?
++//
++# ifdef _GLIBCXX_USE_WCHAR_T
++#  define __iswctype_l(C, M, L)       iswctype((C), (M))
++#  define __towlower_l(C, L)          towlower((C))
++#  define __towupper_l(C, L)          towupper((C))
++#  define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
++//#  define __wcsftime_l(S, M, F, T, L)  wcsftime((S), (M), (F), (T))
++#  define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
++#  define __wctype_l(S, L)            wctype((S))
++# endif
++
+ #endif // GLIBC 2.3 and later
+diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
+index 5081dc1..21430d0 100644
+--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
++++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
+@@ -39,20 +39,6 @@
+ #include <langinfo.h>
+ #include <bits/c++locale_internal.h>
+ 
+-#ifndef __UCLIBC_HAS_XLOCALE__
+-#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
+-#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
+-#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
+-#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
+-#define __strtof_l(S, E, L)         strtof((S), (E))
+-#define __strtod_l(S, E, L)         strtod((S), (E))
+-#define __strtold_l(S, E, L)        strtold((S), (E))
+-#warning should dummy __newlocale check for C|POSIX ?
+-#define __newlocale(a, b, c)        NULL
+-#define __freelocale(a)             ((void)0)
+-#define __duplocale(a)              __c_locale()
+-#endif
+-
+ namespace std
+ {
+   template<>
+diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
+index da07c1f..4bca5f1 100644
+--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
++++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
+@@ -68,6 +68,7 @@ namespace __gnu_cxx
+ {
+   extern "C" __typeof(uselocale) __uselocale;
+ }
++#define __uselocale uselocale
+ #endif
+ 
+ namespace std
+diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
+index c2664a7..ec5c329 100644
+--- a/libstdc++-v3/config/locale/uclibc/collate_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
+@@ -36,13 +36,6 @@
+ #include <locale>
+ #include <bits/c++locale_internal.h>
+ 
+-#ifndef __UCLIBC_HAS_XLOCALE__
+-#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
+-#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
+-#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
+-#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
+-#endif
+-
+ namespace std
+ {
+   // These are basically extensions to char_traits, and perhaps should
+diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+index 7294e3a..7b12861 100644
+--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+@@ -38,13 +38,6 @@
+ #undef _LIBC
+ #include <bits/c++locale_internal.h>
+ 
+-#ifndef __UCLIBC_HAS_XLOCALE__
+-#define __wctype_l(S, L)           wctype((S))
+-#define __towupper_l(C, L)         towupper((C))
+-#define __towlower_l(C, L)         towlower((C))
+-#define __iswctype_l(C, M, L)      iswctype((C), (M))
+-#endif
+-
+ namespace std
+ {
+   // NB: The other ctype<char> specializations are in src/locale.cc and
+diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
+index 13594d9..d7693b4 100644
+--- a/libstdc++-v3/config/locale/uclibc/messages_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
+@@ -39,13 +39,10 @@
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning fix gettext stuff
+ #endif
+-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
+-extern "C" char *__dcgettext(const char *domainname,
+-			     const char *msgid, int category);
+ #undef gettext
+-#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
++#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES)
+ #else
+-#undef gettext
+ #define gettext(msgid) (msgid)
+ #endif
+ 
+diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
+index 1424078..d89da33 100644
+--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
++++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
+@@ -36,15 +36,11 @@
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning fix prototypes for *textdomain funcs
+ #endif
+-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
+-extern "C" char *__textdomain(const char *domainname);
+-extern "C" char *__bindtextdomain(const char *domainname,
+-				  const char *dirname);
+-#else
+-#undef __textdomain
+-#undef __bindtextdomain
+-#define __textdomain(D)           ((void)0)
+-#define __bindtextdomain(D,P)     ((void)0)
++#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__
++#undef textdomain
++#undef bindtextdomain
++#define textdomain(D)           ((void)0)
++#define bindtextdomain(D,P)     ((void)0)
+ #endif
+ 
+   // Non-virtual member functions.
+@@ -70,7 +66,7 @@ extern "C" char *__bindtextdomain(const char *domainname,
+     messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
+ 			   const char* __dir) const
+     {
+-      __bindtextdomain(__s.c_str(), __dir);
++      bindtextdomain(__s.c_str(), __dir);
+       return this->do_open(__s, __loc);
+     }
+ 
+@@ -90,7 +86,7 @@ extern "C" char *__bindtextdomain(const char *domainname,
+     {
+       // No error checking is done, assume the catalog exists and can
+       // be used.
+-      __textdomain(__s.c_str());
++      textdomain(__s.c_str());
+       return 0;
+     }
+ 
+diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+index aa52731..2e6f80a 100644
+--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+@@ -43,10 +43,6 @@
+ #warning tailor for stub locale support
+ #endif
+ 
+-#ifndef __UCLIBC_HAS_XLOCALE__
+-#define __nl_langinfo_l(N, L)         nl_langinfo((N))
+-#endif
+-
+ namespace std
+ {
+   // Construct and return valid pattern consisting of some combination of:
+diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+index 883ec1a..2c70642 100644
+--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+@@ -41,9 +41,6 @@
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning tailor for stub locale support
+ #endif
+-#ifndef __UCLIBC_HAS_XLOCALE__
+-#define __nl_langinfo_l(N, L)         nl_langinfo((N))
+-#endif
+ 
+ namespace std
+ {
+diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
+index e0707d7..d848ed5 100644
+--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
+@@ -40,9 +40,6 @@
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning tailor for stub locale support
+ #endif
+-#ifndef __UCLIBC_HAS_XLOCALE__
+-#define __nl_langinfo_l(N, L)         nl_langinfo((N))
+-#endif
+ 
+ namespace std
+ {
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0006-uclibc-locale-wchar_fix.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0006-uclibc-locale-wchar_fix.patch
new file mode 100644
index 0000000..e45a482
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0006-uclibc-locale-wchar_fix.patch
@@ -0,0 +1,68 @@
+From e7a4760fb40008cae33e6fc7dc4cfef6c2fd5f93 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:45:57 +0400
+Subject: [PATCH 06/46] uclibc-locale-wchar_fix
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ libstdc++-v3/config/locale/uclibc/monetary_members.cc |  4 ++--
+ libstdc++-v3/config/locale/uclibc/numeric_members.cc  | 13 +++++++++++++
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+index 2e6f80a..31ebb9f 100644
+--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+@@ -401,7 +401,7 @@ namespace std
+ # ifdef __UCLIBC_HAS_XLOCALE__
+ 	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
+ 	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
+-# else
++# elif defined __UCLIBC_HAS_LOCALE__
+ 	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
+ 	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
+ # endif
+@@ -556,7 +556,7 @@ namespace std
+ # ifdef __UCLIBC_HAS_XLOCALE__
+ 	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
+ 	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
+-# else
++# elif defined __UCLIBC_HAS_LOCALE__
+ 	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
+ 	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
+ # endif
+diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+index 2c70642..d5c8961 100644
+--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+@@ -127,12 +127,25 @@ namespace std
+ 	{
+ 	  // Named locale.
+ 	  // NB: In the GNU model wchar_t is always 32 bit wide.
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be numeric
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# elif defined __UCLIBC_HAS_LOCALE__
++	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
+ 	  union { char *__s; wchar_t __w; } __u;
+ 	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
+ 	  _M_data->_M_decimal_point = __u.__w;
+ 
+ 	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
+ 	  _M_data->_M_thousands_sep = __u.__w;
++#endif
+ 
+ 	  if (_M_data->_M_thousands_sep == L'\0')
+ 	    _M_data->_M_grouping = "";
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0007-uclibc-locale-update.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0007-uclibc-locale-update.patch
new file mode 100644
index 0000000..b73e591
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0007-uclibc-locale-update.patch
@@ -0,0 +1,542 @@
+From 8d53a38a3038104e6830ecea5e4beadce54457c1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:46:58 +0400
+Subject: [PATCH 07/46] uclibc-locale-update
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ .../config/locale/uclibc/c++locale_internal.h      |  3 +
+ libstdc++-v3/config/locale/uclibc/c_locale.cc      | 74 ++++++++++------------
+ libstdc++-v3/config/locale/uclibc/c_locale.h       | 42 ++++++------
+ libstdc++-v3/config/locale/uclibc/ctype_members.cc | 51 +++++++++++----
+ .../config/locale/uclibc/messages_members.h        | 12 ++--
+ .../config/locale/uclibc/monetary_members.cc       | 34 ++++++----
+ .../config/locale/uclibc/numeric_members.cc        |  5 ++
+ libstdc++-v3/config/locale/uclibc/time_members.cc  | 18 ++++--
+ libstdc++-v3/config/locale/uclibc/time_members.h   | 17 +++--
+ 9 files changed, 158 insertions(+), 98 deletions(-)
+
+diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+index e74fddf..971a6b4 100644
+--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
++++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
+@@ -31,6 +31,9 @@
+ 
+ #include <bits/c++config.h>
+ #include <clocale>
++#include <cstdlib>
++#include <cstring>
++#include <cstddef>
+ 
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning clean this up
+diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
+index 21430d0..1b9d8e1 100644
+--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
++++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
+@@ -39,23 +39,20 @@
+ #include <langinfo.h>
+ #include <bits/c++locale_internal.h>
+ 
+-namespace std
+-{
++_GLIBCXX_BEGIN_NAMESPACE(std)
++
+   template<>
+     void
+     __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
+ 		   const __c_locale& __cloc)
+     {
+-      if (!(__err & ios_base::failbit))
+-	{
+-	  char* __sanity;
+-	  errno = 0;
+-	  float __f = __strtof_l(__s, &__sanity, __cloc);
+-          if (__sanity != __s && errno != ERANGE)
+-	    __v = __f;
+-	  else
+-	    __err |= ios_base::failbit;
+-	}
++      char* __sanity;
++      errno = 0;
++      float __f = __strtof_l(__s, &__sanity, __cloc);
++      if (__sanity != __s && errno != ERANGE)
++	__v = __f;
++      else
++	__err |= ios_base::failbit;
+     }
+ 
+   template<>
+@@ -63,16 +60,13 @@ namespace std
+     __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
+ 		   const __c_locale& __cloc)
+     {
+-      if (!(__err & ios_base::failbit))
+-	{
+-	  char* __sanity;
+-	  errno = 0;
+-	  double __d = __strtod_l(__s, &__sanity, __cloc);
+-          if (__sanity != __s && errno != ERANGE)
+-	    __v = __d;
+-	  else
+-	    __err |= ios_base::failbit;
+-	}
++      char* __sanity;
++      errno = 0;
++      double __d = __strtod_l(__s, &__sanity, __cloc);
++      if (__sanity != __s && errno != ERANGE)
++	__v = __d;
++      else
++	__err |= ios_base::failbit;
+     }
+ 
+   template<>
+@@ -80,16 +74,13 @@ namespace std
+     __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
+ 		   const __c_locale& __cloc)
+     {
+-      if (!(__err & ios_base::failbit))
+-	{
+-	  char* __sanity;
+-	  errno = 0;
+-	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
+-          if (__sanity != __s && errno != ERANGE)
+-	    __v = __ld;
+-	  else
+-	    __err |= ios_base::failbit;
+-	}
++      char* __sanity;
++      errno = 0;
++      long double __ld = __strtold_l(__s, &__sanity, __cloc);
++      if (__sanity != __s && errno != ERANGE)
++	__v = __ld;
++      else
++	__err |= ios_base::failbit;
+     }
+ 
+   void
+@@ -110,17 +101,18 @@ namespace std
+   void
+   locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
+   {
+-    if (_S_get_c_locale() != __cloc)
++    if (__cloc && _S_get_c_locale() != __cloc)
+       __freelocale(__cloc);
+   }
+ 
+   __c_locale
+   locale::facet::_S_clone_c_locale(__c_locale& __cloc)
+   { return __duplocale(__cloc); }
+-} // namespace std
+ 
+-namespace __gnu_cxx
+-{
++_GLIBCXX_END_NAMESPACE
++
++_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
++
+   const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
+     {
+       "LC_CTYPE",
+@@ -138,9 +130,11 @@ namespace __gnu_cxx
+       "LC_IDENTIFICATION"
+ #endif
+     };
+-}
+ 
+-namespace std
+-{
++_GLIBCXX_END_NAMESPACE
++
++_GLIBCXX_BEGIN_NAMESPACE(std)
++
+   const char* const* const locale::_S_categories = __gnu_cxx::category_names;
+-}  // namespace std
++
++_GLIBCXX_END_NAMESPACE
+diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
+index 4bca5f1..64a6d46 100644
+--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
++++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
+@@ -39,21 +39,23 @@
+ #pragma GCC system_header
+ 
+ #include <cstring>              // get std::strlen
+-#include <cstdio>               // get std::snprintf or std::sprintf
++#include <cstdio>               // get std::vsnprintf or std::vsprintf
+ #include <clocale>
+ #include <langinfo.h>		// For codecvt
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning fix this
+ #endif
+-#ifdef __UCLIBC_HAS_LOCALE__
++#ifdef _GLIBCXX_USE_ICONV
+ #include <iconv.h>		// For codecvt using iconv, iconv_t
+ #endif
+-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
+-#include <libintl.h> 		// For messages
++#ifdef HAVE_LIBINTL_H
++#include <libintl.h>		// For messages
+ #endif
++#include <cstdarg>
+ 
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning what is _GLIBCXX_C_LOCALE_GNU for
++// psm: used in os/gnu-linux/ctype_noninline.h
+ #endif
+ #define _GLIBCXX_C_LOCALE_GNU 1
+ 
+@@ -78,23 +80,25 @@ namespace std
+ #else
+   typedef int*			__c_locale;
+ #endif
+-
+-  // Convert numeric value of type _Tv to string and return length of
+-  // string.  If snprintf is available use it, otherwise fall back to
+-  // the unsafe sprintf which, in general, can be dangerous and should
++  // Convert numeric value of type double to string and return length of
++  // string.  If vsnprintf is available use it, otherwise fall back to
++  // the unsafe vsprintf which, in general, can be dangerous and should
+   // be avoided.
+-  template<typename _Tv>
+-    int
+-    __convert_from_v(char* __out,
+-		     const int __size __attribute__ ((__unused__)),
+-		     const char* __fmt,
+-#ifdef __UCLIBC_HAS_XCLOCALE__
+-		     _Tv __v, const __c_locale& __cloc, int __prec)
++    inline int
++    __convert_from_v(const __c_locale&
++#ifndef __UCLIBC_HAS_XCLOCALE__
++	__cloc __attribute__ ((__unused__))
++#endif
++		     ,
++		     char* __out,
++		     const int __size,
++		     const char* __fmt, ...)
+     {
++      va_list __args;
++#ifdef __UCLIBC_HAS_XCLOCALE__
++
+       __c_locale __old = __gnu_cxx::__uselocale(__cloc);
+ #else
+-		     _Tv __v, const __c_locale&, int __prec)
+-    {
+ # ifdef __UCLIBC_HAS_LOCALE__
+       char* __old = std::setlocale(LC_ALL, NULL);
+       char* __sav = new char[std::strlen(__old) + 1];
+@@ -103,7 +107,9 @@ namespace std
+ # endif
+ #endif
+ 
+-      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
++      va_start(__args, __fmt);
++      const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
++      va_end(__args);
+ 
+ #ifdef __UCLIBC_HAS_XCLOCALE__
+       __gnu_cxx::__uselocale(__old);
+diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+index 7b12861..13e011d 100644
+--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
+@@ -33,16 +33,20 @@
+ 
+ // Written by Benjamin Kosnik <bkoz@redhat.com>
+ 
++#include <features.h>
++#ifdef __UCLIBC_HAS_LOCALE__
+ #define _LIBC
+ #include <locale>
+ #undef _LIBC
++#else
++#include <locale>
++#endif
+ #include <bits/c++locale_internal.h>
+ 
+-namespace std
+-{
++_GLIBCXX_BEGIN_NAMESPACE(std)
++
+   // NB: The other ctype<char> specializations are in src/locale.cc and
+   // various /config/os/* files.
+-  template<>
+     ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
+     : ctype<char>(0, false, __refs)
+     {
+@@ -57,6 +61,8 @@ namespace std
+ #endif
+ 	}
+     }
++    ctype_byname<char>::~ctype_byname()
++    { }
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   ctype<wchar_t>::__wmask_type
+@@ -138,17 +144,33 @@ namespace std
+   ctype<wchar_t>::
+   do_is(mask __m, wchar_t __c) const
+   {
+-    // Highest bitmask in ctype_base == 10, but extra in "C"
+-    // library for blank.
++    // The case of __m == ctype_base::space is particularly important,
++    // due to its use in many istream functions.  Therefore we deal with
++    // it first, exploiting the knowledge that on GNU systems _M_bit[5]
++    // is the mask corresponding to ctype_base::space.  NB: an encoding
++    // change would not affect correctness!
++
+     bool __ret = false;
+-    const size_t __bitmasksize = 11;
+-    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
+-      if (__m & _M_bit[__bitcur]
+-	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
+-	{
+-	  __ret = true;
+-	  break;
+-	}
++    if (__m == _M_bit[5])
++      __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
++    else
++      {
++	// Highest bitmask in ctype_base == 10, but extra in "C"
++	// library for blank.
++	const size_t __bitmasksize = 11;
++	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++	  if (__m & _M_bit[__bitcur])
++	    {
++	      if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
++		{
++		  __ret = true;
++		  break;
++		}
++	      else if (__m == _M_bit[__bitcur])
++		break;
++	    }
++      }
++
+     return __ret;
+   }
+ 
+@@ -290,4 +312,5 @@ namespace std
+ #endif
+   }
+ #endif //  _GLIBCXX_USE_WCHAR_T
+-}
++
++_GLIBCXX_END_NAMESPACE
+diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
+index d89da33..067657a 100644
+--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
++++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
+@@ -53,12 +53,16 @@
+   template<typename _CharT>
+      messages<_CharT>::messages(__c_locale __cloc, const char* __s,
+ 				size_t __refs)
+-     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
+-     _M_name_messages(__s)
++     : facet(__refs), _M_c_locale_messages(NULL),
++     _M_name_messages(NULL)
+      {
+-       char* __tmp = new char[std::strlen(__s) + 1];
+-       std::strcpy(__tmp, __s);
++       const size_t __len = std::strlen(__s) + 1;
++       char* __tmp = new char[__len];
++       std::memcpy(__tmp, __s, __len);
+        _M_name_messages = __tmp;
++
++       // Last to avoid leaking memory if new throws.
++       _M_c_locale_messages = _S_clone_c_locale(__cloc);
+      }
+ 
+   template<typename _CharT>
+diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+index 31ebb9f..7679b9c 100644
+--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+@@ -33,9 +33,14 @@
+ 
+ // Written by Benjamin Kosnik <bkoz@redhat.com>
+ 
++#include <features.h>
++#ifdef __UCLIBC_HAS_LOCALE__
+ #define _LIBC
+ #include <locale>
+ #undef _LIBC
++#else
++#include <locale>
++#endif
+ #include <bits/c++locale_internal.h>
+ 
+ #ifdef __UCLIBC_MJN3_ONLY__
+@@ -206,7 +211,7 @@ namespace std
+ 	  }
+ 	break;
+       default:
+-	;
++	__ret = pattern();
+       }
+     return __ret;
+   }
+@@ -390,7 +395,9 @@ namespace std
+ 	  __c_locale __old = __uselocale(__cloc);
+ #else
+ 	  // Switch to named locale so that mbsrtowcs will work.
+-	  char* __old = strdup(setlocale(LC_ALL, NULL));
++  	  char* __old = setlocale(LC_ALL, NULL);
++          const size_t __llen = strlen(__old) + 1;
++          char* __sav = new char[__llen];
+ 	  setlocale(LC_ALL, __name);
+ #endif
+ 
+@@ -477,8 +484,8 @@ namespace std
+ #ifdef __UCLIBC_HAS_XLOCALE__
+ 	      __uselocale(__old);
+ #else
+-	      setlocale(LC_ALL, __old);
+-	      free(__old);
++	      setlocale(LC_ALL, __sav);
++	      delete [] __sav;
+ #endif
+ 	      __throw_exception_again;
+ 	    }
+@@ -498,8 +505,8 @@ namespace std
+ #ifdef __UCLIBC_HAS_XLOCALE__
+ 	  __uselocale(__old);
+ #else
+-	  setlocale(LC_ALL, __old);
+-	  free(__old);
++	  setlocale(LC_ALL, __sav);
++	  delete [] __sav;
+ #endif
+ 	}
+     }
+@@ -545,8 +552,11 @@ namespace std
+ 	  __c_locale __old = __uselocale(__cloc);
+ #else
+ 	  // Switch to named locale so that mbsrtowcs will work.
+-	  char* __old = strdup(setlocale(LC_ALL, NULL));
+-	  setlocale(LC_ALL, __name);
++          char* __old = setlocale(LC_ALL, NULL);
++          const size_t __llen = strlen(__old) + 1;
++          char* __sav = new char[__llen];
++          memcpy(__sav, __old, __llen);
++          setlocale(LC_ALL, __name);
+ #endif
+ 
+ #ifdef __UCLIBC_MJN3_ONLY__
+@@ -633,8 +643,8 @@ namespace std
+ #ifdef __UCLIBC_HAS_XLOCALE__
+ 	      __uselocale(__old);
+ #else
+-	      setlocale(LC_ALL, __old);
+-	      free(__old);
++	      setlocale(LC_ALL, __sav);
++	      delete [] __sav;
+ #endif
+               __throw_exception_again;
+ 	    }
+@@ -653,8 +663,8 @@ namespace std
+ #ifdef __UCLIBC_HAS_XLOCALE__
+ 	  __uselocale(__old);
+ #else
+-	  setlocale(LC_ALL, __old);
+-	  free(__old);
++	  setlocale(LC_ALL, __sav);
++	  delete [] __sav;
+ #endif
+ 	}
+     }
+diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+index d5c8961..8ae8969 100644
+--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+@@ -33,9 +33,14 @@
+ 
+ // Written by Benjamin Kosnik <bkoz@redhat.com>
+ 
++#include <features.h>
++#ifdef __UCLIBC_HAS_LOCALE__
+ #define _LIBC
+ #include <locale>
+ #undef _LIBC
++#else
++#include <locale>
++#endif
+ #include <bits/c++locale_internal.h>
+ 
+ #ifdef __UCLIBC_MJN3_ONLY__
+diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
+index d848ed5..f24d53e 100644
+--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
++++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
+@@ -53,11 +53,14 @@ namespace std
+       const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
+ 					_M_c_locale_timepunct);
+ #else
+-      char* __old = strdup(setlocale(LC_ALL, NULL));
++      char* __old = setlocale(LC_ALL, NULL);
++      const size_t __llen = strlen(__old) + 1;
++      char* __sav = new char[__llen];
++      memcpy(__sav, __old, __llen);
+       setlocale(LC_ALL, _M_name_timepunct);
+       const size_t __len = strftime(__s, __maxlen, __format, __tm);
+-      setlocale(LC_ALL, __old);
+-      free(__old);
++      setlocale(LC_ALL, __sav);
++      delete [] __sav;
+ #endif
+       // Make sure __s is null terminated.
+       if (__len == 0)
+@@ -207,11 +210,14 @@ namespace std
+       const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
+ 					_M_c_locale_timepunct);
+ #else
+-      char* __old = strdup(setlocale(LC_ALL, NULL));
++      char* __old = setlocale(LC_ALL, NULL);
++      const size_t __llen = strlen(__old) + 1;
++      char* __sav = new char[__llen];
++      memcpy(__sav, __old, __llen);
+       setlocale(LC_ALL, _M_name_timepunct);
+       const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
+-      setlocale(LC_ALL, __old);
+-      free(__old);
++      setlocale(LC_ALL, __sav);
++      delete [] __sav;
+ #endif
+       // Make sure __s is null terminated.
+       if (__len == 0)
+diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
+index ba8e858..1665dde 100644
+--- a/libstdc++-v3/config/locale/uclibc/time_members.h
++++ b/libstdc++-v3/config/locale/uclibc/time_members.h
+@@ -50,12 +50,21 @@
+     __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
+ 				     size_t __refs)
+     : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
+-    _M_name_timepunct(__s)
++    _M_name_timepunct(NULL)
+     {
+-      char* __tmp = new char[std::strlen(__s) + 1];
+-      std::strcpy(__tmp, __s);
++      const size_t __len = std::strlen(__s) + 1;
++      char* __tmp = new char[__len];
++      std::memcpy(__tmp, __s, __len);
+       _M_name_timepunct = __tmp;
+-      _M_initialize_timepunct(__cloc);
++
++      try
++	{ _M_initialize_timepunct(__cloc); }
++      catch(...)
++	{
++	  delete [] _M_name_timepunct;
++	  __throw_exception_again;
++	}
++
+     }
+ 
+   template<typename _CharT>
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0008-missing-execinfo_h.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0008-missing-execinfo_h.patch
new file mode 100644
index 0000000..01e7c95
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0008-missing-execinfo_h.patch
@@ -0,0 +1,28 @@
+From 6dde3da24ef4b9b357bca670d8551cab3fdda843 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:48:10 +0400
+Subject: [PATCH 08/46] missing-execinfo_h
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ boehm-gc/include/gc.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/boehm-gc/include/gc.h b/boehm-gc/include/gc.h
+index 6b38f2d..fca98ff 100644
+--- a/boehm-gc/include/gc.h
++++ b/boehm-gc/include/gc.h
+@@ -503,7 +503,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROTO((size_t lb));
+ #if defined(__linux__) || defined(__GLIBC__)
+ # include <features.h>
+ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
+-     && !defined(__ia64__)
++     && !defined(__ia64__) && !defined(__UCLIBC__)
+ #   ifndef GC_HAVE_BUILTIN_BACKTRACE
+ #     define GC_HAVE_BUILTIN_BACKTRACE
+ #   endif
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0009-c99-snprintf.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0009-c99-snprintf.patch
new file mode 100644
index 0000000..d62341a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0009-c99-snprintf.patch
@@ -0,0 +1,28 @@
+From b794f1f1c1c7c06f3f0d78cf76c4fb90c2ab8dfb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:49:03 +0400
+Subject: [PATCH 09/46] c99-snprintf
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ libstdc++-v3/include/c_std/cstdio | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libstdc++-v3/include/c_std/cstdio b/libstdc++-v3/include/c_std/cstdio
+index a4119ba..8396f43 100644
+--- a/libstdc++-v3/include/c_std/cstdio
++++ b/libstdc++-v3/include/c_std/cstdio
+@@ -144,7 +144,7 @@ namespace std
+   using ::vsprintf;
+ } // namespace std
+ 
+-#if _GLIBCXX_USE_C99_STDIO
++#if _GLIBCXX_USE_C99_STDIO || defined(__UCLIBC__)
+ 
+ #undef snprintf
+ #undef vfscanf
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0010-gcc-poison-system-directories.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0010-gcc-poison-system-directories.patch
new file mode 100644
index 0000000..ac4cf44
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0010-gcc-poison-system-directories.patch
@@ -0,0 +1,192 @@
+From d76250323dad69212c958e4857a98d99ab51a39e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 08:59:00 +0400
+Subject: [PATCH 10/46] gcc: poison-system-directories
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [distribution: codesourcery]
+---
+ gcc/common.opt      |  4 ++++
+ gcc/config.in       |  6 ++++++
+ gcc/configure       | 16 ++++++++++++++++
+ gcc/configure.ac    | 10 ++++++++++
+ gcc/doc/invoke.texi |  9 +++++++++
+ gcc/gcc.c           |  2 ++
+ gcc/incpath.c       | 19 +++++++++++++++++++
+ 7 files changed, 66 insertions(+)
+
+diff --git a/gcc/common.opt b/gcc/common.opt
+index 67048db..733185c 100644
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -659,6 +659,10 @@ Wreturn-local-addr
+ Common Var(warn_return_local_addr) Init(1) Warning
+ Warn about returning a pointer/reference to a local or temporary variable.
+ 
++Wpoison-system-directories
++Common Var(flag_poison_system_directories) Init(1) Warning
++Warn for -I and -L options using system directories if cross compiling
++
+ Wshadow
+ Common Var(warn_shadow) Warning
+ Warn when one local variable shadows another.
+diff --git a/gcc/config.in b/gcc/config.in
+index 115cb61..105b30f 100644
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -187,6 +187,12 @@
+ #endif
+ 
+ 
++/* Define to warn for use of native system header directories */
++#ifndef USED_FOR_TARGET
++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
++#endif
++
++
+ /* Define if you want all operations on RTL (the basic data structure of the
+    optimizer and back end) to be checked for dynamic type safety at runtime.
+    This is quite expensive. */
+diff --git a/gcc/configure b/gcc/configure
+index 1c6e340..8f83152 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -942,6 +942,7 @@ with_system_zlib
+ enable_maintainer_mode
+ enable_link_mutex
+ enable_version_specific_runtime_libs
++enable_poison_system_directories
+ enable_plugin
+ enable_host_shared
+ enable_libquadmath_support
+@@ -1681,6 +1682,8 @@ Optional Features:
+   --enable-version-specific-runtime-libs
+                           specify that runtime libraries should be installed
+                           in a compiler-specific directory
++  --enable-poison-system-directories
++                          warn for use of native system header directories
+   --enable-plugin         enable plugin support
+   --enable-host-shared    build host code as shared libraries
+   --disable-libquadmath-support
+@@ -28908,6 +28911,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
+ fi
+ 
+ 
++# Check whether --enable-poison-system-directories was given.
++if test "${enable_poison_system_directories+set}" = set; then :
++  enableval=$enable_poison_system_directories;
++else
++  enable_poison_system_directories=no
++fi
++
++if test "x${enable_poison_system_directories}" = "xyes"; then
++
++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++
++fi
++
+ # Substitute configuration variables
+ 
+ 
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 6c1dcd9..0fccaef 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -5861,6 +5861,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
+                 [specify that runtime libraries should be
+                  installed in a compiler-specific directory])])
+ 
++AC_ARG_ENABLE([poison-system-directories],
++             AS_HELP_STRING([--enable-poison-system-directories],
++                            [warn for use of native system header directories]),,
++             [enable_poison_system_directories=no])
++if test "x${enable_poison_system_directories}" = "xyes"; then
++  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
++           [1],
++           [Define to warn for use of native system header directories])
++fi
++
+ # Substitute configuration variables
+ AC_SUBST(subdirs)
+ AC_SUBST(srcdir)
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 821f8fd..8bb49e7 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -284,6 +284,7 @@ Objective-C and Objective-C++ Dialects}.
+ -Wparentheses -Wno-pedantic-ms-format @gol
+ -Wplacement-new -Wplacement-new=@var{n} @gol
+ -Wpointer-arith  -Wno-pointer-to-int-cast @gol
++-Wno-poison-system-directories @gol
+ -Wno-pragmas -Wredundant-decls  -Wno-return-local-addr @gol
+ -Wreturn-type  -Wsequence-point  -Wshadow  -Wno-shadow-ivar @gol
+ -Wshift-overflow -Wshift-overflow=@var{n} @gol
+@@ -4723,6 +4724,14 @@ made up of data only and thus requires no special treatment.  But, for
+ most targets, it is made up of code and thus requires the stack to be
+ made executable in order for the program to work properly.
+ 
++@item -Wno-poison-system-directories
++@opindex Wno-poison-system-directories
++Do not warn for @option{-I} or @option{-L} options using system
++directories such as @file{/usr/include} when cross compiling.  This
++option is intended for use in chroot environments when such
++directories contain the correct headers and libraries for the target
++system rather than the host.
++
+ @item -Wfloat-equal
+ @opindex Wfloat-equal
+ @opindex Wno-float-equal
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 1af5920..4cfef7f 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1017,6 +1017,8 @@ proper position among the other output files.  */
+    "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
+    "%X %{o*} %{e*} %{N} %{n} %{r}\
+     %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \
++    %{Wno-poison-system-directories:--no-poison-system-directories} \
++    %{Werror=poison-system-directories:--error-poison-system-directories} \
+     %{static:} %{L*} %(mfwrap) %(link_libgcc) " \
+     VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o " CHKP_SPEC " \
+     %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
+diff --git a/gcc/incpath.c b/gcc/incpath.c
+index ea40f4a..856da41 100644
+--- a/gcc/incpath.c
++++ b/gcc/incpath.c
+@@ -26,6 +26,7 @@
+ #include "intl.h"
+ #include "incpath.h"
+ #include "cppdefault.h"
++#include "diagnostic-core.h"
+ 
+ /* Microsoft Windows does not natively support inodes.
+    VMS has non-numeric inodes.  */
+@@ -381,6 +382,24 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
+ 	}
+       fprintf (stderr, _("End of search list.\n"));
+     }
++
++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
++  if (flag_poison_system_directories)
++    {
++       struct cpp_dir *p;
++
++       for (p = heads[QUOTE]; p; p = p->next)
++         {
++          if ((!strncmp (p->name, "/usr/include", 12))
++              || (!strncmp (p->name, "/usr/local/include", 18))
++              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
++            warning (OPT_Wpoison_system_directories,
++                     "include location \"%s\" is unsafe for "
++                     "cross-compilation",
++                     p->name);
++         }
++    }
++#endif
+ }
+ 
+ /* Use given -I paths for #include "..." but not #include <...>, and
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0011-gcc-poison-dir-extend.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0011-gcc-poison-dir-extend.patch
new file mode 100644
index 0000000..a1736aea
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0011-gcc-poison-dir-extend.patch
@@ -0,0 +1,39 @@
+From a1c24b59def393e43cd50b6768604a212c788ed3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:00:34 +0400
+Subject: [PATCH 11/46] gcc-poison-dir-extend
+
+Add /sw/include and /opt/include based on the original
+zecke-no-host-includes.patch patch.  The original patch checked for
+/usr/include, /sw/include and /opt/include and then triggered a failure and
+aborted.
+
+Instead, we add the two missing items to the current scan.  If the user
+wants this to be a failure, they can add "-Werror=poison-system-directories".
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/incpath.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/incpath.c b/gcc/incpath.c
+index 856da41..d2fc82c 100644
+--- a/gcc/incpath.c
++++ b/gcc/incpath.c
+@@ -392,7 +392,9 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
+          {
+           if ((!strncmp (p->name, "/usr/include", 12))
+               || (!strncmp (p->name, "/usr/local/include", 18))
+-              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
++              || (!strncmp (p->name, "/usr/X11R6/include", 18))
++              || (!strncmp (p->name, "/sw/include", 11))
++              || (!strncmp (p->name, "/opt/include", 12)))
+             warning (OPT_Wpoison_system_directories,
+                      "include location \"%s\" is unsafe for "
+                      "cross-compilation",
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
new file mode 100644
index 0000000..939b070
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0012-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
@@ -0,0 +1,73 @@
+From 00ef5f0f2a8d3b33aeb1e55c0d23439f4dd495af Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:08:31 +0400
+Subject: [PATCH 12/46] gcc-4.3.3: SYSROOT_CFLAGS_FOR_TARGET
+
+Before committing, I noticed that PR/32161 was marked as a dup of PR/32009, but my previous patch did not fix it.
+
+This alternative patch is better because it lets you just use CFLAGS_FOR_TARGET to set the compilation flags for libgcc. Since bootstrapped target libraries are never compiled with the native compiler, it makes little sense to use different flags for stage1 and later stages. And it also makes little sense to use a different variable than CFLAGS_FOR_TARGET.
+
+Other changes I had to do include:
+
+- moving the creation of default CFLAGS_FOR_TARGET from Makefile.am to configure.ac, because otherwise the BOOT_CFLAGS are substituted into CFLAGS_FOR_TARGET (which is "-O2 -g $(CFLAGS)") via $(CFLAGS). It is also cleaner this way though.
+
+- passing the right CFLAGS to configure scripts as exported environment variables
+
+I also stopped passing LIBCFLAGS to configure scripts since they are unused in the whole src tree. And I updated the documentation as H-P reminded me to do.
+
+Bootstrapped/regtested i686-pc-linux-gnu, will commit to 4.4 shortly. Ok for 4.3?
+
+Signed-off-by: Paolo Bonzini  <bonzini@gnu.org>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ configure | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+
+diff --git a/configure b/configure
+index bfadc33..755d382 100755
+--- a/configure
++++ b/configure
+@@ -6819,6 +6819,38 @@ fi
+ 
+ 
+ 
++# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
++# might be empty or "-g".  We don't require a C++ compiler, so CXXFLAGS
++# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
++# We want to ensure that TARGET libraries (which we know are built with
++# gcc) are built with "-O2 -g", so include those options when setting
++# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
++if test "x$CFLAGS_FOR_TARGET" = x; then
++  CFLAGS_FOR_TARGET=$CFLAGS
++  case " $CFLAGS " in
++    *" -O2 "*) ;;
++    *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
++  esac
++  case " $CFLAGS " in
++    *" -g "* | *" -g3 "*) ;;
++    *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
++  esac
++fi
++
++
++if test "x$CXXFLAGS_FOR_TARGET" = x; then
++  CXXFLAGS_FOR_TARGET=$CXXFLAGS
++  case " $CXXFLAGS " in
++    *" -O2 "*) ;;
++    *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
++  esac
++  case " $CXXFLAGS " in
++    *" -g "* | *" -g3 "*) ;;
++    *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
++  esac
++fi
++
++
+ # Handle --with-headers=XXX.  If the value is not "yes", the contents of
+ # the named directory are copied to $(tooldir)/sys-include.
+ if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0013-64-bit-multilib-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0013-64-bit-multilib-hack.patch
new file mode 100644
index 0000000..e31cde4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0013-64-bit-multilib-hack.patch
@@ -0,0 +1,85 @@
+From 7fc7a070ac53a55950a1eac76f02877d4106b4b3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:10:06 +0400
+Subject: [PATCH 13/46] 64-bit multilib hack.
+
+GCC has internal multilib handling code but it assumes a very specific rigid directory
+layout. The build system implementation of multilib layout is very generic and allows
+complete customisation of the library directories.
+
+This patch is a partial solution to allow any custom directories to be passed into gcc
+and handled correctly. It forces gcc to use the base_libdir (which is the current
+directory, "."). We need to do this for each multilib that is configured as we don't
+know which compiler options may be being passed into the compiler. Since we have a compiler
+per mulitlib at this point that isn't an issue.
+
+The one problem is the target compiler is only going to work for the default multlilib at
+this point. Ideally we'd figure out which multilibs were being enabled with which paths
+and be able to patch these entries with a complete set of correct paths but this we
+don't have such code at this point. This is something the target gcc recipe should do
+and override these platform defaults in its build config.
+
+RP 15/8/11
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Elvis Dowson <elvis.dowson@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/config/i386/t-linux64   |  6 ++----
+ gcc/config/mips/t-linux64   | 10 +++-------
+ gcc/config/rs6000/t-linux64 |  5 ++---
+ 3 files changed, 7 insertions(+), 14 deletions(-)
+
+diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64
+index c0cc8a3..365a5d6 100644
+--- a/gcc/config/i386/t-linux64
++++ b/gcc/config/i386/t-linux64
+@@ -32,7 +32,5 @@
+ #
+ comma=,
+ MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+-MULTILIB_DIRNAMES   = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
+-MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
++MULTILIB_DIRNAMES = . .
++MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
+diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64
+index 16c8adf..b932ace 100644
+--- a/gcc/config/mips/t-linux64
++++ b/gcc/config/mips/t-linux64
+@@ -17,10 +17,6 @@
+ # <http://www.gnu.org/licenses/>.
+ 
+ MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
+-MULTILIB_DIRNAMES = n32 32 64
+-MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
+-MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
+-MULTILIB_OSDIRNAMES = \
+-	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
+-	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
+-	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++MULTILIB_DIRNAMES = . . .
++MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
++
+diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64
+index fa7550b..9b5d9ef 100644
+--- a/gcc/config/rs6000/t-linux64
++++ b/gcc/config/rs6000/t-linux64
+@@ -26,10 +26,9 @@
+ # MULTILIB_OSDIRNAMES according to what is found on the target.
+ 
+ MULTILIB_OPTIONS    := m64/m32
+-MULTILIB_DIRNAMES   := 64 32
++MULTILIB_DIRNAMES   := . .
+ MULTILIB_EXTRA_OPTS := 
+-MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
++MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
+ 
+ rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
+ 	$(COMPILE) $<
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0014-optional-libstdc.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0014-optional-libstdc.patch
new file mode 100644
index 0000000..44b0cc7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0014-optional-libstdc.patch
@@ -0,0 +1,125 @@
+From 36275f7981bdaf919bbc9b51a7c7fae1e192adb3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:12:56 +0400
+Subject: [PATCH 14/46] optional libstdc
+
+gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
+will not run correctly since by default the linker will try to link against libstdc++
+which shouldn't exist yet. We need an option to disable -lstdc++
+option whilst leaving -lc, -lgcc and other automatic library dependencies added by gcc
+driver. This patch adds such an option which only disables the -lstdc++.
+
+A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
+do this officially, the likely answer is don't build libstdc++ separately.
+
+RP 29/6/10
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+---
+ gcc/c-family/c.opt  |  4 ++++
+ gcc/cp/g++spec.c    |  1 +
+ gcc/doc/invoke.texi | 32 +++++++++++++++++++++++++++++++-
+ gcc/gcc.c           |  1 +
+ 4 files changed, 37 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
+index 4f86876..660da6c 100644
+--- a/gcc/c-family/c.opt
++++ b/gcc/c-family/c.opt
+@@ -1647,6 +1647,10 @@ nostdinc++
+ C++ ObjC++
+ Do not search standard system include directories for C++.
+ 
++nostdlib++
++Driver
++Do not link standard C++ runtime library
++
+ o
+ C ObjC C++ ObjC++ Joined Separate
+ ; Documented in common.opt
+diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c
+index 03cbde0..3642540 100644
+--- a/gcc/cp/g++spec.c
++++ b/gcc/cp/g++spec.c
+@@ -137,6 +137,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
+       switch (decoded_options[i].opt_index)
+ 	{
+ 	case OPT_nostdlib:
++	case OPT_nostdlib__:
+ 	case OPT_nodefaultlibs:
+ 	  library = -1;
+ 	  break;
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 8bb49e7..84d68aa 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -207,6 +207,9 @@ in the following sections.
+ -fno-weak  -nostdinc++ @gol
+ -fvisibility-inlines-hidden @gol
+ -fvisibility-ms-compat @gol
++-fvtable-verify=@r{[}std@r{|}preinit@r{|}none@r{]} @gol
++-fvtv-counts -fvtv-debug @gol
++-nostdlib++ @gol
+ -fext-numeric-literals @gol
+ -Wabi=@var{n}  -Wabi-tag  -Wconversion-null  -Wctor-dtor-privacy @gol
+ -Wdelete-non-virtual-dtor -Wliteral-suffix -Wmultiple-inheritance @gol
+@@ -470,7 +473,7 @@ Objective-C and Objective-C++ Dialects}.
+ -s  -static -static-libgcc -static-libstdc++ @gol
+ -static-libasan -static-libtsan -static-liblsan -static-libubsan @gol
+ -static-libmpx -static-libmpxwrappers @gol
+--shared -shared-libgcc  -symbolic @gol
++-shared -shared-libgcc  -symbolic -nostdlib++ @gol
+ -T @var{script}  -Wl,@var{option}  -Xlinker @var{option} @gol
+ -u @var{symbol} -z @var{keyword}}
+ 
+@@ -10601,6 +10604,33 @@ library subroutines.
+ constructors are called; @pxref{Collect2,,@code{collect2}, gccint,
+ GNU Compiler Collection (GCC) Internals}.)
+ 
++@item -nostdlib++
++@opindex nostdlib++
++Do not use the standard system C++ runtime libraries when linking.
++Only the libraries you specify will be passed to the linker.
++
++@cindex @option{-lgcc}, use with @option{-nostdlib}
++@cindex @option{-nostdlib} and unresolved references
++@cindex unresolved references and @option{-nostdlib}
++@cindex @option{-lgcc}, use with @option{-nodefaultlibs}
++@cindex @option{-nodefaultlibs} and unresolved references
++@cindex unresolved references and @option{-nodefaultlibs}
++One of the standard libraries bypassed by @option{-nostdlib} and
++@option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines
++which GCC uses to overcome shortcomings of particular machines, or special
++needs for some languages.
++(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler
++Collection (GCC) Internals},
++for more discussion of @file{libgcc.a}.)
++In most cases, you need @file{libgcc.a} even when you want to avoid
++other standard libraries.  In other words, when you specify @option{-nostdlib}
++or @option{-nodefaultlibs} you should usually specify @option{-lgcc} as well.
++This ensures that you have no unresolved references to internal GCC
++library subroutines.
++(An example of such an internal subroutine is @code{__main}, used to ensure C++
++constructors are called; @pxref{Collect2,,@code{collect2}, gccint,
++GNU Compiler Collection (GCC) Internals}.)
++
+ @item -pie
+ @opindex pie
+ Produce a position independent executable on targets that support it.
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 4cfef7f..da0b482 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1028,6 +1028,7 @@ proper position among the other output files.  */
+     %(mflib) " STACK_SPLIT_SPEC "\
+     %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
+     %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
++    %{!nostdlib++:}\
+     %{!nostdlib:%{!nostartfiles:%E}} %{T*}  \n%(post_link) }}}}}}"
+ #endif
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
new file mode 100644
index 0000000..6fc7346
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0015-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
@@ -0,0 +1,59 @@
+From 9346f6042d8f7f85a75ca2af15f3b8d234985165 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:14:20 +0400
+Subject: [PATCH 15/46] gcc: disable MASK_RELAX_PIC_CALLS bit
+
+The new feature added after 4.3.3
+"http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html"
+will cause cc1plus eat up all the system memory when build webkit-gtk.
+The function mips_get_pic_call_symbol keeps on recursively calling itself.
+Disable this feature to walk aside the bug.
+
+Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [configuration]
+---
+ gcc/configure    | 7 -------
+ gcc/configure.ac | 7 -------
+ 2 files changed, 14 deletions(-)
+
+diff --git a/gcc/configure b/gcc/configure
+index 8f83152..5e72f17 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -27018,13 +27018,6 @@ $as_echo_n "checking assembler and linker for explicit JALR relocation... " >&6;
+         rm -f conftest.*
+       fi
+     fi
+-    if test $gcc_cv_as_ld_jalr_reloc = yes; then
+-      if test x$target_cpu_default = x; then
+-        target_cpu_default=MASK_RELAX_PIC_CALLS
+-      else
+-        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
+-      fi
+-    fi
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ld_jalr_reloc" >&5
+ $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
+ 
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 0fccaef..dd8f6fa 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -4522,13 +4522,6 @@ x:
+         rm -f conftest.*
+       fi
+     fi
+-    if test $gcc_cv_as_ld_jalr_reloc = yes; then
+-      if test x$target_cpu_default = x; then
+-        target_cpu_default=MASK_RELAX_PIC_CALLS
+-      else
+-        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
+-      fi
+-    fi
+     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
+ 
+     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0016-COLLECT_GCC_OPTIONS.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0016-COLLECT_GCC_OPTIONS.patch
new file mode 100644
index 0000000..c154864
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0016-COLLECT_GCC_OPTIONS.patch
@@ -0,0 +1,38 @@
+From 1033bc2d4efc5c301bb822b607a673f5b10cc69f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:16:28 +0400
+Subject: [PATCH 16/46] COLLECT_GCC_OPTIONS
+
+This patch adds --sysroot into COLLECT_GCC_OPTIONS which is used to
+invoke collect2.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/gcc.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index da0b482..7ca129f 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -4591,6 +4591,15 @@ set_collect_gcc_options (void)
+ 		sizeof ("COLLECT_GCC_OPTIONS=") - 1);
+ 
+   first_time = TRUE;
++#ifdef HAVE_LD_SYSROOT
++  if (target_system_root_changed && target_system_root)
++    {
++      obstack_grow (&collect_obstack, "'--sysroot=", sizeof("'--sysroot=")-1);
++      obstack_grow (&collect_obstack, target_system_root,strlen(target_system_root));
++      obstack_grow (&collect_obstack, "'", 1);
++      first_time = FALSE;
++    }
++#endif
+   for (i = 0; (int) i < n_switches; i++)
+     {
+       const char *const *args;
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
new file mode 100644
index 0000000..0dbabd9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0017-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
@@ -0,0 +1,96 @@
+From 67123a306880af997a99ae514677c2da4973bd1a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:17:25 +0400
+Subject: [PATCH 17/46] Use the defaults.h in ${B} instead of ${S}, and t-oe in
+ ${B}
+
+Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B}, so that
+the source can be shared between gcc-cross-initial,
+gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk build.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+
+While compiling gcc-crosssdk-initial-x86_64 on some host, there is
+occasionally failure that test the existance of default.h doesn't
+work, the reason is tm_include_list='** defaults.h' rather than
+tm_include_list='** ./defaults.h'
+
+So we add the test condition for this situation.
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ gcc/Makefile.in  | 2 +-
+ gcc/configure    | 4 ++--
+ gcc/configure.ac | 4 ++--
+ gcc/mkconfig.sh  | 4 ++--
+ 4 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 6c5adc0..9a1d466 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -517,7 +517,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
+ TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@
+ 
+ xmake_file=@xmake_file@
+-tmake_file=@tmake_file@
++tmake_file=@tmake_file@ ./t-oe
+ TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
+ TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
+ TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
+diff --git a/gcc/configure b/gcc/configure
+index 5e72f17..389b6d5 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -12130,8 +12130,8 @@ for f in $tm_file; do
+        tm_include_list="${tm_include_list} $f"
+        ;;
+     defaults.h )
+-       tm_file_list="${tm_file_list} \$(srcdir)/$f"
+-       tm_include_list="${tm_include_list} $f"
++       tm_file_list="${tm_file_list} ./$f"
++       tm_include_list="${tm_include_list} ./$f"
+        ;;
+     * )
+        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index dd8f6fa..91ac800 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1883,8 +1883,8 @@ for f in $tm_file; do
+        tm_include_list="${tm_include_list} $f"
+        ;;
+     defaults.h )
+-       tm_file_list="${tm_file_list} \$(srcdir)/$f"
+-       tm_include_list="${tm_include_list} $f"
++       tm_file_list="${tm_file_list} ./$f"
++       tm_include_list="${tm_include_list} ./$f"
+        ;;
+     * )
+        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
+diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
+index 67dfac6..b73e08d 100644
+--- a/gcc/mkconfig.sh
++++ b/gcc/mkconfig.sh
+@@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then
+     if [ $# -ge 1 ]; then
+ 	echo '#ifdef IN_GCC' >> ${output}T
+ 	for file in "$@"; do
+-	    if test x"$file" = x"defaults.h"; then
++	    if test x"$file" = x"./defaults.h" -o x"$file" = x"defaults.h"; then
+ 		postpone_defaults_h="yes"
+ 	    else
+ 		echo "# include \"$file\"" >> ${output}T
+@@ -109,7 +109,7 @@ esac
+ 
+ # If we postponed including defaults.h, add the #include now.
+ if test x"$postpone_defaults_h" = x"yes"; then
+-    echo "# include \"defaults.h\"" >> ${output}T
++    echo "# include \"./defaults.h\"" >> ${output}T
+ fi
+ 
+ # Add multiple inclusion protection guard, part two.
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0018-fortran-cross-compile-hack.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0018-fortran-cross-compile-hack.patch
new file mode 100644
index 0000000..b43d89e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0018-fortran-cross-compile-hack.patch
@@ -0,0 +1,46 @@
+From e360dc3e0f1e0b9b001ef722fcf66f8120a03dbc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:20:01 +0400
+Subject: [PATCH 18/46] fortran cross-compile hack.
+
+* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
+used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
+directory.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+---
+ libgfortran/configure    | 2 +-
+ libgfortran/configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libgfortran/configure b/libgfortran/configure
+index f746f6f..b4f3278 100755
+--- a/libgfortran/configure
++++ b/libgfortran/configure
+@@ -12734,7 +12734,7 @@ esac
+ 
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ ac_ext=${ac_fc_srcext-f}
+ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
+ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
+diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
+index 8f377bb..67710b5 100644
+--- a/libgfortran/configure.ac
++++ b/libgfortran/configure.ac
+@@ -240,7 +240,7 @@ AC_SUBST(enable_static)
+ 
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ AC_PROG_FC(gfortran)
+ 
+ # extra LD Flags which are required for targets
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0019-cpp-honor-sysroot.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0019-cpp-honor-sysroot.patch
new file mode 100644
index 0000000..417a5ed
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0019-cpp-honor-sysroot.patch
@@ -0,0 +1,54 @@
+From 98d9c0c1b5552294b2130f7304bfb522da323442 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:22:00 +0400
+Subject: [PATCH 19/46] cpp: honor sysroot.
+
+Currently, if the gcc toolchain is relocated and installed from sstate, then you try and compile
+preprocessed source (.i or .ii files), the compiler will try and access the builtin sysroot location
+rather than the --sysroot option specified on the commandline. If access to that directory is
+permission denied (unreadable), gcc will error.
+
+This happens when ccache is in use due to the fact it uses preprocessed source files.
+
+The fix below adds %I to the cpp-output spec macro so the default substitutions for -iprefix,
+-isystem, -isysroot happen and the correct sysroot is used.
+
+[YOCTO #2074]
+
+RP 2012/04/13
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/cp/lang-specs.h | 2 +-
+ gcc/gcc.c           | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
+index 9707fac..fe487a2 100644
+--- a/gcc/cp/lang-specs.h
++++ b/gcc/cp/lang-specs.h
+@@ -64,5 +64,5 @@ along with GCC; see the file COPYING3.  If not see
+   {".ii", "@c++-cpp-output", 0, 0, 0},
+   {"@c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1plus -fpreprocessed %i %(cc1_options) %2\
++    cc1plus -fpreprocessed %i %I %(cc1_options) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 7ca129f..04fa81d 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1329,7 +1329,7 @@ static const struct compiler default_compilers[] =
+ 					   %W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0},
+   {".i", "@cpp-output", 0, 0, 0},
+   {"@cpp-output",
+-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
++   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {".s", "@assembler", 0, 0, 0},
+   {"@assembler",
+    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0020-MIPS64-Default-to-N64-ABI.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0020-MIPS64-Default-to-N64-ABI.patch
new file mode 100644
index 0000000..ba612f5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0020-MIPS64-Default-to-N64-ABI.patch
@@ -0,0 +1,57 @@
+From 1f15447fbcf65142627af8a9694761534da8d0d1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:23:08 +0400
+Subject: [PATCH 20/46] MIPS64: Default to N64 ABI
+
+MIPS64 defaults to n32 ABI, this patch makes it
+so that it defaults to N64 ABI
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [OE config specific]
+---
+ gcc/config.gcc | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index f66e48c..9c6d156 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -2065,29 +2065,29 @@ mips*-*-linux*)				# Linux MIPS, either endian.
+ 			default_mips_arch=mips32
+ 			;;
+ 		mips64el-st-linux-gnu)
+-			default_mips_abi=n32
++			default_mips_abi=64
+ 			tm_file="${tm_file} mips/st.h"
+ 			tmake_file="${tmake_file} mips/t-st"
+ 			enable_mips_multilibs="yes"
+ 			;;
+ 		mips64octeon*-*-linux*)
+-			default_mips_abi=n32
++			default_mips_abi=64
+ 			tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
+ 			target_cpu_default=MASK_SOFT_FLOAT_ABI
+ 			enable_mips_multilibs="yes"
+ 			;;
+ 		mipsisa64r6*-*-linux*)
+-			default_mips_abi=n32
++			default_mips_abi=64
+ 			default_mips_arch=mips64r6
+ 			enable_mips_multilibs="yes"
+ 			;;
+ 		mipsisa64r2*-*-linux*)
+-			default_mips_abi=n32
++			default_mips_abi=64
+ 			default_mips_arch=mips64r2
+ 			enable_mips_multilibs="yes"
+ 			;;
+ 		mips64*-*-linux* | mipsisa64*-*-linux*)
+-			default_mips_abi=n32
++			default_mips_abi=64
+ 			enable_mips_multilibs="yes"
+ 			;;
+ 	esac
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0021-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0021-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
new file mode 100644
index 0000000..6675ce3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0021-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
@@ -0,0 +1,234 @@
+From 9f73c8918b63e6a1c9b79384fac411d1056eec1c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:24:50 +0400
+Subject: [PATCH 21/46] Define GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
+ relative to SYSTEMLIBS_DIR
+
+This patch defines GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
+relative to SYSTEMLIBS_DIR which can be set in generated headers
+This breaks the assumption of hardcoded multilib in gcc
+Change is only for the supported architectures in OE including
+SH, sparc, alpha for possible future support (if any)
+
+Removes the do_headerfix task in metadata
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [OE configuration]
+---
+ gcc/config/alpha/linux-elf.h |  4 ++--
+ gcc/config/arm/linux-eabi.h  |  4 ++--
+ gcc/config/arm/linux-elf.h   |  2 +-
+ gcc/config/i386/linux.h      |  2 +-
+ gcc/config/i386/linux64.h    |  6 +++---
+ gcc/config/linux.h           |  8 ++++----
+ gcc/config/mips/linux.h      | 12 ++++++------
+ gcc/config/rs6000/linux64.h  | 16 ++++++----------
+ gcc/config/sh/linux.h        |  2 +-
+ gcc/config/sparc/linux.h     |  2 +-
+ gcc/config/sparc/linux64.h   |  4 ++--
+ 11 files changed, 29 insertions(+), 33 deletions(-)
+
+diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h
+index a0764d3..02f7a7c 100644
+--- a/gcc/config/alpha/linux-elf.h
++++ b/gcc/config/alpha/linux-elf.h
+@@ -23,8 +23,8 @@ along with GCC; see the file COPYING3.  If not see
+ #define EXTRA_SPECS \
+ { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
+ 
+-#define GLIBC_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER	SYSTEMLIBS_DIR "ld-linux.so.2"
++#define UCLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+ #elif DEFAULT_LIBC == LIBC_GLIBC
+diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
+index ace8481..4010435 100644
+--- a/gcc/config/arm/linux-eabi.h
++++ b/gcc/config/arm/linux-eabi.h
+@@ -68,8 +68,8 @@
+    GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
+ 
+ #undef  GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+-#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT SYSTEMLIBS_DIR "ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT SYSTEMLIBS_DIR "ld-linux-armhf.so.3"
+ #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
+ 
+ #define GLIBC_DYNAMIC_LINKER \
+diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
+index a94bd2d..0220628 100644
+--- a/gcc/config/arm/linux-elf.h
++++ b/gcc/config/arm/linux-elf.h
+@@ -62,7 +62,7 @@
+ 
+ #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+ 
+ #define LINUX_TARGET_LINK_SPEC  "%{h*} \
+    %{static:-Bstatic} \
+diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
+index d37a875..edde586 100644
+--- a/gcc/config/i386/linux.h
++++ b/gcc/config/i386/linux.h
+@@ -20,7 +20,7 @@ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define GNU_USER_LINK_EMULATION "elf_i386"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+ 
+ #undef MUSL_DYNAMIC_LINKER
+ #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
+diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h
+index 73d22e3..f4b5615 100644
+--- a/gcc/config/i386/linux64.h
++++ b/gcc/config/i386/linux64.h
+@@ -27,9 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+-#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
++#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
++#define GLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ld-linux-x32.so.2"
+ 
+ #undef MUSL_DYNAMIC_LINKER32
+ #define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+diff --git a/gcc/config/linux.h b/gcc/config/linux.h
+index 9aeeb94..b055652 100644
+--- a/gcc/config/linux.h
++++ b/gcc/config/linux.h
+@@ -81,10 +81,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
+    GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
+    supporting both 32-bit and 64-bit compilation.  */
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ldx32-uClibc.so.0"
+ #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
+ #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
+ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
+diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
+index fa253b6..da02c8d 100644
+--- a/gcc/config/mips/linux.h
++++ b/gcc/config/mips/linux.h
+@@ -22,20 +22,20 @@ along with GCC; see the file COPYING3.  If not see
+ #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
+ 
+ #define GLIBC_DYNAMIC_LINKER32 \
+-  "%{mnan=2008:/lib/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
+ #define GLIBC_DYNAMIC_LINKER64 \
+-  "%{mnan=2008:/lib64/ld-linux-mipsn8.so.1;:/lib64/ld.so.1}"
++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
+ #define GLIBC_DYNAMIC_LINKERN32 \
+-  "%{mnan=2008:/lib32/ld-linux-mipsn8.so.1;:/lib32/ld.so.1}"
++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
+ 
+ #undef UCLIBC_DYNAMIC_LINKER32
+ #define UCLIBC_DYNAMIC_LINKER32 \
+-  "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
+ #undef UCLIBC_DYNAMIC_LINKER64
+ #define UCLIBC_DYNAMIC_LINKER64 \
+-  "%{mnan=2008:/lib/ld64-uClibc-mipsn8.so.0;:/lib/ld64-uClibc.so.0}"
++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld64-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld64-uClibc.so.0}"
+ #define UCLIBC_DYNAMIC_LINKERN32 \
+-  "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
+ 
+ #undef MUSL_DYNAMIC_LINKER32
+ #define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1"
+diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
+index fefa0c4..7173938 100644
+--- a/gcc/config/rs6000/linux64.h
++++ b/gcc/config/rs6000/linux64.h
+@@ -412,16 +412,11 @@ extern int dot_symbols;
+ #undef	LINK_OS_DEFAULT_SPEC
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "%(dynamic_linker_prefix)/lib/ld.so.1"
+-
++#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld.so.1"
+ #ifdef LINUX64_DEFAULT_ABI_ELFv2
+-#define GLIBC_DYNAMIC_LINKER64 \
+-"%{mabi=elfv1:%(dynamic_linker_prefix)/lib64/ld64.so.1;" \
+-":%(dynamic_linker_prefix)/lib64/ld64.so.2}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:" SYSTEMLIBS_DIR "ld64.so.1;:" SYSTEMLIBS_DIR "ld64.so.2}"
+ #else
+-#define GLIBC_DYNAMIC_LINKER64 \
+-"%{mabi=elfv2:%(dynamic_linker_prefix)/lib64/ld64.so.2;" \
+-":%(dynamic_linker_prefix)/lib64/ld64.so.1}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:" SYSTEMLIBS_DIR "ld64.so.2;:" SYSTEMLIBS_DIR "ld64.so.1}"
+ #endif
+ 
+ #define MUSL_DYNAMIC_LINKER32 \
+@@ -429,8 +424,9 @@ extern int dot_symbols;
+ #define MUSL_DYNAMIC_LINKER64 \
+   "/lib/ld-musl-powerpc64" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
+ 
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
++
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U, M) \
+   "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h
+index 2a036ac..50fb735 100644
+--- a/gcc/config/sh/linux.h
++++ b/gcc/config/sh/linux.h
+@@ -64,7 +64,7 @@ along with GCC; see the file COPYING3.  If not see
+   "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E MUSL_DYNAMIC_LINKER_FP \
+   "%{mfdpic:-fdpic}.so.1"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+ 
+ #undef SUBTARGET_LINK_EMUL_SUFFIX
+ #define SUBTARGET_LINK_EMUL_SUFFIX "%{mfdpic:_fd;:_linux}"
+diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
+index 9b32577..7bd66de 100644
+--- a/gcc/config/sparc/linux.h
++++ b/gcc/config/sparc/linux.h
+@@ -83,7 +83,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
+diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
+index a1ef325..3bae3d5 100644
+--- a/gcc/config/sparc/linux64.h
++++ b/gcc/config/sparc/linux64.h
+@@ -84,8 +84,8 @@ along with GCC; see the file COPYING3.  If not see
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux.so.2"
+ 
+ #ifdef SPARC_BI_ARCH
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0022-gcc-Fix-argument-list-too-long-error.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0022-gcc-Fix-argument-list-too-long-error.patch
new file mode 100644
index 0000000..fab6e4a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0022-gcc-Fix-argument-list-too-long-error.patch
@@ -0,0 +1,40 @@
+From acce5157f6b3a1dc9a3676b7118ac887dc5693be Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:26:37 +0400
+Subject: [PATCH 22/46] gcc: Fix argument list too long error.
+
+There would be an "Argument list too long" error when the
+build directory is longer than 200, this is caused by:
+
+headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`
+
+The PLUGIN_HEADERS is too long before sort, so the "echo" can't handle
+it, use the $(sort list) of GNU make which can handle the too long list
+would fix the problem, the header would be short enough after sorted.
+The "tr ' ' '\012'" was used for translating the space to "\n", the
+$(sort list) doesn't need this.
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 9a1d466..450cb79 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -3349,7 +3349,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype
+ # We keep the directory structure for files in config or c-family and .def
+ # files. All other files are flattened to a single directory.
+ 	$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
+-	headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
++	headers="$(sort $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def))"; \
+ 	srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
+ 	for file in $$headers; do \
+ 	  if [ -f $$file ] ; then \
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0023-Disable-sdt.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0023-Disable-sdt.patch
new file mode 100644
index 0000000..0efd890
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0023-Disable-sdt.patch
@@ -0,0 +1,113 @@
+From 6573aec00ada35c48c1838c8491ce8f7798ae993 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:28:10 +0400
+Subject: [PATCH 23/46] Disable sdt.
+
+We don't list dtrace in DEPENDS so we shouldn't be depending on this header.
+It may or may not exist from preivous builds though. To be determinstic, disable
+sdt.h usage always. This avoids build failures if the header is removed after configure
+but before libgcc is compiled for example.
+
+RP 2012/8/7
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Disable sdt for libstdc++-v3.
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
+Upstream-Status: Inappropriate [hack]
+---
+ gcc/configure             | 12 ++++++------
+ gcc/configure.ac          | 18 +++++++++---------
+ libstdc++-v3/configure    |  6 +++---
+ libstdc++-v3/configure.ac |  2 +-
+ 4 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/gcc/configure b/gcc/configure
+index 389b6d5..73c264d 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -28528,12 +28528,12 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5
+ $as_echo_n "checking sys/sdt.h in the target C library... " >&6; }
+ have_sys_sdt_h=no
+-if test -f $target_header_dir/sys/sdt.h; then
+-  have_sys_sdt_h=yes
+-
+-$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
+-
+-fi
++#if test -f $target_header_dir/sys/sdt.h; then
++#  have_sys_sdt_h=yes
++#
++#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
++#
++#fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
+ $as_echo "$have_sys_sdt_h" >&6; }
+ 
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 91ac800..cecf121 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -5514,15 +5514,15 @@ fi
+ AC_SUBST([enable_default_ssp])
+ 
+ # Test for <sys/sdt.h> on the target.
+-GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
+-AC_MSG_CHECKING(sys/sdt.h in the target C library)
+-have_sys_sdt_h=no
+-if test -f $target_header_dir/sys/sdt.h; then
+-  have_sys_sdt_h=yes
+-  AC_DEFINE(HAVE_SYS_SDT_H, 1,
+-            [Define if your target C library provides sys/sdt.h])
+-fi
+-AC_MSG_RESULT($have_sys_sdt_h)
++#GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
++#AC_MSG_CHECKING(sys/sdt.h in the target C library)
++#have_sys_sdt_h=no
++#if test -f $target_header_dir/sys/sdt.h; then
++#  have_sys_sdt_h=yes
++#  AC_DEFINE(HAVE_SYS_SDT_H, 1,
++#            [Define if your target C library provides sys/sdt.h])
++#fi
++#AC_MSG_RESULT($have_sys_sdt_h)
+ 
+ # Check if TFmode long double should be used by default or not.
+ # Some glibc targets used DFmode long double, but with glibc 2.4
+diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
+index 8a5481c..6a40e92 100755
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -21735,11 +21735,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+-  if test $glibcxx_cv_sys_sdt_h = yes; then
++#  if test $glibcxx_cv_sys_sdt_h = yes; then
+ 
+-$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
++#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
+ 
+-  fi
++#  fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sys_sdt_h" >&5
+ $as_echo "$glibcxx_cv_sys_sdt_h" >&6; }
+ 
+diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
+index 9e19e99..0077ffd 100644
+--- a/libstdc++-v3/configure.ac
++++ b/libstdc++-v3/configure.ac
+@@ -230,7 +230,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN
+ GLIBCXX_CHECK_SC_NPROC_ONLN
+ GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP
+ GLIBCXX_CHECK_SYSCTL_HW_NCPU
+-GLIBCXX_CHECK_SDT_H
++#GLIBCXX_CHECK_SDT_H
+ 
+ # Check for available headers.
+ AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0024-libtool.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0024-libtool.patch
new file mode 100644
index 0000000..1f73b5d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0024-libtool.patch
@@ -0,0 +1,42 @@
+From 6c0aa5c2538829248547197718037ff0b9788676 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:29:11 +0400
+Subject: [PATCH 24/46] libtool
+
+libstdc++ from gcc-runtime gets created with -rpath=/usr/lib/../lib for qemux86-64
+when running on am x86_64 build host.
+
+This patch stops this speading to libdir in the libstdc++.la file within libtool.
+Arguably, it shouldn't be passing this into libtool in the first place but
+for now this resolves the nastiest problems this causes.
+
+func_normal_abspath would resolve an empty path to `pwd` so we need
+to filter the zero case.
+
+RP 2012/8/24
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ ltmain.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 9503ec8..0121fba 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -6359,6 +6359,10 @@ func_mode_link ()
+ 	func_warning "ignoring multiple \`-rpath's for a libtool library"
+ 
+       install_libdir="$1"
++      if test -n "$install_libdir"; then
++	func_normal_abspath "$install_libdir"
++	install_libdir=$func_normal_abspath_result
++      fi
+ 
+       oldlibs=
+       if test -z "$rpath"; then
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0025-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0025-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
new file mode 100644
index 0000000..3b7ee49
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0025-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
@@ -0,0 +1,43 @@
+From b1263a48553ce75f8c3bed4fe12122af57845567 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:30:32 +0400
+Subject: [PATCH 25/46] gcc: armv4: pass fix-v4bx to linker to support EABI.
+
+The LINK_SPEC for linux gets overwritten by linux-eabi.h which
+means the value of TARGET_FIX_V4BX_SPEC gets lost and as a result
+the option is not passed to linker when chosing march=armv4
+This patch redefines this in linux-eabi.h and reinserts it
+for eabi defaulting toolchains.
+
+We might want to send it upstream.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/config/arm/linux-eabi.h | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
+index 4010435..aaea1c9 100644
+--- a/gcc/config/arm/linux-eabi.h
++++ b/gcc/config/arm/linux-eabi.h
+@@ -94,10 +94,14 @@
+ #define MUSL_DYNAMIC_LINKER \
+   "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
+ 
++/* For armv4 we pass --fix-v4bx to linker to support EABI */
++#undef TARGET_FIX_V4BX_SPEC
++#define TARGET_FIX_V4BX_SPEC "%{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4: --fix-v4bx}"
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
+    use the GNU/Linux version, not the generic BPABI version.  */
+ #undef  LINK_SPEC
+-#define LINK_SPEC EABI_LINK_SPEC					\
++#define LINK_SPEC TARGET_FIX_V4BX_SPEC EABI_LINK_SPEC			\
+   LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC,				\
+ 		       LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0026-Use-the-multilib-config-files-from-B-instead-of-usin.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0026-Use-the-multilib-config-files-from-B-instead-of-usin.patch
new file mode 100644
index 0000000..be25be6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0026-Use-the-multilib-config-files-from-B-instead-of-usin.patch
@@ -0,0 +1,102 @@
+From b5c305fc251299f2e328410b18cfb55c75b5f038 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:33:04 +0400
+Subject: [PATCH 26/46] Use the multilib config files from ${B} instead of
+ using the ones from ${S}
+
+Use the multilib config files from ${B} instead of using the ones from ${S}
+so that the source can be shared between gcc-cross-initial,
+gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk build.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
+
+Upstream-Status: Inappropriate [configuration]
+---
+ gcc/configure    | 22 ++++++++++++++++++----
+ gcc/configure.ac | 22 ++++++++++++++++++----
+ 2 files changed, 36 insertions(+), 8 deletions(-)
+
+diff --git a/gcc/configure b/gcc/configure
+index 73c264d..377253e 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -12110,10 +12110,20 @@ done
+ tmake_file_=
+ for f in ${tmake_file}
+ do
+-	if test -f ${srcdir}/config/$f
+-	then
+-		tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
+-	fi
++  case $f in
++    */t-linux64 )
++       if test -f ./config/$f
++       then
++         tmake_file_="${tmake_file_} ./config/$f"
++       fi
++       ;;
++    * )
++       if test -f ${srcdir}/config/$f
++       then
++         tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
++       fi
++       ;;
++  esac
+ done
+ tmake_file="${tmake_file_}"
+ 
+@@ -12124,6 +12134,10 @@ tm_file_list="options.h"
+ tm_include_list="options.h insn-constants.h"
+ for f in $tm_file; do
+   case $f in
++    */linux64.h )
++       tm_file_list="${tm_file_list} ./config/$f"
++       tm_include_list="${tm_include_list} ./config/$f"
++       ;;
+     ./* )
+        f=`echo $f | sed 's/^..//'`
+        tm_file_list="${tm_file_list} $f"
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index cecf121..54e7619 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1863,10 +1863,20 @@ done
+ tmake_file_=
+ for f in ${tmake_file}
+ do
+-	if test -f ${srcdir}/config/$f
+-	then
+-		tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
+-	fi
++  case $f in
++    */t-linux64 )
++       if test -f ./config/$f
++       then
++         tmake_file_="${tmake_file_} ./config/$f"
++       fi
++       ;;
++    * )
++       if test -f ${srcdir}/config/$f
++       then
++         tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
++       fi
++       ;;
++  esac
+ done
+ tmake_file="${tmake_file_}"
+ 
+@@ -1877,6 +1887,10 @@ tm_file_list="options.h"
+ tm_include_list="options.h insn-constants.h"
+ for f in $tm_file; do
+   case $f in
++    */linux64.h )
++       tm_file_list="${tm_file_list} ./config/$f"
++       tm_include_list="${tm_include_list} ./config/$f"
++       ;;
+     ./* )
+        f=`echo $f | sed 's/^..//'`
+        tm_file_list="${tm_file_list} $f"
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0027-Avoid-using-libdir-from-.la-which-usually-points-to-.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0027-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
new file mode 100644
index 0000000..d1bbebc
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0027-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
@@ -0,0 +1,31 @@
+From eb6178b7fb466ae429c56380c6dbc564a16d900a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Feb 2015 09:39:38 +0000
+Subject: [PATCH 27/46] Avoid using libdir from .la which usually points to a
+ host path
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ltmain.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 0121fba..52bdbdb 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -5628,6 +5628,9 @@ func_mode_link ()
+ 	    absdir="$abs_ladir"
+ 	    libdir="$abs_ladir"
+ 	  else
++	    # Instead of using libdir from .la which usually points to a host path,
++	    # use the path the .la is contained in.
++	    libdir="$abs_ladir"
+ 	    dir="$libdir"
+ 	    absdir="$libdir"
+ 	  fi
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0028-export-CPP.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0028-export-CPP.patch
new file mode 100644
index 0000000..c212539
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0028-export-CPP.patch
@@ -0,0 +1,53 @@
+From 617184f35e97934d9e6268e71378574e2b776c2b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Feb 2015 09:40:59 +0000
+Subject: [PATCH 28/46] export CPP
+
+The OE environment sets and exports CPP as being the target gcc. When
+building gcc-cross-canadian for a mingw targetted sdk, the following can be found
+in build.x86_64-pokysdk-mingw32.i586-poky-linux/build-x86_64-linux/libiberty/config.log:
+
+configure:3641: checking for _FILE_OFFSET_BITS value needed for large files
+configure:3666: gcc  -c -isystem/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe  conftest.c >&5
+configure:3666: $? = 0
+configure:3698: result: no
+configure:3786: checking how to run the C preprocessor
+configure:3856: result: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32
+configure:3876: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32 conftest.c
+configure:3876: $? = 0
+
+Note this is a *build* target (in build-x86_64-linux) so it should be
+using the host "gcc", not x86_64-pokysdk-mingw32-gcc. Since the mingw32
+headers are very different, using the wrong cpp is a real problem. It is leaking
+into configure through the CPP variable. Ultimately this leads to build
+failures related to not being able to include a process.h file for pem-unix.c.
+
+The fix is to ensure we export a sane CPP value into the build
+environment when using build targets. We could define a CPP_FOR_BUILD value which may be
+the version which needs to be upstreamed but for now, this fix is good enough to
+avoid the problem.
+
+RP 22/08/2013
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.in b/Makefile.in
+index 1522e39..beb9b9a 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -149,6 +149,7 @@ BUILD_EXPORTS = \
+ 	AR="$(AR_FOR_BUILD)"; export AR; \
+ 	AS="$(AS_FOR_BUILD)"; export AS; \
+ 	CC="$(CC_FOR_BUILD)"; export CC; \
++	CPP="$(CC_FOR_BUILD) -E"; export CPP; \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
+ 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
+ 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0029-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0029-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
new file mode 100644
index 0000000..47b9c0d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0029-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
@@ -0,0 +1,56 @@
+From e140700976e3b7eb4250b1ffde9bc16494456903 Mon Sep 17 00:00:00 2001
+From: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
+Date: Wed, 5 Feb 2014 16:52:31 +0200
+Subject: [PATCH 29/46] Enable SPE & AltiVec generation on powepc*linux target
+
+When is configured with --target=powerpc-linux, the resulting GCC will
+not be able to generate code for SPE targets (e500v1/v2).
+GCC configured with --target=powerpc-linuxspe will not be able to
+generate AltiVec instructions (for e6500).
+This patch modifies the configured file such that SPE or AltiVec code
+can be generated when gcc is configured with --target=powerpc-linux.
+The ABI and speciffic instructions can be selected through the
+"-mabi=spe or -mabi=altivec" and the "-mspe or -maltivec" parameters.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
+---
+ gcc/config.gcc               | 9 ++++++++-
+ gcc/config/rs6000/linuxspe.h | 3 ---
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index 9c6d156..18cff5a 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -2392,7 +2392,14 @@ powerpc-*-rtems*)
+ 	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
+ 	;;
+ powerpc*-*-linux*)
+-	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
++	case ${target} in
++	    powerpc*-*-linux*spe* | powerpc*-*-linux*altivec*)
++		tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
++		;;
++	    *)
++		tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h rs6000/linuxaltivec.h rs6000/linuxspe.h rs6000/e500.h"
++		;;
++	esac
+ 	extra_options="${extra_options} rs6000/sysv4.opt"
+ 	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
+ 	extra_objs="$extra_objs rs6000-linux.o"
+diff --git a/gcc/config/rs6000/linuxspe.h b/gcc/config/rs6000/linuxspe.h
+index 35623cd..f74e00d 100644
+--- a/gcc/config/rs6000/linuxspe.h
++++ b/gcc/config/rs6000/linuxspe.h
+@@ -27,6 +27,3 @@
+ #undef	TARGET_DEFAULT
+ #define TARGET_DEFAULT MASK_STRICT_ALIGN
+ #endif
+-
+-#undef  ASM_DEFAULT_SPEC
+-#define	ASM_DEFAULT_SPEC "-mppc -mspe -me500"
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0030-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0030-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch
new file mode 100644
index 0000000..c09d019
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0030-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch
@@ -0,0 +1,42 @@
+From 0ddcb95a86830766fd02122f19384fc929b377c5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Feb 2015 10:21:55 +0000
+Subject: [PATCH 30/46] Disable the MULTILIB_OSDIRNAMES and other multilib
+ options.
+
+Hard coding the MULTILIB_OSDIRNAMES with ../lib64 is causing problems on
+systems where the libdir is NOT set to /lib64.  This is allowed by the
+ABI, as
+long as the dynamic loader is present in /lib.
+
+We simply want to use the default rules in gcc to find and configure the
+normal libdir.
+
+Upstream-Status: Inappropriate[OE-Specific]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/config/aarch64/t-aarch64-linux | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux
+index 1cfe9f3..d688ac9 100644
+--- a/gcc/config/aarch64/t-aarch64-linux
++++ b/gcc/config/aarch64/t-aarch64-linux
+@@ -21,8 +21,8 @@
+ LIB1ASMSRC   = aarch64/lib1funcs.asm
+ LIB1ASMFUNCS = _aarch64_sync_cache_range
+ 
+-AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
+-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
+-MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
++#AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
++#MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
++#MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
+ 
+-MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32
++#MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0031-Ensure-target-gcc-headers-can-be-included.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0031-Ensure-target-gcc-headers-can-be-included.patch
new file mode 100644
index 0000000..fb1cd0f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0031-Ensure-target-gcc-headers-can-be-included.patch
@@ -0,0 +1,98 @@
+From fc6621435a64a9d69aa251b70361da94cf2db6be Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Feb 2015 10:25:11 +0000
+Subject: [PATCH 31/46] Ensure target gcc headers can be included
+
+There are a few headers installed as part of the OpenEmbedded
+gcc-runtime target (omp.h, ssp/*.h). Being installed from a recipe
+built for the target architecture, these are within the target
+sysroot and not cross/nativesdk; thus they weren't able to be
+found by gcc with the existing search paths. Add support for
+picking up these headers under the sysroot supplied on the gcc
+command line in order to resolve this.
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/Makefile.in  | 2 ++
+ gcc/cppdefault.c | 4 ++++
+ gcc/defaults.h   | 9 +++++++++
+ gcc/gcc.c        | 7 -------
+ 4 files changed, 15 insertions(+), 7 deletions(-)
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 450cb79..cc75536 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -593,6 +593,7 @@ libexecdir = @libexecdir@
+ 
+ # Directory in which the compiler finds libraries etc.
+ libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
++libsubdir_target = gcc/$(target_noncanonical)/$(version)
+ # Directory in which the compiler finds executables
+ libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
+ # Directory in which all plugin resources are installed
+@@ -2688,6 +2689,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localedir)\"
+ 
+ PREPROCESSOR_DEFINES = \
+   -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
++  -DGCC_INCLUDE_SUBDIR_TARGET=\"$(libsubdir_target)/include\" \
+   -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
+   -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
+   -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
+diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
+index 54aaf06..7b4dd51 100644
+--- a/gcc/cppdefault.c
++++ b/gcc/cppdefault.c
+@@ -59,6 +59,10 @@ const struct default_include cpp_include_defaults[]
+     /* This is the dir for gcc's private headers.  */
+     { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
+ #endif
++#ifdef GCC_INCLUDE_SUBDIR_TARGET
++    /* This is the dir for gcc's private headers under the specified sysroot.  */
++    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
++#endif
+ #ifdef LOCAL_INCLUDE_DIR
+     /* /usr/local/include comes before the fixincluded header files.  */
+     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
+diff --git a/gcc/defaults.h b/gcc/defaults.h
+index 3e18338..0f317f2 100644
+--- a/gcc/defaults.h
++++ b/gcc/defaults.h
+@@ -1492,4 +1492,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ #define DWARF_GNAT_ENCODINGS_DEFAULT DWARF_GNAT_ENCODINGS_GDB
+ #endif
+ 
++/* Default prefixes to attach to command names.  */
++
++#ifndef STANDARD_STARTFILE_PREFIX_1
++#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
++#endif
++#ifndef STANDARD_STARTFILE_PREFIX_2
++#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
++#endif
++
+ #endif  /* ! GCC_DEFAULTS_H */
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 04fa81d..9750cc2 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1450,13 +1450,6 @@ static const char *gcc_libexec_prefix;
+ 
+ /* Default prefixes to attach to command names.  */
+ 
+-#ifndef STANDARD_STARTFILE_PREFIX_1
+-#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
+-#endif
+-#ifndef STANDARD_STARTFILE_PREFIX_2
+-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
+-#endif
+-
+ #ifdef CROSS_DIRECTORY_STRUCTURE  /* Don't use these prefixes for a cross compiler.  */
+ #undef MD_EXEC_PREFIX
+ #undef MD_STARTFILE_PREFIX
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0032-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0032-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
new file mode 100644
index 0000000..c0b001d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0032-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
@@ -0,0 +1,54 @@
+From ff939c5063d8f8d444bdb25651a0a48e608efaa4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Feb 2015 11:17:19 +0000
+Subject: [PATCH 32/46] gcc 4.8+ won't build with --disable-dependency-tracking
+
+since the *.Ppo files don't get created unless --enable-dependency-tracking is true.
+
+This patch ensures we only use those compiler options when its enabled.
+
+Upstream-Status: Submitted
+
+(Problem was already reported upstream, attached this patch there
+http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55930)
+
+RP
+2012/09/22
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libatomic/Makefile.am | 3 ++-
+ libatomic/Makefile.in | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
+index b351244..399ce18 100644
+--- a/libatomic/Makefile.am
++++ b/libatomic/Makefile.am
+@@ -101,7 +101,8 @@ PAT_S		= $(word 3,$(PAT_SPLIT))
+ IFUNC_DEF	= -DIFUNC_ALT=$(PAT_S)
+ IFUNC_OPT	= $(word $(PAT_S),$(IFUNC_OPTIONS))
+ 
+-M_DEPS		= -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
++@AMDEP_TRUE@M_DEPS		= -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
++@AMDEP_FALSE@M_DEPS		=
+ M_SIZE		= -DN=$(PAT_N)
+ M_IFUNC		= $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
+ M_FILE		= $(PAT_BASE)_n.c
+diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
+index a083d87..a92cfce 100644
+--- a/libatomic/Makefile.in
++++ b/libatomic/Makefile.in
+@@ -330,7 +330,8 @@ PAT_N = $(word 2,$(PAT_SPLIT))
+ PAT_S = $(word 3,$(PAT_SPLIT))
+ IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
+ IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
+-M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
++@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
++@AMDEP_FALSE@M_DEPS =
+ M_SIZE = -DN=$(PAT_N)
+ M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
+ M_FILE = $(PAT_BASE)_n.c
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0033-Don-t-search-host-directory-during-relink-if-inst_pr.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0033-Don-t-search-host-directory-during-relink-if-inst_pr.patch
new file mode 100644
index 0000000..e425d71
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0033-Don-t-search-host-directory-during-relink-if-inst_pr.patch
@@ -0,0 +1,38 @@
+From 5092f5389d02e78cd59690cf3fca24b56a97aff2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 3 Mar 2015 08:21:19 +0000
+Subject: [PATCH 33/46] Don't search host directory during "relink" if
+ $inst_prefix is provided
+
+http://lists.gnu.org/archive/html/libtool-patches/2011-01/msg00026.html
+
+Upstream-Status: Submitted
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ltmain.sh | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 52bdbdb..82bcec3 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -6004,12 +6004,13 @@ func_mode_link ()
+ 	      fi
+ 	    else
+ 	      # We cannot seem to hardcode it, guess we'll fake it.
++	      # Default if $libdir is not relative to the prefix:
+ 	      add_dir="-L$libdir"
+-	      # Try looking first in the location we're being installed to.
++
+ 	      if test -n "$inst_prefix_dir"; then
+ 		case $libdir in
+ 		  [\\/]*)
+-		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
++		    add_dir="-L$inst_prefix_dir$libdir"
+ 		    ;;
+ 		esac
+ 	      fi
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0034-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0034-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
new file mode 100644
index 0000000..922a855
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0034-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
@@ -0,0 +1,29 @@
+From 1faa6f69f93bb95af2b2b2bd24e181b50fb5b37c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 28 Apr 2015 23:15:27 -0700
+Subject: [PATCH 34/46] Use SYSTEMLIBS_DIR replacement instead of hardcoding
+ base_libdir
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Inappropriate [OE Configuration]
+
+ gcc/config/aarch64/aarch64-linux.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
+index 5fcaa59..8588ac0 100644
+--- a/gcc/config/aarch64/aarch64-linux.h
++++ b/gcc/config/aarch64/aarch64-linux.h
+@@ -21,7 +21,7 @@
+ #ifndef GCC_AARCH64_LINUX_H
+ #define GCC_AARCH64_LINUX_H
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define GLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
+ #undef MUSL_DYNAMIC_LINKER
+ #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0035-aarch64-Add-support-for-musl-ldso.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0035-aarch64-Add-support-for-musl-ldso.patch
new file mode 100644
index 0000000..9dfc472
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0035-aarch64-Add-support-for-musl-ldso.patch
@@ -0,0 +1,28 @@
+From 3768468c1a6cc170fff88c03b808c975ac653811 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 28 Apr 2015 23:18:39 -0700
+Subject: [PATCH 35/46] aarch64: Add support for musl ldso
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Inappropriate [OE Configuration]
+
+ gcc/config/aarch64/aarch64-linux.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
+index 8588ac0..946b3ca 100644
+--- a/gcc/config/aarch64/aarch64-linux.h
++++ b/gcc/config/aarch64/aarch64-linux.h
+@@ -24,7 +24,7 @@
+ #define GLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
+ #undef MUSL_DYNAMIC_LINKER
+-#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define MUSL_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
+ #undef  ASAN_CC1_SPEC
+ #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0036-libcc1-fix-libcc1-s-install-path-and-rpath.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0036-libcc1-fix-libcc1-s-install-path-and-rpath.patch
new file mode 100644
index 0000000..f89a886
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0036-libcc1-fix-libcc1-s-install-path-and-rpath.patch
@@ -0,0 +1,54 @@
+From f4d3c8e970d42a43cd3d2f751e13324efa936ff8 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Sun, 5 Jul 2015 20:25:18 -0700
+Subject: [PATCH 36/46] libcc1: fix libcc1's install path and rpath
+
+* Install libcc1.so and libcc1plugin.so into
+  $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version), as what we
+  had done to lto-plugin.
+* Fix bad RPATH iussue:
+  gcc-5.2.0: package gcc-plugins contains bad RPATH /patht/to/tmp/sysroots/qemux86-64/usr/lib64/../lib64 in file
+ /path/to/gcc/5.2.0-r0/packages-split/gcc-plugins/usr/lib64/gcc/x86_64-poky-linux/5.2.0/plugin/libcc1plugin.so.0.0.0
+ [rpaths]
+
+Upstream-Status: Inappropriate [OE configuration]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ libcc1/Makefile.am | 4 ++--
+ libcc1/Makefile.in | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
+index b40820b..32930c5 100644
+--- a/libcc1/Makefile.am
++++ b/libcc1/Makefile.am
+@@ -35,8 +35,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
+ 	    $(Wc)$(libiberty_normal)))
+ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
+ 
+-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
+-cc1libdir = $(libdir)/$(libsuffix)
++cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++plugindir = $(cc1libdir)
+ 
+ if ENABLE_PLUGIN
+ plugin_LTLIBRARIES = libcc1plugin.la
+diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in
+index 79d39d3..227ec22 100644
+--- a/libcc1/Makefile.in
++++ b/libcc1/Makefile.in
+@@ -291,8 +291,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
+ 	    $(Wc)$(libiberty_normal)))
+ 
+ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
+-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
+-cc1libdir = $(libdir)/$(libsuffix)
++cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++plugindir = $(cc1libdir)
+ @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la
+ @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la
+ BUILT_SOURCES = compiler-name.h
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0037-handle-sysroot-support-for-nativesdk-gcc.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0037-handle-sysroot-support-for-nativesdk-gcc.patch
new file mode 100644
index 0000000..15efcb1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0037-handle-sysroot-support-for-nativesdk-gcc.patch
@@ -0,0 +1,213 @@
+From 1475b941d7a9c9874b0fb0558d01805945467331 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 7 Dec 2015 23:39:54 +0000
+Subject: [PATCH 37/46] handle sysroot support for nativesdk-gcc
+
+Being able to build a nativesdk gcc is useful, particularly in cases
+where the host compiler may be of an incompatible version (or a 32
+bit compiler is needed).
+
+Sadly, building nativesdk-gcc is not straight forward. We install
+nativesdk-gcc into a relocatable location and this means that its
+library locations can change. "Normal" sysroot support doesn't help
+in this case since the values of paths like "libdir" change, not just
+base root directory of the system.
+
+In order to handle this we do two things:
+
+a) Add %r into spec file markup which can be used for injected paths
+   such as SYSTEMLIBS_DIR (see gcc_multilib_setup()).
+b) Add other paths which need relocation into a .gccrelocprefix section
+   which the relocation code will notice and adjust automatically.
+
+Upstream-Status: Inappropriate
+RP 2015/7/28
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/cppdefault.c | 50 +++++++++++++++++++++++++++++++++++++-------------
+ gcc/cppdefault.h |  3 ++-
+ gcc/gcc.c        | 20 ++++++++++++++------
+ 3 files changed, 53 insertions(+), 20 deletions(-)
+
+diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
+index 7b4dd51..9d1166c 100644
+--- a/gcc/cppdefault.c
++++ b/gcc/cppdefault.c
+@@ -35,6 +35,30 @@
+ # undef CROSS_INCLUDE_DIR
+ #endif
+ 
++static char GPLUSPLUS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_INCLUDE_DIR;
++static char GCC_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GCC_INCLUDE_DIR;
++static char GPLUSPLUS_TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_TOOL_INCLUDE_DIR;
++static char GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = GPLUSPLUS_BACKWARD_INCLUDE_DIR;
++static char STANDARD_STARTFILE_PREFIX_2VAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET;
++#ifdef LOCAL_INCLUDE_DIR
++static char LOCAL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = LOCAL_INCLUDE_DIR;
++#endif
++#ifdef PREFIX_INCLUDE_DIR
++static char PREFIX_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX_INCLUDE_DIR;
++#endif
++#ifdef FIXED_INCLUDE_DIR
++static char FIXED_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = FIXED_INCLUDE_DIR;
++#endif
++#ifdef CROSS_INCLUDE_DIR
++static char CROSS_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = CROSS_INCLUDE_DIR;
++#endif
++#ifdef TOOL_INCLUDE_DIR
++static char TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = TOOL_INCLUDE_DIR;
++#endif
++#ifdef NATIVE_SYSTEM_HEADER_DIR
++static char NATIVE_SYSTEM_HEADER_DIRVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = NATIVE_SYSTEM_HEADER_DIR;
++#endif
++
+ const struct default_include cpp_include_defaults[]
+ #ifdef INCLUDE_DEFAULTS
+ = INCLUDE_DEFAULTS;
+@@ -42,38 +66,38 @@ const struct default_include cpp_include_defaults[]
+ = {
+ #ifdef GPLUSPLUS_INCLUDE_DIR
+     /* Pick up GNU C++ generic include files.  */
+-    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
++    { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,
+       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
+ #endif
+ #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
+     /* Pick up GNU C++ target-dependent include files.  */
+-    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
++    { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,
+       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
+ #endif
+ #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
+     /* Pick up GNU C++ backward and deprecated include files.  */
+-    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
++    { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,
+       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
+ #endif
+ #ifdef GCC_INCLUDE_DIR
+     /* This is the dir for gcc's private headers.  */
+-    { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
++    { GCC_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
+ #endif
+ #ifdef GCC_INCLUDE_SUBDIR_TARGET
+     /* This is the dir for gcc's private headers under the specified sysroot.  */
+-    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0 },
++    { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0 },
+ #endif
+ #ifdef LOCAL_INCLUDE_DIR
+     /* /usr/local/include comes before the fixincluded header files.  */
+-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
+-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
++    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 },
++    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
+ #endif
+ #ifdef PREFIX_INCLUDE_DIR
+-    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
++    { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0 },
+ #endif
+ #ifdef FIXED_INCLUDE_DIR
+     /* This is the dir for fixincludes.  */
+-    { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
++    { FIXED_INCLUDE_DIRVAR, "GCC", 0, 0, 0,
+       /* A multilib suffix needs adding if different multilibs use
+ 	 different headers.  */
+ #ifdef SYSROOT_HEADERS_SUFFIX_SPEC
+@@ -85,16 +109,16 @@ const struct default_include cpp_include_defaults[]
+ #endif
+ #ifdef CROSS_INCLUDE_DIR
+     /* One place the target system's headers might be.  */
+-    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
++    { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
+ #endif
+ #ifdef TOOL_INCLUDE_DIR
+     /* Another place the target system's headers might be.  */
+-    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
++    { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0 },
+ #endif
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+     /* /usr/include comes dead last.  */
+-    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
+-    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
++    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
++    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
+ #endif
+     { 0, 0, 0, 0, 0, 0 }
+   };
+diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
+index 8a81b45..9759efd 100644
+--- a/gcc/cppdefault.h
++++ b/gcc/cppdefault.h
+@@ -33,7 +33,8 @@
+ 
+ struct default_include
+ {
+-  const char *const fname;	/* The name of the directory.  */
++  const char *fname;     /* The name of the directory.  */
++
+   const char *const component;	/* The component containing the directory
+ 				   (see update_path in prefix.c) */
+   const char cplusplus;		/* Only look here if we're compiling C++.  */
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 9750cc2..94c240e 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -247,6 +247,8 @@ FILE *report_times_to_file = NULL;
+ #endif
+ static const char *target_system_root = DEFAULT_TARGET_SYSTEM_ROOT;
+ 
++static char target_relocatable_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSTEMLIBS_DIR;
++
+ /* Nonzero means pass the updated target_system_root to the compiler.  */
+ 
+ static int target_system_root_changed;
+@@ -517,6 +519,7 @@ or with constant text in a single argument.
+  %G     process LIBGCC_SPEC as a spec.
+  %R     Output the concatenation of target_system_root and
+         target_sysroot_suffix.
++ %r     Output the base path target_relocatable_prefix
+  %S     process STARTFILE_SPEC as a spec.  A capital S is actually used here.
+  %E     process ENDFILE_SPEC as a spec.  A capital E is actually used here.
+  %C     process CPP_SPEC as a spec.
+@@ -1473,10 +1476,10 @@ static const char *gcc_libexec_prefix;
+    gcc_exec_prefix is set because, in that case, we know where the
+    compiler has been installed, and use paths relative to that
+    location instead.  */
+-static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
+-static const char *const standard_libexec_prefix = STANDARD_LIBEXEC_PREFIX;
+-static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
+-static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
++static char standard_exec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
++static char standard_libexec_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_LIBEXEC_PREFIX;
++static char standard_bindir_prefix[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_BINDIR_PREFIX;
++static char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
+ 
+ /* For native compilers, these are well-known paths containing
+    components that may be provided by the system.  For cross
+@@ -1484,9 +1487,9 @@ static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
+ static const char *md_exec_prefix = MD_EXEC_PREFIX;
+ static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
+ static const char *md_startfile_prefix_1 = MD_STARTFILE_PREFIX_1;
+-static const char *const standard_startfile_prefix_1
++static char standard_startfile_prefix_1[4096] __attribute__ ((section (".gccrelocprefix")))
+   = STANDARD_STARTFILE_PREFIX_1;
+-static const char *const standard_startfile_prefix_2
++static char standard_startfile_prefix_2[4096] __attribute__ ((section (".gccrelocprefix")))
+   = STANDARD_STARTFILE_PREFIX_2;
+ 
+ /* A relative path to be used in finding the location of tools
+@@ -5762,6 +5765,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
+ 	      }
+ 	    break;
+ 
++          case 'r':
++              obstack_grow (&obstack, target_relocatable_prefix,
++		      strlen (target_relocatable_prefix));
++            break;
++
+ 	  case 'S':
+ 	    value = do_spec_1 (startfile_spec, 0, NULL);
+ 	    if (value != 0)
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0038-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0038-Search-target-sysroot-gcc-version-specific-dirs-with.patch
new file mode 100644
index 0000000..89ee79d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0038-Search-target-sysroot-gcc-version-specific-dirs-with.patch
@@ -0,0 +1,102 @@
+From 42e4cdcaad590536246866b0846ec279e124fa16 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 7 Dec 2015 23:41:45 +0000
+Subject: [PATCH 38/46] Search target sysroot gcc version specific dirs with
+ multilib.
+
+We install the gcc libraries (such as crtbegin.p) into
+<sysroot><libdir>/<target-sys>/5.2.0/
+which is a default search path for GCC (aka multi_suffix in the
+code below). <target-sys> is 'machine' in gcc's terminology. We use
+these directories so that multiple gcc versions could in theory
+co-exist on target.
+
+We only want to build one gcc-cross-canadian per arch and have this work
+for all multilibs. <target-sys> can be handled by mapping the multilib
+<target-sys> to the one used by gcc-cross-canadian, e.g.
+mips64-polkmllib32-linux
+is symlinked to by mips64-poky-linux.
+
+The default gcc search path in the target sysroot for a "lib64" mutlilib
+is:
+
+<sysroot>/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/lib32/../lib64/
+<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/usr/lib32/../lib64/
+<sysroot>/lib32/
+<sysroot>/usr/lib32/
+
+which means that the lib32 crtbegin.o will be found and the lib64 ones
+will not which leads to compiler failures.
+
+This patch injects a multilib version of that path first so the lib64
+binaries can be found first. With this change the search path becomes:
+
+<sysroot>/lib32/../lib64/mips64-poky-linux/5.2.0/
+<sysroot>/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/lib32/../lib64/
+<sysroot>/usr/lib32/../lib64/mips64-poky-linux/5.2.0/
+<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
+<sysroot>/usr/lib32/../lib64/
+<sysroot>/lib32/
+<sysroot>/usr/lib32/
+
+Upstream-Status: Pending
+RP 2015/7/31
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/gcc.c | 29 ++++++++++++++++++++++++++++-
+ 1 file changed, 28 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 94c240e..2812819 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -2507,7 +2507,7 @@ for_each_path (const struct path_prefix *paths,
+       if (path == NULL)
+ 	{
+ 	  len = paths->max_len + extra_space + 1;
+-	  len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len);
++	  len += MAX ((suffix_len + multi_os_dir_len), multiarch_len);
+ 	  path = XNEWVEC (char, len);
+ 	}
+ 
+@@ -2519,6 +2519,33 @@ for_each_path (const struct path_prefix *paths,
+ 	  /* Look first in MACHINE/VERSION subdirectory.  */
+ 	  if (!skip_multi_dir)
+ 	    {
++	      if (!(pl->os_multilib ? skip_multi_os_dir : skip_multi_dir))
++	        {
++	          const char *this_multi;
++	          size_t this_multi_len;
++
++	          if (pl->os_multilib)
++		    {
++		      this_multi = multi_os_dir;
++		      this_multi_len = multi_os_dir_len;
++		    }
++	          else
++		    {
++		      this_multi = multi_dir;
++		      this_multi_len = multi_dir_len;
++		    }
++
++	          /* Look in multilib MACHINE/VERSION subdirectory first */
++	          if (this_multi_len)
++	            {
++		      memcpy (path + len, this_multi, this_multi_len + 1);
++	              memcpy (path + len + this_multi_len, multi_suffix, suffix_len + 1);
++	              ret = callback (path, callback_info);
++	                if (ret)
++		          break;
++	            }
++	        }
++
+ 	      memcpy (path + len, multi_suffix, suffix_len + 1);
+ 	      ret = callback (path, callback_info);
+ 	      if (ret)
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0039-Fix-various-_FOR_BUILD-and-related-variables.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0039-Fix-various-_FOR_BUILD-and-related-variables.patch
new file mode 100644
index 0000000..0ce7aec
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0039-Fix-various-_FOR_BUILD-and-related-variables.patch
@@ -0,0 +1,137 @@
+From 9ced49e459ccf1887feb58adf1e8836dcb4b1bdf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 7 Dec 2015 23:42:45 +0000
+Subject: [PATCH 39/46] Fix various _FOR_BUILD and related variables
+
+When doing a FOR_BUILD thing, you have to override CFLAGS with
+CFLAGS_FOR_BUILD. And if you use C++, you also have to override
+CXXFLAGS with CXXFLAGS_FOR_BUILD.
+Without this, when building for mingw, you end up trying to use
+the mingw headers for a host build.
+
+The same goes for other variables as well, such as CPPFLAGS,
+CPP, and GMPINC.
+
+Upstream-Status: Pending
+
+Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.in      | 6 ++++++
+ Makefile.tpl     | 5 +++++
+ gcc/Makefile.in  | 2 +-
+ gcc/configure    | 2 +-
+ gcc/configure.ac | 2 +-
+ 5 files changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index beb9b9a..3e1c6bc 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -152,6 +152,7 @@ BUILD_EXPORTS = \
+ 	CPP="$(CC_FOR_BUILD) -E"; export CPP; \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
+ 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
++	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
+ 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
+ 	GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
+@@ -170,6 +171,9 @@ BUILD_EXPORTS = \
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
++	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
++	CPP="$(CC_FOR_BUILD) -E" \
++	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
+ 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+ 
+ # This is the list of directories to built for the host system.
+@@ -187,6 +191,7 @@ HOST_SUBDIR = @host_subdir@
+ HOST_EXPORTS = \
+ 	$(BASE_EXPORTS) \
+ 	CC="$(CC)"; export CC; \
++	CPP="$(CC) -E"; export CPP; \
+ 	ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
+ 	CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
+@@ -713,6 +718,7 @@ BASE_FLAGS_TO_PASS = \
+ 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+ 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+ 	"CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
++	"CXXFLAGS_FOR_BUILD=$(CXXFLAGS_FOR_BUILD)" \
+ 	"EXPECT=$(EXPECT)" \
+ 	"FLEX=$(FLEX)" \
+ 	"INSTALL=$(INSTALL)" \
+diff --git a/Makefile.tpl b/Makefile.tpl
+index 6b2eb6a..114e462 100644
+--- a/Makefile.tpl
++++ b/Makefile.tpl
+@@ -154,6 +154,7 @@ BUILD_EXPORTS = \
+ 	CC="$(CC_FOR_BUILD)"; export CC; \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
+ 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
++	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
+ 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
+ 	GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
+@@ -172,6 +173,9 @@ BUILD_EXPORTS = \
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
++	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
++	CPP="$(CC_FOR_BUILD) -E" \
++	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
+ 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+ 
+ # This is the list of directories to built for the host system.
+@@ -189,6 +193,7 @@ HOST_SUBDIR = @host_subdir@
+ HOST_EXPORTS = \
+ 	$(BASE_EXPORTS) \
+ 	CC="$(CC)"; export CC; \
++	CPP="$(CC) -E"; export CPP; \
+ 	ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
+ 	CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index cc75536..0ad2dc8 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -780,7 +780,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@
+ BUILD_NO_PIE_FLAG = @BUILD_NO_PIE_FLAG@
+ BUILD_LDFLAGS += $(BUILD_NO_PIE_FLAG)
+ BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
+-		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
++		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS_FOR_BUILD)
+ 
+ # Actual name to use when installing a native compiler.
+ GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
+diff --git a/gcc/configure b/gcc/configure
+index 377253e..78fc64a 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -11799,7 +11799,7 @@ else
+ 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+ 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+-	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
++	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
+ 	${realsrcdir}/configure \
+ 		--enable-languages=${enable_languages-all} \
+ 		--target=$target_alias --host=$build_alias --build=$build_alias
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 54e7619..a94666e 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1682,7 +1682,7 @@ else
+ 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+ 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+-	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
++	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
+ 	${realsrcdir}/configure \
+ 		--enable-languages=${enable_languages-all} \
+ 		--target=$target_alias --host=$build_alias --build=$build_alias
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0040-nios2-Define-MUSL_DYNAMIC_LINKER.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0040-nios2-Define-MUSL_DYNAMIC_LINKER.patch
new file mode 100644
index 0000000..c9a6fd0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0040-nios2-Define-MUSL_DYNAMIC_LINKER.patch
@@ -0,0 +1,28 @@
+From b0412c01c275aaeb6b458461cd2425120c8bcec8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 2 Feb 2016 10:26:10 -0800
+Subject: [PATCH 40/46] nios2: Define MUSL_DYNAMIC_LINKER
+
+Signed-off-by: Marek Vasut <marex@denx.de>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ gcc/config/nios2/linux.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h
+index 4ef55b5..62bc1e7 100644
+--- a/gcc/config/nios2/linux.h
++++ b/gcc/config/nios2/linux.h
+@@ -30,6 +30,7 @@
+ #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+ 
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
++#define MUSL_DYNAMIC_LINKER  "/lib/ld-musl-nios2.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC LINK_SPEC_ENDIAN \
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0041-ssp_nonshared.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0041-ssp_nonshared.patch
new file mode 100644
index 0000000..0744529
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0041-ssp_nonshared.patch
@@ -0,0 +1,28 @@
+From 551a5db7acb56e085a101f1c222d51b2c1b039a4 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 7 Nov 2015 14:58:40 +0000
+Subject: [PATCH 41/46] ssp_nonshared
+
+---
+Upstream-Status: Inappropriate [OE Configuration]
+
+ gcc/gcc.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 2812819..9de96ee 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -863,7 +863,8 @@ proper position among the other output files.  */
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+-		       "|fstack-protector-strong|fstack-protector-explicit:}"
++		       "|fstack-protector-strong|fstack-protector-explicit" \
++		       ":-lssp_nonshared}"
+ #else
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+ 		       "|fstack-protector-strong|fstack-protector-explicit" \
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0042-gcc-libcpp-support-ffile-prefix-map-old-new.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0042-gcc-libcpp-support-ffile-prefix-map-old-new.patch
new file mode 100644
index 0000000..861f0fd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0042-gcc-libcpp-support-ffile-prefix-map-old-new.patch
@@ -0,0 +1,292 @@
+From ba738cc411c9a54e389e336bcaa0a2428dd4a9d2 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 16 Mar 2016 02:27:43 -0400
+Subject: [PATCH 42/46] gcc/libcpp: support -ffile-prefix-map=<old>=<new>
+
+Similar -fdebug-prefix-map, add option -ffile-prefix-map to map one
+directory name (old) to another (new) in __FILE__, __BASE_FILE__ and
+__builtin_FILE ().
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70268
+
+Upstream-Status: Submitted [gcc-patches@gcc.gnu.org]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ gcc/c-family/c-opts.c     | 13 +++++++
+ gcc/c-family/c.opt        |  4 +++
+ gcc/dwarf2out.c           |  1 +
+ gcc/gimplify.c            |  3 ++
+ libcpp/Makefile.in        | 10 +++---
+ libcpp/file-map.c         | 92 +++++++++++++++++++++++++++++++++++++++++++++++
+ libcpp/include/file-map.h | 30 ++++++++++++++++
+ libcpp/macro.c            |  2 ++
+ 8 files changed, 150 insertions(+), 5 deletions(-)
+ create mode 100644 libcpp/file-map.c
+ create mode 100644 libcpp/include/file-map.h
+
+diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
+index fec58bc..7a0af43 100644
+--- a/gcc/c-family/c-opts.c
++++ b/gcc/c-family/c-opts.c
+@@ -38,6 +38,14 @@ along with GCC; see the file COPYING3.  If not see
+ #include "opts.h"
+ #include "plugin.h"		/* For PLUGIN_INCLUDE_FILE event.  */
+ #include "mkdeps.h"
++#include "file-map.h"
++#include "c-target.h"
++#include "tm.h"			/* For BYTES_BIG_ENDIAN,
++				   DOLLARS_IN_IDENTIFIERS,
++				   STDC_0_IN_SYSTEM_HEADERS,
++				   TARGET_FLT_EVAL_METHOD_NON_DEFAULT and
++				   TARGET_OPTF.  */
++#include "tm_p.h"		/* For C_COMMON_OVERRIDE_OPTIONS.  */
+ #include "dumpfile.h"
+ 
+ #ifndef DOLLARS_IN_IDENTIFIERS
+@@ -503,6 +511,11 @@ c_common_handle_option (size_t scode, const char *arg, int value,
+       cpp_opts->narrow_charset = arg;
+       break;
+ 
++    case OPT_ffile_prefix_map_:
++      if (add_file_prefix_map (arg) < 0)
++        error ("invalid argument %qs to -ffile-prefix-map", arg);
++      break;
++
+     case OPT_fwide_exec_charset_:
+       cpp_opts->wide_charset = arg;
+       break;
+diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
+index 660da6c..31f7b34 100644
+--- a/gcc/c-family/c.opt
++++ b/gcc/c-family/c.opt
+@@ -1208,6 +1208,10 @@ fexec-charset=
+ C ObjC C++ ObjC++ Joined RejectNegative
+ -fexec-charset=<cset>	Convert all strings and character constants to character set <cset>.
+ 
++ffile-prefix-map=
++C ObjC C++ ObjC++ Joined RejectNegative
++-ffile-prefix-map=<old=new>	Map one directory name to another in __FILE__, __BASE_FILE__ and __builtin_FILE ()
++
+ fextended-identifiers
+ C ObjC C++ ObjC++
+ Permit universal character names (\\u and \\U) in identifiers.
+diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
+index 80f2df5..a2bfcc0 100644
+--- a/gcc/dwarf2out.c
++++ b/gcc/dwarf2out.c
+@@ -21672,6 +21672,7 @@ gen_producer_string (void)
+       case OPT_fltrans_output_list_:
+       case OPT_fresolution_:
+       case OPT_fdebug_prefix_map_:
++      case OPT_ffile_prefix_map_:
+ 	/* Ignore these.  */
+ 	continue;
+       default:
+diff --git a/gcc/gimplify.c b/gcc/gimplify.c
+index e223e59..1433c25 100644
+--- a/gcc/gimplify.c
++++ b/gcc/gimplify.c
+@@ -57,6 +57,8 @@ along with GCC; see the file COPYING3.  If not see
+ #include "gomp-constants.h"
+ #include "tree-dump.h"
+ #include "gimple-walk.h"
++#include "file-map.h"
++
+ #include "langhooks-def.h"	/* FIXME: for lhd_set_decl_assembler_name */
+ #include "builtins.h"
+ 
+@@ -2432,6 +2434,7 @@ gimplify_call_expr (tree *expr_p, gimple_seq *pre_p, bool want_value)
+       case BUILT_IN_FILE:
+ 	{
+ 	  const char *locfile = LOCATION_FILE (EXPR_LOCATION (*expr_p));
++	  locfile = remap_file_filename (locfile);
+ 	  *expr_p = build_string_literal (strlen (locfile) + 1, locfile);
+ 	  return GS_OK;
+ 	}
+diff --git a/libcpp/Makefile.in b/libcpp/Makefile.in
+index a7d7828..3d29572 100644
+--- a/libcpp/Makefile.in
++++ b/libcpp/Makefile.in
+@@ -84,12 +84,12 @@ DEPMODE = $(CXXDEPMODE)
+ 
+ 
+ libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
+-	expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
+-	mkdeps.o pch.o symtab.o traditional.o
++	expr.o file-map.o files.o identifiers.o init.o lex.o line-map.o \
++	macro.o mkdeps.o pch.o symtab.o traditional.o
+ 
+ libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
+-	expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
+-	mkdeps.c pch.c symtab.c traditional.c
++	expr.c file-map.c files.c identifiers.c init.c lex.c line-map.c \
++	macro.c mkdeps.c pch.c symtab.c traditional.c
+ 
+ all: libcpp.a $(USED_CATALOGS)
+ 
+@@ -263,7 +263,7 @@ po/$(PACKAGE).pot: $(libcpp_a_SOURCES)
+ 
+ TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \
+     include/line-map.h include/symtab.h include/cpp-id-data.h \
+-    include/cpplib.h include/mkdeps.h system.h
++    include/cpplib.h include/mkdeps.h system.h include/file-map.h
+ 
+ TAGS: $(TAGS_SOURCES)
+ 	cd $(srcdir) && etags $(TAGS_SOURCES)
+diff --git a/libcpp/file-map.c b/libcpp/file-map.c
+new file mode 100644
+index 0000000..18035ef
+--- /dev/null
++++ b/libcpp/file-map.c
+@@ -0,0 +1,92 @@
++/* Map one directory name to another in __FILE__, __BASE_FILE__
++   and __builtin_FILE ().
++   Copyright (C) 2001-2016 Free Software Foundation, Inc.
++
++This program is free software; you can redistribute it and/or modify it
++under the terms of the GNU General Public License as published by the
++Free Software Foundation; either version 3, or (at your option) any
++later version.
++
++This program is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++GNU General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with this program; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.
++
++ In other words, you are welcome to use, share and improve this program.
++ You are forbidden to forbid anyone else to use, share and improve
++ what you give them.   Help stamp out software-hoarding!  */
++
++#include "config.h"
++#include "system.h"
++#include "file-map.h"
++
++/* Structure recording the mapping from source file and directory
++   names at compile time to __FILE__ */
++typedef struct file_prefix_map
++{
++  const char *old_prefix;
++  const char *new_prefix;
++  size_t old_len;
++  size_t new_len;
++  struct file_prefix_map *next;
++} file_prefix_map;
++
++/* Linked list of such structures.  */
++static file_prefix_map *file_prefix_maps;
++
++/* Record prefix mapping of __FILE__.  ARG is the argument to
++   -ffile-prefix-map and must be of the form OLD=NEW.  */
++int
++add_file_prefix_map (const char *arg)
++{
++  file_prefix_map *map;
++  const char *p;
++
++  p = strchr (arg, '=');
++  if (!p)
++  {
++      fprintf(stderr, "invalid argument %qs to -ffile-prefix-map", arg);
++      return -1;
++  }
++  map = XNEW (file_prefix_map);
++  map->old_prefix = xstrndup (arg, p - arg);
++  map->old_len = p - arg;
++  p++;
++  map->new_prefix = xstrdup (p);
++  map->new_len = strlen (p);
++  map->next = file_prefix_maps;
++  file_prefix_maps = map;
++
++  return 0;
++}
++
++/* Perform user-specified mapping of __FILE__ prefixes.  Return
++   the new name corresponding to filename.  */
++
++const char *
++remap_file_filename (const char *filename)
++{
++  file_prefix_map *map;
++  char *s;
++  const char *name;
++  size_t name_len;
++
++  for (map = file_prefix_maps; map; map = map->next)
++    if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
++      break;
++  if (!map)
++    return filename;
++  name = filename + map->old_len;
++  name_len = strlen (name) + 1;
++  s = (char *) alloca (name_len + map->new_len);
++  memcpy (s, map->new_prefix, map->new_len);
++  memcpy (s + map->new_len, name, name_len);
++
++  return xstrdup (s);
++}
++
++
+diff --git a/libcpp/include/file-map.h b/libcpp/include/file-map.h
+new file mode 100644
+index 0000000..8750315
+--- /dev/null
++++ b/libcpp/include/file-map.h
+@@ -0,0 +1,30 @@
++/* Map one directory name to another in __FILE__, __BASE_FILE__
++   and __builtin_FILE ().
++   Copyright (C) 2001-2016 Free Software Foundation, Inc.
++
++This program is free software; you can redistribute it and/or modify it
++under the terms of the GNU General Public License as published by the
++Free Software Foundation; either version 3, or (at your option) any
++later version.
++
++This program is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++GNU General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with this program; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.
++
++ In other words, you are welcome to use, share and improve this program.
++ You are forbidden to forbid anyone else to use, share and improve
++ what you give them.   Help stamp out software-hoarding!  */
++
++#ifndef LIBCPP_FILE_MAP_H
++#define LIBCPP_FILE_MAP_H
++
++const char * remap_file_filename (const char *filename);
++
++int add_file_prefix_map (const char *arg);
++
++#endif /* !LIBCPP_FILE_MAP_H  */
+diff --git a/libcpp/macro.c b/libcpp/macro.c
+index c251553..3ceec3d 100644
+--- a/libcpp/macro.c
++++ b/libcpp/macro.c
+@@ -26,6 +26,7 @@ along with this program; see the file COPYING3.  If not see
+ #include "system.h"
+ #include "cpplib.h"
+ #include "internal.h"
++#include "file-map.h"
+ 
+ typedef struct macro_arg macro_arg;
+ /* This structure represents the tokens of a macro argument.  These
+@@ -301,6 +302,7 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node,
+ 	    if (!name)
+ 	      abort ();
+ 	  }
++	name = remap_file_filename (name);
+ 	len = strlen (name);
+ 	buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
+ 	result = buf;
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0043-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0043-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch
new file mode 100644
index 0000000..0077f80
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0043-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch
@@ -0,0 +1,43 @@
+From 25c87c6cc40ec5cc6965f8bfb215bec01abd6d82 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 16 Mar 2016 05:39:59 -0400
+Subject: [PATCH 43/46] Reuse -fdebug-prefix-map to replace -ffile-prefix-map
+
+The oe-core may use external toolchain to compile,
+which may not support -ffile-prefix-map.
+
+Since we use -fdebug-prefix-map to do the same thing,
+so we could reuse it to replace -ffile-prefix-map.
+
+Upstream-Status: Inappropriate[oe-core specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ gcc/opts-global.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gcc/opts-global.c b/gcc/opts-global.c
+index b7e5232..121d7b9 100644
+--- a/gcc/opts-global.c
++++ b/gcc/opts-global.c
+@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3.  If not see
+ #include "langhooks.h"
+ #include "dbgcnt.h"
+ #include "debug.h"
++#include "file-map.h"
+ #include "output.h"
+ #include "plugin.h"
+ #include "toplev.h"
+@@ -357,6 +358,9 @@ handle_common_deferred_options (void)
+ 
+ 	case OPT_fdebug_prefix_map_:
+ 	  add_debug_prefix_map (opt->arg);
++
++	  /* Reuse -fdebug-prefix-map to replace -ffile-prefix-map */
++	  add_file_prefix_map (opt->arg);
+ 	  break;
+ 
+ 	case OPT_fdump_:
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0044-gcc-final.c-fdebug-prefix-map-support-to-remap-sourc.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0044-gcc-final.c-fdebug-prefix-map-support-to-remap-sourc.patch
new file mode 100644
index 0000000..5d41af4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0044-gcc-final.c-fdebug-prefix-map-support-to-remap-sourc.patch
@@ -0,0 +1,54 @@
+From 6ab23e88aef22bbabee7b9600c459ff39547bb66 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 24 Mar 2016 11:23:14 -0400
+Subject: [PATCH 44/46] gcc/final.c: -fdebug-prefix-map support to remap
+ sources with relative path
+
+PR other/70428
+* final.c (remap_debug_filename): Use lrealpath to translate
+relative path before remapping
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70428
+Upstream-Status: Submitted [gcc-patches@gcc.gnu.org]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ gcc/final.c | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/gcc/final.c b/gcc/final.c
+index 55cf509..23293e5 100644
+--- a/gcc/final.c
++++ b/gcc/final.c
+@@ -1554,16 +1554,25 @@ remap_debug_filename (const char *filename)
+   const char *name;
+   size_t name_len;
+ 
++  /* Support to remap filename with relative path  */
++  char *realpath = lrealpath (filename);
++  if (realpath == NULL)
++    return filename;
++
+   for (map = debug_prefix_maps; map; map = map->next)
+-    if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
++    if (filename_ncmp (realpath, map->old_prefix, map->old_len) == 0)
+       break;
+   if (!map)
+-    return filename;
+-  name = filename + map->old_len;
++    {
++      free (realpath);
++      return filename;
++    }
++  name = realpath + map->old_len;
+   name_len = strlen (name) + 1;
+   s = (char *) alloca (name_len + map->new_len);
+   memcpy (s, map->new_prefix, map->new_len);
+   memcpy (s + map->new_len, name, name_len);
++  free (realpath);
+   return ggc_strdup (s);
+ }
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0045-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0045-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
new file mode 100644
index 0000000..c62b727
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0045-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
@@ -0,0 +1,125 @@
+From 5a47d404ea29e2547269e3ddf38754462d93f903 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Apr 2016 20:03:28 +0000
+Subject: [PATCH 45/46] libgcc: Add knob to use ldbl-128 on ppc
+
+musl does not support ldbl 128 so we can not assume
+that linux as a whole supports ldbl-128 bits, instead
+act upon configure option passed to gcc and assume no
+on musl and yes otherwise if no option is passed since
+default behaviour is to assume ldbl128 it does not
+change the defaults
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ libgcc/Makefile.in           |  1 +
+ libgcc/config/rs6000/t-linux |  5 ++++-
+ libgcc/configure             | 18 ++++++++++++++++++
+ libgcc/configure.ac          | 12 ++++++++++++
+ 4 files changed, 35 insertions(+), 1 deletion(-)
+ mode change 100644 => 100755 libgcc/configure
+
+diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
+index f09b39b..296cf0f 100644
+--- a/libgcc/Makefile.in
++++ b/libgcc/Makefile.in
+@@ -43,6 +43,7 @@ enable_vtable_verify = @enable_vtable_verify@
+ enable_decimal_float = @enable_decimal_float@
+ fixed_point = @fixed_point@
+ with_aix_soname = @with_aix_soname@
++with_ldbl128 = @with_ldbl128@
+ 
+ host_noncanonical = @host_noncanonical@
+ real_host_noncanonical = @real_host_noncanonical@
+diff --git a/libgcc/config/rs6000/t-linux b/libgcc/config/rs6000/t-linux
+index 4f6d4c4..c50dd94 100644
+--- a/libgcc/config/rs6000/t-linux
++++ b/libgcc/config/rs6000/t-linux
+@@ -1,3 +1,6 @@
+ SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-glibc.ver
+ 
+-HOST_LIBGCC2_CFLAGS += -mlong-double-128 -mno-minimal-toc
++ifeq ($(with_ldbl128),yes)
++HOST_LIBGCC2_CFLAGS += -mlong-double-128
++endif
++HOST_LIBGCC2_CFLAGS += -mno-minimal-toc
+diff --git a/libgcc/configure b/libgcc/configure
+old mode 100644
+new mode 100755
+index e7d6c75..e9a9019
+--- a/libgcc/configure
++++ b/libgcc/configure
+@@ -614,6 +614,7 @@ build_vendor
+ build_cpu
+ build
+ with_aix_soname
++with_ldbl128
+ enable_vtable_verify
+ enable_shared
+ libgcc_topdir
+@@ -663,6 +664,7 @@ with_cross_host
+ with_ld
+ enable_shared
+ enable_vtable_verify
++with_long_double_128
+ with_aix_soname
+ enable_version_specific_runtime_libs
+ with_slibdir
+@@ -1319,6 +1321,7 @@ Optional Packages:
+   --with-target-subdir=SUBDIR      Configuring in a subdirectory for target
+   --with-cross-host=HOST           Configuring with a cross compiler
+   --with-ld               arrange to use the specified ld (full pathname)
++  --with-long-double-128  use 128-bit long double by default
+   --with-aix-soname=aix|svr4|both
+                           shared library versioning (aka "SONAME") variant to
+                           provide on AIX
+@@ -2201,6 +2204,21 @@ fi
+ 
+ 
+ 
++# Check whether --with-long-double-128 was given.
++if test "${with_long_double_128+set}" = set; then :
++  withval=$with_long_double_128; with_ldbl128="$with_long_double_128"
++else
++  case "${host}" in
++ power*-*-musl*)
++   with_ldbl128="no";;
++ *) with_ldbl128="yes";;
++ esac
++
++fi
++
++
++
++
+ # Check whether --with-aix-soname was given.
+ if test "${with_aix_soname+set}" = set; then :
+   withval=$with_aix_soname; case "${host}:${enable_shared}" in
+diff --git a/libgcc/configure.ac b/libgcc/configure.ac
+index 269997f..81dc3ba 100644
+--- a/libgcc/configure.ac
++++ b/libgcc/configure.ac
+@@ -77,6 +77,18 @@ AC_ARG_ENABLE(vtable-verify,
+ [enable_vtable_verify=no])
+ AC_SUBST(enable_vtable_verify)
+ 
++AC_ARG_WITH(long-double-128,
++[AS_HELP_STRING([--with-long-double-128],
++    [use 128-bit long double by default])],
++      with_ldbl128="$with_long_double_128",
++[case "${host}" in
++ power*-*-musl*)
++   with_ldbl128="no";;
++ *) with_ldbl128="yes";;
++ esac
++])
++AC_SUBST(with_ldbl128)
++
+ AC_ARG_WITH(aix-soname,
+ [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+     [shared library versioning (aka "SONAME") variant to provide on AIX])],
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0046-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0046-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
new file mode 100644
index 0000000..390037f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0046-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
@@ -0,0 +1,29 @@
+From 513bf3c33e2f551f08bd57605091d5ddeba3536b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 4 May 2016 21:11:34 -0700
+Subject: [PATCH 46/46] Link libgcc using LDFLAGS, not just SHLIB_LDFLAGS
+
+Upstream-Status: Pending
+
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libgcc/config/t-slibgcc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc
+index 8c5f890..29be909 100644
+--- a/libgcc/config/t-slibgcc
++++ b/libgcc/config/t-slibgcc
+@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
+ 	$(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+ 
+ SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+-	$(SHLIB_LDFLAGS) \
++	$(LDFLAGS) $(SHLIB_LDFLAGS) \
+ 	-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
+ 	$(SHLIB_OBJS) $(SHLIB_LC) && \
+ 	rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0047-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0047-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
new file mode 100644
index 0000000..ed6cd69
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0047-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
@@ -0,0 +1,85 @@
+From 0a9ed0479203cb7e69c3745b0c259007410f39ba Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 24 Oct 2015 20:09:53 +0000
+Subject: [PATCH 47/47] libgcc_s: Use alias for __cpu_indicator_init instead of
+ symver
+
+Adapter from
+
+https://gcc.gnu.org/ml/gcc-patches/2015-05/msg00899.html
+
+This fix was debated but hasnt been applied gcc upstream since
+they expect musl to support '@' in symbol versioning which is
+a sun/gnu versioning extention. This patch however avoids the
+need for the '@' symbols at all
+
+libgcc/Changelog:
+
+2015-05-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* config/i386/cpuinfo.c (__cpu_indicator_init_local): Add.
+	(__cpu_indicator_init@GCC_4.8.0, __cpu_model@GCC_4.8.0): Remove.
+
+	* config/i386/t-linux (HOST_LIBGCC2_CFLAGS): Remove -DUSE_ELF_SYMVER.
+
+gcc/Changelog:
+
+2015-05-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* config/i386/i386.c (ix86_expand_builtin): Make __builtin_cpu_init
+	call __cpu_indicator_init_local instead of __cpu_indicator_init.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Rejected
+
+ gcc/config/i386/i386.c       | 4 ++--
+ libgcc/config/i386/cpuinfo.c | 6 +++---
+ libgcc/config/i386/t-linux   | 2 +-
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
+index 861a029..1c97d72 100644
+--- a/gcc/config/i386/i386.c
++++ b/gcc/config/i386/i386.c
+@@ -40323,10 +40323,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
+     {
+     case IX86_BUILTIN_CPU_INIT:
+       {
+-	/* Make it call __cpu_indicator_init in libgcc. */
++	/* Make it call __cpu_indicator_init_local in libgcc.a. */
+ 	tree call_expr, fndecl, type;
+         type = build_function_type_list (integer_type_node, NULL_TREE); 
+-	fndecl = build_fn_decl ("__cpu_indicator_init", type);
++	fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
+ 	call_expr = build_call_expr (fndecl, 0); 
+ 	return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
+       }
+diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
+index 8c2248d..6c82f15 100644
+--- a/libgcc/config/i386/cpuinfo.c
++++ b/libgcc/config/i386/cpuinfo.c
+@@ -485,7 +485,7 @@ __cpu_indicator_init (void)
+   return 0;
+ }
+ 
+-#if defined SHARED && defined USE_ELF_SYMVER
+-__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
+-__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
++#ifndef SHARED
++int __cpu_indicator_init_local (void)
++  __attribute__ ((weak, alias ("__cpu_indicator_init")));
+ #endif
+diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
+index 11bb46e..4f47f7b 100644
+--- a/libgcc/config/i386/t-linux
++++ b/libgcc/config/i386/t-linux
+@@ -3,4 +3,4 @@
+ # t-slibgcc-elf-ver and t-linux
+ SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
+ 
+-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER
++HOST_LIBGCC2_CFLAGS += -mlong-double-80
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0048-ARM-PR-target-71056-Don-t-use-vectorized-builtins-wh.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0048-ARM-PR-target-71056-Don-t-use-vectorized-builtins-wh.patch
new file mode 100644
index 0000000..9c39c7f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/0048-ARM-PR-target-71056-Don-t-use-vectorized-builtins-wh.patch
@@ -0,0 +1,92 @@
+From 84d2a5509892b65ed60d39e6e2f9719e3762e40e Mon Sep 17 00:00:00 2001
+From: ktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Tue, 31 May 2016 08:29:39 +0000
+Subject: [PATCH] [ARM] PR target/71056: Don't use vectorized builtins when
+ NEON is not available
+
+	PR target/71056
+	* config/arm/arm-builtins.c (arm_builtin_vectorized_function): Return
+	NULL_TREE early if NEON is not available.  Remove now redundant check
+	in ARM_CHECK_BUILTIN_MODE.
+
+	* gcc.target/arm/pr71056.c: New test.
+
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@236910 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ gcc/ChangeLog                          |  7 +++++++
+ gcc/config/arm/arm-builtins.c          |  6 +++++-
+ gcc/testsuite/ChangeLog                |  5 +++++
+ gcc/testsuite/gcc.target/arm/pr71056.c | 32 ++++++++++++++++++++++++++++++++
+ 4 files changed, 49 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gcc.target/arm/pr71056.c
+
+diff --git a/gcc/config/arm/arm-builtins.c b/gcc/config/arm/arm-builtins.c
+index 90fb40f..68b2839 100644
+--- a/gcc/config/arm/arm-builtins.c
++++ b/gcc/config/arm/arm-builtins.c
+@@ -2861,6 +2861,10 @@ arm_builtin_vectorized_function (unsigned int fn, tree type_out, tree type_in)
+   int in_n, out_n;
+   bool out_unsigned_p = TYPE_UNSIGNED (type_out);
+ 
++  /* Can't provide any vectorized builtins when we can't use NEON.  */
++  if (!TARGET_NEON)
++    return NULL_TREE;
++
+   if (TREE_CODE (type_out) != VECTOR_TYPE
+       || TREE_CODE (type_in) != VECTOR_TYPE)
+     return NULL_TREE;
+@@ -2875,7 +2879,7 @@ arm_builtin_vectorized_function (unsigned int fn, tree type_out, tree type_in)
+    NULL_TREE is returned if no such builtin is available.  */
+ #undef ARM_CHECK_BUILTIN_MODE
+ #define ARM_CHECK_BUILTIN_MODE(C)    \
+-  (TARGET_NEON && TARGET_FPU_ARMV8   \
++  (TARGET_FPU_ARMV8   \
+    && flag_unsafe_math_optimizations \
+    && ARM_CHECK_BUILTIN_MODE_1 (C))
+ 
+diff --git a/gcc/testsuite/gcc.target/arm/pr71056.c b/gcc/testsuite/gcc.target/arm/pr71056.c
+new file mode 100644
+index 0000000..136754e
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/pr71056.c
+@@ -0,0 +1,32 @@
++/* PR target/71056.  */
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp3_ok } */
++/* { dg-options "-O3 -mfpu=vfpv3" } */
++
++/* Check that compiling for a non-NEON target doesn't try to introduce
++   a NEON vectorized builtin.  */
++
++extern char *buff;
++int f2 ();
++struct T1
++{
++  int reserved[2];
++  unsigned int ip;
++  unsigned short cs;
++  unsigned short rsrv2;
++};
++void
++f3 (const char *p)
++{
++  struct T1 x;
++  __builtin_memcpy (&x, p, sizeof (struct T1));
++  x.reserved[0] = __builtin_bswap32 (x.reserved[0]);
++  x.reserved[1] = __builtin_bswap32 (x.reserved[1]);
++  x.ip = __builtin_bswap32 (x.ip);
++  x.cs = x.cs << 8 | x.cs >> 8;
++  x.rsrv2 = x.rsrv2 << 8 | x.rsrv2 >> 8;
++  if (f2 ())
++    {
++      __builtin_memcpy (buff, "\n", 1);
++    }
++}
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/CVE-2016-4490.patch b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/CVE-2016-4490.patch
new file mode 100644
index 0000000..f32e91d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/CVE-2016-4490.patch
@@ -0,0 +1,290 @@
+From 7d235b1b5ea35352c54957ef5530d9a02c46962f Mon Sep 17 00:00:00 2001
+From: bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Mon, 2 May 2016 17:06:40 +0000
+Subject: [PATCH] =?UTF-8?q?Demangler=20integer=20overflow=20fixes=20from?=
+ =?UTF-8?q?=20Marcel=20B=C3=B6hme.?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+	PR c++/70498
+	* cp-demangle.c: Parse numbers as integer instead of long to avoid
+	overflow after sanity checks. Include <limits.h> if available.
+	(INT_MAX): Define if necessary.
+	(d_make_template_param): Takes integer argument instead of long.
+	(d_make_function_param): Likewise.
+	(d_append_num): Likewise.
+	(d_identifier): Likewise.
+	(d_number): Parse as and return integer.
+	(d_compact_number): Handle overflow.
+	(d_source_name): Change variable type to integer for parsed number.
+	(d_java_resource): Likewise.
+	(d_special_name): Likewise.
+	(d_discriminator): Likewise.
+	(d_unnamed_type): Likewise.
+	* testsuite/demangle-expected: Add regression test cases.
+
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235767 138bc75d-0d04-0410-961f-82ee72b054a4
+
+Upstream-Status: Backport
+CVE:  CVE-2016-4490
+[Yocto #9632]
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ libiberty/ChangeLog                   | 19 +++++++++++++
+ libiberty/cp-demangle.c               | 52 ++++++++++++++++++++---------------
+ libiberty/testsuite/demangle-expected | 14 ++++++++--
+ 3 files changed, 61 insertions(+), 24 deletions(-)
+
+Index: git/libiberty/ChangeLog
+===================================================================
+--- git.orig/libiberty/ChangeLog
++++ git/libiberty/ChangeLog
+@@ -1,3 +1,22 @@
++2016-05-02  Marcel Böhme  <boehme.marcel@gmail.com>
++
++   PR c++/70498
++   * cp-demangle.c: Parse numbers as integer instead of long to avoid
++   overflow after sanity checks. Include <limits.h> if available.
++   (INT_MAX): Define if necessary.
++   (d_make_template_param): Takes integer argument instead of long.
++   (d_make_function_param): Likewise.
++   (d_append_num): Likewise.
++   (d_identifier): Likewise.
++   (d_number): Parse as and return integer.
++   (d_compact_number): Handle overflow.
++   (d_source_name): Change variable type to integer for parsed number.
++   (d_java_resource): Likewise.
++   (d_special_name): Likewise.
++   (d_discriminator): Likewise.
++   (d_unnamed_type): Likewise.
++   * testsuite/demangle-expected: Add regression test cases.
++
+ 2016-04-27  Release Manager
+ 
+ 	* GCC 6.1.0 released.
+Index: git/libiberty/cp-demangle.c
+===================================================================
+--- git.orig/libiberty/cp-demangle.c
++++ git/libiberty/cp-demangle.c
+@@ -128,6 +128,13 @@ extern char *alloca ();
+ # endif /* alloca */
+ #endif /* HAVE_ALLOCA_H */
+ 
++#ifdef HAVE_LIMITS_H
++#include <limits.h>
++#endif
++#ifndef INT_MAX
++# define INT_MAX       (int)(((unsigned int) ~0) >> 1)          /* 0x7FFFFFFF */
++#endif
++
+ #include "ansidecl.h"
+ #include "libiberty.h"
+ #include "demangle.h"
+@@ -398,7 +405,7 @@ d_make_dtor (struct d_info *, enum gnu_v
+              struct demangle_component *);
+ 
+ static struct demangle_component *
+-d_make_template_param (struct d_info *, long);
++d_make_template_param (struct d_info *, int);
+ 
+ static struct demangle_component *
+ d_make_sub (struct d_info *, const char *, int);
+@@ -421,9 +428,9 @@ static struct demangle_component *d_unqu
+ 
+ static struct demangle_component *d_source_name (struct d_info *);
+ 
+-static long d_number (struct d_info *);
++static int d_number (struct d_info *);
+ 
+-static struct demangle_component *d_identifier (struct d_info *, long);
++static struct demangle_component *d_identifier (struct d_info *, int);
+ 
+ static struct demangle_component *d_operator_name (struct d_info *);
+ 
+@@ -1119,7 +1126,7 @@ d_make_dtor (struct d_info *di, enum gnu
+ /* Add a new template parameter.  */
+ 
+ static struct demangle_component *
+-d_make_template_param (struct d_info *di, long i)
++d_make_template_param (struct d_info *di, int i)
+ {
+   struct demangle_component *p;
+ 
+@@ -1135,7 +1142,7 @@ d_make_template_param (struct d_info *di
+ /* Add a new function parameter.  */
+ 
+ static struct demangle_component *
+-d_make_function_param (struct d_info *di, long i)
++d_make_function_param (struct d_info *di, int i)
+ {
+   struct demangle_component *p;
+ 
+@@ -1620,7 +1627,7 @@ d_unqualified_name (struct d_info *di)
+ static struct demangle_component *
+ d_source_name (struct d_info *di)
+ {
+-  long len;
++  int len;
+   struct demangle_component *ret;
+ 
+   len = d_number (di);
+@@ -1633,12 +1640,12 @@ d_source_name (struct d_info *di)
+ 
+ /* number ::= [n] <(non-negative decimal integer)>  */
+ 
+-static long
++static int
+ d_number (struct d_info *di)
+ {
+   int negative;
+   char peek;
+-  long ret;
++  int ret;
+ 
+   negative = 0;
+   peek = d_peek_char (di);
+@@ -1681,7 +1688,7 @@ d_number_component (struct d_info *di)
+ /* identifier ::= <(unqualified source code identifier)>  */
+ 
+ static struct demangle_component *
+-d_identifier (struct d_info *di, long len)
++d_identifier (struct d_info *di, int len)
+ {
+   const char *name;
+ 
+@@ -1702,7 +1709,7 @@ d_identifier (struct d_info *di, long le
+   /* Look for something which looks like a gcc encoding of an
+      anonymous namespace, and replace it with a more user friendly
+      name.  */
+-  if (len >= (long) ANONYMOUS_NAMESPACE_PREFIX_LEN + 2
++  if (len >= (int) ANONYMOUS_NAMESPACE_PREFIX_LEN + 2
+       && memcmp (name, ANONYMOUS_NAMESPACE_PREFIX,
+ 		 ANONYMOUS_NAMESPACE_PREFIX_LEN) == 0)
+     {
+@@ -1870,7 +1877,7 @@ d_java_resource (struct d_info *di)
+ {
+   struct demangle_component *p = NULL;
+   struct demangle_component *next = NULL;
+-  long len, i;
++  int len, i;
+   char c;
+   const char *str;
+ 
+@@ -2012,7 +2019,7 @@ d_special_name (struct d_info *di)
+ 	case 'C':
+ 	  {
+ 	    struct demangle_component *derived_type;
+-	    long offset;
++	    int offset;
+ 	    struct demangle_component *base_type;
+ 
+ 	    derived_type = cplus_demangle_type (di);
+@@ -2946,10 +2953,10 @@ d_pointer_to_member_type (struct d_info
+ 
+ /* <non-negative number> _ */
+ 
+-static long
++static int
+ d_compact_number (struct d_info *di)
+ {
+-  long num;
++  int num;
+   if (d_peek_char (di) == '_')
+     num = 0;
+   else if (d_peek_char (di) == 'n')
+@@ -2957,7 +2964,7 @@ d_compact_number (struct d_info *di)
+   else
+     num = d_number (di) + 1;
+ 
+-  if (! d_check_char (di, '_'))
++  if (num < 0 || ! d_check_char (di, '_'))
+     return -1;
+   return num;
+ }
+@@ -2969,7 +2976,7 @@ d_compact_number (struct d_info *di)
+ static struct demangle_component *
+ d_template_param (struct d_info *di)
+ {
+-  long param;
++  int param;
+ 
+   if (! d_check_char (di, 'T'))
+     return NULL;
+@@ -3171,9 +3178,10 @@ d_expression_1 (struct d_info *di)
+ 	}
+       else
+ 	{
+-	  index = d_compact_number (di) + 1;
+-	  if (index == 0)
++	  index = d_compact_number (di);
++	  if (index == INT_MAX || index == -1)
+ 	    return NULL;
++	  index ++;
+ 	}
+       return d_make_function_param (di, index);
+     }
+@@ -3502,7 +3510,7 @@ d_local_name (struct d_info *di)
+ static int
+ d_discriminator (struct d_info *di)
+ {
+-  long discrim;
++  int discrim;
+ 
+   if (d_peek_char (di) != '_')
+     return 1;
+@@ -3558,7 +3566,7 @@ static struct demangle_component *
+ d_unnamed_type (struct d_info *di)
+ {
+   struct demangle_component *ret;
+-  long num;
++  int num;
+ 
+   if (! d_check_char (di, 'U'))
+     return NULL;
+@@ -4086,10 +4094,10 @@ d_append_string (struct d_print_info *dp
+ }
+ 
+ static inline void
+-d_append_num (struct d_print_info *dpi, long l)
++d_append_num (struct d_print_info *dpi, int l)
+ {
+   char buf[25];
+-  sprintf (buf,"%ld", l);
++  sprintf (buf,"%d", l);
+   d_append_string (dpi, buf);
+ }
+ 
+Index: git/libiberty/testsuite/demangle-expected
+===================================================================
+--- git.orig/libiberty/testsuite/demangle-expected
++++ git/libiberty/testsuite/demangle-expected
+@@ -4422,12 +4422,22 @@ void baz<int>(A<sizeof (foo((int)(), (fl
+ _Z3fooI1FEN1XIXszdtcl1PclcvT__EEE5arrayEE4TypeEv
+ X<sizeof ((P(((F)())())).array)>::Type foo<F>()
+ #
+-# Tests a use-after-free problem
++# Tests a use-after-free problem PR70481
+ 
+ _Q.__0
+ ::Q.(void)
+ #
+-# Tests a use-after-free problem
++# Tests a use-after-free problem PR70481
+ 
+ _Q10-__9cafebabe.
+ cafebabe.::-(void)
++#
++# Tests integer overflow problem PR70492
++
++__vt_90000000000cafebabe
++__vt_90000000000cafebabe
++#
++# Tests write access violation PR70498
++
++_Z80800000000000000000000
++_Z80800000000000000000000
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-common.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-common.inc
index e4fd4d6..f540b4d 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-common.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-common.inc
@@ -33,6 +33,8 @@
 def get_long_double_setting(bb, d):
     if d.getVar('TRANSLATED_TARGET_ARCH', True) in [ 'powerpc', 'powerpc64' ] and d.getVar('TCLIBC', True) in [ 'uclibc', 'glibc' ]:
         return "--with-long-double-128"
+    else:
+        return "--without-long-double-128"
     return ""
 
 def get_gcc_multiarch_setting(bb, d):
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-configure-common.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-configure-common.inc
index f4f76bd..ddebbb8 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-configure-common.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-configure-common.inc
@@ -44,6 +44,10 @@
     ${@get_gcc_multiarch_setting(bb, d)} \
 "
 
+# Set this here since GCC configure won't auto-detect and enable
+# initfini-arry when cross compiling.
+EXTRA_OECONF_append = " --enable-initfini-array"
+
 export gcc_cv_collect2_libs = 'none required'
 # We need to set gcc_cv_collect2_libs else there is cross-compilation badness
 # in the config.log files (which might not get generated until do_compile
@@ -57,6 +61,10 @@
 EXTRA_OECONF_append_mips64el = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
 EXTRA_OECONF_append_mips64n32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
 EXTRA_OECONF_append_mips64eln32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
+EXTRA_OECONF_append_mipsisa32r6el = " --with-abi=32 --with-arch=mips32r6"
+EXTRA_OECONF_append_mipsisa32r6 = " --with-abi=32 --with-arch=mips32r6"
+EXTRA_OECONF_append_mipsisa64r6el = " --with-abi=64 --with-arch-64=mips64r6"
+EXTRA_OECONF_append_mipsisa64r6 = " --with-abi=64 --with-arch-64=mips64r6"
 
 # ARMv6+ adds atomic instructions that affect the ABI in libraries built
 # with TUNE_CCARGS in gcc-runtime.  Make the compiler default to a
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_5.3.bb
deleted file mode 100644
index bf53c5c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_5.3.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require gcc-cross-canadian.inc
-
-
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-canadian_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial.inc
index 048b530..dcf2271 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial.inc
@@ -77,7 +77,7 @@
 
 	# gcc-runtime installs libgcc into a special location in staging since it breaks doing a standalone build
 	case ${PN} in
-		*gcc-cross-initial-${TARGET_ARCH}|*gcc-crosssdk-initial-${TARGET_ARCH})
+		*gcc-cross-initial-${TARGET_ARCH}|*gcc-crosssdk-initial-${SDK_SYS})
 			dest=${D}/${includedir}/gcc-build-internal-initial-${TARGET_SYS}
 			hardlinkdir . $dest
 		;;
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_5.3.bb
deleted file mode 100644
index 4c73e5c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_5.3.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-devtools/gcc/gcc-cross_${PV}.bb
-require gcc-cross-initial.inc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross-initial_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross.inc
index f479360..cc465a2 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -13,6 +13,11 @@
 
 require gcc-configure-common.inc
 
+# While we want the 'gnu' hash style, we explicitly set it to sysv here to
+# ensure that any recipe which doesn't obey our LDFLAGS (which also set it to
+# gnu) will hit a QA failure.
+LINKER_HASH_STYLE ?= "sysv"
+
 EXTRA_OECONF += "--enable-poison-system-directories"
 EXTRA_OECONF_append_sh4 = " \
     --with-multilib-list= \
@@ -183,12 +188,15 @@
 
 	# gcc-runtime installs libgcc into a special location in staging since it breaks doing a standalone build
 	case ${PN} in
-		*gcc-cross-${TARGET_ARCH}|*gcc-crosssdk-${TARGET_ARCH})
+		*gcc-cross-${TARGET_ARCH}|*gcc-crosssdk-${SDK_SYS})
 			dest=${D}/${includedir}/gcc-build-internal-${TARGET_SYS}
 			hardlinkdir . $dest
 		;;
 	esac
 }
+# This is reflected in the recipe name and target gcc shouldn't depend 
+# on SDK settings either
+do_install[vardepsexclude] += "SDK_SYS"
 
 do_package[noexec] = "1"
 do_packagedata[noexec] = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_5.3.bb
deleted file mode 100644
index b43cca0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_5.3.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require gcc-cross.inc
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-cross_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial.inc
index 7d2599c..08eda5d 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial.inc
@@ -1,6 +1,6 @@
 inherit crosssdk
 
-PN = "gcc-crosssdk-initial-${TARGET_ARCH}"
+PN = "gcc-crosssdk-initial-${SDK_SYS}"
 
 SYSTEMHEADERS = "${SDKPATHNATIVE}${prefix_nativesdk}/include"
 SYSTEMLIBS = "${SDKPATHNATIVE}${base_libdir_nativesdk}/"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_5.3.bb
deleted file mode 100644
index fd90e11..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_5.3.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require recipes-devtools/gcc/gcc-cross-initial_${PV}.bb
-require gcc-crosssdk-initial.inc
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk-initial_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk.inc
index 53f880f..cda2927 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk.inc
@@ -1,6 +1,6 @@
 inherit crosssdk
 
-PN = "gcc-crosssdk-${TARGET_ARCH}"
+PN = "gcc-crosssdk-${SDK_SYS}"
 
 SYSTEMHEADERS = "${SDKPATHNATIVE}${prefix_nativesdk}/include"
 SYSTEMLIBS = "${SDKPATHNATIVE}${base_libdir_nativesdk}/"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_5.3.bb
deleted file mode 100644
index 40a6c4f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_5.3.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-devtools/gcc/gcc-cross_${PV}.bb
-require gcc-crosssdk.inc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-crosssdk_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime.inc
index 8639c1c..15252f1 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime.inc
@@ -1,5 +1,7 @@
 require gcc-configure-common.inc
 
+SUMMARY = "Runtime libraries from GCC"
+
 # Over-ride the LICENSE set by gcc-${PV}.inc to remove "& GPLv3"
 # All gcc-runtime packages are now covered by the runtime exception.
 LICENSE = "GPL-3.0-with-GCC-exception"
@@ -19,6 +21,10 @@
 RUNTIMELIBITM_mipsel = ""
 RUNTIMELIBITM_mips64 = ""
 RUNTIMELIBITM_mips64el = ""
+RUNTIMELIBITM_mipsisa32r6 = ""
+RUNTIMELIBITM_mipsisa32r6el = ""
+RUNTIMELIBITM_mipsisa64r6 = ""
+RUNTIMELIBITM_mipsisa64r6el = ""
 RUNTIMELIBITM_nios2 = ""
 RUNTIMELIBITM_microblaze = ""
 
@@ -73,9 +79,39 @@
 	if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then
 		ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}
 	fi
+
+}
+
+do_install_append_class-target () {
 	if [ "${TARGET_OS}" = "linux-gnuspe" ]; then
 		ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
 	fi
+
+	if [ "${TARGET_OS}" = "linux-gnun32" ]; then
+		if [ "${MULTILIBS}" != "" ]; then
+			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-pokymllib64-linux
+			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-pokymllib64-linux/32
+		else
+			ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
+		fi
+	fi
+	if [ "${TARGET_OS}" = "linux-gnux32" ]; then
+		if [ "${MULTILIBS}" != "" ]; then
+			mkdir ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-poky-linux
+			ln -s ../${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-poky-linux/x32
+		else
+			ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
+		fi
+	fi
+
+	if [ "${TCLIBC}" != "glibc" ]; then
+		case "${TARGET_OS}" in
+			"linux-musl" | "linux-uclibc" | "linux-*spe") extra_target_os="linux";;
+			"linux-musleabi" | "linux-uclibceabi") extra_target_os="linux-gnueabi";;
+			*) extra_target_os="linux";;
+		esac
+		ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os
+	fi
 	chown -R root:root ${D}
 }
 
@@ -123,73 +159,98 @@
 "
 
 FILES_libg2c = "${target_libdir}/libg2c.so.*"
+SUMMARY_libg2c = "Companion runtime library for g77"
 FILES_libg2c-dev = "\
     ${libdir}/libg2c.so \
     ${libdir}/libg2c.a \
     ${libdir}/libfrtbegin.a \
 "
+SUMMARY_libg2c-dev = "Companion runtime library for g77 - development files"
 
 FILES_libstdc++ = "${libdir}/libstdc++.so.*"
+SUMMARY_libstdc++ = "GNU standard C++ library"
 FILES_libstdc++-dev = "\
     ${includedir}/c++/ \
     ${libdir}/libstdc++.so \
     ${libdir}/libstdc++*.la \
     ${libdir}/libsupc++.la \
 "
+SUMMARY_libstdc++-dev = "GNU standard C++ library - development files"
 FILES_libstdc++-staticdev = "\
     ${libdir}/libstdc++*.a \
     ${libdir}/libsupc++.a \
 "
+SUMMARY_libstdc++-staticdev = "GNU standard C++ library - static development files"
 
 FILES_libstdc++-precompile-dev = "${includedir}/c++/${TARGET_SYS}/bits/*.gch"
+SUMMARY_libstdc++-precompile-dev = "GNU standard C++ library - precompiled header files"
 
 FILES_libssp = "${libdir}/libssp.so.*"
+SUMMARY_libssp = "GNU stack smashing protection library"
 FILES_libssp-dev = "\
     ${libdir}/libssp*.so \
     ${libdir}/libssp*_nonshared.a \
     ${libdir}/libssp*.la \
     ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ssp \
 "
+SUMMARY_libssp-dev = "GNU stack smashing protection library - development files"
 FILES_libssp-staticdev = "${libdir}/libssp*.a"
+SUMMARY_libssp-staticdev = "GNU stack smashing protection library - static development files"
 
 FILES_libquadmath = "${libdir}/libquadmath*.so.*"
+SUMMARY_libquadmath = "GNU quad-precision math library"
 FILES_libquadmath-dev = "\
     ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/quadmath* \
     ${libdir}/libquadmath*.so \
     ${libdir}/libquadmath.la \
 "
+SUMMARY_libquadmath-dev = "GNU quad-precision math library - development files"
 FILES_libquadmath-staticdev = "${libdir}/libquadmath.a"
+SUMMARY_libquadmath-staticdev = "GNU quad-precision math library - static development files"
 
+# NOTE: mudflap has been removed as of gcc 4.9 and has been superseded by the address sanitiser
 FILES_libmudflap = "${libdir}/libmudflap*.so.*"
+SUMMARY_libmudflap = "Pointer debugging library for gcc"
 FILES_libmudflap-dev = "\
     ${libdir}/libmudflap*.so \
     ${libdir}/libmudflap.la \
 "
+SUMMARY_libmudflap-dev = "Pointer debugging library for gcc - development files"
 FILES_libmudflap-staticdev = "${libdir}/libmudflap.a"
+SUMMARY_libmudflap-staticdev = "Pointer debugging library for gcc - static development files"
 
 FILES_libgomp = "${libdir}/libgomp*${SOLIBS}"
+SUMMARY_libgomp = "GNU OpenMP parallel programming library"
 FILES_libgomp-dev = "\
     ${libdir}/libgomp*${SOLIBSDEV} \
     ${libdir}/libgomp*.la \
     ${libdir}/libgomp.spec \
     ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/omp.h \
 "
+SUMMARY_libgomp-dev = "GNU OpenMP parallel programming library - development files"
 FILES_libgomp-staticdev = "${libdir}/libgomp*.a"
+SUMMARY_libgomp-staticdev = "GNU OpenMP parallel programming library - static development files"
 
 FILES_libatomic = "${libdir}/libatomic.so.*"
+SUMMARY_libatomic = "GNU C++11 atomics support library"
 FILES_libatomic-dev = "\
     ${libdir}/libatomic.so \
     ${libdir}/libatomic.la \
 "
+SUMMARY_libatomic-dev = "GNU C++11 atomics support library - development files"
 FILES_libatomic-staticdev = "${libdir}/libatomic.a"
+SUMMARY_libatomic-staticdev = "GNU C++11 atomics support library - static development files"
 
 FILES_libitm = "${libdir}/libitm.so.*"
+SUMMARY_libitm = "GNU transactional memory support library"
 FILES_libitm-dev = "\
     ${libdir}/libitm.so \
     ${libdir}/libitm.la \
     ${libdir}/libitm.spec \
 "
+SUMMARY_libitm-dev = "GNU transactional memory support library - development files"
 FILES_libitm-staticdev = "${libdir}/libitm.a"
+SUMMARY_libitm-staticdev = "GNU transactional memory support library - static development files"
 
 do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
 do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_4.9.bb
deleted file mode 100644
index 497d691..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_4.9.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require gcc-runtime.inc
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_5.3.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_5.3.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-runtime_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc
index 6091a0b..df4e297 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc
@@ -50,7 +50,7 @@
 
 INHIBIT_DEFAULT_DEPS = "1"
 ALLOW_EMPTY_${PN} = "1"
-DEPENDS = "gcc-runtime"
+DEPENDS = "gcc-runtime virtual/${TARGET_PREFIX}gcc"
 
 BBCLASSEXTEND = "nativesdk"
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_5.3.bb
deleted file mode 100644
index 601f666..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_5.3.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require gcc-sanitizers.inc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-sanitizers_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_5.3.bb
deleted file mode 100644
index b890fa3..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_5.3.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require recipes-devtools/gcc/gcc-source.inc
-
-EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-source_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-target.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-target.inc
index b8dabe5..f436fa2 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-target.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-target.inc
@@ -4,7 +4,6 @@
 EXTRA_OECONF_PATHS = "\
     --with-sysroot=/ \
     --with-build-sysroot=${STAGING_DIR_TARGET} \
-    --with-native-system-header-dir=${STAGING_DIR_TARGET}${target_includedir} \
     --with-gxx-include-dir=${includedir}/c++/${BINV} \
 "
 
@@ -43,6 +42,10 @@
     ${gcclibdir}/${TARGET_SYS}/${BINV}/include-fixed \
 "
 INSANE_SKIP_${PN} += "dev-so"
+RRECOMMENDS_${PN} += "\
+    libssp \
+    libssp-dev \
+"
 
 FILES_${PN}-dev = "\
     ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
@@ -70,10 +73,19 @@
     ${bindir}/g77 \
     ${bindir}/f77 \
 "
+RRECOMMENDS_g77 = "\
+    libg2c \
+    libg2c-dev \
+"
+
 FILES_gfortran = "\
     ${bindir}/${TARGET_PREFIX}gfortran \
     ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
 "
+RRECOMMENDS_gfortran = "\
+    libquadmath \
+    libquadmath-dev \
+"
 FILES_gfortran-symlinks = "\
     ${bindir}/gfortran \
     ${bindir}/f95"
@@ -99,6 +111,12 @@
     ${bindir}/c++ \
     ${bindir}/g++ \
 "
+RRECOMMENDS_g++ = "\
+    libstdc++ \
+    libstdc++-dev \
+    libatomic \
+    libatomic-dev \
+"
 
 FILES_${PN}-doc = "\
     ${infodir} \
@@ -205,6 +223,4 @@
 # and builds track file dependencies (e.g. perl and its makedepends code).
 # For determinism we don't install this ever and rely on the copy from gcc-cross.
 # [YOCTO #7287]
-sysroot_stage_dirs_append () {
-	rm -rf $to${libdir}/gcc
-}
+SYSROOT_DIRS_BLACKLIST += "${libdir}/gcc"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_4.9.bb
deleted file mode 100644
index a9dc612..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_4.9.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require gcc-target.inc
-
-# http://errors.yoctoproject.org/Errors/Details/20497/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-BBCLASSEXTEND = "nativesdk"
-
-#SYSTEMHEADERS_class-nativesdk = "${@'${target_includedir}'.replace(d.getVar('SDKPATH', True),'%r')}"
-#SYSTEMLIBS_class-nativesdk = "${@'${target_base_libdir}'.replace(d.getVar('SDKPATH', True),'%r')}/"
-#SYSTEMLIBS1_class-nativesdk = "${@'${target_libdir}'.replace(d.getVar('SDKPATH', True),'%r')}/"
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_5.3.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_5.3.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-common.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-common.inc
index dae07e9..8a13f54 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -1,6 +1,6 @@
 BPN = "libgcc"
 
-require gcc-shared-source.inc
+require gcc-configure-common.inc
 
 INHIBIT_DEFAULT_DEPS = "1"
 
@@ -111,9 +111,15 @@
         if not tune_bitness:
             tune_bitness = '32' # /lib => 32bit lib
 
+        tune_abiextension = tune_parameters['abiextension']
+        if tune_abiextension:
+            libcextension = '-gnu' + tune_abiextension
+        else:
+            libcextension = ''
+
         src = '../../../' + tune_baselib + '/' + \
             tune_arch + d.getVar('TARGET_VENDOR', True) + 'ml' + ml + \
-            '-' + d.getVar('TARGET_OS', True) + '/' + binv + '/'
+            '-' + d.getVar('TARGET_OS', True) + libcextension +  '/' + binv + '/'
 
         dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + \
             d.getVar('TARGET_SYS', True) + '/' + binv + '/' + tune_bitness
@@ -123,15 +129,18 @@
         os.symlink(src, dest)
 }
 
-def get_original_vendoros(d):
-    vendoros = d.expand('${TARGET_VENDOR}-${TARGET_OS}')
+def get_original_os(d):
+    vendoros = d.expand('${TARGET_ARCH}${ORIG_TARGET_VENDOR}-${TARGET_OS}')
     for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]:
         if suffix and vendoros.endswith(suffix):
             vendoros = vendoros[:-len(suffix)]
+    # Arm must use linux-gnueabi not linux as only the former is accepted by gcc
+    if vendoros.startswith("arm-") and not vendoros.endswith("-gnueabi"):
+        vendoros = vendoros + "-gnueabi"
     return vendoros
 
-ORIG_TARGET_VENDOROS := "${@get_original_vendoros(d)}"
-BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}"
+ORIG_TARGET_VENDOR := "${TARGET_VENDOR}"
+BASETARGET_SYS = "${@get_original_os(d)}"
 
 addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot
 fakeroot python do_extra_symlinks() {
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial.inc
index 59e8a62..687a8a0 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial.inc
@@ -5,7 +5,7 @@
 LICENSE = "GPL-3.0-with-GCC-exception"
 
 STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
-STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
 PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
 
 PACKAGES = ""
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_5.3.bb
deleted file mode 100644
index 19f253f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_5.3.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require libgcc-initial.inc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc-initial_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc.inc b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc.inc
index 6837786..4770394 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc.inc
@@ -2,6 +2,17 @@
 
 DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
 
+do_install_append_class-target () {
+	if [ "${TCLIBC}" != "glibc" ]; then
+		case "${TARGET_OS}" in
+			"linux-musl" | "linux-uclibc" | "linux-*spe") extra_target_os="linux";;
+			"linux-musleabi" | "linux-uclibceabi") extra_target_os="linux-gnueabi";;
+			*) extra_target_os="linux";;
+		esac
+		ln -s ${TARGET_SYS} ${D}${libdir}/${TARGET_ARCH}${TARGET_VENDOR}-$extra_target_os
+	fi
+}
+
 PACKAGES = "\
     ${PN} \
     ${PN}-dev \
@@ -19,6 +30,7 @@
     ${base_libdir}/libgcc*.so \
     ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '', '${libdir}/${BASETARGET_SYS}', d)} \
     ${libdir}/${TARGET_SYS}/${BINV}* \
+    ${libdir}/${TARGET_ARCH}${TARGET_VENDOR}* \
 "
 
 LIBGCCBUILDTREENAME = "gcc-build-internal-"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_5.3.bb
deleted file mode 100644
index a5152f2..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_5.3.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require libgcc.inc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/libgcc_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_5.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_5.3.bb
deleted file mode 100644
index 71dd8b4..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_5.3.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require libgfortran.inc
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_5.4.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_4.9.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_5.4.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_4.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_6.2.bb
similarity index 100%
copy from import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_4.9.bb
copy to import-layers/yocto-poky/meta/recipes-devtools/gcc/libgfortran_6.2.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-7.10.1.inc b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-7.11.inc
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-7.10.1.inc
rename to import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-7.11.inc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-common.inc b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-common.inc
index 0d28ee4..0923143 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-common.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-common.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.gnu.org/software/gdb/"
 LICENSE = "GPLv3+"
 SECTION = "devel"
-DEPENDS = "expat zlib ncurses ${LTTNGUST}"
+DEPENDS = "expat zlib ncurses virtual/libiconv ${LTTNGUST}"
 
 LTTNGUST = "lttng-ust"
 LTTNGUST_aarch64 = ""
@@ -16,8 +16,6 @@
 LTTNGUST_sh4 = ""
 LTTNGUST_libc-musl = ""
 
-INC_PR = "r0"
-
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
 		file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674 \
 		file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
@@ -25,8 +23,25 @@
 
 inherit autotools texinfo
 
-SRC_URI = "${GNU_MIRROR}/gdb/gdb-${PV}.tar.gz \
-          "
+SRCREV = "1a982b689ce4e20523bdf69e47fdd574c4f63934"
+
+SRC_URI = "git://sourceware.org/git/binutils-gdb.git;branch=gdb-7.11-branch \
+           file://0001-include-sys-types.h-for-mode_t.patch \
+           file://0002-make-man-install-relative-to-DESTDIR.patch \
+           file://0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch \
+           file://0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch \
+           file://0005-Add-support-for-Renesas-SH-sh4-architecture.patch \
+           file://0006-Dont-disable-libreadline.a-when-using-disable-static.patch \
+           file://0007-use-asm-sgidefs.h.patch \
+           file://0008-Use-exorted-definitions-of-SIGRTMIN.patch \
+           file://0009-Change-order-of-CFLAGS.patch \
+           file://0010-resolve-restrict-keyword-conflict.patch \
+           file://0011-avx_mpx.patch \
+"
+
+UPSTREAM_CHECK_GITTAGREGEX = "gdb\-(?P<pver>.+)\-release"
+
+S = "${WORKDIR}/git"
 
 B = "${WORKDIR}/build-${TARGET_SYS}"
 
@@ -40,12 +55,15 @@
                 ${GDBPROPREFIX} ${EXPAT} \
                 ${@bb.utils.contains('DISTRO_FEATURES', 'multiarch', '--enable-64-bit-bfd', '', d)} \
                 --disable-rpath \
-               "
+                --disable-gas --disable-binutils \
+                --disable-ld --disable-gold \
+                --disable-gprof \
+"
 
 PACKAGECONFIG ??= "readline"
 # Use --without-system-readline to compile with readline 5.
 PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,readline"
-PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,python,python python-codecs"
+PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,python3,python3 python3-codecs"
 PACKAGECONFIG[babeltrace] = "--with-babeltrace,--without-babeltrace,babeltrace"
 
 GDBPROPREFIX = "--program-prefix=''"
@@ -69,4 +87,3 @@
 RRECOMMENDS_gdb_append_linux-gnueabi = " glibc-thread-db "
 RRECOMMENDS_gdbserver_append_linux = " glibc-thread-db "
 RRECOMMENDS_gdbserver_append_linux-gnueabi = " glibc-thread-db "
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
index 6e42af1..e53081d 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
@@ -1,5 +1,5 @@
 inherit cross-canadian
-inherit python-dir
+inherit python3-dir
 
 SUMMARY = "GNU debugger (cross-canadian gdb for ${TARGET_ARCH} target)"
 PN = "gdb-cross-canadian-${TRANSLATED_TARGET_ARCH}"
@@ -12,9 +12,9 @@
 
 # Overrides PACKAGECONFIG variables in gdb-common.inc
 PACKAGECONFIG ??= "python readline"
-PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,nativesdk-python, \
-                         nativesdk-python-core nativesdk-python-lang nativesdk-python-re \
-                         nativesdk-python-codecs nativesdk-python-netclient"
+PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,nativesdk-python3, \
+                         nativesdk-python3-core nativesdk-python3-lang nativesdk-python3-re \
+                         nativesdk-python3-codecs nativesdk-python3-netclient"
 PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,nativesdk-readline"
 
 SSTATE_DUPWHITELIST += "${STAGING_DATADIR}/gdb"
@@ -23,8 +23,8 @@
 cat > ${WORKDIR}/python << EOF
 #! /bin/sh
 case "\$2" in
-        --includes) echo "-I${STAGING_INCDIR}/${PYTHON_DIR}/" ;;
-        --ldflags) echo "-Wl,-rpath-link,${STAGING_LIBDIR}/.. -Wl,-rpath,${libdir}/.. -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}" ;;
+        --includes) echo "-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}/" ;;
+        --ldflags) echo "-Wl,-rpath-link,${STAGING_LIBDIR}/.. -Wl,-rpath,${libdir}/.. -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}${PYTHON_ABI}" ;;
         --exec-prefix) echo "${exec_prefix}" ;;
         *) exit 1 ;;
 esac
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian_7.10.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian_7.11.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian_7.10.1.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian_7.11.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross.inc b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross.inc
index 2468d23..5fa7c33 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross.inc
@@ -2,16 +2,14 @@
 
 DEPENDS = "expat-native ncurses-native"
 
-inherit pythonnative
+inherit python3native
 
 # Overrides PACKAGECONFIG variables in gdb-common.inc
 PACKAGECONFIG ??= "python readline"
-PACKAGECONFIG[python] = "--with-python=${STAGING_BINDIR_NATIVE}/python-native/python,--without-python,python-native"
+PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3-native"
 PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,readline-native"
 
 do_compile_prepend() {
-    export BUILD_SYS="${BUILD_SYS}"
-    export HOST_SYS="${HOST_SYS}"
     export STAGING_LIBDIR="${STAGING_LIBDIR_NATIVE}"
     export STAGING_INCDIR="${STAGING_INCDIR_NATIVE}"
 }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.10.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.10.1.bb
deleted file mode 100644
index 3a95cfb..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.10.1.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require gdb-cross.inc
-require gdb-${PV}.inc
-
-SRC_URI += "file://0001-make-man-install-relative-to-DESTDIR.patch"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.11.bb b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.11.bb
new file mode 100644
index 0000000..50cf159
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.11.bb
@@ -0,0 +1,2 @@
+require gdb-cross.inc
+require gdb-${PV}.inc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb.inc b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb.inc
index d9c864d..52119a0 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb.inc
@@ -2,14 +2,6 @@
 
 inherit gettext
 
-SRC_URI += "file://0002-Change-order-of-CFLAGS.patch \
-            file://0003-Add-support-for-Renesas-SH-sh4-architecture.patch \
-            file://0001-Use-exported-definitions-of-SIGRTMIN.patch \
-            file://0001-include-sys-types.h-for-mode_t.patch \
-            file://0001-use-asm-sgidefs.h.patch \
-            file://force-readline-static.patch \
-            file://0001-mips-linux-nat-Define-_ABIO32-if-not-defined.patch \
-           "
 #LDFLAGS_append = " -s"
 #export CFLAGS_append=" -L${STAGING_LIBDIR}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-Use-exported-definitions-of-SIGRTMIN.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-Use-exported-definitions-of-SIGRTMIN.patch
deleted file mode 100644
index 5f0c096..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-Use-exported-definitions-of-SIGRTMIN.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 2f97e89e9e4e5797d0d973e1d05c1f44c46b4912 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 5 Jun 2015 20:21:38 -0700
-Subject: [PATCH] Use exorted definitions of SIGRTMIN
-
-Define W_STOPCODE if not defined already
-
-__SIGRTMIN is internal to glibc and other libcs e.g. musl
-may not provide them
-
-Fixes
-https://sourceware.org/bugzilla/show_bug.cgi?id=13012
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- gdb/linux-nat.c     | 4 ++--
- gdb/nat/linux-nat.h | 4 ++++
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index 396c30c..50320ee 100644
---- a/gdb/linux-nat.c
-+++ b/gdb/linux-nat.c
-@@ -4856,10 +4856,10 @@ lin_thread_get_thread_signals (sigset_t *set)
-      fortunately they don't change!  */
- 
-   if (restart == 0)
--    restart = __SIGRTMIN;
-+    restart = SIGRTMIN;
- 
-   if (cancel == 0)
--    cancel = __SIGRTMIN + 1;
-+    cancel = SIGRTMIN + 1;
- 
-   sigaddset (set, restart);
-   sigaddset (set, cancel);
-diff --git a/gdb/nat/linux-nat.h b/gdb/nat/linux-nat.h
-index 83a6d91..efbe0fd 100644
---- a/gdb/nat/linux-nat.h
-+++ b/gdb/nat/linux-nat.h
-@@ -25,4 +25,8 @@
-    instead SIGTRAP with bit 7 set.  */
- #define SYSCALL_SIGTRAP (SIGTRAP | 0x80)
- 
-+#ifndef W_STOPCODE
-+#define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
-+#endif
-+
- #endif /* LINUX_NAT_H */
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch
index a0292e4..0042c00 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch
@@ -1,7 +1,7 @@
-From acbee4edacb80b5eeaff2480712fe98e56443997 Mon Sep 17 00:00:00 2001
+From fddd7178915968acf680814411b8b3cb137d0587 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 19 Jan 2016 18:18:52 -0800
-Subject: [PATCH] include sys/types.h for mode_t
+Subject: [PATCH 01/10] include sys/types.h for mode_t
 
 mode_t is used in target.h, so we need to include sys/types.h to get the
 defintion
@@ -14,10 +14,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
-index 9a40867..aaecab9 100644
+index 5af2051..f42c510 100644
 --- a/gdb/gdbserver/target.h
 +++ b/gdb/gdbserver/target.h
-@@ -27,6 +27,7 @@
+@@ -28,6 +28,7 @@
  #include "target/waitstatus.h"
  #include "mem-break.h"
  #include "btrace-common.h"
@@ -26,5 +26,5 @@
  struct emit_ops;
  struct buffer;
 -- 
-2.7.0
+2.8.2
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch
deleted file mode 100644
index 6996c18..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 12b0506951460c3cc37d775478d024db3f95e9d8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 2 Mar 2015 02:27:55 +0000
-Subject: [PATCH 1/3] make man install relative to DESTDIR
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sim/common/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sim/common/Makefile.in b/sim/common/Makefile.in
-index d49a93b..2121c46 100644
---- a/sim/common/Makefile.in
-+++ b/sim/common/Makefile.in
-@@ -35,7 +35,7 @@ tooldir = $(libdir)/$(target_alias)
- datarootdir = @datarootdir@
- datadir = @datadir@
- mandir = @mandir@
--man1dir = $(mandir)/man1
-+man1dir = $(DESTDIR)$(mandir)/man1
- infodir = @infodir@
- includedir = @includedir@
- 
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-mips-linux-nat-Define-_ABIO32-if-not-defined.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
deleted file mode 100644
index 3173952..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From e92f8932ef488de2a56db4299131ce6a4eb170bd Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 23 Mar 2016 06:30:09 +0000
-Subject: [PATCH] mips-linux-nat: Define _ABIO32 if not defined
-
-This helps building gdb on mips64 on musl, since
-musl does not provide sgidefs.h this define is
-only defined when GCC is using o32 ABI, in that
-case gcc emits it as built-in define and hence
-it works ok for mips32
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- gdb/mips-linux-nat.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index fd5c705..753f29d 100644
---- a/gdb/mips-linux-nat.c
-+++ b/gdb/mips-linux-nat.c
-@@ -46,6 +46,11 @@
- #define PTRACE_GET_THREAD_AREA 25
- #endif
- 
-+/* musl does not define and relies on compiler built-in macros for it   */
-+#ifndef _ABIO32
-+#define _ABIO32 1
-+#endif
-+
- /* Assume that we have PTRACE_GETREGS et al. support.  If we do not,
-    we'll clear this and use PTRACE_PEEKUSER instead.  */
- static int have_ptrace_regsets = 1;
--- 
-1.8.3.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-use-asm-sgidefs.h.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-use-asm-sgidefs.h.patch
deleted file mode 100644
index eaec390..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0001-use-asm-sgidefs.h.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 677b5b56135141c0d259e370aacd0e11c810aa15 Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Fri, 5 Feb 2016 14:00:00 -0800
-Subject: [PATCH] use <asm/sgidefs.h>
-
-Build fix for MIPS with musl libc
-
-The MIPS specific header <sgidefs.h> is provided by glibc and uclibc
-but not by musl. Regardless of the libc, the kernel headers provide
-<asm/sgidefs.h> which provides the same definitions, so use that
-instead.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- gdb/mips-linux-nat.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index a36bb63..fd5c705 100644
---- a/gdb/mips-linux-nat.c
-+++ b/gdb/mips-linux-nat.c
-@@ -31,7 +31,7 @@
- #include "gdb_proc_service.h"
- #include "gregset.h"
- 
--#include <sgidefs.h>
-+#include <asm/sgidefs.h>
- #include <sys/ptrace.h>
- #include <asm/ptrace.h>
- 
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0002-Change-order-of-CFLAGS.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0002-Change-order-of-CFLAGS.patch
deleted file mode 100644
index bccb45f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0002-Change-order-of-CFLAGS.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 262ccc4fdb2a3df0f16c61a807046964ae7729c9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 2 Mar 2015 02:29:23 +0000
-Subject: [PATCH 2/3] Change order of CFLAGS
-
-Lets us override Werror if need be
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdb/gdbserver/Makefile.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
-index 1ed2ec8..0cef95b 100644
---- a/gdb/gdbserver/Makefile.in
-+++ b/gdb/gdbserver/Makefile.in
-@@ -131,10 +131,10 @@ CFLAGS = @CFLAGS@
- CPPFLAGS = @CPPFLAGS@
- 
- # INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
--INTERNAL_CFLAGS_BASE =  ${CFLAGS} ${GLOBAL_CFLAGS} \
-+INTERNAL_CFLAGS_BASE = ${GLOBAL_CFLAGS} \
- 	${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS}
- INTERNAL_WARN_CFLAGS =  ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
--INTERNAL_CFLAGS =  ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
-+INTERNAL_CFLAGS =  ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) ${CFLAGS} -DGDBSERVER
- 
- # LDFLAGS is specifically reserved for setting from the command line
- # when running make.
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch
new file mode 100644
index 0000000..defed62
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch
@@ -0,0 +1,28 @@
+From 3229cb09033eeb5003a08d91fa9d43be8ba4c86b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 2 Mar 2015 02:27:55 +0000
+Subject: [PATCH 02/10] make man install relative to DESTDIR
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sim/common/Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sim/common/Makefile.in b/sim/common/Makefile.in
+index a05f507..8d0fa64 100644
+--- a/sim/common/Makefile.in
++++ b/sim/common/Makefile.in
+@@ -35,7 +35,7 @@ tooldir = $(libdir)/$(target_alias)
+ datarootdir = @datarootdir@
+ datadir = @datadir@
+ mandir = @mandir@
+-man1dir = $(mandir)/man1
++man1dir = $(DESTDIR)$(mandir)/man1
+ infodir = @infodir@
+ includedir = @includedir@
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0003-Add-support-for-Renesas-SH-sh4-architecture.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0003-Add-support-for-Renesas-SH-sh4-architecture.patch
deleted file mode 100644
index 4a3e22c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0003-Add-support-for-Renesas-SH-sh4-architecture.patch
+++ /dev/null
@@ -1,921 +0,0 @@
-From 407cb13cfb70697f45dfb761304e005e1ecbd0e9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 2 Mar 2015 02:31:12 +0000
-Subject: [PATCH 3/3] Add support for Renesas SH (sh4) architecture.
-
-gdb (7.4-1~cvs20111117.2) experimental; urgency=low
- .
-   * Add Renesas SH (sh4) support (Closes: #576242)
-     - Thanks Nobuhiro Iwamatsu, Takashi Yoshii.
-Author: Hector Oron <zumbi@debian.org>
-Bug-Debian: http://bugs.debian.org/576242
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdb/Makefile.in                      |   1 +
- gdb/configure.host                   |   1 +
- gdb/sh-linux-tdep.c                  | 519 +++++++++++++++++++++++++++++++++++
- gdb/sh-tdep.c                        |  54 ++--
- gdb/sh-tdep.h                        |  49 ++++
- gdb/testsuite/gdb.asm/asm-source.exp |   5 +
- gdb/testsuite/gdb.asm/sh.inc         |   3 +-
- gdb/testsuite/gdb.base/annota1.c     |   3 +
- gdb/testsuite/gdb.base/annota3.c     |   4 +
- gdb/testsuite/gdb.base/sigall.c      |   3 +
- gdb/testsuite/gdb.base/signals.c     |   4 +
- 11 files changed, 617 insertions(+), 29 deletions(-)
-
-diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 7937801..63baf81 100644
---- a/gdb/Makefile.in
-+++ b/gdb/Makefile.in
-@@ -1707,6 +1707,7 @@ ALLDEPFILES = \
- 	score-tdep.c \
- 	ser-go32.c ser-pipe.c ser-tcp.c ser-mingw.c \
- 	sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \
-+	sh-linux-tdep.c sh-linux-nat.c \
- 	sol2-tdep.c \
- 	solib-svr4.c \
- 	sparc-linux-nat.c sparc-linux-tdep.c \
-diff --git a/gdb/configure.host b/gdb/configure.host
-index d07be4b..b6391c5 100644
---- a/gdb/configure.host
-+++ b/gdb/configure.host
-@@ -150,6 +150,7 @@ powerpc*-*-linux*)	gdb_host=linux ;;
- 
- s390*-*-linux*)		gdb_host=linux ;;
- 
-+sh*-*-linux*)		gdb_host=linux ;;
- sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
- 			gdb_host=nbsd ;;
- sh*-*-openbsd*)		gdb_host=nbsd ;;
-diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c
-index 2ff2ee8..1a11262 100644
---- a/gdb/sh-linux-tdep.c
-+++ b/gdb/sh-linux-tdep.c
-@@ -18,14 +18,37 @@
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
- 
- #include "defs.h"
-+#include "gdbcore.h"
-+#include "frame.h"
-+#include "frame-base.h"
-+#include "frame-unwind.h"
-+#include "dwarf2-frame.h"
-+#include "value.h"
-+#include "regcache.h"
-+#include "inferior.h"
- #include "osabi.h"
- 
-+#include "reggroups.h"
-+#include "arch-utils.h"
-+#include "floatformat.h"
- #include "solib-svr4.h"
- #include "symtab.h"
-+#include "gdb_string.h"
-+#include "command.h"
-+#include "gdb_assert.h"
- 
- #include "trad-frame.h"
- #include "tramp-frame.h"
- 
-+#include <sys/ptrace.h>
-+#include <sys/types.h>
-+#include <sys/param.h>
-+#include <sys/user.h>
-+#include <sys/syscall.h>
-+
-+#include <asm/ptrace.h>
-+
-+#include "regset.h"
- #include "glibc-tdep.h"
- #include "sh-tdep.h"
- #include "linux-tdep.h"
-@@ -180,9 +203,505 @@ static struct tramp_frame sh_linux_rt_sigreturn_tramp_frame = {
-   sh_linux_rt_sigreturn_init
- };
- 
-+/* Recognizing signal handler frames.  */
-+
-+/* GNU/Linux has two flavors of signals.  Normal signal handlers, and
-+   "realtime" (RT) signals.  The RT signals can provide additional
-+   information to the signal handler if the SA_SIGINFO flag is set
-+   when establishing a signal handler using `sigaction'.  It is not
-+   unlikely that future versions of GNU/Linux will support SA_SIGINFO
-+   for normal signals too.  */
-+
-+/* When the SH Linux kernel calls a signal handler and the
-+   SA_RESTORER flag isn't set, the return address points to a bit of
-+   code on the stack.  This function returns whether the PC appears to
-+   be within this bit of code.
-+
-+   The instruction sequence for normal signals is
-+       mov.w  1f,r3
-+       trapa  #16
-+       or     r0, r0
-+       or     r0, r0
-+       or     r0, r0
-+       or     r0, r0
-+       or     r0, r0
-+    1: .word  __NR_sigreturn
-+   or 0x9305 0xc310 0x200b 0x200b 0x200b 0x200b 0x200b 0x0077.
-+
-+   Checking for the code sequence should be somewhat reliable, because
-+   the effect is to call the system call sigreturn.  This is unlikely
-+   to occur anywhere other than a signal trampoline.
-+
-+   It kind of sucks that we have to read memory from the process in
-+   order to identify a signal trampoline, but there doesn't seem to be
-+   any other way.  The PC_IN_SIGTRAMP macro in tm-linux.h arranges to
-+   only call us if no function name could be identified, which should
-+   be the case since the code is on the stack.
-+
-+   Detection of signal trampolines for handlers that set the
-+   SA_RESTORER flag is in general not possible.  Unfortunately this is
-+   what the GNU C Library has been doing for quite some time now.
-+   However, as of version 2.1.2, the GNU C Library uses signal
-+   trampolines (named __restore and __restore_rt) that are identical
-+   to the ones used by the kernel.  Therefore, these trampolines are
-+   supported too.  */
-+
-+#define MOVW(n)	 (0x9300|((n)-2))	/* Move mem word at PC+n to R3 */
-+#define TRAP16	 0xc310			/* Syscall w/no args (NR in R3) */
-+#define OR_R0_R0 0x200b			/* or r0,r0 (insert to avoid hardware bug) */
-+
-+#define LINUX_SIGTRAMP_INSN0	MOVW(7)		/* Move mem word at PC+7 to R3 */
-+#define LINUX_SIGTRAMP_INSN1	TRAP16		/* Syscall w/no args (NR in R3) */
-+#define LINUX_SIGTRAMP_INSN2	OR_R0_R0	/* or r0,r0 (insert to avoid hardware bug) */
-+
-+static const unsigned short linux_sigtramp_code[] =
-+{
-+  LINUX_SIGTRAMP_INSN0,
-+  LINUX_SIGTRAMP_INSN1,
-+  LINUX_SIGTRAMP_INSN2,
-+  LINUX_SIGTRAMP_INSN2,
-+  LINUX_SIGTRAMP_INSN2,
-+  LINUX_SIGTRAMP_INSN2,
-+  LINUX_SIGTRAMP_INSN2,
-+  __NR_sigreturn
-+};
-+
-+#define LINUX_SIGTRAMP_LEN (sizeof linux_sigtramp_code)
-+
-+/* If PC is in a sigtramp routine, return the address of the start of
-+   the routine.  Otherwise, return 0.  */
-+
-+static CORE_ADDR
-+sh_linux_sigtramp_start (struct frame_info *next_frame)
-+{
-+  CORE_ADDR pc = get_frame_pc (next_frame);
-+  gdb_byte buf[LINUX_SIGTRAMP_LEN];
-+
-+  /* We only recognize a signal trampoline if PC is at the start of
-+     one of the three instructions.  We optimize for finding the PC at
-+     the start, as will be the case when the trampoline is not the
-+     first frame on the stack.  We assume that in the case where the
-+     PC is not at the start of the instruction sequence, there will be
-+     a few trailing readable bytes on the stack.  */
-+
-+  if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_SIGTRAMP_LEN))
-+    return 0;
-+
-+  if (buf[0] != LINUX_SIGTRAMP_INSN0)
-+    {
-+      if (buf[0] != LINUX_SIGTRAMP_INSN1)
-+        return 0;
-+
-+      pc -= 2;
-+
-+      if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_SIGTRAMP_LEN))
-+	return 0;
-+    }
-+
-+  if (memcmp (buf, linux_sigtramp_code, LINUX_SIGTRAMP_LEN) != 0)
-+    return 0;
-+
-+  return pc;
-+}
-+
-+/* This function does the same for RT signals.  Here the instruction
-+   sequence is
-+       mov.w  1f,r3
-+       trapa  #16
-+       or     r0, r0
-+       or     r0, r0
-+       or     r0, r0
-+       or     r0, r0
-+       or     r0, r0
-+    1: .word  __NR_rt_sigreturn
-+   or 0x9305 0xc310 0x200b 0x200b 0x200b 0x200b 0x200b 0x00ad.
-+
-+   The effect is to call the system call rt_sigreturn.  */
-+
-+#define LINUX_RT_SIGTRAMP_INSN0		MOVW(7)		/* Move mem word at PC+7 to R3 */
-+#define LINUX_RT_SIGTRAMP_INSN1		TRAP16		/* Syscall w/no args (NR in R3) */
-+#define LINUX_RT_SIGTRAMP_INSN2		OR_R0_R0	/* or r0,r0 (insert to avoid hardware bug) */
-+
-+static const unsigned short linux_rt_sigtramp_code[] =
-+{
-+  LINUX_RT_SIGTRAMP_INSN0,
-+  LINUX_RT_SIGTRAMP_INSN1,
-+  LINUX_RT_SIGTRAMP_INSN2,
-+  LINUX_RT_SIGTRAMP_INSN2,
-+  LINUX_RT_SIGTRAMP_INSN2,
-+  LINUX_RT_SIGTRAMP_INSN2,
-+  LINUX_RT_SIGTRAMP_INSN2,
-+  __NR_rt_sigreturn
-+};
-+
-+#define LINUX_RT_SIGTRAMP_LEN (sizeof linux_rt_sigtramp_code)
-+
-+/* If PC is in a RT sigtramp routine, return the address of the start
-+   of the routine.  Otherwise, return 0.  */
-+
-+static CORE_ADDR
-+sh_linux_rt_sigtramp_start (struct frame_info *next_frame)
-+{
-+  CORE_ADDR pc = get_frame_pc (next_frame);
-+  gdb_byte buf[LINUX_RT_SIGTRAMP_LEN];
-+
-+  /* We only recognize a signal trampoline if PC is at the start of
-+     one of the two instructions.  We optimize for finding the PC at
-+     the start, as will be the case when the trampoline is not the
-+     first frame on the stack.  We assume that in the case where the
-+     PC is not at the start of the instruction sequence, there will be
-+     a few trailing readable bytes on the stack.  */
-+
-+  if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_RT_SIGTRAMP_LEN))
-+    return 0;
-+
-+  if (buf[0] != LINUX_RT_SIGTRAMP_INSN0)
-+    {
-+      if (buf[0] != LINUX_RT_SIGTRAMP_INSN1)
-+	return 0;
-+
-+      pc -= 2;
-+
-+      if (!safe_frame_unwind_memory (next_frame, pc, buf,
-+				     LINUX_RT_SIGTRAMP_LEN))
-+	return 0;
-+    }
-+
-+  if (memcmp (buf, linux_rt_sigtramp_code, LINUX_RT_SIGTRAMP_LEN) != 0)
-+    return 0;
-+
-+  return pc;
-+}
-+
-+/* Return whether PC is in a GNU/Linux sigtramp routine.  */
-+
-+static int
-+sh_linux_sigtramp_p (struct frame_info *this_frame)
-+{
-+  CORE_ADDR pc = get_frame_pc (this_frame);
-+  char *name;
-+
-+  find_pc_partial_function (pc, &name, NULL, NULL);
-+
-+  /* If we have NAME, we can optimize the search.  The trampolines are
-+     named __restore and __restore_rt.  However, they aren't dynamically
-+     exported from the shared C library, so the trampoline may appear to
-+     be part of the preceding function.  This should always be sigaction,
-+     __sigaction, or __libc_sigaction (all aliases to the same function).  */
-+  if (name == NULL || strstr (name, "sigaction") != NULL)
-+    return (sh_linux_sigtramp_start (this_frame) != 0
-+	    || sh_linux_rt_sigtramp_start (this_frame) != 0);
-+
-+  return (strcmp ("__restore", name) == 0
-+	  || strcmp ("__restore_rt", name) == 0);
-+}
-+
-+/* Offset to struct sigcontext in ucontext, from <asm/ucontext.h>.  */
-+#define SH_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 12
-+
-+
-+/* Assuming NEXT_FRAME is a frame following a GNU/Linux sigtramp
-+   routine, return the address of the associated sigcontext structure.  */
-+
-+static CORE_ADDR
-+sh_linux_sigcontext_addr (struct frame_info *this_frame)
-+{
-+  CORE_ADDR pc;
-+  CORE_ADDR sp;
-+
-+  sp = get_frame_register_unsigned (this_frame, SP_REGNUM);
-+
-+  pc = sh_linux_sigtramp_start (this_frame);
-+  if (pc)
-+    {
-+      return sp;
-+    }
-+
-+  pc = sh_linux_rt_sigtramp_start (this_frame);
-+  if (pc)
-+    {
-+      CORE_ADDR ucontext_addr;
-+
-+      /* The sigcontext structure is part of the user context.  A
-+	 pointer to the user context is passed as the third argument
-+	 to the signal handler.  */
-+      ucontext_addr = get_frame_register_unsigned (this_frame, ARG0_REGNUM+2);
-+      return ucontext_addr + SH_LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
-+    }
-+
-+  error ("Couldn't recognize signal trampoline.");
-+  return 0;
-+}
-+
-+/* Signal trampolines.  */
-+extern struct sh_frame_cache *sh_alloc_frame_cache (void);
-+
-+static struct sh_frame_cache *
-+sh_linux_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
-+{
-+  struct sh_frame_cache *cache;
-+  struct gdbarch_tdep *tdep = gdbarch_tdep (get_current_arch ());
-+  CORE_ADDR sigcontext_addr;
-+
-+  if (*this_cache)
-+    return *this_cache;
-+
-+  cache = sh_alloc_frame_cache ();
-+
-+  cache->base = get_frame_register_unsigned (this_frame, SP_REGNUM);
-+  sigcontext_addr = tdep->sigcontext_addr (this_frame);
-+  if (tdep->sc_reg_offset)
-+    {
-+      int i;
-+
-+      gdb_assert (tdep->sc_num_regs <= SH_NUM_REGS);
-+
-+      for (i = 0; i < tdep->sc_num_regs; i++)
-+	if (tdep->sc_reg_offset[i] != -1)
-+	  cache->saved_regs[i] = sigcontext_addr + tdep->sc_reg_offset[i];
-+    }
-+
-+  *this_cache = cache;
-+  return cache;
-+}
-+
-+static void
-+sh_linux_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_cache,
-+			     struct frame_id *this_id)
-+{
-+  struct sh_frame_cache *cache =
-+    sh_linux_sigtramp_frame_cache (this_frame, this_cache);
-+
-+  (*this_id) = frame_id_build (cache->base + 64, cache->pc);
-+}
-+
-+extern struct value * sh_frame_prev_register ();
-+static struct value *
-+sh_linux_sigtramp_frame_prev_register (struct frame_info *this_frame,
-+                   void **this_cache, int regnum)
-+{
-+  sh_linux_sigtramp_frame_cache (this_frame, this_cache);
-+
-+  return sh_frame_prev_register (this_frame, this_cache, regnum);
-+}
-+
-+static int
-+sh_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
-+                 struct frame_info *this_frame,
-+                 void **this_prologue_cache)
-+{
-+  struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
-+
-+  /* We shouldn't even bother if we don't have a sigcontext_addr
-+     handler.  */
-+  if (tdep->sigcontext_addr == NULL)
-+    return 0;
-+
-+  if (tdep->sigtramp_p != NULL)
-+    {
-+      if (tdep->sigtramp_p (this_frame))
-+    return 1;
-+    }
-+
-+  return 0;
-+}
-+
-+static const struct frame_unwind sh_linux_sigtramp_frame_unwind =
-+{
-+  SIGTRAMP_FRAME,
-+  sh_linux_sigtramp_frame_this_id,
-+  sh_linux_sigtramp_frame_prev_register,
-+  NULL,
-+  sh_linux_sigtramp_frame_sniffer
-+};
-+
-+/* Supply register REGNUM from the buffer specified by GREGS and LEN
-+   in the general-purpose register set REGSET to register cache
-+   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
-+
-+void
-+sh_supply_gregset (const struct regset *regset, struct regcache *regcache,
-+             int regnum, const void *gregs, size_t len)
-+{
-+  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+  const char *regs = gregs;
-+  int i;
-+
-+  gdb_assert (len == tdep->sizeof_gregset);
-+
-+  for (i = 0; i < tdep->gregset_num_regs; i++)
-+    {
-+      if ((regnum == i || regnum == -1)
-+      && tdep->gregset_reg_offset[i] != -1)
-+    regcache_raw_supply (regcache, i, regs + tdep->gregset_reg_offset[i]);
-+    }
-+}
-+
-+/* Collect register REGNUM from the register cache REGCACHE and store
-+   it in the buffer specified by GREGS and LEN as described by the
-+   general-purpose register set REGSET.  If REGNUM is -1, do this for
-+   all registers in REGSET.  */
-+
-+void
-+sh_collect_gregset (const struct regset *regset,
-+              const struct regcache *regcache,
-+              int regnum, void *gregs, size_t len)
-+{
-+  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+  char *regs = gregs;
-+  int i;
-+
-+  gdb_assert (len == tdep->sizeof_gregset);
-+
-+  for (i = 0; i < tdep->gregset_num_regs; i++)
-+    {
-+      if ((regnum == i || regnum == -1)
-+      && tdep->gregset_reg_offset[i] != -1)
-+    regcache_raw_collect (regcache, i, regs + tdep->gregset_reg_offset[i]);
-+    }
-+}
-+
-+/* Supply register REGNUM from the buffer specified by FPREGS and LEN
-+   in the floating-point register set REGSET to register cache
-+   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
-+
-+static void
-+sh_supply_fpregset (const struct regset *regset, struct regcache *regcache,
-+              int regnum, const void *fpregs, size_t len)
-+{
-+  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+  const char *regs = fpregs;
-+  int i;
-+
-+  gdb_assert (len == tdep->sizeof_fpregset);
-+  for (i = 0; i < 16; i++)
-+    {
-+      if (regnum == i+25 || regnum == -1)
-+    regcache_raw_supply (regcache, i+25, regs + i*4);
-+    }
-+  if (regnum == FPSCR_REGNUM || regnum == -1)
-+    regcache_raw_supply (regcache, FPSCR_REGNUM, regs + 32*4);
-+  if (regnum == FPUL_REGNUM || regnum == -1)
-+    regcache_raw_supply (regcache, FPUL_REGNUM, regs + 33*4);
-+}
-+
-+/* Collect register REGNUM from the register cache REGCACHE and store
-+   it in the buffer specified by FPREGS and LEN as described by the
-+   floating-point register set REGSET.  If REGNUM is -1, do this for
-+   all registers in REGSET.  */
-+
-+static void
-+sh_collect_fpregset (const struct regset *regset,
-+               const struct regcache *regcache,
-+               int regnum, void *fpregs, size_t len)
-+{
-+  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+  char *regs = fpregs;
-+  int i;
-+
-+  gdb_assert (len == tdep->sizeof_fpregset);
-+  for (i = 0; i < 16; i++)
-+    {
-+      if (regnum == i+25 || regnum == -1)
-+    regcache_raw_collect (regcache, i+25, regs + i*4);
-+    }
-+  if (regnum == FPSCR_REGNUM || regnum == -1)
-+    regcache_raw_collect (regcache, FPSCR_REGNUM, regs + 32*4);
-+  if (regnum == FPUL_REGNUM || regnum == -1)
-+    regcache_raw_collect (regcache, FPUL_REGNUM, regs + 33*4);
-+}
-+
-+/* Return the appropriate register set for the core section identified
-+   by SECT_NAME and SECT_SIZE.  */
-+
-+const struct regset *
-+sh_linux_regset_from_core_section (struct gdbarch *gdbarch,
-+                   const char *sect_name, size_t sect_size)
-+{
-+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-+
-+  if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
-+    {
-+      if (tdep->gregset == NULL)
-+    tdep->gregset = regset_alloc (gdbarch, sh_supply_gregset,
-+                      sh_collect_gregset);
-+      return tdep->gregset;
-+    }
-+
-+  if ((strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset))
-+    {
-+      if (tdep->fpregset == NULL)
-+    tdep->fpregset = regset_alloc (gdbarch, sh_supply_fpregset,
-+                       sh_collect_fpregset);
-+      return tdep->fpregset;
-+    }
-+
-+  return NULL;
-+}
-+
-+/* The register sets used in GNU/Linux ELF core-dumps are identical to
-+   the register sets in `struct user' that are used for a.out
-+   core-dumps.  These are also used by ptrace(2).  The corresponding
-+   types are `elf_gregset_t' for the general-purpose registers (with
-+   `elf_greg_t' the type of a single GP register) and `elf_fpregset_t'
-+   for the floating-point registers.
-+
-+   Those types used to be available under the names `gregset_t' and
-+   `fpregset_t' too, and GDB used those names in the past.  But those
-+   names are now used for the register sets used in the `mcontext_t'
-+   type, which have a different size and layout.  */
-+
-+/* Mapping between the general-purpose registers in `struct user'
-+   format and GDB's register cache layout.  */
-+
-+/* From <sys/reg.h>.  */
-+static int sh_linux_gregset_reg_offset[] =
-+{
-+ 0,	4,	8,	12,	16,	20,	24,	28,
-+ 32,	36,	40,	44,	48,	52,	56,	60,
-+
-+ REG_PC*4,   REG_PR*4,   REG_GBR*4,  -1,
-+ REG_MACH*4, REG_MACL*4, REG_SR*4,
-+};
-+
-+/* Mapping between the general-purpose registers in `struct
-+   sigcontext' format and GDB's register cache layout.  */
-+
-+/* From <asm/sigcontext.h>.  */
-+static int sh_linux_sc_reg_offset[] =
-+{
-+ 4,	8,	12,	16,	20,	24,	28,	32,
-+ 36,	40,	44,	48,	52,	56,	60,	64,
-+ 68,	72,	80,	-1,
-+ 84,	88,	76
-+};
-+
- static void
- sh_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
- {
-+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-+  bfd abfd;
-+
-+  tdep->gregset_reg_offset = sh_linux_gregset_reg_offset;
-+  tdep->gregset_num_regs = ARRAY_SIZE (sh_linux_gregset_reg_offset);
-+  tdep->sizeof_gregset = 23 * 4;
-+
-+  tdep->jb_pc_offset = 32;     /* From <bits/setjmp.h>.  */
-+
-+  tdep->sigtramp_p = sh_linux_sigtramp_p;
-+  tdep->sigcontext_addr = sh_linux_sigcontext_addr;
-+  tdep->sc_reg_offset = sh_linux_sc_reg_offset;
-+  tdep->sc_num_regs = ARRAY_SIZE (sh_linux_sc_reg_offset);
-+
-+  frame_unwind_append_unwinder(gdbarch, &sh_linux_sigtramp_frame_unwind);
-+
-+  /* If we have a register mapping, enable the generic core file
-+     support, unless it has already been enabled.  */
-+  if (tdep->gregset_reg_offset
-+      && !gdbarch_regset_from_core_section_p (gdbarch))
-+    set_gdbarch_regset_from_core_section (gdbarch,
-+                                         sh_linux_regset_from_core_section);
-+
-   linux_init_abi (info, gdbarch);
- 
-   /* GNU/Linux uses SVR4-style shared libraries.  */
-diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
-index 82cf2f4..b443e46 100644
---- a/gdb/sh-tdep.c
-+++ b/gdb/sh-tdep.c
-@@ -21,6 +21,9 @@
-    sac@cygnus.com.  */
- 
- #include "defs.h"
-+#include "arch-utils.h"
-+#include "command.h"
-+#include "dummy-frame.h"
- #include "frame.h"
- #include "frame-base.h"
- #include "frame-unwind.h"
-@@ -35,6 +38,7 @@
- #include "arch-utils.h"
- #include "floatformat.h"
- #include "regcache.h"
-+#include "regset.h"
- #include "doublest.h"
- #include "osabi.h"
- #include "reggroups.h"
-@@ -67,23 +71,6 @@ static const char *const sh_cc_enum[] = {
- 
- static const char *sh_active_calling_convention = sh_cc_gcc;
- 
--#define SH_NUM_REGS 67
--
--struct sh_frame_cache
--{
--  /* Base address.  */
--  CORE_ADDR base;
--  LONGEST sp_offset;
--  CORE_ADDR pc;
--
--  /* Flag showing that a frame has been created in the prologue code.  */
--  int uses_fp;
--
--  /* Saved registers.  */
--  CORE_ADDR saved_regs[SH_NUM_REGS];
--  CORE_ADDR saved_sp;
--};
--
- static int
- sh_is_renesas_calling_convention (struct type *func_type)
- {
-@@ -1043,7 +1030,7 @@ sh_treat_as_flt_p (struct type *type)
-     return 0;
-   /* Otherwise if the type of that member is float, the whole type is
-      treated as float.  */
--  if (TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_FLT)
-+  if (TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, 0))) == TYPE_CODE_FLT)
-     return 1;
-   /* Otherwise it's not treated as float.  */
-   return 0;
-@@ -1093,7 +1080,7 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
-      in four registers available.  Loop thru args from first to last.  */
-   for (argnum = 0; argnum < nargs; argnum++)
-     {
--      type = value_type (args[argnum]);
-+      type = check_typedef (value_type (args[argnum]));
-       len = TYPE_LENGTH (type);
-       val = sh_justify_value_in_reg (gdbarch, args[argnum], len);
- 
-@@ -1821,7 +1808,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
-     reg->how = DWARF2_FRAME_REG_UNDEFINED;
- }
- 
--static struct sh_frame_cache *
-+struct sh_frame_cache *
- sh_alloc_frame_cache (void)
- {
-   struct sh_frame_cache *cache;
-@@ -1848,7 +1835,7 @@ sh_alloc_frame_cache (void)
-   return cache;
- }
- 
--static struct sh_frame_cache *
-+struct sh_frame_cache *
- sh_frame_cache (struct frame_info *this_frame, void **this_cache)
- {
-   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-@@ -1915,9 +1902,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
-   return cache;
- }
- 
--static struct value *
--sh_frame_prev_register (struct frame_info *this_frame,
--			void **this_cache, int regnum)
-+struct value *
-+sh_frame_prev_register (struct frame_info *this_frame, void **this_cache,
-+			int regnum)
- {
-   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-   struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
-@@ -1931,7 +1918,7 @@ sh_frame_prev_register (struct frame_info *this_frame,
-      the current frame.  Frob regnum so that we pull the value from
-      the correct place.  */
-   if (regnum == gdbarch_pc_regnum (gdbarch))
--    regnum = PR_REGNUM;
-+    regnum = PR_REGNUM; /* XXX: really? */
- 
-   if (regnum < SH_NUM_REGS && cache->saved_regs[regnum] != -1)
-     return frame_unwind_got_memory (this_frame, regnum,
-@@ -2237,8 +2224,8 @@ sh_return_in_first_hidden_param_p (struct gdbarch *gdbarch,
- static struct gdbarch *
- sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
- {
--  struct gdbarch *gdbarch;
-   struct gdbarch_tdep *tdep;
-+  struct gdbarch *gdbarch;
- 
-   /* SH5 is handled entirely in sh64-tdep.c.  */
-   if (info.bfd_arch_info->mach == bfd_mach_sh5)
-@@ -2254,6 +2241,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
-   tdep = XCNEW (struct gdbarch_tdep);
-   gdbarch = gdbarch_alloc (&info, tdep);
- 
-+  /* General-purpose registers.  */
-+  tdep->gregset = NULL;
-+  tdep->gregset_reg_offset = NULL;
-+  tdep->gregset_num_regs = 23;
-+  tdep->sizeof_gregset = 0;
-+
-+  /* Floating-point registers.  */
-+  tdep->fpregset = NULL;
-+  tdep->sizeof_fpregset = 34*4;
-+
-+  tdep->jb_pc_offset = -1;
-+
-   set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
-   set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
-   set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
-@@ -2404,10 +2403,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
-       break;
-     }
- 
-+  dwarf2_append_unwinders (gdbarch);
-+
-   /* Hook in ABI-specific overrides, if they have been registered.  */
-   gdbarch_init_osabi (info, gdbarch);
- 
--  dwarf2_append_unwinders (gdbarch);
-   frame_unwind_append_unwinder (gdbarch, &sh_stub_unwind);
-   frame_unwind_append_unwinder (gdbarch, &sh_frame_unwind);
- 
-diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h
-index fc671a5..699f59f 100644
---- a/gdb/sh-tdep.h
-+++ b/gdb/sh-tdep.h
-@@ -21,6 +21,12 @@
- 
- /* Contributed by Steve Chamberlain sac@cygnus.com.  */
- 
-+struct frame_info;
-+struct gdbarch;
-+struct reggroup;
-+struct regset;
-+struct regcache;
-+
- /* Registers for all SH variants.  Used also by sh3-rom.c.  */
- enum
-   {
-@@ -29,6 +35,7 @@ enum
-     ARG0_REGNUM = 4,
-     ARGLAST_REGNUM = 7,
-     FP_REGNUM = 14,
-+    SP_REGNUM = 15,
-     PC_REGNUM = 16,
-     PR_REGNUM = 17,
-     GBR_REGNUM = 18,
-@@ -81,6 +88,24 @@ enum
-     FV0_REGNUM = 76,
-     FV_LAST_REGNUM = 79
-   };
-+#define SH_NUM_REGS 67
-+
-+struct sh_frame_cache
-+{
-+  /* Base address.  */
-+  CORE_ADDR base;
-+  LONGEST sp_offset;
-+  CORE_ADDR pc;
-+
-+  /* Flag showing that a frame has been created in the prologue code. */
-+  int uses_fp;
-+
-+  /* Saved registers.  */
-+  CORE_ADDR saved_regs[SH_NUM_REGS];
-+  CORE_ADDR saved_sp;
-+};
-+
-+extern struct sh_frame_cache *sh_frame_cache (struct frame_info *next_frame, void **this_cache);
- 
- /* This structure describes a register in a core-file.  */
- struct sh_corefile_regmap
-@@ -89,8 +114,32 @@ struct sh_corefile_regmap
-   unsigned int offset;
- };
- 
-+/* sh architecture specific information.  */
- struct gdbarch_tdep
- {
-+  /* General-purpose registers.  */
-+  struct regset *gregset;
-+  int *gregset_reg_offset;
-+  int gregset_num_regs;
-+  size_t sizeof_gregset;
-+
-+  /* Floating-point registers.  */
-+  struct regset *fpregset;
-+  size_t sizeof_fpregset;
-+
-+  /* Offset of saved PC in jmp_buf.  */
-+  int jb_pc_offset;
-+
-+  /* Detect sigtramp.  */
-+  int (*sigtramp_p) (struct frame_info *);
-+
-+  /* Get address of sigcontext for sigtramp.  */
-+  CORE_ADDR (*sigcontext_addr) (struct frame_info *);
-+
-+  /* Offset of registers in `struct sigcontext'.  */
-+  int *sc_reg_offset;
-+  int sc_num_regs;
-+
-   /* Non-NULL when debugging from a core file.  Provides the offset
-      where each general-purpose register is stored inside the associated
-      core file section.  */
-diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
-index 8854af0..ef44682 100644
---- a/gdb/testsuite/gdb.asm/asm-source.exp
-+++ b/gdb/testsuite/gdb.asm/asm-source.exp
-@@ -113,6 +113,11 @@ switch -glob -- [istarget] {
-             append link-flags " -m elf32ppc"
-         }
-     }
-+    "sh*-linux*" {
-+        set asm-arch sh-linux
-+        set asm-flags "-I${srcdir}/${subdir} -I${objdir}/${subdir}"
-+	set debug-flags "-gdwarf-2"
-+    }
-     "sh*-*-*" {
-         set asm-arch sh
- 	set debug-flags "-gdwarf-2"
-diff --git a/gdb/testsuite/gdb.asm/sh.inc b/gdb/testsuite/gdb.asm/sh.inc
-index a4a5fc5..89efed7 100644
---- a/gdb/testsuite/gdb.asm/sh.inc
-+++ b/gdb/testsuite/gdb.asm/sh.inc
-@@ -40,9 +40,8 @@
- 	mov.l   .Lconst\@,r1
- 	bra	.Lafterconst\@
- 	nop
--	nop
--.Lconst\@:
- 	.align	2
-+.Lconst\@:
- 	.long	\subr
- 	.align	1
- .Lafterconst\@:
-diff --git a/gdb/testsuite/gdb.base/annota1.c b/gdb/testsuite/gdb.base/annota1.c
-index 424e1b8..0de2e7b 100644
---- a/gdb/testsuite/gdb.base/annota1.c
-+++ b/gdb/testsuite/gdb.base/annota1.c
-@@ -1,6 +1,9 @@
- #include <stdio.h>
- #include <signal.h>
- 
-+#ifdef __sh__
-+#define signal(a,b)    /* Signals not supported on this target - make them go away */
-+#endif
- 
- void
- handle_USR1 (int sig)
-diff --git a/gdb/testsuite/gdb.base/annota3.c b/gdb/testsuite/gdb.base/annota3.c
-index 424e1b8..952aaf2 100644
---- a/gdb/testsuite/gdb.base/annota3.c
-+++ b/gdb/testsuite/gdb.base/annota3.c
-@@ -1,6 +1,10 @@
- #include <stdio.h>
- #include <signal.h>
- 
-+#ifdef __sh__
-+#define signal(a,b)    /* Signals not supported on this target - make them go away */
-+#endif
-+
- 
- void
- handle_USR1 (int sig)
-diff --git a/gdb/testsuite/gdb.base/sigall.c b/gdb/testsuite/gdb.base/sigall.c
-index 81f3b08..1574b2d 100644
---- a/gdb/testsuite/gdb.base/sigall.c
-+++ b/gdb/testsuite/gdb.base/sigall.c
-@@ -1,6 +1,9 @@
- #include <signal.h>
- #include <unistd.h>
- 
-+#ifdef __sh__
-+#define signal(a,b)    /* Signals not supported on this target - make them go away */
-+#endif
- 
- /* Signal handlers, we set breakpoints in them to make sure that the
-    signals really get delivered.  */
-diff --git a/gdb/testsuite/gdb.base/signals.c b/gdb/testsuite/gdb.base/signals.c
-index 7566068..1205a9b 100644
---- a/gdb/testsuite/gdb.base/signals.c
-+++ b/gdb/testsuite/gdb.base/signals.c
-@@ -3,6 +3,10 @@
- #include <signal.h>
- #include <unistd.h>
- 
-+#ifdef __sh__
-+#define signal(a,b)    /* Signals not supported on this target - make them go away */
-+#define alarm(a)       /* Ditto for alarm() */
-+#endif
- 
- static int count = 0;
- 
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
new file mode 100644
index 0000000..bac7939
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
@@ -0,0 +1,37 @@
+From 88e67caed662d8344c8db56176c9f1221e6cd2a2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 23 Mar 2016 06:30:09 +0000
+Subject: [PATCH 03/10] mips-linux-nat: Define _ABIO32 if not defined
+
+This helps building gdb on mips64 on musl, since
+musl does not provide sgidefs.h this define is
+only defined when GCC is using o32 ABI, in that
+case gcc emits it as built-in define and hence
+it works ok for mips32
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ gdb/mips-linux-nat.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
+index bfe9fcb..449b43a 100644
+--- a/gdb/mips-linux-nat.c
++++ b/gdb/mips-linux-nat.c
+@@ -46,6 +46,11 @@
+ #define PTRACE_GET_THREAD_AREA 25
+ #endif
+ 
++/* musl does not define and relies on compiler built-in macros for it   */
++#ifndef _ABIO32
++#define _ABIO32 1
++#endif
++
+ /* Assume that we have PTRACE_GETREGS et al. support.  If we do not,
+    we'll clear this and use PTRACE_PEEKUSER instead.  */
+ static int have_ptrace_regsets = 1;
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
new file mode 100644
index 0000000..a5fe2a2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
@@ -0,0 +1,53 @@
+From bec564eb454bc7fc6ecfcb573aa53040bf39c1d5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Apr 2016 16:46:03 +0000
+Subject: [PATCH 04/10] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC
+ systems
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/gdbserver/linux-ppc-low.c | 6 ++++++
+ gdb/nat/ppc-linux.h           | 6 ++++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
+index 2145c50..777905d 100644
+--- a/gdb/gdbserver/linux-ppc-low.c
++++ b/gdb/gdbserver/linux-ppc-low.c
+@@ -21,7 +21,13 @@
+ #include "linux-low.h"
+ 
+ #include <elf.h>
++#if !defined(__GLIBC__)
++# define pt_regs uapi_pt_regs
++#endif
+ #include <asm/ptrace.h>
++#if !defined(__GLIBC__)
++# undef pt_regs
++#endif
+ 
+ #include "nat/ppc-linux.h"
+ 
+diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h
+index 85fbcd8..cbec9c5 100644
+--- a/gdb/nat/ppc-linux.h
++++ b/gdb/nat/ppc-linux.h
+@@ -18,7 +18,13 @@
+ #ifndef PPC_LINUX_H
+ #define PPC_LINUX_H 1
+ 
++#if !defined(__GLIBC__)
++# define pt_regs uapi_pt_regs
++#endif
+ #include <asm/ptrace.h>
++#if !defined(__GLIBC__)
++# undef pt_regs
++#endif
+ #include <asm/cputable.h>
+ 
+ /* This sometimes isn't defined.  */
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch
new file mode 100644
index 0000000..8809e6f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch
@@ -0,0 +1,921 @@
+From 8c5fe58c5a0044ddb517a41b277ed27fb3d3bedc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 2 Mar 2015 02:31:12 +0000
+Subject: [PATCH 05/10] Add support for Renesas SH (sh4) architecture.
+
+gdb (7.4-1~cvs20111117.2) experimental; urgency=low
+ .
+   * Add Renesas SH (sh4) support (Closes: #576242)
+     - Thanks Nobuhiro Iwamatsu, Takashi Yoshii.
+Author: Hector Oron <zumbi@debian.org>
+Bug-Debian: http://bugs.debian.org/576242
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/Makefile.in                      |   1 +
+ gdb/configure.host                   |   1 +
+ gdb/sh-linux-tdep.c                  | 519 +++++++++++++++++++++++++++++++++++
+ gdb/sh-tdep.c                        |  54 ++--
+ gdb/sh-tdep.h                        |  49 ++++
+ gdb/testsuite/gdb.asm/asm-source.exp |   5 +
+ gdb/testsuite/gdb.asm/sh.inc         |   3 +-
+ gdb/testsuite/gdb.base/annota1.c     |   3 +
+ gdb/testsuite/gdb.base/annota3.c     |   4 +
+ gdb/testsuite/gdb.base/sigall.c      |   3 +
+ gdb/testsuite/gdb.base/signals.c     |   4 +
+ 11 files changed, 617 insertions(+), 29 deletions(-)
+
+diff --git a/gdb/Makefile.in b/gdb/Makefile.in
+index ec2af52..df8e84d 100644
+--- a/gdb/Makefile.in
++++ b/gdb/Makefile.in
+@@ -1736,6 +1736,7 @@ ALLDEPFILES = \
+ 	score-tdep.c \
+ 	ser-go32.c ser-pipe.c ser-tcp.c ser-mingw.c \
+ 	sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \
++	sh-linux-tdep.c sh-linux-nat.c \
+ 	sol2-tdep.c \
+ 	solib-svr4.c \
+ 	sparc-linux-nat.c sparc-linux-tdep.c \
+diff --git a/gdb/configure.host b/gdb/configure.host
+index ef265eb..322a1e2 100644
+--- a/gdb/configure.host
++++ b/gdb/configure.host
+@@ -149,6 +149,7 @@ powerpc*-*-linux*)	gdb_host=linux ;;
+ 
+ s390*-*-linux*)		gdb_host=linux ;;
+ 
++sh*-*-linux*)		gdb_host=linux ;;
+ sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
+ 			gdb_host=nbsd ;;
+ sh*-*-openbsd*)		gdb_host=nbsd ;;
+diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c
+index 2418d25..ac8ea9e 100644
+--- a/gdb/sh-linux-tdep.c
++++ b/gdb/sh-linux-tdep.c
+@@ -18,14 +18,37 @@
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+ 
+ #include "defs.h"
++#include "gdbcore.h"
++#include "frame.h"
++#include "frame-base.h"
++#include "frame-unwind.h"
++#include "dwarf2-frame.h"
++#include "value.h"
++#include "regcache.h"
++#include "inferior.h"
+ #include "osabi.h"
+ 
++#include "reggroups.h"
++#include "arch-utils.h"
++#include "floatformat.h"
+ #include "solib-svr4.h"
+ #include "symtab.h"
++#include "gdb_string.h"
++#include "command.h"
++#include "gdb_assert.h"
+ 
+ #include "trad-frame.h"
+ #include "tramp-frame.h"
+ 
++#include <sys/ptrace.h>
++#include <sys/types.h>
++#include <sys/param.h>
++#include <sys/user.h>
++#include <sys/syscall.h>
++
++#include <asm/ptrace.h>
++
++#include "regset.h"
+ #include "glibc-tdep.h"
+ #include "sh-tdep.h"
+ #include "linux-tdep.h"
+@@ -180,9 +203,505 @@ static struct tramp_frame sh_linux_rt_sigreturn_tramp_frame = {
+   sh_linux_rt_sigreturn_init
+ };
+ 
++/* Recognizing signal handler frames.  */
++
++/* GNU/Linux has two flavors of signals.  Normal signal handlers, and
++   "realtime" (RT) signals.  The RT signals can provide additional
++   information to the signal handler if the SA_SIGINFO flag is set
++   when establishing a signal handler using `sigaction'.  It is not
++   unlikely that future versions of GNU/Linux will support SA_SIGINFO
++   for normal signals too.  */
++
++/* When the SH Linux kernel calls a signal handler and the
++   SA_RESTORER flag isn't set, the return address points to a bit of
++   code on the stack.  This function returns whether the PC appears to
++   be within this bit of code.
++
++   The instruction sequence for normal signals is
++       mov.w  1f,r3
++       trapa  #16
++       or     r0, r0
++       or     r0, r0
++       or     r0, r0
++       or     r0, r0
++       or     r0, r0
++    1: .word  __NR_sigreturn
++   or 0x9305 0xc310 0x200b 0x200b 0x200b 0x200b 0x200b 0x0077.
++
++   Checking for the code sequence should be somewhat reliable, because
++   the effect is to call the system call sigreturn.  This is unlikely
++   to occur anywhere other than a signal trampoline.
++
++   It kind of sucks that we have to read memory from the process in
++   order to identify a signal trampoline, but there doesn't seem to be
++   any other way.  The PC_IN_SIGTRAMP macro in tm-linux.h arranges to
++   only call us if no function name could be identified, which should
++   be the case since the code is on the stack.
++
++   Detection of signal trampolines for handlers that set the
++   SA_RESTORER flag is in general not possible.  Unfortunately this is
++   what the GNU C Library has been doing for quite some time now.
++   However, as of version 2.1.2, the GNU C Library uses signal
++   trampolines (named __restore and __restore_rt) that are identical
++   to the ones used by the kernel.  Therefore, these trampolines are
++   supported too.  */
++
++#define MOVW(n)	 (0x9300|((n)-2))	/* Move mem word at PC+n to R3 */
++#define TRAP16	 0xc310			/* Syscall w/no args (NR in R3) */
++#define OR_R0_R0 0x200b			/* or r0,r0 (insert to avoid hardware bug) */
++
++#define LINUX_SIGTRAMP_INSN0	MOVW(7)		/* Move mem word at PC+7 to R3 */
++#define LINUX_SIGTRAMP_INSN1	TRAP16		/* Syscall w/no args (NR in R3) */
++#define LINUX_SIGTRAMP_INSN2	OR_R0_R0	/* or r0,r0 (insert to avoid hardware bug) */
++
++static const unsigned short linux_sigtramp_code[] =
++{
++  LINUX_SIGTRAMP_INSN0,
++  LINUX_SIGTRAMP_INSN1,
++  LINUX_SIGTRAMP_INSN2,
++  LINUX_SIGTRAMP_INSN2,
++  LINUX_SIGTRAMP_INSN2,
++  LINUX_SIGTRAMP_INSN2,
++  LINUX_SIGTRAMP_INSN2,
++  __NR_sigreturn
++};
++
++#define LINUX_SIGTRAMP_LEN (sizeof linux_sigtramp_code)
++
++/* If PC is in a sigtramp routine, return the address of the start of
++   the routine.  Otherwise, return 0.  */
++
++static CORE_ADDR
++sh_linux_sigtramp_start (struct frame_info *next_frame)
++{
++  CORE_ADDR pc = get_frame_pc (next_frame);
++  gdb_byte buf[LINUX_SIGTRAMP_LEN];
++
++  /* We only recognize a signal trampoline if PC is at the start of
++     one of the three instructions.  We optimize for finding the PC at
++     the start, as will be the case when the trampoline is not the
++     first frame on the stack.  We assume that in the case where the
++     PC is not at the start of the instruction sequence, there will be
++     a few trailing readable bytes on the stack.  */
++
++  if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_SIGTRAMP_LEN))
++    return 0;
++
++  if (buf[0] != LINUX_SIGTRAMP_INSN0)
++    {
++      if (buf[0] != LINUX_SIGTRAMP_INSN1)
++        return 0;
++
++      pc -= 2;
++
++      if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_SIGTRAMP_LEN))
++	return 0;
++    }
++
++  if (memcmp (buf, linux_sigtramp_code, LINUX_SIGTRAMP_LEN) != 0)
++    return 0;
++
++  return pc;
++}
++
++/* This function does the same for RT signals.  Here the instruction
++   sequence is
++       mov.w  1f,r3
++       trapa  #16
++       or     r0, r0
++       or     r0, r0
++       or     r0, r0
++       or     r0, r0
++       or     r0, r0
++    1: .word  __NR_rt_sigreturn
++   or 0x9305 0xc310 0x200b 0x200b 0x200b 0x200b 0x200b 0x00ad.
++
++   The effect is to call the system call rt_sigreturn.  */
++
++#define LINUX_RT_SIGTRAMP_INSN0		MOVW(7)		/* Move mem word at PC+7 to R3 */
++#define LINUX_RT_SIGTRAMP_INSN1		TRAP16		/* Syscall w/no args (NR in R3) */
++#define LINUX_RT_SIGTRAMP_INSN2		OR_R0_R0	/* or r0,r0 (insert to avoid hardware bug) */
++
++static const unsigned short linux_rt_sigtramp_code[] =
++{
++  LINUX_RT_SIGTRAMP_INSN0,
++  LINUX_RT_SIGTRAMP_INSN1,
++  LINUX_RT_SIGTRAMP_INSN2,
++  LINUX_RT_SIGTRAMP_INSN2,
++  LINUX_RT_SIGTRAMP_INSN2,
++  LINUX_RT_SIGTRAMP_INSN2,
++  LINUX_RT_SIGTRAMP_INSN2,
++  __NR_rt_sigreturn
++};
++
++#define LINUX_RT_SIGTRAMP_LEN (sizeof linux_rt_sigtramp_code)
++
++/* If PC is in a RT sigtramp routine, return the address of the start
++   of the routine.  Otherwise, return 0.  */
++
++static CORE_ADDR
++sh_linux_rt_sigtramp_start (struct frame_info *next_frame)
++{
++  CORE_ADDR pc = get_frame_pc (next_frame);
++  gdb_byte buf[LINUX_RT_SIGTRAMP_LEN];
++
++  /* We only recognize a signal trampoline if PC is at the start of
++     one of the two instructions.  We optimize for finding the PC at
++     the start, as will be the case when the trampoline is not the
++     first frame on the stack.  We assume that in the case where the
++     PC is not at the start of the instruction sequence, there will be
++     a few trailing readable bytes on the stack.  */
++
++  if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_RT_SIGTRAMP_LEN))
++    return 0;
++
++  if (buf[0] != LINUX_RT_SIGTRAMP_INSN0)
++    {
++      if (buf[0] != LINUX_RT_SIGTRAMP_INSN1)
++	return 0;
++
++      pc -= 2;
++
++      if (!safe_frame_unwind_memory (next_frame, pc, buf,
++				     LINUX_RT_SIGTRAMP_LEN))
++	return 0;
++    }
++
++  if (memcmp (buf, linux_rt_sigtramp_code, LINUX_RT_SIGTRAMP_LEN) != 0)
++    return 0;
++
++  return pc;
++}
++
++/* Return whether PC is in a GNU/Linux sigtramp routine.  */
++
++static int
++sh_linux_sigtramp_p (struct frame_info *this_frame)
++{
++  CORE_ADDR pc = get_frame_pc (this_frame);
++  char *name;
++
++  find_pc_partial_function (pc, &name, NULL, NULL);
++
++  /* If we have NAME, we can optimize the search.  The trampolines are
++     named __restore and __restore_rt.  However, they aren't dynamically
++     exported from the shared C library, so the trampoline may appear to
++     be part of the preceding function.  This should always be sigaction,
++     __sigaction, or __libc_sigaction (all aliases to the same function).  */
++  if (name == NULL || strstr (name, "sigaction") != NULL)
++    return (sh_linux_sigtramp_start (this_frame) != 0
++	    || sh_linux_rt_sigtramp_start (this_frame) != 0);
++
++  return (strcmp ("__restore", name) == 0
++	  || strcmp ("__restore_rt", name) == 0);
++}
++
++/* Offset to struct sigcontext in ucontext, from <asm/ucontext.h>.  */
++#define SH_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 12
++
++
++/* Assuming NEXT_FRAME is a frame following a GNU/Linux sigtramp
++   routine, return the address of the associated sigcontext structure.  */
++
++static CORE_ADDR
++sh_linux_sigcontext_addr (struct frame_info *this_frame)
++{
++  CORE_ADDR pc;
++  CORE_ADDR sp;
++
++  sp = get_frame_register_unsigned (this_frame, SP_REGNUM);
++
++  pc = sh_linux_sigtramp_start (this_frame);
++  if (pc)
++    {
++      return sp;
++    }
++
++  pc = sh_linux_rt_sigtramp_start (this_frame);
++  if (pc)
++    {
++      CORE_ADDR ucontext_addr;
++
++      /* The sigcontext structure is part of the user context.  A
++	 pointer to the user context is passed as the third argument
++	 to the signal handler.  */
++      ucontext_addr = get_frame_register_unsigned (this_frame, ARG0_REGNUM+2);
++      return ucontext_addr + SH_LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
++    }
++
++  error ("Couldn't recognize signal trampoline.");
++  return 0;
++}
++
++/* Signal trampolines.  */
++extern struct sh_frame_cache *sh_alloc_frame_cache (void);
++
++static struct sh_frame_cache *
++sh_linux_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
++{
++  struct sh_frame_cache *cache;
++  struct gdbarch_tdep *tdep = gdbarch_tdep (get_current_arch ());
++  CORE_ADDR sigcontext_addr;
++
++  if (*this_cache)
++    return *this_cache;
++
++  cache = sh_alloc_frame_cache ();
++
++  cache->base = get_frame_register_unsigned (this_frame, SP_REGNUM);
++  sigcontext_addr = tdep->sigcontext_addr (this_frame);
++  if (tdep->sc_reg_offset)
++    {
++      int i;
++
++      gdb_assert (tdep->sc_num_regs <= SH_NUM_REGS);
++
++      for (i = 0; i < tdep->sc_num_regs; i++)
++	if (tdep->sc_reg_offset[i] != -1)
++	  cache->saved_regs[i] = sigcontext_addr + tdep->sc_reg_offset[i];
++    }
++
++  *this_cache = cache;
++  return cache;
++}
++
++static void
++sh_linux_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_cache,
++			     struct frame_id *this_id)
++{
++  struct sh_frame_cache *cache =
++    sh_linux_sigtramp_frame_cache (this_frame, this_cache);
++
++  (*this_id) = frame_id_build (cache->base + 64, cache->pc);
++}
++
++extern struct value * sh_frame_prev_register ();
++static struct value *
++sh_linux_sigtramp_frame_prev_register (struct frame_info *this_frame,
++                   void **this_cache, int regnum)
++{
++  sh_linux_sigtramp_frame_cache (this_frame, this_cache);
++
++  return sh_frame_prev_register (this_frame, this_cache, regnum);
++}
++
++static int
++sh_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
++                 struct frame_info *this_frame,
++                 void **this_prologue_cache)
++{
++  struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
++
++  /* We shouldn't even bother if we don't have a sigcontext_addr
++     handler.  */
++  if (tdep->sigcontext_addr == NULL)
++    return 0;
++
++  if (tdep->sigtramp_p != NULL)
++    {
++      if (tdep->sigtramp_p (this_frame))
++    return 1;
++    }
++
++  return 0;
++}
++
++static const struct frame_unwind sh_linux_sigtramp_frame_unwind =
++{
++  SIGTRAMP_FRAME,
++  sh_linux_sigtramp_frame_this_id,
++  sh_linux_sigtramp_frame_prev_register,
++  NULL,
++  sh_linux_sigtramp_frame_sniffer
++};
++
++/* Supply register REGNUM from the buffer specified by GREGS and LEN
++   in the general-purpose register set REGSET to register cache
++   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
++
++void
++sh_supply_gregset (const struct regset *regset, struct regcache *regcache,
++             int regnum, const void *gregs, size_t len)
++{
++  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
++  const char *regs = gregs;
++  int i;
++
++  gdb_assert (len == tdep->sizeof_gregset);
++
++  for (i = 0; i < tdep->gregset_num_regs; i++)
++    {
++      if ((regnum == i || regnum == -1)
++      && tdep->gregset_reg_offset[i] != -1)
++    regcache_raw_supply (regcache, i, regs + tdep->gregset_reg_offset[i]);
++    }
++}
++
++/* Collect register REGNUM from the register cache REGCACHE and store
++   it in the buffer specified by GREGS and LEN as described by the
++   general-purpose register set REGSET.  If REGNUM is -1, do this for
++   all registers in REGSET.  */
++
++void
++sh_collect_gregset (const struct regset *regset,
++              const struct regcache *regcache,
++              int regnum, void *gregs, size_t len)
++{
++  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
++  char *regs = gregs;
++  int i;
++
++  gdb_assert (len == tdep->sizeof_gregset);
++
++  for (i = 0; i < tdep->gregset_num_regs; i++)
++    {
++      if ((regnum == i || regnum == -1)
++      && tdep->gregset_reg_offset[i] != -1)
++    regcache_raw_collect (regcache, i, regs + tdep->gregset_reg_offset[i]);
++    }
++}
++
++/* Supply register REGNUM from the buffer specified by FPREGS and LEN
++   in the floating-point register set REGSET to register cache
++   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
++
++static void
++sh_supply_fpregset (const struct regset *regset, struct regcache *regcache,
++              int regnum, const void *fpregs, size_t len)
++{
++  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
++  const char *regs = fpregs;
++  int i;
++
++  gdb_assert (len == tdep->sizeof_fpregset);
++  for (i = 0; i < 16; i++)
++    {
++      if (regnum == i+25 || regnum == -1)
++    regcache_raw_supply (regcache, i+25, regs + i*4);
++    }
++  if (regnum == FPSCR_REGNUM || regnum == -1)
++    regcache_raw_supply (regcache, FPSCR_REGNUM, regs + 32*4);
++  if (regnum == FPUL_REGNUM || regnum == -1)
++    regcache_raw_supply (regcache, FPUL_REGNUM, regs + 33*4);
++}
++
++/* Collect register REGNUM from the register cache REGCACHE and store
++   it in the buffer specified by FPREGS and LEN as described by the
++   floating-point register set REGSET.  If REGNUM is -1, do this for
++   all registers in REGSET.  */
++
++static void
++sh_collect_fpregset (const struct regset *regset,
++               const struct regcache *regcache,
++               int regnum, void *fpregs, size_t len)
++{
++  const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
++  char *regs = fpregs;
++  int i;
++
++  gdb_assert (len == tdep->sizeof_fpregset);
++  for (i = 0; i < 16; i++)
++    {
++      if (regnum == i+25 || regnum == -1)
++    regcache_raw_collect (regcache, i+25, regs + i*4);
++    }
++  if (regnum == FPSCR_REGNUM || regnum == -1)
++    regcache_raw_collect (regcache, FPSCR_REGNUM, regs + 32*4);
++  if (regnum == FPUL_REGNUM || regnum == -1)
++    regcache_raw_collect (regcache, FPUL_REGNUM, regs + 33*4);
++}
++
++/* Return the appropriate register set for the core section identified
++   by SECT_NAME and SECT_SIZE.  */
++
++const struct regset *
++sh_linux_regset_from_core_section (struct gdbarch *gdbarch,
++                   const char *sect_name, size_t sect_size)
++{
++  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
++
++  if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
++    {
++      if (tdep->gregset == NULL)
++    tdep->gregset = regset_alloc (gdbarch, sh_supply_gregset,
++                      sh_collect_gregset);
++      return tdep->gregset;
++    }
++
++  if ((strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset))
++    {
++      if (tdep->fpregset == NULL)
++    tdep->fpregset = regset_alloc (gdbarch, sh_supply_fpregset,
++                       sh_collect_fpregset);
++      return tdep->fpregset;
++    }
++
++  return NULL;
++}
++
++/* The register sets used in GNU/Linux ELF core-dumps are identical to
++   the register sets in `struct user' that are used for a.out
++   core-dumps.  These are also used by ptrace(2).  The corresponding
++   types are `elf_gregset_t' for the general-purpose registers (with
++   `elf_greg_t' the type of a single GP register) and `elf_fpregset_t'
++   for the floating-point registers.
++
++   Those types used to be available under the names `gregset_t' and
++   `fpregset_t' too, and GDB used those names in the past.  But those
++   names are now used for the register sets used in the `mcontext_t'
++   type, which have a different size and layout.  */
++
++/* Mapping between the general-purpose registers in `struct user'
++   format and GDB's register cache layout.  */
++
++/* From <sys/reg.h>.  */
++static int sh_linux_gregset_reg_offset[] =
++{
++ 0,	4,	8,	12,	16,	20,	24,	28,
++ 32,	36,	40,	44,	48,	52,	56,	60,
++
++ REG_PC*4,   REG_PR*4,   REG_GBR*4,  -1,
++ REG_MACH*4, REG_MACL*4, REG_SR*4,
++};
++
++/* Mapping between the general-purpose registers in `struct
++   sigcontext' format and GDB's register cache layout.  */
++
++/* From <asm/sigcontext.h>.  */
++static int sh_linux_sc_reg_offset[] =
++{
++ 4,	8,	12,	16,	20,	24,	28,	32,
++ 36,	40,	44,	48,	52,	56,	60,	64,
++ 68,	72,	80,	-1,
++ 84,	88,	76
++};
++
+ static void
+ sh_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+ {
++  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
++  bfd abfd;
++
++  tdep->gregset_reg_offset = sh_linux_gregset_reg_offset;
++  tdep->gregset_num_regs = ARRAY_SIZE (sh_linux_gregset_reg_offset);
++  tdep->sizeof_gregset = 23 * 4;
++
++  tdep->jb_pc_offset = 32;     /* From <bits/setjmp.h>.  */
++
++  tdep->sigtramp_p = sh_linux_sigtramp_p;
++  tdep->sigcontext_addr = sh_linux_sigcontext_addr;
++  tdep->sc_reg_offset = sh_linux_sc_reg_offset;
++  tdep->sc_num_regs = ARRAY_SIZE (sh_linux_sc_reg_offset);
++
++  frame_unwind_append_unwinder(gdbarch, &sh_linux_sigtramp_frame_unwind);
++
++  /* If we have a register mapping, enable the generic core file
++     support, unless it has already been enabled.  */
++  if (tdep->gregset_reg_offset
++      && !gdbarch_regset_from_core_section_p (gdbarch))
++    set_gdbarch_regset_from_core_section (gdbarch,
++                                         sh_linux_regset_from_core_section);
++
+   linux_init_abi (info, gdbarch);
+ 
+   /* GNU/Linux uses SVR4-style shared libraries.  */
+diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
+index 336b48e..847b271 100644
+--- a/gdb/sh-tdep.c
++++ b/gdb/sh-tdep.c
+@@ -21,6 +21,9 @@
+    sac@cygnus.com.  */
+ 
+ #include "defs.h"
++#include "arch-utils.h"
++#include "command.h"
++#include "dummy-frame.h"
+ #include "frame.h"
+ #include "frame-base.h"
+ #include "frame-unwind.h"
+@@ -35,6 +38,7 @@
+ #include "arch-utils.h"
+ #include "floatformat.h"
+ #include "regcache.h"
++#include "regset.h"
+ #include "doublest.h"
+ #include "osabi.h"
+ #include "reggroups.h"
+@@ -67,23 +71,6 @@ static const char *const sh_cc_enum[] = {
+ 
+ static const char *sh_active_calling_convention = sh_cc_gcc;
+ 
+-#define SH_NUM_REGS 67
+-
+-struct sh_frame_cache
+-{
+-  /* Base address.  */
+-  CORE_ADDR base;
+-  LONGEST sp_offset;
+-  CORE_ADDR pc;
+-
+-  /* Flag showing that a frame has been created in the prologue code.  */
+-  int uses_fp;
+-
+-  /* Saved registers.  */
+-  CORE_ADDR saved_regs[SH_NUM_REGS];
+-  CORE_ADDR saved_sp;
+-};
+-
+ static int
+ sh_is_renesas_calling_convention (struct type *func_type)
+ {
+@@ -1043,7 +1030,7 @@ sh_treat_as_flt_p (struct type *type)
+     return 0;
+   /* Otherwise if the type of that member is float, the whole type is
+      treated as float.  */
+-  if (TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_FLT)
++  if (TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, 0))) == TYPE_CODE_FLT)
+     return 1;
+   /* Otherwise it's not treated as float.  */
+   return 0;
+@@ -1093,7 +1080,7 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
+      in four registers available.  Loop thru args from first to last.  */
+   for (argnum = 0; argnum < nargs; argnum++)
+     {
+-      type = value_type (args[argnum]);
++      type = check_typedef (value_type (args[argnum]));
+       len = TYPE_LENGTH (type);
+       val = sh_justify_value_in_reg (gdbarch, args[argnum], len);
+ 
+@@ -1821,7 +1808,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
+     reg->how = DWARF2_FRAME_REG_UNDEFINED;
+ }
+ 
+-static struct sh_frame_cache *
++struct sh_frame_cache *
+ sh_alloc_frame_cache (void)
+ {
+   struct sh_frame_cache *cache;
+@@ -1848,7 +1835,7 @@ sh_alloc_frame_cache (void)
+   return cache;
+ }
+ 
+-static struct sh_frame_cache *
++struct sh_frame_cache *
+ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
+ {
+   struct gdbarch *gdbarch = get_frame_arch (this_frame);
+@@ -1915,9 +1902,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
+   return cache;
+ }
+ 
+-static struct value *
+-sh_frame_prev_register (struct frame_info *this_frame,
+-			void **this_cache, int regnum)
++struct value *
++sh_frame_prev_register (struct frame_info *this_frame, void **this_cache,
++			int regnum)
+ {
+   struct gdbarch *gdbarch = get_frame_arch (this_frame);
+   struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
+@@ -1931,7 +1918,7 @@ sh_frame_prev_register (struct frame_info *this_frame,
+      the current frame.  Frob regnum so that we pull the value from
+      the correct place.  */
+   if (regnum == gdbarch_pc_regnum (gdbarch))
+-    regnum = PR_REGNUM;
++    regnum = PR_REGNUM; /* XXX: really? */
+ 
+   if (regnum < SH_NUM_REGS && cache->saved_regs[regnum] != -1)
+     return frame_unwind_got_memory (this_frame, regnum,
+@@ -2240,8 +2227,8 @@ sh_return_in_first_hidden_param_p (struct gdbarch *gdbarch,
+ static struct gdbarch *
+ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+ {
+-  struct gdbarch *gdbarch;
+   struct gdbarch_tdep *tdep;
++  struct gdbarch *gdbarch;
+ 
+   /* SH5 is handled entirely in sh64-tdep.c.  */
+   if (info.bfd_arch_info->mach == bfd_mach_sh5)
+@@ -2257,6 +2244,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+   tdep = XCNEW (struct gdbarch_tdep);
+   gdbarch = gdbarch_alloc (&info, tdep);
+ 
++  /* General-purpose registers.  */
++  tdep->gregset = NULL;
++  tdep->gregset_reg_offset = NULL;
++  tdep->gregset_num_regs = 23;
++  tdep->sizeof_gregset = 0;
++
++  /* Floating-point registers.  */
++  tdep->fpregset = NULL;
++  tdep->sizeof_fpregset = 34*4;
++
++  tdep->jb_pc_offset = -1;
++
+   set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
+   set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
+   set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
+@@ -2407,10 +2406,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+       break;
+     }
+ 
++  dwarf2_append_unwinders (gdbarch);
++
+   /* Hook in ABI-specific overrides, if they have been registered.  */
+   gdbarch_init_osabi (info, gdbarch);
+ 
+-  dwarf2_append_unwinders (gdbarch);
+   frame_unwind_append_unwinder (gdbarch, &sh_stub_unwind);
+   frame_unwind_append_unwinder (gdbarch, &sh_frame_unwind);
+ 
+diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h
+index 666968f..62c65b5 100644
+--- a/gdb/sh-tdep.h
++++ b/gdb/sh-tdep.h
+@@ -21,6 +21,12 @@
+ 
+ /* Contributed by Steve Chamberlain sac@cygnus.com.  */
+ 
++struct frame_info;
++struct gdbarch;
++struct reggroup;
++struct regset;
++struct regcache;
++
+ /* Registers for all SH variants.  Used also by sh3-rom.c.  */
+ enum
+   {
+@@ -29,6 +35,7 @@ enum
+     ARG0_REGNUM = 4,
+     ARGLAST_REGNUM = 7,
+     FP_REGNUM = 14,
++    SP_REGNUM = 15,
+     PC_REGNUM = 16,
+     PR_REGNUM = 17,
+     GBR_REGNUM = 18,
+@@ -81,6 +88,24 @@ enum
+     FV0_REGNUM = 76,
+     FV_LAST_REGNUM = 79
+   };
++#define SH_NUM_REGS 67
++
++struct sh_frame_cache
++{
++  /* Base address.  */
++  CORE_ADDR base;
++  LONGEST sp_offset;
++  CORE_ADDR pc;
++
++  /* Flag showing that a frame has been created in the prologue code. */
++  int uses_fp;
++
++  /* Saved registers.  */
++  CORE_ADDR saved_regs[SH_NUM_REGS];
++  CORE_ADDR saved_sp;
++};
++
++extern struct sh_frame_cache *sh_frame_cache (struct frame_info *next_frame, void **this_cache);
+ 
+ /* This structure describes a register in a core-file.  */
+ struct sh_corefile_regmap
+@@ -89,8 +114,32 @@ struct sh_corefile_regmap
+   unsigned int offset;
+ };
+ 
++/* sh architecture specific information.  */
+ struct gdbarch_tdep
+ {
++  /* General-purpose registers.  */
++  struct regset *gregset;
++  int *gregset_reg_offset;
++  int gregset_num_regs;
++  size_t sizeof_gregset;
++
++  /* Floating-point registers.  */
++  struct regset *fpregset;
++  size_t sizeof_fpregset;
++
++  /* Offset of saved PC in jmp_buf.  */
++  int jb_pc_offset;
++
++  /* Detect sigtramp.  */
++  int (*sigtramp_p) (struct frame_info *);
++
++  /* Get address of sigcontext for sigtramp.  */
++  CORE_ADDR (*sigcontext_addr) (struct frame_info *);
++
++  /* Offset of registers in `struct sigcontext'.  */
++  int *sc_reg_offset;
++  int sc_num_regs;
++
+   /* Non-NULL when debugging from a core file.  Provides the offset
+      where each general-purpose register is stored inside the associated
+      core file section.  */
+diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
+index 6d9aef8..5b66b42 100644
+--- a/gdb/testsuite/gdb.asm/asm-source.exp
++++ b/gdb/testsuite/gdb.asm/asm-source.exp
+@@ -116,6 +116,11 @@ switch -glob -- [istarget] {
+             append link-flags " -m elf32ppc"
+         }
+     }
++    "sh*-linux*" {
++        set asm-arch sh-linux
++        set asm-flags "-I${srcdir}/${subdir} -I${objdir}/${subdir}"
++	set debug-flags "-gdwarf-2"
++    }
+     "sh*-*-*" {
+         set asm-arch sh
+ 	set debug-flags "-gdwarf-2"
+diff --git a/gdb/testsuite/gdb.asm/sh.inc b/gdb/testsuite/gdb.asm/sh.inc
+index a4a5fc5..89efed7 100644
+--- a/gdb/testsuite/gdb.asm/sh.inc
++++ b/gdb/testsuite/gdb.asm/sh.inc
+@@ -40,9 +40,8 @@
+ 	mov.l   .Lconst\@,r1
+ 	bra	.Lafterconst\@
+ 	nop
+-	nop
+-.Lconst\@:
+ 	.align	2
++.Lconst\@:
+ 	.long	\subr
+ 	.align	1
+ .Lafterconst\@:
+diff --git a/gdb/testsuite/gdb.base/annota1.c b/gdb/testsuite/gdb.base/annota1.c
+index 424e1b8..0de2e7b 100644
+--- a/gdb/testsuite/gdb.base/annota1.c
++++ b/gdb/testsuite/gdb.base/annota1.c
+@@ -1,6 +1,9 @@
+ #include <stdio.h>
+ #include <signal.h>
+ 
++#ifdef __sh__
++#define signal(a,b)    /* Signals not supported on this target - make them go away */
++#endif
+ 
+ void
+ handle_USR1 (int sig)
+diff --git a/gdb/testsuite/gdb.base/annota3.c b/gdb/testsuite/gdb.base/annota3.c
+index 424e1b8..952aaf21 100644
+--- a/gdb/testsuite/gdb.base/annota3.c
++++ b/gdb/testsuite/gdb.base/annota3.c
+@@ -1,6 +1,10 @@
+ #include <stdio.h>
+ #include <signal.h>
+ 
++#ifdef __sh__
++#define signal(a,b)    /* Signals not supported on this target - make them go away */
++#endif
++
+ 
+ void
+ handle_USR1 (int sig)
+diff --git a/gdb/testsuite/gdb.base/sigall.c b/gdb/testsuite/gdb.base/sigall.c
+index 81f3b08..1574b2d 100644
+--- a/gdb/testsuite/gdb.base/sigall.c
++++ b/gdb/testsuite/gdb.base/sigall.c
+@@ -1,6 +1,9 @@
+ #include <signal.h>
+ #include <unistd.h>
+ 
++#ifdef __sh__
++#define signal(a,b)    /* Signals not supported on this target - make them go away */
++#endif
+ 
+ /* Signal handlers, we set breakpoints in them to make sure that the
+    signals really get delivered.  */
+diff --git a/gdb/testsuite/gdb.base/signals.c b/gdb/testsuite/gdb.base/signals.c
+index 7566068..1205a9b 100644
+--- a/gdb/testsuite/gdb.base/signals.c
++++ b/gdb/testsuite/gdb.base/signals.c
+@@ -3,6 +3,10 @@
+ #include <signal.h>
+ #include <unistd.h>
+ 
++#ifdef __sh__
++#define signal(a,b)    /* Signals not supported on this target - make them go away */
++#define alarm(a)       /* Ditto for alarm() */
++#endif
+ 
+ static int count = 0;
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch
new file mode 100644
index 0000000..394d26d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch
@@ -0,0 +1,50 @@
+From f3932cb2960fd54655a448b13d5a5b80f356f8de Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Apr 2016 15:25:03 -0700
+Subject: [PATCH 06/10] Dont disable libreadline.a when using --disable-static
+
+If gdb is configured with --disable-static then this is dutifully passed to
+readline which then disables libreadline.a, which causes a problem when gdb
+tries to link against that.
+
+To ensure that readline always builds static libraries, pass --enable-static to
+the sub-configure.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.def | 3 ++-
+ Makefile.in  | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.def b/Makefile.def
+index ea8453e..0fc66c6 100644
+--- a/Makefile.def
++++ b/Makefile.def
+@@ -104,7 +104,8 @@ host_modules= { module= libiconv;
+ 		missing= install-html;
+ 		missing= install-info; };
+ host_modules= { module= m4; };
+-host_modules= { module= readline; };
++host_modules= { module= readline;
++                extra_configure_flags='--enable-static';};
+ host_modules= { module= sid; };
+ host_modules= { module= sim; };
+ host_modules= { module= texinfo; no_install= true; };
+diff --git a/Makefile.in b/Makefile.in
+index 2733c4d..3e04e80 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -25380,7 +25380,7 @@ configure-readline:
+ 	  $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+-	  --target=${target_alias}  \
++	  --target=${target_alias} --enable-static \
+ 	  || exit 1
+ @endif readline
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch
new file mode 100644
index 0000000..f32f8ee
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch
@@ -0,0 +1,36 @@
+From 048675a915a72989f2613386975730da016e7c5d Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <amccurdy@gmail.com>
+Date: Sat, 30 Apr 2016 15:29:06 -0700
+Subject: [PATCH 07/10] use <asm/sgidefs.h>
+
+Build fix for MIPS with musl libc
+
+The MIPS specific header <sgidefs.h> is provided by glibc and uclibc
+but not by musl. Regardless of the libc, the kernel headers provide
+<asm/sgidefs.h> which provides the same definitions, so use that
+instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/mips-linux-nat.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
+index 449b43a..09603da 100644
+--- a/gdb/mips-linux-nat.c
++++ b/gdb/mips-linux-nat.c
+@@ -31,7 +31,7 @@
+ #include "gdb_proc_service.h"
+ #include "gregset.h"
+ 
+-#include <sgidefs.h>
++#include <asm/sgidefs.h>
+ #include "nat/gdb_ptrace.h"
+ #include <asm/ptrace.h>
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch
new file mode 100644
index 0000000..7e58b61
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch
@@ -0,0 +1,50 @@
+From e54ead9d81f4d38412751b815f909db3cb144bb1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Apr 2016 15:31:40 -0700
+Subject: [PATCH 08/10] Use exorted definitions of SIGRTMIN
+
+Define W_STOPCODE if not defined already
+
+__SIGRTMIN is internal to glibc and other libcs e.g. musl
+may not provide them
+
+Fixes
+https://sourceware.org/bugzilla/show_bug.cgi?id=13012
+
+Upstream-Status: Submitted
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/linux-nat.c     | 4 ++--
+ gdb/nat/linux-nat.h | 4 ++++
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
+index 0829bcb..3b8a896 100644
+--- a/gdb/linux-nat.c
++++ b/gdb/linux-nat.c
+@@ -4845,6 +4845,6 @@ lin_thread_get_thread_signals (sigset_t *set)
+   /* NPTL reserves the first two RT signals, but does not provide any
+      way for the debugger to query the signal numbers - fortunately
+      they don't change.  */
+-  sigaddset (set, __SIGRTMIN);
+-  sigaddset (set, __SIGRTMIN + 1);
++  sigaddset (set, SIGRTMIN);
++  sigaddset (set, SIGRTMIN + 1);
+ }
+diff --git a/gdb/nat/linux-nat.h b/gdb/nat/linux-nat.h
+index 2b485db..d058afc 100644
+--- a/gdb/nat/linux-nat.h
++++ b/gdb/nat/linux-nat.h
+@@ -85,4 +85,8 @@ extern enum target_stop_reason lwp_stop_reason (struct lwp_info *lwp);
+ 
+ extern void linux_stop_lwp (struct lwp_info *lwp);
+ 
++#ifndef W_STOPCODE
++#define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
++#endif
++
+ #endif /* LINUX_NAT_H */
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch
new file mode 100644
index 0000000..a230047
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch
@@ -0,0 +1,34 @@
+From ba0bbf887d4911ccee9df57cb13eafb1de34bb31 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Apr 2016 15:35:39 -0700
+Subject: [PATCH 09/10] Change order of CFLAGS
+
+Lets us override Werror if need be
+
+Upstream-Status: Inappropriate
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/gdbserver/Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
+index 1e874e3..91e8550 100644
+--- a/gdb/gdbserver/Makefile.in
++++ b/gdb/gdbserver/Makefile.in
+@@ -138,10 +138,10 @@ CXXFLAGS = @CXXFLAGS@
+ CPPFLAGS = @CPPFLAGS@
+ 
+ # INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
+-INTERNAL_CFLAGS_BASE =  ${COMPILER_CFLAGS} ${GLOBAL_CFLAGS} \
++INTERNAL_CFLAGS_BASE =  ${GLOBAL_CFLAGS} \
+ 	${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS}
+ INTERNAL_WARN_CFLAGS =  ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
+-INTERNAL_CFLAGS =  ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
++INTERNAL_CFLAGS =  ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) ${COMPILER_CFLAGS} -DGDBSERVER
+ 
+ # LDFLAGS is specifically reserved for setting from the command line
+ # when running make.
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch
new file mode 100644
index 0000000..16c34c7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch
@@ -0,0 +1,48 @@
+From 5a9ccb8c0728b658fc4f7f0f7b36873c64274f10 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 10 May 2016 08:47:05 -0700
+Subject: [PATCH 10/10] resolve restrict keyword conflict
+
+GCC detects that we call 'restrict' as param name in function
+signatures and complains since both params are called 'restrict'
+therefore we use __restrict to denote the C99 keywork
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdb/gnulib/import/sys_time.in.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gdb/gnulib/import/sys_time.in.h b/gdb/gnulib/import/sys_time.in.h
+index c556c5d..2a6107f 100644
+--- a/gdb/gnulib/import/sys_time.in.h
++++ b/gdb/gnulib/import/sys_time.in.h
+@@ -93,20 +93,20 @@ struct timeval
+ #   define gettimeofday rpl_gettimeofday
+ #  endif
+ _GL_FUNCDECL_RPL (gettimeofday, int,
+-                  (struct timeval *restrict, void *restrict)
++                  (struct timeval *__restrict, void *__restrict)
+                   _GL_ARG_NONNULL ((1)));
+ _GL_CXXALIAS_RPL (gettimeofday, int,
+-                  (struct timeval *restrict, void *restrict));
++                  (struct timeval *__restrict, void *__restrict));
+ # else
+ #  if !@HAVE_GETTIMEOFDAY@
+ _GL_FUNCDECL_SYS (gettimeofday, int,
+-                  (struct timeval *restrict, void *restrict)
++                  (struct timeval *__restrict, void *__restrict)
+                   _GL_ARG_NONNULL ((1)));
+ #  endif
+ /* Need to cast, because on glibc systems, by default, the second argument is
+                                                   struct timezone *.  */
+ _GL_CXXALIAS_SYS_CAST (gettimeofday, int,
+-                       (struct timeval *restrict, void *restrict));
++                       (struct timeval *__restrict, void *__restrict));
+ # endif
+ _GL_CXXALIASWARN (gettimeofday);
+ #elif defined GNULIB_POSIXCHECK
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0011-avx_mpx.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0011-avx_mpx.patch
new file mode 100644
index 0000000..209c4fc
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/0011-avx_mpx.patch
@@ -0,0 +1,2601 @@
+gdb: Backport patch to support changes with AVX and MPX
+
+The current MPX target descriptions assume that MPX is always combined
+with AVX, however that's not correct.  We can have machines with MPX
+and without AVX; or machines with AVX and without MPX.
+
+This patch adds new target descriptions for machines that support
+both MPX and AVX, as duplicates of the existing MPX descriptions.
+
+The following commit will remove AVX from the MPX-only descriptions.
+
+Upstream-Status: Backport
+
+Signed-off-by: bavery <brian.avery@intel.com>
+
+
+Orignal patch changelog and author attribution:
+
+2016-04-16  Walfred Tedeschi  <walfred.tedeschi@intel.com>
+
+gdb/ChangeLog:
+
+	* amd64-linux-tdep.c (features/i386/amd64-avx-mpx-linux.c):
+	New include.
+	(amd64_linux_core_read_description): Add case for
+	 X86_XSTATE_AVX_MPX_MASK.
+	(_initialize_amd64_linux_tdep): Call initialize_tdesc_amd64_avx_mpx_linux.
+	* amd64-linux-tdep.h (tdesc_amd64_avx_mpx_linux): New definition.
+	* amd64-tdep.c (features/i386/amd64-avx-mpx.c): New include.
+	(amd64_target_description): Add case for  X86_XSTATE_AVX_MPX_MASK.
+	(_initialize_amd64_tdep): Call initialize_tdesc_amd64_avx_mpx.
+	* common/x86-xstate.h (X86_XSTATE_MPX_MASK): Remove AVX bits.
+	(X86_XSTATE_AVX_MPX_MASK): New case.
+	* features/Makefile (i386/i386-avx-mpx, i386/i386-avx-mpx-linux)
+	(i386/amd64-avx-mpx, i386/amd64-avx-mpx-linux): New rules.
+	(i386/i386-avx-mpx-expedite, i386/i386-avx-mpx-linux-expedite)
+	(i386/amd64-avx-mpx-expedite, i386/amd64-avx-mpx-linux-expedite):
+	New expedites.
+	* i386-linux-tdep.c (features/i386/i386-avx-mpx-linux.c): New
+	include.
+	(i386_linux_core_read_description): Add case
+	X86_XSTATE_AVX_MPX_MASK.
+	(_initialize_i386_linux_tdep): Call
+	initialize_tdesc_i386_avx_mpx_linux.
+	* i386-linux-tdep.h (tdesc_i386_avx_mpx_linux): New include.
+	* i386-tdep.c (features/i386/i386-avx-mpx.c): New include.
+	(i386_target_description): Add case for X86_XSTATE_AVX_MPX_MASK.
+	* x86-linux-nat.c (x86_linux_read_description): Add case for
+	X86_XSTATE_AVX_MPX_MASK.
+	* features/i386/amd64-avx-mpx-linux.xml: New file.
+	* features/i386/i386-avx-mpx-linux.xml: New file.
+	* features/i386/i386-avx-mpx.xml: New file.
+	* features/i386/amd64-avx-mpx.xml: New file.
+	* features/i386/amd64-avx-mpx-linux.c: Generated.
+	* features/i386/amd64-avx-mpx.c: Generated.
+	* features/i386/i386-avx-mpx-linux.c: Generated.
+	* features/i386/i386-avx-mpx.c: Generated.
+	* regformats/i386/amd64-avx-mpx-linux.dat: Generated.
+	* regformats/i386/amd64-avx-mpx.dat: Generated.
+	* regformats/i386/i386-avx-mpx-linux.dat: Generated.
+	* regformats/i386/i386-avx-mpx.dat: Generated.
+
+gdb/gdbserver/ChangeLog:
+
+	* Makefile.in (clean): Add removal for i386-avx-mpx.c,
+	i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c.
+	(i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c)
+	(amd64-avx-mpx-linux.c): New rules.
+	(amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule.
+	* configure.srv (srv_i386_regobj): Add i386-avx-mpx.o.
+	(srv_i386_linux_regobj): Add i386-avx-mpx-linux.o.
+	(srv_amd64_regobj): Add amd64-avx-mpx.o.
+	(srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o.
+	(srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml.
+	(srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml.
+	(srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml.
+	(srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml.
+	(ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o.
+	(ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o.
+	* linux-x86-low.c (x86_linux_read_description): Add case for
+	X86_XSTATE_AVX_MPX_MASK.
+	(x86_get_ipa_tdesc_idx): Add cases for avx_mpx.
+	(initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and
+	init_registers_i386_avx_mpx_linux.
+	* linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx.
+	(initialize_low_tracepoint): Call
+	init_registers_i386_avx_mpx_linux.
+	* linux-amd64-ipa.c (get_ipa_tdesc):  Add case for avx_mpx.
+	(initialize_low_tracepoint): Call
+	init_registers_amd64_avx_mpx_linux.
+	* linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value.
+	(init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux)
+	(init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New
+	declarations.
+
+
+
+
+diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
+index 21bcd99..5327f7c 100644
+--- a/gdb/amd64-linux-tdep.c
++++ b/gdb/amd64-linux-tdep.c
+@@ -43,6 +43,7 @@
+ #include "features/i386/amd64-linux.c"
+ #include "features/i386/amd64-avx-linux.c"
+ #include "features/i386/amd64-mpx-linux.c"
++#include "features/i386/amd64-avx-mpx-linux.c"
+ #include "features/i386/amd64-avx512-linux.c"
+
+ #include "features/i386/x32-linux.c"
+@@ -1590,6 +1591,11 @@ amd64_linux_core_read_description (struct gdbarch *gdbarch,
+ 	return tdesc_x32_avx_linux;  /* No x32 MPX falling back to AVX.  */
+       else
+ 	return tdesc_amd64_mpx_linux;
++    case X86_XSTATE_AVX_MPX_MASK:
++      if (gdbarch_ptr_bit (gdbarch) == 32)
++	return tdesc_x32_avx_linux;  /* No x32 MPX falling back to AVX.  */
++      else
++	return tdesc_amd64_avx_mpx_linux;
+     case X86_XSTATE_AVX_MASK:
+       if (gdbarch_ptr_bit (gdbarch) == 32)
+ 	return tdesc_x32_avx_linux;
+@@ -2285,6 +2291,7 @@ _initialize_amd64_linux_tdep (void)
+   initialize_tdesc_amd64_linux ();
+   initialize_tdesc_amd64_avx_linux ();
+   initialize_tdesc_amd64_mpx_linux ();
++  initialize_tdesc_amd64_avx_mpx_linux ();
+   initialize_tdesc_amd64_avx512_linux ();
+
+   initialize_tdesc_x32_linux ();
+diff --git a/gdb/amd64-linux-tdep.h b/gdb/amd64-linux-tdep.h
+index 8673442..d64d5d6 100644
+--- a/gdb/amd64-linux-tdep.h
++++ b/gdb/amd64-linux-tdep.h
+@@ -35,6 +35,7 @@
+ extern struct target_desc *tdesc_amd64_linux;
+ extern struct target_desc *tdesc_amd64_avx_linux;
+ extern struct target_desc *tdesc_amd64_mpx_linux;
++extern struct target_desc *tdesc_amd64_avx_mpx_linux;
+ extern struct target_desc *tdesc_amd64_avx512_linux;
+
+ extern struct target_desc *tdesc_x32_linux;
+diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
+index fae92b2..88e3bf8 100644
+--- a/gdb/amd64-tdep.c
++++ b/gdb/amd64-tdep.c
+@@ -44,6 +44,7 @@
+ #include "features/i386/amd64.c"
+ #include "features/i386/amd64-avx.c"
+ #include "features/i386/amd64-mpx.c"
++#include "features/i386/amd64-avx-mpx.c"
+ #include "features/i386/amd64-avx512.c"
+
+ #include "features/i386/x32.c"
+@@ -3132,6 +3133,8 @@ amd64_target_description (uint64_t xcr0)
+       return tdesc_amd64_avx512;
+     case X86_XSTATE_MPX_MASK:
+       return tdesc_amd64_mpx;
++    case X86_XSTATE_AVX_MPX_MASK:
++      return tdesc_amd64_avx_mpx;
+     case X86_XSTATE_AVX_MASK:
+       return tdesc_amd64_avx;
+     default:
+@@ -3148,6 +3151,7 @@ _initialize_amd64_tdep (void)
+   initialize_tdesc_amd64 ();
+   initialize_tdesc_amd64_avx ();
+   initialize_tdesc_amd64_mpx ();
++  initialize_tdesc_amd64_avx_mpx ();
+   initialize_tdesc_amd64_avx512 ();
+
+   initialize_tdesc_x32 ();
+diff --git a/gdb/common/x86-xstate.h b/gdb/common/x86-xstate.h
+index 8386420..0aa9164 100644
+--- a/gdb/common/x86-xstate.h
++++ b/gdb/common/x86-xstate.h
+@@ -39,9 +39,10 @@
+ #define X86_XSTATE_X87_MASK	X86_XSTATE_X87
+ #define X86_XSTATE_SSE_MASK	(X86_XSTATE_X87 | X86_XSTATE_SSE)
+ #define X86_XSTATE_AVX_MASK	(X86_XSTATE_SSE_MASK | X86_XSTATE_AVX)
+-#define X86_XSTATE_MPX_MASK	(X86_XSTATE_AVX_MASK | X86_XSTATE_MPX)
++#define X86_XSTATE_MPX_MASK	(X86_XSTATE_SSE_MASK | X86_XSTATE_MPX)
++#define X86_XSTATE_AVX_MPX_MASK	(X86_XSTATE_AVX_MASK | X86_XSTATE_MPX)
+ #define X86_XSTATE_AVX512_MASK	(X86_XSTATE_AVX_MASK | X86_XSTATE_AVX512)
+-#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_MPX_MASK | X86_XSTATE_AVX512)
++#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_AVX_MPX_MASK | X86_XSTATE_AVX512)
+
+ #define X86_XSTATE_ALL_MASK	(X86_XSTATE_MPX_AVX512_MASK)
+
+diff --git a/gdb/features/Makefile b/gdb/features/Makefile
+index 10173cf..e5c5154 100644
+--- a/gdb/features/Makefile
++++ b/gdb/features/Makefile
+@@ -50,9 +50,11 @@ WHICH = aarch64 \
+ 	i386/amd64 i386/amd64-linux \
+ 	i386/i386-avx i386/i386-avx-linux \
+ 	i386/i386-mpx i386/i386-mpx-linux \
++	i386/i386-avx-mpx i386/i386-avx-mpx-linux \
+ 	i386/i386-avx512 i386/i386-avx512-linux \
+ 	i386/amd64-avx i386/amd64-avx-linux \
+ 	i386/amd64-mpx i386/amd64-mpx-linux \
++	i386/amd64-avx-mpx i386/amd64-avx-mpx-linux \
+ 	i386/amd64-avx512 i386/amd64-avx512-linux \
+ 	i386/x32 i386/x32-linux \
+ 	i386/x32-avx i386/x32-avx-linux \
+@@ -83,7 +85,9 @@ i386/amd64-linux-expedite = rbp,rsp,rip
+ i386/i386-avx-expedite = ebp,esp,eip
+ i386/i386-avx-linux-expedite = ebp,esp,eip
+ i386/i386-mpx-expedite = ebp,esp,eip
++i386/i386-avx-mpx-expedite = ebp,esp,eip
+ i386/i386-mpx-linux-expedite = ebp,esp,eip
++i386/i386-avx-mpx-linux-expedite = ebp,esp,eip
+ i386/i386-avx512-expedite = ebp,esp,eip
+ i386/i386-avx512-linux-expedite = ebp,esp,eip
+ i386/i386-mmx-expedite = ebp,esp,eip
+@@ -91,7 +95,9 @@ i386/i386-mmx-linux-expedite = ebp,esp,eip
+ i386/amd64-avx-expedite = rbp,rsp,rip
+ i386/amd64-avx-linux-expedite = rbp,rsp,rip
+ i386/amd64-mpx-expedite = rbp,rsp,rip
++i386/amd64-avx-mpx-expedite = rbp,rsp,rip
+ i386/amd64-mpx-linux-expedite = rbp,rsp,rip
++i386/amd64-avx-mpx-linux-expedite = rbp,rsp,rip
+ i386/amd64-avx512-expedite = rbp,rsp,rip
+ i386/amd64-avx512-linux-expedite = rbp,rsp,rip
+ i386/x32-expedite = rbp,rsp,rip
+@@ -156,6 +162,8 @@ XMLTOC = \
+ 	i386/amd64-linux.xml \
+ 	i386/amd64-mpx-linux.xml \
+ 	i386/amd64-mpx.xml \
++	i386/amd64-avx-mpx-linux.xml \
++	i386/amd64-avx-mpx.xml \
+ 	i386/amd64.xml \
+ 	i386/i386-avx-linux.xml \
+ 	i386/i386-avx.xml \
+@@ -166,6 +174,8 @@ XMLTOC = \
+ 	i386/i386-mmx.xml \
+ 	i386/i386-mpx-linux.xml \
+ 	i386/i386-mpx.xml \
++	i386/i386-avx-mpx-linux.xml \
++	i386/i386-avx-mpx.xml \
+ 	i386/i386.xml \
+ 	i386/x32-avx-linux.xml \
+ 	i386/x32-avx.xml \
+@@ -271,6 +281,10 @@ $(outdir)/i386/i386-mpx.dat: i386/32bit-core.xml i386/32bit-avx.xml \
+ 			       i386/32bit-mpx.xml
+ $(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml 	i386/32bit-avx.xml \
+ 			       i386/32bit-linux.xml i386/32bit-mpx.xml
++$(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml \
++			       i386/32bit-linux.xml i386/32bit-mpx.xml
++$(outdir)/i386/i386-avx-mpx-linux.dat: i386/32bit-core.xml \
++			       i386/32bit-linux.xml i386/32bit-mpx.xml
+ $(outdir)/i386/i386-avx512.dat: i386/32bit-core.xml i386/32bit-avx.xml \
+ 			       i386/32bit-mpx.xml i386/32bit-avx512.xml
+ $(outdir)/i386/i386-avx512-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
+@@ -282,8 +296,12 @@ $(outdir)/i386/amd64-avx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
+ 				    i386/64bit-linux.xml
+ $(outdir)/i386/amd64-mpx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
+ 			       i386/64bit-linux.xml i386/64bit-mpx.xml
++$(outdir)/i386/amd64-avx-mpx-linux.dat: i386/64bit-core.xml \
++			       i386/64bit-linux.xml i386/64bit-mpx.xml
+ $(outdir)/i386/amd64-mpx.dat: i386/64bit-core.xml i386/64bit-avx.xml \
+ 			       i386/64bit-mpx.xml
++$(outdir)/i386/amd64-avx-mpx.dat: i386/64bit-core.xml \
++			       i386/64bit-mpx.xml
+ $(outdir)/i386/amd64-avx512.dat: i386/64bit-core.xml i386/64bit-avx.xml \
+ 			       i386/64bit-mpx.xml i386/64bit-avx512.xml
+ $(outdir)/i386/amd64-avx512-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
+diff --git a/gdb/features/i386/amd64-avx-mpx-linux.c b/gdb/features/i386/amd64-avx-mpx-linux.c
+new file mode 100644
+index 0000000..37b4c81
+--- /dev/null
++++ b/gdb/features/i386/amd64-avx-mpx-linux.c
+@@ -0,0 +1,211 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: amd64-avx-mpx-linux.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_amd64_avx_mpx_linux;
++static void
++initialize_tdesc_amd64_avx_mpx_linux (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++  struct tdesc_type *field_type;
++  struct tdesc_type *type;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
++
++  set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
++  field_type = tdesc_create_flags (feature, "i386_eflags", 4);
++  tdesc_add_flag (field_type, 0, "CF");
++  tdesc_add_flag (field_type, 1, "");
++  tdesc_add_flag (field_type, 2, "PF");
++  tdesc_add_flag (field_type, 4, "AF");
++  tdesc_add_flag (field_type, 6, "ZF");
++  tdesc_add_flag (field_type, 7, "SF");
++  tdesc_add_flag (field_type, 8, "TF");
++  tdesc_add_flag (field_type, 9, "IF");
++  tdesc_add_flag (field_type, 10, "DF");
++  tdesc_add_flag (field_type, 11, "OF");
++  tdesc_add_flag (field_type, 14, "NT");
++  tdesc_add_flag (field_type, 16, "RF");
++  tdesc_add_flag (field_type, 17, "VM");
++  tdesc_add_flag (field_type, 18, "AC");
++  tdesc_add_flag (field_type, 19, "VIF");
++  tdesc_add_flag (field_type, 20, "VIP");
++  tdesc_add_flag (field_type, 21, "ID");
++
++  tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
++  tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
++  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
++  tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
++  tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
++  field_type = tdesc_named_type (feature, "ieee_single");
++  tdesc_create_vector (feature, "v4f", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "ieee_double");
++  tdesc_create_vector (feature, "v2d", field_type, 2);
++
++  field_type = tdesc_named_type (feature, "int8");
++  tdesc_create_vector (feature, "v16i8", field_type, 16);
++
++  field_type = tdesc_named_type (feature, "int16");
++  tdesc_create_vector (feature, "v8i16", field_type, 8);
++
++  field_type = tdesc_named_type (feature, "int32");
++  tdesc_create_vector (feature, "v4i32", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "int64");
++  tdesc_create_vector (feature, "v2i64", field_type, 2);
++
++  type = tdesc_create_union (feature, "vec128");
++  field_type = tdesc_named_type (feature, "v4f");
++  tdesc_add_field (type, "v4_float", field_type);
++  field_type = tdesc_named_type (feature, "v2d");
++  tdesc_add_field (type, "v2_double", field_type);
++  field_type = tdesc_named_type (feature, "v16i8");
++  tdesc_add_field (type, "v16_int8", field_type);
++  field_type = tdesc_named_type (feature, "v8i16");
++  tdesc_add_field (type, "v8_int16", field_type);
++  field_type = tdesc_named_type (feature, "v4i32");
++  tdesc_add_field (type, "v4_int32", field_type);
++  field_type = tdesc_named_type (feature, "v2i64");
++  tdesc_add_field (type, "v2_int64", field_type);
++  field_type = tdesc_named_type (feature, "uint128");
++  tdesc_add_field (type, "uint128", field_type);
++
++  field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
++  tdesc_add_flag (field_type, 0, "IE");
++  tdesc_add_flag (field_type, 1, "DE");
++  tdesc_add_flag (field_type, 2, "ZE");
++  tdesc_add_flag (field_type, 3, "OE");
++  tdesc_add_flag (field_type, 4, "UE");
++  tdesc_add_flag (field_type, 5, "PE");
++  tdesc_add_flag (field_type, 6, "DAZ");
++  tdesc_add_flag (field_type, 7, "IM");
++  tdesc_add_flag (field_type, 8, "DM");
++  tdesc_add_flag (field_type, 9, "ZM");
++  tdesc_add_flag (field_type, 10, "OM");
++  tdesc_add_flag (field_type, 11, "UM");
++  tdesc_add_flag (field_type, 12, "PM");
++  tdesc_add_flag (field_type, 15, "FZ");
++
++  tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
++  tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
++  tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
++  type = tdesc_create_struct (feature, "br128");
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "lbound", field_type);
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "ubound_raw", field_type);
++
++  type = tdesc_create_struct (feature, "_bndstatus");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "bde", 2, 63);
++  tdesc_add_bitfield (type, "error", 0, 1);
++
++  type = tdesc_create_union (feature, "status");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndstatus");
++  tdesc_add_field (type, "status", field_type);
++
++  type = tdesc_create_struct (feature, "_bndcfgu");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "base", 12, 63);
++  tdesc_add_bitfield (type, "reserved", 2, 11);
++  tdesc_add_bitfield (type, "preserved", 1, 1);
++  tdesc_add_bitfield (type, "enabled", 0, 0);
++
++  type = tdesc_create_union (feature, "cfgu");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndcfgu");
++  tdesc_add_field (type, "config", field_type);
++
++  tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status");
++
++  tdesc_amd64_avx_mpx_linux = result;
++}
+diff --git a/gdb/features/i386/amd64-avx-mpx-linux.xml b/gdb/features/i386/amd64-avx-mpx-linux.xml
+new file mode 100644
+index 0000000..526c700
+--- /dev/null
++++ b/gdb/features/i386/amd64-avx-mpx-linux.xml
+@@ -0,0 +1,19 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- AMD64 with AVX and MPX - Includes Linux-only special "register".  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386:x86-64</architecture>
++  <osabi>GNU/Linux</osabi>
++  <xi:include href="64bit-core.xml"/>
++  <xi:include href="64bit-sse.xml"/>
++  <xi:include href="64bit-linux.xml"/>
++  <xi:include href="64bit-avx.xml"/>
++  <xi:include href="64bit-mpx.xml"/>
++</target>
+diff --git a/gdb/features/i386/amd64-avx-mpx.c b/gdb/features/i386/amd64-avx-mpx.c
+new file mode 100644
+index 0000000..1279f73
+--- /dev/null
++++ b/gdb/features/i386/amd64-avx-mpx.c
+@@ -0,0 +1,206 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: amd64-avx-mpx.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_amd64_avx_mpx;
++static void
++initialize_tdesc_amd64_avx_mpx (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++  struct tdesc_type *field_type;
++  struct tdesc_type *type;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
++  field_type = tdesc_create_flags (feature, "i386_eflags", 4);
++  tdesc_add_flag (field_type, 0, "CF");
++  tdesc_add_flag (field_type, 1, "");
++  tdesc_add_flag (field_type, 2, "PF");
++  tdesc_add_flag (field_type, 4, "AF");
++  tdesc_add_flag (field_type, 6, "ZF");
++  tdesc_add_flag (field_type, 7, "SF");
++  tdesc_add_flag (field_type, 8, "TF");
++  tdesc_add_flag (field_type, 9, "IF");
++  tdesc_add_flag (field_type, 10, "DF");
++  tdesc_add_flag (field_type, 11, "OF");
++  tdesc_add_flag (field_type, 14, "NT");
++  tdesc_add_flag (field_type, 16, "RF");
++  tdesc_add_flag (field_type, 17, "VM");
++  tdesc_add_flag (field_type, 18, "AC");
++  tdesc_add_flag (field_type, 19, "VIF");
++  tdesc_add_flag (field_type, 20, "VIP");
++  tdesc_add_flag (field_type, 21, "ID");
++
++  tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
++  tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
++  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
++  tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
++  tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
++  field_type = tdesc_named_type (feature, "ieee_single");
++  tdesc_create_vector (feature, "v4f", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "ieee_double");
++  tdesc_create_vector (feature, "v2d", field_type, 2);
++
++  field_type = tdesc_named_type (feature, "int8");
++  tdesc_create_vector (feature, "v16i8", field_type, 16);
++
++  field_type = tdesc_named_type (feature, "int16");
++  tdesc_create_vector (feature, "v8i16", field_type, 8);
++
++  field_type = tdesc_named_type (feature, "int32");
++  tdesc_create_vector (feature, "v4i32", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "int64");
++  tdesc_create_vector (feature, "v2i64", field_type, 2);
++
++  type = tdesc_create_union (feature, "vec128");
++  field_type = tdesc_named_type (feature, "v4f");
++  tdesc_add_field (type, "v4_float", field_type);
++  field_type = tdesc_named_type (feature, "v2d");
++  tdesc_add_field (type, "v2_double", field_type);
++  field_type = tdesc_named_type (feature, "v16i8");
++  tdesc_add_field (type, "v16_int8", field_type);
++  field_type = tdesc_named_type (feature, "v8i16");
++  tdesc_add_field (type, "v8_int16", field_type);
++  field_type = tdesc_named_type (feature, "v4i32");
++  tdesc_add_field (type, "v4_int32", field_type);
++  field_type = tdesc_named_type (feature, "v2i64");
++  tdesc_add_field (type, "v2_int64", field_type);
++  field_type = tdesc_named_type (feature, "uint128");
++  tdesc_add_field (type, "uint128", field_type);
++
++  field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
++  tdesc_add_flag (field_type, 0, "IE");
++  tdesc_add_flag (field_type, 1, "DE");
++  tdesc_add_flag (field_type, 2, "ZE");
++  tdesc_add_flag (field_type, 3, "OE");
++  tdesc_add_flag (field_type, 4, "UE");
++  tdesc_add_flag (field_type, 5, "PE");
++  tdesc_add_flag (field_type, 6, "DAZ");
++  tdesc_add_flag (field_type, 7, "IM");
++  tdesc_add_flag (field_type, 8, "DM");
++  tdesc_add_flag (field_type, 9, "ZM");
++  tdesc_add_flag (field_type, 10, "OM");
++  tdesc_add_flag (field_type, 11, "UM");
++  tdesc_add_flag (field_type, 12, "PM");
++  tdesc_add_flag (field_type, 15, "FZ");
++
++  tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
++  tdesc_create_reg (feature, "ymm0h", 57, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm1h", 58, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm2h", 59, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm3h", 60, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm4h", 61, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm5h", 62, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm6h", 63, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm7h", 64, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm8h", 65, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm9h", 66, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm10h", 67, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm11h", 68, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm12h", 69, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm13h", 70, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm14h", 71, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm15h", 72, 1, NULL, 128, "uint128");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
++  type = tdesc_create_struct (feature, "br128");
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "lbound", field_type);
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "ubound_raw", field_type);
++
++  type = tdesc_create_struct (feature, "_bndstatus");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "bde", 2, 63);
++  tdesc_add_bitfield (type, "error", 0, 1);
++
++  type = tdesc_create_union (feature, "status");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndstatus");
++  tdesc_add_field (type, "status", field_type);
++
++  type = tdesc_create_struct (feature, "_bndcfgu");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "base", 12, 63);
++  tdesc_add_bitfield (type, "reserved", 2, 11);
++  tdesc_add_bitfield (type, "preserved", 1, 1);
++  tdesc_add_bitfield (type, "enabled", 0, 0);
++
++  type = tdesc_create_union (feature, "cfgu");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndcfgu");
++  tdesc_add_field (type, "config", field_type);
++
++  tdesc_create_reg (feature, "bnd0raw", 73, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 74, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 75, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 76, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 77, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 78, 1, NULL, 64, "status");
++
++  tdesc_amd64_avx_mpx = result;
++}
+diff --git a/gdb/features/i386/amd64-avx-mpx.xml b/gdb/features/i386/amd64-avx-mpx.xml
+new file mode 100644
+index 0000000..3eea6dd
+--- /dev/null
++++ b/gdb/features/i386/amd64-avx-mpx.xml
+@@ -0,0 +1,17 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- AMD64 with AVX and MPX -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386:x86-64</architecture>
++  <xi:include href="64bit-core.xml"/>
++  <xi:include href="64bit-sse.xml"/>
++  <xi:include href="64bit-avx.xml"/>
++  <xi:include href="64bit-mpx.xml"/>
++</target>
+diff --git a/gdb/features/i386/amd64-mpx-linux.c b/gdb/features/i386/amd64-mpx-linux.c
+index 86a1774..5c1584b 100644
+--- a/gdb/features/i386/amd64-mpx-linux.c
++++ b/gdb/features/i386/amd64-mpx-linux.c
+@@ -151,24 +151,6 @@ initialize_tdesc_amd64_mpx_linux (void)
+   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
+   tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
+
+-  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
+-  tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
+-
+   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
+   type = tdesc_create_struct (feature, "br128");
+   field_type = tdesc_named_type (feature, "uint64");
+@@ -200,12 +182,12 @@ initialize_tdesc_amd64_mpx_linux (void)
+   field_type = tdesc_named_type (feature, "_bndcfgu");
+   tdesc_add_field (type, "config", field_type);
+
+-  tdesc_create_reg (feature, "bnd0raw", 74, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd1raw", 75, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd2raw", 76, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd3raw", 77, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bndcfgu", 78, 1, NULL, 64, "cfgu");
+-  tdesc_create_reg (feature, "bndstatus", 79, 1, NULL, 64, "status");
++  tdesc_create_reg (feature, "bnd0raw", 58, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 59, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 60, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 61, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 62, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 63, 1, NULL, 64, "status");
+
+   tdesc_amd64_mpx_linux = result;
+ }
+diff --git a/gdb/features/i386/amd64-mpx-linux.xml b/gdb/features/i386/amd64-mpx-linux.xml
+index 15e87b4..835126b 100644
+--- a/gdb/features/i386/amd64-mpx-linux.xml
++++ b/gdb/features/i386/amd64-mpx-linux.xml
+@@ -14,6 +14,5 @@
+   <xi:include href="64bit-core.xml"/>
+   <xi:include href="64bit-sse.xml"/>
+   <xi:include href="64bit-linux.xml"/>
+-  <xi:include href="64bit-avx.xml"/>
+   <xi:include href="64bit-mpx.xml"/>
+ </target>
+diff --git a/gdb/features/i386/amd64-mpx.c b/gdb/features/i386/amd64-mpx.c
+index 15ae5f7..4c852ef 100644
+--- a/gdb/features/i386/amd64-mpx.c
++++ b/gdb/features/i386/amd64-mpx.c
+@@ -146,24 +146,6 @@ initialize_tdesc_amd64_mpx (void)
+   tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
+   tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
+
+-  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
+-  tdesc_create_reg (feature, "ymm0h", 57, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm1h", 58, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm2h", 59, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm3h", 60, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm4h", 61, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm5h", 62, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm6h", 63, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm7h", 64, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm8h", 65, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm9h", 66, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm10h", 67, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm11h", 68, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm12h", 69, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm13h", 70, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm14h", 71, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm15h", 72, 1, NULL, 128, "uint128");
+-
+   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
+   type = tdesc_create_struct (feature, "br128");
+   field_type = tdesc_named_type (feature, "uint64");
+@@ -195,12 +177,12 @@ initialize_tdesc_amd64_mpx (void)
+   field_type = tdesc_named_type (feature, "_bndcfgu");
+   tdesc_add_field (type, "config", field_type);
+
+-  tdesc_create_reg (feature, "bnd0raw", 73, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd1raw", 74, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd2raw", 75, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd3raw", 76, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bndcfgu", 77, 1, NULL, 64, "cfgu");
+-  tdesc_create_reg (feature, "bndstatus", 78, 1, NULL, 64, "status");
++  tdesc_create_reg (feature, "bnd0raw", 57, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 58, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 59, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 60, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 61, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 62, 1, NULL, 64, "status");
+
+   tdesc_amd64_mpx = result;
+ }
+diff --git a/gdb/features/i386/amd64-mpx.xml b/gdb/features/i386/amd64-mpx.xml
+index 21b6df3..e458736 100644
+--- a/gdb/features/i386/amd64-mpx.xml
++++ b/gdb/features/i386/amd64-mpx.xml
+@@ -12,6 +12,5 @@
+   <architecture>i386:x86-64</architecture>
+   <xi:include href="64bit-core.xml"/>
+   <xi:include href="64bit-sse.xml"/>
+-  <xi:include href="64bit-avx.xml"/>
+   <xi:include href="64bit-mpx.xml"/>
+ </target>
+diff --git a/gdb/features/i386/i386-avx-mpx-linux.c b/gdb/features/i386/i386-avx-mpx-linux.c
+new file mode 100644
+index 0000000..dd75403
+--- /dev/null
++++ b/gdb/features/i386/i386-avx-mpx-linux.c
+@@ -0,0 +1,187 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: i386-avx-mpx-linux.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_i386_avx_mpx_linux;
++static void
++initialize_tdesc_i386_avx_mpx_linux (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++  struct tdesc_type *field_type;
++  struct tdesc_type *type;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("i386"));
++
++  set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
++  field_type = tdesc_create_flags (feature, "i386_eflags", 4);
++  tdesc_add_flag (field_type, 0, "CF");
++  tdesc_add_flag (field_type, 1, "");
++  tdesc_add_flag (field_type, 2, "PF");
++  tdesc_add_flag (field_type, 4, "AF");
++  tdesc_add_flag (field_type, 6, "ZF");
++  tdesc_add_flag (field_type, 7, "SF");
++  tdesc_add_flag (field_type, 8, "TF");
++  tdesc_add_flag (field_type, 9, "IF");
++  tdesc_add_flag (field_type, 10, "DF");
++  tdesc_add_flag (field_type, 11, "OF");
++  tdesc_add_flag (field_type, 14, "NT");
++  tdesc_add_flag (field_type, 16, "RF");
++  tdesc_add_flag (field_type, 17, "VM");
++  tdesc_add_flag (field_type, 18, "AC");
++  tdesc_add_flag (field_type, 19, "VIF");
++  tdesc_add_flag (field_type, 20, "VIP");
++  tdesc_add_flag (field_type, 21, "ID");
++
++  tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
++  tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
++  tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
++  field_type = tdesc_named_type (feature, "ieee_single");
++  tdesc_create_vector (feature, "v4f", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "ieee_double");
++  tdesc_create_vector (feature, "v2d", field_type, 2);
++
++  field_type = tdesc_named_type (feature, "int8");
++  tdesc_create_vector (feature, "v16i8", field_type, 16);
++
++  field_type = tdesc_named_type (feature, "int16");
++  tdesc_create_vector (feature, "v8i16", field_type, 8);
++
++  field_type = tdesc_named_type (feature, "int32");
++  tdesc_create_vector (feature, "v4i32", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "int64");
++  tdesc_create_vector (feature, "v2i64", field_type, 2);
++
++  type = tdesc_create_union (feature, "vec128");
++  field_type = tdesc_named_type (feature, "v4f");
++  tdesc_add_field (type, "v4_float", field_type);
++  field_type = tdesc_named_type (feature, "v2d");
++  tdesc_add_field (type, "v2_double", field_type);
++  field_type = tdesc_named_type (feature, "v16i8");
++  tdesc_add_field (type, "v16_int8", field_type);
++  field_type = tdesc_named_type (feature, "v8i16");
++  tdesc_add_field (type, "v8_int16", field_type);
++  field_type = tdesc_named_type (feature, "v4i32");
++  tdesc_add_field (type, "v4_int32", field_type);
++  field_type = tdesc_named_type (feature, "v2i64");
++  tdesc_add_field (type, "v2_int64", field_type);
++  field_type = tdesc_named_type (feature, "uint128");
++  tdesc_add_field (type, "uint128", field_type);
++
++  field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
++  tdesc_add_flag (field_type, 0, "IE");
++  tdesc_add_flag (field_type, 1, "DE");
++  tdesc_add_flag (field_type, 2, "ZE");
++  tdesc_add_flag (field_type, 3, "OE");
++  tdesc_add_flag (field_type, 4, "UE");
++  tdesc_add_flag (field_type, 5, "PE");
++  tdesc_add_flag (field_type, 6, "DAZ");
++  tdesc_add_flag (field_type, 7, "IM");
++  tdesc_add_flag (field_type, 8, "DM");
++  tdesc_add_flag (field_type, 9, "ZM");
++  tdesc_add_flag (field_type, 10, "OM");
++  tdesc_add_flag (field_type, 11, "UM");
++  tdesc_add_flag (field_type, 12, "PM");
++  tdesc_add_flag (field_type, 15, "FZ");
++
++  tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
++  tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
++  tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
++  type = tdesc_create_struct (feature, "br128");
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "lbound", field_type);
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "ubound_raw", field_type);
++
++  type = tdesc_create_struct (feature, "_bndstatus");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "bde", 2, 31);
++  tdesc_add_bitfield (type, "error", 0, 1);
++
++  type = tdesc_create_union (feature, "status");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndstatus");
++  tdesc_add_field (type, "status", field_type);
++
++  type = tdesc_create_struct (feature, "_bndcfgu");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "base", 12, 31);
++  tdesc_add_bitfield (type, "reserved", 2, 11);
++  tdesc_add_bitfield (type, "preserved", 1, 1);
++  tdesc_add_bitfield (type, "enabled", 0, 1);
++
++  type = tdesc_create_union (feature, "cfgu");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndcfgu");
++  tdesc_add_field (type, "config", field_type);
++
++  tdesc_create_reg (feature, "bnd0raw", 50, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 51, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 52, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 53, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 54, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 55, 1, NULL, 64, "status");
++
++  tdesc_i386_avx_mpx_linux = result;
++}
+diff --git a/gdb/features/i386/i386-avx-mpx-linux.xml b/gdb/features/i386/i386-avx-mpx-linux.xml
+new file mode 100644
+index 0000000..c9a1a61
+--- /dev/null
++++ b/gdb/features/i386/i386-avx-mpx-linux.xml
+@@ -0,0 +1,19 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- I386 with AVX and MPX- Includes Linux-only special "register".  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386</architecture>
++  <osabi>GNU/Linux</osabi>
++  <xi:include href="32bit-core.xml"/>
++  <xi:include href="32bit-sse.xml"/>
++  <xi:include href="32bit-linux.xml"/>
++  <xi:include href="32bit-avx.xml"/>
++  <xi:include href="32bit-mpx.xml"/>
++</target>
+diff --git a/gdb/features/i386/i386-avx-mpx.c b/gdb/features/i386/i386-avx-mpx.c
+new file mode 100644
+index 0000000..f104e4b
+--- /dev/null
++++ b/gdb/features/i386/i386-avx-mpx.c
+@@ -0,0 +1,182 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: i386-avx-mpx.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_i386_avx_mpx;
++static void
++initialize_tdesc_i386_avx_mpx (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++  struct tdesc_type *field_type;
++  struct tdesc_type *type;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("i386"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
++  field_type = tdesc_create_flags (feature, "i386_eflags", 4);
++  tdesc_add_flag (field_type, 0, "CF");
++  tdesc_add_flag (field_type, 1, "");
++  tdesc_add_flag (field_type, 2, "PF");
++  tdesc_add_flag (field_type, 4, "AF");
++  tdesc_add_flag (field_type, 6, "ZF");
++  tdesc_add_flag (field_type, 7, "SF");
++  tdesc_add_flag (field_type, 8, "TF");
++  tdesc_add_flag (field_type, 9, "IF");
++  tdesc_add_flag (field_type, 10, "DF");
++  tdesc_add_flag (field_type, 11, "OF");
++  tdesc_add_flag (field_type, 14, "NT");
++  tdesc_add_flag (field_type, 16, "RF");
++  tdesc_add_flag (field_type, 17, "VM");
++  tdesc_add_flag (field_type, 18, "AC");
++  tdesc_add_flag (field_type, 19, "VIF");
++  tdesc_add_flag (field_type, 20, "VIP");
++  tdesc_add_flag (field_type, 21, "ID");
++
++  tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
++  tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
++  tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
++  field_type = tdesc_named_type (feature, "ieee_single");
++  tdesc_create_vector (feature, "v4f", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "ieee_double");
++  tdesc_create_vector (feature, "v2d", field_type, 2);
++
++  field_type = tdesc_named_type (feature, "int8");
++  tdesc_create_vector (feature, "v16i8", field_type, 16);
++
++  field_type = tdesc_named_type (feature, "int16");
++  tdesc_create_vector (feature, "v8i16", field_type, 8);
++
++  field_type = tdesc_named_type (feature, "int32");
++  tdesc_create_vector (feature, "v4i32", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "int64");
++  tdesc_create_vector (feature, "v2i64", field_type, 2);
++
++  type = tdesc_create_union (feature, "vec128");
++  field_type = tdesc_named_type (feature, "v4f");
++  tdesc_add_field (type, "v4_float", field_type);
++  field_type = tdesc_named_type (feature, "v2d");
++  tdesc_add_field (type, "v2_double", field_type);
++  field_type = tdesc_named_type (feature, "v16i8");
++  tdesc_add_field (type, "v16_int8", field_type);
++  field_type = tdesc_named_type (feature, "v8i16");
++  tdesc_add_field (type, "v8_int16", field_type);
++  field_type = tdesc_named_type (feature, "v4i32");
++  tdesc_add_field (type, "v4_int32", field_type);
++  field_type = tdesc_named_type (feature, "v2i64");
++  tdesc_add_field (type, "v2_int64", field_type);
++  field_type = tdesc_named_type (feature, "uint128");
++  tdesc_add_field (type, "uint128", field_type);
++
++  field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
++  tdesc_add_flag (field_type, 0, "IE");
++  tdesc_add_flag (field_type, 1, "DE");
++  tdesc_add_flag (field_type, 2, "ZE");
++  tdesc_add_flag (field_type, 3, "OE");
++  tdesc_add_flag (field_type, 4, "UE");
++  tdesc_add_flag (field_type, 5, "PE");
++  tdesc_add_flag (field_type, 6, "DAZ");
++  tdesc_add_flag (field_type, 7, "IM");
++  tdesc_add_flag (field_type, 8, "DM");
++  tdesc_add_flag (field_type, 9, "ZM");
++  tdesc_add_flag (field_type, 10, "OM");
++  tdesc_add_flag (field_type, 11, "UM");
++  tdesc_add_flag (field_type, 12, "PM");
++  tdesc_add_flag (field_type, 15, "FZ");
++
++  tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
++  tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
++  type = tdesc_create_struct (feature, "br128");
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "lbound", field_type);
++  field_type = tdesc_named_type (feature, "uint64");
++  tdesc_add_field (type, "ubound_raw", field_type);
++
++  type = tdesc_create_struct (feature, "_bndstatus");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "bde", 2, 31);
++  tdesc_add_bitfield (type, "error", 0, 1);
++
++  type = tdesc_create_union (feature, "status");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndstatus");
++  tdesc_add_field (type, "status", field_type);
++
++  type = tdesc_create_struct (feature, "_bndcfgu");
++  tdesc_set_struct_size (type, 8);
++  tdesc_add_bitfield (type, "base", 12, 31);
++  tdesc_add_bitfield (type, "reserved", 2, 11);
++  tdesc_add_bitfield (type, "preserved", 1, 1);
++  tdesc_add_bitfield (type, "enabled", 0, 1);
++
++  type = tdesc_create_union (feature, "cfgu");
++  field_type = tdesc_named_type (feature, "data_ptr");
++  tdesc_add_field (type, "raw", field_type);
++  field_type = tdesc_named_type (feature, "_bndcfgu");
++  tdesc_add_field (type, "config", field_type);
++
++  tdesc_create_reg (feature, "bnd0raw", 49, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 50, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 51, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 52, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 53, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 54, 1, NULL, 64, "status");
++
++  tdesc_i386_avx_mpx = result;
++}
+diff --git a/gdb/features/i386/i386-avx-mpx.xml b/gdb/features/i386/i386-avx-mpx.xml
+new file mode 100644
+index 0000000..ab97367
+--- /dev/null
++++ b/gdb/features/i386/i386-avx-mpx.xml
+@@ -0,0 +1,17 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- I386 with AVX and MPX -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386</architecture>
++  <xi:include href="32bit-core.xml"/>
++  <xi:include href="32bit-sse.xml"/>
++  <xi:include href="32bit-avx.xml"/>
++  <xi:include href="32bit-mpx.xml"/>
++</target>
+diff --git a/gdb/features/i386/i386-mpx-linux.c b/gdb/features/i386/i386-mpx-linux.c
+index dbf8789..c6bafea 100644
+--- a/gdb/features/i386/i386-mpx-linux.c
++++ b/gdb/features/i386/i386-mpx-linux.c
+@@ -135,16 +135,6 @@ initialize_tdesc_i386_mpx_linux (void)
+   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux");
+   tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
+
+-  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
+-  tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
+-
+   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
+   type = tdesc_create_struct (feature, "br128");
+   field_type = tdesc_named_type (feature, "uint64");
+@@ -176,12 +166,12 @@ initialize_tdesc_i386_mpx_linux (void)
+   field_type = tdesc_named_type (feature, "_bndcfgu");
+   tdesc_add_field (type, "config", field_type);
+
+-  tdesc_create_reg (feature, "bnd0raw", 50, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd1raw", 51, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd2raw", 52, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd3raw", 53, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bndcfgu", 54, 1, NULL, 64, "cfgu");
+-  tdesc_create_reg (feature, "bndstatus", 55, 1, NULL, 64, "status");
++  tdesc_create_reg (feature, "bnd0raw", 42, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 43, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 44, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 45, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 46, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 47, 1, NULL, 64, "status");
+
+   tdesc_i386_mpx_linux = result;
+ }
+diff --git a/gdb/features/i386/i386-mpx-linux.xml b/gdb/features/i386/i386-mpx-linux.xml
+index c4004d6..4228cf5 100644
+--- a/gdb/features/i386/i386-mpx-linux.xml
++++ b/gdb/features/i386/i386-mpx-linux.xml
+@@ -14,6 +14,5 @@
+   <xi:include href="32bit-core.xml"/>
+   <xi:include href="32bit-sse.xml"/>
+   <xi:include href="32bit-linux.xml"/>
+-  <xi:include href="32bit-avx.xml"/>
+   <xi:include href="32bit-mpx.xml"/>
+ </target>
+diff --git a/gdb/features/i386/i386-mpx.c b/gdb/features/i386/i386-mpx.c
+index 1e04afd..430db3f 100644
+--- a/gdb/features/i386/i386-mpx.c
++++ b/gdb/features/i386/i386-mpx.c
+@@ -130,16 +130,6 @@ initialize_tdesc_i386_mpx (void)
+   tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
+   tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
+
+-  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
+-  tdesc_create_reg (feature, "ymm0h", 41, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm1h", 42, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm2h", 43, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm3h", 44, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm4h", 45, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm5h", 46, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm6h", 47, 1, NULL, 128, "uint128");
+-  tdesc_create_reg (feature, "ymm7h", 48, 1, NULL, 128, "uint128");
+-
+   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx");
+   type = tdesc_create_struct (feature, "br128");
+   field_type = tdesc_named_type (feature, "uint64");
+@@ -171,12 +161,12 @@ initialize_tdesc_i386_mpx (void)
+   field_type = tdesc_named_type (feature, "_bndcfgu");
+   tdesc_add_field (type, "config", field_type);
+
+-  tdesc_create_reg (feature, "bnd0raw", 49, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd1raw", 50, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd2raw", 51, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bnd3raw", 52, 1, NULL, 128, "br128");
+-  tdesc_create_reg (feature, "bndcfgu", 53, 1, NULL, 64, "cfgu");
+-  tdesc_create_reg (feature, "bndstatus", 54, 1, NULL, 64, "status");
++  tdesc_create_reg (feature, "bnd0raw", 41, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd1raw", 42, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd2raw", 43, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bnd3raw", 44, 1, NULL, 128, "br128");
++  tdesc_create_reg (feature, "bndcfgu", 45, 1, NULL, 64, "cfgu");
++  tdesc_create_reg (feature, "bndstatus", 46, 1, NULL, 64, "status");
+
+   tdesc_i386_mpx = result;
+ }
+diff --git a/gdb/features/i386/i386-mpx.xml b/gdb/features/i386/i386-mpx.xml
+index 52a68db..c1806cb 100644
+--- a/gdb/features/i386/i386-mpx.xml
++++ b/gdb/features/i386/i386-mpx.xml
+@@ -12,6 +12,5 @@
+   <architecture>i386</architecture>
+   <xi:include href="32bit-core.xml"/>
+   <xi:include href="32bit-sse.xml"/>
+-  <xi:include href="32bit-avx.xml"/>
+   <xi:include href="32bit-mpx.xml"/>
+ </target>
+diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
+index 1e874e3..dee2ea1 100644
+--- a/gdb/gdbserver/Makefile.in
++++ b/gdb/gdbserver/Makefile.in
+@@ -376,9 +376,11 @@ clean:
+ 	rm -f xml-builtin.c stamp-xml
+ 	rm -f i386-avx.c i386-avx-linux.c
+ 	rm -f i386-mpx.c i386-mpx-linux.c
++	rm -f i386-avx-mpx.c i386-avx-mpx-linux.c
+ 	rm -f i386-avx512.c i386-avx512-linux.c
+ 	rm -f amd64-avx.c amd64-avx-linux.c
+ 	rm -f amd64-mpx.c amd64-mpx-linux.c
++	rm -f amd64-avx-mpx.c amd64-avx-mpx-linux.c
+ 	rm -f amd64-avx512.c amd64-avx512-linux.c
+ 	rm -f i386-mmx.c i386-mmx-linux.c
+ 	rm -f x32.c x32-linux.c
+@@ -495,6 +497,21 @@ regcache-ipa.o: regcache.c
+ i386-linux-ipa.o: i386-linux.c
+ 	$(IPAGENT_COMPILE) $<
+ 	$(POSTCOMPILE)
++i386-mmx-linux-ipa.o: i386-mmx-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
++i386-avx-linux-ipa.o: i386-avx-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
++i386-mpx-linux-ipa.o: i386-mpx-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
++i386-avx-mpx-linux-ipa.o: i386-avx-mpx-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
++i386-avx512-linux-ipa.o: i386-avx512-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
+ linux-i386-ipa.o: linux-i386-ipa.c
+ 	$(IPAGENT_COMPILE) $<
+ 	$(POSTCOMPILE)
+@@ -504,6 +521,18 @@ linux-amd64-ipa.o: linux-amd64-ipa.c
+ amd64-linux-ipa.o: amd64-linux.c
+ 	$(IPAGENT_COMPILE) $<
+ 	$(POSTCOMPILE)
++amd64-avx-linux-ipa.o: amd64-avx-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
++amd64-mpx-linux-ipa.o: amd64-mpx-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
++amd64-avx-mpx-linux-ipa.o: amd64-avx-mpx-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
++amd64-avx512-linux-ipa.o: amd64-avx512-linux.c
++	$(IPAGENT_COMPILE) $<
++	$(POSTCOMPILE)
+ linux-aarch64-ipa.o: linux-aarch64-ipa.c
+ 	$(IPAGENT_COMPILE) $<
+ 	$(POSTCOMPILE)
+@@ -694,6 +723,10 @@ i386-mpx.c : $(srcdir)/../regformats/i386/i386-mpx.dat $(regdat_sh)
+ 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mpx.dat i386-mpx.c
+ i386-mpx-linux.c : $(srcdir)/../regformats/i386/i386-mpx-linux.dat $(regdat_sh)
+ 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mpx-linux.dat i386-mpx-linux.c
++i386-avx-mpx.c : $(srcdir)/../regformats/i386/i386-avx-mpx.dat $(regdat_sh)
++	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx-mpx.dat i386-avx-mpx.c
++i386-avx-mpx-linux.c : $(srcdir)/../regformats/i386/i386-avx-mpx-linux.dat $(regdat_sh)
++	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx-mpx-linux.dat i386-avx-mpx-linux.c
+ i386-mmx.c : $(srcdir)/../regformats/i386/i386-mmx.dat $(regdat_sh)
+ 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mmx.dat i386-mmx.c
+ i386-mmx-linux.c : $(srcdir)/../regformats/i386/i386-mmx-linux.dat $(regdat_sh)
+@@ -808,6 +841,10 @@ amd64-mpx.c : $(srcdir)/../regformats/i386/amd64-mpx.dat $(regdat_sh)
+ 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-mpx.dat amd64-mpx.c
+ amd64-mpx-linux.c : $(srcdir)/../regformats/i386/amd64-mpx-linux.dat $(regdat_sh)
+ 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-mpx-linux.dat amd64-mpx-linux.c
++amd64-avx-mpx.c : $(srcdir)/../regformats/i386/amd64-avx-mpx.dat $(regdat_sh)
++	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx-mpx.dat amd64-avx-mpx.c
++amd64-avx-mpx-linux.c : $(srcdir)/../regformats/i386/amd64-avx-mpx-linux.dat $(regdat_sh)
++	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx-mpx-linux.dat amd64-avx-mpx-linux.c
+ x32.c : $(srcdir)/../regformats/i386/x32.dat $(regdat_sh)
+ 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/x32.dat x32.c
+ x32-linux.c : $(srcdir)/../regformats/i386/x32-linux.dat $(regdat_sh)
+diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
+index a54b9e7..4935a36 100644
+--- a/gdb/gdbserver/configure.srv
++++ b/gdb/gdbserver/configure.srv
+@@ -24,20 +24,23 @@
+ # Default hostio_last_error implementation
+ srv_hostio_err_objs="hostio-errno.o"
+
+-srv_i386_regobj="i386.o i386-avx.o i386-avx512.o i386-mpx.o i386-mmx.o"
+-srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx512-linux.o i386-mpx-linux.o i386-mmx-linux.o"
+-srv_amd64_regobj="amd64.o amd64-avx.o amd64-avx512.o amd64-mpx.o x32.o x32-avx.o x32-avx512.o"
+-srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx512-linux.o amd64-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx512-linux.o"
++srv_i386_regobj="i386.o i386-avx.o i386-avx512.o i386-mpx.o i386-avx-mpx.o i386-mmx.o"
++srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx512-linux.o i386-mpx-linux.o i386-avx-mpx-linux.o i386-mmx-linux.o"
++srv_amd64_regobj="amd64.o amd64-avx.o amd64-avx512.o amd64-mpx.o amd64-avx-mpx.o x32.o x32-avx.o x32-avx512.o"
++srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx512-linux.o amd64-mpx-linux.o amd64-avx-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx512-linux.o"
++
++
++ipa_i386_linux_regobj="i386-linux-ipa.o i386-avx-linux-ipa.o  i386-avx-mpx-linux-ipa.o i386-avx512-linux-ipa.o i386-mpx-linux-ipa.o i386-mmx-linux-ipa.o"
++ipa_amd64_linux_regobj="amd64-linux-ipa.o amd64-avx-linux-ipa.o amd64-avx-mpx-linux-ipa.o amd64-avx512-linux-ipa.o amd64-mpx-linux-ipa.o"
+
+-ipa_i386_linux_regobj=i386-linux-ipa.o
+-ipa_amd64_linux_regobj=amd64-linux-ipa.o
+
+ srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.xml i386/32bit-avx512.xml i386/32bit-mpx.xml"
+ srv_i386_64bit_xmlfiles="i386/64bit-core.xml i386/64bit-sse.xml i386/64bit-avx.xml i386/64bit-avx512.xml i386/x32-core.xml i386/64bit-mpx.xml"
+-srv_i386_xmlfiles="i386/i386.xml i386/i386-avx.xml i386/i386-avx512.xml i386/i386-mpx.xml i386/i386-mmx.xml $srv_i386_32bit_xmlfiles"
+-srv_amd64_xmlfiles="i386/amd64.xml i386/amd64-avx.xml i386/amd64-avx512.xml i386/x32.xml i386/x32-avx.xml i386/x32-avx512.xml i386/amd64-mpx.xml $srv_i386_64bit_xmlfiles"
+-srv_i386_linux_xmlfiles="i386/i386-linux.xml i386/i386-avx-linux.xml i386/i386-avx512-linux.xml i386/i386-mmx-linux.xml i386/32bit-linux.xml i386/i386-mpx-linux.xml $srv_i386_32bit_xmlfiles"
+-srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd64-avx512-linux.xml i386/64bit-linux.xml i386/amd64-mpx-linux.xml i386/x32-linux.xml i386/x32-avx-linux.xml i386/x32-avx512-linux.xml $srv_i386_64bit_xmlfiles"
++srv_i386_xmlfiles="i386/i386.xml i386/i386-avx.xml i386/i386-avx512.xml i386/i386-mpx.xml i386/i386-avx-mpx.xml i386/i386-mmx.xml $srv_i386_32bit_xmlfiles"
++srv_amd64_xmlfiles="i386/amd64.xml i386/amd64-avx.xml i386/amd64-avx512.xml i386/x32.xml i386/x32-avx.xml i386/x32-avx512.xml i386/amd64-mpx.xml i386/amd64-avx-mpx.xml  $srv_i386_64bit_xmlfiles"
++srv_i386_linux_xmlfiles="i386/i386-linux.xml i386/i386-avx-linux.xml i386/i386-avx512-linux.xml i386/i386-mmx-linux.xml i386/32bit-linux.xml i386/i386-mpx-linux.xml i386/i386-avx-mpx-linux.xml $srv_i386_32bit_xmlfiles"
++srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd64-avx512-linux.xml i386/64bit-linux.xml i386/amd64-mpx-linux.xml i386/amd64-avx-mpx-linux.xml i386/x32-linux.xml i386/x32-avx-linux.xml i386/x32-avx512-linux.xml $srv_i386_64bit_xmlfiles"
++
+
+
+ # Linux object files.  This is so we don't have to repeat
+diff --git a/gdb/gdbserver/linux-aarch64-ipa.c b/gdb/gdbserver/linux-aarch64-ipa.c
+index 758708d..f1eaa70 100644
+--- a/gdb/gdbserver/linux-aarch64-ipa.c
++++ b/gdb/gdbserver/linux-aarch64-ipa.c
+@@ -143,9 +143,18 @@ gdb_agent_get_raw_reg (const unsigned char *raw_regs, int regnum)
+ 			+ aarch64_ft_collect_regmap[regnum] * FT_CR_SIZE);
+ }
+
++/* Return target_desc to use for IPA, given the tdesc index passed by
++   gdbserver.  Index is ignored, since we have only one tdesc
++   at the moment.  */
++
++const struct target_desc *
++get_ipa_tdesc (int idx)
++{
++  return tdesc_aarch64;
++}
++
+ void
+ initialize_low_tracepoint (void)
+ {
+   init_registers_aarch64 ();
+-  ipa_tdesc = tdesc_aarch64;
+ }
+diff --git a/gdb/gdbserver/linux-amd64-ipa.c b/gdb/gdbserver/linux-amd64-ipa.c
+index 2eeedcd..f9c72a0 100644
+--- a/gdb/gdbserver/linux-amd64-ipa.c
++++ b/gdb/gdbserver/linux-amd64-ipa.c
+@@ -20,6 +20,7 @@
+
+ #include "server.h"
+ #include "tracepoint.h"
++#include "linux-x86-tdesc.h"
+
+ /* Defined in auto-generated file amd64-linux.c.  */
+ void init_registers_amd64_linux (void);
+@@ -166,9 +167,37 @@ supply_static_tracepoint_registers (struct regcache *regcache,
+
+ #endif /* HAVE_UST */
+
++/* Return target_desc to use for IPA, given the tdesc index passed by
++   gdbserver.  */
++
++const struct target_desc *
++get_ipa_tdesc (int idx)
++{
++  switch (idx)
++    {
++    case X86_TDESC_SSE:
++      return tdesc_amd64_linux;
++    case X86_TDESC_AVX:
++      return tdesc_amd64_avx_linux;
++    case X86_TDESC_MPX:
++      return tdesc_amd64_mpx_linux;
++    case X86_TDESC_AVX_MPX:
++      return tdesc_amd64_avx_mpx_linux;
++    case X86_TDESC_AVX512:
++      return tdesc_amd64_avx512_linux;
++    default:
++      internal_error (__FILE__, __LINE__,
++		      "unknown ipa tdesc index: %d", idx);
++      return tdesc_amd64_linux;
++    }
++}
++
+ void
+ initialize_low_tracepoint (void)
+ {
+   init_registers_amd64_linux ();
+-  ipa_tdesc = tdesc_amd64_linux;
++  init_registers_amd64_avx_linux ();
++  init_registers_amd64_avx_mpx_linux ();
++  init_registers_amd64_mpx_linux ();
++  init_registers_amd64_avx512_linux ();
+ }
+diff --git a/gdb/gdbserver/linux-i386-ipa.c b/gdb/gdbserver/linux-i386-ipa.c
+index 11dc038..d7a8e7d 100644
+--- a/gdb/gdbserver/linux-i386-ipa.c
++++ b/gdb/gdbserver/linux-i386-ipa.c
+@@ -21,6 +21,7 @@
+ #include "server.h"
+ #include <sys/mman.h>
+ #include "tracepoint.h"
++#include "linux-x86-tdesc.h"
+
+ /* GDB register numbers.  */
+
+@@ -47,10 +48,6 @@ enum i386_gdb_regnum
+
+ #define i386_num_regs 16
+
+-/* Defined in auto-generated file i386-linux.c.  */
+-void init_registers_i386_linux (void);
+-extern const struct target_desc *tdesc_i386_linux;
+-
+ #define FT_CR_EAX 15
+ #define FT_CR_ECX 14
+ #define FT_CR_EDX 13
+@@ -247,10 +244,40 @@ initialize_fast_tracepoint_trampoline_buffer (void)
+     }
+ }
+
++/* Return target_desc to use for IPA, given the tdesc index passed by
++   gdbserver.  */
++
++const struct target_desc *
++get_ipa_tdesc (int idx)
++{
++  switch (idx)
++    {
++    case X86_TDESC_MMX:
++      return tdesc_i386_mmx_linux;
++    case X86_TDESC_SSE:
++      return tdesc_i386_linux;
++    case X86_TDESC_AVX:
++      return tdesc_i386_avx_linux;
++    case X86_TDESC_MPX:
++      return tdesc_i386_mpx_linux;
++    case X86_TDESC_AVX_MPX:
++      return tdesc_i386_avx_mpx_linux;
++    case X86_TDESC_AVX512:
++      return tdesc_i386_avx512_linux;
++    default:
++      internal_error (__FILE__, __LINE__,
++		      "unknown ipa tdesc index: %d", idx);
++      return tdesc_i386_linux;
++    }
++}
++
+ void
+ initialize_low_tracepoint (void)
+ {
++  init_registers_i386_mmx_linux ();
+   init_registers_i386_linux ();
+-  ipa_tdesc = tdesc_i386_linux;
++  init_registers_i386_avx_linux ();
++  init_registers_i386_mpx_linux ();
++  init_registers_i386_avx512_linux ();
+   initialize_fast_tracepoint_trampoline_buffer ();
+ }
+diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
+index 8b025bd..a142c2c 100644
+--- a/gdb/gdbserver/linux-low.c
++++ b/gdb/gdbserver/linux-low.c
+@@ -6432,6 +6432,15 @@ linux_supports_catch_syscall (void)
+ }
+
+ static int
++linux_get_ipa_tdesc_idx (void)
++{
++  if (the_low_target.get_ipa_tdesc_idx == NULL)
++    return 0;
++
++  return (*the_low_target.get_ipa_tdesc_idx) ();
++}
++
++static int
+ linux_supports_tracepoints (void)
+ {
+   if (*the_low_target.supports_tracepoints == NULL)
+@@ -7408,6 +7417,7 @@ static struct target_ops linux_target_ops = {
+   linux_breakpoint_kind_from_current_state,
+   linux_supports_software_single_step,
+   linux_supports_catch_syscall,
++  linux_get_ipa_tdesc_idx,
+ };
+
+ #ifdef HAVE_LINUX_REGSETS
+diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h
+index 4ec8550..d4946c1 100644
+--- a/gdb/gdbserver/linux-low.h
++++ b/gdb/gdbserver/linux-low.h
+@@ -246,6 +246,9 @@ struct linux_target_ops
+      due to SYSCALL_SIGTRAP.  */
+   void (*get_syscall_trapinfo) (struct regcache *regcache,
+ 				int *sysno, int *sysret);
++
++  /* See target.h.  */
++  int (*get_ipa_tdesc_idx) (void);
+ };
+
+ extern struct linux_target_ops the_low_target;
+diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
+index 0c4954a..2535959 100644
+--- a/gdb/gdbserver/linux-x86-low.c
++++ b/gdb/gdbserver/linux-x86-low.c
+@@ -45,57 +45,7 @@
+ #include "nat/linux-nat.h"
+ #include "nat/x86-linux.h"
+ #include "nat/x86-linux-dregs.h"
+-
+-#ifdef __x86_64__
+-/* Defined in auto-generated file amd64-linux.c.  */
+-void init_registers_amd64_linux (void);
+-extern const struct target_desc *tdesc_amd64_linux;
+-
+-/* Defined in auto-generated file amd64-avx-linux.c.  */
+-void init_registers_amd64_avx_linux (void);
+-extern const struct target_desc *tdesc_amd64_avx_linux;
+-
+-/* Defined in auto-generated file amd64-avx512-linux.c.  */
+-void init_registers_amd64_avx512_linux (void);
+-extern const struct target_desc *tdesc_amd64_avx512_linux;
+-
+-/* Defined in auto-generated file amd64-mpx-linux.c.  */
+-void init_registers_amd64_mpx_linux (void);
+-extern const struct target_desc *tdesc_amd64_mpx_linux;
+-
+-/* Defined in auto-generated file x32-linux.c.  */
+-void init_registers_x32_linux (void);
+-extern const struct target_desc *tdesc_x32_linux;
+-
+-/* Defined in auto-generated file x32-avx-linux.c.  */
+-void init_registers_x32_avx_linux (void);
+-extern const struct target_desc *tdesc_x32_avx_linux;
+-
+-/* Defined in auto-generated file x32-avx512-linux.c.  */
+-void init_registers_x32_avx512_linux (void);
+-extern const struct target_desc *tdesc_x32_avx512_linux;
+-
+-#endif
+-
+-/* Defined in auto-generated file i386-linux.c.  */
+-void init_registers_i386_linux (void);
+-extern const struct target_desc *tdesc_i386_linux;
+-
+-/* Defined in auto-generated file i386-mmx-linux.c.  */
+-void init_registers_i386_mmx_linux (void);
+-extern const struct target_desc *tdesc_i386_mmx_linux;
+-
+-/* Defined in auto-generated file i386-avx-linux.c.  */
+-void init_registers_i386_avx_linux (void);
+-extern const struct target_desc *tdesc_i386_avx_linux;
+-
+-/* Defined in auto-generated file i386-avx512-linux.c.  */
+-void init_registers_i386_avx512_linux (void);
+-extern const struct target_desc *tdesc_i386_avx512_linux;
+-
+-/* Defined in auto-generated file i386-mpx-linux.c.  */
+-void init_registers_i386_mpx_linux (void);
+-extern const struct target_desc *tdesc_i386_mpx_linux;
++#include "linux-x86-tdesc.h"
+
+ #ifdef __x86_64__
+ static struct target_desc *tdesc_amd64_linux_no_xml;
+@@ -839,6 +789,9 @@ x86_linux_read_description (void)
+ 		case X86_XSTATE_AVX512_MASK:
+ 		  return tdesc_amd64_avx512_linux;
+
++		case X86_XSTATE_AVX_MPX_MASK:
++		  return tdesc_amd64_avx_mpx_linux;
++
+ 		case X86_XSTATE_MPX_MASK:
+ 		  return tdesc_amd64_mpx_linux;
+
+@@ -886,6 +839,9 @@ x86_linux_read_description (void)
+ 	    case (X86_XSTATE_MPX_MASK):
+ 	      return tdesc_i386_mpx_linux;
+
++	    case (X86_XSTATE_AVX_MPX_MASK):
++	      return tdesc_i386_avx_mpx_linux;
++
+ 	    case (X86_XSTATE_AVX_MASK):
+ 	      return tdesc_i386_avx_linux;
+
+@@ -2891,6 +2847,42 @@ x86_supports_hardware_single_step (void)
+   return 1;
+ }
+
++static int
++x86_get_ipa_tdesc_idx (void)
++{
++  struct regcache *regcache = get_thread_regcache (current_thread, 0);
++  const struct target_desc *tdesc = regcache->tdesc;
++
++#ifdef __x86_64__
++  if (tdesc == tdesc_amd64_linux || tdesc == tdesc_amd64_linux_no_xml
++      || tdesc == tdesc_x32_linux)
++    return X86_TDESC_SSE;
++  if (tdesc == tdesc_amd64_avx_linux || tdesc == tdesc_x32_avx_linux)
++    return X86_TDESC_AVX;
++  if (tdesc == tdesc_amd64_mpx_linux)
++    return X86_TDESC_MPX;
++  if (tdesc == tdesc_amd64_avx_mpx_linux)
++    return X86_TDESC_AVX_MPX;
++  if (tdesc == tdesc_amd64_avx512_linux || tdesc == tdesc_x32_avx512_linux)
++    return X86_TDESC_AVX512;
++#endif
++
++  if (tdesc == tdesc_i386_mmx_linux)
++    return X86_TDESC_MMX;
++  if (tdesc == tdesc_i386_linux || tdesc == tdesc_i386_linux_no_xml)
++    return X86_TDESC_SSE;
++  if (tdesc == tdesc_i386_avx_linux)
++    return X86_TDESC_AVX;
++  if (tdesc == tdesc_i386_mpx_linux)
++    return X86_TDESC_MPX;
++  if (tdesc == tdesc_i386_avx_mpx_linux)
++    return X86_TDESC_AVX_MPX;
++  if (tdesc == tdesc_i386_avx512_linux)
++    return X86_TDESC_AVX512;
++
++  return 0;
++}
++
+ /* This is initialized assuming an amd64 target.
+    x86_arch_setup will correct it for i386 or amd64 targets.  */
+
+@@ -2934,6 +2926,7 @@ struct linux_target_ops the_low_target =
+   NULL, /* breakpoint_kind_from_current_state */
+   x86_supports_hardware_single_step,
+   x86_get_syscall_trapinfo,
++  x86_get_ipa_tdesc_idx,
+ };
+
+ void
+@@ -2945,6 +2938,7 @@ initialize_low_arch (void)
+   init_registers_amd64_avx_linux ();
+   init_registers_amd64_avx512_linux ();
+   init_registers_amd64_mpx_linux ();
++  init_registers_amd64_avx_mpx_linux ();
+
+   init_registers_x32_linux ();
+   init_registers_x32_avx_linux ();
+@@ -2959,6 +2953,7 @@ initialize_low_arch (void)
+   init_registers_i386_avx_linux ();
+   init_registers_i386_avx512_linux ();
+   init_registers_i386_mpx_linux ();
++  init_registers_i386_avx_mpx_linux ();
+
+   tdesc_i386_linux_no_xml = XNEW (struct target_desc);
+   copy_target_description (tdesc_i386_linux_no_xml, tdesc_i386_linux);
+diff --git a/gdb/gdbserver/linux-x86-tdesc.h b/gdb/gdbserver/linux-x86-tdesc.h
+new file mode 100644
+index 0000000..720f50c
+--- /dev/null
++++ b/gdb/gdbserver/linux-x86-tdesc.h
+@@ -0,0 +1,98 @@
++/* Low level support for x86 (i386 and x86-64), shared between gdbserver
++   and IPA.
++
++   Copyright (C) 2016 Free Software Foundation, Inc.
++
++   This file is part of GDB.
++
++   This program is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 3 of the License, or
++   (at your option) any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
++
++/* Note: since IPA obviously knows what ABI it's running on (i386 vs x86_64
++   vs x32), it's sufficient to pass only the register set here.  This,
++   together with the ABI known at IPA compile time, maps to a tdesc.  */
++
++enum x86_linux_tdesc {
++  X86_TDESC_MMX = 0,
++  X86_TDESC_SSE = 1,
++  X86_TDESC_AVX = 2,
++  X86_TDESC_MPX = 3,
++  X86_TDESC_AVX_MPX = 4,
++  X86_TDESC_AVX512 = 5,
++};
++
++#ifdef __x86_64__
++
++#if defined __LP64__  || !defined IN_PROCESS_AGENT
++/* Defined in auto-generated file amd64-linux.c.  */
++void init_registers_amd64_linux (void);
++extern const struct target_desc *tdesc_amd64_linux;
++
++/* Defined in auto-generated file amd64-avx-linux.c.  */
++void init_registers_amd64_avx_linux (void);
++extern const struct target_desc *tdesc_amd64_avx_linux;
++
++/* Defined in auto-generated file amd64-avx512-linux.c.  */
++void init_registers_amd64_avx512_linux (void);
++extern const struct target_desc *tdesc_amd64_avx512_linux;
++
++/* Defined in auto-generated file amd64-avx-mpx-linux.c.  */
++void init_registers_amd64_avx_mpx_linux (void);
++extern const struct target_desc *tdesc_amd64_avx_mpx_linux;
++
++/* Defined in auto-generated file amd64-mpx-linux.c.  */
++void init_registers_amd64_mpx_linux (void);
++extern const struct target_desc *tdesc_amd64_mpx_linux;
++#endif
++
++#if defined __ILP32__ || !defined IN_PROCESS_AGENT
++/* Defined in auto-generated file x32-linux.c.  */
++void init_registers_x32_linux (void);
++extern const struct target_desc *tdesc_x32_linux;
++
++/* Defined in auto-generated file x32-avx-linux.c.  */
++void init_registers_x32_avx_linux (void);
++extern const struct target_desc *tdesc_x32_avx_linux;
++
++/* Defined in auto-generated file x32-avx512-linux.c.  */
++void init_registers_x32_avx512_linux (void);
++extern const struct target_desc *tdesc_x32_avx512_linux;
++#endif
++
++#endif
++
++#if defined __i386__ || !defined IN_PROCESS_AGENT
++/* Defined in auto-generated file i386-linux.c.  */
++void init_registers_i386_linux (void);
++extern const struct target_desc *tdesc_i386_linux;
++
++/* Defined in auto-generated file i386-mmx-linux.c.  */
++void init_registers_i386_mmx_linux (void);
++extern const struct target_desc *tdesc_i386_mmx_linux;
++
++/* Defined in auto-generated file i386-avx-linux.c.  */
++void init_registers_i386_avx_linux (void);
++extern const struct target_desc *tdesc_i386_avx_linux;
++
++/* Defined in auto-generated file i386-avx-mpx-linux.c.  */
++void init_registers_i386_avx_mpx_linux (void);
++extern const struct target_desc *tdesc_i386_avx_mpx_linux;
++
++/* Defined in auto-generated file i386-avx512-linux.c.  */
++void init_registers_i386_avx512_linux (void);
++extern const struct target_desc *tdesc_i386_avx512_linux;
++
++/* Defined in auto-generated file i386-mpx-linux.c.  */
++void init_registers_i386_mpx_linux (void);
++extern const struct target_desc *tdesc_i386_mpx_linux;
++#endif
+diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
+index 5af2051..4c14c20 100644
+--- a/gdb/gdbserver/target.h
++++ b/gdb/gdbserver/target.h
+@@ -471,6 +471,9 @@ struct target_ops
+   /* Return 1 if the target supports catch syscall, 0 (or leave the
+      callback NULL) otherwise.  */
+   int (*supports_catch_syscall) (void);
++
++  /* Return tdesc index for IPA.  */
++  int (*get_ipa_tdesc_idx) (void);
+ };
+
+ extern struct target_ops *the_target;
+@@ -550,6 +553,10 @@ int kill_inferior (int);
+   (the_target->supports_catch_syscall ?			\
+    (*the_target->supports_catch_syscall) () : 0)
+
++#define target_get_ipa_tdesc_idx()			\
++  (the_target->get_ipa_tdesc_idx			\
++   ? (*the_target->get_ipa_tdesc_idx) () : 0)
++
+ #define target_supports_tracepoints()			\
+   (the_target->supports_tracepoints			\
+    ? (*the_target->supports_tracepoints) () : 0)
+diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c
+index 0671999..cc86677 100644
+--- a/gdb/gdbserver/tracepoint.c
++++ b/gdb/gdbserver/tracepoint.c
+@@ -134,6 +134,7 @@ trace_vdebug (const char *fmt, ...)
+ # define ust_loaded IPA_SYM_EXPORTED_NAME (ust_loaded)
+ # define helper_thread_id IPA_SYM_EXPORTED_NAME (helper_thread_id)
+ # define cmd_buf IPA_SYM_EXPORTED_NAME (cmd_buf)
++# define ipa_tdesc_idx IPA_SYM_EXPORTED_NAME (ipa_tdesc_idx)
+ #endif
+
+ #ifndef IN_PROCESS_AGENT
+@@ -171,6 +172,7 @@ struct ipa_sym_addresses
+   CORE_ADDR addr_get_trace_state_variable_value;
+   CORE_ADDR addr_set_trace_state_variable_value;
+   CORE_ADDR addr_ust_loaded;
++  CORE_ADDR addr_ipa_tdesc_idx;
+ };
+
+ static struct
+@@ -207,6 +209,7 @@ static struct
+   IPA_SYM(get_trace_state_variable_value),
+   IPA_SYM(set_trace_state_variable_value),
+   IPA_SYM(ust_loaded),
++  IPA_SYM(ipa_tdesc_idx),
+ };
+
+ static struct ipa_sym_addresses ipa_sym_addrs;
+@@ -3231,6 +3234,11 @@ cmd_qtstart (char *packet)
+
+   *packet = '\0';
+
++  /* Tell IPA about the correct tdesc.  */
++  if (write_inferior_integer (ipa_sym_addrs.addr_ipa_tdesc_idx,
++			      target_get_ipa_tdesc_idx ()))
++    error ("Error setting ipa_tdesc_idx variable in lib");
++
+   /* Start out empty.  */
+   if (agent_loaded_p ())
+     write_inferior_data_ptr (ipa_sym_addrs.addr_tracepoints, 0);
+@@ -4714,19 +4722,20 @@ collect_data_at_step (struct tracepoint_hit_ctx *ctx,
+ #endif
+
+ #ifdef IN_PROCESS_AGENT
+-/* The target description used by the IPA.  Given that the IPA library
+-   is built for a specific architecture that is loaded into the
+-   inferior, there only needs to be one such description per
+-   build.  */
+-const struct target_desc *ipa_tdesc;
++/* The target description index for IPA.  Passed from gdbserver, used
++   to select ipa_tdesc.  */
++EXTERN_C_PUSH
++IP_AGENT_EXPORT_VAR int ipa_tdesc_idx;
++EXTERN_C_POP
+ #endif
+
+ static struct regcache *
+ get_context_regcache (struct tracepoint_hit_ctx *ctx)
+ {
+   struct regcache *regcache = NULL;
+-
+ #ifdef IN_PROCESS_AGENT
++  const struct target_desc *ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
++
+   if (ctx->type == fast_tracepoint)
+     {
+       struct fast_tracepoint_ctx *fctx = (struct fast_tracepoint_ctx *) ctx;
+@@ -5799,11 +5808,13 @@ IP_AGENT_EXPORT_FUNC void
+ gdb_collect (struct tracepoint *tpoint, unsigned char *regs)
+ {
+   struct fast_tracepoint_ctx ctx;
++  const struct target_desc *ipa_tdesc;
+
+   /* Don't do anything until the trace run is completely set up.  */
+   if (!tracing)
+     return;
+
++  ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
+   ctx.base.type = fast_tracepoint;
+   ctx.regs = regs;
+   ctx.regcache_initted = 0;
+@@ -6660,6 +6671,7 @@ gdb_probe (const struct marker *mdata, void *probe_private,
+ {
+   struct tracepoint *tpoint;
+   struct static_tracepoint_ctx ctx;
++  const struct target_desc *ipa_tdesc;
+
+   /* Don't do anything until the trace run is completely set up.  */
+   if (!tracing)
+@@ -6668,6 +6680,7 @@ gdb_probe (const struct marker *mdata, void *probe_private,
+       return;
+     }
+
++  ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
+   ctx.base.type = static_tracepoint;
+   ctx.regcache_initted = 0;
+   ctx.regs = regs;
+diff --git a/gdb/gdbserver/tracepoint.h b/gdb/gdbserver/tracepoint.h
+index cab89cf..e30f4f7 100644
+--- a/gdb/gdbserver/tracepoint.h
++++ b/gdb/gdbserver/tracepoint.h
+@@ -124,6 +124,7 @@ int handle_tracepoint_bkpts (struct thread_info *tinfo, CORE_ADDR stop_pc);
+
+ #ifdef IN_PROCESS_AGENT
+ void initialize_low_tracepoint (void);
++const struct target_desc *get_ipa_tdesc (int idx);
+ void supply_fast_tracepoint_registers (struct regcache *regcache,
+ 				       const unsigned char *regs);
+ void supply_static_tracepoint_registers (struct regcache *regcache,
+@@ -131,9 +132,6 @@ void supply_static_tracepoint_registers (struct regcache *regcache,
+ 					 CORE_ADDR pc);
+ void set_trampoline_buffer_space (CORE_ADDR begin, CORE_ADDR end,
+ 				  char *errmsg);
+-
+-extern const struct target_desc *ipa_tdesc;
+-
+ #else
+ void stop_tracing (void);
+
+diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
+index af39e78..df47efd 100644
+--- a/gdb/i386-linux-tdep.c
++++ b/gdb/i386-linux-tdep.c
+@@ -47,6 +47,7 @@
+ #include "features/i386/i386-linux.c"
+ #include "features/i386/i386-mmx-linux.c"
+ #include "features/i386/i386-mpx-linux.c"
++#include "features/i386/i386-avx-mpx-linux.c"
+ #include "features/i386/i386-avx-linux.c"
+ #include "features/i386/i386-avx512-linux.c"
+
+@@ -630,6 +631,8 @@ i386_linux_core_read_description (struct gdbarch *gdbarch,
+       return tdesc_i386_avx512_linux;
+     case X86_XSTATE_MPX_MASK:
+       return tdesc_i386_mpx_linux;
++    case X86_XSTATE_AVX_MPX_MASK:
++      return tdesc_i386_avx_mpx_linux;
+     case X86_XSTATE_AVX_MASK:
+       return tdesc_i386_avx_linux;
+     case X86_XSTATE_SSE_MASK:
+@@ -1018,5 +1021,6 @@ _initialize_i386_linux_tdep (void)
+   initialize_tdesc_i386_mmx_linux ();
+   initialize_tdesc_i386_avx_linux ();
+   initialize_tdesc_i386_mpx_linux ();
++  initialize_tdesc_i386_avx_mpx_linux ();
+   initialize_tdesc_i386_avx512_linux ();
+ }
+diff --git a/gdb/i386-linux-tdep.h b/gdb/i386-linux-tdep.h
+index ecc9e31..0cb0c4d 100644
+--- a/gdb/i386-linux-tdep.h
++++ b/gdb/i386-linux-tdep.h
+@@ -42,6 +42,7 @@ extern struct target_desc *tdesc_i386_linux;
+ extern struct target_desc *tdesc_i386_mmx_linux;
+ extern struct target_desc *tdesc_i386_avx_linux;
+ extern struct target_desc *tdesc_i386_mpx_linux;
++extern struct target_desc *tdesc_i386_avx_mpx_linux;
+ extern struct target_desc *tdesc_i386_avx512_linux;
+
+ /* Format of XSAVE extended state is:
+diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
+index b706463..1ec0a08 100644
+--- a/gdb/i386-tdep.c
++++ b/gdb/i386-tdep.c
+@@ -53,6 +53,7 @@
+ #include "features/i386/i386.c"
+ #include "features/i386/i386-avx.c"
+ #include "features/i386/i386-mpx.c"
++#include "features/i386/i386-avx-mpx.c"
+ #include "features/i386/i386-avx512.c"
+ #include "features/i386/i386-mmx.c"
+
+@@ -8618,6 +8619,8 @@ i386_target_description (uint64_t xcr0)
+     case X86_XSTATE_MPX_AVX512_MASK:
+     case X86_XSTATE_AVX512_MASK:
+       return tdesc_i386_avx512;
++    case X86_XSTATE_AVX_MPX_MASK:
++      return tdesc_i386_avx_mpx;
+     case X86_XSTATE_MPX_MASK:
+       return tdesc_i386_mpx;
+     case X86_XSTATE_AVX_MASK:
+@@ -8957,6 +8960,7 @@ Show Intel Memory Protection Extensions specific variables."),
+   initialize_tdesc_i386_mmx ();
+   initialize_tdesc_i386_avx ();
+   initialize_tdesc_i386_mpx ();
++  initialize_tdesc_i386_avx_mpx ();
+   initialize_tdesc_i386_avx512 ();
+
+   /* Tell remote stub that we support XML target description.  */
+diff --git a/gdb/regformats/i386/amd64-avx-mpx-linux.dat b/gdb/regformats/i386/amd64-avx-mpx-linux.dat
+new file mode 100644
+index 0000000..6d45324
+--- /dev/null
++++ b/gdb/regformats/i386/amd64-avx-mpx-linux.dat
+@@ -0,0 +1,85 @@
++# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
++# Generated from: i386/amd64-avx-mpx-linux.xml
++name:amd64_avx_mpx_linux
++xmltarget:amd64-avx-mpx-linux.xml
++expedite:rbp,rsp,rip
++64:rax
++64:rbx
++64:rcx
++64:rdx
++64:rsi
++64:rdi
++64:rbp
++64:rsp
++64:r8
++64:r9
++64:r10
++64:r11
++64:r12
++64:r13
++64:r14
++64:r15
++64:rip
++32:eflags
++32:cs
++32:ss
++32:ds
++32:es
++32:fs
++32:gs
++80:st0
++80:st1
++80:st2
++80:st3
++80:st4
++80:st5
++80:st6
++80:st7
++32:fctrl
++32:fstat
++32:ftag
++32:fiseg
++32:fioff
++32:foseg
++32:fooff
++32:fop
++128:xmm0
++128:xmm1
++128:xmm2
++128:xmm3
++128:xmm4
++128:xmm5
++128:xmm6
++128:xmm7
++128:xmm8
++128:xmm9
++128:xmm10
++128:xmm11
++128:xmm12
++128:xmm13
++128:xmm14
++128:xmm15
++32:mxcsr
++64:orig_rax
++128:ymm0h
++128:ymm1h
++128:ymm2h
++128:ymm3h
++128:ymm4h
++128:ymm5h
++128:ymm6h
++128:ymm7h
++128:ymm8h
++128:ymm9h
++128:ymm10h
++128:ymm11h
++128:ymm12h
++128:ymm13h
++128:ymm14h
++128:ymm15h
++128:bnd0raw
++128:bnd1raw
++128:bnd2raw
++128:bnd3raw
++64:bndcfgu
++64:bndstatus
+diff --git a/gdb/regformats/i386/amd64-avx-mpx.dat b/gdb/regformats/i386/amd64-avx-mpx.dat
+new file mode 100644
+index 0000000..d985641
+--- /dev/null
++++ b/gdb/regformats/i386/amd64-avx-mpx.dat
+@@ -0,0 +1,84 @@
++# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
++# Generated from: i386/amd64-avx-mpx.xml
++name:amd64_avx_mpx
++xmltarget:amd64-avx-mpx.xml
++expedite:rbp,rsp,rip
++64:rax
++64:rbx
++64:rcx
++64:rdx
++64:rsi
++64:rdi
++64:rbp
++64:rsp
++64:r8
++64:r9
++64:r10
++64:r11
++64:r12
++64:r13
++64:r14
++64:r15
++64:rip
++32:eflags
++32:cs
++32:ss
++32:ds
++32:es
++32:fs
++32:gs
++80:st0
++80:st1
++80:st2
++80:st3
++80:st4
++80:st5
++80:st6
++80:st7
++32:fctrl
++32:fstat
++32:ftag
++32:fiseg
++32:fioff
++32:foseg
++32:fooff
++32:fop
++128:xmm0
++128:xmm1
++128:xmm2
++128:xmm3
++128:xmm4
++128:xmm5
++128:xmm6
++128:xmm7
++128:xmm8
++128:xmm9
++128:xmm10
++128:xmm11
++128:xmm12
++128:xmm13
++128:xmm14
++128:xmm15
++32:mxcsr
++128:ymm0h
++128:ymm1h
++128:ymm2h
++128:ymm3h
++128:ymm4h
++128:ymm5h
++128:ymm6h
++128:ymm7h
++128:ymm8h
++128:ymm9h
++128:ymm10h
++128:ymm11h
++128:ymm12h
++128:ymm13h
++128:ymm14h
++128:ymm15h
++128:bnd0raw
++128:bnd1raw
++128:bnd2raw
++128:bnd3raw
++64:bndcfgu
++64:bndstatus
+diff --git a/gdb/regformats/i386/amd64-mpx-linux.dat b/gdb/regformats/i386/amd64-mpx-linux.dat
+index 7a05cfe..523ae01 100644
+--- a/gdb/regformats/i386/amd64-mpx-linux.dat
++++ b/gdb/regformats/i386/amd64-mpx-linux.dat
+@@ -61,22 +61,6 @@ expedite:rbp,rsp,rip
+ 128:xmm15
+ 32:mxcsr
+ 64:orig_rax
+-128:ymm0h
+-128:ymm1h
+-128:ymm2h
+-128:ymm3h
+-128:ymm4h
+-128:ymm5h
+-128:ymm6h
+-128:ymm7h
+-128:ymm8h
+-128:ymm9h
+-128:ymm10h
+-128:ymm11h
+-128:ymm12h
+-128:ymm13h
+-128:ymm14h
+-128:ymm15h
+ 128:bnd0raw
+ 128:bnd1raw
+ 128:bnd2raw
+diff --git a/gdb/regformats/i386/amd64-mpx.dat b/gdb/regformats/i386/amd64-mpx.dat
+index 1b75f4d..43b8776 100644
+--- a/gdb/regformats/i386/amd64-mpx.dat
++++ b/gdb/regformats/i386/amd64-mpx.dat
+@@ -60,22 +60,6 @@ expedite:rbp,rsp,rip
+ 128:xmm14
+ 128:xmm15
+ 32:mxcsr
+-128:ymm0h
+-128:ymm1h
+-128:ymm2h
+-128:ymm3h
+-128:ymm4h
+-128:ymm5h
+-128:ymm6h
+-128:ymm7h
+-128:ymm8h
+-128:ymm9h
+-128:ymm10h
+-128:ymm11h
+-128:ymm12h
+-128:ymm13h
+-128:ymm14h
+-128:ymm15h
+ 128:bnd0raw
+ 128:bnd1raw
+ 128:bnd2raw
+diff --git a/gdb/regformats/i386/i386-avx-mpx-linux.dat b/gdb/regformats/i386/i386-avx-mpx-linux.dat
+new file mode 100644
+index 0000000..831c476
+--- /dev/null
++++ b/gdb/regformats/i386/i386-avx-mpx-linux.dat
+@@ -0,0 +1,61 @@
++# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
++# Generated from: i386/i386-avx-mpx-linux.xml
++name:i386_avx_mpx_linux
++xmltarget:i386-avx-mpx-linux.xml
++expedite:ebp,esp,eip
++32:eax
++32:ecx
++32:edx
++32:ebx
++32:esp
++32:ebp
++32:esi
++32:edi
++32:eip
++32:eflags
++32:cs
++32:ss
++32:ds
++32:es
++32:fs
++32:gs
++80:st0
++80:st1
++80:st2
++80:st3
++80:st4
++80:st5
++80:st6
++80:st7
++32:fctrl
++32:fstat
++32:ftag
++32:fiseg
++32:fioff
++32:foseg
++32:fooff
++32:fop
++128:xmm0
++128:xmm1
++128:xmm2
++128:xmm3
++128:xmm4
++128:xmm5
++128:xmm6
++128:xmm7
++32:mxcsr
++32:orig_eax
++128:ymm0h
++128:ymm1h
++128:ymm2h
++128:ymm3h
++128:ymm4h
++128:ymm5h
++128:ymm6h
++128:ymm7h
++128:bnd0raw
++128:bnd1raw
++128:bnd2raw
++128:bnd3raw
++64:bndcfgu
++64:bndstatus
+diff --git a/gdb/regformats/i386/i386-avx-mpx.dat b/gdb/regformats/i386/i386-avx-mpx.dat
+new file mode 100644
+index 0000000..8caef75
+--- /dev/null
++++ b/gdb/regformats/i386/i386-avx-mpx.dat
+@@ -0,0 +1,60 @@
++# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
++# Generated from: i386/i386-avx-mpx.xml
++name:i386_avx_mpx
++xmltarget:i386-avx-mpx.xml
++expedite:ebp,esp,eip
++32:eax
++32:ecx
++32:edx
++32:ebx
++32:esp
++32:ebp
++32:esi
++32:edi
++32:eip
++32:eflags
++32:cs
++32:ss
++32:ds
++32:es
++32:fs
++32:gs
++80:st0
++80:st1
++80:st2
++80:st3
++80:st4
++80:st5
++80:st6
++80:st7
++32:fctrl
++32:fstat
++32:ftag
++32:fiseg
++32:fioff
++32:foseg
++32:fooff
++32:fop
++128:xmm0
++128:xmm1
++128:xmm2
++128:xmm3
++128:xmm4
++128:xmm5
++128:xmm6
++128:xmm7
++32:mxcsr
++128:ymm0h
++128:ymm1h
++128:ymm2h
++128:ymm3h
++128:ymm4h
++128:ymm5h
++128:ymm6h
++128:ymm7h
++128:bnd0raw
++128:bnd1raw
++128:bnd2raw
++128:bnd3raw
++64:bndcfgu
++64:bndstatus
+diff --git a/gdb/regformats/i386/i386-mpx-linux.dat b/gdb/regformats/i386/i386-mpx-linux.dat
+index b52b68d..1dcdce9 100644
+--- a/gdb/regformats/i386/i386-mpx-linux.dat
++++ b/gdb/regformats/i386/i386-mpx-linux.dat
+@@ -45,14 +45,6 @@ expedite:ebp,esp,eip
+ 128:xmm7
+ 32:mxcsr
+ 32:orig_eax
+-128:ymm0h
+-128:ymm1h
+-128:ymm2h
+-128:ymm3h
+-128:ymm4h
+-128:ymm5h
+-128:ymm6h
+-128:ymm7h
+ 128:bnd0raw
+ 128:bnd1raw
+ 128:bnd2raw
+diff --git a/gdb/regformats/i386/i386-mpx.dat b/gdb/regformats/i386/i386-mpx.dat
+index 0ea420b..dda5164 100644
+--- a/gdb/regformats/i386/i386-mpx.dat
++++ b/gdb/regformats/i386/i386-mpx.dat
+@@ -44,14 +44,6 @@ expedite:ebp,esp,eip
+ 128:xmm6
+ 128:xmm7
+ 32:mxcsr
+-128:ymm0h
+-128:ymm1h
+-128:ymm2h
+-128:ymm3h
+-128:ymm4h
+-128:ymm5h
+-128:ymm6h
+-128:ymm7h
+ 128:bnd0raw
+ 128:bnd1raw
+ 128:bnd2raw
+diff --git a/gdb/testsuite/gdb.trace/ftrace.exp b/gdb/testsuite/gdb.trace/ftrace.exp
+index 15ad7e7..3a94471 100644
+--- a/gdb/testsuite/gdb.trace/ftrace.exp
++++ b/gdb/testsuite/gdb.trace/ftrace.exp
+@@ -132,7 +132,6 @@ proc test_fast_tracepoints {} {
+ 	gdb_test "tfind pc *set_point" "Found trace frame .*" \
+ 	    "tfind set_point frame, first time"
+
+-	setup_kfail "gdb/13808" "x86_64-*-linux*"
+ 	gdb_test "print globvar" " = 1"
+
+ 	gdb_test "tfind pc *set_point" "Found trace frame .*" \
+diff --git a/gdb/x86-linux-nat.c b/gdb/x86-linux-nat.c
+index 3cc18c1..107576f 100644
+--- a/gdb/x86-linux-nat.c
++++ b/gdb/x86-linux-nat.c
+@@ -215,6 +215,11 @@ x86_linux_read_description (struct target_ops *ops)
+ 	    return tdesc_x32_avx_linux; /* No MPX on x32 using AVX.  */
+ 	  else
+ 	    return tdesc_amd64_mpx_linux;
++	case X86_XSTATE_AVX_MPX_MASK:
++	  if (is_x32)
++	    return tdesc_x32_avx_linux; /* No MPX on x32 using AVX.  */
++	  else
++	    return tdesc_amd64_avx_mpx_linux;
+ 	case X86_XSTATE_AVX_MASK:
+ 	  if (is_x32)
+ 	    return tdesc_x32_avx_linux;
+@@ -237,6 +242,8 @@ x86_linux_read_description (struct target_ops *ops)
+ 	  return tdesc_i386_avx512_linux;
+ 	case X86_XSTATE_MPX_MASK:
+ 	  return tdesc_i386_mpx_linux;
++	case X86_XSTATE_AVX_MPX_MASK:
++	  return tdesc_i386_avx_mpx_linux;
+ 	case X86_XSTATE_AVX_MASK:
+ 	  return tdesc_i386_avx_linux;
+ 	default:
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/force-readline-static.patch b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/force-readline-static.patch
deleted file mode 100644
index d34ee8c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb/force-readline-static.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-If gdb is configured with --disable-static then this is dutifully passed to
-readline which then disables libreadline.a, which causes a problem when gdb
-tries to link against that.
-
-To ensure that readline always builds static libraries, pass --enable-static to
-the sub-configure.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/Makefile.def b/Makefile.def
-index 4394188..05c661a 100644
---- a/Makefile.def
-+++ b/Makefile.def
-@@ -100,7 +100,8 @@ host_modules= { module= libiconv;
- 		missing= install-html;
- 		missing= install-info; };
- host_modules= { module= m4; };
--host_modules= { module= readline; };
-+host_modules= { module= readline;
-+                extra_configure_flags='--enable-static';};
- host_modules= { module= sid; };
- host_modules= { module= sim; };
- host_modules= { module= texinfo; no_install= true; };
-diff --git a/Makefile.in b/Makefile.in
-index 61e0ab6..837f36e 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -24971,7 +24971,7 @@ configure-readline:
- 	  $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
--	  --target=${target_alias}  \
-+	  --target=${target_alias} --enable-static \
- 	  || exit 1
- @endif readline
- 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.10.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.10.1.bb
deleted file mode 100644
index f897e12..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.10.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require gdb.inc
-require gdb-${PV}.inc
-
-inherit python-dir
-
-do_configure_prepend() {
-	if [ -n "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python', '', d)}" ]; then
-		cat > ${WORKDIR}/python << EOF
-#!/bin/sh
-case "\$2" in
-	--includes) echo "-I${STAGING_INCDIR}/${PYTHON_DIR}/" ;;
-	--ldflags) echo "-Wl,-rpath-link,${STAGING_LIBDIR}/.. -Wl,-rpath,${libdir}/.. -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}" ;;
-	--exec-prefix) echo "${exec_prefix}" ;;
-	*) exit 1 ;;
-esac
-exit 0
-EOF
-		chmod +x ${WORKDIR}/python
-	fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.11.bb b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.11.bb
new file mode 100644
index 0000000..57cffc9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.11.bb
@@ -0,0 +1,26 @@
+require gdb.inc
+require gdb-${PV}.inc
+
+inherit python3-dir
+
+EXTRA_OEMAKE_append_libc-musl = "\
+                                 gt_cv_func_gnugettext1_libc=yes \
+                                 gt_cv_func_gnugettext2_libc=yes \
+                                "
+
+do_configure_prepend() {
+	if [ -n "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python', '', d)}" ]; then
+		cat > ${WORKDIR}/python << EOF
+#!/bin/sh
+case "\$2" in
+	--includes) echo "-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}/" ;;
+	--ldflags) echo "-Wl,-rpath-link,${STAGING_LIBDIR}/.. -Wl,-rpath,${libdir}/.. -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}${PYTHON_ABI}" ;;
+	--exec-prefix) echo "${exec_prefix}" ;;
+	*) exit 1 ;;
+esac
+exit 0
+EOF
+		chmod +x ${WORKDIR}/python
+	fi
+}
+CFLAGS_append_libc-musl = " -Drpl_gettimeofday=gettimeofday"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/git/git.inc b/import-layers/yocto-poky/meta/recipes-devtools/git/git.inc
index a1d0300..753b047 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/git/git.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/git/git.inc
@@ -17,6 +17,7 @@
 		--without-tcltk \
 "
 
+# Needs brokensep as this doesn't use automake
 inherit autotools-brokensep perlnative bash-completion
 
 EXTRA_OEMAKE = "NO_PYTHON=1 CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}'"
@@ -31,8 +32,7 @@
 
 do_install () {
 	oe_runmake install DESTDIR="${D}" bindir=${bindir} \
-		template_dir=${datadir}/git-core/templates \
-		GIT_PYTHON_DIR=${D}${datadir}/git-core/python
+		template_dir=${datadir}/git-core/templates
 	install -d ${D}/${mandir}/man1
 	install -d ${D}/${mandir}/man5
 	install -d ${D}/${mandir}/man7
@@ -107,10 +107,6 @@
 "
 RDEPENDS_${PN}-perltools = "${PN} perl perl-module-file-path findutils"
 
-PACKAGES =+ "${PN}-python"
-FILES_${PN}-python = "${libdir}/python*"
-
-
 # git-tk package with gitk and git-gui
 PACKAGES =+ "${PN}-tk"
 #RDEPENDS_${PN}-tk = "${PN} tk tcl"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/git/git_2.7.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/git/git_2.7.4.bb
deleted file mode 100644
index bc72793..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/git/git_2.7.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require git.inc
-
-EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
-                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
-                 "
-EXTRA_OEMAKE += "NO_GETTEXT=1"
-
-SRC_URI[tarball.md5sum] = "c64012d491e24c7d65cd389f75383d91"
-SRC_URI[tarball.sha256sum] = "7104c4f5d948a75b499a954524cb281fe30c6649d8abe20982936f75ec1f275b"
-SRC_URI[manpages.md5sum] = "58020dc13a5801c49f7986fef7027535"
-SRC_URI[manpages.sha256sum] = "0dfe1931ad302873470e0280248e3aa50502b5edd00dcc3e9c9173667b6fea6a"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/git/git_2.9.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/git/git_2.9.3.bb
new file mode 100644
index 0000000..d59f3d2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/git/git_2.9.3.bb
@@ -0,0 +1,11 @@
+require git.inc
+
+EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
+                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
+                 "
+EXTRA_OEMAKE += "NO_GETTEXT=1"
+
+SRC_URI[tarball.md5sum] = "c783361be894b8bfa5373811b1b65602"
+SRC_URI[tarball.sha256sum] = "a252b6636b12d5ba57732c8469701544c26c2b1689933bd1b425e603cbb247c0"
+SRC_URI[manpages.md5sum] = "66fafd61d65f9d2d99581133170eb186"
+SRC_URI[manpages.sha256sum] = "8ea1a55b048fafbf0c0c6fcbca4b5b0f5e9917893221fc7345c09051d65832ce"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/0001-libguile-Check-for-strtol_l-during-configure.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/0001-libguile-Check-for-strtol_l-during-configure.patch
deleted file mode 100644
index 24f073f..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/0001-libguile-Check-for-strtol_l-during-configure.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 814d6fb6c1f4a544c8fd37f5a390ba020c2d8c85 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 10 Jan 2016 22:28:17 +0000
-Subject: [PATCH] libguile: Check for strtol_l during configure
-
-strtol_l is a gnu extention which may not be available on other linux
-libc implementations e.g. musl. Therefore check for this funciton and
-conditionalize the use of it.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- configure.ac    | 5 +++--
- libguile/i18n.c | 2 +-
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 3969929..f8a6a1a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -752,7 +752,8 @@ AC_CHECK_HEADERS([assert.h crt_externs.h])
- #   truncate - not in mingw
- #   isblank - available as a GNU extension or in C99
- #   _NSGetEnviron - Darwin specific
--#   strcoll_l, newlocale - GNU extensions (glibc), also available on Darwin
-+#   strcoll_l, newlocale, strtol_l - GNU extensions (glibc),
-+#                                    also available on Darwin
- #   fork - unavailable on Windows
- #   utimensat - posix.1-2008
- #   sched_getaffinity, sched_setaffinity - GNU extensions (glibc)
-@@ -768,7 +769,7 @@ AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid		\
-   getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp	\
-   index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron	\
-   strcoll strcoll_l newlocale utimensat sched_getaffinity		\
--  sched_setaffinity sendfile])
-+  sched_setaffinity sendfile strtol_l])
- 
- AM_CONDITIONAL([BUILD_ICE_9_POPEN],
-   [test "x$enable_posix" = "xyes" && test "x$ac_cv_func_fork" = "xyes"])
-diff --git a/libguile/i18n.c b/libguile/i18n.c
-index 97d44b0..9fb6976 100644
---- a/libguile/i18n.c
-+++ b/libguile/i18n.c
-@@ -1352,7 +1352,7 @@ SCM_DEFINE (scm_locale_string_to_integer, "locale-string->integer",
- 
-   if (c_locale != NULL)
-     {
--#ifdef USE_GNU_LOCALE_API
-+#if defined(USE_GNU_LOCALE_API) && defined(HAVE_STRTOL_L)
-       c_result = strtol_l (c_str, &c_endptr, c_base, c_locale);
- #else
-       RUN_IN_LOCALE_SECTION (c_locale,
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/0002-Recognize-nios2-as-compilation-target.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/0002-Recognize-nios2-as-compilation-target.patch
index 519585b..8e84747 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/0002-Recognize-nios2-as-compilation-target.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/0002-Recognize-nios2-as-compilation-target.patch
@@ -10,27 +10,23 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/module/system/base/target.scm b/module/system/base/target.scm
-index d60a8e0..d1f6cff 100644
 --- a/module/system/base/target.scm
 +++ b/module/system/base/target.scm
 @@ -65,7 +65,7 @@
        (cond ((string-match "^i[0-9]86$" cpu)
               (endianness little))
              ((member cpu '("x86_64" "ia64"
--                           "powerpcle" "powerpc64le" "mipsel" "mips64el"))
-+                           "powerpcle" "powerpc64le" "mipsel" "mips64el" "nios2"))
+-                           "powerpcle" "powerpc64le" "mipsel" "mips64el" "sh4"))
++                           "powerpcle" "powerpc64le" "mipsel" "mips64el" "sh4" "nios2"))
               (endianness little))
              ((member cpu '("sparc" "sparc64" "powerpc" "powerpc64" "spu"
-                            "mips" "mips64"))
-@@ -100,7 +100,7 @@
+                            "mips" "mips64" "m68k" "s390x"))
+@@ -108,7 +108,7 @@
  
            ((string-match "64$" cpu) 8)
-           ((string-match "64[lbe][lbe]$" cpu) 8)
--          ((member cpu '("sparc" "powerpc" "mips" "mipsel")) 4)
-+          ((member cpu '("sparc" "powerpc" "mips" "mipsel" "nios2")) 4)
+           ((string-match "64_?[lbe][lbe]$" cpu) 8)
+-          ((member cpu '("sparc" "powerpc" "mips" "mipsel" "m68k" "sh4")) 4)
++          ((member cpu '("sparc" "powerpc" "mips" "mipsel" "m68k" "sh4" "nios2")) 4)
+           ((member cpu '("s390x")) 8)
            ((string-match "^arm.*" cpu) 4)
            (else (error "unknown CPU word size" cpu)))))
- 
--- 
-2.7.0.rc3
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0002-Mark-Unused-modules-are-removed-gc-test-as-unresolve.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0002-Mark-Unused-modules-are-removed-gc-test-as-unresolve.patch
index 43238a7..c7bf635 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0002-Mark-Unused-modules-are-removed-gc-test-as-unresolve.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0002-Mark-Unused-modules-are-removed-gc-test-as-unresolve.patch
@@ -1,6 +1,6 @@
 Upstream-Status: Inappropriate [debian patch]
 
-Signed-Off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 
 From e52bfcdbaca5dce498678d8f512381e3e39a4066 Mon Sep 17 00:00:00 2001
 From: Rob Browning <rlb@defaultvalue.org>
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0003-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0003-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch
index 34be3b9..d3faf3e 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0003-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/debian/0003-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch
@@ -1,6 +1,6 @@
 Upstream-Status: Inappropriate [debian patch]
 
-Signed-Off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 
 From 848543091d55dddb54a85612155964506d712852 Mon Sep 17 00:00:00 2001
 From: Rob Browning <rlb@defaultvalue.org>
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/guile_2.0.6_fix_sed_error.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/guile_2.0.6_fix_sed_error.patch
index e5dc226..5597bb2 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/guile_2.0.6_fix_sed_error.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/guile_2.0.6_fix_sed_error.patch
@@ -6,7 +6,7 @@
 | sed: -e expression #1, char 9: unknown option to `s'
 | configure.ac:39: error: AC_INIT should be called with package and version arguments
 
-Signed-Off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/01
 
 Index: guile-2.0.5/build-aux/git-version-gen
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/libguile-VM-ASM_MUL-for-ARM-Add-earlyclobber.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/libguile-VM-ASM_MUL-for-ARM-Add-earlyclobber.patch
deleted file mode 100644
index e50059a..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/libguile-VM-ASM_MUL-for-ARM-Add-earlyclobber.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From a85c78ea1393985fdb6e6678dea19135c553d341 Mon Sep 17 00:00:00 2001
-From: Mark H Weaver <mhw@netris.org>
-Date: Fri, 19 Sep 2014 21:18:09 -0400
-Subject: [PATCH] VM: ASM_MUL for ARM: Add earlyclobber constraint to the SMULL
- outputs.
-
-Reported by Rob Browning <rlb@defaultvalue.org>.
-
-* libguile/vm-i-scheme.c (ASM_MUL)[ARM]: Add earlyclobber (&) constraint
-  to the SMULL output registers.
-
-Author: Mark H Weaver <mhw@netris.org>
-
-Upstream-Status: Backport
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- libguile/vm-i-scheme.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/libguile/vm-i-scheme.c b/libguile/vm-i-scheme.c
-index 587aa95..162efab 100644
---- a/libguile/vm-i-scheme.c
-+++ b/libguile/vm-i-scheme.c
-@@ -1,5 +1,4 @@
--/* Copyright (C) 2001, 2009, 2010, 2011, 2012, 2013,
-- *   2014 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 2009-2014 Free Software Foundation, Inc.
-  * 
-  * This library is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU Lesser General Public License
-@@ -363,7 +362,7 @@ VM_DEFINE_FUNCTION (149, ge, "ge?", 2)
-       {									\
- 	scm_t_signed_bits rlo, rhi;					\
- 	asm ("smull %0, %1, %2, %3\n"					\
--	     : "=r" (rlo), "=r" (rhi)					\
-+	     : "=&r" (rlo), "=&r" (rhi)					\
- 	     : "r" (SCM_UNPACK (x) - scm_tc2_int),			\
- 	       "r" (SCM_I_INUM (y)));					\
- 	if (SCM_LIKELY (SCM_SRS (rlo, 31) == rhi))			\
--- 
-2.3.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/opensuse/guile-64bit.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/opensuse/guile-64bit.patch
index d3e312f..da69b5f 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/opensuse/guile-64bit.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/opensuse/guile-64bit.patch
@@ -1,6 +1,6 @@
 Upstream-Status: Inappropriate [opensuse patch]
 
-Signed-Off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 
 Index: guile-2.0.3/libguile/hash.c
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/opensuse/guile-turn-off-gc-test.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/opensuse/guile-turn-off-gc-test.patch
deleted file mode 100644
index e201486..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/opensuse/guile-turn-off-gc-test.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Upstream-Status: Inappropriate [opensuse patch]
-
-Signed-Off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-
-See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10096
-why this test is turned off.
-Index: guile-2.0.3/test-suite/tests/gc.test
-===================================================================
---- guile-2.0.3.orig/test-suite/tests/gc.test	2011-10-15 09:34:40.000000000 -0700
-+++ guile-2.0.3/test-suite/tests/gc.test	2012-01-13 21:52:10.282540355 -0800
-@@ -65,23 +65,23 @@
-       foo)))
- 
- 
--(with-test-prefix "gc"
--  (pass-if "Unused modules are removed"
--    (let* ((guard (make-guardian))
--           (total 1000))
--
--      (for-each (lambda (x) (guard (make-module))) (iota total))
-+;;(with-test-prefix "gc"
-+;;  (pass-if "Unused modules are removed"
-+;;    (let* ((guard (make-guardian))
-+;;           (total 1000))
-+;;
-+;;      (for-each (lambda (x) (guard (make-module))) (iota total))
- 
-       ;; Avoid false references to the modules on the stack.
--      (stack-cleanup 20)
-+;;      (stack-cleanup 20)
- 
--      (gc)
--      (gc) ;; twice: have to kill the weak vectors.
--      (gc) ;; thrice: because the test doesn't succeed with only
-+;;      (gc)
-+;;      (gc) ;; twice: have to kill the weak vectors.
-+;;      (gc) ;; thrice: because the test doesn't succeed with only
-            ;; one gc round. not sure why.
- 
--      (= (let lp ((i 0))
--           (if (guard)
--               (lp (1+ i))
--               i))
--         total))))
-+;;      (= (let lp ((i 0))
-+;;           (if (guard)
-+;;               (lp (1+ i))
-+;;               i))
-+;;         total))))
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/remove_strcase_l_funcs.patch b/import-layers/yocto-poky/meta/recipes-devtools/guile/files/remove_strcase_l_funcs.patch
deleted file mode 100644
index e7a06fe..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/files/remove_strcase_l_funcs.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-These unused functions cause build failures with uclibc since they reference __uclibc_locale_struct
-and this is exposed by uclibc API headers only if C locales are built, but for OE we build full locale
-support
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-Index: guile-2.0.11/libguile/i18n.c
-===================================================================
---- guile-2.0.11.orig/libguile/i18n.c
-+++ guile-2.0.11/libguile/i18n.c
-@@ -851,27 +851,6 @@ str_downcase (register char *dst, regist
-   *dst = '\0';
- }
- 
--#ifdef USE_GNU_LOCALE_API
--static inline void
--str_upcase_l (register char *dst, register const char *src,
--	      scm_t_locale locale)
--{
--  for (; *src != '\0'; src++, dst++)
--    *dst = toupper_l (*src, locale);
--  *dst = '\0';
--}
--
--static inline void
--str_downcase_l (register char *dst, register const char *src,
--		scm_t_locale locale)
--{
--  for (; *src != '\0'; src++, dst++)
--    *dst = tolower_l (*src, locale);
--  *dst = '\0';
--}
--#endif
--
--
- SCM_DEFINE (scm_string_locale_lt, "string-locale<?", 2, 1, 0,
- 	    (SCM s1, SCM s2, SCM locale),
- 	    "Compare strings @var{s1} and @var{s2} in a locale-dependent way."
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/guile_2.0.11.bb b/import-layers/yocto-poky/meta/recipes-devtools/guile/guile_2.0.11.bb
deleted file mode 100644
index 6cefe66..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/guile/guile_2.0.11.bb
+++ /dev/null
@@ -1,128 +0,0 @@
-SUMMARY = "Guile is the GNU Ubiquitous Intelligent Language for Extensions"
-DESCRIPTION = "Guile is the GNU Ubiquitous Intelligent Language for Extensions,\
- the official extension language for the GNU operating system.\
- Guile is a library designed to help programmers create flexible applications.\
- Using Guile in an application allows the application's functionality to be\
- extended by users or other programmers with plug-ins, modules, or scripts.\
- Guile provides what might be described as 'practical software freedom,'\
- making it possible for users to customize an application to meet their\
- needs without digging into the application's internals."
-
-HOMEPAGE = "http://www.gnu.org/software/guile/"
-SECTION = "devel"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "${GNU_MIRROR}/guile/guile-${PV}.tar.xz \
-           file://debian/0002-Mark-Unused-modules-are-removed-gc-test-as-unresolve.patch \
-           file://debian/0003-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch \
-           file://opensuse/guile-64bit.patch \
-           file://guile_2.0.6_fix_sed_error.patch \
-           file://arm_endianness.patch \
-           file://arm_aarch64.patch \
-           file://workaround-ice-ssa-corruption.patch \
-           file://libguile-Makefile.am-hook.patch \
-           file://libguile-VM-ASM_MUL-for-ARM-Add-earlyclobber.patch \
-           file://remove_strcase_l_funcs.patch \
-           file://0001-libguile-Check-for-strtol_l-during-configure.patch \
-           file://0002-Recognize-nios2-as-compilation-target.patch \
-           "
-
-#           file://debian/0001-Change-guile-to-guile-X.Y-for-info-pages.patch
-#           file://opensuse/guile-turn-off-gc-test.patch
-
-SRC_URI[md5sum] = "03f1bce1a4983076d955003472306a13"
-SRC_URI[sha256sum] = "aed0a4a6db4e310cbdfeb3613fa6f86fddc91ef624c1e3f8937a6304c69103e2"
-
-
-inherit autotools gettext pkgconfig texinfo
-BBCLASSEXTEND = "native"
-
-DEPENDS = "libunistring bdwgc gmp libtool libffi ncurses readline"
-# add guile-native only to the target recipe's DEPENDS
-DEPENDS_append_class-target = " guile-native libatomic-ops"
-
-# The comment of the script guile-config said it has been deprecated but we should
-# at least add the required dependency to make it work since we still provide the script.
-RDEPENDS_${PN} = "pkgconfig"
-
-RDEPENDS_${PN}_append_libc-glibc_class-target = " glibc-gconv-iso8859-1"
-
-EXTRA_OECONF += "${@['--without-libltdl-prefix --without-libgmp-prefix --without-libreadline-prefix', ''][bb.data.inherits_class('native',d)]}"
-
-EXTRA_OECONF_append_class-target = " --with-libunistring-prefix=${STAGING_LIBDIR} \
-                                     --with-libgmp-prefix=${STAGING_LIBDIR} \
-                                     --with-libltdl-prefix=${STAGING_LIBDIR}"
-EXTRA_OECONF_append_libc-uclibc = " guile_cv_use_csqrt=no "
-
-CFLAGS_append_libc-musl = " -DHAVE_GC_SET_FINALIZER_NOTIFIER \
-	                    -DHAVE_GC_GET_HEAP_USAGE_SAFE \
-	                    -DHAVE_GC_GET_FREE_SPACE_DIVISOR \
-	                    -DHAVE_GC_SET_FINALIZE_ON_DEMAND \
-                           "
-
-do_configure_prepend() {
-	mkdir -p po
-}
-
-export GUILE_FOR_BUILD="${BUILD_SYS}-guile"
-
-do_install_append_class-native() {
-	install -m 0755  ${D}${bindir}/guile ${D}${bindir}/${HOST_SYS}-guile
-
-	create_wrapper ${D}/${bindir}/guile \
-		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \
-		GUILE_LOAD_COMPILED_PATH=${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache
-	create_wrapper ${D}${bindir}/${HOST_SYS}-guile \
-		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \
-		GUILE_LOAD_COMPILED_PATH=${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache
-}
-
-do_install_append_class-target() {
-	# cleanup buildpaths in scripts
-	sed -i -e 's:${STAGING_DIR_NATIVE}::' ${D}${bindir}/guile-config
-	sed -i -e 's:${STAGING_DIR_HOST}::' ${D}${bindir}/guile-snarf
-
-	sed -i -e 's:${STAGING_DIR_TARGET}::g' ${D}${libdir}/pkgconfig/guile-2.0.pc
-}
-
-do_install_append_libc-musl() {
-	rm -f ${D}${libdir}/charset.alias
-}
-
-SYSROOT_PREPROCESS_FUNCS = "guile_cross_config"
-
-guile_cross_config() {
-	# this is only for target recipe
-	if [ "${PN}" = "guile" ]
-	then
-	        # Create guile-config returning target values instead of native values
-	        install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}
-        	echo '#!'`which ${BUILD_SYS}-guile`$' \\\n--no-auto-compile -e main -s\n!#\n(define %guile-build-info '\'\( \
-			> ${B}/guile-config.cross
-	        sed -n -e 's:^[ \t]*{[ \t]*":  (:' \
-			-e 's:",[ \t]*": . ":' \
-			-e 's:" *}, *\\:"):' \
-			-e 's:^.*cachedir.*$::' \
-			-e '/^  (/p' \
-			< ${B}/libguile/libpath.h >> ${B}/guile-config.cross
-	        echo '))' >> ${B}/guile-config.cross
-	        cat ${B}/meta/guile-config >> ${B}/guile-config.cross
-	        install ${B}/guile-config.cross ${STAGING_BINDIR_CROSS}/guile-config
-	fi
-}
-
-# Guile needs the compiled files to be newer than the source, and it won't
-# auto-compile into the prefix even if it can write there, so touch them here as
-# sysroot is managed.
-SSTATEPOSTINSTFUNCS += "guile_sstate_postinst"
-guile_sstate_postinst() {
-	if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
-	then
-                find ${STAGING_DIR_TARGET}/${libdir}/guile/2.0/ccache -type f | xargs touch
-	fi
-}
-
-# http://errors.yoctoproject.org/Errors/Details/20491/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/guile/guile_2.0.12.bb b/import-layers/yocto-poky/meta/recipes-devtools/guile/guile_2.0.12.bb
new file mode 100644
index 0000000..d2fe511
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/guile/guile_2.0.12.bb
@@ -0,0 +1,121 @@
+SUMMARY = "Guile is the GNU Ubiquitous Intelligent Language for Extensions"
+DESCRIPTION = "Guile is the GNU Ubiquitous Intelligent Language for Extensions,\
+ the official extension language for the GNU operating system.\
+ Guile is a library designed to help programmers create flexible applications.\
+ Using Guile in an application allows the application's functionality to be\
+ extended by users or other programmers with plug-ins, modules, or scripts.\
+ Guile provides what might be described as 'practical software freedom,'\
+ making it possible for users to customize an application to meet their\
+ needs without digging into the application's internals."
+
+HOMEPAGE = "http://www.gnu.org/software/guile/"
+SECTION = "devel"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "${GNU_MIRROR}/guile/guile-${PV}.tar.xz \
+           file://debian/0002-Mark-Unused-modules-are-removed-gc-test-as-unresolve.patch \
+           file://debian/0003-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch \
+           file://opensuse/guile-64bit.patch \
+           file://guile_2.0.6_fix_sed_error.patch \
+           file://arm_endianness.patch \
+           file://arm_aarch64.patch \
+           file://workaround-ice-ssa-corruption.patch \
+           file://libguile-Makefile.am-hook.patch \
+           file://0002-Recognize-nios2-as-compilation-target.patch \
+           "
+
+SRC_URI[md5sum] = "081fdf80cd3a76f260a2a0d87f773d6b"
+SRC_URI[sha256sum] = "de8187736f9b260f2fa776ed39b52cb74dd389ccf7039c042f0606270196b7e9"
+
+inherit autotools gettext pkgconfig texinfo
+BBCLASSEXTEND = "native"
+
+DEPENDS = "libunistring bdwgc gmp libtool libffi ncurses readline"
+# add guile-native only to the target recipe's DEPENDS
+DEPENDS_append_class-target = " guile-native libatomic-ops"
+
+# The comment of the script guile-config said it has been deprecated but we should
+# at least add the required dependency to make it work since we still provide the script.
+RDEPENDS_${PN} = "pkgconfig"
+
+RDEPENDS_${PN}_append_libc-glibc_class-target = " glibc-gconv-iso8859-1"
+
+EXTRA_OECONF += "${@['--without-libltdl-prefix --without-libgmp-prefix --without-libreadline-prefix', ''][bb.data.inherits_class('native',d)]}"
+
+EXTRA_OECONF_append_class-target = " --with-libunistring-prefix=${STAGING_LIBDIR} \
+                                     --with-libgmp-prefix=${STAGING_LIBDIR} \
+                                     --with-libltdl-prefix=${STAGING_LIBDIR}"
+EXTRA_OECONF_append_libc-uclibc = " guile_cv_use_csqrt=no "
+
+CFLAGS_append_libc-musl = " -DHAVE_GC_SET_FINALIZER_NOTIFIER \
+	                    -DHAVE_GC_GET_HEAP_USAGE_SAFE \
+	                    -DHAVE_GC_GET_FREE_SPACE_DIVISOR \
+	                    -DHAVE_GC_SET_FINALIZE_ON_DEMAND \
+                           "
+
+do_configure_prepend() {
+	mkdir -p po
+}
+
+export GUILE_FOR_BUILD="${BUILD_SYS}-guile"
+
+do_install_append_class-native() {
+	install -m 0755  ${D}${bindir}/guile ${D}${bindir}/${HOST_SYS}-guile
+
+	create_wrapper ${D}/${bindir}/guile \
+		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \
+		GUILE_LOAD_COMPILED_PATH=${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache
+	create_wrapper ${D}${bindir}/${HOST_SYS}-guile \
+		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \
+		GUILE_LOAD_COMPILED_PATH=${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache
+}
+
+do_install_append_class-target() {
+	# cleanup buildpaths in scripts
+	sed -i -e 's:${STAGING_DIR_NATIVE}::' ${D}${bindir}/guile-config
+	sed -i -e 's:${STAGING_DIR_HOST}::' ${D}${bindir}/guile-snarf
+
+	sed -i -e 's:${STAGING_DIR_TARGET}::g' ${D}${libdir}/pkgconfig/guile-2.0.pc
+}
+
+do_install_append_libc-musl() {
+	rm -f ${D}${libdir}/charset.alias
+}
+
+SYSROOT_PREPROCESS_FUNCS = "guile_cross_config"
+
+guile_cross_config() {
+	# this is only for target recipe
+	if [ "${PN}" = "guile" ]
+	then
+	        # Create guile-config returning target values instead of native values
+	        install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}
+        	echo '#!'`which ${BUILD_SYS}-guile`$' \\\n--no-auto-compile -e main -s\n!#\n(define %guile-build-info '\'\( \
+			> ${B}/guile-config.cross
+	        sed -n -e 's:^[ \t]*{[ \t]*":  (:' \
+			-e 's:",[ \t]*": . ":' \
+			-e 's:" *}, *\\:"):' \
+			-e 's:^.*cachedir.*$::' \
+			-e '/^  (/p' \
+			< ${B}/libguile/libpath.h >> ${B}/guile-config.cross
+	        echo '))' >> ${B}/guile-config.cross
+	        cat ${B}/meta/guile-config >> ${B}/guile-config.cross
+	        install ${B}/guile-config.cross ${STAGING_BINDIR_CROSS}/guile-config
+	fi
+}
+
+# Guile needs the compiled files to be newer than the source, and it won't
+# auto-compile into the prefix even if it can write there, so touch them here as
+# sysroot is managed.
+SSTATEPOSTINSTFUNCS += "guile_sstate_postinst"
+guile_sstate_postinst() {
+	if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
+	then
+                find ${STAGING_DIR_TARGET}/${libdir}/guile/2.0/ccache -type f | xargs touch
+	fi
+}
+
+# http://errors.yoctoproject.org/Errors/Details/20491/
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/help2man/help2man-native_1.47.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/help2man/help2man-native_1.47.3.bb
deleted file mode 100644
index 232b0c3..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/help2man/help2man-native_1.47.3.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Program for creating simple man pages"
-SECTION = "devel"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "autoconf-native automake-native"
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "d1d44a7a7b2bd61755a2045d96ecaea0"
-SRC_URI[sha256sum] = "c232af6475ef65bee02770862a362f4c4c2e6c9967d39e987eb94cadcfc13856"
-
-inherit autotools native
-
-EXTRA_OECONF = "--disable-nls"
-
-# We don't want to reconfigure things as it would require 'perlnative' to be
-# used.
-do_configure() {
-	oe_runconf
-}
-
-do_install_append () {
-	# Make sure we use /usr/bin/env perl
-	sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/help2man/help2man-native_1.47.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/help2man/help2man-native_1.47.4.bb
new file mode 100644
index 0000000..64dc32c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/help2man/help2man-native_1.47.4.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Program for creating simple man pages"
+SECTION = "devel"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+DEPENDS = "autoconf-native automake-native"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "544aca496a7d89de3e5d99e56a2f03d3"
+SRC_URI[sha256sum] = "d4ecf697d13f14dd1a78c5995f06459bff706fd1ce593d1c02d81667c0207753"
+
+inherit autotools native
+
+EXTRA_OECONF = "--disable-nls"
+
+# We don't want to reconfigure things as it would require 'perlnative' to be
+# used.
+do_configure() {
+	oe_runconf
+}
+
+do_install_append () {
+	# Make sure we use /usr/bin/env perl
+	sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool.inc b/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool.inc
deleted file mode 100644
index eb7ae00..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Utility scripts for internationalizing XML"
-SECTION = "devel"
-LICENSE = "GPLv2"
-
-URLV="${@'.'.join(d.getVar('PV',1).split('.')[0:2])}"
-SRC_URI = "http://launchpad.net/${BPN}/trunk/${PV}/+download/${BP}.tar.gz"
-
-UPSTREAM_CHECK_URI = "https://launchpad.net/intltool/trunk/"
-
-S = "${WORKDIR}/intltool-${PV}"
-
-DEPENDS = "libxml-parser-perl-native"
-RDEPENDS_${PN} = "gettext-dev libxml-parser-perl"
-DEPENDS_class-native = "libxml-parser-perl-native"
-# gettext is assumed to exist on the host
-RDEPENDS_${PN}_class-native = "libxml-parser-perl-native"
-RRECOMMENDS_${PN} = "perl-modules"
-RRECOMMENDS_${PN}_class-native = ""
-
-FILES_${PN}-dev = ""
-FILES_${PN} += "${datadir}/aclocal"
-
-INSANE_SKIP_${PN} += "dev-deps"
-
-inherit autotools pkgconfig perlnative
-
-export PERL = "${bindir}/env perl"
-PERL_class-native = "/usr/bin/env nativeperl"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/remove-perl-check.patch b/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/remove-perl-check.patch
new file mode 100644
index 0000000..5f57ea3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/remove-perl-check.patch
@@ -0,0 +1,45 @@
+Remove the perl checks in intltool.m4.  This can find a different perl binary to
+the one that the intltool scripts will actually be using (as they hard-code a
+specific binary), for example in the intltool-native case they'll be using
+nativeperl yet this fragment can find and test the host perl.
+
+This can result in recipes failing in do_configure as intltool.m4 finds a host
+perl which doesn't have XML::Parser installed, despite the fact that intltool
+will work fine as nativeperl has XML::Parser.
+
+Upstream-Status: Submitted (https://bugs.launchpad.net/intltool/+bug/1197875)
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+--- a/intltool.m4.orig	2013-07-02 11:22:23.000000000 -0700
++++ b/intltool.m4	2013-07-02 11:22:32.000000000 -0700
+@@ -26,1 +26,1 @@ dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+-# serial 42 IT_PROG_INTLTOOL
++# serial 42.1 IT_PROG_INTLTOOL
+@@ -131,27 +131,6 @@ if test -z "$xgversion" -o -z "$mmversio
+     AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
+ fi
+ 
+-AC_PATH_PROG(INTLTOOL_PERL, perl)
+-if test -z "$INTLTOOL_PERL"; then
+-   AC_MSG_ERROR([perl not found])
+-fi
+-AC_MSG_CHECKING([for perl >= 5.8.1])
+-$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
+-if test $? -ne 0; then
+-   AC_MSG_ERROR([perl 5.8.1 is required for intltool])
+-else
+-   IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"`
+-   AC_MSG_RESULT([$IT_PERL_VERSION])
+-fi
+-if test "x$2" != "xno-xml"; then
+-   AC_MSG_CHECKING([for XML::Parser])
+-   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+-       AC_MSG_RESULT([ok])
+-   else
+-       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+-   fi
+-fi
+-
+ # Substitute ALL_LINGUAS so we can use it in po/Makefile
+ AC_SUBST(ALL_LINGUAS)
+ 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/remove-xml-check.patch b/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/remove-xml-check.patch
deleted file mode 100644
index fc69e37..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/remove-xml-check.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Signed-off-by: Florin Sarbu <florin.sarbu@windriver.com>
-
-Upstream-Status: Inappropriate [OE specific]
-
-Index: intltool-0.40.6/intltool.m4
-===================================================================
---- intltool-0.40.6.orig/intltool.m4	2009-02-14 14:12:28.000000000 -0800
-+++ intltool-0.40.6/intltool.m4	2011-11-23 15:39:34.689561872 -0800
-@@ -122,14 +122,16 @@
-    IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
-    AC_MSG_RESULT([$IT_PERL_VERSION])
- fi
--if test "x$2" != "xno-xml"; then
--   AC_MSG_CHECKING([for XML::Parser])
--   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
--       AC_MSG_RESULT([ok])
--   else
--       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
--   fi
--fi
-+
-+# Disable this check since we know XML::Parser is installed
-+#if test "x$2" != "xno-xml"; then
-+#   AC_MSG_CHECKING([for XML::Parser])
-+#   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
-+#       AC_MSG_RESULT([ok])
-+#   else
-+#       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
-+#   fi
-+#fi
- 
- # Substitute ALL_LINGUAS so we can use it in po/Makefile
- AC_SUBST(ALL_LINGUAS)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/use-nativeperl.patch b/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/use-nativeperl.patch
deleted file mode 100644
index 5f5fed3..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool/use-nativeperl.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-OE has perl binary as 'nativeperl' in native sysroot so we look for it
-in order to avoid intltool searching and finding perl from /usr/bin
-on build system which may not have all the modules that it needs.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [OE specific]
-Index: intltool-0.40.6/intltool.m4
-===================================================================
---- intltool-0.40.6.orig/intltool.m4	2009-02-14 14:12:28.000000000 -0800
-+++ intltool-0.40.6/intltool.m4	2011-08-09 08:07:16.427347846 -0700
-@@ -110,7 +110,7 @@
-     AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
- fi
- 
--AC_PATH_PROG(INTLTOOL_PERL, perl)
-+AC_PATH_PROG(INTLTOOL_PERL, nativeperl)
- if test -z "$INTLTOOL_PERL"; then
-    AC_MSG_ERROR([perl not found])
- fi
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool_0.51.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool_0.51.0.bb
index d520d43..a7ea3b7 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool_0.51.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/intltool/intltool_0.51.0.bb
@@ -1,19 +1,36 @@
-require intltool.inc
+SUMMARY = "Utility scripts for internationalizing XML"
+SECTION = "devel"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
-SRC_URI += "file://intltool-nowarn.patch \
-            file://perl-522-deprecations.patch \
-           ${NATIVEPATCHES} \
+SRC_URI = "http://launchpad.net/${BPN}/trunk/${PV}/+download/${BP}.tar.gz \
+           file://intltool-nowarn.patch \
+           file://perl-522-deprecations.patch \
+           file://remove-perl-check.patch \
+           file://noperlcheck.patch \
            "
-
-#
-# All of the intltool scripts have the correct paths to perl already
-# embedded into them and can find perl fine, so we add the remove xml-check
-# in the intltool.m4 via the remove-xml-check.patch
-NATIVEPATCHES = "file://noperlcheck.patch \
-                 file://remove-xml-check.patch"
-NATIVEPATCHES_class-native = "file://use-nativeperl.patch" 
-
 SRC_URI[md5sum] = "12e517cac2b57a0121cda351570f1e63"
 SRC_URI[sha256sum] = "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd"
+
+UPSTREAM_CHECK_URI = "https://launchpad.net/intltool/trunk/"
+
+DEPENDS = "libxml-parser-perl-native"
+RDEPENDS_${PN} = "gettext-dev libxml-parser-perl"
+DEPENDS_class-native = "libxml-parser-perl-native"
+
+inherit autotools pkgconfig perlnative
+
+export PERL = "${bindir}/env perl"
+PERL_class-native = "/usr/bin/env nativeperl"
+
+# gettext is assumed to exist on the host
+RDEPENDS_${PN}_class-native = "libxml-parser-perl-native"
+RRECOMMENDS_${PN} = "perl-modules"
+RRECOMMENDS_${PN}_class-native = ""
+
+FILES_${PN}-dev = ""
+FILES_${PN} += "${datadir}/aclocal"
+
+INSANE_SKIP_${PN} += "dev-deps"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/json-c/json-c/0001-Link-against-libm-when-needed.patch b/import-layers/yocto-poky/meta/recipes-devtools/json-c/json-c/0001-Link-against-libm-when-needed.patch
new file mode 100644
index 0000000..bfe9d72
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/json-c/json-c/0001-Link-against-libm-when-needed.patch
@@ -0,0 +1,53 @@
+From 93582ad85ef48c18ac12f00a9a9e124989b1fcab Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Fri, 1 May 2015 12:52:18 +0200
+Subject: [PATCH] Link against libm when needed
+
+In certain C libraries (e.g uClibc), isnan() and related functions are
+implemented in libm, so json-c needs to link against it. This commit
+therefore adds an AC_TRY_LINK() test to check whether a program
+calling isnan() can be properly linked with no special flags. If not,
+we assume linking against libm is needed.
+
+The json-c.pc.in file is also adjusted so that in the case of static
+linking against json-c, -lm is also used.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+Upstream-Status: Backport
+
+ configure.ac | 4 ++++
+ json-c.pc.in | 3 ++-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index c50f81b..30e7174 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -50,6 +50,10 @@ AC_CHECK_DECLS([isinf], [], [], [[#include <math.h>]])
+ AC_CHECK_DECLS([_isnan], [], [], [[#include <float.h>]])
+ AC_CHECK_DECLS([_finite], [], [], [[#include <float.h>]])
+ 
++if test "$ac_cv_have_decl_isnan" = "yes" ; then
++   AC_TRY_LINK([#include <math.h>], [float f = 0.0; return isnan(f)], [], [LIBS="$LIBS -lm"])
++fi
++
+ #check if .section.gnu.warning accepts long strings (for __warn_references)
+ AC_LANG_PUSH([C])
+ 
+diff --git a/json-c.pc.in b/json-c.pc.in
+index 037739d..05bfbc8 100644
+--- a/json-c.pc.in
++++ b/json-c.pc.in
+@@ -6,6 +6,7 @@ includedir=@includedir@
+ Name: json-c
+ Description: JSON implementation in C
+ Version: @VERSION@
+-Requires: 
++Requires:
++Libs.private: @LIBS@
+ Libs:  -L${libdir} -ljson-c
+ Cflags: -I${includedir}/json-c
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/json-c/json-c_0.12.bb b/import-layers/yocto-poky/meta/recipes-devtools/json-c/json-c_0.12.bb
index 1a5c394..a15455c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/json-c/json-c_0.12.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/json-c/json-c_0.12.bb
@@ -6,6 +6,7 @@
 
 SRC_URI = "https://s3.amazonaws.com/json-c_releases/releases/${BP}.tar.gz \
            file://0001-json_tokener-requires-INF-and-NAN.patch \
+           file://0001-Link-against-libm-when-needed.patch \
           "
 
 SRC_URI[md5sum] = "3ca4bbb881dfc4017e8021b5e0a8c491"
@@ -27,3 +28,5 @@
     # Clean up autoconf cruft that should not be in the tarball
     rm -f ${S}/config.status
 }
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/kconfig-frontends/kconfig-frontends_3.12.0.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/kconfig-frontends/kconfig-frontends_3.12.0.0.bb
index 48a2f93..9b65a99 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/kconfig-frontends/kconfig-frontends_3.12.0.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/kconfig-frontends/kconfig-frontends_3.12.0.0.bb
@@ -11,14 +11,14 @@
 LICENSE = "GPL-2.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9b8cf60ff39767ff04b671fca8302408"
 SECTION = "devel"
-DEPENDS += "ncurses flex bison gperf-native pkgconfig-native"
+DEPENDS += "ncurses flex bison gperf-native"
 RDEPENDS_${PN} += "python bash"
 SRC_URI = "http://ymorin.is-a-geek.org/download/${BPN}/${BP}.tar.xz"
 
 SRC_URI[md5sum] = "b939280dcc83f8feabd87a1d5f9b00c2"
 SRC_URI[sha256sum] = "ea2615a62c74bea6ce3b38402f00c7513858f307f6ba7aa9fdbf0bbc12bcf407"
 
-inherit autotools
+inherit autotools pkgconfig
 do_configure_prepend () {
 	mkdir -p scripts/.autostuff/m4
 }
@@ -32,7 +32,7 @@
 
 # Some packages have the version preceeding the .so instead properly
 # versioned .so.<version>, so we need to reorder and repackage.
-SOLIBS = "-${@d.getVar('PV',1)[:-2]}.so"
+SOLIBS = "-${@d.getVar('PV', True)[:-2]}.so"
 FILES_SOLIBSDEV = "${libdir}/libkconfig-parser.so"
 
 BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb b/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
index 0204d34..b268310 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
@@ -35,11 +35,6 @@
 	install -c -m 0644 ${S}/m4/*.m4 ${D}${target_datadir}/aclocal/
 }
 
-SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
-
-libtoolcross_sysroot_preprocess () {
-	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
-	sysroot_stage_dir ${D}${target_datadir} ${SYSROOT_DESTDIR}${target_datadir}
-}
+SYSROOT_DIRS += "${bindir_crossscripts} ${target_datadir}"
 
 SSTATE_SCAN_FILES += "libtoolize *-libtool"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool_2.4.6.bb b/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool_2.4.6.bb
index 3851ec7..8858f6e 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool_2.4.6.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/libtool/libtool_2.4.6.bb
@@ -5,7 +5,11 @@
 #
 # We want the results of libtool-cross preserved - don't stage anything ourselves.
 #
-SYSROOT_PREPROCESS_FUNCS += "libtool_sysroot_preprocess"
+SYSROOT_DIRS_BLACKLIST += " \
+    ${bindir} \
+    ${datadir}/aclocal \
+    ${datadir}/libtool/build-aux \
+"
 
 do_install_append () {
         sed -e 's@--sysroot=${STAGING_DIR_HOST}@@g' \
@@ -18,10 +22,3 @@
             -e 's@^\(postdep_objects="\).*@\1"@' \
             -i ${D}${bindir}/libtool
 }
-
-libtool_sysroot_preprocess () {
-	rm -rf ${SYSROOT_DESTDIR}${bindir}/*
-	rm -rf ${SYSROOT_DESTDIR}${datadir}/aclocal/*
-	rm -rf ${SYSROOT_DESTDIR}${datadir}/libtool/build-aux/*
-}
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/linuxdoc-tools/linuxdoc-tools-native_0.9.69.bb b/import-layers/yocto-poky/meta/recipes-devtools/linuxdoc-tools/linuxdoc-tools-native_0.9.69.bb
index a8a90fc..a5deb2e 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/linuxdoc-tools/linuxdoc-tools-native_0.9.69.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/linuxdoc-tools/linuxdoc-tools-native_0.9.69.bb
@@ -5,7 +5,7 @@
 
 DEPENDS = "groff-native openjade-native"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/l/linuxdoc-tools/linuxdoc-tools_${PV}.orig.tar.gz \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/l/${BPN}/${BPN}_${PV}.orig.tar.gz \
            file://disable_sgml2rtf.patch \
            file://disable_txt_doc.patch \
            file://disable_tex_doc.patch \
@@ -14,6 +14,7 @@
 SRC_URI[md5sum] = "1d13d500918a7a145b0edc2f16f61dd1"
 SRC_URI[sha256sum] = "7103facee18a2ea97186ca459d743d22f7f89ad4b5cd1dfd1c34f83d6bfd4101"
 
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/l/linuxdoc-tools/"
 inherit autotools-brokensep native
 
 do_configure () {
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/make/make-3.81/make_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-devtools/make/make-3.81/make_fix_for_automake-1.12.patch
index 9b2e964..102fe79 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/make/make-3.81/make_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/make/make-3.81/make_fix_for_automake-1.12.patch
@@ -11,7 +11,7 @@
 | ERROR: autoreconf execution failed.
 
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/04
 
 Index: make-3.81/configure.in
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/make/make-4.1/0001-main.c-main-SV-43434-Handle-NULL-returns-from-ttynam.patch b/import-layers/yocto-poky/meta/recipes-devtools/make/make-4.1/0001-main.c-main-SV-43434-Handle-NULL-returns-from-ttynam.patch
deleted file mode 100644
index 7a5f4ba..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/make/make-4.1/0001-main.c-main-SV-43434-Handle-NULL-returns-from-ttynam.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 292da6f6867b75a5af7ddbb639a1feae022f438f Mon Sep 17 00:00:00 2001
-From: Paul Smith <psmith@gnu.org>
-Date: Mon, 20 Oct 2014 01:54:56 -0400
-Subject: [PATCH] * main.c (main): [SV 43434] Handle NULL returns from
- ttyname().
-
-Upstream-Status: Backport
-
-From: http://git.savannah.gnu.org/cgit/make.git/commit/?id=292da6f6867b75a5af7ddbb639a1feae022f438f
-
----
- main.c    | 15 ++++++++++-----
- makeint.h |  3 ++-
- 2 files changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/main.c b/main.c
-index b2d169c..0cdb8a8 100644
---- a/main.c
-+++ b/main.c
-@@ -1429,13 +1429,18 @@ main (int argc, char **argv, char **envp)
- #ifdef HAVE_ISATTY
-     if (isatty (fileno (stdout)))
-       if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMOUT")))
--        define_variable_cname ("MAKE_TERMOUT", TTYNAME (fileno (stdout)),
--                               o_default, 0)->export = v_export;
--
-+        {
-+          const char *tty = TTYNAME (fileno (stdout));
-+          define_variable_cname ("MAKE_TERMOUT", tty ? tty : DEFAULT_TTYNAME,
-+                                 o_default, 0)->export = v_export;
-+        }
-     if (isatty (fileno (stderr)))
-       if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMERR")))
--        define_variable_cname ("MAKE_TERMERR", TTYNAME (fileno (stderr)),
--                               o_default, 0)->export = v_export;
-+        {
-+          const char *tty = TTYNAME (fileno (stderr));
-+          define_variable_cname ("MAKE_TERMERR", tty ? tty : DEFAULT_TTYNAME,
-+                                 o_default, 0)->export = v_export;
-+        }
- #endif
- 
-   /* Reset in case the switches changed our minds.  */
-diff --git a/makeint.h b/makeint.h
-index 6223936..2009f41 100644
---- a/makeint.h
-+++ b/makeint.h
-@@ -436,10 +436,11 @@ extern struct rlimit stack_limit;
- /* The number of bytes needed to represent the largest integer as a string.  */
- #define INTSTR_LENGTH         CSTRLEN ("18446744073709551616")
- 
-+#define DEFAULT_TTYNAME "true"
- #ifdef HAVE_TTYNAME
- # define TTYNAME(_f) ttyname (_f)
- #else
--# define TTYNAME(_f) "true"
-+# define TTYNAME(_f) DEFAULT_TTYNAME
- #endif
- 
- 
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/make/make_4.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/make/make_4.1.bb
deleted file mode 100644
index 78fe0b5..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/make/make_4.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-LICENSE = "GPLv3 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://tests/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://glob/COPYING.LIB;md5=4a770b67e6be0f60da244beb2de0fce4"
-require make.inc
-
-SRC_URI += "file://0001-main.c-main-SV-43434-Handle-NULL-returns-from-ttynam.patch"
-
-EXTRA_OECONF += "--without-guile"
-
-SRC_URI[md5sum] = "57a7a224a822f94789a587ccbcedff69"
-SRC_URI[sha256sum] = "0bc7613389650ee6a24554b52572a272f7356164fd2c4132b0bcf13123e4fca5"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/make/make_4.2.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/make/make_4.2.1.bb
new file mode 100644
index 0000000..c6e6a0c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/make/make_4.2.1.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPLv3 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://tests/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://glob/COPYING.LIB;md5=4a770b67e6be0f60da244beb2de0fce4"
+require make.inc
+
+EXTRA_OECONF += "--without-guile"
+
+SRC_URI[md5sum] = "15b012617e7c44c0ed482721629577ac"
+SRC_URI[sha256sum] = "d6e262bf3601b42d2b1e4ef8310029e1dcf20083c5446b4b7aa67081fdffc589"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/makedevs/makedevs/makedevs.c b/import-layers/yocto-poky/meta/recipes-devtools/makedevs/makedevs/makedevs.c
index 771f33e..cba7681 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/makedevs/makedevs/makedevs.c
+++ b/import-layers/yocto-poky/meta/recipes-devtools/makedevs/makedevs/makedevs.c
@@ -360,7 +360,7 @@
 	unsigned long mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;
 	unsigned long start = 0, increment = 1, count = 0;
 
-	if (0 > sscanf(line, "%40s %c %lo %40s %40s %lu %lu %lu %lu %lu", path,
+	if (0 > sscanf(line, "%4095s %c %lo %40s %40s %lu %lu %lu %lu %lu", path,
 		    &type, &mode, usr_buf, grp_buf, &major, &minor, &start,
 		    &increment, &count))
 	{
@@ -510,7 +510,7 @@
 	umask (0);
 
 	if (argc==1) {
-		fprintf(stderr, helptext);
+		fputs( helptext , stderr );
 		exit(1);
 	}
 
@@ -525,7 +525,7 @@
 				error_msg_and_die("%s: not a proper device table file", optarg);
 			break;
 		case 'h':
-			printf(helptext);
+			puts(helptext);
 			exit(0);
 		case 'r':
 		case 'd':				/* for compatibility with mkfs.jffs, genext2fs, etc... */
@@ -553,13 +553,13 @@
 			printf("%s: %s\n", app_name, VERSION);
 			exit(0);
 		default:
-			fprintf(stderr, helptext);
+			fputs(helptext,stderr);
 			exit(1);
 		}
 	}
 
 	if (argv[optind] != NULL) {
-		fprintf(stderr, helptext);
+		fputs(helptext,stderr);
 		exit(1);
 	}
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage/cross-compile.patch b/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage/cross-compile.patch
index 7692709..a162eb7 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage/cross-compile.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage/cross-compile.patch
@@ -1,13 +1,43 @@
-make the tool to be cross compilable.
+From dc2712119d6832e24a9b7bed9ed4ce5ae03ce0a3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 14 Jul 2012 14:14:07 -0700
+Subject: [PATCH] mkelfimage: Fix cross build
+
+Make the tool to be cross compilable, by separating the variables for build
+tools from those for the target. Also modified to obey LDFLAGS.
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+
 Upstream-Status: Pending
 
-Index: mkelfImage/configure.ac
-===================================================================
---- mkelfImage.orig/configure.ac	2012-07-14 14:04:48.964898667 -0700
-+++ mkelfImage/configure.ac	2012-07-14 14:10:47.800916083 -0700
-@@ -70,6 +70,9 @@
+---
+ Makefile.conf.in    | 3 +++
+ configure.ac        | 7 +++++--
+ linux-i386/Makefile | 2 +-
+ linux-ia64/Makefile | 2 +-
+ main/Makefile       | 4 ++--
+ 5 files changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile.conf.in b/Makefile.conf.in
+index 4645e44..dcb6cf2 100644
+--- a/Makefile.conf.in
++++ b/Makefile.conf.in
+@@ -17,6 +17,9 @@ DEFS=@DEFS@
+ LIBS=@LIBS@
+ HOST_CC=@HOST_CC@
+ HOST_CFLAGS=@HOST_CFLAGS@  $(DEFS)
++CC=@CC@
++CFLAGS=@CFLAGS@ $(DEFS)
++LDFLAGS=@LDFLAGS@
+
+ I386_CC     =@I386_CC@
+ I386_LD     =@I386_LD@
+diff --git a/configure.ac b/configure.ac
+index 652b952..0f2ac72 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -70,6 +70,9 @@ if test "with_default" != no ; then
  		AC_MSG_ERROR([cc not found])
  	fi
  	eval "${with_default}_CC='$CC'"
@@ -17,55 +47,60 @@
  	AC_PROG_CPP
  	if test "$CPP" = no; then
  		AC_MSG_ERROR([cpp not found])
-@@ -172,7 +175,6 @@
+@@ -172,8 +175,8 @@ fi
  
  dnl ---Output variables...
  
 -HOST_CC=$CC
- HOST_CFLAGS="$HOST_CFLAGS -O2 -Wall \$(HOST_CPPFLAGS)"
+-HOST_CFLAGS="$HOST_CFLAGS -O2 -Wall \$(HOST_CPPFLAGS)"
++CFLAGS="${CFLAGS:--O2} -Wall \$(CPPFLAGS)"
++HOST_CFLAGS="${HOST_CFLAGS:--O2} -Wall \$(HOST_CPPFLAGS)"
  
  dnl TODO: figure out how to set these appropriately for compilers other than gcc
-Index: mkelfImage/linux-i386/Makefile
-===================================================================
---- mkelfImage.orig/linux-i386/Makefile	2012-07-14 14:04:48.964898667 -0700
-+++ mkelfImage/linux-i386/Makefile	2012-07-14 14:04:49.032898671 -0700
-@@ -4,7 +4,7 @@
+ I386_CFLAGS="$I386_CFLAGS -Os -ffreestanding -Wall -W -Wno-format \$(I386_CPPFLAGS)"
+diff --git a/linux-i386/Makefile b/linux-i386/Makefile
+index 51531d6..7e8aa3c 100644
+--- a/linux-i386/Makefile
++++ b/linux-i386/Makefile
+@@ -4,7 +4,7 @@ LI386_DEP=Makefile Makefile.conf $(LI386_DIR)/Makefile
  
  $(LI386_OBJ)/mkelf-linux-i386.o: $(LI386_DIR)/mkelf-linux-i386.c $(LI386_DIR)/convert.bin.c $(LI386_DEP)
  	$(MKDIR) -p $(@D)
 -	$(HOST_CC) $(HOST_CFLAGS) -c -g $< -o $@
-+	$(CC) $(HOST_CFLAGS) -c -g $< -o $@
++	$(CC) $(CFLAGS) -c -g $< -o $@
  
  
  ifdef I386_CC
-Index: mkelfImage/linux-ia64/Makefile
-===================================================================
---- mkelfImage.orig/linux-ia64/Makefile	2012-07-14 14:04:48.964898667 -0700
-+++ mkelfImage/linux-ia64/Makefile	2012-07-14 14:04:49.032898671 -0700
-@@ -4,7 +4,7 @@
+diff --git a/linux-ia64/Makefile b/linux-ia64/Makefile
+index 38f5d8c..5df8870 100644
+--- a/linux-ia64/Makefile
++++ b/linux-ia64/Makefile
+@@ -4,7 +4,7 @@ LIA64_DEP=Makefile Makefile.conf $(LIA64_DIR)/Makefile
  
  $(LIA64_OBJ)/mkelf-linux-ia64.o: $(LIA64_DIR)/mkelf-linux-ia64.c $(LIA64_DIR)/convert.bin.c $(LIA64_DEP)
  	$(MKDIR) -p $(@D)
 -	$(HOST_CC) $(HOST_CFLAGS) -c -g $< -o $@
-+	$(CC) $(HOST_CFLAGS) -c -g $< -o $@
++	$(CC) $(CFLAGS) -c -g $< -o $@
  
  ifdef IA64_CC
  
-Index: mkelfImage/main/Makefile
-===================================================================
---- mkelfImage.orig/main/Makefile	2012-07-14 14:04:48.964898667 -0700
-+++ mkelfImage/main/Makefile	2012-07-14 14:04:49.032898671 -0700
-@@ -4,11 +4,11 @@
+diff --git a/main/Makefile b/main/Makefile
+index 403b0a4..cd53613 100644
+--- a/main/Makefile
++++ b/main/Makefile
+@@ -4,11 +4,11 @@ MKELF_OBJS=$(OBJDIR)/main/mkelfImage.o \
  
  $(OBJDIR)/sbin/mkelfImage: $(MKELF_OBJS) $(DEPS)
  	$(MKDIR) -p $(@D)
 -	$(HOST_CC) $(HOST_CFLAGS) $(MKELF_OBJS) -o $@ $(LIBS)
-+	$(CC) $(HOST_CFLAGS) $(MKELF_OBJS) -o $@ $(LIBS)
++	$(CC) $(CFLAGS) $(LDFLAGS) $(MKELF_OBJS) -o $@ $(LIBS)
  
  $(OBJDIR)/main/mkelfImage.o: main/mkelfImage.c include/mkelfImage.h $(DEPS)
  	$(MKDIR) -p $(@D)
 -	$(HOST_CC) $(HOST_CFLAGS) -c $< -o $@
-+	$(CC) $(HOST_CFLAGS) -c $< -o $@
++	$(CC) $(CFLAGS) -c $< -o $@
  
  $(OBJDIR)/man/man8/mkelfImage.8: main/mkelfImage.man
  	$(MKDIR) -p $(@D)
+--
+2.8.0
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage_git.bb
index 92435cd..2bcc8d7 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mkelfimage/mkelfimage_git.bb
@@ -13,8 +13,8 @@
 DEPENDS += "zlib"
 
 SRC_URI = "git://review.coreboot.org/p/coreboot;protocol=http \
-           file://cross-compile.patch   \
-          "
+           file://cross-compile.patch \
+           "
 SRC_URI_append_class-native = " \
            file://fix-makefile-to-find-libz.patch   \
 "
@@ -24,8 +24,11 @@
 S = "${WORKDIR}/git/util/mkelfImage"
 
 CFLAGS += "-fno-stack-protector"
-CACHED_CONFIGUREVARS += "HOST_CC='${BUILD_CC}'"
-EXTRA_OEMAKE += "HOST_CPPFLAGS='${BUILD_CPPFLAGS}'"
+CACHED_CONFIGUREVARS += "\
+    HOST_CC='${BUILD_CC}' \
+    HOST_CFLAGS='${BUILD_CFLAGS}' \
+    HOST_CPPFLAGS='${BUILD_CPPFLAGS}' \
+"
 
 inherit autotools-brokensep
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.40.bb b/import-layers/yocto-poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.40.bb
deleted file mode 100644
index 59fec29..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.40.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Shared library optimisation tool"
-DESCRIPTION = "mklibs produces cut-down shared libraries that contain only the routines required by a particular set of executables."
-HOMEPAGE = "https://launchpad.net/mklibs"
-SECTION = "devel"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=98d31037b13d896e33890738ef01af64"
-DEPENDS = "python-native"
-
-SRC_URI = "http://ftp.de.debian.org/debian/pool/main/m/mklibs/${BPN}_${PV}.tar.xz \
-	file://ac_init_fix.patch\
-	file://fix_STT_GNU_IFUNC.patch\
-	file://sysrooted-ldso.patch \
-	file://avoid-failure-on-symbol-provided-by-application.patch \
-	file://show-GNU-unique-symbols-as-provided-symbols.patch \
-	file://fix_cross_compile.patch \
-"
-
-SRC_URI[md5sum] = "e1dafe5f962caa9dc5f2651c0723812a"
-SRC_URI[sha256sum] = "1db24ae779d21ccfed49f22e49a2b7ee43ec0e9197bc206d81cd02f96e91e125"
-
-inherit autotools gettext native pythonnative
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.41.bb b/import-layers/yocto-poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.41.bb
new file mode 100644
index 0000000..b3c1b5b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.41.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Shared library optimisation tool"
+DESCRIPTION = "mklibs produces cut-down shared libraries that contain only the routines required by a particular set of executables."
+HOMEPAGE = "https://launchpad.net/mklibs"
+SECTION = "devel"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=98d31037b13d896e33890738ef01af64"
+DEPENDS = "python-native"
+
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160207T221625Z/pool/main/m/${BPN}/${BPN}_${PV}.tar.xz \
+	file://ac_init_fix.patch\
+	file://fix_STT_GNU_IFUNC.patch\
+	file://sysrooted-ldso.patch \
+	file://avoid-failure-on-symbol-provided-by-application.patch \
+	file://show-GNU-unique-symbols-as-provided-symbols.patch \
+	file://fix_cross_compile.patch \
+"
+
+SRC_URI[md5sum] = "6b2979876a611717df3d49e7f9cf291d"
+SRC_URI[sha256sum] = "058c7349f8ec8a03b529c546a95cd6426741bd819f1e1211f499273eb4bf5d89"
+
+inherit autotools gettext native pythonnative
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mmc/mmc-utils_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/mmc/mmc-utils_git.bb
index 64b8910..0a8da19 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/mmc/mmc-utils_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mmc/mmc-utils_git.bb
@@ -1,10 +1,10 @@
 SUMMARY = "Userspace tools for MMC/SD devices"
 HOMEPAGE = "http://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git/"
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://mmc.c;beginline=1;endline=17;md5=d7747fc87f1eb22b946ef819969503f0"
+LIC_FILES_CHKSUM = "file://mmc.c;beginline=1;endline=20;md5=fae32792e20f4d27ade1c5a762d16b7d"
 
 SRCBRANCH ?= "master"
-SRCREV = "44f94b925894577f9ffcf2c418dd013a5e582648"
+SRCREV = "bb779acfc385d135b32a6998c1d1fceef0491400"
 
 PV = "0.1"
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mtd/mtd-utils_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/mtd/mtd-utils_git.bb
index cd9ae06..8a3afaf 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/mtd/mtd-utils_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mtd/mtd-utils_git.bb
@@ -39,7 +39,7 @@
 FILES_mtd-utils-ubifs = "${sbindir}/mkfs.ubifs ${sbindir}/ubi*"
 FILES_mtd-utils-misc = "${sbindir}/nftl* ${sbindir}/ftl* ${sbindir}/rfd* ${sbindir}/doc* ${sbindir}/serve_image ${sbindir}/recv_image"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
 # git/.compr.c.dep:46: warning: NUL character seen; rest of line ignored
 # git/.compr.c.dep:47: *** missing separator.  Stop.
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools/0001-Continue-even-if-fs-size-is-not-divisible-by-sectors.patch b/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools/0001-Continue-even-if-fs-size-is-not-divisible-by-sectors.patch
new file mode 100644
index 0000000..1f8f835
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools/0001-Continue-even-if-fs-size-is-not-divisible-by-sectors.patch
@@ -0,0 +1,34 @@
+From 5cc8d1f96ab6d3459e13631d8356f87381562352 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Thu, 2 Jun 2016 09:49:44 +0300
+Subject: [PATCH] Continue even if fs size is not divisible by
+ sectors-per-track
+
+Filesystem with a size that is not divisible by sectors-per-track is
+not broken or invalid: it might be unoptimized on media where
+heads and cylinders actually matter but that should be it.
+
+Preserve the warning but make mtools continue even if fs size is not
+divisible by sectors-per-track.
+
+Upstream-Status: Submitted [info-mtools@gnu.org]
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ init.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/init.c b/init.c
+index c9152e0..4e16a01 100644
+--- a/init.c
++++ b/init.c
+@@ -338,7 +338,6 @@ Stream_t *fs_init(char drive, int mode, int *isRop)
+ 		fprintf(stderr,
+ 			"Add mtools_skip_check=1 to your .mtoolsrc file "
+ 			"to skip this test\n");
+-		exit(1);
+ 	}
+ 
+ 	/* full cylinder buffering */
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_3.9.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_3.9.9.bb
index 3423917..2904ff4 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_3.9.9.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_3.9.9.bb
@@ -33,7 +33,9 @@
            file://mtools-makeinfo.patch \
            file://mtools.patch \
            file://no-x11.patch \
-           file://fix-broken-lz.patch"
+           file://fix-broken-lz.patch \
+           file://0001-Continue-even-if-fs-size-is-not-divisible-by-sectors.patch \
+           "
 
 inherit autotools texinfo
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_4.0.18.bb b/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_4.0.18.bb
index efde547..b0efc9e 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_4.0.18.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/mtools/mtools_4.0.18.bb
@@ -29,7 +29,9 @@
 
 SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \
            file://mtools-makeinfo.patch \
-           file://no-x11.gplv3.patch"
+           file://no-x11.gplv3.patch \
+           file://0001-Continue-even-if-fs-size-is-not-divisible-by-sectors.patch \
+           "
 
 
 inherit autotools texinfo
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/nasm/nasm_2.11.08.bb b/import-layers/yocto-poky/meta/recipes-devtools/nasm/nasm_2.11.08.bb
deleted file mode 100644
index e0724e6..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/nasm/nasm_2.11.08.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "General-purpose x86 assembler"
-SECTION = "devel"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=90904486f8fbf1861cf42752e1a39efe"
-COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)'
-
-
-SRC_URI = "http://www.nasm.us/pub/nasm/releasebuilds/${PV}/nasm-${PV}.tar.bz2 "
-
-SRC_URI[md5sum] = "7aae5cb8e03fac48029c82a7470ab066"
-SRC_URI[sha256sum] = "9da3a0291a0bdc06305b7ba194f1e2c2b55ae6f11210b4af43729868149d5445"
-
-inherit autotools-brokensep
-
-do_configure_prepend () {
-	if [ -f ${S}/aclocal.m4 ] && [ ! -f ${S}/acinclude.m4 ]; then
-		mv ${S}/aclocal.m4 ${S}/acinclude.m4
-	fi
-}
-
-do_install() {
-	install -d ${D}${bindir}
-	install -d ${D}${mandir}/man1
-
-	oe_runmake 'INSTALLROOT=${D}' install
-}
-
-BBCLASSEXTEND = "native"
-
-DEPENDS = "groff-native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/nasm/nasm_2.12.02.bb b/import-layers/yocto-poky/meta/recipes-devtools/nasm/nasm_2.12.02.bb
new file mode 100644
index 0000000..9c4b60f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/nasm/nasm_2.12.02.bb
@@ -0,0 +1,29 @@
+SUMMARY = "General-purpose x86 assembler"
+SECTION = "devel"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=90904486f8fbf1861cf42752e1a39efe"
+COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)'
+
+SRC_URI = "http://www.nasm.us/pub/nasm/releasebuilds/${PV}/nasm-${PV}.tar.bz2 "
+
+SRC_URI[md5sum] = "d15843c3fb7db39af80571ee27ec6fad"
+SRC_URI[sha256sum] = "00b0891c678c065446ca59bcee64719d0096d54d6886e6e472aeee2e170ae324"
+
+inherit autotools-brokensep
+
+do_configure_prepend () {
+	if [ -f ${S}/aclocal.m4 ] && [ ! -f ${S}/acinclude.m4 ]; then
+		mv ${S}/aclocal.m4 ${S}/acinclude.m4
+	fi
+}
+
+do_install() {
+	install -d ${D}${bindir}
+	install -d ${D}${mandir}/man1
+
+	oe_runmake 'INSTALLROOT=${D}' install
+}
+
+BBCLASSEXTEND = "native"
+
+DEPENDS = "groff-native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb
index bc25008..8b15b0c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb
@@ -44,10 +44,10 @@
 oe_runconf[vardepsexclude] += "CONFIGUREOPTS"
 
 CFLAGS =+ "-I${S}/include"
+CXXFLAGS += "-fno-tree-dse"
 
 SSTATEPOSTINSTFUNCS += "openjade_sstate_postinst"
 SYSROOT_PREPROCESS_FUNCS += "openjade_sysroot_preprocess"
-CLEANFUNCS += "openjade_sstate_clean"
 
 # configure.in needs to be reloacted to trigger reautoconf
 do_extraunpack () {
@@ -103,6 +103,15 @@
 		${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade \
 			--add ${sysconfdir}/sgml/sgml-docbook.cat \
 			${sysconfdir}/sgml/openjade-${PV}.cat
+		cat << EOF > ${SSTATE_INST_POSTRM}
+#!/bin/sh
+# Ensure that the catalog file sgml-docbook.cat is properly
+# updated when the package is removed from sstate cache.
+files="${sysconfdir}/sgml/sgml-docbook.bak ${sysconfdir}/sgml/sgml-docbook.cat"
+for f in \$files; do
+	[ ! -f \$f ] || sed -i '/\/sgml\/openjade-${PV}.cat/d' \$f
+done
+EOF
 	fi
 }
 
@@ -110,12 +119,3 @@
     install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
     install -m 755 ${STAGING_BINDIR_NATIVE}/install-catalog ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade
 }
-
-openjade_sstate_clean () {
-	# Ensure that the catalog file sgml-docbook.cat is properly
-	# updated when the package is removed from sstate cache.
-	files="${sysconfdir}/sgml/sgml-docbook.bak ${sysconfdir}/sgml/sgml-docbook.cat"
-	for f in $files; do
-		[ ! -f $f ] || sed -i '/\/sgml\/openjade-${PV}.cat/d' $f
-	done
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-build-re-do-find-ls-code-to-not-fail-on-filenam.patch b/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-build-re-do-find-ls-code-to-not-fail-on-filenam.patch
deleted file mode 100644
index 5cbb55a..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-build-re-do-find-ls-code-to-not-fail-on-filenam.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 8e424296ce2af4a5a7392c38a31f8723f9b9fbda Mon Sep 17 00:00:00 2001
-From: Denys Dmytriyenko <denys@ti.com>
-Date: Thu, 7 Apr 2016 20:43:13 -0400
-Subject: [PATCH] opkg-build: re-do find/ls code to not fail on filenames with
- spaces
-
-Signed-off-by: Denys Dmytriyenko <denys@ti.com>
----
- opkg-build | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/opkg-build b/opkg-build
-index a9ccad2..07305b2 100755
---- a/opkg-build
-+++ b/opkg-build
-@@ -6,7 +6,6 @@
- # 2003-04-25 rea@sr.unh.edu
- #   Updated to work on Familiar Pre0.7rc1, with busybox tar.
- #   Note it Requires: binutils-ar (since the busybox ar can't create)
--#   For UID debugging it needs a better "find".
- set -e
- 
- version=1.0
-@@ -47,12 +46,12 @@ pkg_appears_sane() {
- 
- 	PKG_ERROR=0
- 
--	tilde_files=`find . -name '*~'`
-+	tilde_files=`find . -name '*~' -ls -printf '\\\n'`
- 	if [ -n "$tilde_files" ]; then
- 	    if [ "$noclean" = "1" ]; then
- 		echo "*** Warning: The following files have names ending in '~'.
- You probably want to remove them: " >&2
--		ls -ld $tilde_files
-+		echo -e $tilde_files
- 		if [ $? -ne 0 ]; then
- 			echo "*** Error: Fail to list files have names ending in '~'."
- 			exit 1
-@@ -64,12 +63,12 @@ You probably want to remove them: " >&2
- 	    fi
- 	fi
- 
--	large_uid_files=`find . -uid +99 || true`
-+	large_uid_files=`find . -uid +99 -ls -printf '\\\n' || true`
- 
- 	if [ "$ogargs" = "" ]  && [ -n "$large_uid_files" ]; then
- 		echo "*** Warning: The following files have a UID greater than 99.
- You probably want to chown these to a system user: " >&2
--		ls -ld $large_uid_files
-+		echo -e $large_uid_files
- 		if [ $? -ne 0 ]; then
- 			echo "*** Error: Fail to list files have a UID greater than 99."
- 			exit 1
--- 
-2.2.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils/opkg-build-Exit-when-fail-to-list-files.patch b/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils/opkg-build-Exit-when-fail-to-list-files.patch
deleted file mode 100644
index 6c66902..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils/opkg-build-Exit-when-fail-to-list-files.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-We have an issue when ls segfaults in some cases [1] so it's
-better to detect the failure at this level instead of continue
-the build process.
-
-[YOCTO #8926]
-
-Upstream-Status: Submitted [2]
-
-[1] https://bugzilla.yoctoproject.org/show_bug.cgi?id=8926#c0
-[2] https://groups.google.com/forum/#!topic/opkg-devel/cmX02bgHZms
-
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
----
- opkg-build | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/opkg-build b/opkg-build
-index 98008b6..a9ccad2 100755
---- a/opkg-build
-+++ b/opkg-build
-@@ -53,6 +53,10 @@ pkg_appears_sane() {
- 		echo "*** Warning: The following files have names ending in '~'.
- You probably want to remove them: " >&2
- 		ls -ld $tilde_files
-+		if [ $? -ne 0 ]; then
-+			echo "*** Error: Fail to list files have names ending in '~'."
-+			exit 1
-+		fi
- 		echo >&2
- 	    else
- 		echo "*** Removing the following files: $tilde_files"
-@@ -66,6 +70,10 @@ You probably want to remove them: " >&2
- 		echo "*** Warning: The following files have a UID greater than 99.
- You probably want to chown these to a system user: " >&2
- 		ls -ld $large_uid_files
-+		if [ $? -ne 0 ]; then
-+			echo "*** Error: Fail to list files have a UID greater than 99."
-+			exit 1
-+		fi
- 		echo >&2
- 	fi
- 	    
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb
index 8873b28..a7aec45 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/opkg-utils/opkg-utils_git.bb
@@ -1,18 +1,16 @@
 SUMMARY = "Additional utilities for the opkg package manager"
 SUMMARY_update-alternatives-opkg = "Utility for managing the alternatives system"
 SECTION = "base"
-HOMEPAGE = "http://code.google.com/p/opkg/"
+HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils"
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
                     file://opkg.py;beginline=1;endline=18;md5=15917491ad6bf7acc666ca5f7cc1e083"
 PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'virtual/update-alternatives', '', d)}"
 
-SRCREV = "53274f087565fd45d8452c5367997ba6a682a37a"
-PV = "0.1.8+git${SRCPV}"
+SRCREV = "3ffece9bf19a844edacc563aa092fd1fbfcffeee"
+PV = "0.3.2+git${SRCPV}"
 
-SRC_URI = "git://git.yoctoproject.org/opkg-utils \
-           file://opkg-build-Exit-when-fail-to-list-files.patch \
-           file://0001-opkg-build-re-do-find-ls-code-to-not-fail-on-filenam.patch"
+SRC_URI = "git://git.yoctoproject.org/opkg-utils"
 SRC_URI_append_class-native = " file://tar_ignore_error.patch"
 
 S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg/0001-configure.ac-use-pkg-config-for-libsolv.patch b/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg/0001-configure.ac-use-pkg-config-for-libsolv.patch
deleted file mode 100644
index e67ec74..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg/0001-configure.ac-use-pkg-config-for-libsolv.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 2a43027f7ecf2bb3ce73f95bcf575c56bc495d07 Mon Sep 17 00:00:00 2001
-From: Alejandro del Castillo <alejandro.delcastillo@ni.com>
-Date: Wed, 9 Dec 2015 17:38:05 -0600
-Subject: [PATCH] configure.ac: use pkg-config for libsolv
-
-Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
----
- configure.ac | 12 +-----------
- 1 file changed, 1 insertion(+), 11 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 52e1025..d17dc5c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -159,17 +159,7 @@ if test "x$want_solver" != "xno"; then
-                  AC_MSG_ERROR(Specify which solver with --enable-solver=<SOLVER>)],
-             [libsolv],
-                 [AC_MSG_RESULT(libsolv)
--
--                SOLVER_CFLAGS="-I/usr/local/include/"
--                SOLVER_LIBS="-lsolv -lsolvext"
--                AC_CHECK_LIB([solv],
--                             [solver_solve],
--                             [],
--                             [AC_MSG_ERROR(libsolv not found)])
--                dnl TODO: remove previous 6 lines and uncomment line below to use
--                dnl pkg-config once there is a release of libsolv with pkg-config:
--                dnl PKG_CHECK_MODULES(SOLVER, libsolv)
--
-+                PKG_CHECK_MODULES(SOLVER, libsolv)
-                 AC_DEFINE(HAVE_SOLVER_LIBSOLV,1,[Define if you want to use libsolv])],
-             # default
-             [AC_MSG_RESULT(no)
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg/0001-libsolv_solver_set_arch_policy-use-correct-logic-dur.patch b/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg/0001-libsolv_solver_set_arch_policy-use-correct-logic-dur.patch
deleted file mode 100644
index 1ab1790..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg/0001-libsolv_solver_set_arch_policy-use-correct-logic-dur.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 3e562bed7dced25eb3e9174ca9395324b6c873c1 Mon Sep 17 00:00:00 2001
-From: Alejandro del Castillo <alejandro.delcastillo@ni.com>
-Date: Wed, 9 Dec 2015 13:36:14 -0600
-Subject: [PATCH] libsolv_solver_set_arch_policy: use correct logic during
- archs resizing
-
-If there are more than INITIAL_ARCH_LIST_SIZE archs defined in the
-configuration, libsolv_solver_set_arch_policy crashes due to flawed
-logic when resizing the archs array.
-
-Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
----
- libopkg/opkg_solver_libsolv.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/libopkg/opkg_solver_libsolv.c b/libopkg/opkg_solver_libsolv.c
-index 1cdcf1f..b5af0fa 100644
---- a/libopkg/opkg_solver_libsolv.c
-+++ b/libopkg/opkg_solver_libsolv.c
-@@ -66,8 +66,10 @@ static void libsolv_solver_set_arch_policy(libsolv_solver_t *libsolv_solver)
-     nv_pair_list_elt_t *arch_info;
- 
-     list_for_each_entry(arch_info, &opkg_config->arch_list.head, node) {
--        if (arch_count > arch_list_size)
--            archs = xrealloc(archs, arch_list_size *= 2);
-+        if (arch_count >= arch_list_size) {
-+            arch_list_size *= 2;
-+            archs = xrealloc(archs, arch_list_size * sizeof(arch_data_t));
-+        }
- 
-         archs[arch_count].arch = ((nv_pair_t *)(arch_info->data))->name;
-         archs[arch_count].priority = atoi(((nv_pair_t *)
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg_0.3.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg_0.3.1.bb
deleted file mode 100644
index 577f495..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg_0.3.1.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-SUMMARY = "Open Package Manager"
-SUMMARY_libopkg = "Open Package Manager library"
-SECTION = "base"
-HOMEPAGE = "http://code.google.com/p/opkg/"
-BUGTRACKER = "http://code.google.com/p/opkg/issues/list"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://src/opkg.c;beginline=2;endline=21;md5=90435a519c6ea69ef22e4a88bcc52fa0"
-
-DEPENDS = "libarchive"
-
-PE = "1"
-
-SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
-           file://opkg-configure.service \
-           file://opkg.conf \
-           file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
-           file://0001-libsolv_solver_set_arch_policy-use-correct-logic-dur.patch \
-           file://0001-configure.ac-use-pkg-config-for-libsolv.patch \
-"
-
-SRC_URI[md5sum] = "43735e5dc1ebf46bd6ce56a7cdfdc720"
-SRC_URI[sha256sum] = "d2c6c02a8384ec21168a1f0a186cb5e9f577d1452f491d02ed3e56b2ea8b87df"
-
-inherit autotools pkgconfig systemd
-
-SYSTEMD_SERVICE_${PN} = "opkg-configure.service"
-
-target_localstatedir := "${localstatedir}"
-OPKGLIBDIR = "${target_localstatedir}/lib"
-
-PACKAGECONFIG ??= ""
-
-PACKAGECONFIG[gpg] = "--enable-gpg,--disable-gpg,gpgme libgpg-error,gnupg"
-PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
-PACKAGECONFIG[ssl-curl] = "--enable-ssl-curl,--disable-ssl-curl,curl openssl"
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
-PACKAGECONFIG[sha256] = "--enable-sha256,--disable-sha256"
-PACKAGECONFIG[pathfinder] = "--enable-pathfinder,--disable-pathfinder,pathfinder"
-PACKAGECONFIG[libsolv] = "--enable-solver=libsolv,--disable-solver,libsolv"
-
-do_install_append () {
-	install -d ${D}${sysconfdir}/opkg
-	install -m 0644 ${WORKDIR}/opkg.conf ${D}${sysconfdir}/opkg/opkg.conf
-	echo "option lists_dir ${OPKGLIBDIR}/opkg/lists" >>${D}${sysconfdir}/opkg/opkg.conf
-
-	# We need to create the lock directory
-	install -d ${D}${OPKGLIBDIR}/opkg
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
-		install -d ${D}${systemd_unitdir}/system
-		install -m 0644 ${WORKDIR}/opkg-configure.service ${D}${systemd_unitdir}/system/
-		sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-			-e 's,@SYSCONFDIR@,${sysconfdir},g' \
-			-e 's,@BINDIR@,${bindir},g' \
-			-e 's,@SYSTEMD_UNITDIR@,${systemd_unitdir},g' \
-			${D}${systemd_unitdir}/system/opkg-configure.service
-	fi
-}
-
-RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config run-postinsts libarchive"
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN}_class-nativesdk = ""
-RREPLACES_${PN} = "opkg-nogpg opkg-collateral"
-RCONFLICTS_${PN} = "opkg-collateral"
-RPROVIDES_${PN} = "opkg-collateral"
-
-PACKAGES =+ "libopkg"
-
-FILES_libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/"
-FILES_${PN} += "${systemd_unitdir}/system/"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CONFFILES_${PN} = "${sysconfdir}/opkg/opkg.conf"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg_0.3.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg_0.3.3.bb
new file mode 100644
index 0000000..bce72fc
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/opkg/opkg_0.3.3.bb
@@ -0,0 +1,73 @@
+SUMMARY = "Open Package Manager"
+SUMMARY_libopkg = "Open Package Manager library"
+SECTION = "base"
+HOMEPAGE = "http://code.google.com/p/opkg/"
+BUGTRACKER = "http://code.google.com/p/opkg/issues/list"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/opkg.c;beginline=2;endline=21;md5=90435a519c6ea69ef22e4a88bcc52fa0"
+
+DEPENDS = "libarchive"
+
+PE = "1"
+
+SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
+           file://opkg-configure.service \
+           file://opkg.conf \
+           file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
+"
+
+SRC_URI[md5sum] = "a4613038c8afc7d8d482f5c53f137bdf"
+SRC_URI[sha256sum] = "19db9e73121a5e4c91fa228b0a6a4c55cc3591056130cfb3c66c30aa32f8d00e"
+
+inherit autotools pkgconfig systemd
+
+SYSTEMD_SERVICE_${PN} = "opkg-configure.service"
+
+target_localstatedir := "${localstatedir}"
+OPKGLIBDIR = "${target_localstatedir}/lib"
+
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[gpg] = "--enable-gpg,--disable-gpg,gpgme libgpg-error,gnupg"
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
+PACKAGECONFIG[ssl-curl] = "--enable-ssl-curl,--disable-ssl-curl,curl openssl"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
+PACKAGECONFIG[sha256] = "--enable-sha256,--disable-sha256"
+PACKAGECONFIG[pathfinder] = "--enable-pathfinder,--disable-pathfinder,pathfinder"
+PACKAGECONFIG[libsolv] = "--with-libsolv,--without-libsolv,libsolv"
+
+do_install_append () {
+	install -d ${D}${sysconfdir}/opkg
+	install -m 0644 ${WORKDIR}/opkg.conf ${D}${sysconfdir}/opkg/opkg.conf
+	echo "option lists_dir ${OPKGLIBDIR}/opkg/lists" >>${D}${sysconfdir}/opkg/opkg.conf
+
+	# We need to create the lock directory
+	install -d ${D}${OPKGLIBDIR}/opkg
+
+	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
+		install -d ${D}${systemd_unitdir}/system
+		install -m 0644 ${WORKDIR}/opkg-configure.service ${D}${systemd_unitdir}/system/
+		sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+			-e 's,@SYSCONFDIR@,${sysconfdir},g' \
+			-e 's,@BINDIR@,${bindir},g' \
+			-e 's,@SYSTEMD_UNITDIR@,${systemd_unitdir},g' \
+			${D}${systemd_unitdir}/system/opkg-configure.service
+	fi
+}
+
+RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config run-postinsts libarchive"
+RDEPENDS_${PN}_class-native = ""
+RDEPENDS_${PN}_class-nativesdk = ""
+RREPLACES_${PN} = "opkg-nogpg opkg-collateral"
+RCONFLICTS_${PN} = "opkg-collateral"
+RPROVIDES_${PN} = "opkg-collateral"
+
+PACKAGES =+ "libopkg"
+
+FILES_libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/"
+FILES_${PN} += "${systemd_unitdir}/system/"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CONFFILES_${PN} = "${sysconfdir}/opkg/opkg.conf"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/orc/orc_0.4.24.bb b/import-layers/yocto-poky/meta/recipes-devtools/orc/orc_0.4.24.bb
deleted file mode 100644
index 520f88d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/orc/orc_0.4.24.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Optimised Inner Loop Runtime Compiler"
-HOMEPAGE = "http://gstreamer.freedesktop.org/modules/orc.html"
-LICENSE = "BSD-2-Clause & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1400bd9d09e8af56b9ec982b3d85797e"
-
-SRC_URI = "http://gstreamer.freedesktop.org/src/orc/orc-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "9e793ec34c0e20339659dd4bbbf62135"
-SRC_URI[sha256sum] = "338cd493b5247300149821c6312bdf7422a3593ae98691fc75d7e4fe727bd39b"
-
-inherit autotools pkgconfig
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGES =+ "orc-examples"
-PACKAGES_DYNAMIC += "^liborc-.*"
-FILES_orc-examples = "${libdir}/orc/*"
-FILES_${PN} = "${bindir}/*"
-
-python populate_packages_prepend () {
-    libdir = d.expand('${libdir}')
-    do_split_packages(d, libdir, '^lib(.*)\.so\.*', 'lib%s', 'ORC %s library', extra_depends='', allow_links=True)
-}
-
-do_compile_prepend_class-native () {
-    sed -i -e 's#/tmp#.#g' ${S}/orc/orccodemem.c
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/orc/orc_0.4.25.bb b/import-layers/yocto-poky/meta/recipes-devtools/orc/orc_0.4.25.bb
new file mode 100644
index 0000000..897493a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/orc/orc_0.4.25.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Optimised Inner Loop Runtime Compiler"
+HOMEPAGE = "http://gstreamer.freedesktop.org/modules/orc.html"
+LICENSE = "BSD-2-Clause & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1400bd9d09e8af56b9ec982b3d85797e"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/orc/orc-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "8582a28b15f53110c88d8043d9f55bcf"
+SRC_URI[sha256sum] = "c1b1d54a58f26d483f0b3881538984789fe5d5460ab8fab74a1cacbd3d1c53d1"
+
+inherit autotools pkgconfig gtk-doc
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGES =+ "orc-examples"
+PACKAGES_DYNAMIC += "^liborc-.*"
+FILES_orc-examples = "${libdir}/orc/*"
+FILES_${PN} = "${bindir}/*"
+
+python populate_packages_prepend () {
+    libdir = d.expand('${libdir}')
+    do_split_packages(d, libdir, '^lib(.*)\.so\.*', 'lib%s', 'ORC %s library', extra_depends='', allow_links=True)
+}
+
+do_compile_prepend_class-native () {
+    sed -i -e 's#/tmp#.#g' ${S}/orc/orccodemem.c
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch b/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch
index 04222cb..63b80f6 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch
@@ -2,7 +2,7 @@
 directory, and not $S.
 
 Upstream-Status: Pending [should be submitted]
-Signed-Off-By: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Ross Burton <ross.burton@intel.com>
 
 Index: uuid-1.6.2/Makefile.in
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb
index 08926ba..85a1bcf 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb
@@ -16,8 +16,9 @@
 	   file://uuid_md5.c;beginline=1;endline=28;md5=9c1f4b2218546deae24c91be1dcf00dd"
 
 PR = "r2"
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/o/ossp-uuid/"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/o/${BPN}/${BPN}_${PV}.orig.tar.gz \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/o/${BPN}/${BPN}_${PV}.orig.tar.gz \
 	   file://0001-Change-library-name.patch \
 	   file://0002-uuid-preserve-m-option-status-in-v-option-handling.patch \
 	   file://0003-Fix-whatis-entries.patch \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb b/import-layers/yocto-poky/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
index e831860..edee474 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/packagegroups/packagegroup-core-device-devel.bb
@@ -1,5 +1,4 @@
 SUMMARY = "Provides a small set of tools for development on the device"
-LICENSE = "MIT"
 
 PR = "r1"
 
@@ -11,8 +10,7 @@
 
 RDEPENDS_${PN} = "\
     distcc-config \
-    oprofileui-server \
     nfs-export-root \
     bash \
+    binutils-symlinks \
     "
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/Increase-maxSize-to-64MB.patch b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/Increase-maxSize-to-64MB.patch
new file mode 100644
index 0000000..49050a1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/Increase-maxSize-to-64MB.patch
@@ -0,0 +1,46 @@
+From e3658740ec100e4c8cf83295460b032979e1a99a Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Fri, 9 Sep 2016 18:21:32 -0300
+Subject: [PATCH] Increase maxSize to 64MB
+Organization: O.S. Systems Software LTDA.
+
+Fix error:
+
+/
+|ERROR: qemu-native-2.5.0-r1 do_populate_sysroot_setscene: '('patchelf-uninative',
+|'--set-interpreter', '../build/tmp/sysroots-uninative/x86_64-linux/lib/
+|ld-linux-x86-64.so.2', '../build/tmp/work/x86_64-linux/qemu-native/2.5.0-r1/
+|sstate-install-populate_sysroot/x86_64-linux/usr/bin/qemu-mips64')'
+|failed with exit code 1 and the following output:
+|warning: working around a Linux kernel bug by creating a hole of 36032512
+|bytes in ‘../build/tmp/work/x86_64-linux/qemu-native/2.5.0-r1/
+|sstate-install-populate_sysroot/x86_64-linux/usr/bin/qemu-mips64’
+|maximum file size exceeded
+\
+
+Similar issue is discussed here:
+https://github.com/NixOS/patchelf/issues/47
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ src/patchelf.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/patchelf.cc b/src/patchelf.cc
+index a59c12d..0fd7355 100644
+--- a/src/patchelf.cc
++++ b/src/patchelf.cc
+@@ -279,7 +279,7 @@ static void readFile(string fileName)
+     struct stat st;
+     if (stat(fileName.c_str(), &st) != 0) error("stat");
+     fileSize = st.st_size;
+-    maxSize = fileSize + 32 * 1024 * 1024;
++    maxSize = fileSize + 64 * 1024 * 1024;
+ 
+     contents = (unsigned char *) malloc(fileSize + maxSize);
+     if (!contents) abort();
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/Skip-empty-section-fixes-66.patch b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/Skip-empty-section-fixes-66.patch
new file mode 100644
index 0000000..9ee8a55
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/Skip-empty-section-fixes-66.patch
@@ -0,0 +1,30 @@
+From 73526cb546ae6b00ea6169e40b01fb7b5f0dbb50 Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Thu, 28 Jul 2016 11:05:06 -0300
+Subject: [PATCH] Skip empty section (fixes #66)
+Organization: O.S. Systems Software LTDA.
+
+Upstream-Status: Pending
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ src/patchelf.cc | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/patchelf.cc b/src/patchelf.cc
+index 136098f..2677a26 100644
+--- a/src/patchelf.cc
++++ b/src/patchelf.cc
+@@ -684,6 +684,9 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsExecutable()
+     for (unsigned int i = 1; i <= lastReplaced; ++i) {
+         Elf_Shdr & shdr(shdrs[i]);
+         string sectionName = getSectionName(shdr);
++        if (sectionName == "") {
++            continue;
++        }
+         debug("looking at section `%s'\n", sectionName.c_str());
+         /* !!! Why do we stop after a .dynstr section? I can't
+            remember! */
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
new file mode 100644
index 0000000..9fafec4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
@@ -0,0 +1,53 @@
+From 2a603acb65993698c21f1c6eb7664f93ad830d52 Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Fri, 9 Sep 2016 16:00:42 -0300
+Subject: [PATCH] handle read-only files
+Organization: O.S. Systems Software LTDA.
+
+Patch from:
+https://github.com/darealshinji/patchelf/commit/40e66392bc4b96e9b4eda496827d26348a503509
+
+Upstream-Status: Pending
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ src/patchelf.cc | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/src/patchelf.cc b/src/patchelf.cc
+index 136098f..aea360e 100644
+--- a/src/patchelf.cc
++++ b/src/patchelf.cc
+@@ -388,7 +388,17 @@ void ElfFile<ElfFileParamNames>::sortShdrs()
+ 
+ static void writeFile(string fileName)
+ {
+-    int fd = open(fileName.c_str(), O_TRUNC | O_WRONLY);
++    struct stat st;
++    int fd;
++
++    if (stat(fileName.c_str(), &st) != 0)
++        error("stat");
++
++    if (chmod(fileName.c_str(), 0600) != 0)
++        error("chmod");
++
++    fd = open(fileName.c_str(), O_TRUNC | O_WRONLY);
++
+     if (fd == -1)
+         error("open");
+ 
+@@ -397,6 +407,10 @@ static void writeFile(string fileName)
+ 
+     if (close(fd) != 0)
+         error("close");
++
++    if (chmod(fileName.c_str(), st.st_mode) != 0)
++        error("chmod");
++
+ }
+ 
+ 
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/maxsize.patch b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/maxsize.patch
deleted file mode 100644
index cc04a89..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf/maxsize.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From f6886c2c33a1cf8771163919f3d20f6340c0ce38 Mon Sep 17 00:00:00 2001
-From: Eelco Dolstra <eelco.dolstra@logicblox.com>
-Date: Fri, 10 Jul 2015 18:12:37 +0200
-Subject: [PATCH] Quick fix for #47
-
-https://github.com/NixOS/patchelf/issues/47
-
-Avoid issues with holes in binaries such as qemu-pcc from qemu-native.
-
-Upstream-Status: Submitted
-RP
-2016/2/3
-
----
- src/patchelf.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/patchelf.cc b/src/patchelf.cc
-index 8566ed9..df75593 100644
---- a/src/patchelf.cc
-+++ b/src/patchelf.cc
-@@ -248,7 +248,7 @@ static void readFile(string fileName, mode_t * fileMode)
-     if (stat(fileName.c_str(), &st) != 0) error("stat");
-     fileSize = st.st_size;
-     *fileMode = st.st_mode;
--    maxSize = fileSize + 8 * 1024 * 1024;
-+    maxSize = fileSize + 64 * 1024 * 1024;
- 
-     contents = (unsigned char *) malloc(fileSize + maxSize);
-     if (!contents) abort();
\ No newline at end of file
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf_0.8.bb b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf_0.8.bb
deleted file mode 100644
index 8484a7e..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf_0.8.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SRC_URI = "http://nixos.org/releases/${BPN}/${BPN}-${PV}/${BPN}-${PV}.tar.bz2 \
-           file://maxsize.patch"
-LICENSE = "GPLv3"
-SUMMARY = "Tool to allow editing of RPATH and interpreter fields in ELF binaries"
-
-SRC_URI[md5sum] = "5b151e3c83b31f5931b4a9fc01635bfd"
-SRC_URI[sha256sum] = "c99f84d124347340c36707089ec8f70530abd56e7827c54d506eb4cc097a17e7"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-inherit autotools
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf_0.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf_0.9.bb
new file mode 100644
index 0000000..54e654b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/patchelf/patchelf_0.9.bb
@@ -0,0 +1,17 @@
+SRC_URI = "http://nixos.org/releases/${BPN}/${BPN}-${PV}/${BPN}-${PV}.tar.bz2 \
+           file://Skip-empty-section-fixes-66.patch \
+           file://handle-read-only-files.patch \
+           file://Increase-maxSize-to-64MB.patch \
+"
+
+LICENSE = "GPLv3"
+SUMMARY = "Tool to allow editing of RPATH and interpreter fields in ELF binaries"
+
+SRC_URI[md5sum] = "d02687629c7e1698a486a93a0d607947"
+SRC_URI[sha256sum] = "a0f65c1ba148890e9f2f7823f4bedf7ecad5417772f64f994004f59a39014f83"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit autotools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pax-utils/pax-utils_1.1.5.bb b/import-layers/yocto-poky/meta/recipes-devtools/pax-utils/pax-utils_1.1.5.bb
deleted file mode 100644
index a887c03..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/pax-utils/pax-utils_1.1.5.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Security-focused ELF files checking tool"
-DESCRIPTION = "This is a small set of various PaX aware and related \
-utilities for ELF binaries. It can check ELF binary files and running \
-processes for issues that might be relevant when using ELF binaries \
-along with PaX, such as non-PIC code or executable stack and heap."
-HOMEPAGE = "http://www.gentoo.org/proj/en/hardened/pax-utils.xml"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
-
-SRC_URI = "http://gentoo.osuosl.org/distfiles/pax-utils-${PV}.tar.xz \
-"
-
-SRC_URI[md5sum] = "bc3614322eaf88f167a608ae85d6b207"
-SRC_URI[sha256sum] = "2945b3e4df2e0dc95800bfbd3d88ab2243b2ee4ff064bbfc75734f6d9d986a89"
-
-RDEPENDS_${PN} += "bash"
-
-do_configure_prepend() {
-    touch ${S}/NEWS ${S}/AUTHORS ${S}/ChangeLog ${S}/README
-}
-
-do_install() {
-    oe_runmake PREFIX=${D}${prefix} DESTDIR=${D} install
-}
-
-BBCLASSEXTEND = "native"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)} \
-"
-PACKAGECONFIG[libcap] = "--with-caps, --without-caps, libcap"
-PACKAGECONFIG[libseccomp] = "--with-seccomp, --without-seccomp, libseccomp"
-PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
-PACKAGECONFIG[pyelftools] = "--with-python, --without-python,, pyelftools"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pax-utils/pax-utils_1.1.6.bb b/import-layers/yocto-poky/meta/recipes-devtools/pax-utils/pax-utils_1.1.6.bb
new file mode 100644
index 0000000..5cc5463
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pax-utils/pax-utils_1.1.6.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Security-focused ELF files checking tool"
+DESCRIPTION = "This is a small set of various PaX aware and related \
+utilities for ELF binaries. It can check ELF binary files and running \
+processes for issues that might be relevant when using ELF binaries \
+along with PaX, such as non-PIC code or executable stack and heap."
+HOMEPAGE = "http://www.gentoo.org/proj/en/hardened/pax-utils.xml"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+SRC_URI = "http://gentoo.osuosl.org/distfiles/pax-utils-${PV}.tar.xz \
+"
+
+SRC_URI[md5sum] = "96f56a5a10ed50f2448c5ccebd27764f"
+SRC_URI[sha256sum] = "f5436c517bea40f7035ec29a6f34034c739b943f2e3a080d76df5dfd7fd41b12"
+
+RDEPENDS_${PN} += "bash"
+
+do_configure_prepend() {
+    touch ${S}/NEWS ${S}/AUTHORS ${S}/ChangeLog ${S}/README
+}
+
+do_install() {
+    oe_runmake PREFIX=${D}${prefix} DESTDIR=${D} install
+}
+
+BBCLASSEXTEND = "native"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)} \
+"
+PACKAGECONFIG[libcap] = "--with-caps, --without-caps, libcap"
+PACKAGECONFIG[libseccomp] = "--with-seccomp, --without-seccomp, libseccomp"
+PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
+PACKAGECONFIG[pyelftools] = "--with-python, --without-python,, pyelftools"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb b/import-layers/yocto-poky/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
index 9561a59..3acd826 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
@@ -3,7 +3,7 @@
 LICENSE = "Artistic-1.0 | GPL-1.0+"
 LIC_FILES_CHKSUM = "file://README;beginline=2;endline=6;md5=c8767d7516229f07b26e42d1cf8b51f1"
 
-DEPENDS += "expat expat-native"
+DEPENDS += "expat"
 
 SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz"
 SRC_URI[md5sum] = "af4813fe3952362451201ced6fbce379"
@@ -32,4 +32,3 @@
 }
 
 BBCLASSEXTEND="native"
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-native_5.22.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-native_5.22.1.bb
index ed8222f..1c21522 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-native_5.22.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-native_5.22.1.bb
@@ -11,6 +11,7 @@
            file://debian/errno_ver.diff \
            file://dynaloaderhack.patch \
            file://perl-PathTools-don-t-filter-out-blib-from-INC.patch \
+           file://perl-remove-nm-from-libswanted.patch \
           "
 
 SRC_URI[md5sum] = "6671e4829cbaf9cecafa9a84f141b0a3"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-ptest.inc b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-ptest.inc
index 948ea7c..d136c5c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-ptest.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-ptest.inc
@@ -5,10 +5,11 @@
 
 do_install_ptest () {
 	mkdir -p ${D}${PTEST_PATH}
+	sed -e "s:\/usr\/local:${bindir}:g" -i cpan/version/t/*
 	sed -e "s:\/opt:\/usr:" -i Porting/add-package.pl
 	sed -e "s:\/local\/gnu\/:\/:" -i hints/cxux.sh
-	tar -cf - * --exclude \*.o --exclude libperl.so --exclude Makefile --exclude makefile --exclude hostperl \
-		--exclude miniperl --exclude generate_uudmap --exclude patches | ( cd ${D}${PTEST_PATH} && tar -xf - )
+	tar -c --exclude=\*.o --exclude=libperl.so --exclude=Makefile --exclude=makefile --exclude=hostperl \
+		--exclude=miniperl --exclude=generate_uudmap --exclude=patches * | ( cd ${D}${PTEST_PATH} && tar -x )
 
 	sed -i -e "s,${D},,g" \
 	       -e "s,--sysroot=${STAGING_DIR_HOST},,g" \
@@ -34,4 +35,4 @@
             '${PN}-ptest%s', '%s', recursive=True, match_path=True)
 }
 
-RDEPENDS_${PN}-ptest += "${PN}-modules ${PN}-doc ${PN}-misc sed"
+RDEPENDS_${PN}-ptest += "${PN}-modules ${PN}-doc ${PN}-misc sed libssp"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-rdepends_5.22.1.inc b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-rdepends_5.22.1.inc
index 830ecce..2c497fe 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-rdepends_5.22.1.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl-rdepends_5.22.1.inc
@@ -18,8 +18,9 @@
 
 # Some additional dependencies that the above doesn't manage to figure out
 RDEPENDS_${PN}-module-file-spec += "${PN}-module-file-spec-unix"
-DEPENDS_${PN}-module-math-bigint += "${PN}-module-math-bigint-calc"
+RDEPENDS_${PN}-module-math-bigint += "${PN}-module-math-bigint-calc"
 RDEPENDS_${PN}-module-thread-queue += "${PN}-module-attributes"
+RDEPENDS_${PN}-module-overload += "${PN}-module-overloading"
 
 
 # Depends list
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/config.sh b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/config.sh
index 59e016e..b2a7f2c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/config.sh
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/config.sh
@@ -8,7 +8,7 @@
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Thu Jun 18 05:37:27 UTC 2015
+# Configuration time: Fri May  6 20:13:46 PDT 2016
 # Configured by     : Open Embedded
 # Target system     : linux qemux86-64 3.19.5-yocto-standard #1 smp preempt tue jun 16 00:28:17 pdt 2015 x86_64 gnulinux
 
@@ -66,7 +66,7 @@
 api_revision='5'
 api_subversion='0'
 api_version='22'
-api_versionstring='5.22.1'
+api_versionstring='5.22.0'
 ar='ar'
 archlib='@LIBDIR@/perl/5.22.1/@ARCH@-thread-multi'
 archlibexp='@STAGINGDIR@@LIBDIR@/perl/5.22.1/@ARCH@-thread-multi'
@@ -96,7 +96,7 @@
 ccversion=''
 cf_by='Open Embedded'
 cf_email='Open Embedded@localhost.localdomain'
-cf_time='Thu Jun 18 05:37:27 UTC 2015'
+cf_time='Fri May  6 20:13:46 PDT 2016'
 charbits='8'
 charsize='1'
 chgrp=''
@@ -1194,7 +1194,7 @@
 vendorscript='@USRBIN@'
 vendorscriptexp='@USRBIN@'
 version='5.22.1'
-version_patchlevel_string='version 22 subversion 0'
+version_patchlevel_string='version 22 subversion 1'
 versiononly='undef'
 vi=''
 xlibpth='@LIBDIR@/386 @BASELIBDIR@386'
@@ -1204,7 +1204,7 @@
 zip='zip'
 PERL_REVISION=5
 PERL_VERSION=22
-PERL_SUBVERSION=0
+PERL_SUBVERSION=1
 PERL_API_REVISION=5
 PERL_API_VERSION=22
 PERL_API_SUBVERSION=0
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/fix_bad_rpath.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/fix_bad_rpath.patch
index 69ac434..7650128 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/fix_bad_rpath.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/fix_bad_rpath.patch
@@ -1,5 +1,5 @@
 Upstream-Status:Inappropriate [embedded specific]
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2011/07/01
 
 Fix these Package QA warnings before they are converted into fetal errors:
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-configure.sh b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-configure.sh
index e72ce49..25e7f8b 100755
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-configure.sh
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-configure.sh
@@ -15,7 +15,7 @@
         -Dprefix=/usr \
         -Dvendorprefix=/usr \
         -Dsiteprefix=/usr \
-        -Dotherlibdirs=/usr/lib/perl5/5.12.3 \
+        -Dotherlibdirs=/usr/lib/perl5/5.22.1 \
         -Duseshrplib \
         -Dusethreads \
         -Duseithreads \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2015-8607.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2015-8607.patch
new file mode 100644
index 0000000..7b4a001
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2015-8607.patch
@@ -0,0 +1,74 @@
+From 652c8d4852a69f1bb4d387946f9b76350a1f0d0e Mon Sep 17 00:00:00 2001
+From: Tony Cook <tony@develop-help.com>
+Date: Tue, 15 Dec 2015 10:56:54 +1100
+Subject: [PATCH] perl: fix CVE-2015-8607
+
+ensure File::Spec::canonpath() preserves taint
+
+Previously the unix specific XS implementation of canonpath() would
+return an untainted path when supplied a tainted path.
+
+For the empty string case, newSVpvs() already sets taint as needed on
+its result.
+
+This issue was assigned CVE-2015-8607.  [perl #126862]
+
+Backport patch from http://perl5.git.perl.org/perl.git/commitdiff/0b6f93036de171c12ba95d415e264d9cf7f4e1fd
+
+Upstream-Status: Backport
+CVE: CVE-2015-8607
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ dist/PathTools/Cwd.xs    |  1 +
+ dist/PathTools/t/taint.t | 19 ++++++++++++++++++-
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/dist/PathTools/Cwd.xs b/dist/PathTools/Cwd.xs
+index 9d4dcf0..3d018dc 100644
+--- a/dist/PathTools/Cwd.xs
++++ b/dist/PathTools/Cwd.xs
+@@ -535,6 +535,7 @@ THX_unix_canonpath(pTHX_ SV *path)
+     *o = 0;
+     SvPOK_on(retval);
+     SvCUR_set(retval, o - SvPVX(retval));
++    SvTAINT(retval);
+     return retval;
+ }
+ 
+diff --git a/dist/PathTools/t/taint.t b/dist/PathTools/t/taint.t
+index 309b3e5..48f8c5b 100644
+--- a/dist/PathTools/t/taint.t
++++ b/dist/PathTools/t/taint.t
+@@ -12,7 +12,7 @@ use Test::More;
+ BEGIN {
+     plan(
+         ${^TAINT}
+-        ? (tests => 17)
++        ? (tests => 21)
+         : (skip_all => "A perl without taint support")
+     );
+ }
+@@ -34,3 +34,20 @@ foreach my $func (@Functions) {
+ 
+ # Previous versions of Cwd tainted $^O
+ is !tainted($^O), 1, "\$^O should not be tainted";
++
++{
++    # [perl #126862] canonpath() loses taint
++    my $tainted = substr($ENV{PATH}, 0, 0);
++    # yes, getcwd()'s result should be tainted, and is tested above
++    # but be sure
++    ok tainted(File::Spec->canonpath($tainted . Cwd::getcwd)),
++        "canonpath() keeps taint on non-empty string";
++    ok tainted(File::Spec->canonpath($tainted)),
++        "canonpath() keeps taint on empty string";
++
++    (Cwd::getcwd() =~ /^(.*)/);
++    my $untainted = $1;
++    ok !tainted($untainted), "make sure our untainted value is untainted";
++    ok !tainted(File::Spec->canonpath($untainted)),
++        "canonpath() doesn't add taint to untainted string";
++}
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-1238.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-1238.patch
new file mode 100644
index 0000000..730ef17
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-1238.patch
@@ -0,0 +1,352 @@
+From 9987be3d24286d96d9dccec0433253ee8ad894b4 Mon Sep 17 00:00:00 2001
+From: Tony Cook <tony@develop-help.com>
+Date: Tue, 21 Jun 2016 10:02:02 +1000
+Subject: [PATCH] perl: fix CVE-2016-1238
+
+(perl #127834) remove . from the end of @INC if complex modules are loaded
+
+While currently Encode and Storable are know to attempt to load modules
+not included in the core, updates to other modules may lead to those
+also attempting to load new modules, so be safe and remove . for those
+as well.
+
+Backport patch from http://perl5.git.perl.org/perl.git/commitdiff/cee96d52c39b1e7b36e1c62d38bcd8d86e9a41ab
+
+Upstream-Status: Backport
+CVE: CVE-2016-1238
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ cpan/Archive-Tar/bin/ptar                 | 1 +
+ cpan/Archive-Tar/bin/ptardiff             | 1 +
+ cpan/Archive-Tar/bin/ptargrep             | 1 +
+ cpan/CPAN/scripts/cpan                    | 1 +
+ cpan/Digest-SHA/shasum                    | 1 +
+ cpan/Encode/bin/enc2xs                    | 1 +
+ cpan/Encode/bin/encguess                  | 1 +
+ cpan/Encode/bin/piconv                    | 1 +
+ cpan/Encode/bin/ucmlint                   | 1 +
+ cpan/Encode/bin/unidump                   | 1 +
+ cpan/ExtUtils-MakeMaker/bin/instmodsh     | 1 +
+ cpan/IO-Compress/bin/zipdetails           | 1 +
+ cpan/JSON-PP/bin/json_pp                  | 1 +
+ cpan/Test-Harness/bin/prove               | 1 +
+ dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp | 1 +
+ dist/Module-CoreList/corelist             | 1 +
+ ext/Pod-Html/bin/pod2html                 | 1 +
+ utils/c2ph.PL                             | 1 +
+ utils/h2ph.PL                             | 2 ++
+ utils/h2xs.PL                             | 2 ++
+ utils/libnetcfg.PL                        | 1 +
+ utils/perlbug.PL                          | 1 +
+ utils/perldoc.PL                          | 5 ++++-
+ utils/perlivp.PL                          | 2 ++
+ utils/splain.PL                           | 6 ++++++
+ 25 files changed, 36 insertions(+), 1 deletion(-)
+
+diff --git a/cpan/Archive-Tar/bin/ptar b/cpan/Archive-Tar/bin/ptar
+index 0eaffa7..9dc6402 100644
+--- a/cpan/Archive-Tar/bin/ptar
++++ b/cpan/Archive-Tar/bin/ptar
+@@ -1,6 +1,7 @@
+ #!/usr/bin/perl
+ use strict;
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use File::Find;
+ use Getopt::Std;
+ use Archive::Tar;
+diff --git a/cpan/Archive-Tar/bin/ptardiff b/cpan/Archive-Tar/bin/ptardiff
+index 66bd859..4668fa6 100644
+--- a/cpan/Archive-Tar/bin/ptardiff
++++ b/cpan/Archive-Tar/bin/ptardiff
+@@ -1,5 +1,6 @@
+ #!/usr/bin/perl
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use Archive::Tar;
+ use Getopt::Std;
+diff --git a/cpan/Archive-Tar/bin/ptargrep b/cpan/Archive-Tar/bin/ptargrep
+index 1a320f1..8dc6b4f 100644
+--- a/cpan/Archive-Tar/bin/ptargrep
++++ b/cpan/Archive-Tar/bin/ptargrep
+@@ -4,6 +4,7 @@
+ # archive.  See 'ptargrep --help' for more documentation.
+ #
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use warnings;
+ 
+diff --git a/cpan/CPAN/scripts/cpan b/cpan/CPAN/scripts/cpan
+index 5f4320e..ccba47e 100644
+--- a/cpan/CPAN/scripts/cpan
++++ b/cpan/CPAN/scripts/cpan
+@@ -1,5 +1,6 @@
+ #!/usr/local/bin/perl
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use vars qw($VERSION);
+ 
+diff --git a/cpan/Digest-SHA/shasum b/cpan/Digest-SHA/shasum
+index 14ddd60..62a2b0e 100644
+--- a/cpan/Digest-SHA/shasum
++++ b/cpan/Digest-SHA/shasum
+@@ -13,6 +13,7 @@
+ 	## "-0" option for reading bit strings, and
+ 	## "-p" option for portable digests (to be deprecated).
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use warnings;
+ use Fcntl;
+diff --git a/cpan/Encode/bin/enc2xs b/cpan/Encode/bin/enc2xs
+index 4d64e38..473a15c 100644
+--- a/cpan/Encode/bin/enc2xs
++++ b/cpan/Encode/bin/enc2xs
+@@ -4,6 +4,7 @@ BEGIN {
+     # with $ENV{PERL_CORE} set
+     # In case we need it in future...
+     require Config; import Config;
++    pop @INC if $INC[-1] eq '.';
+ }
+ use strict;
+ use warnings;
+diff --git a/cpan/Encode/bin/encguess b/cpan/Encode/bin/encguess
+index 5d7ac80..0be5c7c 100644
+--- a/cpan/Encode/bin/encguess
++++ b/cpan/Encode/bin/encguess
+@@ -1,5 +1,6 @@
+ #!./perl
+ use 5.008001;
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use warnings;
+ use Encode;
+diff --git a/cpan/Encode/bin/piconv b/cpan/Encode/bin/piconv
+index c1dad9e..60b2a59 100644
+--- a/cpan/Encode/bin/piconv
++++ b/cpan/Encode/bin/piconv
+@@ -1,6 +1,7 @@
+ #!./perl
+ # $Id: piconv,v 2.7 2014/05/31 09:48:48 dankogai Exp $
+ #
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use 5.8.0;
+ use strict;
+ use Encode ;
+diff --git a/cpan/Encode/bin/ucmlint b/cpan/Encode/bin/ucmlint
+index 622376d..25e0d67 100644
+--- a/cpan/Encode/bin/ucmlint
++++ b/cpan/Encode/bin/ucmlint
+@@ -3,6 +3,7 @@
+ # $Id: ucmlint,v 2.2 2008/03/12 09:51:11 dankogai Exp $
+ #
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ our  $VERSION = do { my @r = (q$Revision: 2.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+ 
+diff --git a/cpan/Encode/bin/unidump b/cpan/Encode/bin/unidump
+index ae0da30..f190827 100644
+--- a/cpan/Encode/bin/unidump
++++ b/cpan/Encode/bin/unidump
+@@ -1,5 +1,6 @@
+ #!./perl
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use Encode;
+ use Getopt::Std;
+diff --git a/cpan/ExtUtils-MakeMaker/bin/instmodsh b/cpan/ExtUtils-MakeMaker/bin/instmodsh
+index e551434..b3b109f 100644
+--- a/cpan/ExtUtils-MakeMaker/bin/instmodsh
++++ b/cpan/ExtUtils-MakeMaker/bin/instmodsh
+@@ -1,5 +1,6 @@
+ #!/usr/bin/perl -w
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use IO::File;
+ use ExtUtils::Packlist;
+diff --git a/cpan/IO-Compress/bin/zipdetails b/cpan/IO-Compress/bin/zipdetails
+index 0249850..1b9c70a 100644
+--- a/cpan/IO-Compress/bin/zipdetails
++++ b/cpan/IO-Compress/bin/zipdetails
+@@ -5,6 +5,7 @@
+ # Display info on the contents of a Zip file
+ #
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use warnings ;
+ 
+diff --git a/cpan/JSON-PP/bin/json_pp b/cpan/JSON-PP/bin/json_pp
+index df9d243..896cd2f 100644
+--- a/cpan/JSON-PP/bin/json_pp
++++ b/cpan/JSON-PP/bin/json_pp
+@@ -1,5 +1,6 @@
+ #!/usr/bin/perl
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use Getopt::Long;
+ 
+diff --git a/cpan/Test-Harness/bin/prove b/cpan/Test-Harness/bin/prove
+index 6637cc4..d71b238 100644
+--- a/cpan/Test-Harness/bin/prove
++++ b/cpan/Test-Harness/bin/prove
+@@ -1,5 +1,6 @@
+ #!/usr/bin/perl -w
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use warnings;
+ use App::Prove;
+diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp b/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
+index e2ac71a..d596cdf 100644
+--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
++++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
+@@ -1,5 +1,6 @@
+ #!perl
+ use 5.006;
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ eval {
+   require ExtUtils::ParseXS;
+diff --git a/dist/Module-CoreList/corelist b/dist/Module-CoreList/corelist
+index aa4a945..bbe61cc 100644
+--- a/dist/Module-CoreList/corelist
++++ b/dist/Module-CoreList/corelist
+@@ -130,6 +130,7 @@ requested perl versions.
+ 
+ =cut
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use Module::CoreList;
+ use Getopt::Long qw(:config no_ignore_case);
+ use Pod::Usage;
+diff --git a/ext/Pod-Html/bin/pod2html b/ext/Pod-Html/bin/pod2html
+index b022859..7d1d232 100644
+--- a/ext/Pod-Html/bin/pod2html
++++ b/ext/Pod-Html/bin/pod2html
+@@ -216,6 +216,7 @@ This program is distributed under the Artistic License.
+ 
+ =cut
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use Pod::Html;
+ 
+ pod2html @ARGV;
+diff --git a/utils/c2ph.PL b/utils/c2ph.PL
+index 13389ec..cef0b5c 100644
+--- a/utils/c2ph.PL
++++ b/utils/c2ph.PL
+@@ -280,6 +280,7 @@ Anyway, here it is.  Should run on perl v4 or greater.  Maybe less.
+ 
+ $RCSID = '$Id: c2ph,v 1.7 95/10/28 10:41:47 tchrist Exp Locker: tchrist $';
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use File::Temp;
+ 
+ ######################################################################
+diff --git a/utils/h2ph.PL b/utils/h2ph.PL
+index 55c1f72..300b756 100644
+--- a/utils/h2ph.PL
++++ b/utils/h2ph.PL
+@@ -36,6 +36,8 @@ $Config{startperl}
+ 
+ print OUT <<'!NO!SUBS!';
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
++
+ use strict;
+ 
+ use Config;
+diff --git a/utils/h2xs.PL b/utils/h2xs.PL
+index 268f680..f95ee0c 100644
+--- a/utils/h2xs.PL
++++ b/utils/h2xs.PL
+@@ -35,6 +35,8 @@ $Config{startperl}
+ 
+ print OUT <<'!NO!SUBS!';
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
++
+ use warnings;
+ 
+ =head1 NAME
+diff --git a/utils/libnetcfg.PL b/utils/libnetcfg.PL
+index 59a2de8..26d2f99 100644
+--- a/utils/libnetcfg.PL
++++ b/utils/libnetcfg.PL
+@@ -97,6 +97,7 @@ Jarkko Hietaniemi, conversion into libnetcfg for inclusion into Perl 5.8.
+ 
+ # $Id: Configure,v 1.8 1997/03/04 09:22:32 gbarr Exp $
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use strict;
+ use IO::File;
+ use Getopt::Std;
+diff --git a/utils/perlbug.PL b/utils/perlbug.PL
+index 885785a..ae8c343 100644
+--- a/utils/perlbug.PL
++++ b/utils/perlbug.PL
+@@ -57,6 +57,7 @@ print OUT <<'!NO!SUBS!';
+ my @patches = Config::local_patches();
+ my $patch_tags = join "", map /(\S+)/ ? "+$1 " : (), @patches;
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
+ use warnings;
+ use strict;
+ use Config;
+diff --git a/utils/perldoc.PL b/utils/perldoc.PL
+index e201de9..cd60bd4 100644
+--- a/utils/perldoc.PL
++++ b/utils/perldoc.PL
+@@ -44,7 +44,10 @@ $Config{startperl}
+ # This "$file" file was generated by "$0"
+ 
+ require 5;
+-BEGIN { \$^W = 1 if \$ENV{'PERLDOCDEBUG'} }
++BEGIN {
++    \$^W = 1 if \$ENV{'PERLDOCDEBUG'};
++    pop \@INC if \$INC[-1] eq '.';
++}
+ use Pod::Perldoc;
+ exit( Pod::Perldoc->run() );
+ 
+diff --git a/utils/perlivp.PL b/utils/perlivp.PL
+index cc49f96..696a44e 100644
+--- a/utils/perlivp.PL
++++ b/utils/perlivp.PL
+@@ -39,6 +39,8 @@ print OUT "\n# perlivp $^V\n";
+ 
+ print OUT <<'!NO!SUBS!';
+ 
++BEGIN { pop @INC if $INC[-1] eq '.' }
++
+ sub usage {
+     warn "@_\n" if @_;
+     print << "    EOUSAGE";
+diff --git a/utils/splain.PL b/utils/splain.PL
+index 9c70b61..cae84a0 100644
+--- a/utils/splain.PL
++++ b/utils/splain.PL
+@@ -38,6 +38,12 @@ $Config{startperl}
+ 	if \$running_under_some_shell;
+ !GROK!THIS!
+ 
++print <<'!NO!SUBS!';
++
++BEGIN { pop @INC if $INC[-1] eq '.' }
++
++!NO!SUBS!
++
+ while (<IN>) {
+     print OUT unless /^package diagnostics/;
+ }
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-2381.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-2381.patch
new file mode 100644
index 0000000..99fa8d9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-2381.patch
@@ -0,0 +1,114 @@
+CVE: CVE-2016-2381
+Upstream-Status: Backport
+
+Backport patch to fix CVE-2016-2381 from
+
+http://perl5.git.perl.org/perl.git/commitdiff/ae37b791a73a9e78dedb89fb2429d2628cf58076
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From: Tony Cook <tony@develop-help.com>
+Date: Wed, 27 Jan 2016 00:52:15 +0000 (+1100)
+Subject: remove duplicate environment variables from environ
+X-Git-Tag: v5.23.9~170
+X-Git-Url: http://perl5.git.perl.org/perl.git/commitdiff_plain/ae37b791a73a9e78dedb89fb2429d2628cf58076
+
+remove duplicate environment variables from environ
+
+If we see duplicate environment variables while iterating over
+environ[]:
+
+a) make sure we use the same value in %ENV that getenv() returns.
+
+Previously on a duplicate, %ENV would have the last entry for the name
+from environ[], but a typical getenv() would return the first entry.
+
+Rather than assuming all getenv() implementations return the first entry
+explicitly call getenv() to ensure they agree.
+
+b) remove duplicate entries from environ
+
+Previously if there was a duplicate definition for a name in environ[]
+setting that name in %ENV could result in an unsafe value being passed
+to a child process, so ensure environ[] has no duplicates.
+
+CVE-2016-2381
+---
+
+diff --git a/perl.c b/perl.c
+index 4a324c6..5c71fd0 100644
+--- a/perl.c
++++ b/perl.c
+@@ -4329,23 +4329,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env)
+ 	}
+ 	if (env) {
+ 	  char *s, *old_var;
++          STRLEN nlen;
+ 	  SV *sv;
++          HV *dups = newHV();
++
+ 	  for (; *env; env++) {
+ 	    old_var = *env;
+ 
+ 	    if (!(s = strchr(old_var,'=')) || s == old_var)
+ 		continue;
++            nlen = s - old_var;
+ 
+ #if defined(MSDOS) && !defined(DJGPP)
+ 	    *s = '\0';
+ 	    (void)strupr(old_var);
+ 	    *s = '=';
+ #endif
+-	    sv = newSVpv(s+1, 0);
+-	    (void)hv_store(hv, old_var, s - old_var, sv, 0);
++            if (hv_exists(hv, old_var, nlen)) {
++                const char *name = savepvn(old_var, nlen);
++
++                /* make sure we use the same value as getenv(), otherwise code that
++                   uses getenv() (like setlocale()) might see a different value to %ENV
++                 */
++                sv = newSVpv(PerlEnv_getenv(name), 0);
++
++                /* keep a count of the dups of this name so we can de-dup environ later */
++                if (hv_exists(dups, name, nlen))
++                    ++SvIVX(*hv_fetch(dups, name, nlen, 0));
++                else
++                    (void)hv_store(dups, name, nlen, newSViv(1), 0);
++
++                Safefree(name);
++            }
++            else {
++                sv = newSVpv(s+1, 0);
++            }
++	    (void)hv_store(hv, old_var, nlen, sv, 0);
+ 	    if (env_is_not_environ)
+ 	        mg_set(sv);
+ 	  }
++          if (HvKEYS(dups)) {
++              /* environ has some duplicate definitions, remove them */
++              HE *entry;
++              hv_iterinit(dups);
++              while ((entry = hv_iternext_flags(dups, 0))) {
++                  STRLEN nlen;
++                  const char *name = HePV(entry, nlen);
++                  IV count = SvIV(HeVAL(entry));
++                  IV i;
++                  SV **valp = hv_fetch(hv, name, nlen, 0);
++
++                  assert(valp);
++
++                  /* try to remove any duplicate names, depending on the
++                   * implementation used in my_setenv() the iteration might
++                   * not be necessary, but let's be safe.
++                   */
++                  for (i = 0; i < count; ++i)
++                      my_setenv(name, 0);
++
++                  /* and set it back to the value we set $ENV{name} to */
++                  my_setenv(name, SvPV_nolen(*valp));
++              }
++          }
++          SvREFCNT_dec_NN(dups);
+       }
+ #endif /* USE_ENVIRON_ARRAY */
+ #endif /* !PERL_MICRO */
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-6185.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-6185.patch
new file mode 100644
index 0000000..2722af3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-CVE-2016-6185.patch
@@ -0,0 +1,128 @@
+From 7cedaa8bc2ca9e63369d0e2d4c4c23af9febb93a Mon Sep 17 00:00:00 2001
+From: Father Chrysostomos <sprout@cpan.org>
+Date: Sat, 2 Jul 2016 22:56:51 -0700
+Subject: [PATCH] perl: fix CVE-2016-6185
+MIME-Version: 1.0
+
+Don't let XSLoader load relative paths
+
+[rt.cpan.org #115808]
+
+The logic in XSLoader for determining the library goes like this:
+
+    my $c = () = split(/::/,$caller,-1);
+    $modlibname =~ s,[\\/][^\\/]+$,, while $c--;    # Q&D basename
+    my $file = "$modlibname/auto/$modpname/$modfname.bundle";
+
+(That last line varies by platform.)
+
+$caller is the calling package.  $modlibname is the calling file.  It
+removes as many path segments from $modlibname as there are segments
+in $caller.  So if you have Foo/Bar/XS.pm calling XSLoader from the
+Foo::Bar package, the $modlibname will end up containing the path in
+@INC where XS.pm was found, followed by "/Foo".  Usually the fallback
+to Dynaloader::bootstrap_inherit, which does an @INC search, makes
+things Just Work.
+
+But if our hypothetical Foo/Bar/XS.pm actually calls
+XSLoader::load from inside a string eval, then path ends up being
+"(eval 1)/auto/Foo/Bar/Bar.bundle".
+
+So if someone creates a directory named '(eval 1)' with a naughty
+binary file in it, it will be loaded if a script using Foo::Bar is run
+in the parent directory.
+
+This commit makes XSLoader fall back to Dynaloader's @INC search if
+the calling file has a relative path that is not found in @INC.
+
+Backport patch from http://perl5.git.perl.org/perl.git/commitdiff/08e3451d7
+
+Upstream-Status: Backport
+CVE: CVE-2016-6185
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ dist/XSLoader/XSLoader_pm.PL | 25 +++++++++++++++++++++++++
+ dist/XSLoader/t/XSLoader.t   | 27 ++++++++++++++++++++++++++-
+ 2 files changed, 51 insertions(+), 1 deletion(-)
+
+diff --git a/dist/XSLoader/XSLoader_pm.PL b/dist/XSLoader/XSLoader_pm.PL
+index 668411d..778e46b 100644
+--- a/dist/XSLoader/XSLoader_pm.PL
++++ b/dist/XSLoader/XSLoader_pm.PL
+@@ -104,6 +104,31 @@ print OUT <<'EOT';
+     my $modpname = join('/',@modparts);
+     my $c = () = split(/::/,$caller,-1);
+     $modlibname =~ s,[\\/][^\\/]+$,, while $c--;    # Q&D basename
++    # Does this look like a relative path?
++    if ($modlibname !~ m|^[\\/]|) {
++        # Someone may have a #line directive that changes the file name, or
++        # may be calling XSLoader::load from inside a string eval.  We cer-
++        # tainly do not want to go loading some code that is not in @INC,
++        # as it could be untrusted.
++        #
++        # We could just fall back to DynaLoader here, but then the rest of
++        # this function would go untested in the perl core, since all @INC
++        # paths are relative during testing.  That would be a time bomb
++        # waiting to happen, since bugs could be introduced into the code.
++        #
++        # So look through @INC to see if $modlibname is in it.  A rela-
++        # tive $modlibname is not a common occurrence, so this block is
++        # not hot code.
++        FOUND: {
++            for (@INC) {
++                if ($_ eq $modlibname) {
++                    last FOUND;
++                }
++            }
++            # Not found.  Fall back to DynaLoader.
++            goto \&XSLoader::bootstrap_inherit;
++        }
++    }
+ EOT
+ 
+ my $dl_dlext = quotemeta($Config::Config{'dlext'});
+diff --git a/dist/XSLoader/t/XSLoader.t b/dist/XSLoader/t/XSLoader.t
+index 2ff11fe..1e86faa 100644
+--- a/dist/XSLoader/t/XSLoader.t
++++ b/dist/XSLoader/t/XSLoader.t
+@@ -33,7 +33,7 @@ my %modules = (
+     'Time::HiRes'=> q| ::can_ok( 'Time::HiRes' => 'usleep'  ) |,  # 5.7.3
+ );
+ 
+-plan tests => keys(%modules) * 3 + 9;
++plan tests => keys(%modules) * 3 + 10;
+ 
+ # Try to load the module
+ use_ok( 'XSLoader' );
+@@ -125,3 +125,28 @@ XSLoader::load("Devel::Peek");
+ EOS
+     or ::diag $@;
+ }
++
++SKIP: {
++  skip "File::Path not available", 1
++    unless eval { require File::Path };
++  my $name = "phooo$$";
++  File::Path::make_path("$name/auto/Foo/Bar");
++  open my $fh,
++    ">$name/auto/Foo/Bar/Bar.$Config::Config{'dlext'}";
++  close $fh;
++  my $fell_back;
++  local *XSLoader::bootstrap_inherit = sub {
++    $fell_back++;
++    # Break out of the calling subs
++    goto the_test;
++  };
++  eval <<END;
++#line 1 $name
++package Foo::Bar;
++XSLoader::load("Foo::Bar");
++END
++ the_test:
++  ok $fell_back,
++    'XSLoader will not load relative paths based on (caller)[1]';
++  File::Path::remove_tree($name);
++}
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-conflict-between-skip_all-and-END.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-conflict-between-skip_all-and-END.patch
new file mode 100644
index 0000000..de946db
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-fix-conflict-between-skip_all-and-END.patch
@@ -0,0 +1,181 @@
+Some Perl tests fail when run on a cross-compiled target machine. Apply
+a slightly tweaked upstream patch to fix the problems. Notes:
+    1. as of 2 Jun 2016, the original patch has been applied to the current
+       EUMM releases, but has not made it into perl core yet.
+    2. when the base perl package is upgraded in Yocto, this patch may need
+       to be replaced by the original upstream version to correctly apply
+       to the current version of ExtUtils-MakeMaker at that time.
+
+[YOCTO #8656]
+
+Upstream-Status: Backport
+
+Signed-off-by: Bill Randle <william.c.randle@intel.com>
+
+From 4a07a3bd18363986112cf2b39dec3c2985353ffb Mon Sep 17 00:00:00 2001
+From: Francois Perrad <francois.perrad@gadz.org>
+Date: Mon, 22 Dec 2014 19:04:34 +0100
+Subject: [PATCH] fix conflict between skip_all and END section
+
+since the commit 430de781809a6be3bcd25a349dc40ce54405ab53
+the test suite fails in cross-compil environment (perl-5.21.6 & perl-5.21.7)
+like this :
+
+    $ ./perl harness -v ../cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t
+    ../cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t ..
+    1..0 # SKIP cross-compiling and make not available
+    ok 1 - chdir updir
+    ok 2 - teardown
+    # Looks like you planned 0 tests but ran 2.
+    skipped: cross-compiling and make not available
+
+this commit restores the implicit call of plan() at import time of Test::More
+
+Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
+---
+ cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t     | 7 ++++---
+ cpan/ExtUtils-MakeMaker/t/PL_FILES.t         | 4 ++--
+ cpan/ExtUtils-MakeMaker/t/basic.t            | 4 ++--
+ cpan/ExtUtils-MakeMaker/t/echo.t             | 6 +++---
+ cpan/ExtUtils-MakeMaker/t/min_perl_version.t | 4 ++--
+ cpan/ExtUtils-MakeMaker/t/pm_to_blib.t       | 4 ++--
+ cpan/ExtUtils-MakeMaker/t/recurs.t           | 4 ++--
+ cpan/ExtUtils-MakeMaker/t/several_authors.t  | 4 ++--
+ 8 files changed, 19 insertions(+), 18 deletions(-)
+
+diff --git a/cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t b/cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t
+index f27b62c..3bbb3a6 100644
+--- a/cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t
++++ b/cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t
+@@ -15,12 +15,13 @@ $CLEANUP &&= 1; # so always 1 or numerically 0
+ 
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::BFD;
+-use Test::More;
+ use Config;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+-    : (tests => 3 + $CLEANUP + @INSTDIRS * (15 + $CLEANUP));
++    : ();
++plan tests => 3 + $CLEANUP + @INSTDIRS * (15 + $CLEANUP);
+ 
+ my $Is_VMS = $^O eq 'VMS';
+ 
+diff --git a/cpan/ExtUtils-MakeMaker/t/PL_FILES.t b/cpan/ExtUtils-MakeMaker/t/PL_FILES.t
+index 0779dbb..85d53a5 100644
+--- a/cpan/ExtUtils-MakeMaker/t/PL_FILES.t
++++ b/cpan/ExtUtils-MakeMaker/t/PL_FILES.t
+@@ -11,9 +11,9 @@ use File::Temp qw[tempdir];
+ use MakeMaker::Test::Setup::PL_FILES;
+ use MakeMaker::Test::Utils;
+ use Config;
+-use Test::More;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+     : (tests => 9);
+ 
+diff --git a/cpan/ExtUtils-MakeMaker/t/basic.t b/cpan/ExtUtils-MakeMaker/t/basic.t
+index 3dd66ad..eddf2e9 100644
+--- a/cpan/ExtUtils-MakeMaker/t/basic.t
++++ b/cpan/ExtUtils-MakeMaker/t/basic.t
+@@ -20,9 +20,9 @@ use utf8;
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::BFD;
+ use Config;
+-use Test::More;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+     : (tests => 171);
+ use File::Find;
+diff --git a/cpan/ExtUtils-MakeMaker/t/echo.t b/cpan/ExtUtils-MakeMaker/t/echo.t
+index 789b85f..c43bc47 100644
+--- a/cpan/ExtUtils-MakeMaker/t/echo.t
++++ b/cpan/ExtUtils-MakeMaker/t/echo.t
+@@ -14,11 +14,11 @@ use MakeMaker::Test::Utils;
+ use File::Temp;
+ use Cwd 'abs_path';
+ 
+-use Test::More;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+-    : ();
++    : (tests => 18);
+ 
+ #--------------------- Setup
+ 
+diff --git a/cpan/ExtUtils-MakeMaker/t/min_perl_version.t b/cpan/ExtUtils-MakeMaker/t/min_perl_version.t
+index c5d78d6..2ef118d 100644
+--- a/cpan/ExtUtils-MakeMaker/t/min_perl_version.t
++++ b/cpan/ExtUtils-MakeMaker/t/min_perl_version.t
+@@ -13,9 +13,9 @@ use TieOut;
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::MPV;
+ use Config;
+-use Test::More;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+     : (tests => 36);
+ use File::Path;
+diff --git a/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t b/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t
+index f1e348e..ebfa26c 100644
+--- a/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t
++++ b/cpan/ExtUtils-MakeMaker/t/pm_to_blib.t
+@@ -12,9 +12,9 @@ use ExtUtils::MakeMaker;
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::BFD;
+ use Config;
+-use Test::More;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+     : 'no_plan';
+ 
+diff --git a/cpan/ExtUtils-MakeMaker/t/recurs.t b/cpan/ExtUtils-MakeMaker/t/recurs.t
+index 84c09a2..661e0db 100644
+--- a/cpan/ExtUtils-MakeMaker/t/recurs.t
++++ b/cpan/ExtUtils-MakeMaker/t/recurs.t
+@@ -14,9 +14,9 @@ use File::Temp qw[tempdir];
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::Recurs;
+ use Config;
+-use Test::More;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+     : (tests => 26);
+ 
+diff --git a/cpan/ExtUtils-MakeMaker/t/several_authors.t b/cpan/ExtUtils-MakeMaker/t/several_authors.t
+index 1a75a3e..869e9f0 100644
+--- a/cpan/ExtUtils-MakeMaker/t/several_authors.t
++++ b/cpan/ExtUtils-MakeMaker/t/several_authors.t
+@@ -13,9 +13,9 @@ use TieOut;
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::SAS;
+ use Config;
+-use Test::More;
+ use ExtUtils::MM;
+-plan !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
++use Test::More
++    !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
+     ? (skip_all => "cross-compiling and make not available")
+     : (tests => 20);
+ use File::Path;
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-remove-nm-from-libswanted.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-remove-nm-from-libswanted.patch
new file mode 100644
index 0000000..c489f05
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-remove-nm-from-libswanted.patch
@@ -0,0 +1,30 @@
+From 4732711e2548b6d734ca831d65dbcf501a89774e Mon Sep 17 00:00:00 2001
+From: Andreas Koenig <andk@cpan.org>
+Date: Sun, 3 Jan 2016 08:40:33 +0100
+Subject: [PATCH] Remove nm from libswanted
+
+Nm stood for "New Math" library in the context of 1994. 2014 a conflicting
+library libnm appeared that has a network manager context.
+
+Upstream-Status: Backport [commit 4732711e on branch blead, tag v5.25.0]
+
+---
+ Configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Configure b/Configure
+index 0e71b4b..cfbdaa1 100755
+--- a/Configure
++++ b/Configure
+@@ -1464,7 +1464,7 @@ libswanted_uselargefiles=''
+ : set usesocks on the Configure command line to enable socks.
+ : List of libraries we want.
+ : If anyone needs extra -lxxx, put those in a hint file.
+-libswanted="cl pthread socket bind inet nsl nm ndbm gdbm dbm db malloc dl ld"
++libswanted="cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld"
+ libswanted="$libswanted sun m crypt sec util c cposix posix ucb bsd BSD"
+ : We probably want to search /usr/shlib before most other libraries.
+ : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+-- 
+2.9.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-test-customized.patch b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-test-customized.patch
new file mode 100644
index 0000000..84b0b88
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl/perl-test-customized.patch
@@ -0,0 +1,61 @@
+The OE core recipies customize some ExtUtils-MakeMaker modules,
+which causes their MD5 sum to mismatch the provided table and the
+corresponding tests to fail. Also, we patch several test files with
+a backported patch. Update list of hashes to reflect the patched files.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bill Randle <william.c.randle@intel.com>
+
+Index: perl-5.22.1/t/porting/customized.dat
+===================================================================
+--- perl-5.22.1.orig/t/porting/customized.dat	2015-10-31 13:36:16.000000000 +0000
++++ perl-5.22.1/t/porting/customized.dat	2016-06-02 12:50:10.381030204 -0700
+@@ -1,8 +1,8 @@
+ CPAN cpan/CPAN/lib/CPAN.pm ce62c43d72f101c011184dbbc59e21c2790826f0
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm 7f4dfd0fe884bd42412bcf04ca80ef97b39c1d54
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm bef099988b15fb0b2a1f5ac48c01af1f7f36d329
+-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 8168e18f0e3ce3ece4bb7e7c72d57ec07c67c402
+-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 7115e97a53559cb3ec061dd6f7f344e522724c4a
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm a08ecf80c8f0a234243817713b2a5ab0dcae3c0a
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 3d7abd674b15ed323f743594ef0bd09db76b1aee
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm f8db8d4245bf0684b8210c811f50d7cfb1a27d78
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod 757bffb47857521311f8f3bde43ebe165f8d5191
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm 82be06851deb84c6419ad003ce9b6d1957f395f3
+@@ -14,7 +14,7 @@
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm ab80029ab16d38d4f2e41dc88d2ceb9f3790e477
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm 453e0abbc4bb38db4c0820ad5c4846f313b66291
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm c1b1babda8f43ae7a2caba1cb4f70f92af5a0e34
+-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 6f90d94ad3e7aa0045a3b1a10a1bb18391f89f57
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 21bde53290bf1a4da4457290b65bd1b0ca6f1d16
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm cab2b3ce08b71a4ce89aa630f236eb08b852439d
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm 61fced0faf518bf87c265fcb51ed330ba354623f
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm ae0ef51a7b6dd0b05aa61c779df7167dda5f5119
+@@ -23,7 +23,7 @@
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 433135eecb85b4b1d90d3027432f329436c78447
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm 1fbb5605bfb47feee4083feba8aa85e659628f70
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm 5b66d1f485a6034d96fc24ba1665b1bad9e447f1
+-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 8cef99a9bd370ecfd07ddb0efbdcbb4101255e45
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 860d520234d7c9036d91f0b143a1dddf2a5e8cb7
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm 939572fde3d59ba77c2e677fe2df2bed4bed5898
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 09c2049bfd25b735e2a5bcf56a6cff7b4827f9c8
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm d65d63f8217a55c36f62e249814988974f593c79
+@@ -31,8 +31,16 @@
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm 12df38eacceeed73cab94c423236bfaed0fbbfec
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm 22fe9596a0237252f45399a36abc83b7813bc328
+ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm 7fbc42ca2ebc6c677b79ae5fd5647243cf069463
+-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/basic.t 6cdc7701b50e586bc9c4cfb1616de8eb0b1baf34
+-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/pm_to_blib.t 71ebcee355691ce374fcad251b12d8b2412462b3
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/basic.t d78fdec7a4512dc8d2a7abd62b8104530af8ecf9
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/echo.t 9427f4adebbb13b57b4a76fef2972adf63c9bd96
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t ef356c196bb5c3c428ae309d7f989bdd6d79b86d
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t 3e6d4d6eb2eab42e983ac70eb5737a759af0916f
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/INST.t e553fa0d53c894c8d36aafb69edd55b38a9355f8
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/min_perl_version.t e930ec9217de5a1785d0247c30b159e6f7f5673f
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/PL_FILES.t 7e49ab6c4d467826d22023fa03d77b85f935b58e
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/pm_to_blib.t a04c96eecfab17e4094604e0fb998dd93cf93b93
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/recurs.t 94cce3bff875a878ed27816b3f5df2ca4225c714
++ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/several_authors.t f811d993c0835c66dc501ed55083acb29bf33bf7
+ Text::ParseWords cpan/Text-ParseWords/t/ParseWords.t 9bae51c9b944cd5c0bbabe9d397e573976a2be8e
+ Win32API::File cpan/Win32API-File/buffers.h 02d230ac9ac7091365128161a0ed671898baefae
+ Win32API::File cpan/Win32API-File/cFile.h fca7e383e76979c3ac3adf12d11d1bcd2618e489
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl_5.22.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl_5.22.1.bb
index bf8b3b6..792a65b 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/perl/perl_5.22.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/perl/perl_5.22.1.bb
@@ -63,6 +63,12 @@
         file://ext-ODBM_File-t-odbm.t-fix-the-path-of-dbmt_common.p.patch \
         file://perl-PathTools-don-t-filter-out-blib-from-INC.patch \
         file://perl-errno-generation-gcc5.patch \
+        file://perl-fix-conflict-between-skip_all-and-END.patch \
+        file://perl-test-customized.patch \
+        file://perl-fix-CVE-2016-2381.patch \
+        file://perl-fix-CVE-2016-6185.patch \
+        file://perl-fix-CVE-2015-8607.patch \
+        file://perl-fix-CVE-2016-1238.patch \
 "
 
 # Fix test case issues
@@ -340,7 +346,9 @@
 ALLOW_EMPTY_perl-modules = "1"
 PACKAGES_append = " perl-modules "
 
-python populate_packages_prepend () {
+PACKAGESPLITFUNCS_prepend = "split_perl_packages "
+
+python split_perl_packages () {
     libdir = d.expand('${libdir}/perl/${PV}')
     do_split_packages(d, libdir, 'auto/([^.]*)/[^/]*\.(so|ld|ix|al)', 'perl-module-%s', 'perl module %s', recursive=True, match_path=True, prepend=False)
     do_split_packages(d, libdir, 'Module/([^\/]*)\.pm', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-gdate-Move-warning-pragma-outside-of-function.patch b/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-gdate-Move-warning-pragma-outside-of-function.patch
new file mode 100644
index 0000000..14c8293
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-gdate-Move-warning-pragma-outside-of-function.patch
@@ -0,0 +1,39 @@
+From 946d36266d8a30f04fe34d3183bf4929141934d2 Mon Sep 17 00:00:00 2001
+From: coypu <coypu@sdf.org>
+Date: Wed, 2 Mar 2016 19:38:48 +0200
+Subject: [PATCH] gdate: Move warning pragma outside of function
+
+Commit 0817af40e8c74c721c30f6ef482b1f53d12044c7 breaks the build on
+older versions of GCC, which don't allow pragma inside functions.
+
+https://bugzilla.gnome.org/761550
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ glib/glib/gdate.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/glib/glib/gdate.c b/glib/glib/gdate.c
+index 1978cf7..20e6c4a 100644
+--- a/glib/glib/gdate.c
++++ b/glib/glib/gdate.c
+@@ -2439,6 +2439,9 @@ win32_strftime_helper (const GDate     *d,
+  *
+  * Returns: number of characters written to the buffer, or 0 the buffer was too small
+  */
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-nonliteral"
++
+ gsize     
+ g_date_strftime (gchar       *s, 
+                  gsize        slen, 
+@@ -2549,3 +2552,5 @@ g_date_strftime (gchar       *s,
+   return retval;
+ #endif
+ }
++
++#pragma GCC diagnostic pop
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch b/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch
new file mode 100644
index 0000000..80310cd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch
@@ -0,0 +1,41 @@
+From e404e27de77d8b993c4cc87013d707200b3a5547 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 17 May 2016 13:26:27 +0300
+Subject: [PATCH] glib-gettext.m4: Update AM_GLIB_GNU_GETTEXT to match glib
+
+This avoids
+  error: m4_copy: won't overwrite defined macro: glib_DEFUN
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Pending
+
+---
+ glib/m4macros/glib-gettext.m4 | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/glib/m4macros/glib-gettext.m4 b/glib/m4macros/glib-gettext.m4
+index 5217fd8..155b1d8 100644
+--- a/glib/m4macros/glib-gettext.m4
++++ b/glib/m4macros/glib-gettext.m4
+@@ -313,7 +313,7 @@ msgstr ""
+ # on various variables needed by the Makefile.in.in installed by 
+ # glib-gettextize.
+ dnl
+-glib_DEFUN([GLIB_GNU_GETTEXT],
++AU_DEFUN([GLIB_GNU_GETTEXT],
+   [AC_REQUIRE([AC_PROG_CC])dnl
+    
+    GLIB_LC_MESSAGES
+@@ -383,7 +383,8 @@ glib_DEFUN([GLIB_GNU_GETTEXT],
+    rm -f po/POTFILES
+    sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ 	< $srcdir/po/POTFILES.in > po/POTFILES
+-  ])
++  ],
++  [[$0: This macro is deprecated. You should use upstream gettext instead.]])
+ 
+ # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+ # -------------------------------
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
index d34f608..ff8254c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
@@ -12,12 +12,14 @@
 DEPENDS_class-native = ""
 DEPENDS_class-nativesdk = ""
 
-SRCREV = "5914edfe9604abfedd220103cbac382fc4d268bb"
-PV = "0.29+git${SRCPV}"
+SRCREV = "87152c05be88ca8be71a3a563f275b3686d32c28"
+PV = "0.29.1+git${SRCPV}"
 
 SRC_URI = "git://anongit.freedesktop.org/pkg-config \
            file://pkg-config-native.in \
            file://fix-glib-configure-libtool-usage.patch \
+           file://0001-gdate-Move-warning-pragma-outside-of-function.patch \
+           file://0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/prelink/prelink_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/prelink/prelink_git.bb
index e223ef6..0856b1c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/prelink/prelink_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/prelink/prelink_git.bb
@@ -8,7 +8,7 @@
 runtime and thus programs come up faster."
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
-SRCREV = "927979bbd115eeb8a75db3231906ef6aca4c4eb6"
+SRCREV = "ef20628dd78b92e1a3123afc67b64cf010bdd9e4"
 PV = "1.0+git${SRCPV}"
 
 #
@@ -44,6 +44,99 @@
 EXTRA_OECONF = "--disable-selinux --with-pkgversion=${PV}-${PR} \
 	--with-bugurl=http://bugzilla.yoctoproject.org/"
 
+
+#
+# For target prelink we need to ensure paths match the lib path layout
+# including for any configured multilibs
+#
+python do_linkerpaths () {
+    values = all_multilib_tune_list(["TUNE_ARCH", "baselib", "ABIEXTENSION"], d)
+
+    arches = values["TUNE_ARCH"]
+    baselibs = values["baselib"]
+    abis = values["ABIEXTENSION"]
+
+    def replace_lines(f, search, replacement, d, firstonly = False, secondonly = False):
+        f = d.expand(f)
+        if search == replacement:
+            return
+        bb.debug(2, "Replacing %s with %s in %s" % (search, replacement, f))
+        with open(f, "r") as data:
+            lines = data.readlines()
+        with open(f, "w") as data:
+            for line in lines:
+                if not secondonly and not firstonly:
+                    line = line.replace(search, replacement)
+                elif secondonly and search in line:
+                    secondonly = False
+                elif firstonly and search and search in line:
+                    line = line.replace(search, replacement)
+                    search = None
+                data.write(line)
+
+    def replace_lines_rtld(f, search, replacement, section, d):
+        f = d.expand(f)
+        bb.debug(2, "Replacing %s with %s in %s" % (search, replacement, f))
+        with open(f, "r") as data:
+            lines = data.readlines()
+        found = False
+        found2 = False
+        with open(f, "w") as data:
+            for line in lines:
+                if section in line:
+                    if section == "else" and "if" in line:
+                        found = False
+                    else:
+                        found = True
+                if found and "dst_LIB =" in line:
+                    found2 = True
+                elif "}" in line:
+                    found = False
+                    found2 = False
+                if found2:
+                    line = line.replace(search, replacement)
+                data.write(line)
+
+    for i, arch in enumerate(arches):
+        tune_baselib = baselibs[i]
+        abi = abis[i]
+
+        bits = 32
+        if arch == "powerpc":
+            replace_lines("${S}/src/arch-ppc.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d)
+        elif arch == "powerpc64":
+            replace_lines("${S}/src/arch-ppc64.c", "/lib64/ld64.so.1", "/" + tune_baselib + "/ld64.so.1", d)
+            bits = 64
+        elif arch == "x86_64":
+            if abi == "x32":
+                replace_lines("${S}/src/arch-x86_64.c", "/libx32/ld-linux-x32.so.2", "/" + tune_baselib + "/ld-linux-x32.so.2", d)
+            else:
+                replace_lines("${S}/src/arch-x86_64.c", "/lib64/ld-linux-x86-64.so.2", "/" + tune_baselib + "/ld-linux-x86-64.so.2", d)
+            bits = 64
+        elif arch == "arm":
+            replace_lines("${S}/src/arch-arm.c", "/lib/ld-linux.so.3", "/" + tune_baselib + "/ld-linux.so.3", d)
+            replace_lines("${S}/src/arch-arm.c", "/lib/ld-linux-armhf.so.3", "/" + tune_baselib + "/ld-linux-armhf.so.3", d)
+        elif arch == "mips" or arch == "mipsel":
+            replace_lines("${S}/src/arch-mips.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d, firstonly=True)
+            replace_lines("${S}/src/arch-mips.c", "/lib32/ld.so.1", "/" + tune_baselib + "/ld.so.1", d)
+        elif arch == "mips64" or arch == "mips64el":
+            replace_lines("${S}/src/arch-mips.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d, secondonly=True)
+            replace_lines("${S}/src/arch-mips.c", "/lib64/ld.so.1", "/" + tune_baselib + "/ld.so.1", d)
+            bits = 64
+        elif arch.endswith("86"):
+            replace_lines("${S}/src/arch-i386.c", "/lib/ld-linux.so.2", "/" + tune_baselib + "/ld-linux.so.2", d)
+        if bits == 32 and tune_baselib != "lib":
+            replace_lines_rtld("${S}/src/rtld/rtld.c", "lib", tune_baselib, "else", d)
+        if bits == 64 and tune_baselib != "lib64":
+            replace_lines_rtld("${S}/src/rtld/rtld.c", "lib64", tune_baselib, "use_64bit", d)
+}
+
+python () {
+    overrides = d.getVar("OVERRIDES", True).split(":")
+    if "class-target" in overrides:
+        bb.build.addtask('do_linkerpaths', 'do_configure', 'do_patch', d)
+}
+
 do_configure_prepend () {
         # Disable documentation!
         echo "all:" > ${S}/doc/Makefile.am
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0001-Don-t-send-SIGUSR1-to-init.patch b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0001-Don-t-send-SIGUSR1-to-init.patch
new file mode 100644
index 0000000..6c694ce
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0001-Don-t-send-SIGUSR1-to-init.patch
@@ -0,0 +1,48 @@
+From befc6dbd6469d428c9e0830dbe51bdf7ac39d9ae Mon Sep 17 00:00:00 2001
+From: Seebs <seebs@seebs.net>
+Date: Thu, 22 Sep 2016 14:35:04 -0500
+Subject: [PATCH] Don't send SIGUSR1 to init.
+
+If the parent exits due to child process being slow, getppid() will return
+1, and we'll send SIGUSR1 to init, which can break things like dumbinit
+which aren't adequately protected against non-root processes sending them
+signals.
+
+Signed-off-by: Seebs <seebs@seebs.net>
+
+Upstream-Status: Backport (commit befc6dbd6469d428c9e0830dbe51bdf7ac39d9ae)
+
+[YOCTO #10324]
+
+This resolves an issue where a docker container running builds would die
+due to it's 'mini init' being signaled by pseudo.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+---
+ pseudo_server.c | 11 ++++++++---
+
+diff --git a/pseudo_server.c b/pseudo_server.c
+index 65102dd..8731d20 100644
+--- a/pseudo_server.c
++++ b/pseudo_server.c
+@@ -358,9 +358,14 @@ pseudo_server_start(int daemonize) {
+ 	signal(SIGTERM, quit_now);
+ 	/* tell parent process to stop waiting */
+ 	if (daemonize) {
+-		pseudo_diag("Setup complete, sending SIGUSR1 to pid %d.\n",
+-			getppid());
+-		kill(getppid(), SIGUSR1);
++		pid_t ppid = getppid();
++		if (ppid == 1) {
++			pseudo_diag("Setup complete, but parent is init, not sending SIGUSR1.\n");
++		} else {
++			pseudo_diag("Setup complete, sending SIGUSR1 to pid %d.\n",
++				ppid);
++			kill(ppid, SIGUSR1);
++		}
+ 	}
+ 	pseudo_server_loop();
+ 	return 0;
+-- 
+2.5.5
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0001-Quiet-diagnostics-during-startup-for-pseudo-d.patch b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0001-Quiet-diagnostics-during-startup-for-pseudo-d.patch
new file mode 100644
index 0000000..d4b9f6a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0001-Quiet-diagnostics-during-startup-for-pseudo-d.patch
@@ -0,0 +1,54 @@
+From eead8a505245a292c43f070c0e836cdfeb7bd7bd Mon Sep 17 00:00:00 2001
+From: Seebs <seebs@seebs.net>
+Date: Wed, 28 Sep 2016 17:05:17 -0500
+Subject: [PATCH 1/2] Quiet diagnostics during startup for pseudo -d
+
+When the client spawns a pseudo server, it starts out sending diagnostics
+to stderr. This can be spammy in some cases with races during startup;
+everything resolves, but we get scary-looking diagnostics. So shove
+those into a log file.
+
+Signed-off-by: Seebs <seebs@seebs.net>
+
+Upstream-Status: Backport
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ ChangeLog.txt   | 5 +++++
+ pseudo_server.c | 4 +++-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog.txt b/ChangeLog.txt
+index d6359ca..4cc24de 100644
+--- a/ChangeLog.txt
++++ b/ChangeLog.txt
+@@ -1,3 +1,8 @@
++2016-09-28:
++	* (seebs) Send errors to log when daemonizing, but do that a lot
++	  sooner to prevent startup messages which can show up spuriously
++	  with multiple clients.
++
+ 2016-07-28:
+ 	* (seebs) Fix performance issue on deletion with xattr changes.
+ 
+diff --git a/pseudo_server.c b/pseudo_server.c
+index 8731d20..7c2db2f 100644
+--- a/pseudo_server.c
++++ b/pseudo_server.c
+@@ -162,6 +162,9 @@ pseudo_server_start(int daemonize) {
+ 	 * SIGUSR1, or until too much time has passed. */
+ 	if (daemonize) {
+ 		int child;
++
++		/* make startup messages go away when invoked-as-daemon */
++		pseudo_debug_logfile(PSEUDO_LOGFILE, 2);
+ 		child = fork();
+ 		if (child == -1) {
+ 			pseudo_diag("Couldn't fork child process: %s\n",
+@@ -231,7 +234,6 @@ pseudo_server_start(int daemonize) {
+ 			setsid();
+ 			fclose(stdin);
+ 			fclose(stdout);
+-			pseudo_debug_logfile(PSEUDO_LOGFILE, 2);
+ 			/* and then just execute the server code normally.  */
+ 			/* Any logging will presumably go to logfile, but
+ 			 * exit status will make it back to the parent for
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0002-Use-correct-file-descriptor.patch b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0002-Use-correct-file-descriptor.patch
new file mode 100644
index 0000000..dd6fd87
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0002-Use-correct-file-descriptor.patch
@@ -0,0 +1,53 @@
+From 7a0632cad851826d804db0540d9a59773e6bf29c Mon Sep 17 00:00:00 2001
+From: Seebs <seebs@seebs.net>
+Date: Wed, 28 Sep 2016 22:12:29 -0500
+Subject: [PATCH 2/2] Use correct file descriptor
+
+So it turns out that pseudo_logfile() was returning 0 or -1, and
+pseudo_debug_logfile() was expecting it to be the correct file descriptor
+to use. And it's basically a mystery that any of that ever worked.
+
+Signed-off-by: Seebs <seebs@seebs.net>
+
+Upstream-Status: Backport
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ ChangeLog.txt | 3 +++
+ pseudo_util.c | 3 ++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog.txt b/ChangeLog.txt
+index 4cc24de..49a6c36 100644
+--- a/ChangeLog.txt
++++ b/ChangeLog.txt
+@@ -2,6 +2,9 @@
+ 	* (seebs) Send errors to log when daemonizing, but do that a lot
+ 	  sooner to prevent startup messages which can show up spuriously
+ 	  with multiple clients.
++	* (seebs) return file descriptor from pseudo_logfile, so we set
++	  pseudo_util_debug_fd to the right value instead of to stdin.
++	  Nice bug.
+ 
+ 2016-07-28:
+ 	* (seebs) Fix performance issue on deletion with xattr changes.
+diff --git a/pseudo_util.c b/pseudo_util.c
+index 0c156cf..a60c74b 100644
+--- a/pseudo_util.c
++++ b/pseudo_util.c
+@@ -1569,7 +1569,7 @@ pseudo_logfile(char *filename, char *defname, int prefer_fd) {
+ 	if (fd == -1)
+ 		return -1;
+ 	else
+-		return 0;
++		return fd;
+ }
+ 
+ int
+@@ -1579,6 +1579,7 @@ pseudo_debug_logfile(char *defname, int prefer_fd) {
+ 
+ 	fd = pseudo_logfile(filename, defname, prefer_fd);
+ 	if (fd > -1) {
++		pseudo_diag("debug_logfile: fd %d\n", fd);
+ 		pseudo_util_debug_fd = fd;
+ 		return 0;
+ 	}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0003-Fix-renameat-parallel-to-previous-fix-to-rename.patch b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0003-Fix-renameat-parallel-to-previous-fix-to-rename.patch
new file mode 100644
index 0000000..739c03e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/0003-Fix-renameat-parallel-to-previous-fix-to-rename.patch
@@ -0,0 +1,64 @@
+From d9ab3a0acc94151048498b1ea4d69e7707df1526 Mon Sep 17 00:00:00 2001
+From: Seebs <seebs@seebs.net>
+Date: Fri, 30 Sep 2016 10:56:35 -0500
+Subject: [PATCH 3/3] Fix renameat (parallel to previous fix to rename)
+
+There was a bug in rename(), which was duplicated when renameat() was
+implemented, and which got fixed two years ago for rename(), but no
+one ever uses renameat() so it didn't get fixed there. Thanks
+to Anton Gerasimov <anton@advancedtelematic.com> for the bug report
+and patch.
+
+Signed-off-by: Seebs <seebs@seebs.net>
+
+Upstream-Status: Backport
+Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
+
+---
+ ChangeLog.txt              | 4 ++++
+ ports/unix/guts/renameat.c | 7 ++++++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog.txt b/ChangeLog.txt
+index 65b9759..ca04cc0 100644
+--- a/ChangeLog.txt
++++ b/ChangeLog.txt
+@@ -1,3 +1,7 @@
++2016-09-30:
++	* (seebs) Fix rename at, matching fix from ee00f63d for rename. Bug
++	  and fix provided by Anton Gerasimov <anton@advancedtelematic.com>.
++
+ 2016-09-28:
+ 	* (seebs) Send errors to log when daemonizing, but do that a lot
+ 	  sooner to prevent startup messages which can show up spuriously
+diff --git a/ports/unix/guts/renameat.c b/ports/unix/guts/renameat.c
+index ade0509..d5e36fa 100644
+--- a/ports/unix/guts/renameat.c
++++ b/ports/unix/guts/renameat.c
+@@ -11,6 +11,7 @@
+ 	int oldrc, newrc;
+ 	int save_errno;
+ 	int old_db_entry = 0;
++	int may_unlinked = 0;
+ 
+ 	pseudo_debug(PDBGF_FILE, "renameat: %d,%s->%d,%s\n",
+ 		olddirfd, oldpath ? oldpath : "<nil>",
+@@ -44,10 +45,14 @@
+ 	/* as with unlink, we have to mark that the file may get deleted */
+ 	msg = pseudo_client_op(OP_MAY_UNLINK, 0, -1, newdirfd, newpath, newrc ? NULL : &newbuf);
+ 	if (msg && msg->result == RESULT_SUCCEED)
++		may_unlinked = 1;
++	msg = pseudo_client_op(OP_STAT, 0, -1, olddirfd, oldpath, oldrc ? NULL : &oldbuf);
++	if (msg && msg->result == RESULT_SUCCEED)
+ 		old_db_entry = 1;
++
+ 	rc = real_renameat(olddirfd, oldpath, newdirfd, newpath);
+ 	save_errno = errno;
+-	if (old_db_entry) {
++	if (may_unlinked) {
+ 		if (rc == -1) {
+ 			/* since we failed, that wasn't really unlinked -- put
+ 			 * it back.
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/Fix-xattr-performance.patch b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/Fix-xattr-performance.patch
new file mode 100644
index 0000000..4e072e6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/Fix-xattr-performance.patch
@@ -0,0 +1,117 @@
+From 0d9071f3090bbd7880558f3b488b236ac19b44fc Mon Sep 17 00:00:00 2001
+From: seebs <seebs@seebs.net>
+Date: Thu, 28 Jul 2016 14:02:12 -0500
+Subject: [PATCH 1/2] Fix xattr performance
+
+When deleting files, we *do* know the inode and attribute, most of the
+time, so we pass those in whenever possible. The full purge of unmatched
+xattrs should not happen when the correct dev/ino are believed to be known.
+
+Signed-off-by: Seebs <seebs@seebs.net>
+
+[YOCTO #9929]
+Upstream-Status: Backport (0d9071f3090bbd7880558f3b488b236ac19b44fc)
+Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
+---
+ ChangeLog.txt |  3 +++
+ pseudo.c      | 11 ++++++++---
+ pseudo_db.c   | 15 +++++++++------
+ pseudo_db.h   |  2 +-
+ 4 files changed, 21 insertions(+), 10 deletions(-)
+
+diff --git a/ChangeLog.txt b/ChangeLog.txt
+index 131f163..d6359ca 100644
+--- a/ChangeLog.txt
++++ b/ChangeLog.txt
+@@ -1,3 +1,6 @@
++2016-07-28:
++	* (seebs) Fix performance issue on deletion with xattr changes.
++
+ 2016-07-08:
+ 	* (RP) release 1.8.1
+ 	* (joshuagl) Fix log table creation issue
+diff --git a/pseudo.c b/pseudo.c
+index 52f649f..db1c400 100644
+--- a/pseudo.c
++++ b/pseudo.c
+@@ -600,7 +600,12 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag, char **respon
+ 				if (by_path.deleting != 0) {
+ 					pseudo_debug(PDBGF_FILE, "inode mismatch for '%s' -- old one was marked for deletion, deleting.\n",
+ 						msg->path);
+-					pdb_did_unlink_file(msg->path, by_path.deleting);
++					/* in this case, we don't trust the
++					 * existing entries, so we will do the
++					 * more expensive sweep for stray
++					 * xattrs.
++					 */
++					pdb_did_unlink_file(msg->path, NULL, by_path.deleting);
+ 				} else {
+ 					pseudo_diag("inode mismatch: '%s' ino %llu in db, %llu in request.\n",
+ 						msg->path,
+@@ -698,7 +703,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag, char **respon
+ 				if (by_ino.deleting != 0) {
+ 					pseudo_debug(PDBGF_FILE, "inode mismatch for '%s' -- old one was marked for deletion, deleting.\n",
+ 						msg->path);
+-					pdb_did_unlink_file(path_by_ino, by_ino.deleting);
++					pdb_did_unlink_file(path_by_ino, &by_ino, by_ino.deleting);
+ 				} else {
+ 					pseudo_diag("path mismatch [%d link%s]: ino %llu db '%s' req '%s'.\n",
+ 						msg->nlink,
+@@ -930,7 +935,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag, char **respon
+ 		}
+ 		break;
+ 	case OP_DID_UNLINK:
+-		pdb_did_unlink_file(msg->path, msg->client);
++		pdb_did_unlink_file(msg->path, msg, msg->client);
+ 		break;
+ 	case OP_CANCEL_UNLINK:
+ 		pdb_cancel_unlink_file(msg);
+diff --git a/pseudo_db.c b/pseudo_db.c
+index 289bb29..e7dd193 100644
+--- a/pseudo_db.c
++++ b/pseudo_db.c
+@@ -1848,7 +1848,7 @@ pdb_did_unlink_files(int deleting) {
+ 
+ /* confirm deletion of a specific file by a given client */
+ int
+-pdb_did_unlink_file(char *path, int deleting) {
++pdb_did_unlink_file(char *path, pseudo_msg_t *msg, int deleting) {
+ 	static sqlite3_stmt *delete_exact;
+ 	int rc, exact;
+ 	char *sql_delete_exact = "DELETE FROM files WHERE path = ? AND deleting = ?;";
+@@ -1878,11 +1878,14 @@ pdb_did_unlink_file(char *path, int deleting) {
+ 	exact = sqlite3_changes(file_db);
+ 	pseudo_debug(PDBGF_DB, "(exact %d)\n", exact);
+ 	sqlite3_reset(delete_exact);
+-	sqlite3_clear_bindings(delete_exact);
+-	/* we have to clean everything because we don't know for sure the
+-	 * device/inode...
+-	 */
+-	pdb_clear_unused_xattrs();
++	if (msg) {
++		pdb_clear_xattrs(msg);
++	} else {
++		/* we have to clean everything because we don't know for sure the
++		 * device/inode...
++		 */
++		pdb_clear_unused_xattrs();
++	}
+ 	return rc != SQLITE_DONE;
+ }
+ 
+diff --git a/pseudo_db.h b/pseudo_db.h
+index a54f3c1..1b2599c 100644
+--- a/pseudo_db.h
++++ b/pseudo_db.h
+@@ -39,7 +39,7 @@ typedef struct {
+ 
+ extern int pdb_maybe_backup(void);
+ extern int pdb_cancel_unlink_file(pseudo_msg_t *msg);
+-extern int pdb_did_unlink_file(char *path, int deleting);
++extern int pdb_did_unlink_file(char *path, pseudo_msg_t *msg, int deleting);
+ extern int pdb_did_unlink_files(int deleting);
+ extern int pdb_link_file(pseudo_msg_t *msg);
+ extern int pdb_may_unlink_file(pseudo_msg_t *msg, int deleting);
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-group b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-group
index 81bf732..bb3dbca 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-group
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-group
@@ -1,2 +1,3 @@
 root:*:0:
 mail:*:8:
+nobody:*:99:
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-passwd b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-passwd
index c1458dc..0889c57 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-passwd
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/fallback-passwd
@@ -1 +1,2 @@
 root::0:0:root:/home/root:/bin/sh
+nobody:*:65534:65534:nobody:/nonexistent:/bin/sh
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/handle-remove-xattr.patch b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/handle-remove-xattr.patch
deleted file mode 100644
index 8b7f30c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/handle-remove-xattr.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From a24cf102967a4966bfabe36c3542fb65f35bf539 Mon Sep 17 00:00:00 2001
-From: Peter Seebach <peter.seebach@windriver.com>
-Date: Wed, 23 Mar 2016 11:55:25 -0500
-Subject: actually handle remove_xattr correctly
-
-The path is required but wasn't being extracted from the client's message,
-resulting in xattr removal never working. This does not fully address some
-deeper problems with the xattr implementation, but at least the common
-removal case works.
-
-Upstream-Status: Backport
-
-Index: pseudo-1.7.5/ChangeLog.txt
-===================================================================
---- pseudo-1.7.5.orig/ChangeLog.txt
-+++ pseudo-1.7.5/ChangeLog.txt
-@@ -1,3 +1,7 @@
-+2016-03-22:
-+       * (seebs) extract path from message for remove_xattr so it
-+         actually works.
-+
- 2016-02-09:
-         * (seebs) 1.7.5 release
- 
-Index: pseudo-1.7.5/pseudo.c
-===================================================================
---- pseudo-1.7.5.orig/pseudo.c
-+++ pseudo-1.7.5/pseudo.c
-@@ -543,6 +543,7 @@ pseudo_op(pseudo_msg_t *msg, const char
- 		case OP_GET_XATTR:
- 		case OP_LIST_XATTR:
- 		case OP_REPLACE_XATTR:
-+		case OP_REMOVE_XATTR:
- 		case OP_SET_XATTR:
- 			/* In a rename there are two paths, null separated in msg->path */
- 			initial_len = strlen(msg->path);
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/moreretries.patch b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/moreretries.patch
index c1e5552..adea266 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/moreretries.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/moreretries.patch
@@ -4,15 +4,15 @@
 Upstream-Status: Pending
 RP 2016/2/28
 
-Index: pseudo-1.7.5/pseudo_client.c
+Index: git/pseudo_client.c
 ===================================================================
---- pseudo-1.7.5.orig/pseudo_client.c
-+++ pseudo-1.7.5/pseudo_client.c
-@@ -1214,7 +1214,7 @@ pseudo_client_setup(void) {
- 	return 1;
+--- git.orig/pseudo_client.c
++++ git/pseudo_client.c
+@@ -1282,7 +1282,7 @@ pseudo_client_setup(void) {
+ 	}
  }
  
--#define PSEUDO_RETRIES 50
+-#define PSEUDO_RETRIES 20
 +#define PSEUDO_RETRIES 250
  static pseudo_msg_t *
  pseudo_client_request(pseudo_msg_t *msg, size_t len, const char *path) {
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo.inc b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo.inc
index 0de7b36..18ce9f9 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo.inc
@@ -26,6 +26,8 @@
 NO32LIBS ??= "1"
 NO32LIBS_class-nativesdk = "1"
 
+PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback"
+
 # Compile for the local machine arch...
 do_compile () {
 	if [ "${SITEINFO_BITS}" = "64" ]; then
@@ -112,10 +114,15 @@
 	oe_runmake 'DESTDIR=${D}' ${MAKEOPTS} 'LIB=lib/pseudo/lib$(MARK64)' install
 }
 
-# Two below are the same
-# If necessary install for the alternative machine arch.  This is only 
-# necessary in a native build.
 do_install_append_class-native () {
+	install -d ${D}${sysconfdir}
+	# The fallback files should never be modified
+	install -m 444 ${WORKDIR}/fallback-passwd ${D}${sysconfdir}/passwd
+	install -m 444 ${WORKDIR}/fallback-group ${D}${sysconfdir}/group
+
+	# Two native/nativesdk entries below are the same
+	# If necessary install for the alternative machine arch.  This is only
+	# necessary in a native build.
 	maybe_make32
 	if $make32; then
 		mkdir -p ${D}${prefix}/lib/pseudo/lib
@@ -129,6 +136,7 @@
 		mkdir -p ${D}${prefix}/lib/pseudo/lib
 		cp lib/pseudo/lib/libpseudo.so ${D}${prefix}/lib/pseudo/lib/.
 	fi
+	chrpath -d ${D}${prefix}/lib/pseudo/lib*/libpseudo.so
 }
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.6.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.6.7.bb
deleted file mode 100644
index b8c20ad..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.6.7.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require pseudo.inc
-
-SRC_URI = " \
-    http://downloads.yoctoproject.org/releases/pseudo/${BPN}-${PV}.tar.bz2 \
-    file://fallback-passwd \
-    file://fallback-group \
-"
-
-SRC_URI[md5sum] = "4cd39502f9bd0e734dee80e08b28a5f1"
-SRC_URI[sha256sum] = "9f2caca5f1579a376a509cd81a81156fc208650add9f0af275da9e911f18f291"
-
-PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback"
-
-do_install_append_class-native () {
-	install -d ${D}${sysconfdir}
-	# The fallback files should never be modified
-	install -m 444 ${WORKDIR}/fallback-passwd ${D}${sysconfdir}/passwd
-	install -m 444 ${WORKDIR}/fallback-group ${D}${sysconfdir}/group
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.7.5.bb b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.7.5.bb
deleted file mode 100644
index d90e644..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.7.5.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require pseudo.inc
-
-SRC_URI = " \
-    http://downloads.yoctoproject.org/releases/pseudo/${BPN}-${PV}.tar.bz2 \
-    file://0001-configure-Prune-PIE-flags.patch \
-    file://fallback-passwd \
-    file://fallback-group \
-    file://moreretries.patch \
-    file://handle-remove-xattr.patch \
-"
-
-SRC_URI[md5sum] = "c10209938f03128d0c193f041ff3596d"
-SRC_URI[sha256sum] = "fd89cadec984d3b8202aca465898b1bb4350e0d63ba9aa9ac899f6f50270e688"
-
-PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback"
-
-do_install_append_class-native () {
-	install -d ${D}${sysconfdir}
-	# The fallback files should never be modified
-	install -m 444 ${WORKDIR}/fallback-passwd ${D}${sysconfdir}/passwd
-	install -m 444 ${WORKDIR}/fallback-group ${D}${sysconfdir}/group
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.8.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.8.1.bb
new file mode 100644
index 0000000..fb70034
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_1.8.1.bb
@@ -0,0 +1,16 @@
+require pseudo.inc
+
+SRC_URI = "http://downloads.yoctoproject.org/releases/pseudo/${BPN}-${PV}.tar.bz2 \
+           file://0001-configure-Prune-PIE-flags.patch \
+           file://fallback-passwd \
+           file://fallback-group \
+           file://moreretries.patch \
+           file://Fix-xattr-performance.patch \
+           file://0001-Don-t-send-SIGUSR1-to-init.patch \
+           file://0001-Quiet-diagnostics-during-startup-for-pseudo-d.patch \
+           file://0002-Use-correct-file-descriptor.patch \
+           file://0003-Fix-renameat-parallel-to-previous-fix-to-rename.patch \
+           "
+
+SRC_URI[md5sum] = "ee38e4fb62ff88ad067b1a5a3825bac7"
+SRC_URI[sha256sum] = "dac4ad2d21228053151121320f629d41dd5c0c87695ac4e7aea286c414192ab5"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_git.bb
index abff1cf..8110b1a 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -1,11 +1,15 @@
 require pseudo.inc
 
-SRCREV = "786c6d3813622d18e12d36c4aa722af6a417c8fa"
-PV = "1.7.5+git${SRCPV}"
+SRCREV = "befc6dbd6469d428c9e0830dbe51bdf7ac39d9ae"
+PV = "1.8.1+git${SRCPV}"
 
 DEFAULT_PREFERENCE = "-1"
 
-SRC_URI = "git://git.yoctoproject.org/pseudo"
+SRC_URI = "git://git.yoctoproject.org/pseudo \
+           file://0001-configure-Prune-PIE-flags.patch \
+           file://fallback-passwd \
+           file://fallback-group \
+           file://moreretries.patch"
 
 S = "${WORKDIR}/git"
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/aarch64/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/aarch64/_numpyconfig.h
new file mode 100644
index 0000000..109deb0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/aarch64/_numpyconfig.h
@@ -0,0 +1,32 @@
+#define NPY_HAVE_ENDIAN_H 1
+#define NPY_SIZEOF_SHORT SIZEOF_SHORT
+#define NPY_SIZEOF_INT SIZEOF_INT
+#define NPY_SIZEOF_LONG SIZEOF_LONG
+#define NPY_SIZEOF_FLOAT 4
+#define NPY_SIZEOF_COMPLEX_FLOAT 8
+#define NPY_SIZEOF_DOUBLE 8
+#define NPY_SIZEOF_COMPLEX_DOUBLE 16
+#define NPY_SIZEOF_LONGDOUBLE 16
+#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
+#define NPY_SIZEOF_PY_INTPTR_T 8
+#define NPY_SIZEOF_PY_LONG_LONG 8
+#define NPY_SIZEOF_LONGLONG 8
+#define NPY_SIZEOF_OFF_T 8
+#define NPY_NO_SMP 0
+#define NPY_HAVE_DECL_ISNAN
+#define NPY_HAVE_DECL_ISINF
+#define NPY_HAVE_DECL_ISFINITE
+#define NPY_HAVE_DECL_SIGNBIT
+#define NPY_USE_C99_COMPLEX 1
+#define NPY_HAVE_COMPLEX_DOUBLE 1
+#define NPY_HAVE_COMPLEX_FLOAT 1
+#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
+#define NPY_ENABLE_SEPARATE_COMPILATION 1
+#define NPY_USE_C99_FORMATS 1
+#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
+#define NPY_ABI_VERSION 0x01000009
+#define NPY_API_VERSION 0x0000000A
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS 1
+#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/aarch64/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/aarch64/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/arm/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/arm/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/arm/numpyconfig.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/arm/numpyconfig.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/armeb/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/armeb/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/armeb/numpyconfig.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/armeb/numpyconfig.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/fix_shebang_f2py.patch b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/fix_shebang_f2py.patch
new file mode 100644
index 0000000..8be6e4d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/fix_shebang_f2py.patch
@@ -0,0 +1,29 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+Avoids using python from the HOSTs native sysroot for f2py,
+uses TARGET env python instead.
+
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+
+Index: numpy-1.11.0/numpy/f2py/setup.py
+===================================================================
+--- numpy-1.11.0.orig/numpy/f2py/setup.py
++++ numpy-1.11.0/numpy/f2py/setup.py
+@@ -37,10 +37,13 @@ def _get_f2py_shebang():
+     should be ``#!python`` rather than ``#!`` followed by the contents of
+     ``sys.executable``.
+     """
+-    if set(('bdist_wheel', 'bdist_egg', 'bdist_wininst',
+-            'bdist_rpm')).intersection(sys.argv):
+-        return '#!python'
+-    return '#!' + sys.executable
++    #if set(('bdist_wheel', 'bdist_egg', 'bdist_wininst',
++    #        'bdist_rpm')).intersection(sys.argv):
++    #    return '#!python'
++    #return '#!' + sys.executable
++    
++    # On OE, we need to avoid using the HOSTs python-native, we return env python instead
++    return '#!/usr/bin/env python'
+ 
+ 
+ def configuration(parent_package='', top_path=None):
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips/_numpyconfig.h
new file mode 100644
index 0000000..4c465c2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips/_numpyconfig.h
@@ -0,0 +1,32 @@
+#define NPY_HAVE_ENDIAN_H 1
+#define NPY_SIZEOF_SHORT SIZEOF_SHORT
+#define NPY_SIZEOF_INT SIZEOF_INT
+#define NPY_SIZEOF_LONG SIZEOF_LONG
+#define NPY_SIZEOF_FLOAT 4
+#define NPY_SIZEOF_COMPLEX_FLOAT 8
+#define NPY_SIZEOF_DOUBLE 8
+#define NPY_SIZEOF_COMPLEX_DOUBLE 16
+#define NPY_SIZEOF_LONGDOUBLE 8
+#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 16
+#define NPY_ENABLE_SEPARATE_COMPILATION 1
+#define NPY_SIZEOF_PY_INTPTR_T 4
+#define NPY_SIZEOF_PY_LONG_LONG 8
+#define NPY_SIZEOF_LONGLONG 8
+#define NPY_SIZEOF_OFF_T 8
+#define NPY_NO_SMP 0
+#define NPY_HAVE_DECL_ISNAN
+#define NPY_HAVE_DECL_ISINF
+#define NPY_HAVE_DECL_ISFINITE
+#define NPY_HAVE_DECL_SIGNBIT
+#define NPY_USE_C99_COMPLEX 1
+#define NPY_HAVE_COMPLEX_DOUBLE 1
+#define NPY_HAVE_COMPLEX_FLOAT 1
+#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
+#define NPY_USE_C99_FORMATS 1
+#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
+#define NPY_ABI_VERSION 0x01000009
+#define NPY_API_VERSION 0x0000000A
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS 1
+#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64/_numpyconfig.h
new file mode 100644
index 0000000..debb390
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64/_numpyconfig.h
@@ -0,0 +1,32 @@
+#define NPY_HAVE_ENDIAN_H 1
+#define NPY_SIZEOF_SHORT SIZEOF_SHORT
+#define NPY_SIZEOF_INT SIZEOF_INT
+#define NPY_SIZEOF_LONG SIZEOF_LONG
+#define NPY_SIZEOF_FLOAT 4
+#define NPY_SIZEOF_COMPLEX_FLOAT 8
+#define NPY_SIZEOF_DOUBLE 8
+#define NPY_SIZEOF_COMPLEX_DOUBLE 16
+#define NPY_SIZEOF_LONGDOUBLE 16
+#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
+#define NPY_ENABLE_SEPARATE_COMPILATION 1
+#define NPY_SIZEOF_PY_INTPTR_T 8
+#define NPY_SIZEOF_PY_LONG_LONG 8
+#define NPY_SIZEOF_LONGLONG 8
+#define NPY_SIZEOF_OFF_T 8
+#define NPY_NO_SMP 0
+#define NPY_HAVE_DECL_ISNAN
+#define NPY_HAVE_DECL_ISINF
+#define NPY_HAVE_DECL_ISFINITE
+#define NPY_HAVE_DECL_SIGNBIT
+#define NPY_USE_C99_COMPLEX 1
+#define NPY_HAVE_COMPLEX_DOUBLE 1
+#define NPY_HAVE_COMPLEX_FLOAT 1
+#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
+#define NPY_USE_C99_FORMATS 1
+#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
+#define NPY_ABI_VERSION 0x01000009
+#define NPY_API_VERSION 0x0000000A
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS 1
+#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64n32/_numpyconfig.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64n32/_numpyconfig.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64n32/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mips64n32/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mipsel/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mipsel/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mipsel/numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mipsel/numpyconfig.h
new file mode 100644
index 0000000..0b7cd51
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/mipsel/numpyconfig.h
@@ -0,0 +1,18 @@
+/* cat ./src.linux-i686-2.5/numpy/core/include/numpy/numpyconfig.h */
+/*
+ *  * This file is generated by numpy/core/setup.pyc. DO NOT EDIT 
+ *   */
+#define NPY_SIZEOF_SHORT 2 
+#define NPY_SIZEOF_INT 4 
+#define NPY_SIZEOF_LONG 4 
+#define NPY_SIZEOF_FLOAT 4 
+#define NPY_SIZEOF_DOUBLE 8 
+#define NPY_SIZEOF_LONGDOUBLE 12 
+#define NPY_SIZEOF_PY_INTPTR_T 4 
+#define NPY_NO_SMP 0
+
+#define NPY_SIZEOF_LONGLONG 8 
+#define NPY_SIZEOF_PY_LONG_LONG 8 
+#define NPY_SIZEOF_OFF_T 8
+/* #define CHAR_BIT 8 */
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc/_numpyconfig.h
new file mode 100644
index 0000000..6e7262a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc/_numpyconfig.h
@@ -0,0 +1,32 @@
+#define NPY_HAVE_ENDIAN_H 1
+#define NPY_SIZEOF_SHORT SIZEOF_SHORT
+#define NPY_SIZEOF_INT SIZEOF_INT
+#define NPY_SIZEOF_LONG SIZEOF_LONG
+#define NPY_SIZEOF_FLOAT 4
+#define NPY_SIZEOF_COMPLEX_FLOAT 8
+#define NPY_SIZEOF_DOUBLE 8
+#define NPY_SIZEOF_COMPLEX_DOUBLE 16
+#define NPY_SIZEOF_LONGDOUBLE 16
+#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
+#define NPY_ENABLE_SEPARATE_COMPILATION 1
+#define NPY_SIZEOF_PY_INTPTR_T 4
+#define NPY_SIZEOF_PY_LONG_LONG 8
+#define NPY_SIZEOF_LONGLONG 8
+#define NPY_SIZEOF_OFF_T 8
+#define NPY_NO_SMP 0
+#define NPY_HAVE_DECL_ISNAN
+#define NPY_HAVE_DECL_ISINF
+#define NPY_HAVE_DECL_ISFINITE
+#define NPY_HAVE_DECL_SIGNBIT
+#define NPY_USE_C99_COMPLEX 1
+#define NPY_HAVE_COMPLEX_DOUBLE 1
+#define NPY_HAVE_COMPLEX_FLOAT 1
+#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
+#define NPY_USE_C99_FORMATS 1
+#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
+#define NPY_ABI_VERSION 0x01000009
+#define NPY_API_VERSION 0x0000000A
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS 1
+#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc64/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc64/_numpyconfig.h
new file mode 100644
index 0000000..debb390
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc64/_numpyconfig.h
@@ -0,0 +1,32 @@
+#define NPY_HAVE_ENDIAN_H 1
+#define NPY_SIZEOF_SHORT SIZEOF_SHORT
+#define NPY_SIZEOF_INT SIZEOF_INT
+#define NPY_SIZEOF_LONG SIZEOF_LONG
+#define NPY_SIZEOF_FLOAT 4
+#define NPY_SIZEOF_COMPLEX_FLOAT 8
+#define NPY_SIZEOF_DOUBLE 8
+#define NPY_SIZEOF_COMPLEX_DOUBLE 16
+#define NPY_SIZEOF_LONGDOUBLE 16
+#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
+#define NPY_ENABLE_SEPARATE_COMPILATION 1
+#define NPY_SIZEOF_PY_INTPTR_T 8
+#define NPY_SIZEOF_PY_LONG_LONG 8
+#define NPY_SIZEOF_LONGLONG 8
+#define NPY_SIZEOF_OFF_T 8
+#define NPY_NO_SMP 0
+#define NPY_HAVE_DECL_ISNAN
+#define NPY_HAVE_DECL_ISINF
+#define NPY_HAVE_DECL_ISFINITE
+#define NPY_HAVE_DECL_SIGNBIT
+#define NPY_USE_C99_COMPLEX 1
+#define NPY_HAVE_COMPLEX_DOUBLE 1
+#define NPY_HAVE_COMPLEX_FLOAT 1
+#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
+#define NPY_USE_C99_FORMATS 1
+#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
+#define NPY_ABI_VERSION 0x01000009
+#define NPY_API_VERSION 0x0000000A
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS 1
+#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc64/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/powerpc64/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/remove-build-path-in-comments.patch b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/remove-build-path-in-comments.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/remove-build-path-in-comments.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/remove-build-path-in-comments.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86-64/_numpyconfig.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86-64/_numpyconfig.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86-64/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86-64/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/config.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86/config.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/config.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86/config.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86/numpyconfig.h
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/numpyconfig.h
rename to import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/x86/numpyconfig.h
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/python-numpy_1.11.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/python-numpy_1.11.1.bb
new file mode 100644
index 0000000..c5af720
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/python-numpy_1.11.1.bb
@@ -0,0 +1,104 @@
+SUMMARY = "A sophisticated Numeric Processing Package for Python"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7e51a5677b22b865abbfb3dff6ffb2d0"
+
+SRCNAME = "numpy"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/n/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+           file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
+           file://remove-build-path-in-comments.patch \
+           file://fix_shebang_f2py.patch \
+           ${CONFIGFILESURI} "
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/numpy/files/"
+
+CONFIGFILESURI ?= ""
+
+CONFIGFILESURI_aarch64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_arm = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_armeb = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_mipsel = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_x86 = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_x86-64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_mips = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_powerpc = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_powerpc64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_mips64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_mips64n32 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+
+S = "${WORKDIR}/numpy-${PV}"
+
+inherit setuptools
+
+# Make the build fail and replace *config.h with proper one
+# This is a ugly, ugly hack - Koen
+do_compile_prepend_class-target() {
+    ${STAGING_BINDIR_NATIVE}/python-native/python setup.py build ${DISTUTILS_BUILD_ARGS} || \
+    true
+    cp ${WORKDIR}/*config.h ${S}/build/$(ls ${S}/build | grep src)/numpy/core/include/numpy/
+}
+
+FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a"
+
+SRC_URI[md5sum] = "2f44a895a8104ffac140c3a70edbd450"
+SRC_URI[sha256sum] = "dc4082c43979cc856a2bf352a8297ea109ccb3244d783ae067eb2ee5b0d577cd"
+
+# install what is needed for numpy.test()
+RDEPENDS_${PN} = "python-unittest \
+                  python-difflib \
+                  python-pprint \
+                  python-pickle \
+                  python-shell \
+                  python-nose \
+                  python-doctest \
+                  python-datetime \
+                  python-distutils \
+                  python-misc \
+                  python-mmap \
+                  python-netclient \
+                  python-numbers \
+                  python-pydoc \
+                  python-pkgutil \
+                  python-email \
+                  python-subprocess \
+                  python-compression \
+                  python-ctypes \
+                  python-threading \
+"
+
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/python3-numpy_1.11.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/python3-numpy_1.11.0.bb
new file mode 100644
index 0000000..3cca223
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python-numpy/python3-numpy_1.11.0.bb
@@ -0,0 +1,105 @@
+SUMMARY = "A sophisticated Numeric Processing Package for Python"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7e51a5677b22b865abbfb3dff6ffb2d0"
+
+SRCNAME = "numpy"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/n/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+           file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
+           file://remove-build-path-in-comments.patch \
+           file://fix_shebang_f2py.patch \
+           ${CONFIGFILESURI} "
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/numpy/files/"
+
+CONFIGFILESURI ?= ""
+
+CONFIGFILESURI_aarch64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_arm = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_armeb = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_mipsel = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_x86 = " \
+    file://config.h \
+    file://numpyconfig.h \
+"
+CONFIGFILESURI_x86-64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_mips = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_powerpc = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_powerpc64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_mips64 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+CONFIGFILESURI_mips64n32 = " \
+    file://config.h \
+    file://_numpyconfig.h \
+"
+
+S = "${WORKDIR}/numpy-${PV}"
+
+inherit setuptools3
+
+# Make the build fail and replace *config.h with proper one
+# This is a ugly, ugly hack - Koen
+do_compile_prepend_class-target() {
+    ${STAGING_BINDIR_NATIVE}/python3-native/python3 setup.py build ${DISTUTILS_BUILD_ARGS} || \
+    true
+    cp ${WORKDIR}/*config.h ${S}/build/$(ls ${S}/build | grep src)/numpy/core/include/numpy/
+}
+
+FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a"
+
+SRC_URI[md5sum] = "bc56fb9fc2895aa4961802ffbdb31d0b"
+SRC_URI[sha256sum] = "a1d1268d200816bfb9727a7a27b78d8e37ecec2e4d5ebd33eb64e2789e0db43e"
+
+# install what is needed for numpy.test()
+RDEPENDS_${PN} = "python3-unittest \
+                  python3-difflib \
+                  python3-pprint \
+                  python3-pickle \
+                  python3-shell \
+                  python3-nose \
+                  python3-doctest \
+                  python3-datetime \
+                  python3-distutils \
+                  python3-misc \
+                  python3-mmap \
+                  python3-netclient \
+                  python3-numbers \
+                  python3-pydoc \
+                  python3-pkgutil \
+                  python3-email \
+                  python3-subprocess \
+                  python3-compression \
+                  python3-ctypes \
+                  python3-threading \
+                  python3-textutils \
+"
+
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-3.5-manifest.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-3.5-manifest.inc
index 335c3ff..3046114 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-3.5-manifest.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-3.5-manifest.inc
@@ -5,14 +5,18 @@
 
  
 
-PROVIDES+="${PN}-2to3 ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc "
+PROVIDES+="${PN}-2to3 ${PN}-argparse ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-email ${PN}-enum ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc "
 
-PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-modules"
+PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-argparse ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-enum ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-modules"
 
 SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator"
 RDEPENDS_${PN}-2to3="${PN}-core"
 FILES_${PN}-2to3="${libdir}/python3.5/lib2to3 "
 
+SUMMARY_${PN}-argparse="Python command line argument parser"
+RDEPENDS_${PN}-argparse="${PN}-core ${PN}-codecs ${PN}-textutils"
+FILES_${PN}-argparse="${libdir}/python3.5/argparse.* "
+
 SUMMARY_${PN}-asyncio="Python Asynchronous I/O, event loop, coroutines and tasks"
 RDEPENDS_${PN}-asyncio="${PN}-core"
 FILES_${PN}-asyncio="${libdir}/python3.5/asyncio "
@@ -30,19 +34,19 @@
 FILES_${PN}-compile="${libdir}/python3.5/py_compile.* ${libdir}/python3.5/compileall.* "
 
 SUMMARY_${PN}-compression="Python high-level compression support"
-RDEPENDS_${PN}-compression="${PN}-core ${PN}-codecs"
-FILES_${PN}-compression="${libdir}/python3.5/gzip.* ${libdir}/python3.5/zipfile.* ${libdir}/python3.5/tarfile.* ${libdir}/python3.5/lib-dynload/bz2.*.so "
+RDEPENDS_${PN}-compression="${PN}-core ${PN}-codecs ${PN}-importlib ${PN}-threading ${PN}-shell"
+FILES_${PN}-compression="${libdir}/python3.5/gzip.* ${libdir}/python3.5/zipfile.* ${libdir}/python3.5/tarfile.* ${libdir}/python3.5/lib-dynload/bz2.*.so ${libdir}/python3.5/lib-dynload/zlib.*.so "
 
 SUMMARY_${PN}-core="Python interpreter and core modules"
 RDEPENDS_${PN}-core="${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math"
-FILES_${PN}-core="${libdir}/python3.5/__future__.* ${libdir}/python3.5/_abcoll.* ${libdir}/python3.5/abc.* ${libdir}/python3.5/ast.* ${libdir}/python3.5/copy.* ${libdir}/python3.5/copyreg.* ${libdir}/python3.5/ConfigParser.* ${libdir}/python3.5/genericpath.* ${libdir}/python3.5/getopt.* ${libdir}/python3.5/linecache.* ${libdir}/python3.5/new.* ${libdir}/python3.5/os.* ${libdir}/python3.5/posixpath.* ${libdir}/python3.5/struct.* ${libdir}/python3.5/warnings.* ${libdir}/python3.5/site.* ${libdir}/python3.5/stat.* ${libdir}/python3.5/UserDict.* ${libdir}/python3.5/UserList.* ${libdir}/python3.5/UserString.* ${libdir}/python3.5/lib-dynload/binascii.*.so ${libdir}/python3.5/lib-dynload/_struct.*.so ${libdir}/python3.5/lib-dynload/time.*.so ${libdir}/python3.5/lib-dynload/xreadlines.*.so ${libdir}/python3.5/types.* ${libdir}/python3.5/platform.* ${bindir}/python* ${libdir}/python3.5/_weakrefset.* ${libdir}/python3.5/sysconfig.* ${libdir}/python3.5/_sysconfigdata.* ${libdir}/python3.5/config/Makefile ${includedir}/python${PYTHON_BINABI}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/collections ${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* ${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py "
+FILES_${PN}-core="${libdir}/python3.5/__future__.* ${libdir}/python3.5/_abcoll.* ${libdir}/python3.5/abc.* ${libdir}/python3.5/ast.* ${libdir}/python3.5/copy.* ${libdir}/python3.5/copyreg.* ${libdir}/python3.5/configparser.* ${libdir}/python3.5/genericpath.* ${libdir}/python3.5/getopt.* ${libdir}/python3.5/linecache.* ${libdir}/python3.5/new.* ${libdir}/python3.5/os.* ${libdir}/python3.5/posixpath.* ${libdir}/python3.5/struct.* ${libdir}/python3.5/warnings.* ${libdir}/python3.5/site.* ${libdir}/python3.5/stat.* ${libdir}/python3.5/UserDict.* ${libdir}/python3.5/UserList.* ${libdir}/python3.5/UserString.* ${libdir}/python3.5/lib-dynload/binascii.*.so ${libdir}/python3.5/lib-dynload/_struct.*.so ${libdir}/python3.5/lib-dynload/time.*.so ${libdir}/python3.5/lib-dynload/xreadlines.*.so ${libdir}/python3.5/types.* ${libdir}/python3.5/platform.* ${bindir}/python* ${libdir}/python3.5/_weakrefset.* ${libdir}/python3.5/sysconfig.* ${libdir}/python3.5/_sysconfigdata.* ${libdir}/python3.5/config/Makefile ${includedir}/python${PYTHON_BINABI}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/collections ${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* ${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py "
 
 SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support"
 RDEPENDS_${PN}-crypt="${PN}-core"
 FILES_${PN}-crypt="${libdir}/python3.5/hashlib.* ${libdir}/python3.5/md5.* ${libdir}/python3.5/sha.* ${libdir}/python3.5/lib-dynload/crypt.*.so ${libdir}/python3.5/lib-dynload/_hashlib.*.so ${libdir}/python3.5/lib-dynload/_sha256.*.so ${libdir}/python3.5/lib-dynload/_sha512.*.so "
 
 SUMMARY_${PN}-ctypes="Python C types support"
-RDEPENDS_${PN}-ctypes="${PN}-core"
+RDEPENDS_${PN}-ctypes="${PN}-core ${PN}-subprocess"
 FILES_${PN}-ctypes="${libdir}/python3.5/ctypes ${libdir}/python3.5/lib-dynload/_ctypes.*.so ${libdir}/python3.5/lib-dynload/_ctypes_test.*.so "
 
 SUMMARY_${PN}-curses="Python curses support"
@@ -51,7 +55,7 @@
 
 SUMMARY_${PN}-datetime="Python calendar and time support"
 RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs"
-FILES_${PN}-datetime="${libdir}/python3.5/_strptime.* ${libdir}/python3.5/calendar.* ${libdir}/python3.5/lib-dynload/datetime.*.so "
+FILES_${PN}-datetime="${libdir}/python3.5/_strptime.* ${libdir}/python3.5/calendar.* ${libdir}/python3.5/datetime.* ${libdir}/python3.5/lib-dynload/_datetime.*.so "
 
 SUMMARY_${PN}-db="Python file-based database support"
 RDEPENDS_${PN}-db="${PN}-core"
@@ -85,6 +89,10 @@
 RDEPENDS_${PN}-email="${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient"
 FILES_${PN}-email="${libdir}/python3.5/imaplib.* ${libdir}/python3.5/email "
 
+SUMMARY_${PN}-enum="Python support for enumerations"
+RDEPENDS_${PN}-enum="${PN}-core"
+FILES_${PN}-enum="${libdir}/python3.5/enum.* "
+
 SUMMARY_${PN}-fcntl="Python's fcntl interface"
 RDEPENDS_${PN}-fcntl="${PN}-core"
 FILES_${PN}-fcntl="${libdir}/python3.5/lib-dynload/fcntl.*.so "
@@ -106,7 +114,7 @@
 FILES_${PN}-image="${libdir}/python3.5/colorsys.* ${libdir}/python3.5/imghdr.* ${libdir}/python3.5/lib-dynload/imageop.*.so ${libdir}/python3.5/lib-dynload/rgbimg.*.so "
 
 SUMMARY_${PN}-importlib="Python import implementation library"
-RDEPENDS_${PN}-importlib="${PN}-core"
+RDEPENDS_${PN}-importlib="${PN}-core ${PN}-lang"
 FILES_${PN}-importlib="${libdir}/python3.5/importlib "
 
 SUMMARY_${PN}-io="Python low-level I/O"
@@ -118,8 +126,8 @@
 FILES_${PN}-json="${libdir}/python3.5/json ${libdir}/python3.5/lib-dynload/_json.*.so "
 
 SUMMARY_${PN}-lang="Python low-level language support"
-RDEPENDS_${PN}-lang="${PN}-core"
-FILES_${PN}-lang="${libdir}/python3.5/lib-dynload/_bisect.*.so ${libdir}/python3.5/lib-dynload/_collections.*.so ${libdir}/python3.5/lib-dynload/_heapq.*.so ${libdir}/python3.5/lib-dynload/_weakref.*.so ${libdir}/python3.5/lib-dynload/_functools.*.so ${libdir}/python3.5/lib-dynload/array.*.so ${libdir}/python3.5/lib-dynload/itertools.*.so ${libdir}/python3.5/lib-dynload/operator.*.so ${libdir}/python3.5/lib-dynload/parser.*.so ${libdir}/python3.5/atexit.* ${libdir}/python3.5/bisect.* ${libdir}/python3.5/code.* ${libdir}/python3.5/codeop.* ${libdir}/python3.5/collections.* ${libdir}/python3.5/_collections_abc.* ${libdir}/python3.5/dis.* ${libdir}/python3.5/functools.* ${libdir}/python3.5/heapq.* ${libdir}/python3.5/inspect.* ${libdir}/python3.5/keyword.* ${libdir}/python3.5/opcode.* ${libdir}/python3.5/symbol.* ${libdir}/python3.5/repr.* ${libdir}/python3.5/token.* ${libdir}/python3.5/tokenize.* ${libdir}/python3.5/traceback.* ${libdir}/python3.5/weakref.* "
+RDEPENDS_${PN}-lang="${PN}-core ${PN}-importlib"
+FILES_${PN}-lang="${libdir}/python3.5/lib-dynload/_bisect.*.so ${libdir}/python3.5/lib-dynload/_collections.*.so ${libdir}/python3.5/lib-dynload/_heapq.*.so ${libdir}/python3.5/lib-dynload/_weakref.*.so ${libdir}/python3.5/lib-dynload/_functools.*.so ${libdir}/python3.5/lib-dynload/array.*.so ${libdir}/python3.5/lib-dynload/itertools.*.so ${libdir}/python3.5/lib-dynload/operator.*.so ${libdir}/python3.5/lib-dynload/parser.*.so ${libdir}/python3.5/atexit.* ${libdir}/python3.5/bisect.* ${libdir}/python3.5/code.* ${libdir}/python3.5/codeop.* ${libdir}/python3.5/collections.* ${libdir}/python3.5/_collections_abc.* ${libdir}/python3.5/contextlib.* ${libdir}/python3.5/dis.* ${libdir}/python3.5/functools.* ${libdir}/python3.5/heapq.* ${libdir}/python3.5/inspect.* ${libdir}/python3.5/keyword.* ${libdir}/python3.5/opcode.* ${libdir}/python3.5/operator.* ${libdir}/python3.5/symbol.* ${libdir}/python3.5/repr.* ${libdir}/python3.5/token.* ${libdir}/python3.5/tokenize.* ${libdir}/python3.5/traceback.* ${libdir}/python3.5/weakref.* "
 
 SUMMARY_${PN}-logging="Python logging support"
 RDEPENDS_${PN}-logging="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold"
@@ -130,7 +138,7 @@
 FILES_${PN}-mailbox="${libdir}/python3.5/mailbox.* "
 
 SUMMARY_${PN}-math="Python math support"
-RDEPENDS_${PN}-math="${PN}-core"
+RDEPENDS_${PN}-math="${PN}-core ${PN}-crypt"
 FILES_${PN}-math="${libdir}/python3.5/lib-dynload/cmath.*.so ${libdir}/python3.5/lib-dynload/math.*.so ${libdir}/python3.5/lib-dynload/_random.*.so ${libdir}/python3.5/random.* ${libdir}/python3.5/sets.* "
 
 SUMMARY_${PN}-mime="Python MIME handling APIs"
@@ -193,10 +201,18 @@
 RDEPENDS_${PN}-resource="${PN}-core"
 FILES_${PN}-resource="${libdir}/python3.5/lib-dynload/resource.*.so "
 
+SUMMARY_${PN}-selectors="Python High-level I/O multiplexing"
+RDEPENDS_${PN}-selectors="${PN}-core"
+FILES_${PN}-selectors="${libdir}/python3.5/selectors.* "
+
 SUMMARY_${PN}-shell="Python shell-like functionality"
-RDEPENDS_${PN}-shell="${PN}-core ${PN}-re"
+RDEPENDS_${PN}-shell="${PN}-core ${PN}-re ${PN}-compression"
 FILES_${PN}-shell="${libdir}/python3.5/cmd.* ${libdir}/python3.5/commands.* ${libdir}/python3.5/dircache.* ${libdir}/python3.5/fnmatch.* ${libdir}/python3.5/glob.* ${libdir}/python3.5/popen2.* ${libdir}/python3.5/shlex.* ${libdir}/python3.5/shutil.* "
 
+SUMMARY_${PN}-signal="Python set handlers for asynchronous events support"
+RDEPENDS_${PN}-signal="${PN}-core ${PN}-enum"
+FILES_${PN}-signal="${libdir}/python3.5/signal.* "
+
 SUMMARY_${PN}-smtpd="Python Simple Mail Transport Daemon"
 RDEPENDS_${PN}-smtpd="${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime"
 FILES_${PN}-smtpd="${bindir}/smtpd.* ${libdir}/python3.5/smtpd.* "
@@ -214,8 +230,8 @@
 FILES_${PN}-stringold="${libdir}/python3.5/lib-dynload/strop.*.so ${libdir}/python3.5/string.* ${libdir}/python3.5/stringold.* "
 
 SUMMARY_${PN}-subprocess="Python subprocess support"
-RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle"
-FILES_${PN}-subprocess="${libdir}/python3.5/subprocess.* "
+RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle ${PN}-threading ${PN}-signal ${PN}-selectors"
+FILES_${PN}-subprocess="${libdir}/python3.5/subprocess.* ${libdir}/python3.5/lib-dynload/_posixsubprocess.*.so "
 
 SUMMARY_${PN}-syslog="Python syslog interface"
 RDEPENDS_${PN}-syslog="${PN}-core"
@@ -235,7 +251,7 @@
 
 SUMMARY_${PN}-threading="Python threading & synchronization support"
 RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang"
-FILES_${PN}-threading="${libdir}/python3.5/_threading_local.* ${libdir}/python3.5/dummy_thread.* ${libdir}/python3.5/dummy_threading.* ${libdir}/python3.5/mutex.* ${libdir}/python3.5/threading.* ${libdir}/python3.5/Queue.* "
+FILES_${PN}-threading="${libdir}/python3.5/_threading_local.* ${libdir}/python3.5/dummy_thread.* ${libdir}/python3.5/dummy_threading.* ${libdir}/python3.5/mutex.* ${libdir}/python3.5/threading.* ${libdir}/python3.5/queue.* "
 
 SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings"
 RDEPENDS_${PN}-tkinter="${PN}-core"
@@ -258,7 +274,7 @@
 FILES_${PN}-xmlrpc="${libdir}/python3.5/xmlrpclib.* ${libdir}/python3.5/SimpleXMLRPCServer.* ${libdir}/python3.5/DocXMLRPCServer.* ${libdir}/python3.5/xmlrpc "
 
 SUMMARY_${PN}-modules="All Python modules"
-RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc  "
+RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-argparse ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-enum ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc  "
 ALLOW_EMPTY_${PN}-modules = "1"
 
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-async.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-async.inc
new file mode 100644
index 0000000..2c5cb4d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-async.inc
@@ -0,0 +1,15 @@
+SUMMARY = "Python framework to process interdependent tasks in a pool of workers"
+HOMEPAGE = "http://github.com/gitpython-developers/async"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/a/async/async-${PV}.tar.gz"
+SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b"
+SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/async/"
+
+S = "${WORKDIR}/async-${PV}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-async_0.6.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-async_0.6.2.bb
index ad0a617..d855e42 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-async_0.6.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-async_0.6.2.bb
@@ -1,19 +1,5 @@
-SUMMARY = "Python framework to process interdependent tasks in a pool of workers"
-HOMEPAGE = "http://github.com/gitpython-developers/async"
-SECTION = "devel/python"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
-
-SRC_URI = "http://pypi.python.org/packages/source/a/async/async-${PV}.tar.gz"
-SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b"
-SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/async/"
-
-S = "${WORKDIR}/async-${PV}"
+require python-async.inc
 
 inherit setuptools
 
 RDEPENDS_${PN} += "python-threading python-lang"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-dbus_1.2.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-dbus_1.2.0.bb
deleted file mode 100644
index b314dce..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-dbus_1.2.0.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Python bindings for the DBus inter-process communication system"
-SECTION = "devel/python"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0b83047ce9e948b67c0facc5f233476a"
-DEPENDS = "expat dbus dbus-glib virtual/libintl python-pyrex-native"
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \
-"
-
-SRC_URI[md5sum] = "b09cd2d1a057cc432ce944de3fc06bf7"
-SRC_URI[sha256sum] = "e12c6c8b2bf3a9302f75166952cbe41d6b38c3441bbc6767dbd498942316c6df"
-S = "${WORKDIR}/dbus-python-${PV}"
-
-inherit distutils-base autotools pkgconfig
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[docs] = "--enable-html-docs,--disable-html-docs,python-docutils-native"
-PACKAGECONFIG[api-docs] = "--enable-api-docs,--disable-api-docs,python-docutils-native python-epydoc-native"
-
-export BUILD_SYS
-export HOST_SYS
-
-export STAGING_LIBDIR
-export STAGING_INCDIR
-
-RDEPENDS_${PN} = "python-io python-logging python-stringold python-threading python-xml"
-
-FILES_${PN}-dev += "${libdir}/pkgconfig"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-docutils_0.12.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-docutils_0.12.bb
deleted file mode 100644
index 8cda88d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-docutils_0.12.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Text processing system for documentation"
-HOMEPAGE = "http://docutils.sourceforge.net"
-SECTION = "devel/python"
-LICENSE = "PSF & BSD-2-Clause & GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=a722fbdc20347db7b69223594dd54574"
-
-DEPENDS = "python"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz"
-SRC_URI[md5sum] = "4622263b62c5c771c03502afa3157768"
-SRC_URI[sha256sum] = "c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa"
-
-S = "${WORKDIR}/docutils-${PV}"
-
-inherit distutils
-
-BBCLASSEXTEND = "native"
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-git.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-git.inc
new file mode 100644
index 0000000..13c097a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-git.inc
@@ -0,0 +1,21 @@
+SUMMARY = "Python library used to interact with Git repositories"
+DESCRIPTION = "GitPython provides object model read and write access to \
+a git repository. Access repository information conveniently, alter the \
+index directly, handle remotes, or go down to low-level object database \
+access with big-files support."
+HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/G/GitPython/GitPython-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "aa0ba9df0abe4c8f35dd7bb9be85d56e"
+SRC_URI[sha256sum] = "d8e7adaacceedd3d043e6cd2544f57dbe00c53fc26374880b7cea67f3188aa68"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/GitPython/"
+UPSTREAM_CHECK_REGEX = "/GitPython/(?P<pver>(\d+[\.\-_]*)+)"
+
+S = "${WORKDIR}/GitPython-${PV}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-git_1.0.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-git_1.0.2.bb
deleted file mode 100644
index f00f805..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-git_1.0.2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Python library used to interact with Git repositories"
-DESCRIPTION = "GitPython provides object model read and write access to \
-a git repository. Access repository information conveniently, alter the \
-index directly, handle remotes, or go down to low-level object database \
-access with big-files support."
-HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183"
-DEPENDS = "python-gitdb"
-
-SRC_URI = "http://pypi.python.org/packages/source/G/GitPython/GitPython-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "d92d96a8da0fc77cf141d3e16084e094"
-SRC_URI[sha256sum] = "85de72556781480a38897a77de5b458ae3838b0fd589593679a1b5f34d181d84"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/GitPython/"
-UPSTREAM_CHECK_REGEX = "/GitPython/(?P<pver>(\d+[\.\-_]*)+)"
-
-S = "${WORKDIR}/GitPython-${PV}"
-
-inherit setuptools
-
-RDEPENDS_${PN} += "python-gitdb python-lang python-io python-shell python-math python-re python-subprocess python-stringold python-unixadmin"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-git_2.0.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-git_2.0.7.bb
new file mode 100644
index 0000000..e49dbea
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-git_2.0.7.bb
@@ -0,0 +1,7 @@
+require python-git.inc
+
+DEPENDS = "python-gitdb"
+
+inherit setuptools
+
+RDEPENDS_${PN} += "python-gitdb python-lang python-io python-shell python-math python-re python-subprocess python-stringold python-unixadmin"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-gitdb.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-gitdb.inc
new file mode 100644
index 0000000..08193fb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-gitdb.inc
@@ -0,0 +1,16 @@
+SUMMARY = "A pure-Python git object database"
+HOMEPAGE = "http://github.com/gitpython-developers/gitdb"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/g/gitdb/gitdb-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "44e4366b8bdfd306b075c3a52c96ae1a"
+SRC_URI[sha256sum] = "a3ebbc27be035a2e874ed904df516e35f4a29a778a764385de09de9e0f139658"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/gitdb/"
+
+S = "${WORKDIR}/gitdb-${PV}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-gitdb_0.6.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-gitdb_0.6.4.bb
index c82df1e..1777395 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-gitdb_0.6.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-gitdb_0.6.4.bb
@@ -1,21 +1,7 @@
-SUMMARY = "A pure-Python git object database"
-HOMEPAGE = "http://github.com/gitpython-developers/gitdb"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528"
+require python-gitdb.inc
+
 DEPENDS = "python-async python-smmap"
 
-SRC_URI = "https://pypi.python.org/packages/source/g/gitdb/gitdb-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "44e4366b8bdfd306b075c3a52c96ae1a"
-SRC_URI[sha256sum] = "a3ebbc27be035a2e874ed904df516e35f4a29a778a764385de09de9e0f139658"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/gitdb/"
-
-S = "${WORKDIR}/gitdb-${PV}"
-
 inherit distutils
 
 RDEPENDS_${PN} += "python-smmap python-async python-mmap python-lang python-zlib python-io python-shell"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch
deleted file mode 100644
index 2575306..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 07d4f095a9e22ae676a8d68073101131e65012dc Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Tue, 15 Nov 2011 13:16:54 +0100
-Subject: [PATCH] python imaging setup.py: force paths for zlib, freetype and jpeg and don't add host paths
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- setup.py |   14 +++-----------
- 1 files changed, 3 insertions(+), 11 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 5d4d53a..b1a22ec 100644
---- a/setup.py
-+++ b/setup.py
-@@ -34,10 +34,10 @@ def libinclude(root):
- # TIFF_ROOT = libinclude("/opt/tiff")
- 
- TCL_ROOT = None
--JPEG_ROOT = None
--ZLIB_ROOT = None
-+JPEG_ROOT = os.environ['STAGING_LIBDIR']
-+ZLIB_ROOT = os.environ['STAGING_LIBDIR']
- TIFF_ROOT = None
--FREETYPE_ROOT = None
-+FREETYPE_ROOT =  os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR']
- LCMS_ROOT = None
- 
- # FIXME: add mechanism to explicitly *disable* the use of a library
-@@ -147,7 +147,6 @@ class pil_build_ext(build_ext):
-             add_directory(library_dirs, "/opt/local/lib")
-             add_directory(include_dirs, "/opt/local/include")
- 
--        add_directory(library_dirs, "/usr/local/lib")
-         # FIXME: check /opt/stuff directories here?
- 
-         prefix = sysconfig.get_config_var("prefix")
-@@ -207,13 +206,6 @@ class pil_build_ext(build_ext):
-             if os.path.isfile(os.path.join(tcl_dir, "tk.h")):
-                 add_directory(include_dirs, tcl_dir)
- 
--        # standard locations
--        add_directory(library_dirs, "/usr/local/lib")
--        add_directory(include_dirs, "/usr/local/include")
--
--        add_directory(library_dirs, "/usr/lib")
--        add_directory(include_dirs, "/usr/include")
--
-         #
-         # insert new dirs *before* default libs, to avoid conflicts
-         # between Python PYD stub libs and real libraries
--- 
-1.7.2.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch
deleted file mode 100644
index 4960ed4..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-At least lcms wasn't deterministicly detected from sysroot.
-
-This will allow to export LCMS_ENABLED=False when lcms isn't in PACKAGECONFIG.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
-diff -uNr Imaging-1.1.7.orig/setup.py Imaging-1.1.7/setup.py
---- Imaging-1.1.7.orig/setup.py	2013-07-22 10:17:02.081457075 +0200
-+++ Imaging-1.1.7/setup.py	2013-07-22 13:10:09.029707492 +0200
-@@ -39,6 +39,12 @@
- TIFF_ROOT = None
- FREETYPE_ROOT =  os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR']
- LCMS_ROOT = None
-+TCL_ENABLED = os.getenv('TCL_ENABLED', "True")
-+JPEG_ENABLED = os.getenv('JPEG_ENABLED', "True")
-+ZLIB_ENABLED = os.getenv('ZLIB_ENABLED', "True")
-+TIFF_ENABLED = os.getenv('TIFF_ENABLED', "True")
-+FREETYPE_ENABLED = os.getenv('FREETYPE_ENABLED', "True")
-+LCMS_ENABLED = os.getenv('LCMS_ENABLED', "True")
- 
- # FIXME: add mechanism to explicitly *disable* the use of a library
- 
-@@ -220,22 +226,22 @@
-             zlib = jpeg = tiff = freetype = tcl = tk = lcms = None
-         feature = feature()
- 
--        if find_include_file(self, "zlib.h"):
-+        if ZLIB_ENABLED == 'True' and find_include_file(self, "zlib.h"):
-             if find_library_file(self, "z"):
-                 feature.zlib = "z"
-             elif sys.platform == "win32" and find_library_file(self, "zlib"):
-                 feature.zlib = "zlib" # alternative name
- 
--        if find_include_file(self, "jpeglib.h"):
-+        if JPEG_ENABLED == 'True' and find_include_file(self, "jpeglib.h"):
-             if find_library_file(self, "jpeg"):
-                 feature.jpeg = "jpeg"
-             elif sys.platform == "win32" and find_library_file(self, "libjpeg"):
-                 feature.jpeg = "libjpeg" # alternative name
- 
--        if find_library_file(self, "tiff"):
-+        if TIFF_ENABLED == 'True' and find_library_file(self, "tiff"):
-             feature.tiff = "tiff"
- 
--        if find_library_file(self, "freetype"):
-+        if FREETYPE_ENABLED == 'True' and find_library_file(self, "freetype"):
-             # look for freetype2 include files
-             freetype_version = 0
-             for dir in self.compiler.include_dirs:
-@@ -256,11 +262,11 @@
-                 if dir:
-                     add_directory(self.compiler.include_dirs, dir, 0)
- 
--        if find_include_file(self, "lcms.h"):
-+        if LCMS_ENABLED == 'True' and find_include_file(self, "lcms.h"):
-             if find_library_file(self, "lcms"):
-                 feature.lcms = "lcms"
- 
--        if _tkinter and find_include_file(self, "tk.h"):
-+        if TCL_ENABLED == 'True' and _tkinter and find_include_file(self, "tk.h"):
-             # the library names may vary somewhat (e.g. tcl84 or tcl8.4)
-             version = TCL_VERSION[0] + TCL_VERSION[2]
-             if find_library_file(self, "tcl" + version):
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch
deleted file mode 100644
index 9ecc63a..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From c6040f618d8f2706a7b46d1cdf37d1a587f9701f Mon Sep 17 00:00:00 2001
-From: Andrew Stromnov <stromnov@gmail.com>
-Date: Thu, 28 Nov 2013 16:58:43 +0400
-Subject: [PATCH] fix compiling with FreeType 2.5.1
-
----
- _imagingft.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/_imagingft.c b/_imagingft.c
-index 47d50bd..f19555b 100644
---- a/_imagingft.c
-+++ b/_imagingft.c
-@@ -59,7 +59,11 @@ struct {
-     const char* message;
- } ft_errors[] =
- 
-+#if defined(USE_FREETYPE_2_1)
-+#include FT_ERRORS_H
-+#else
- #include <freetype/fterrors.h>
-+#endif
- 
- /* -------------------------------------------------------------------- */
- /* font objects */
--- 
-1.8.5.1
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging_1.1.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging_1.1.7.bb
deleted file mode 100644
index a678328..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-imaging_1.1.7.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "Python Imaging Library (PIL)"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://README;beginline=92;endline=120;md5=c4371af4579f1e489cf881c1443dd4ec"
-DEPENDS = "freetype jpeg tiff"
-SRCNAME = "Imaging"
-PR = "r5"
-
-SRC_URI = "http://effbot.org/downloads/Imaging-${PV}.tar.gz \
-           file://0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch \
-           file://allow.to.disable.some.features.patch \
-           file://fix-freetype-includes.patch"
-
-SRC_URI[md5sum] = "fc14a54e1ce02a0225be8854bfba478e"
-SRC_URI[sha256sum] = "895bc7c2498c8e1f9b99938f1a40dc86b3f149741f105cf7c7bd2e0725405211"
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-# There isn't enable/disable option, and lcms is in meta-oe, at least make it explicit when enabled
-# setup.py already has FIXME: add mechanism to explicitly *disable* the use of a library
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[lcms] = ",,lcms"
-
-inherit distutils
-
-do_compile() {
-    export STAGING_LIBDIR=${STAGING_LIBDIR}
-    export STAGING_INCDIR=${STAGING_INCDIR}
-    export LCMS_ENABLED=${@bb.utils.contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)}
-    distutils_do_compile
-}
-
-do_install() {
-    export STAGING_LIBDIR=${STAGING_LIBDIR}
-    export STAGING_INCDIR=${STAGING_INCDIR}
-    export LCMS_ENABLED=${@bb.utils.contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)}
-    distutils_do_install
-    install -d ${D}${datadir}/doc/${BPN}/html/
-    install -m 0644 ${S}/README ${D}${datadir}/doc/${BPN}/
-    install -m 0644 ${S}/Docs/* ${D}${datadir}/doc/${BPN}/html/
-
-    # get rid of #!/usr/local/bin/python
-    sed -i -e 's:/usr/local/bin/:${bindir}/env :g' ${D}${bindir}/*
-}
-
-RDEPENDS_${PN} += "python-lang python-stringold"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako.inc
new file mode 100644
index 0000000..85ec217
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako.inc
@@ -0,0 +1,15 @@
+SUMMARY = "Templating library for Python"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1bb21fa2d2f7a534c884b990430a6863"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/M/Mako/Mako-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "c5fc31a323dd4990683d2f2da02d4e20"
+SRC_URI[sha256sum] = "fed99dbe4d0ddb27a33ee4910d8708aca9ef1fe854e668387a9ab9a90cbf9059"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/mako/"
+UPSTREAM_CHECK_REGEX = "/Mako/(?P<pver>(\d+[\.\-_]*)+)"
+
+S = "${WORKDIR}/Mako-${PV}"
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.3.bb
deleted file mode 100644
index 9efd700..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.3.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Templating library for Python"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=deb3ff8e4c17aaf7b80889b6b2bf4c83"
-
-SRC_URI = "https://pypi.python.org/packages/source/M/Mako/Mako-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "a78f20f6366a8a0659ce5532f8614e53"
-SRC_URI[sha256sum] = "7644bc0ee35965d2e146dde31827b8982ed70a58281085fac42869a09764d38c"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/mako/"
-UPSTREAM_CHECK_REGEX = "/Mako/(?P<pver>(\d+[\.\-_]*)+)"
-
-S = "${WORKDIR}/Mako-${PV}"
-
-inherit setuptools
-
-RDEPENDS_${PN} = "python-threading \
-                  python-netclient \
-                  python-html \
-"
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.4.bb
new file mode 100644
index 0000000..230044e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.4.bb
@@ -0,0 +1,17 @@
+require python-mako.inc
+
+inherit setuptools
+
+RDEPENDS_${PN} = "python-threading \
+                  python-netclient \
+                  python-html \
+"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+# The same utility is packaged in python3-mako, so it would conflict
+do_install_append() {
+    rm -f ${D}${bindir}/mako-render
+    rmdir ${D}${bindir}
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch
deleted file mode 100644
index f89aaff..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-# The proper prefix is inside our staging area.
-# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
-# Signed-off-by: Phil Blundell <philb@gnu.org>
-
---- Python-2.6.6/Lib/distutils/sysconfig.py.orig	2012-01-03 14:02:03.027005296 +0000
-+++ Python-2.6.6/Lib/distutils/sysconfig.py	2012-01-03 14:02:31.517601081 +0000
-@@ -19,8 +19,8 @@
- from distutils.errors import DistutilsPlatformError
- 
- # These are needed in a couple of spots, so just compute them once.
--PREFIX = os.path.normpath(sys.prefix)
--EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
-+PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
-+EXEC_PREFIX = os.path.normpath(sys.exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
- 
- # Path to the base directory of the project. On Windows the binary may
- # live in project/PCBuild9.  If we're dealing with an x64 Windows build,
-@@ -70,7 +70,7 @@
-     sys.exec_prefix -- i.e., ignore 'plat_specific'.
-     """
-     if prefix is None:
--        prefix = plat_specific and EXEC_PREFIX or PREFIX
-+        prefix = os.environ['STAGING_INCDIR'].rstrip('include')
- 
-     if os.name == "posix":
-         if python_build:
-@@ -115,12 +115,16 @@
-     If 'prefix' is supplied, use it instead of sys.prefix or
-     sys.exec_prefix -- i.e., ignore 'plat_specific'.
-     """
-+    lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1]
-     if prefix is None:
--        prefix = plat_specific and EXEC_PREFIX or PREFIX
-+        if plat_specific:
-+            prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename)
-+        else:
-+            prefix = PREFIX
- 
-     if os.name == "posix":
-         libpython = os.path.join(prefix,
--                                 "lib", "python" + get_python_version())
-+                                 lib_basename, "python" + get_python_version())
-         if standard_lib:
-             return libpython
-         else:
-@@ -216,7 +220,7 @@
-     else:
-         # The name of the config.h file changed in 2.2
-         config_h = 'pyconfig.h'
--    return os.path.join(inc_dir, config_h)
-+    return os.path.join(inc_dir, config_h).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
- 
- 
- def get_makefile_filename():
-@@ -225,7 +229,7 @@
-         return os.path.join(os.path.dirname(os.path.realpath(sys.executable)),
-                             "Makefile")
-     lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
--    return os.path.join(lib_dir, "config", "Makefile")
-+    return os.path.join(lib_dir, "config", "Makefile").replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
- 
- 
- def parse_config_h(fp, g=None):
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch
index 5279e7c..a592ea4 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch
@@ -4,8 +4,8 @@
 
 - Implements Richard Purdie's idea
 
-Signed-Off-By: Richard Purdie <richard.purdie@linuxfoundation.org>
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
 Index: Python-2.7.9/Makefile.pre.in
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/debug.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/debug.patch
index 5ec10d6..3617882 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/debug.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/debug.patch
@@ -1,24 +1,27 @@
 Upstream-Status: Pending
 
-Index: Python-2.6.1/Lib/distutils/unixccompiler.py
+Index: Python-2.7.12/Lib/distutils/unixccompiler.py
 ===================================================================
---- Python-2.6.1.orig/Lib/distutils/unixccompiler.py	2009-11-13 16:04:54.000000000 +0000
-+++ Python-2.6.1/Lib/distutils/unixccompiler.py	2009-11-13 16:06:27.000000000 +0000
-@@ -300,6 +300,8 @@
-         dylib_f = self.library_filename(lib, lib_type='dylib')
-         static_f = self.library_filename(lib, lib_type='static')
+--- Python-2.7.12.orig/Lib/distutils/unixccompiler.py
++++ Python-2.7.12/Lib/distutils/unixccompiler.py
+@@ -278,6 +278,8 @@ class UnixCCompiler(CCompiler):
+ 
+ 
  
 +        print "Looking in %s for %s" % (lib, dirs)
 +
          for dir in dirs:
              shared = os.path.join(dir, shared_f)
              dylib = os.path.join(dir, dylib_f)
-@@ -309,10 +311,13 @@
+@@ -298,12 +300,16 @@ class UnixCCompiler(CCompiler):
              # assuming that *all* Unix C compilers do.  And of course I'm
              # ignoring even GCC's "-static" option.  So sue me.
              if os.path.exists(dylib):
 +                print "Found %s" % (dylib)
                  return dylib
+             elif os.path.exists(xcode_stub):
++                print "Found %s" % (xcode_stub)
+                 return xcode_stub
              elif os.path.exists(shared):
 +                print "Found %s" % (shared)
                  return shared
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/multilib.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/multilib.patch
index 8ca89e7..916b40f 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/multilib.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/multilib.patch
@@ -1,6 +1,6 @@
 Rebased for Python 2.7.9
 
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
 2011/09/29
 The python recipe building was failing because python-native 
@@ -10,12 +10,12 @@
 
 Upstream-Status: Inappropriate [oe-specific]
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 
-Index: Python-2.7.9/Include/pythonrun.h
+Index: Python-2.7.12/Include/pythonrun.h
 ===================================================================
---- Python-2.7.9.orig/Include/pythonrun.h
-+++ Python-2.7.9/Include/pythonrun.h
+--- Python-2.7.12.orig/Include/pythonrun.h
++++ Python-2.7.12/Include/pythonrun.h
 @@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void);
  /* In their own files */
  PyAPI_FUNC(const char *) Py_GetVersion(void);
@@ -24,10 +24,10 @@
  PyAPI_FUNC(const char *) Py_GetCopyright(void);
  PyAPI_FUNC(const char *) Py_GetCompiler(void);
  PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
-Index: Python-2.7.9/Lib/distutils/command/install.py
+Index: Python-2.7.12/Lib/distutils/command/install.py
 ===================================================================
---- Python-2.7.9.orig/Lib/distutils/command/install.py
-+++ Python-2.7.9/Lib/distutils/command/install.py
+--- Python-2.7.12.orig/Lib/distutils/command/install.py
++++ Python-2.7.12/Lib/distutils/command/install.py
 @@ -22,6 +22,8 @@ from site import USER_BASE
  from site import USER_SITE
  
@@ -46,11 +46,11 @@
          'headers': '$base/include/python$py_version_short/$dist_name',
          'scripts': '$base/bin',
          'data'   : '$base',
-Index: Python-2.7.9/Lib/pydoc.py
+Index: Python-2.7.12/Lib/pydoc.py
 ===================================================================
---- Python-2.7.9.orig/Lib/pydoc.py
-+++ Python-2.7.9/Lib/pydoc.py
-@@ -383,7 +383,7 @@ class Doc:
+--- Python-2.7.12.orig/Lib/pydoc.py
++++ Python-2.7.12/Lib/pydoc.py
+@@ -384,7 +384,7 @@ class Doc:
  
          docloc = os.environ.get("PYTHONDOCS",
                                  "http://docs.python.org/library")
@@ -59,10 +59,10 @@
                                 "python"+sys.version[0:3])
          if (isinstance(object, type(os)) and
              (object.__name__ in ('errno', 'exceptions', 'gc', 'imp',
-Index: Python-2.7.9/Lib/site.py
+Index: Python-2.7.12/Lib/site.py
 ===================================================================
---- Python-2.7.9.orig/Lib/site.py
-+++ Python-2.7.9/Lib/site.py
+--- Python-2.7.12.orig/Lib/site.py
++++ Python-2.7.12/Lib/site.py
 @@ -288,13 +288,19 @@ def getsitepackages():
          if sys.platform in ('os2emx', 'riscos'):
              sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
@@ -86,10 +86,10 @@
          if sys.platform == "darwin":
              # for framework builds *only* we add the standard Apple
              # locations.
-Index: Python-2.7.9/Lib/test/test_dl.py
+Index: Python-2.7.12/Lib/test/test_dl.py
 ===================================================================
---- Python-2.7.9.orig/Lib/test/test_dl.py
-+++ Python-2.7.9/Lib/test/test_dl.py
+--- Python-2.7.12.orig/Lib/test/test_dl.py
++++ Python-2.7.12/Lib/test/test_dl.py
 @@ -4,10 +4,11 @@
  import unittest
  from test.test_support import verbose, import_module
@@ -104,10 +104,10 @@
      ('/usr/bin/cygwin1.dll', 'getpid'),
      ('/usr/lib/libc.dylib', 'getpid'),
      ]
-Index: Python-2.7.9/Lib/trace.py
+Index: Python-2.7.12/Lib/trace.py
 ===================================================================
---- Python-2.7.9.orig/Lib/trace.py
-+++ Python-2.7.9/Lib/trace.py
+--- Python-2.7.12.orig/Lib/trace.py
++++ Python-2.7.12/Lib/trace.py
 @@ -754,10 +754,10 @@ def main(argv=None):
                  # should I also call expanduser? (after all, could use $HOME)
  
@@ -121,11 +121,11 @@
                                             "python" + sys.version[:3]))
                  s = os.path.normpath(s)
                  ignore_dirs.append(s)
-Index: Python-2.7.9/Makefile.pre.in
+Index: Python-2.7.12/Makefile.pre.in
 ===================================================================
---- Python-2.7.9.orig/Makefile.pre.in
-+++ Python-2.7.9/Makefile.pre.in
-@@ -87,6 +87,7 @@ PY_CFLAGS=	$(CFLAGS) $(CPPFLAGS) $(CFLAG
+--- Python-2.7.12.orig/Makefile.pre.in
++++ Python-2.7.12/Makefile.pre.in
+@@ -92,6 +92,7 @@ PY_CFLAGS=	$(CFLAGS) $(CPPFLAGS) $(CFLAG
  
  # Machine-dependent subdirectories
  MACHDEP=	@MACHDEP@
@@ -133,7 +133,7 @@
  
  # Multiarch directory (may be empty)
  MULTIARCH=	@MULTIARCH@
-@@ -106,7 +107,7 @@ LIBDIR=		@libdir@
+@@ -111,7 +112,7 @@ LIBDIR=		@libdir@
  MANDIR=		@mandir@
  INCLUDEDIR=	@includedir@
  CONFINCLUDEDIR=	$(exec_prefix)/include
@@ -142,7 +142,7 @@
  
  # Detailed destination directories
  BINLIBDEST=	$(LIBDIR)/python$(VERSION)
-@@ -597,6 +598,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
+@@ -669,6 +670,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
  		-DEXEC_PREFIX='"$(exec_prefix)"' \
  		-DVERSION='"$(VERSION)"' \
  		-DVPATH='"$(VPATH)"' \
@@ -150,7 +150,7 @@
  		-o $@ $(srcdir)/Modules/getpath.c
  
  Modules/python.o: $(srcdir)/Modules/python.c
-@@ -639,7 +641,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
+@@ -720,7 +722,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
  Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)
  
  Python/getplatform.o: $(srcdir)/Python/getplatform.c
@@ -159,25 +159,25 @@
  
  Python/importdl.o: $(srcdir)/Python/importdl.c
  		$(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
-Index: Python-2.7.9/Modules/getpath.c
+Index: Python-2.7.12/Modules/getpath.c
 ===================================================================
---- Python-2.7.9.orig/Modules/getpath.c
-+++ Python-2.7.9/Modules/getpath.c
-@@ -116,9 +116,11 @@
- #define EXEC_PREFIX PREFIX
+--- Python-2.7.12.orig/Modules/getpath.c
++++ Python-2.7.12/Modules/getpath.c
+@@ -100,6 +100,13 @@
+ #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
  #endif
  
 +#define LIB_PYTHON LIB "/python" VERSION
 +
- #ifndef PYTHONPATH
--#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
--              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
++#ifndef PYTHONPATH
 +#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \
-+              EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
- #endif
- 
++        EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
++#endif
++
  #ifndef LANDMARK
-@@ -129,7 +131,7 @@ static char prefix[MAXPATHLEN+1];
+ #define LANDMARK "os.py"
+ #endif
+@@ -108,7 +115,7 @@ static char prefix[MAXPATHLEN+1];
  static char exec_prefix[MAXPATHLEN+1];
  static char progpath[MAXPATHLEN+1];
  static char *module_search_path = NULL;
@@ -186,10 +186,10 @@
  
  static void
  reduce(char *dir)
-Index: Python-2.7.9/Python/getplatform.c
+Index: Python-2.7.12/Python/getplatform.c
 ===================================================================
---- Python-2.7.9.orig/Python/getplatform.c
-+++ Python-2.7.9/Python/getplatform.c
+--- Python-2.7.12.orig/Python/getplatform.c
++++ Python-2.7.12/Python/getplatform.c
 @@ -10,3 +10,13 @@ Py_GetPlatform(void)
  {
  	return PLATFORM;
@@ -204,10 +204,10 @@
 +{
 +	return LIB;
 +}
-Index: Python-2.7.9/Python/sysmodule.c
+Index: Python-2.7.12/Python/sysmodule.c
 ===================================================================
---- Python-2.7.9.orig/Python/sysmodule.c
-+++ Python-2.7.9/Python/sysmodule.c
+--- Python-2.7.12.orig/Python/sysmodule.c
++++ Python-2.7.12/Python/sysmodule.c
 @@ -1437,6 +1437,8 @@ _PySys_Init(void)
                          PyString_FromString(Py_GetCopyright()));
      SET_SYS_FROM_STRING("platform",
@@ -217,11 +217,11 @@
      SET_SYS_FROM_STRING("executable",
                          PyString_FromString(Py_GetProgramFullPath()));
      SET_SYS_FROM_STRING("prefix",
-Index: Python-2.7.9/configure.ac
+Index: Python-2.7.12/configure.ac
 ===================================================================
---- Python-2.7.9.orig/configure.ac
-+++ Python-2.7.9/configure.ac
-@@ -736,6 +736,11 @@ SunOS*)
+--- Python-2.7.12.orig/configure.ac
++++ Python-2.7.12/configure.ac
+@@ -756,6 +756,11 @@ SunOS*)
      ;;
  esac
  
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/nohostlibs.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/nohostlibs.patch
index 8a452e9..078060b 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/nohostlibs.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native/nohostlibs.patch
@@ -2,8 +2,8 @@
 
 2014/12/15
 Rebased for python-2.7.9
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
 Index: Python-2.7.9/setup.py
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native_2.7.11.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native_2.7.11.bb
deleted file mode 100644
index 4c204a4..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native_2.7.11.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-require python.inc
-
-EXTRANATIVEPATH += "bzip2-native"
-DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native"
-PR = "${INC_PR}.1"
-
-SRC_URI += "\
-            file://05-enable-ctypes-cross-build.patch \
-            file://10-distutils-fix-swig-parameter.patch \
-            file://11-distutils-never-modify-shebang-line.patch \
-            file://12-distutils-prefix-is-inside-staging-area.patch \
-            file://debug.patch \
-            file://unixccompiler.patch \
-            file://nohostlibs.patch \
-            file://multilib.patch \
-            file://add-md5module-support.patch \
-            file://builddir.patch \
-            file://parallel-makeinst-create-bindir.patch \
-            file://revert_use_of_sysconfigdata.patch \
-            file://avoid_parallel_make_races_on_pgen.patch \
-           "
-S = "${WORKDIR}/Python-${PV}"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:"
-
-inherit native
-
-RPROVIDES += "python-distutils-native python-compression-native python-textutils-native python-codecs-native python-core-native python-unittest-native"
-
-EXTRA_OECONF_append = " --bindir=${bindir}/${PN}"
-
-EXTRA_OEMAKE = '\
-  BUILD_SYS="" \
-  HOST_SYS="" \
-  LIBC="" \
-  STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
-  STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
-'
-
-do_configure_append() {
-	autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
-}
-
-do_install() {
-	oe_runmake 'DESTDIR=${D}' install
-	install -d ${D}${bindir}/${PN}
-	install -m 0755 Parser/pgen ${D}${bindir}/${PN}
-
-	# Make sure we use /usr/bin/env python
-	for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
-		sed -i -e '1s|^#!.*|#!/usr/bin/env python|' $PYTHSCRIPT
-	done
-
-	# Add a symlink to the native Python so that scripts can just invoke
-	# "nativepython" and get the right one without needing absolute paths
-	# (these often end up too long for the #! parser in the kernel as the
-	# buffer is 128 bytes long).
-	ln -s python-native/python ${D}${bindir}/nativepython
-
-	# We don't want modules in ~/.local being used in preference to those
-	# installed in the native sysroot, so disable user site support.
-	sed -i -e 's,^\(ENABLE_USER_SITE = \).*,\1False,' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-native_2.7.12.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native_2.7.12.bb
new file mode 100644
index 0000000..de83cbd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-native_2.7.12.bb
@@ -0,0 +1,61 @@
+require python.inc
+
+EXTRANATIVEPATH += "bzip2-native"
+DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native expat-native"
+PR = "${INC_PR}.1"
+
+SRC_URI += "\
+            file://05-enable-ctypes-cross-build.patch \
+            file://10-distutils-fix-swig-parameter.patch \
+            file://11-distutils-never-modify-shebang-line.patch \
+            file://0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch \
+            file://debug.patch \
+            file://unixccompiler.patch \
+            file://nohostlibs.patch \
+            file://multilib.patch \
+            file://add-md5module-support.patch \
+            file://builddir.patch \
+            file://parallel-makeinst-create-bindir.patch \
+            file://revert_use_of_sysconfigdata.patch \
+           "
+
+S = "${WORKDIR}/Python-${PV}"
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:"
+
+inherit native
+
+RPROVIDES += "python-distutils-native python-compression-native python-textutils-native python-codecs-native python-core-native python-unittest-native"
+
+EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}"
+
+EXTRA_OEMAKE = '\
+  LIBC="" \
+  STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
+  STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
+'
+
+do_configure_append() {
+	autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
+}
+
+do_install() {
+	oe_runmake 'DESTDIR=${D}' install
+	install -d ${D}${bindir}/${PN}
+	install -m 0755 Parser/pgen ${D}${bindir}/${PN}
+
+	# Make sure we use /usr/bin/env python
+	for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
+		sed -i -e '1s|^#!.*|#!/usr/bin/env python|' $PYTHSCRIPT
+	done
+
+	# Add a symlink to the native Python so that scripts can just invoke
+	# "nativepython" and get the right one without needing absolute paths
+	# (these often end up too long for the #! parser in the kernel as the
+	# buffer is 128 bytes long).
+	ln -s python-native/python ${D}${bindir}/nativepython
+
+	# We don't want modules in ~/.local being used in preference to those
+	# installed in the native sysroot, so disable user site support.
+	sed -i -e 's,^\(ENABLE_USER_SITE = \).*,\1False,' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-nose_1.3.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-nose_1.3.7.bb
index ec6158f..3757f3a 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-nose_1.3.7.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-nose_1.3.7.bb
@@ -5,7 +5,7 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343"
 
-SRC_URI = "http://pypi.python.org/packages/source/n/nose/nose-${PV}.tar.gz"
+SRC_URI = "https://files.pythonhosted.org/packages/source/n/nose/nose-${PV}.tar.gz"
 
 SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b"
 SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h
deleted file mode 100644
index 191e5a1..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#define NPY_HAVE_ENDIAN_H 1
-#define NPY_SIZEOF_SHORT SIZEOF_SHORT
-#define NPY_SIZEOF_INT SIZEOF_INT
-#define NPY_SIZEOF_LONG SIZEOF_LONG
-#define NPY_SIZEOF_FLOAT 4
-#define NPY_SIZEOF_COMPLEX_FLOAT 8
-#define NPY_SIZEOF_DOUBLE 8
-#define NPY_SIZEOF_COMPLEX_DOUBLE 16
-#define NPY_SIZEOF_LONGDOUBLE 16
-#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
-#define NPY_SIZEOF_PY_INTPTR_T 8
-#define NPY_SIZEOF_PY_LONG_LONG 8
-#define NPY_SIZEOF_LONGLONG 8
-#define NPY_NO_SMP 0
-#define NPY_HAVE_DECL_ISNAN
-#define NPY_HAVE_DECL_ISINF
-#define NPY_HAVE_DECL_ISFINITE
-#define NPY_HAVE_DECL_SIGNBIT
-#define NPY_USE_C99_COMPLEX 1
-#define NPY_HAVE_COMPLEX_DOUBLE 1
-#define NPY_HAVE_COMPLEX_FLOAT 1
-#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
-#define NPY_ENABLE_SEPARATE_COMPILATION 1
-#define NPY_USE_C99_FORMATS 1
-#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
-#define NPY_ABI_VERSION 0x01000009
-#define NPY_API_VERSION 0x0000000A
-
-#ifndef __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS 1
-#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/add-glibc-check.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/add-glibc-check.patch
deleted file mode 100644
index 29768f3..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/add-glibc-check.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Dont punish musl for glibc's trignometeric functions problems
-additionally ensure that glibc specific macros are not used
-unconditionally
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-Index: numpy-1.10.4/numpy/core/src/private/npy_config.h
-===================================================================
---- numpy-1.10.4.orig/numpy/core/src/private/npy_config.h
-+++ numpy-1.10.4/numpy/core/src/private/npy_config.h
-@@ -75,10 +75,12 @@
- 
- #if defined(HAVE_FEATURES_H)
- #include <features.h>
-+#ifdef __GLIBC__
- #define TRIG_OK __GLIBC_PREREQ(2, 16)
- #else
- #define TRIG_OK 0
- #endif
-+#endif
- 
- #if !TRIG_OK
- #undef HAVE_CASIN
-Index: numpy-1.10.4/numpy/core/src/npymath/ieee754.c.src
-===================================================================
---- numpy-1.10.4.orig/numpy/core/src/npymath/ieee754.c.src
-+++ numpy-1.10.4/numpy/core/src/npymath/ieee754.c.src
-@@ -612,7 +612,7 @@ void npy_set_floatstatus_invalid(void)
- }
- 
- 
--#elif defined(__GLIBC__) || defined(__APPLE__) || \
-+#elif defined(__linux__) || defined(__APPLE__) || \
-       defined(__CYGWIN__) || defined(__MINGW32__) || \
-       (defined(__FreeBSD__) && (__FreeBSD_version >= 502114))
- #  include <fenv.h>
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h
deleted file mode 100644
index 05d2b8b..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#define NPY_HAVE_ENDIAN_H 1
-#define NPY_SIZEOF_SHORT SIZEOF_SHORT
-#define NPY_SIZEOF_INT SIZEOF_INT
-#define NPY_SIZEOF_LONG SIZEOF_LONG
-#define NPY_SIZEOF_FLOAT 4
-#define NPY_SIZEOF_COMPLEX_FLOAT 8
-#define NPY_SIZEOF_DOUBLE 8
-#define NPY_SIZEOF_COMPLEX_DOUBLE 16
-#define NPY_SIZEOF_LONGDOUBLE 8
-#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 16
-#define NPY_ENABLE_SEPARATE_COMPILATION 1
-#define NPY_SIZEOF_PY_INTPTR_T 4
-#define NPY_SIZEOF_PY_LONG_LONG 8
-#define NPY_SIZEOF_LONGLONG 8
-#define NPY_NO_SMP 0
-#define NPY_HAVE_DECL_ISNAN
-#define NPY_HAVE_DECL_ISINF
-#define NPY_HAVE_DECL_ISFINITE
-#define NPY_HAVE_DECL_SIGNBIT
-#define NPY_USE_C99_COMPLEX 1
-#define NPY_HAVE_COMPLEX_DOUBLE 1
-#define NPY_HAVE_COMPLEX_FLOAT 1
-#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
-#define NPY_USE_C99_FORMATS 1
-#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
-#define NPY_ABI_VERSION 0x01000009
-#define NPY_API_VERSION 0x0000000A
-
-#ifndef __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS 1
-#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h
deleted file mode 100644
index 8e2b5d0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#define NPY_HAVE_ENDIAN_H 1
-#define NPY_SIZEOF_SHORT SIZEOF_SHORT
-#define NPY_SIZEOF_INT SIZEOF_INT
-#define NPY_SIZEOF_LONG SIZEOF_LONG
-#define NPY_SIZEOF_FLOAT 4
-#define NPY_SIZEOF_COMPLEX_FLOAT 8
-#define NPY_SIZEOF_DOUBLE 8
-#define NPY_SIZEOF_COMPLEX_DOUBLE 16
-#define NPY_SIZEOF_LONGDOUBLE 16
-#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
-#define NPY_ENABLE_SEPARATE_COMPILATION 1
-#define NPY_SIZEOF_PY_INTPTR_T 8
-#define NPY_SIZEOF_PY_LONG_LONG 8
-#define NPY_SIZEOF_LONGLONG 8
-#define NPY_NO_SMP 0
-#define NPY_HAVE_DECL_ISNAN
-#define NPY_HAVE_DECL_ISINF
-#define NPY_HAVE_DECL_ISFINITE
-#define NPY_HAVE_DECL_SIGNBIT
-#define NPY_USE_C99_COMPLEX 1
-#define NPY_HAVE_COMPLEX_DOUBLE 1
-#define NPY_HAVE_COMPLEX_FLOAT 1
-#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
-#define NPY_USE_C99_FORMATS 1
-#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
-#define NPY_ABI_VERSION 0x01000009
-#define NPY_API_VERSION 0x0000000A
-
-#ifndef __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS 1
-#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h
deleted file mode 100644
index c4bf654..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* cat ./src.linux-i686-2.5/numpy/core/include/numpy/numpyconfig.h */
-/*
- *  * This file is generated by numpy/core/setup.pyc. DO NOT EDIT 
- *   */
-#define NPY_SIZEOF_SHORT 2 
-#define NPY_SIZEOF_INT 4 
-#define NPY_SIZEOF_LONG 4 
-#define NPY_SIZEOF_FLOAT 4 
-#define NPY_SIZEOF_DOUBLE 8 
-#define NPY_SIZEOF_LONGDOUBLE 12 
-#define NPY_SIZEOF_PY_INTPTR_T 4 
-#define NPY_NO_SMP 0
-
-#define NPY_SIZEOF_LONGLONG 8 
-#define NPY_SIZEOF_PY_LONG_LONG 8 
-/* #define CHAR_BIT 8 */
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h
deleted file mode 100644
index 0f45d5b..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#define NPY_HAVE_ENDIAN_H 1
-#define NPY_SIZEOF_SHORT SIZEOF_SHORT
-#define NPY_SIZEOF_INT SIZEOF_INT
-#define NPY_SIZEOF_LONG SIZEOF_LONG
-#define NPY_SIZEOF_FLOAT 4
-#define NPY_SIZEOF_COMPLEX_FLOAT 8
-#define NPY_SIZEOF_DOUBLE 8
-#define NPY_SIZEOF_COMPLEX_DOUBLE 16
-#define NPY_SIZEOF_LONGDOUBLE 16
-#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
-#define NPY_ENABLE_SEPARATE_COMPILATION 1
-#define NPY_SIZEOF_PY_INTPTR_T 4
-#define NPY_SIZEOF_PY_LONG_LONG 8
-#define NPY_SIZEOF_LONGLONG 8
-#define NPY_NO_SMP 0
-#define NPY_HAVE_DECL_ISNAN
-#define NPY_HAVE_DECL_ISINF
-#define NPY_HAVE_DECL_ISFINITE
-#define NPY_HAVE_DECL_SIGNBIT
-#define NPY_USE_C99_COMPLEX 1
-#define NPY_HAVE_COMPLEX_DOUBLE 1
-#define NPY_HAVE_COMPLEX_FLOAT 1
-#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
-#define NPY_USE_C99_FORMATS 1
-#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
-#define NPY_ABI_VERSION 0x01000009
-#define NPY_API_VERSION 0x0000000A
-
-#ifndef __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS 1
-#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h
deleted file mode 100644
index 8e2b5d0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#define NPY_HAVE_ENDIAN_H 1
-#define NPY_SIZEOF_SHORT SIZEOF_SHORT
-#define NPY_SIZEOF_INT SIZEOF_INT
-#define NPY_SIZEOF_LONG SIZEOF_LONG
-#define NPY_SIZEOF_FLOAT 4
-#define NPY_SIZEOF_COMPLEX_FLOAT 8
-#define NPY_SIZEOF_DOUBLE 8
-#define NPY_SIZEOF_COMPLEX_DOUBLE 16
-#define NPY_SIZEOF_LONGDOUBLE 16
-#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32
-#define NPY_ENABLE_SEPARATE_COMPILATION 1
-#define NPY_SIZEOF_PY_INTPTR_T 8
-#define NPY_SIZEOF_PY_LONG_LONG 8
-#define NPY_SIZEOF_LONGLONG 8
-#define NPY_NO_SMP 0
-#define NPY_HAVE_DECL_ISNAN
-#define NPY_HAVE_DECL_ISINF
-#define NPY_HAVE_DECL_ISFINITE
-#define NPY_HAVE_DECL_SIGNBIT
-#define NPY_USE_C99_COMPLEX 1
-#define NPY_HAVE_COMPLEX_DOUBLE 1
-#define NPY_HAVE_COMPLEX_FLOAT 1
-#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1
-#define NPY_USE_C99_FORMATS 1
-#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
-#define NPY_ABI_VERSION 0x01000009
-#define NPY_API_VERSION 0x0000000A
-
-#ifndef __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS 1
-#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy_1.10.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy_1.10.4.bb
deleted file mode 100644
index 8a562dc..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-numpy_1.10.4.bb
+++ /dev/null
@@ -1,102 +0,0 @@
-SUMMARY = "A sophisticated Numeric Processing Package for Python"
-SECTION = "devel/python"
-LICENSE = "PSF"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9f4e88b5748e8313caaf33d081ce65a3"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/numpy/numpy-${PV}.tar.gz \
-           file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
-           file://remove-build-path-in-comments.patch \
-           file://add-glibc-check.patch \
-           ${CONFIGFILESURI} "
-
-CONFIGFILESURI ?= ""
-
-CONFIGFILESURI_aarch64 = " \
-    file://config.h \
-    file://_numpyconfig.h \
-"
-CONFIGFILESURI_arm = " \
-    file://config.h \
-    file://numpyconfig.h \
-"
-CONFIGFILESURI_armeb = " \
-    file://config.h \
-    file://numpyconfig.h \
-"
-CONFIGFILESURI_mipsel = " \
-    file://config.h \
-    file://numpyconfig.h \
-"
-CONFIGFILESURI_x86 = " \
-    file://config.h \
-    file://numpyconfig.h \
-"
-CONFIGFILESURI_x86-64 = " \
-    file://config.h \
-    file://_numpyconfig.h \
-"
-CONFIGFILESURI_mips = " \
-    file://config.h \
-    file://_numpyconfig.h \
-"
-CONFIGFILESURI_powerpc = " \
-    file://config.h \
-    file://_numpyconfig.h \
-"
-CONFIGFILESURI_powerpc64 = " \
-    file://config.h \
-    file://_numpyconfig.h \
-"
-CONFIGFILESURI_mips64 = " \
-    file://config.h \
-    file://_numpyconfig.h \
-"
-CONFIGFILESURI_mips64n32 = " \
-    file://config.h \
-    file://_numpyconfig.h \
-"
-
-S = "${WORKDIR}/numpy-${PV}"
-
-inherit distutils
-
-# Make the build fail and replace *config.h with proper one
-# This is a ugly, ugly hack - Koen
-do_compile_prepend_class-target() {
-    BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-    ${STAGING_BINDIR_NATIVE}/python-native/python setup.py build ${DISTUTILS_BUILD_ARGS} || \
-    true
-    cp ${WORKDIR}/*config.h ${S}/build/$(ls ${S}/build | grep src)/numpy/core/include/numpy/
-}
-
-FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a"
-
-SRC_URI[md5sum] = "90bb9034652cefbada19cf7d141a6a61"
-SRC_URI[sha256sum] = "f7f91842056a7cf680b0eaf8cefc5e46c69e2521e651128d2e6aaaccec8652ae"
-
-# install what is needed for numpy.test()
-RDEPENDS_${PN} = "python-unittest \
-                  python-difflib \
-                  python-pprint \
-                  python-pickle \
-                  python-shell \
-                  python-nose \
-                  python-doctest \
-                  python-datetime \
-                  python-distutils \
-                  python-misc \
-                  python-mmap \
-                  python-netclient \
-                  python-numbers \
-                  python-pydoc \
-                  python-pkgutil \
-                  python-email \
-                  python-subprocess \
-                  python-compression \
-                  python-ctypes \
-                  python-threading \
-"
-
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pexpect_4.0.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pexpect_4.0.1.bb
deleted file mode 100644
index 7f142a3..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pexpect_4.0.1.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "A Pure Python Expect like Module for Python"
-HOMEPAGE = "http://pexpect.readthedocs.org/"
-SECTION = "devel/python"
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=66c2378a96b307d56bfb3a9e58edafa8"
-
-SRC_URI = "https://pypi.python.org/packages/source/p/pexpect/pexpect-${PV}.tar.gz"
-SRC_URI[md5sum] = "056df81e6ca7081f1015b4b147b977b7"
-SRC_URI[sha256sum] = "232795ebcaaf2e120396dbbaa3a129eda51757eeaae1911558f4ef8ee414fc6c"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pexpect"
-
-S = "${WORKDIR}/pexpect-${PV}"
-
-inherit distutils
-
-RDEPENDS_${PN} = "\
-    python-core \
-    python-io \
-    python-terminal \
-    python-resource \
-    python-fcntl \
-"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pexpect_4.2.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pexpect_4.2.0.bb
new file mode 100644
index 0000000..82e0fa8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pexpect_4.2.0.bb
@@ -0,0 +1,28 @@
+SUMMARY = "A Pure Python Expect like Module for Python"
+HOMEPAGE = "http://pexpect.readthedocs.org/"
+SECTION = "devel/python"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c7a725251880af8c6a148181665385b"
+
+SRCNAME = "pexpect"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "8071ec5df0f3d515daedafad672d1632"
+SRC_URI[sha256sum] = "bf6816b8cc8d301a499e7adf338828b39bc7548eb64dbed4dd410ed93d95f853"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pexpect"
+
+S = "${WORKDIR}/pexpect-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "\
+    python-core \
+    python-io \
+    python-terminal \
+    python-resource \
+    python-fcntl \
+    python-ptyprocess \
+"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-ptyprocess_0.5.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-ptyprocess_0.5.1.bb
new file mode 100644
index 0000000..931e5a7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-ptyprocess_0.5.1.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Run a subprocess in a pseudo terminal"
+HOMEPAGE = "http://ptyprocess.readthedocs.io/en/latest/"
+SECTION = "devel/python"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cfdcd51fa7d5808da4e74346ee394490"
+
+SRCNAME = "ptyprocess"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "94e537122914cc9ec9c1eadcd36e73a1"
+SRC_URI[sha256sum] = "0530ce63a9295bfae7bd06edc02b6aa935619f486f0f1dc0972f516265ee81a6"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/ptyprocess"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "\
+    python-core \
+"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pycairo_1.10.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pycairo_1.10.0.bb
deleted file mode 100644
index 70fe25c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pycairo_1.10.0.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Python bindings for the Cairo canvas library"
-HOMEPAGE = "http://cairographics.org/pycairo"
-BUGTRACKER = "http://bugs.freedesktop.org"
-SECTION = "python-devel"
-LICENSE = "LGPLv2.1 & MPL-1.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f2e071ab72978431b294a0d696327421 \
-                    file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \
-                    file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325"
-
-# cairo >= 1.8.8
-DEPENDS = "cairo"
-PR = "r2"
-
-SRC_URI = "http://cairographics.org/releases/py2cairo-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "20337132c4ab06c1146ad384d55372c5"
-SRC_URI[sha256sum] = "d30439f06c2ec1a39e27464c6c828b6eface3b22ee17b2de05dc409e429a7431"
-
-S = "${WORKDIR}/py2cairo-${PV}"
-
-inherit distutils pkgconfig
-
-BBCLASSEXTEND = "native"
-
-do_configure() {
-	BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} ./waf configure --prefix=${D}${prefix} --libdir=${D}${libdir}
-}
-
-do_compile() {
-	./waf build ${PARALLEL_MAKE}
-}
-
-do_install() {
-	./waf install
-	sed \
-		-e 's:@prefix@:${prefix}:' \
-		-e 's:@VERSION@:${PV}:' \
-		-e 's:@includedir@:${includedir}:' \
-		pycairo.pc.in > pycairo.pc
-	install -m 0644 pycairo.pc ${D}${libdir}/pkgconfig/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pygobject_3.18.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pygobject_3.18.2.bb
deleted file mode 100644
index a9871fe..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pygobject_3.18.2.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Python GObject bindings"
-SECTION = "devel/python"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-
-inherit autotools pkgconfig gnomebase distutils-base gobject-introspection
-
-DEPENDS += "python glib-2.0 gnome-common"
-
-SRCNAME="pygobject"
-SRC_URI = " \
-    http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
-    file://0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch \
-"
-
-SRC_URI[md5sum] = "0a956f3e785e23b0f136832f2e57a862"
-SRC_URI[sha256sum] = "2a3cad1517916b74e131e6002c3824361aee0671ffb0d55ded119477fc1c2c5f"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-BBCLASSEXTEND = "native"
-
-EXTRA_OECONF = "--disable-cairo --with-python=python2.7"
-
-RDEPENDS_${PN} += "python-setuptools python-importlib"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb
deleted file mode 100644
index e8ef1aa..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require python-pyrex_${PV}.bb
-inherit native pythonnative
-DEPENDS = "python-native"
-RDEPENDS_${PN} = ""
-PR = "r3"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch
deleted file mode 100644
index c58c328..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Pending
-
-Index: Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
-===================================================================
---- Pyrex-0.9.8.4.orig/Pyrex/Distutils/extension.py
-+++ Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
-@@ -15,7 +15,7 @@ except ImportError:
-     warnings = None
- 
- class Extension(_Extension.Extension):
--    _Extension.Extension.__doc__ + \
-+    _Extension.Extension.__doc__ or "" + \
-     """pyrex_include_dirs : [string]
-         list of directories to search for Pyrex header files (.pxd) (in
-         Unix form for portability)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex_0.9.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex_0.9.9.bb
deleted file mode 100644
index c4dd2e6..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pyrex_0.9.9.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Language for writing Python extension modules"
-DESCRIPTION = "Pyrex is a language specially designed for writing Python extension modules. \
-It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
-and the messy, low-level world of C."
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=771d472f53f933033f57eeee7808e5bd"
-SRCNAME = "Pyrex"
-PR = "r4"
-
-SRC_URI = "\
-  http://www.cosc.canterbury.ac.nz/greg.ewing/python/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
-  file://pyrex-fix-optimized-mode.patch \
-"
-
-SRC_URI[md5sum] = "515dee67d15d4393841e2d60e8341947"
-SRC_URI[sha256sum] = "5f87df06831d0b3412eb4bc9d3fc2ee7bfae1b913d7da8c23ab2bf5699fb6b50"
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit distutils
-
-FILES_${PN} += "${datadir}${base_libdir}/${PYTHON_DIR}/site-packages/Pyrex/Compiler/Lexicon.pickle"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons-native_2.4.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons-native_2.5.0.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-scons-native_2.4.1.bb
rename to import-layers/yocto-poky/meta/recipes-devtools/python/python-scons-native_2.5.0.bb
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons_2.4.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons_2.4.1.bb
deleted file mode 100644
index 096cf5c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons_2.4.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Software Construction tool (make/autotools replacement)"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=23bc1530c55e9f0d1b709056bcea237d"
-SRCNAME = "scons"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/scons/scons-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "9a0ddf33d9839f04380e0fae87cc4b40"
-SRC_URI[sha256sum] = "8fc4f42928c69bcbb33e1be94b646f2c700b659693fabc778c192d4d22f753a7"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/scons/files/scons/"
-UPSTREAM_CHECK_REGEX = "/scons/(?P<pver>(\d+[\.\-_]*)+)/"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit distutils
-
-RDEPENDS_${PN} = "\
-  python-fcntl \
-  python-io \
-  "
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons_2.5.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons_2.5.0.bb
new file mode 100644
index 0000000..8543c41
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-scons_2.5.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Software Construction tool (make/autotools replacement)"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3a885dff6d14e4cd876d9008a09a42de"
+SRCNAME = "scons"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "bda5530a70a41a7831d83c8b191c021e"
+SRC_URI[sha256sum] = "01f1b3d6023516a8e1b5e77799e5a82a23b32953b1102d339059ffeca8600493"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/SCons/"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "\
+  python-fcntl \
+  python-io \
+  python-json \
+  python-subprocess \
+  "
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools.inc
index 0917e88..92ca9a0 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools.inc
@@ -1,21 +1,21 @@
 SUMMARY = "Download, build, install, upgrade, and uninstall Python packages"
 HOMEPAGE = "https://pypi.python.org/pypi/setuptools"
 SECTION = "devel/python"
-LICENSE = "PSF | ZPL-2.0"
+LICENSE = "MIT"
 
-LIC_FILES_CHKSUM = "file://setup.py;beginline=78;endline=78;md5=8a314270dd7a8dbca741775415f1716e"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=134;endline=134;md5=3e8df024d6c1442d18e84acf8fbbc475"
 
 SRCNAME = "setuptools"
 
-SRC_URI = "http://pypi.python.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI = "https://files.pythonhosted.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "c5a7d90c1e0acf8c4ec5c2bf31bc25b5"
-SRC_URI[sha256sum] = "214bf29933f47cf25e6faa569f710731728a07a19cae91ea64f826051f68a8cf"
+SRC_URI[md5sum] = "869f3029dcc66a64ba39875e2a2f044a"
+SRC_URI[sha256sum] = "19aad19471052d5daefe96f2c1fa2e88dcdb17488bf8708d7e6356881ea833cb"
 
 UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/setuptools"
 
 S = "${WORKDIR}/${SRCNAME}-${PV}"
 
 do_install_prepend() {
-    install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages
+    install -d ${D}${PYTHON_SITEPACKAGES_DIR}
 }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools_19.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools_19.4.bb
deleted file mode 100644
index c172039..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools_19.4.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-require python-setuptools.inc
-
-PROVIDES = "python-distribute"
-
-DEPENDS += "python"
-DEPENDS_class-native += "python-native"
-
-inherit distutils
-
-DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${libdir}/${PYTHON_DIR}/site-packages"
-
-RDEPENDS_${PN} = "\
-  python-stringold \
-  python-email \
-  python-shell \
-  python-distutils \
-  python-compression \
-  python-pkgutil \
-  python-plistlib \
-  python-numbers \
-  python-html \
-  python-netserver \
-  python-ctypes \
-  python-subprocess \
-  python-unittest \
-  python-compile \
-"
-
-RDEPENDS_${PN}_class-native = "\
-  python-distutils \
-  python-compression \
-"
-
-RREPLACES_${PN} = "python-distribute"
-RPROVIDES_${PN} = "python-distribute"
-RCONFLICTS_${PN} = "python-distribute"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools_22.0.5.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools_22.0.5.bb
new file mode 100644
index 0000000..526474c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-setuptools_22.0.5.bb
@@ -0,0 +1,38 @@
+require python-setuptools.inc
+
+PROVIDES = "python-distribute"
+
+DEPENDS += "python"
+DEPENDS_class-native += "python-native"
+
+inherit distutils
+
+DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}"
+
+RDEPENDS_${PN} = "\
+  python-stringold \
+  python-email \
+  python-shell \
+  python-distutils \
+  python-compression \
+  python-pkgutil \
+  python-plistlib \
+  python-numbers \
+  python-html \
+  python-netserver \
+  python-ctypes \
+  python-subprocess \
+  python-unittest \
+  python-compile \
+"
+
+RDEPENDS_${PN}_class-native = "\
+  python-distutils \
+  python-compression \
+"
+
+RREPLACES_${PN} = "python-distribute"
+RPROVIDES_${PN} = "python-distribute"
+RCONFLICTS_${PN} = "python-distribute"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-six.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-six.inc
new file mode 100644
index 0000000..bd12fa9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-six.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Python 2 and 3 compatibility library"
+HOMEPAGE = "https://pypi.python.org/pypi/six/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6f00d4a50713fa859858dd9abaa35b21"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/s/six/six-${PV}.tar.gz"
+SRC_URI[md5sum] = "34eed507548117b2ab523ab14b2f8b55"
+SRC_URI[sha256sum] = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/six/"
+UPSTREAM_CHECK_REGEX = "/six/(?P<pver>(\d+[\.\-_]*)+)"
+
+BBCLASSEXTEND = "native nativesdk"
+
+S = "${WORKDIR}/six-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-six_1.10.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-six_1.10.0.bb
new file mode 100644
index 0000000..4350485
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-six_1.10.0.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-six.inc
+
+RDEPENDS_${PN} += "python-io"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch
new file mode 100644
index 0000000..2f14a12
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch
@@ -0,0 +1,38 @@
+channels/rpm_sys: use md5sum instead of mtime as the digest
+
+Use the internal getFileDigest() function (which defaults to md5) instead of
+mtime for getting the file digest. On some systems mtime proved to be
+unreliable because of delayed update. This caused smart to miss rpm db updates
+and thus get its understanding of installed packages out of sync.
+
+Upstream-Status: Pending
+
+Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+---
+ smart/channels/rpm_sys.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/smart/channels/rpm_sys.py b/smart/channels/rpm_sys.py
+index b9fda27..6f1fe94 100644
+--- a/smart/channels/rpm_sys.py
++++ b/smart/channels/rpm_sys.py
+@@ -22,6 +22,7 @@
+ from smart.backends.rpm.header import RPMDBLoader
+ from smart.backends.rpm.base import getTS, rpm_join_dbpath
+ from smart.channel import PackageChannel
++from smart.util.filetools import getFileDigest
+ from smart import *
+ import os
+ 
+@@ -35,7 +36,7 @@ class RPMSysChannel(PackageChannel):
+         dbdir = rpm_join_dbpath(sysconf.get("rpm-root", "/"),
+                             sysconf.get("rpm-dbpath", "var/lib/rpm"))
+         path = os.path.join(dbdir, "Packages")
+-        digest = os.path.getmtime(path)
++        digest = getFileDigest(path)
+         if digest == self._digest:
+             return True
+         self.removeLoaders()
+-- 
+2.6.6
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-add-deugging-when-targetpath-is-empty.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-add-deugging-when-targetpath-is-empty.patch
new file mode 100644
index 0000000..5e80804
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-add-deugging-when-targetpath-is-empty.patch
@@ -0,0 +1,47 @@
+From 01e51afd03131947f8d74b9a23fdbc0078249499 Mon Sep 17 00:00:00 2001
+From: Mariano Lopez <mariano.lopez@linux.intel.com>
+Date: Wed, 3 Aug 2016 07:47:09 +0000
+Subject: [PATCH] fetcher.py: Add debugging when targetpath is empty
+
+There are several errors when openining files or manipulating
+path strings, those errors point targetpath passed to
+setSucceeded() is empty. This patch won't solve the problems,
+but will add debugging to give an idea why is failing.
+
+Upstream-Status: Inappropriate [debugging]
+
+Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
+---
+ smart/fetcher.py | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/smart/fetcher.py b/smart/fetcher.py
+index dd3ff6b..64aa979 100644
+--- a/smart/fetcher.py
++++ b/smart/fetcher.py
+@@ -594,6 +594,22 @@ class FetchItem(object):
+                 self._eta = None
+ 
+     def setSucceeded(self, targetpath, fetchedsize=0):
++        # It seems the in some odd cases targetpath here
++        # is empty, this will lead to bugs in several places
++        if not targetpath:
++            import traceback
++            tb_str = ""
++            for threadId, stack in sys._current_frames().items():
++                tb_str += '\nThreadID: %s' % threadId
++                for filename, lineno, name, line in traceback.extract_stack(stack):
++                    tb_str += '\nFile: "%s", line %d, in %s' % (filename, lineno, name)
++                    if line:
++                        tb_str += "\n  %s" % line.strip()
++            error_string = ["No file path specified",
++                            "URL: %s" % self._url,
++                            "Status: %s" % self._status,
++                            "Traceback: %s" % tb_str]
++            raise Error, _("\n".join(error_string))
+         if self._status is not FAILED:
+             self._status = SUCCEEDED
+             self._targetpath = targetpath
+-- 
+2.6.6
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch
index ec98e03..5aedc88 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch
@@ -36,7 +36,7 @@
          finally:
              del getTS.ts
              cb.grabOutput(False)
-+            if probs and sysconf.has("attempt-install", soft=True):
++            if (probs is not None) and sysconf.has("attempt-install", soft=True):
 +                def remove_conflict(pkgNEVR):
 +                    for key in changeset.keys():
 +                        if pkgNEVR == str(key):
@@ -67,8 +67,8 @@
 +                        retry = 0
 +
              prog.setDone()
--            if probs:
-+            if probs and (not retry):
+-            if probs is not None:
++            if (probs is not None) and (not retry):
                  raise Error, "\n".join([x[0] for x in probs])
              prog.stop()
 +            if retry and len(changeset):
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-channel-remove-all.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-channel-remove-all.patch
new file mode 100644
index 0000000..da23e7c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-channel-remove-all.patch
@@ -0,0 +1,33 @@
+From 6d2363a705697f615d9e5af5d6703b291e618b46 Mon Sep 17 00:00:00 2001
+From: Daniel Klauer <daniel.klauer@gin.de>
+Date: Thu, 12 May 2016 17:55:01 +0200
+Subject: [PATCH] Fix channel command --remove-all option parsing
+
+Option.take_action() stores a list of options given for validation later.
+It strips leading dashes and turns remaining dashes into underscores.
+This list is what ensure_action() will compare its arguments against,
+thus we must use underscores here.
+
+Upstream-Status: Pending
+
+Signed-off-by: Daniel Klauer <daniel.klauer@gin.de>
+---
+ smart/commands/channel.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/smart/commands/channel.py b/smart/commands/channel.py
+index 108f3f1..6234f69 100644
+--- a/smart/commands/channel.py
++++ b/smart/commands/channel.py
+@@ -164,7 +164,7 @@ def main(ctrl, opts):
+     opts.check_args_of_option("edit", 0)
+     opts.check_args_of_option("enable", -1)
+     opts.check_args_of_option("disable", -1)
+-    opts.ensure_action("channel", ["add", "set", "remove", "remove-all",
++    opts.ensure_action("channel", ["add", "set", "remove", "remove_all",
+                        "list", "show", "yaml", "enable", "disable"])
+     opts.check_remaining_args()
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch
deleted file mode 100644
index b82265b..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-Improve error reporting in smart
-
-Add code to check proper command line arguments for various
-smart commands. Exit with error if erroneous/additional arguments
-are given in the command line.
-
-Upstream-Status: Pending
-
-Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com>
-
-diff --git a/smart/util/optparse.py b/smart/util/optparse.py
-index 6fff1bc..f445a3b 100644
---- a/smart/util/optparse.py
-+++ b/smart/util/optparse.py
-@@ -70,6 +70,8 @@ import sys, os
- import types
- import textwrap
- from gettext import gettext as _
-+from smart import Error
-+import re
- 
- def _repr(self):
-     return "<%s at 0x%x: %s>" % (self.__class__.__name__, id(self), self)
-@@ -710,6 +712,12 @@ class Option:
-             self.action, self.dest, opt, value, values, parser)
- 
-     def take_action(self, action, dest, opt, value, values, parser):
-+        # Keep all the options in the command line in the '_given_opts' array
-+        # This will be used later to validate the command line
-+        given_opts = getattr(parser.values, "_given_opts", [])
-+        user_opt = re.sub(r"^\-*", "", opt).replace("-", "_")
-+        given_opts.append(user_opt)
-+        setattr(parser.values, "_given_opts", given_opts)
-         if action == "store":
-             setattr(values, dest, value)
-         elif action == "store_const":
-@@ -821,6 +829,54 @@ class Values:
-             setattr(self, attr, value)
-         return getattr(self, attr)
- 
-+    # Check if the given option has the specified number of arguments
-+    # Raise an error if the option has an invalid number of arguments
-+    # A negative number for 'nargs' means "at least |nargs| arguments are needed"
-+    def check_args_of_option(self, opt, nargs, err=None):
-+        given_opts = getattr(self, "_given_opts", [])
-+        if not opt in given_opts:
-+            return
-+        values = getattr(self, opt, [])
-+        if type(values) != type([]):
-+            return
-+        if nargs < 0:
-+            nargs = -nargs
-+            if len(values) >= nargs:
-+                return
-+            if not err:
-+                if nargs == 1:
-+                    err = _("Option '%s' requires at least one argument") % opt
-+                else:
-+                    err = _("Option '%s' requires at least %d arguments") % (opt, nargs)
-+            raise Error, err
-+        elif nargs == 0:
-+            if len( values ) == 0:
-+                return
-+            raise Error, err
-+        else:
-+            if len(values) == nargs:
-+                return
-+            if not err:
-+                if nargs == 1:
-+                    err = _("Option '%s' requires one argument") % opt
-+                else:
-+                    err = _("Option '%s' requires %d arguments") % (opt, nargs)
-+            raise Error, err
-+
-+    # Check that at least one of the options in 'actlist' was given as an argument
-+    # to the command 'cmdname'
-+    def ensure_action(self, cmdname, actlist):
-+        given_opts = getattr(self, "_given_opts", [])
-+        for action in actlist:
-+            if action in given_opts:
-+                return
-+        raise Error, _("No action specified for command '%s'") % cmdname
-+
-+    # Check if there are any other arguments left after parsing the command line and
-+    # raise an error if such arguments are found
-+    def check_remaining_args(self):
-+        if self.args:
-+            raise Error, _("Invalid argument(s) '%s'" % str(self.args))
- 
- class OptionContainer:
- 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-locale.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-locale.patch
new file mode 100644
index 0000000..0f1dfb9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-locale.patch
@@ -0,0 +1,27 @@
+rpm or commands run by rpm can use output which isn't strictly acsii such
+as quotation characters around expression which are character 0xe2.
+
+Use utf-8 as an encoding rather than whatever the system suggests to
+ensure smart copes with this rather than erroring with unicode errors.
+
+RP 2016/5/19
+Upstream-Status: Pending
+
+
+Index: git/smart/backends/rpm/pm.py
+===================================================================
+--- git.orig/smart/backends/rpm/pm.py
++++ git/smart/backends/rpm/pm.py
+@@ -32,11 +32,7 @@ from smart.pm import PackageManager
+ from smart import sysconf, iface, Error, _
+ 
+ 
+-try:
+-    ENCODING = locale.getpreferredencoding()
+-except locale.Error:
+-    ENCODING = "ascii"
+-
++ENCODING = "utf-8"
+ 
+ def get_public_key(header):
+     return header.sprintf("%|DSAHEADER?{%{DSAHEADER:pgpsig}}:"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-rpm-transaction-failure-check.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-rpm-transaction-failure-check.patch
new file mode 100644
index 0000000..bb8c3af
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-rpm-transaction-failure-check.patch
@@ -0,0 +1,57 @@
+From 0c55d7e18f40465e95e8e4bf22af01f5d4477d3c Mon Sep 17 00:00:00 2001
+From: Daniel Klauer <daniel.klauer@gin.de>
+Date: Wed, 11 May 2016 17:22:49 +0200
+Subject: [PATCH] rpm: Don't ignore transaction error with empty problems list
+
+SmartPM could misinterpret RPM transaction error as success,
+if ts.run() (RPM Python API) returns an empty problems list,
+because of incorrect check for None which treated empty list
+to be the same as None when it has different meaning.
+
+ts.run() returns:
+* None in case of success
+* problems list in case of error, may be empty
+(look at rpmts_Run() in rpm-5.4.14/python/rpmts-py.c [1])
+
+"if mylist" is not good enough to check for error here, because it will
+treat an empty list as "false" because its len() == 0 [2].
+
+ts.check() seems to be different (it's ok for it to return an empty list),
+but for consistency it should be made clear that it can return either None,
+an empty list or a non-empty list.
+
+[1] http://rpm5.org/cvs/fileview?f=rpm/python/rpmts-py.c&v=1.111.2.3
+[2] https://docs.python.org/2/library/stdtypes.html#truth-value-testing
+
+Upstream-Status: Pending
+
+Signed-off-by: Daniel Klauer <daniel.klauer@gin.de>
+---
+ smart/backends/rpm/pm.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/smart/backends/rpm/pm.py b/smart/backends/rpm/pm.py
+index 9bbd952..635f726 100644
+--- a/smart/backends/rpm/pm.py
++++ b/smart/backends/rpm/pm.py
+@@ -208,7 +208,7 @@ class RPMPackageManager(PackageManager):
+         force = sysconf.get("rpm-force", False)
+         if not force:
+             probs = ts.check()
+-            if probs:
++            if (probs is not None) and (len(probs) != 0):
+                 problines = []
+                 for prob in probs:
+                     name1 = "%s-%s-%s" % prob[0]
+@@ -247,7 +247,7 @@ class RPMPackageManager(PackageManager):
+             del getTS.ts
+             cb.grabOutput(False)
+             prog.setDone()
+-            if probs:
++            if probs is not None:
+                 raise Error, "\n".join([x[0] for x in probs])
+             prog.stop()
+
+--
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch
deleted file mode 100644
index fefb29a..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-RPM5 has removed support for RPMVSF_NOSIGNATURES
-
-Patch smart to no longer use this flag
-
-Upstream-Status: Pending
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py
---- a/smart/backends/rpm/base.py
-+++ b/smart/backends/rpm/base.py
-@@ -63,11 +63,11 @@ def getTS(new=False):
-         if sysconf.get("rpm-dbpath"):
-             rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath"))
-         getTS.ts = rpm.ts(getTS.root)
--        if not sysconf.get("rpm-check-signatures", False):
--            if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
--                getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
--            else:
--                raise Error, _("rpm requires checking signatures")
-+        #if not sysconf.get("rpm-check-signatures", False):
-+        #    if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
-+        #        getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
-+        #    else:
-+        #        raise Error, _("rpm requires checking signatures")
-         rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm")
-         dbdir = rpm_join_dbpath(getTS.root, rpm_dbpath)
-         if not os.path.isdir(dbdir):
-@@ -89,11 +89,11 @@ def getTS(new=False):
-         if sysconf.get("rpm-dbpath"):
-             rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath"))
-         ts = rpm.ts(getTS.root)
--        if not sysconf.get("rpm-check-signatures", False):
--            if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
--                ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
--            else:
--                raise Error, _("rpm requires checking signatures")
-+        #if not sysconf.get("rpm-check-signatures", False):
-+        #    if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
-+        #        ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
-+        #    else:
-+        #        raise Error, _("rpm requires checking signatures")
-         return ts
-     else:
-         return getTS.ts
-diff --git a/smart/plugins/yumchannelsync.py b/smart/plugins/yumchannelsync.py
---- a/smart/plugins/yumchannelsync.py
-+++ b/smart/plugins/yumchannelsync.py
-@@ -56,8 +56,8 @@ def _getreleasever():
- 
-     rpmroot = sysconf.get("rpm-root", "/")
-     ts = rpmUtils.transaction.initReadOnlyTransaction(root=rpmroot)
--    if hasattr(rpm, '_RPMVSF_NOSIGNATURES') and hasattr(rpm, '_RPMVSF_NODIGESTS'):
--        ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS))
-+    #if hasattr(rpm, '_RPMVSF_NOSIGNATURES') and hasattr(rpm, '_RPMVSF_NODIGESTS'):
-+    #    ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS))
-     releasever = None
-     # HACK: we're hard-coding the most used distros, will add more if needed
-     idx = ts.dbMatch('provides', 'fedora-release')
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-support-check-signatures.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-support-check-signatures.patch
new file mode 100644
index 0000000..4067a90
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-support-check-signatures.patch
@@ -0,0 +1,112 @@
+From 5b79e28bd70a0ec5b34c5ff19b66cbbdd1e48835 Mon Sep 17 00:00:00 2001
+From: Haiqing Bai <Haiqing.Bai@windriver.com>
+Date: Fri, 18 Mar 2016 13:34:07 +0800
+Subject: [PATCH] Make smartpm to support check signatures of rpmv5.
+
+The original support for 'rpm-check-signatures' has been
+disabled for the RPMv5 does not support '_RPMVSF_NOSIGNATURES'
+now. This fix replaces the '_RPMVSF_NOSIGNATURES' with
+rpm VS flags set:RPMVSF_NODSAHEADER|RPMVSF_NORSAHEADER|
+RPMVSF_NODSA|RPMVSF_NORSA.
+
+Upstream-Status: Pending
+Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
+---
+ smart/backends/rpm/base.py      | 43 +++++++++++++++++++++++++++++++----------
+ smart/backends/rpm/pm.py        |  2 +-
+ smart/plugins/yumchannelsync.py |  5 +++--
+ 3 files changed, 37 insertions(+), 13 deletions(-)
+
+diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py
+index 85f4d49..dbd6165 100644
+--- a/smart/backends/rpm/base.py
++++ b/smart/backends/rpm/base.py
+@@ -63,11 +63,23 @@ def getTS(new=False):
+         if sysconf.get("rpm-dbpath"):
+             rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath"))
+         getTS.ts = rpm.ts(getTS.root)
+-        if not sysconf.get("rpm-check-signatures", False):
+-            if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
+-                getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
+-            else:
+-                raise Error, _("rpm requires checking signatures")
++
++        # _RPMVSF_NOSIGNATURES is not supported in RPMv5, so here uses
++        # RPMVSF_NODSAHEADER|RPMVSF_NORSAHEADER|RPMVSF_NODSA|RPMVSF_NORSA
++        # to replace '_RPMVSF_NOSIGNATURES' to continue to support check
++        # rpm signatures
++
++        #if not sysconf.get("rpm-check-signatures", False):
++        #    if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
++        #        getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
++        #    else:
++        #        raise Error, _("rpm requires checking signatures")
++        if sysconf.get("rpm-check-signatures") == False:
++            getTS.ts.setVSFlags(rpm.RPMVSF_NODSAHEADER|rpm.RPMVSF_NORSAHEADER|\
++                                rpm.RPMVSF_NODSA|rpm.RPMVSF_NORSA)
++        else:
++            getTS.ts.setVSFlags(0)
++
+         rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm")
+         dbdir = rpm_join_dbpath(getTS.root, rpm_dbpath)
+         if not os.path.isdir(dbdir):
+@@ -89,11 +101,22 @@ def getTS(new=False):
+         if sysconf.get("rpm-dbpath"):
+             rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath"))
+         ts = rpm.ts(getTS.root)
+-        if not sysconf.get("rpm-check-signatures", False):
+-            if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
+-                ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
+-            else:
+-                raise Error, _("rpm requires checking signatures")
++
++        # _RPMVSF_NOSIGNATURES is not supported in RPMv5, so here uses
++        # RPMVSF_NODSAHEADER|RPMVSF_NORSAHEADER|RPMVSF_NODSA|RPMVSF_NORSA
++        # to replace '_RPMVSF_NOSIGNATURES' to continue to support check
++        # rpm signatures
++
++        #if not sysconf.get("rpm-check-signatures", False):
++        #    if hasattr(rpm, '_RPMVSF_NOSIGNATURES'):
++        #        ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
++        #    else:
++        #        raise Error, _("rpm requires checking signatures")
++        if sysconf.get("rpm-check-signatures") == False:
++            ts.setVSFlags(rpm.RPMVSF_NODSAHEADER|rpm.RPMVSF_NORSAHEADER|\
++                                rpm.RPMVSF_NODSA|rpm.RPMVSF_NORSA)
++        else:
++            ts.setVSFlags(0)
+         return ts
+     else:
+         return getTS.ts
+diff --git a/smart/backends/rpm/pm.py b/smart/backends/rpm/pm.py
+index b57a844..7b651b5 100644
+--- a/smart/backends/rpm/pm.py
++++ b/smart/backends/rpm/pm.py
+@@ -180,7 +180,7 @@ class RPMPackageManager(PackageManager):
+                 fd = os.open(path, os.O_RDONLY)
+                 try:
+                     h = ts.hdrFromFdno(fd)
+-                    if sysconf.get("rpm-check-signatures", False):
++                    if sysconf.get("rpm-check-signatures", True):
+                          if get_public_key(h) == '(none)':
+                              raise rpm.error('package is not signed')
+                 except rpm.error, e:
+diff --git a/smart/plugins/yumchannelsync.py b/smart/plugins/yumchannelsync.py
+index f8107e6..2dc5482 100644
+--- a/smart/plugins/yumchannelsync.py
++++ b/smart/plugins/yumchannelsync.py
+@@ -56,8 +56,9 @@ def _getreleasever():
+ 
+     rpmroot = sysconf.get("rpm-root", "/")
+     ts = rpmUtils.transaction.initReadOnlyTransaction(root=rpmroot)
+-    if hasattr(rpm, '_RPMVSF_NOSIGNATURES') and hasattr(rpm, '_RPMVSF_NODIGESTS'):
+-        ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS))
++    #_RPMVSF_NOSIGNATURES is not supported in RPMv5
++    #if hasattr(rpm, '_RPMVSF_NOSIGNATURES') and hasattr(rpm, '_RPMVSF_NODIGESTS'):
++    #    ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS))
+     releasever = None
+     # HACK: we're hard-coding the most used distros, will add more if needed
+     idx = ts.dbMatch('provides', 'fedora-release')
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm_git.bb
index d9a908d..861910c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smartpm_git.bb
@@ -13,16 +13,20 @@
 
 SRC_URI = "\
           git://github.com/smartpm/smart.git \
-          file://smartpm-rpm5-nodig.patch \
           file://smart-recommends.patch \
-          file://smart-improve-error-reporting.patch \
           file://smart-channelsdir.patch \
+          file://smart-rpm-transaction-failure-check.patch \
           file://smart-attempt.patch \
           file://smart-attempt-fix.patch \
           file://smart-add-for-rpm-ignoresize-check.patch \
           file://smart-already-installed-message.patch \
           file://smart-set-noprogress-for-pycurl.patch \
           file://smart-cache.py-getPackages-matches-name-version.patch \
+          file://smart-channel-remove-all.patch \
+          file://smart-locale.patch \
+          file://smartpm-rpm5-support-check-signatures.patch \
+          file://smart-add-deugging-when-targetpath-is-empty.patch \
+          file://channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch \
          "
 
 SRCREV = "407a7eca766431257dcd1da15175cc36a1bb22d0"
@@ -53,41 +57,41 @@
 
 do_install_append() {
    # We don't support the following items
-   rm -rf ${D}${libdir}/python*/site-packages/smart/backends/slack
-   rm -rf ${D}${libdir}/python*/site-packages/smart/backends/arch
-   rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt
+   rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/smart/backends/slack
+   rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/smart/backends/arch
+   rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/smart/interfaces/qt
 
    # Temporary, debian support in OE is missing the python module
-   rm -f ${D}${libdir}/python*/site-packages/smart/plugins/aptchannelsync.py*
-   rm -f ${D}${libdir}/python*/site-packages/smart/plugins/debdir.py*
-   rm -rf ${D}${libdir}/python*/site-packages/smart/backends/deb
+   rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/aptchannelsync.py*
+   rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/debdir.py*
+   rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/smart/backends/deb
 
    # Disable automatic channel detection
-   rm -f ${D}${libdir}/python*/site-packages/smart/plugins/detectsys.py*
+   rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/detectsys.py*
 
    # Disable landscape support
-   rm -f ${D}${libdir}/python*/site-packages/smart/plugins/landscape.py*
+   rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/landscape.py*
 
    # Disable urpmi channel support
-   rm -f ${D}${libdir}/python*/site-packages/smart/plugins/urpmichannelsync.py*
+   rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/urpmichannelsync.py*
 
    # Disable yum channel support
-   rm -f ${D}${libdir}/python*/site-packages/smart/plugins/yumchannelsync.py*
+   rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/yumchannelsync.py*
 
    # Disable zypper channel support
-   rm -f ${D}${libdir}/python*/site-packages/smart/plugins/zyppchannelsync.py*
+   rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/zyppchannelsync.py*
 
    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'rpm', 'rpm', '', d)}" ]; then
-      rm -f ${D}${libdir}/python*/site-packages/smart/plugins/rpmdir.py*
-      rm -rf ${D}${libdir}/python*/site-packages/smart/backends/rpm
+      rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/smart/plugins/rpmdir.py*
+      rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/smart/backends/rpm
    fi
 
    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'qt4', 'qt4', '', d)}" ]; then
-      rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt4
+      rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/smart/interfaces/qt4
    fi
 
    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'gtk', '', d)}" ]; then
-      rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/gtk
+      rm -rf ${D}${PYTHON_SITEPACKAGES_DIR}/smart/interfaces/gtk
    fi
 }
 
@@ -127,10 +131,10 @@
 
 FILES_smartpm = "${bindir}/smart"
 
-FILES_${PN}-backend-rpm = "${libdir}/python*/site-packages/smart/backends/rpm"
+FILES_${PN}-backend-rpm = "${PYTHON_SITEPACKAGES_DIR}/smart/backends/rpm"
 
-FILES_${PN}-interface-qt4 = "${libdir}/python*/site-packages/smart/interfaces/qt4"
-FILES_${PN}-interface-gtk = "${libdir}/python*/site-packages/smart/interfaces/gtk"
+FILES_${PN}-interface-qt4 = "${PYTHON_SITEPACKAGES_DIR}/smart/interfaces/qt4"
+FILES_${PN}-interface-gtk = "${PYTHON_SITEPACKAGES_DIR}/smart/interfaces/gtk"
 FILES_${PN}-interface-images = "${datadir}/${baselib}/python*/site-packages/smart/interfaces/images"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smmap.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smmap.inc
new file mode 100644
index 0000000..d67e6b5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smmap.inc
@@ -0,0 +1,19 @@
+SUMMARY = "Python implementation of a sliding window memory map manager"
+DESCRIPTION = "A pure Python implementation of a sliding memory map to \
+help unifying memory mapped access on 32 and 64 bit systems and to help \
+managing resources more efficiently."
+HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/s/smmap/smmap-${PV}.tar.gz"
+SRC_URI[md5sum] = "d7932d5ace206bf4ae15198cf36fb6ab"
+SRC_URI[sha256sum] = "0e2b62b497bd5f0afebc002eda4d90df9d209c30ef257e8673c90a6b5c119d62"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/smmap/"
+UPSTREAM_CHECK_REGEX = "/smmap/(?P<pver>(\d+[\.\-_]*)+)"
+
+S = "${WORKDIR}/smmap-${PV}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smmap_0.9.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smmap_0.9.0.bb
index 5f9cf45..c118dd8 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python-smmap_0.9.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python-smmap_0.9.0.bb
@@ -1,23 +1,5 @@
-SUMMARY = "Python implementation of a sliding window memory map manager"
-DESCRIPTION = "A pure Python implementation of a sliding memory map to \
-help unifying memory mapped access on 32 and 64 bit systems and to help \
-managing resources more efficiently."
-HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
-SECTION = "devel/python"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
-
-SRC_URI = "http://pypi.python.org/packages/source/s/smmap/smmap-${PV}.tar.gz"
-SRC_URI[md5sum] = "d7932d5ace206bf4ae15198cf36fb6ab"
-SRC_URI[sha256sum] = "0e2b62b497bd5f0afebc002eda4d90df9d209c30ef257e8673c90a6b5c119d62"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/smmap/"
-UPSTREAM_CHECK_REGEX = "/smmap/(?P<pver>(\d+[\.\-_]*)+)"
-
-S = "${WORKDIR}/smmap-${PV}"
+require python-smmap.inc
 
 inherit setuptools
 
 RDEPENDS_${PN} += "python-codecs python-mmap python-lang"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python.inc b/import-layers/yocto-poky/meta/recipes-devtools/python/python.inc
index f4818c6..79a431c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python.inc
@@ -5,12 +5,12 @@
 # bump this on every change in contrib/python/generate-manifest-2.7.py
 INC_PR = "r1"
 
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dd98d01d471fac8d8dbdd975229dba03"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6b60258130e4ed10d3101517eb5b9385"
 
 SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz"
 
-SRC_URI[md5sum] = "1dbcc848b4cd8399a8199d000f9f823c"
-SRC_URI[sha256sum] = "962b4c45af50124ea61f11a30deb4342fc0bc21126790fa1d7f6c79809413f46"
+SRC_URI[md5sum] = "57dffcee9cee8bb2ab5f82af1d8e9a69"
+SRC_URI[sha256sum] = "d7837121dd5652a05fef807c361909d255d173280c4e1a4ded94d73d80a1f978"
 
 # python recipe is actually python 2.x
 # also, exclude pre-releases for both python 2.x and 3.x
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch
new file mode 100644
index 0000000..502f849
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch
@@ -0,0 +1,51 @@
+From 4cdf2e9df13c6327fcc94d53e4953005543aef3d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 6 Apr 2016 17:43:02 +0300
+Subject: [PATCH 01/10] distutils: set the prefix to be inside staging
+ directory
+
+The proper prefix is inside our staging area.
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+Signed-off-by: Phil Blundell <philb@gnu.org>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Lib/distutils/sysconfig.py | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
+index de7da1d..f3aacf7 100644
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -75,7 +75,7 @@ def get_python_inc(plat_specific=0, prefix=None):
+     sys.exec_prefix -- i.e., ignore 'plat_specific'.
+     """
+     if prefix is None:
+-        prefix = plat_specific and EXEC_PREFIX or PREFIX
++        prefix = os.environ['STAGING_INCDIR'].rstrip('include')
+ 
+     if os.name == "posix":
+         if python_build:
+@@ -115,12 +115,16 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+     If 'prefix' is supplied, use it instead of sys.prefix or
+     sys.exec_prefix -- i.e., ignore 'plat_specific'.
+     """
++    lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1]
+     if prefix is None:
+-        prefix = plat_specific and EXEC_PREFIX or PREFIX
++        if plat_specific:
++            prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename)
++        else:
++            prefix = PREFIX
+ 
+     if os.name == "posix":
+         libpython = os.path.join(prefix,
+-                                 "lib", "python" + get_python_version())
++                                 lib_basename, "python" + get_python_version())
+         if standard_lib:
+             return libpython
+         else:
+-- 
+2.8.0.rc3
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch
index 1257ca6..b2a8c3b 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch
@@ -7,13 +7,13 @@
 Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
 
 Rebased for python-2.7.9
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
-Index: Python-2.7.9/Makefile.pre.in
+Index: Python-2.7.12/Makefile.pre.in
 ===================================================================
---- Python-2.7.9.orig/Makefile.pre.in
-+++ Python-2.7.9/Makefile.pre.in
-@@ -234,6 +234,7 @@ LIBFFI_INCLUDEDIR=	@LIBFFI_INCLUDEDIR@
+--- Python-2.7.12.orig/Makefile.pre.in
++++ Python-2.7.12/Makefile.pre.in
+@@ -246,6 +246,7 @@ LIBFFI_INCLUDEDIR=	@LIBFFI_INCLUDEDIR@
  ##########################################################################
  # Parser
  PGEN=		Parser/pgen$(EXE)
@@ -21,7 +21,7 @@
  
  PSRCS=		\
  		Parser/acceler.c \
-@@ -445,7 +446,7 @@ $(BUILDPYTHON):	Modules/python.o $(LIBRA
+@@ -513,7 +514,7 @@ $(BUILDPYTHON):	Modules/python.o $(LIBRA
  			$(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
  
  platform: $(BUILDPYTHON) pybuilddir.txt
@@ -30,16 +30,16 @@
  
  # Create build directory and generate the sysconfig build-time data there.
  # pybuilddir.txt contains the name of the build dir and is used for
-@@ -611,7 +612,7 @@ Modules/pwdmodule.o: $(srcdir)/Modules/p
- $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS)
- 		@$(MKDIR_P) Include
- 		$(MAKE) $(PGEN)
--		$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
-+		$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
- $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS)
- 		$(MAKE) $(GRAMMAR_H)
- 		touch $(GRAMMAR_C)
-@@ -1043,27 +1044,27 @@ libinstall:	build_all $(srcdir)/Lib/$(PL
+@@ -684,7 +685,7 @@ $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGEN)
+ 	@$(MKDIR_P) Include
+ 	# Avoid copying the file onto itself for an in-tree build
+ 	if test "$(cross_compiling)" != "yes"; then \
+-		$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C); \
++		$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C); \
+ 	else \
+ 		cp $(srcdir)/Include/graminit.h $(GRAMMAR_H).tmp; \
+ 		mv $(GRAMMAR_H).tmp $(GRAMMAR_H); \
+@@ -1133,27 +1134,27 @@ libinstall:	build_all $(srcdir)/Lib/$(PL
  			$(DESTDIR)$(LIBDEST)/distutils/tests ; \
  	fi
  	PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
@@ -73,11 +73,11 @@
  
  # Create the PLATDIR source directory, if one wasn't distributed..
  $(srcdir)/Lib/$(PLATDIR):
-Index: Python-2.7.9/setup.py
+Index: Python-2.7.12/setup.py
 ===================================================================
---- Python-2.7.9.orig/setup.py
-+++ Python-2.7.9/setup.py
-@@ -334,6 +334,7 @@ class PyBuildExt(build_ext):
+--- Python-2.7.12.orig/setup.py
++++ Python-2.7.12/setup.py
+@@ -350,6 +350,7 @@ class PyBuildExt(build_ext):
              self.failed.append(ext.name)
              self.announce('*** WARNING: renaming "%s" since importing it'
                            ' failed: %s' % (ext.name, why), level=3)
@@ -85,7 +85,7 @@
              assert not self.inplace
              basename, tail = os.path.splitext(ext_filename)
              newname = basename + "_failed" + tail
-@@ -558,6 +559,9 @@ class PyBuildExt(build_ext):
+@@ -574,6 +575,9 @@ class PyBuildExt(build_ext):
  
          # XXX Omitted modules: gl, pure, dl, SGI-specific modules
  
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch
index e452cb6..435b319 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch
@@ -11,7 +11,7 @@
 
 2011/09/29
 Rebased for python 2.7.2
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 
 Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/CVE-2016-5636.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/CVE-2016-5636.patch
new file mode 100644
index 0000000..9a37471
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/CVE-2016-5636.patch
@@ -0,0 +1,44 @@
+
+# HG changeset patch
+# User Benjamin Peterson <benjamin@python.org>
+# Date 1453357424 28800
+# Node ID 985fc64c60d6adffd1138b6cc46df388ca91ca5d
+# Parent  7ec954b9fc54448a35b56d271340ba109eb381b9
+prevent buffer overflow in get_data (closes #26171)
+
+Upstream-Status: Backport
+https://hg.python.org/cpython/rev/985fc64c60d6
+
+CVE: CVE-2016-5636
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+Index: Python-2.7.11/Misc/NEWS
+===================================================================
+--- Python-2.7.11.orig/Misc/NEWS
++++ Python-2.7.11/Misc/NEWS
+@@ -7,6 +7,9 @@ What's New in Python 2.7.11?
+ 
+ *Release date: 2015-12-05*
+ 
++- Issue #26171: Fix possible integer overflow and heap corruption in
++  zipimporter.get_data().
++
+ Library
+ -------
+ 
+Index: Python-2.7.11/Modules/zipimport.c
+===================================================================
+--- Python-2.7.11.orig/Modules/zipimport.c
++++ Python-2.7.11/Modules/zipimport.c
+@@ -895,6 +895,11 @@ get_data(char *archive, PyObject *toc_en
+         PyMarshal_ReadShortFromFile(fp);        /* local header size */
+     file_offset += l;           /* Start of file data */
+ 
++    if (data_size > LONG_MAX - 1) {
++        fclose(fp);
++        PyErr_NoMemory();
++        return NULL;
++    }
+     raw_data = PyString_FromStringAndSize((char *)NULL, compress == 0 ?
+                                           data_size : data_size + 1);
+     if (raw_data == NULL) {
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/avoid_parallel_make_races_on_pgen.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/avoid_parallel_make_races_on_pgen.patch
index e9bae32..8012245 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python/avoid_parallel_make_races_on_pgen.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/avoid_parallel_make_races_on_pgen.patch
@@ -4,8 +4,8 @@
 
 - Implements Richard Purdie's idea
 
-Signed-Off-By: Richard Purdie <richard.purdie@linuxfoundation.org>
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
 Index: Python-2.7.9/Makefile.pre.in
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch
index e4262d9..5f73093 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch
@@ -4,15 +4,15 @@
 This patch makes the native python binary modules findable
 in the install process of the host python.
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 Date: 2012/03/14
 
 Updated for python 2.7.3
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 Date: 2012/05/01
 
 Rebased for python-2.7.9
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
 
 Index: Python-2.7.9/Lib/sysconfig.py
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/multilib.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/multilib.patch
index 0bfa0d2..b169133 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python/multilib.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/multilib.patch
@@ -1,11 +1,11 @@
 Rebased for python-2.7.9
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
-Index: Python-2.7.9/configure.ac
+Index: Python-2.7.12/configure.ac
 ===================================================================
---- Python-2.7.9.orig/configure.ac
-+++ Python-2.7.9/configure.ac
-@@ -736,6 +736,10 @@ SunOS*)
+--- Python-2.7.12.orig/configure.ac
++++ Python-2.7.12/configure.ac
+@@ -756,6 +756,10 @@ SunOS*)
      ;;
  esac
  
@@ -16,10 +16,10 @@
  
  AC_SUBST(LIBRARY)
  AC_MSG_CHECKING(LIBRARY)
-Index: Python-2.7.9/Include/pythonrun.h
+Index: Python-2.7.12/Include/pythonrun.h
 ===================================================================
---- Python-2.7.9.orig/Include/pythonrun.h
-+++ Python-2.7.9/Include/pythonrun.h
+--- Python-2.7.12.orig/Include/pythonrun.h
++++ Python-2.7.12/Include/pythonrun.h
 @@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void);
  /* In their own files */
  PyAPI_FUNC(const char *) Py_GetVersion(void);
@@ -28,10 +28,10 @@
  PyAPI_FUNC(const char *) Py_GetCopyright(void);
  PyAPI_FUNC(const char *) Py_GetCompiler(void);
  PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
-Index: Python-2.7.9/Lib/distutils/command/install.py
+Index: Python-2.7.12/Lib/distutils/command/install.py
 ===================================================================
---- Python-2.7.9.orig/Lib/distutils/command/install.py
-+++ Python-2.7.9/Lib/distutils/command/install.py
+--- Python-2.7.12.orig/Lib/distutils/command/install.py
++++ Python-2.7.12/Lib/distutils/command/install.py
 @@ -22,6 +22,8 @@ from site import USER_BASE
  from site import USER_SITE
  
@@ -50,10 +50,10 @@
          'headers': '$base/include/python$py_version_short/$dist_name',
          'scripts': '$base/bin',
          'data'   : '$base',
-Index: Python-2.7.9/Lib/distutils/sysconfig.py
+Index: Python-2.7.12/Lib/distutils/sysconfig.py
 ===================================================================
---- Python-2.7.9.orig/Lib/distutils/sysconfig.py
-+++ Python-2.7.9/Lib/distutils/sysconfig.py
+--- Python-2.7.12.orig/Lib/distutils/sysconfig.py
++++ Python-2.7.12/Lib/distutils/sysconfig.py
 @@ -119,8 +119,11 @@ def get_python_lib(plat_specific=0, stan
          prefix = plat_specific and EXEC_PREFIX or PREFIX
  
@@ -68,11 +68,11 @@
          if standard_lib:
              return libpython
          else:
-Index: Python-2.7.9/Lib/pydoc.py
+Index: Python-2.7.12/Lib/pydoc.py
 ===================================================================
---- Python-2.7.9.orig/Lib/pydoc.py
-+++ Python-2.7.9/Lib/pydoc.py
-@@ -383,7 +383,7 @@ class Doc:
+--- Python-2.7.12.orig/Lib/pydoc.py
++++ Python-2.7.12/Lib/pydoc.py
+@@ -384,7 +384,7 @@ class Doc:
  
          docloc = os.environ.get("PYTHONDOCS",
                                  "http://docs.python.org/library")
@@ -81,10 +81,10 @@
                                 "python"+sys.version[0:3])
          if (isinstance(object, type(os)) and
              (object.__name__ in ('errno', 'exceptions', 'gc', 'imp',
-Index: Python-2.7.9/Lib/site.py
+Index: Python-2.7.12/Lib/site.py
 ===================================================================
---- Python-2.7.9.orig/Lib/site.py
-+++ Python-2.7.9/Lib/site.py
+--- Python-2.7.12.orig/Lib/site.py
++++ Python-2.7.12/Lib/site.py
 @@ -288,13 +288,18 @@ def getsitepackages():
          if sys.platform in ('os2emx', 'riscos'):
              sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
@@ -107,10 +107,10 @@
          if sys.platform == "darwin":
              # for framework builds *only* we add the standard Apple
              # locations.
-Index: Python-2.7.9/Lib/sysconfig.py
+Index: Python-2.7.12/Lib/sysconfig.py
 ===================================================================
---- Python-2.7.9.orig/Lib/sysconfig.py
-+++ Python-2.7.9/Lib/sysconfig.py
+--- Python-2.7.12.orig/Lib/sysconfig.py
++++ Python-2.7.12/Lib/sysconfig.py
 @@ -7,10 +7,10 @@ from os.path import pardir, realpath
  
  _INSTALL_SCHEMES = {
@@ -139,10 +139,10 @@
          'include': '{userbase}/include/python{py_version_short}',
          'scripts': '{userbase}/bin',
          'data'   : '{userbase}',
-Index: Python-2.7.9/Lib/test/test_dl.py
+Index: Python-2.7.12/Lib/test/test_dl.py
 ===================================================================
---- Python-2.7.9.orig/Lib/test/test_dl.py
-+++ Python-2.7.9/Lib/test/test_dl.py
+--- Python-2.7.12.orig/Lib/test/test_dl.py
++++ Python-2.7.12/Lib/test/test_dl.py
 @@ -4,10 +4,11 @@
  import unittest
  from test.test_support import verbose, import_module
@@ -157,11 +157,11 @@
      ('/usr/bin/cygwin1.dll', 'getpid'),
      ('/usr/lib/libc.dylib', 'getpid'),
      ]
-Index: Python-2.7.9/Lib/test/test_site.py
+Index: Python-2.7.12/Lib/test/test_site.py
 ===================================================================
---- Python-2.7.9.orig/Lib/test/test_site.py
-+++ Python-2.7.9/Lib/test/test_site.py
-@@ -241,12 +241,16 @@ class HelperFunctionsTests(unittest.Test
+--- Python-2.7.12.orig/Lib/test/test_site.py
++++ Python-2.7.12/Lib/test/test_site.py
+@@ -246,12 +246,16 @@ class HelperFunctionsTests(unittest.Test
              self.assertEqual(dirs[2], wanted)
          elif os.sep == '/':
              # OS X non-framwework builds, Linux, FreeBSD, etc
@@ -181,10 +181,10 @@
          else:
              # other platforms
              self.assertEqual(len(dirs), 2)
-Index: Python-2.7.9/Lib/trace.py
+Index: Python-2.7.12/Lib/trace.py
 ===================================================================
---- Python-2.7.9.orig/Lib/trace.py
-+++ Python-2.7.9/Lib/trace.py
+--- Python-2.7.12.orig/Lib/trace.py
++++ Python-2.7.12/Lib/trace.py
 @@ -754,10 +754,10 @@ def main(argv=None):
                  # should I also call expanduser? (after all, could use $HOME)
  
@@ -198,11 +198,11 @@
                                             "python" + sys.version[:3]))
                  s = os.path.normpath(s)
                  ignore_dirs.append(s)
-Index: Python-2.7.9/Makefile.pre.in
+Index: Python-2.7.12/Makefile.pre.in
 ===================================================================
---- Python-2.7.9.orig/Makefile.pre.in
-+++ Python-2.7.9/Makefile.pre.in
-@@ -87,6 +87,7 @@ PY_CFLAGS=	$(CFLAGS) $(CPPFLAGS) $(CFLAG
+--- Python-2.7.12.orig/Makefile.pre.in
++++ Python-2.7.12/Makefile.pre.in
+@@ -92,6 +92,7 @@ PY_CFLAGS=	$(CFLAGS) $(CPPFLAGS) $(CFLAG
  
  # Machine-dependent subdirectories
  MACHDEP=	@MACHDEP@
@@ -210,7 +210,7 @@
  
  # Multiarch directory (may be empty)
  MULTIARCH=	@MULTIARCH@
-@@ -106,7 +107,7 @@ LIBDIR=		@libdir@
+@@ -111,7 +112,7 @@ LIBDIR=		@libdir@
  MANDIR=		@mandir@
  INCLUDEDIR=	@includedir@
  CONFINCLUDEDIR=	$(exec_prefix)/include
@@ -219,7 +219,7 @@
  
  # Detailed destination directories
  BINLIBDEST=	$(LIBDIR)/python$(VERSION)
-@@ -598,6 +599,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
+@@ -670,6 +671,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
  		-DEXEC_PREFIX='"$(exec_prefix)"' \
  		-DVERSION='"$(VERSION)"' \
  		-DVPATH='"$(VPATH)"' \
@@ -227,7 +227,7 @@
  		-o $@ $(srcdir)/Modules/getpath.c
  
  Modules/python.o: $(srcdir)/Modules/python.c
-@@ -640,7 +642,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
+@@ -721,7 +723,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
  Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)
  
  Python/getplatform.o: $(srcdir)/Python/getplatform.c
@@ -236,25 +236,25 @@
  
  Python/importdl.o: $(srcdir)/Python/importdl.c
  		$(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
-Index: Python-2.7.9/Modules/getpath.c
+Index: Python-2.7.12/Modules/getpath.c
 ===================================================================
---- Python-2.7.9.orig/Modules/getpath.c
-+++ Python-2.7.9/Modules/getpath.c
-@@ -116,9 +116,11 @@
- #define EXEC_PREFIX PREFIX
+--- Python-2.7.12.orig/Modules/getpath.c
++++ Python-2.7.12/Modules/getpath.c
+@@ -100,6 +100,13 @@
+ #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
  #endif
  
 +#define LIB_PYTHON LIB "/python" VERSION
 +
- #ifndef PYTHONPATH
--#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
--              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
++#ifndef PYTHONPATH
 +#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \
 +              EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
- #endif
- 
++#endif
++
  #ifndef LANDMARK
-@@ -129,7 +131,7 @@ static char prefix[MAXPATHLEN+1];
+ #define LANDMARK "os.py"
+ #endif
+@@ -108,7 +115,7 @@ static char prefix[MAXPATHLEN+1];
  static char exec_prefix[MAXPATHLEN+1];
  static char progpath[MAXPATHLEN+1];
  static char *module_search_path = NULL;
@@ -263,10 +263,10 @@
  
  static void
  reduce(char *dir)
-Index: Python-2.7.9/Python/getplatform.c
+Index: Python-2.7.12/Python/getplatform.c
 ===================================================================
---- Python-2.7.9.orig/Python/getplatform.c
-+++ Python-2.7.9/Python/getplatform.c
+--- Python-2.7.12.orig/Python/getplatform.c
++++ Python-2.7.12/Python/getplatform.c
 @@ -10,3 +10,13 @@ Py_GetPlatform(void)
  {
  	return PLATFORM;
@@ -281,10 +281,10 @@
 +{
 +	return LIB;
 +}
-Index: Python-2.7.9/Python/sysmodule.c
+Index: Python-2.7.12/Python/sysmodule.c
 ===================================================================
---- Python-2.7.9.orig/Python/sysmodule.c
-+++ Python-2.7.9/Python/sysmodule.c
+--- Python-2.7.12.orig/Python/sysmodule.c
++++ Python-2.7.12/Python/sysmodule.c
 @@ -1437,6 +1437,8 @@ _PySys_Init(void)
                          PyString_FromString(Py_GetCopyright()));
      SET_SYS_FROM_STRING("platform",
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python/python-fix-CVE-2016-1000110.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python/python-fix-CVE-2016-1000110.patch
new file mode 100644
index 0000000..97888e2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python/python-fix-CVE-2016-1000110.patch
@@ -0,0 +1,162 @@
+From cb25fbd5abc0f4eb07dbb8ea819e9c26bda4fc99 Mon Sep 17 00:00:00 2001
+From: Senthil Kumaran <senthil@uthcode.com>
+Date: Sat, 30 Jul 2016 05:49:53 -0700
+Subject: [PATCH] python: fix CVE-2016-1000110
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Prevent HTTPoxy attack (CVE-2016-1000110)
+
+Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which
+indicates that the script is in CGI mode.
+
+Issue reported and patch contributed by Rémi Rampin.
+
+Backport patch from https://hg.python.org/cpython/rev/ba915d561667/
+
+Upstream-Status: Backport
+CVE: CVE-2016-1000110
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ Doc/howto/urllib2.rst   |  5 +++++
+ Doc/library/urllib.rst  | 10 ++++++++++
+ Doc/library/urllib2.rst |  5 +++++
+ Lib/test/test_urllib.py | 12 ++++++++++++
+ Lib/urllib.py           |  9 +++++++++
+ Misc/ACKS               |  1 +
+ Misc/NEWS               |  4 ++++
+ 7 files changed, 46 insertions(+)
+
+diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst
+index 6bb06d4..5cf2c0c 100644
+--- a/Doc/howto/urllib2.rst
++++ b/Doc/howto/urllib2.rst
+@@ -525,6 +525,11 @@ setting up a `Basic Authentication`_ handler: ::
+     through a proxy.  However, this can be enabled by extending urllib2 as
+     shown in the recipe [#]_.
+ 
++.. note::
++
++    ``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; see
++    the documentation on :func:`~urllib.getproxies`.
++
+ 
+ Sockets and Layers
+ ==================
+diff --git a/Doc/library/urllib.rst b/Doc/library/urllib.rst
+index 3b5dc16..bddcba9 100644
+--- a/Doc/library/urllib.rst
++++ b/Doc/library/urllib.rst
+@@ -295,6 +295,16 @@ Utility functions
+    If both lowercase and uppercase environment variables exist (and disagree),
+    lowercase is preferred.
+ 
++    .. note::
++
++        If the environment variable ``REQUEST_METHOD`` is set, which usually
++        indicates your script is running in a CGI environment, the environment
++        variable ``HTTP_PROXY`` (uppercase ``_PROXY``) will be ignored. This is
++        because that variable can be injected by a client using the "Proxy:"
++        HTTP header. If you need to use an HTTP proxy in a CGI environment,
++        either use ``ProxyHandler`` explicitly, or make sure the variable name
++        is in lowercase (or at least the ``_proxy`` suffix).
++
+ .. note::
+     urllib also exposes certain utility functions like splittype, splithost and
+     others parsing URL into various components. But it is recommended to use
+diff --git a/Doc/library/urllib2.rst b/Doc/library/urllib2.rst
+index 8a4c80e..b808b98 100644
+--- a/Doc/library/urllib2.rst
++++ b/Doc/library/urllib2.rst
+@@ -229,6 +229,11 @@ The following classes are provided:
+ 
+    To disable autodetected proxy pass an empty dictionary.
+ 
++    .. note::
++
++       ``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set;
++       see the documentation on :func:`~urllib.getproxies`.
++
+ 
+ .. class:: HTTPPasswordMgr()
+ 
+diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
+index 434d533..27a1d38 100644
+--- a/Lib/test/test_urllib.py
++++ b/Lib/test/test_urllib.py
+@@ -170,6 +170,18 @@ class ProxyTests(unittest.TestCase):
+         self.assertTrue(urllib.proxy_bypass_environment('anotherdomain.com:8888'))
+         self.assertTrue(urllib.proxy_bypass_environment('newdomain.com:1234'))
+ 
++    def test_proxy_cgi_ignore(self):
++        try:
++            self.env.set('HTTP_PROXY', 'http://somewhere:3128')
++            proxies = urllib.getproxies_environment()
++            self.assertEqual('http://somewhere:3128', proxies['http'])
++            self.env.set('REQUEST_METHOD', 'GET')
++            proxies = urllib.getproxies_environment()
++            self.assertNotIn('http', proxies)
++        finally:
++            self.env.unset('REQUEST_METHOD')
++            self.env.unset('HTTP_PROXY')
++
+     def test_proxy_bypass_environment_host_match(self):
+         bypass = urllib.proxy_bypass_environment
+         self.env.set('NO_PROXY',
+diff --git a/Lib/urllib.py b/Lib/urllib.py
+index 139fab9..c3ba2c9 100644
+--- a/Lib/urllib.py
++++ b/Lib/urllib.py
+@@ -1380,12 +1380,21 @@ def getproxies_environment():
+     If you need a different way, you can pass a proxies dictionary to the
+     [Fancy]URLopener constructor.
+     """
++    # Get all variables
+     proxies = {}
+     for name, value in os.environ.items():
+         name = name.lower()
+         if value and name[-6:] == '_proxy':
+             proxies[name[:-6]] = value
+ 
++    # CVE-2016-1000110 - If we are running as CGI script, forget HTTP_PROXY
++    # (non-all-lowercase) as it may be set from the web server by a "Proxy:"
++    # header from the client
++    # If "proxy" is lowercase, it will still be used thanks to the next block
++    if 'REQUEST_METHOD' in os.environ:
++        proxies.pop('http', None)
++
++    # Get lowercase variables
+     for name, value in os.environ.items():
+         if name[-6:] == '_proxy':
+             name = name.lower()
+diff --git a/Misc/ACKS b/Misc/ACKS
+index ee3a465..9c374b7 100644
+--- a/Misc/ACKS
++++ b/Misc/ACKS
+@@ -1121,6 +1121,7 @@ Burton Radons
+ Jeff Ramnani
+ Varpu Rantala
+ Brodie Rao
++Rémi Rampin
+ Senko Rasic
+ Antti Rasinen
+ Nikolaus Rath
+diff --git a/Misc/NEWS b/Misc/NEWS
+index 4ab3a70..cc2f65b 100644
+--- a/Misc/NEWS
++++ b/Misc/NEWS
+@@ -187,6 +187,10 @@ Library
+ - Issue #26644: Raise ValueError rather than SystemError when a negative
+   length is passed to SSLSocket.recv() or read().
+ 
++- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
++  HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates
++  that the script is in CGI mode.
++
+ - Issue #23804: Fix SSL recv(0) and read(0) methods to return zero bytes
+   instead of up to 1024.
+ 
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-async_0.6.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-async_0.6.2.bb
new file mode 100644
index 0000000..54a30f5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-async_0.6.2.bb
@@ -0,0 +1,6 @@
+require python-async.inc
+
+inherit setuptools3
+
+RDEPENDS_${PN} += "python3-threading python3-lang"
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-dbus_1.2.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-dbus_1.2.4.bb
new file mode 100644
index 0000000..de5a01c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-dbus_1.2.4.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Python bindings for the DBus inter-process communication system"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0b83047ce9e948b67c0facc5f233476a"
+DEPENDS = "expat dbus dbus-glib virtual/libintl"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \
+"
+
+SRC_URI[md5sum] = "7372a588c83a7232b4e08159bfd48fe5"
+SRC_URI[sha256sum] = "e2f1d6871f74fba23652e51d10873e54f71adab0525833c19bad9e99b1b2f9cc"
+S = "${WORKDIR}/dbus-python-${PV}"
+
+inherit distutils3-base autotools pkgconfig
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[docs] = "--enable-html-docs,--disable-html-docs,python3-docutils-native"
+PACKAGECONFIG[api-docs] = "--enable-api-docs,--disable-api-docs,python3-docutils-native python3-epydoc-native"
+
+RDEPENDS_${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml"
+
+FILES_${PN}-dev += "${libdir}/pkgconfig"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-docutils_0.12.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-docutils_0.12.bb
new file mode 100644
index 0000000..e78fa3b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-docutils_0.12.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Text processing system for documentation"
+HOMEPAGE = "http://docutils.sourceforge.net"
+SECTION = "devel/python"
+LICENSE = "PSF & BSD-2-Clause & GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=a722fbdc20347db7b69223594dd54574"
+
+DEPENDS = "python3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz"
+SRC_URI[md5sum] = "4622263b62c5c771c03502afa3157768"
+SRC_URI[sha256sum] = "c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa"
+
+S = "${WORKDIR}/docutils-${PV}"
+
+inherit distutils3
+
+BBCLASSEXTEND = "native"
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-git_2.0.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-git_2.0.7.bb
new file mode 100644
index 0000000..c9fe9ba
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-git_2.0.7.bb
@@ -0,0 +1,7 @@
+require python-git.inc
+
+DEPENDS = "python3-gitdb"
+
+inherit setuptools3
+
+RDEPENDS_${PN} += "python3-gitdb python3-lang python3-io python3-shell python3-math python3-re python3-subprocess python3-stringold python3-unixadmin python3-enum python3-logging python3-datetime python3-netclient"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb
new file mode 100644
index 0000000..80d9d46
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb
@@ -0,0 +1,7 @@
+require python-gitdb.inc
+
+DEPENDS = "python3-async python3-smmap"
+
+inherit distutils3
+
+RDEPENDS_${PN} += "python3-smmap python3-async python3-mmap python3-lang python3-io python3-shell python3-crypt python3-compression"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-mako_1.0.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-mako_1.0.4.bb
new file mode 100644
index 0000000..2b50ffd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-mako_1.0.4.bb
@@ -0,0 +1,11 @@
+require python-mako.inc
+
+inherit setuptools3
+
+RDEPENDS_${PN} = "python3-threading \
+                  python3-netclient \
+                  python3-html \
+"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-native_3.5.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-native_3.5.1.bb
deleted file mode 100644
index 7bad11a..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-native_3.5.1.bb
+++ /dev/null
@@ -1,79 +0,0 @@
-require recipes-devtools/python/python.inc
-
-PR = "${INC_PR}.0"
-PYTHON_MAJMIN = "3.5"
-DISTRO_SRC_URI ?= "file://sitecustomize.py"
-DISTRO_SRC_URI_linuxstdbase = ""
-SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
-file://12-distutils-prefix-is-inside-staging-area.patch \
-file://python-config.patch \
-file://000-cross-compile.patch \
-file://020-dont-compile-python-files.patch \
-file://030-fixup-include-dirs.patch \
-file://070-dont-clean-ipkg-install.patch \
-file://080-distutils-dont_adjust_files.patch \
-file://110-enable-zlib.patch \
-file://130-readline-setup.patch \
-file://150-fix-setupterm.patch \
-file://python-3.3-multilib.patch \
-file://03-fix-tkinter-detection.patch \
-file://avoid_warning_about_tkinter.patch \
-file://shutil-follow-symlink-fix.patch \
-file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \
-file://sysroot-include-headers.patch \
-file://unixccompiler.patch \
-${DISTRO_SRC_URI} \
-file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
-file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
-file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
-"
-SRC_URI[md5sum] = "e9ea6f2623fffcdd871b7b19113fde80"
-SRC_URI[sha256sum] = "c6d57c0c366d9060ab6c0cdf889ebf3d92711d466cc0119c441dbf2746f725c9"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dd98d01d471fac8d8dbdd975229dba03"
-
-# exclude pre-releases for both python 2.x and 3.x
-UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
-
-S = "${WORKDIR}/Python-${PV}"
-
-EXTRANATIVEPATH += "bzip2-native"
-DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native"
-
-inherit native
-
-RPROVIDES += "python3-distutils-native python3-compression-native python3-textutils-native python3-core-native"
-
-EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --without-ensurepip"
-
-EXTRA_OEMAKE = '\
-  BUILD_SYS="" \
-  HOST_SYS="" \
-  LIBC="" \
-  STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
-  STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
-  LIB=${baselib} \
-  ARCH=${TARGET_ARCH} \
-'
-
-# No ctypes option for python 3
-PYTHONLSBOPTS = ""
-
-do_configure_append() {
-	autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
-}
-
-do_install() {
-	install -d ${D}${libdir}/pkgconfig
-	oe_runmake 'DESTDIR=${D}' install
-	if [ -e ${WORKDIR}/sitecustomize.py ]; then
-		install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
-	fi
-	install -d ${D}${bindir}/${PN}
-	install -m 0755 Parser/pgen ${D}${bindir}/${PN}
-
-	# Make sure we use /usr/bin/env python
-	for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
-		sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
-	done
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-native_3.5.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-native_3.5.2.bb
new file mode 100644
index 0000000..594f15c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-native_3.5.2.bb
@@ -0,0 +1,98 @@
+require recipes-devtools/python/python.inc
+
+PR = "${INC_PR}.0"
+PYTHON_MAJMIN = "3.5"
+DISTRO_SRC_URI ?= "file://sitecustomize.py"
+DISTRO_SRC_URI_linuxstdbase = ""
+SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
+file://12-distutils-prefix-is-inside-staging-area.patch \
+file://python-config.patch \
+file://000-cross-compile.patch \
+file://020-dont-compile-python-files.patch \
+file://030-fixup-include-dirs.patch \
+file://070-dont-clean-ipkg-install.patch \
+file://080-distutils-dont_adjust_files.patch \
+file://130-readline-setup.patch \
+file://150-fix-setupterm.patch \
+file://python-3.3-multilib.patch \
+file://03-fix-tkinter-detection.patch \
+file://avoid_warning_about_tkinter.patch \
+file://shutil-follow-symlink-fix.patch \
+file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \
+file://sysroot-include-headers.patch \
+file://unixccompiler.patch \
+${DISTRO_SRC_URI} \
+file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
+file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
+file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
+"
+
+SRC_URI[md5sum] = "8906efbacfcdc7c3c9198aeefafd159e"  
+SRC_URI[sha256sum] = "0010f56100b9b74259ebcd5d4b295a32324b58b517403a10d1a2aa7cb22bca40" 
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6b60258130e4ed10d3101517eb5b9385"
+
+# exclude pre-releases for both python 2.x and 3.x
+UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
+
+S = "${WORKDIR}/Python-${PV}"
+
+EXTRANATIVEPATH += "bzip2-native"
+DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native"
+
+inherit native
+
+RPROVIDES += " \
+    python3-compression-native \
+    python3-core-native \
+    python3-distutils-native \
+    python3-email-native \
+    python3-importlib-native \
+    python3-io-native \
+    python3-json-native \
+    python3-lang-native \
+    python3-misc-native \
+    python3-netclient-native \
+    python3-netserver-native \
+    python3-numbers-native \
+    python3-pkgutil-native \
+    python3-pprint-native \
+    python3-re-native \
+    python3-shell-native \
+    python3-subprocess-native \
+    python3-textutils-native \
+    python3-threading-native \
+    python3-unittest-native \
+"
+
+EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --without-ensurepip"
+
+EXTRA_OEMAKE = '\
+  LIBC="" \
+  STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
+  STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
+  LIB=${baselib} \
+  ARCH=${TARGET_ARCH} \
+'
+
+# No ctypes option for python 3
+PYTHONLSBOPTS = ""
+
+do_configure_append() {
+	autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
+}
+
+do_install() {
+	install -d ${D}${libdir}/pkgconfig
+	oe_runmake 'DESTDIR=${D}' install
+	if [ -e ${WORKDIR}/sitecustomize.py ]; then
+		install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
+	fi
+	install -d ${D}${bindir}/${PN}
+	install -m 0755 Parser/pgen ${D}${bindir}/${PN}
+
+	# Make sure we use /usr/bin/env python
+	for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
+		sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
+	done
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-nose_1.3.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-nose_1.3.7.bb
new file mode 100644
index 0000000..99bba44
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-nose_1.3.7.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Extends Python unittest to make testing easier"
+DESCRIPTION = "nose extends the test loading and running features of unittest, \
+making it easier to write, find and run tests."
+SECTION = "devel/python"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/n/nose/nose-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b"
+SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/nose/"
+UPSTREAM_CHECK_REGEX = "/nose/(?P<pver>(\d+[\.\-_]*)+)"
+
+S = "${WORKDIR}/nose-${PV}"
+
+inherit setuptools3
+
+RDEPENDS_${PN}_class-target = "\
+  python3-unittest \
+  "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pip_8.0.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pip_8.0.0.bb
deleted file mode 100644
index 834ecda..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pip_8.0.0.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "The PyPA recommended tool for installing Python packages"
-sHOMEPAGEsss = "https://pypi.python.org/pypi/pip"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=25fba45109565f87de20bae85bc39452"
-
-SRCNAME = "pip"
-DEPENDS += "python3 python3-setuptools-native"
-
-SRC_URI = " \
-  http://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
-"
-SRC_URI[md5sum] = "5601c4323464add1482291634142894d"
-SRC_URI[sha256sum] = "90112b296152f270cb8dddcd19b7b87488d9e002e8cf622e14c4da9c2f6319b1"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pip"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit distutils3
-
-DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${libdir}/${PYTHON_DIR}/site-packages"
-
-do_install_prepend() {
-    install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages
-}
-
-# Use setuptools site.py instead, avoid shared state issue
-do_install_append() {
-    rm ${D}/${libdir}/${PYTHON_DIR}/site-packages/site.py
-    rm ${D}/${libdir}/${PYTHON_DIR}/site-packages/__pycache__/site.cpython-*.pyc
-
-    # Install as pip3 and leave pip2 as default
-    rm ${D}/${bindir}/pip
-
-    # Installed eggs need to be passed directly to the interpreter via a pth file
-    echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}-${PV}.pth
-}
-
-RDEPENDS_${PN} = "\
-  python3-compile \
-  python3-io \
-  python3-json \
-  python3-netserver \
-  python3-setuptools \
-  python3-unixadmin \
-  python3-xmlrpc \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pip_8.1.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pip_8.1.2.bb
new file mode 100644
index 0000000..eefb4cb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pip_8.1.2.bb
@@ -0,0 +1,47 @@
+SUMMARY = "The PyPA recommended tool for installing Python packages"
+sHOMEPAGEsss = "https://pypi.python.org/pypi/pip"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=25fba45109565f87de20bae85bc39452"
+
+SRCNAME = "pip"
+DEPENDS += "python3 python3-setuptools-native"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "87083c0b9867963b29f7aba3613e8f4a"
+SRC_URI[sha256sum] = "4d24b03ffa67638a3fa931c09fd9e0273ffa904e95ebebe7d4b1a54c93d7b732"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pip"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils3
+
+DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}"
+
+do_install_prepend() {
+    install -d ${D}${PYTHON_SITEPACKAGES_DIR}
+}
+
+# Use setuptools site.py instead, avoid shared state issue
+do_install_append() {
+    rm ${D}${PYTHON_SITEPACKAGES_DIR}/site.py
+    rm ${D}${PYTHON_SITEPACKAGES_DIR}/__pycache__/site.cpython-*.pyc
+
+    # Install as pip3 and leave pip2 as default
+    rm ${D}/${bindir}/pip
+
+    # Installed eggs need to be passed directly to the interpreter via a pth file
+    echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}-${PV}.pth
+}
+
+RDEPENDS_${PN} = "\
+  python3-compile \
+  python3-io \
+  python3-json \
+  python3-netserver \
+  python3-setuptools \
+  python3-unixadmin \
+  python3-xmlrpc \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pycairo_1.10.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pycairo_1.10.0.bb
new file mode 100644
index 0000000..f9031b3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pycairo_1.10.0.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Python bindings for the Cairo canvas library"
+HOMEPAGE = "http://cairographics.org/pycairo"
+BUGTRACKER = "http://bugs.freedesktop.org"
+SECTION = "python-devel"
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+# cairo >= 1.8.8
+DEPENDS = "cairo"
+PR = "r2"
+
+SRC_URI = "http://cairographics.org/releases/pycairo-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "e6fd3f2f1e6a72e0db0868c4985669c5"
+SRC_URI[sha256sum] = "9aa4078e7eb5be583aeabbe8d87172797717f95e8c4338f0d4a17b683a7253be"
+
+S = "${WORKDIR}/pycairo-${PV}"
+
+inherit distutils3 pkgconfig
+
+BBCLASSEXTEND = "native"
+
+do_configure() {
+	PYTHON=${PYTHON} ./waf configure --prefix=${D}${prefix} --libdir=${D}${libdir}
+}
+
+do_compile() {
+	./waf build ${PARALLEL_MAKE}
+}
+
+do_install() {
+	./waf install
+	sed \
+		-e 's:@prefix@:${prefix}:' \
+		-e 's:@VERSION@:${PV}:' \
+		-e 's:@includedir@:${includedir}:' \
+		py3cairo.pc.in > py3cairo.pc
+	install -m 0644 py3cairo.pc ${D}${libdir}/pkgconfig/
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-devtools/python/python-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch
rename to import-layers/yocto-poky/meta/recipes-devtools/python/python3-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pygobject_3.20.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pygobject_3.20.1.bb
new file mode 100644
index 0000000..cda16f1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-pygobject_3.20.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Python GObject bindings"
+SECTION = "devel/python"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+inherit autotools pkgconfig gnomebase distutils3-base gobject-introspection upstream-version-is-even
+
+DEPENDS += "python3 glib-2.0"
+
+SRCNAME="pygobject"
+SRC_URI = " \
+    http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
+    file://0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch \
+"
+
+SRC_URI[md5sum] = "4354c6283b135f859563b72457f6a321"
+SRC_URI[sha256sum] = "3d261005d6fed6a92ac4c25f283792552f7dad865d1b7e0c03c2b84c04dbd745"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+BBCLASSEXTEND = "native"
+
+EXTRA_OECONF = "--disable-cairo"
+
+RDEPENDS_${PN} += "python3-setuptools python3-importlib"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-setuptools_19.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-setuptools_19.4.bb
deleted file mode 100644
index fb2931c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-setuptools_19.4.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-require python-setuptools.inc
-
-DEPENDS += "python3"
-DEPENDS_class-native += "python3-native"
-
-inherit distutils3
-
-DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${libdir}/${PYTHON_DIR}/site-packages"
-
-# The installer puts the wrong path in the setuptools.pth file.  Correct it.
-do_install_append() {
-    rm ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
-    mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
-    echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
-}
-
-RDEPENDS_${PN} = "\
-  python3-distutils \
-  python3-compression \
-"
-RDEPENDS_${PN}_class-target = "\
-  python3-ctypes \
-  python3-distutils \
-  python3-email \
-  python3-importlib \
-  python3-numbers \
-  python3-compression \
-  python3-shell \
-  python3-subprocess \
-  python3-textutils \
-  python3-pkgutil \
-  python3-threading \
-  python3-misc \
-  python3-unittest \
-  python3-xml \
-"
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-setuptools_22.0.5.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-setuptools_22.0.5.bb
new file mode 100644
index 0000000..65af6f0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-setuptools_22.0.5.bb
@@ -0,0 +1,37 @@
+require python-setuptools.inc
+
+DEPENDS += "python3"
+DEPENDS_class-native += "python3-native"
+
+inherit distutils3
+
+DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}"
+
+# The installer puts the wrong path in the setuptools.pth file.  Correct it.
+do_install_append() {
+    rm ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
+    mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
+    echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
+}
+
+RDEPENDS_${PN} = "\
+  python3-distutils \
+  python3-compression \
+"
+RDEPENDS_${PN}_class-target = "\
+  python3-ctypes \
+  python3-distutils \
+  python3-email \
+  python3-importlib \
+  python3-numbers \
+  python3-compression \
+  python3-shell \
+  python3-subprocess \
+  python3-textutils \
+  python3-pkgutil \
+  python3-threading \
+  python3-misc \
+  python3-unittest \
+  python3-xml \
+"
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-six_1.10.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-six_1.10.0.bb
new file mode 100644
index 0000000..38a47b7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-six_1.10.0.bb
@@ -0,0 +1,4 @@
+inherit setuptools3
+require python-six.inc
+
+RDEPENDS_${PN} += "python3-io"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3-smmap_0.9.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-smmap_0.9.0.bb
new file mode 100644
index 0000000..9f8a26d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3-smmap_0.9.0.bb
@@ -0,0 +1,5 @@
+require python-smmap.inc
+
+inherit setuptools3
+
+RDEPENDS_${PN} += "python3-codecs python3-mmap python3-lang"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/000-cross-compile.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/000-cross-compile.patch
index 28fe70a..2d82221 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/000-cross-compile.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/000-cross-compile.patch
@@ -9,19 +9,19 @@
  Makefile.pre.in |   25 +++++++++++++------------
  1 file changed, 13 insertions(+), 12 deletions(-)
 
-Index: Python-3.5.1/Makefile.pre.in
+Index: Python-3.5.2/Makefile.pre.in
 ===================================================================
---- Python-3.5.1.orig/Makefile.pre.in
-+++ Python-3.5.1/Makefile.pre.in
+--- Python-3.5.2.orig/Makefile.pre.in
++++ Python-3.5.2/Makefile.pre.in
 @@ -220,6 +220,7 @@ LIBOBJS=	@LIBOBJS@
  
  PYTHON=		python$(EXE)
  BUILDPYTHON=	python$(BUILDEXE)
 +HOSTPYTHON=	$(BUILDPYTHON)
  
+ cross_compiling=@cross_compiling@
  PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@
- _PYTHON_HOST_PLATFORM=@_PYTHON_HOST_PLATFORM@
-@@ -276,6 +277,7 @@ LIBFFI_INCLUDEDIR=	@LIBFFI_INCLUDEDIR@
+@@ -279,6 +280,7 @@ LIBFFI_INCLUDEDIR=	@LIBFFI_INCLUDEDIR@
  ##########################################################################
  # Parser
  PGEN=		Parser/pgen$(EXE)
@@ -29,7 +29,7 @@
  
  PSRCS=		\
  		Parser/acceler.c \
-@@ -506,7 +508,7 @@ build_all_generate_profile:
+@@ -509,7 +511,7 @@ build_all_generate_profile:
  
  run_profile_task:
  	: # FIXME: can't run for a cross build
@@ -38,16 +38,16 @@
  
  build_all_merge_profile:
  	$(LLVM_PROF_MERGER)
-@@ -779,7 +781,7 @@ $(IO_OBJS): $(IO_H)
- 
- $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGEN)
- 		@$(MKDIR_P) Include
--		$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
-+		$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
- $(GRAMMAR_C): $(GRAMMAR_H)
- 		touch $(GRAMMAR_C)
- 
-@@ -968,7 +970,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Programs/pyth
+@@ -792,7 +794,7 @@ $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGEN)
+ 	@$(MKDIR_P) Include
+ 	# Avoid copying the file onto itself for an in-tree build
+ 	if test "$(cross_compiling)" != "yes"; then \
+-		$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C); \
++		$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C); \
+ 	else \
+ 		cp $(srcdir)/Include/graminit.h $(GRAMMAR_H).tmp; \
+ 		mv $(GRAMMAR_H).tmp $(GRAMMAR_H); \
+@@ -990,7 +992,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Programs/pyth
  ######################################################################
  
  TESTOPTS=	$(EXTRATESTOPTS)
@@ -56,7 +56,7 @@
  TESTRUNNER=	$(TESTPYTHON) $(srcdir)/Tools/scripts/run_tests.py
  TESTTIMEOUT=	3600
  
-@@ -1455,7 +1457,7 @@ frameworkinstallstructure:	$(LDLIBRARY)
+@@ -1481,7 +1483,7 @@ frameworkinstallstructure:	$(LDLIBRARY)
  		fi; \
  	done
  	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
@@ -65,7 +65,7 @@
  	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
  	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
  	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
-@@ -1521,7 +1523,7 @@ config.status:	$(srcdir)/configure
+@@ -1547,7 +1549,7 @@ config.status:	$(srcdir)/configure
  
  # Run reindent on the library
  reindent:
@@ -74,7 +74,7 @@
  
  # Rerun configure with the same options as it was run last time,
  # provided the config.status script exists
-@@ -1656,7 +1658,7 @@ funny:
+@@ -1683,7 +1685,7 @@ funny:
  
  # Perform some verification checks on any modified files.
  patchcheck: all
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/110-enable-zlib.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/110-enable-zlib.patch
deleted file mode 100644
index fb92a19..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/110-enable-zlib.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Enable zlib in python
-
--Khem
-
-Upstream-Status: Inappropriate [OE-Specific]
-
----
- Modules/Setup.dist |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/Modules/Setup.dist
-+++ b/Modules/Setup.dist
-@@ -354,7 +354,7 @@ _symtable symtablemodule.c
- # Andrew Kuchling's zlib module.
- # This require zlib 1.1.3 (or later).
- # See http://www.gzip.org/zlib/
--#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
-+zlib zlibmodule.c -lz
- 
- # Interface to the Expat XML parser
- #
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
index 8b93c1c..c53ec0c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
@@ -1,4 +1,4 @@
-From d4dd67daa1555bf13272cc071706338572539bad Mon Sep 17 00:00:00 2001
+From 7630ab22578746d3d790d0598c0d279cf7afed97 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 14 May 2013 15:00:26 -0700
 Subject: [PATCH 01/20] python3: Add target and native recipes
@@ -14,27 +14,14 @@
 # Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
 ---
+ Lib/distutils/sysconfig.py | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
 diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
-index 573724d..418b478 100644
+index 573724d..390c485 100644
 --- a/Lib/distutils/sysconfig.py
 +++ b/Lib/distutils/sysconfig.py
-@@ -17,10 +17,11 @@ import sys
- from .errors import DistutilsPlatformError
- 
- # These are needed in a couple of spots, so just compute them once.
--PREFIX = os.path.normpath(sys.prefix)
--EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
--BASE_PREFIX = os.path.normpath(sys.base_prefix)
--BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
-+PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
-+EXEC_PREFIX = os.path.normpath(sys.exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
-+BASE_PREFIX = os.path.normpath(sys.base_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
-+BASE_EXEC_PREFIX= os.path.normpath(sys.base_exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
-+
- 
- # Path to the base directory of the project. On Windows the binary may
- # live in project/PCBuild/win32 or project/PCBuild/amd64.
-@@ -84,7 +85,9 @@ def get_python_inc(plat_specific=0, prefix=None):
+@@ -84,7 +84,9 @@ def get_python_inc(plat_specific=0, prefix=None):
      If 'prefix' is supplied, use it instead of sys.base_prefix or
      sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
      """
@@ -45,7 +32,7 @@
          prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
      if os.name == "posix":
          if python_build:
-@@ -125,6 +128,10 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+@@ -125,6 +127,10 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
      If 'prefix' is supplied, use it instead of sys.base_prefix or
      sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
      """
@@ -56,7 +43,7 @@
      if prefix is None:
          if standard_lib:
              prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
-@@ -133,7 +140,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+@@ -133,7 +139,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
  
      if os.name == "posix":
          libpython = os.path.join(prefix,
@@ -65,24 +52,6 @@
          if standard_lib:
              return libpython
          else:
-@@ -233,7 +240,7 @@ def get_config_h_filename():
-     else:
-         inc_dir = get_python_inc(plat_specific=1)
- 
--    return os.path.join(inc_dir, 'pyconfig.h')
-+    return os.path.join(inc_dir, 'pyconfig.h'.replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ))
- 
- 
- def get_makefile_filename():
-@@ -242,7 +249,7 @@ def get_makefile_filename():
-         return os.path.join(_sys_home or project_base, "Makefile")
-     lib_dir = get_python_lib(plat_specific=0, standard_lib=1)
-     config_file = 'config-{}{}'.format(get_python_version(), build_flags)
--    return os.path.join(lib_dir, config_file, 'Makefile')
-+    return os.path.join(lib_dir, config_file, 'Makefile').replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
- 
- 
- def parse_config_h(fp, g=None):
 -- 
-2.7.0
+2.8.0.rc3
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/CVE-2016-5636.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/CVE-2016-5636.patch
new file mode 100644
index 0000000..0d494d2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/CVE-2016-5636.patch
@@ -0,0 +1,44 @@
+
+# HG changeset patch
+# User Benjamin Peterson <benjamin@python.org>
+# Date 1453357506 28800
+# Node ID 10dad6da1b28ea4af78ad9529e469fdbf4ebbc8f
+# Parent  a3ac2cd93db9d5336dfd7b5b27efde2c568d8794# Parent  01ddd608b85c85952537d95a43bbabf4fb655057
+merge 3.4 (#26171)
+
+Upstream-Status: Backport
+CVE: CVE-2016-5636
+
+https://hg.python.org/cpython/raw-rev/10dad6da1b28
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+Index: Python-3.5.1/Misc/NEWS
+===================================================================
+--- Python-3.5.1.orig/Misc/NEWS
++++ Python-3.5.1/Misc/NEWS
+@@ -91,6 +91,9 @@ Core and Builtins
+   Python.h header to fix a compilation error with OpenMP. PyThreadState_GET()
+   becomes an alias to PyThreadState_Get() to avoid ABI incompatibilies.
+ 
++- Issue #26171: Fix possible integer overflow and heap corruption in
++  zipimporter.get_data().
++
+ Library
+ -------
+ 
+Index: Python-3.5.1/Modules/zipimport.c
+===================================================================
+--- Python-3.5.1.orig/Modules/zipimport.c
++++ Python-3.5.1/Modules/zipimport.c
+@@ -1112,6 +1112,11 @@ get_data(PyObject *archive, PyObject *to
+     }
+     file_offset += l;           /* Start of file data */
+ 
++    if (data_size > LONG_MAX - 1) {
++        fclose(fp);
++        PyErr_NoMemory();
++        return NULL;
++    }
+     bytes_size = compress == 0 ? data_size : data_size + 1;
+     if (bytes_size == 0)
+         bytes_size++;
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch
index cd1a978..0610565 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch
@@ -4,11 +4,11 @@
 This patch makes the native python binary modules findable
 in the install process of the host python.
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 Date: 2012/03/14
 
 Updated for python 2.7.3
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 Date: 2012/05/01
 
 Index: Python-3.3.0rc2/Lib/sysconfig.py
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/python-3.3-multilib.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/python-3.3-multilib.patch
index 44ec424..056e8e7 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/python-3.3-multilib.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/python-3.3-multilib.patch
@@ -7,10 +7,10 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
 
-Index: Python-3.5.0/Include/pythonrun.h
+Index: Python-3.5.2/Include/pythonrun.h
 ===================================================================
---- Python-3.5.0.orig/Include/pythonrun.h
-+++ Python-3.5.0/Include/pythonrun.h
+--- Python-3.5.2.orig/Include/pythonrun.h
++++ Python-3.5.2/Include/pythonrun.h
 @@ -23,6 +23,9 @@ typedef struct {
  } PyCompilerFlags;
  #endif
@@ -21,10 +21,10 @@
  #ifndef Py_LIMITED_API
  PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
  PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
-Index: Python-3.5.0/Lib/distutils/command/install.py
+Index: Python-3.5.2/Lib/distutils/command/install.py
 ===================================================================
---- Python-3.5.0.orig/Lib/distutils/command/install.py
-+++ Python-3.5.0/Lib/distutils/command/install.py
+--- Python-3.5.2.orig/Lib/distutils/command/install.py
++++ Python-3.5.2/Lib/distutils/command/install.py
 @@ -19,6 +19,8 @@ from site import USER_BASE
  from site import USER_SITE
  HAS_USER_SITE = True
@@ -43,23 +43,23 @@
          'headers': '$base/include/python$py_version_short$abiflags/$dist_name',
          'scripts': '$base/bin',
          'data'   : '$base',
-Index: Python-3.5.0/Lib/pydoc.py
+Index: Python-3.5.2/Lib/pydoc.py
 ===================================================================
---- Python-3.5.0.orig/Lib/pydoc.py
-+++ Python-3.5.0/Lib/pydoc.py
-@@ -393,7 +393,7 @@ class Doc:
+--- Python-3.5.2.orig/Lib/pydoc.py
++++ Python-3.5.2/Lib/pydoc.py
+@@ -384,7 +384,7 @@ class Doc:
+     docmodule = docclass = docroutine = docother = docproperty = docdata = fail
  
-         docloc = os.environ.get("PYTHONDOCS", self.PYTHONDOCS)
+     def getdocloc(self, object,
+-                  basedir=os.path.join(sys.base_exec_prefix, "lib",
++                  basedir=os.path.join(sys.base_exec_prefix, sys.lib,
+                                        "python%d.%d" %  sys.version_info[:2])):
+         """Return the location of module docs or None"""
  
--        basedir = os.path.join(sys.base_exec_prefix, "lib",
-+        basedir = os.path.join(sys.base_exec_prefix, sys.lib,
-                                "python%d.%d" %  sys.version_info[:2])
-         if (isinstance(object, type(os)) and
-             (object.__name__ in ('errno', 'exceptions', 'gc', 'imp',
-Index: Python-3.5.0/Lib/trace.py
+Index: Python-3.5.2/Lib/trace.py
 ===================================================================
---- Python-3.5.0.orig/Lib/trace.py
-+++ Python-3.5.0/Lib/trace.py
+--- Python-3.5.2.orig/Lib/trace.py
++++ Python-3.5.2/Lib/trace.py
 @@ -749,10 +749,10 @@ def main(argv=None):
                  # should I also call expanduser? (after all, could use $HOME)
  
@@ -73,11 +73,11 @@
                                             "python" + sys.version[:3]))
                  s = os.path.normpath(s)
                  ignore_dirs.append(s)
-Index: Python-3.5.0/Makefile.pre.in
+Index: Python-3.5.2/Makefile.pre.in
 ===================================================================
---- Python-3.5.0.orig/Makefile.pre.in
-+++ Python-3.5.0/Makefile.pre.in
-@@ -101,6 +101,8 @@ PY_CORE_CFLAGS=	$(PY_CFLAGS) $(PY_CFLAGS
+--- Python-3.5.2.orig/Makefile.pre.in
++++ Python-3.5.2/Makefile.pre.in
+@@ -106,6 +106,8 @@ PY_CORE_CFLAGS=	$(PY_CFLAGS) $(PY_CFLAGS
  
  # Machine-dependent subdirectories
  MACHDEP=	@MACHDEP@
@@ -86,7 +86,7 @@
  
  # Multiarch directory (may be empty)
  MULTIARCH=	@MULTIARCH@
-@@ -120,7 +122,7 @@ LIBDIR=		@libdir@
+@@ -125,7 +127,7 @@ LIBDIR=		@libdir@
  MANDIR=		@mandir@
  INCLUDEDIR=	@includedir@
  CONFINCLUDEDIR=	$(exec_prefix)/include
@@ -95,7 +95,7 @@
  ABIFLAGS=	@ABIFLAGS@
  
  # Detailed destination directories
-@@ -729,6 +731,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
+@@ -755,6 +757,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
  		-DEXEC_PREFIX='"$(exec_prefix)"' \
  		-DVERSION='"$(VERSION)"' \
  		-DVPATH='"$(VPATH)"' \
@@ -103,7 +103,7 @@
  		-o $@ $(srcdir)/Modules/getpath.c
  
  Programs/python.o: $(srcdir)/Programs/python.c
-@@ -798,7 +801,7 @@ $(OPCODE_H): $(srcdir)/Lib/opcode.py $(O
+@@ -835,7 +838,7 @@ $(OPCODE_H): $(srcdir)/Lib/opcode.py $(O
  Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)
  
  Python/getplatform.o: $(srcdir)/Python/getplatform.c
@@ -112,25 +112,25 @@
  
  Python/importdl.o: $(srcdir)/Python/importdl.c
  		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
-Index: Python-3.5.0/Modules/getpath.c
+Index: Python-3.5.2/Modules/getpath.c
 ===================================================================
---- Python-3.5.0.orig/Modules/getpath.c
-+++ Python-3.5.0/Modules/getpath.c
-@@ -117,9 +117,11 @@
- #define EXEC_PREFIX PREFIX
+--- Python-3.5.2.orig/Modules/getpath.c
++++ Python-3.5.2/Modules/getpath.c
+@@ -105,6 +105,13 @@
+ #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
  #endif
  
 +#define LIB_PYTHON LIB "/python" VERSION
 +
- #ifndef PYTHONPATH
--#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
--              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
++#ifndef PYTHONPATH
 +#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \
-+              EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
- #endif
- 
++        EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
++#endif
++
  #ifndef LANDMARK
-@@ -130,6 +132,7 @@ static wchar_t prefix[MAXPATHLEN+1];
+ #define LANDMARK L"os.py"
+ #endif
+@@ -113,6 +120,7 @@ static wchar_t prefix[MAXPATHLEN+1];
  static wchar_t exec_prefix[MAXPATHLEN+1];
  static wchar_t progpath[MAXPATHLEN+1];
  static wchar_t *module_search_path = NULL;
@@ -138,10 +138,10 @@
  
  /* Get file status. Encode the path to the locale encoding. */
  
-Index: Python-3.5.0/Python/getplatform.c
+Index: Python-3.5.2/Python/getplatform.c
 ===================================================================
---- Python-3.5.0.orig/Python/getplatform.c
-+++ Python-3.5.0/Python/getplatform.c
+--- Python-3.5.2.orig/Python/getplatform.c
++++ Python-3.5.2/Python/getplatform.c
 @@ -10,3 +10,23 @@ Py_GetPlatform(void)
  {
  	return PLATFORM;
@@ -166,11 +166,11 @@
 +{
 +	return LIB;
 +}
-Index: Python-3.5.0/Python/sysmodule.c
+Index: Python-3.5.2/Python/sysmodule.c
 ===================================================================
---- Python-3.5.0.orig/Python/sysmodule.c
-+++ Python-3.5.0/Python/sysmodule.c
-@@ -1767,6 +1767,10 @@ _PySys_Init(void)
+--- Python-3.5.2.orig/Python/sysmodule.c
++++ Python-3.5.2/Python/sysmodule.c
+@@ -1790,6 +1790,10 @@ _PySys_Init(void)
                          PyUnicode_FromString(Py_GetCopyright()));
      SET_SYS_FROM_STRING("platform",
                          PyUnicode_FromString(Py_GetPlatform()));
@@ -181,11 +181,11 @@
      SET_SYS_FROM_STRING("executable",
                          PyUnicode_FromWideChar(
                                 Py_GetProgramFullPath(), -1));
-Index: Python-3.5.0/setup.py
+Index: Python-3.5.2/setup.py
 ===================================================================
---- Python-3.5.0.orig/setup.py
-+++ Python-3.5.0/setup.py
-@@ -472,7 +472,7 @@ class PyBuildExt(build_ext):
+--- Python-3.5.2.orig/setup.py
++++ Python-3.5.2/setup.py
+@@ -492,7 +492,7 @@ class PyBuildExt(build_ext):
          # directories (i.e. '.' and 'Include') must be first.  See issue
          # 10520.
          if not cross_compiling:
@@ -194,7 +194,7 @@
              add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
          # only change this for cross builds for 3.3, issues on Mageia
          if cross_compiling:
-@@ -530,8 +530,7 @@ class PyBuildExt(build_ext):
+@@ -550,8 +550,7 @@ class PyBuildExt(build_ext):
          # be assumed that no additional -I,-L directives are needed.
          if not cross_compiling:
              lib_dirs = self.compiler.library_dirs + [
@@ -204,7 +204,7 @@
                  ]
              inc_dirs = self.compiler.include_dirs + ['/usr/include']
          else:
-@@ -716,11 +715,11 @@ class PyBuildExt(build_ext):
+@@ -743,11 +742,11 @@ class PyBuildExt(build_ext):
              elif curses_library:
                  readline_libs.append(curses_library)
              elif self.compiler.find_library_file(lib_dirs +
@@ -218,10 +218,10 @@
                                     extra_link_args=readline_extra_link_args,
                                     libraries=readline_libs) )
          else:
-Index: Python-3.5.0/Lib/sysconfig.py
+Index: Python-3.5.2/Lib/sysconfig.py
 ===================================================================
---- Python-3.5.0.orig/Lib/sysconfig.py
-+++ Python-3.5.0/Lib/sysconfig.py
+--- Python-3.5.2.orig/Lib/sysconfig.py
++++ Python-3.5.2/Lib/sysconfig.py
 @@ -20,10 +20,10 @@ __all__ = [
  
  _INSTALL_SCHEMES = {
@@ -264,11 +264,11 @@
          'include': '{userbase}/include/python{py_version_short}',
          'scripts': '{userbase}/bin',
          'data': '{userbase}',
-Index: Python-3.5.0/configure.ac
+Index: Python-3.5.2/configure.ac
 ===================================================================
---- Python-3.5.0.orig/configure.ac
-+++ Python-3.5.0/configure.ac
-@@ -858,6 +858,41 @@ PLATDIR=plat-$MACHDEP
+--- Python-3.5.2.orig/configure.ac
++++ Python-3.5.2/configure.ac
+@@ -876,6 +876,41 @@ PLATDIR=plat-$MACHDEP
  AC_SUBST(PLATDIR)
  AC_SUBST(PLATFORM_TRIPLET)
  
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/python3-fix-CVE-2016-1000110.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/python3-fix-CVE-2016-1000110.patch
new file mode 100644
index 0000000..ab1b723
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/python3-fix-CVE-2016-1000110.patch
@@ -0,0 +1,148 @@
+From aab3e8c432b90508ac14755128f5a687be2fdf43 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Thu, 22 Sep 2016 16:39:49 +0800
+Subject: [PATCH] python3: fix CVE-2016-1000110
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which
+indicates that the script is in CGI mode.
+
+Issue #27568 Reported and patch contributed by Rémi Rampin. [#27568]
+
+Backport patch from https://hg.python.org/cpython/rev/a0ac52ed8f79
+
+Upstream-Status: Backport
+CVE: CVE-2016-1000110
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ Doc/howto/urllib2.rst          |  5 +++++
+ Doc/library/urllib.request.rst | 17 ++++++++++++++++-
+ Lib/test/test_urllib.py        | 14 +++++++++++++-
+ Lib/urllib/request.py          |  6 ++++++
+ Misc/NEWS                      |  4 ++++
+ 5 files changed, 44 insertions(+), 2 deletions(-)
+
+diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst
+index 24a4156..d2c7991 100644
+--- a/Doc/howto/urllib2.rst
++++ b/Doc/howto/urllib2.rst
+@@ -538,6 +538,11 @@ setting up a `Basic Authentication`_ handler: ::
+     through a proxy.  However, this can be enabled by extending urllib.request as
+     shown in the recipe [#]_.
+ 
++.. note::
++
++    ``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; see
++    the documentation on :func:`~urllib.request.getproxies`.
++
+ 
+ Sockets and Layers
+ ==================
+diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst
+index 1338906..1291aeb 100644
+--- a/Doc/library/urllib.request.rst
++++ b/Doc/library/urllib.request.rst
+@@ -173,6 +173,16 @@ The :mod:`urllib.request` module defines the following functions:
+    If both lowercase and uppercase environment variables exist (and disagree),
+    lowercase is preferred.
+ 
++    .. note::
++
++       If the environment variable ``REQUEST_METHOD`` is set, which usually
++       indicates your script is running in a CGI environment, the environment
++       variable ``HTTP_PROXY`` (uppercase ``_PROXY``) will be ignored. This is
++       because that variable can be injected by a client using the "Proxy:" HTTP
++       header. If you need to use an HTTP proxy in a CGI environment, either use
++       ``ProxyHandler`` explicitly, or make sure the variable name is in
++       lowercase (or at least the ``_proxy`` suffix).
++
+ 
+ The following classes are provided:
+ 
+@@ -280,6 +290,11 @@ The following classes are provided:
+    list of hostname suffixes, optionally with ``:port`` appended, for example
+    ``cern.ch,ncsa.uiuc.edu,some.host:8080``.
+ 
++    .. note::
++
++       ``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set;
++       see the documentation on :func:`~urllib.request.getproxies`.
++
+ 
+ .. class:: HTTPPasswordMgr()
+ 
+@@ -1138,7 +1153,7 @@ the returned bytes object to string once it determines or guesses
+ the appropriate encoding.
+ 
+ The following W3C document, https://www.w3.org/International/O-charset\ , lists
+-the various ways in which a (X)HTML or a XML document could have specified its
++the various ways in which an (X)HTML or an XML document could have specified its
+ encoding information.
+ 
+ As the python.org website uses *utf-8* encoding as specified in its meta tag, we
+diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
+index 5d05f8d..247598a 100644
+--- a/Lib/test/test_urllib.py
++++ b/Lib/test/test_urllib.py
+@@ -1,4 +1,4 @@
+-"""Regresssion tests for what was in Python 2's "urllib" module"""
++"""Regression tests for what was in Python 2's "urllib" module"""
+ 
+ import urllib.parse
+ import urllib.request
+@@ -232,6 +232,18 @@ class ProxyTests(unittest.TestCase):
+         self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com:8888'))
+         self.assertTrue(urllib.request.proxy_bypass_environment('newdomain.com:1234'))
+ 
++    def test_proxy_cgi_ignore(self):
++        try:
++            self.env.set('HTTP_PROXY', 'http://somewhere:3128')
++            proxies = urllib.request.getproxies_environment()
++            self.assertEqual('http://somewhere:3128', proxies['http'])
++            self.env.set('REQUEST_METHOD', 'GET')
++            proxies = urllib.request.getproxies_environment()
++            self.assertNotIn('http', proxies)
++        finally:
++            self.env.unset('REQUEST_METHOD')
++            self.env.unset('HTTP_PROXY')
++
+     def test_proxy_bypass_environment_host_match(self):
+         bypass = urllib.request.proxy_bypass_environment
+         self.env.set('NO_PROXY',
+diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
+index 1731fe3..3be327d 100644
+--- a/Lib/urllib/request.py
++++ b/Lib/urllib/request.py
+@@ -2412,6 +2412,12 @@ def getproxies_environment():
+         name = name.lower()
+         if value and name[-6:] == '_proxy':
+             proxies[name[:-6]] = value
++    # CVE-2016-1000110 - If we are running as CGI script, forget HTTP_PROXY
++    # (non-all-lowercase) as it may be set from the web server by a "Proxy:"
++    # header from the client
++    # If "proxy" is lowercase, it will still be used thanks to the next block
++    if 'REQUEST_METHOD' in os.environ:
++        proxies.pop('http', None)
+     for name, value in os.environ.items():
+         if name[-6:] == '_proxy':
+             name = name.lower()
+diff --git a/Misc/NEWS b/Misc/NEWS
+index 4ad2551..2fcc95b 100644
+--- a/Misc/NEWS
++++ b/Misc/NEWS
+@@ -329,6 +329,10 @@ Library
+ - Issue #26644: Raise ValueError rather than SystemError when a negative
+   length is passed to SSLSocket.recv() or read().
+ 
++- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
++  HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates
++  that the script is in CGI mode.
++
+ - Issue #23804: Fix SSL recv(0) and read(0) methods to return zero bytes
+   instead of up to 1024.
+ 
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/unixccompiler.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/unixccompiler.patch
index 7b90f13..3e2b1d1 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/unixccompiler.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/unixccompiler.patch
@@ -18,9 +18,9 @@
  
      def library_dir_option(self, dir):
 -        return "-L" + dir
-+        if dir.startswith("."):
-+            return "-L" + dir
-+        return "-L=" + dir
++        if dir.startswith("/"):
++            return "-L=" + dir
++        return "-L" + dir
  
      def _is_gcc(self, compiler_name):
          return "gcc" in compiler_name or "g++" in compiler_name
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/use_packed_importlib.patch b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/use_packed_importlib.patch
index 6c4b0cd..70708a0 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3/use_packed_importlib.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3/use_packed_importlib.patch
@@ -6,7 +6,7 @@
 this avoids executing the binary and forces it to use the packed importlib*.h files.
 
  
-Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> 
+Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> 
 
 Index: Python-3.5.0/Makefile.pre.in
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3_3.5.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3_3.5.1.bb
deleted file mode 100644
index 2fbb3cb..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python3_3.5.1.bb
+++ /dev/null
@@ -1,226 +0,0 @@
-require recipes-devtools/python/python.inc
-
-DEPENDS = "python3-native libffi bzip2 db gdbm openssl readline sqlite3 zlib virtual/libintl xz"
-PR = "${INC_PR}.0"
-PYTHON_MAJMIN = "3.5"
-PYTHON_BINABI= "${PYTHON_MAJMIN}m"
-DISTRO_SRC_URI ?= "file://sitecustomize.py"
-DISTRO_SRC_URI_linuxstdbase = ""
-SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
-file://python-config.patch \
-file://000-cross-compile.patch \
-file://020-dont-compile-python-files.patch \
-file://030-fixup-include-dirs.patch \
-file://070-dont-clean-ipkg-install.patch \
-file://080-distutils-dont_adjust_files.patch \
-file://110-enable-zlib.patch \
-file://130-readline-setup.patch \
-file://150-fix-setupterm.patch \
-file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \
-file://tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch \
-${DISTRO_SRC_URI} \
-"
-
-SRC_URI += "\
-            file://03-fix-tkinter-detection.patch \
-            file://avoid_warning_about_tkinter.patch \
-            file://cgi_py.patch \
-            file://host_include_contamination.patch \
-            file://python-3.3-multilib.patch \
-            file://shutil-follow-symlink-fix.patch \
-            file://sysroot-include-headers.patch \
-            file://unixccompiler.patch \
-            file://avoid-ncursesw-include-path.patch \
-            file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
-            file://python3-setup.py-no-host-headers-libs.patch \
-            file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
-            file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
-            file://setup.py-find-libraries-in-staging-dirs.patch \
-            file://use_packed_importlib.patch \
-            file://configure.ac-fix-LIBPL.patch \
-           "
-SRC_URI[md5sum] = "e9ea6f2623fffcdd871b7b19113fde80"
-SRC_URI[sha256sum] = "c6d57c0c366d9060ab6c0cdf889ebf3d92711d466cc0119c441dbf2746f725c9"
-
-# exclude pre-releases for both python 2.x and 3.x
-UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dd98d01d471fac8d8dbdd975229dba03"
-
-S = "${WORKDIR}/Python-${PV}"
-
-inherit autotools multilib_header python3native pkgconfig
-
-CONFIGUREOPTS += " --with-system-ffi "
-
-CACHED_CONFIGUREVARS = "ac_cv_have_chflags=no \
-                ac_cv_have_lchflags=no \
-                ac_cv_have_long_long_format=yes \
-                ac_cv_buggy_getaddrinfo=no \
-                ac_cv_file__dev_ptmx=yes \
-                ac_cv_file__dev_ptc=no \
-"
-
-TARGET_CC_ARCH += "-DNDEBUG -fno-inline"
-SDK_CC_ARCH += "-DNDEBUG -fno-inline"
-EXTRA_OEMAKE += "CROSS_COMPILE=yes"
-EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip"
-
-export CROSS_COMPILE = "${TARGET_PREFIX}"
-export _PYTHON_PROJECT_BASE = "${B}"
-export _PYTHON_PROJECT_SRC = "${S}"
-export CCSHARED = "-fPIC"
-
-# Fix ctypes cross compilation
-export CROSSPYTHONPATH = "${B}/build/lib.linux-${TARGET_ARCH}-${PYTHON_MAJMIN}:${S}/Lib:${S}/Lib/plat-linux"
-
-# No ctypes option for python 3
-PYTHONLSBOPTS = ""
-
-do_configure_append() {
-	rm -f ${S}/Makefile.orig
-	autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
-}
-
-do_compile() {
-        # regenerate platform specific files, because they depend on system headers
-        cd ${S}/Lib/plat-linux*
-        include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-                ${S}/Tools/scripts/h2py.py -i '(u_long)' \
-                ${STAGING_INCDIR}/dlfcn.h \
-                ${STAGING_INCDIR}/linux/cdrom.h \
-                ${STAGING_INCDIR}/netinet/in.h \
-                ${STAGING_INCDIR}/sys/types.h
-        sed -e 's,${STAGING_DIR_HOST},,g' -i *.py
-        cd -
-
-
-	# remove any bogus LD_LIBRARY_PATH
-	sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile
-
-	if [ ! -f Makefile.orig ]; then
-		install -m 0644 Makefile Makefile.orig
-	fi
-	sed -i -e 's,^CONFIGURE_LDFLAGS=.*,CONFIGURE_LDFLAGS=-L. -L${STAGING_LIBDIR},g' \
-		-e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \
-		-e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \
-		-e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \
-		-e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \
-		-e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \
-		-e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \
-		Makefile
-	# save copy of it now, because if we do it in do_install and 
-	# then call do_install twice we get Makefile.orig == Makefile.sysroot
-	install -m 0644 Makefile Makefile.sysroot
-
-	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
-		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-		STAGING_LIBDIR=${STAGING_LIBDIR} \
-		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
-		STAGING_INCDIR=${STAGING_INCDIR} \
-		BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-		LIB=${baselib} \
-		ARCH=${TARGET_ARCH} \
-		OPT="${CFLAGS}" libpython3.so
-
-	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
-		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-		STAGING_LIBDIR=${STAGING_LIBDIR} \
-		STAGING_INCDIR=${STAGING_INCDIR} \
-		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
-		BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-		LIB=${baselib} \
-		ARCH=${TARGET_ARCH} \
-		OPT="${CFLAGS}"
-}
-
-do_install() {
-	# make install needs the original Makefile, or otherwise the inclues would
-	# go to ${D}${STAGING...}/...
-	install -m 0644 Makefile.orig Makefile
-
-	install -d ${D}${libdir}/pkgconfig
-	install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config
-
-	# rerun the build once again with original makefile this time
-	# run install in a separate step to avoid compile/install race
-	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
-		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-		STAGING_LIBDIR=${STAGING_LIBDIR} \
-		STAGING_INCDIR=${STAGING_INCDIR} \
-		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
-		BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-		LIB=${baselib} \
-		ARCH=${TARGET_ARCH} \
-		DESTDIR=${D} LIBDIR=${libdir}
-	
-	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
-		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-		STAGING_LIBDIR=${STAGING_LIBDIR} \
-		STAGING_INCDIR=${STAGING_INCDIR} \
-		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
-		BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-		LIB=${baselib} \
-		ARCH=${TARGET_ARCH} \
-		DESTDIR=${D} LIBDIR=${libdir} install
-
-	# avoid conflict with 2to3 from Python 2
-	rm -f ${D}/${bindir}/2to3
-
-	install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
-
-	if [ -e ${WORKDIR}/sitecustomize.py ]; then
-		install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
-	fi
-
-	oe_multilib_header python${PYTHON_BINABI}/pyconfig.h
-}
-
-do_install_append_class-nativesdk () {
-	create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
-}
-
-SSTATE_SCAN_FILES += "Makefile"
-PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
-
-py_package_preprocess () {
-	# copy back the old Makefile to fix target package
-	install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
-	# Remove references to buildmachine paths in target Makefile and _sysconfigdata
-	sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
-		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \
-		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py
-}
-
-require python-${PYTHON_MAJMIN}-manifest.inc
-
-# manual dependency additions
-RPROVIDES_${PN}-core = "${PN}"
-RRECOMMENDS_${PN}-core = "${PN}-readline"
-RRECOMMENDS_${PN}-crypt = "openssl"
-RRECOMMENDS_${PN}-crypt_class-nativesdk = "nativesdk-openssl"
-
-FILES_${PN}-2to3 += "${bindir}/2to3-${PYTHON_MAJMIN}"
-FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
-FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
-
-PACKAGES =+ "${PN}-pyvenv"
-FILES_${PN}-pyvenv += "${bindir}/pyvenv-${PYTHON_MAJMIN} ${bindir}/pyvenv"
-
-# package libpython3
-PACKAGES =+ "libpython3 libpython3-staticdev"
-FILES_libpython3 = "${libdir}/libpython*.so.*"
-FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}/libpython${PYTHON_BINABI}.a"
-INSANE_SKIP_${PN}-dev += "dev-elf"
-
-# catch all the rest (unsorted)
-PACKAGES += "${PN}-misc"
-RDEPENDS_${PN}-misc += "${PN}-core"
-RDEPENDS_${PN}-modules += "${PN}-misc"
-FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
-
-# catch manpage
-PACKAGES += "${PN}-man"
-FILES_${PN}-man = "${datadir}/man"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python3_3.5.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python3_3.5.2.bb
new file mode 100644
index 0000000..e6cbb9c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python3_3.5.2.bb
@@ -0,0 +1,224 @@
+require recipes-devtools/python/python.inc
+
+DEPENDS = "python3-native libffi bzip2 db gdbm openssl readline sqlite3 zlib virtual/libintl xz"
+PR = "${INC_PR}.0"
+PYTHON_MAJMIN = "3.5"
+PYTHON_BINABI= "${PYTHON_MAJMIN}m"
+DISTRO_SRC_URI ?= "file://sitecustomize.py"
+DISTRO_SRC_URI_linuxstdbase = ""
+SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
+file://python-config.patch \
+file://000-cross-compile.patch \
+file://020-dont-compile-python-files.patch \
+file://030-fixup-include-dirs.patch \
+file://070-dont-clean-ipkg-install.patch \
+file://080-distutils-dont_adjust_files.patch \
+file://130-readline-setup.patch \
+file://150-fix-setupterm.patch \
+file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \
+file://tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch \
+${DISTRO_SRC_URI} \
+"
+
+SRC_URI += "\
+            file://03-fix-tkinter-detection.patch \
+            file://avoid_warning_about_tkinter.patch \
+            file://cgi_py.patch \
+            file://host_include_contamination.patch \
+            file://python-3.3-multilib.patch \
+            file://shutil-follow-symlink-fix.patch \
+            file://sysroot-include-headers.patch \
+            file://unixccompiler.patch \
+            file://avoid-ncursesw-include-path.patch \
+            file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
+            file://python3-setup.py-no-host-headers-libs.patch \
+            file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
+            file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
+            file://setup.py-find-libraries-in-staging-dirs.patch \
+            file://configure.ac-fix-LIBPL.patch \
+            file://python3-fix-CVE-2016-1000110.patch \
+           "
+SRC_URI[md5sum] = "8906efbacfcdc7c3c9198aeefafd159e"
+SRC_URI[sha256sum] = "0010f56100b9b74259ebcd5d4b295a32324b58b517403a10d1a2aa7cb22bca40"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6b60258130e4ed10d3101517eb5b9385"
+
+# exclude pre-releases for both python 2.x and 3.x
+UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
+
+S = "${WORKDIR}/Python-${PV}"
+
+inherit autotools multilib_header python3native pkgconfig
+
+CONFIGUREOPTS += " --with-system-ffi "
+
+CACHED_CONFIGUREVARS = "ac_cv_have_chflags=no \
+                ac_cv_have_lchflags=no \
+                ac_cv_have_long_long_format=yes \
+                ac_cv_buggy_getaddrinfo=no \
+                ac_cv_file__dev_ptmx=yes \
+                ac_cv_file__dev_ptc=no \
+"
+
+TARGET_CC_ARCH += "-DNDEBUG -fno-inline"
+SDK_CC_ARCH += "-DNDEBUG -fno-inline"
+EXTRA_OEMAKE += "CROSS_COMPILE=yes"
+EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip"
+
+export CROSS_COMPILE = "${TARGET_PREFIX}"
+export _PYTHON_PROJECT_BASE = "${B}"
+export _PYTHON_PROJECT_SRC = "${S}"
+export CCSHARED = "-fPIC"
+
+# Fix cross compilation of different modules
+export CROSSPYTHONPATH = "${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/:${B}/build/lib.linux-${TARGET_ARCH}-${PYTHON_MAJMIN}:${S}/Lib:${S}/Lib/plat-linux"
+
+# No ctypes option for python 3
+PYTHONLSBOPTS = ""
+
+do_configure_append() {
+	rm -f ${S}/Makefile.orig
+	autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
+}
+
+do_compile() {
+        # regenerate platform specific files, because they depend on system headers
+        cd ${S}/Lib/plat-linux*
+        include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+                ${S}/Tools/scripts/h2py.py -i '(u_long)' \
+                ${STAGING_INCDIR}/dlfcn.h \
+                ${STAGING_INCDIR}/linux/cdrom.h \
+                ${STAGING_INCDIR}/netinet/in.h \
+                ${STAGING_INCDIR}/sys/types.h
+        sed -e 's,${STAGING_DIR_HOST},,g' -i *.py
+        cd -
+
+
+	# remove any bogus LD_LIBRARY_PATH
+	sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile
+
+	if [ ! -f Makefile.orig ]; then
+		install -m 0644 Makefile Makefile.orig
+	fi
+	sed -i -e 's,^CONFIGURE_LDFLAGS=.*,CONFIGURE_LDFLAGS=-L. -L${STAGING_LIBDIR},g' \
+		-e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \
+		-e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \
+		-e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \
+		-e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \
+		-e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \
+		-e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \
+		Makefile
+	# save copy of it now, because if we do it in do_install and 
+	# then call do_install twice we get Makefile.orig == Makefile.sysroot
+	install -m 0644 Makefile Makefile.sysroot
+
+	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
+		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+		STAGING_LIBDIR=${STAGING_LIBDIR} \
+		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+		STAGING_INCDIR=${STAGING_INCDIR} \
+		LIB=${baselib} \
+		ARCH=${TARGET_ARCH} \
+		OPT="${CFLAGS}" libpython3.so
+
+	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
+		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+		STAGING_LIBDIR=${STAGING_LIBDIR} \
+		STAGING_INCDIR=${STAGING_INCDIR} \
+		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+		LIB=${baselib} \
+		ARCH=${TARGET_ARCH} \
+		OPT="${CFLAGS}"
+}
+
+do_install() {
+	# make install needs the original Makefile, or otherwise the inclues would
+	# go to ${D}${STAGING...}/...
+	install -m 0644 Makefile.orig Makefile
+
+	install -d ${D}${libdir}/pkgconfig
+	install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config
+
+	# rerun the build once again with original makefile this time
+	# run install in a separate step to avoid compile/install race
+	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
+		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+		STAGING_LIBDIR=${STAGING_LIBDIR} \
+		STAGING_INCDIR=${STAGING_INCDIR} \
+		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+		LIB=${baselib} \
+		ARCH=${TARGET_ARCH} \
+		DESTDIR=${D} LIBDIR=${libdir}
+	
+	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
+		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+		STAGING_LIBDIR=${STAGING_LIBDIR} \
+		STAGING_INCDIR=${STAGING_INCDIR} \
+		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+		LIB=${baselib} \
+		ARCH=${TARGET_ARCH} \
+		DESTDIR=${D} LIBDIR=${libdir} install
+
+	# avoid conflict with 2to3 from Python 2
+	rm -f ${D}/${bindir}/2to3
+
+	install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+	install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/Makefile
+
+	if [ -e ${WORKDIR}/sitecustomize.py ]; then
+		install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
+	fi
+
+	oe_multilib_header python${PYTHON_BINABI}/pyconfig.h
+}
+
+do_install_append_class-nativesdk () {
+	create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
+}
+
+SSTATE_SCAN_FILES += "Makefile"
+PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
+
+py_package_preprocess () {
+	# copy back the old Makefile to fix target package
+	install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+	install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/Makefile
+	# Remove references to buildmachine paths in target Makefile and _sysconfigdata
+	sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
+		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \
+		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/Makefile \
+		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py
+}
+
+require python-${PYTHON_MAJMIN}-manifest.inc
+
+# manual dependency additions
+RPROVIDES_${PN}-core = "${PN}"
+RRECOMMENDS_${PN}-core = "${PN}-readline"
+RRECOMMENDS_${PN}-crypt = "openssl"
+RRECOMMENDS_${PN}-crypt_class-nativesdk = "nativesdk-openssl"
+
+FILES_${PN}-2to3 += "${bindir}/2to3-${PYTHON_MAJMIN}"
+FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
+FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
+
+PACKAGES =+ "${PN}-pyvenv"
+FILES_${PN}-pyvenv += "${bindir}/pyvenv-${PYTHON_MAJMIN} ${bindir}/pyvenv"
+
+# package libpython3
+PACKAGES =+ "libpython3 libpython3-staticdev"
+FILES_libpython3 = "${libdir}/libpython*.so.*"
+FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}/libpython${PYTHON_BINABI}.a"
+INSANE_SKIP_${PN}-dev += "dev-elf"
+
+# catch all the rest (unsorted)
+PACKAGES += "${PN}-misc"
+RDEPENDS_${PN}-misc += "${PN}-core ${PN}-email ${PN}-codecs ${PN}-textutils ${PN}-argparse"
+RDEPENDS_${PN}-modules += "${PN}-misc"
+FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
+
+# catch manpage
+PACKAGES += "${PN}-man"
+FILES_${PN}-man = "${datadir}/man"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python_2.7.11.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python_2.7.11.bb
deleted file mode 100644
index 606f153..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/python/python_2.7.11.bb
+++ /dev/null
@@ -1,173 +0,0 @@
-require python.inc
-DEPENDS = "python-native libffi bzip2 db gdbm openssl readline sqlite3 zlib"
-PR = "${INC_PR}"
-
-DISTRO_SRC_URI ?= "file://sitecustomize.py"
-DISTRO_SRC_URI_linuxstdbase = ""
-SRC_URI += "\
-  file://01-use-proper-tools-for-cross-build.patch \
-  file://03-fix-tkinter-detection.patch \
-  file://06-avoid_usr_lib_termcap_path_in_linking.patch \
-  ${DISTRO_SRC_URI} \
-  file://multilib.patch \
-  file://cgi_py.patch \
-  file://setup_py_skip_cross_import_check.patch \
-  file://add-md5module-support.patch \
-  file://host_include_contamination.patch \
-  file://fix_for_using_different_libdir.patch \
-  file://setuptweaks.patch \
-  file://check-if-target-is-64b-not-host.patch \
-  file://search_db_h_in_inc_dirs_and_avoid_warning.patch \
-  file://avoid_warning_about_tkinter.patch \
-  file://avoid_warning_for_sunos_specific_module.patch \
-  file://python-2.7.3-remove-bsdb-rpath.patch \
-  file://fix-makefile-for-ptest.patch \
-  file://run-ptest \
-  file://parallel-makeinst-create-bindir.patch \
-  file://use_sysroot_ncurses_instead_of_host.patch \
-  file://avoid_parallel_make_races_on_pgen.patch \
-  file://add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
-"
-
-S = "${WORKDIR}/Python-${PV}"
-
-inherit autotools multilib_header python-dir pythonnative
-
-CONFIGUREOPTS += " --with-system-ffi "
-
-EXTRA_OECONF += "ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no"
-
-do_configure_append() {
-	rm -f ${S}/Makefile.orig
-        autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
-}
-
-do_compile() {
-        # regenerate platform specific files, because they depend on system headers
-        cd ${S}/Lib/plat-linux2
-        include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python-native/python \
-                ${S}/Tools/scripts/h2py.py -i '(u_long)' \
-                ${STAGING_INCDIR}/dlfcn.h \
-                ${STAGING_INCDIR}/linux/cdrom.h \
-                ${STAGING_INCDIR}/netinet/in.h \
-                ${STAGING_INCDIR}/sys/types.h
-        sed -e 's,${STAGING_DIR_HOST},,g' -i *.py
-        cd -
-
-	# remove any bogus LD_LIBRARY_PATH
-	sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile
-
-	if [ ! -f Makefile.orig ]; then
-		install -m 0644 Makefile Makefile.orig
-	fi
-	sed -i -e 's#^LDFLAGS=.*#LDFLAGS=${LDFLAGS} -L. -L${STAGING_LIBDIR}#g' \
-		-e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \
-		-e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \
-		-e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \
-		-e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \
-		-e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \
-		-e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \
-		Makefile
-	# save copy of it now, because if we do it in do_install and 
-	# then call do_install twice we get Makefile.orig == Makefile.sysroot
-	install -m 0644 Makefile Makefile.sysroot
-
-	export CROSS_COMPILE="${TARGET_PREFIX}"
-	export PYTHONBUILDDIR="${B}"
-
-	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
-		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
-		STAGING_LIBDIR=${STAGING_LIBDIR} \
-		STAGING_INCDIR=${STAGING_INCDIR} \
-		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
-		BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-		OPT="${CFLAGS}"
-}
-
-do_install() {
-	# make install needs the original Makefile, or otherwise the inclues would
-	# go to ${D}${STAGING...}/...
-	install -m 0644 Makefile.orig Makefile
-
-	export CROSS_COMPILE="${TARGET_PREFIX}"
-	export PYTHONBUILDDIR="${B}"
-
-	# After swizzling the makefile, we need to run the build again.
-	# install can race with the build so we have to run this first, then install
-	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
-		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
-		CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \
-		STAGING_LIBDIR=${STAGING_LIBDIR} \
-		STAGING_INCDIR=${STAGING_INCDIR} \
-		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
-		BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-		DESTDIR=${D} LIBDIR=${libdir}
-	
-	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
-		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
-		CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \
-		STAGING_LIBDIR=${STAGING_LIBDIR} \
-		STAGING_INCDIR=${STAGING_INCDIR} \
-		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
-		BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
-		DESTDIR=${D} LIBDIR=${libdir} install
-
-	install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
-
-	if [ -e ${WORKDIR}/sitecustomize.py ]; then
-		install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
-	fi
-
-	oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
-}
-
-do_install_append_class-nativesdk () {
-	create_wrapper ${D}${bindir}/python2.7 PYTHONHOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
-}
-
-SSTATE_SCAN_FILES += "Makefile"
-PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
-
-py_package_preprocess () {
-	# copy back the old Makefile to fix target package
-	install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
-
-	# Remove references to buildmachine paths in target Makefile and _sysconfigdata
-	sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
-		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \
-		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py
-}
-
-require python-${PYTHON_MAJMIN}-manifest.inc
-
-# manual dependency additions
-RPROVIDES_${PN}-core = "${PN}"
-RRECOMMENDS_${PN}-core = "${PN}-readline"
-RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python-modules"
-RRECOMMENDS_${PN}-crypt = "openssl"
-
-# package libpython2
-PACKAGES =+ "lib${BPN}2"
-FILES_lib${BPN}2 = "${libdir}/libpython*.so.*"
-
-# catch all the rest (unsorted)
-PACKAGES += "${PN}-misc"
-FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
-RDEPENDS_${PN}-modules += "${PN}-misc"
-RDEPENDS_${PN}-ptest = "${PN}-modules"
-#inherit ptest after "require python-${PYTHON_MAJMIN}-manifest.inc" so PACKAGES doesn't get overwritten
-inherit ptest
-
-# This must come after inherit ptest for the override to take effect
-do_install_ptest() {
-	cp ${B}/Makefile ${D}${PTEST_PATH}
-	sed -e s:LIBDIR/python/ptest:${PTEST_PATH}:g \
-	 -e s:LIBDIR:${libdir}:g \
-	 -i ${D}${PTEST_PATH}/run-ptest
-}
-
-# catch manpage
-PACKAGES += "${PN}-man"
-FILES_${PN}-man = "${datadir}/man"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/python/python_2.7.12.bb b/import-layers/yocto-poky/meta/recipes-devtools/python/python_2.7.12.bb
new file mode 100644
index 0000000..9fe35db
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/python/python_2.7.12.bb
@@ -0,0 +1,171 @@
+require python.inc
+DEPENDS = "python-native libffi bzip2 db gdbm openssl readline sqlite3 zlib"
+PR = "${INC_PR}"
+
+DISTRO_SRC_URI ?= "file://sitecustomize.py"
+DISTRO_SRC_URI_linuxstdbase = ""
+SRC_URI += "\
+  file://01-use-proper-tools-for-cross-build.patch \
+  file://03-fix-tkinter-detection.patch \
+  file://06-avoid_usr_lib_termcap_path_in_linking.patch \
+  ${DISTRO_SRC_URI} \
+  file://multilib.patch \
+  file://cgi_py.patch \
+  file://setup_py_skip_cross_import_check.patch \
+  file://add-md5module-support.patch \
+  file://host_include_contamination.patch \
+  file://fix_for_using_different_libdir.patch \
+  file://setuptweaks.patch \
+  file://check-if-target-is-64b-not-host.patch \
+  file://search_db_h_in_inc_dirs_and_avoid_warning.patch \
+  file://avoid_warning_about_tkinter.patch \
+  file://avoid_warning_for_sunos_specific_module.patch \
+  file://python-2.7.3-remove-bsdb-rpath.patch \
+  file://fix-makefile-for-ptest.patch \
+  file://run-ptest \
+  file://parallel-makeinst-create-bindir.patch \
+  file://use_sysroot_ncurses_instead_of_host.patch \
+  file://add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
+  file://python-fix-CVE-2016-1000110.patch \
+"
+
+S = "${WORKDIR}/Python-${PV}"
+
+inherit autotools multilib_header python-dir pythonnative
+
+CONFIGUREOPTS += " --with-system-ffi "
+
+EXTRA_OECONF += "ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no"
+
+do_configure_append() {
+	rm -f ${S}/Makefile.orig
+        autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
+}
+
+do_compile() {
+        # regenerate platform specific files, because they depend on system headers
+        cd ${S}/Lib/plat-linux2
+        include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python-native/python \
+                ${S}/Tools/scripts/h2py.py -i '(u_long)' \
+                ${STAGING_INCDIR}/dlfcn.h \
+                ${STAGING_INCDIR}/linux/cdrom.h \
+                ${STAGING_INCDIR}/netinet/in.h \
+                ${STAGING_INCDIR}/sys/types.h
+        sed -e 's,${STAGING_DIR_HOST},,g' -i *.py
+        cd -
+
+	# remove any bogus LD_LIBRARY_PATH
+	sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile
+
+	if [ ! -f Makefile.orig ]; then
+		install -m 0644 Makefile Makefile.orig
+	fi
+	sed -i -e 's#^LDFLAGS=.*#LDFLAGS=${LDFLAGS} -L. -L${STAGING_LIBDIR}#g' \
+		-e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \
+		-e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \
+		-e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \
+		-e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \
+		-e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \
+		-e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \
+		Makefile
+	# save copy of it now, because if we do it in do_install and 
+	# then call do_install twice we get Makefile.orig == Makefile.sysroot
+	install -m 0644 Makefile Makefile.sysroot
+
+	export CROSS_COMPILE="${TARGET_PREFIX}"
+	export PYTHONBUILDDIR="${B}"
+
+	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
+		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
+		STAGING_LIBDIR=${STAGING_LIBDIR} \
+		STAGING_INCDIR=${STAGING_INCDIR} \
+		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+		OPT="${CFLAGS}"
+}
+
+do_install() {
+	# make install needs the original Makefile, or otherwise the inclues would
+	# go to ${D}${STAGING...}/...
+	install -m 0644 Makefile.orig Makefile
+
+	export CROSS_COMPILE="${TARGET_PREFIX}"
+	export PYTHONBUILDDIR="${B}"
+
+	# After swizzling the makefile, we need to run the build again.
+	# install can race with the build so we have to run this first, then install
+	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
+		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
+		CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \
+		STAGING_LIBDIR=${STAGING_LIBDIR} \
+		STAGING_INCDIR=${STAGING_INCDIR} \
+		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+		DESTDIR=${D} LIBDIR=${libdir}
+	
+	oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \
+		HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \
+		CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \
+		STAGING_LIBDIR=${STAGING_LIBDIR} \
+		STAGING_INCDIR=${STAGING_INCDIR} \
+		STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+		DESTDIR=${D} LIBDIR=${libdir} install
+
+	install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+
+	if [ -e ${WORKDIR}/sitecustomize.py ]; then
+		install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
+	fi
+
+	oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
+}
+
+do_install_append_class-nativesdk () {
+	create_wrapper ${D}${bindir}/python2.7 PYTHONHOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
+}
+
+SSTATE_SCAN_FILES += "Makefile"
+PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
+
+py_package_preprocess () {
+	# copy back the old Makefile to fix target package
+	install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+
+	# Remove references to buildmachine paths in target Makefile and _sysconfigdata
+	sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
+		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \
+		${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py
+    python -m py_compile ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py
+}
+
+require python-${PYTHON_MAJMIN}-manifest.inc
+
+# manual dependency additions
+RPROVIDES_${PN}-core = "${PN}"
+RRECOMMENDS_${PN}-core = "${PN}-readline"
+RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python-modules"
+RRECOMMENDS_${PN}-crypt = "openssl"
+
+# package libpython2
+PACKAGES =+ "lib${BPN}2"
+FILES_lib${BPN}2 = "${libdir}/libpython*.so.*"
+
+# catch all the rest (unsorted)
+PACKAGES += "${PN}-misc"
+FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
+RDEPENDS_${PN}-modules += "${PN}-misc"
+RDEPENDS_${PN}-ptest = "${PN}-modules"
+#inherit ptest after "require python-${PYTHON_MAJMIN}-manifest.inc" so PACKAGES doesn't get overwritten
+inherit ptest
+
+# This must come after inherit ptest for the override to take effect
+do_install_ptest() {
+	cp ${B}/Makefile ${D}${PTEST_PATH}
+	sed -e s:LIBDIR/python/ptest:${PTEST_PATH}:g \
+	 -e s:LIBDIR:${libdir}:g \
+	 -i ${D}${PTEST_PATH}/run-ptest
+}
+
+# catch manpage
+PACKAGES += "${PN}-man"
+FILES_${PN}-man = "${datadir}/man"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
index 51d1c59..943ca5f 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
@@ -1,15 +1,16 @@
 SUMMARY = "Qemu helper scripts"
 LICENSE = "GPLv2"
-RDEPENDS_${PN} = "nativesdk-qemu"
+RDEPENDS_${PN} = "nativesdk-qemu nativesdk-python3-subprocess \
+                  nativesdk-python3-shell nativesdk-python3-fcntl \
+                "
+
 PR = "r9"
 
-
 LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999 \
-                    file://${COREBASE}/scripts/runqemu;endline=18;md5=77fbe442a88b1bcdc29c3ba67733b21b"
+                    file://${COREBASE}/scripts/runqemu;endline=19;md5=a8ad1905c709a2deaa057608ebaf705a"
 
 
 SRC_URI = "file://${COREBASE}/scripts/runqemu \
-           file://${COREBASE}/scripts/runqemu-internal \
            file://${COREBASE}/scripts/runqemu-addptable2image \
            file://${COREBASE}/scripts/runqemu-gen-tapdevs \
            file://${COREBASE}/scripts/runqemu-ifup \
@@ -18,7 +19,6 @@
            file://${COREBASE}/scripts/runqemu-extract-sdk \
            file://${COREBASE}/scripts/runqemu-export-rootfs \
            file://tunctl.c \
-           file://raw2flash.c \
           "
 
 S = "${WORKDIR}"
@@ -27,8 +27,6 @@
 
 do_compile() {
 	${CC} tunctl.c -o tunctl
-	${CC} raw2flash.c -o raw2flash.spitz
-	${CC} raw2flash.c -o flash2raw.spitz -Dflash2raw
 }
 
 do_install() {
@@ -36,12 +34,4 @@
 	install -m 0755 ${WORKDIR}${COREBASE}/scripts/oe-* ${D}${bindir}/
 	install -m 0755 ${WORKDIR}${COREBASE}/scripts/runqemu* ${D}${bindir}/
 	install tunctl ${D}${bindir}/
-	install raw2flash.spitz ${D}${bindir}/
-	install flash2raw.spitz ${D}${bindir}/
-	ln -fs raw2flash.spitz ${D}${bindir}/raw2flash.akita
-	ln -fs raw2flash.spitz ${D}${bindir}/raw2flash.borzoi
-	ln -fs raw2flash.spitz ${D}${bindir}/raw2flash.terrier
-	ln -fs flash2raw.spitz ${D}${bindir}/flash2raw.akita
-	ln -fs flash2raw.spitz ${D}${bindir}/flash2raw.borzoi
-	ln -fs flash2raw.spitz ${D}${bindir}/flash2raw.terrier
 }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu-helper/raw2flash.c b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu-helper/raw2flash.c
deleted file mode 100644
index 19faf62..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu-helper/raw2flash.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright (c) 2006 OpenedHand Ltd.
- *
- * This file is licensed under GNU GPL v2.
- */
-#include <string.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <stdlib.h>
-
-#define TFR(_)		_
-#define VERBOSE
-#define PBAR_LEN	40
-
-#define PARTITION_START	0x00700000
-
-static const int ecc_pos8[] = {
-	0x0, 0x1, 0x2,
-};
-
-static const int ecc_pos16[] = {
-	0x0, 0x1, 0x2, 0x3, 0x6, 0x7,
-};
-
-static const int ecc_pos64[] = {
-	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-	0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-	0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-};
-
-static const int ecc_akita[] = {
-	0x05, 0x01, 0x02, 0x03, 0x06, 0x07, 0x15, 0x11,
-	0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23,
-	0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37,
-};
-
-struct jffs_marker_s {
-	int pos;
-	uint8_t value;
-};
-
-static const struct jffs_marker_s free_pos8[] = {
-	{ 0x03, 0xff }, { 0x04, 0xff }, { 0x06, 0x85 }, { 0x07, 0x19 },
-	{ -1 },
-};
-
-static const struct jffs_marker_s free_pos16[] = {
-	{ 0x08, 0x85 }, { 0x09, 0x19 }, { 0x0a, 0x03 }, { 0x0b, 0x20 },
-	{ 0x0c, 0x08 }, { 0x0d, 0x00 }, { 0x0e, 0x00 }, { 0x0f, 0x00 },
-	{ -1 },
-};
-
-static const struct jffs_marker_s free_pos64[] = {
-	{ 0x02, 0xff }, { 0x03, 0xff }, { 0x04, 0xff }, { 0x05, 0xff },
-	{ 0x06, 0xff }, { 0x07, 0xff }, { 0x08, 0xff }, { 0x09, 0xff },
-	{ 0x0a, 0xff }, { 0x0b, 0xff }, { 0x0c, 0xff }, { 0x0d, 0xff },
-	{ 0x0e, 0xff }, { 0x0f, 0xff }, { 0x10, 0x85 }, { 0x11, 0x19 },
-	{ 0x12, 0x03 }, { 0x13, 0x20 }, { 0x14, 0x08 }, { 0x15, 0x00 },
-	{ 0x16, 0x00 }, { 0x17, 0x00 }, { 0x18, 0xff }, { 0x19, 0xff },
-	{ 0x1a, 0xff }, { 0x1b, 0xff }, { 0x1c, 0xff }, { 0x1d, 0xff },
-	{ 0x1e, 0xff }, { 0x1f, 0xff }, { 0x20, 0xff }, { 0x21, 0xff },
-	{ 0x22, 0xff }, { 0x23, 0xff }, { 0x24, 0xff }, { 0x25, 0xff },
-	{ 0x26, 0xff }, { 0x27, 0xff },
-	{ -1 },
-};
-
-static const struct jffs_marker_s free_akita[] = {
-	{ 0x08, 0x85 }, { 0x09, 0x19 }, { 0x0a, 0x03 }, { 0x0b, 0x20 },
-	{ 0x0c, 0x08 }, { 0x0d, 0x00 }, { 0x0e, 0x00 }, { 0x0f, 0x00 },
-	{ 0x10, 0xff },
-	{ -1 },
-};
-
-#define LEN(array)	(sizeof(array) / sizeof(*array))
-
-static const struct ecc_style_s {
-	int page_size;
-	int oob_size;
-	int eccbytes;
-	int eccsize;
-	const int *eccpos;
-	int romsize;
-	const struct jffs_marker_s *freepos;
-} spitz = {
-	0x200, 0x10, 0x100, LEN(ecc_pos16), ecc_pos16, 0x01000000, free_pos16
-}, akita = {
-	0x800, 0x40, 0x100, LEN(ecc_akita), ecc_akita, 0x08000000, free_akita
-}, borzoi = {
-	0x800, 0x40, 0x100, LEN(ecc_akita), ecc_akita, 0x08000000, free_akita
-}, terrier = {
-	0x800, 0x40, 0x100, LEN(ecc_akita), ecc_akita, 0x08000000, free_akita
-};
-
-struct ecc_state_s {
-	int count;
-	uint8_t cp;
-	uint8_t lp[2];
-	const struct ecc_style_s *style;
-};
-
-#ifndef flash2raw
-/*
- * Pre-calculated 256-way 1 byte column parity.  Table borrowed from Linux.
- */
-static const uint8_t ecc_precalc_table[] = {
-	0x00, 0x55, 0x56, 0x03, 0x59, 0x0c, 0x0f, 0x5a,
-	0x5a, 0x0f, 0x0c, 0x59, 0x03, 0x56, 0x55, 0x00,
-	0x65, 0x30, 0x33, 0x66, 0x3c, 0x69, 0x6a, 0x3f,
-	0x3f, 0x6a, 0x69, 0x3c, 0x66, 0x33, 0x30, 0x65,
-	0x66, 0x33, 0x30, 0x65, 0x3f, 0x6a, 0x69, 0x3c,
-	0x3c, 0x69, 0x6a, 0x3f, 0x65, 0x30, 0x33, 0x66,
-	0x03, 0x56, 0x55, 0x00, 0x5a, 0x0f, 0x0c, 0x59,
-	0x59, 0x0c, 0x0f, 0x5a, 0x00, 0x55, 0x56, 0x03,
-	0x69, 0x3c, 0x3f, 0x6a, 0x30, 0x65, 0x66, 0x33,
-	0x33, 0x66, 0x65, 0x30, 0x6a, 0x3f, 0x3c, 0x69,
-	0x0c, 0x59, 0x5a, 0x0f, 0x55, 0x00, 0x03, 0x56,
-	0x56, 0x03, 0x00, 0x55, 0x0f, 0x5a, 0x59, 0x0c,
-	0x0f, 0x5a, 0x59, 0x0c, 0x56, 0x03, 0x00, 0x55,
-	0x55, 0x00, 0x03, 0x56, 0x0c, 0x59, 0x5a, 0x0f,
-	0x6a, 0x3f, 0x3c, 0x69, 0x33, 0x66, 0x65, 0x30,
-	0x30, 0x65, 0x66, 0x33, 0x69, 0x3c, 0x3f, 0x6a,
-	0x6a, 0x3f, 0x3c, 0x69, 0x33, 0x66, 0x65, 0x30,
-	0x30, 0x65, 0x66, 0x33, 0x69, 0x3c, 0x3f, 0x6a,
-	0x0f, 0x5a, 0x59, 0x0c, 0x56, 0x03, 0x00, 0x55,
-	0x55, 0x00, 0x03, 0x56, 0x0c, 0x59, 0x5a, 0x0f,
-	0x0c, 0x59, 0x5a, 0x0f, 0x55, 0x00, 0x03, 0x56,
-	0x56, 0x03, 0x00, 0x55, 0x0f, 0x5a, 0x59, 0x0c,
-	0x69, 0x3c, 0x3f, 0x6a, 0x30, 0x65, 0x66, 0x33,
-	0x33, 0x66, 0x65, 0x30, 0x6a, 0x3f, 0x3c, 0x69,
-	0x03, 0x56, 0x55, 0x00, 0x5a, 0x0f, 0x0c, 0x59,
-	0x59, 0x0c, 0x0f, 0x5a, 0x00, 0x55, 0x56, 0x03,
-	0x66, 0x33, 0x30, 0x65, 0x3f, 0x6a, 0x69, 0x3c,
-	0x3c, 0x69, 0x6a, 0x3f, 0x65, 0x30, 0x33, 0x66,
-	0x65, 0x30, 0x33, 0x66, 0x3c, 0x69, 0x6a, 0x3f,
-	0x3f, 0x6a, 0x69, 0x3c, 0x66, 0x33, 0x30, 0x65,
-	0x00, 0x55, 0x56, 0x03, 0x59, 0x0c, 0x0f, 0x5a,
-	0x5a, 0x0f, 0x0c, 0x59, 0x03, 0x56, 0x55, 0x00,
-};
-
-/* Update ECC parity count */
-static inline uint8_t ecc_digest(struct ecc_state_s *s, uint8_t sample) {
-	uint8_t idx = ecc_precalc_table[sample];
-
-	s->cp ^= idx & 0x3f;
-	if (idx & 0x40) {
-		s->lp[0] ^= ~(s->count & 0xff);
-		s->lp[1] ^= s->count & 0xff;
-	}
-	s->count ++;
-
-	return sample;
-}
-
-static void buffer_digest(struct ecc_state_s *ecc,
-		const uint8_t *buf, uint8_t *out) {
-	int i, lp_a[2];
-
-	ecc->lp[0] = 0x00;
-	ecc->lp[1] = 0x00;
-	ecc->cp = 0x00;
-	ecc->count = 0;
-	for (i = 0; i < ecc->style->eccbytes; i ++)
-		ecc_digest(ecc, buf[i]);
-
-# define BSHR(byte, from, to)	((ecc->lp[byte] >> (from - to)) & (1 << to))
-	lp_a[0] =
-		BSHR(0, 4, 0) | BSHR(0, 5, 2) |
-		BSHR(0, 6, 4) | BSHR(0, 7, 6) |
-		BSHR(1, 4, 1) | BSHR(1, 5, 3) |
-		BSHR(1, 6, 5) | BSHR(1, 7, 7);
-
-# define BSHL(byte, from, to)	((ecc->lp[byte] << (to - from)) & (1 << to))
-	lp_a[1] =
-		BSHL(0, 0, 0) | BSHL(0, 1, 2) |
-		BSHL(0, 2, 4) | BSHL(0, 3, 6) |
-		BSHL(1, 0, 1) | BSHL(1, 1, 3) |
-		BSHL(1, 2, 5) | BSHL(1, 3, 7);
-
-	out[0] = ~lp_a[1];
-	out[1] = ~lp_a[0];
-	out[2] = (~ecc->cp << 2) | 0x03;
-}
-
-static void jffs2_format(const struct ecc_state_s *ecc, uint8_t oob[]) {
-	const struct jffs_marker_s *byte;
-	for (byte = ecc->style->freepos; byte->pos >= 0; byte ++)
-		oob[byte->pos] = byte->value;
-}
-
-static void buffer_fill(const struct ecc_state_s *ecc, uint8_t buffer[],
-		int *len, int *partition, int count, uint8_t jffs_buffer[]) {
-	int ret;
-
-	switch (*partition) {
-	case 0:
-		if (count < PARTITION_START) {
-			memcpy(buffer, jffs_buffer + count,
-					ecc->style->eccbytes);
-			*len = ecc->style->eccbytes;
-			break;
-		}
-		*partition = 1;
-	case 1:
-		if (count - PARTITION_START < PARTITION_START) {
-			memcpy(buffer, jffs_buffer + count - PARTITION_START,
-					ecc->style->eccbytes);
-			*len = ecc->style->eccbytes;
-			break;
-		}
-
-		while (*len < ecc->style->eccbytes) {
-			ret = TFR(read(0, buffer + *len, 0x800 - *len));
-			if (ret <= 0)
-				break;
-			*len += ret;
-		}
-
-		if (*len == 0)
-			*partition = 2;
-		else if (*len < ecc->style->eccbytes) {
-			fprintf(stderr, "\nWarning: %i stray bytes\n", *len);
-			memset(buffer + *len, 0xff,
-					ecc->style->eccbytes - *len);
-			*len = ecc->style->eccbytes;
-			break;
-		} else
-			break;
-	case 2:
-		memset(buffer, 0xff, ecc->style->eccbytes);
-		*len = ecc->style->eccbytes;
-		break;
-	}
-}
-
-int main(int argc, char *argv[], char *envp[]) {
-	struct ecc_state_s ecc;
-	uint8_t buffer[0x1000], ecc_payload[0x40], regs[3], *jffs;
-	int ret, len, eccbyte, count, partition;
-
-	/* Check if we're called by "raw2flash.spitz" or similar */
-	len = strlen(argv[0]);
-	if (!strcasecmp(argv[0] + len - 5, "akita"))
-		ecc.style = &akita;
-	else if (!strcasecmp(argv[0] + len - 6, "borzoi"))
-		ecc.style = &borzoi;
-	else if (!strcasecmp(argv[0] + len - 7, "terrier"))
-		ecc.style = &terrier;
-	else
-		ecc.style = &spitz;
-
-# ifdef VERBOSE
-	fprintf(stderr, "[");
-# endif
-
-	/* Skip first 10 bytes */
-	TFR(read(0, buffer, 0x10));
-
-	len = 0;
-	jffs = (uint8_t *) malloc(PARTITION_START);
-	while (len < PARTITION_START) {
-		ret = TFR(read(0, jffs + len, PARTITION_START - len));
-		if (ret <= 0)
-			break;
-		len += ret;
-	}
-
-	/* Convert data from stdin */
-	partition = len = eccbyte = count = 0;
-	memset(ecc_payload, 0xff, ecc.style->oob_size);
-	jffs2_format(&ecc, ecc_payload);
-	while (count < ecc.style->romsize) {
-		buffer_fill(&ecc, buffer, &len, &partition, count, jffs);
-		buffer_digest(&ecc, buffer, regs);
-
-		ecc_payload[ecc.style->eccpos[eccbyte ++]] = regs[0];
-		ecc_payload[ecc.style->eccpos[eccbyte ++]] = regs[1];
-		ecc_payload[ecc.style->eccpos[eccbyte ++]] = regs[2];
-
-		TFR(write(1, buffer, ecc.style->eccbytes));
-		count += ecc.style->eccbytes;
-		len -= ecc.style->eccbytes;
-		memmove(buffer, buffer + ecc.style->eccbytes, len);
-
-		if (eccbyte >= ecc.style->eccsize) {
-			TFR(write(1, ecc_payload, ecc.style->oob_size));
-			eccbyte = 0;
-			memset(ecc_payload, 0xff, ecc.style->oob_size);
-			if (partition < 2)
-				jffs2_format(&ecc, ecc_payload);
-		}
-
-# ifdef VERBOSE
-		if (count * PBAR_LEN / ecc.style->romsize >
-				(count - ecc.style->eccbytes) *
-				PBAR_LEN / ecc.style->romsize)
-			fprintf(stderr, "#");
-# endif
-	}
-
-# ifdef VERBOSE
-	fprintf(stderr, "]\n");
-# endif
-	free(jffs);
-	return 0;
-}
-#else
-int main(int argc, char *argv[], char *envp[]) {
-	struct ecc_state_s ecc;
-	uint8_t buffer[0x1000];
-	int ret, len, count;
-
-	/* Check if we're called by "flash2raw.spitz" or similar */
-	len = strlen(argv[0]);
-	if (!strcasecmp(argv[0] + len - 5, "akita"))
-		ecc.style = &akita;
-	else if (!strcasecmp(argv[0] + len - 6, "borzoi"))
-		ecc.style = &borzoi;
-	else if (!strcasecmp(argv[0] + len - 7, "terrier"))
-		ecc.style = &terrier;
-	else
-		ecc.style = &spitz;
-
-# ifdef VERBOSE
-	fprintf(stderr, "[");
-# endif
-
-	/* Convert data from stdin */
-	count = 0;
-	while (count < ecc.style->romsize) {
-		len = 0;
-		while (len < ecc.style->page_size) {
-			ret = TFR(read(0, buffer + len,
-						ecc.style->page_size - len));
-			if (ret <= 0)
-				break;
-			len += ret;
-		}
-		if (len == 0)
-			break;
-		if (len < ecc.style->page_size) {
-			fprintf(stderr, "\nWarning: %i stray bytes\n", len);
-		}
-
-		TFR(write(1, buffer, ecc.style->page_size));
-
-		count += len;
-		len = 0;
-		while (len < ecc.style->oob_size) {
-			ret = TFR(read(0, buffer, ecc.style->oob_size - len));
-			if (ret <= 0)
-				break;
-			len += ret;
-		}
-
-# ifdef VERBOSE
-		if (count * PBAR_LEN / ecc.style->romsize >
-				(count - ecc.style->page_size) *
-				PBAR_LEN / ecc.style->romsize)
-			fprintf(stderr, "#");
-# endif
-	}
-
-# ifdef VERBOSE
-	fprintf(stderr, "]\n");
-# endif
-	return 0;
-}
-#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu.inc b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu.inc
index 269c898..b46e7f7 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://qemu.org"
 LICENSE = "GPLv2 & LGPLv2.1"
 DEPENDS = "glib-2.0 zlib pixman"
-RDEPENDS_${PN}_class-target += "bash python"
+RDEPENDS_${PN}_class-target += "bash"
 RDEPENDS_${PN}-ptest = "bash make"
 
 require qemu-targets.inc
@@ -21,6 +21,7 @@
     file://wacom.patch \
     file://add-ptest-in-makefile.patch \
     file://run-ptest \
+    file://0001-target-mips-add-24KEc-CPU-definition.patch \
     "
 
 SRC_URI_append_class-native = "\
@@ -30,8 +31,12 @@
 
 EXTRA_OECONF += "--target-list=${@get_qemu_target_list(d)} --disable-werror  --disable-bluez --disable-libiscsi --with-system-pixman --extra-cflags='${CFLAGS}'"
 
-EXTRA_OECONF_class-nativesdk = "--target-list=${@get_qemu_target_list(d)} --disable-werror \
-				"
+EXTRA_OECONF_class-nativesdk = "--target-list=${@get_qemu_target_list(d)} --disable-werror"
+
+EXTRA_OEMAKE_append_class-native = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
+
+LDFLAGS_append_class-native = " -fuse-ld=bfd"
+
 export LIBTOOL="${HOST_SYS}-libtool"
 
 do_configure_prepend_class-native() {
@@ -39,13 +44,12 @@
 	BHOST_PKGCONFIG_PATH=$(PATH=/usr/bin:/bin pkg-config --variable pc_path pkg-config || echo "")
 	if [ ! -z "$BHOST_PKGCONFIG_PATH" ]; then
 		export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$BHOST_PKGCONFIG_PATH
-		# link with system dbus on Ubuntu 15.10
-		# FIXME: remove below 4 lines when oe dbus is upgraded
-		if [ -r /etc/lsb-release -a "$(lsb_release -is)$(lsb_release -rs)" = "Ubuntu15.10" ] ; then
-			libs=$(PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 PKG_CONFIG_PATH=$BHOST_PKGCONFIG_PATH PATH=/usr/bin:/bin pkg-config --libs dbus-1 || echo "")
-			[ -n "$libs" ] && export LDFLAGS="$libs $LDFLAGS"
-		fi
 	fi
+
+	# Alter target makefiles to accept CFLAGS set via env
+	sed -i -r \
+		-e 's/^(C|OP_C|HELPER_C)FLAGS=/\1FLAGS+=/' \
+		"${S}"/Makefile "${S}"/Makefile.target
 }
 
 KVMENABLE = "--enable-kvm"
@@ -72,7 +76,7 @@
 	cp -rL ${B}/tests ${D}${PTEST_PATH}
 	find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
 
-	cp ${S}/tests/Makefile ${D}${PTEST_PATH}/tests
+	cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
 }
 
 do_install () {
@@ -103,9 +107,8 @@
 	"
 PACKAGECONFIG_class-native ??= "fdt alsa uuid"
 PACKAGECONFIG_class-nativesdk ??= "fdt sdl"
-NATIVEDEPS = ""
-NATIVEDEPS_class-native = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxext-native', '',d)}"
-PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,libsdl ${NATIVEDEPS},"
+
+PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,libsdl"
 PACKAGECONFIG[virtfs] = "--enable-virtfs --enable-attr,--disable-virtfs,libcap attr,"
 PACKAGECONFIG[aio] = "--enable-linux-aio,--disable-linux-aio,libaio,"
 PACKAGECONFIG[xfs] = "--enable-xfsctl,--disable-xfsctl,xfsprogs,"
@@ -117,7 +120,7 @@
 PACKAGECONFIG[nss] = "--enable-smartcard,--disable-smartcard,nss,"
 PACKAGECONFIG[uuid] = "--enable-uuid,--disable-uuid,util-linux,"
 PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses,"
-PACKAGECONFIG[gtk+] = "--enable-gtk --enable-vte,--disable-gtk --disable-vte,gtk+ libvte,"
+PACKAGECONFIG[gtk+] = "--enable-gtk --with-gtkabi=3.0 --enable-vte,--disable-gtk --disable-vte,gtk+3 vte"
 PACKAGECONFIG[libcap-ng] = "--enable-cap-ng,--disable-cap-ng,libcap-ng,"
 PACKAGECONFIG[ssh2] = "--enable-libssh2,--disable-libssh2,libssh2,"
 PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,gcrypt,"
@@ -129,6 +132,7 @@
 PACKAGECONFIG[lzo] = "--enable-lzo,--disable-lzo,lzo"
 PACKAGECONFIG[numa] = "--enable-numa,--disable-numa,numactl"
 PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls"
+PACKAGECONFIG[bzip2] = "--enable-bzip2,--disable-bzip2,bzip2"
 
 EXTRA_OECONF += "${@bb.utils.contains('PACKAGECONFIG', 'alsa', '--audio-drv-list=oss,alsa', '', d)}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/0001-target-mips-add-24KEc-CPU-definition.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/0001-target-mips-add-24KEc-CPU-definition.patch
new file mode 100644
index 0000000..c4dbee7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/0001-target-mips-add-24KEc-CPU-definition.patch
@@ -0,0 +1,54 @@
+From 926bc194f918d46bd93557b15da8153b6a94a1d5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 25 Jul 2016 23:58:22 +0100
+Subject: [PATCH] target-mips: add 24KEc CPU definition
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Define a new CPU definition supporting 24KEc cores, similar to
+the existing 24Kc, but with added support for DSP instructions
+and MIPS16e (and without FPU).
+
+Signed-off-by: André Draszik <git@andred.net>
+---
+Upstream-Status: Submitted [http://lists.nongnu.org/archive/html/qemu-devel/2016-07/msg05778.html]
+ target-mips/translate_init.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+diff --git a/target-mips/translate_init.c b/target-mips/translate_init.c
+index 39ed5c4..6ae23e4 100644
+--- a/target-mips/translate_init.c
++++ b/target-mips/translate_init.c
+@@ -256,6 +256,28 @@ static const mips_def_t mips_defs[] =
+         .mmu_type = MMU_TYPE_R4000,
+     },
+     {
++        .name = "24KEc",
++        .CP0_PRid = 0x00019600,
++        .CP0_Config0 = MIPS_CONFIG0 | (0x1 << CP0C0_AR) |
++                       (MMU_TYPE_R4000 << CP0C0_MT),
++        .CP0_Config1 = MIPS_CONFIG1 | (15 << CP0C1_MMU) |
++                       (0 << CP0C1_IS) | (3 << CP0C1_IL) | (1 << CP0C1_IA) |
++                       (0 << CP0C1_DS) | (3 << CP0C1_DL) | (1 << CP0C1_DA) |
++                       (1 << CP0C1_CA),
++        .CP0_Config2 = MIPS_CONFIG2,
++        .CP0_Config3 = MIPS_CONFIG3 | (1 << CP0C3_DSPP) | (0 << CP0C3_VInt),
++        .CP0_LLAddr_rw_bitmask = 0,
++        .CP0_LLAddr_shift = 4,
++        .SYNCI_Step = 32,
++        .CCRes = 2,
++        /* we have a DSP, but no FPU */
++        .CP0_Status_rw_bitmask = 0x1378FF1F,
++        .SEGBITS = 32,
++        .PABITS = 32,
++        .insn_flags = CPU_MIPS32R2 | ASE_MIPS16 | ASE_DSP,
++        .mmu_type = MMU_TYPE_R4000,
++    },
++    {
+         .name = "24Kf",
+         .CP0_PRid = 0x00019300,
+         .CP0_Config0 = MIPS_CONFIG0 | (0x1 << CP0C0_AR) |
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-1568.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-1568.patch
deleted file mode 100644
index 56fd346..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-1568.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 4ab0359a8ae182a7ac5c99609667273167703fab Mon Sep 17 00:00:00 2001
-From: Prasad J Pandit <pjp@fedoraproject.org>
-Date: Mon, 11 Jan 2016 14:10:42 -0500
-Subject: [PATCH] ide: ahci: reset ncq object to unused on error
-
-When processing NCQ commands, AHCI device emulation prepares a
-NCQ transfer object; To which an aio control block(aiocb) object
-is assigned in 'execute_ncq_command'. In case, when the NCQ
-command is invalid, the 'aiocb' object is not assigned, and NCQ
-transfer object is left as 'used'. This leads to a use after
-free kind of error in 'bdrv_aio_cancel_async' via 'ahci_reset_port'.
-Reset NCQ transfer object to 'unused' to avoid it.
-
-[Maintainer edit: s/ACHI/AHCI/ in the commit message. --js]
-
-Reported-by: Qinghao Tang <luodalongde@gmail.com>
-Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
-Reviewed-by: John Snow <jsnow@redhat.com>
-Message-id: 1452282511-4116-1-git-send-email-ppandit@redhat.com
-Signed-off-by: John Snow <jsnow@redhat.com>
-
-Upstream-Status: Backport
-
-http://git.qemu.org/?p=qemu.git;a=commit;h=4ab0359a8ae182a7ac5c99609667273167703fab
-
-CVE: CVE-2016-1568
-[Yocto # 9013]
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- hw/ide/ahci.c | 1 +
- 1 file changed, 1 insertion(+)
-
-Index: qemu-2.5.0/hw/ide/ahci.c
-===================================================================
---- qemu-2.5.0.orig/hw/ide/ahci.c
-+++ qemu-2.5.0/hw/ide/ahci.c
-@@ -910,6 +910,7 @@ static void ncq_err(NCQTransferState *nc
-     ide_state->error = ABRT_ERR;
-     ide_state->status = READY_STAT | ERR_STAT;
-     ncq_tfs->drive->port_regs.scr_err |= (1 << ncq_tfs->tag);
-+    ncq_tfs->used = 0;
- }
- 
- static void ncq_finish(NCQTransferState *ncq_tfs)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-2197.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-2197.patch
deleted file mode 100644
index 946435c..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-2197.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From: Prasad J Pandit <address@hidden>
-
-When IDE AHCI emulation uses Frame Information Structures(FIS)
-engine for data transfer, the mapped FIS buffer address is stored
-in a static 'bounce.buffer'. When a request is made to map another
-memory region, address_space_map() returns NULL because
-'bounce.buffer' is in_use. It leads to a null pointer dereference
-error while doing 'dma_memory_unmap'. Add a check to avoid it.
-
-Reported-by: Zuozhi fzz <address@hidden>
-Signed-off-by: Prasad J Pandit <address@hidden>
-
-Upstream-Status: Backport
-https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg05740.html
-
-CVE: CVE-2016-2197
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- hw/ide/ahci.c | 16 ++++++++++------
-  1 file changed, 10 insertions(+), 6 deletions(-)
-
-  Update as per review
-    -> https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg05715.html
-
-Index: qemu-2.5.0/hw/ide/ahci.c
-===================================================================
---- qemu-2.5.0.orig/hw/ide/ahci.c
-+++ qemu-2.5.0/hw/ide/ahci.c
-@@ -661,9 +661,11 @@ static bool ahci_map_fis_address(AHCIDev
- 
- static void ahci_unmap_fis_address(AHCIDevice *ad)
- {
--    dma_memory_unmap(ad->hba->as, ad->res_fis, 256,
--                     DMA_DIRECTION_FROM_DEVICE, 256);
--    ad->res_fis = NULL;
-+    if (ad->res_fis) {
-+        dma_memory_unmap(ad->hba->as, ad->res_fis, 256,
-+                         DMA_DIRECTION_FROM_DEVICE, 256);
-+        ad->res_fis = NULL;
-+    }
- }
- 
- static bool ahci_map_clb_address(AHCIDevice *ad)
-@@ -677,9 +679,11 @@ static bool ahci_map_clb_address(AHCIDev
- 
- static void ahci_unmap_clb_address(AHCIDevice *ad)
- {
--    dma_memory_unmap(ad->hba->as, ad->lst, 1024,
--                     DMA_DIRECTION_FROM_DEVICE, 1024);
--    ad->lst = NULL;
-+    if (ad->lst) {
-+        dma_memory_unmap(ad->hba->as, ad->lst, 1024,
-+                         DMA_DIRECTION_FROM_DEVICE, 1024);
-+        ad->lst = NULL;
-+    }
- }
- 
- static void ahci_write_fis_sdb(AHCIState *s, NCQTransferState *ncq_tfs)
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-2198.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-2198.patch
deleted file mode 100644
index f1201f0..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/CVE-2016-2198.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Prasad J Pandit <address@hidden>
-
-USB Ehci emulation supports host controller capability registers.
-But its mmio '.write' function was missing, which lead to a null
-pointer dereference issue. Add a do nothing 'ehci_caps_write'
-definition to avoid it; Do nothing because capability registers
-are Read Only(RO).
-
-Reported-by: Zuozhi Fzz <address@hidden>
-Signed-off-by: Prasad J Pandit <address@hidden>
-
-Upstream-Status: Backport
-https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg05899.html
-
-CVE: CVE-2016-2198
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- hw/usb/hcd-ehci.c | 6 ++++++
-  1 file changed, 6 insertions(+)
-
-Index: qemu-2.5.0/hw/usb/hcd-ehci.c
-===================================================================
---- qemu-2.5.0.orig/hw/usb/hcd-ehci.c
-+++ qemu-2.5.0/hw/usb/hcd-ehci.c
-@@ -893,6 +893,11 @@ static uint64_t ehci_caps_read(void *ptr
-     return s->caps[addr];
- }
- 
-+static void ehci_caps_write(void *ptr, hwaddr addr,
-+                             uint64_t val, unsigned size)
-+{
-+}
-+
- static uint64_t ehci_opreg_read(void *ptr, hwaddr addr,
-                                 unsigned size)
- {
-@@ -2310,6 +2315,7 @@ static void ehci_frame_timer(void *opaqu
- 
- static const MemoryRegionOps ehci_mmio_caps_ops = {
-     .read = ehci_caps_read,
-+    .write = ehci_caps_write,
-     .valid.min_access_size = 1,
-     .valid.max_access_size = 4,
-     .impl.min_access_size = 1,
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/add-ptest-in-makefile.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/add-ptest-in-makefile.patch
index a99f720..2ce3478 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/add-ptest-in-makefile.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/add-ptest-in-makefile.patch
@@ -4,14 +4,14 @@
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
 ---
- tests/Makefile |   10 ++++++++++
- 1 file changed, 10 insertions(+)
+ tests/Makefile.include | 8 ++++++++
+ 1 file changed, 8 insertions(+)
 
-diff --git a/tests/Makefile b/tests/Makefile
-index 88f7105..3f40b4b 100644
---- a/tests/Makefile
-+++ b/tests/Makefile
-@@ -405,3 +405,12 @@ all: $(QEMU_IOTESTS_HELPERS-y)
+diff --git a/tests/Makefile.include b/tests/Makefile.include
+index 14be491..0fce37a 100644
+--- a/tests/Makefile.include
++++ b/tests/Makefile.include
+@@ -776,3 +776,11 @@ all: $(QEMU_IOTESTS_HELPERS-y)
  
  -include $(wildcard tests/*.d)
  -include $(wildcard tests/libqos/*.d)
@@ -23,7 +23,6 @@
 +		nf=$$(echo $$f | sed 's/tests\//\.\//g'); \
 +		$$nf; \
 +	done
-+
---
-1.7.9.5
+-- 
+2.9.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/disable-grabs.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/disable-grabs.patch
index 41726b1..123833f 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/disable-grabs.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/disable-grabs.patch
@@ -29,9 +29,9 @@
 --- a/ui/sdl.c
 +++ b/ui/sdl.c
 @@ -59,6 +59,10 @@ static SDL_Cursor *guest_sprite = NULL;
- static SDL_PixelFormat host_format;
  static int scaling_active = 0;
  static Notifier mouse_mode_notifier;
+ static int idle_counter;
 +#ifndef True
 +#define True 1
 +#endif
@@ -40,7 +40,7 @@
  static void sdl_update(DisplayChangeListener *dcl,
                         int x, int y, int w, int h)
 @@ -384,14 +388,16 @@ static void sdl_grab_start(void)
-             SDL_WarpMouse(guest_x, guest_y);
+             }
      } else
          sdl_hide_cursor();
 -    SDL_WM_GrabInput(SDL_GRAB_ON);
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/fix-libcap-header-issue-on-some-distro.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/fix-libcap-header-issue-on-some-distro.patch
index 13a6ea2..cee6a67 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/fix-libcap-header-issue-on-some-distro.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/fix-libcap-header-issue-on-some-distro.patch
@@ -67,9 +67,9 @@
  #include <sys/vfs.h>
  #include <sys/ioctl.h>
 @@ -26,7 +25,11 @@
- #include "virtio-9p-marshal.h"
- #include "hw/9pfs/virtio-9p-proxy.h"
- #include "fsdev/virtio-9p-marshal.h"
+ #include "9p-iov-marshal.h"
+ #include "hw/9pfs/9p-proxy.h"
+ #include "fsdev/9p-iov-marshal.h"
 -
 +/*
 + * Include this one last due to some versions of it being buggy:
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/qemu-2.5.0-cflags.patch b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/qemu-2.5.0-cflags.patch
new file mode 100644
index 0000000..173394f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/qemu-2.5.0-cflags.patch
@@ -0,0 +1,13 @@
+--- a/configure
++++ b/configure
+@@ -4468,10 +4468,6 @@ fi
+ if test "$gcov" = "yes" ; then
+   CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
+   LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
+-elif test "$fortify_source" = "yes" ; then
+-  CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
+-elif test "$debug" = "no"; then
+-  CFLAGS="-O2 $CFLAGS"
+ fi
+ 
+ ##########################################
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu_2.5.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu_2.5.0.bb
deleted file mode 100644
index e9d9a8d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu_2.5.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require qemu.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
-                    file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
-
-SRC_URI += "file://configure-fix-Darwin-target-detection.patch \
-            file://qemu-enlarge-env-entry-size.patch \
-            file://Qemu-Arm-versatilepb-Add-memory-size-checking.patch \
-            file://no-valgrind.patch \
-            file://CVE-2016-1568.patch \
-            file://CVE-2016-2197.patch \
-            file://CVE-2016-2198.patch \
-            file://pathlimit.patch \
-           "
-SRC_URI_prepend = "http://wiki.qemu-project.org/download/${BP}.tar.bz2"
-SRC_URI[md5sum] = "f469f2330bbe76e3e39db10e9ac4f8db"
-SRC_URI[sha256sum] = "3443887401619fe33bfa5d900a4f2d6a79425ae2b7e43d5b8c36eb7a683772d4"
-
-COMPATIBLE_HOST_class-target_mips64 = "null"
-
-do_install_append() {
-    # Prevent QA warnings about installed ${localstatedir}/run
-    if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu_2.7.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu_2.7.0.bb
new file mode 100644
index 0000000..619b8ed
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu_2.7.0.bb
@@ -0,0 +1,23 @@
+require qemu.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+                    file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
+
+SRC_URI += "file://configure-fix-Darwin-target-detection.patch \
+            file://qemu-enlarge-env-entry-size.patch \
+            file://Qemu-Arm-versatilepb-Add-memory-size-checking.patch \
+            file://no-valgrind.patch \
+            file://pathlimit.patch \
+            file://qemu-2.5.0-cflags.patch \
+"
+
+SRC_URI_prepend = "http://wiki.qemu-project.org/download/${BP}.tar.bz2"
+SRC_URI[md5sum] = "08d4d06d1cb598efecd796137f4844ab"
+SRC_URI[sha256sum] = "326e739506ba690daf69fc17bd3913a6c313d9928d743bd8eddb82f403f81e53"
+
+COMPATIBLE_HOST_class-target_mips64 = "null"
+
+do_install_append() {
+    # Prevent QA warnings about installed ${localstatedir}/run
+    if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
index 7f4c6d9..53b302d 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
@@ -41,10 +41,6 @@
 	chmod +x ${D}${bindir_crossscripts}/qemuwrapper
 }
 
-SYSROOT_PREPROCESS_FUNCS += "qemuwrapper_sysroot_preprocess"
-
-qemuwrapper_sysroot_preprocess () {
-	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
-}
+SYSROOT_DIRS += "${bindir_crossscripts}"
 
 INHIBIT_DEFAULT_DEPS = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/quilt/quilt.inc b/import-layers/yocto-poky/meta/recipes-devtools/quilt/quilt.inc
index 4e393c4..512b798 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/quilt/quilt.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/quilt/quilt.inc
@@ -48,10 +48,10 @@
 }
 
 do_install_ptest() {
-	tar -cf - bin/ --exclude \*.in | ( cd ${D}${PTEST_PATH} && tar -xf - )
-	tar -cf - compat/ --exclude \*.in | ( cd ${D}${PTEST_PATH} && tar -xf - )
-	tar -cf - quilt/ --exclude \*.in | ( cd ${D}${PTEST_PATH} && tar -xf - )
-	tar -cf - test/ --exclude mail.test --exclude delete.test | ( cd ${D}${PTEST_PATH} && tar -xf - && chmod 777 test)
+	tar -c --exclude=\*.in bin/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
+	tar -c --exclude=\*.in compat/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
+	tar -c --exclude=\*.in quilt/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
+	tar -c --exclude=mail.test --exclude=delete.test test/ | ( cd ${D}${PTEST_PATH} && tar -xf - && chmod 777 test)
 	cp ${WORKDIR}/Makefile ${D}${PTEST_PATH}
 	cp ${WORKDIR}/test.sh ${D}${PTEST_PATH}
 }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/0001-system.h-query.c-support-nosignature.patch b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/0001-system.h-query.c-support-nosignature.patch
new file mode 100644
index 0000000..77dc5b6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/0001-system.h-query.c-support-nosignature.patch
@@ -0,0 +1,63 @@
+From d8fcc3cbeec4defb5babde5bd09ea294dd3fd08b Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Sun, 3 Jul 2016 19:01:59 -0700
+Subject: [PATCH] system.h/query.c: support nosignature
+
+* Define SUPPORT_NOSIGNATURES to 1 in system.h
+* !QVA_ISSET(qva->qva_flags, SIGNATURE) -> QVA_ISSET(qva->qva_flags, SIGNATURE),
+  otherwise, when use --nosignature would read database and verify
+  signature, this is not expected.
+
+Upstream-Status: Submitted [Sent email to rpm-devel@rpm5.org]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ lib/query.c | 6 +++---
+ system.h    | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/lib/query.c b/lib/query.c
+index 50a7453..b761d76 100644
+--- a/lib/query.c
++++ b/lib/query.c
+@@ -954,19 +954,19 @@ JBJDEBUG((stderr, "--> %s(%p,%p,%p)\n", __FUNCTION__, ts, qva, argv));
+     vsflags = (rpmVSFlags) rpmExpandNumeric("%{?_vsflags_query}");
+     vsflags = (rpmVSFlags) 0;	/* XXX FIXME: ignore default disablers. */
+ #if defined(SUPPORT_NOSIGNATURES)
+-    if (!QVA_ISSET(qva->qva_flags, DIGEST)) {
++    if (QVA_ISSET(qva->qva_flags, DIGEST)) {
+ 	VSF_SET(vsflags, NOSHA1HEADER);
+ 	VSF_SET(vsflags, NOMD5HEADER);
+ 	VSF_SET(vsflags, NOSHA1);
+ 	VSF_SET(vsflags, NOMD5);
+     }
+-    if (!QVA_ISSET(qva->qva_flags, SIGNATURE)) {
++    if (QVA_ISSET(qva->qva_flags, SIGNATURE)) {
+ 	VSF_SET(vsflags, NODSAHEADER);
+ 	VSF_SET(vsflags, NORSAHEADER);
+ 	VSF_SET(vsflags, NODSA);
+ 	VSF_SET(vsflags, NORSA);
+     }
+-    if (!QVA_ISSET(qva->qva_flags, HDRCHK)) {
++    if (QVA_ISSET(qva->qva_flags, HDRCHK)) {
+ 	VSF_SET(vsflags, NOHDRCHK);
+     }
+     VSF_CLR(vsflags, NEEDPAYLOAD);	/* XXX needed? */
+diff --git a/system.h b/system.h
+index 2ff8906..ad4619a 100644
+--- a/system.h
++++ b/system.h
+@@ -787,9 +787,9 @@ static inline const char *rcsid(const char *p) { \
+ #define SUPPORT_I18NSTRING_TYPE	1
+ 
+ /**
+- * Eliminate signature/digest disablers.
++ * Signature/digest disablers.
+  */
+-#undef	SUPPORT_NOSIGNATURES
++#define SUPPORT_NOSIGNATURES 1
+ 
+ /**
+  * Permit ar(1) payloads. Disabled while rpmio/iosm.c is under development.
+-- 
+2.9.0
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch
new file mode 100644
index 0000000..0a372c6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/gcc6-stdlib.patch
@@ -0,0 +1,54 @@
+gcc6 has fixed a long standing c++ include issue where <cheader>
+was different from <header.h> inclusion via
+
+https://gcc.gnu.org/ml/libstdc++/2016-01/msg00025.html
+
+and its also descibed in https://gcc.gnu.org/gcc-6/porting_to.html
+rpmio component uses some .cpp and .cc fies which need to use
+C stdlib.h from C library and not the C++ libstdc++ header
+therefore we pass _GLIBCXX_INCLUDE_NEXT_C_HEADERS so that it
+keeps the old behavior
+
+/a/build/tmp/sysroots/raspberrypi2/usr/include/c++/6.0.1/cstdlib:143:11: error: '::getenv' has not been declared
+   using ::getenv;
+           ^~~~~~
+In file included from ../../rpm-5.4.15/system.h:201:0,
+                 from ../../rpm-5.4.15/rpmio/rpmjs.cpp:1:
+/a/build/tmp/sysroots/raspberrypi2/usr/include/c++/6.0.1/stdlib.h:62:12: error: 'std::getenv' has not been declared
+ using std::getenv;
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: rpm-5.4.15/rpmio/Makefile.am
+===================================================================
+--- rpm-5.4.15.orig/rpmio/Makefile.am
++++ rpm-5.4.15/rpmio/Makefile.am
+@@ -151,7 +151,7 @@ librpmio_la_SOURCES = \
+ 	groestl.c hamsi.c jh.c keccak.c lane.c luffa.c md2.c md6.c radiogatun.c\
+ 	salsa10.c salsa20.c shabal.c shavite3.c simd.c skein.c tib3.c tiger.c \
+ 	rpmgit.c rpmio-stub.c \
+-	rpmjs.cpp rpmjsio.c rpmkeyring.c \
++	rpmjni.cc rpmjs.cpp rpmjsio.c rpmkeyring.c \
+ 	rpmnix.c rpmodbc.c rpmsql.c set.c \
+ 	ar.c \
+ 	argv.c \
+@@ -195,7 +195,6 @@ librpmio_la_SOURCES = \
+ 	rpmhook.c \
+ 	rpmio.c \
+ 	rpmiob.c \
+-	rpmjni.cc \
+ 	rpmku.c \
+ 	rpmlog.c \
+ 	rpmltc.c \
+@@ -279,7 +278,9 @@ keccak.lo: $(top_srcdir)/rpmio/keccak.c
+ #rpmjs.lo: $(top_srcdir)/rpmio/rpmjs.c
+ #	@$(LTCOMPILE) -O0 -c $<
+ rpmjs.lo: $(top_srcdir)/rpmio/rpmjs.cpp
+-	@$(LTCOMPILE) -O0 -c $<
++	@$(LTCOMPILE) -O0 -c -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS $<
++rpmjni.lo: $(top_srcdir)/rpmio/rpmjni.cc
++	@$(LTCOMPILE) -O0 -c -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS $<
+ 
+ YACC = byacc -d
+ getdate.c: getdate.y
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpm-ensure-rpm2cpio-call-rpm-relocation-code.patch b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpm-ensure-rpm2cpio-call-rpm-relocation-code.patch
new file mode 100644
index 0000000..63af100
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpm-ensure-rpm2cpio-call-rpm-relocation-code.patch
@@ -0,0 +1,25 @@
+We need to call rpmcliInit to ensure the rpm relocation code is called
+and it correctly honours the relocation environmental variables.
+
+when we export the wrsdk and source the sdk, then execute rpm2cpio xxx.rpm|cpio -t.
+we will get the following error :
+"rpm-5.4.14/rpmdb/dbconfig.c:493:
+db3New: Assertion `dbOpts != ((void *)0) && *dbOpts != '\0'' failed.
+
+Upstream-Status: Pending
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+Index: rpm-5.4.15/tools/rpm2cpio.c
+===================================================================
+--- rpm-5.4.15.orig/tools/rpm2cpio.c	2012-04-27 01:46:51.000000000 +0800
++++ rpm-5.4.15/tools/rpm2cpio.c	2016-09-05 11:07:30.419903338 +0800
+@@ -87,6 +87,8 @@
+ #endif
+ 	(void) rpmtsSetVSFlags(ts, vsflags);
+ 
++	rpmcliInit(argc, argv, NULL);
++
+ 	/*@-mustmod@*/      /* LCL: segfault */
+ 	rc = rpmReadPackageFile(ts, fdi, "rpm2cpio", &h);
+ 	/*@=mustmod@*/
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch
index 809e54e..3a6f874 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch
@@ -5,32 +5,10 @@
 Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
 
 diff --git a/rpmdb/signature.c b/rpmdb/signature.c
-index dce6c4e..a1d0f06 100644
+index 100204b..e56ab3d 100644
 --- a/rpmdb/signature.c
 +++ b/rpmdb/signature.c
-@@ -37,6 +37,7 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr)
-     int temput;
-     FD_t fd = NULL;
-     unsigned int ran;
-+    int ret = 0;
- 
-     if (!prefix) prefix = "";
- 
-@@ -44,8 +45,11 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr)
-     if (!_initialized) {
- 	_initialized = 1;
- 	tempfn = rpmGenPath(prefix, tpmacro, NULL);
--	if (rpmioMkpath(tempfn, 0755, (uid_t) -1, (gid_t) -1))
--	    goto errxit;
-+        ret = rpmioMkpath(tempfn, 0755, (uid_t) -1, (gid_t) -1);
-+        if (ret) {
-+            rpmlog(RPMLOG_ERR, _("error creating temporary directory %s: %d\n"), tempfn, ret);
-+            goto errxit;
-+        }
-     }
- 
-     /* XXX should probably use mkstemp here */
-@@ -68,12 +72,16 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr)
+@@ -72,12 +72,16 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr)
  #endif
  
  	temput = urlPath(tempfn, &tfn);
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpmdb-prevent-race-in-tmpdir-creation.patch b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpmdb-prevent-race-in-tmpdir-creation.patch
new file mode 100644
index 0000000..f483f3a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/rpmdb-prevent-race-in-tmpdir-creation.patch
@@ -0,0 +1,41 @@
+rpmdb: prevent race in tmpdir creation
+
+If two (or more) instances of rpm are running at the same time they may
+be trying to create the same (base-)temporary directory at the same time
+which causes the other mkdir to fail with EEXIST. This patch prevents a
+failure caused by this race by ignoring EEXIST error on directory
+creation.
+
+Upstream-Status: Pending
+
+Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+
+diff --git a/rpmdb/signature.c b/rpmdb/signature.c
+index dce6c4e..100204b 100644
+--- a/rpmdb/signature.c
++++ b/rpmdb/signature.c
+@@ -37,6 +37,7 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr)
+     int temput;
+     FD_t fd = NULL;
+     unsigned int ran;
++    int ret = 0;
+ 
+     if (!prefix) prefix = "";
+ 
+@@ -44,8 +45,11 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr)
+     if (!_initialized) {
+ 	_initialized = 1;
+ 	tempfn = rpmGenPath(prefix, tpmacro, NULL);
+-	if (rpmioMkpath(tempfn, 0755, (uid_t) -1, (gid_t) -1))
+-	    goto errxit;
++        ret = rpmioMkpath(tempfn, 0755, (uid_t) -1, (gid_t) -1);
++        if (ret && ret != EEXIST) {
++            rpmlog(RPMLOG_ERR, _("error creating temporary directory %s: %d\n"), tempfn, ret);
++            goto errxit;
++        }
+     }
+ 
+     /* XXX should probably use mkstemp here */
+-- 
+2.6.6
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm_5.4+cvs.bb b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm_5.4+cvs.bb
deleted file mode 100644
index 0991f6d..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm_5.4+cvs.bb
+++ /dev/null
@@ -1,730 +0,0 @@
-SUMMARY = "The RPM package management system"
-DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
-package management system capable of installing, uninstalling, \
-verifying, querying, and updating software packages. Each software \
-package consists of an archive of files along with information about \
-the package like its version, a description, etc."
-
-SUMMARY_${PN}-libs = "Libraries for manipulating RPM packages"
-DESCRIPTION_${PN}-libs = "This package contains the RPM shared libraries."
-
-SUMMARY_${PN}-dev = "Development files for manipulating RPM packages"
-DESCRIPTION_${PN}-dev = "This package contains the RPM C library and header files. These \
-development files will simplify the process of writing programs that \
-manipulate RPM packages and databases. These files are intended to \
-simplify the process of creating graphical package managers or any \
-other tools that need an intimate knowledge of RPM packages in order \
-to function."
-
-SUMMARY_${PN}-common = "Common RPM paths, scripts, documentation and configuration"
-DESCRIPTION_${PN}-common = "The rpm-common package contains paths, scripts, documentation \
-and configuration common between RPM Package Manager."
-
-SUMMARY_${PN}-build = "Scripts and executable programs used to build packages"
-DESCRIPTION_${PN}-build = "The rpm-build packagec ontains the scripts and executable programs \
-that are used to build packages using the RPM Package Manager."
-
-SUMMARY_python-rpm = "Python bindings for apps which will manupulate RPM packages"
-DESCRIPTION_python-rpm = "The rpm-python package contains a module that permits applications \
-written in the Python programming language to use the interface \
-supplied by the RPM Package Manager libraries."
-
-SUMMARY_perl-module-rpm = "Perl bindings for apps which will manipulate RPM packages"
-DESCRIPTION_perl-modules-rpm = "The perl-modules-rpm package contains a module that permits applications \
-written in the Perl programming language to use the interface \
-supplied by the RPM Package Manager libraries."
-
-HOMEPAGE = "http://rpm5.org/"
-LICENSE = "LGPLv2.1 & Apache-2.0"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
-LIC_FILES_CHKSUM += "file://rpmio/mongo.c;begin=5;end=18;md5=d8327ba2c71664c059143e6d333b8901"
-
-# We must have gettext-native, we need gettextize, which may not be provided
-DEPENDS = "libpcre attr acl ossp-uuid file byacc-native gettext-native"
-DEPENDS_append_class-native = " file-replacement-native"
-
-# Apply various fixups that are unique to the CVS environment
-do_fixup_unpack () {
-	# 'ln' isn't reliable, and 'mv' could break later builds
-	rm -rf ${S}/syck ; cp -r ${WORKDIR}/syck ${S}/.
-	rm -rf ${S}/lua ; cp -r ${WORKDIR}/lua ${S}/.
-	rm -rf ${S}/popt ; cp -r ${WORKDIR}/popt ${S}/.
-	rm -rf ${S}/beecrypt ; cp -r ${WORKDIR}/beecrypt ${S}/.
-}
-
-addtask fixup_unpack after do_unpack before do_patch
-
-# This recipe is really designed for development... to Try out the latest
-# community work in progress.
-DEFAULT_PREFERENCE = "-1"
-
-S = "${WORKDIR}/rpm"
-
-# rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
-# in order to extract the distribution SRPM into a format we can extract...
-SRC_URI = "cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=rpm \
-	   cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=syck \
-	   cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=lua \
-	   cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=popt \
-	   cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=beecrypt \
-	   file://perfile_rpmdeps.sh \
-	   file://pythondeps.sh \
-"
-
-# Bug fixes
-SRC_URI += " \
-	   file://header-include-fix.patch \
-	   file://rpm-libsql-fix.patch \
-	   file://rpm-platform.patch \
-	   file://rpm-platform2.patch \
-	   file://rpm-tools-mtree-LDFLAGS.patch \
-	   file://rpm-canonarch.patch \
-	   file://rpm-no-loopmsg.patch \
-	   file://rpm-resolvedep.patch \
-	   file://rpm-packageorigin.patch \
-	   file://uclibc-support.patch \
-	   file://rpmatch.patch \
-	   file://makefile-am-exec-hook.patch \
-	   file://python-rpm-rpmsense.patch \
-	   file://debugedit-segv.patch \
-	   file://debugedit-valid-file-to-fix-segment-fault.patch \
-	   file://rpm-platform-file-fix.patch \
-	   file://rpm-lsb-compatibility.patch \
-	   file://rpm-tag-generate-endian-conversion-fix.patch \
-	   file://rpm-hardlink-segfault-fix.patch \
-	   file://rpm-payload-use-hashed-inode.patch \
-	   file://rpm-fix-logio-cp.patch \
-	   file://0001-using-poptParseArgvString-to-parse-the-_gpg_check_pa.patch \
-	   file://rpm-opendb-before-verifyscript-to-avoid-null-point.patch \
-	   file://0001-define-EM_AARCH64.patch \
-	   file://rpm-rpmfc.c-fix-for-N32-MIPS64.patch \
-	   file://rpm-lib-transaction.c-fix-file-conflicts-for-mips64-N32.patch \
-	   file://rpm-mongodb-sasl.patch \
-	   file://rpm-fix-parseEmbedded.patch \
-	   file://rpm-rpmio-headers.patch \
-	   file://rpm-python-restore-origin.patch \
-	   file://rpm-keccak-sse-intrin.patch \
-	   file://rpm-atomic-ops.patch \
-	   file://rpm-gnu-atomic.patch \
-	   file://rpm-tagname-type.patch \
-	   file://rpm-python-tagname.patch \
-	   file://rpm-python-AddErase.patch \
-	   file://rpm-rpmpgp-popt.patch \
-	   file://0001-Disable-__sync_add_and_fetch_8-on-nios2.patch \
-"
-
-# OE specific changes
-SRC_URI += " \
-	   file://rpm-log-auto-rm.patch \
-	   file://rpm-db-reduce.patch \
-	   file://rpm-autogen.patch \
-	   file://rpm-showrc.patch \
-	   file://rpm-fileclass.patch \
-	   file://rpm-scriptletexechelper.patch \
-	   file://rpmdeps-oecore.patch \
-	   file://rpm-no-perl-urpm.patch \
-	   file://rpm-macros.patch \
-	   file://rpm-lua.patch \
-	   file://rpm-ossp-uuid.patch \
-	   file://rpm-uuid-include.patch \
-	   file://rpm-pkgconfigdeps.patch \
-	   file://no-ldflags-in-pkgconfig.patch \
-	   file://dbconvert.patch \
-	   file://rpm-db_buffer_small.patch \
-	   file://rpm-py-init.patch \
-	   file://rpm-reloc-macros.patch \
-	   file://rpm-db5-or-db6.patch \
-	   file://rpm-db60.patch \
-	   file://rpmqv_cc_b_gone.patch \
-	   file://rpm-realpath.patch \
-	   file://rpm-check-rootpath-reasonableness.patch \
-	   file://rpm-macros.in-disable-external-key-server.patch \
-	   file://configure.ac-check-for-both-gpg2-and-gpg.patch \
-	   file://rpm-disable-auto-stack-protector.patch \
-	   file://popt-disable-auto-stack-protector.patch \
-	   file://rpm-syck-fix-gram.patch \
-	   file://rpm-rpmdb-grammar.patch \
-	   file://rpm-disable-blaketest.patch \
-	   file://rpm-autogen-force.patch \
-"
-
-SRC_URI_append_libc-musl = "\
-           file://0001-rpm-Fix-build-on-musl.patch \
-"
-# Uncomment the following line to enable platform score debugging
-# This is useful when identifying issues with Smart being unable
-# to process certain package feeds.
-#SRC_URI += "file://rpm-debug-platform.patch"
-
-inherit autotools gettext
-
-acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
-
-# The local distribution macro directory
-distromacrodir = "${libdir}/rpm/poky"
-
-# Specify the default rpm macros in terms of adjustable variables
-rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/${DISTRO}/macros:%{_usrlibrpm}/${DISTRO}/%{_target}/macros:%{_etcrpm}/macros.*:%{_etcrpm}/macros:%{_etcrpm}/%{_target}/macros:~/.oerpmmacros"
-rpm_macros_class-native = "%{_usrlibrpm}/macros:%{_usrlibrpm}/${DISTRO}/macros:%{_usrlibrpm}/${DISTRO}/%{_target}/macros:~/.oerpmmacros"
-rpm_macros_class-nativesdk = "%{_usrlibrpm}/macros:%{_usrlibrpm}/${DISTRO}/macros:%{_usrlibrpm}/${DISTRO}/%{_target}/macros:~/.oerpmmacros"
-
-# sqlite lua tcl augeas nss gcrypt neon xz xar keyutils perl selinux
-
-# Set the digest algorithm used for verifying file integrity
-# If this value changes, and two different packages have different values
-# the "same file" validation (two packages have a non-conflict file)
-# will fail.  This may lead to upgrade problems.  You should treat this
-# value as a distribution wide setting, and only change it when you intend
-# a full system upgrade!
-#
-# Defined file digest algorithm values (note: not all are available!):
-#       1       MD5 (legacy RPM default)
-#       2       SHA1
-#       3       RIPEMD-160
-#       5       MD2
-#       6       TIGER-192
-#       8       SHA256
-#       9       SHA384
-#       10      SHA512
-#       11      SHA224
-#       104     MD4
-#       105     RIPEMD-128
-#       106     CRC-32
-#       107     ADLER-32
-#       108     CRC-64 (ECMA-182 polynomial, untested uint64_t problems)
-#       109     Jenkins lookup3.c hashlittle()
-#       111     RIPEMD-256
-#       112     RIPEMD-320
-#       188     BLAKE2B
-#       189     BLAKE2BP
-#       190     BLAKE2S
-#       191     BLAKE2SP
-RPM_FILE_DIGEST_ALGO ?= "1"
-
-# All packages build with RPM5 contain a non-repudiable signature.
-# The purpose of this signature is not to show authenticity of a package,
-# but instead act as a secondary package wide validation that shows it
-# wasn't damaged by accident in transport.  (When later you sign the package, 
-# this signature may or may not be replaced as there are three signature 
-# slots, one for DSA/RSA, one for ECSDA, and one reserved.)
-#
-# There is a known issue w/ RSA signatures that if they start with an 0x00
-# the signing and validation may fail.
-#
-# The following is the list of choices for the non-rpudiable signature
-# (note: not all of these are implemented):
-#       DSA             (default)
-#       RSA             (implies SHA1)
-#       ECDSA           (implies SHA256)
-#       DSA/SHA1
-#       DSA/SHA224
-#       DSA/SHA256
-#       DSA/SHA384
-#       DSA/SHA512
-#       RSA/SHA1
-#       RSA/SHA224
-#       RSA/SHA256
-#       RSA/SHA384
-#       RSA/SHA512
-#       ECDSA/SHA224    (using NIST P-224)
-#       ECDSA/SHA256    (using NIST P-256)
-#       ECDSA/SHA384    (using NIST P-384)
-#       ECDSA/SHA512    (using NIST P-521)
-RPM_SELF_SIGN_ALGO ?= "DSA"
-
-# Note: perl and sqlite w/o db specified does not currently work.
-#       tcl, augeas, nss, gcrypt, xar and keyutils support is untested.
-PACKAGECONFIG ??= "db bzip2 zlib popt openssl libelf python"
-
-# Note: switching to internal popt may not work, as it will generate
-# a shared library which will intentionally not be packaged.
-#
-# If you intend to use the internal version, additional work may be required.
-PACKAGECONFIG[popt] = "--with-popt=external,--with-popt=internal,popt,"
-
-PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2,"
-PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz,"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
-PACKAGECONFIG[xar] = "--with-xar,--without-xar,xar,"
-
-WITH_PYTHON = " --with-python=${PYTHON_BASEVERSION} \
-		--with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
-		--with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
-		--without-pythonembed"
-PACKAGECONFIG[python] = "${WITH_PYTHON},--without-python,python,"
-
-# Perl modules are not built, but they could be enabled fairly easily
-# the perl module creation and installation would need to be patched.
-# (currently has host perl contamination issues)
-WITH_PERL = "--with-perl --without-perlembed --without-perl-urpm"
-WITHOUT_PERL = "--without-perl --without-perl-urpm"
-PACKAGECONFIG[perl] = "${WITH_PERL},${WITHOUT_PERL},perl,"
-
-# The --with-dbsql will only tell RPM to check for support, db
-# may or may not be built w/ the dbsql support.
-WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated"
-PACKAGECONFIG[db] = "${WITH_DB},--without-db,db,"
-
-PACKAGECONFIG[sqlite] = "--with-sqlite,--without-sqlite,sqlite3,"
-
-# This switch simply disables external beecrypt, RPM5 always uses beecrypt
-# for base64 processing and various digest algorithms.
-# Beecrypt is only the preferred crypto engine if it's the only engine enabled.
-PACKAGECONFIG[beecrypt] = "--with-beecrypt=external,--with-beecrypt=internal,beecrypt,"
-
-# --with-usecrypto= setting defined the item as the preferred system
-# crypto engine, which will take priority over the included beecrypt
-PACKAGECONFIG[openssl] = "--with-openssl --with-usecrypto=openssl,--without-openssl,openssl,"
-PACKAGECONFIG[nss] = "--with-nss --with-usecrypto=nss,--without-nss,nss,"
-PACKAGECONFIG[gcrypt] = "--with-gcrypt --with-usecrypto=gcrypt,--without-gcrypt,gcrypt,"
-
-PACKAGECONFIG[keyutils] = "--with-keyutils,--without-keyutils,keyutils,"
-PACKAGECONFIG[libelf] = "--with-libelf,--without-libelf,elfutils,"
-
-WITH_SELINUX = "--with-selinux --with-sepol --with-semanage"
-WITHOUT_SELINUX = "--without-selinux --without-sepol --without-semanage"
-PACKAGECONFIG[selinux] = "${WITH_SELINUX},${WITHOUT_SELINUX},libselinux,"
-
-WITH_NEON = "--with-neon --with-libproxy --with-expat --without-gssapi"
-WITHOUT_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
-PACKAGECONFIG[neon] = "${WITH_NEON},${WITHOUT_NEON},neon expat,"
-
-PACKAGECONFIG[lua] = "--with-lua,--without-lua,expat,"
-PACKAGECONFIG[tcl] = "--with-tcl,--without-tcl,tcl,"
-
-PACKAGECONFIG[augeas] = "--with-augeas,--without-augeas,augeas,"
-
-EXTRA_OECONF += "--verbose \
-		--sysconfdir=${sysconfdir} \
-		--with-file \
-		--with-path-magic=%{_usrlibrpm}/../../share/misc/magic.mgc \
-		--with-syck=internal \
-		--without-readline \
-		--without-libtasn1 \
-		--without-pakchois \
-		--without-gnutls \
-		--with-pcre \
-		--enable-utf8 \
-		--with-uuid \
-		--with-attr \
-		--with-acl \
-		--with-pthreads \
-		--without-cudf \
-		--without-ficl \
-		--without-aterm \
-		--without-nix \
-		--without-bash \
-		--without-rc \
-		--without-js \
-		--without-gpsee \
-		--without-ruby \
-		--without-squirrel \
-		--without-sasl2 \
-		--with-build-extlibdep \
-		--with-build-maxextlibdep \
-		--without-valgrind \
-		--disable-openmp \
-		--enable-build-pic \
-		--enable-build-versionscript \
-		--enable-build-warnings \
-		--enable-build-debug \
-		--enable-maintainer-mode \
-		--with-path-macros=${rpm_macros} \
-		--with-path-lib=${libdir}/rpm \
-		--with-bugreport=http://bugzilla.yoctoproject.org \
-		--program-prefix= \
-		YACC=byacc"
-
-CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE"
-
-LDFLAGS_append_libc-uclibc = "-lrt -lpthread"
-
-PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm perl-module-rpm ${PN}-locale"
-
-SOLIBS = "5.4.so"
-
-# Based on %files section in the rpm.spec
-
-FILES_${PN} =  "${bindir}/rpm \
-		${bindir}/rpmconstant \
-		${libdir}/rpm/rpm.* \
-		${libdir}/rpm/tgpg \
-		${libdir}/rpm/macros \
-		${libdir}/rpm/rpmpopt \
-		${libdir}/rpm/rpm2cpio \
-		${libdir}/rpm/vcheck \
-		${libdir}/rpm/helpers \
-		${libdir}/rpm/qf \
-		${libdir}/rpm/cpuinfo.yaml \
-		${libdir}/rpm/bin/mtree \
-		${libdir}/rpm/bin/rpmkey \
-		${libdir}/rpm/bin/rpmrepo \
-		${libdir}/rpm/bin/rpmrepo.real \
-		${libdir}/rpm/bin/rpmspecdump \
-		${libdir}/rpm/bin/rpmspecdump.real \
-		${libdir}/rpm/bin/wget \
-		${localstatedir}/cache \
-		${localstatedir}/cache/rpm \
-		${localstatedir}/cache/wdj \
-		${localstatedir}/lib \
-		${localstatedir}/lib/rpm \
-		${localstatedir}/lib/wdj \
-		${bindir}/rpm.real \
-		${bindir}/rpmconstant.real \
-		${bindir}/rpm2cpio.real \
-		"
-
-FILES_${PN}-common = "${bindir}/rpm2cpio \
-		${bindir}/gendiff \
-		${sysconfdir}/rpm \
-		${localstatedir}/spool/repackage \
-		"
-
-FILES_${PN}-libs = "${libdir}/librpm-*.so \
-		${libdir}/librpmconstant-*.so \
-		${libdir}/librpmdb-*.so \
-		${libdir}/librpmio-*.so \
-		${libdir}/librpmmisc-*.so \
-		${libdir}/librpmbuild-*.so \
-		"
-
-FILES_${PN}-build = "${prefix}/src/rpm \
-		${bindir}/rpmbuild \
-		${bindir}/rpmbuild.real \
-		${libdir}/rpm/brp-* \
-		${libdir}/rpm/check-files \
-		${libdir}/rpm/cross-build \
-		${libdir}/rpm/find-debuginfo.sh \
-		${libdir}/rpm/find-lang.sh \
-		${libdir}/rpm/find-prov.pl \
-		${libdir}/rpm/find-provides.perl \
-		${libdir}/rpm/find-req.pl \
-		${libdir}/rpm/find-requires.perl \
-		${libdir}/rpm/getpo.sh \
-		${libdir}/rpm/http.req \
-		${libdir}/rpm/javadeps.sh \
-		${libdir}/rpm/mono-find-provides \
-		${libdir}/rpm/mono-find-requires \
-		${libdir}/rpm/executabledeps.sh \
-		${libdir}/rpm/libtooldeps.sh \
-		${libdir}/rpm/osgideps.pl \
-		${libdir}/rpm/perldeps.pl \
-		${libdir}/rpm/perl.prov \
-		${libdir}/rpm/perl.req \
-		${libdir}/rpm/php.prov \
-		${libdir}/rpm/php.req \
-		${libdir}/rpm/pkgconfigdeps.sh \
-		${libdir}/rpm/pythondeps.sh \
-		${libdir}/rpm/bin/debugedit \
-		${libdir}/rpm/bin/debugedit.real \
-		${libdir}/rpm/bin/rpmcache \
-		${libdir}/rpm/bin/rpmcache.real \
-		${libdir}/rpm/bin/rpmcmp \
-		${libdir}/rpm/bin/rpmcmp.real \
-		${libdir}/rpm/bin/rpmdeps \
-		${libdir}/rpm/bin/rpmdeps.real \
-		${libdir}/rpm/bin/rpmdeps-oecore \
-		${libdir}/rpm/bin/rpmdeps-oecore.real \
-		${libdir}/rpm/bin/rpmdigest \
-		${libdir}/rpm/bin/rpmdigest.real \
-		${libdir}/rpm/bin/abi-compliance-checker.pl \
-		${libdir}/rpm/bin/api-sanity-autotest.pl \
-		${libdir}/rpm/bin/chroot \
-		${libdir}/rpm/bin/cp \
-		${libdir}/rpm/bin/dbsql \
-		${libdir}/rpm/bin/find \
-		${libdir}/rpm/bin/install-sh \
-		${libdir}/rpm/bin/lua \
-		${libdir}/rpm/bin/luac \
-		${libdir}/rpm/bin/mkinstalldirs \
-		${libdir}/rpm/bin/rpmlua \
-		${libdir}/rpm/bin/rpmluac \
-		${libdir}/rpm/bin/sqlite3 \
-		${libdir}/rpm/macros.d/cmake \
-		${libdir}/rpm/macros.d/java \
-		${libdir}/rpm/macros.d/libtool \
-		${libdir}/rpm/macros.d/mandriva \
-		${libdir}/rpm/macros.d/mono \
-		${libdir}/rpm/macros.d/perl \
-		${libdir}/rpm/macros.d/php \
-		${libdir}/rpm/macros.d/pkgconfig \
-		${libdir}/rpm/macros.d/python \
-		${libdir}/rpm/macros.d/ruby \
-		${libdir}/rpm/macros.d/selinux \
-		${libdir}/rpm/macros.d/tcl \
-		${libdir}/rpm/macros.rpmbuild \
-		${libdir}/rpm/u_pkg.sh \
-		${libdir}/rpm/vpkg-provides.sh \
-		${libdir}/rpm/vpkg-provides2.sh \
-		${libdir}/rpm/perfile_rpmdeps.sh \
-		${distromacrodir} \
-		"
-RDEPENDS_${PN} = "base-files run-postinsts"
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN}_class-nativesdk = ""
-RDEPENDS_${PN}-build = "file bash perl"
-
-RDEPENDS_python-rpm = "${PN} python"
-
-FILES_python-rpm = "${libdir}/python*/site-packages/rpm"
-PROVIDES += "python-rpm"
-
-FILES_perl-module-rpm = "${libdir}/perl/*/* \
-		"
-
-RDEPENDS_${PN}-dev += "bash"
-
-FILES_${PN}-dev = "${includedir}/rpm \
-		${libdir}/librpm.la \
-		${libdir}/librpm.so \
-		${libdir}/librpmconstant.la \
-		${libdir}/librpmconstant.so \
-		${libdir}/librpmdb.la \
-		${libdir}/librpmdb.so \
-		${libdir}/librpmio.la \
-		${libdir}/librpmio.so \
-		${libdir}/librpmmisc.la \
-		${libdir}/librpmmisc.so \
-		${libdir}/librpmbuild.la \
-		${libdir}/librpmbuild.so \
-		${libdir}/rpm/lib/liblua.la \
-		${libdir}/pkgconfig/rpm.pc \
-		${libdir}/rpm/rpmdb_loadcvt \
-		"
-
-FILES_${PN}-staticdev = " \
-		${libdir}/librpm.a \
-		${libdir}/librpmconstant.a \
-		${libdir}/librpmdb.a \
-		${libdir}/librpmio.a \
-		${libdir}/librpmmisc.a \
-		${libdir}/librpmbuild.a \
-		${libdir}/rpm/lib/liblua.a \
-		${libdir}/python*/site-packages/rpm/*.a \
-		"
-
-do_configure() {
-	# Disable tests!
-	echo "all:" > ${S}/tests/Makefile.am
-	sed -e 's/@__MKDIR_P@/%{__mkdir} -p/' -i ${S}/macros/macros.in
-
-	( cd ${S}; ${S}/autogen.sh )
-
-	# NASTY hack to make sure configure files the right pkg-config file...
-	sed -e 's/pkg-config --exists uuid/pkg-config --exists ossp-uuid/g' \
-	    -e 's/pkg-config uuid/pkg-config ossp-uuid/g' -i ${S}/configure
-
-	( cd ${S}/syck ; set +e ; rm -- -l* ; make distclean ) || :
-
-	export varprefix=${localstatedir}
-	oe_runconf
-}
-
-do_install_append() {
-	# Configure -distribution wide- package crypto settings
-	# If these change, effectively all packages have to be upgraded!
-	sed -i -e 's,%_build_file_digest_algo.*,%_build_sign ${RPM_FILE_DIGEST_ALGO},' ${D}/${libdir}/rpm/macros.rpmbuild
-	sed -i -e 's,%_build_sign.*,%_build_sign ${RPM_SELF_SIGN_ALGO},' ${D}/${libdir}/rpm/macros.rpmbuild
-
-	sed -i -e 's,%__scriptlet_requires,#%%__scriptlet_requires,' ${D}/${libdir}/rpm/macros
-	sed -i -e 's,%__perl_provides,#%%__perl_provides,' ${D}/${libdir}/rpm/macros ${D}/${libdir}/rpm/macros.d/*
-	sed -i -e 's,%__perl_requires,#%%__perl_requires,' ${D}/${libdir}/rpm/macros ${D}/${libdir}/rpm/macros.d/*
-	sed -i -e 's,%_repackage_all_erasures[^_].*,%_repackage_all_erasures 0,' ${D}/${libdir}/rpm/macros
-	sed -i -e 's,^#%_openall_before_chroot.*,%_openall_before_chroot\t1,' ${D}/${libdir}/rpm/macros
-
-	# Enable MIPS64 N32 transactions.  (This is a no-op on non-MIPS targets.)
-	sed -i -e 's,%_transaction_color[^_].*,%_transaction_color 7,' ${D}/${libdir}/rpm/macros
-
-	# Enable Debian style arbitrary tags...
-	sed -i -e 's,%_arbitrary_tags[^_].*,%_arbitrary_tags %{_arbitrary_tags_debian},' ${D}/${libdir}/rpm/macros
-
-	install -m 0755 ${WORKDIR}/pythondeps.sh ${D}/${libdir}/rpm/pythondeps.sh
-	install -m 0755 ${WORKDIR}/perfile_rpmdeps.sh ${D}/${libdir}/rpm/perfile_rpmdeps.sh
-
-	# Remove unpackaged files (based on list in rpm.spec)
-	rm -f ${D}/${libdir}/rpm/{Specfile.pm,cpanflute,cpanflute2,rpmdiff,rpmdiff.cgi,sql.prov,sql.req,tcl.req,trpm}
-
-	rm -f ${D}/${mandir}/man8/rpmcache.8*
-	rm -f ${D}/${mandir}/man8/rpmgraph.8*
-	rm -f ${D}/${mandir}/*/man8/rpmcache.8*
-	rm -f ${D}/${mandir}/*/man8/rpmgraph.8*
-	rm -rf ${D}/${mandir}/{fr,ko}
-
-	rm -f ${D}/${includedir}/popt.h
-	rm -f ${D}/${libdir}/libpopt.*
-	rm -f ${D}/${libdir}/pkgconfig/popt.pc
-	rm -f ${D}/${datadir}/locale/*/LC_MESSAGES/popt.mo
-	rm -f ${D}/${mandir}/man3/popt.3
-
-	rm -f ${D}/${mandir}/man1/xar.1*
-	rm -f ${D}/${bindir}/xar
-	rm -rf ${D}/${includedir}/xar
-	rm -f ${D}/${libdir}/libxar*
-
-	rm -f ${D}/${bindir}/lz*
-	rm -f ${D}/${bindir}/unlzma
-	rm -f ${D}/${bindir}/unxz
-	rm -f ${D}/${bindir}/xz*
-	rm -rf ${D}/${includedir}/lzma*
-	rm -f ${D}/${mandir}/man1/lz*.1
-	rm -f ${D}/${libdir}/pkgconfig/liblzma*
-
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.a
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.la
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.a
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.la
-
-	#find ${D}/${libdir}/perl5 -type f -a \( -name perllocal.pod -o -name .packlist \
-	#	-o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
-	#find ${D}/${libdir}/perl5 -type d -depth -exec rmdir {} 2>/dev/null ';'
-
-	rm -f ${D}/${libdir}/rpm/dbconvert.sh
-
-	rm -f ${D}/${libdir}/rpm/libsqldb.*
-
-	# We don't want, nor need the Mandriva multiarch items
-	rm -f ${D}/${bindir}/multiarch-dispatch
-	rm -f ${D}/${bindir}/multiarch-platform
-	rm -f ${D}/${libdir}/rpm/check-multiarch-files
-	rm -f ${D}/${libdir}/rpm/mkmultiarch
-	rm -f ${D}/${includedir}/multiarch-dispatch.h
-
-	rm -f ${D}/${libdir}/rpm/gstreamer.sh
-	rm -f ${D}/${libdir}/rpm/gem_helper.rb
-	rm -f ${D}/${libdir}/rpm/rubygems.rb
-	rm -f ${D}/${libdir}/rpm/kmod-deps.sh
-	rm -f ${D}/${libdir}/rpm/pythoneggs.py
-	rm -f ${D}/${libdir}/rpm/macros.d/kernel
-	rm -f ${D}/${libdir}/rpm/macros.d/gstreamer
-	rm -f ${D}/${libdir}/rpm/bin/mgo
-	rm -f ${D}/${libdir}/rpm/bin/dbconvert
-	rm -f ${D}/${libdir}/rpm/bin/pom2spec
-
-	rm -rf ${D}/var/lib/wdj ${D}/var/cache/wdj
-	rm -f ${D}/${libdir}/rpm/bin/api-sanity-checker.pl
-
-}
-
-do_install_append_class-target() {
-	# Create and install distribution specific macros
-	mkdir -p ${D}/${distromacrodir}
-	cat << EOF > ${D}/${distromacrodir}/macros
-%_defaultdocdir		${docdir}
-
-%_prefix                ${prefix}
-%_exec_prefix           ${exec_prefix}
-%_datarootdir           ${datadir}
-%_bindir                ${bindir}
-%_sbindir               ${sbindir}
-%_libexecdir            %{_libdir}/%{name}
-%_datadir               ${datadir}
-%_sysconfdir            ${sysconfdir}
-%_sharedstatedir        ${sharedstatedir}
-%_localstatedir         ${localstatedir}
-%_lib                   lib
-%_libdir                %{_exec_prefix}/%{_lib}
-%_includedir            ${includedir}
-%_oldincludedir         ${oldincludedir}
-%_infodir               ${infodir}
-%_mandir                ${mandir}
-%_localedir             %{_libdir}/locale
-EOF
-
-	# Create and install multilib specific macros
-	${@multilib_rpmmacros(d)}
-}
-
-do_install_append_class-native () {
-	sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env nativepython|' ${D}/${libdir}/python2.7/site-packages/rpm/transaction.py
-}
-
-do_install_append_class-nativesdk () {
-	sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env python|' ${D}/${libdir}/python2.7/site-packages/rpm/transaction.py
-}
-
-def multilib_rpmmacros(d):
-    localdata = d.createCopy()
-    # We need to clear the TOOLCHAIN_OPTIONS (--sysroot)
-    localdata.delVar('TOOLCHAIN_OPTIONS')
-
-    # Set 'localdata' values to be consistent with 'd' values.
-    localdata.setVar('distromacrodir', d.getVar('distromacrodir', True))
-    localdata.setVar('WORKDIR', d.getVar('WORKDIR', True))
-
-    ret = gen_arch_macro(localdata)
-
-    variants = d.getVar("MULTILIB_VARIANTS", True) or ""
-    for item in variants.split():
-        # Load overrides from 'd' to avoid having to reset the value...
-        localdata = d.createCopy()
-        overrides = d.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
-        localdata.setVar("OVERRIDES", overrides)
-        localdata.setVar("MLPREFIX", item + "-")
-        bb.data.update_data(localdata)
-        ret += gen_arch_macro(localdata)
-    return ret
-
-def gen_arch_macro(d):
-    # Generate shell script to produce the file as part of do_install
-    val  = "mkdir -p ${D}/${distromacrodir}/${TARGET_ARCH}-${TARGET_OS}\n"
-    val += "cat << EOF > ${D}/${distromacrodir}/${TARGET_ARCH}-${TARGET_OS}/macros\n"
-    val += "%_lib               ${baselib}\n"
-    val += "%_libdir            ${libdir}\n"
-    val += "%_localedir         ${localedir}\n"
-    val += "\n"
-    val += "# Toolchain configuration\n"
-    val += "%TOOLCHAIN_OPTIONS  %{nil}\n"
-    val += "%__ar               ${@d.getVar('AR', True).replace('$','%')}\n"
-    val += "%__as               ${@d.getVar('AS', True).replace('$','%')}\n"
-    val += "%__cc               ${@d.getVar('CC', True).replace('$','%')}\n"
-    val += "%__cpp              ${@d.getVar('CPP', True).replace('$','%')}\n"
-    val += "%__cxx              ${@d.getVar('CXX', True).replace('$','%')}\n"
-    val += "%__ld               ${@d.getVar('LD', True).replace('$','%')}\n"
-    val += "%__nm               ${@d.getVar('NM', True).replace('$','%')}\n"
-    val += "%__objcopy          ${@d.getVar('OBJCOPY', True).replace('$','%')}\n"
-    val += "%__objdump          ${@d.getVar('OBJDUMP', True).replace('$','%')}\n"
-    val += "%__ranlib           ${@d.getVar('RANLIB', True).replace('$','%')}\n"
-    val += "%__strip            ${@d.getVar('STRIP', True).replace('$','%')}\n"
-    val += "EOF\n"
-    val += "\n"
-    return d.expand(val)
-
-
-add_native_wrapper() {
-        create_wrapper ${D}/${bindir}/rpm \
-		RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \
-		RPM_ETCRPM='$'{RPM_ETCRPM-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/rpm} \
-		RPM_LOCALEDIRRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/locale
-
-        create_wrapper ${D}/${bindir}/rpm2cpio \
-		RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \
-		RPM_ETCRPM='$'{RPM_ETCRPM-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/rpm} \
-		RPM_LOCALEDIRRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/locale
-
-        create_wrapper ${D}/${bindir}/rpmbuild \
-		RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \
-		RPM_ETCRPM='$'{RPM_ETCRPM-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/rpm} \
-		RPM_LOCALEDIRRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/locale
-
-        create_wrapper ${D}/${bindir}/rpmconstant \
-		RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \
-		RPM_ETCRPM='$'{RPM_ETCRPM-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/rpm} \
-		RPM_LOCALEDIRRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/locale
-
-	for rpm_binary in ${D}/${libdir}/rpm/bin/rpm* ${D}/${libdir}/rpm/bin/debugedit; do
-        	create_wrapper $rpm_binary \
-			RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \
-			RPM_ETCRPM='$'{RPM_ETCRPM-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/rpm} \
-			RPM_LOCALEDIRRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/locale
-	done
-}
-
-do_install_append_class-native() {
-	add_native_wrapper
-}
-
-do_install_append_class-nativesdk() {
-	add_native_wrapper
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm_5.4.16.bb b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm_5.4.16.bb
index f2c12d2..1332397 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm_5.4.16.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm_5.4.16.bb
@@ -116,6 +116,9 @@
 	   file://rpm-fix-lua-tests-compilation-failure.patch \
 	   file://rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch \
 	   file://0001-Disable-__sync_add_and_fetch_8-on-nios2.patch \
+	   file://gcc6-stdlib.patch \
+	   file://0001-system.h-query.c-support-nosignature.patch \
+	   file://rpm-ensure-rpm2cpio-call-rpm-relocation-code.patch \
 "
 
 # OE specific changes
@@ -151,6 +154,7 @@
 	   file://rpm-rpmdb-grammar.patch \
 	   file://rpm-disable-blaketest.patch \
 	   file://rpm-autogen-force.patch \
+	   file://rpmdb-prevent-race-in-tmpdir-creation.patch \
 	   file://rpmdb-more-verbose-error-logging-in-rpmTempFile.patch \
 "
 
@@ -164,7 +168,7 @@
 
 UPSTREAM_CHECK_REGEX = "rpm-(?P<pver>(\d+[\.\-_]*)+)-.*$"
 
-inherit autotools gettext
+inherit autotools gettext python-dir
 
 acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
 
@@ -257,7 +261,7 @@
 
 WITH_PYTHON = " --with-python=${PYTHON_BASEVERSION} \
 		--with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
-		--with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
+		--with-python-lib-dir=${PYTHON_SITEPACKAGES_DIR} \
 		--without-pythonembed"
 PACKAGECONFIG[python] = "${WITH_PYTHON},--without-python,python,"
 
@@ -344,7 +348,7 @@
 		--program-prefix= \
 		YACC=byacc"
 
-CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE"
+CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS"
 
 LDFLAGS_append_libc-uclibc = "-lrt -lpthread"
 
@@ -475,7 +479,7 @@
 
 RDEPENDS_python-rpm = "${PN} python"
 
-FILES_python-rpm = "${libdir}/python*/site-packages/rpm"
+FILES_python-rpm = "${PYTHON_SITEPACKAGES_DIR}/rpm"
 PROVIDES += "python-rpm"
 
 FILES_perl-module-rpm = "${libdir}/perl/*/* \
@@ -510,7 +514,7 @@
 		${libdir}/librpmmisc.a \
 		${libdir}/librpmbuild.a \
 		${libdir}/rpm/lib/liblua.a \
-		${libdir}/python*/site-packages/rpm/*.a \
+		${PYTHON_SITEPACKAGES_DIR}/rpm/*.a \
 		"
 
 do_configure() {
@@ -524,7 +528,7 @@
 	sed -e 's/pkg-config --exists uuid/pkg-config --exists ossp-uuid/g' \
 	    -e 's/pkg-config uuid/pkg-config ossp-uuid/g' -i ${S}/configure
 
-	( cd ${S}/syck ; set +e ; rm -- -l* ; make distclean ) || :
+	( cd ${S}/syck ; set +e ; rm -- -l* ; rm Makefile config.h config.status lib/Makefile libtool stamp-h1 tests/.deps tests/Makefile  ) || :
 
 	export varprefix=${localstatedir}
 	oe_runconf
@@ -551,54 +555,20 @@
 	install -m 0755 ${WORKDIR}/pythondeps.sh ${D}/${libdir}/rpm/pythondeps.sh
 	install -m 0755 ${WORKDIR}/perfile_rpmdeps.sh ${D}/${libdir}/rpm/perfile_rpmdeps.sh
 
-	# Remove unpackaged files (based on list in rpm.spec)
-	rm -f ${D}/${libdir}/rpm/{Specfile.pm,cpanflute,cpanflute2,rpmdiff,rpmdiff.cgi,sql.prov,sql.req,tcl.req,trpm}
-
-	rm -f ${D}/${mandir}/man8/rpmcache.8*
-	rm -f ${D}/${mandir}/man8/rpmgraph.8*
-	rm -f ${D}/${mandir}/*/man8/rpmcache.8*
-	rm -f ${D}/${mandir}/*/man8/rpmgraph.8*
-	rm -rf ${D}/${mandir}/{fr,ko}
-
 	rm -f ${D}/${includedir}/popt.h
 	rm -f ${D}/${libdir}/libpopt.*
 	rm -f ${D}/${libdir}/pkgconfig/popt.pc
 	rm -f ${D}/${datadir}/locale/*/LC_MESSAGES/popt.mo
 	rm -f ${D}/${mandir}/man3/popt.3
 
-	rm -f ${D}/${mandir}/man1/xar.1*
-	rm -f ${D}/${bindir}/xar
-	rm -rf ${D}/${includedir}/xar
-	rm -f ${D}/${libdir}/libxar*
-
-	rm -f ${D}/${bindir}/lz*
-	rm -f ${D}/${bindir}/unlzma
-	rm -f ${D}/${bindir}/unxz
-	rm -f ${D}/${bindir}/xz*
-	rm -rf ${D}/${includedir}/lzma*
-	rm -f ${D}/${mandir}/man1/lz*.1
-	rm -f ${D}/${libdir}/pkgconfig/liblzma*
-
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.a
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.la
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.a
-	rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.la
-
-	#find ${D}/${libdir}/perl5 -type f -a \( -name perllocal.pod -o -name .packlist \
-	#	-o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
-	#find ${D}/${libdir}/perl5 -type d -depth -exec rmdir {} 2>/dev/null ';'
+	rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/*.a
+	rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/*.la
+	rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/rpm/*.a
+	rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/rpm/*.la
 
 	rm -f ${D}/${libdir}/rpm/dbconvert.sh
-
 	rm -f ${D}/${libdir}/rpm/libsqldb.*
 
-	# We don't want, nor need the Mandriva multiarch items
-	rm -f ${D}/${bindir}/multiarch-dispatch
-	rm -f ${D}/${bindir}/multiarch-platform
-	rm -f ${D}/${libdir}/rpm/check-multiarch-files
-	rm -f ${D}/${libdir}/rpm/mkmultiarch
-	rm -f ${D}/${includedir}/multiarch-dispatch.h
-
 	rm -f ${D}/${libdir}/rpm/gstreamer.sh
 	rm -f ${D}/${libdir}/rpm/gem_helper.rb
 	rm -f ${D}/${libdir}/rpm/rubygems.rb
@@ -607,12 +577,10 @@
 	rm -f ${D}/${libdir}/rpm/macros.d/kernel
 	rm -f ${D}/${libdir}/rpm/macros.d/gstreamer
 	rm -f ${D}/${libdir}/rpm/bin/mgo
-	rm -f ${D}/${libdir}/rpm/bin/dbconvert
 	rm -f ${D}/${libdir}/rpm/bin/pom2spec
 
 	rm -rf ${D}/var/lib/wdj ${D}/var/cache/wdj
 	rm -f ${D}/${libdir}/rpm/bin/api-sanity-checker.pl
-
 }
 
 do_install_append_class-target() {
@@ -645,11 +613,11 @@
 }
 
 do_install_append_class-native () {
-	sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env nativepython|' ${D}/${libdir}/python2.7/site-packages/rpm/transaction.py
+	sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env nativepython|' ${D}${PYTHON_SITEPACKAGES_DIR}/rpm/transaction.py
 }
 
 do_install_append_class-nativesdk () {
-	sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env python|' ${D}/${libdir}/python2.7/site-packages/rpm/transaction.py
+	sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env python|' ${D}${PYTHON_SITEPACKAGES_DIR}/rpm/transaction.py
 }
 
 def multilib_rpmmacros(d):
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync.inc b/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync.inc
index c65f270..37897ab 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync.inc
@@ -3,11 +3,6 @@
 BUGTRACKER = "http://rsync.samba.org/bugzilla.html"
 SECTION = "console/network"
 
-# GPLv2+ (<< 3.0.0), GPLv3+ (>= 3.0.0)
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-# needs to add acl and attr
 DEPENDS = "popt"
 
 SRC_URI = "http://rsync.samba.org/ftp/rsync/src/rsync-${PV}.tar.gz \
@@ -21,3 +16,5 @@
 }
 
 EXTRA_OEMAKE='STRIP=""'
+
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_2.6.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_2.6.9.bb
index 6854c77..efdf255 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_2.6.9.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_2.6.9.bb
@@ -1,28 +1,15 @@
-SUMMARY = "File synchronization tool"
-HOMEPAGE = "http://rsync.samba.org/"
-BUGTRACKER = "http://rsync.samba.org/bugzilla.html"
-SECTION = "console/network"
+require rsync.inc
 
-# needs to add acl and attr
-DEPENDS = "popt"
-
-SRC_URI = "http://rsync.samba.org/ftp/rsync/src/rsync-${PV}.tar.gz \
-           file://rsync-2.6.9-fname-obo.patch \
-           file://rsyncd.conf"
+SRC_URI += "file://rsync-2.6.9-fname-obo.patch \
+            file://rsyncd.conf \
+"
 
 SRC_URI[md5sum] = "996d8d8831dbca17910094e56dcb5942"
 SRC_URI[sha256sum] = "ca437301becd890e73300bc69a39189ff1564baa761948ff149b3dd7bde633f9"
 
-inherit autotools
-
-do_install_append() {
-	install -d ${D}${sysconfdir}
-	install -m 0644 ${WORKDIR}/rsyncd.conf ${D}${sysconfdir}
-}
-
-EXTRA_OEMAKE='STRIP=""'
-
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6d5a9d4c4d3af25cd68fd83e8a8cb09c"
 
 PR = "r4"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_3.1.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_3.1.2.bb
index 9637ed4..c6cb331 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_3.1.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/rsync/rsync_3.1.2.bb
@@ -5,7 +5,13 @@
 SRC_URI[md5sum] = "0f758d7e000c0f7f7d3792610fad70cb"
 SRC_URI[sha256sum] = "ecfa62a7fa3c4c18b9eccd8c16eaddee4bd308a76ea50b5c02a5840f09c0a1c2"
 
-PACKAGECONFIG ??= "acl attr"
+# GPLv2+ (<< 3.0.0), GPLv3+ (>= 3.0.0)
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+PACKAGECONFIG ??= "acl attr \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
+"
 PACKAGECONFIG[acl] = "--enable-acl-support,--disable-acl-support,acl,"
 PACKAGECONFIG[attr] = "--enable-xattr-support,--disable-xattr-support,attr,"
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby.inc b/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby.inc
index 313e752..fde67e9 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby.inc
@@ -20,7 +20,8 @@
 SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
 SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \
            file://extmk.patch \
-"
+           file://0002-Obey-LDFLAGS-for-the-link-of-libruby.patch \
+           "
 
 inherit autotools
 
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch b/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch
new file mode 100644
index 0000000..b0114ba
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch
@@ -0,0 +1,28 @@
+Upstream-Status: Pending
+
+From 306e95a9818d39d3349075aac9609e062b0f19ce Mon Sep 17 00:00:00 2001
+From: Christopher Larson <chris_larson@mentor.com>
+Date: Thu, 5 May 2016 10:59:07 -0700
+Subject: [PATCH 2/2] Obey LDFLAGS for the link of libruby
+
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 7da2488..5b4aea1 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -75,7 +75,7 @@ EXTLIBS =
+ LIBS = @LIBS@ $(EXTLIBS)
+ MISSING = @LIBOBJS@ @ALLOCA@
+ LDSHARED = @LIBRUBY_LDSHARED@
+-DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
++DLDFLAGS = @LIBRUBY_DLDFLAGS@ @LDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
+ SOLIBS = @SOLIBS@
+ MAINLIBS = @MAINLIBS@
+ ARCHMINIOBJS = @MINIOBJS@
+-- 
+2.8.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby_2.2.2.bb b/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby_2.2.2.bb
deleted file mode 100644
index 6715023..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby_2.2.2.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-require ruby.inc
-
-SRC_URI[md5sum] = "326e99ddc75381c7b50c85f7089f3260"
-SRC_URI[sha256sum] = "5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44"
-
-# it's unknown to configure script, but then passed to extconf.rb
-# maybe it's not really needed as we're hardcoding the result with
-# 0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch
-UNKNOWN_CONFIGURE_WHITELIST += "--enable-wide-getaddrinfo"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
-
-PACKAGECONFIG[valgrind] = "--with-valgrind=yes, --with-valgrind=no, valgrind"
-PACKAGECONFIG[gpm] = "--with-gmp=yes, --with-gmp=no, gmp"
-PACKAGECONFIG[ipv6] = ",--enable-wide-getaddrinfo,"
-
-EXTRA_OECONF = "\
-    --disable-versioned-paths \
-    --disable-rpath \
-    --disable-dtrace \
-    --enable-shared \
-    --enable-load-relative \
-"
-
-EXTRA_OEMAKE = " \
-    LIBRUBYARG='-lruby-static' \
-"
-
-do_install() {
-    oe_runmake 'DESTDIR=${D}' install
-}
-
-PACKAGES =+ "${PN}-ri-docs ${PN}-rdoc"
-
-SUMMARY_${PN}-ri-docs = "ri (Ruby Interactive) documentation for the Ruby standard library"
-RDEPENDS_${PN}-ri-docs = "${PN}"
-FILES_${PN}-ri-docs += "${datadir}/ri"
-
-SUMMARY_${PN}-rdoc = "RDoc documentation generator from Ruby source"
-RDEPENDS_${PN}-rdoc = "${PN}"
-FILES_${PN}-rdoc += "${libdir}/ruby/*/rdoc ${bindir}/rdoc"
-
-FILES_${PN} += "${datadir}/rubygems"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby_2.2.5.bb b/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby_2.2.5.bb
new file mode 100644
index 0000000..5a64582
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/ruby/ruby_2.2.5.bb
@@ -0,0 +1,42 @@
+require ruby.inc
+
+SRC_URI[md5sum] = "bd8e349d4fb2c75d90817649674f94be"
+SRC_URI[sha256sum] = "30c4b31697a4ca4ea0c8db8ad30cf45e6690a0f09687e5d483c933c03ca335e3"
+
+# it's unknown to configure script, but then passed to extconf.rb
+# maybe it's not really needed as we're hardcoding the result with
+# 0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch
+UNKNOWN_CONFIGURE_WHITELIST += "--enable-wide-getaddrinfo"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+
+PACKAGECONFIG[valgrind] = "--with-valgrind=yes, --with-valgrind=no, valgrind"
+PACKAGECONFIG[gpm] = "--with-gmp=yes, --with-gmp=no, gmp"
+PACKAGECONFIG[ipv6] = ",--enable-wide-getaddrinfo,"
+
+EXTRA_OECONF = "\
+    --disable-versioned-paths \
+    --disable-rpath \
+    --disable-dtrace \
+    --enable-shared \
+    --enable-load-relative \
+"
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+}
+
+PACKAGES =+ "${PN}-ri-docs ${PN}-rdoc"
+
+SUMMARY_${PN}-ri-docs = "ri (Ruby Interactive) documentation for the Ruby standard library"
+RDEPENDS_${PN}-ri-docs = "${PN}"
+FILES_${PN}-ri-docs += "${datadir}/ri"
+
+SUMMARY_${PN}-rdoc = "RDoc documentation generator from Ruby source"
+RDEPENDS_${PN}-rdoc = "${PN}"
+FILES_${PN}-rdoc += "${libdir}/ruby/*/rdoc ${bindir}/rdoc"
+
+FILES_${PN} += "${datadir}/rubygems"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/import-layers/yocto-poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
index 53a8e1d..04ba394 100755
--- a/import-layers/yocto-poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
+++ b/import-layers/yocto-poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -6,7 +6,7 @@
 #
 
 # The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts,
-# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-posinsts.
+# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts.
 
 # the order of this list is important, do not change!
 backend_list="rpm deb ipk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb
index 5975365..97b308a 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb
@@ -22,8 +22,6 @@
 
 SYSROOT_PREPROCESS_FUNCS += "sgml_common_native_mangle"
 SSTATEPOSTINSTFUNCS += "sgml_common_sstate_postinst"
-CLEANFUNCS += "sgml_common_sstate_clean"
-
 
 do_install_append() {
 	# install-catalog script contains hard-coded references to
@@ -59,13 +57,14 @@
 				fi
 			done
 		fi
-	fi
-}
+		cat << EOF > ${SSTATE_INST_POSTRM}
+#!/bin/sh
 
-sgml_common_sstate_clean () {
-	# Ensure that the catalog file sgml-docbook.cat is properly
-	# updated when the package is removed from sstate cache.
-	if [ -f ${sysconfdir}/sgml/sgml-docbook.cat ]; then
-		sed -i '/\/sgml\/sgml-ent.cat/d' ${sysconfdir}/sgml/sgml-docbook.cat
+# Ensure that the catalog file sgml-docbook.cat is properly
+# updated when the package is removed from sstate cache.
+if [ -f ${sysconfdir}/sgml/sgml-docbook.cat ]; then
+	sed -i '/\/sgml\/sgml-ent.cat/d' ${sysconfdir}/sgml/sgml-docbook.cat
+fi
+EOF
 	fi
 }
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-Fix-build-when-using-non-glibc-libc-implementation-o.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-Fix-build-when-using-non-glibc-libc-implementation-o.patch
new file mode 100644
index 0000000..7f59210
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-Fix-build-when-using-non-glibc-libc-implementation-o.patch
@@ -0,0 +1,36 @@
+From 1f0c22b79045cfcdc976643f383c1d09589d3087 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Apr 2016 16:23:56 +0000
+Subject: [PATCH] Fix build when using non-glibc libc implementation on ppc
+
+glibc includes the kernel header into its own header for macros
+musl does not
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ptrace.h | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/ptrace.h b/ptrace.h
+index d8af976..4978a69 100644
+--- a/ptrace.h
++++ b/ptrace.h
+@@ -52,7 +52,13 @@ extern long ptrace(int, int, char *, long);
+ # define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
+ #endif
+ 
+-#include <linux/ptrace.h>
++#if defined(POWERPC) && !defined(__GLIBC__)
++#define pt_regs uapi_pt_regs
++#endif
++# include <linux/ptrace.h>
++#if defined(POWERPC) && !defined(__GLIBC__)
++# undef pt_regs
++#endif
+ 
+ #ifdef HAVE_STRUCT_IA64_FPREG
+ # undef ia64_fpreg
+-- 
+1.8.3.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-Move-gcc-compat-macros-to-gcc_compat.h.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-Move-gcc-compat-macros-to-gcc_compat.h.patch
deleted file mode 100644
index aa61e15..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-Move-gcc-compat-macros-to-gcc_compat.h.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From f32126ba790dd4e61d43a2140b24f02426297bb6 Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Thu, 31 Dec 2015 14:19:41 +0000
-Subject: [PATCH] Move gcc compat macros to gcc_compat.h
-
-* defs.h: Include "gcc_compat.h".
-(GNUC_PREREQ, ATTRIBUTE_NORETURN, ATTRIBUTE_FORMAT,
-ATTRIBUTE_ALIGNED, ATTRIBUTE_PACKED, ATTRIBUTE_MALLOC,
-ATTRIBUTE_NOINLINE, ATTRIBUTE_ALLOC_SIZE): Move ...
-* gcc_compat.h: ... here.
-* Makefile.am (strace_SOURCES): Add gcc_compat.h.
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport
-
- Makefile.am  |  1 +
- defs.h       | 43 +----------------------------------
- gcc_compat.h | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 75 insertions(+), 42 deletions(-)
- create mode 100644 gcc_compat.h
-
-diff --git a/Makefile.am b/Makefile.am
-index ab52778..d43608d 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -97,6 +97,7 @@ strace_SOURCES =	\
- 	flock.c		\
- 	flock.h		\
- 	futex.c		\
-+	gcc_compat.h	\
- 	get_robust_list.c \
- 	getcpu.c	\
- 	getcwd.c	\
-diff --git a/defs.h b/defs.h
-index 283ab1f..bae212c 100644
---- a/defs.h
-+++ b/defs.h
-@@ -55,6 +55,7 @@
- #include <sys/syscall.h>
- 
- #include "mpers_type.h"
-+#include "gcc_compat.h"
- 
- #ifndef HAVE_STRERROR
- const char *strerror(int);
-@@ -68,48 +69,6 @@ const char *strerror(int);
- extern char *stpcpy(char *dst, const char *src);
- #endif
- 
--#if defined __GNUC__ && defined __GNUC_MINOR__
--# define GNUC_PREREQ(maj, min)	\
--	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
--#else
--# define __attribute__(x)	/* empty */
--# define GNUC_PREREQ(maj, min)	0
--#endif
--
--#if GNUC_PREREQ(2, 5)
--# define ATTRIBUTE_NORETURN	__attribute__((__noreturn__))
--#else
--# define ATTRIBUTE_NORETURN	/* empty */
--#endif
--
--#if GNUC_PREREQ(2, 7)
--# define ATTRIBUTE_FORMAT(args)	__attribute__((__format__ args))
--# define ATTRIBUTE_ALIGNED(arg)	__attribute__((__aligned__(arg)))
--# define ATTRIBUTE_PACKED	__attribute__((__packed__))
--#else
--# define ATTRIBUTE_FORMAT(args)	/* empty */
--# define ATTRIBUTE_ALIGNED(arg)	/* empty */
--# define ATTRIBUTE_PACKED	/* empty */
--#endif
--
--#if GNUC_PREREQ(3, 0)
--# define ATTRIBUTE_MALLOC	__attribute__((__malloc__))
--#else
--# define ATTRIBUTE_MALLOC	/* empty */
--#endif
--
--#if GNUC_PREREQ(3, 1)
--# define ATTRIBUTE_NOINLINE	__attribute__((__noinline__))
--#else
--# define ATTRIBUTE_NOINLINE	/* empty */
--#endif
--
--#if GNUC_PREREQ(4, 3)
--# define ATTRIBUTE_ALLOC_SIZE(args)	__attribute__((__alloc_size__ args))
--#else
--# define ATTRIBUTE_ALLOC_SIZE(args)	/* empty */
--#endif
--
- #ifndef offsetof
- # define offsetof(type, member)	\
- 	(((char *) &(((type *) NULL)->member)) - ((char *) (type *) NULL))
-diff --git a/gcc_compat.h b/gcc_compat.h
-new file mode 100644
-index 0000000..1f2c835
---- /dev/null
-+++ b/gcc_compat.h
-@@ -0,0 +1,73 @@
-+/*
-+ * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. The name of the author may not be used to endorse or promote products
-+ *    derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#ifndef GCC_COMPAT_H_
-+#define GCC_COMPAT_H_
-+
-+#if defined __GNUC__ && defined __GNUC_MINOR__
-+# define GNUC_PREREQ(maj, min)	\
-+	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-+#else
-+# define __attribute__(x)	/* empty */
-+# define GNUC_PREREQ(maj, min)	0
-+#endif
-+
-+#if GNUC_PREREQ(2, 5)
-+# define ATTRIBUTE_NORETURN	__attribute__((__noreturn__))
-+#else
-+# define ATTRIBUTE_NORETURN	/* empty */
-+#endif
-+
-+#if GNUC_PREREQ(2, 7)
-+# define ATTRIBUTE_FORMAT(args)	__attribute__((__format__ args))
-+# define ATTRIBUTE_ALIGNED(arg)	__attribute__((__aligned__(arg)))
-+# define ATTRIBUTE_PACKED	__attribute__((__packed__))
-+#else
-+# define ATTRIBUTE_FORMAT(args)	/* empty */
-+# define ATTRIBUTE_ALIGNED(arg)	/* empty */
-+# define ATTRIBUTE_PACKED	/* empty */
-+#endif
-+
-+#if GNUC_PREREQ(3, 0)
-+# define ATTRIBUTE_MALLOC	__attribute__((__malloc__))
-+#else
-+# define ATTRIBUTE_MALLOC	/* empty */
-+#endif
-+
-+#if GNUC_PREREQ(3, 1)
-+# define ATTRIBUTE_NOINLINE	__attribute__((__noinline__))
-+#else
-+# define ATTRIBUTE_NOINLINE	/* empty */
-+#endif
-+
-+#if GNUC_PREREQ(4, 3)
-+# define ATTRIBUTE_ALLOC_SIZE(args)	__attribute__((__alloc_size__ args))
-+#else
-+# define ATTRIBUTE_ALLOC_SIZE(args)	/* empty */
-+#endif
-+
-+#endif
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-arc-metag-nios2-or1k-tile-fix-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-arc-metag-nios2-or1k-tile-fix-build.patch
deleted file mode 100644
index a9d3203..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-arc-metag-nios2-or1k-tile-fix-build.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From dd1a80c8d213eed95fe55b7ebcb07ee165dd8e4b Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Thu, 24 Dec 2015 15:40:55 +0000
-Subject: [PATCH] arc, metag, nios2, or1k, tile: fix build
-
-Fix build regression introduced by commit
-34683e3926d8c2daa368afb805da422ee7043396.
-
-* linux/32/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap.
-* linux/arc/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap_pgoff.
-* linux/nios2/syscallent.h: Likewise.
-* linux/or1k/syscallent.h: Likewise.
-* linux/tile/syscallent1.h: Add sys_ prefix to ARCH_mmap and sys_mmap_4koff.
-* pathtrace.c (pathtrace_match): Handle SEN_ARCH_mmap.
-* NEWS: Mention this build fix.
-
-Reported-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Backport
----
- NEWS                     | 3 +++
- linux/32/syscallent.h    | 6 +++---
- linux/arc/syscallent.h   | 2 +-
- linux/nios2/syscallent.h | 2 +-
- linux/or1k/syscallent.h  | 2 +-
- linux/tile/syscallent1.h | 2 +-
- pathtrace.c              | 1 +
- 7 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index fe40ca4..09263eb 100644
---- a/NEWS
-+++ b/NEWS
-@@ -1,3 +1,9 @@
-+Noteworthy changes in release ?.?? (????-??-??)
-+===============================================
-+
-+* Bug fixes
-+  * Fixed build on arc, metag, nios2, or1k, and tile architectures.
-+
- Noteworthy changes in release 4.11 (2015-12-21)
- ===============================================
- 
-diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h
-index 5f997e7..e6f895c 100644
---- a/linux/32/syscallent.h
-+++ b/linux/32/syscallent.h
-@@ -1,5 +1,5 @@
--#ifndef ARCH_mmap
--# define ARCH_mmap mmap
-+#ifndef sys_ARCH_mmap
-+# define sys_ARCH_mmap sys_mmap
- #endif
- [  0] = { 2,	0,		SEN(io_setup),			"io_setup"		},
- [  1] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
-@@ -276,5 +276,5 @@
- [283] = { 2,	0,		SEN(membarrier),		"membarrier",		},
- [284] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
- 
--#undef ARCH_mmap
-+#undef sys_ARCH_mmap
- #undef ARCH_WANT_SYNC_FILE_RANGE2
-diff --git a/linux/arc/syscallent.h b/linux/arc/syscallent.h
-index 5847dc4..1100008 100644
---- a/linux/arc/syscallent.h
-+++ b/linux/arc/syscallent.h
-@@ -1,4 +1,4 @@
--#define ARCH_mmap mmap_pgoff
-+#define sys_ARCH_mmap sys_mmap_pgoff
- #include "32/syscallent.h"
- [244] = { 3,	0,	SEN(printargs),	"arc_cacheflush"},
- [245] = { 1,	0,	SEN(printargs),	"arc_settls"	},
-diff --git a/linux/nios2/syscallent.h b/linux/nios2/syscallent.h
-index 8a4b70e..01efe3a 100644
---- a/linux/nios2/syscallent.h
-+++ b/linux/nios2/syscallent.h
-@@ -1,4 +1,4 @@
--#define ARCH_mmap mmap_pgoff
-+#define sys_ARCH_mmap sys_mmap_pgoff
- #include "32/syscallent.h"
- [244] = {4,    0,	SEN(cacheflush), "cacheflush"},
- [245 ... 259] = { },
-diff --git a/linux/or1k/syscallent.h b/linux/or1k/syscallent.h
-index ed84b3b..351fe25 100644
---- a/linux/or1k/syscallent.h
-+++ b/linux/or1k/syscallent.h
-@@ -1,4 +1,4 @@
--#define ARCH_mmap mmap_pgoff
-+#define sys_ARCH_mmap sys_mmap_pgoff
- #include "32/syscallent.h"
- [244] = { 3,	NF,	SEN(or1k_atomic),	"or1k_atomic"	},
- [245 ... 259] = { },
-diff --git a/linux/tile/syscallent1.h b/linux/tile/syscallent1.h
-index c86f059..28dbab4 100644
---- a/linux/tile/syscallent1.h
-+++ b/linux/tile/syscallent1.h
-@@ -1,4 +1,4 @@
--#define ARCH_mmap mmap_4koff
-+#define sys_ARCH_mmap sys_mmap_4koff
- #define ARCH_WANT_SYNC_FILE_RANGE2 1
- #include "32/syscallent.h"
- [244] = { 1,	0,	SEN(printargs),	"cmpxchg_badaddr"	},
-diff --git a/pathtrace.c b/pathtrace.c
-index d530ec2..e72cdf7 100644
---- a/pathtrace.c
-+++ b/pathtrace.c
-@@ -216,6 +216,7 @@ pathtrace_match(struct tcb *tcp)
- 	case SEN_mmap:
- 	case SEN_mmap_4koff:
- 	case SEN_mmap_pgoff:
-+	case SEN_ARCH_mmap:
- 		/* x, x, x, x, fd */
- 		return fdmatch(tcp, tcp->u_arg[4]);
- 
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-scm_rights-fd.test-rewrite-without-fork.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-scm_rights-fd.test-rewrite-without-fork.patch
deleted file mode 100644
index c4e645b..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-scm_rights-fd.test-rewrite-without-fork.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-From 3fdcdd47c6a67585123a0a0c8fffabcc9f79a3a2 Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Tue, 12 Jan 2016 14:47:12 +0000
-Subject: [PATCH] scm_rights-fd.test: rewrite without fork
-
-* tests/scm_rights.c (main): Rewrite without fork.
-Place all objects passed to sendmsg and recvmsg at the end
-of memory pages followed by inaccessible pages.
-* tests/scm_rights-fd.test: Update.
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport
-
- tests/scm_rights-fd.test |  12 ++---
- tests/scm_rights.c       | 122 ++++++++++++++++++++++-------------------------
- 2 files changed, 63 insertions(+), 71 deletions(-)
-
-diff --git a/tests/scm_rights-fd.test b/tests/scm_rights-fd.test
-index a32ef36..48c5028 100755
---- a/tests/scm_rights-fd.test
-+++ b/tests/scm_rights-fd.test
-@@ -49,18 +49,18 @@ touch -- "$file" ||
- 	framework_skip_ 'failed to create a file'
- 
- run_prog ./scm_rights /dev/zero
--run_strace_merge -y -x -enetwork $args "$file"
-+run_strace -y -x -enetwork $args "$file"
- 
-+sample='\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\\xf8\\xf9\\xfa\\xfb\\xfc\\xfd\\xfe\\xff'
- n='[1-9][0-9]*'
--msg='\{msg_name\(0\)=NULL, msg_iov\(1\)=\[\{"\\x00\\x00\\x00\\x00[^"]*", '"$n"'\}\], msg_controllen='"$n"
--rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, \[3</dev/null>, 4</dev/zero>, 5</[^}>]*/(A\\n){127}Z>\]\}'
-+msg='\{msg_name\(0\)=NULL, msg_iov\(1\)=\[\{"'"$sample"'", 15\}\], msg_controllen='"$n"
-+rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, \[4</dev/null>, 5</dev/zero>, 6</[^}>]*/(A\\n){127}Z>\]\}'
- creds='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, \{pid='"$n"', uid=[0-9]+, gid=[0-9]+\}\}'
--prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +'
- EXPECTED="$LOG.expected"
- 
- cat > "$EXPECTED" << __EOF__
--${prefix}sendmsg\\(1<socket:\\[[0-9]+\\]>, $msg, \\[$rights\\], msg_flags=0\\}, 0\\) += $n
--${prefix}recvmsg\\(0<socket:\\[[0-9]+\\]>, $msg, \\[$creds, $rights\\], msg_flags=0\\}, 0\\) += $n
-+sendmsg\\(3<socket:\\[[0-9]+\\]>, $msg, \\[$rights\\], msg_flags=0\\}, 0\\) = 15
-+recvmsg\\(0<socket:\\[[0-9]+\\]>, $msg, \\[$creds, $rights\\], msg_flags=0\\}, 0\\) = 15
- __EOF__
- 
- match_grep "$LOG" "$EXPECTED"
-diff --git a/tests/scm_rights.c b/tests/scm_rights.c
-index 1e5e850..00af4d5 100644
---- a/tests/scm_rights.c
-+++ b/tests/scm_rights.c
-@@ -27,26 +27,39 @@
- 
- #include "tests.h"
- #include <assert.h>
--#include <string.h>
--#include <stdlib.h>
--#include <unistd.h>
- #include <errno.h>
- #include <fcntl.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
- #include <sys/socket.h>
--#include <sys/wait.h>
- 
- int main(int ac, const char **av)
- {
--	int i;
--	int data = 0;
--	struct iovec iov = {
--		.iov_base = &data,
--		.iov_len = sizeof(iov)
--	};
-+	assert(ac > 0);
-+	int fds[ac];
-+
-+	static const char sample[] =
-+		"\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-+	const unsigned int data_size = sizeof(sample) - 1;
-+	void *data = tail_alloc(data_size);
-+	memcpy(data, sample, data_size);
-+
-+	struct iovec *iov = tail_alloc(sizeof(struct iovec));
-+	iov->iov_base = data;
-+	iov->iov_len = data_size;
- 
--	while ((i = open("/dev/null", O_RDWR)) < 3)
-+	struct msghdr *mh = tail_alloc(sizeof(struct msghdr));
-+	memset(mh, 0, sizeof(*mh));
-+	mh->msg_iov = iov;
-+	mh->msg_iovlen = 1;
-+
-+	int i;
-+	while ((i = open("/dev/null", O_RDWR)) <= ac + 2)
- 		assert(i >= 0);
--	(void) close(3);
-+	while (i > 2)
-+		assert(close(i--) == 0);
-+	assert(close(0) == 0);
- 
- 	int sv[2];
- 	if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv))
-@@ -55,60 +68,39 @@ int main(int ac, const char **av)
- 	if (setsockopt(sv[0], SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)))
- 		perror_msg_and_skip("setsockopt");
- 
--	pid_t pid = fork();
--	if (pid < 0)
--		perror_msg_and_fail("fork");
--
--	if (pid) {
--		assert(close(sv[0]) == 0);
--		assert(dup2(sv[1], 1) == 1);
--		assert(close(sv[1]) == 0);
--
--		int fds[ac];
--		assert((fds[0] = open("/dev/null", O_RDWR)) == 3);
--		for (i = 1; i < ac; ++i)
--			assert((fds[i] = open(av[i], O_RDONLY)) == i + 3);
--
--		union {
--			struct cmsghdr cmsg;
--			char buf[CMSG_LEN(sizeof(fds))];
--		} control;
--
--		control.cmsg.cmsg_level = SOL_SOCKET;
--		control.cmsg.cmsg_type = SCM_RIGHTS;
--		control.cmsg.cmsg_len = CMSG_LEN(sizeof(fds));
--		memcpy(CMSG_DATA(&control.cmsg), fds, sizeof(fds));
--
--		struct msghdr mh = {
--			.msg_iov = &iov,
--			.msg_iovlen = 1,
--			.msg_control = &control,
--			.msg_controllen = sizeof(control)
--		};
--
--		assert(sendmsg(1, &mh, 0) == sizeof(iov));
--		assert(close(1) == 0);
--
--                int status;
--		assert(waitpid(pid, &status, 0) == pid);
--		assert(status == 0);
--	} else {
--		assert(close(sv[1]) == 0);
--		assert(dup2(sv[0], 0) == 0);
--		assert(close(sv[0]) == 0);
--
--		struct cmsghdr control[4 + ac * sizeof(int) / sizeof(struct cmsghdr)];
--
--		struct msghdr mh = {
--			.msg_iov = &iov,
--			.msg_iovlen = 1,
--			.msg_control = control,
--			.msg_controllen = sizeof(control)
--		};
--
--		assert(recvmsg(0, &mh, 0) == sizeof(iov));
--		assert(close(0) == 0);
-+	assert((fds[0] = open("/dev/null", O_RDWR)) == 4);
-+	for (i = 1; i < ac; ++i)
-+		assert((fds[i] = open(av[i], O_RDONLY)) == i + 4);
-+
-+	unsigned int cmsg_size = CMSG_SPACE(sizeof(fds));
-+	struct cmsghdr *cmsg = tail_alloc(cmsg_size);
-+	memset(cmsg, 0, cmsg_size);
-+	cmsg->cmsg_level = SOL_SOCKET;
-+	cmsg->cmsg_type = SCM_RIGHTS;
-+	cmsg->cmsg_len = CMSG_LEN(sizeof(fds));
-+	memcpy(CMSG_DATA(cmsg), fds, sizeof(fds));
-+
-+	mh->msg_control = cmsg;
-+	mh->msg_controllen = cmsg_size;
-+
-+	assert(sendmsg(sv[1], mh, 0) == (int) data_size);
-+
-+	assert(close(sv[1]) == 0);
-+	assert(open("/dev/null", O_RDWR) == sv[1]);
-+
-+	for (i = 0; i < ac; ++i) {
-+		assert(close(fds[i]) == 0);
-+		fds[i] = 0;
- 	}
- 
-+	cmsg_size += CMSG_SPACE(sizeof(struct ucred));
-+	cmsg = tail_alloc(cmsg_size);
-+	memset(cmsg, 0, cmsg_size);
-+	mh->msg_control = cmsg;
-+	mh->msg_controllen = cmsg_size;
-+
-+	assert(recvmsg(0, mh, 0) == (int) data_size);
-+	assert(close(0) == 0);
-+
- 	return 0;
- }
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-tests-introduce-libtests.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-tests-introduce-libtests.patch
deleted file mode 100644
index 1575ecd..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-tests-introduce-libtests.patch
+++ /dev/null
@@ -1,306 +0,0 @@
-From 87e6b230fff800eb768b68b2e5173ebbe83fd3ef Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Sat, 2 Jan 2016 12:05:14 +0000
-Subject: [PATCH] tests: introduce libtests
-
-Introduce tests/libtests.a with common functions for use in tests.
-
-* tests/tests.h: New file.
-* tests/error_msg.c: Likewise.
-* tests/tail_alloc.c: Likewise.
-* tests/get_page_size.c: Likewise.
-* tests/Makefile.am (libtests_a_SOURCES, libtests_a_CPPFLAGS,
-check_LIBRARIES, LDADD): New variables.
-(clock_xettime_LDADD, filter_unavailable_LDADD, mq_LDADD,
-pc_LDADD, times_LDADD): Add $(LDADD).
-* tests/.gitignore: Add libtests.a.
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport
-
- tests/.gitignore      |  1 +
- tests/Makefile.am     | 20 ++++++++++----
- tests/error_msg.c     | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/get_page_size.c | 13 +++++++++
- tests/tail_alloc.c    | 52 ++++++++++++++++++++++++++++++++++++
- tests/tests.h         | 62 ++++++++++++++++++++++++++++++++++++++++++
- 6 files changed, 217 insertions(+), 5 deletions(-)
- create mode 100644 tests/error_msg.c
- create mode 100644 tests/get_page_size.c
- create mode 100644 tests/tail_alloc.c
- create mode 100644 tests/tests.h
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 386a2c2..62d0e56 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -40,6 +40,16 @@ AM_CPPFLAGS = $(ARCH_MFLAGS) \
- 	      -I$(top_srcdir)
- AM_LDFLAGS = $(ARCH_MFLAGS)
- 
-+libtests_a_SOURCES = \
-+	get_page_size.c \
-+	error_msg.c \
-+	tail_alloc.c \
-+	tests.h \
-+	# end of libtests_a_SOURCES
-+libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-+check_LIBRARIES = libtests.a
-+LDADD = libtests.a
-+
- check_PROGRAMS = \
- 	_newselect \
- 	adjtimex \
-@@ -146,19 +156,19 @@ check_PROGRAMS = \
- 	xettimeofday \
- 	# end of check_PROGRAMS
- 
--clock_xettime_LDADD = -lrt
--filter_unavailable_LDADD = -lpthread
-+clock_xettime_LDADD = -lrt $(LDADD)
-+filter_unavailable_LDADD = -lpthread $(LDADD)
- fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
- fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
- ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
- lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
- mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
--mq_LDADD = -lrt
-+mq_LDADD = -lrt $(LDADD)
- newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
--pc_LDADD = $(dl_LIBS)
-+pc_LDADD = $(dl_LIBS) $(LDADD)
- stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
- statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
--times_LDADD = -lrt
-+times_LDADD = -lrt $(LDADD)
- truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
- uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
- stack_fcall_SOURCES = stack-fcall.c \
-diff --git a/tests/error_msg.c b/tests/error_msg.c
-new file mode 100644
-index 0000000..3fd3411
---- /dev/null
-+++ b/tests/error_msg.c
-@@ -0,0 +1,74 @@
-+/*
-+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. The name of the author may not be used to endorse or promote products
-+ *    derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#include "tests.h"
-+#include <errno.h>
-+#include <stdarg.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+void
-+perror_msg_and_fail(const char *fmt, ...)
-+{
-+	int err_no = errno;
-+	va_list p;
-+
-+	va_start(p, fmt);
-+	vfprintf(stderr, fmt, p);
-+	if (err_no)
-+		fprintf(stderr, ": %s\n", strerror(err_no));
-+	else
-+		putc('\n', stderr);
-+	exit(1);
-+}
-+
-+void
-+error_msg_and_skip(const char *fmt, ...)
-+{
-+	va_list p;
-+
-+	va_start(p, fmt);
-+	vfprintf(stderr, fmt, p);
-+	putc('\n', stderr);
-+	exit(77);
-+}
-+
-+void
-+perror_msg_and_skip(const char *fmt, ...)
-+{
-+	int err_no = errno;
-+	va_list p;
-+
-+	va_start(p, fmt);
-+	vfprintf(stderr, fmt, p);
-+	if (err_no)
-+		fprintf(stderr, ": %s\n", strerror(err_no));
-+	else
-+		putc('\n', stderr);
-+	exit(77);
-+}
-diff --git a/tests/get_page_size.c b/tests/get_page_size.c
-new file mode 100644
-index 0000000..aeea861
---- /dev/null
-+++ b/tests/get_page_size.c
-@@ -0,0 +1,13 @@
-+#include "tests.h"
-+#include <unistd.h>
-+
-+size_t
-+get_page_size(void)
-+{
-+	static size_t page_size;
-+
-+	if (!page_size)
-+		page_size = sysconf(_SC_PAGESIZE);
-+
-+	return page_size;
-+}
-diff --git a/tests/tail_alloc.c b/tests/tail_alloc.c
-new file mode 100644
-index 0000000..2b8b14e
---- /dev/null
-+++ b/tests/tail_alloc.c
-@@ -0,0 +1,52 @@
-+/*
-+ * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. The name of the author may not be used to endorse or promote products
-+ *    derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#include "tests.h"
-+#include <string.h>
-+#include <sys/mman.h>
-+
-+void *
-+tail_alloc(const size_t size)
-+{
-+	const size_t page_size = get_page_size();
-+	const size_t len = (size + page_size - 1) & -page_size;
-+	const size_t alloc_size = len + 2 * page_size;
-+
-+	void *p = mmap(NULL, alloc_size, PROT_READ | PROT_WRITE,
-+		       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-+	if (MAP_FAILED == p)
-+		perror_msg_and_fail("mmap(%zu)", alloc_size);
-+
-+	void *start_work = p + page_size;
-+	void *tail_guard = start_work + len;
-+
-+	if (munmap(p, page_size) || munmap(tail_guard, page_size))
-+		perror_msg_and_fail("munmap");
-+
-+	memset(start_work, 0xff, len);
-+	return tail_guard - size;
-+}
-diff --git a/tests/tests.h b/tests/tests.h
-new file mode 100644
-index 0000000..91fa24e
---- /dev/null
-+++ b/tests/tests.h
-@@ -0,0 +1,62 @@
-+/*
-+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ * 3. The name of the author may not be used to endorse or promote products
-+ *    derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#ifndef TESTS_H_
-+# define TESTS_H_
-+
-+# ifdef HAVE_CONFIG_H
-+#  include "config.h"
-+# endif
-+
-+# include <sys/types.h>
-+# include "gcc_compat.h"
-+
-+/* Cached sysconf(_SC_PAGESIZE). */
-+size_t get_page_size(void);
-+
-+/* Print message and strerror(errno) to stderr, then exit(1). */
-+void perror_msg_and_fail(const char *, ...)
-+	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
-+/* Print message to stderr, then exit(77). */
-+void error_msg_and_skip(const char *, ...)
-+	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
-+/* Print message and strerror(errno) to stderr, then exit(77). */
-+void perror_msg_and_skip(const char *, ...)
-+	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
-+
-+/*
-+ * Allocate memory that ends on the page boundary.
-+ * Pages allocated by this call are preceeded by an unmapped page
-+ * and followed also by an unmapped page.
-+ */
-+void *tail_alloc(const size_t)
-+	ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((1));
-+
-+# define SKIP_MAIN_UNDEFINED(arg) \
-+	int main(void) { error_msg_and_skip("undefined: %s", arg); }
-+
-+#endif
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-tests-scm_rights.c-use-libtests.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-tests-scm_rights.c-use-libtests.patch
deleted file mode 100644
index 3fbab8b..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/0001-tests-scm_rights.c-use-libtests.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 339a15b619b479c63cafba21d5fc359e613d9ee8 Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Mon, 4 Jan 2016 23:53:31 +0000
-Subject: [PATCH] tests/scm_rights.c: use libtests
-
-* tests/scm_rights.c (main): Use perror_msg_and_fail and perror_msg_and_skip.
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport
-
- tests/scm_rights.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/tests/scm_rights.c b/tests/scm_rights.c
-index c41444f..1e5e850 100644
---- a/tests/scm_rights.c
-+++ b/tests/scm_rights.c
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
-+ * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
-  * All rights reserved.
-  *
-  * Redistribution and use in source and binary forms, with or without
-@@ -25,6 +25,7 @@
-  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  */
- 
-+#include "tests.h"
- #include <assert.h>
- #include <string.h>
- #include <stdlib.h>
-@@ -48,12 +49,15 @@ int main(int ac, const char **av)
- 	(void) close(3);
- 
- 	int sv[2];
--	assert(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);
-+	if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv))
-+		perror_msg_and_skip("socketpair");
- 	int one = 1;
--	assert(setsockopt(sv[0], SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)) == 0);
-+	if (setsockopt(sv[0], SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)))
-+		perror_msg_and_skip("setsockopt");
- 
- 	pid_t pid = fork();
--	assert(pid >= 0);
-+	if (pid < 0)
-+		perror_msg_and_fail("fork");
- 
- 	if (pid) {
- 		assert(close(sv[0]) == 0);
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
index 824031e..2b76e8a 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
@@ -10,23 +10,22 @@
  2 files changed, 19 insertions(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 0209bac..b969e25 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -36,7 +36,7 @@ AC_INIT([strace],
  AC_CONFIG_SRCDIR([strace.c])
  AC_CONFIG_AUX_DIR([.])
  AC_CONFIG_HEADERS([config.h])
--AM_INIT_AUTOMAKE([foreign nostdinc dist-xz no-dist-gzip silent-rules parallel-tests])
-+AM_INIT_AUTOMAKE([foreign nostdinc dist-xz no-dist-gzip silent-rules serial-tests])
+-AM_INIT_AUTOMAKE([foreign nostdinc dist-xz silent-rules parallel-tests])
++AM_INIT_AUTOMAKE([foreign nostdinc dist-xz silent-rules serial-tests])
  AM_MAINTAINER_MODE
  AC_CANONICAL_HOST
  
 diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 0f23b4b..429f7e9 100644
+index 9023029..e1917fa 100644
 --- a/tests/Makefile.am
 +++ b/tests/Makefile.am
-@@ -332,3 +332,21 @@ ksysent.h: $(srcdir)/ksysent.sed
+@@ -784,3 +784,21 @@ ksysent.h: $(srcdir)/ksysent.sed
  
  BUILT_SOURCES = ksysent.h
  CLEANFILES = ksysent.h $(TESTS:=.tmp)
@@ -48,6 +47,3 @@
 +		sed -i -e 's/$${srcdir=.}/./g' $(DESTDIR)/$(TESTDIR)/$$file; \
 +	done
 +	for i in net net-fd scm_rights-fd sigaction; do sed -i -e 's/$$srcdir/./g' $(DESTDIR)/$(TESTDIR)/$$i.test; done
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/mips-SIGEMT.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/mips-SIGEMT.patch
new file mode 100644
index 0000000..b24378b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/mips-SIGEMT.patch
@@ -0,0 +1,24 @@
+SIGEMT is not defined everywhere e.g musl does
+not define it. Therefore check it being defined
+before using it.
+
+Fixes errors e.g.
+../../strace-4.13/tests/signal2name.c:45:7: error: 'SIGEMT' undeclared (first use in this function)
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+Index: strace-4.13/tests/signal2name.c
+===================================================================
+--- strace-4.13.orig/tests/signal2name.c
++++ strace-4.13/tests/signal2name.c
+@@ -42,7 +42,9 @@ signal2name(int sig)
+ 	CASE(SIGEMT);
+ 	CASE(SIGLOST);
+ #elif defined MIPS
++#ifdef SIGEMT
+ 	CASE(SIGEMT);
++#endif
+ 	CASE(SIGIOT);
+ 	CASE(SIGPWR);
+ #else
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
index bfc7f34..94ee53c 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
@@ -12,19 +12,20 @@
 
 Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
 ---
- mpers.awk                 | 2 +-
- tests/caps.awk            | 2 +-
- tests/match.awk           | 2 +-
- tests/net-yy-accept.awk   | 2 +-
- tests/net-yy-connect.awk  | 2 +-
- tests/sigaction.awk       | 2 +-
- tests/uid.awk             | 2 +-
- tests/unix-yy-accept.awk  | 2 +-
- tests/unix-yy-connect.awk | 2 +-
- 9 files changed, 9 insertions(+), 9 deletions(-)
+ mpers.awk                | 2 +-
+ tests-m32/caps.awk       | 2 +-
+ tests-m32/match.awk      | 2 +-
+ tests-m32/sigaction.awk  | 2 +-
+ tests-mx32/caps.awk      | 2 +-
+ tests-mx32/match.awk     | 2 +-
+ tests-mx32/sigaction.awk | 2 +-
+ tests/caps.awk           | 2 +-
+ tests/match.awk          | 2 +-
+ tests/sigaction.awk      | 2 +-
+ 10 files changed, 10 insertions(+), 10 deletions(-)
 
 diff --git a/mpers.awk b/mpers.awk
-index 73bf0b0..50e6c16 100644
+index 99248c5..ff10520 100644
 --- a/mpers.awk
 +++ b/mpers.awk
 @@ -1,4 +1,4 @@
@@ -32,17 +33,77 @@
 +#!/usr/bin/gawk
  #
  # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-diff --git a/tests/caps.awk b/tests/caps.awk
-index bad8b0f..845f37c 100644
---- a/tests/caps.awk
-+++ b/tests/caps.awk
+ # Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+diff --git a/tests-m32/caps.awk b/tests-m32/caps.awk
+index 67003ac..a66f1f0 100644
+--- a/tests-m32/caps.awk
++++ b/tests-m32/caps.awk
+@@ -1,4 +1,4 @@
+-#!/bin/gawk
++#!/usr/bin/gawk
+ #
+ # This file is part of caps strace test.
+ #
+diff --git a/tests-m32/match.awk b/tests-m32/match.awk
+index abfbae9..f2740bf 100644
+--- a/tests-m32/match.awk
++++ b/tests-m32/match.awk
 @@ -1,4 +1,4 @@
 -#!/bin/gawk
 +#!/usr/bin/gawk
  #
  # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
  # All rights reserved.
+diff --git a/tests-m32/sigaction.awk b/tests-m32/sigaction.awk
+index 5c6b6d0..3e14464 100644
+--- a/tests-m32/sigaction.awk
++++ b/tests-m32/sigaction.awk
+@@ -1,4 +1,4 @@
+-#!/bin/gawk
++#!/usr/bin/gawk
+ #
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # All rights reserved.
+diff --git a/tests-mx32/caps.awk b/tests-mx32/caps.awk
+index 67003ac..a66f1f0 100644
+--- a/tests-mx32/caps.awk
++++ b/tests-mx32/caps.awk
+@@ -1,4 +1,4 @@
+-#!/bin/gawk
++#!/usr/bin/gawk
+ #
+ # This file is part of caps strace test.
+ #
+diff --git a/tests-mx32/match.awk b/tests-mx32/match.awk
+index abfbae9..f2740bf 100644
+--- a/tests-mx32/match.awk
++++ b/tests-mx32/match.awk
+@@ -1,4 +1,4 @@
+-#!/bin/gawk
++#!/usr/bin/gawk
+ #
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # All rights reserved.
+diff --git a/tests-mx32/sigaction.awk b/tests-mx32/sigaction.awk
+index 5c6b6d0..3e14464 100644
+--- a/tests-mx32/sigaction.awk
++++ b/tests-mx32/sigaction.awk
+@@ -1,4 +1,4 @@
+-#!/bin/gawk
++#!/usr/bin/gawk
+ #
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # All rights reserved.
+diff --git a/tests/caps.awk b/tests/caps.awk
+index 67003ac..a66f1f0 100644
+--- a/tests/caps.awk
++++ b/tests/caps.awk
+@@ -1,4 +1,4 @@
+-#!/bin/gawk
++#!/usr/bin/gawk
+ #
+ # This file is part of caps strace test.
+ #
 diff --git a/tests/match.awk b/tests/match.awk
 index abfbae9..f2740bf 100644
 --- a/tests/match.awk
@@ -53,26 +114,6 @@
  #
  # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
  # All rights reserved.
-diff --git a/tests/net-yy-accept.awk b/tests/net-yy-accept.awk
-index fed3e30..e916ab0 100644
---- a/tests/net-yy-accept.awk
-+++ b/tests/net-yy-accept.awk
-@@ -1,4 +1,4 @@
--#!/bin/gawk
-+#!/usr/bin/gawk
- #
- # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
-diff --git a/tests/net-yy-connect.awk b/tests/net-yy-connect.awk
-index f4dcf91..b3cec8c 100644
---- a/tests/net-yy-connect.awk
-+++ b/tests/net-yy-connect.awk
-@@ -1,4 +1,4 @@
--#!/bin/gawk
-+#!/usr/bin/gawk
- #
- # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
 diff --git a/tests/sigaction.awk b/tests/sigaction.awk
 index 5c6b6d0..3e14464 100644
 --- a/tests/sigaction.awk
@@ -83,36 +124,3 @@
  #
  # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
  # All rights reserved.
-diff --git a/tests/uid.awk b/tests/uid.awk
-index a56c5be..67b0749 100644
---- a/tests/uid.awk
-+++ b/tests/uid.awk
-@@ -1,4 +1,4 @@
--#!/bin/gawk
-+#!/usr/bin/gawk
- #
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
- # All rights reserved.
-diff --git a/tests/unix-yy-accept.awk b/tests/unix-yy-accept.awk
-index 4ed60e4..2a9d9c0 100644
---- a/tests/unix-yy-accept.awk
-+++ b/tests/unix-yy-accept.awk
-@@ -1,4 +1,4 @@
--#!/bin/gawk
-+#!/usr/bin/gawk
- #
- # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
-diff --git a/tests/unix-yy-connect.awk b/tests/unix-yy-connect.awk
-index 262bf2e..c809dfa 100644
---- a/tests/unix-yy-connect.awk
-+++ b/tests/unix-yy-connect.awk
-@@ -1,4 +1,4 @@
--#!/bin/gawk
-+#!/usr/bin/gawk
- #
- # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace_4.11.bb b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace_4.11.bb
deleted file mode 100644
index 7391388..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace_4.11.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "System call tracing tool"
-HOMEPAGE = "http://strace.sourceforge.net"
-SECTION = "console/utils"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=124500c21e856f0912df29295ba104c7"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.xz \
-           file://disable-git-version-gen.patch \
-           file://more-robust-test-for-m32-mx32-compile-support.patch \
-           file://update-gawk-paths.patch \
-           file://use-asm-sgidefs.h.patch \
-           file://0001-arc-metag-nios2-or1k-tile-fix-build.patch \
-           file://Makefile-ptest.patch \
-           file://0001-tests-scm_rights.c-use-libtests.patch \
-           file://0001-scm_rights-fd.test-rewrite-without-fork.patch \
-           file://0001-Move-gcc-compat-macros-to-gcc_compat.h.patch \
-           file://0001-tests-introduce-libtests.patch \
-           file://run-ptest \
-          "
-
-SRC_URI[md5sum] = "a15d2555a7febb56d00c6e1a51c655dc"
-SRC_URI[sha256sum] = "e86a5f6cd8f941f67f3e4b28f4e60f3d9185c951cf266404533210a2e5cd8152"
-
-inherit autotools ptest bluetooth
-
-RDEPENDS_${PN}-ptest += "make coreutils grep gawk sed"
-
-PACKAGECONFIG_class-target ??= "\
-    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
-"
-
-PACKAGECONFIG[bluez] = "ac_cv_header_bluetooth_bluetooth_h=yes,ac_cv_header_bluetooth_bluetooth_h=no,${BLUEZ}"
-PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
-
-TESTDIR = "tests"
-
-do_install_append() {
-	# We don't ship strace-graph here because it needs perl
-	rm ${D}${bindir}/strace-graph
-}
-
-do_compile_ptest() {
-	oe_runmake -C ${TESTDIR} buildtest-TESTS
-}
-
-do_install_ptest() {
-	oe_runmake -C ${TESTDIR} install-ptest BUILDDIR=${B} DESTDIR=${D}${PTEST_PATH} TESTDIR=${TESTDIR}
-	sed -i -e '/^src/s/strace.*[1-9]/ptest/' ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
-}
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/strace/strace_4.13.bb b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace_4.13.bb
new file mode 100644
index 0000000..cae7f21
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/strace/strace_4.13.bb
@@ -0,0 +1,49 @@
+SUMMARY = "System call tracing tool"
+HOMEPAGE = "http://strace.sourceforge.net"
+SECTION = "console/utils"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=124500c21e856f0912df29295ba104c7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.xz \
+           file://disable-git-version-gen.patch \
+           file://more-robust-test-for-m32-mx32-compile-support.patch \
+           file://update-gawk-paths.patch \
+           file://use-asm-sgidefs.h.patch \
+           file://Makefile-ptest.patch \
+           file://run-ptest \
+           file://0001-Fix-build-when-using-non-glibc-libc-implementation-o.patch \
+           file://mips-SIGEMT.patch \
+           "
+
+SRC_URI[md5sum] = "4b78c7febdd24c79d5147824d1a080a3"
+SRC_URI[sha256sum] = "d48f732576c91ece36a5843d63f9be054c40ef59f1e4773986042636861625d7"
+
+inherit autotools ptest bluetooth
+
+RDEPENDS_${PN}-ptest += "make coreutils grep gawk sed"
+
+PACKAGECONFIG_class-target ??= "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+"
+
+PACKAGECONFIG[bluez] = "ac_cv_header_bluetooth_bluetooth_h=yes,ac_cv_header_bluetooth_bluetooth_h=no,${BLUEZ}"
+PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
+
+TESTDIR = "tests"
+
+do_install_append() {
+	# We don't ship strace-graph here because it needs perl
+	rm ${D}${bindir}/strace-graph
+}
+
+do_compile_ptest() {
+	oe_runmake -C ${TESTDIR} buildtest-TESTS
+}
+
+do_install_ptest() {
+	oe_runmake -C ${TESTDIR} install-ptest BUILDDIR=${B} DESTDIR=${D}${PTEST_PATH} TESTDIR=${TESTDIR}
+	sed -i -e '/^src/s/strace.*[1-9]/ptest/' ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
+}
+
+BBCLASSEXTEND = "native"
+TOOLCHAIN = "gcc"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion_1.9.3.bb b/import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion_1.9.3.bb
deleted file mode 100644
index a19a675..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion_1.9.3.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Subversion (svn) version control system client"
-SECTION = "console/network"
-DEPENDS = "apr-util serf sqlite3 file"
-DEPENDS_append_class-native = " file-replacement-native"
-RDEPENDS_${PN} = "serf"
-LICENSE = "Apache-2"
-HOMEPAGE = "http://subversion.tigris.org"
-
-BBCLASSEXTEND = "native"
-
-inherit gettext pythonnative
-
-SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
-           file://disable_macos.patch \
-           file://serf.m4-Regex-modified-to-allow-D-in-paths.patch \
-           file://0001-Fix-libtool-name-in-configure.ac.patch \
-           "
-SRC_URI[md5sum] = "243036eb28b50ce517fc228eb3250add"
-SRC_URI[sha256sum] = "8bbf6bb125003d88ee1c22935a36b7b1ab7d957e0c8b5fbfe5cb6310b6e86ae0"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=af81ae49ba359e70626c05e9bf313709"
-
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl"
-PACKAGECONFIG[gnome-keyring] = "--with-gnome-keyring,--without-gnome-keyring,glib-2.0 gnome-keyring"
-
-EXTRA_OECONF = " \
-                --without-berkeley-db --without-apxs \
-                --without-swig --with-apr=${STAGING_BINDIR_CROSS} \
-                --with-apr-util=${STAGING_BINDIR_CROSS} \
-                --disable-keychain \
-                ac_cv_path_RUBY=none"
-
-inherit autotools
-
-export LDFLAGS += " -L${STAGING_LIBDIR} "
-CPPFLAGS += "-P"
-BUILD_CPPFLAGS += "-P"
-
-acpaths = "-I build/ -I build/ac-macros/"
-
-do_configure_prepend () {
-	rm -f ${S}/libtool
-	rm -f ${S}/build/libtool.m4 ${S}/build/ltmain.sh ${S}/build/ltoptions.m4 ${S}/build/ltsugar.m4 ${S}/build/ltversion.m4 ${S}/build/lt~obsolete.m4
-	rm -f ${S}/aclocal.m4
-	sed -i -e 's:with_sasl="/usr/local":with_sasl="${STAGING_DIR}":' ${S}/build/ac-macros/sasl.m4
-}
-
-#| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_local/libsvn_ra_local-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| /usr/bin/ld: cannot find -lsvn_delta-1| collect2: ld returned 1 exit status| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_svn/libsvn_ra_svn-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_serf/libsvn_ra_serf-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
-#| x86_64-linux-libtool: install: error: relink `libsvn_ra_serf-1.la' with the above command before installing it
-#| x86_64-linux-libtool: install: warning: `../../subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
-#| /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/subversion-1.8.9/build-outputs.mk:1090: recipe for target 'install-serf-lib' failed
-#| make: *** [install-serf-lib] Error 1
-PARALLEL_MAKEINST = ""
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion_1.9.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion_1.9.4.bb
new file mode 100644
index 0000000..3ce83c1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion_1.9.4.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Subversion (svn) version control system client"
+SECTION = "console/network"
+DEPENDS = "apr-util serf sqlite3 file"
+DEPENDS_append_class-native = " file-replacement-native"
+RDEPENDS_${PN} = "serf"
+LICENSE = "Apache-2"
+HOMEPAGE = "http://subversion.tigris.org"
+
+BBCLASSEXTEND = "native"
+
+inherit gettext
+
+SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://disable_macos.patch \
+           file://serf.m4-Regex-modified-to-allow-D-in-paths.patch \
+           file://0001-Fix-libtool-name-in-configure.ac.patch \
+           "
+
+SRC_URI[md5sum] = "29121a038f87641055a8183f49e9739f"
+SRC_URI[sha256sum] = "1267f9e2ab983f260623bee841e6c9cc458bf4bf776238ed5f100983f79e9299"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=af81ae49ba359e70626c05e9bf313709"
+
+PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl"
+PACKAGECONFIG[gnome-keyring] = "--with-gnome-keyring,--without-gnome-keyring,glib-2.0 gnome-keyring"
+
+EXTRA_OECONF = " \
+                --without-berkeley-db --without-apxs \
+                --without-swig --with-apr=${STAGING_BINDIR_CROSS} \
+                --with-apr-util=${STAGING_BINDIR_CROSS} \
+                --disable-keychain \
+                ac_cv_path_RUBY=none"
+
+inherit autotools
+
+export LDFLAGS += " -L${STAGING_LIBDIR} "
+CPPFLAGS += "-P"
+BUILD_CPPFLAGS += "-P"
+
+acpaths = "-I build/ -I build/ac-macros/"
+
+do_configure_prepend () {
+	rm -f ${S}/libtool
+	rm -f ${S}/build/libtool.m4 ${S}/build/ltmain.sh ${S}/build/ltoptions.m4 ${S}/build/ltsugar.m4 ${S}/build/ltversion.m4 ${S}/build/lt~obsolete.m4
+	rm -f ${S}/aclocal.m4
+	sed -i -e 's:with_sasl="/usr/local":with_sasl="${STAGING_DIR}":' ${S}/build/ac-macros/sasl.m4
+}
+
+#| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_local/libsvn_ra_local-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| /usr/bin/ld: cannot find -lsvn_delta-1| collect2: ld returned 1 exit status| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_svn/libsvn_ra_svn-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_serf/libsvn_ra_serf-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
+#| x86_64-linux-libtool: install: error: relink `libsvn_ra_serf-1.la' with the above command before installing it
+#| x86_64-linux-libtool: install: warning: `../../subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
+#| /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/subversion-1.8.9/build-outputs.mk:1090: recipe for target 'install-serf-lib' failed
+#| make: *** [install-serf-lib] Error 1
+PARALLEL_MAKEINST = ""
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/swabber/swabber-native_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/swabber/swabber-native_git.bb
deleted file mode 100644
index 2f313bb..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/swabber/swabber-native_git.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Tool to monitor and report on host system file usage"
-HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/swabber"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
-
-SRCREV = "2d1fe36fb0a4fdaae8823a9818a6785182d75e66"
-PV = "0.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://git.yoctoproject.org/swabber"
-
-inherit native
-
-do_configure () {
-	:
-}
-
-do_install() {
-  oe_runmake 'DESTDIR=${D}' install
-}
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/swig/swig.inc b/import-layers/yocto-poky/meta/recipes-devtools/swig/swig.inc
index 9da40df..704bb27 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/swig/swig.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/swig/swig.inc
@@ -7,14 +7,14 @@
 
 SECTION = "devel"
 
-DEPENDS = "libpcre python"
+DEPENDS = "libpcre python3"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
 
-inherit autotools pythonnative
+inherit autotools python3native
 
 EXTRA_OECONF = " \
-    --with-python=${PYTHON} \
+    --with-python3=${PYTHON} \
     --without-allegrocl \
     --without-android \
     --without-boost \
@@ -33,7 +33,6 @@
     --without-perl5 \
     --without-pike \
     --without-php \
-    --without-python3 \
     --without-r \
     --without-ruby \
     --without-tcl \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_230.bb b/import-layers/yocto-poky/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_230.bb
new file mode 100644
index 0000000..9ce629a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_230.bb
@@ -0,0 +1,29 @@
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \
+                    file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "git://github.com/systemd/systemd-bootchart.git;protocol=https"
+
+# Modify these as desired
+PV = "230+git${SRCPV}"
+SRCREV = "dcb246b46239259ec99b3c6e6ab7d27e1a5a8a84"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "systemd libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native intltool"
+
+inherit pkgconfig autotools systemd distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SYSTEMD_SERVICE_${PN} = "systemd-bootchart.service"
+
+do_configure_prepend() {
+    # intltool.m4 is a soft link to /usr/share/aclocal/m4, delete it and use the one in our sysroot
+    rm -f ${S}/m4/intltool.m4
+}
+
+FILES_${PN} += "${systemd_unitdir}/systemd-bootchart"
+
+EXTRA_OECONF = " --with-rootprefix=${base_prefix} \
+                 --with-rootlibdir=${base_libdir}"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb b/import-layers/yocto-poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
index ab2fcd7..e5e41f1 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
@@ -5,11 +5,11 @@
 LICENSE = "EPL-1.0 | EDL-1.0"
 LIC_FILES_CHKSUM = "file://edl-v10.html;md5=522a390a83dc186513f0500543ad3679"
 
-SRCREV = "b9a735e9c7cf82f80d412b7ab15d08b89d5a4ccc"
-PV = "1.3.0+git${SRCPV}"
+SRCREV = "2dddd5f440a15d5406032fac20f206484513646f"
+PV = "1.4.0+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
-SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git;branch=1.3_mars_bugfix \
+SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent;branch=1.4_neon_bugfix \
            file://fix_ranlib.patch \
            file://ldflags.patch \
            file://0001-canonicalize_file_name-is-specific-to-glibc.patch;striplevel=2 \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch b/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch
index 5b5de07..72a0fa4 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch
@@ -12,7 +12,7 @@
 | Making directory /srv/home/nitin/builds/build-gcc47/tmp/work/x86_64-poky-linux/tcl-8.5.11-r5/image/usr/bin
 | make: *** [install-msgs] Error 1
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/04/26
 
 Index: unix/Makefile.in
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/no_packages.patch b/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/no_packages.patch
index ab6cc43..5c622a2 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/no_packages.patch
+++ b/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl/no_packages.patch
@@ -5,26 +5,26 @@
 
 Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com>
 
-Index: unix/Makefile.in
-===================================================================
---- unix.orig/Makefile.in	2013-11-10 23:38:12.235425891 -0800
-+++ unix/Makefile.in	2013-11-10 23:38:12.231425891 -0800
-@@ -611,7 +611,7 @@
+diff --git a/Makefile.in b/Makefile.in
+index b729ffd..2c2e824 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -612,7 +612,7 @@ SRCS = $(GENERIC_SRCS) $(TOMMATH_SRCS) $(UNIX_SRCS) $(NOTIFY_SRCS) \
  # Start of rules
  #--------------------------------------------------------------------------
  
 -all: binaries libraries doc packages
 +all: binaries libraries doc
  
- binaries: ${LIB_FILE} $(STUB_LIB_FILE) ${TCL_EXE}
+ binaries: ${LIB_FILE} ${TCL_EXE}
  
-@@ -653,12 +653,12 @@
+@@ -656,12 +656,12 @@ Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in
  #tclConfig.h: $(UNIX_DIR)/tclConfig.h.in
  #	$(SHELL) config.status
  
 -clean: clean-packages
 +clean:
- 	rm -f *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \
+ 	rm -rf *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \
  		errors ${TCL_EXE} ${TCLTEST_EXE} lib.exp Tcl @DTRACE_HDR@
  	cd dltest ; $(MAKE) clean
  
@@ -33,7 +33,7 @@
  	rm -rf Makefile config.status config.cache config.log tclConfig.sh \
  		tclConfig.h *.plist Tcl.framework tcl.pc
  	cd dltest ; $(MAKE) distclean
-@@ -706,7 +706,7 @@
+@@ -709,7 +709,7 @@ tcltest-real:
  # tcltest, ie:
  #	% make test TESTFLAGS="-verbose bps -file fileName.test"
  
@@ -42,7 +42,7 @@
  
  test-tcl: ${TCLTEST_EXE}
  	$(SHELL_ENV) ${TCLTEST_EXE} $(TOP_DIR)/tests/all.tcl $(TESTFLAGS)
-@@ -771,7 +771,7 @@
+@@ -774,7 +774,7 @@ INSTALL_PACKAGE_TARGETS = install-packages
  INSTALL_DEV_TARGETS = install-headers
  INSTALL_EXTRA_TARGETS = @EXTRA_INSTALL@
  INSTALL_TARGETS = $(INSTALL_BASE_TARGETS) $(INSTALL_DOC_TARGETS) $(INSTALL_DEV_TARGETS) \
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl_8.6.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl_8.6.4.bb
deleted file mode 100644
index 8e92b3e..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl_8.6.4.bb
+++ /dev/null
@@ -1,102 +0,0 @@
-SUMMARY = "Tool Command Language"
-HOMEPAGE = "http://tcl.sourceforge.net"
-SECTION = "devel/tcltk"
-
-# http://www.tcl.tk/software/tcltk/license.html
-LICENSE = "tcl & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://../license.terms;md5=058f6229798281bbcac4239c788cfa38 \
-    file://../compat/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
-    file://../library/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
-    file://../macosx/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
-    file://../tests/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
-    file://../win/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
-"
-
-DEPENDS = "tcl-native zlib"
-
-BASE_SRC_URI = "${SOURCEFORGE_MIRROR}/tcl/${BPN}${PV}-src.tar.gz \
-                file://tcl-add-soname.patch"
-SRC_URI = "${BASE_SRC_URI} \
-           file://fix_non_native_build_issue.patch \
-           file://fix_issue_with_old_distro_glibc.patch \
-           file://no_packages.patch \
-           file://tcl-remove-hardcoded-install-path.patch \
-           file://alter-includedir.patch \
-           file://run-ptest \
-"
-SRC_URI[md5sum] = "d7cbb91f1ded1919370a30edd1534304"
-SRC_URI[sha256sum] = "9e6ed94c981c1d0c5f5fefb8112d06c6bf4d050a7327e95e71d417c416519c8d"
-
-SRC_URI_class-native = "${BASE_SRC_URI}"
-
-S = "${WORKDIR}/${BPN}${PV}/unix"
-
-VER = "${PV}"
-
-inherit autotools ptest binconfig
-
-DEPENDS_class-native = "zlib-native"
-
-EXTRA_OECONF = "--enable-threads --disable-rpath --libdir=${libdir}"
-
-do_configure() {
-	cd ${S}
-	gnu-configize
-	cd ${B}
-	oe_runconf
-}
-
-do_compile_prepend() {
-	echo > ${S}/../compat/fixstrtod.c
-}
-
-do_install() {
-	autotools_do_install install-private-headers
-	ln -sf ./tclsh${VER} ${D}${bindir}/tclsh
-	ln -sf tclsh8.6 ${D}${bindir}/tclsh${VER}
-	sed -i "s+-L${B}+-L${STAGING_LIBDIR}+g" tclConfig.sh
-	sed -i "s+${WORKDIR}+${STAGING_INCDIR}+g" tclConfig.sh
-	sed -i "s,-L${libdir},-L=${libdir},g" tclConfig.sh
-	sed -i "s,-I${includedir},-I=${includedir},g" tclConfig.sh
-	install -d ${D}${bindir_crossscripts}
-	install -m 0755 tclConfig.sh ${D}${bindir_crossscripts}
-	install -m 0755 tclConfig.sh ${D}${libdir}
-	cd ..
-	for dir in compat generic unix; do
-		install -d ${D}${includedir}/${BPN}${VER}/$dir
-		install -m 0644 ${S}/../$dir/*.h ${D}${includedir}/${BPN}${VER}/$dir/
-	done
-}
-
-SYSROOT_PREPROCESS_FUNCS += "tcl_sysroot_preprocess"
-tcl_sysroot_preprocess () {
-	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
-}
-
-PACKAGES =+ "tcl-lib"
-FILES_tcl-lib = "${libdir}/libtcl8.6.so.*"
-FILES_${PN} += "${libdir}/tcl${VER} ${libdir}/tcl8.6 ${libdir}/tcl8"
-FILES_${PN}-dev += "${libdir}/tclConfig.sh ${libdir}/tclooConfig.sh"
-
-# isn't getting picked up by shlibs code
-RDEPENDS_${PN} += "tcl-lib"
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN}-ptest += "libgcc"
-
-BBCLASSEXTEND = "native"
-
-do_compile_ptest() {
-	oe_runmake tcltest
-}
-
-do_install_ptest() {
-	cp ${B}/tcltest ${D}${PTEST_PATH}
-	cp -r ${S}/../library ${D}${PTEST_PATH}
-	cp -r ${S}/../tests ${D}${PTEST_PATH}
-}
-
-# Fix some paths that might be used by Tcl extensions
-BINCONFIG_GLOB = "*Config.sh"
-
-# Fix the path in sstate
-SSTATE_SCAN_FILES += "*Config.sh"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl_8.6.6.bb b/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl_8.6.6.bb
new file mode 100644
index 0000000..2dd0a7a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/tcltk/tcl_8.6.6.bb
@@ -0,0 +1,97 @@
+SUMMARY = "Tool Command Language"
+HOMEPAGE = "http://tcl.sourceforge.net"
+SECTION = "devel/tcltk"
+
+# http://www.tcl.tk/software/tcltk/license.html
+LICENSE = "tcl & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://../license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+    file://../compat/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+    file://../library/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+    file://../macosx/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+    file://../tests/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+    file://../win/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+"
+
+DEPENDS = "tcl-native zlib"
+
+BASE_SRC_URI = "${SOURCEFORGE_MIRROR}/tcl/${BPN}${PV}-src.tar.gz \
+                file://tcl-add-soname.patch"
+SRC_URI = "${BASE_SRC_URI} \
+           file://fix_non_native_build_issue.patch \
+           file://fix_issue_with_old_distro_glibc.patch \
+           file://no_packages.patch \
+           file://tcl-remove-hardcoded-install-path.patch \
+           file://alter-includedir.patch \
+           file://run-ptest \
+"
+SRC_URI[md5sum] = "5193aea8107839a79df8ac709552ecb7"
+SRC_URI[sha256sum] = "a265409781e4b3edcc4ef822533071b34c3dc6790b893963809b9fe221befe07"
+
+SRC_URI_class-native = "${BASE_SRC_URI}"
+
+S = "${WORKDIR}/${BPN}${PV}/unix"
+
+VER = "${PV}"
+
+inherit autotools ptest binconfig
+
+DEPENDS_class-native = "zlib-native"
+
+EXTRA_OECONF = "--enable-threads --disable-rpath --libdir=${libdir}"
+
+do_configure() {
+	cd ${S}
+	gnu-configize
+	cd ${B}
+	oe_runconf
+}
+
+do_compile_prepend() {
+	echo > ${S}/../compat/fixstrtod.c
+}
+
+do_install() {
+	autotools_do_install install-private-headers
+	ln -sf ./tclsh${VER} ${D}${bindir}/tclsh
+	ln -sf tclsh8.6 ${D}${bindir}/tclsh${VER}
+	sed -i "s+-L${B}+-L${STAGING_LIBDIR}+g" tclConfig.sh
+	sed -i "s+${WORKDIR}+${STAGING_INCDIR}+g" tclConfig.sh
+	install -d ${D}${bindir_crossscripts}
+	install -m 0755 tclConfig.sh ${D}${bindir_crossscripts}
+	install -m 0755 tclConfig.sh ${D}${libdir}
+	cd ..
+	for dir in compat generic unix; do
+		install -d ${D}${includedir}/${BPN}${VER}/$dir
+		install -m 0644 ${S}/../$dir/*.h ${D}${includedir}/${BPN}${VER}/$dir/
+	done
+}
+
+SYSROOT_DIRS += "${bindir_crossscripts}"
+
+PACKAGES =+ "tcl-lib"
+FILES_tcl-lib = "${libdir}/libtcl8.6.so.*"
+FILES_${PN} += "${libdir}/tcl${VER} ${libdir}/tcl8.6 ${libdir}/tcl8"
+FILES_${PN}-dev += "${libdir}/tclConfig.sh ${libdir}/tclooConfig.sh"
+
+# isn't getting picked up by shlibs code
+RDEPENDS_${PN} += "tcl-lib"
+RDEPENDS_${PN}_class-native = ""
+RDEPENDS_${PN}-ptest += "libgcc"
+
+BBCLASSEXTEND = "native"
+
+do_compile_ptest() {
+	oe_runmake tcltest
+}
+
+do_install_ptest() {
+	cp ${B}/tcltest ${D}${PTEST_PATH}
+	cp -r ${S}/../library ${D}${PTEST_PATH}
+	cp -r ${S}/../tests ${D}${PTEST_PATH}
+}
+
+# Fix some paths that might be used by Tcl extensions
+BINCONFIG_GLOB = "*Config.sh"
+
+# Fix the path in sstate
+SSTATE_SCAN_FILES += "*Config.sh"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/unfs3/unfs3_0.9.22.r497.bb b/import-layers/yocto-poky/meta/recipes-devtools/unfs3/unfs3_0.9.22.r497.bb
index eba1139..e7574fb 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/unfs3/unfs3_0.9.22.r497.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/unfs3/unfs3_0.9.22.r497.bb
@@ -9,8 +9,8 @@
 CHECK_DATE = "Dec 10, 2015"
 
 DEPENDS = "flex-native bison-native flex"
-DEPENDS_append_libc-musl = " libtirpc "
-DEPENDS_append_class-nativesdk += "flex-nativesdk"
+DEPENDS_append_libc-musl = " libtirpc"
+DEPENDS_append_class-nativesdk = " flex-nativesdk"
 
 MOD_PV = "497"
 S = "${WORKDIR}/trunk"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/vala/vala.inc b/import-layers/yocto-poky/meta/recipes-devtools/vala/vala.inc
index 2a8875f..34c9db9 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/vala/vala.inc
+++ b/import-layers/yocto-poky/meta/recipes-devtools/vala/vala.inc
@@ -11,7 +11,7 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
-SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+SHRT_VER = "${@d.getVar('PV', True).split('.')[0]}.${@d.getVar('PV', True).split('.')[1]}"
 
 SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/${BPN}/${SHRT_VER}/${BP}.tar.xz"
 inherit autotools pkgconfig upstream-version-is-even
@@ -36,15 +36,14 @@
         install ${B}/vapigen-wrapper ${D}${bindir}/
 }
 
+# Put vapigen wrapper into target sysroot so that it can be used when building
+# vapi files.
+SYSROOT_DIRS_append_class-target = " ${bindir}"
 
-SYSROOT_PREPROCESS_FUNCS_append_class-target += "vapigen_sysroot_preprocess"
-
+SYSROOT_PREPROCESS_FUNCS_append_class-target = " vapigen_sysroot_preprocess"
 vapigen_sysroot_preprocess() {
-        # Put vapigen wrapper into target sysroot so that it can be used when building vapi files.
-        sysroot_stage_dir ${D}${bindir} ${SYSROOT_DESTDIR}${bindir}
-
-        # Also, tweak the vapigen name in vapigen pkgconfig file, so that it picks up our
-        # wrapper.
+        # Tweak the vapigen name in the vapigen pkgconfig file, so that it picks
+        # up our wrapper.
         sed -i \
            -e "s|vapigen=.*|vapigen=${bindir}/vapigen-wrapper|" \
            ${SYSROOT_DESTDIR}${datadir}/pkgconfig/vapigen-${SHRT_VER}.pc
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/vala/vala_0.30.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/vala/vala_0.30.1.bb
deleted file mode 100644
index 6394afc..0000000
--- a/import-layers/yocto-poky/meta/recipes-devtools/vala/vala_0.30.1.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI += " file://0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch \
-             file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch \
-"
-
-SRC_URI[md5sum] = "cc2eb2384fc10038b643753d734a5a51"
-SRC_URI[sha256sum] = "23add78e5c6a5e6df019d4a885c9c79814c9e0b957519ec8a4f4d826c4e5df2c"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/vala/vala_0.32.1.bb b/import-layers/yocto-poky/meta/recipes-devtools/vala/vala_0.32.1.bb
new file mode 100644
index 0000000..b34086e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/vala/vala_0.32.1.bb
@@ -0,0 +1,8 @@
+require ${BPN}.inc
+
+SRC_URI += " file://0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch \
+             file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch \
+"
+
+SRC_URI[md5sum] = "755881770bffac020b5ea5f625fbe528"
+SRC_URI[sha256sum] = "dd0d47e548a34cfb1e4b04149acd082a86414c49057ffb79902eb9a508a161a9"
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind/gcc5-port.patch b/import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind/gcc5-port.patch
new file mode 100644
index 0000000..76bc821
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind/gcc5-port.patch
@@ -0,0 +1,64 @@
+backport fix from upstream to fix build errors with gcc 6
+
+http://valgrind.10908.n7.nabble.com/Valgrind-r15773-in-trunk-configure-ac-drd-tests-std-thread-cpp-drd-tests-std-thread2-cpp-td56109.html
+
+../../../valgrind-3.11.0/drd/tests/std_thread.cpp:30:3: error: '_Impl_base' is not a member of 'std::thread'
+   std::thread::_Impl_base* __t = static_cast<std::thread::_Impl_base*>(__p);
+   ^~~
+../../../valgrind-3.11.0/drd/tests/std_thread.cpp:30:28: error: '__t' was not declared in this scope
+   std::thread::_Impl_base* __t = static_cast<std::thread::_Impl_base*>(__p);
+                            ^~~
+../../../valgrind-3.11.0/drd/tests/std_thread.cpp:30:59: error: '_Impl_base' in 'class std::thread' does not name a type
+   std::thread::_Impl_base* __t = static_cast<std::thread::_Impl_base*>(__p);
+                                                           ^~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport
+
+Index: configure.ac
+===================================================================
+--- a/configure.ac	(revision 15772)
++++ b/configure.ac	(revision 15773)
+@@ -160,7 +160,7 @@
+      icc-1[[3-9]].*)
+ 	AC_MSG_RESULT([ok (ICC version ${gcc_version})])
+ 	;;
+-     notclang-[[3-9]].*|notclang-[[1-9][0-9]]*)
++     notclang-[[3-9]]|notclang-[[3-9]].*|notclang-[[1-9][0-9]]*)
+ 	AC_MSG_RESULT([ok (${gcc_version})])
+ 	;;
+      clang-2.9|clang-[[3-9]].*|clang-[[1-9][0-9]]*)
+Index: drd/tests/std_thread2.cpp
+===================================================================
+--- a/drd/tests/std_thread2.cpp	(revision 15772)
++++ b/drd/tests/std_thread2.cpp	(revision 15773)
+@@ -26,6 +26,7 @@
+   return 0;
+ }
+ 
++#if defined(__GNUC__) && __GNUC__ -0 < 6
+ //
+ // From libstdc++-v3/src/c++11/thread.cc
+ //
+@@ -70,3 +71,4 @@
+     }
+   }
+ }
++#endif
+Index: drd/tests/std_thread.cpp
+===================================================================
+--- a/drd/tests/std_thread.cpp	(revision 15772)
++++ b/drd/tests/std_thread.cpp	(revision 15773)
+@@ -21,6 +21,7 @@
+   return 0;
+ }
+ 
++#if defined(__GNUC__) && __GNUC__ -0 < 6
+ //
+ // From libstdc++-v3/src/c++11/thread.cc
+ //
+@@ -65,3 +66,4 @@
+     }
+   }
+ }
++#endif
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind_3.11.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind_3.11.0.bb
index 51c88bf..42fd27f 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind_3.11.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind_3.11.0.bb
@@ -23,6 +23,7 @@
            file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \
            file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \
            file://avoid-neon-for-targets-which-don-t-support-it.patch \
+           file://gcc5-port.patch \
 "
 SRC_URI_append_libc-musl = "\
            file://0001-fix-build-for-musl-targets.patch \
@@ -37,6 +38,10 @@
 COMPATIBLE_HOST_armv5 = 'null'
 COMPATIBLE_HOST_armv6 = 'null'
 
+# valgrind doesn't like mips soft float
+COMPATIBLE_HOST_mips = "${@bb.utils.contains("TARGET_FPU", "soft", "null", ".*-linux", d)}"
+COMPATIBLE_HOST_mipsel = "${@bb.utils.contains("TARGET_FPU", "soft", "null", ".*-linux", d)}"
+
 inherit autotools ptest
 
 EXTRA_OECONF = "--enable-tls --without-mpicc"
@@ -68,9 +73,9 @@
 RDEPENDS_${PN}-ptest += " sed perl perl-module-file-glob"
 RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
 
-# One of the tests contains a bogus interpreter path on purpose, and QA
-# check complains about it
-INSANE_SKIP_${PN}-ptest += "file-rdeps"
+# One of the tests contains a bogus interpreter path on purpose.
+# Skip file dependency check
+SKIP_FILEDEPS_${PN}-ptest = '1'
 
 do_compile_ptest() {
     oe_runmake check
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb b/import-layers/yocto-poky/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
index 71f873f..aaaeb6e 100644
--- a/import-layers/yocto-poky/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
+++ b/import-layers/yocto-poky/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
@@ -13,8 +13,9 @@
 SRC_URI[sha256sum] = "2f986b7c9a0e9ac6728147668e776d405465284e13c74d4146c9cbc51fd8aad3"
 
 inherit autotools
+RDEPENDS_class-native = "libxslt-native"
 
-# xmlto needs getopt/xmllint/xsltproc/bash at runtime
+# xmlto needs getopt/xmllint/xsltproc/bash/tail at runtime
 RDEPENDS_${PN} = "docbook-xml-dtd4 \
                   docbook-xsl-stylesheets \
                   util-linux \
@@ -23,7 +24,9 @@
 "
 RDEPENDS_${PN}_append_class-target = " \
                   libxslt-bin \
+                  coreutils \
 "
+CACHED_CONFIGUREVARS += "ac_cv_path_TAIL=${bindir}/tail"
 
 BBCLASSEXTEND = "native"
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/asciidoc/asciidoc_8.6.9.bb b/import-layers/yocto-poky/meta/recipes-extended/asciidoc/asciidoc_8.6.9.bb
new file mode 100644
index 0000000..1cd1454
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/asciidoc/asciidoc_8.6.9.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Tool for creating HTML, PDF, EPUB, man pages"
+DESCRIPTION = "AsciiDoc is a text document format for writing short documents, \
+articles, books and UNIX man pages."
+
+HOMEPAGE = "http://asciidoc.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+                    file://COPYRIGHT;md5=029ad5428ba5efa20176b396222d4069"
+
+SRC_URI = "http://downloads.sourceforge.net/project/${BPN}/${BPN}/${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "c59018f105be8d022714b826b0be130a"
+SRC_URI[sha256sum] = "78db9d0567c8ab6570a6eff7ffdf84eadd91f2dfc0a92a2d0105d323cab4e1f0"
+
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/asciidoc/files/"
+
+inherit distutils autotools-brokensep
+
+export DESTDIR = "${D}"
+DEPENDS_class-native = "docbook-xml-dtd4-native"
+RDEPENDS_${PN} += "python" 
+BBCLASSEXTEND = "native"
+
+CLEANBROKEN = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/at/at/configure-fix-with-without-selinux.patch b/import-layers/yocto-poky/meta/recipes-extended/at/at/configure-fix-with-without-selinux.patch
deleted file mode 100644
index 389af1e..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/at/at/configure-fix-with-without-selinux.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From c02354af7f3d9426da31503abfae70952c699a9d Mon Sep 17 00:00:00 2001
-From: Wenzong Fan <wenzong.fan@windriver.com>
-Date: Fri, 18 Mar 2016 03:23:11 -0400
-Subject: [PATCH] configure: fix with/without selinux
-
-Problem:
-without-selinux doesn't work since WITH_SELINUX is always be defined no
-matter which option is given: with-selinux, without-selinux.
-
-Fix:
-Disable selinux support if without-selinux is given; otherwise check
-libselinux to determine if selinux support should be enabled.
-
-Upstream-Status: Submitted [at@packages.debian.org]
-
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
----
- configure.ac | 19 +++++++++++++++----
- 1 file changed, 15 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 5a43419..8c9de62 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -240,10 +240,21 @@ AC_ARG_WITH(daemon_username,
- AC_SUBST(DAEMON_USERNAME)
- 
- AC_ARG_WITH(selinux,
--[ --with-selinux       Define to run with selinux],
--AC_DEFINE(WITH_SELINUX, 1, [Define if you are building with_selinux]),
--)
--AC_CHECK_LIB(selinux, is_selinux_enabled, SELINUXLIB=-lselinux)
-+[ --with-selinux       Define to run with selinux (default=check)],
-+[],
-+[with_selinux=check])
-+
-+if test "x$with_selinux" != xno; then
-+  AC_CHECK_LIB([selinux], [is_selinux_enabled],
-+    [SELINUXLIB=-lselinux
-+     AC_DEFINE(WITH_SELINUX, 1, [Define if you are building with_selinux])
-+    ],
-+    [if test "x$with_selinux" != xcheck; then
-+       AC_MSG_FAILURE([--with-selinux is given, but test for selinux failed])
-+     fi
-+    ]
-+  )
-+fi
- AC_SUBST(SELINUXLIB)
- AC_SUBST(WITH_SELINUX)
- 
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/at/at_3.1.18.bb b/import-layers/yocto-poky/meta/recipes-extended/at/at_3.1.18.bb
deleted file mode 100644
index 93044f5..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/at/at_3.1.18.bb
+++ /dev/null
@@ -1,70 +0,0 @@
-SUMMARY = "Delayed job execution and batch processing"
-DESCRIPTION = "At allows for commands to be run at a particular time.  Batch will execute commands when \
-the system load levels drop to a particular level."
-SECTION = "base"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
-DEPENDS = "flex flex-native \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-
-RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_DEPS}', '', d)} \
-"
-
-PAM_DEPS = "libpam libpam-runtime pam-plugin-env pam-plugin-limits"
-
-RCONFLICTS_${PN} = "atd"
-RREPLACES_${PN} = "atd"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/a/at/at_${PV}.orig.tar.gz;subdir=${BP} \
-    file://fix_parallel_build_error.patch \
-    file://posixtm.c \
-    file://posixtm.h \
-    file://file_replacement_with_gplv2.patch \
-    file://atd.init \
-    file://atd.service \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
-    file://makefile-fix-parallel.patch \
-    file://0001-remove-glibc-assumption.patch \
-    file://configure-fix-with-without-selinux.patch \
-    "
-
-PAM_SRC_URI = "file://pam.conf.patch \
-               file://configure-add-enable-pam.patch"
-
-SRC_URI[md5sum] = "f67a7aab557cd5b4a1311079a08acebe"
-SRC_URI[sha256sum] = "dbd5c8cb8edd53ef467363c3af0391c08769f1dbbd4d5002c59a4cd4cac11d52"
-
-EXTRA_OECONF += "ac_cv_path_SENDMAIL=/bin/true \
-                 --with-daemon_username=root \
-                 --with-daemon_groupname=root \
-                 --with-jobdir=/var/spool/at/jobs \
-                 --with-atspool=/var/spool/at/spool \
-                 ac_cv_header_security_pam_appl_h=${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'yes', 'no', d)} "
-
-inherit autotools-brokensep systemd update-rc.d
-
-INITSCRIPT_NAME = "atd"
-INITSCRIPT_PARAMS = "defaults"
-
-SYSTEMD_SERVICE_${PN} = "atd.service"
-
-copy_sources() {
-	cp -f ${WORKDIR}/posixtm.[ch] ${S}
-}
-do_patch[postfuncs] += "copy_sources"
-
-do_install () {
-	oe_runmake -e "IROOT=${D}" install
-
-	install -d ${D}${sysconfdir}/init.d
-	install -m 0755    ${WORKDIR}/atd.init		${D}${sysconfdir}/init.d/atd
-
-	# install systemd unit files
-	install -d ${D}${systemd_unitdir}/system
-	install -m 0644 ${WORKDIR}/atd.service ${D}${systemd_unitdir}/system
-	sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/atd.service
-
-	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
-		install -D -m 0644 ${WORKDIR}/${BP}/pam.conf ${D}${sysconfdir}/pam.d/atd
-	fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/at/at_3.1.20.bb b/import-layers/yocto-poky/meta/recipes-extended/at/at_3.1.20.bb
new file mode 100644
index 0000000..85459b6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/at/at_3.1.20.bb
@@ -0,0 +1,71 @@
+SUMMARY = "Delayed job execution and batch processing"
+DESCRIPTION = "At allows for commands to be run at a particular time.  Batch will execute commands when \
+the system load levels drop to a particular level."
+SECTION = "base"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
+DEPENDS = "flex flex-native \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_DEPS}', '', d)} \
+"
+
+PAM_DEPS = "libpam libpam-runtime pam-plugin-env pam-plugin-limits"
+
+RCONFLICTS_${PN} = "atd"
+RREPLACES_${PN} = "atd"
+
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/a/${BPN}/${BPN}_${PV}.orig.tar.gz \
+    file://fix_parallel_build_error.patch \
+    file://posixtm.c \
+    file://posixtm.h \
+    file://file_replacement_with_gplv2.patch \
+    file://atd.init \
+    file://atd.service \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+    file://makefile-fix-parallel.patch \
+    file://0001-remove-glibc-assumption.patch \
+    "
+
+PAM_SRC_URI = "file://pam.conf.patch \
+               file://configure-add-enable-pam.patch"
+
+SRC_URI[md5sum] = "e7bd7b785b2cbb17e133d6bdc0fb099e"
+SRC_URI[sha256sum] = "0871923cab73050b98ace020664eb2ddc1e669e4166b5abb64d864d02fcefab9"
+
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/at/"
+
+EXTRA_OECONF += "ac_cv_path_SENDMAIL=/bin/true \
+                 --with-daemon_username=root \
+                 --with-daemon_groupname=root \
+                 --with-jobdir=/var/spool/at/jobs \
+                 --with-atspool=/var/spool/at/spool \
+                 ac_cv_header_security_pam_appl_h=${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'yes', 'no', d)} "
+
+inherit autotools-brokensep systemd update-rc.d
+
+INITSCRIPT_NAME = "atd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_SERVICE_${PN} = "atd.service"
+
+copy_sources() {
+	cp -f ${WORKDIR}/posixtm.[ch] ${S}
+}
+do_patch[postfuncs] += "copy_sources"
+
+do_install () {
+	oe_runmake -e "IROOT=${D}" install
+
+	install -d ${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/atd.init		${D}${sysconfdir}/init.d/atd
+
+	# install systemd unit files
+	install -d ${D}${systemd_unitdir}/system
+	install -m 0644 ${WORKDIR}/atd.service ${D}${systemd_unitdir}/system
+	sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/atd.service
+
+	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
+		install -D -m 0644 ${WORKDIR}/${BP}/pam.conf ${D}${sysconfdir}/pam.d/atd
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas.inc b/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas.inc
deleted file mode 100644
index 23d12ca..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Augeas configuration API"
-HOMEPAGE = "http://augeas.net/"
-BUGTRACKER = "https://fedorahosted.org/augeas/report/1"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbb461211a33b134d42ed5ee802b37ff"
-
-SRC_URI = "http://download.augeas.net/${BP}.tar.gz \
-           file://add-missing-argz-conditional.patch \
-           file://sepbuildfix.patch \
-           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
-          "
-
-DEPENDS = "readline libxml2"
-
-inherit autotools pkgconfig
-
-PACKAGES =+ "${PN}-lenses lib${BPN}"
-
-FILES_${PN}-lenses = "${datadir}/augeas/lenses"
-FILES_lib${BPN} = "${libdir}/lib*${SOLIBS}"
-
-RDEPENDS_lib${BPN} += "${PN}-lenses"
-RRECOMMENDS_lib${BPN} += "${PN}"
-
-LEAD_SONAME = "libaugeas.so"
-
-do_install_append() {
-	rm -fr ${D}${datadir}/vim
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/0001-Unset-need_charset_alias-when-building-for-musl.patch b/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index 9a19876..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b9565dc2fe0c4f7daaec91b7e83bc7313dee2f4a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Apr 2015 17:02:13 -0700
-Subject: [PATCH] Unset need_charset_alias when building for musl
-
-localcharset uses ac_cv_gnu_library_2_1 from glibc21.m4
-which actually shoudl be fixed in gnulib and then all downstream
-projects will get it eventually. For now we apply the fix to
-coreutils
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/gnulib.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: augeas-1.2.0/gnulib/lib/Makefile.am
-===================================================================
---- augeas-1.2.0.orig/gnulib/lib/Makefile.am
-+++ augeas-1.2.0/gnulib/lib/Makefile.am
-@@ -463,7 +463,7 @@ install-exec-localcharset: all-local
- 	  case '$(host_os)' in \
- 	    darwin[56]*) \
- 	      need_charset_alias=true ;; \
--	    darwin* | cygwin* | mingw* | pw32* | cegcc*) \
-+	    darwin* | cygwin* | mingw* | pw32* | cegcc* | linux-musl*) \
- 	      need_charset_alias=false ;; \
- 	    *) \
- 	      need_charset_alias=true ;; \
diff --git a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/add-missing-argz-conditional.patch b/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/add-missing-argz-conditional.patch
deleted file mode 100644
index abbdbaa..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/add-missing-argz-conditional.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Add missing GL_GENERATE_ARGZ_H conditional
-
-- GL_GENERATE_ARGZ_H is used in gnulib/lib/Makefile.am
-
-Upstream-Status: Pending
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: augeas-1.0.0/configure.ac
-===================================================================
---- augeas-1.0.0.orig/configure.ac
-+++ augeas-1.0.0/configure.ac
-@@ -55,6 +55,8 @@ AC_ARG_WITH([failmalloc],
- 
- AM_CONDITIONAL([WITH_FAILMALLOC], [test x$with_failmalloc != xno])
- 
-+AM_CONDITIONAL([GL_GENERATE_ARGZ_H], [test -n "$ARGZ_H"])
-+
- dnl --enable-debug=(yes|no)
- AC_ARG_ENABLE([debug],
-               [AC_HELP_STRING([--enable-debug=no/yes],
diff --git a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/sepbuildfix.patch b/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/sepbuildfix.patch
deleted file mode 100644
index b82a3ee..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas/sepbuildfix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Ensure that builds in separate builddirs (${B} != ${S}) correctly install the 
-lenses files.
-
-Upstream-Status: Pending
-
-RP 2013/4/17
-
-Index: augeas-1.0.0/Makefile.am
-===================================================================
---- augeas-1.0.0.orig/Makefile.am	2012-11-02 15:20:11.000000000 +0000
-+++ augeas-1.0.0/Makefile.am	2013-04-17 10:36:24.033400125 +0000
-@@ -5,8 +5,8 @@
- lensdir=$(datadir)/augeas/lenses/dist
- lenstestdir=$(datadir)/augeas/lenses/dist/tests
- 
--dist_lens_DATA=$(wildcard lenses/*.aug)
--dist_lenstest_DATA=$(wildcard lenses/tests/*.aug)
-+dist_lens_DATA=$(wildcard $(top_srcdir)/lenses/*.aug)
-+dist_lenstest_DATA=$(wildcard $(top_srcdir)lenses/tests/*.aug)
- 
- EXTRA_DIST=augeas.spec build/aux/move-if-change Makefile.am HACKING
- 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas_1.4.0.bb b/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas_1.4.0.bb
deleted file mode 100644
index 1064ad4..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/augeas/augeas_1.4.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require augeas.inc
-
-SRC_URI[md5sum] = "a2536a9c3d744dc09d234228fe4b0c93"
-SRC_URI[sha256sum] = "659fae7ac229029e60a869a3b88c616cfd51cf2fba286cdfe3af3a052cb35b30"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/build-tests.patch b/import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/build-tests.patch
index 91341ee..e63457c 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/build-tests.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/build-tests.patch
@@ -11,15 +11,15 @@
  
  recho$(EXEEXT):		$(SUPPORT_SRC)recho.c
 -	@$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)recho.c ${LIBS_FOR_BUILD}
-+	@$(CC) $(CCFLAGS) -o $@ $<
++	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $<
  
  zecho$(EXEEXT):		$(SUPPORT_SRC)zecho.c
 -	@$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)zecho.c ${LIBS_FOR_BUILD}
-+	@$(CC) $(CCFLAGS) -o $@ $<
++	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $<
  
  printenv$(EXEEXT):	$(SUPPORT_SRC)printenv.c
 -	@$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)printenv.c ${LIBS_FOR_BUILD}
-+	@$(CC) $(CCFLAGS) -o $@ $<
++	@$(CC) $(CCFLAGS) $(LDFLAGS) -o $@ $<
  
 -test tests check:	force $(Program) $(TESTS_SUPPORT)
 +test tests check:
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/string-format.patch b/import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/string-format.patch
new file mode 100644
index 0000000..eda3964
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/string-format.patch
@@ -0,0 +1,21 @@
+Fix a string format warning when using security flags:
+
+| ../bash-3.2.48/print_cmd.c:1152:3: error: format not a string literal and no format arguments [-Werror=format-security]
+|    cprintf (indentation_string);
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/print_cmd.c b/print_cmd.c
+index d1dfd1a..956db53 100644
+--- a/print_cmd.c
++++ b/print_cmd.c
+@@ -1149,7 +1149,7 @@ indent (amount)
+   for (i = 0; amount > 0; amount--)
+     indentation_string[i++] = ' ';
+   indentation_string[i] = '\0';
+-  cprintf (indentation_string);
++  cprintf ("%s", indentation_string);
+ }
+ 
+ static void
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash.inc b/import-layers/yocto-poky/meta/recipes-extended/bash/bash.inc
index 93ca00b..1d08526 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/bash/bash.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://tiswww.case.edu/php/chet/bash/bashtop.html"
 SECTION = "base/shell"
 
-DEPENDS = "ncurses bison-native"
+DEPENDS = "ncurses bison-native virtual/libiconv"
 
 inherit autotools gettext texinfo update-alternatives ptest
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash/0001-help-fix-printf-format-security-warning.patch b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/0001-help-fix-printf-format-security-warning.patch
new file mode 100644
index 0000000..5405c84
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/0001-help-fix-printf-format-security-warning.patch
@@ -0,0 +1,35 @@
+From e5837a42f8f48a6a721805ff8f7fcd32861d09ca Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Tue, 26 Jul 2016 13:09:47 +0100
+Subject: [PATCH] help: fix printf() format security warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+| ../../bash-4.3.30/builtins/../../bash-4.3.30/builtins/help.def: In function 'help_builtin':
+| ../../bash-4.3.30/builtins/../../bash-4.3.30/builtins/help.def:130:7: error: format not a string literal and no format arguments [-Werror=format-security]
+|        printf (ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1)));
+|        ^~~~~~
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+---
+Upstream-Status: Pending
+ builtins/help.def | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/builtins/help.def b/builtins/help.def
+index 1894f17..cf624c6 100644
+--- a/builtins/help.def
++++ b/builtins/help.def
+@@ -127,7 +127,7 @@ help_builtin (list)
+ 
+   if (glob_pattern_p (list->word->word))
+     {
+-      printf (ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1)));
++      printf ("%s", ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1)));
+       print_word_list (list, ", ");
+       printf ("'\n\n");
+     }
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash/fix-run-builtins.patch b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/fix-run-builtins.patch
new file mode 100644
index 0000000..2fa3883
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/fix-run-builtins.patch
@@ -0,0 +1,33 @@
+From 0c4cab9594c96c2dc435a8d9724605824bcbf917 Mon Sep 17 00:00:00 2001
+From: Dengke Du <dengke.du@windriver.com>
+Date: Tue, 19 Apr 2016 02:57:45 -0400
+Subject: [PATCH] fix run-builtins failed
+
+FAIL: run-builtins
+1. redirect the stderr output of command exec with -l option in
+   builtins.tests to /dev/null
+2. ensure the system contain the locales "en_US.UTF-8"
+
+Upstream-Status: Pending
+
+Signed-off-by: Dengke Du <dengke.du@windriver.com>
+---
+ tests/builtins.tests | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/builtins.tests b/tests/builtins.tests
+index 9d77520..63f3af8 100644
+--- a/tests/builtins.tests
++++ b/tests/builtins.tests
+@@ -109,7 +109,7 @@ esac
+ 
+ # test options to exec
+ (exec -a specialname ${THIS_SH} -c 'echo $0' )
+-(exec -l -a specialname ${THIS_SH} -c 'echo $0' )
++(exec -l -a specialname ${THIS_SH} -c 'echo $0' ) 2> /dev/null
+ # test `clean' environment.  if /bin/sh is bash, and the script version of
+ # printenv is run, there will be variables in the environment that bash
+ # sets on startup.  Also test code that prefixes argv[0] with a dash.
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash/fix-run-intl.patch b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/fix-run-intl.patch
new file mode 100644
index 0000000..d4a3409
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/fix-run-intl.patch
@@ -0,0 +1,110 @@
+From a00d3161fd7b6a698bdd2ed5f0ac5faac580ee2a Mon Sep 17 00:00:00 2001
+From: Dengke Du <dengke.du@windriver.com>
+Date: Wed, 3 Aug 2016 23:13:00 -0400
+Subject: [PATCH] fix run-intl failed
+
+1. Filter extra white space of intl.right
+
+   Due to the extra white space of intl.right, when the result of
+   sub-test unicode2.sub of intl.tests compared to it, the test
+   failed.
+
+   So we need to filter the extra white space of intl.right.
+
+   Import this patch for intl.right from bash devel branch:
+
+	http://git.savannah.gnu.org/cgit/bash.git/log/?h=devel
+
+   commit is:
+
+	85ec0778f9d778e1820fb8c0e3e996f2d1103b45
+
+2. Change intl.right correspond to the unicode3.sub's output
+
+   In sub-test unicode3.sub of intl.tests, the payload value is:
+
+	payload=$'\065\247\100\063\231\053\306\123\070\237\242\352\263'
+
+   It used quoted string expansion(escaped octal) to assign ASCII
+   characters to variables. So when the test run the following:
+
+	printf %q "$payload"
+
+   It produced:
+
+	$'5\247@3\231+\306S8\237\242\352\263'
+
+   When compared to the intl.right(contain the converted character), it failed.
+
+   Import parts of patch for intl.right from bash devel branch:
+
+	http://git.savannah.gnu.org/cgit/bash.git/log/?h=devel
+
+   commit is:
+
+	74b8cbb41398b4453d8ba04d0cdd1b25f9dcb9e3
+
+Upstream-Status: Backport
+
+Signed-off-by: Dengke Du <dengke.du@windriver.com>
+---
+ tests/intl.right | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/tests/intl.right b/tests/intl.right
+index acf108a..1efdfbe 100644
+--- a/tests/intl.right
++++ b/tests/intl.right
+@@ -18,34 +18,34 @@ aéb
+ 1.0000
+ 1,0000
+ Passed all 1378 Unicode tests
+-0000000   303 277 012                                                    
++0000000 303 277 012
+ 0000003
+-0000000   303 277 012                                                    
++0000000 303 277 012
+ 0000003
+-0000000   303 277 012                                                    
++0000000 303 277 012
+ 0000003
+-0000000   303 277 012                                                    
++0000000 303 277 012
+ 0000003
+-0000000   357 277 277 012                                                
++0000000 357 277 277 012
+ 0000004
+-0000000   357 277 277 012                                                
++0000000 357 277 277 012
+ 0000004
+-0000000   012                                                            
++0000000 012
+ 0000001
+-0000000   012                                                            
++0000000 012
+ 0000001
+-0000000   012                                                            
++0000000 012
+ 0000001
+-0000000   012                                                            
++0000000 012
+ 0000001
+-0000000   303 277 012                                                    
++0000000 303 277 012
+ 0000003
+-0000000   303 277 012                                                    
++0000000 303 277 012
+ 0000003
+-0000000   303 277 012                                                    
++0000000 303 277 012
+ 0000003
+-0000000   101 040 302 243 040 305 222 012                                
++0000000 101 040 302 243 040 305 222 012
+ 0000010
+ ./unicode3.sub: line 2: 5§@3™+ÆS8Ÿ¢ê³: command not found
+-5§@3™+ÆS8Ÿ¢ê³
++$'5\247@3\231+\306S8\237\242\352\263'
+ + : $'5\247@3\231+\306S8\237\242\352\263'
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash/run-ptest b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/run-ptest
index 2098fa4..c61fabd 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/bash/bash/run-ptest
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash/run-ptest
@@ -1,2 +1,22 @@
 #!/bin/sh
+
+en_US=`locale -a | grep en_US*`
+fr_FR=`locale -a | grep fr_FR*`
+de_DE=`locale -a | grep de_DE*`
+
+if [ -z "$en_US" ]
+then
+        echo "Warning: The en_US* locales is needed to run the intl.tests, please add it."
+fi
+ 
+if [ -z "$fr_FR" ]
+then
+        echo "Warning: The fr_FR* locales is needed to run the intl.tests, please add it."
+fi
+ 
+if [ -z "$de_DE" ]
+then
+        echo "Warning: The de_DE* locales is needed to run the intl.tests, please add it."
+fi
+
 make -k THIS_SH=/bin/bash BUILD_DIR=`pwd` srcdir=`pwd`  runtest
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash_3.2.48.bb b/import-layers/yocto-poky/meta/recipes-extended/bash/bash_3.2.48.bb
index d42b292..6b4028d 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/bash/bash_3.2.48.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash_3.2.48.bb
@@ -20,6 +20,7 @@
            file://test-output.patch \
            file://run-ptest \
            file://dont-include-target-CFLAGS-in-host-LDFLAGS.patch \
+           file://string-format.patch \
           "
 
 SRC_URI[tarball.md5sum] = "338dcf975a93640bb3eaa843ca42e3f8"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bash/bash_4.3.30.bb b/import-layers/yocto-poky/meta/recipes-extended/bash/bash_4.3.30.bb
index 4426cf0..765562f 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/bash/bash_4.3.30.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/bash/bash_4.3.30.bb
@@ -14,12 +14,22 @@
            ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-037;apply=yes;striplevel=0;name=patch037 \
            ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-038;apply=yes;striplevel=0;name=patch038 \
            ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-039;apply=yes;striplevel=0;name=patch039 \
+           ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-040;apply=yes;striplevel=0;name=patch040 \
+           ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-041;apply=yes;striplevel=0;name=patch041 \
+           ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-042;apply=yes;striplevel=0;name=patch042 \
+           ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-043;apply=yes;striplevel=0;name=patch043 \
+           ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-044;apply=yes;striplevel=0;name=patch044 \
+           ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-045;apply=yes;striplevel=0;name=patch045 \
+           ${GNU_MIRROR}/bash/bash-4.3-patches/bash43-046;apply=yes;striplevel=0;name=patch046 \
            file://execute_cmd.patch;striplevel=0 \
            file://mkbuiltins_have_stringize.patch \
            file://build-tests.patch \
            file://test-output.patch \
            file://fix-run-coproc-run-heredoc-run-execscript-run-test-f.patch \
            file://run-ptest \
+           file://fix-run-builtins.patch \
+           file://0001-help-fix-printf-format-security-warning.patch \
+           file://fix-run-intl.patch \
            "
 
 SRC_URI[tarball.md5sum] = "a27b3ee9be83bd3ba448c0ff52b28447"
@@ -43,5 +53,19 @@
 SRC_URI[patch038.sha256sum] = "adbeaa500ca7a82535f0e88d673661963f8a5fcdc7ad63445e68bf5b49786367"
 SRC_URI[patch039.md5sum] = "a4775487abe958536751c8ce53cdf6f9"
 SRC_URI[patch039.sha256sum] = "ab94dced2215541097691f60c3eb323cc28ef2549463e6a5334bbcc1e61e74ec"
+SRC_URI[patch040.md5sum] = "80d3587c58854e226055ef099ffeb535"
+SRC_URI[patch040.sha256sum] = "84bb396b9262992ca5424feab6ed3ec39f193ef5c76dfe4a62b551bd8dd9d76b"
+SRC_URI[patch041.md5sum] = "20bf63eef7cb441c0b1cc49ef3191d03"
+SRC_URI[patch041.sha256sum] = "4ec432966e4198524a7e0cd685fe222e96043769c9613e66742ac475db132c1a"
+SRC_URI[patch042.md5sum] = "70790646ae61e207c995e44931390e50"
+SRC_URI[patch042.sha256sum] = "ac219322db2791da87a496ee6e8e5544846494bdaaea2626270c2f73c1044919"
+SRC_URI[patch043.md5sum] = "855a46955cb251534e80b4732b748e37"
+SRC_URI[patch043.sha256sum] = "47a8a3c005b46e25821f4d8f5ccb04c1d653b1c829cb40568d553dc44f7a6180"
+SRC_URI[patch044.md5sum] = "29623d3282fcbb37e1158136509b5bb8"
+SRC_URI[patch044.sha256sum] = "9338820630bf67373b44d8ea68409f65162ea7a47b9b29ace06a0aed12567f99"
+SRC_URI[patch045.md5sum] = "4473244ca5abfd4b018ea26dc73e7412"
+SRC_URI[patch045.sha256sum] = "ba6ec3978e9eaa1eb3fabdaf3cc6fdf8c4606ac1c599faaeb4e2d69864150023"
+SRC_URI[patch046.md5sum] = "7e5fb09991c077076b86e0e057798913"
+SRC_URI[patch046.sha256sum] = "b3b456a6b690cd293353f17e22d92a202b3c8bce587ae5f2667c20c9ab6f688f"
 
 BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/blktool/blktool_4-7.bb b/import-layers/yocto-poky/meta/recipes-extended/blktool/blktool_4-7.bb
index d6250a9..4551c32 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/blktool/blktool_4-7.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/blktool/blktool_4-7.bb
@@ -9,7 +9,7 @@
 
 DEPENDS = "glib-2.0"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/b/blktool/blktool_4.orig.tar.gz;name=tarball \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/b/${BPN}/${BPN}_4.orig.tar.gz;name=tarball \
            file://0001-fix-typos-in-manpage.patch \
            file://0002-fix-string-error.patch \
            file://0003-Fix-3-d-argument-for-BLKROSET-it-must-be-const-int.patch \
@@ -20,6 +20,7 @@
 
 # for this package we're mostly interested in tracking debian patches,
 # and not in the upstream version where all development has effectively stopped
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/b/blktool/"
 UPSTREAM_CHECK_REGEX = "(?P<pver>((\d+\.*)+)-((\d+\.*)+))\.(diff|debian\.tar)\.(gz|xz)"
 
 S = "${WORKDIR}/${BPN}-4.orig"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/byacc/byacc_20150711.bb b/import-layers/yocto-poky/meta/recipes-extended/byacc/byacc_20150711.bb
deleted file mode 100644
index e5b5451..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/byacc/byacc_20150711.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-# Sigh. This is one of those places where everyone licenses it differently. Someone
-# even apply UCB to it (Free/Net/OpenBSD). The maintainer states that:
-# "I've found no reliable source which states that byacc must bear a UCB copyright."
-# Setting to PD as this is what the upstream has it as.
-
-LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=c52fb2d1b3f75b3b7534927807a1b714"
-require byacc.inc
-
-SRC_URI[md5sum] = "2700401030583c4e9169ac7ea7d08de8"
-SRC_URI[sha256sum] = "c354e4ee14c4a1bf11e55dde9275011d14887ef066406a088b6fa56caf039248"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/byacc/byacc_20160606.bb b/import-layers/yocto-poky/meta/recipes-extended/byacc/byacc_20160606.bb
new file mode 100644
index 0000000..98129d0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/byacc/byacc_20160606.bb
@@ -0,0 +1,12 @@
+# Sigh. This is one of those places where everyone licenses it differently. Someone
+# even apply UCB to it (Free/Net/OpenBSD). The maintainer states that:
+# "I've found no reliable source which states that byacc must bear a UCB copyright."
+# Setting to PD as this is what the upstream has it as.
+
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=74533d32ffd38bca4cbf1f1305f8bc60"
+require byacc.inc
+
+
+SRC_URI[md5sum] = "d527c811b360f04a8c5f5a0a90625966"
+SRC_URI[sha256sum] = "cc8fdced486cb70cec7a7c9358de836bfd267d19d6456760bb4721ccfea5ac91"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bzip2/bzip2-1.0.6/CVE-2016-3189.patch b/import-layers/yocto-poky/meta/recipes-extended/bzip2/bzip2-1.0.6/CVE-2016-3189.patch
new file mode 100644
index 0000000..1d0c3a6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/bzip2/bzip2-1.0.6/CVE-2016-3189.patch
@@ -0,0 +1,18 @@
+Upstream-Status: Backport
+https://bugzilla.suse.com/attachment.cgi?id=681334
+
+CVE: CVE-2016-3189
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+Index: bzip2-1.0.6/bzip2recover.c
+===================================================================
+--- bzip2-1.0.6.orig/bzip2recover.c
++++ bzip2-1.0.6/bzip2recover.c
+@@ -457,6 +457,7 @@ Int32 main ( Int32 argc, Char** argv )
+             bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 );
+             bsPutUInt32 ( bsWr, blockCRC );
+             bsClose ( bsWr );
++            outFile = NULL;
+          }
+          if (wrBlock >= rbCtr) break;
+          wrBlock++;
diff --git a/import-layers/yocto-poky/meta/recipes-extended/bzip2/bzip2_1.0.6.bb b/import-layers/yocto-poky/meta/recipes-extended/bzip2/bzip2_1.0.6.bb
index f717d85..ef7bc89 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/bzip2/bzip2_1.0.6.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/bzip2/bzip2_1.0.6.bb
@@ -12,7 +12,9 @@
            file://fix-bunzip2-qt-returns-0-for-corrupt-archives.patch \
            file://configure.ac;subdir=${BP} \
            file://Makefile.am;subdir=${BP} \
-           file://run-ptest"
+           file://run-ptest \
+           file://CVE-2016-3189.patch \
+           "
 
 SRC_URI[md5sum] = "00b516f4704d4a7cb50a1d97e6e8e15b"
 SRC_URI[sha256sum] = "a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cpio/cpio_v2.inc b/import-layers/yocto-poky/meta/recipes-extended/cpio/cpio_v2.inc
index 1bdc617..31adb71 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/cpio/cpio_v2.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/cpio/cpio_v2.inc
@@ -39,3 +39,5 @@
 
 ALTERNATIVE_PRIORITY[rmt] = "50"
 ALTERNATIVE_LINK_NAME[rmt] = "${base_sbindir}/rmt"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cracklib/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch b/import-layers/yocto-poky/meta/recipes-extended/cracklib/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch
new file mode 100644
index 0000000..b251ac9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/cracklib/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch
@@ -0,0 +1,105 @@
+From 47e5dec521ab6243c9b249dd65b93d232d90d6b1 Mon Sep 17 00:00:00 2001
+From: Jan Dittberner <jan@dittberner.info>
+Date: Thu, 25 Aug 2016 17:13:49 +0200
+Subject: [PATCH] Apply patch to fix CVE-2016-6318
+
+This patch fixes an issue with a stack-based buffer overflow when
+parsing large GECOS field. See
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6318 and
+https://security-tracker.debian.org/tracker/CVE-2016-6318 for more
+information.
+
+Upstream-Status: Backport [https://github.com/cracklib/cracklib/commit/47e5dec521ab6243c9b249dd65b93d232d90d6b1]
+CVE: CVE-2016-6318
+Signed-off-by: Dengke Du <dengke.du@windriver.com>
+---
+ lib/fascist.c | 57 ++++++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 33 insertions(+), 24 deletions(-)
+
+diff --git a/lib/fascist.c b/lib/fascist.c
+index a996509..d4deb15 100644
+--- a/lib/fascist.c
++++ b/lib/fascist.c
+@@ -502,7 +502,7 @@ FascistGecosUser(char *password, const char *user, const char *gecos)
+     char gbuffer[STRINGSIZE];
+     char tbuffer[STRINGSIZE];
+     char *uwords[STRINGSIZE];
+-    char longbuffer[STRINGSIZE * 2];
++    char longbuffer[STRINGSIZE];
+ 
+     if (gecos == NULL)
+ 	gecos = "";
+@@ -583,38 +583,47 @@ FascistGecosUser(char *password, const char *user, const char *gecos)
+     {
+ 	for (i = 0; i < j; i++)
+ 	{
+-	    strcpy(longbuffer, uwords[i]);
+-	    strcat(longbuffer, uwords[j]);
+-
+-	    if (GTry(longbuffer, password))
++	    if (strlen(uwords[i]) + strlen(uwords[j]) < STRINGSIZE)
+ 	    {
+-		return _("it is derived from your password entry");
+-	    }
++		strcpy(longbuffer, uwords[i]);
++		strcat(longbuffer, uwords[j]);
+ 
+-	    strcpy(longbuffer, uwords[j]);
+-	    strcat(longbuffer, uwords[i]);
++		if (GTry(longbuffer, password))
++		{
++		    return _("it is derived from your password entry");
++		}
+ 
+-	    if (GTry(longbuffer, password))
+-	    {
+-		return _("it's derived from your password entry");
+-	    }
++		strcpy(longbuffer, uwords[j]);
++		strcat(longbuffer, uwords[i]);
+ 
+-	    longbuffer[0] = uwords[i][0];
+-	    longbuffer[1] = '\0';
+-	    strcat(longbuffer, uwords[j]);
++		if (GTry(longbuffer, password))
++		{
++		   return _("it's derived from your password entry");
++		}
++	    }
+ 
+-	    if (GTry(longbuffer, password))
++	    if (strlen(uwords[j]) < STRINGSIZE - 1)
+ 	    {
+-		return _("it is derivable from your password entry");
++		longbuffer[0] = uwords[i][0];
++		longbuffer[1] = '\0';
++		strcat(longbuffer, uwords[j]);
++
++		if (GTry(longbuffer, password))
++		{
++		    return _("it is derivable from your password entry");
++		}
+ 	    }
+ 
+-	    longbuffer[0] = uwords[j][0];
+-	    longbuffer[1] = '\0';
+-	    strcat(longbuffer, uwords[i]);
+-
+-	    if (GTry(longbuffer, password))
++	    if (strlen(uwords[i]) < STRINGSIZE - 1)
+ 	    {
+-		return _("it's derivable from your password entry");
++		longbuffer[0] = uwords[j][0];
++		longbuffer[1] = '\0';
++		strcat(longbuffer, uwords[i]);
++
++		if (GTry(longbuffer, password))
++		{
++		    return _("it's derivable from your password entry");
++		}
+ 	    }
+ 	}
+     }
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb b/import-layers/yocto-poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
index 3bd3f93..8299521 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
@@ -4,15 +4,13 @@
 LICENSE = "LGPLv2.1+"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
 
-DEPENDS = "cracklib-native zlib python"
-RDEPEND_${PN}-python += "python"
+DEPENDS = "cracklib-native zlib"
 
-PACKAGES += "${PN}-python"
-
-EXTRA_OECONF = "--with-python --libdir=${base_libdir}"
+EXTRA_OECONF = "--without-python --libdir=${base_libdir}"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/cracklib/cracklib-${PV}.tar.gz \
            file://0001-packlib.c-support-dictionary-byte-order-dependent.patch \
+           file://0001-Apply-patch-to-fix-CVE-2016-6318.patch \
            file://0002-craklib-fix-testnum-and-teststr-failed.patch"
 
 SRC_URI[md5sum] = "376790a95c1fb645e59e6e9803c78582"
@@ -21,27 +19,11 @@
 UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/cracklib/files/cracklib/"
 UPSTREAM_CHECK_REGEX = "/cracklib/(?P<pver>(\d+[\.\-_]*)+)/"
 
-inherit autotools gettext pythonnative python-dir
+inherit autotools gettext
 
 do_install_append_class-target() {
 	create-cracklib-dict -o ${D}${datadir}/cracklib/pw_dict ${D}${datadir}/cracklib/cracklib-small
 }
 
-do_install_append() {
-	src_dir="${D}${base_libdir}/${PYTHON_DIR}/site-packages"
-	rm -f $src_dir/test_cracklib.py*
-
-	if [ "${base_libdir}" != "${libdir}" ] ; then
-	   # Move python files from ${base_libdir} to ${libdir} since used --libdir=${base_libdir}
-	   install -d -m 0755 ${D}${PYTHON_SITEPACKAGES_DIR}/
-	   mv $src_dir/* ${D}${PYTHON_SITEPACKAGES_DIR}
-	   rm -fr ${D}${base_libdir}/${PYTHON_DIR}
-	fi
-}
-
 BBCLASSEXTEND = "native nativesdk"
 
-FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}/cracklib.py* \
-	${PYTHON_SITEPACKAGES_DIR}/_cracklib.*"
-
-FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/_cracklib.a"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie/crond_pam_config.patch b/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie/crond_pam_config.patch
index 675872c..6c92816 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie/crond_pam_config.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie/crond_pam_config.patch
@@ -4,16 +4,19 @@
 Upstream-Status: Pending
 
 Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
---- cronie-1.4.7/pam/crond.orig	2010-12-16 16:59:02.000000000 +0800
-+++ cronie-1.4.7/pam/crond	2011-07-20 09:47:16.080819203 +0800
-@@ -4,7 +4,7 @@
+Index: cronie-1.5.1/pam/crond
+===================================================================
+--- cronie-1.5.1.orig/pam/crond
++++ cronie-1.5.1/pam/crond
+@@ -4,8 +4,8 @@
  #
- # No PAM authentication called, auth modules not needed
+ # Although no PAM authentication is called, auth modules
+ # are used for credential setting
+-auth       include    password-auth
++auth       include    common-auth
  account    required   pam_access.so
 -account    include    password-auth
 +account    include    common-account
  session    required   pam_loginuid.so
 -session    include    password-auth
--auth       include    password-auth
 +session    include    common-session-noninteractive
-+auth       include    common-auth
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie_1.5.0.bb b/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie_1.5.0.bb
deleted file mode 100644
index 697501a..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie_1.5.0.bb
+++ /dev/null
@@ -1,81 +0,0 @@
-SUMMARY = "Cron daemon for executing programs at set times"
-DESCRIPTION = "Cronie contains the standard UNIX daemon crond that runs \
-specified programs at scheduled times and related tools. It is based on the \
-original cron and has security and configuration enhancements like the \
-ability to use pam and SELinux."
-HOMEPAGE = "https://fedorahosted.org/cronie/"
-BUGTRACKER = "https://bugzilla.redhat.com"
-
-# Internet Systems Consortium License
-LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=dd2a592170760e1386c769e1043b3722 \
-                    file://src/cron.c;endline=20;md5=b425c334265026177128353a142633b4 \
-                    file://src/popen.c;beginline=3;endline=31;md5=edd50742d8def712e9472dba353668a9"
-
-SECTION = "utils"
-
-SRC_URI = "https://fedorahosted.org/releases/c/r/cronie/cronie-${PV}.tar.gz \
-           file://crond.init \
-           file://crontab \
-           file://crond.service \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)}"
-
-PAM_SRC_URI = "file://crond_pam_config.patch"
-PAM_DEPS = "libpam libpam-runtime pam-plugin-access pam-plugin-loginuid"
-
-SRC_URI[md5sum] = "9db75e1884d83a45e002d145c6c54d45"
-SRC_URI[sha256sum] = "9cf0e3f4f5042a9c09413d62c8e0c055e12401f70b112465f0f81f2c84ebfb3f"
-
-inherit autotools update-rc.d useradd systemd
-
-PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
-
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,${PAM_DEPS}"
-
-INITSCRIPT_NAME = "crond"
-INITSCRIPT_PARAMS = "start 90 2 3 4 5 . stop 60 0 1 6 ."
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system crontab"
-
-SYSTEMD_SERVICE_${PN} = "crond.service"
-
-do_install_append () {
-	install -d ${D}${sysconfdir}/sysconfig/
-	install -d ${D}${sysconfdir}/init.d/
-	install -m 0644 ${S}/crond.sysconfig ${D}${sysconfdir}/sysconfig/crond
-	install -m 0755 ${WORKDIR}/crond.init ${D}${sysconfdir}/init.d/crond
-
-	# install systemd unit files
-	install -d ${D}${systemd_unitdir}/system
-	install -m 0644 ${WORKDIR}/crond.service ${D}${systemd_unitdir}/system
-	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-	       -e 's,@SBINDIR@,${sbindir},g' \
-	       ${D}${systemd_unitdir}/system/crond.service
-
-	# below are necessary for a complete cron environment
-	install -d ${D}${localstatedir}/spool/cron
-	install -m 0755 ${WORKDIR}/crontab ${D}${sysconfdir}/
-	mkdir -p ${D}${sysconfdir}/cron.d
-	mkdir -p ${D}${sysconfdir}/cron.hourly
-	mkdir -p ${D}${sysconfdir}/cron.daily
-	mkdir -p ${D}${sysconfdir}/cron.weekly
-	mkdir -p ${D}${sysconfdir}/cron.monthly
-	touch ${D}${sysconfdir}/cron.deny
-
-	# below setting is necessary to allow normal user using crontab
-
-	# setgid for crontab binary
-	chown root:crontab ${D}${bindir}/crontab
-	chmod 2755 ${D}${bindir}/crontab
-
-	# allow 'crontab' group write to /var/spool/cron
-	chown root:crontab ${D}${localstatedir}/spool/cron
-	chmod 770 ${D}${localstatedir}/spool/cron
-
-	chmod 600 ${D}${sysconfdir}/crontab
-}
-
-FILES_${PN} += "${sysconfdir}/cron*"
-CONFFILES_${PN} += "${sysconfdir}/crontab"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie_1.5.1.bb b/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie_1.5.1.bb
new file mode 100644
index 0000000..99b2bb5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/cronie/cronie_1.5.1.bb
@@ -0,0 +1,81 @@
+SUMMARY = "Cron daemon for executing programs at set times"
+DESCRIPTION = "Cronie contains the standard UNIX daemon crond that runs \
+specified programs at scheduled times and related tools. It is based on the \
+original cron and has security and configuration enhancements like the \
+ability to use pam and SELinux."
+HOMEPAGE = "https://fedorahosted.org/cronie/"
+BUGTRACKER = "https://bugzilla.redhat.com"
+
+# Internet Systems Consortium License
+LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dd2a592170760e1386c769e1043b3722 \
+                    file://src/cron.c;endline=20;md5=b425c334265026177128353a142633b4 \
+                    file://src/popen.c;beginline=3;endline=31;md5=edd50742d8def712e9472dba353668a9"
+
+SECTION = "utils"
+
+SRC_URI = "https://fedorahosted.org/releases/c/r/cronie/cronie-${PV}.tar.gz \
+           file://crond.init \
+           file://crontab \
+           file://crond.service \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)}"
+
+PAM_SRC_URI = "file://crond_pam_config.patch"
+PAM_DEPS = "libpam libpam-runtime pam-plugin-access pam-plugin-loginuid"
+
+SRC_URI[md5sum] = "910e6effcc032998b0a49fbd46322e18"
+SRC_URI[sha256sum] = "6c73666102a6b5d35e2eaf1bd06925f2d4b0cef8d3323c37286dda3089a85338"
+
+inherit autotools update-rc.d useradd systemd
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
+
+PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,${PAM_DEPS}"
+
+INITSCRIPT_NAME = "crond"
+INITSCRIPT_PARAMS = "start 90 2 3 4 5 . stop 60 0 1 6 ."
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system crontab"
+
+SYSTEMD_SERVICE_${PN} = "crond.service"
+
+do_install_append () {
+	install -d ${D}${sysconfdir}/sysconfig/
+	install -d ${D}${sysconfdir}/init.d/
+	install -m 0644 ${S}/crond.sysconfig ${D}${sysconfdir}/sysconfig/crond
+	install -m 0755 ${WORKDIR}/crond.init ${D}${sysconfdir}/init.d/crond
+
+	# install systemd unit files
+	install -d ${D}${systemd_unitdir}/system
+	install -m 0644 ${WORKDIR}/crond.service ${D}${systemd_unitdir}/system
+	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+	       -e 's,@SBINDIR@,${sbindir},g' \
+	       ${D}${systemd_unitdir}/system/crond.service
+
+	# below are necessary for a complete cron environment
+	install -d ${D}${localstatedir}/spool/cron
+	install -m 0755 ${WORKDIR}/crontab ${D}${sysconfdir}/
+	mkdir -p ${D}${sysconfdir}/cron.d
+	mkdir -p ${D}${sysconfdir}/cron.hourly
+	mkdir -p ${D}${sysconfdir}/cron.daily
+	mkdir -p ${D}${sysconfdir}/cron.weekly
+	mkdir -p ${D}${sysconfdir}/cron.monthly
+	touch ${D}${sysconfdir}/cron.deny
+
+	# below setting is necessary to allow normal user using crontab
+
+	# setgid for crontab binary
+	chown root:crontab ${D}${bindir}/crontab
+	chmod 2755 ${D}${bindir}/crontab
+
+	# allow 'crontab' group write to /var/spool/cron
+	chown root:crontab ${D}${localstatedir}/spool/cron
+	chmod 770 ${D}${localstatedir}/spool/cron
+
+	chmod 600 ${D}${sysconfdir}/crontab
+}
+
+FILES_${PN} += "${sysconfdir}/cron*"
+CONFFILES_${PN} += "${sysconfdir}/crontab"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cups/cups.inc b/import-layers/yocto-poky/meta/recipes-extended/cups/cups.inc
index 4b2d214..02b6358 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/cups/cups.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/cups/cups.inc
@@ -3,13 +3,13 @@
 LICENSE = "GPLv2 & LGPLv2"
 DEPENDS = "gnutls libpng jpeg dbus dbus-glib zlib libusb"
 
-SRC_URI = "https://www.cups.org/software/${PV}/${BP}-source.tar.bz2 \
+SRC_URI = "https://github.com/apple/cups/releases/download/release-${PV}/${BP}-source.tar.gz \
            file://use_echo_only_in_init.patch \
            file://0001-don-t-try-to-run-generated-binaries.patch \
            file://cups_serverbin.patch \
 	  "
 
-UPSTREAM_CHECK_URI = "http://www.cups.org/software.php"
+UPSTREAM_CHECK_URI = "https://github.com/apple/cups/releases"
 UPSTREAM_CHECK_REGEX = "cups-(?P<pver>\d+\.\d+(\.\d+)?)-source.tar"
 
 LEAD_SONAME = "libcupsdriver.so"
@@ -44,6 +44,7 @@
                --without-perl \
                --without-python \
                --without-java \
+               DSOFLAGS='${LDFLAGS}' \
                "
 
 EXTRA_AUTORECONF += "--exclude=autoheader"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cups/cups_2.1.3.bb b/import-layers/yocto-poky/meta/recipes-extended/cups/cups_2.1.3.bb
deleted file mode 100644
index aef211d..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/cups/cups_2.1.3.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require cups.inc
-
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=6c5a350596fba02754bd96eb6df3afd0"
-
-SRC_URI[md5sum] = "62b8fafd590e75f72316915790b0850a"
-SRC_URI[sha256sum] = "36a70d43584aea2617da914b9331e23341c3501a8254c4d2eae9c11ec01fd4d3"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/cups/cups_2.1.4.bb b/import-layers/yocto-poky/meta/recipes-extended/cups/cups_2.1.4.bb
new file mode 100644
index 0000000..0fab806
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/cups/cups_2.1.4.bb
@@ -0,0 +1,6 @@
+require cups.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=6c5a350596fba02754bd96eb6df3afd0"
+
+SRC_URI[md5sum] = "9f9bf6e3b9c20a3519b4dc409666d6e7"
+SRC_URI[sha256sum] = "4b14fd833180ac529ebebea766a09094c2568bf8426e219cb3a1715304ef728d"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-2.8.1/diffutils_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-2.8.1/diffutils_fix_for_automake-1.12.patch
index cc05d1d..f8638bb 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-2.8.1/diffutils_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-2.8.1/diffutils_fix_for_automake-1.12.patch
@@ -10,7 +10,7 @@
 | configure.ac:90: the top level
 | autom4te: m4 failed with exit status: 1
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/04
 
 Index: diffutils-2.8.1/m4/prereq.m4
diff --git a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-2.8.1/fix_gcc6.patch b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-2.8.1/fix_gcc6.patch
new file mode 100644
index 0000000..f915287
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-2.8.1/fix_gcc6.patch
@@ -0,0 +1,31 @@
+Fixes to allow diffutils to build with gcc v6.
+
+RP
+2016/5/25
+
+Index: diffutils-2.8.1/lib/posix/regex.h
+===================================================================
+--- diffutils-2.8.1.orig/lib/posix/regex.h
++++ diffutils-2.8.1/lib/posix/regex.h
+@@ -529,7 +529,9 @@ extern int re_exec _RE_ARGS ((const char
+ /* For now unconditionally define __restrict_arr to expand to nothing.
+    Ideally we would have a test for the compiler which allows defining
+    it to restrict.  */
++#ifndef __restrict_arr
+ #define __restrict_arr
++#endif
+ 
+ /* POSIX compatibility.  */
+ extern int regcomp _RE_ARGS ((regex_t *__restrict __preg,
+Index: diffutils-2.8.1/src/diff.c
+===================================================================
+--- diffutils-2.8.1.orig/src/diff.c
++++ diffutils-2.8.1/src/diff.c
+@@ -71,6 +71,7 @@ static void usage (void);
+ static bool recursive;
+ 
+ /* In context diffs, show previous lines that match these regexps.  */
++struct re_pattern_buffer function_regexp;
+ static struct regexp_list function_regexp_list;
+ 
+ /* Ignore changes affecting only lines that match these regexps.  */
diff --git a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.3/0001-Unset-need_charset_alias-when-building-for-musl.patch b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.4/0001-Unset-need_charset_alias-when-building-for-musl.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.3/0001-Unset-need_charset_alias-when-building-for-musl.patch
rename to import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.4/0001-Unset-need_charset_alias-when-building-for-musl.patch
diff --git a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.3/run-ptest b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.4/run-ptest
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.3/run-ptest
rename to import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils-3.4/run-ptest
diff --git a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_2.8.1.bb b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_2.8.1.bb
index bf425bb..fe56f9c 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_2.8.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_2.8.1.bb
@@ -6,7 +6,8 @@
 PR = "r7.0"
 
 SRC_URI = "${GNU_MIRROR}/diffutils/diffutils-${PV}.tar.gz \
-           file://diffutils_fix_for_automake-1.12.patch"
+           file://diffutils_fix_for_automake-1.12.patch \
+           file://fix_gcc6.patch"
 
 SRC_URI[md5sum] = "71f9c5ae19b60608f6c7f162da86a428"
 SRC_URI[sha256sum] = "c5001748b069224dd98bf1bb9ee877321c7de8b332c8aad5af3e2a7372d23f5a"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_3.3.bb b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_3.3.bb
deleted file mode 100644
index 5008690..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_3.3.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-require diffutils.inc
-
-SRC_URI = "${GNU_MIRROR}/diffutils/diffutils-${PV}.tar.xz \
-           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
-           file://run-ptest \
-"
-
-EXTRA_OECONF += "--without-libsigsegv-prefix"
-
-do_configure_prepend () {
-	# Need to remove gettext macros with weird mix of versions
-	for i in codeset.m4 gettext_gl.m4 intlmacosx.m4 inttypes-pri.m4 lib-ld_gl.m4 lib-prefix_gl.m4 po_gl.m4 ssize_t.m4 wchar_t.m4 wint_t.m4; do
-		rm -f ${S}/m4/$i
-	done
-}
-
-SRC_URI[md5sum] = "99180208ec2a82ce71f55b0d7389f1b3"
-SRC_URI[sha256sum] = "a25e89a8ab65fded1731e4186be1bb25cda967834b6df973599cdcd5abdfc19c"
-
-inherit ptest
-
-do_install_ptest() {
-	t=${D}${PTEST_PATH}
-	install -D ${S}/build-aux/test-driver $t/build-aux/test-driver
-	cp -r ${S}/tests $t/
-	install ${B}/tests/Makefile $t/tests/
-	sed -e 's|^Makefile:|_Makefile:|' \
-	    -e 's|bash|sh|' \
-	    -e 's|^top_srcdir = \(.*\)|top_srcdir = ..\/|' \
-	    -e 's|^srcdir = \(.*\)|srcdir = .|' \
-	    -e 's|"`$(built_programs)`"|diff|' \
-	    -e 's|gawk|awk|g' \
-	    -i $t/tests/Makefile
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_3.4.bb b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_3.4.bb
new file mode 100644
index 0000000..cb7092b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/diffutils/diffutils_3.4.bb
@@ -0,0 +1,37 @@
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+require diffutils.inc
+
+SRC_URI = "${GNU_MIRROR}/diffutils/diffutils-${PV}.tar.xz \
+           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
+           file://run-ptest \
+"
+
+EXTRA_OECONF += "--without-libsigsegv-prefix"
+
+do_configure_prepend () {
+	# Need to remove gettext macros with weird mix of versions
+	for i in codeset.m4 gettext_gl.m4 intlmacosx.m4 inttypes-pri.m4 lib-ld_gl.m4 lib-prefix_gl.m4 po_gl.m4 ssize_t.m4 wchar_t.m4 wint_t.m4; do
+		rm -f ${S}/m4/$i
+	done
+}
+
+SRC_URI[md5sum] = "df9ca465f30307cffd03da176a43a5d4"
+SRC_URI[sha256sum] = "db53c025f2ac3d217bcf753dad6dee7b410b33d0948495ff015aaf8b91189ce2"
+
+inherit ptest
+
+do_install_ptest() {
+	t=${D}${PTEST_PATH}
+	install -D ${S}/build-aux/test-driver $t/build-aux/test-driver
+	cp -r ${S}/tests $t/
+	install ${B}/tests/Makefile $t/tests/
+	sed -e 's|^Makefile:|_Makefile:|' \
+	    -e 's|bash|sh|' \
+	    -e 's|^top_srcdir = \(.*\)|top_srcdir = ..\/|' \
+	    -e 's|^srcdir = \(.*\)|srcdir = .|' \
+	    -e 's|"`$(built_programs)`"|diff|' \
+	    -e 's|gawk|awk|g' \
+	    -i $t/tests/Makefile
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ethtool/ethtool_4.2.bb b/import-layers/yocto-poky/meta/recipes-extended/ethtool/ethtool_4.2.bb
deleted file mode 100644
index 95df784..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/ethtool/ethtool_4.2.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Display or change ethernet card settings"
-DESCRIPTION = "A small utility for examining and tuning the settings of your ethernet-based network interfaces."
-HOMEPAGE = "http://www.kernel.org/pub/software/network/ethtool/"
-SECTION = "console/network"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://ethtool.c;beginline=4;endline=17;md5=c19b30548c582577fc6b443626fc1216"
-
-SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
-           file://run-ptest \
-           file://avoid_parallel_tests.patch \
-           "
-
-SRC_URI[md5sum] = "5b55f7cd76e901dfc2738ac22cab96ca"
-SRC_URI[sha256sum] = "f84226db8dd18afaf91d8d00f5cb8f87ec3d7f787d2a3605de08d6dfa95ab8ef"
-
-inherit autotools ptest
-RDEPENDS_${PN}-ptest += "make"
-
-do_compile_ptest() {
-   oe_runmake buildtest-TESTS
-}
-
-do_install_ptest () {
-   cp ${B}/Makefile                 ${D}${PTEST_PATH}
-   install ${B}/test-cmdline        ${D}${PTEST_PATH}
-   install ${B}/test-features       ${D}${PTEST_PATH}
-   install ${B}/ethtool             ${D}${PTEST_PATH}/ethtool
-   sed -i 's/^Makefile/_Makefile/'  ${D}${PTEST_PATH}/Makefile
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ethtool/ethtool_4.6.bb b/import-layers/yocto-poky/meta/recipes-extended/ethtool/ethtool_4.6.bb
new file mode 100644
index 0000000..788d4ea
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/ethtool/ethtool_4.6.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Display or change ethernet card settings"
+DESCRIPTION = "A small utility for examining and tuning the settings of your ethernet-based network interfaces."
+HOMEPAGE = "http://www.kernel.org/pub/software/network/ethtool/"
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://ethtool.c;beginline=4;endline=17;md5=c19b30548c582577fc6b443626fc1216"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
+           file://run-ptest \
+           file://avoid_parallel_tests.patch \
+           "
+
+SRC_URI[md5sum] = "1186dd83a0384109b92c6cd40a7bb0e5"
+SRC_URI[sha256sum] = "ad45620887f7e61312fc2f9ca3fd50d49ac7737ed874b0b02845d07e0fa3ca49"
+
+inherit autotools ptest
+RDEPENDS_${PN}-ptest += "make"
+
+do_compile_ptest() {
+   oe_runmake buildtest-TESTS
+}
+
+do_install_ptest () {
+   cp ${B}/Makefile                 ${D}${PTEST_PATH}
+   install ${B}/test-cmdline        ${D}${PTEST_PATH}
+   install ${B}/test-features       ${D}${PTEST_PATH}
+   install ${B}/ethtool             ${D}${PTEST_PATH}/ethtool
+   sed -i 's/^Makefile/_Makefile/'  ${D}${PTEST_PATH}/Makefile
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/findutils/findutils-4.2.31/findutils_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-extended/findutils/findutils-4.2.31/findutils_fix_for_automake-1.12.patch
index 2d0ddb4..1b7f8cf 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/findutils/findutils-4.2.31/findutils_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/findutils/findutils-4.2.31/findutils_fix_for_automake-1.12.patch
@@ -6,7 +6,7 @@
 
 | configure.in:75: error: automatic de-ANSI-fication support has been removed
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/04
 
 Index: findutils-4.2.31/configure.in
diff --git a/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8327.patch b/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8327.patch
new file mode 100644
index 0000000..aaedc88
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8327.patch
@@ -0,0 +1,23 @@
+Upstream-Status: Backport
+
+
+http://bzr.linuxfoundation.org/loggerhead/openprinting/cups-filters/revision/7406
+
+Hand applied change to util.c. Fix was for cups-filters but also applied to foomatic-filters.
+
+CVE: CVE-2015-8327
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+Index: util.c
+===================================================================
+--- a/util.c
++++ b/util.c
+@@ -31,7 +31,7 @@
+ #include <assert.h>
+ 
+ 
+-const char* shellescapes = "|;<>&!$\'\"#*?()[]{}";
++const char* shellescapes = "|;<>&!$\'\"`#*?()[]{}";
+ 
+ const char * temp_dir()
+ {
diff --git a/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8560.patch b/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8560.patch
new file mode 100644
index 0000000..dc973c4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters-4.0.17/CVE-2015-8560.patch
@@ -0,0 +1,23 @@
+Upstream-Status: Backport
+
+
+http://bzr.linuxfoundation.org/loggerhead/openprinting/cups-filters/revision/7419
+
+Hand applied change to util.c. Fix was for cups-filters but also applied to foomatic-filters.
+
+CVE: CVE-2015-8560
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+Index: util.c
+===================================================================
+--- a/util.c
++++ b/util.c
+@@ -31,7 +31,7 @@
+ #include <assert.h>
+ 
+ 
+-const char* shellescapes = "|<>&!$\'\"#*?()[]{}";
++const char* shellescapes = "|;<>&!$\'\"#*?()[]{}";
+ 
+ const char * temp_dir()
+ {
diff --git a/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb b/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb
index 0cffedd..3f439e7 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/foomatic/foomatic-filters_4.0.17.bb
@@ -17,6 +17,10 @@
 
 SRC_URI = "http://www.openprinting.org/download/foomatic/foomatic-filters-${PV}.tar.gz"
 
+SRC_URI += "file://CVE-2015-8560.patch \
+            file://CVE-2015-8327.patch \
+           "
+
 SRC_URI[md5sum] = "b05f5dcbfe359f198eef3df5b283d896"
 SRC_URI[sha256sum] = "a2e2e53e502571e88eeb9010c45a0d54671f15707ee104f5c9c22b59ea7a33e3"
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk-3.1.5/0001-gawk-fix-non-glibc-gcc-4-compilation.patch b/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk-3.1.5/0001-gawk-fix-non-glibc-gcc-4-compilation.patch
new file mode 100644
index 0000000..bc9201b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk-3.1.5/0001-gawk-fix-non-glibc-gcc-4-compilation.patch
@@ -0,0 +1,67 @@
+From 53496e2e306b16ac59801553f775bcca164e6a39 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Wed, 14 Sep 2016 16:20:37 +0100
+Subject: [PATCH] fix gcc >= 4 compilation
+
+| ../gawk-3.1.5/hard-locale.h: In function 'hard_locale':
+| ../gawk-3.1.5/hard-locale.h:43:20: error: invalid storage class for function 'xmalloc'
+|        static ptr_t xmalloc PARAMS ((size_t n));
+|                     ^~~~~~~
+
+| ../gawk-3.1.5/hard-locale.h:45:22: warning: implicit declaration of function 'xmalloc' [-Wimplicit-function-declaration]
+|        char *locale = xmalloc (strlen (p) + 1);
+|                       ^~~~~~~
+| ../gawk-3.1.5/hard-locale.h:45:22: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
+| ../gawk-3.1.5/dfa.c: At top level:
+| ../gawk-3.1.5/dfa.c:125:14: error: conflicting types for 'xmalloc'
+|  static ptr_t xmalloc PARAMS ((size_t n));
+|               ^~~~~~~
+| In file included from ../gawk-3.1.5/dfa.c:112:0:
+| ../gawk-3.1.5/hard-locale.h:45:22: note: previous implicit declaration of 'xmalloc' was here
+|        char *locale = xmalloc (strlen (p) + 1);
+|                       ^~~~~~~
+
+Upstream-Status: Inappropriate [required for gawk 3.1.5 (GPLv2) recipe only]
+
+Signed-off-by: André Draszik <git@andred.net>
+---
+ dfa.c         | 2 +-
+ hard-locale.h | 2 --
+ 2 files changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/dfa.c b/dfa.c
+index 71e3736..97f6045 100644
+--- a/dfa.c
++++ b/dfa.c
+@@ -109,6 +109,7 @@ extern void free();
+ 
+ #include "regex.h"
+ #include "dfa.h"
++static ptr_t xmalloc PARAMS ((size_t n));
+ #include "hard-locale.h"
+ 
+ /* HPUX, define those as macros in sys/param.h */
+@@ -122,7 +123,6 @@ extern void free();
+ static void dfamust PARAMS ((struct dfa *dfa));
+ 
+ static ptr_t xcalloc PARAMS ((size_t n, size_t s));
+-static ptr_t xmalloc PARAMS ((size_t n));
+ static ptr_t xrealloc PARAMS ((ptr_t p, size_t n));
+ #ifdef DEBUG
+ static void prtok PARAMS ((token t));
+diff --git a/hard-locale.h b/hard-locale.h
+index 0f4986b..9ee57e0 100644
+--- a/hard-locale.h
++++ b/hard-locale.h
+@@ -40,8 +40,6 @@ hard_locale (int category)
+       if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0)
+ 	hard = 0;
+ # else
+-      static ptr_t xmalloc PARAMS ((size_t n));
+-
+       char *locale = xmalloc (strlen (p) + 1);
+       strcpy (locale, p);
+ 
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk-3.1.5/gawk-3.1.5_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk-3.1.5/gawk-3.1.5_fix_for_automake-1.12.patch
index b3e7987..c42c33c 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk-3.1.5/gawk-3.1.5_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk-3.1.5/gawk-3.1.5_fix_for_automake-1.12.patch
@@ -11,7 +11,7 @@
 ...
 | Makefile.am:27: error: automatic de-ANSI-fication support has been removed
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/04
 
 Index: gawk-3.1.5/configure.ac
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk_3.1.5.bb b/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk_3.1.5.bb
index 7c92bde..63fd32f 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk_3.1.5.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/gawk/gawk_3.1.5.bb
@@ -15,8 +15,11 @@
 RDEPENDS_pgawk += "gawk-common"
 PR = "r2"
 
-SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.gz \
-	file://gawk-3.1.5_fix_for_automake-1.12.patch"
+SRC_URI = "\
+    ${GNU_MIRROR}/gawk/gawk-${PV}.tar.gz \
+    file://gawk-3.1.5_fix_for_automake-1.12.patch \
+    file://0001-gawk-fix-non-glibc-gcc-4-compilation.patch \
+"
 
 SRC_URI[md5sum] = "4760325489479cac17fe0114b8f62f30"
 SRC_URI[sha256sum] = "463dcb9d0ca398b1d4f5a332f6cd9cec56441265fca616f2ea1b44d459e9f0f8"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/0001-Bug-696497-Fix-support-for-building-with-no-jbig2-de.patch b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/0001-Bug-696497-Fix-support-for-building-with-no-jbig2-de.patch
deleted file mode 100644
index d586a1d..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/0001-Bug-696497-Fix-support-for-building-with-no-jbig2-de.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 1d19998091154f89b8294e4594a05986b4c2f822 Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Wed, 13 Jan 2016 02:08:42 -0500
-Subject: [PATCH 1/2] Bug 696497: Fix support for building with no jbig2
- decoder
-
-Author: Chris Liddell <chris.liddell@artifex.com>
-
-Upstream-Status: Backport
-http://bugs.ghostscript.com/show_bug.cgi?id=696497
-http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b0f5a975
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- base/lib.mak |  9 +++++++++
- psi/int.mak  | 23 ++++++++++++++++++-----
- 2 files changed, 27 insertions(+), 5 deletions(-)
-
-diff --git a/base/lib.mak b/base/lib.mak
-index 241df2f..daa7056 100644
---- a/base/lib.mak
-+++ b/base/lib.mak
-@@ -1732,6 +1732,10 @@ $(GLD)sjbig2_jbig2dec.dev : $(LIB_MAK) $(ECHOGS_XE) \
- 	$(SETMOD) $(GLD)sjbig2_jbig2dec $(sjbig2_jbig2dec)
- 	$(ADDMOD) $(GLD)sjbig2_jbig2dec -include $(GLD)jbig2dec.dev
- 
-+$(GLD)sjbig2_.dev : $(LIB_MAK) $(ECHOGS_XE) \
-+  $(LIB_MAK) $(MAKEDIRS)
-+	$(SETMOD) $(GLD)sjbig2_
-+
- # jbig2dec.dev is defined in jbig2.mak
- 
- $(GLOBJ)sjbig2.$(OBJ) : $(GLSRC)sjbig2.c $(AK) \
-@@ -1739,6 +1743,11 @@ $(GLOBJ)sjbig2.$(OBJ) : $(GLSRC)sjbig2.c $(AK) \
-  $(sjbig2_h) $(strimpl_h) $(MAKEDIRS)
- 	$(GLJBIG2CC) $(GLO_)sjbig2.$(OBJ) $(C_) $(GLSRC)sjbig2.c
- 
-+$(GLOBJ)snojbig2.$(OBJ) : $(GLSRC)snojbig2.c $(AK) \
-+ $(stdint__h) $(memory__h) $(stdio__h) $(gserrors_h) $(gdebug_h) \
-+ $(strimpl_h) $(LIB_MAK) $(MAKEDIRS)
-+	$(GLJBIG2CC) $(GLO_)snojbig2.$(OBJ) $(C_) $(GLSRC)snojbig2.c
-+
- # luratech version
- sjbig2_luratech=$(GLOBJ)sjbig2_luratech.$(OBJ)
- 
-diff --git a/psi/int.mak b/psi/int.mak
-index 6149a3b..f9d667d 100644
---- a/psi/int.mak
-+++ b/psi/int.mak
-@@ -1254,11 +1254,24 @@ $(PSOBJ)zfaes.$(OBJ) : $(PSSRC)zfaes.c $(OP) $(memory__h)\
- # this can be turned on and off with a FEATURE_DEV
- 
- fjbig2_=$(PSOBJ)zfjbig2_$(JBIG2_LIB).$(OBJ)
--$(PSD)jbig2.dev : $(INT_MAK) $(ECHOGS_XE) $(fjbig2_) $(GLD)sjbig2.dev\
-- $(MAKEDIRS)
--	$(SETMOD) $(PSD)jbig2 $(fjbig2_)
--	$(ADDMOD) $(PSD)jbig2 -include $(GLD)sjbig2
--	$(ADDMOD) $(PSD)jbig2 -oper zfjbig2
-+
-+$(PSD)jbig2_jbig2dec.dev : $(ECHOGS_XE) $(fjbig2_) $(GLD)sjbig2.dev\
-+ $(INT_MAK) $(MAKEDIRS)
-+	$(SETMOD) $(PSD)jbig2_jbig2dec $(fjbig2_)
-+	$(ADDMOD) $(PSD)jbig2_jbig2dec -include $(GLD)sjbig2
-+	$(ADDMOD) $(PSD)jbig2_jbig2dec -oper zfjbig2
-+
-+$(PSD)jbig2_luratech.dev : $(ECHOGS_XE) $(fjbig2_) $(GLD)sjbig2.dev\
-+ $(INT_MAK) $(MAKEDIRS)
-+	$(SETMOD) $(PSD)jbig2_luratech $(fjbig2_)
-+	$(ADDMOD) $(PSD)jbig2_luratech -include $(GLD)sjbig2
-+	$(ADDMOD) $(PSD)jbig2_luratech -oper zfjbig2
-+
-+$(PSD)jbig2_.dev : $(ECHOGS_XE) $(INT_MAK) $(MAKEDIRS)
-+	$(SETMOD) $(PSD)jbig2_ 
-+
-+$(PSD)jbig2.dev : $(PSD)jbig2_$(JBIG2_LIB).dev $(INT_MAK) $(MAKEDIRS)
-+	$(CP_) $(PSD)jbig2_$(JBIG2_LIB).dev $(PSD)jbig2.dev
- 
- $(PSOBJ)zfjbig2_jbig2dec.$(OBJ) : $(PSSRC)zfjbig2.c $(OP) $(memory__h)\
-  $(gsstruct_h) $(gstypes_h) $(ialloc_h) $(idict_h) $(ifilter_h)\
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/0002-Bug-696497-part-2-fix-support-for-building-with-a-JP.patch b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/0002-Bug-696497-part-2-fix-support-for-building-with-a-JP.patch
deleted file mode 100644
index fcfc479..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/0002-Bug-696497-part-2-fix-support-for-building-with-a-JP.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 3b43f93ec02611c4d554612953f5b64765b8683b Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Wed, 13 Jan 2016 02:14:55 -0500
-Subject: [PATCH 2/2] Bug 696497 (part 2): fix support for building with a JPX
- decoder
-
-Author: Chris Liddell <chris.liddell@artifex.com>
-
-Upstream-Status: Backport
-http://bugs.ghostscript.com/show_bug.cgi?id=696497
-http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=b0f5a975
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- base/lib.mak | 3 +++
- psi/int.mak  | 3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/base/lib.mak b/base/lib.mak
-index daa7056..8853dd5 100644
---- a/base/lib.mak
-+++ b/base/lib.mak
-@@ -1774,6 +1774,9 @@ $(GLOBJ)sjpx.$(OBJ) : $(GLSRC)sjpx.c $(AK) \
-  $(gdebug_h) $(strimpl_h) $(sjpx_h) $(MAKEDIRS)
- 	$(GLJASCC) $(GLO_)sjpx.$(OBJ) $(C_) $(GLSRC)sjpx.c
- 
-+$(GLD)sjpx_.dev : $(LIB_MAK) $(ECHOGS_XE) $(LIB_MAK) $(MAKEDIRS)
-+	$(SETMOD) $(GLD)sjpx_
-+
- # luratech version
- sjpx_luratech=$(GLOBJ)sjpx_luratech.$(OBJ)
- $(GLD)sjpx_luratech.dev : $(LIB_MAK) $(ECHOGS_XE) \
-diff --git a/psi/int.mak b/psi/int.mak
-index f9d667d..db01b65 100644
---- a/psi/int.mak
-+++ b/psi/int.mak
-@@ -1290,6 +1290,9 @@ $(PSD)jpx.dev : $(INT_MAK) $(ECHOGS_XE) $(PSD)jpx_$(JPX_LIB).dev\
-  $(MAKEDIRS)
- 	$(CP_) $(PSD)jpx_$(JPX_LIB).dev $(PSD)jpx.dev
- 
-+$(PSD)jpx_.dev : $(ECHOGS_XE) $(INT_MAK) $(MAKEDIRS)
-+	$(SETMOD) $(PSD)jpx_
-+
- fjpx_luratech=$(PSOBJ)zfjpx_luratech.$(OBJ)
- 
- $(PSOBJ)zfjpx.$(OBJ) : $(PSSRC)zfjpx.c $(OP) $(memory__h)\
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
index b445a6c..c3e44fe 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch
@@ -16,17 +16,17 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index ab30a97..b762fd7 100644
+index bf6d3f5..01df03f 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -955,11 +955,11 @@ AC_SUBST(ZLIBDIR)
+@@ -930,11 +930,11 @@ AC_SUBST(ZLIBDIR)
  AC_SUBST(FT_SYS_ZLIB)
  
  dnl png for the png output device; it also requires zlib
 -LIBPNGDIR=src
 +LIBPNGDIR=$srcdir/libpng
  PNGDEVS=''
- PNGDEVS_ALL='png48 png16m pnggray pngmono png256 png16 pngalpha'
+ PNGDEVS_ALL='png48 png16m pnggray pngmono pngmonod png256 png16 pngalpha'
  AC_MSG_CHECKING([for local png library source])
 -if test -f $srcdir/libpng/pngread.c; then
 +if false; then
@@ -34,5 +34,5 @@
          SHARE_LIBPNG=0
          LIBPNGDIR=$srcdir/libpng
 -- 
-1.9.1
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-prevent_recompiling.patch b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-prevent_recompiling.patch
index bc29be5..e709195 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-prevent_recompiling.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-prevent_recompiling.patch
@@ -1,4 +1,4 @@
-ust use commands provided by ghostscript-native, preventing recompile them when
+Just use commands provided by ghostscript-native, preventing recompile them when
 compile ghostscript.
 Way to enable cross compile.
 
@@ -7,94 +7,93 @@
 Signed-off-by: Kang Kai <kai.kang@windriver.com>
 Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
 
+Rebase to 9.19
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ base/unix-aux.mak | 64 +++++++++++++++++++++++++++----------------------------
+ 1 file changed, 32 insertions(+), 32 deletions(-)
+
 diff --git a/base/unix-aux.mak b/base/unix-aux.mak
-index a91fb26..c991d11 100644
+index 0110667..e2eb1a1 100644
 --- a/base/unix-aux.mak
 +++ b/base/unix-aux.mak
-@@ -69,46 +69,46 @@ $(GLOBJ)gp_sysv.$(OBJ): $(GLSRC)gp_sysv.c $(stdio__h) $(time__h) $(AK)\
-  $(MAKEDIRS)
- 	$(GLCC) $(GLO_)gp_sysv.$(OBJ) $(C_) $(GLSRC)gp_sysv.c
+@@ -71,44 +71,44 @@ $(GLOBJ)gp_sysv.$(OBJ): $(GLSRC)gp_sysv.c $(stdio__h) $(time__h) $(AK)\
  
--# -------------------------- Auxiliary programs --------------------------- #
--
--$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(MAKEDIRS)
+ # -------------------------- Auxiliary programs --------------------------- #
+ 
+-$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(ECHOGS_XE) $(GLSRC)echogs.c $(AUXEXTRALIBS)
 -
--# On the RS/6000 (at least), compiling genarch.c with gcc with -O
--# produces a buggy executable.
--$(GENARCH_XE): $(GLSRC)genarch.c $(AK) $(GENARCH_DEPS) $(MAKEDIRS)
++#$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
++#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(ECHOGS_XE) $(GLSRC)echogs.c $(AUXEXTRALIBS)
++#
+ # On the RS/6000 (at least), compiling genarch.c with gcc with -O
+ # produces a buggy executable.
+-$(GENARCH_XE): $(GLSRC)genarch.c $(AK) $(GENARCH_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENARCH_XE) $(GLSRC)genarch.c $(AUXEXTRALIBS)
 -
--$(GENCONF_XE): $(GLSRC)genconf.c $(AK) $(GENCONF_DEPS) $(MAKEDIRS)
+-$(GENCONF_XE): $(GLSRC)genconf.c $(AK) $(GENCONF_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENCONF_XE) $(GLSRC)genconf.c $(AUXEXTRALIBS)
 -
--$(GENDEV_XE): $(GLSRC)gendev.c $(AK) $(GENDEV_DEPS) $(MAKEDIRS)
+-$(GENDEV_XE): $(GLSRC)gendev.c $(AK) $(GENDEV_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENDEV_XE) $(GLSRC)gendev.c $(AUXEXTRALIBS)
 -
--$(GENHT_XE): $(GLSRC)genht.c $(AK) $(GENHT_DEPS) $(MAKEDIRS)
+-$(GENHT_XE): $(GLSRC)genht.c $(AK) $(GENHT_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CCAUX_) $(GENHT_CFLAGS) $(O_)$(GENHT_XE) $(GLSRC)genht.c $(AUXEXTRALIBS)
 -
--# To get GS to use the system zlib, you remove/hide the gs/zlib directory
--# which means that the mkromfs build can't find the zlib source it needs.
--# So it's split into two targets, one using the zlib source directly.....
++#$(GENARCH_XE): $(GLSRC)genarch.c $(AK) $(GENARCH_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
++#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENARCH_XE) $(GLSRC)genarch.c $(AUXEXTRALIBS)
++#
++#$(GENCONF_XE): $(GLSRC)genconf.c $(AK) $(GENCONF_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
++#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENCONF_XE) $(GLSRC)genconf.c $(AUXEXTRALIBS)
++#
++#$(GENDEV_XE): $(GLSRC)gendev.c $(AK) $(GENDEV_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
++#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENDEV_XE) $(GLSRC)gendev.c $(AUXEXTRALIBS)
++#
++#$(GENHT_XE): $(GLSRC)genht.c $(AK) $(GENHT_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
++#	$(CCAUX_) $(GENHT_CFLAGS) $(O_)$(GENHT_XE) $(GLSRC)genht.c $(AUXEXTRALIBS)
++#
+ # To get GS to use the system zlib, you remove/hide the gs/zlib directory
+ # which means that the mkromfs build can't find the zlib source it needs.
+ # So it's split into two targets, one using the zlib source directly.....
 -MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
 - $(AUX)gscdefs.$(OBJ) $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
 - $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
 -
--$(MKROMFS_XE)_0: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_0) $(MAKEDIRS)
+-$(MKROMFS_XE)_0: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_0) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CCAUX_) $(GENOPT) $(CFLAGS) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_0 $(MKROMFS_OBJS_0) $(AUXEXTRALIBS)
 -
--# .... and one using the zlib library linked via the command line
++#MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
++# $(AUX)gscdefs.$(OBJ) $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
++# $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
++#
++#$(MKROMFS_XE)_0: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_0) $(UNIX_AUX_MAK) $(MAKEDIRS)
++#	$(CCAUX_) $(GENOPT) $(CFLAGS) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_0 $(MKROMFS_OBJS_0) $(AUXEXTRALIBS)
++#
+ # .... and one using the zlib library linked via the command line
 -MKROMFS_OBJS_1=$(AUX)gscdefs.$(OBJ) \
 - $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
 - $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
 - $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ)
 -
--$(MKROMFS_XE)_1: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_1) $(MAKEDIRS)
+-$(MKROMFS_XE)_1: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_1) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CCAUX_) $(GENOPT) $(CFLAGS) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_1 $(MKROMFS_OBJS_1) $(AUXEXTRALIBS)
 -
--$(MKROMFS_XE): $(MKROMFS_XE)_$(SHARE_ZLIB) $(MAKEDIRS)
+-$(MKROMFS_XE): $(MKROMFS_XE)_$(SHARE_ZLIB) $(UNIX_AUX_MAK) $(MAKEDIRS)
 -	$(CP_) $(MKROMFS_XE)_$(SHARE_ZLIB) $(MKROMFS_XE)
-+## -------------------------- Auxiliary programs --------------------------- #
-+#
-+#$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(MAKEDIRS)
-+#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(ECHOGS_XE) $(GLSRC)echogs.c $(AUXEXTRALIBS)
-+#
-+## On the RS/6000 (at least), compiling genarch.c with gcc with -O
-+## produces a buggy executable.
-+#$(GENARCH_XE): $(GLSRC)genarch.c $(AK) $(GENARCH_DEPS) $(MAKEDIRS)
-+#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENARCH_XE) $(GLSRC)genarch.c $(AUXEXTRALIBS)
-+#
-+#$(GENCONF_XE): $(GLSRC)genconf.c $(AK) $(GENCONF_DEPS) $(MAKEDIRS)
-+#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENCONF_XE) $(GLSRC)genconf.c $(AUXEXTRALIBS)
-+#
-+#$(GENDEV_XE): $(GLSRC)gendev.c $(AK) $(GENDEV_DEPS) $(MAKEDIRS)
-+#	$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENDEV_XE) $(GLSRC)gendev.c $(AUXEXTRALIBS)
-+#
-+#$(GENHT_XE): $(GLSRC)genht.c $(AK) $(GENHT_DEPS) $(MAKEDIRS)
-+#	$(CCAUX_) $(GENHT_CFLAGS) $(O_)$(GENHT_XE) $(GLSRC)genht.c $(AUXEXTRALIBS)
-+#
-+## To get GS to use the system zlib, you remove/hide the gs/zlib directory
-+## which means that the mkromfs build can't find the zlib source it needs.
-+## So it's split into two targets, one using the zlib source directly.....
-+#MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
-+# $(AUX)gscdefs.$(OBJ) $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
-+# $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
-+#
-+#$(MKROMFS_XE)_0: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_0) $(MAKEDIRS)
-+#	$(CCAUX_) $(GENOPT) $(CFLAGS) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_0 $(MKROMFS_OBJS_0) $(AUXEXTRALIBS)
-+#
-+## .... and one using the zlib library linked via the command line
 +#MKROMFS_OBJS_1=$(AUX)gscdefs.$(OBJ) \
 +# $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
 +# $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
 +# $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ)
 +#
-+#$(MKROMFS_XE)_1: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_1) $(MAKEDIRS)
++#$(MKROMFS_XE)_1: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_1) $(UNIX_AUX_MAK) $(MAKEDIRS)
 +#	$(CCAUX_) $(GENOPT) $(CFLAGS) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_1 $(MKROMFS_OBJS_1) $(AUXEXTRALIBS)
 +#
-+#$(MKROMFS_XE): $(MKROMFS_XE)_$(SHARE_ZLIB) $(MAKEDIRS)
++#$(MKROMFS_XE): $(MKROMFS_XE)_$(SHARE_ZLIB) $(UNIX_AUX_MAK) $(MAKEDIRS)
 +#	$(CP_) $(MKROMFS_XE)_$(SHARE_ZLIB) $(MKROMFS_XE)
  
  # Query the environment to construct gconfig_.h.
  # These are all defined conditionally (except the JasPER one), so that
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/png_mak.patch b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/png_mak.patch
index da900ea..8b84986 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/png_mak.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/png_mak.patch
@@ -1,21 +1,32 @@
 ghostscript: add dependency for pnglibconf.h
-    
+
 When using parallel make jobs, we need to be sure that
 pnglibconf.h is created before we try to reference it,
 so add a rule to png.mak.
 
 Upstream-Status: Pending
-    
+
 Signed-off-by: Joe Slater <jslater@windriver.com>
 
+Rebase to 9.19
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ base/png.mak | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/base/png.mak b/base/png.mak
+index fe5c6e2..8abb53a 100644
 --- a/base/png.mak
 +++ b/base/png.mak
-@@ -81,6 +81,8 @@ png.config-clean :
- $(pnglibconf_h) : $(PNGSRC)scripts$(D)pnglibconf.h.prebuilt
- 	$(CP_)  $(PNGSRC)scripts$(D)pnglibconf.h.prebuilt $(pnglibconf_h)
+@@ -74,6 +74,8 @@ png.clean-not-config-clean :
+ 
+ pnglibconf_h=$(PNGGENDIR)$(D)pnglibconf.h
  
 +$(MAKEDIRS) : $(pnglibconf_h)
 +
- PDEP=$(AK) $(pnglibconf_h) $(MAKEDIRS)
- 
- png_1=$(PNGOBJ)png.$(OBJ) $(PNGOBJ)pngmem.$(OBJ) $(PNGOBJ)pngerror.$(OBJ) $(PNGOBJ)pngset.$(OBJ)
+ png.config-clean :
+ 	$(RM_) $(pnglibconf_h)
+ 	$(RM_) $(PNGGEN)lpg*.dev
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript_9.18.bb b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript_9.18.bb
deleted file mode 100644
index d4222c7..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript_9.18.bb
+++ /dev/null
@@ -1,107 +0,0 @@
-SUMMARY = "The GPL Ghostscript PostScript/PDF interpreter"
-DESCRIPTION = "Ghostscript is used for PostScript/PDF preview and printing.  Usually as \
-a back-end to a program such as ghostview, it can display PostScript and PDF \
-documents in an X11 environment. \
-\
-Furthermore, it can render PostScript and PDF files as graphics to be printed \
-on non-PostScript printers. Supported printers include common \
-dot-matrix, inkjet and laser models. \
-"
-HOMEPAGE = "http://www.ghostscript.com"
-SECTION = "console/utils"
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b17cea54743435ab2a581c237bea294a"
-
-DEPENDS = "ghostscript-native tiff jpeg fontconfig cups libpng"
-DEPENDS_class-native = "libpng-native"
-
-SRC_URI_BASE = "http://downloads.ghostscript.com/public/ghostscript-${PV}.tar.gz \
-                file://ghostscript-9.15-parallel-make.patch \
-                file://ghostscript-9.16-Werror-return-type.patch \
-                file://png_mak.patch \
-                file://0001-Bug-696497-Fix-support-for-building-with-no-jbig2-de.patch \
-                file://0002-Bug-696497-part-2-fix-support-for-building-with-a-JP.patch \
-                file://do-not-check-local-libpng-source.patch \
-"
-
-SRC_URI = "${SRC_URI_BASE} \
-           file://ghostscript-9.02-prevent_recompiling.patch \
-           file://ghostscript-9.02-genarch.patch \
-           file://objarch.h \
-           file://cups-no-gcrypt.patch \
-           "
-
-SRC_URI_class-native = "${SRC_URI_BASE} \
-                        file://ghostscript-native-fix-disable-system-libtiff.patch \
-                        file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
-                        "
-
-SRC_URI[md5sum] = "33a47567d7a591c00a253caddd12a88a"
-SRC_URI[sha256sum] = "5fc93079749a250be5404c465943850e3ed5ffbc0d5c07e10c7c5ee8afbbdb1b"
-
-EXTRA_OECONF = "--without-x --with-system-libtiff --without-jbig2dec \
-                --with-fontpath=${datadir}/fonts \
-                --without-libidn --with-cups-serverbin=${exec_prefix}/lib/cups \
-                --with-cups-datadir=${datadir}/cups \
-                ${@base_conditional('SITEINFO_ENDIANNESS', 'le', '--enable-little-endian', '--enable-big-endian', d)} \
-                "
-
-EXTRA_OECONF_append_mips = " --with-large_color_index=0"
-EXTRA_OECONF_append_mipsel = " --with-large_color_index=0"
-
-# Explicity disable libtiff, fontconfig,
-# freetype, cups for ghostscript-native
-EXTRA_OECONF_class-native = "--without-x --with-system-libtiff=no \
-                             --without-jbig2dec \
-                             --with-fontpath=${datadir}/fonts \
-                             --without-libidn --disable-fontconfig \
-                             --disable-freetype --disable-cups"
-
-# This has been fixed upstream but for now we need to subvert the check for time.h
-# http://bugs.ghostscript.com/show_bug.cgi?id=692443
-# http://bugs.ghostscript.com/show_bug.cgi?id=692426
-CFLAGS += "-DHAVE_SYS_TIME_H=1"
-BUILD_CFLAGS += "-DHAVE_SYS_TIME_H=1"
-
-inherit autotools
-
-do_configure_prepend () {
-	mkdir -p obj
-	mkdir -p soobj
-	if [ -e ${WORKDIR}/objarch.h ]; then
-		cp ${WORKDIR}/objarch.h obj/arch.h
-	fi
-}
-
-do_configure_append () {
-	# copy tools from the native ghostscript build
-	if [ "${PN}" != "ghostscript-native" ]; then
-		mkdir -p obj/aux soobj
-		for i in genarch genconf mkromfs echogs gendev genht; do
-			cp ${STAGING_BINDIR_NATIVE}/ghostscript-${PV}/$i obj/aux/$i
-		done
-	fi
-}
-
-do_install_append () {
-    mkdir -p ${D}${datadir}/ghostscript/${PV}/
-    cp -r ${S}/Resource ${D}${datadir}/ghostscript/${PV}/
-    cp -r ${S}/iccprofiles ${D}${datadir}/ghostscript/${PV}/
-}
-
-do_compile_class-native () {
-    mkdir -p obj
-    for i in genarch genconf mkromfs echogs gendev genht; do
-        oe_runmake obj/aux/$i
-    done
-}
-
-do_install_class-native () {
-    install -d ${D}${bindir}/ghostscript-${PV}
-    for i in genarch genconf mkromfs echogs gendev genht; do
-        install -m 755 obj/aux/$i ${D}${bindir}/ghostscript-${PV}/$i
-    done
-}
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript_9.19.bb b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript_9.19.bb
new file mode 100644
index 0000000..fe2016b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript_9.19.bb
@@ -0,0 +1,106 @@
+SUMMARY = "The GPL Ghostscript PostScript/PDF interpreter"
+DESCRIPTION = "Ghostscript is used for PostScript/PDF preview and printing.  Usually as \
+a back-end to a program such as ghostview, it can display PostScript and PDF \
+documents in an X11 environment. \
+\
+Furthermore, it can render PostScript and PDF files as graphics to be printed \
+on non-PostScript printers. Supported printers include common \
+dot-matrix, inkjet and laser models. \
+"
+HOMEPAGE = "http://www.ghostscript.com"
+SECTION = "console/utils"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b17cea54743435ab2a581c237bea294a"
+
+DEPENDS = "ghostscript-native tiff jpeg fontconfig cups libpng"
+DEPENDS_class-native = "libpng-native"
+
+UPSTREAM_CHECK_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases"
+
+SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs919/${BPN}-${PV}.tar.gz \
+                file://ghostscript-9.15-parallel-make.patch \
+                file://ghostscript-9.16-Werror-return-type.patch \
+                file://png_mak.patch \
+                file://do-not-check-local-libpng-source.patch \
+"
+
+SRC_URI = "${SRC_URI_BASE} \
+           file://ghostscript-9.02-prevent_recompiling.patch \
+           file://ghostscript-9.02-genarch.patch \
+           file://objarch.h \
+           file://cups-no-gcrypt.patch \
+           "
+
+SRC_URI_class-native = "${SRC_URI_BASE} \
+                        file://ghostscript-native-fix-disable-system-libtiff.patch \
+                        file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
+                        "
+
+SRC_URI[md5sum] = "c9682ce6b852f9197c69905a43928907"
+SRC_URI[sha256sum] = "cf3c0dce67db1557a87366969945f9c5235887989c0b585e037af366dc035989"
+
+EXTRA_OECONF = "--without-x --with-system-libtiff --without-jbig2dec \
+                --with-fontpath=${datadir}/fonts \
+                --without-libidn --with-cups-serverbin=${exec_prefix}/lib/cups \
+                --with-cups-datadir=${datadir}/cups \
+                "
+
+EXTRA_OECONF_append_mips = " --with-large_color_index=0"
+EXTRA_OECONF_append_mipsel = " --with-large_color_index=0"
+
+# Explicity disable libtiff, fontconfig,
+# freetype, cups for ghostscript-native
+EXTRA_OECONF_class-native = "--without-x --with-system-libtiff=no \
+                             --without-jbig2dec \
+                             --with-fontpath=${datadir}/fonts \
+                             --without-libidn --disable-fontconfig \
+                             --disable-freetype --disable-cups"
+
+# This has been fixed upstream but for now we need to subvert the check for time.h
+# http://bugs.ghostscript.com/show_bug.cgi?id=692443
+# http://bugs.ghostscript.com/show_bug.cgi?id=692426
+CFLAGS += "-DHAVE_SYS_TIME_H=1"
+BUILD_CFLAGS += "-DHAVE_SYS_TIME_H=1"
+
+inherit autotools
+
+do_configure_prepend () {
+	mkdir -p obj
+	mkdir -p soobj
+	if [ -e ${WORKDIR}/objarch.h ]; then
+		cp ${WORKDIR}/objarch.h obj/arch.h
+	fi
+}
+
+do_configure_append () {
+	# copy tools from the native ghostscript build
+	if [ "${PN}" != "ghostscript-native" ]; then
+		mkdir -p obj/aux soobj
+		for i in genarch genconf mkromfs echogs gendev genht; do
+			cp ${STAGING_BINDIR_NATIVE}/ghostscript-${PV}/$i obj/aux/$i
+		done
+	fi
+}
+
+do_install_append () {
+    mkdir -p ${D}${datadir}/ghostscript/${PV}/
+    cp -r ${S}/Resource ${D}${datadir}/ghostscript/${PV}/
+    cp -r ${S}/iccprofiles ${D}${datadir}/ghostscript/${PV}/
+}
+
+do_compile_class-native () {
+    mkdir -p obj
+    for i in genarch genconf mkromfs echogs gendev genht; do
+        oe_runmake obj/aux/$i
+    done
+}
+
+do_install_class-native () {
+    install -d ${D}${bindir}/ghostscript-${PV}
+    for i in genarch genconf mkromfs echogs gendev genht; do
+        install -m 755 obj/aux/$i ${D}${bindir}/ghostscript-${PV}/$i
+    done
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/fix-for-texinfo-5.1.patch b/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/fix-for-texinfo-5.1.patch
index 5a4149c..ce59509 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/fix-for-texinfo-5.1.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/fix-for-texinfo-5.1.patch
@@ -1,6 +1,6 @@
 Upstream-Status: Inappropriate [Poky Specific this is gplv2 version]
 
-Signed-off-by Saul Wold <sgw@linux.intel.com>
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
 
 Index: grep-2.5.1a/doc/grep.texi
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch b/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch
index 721f2a0..a40a9f3 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch
@@ -12,7 +12,7 @@
 accepting patches.  This is not a backport.
 CVE: CVE-2012-5667
 
-Signed-off-by Ming Liu <ming.liu@windriver.com>
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
 ---
  grep.c |    7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep_fix_for_automake-1.12.patch
index 3ccce5f..d9b1e35 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/grep/grep-2.5.1a/grep_fix_for_automake-1.12.patch
@@ -13,7 +13,7 @@
 | src/Makefile.am:2: error: automatic de-ANSI-fication support has been removed
 | autoreconf: automake failed with exit status: 1
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/04
 
 Index: grep-2.5.1a/configure.in
diff --git a/import-layers/yocto-poky/meta/recipes-extended/grep/grep_2.23.bb b/import-layers/yocto-poky/meta/recipes-extended/grep/grep_2.23.bb
deleted file mode 100644
index 13ff32d..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/grep/grep_2.23.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "GNU grep utility"
-HOMEPAGE = "http://savannah.gnu.org/projects/grep/"
-BUGTRACKER = "http://savannah.gnu.org/bugs/?group=grep"
-SECTION = "console/utils"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8006d9c814277c1bfc4ca22af94b59ee"
-
-SRC_URI = "${GNU_MIRROR}/grep/grep-${PV}.tar.xz \
-           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
-          "
-
-SRC_URI[md5sum] = "f46aa9d0d2577b9212a104348a286787"
-SRC_URI[sha256sum] = "54fc478ee1ce17780109820ef30730c9e18715a949f7d5c6afc673adb2a56ecf"
-
-inherit autotools gettext texinfo
-
-EXTRA_OECONF = "--disable-perl-regexp"
-
-do_configure_prepend () {
-	rm -f ${S}/m4/init.m4
-}
-
-do_install () {
-	autotools_do_install
-	if [ "${base_bindir}" != "${bindir}" ]; then
-		install -d ${D}${base_bindir}
-		mv ${D}${bindir}/grep ${D}${base_bindir}/grep
-		mv ${D}${bindir}/egrep ${D}${base_bindir}/egrep
-		mv ${D}${bindir}/fgrep ${D}${base_bindir}/fgrep
-		rmdir ${D}${bindir}/
-	fi
-}
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN} = "grep egrep fgrep"
-ALTERNATIVE_LINK_NAME[grep] = "${base_bindir}/grep"
-ALTERNATIVE_LINK_NAME[egrep] = "${base_bindir}/egrep"
-ALTERNATIVE_LINK_NAME[fgrep] = "${base_bindir}/fgrep"
-
-export CONFIG_SHELL="/bin/sh"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/grep/grep_2.25.bb b/import-layers/yocto-poky/meta/recipes-extended/grep/grep_2.25.bb
new file mode 100644
index 0000000..9720d9f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/grep/grep_2.25.bb
@@ -0,0 +1,43 @@
+SUMMARY = "GNU grep utility"
+HOMEPAGE = "http://savannah.gnu.org/projects/grep/"
+BUGTRACKER = "http://savannah.gnu.org/bugs/?group=grep"
+SECTION = "console/utils"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8006d9c814277c1bfc4ca22af94b59ee"
+
+SRC_URI = "${GNU_MIRROR}/grep/grep-${PV}.tar.xz \
+           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
+          "
+
+SRC_URI[md5sum] = "04e96b0e6f0fe6a180ae62c88fcd0af6"
+SRC_URI[sha256sum] = "e21e83bac50450e0d0d61a42c154ee0dceaacdbf4f604ef6e79071cb8e596830"
+
+inherit autotools gettext texinfo
+
+EXTRA_OECONF = "--disable-perl-regexp"
+
+do_configure_prepend () {
+	rm -f ${S}/m4/init.m4
+}
+
+do_install () {
+	autotools_do_install
+	if [ "${base_bindir}" != "${bindir}" ]; then
+		install -d ${D}${base_bindir}
+		mv ${D}${bindir}/grep ${D}${base_bindir}/grep
+		mv ${D}${bindir}/egrep ${D}${base_bindir}/egrep
+		mv ${D}${bindir}/fgrep ${D}${base_bindir}/fgrep
+		rmdir ${D}${bindir}/
+	fi
+}
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE_${PN} = "grep egrep fgrep"
+ALTERNATIVE_LINK_NAME[grep] = "${base_bindir}/grep"
+ALTERNATIVE_LINK_NAME[egrep] = "${base_bindir}/egrep"
+ALTERNATIVE_LINK_NAME[fgrep] = "${base_bindir}/fgrep"
+
+export CONFIG_SHELL="/bin/sh"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/groff/groff-1.18.1.4/fix-narrowing-conversion-error.patch b/import-layers/yocto-poky/meta/recipes-extended/groff/groff-1.18.1.4/fix-narrowing-conversion-error.patch
new file mode 100644
index 0000000..4b0176f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/groff/groff-1.18.1.4/fix-narrowing-conversion-error.patch
@@ -0,0 +1,61 @@
+From fc289ab69c6d7e4ad489172509a85f68afec43ea Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 29 Jul 2016 03:19:39 -0400
+Subject: [PATCH] fix narrowing conversion error
+
+While gcc6 used, build old groff (for anti-GPLv3 reasons) failed:
+.....
+|groff-1.18.1.4/src/devices/grolbp/charset.h:69:1: error: narrowing
+conversion of '130' from 'int' to 'char' inside { } [-Wnarrowing]
+......
+
+In upstream git://git.savannah.gnu.org/groff.git,
+the following commit fix the issue, but the license is GPLV3,
+we could not backport it to the old groff which license is GPLV2.
+...
+commit d180038ae0da19655bc2760ae2043efa0550a76c
+Author: Werner LEMBERG <wl@gnu.org>
+Date:   Wed Apr 16 21:11:07 2003 +0000
+    * src/devices/grolbp/charset.h (symset): Use `unsigned char'.
+...
+
+We use another different way to fix the issue.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ src/devices/grolbp/charset.h | 2 +-
+ src/devices/grolbp/lbp.cc    | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/devices/grolbp/charset.h b/src/devices/grolbp/charset.h
+index adc76f4..e9c6c5b 100644
+--- a/src/devices/grolbp/charset.h
++++ b/src/devices/grolbp/charset.h
+@@ -1,6 +1,6 @@
+ // Definition of the WP54 character set
+ 
+-char symset[] = {
++int symset[] = {
+ 0x57,0x50,0x35,0x34,0x00,0x41,0x76,0x61,0x6e,0x74,0x47,0x61,
+ 0x72,0x64,0x65,0x2d,0x42,0x6f,0x6f,0x6b,0x00,0x41,0x76,
+ 0x61,0x6e,0x74,0x47,0x61,0x72,0x64,0x65,0x2d,0x44,0x65,
+diff --git a/src/devices/grolbp/lbp.cc b/src/devices/grolbp/lbp.cc
+index 76db32a..00d4ca7 100644
+--- a/src/devices/grolbp/lbp.cc
++++ b/src/devices/grolbp/lbp.cc
+@@ -152,8 +152,8 @@ static void wp54charset()
+ {
+   unsigned int i;
+   lbpputs("\033[714;100;29;0;32;120.}");
+-  for (i = 0; i < sizeof(symset); i++)
+-    lbpputc(symset[i]);
++  for (i = 0; i < sizeof(symset)/sizeof(symset[0]); i++)
++    lbpputc((char)symset[i]&0xFF);
+   lbpputs("\033[100;0 D");
+   return;
+ }
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.18.1.4.bb b/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.18.1.4.bb
index bd786a3..fc7eb44 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.18.1.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.18.1.4.bb
@@ -13,6 +13,7 @@
           file://man-local.patch \
           file://mdoc-local.patch \
           file://groff-1.18.1.4-fix-bindir.patch \
+          file://fix-narrowing-conversion-error.patch \
 " 
 
 inherit autotools texinfo
diff --git a/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.22.3.bb b/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.22.3.bb
index 4bffa81..dd241f3 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.22.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/groff/groff_1.22.3.bb
@@ -56,6 +56,17 @@
 	if [ -e ${D}${libdir}/charset.alias ]; then
 		rm -rf ${D}${libdir}/charset.alias
 	fi
+
+	# awk is located at /usr/bin/, not /bin/
+	SPECIAL_AWK=`find ${D} -name special.awk`
+	if [ -f ${SPECIAL_AWK} ]; then
+		sed -i -e 's:#!.*awk:#! ${USRBINPATH}/awk:' ${SPECIAL_AWK}
+	fi
+
+	# not ship /usr/bin/glilypond and its releated files in embedded target system
+	rm -rf ${D}${bindir}/glilypond
+	rm -rf ${D}${libdir}/groff/glilypond
+	rm -rf ${D}${mandir}/man1/glilypond*
 }
 
 do_install_append_class-native() {
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip-1.6/wrong-path-fix.patch b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip-1.6/wrong-path-fix.patch
deleted file mode 100644
index 92863d6..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip-1.6/wrong-path-fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-fix MakeMaker issues with using wrong SHELL/GREP
-
-A set of substitution is being processed to all target scripts with sed by
-replacing some key words with the detected values at configure time, this
-is exactly not compliant with cross compling, and will cause missing path
-errors at run time like:
-"/usr/bin/zgrep: line 230: /usr/bin/grep: No such file or directory"
-
-Fixed by removing unneeded substitution and using real runtime paths
-instead.
-
-Signed-off-by: Ming Liu <ming.liu@windriver.com>
-
-Upstream-Status: Pending
-
-Index: gzip-1.3.12/Makefile.am
-===================================================================
-diff -urpN a/Makefile.am b/Makefile.am
---- a/Makefile.am	2013-11-30 10:06:09.402234871 +0800
-+++ b/Makefile.am	2013-11-30 10:13:42.952236025 +0800
-@@ -81,9 +81,8 @@ gzip.doc.gz: gzip.doc $(bin_PROGRAMS)
- SUFFIXES = .in
- .in:
- 	$(AM_V_GEN)sed \
--		-e 's|/bin/sh|$(SHELL)|g' \
- 		-e 's|[@]bindir@|'\''$(bindir)'\''|g' \
--		-e 's|[@]GREP@|$(GREP)|g' \
-+		-e 's|[@]GREP@|$(base_bindir)/grep|g' \
- 		-e 's|[@]VERSION@|$(VERSION)|g' \
- 		$(srcdir)/$@.in >$@-t \
- 	  && chmod a+x $@-t \
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip-1.8/wrong-path-fix.patch b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip-1.8/wrong-path-fix.patch
new file mode 100644
index 0000000..4dc1000
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip-1.8/wrong-path-fix.patch
@@ -0,0 +1,29 @@
+fix MakeMaker issues with using wrong SHELL/GREP
+
+A set of substitution is being processed to all target scripts with sed by
+replacing some key words with the detected values at configure time, this
+is exactly not compliant with cross compling, and will cause missing path
+errors at run time like:
+"/usr/bin/zgrep: line 230: /usr/bin/grep: No such file or directory"
+
+Fixed by removing unneeded substitution and using real runtime paths
+instead.
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+
+Upstream-Status: Pending
+
+Index: gzip-1.8/Makefile.am
+===================================================================
+--- gzip-1.8.orig/Makefile.am
++++ gzip-1.8/Makefile.am
+@@ -81,8 +81,7 @@ gzip.doc.gz: gzip.doc $(bin_PROGRAMS)
+ SUFFIXES = .in
+ .in:
+ 	$(AM_V_GEN)sed \
+-		-e 's|/bin/sh|$(SHELL)|g' \
+-		-e 's|[@]GREP@|$(GREP)|g' \
++		-e 's|[@]GREP@|$(base_bindir)/grep|g' \
+ 		-e 's|[@]VERSION@|$(VERSION)|g' \
+ 		$(srcdir)/$@.in >$@-t \
+ 	  && chmod a+x $@-t \
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip.inc b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip.inc
index 6e81883..04f8f95 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip.inc
@@ -22,11 +22,6 @@
 	fi
 }
 
-do_install_append_libc-musl () {
-	rm ${D}${libdir}/charset.alias
-	rmdir ${D}${libdir}
-}
-
 inherit update-alternatives
 
 ALTERNATIVE_PRIORITY = "100"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip_1.6.bb b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip_1.6.bb
deleted file mode 100644
index b347f0b..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip_1.6.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require gzip.inc
-
-LICENSE = "GPLv3+"
-
-SRC_URI = "${GNU_MIRROR}/gzip/${BP}.tar.gz"
-SRC_URI_append_class-target = " file://wrong-path-fix.patch"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://gzip.h;beginline=8;endline=20;md5=6e47caaa630e0c8bf9f1bc8d94a8ed0e"
-
-PROVIDES_append_class-native = " gzip-replacement-native"
-NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
-
-BBCLASSEXTEND = "native"
-
-SRC_URI[md5sum] = "38603cb2843bf5681ff41aab3bcd6a20"
-SRC_URI[sha256sum] = "97eb83b763d9e5ad35f351fe5517e6b71521d7aac7acf3e3cacdb6b1496d8f7e"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip_1.8.bb b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip_1.8.bb
new file mode 100644
index 0000000..a19b965
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/gzip/gzip_1.8.bb
@@ -0,0 +1,18 @@
+require gzip.inc
+
+LICENSE = "GPLv3+"
+
+SRC_URI = "${GNU_MIRROR}/gzip/${BP}.tar.gz"
+SRC_URI_append_class-target = " file://wrong-path-fix.patch"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://gzip.h;beginline=8;endline=20;md5=6e47caaa630e0c8bf9f1bc8d94a8ed0e"
+
+PROVIDES_append_class-native = " gzip-replacement-native"
+NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "732553152814b22dc35aa0267df5286c"
+SRC_URI[sha256sum] = "1ff7aedb3d66a0d73f442f6261e4b3860df6fd6c94025c2cb31a202c9c60fe0e"
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/hdparm/hdparm_9.48.bb b/import-layers/yocto-poky/meta/recipes-extended/hdparm/hdparm_9.48.bb
index ec3d26f4..cd85776 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/hdparm/hdparm_9.48.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/hdparm/hdparm_9.48.bb
@@ -2,8 +2,12 @@
 DESCRIPTION = "hdparm is a Linux shell utility for viewing \
 and manipulating various IDE drive and driver parameters."
 SECTION = "console/utils"
-LICENSE = "BSD"
+
+LICENSE = "BSD & GPLv2"
+LICENSE_${PN} = "BSD"
+LICENSE_${PN}-dbg = "BSD"
 LICENSE_wiper = "GPLv2"
+
 LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=910a8a42c962d238619c75fdb78bdb24 \
                     file://debian/copyright;md5=a82d7ba3ade9e8ec902749db98c592f3 \
                     file://wiper/GPLv2.txt;md5=fcb02dc552a041dee27e4b85c7396067 \
diff --git a/import-layers/yocto-poky/meta/recipes-extended/images/core-image-kernel-dev.bb b/import-layers/yocto-poky/meta/recipes-extended/images/core-image-kernel-dev.bb
index 26b88c9..a40b3aa 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/images/core-image-kernel-dev.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/images/core-image-kernel-dev.bb
@@ -14,7 +14,7 @@
                             "
 
 # We need extra space for things like kernel builds, etc.
-IMAGE_ROOTFS_EXTRA_SPACE_append += "+ 3000000"
+IMAGE_ROOTFS_EXTRA_SPACE_append = " + 3000000"
 
 # Let's define our own subset to test, we can later add a on-target kernel build even!
 DEFAULT_TEST_SUITES = "ping ssh df connman syslog scp date parselogs"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/images/core-image-testmaster-initramfs.bb b/import-layers/yocto-poky/meta/recipes-extended/images/core-image-testmaster-initramfs.bb
index ad1407c..09a6d16 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/images/core-image-testmaster-initramfs.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/images/core-image-testmaster-initramfs.bb
@@ -18,3 +18,6 @@
 IMAGE_ROOTFS_SIZE = "8192"
 IMAGE_ROOTFS_EXTRA_SPACE = "0"
 BAD_RECOMMENDATIONS += "busybox-syslog"
+
+# Use the same restriction as initramfs-live-install-testfs
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch
index 508f5a1..dc4ba50 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch
@@ -6,7 +6,7 @@
 
 Received this patch from H.J. Lu <hjl.tools@gmail.com>
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2011/12/02
 
 --- libaio-0.3.109/src/syscall-x86_64.h.x32	2009-10-09 11:17:02.000000000 -0700
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio_0.3.110.bb b/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio_0.3.110.bb
index 2adfa0a..75975d4 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio_0.3.110.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/libaio/libaio_0.3.110.bb
@@ -5,7 +5,7 @@
 LICENSE = "LGPLv2.1+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/liba/libaio/libaio_${PV}.orig.tar.gz \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/liba/${BPN}/${BPN}_${PV}.orig.tar.gz \
            file://generic-arch-dectection-for-padding-defines.patch \
            file://00_arches.patch \
            file://destdir.patch \
@@ -17,6 +17,8 @@
 SRC_URI[md5sum] = "2a35602e43778383e2f4907a4ca39ab8"
 SRC_URI[sha256sum] = "e019028e631725729376250e32b473012f7cb68e1f7275bfc1bbcdd0f8745f7e"
 
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/liba/libaio/"
+
 EXTRA_OEMAKE =+ "prefix=${prefix} includedir=${includedir} libdir=${libdir}"
 
 do_install () {
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/0001-Set-xattrs-after-setting-times.patch b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/0001-Set-xattrs-after-setting-times.patch
deleted file mode 100644
index 6d74e86..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/0001-Set-xattrs-after-setting-times.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 545ded56095c570426fe102ff2192889681ea75c Mon Sep 17 00:00:00 2001
-From: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>
-Date: Mon, 29 Feb 2016 14:38:25 +0200
-Subject: [PATCH] Set xattrs after setting times
-
-With Integrity Measurement Architecture (IMA) enabled in Linux
-kernel the security.ima extended attribute gets overwritten
-when setting times on a file with a futimens() call. So it's safer
-to set xattrs after times.
-
-Upstream-Status: Submitted [https://github.com/libarchive/libarchive/pull/664]
-
-Signed-off-by: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>
-
----
- libarchive/archive_write_disk_posix.c | 21 +++++++++++----------
- 1 file changed, 11 insertions(+), 10 deletions(-)
-
-diff --git a/libarchive/archive_write_disk_posix.c b/libarchive/archive_write_disk_posix.c
-index 0fc6193..27c9c1e 100644
---- a/libarchive/archive_write_disk_posix.c
-+++ b/libarchive/archive_write_disk_posix.c
-@@ -1620,16 +1620,6 @@ _archive_write_disk_finish_entry(struct archive *_a)
-	}
-
-	/*
--	 * Security-related extended attributes (such as
--	 * security.capability on Linux) have to be restored last,
--	 * since they're implicitly removed by other file changes.
--	 */
--	if (a->todo & TODO_XATTR) {
--		int r2 = set_xattrs(a);
--		if (r2 < ret) ret = r2;
--	}
--
--	/*
-	 * Some flags prevent file modification; they must be restored after
-	 * file contents are written.
-	 */
-@@ -1648,6 +1638,17 @@ _archive_write_disk_finish_entry(struct archive *_a)
-	}
-
-	/*
-+	 * Security-related extended attributes (such as
-+	 * security.capability or security.ima on Linux) have to be restored last,
-+	 * since they're implicitly removed by other file changes like setting
-+	 * times.
-+	 */
-+	if (a->todo & TODO_XATTR) {
-+		int r2 = set_xattrs(a);
-+		if (r2 < ret) ret = r2;
-+	}
-+
-+	/*
-	 * Mac extended metadata includes ACLs.
-	 */
-	if (a->todo & TODO_MAC_METADATA) {
---
-2.5.0
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/libarchive-CVE-2013-0211.patch b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/libarchive-CVE-2013-0211.patch
deleted file mode 100644
index 19523f4..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/libarchive-CVE-2013-0211.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 2f55d6bd308ea61975558c2469ae349dba297e89 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Sat, 22 Feb 2014 14:35:59 +0800
-Subject: [PATCH] Fix CVE-2013-0211
-
-This patch comes from:https://github.com/libarchive/libarchive/commit/22531545514043e04633e1c015c7540b9de9dbe4
-
-Upstream-Status: Backport
-CVE: CVE-2013-0211
-
-Signed-off-by: Baogen shang <baogen.shang@windriver.com>
-
-Update the patch because of uprev on 20140222
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- libarchive/archive_write.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/libarchive/archive_write.c b/libarchive/archive_write.c
-index a3d1a33..a323588 100644
---- a/libarchive/archive_write.c
-+++ b/libarchive/archive_write.c
-@@ -671,8 +671,12 @@ static ssize_t
- _archive_write_data(struct archive *_a, const void *buff, size_t s)
- {
- 	struct archive_write *a = (struct archive_write *)_a;
-+	const size_t max_write = INT_MAX;
- 	archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC,
- 	    ARCHIVE_STATE_DATA, "archive_write_data");
-+	/* In particular, this catches attempts to pass negative values. */
-+	if (s > max_write)
-+		s = max_write;
- 	archive_clear_error(&a->archive);
- 	return ((a->format_write_data)(a, buff, s));
- }
--- 
-1.8.2.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/libarchive-CVE-2015-2304.patch b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/libarchive-CVE-2015-2304.patch
deleted file mode 100644
index 5c24396..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/libarchive-CVE-2015-2304.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From 59357157706d47c365b2227739e17daba3607526 Mon Sep 17 00:00:00 2001
-From: Alessandro Ghedini <alessandro@ghedini.me>
-Date: Sun, 1 Mar 2015 12:07:45 +0100
-Subject: [PATCH] Add ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS option
-
-This fixes a directory traversal in the cpio tool.
-
-
-Upstream-Status: backport
-CVE: CVE-2015-2304
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- cpio/bsdcpio.1                           |    3 ++-
- cpio/cpio.c                              |    2 ++
- libarchive/archive.h                     |    2 ++
- libarchive/archive_write_disk.3          |    3 +++
- libarchive/archive_write_disk_posix.c    |   14 +++++++++++---
- libarchive/test/test_write_disk_secure.c |   23 +++++++++++++++++++++++
- 6 files changed, 43 insertions(+), 4 deletions(-)
-
-diff --git a/cpio/bsdcpio.1 b/cpio/bsdcpio.1
-index f966aa0..e52546e 100644
---- a/cpio/bsdcpio.1
-+++ b/cpio/bsdcpio.1
-@@ -156,7 +156,8 @@ See above for description.
- .It Fl Fl insecure
- (i and p mode only)
- Disable security checks during extraction or copying.
--This allows extraction via symbolic links and path names containing
-+This allows extraction via symbolic links, absolute paths,
-+and path names containing
- .Sq ..
- in the name.
- .It Fl J , Fl Fl xz
-diff --git a/cpio/cpio.c b/cpio/cpio.c
-index 0acde11..b267e9b 100644
---- a/cpio/cpio.c
-+++ b/cpio/cpio.c
-@@ -171,6 +171,7 @@ main(int argc, char *argv[])
- 	cpio->extract_flags |= ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER;
- 	cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_SYMLINKS;
- 	cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NODOTDOT;
-+	cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS;
- 	cpio->extract_flags |= ARCHIVE_EXTRACT_PERM;
- 	cpio->extract_flags |= ARCHIVE_EXTRACT_FFLAGS;
- 	cpio->extract_flags |= ARCHIVE_EXTRACT_ACL;
-@@ -256,6 +257,7 @@ main(int argc, char *argv[])
- 		case OPTION_INSECURE:
- 			cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_SYMLINKS;
- 			cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT;
-+			cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS;
- 			break;
- 		case 'L': /* GNU cpio */
- 			cpio->option_follow_links = 1;
-diff --git a/libarchive/archive.h b/libarchive/archive.h
-index 1f0fc38..ef635ac 100644
---- a/libarchive/archive.h
-+++ b/libarchive/archive.h
-@@ -649,6 +649,8 @@ __LA_DECL int archive_read_set_passphrase_callback(struct archive *,
- /* Default: Do not use HFS+ compression if it was not compressed. */
- /* This has no effect except on Mac OS v10.6 or later. */
- #define	ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED	(0x8000)
-+/* Default: Do not reject entries with absolute paths */
-+#define ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS (0x10000)
- 
- __LA_DECL int archive_read_extract(struct archive *, struct archive_entry *,
- 		     int flags);
-diff --git a/libarchive/archive_write_disk.3 b/libarchive/archive_write_disk.3
-index fa925cc..a2e7afa 100644
---- a/libarchive/archive_write_disk.3
-+++ b/libarchive/archive_write_disk.3
-@@ -177,6 +177,9 @@ The default is to not refuse such paths.
- Note that paths ending in
- .Pa ..
- always cause an error, regardless of this flag.
-+.It Cm ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS
-+Refuse to extract an absolute path.
-+The default is to not refuse such paths.
- .It Cm ARCHIVE_EXTRACT_SPARSE
- Scan data for blocks of NUL bytes and try to recreate them with holes.
- This results in sparse files, independent of whether the archive format
-diff --git a/libarchive/archive_write_disk_posix.c b/libarchive/archive_write_disk_posix.c
-index ab3bdac..c1290eb 100644
---- a/libarchive/archive_write_disk_posix.c
-+++ b/libarchive/archive_write_disk_posix.c
-@@ -2509,8 +2509,9 @@ cleanup_pathname_win(struct archive_write_disk *a)
- /*
-  * Canonicalize the pathname.  In particular, this strips duplicate
-  * '/' characters, '.' elements, and trailing '/'.  It also raises an
-- * error for an empty path, a trailing '..' or (if _SECURE_NODOTDOT is
-- * set) any '..' in the path.
-+ * error for an empty path, a trailing '..', (if _SECURE_NODOTDOT is
-+ * set) any '..' in the path or (if ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS
-+ * is set) if the path is absolute.
-  */
- static int
- cleanup_pathname(struct archive_write_disk *a)
-@@ -2529,8 +2530,15 @@ cleanup_pathname(struct archive_write_disk *a)
- 	cleanup_pathname_win(a);
- #endif
- 	/* Skip leading '/'. */
--	if (*src == '/')
-+	if (*src == '/') {
-+		if (a->flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) {
-+			archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-+			                  "Path is absolute");
-+			return (ARCHIVE_FAILED);
-+		}
-+
- 		separator = *src++;
-+	}
- 
- 	/* Scan the pathname one element at a time. */
- 	for (;;) {
-diff --git a/libarchive/test/test_write_disk_secure.c b/libarchive/test/test_write_disk_secure.c
-index 31c5bfd..2c94206 100644
---- a/libarchive/test/test_write_disk_secure.c
-+++ b/libarchive/test/test_write_disk_secure.c
-@@ -178,6 +178,29 @@ DEFINE_TEST(test_write_disk_secure)
- 	assert(S_ISDIR(st.st_mode));
- 	archive_entry_free(ae);
- 
-+	/*
-+	 * Without security checks, we should be able to
-+	 * extract an absolute path.
-+	 */
-+	assert((ae = archive_entry_new()) != NULL);
-+	archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
-+	archive_entry_set_mode(ae, S_IFREG | 0777);
-+	assert(0 == archive_write_header(a, ae));
-+	assert(0 == archive_write_finish_entry(a));
-+	assertFileExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
-+	assert(0 == unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"));
-+
-+	/* But with security checks enabled, this should fail. */
-+	assert(archive_entry_clear(ae) != NULL);
-+	archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
-+	archive_entry_set_mode(ae, S_IFREG | 0777);
-+	archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS);
-+	failure("Extracting an absolute path should fail here.");
-+	assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae));
-+	archive_entry_free(ae);
-+	assert(0 == archive_write_finish_entry(a));
-+	assertFileNotExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
-+
- 	assertEqualInt(ARCHIVE_OK, archive_write_free(a));
- 
- 	/* Test the entries on disk. */
--- 
-1.7.9.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/mkdir.patch b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/mkdir.patch
deleted file mode 100644
index 509a295..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/mkdir.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Add missing mkdir calls so that out-of-tree builds work.
-
-Upstream-Status: Submitted (https://github.com/libarchive/libarchive/pull/534)
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/Makefile.am b/Makefile.am
-index 3fa2d22..5ecca52 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -508,6 +508,7 @@ libarchive_test_LDADD= $(LTLIBICONV)
- # Building it automatically provides a sanity-check on libarchive_test_SOURCES
- # above.
- libarchive/test/list.h: Makefile
-+	$(MKDIR_P) libarchive/test
- 	cat $(top_srcdir)/libarchive/test/test_*.c | grep DEFINE_TEST > libarchive/test/list.h
- 
- libarchive_TESTS_ENVIRONMENT= LIBARCHIVE_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/libarchive/test LRZIP=NOCONFIG
-@@ -835,6 +836,7 @@ bsdtar_test_CPPFLAGS=\
- 	$(PLATFORMCPPFLAGS)
- 
- tar/test/list.h: Makefile
-+	$(MKDIR_P) tar/test
- 	cat $(top_srcdir)/tar/test/test_*.c | grep DEFINE_TEST > tar/test/list.h
- 
- if BUILD_BSDTAR
-@@ -975,6 +977,7 @@ bsdcpio_test_CPPFLAGS= \
- bsdcpio_test_LDADD=libarchive_fe.la
- 
- cpio/test/list.h: Makefile
-+	$(MKDIR_P) cpio/test
- 	cat $(top_srcdir)/cpio/test/test_*.c | grep DEFINE_TEST > cpio/test/list.h
- 
- if BUILD_BSDCPIO
-diff --git a/configure.ac b/configure.ac
-index 38bd299..7bdb00c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -102,6 +102,7 @@ AC_USE_SYSTEM_EXTENSIONS
- AC_LIBTOOL_WIN32_DLL
- AC_PROG_LIBTOOL
- AC_CHECK_TOOL([STRIP],[strip])
-+AC_PROG_MKDIR_P
- 
- #
- # Options for building bsdtar.
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/pkgconfig.patch b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/pkgconfig.patch
deleted file mode 100644
index 346af91..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive/pkgconfig.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Use pkg-config for the libxml2 dependency, not the -config script.
-
-Upstream-Status: Pending
-
-RP 2014/5/22
-
-Index: libarchive-3.1.2/configure.ac
-===================================================================
---- libarchive-3.1.2.orig/configure.ac	2013-02-09 17:23:03.000000000 +0000
-+++ libarchive-3.1.2/configure.ac	2014-05-13 15:26:45.446499108 +0000
-@@ -329,10 +329,10 @@
-   AS_HELP_STRING([--without-expat], [Don't build support for xar through expat]))
- 
- if test "x$with_xml2" != "xno"; then
--  AC_PATH_PROG([XML2_CONFIG], [xml2-config],, [${PATH}])
--  if test "x$XML2_CONFIG" != "x"; then
--    CPPFLAGS="${CPPFLAGS} `${XML2_CONFIG} --cflags`"
--    LIBS="${LIBS} `${XML2_CONFIG} --libs`"
-+  PKG_CHECK_MODULES(PKG_XML2, [libxml-2.0],,)
-+  if test "x$PKG_XML2_CFLAGS" != "x"; then
-+    CPPFLAGS="${CPPFLAGS} ${PKG_XML2_CFLAGS}"
-+    LIBS="${LIBS} ${PKG_XML2_LIBS}"
-     AC_CHECK_LIB(xml2,xmlInitParser,[true],AC_MSG_FAILURE(Missing xml2 library))
-   else
-     AC_CHECK_LIB(xml2,xmlInitParser)
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.1.2.bb b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.1.2.bb
deleted file mode 100644
index ed677ac..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.1.2.bb
+++ /dev/null
@@ -1,71 +0,0 @@
-SUMMARY = "Support for reading various archive formats"
-DESCRIPTION = "C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats"
-HOMEPAGE = "http://www.libarchive.org/"
-SECTION = "devel"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b4e3ffd607d6686c6cb2f63394370841"
-
-DEPENDS = "e2fsprogs-native"
-
-PACKAGECONFIG ?= "zlib bz2"
-
-PACKAGECONFIG_append_class-target = "\
-	libxml2 \
-	${@bb.utils.contains('DISTRO_FEATURES', 'acl', 'acl', '', d)} \
-	${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'xattr', '', d)} \
-	${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)} \
-"
-
-PACKAGECONFIG_append_class-nativesdk = " largefile"
-
-PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
-PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
-PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
-PACKAGECONFIG[bz2] = "--with-bz2lib,--without-bz2lib,bzip2,"
-PACKAGECONFIG[xz] = "--with-lzmadec --with-lzma,--without-lzmadec --without-lzma,xz,"
-PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
-PACKAGECONFIG[libxml2] = "--with-xml2,--without-xml2,libxml2,"
-PACKAGECONFIG[expat] = "--with-expat,--without-expat,expat,"
-PACKAGECONFIG[lzo] = "--with-lzo2,--without-lzo2,lzo,"
-PACKAGECONFIG[nettle] = "--with-nettle,--without-nettle,nettle,"
-
-SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
-           file://libarchive-CVE-2013-0211.patch \
-           file://pkgconfig.patch \
-           file://libarchive-CVE-2015-2304.patch \
-           file://mkdir.patch \
-           file://0001-Set-xattrs-after-setting-times.patch \
-           "
-
-SRC_URI[md5sum] = "efad5a503f66329bb9d2f4308b5de98a"
-SRC_URI[sha256sum] = "eb87eacd8fe49e8d90c8fdc189813023ccc319c5e752b01fb6ad0cc7b2c53d5e"
-
-inherit autotools update-alternatives pkgconfig
-
-CPPFLAGS += "-I${WORKDIR}/extra-includes"
-
-do_configure[cleandirs] += "${WORKDIR}/extra-includes"
-do_configure_prepend() {
-	# We just need the headers for some type constants, so no need to
-	# build all of e2fsprogs for the target
-	cp -R ${STAGING_INCDIR_NATIVE}/ext2fs ${WORKDIR}/extra-includes/
-}
-
-ALTERNATIVE_PRIORITY = "100"
-
-PACKAGES =+ "bsdtar"
-FILES_bsdtar = "${bindir}/bsdtar"
-
-ALTERNATIVE_bsdtar = "tar"
-ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
-ALTERNATIVE_TARGET[tar] = "${bindir}/bsdtar"
-
-PACKAGES =+ "bsdcpio"
-FILES_bsdcpio = "${bindir}/bsdcpio"
-
-ALTERNATIVE_bsdcpio = "cpio"
-ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
-ALTERNATIVE_TARGET[cpio] = "${bindir}/bsdcpio"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.2.1.bb b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.2.1.bb
new file mode 100644
index 0000000..b65b5df
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.2.1.bb
@@ -0,0 +1,67 @@
+SUMMARY = "Support for reading various archive formats"
+DESCRIPTION = "C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats"
+HOMEPAGE = "http://www.libarchive.org/"
+SECTION = "devel"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ed99aca006bc346974bb745a35336425"
+
+DEPENDS = "e2fsprogs-native"
+
+PACKAGECONFIG ?= "zlib bz2"
+
+PACKAGECONFIG_append_class-target = "\
+	libxml2 \
+	${@bb.utils.contains('DISTRO_FEATURES', 'acl', 'acl', '', d)} \
+	${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'xattr', '', d)} \
+	${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)} \
+"
+
+PACKAGECONFIG_append_class-nativesdk = " largefile"
+
+PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
+PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
+PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
+PACKAGECONFIG[bz2] = "--with-bz2lib,--without-bz2lib,bzip2,"
+PACKAGECONFIG[xz] = "--with-lzmadec --with-lzma,--without-lzmadec --without-lzma,xz,"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
+PACKAGECONFIG[libxml2] = "--with-xml2,--without-xml2,libxml2,"
+PACKAGECONFIG[expat] = "--with-expat,--without-expat,expat,"
+PACKAGECONFIG[lzo] = "--with-lzo2,--without-lzo2,lzo,"
+PACKAGECONFIG[nettle] = "--with-nettle,--without-nettle,nettle,"
+PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4,"
+
+SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
+           "
+
+SRC_URI[md5sum] = "afa257047d1941a565216edbf0171e72"
+SRC_URI[sha256sum] = "72ee1a4e3fd534525f13a0ba1aa7b05b203d186e0c6072a8a4738649d0b3cfd2"
+
+inherit autotools update-alternatives pkgconfig
+
+CPPFLAGS += "-I${WORKDIR}/extra-includes"
+
+do_configure[cleandirs] += "${WORKDIR}/extra-includes"
+do_configure_prepend() {
+	# We just need the headers for some type constants, so no need to
+	# build all of e2fsprogs for the target
+	cp -R ${STAGING_INCDIR_NATIVE}/ext2fs ${WORKDIR}/extra-includes/
+}
+
+ALTERNATIVE_PRIORITY = "100"
+
+PACKAGES =+ "bsdtar"
+FILES_bsdtar = "${bindir}/bsdtar"
+
+ALTERNATIVE_bsdtar = "tar"
+ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
+ALTERNATIVE_TARGET[tar] = "${bindir}/bsdtar"
+
+PACKAGES =+ "bsdcpio"
+FILES_bsdcpio = "${bindir}/bsdcpio"
+
+ALTERNATIVE_bsdcpio = "cpio"
+ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
+ALTERNATIVE_TARGET[cpio] = "${bindir}/bsdcpio"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/0001-idn-fix-printf-format-security-warnings.patch b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/0001-idn-fix-printf-format-security-warnings.patch
new file mode 100644
index 0000000..5adc7d9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/0001-idn-fix-printf-format-security-warnings.patch
@@ -0,0 +1,181 @@
+From 82f98dcbc429bbe89a9837c533cbcbc02e77c790 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Tue, 28 Jun 2016 12:43:31 +0100
+Subject: [PATCH] idn: fix printf() format security warnings
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+| ../../libidn-1.32/src/idn.c: In function 'main':
+| ../../libidn-1.32/src/idn.c:172:7: error: format not a string literal and no format arguments [-Werror=format-security]
+|        error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified"));
+|        ^~~~~
+| ../../libidn-1.32/src/idn.c:187:5: error: format not a string literal and no format arguments [-Werror=format-security]
+|      fprintf (stderr, _("Type each input string on a line by itself, "
+|      ^~~~~~~
+| ../../libidn-1.32/src/idn.c:202:4: error: format not a string literal and no format arguments [-Werror=format-security]
+|     error (EXIT_FAILURE, errno, _("input error"));
+|     ^~~~~
+| ../../libidn-1.32/src/idn.c:220:8: error: format not a string literal and no format arguments [-Werror=format-security]
+|         _("could not convert from UTF-8 to UCS-4"));
+|         ^
+| ../../libidn-1.32/src/idn.c:245:8: error: format not a string literal and no format arguments [-Werror=format-security]
+|         _("could not convert from UTF-8 to UCS-4"));
+|         ^
+| ../../libidn-1.32/src/idn.c:281:6: error: format not a string literal and no format arguments [-Werror=format-security]
+|       _("could not convert from UTF-8 to UCS-4"));
+|       ^
+| ../../libidn-1.32/src/idn.c:340:6: error: format not a string literal and no format arguments [-Werror=format-security]
+|       _("could not convert from UCS-4 to UTF-8"));
+|       ^
+| ../../libidn-1.32/src/idn.c:364:6: error: format not a string literal and no format arguments [-Werror=format-security]
+|       _("could not convert from UCS-4 to UTF-8"));
+|       ^
+| ../../libidn-1.32/src/idn.c:442:8: error: format not a string literal and no format arguments [-Werror=format-security]
+|         _("could not convert from UCS-4 to UTF-8"));
+|         ^
+| ../../libidn-1.32/src/idn.c:498:6: error: format not a string literal and no format arguments [-Werror=format-security]
+|       _("could not convert from UTF-8 to UCS-4"));
+|       ^
+| ../../libidn-1.32/src/idn.c:527:5: error: format not a string literal and no format arguments [-Werror=format-security]
+|      _("could not convert from UTF-8 to UCS-4"));
+|      ^
+| ../../libidn-1.32/src/idn.c:540:6: error: format not a string literal and no format arguments [-Werror=format-security]
+|       error (EXIT_FAILURE, 0, _("could not do NFKC normalization"));
+|       ^~~~~
+| ../../libidn-1.32/src/idn.c:551:5: error: format not a string literal and no format arguments [-Werror=format-security]
+|      _("could not convert from UTF-8 to UCS-4"));
+|      ^
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+---
+Upstream-Status: Pending
+
+ src/idn.c | 27 ++++++++++++++-------------
+ 1 file changed, 14 insertions(+), 13 deletions(-)
+
+diff --git a/src/idn.c b/src/idn.c
+index be1c7d1..68e4291 100644
+--- a/src/idn.c
++++ b/src/idn.c
+@@ -170,7 +170,7 @@ main (int argc, char *argv[])
+       (args_info.idna_to_unicode_given ? 1 : 0) +
+       (args_info.nfkc_given ? 1 : 0) != 1)
+     {
+-      error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified"));
++      error (0, 0, "%s", _("only one of -s, -e, -d, -a, -u or -n can be specified"));
+       usage (EXIT_FAILURE);
+     }
+ 
+@@ -185,7 +185,7 @@ main (int argc, char *argv[])
+   if (!args_info.quiet_given
+       && args_info.inputs_num == 0
+       && isatty (fileno (stdin)))
+-    fprintf (stderr, _("Type each input string on a line by itself, "
++    fprintf (stderr, "%s", _("Type each input string on a line by itself, "
+ 		       "terminated by a newline character.\n"));
+ 
+   do
+@@ -197,7 +197,7 @@ main (int argc, char *argv[])
+ 	  if (feof (stdin))
+ 	    break;
+ 
+-	  error (EXIT_FAILURE, errno, _("input error"));
++	  error (EXIT_FAILURE, errno, "%s", _("input error"));
+ 	}
+ 
+       if (strlen (line) > 0)
+@@ -215,7 +215,7 @@ main (int argc, char *argv[])
+ 	  if (!q)
+ 	    {
+ 	      free (p);
+-	      error (EXIT_FAILURE, 0,
++	      error (EXIT_FAILURE, 0, "%s",
+ 		     _("could not convert from UTF-8 to UCS-4"));
+ 	    }
+ 
+@@ -240,7 +240,7 @@ main (int argc, char *argv[])
+ 	  if (!q)
+ 	    {
+ 	      free (r);
+-	      error (EXIT_FAILURE, 0,
++	      error (EXIT_FAILURE, 0, "%s",
+ 		     _("could not convert from UTF-8 to UCS-4"));
+ 	    }
+ 
+@@ -277,7 +277,7 @@ main (int argc, char *argv[])
+ 	  q = stringprep_utf8_to_ucs4 (p, -1, &len);
+ 	  free (p);
+ 	  if (!q)
+-	    error (EXIT_FAILURE, 0,
++	    error (EXIT_FAILURE, 0, "%s",
+ 		   _("could not convert from UTF-8 to UCS-4"));
+ 
+ 	  if (args_info.debug_given)
+@@ -336,7 +336,7 @@ main (int argc, char *argv[])
+ 	  r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
+ 	  free (q);
+ 	  if (!r)
+-	    error (EXIT_FAILURE, 0,
++	    error (EXIT_FAILURE, 0, "%s",
+ 		   _("could not convert from UCS-4 to UTF-8"));
+ 
+ 	  p = stringprep_utf8_to_locale (r);
+@@ -360,7 +360,7 @@ main (int argc, char *argv[])
+ 	  q = stringprep_utf8_to_ucs4 (p, -1, NULL);
+ 	  free (p);
+ 	  if (!q)
+-	    error (EXIT_FAILURE, 0,
++	    error (EXIT_FAILURE, 0, "%s",
+ 		   _("could not convert from UCS-4 to UTF-8"));
+ 
+ 	  if (args_info.debug_given)
+@@ -438,7 +438,7 @@ main (int argc, char *argv[])
+ 	  if (!q)
+ 	    {
+ 	      free (p);
+-	      error (EXIT_FAILURE, 0,
++	      error (EXIT_FAILURE, 0, "%s",
+ 		     _("could not convert from UCS-4 to UTF-8"));
+ 	    }
+ 
+@@ -494,7 +494,7 @@ main (int argc, char *argv[])
+ 	  r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
+ 	  free (q);
+ 	  if (!r)
+-	    error (EXIT_FAILURE, 0,
++	    error (EXIT_FAILURE, 0, "%s",
+ 		   _("could not convert from UTF-8 to UCS-4"));
+ 
+ 	  p = stringprep_utf8_to_locale (r);
+@@ -523,7 +523,7 @@ main (int argc, char *argv[])
+ 	      if (!q)
+ 		{
+ 		  free (p);
+-		  error (EXIT_FAILURE, 0,
++		  error (EXIT_FAILURE, 0, "%s",
+ 			 _("could not convert from UTF-8 to UCS-4"));
+ 		}
+ 
+@@ -537,7 +537,8 @@ main (int argc, char *argv[])
+ 	  r = stringprep_utf8_nfkc_normalize (p, -1);
+ 	  free (p);
+ 	  if (!r)
+-	    error (EXIT_FAILURE, 0, _("could not do NFKC normalization"));
++	    error (EXIT_FAILURE, 0, "%s",
++		   _("could not do NFKC normalization"));
+ 
+ 	  if (args_info.debug_given)
+ 	    {
+@@ -547,7 +548,7 @@ main (int argc, char *argv[])
+ 	      if (!q)
+ 		{
+ 		  free (r);
+-		  error (EXIT_FAILURE, 0,
++		  error (EXIT_FAILURE, 0, "%s",
+ 			 _("could not convert from UTF-8 to UCS-4"));
+ 		}
+ 
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch
index 3476bb9..98ba4d6 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch
@@ -7,7 +7,7 @@
 eliminated these deprecated macros yet. So disable the treatment of warnings
 as errors until gettext is updated to remove the deprecated macros.
 
-Signed-Off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/07/10
 
 Index: libidn-1.24/configure.ac
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch
index 20afd25..5683d3c 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch
@@ -6,7 +6,7 @@
 | /srv/home/nitin/builds/build-gcc47/tmp/sysroots/x86_64-linux/usr/share/automake-1.12/am/ltlibrary.am: warning: 'libidn.la': linking libtool libraries using a non-POSIX
 | /srv/home/nitin/builds/build-gcc47/tmp/sysroots/x86_64-linux/usr/share/automake-1.12/am/ltlibrary.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/03
 
 Index: libidn-1.24/configure.ac
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn_1.32.bb b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn_1.32.bb
deleted file mode 100644
index 4d6e885..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn_1.32.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Internationalized Domain Name support library"
-DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
-HOMEPAGE = "http://www.gnu.org/software/libidn/"
-SECTION = "libs"
-LICENSE = "(LGPLv2.1+ | LGPLv3) & GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=df4be47940a91ee69556f5f71eed4aec \
-                    file://COPYING.LESSERv2;md5=4fbd65380cdd255951079008b364516c \
-                    file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
-                    file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://lib/idna.h;endline=21;md5=7c0b3828d1b153663be9a04ad4f7975f \
-                    file://src/idn.c;endline=20;md5=f4235f2a2cb2b65786b2979fb3cf7fbf"
-
-inherit pkgconfig autotools gettext texinfo
-
-SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz \
-           file://libidn_fix_for_automake-1.12.patch \
-           file://avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch \
-           file://dont-depend-on-help2man.patch \
-"
-
-SRC_URI[md5sum] = "4dd8356ba577287ea7076bfa1554b534"
-SRC_URI[sha256sum] = "ba5d5afee2beff703a34ee094668da5c6ea5afa38784cebba8924105e185c4f5"
-
-# command tool is under GPLv3+, while libidn itself is under LGPLv2.1+ or LGPLv3
-# so package command into a separate package
-PACKAGES =+ "idn"
-FILES_idn = "${bindir}/*"
-
-EXTRA_OECONF = "--disable-csharp"
-
-do_install_append() {
-	rm -rf ${D}${datadir}/emacs
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn_1.33.bb b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn_1.33.bb
new file mode 100644
index 0000000..d3d0f55
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/libidn/libidn_1.33.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Internationalized Domain Name support library"
+DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
+HOMEPAGE = "http://www.gnu.org/software/libidn/"
+SECTION = "libs"
+LICENSE = "(LGPLv2.1+ | LGPLv3) & GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=df4be47940a91ee69556f5f71eed4aec \
+                    file://COPYING.LESSERv2;md5=4fbd65380cdd255951079008b364516c \
+                    file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+                    file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://lib/idna.h;endline=21;md5=37cffad24807f446a24de3e7371f20b9 \
+                    file://src/idn.c;endline=20;md5=09e97034a8877b3451cb65065fc2c06e"
+DEPENDS = "virtual/libiconv"
+
+inherit pkgconfig autotools gettext texinfo gtk-doc
+
+SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz \
+           file://libidn_fix_for_automake-1.12.patch \
+           file://avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch \
+           file://dont-depend-on-help2man.patch \
+           file://0001-idn-fix-printf-format-security-warnings.patch \
+"
+
+SRC_URI[md5sum] = "a9aa7e003665de9c82bd3f9fc6ccf308"
+SRC_URI[sha256sum] = "44a7aab635bb721ceef6beecc4d49dfd19478325e1b47f3196f7d2acc4930e19"
+
+# command tool is under GPLv3+, while libidn itself is under LGPLv2.1+ or LGPLv3
+# so package command into a separate package
+PACKAGES =+ "idn"
+FILES_idn = "${bindir}/*"
+
+LICENSE_${PN} = "LGPLv2.1+ | LGPLv3"
+LICENSE_idn = "GPLv3+"
+
+EXTRA_OECONF = "--disable-csharp"
+
+do_install_append() {
+	rm -rf ${D}${datadir}/emacs
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv/0001-Add-fallback-fopencookie-implementation.patch b/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv/0001-Add-fallback-fopencookie-implementation.patch
new file mode 100644
index 0000000..24e2228
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv/0001-Add-fallback-fopencookie-implementation.patch
@@ -0,0 +1,254 @@
+From 5b6e113f548bd8a2b100267bc5d54cee861a4b98 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Neal=20Gompa=20=28=E3=83=8B=E3=83=BC=E3=83=AB=E3=83=BB?=
+ =?UTF-8?q?=E3=82=B3=E3=82=99=E3=83=B3=E3=83=8F=E3=82=9A=29?=
+ <ngompa13@gmail.com>
+Date: Wed, 11 Nov 2015 20:32:17 -0500
+Subject: [PATCH] Add fallback fopencookie() implementation
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In environments where neither fopencookie() nor funopen()
+are implemented, we need to provide a suitable implementation
+of fopencookie() that we can use.
+
+Upstream-Status: Submitted [ https://github.com/openSUSE/libsolv/pull/112 ]
+
+Signed-off-by: Neal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>com>
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+ ext/CMakeLists.txt                     |   7 ++
+ ext/solv_xfopen.c                      |  10 +--
+ ext/solv_xfopen_fallback_fopencookie.c | 124 +++++++++++++++++++++++++++++++++
+ ext/solv_xfopen_fallback_fopencookie.h |  28 ++++++++
+ 4 files changed, 165 insertions(+), 4 deletions(-)
+ create mode 100644 ext/solv_xfopen_fallback_fopencookie.c
+ create mode 100644 ext/solv_xfopen_fallback_fopencookie.h
+
+diff --git a/ext/CMakeLists.txt b/ext/CMakeLists.txt
+index ad52495..4f282ce 100644
+--- a/ext/CMakeLists.txt
++++ b/ext/CMakeLists.txt
+@@ -4,6 +4,13 @@ SET (libsolvext_SRCS
+ SET (libsolvext_HEADERS
+     tools_util.h solv_xfopen.h testcase.h)
+ 
++IF (NOT HAVE_FOPENCOOKIE AND NOT HAVE_FUNOPEN)
++    SET (libsolvext_SRCS ${libsolvext_SRCS}
++        solv_xfopen_fallback_fopencookie.c)
++    SET (libsolvext_HEADERS ${libsolvext_HEADERS}
++        solv_xfopen_fallback_fopencookie.h)
++ENDIF (NOT HAVE_FOPENCOOKIE AND NOT HAVE_FUNOPEN)
++
+ IF (ENABLE_RPMDB)
+     SET (libsolvext_SRCS ${libsolvext_SRCS}
+         pool_fileconflicts.c repo_rpmdb.c)
+diff --git a/ext/solv_xfopen.c b/ext/solv_xfopen.c
+index b0421bf..31345dd 100644
+--- a/ext/solv_xfopen.c
++++ b/ext/solv_xfopen.c
+@@ -13,6 +13,10 @@
+ #include <zlib.h>
+ #include <fcntl.h>
+ 
++#if !defined(HAVE_FUNOPEN) && !defined(HAVE_FOPENCOOKIE)
++#include "solv_xfopen_fallback_fopencookie.h"
++#endif
++
+ #include "solv_xfopen.h"
+ #include "util.h"
+ 
+@@ -39,7 +43,7 @@ static FILE *cookieopen(void *cookie, const char *mode,
+ 	ssize_t (*cwrite)(void *, const char *, size_t),
+ 	int (*cclose)(void *))
+ {
+-#ifdef HAVE_FUNOPEN
++#if defined(HAVE_FUNOPEN) && !defined(HAVE_FOPENCOOKIE)
+   if (!cookie)
+     return 0;
+   return funopen(cookie,
+@@ -48,7 +52,7 @@ static FILE *cookieopen(void *cookie, const char *mode,
+       (fpos_t (*)(void *, fpos_t, int))NULL,					/* seekfn */
+       cclose
+       );
+-#elif defined(HAVE_FOPENCOOKIE)
++#else
+   cookie_io_functions_t cio;
+ 
+   if (!cookie)
+@@ -60,8 +64,6 @@ static FILE *cookieopen(void *cookie, const char *mode,
+     cio.write = cwrite;
+   cio.close = cclose;
+   return  fopencookie(cookie, *mode == 'w' ? "w" : "r", cio);
+-#else
+-# error Need to implement custom I/O
+ #endif
+ }
+ 
+diff --git a/ext/solv_xfopen_fallback_fopencookie.c b/ext/solv_xfopen_fallback_fopencookie.c
+new file mode 100644
+index 0000000..89426a9
+--- /dev/null
++++ b/ext/solv_xfopen_fallback_fopencookie.c
+@@ -0,0 +1,124 @@
++/*
++ *	Provides a very limited fopencookie() for environments with a libc
++ *	that lacks it.
++ *
++ *	Authors: zhasha & nsz
++ *	Modified for libsolv by Neal Gompa
++ *
++ *	This program is licensed under the BSD license, read LICENSE.BSD
++ *	for further information.
++ *
++ */
++
++#define _LARGEFILE64_SOURCE 1
++#include <pthread.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <sys/types.h>
++#include <errno.h>
++#include "solv_xfopen_fallback_fopencookie.h"
++
++extern int pipe2(int[2], int);
++
++struct ctx {
++    int fd;
++    void *cookie;
++    struct cookie_io_functions_t io;
++    char buf[1024];
++};
++
++static void *proxy(void *arg)
++{
++    struct ctx *ctx = arg;
++    ssize_t r;
++    size_t n, k;
++
++    pthread_detach(pthread_self());
++
++    while (1) {
++        r = ctx->io.read ?
++            (ctx->io.read)(ctx->cookie, ctx->buf, sizeof(ctx->buf)) :
++            read(ctx->fd, ctx->buf, sizeof(ctx->buf));
++        if (r < 0) {
++            if (errno != EINTR) { break; }
++            continue;
++        }
++        if (r == 0) { break; }
++
++        n = r, k = 0;
++        while (n > 0) {
++            r = ctx->io.write ?
++                (ctx->io.write)(ctx->cookie, ctx->buf + k, n) :
++                write(ctx->fd, ctx->buf + k, n);
++            if (r < 0) {
++                if (errno != EINTR) { break; }
++                continue;
++            }
++            if (r == 0) { break; }
++
++            n -= r, k += r;
++        }
++        if (n > 0) { break; }
++    }
++
++    if (ctx->io.close) { (ctx->io.close)(ctx->cookie); }
++    close(ctx->fd);
++    return NULL;
++}
++
++FILE *fopencookie(void *cookie, const char *mode, struct cookie_io_functions_t io)
++{
++    struct ctx *ctx = NULL;
++    int rd = 0, wr = 0;
++    int p[2] = { -1, -1 };
++    FILE *f = NULL;
++    pthread_t dummy;
++
++    switch (mode[0]) {
++        case 'a':
++        case 'w': wr = 1; break;
++        case 'r': rd = 1; break;
++        default:
++            errno = EINVAL;
++            return NULL;
++    }
++    switch (mode[1]) {
++        case '\0': break;
++        case '+':
++            if (mode[2] == '\0') {
++                errno = ENOTSUP;
++                return NULL;
++            }
++        default:
++            errno = EINVAL;
++            return NULL;
++    }
++    if (io.seek) {
++        errno = ENOTSUP;
++        return NULL;
++    }
++
++    ctx = malloc(sizeof(*ctx));
++    if (!ctx) { return NULL; }
++    if (pipe2(p, O_CLOEXEC) != 0) { goto err; }
++    if ((f = fdopen(p[wr], mode)) == NULL) { goto err; }
++    p[wr] = -1;
++    ctx->fd = p[rd];
++    ctx->cookie = cookie;
++    ctx->io.read = rd ? io.read : NULL;
++    ctx->io.write = wr ? io.write : NULL;
++    ctx->io.seek = NULL;
++    ctx->io.close = io.close;
++    if (pthread_create(&dummy, NULL, proxy, ctx) != 0) { goto err; }
++
++    return f;
++
++err:
++    if (p[0] >= 0) { close(p[0]); }
++    if (p[1] >= 0) { close(p[1]); }
++    if (f) { fclose(f); }
++    free(ctx);
++    return NULL;
++}
+diff --git a/ext/solv_xfopen_fallback_fopencookie.h b/ext/solv_xfopen_fallback_fopencookie.h
+new file mode 100644
+index 0000000..7223e3f
+--- /dev/null
++++ b/ext/solv_xfopen_fallback_fopencookie.h
+@@ -0,0 +1,28 @@
++/*
++ *	Provides a very limited fopencookie() for environments with a libc
++ *	that lacks it.
++ *
++ *	Authors: zhasha & nsz
++ *	Modified for libsolv by Neal Gompa
++ *
++ *	This program is licensed under the BSD license, read LICENSE.BSD
++ *	for further information.
++ *
++ */
++
++#ifndef SOLV_XFOPEN_FALLBACK_FOPENCOOKIE_H
++#define SOLV_XFOPEN_FALLBACK_FOPENCOOKIE_H
++
++#include <stdio.h>
++#include <stdint.h>
++
++typedef struct cookie_io_functions_t {
++    ssize_t (*read)(void *, char *, size_t);
++    ssize_t (*write)(void *, const char *, size_t);
++    int (*seek)(void *, off64_t, int);
++    int (*close)(void *);
++} cookie_io_functions_t;
++
++FILE *fopencookie(void *cookie, const char *mode, struct cookie_io_functions_t io);
++
++#endif
+-- 
+2.4.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv/0001-CMakeLists.txt-fix-MAN_INSTALL_DIR.patch b/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv/0001-CMakeLists.txt-fix-MAN_INSTALL_DIR.patch
deleted file mode 100644
index 972ecc9..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv/0001-CMakeLists.txt-fix-MAN_INSTALL_DIR.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 280f0d37c642d68bad2a2e49ef437953474d99e6 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Wed, 6 Apr 2016 23:15:02 -0700
-Subject: [PATCH] CMakeLists.txt: fix MAN_INSTALL_DIR
-
-It checks ${CMAKE_INSTALL_PREFIX}/share/man when configure, but it may
-not exist when crosscompile, for example, when CMAKE_INSTALL_PREFIX="/",
-it is OK, but when CMAKE_INSTALL_PREFIX="/some/path/else", then it
-doesn't exist, and the man dir would be set to "/usr/man" which is
-incorrect.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- CMakeLists.txt | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index fd1426b..747db22 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -57,10 +57,7 @@ else (DEFINED INCLUDE)
- ENDIF (DEFINED  INCLUDE)
- MESSAGE (STATUS "Header files will be installed in ${INCLUDE_INSTALL_DIR}")
- SET (BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
--SET (MAN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/man")
--IF (IS_DIRECTORY "${CMAKE_INSTALL_PREFIX}/share/man"  AND NOT IS_DIRECTORY "${CMAKE_INSTALL_PREFIX}/man")
--  SET (MAN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/man")
--ENDIF (IS_DIRECTORY "${CMAKE_INSTALL_PREFIX}/share/man"  AND NOT IS_DIRECTORY "${CMAKE_INSTALL_PREFIX}/man")
-+SET (MAN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/man")
- MESSAGE(STATUS "Man pages will be installed in ${MAN_INSTALL_DIR}")
- 
- ####################################################################
--- 
-2.7.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv_0.6.23.bb b/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv_0.6.23.bb
new file mode 100644
index 0000000..f3f3d6e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv_0.6.23.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Library for solving packages and reading repositories"
+HOMEPAGE = "https://github.com/openSUSE/libsolv"
+BUGTRACKER = "https://github.com/openSUSE/libsolv/issues"
+SECTION = "devel"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
+
+DEPENDS = "expat zlib"
+
+SRC_URI = "git://github.com/openSUSE/libsolv.git \
+          "
+SRC_URI_append_libc-musl = " file://0001-Add-fallback-fopencookie-implementation.patch"
+
+SRCREV = "f654c8cfa52427ed42d7142e58452dae08c0c2d0"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DLIB=${baselib} -DMULTI_SEMANTICS=ON"
+
+PACKAGES =+ "${PN}-tools ${PN}ext"
+
+FILES_${PN}-dev += "${datadir}/cmake/Modules/FindLibSolv.cmake"
+FILES_${PN}-tools = "${bindir}/*"
+FILES_${PN}ext = "${libdir}/${PN}ext.so.*"
+
+BBCLASSEXTEND =+ "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv_git.bb b/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv_git.bb
deleted file mode 100644
index fb81c8a..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/libsolv/libsolv_git.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Library for solving packages and reading repositories"
-HOMEPAGE = "https://github.com/openSUSE/libsolv"
-BUGTRACKER = "https://github.com/openSUSE/libsolv/issues"
-SECTION = "devel"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
-
-DEPENDS = "expat zlib"
-
-PV = "0.6.19"
-
-SRC_URI = "git://github.com/openSUSE/libsolv.git \
-           file://0001-CMakeLists.txt-fix-MAN_INSTALL_DIR.patch \
-"
-SRCREV = "4c5af401a89858d4cebbfe40c59a0031ff9db5b0"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-EXTRA_OECMAKE = "-DLIB=${baselib}"
-
-PACKAGES =+ "${PN}-tools ${PN}ext"
-
-FILES_${PN}-dev += "${datadir}/cmake/Modules/FindLibSolv.cmake"
-FILES_${PN}-tools = "${bindir}/*"
-FILES_${PN}ext = "${libdir}/${PN}ext.so.*"
-
-BBCLASSEXTEND =+ "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libuser/libuser/0001-modules-files.c-parse_field-fix-string-formating-in-.patch b/import-layers/yocto-poky/meta/recipes-extended/libuser/libuser/0001-modules-files.c-parse_field-fix-string-formating-in-.patch
new file mode 100644
index 0000000..7c47df2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/libuser/libuser/0001-modules-files.c-parse_field-fix-string-formating-in-.patch
@@ -0,0 +1,34 @@
+From a4857911ece5ebfcdef42aee4c070eb216f39597 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
+Date: Fri, 13 May 2016 11:40:13 -0500
+Subject: [PATCH] modules/files.c: parse_field fix string formating in
+ g_warnings
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+[YOCTO #9547]
+
+Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
+
+Upstream-Status: Pending
+---
+ modules/files.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/files.c b/modules/files.c
+index 4ef0a57..35eafc9 100644
+--- a/modules/files.c
++++ b/modules/files.c
+@@ -534,7 +534,7 @@ parse_field(const struct format_specifier *format, GValue *value,
+ 						 string, &err);
+ 	if (ret == FALSE) {
+ 		g_assert(err != NULL);
+-		g_warning(lu_strerror(err));
++		g_warning(lu_strerror(err), NULL);
+ 		lu_error_free(&err);
+ 	}
+ 	return ret;
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/libuser/libuser_0.62.bb b/import-layers/yocto-poky/meta/recipes-extended/libuser/libuser_0.62.bb
index 1369ae8..3d0b516 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/libuser/libuser_0.62.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/libuser/libuser_0.62.bb
@@ -14,16 +14,17 @@
 SRC_URI = "https://fedorahosted.org/releases/l/i/libuser/libuser-${PV}.tar.xz \
            file://0001-Check-for-issetugid.patch \
            file://0002-remove-unused-execinfo.h.patch \
-          "
+           file://0001-modules-files.c-parse_field-fix-string-formating-in-.patch \
+           "
 
 SRC_URI[md5sum] = "63e5e5c551e99dc5302b40b80bd6d4f2"
 SRC_URI[sha256sum] = "a58ff4fabb01a25043b142185a33eeea961109dd60d4b40b6a9df4fa3cace20b"
 
-DEPENDS = "popt libpam glib-2.0 docbook-utils-native linuxdoc-tools-native python"
+DEPENDS = "popt libpam glib-2.0 docbook-utils-native linuxdoc-tools-native python3"
 
-inherit autotools gettext pythonnative python-dir pkgconfig
+inherit autotools gettext python3native python3-dir pkgconfig gtk-doc
 
-EXTRA_OEMAKE = "PYTHON_CPPFLAGS=-I${STAGING_INCDIR}/${PYTHON_DIR}"
+EXTRA_OEMAKE = "PYTHON_CPPFLAGS=-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}"
 
 PACKAGES += "${PN}-python "
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd/0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch b/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd/0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch
new file mode 100644
index 0000000..b8c7f37
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd/0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch
@@ -0,0 +1,37 @@
+From e7a8c925b9316a72bdc8f32789ffe56fda5c4788 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 26 Aug 2016 18:20:32 +0300
+Subject: [PATCH] Use pkg-config for pcre dependency instead of -config script.
+
+RP 2014/5/22
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1d172a1..a9236da 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -380,11 +380,12 @@ if test "$WITH_PCRE" != "no"; then
+ 			PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
+ 			CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
+ 		else
+-			AC_PATH_PROG(PCRECONFIG, pcre-config)
+-			if test x"$PCRECONFIG" != x; then
+-				PCRE_LIB=`$PCRECONFIG --libs`
+-				CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
+-			fi
++			PKG_CHECK_MODULES(PCREPKG, [libpcre], [
++				PCRE_LIB=${PCREPKG_LIBS}
++				CPPFLAGS="$CPPFLAGS ${PCREPKG_CFLAGS}"
++			], [
++				AC_MSG_ERROR([pcre pkgconfig not found, install the pcre-devel package or build with --without-pcre])
++			])
+ 		fi
+ 
+   if test x"$PCRE_LIB" != x; then
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd/pkgconfig.patch b/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd/pkgconfig.patch
deleted file mode 100644
index e395f92..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd/pkgconfig.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Use pkg-config for pcre dependency instead of -config script.
-
-Upstream-Status: Pending
-
-RP 2014/5/22
-
-
-Index: lighttpd-1.4.35/configure.ac
-===================================================================
---- lighttpd-1.4.35.orig/configure.ac	2014-03-06 14:08:00.000000000 +0000
-+++ lighttpd-1.4.35/configure.ac	2014-05-13 16:58:30.758471169 +0000
-@@ -309,16 +309,14 @@
- AC_MSG_RESULT([$WITH_PCRE])
- 
- if test "$WITH_PCRE" != "no"; then
--  AC_PATH_PROG(PCRECONFIG, pcre-config)
--
--  if test x"$PCRECONFIG" != x; then
--    PCRE_LIB=`$PCRECONFIG --libs`
--    CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
-+  PKG_CHECK_MODULES(PCREPKG, [libpcre], [
-+    PCRE_LIB=${PCREPKG_LIBS}
-+    CPPFLAGS="$CPPFLAGS ${PCREPKG_CFLAGS}"
-     AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
-     AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
--  else
-+  ], [
-      AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
--  fi
-+  ])
- fi
- 
- AC_SUBST(PCRE_LIB)
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd_1.4.39.bb b/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd_1.4.39.bb
deleted file mode 100644
index 378accb..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd_1.4.39.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "Lightweight high-performance web server"
-HOMEPAGE = "http://www.lighttpd.net/"
-BUGTRACKER = "http://redmine.lighttpd.net/projects/lighttpd/issues"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e4dac5c6ab169aa212feb5028853a579"
-
-SECTION = "net"
-DEPENDS = "zlib libpcre"
-RDEPENDS_${PN} += " \
-               lighttpd-module-access \
-               lighttpd-module-accesslog \
-               lighttpd-module-indexfile \
-               lighttpd-module-dirlisting \
-               lighttpd-module-staticfile \
-"
-
-SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.tar.xz \
-        file://index.html.lighttpd \
-        file://lighttpd.conf \
-        file://lighttpd \
-        file://lighttpd.service \
-        file://pkgconfig.patch \
-        "
-
-SRC_URI[md5sum] = "63c7563be1c7a7a9819a51f07f1af8b2"
-SRC_URI[sha256sum] = "7eb9a1853c3d6dd5851682b0733a729ba4158d6bdff80974d5ef5f1f6887365b"
-
-PACKAGECONFIG ??= "openssl"
-PACKAGECONFIG[openssl] = "--with-openssl, --without-openssl, openssl"
-
-EXTRA_OECONF = " \
-             --without-bzip2 \
-             --without-ldap \
-             --without-lua \
-             --without-memcache \
-             --with-pcre \
-             --without-webdav-props \
-             --without-webdav-locks \
-             --disable-static \
-"
-
-inherit autotools pkgconfig update-rc.d gettext systemd
-
-INITSCRIPT_NAME = "lighttpd"
-INITSCRIPT_PARAMS = "defaults 70"
-
-SYSTEMD_SERVICE_${PN} = "lighttpd.service"
-
-do_install_append() {
-	install -d ${D}${sysconfdir}/init.d ${D}${sysconfdir}/lighttpd.d ${D}/www/pages/dav
-	install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
-	install -m 0644 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}
-	install -m 0644 ${WORKDIR}/index.html.lighttpd ${D}/www/pages/index.html
-
-	install -d ${D}${systemd_unitdir}/system
-	install -m 0644 ${WORKDIR}/lighttpd.service ${D}${systemd_unitdir}/system
-	sed -i -e 's,@SBINDIR@,${sbindir},g' \
-		-e 's,@SYSCONFDIR@,${sysconfdir},g' \
-		-e 's,@BASE_BINDIR@,${base_bindir},g' \
-		${D}${systemd_unitdir}/system/lighttpd.service
-	#For FHS compliance, create symbolic links to /var/log and /var/tmp for logs and temporary data
-	ln -sf ${localstatedir}/log ${D}/www/logs
-	ln -sf ${localstatedir}/tmp ${D}/www/var
-}
-
-FILES_${PN} += "${sysconfdir} /www"
-
-CONFFILES_${PN} = "${sysconfdir}/lighttpd.conf"
-
-PACKAGES_DYNAMIC += "^lighttpd-module-.*"
-
-python populate_packages_prepend () {
-    lighttpd_libdir = d.expand('${libdir}')
-    do_split_packages(d, lighttpd_libdir, '^mod_(.*)\.so$', 'lighttpd-module-%s', 'Lighttpd module for %s', extra_depends='')
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd_1.4.41.bb b/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd_1.4.41.bb
new file mode 100644
index 0000000..1a3f323
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/lighttpd/lighttpd_1.4.41.bb
@@ -0,0 +1,79 @@
+SUMMARY = "Lightweight high-performance web server"
+HOMEPAGE = "http://www.lighttpd.net/"
+BUGTRACKER = "http://redmine.lighttpd.net/projects/lighttpd/issues"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e4dac5c6ab169aa212feb5028853a579"
+
+SECTION = "net"
+DEPENDS = "zlib libpcre"
+RDEPENDS_${PN} += " \
+               lighttpd-module-access \
+               lighttpd-module-accesslog \
+               lighttpd-module-indexfile \
+               lighttpd-module-dirlisting \
+               lighttpd-module-staticfile \
+"
+
+SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.tar.xz \
+        file://index.html.lighttpd \
+        file://lighttpd.conf \
+        file://lighttpd \
+        file://lighttpd.service \
+        file://0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch \
+        "
+
+SRC_URI[md5sum] = "1df2e4dbc965cfe6f99f008ac3db4d8d"
+SRC_URI[sha256sum] = "4bcc383ef6d6dc7b284f68882d71a178e2986c83c4e85eeb3c8f3b882e346b6c"
+
+PACKAGECONFIG ??= "openssl \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
+"
+PACKAGECONFIG[openssl] = "--with-openssl, --without-openssl, openssl"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+EXTRA_OECONF = " \
+             --without-bzip2 \
+             --without-ldap \
+             --without-lua \
+             --without-memcached \
+             --with-pcre \
+             --without-webdav-props \
+             --without-webdav-locks \
+             --disable-static \
+"
+
+inherit autotools pkgconfig update-rc.d gettext systemd
+
+INITSCRIPT_NAME = "lighttpd"
+INITSCRIPT_PARAMS = "defaults 70"
+
+SYSTEMD_SERVICE_${PN} = "lighttpd.service"
+
+do_install_append() {
+	install -d ${D}${sysconfdir}/init.d ${D}${sysconfdir}/lighttpd.d ${D}/www/pages/dav
+	install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
+	install -m 0644 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}
+	install -m 0644 ${WORKDIR}/index.html.lighttpd ${D}/www/pages/index.html
+
+	install -d ${D}${systemd_unitdir}/system
+	install -m 0644 ${WORKDIR}/lighttpd.service ${D}${systemd_unitdir}/system
+	sed -i -e 's,@SBINDIR@,${sbindir},g' \
+		-e 's,@SYSCONFDIR@,${sysconfdir},g' \
+		-e 's,@BASE_BINDIR@,${base_bindir},g' \
+		${D}${systemd_unitdir}/system/lighttpd.service
+	#For FHS compliance, create symbolic links to /var/log and /var/tmp for logs and temporary data
+	ln -sf ${localstatedir}/log ${D}/www/logs
+	ln -sf ${localstatedir}/tmp ${D}/www/var
+}
+
+FILES_${PN} += "${sysconfdir} /www"
+
+CONFFILES_${PN} = "${sysconfdir}/lighttpd.conf"
+
+PACKAGES_DYNAMIC += "^lighttpd-module-.*"
+
+python populate_packages_prepend () {
+    lighttpd_libdir = d.expand('${libdir}')
+    do_split_packages(d, lighttpd_libdir, '^mod_(.*)\.so$', 'lighttpd-module-%s', 'Lighttpd module for %s', extra_depends='')
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts/0001-functions-avoid-exit-1-which-causes-init-scripts-to-.patch b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts/0001-functions-avoid-exit-1-which-causes-init-scripts-to-.patch
index 0809c9b..17c9002 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts/0001-functions-avoid-exit-1-which-causes-init-scripts-to-.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts/0001-functions-avoid-exit-1-which-causes-init-scripts-to-.patch
@@ -11,13 +11,14 @@
 index 6850046..11223f7 100644
 --- a/rc.d/init.d/functions
 +++ b/rc.d/init.d/functions
-@@ -597,5 +597,5 @@ if [ "$_use_systemctl" = "1" ]; then
+@@ -597,6 +597,6 @@ if [ "$_use_systemctl" = "1" ]; then
  	fi
  fi
  
 -strstr "$(cat /proc/cmdline)" "rc.debug" && set -x
 +strstr "$(cat /proc/cmdline)" "rc.debug" && set -x || true
- 
+ return 0
+
 -- 
 2.1.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts_9.64.bb b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts_9.64.bb
deleted file mode 100644
index 7273050..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts_9.64.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "SysV init scripts which are only used in an LSB image"
-SECTION = "base"
-LICENSE = "GPLv2"
-DEPENDS = "popt glib-2.0"
-
-RDEPENDS_${PN} += "util-linux"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=ebf4e8b49780ab187d51bd26aaa022c6"
-
-S="${WORKDIR}/initscripts-${PV}"
-SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/initscripts/initscripts-${PV}.tar.bz2/9cce2ae1009750e84be37c09a028757e/initscripts-${PV}.tar.bz2 \
-           file://functions.patch \
-           file://0001-functions-avoid-exit-1-which-causes-init-scripts-to-.patch \
-          " 
-
-SRC_URI[md5sum] = "9cce2ae1009750e84be37c09a028757e"
-SRC_URI[sha256sum] = "48b59ce8157cfc58bbd4b1dfa58ad1087245761ae11c2033b66ae3864ea7e1cf"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "functions"
-ALTERNATIVE_LINK_NAME[functions] = "${sysconfdir}/init.d/functions"
-
-# Since we are only taking the patched version of functions, no need to
-# configure or compile anything so do not execute these
-do_configure[noexec] = "1" 
-do_compile[noexec] = "1" 
-
-do_install(){
-	install -d ${D}${sysconfdir}/init.d/
-	install -m 0644 ${S}/rc.d/init.d/functions ${D}${sysconfdir}/init.d/functions
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts_9.68.bb b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts_9.68.bb
new file mode 100644
index 0000000..0c08fff
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbinitscripts_9.68.bb
@@ -0,0 +1,33 @@
+SUMMARY = "SysV init scripts which are only used in an LSB image"
+SECTION = "base"
+LICENSE = "GPLv2"
+DEPENDS = "popt glib-2.0"
+
+RDEPENDS_${PN} += "util-linux"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=ebf4e8b49780ab187d51bd26aaa022c6"
+
+S="${WORKDIR}/initscripts-${PV}"
+SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/initscripts/initscripts-${PV}.tar.bz2/6a51a5af38e01445f53989ed0727c3e1/initscripts-${PV}.tar.bz2 \
+           file://functions.patch \
+           file://0001-functions-avoid-exit-1-which-causes-init-scripts-to-.patch \
+          " 
+
+SRC_URI[md5sum] = "6a51a5af38e01445f53989ed0727c3e1"
+SRC_URI[sha256sum] = "2a1c6e9dbaa37a676518f4803b501e107c058bb14ef7a8db24c52b77fbcba531"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_${PN} = "functions"
+ALTERNATIVE_LINK_NAME[functions] = "${sysconfdir}/init.d/functions"
+
+# Since we are only taking the patched version of functions, no need to
+# configure or compile anything so do not execute these
+do_configure[noexec] = "1" 
+do_compile[noexec] = "1" 
+
+do_install(){
+	install -d ${D}${sysconfdir}/init.d/
+	install -m 0644 ${S}/rc.d/init.d/functions ${D}${sysconfdir}/init.d/functions
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh
index b9971a1..c31a3eb 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh
+++ b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh
@@ -113,7 +113,7 @@
 #fi
 
 SERVER1="\
-	http://${SERVER_NAME}/pub/lsb/base/${LSB_RELEASE}/binary"
+	http://${SERVER_NAME}/pub/lsb/base/released-all/binary"	
 SERVER2="\
 	http://${SERVER_NAME}/pub/lsb/test_suites/released-all/binary/runtime"
 SERVER3="\
@@ -429,7 +429,6 @@
 /opt/lsb/test/desktop/freetype
 /opt/lsb/test/desktop/gtkvts
 /opt/lsb/test/desktop/libpng
-/opt/lsb/test/desktop/qt3
 /opt/lsb/test/desktop/xft
 /opt/lsb/test/desktop/xml
 /opt/lsb/test/desktop/xrender
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/packages_list b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/packages_list
index 27d8352..959f931 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/packages_list
+++ b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/packages_list
@@ -1,4 +1,4 @@
-LSB_RELEASE="released-4.1.0"
+LSB_RELEASE="released-5.0"
 LSB_ARCH="lsbarch"
 
 BASE_PACKAGES_LIST="lsb-setup-4.1.0-1.noarch.rpm"
@@ -9,36 +9,35 @@
 	lsb-xvfb-1.2.0-22.targetarch.rpm \
 	"
 
-RUNTIME_PACKAGES_LIST="lsb-cmdchk-4.1.4-5.targetarch.rpm \
-	lsb-libchk-4.1.4-5.targetarch.rpm \
-	lsb-qm-2.2-12.lsb4.targetarch.rpm \
-	lsb-task-dist-testkit-4.1.9-1.noarch.rpm \
-	lsb-test-core-4.1.15-1.targetarch.rpm \
-	lsb-test-cpp-t2c-4.1.0-1.targetarch.rpm \
-	lsb-test-desktop-4.1.9-1.targetarch.rpm \
-	lsb-test-desktop-t2c-4.1.3-3.targetarch.rpm \
-	lsb-test-libstdcpp-4.1.0-18.lsb4.targetarch.rpm \
-	lsb-test-olver-core-4.1.4-1.targetarch.rpm \
-	lsb-test-perl-4.1.8-1.noarch.rpm \
-	lsb-test-printing-4.1.2-1.targetarch.rpm \
-	lsb-test-python-4.1.5-1.targetarch.rpm \
-	lsb-test-qt3-azov-4.1.1-3.targetarch.rpm \
-	lsb-test-qt4-azov-4.1.3-1.targetarch.rpm \
-	lsb-test-xts5-5.1.5-45.lsb4.targetarch.rpm \
-	lsb-test-alsa-t2c-4.1.0-1.targetarch.rpm \
-	lsb-test-core-t2c-4.1.2-3.targetarch.rpm \
-	lsb-test-xml2-azov-4.1.0-1.targetarch.rpm \
+RUNTIME_PACKAGES_LIST="lsb-cmdchk-5.0.3-1.targetarch.rpm \
+	lsb-libchk-5.0.3-1.targetarch.rpm \
+	lsb-qm-2.2-1.lsb5.targetarch.rpm \
+	lsb-task-dist-testkit-5.0.0-2.noarch.rpm \
+	lsb-test-core-5.0.1-1.targetarch.rpm \
+	lsb-test-cpp-t2c-5.0.0-1.targetarch.rpm \
+	lsb-test-desktop-5.0.0-1.targetarch.rpm \
+	lsb-test-desktop-t2c-5.0.0-1.targetarch.rpm \
+	lsb-test-libstdcpp-4.1.0-22.lsb1.targetarch.rpm \
+	lsb-test-olver-core-5.0.0-1.targetarch.rpm \
+	lsb-test-perl-5.0.2-1.noarch.rpm \
+	lsb-test-printing-5.0.1-1.targetarch.rpm \
+	lsb-test-python-5.0.0-1.targetarch.rpm \
+	lsb-test-qt4-azov-5.0.0-1.targetarch.rpm \
+	lsb-test-xts5-5.1.5-47.lsb5.targetarch.rpm \
+	lsb-test-alsa-t2c-5.1.91-4.targetarch.rpm \
+	lsb-test-core-t2c-5.0.1-1.targetarch.rpm \
+	lsb-test-xml2-azov-5.0.0-1.targetarch.rpm \
 	"
 
-APP_PACKAGES_LIST="lsb-python-2.4.6-7.lsb4.targetarch.rpm \
-	lsb-apache-2.2.14-8.lsb4.targetarch.rpm \
-	lsb-tcl-8.5.7-8.lsb4.targetarch.rpm \
-	lsb-expect-5.43.0-13.lsb4.targetarch.rpm \
-	lsb-groff-1.20.1-7.lsb4.targetarch.rpm \
-	lsb-raptor-1.4.19-5.lsb4.targetarch.rpm \
-	lsb-xpdf-1.01-14.lsb4.targetarch.rpm \
-	lsb-samba-3.4.3-9.lsb4.targetarch.rpm \
-	lsb-rsync-3.0.6-6.lsb4.targetarch.rpm \
+APP_PACKAGES_LIST="lsb-python-2.4.6-10.lsb5.targetarch.rpm \
+	lsb-apache-2.2.19-5.lsb5.targetarch.rpm \
+	lsb-tcl-8.5.9-21.lsb5.targetarch.rpm \
+	lsb-expect-5.43.0-21.lsb5.targetarch.rpm \
+	lsb-groff-1.20.1-9.lsb5.targetarch.rpm \
+	lsb-raptor-1.4.21-4.lsb5.targetarch.rpm \
+	lsb-xpdf-1.01-17.lsb5.targetarch.rpm \
+	lsb-samba-3.5.9-5.lsb5.targetarch.rpm \
+	lsb-rsync-3.0.8-3.lsb5.targetarch.rpm \
 	"
 
 APP_TESTFILES_LIST="expect-tests.tar \
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/session b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/session
index 85ca2ef..3abcca7 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/session
+++ b/import-layers/yocto-poky/meta/recipes-extended/lsb/lsbtest/session
@@ -126,15 +126,6 @@
 AUTOREPLY_TESTSUITE_DIR: /opt/lsb/test/python
 AUTOREPLY_RESULTS_DIR: /opt/lsb/test/python/results
 
-[qt3-azov]
-RUN: 1
-VERSION: local|*
-
-[qt3-azov|local|*]
-AUTOREPLY_TESTSUITE_DIR: /opt/lsb/test/qt3-azov
-AUTOREPLY_X11_FONT_PATH: [default]
-AUTOREPLY_RESULTS_DIR: /opt/lsb/test/qt3-azov/results
-
 [qt4-azov]
 RUN: 1
 VERSION: local|*
diff --git a/import-layers/yocto-poky/meta/recipes-extended/lsof/lsof_4.89.bb b/import-layers/yocto-poky/meta/recipes-extended/lsof/lsof_4.89.bb
index c10337b..b732cf0 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/lsof/lsof_4.89.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/lsof/lsof_4.89.bb
@@ -47,8 +47,6 @@
 export I = "${STAGING_INCDIR}"
 export L = "${STAGING_INCDIR}"
 
-EXTRA_OEMAKE = ""
-
 do_compile () {
 	oe_runmake 'CC=${CC}' 'CFGL=${LDFLAGS} -L./lib -llsof' 'DEBUG=' 'INCL=${CFLAGS}'
 }
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp/0001-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch b/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp/0001-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch
new file mode 100644
index 0000000..04532be
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp/0001-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch
@@ -0,0 +1,41 @@
+From 672a56be14426eae44864673c6c2afca0ab89d46 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
+Date: Fri, 13 May 2016 11:11:28 -0500
+Subject: [PATCH] testcases/network/nfsv4/acl/acl1.c: Security fix on string
+ printf
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes:
+
+acl1.c: In function 'test_acl_default':
+acl1.c:317:2: error: format not a string literal and no format arguments
+[-Werror=format-security]
+  printf(cmd);
+
+[YOCTO #9548]
+
+Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
+
+Upstream-Status: Pending
+---
+ testcases/network/nfsv4/acl/acl1.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/testcases/network/nfsv4/acl/acl1.c b/testcases/network/nfsv4/acl/acl1.c
+index b8b67b4..7c7c506 100644
+--- a/testcases/network/nfsv4/acl/acl1.c
++++ b/testcases/network/nfsv4/acl/acl1.c
+@@ -314,7 +314,7 @@ void test_acl_default(char *dir, acl_t acl)
+ 	char *cmd = malloc(256);
+ 
+ 	strcpy(cmd, "chmod 7777 ");
+-	printf(cmd);
++	printf(cmd, NULL);
+ 	strcat(cmd, dir);
+ 	system(cmd);
+ 	acl2 = acl_get_file(path, ACL_TYPE_ACCESS);
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp/0002-Add-knob-to-control-whether-numa-support-should-be-c.patch b/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp/0002-Add-knob-to-control-whether-numa-support-should-be-c.patch
index 68725dc..0684bee 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp/0002-Add-knob-to-control-whether-numa-support-should-be-c.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp/0002-Add-knob-to-control-whether-numa-support-should-be-c.patch
@@ -7,7 +7,7 @@
 otherwise undeterministic dependency will be generated
 during build depending upong numa being staged or not
 
-signed-off-by: Roy.Li <rongqing.li@windriver.com>
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  m4/ltp-numa.m4 | 10 +++++++++-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp_20160126.bb b/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp_20160126.bb
index 097c16d..7631e0e 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp_20160126.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/ltp/ltp_20160126.bb
@@ -62,6 +62,7 @@
            file://0033-shmat1-Cover-GNU-specific-code-under-__USE_GNU.patch \
            file://0034-periodic_output.patch \
            file://0035-fix-test_proc_kill-hang.patch \
+           file://0001-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch \
            "
 
 S = "${WORKDIR}/git"
@@ -91,6 +92,14 @@
     install -d ${D}/opt/ltp/
     oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install
 
+    # fixup not deploy STPfailure_report.pl to avoid confusing about it fails to run
+    # as it lacks dependency on some perl moudle such as LWP::Simple
+    # And this script previously works as a tool for analyzing failures from LTP
+    # runs on the OSDL's Scaleable Test Platform (STP) and it mainly accesses
+    # http://khack.osdl.org to retrieve ltp test results run on
+    # OSDL's Scaleable Test Platform, but now http://khack.osdl.org unaccessible
+    rm -rf ${D}/opt/ltp/bin/STPfailure_report.pl
+
     # Copy POSIX test suite into ${D}/opt/ltp/testcases by manual
     cp -r testcases/open_posix_testsuite ${D}/opt/ltp/testcases
 }
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mailx/mailx_12.5-5.bb b/import-layers/yocto-poky/meta/recipes-extended/mailx/mailx_12.5-5.bb
index 4a32d2f..9dd710a 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/mailx/mailx_12.5-5.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/mailx/mailx_12.5-5.bb
@@ -11,7 +11,7 @@
 
 DEPENDS = "openssl"
 
-SRC_URI = "${DEBIAN_MIRROR}/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gz;name=archive \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gz;name=archive \
            file://0001-Don-t-reuse-weak-symbol-optopt-to-fix-FTBFS-on-mips.patch \
            file://0002-Patched-out-SSL2-support-since-it-is-no-longer-suppo.patch \
            file://0003-Fixed-Lintian-warning-warning-macro-N-not-defined.patch \
@@ -28,6 +28,7 @@
 
 # for this package we're mostly interested in tracking debian patches,
 # and not in the upstream version where all development has effectively stopped
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/h/heirloom-mailx/"
 UPSTREAM_CHECK_REGEX = "(?P<pver>((\d+\.*)+)-((\d+\.*)+))\.(diff|debian\.tar)\.(gz|xz)"
 
 S = "${WORKDIR}/heirloom-mailx-12.5"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/man-pages/man-pages_4.04.bb b/import-layers/yocto-poky/meta/recipes-extended/man-pages/man-pages_4.04.bb
deleted file mode 100644
index 65df0aa..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/man-pages/man-pages_4.04.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Linux man-pages"
-DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
-SECTION = "console/utils"
-HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
-LICENSE = "GPLv2+"
-
-LIC_FILES_CHKSUM = "file://README;md5=8f2a3d43057d458e5066714980567a60"
-SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/Archive/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "901cd52e0ee2a9d7508ae1ab15d5e835"
-SRC_URI[sha256sum] = "bff072462baea8d1b8e4568759324c5ed6c760716fe830bca71129cc09e00668"
-
-RDEPENDS_${PN} = "man"
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
-        oe_runmake install DESTDIR=${D}
-}
-
-# Only deliveres man-pages so FILES_${PN} gets everything
-FILES_${PN}-doc = ""
-FILES_${PN} = "${mandir}/*"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "passwd.5 getspnam.3"
-ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
-ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/man-pages/man-pages_4.07.bb b/import-layers/yocto-poky/meta/recipes-extended/man-pages/man-pages_4.07.bb
new file mode 100644
index 0000000..76a3fd8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/man-pages/man-pages_4.07.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Linux man-pages"
+DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
+SECTION = "console/utils"
+HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://README;md5=8f2a3d43057d458e5066714980567a60"
+SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/Archive/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "05ba1cb21e99d02bd7bc1a59378965d2"
+SRC_URI[sha256sum] = "c973351131931f7700f5e9fbf4ef366c43ea7c1515d282e8d5db9c77590c4c93"
+
+RDEPENDS_${PN} = "man"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+        oe_runmake install DESTDIR=${D}
+}
+
+# Only deliveres man-pages so FILES_${PN} gets everything
+FILES_${PN}-doc = ""
+FILES_${PN} = "${mandir}/*"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_${PN} = "passwd.5 getspnam.3"
+ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
+ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mc/mc_4.8.15.bb b/import-layers/yocto-poky/meta/recipes-extended/mc/mc_4.8.15.bb
deleted file mode 100644
index 6c3a16a..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/mc/mc_4.8.15.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Midnight Commander is an ncurses based file manager"
-HOMEPAGE = "http://www.midnight-commander.org/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=270bbafe360e73f9840bd7981621f9c2"
-SECTION = "console/utils"
-DEPENDS = "ncurses glib-2.0 util-linux"
-RDEPENDS_${PN} = "ncurses-terminfo"
-
-SRC_URI = "http://www.midnight-commander.org/downloads/${BPN}-${PV}.tar.bz2 \
-           "
-SRC_URI[md5sum] = "db48ce26ba425a61edc51930e94227fd"
-SRC_URI[sha256sum] = "f74e3da70410975cdeb27ee9a66d1dd812250b6d3ede364bca728dd5a48e5471"
-
-inherit autotools gettext pkgconfig
-
-#
-# Both Samba (smb) and sftp require package delivered from meta-openembedded
-#
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[smb] = "--enable-vfs-smb,--disable-vfs-smb,samba,"
-PACKAGECONFIG[sftp] = "--enable-vfs-sftp,--disable-vfs-sftp,libssh2,"
-
-EXTRA_OECONF = "--with-screen=ncurses --without-gpm-mouse --without-x"
-
-do_install_append () {
-	sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${libexecdir}/mc/extfs.d/*
-	sed -i -e '1s,#!.*python,#!${bindir}/env python,' ${D}${libexecdir}/mc/extfs.d/*
-}
-
-PACKAGES =+ "${BPN}-helpers-perl ${BPN}-helpers-python ${BPN}-helpers ${BPN}-fish"
-
-SUMMARY_${BPN}-helpers-perl = "Midnight Commander Perl-based helper scripts"
-FILES_${BPN}-helpers-perl = "${libexecdir}/mc/extfs.d/a+ ${libexecdir}/mc/extfs.d/apt+ \
-                             ${libexecdir}/mc/extfs.d/deb ${libexecdir}/mc/extfs.d/deba \
-                             ${libexecdir}/mc/extfs.d/debd ${libexecdir}/mc/extfs.d/dpkg+ \
-                             ${libexecdir}/mc/extfs.d/mailfs ${libexecdir}/mc/extfs.d/patchfs \ 
-                             ${libexecdir}/mc/extfs.d/rpms+ ${libexecdir}/mc/extfs.d/ulib \ 
-                             ${libexecdir}/mc/extfs.d/uzip"
-RDEPENDS_${BPN}-helpers-perl = "perl"
-
-SUMMARY_${BPN}-helpers-python = "Midnight Commander Python-based helper scripts"
-FILES_${BPN}-helpers-python = "${libexecdir}/mc/extfs.d/s3+ ${libexecdir}/mc/extfs.d/uc1541"
-RDEPENDS_${BPN}-helpers-python = "python"
-
-SUMMARY_${BPN}-helpers = "Midnight Commander shell helper scripts"
-FILES_${BPN}-helpers = "${libexecdir}/mc/extfs.d/* ${libexecdir}/mc/ext.d/*"
-
-SUMMARY_${BPN}-fish = "Midnight Commander Fish scripts"
-FILES_${BPN}-fish = "${libexecdir}/mc/fish"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mc/mc_4.8.17.bb b/import-layers/yocto-poky/meta/recipes-extended/mc/mc_4.8.17.bb
new file mode 100644
index 0000000..a5c4ece
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/mc/mc_4.8.17.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Midnight Commander is an ncurses based file manager"
+HOMEPAGE = "http://www.midnight-commander.org/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=270bbafe360e73f9840bd7981621f9c2"
+SECTION = "console/utils"
+DEPENDS = "ncurses glib-2.0 util-linux"
+RDEPENDS_${PN} = "ncurses-terminfo"
+
+SRC_URI = "http://www.midnight-commander.org/downloads/${BPN}-${PV}.tar.bz2 \
+           "
+SRC_URI[md5sum] = "6e9c07066e40af06b263a13fad17a07f"
+SRC_URI[sha256sum] = "66d0cb37baaed8ef930f8ad25a634adad4f264eb61820893920ac87b9dfb783b"
+
+inherit autotools gettext pkgconfig
+
+#
+# Both Samba (smb) and sftp require package delivered from meta-openembedded
+#
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[smb] = "--enable-vfs-smb,--disable-vfs-smb,samba,"
+PACKAGECONFIG[sftp] = "--enable-vfs-sftp,--disable-vfs-sftp,libssh2,"
+
+EXTRA_OECONF = "--with-screen=ncurses --without-gpm-mouse --without-x"
+
+do_install_append () {
+	sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${libexecdir}/mc/extfs.d/*
+	sed -i -e '1s,#!.*python,#!${bindir}/env python,' ${D}${libexecdir}/mc/extfs.d/*
+}
+
+PACKAGES =+ "${BPN}-helpers-perl ${BPN}-helpers-python ${BPN}-helpers ${BPN}-fish"
+
+SUMMARY_${BPN}-helpers-perl = "Midnight Commander Perl-based helper scripts"
+FILES_${BPN}-helpers-perl = "${libexecdir}/mc/extfs.d/a+ ${libexecdir}/mc/extfs.d/apt+ \
+                             ${libexecdir}/mc/extfs.d/deb ${libexecdir}/mc/extfs.d/deba \
+                             ${libexecdir}/mc/extfs.d/debd ${libexecdir}/mc/extfs.d/dpkg+ \
+                             ${libexecdir}/mc/extfs.d/mailfs ${libexecdir}/mc/extfs.d/patchfs \ 
+                             ${libexecdir}/mc/extfs.d/rpms+ ${libexecdir}/mc/extfs.d/ulib \ 
+                             ${libexecdir}/mc/extfs.d/uzip"
+RDEPENDS_${BPN}-helpers-perl = "perl"
+
+SUMMARY_${BPN}-helpers-python = "Midnight Commander Python-based helper scripts"
+FILES_${BPN}-helpers-python = "${libexecdir}/mc/extfs.d/s3+ ${libexecdir}/mc/extfs.d/uc1541"
+RDEPENDS_${BPN}-helpers-python = "python"
+
+SUMMARY_${BPN}-helpers = "Midnight Commander shell helper scripts"
+FILES_${BPN}-helpers = "${libexecdir}/mc/extfs.d/* ${libexecdir}/mc/ext.d/*"
+
+SUMMARY_${BPN}-fish = "Midnight Commander Fish scripts"
+FILES_${BPN}-fish = "${libexecdir}/mc/fish"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-Fix-some-type-comparison-problems.patch b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-Fix-some-type-comparison-problems.patch
index ee482b5..f829467 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-Fix-some-type-comparison-problems.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-Fix-some-type-comparison-problems.patch
@@ -11,7 +11,7 @@
 
 Upstream-Status: Backport
 
-Signed-off-by : Xiao Ni <xni@redhat.com>
+Signed-off-by: : Xiao Ni <xni@redhat.com>
 Signed-off-by: Maxin B. John <maxin.john@intel.com>
 ---
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-mdadm.h-Undefine-dprintf-before-redefining.patch b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-mdadm.h-Undefine-dprintf-before-redefining.patch
new file mode 100644
index 0000000..4cf8092
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-mdadm.h-Undefine-dprintf-before-redefining.patch
@@ -0,0 +1,43 @@
+From 6d369e8f226594632ce4260129509daf7030de0a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 9 May 2016 22:03:57 +0000
+Subject: [PATCH] mdadm.h: Undefine dprintf before redefining
+
+dprintf is also defined in libc see
+usr/include/bits/stdio2.h, this comes into
+play especially when fortify sources is enabled
+and compilers like clang reports the override
+
+In file included from policy.c:25:
+./mdadm.h:1562:9: error: 'dprintf' macro redefined [-Werror,-Wmacro-redefined]
+        ^
+/mnt/oe/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/bits/stdio2.h:145:12: note: previous definition is here
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ mdadm.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/mdadm.h b/mdadm.h
+index 230e60f..8c8f4d1 100755
+--- a/mdadm.h
++++ b/mdadm.h
+@@ -1554,11 +1554,13 @@ static inline char *to_subarray(struct mdstat_ent *ent, char *container)
+ }
+ 
+ #ifdef DEBUG
++#undef dprintf
+ #define dprintf(fmt, arg...) \
+ 	fprintf(stderr, "%s: %s: "fmt, Name, __func__, ##arg)
+ #define dprintf_cont(fmt, arg...) \
+ 	fprintf(stderr, fmt, ##arg)
+ #else
++#undef dprintf
+ #define dprintf(fmt, arg...) \
+         ({ if (0) fprintf(stderr, "%s: %s: " fmt, Name, __func__, ##arg); 0; })
+ #define dprintf_cont(fmt, arg...) \
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-raid6check-Fix-if-else-indentation.patch b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-raid6check-Fix-if-else-indentation.patch
new file mode 100644
index 0000000..0b34b84
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/0001-raid6check-Fix-if-else-indentation.patch
@@ -0,0 +1,37 @@
+From 1b0aa1debf6fbe9923c9aac671d2894f76c32f9d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Apr 2016 16:38:13 +0000
+Subject: [PATCH] raid6check: Fix if-else indentation
+
+gcc 6 warns about ambiguity due to this indentation
+| raid6check.c: In function 'manual_repair':
+| raid6check.c:267:4: error: this 'else' clause does not guard... [-Werror=misleading-indentation]
+|     else
+|     ^~~~
+| raid6check.c:269:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'else'
+|      printf("Repairing D(%d) and P\n", failed_data);
+|      ^~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ raid6check.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/raid6check.c b/raid6check.c
+index ad7ffe7..409b1b6 100644
+--- a/raid6check.c
++++ b/raid6check.c
+@@ -266,7 +266,7 @@ int manual_repair(int chunk_size, int syndrome_disks,
+ 				failed_data = failed_slot2;
+ 			else
+ 				failed_data = failed_slot1;
+-				printf("Repairing D(%d) and P\n", failed_data);
++			printf("Repairing D(%d) and P\n", failed_data);
+ 			raid6_datap_recov(syndrome_disks+2, chunk_size,
+ 					  failed_data, (uint8_t**)blocks, 1);
+ 		} else {
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/mdadm-3.2.2_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/mdadm-3.2.2_fix_for_x32.patch
index 40acc14..84c382d 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/mdadm-3.2.2_fix_for_x32.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/mdadm/files/mdadm-3.2.2_fix_for_x32.patch
@@ -6,7 +6,7 @@
 As the bitbake defined CC is good, there is no need to redfine CC in the 
 make file, hence making the CC definition in the Makefile conditional.
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/07
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/07
 
 Index: mdadm-3.3/Makefile
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-extended/mdadm/mdadm_3.4.bb b/import-layers/yocto-poky/meta/recipes-extended/mdadm/mdadm_3.4.bb
index 142dfdd..261054e 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/mdadm/mdadm_3.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/mdadm/mdadm_3.4.bb
@@ -19,7 +19,9 @@
            file://0001-Fix-some-type-comparison-problems.patch \
            file://0001-Fix-the-path-of-corosync-and-dlm-header-files-check.patch \
            file://run-ptest \
-	  "
+           file://0001-raid6check-Fix-if-else-indentation.patch \
+           file://0001-mdadm.h-Undefine-dprintf-before-redefining.patch \
+           "
 SRC_URI[md5sum] = "04b8b21f637540350f8517c7e68d3c63"
 SRC_URI[sha256sum] = "27d0be4627d38a12ddcd1c1c3721d649d4e89e1093914497e22b57245cda8808"
 
@@ -44,8 +46,6 @@
 	autotools_do_install
 }
 
-FILES_${PN} += "${base_libdir}/udev/rules.d/*.rules"
-
 inherit ptest
 
 do_compile_ptest() {
diff --git a/import-layers/yocto-poky/meta/recipes-extended/msmtp/msmtp_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-extended/msmtp/msmtp_1.6.3.bb
deleted file mode 100644
index 6dbd78f..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/msmtp/msmtp_1.6.3.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "msmtp is an SMTP client"
-DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
-HOMEPAGE = "http://msmtp.sourceforge.net/"
-SECTION = "console/network"
-
-LICENSE = "GPLv3"
-DEPENDS = "zlib gnutls"
-
-#COPYING or Licence
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "http://sourceforge.net/projects/msmtp/files/msmtp/${PV}/${BPN}-${PV}.tar.xz \
-          "
-
-SRC_URI[md5sum] = "6d9384c09405db9476beaa2237c56705"
-SRC_URI[sha256sum] = "f982be069c0772c3ee83925f552f5dac5fb307d2d1c68202f9926bb13b757355"
-
-inherit gettext autotools update-alternatives pkgconfig
-
-EXTRA_OECONF += "--without-libsecret --without-libgsasl --without-libidn"
-
-ALTERNATIVE_${PN} = "sendmail"
-ALTERNATIVE_TARGET[sendmail] = "${bindir}/msmtp"
-ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
-ALTERNATIVE_PRIORITY = "100"
-
-pkg_postinst_${PN}_linuxstdbase () {
-	# /usr/lib/sendmial is required by LSB core test
-	[ ! -L $D/usr/lib/sendmail ] && ln -sf ${sbindir}/sendmail $D/usr/lib/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/msmtp/msmtp_1.6.5.bb b/import-layers/yocto-poky/meta/recipes-extended/msmtp/msmtp_1.6.5.bb
new file mode 100644
index 0000000..d0c39eb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/msmtp/msmtp_1.6.5.bb
@@ -0,0 +1,30 @@
+SUMMARY = "msmtp is an SMTP client"
+DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
+HOMEPAGE = "http://msmtp.sourceforge.net/"
+SECTION = "console/network"
+
+LICENSE = "GPLv3"
+DEPENDS = "zlib gnutls"
+
+#COPYING or Licence
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "http://sourceforge.net/projects/msmtp/files/msmtp/${PV}/${BPN}-${PV}.tar.xz \
+          "
+
+SRC_URI[md5sum] = "50a8c9bb72f8222779db6b4aae2965e0"
+SRC_URI[sha256sum] = "76a0d60693c7e65d0c7a12f01d300882d280b1e1be0202f54730ae44d44a5006"
+
+inherit gettext autotools update-alternatives pkgconfig
+
+EXTRA_OECONF += "--without-libsecret --without-libgsasl --without-libidn"
+
+ALTERNATIVE_${PN} = "sendmail"
+ALTERNATIVE_TARGET[sendmail] = "${bindir}/msmtp"
+ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
+ALTERNATIVE_PRIORITY = "100"
+
+pkg_postinst_${PN}_linuxstdbase () {
+	# /usr/lib/sendmial is required by LSB core test
+	[ ! -L $D/usr/lib/sendmail ] && ln -sf ${sbindir}/sendmail $D/usr/lib/
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch b/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch
new file mode 100644
index 0000000..8be45cc
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools/0001-lib-inet6.c-INET6_rresolve-various-fixes.patch
@@ -0,0 +1,87 @@
+From 08abfcd923e9f37d1902db26771b1dc6731eb265 Mon Sep 17 00:00:00 2001
+From: Jiri Popelka <jpopelka@redhat.com>
+Date: Fri, 27 Sep 2013 18:40:06 +0200
+Subject: [PATCH 1/1] lib/inet6.c:INET6_rresolve() - various fixes
+
+1) Fall-back to numeric address if getnameinfo fails.
+   Reverse lookup is not mandatory, therefore its fail
+   is not an error. Just return numeric address in that case.
+   This makes netstat/route show IPv6 address instead of
+   [UNKNOWN] in case of DNS problems.
+
+2) Pass length of 'name' buffer into function.
+   'name' is a pointer and therefore sizeof(name)
+   returns size of pointer and not size of the buffer.
+   see http://stackoverflow.com/questions/14298710/c-pointers-and-arrays-sizeof-operator
+   The sizeof() usage was added with commit 604785adc,
+   so I checked all the other changes in that commit
+   and they seem to be OK.
+
+3) remove unused 's' variable
+
+Upstream-Status: Pending
+
+Signed-off-by: Shan Hai <shan.hai@windriver.com>
+Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
+---
+ lib/inet6.c | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/lib/inet6.c b/lib/inet6.c
+index 9a484a0..2a9c459 100644
+--- a/lib/inet6.c
++++ b/lib/inet6.c
+@@ -84,10 +84,9 @@ static int INET6_resolve(char *name, struct sockaddr_in6 *sin6)
+ #endif
+ 
+ 
+-static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
++static int INET6_rresolve(char *name, size_t namelen,
++			  struct sockaddr_in6 *sin6, int numeric)
+ {
+-    int s;
+-
+     /* Grmpf. -FvK */
+     if (sin6->sin6_family != AF_INET6) {
+ #ifdef DEBUG
+@@ -98,21 +97,20 @@ static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
+ 	return (-1);
+     }
+     if (numeric & 0x7FFF) {
+-	inet_ntop( AF_INET6, &sin6->sin6_addr, name, 80);
++	inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
+ 	return (0);
+     }
+     if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
+         if (numeric & 0x8000)
+-	    strcpy(name, "default");
++	    safe_strncpy(name, "default", namelen);
+ 	else
+-	    strcpy(name, "[::]");
++	    safe_strncpy(name, "[::]", namelen);
+ 	return (0);
+     }
+ 
+-    if ((s = getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
+-			 name, 255 /* !! */ , NULL, 0, 0))) {
+-	fputs("getnameinfo failed\n", stderr);
+-	return -1;
++    if (getnameinfo((struct sockaddr *) sin6, sizeof(struct sockaddr_in6),
++		    name, namelen , NULL, 0, 0)) {
++	inet_ntop( AF_INET6, &sin6->sin6_addr, name, namelen);
+     }
+     return (0);
+ }
+@@ -143,7 +141,8 @@ static char *INET6_sprint(struct sockaddr *sap, int numeric)
+ 
+     if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
+ 	return safe_strncpy(buff, _("[NONE SET]"), sizeof(buff));
+-    if (INET6_rresolve(buff, (struct sockaddr_in6 *) sap, numeric) != 0)
++    if (INET6_rresolve(buff, sizeof(buff),
++		       (struct sockaddr_in6 *) sap, numeric) != 0)
+ 	return safe_strncpy(buff, _("[UNKNOWN]"), sizeof(buff));
+     return (fix_v4_address(buff, &((struct sockaddr_in6 *)sap)->sin6_addr));
+ }
+-- 
+1.8.5.2.233.g932f7e4
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools/net-tools-fix-building-with-linux-4.8.patch b/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools/net-tools-fix-building-with-linux-4.8.patch
new file mode 100644
index 0000000..505eeb0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools/net-tools-fix-building-with-linux-4.8.patch
@@ -0,0 +1,52 @@
+From 4d56645ea144a34f7cdd3e3ede6452d81fbae251 Mon Sep 17 00:00:00 2001
+From: Randy MacLeod <Randy.MacLeod@windriver.com>
+Date: Sat, 8 Oct 2016 14:42:54 +0800
+Subject: [PATCH] iptunnel.c: include linux/ip.h to fix building with linux-4.8
+
+Fix a build error when using the linux-4.8 headers that results in:
+
+In file included from
+.../sysroots/qemuarm64/usr/include/linux/if_tunnel.h:6:0,
+                  from iptunnel.c:39:
+.../qemuarm64/usr/include/linux/ip.h:85:8: error: redefinition of
+'struct iphdr'
+  struct iphdr {
+         ^~~~~
+In file included from iptunnel.c:29:0:
+.../qemuarm64/usr/include/netinet/ip.h:44:8: note: originally defined here
+  struct iphdr
+         ^~~~~
+
+Upstream-Status: Submitted [1]
+
+[1] https://sourceforge.net/p/net-tools/mailman/message/35413022/
+
+Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ iptunnel.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/iptunnel.c b/iptunnel.c
+index 4943d83..acfcbc7 100644
+--- a/iptunnel.c
++++ b/iptunnel.c
+@@ -26,7 +26,6 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <netinet/in.h>
+-#include <netinet/ip.h>
+ #include <arpa/inet.h>
+ #if defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1))
+ #include <net/if.h>
+@@ -36,6 +35,7 @@
+ #include <linux/if_arp.h>
+ #endif
+ #include <linux/types.h>
++#include <linux/ip.h>
+ #include <linux/if_tunnel.h>
+ 
+ #include "config.h"
+-- 
+2.8.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools_1.60-26.bb b/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
index 63b2051..47a68a5 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
@@ -15,6 +15,8 @@
            file://net-tools-1.60-sctp1.patch \
            file://net-tools-1.60-sctp2-quiet.patch \
            file://net-tools-1.60-sctp3-addrs.patch \
+           file://0001-lib-inet6.c-INET6_rresolve-various-fixes.patch \
+           file://net-tools-fix-building-with-linux-4.8.patch \
           "
 
 # for this package we're mostly interested in tracking debian patches,
@@ -99,6 +101,10 @@
 base_bindir_progs  = "dnsdomainname domainname hostname netstat nisdomainname ypdomainname"
 
 ALTERNATIVE_${PN} = "${base_sbindir_progs} ${base_bindir_progs}"
+ALTERNATIVE_${PN}-doc += "hostname.1"
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
+ALTERNATIVE_PRIORITY[hostname.1] = "10"
+
 python __anonymous() {
 	for prog in d.getVar('base_sbindir_progs', True).split():
 		d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir', True), prog))
diff --git a/import-layers/yocto-poky/meta/recipes-extended/newt/files/0001-detect-gold-as-GNU-linker-too.patch b/import-layers/yocto-poky/meta/recipes-extended/newt/files/0001-detect-gold-as-GNU-linker-too.patch
new file mode 100644
index 0000000..a4b3afd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/newt/files/0001-detect-gold-as-GNU-linker-too.patch
@@ -0,0 +1,31 @@
+From 58245b859ffbcb1780575bf1b0a018d55e74e434 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Wed, 21 Sep 2016 21:14:40 +0200
+Subject: [PATCH] detect gold as GNU linker too
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 03e8bda..c2fce51 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -28,7 +28,7 @@ AC_CHECK_SIZEOF([void *])
+ AC_MSG_CHECKING([for GNU ld])
+ LD=`$CC -print-prog-name=ld 2>&5`
+ 
+-if test `$LD -v 2>&1 | $ac_cv_path_GREP -c "GNU ld"` = 0; then
++if test `$LD -v 2>&1 | $ac_cv_path_GREP -c "GNU "` = 0; then
+   # Not
+   GNU_LD=""
+   AC_MSG_RESULT([no])
+-- 
+2.5.5
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/newt/files/remove_slang_include.patch b/import-layers/yocto-poky/meta/recipes-extended/newt/files/remove_slang_include.patch
deleted file mode 100644
index a2634ec..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/newt/files/remove_slang_include.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-Upstream-Status: Pending
-
-Index: git/Makefile.in
-===================================================================
---- git.orig/Makefile.in
-+++ git/Makefile.in
-@@ -5,7 +5,7 @@ CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
- LDFLAGS = @LDFLAGS@
--CPPFLAGS = -D_GNU_SOURCE -I/usr/include/slang @CPPFLAGS@ 
-+CPPFLAGS = -D_GNU_SOURCE @CPPFLAGS@ 
- GNU_LD = @GNU_LD@
- 
- VERSION = @VERSION@
diff --git a/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt-python_0.52.18.bb b/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt-python_0.52.18.bb
deleted file mode 100644
index ba04757..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt-python_0.52.18.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-require recipes-extended/newt/libnewt_${PV}.bb
-
-SUMMARY .= " - python"
-DEPENDS = "libnewt python"
-RDEPENDS_${PN} += "python-core"
-
-inherit pythonnative python-dir
-
-EXTRA_OECONF += "--with-python"
-EXTRA_OEMAKE += "PYTHONVERS=${PYTHON_DIR}"
-
-
-do_compile () {
-	VERSION="$(sed -n 's/^VERSION = //p' Makefile)"
-	oe_runmake _snack.so
-}
-
-do_install () {
-	install -d ${D}${PYTHON_SITEPACKAGES_DIR}
-	install -m 0755 ${PYTHON_DIR}/_snack.so ${D}${PYTHON_SITEPACKAGES_DIR}/
-	install -m 0644 snack.py ${D}${PYTHON_SITEPACKAGES_DIR}/
-}
-
-PACKAGES_remove = "whiptail"
-
-FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt-python_0.52.19.bb b/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt-python_0.52.19.bb
new file mode 100644
index 0000000..20369ef
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt-python_0.52.19.bb
@@ -0,0 +1,28 @@
+require recipes-extended/newt/libnewt_${PV}.bb
+
+SUMMARY .= " - python"
+DEPENDS = "libnewt python3"
+RDEPENDS_${PN} += "python3-core"
+
+inherit python3native python3-dir
+
+EXTRA_OECONF += "--with-python"
+EXTRA_OEMAKE += "PYTHONVERS=${PYTHON_DIR}"
+
+
+do_compile () {
+	VERSION="$(sed -n 's/^VERSION = //p' Makefile)"
+	oe_runmake _snack.so
+}
+
+do_install () {
+	install -d ${D}${PYTHON_SITEPACKAGES_DIR}
+	install -m 0755 ${PYTHON_DIR}/_snack.so ${D}${PYTHON_SITEPACKAGES_DIR}/
+	install -m 0644 snack.py ${D}${PYTHON_SITEPACKAGES_DIR}/
+}
+
+PACKAGES_remove = "whiptail"
+
+FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt_0.52.18.bb b/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt_0.52.18.bb
deleted file mode 100644
index 9a2964b..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt_0.52.18.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-SUMMARY = "A library for text mode user interfaces"
-
-DESCRIPTION = "Newt is a programming library for color text mode, widget based user \
-interfaces.  Newt can be used to add stacked windows, entry widgets, \
-checkboxes, radio buttons, labels, plain text fields, scrollbars, \
-etc., to text mode user interfaces.  This package also contains the \
-shared library needed by programs built with newt, as well as a \
-/usr/bin/dialog replacement called whiptail.  Newt is based on the \
-slang library."
-
-HOMEPAGE = "https://fedorahosted.org/newt/"
-SECTION = "libs"
-
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-# slang needs to be >= 2.2
-DEPENDS = "slang popt"
-
-SRC_URI = "https://fedorahosted.org/releases/n/e/newt/newt-${PV}.tar.gz \
-           file://remove_slang_include.patch \
-           file://fix_SHAREDDIR.patch \
-           file://cross_ar.patch \
-           file://Makefile.in-Add-tinfo-library-to-the-linking-librari.patch \
-           file://pie-flags.patch \
-"
-
-SRC_URI[md5sum] = "685721bee1a318570704b19dcf31d268"
-SRC_URI[sha256sum] = "771b0e634ede56ae6a6acd910728bb5832ac13ddb0d1d27919d2498dab70c91e"
-
-S = "${WORKDIR}/newt-${PV}"
-
-EXTRA_OECONF = "--without-tcl --without-python"
-
-inherit autotools-brokensep
-
-CLEANBROKEN = "1"
-
-export STAGING_INCDIR
-export STAGING_LIBDIR
-export CPPFLAGS
-
-export BUILD_SYS
-export HOST_SYS
-
-PACKAGES_prepend = "whiptail "
-
-do_configure_prepend() {
-    sh autogen.sh
-}
-
-do_compile_prepend() {
-    # Make sure the recompile is OK
-    rm -f ${B}/.depend
-}
-
-FILES_whiptail = "${bindir}/whiptail"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt_0.52.19.bb b/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt_0.52.19.bb
new file mode 100644
index 0000000..a26ce1f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/newt/libnewt_0.52.19.bb
@@ -0,0 +1,54 @@
+SUMMARY = "A library for text mode user interfaces"
+
+DESCRIPTION = "Newt is a programming library for color text mode, widget based user \
+interfaces.  Newt can be used to add stacked windows, entry widgets, \
+checkboxes, radio buttons, labels, plain text fields, scrollbars, \
+etc., to text mode user interfaces.  This package also contains the \
+shared library needed by programs built with newt, as well as a \
+/usr/bin/dialog replacement called whiptail.  Newt is based on the \
+slang library."
+
+HOMEPAGE = "https://fedorahosted.org/newt/"
+SECTION = "libs"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+# slang needs to be >= 2.2
+DEPENDS = "slang popt"
+
+SRC_URI = "https://fedorahosted.org/releases/n/e/newt/newt-${PV}.tar.gz \
+           file://fix_SHAREDDIR.patch \
+           file://cross_ar.patch \
+           file://Makefile.in-Add-tinfo-library-to-the-linking-librari.patch \
+           file://pie-flags.patch \
+           file://0001-detect-gold-as-GNU-linker-too.patch \
+"
+
+SRC_URI[md5sum] = "e4aa0f7943edd39c52481a87f68f412a"
+SRC_URI[sha256sum] = "08c0db56c21996af6a7cbab99491b774c6c09cef91cd9b03903c84634bff2e80"
+
+S = "${WORKDIR}/newt-${PV}"
+
+EXTRA_OECONF = "--without-tcl --without-python"
+
+inherit autotools-brokensep
+
+CLEANBROKEN = "1"
+
+export CPPFLAGS
+
+PACKAGES_prepend = "whiptail "
+
+do_configure_prepend() {
+    sh autogen.sh
+}
+
+do_compile_prepend() {
+    # Make sure the recompile is OK
+    rm -f ${B}/.depend
+}
+
+FILES_whiptail = "${bindir}/whiptail"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb b/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
index 1d7e608..a60a68c 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
@@ -5,7 +5,6 @@
 SUMMARY = "Standard full-featured Linux system"
 DESCRIPTION = "Package group bringing in packages needed for a more traditional full-featured Linux system"
 PR = "r6"
-LICENSE = "MIT"
 
 inherit packagegroup
 
@@ -144,7 +143,6 @@
     cronie \
     dbus \
     dbus-glib \
-    python-dbus \
     elfutils \
     gzip \
     less \
diff --git a/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb b/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
index a29c3d7..29564e0 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
@@ -5,7 +5,6 @@
 SUMMARY = "Linux Standard Base (LSB)"
 DESCRIPTION = "Packages required to satisfy the Linux Standard Base (LSB) specification"
 PR = "r10"
-LICENSE = "MIT"
 
 inherit packagegroup distro_features_check
 
@@ -201,16 +200,6 @@
     python-misc \
 "
 
-def get_libqt3(d):
-    if 'linuxstdbase' in d.getVar('DISTROOVERRIDES', False) or "":
-        if 'qt3' in d.getVar('BBFILE_COLLECTIONS', False) or "":
-            return 'libqt-mt3'
-
-        bb.warn('The meta-qt3 layer should be added, this layer provides Qt 3.x' \
-                'libraries. Its intended use is for passing LSB tests as Qt3 is' \
-                'a requirement for LSB.')
-    return ''
-
 QT4PKGS = " \
     libqtcore4 \
     libqtgui4 \
@@ -229,8 +218,8 @@
         if 'qt4' in d.getVar('BBFILE_COLLECTIONS', False) or "":
             return d.getVar('QT4PKGS', False)
 
-        bb.warn('The meta-qt4 layer should be added, this layer provides Qt 4.x' \
-                'libraries. Its intended use is for passing LSB tests as Qt4 is' \
+        bb.warn('The meta-qt4 layer should be added, this layer provides Qt 4.x ' \
+                'libraries. Its intended use is for passing LSB tests as Qt4 is ' \
                 'a requirement for LSB.')
     return ''
 
@@ -255,7 +244,6 @@
     atk \
     libasound \
     ${@get_libqt4(d)} \
-    ${@get_libqt3(d)} \
 "
 
 RDEPENDS_packagegroup-core-lsb-runtime-add = "\
diff --git a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/crypt_configure.patch b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/crypt_configure.patch
index bec82a5..917a8af 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/crypt_configure.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/crypt_configure.patch
@@ -1,31 +1,40 @@
+From b86575ab4a0df07da160283459da270e1c0372a0 Mon Sep 17 00:00:00 2001
+From: "Maxin B. John" <maxin.john@intel.com>
+Date: Tue, 24 May 2016 14:11:09 +0300
+Subject: [PATCH] crypt_configure
+
 This patch fixes a case where it find crypt defined in libc (musl) but
 not in specified libraries then it ends up assigning
-
 LIBCRYPT="-l" which then goes into makefile cause all sort of problems
 e.g.
 
 ld: cannot find -l-m32
 | collect2: error: ld returned 1 exit status
-
-The reason is that -l appears on commandline with out any library and
-compiler treats the next argument as library name whatever it is.
-
+The reason is that -l appears on commandline with
+out any library and compiler treats the next argument as library name
+whatever it is.
 
 Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
-Index: Linux-PAM-1.1.6/configure.in
-===================================================================
---- Linux-PAM-1.1.6.org/configure.ac
-+++ Linux-PAM-1.1.6/configure.ac
-@@ -400,7 +400,9 @@ AS_IF([test "x$ac_cv_header_xcrypt_h" =
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index df39d07..e68d856 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -401,7 +401,7 @@ AS_IF([test "x$ac_cv_header_xcrypt_h" = "xyes"],
    [crypt_libs="crypt"])
  
  BACKUP_LIBS=$LIBS
--AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="-l$ac_lib", LIBCRYPT="")
-+AC_SEARCH_LIBS([crypt],[$crypt_libs],
-+	       [test "$ac_cv_search_crypt" = "none required" ||
-+		LIBCRYPT="$ac_cv_search_crypt"])
+-AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="${ac_lib:+-l$ac_lib}", LIBCRYPT="")
++AC_SEARCH_LIBS([crypt],[$crypt_libs], [test "$ac_cv_search_crypt" = "none required" || LIBCRYPT="$ac_cv_search_crypt"])
  AC_CHECK_FUNCS(crypt_r crypt_gensalt_r)
  LIBS=$BACKUP_LIBS
  AC_SUBST(LIBCRYPT)
+-- 
+2.4.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/pam-no-innetgr.patch b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/pam-no-innetgr.patch
deleted file mode 100644
index 5e551ac..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/pam-no-innetgr.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-innetgr may not be there so make sure that when innetgr is not present
-then we inform about it and not use it.
-
--Khem
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
-Index: Linux-PAM-1.1.3/modules/pam_group/pam_group.c
-===================================================================
---- Linux-PAM-1.1.3.orig/modules/pam_group/pam_group.c
-+++ Linux-PAM-1.1.3/modules/pam_group/pam_group.c
-@@ -659,7 +659,11 @@ static int check_account(pam_handle_t *p
- 	}
- 	/* If buffer starts with @, we are using netgroups */
- 	if (buffer[0] == '@')
--	  good &= innetgr (&buffer[1], NULL, user, NULL);
-+#ifdef HAVE_INNETGR
-+           good &= innetgr (&buffer[1], NULL, user, NULL);
-+#else
-+           pam_syslog (pamh, LOG_ERR, "pam_group does not have netgroup support");
-+#endif
- 	/* otherwise, if the buffer starts with %, it's a UNIX group */
- 	else if (buffer[0] == '%')
-           good &= pam_modutil_user_in_group_nam_nam(pamh, user, &buffer[1]);
-Index: Linux-PAM-1.1.3/modules/pam_time/pam_time.c
-===================================================================
---- Linux-PAM-1.1.3.orig/modules/pam_time/pam_time.c
-+++ Linux-PAM-1.1.3/modules/pam_time/pam_time.c
-@@ -555,9 +555,13 @@ check_account(pam_handle_t *pamh, const
- 	  }
- 	  /* If buffer starts with @, we are using netgroups */
- 	  if (buffer[0] == '@')
--	    good &= innetgr (&buffer[1], NULL, user, NULL);
-+#ifdef HAVE_INNETGR
-+	       good &= innetgr (&buffer[1], NULL, user, NULL);
-+#else
-+	       pam_syslog (pamh, LOG_ERR, "pam_time does not have netgroup support");
-+#endif
- 	  else
--	    good &= logic_field(pamh, user, buffer, count, is_same);
-+	       good &= logic_field(pamh, user, buffer, count, is_same);
- 	  D(("with user: %s", good ? "passes":"fails" ));
- 
- 	  /* here we get the time field */
-Index: Linux-PAM-1.1.3/modules/pam_succeed_if/pam_succeed_if.c
-===================================================================
---- Linux-PAM-1.1.3.orig/modules/pam_succeed_if/pam_succeed_if.c
-+++ Linux-PAM-1.1.3/modules/pam_succeed_if/pam_succeed_if.c
-@@ -231,18 +231,27 @@ evaluate_notingroup(pam_handle_t *pamh,
- }
- /* Return PAM_SUCCESS if the (host,user) is in the netgroup. */
- static int
--evaluate_innetgr(const char *host, const char *user, const char *group)
-+evaluate_innetgr(const pam_handle_t* pamh, const char *host, const char *user, const char *group)
- {
-+#ifdef HAVE_INNETGR
- 	if (innetgr(group, host, user, NULL) == 1)
- 		return PAM_SUCCESS;
-+#else
-+        pam_syslog (pamh, LOG_ERR, "pam_succeed_if does not have netgroup support");
-+#endif
-+
- 	return PAM_AUTH_ERR;
- }
- /* Return PAM_SUCCESS if the (host,user) is NOT in the netgroup. */
- static int
--evaluate_notinnetgr(const char *host, const char *user, const char *group)
-+evaluate_notinnetgr(const pam_handle_t* pamh, const char *host, const char *user, const char *group)
- {
-+#ifdef HAVE_INNETGR
- 	if (innetgr(group, host, user, NULL) == 0)
- 		return PAM_SUCCESS;
-+#else
-+	pam_syslog (pamh, LOG_ERR, "pam_succeed_if does not have netgroup support");
-+#endif
- 	return PAM_AUTH_ERR;
- }
- 
-@@ -361,14 +370,14 @@ evaluate(pam_handle_t *pamh, int debug,
- 		const void *rhost;
- 		if (pam_get_item(pamh, PAM_RHOST, &rhost) != PAM_SUCCESS)
- 			rhost = NULL;
--		return evaluate_innetgr(rhost, user, right);
-+		return evaluate_innetgr(pamh, rhost, user, right);
- 	}
- 	/* (Rhost, user) is not in this group. */
- 	if (strcasecmp(qual, "notinnetgr") == 0) {
- 		const void *rhost;
- 		if (pam_get_item(pamh, PAM_RHOST, &rhost) != PAM_SUCCESS)
- 			rhost = NULL;
--		return evaluate_notinnetgr(rhost, user, right);
-+		return evaluate_notinnetgr(pamh, rhost, user, right);
- 	}
- 	/* Fail closed. */
- 	return PAM_SERVICE_ERR;
diff --git a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch
index 3241e82..d2cc668 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch
@@ -1,9 +1,11 @@
-From 9bdc197474795f2d000c2bc04f58f7cef8898f21 Mon Sep 17 00:00:00 2001
-From: Amarnath Valluri <amarnath.valluri@intel.com>
-Date: Wed, 15 Jul 2015 13:07:20 +0300
-Subject: [PATCH] Debian patch to add a new 'nullok_secure' option to pam_unix,
- which accepts users with null passwords only when the applicant is connected
- from a tty listed in /etc/securetty.
+From b6545b83f94c5fb7aec1478b8d458a1393f479c8 Mon Sep 17 00:00:00 2001
+From: "Maxin B. John" <maxin.john@intel.com>
+Date: Wed, 25 May 2016 14:12:25 +0300
+Subject: [PATCH] pam_unix: support 'nullok_secure' option
+
+Debian patch to add a new 'nullok_secure' option to pam_unix,
+which accepts users with null passwords only when the applicant is
+connected from a tty listed in /etc/securetty.
 
 Authors: Sam Hartman <hartmans@debian.org>,
          Steve Langasek <vorlon@debian.org>
@@ -11,78 +13,31 @@
 Upstream-Status: Pending
 
 Signed-off-by: Ming Liu <ming.liu@windriver.com>
-
-v2:
-	- Forward ported from v1.1.6 to v1.2.1
-
 Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
 ---
  modules/pam_unix/Makefile.am    |  3 ++-
- modules/pam_unix/README         | 11 ++++++++++-
- modules/pam_unix/pam_unix.8     |  9 ++++++++-
  modules/pam_unix/pam_unix.8.xml | 19 ++++++++++++++++++-
  modules/pam_unix/support.c      | 40 +++++++++++++++++++++++++++++++++++-----
  modules/pam_unix/support.h      |  8 ++++++--
- 6 files changed, 79 insertions(+), 11 deletions(-)
+ 4 files changed, 61 insertions(+), 9 deletions(-)
 
 diff --git a/modules/pam_unix/Makefile.am b/modules/pam_unix/Makefile.am
-index 56ed591..9a372ac 100644
+index 56df178..2bba460 100644
 --- a/modules/pam_unix/Makefile.am
 +++ b/modules/pam_unix/Makefile.am
 @@ -30,7 +30,8 @@ if HAVE_VERSIONING
    pam_unix_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
  endif
  pam_unix_la_LIBADD = $(top_builddir)/libpam/libpam.la \
--	@LIBCRYPT@ @LIBSELINUX@ $(NIS_LIBS)
-+	@LIBCRYPT@ @LIBSELINUX@ $(NIS_LIBS) \
+-	@LIBCRYPT@ @LIBSELINUX@ @TIRPC_LIBS@ @NSL_LIBS@
++	@LIBCRYPT@ @LIBSELINUX@ @TIRPC_LIBS@ @NSL_LIBS@ \
 +	../pam_securetty/tty_secure.lo
  
  securelib_LTLIBRARIES = pam_unix.la
  
-diff --git a/modules/pam_unix/README b/modules/pam_unix/README
-index 3935dba..7880d91 100644
---- a/modules/pam_unix/README
-+++ b/modules/pam_unix/README
-@@ -67,7 +67,16 @@ nullok
- 
-     The default action of this module is to not permit the user access to a
-     service if their official password is blank. The nullok argument overrides
--    this default.
-+    this default and allows any user with a blank password to access the
-+    service.
-+
-+nullok_secure
-+
-+    The default action of this module is to not permit the user access to a
-+    service if their official password is blank. The nullok_secure argument
-+    overrides this default and allows any user with a blank password to access
-+    the service as long as the value of PAM_TTY is set to one of the values
-+    found in /etc/securetty.
- 
- try_first_pass
- 
-diff --git a/modules/pam_unix/pam_unix.8 b/modules/pam_unix/pam_unix.8
-index 339178b..a4bd906 100644
---- a/modules/pam_unix/pam_unix.8
-+++ b/modules/pam_unix/pam_unix.8
-@@ -92,7 +92,14 @@ Turns off informational messages namely messages about session open and close vi
- .RS 4
- The default action of this module is to not permit the user access to a service if their official password is blank\&. The
- \fBnullok\fR
--argument overrides this default\&.
-+argument overrides this default and allows any user with a blank password to access the service\&.
-+.RE
-+.PP
-+\fBnullok_secure\fR
-+.RS 4
-+The default action of this module is to not permit the user access to a service if their official password is blank\&. The
-+\fBnullok_secure\fR
-+argument overrides this default and allows any user with a blank password to access the service as long as the value of PAM_TTY is set to one of the values found in /etc/securetty\&.
- .RE
- .PP
- \fBtry_first_pass\fR
 diff --git a/modules/pam_unix/pam_unix.8.xml b/modules/pam_unix/pam_unix.8.xml
-index a8b64bb..1ced6f4 100644
+index 1b318f1..be0330e 100644
 --- a/modules/pam_unix/pam_unix.8.xml
 +++ b/modules/pam_unix/pam_unix.8.xml
 @@ -159,7 +159,24 @@
@@ -112,10 +67,10 @@
          </listitem>
        </varlistentry>
 diff --git a/modules/pam_unix/support.c b/modules/pam_unix/support.c
-index abccd82..2361957 100644
+index fc8595e..29e3341 100644
 --- a/modules/pam_unix/support.c
 +++ b/modules/pam_unix/support.c
-@@ -189,13 +189,22 @@ int _set_ctrl(pam_handle_t *pamh, int flags, int *remember, int *rounds,
+@@ -183,13 +183,22 @@ int _set_ctrl(pam_handle_t *pamh, int flags, int *remember, int *rounds,
  	/* now parse the arguments to this module */
  
  	for (; argc-- > 0; ++argv) {
@@ -141,7 +96,7 @@
  			}
  		}
  
-@@ -566,6 +575,7 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
+@@ -560,6 +569,7 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
      if (child == 0) {
  	static char *envp[] = { NULL };
  	const char *args[] = { NULL, NULL, NULL, NULL };
@@ -149,7 +104,7 @@
  
  	/* XXX - should really tidy up PAM here too */
  
-@@ -593,7 +603,16 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
+@@ -587,7 +597,16 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
  	/* exec binary helper */
  	args[0] = CHKPWD_HELPER;
  	args[1] = user;
@@ -167,7 +122,7 @@
  	  args[2]="nullok";
  	} else {
  	  args[2]="nonull";
-@@ -678,6 +697,17 @@ _unix_blankpasswd (pam_handle_t *pamh, unsigned int ctrl, const char *name)
+@@ -672,6 +691,17 @@ _unix_blankpasswd (pam_handle_t *pamh, unsigned int ctrl, const char *name)
  	if (on(UNIX__NONULL, ctrl))
  		return 0;	/* will fail but don't let on yet */
  
@@ -185,7 +140,7 @@
  	/* UNIX passwords area */
  
  	retval = get_pwd_hash(pamh, name, &pwd, &salt);
-@@ -764,7 +794,7 @@ int _unix_verify_password(pam_handle_t * pamh, const char *name
+@@ -758,7 +788,7 @@ int _unix_verify_password(pam_handle_t * pamh, const char *name
  			}
  		}
  	} else {
@@ -195,46 +150,46 @@
  
  	if (retval == PAM_SUCCESS) {
 diff --git a/modules/pam_unix/support.h b/modules/pam_unix/support.h
-index 3729ce0..43cdbea 100644
+index b4c279c..8da4a8e 100644
 --- a/modules/pam_unix/support.h
 +++ b/modules/pam_unix/support.h
-@@ -99,8 +99,9 @@ typedef struct {
- #define UNIX_MIN_PASS_LEN        27	/* min length for password */
+@@ -98,8 +98,9 @@ typedef struct {
  #define UNIX_QUIET		 28	/* Don't print informational messages */
- #define UNIX_DES                 29     /* DES, default */
-+#define UNIX_NULLOK_SECURE       30     /* NULL passwords allowed only on secure ttys */
+ #define UNIX_NO_PASS_EXPIRY      29     /* Don't check for password expiration if not used for authentication */
+ #define UNIX_DES                 30     /* DES, default */
++#define UNIX_NULLOK_SECURE       31     /* NULL passwords allowed only on secure ttys */
  /* -------------- */
--#define UNIX_CTRLS_              30	/* number of ctrl arguments defined */
-+#define UNIX_CTRLS_              31	/* number of ctrl arguments defined */
+-#define UNIX_CTRLS_              31	/* number of ctrl arguments defined */
++#define UNIX_CTRLS_              32	/* number of ctrl arguments defined */
  
  #define UNIX_DES_CRYPT(ctrl)	(off(UNIX_MD5_PASS,ctrl)&&off(UNIX_BIGCRYPT,ctrl)&&off(UNIX_SHA256_PASS,ctrl)&&off(UNIX_SHA512_PASS,ctrl)&&off(UNIX_BLOWFISH_PASS,ctrl))
  
-@@ -118,7 +119,7 @@ static const UNIX_Ctrls unix_args[UNIX_CTRLS_] =
- /* UNIX_NOT_SET_PASS */    {"not_set_pass",    _ALL_ON_,                0100, 0},
+@@ -117,7 +118,7 @@ static const UNIX_Ctrls unix_args[UNIX_CTRLS_] =
+ /* UNIX_AUTHTOK_TYPE */    {"authtok_type=",   _ALL_ON_,                0100, 0},
  /* UNIX__PRELIM */         {NULL,              _ALL_ON_^(0600),         0200, 0},
  /* UNIX__UPDATE */         {NULL,              _ALL_ON_^(0600),         0400, 0},
 -/* UNIX__NONULL */         {NULL,              _ALL_ON_,               01000, 0},
-+/* UNIX__NONULL */         {NULL,              _ALL_ON_^(02000000000),   01000, 0},
++/* UNIX__NONULL */         {NULL,              _ALL_ON_^(02000000000), 01000, 0},
  /* UNIX__QUIET */          {NULL,              _ALL_ON_,               02000, 0},
  /* UNIX_USE_AUTHTOK */     {"use_authtok",     _ALL_ON_,               04000, 0},
  /* UNIX_SHADOW */          {"shadow",          _ALL_ON_,              010000, 0},
 @@ -139,6 +140,7 @@ static const UNIX_Ctrls unix_args[UNIX_CTRLS_] =
- /* UNIX_MIN_PASS_LEN */    {"minlen=",		_ALL_ON_,         0400000000, 0},
  /* UNIX_QUIET */           {"quiet",           _ALL_ON_,         01000000000, 0},
+ /* UNIX_NO_PASS_EXPIRY */  {"no_pass_expiry",  _ALL_ON_,         02000000000, 0},
  /* UNIX_DES */             {"des",             _ALL_ON_^(0260420000),      0, 1},
-+/* UNIX_NULLOK_SECURE */   {"nullok_secure",   _ALL_ON_^(01000),  02000000000, 0},
++/* UNIX_NULLOK_SECURE */   {"nullok_secure",   _ALL_ON_^(01000), 02000000000, 0},
  };
  
  #define UNIX_DEFAULTS  (unix_args[UNIX__NONULL].flag)
-@@ -171,6 +173,8 @@ extern int _unix_read_password(pam_handle_t * pamh
- 			,const char *prompt2
+@@ -172,6 +174,8 @@ extern int _unix_read_password(pam_handle_t * pamh
  			,const char *data_name
  			,const void **pass);
-+extern int _pammodutil_tty_secure(const pam_handle_t *pamh,
-+         const char *uttyname);
  
++extern int _pammodutil_tty_secure(const pam_handle_t *pamh, const char *uttyname);
++
  extern int _unix_run_verify_binary(pam_handle_t *pamh,
  			unsigned int ctrl, const char *user, int *daysleft);
+ #endif /* _PAM_UNIX_SUPPORT_H */
 -- 
-2.1.4
+2.4.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam_1.2.1.bb b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam_1.2.1.bb
deleted file mode 100644
index 341ea24..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam_1.2.1.bb
+++ /dev/null
@@ -1,171 +0,0 @@
-SUMMARY = "Linux-PAM (Pluggable Authentication Modules)"
-DESCRIPTION = "Linux-PAM (Pluggable Authentication Modules for Linux), a flexible mechanism for authenticating users"
-HOMEPAGE = "https://fedorahosted.org/linux-pam/"
-BUGTRACKER = "https://fedorahosted.org/linux-pam/newticket"
-SECTION = "base"
-# PAM is dual licensed under GPL and BSD.
-# /etc/pam.d comes from Debian libpam-runtime in 2009-11 (at that time
-# libpam-runtime-1.0.1 is GPLv2+), by openembedded
-LICENSE = "GPLv2+ | BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7eb5c1bf854e8881005d673599ee74d3"
-
-SRC_URI = "http://linux-pam.org/library/Linux-PAM-${PV}.tar.bz2 \
-           file://99_pam \
-           file://pam.d/common-account \
-           file://pam.d/common-auth \
-           file://pam.d/common-password \
-           file://pam.d/common-session \
-           file://pam.d/common-session-noninteractive \
-           file://pam.d/other \
-           file://libpam-xtests.patch \
-           file://fixsepbuild.patch \
-           file://pam-security-abstract-securetty-handling.patch \
-           file://pam-unix-nullok-secure.patch \
-           file://libpam-xtests-remove-bash-dependency.patch \
-           file://crypt_configure.patch \
-          "
-
-SRC_URI[md5sum] = "9dc53067556d2dd567808fd509519dd6"
-SRC_URI[sha256sum] = "342b1211c0d3b203a7df2540a5b03a428a087bd8a48c17e49ae268f992b334d9"
-
-SRC_URI_append_libc-uclibc = " file://pam-no-innetgr.patch \
-                               file://use-utmpx.patch"
-
-SRC_URI_append_libc-musl = " file://pam-no-innetgr.patch \
-                             file://0001-Add-support-for-defining-missing-funcitonality.patch \
-                             file://include_paths_header.patch \
-                           "
-
-DEPENDS = "bison flex flex-native cracklib"
-
-EXTRA_OECONF = "--with-db-uniquename=_pam \
-                --includedir=${includedir}/security \
-                --libdir=${base_libdir} \
-                --disable-nis \
-                --disable-regenerate-docu \
-		--disable-prelude"
-
-CFLAGS_append = " -fPIC "
-
-PR = "r5"
-
-S = "${WORKDIR}/Linux-PAM-${PV}"
-
-inherit autotools gettext pkgconfig
-
-PACKAGECONFIG[audit] = "--enable-audit,--disable-audit,audit,"
-
-PACKAGES += "${PN}-runtime ${PN}-xtests"
-FILES_${PN} = "${base_libdir}/lib*${SOLIBS}"
-FILES_${PN}-dev += "${base_libdir}/security/*.la ${base_libdir}/*.la ${base_libdir}/lib*${SOLIBSDEV}"
-FILES_${PN}-runtime = "${sysconfdir}"
-FILES_${PN}-xtests = "${datadir}/Linux-PAM/xtests"
-
-PACKAGES_DYNAMIC += "^${MLPREFIX}pam-plugin-.*"
-
-def get_multilib_bit(d):
-    baselib = d.getVar('baselib', True) or ''
-    return baselib.replace('lib', '')
-
-libpam_suffix = "suffix${@get_multilib_bit(d)}"
-
-RPROVIDES_${PN} += "${PN}-${libpam_suffix}"
-RPROVIDES_${PN}-runtime += "${PN}-runtime-${libpam_suffix}"
-
-RDEPENDS_${PN}-runtime = "${PN}-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-deny-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-permit-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-warn-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-unix-${libpam_suffix} \
-    "
-RDEPENDS_${PN}-xtests = "${PN}-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-access-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-debug-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-cracklib-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-pwhistory-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-succeed-if-${libpam_suffix} \
-    ${MLPREFIX}pam-plugin-time-${libpam_suffix} \
-    coreutils"
-
-# FIXME: Native suffix breaks here, disable it for now
-RRECOMMENDS_${PN} = "${PN}-runtime-${libpam_suffix}"
-RRECOMMENDS_${PN}_class-native = ""
-
-python populate_packages_prepend () {
-    def pam_plugin_append_file(pn, dir, file):
-        nf = os.path.join(dir, file)
-        of = d.getVar('FILES_' + pn, True)
-        if of:
-            nf = of + " " + nf
-        d.setVar('FILES_' + pn, nf)
-
-    def pam_plugin_hook(file, pkg, pattern, format, basename):
-        pn = d.getVar('PN', True)
-        libpam_suffix = d.getVar('libpam_suffix', True)
-
-        rdeps = d.getVar('RDEPENDS_' + pkg, True)
-        if rdeps:
-            rdeps = rdeps + " " + pn + "-" + libpam_suffix
-        else:
-            rdeps = pn + "-" + libpam_suffix
-        d.setVar('RDEPENDS_' + pkg, rdeps)
-
-        provides = d.getVar('RPROVIDES_' + pkg, True)
-        if provides:
-            provides = provides + " " + pkg + "-" + libpam_suffix
-        else:
-            provides = pkg + "-" + libpam_suffix
-        d.setVar('RPROVIDES_' + pkg, provides)
-
-    mlprefix = d.getVar('MLPREFIX', True) or ''
-    dvar = bb.data.expand('${WORKDIR}/package', d, True)
-    pam_libdir = d.expand('${base_libdir}/security')
-    pam_sbindir = d.expand('${sbindir}')
-    pam_filterdir = d.expand('${base_libdir}/security/pam_filter')
-    pam_pkgname = mlprefix + 'pam-plugin%s'
-
-    do_split_packages(d, pam_libdir, '^pam(.*)\.so$', pam_pkgname,
-                      'PAM plugin for %s', hook=pam_plugin_hook, extra_depends='')
-    pam_plugin_append_file('%spam-plugin-unix' % mlprefix, pam_sbindir, 'unix_chkpwd')
-    pam_plugin_append_file('%spam-plugin-unix' % mlprefix, pam_sbindir, 'unix_update')
-    pam_plugin_append_file('%spam-plugin-tally' % mlprefix, pam_sbindir, 'pam_tally')
-    pam_plugin_append_file('%spam-plugin-tally2' % mlprefix, pam_sbindir, 'pam_tally2')
-    pam_plugin_append_file('%spam-plugin-timestamp' % mlprefix, pam_sbindir, 'pam_timestamp_check')
-    pam_plugin_append_file('%spam-plugin-mkhomedir' % mlprefix, pam_sbindir, 'mkhomedir_helper')
-    pam_plugin_append_file('%spam-plugin-console' % mlprefix, pam_sbindir, 'pam_console_apply')
-    do_split_packages(d, pam_filterdir, '^(.*)$', 'pam-filter-%s', 'PAM filter for %s', extra_depends='')
-}
-
-do_install() {
-	autotools_do_install
-
-	# don't install /var/run when populating rootfs. Do it through volatile
-	rm -rf ${D}${localstatedir}
-	install -d ${D}${sysconfdir}/default/volatiles
-	install -m 0644 ${WORKDIR}/99_pam ${D}${sysconfdir}/default/volatiles
-
-	install -d ${D}${sysconfdir}/pam.d/
-	install -m 0644 ${WORKDIR}/pam.d/* ${D}${sysconfdir}/pam.d/
-
-	# The lsb requires unix_chkpwd has setuid permission
-	chmod 4755 ${D}${sbindir}/unix_chkpwd
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		echo "session optional pam_systemd.so" >> ${D}${sysconfdir}/pam.d/common-session
-	fi
-}
-
-python do_pam_sanity () {
-    if not bb.utils.contains('DISTRO_FEATURES', 'pam', True, False, d):
-        bb.warn("Building libpam but 'pam' isn't in DISTRO_FEATURES, PAM won't work correctly")
-}
-addtask pam_sanity before do_configure
-
-BBCLASSEXTEND = "nativesdk native"
-
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-session"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-auth"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-password"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-session-noninteractive"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-account"
-CONFFILES_${PN}-runtime += "${sysconfdir}/security/limits.conf"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/pam/libpam_1.3.0.bb b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam_1.3.0.bb
new file mode 100644
index 0000000..bb5a4bd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/pam/libpam_1.3.0.bb
@@ -0,0 +1,169 @@
+SUMMARY = "Linux-PAM (Pluggable Authentication Modules)"
+DESCRIPTION = "Linux-PAM (Pluggable Authentication Modules for Linux), a flexible mechanism for authenticating users"
+HOMEPAGE = "https://fedorahosted.org/linux-pam/"
+BUGTRACKER = "https://fedorahosted.org/linux-pam/newticket"
+SECTION = "base"
+# PAM is dual licensed under GPL and BSD.
+# /etc/pam.d comes from Debian libpam-runtime in 2009-11 (at that time
+# libpam-runtime-1.0.1 is GPLv2+), by openembedded
+LICENSE = "GPLv2+ | BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7eb5c1bf854e8881005d673599ee74d3"
+
+SRC_URI = "http://linux-pam.org/library/Linux-PAM-${PV}.tar.bz2 \
+           file://99_pam \
+           file://pam.d/common-account \
+           file://pam.d/common-auth \
+           file://pam.d/common-password \
+           file://pam.d/common-session \
+           file://pam.d/common-session-noninteractive \
+           file://pam.d/other \
+           file://libpam-xtests.patch \
+           file://fixsepbuild.patch \
+           file://pam-security-abstract-securetty-handling.patch \
+           file://pam-unix-nullok-secure.patch \
+           file://libpam-xtests-remove-bash-dependency.patch \
+           file://crypt_configure.patch \
+          "
+
+SRC_URI[md5sum] = "da4b2289b7cfb19583d54e9eaaef1c3a"
+SRC_URI[sha256sum] = "241aed1ef522f66ed672719ecf2205ec513fd0075ed80cda8e086a5b1a01d1bb"
+
+SRC_URI_append_libc-uclibc = " file://use-utmpx.patch"
+
+SRC_URI_append_libc-musl = " file://0001-Add-support-for-defining-missing-funcitonality.patch \
+                             file://include_paths_header.patch \
+                           "
+
+DEPENDS = "bison-native flex flex-native cracklib libxml2-native"
+
+EXTRA_OECONF = "--with-db-uniquename=_pam \
+                --includedir=${includedir}/security \
+                --libdir=${base_libdir} \
+                --disable-nis \
+                --disable-regenerate-docu \
+		--disable-prelude"
+
+CFLAGS_append = " -fPIC "
+
+PR = "r5"
+
+S = "${WORKDIR}/Linux-PAM-${PV}"
+
+inherit autotools gettext pkgconfig
+
+PACKAGECONFIG[audit] = "--enable-audit,--disable-audit,audit,"
+
+PACKAGES += "${PN}-runtime ${PN}-xtests"
+FILES_${PN} = "${base_libdir}/lib*${SOLIBS}"
+FILES_${PN}-dev += "${base_libdir}/security/*.la ${base_libdir}/*.la ${base_libdir}/lib*${SOLIBSDEV}"
+FILES_${PN}-runtime = "${sysconfdir}"
+FILES_${PN}-xtests = "${datadir}/Linux-PAM/xtests"
+
+PACKAGES_DYNAMIC += "^${MLPREFIX}pam-plugin-.*"
+
+def get_multilib_bit(d):
+    baselib = d.getVar('baselib', True) or ''
+    return baselib.replace('lib', '')
+
+libpam_suffix = "suffix${@get_multilib_bit(d)}"
+
+RPROVIDES_${PN} += "${PN}-${libpam_suffix}"
+RPROVIDES_${PN}-runtime += "${PN}-runtime-${libpam_suffix}"
+
+RDEPENDS_${PN}-runtime = "${PN}-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-deny-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-permit-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-warn-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-unix-${libpam_suffix} \
+    "
+RDEPENDS_${PN}-xtests = "${PN}-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-access-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-debug-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-cracklib-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-pwhistory-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-succeed-if-${libpam_suffix} \
+    ${MLPREFIX}pam-plugin-time-${libpam_suffix} \
+    coreutils"
+
+# FIXME: Native suffix breaks here, disable it for now
+RRECOMMENDS_${PN} = "${PN}-runtime-${libpam_suffix}"
+RRECOMMENDS_${PN}_class-native = ""
+
+python populate_packages_prepend () {
+    def pam_plugin_append_file(pn, dir, file):
+        nf = os.path.join(dir, file)
+        of = d.getVar('FILES_' + pn, True)
+        if of:
+            nf = of + " " + nf
+        d.setVar('FILES_' + pn, nf)
+
+    def pam_plugin_hook(file, pkg, pattern, format, basename):
+        pn = d.getVar('PN', True)
+        libpam_suffix = d.getVar('libpam_suffix', True)
+
+        rdeps = d.getVar('RDEPENDS_' + pkg, True)
+        if rdeps:
+            rdeps = rdeps + " " + pn + "-" + libpam_suffix
+        else:
+            rdeps = pn + "-" + libpam_suffix
+        d.setVar('RDEPENDS_' + pkg, rdeps)
+
+        provides = d.getVar('RPROVIDES_' + pkg, True)
+        if provides:
+            provides = provides + " " + pkg + "-" + libpam_suffix
+        else:
+            provides = pkg + "-" + libpam_suffix
+        d.setVar('RPROVIDES_' + pkg, provides)
+
+    mlprefix = d.getVar('MLPREFIX', True) or ''
+    dvar = bb.data.expand('${WORKDIR}/package', d, True)
+    pam_libdir = d.expand('${base_libdir}/security')
+    pam_sbindir = d.expand('${sbindir}')
+    pam_filterdir = d.expand('${base_libdir}/security/pam_filter')
+    pam_pkgname = mlprefix + 'pam-plugin%s'
+
+    do_split_packages(d, pam_libdir, '^pam(.*)\.so$', pam_pkgname,
+                      'PAM plugin for %s', hook=pam_plugin_hook, extra_depends='')
+    pam_plugin_append_file('%spam-plugin-unix' % mlprefix, pam_sbindir, 'unix_chkpwd')
+    pam_plugin_append_file('%spam-plugin-unix' % mlprefix, pam_sbindir, 'unix_update')
+    pam_plugin_append_file('%spam-plugin-tally' % mlprefix, pam_sbindir, 'pam_tally')
+    pam_plugin_append_file('%spam-plugin-tally2' % mlprefix, pam_sbindir, 'pam_tally2')
+    pam_plugin_append_file('%spam-plugin-timestamp' % mlprefix, pam_sbindir, 'pam_timestamp_check')
+    pam_plugin_append_file('%spam-plugin-mkhomedir' % mlprefix, pam_sbindir, 'mkhomedir_helper')
+    pam_plugin_append_file('%spam-plugin-console' % mlprefix, pam_sbindir, 'pam_console_apply')
+    do_split_packages(d, pam_filterdir, '^(.*)$', 'pam-filter-%s', 'PAM filter for %s', extra_depends='')
+}
+
+do_install() {
+	autotools_do_install
+
+	# don't install /var/run when populating rootfs. Do it through volatile
+	rm -rf ${D}${localstatedir}
+	install -d ${D}${sysconfdir}/default/volatiles
+	install -m 0644 ${WORKDIR}/99_pam ${D}${sysconfdir}/default/volatiles
+
+	install -d ${D}${sysconfdir}/pam.d/
+	install -m 0644 ${WORKDIR}/pam.d/* ${D}${sysconfdir}/pam.d/
+
+	# The lsb requires unix_chkpwd has setuid permission
+	chmod 4755 ${D}${sbindir}/unix_chkpwd
+
+	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+		echo "session optional pam_systemd.so" >> ${D}${sysconfdir}/pam.d/common-session
+	fi
+}
+
+python do_pam_sanity () {
+    if not bb.utils.contains('DISTRO_FEATURES', 'pam', True, False, d):
+        bb.warn("Building libpam but 'pam' isn't in DISTRO_FEATURES, PAM won't work correctly")
+}
+addtask pam_sanity before do_configure
+
+BBCLASSEXTEND = "nativesdk native"
+
+CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-session"
+CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-auth"
+CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-password"
+CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-session-noninteractive"
+CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-account"
+CONFFILES_${PN}-runtime += "${sysconfdir}/security/limits.conf"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/pax/pax/pax-3.4_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-extended/pax/pax/pax-3.4_fix_for_x32.patch
index 80878f3..7adbd02 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/pax/pax/pax-3.4_fix_for_x32.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/pax/pax/pax-3.4_fix_for_x32.patch
@@ -9,7 +9,7 @@
     size of off_t to see if file offset is 64bit.  This patch adds
     AC_CHECK_SIZEOF(off_t) and checks SIZEOF_OFF_T == 8.
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/06
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/06
 
 Index: pax-3.4/configure.in
 ===================================================================
diff --git a/import-layers/yocto-poky/meta/recipes-extended/pigz/pigz_2.3.3.bb b/import-layers/yocto-poky/meta/recipes-extended/pigz/pigz_2.3.3.bb
index 080be2b..9e97273 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/pigz/pigz_2.3.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/pigz/pigz_2.3.3.bb
@@ -1,6 +1,8 @@
 require pigz.inc
 LIC_FILES_CHKSUM = "file://pigz.c;beginline=7;endline=21;md5=a21d4075cb00ab4ca17fce5e7534ca95"
 
+UPSTREAM_CHECK_URI := "${SRC_URI}"
+SRC_URI = "http://downloads.yoctoproject.org/mirror/sources/${BP}.tar.gz"
 SRC_URI += "file://link-order.patch"
 
 SRC_URI[md5sum] = "01d7a16cce77929cc1a78aa1bdfb68cb"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/procps/procps_3.3.11.bb b/import-layers/yocto-poky/meta/recipes-extended/procps/procps_3.3.11.bb
deleted file mode 100644
index c6dccc6..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/procps/procps_3.3.11.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "System and process monitoring utilities"
-DESCRIPTION = "Procps contains a set of system utilities that provide system information about processes using \
-the /proc filesystem. The package includes the programs ps, top, vmstat, w, kill, and skill."
-HOMEPAGE = "https://gitorious.org/procps"
-SECTION = "base"
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM="file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                  file://COPYING.LIB;md5=4cf66a4984120007c9881cc871cf49db \
-                 "
-
-DEPENDS = "ncurses"
-
-inherit autotools gettext pkgconfig update-alternatives
-
-SRC_URI = "http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-${PV}.tar.xz \
-           file://sysctl.conf \
-          "
-
-SRC_URI[md5sum] = "6cc5b94c1c5b8cbc89ad345a7b522f74"
-SRC_URI[sha256sum] = "e9493169a2d2adc0bc045538707310c8e877b385e4e296143b62607d2bb044ed"
-
-S = "${WORKDIR}/procps-ng-${PV}"
-
-EXTRA_OECONF = "--enable-skill --disable-modern-top"
-
-CPPFLAGS += "-I${S}"
-
-do_install_append () {
-	install -d ${D}${base_bindir}
-	[ "${bindir}" != "${base_bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i; done
-	install -d ${D}${base_sbindir}
-	[ "${sbindir}" != "${base_sbindir}" ] && for i in ${base_sbindir_progs}; do mv ${D}${sbindir}/$i ${D}${base_sbindir}/$i; done
-        if [ "${base_sbindir}" != "${sbindir}" ]; then
-                rmdir ${D}${sbindir}
-        fi
-
-        install -d ${D}${sysconfdir}
-        install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}/sysctl.conf
-        if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-                install -d ${D}${sysconfdir}/sysctl.d
-                ln -sf ../sysctl.conf ${D}${sysconfdir}/sysctl.d/99-sysctl.conf
-        fi
-}
-
-CONFFILES_${PN} = "${sysconfdir}/sysctl.conf"
-
-bindir_progs = "free pkill pmap pgrep pwdx skill snice top uptime"
-base_bindir_progs += "kill pidof ps watch"
-base_sbindir_progs += "sysctl"
-
-ALTERNATIVE_PRIORITY = "200"
-
-ALTERNATIVE_${PN} = "${bindir_progs} ${base_bindir_progs} ${base_sbindir_progs}"
-
-ALTERNATIVE_${PN}-doc = "kill.1 uptime.1"
-ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
-ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
-
-python __anonymous() {
-    for prog in d.getVar('base_bindir_progs', True).split():
-        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir', True), prog))
-
-    for prog in d.getVar('base_sbindir_progs', True).split():
-        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir', True), prog))
-}
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/procps/procps_3.3.12.bb b/import-layers/yocto-poky/meta/recipes-extended/procps/procps_3.3.12.bb
new file mode 100644
index 0000000..4ca1a50
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/procps/procps_3.3.12.bb
@@ -0,0 +1,66 @@
+SUMMARY = "System and process monitoring utilities"
+DESCRIPTION = "Procps contains a set of system utilities that provide system information about processes using \
+the /proc filesystem. The package includes the programs ps, top, vmstat, w, kill, and skill."
+HOMEPAGE = "https://gitorious.org/procps"
+SECTION = "base"
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM="file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                  file://COPYING.LIB;md5=4cf66a4984120007c9881cc871cf49db \
+                 "
+
+DEPENDS = "ncurses"
+
+inherit autotools gettext pkgconfig update-alternatives
+
+SRC_URI = "http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-${PV}.tar.xz \
+           file://sysctl.conf \
+          "
+
+SRC_URI[md5sum] = "957e42e8b193490b2111252e4a2b443c"
+SRC_URI[sha256sum] = "6ed65ab86318f37904e8f9014415a098bec5bc53653e5d9ab404f95ca5e1a7d4"
+
+S = "${WORKDIR}/procps-ng-${PV}"
+
+EXTRA_OECONF = "--enable-skill --disable-modern-top"
+
+CPPFLAGS += "-I${S}"
+
+do_install_append () {
+	install -d ${D}${base_bindir}
+	[ "${bindir}" != "${base_bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i; done
+	install -d ${D}${base_sbindir}
+	[ "${sbindir}" != "${base_sbindir}" ] && for i in ${base_sbindir_progs}; do mv ${D}${sbindir}/$i ${D}${base_sbindir}/$i; done
+        if [ "${base_sbindir}" != "${sbindir}" ]; then
+                rmdir ${D}${sbindir}
+        fi
+
+        install -d ${D}${sysconfdir}
+        install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}/sysctl.conf
+        if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+                install -d ${D}${sysconfdir}/sysctl.d
+                ln -sf ../sysctl.conf ${D}${sysconfdir}/sysctl.d/99-sysctl.conf
+        fi
+}
+
+CONFFILES_${PN} = "${sysconfdir}/sysctl.conf"
+
+bindir_progs = "free pkill pmap pgrep pwdx skill snice top uptime"
+base_bindir_progs += "kill pidof ps watch"
+base_sbindir_progs += "sysctl"
+
+ALTERNATIVE_PRIORITY = "200"
+
+ALTERNATIVE_${PN} = "${bindir_progs} ${base_bindir_progs} ${base_sbindir_progs}"
+
+ALTERNATIVE_${PN}-doc = "kill.1 uptime.1"
+ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
+ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
+
+python __anonymous() {
+    for prog in d.getVar('base_bindir_progs', True).split():
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir', True), prog))
+
+    for prog in d.getVar('base_sbindir_progs', True).split():
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir', True), prog))
+}
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/psmisc/psmisc.inc b/import-layers/yocto-poky/meta/recipes-extended/psmisc/psmisc.inc
index 68e0656..98a8470 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/psmisc/psmisc.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/psmisc/psmisc.inc
@@ -15,6 +15,9 @@
 
 inherit autotools gettext
 
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
 ALLOW_EMPTY_${PN} = "1"
 
 PACKAGES =+ "fuser fuser-doc killall killall-doc pstree pstree-doc"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0001-Use-NGROUPS_MAX-instead-of-NGROUPS.patch b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0001-Use-NGROUPS_MAX-instead-of-NGROUPS.patch
new file mode 100644
index 0000000..6fb2daf
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0001-Use-NGROUPS_MAX-instead-of-NGROUPS.patch
@@ -0,0 +1,83 @@
+Upstream-Status: Backport
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From feca6d2e55d992bbe176ee8faa734c105eb1b2e1 Mon Sep 17 00:00:00 2001
+From: Theodore Ts'o <tytso@mit.edu>
+Date: Tue, 29 Mar 2016 20:48:05 -0400
+Subject: [PATCH] Use NGROUPS_MAX instead of NGROUPS
+
+NGRROUPS_MAX is what is defined by SuSv3; NGROUPS is not guaranteed by
+any standard, but is just an ancient BSD'ism.  Since Android's bionic
+libc has the former but not the latter, let's use NGROUPS_MAX instead.
+
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Signed-off-by: Jan Kara <jack@suse.cz>
+---
+ quota.c    | 5 +++--
+ quotaops.c | 5 +++--
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/quota.c b/quota.c
+index 049dac4..e195ead 100644
+--- a/quota.c
++++ b/quota.c
+@@ -48,6 +48,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <unistd.h>
++#include <limits.h>
+ #ifdef RPC
+ #include <rpc/rpc.h>
+ #include "rquota.h"
+@@ -296,7 +297,7 @@ static int showquotas(int type, qid_t id, int mntcnt, char **mnt)
+ int main(int argc, char **argv)
+ {
+ 	int ngroups;
+-	gid_t gidset[NGROUPS], *gidsetp;
++	gid_t gidset[NGROUPS_MAX], *gidsetp;
+ 	int i, ret;
+ 	struct option long_opts[] = {
+ 		{ "help", 0, NULL, 'h' },
+@@ -405,7 +406,7 @@ int main(int argc, char **argv)
+ 			ret |= showquotas(USRQUOTA, getuid(), argc, argv);
+ 		if (flags & FL_GROUP) {
+ 			ngroups = sysconf(_SC_NGROUPS_MAX);
+-			if (ngroups > NGROUPS) {
++			if (ngroups > NGROUPS_MAX) {
+ 				gidsetp = malloc(ngroups * sizeof(gid_t));
+ 				if (!gidsetp)
+ 					die(1, _("Gid set allocation (%d): %s\n"), ngroups, strerror(errno));
+diff --git a/quotaops.c b/quotaops.c
+index 136aec3..590dc1b 100644
+--- a/quotaops.c
++++ b/quotaops.c
+@@ -51,6 +51,7 @@
+ #include <unistd.h>
+ #include <time.h>
+ #include <ctype.h>
++#include <limits.h>
+ 
+ #if defined(RPC)
+ #include "rquota.h"
+@@ -97,7 +98,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet)
+ #if defined(BSD_BEHAVIOUR)
+ 	int j, ngroups;
+ 	uid_t euid;
+-	gid_t gidset[NGROUPS], *gidsetp;
++	gid_t gidset[NGROUPS_MAX], *gidsetp;
+ #endif
+ 
+ 	for (i = 0; handles[i]; i++) {
+@@ -115,7 +116,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet)
+ 				if (geteuid() == 0)
+ 					break;
+ 				ngroups = sysconf(_SC_NGROUPS_MAX);
+-				if (ngroups > NGROUPS) {
++				if (ngroups > NGROUPS_MAX) {
+ 					gidsetp = malloc(ngroups * sizeof(gid_t));
+ 					if (!gidsetp) {
+ 						gid2group(id, name);
+-- 
+2.6.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0002-Allow-building-on-systems-that-do-not-have-rpc-heade.patch b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0002-Allow-building-on-systems-that-do-not-have-rpc-heade.patch
new file mode 100644
index 0000000..6cea548
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0002-Allow-building-on-systems-that-do-not-have-rpc-heade.patch
@@ -0,0 +1,153 @@
+Upstream-Status: Backport
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From f30e1ada8326463cc0af048afa058bc2f1dc9370 Mon Sep 17 00:00:00 2001
+From: Theodore Ts'o <tytso@mit.edu>
+Date: Tue, 29 Mar 2016 20:48:04 -0400
+Subject: [PATCH] Allow building on systems that do not have rpc header files
+
+Android's bionic C library doesn't have Sun RPC support.
+
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Signed-off-by: Jan Kara <jack@suse.cz>
+---
+ Makefile.am | 30 ++++++++++++++++--------------
+ quotaops.c  |  2 ++
+ setquota.c  |  2 ++
+ 3 files changed, 20 insertions(+), 14 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 6d7ea0e..82db99f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,5 @@
+ ACLOCAL_AMFLAGS = -I m4
+ 
+-BUILT_SOURCES = rquota.h rquota.c rquota_clnt.c
+-
+ docdir = $(datadir)/doc/@PACKAGE@
+ doc_DATA = \
+ 	README.mailserver \
+@@ -12,11 +10,6 @@ doc_DATA = \
+ 	doc/quotas.preformated \
+ 	doc/quotas-1.eps
+ 
+-rpcsvcdir = $(includedir)/rpcsvc
+-rpcsvc_DATA = \
+-	rquota.h \
+-	rquota.x
+-
+ sysconf_DATA = \
+ 	warnquota.conf \
+ 	quotatab \
+@@ -35,15 +28,12 @@ man_MANS = \
+ 	quota.1 \
+ 	quot.8 \
+ 	repquota.8 \
+-	rpc.rquotad.8 \
+ 	rquota.3 \
+ 	setquota.8 \
+ 	warnquota.conf.5 \
+ 	warnquota.8 \
+ 	xqmstats.8
+ 
+-CLEANFILES = rquota.c rquota.h rquota_clnt.c
+-
+ SUBDIRS = po
+ 
+ EXTRA_DIST = \
+@@ -55,9 +45,15 @@ EXTRA_DIST = \
+ 	Changelog \
+ 	ldap-scripts
+ 
+-noinst_LIBRARIES = \
+-	libquota.a \
+-	librpcclient.a
++noinst_LIBRARIES = libquota.a
++
++if WITH_RPC
++rpcsvcdir = $(includedir)/rpcsvc
++rpcsvc_DATA = \
++	rquota.h \
++	rquota.x
++
++noinst_LIBRARIES += librpcclient.a
+ 
+ librpcclient_a_SOURCES = \
+ 	rquota.c \
+@@ -67,8 +63,10 @@ librpcclient_a_SOURCES = \
+ 	rquota_clnt.c
+ librpcclient_a_CFLAGS = -Wno-unused
+ 
+-if WITH_RPC
+ RPCLIBS = librpcclient.a
++BUILT_SOURCES = rquota.h rquota.c rquota_clnt.c
++CLEANFILES = rquota.c rquota.h rquota_clnt.c
++man_MANS += rpc.rquotad.8
+ endif
+ 
+ libquota_a_SOURCES = \
+@@ -217,6 +215,7 @@ convertquota_LDADD = \
+ 	libquota.a \
+ 	$(RPCLIBS)
+ 
++if WITH_RPC
+ rpc_rquotad_SOURCES = \
+ 	rquota_server.c \
+ 	rquota_svc.c \
+@@ -225,6 +224,7 @@ rpc_rquotad_LDADD = \
+ 	libquota.a \
+ 	$(WRAP_LIBS) \
+ 	$(RPCLIBS)
++endif
+ 
+ quota_nld_SOURCES = quota_nld.c
+ quota_nld_CFLAGS = \
+@@ -236,6 +236,7 @@ quota_nld_LDADD = \
+ 	$(DBUS_LIBS) \
+ 	$(LIBNL3_LIBS)
+ 
++if WITH_RPC
+ # ------------------
+ # Rpcgen conversions
+ # ------------------
+@@ -250,6 +251,7 @@ quota_nld_LDADD = \
+ rquota_clnt.c: rquota.x
+ 	@rm -f $@
+ 	@$(RPCGEN) -l -o $@ $<
++endif
+ 
+ # --------
+ # Quotaoff
+diff --git a/quotaops.c b/quotaops.c
+index 47ef9a7..136aec3 100644
+--- a/quotaops.c
++++ b/quotaops.c
+@@ -34,7 +34,9 @@
+ 
+ #include "config.h"
+ 
++#if defined(RPC)
+ #include <rpc/rpc.h>
++#endif
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/file.h>
+diff --git a/setquota.c b/setquota.c
+index 51d7b3c..8ecd9c3 100644
+--- a/setquota.c
++++ b/setquota.c
+@@ -7,7 +7,9 @@
+ 
+ #include "config.h"
+ 
++#if defined(RPC)
+ #include <rpc/rpc.h>
++#endif
+ #include <sys/types.h>
+ #include <errno.h>
+ #include <stdio.h>
+-- 
+2.6.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0003-Don-t-build-rpc.rquotad-when-disable-rpc-was-request.patch b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0003-Don-t-build-rpc.rquotad-when-disable-rpc-was-request.patch
new file mode 100644
index 0000000..1455384
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0003-Don-t-build-rpc.rquotad-when-disable-rpc-was-request.patch
@@ -0,0 +1,62 @@
+Upstream-Status: Backport
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From c7a76237e7a51a69d0236ebfc191e462f805cf4e Mon Sep 17 00:00:00 2001
+From: Lars Wendler <polynomial-c@gentoo.org>
+Date: Mon, 15 Feb 2016 14:42:14 +0100
+Subject: [PATCH] Don't build rpc.rquotad when --disable-rpc was requested.
+
+This fixes a buch of undefined references:
+
+x86_64-pc-linux-gnu-gcc  -march=native -mtune=native -O2 -pipe -D_GNU_SOURCE -Wa
+ll -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -pie -Wl,-O1 -Wl,--hash-st
+yle=gnu -Wl,--sort-common -Wl,--as-needed -o rpc.rquotad rquota_server.o rquota_
+svc.o svc_socket.o libquota.a
+rquota_svc.o: In function `rquotaprog_2':
+rquota_svc.c:(.text+0x1d3): undefined reference to `xdr_setquota_rslt'
+rquota_svc.c:(.text+0x1da): undefined reference to `xdr_ext_setquota_args'
+rquota_svc.c:(.text+0x2b2): undefined reference to `xdr_setquota_rslt'
+rquota_svc.c:(.text+0x2b9): undefined reference to `xdr_ext_setquota_args'
+rquota_svc.c:(.text+0x2ff): undefined reference to `xdr_getquota_rslt'
+rquota_svc.c:(.text+0x306): undefined reference to `xdr_ext_getquota_args'
+rquota_svc.c:(.text+0x31a): undefined reference to `xdr_getquota_rslt'
+rquota_svc.c:(.text+0x321): undefined reference to `xdr_ext_getquota_args'
+rquota_svc.o: In function `rquotaprog_1':
+rquota_svc.c:(.text+0x3f3): undefined reference to `xdr_setquota_rslt'
+rquota_svc.c:(.text+0x3fa): undefined reference to `xdr_setquota_args'
+rquota_svc.c:(.text+0x4d2): undefined reference to `xdr_setquota_rslt'
+rquota_svc.c:(.text+0x4d9): undefined reference to `xdr_setquota_args'
+rquota_svc.c:(.text+0x51f): undefined reference to `xdr_getquota_rslt'
+rquota_svc.c:(.text+0x526): undefined reference to `xdr_getquota_args'
+rquota_svc.c:(.text+0x53a): undefined reference to `xdr_getquota_rslt'
+rquota_svc.c:(.text+0x541): undefined reference to `xdr_getquota_args'
+collect2: error: ld returned 1 exit status
+Makefile:901: recipe for target 'rpc.rquotad' failed
+
+Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
+Signed-off-by: Jan Kara <jack@suse.cz>
+---
+ Makefile.am | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 77f8400..6d7ea0e 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -116,8 +116,11 @@ sbin_PROGRAMS = \
+ 	xqmstats \
+ 	edquota \
+ 	setquota \
+-	convertquota \
++	convertquota
++if WITH_RPC
++sbin_PROGRAMS += \
+ 	rpc.rquotad
++endif
+ if WITH_NETLINK
+ sbin_PROGRAMS += \
+ 	quota_nld
+-- 
+2.6.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0004-Fix-warnings-due-to-missing-stdlib.h.patch b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0004-Fix-warnings-due-to-missing-stdlib.h.patch
new file mode 100644
index 0000000..bdb4cea
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/0004-Fix-warnings-due-to-missing-stdlib.h.patch
@@ -0,0 +1,46 @@
+Upstream-Status: Backport
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From c4b56ee58b9b76d2598535cf6109a27b22e60abe Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Wed, 30 Mar 2016 10:21:13 +0200
+Subject: [PATCH] Fix warnings due to missing stdlib.h
+
+When compiling without RPC, we do not get stdlib.h automatically
+included via other includes and thus miss some function definitions.
+Include stdlib.h explicitely.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+---
+ quotaops.c | 1 +
+ setquota.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/quotaops.c b/quotaops.c
+index 590dc1b..56cf622 100644
+--- a/quotaops.c
++++ b/quotaops.c
+@@ -52,6 +52,7 @@
+ #include <time.h>
+ #include <ctype.h>
+ #include <limits.h>
++#include <stdlib.h>
+ 
+ #if defined(RPC)
+ #include "rquota.h"
+diff --git a/setquota.c b/setquota.c
+index 8ecd9c3..421631e 100644
+--- a/setquota.c
++++ b/setquota.c
+@@ -17,6 +17,7 @@
+ #include <getopt.h>
+ #include <time.h>
+ #include <ctype.h>
++#include <stdlib.h>
+ 
+ #if defined(RPC)
+ #include "rquota.h"
+-- 
+2.6.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/quota/quota/fcntl.patch b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/fcntl.patch
index 27e60fd..2d37971 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/quota/quota/fcntl.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/quota/quota/fcntl.patch
@@ -59,20 +59,6 @@
  #include <sys/types.h>
  #include "quota_tree.h"
  
-Index: quota-tools/quotaops.c
-===================================================================
---- quota-tools.orig/quotaops.c
-+++ quota-tools/quotaops.c
-@@ -34,7 +34,9 @@
- 
- #include "config.h"
- 
-+#if defined(RPC)
- #include <rpc/rpc.h>
-+#endif
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/file.h>
 Index: quota-tools/rquota_client.c
 ===================================================================
 --- quota-tools.orig/rquota_client.c
@@ -97,17 +83,3 @@
  #include "common.h"
  #include "quotaio.h"
  #include "quotasys.h"
-Index: quota-tools/setquota.c
-===================================================================
---- quota-tools.orig/setquota.c
-+++ quota-tools/setquota.c
-@@ -7,7 +7,9 @@
- 
- #include "config.h"
- 
-+#if defined(RPC)
- #include <rpc/rpc.h>
-+#endif
- #include <sys/types.h>
- #include <errno.h>
- #include <stdio.h>
diff --git a/import-layers/yocto-poky/meta/recipes-extended/quota/quota_4.03.bb b/import-layers/yocto-poky/meta/recipes-extended/quota/quota_4.03.bb
index 4a98046..22aab41 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/quota/quota_4.03.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/quota/quota_4.03.bb
@@ -12,6 +12,10 @@
            file://0001-Do-not-accidentaly-override-commandline-passed-CFLAG.patch \
            file://fcntl.patch \
            file://remove_non_posix_types.patch \
+           file://0001-Use-NGROUPS_MAX-instead-of-NGROUPS.patch \
+           file://0002-Allow-building-on-systems-that-do-not-have-rpc-heade.patch \
+           file://0003-Don-t-build-rpc.rquotad-when-disable-rpc-was-request.patch \
+           file://0004-Fix-warnings-due-to-missing-stdlib.h.patch \
           "
 SRC_URI_append_libc-musl = " file://replace_getrpcbynumber_r.patch"
 
@@ -25,8 +29,8 @@
 
 inherit autotools-brokensep gettext pkgconfig
 
-CFLAGS += "-I${STAGING_INCDIR}/tirpc"
-LDFLAGS += "-ltirpc"
+CFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'rpc', '-I${STAGING_INCDIR}/tirpc', '', d)}"
+LDFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'rpc', '-ltirpc', '', d)}"
 ASNEEDED = ""
 
 PACKAGECONFIG ??= "tcp-wrappers rpc bsd"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/screen/screen/0001-Fix-stack-overflow-due-to-too-deep-recursion.patch b/import-layers/yocto-poky/meta/recipes-extended/screen/screen/0001-Fix-stack-overflow-due-to-too-deep-recursion.patch
deleted file mode 100644
index 4ac820f..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/screen/screen/0001-Fix-stack-overflow-due-to-too-deep-recursion.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-Bug: 45713
-
-How to reproduce:
-Run this command inside screen
-$ printf '\x1b[10000000T'
-
-screen will recursively call MScrollV to depth n/256.
-This is time consuming and will overflow stack if n is huge.
-
-Fixes CVE-2015-6806
-
-Upstream-Status: Backport
-CVE: CVE-2015-6806
-
-Signed-off-by: Kuang-che Wu <kcwu@csie.org>
-Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
-diff -Naur screen-4.3.1-orig/ansi.c screen-4.3.1/ansi.c
---- screen-4.3.1-orig/ansi.c	2015-06-29 00:22:55.000000000 +0300
-+++ screen-4.3.1/ansi.c	2015-10-06 13:13:58.297648039 +0300
-@@ -2502,13 +2502,13 @@
-     return;
-   if (n > 0)
-     {
-+      if (ye - ys + 1 < n)
-+	  n = ye - ys + 1;
-       if (n > 256)
- 	{
- 	  MScrollV(p, n - 256, ys, ye, bce);
- 	  n = 256;
- 	}
--      if (ye - ys + 1 < n)
--	n = ye - ys + 1;
- #ifdef COPY_PASTE
-       if (compacthist)
- 	{
-@@ -2562,15 +2562,15 @@
-     }
-   else
-     {
--      if (n < -256)
--	{
--	  MScrollV(p, n + 256, ys, ye, bce);
--	  n = -256;
--	}
-       n = -n;
-       if (ye - ys + 1 < n)
- 	n = ye - ys + 1;
- 
-+      if (n > 256)
-+      {
-+        MScrollV(p, - (n - 256), ys, ye, bce);
-+        n = 256;
-+      }
-       ml = p->w_mlines + ye;
-       /* Clear lines */
-       for (i = ye; i > ye - n; i--, ml--)
diff --git a/import-layers/yocto-poky/meta/recipes-extended/screen/screen/0001-fix-for-multijob-build.patch b/import-layers/yocto-poky/meta/recipes-extended/screen/screen/0001-fix-for-multijob-build.patch
index 40ecef0..fbdb0eb 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/screen/screen/0001-fix-for-multijob-build.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/screen/screen/0001-fix-for-multijob-build.patch
@@ -1,3 +1,13 @@
+From 79ad2885e26631077dd6b8aebe17ae95b38133a6 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Tue, 26 Jul 2016 14:23:59 +0800
+Subject: [PATCH] fix for multijob build
+
+make sure that comm.sh script generates comm.h header before doing
+anything else
+
+Signed-off-by: Amadeusz Sawiski <amade@asmblr.net>
+
 Upstream-Status: Backport
 
 Backport patch to fix parallel build failure and update context to make patch
@@ -6,25 +16,13 @@
 http://git.savannah.gnu.org/cgit/screen.git/commit?id=c0de6dd
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
 ---
-From c0de6dd7970b2c7b426a5c39dcbc31c2bef87232 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= <amade@asmblr.net>
-Date: Thu, 2 Jan 2014 18:18:06 +0100
-Subject: [PATCH] fix for multijob build
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-make sure that comm.sh script generates comm.h header before doing
-anything else
-
-Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>
----
- Makefile.in | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ Makefile.in | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/Makefile.in b/Makefile.in
-index ce86cbc..dea16d8 100644
+index aca7da3..3607711 100644
 --- a/Makefile.in
 +++ b/Makefile.in
 @@ -298,7 +298,7 @@ search.o: layout.h viewport.h canvas.h search.c config.h screen.h os.h osdef.h a
@@ -51,8 +49,10 @@
   braille.h
 -list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h
 -list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h
--list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h
 +list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h
 +list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h
-+list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h
+ list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h
  
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/screen/screen_4.3.1.bb b/import-layers/yocto-poky/meta/recipes-extended/screen/screen_4.3.1.bb
deleted file mode 100644
index 00d878b..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/screen/screen_4.3.1.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Multiplexing terminal manager"
-DESCRIPTION = "Screen is a full-screen window manager \
-that multiplexes a physical terminal between several \
-processes, typically interactive shells."
-HOMEPAGE = "http://www.gnu.org/software/screen/"
-BUGTRACKER = "https://savannah.gnu.org/bugs/?func=additem&group=screen"
-
-SECTION = "console/utils"
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://screen.h;endline=26;md5=3971142989289a8198a544220703c2bf"
-
-DEPENDS = "ncurses \
-          ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-RDEPENDS_${PN} = "base-files"
-
-SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \
-           file://fix-parallel-make.patch \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://screen.pam', '', d)} \
-           file://Remove-redundant-compiler-sanity-checks.patch \
-           file://Provide-cross-compile-alternatives-for-AC_TRY_RUN.patch \
-           file://Skip-host-file-system-checks-when-cross-compiling.patch \
-           file://Avoid-mis-identifying-systems-as-SVR4.patch \
-           file://0001-fix-for-multijob-build.patch \
-           file://0002-comm.h-now-depends-on-term.h.patch \
-           file://0001-Fix-stack-overflow-due-to-too-deep-recursion.patch \
-          "
-
-SRC_URI[md5sum] = "5bb3b0ff2674e29378c31ad3411170ad"
-SRC_URI[sha256sum] = "fa4049f8aee283de62e283d427f2cfd35d6c369b40f7f45f947dbfd915699d63"
-
-inherit autotools texinfo
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter,"
-
-EXTRA_OECONF = "--with-pty-mode=0620 --with-pty-group=5 \
-               ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}"
-
-do_install_append () {
-	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
-		install -D -m 644 ${WORKDIR}/screen.pam ${D}/${sysconfdir}/pam.d/screen
-	fi
-}
-
-pkg_postinst_${PN} () {
-	grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells
-}
-
-pkg_postrm_${PN} () {
-	printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/screen/screen_4.4.0.bb b/import-layers/yocto-poky/meta/recipes-extended/screen/screen_4.4.0.bb
new file mode 100644
index 0000000..769bac1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/screen/screen_4.4.0.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Multiplexing terminal manager"
+DESCRIPTION = "Screen is a full-screen window manager \
+that multiplexes a physical terminal between several \
+processes, typically interactive shells."
+HOMEPAGE = "http://www.gnu.org/software/screen/"
+BUGTRACKER = "https://savannah.gnu.org/bugs/?func=additem&group=screen"
+
+SECTION = "console/utils"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://screen.h;endline=26;md5=3971142989289a8198a544220703c2bf"
+
+DEPENDS = "ncurses \
+          ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+RDEPENDS_${PN} = "base-files"
+
+SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \
+           file://fix-parallel-make.patch \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://screen.pam', '', d)} \
+           file://Remove-redundant-compiler-sanity-checks.patch \
+           file://Provide-cross-compile-alternatives-for-AC_TRY_RUN.patch \
+           file://Skip-host-file-system-checks-when-cross-compiling.patch \
+           file://Avoid-mis-identifying-systems-as-SVR4.patch \
+           file://0002-comm.h-now-depends-on-term.h.patch \
+           file://0001-fix-for-multijob-build.patch \
+          "
+
+SRC_URI[md5sum] = "d26e11a3648c2b11aaefa215a55dfd39"
+SRC_URI[sha256sum] = "ef722a54759a3bf23aad272bbf33c414c1078cad6bcd982fada93c0d7917218b"
+
+inherit autotools texinfo
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter,"
+
+EXTRA_OECONF = "--with-pty-mode=0620 --with-pty-group=5 \
+               ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}"
+
+do_install_append () {
+	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
+		install -D -m 644 ${WORKDIR}/screen.pam ${D}/${sysconfdir}/pam.d/screen
+	fi
+}
+
+pkg_postinst_${PN} () {
+	grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells
+}
+
+pkg_postrm_${PN} () {
+	printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.1.2/sed-4.1.2_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.1.2/sed-4.1.2_fix_for_automake-1.12.patch
index 8059406..c7c0aa0 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.1.2/sed-4.1.2_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.1.2/sed-4.1.2_fix_for_automake-1.12.patch
@@ -6,7 +6,7 @@
 | make[1]: mkdir_p@: Command not found
 | make[1]: *** [install-data-yes] Error 127
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/07/13
 
 Index: sed-4.1.2/intl/Makefile.in
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch b/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch
index 105e8b7..0293900 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch
@@ -54,7 +54,7 @@
  # dummy targets for $(TESTS) so that make does not complain.
  
 +install-ptest:
-+	cd $(BUILDDIR); tar -cf - $(TESTDIR) --exclude *.o | ( cd $(DESTDIR) && tar -xf - )
++	cd $(BUILDDIR); tar -c --exclude=*.o $(TESTDIR) | ( cd $(DESTDIR) && tar -xf - )
 +	for i in $(EXTRA_DIST) tst-regex2.c; do install $(srcdir)/$$i $(DESTDIR)/$(TESTDIR); done
 +	sed -e 's/^Makefile:/_Makefile:/' -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/bash/sh/' -i $(DESTDIR)/$(TESTDIR)/Makefile
 +	for i in `grep -rl "../sed/sed" $(DESTDIR)/$(TESTDIR)`; do sed -e 's/..\/sed\/sed/sed/' -i $$i; done
diff --git a/import-layers/yocto-poky/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch b/import-layers/yocto-poky/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
new file mode 100644
index 0000000..1af04d5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
@@ -0,0 +1,100 @@
+
+The groupadd from shadow does not allow upper case group names, the
+same is true for the upstream shadow. But distributions like
+Debian/Ubuntu/CentOS has their own way to cope with this problem,
+this patch is picked up from CentOS release 7.0 to relax the usernames
+restrictions to allow the upper case group names, and the relaxation is
+POSIX compliant because POSIX indicate that usernames are composed of 
+characters from the portable filename character set [A-Za-z0-9._-].
+
+Upstream-Status: Pending
+
+Signed-off-by: Shan Hai <shan.hai@windriver.com> 
+
+diff -urpN a/libmisc/chkname.c b/libmisc/chkname.c
+index 5089112..f40a0da 100644
+--- a/libmisc/chkname.c
++++ b/libmisc/chkname.c
+@@ -49,21 +49,28 @@
+ static bool is_valid_name (const char *name)
+ {
+ 	/*
+-	 * User/group names must match [a-z_][a-z0-9_-]*[$]
+-	 */
+-	if (('\0' == *name) ||
+-	    !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
++         * User/group names must match gnu e-regex:
++         *    [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?
++         *
++         * as a non-POSIX, extension, allow "$" as the last char for
++         * sake of Samba 3.x "add machine script"
++         */
++	if ( ('\0' == *name) ||
++             !((*name >= 'a' && *name <= 'z') ||
++               (*name >= 'A' && *name <= 'Z') ||
++               (*name >= '0' && *name <= '9') ||
++               (*name == '_') || (*name == '.') 
++	      )) {
+ 		return false;
+ 	}
+ 
+ 	while ('\0' != *++name) {
+-		if (!(( ('a' <= *name) && ('z' >= *name) ) ||
+-		      ( ('0' <= *name) && ('9' >= *name) ) ||
+-		      ('_' == *name) ||
+-		      ('-' == *name) ||
+-		      ('.' == *name) ||
+-		      ( ('$' == *name) && ('\0' == *(name + 1)) )
+-		     )) {
++                if (!(  (*name >= 'a' && *name <= 'z') ||
++                        (*name >= 'A' && *name <= 'Z') ||
++                        (*name >= '0' && *name <= '9') ||
++                        (*name == '_') || (*name == '.') || (*name == '-') ||
++                        (*name == '$' && *(name + 1) == '\0') 
++                     )) {
+ 			return false;
+ 		}
+ 	}
+diff -urpN a/man/groupadd.8.xml b/man/groupadd.8.xml
+index 230fd0c..94f7807 100644
+--- a/man/groupadd.8.xml
++++ b/man/groupadd.8.xml
+@@ -222,12 +222,6 @@
+    <refsect1 id='caveats'>
+      <title>CAVEATS</title>
+      <para>
+-       Groupnames must start with a lower case letter or an underscore,
+-       followed by lower case letters, digits, underscores, or dashes.
+-       They can end with a dollar sign.
+-       In regular expression terms: [a-z_][a-z0-9_-]*[$]?
+-     </para>
+-     <para>
+        Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long.
+      </para>
+      <para>
+diff -urpN a/man/useradd.8.xml b/man/useradd.8.xml
+index 5dec989..fe623b9 100644
+--- a/man/useradd.8.xml
++++ b/man/useradd.8.xml
+@@ -336,7 +336,7 @@
+ 	</term>
+ 	<listitem>
+ 	  <para>
+-	    Do no create the user's home directory, even if the system
++	    Do not create the user's home directory, even if the system
+ 	    wide setting from <filename>/etc/login.defs</filename>
+ 	    (<option>CREATE_HOME</option>) is set to
+ 	    <replaceable>yes</replaceable>.
+@@ -607,12 +607,6 @@
+     </para>
+ 
+     <para>
+-      Usernames must start with a lower case letter or an underscore,
+-      followed by lower case letters, digits, underscores, or dashes.
+-      They can end with a dollar sign.
+-      In regular expression terms: [a-z_][a-z0-9_-]*[$]?
+-    </para>
+-    <para>
+       Usernames may only be up to 32 characters long.
+     </para>
+   </refsect1>
diff --git a/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow-sysroot_4.2.1.bb b/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow-sysroot_4.2.1.bb
index 697569c..ef01462 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow-sysroot_4.2.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow-sysroot_4.2.1.bb
@@ -21,12 +21,10 @@
 
 do_install() {
 	install -d ${D}${sysconfdir}
-	install -p -m 755 ${S}/login.defs_shadow-sysroot ${D}${sysconfdir}/login.defs
+	install -p -m 644 ${S}/login.defs_shadow-sysroot ${D}${sysconfdir}/login.defs
 }
 
-sysroot_stage_all() {
-	sysroot_stage_dir ${D} ${SYSROOT_DESTDIR}
-}
+SYSROOT_DIRS += "${sysconfdir}"
 
 # don't create any packages
 # otherwise: dbus-dev depends on shadow-sysroot-dev which depends on shadow-sysroot 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow.inc b/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow.inc
index d024b01..35a18f8 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/shadow/shadow.inc
@@ -22,6 +22,7 @@
 SRC_URI_append_class-target = " \
            file://login_defs_pam.sed \
            file://shadow-update-pam-conf.patch \
+           file://shadow-relaxed-usernames.patch \
            "
 
 SRC_URI_append_class-native = " \
@@ -179,10 +180,11 @@
 ALTERNATIVE_LINK_NAME[login] = "${base_bindir}/login"
 ALTERNATIVE_LINK_NAME[su] = "${base_bindir}/su"
 
-ALTERNATIVE_${PN}-doc = "passwd.5 getspnam.3 groups.1"
+ALTERNATIVE_${PN}-doc = "passwd.5 getspnam.3 groups.1 su.1"
 ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
 ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
 ALTERNATIVE_LINK_NAME[groups.1] = "${mandir}/man1/groups.1"
+ALTERNATIVE_LINK_NAME[su.1] = "${mandir}/man1/su.1"
 
 pkg_postinst_${PN} () {
 	if [ "x$D" != "x" ]; then
diff --git a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/change-char-type-to-signed-char-in-macros.patch b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/change-char-type-to-signed-char-in-macros.patch
deleted file mode 100644
index 2ea1ffd..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/change-char-type-to-signed-char-in-macros.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-slang: change char type to signed char in macros
-
-C language has 3 distinct char types:
-         char
-         unsigned char
-         signed char
-A char has the same range of values as signed char on X86,
-but same as unsigned char on ARM which made Slang's typecast()
-and array_sort() unable to work for char value on ARM, since
-Slang is assuming "char" as "signed char".
-
-Now we change "char" as "signed char" explicitly in
-util/mkslarith2.sl, and use it to regenerate src/slarith2.inc
-
-Upstream-Status: Submitted
-Signed-off-by: Roy.Li <rongqing.li@windriver.com>
----
- src/slarith2.inc       |   72 ++++++++++++++++++++++++-------------------------
- src/util/mkslarith2.sl |    2 -
- 2 files changed, 37 insertions(+), 37 deletions(-)
-
---- a/src/util/mkslarith2.sl
-+++ b/src/util/mkslarith2.sl
-@@ -1,7 +1,7 @@
- #!/usr/bin/env slsh
- 
- private variable CTypes =
--  ["char", "unsigned char", "short", "unsigned short", "int", "unsigned int",
-+  ["signed char", "unsigned char", "short", "unsigned short", "int", "unsigned int",
-    "long", "unsigned long", "long long", "unsigned long long",
-    "float", "double", "long double"];
- private variable Is_Int_Type =
---- a/src/slarith2.inc
-+++ b/src/slarith2.inc
-@@ -1,43 +1,43 @@
- /* DO NOT EDIT -- this file was generated by src/util/mkslarith2.sl */
--/* ------------ char ---------- */
--DEFUN_1(copy_char_to_char,char,char)
-+/* ------------ signed char ---------- */
-+DEFUN_1(copy_char_to_char,signed char,signed char)
- #define char_to_char	NULL
- #define copy_char_to_uchar	copy_char_to_char
- #define char_to_uchar	NULL
--DEFUN_1(copy_char_to_short,char,short)
-+DEFUN_1(copy_char_to_short,signed char,short)
- #define char_to_short	NULL
--DEFUN_1(copy_char_to_ushort,char,unsigned short)
-+DEFUN_1(copy_char_to_ushort,signed char,unsigned short)
- #define char_to_ushort	NULL
--DEFUN_1(copy_char_to_int,char,int)
--DEFUN_2(char_to_int,char,int,copy_char_to_int)
--DEFUN_1(copy_char_to_uint,char,unsigned int)
--DEFUN_2(char_to_uint,char,unsigned int,copy_char_to_uint)
--DEFUN_1(copy_char_to_long,char,long)
--DEFUN_2(char_to_long,char,long,copy_char_to_long)
--DEFUN_1(copy_char_to_ulong,char,unsigned long)
--DEFUN_2(char_to_ulong,char,unsigned long,copy_char_to_ulong)
-+DEFUN_1(copy_char_to_int,signed char,int)
-+DEFUN_2(char_to_int,signed char,int,copy_char_to_int)
-+DEFUN_1(copy_char_to_uint,signed char,unsigned int)
-+DEFUN_2(char_to_uint,signed char,unsigned int,copy_char_to_uint)
-+DEFUN_1(copy_char_to_long,signed char,long)
-+DEFUN_2(char_to_long,signed char,long,copy_char_to_long)
-+DEFUN_1(copy_char_to_ulong,signed char,unsigned long)
-+DEFUN_2(char_to_ulong,signed char,unsigned long,copy_char_to_ulong)
- #if defined(HAVE_LONG_LONG)
--DEFUN_1(copy_char_to_llong,char,long long)
--DEFUN_2(char_to_llong,char,long long,copy_char_to_llong)
-+DEFUN_1(copy_char_to_llong,signed char,long long)
-+DEFUN_2(char_to_llong,signed char,long long,copy_char_to_llong)
- #endif /* defined(HAVE_LONG_LONG) */
- #if defined(HAVE_LONG_LONG)
--DEFUN_1(copy_char_to_ullong,char,unsigned long long)
--DEFUN_2(char_to_ullong,char,unsigned long long,copy_char_to_ullong)
-+DEFUN_1(copy_char_to_ullong,signed char,unsigned long long)
-+DEFUN_2(char_to_ullong,signed char,unsigned long long,copy_char_to_ullong)
- #endif /* defined(HAVE_LONG_LONG) */
- #if SLANG_HAS_FLOAT
--DEFUN_1(copy_char_to_float,char,float)
--DEFUN_2(char_to_float,char,float,copy_char_to_float)
-+DEFUN_1(copy_char_to_float,signed char,float)
-+DEFUN_2(char_to_float,signed char,float,copy_char_to_float)
- #endif /* SLANG_HAS_FLOAT */
- #if SLANG_HAS_FLOAT
--DEFUN_1(copy_char_to_double,char,double)
--DEFUN_2(char_to_double,char,double,copy_char_to_double)
-+DEFUN_1(copy_char_to_double,signed char,double)
-+DEFUN_2(char_to_double,signed char,double,copy_char_to_double)
- #endif /* SLANG_HAS_FLOAT */
- #if defined(HAVE_LONG_DOUBLE)
--DEFUN_1(copy_char_to_ldouble,char,long double)
--DEFUN_2(char_to_ldouble,char,long double,copy_char_to_ldouble)
-+DEFUN_1(copy_char_to_ldouble,signed char,long double)
-+DEFUN_2(char_to_ldouble,signed char,long double,copy_char_to_ldouble)
- #endif /* defined(HAVE_LONG_DOUBLE) */
- #if SLANG_HAS_FLOAT
--TO_DOUBLE_FUN(char_to_one_double,char)
-+TO_DOUBLE_FUN(char_to_one_double,signed char)
- #endif
- 
- /* ------------ unsigned char ---------- */
-@@ -82,7 +82,7 @@ TO_DOUBLE_FUN(uchar_to_one_double,unsign
- #endif
- 
- /* ------------ short ---------- */
--DEFUN_1(copy_short_to_char,short,char)
-+DEFUN_1(copy_short_to_char,short,signed char)
- #define short_to_char	NULL
- DEFUN_1(copy_short_to_uchar,short,unsigned char)
- #define short_to_uchar	NULL
-@@ -123,7 +123,7 @@ TO_DOUBLE_FUN(short_to_one_double,short)
- #endif
- 
- /* ------------ unsigned short ---------- */
--DEFUN_1(copy_ushort_to_char,unsigned short,char)
-+DEFUN_1(copy_ushort_to_char,unsigned short,signed char)
- #define ushort_to_char	NULL
- DEFUN_1(copy_ushort_to_uchar,unsigned short,unsigned char)
- #define ushort_to_uchar	NULL
-@@ -164,7 +164,7 @@ TO_DOUBLE_FUN(ushort_to_one_double,unsig
- #endif
- 
- /* ------------ int ---------- */
--DEFUN_1(copy_int_to_char,int,char)
-+DEFUN_1(copy_int_to_char,int,signed char)
- #define int_to_char	NULL
- DEFUN_1(copy_int_to_uchar,int,unsigned char)
- #define int_to_uchar	NULL
-@@ -205,7 +205,7 @@ TO_DOUBLE_FUN(int_to_one_double,int)
- #endif
- 
- /* ------------ unsigned int ---------- */
--DEFUN_1(copy_uint_to_char,unsigned int,char)
-+DEFUN_1(copy_uint_to_char,unsigned int,signed char)
- #define uint_to_char	NULL
- DEFUN_1(copy_uint_to_uchar,unsigned int,unsigned char)
- #define uint_to_uchar	NULL
-@@ -246,7 +246,7 @@ TO_DOUBLE_FUN(uint_to_one_double,unsigne
- #endif
- 
- /* ------------ long ---------- */
--DEFUN_1(copy_long_to_char,long,char)
-+DEFUN_1(copy_long_to_char,long,signed char)
- #define long_to_char	NULL
- DEFUN_1(copy_long_to_uchar,long,unsigned char)
- #define long_to_uchar	NULL
-@@ -287,7 +287,7 @@ TO_DOUBLE_FUN(long_to_one_double,long)
- #endif
- 
- /* ------------ unsigned long ---------- */
--DEFUN_1(copy_ulong_to_char,unsigned long,char)
-+DEFUN_1(copy_ulong_to_char,unsigned long,signed char)
- #define ulong_to_char	NULL
- DEFUN_1(copy_ulong_to_uchar,unsigned long,unsigned char)
- #define ulong_to_uchar	NULL
-@@ -329,7 +329,7 @@ TO_DOUBLE_FUN(ulong_to_one_double,unsign
- 
- /* ------------ long long ---------- */
- #if defined(HAVE_LONG_LONG)
--DEFUN_1(copy_llong_to_char,long long,char)
-+DEFUN_1(copy_llong_to_char,long long,signed char)
- #define llong_to_char	NULL
- DEFUN_1(copy_llong_to_uchar,long long,unsigned char)
- #define llong_to_uchar	NULL
-@@ -372,7 +372,7 @@ TO_DOUBLE_FUN(llong_to_one_double,long l
- 
- /* ------------ unsigned long long ---------- */
- #if defined(HAVE_LONG_LONG)
--DEFUN_1(copy_ullong_to_char,unsigned long long,char)
-+DEFUN_1(copy_ullong_to_char,unsigned long long,signed char)
- #define ullong_to_char	NULL
- DEFUN_1(copy_ullong_to_uchar,unsigned long long,unsigned char)
- #define ullong_to_uchar	NULL
-@@ -415,7 +415,7 @@ TO_DOUBLE_FUN(ullong_to_one_double,unsig
- 
- /* ------------ float ---------- */
- #if SLANG_HAS_FLOAT
--DEFUN_1(copy_float_to_char,float,char)
-+DEFUN_1(copy_float_to_char,float,signed char)
- #define float_to_char	NULL
- DEFUN_1(copy_float_to_uchar,float,unsigned char)
- #define float_to_uchar	NULL
-@@ -458,7 +458,7 @@ TO_DOUBLE_FUN(float_to_one_double,float)
- 
- /* ------------ double ---------- */
- #if SLANG_HAS_FLOAT
--DEFUN_1(copy_double_to_char,double,char)
-+DEFUN_1(copy_double_to_char,double,signed char)
- #define double_to_char	NULL
- DEFUN_1(copy_double_to_uchar,double,unsigned char)
- #define double_to_uchar	NULL
-@@ -501,7 +501,7 @@ TO_DOUBLE_FUN(double_to_one_double,doubl
- 
- /* ------------ long double ---------- */
- #if defined(HAVE_LONG_DOUBLE)
--DEFUN_1(copy_ldouble_to_char,long double,char)
-+DEFUN_1(copy_ldouble_to_char,long double,signed char)
- #define ldouble_to_char	NULL
- DEFUN_1(copy_ldouble_to_uchar,long double,unsigned char)
- #define ldouble_to_uchar	NULL
-@@ -545,7 +545,7 @@ TO_DOUBLE_FUN(ldouble_to_one_double,long
- #if SLANG_HAS_FLOAT
- static To_Double_Fun_Table_Type To_Double_Fun_Table [MAX_ARITHMETIC_TYPES] =
- {
--   {sizeof(char), char_to_one_double},
-+   {sizeof(signed char), char_to_one_double},
-    {sizeof(unsigned char), uchar_to_one_double},
-    {sizeof(short), short_to_one_double},
-    {sizeof(unsigned short), ushort_to_one_double},
-@@ -583,7 +583,7 @@ static To_Double_Fun_Table_Type To_Doubl
- 
- static Binary_Matrix_Type Binary_Matrix [MAX_ARITHMETIC_TYPES][MAX_ARITHMETIC_TYPES] =
- {
--   /* char */
-+   /* signed char */
-    {
-      {(FVOID_STAR)copy_char_to_char, char_to_char},
-      {(FVOID_STAR)copy_char_to_uchar, char_to_uchar},
diff --git a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/fix-check-pcre.patch b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/fix-check-pcre.patch
index 0c1553a..a0ec0ff 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/fix-check-pcre.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/fix-check-pcre.patch
@@ -11,14 +11,13 @@
 Upstream-Status: Inappropriate
 Signed-off-by: Roy.Li <rongqing.li@windriver.com>
 ---
- configure |   60 ++++++------------------------------------------------------
- 1 files changed, 6 insertions(+), 54 deletions(-)
+ configure |   72 +++++---------------------------------------------------------
+ 1 file changed, 6 insertions(+), 66 deletions(-)
 
 diff --git a/configure b/configure
-index f1586c3..d22814f 100755
 --- a/configure
 +++ b/configure
-@@ -6991,6 +6991,7 @@ $as_echo_n "checking for the pcre library and header files ... " >&6; }
+@@ -7191,6 +7191,7 @@ $as_echo_n "checking for the pcre library and header files ... " >&6; }
  	 /usr/include/pcre,/usr/lib \
  	 /usr/pcre/include,/usr/pcre/lib \
  	 /usr/include,/usr/lib \
@@ -26,7 +25,7 @@
  	 /opt/include/pcre,/opt/lib \
  	 /opt/pcre/include,/opt/pcre/lib \
  	 /opt/include,/opt/lib"
-@@ -7021,14 +7022,14 @@ $as_echo_n "checking for the pcre library and header files ... " >&6; }
+@@ -7221,14 +7222,14 @@ $as_echo_n "checking for the pcre library and header files ... " >&6; }
          xincdir=`echo $include_and_lib | tr ',' ' ' | awk '{print $1}'`
  	xlibdir=`echo $include_and_lib | tr ',' ' ' | awk '{print $2}'`
  	found=0
@@ -45,7 +44,7 @@
  	      jd_with_pcre_library="yes"
  	      found=1
  	      break
-@@ -7054,56 +7055,7 @@ $as_echo "yes: $jd_pcre_library_dir and $jd_pcre_include_dir" >&6; }
+@@ -7255,68 +7255,7 @@ $as_echo "yes: $jd_pcre_library_dir and $jd_pcre_include_dir" >&6; }
      then
        PCRE_LIB=""
      else
@@ -74,7 +73,7 @@
 -      fi
 -    fi
 -  ;;
--  *osf*|*openbsd*)
+-  *osf*|*openbsd*|*freebsd*)
 -    if test "X$GCC" = Xyes
 -    then
 -      RPATH="-Wl,-rpath,"
@@ -95,7 +94,19 @@
 -      RPATH="$RPATH$jd_pcre_library_dir"
 -    fi
 -  else
--    RPATH="$RPATH:$jd_pcre_library_dir"
+-    _already_there=0
+-    for X in `echo $RPATH | sed 's/:/ /g'`
+-    do
+-      if test "$X" = "$jd_pcre_library_dir"
+-      then
+-        _already_there=1
+-	break
+-      fi
+-    done
+-    if test $_already_there = 0
+-    then
+-      RPATH="$RPATH:$jd_pcre_library_dir"
+-    fi
 -  fi
 -fi
 -
@@ -103,6 +114,3 @@
      fi
  
      PCRE_INC=-I$jd_pcre_include_dir
--- 
-1.7.4.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/rpathfix.patch b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/rpathfix.patch
index 50cac92..f82a531 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/rpathfix.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/rpathfix.patch
@@ -10,7 +10,7 @@
 ===================================================================
 --- slang-2.2.4.orig/configure	2012-03-14 23:40:01.283560679 +0000
 +++ slang-2.2.4/configure	2012-03-14 23:41:18.023558900 +0000
-@@ -6081,56 +6081,7 @@
+@@ -6246,68 +6246,7 @@ esac
  ELF_CFLAGS="$ELF_CFLAGS $IEEE_CFLAGS"
  CFLAGS="$CFLAGS $IEEE_CFLAGS"
  
@@ -39,7 +39,7 @@
 -      fi
 -    fi
 -  ;;
--  *osf*|*openbsd*)
+-  *osf*|*openbsd*|*freebsd*)
 -    if test "X$GCC" = Xyes
 -    then
 -      RPATH="-Wl,-rpath,"
@@ -60,7 +60,19 @@
 -      RPATH="$RPATH$libdir"
 -    fi
 -  else
--    RPATH="$RPATH:$libdir"
+-    _already_there=0
+-    for X in `echo $RPATH | sed 's/:/ /g'`
+-    do
+-      if test "$X" = "$libdir"
+-      then
+-        _already_there=1
+-	break
+-      fi
+-    done
+-    if test $_already_there = 0
+-    then
+-      RPATH="$RPATH:$libdir"
+-    fi
 -  fi
 -fi
 -
diff --git a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/slang-fix-the-iconv-existence-checking.patch b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/slang-fix-the-iconv-existence-checking.patch
index 958fe98..850551e 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/slang-fix-the-iconv-existence-checking.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/slang-fix-the-iconv-existence-checking.patch
@@ -19,14 +19,14 @@
 
 Signed-off-by: Zheng Junling <zhengjunling@huawei.com>
 ---
- configure | 60 ++++++------------------------------------------------------
- 1 file changed, 6 insertions(+), 54 deletions(-)
+ configure |   72 +++++---------------------------------------------------------
+ 1 file changed, 6 insertions(+), 66 deletions(-)
 
 diff --git a/configure b/configure
-index 7a96256..91632f3 100755
+index fa395ff..7fa769c 100755
 --- a/configure
 +++ b/configure
-@@ -7909,6 +7909,7 @@ $as_echo_n "checking for the iconv library and header files ... " >&6; }
+@@ -8259,6 +8259,7 @@ $as_echo_n "checking for the iconv library and header files ... " >&6; }
  	 /usr/include/iconv,/usr/lib \
  	 /usr/iconv/include,/usr/iconv/lib \
  	 /usr/include,/usr/lib \
@@ -34,7 +34,7 @@
  	 /opt/include/iconv,/opt/lib \
  	 /opt/iconv/include,/opt/iconv/lib \
  	 /opt/include,/opt/lib"
-@@ -7939,14 +7940,14 @@ $as_echo_n "checking for the iconv library and header files ... " >&6; }
+@@ -8289,14 +8290,14 @@ $as_echo_n "checking for the iconv library and header files ... " >&6; }
          xincdir=`echo $include_and_lib | tr ',' ' ' | awk '{print $1}'`
  	xlibdir=`echo $include_and_lib | tr ',' ' ' | awk '{print $2}'`
  	found=0
@@ -53,7 +53,7 @@
  	      jd_with_iconv_library="yes"
  	      found=1
  	      break
-@@ -7972,56 +7973,7 @@ $as_echo "yes: $jd_iconv_library_dir and $jd_iconv_include_dir" >&6; }
+@@ -8201,68 +8201,7 @@ $as_echo "yes: $jd_iconv_library_dir and $jd_iconv_include_dir" >&6; }
      then
        ICONV_LIB=""
      else
@@ -82,7 +82,7 @@
 -      fi
 -    fi
 -  ;;
--  *osf*|*openbsd*)
+-  *osf*|*openbsd*|*freebsd*)
 -    if test "X$GCC" = Xyes
 -    then
 -      RPATH="-Wl,-rpath,"
@@ -103,7 +103,19 @@
 -      RPATH="$RPATH$jd_iconv_library_dir"
 -    fi
 -  else
--    RPATH="$RPATH:$jd_iconv_library_dir"
+-    _already_there=0
+-    for X in `echo $RPATH | sed 's/:/ /g'`
+-    do
+-      if test "$X" = "$jd_iconv_library_dir"
+-      then
+-        _already_there=1
+-	break
+-      fi
+-    done
+-    if test $_already_there = 0
+-    then
+-      RPATH="$RPATH:$jd_iconv_library_dir"
+-    fi
 -  fi
 -fi
 -
@@ -111,6 +123,3 @@
      fi
  
      ICONV_INC=-I$jd_iconv_include_dir
--- 
-1.8.3.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/sprintf-bug-concerning-8-bit-characters.patch b/import-layers/yocto-poky/meta/recipes-extended/slang/slang/sprintf-bug-concerning-8-bit-characters.patch
deleted file mode 100644
index 420001b..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/slang/slang/sprintf-bug-concerning-8-bit-characters.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Upstream-Status: Backport
-
-From 3a05d1a920140e9f2c72791c12f664213feb46df Mon Sep 17 00:00:00 2001
-From: Manfred Hanke <Manfred.Hanke@tngtech.com>
-Date: Thu, 20 Jun 2013 10:24:12 +0200
-Subject: [PATCH] sprintf bug (concerning %c for 8-bit character in non-UTF8
- mode) fixed
-
-char *str points to SLuchar_Type utf8_buf[], which had too small scope
-
-src/test/strops.sl failed in the following environment:
- - compiler:  gcc (Debian 4.7.2-5) 4.7.2
- - CFLAGS:    -g -O2
- - libc:      GNU C Library (Debian EGLIBC 2.13-38) stable release version 2.13
- - kernel:    3.2.0-4-686-pae #1 SMP Debian 3.2.39-2 i686 GNU/Linux
----
- src/slstrops.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/slstrops.c b/src/slstrops.c
-index ce6acb0..cbbbb01 100644
---- a/src/slstrops.c
-+++ b/src/slstrops.c
-@@ -1884,6 +1884,7 @@ static char *SLdo_sprintf (char *fmt) /*{{{*/
- #endif
-    unsigned char uch;
-    int use_long = 0, use_alt_format = 0;
-+   SLuchar_Type utf8_buf[SLUTF8_MAX_MBLEN+1];
- 
-    while (1)
-      {
-@@ -2071,7 +2072,6 @@ static char *SLdo_sprintf (char *fmt) /*{{{*/
- #endif
- 	       {
- 		  SLwchar_Type wc;
--		  SLuchar_Type utf8_buf[SLUTF8_MAX_MBLEN+1];
- 
- 		  if (-1 == SLang_pop_wchar (&wc))
- 		    return out;
--- 
-1.7.9.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/slang/slang_2.2.4.bb b/import-layers/yocto-poky/meta/recipes-extended/slang/slang_2.2.4.bb
deleted file mode 100644
index 237e9f2..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/slang/slang_2.2.4.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "The shared library for the S-Lang extension language"
-
-DESCRIPTION = "S-Lang is an interpreted language and a programming library.  The \
-S-Lang language was designed so that it can be easily embedded into \
-a program to provide the program with a powerful extension language. \
-The S-Lang library, provided in this package, provides the S-Lang \
-extension language.  S-Lang's syntax resembles C, which makes it easy \
-to recode S-Lang procedures in C if you need to."
-
-HOMEPAGE = "http://www.jedsoft.org/slang/"
-SECTION = "libs"
-DEPENDS = "pcre ncurses"
-PR = "r12"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a52a18a472d4f7e45479b06563717c02"
-
-
-SRC_URI = "http://www.jedsoft.org/releases/slang/old/slang-${PV}.tar.bz2 \
-           file://rpathfix.patch \
-           file://fix-check-pcre.patch \
-           file://change-char-type-to-signed-char-in-macros.patch \
-           file://sprintf-bug-concerning-8-bit-characters.patch \
-           file://slang-fix-the-iconv-existence-checking.patch \
-           file://0001-Fix-error-conflicting-types-for-posix_close.patch \
-          "
-UPSTREAM_CHECK_URI = "http://www.jedsoft.org/releases/slang/"
-
-inherit autotools-brokensep
-
-CLEANBROKEN = "1"
-
-SRC_URI[md5sum] = "7fcfd447e378f07dd0c0bae671fe6487"
-SRC_URI[sha256sum] = "9a8257a9a2a55099af858b13338dc8f3a06dd2069f46f0df2c9c3bb84a01d5db"
-
-EXTRA_OECONF += " --without-z --without-png --without-onig --x-includes=${STAGING_DIR_HOST}/usr/include/X11 --x-libraries=${STAGING_DIR_HOST}/usr/lib"
-
-do_configure_prepend() {
-    # slang keeps configure.ac and rest of autoconf files in autoconf/ directory
-    # we have to go there to be able to run gnu-configize cause it expects configure.{in,ac}
-    # to be present. Resulting files land in autoconf/autoconf/ so we need to move them.
-    cd ${S}/autoconf && gnu-configize --force && mv autoconf/config.* .
-    cd ${B}
-}
-
-do_install() {
-	oe_runmake install DESTDIR=${D} -e 'INST_LIB_DIR=${STAGING_DIR_HOST}/usr/lib'
-}
-
-FILES_${PN} += "${libdir}/${BPN}/v2/modules/ ${datadir}/slsh/"
-
-PARALLEL_MAKE = ""
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/slang/slang_2.3.0.bb b/import-layers/yocto-poky/meta/recipes-extended/slang/slang_2.3.0.bb
new file mode 100644
index 0000000..17efbbe
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/slang/slang_2.3.0.bb
@@ -0,0 +1,51 @@
+SUMMARY = "The shared library for the S-Lang extension language"
+
+DESCRIPTION = "S-Lang is an interpreted language and a programming library.  The \
+S-Lang language was designed so that it can be easily embedded into \
+a program to provide the program with a powerful extension language. \
+The S-Lang library, provided in this package, provides the S-Lang \
+extension language.  S-Lang's syntax resembles C, which makes it easy \
+to recode S-Lang procedures in C if you need to."
+
+HOMEPAGE = "http://www.jedsoft.org/slang/"
+SECTION = "libs"
+DEPENDS = "pcre ncurses"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a52a18a472d4f7e45479b06563717c02"
+
+
+SRC_URI = "http://www.jedsoft.org/releases/${BPN}/${BP}.tar.bz2 \
+           file://rpathfix.patch \
+           file://fix-check-pcre.patch \
+           file://slang-fix-the-iconv-existence-checking.patch \
+           file://0001-Fix-error-conflicting-types-for-posix_close.patch \
+          "
+UPSTREAM_CHECK_URI = "http://www.jedsoft.org/releases/slang/"
+
+inherit autotools-brokensep
+
+CLEANBROKEN = "1"
+
+SRC_URI[md5sum] = "3bcc790460d52db1316c20395b7ac2f1"
+SRC_URI[sha256sum] = "f95224060f45e0d8212a5039b339afa5f1a94a1bb0298e796104e5b12e926129"
+
+EXTRA_OECONF += " --without-z --without-png --without-onig --x-includes=${STAGING_DIR_HOST}/usr/include/X11 --x-libraries=${STAGING_DIR_HOST}/usr/lib"
+
+do_configure_prepend() {
+    # slang keeps configure.ac and rest of autoconf files in autoconf/ directory
+    # we have to go there to be able to run gnu-configize cause it expects configure.{in,ac}
+    # to be present. Resulting files land in autoconf/autoconf/ so we need to move them.
+    cd ${S}/autoconf && gnu-configize --force && mv autoconf/config.* .
+    cd ${B}
+}
+
+do_install() {
+	oe_runmake install DESTDIR=${D} -e 'INST_LIB_DIR=${STAGING_DIR_HOST}/usr/lib'
+}
+
+FILES_${PN} += "${libdir}/${BPN}/v2/modules/ ${datadir}/slsh/"
+
+PARALLEL_MAKE = ""
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/stat/stat-3.3/fix-security-format.patch b/import-layers/yocto-poky/meta/recipes-extended/stat/stat-3.3/fix-security-format.patch
new file mode 100644
index 0000000..0c01ed0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/stat/stat-3.3/fix-security-format.patch
@@ -0,0 +1,68 @@
+stat: Fixing security formatting issues
+
+Fix security formatting issues related to printf without NULL argument 
+
+stat.c: In function 'print_human_access':
+stat.c:292:13: error: format not a string literal and no format arguments [-Werror=format-security]
+     printf (access);
+             ^
+stat.c: In function 'print_human_time':
+stat.c:299:57: error: format not a string literal and no format arguments [-Werror=format-security]
+   if (strftime(str, 40, "%c", localtime(t)) > 0) printf(str);
+                                                         ^
+stat.c: In function 'print_it':
+stat.c:613:6: error: format not a string literal and no format arguments [-Werror=format-security]
+      printf(b);
+      ^
+stat.c:642:6: error: format not a string literal and no format arguments [-Werror=format-security]
+      printf(b);
+      ^
+
+[YOCTO #9550]
+[https://bugzilla.yoctoproject.org/show_bug.cgi?id=9550]
+
+Upstream-Status: Pending
+
+Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
+
+diff --git a/stat.c b/stat.c
+index 1ed07a9..2be6f62 100644
+--- a/stat.c
++++ b/stat.c
+@@ -289,15 +289,15 @@ void print_human_access(struct stat *statbuf)
+     default:
+       access[0] = '?';
+     }
+-    printf (access);
++    fputs(access,stdout);
+ }
+ 
+ void print_human_time(time_t *t)
+ {
+   char str[40];
+   
+-  if (strftime(str, 40, "%c", localtime(t)) > 0) printf(str);
+-  else printf("Cannot calculate human readable time, sorry");
++  if (strftime(str, 40, "%c", localtime(t)) > 0) fputs(str,stdout);
++  else fputs("Cannot calculate human readable time, sorry",stdout);
+ }
+ 
+ /* print statfs info */
+@@ -610,7 +610,7 @@ void print_it(char *masterformat, char *filename,
+ 	{
+ 	    strcpy (pformat, "%");
+ 	    *m++ = '\0';
+-	    printf(b);
++	    fputs(b,stdout);
+ 
+ 	    /* copy all format specifiers to our format string */
+ 	    while (isdigit(*m) || strchr("#0-+. I", *m))
+@@ -639,7 +639,7 @@ void print_it(char *masterformat, char *filename,
+ 	}
+ 	else
+ 	{
+-	    printf(b);
++	    fputs(b,stdout);
+ 	    b = NULL;
+ 	}
+     }
diff --git a/import-layers/yocto-poky/meta/recipes-extended/stat/stat_3.3.bb b/import-layers/yocto-poky/meta/recipes-extended/stat/stat_3.3.bb
index a5ece07..0697c73 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/stat/stat_3.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/stat/stat_3.3.bb
@@ -6,6 +6,7 @@
                     file://GPL;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "http://www.ibiblio.org/pub/Linux/utils/file/${BP}.tar.gz \
+           file://fix-security-format.patch \
            file://fix-error-return.patch"
 
 SRC_URI[md5sum] = "37e247e8e400ad9205f1b0500b728fd3"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sudo/sudo_1.8.15.bb b/import-layers/yocto-poky/meta/recipes-extended/sudo/sudo_1.8.15.bb
deleted file mode 100644
index 042043ec..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/sudo/sudo_1.8.15.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-require sudo.inc
-
-SRC_URI = "http://ftp.sudo.ws/sudo/dist/sudo-${PV}.tar.gz \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
-           file://0001-Include-sys-types.h-for-id_t-definition.patch \
-           "
-
-PAM_SRC_URI = "file://sudo.pam"
-
-SRC_URI[md5sum] = "7cf6b9b76d0478a572432bed481dd7b5"
-SRC_URI[sha256sum] = "4316381708324da8b6cb151f655c1a11855207c7c02244d8ffdea5104d7cc308"
-
-DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-RDEPENDS_${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}"
-
-EXTRA_OECONF += " \
-             ac_cv_type_rsize_t=no \
-             ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
-             ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-tmpfiles.d=${libdir}/tmpfiles.d', '--disable-tmpfiles.d', d)} \
-             "
-
-do_install_append () {
-	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
-		install -D -m 644 ${WORKDIR}/sudo.pam ${D}/${sysconfdir}/pam.d/sudo
-	fi
-
-	chmod 4111 ${D}${bindir}/sudo
-	chmod 0440 ${D}${sysconfdir}/sudoers
-
-	# Explicitly remove the ${localstatedir}/run directory to avoid QA error
-	rmdir -p --ignore-fail-on-non-empty ${D}${localstatedir}/run/sudo
-}
-
-FILES_${PN} += "${libdir}/tmpfiles.d"
-FILES_${PN}-dev += "${libexecdir}/${BPN}/lib*${SOLIBSDEV} ${libexecdir}/${BPN}/*.la \
-                    ${libexecdir}/lib*${SOLIBSDEV} ${libexecdir}/*.la"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sudo/sudo_1.8.17p1.bb b/import-layers/yocto-poky/meta/recipes-extended/sudo/sudo_1.8.17p1.bb
new file mode 100644
index 0000000..614ad5c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/sudo/sudo_1.8.17p1.bb
@@ -0,0 +1,36 @@
+require sudo.inc
+
+SRC_URI = "http://ftp.sudo.ws/sudo/dist/sudo-${PV}.tar.gz \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+           file://0001-Include-sys-types.h-for-id_t-definition.patch \
+           "
+
+PAM_SRC_URI = "file://sudo.pam"
+
+SRC_URI[md5sum] = "50a840a688ceb6fa3ab24fc0adf4fa23"
+SRC_URI[sha256sum] = "c690d707fb561b3ecdf6a6de5563bc0b769388eff201c851edbace408bb155cc"
+
+DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+RDEPENDS_${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}"
+
+EXTRA_OECONF += " \
+             ac_cv_type_rsize_t=no \
+             ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
+             ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-tmpfiles.d=${libdir}/tmpfiles.d', '--disable-tmpfiles.d', d)} \
+             "
+
+do_install_append () {
+	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}" = "pam" ]; then
+		install -D -m 644 ${WORKDIR}/sudo.pam ${D}/${sysconfdir}/pam.d/sudo
+	fi
+
+	chmod 4111 ${D}${bindir}/sudo
+	chmod 0440 ${D}${sysconfdir}/sudoers
+
+	# Explicitly remove the ${localstatedir}/run directory to avoid QA error
+	rmdir -p --ignore-fail-on-non-empty ${D}${localstatedir}/run/sudo
+}
+
+FILES_${PN} += "${libdir}/tmpfiles.d"
+FILES_${PN}-dev += "${libexecdir}/${BPN}/lib*${SOLIBSDEV} ${libexecdir}/${BPN}/*.la \
+                    ${libexecdir}/lib*${SOLIBSDEV} ${libexecdir}/*.la"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sysklogd/sysklogd.inc b/import-layers/yocto-poky/meta/recipes-extended/sysklogd/sysklogd.inc
index 1e363db..5c15ffe 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/sysklogd/sysklogd.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/sysklogd/sysklogd.inc
@@ -55,7 +55,7 @@
 pkg_prerm_${PN} () {
 	if test "x$D" = "x"; then
 	if test "$1" = "upgrade" -o "$1" = "remove"; then
-		/etc/init.d/syslog stop
+		/etc/init.d/syslog stop || :
 	fi
 	fi
 }
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat.inc b/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat.inc
index c353291..bb5629d 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat.inc
@@ -14,6 +14,7 @@
 
 DEPENDS += "base-passwd"
 
+# autotools-brokensep as this package doesn't use automake
 inherit autotools-brokensep gettext systemd
 
 EXTRA_OECONF += "--disable-sensors"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat_11.2.0.bb b/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat_11.2.0.bb
deleted file mode 100644
index 7a8eb96..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat_11.2.0.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require sysstat.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-
-SRC_URI += "file://0001-Include-needed-headers-explicitly.patch"
-
-SRC_URI[md5sum] = "e8b615775ad98780e3f0675b91eddb19"
-SRC_URI[sha256sum] = "9806b9a662568796d3fb93ecd01ecea10d815e668337a646494953bff4bc4155"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat_11.4.0.bb b/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat_11.4.0.bb
new file mode 100644
index 0000000..69f83fc
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/sysstat/sysstat_11.4.0.bb
@@ -0,0 +1,8 @@
+require sysstat.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a23a74b3f4caf9616230789d94217acb"
+
+SRC_URI += "file://0001-Include-needed-headers-explicitly.patch"
+
+SRC_URI[md5sum] = "ee7b8c0b139a11a7a3418dc0658ca1be"
+SRC_URI[sha256sum] = "b8518ca88acfcbc474a406022ee9c0c3210ccef4f0ec80e5b3e8c41dda8c16f2"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/tar/tar/remove-gets.patch b/import-layers/yocto-poky/meta/recipes-extended/tar/tar/remove-gets.patch
index 0b8be39..f24de92 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/tar/tar/remove-gets.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/tar/tar/remove-gets.patch
@@ -3,20 +3,27 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
 Upstream-Status: Pending
-Index: tar-1.27/gnu/stdio.in.h
-===================================================================
---- tar-1.27.orig/gnu/stdio.in.h	2013-06-29 08:54:26.000000000 +0300
-+++ tar-1.27/gnu/stdio.in.h	2013-10-16 15:22:46.977204737 +0300
-@@ -710,10 +710,12 @@
+---
+ gnu/stdio.in.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/gnu/stdio.in.h b/gnu/stdio.in.h
+index ec43874..502e3ae 100644
+--- a/gnu/stdio.in.h
++++ b/gnu/stdio.in.h
+@@ -722,10 +722,12 @@ _GL_WARN_ON_USE (getline, "getline is unportable - "
  /* It is very rare that the developer ever has full control of stdin,
     so any use of gets warrants an unconditional warning; besides, C11
     removed it.  */
 +#if defined gets
  #undef gets
- #if HAVE_RAW_DECL_GETS
+ #if HAVE_RAW_DECL_GETS && !defined __cplusplus
  _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
  #endif
 +#endif
  
- 
  #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
+ struct obstack;
+-- 
+2.8.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/tar/tar_1.28.bb b/import-layers/yocto-poky/meta/recipes-extended/tar/tar_1.28.bb
deleted file mode 100644
index 518e622..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/tar/tar_1.28.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require tar.inc
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[acl] = "--with-posix-acls, --without-posix-acls, acl,"
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI += "file://remove-gets.patch \
-            file://musl_dirent.patch \
-           "
-SRC_URI[md5sum] = "8f32b2bc1ed7ddf4cf4e4a39711341b0"
-SRC_URI[sha256sum] = "60e4bfe0602fef34cd908d91cf638e17eeb09394d7b98c2487217dc4d3147562"
-
-do_install_append_libc-musl() {
-	rm -f ${D}${libdir}/charset.alias
-	rmdir ${D}${libdir}
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/tar/tar_1.29.bb b/import-layers/yocto-poky/meta/recipes-extended/tar/tar_1.29.bb
new file mode 100644
index 0000000..efce57d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/tar/tar_1.29.bb
@@ -0,0 +1,18 @@
+require tar.inc
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[acl] = "--with-posix-acls, --without-posix-acls, acl,"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI += "file://remove-gets.patch \
+            file://musl_dirent.patch \
+           "
+SRC_URI[md5sum] = "955cd533955acb1804b83fd70218da51"
+SRC_URI[sha256sum] = "236b11190c0a3a6885bdb8d61424f2b36a5872869aa3f7f695dea4b4843ae2f2"
+
+do_install_append_libc-musl() {
+	rm -f ${D}${libdir}/charset.alias
+	rmdir ${D}${libdir}
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2016c.bb b/import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2016c.bb
deleted file mode 100644
index 06b92ea..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2016c.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-# note that we allow for us to use data later than our code version
-#
-SUMMARY = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
-LICENSE = "PD & BSD & BSD-3-Clause"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=76ae2becfcb9a685041c6f166b44c2c2"
-
-SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode \
-           http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata"
-
-SRC_URI[tzcode.md5sum] = "ffb82ab0b588138759902b4627a6a80d"
-SRC_URI[tzcode.sha256sum] = "344b1bd486935bca2b7baa47db3b99b32211c45f31ec0d1ead8bacd103c5a416"
-SRC_URI[tzdata.md5sum] = "0330ccd16140d3b6438a18dae9b34b93"
-SRC_URI[tzdata.sha256sum] = "8700d981e6f2007ac037dabb5d2b12f390e8629bbc30e564bc21cf0c069a2d48"
-
-S = "${WORKDIR}"
-
-inherit native
-
-do_install () {
-        install -d ${D}${bindir}/
-        install -m 755 zic ${D}${bindir}/
-        install -m 755 zdump ${D}${bindir}/
-        install -m 755 tzselect ${D}${bindir}/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2016g.bb b/import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2016g.bb
new file mode 100644
index 0000000..a2e6217
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2016g.bb
@@ -0,0 +1,26 @@
+# note that we allow for us to use data later than our code version
+#
+SUMMARY = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
+LICENSE = "PD & BSD & BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ef1a352b901ee7b75a75df8171d6aca7"
+
+SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode \
+           http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata"
+UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones"
+
+SRC_URI[tzcode.md5sum] = "f89867013676e3cb9544be2df7d36a91"
+SRC_URI[tzcode.sha256sum] = "1ff90b47ad7986140a513b5287b1851c40f80fd44fd636db5cc5b46d06f9fa2b"
+SRC_URI[tzdata.md5sum] = "3c7e97ec8527211104d27cc1d97a23de"
+SRC_URI[tzdata.sha256sum] = "3c7137b2bc47323b0de47b77786bacf81ed503d4b2c693ff8ada2fbd1281ebd1"
+
+S = "${WORKDIR}"
+
+inherit native
+
+do_install () {
+        install -d ${D}${bindir}/
+        install -m 755 zic ${D}${bindir}/
+        install -m 755 zdump ${D}${bindir}/
+        install -m 755 tzselect ${D}${bindir}/
+}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2016c.bb b/import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2016c.bb
deleted file mode 100644
index 5eb85b7..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2016c.bb
+++ /dev/null
@@ -1,212 +0,0 @@
-SUMMARY = "Timezone data"
-HOMEPAGE = "http://www.iana.org/time-zones"
-SECTION = "base"
-LICENSE = "PD & BSD & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=76ae2becfcb9a685041c6f166b44c2c2"
-
-DEPENDS = "tzcode-native"
-
-SRC_URI = "http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata"
-
-SRC_URI[tzdata.md5sum] = "0330ccd16140d3b6438a18dae9b34b93"
-SRC_URI[tzdata.sha256sum] = "8700d981e6f2007ac037dabb5d2b12f390e8629bbc30e564bc21cf0c069a2d48"
-
-inherit allarch
-
-RCONFLICTS_${PN} = "timezones timezone-africa timezone-america timezone-antarctica \
-             timezone-arctic timezone-asia timezone-atlantic \
-             timezone-australia timezone-europe timezone-indian \
-             timezone-iso3166.tab timezone-pacific timezone-zone.tab"
-
-S = "${WORKDIR}"
-
-DEFAULT_TIMEZONE ?= "Universal"
-INSTALL_TIMEZONE_FILE ?= "1"
-
-TZONES= "africa antarctica asia australasia europe northamerica southamerica  \
-         factory etcetera backward systemv \
-        "
-# pacificnew 
-
-do_compile () {
-        for zone in ${TZONES}; do \
-            ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo -L /dev/null \
-                -y ${S}/yearistype.sh ${S}/${zone} ; \
-            ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/posix -L /dev/null \
-                -y ${S}/yearistype.sh ${S}/${zone} ; \
-            ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/right -L ${S}/leapseconds \
-                -y ${S}/yearistype.sh ${S}/${zone} ; \
-        done
-}
-
-do_install () {
-        install -d ${D}/$exec_prefix ${D}${datadir}/zoneinfo
-        cp -pPR ${S}/$exec_prefix ${D}/
-        # libc is removing zoneinfo files from package
-        cp -pP "${S}/zone.tab" ${D}${datadir}/zoneinfo
-        cp -pP "${S}/iso3166.tab" ${D}${datadir}/zoneinfo
-
-        # Install default timezone
-        if [ -e ${D}${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ]; then
-            install -d ${D}${sysconfdir}
-            if [ "${INSTALL_TIMEZONE_FILE}" = "1" ]; then
-                echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone
-            fi
-            ln -s ${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime
-        else
-            bberror "DEFAULT_TIMEZONE is set to an invalid value."
-            exit 1
-        fi
-
-        chown -R root:root ${D}
-}
-
-pkg_postinst_${PN} () {
-	etc_lt="$D${sysconfdir}/localtime"
-	src="$D${sysconfdir}/timezone"
-
-	if [ -e ${src} ] ; then
-		tz=$(sed -e 's:#.*::' -e 's:[[:space:]]*::g' -e '/^$/d' "${src}")
-	fi
-	
-	if [ -z "${tz}" ] ; then
-		exit 0
-	fi
-	
-	if [ ! -e "$D${datadir}/zoneinfo/${tz}" ] ; then
-		echo "You have an invalid TIMEZONE setting in ${src}"
-		echo "Your ${etc_lt} has been reset to Universal; enjoy!"
-		tz="Universal"
-		echo "Updating ${etc_lt} with $D${datadir}/zoneinfo/${tz}"
-		if [ -L ${etc_lt} ] ; then
-			rm -f "${etc_lt}"
-		fi
-		ln -s "${datadir}/zoneinfo/${tz}" "${etc_lt}"
-	fi
-}
-
-# Packages primarily organized by directory with a major city
-# in most time zones in the base package
-
-PACKAGES = "tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
-    tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
-    tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific"
-
-FILES_tzdata-africa += "${datadir}/zoneinfo/Africa/*"
-RPROVIDES_tzdata-africa = "tzdata-africa"
-
-FILES_tzdata-americas += "${datadir}/zoneinfo/America/*  \
-                ${datadir}/zoneinfo/US/*                \
-                ${datadir}/zoneinfo/Brazil/*            \
-                ${datadir}/zoneinfo/Canada/*            \
-                ${datadir}/zoneinfo/Mexico/*            \
-                ${datadir}/zoneinfo/Chile/*"
-RPROVIDES_tzdata-americas = "tzdata-americas"
-
-FILES_tzdata-antarctica += "${datadir}/zoneinfo/Antarctica/*"
-RPROVIDES_tzdata-antarctica = "tzdata-antarctica"
-
-FILES_tzdata-arctic += "${datadir}/zoneinfo/Arctic/*"
-RPROVIDES_tzdata-arctic = "tzdata-arctic"
-
-FILES_tzdata-asia += "${datadir}/zoneinfo/Asia/*        \
-                ${datadir}/zoneinfo/Indian/*            \
-                ${datadir}/zoneinfo/Mideast/*"
-RPROVIDES_tzdata-asia = "tzdata-asia"
-
-FILES_tzdata-atlantic += "${datadir}/zoneinfo/Atlantic/*"
-RPROVIDES_tzdata-atlantic = "tzdata-atlantic"
-
-FILES_tzdata-australia += "${datadir}/zoneinfo/Australia/*"
-RPROVIDES_tzdata-australia = "tzdata-australia"
-
-FILES_tzdata-europe += "${datadir}/zoneinfo/Europe/*"
-RPROVIDES_tzdata-europe = "tzdata-europe"
-
-FILES_tzdata-pacific += "${datadir}/zoneinfo/Pacific/*"
-RPROVIDES_tzdata-pacific = "tzdata-pacific"
-
-FILES_tzdata-posix += "${datadir}/zoneinfo/posix/*"
-RPROVIDES_tzdata-posix = "tzdata-posix"
-
-FILES_tzdata-right += "${datadir}/zoneinfo/right/*"
-RPROVIDES_tzdata-right = "tzdata-right"
-
-
-FILES_tzdata-misc += "${datadir}/zoneinfo/Cuba           \
-                ${datadir}/zoneinfo/Egypt                \
-                ${datadir}/zoneinfo/Eire                 \
-                ${datadir}/zoneinfo/Factory              \
-                ${datadir}/zoneinfo/GB-Eire              \
-                ${datadir}/zoneinfo/Hongkong             \
-                ${datadir}/zoneinfo/Iceland              \
-                ${datadir}/zoneinfo/Iran                 \
-                ${datadir}/zoneinfo/Israel               \
-                ${datadir}/zoneinfo/Jamaica              \
-                ${datadir}/zoneinfo/Japan                \
-                ${datadir}/zoneinfo/Kwajalein            \
-                ${datadir}/zoneinfo/Libya                \
-                ${datadir}/zoneinfo/Navajo               \
-                ${datadir}/zoneinfo/Poland               \
-                ${datadir}/zoneinfo/Portugal             \
-                ${datadir}/zoneinfo/Singapore            \
-                ${datadir}/zoneinfo/Turkey"
-RPROVIDES_tzdata-misc = "tzdata-misc"
-
-
-FILES_${PN} += "${datadir}/zoneinfo/Pacific/Honolulu     \
-                ${datadir}/zoneinfo/America/Anchorage    \
-                ${datadir}/zoneinfo/America/Los_Angeles  \
-                ${datadir}/zoneinfo/America/Denver       \
-                ${datadir}/zoneinfo/America/Chicago      \
-                ${datadir}/zoneinfo/America/New_York     \
-                ${datadir}/zoneinfo/America/Caracas      \
-                ${datadir}/zoneinfo/America/Sao_Paulo    \
-                ${datadir}/zoneinfo/Europe/London        \
-                ${datadir}/zoneinfo/Europe/Paris         \
-                ${datadir}/zoneinfo/Africa/Cairo         \
-                ${datadir}/zoneinfo/Europe/Moscow        \
-                ${datadir}/zoneinfo/Asia/Dubai           \
-                ${datadir}/zoneinfo/Asia/Karachi         \
-                ${datadir}/zoneinfo/Asia/Dhaka           \
-                ${datadir}/zoneinfo/Asia/Bankok          \
-                ${datadir}/zoneinfo/Asia/Hong_Kong       \
-                ${datadir}/zoneinfo/Asia/Tokyo           \
-                ${datadir}/zoneinfo/Australia/Darwin     \
-                ${datadir}/zoneinfo/Australia/Adelaide   \
-                ${datadir}/zoneinfo/Australia/Brisbane   \
-                ${datadir}/zoneinfo/Australia/Sydney     \
-                ${datadir}/zoneinfo/Pacific/Noumea       \
-                ${datadir}/zoneinfo/CET                  \
-                ${datadir}/zoneinfo/CST6CDT              \
-                ${datadir}/zoneinfo/EET                  \
-                ${datadir}/zoneinfo/EST                  \
-                ${datadir}/zoneinfo/EST5EDT              \
-                ${datadir}/zoneinfo/GB                   \
-                ${datadir}/zoneinfo/GMT                  \
-                ${datadir}/zoneinfo/GMT+0                \
-                ${datadir}/zoneinfo/GMT-0                \
-                ${datadir}/zoneinfo/GMT0                 \
-                ${datadir}/zoneinfo/Greenwich            \
-                ${datadir}/zoneinfo/HST                  \
-                ${datadir}/zoneinfo/MET                  \
-                ${datadir}/zoneinfo/MST                  \
-                ${datadir}/zoneinfo/MST7MDT              \
-                ${datadir}/zoneinfo/NZ                   \
-                ${datadir}/zoneinfo/NZ-CHAT              \
-                ${datadir}/zoneinfo/PRC                  \
-                ${datadir}/zoneinfo/PST8PDT              \
-                ${datadir}/zoneinfo/ROC                  \
-                ${datadir}/zoneinfo/ROK                  \
-                ${datadir}/zoneinfo/UCT                  \
-                ${datadir}/zoneinfo/UTC                  \
-                ${datadir}/zoneinfo/Universal            \
-                ${datadir}/zoneinfo/W-SU                 \
-                ${datadir}/zoneinfo/WET                  \
-                ${datadir}/zoneinfo/Zulu                 \
-                ${datadir}/zoneinfo/zone.tab             \
-                ${datadir}/zoneinfo/iso3166.tab          \
-                ${datadir}/zoneinfo/Etc/*"
-
-CONFFILES_${PN} += "${@ "${sysconfdir}/timezone" if bb.utils.to_boolean(d.getVar('INSTALL_TIMEZONE_FILE', True)) else "" }"
-CONFFILES_${PN} += "${sysconfdir}/localtime"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2016g.bb b/import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2016g.bb
new file mode 100644
index 0000000..3ee4b5a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2016g.bb
@@ -0,0 +1,213 @@
+SUMMARY = "Timezone data"
+HOMEPAGE = "http://www.iana.org/time-zones"
+SECTION = "base"
+LICENSE = "PD & BSD & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ef1a352b901ee7b75a75df8171d6aca7"
+
+DEPENDS = "tzcode-native"
+
+SRC_URI = "http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata"
+UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones"
+
+SRC_URI[tzdata.md5sum] = "3c7e97ec8527211104d27cc1d97a23de"
+SRC_URI[tzdata.sha256sum] = "3c7137b2bc47323b0de47b77786bacf81ed503d4b2c693ff8ada2fbd1281ebd1"
+
+inherit allarch
+
+RCONFLICTS_${PN} = "timezones timezone-africa timezone-america timezone-antarctica \
+             timezone-arctic timezone-asia timezone-atlantic \
+             timezone-australia timezone-europe timezone-indian \
+             timezone-iso3166.tab timezone-pacific timezone-zone.tab"
+
+S = "${WORKDIR}"
+
+DEFAULT_TIMEZONE ?= "Universal"
+INSTALL_TIMEZONE_FILE ?= "1"
+
+TZONES= "africa antarctica asia australasia europe northamerica southamerica  \
+         factory etcetera backward systemv \
+        "
+# pacificnew 
+
+do_compile () {
+        for zone in ${TZONES}; do \
+            ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo -L /dev/null \
+                -y ${S}/yearistype.sh ${S}/${zone} ; \
+            ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/posix -L /dev/null \
+                -y ${S}/yearistype.sh ${S}/${zone} ; \
+            ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/right -L ${S}/leapseconds \
+                -y ${S}/yearistype.sh ${S}/${zone} ; \
+        done
+}
+
+do_install () {
+        install -d ${D}/$exec_prefix ${D}${datadir}/zoneinfo
+        cp -pPR ${S}/$exec_prefix ${D}/
+        # libc is removing zoneinfo files from package
+        cp -pP "${S}/zone.tab" ${D}${datadir}/zoneinfo
+        cp -pP "${S}/iso3166.tab" ${D}${datadir}/zoneinfo
+
+        # Install default timezone
+        if [ -e ${D}${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ]; then
+            install -d ${D}${sysconfdir}
+            if [ "${INSTALL_TIMEZONE_FILE}" = "1" ]; then
+                echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone
+            fi
+            ln -s ${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime
+        else
+            bberror "DEFAULT_TIMEZONE is set to an invalid value."
+            exit 1
+        fi
+
+        chown -R root:root ${D}
+}
+
+pkg_postinst_${PN} () {
+	etc_lt="$D${sysconfdir}/localtime"
+	src="$D${sysconfdir}/timezone"
+
+	if [ -e ${src} ] ; then
+		tz=$(sed -e 's:#.*::' -e 's:[[:space:]]*::g' -e '/^$/d' "${src}")
+	fi
+	
+	if [ -z "${tz}" ] ; then
+		exit 0
+	fi
+	
+	if [ ! -e "$D${datadir}/zoneinfo/${tz}" ] ; then
+		echo "You have an invalid TIMEZONE setting in ${src}"
+		echo "Your ${etc_lt} has been reset to Universal; enjoy!"
+		tz="Universal"
+		echo "Updating ${etc_lt} with $D${datadir}/zoneinfo/${tz}"
+		if [ -L ${etc_lt} ] ; then
+			rm -f "${etc_lt}"
+		fi
+		ln -s "${datadir}/zoneinfo/${tz}" "${etc_lt}"
+	fi
+}
+
+# Packages primarily organized by directory with a major city
+# in most time zones in the base package
+
+PACKAGES = "tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
+    tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
+    tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific"
+
+FILES_tzdata-africa += "${datadir}/zoneinfo/Africa/*"
+RPROVIDES_tzdata-africa = "tzdata-africa"
+
+FILES_tzdata-americas += "${datadir}/zoneinfo/America/*  \
+                ${datadir}/zoneinfo/US/*                \
+                ${datadir}/zoneinfo/Brazil/*            \
+                ${datadir}/zoneinfo/Canada/*            \
+                ${datadir}/zoneinfo/Mexico/*            \
+                ${datadir}/zoneinfo/Chile/*"
+RPROVIDES_tzdata-americas = "tzdata-americas"
+
+FILES_tzdata-antarctica += "${datadir}/zoneinfo/Antarctica/*"
+RPROVIDES_tzdata-antarctica = "tzdata-antarctica"
+
+FILES_tzdata-arctic += "${datadir}/zoneinfo/Arctic/*"
+RPROVIDES_tzdata-arctic = "tzdata-arctic"
+
+FILES_tzdata-asia += "${datadir}/zoneinfo/Asia/*        \
+                ${datadir}/zoneinfo/Indian/*            \
+                ${datadir}/zoneinfo/Mideast/*"
+RPROVIDES_tzdata-asia = "tzdata-asia"
+
+FILES_tzdata-atlantic += "${datadir}/zoneinfo/Atlantic/*"
+RPROVIDES_tzdata-atlantic = "tzdata-atlantic"
+
+FILES_tzdata-australia += "${datadir}/zoneinfo/Australia/*"
+RPROVIDES_tzdata-australia = "tzdata-australia"
+
+FILES_tzdata-europe += "${datadir}/zoneinfo/Europe/*"
+RPROVIDES_tzdata-europe = "tzdata-europe"
+
+FILES_tzdata-pacific += "${datadir}/zoneinfo/Pacific/*"
+RPROVIDES_tzdata-pacific = "tzdata-pacific"
+
+FILES_tzdata-posix += "${datadir}/zoneinfo/posix/*"
+RPROVIDES_tzdata-posix = "tzdata-posix"
+
+FILES_tzdata-right += "${datadir}/zoneinfo/right/*"
+RPROVIDES_tzdata-right = "tzdata-right"
+
+
+FILES_tzdata-misc += "${datadir}/zoneinfo/Cuba           \
+                ${datadir}/zoneinfo/Egypt                \
+                ${datadir}/zoneinfo/Eire                 \
+                ${datadir}/zoneinfo/Factory              \
+                ${datadir}/zoneinfo/GB-Eire              \
+                ${datadir}/zoneinfo/Hongkong             \
+                ${datadir}/zoneinfo/Iceland              \
+                ${datadir}/zoneinfo/Iran                 \
+                ${datadir}/zoneinfo/Israel               \
+                ${datadir}/zoneinfo/Jamaica              \
+                ${datadir}/zoneinfo/Japan                \
+                ${datadir}/zoneinfo/Kwajalein            \
+                ${datadir}/zoneinfo/Libya                \
+                ${datadir}/zoneinfo/Navajo               \
+                ${datadir}/zoneinfo/Poland               \
+                ${datadir}/zoneinfo/Portugal             \
+                ${datadir}/zoneinfo/Singapore            \
+                ${datadir}/zoneinfo/Turkey"
+RPROVIDES_tzdata-misc = "tzdata-misc"
+
+
+FILES_${PN} += "${datadir}/zoneinfo/Pacific/Honolulu     \
+                ${datadir}/zoneinfo/America/Anchorage    \
+                ${datadir}/zoneinfo/America/Los_Angeles  \
+                ${datadir}/zoneinfo/America/Denver       \
+                ${datadir}/zoneinfo/America/Chicago      \
+                ${datadir}/zoneinfo/America/New_York     \
+                ${datadir}/zoneinfo/America/Caracas      \
+                ${datadir}/zoneinfo/America/Sao_Paulo    \
+                ${datadir}/zoneinfo/Europe/London        \
+                ${datadir}/zoneinfo/Europe/Paris         \
+                ${datadir}/zoneinfo/Africa/Cairo         \
+                ${datadir}/zoneinfo/Europe/Moscow        \
+                ${datadir}/zoneinfo/Asia/Dubai           \
+                ${datadir}/zoneinfo/Asia/Karachi         \
+                ${datadir}/zoneinfo/Asia/Dhaka           \
+                ${datadir}/zoneinfo/Asia/Bankok          \
+                ${datadir}/zoneinfo/Asia/Hong_Kong       \
+                ${datadir}/zoneinfo/Asia/Tokyo           \
+                ${datadir}/zoneinfo/Australia/Darwin     \
+                ${datadir}/zoneinfo/Australia/Adelaide   \
+                ${datadir}/zoneinfo/Australia/Brisbane   \
+                ${datadir}/zoneinfo/Australia/Sydney     \
+                ${datadir}/zoneinfo/Pacific/Noumea       \
+                ${datadir}/zoneinfo/CET                  \
+                ${datadir}/zoneinfo/CST6CDT              \
+                ${datadir}/zoneinfo/EET                  \
+                ${datadir}/zoneinfo/EST                  \
+                ${datadir}/zoneinfo/EST5EDT              \
+                ${datadir}/zoneinfo/GB                   \
+                ${datadir}/zoneinfo/GMT                  \
+                ${datadir}/zoneinfo/GMT+0                \
+                ${datadir}/zoneinfo/GMT-0                \
+                ${datadir}/zoneinfo/GMT0                 \
+                ${datadir}/zoneinfo/Greenwich            \
+                ${datadir}/zoneinfo/HST                  \
+                ${datadir}/zoneinfo/MET                  \
+                ${datadir}/zoneinfo/MST                  \
+                ${datadir}/zoneinfo/MST7MDT              \
+                ${datadir}/zoneinfo/NZ                   \
+                ${datadir}/zoneinfo/NZ-CHAT              \
+                ${datadir}/zoneinfo/PRC                  \
+                ${datadir}/zoneinfo/PST8PDT              \
+                ${datadir}/zoneinfo/ROC                  \
+                ${datadir}/zoneinfo/ROK                  \
+                ${datadir}/zoneinfo/UCT                  \
+                ${datadir}/zoneinfo/UTC                  \
+                ${datadir}/zoneinfo/Universal            \
+                ${datadir}/zoneinfo/W-SU                 \
+                ${datadir}/zoneinfo/WET                  \
+                ${datadir}/zoneinfo/Zulu                 \
+                ${datadir}/zoneinfo/zone.tab             \
+                ${datadir}/zoneinfo/iso3166.tab          \
+                ${datadir}/zoneinfo/Etc/*"
+
+CONFFILES_${PN} += "${@ "${sysconfdir}/timezone" if bb.utils.to_boolean(d.getVar('INSTALL_TIMEZONE_FILE', True)) else "" }"
+CONFFILES_${PN} += "${sysconfdir}/localtime"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/unzip/unzip/fix-security-format.patch b/import-layers/yocto-poky/meta/recipes-extended/unzip/unzip/fix-security-format.patch
new file mode 100644
index 0000000..8e9b06c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/unzip/unzip/fix-security-format.patch
@@ -0,0 +1,97 @@
+unzip: Fixing security formatting issues
+
+Fix security formatting issues related to sprintf parameters expeted. 
+
+[YOCTO #9551]
+[https://bugzilla.yoctoproject.org/show_bug.cgi?id=9551]
+
+Upstream-Status: Pending
+
+Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
+
+diff --git a/extract.c b/extract.c
+index 7cd9123..25c5a62 100644
+--- a/extract.c
++++ b/extract.c
+@@ -475,7 +475,7 @@ int extract_or_test_files(__G)    /* return PK-type error code */
+                     Info(slide, 0x401, ((char *)slide,
+                       LoadFarString(CentSigMsg), j + blknum*DIR_BLKSIZ + 1));
+                     Info(slide, 0x401, ((char *)slide,
+-                      LoadFarString(ReportMsg)));
++                      "%s",LoadFarString(ReportMsg)));
+                     error_in_archive = PK_BADERR;
+                 }
+                 reached_end = TRUE;     /* ...so no more left to do */
+@@ -754,8 +754,8 @@ int extract_or_test_files(__G)    /* return PK-type error code */
+
+ #ifndef SFX
+     if (no_endsig_found) {                      /* just to make sure */
+-        Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
+-        Info(slide, 0x401, ((char *)slide, LoadFarString(ReportMsg)));
++        Info(slide, 0x401, ((char *)slide, "%s", LoadFarString(EndSigMsg)));
++        Info(slide, 0x401, ((char *)slide, "%s", LoadFarString(ReportMsg)));
+         if (!error_in_archive)       /* don't overwrite stronger error */
+             error_in_archive = PK_WARN;
+     }
+diff --git a/list.c b/list.c
+index 15e0011..0b484f6 100644
+--- a/list.c
++++ b/list.c
+@@ -181,7 +181,7 @@ int list_files(__G)    /* return PK-type error code */
+                 Info(slide, 0x401,
+                      ((char *)slide, LoadFarString(CentSigMsg), j));
+                 Info(slide, 0x401,
+-                     ((char *)slide, LoadFarString(ReportMsg)));
++                     ((char *)slide, "%s", LoadFarString(ReportMsg)));
+                 return PK_BADERR;   /* sig not found */
+             }
+         }
+@@ -507,7 +507,7 @@ int list_files(__G)    /* return PK-type error code */
+             && (!G.ecrec.is_zip64_archive)
+             && (memcmp(G.sig, end_central_sig, 4) != 0)
+            ) {          /* just to make sure again */
+-            Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
++            Info(slide, 0x401, ((char *)slide, "%s", LoadFarString(EndSigMsg)));
+             error_in_archive = PK_WARN;   /* didn't find sig */
+         }
+
+@@ -591,7 +591,7 @@ int get_time_stamp(__G__ last_modtime, nmember)  /* return PK-type error code */
+                 Info(slide, 0x401,
+                      ((char *)slide, LoadFarString(CentSigMsg), j));
+                 Info(slide, 0x401,
+-                     ((char *)slide, LoadFarString(ReportMsg)));
++                     ((char *)slide, "%s", LoadFarString(ReportMsg)));
+                 return PK_BADERR;   /* sig not found */
+             }
+         }
+@@ -674,7 +674,7 @@ int get_time_stamp(__G__ last_modtime, nmember)  /* return PK-type error code */
+   ---------------------------------------------------------------------------*/
+ 
+     if (memcmp(G.sig, end_central_sig, 4)) {    /* just to make sure again */
+-        Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
++        Info(slide, 0x401, ((char *)slide, "%s", LoadFarString(EndSigMsg)));
+         error_in_archive = PK_WARN;
+     }
+     if (*nmember == 0L && error_in_archive <= PK_WARN)
+diff --git a/zipinfo.c b/zipinfo.c
+index 0ac75b3..1e7fa82 100644
+--- a/zipinfo.c
++++ b/zipinfo.c
+@@ -833,7 +833,7 @@ int zipinfo(__G)   /* return PK-type error code */
+                 Info(slide, 0x401,
+                      ((char *)slide, LoadFarString(CentSigMsg), j));
+                 Info(slide, 0x401,
+-                     ((char *)slide, LoadFarString(ReportMsg)));
++                     ((char *)slide, "%s", LoadFarString(ReportMsg)));
+                 error_in_archive = PK_BADERR;   /* sig not found */
+                 break;
+             }
+@@ -1022,7 +1022,7 @@ int zipinfo(__G)   /* return PK-type error code */
+             && (!G.ecrec.is_zip64_archive)
+             && (memcmp(G.sig, end_central_sig, 4) != 0)
+            ) {          /* just to make sure again */
+-            Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
++            Info(slide, 0x401, ((char *)slide, "%s", LoadFarString(EndSigMsg)));
+             error_in_archive = PK_WARN;   /* didn't find sig */
+         }
+ 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/unzip/unzip_6.0.bb b/import-layers/yocto-poky/meta/recipes-extended/unzip/unzip_6.0.bb
index 9efe756..547379c 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/unzip/unzip_6.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/unzip/unzip_6.0.bb
@@ -6,7 +6,7 @@
 PE = "1"
 PR = "r5"
 
-SRC_URI = "ftp://ftp.info-zip.org/pub/infozip/src/unzip60.tgz \
+SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz \
 	file://avoid-strip.patch \
 	file://define-ldflags.patch \
 	file://06-unzip60-alt-iconv-utf8_CVE-2015-1315.patch \
@@ -16,6 +16,7 @@
 	file://11-cve-2014-8141-getzip64data.patch \
 	file://CVE-2015-7696.patch \
 	file://CVE-2015-7697.patch \
+        file://fix-security-format.patch \
 "
 
 SRC_URI[md5sum] = "62b490407489521db863b523a7f86375"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config.bb b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config.bb
new file mode 100644
index 0000000..8bf40f0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Software watchdog"
+DESCRIPTION = "Watchdog is a daemon that checks if your system is still \
+working. If programs in user space are not longer executed it will reboot \
+the system."
+HOMEPAGE = "http://watchdog.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=172030&atid=860194"
+
+LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = " \
+    file://watchdog.default \
+    file://watchdog.conf \
+"
+
+do_install() {
+    install -Dm 0644 ${WORKDIR}/watchdog.default ${D}${sysconfdir}/default/watchdog
+    install -Dm 0644 ${WORKDIR}/watchdog.conf ${D}${sysconfdir}/watchdog.conf
+}
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config/watchdog.conf b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config/watchdog.conf
new file mode 100644
index 0000000..c493d12
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config/watchdog.conf
@@ -0,0 +1,42 @@
+#ping			= 172.31.14.1
+#ping			= 172.26.1.255
+#interface		= eth0
+#file			= /var/log/messages
+#change			= 1407
+
+# Uncomment to enable test. Setting one of these values to '0' disables it.
+# These values will hopefully never reboot your machine during normal use
+# (if your machine is really hung, the loadavg will go much higher than 25)
+#max-load-1		= 24
+#max-load-5		= 18
+#max-load-15		= 12
+
+# Note that this is the number of pages!
+# To get the real size, check how large the pagesize is on your machine.
+#min-memory		= 1
+
+#repair-binary		= /usr/sbin/repair
+#repair-timeout		= 
+#test-binary		= 
+#test-timeout		= 
+
+watchdog-device	= /dev/watchdog
+
+# Defaults compiled into the binary
+#temperature-device	=
+#max-temperature	= 120
+
+# Defaults compiled into the binary
+#admin			= root
+#interval		= 1
+#logtick                = 1
+#log-dir		= /var/log/watchdog
+
+# This greatly decreases the chance that watchdog won't be scheduled before
+# your machine is really loaded
+realtime		= yes
+priority		= 1
+
+# Check if rsyslogd is still running by enabling the following line
+#pidfile		= /var/run/rsyslogd.pid   
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config/watchdog.default b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config/watchdog.default
new file mode 100644
index 0000000..647d5ab
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog-config/watchdog.default
@@ -0,0 +1,2 @@
+# Start watchdog at boot time? 0 or 1
+run_watchdog=1
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch
deleted file mode 100644
index 8afed5c..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 83ec34df357218a1c9cfc13a23d3367d333652c3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 30 Dec 2015 01:01:15 +0000
-Subject: [PATCH] Fix build issues found with non glibc C libraries
-
-Add time.h for getting time_t definition
-limits.h for PATH_MAX
-linux/param.h for EXEC_PAGESIZE
-Replace deprecated MNTTAB with _PATH_MNTTAB
-include ext2_mnt.h for MNTOPT_USRQUOTA and MNTOPT_GRPQUOTA and
-MNTTYPE_EXT2
-Include sys/types.h for u_char definition
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-
-Upstream-Status: Submitted
-
- include/extern.h | 1 +
- src/configfile.c | 1 +
- src/memory.c     | 3 +++
- src/net.c        | 1 +
- src/shutdown.c   | 3 ++-
- 5 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/include/extern.h b/include/extern.h
-index 21db11b..04b16bc 100644
---- a/include/extern.h
-+++ b/include/extern.h
-@@ -3,6 +3,7 @@
- 
- #include <netinet/in.h>
- #include <stdio.h>
-+#include <time.h>
- 
- #include "logmessage.h"
- #include "xmalloc.h"
-diff --git a/src/configfile.c b/src/configfile.c
-index be5d7b3..7c1d1dd 100644
---- a/src/configfile.c
-+++ b/src/configfile.c
-@@ -16,6 +16,7 @@
- #include <errno.h>
- #include <string.h>
- #include <dirent.h>
-+#include <limits.h>
- #include <sys/stat.h>
- 
- #include "extern.h"
-diff --git a/src/memory.c b/src/memory.c
-index e9607e4..b5e08aa 100644
---- a/src/memory.c
-+++ b/src/memory.c
-@@ -21,6 +21,9 @@
- #include <sys/stat.h>
- #include <sys/param.h>
- #include <sys/mman.h>
-+#ifdef __linux__
-+#include <linux/param.h>
-+#endif
- 
- #include "extern.h"
- #include "watch_err.h"
-diff --git a/src/net.c b/src/net.c
-index 21823ae..8930caf 100644
---- a/src/net.c
-+++ b/src/net.c
-@@ -17,6 +17,7 @@
- #include <string.h>
- #include <unistd.h>		/* for gethostname() etc */
- #include <netdb.h>		/* for gethostbyname() */
-+#include <sys/types.h>
- #include <sys/param.h>	/* for MAXHOSTNAMELEN */
- #include <sys/socket.h>
- #include <netinet/in.h>
-diff --git a/src/shutdown.c b/src/shutdown.c
-index 74aafa5..46b99cf 100644
---- a/src/shutdown.c
-+++ b/src/shutdown.c
-@@ -25,6 +25,7 @@
- 
- #include "watch_err.h"
- #include "extern.h"
-+#include "ext2_mnt.h"
- 
- #if defined __GLIBC__
- #include "ext2_mnt.h"
-@@ -123,7 +124,7 @@ static void mnt_off()
- 	FILE *fp;
- 	struct mntent *mnt;
- 
--	fp = setmntent(MNTTAB, "r");
-+	fp = setmntent(_PATH_MNTTAB, "r");
- 	/* in some rare cases fp might be NULL so be careful */
- 	while (fp != NULL && ((mnt = getmntent(fp)) != (struct mntent *)0)) {
- 		/* First check if swap */
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch
new file mode 100644
index 0000000..198f198
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch
@@ -0,0 +1,32 @@
+From 8f91385dbd5e7c14b36ecbd8a01ca82c709f6d77 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 24 Jun 2016 18:19:29 +0000
+Subject: [PATCH] Include linux/param.h for EXEC_PAGESIZE definition
+
+Musl does not include linux/param.h whereas glibc
+does, so it fails to build on musl.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ src/watchdog.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/watchdog.c b/src/watchdog.c
+index acf6450..486384a 100644
+--- a/src/watchdog.c
++++ b/src/watchdog.c
+@@ -26,6 +26,9 @@
+ #include <sys/param.h>		/* For EXEC_PAGESIZE */
+ #include <linux/oom.h>
+ #include <linux/watchdog.h>
++#ifdef __linux__
++#include <linux/param.h>
++#endif
+ #include <string.h>
+ 
+ #include <libgen.h>
+-- 
+1.8.3.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch
deleted file mode 100644
index 14ab9c5..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-Fix ping mode failure
-
-Upstream-Status: Pending  
-
-When watchdog works on ping mode, the system will be rebooted since
-watchdog can not receive the expected ECOREPLY on a setting interval.
-
-Ping mode uses a raw socket to send a ECO packet, then uses select()
-to wait and recvfrom() to receive the ECOREPLY packet, if select()
-shows the data is ready, and the data is not the expected ECOREPLY,
-and waiting time is not overdue, it will continue use select() and
-recvfrom().
-
-Problem is that the raw socket can receive any icmp packets, if we do
-not set filters, and there are many icmp packets on socket, this
-program will not find its interested ECOREPLY packet in a special
-interval, which makes the ping mode fail.
-
-
-Other program is that watchdog sometime can not reach the call of
-recvfrom to try to receive packets since tv_sec of struct timeval
-of select parameter is 0.
-
-The timeout of select() is the result of ping interval minusing the
-time of calling gettimeofday spending, when ping interval is 1 second,
-and the call of gettimeofday() spends several useconds, the tv_sec of
-struct timeval of select parameter must be 0, at that condition, we
-should it is valid of tv_sec of struct timeval of select parameter be 0 
-
-Signed-off-by: Roy.Li <rongqing.li@windriver.com>
----
- src/net.c      |    2 +-
- src/watchdog.c |    5 ++++-
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-Index: watchdog-5.14/src/watchdog.c
-===================================================================
---- watchdog-5.14.orig/src/watchdog.c
-+++ watchdog-5.14/src/watchdog.c
-@@ -24,6 +24,7 @@
- #include <sys/types.h>
- #include <sys/ioctl.h>
- #include <linux/oom.h>
-+#include <linux/icmp.h>
- #include <linux/watchdog.h>
- #include <string.h>
- 
-Index: watchdog-5.14/src/net.c
-===================================================================
---- watchdog-5.14.orig/src/net.c
-+++ watchdog-5.14/src/net.c
-@@ -11,7 +11,8 @@
- #include <errno.h>
- #include <sys/time.h>
- #include <netinet/ip.h>
--#include <netinet/ip_icmp.h>
-+#include <linux/icmp.h>
-+//#include <netinet/ip_icmp.h>
- #include <fcntl.h>
- #include <string.h>
- #include <unistd.h>		/* for gethostname() etc */
-@@ -179,6 +180,9 @@ int open_netcheck(struct list *tlist)
- {
- 	struct list *act;
- 	int hold = 0;
-+	struct icmp_filter filt;
-+	filt.data = ~(1<<ICMP_ECHOREPLY);
-+
- 
- 	if (tlist != NULL) {
- 		for (act = tlist; act != NULL; act = act->next) {
-@@ -202,6 +206,7 @@ int open_netcheck(struct list *tlist)
- 			    fatal_error(EX_SYSERR, "error opening socket (%s)", strerror(errno));
- 			}
- 
-+			setsockopt(net->sock_fp, SOL_RAW, ICMP_FILTER, (char*)&filt, sizeof(filt));
- 			/* this is necessary for broadcast pings to work */
- 			(void)setsockopt(net->sock_fp, SOL_SOCKET, SO_BROADCAST, (char *)&hold, sizeof(hold));
- 
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch
deleted file mode 100644
index 2fad3a1..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Fix out of tree build support:
-
-| installing /etc/watchdog.conf
-|  /bin/mkdir -p '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man5'
-|  /bin/mkdir -p '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man8'
-|  /usr/bin/install -c -m 644 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/watchdog.conf.5 '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man5'
-|  /usr/bin/install -c -m 644 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/watchdog.8 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/wd_keepalive.8 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/wd_identify.8 '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man8'
-| /usr/bin/install: cannot stat `watchdog.conf': No such file or directory
-| make[2]: *** [install-etc-local] Error 1
-
-Upstream-Status: Pending
-
-RP 2013/03/21
-
-Index: watchdog-5.13/Makefile.am
-===================================================================
---- watchdog-5.13.orig/Makefile.am	2013-02-01 11:15:44.000000000 +0000
-+++ watchdog-5.13/Makefile.am	2013-03-21 11:59:35.637139031 +0000
-@@ -16,7 +16,7 @@
- 	else \
- 	        echo "installing $(CONFIG_FILENAME)"; \
- 		$(mkinstalldirs) `dirname $(DESTDIR)$(CONFIG_FILENAME)`; \
--	        $(INSTALL_DATA) watchdog.conf $(DESTDIR)$(CONFIG_FILENAME); \
-+	        $(INSTALL_DATA) $(srcdir)/watchdog.conf $(DESTDIR)$(CONFIG_FILENAME); \
- 	fi
- 
- install-data-local: install-etc-local
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/wd_keepalive.init b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/wd_keepalive.init
new file mode 100644
index 0000000..1d3e4c5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/wd_keepalive.init
@@ -0,0 +1,121 @@
+#!/bin/sh
+#/etc/init.d/wd_keepalive: start wd_keepalive daemon.
+
+### BEGIN INIT INFO
+# Provides:          wd_keepalive
+# Short-Description: Start watchdog keepalive daemon
+# Required-Start:    $remote_fs
+# Required-Stop:     $remote_fs
+# X-Start-Before:    $all
+# Default-Start:     2 3 4 5
+# Default-Stop
+### END INIT INFO
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+test -x /usr/sbin/wd_keepalive || exit 0
+
+# For configuration of the init script use the file
+# /etc/default/watchdog, do not edit this init script.
+
+# Set run_watchdog to 1 to start watchdog or 0 to disable it.
+run_watchdog=0
+
+# Specify additional watchdog options here (see manpage).
+watchdog_options=""
+
+# Specify module to load
+watchdog_module="none"
+
+[ -e /etc/default/watchdog ] && . /etc/default/watchdog
+
+NAME=wd_keepalive
+DAEMON=/usr/sbin/wd_keepalive
+
+STOP_RETRY_SCHEDULE='TERM/10/forever/KILL/1'
+
+# . /lib/lsb/init-functions
+
+# Mock Debian stuff
+log_begin_msg() {
+    echo -n $*
+}
+
+log_end_msg() {
+    if [ "$1" = "0" ]; then
+        echo 'done'
+    else
+        echo 'error'
+    fi
+}
+
+log_daemon_msg() {
+    echo $*
+}
+
+log_progress_msg() {
+    echo $*
+}
+
+
+case "$1" in
+  start)
+    if [ $run_watchdog = 1 ]
+    then
+        [ ${watchdog_module:-none} != "none" ] && /sbin/modprobe $watchdog_module
+	echo -n "Starting watchdog keepalive daemon: "
+	if start-stop-daemon --start --quiet \
+	    --exec $DAEMON -- $watchdog_options
+	then
+	    echo wd_keepalive.
+	else
+	    echo
+	fi
+    fi
+    ;;
+
+  stop)
+    if [ $run_watchdog = 1 ]
+    then
+	echo -n "Stopping watchdog keepalive daemon: "
+	if start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
+	    $STOP_RETRY_SCHEDULE
+	then
+	    echo wd_keepalive.
+	else
+	    echo
+	fi
+    fi
+    ;;
+
+  status)
+    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+    ;;
+
+  restart)
+    $0 force-reload
+    ;;
+
+  force-reload)
+    if [ $run_watchdog = 0 ]; then exit 0; fi
+    echo -n "Restarting $NAME daemon."
+    start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
+	$STOP_RETRY_SCHEDULE
+    echo -n "."
+    if start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
+	--exec $DAEMON -- $watchdog_options
+    then
+	echo "done."
+    else
+	echo
+    fi
+    ;;
+
+  *)
+    echo "Usage: /etc/init.d/wd_keepalive {start|stop|status|restart|force-reload}"
+    exit 1
+
+esac
+
+exit 0
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.14.bb b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.14.bb
deleted file mode 100644
index 7330238..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.14.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Software watchdog"
-DESCRIPTION = "Watchdog is a daemon that checks if your system is still \
-working. If programs in user space are not longer executed \
-it will reboot the system."
-HOMEPAGE = "http://watchdog.sourceforge.net/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=172030&atid=860194"
-
-LICENSE = "GPL-2.0+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ecc0551bf54ad97f6b541720f84d6569"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \
-           file://fixsepbuild.patch \
-	   file://fix-ping-failure.patch \
-	   file://watchdog-init.patch \
-	   file://watchdog-conf.patch \
-	   file://0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch \
-"
-
-SRC_URI[md5sum] = "5b2dba0c593942f4acc100bca0d560c4"
-SRC_URI[sha256sum] = "620b2f49e9879f2e85c73d4c1f422f9101e6b38e824fea2414befd8bb6866ad1"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/watchdog/files/watchdog/"
-UPSTREAM_CHECK_REGEX = "/watchdog/(?P<pver>(\d+[\.\-_]*)+)/"
-
-inherit autotools
-inherit update-rc.d
-
-DEPENDS_append_libc-musl = " libtirpc "
-CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc "
-LDFLAGS_append_libc-musl = " -ltirpc "
-EXTRA_OECONF_append_libc-musl = " --disable-nfs "
-
-INITSCRIPT_NAME = "watchdog.sh"
-INITSCRIPT_PARAMS = "start 15 1 2 3 4 5 . stop 85 0 6 ."
-
-RRECOMMENDS_${PN} = "kernel-module-softdog"
-
-do_install_append() {
-	install -D ${S}/redhat/watchdog.init ${D}/${sysconfdir}/init.d/watchdog.sh
-}
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.15.bb b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.15.bb
new file mode 100644
index 0000000..cedfc04
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.15.bb
@@ -0,0 +1,59 @@
+SUMMARY = "Software watchdog"
+DESCRIPTION = "Watchdog is a daemon that checks if your system is still \
+working. If programs in user space are not longer executed \
+it will reboot the system."
+HOMEPAGE = "http://watchdog.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=172030&atid=860194"
+
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ecc0551bf54ad97f6b541720f84d6569"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \
+           file://0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch \
+           file://watchdog-init.patch \
+           file://watchdog-conf.patch \
+           file://wd_keepalive.init \
+"
+
+SRC_URI[md5sum] = "678c32f6f35a0492c9c1b76b4aa88828"
+SRC_URI[sha256sum] = "ffdc865137ad5d8e53664bd22bad4de6ca136d1b4636720320cb52af0c18947c"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/watchdog/files/watchdog/"
+UPSTREAM_CHECK_REGEX = "/watchdog/(?P<pver>(\d+[\.\-_]*)+)/"
+
+inherit autotools
+inherit update-rc.d
+
+DEPENDS_append_libc-musl = " libtirpc "
+CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc "
+LDFLAGS_append_libc-musl = " -ltirpc "
+EXTRA_OECONF_append_libc-musl = " --disable-nfs "
+
+INITSCRIPT_PACKAGES = "${PN} ${PN}-keepalive"
+
+INITSCRIPT_NAME_${PN} = "watchdog.sh"
+INITSCRIPT_PARAMS_${PN} = "start 15 1 2 3 4 5 . stop 85 0 6 ."
+
+INITSCRIPT_NAME_${PN}-keepalive = "wd_keepalive"
+INITSCRIPT_PARAMS_${PN}-keepalive = "start 15 1 2 3 4 5 . stop 85 0 6 ."
+
+do_install_append() {
+	install -D ${S}/redhat/watchdog.init ${D}/${sysconfdir}/init.d/watchdog.sh
+    install -Dm 0755 ${WORKDIR}/wd_keepalive.init ${D}${sysconfdir}/init.d/wd_keepalive
+
+    # watchdog.conf is provided by the watchdog-config recipe
+    rm ${D}${sysconfdir}/watchdog.conf
+}
+
+PACKAGES =+ "${PN}-keepalive"
+
+FILES_${PN}-keepalive = " \
+    ${sysconfdir}/init.d/wd_keepalive \
+    ${sbindir}/wd_keepalive \
+"
+
+RDEPENDS_${PN} += "${PN}-config ${PN}-keepalive"
+RDEPENDS_${PN}-keepalive += "${PN}-config"
+
+RRECOMMENDS_${PN} = "kernel-module-softdog"
+
diff --git a/import-layers/yocto-poky/meta/recipes-extended/wget/wget.inc b/import-layers/yocto-poky/meta/recipes-extended/wget/wget.inc
index dc381a6..c4abfe4 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/wget/wget.inc
+++ b/import-layers/yocto-poky/meta/recipes-extended/wget/wget.inc
@@ -9,7 +9,7 @@
 
 inherit autotools gettext texinfo update-alternatives pkgconfig
 
-EXTRA_OECONF = "--enable-ipv6 --with-ssl=gnutls --disable-rpath --disable-iri \
+EXTRA_OECONF = "--with-ssl=gnutls --disable-rpath --disable-iri \
                 --without-libgnutls-prefix ac_cv_header_uuid_uuid_h=no"
 
 ALTERNATIVE_${PN} = "wget"
@@ -20,8 +20,9 @@
 
 BBCLASSEXTEND += "nativesdk"
 
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
 PACKAGECONFIG[libuuid] = "--with-libuuid, --without-libuuid,util-linux"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
 
 # Let aclocal use the relative path for the m4 file rather than
 # absolute, otherwise there might be an "Argument list too long" error
diff --git a/import-layers/yocto-poky/meta/recipes-extended/wget/wget_1.17.1.bb b/import-layers/yocto-poky/meta/recipes-extended/wget/wget_1.17.1.bb
deleted file mode 100644
index dca5d1f..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/wget/wget_1.17.1.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
-           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
-          "
-
-SRC_URI[md5sum] = "a6a908c9ae0e6a4194c628974cc3f05a"
-SRC_URI[sha256sum] = "029fbb93bdc1c0c5a7507b6076a6ec2f8d34204a85aa87e5b2f61a9405b290f5"
-
-require wget.inc
diff --git a/import-layers/yocto-poky/meta/recipes-extended/wget/wget_1.18.bb b/import-layers/yocto-poky/meta/recipes-extended/wget/wget_1.18.bb
new file mode 100644
index 0000000..c969b98
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/wget/wget_1.18.bb
@@ -0,0 +1,8 @@
+SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
+           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
+          "
+
+SRC_URI[md5sum] = "fc2debd8399e3b933a9b226794e2a886"
+SRC_URI[sha256sum] = "a00a65fab84cc46e24c53ce88c45604668a7a479276e037dc2f558e34717fb2d"
+
+require wget.inc
diff --git a/import-layers/yocto-poky/meta/recipes-extended/which/which-2.18/fix_name_conflict_group_member.patch b/import-layers/yocto-poky/meta/recipes-extended/which/which-2.18/fix_name_conflict_group_member.patch
index fb9b1a4..0e0988b 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/which/which-2.18/fix_name_conflict_group_member.patch
+++ b/import-layers/yocto-poky/meta/recipes-extended/which/which-2.18/fix_name_conflict_group_member.patch
@@ -3,7 +3,7 @@
 # glibc also implements the function group_member. To avoid name conflict,
 # here let us append a "_" to which's version.
 #
-# Signed-off-by Dexuan Cui <dexuan.cui@intel.com>, 2010-08-20
+# Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>, 2010-08-20
 # (this patch is licensed under GPLv2)
 
 --- which-2.18/bash.c
diff --git a/import-layers/yocto-poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.1.bb b/import-layers/yocto-poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.1.bb
index c1472cf..5007498 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.1.bb
@@ -27,6 +27,7 @@
 
 UPSTREAM_CHECK_REGEX = "xdg-utils-(?P<pver>((\d+[\.\-_]*)+)((rc|alpha|beta)\d+)?)\.(tar\.gz|tgz)"
 
+# Needs brokensep as this doesn't use automake
 inherit autotools-brokensep distro_features_check
 
 # The xprop requires x11 in DISTRO_FEATURES
diff --git a/import-layers/yocto-poky/meta/recipes-extended/zip/zip-3.0/fix-security-format.patch b/import-layers/yocto-poky/meta/recipes-extended/zip/zip-3.0/fix-security-format.patch
new file mode 100644
index 0000000..19d8548
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-extended/zip/zip-3.0/fix-security-format.patch
@@ -0,0 +1,42 @@
+zip: Fixing security formatting issues
+
+Fix security formatting issues related to printing without NULL argument
+
+zip.c: In function 'help_extended':
+zip.c:1031:5: error: format not a string literal and no format arguments [-Werror=format-security]
+     printf(text[i]);
+     ^
+zip.c: In function 'version_info':
+zip.c:1228:5: error: format not a string literal and no format arguments [-Werror=format-security]
+     printf(cryptnote[i]);
+     ^
+
+[YOCTO #9552]
+[https://bugzilla.yoctoproject.org/show_bug.cgi?id=9552]
+
+Upstream-Status: Pending
+
+Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
+
+diff --git a/zip.c b/zip.c
+index 439821f..d7da768 100644
+--- a/zip.c
++++ b/zip.c
+@@ -1028,7 +1028,7 @@ local void help_extended()
+ 
+   for (i = 0; i < sizeof(text)/sizeof(char *); i++)
+   {
+-    printf(text[i]);
++    fputs(text[i],stdout);
+     putchar('\n');
+   }
+ #ifdef DOS
+@@ -1225,7 +1225,7 @@ local void version_info()
+             CR_MAJORVER, CR_MINORVER, CR_BETA_VER, CR_VERSION_DATE);
+   for (i = 0; i < sizeof(cryptnote)/sizeof(char *); i++)
+   {
+-    printf(cryptnote[i]);
++    fputs(cryptnote[i],stdout);
+     putchar('\n');
+   }
+   ++i;  /* crypt support means there IS at least one compilation option */
diff --git a/import-layers/yocto-poky/meta/recipes-extended/zip/zip.inc b/import-layers/yocto-poky/meta/recipes-extended/zip/zip.inc
deleted file mode 100644
index 6221c5e..0000000
--- a/import-layers/yocto-poky/meta/recipes-extended/zip/zip.inc
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Compressor/archiver for creating and modifying .zip files"
-HOMEPAGE = "http://www.info-zip.org"
-SECTION = "console/utils"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=04d43c5d70b496c032308106e26ae17d"
-
-SRC_URI = "ftp://ftp.info-zip.org/pub/infozip/src/zip${@d.getVar('PV',1).replace('.', '')}.tgz"
-
-EXTRA_OEMAKE = "'CC=${CC}' 'BIND=${CC}' 'AS=${CC} -c' 'CPP=${CPP}' \
-		'CFLAGS=-I. -DUNIX ${CFLAGS}' 'INSTALL=install' \
-		'BINFLAGS=0755' 'INSTALL_D=install -d'"
-
-do_compile() {
-	oe_runmake -f unix/Makefile flags IZ_BZIP2=no_such_directory
-	sed -i 's#LFLAGS1=""#LFLAGS1="${LDFLAGS}"#' flags
-	oe_runmake -f unix/Makefile generic IZ_BZIP2=no_such_directory
-}
-
-do_install() {
-	oe_runmake -f unix/Makefile prefix=${D}${prefix} \
-		   BINDIR=${D}${bindir} MANDIR=${D}${mandir}/man1 \
-		   install
-}
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-extended/zip/zip_3.0.bb b/import-layers/yocto-poky/meta/recipes-extended/zip/zip_3.0.bb
index 383da4b..087423a 100644
--- a/import-layers/yocto-poky/meta/recipes-extended/zip/zip_3.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-extended/zip/zip_3.0.bb
@@ -1,18 +1,42 @@
-require zip.inc
+SUMMARY = "Compressor/archiver for creating and modifying .zip files"
+HOMEPAGE = "http://www.info-zip.org"
+SECTION = "console/utils"
 
-PR="r2"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=04d43c5d70b496c032308106e26ae17d"
 
-# zip-2.32 still uses directory name of zip-2.30
+PR = "r2"
+
 S = "${WORKDIR}/zip30"
 
+SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz \
+           file://fix-security-format.patch"
+
 SRC_URI[md5sum] = "7b74551e63f8ee6aab6fbc86676c0d37"
 SRC_URI[sha256sum] = "f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369"
 
-# exclude version 2.3.2 which triggers a false positive
-UPSTREAM_CHECK_REGEX = "^zip(?P<pver>(?!232).+)\.tgz"
-
 # zip.inc sets CFLAGS, but what Makefile actually uses is
 # CFLAGS_NOOPT.  It will also force -O3 optimization, overriding
 # whatever we set.
-#
-EXTRA_OEMAKE_append = " 'CFLAGS_NOOPT=-I. -DUNIX ${CFLAGS}'"
+EXTRA_OEMAKE = "'CC=${CC}' 'BIND=${CC}' 'AS=${CC} -c' 'CPP=${CPP}' \
+		'CFLAGS=-I. -DUNIX ${CFLAGS}' \
+		'CFLAGS_NOOPT=-I. -DUNIX ${CFLAGS}' \
+		'INSTALL=install' 'INSTALL_D=install -d' \
+		'BINFLAGS=0755'"
+
+do_compile() {
+	oe_runmake -f unix/Makefile flags IZ_BZIP2=no_such_directory
+	sed -i 's#LFLAGS1=""#LFLAGS1="${LDFLAGS}"#' flags
+	oe_runmake -f unix/Makefile generic IZ_BZIP2=no_such_directory
+}
+
+do_install() {
+	oe_runmake -f unix/Makefile prefix=${D}${prefix} \
+		   BINDIR=${D}${bindir} MANDIR=${D}${mandir}/man1 \
+		   install
+}
+
+BBCLASSEXTEND = "native"
+
+# exclude version 2.3.2 which triggers a false positive
+UPSTREAM_CHECK_REGEX = "^zip(?P<pver>(?!232).+)\.tgz"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/epiphany/epiphany_3.18.4.bb b/import-layers/yocto-poky/meta/recipes-gnome/epiphany/epiphany_3.18.4.bb
deleted file mode 100644
index 869569c..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/epiphany/epiphany_3.18.4.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "WebKit based web browser for GNOME"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = "libsoup-2.4 webkitgtk gtk+3 iso-codes ca-certificates avahi libnotify gcr libwnck3 \
-	   gsettings-desktop-schemas gnome-desktop3 libxml2-native intltool-native"
-
-inherit gnomebase gsettings distro_features_check upstream-version-is-even
-# libwnck3 is x11 only
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI += "file://0001-yelp.m4-drop-the-check-for-itstool.patch"
-SRC_URI[archive.md5sum] = "172b78256100e8d3c629764abd0e1495"
-SRC_URI[archive.sha256sum] = "be699d484371111abae754e669187215df73e21533f461e513b79537d7a1c1c1"
-
-EXTRA_OECONF += " --disable-nss --with-distributor-name=${DISTRO}"
-
-do_configure_prepend() {
-    touch ${S}/gnome-doc-utils.make
-    sed -i -e s:help::g ${S}/Makefile.am
-}
-
-FILES_${PN} += "${datadir}/appdata ${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers"
-RDEPENDS_${PN} = "iso-codes adwaita-icon-theme"
-RRECOMMENDS_${PN} = "ca-certificates"
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/epiphany/epiphany_3.20.3.bb b/import-layers/yocto-poky/meta/recipes-gnome/epiphany/epiphany_3.20.3.bb
new file mode 100644
index 0000000..eba480b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/epiphany/epiphany_3.20.3.bb
@@ -0,0 +1,25 @@
+SUMMARY = "WebKit based web browser for GNOME"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "libsoup-2.4 webkitgtk gtk+3 iso-codes ca-certificates avahi libnotify gcr libwnck3 \
+	   gsettings-desktop-schemas gnome-desktop3 libxml2-native intltool-native"
+
+inherit gnomebase gsettings distro_features_check upstream-version-is-even
+# libwnck3 is x11 only
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI += "file://0001-yelp.m4-drop-the-check-for-itstool.patch"
+SRC_URI[archive.md5sum] = "31822b6b199f724f212ae9200bc055f1"
+SRC_URI[archive.sha256sum] = "4d9de1bdb44c14adf25aa6dc02ea3de60925cff5eb01fe89545e6032c9b424a2"
+
+EXTRA_OECONF += " --disable-nss --with-distributor-name=${DISTRO}"
+
+do_configure_prepend() {
+    sed -i -e s:help::g ${S}/Makefile.am
+}
+
+FILES_${PN} += "${datadir}/appdata ${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers"
+RDEPENDS_${PN} = "iso-codes adwaita-icon-theme"
+RRECOMMENDS_${PN} = "ca-certificates"
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gcr/gcr_3.18.0.bb b/import-layers/yocto-poky/meta/recipes-gnome/gcr/gcr_3.18.0.bb
deleted file mode 100644
index 32523a6..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gcr/gcr_3.18.0.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "A library for bits of crypto UI and parsing etc"
-HOMEPAGE = "http://www.gnome.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
-
-DEPENDS = "gtk+3 p11-kit glib-2.0 libgcrypt"
-
-inherit autotools gnomebase gtk-icon-cache gtk-doc distro_features_check upstream-version-is-even vala gobject-introspection
-# depends on gtk+3, but also x11 through gtk+-x11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI[archive.md5sum] = "b959bac99e17c9bb0990a15c9be11aed"
-SRC_URI[archive.sha256sum] = "d4d16da5af55148a694055835ccd07ad34daf0ad03bdad929bf7cad15637ce00"
-
-FILES_${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/gcr-3 \
-"
-
-# http://errors.yoctoproject.org/Errors/Details/20229/
-ARM_INSTRUCTION_SET = "arm"
-
-# on x86-64 the introspection binary goes into 
-# an infinite loop under qemu during compilation, 
-# printing the following:
-# 
-# gcrypt-Message: select() error: Bad address
-#
-# gcrypt-Message: select() error: Bad address
-#
-# gcrypt-Message: select() error: Bad address
-#
-# This will be investigated later.
-EXTRA_OECONF_append_x86-64 = " --disable-introspection"
-
-# Gcr-3.broken: poky/build-mips64/tmp/work/mips64-poky-linux/libgpg-error/1.19-r0/libgpg-error-1.19/src/posix-lock.c:119: get_lock_object: Assertion `!"sizeof lock obj"' failed.
-# qemu: uncaught target signal 6 (Aborted) - core dumped
-EXTRA_OECONF_append_mips64 = " --disable-introspection"
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gcr/gcr_3.20.0.bb b/import-layers/yocto-poky/meta/recipes-gnome/gcr/gcr_3.20.0.bb
new file mode 100644
index 0000000..b32a455
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gcr/gcr_3.20.0.bb
@@ -0,0 +1,40 @@
+SUMMARY = "A library for bits of crypto UI and parsing etc"
+HOMEPAGE = "http://www.gnome.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+DEPENDS = "intltool-native gtk+3 p11-kit glib-2.0 libgcrypt"
+
+inherit autotools gnomebase gtk-icon-cache gtk-doc distro_features_check upstream-version-is-even vala gobject-introspection
+# depends on gtk+3, but also x11 through gtk+-x11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.md5sum] = "4314bf89eac293dd0a9d806593ff1b35"
+SRC_URI[archive.sha256sum] = "90572c626d8a708225560c42b4421f7941315247fa1679d4ef569bde7f4bb379"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/gcr-3 \
+"
+
+# http://errors.yoctoproject.org/Errors/Details/20229/
+ARM_INSTRUCTION_SET = "arm"
+
+# on x86-64 the introspection binary goes into 
+# an infinite loop under qemu during compilation, 
+# printing the following:
+# 
+# gcrypt-Message: select() error: Bad address
+#
+# gcrypt-Message: select() error: Bad address
+#
+# gcrypt-Message: select() error: Bad address
+#
+# This will be investigated later.
+EXTRA_OECONF_append_x86-64 = " --disable-introspection --disable-gtk-doc"
+
+# Gcr-3.broken: poky/build-mips64/tmp/work/mips64-poky-linux/libgpg-error/1.19-r0/libgpg-error-1.19/src/posix-lock.c:119: get_lock_object: Assertion `!"sizeof lock obj"' failed.
+# qemu: uncaught target signal 6 (Aborted) - core dumped
+EXTRA_OECONF_append_mips64 = " --disable-introspection --disable-gtk-doc"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.32.3.bb b/import-layers/yocto-poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.32.3.bb
deleted file mode 100644
index ba94eec..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.32.3.bb
+++ /dev/null
@@ -1,102 +0,0 @@
-SUMMARY = "Image loading library for GTK+"
-HOMEPAGE = "http://www.gtk.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
-                    file://gdk-pixbuf/gdk-pixbuf.h;endline=26;md5=72b39da7cbdde2e665329fef618e1d6b"
-
-SECTION = "libs"
-
-DEPENDS = "glib-2.0"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
-           file://hardcoded_libtool.patch \
-           file://extending-libinstall-dependencies.patch \
-           file://run-ptest \
-           file://fatal-loader.patch \
-           "
-
-SRC_URI[md5sum] = "9275076639baa24a342f3e02c402920e"
-SRC_URI[sha256sum] = "2b6771f1ac72f687a8971e59810b8dc658e65e7d3086bd2e676e618fd541d031"
-
-inherit autotools pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection
-
-LIBV = "2.10.0"
-
-GDK_PIXBUF_LOADERS ?= "png jpeg"
-
-PACKAGECONFIG ??= "${GDK_PIXBUF_LOADERS}"
-PACKAGECONFIG_linuxstdbase = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} ${GDK_PIXBUF_LOADERS}"
-PACKAGECONFIG_class-native = "${GDK_PIXBUF_LOADERS}"
-
-PACKAGECONFIG[png] = "--with-libpng,--without-libpng,libpng"
-PACKAGECONFIG[jpeg] = "--with-libjpeg,--without-libjpeg,jpeg"
-PACKAGECONFIG[tiff] = "--with-libtiff,--without-libtiff,tiff"
-PACKAGECONFIG[jpeg2000] = "--with-libjasper,--without-libjasper,jasper"
-
-# Use GIO to sniff image format instead of trying all loaders
-PACKAGECONFIG[gio-sniff] = "--enable-gio-sniffing,--disable-gio-sniffing,,shared-mime-info"
-PACKAGECONFIG[x11] = "--with-x11,--without-x11,virtual/libx11"
-
-PACKAGES =+ "${PN}-xlib"
-
-FILES_${PN}-xlib = "${libdir}/*pixbuf_xlib*${SOLIBS}"
-ALLOW_EMPTY_${PN}-xlib = "1"
-
-FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
-
-FILES_${PN}-dev += " \
-	${bindir}/gdk-pixbuf-csource \
-	${bindir}/gdk-pixbuf-pixdata \
-	${includedir}/* \
-	${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders/*.la \
-"
-
-PACKAGES_DYNAMIC += "^gdk-pixbuf-loader-.*"
-PACKAGES_DYNAMIC_class-native = ""
-
-python populate_packages_prepend () {
-    postinst_pixbufloader = d.getVar("postinst_pixbufloader", True)
-
-    loaders_root = d.expand('${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders')
-
-    packages = ' '.join(do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s'))
-    d.setVar('PIXBUF_PACKAGES', packages)
-
-    # The test suite exercises all the loaders, so ensure they are all
-    # dependencies of the ptest package.
-    d.appendVar("RDEPENDS_gdk-pixbuf-ptest", " " + packages)
-}
-
-do_install_append() {
-	# Move gdk-pixbuf-query-loaders into libdir so it is always available
-	# in multilib builds.
-	mv ${D}/${bindir}/gdk-pixbuf-query-loaders ${D}/${libdir}/gdk-pixbuf-2.0/
-}
-
-do_install_append_class-native() {
-	find ${D}${libdir} -name "libpixbufloader-*.la" -exec rm \{\} \;
-
-	create_wrapper ${D}/${bindir}/gdk-pixbuf-csource \
-		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
-
-	create_wrapper ${D}/${bindir}/gdk-pixbuf-pixdata \
-		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
-
-	create_wrapper ${D}/${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
-		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache \
-		GDK_PIXBUF_MODULEDIR=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders
-}
-BBCLASSEXTEND = "native"
-
-SSTATEPREINSTFUNCS_append_class-native = " gdkpixbuf_sstate_preinst"
-SYSROOT_PREPROCESS_FUNCS_append_class-native = " gdkpixbuf_sstate_preinst"
-
-gdkpixbuf_sstate_preinst() {
-	if [ "${BB_CURRENTTASK}" = "populate_sysroot" ]; then
-		rm -rf ${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/*
-	fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.34.0.bb b/import-layers/yocto-poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.34.0.bb
new file mode 100644
index 0000000..4f39494
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.34.0.bb
@@ -0,0 +1,102 @@
+SUMMARY = "Image loading library for GTK+"
+HOMEPAGE = "http://www.gtk.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://gdk-pixbuf/gdk-pixbuf.h;endline=26;md5=72b39da7cbdde2e665329fef618e1d6b"
+
+SECTION = "libs"
+
+DEPENDS = "glib-2.0"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
+           file://hardcoded_libtool.patch \
+           file://extending-libinstall-dependencies.patch \
+           file://run-ptest \
+           file://fatal-loader.patch \
+           "
+
+SRC_URI[md5sum] = "63cb19f92cf7709ccf44bbb6fe1ff70c"
+SRC_URI[sha256sum] = "d55e5b383ee219bd0e23bf6ed4427d56a7db5379729a6e3e0a0e0eba9a8d8879"
+
+inherit autotools pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection gtk-doc
+
+LIBV = "2.10.0"
+
+GDK_PIXBUF_LOADERS ?= "png jpeg"
+
+PACKAGECONFIG ??= "${GDK_PIXBUF_LOADERS}"
+PACKAGECONFIG_linuxstdbase = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} ${GDK_PIXBUF_LOADERS}"
+PACKAGECONFIG_class-native = "${GDK_PIXBUF_LOADERS}"
+
+PACKAGECONFIG[png] = "--with-libpng,--without-libpng,libpng"
+PACKAGECONFIG[jpeg] = "--with-libjpeg,--without-libjpeg,jpeg"
+PACKAGECONFIG[tiff] = "--with-libtiff,--without-libtiff,tiff"
+PACKAGECONFIG[jpeg2000] = "--with-libjasper,--without-libjasper,jasper"
+
+# Use GIO to sniff image format instead of trying all loaders
+PACKAGECONFIG[gio-sniff] = "--enable-gio-sniffing,--disable-gio-sniffing,,shared-mime-info"
+PACKAGECONFIG[x11] = "--with-x11,--without-x11,virtual/libx11"
+
+PACKAGES =+ "${PN}-xlib"
+
+FILES_${PN}-xlib = "${libdir}/*pixbuf_xlib*${SOLIBS}"
+ALLOW_EMPTY_${PN}-xlib = "1"
+
+FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
+
+FILES_${PN}-dev += " \
+	${bindir}/gdk-pixbuf-csource \
+	${bindir}/gdk-pixbuf-pixdata \
+	${includedir}/* \
+	${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders/*.la \
+"
+
+PACKAGES_DYNAMIC += "^gdk-pixbuf-loader-.*"
+PACKAGES_DYNAMIC_class-native = ""
+
+python populate_packages_prepend () {
+    postinst_pixbufloader = d.getVar("postinst_pixbufloader", True)
+
+    loaders_root = d.expand('${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders')
+
+    packages = ' '.join(do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s'))
+    d.setVar('PIXBUF_PACKAGES', packages)
+
+    # The test suite exercises all the loaders, so ensure they are all
+    # dependencies of the ptest package.
+    d.appendVar("RDEPENDS_gdk-pixbuf-ptest", " " + packages)
+}
+
+do_install_append() {
+	# Move gdk-pixbuf-query-loaders into libdir so it is always available
+	# in multilib builds.
+	mv ${D}/${bindir}/gdk-pixbuf-query-loaders ${D}/${libdir}/gdk-pixbuf-2.0/
+}
+
+do_install_append_class-native() {
+	find ${D}${libdir} -name "libpixbufloader-*.la" -exec rm \{\} \;
+
+	create_wrapper ${D}/${bindir}/gdk-pixbuf-csource \
+		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
+
+	create_wrapper ${D}/${bindir}/gdk-pixbuf-pixdata \
+		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
+
+	create_wrapper ${D}/${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
+		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache \
+		GDK_PIXBUF_MODULEDIR=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders
+}
+BBCLASSEXTEND = "native"
+
+SSTATEPREINSTFUNCS_append_class-native = " gdkpixbuf_sstate_preinst"
+SYSROOT_PREPROCESS_FUNCS_append_class-native = " gdkpixbuf_sstate_preinst"
+
+gdkpixbuf_sstate_preinst() {
+	if [ "${BB_CURRENTTASK}" = "populate_sysroot" ]; then
+		rm -rf ${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/*
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.18.2.bb b/import-layers/yocto-poky/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.18.2.bb
deleted file mode 100644
index ee460d9..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.18.2.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "GNOME library for reading .desktop files"
-SECTION = "x11/gnome"
-LICENSE = "GPLv2 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-BPN = "gnome-desktop"
-
-inherit gnome pkgconfig upstream-version-is-even gobject-introspection
-SRC_URI[archive.md5sum] = "9a5875247abdb99bad93f1c4230d1d6d"
-SRC_URI[archive.sha256sum] = "ddd46d022de137543a71f50c7392b32f9b98d5d3f2b53040b35f5802de2e7b56"
-
-DEPENDS += "gsettings-desktop-schemas gconf libxrandr virtual/libx11 gtk+3 glib-2.0 gnome-doc-utils gnome-common startup-notification xkeyboard-config iso-codes"
-
-inherit distro_features_check
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = "--disable-desktop-docs"
-
-PACKAGES =+ "libgnome-desktop3"
-FILES_libgnome-desktop3 = "${libdir}/lib*${SOLIBS} ${datadir}/libgnome-desktop*/pnp.ids ${datadir}/gnome/*xml"
-
-RRECOMMENDS_libgnome-desktop3 += "gsettings-desktop-schemas"
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.20.2.bb b/import-layers/yocto-poky/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.20.2.bb
new file mode 100644
index 0000000..eb061b2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.20.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "GNOME library for reading .desktop files"
+SECTION = "x11/gnome"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+BPN = "gnome-desktop"
+
+inherit gnome pkgconfig upstream-version-is-even gobject-introspection
+SRC_URI[archive.md5sum] = "8354ed38624f5eb6b5d34267b658a9c9"
+SRC_URI[archive.sha256sum] = "492c2da7aa8c3a8b65796e8171fc8f0dfb5d322dd2799c0d76392e1fb061e2b2"
+
+DEPENDS += "intltool-native gsettings-desktop-schemas gconf libxrandr virtual/libx11 gtk+3 glib-2.0 startup-notification xkeyboard-config iso-codes"
+
+inherit distro_features_check gtk-doc
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF = "--disable-desktop-docs"
+
+PACKAGES =+ "libgnome-desktop3"
+FILES_libgnome-desktop3 = "${libdir}/lib*${SOLIBS} ${datadir}/libgnome-desktop*/pnp.ids ${datadir}/gnome/*xml"
+
+RRECOMMENDS_libgnome-desktop3 += "gsettings-desktop-schemas"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.18.0.bb b/import-layers/yocto-poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.18.0.bb
deleted file mode 100644
index 81c8845..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.18.0.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "GTK+ icon theme"
-HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/adwaita-icon-theme/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "x11/gnome"
-
-LICENSE = "LGPL-3.0 | CC-BY-SA-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c"
-
-inherit allarch autotools pkgconfig gettext gtk-icon-cache upstream-version-is-even
-
-DEPENDS += "intltool-native"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
-          "
-
-SRC_URI[md5sum] = "ec1fa3fde83ad166ae7075a97dc1ec4b"
-SRC_URI[sha256sum] = "5e9ce726001fdd8ee93c394fdc3cdb9e1603bbed5b7c62df453ccf521ec50e58"
-
-do_install_append() {
-	# Build uses gtk-encode-symbolic-svg to create png versions:
-        # no need to store the svgs anymore.
-	rm -f ${D}${prefix}/share/icons/Adwaita/scalable/*/*-symbolic.svg \
-	      ${D}${prefix}/share/icons/Adwaita/scalable/*/*-symbolic-rtl.svg
-}
-
-PACKAGES = "${PN}-cursors ${PN}-symbolic ${PN}-hires ${PN}"
-
-RREPLACES_${PN} = "gnome-icon-theme"
-RCONFLICTS_${PN} = "gnome-icon-theme"
-RPROVIDES_${PN} = "gnome-icon-theme"
-
-FILES_${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/"
-FILES_${PN}-symbolic = "${prefix}/share/icons/Adwaita/*/*/*.symbolic.png"
-FILES_${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/"
-FILES_${PN} = "${prefix}/share/icons/Adwaita/ \
-               ${prefix}/share/pkgconfig/adwaita-icon-theme.pc"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.20.bb b/import-layers/yocto-poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.20.bb
new file mode 100644
index 0000000..bb0eaeb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.20.bb
@@ -0,0 +1,41 @@
+SUMMARY = "GTK+ icon theme"
+HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/adwaita-icon-theme/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome"
+
+LICENSE = "LGPL-3.0 | CC-BY-SA-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c"
+
+inherit allarch autotools pkgconfig gettext gtk-icon-cache upstream-version-is-even
+
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
+          "
+
+SRC_URI[md5sum] = "411be2bd68dd8b0a3c86aca2eb351ce4"
+SRC_URI[sha256sum] = "7a0a887349f340dd644032f89d81264b694c4b006bd51af1c2c368d431e7ae35"
+
+do_install_append() {
+	# Build uses gtk-encode-symbolic-svg to create png versions:
+        # no need to store the svgs anymore.
+	rm -f ${D}${prefix}/share/icons/Adwaita/scalable/*/*-symbolic.svg \
+	      ${D}${prefix}/share/icons/Adwaita/scalable/*/*-symbolic-rtl.svg
+}
+
+PACKAGES = "${PN}-cursors ${PN}-symbolic-hires ${PN}-symbolic ${PN}-hires ${PN}"
+
+RREPLACES_${PN} = "gnome-icon-theme"
+RCONFLICTS_${PN} = "gnome-icon-theme"
+RPROVIDES_${PN} = "gnome-icon-theme"
+
+FILES_${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/"
+FILES_${PN}-symbolic-hires = "${prefix}/share/icons/Adwaita/96x96/*/*.symbolic.png \
+                              ${prefix}/share/icons/Adwaita/64x64/*/*.symbolic.png \
+                              ${prefix}/share/icons/Adwaita/48x48/*/*.symbolic.png \
+                              ${prefix}/share/icons/Adwaita/32x32/*/*.symbolic.png"
+FILES_${PN}-symbolic = "${prefix}/share/icons/Adwaita/16x16/*/*.symbolic.png \
+                        ${prefix}/share/icons/Adwaita/24x24/*/*.symbolic.png"
+FILES_${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/"
+FILES_${PN} = "${prefix}/share/icons/Adwaita/ \
+               ${prefix}/share/pkgconfig/adwaita-icon-theme.pc"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils.inc b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils.inc
deleted file mode 100644
index 8adfac7..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "A collection of documentation utilities for the Gnome project"
-DESCRIPTION = "The GNOME Documentation Build Utilities (gnome-doc- \
-utils) were created to make it easier for application developers to \
-include and create documentation in their releases. They include the \
-xml2po tool which makes it easier to translate and keep up to date \
-translations of documentation."
-LICENSE = "GPLv2 & LGPLv2.1"
-DEPENDS = "libxml2 libxslt libxslt-native gnome-doc-utils-native glib-2.0"
-DEPENDS_class-native = "libxml2-native libxslt-native intltool-native glib-2.0-native"
-
-inherit gnomebase gettext python-dir pythonnative autotools-brokensep
-
-CLEANBROKEN = "1"
-
-EXTRA_OECONF += "--disable-scrollkeeper"
-
-do_install_append() {
-	chown -R root:root ${D}
-}
-
-do_install_append_class-native () {
-	sed -i -e 's|^#!.*/usr/bin/env python|#! /usr/bin/env nativepython|' ${D}${bindir}/xml2po
-}
-
-FILES_${PN} += "${datadir}/xml* ${PYTHON_SITEPACKAGES_DIR}/*"
-
-RDEPENDS_${PN} = "bash"
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch
new file mode 100644
index 0000000..4cfcabd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch
@@ -0,0 +1,40 @@
+From 426e38468463a4abb495cf6a269b9635b2107519 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 17 May 2016 13:51:24 +0300
+Subject: [PATCH] glib-gettext.m4: Update AM_GLIB_GNU_GETTEXT to match glib
+
+This avoids
+  error: m4_copy: won't overwrite defined macro: glib_DEFUN
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Inappropriate [No upstream]
+---
+ m4/glib-gettext.m4 | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/m4/glib-gettext.m4 b/m4/glib-gettext.m4
+index 81f8fd2..e2b142b 100644
+--- a/m4/glib-gettext.m4
++++ b/m4/glib-gettext.m4
+@@ -310,7 +310,7 @@ msgstr ""
+ # on various variables needed by the Makefile.in.in installed by
+ # glib-gettextize.
+ dnl
+-glib_DEFUN([GLIB_GNU_GETTEXT],
++AU_DEFUN([GLIB_GNU_GETTEXT],
+   [AC_REQUIRE([AC_PROG_CC])dnl
+    AC_REQUIRE([AC_HEADER_STDC])dnl
+ 
+@@ -381,7 +381,8 @@ glib_DEFUN([GLIB_GNU_GETTEXT],
+    rm -f po/POTFILES
+    sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ 	< $srcdir/po/POTFILES.in > po/POTFILES
+-  ])
++  ]
++  [[$0: This macro is deprecated. You should use upstream gettext instead.]])
+ 
+ # AX_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+ # -------------------------------
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/sysrooted-pkg-config.patch b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/sysrooted-pkg-config.patch
deleted file mode 100644
index 416d698..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/sysrooted-pkg-config.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-In cross environment we have to prepend the sysroot to the path found by
-pkgconfig since the path returned from pkgconfig does not have sysroot prefixed
-it ends up using the files from host system. Now usually people have gnome installed
-so the build succeeds but if you dont have gnome installed on build host then
-it wont find the files on host system and packages using gnome-doc-utils wont
-compile.
-
-This should work ok with non sysrooted builds too since in those cases PKG_CONFIG_SYSROOT_DIR
-will be empty
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: gnome-doc-utils-0.20.10/tools/gnome-doc-utils.make
-===================================================================
---- gnome-doc-utils-0.20.10.orig/tools/gnome-doc-utils.make
-+++ gnome-doc-utils-0.20.10/tools/gnome-doc-utils.make
-@@ -133,11 +133,11 @@ _DOC_ABS_SRCDIR = @abs_srcdir@
- _xml2po ?= `which xml2po`
- _xml2po_mode = $(if $(DOC_ID),mallard,docbook)
- 
--_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
--_db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
--_chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
--_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
--_ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl
-+_db2html ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2html gnome-doc-utils`
-+_db2omf  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
-+_chunks  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
-+_credits ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
-+_ids ?= ${PKG_CONFIG_SYSROOT_DIR}$(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl
- 
- if ENABLE_SK
- _ENABLE_SK = true
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/use-usr-bin-env-for-python-in-xml2po.patch b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/use-usr-bin-env-for-python-in-xml2po.patch
deleted file mode 100644
index 0e196c0..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/use-usr-bin-env-for-python-in-xml2po.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-We can't use #!/full/path/to/python -u as this can be longer than shebang
-allows for.  In order to be appropraite for upstream more work would be
-needed to make sure that the main xml2po code doesn't rely on python
-being invoked with -u (force stdin/out/err to be used raw).
-
-Upstream-Status: Inappropriate [Would break behavior on Windows]
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: gnome-doc-utils-0.20.10/xml2po/xml2po/Makefile.am
-===================================================================
---- gnome-doc-utils-0.20.10.orig/xml2po/xml2po/Makefile.am
-+++ gnome-doc-utils-0.20.10/xml2po/xml2po/Makefile.am
-@@ -7,7 +7,6 @@ CLEANFILES = xml2po
- 
- xml2po: xml2po.py.in
- 	$(AM_V_GEN)sed -e "s/^VERSION =.*/VERSION = \"@VERSION@\"/" \
--	    -e "s+^#!.*python.*+#!$(PYTHON)+" \
- 	  < $(srcdir)/xml2po.py.in > xml2po
- 	$(AM_V_at)chmod +x xml2po
- 
-Index: gnome-doc-utils-0.20.10/xml2po/xml2po/xml2po.py.in
-===================================================================
---- gnome-doc-utils-0.20.10.orig/xml2po/xml2po/xml2po.py.in
-+++ gnome-doc-utils-0.20.10/xml2po/xml2po/xml2po.py.in
-@@ -1,4 +1,4 @@
--#!/usr/bin/python -u
-+#!/usr/bin/env python
- # -*- encoding: utf-8 -*-
- # Copyright (c) 2004, 2005, 2006 Danilo Šegan <danilo@gnome.org>.
- # Copyright (c) 2009 Claude Paroz <claude@2xlibre.net>.
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/xsltproc_nonet.patch b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/xsltproc_nonet.patch
deleted file mode 100644
index 9346494..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils/xsltproc_nonet.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-This adds the -nonet option to xsltproc invocations, which fixes
-compile errors when building the gnome-doc-utils docs.
-
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
-Index: gnome-doc-utils-0.20.10/doc/xslt/Makefile.am
-===================================================================
---- gnome-doc-utils-0.20.10.orig/doc/xslt/Makefile.am
-+++ gnome-doc-utils-0.20.10/doc/xslt/Makefile.am
-@@ -21,14 +21,14 @@ all: $(xsldoc_docs) $(xsldoc_xmls)
- 
- $(xsldoc_docs): $(xsldoc_xsls) xsldoc.awk xsldoc-fill.xsl
- 	$(AM_V_GEN)$(GDU_AWK) -f "$(srcdir)/xsldoc.awk" "$(filter %/$(basename $(notdir $@)).xsl,$(xsldoc_xsls))" \
--	| xsltproc -o "$@" \
-+	| xsltproc -nonet -o "$@" \
- 	--stringparam basename "$(basename $(notdir $@))" \
- 	--stringparam xsl_file "$(filter %/$(basename $(notdir $@)).xsl,$(xsldoc_xsls))" \
- 	"$(srcdir)/xsldoc-fill.xsl" -
- 
- $(xsldoc_xmls): xsldoc-docbook.xsl
- $(xsldoc_xmls): C/%.xml : C/%.xsldoc
--	$(AM_V_GEN)xsltproc -o "$@" \
-+	$(AM_V_GEN)xsltproc -nonet -o "$@" \
- 	--stringparam basename "$(basename $(notdir $@))" \
- 	--stringparam xsl_file "$(filter %/$(basename $(notdir $@)).xsl,$(xsldoc_xsls))" \
- 	"$(srcdir)/xsldoc-docbook.xsl" "$<"
-@@ -62,7 +62,7 @@ gnome-doc-xslt-check-includes:
- gnome-doc-xslt-check-xsldoc: $(xsldoc_docs)
- 	@echo "Running xsldoc checks";
- 	@(echo "<xsldoc>"; cat $(xsldoc_docs); echo "</xsldoc>") \
--	| xsltproc "$(srcdir)/xsldoc-check.xsl" - 1> /dev/null
-+	| xsltproc -nonet "$(srcdir)/xsldoc-check.xsl" - 1> /dev/null
- 
- .PHONY: clean-xsldoc
- clean-local: clean_xsldoc
-Index: gnome-doc-utils-0.20.10/tools/gnome-doc-utils.make
-===================================================================
---- gnome-doc-utils-0.20.10.orig/tools/gnome-doc-utils.make
-+++ gnome-doc-utils-0.20.10/tools/gnome-doc-utils.make
-@@ -37,7 +37,7 @@ $(DOC_H_FILE): $(DOC_H_DOCS);
- 	list='$(DOC_H_DOCS)'; for doc in $$list; do \
- 	  xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
- 	  if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
--	  xsltproc --path "$$xmlpath" $(_credits) $$doc; \
-+	  xsltproc -nonet --path "$$xmlpath" $(_credits) $$doc; \
- 	done | sort | uniq \
- 	  | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \
- 	  | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp
-@@ -50,7 +50,7 @@ $(DOC_H_FILE): $(DOC_H_DOCS);
- 	  docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \
- 	    | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \
- 	  echo $$xmlpath; \
--	  ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \
-+	  ids=`xsltproc -nonet --xinclude --path "$$xmlpath" $(_ids) $$doc`; \
- 	  for id in $$ids; do \
- 	    echo '#define HELP_'`echo $$docid`'_'`echo $$id \
- 	      | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \
-@@ -197,7 +197,7 @@ $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %
- 	  echo "The file '$(_skcontentslist)' does not exist." >&2;		\
- 	  echo "Please check your ScrollKeeper installation." >&2;		\
- 	  exit 1; }
--	$(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; }
-+	$(GDU_V_DB2OMF)xsltproc -nonet -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; }
- 
- ## @ _DOC_OMF_HTML
- ## The OMF files for HTML output
-@@ -212,7 +212,7 @@ if ENABLE_SK
- 	  echo "Please check your ScrollKeeper installation." >&2;		\
- 	  exit 1; }
- endif
--	$(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; }
-+	$(GDU_V_DB2OMF)xsltproc -nonet -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; }
- 
- ## @ _DOC_OMF_ALL
- ## All OMF output files to be built
-@@ -267,7 +267,7 @@ _DOC_C_FIGURES = $(if $(DOC_FIGURES),
- ## All HTML documentation in the C locale
- # FIXME: probably have to shell escape to determine the file names
- _DOC_C_HTML = $(foreach f,						\
--	$(shell xsltproc --xinclude 					\
-+	$(shell xsltproc -nonet --xinclude 					\
- 	  --stringparam db.chunk.basename "$(DOC_MODULE)"		\
- 	  $(_chunks) "C/$(DOC_MODULE).xml"),				\
- 	C/$(f).xhtml)
-@@ -393,7 +393,7 @@ _DOC_HTML_ALL = $(if $(filter html HTML,
- _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml)
- 
- $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
--	$(GDU_V_DB2HTM)xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
-+	$(GDU_V_DB2HTM)xsltproc -nonet -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
- 
- 
- ################################################################################
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.10.bb b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.10.bb
deleted file mode 100644
index 78cc005..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.10.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require gnome-doc-utils.inc
-LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
-		    file://COPYING.LGPL;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-SRC_URI += "file://xsltproc_nonet.patch \
-            file://use-usr-bin-env-for-python-in-xml2po.patch \
-            file://sysrooted-pkg-config.patch \
-           "
-
-SRC_URI[archive.md5sum] = "3c64ad7bacd617b04999e4a168afaac5"
-SRC_URI[archive.sha256sum] = "cb0639ffa9550b6ddf3b62f3b1add92fb92ab4690d351f2353cffe668be8c4a6"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-themes-standard_3.20.2.bb b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-themes-standard_3.20.2.bb
new file mode 100644
index 0000000..c98d870
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gnome/gnome-themes-standard_3.20.2.bb
@@ -0,0 +1,39 @@
+SUMMARY = "GTK+2 standard themes"
+HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/gnome-themes-standard/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome"
+
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+inherit autotools pkgconfig gettext gtk-icon-cache upstream-version-is-even distro_features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+
+DEPENDS += "intltool-native gtk+"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
+          "
+
+SRC_URI[md5sum] = "adc3b1d57330561fea524842d0c0b485"
+SRC_URI[sha256sum] = "9d0d9c4b2c9f9008301c3c1878ebb95859a735b7fd4a6a518802b9637e4a7915"
+
+EXTRA_OECONF = "--disable-gtk3-engine"
+
+do_install_append() {
+        # Only building Adwaita, remove highcontrast files
+        rm -rf ${D}${prefix}/share/themes/HighContrast \
+               ${D}${prefix}/share/icons
+}
+
+# There could be gnome-theme-highcontrast as well but that requires
+# gtk+3 and includes lots of icons (is also broken with B != S).
+PACKAGES += "gnome-theme-adwaita \
+             gnome-theme-adwaita-dbg \
+             gnome-theme-adwaita-dev"
+
+FILES_gnome-theme-adwaita = "${prefix}/share/themes/Adwaita \
+                              ${libdir}/gtk-2.0/2.10.0/engines/libadwaita.so"
+FILES_gnome-theme-adwaita-dev = "${libdir}/gtk-2.0/2.10.0/engines/libadwaita.la"
+FILES_gnome-theme-adwaita-dbg = "${libdir}/gtk-2.0/2.10.0/engines/.debug/libadwaita.so"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
deleted file mode 100644
index 5026d81..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From a57604e205e6535acd9989444ad1f5f5038f4fba Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 8 Oct 2015 18:30:35 +0300
-Subject: [PATCH 1/4] Prefix pkg-config paths with PKG_CONFIG_SYSROOT_DIR
- environment variable
-
-This environment variable sets the location of sysroot directory in cross-compilation
-environments; if the variable is not set, the prefix will be empty.
-
-Upstream-Status: Pending [review on oe-core list]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- Makefile-gir.am     | 18 +++++++++---------
- m4/introspection.m4 |  8 ++++----
- 2 files changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/Makefile-gir.am b/Makefile-gir.am
-index 9aca664..09b9360 100644
---- a/Makefile-gir.am
-+++ b/Makefile-gir.am
-@@ -55,8 +55,8 @@ else
- endif
- 
- # glib
--GLIB_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir glib-2.0)/glib-2.0
--GLIB_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir glib-2.0)
-+GLIB_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir glib-2.0)/glib-2.0
-+GLIB_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir glib-2.0)
- 
- GLIB_LIBRARY=glib-2.0
- 
-@@ -92,8 +92,8 @@ GLib-2.0.gir: g-ir-scanner g-ir-compiler$(EXEEXT)
- gir/DBusGLib-1.0.typelib: GObject-2.0.gir
- 
- # gobject
--GOBJECT_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gobject-2.0)/glib-2.0
--GOBJECT_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gobject-2.0)
-+GOBJECT_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gobject-2.0)/glib-2.0
-+GOBJECT_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gobject-2.0)
- 
- GOBJECT_LIBRARY=gobject-2.0
- 
-@@ -120,8 +120,8 @@ GObject_2_0_gir_FILES = \
- BUILT_GIRSOURCES += GObject-2.0.gir
- 
- # gmodule
--GMODULE_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gmodule-2.0)/glib-2.0
--GMODULE_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gmodule-2.0)
-+GMODULE_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gmodule-2.0)/glib-2.0
-+GMODULE_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gmodule-2.0)
- 
- GMODULE_LIBRARY=gmodule-2.0
- 
-@@ -146,13 +146,13 @@ GModule_2_0_gir_FILES = $(GLIB_INCLUDEDIR)/gmodule.h \
- BUILT_GIRSOURCES += GModule-2.0.gir
- 
- # gio
--GIO_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gio-2.0)/glib-2.0
--GIO_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gio-2.0)
-+GIO_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gio-2.0)/glib-2.0
-+GIO_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gio-2.0)
- 
- GIO_LIBRARY=gio-2.0
- 
- if HAVE_GIO_UNIX
--GIO_UNIX_HDRS=$(shell "${PKG_CONFIG}" --variable=includedir gio-unix-2.0)/gio-unix-2.0/gio/*.h
-+GIO_UNIX_HDRS=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gio-unix-2.0)/gio-unix-2.0/gio/*.h
- GIO_UNIX_PACKAGES = gio-unix-2.0
- else
- GIO_UNIX_HDRS=
-diff --git a/m4/introspection.m4 b/m4/introspection.m4
-index d89c3d9..b562266 100644
---- a/m4/introspection.m4
-+++ b/m4/introspection.m4
-@@ -56,14 +56,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
-     INTROSPECTION_GIRDIR=
-     INTROSPECTION_TYPELIBDIR=
-     if test "x$found_introspection" = "xyes"; then
--       INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
--       INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
--       INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-+       INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-+       INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-+       INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-        INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
-        INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
-        INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
-        INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
--       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
-+       INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
-     fi
-     AC_SUBST(INTROSPECTION_SCANNER)
-     AC_SUBST(INTROSPECTION_COMPILER)
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch
new file mode 100644
index 0000000..9abaea7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch
@@ -0,0 +1,50 @@
+From 3a9d1e5ee0aae56fafec0beba2014c19e4ff310c Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 23 Mar 2016 17:07:28 +0200
+Subject: [PATCH 1/5] Revert an incomplete upstream attempt at cross-compile
+ support
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ common.mk                | 4 ----
+ giscanner/gdumpparser.py | 6 ------
+ 2 files changed, 10 deletions(-)
+
+diff --git a/common.mk b/common.mk
+index b778f7a..e26c637 100644
+--- a/common.mk
++++ b/common.mk
+@@ -24,12 +24,8 @@ INTROSPECTION_SCANNER_ARGS = \
+     --add-include-path=$(top_builddir) \
+     --add-include-path=$(top_builddir)/gir
+ 
+-# GI_CROSS_LAUNCHER is the command to use for executing g-ir-compiler.
+-# Normally will be undefined but can be set (e.g. to wine or qemu)
+-# when cross-compiling
+ INTROSPECTION_COMPILER = \
+     env PATH=".libs:$(PATH)" \
+-        $(GI_CROSS_LAUNCHER) \
+         $(top_builddir)/g-ir-compiler$(EXEEXT)
+ 
+ INTROSPECTION_COMPILER_ARGS = \
+diff --git a/giscanner/gdumpparser.py b/giscanner/gdumpparser.py
+index 1134f33..9bdc2bc 100644
+--- a/giscanner/gdumpparser.py
++++ b/giscanner/gdumpparser.py
+@@ -162,12 +162,6 @@ blob containing data gleaned from GObject's primitive introspection."""
+         out_path = os.path.join(self._binary.tmpdir, 'dump.xml')
+ 
+         args = []
+-
+-        # Prepend the launcher command and arguments, if defined
+-        launcher = os.environ.get('GI_CROSS_LAUNCHER')
+-        if launcher:
+-            args.extend(launcher.split())
+-
+         args.extend(self._binary.args)
+         args.append('--introspect-dump=%s,%s' % (in_path, out_path))
+ 
+-- 
+2.7.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-configure.ac-add-host-gi-gi-cross-wrapper-and-gi-ldd.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-configure.ac-add-host-gi-gi-cross-wrapper-and-gi-ldd.patch
deleted file mode 100644
index 6afefab..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-configure.ac-add-host-gi-gi-cross-wrapper-and-gi-ldd.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-From c6e4f83c373b577166a7e46130ce8ff025ee8515 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 19 Oct 2015 18:29:21 +0300
-Subject: [PATCH] configure.ac: add host-gi, gi-cross-wrapper, gi-ldd-wrapper
- and introspection-data options
-
-With the first option, gobject-introspection tools (g-ir-doc-tool and g-ir-scanner)
-that are already installed in the host system will be used for building the source tree.
-
-With the second option, g-ir-scanner will be instructed to use an executable
-wrapper to run binaries it's producing, and g-ir-compiler will be run
-through the same wrapper (host system's g-ir-compiler cannot be used because
-it's producing architecture-specific output).
-
-With the third option, giscanner will be instructed to use a special ldd
-command instead of system's ldd (which does not work when the binary to inspect
-is compiled for a different architecture).
-
-With the fourth option, it is possible to disable building of introspection data
-(.gir and .typelib files), which may be difficult or impossible in cross-compilation
-environments, because of lack of emulation (or native hardware) for the target architecture
-on which the target binaries can be run.
-
-These options are useful when cross-compiling for a different target architecture.
-
-Upstream-Status: Pending [review on oe-core list]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- Makefile.am       |  2 ++
- common.mk         | 39 +++++++++++++++++++++++++++++++++++++++
- configure.ac      | 42 ++++++++++++++++++++++++++++++++++++++++++
- tests/Makefile.am |  5 ++++-
- 4 files changed, 87 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 437c673..1eb3545 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -21,7 +21,9 @@ include Makefile-cmph.am
- include Makefile-girepository.am
- include Makefile-giscanner.am
- include Makefile-examples.am
-+if BUILD_INTROSPECTION_DATA
- include Makefile-gir.am
-+endif
- include Makefile-tools.am
- include Makefile-msvcproj.am
- 
-diff --git a/common.mk b/common.mk
-index e26c637..9f3a65f 100644
---- a/common.mk
-+++ b/common.mk
-@@ -6,6 +6,15 @@
- # module itself.
- #
- 
-+if USE_HOST_GI
-+INTROSPECTION_SCANNER = \
-+    env PATH="$(PATH)" \
-+        LPATH=.libs \
-+        CC="$(CC)" \
-+        PYTHONPATH=$(top_builddir):$(top_srcdir) \
-+        UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
-+        g-ir-scanner
-+else
- INTROSPECTION_SCANNER = \
-     env PATH=".libs:$(PATH)" \
-         LPATH=.libs \
-@@ -14,9 +23,24 @@ INTROSPECTION_SCANNER = \
-         UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) \
-         UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
-         $(top_builddir)/g-ir-scanner
-+endif
-+
-+if USE_CROSS_WRAPPER
-+CROSS_WRAPPER_ARG = --use-binary-wrapper=$(GI_CROSS_WRAPPER)
-+else
-+CROSS_WRAPPER_ARG =
-+endif
-+
-+if USE_LDD_WRAPPER
-+LDD_WRAPPER_ARG = --use-ldd-wrapper=$(GI_LDD_WRAPPER)
-+else
-+LDD_WRAPPER_ARG =
-+endif
- 
- INTROSPECTION_SCANNER_ARGS = \
-     --verbose \
-+    $(CROSS_WRAPPER_ARG) \
-+    $(LDD_WRAPPER_ARG) \
-     -I$(top_srcdir) \
-     --add-include-path=$(srcdir) \
-     --add-include-path=$(top_srcdir)/gir \
-@@ -24,9 +48,15 @@ INTROSPECTION_SCANNER_ARGS = \
-     --add-include-path=$(top_builddir) \
-     --add-include-path=$(top_builddir)/gir
- 
-+if USE_CROSS_WRAPPER
-+INTROSPECTION_COMPILER = \
-+    env PATH=".libs:$(PATH)" \
-+        $(GI_CROSS_WRAPPER) $(top_builddir)/.libs/g-ir-compiler$(EXEEXT)
-+else
- INTROSPECTION_COMPILER = \
-     env PATH=".libs:$(PATH)" \
-         $(top_builddir)/g-ir-compiler$(EXEEXT)
-+endif
- 
- INTROSPECTION_COMPILER_ARGS = \
-     --includedir=$(srcdir) \
-@@ -35,6 +65,14 @@ INTROSPECTION_COMPILER_ARGS = \
-     --includedir=$(top_builddir) \
-     --includedir=$(top_builddir)/gir
- 
-+if USE_HOST_GI
-+INTROSPECTION_DOCTOOL = \
-+    env PATH="$(PATH)" \
-+        LPATH=.libs \
-+        PYTHONPATH=$(top_builddir):$(top_srcdir) \
-+        UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
-+        g-ir-doc-tool
-+else
- INTROSPECTION_DOCTOOL = \
-     env PATH=".libs:$(PATH)" \
-         LPATH=.libs \
-@@ -42,6 +80,7 @@ INTROSPECTION_DOCTOOL = \
-         UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) \
-         UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
-         $(top_builddir)/g-ir-doc-tool
-+endif
- 
- INTROSPECTION_DOCTOOL_ARGS = \
-     --add-include-path=$(srcdir) \
-diff --git a/configure.ac b/configure.ac
-index b11596b..d78ae52 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -347,6 +347,48 @@ fi
- 
- AC_SUBST(EXTRA_LINK_FLAGS)
- 
-+AC_ARG_ENABLE([host-gi],
-+[AS_HELP_STRING([--enable-host-gi],[Use gobject introspection tools installed in the host system (useful when cross-compiling)])],
-+[case "${enableval}" in
-+  yes) host_gi=true ;;
-+  no)  host_gi=false ;;
-+  *) AC_MSG_ERROR([bad value ${enableval} for --enable-host-gi]) ;;
-+esac],[host_gi=false])
-+AM_CONDITIONAL([USE_HOST_GI], [test x$host_gi = xtrue])
-+
-+AC_ARG_ENABLE([gi-cross-wrapper],
-+[AS_HELP_STRING([--enable-gi-cross-wrapper=path],[Use a wrapper to run gicompiler and binaries produced by giscanner (useful when cross-compiling)])],
-+[
-+GI_CROSS_WRAPPER="${enableval}"
-+use_wrapper=true
-+],[
-+GI_CROSS_WRAPPER=""
-+use_wrapper=false
-+])
-+AC_SUBST(GI_CROSS_WRAPPER)
-+AM_CONDITIONAL([USE_CROSS_WRAPPER], [test x$use_wrapper = xtrue])
-+
-+AC_ARG_ENABLE([gi-ldd-wrapper],
-+[AS_HELP_STRING([--enable-gi-ldd-wrapper=path],[Use a ldd wrapper instead of system's ldd command in giscanner (useful when cross-compiling)])],
-+[
-+GI_LDD_WRAPPER="${enableval}"
-+use_ldd_wrapper=true
-+],[
-+GI_LDD_WRAPPER=""
-+use_ldd_wrapper=false
-+])
-+AC_SUBST(GI_LDD_WRAPPER)
-+AM_CONDITIONAL([USE_LDD_WRAPPER], [test x$use_ldd_wrapper = xtrue])
-+
-+AC_ARG_ENABLE([introspection-data],
-+[AS_HELP_STRING([--enable-introspection-data],[Build introspection data (.gir and .typelib files) in addition to library and tools])],
-+[case "${enableval}" in
-+  yes) introspection_data=true ;;
-+  no)  introspection_data=false ;;
-+  *) AC_MSG_ERROR([bad value ${enableval} for --enable-introspection-data]) ;;
-+esac],[introspection_data=true])
-+AM_CONDITIONAL([BUILD_INTROSPECTION_DATA], [test x$introspection_data = xtrue])
-+
- AC_CONFIG_FILES([
- Makefile
- tests/Makefile
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index bdd0fa7..75dd3c9 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -1,6 +1,9 @@
- include $(top_srcdir)/common.mk
- 
--SUBDIRS = . scanner repository offsets warn
-+SUBDIRS = . scanner repository warn
-+if BUILD_INTROSPECTION_DATA
-+SUBDIRS += offsets
-+endif
- 
- EXTRA_DIST=
- BUILT_SOURCES=
--- 
-2.6.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-use-ldd-wrapper-option.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-use-ldd-wrapper-option.patch
deleted file mode 100644
index f923dcc..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-use-ldd-wrapper-option.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 291a92f200981a772b2d03739dffb5926a82c5a5 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 30 Oct 2015 16:28:46 +0200
-Subject: [PATCH 1/2] giscanner: add a --use-ldd-wrapper option
-
-This is useful in cross-compile environments where system's ldd
-command does not work on binaries built for a different architecture
-
-Upstream-Status: Pending [review in oe-core]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- giscanner/scannermain.py | 3 +++
- giscanner/shlibs.py      | 4 +++-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
-index e37d3e3..b8fff5f 100755
---- a/giscanner/scannermain.py
-+++ b/giscanner/scannermain.py
-@@ -121,6 +121,9 @@ def _get_option_parser():
-     parser.add_option("", "--use-binary-wrapper",
-                       action="store", dest="wrapper", default=None,
-                       help="wrapper to use for running programs (useful when cross-compiling)")
-+    parser.add_option("", "--use-ldd-wrapper",
-+                      action="store", dest="ldd_wrapper", default=None,
-+                      help="wrapper to use instead of ldd (useful when cross-compiling)")
-     parser.add_option("", "--program-arg",
-                       action="append", dest="program_args", default=[],
-                       help="extra arguments to program")
-diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
-index 1ad75ee..41117c6 100644
---- a/giscanner/shlibs.py
-+++ b/giscanner/shlibs.py
-@@ -100,7 +100,9 @@ def _resolve_non_libtool(options, binary, libraries):
-             args.extend(libtool)
-             args.append('--mode=execute')
-         platform_system = platform.system()
--        if platform_system == 'Darwin':
-+        if options.ldd_wrapper:
-+            args.extend([options.ldd_wrapper, binary.args[0]])
-+        elif platform_system == 'Darwin':
-             args.extend(['otool', '-L', binary.args[0]])
-         else:
-             args.extend(['ldd', binary.args[0]])
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-use-binary-wrapper-option.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-use-binary-wrapper-option.patch
deleted file mode 100644
index e1241a9..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-use-binary-wrapper-option.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 2322f36056265f809aaffb74fcf5ac0c83129752 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 19 Oct 2015 18:26:40 +0300
-Subject: [PATCH 2/4] giscanner: add --use-binary-wrapper option
-
-With this option, giscanner will use a wrapper executable to run
-binaries it's producing, instead of running them directly. This
-is useful when binaries are cross-compiled and cannot be run directly,
-but they can be run using for example QEMU emulation.
-
-Upstream-Status: Pending [review on oe-core list]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- giscanner/scannermain.py | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
-index b36284d..e37d3e3 100755
---- a/giscanner/scannermain.py
-+++ b/giscanner/scannermain.py
-@@ -118,6 +118,9 @@ def _get_option_parser():
-     parser.add_option("", "--program",
-                       action="store", dest="program", default=None,
-                       help="program to execute")
-+    parser.add_option("", "--use-binary-wrapper",
-+                      action="store", dest="wrapper", default=None,
-+                      help="wrapper to use for running programs (useful when cross-compiling)")
-     parser.add_option("", "--program-arg",
-                       action="append", dest="program_args", default=[],
-                       help="extra arguments to program")
-@@ -406,6 +409,17 @@ def create_binary(transformer, options, args):
-                                               gdump_parser.get_error_quark_functions())
- 
-     shlibs = resolve_shlibs(options, binary, options.libraries)
-+    if options.wrapper:
-+        # The wrapper needs the binary itself, not the libtool wrapper script,
-+        # so we check if libtool has sneaked the binary into .libs subdirectory
-+        # and adjust the path accordingly
-+	import os.path
-+        dir_name, binary_name  = os.path.split(binary.args[0])
-+        libtool_binary = os.path.join(dir_name, '.libs', binary_name)
-+        if os.path.exists(libtool_binary):
-+	    binary.args[0] = libtool_binary
-+	# Then prepend the wrapper to the command line to execute
-+        binary.args = [options.wrapper] + binary.args
-     gdump_parser.set_introspection_binary(binary)
-     gdump_parser.parse()
-     return shlibs
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch
new file mode 100644
index 0000000..48a0c85
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch
@@ -0,0 +1,203 @@
+From b1503fe2693d602b3e24e4b832dc0934960d5d22 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 19 Oct 2015 18:29:21 +0300
+Subject: [PATCH 2/5] configure.ac: add host-gi, gi-cross-wrapper,
+ gi-ldd-wrapper and introspection-data options
+
+With the first option, gobject-introspection tools (g-ir-doc-tool and g-ir-scanner)
+that are already installed in the host system will be used for building the source tree.
+
+With the second option, g-ir-scanner will be instructed to use an executable
+wrapper to run binaries it's producing, and g-ir-compiler will be run
+through the same wrapper (host system's g-ir-compiler cannot be used because
+it's producing architecture-specific output).
+
+With the third option, giscanner will be instructed to use a special ldd
+command instead of system's ldd (which does not work when the binary to inspect
+is compiled for a different architecture).
+
+With the fourth option, it is possible to disable building of introspection data
+(.gir and .typelib files), which may be difficult or impossible in cross-compilation
+environments, because of lack of emulation (or native hardware) for the target architecture
+on which the target binaries can be run.
+
+These options are useful when cross-compiling for a different target architecture.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile.am       |  2 ++
+ common.mk         | 39 +++++++++++++++++++++++++++++++++++++++
+ configure.ac      | 42 ++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am |  5 ++++-
+ 4 files changed, 87 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index b080a89..ce8d29b 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -21,7 +21,9 @@ include Makefile-cmph.am
+ include Makefile-girepository.am
+ include Makefile-giscanner.am
+ include Makefile-examples.am
++if BUILD_INTROSPECTION_DATA
+ include Makefile-gir.am
++endif
+ include Makefile-tools.am
+ include Makefile-msvcproj.am
+ 
+diff --git a/common.mk b/common.mk
+index e26c637..9f3a65f 100644
+--- a/common.mk
++++ b/common.mk
+@@ -6,6 +6,15 @@
+ # module itself.
+ #
+ 
++if USE_HOST_GI
++INTROSPECTION_SCANNER = \
++    env PATH="$(PATH)" \
++        LPATH=.libs \
++        CC="$(CC)" \
++        PYTHONPATH=$(top_builddir):$(top_srcdir) \
++        UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
++        g-ir-scanner
++else
+ INTROSPECTION_SCANNER = \
+     env PATH=".libs:$(PATH)" \
+         LPATH=.libs \
+@@ -14,9 +23,24 @@ INTROSPECTION_SCANNER = \
+         UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) \
+         UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
+         $(top_builddir)/g-ir-scanner
++endif
++
++if USE_CROSS_WRAPPER
++CROSS_WRAPPER_ARG = --use-binary-wrapper=$(GI_CROSS_WRAPPER)
++else
++CROSS_WRAPPER_ARG =
++endif
++
++if USE_LDD_WRAPPER
++LDD_WRAPPER_ARG = --use-ldd-wrapper=$(GI_LDD_WRAPPER)
++else
++LDD_WRAPPER_ARG =
++endif
+ 
+ INTROSPECTION_SCANNER_ARGS = \
+     --verbose \
++    $(CROSS_WRAPPER_ARG) \
++    $(LDD_WRAPPER_ARG) \
+     -I$(top_srcdir) \
+     --add-include-path=$(srcdir) \
+     --add-include-path=$(top_srcdir)/gir \
+@@ -24,9 +48,15 @@ INTROSPECTION_SCANNER_ARGS = \
+     --add-include-path=$(top_builddir) \
+     --add-include-path=$(top_builddir)/gir
+ 
++if USE_CROSS_WRAPPER
++INTROSPECTION_COMPILER = \
++    env PATH=".libs:$(PATH)" \
++        $(GI_CROSS_WRAPPER) $(top_builddir)/.libs/g-ir-compiler$(EXEEXT)
++else
+ INTROSPECTION_COMPILER = \
+     env PATH=".libs:$(PATH)" \
+         $(top_builddir)/g-ir-compiler$(EXEEXT)
++endif
+ 
+ INTROSPECTION_COMPILER_ARGS = \
+     --includedir=$(srcdir) \
+@@ -35,6 +65,14 @@ INTROSPECTION_COMPILER_ARGS = \
+     --includedir=$(top_builddir) \
+     --includedir=$(top_builddir)/gir
+ 
++if USE_HOST_GI
++INTROSPECTION_DOCTOOL = \
++    env PATH="$(PATH)" \
++        LPATH=.libs \
++        PYTHONPATH=$(top_builddir):$(top_srcdir) \
++        UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
++        g-ir-doc-tool
++else
+ INTROSPECTION_DOCTOOL = \
+     env PATH=".libs:$(PATH)" \
+         LPATH=.libs \
+@@ -42,6 +80,7 @@ INTROSPECTION_DOCTOOL = \
+         UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) \
+         UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
+         $(top_builddir)/g-ir-doc-tool
++endif
+ 
+ INTROSPECTION_DOCTOOL_ARGS = \
+     --add-include-path=$(srcdir) \
+diff --git a/configure.ac b/configure.ac
+index 6c91fa5..21340a5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -360,6 +360,48 @@ fi
+ 
+ AC_SUBST(EXTRA_LINK_FLAGS)
+ 
++AC_ARG_ENABLE([host-gi],
++[AS_HELP_STRING([--enable-host-gi],[Use gobject introspection tools installed in the host system (useful when cross-compiling)])],
++[case "${enableval}" in
++  yes) host_gi=true ;;
++  no)  host_gi=false ;;
++  *) AC_MSG_ERROR([bad value ${enableval} for --enable-host-gi]) ;;
++esac],[host_gi=false])
++AM_CONDITIONAL([USE_HOST_GI], [test x$host_gi = xtrue])
++
++AC_ARG_ENABLE([gi-cross-wrapper],
++[AS_HELP_STRING([--enable-gi-cross-wrapper=path],[Use a wrapper to run gicompiler and binaries produced by giscanner (useful when cross-compiling)])],
++[
++GI_CROSS_WRAPPER="${enableval}"
++use_wrapper=true
++],[
++GI_CROSS_WRAPPER=""
++use_wrapper=false
++])
++AC_SUBST(GI_CROSS_WRAPPER)
++AM_CONDITIONAL([USE_CROSS_WRAPPER], [test x$use_wrapper = xtrue])
++
++AC_ARG_ENABLE([gi-ldd-wrapper],
++[AS_HELP_STRING([--enable-gi-ldd-wrapper=path],[Use a ldd wrapper instead of system's ldd command in giscanner (useful when cross-compiling)])],
++[
++GI_LDD_WRAPPER="${enableval}"
++use_ldd_wrapper=true
++],[
++GI_LDD_WRAPPER=""
++use_ldd_wrapper=false
++])
++AC_SUBST(GI_LDD_WRAPPER)
++AM_CONDITIONAL([USE_LDD_WRAPPER], [test x$use_ldd_wrapper = xtrue])
++
++AC_ARG_ENABLE([introspection-data],
++[AS_HELP_STRING([--enable-introspection-data],[Build introspection data (.gir and .typelib files) in addition to library and tools])],
++[case "${enableval}" in
++  yes) introspection_data=true ;;
++  no)  introspection_data=false ;;
++  *) AC_MSG_ERROR([bad value ${enableval} for --enable-introspection-data]) ;;
++esac],[introspection_data=true])
++AM_CONDITIONAL([BUILD_INTROSPECTION_DATA], [test x$introspection_data = xtrue])
++
+ AC_CONFIG_FILES([
+ Makefile
+ tests/Makefile
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index bdd0fa7..75dd3c9 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -1,6 +1,9 @@
+ include $(top_srcdir)/common.mk
+ 
+-SUBDIRS = . scanner repository offsets warn
++SUBDIRS = . scanner repository warn
++if BUILD_INTROSPECTION_DATA
++SUBDIRS += offsets
++endif
+ 
+ EXTRA_DIST=
+ BUILT_SOURCES=
+-- 
+2.7.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch
new file mode 100644
index 0000000..f21eaca
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch
@@ -0,0 +1,51 @@
+From 704b888d0abfb01067352c40156f49f655691c7c Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 19 Oct 2015 18:26:40 +0300
+Subject: [PATCH 3/5] giscanner: add --use-binary-wrapper option
+
+With this option, giscanner will use a wrapper executable to run
+binaries it's producing, instead of running them directly. This
+is useful when binaries are cross-compiled and cannot be run directly,
+but they can be run using for example QEMU emulation.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ giscanner/scannermain.py | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
+index 633496f..d684cd0 100755
+--- a/giscanner/scannermain.py
++++ b/giscanner/scannermain.py
+@@ -124,6 +124,9 @@ def _get_option_parser():
+     parser.add_option("", "--program",
+                       action="store", dest="program", default=None,
+                       help="program to execute")
++    parser.add_option("", "--use-binary-wrapper",
++                      action="store", dest="wrapper", default=None,
++                      help="wrapper to use for running programs (useful when cross-compiling)")
+     parser.add_option("", "--program-arg",
+                       action="append", dest="program_args", default=[],
+                       help="extra arguments to program")
+@@ -419,6 +422,17 @@ def create_binary(transformer, options, args):
+                                               gdump_parser.get_error_quark_functions())
+ 
+     shlibs = resolve_shlibs(options, binary, options.libraries)
++    if options.wrapper:
++        # The wrapper needs the binary itself, not the libtool wrapper script,
++        # so we check if libtool has sneaked the binary into .libs subdirectory
++        # and adjust the path accordingly
++        import os.path
++        dir_name, binary_name  = os.path.split(binary.args[0])
++        libtool_binary = os.path.join(dir_name, '.libs', binary_name)
++        if os.path.exists(libtool_binary):
++            binary.args[0] = libtool_binary
++	# Then prepend the wrapper to the command line to execute
++        binary.args = [options.wrapper] + binary.args
+     gdump_parser.set_introspection_binary(binary)
+     gdump_parser.parse()
+     return shlibs
+-- 
+2.7.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch
new file mode 100644
index 0000000..afb71e7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch
@@ -0,0 +1,47 @@
+From d4ad57fd4a32c4f0d2f0522a3090ef940746431b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 30 Oct 2015 16:28:46 +0200
+Subject: [PATCH 4/5] giscanner: add a --use-ldd-wrapper option
+
+This is useful in cross-compile environments where system's ldd
+command does not work on binaries built for a different architecture
+
+Upstream-Status: Pending [review in oe-core]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ giscanner/scannermain.py | 3 +++
+ giscanner/shlibs.py      | 4 +++-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
+index d684cd0..1b3b369 100755
+--- a/giscanner/scannermain.py
++++ b/giscanner/scannermain.py
+@@ -127,6 +127,9 @@ def _get_option_parser():
+     parser.add_option("", "--use-binary-wrapper",
+                       action="store", dest="wrapper", default=None,
+                       help="wrapper to use for running programs (useful when cross-compiling)")
++    parser.add_option("", "--use-ldd-wrapper",
++                      action="store", dest="ldd_wrapper", default=None,
++                      help="wrapper to use instead of ldd (useful when cross-compiling)")
+     parser.add_option("", "--program-arg",
+                       action="append", dest="program_args", default=[],
+                       help="extra arguments to program")
+diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
+index c93d20c..c5b5942 100644
+--- a/giscanner/shlibs.py
++++ b/giscanner/shlibs.py
+@@ -105,7 +105,9 @@ def _resolve_non_libtool(options, binary, libraries):
+             args.extend(libtool)
+             args.append('--mode=execute')
+         platform_system = platform.system()
+-        if platform_system == 'Darwin':
++        if options.ldd_wrapper:
++            args.extend([options.ldd_wrapper, binary.args[0]])
++        elif platform_system == 'Darwin':
+             args.extend(['otool', '-L', binary.args[0]])
+         else:
+             args.extend(['ldd', binary.args[0]])
+-- 
+2.7.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
new file mode 100644
index 0000000..47a18ec
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
@@ -0,0 +1,96 @@
+From e08b3677dd04d6ec407ba8f74f601b2d51310eff Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 8 Oct 2015 18:30:35 +0300
+Subject: [PATCH 5/5] Prefix pkg-config paths with PKG_CONFIG_SYSROOT_DIR
+ environment variable
+
+This environment variable sets the location of sysroot directory in cross-compilation
+environments; if the variable is not set, the prefix will be empty.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile-gir.am     | 18 +++++++++---------
+ m4/introspection.m4 |  8 ++++----
+ 2 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/Makefile-gir.am b/Makefile-gir.am
+index a09260a..ba6e89e 100644
+--- a/Makefile-gir.am
++++ b/Makefile-gir.am
+@@ -55,8 +55,8 @@ else
+ endif
+ 
+ # glib
+-GLIB_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir glib-2.0)/glib-2.0
+-GLIB_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir glib-2.0)
++GLIB_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir glib-2.0)/glib-2.0
++GLIB_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir glib-2.0)
+ 
+ GLIB_LIBRARY=glib-2.0
+ 
+@@ -92,8 +92,8 @@ GLib-2.0.gir: g-ir-scanner g-ir-compiler$(EXEEXT)
+ gir/DBusGLib-1.0.typelib: GObject-2.0.gir
+ 
+ # gobject
+-GOBJECT_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gobject-2.0)/glib-2.0
+-GOBJECT_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gobject-2.0)
++GOBJECT_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gobject-2.0)/glib-2.0
++GOBJECT_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gobject-2.0)
+ 
+ GOBJECT_LIBRARY=gobject-2.0
+ 
+@@ -120,8 +120,8 @@ GObject_2_0_gir_FILES = \
+ BUILT_GIRSOURCES += GObject-2.0.gir
+ 
+ # gmodule
+-GMODULE_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gmodule-2.0)/glib-2.0
+-GMODULE_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gmodule-2.0)
++GMODULE_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gmodule-2.0)/glib-2.0
++GMODULE_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gmodule-2.0)
+ 
+ GMODULE_LIBRARY=gmodule-2.0
+ 
+@@ -146,13 +146,13 @@ GModule_2_0_gir_FILES = $(GLIB_INCLUDEDIR)/gmodule.h \
+ BUILT_GIRSOURCES += GModule-2.0.gir
+ 
+ # gio
+-GIO_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gio-2.0)/glib-2.0
+-GIO_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gio-2.0)
++GIO_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gio-2.0)/glib-2.0
++GIO_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gio-2.0)
+ 
+ GIO_LIBRARY=gio-2.0
+ 
+ if HAVE_GIO_UNIX
+-GIO_UNIX_INCLUDEDIR = $(shell "${PKG_CONFIG}" --variable=includedir gio-unix-2.0)/gio-unix-2.0
++GIO_UNIX_INCLUDEDIR = $(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gio-unix-2.0)/gio-unix-2.0
+ GIO_UNIX_HDRS = $(GIO_UNIX_INCLUDEDIR)/gio/*.h
+ GIO_UNIX_PACKAGES = gio-unix-2.0
+ else
+diff --git a/m4/introspection.m4 b/m4/introspection.m4
+index d89c3d9..b562266 100644
+--- a/m4/introspection.m4
++++ b/m4/introspection.m4
+@@ -56,14 +56,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
+     INTROSPECTION_GIRDIR=
+     INTROSPECTION_TYPELIBDIR=
+     if test "x$found_introspection" = "xyes"; then
+-       INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+-       INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+-       INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
++       INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
++       INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
++       INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+        INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+        INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+        INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+        INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+-       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
++       INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+     fi
+     AC_SUBST(INTROSPECTION_SCANNER)
+     AC_SUBST(INTROSPECTION_COMPILER)
+-- 
+2.7.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.46.0.bb b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.46.0.bb
deleted file mode 100644
index 9b16147..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.46.0.bb
+++ /dev/null
@@ -1,163 +0,0 @@
-HOMEPAGE = "http://gnome.org"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "libs"
-LICENSE = "LGPLv2+ & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=90d577535a3898e1ae5dbf0ae3509a8c \
-                    file://tools/compiler.c;endline=20;md5=fc5007fc20022720e6c0b0cdde41fabd \
-                    file://giscanner/sourcescanner.c;endline=22;md5=194d6e0c1d00662f32d030ce44de8d39 \
-                    file://girepository/giregisteredtypeinfo.c;endline=21;md5=661847611ae6979465415f31a759ba27"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/1.46/${BPN}-${PV}.tar.xz \
-           file://0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch \
-           file://0001-giscanner-add-use-binary-wrapper-option.patch \
-           file://0001-giscanner-add-a-use-ldd-wrapper-option.patch \
-           file://0001-configure.ac-add-host-gi-gi-cross-wrapper-and-gi-ldd.patch \
-           "
-SRC_URI[md5sum] = "adb40a31c7c80b65b0f4c8fd71b493dc"
-SRC_URI[sha256sum] = "6658bd3c2b8813eb3e2511ee153238d09ace9d309e4574af27443d87423e4233"
-
-inherit autotools pkgconfig gtk-doc pythonnative qemu gobject-introspection-data
-BBCLASSEXTEND = "native"
-
-# necessary to let the call for python-config from configure.ac succeed
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-# needed for writing out the qemu wrapper script
-export STAGING_DIR_HOST
-export B
-
-DEPENDS_append = " libffi zlib glib-2.0 python"
-
-# target build needs qemu to run temporary introspection binaries created
-# on the fly by g-ir-scanner and a native version of itself to run
-# native versions of its own tools during build.
-# Also prelink-rtld is used to find out library dependencies of introspection binaries
-# (standard ldd doesn't work when cross-compiling).
-DEPENDS_class-target_append = " gobject-introspection-native qemu-native prelink-native"
-
-SSTATE_SCAN_FILES += "g-ir-scanner-qemuwrapper g-ir-scanner-wrapper g-ir-compiler-wrapper g-ir-scanner-lddwrapper Gio-2.0.gir"
-
-do_configure_prepend_class-native() {
-        # Tweak the native python scripts so that they don't refer to the
-        # full path of native python binary (the solution is taken from glib-2.0 recipe)
-        # This removes the risk of exceeding Linux kernel's shebang line limit (128 bytes)
-        sed -i -e '1s,#!.*,#!${USRBINPATH}/env nativepython,' ${S}/tools/g-ir-tool-template.in
-}
-
-do_configure_prepend_class-target() {
-        # Write out a qemu wrapper that will be given to gi-scanner so that it
-        # can run target helper binaries through that.
-        qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
-        cat > ${B}/g-ir-scanner-qemuwrapper << EOF
-#!/bin/sh
-# Use a modules directory which doesn't exist so we don't load random things
-# which may then get deleted (or their dependencies) and potentially segfault
-export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
-
-$qemu_binary "\$@"
-if [ \$? -ne 0 ]; then
-    echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
-    echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
-    exit 1
-fi
-EOF
-        chmod +x ${B}/g-ir-scanner-qemuwrapper
-
-        # Write out a wrapper for g-ir-scanner itself, which will be used when building introspection files
-        # for glib-based packages. This wrapper calls the native version of the scanner, and tells it to use
-        # a qemu wrapper for running transient target binaries produced by the scanner, and an include directory 
-        # from the target sysroot.
-        cat > ${B}/g-ir-scanner-wrapper << EOF
-#!/bin/sh
-# This prevents g-ir-scanner from writing cache data to $HOME
-export GI_SCANNER_DISABLE_CACHE=1
-
-g-ir-scanner --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 "\$@"
-EOF
-        chmod +x ${B}/g-ir-scanner-wrapper
-
-        # Write out a wrapper for g-ir-compiler, which runs the target version of it through qemu.
-        # g-ir-compiler writes out the raw content of a C struct to disk, and therefore is architecture dependent.
-        cat > ${B}/g-ir-compiler-wrapper << EOF
-#!/bin/sh
-${STAGING_BINDIR}/g-ir-scanner-qemuwrapper ${STAGING_BINDIR}/g-ir-compiler "\$@"
-EOF
-        chmod +x ${B}/g-ir-compiler-wrapper
-
-        # Write out a wrapper to use instead of ldd, which does not work when a binary is built
-        # for a different architecture
-        cat > ${B}/g-ir-scanner-lddwrapper << EOF
-#!/bin/sh
-prelink-rtld --root=$STAGING_DIR_HOST "\$@"
-EOF
-        chmod +x ${B}/g-ir-scanner-lddwrapper
-
-        # Also tweak the target python scripts so that they don't refer to the
-        # native version of python binary (the solution is taken from glib-2.0 recipe)
-        sed -i -e '1s,#!.*,#!${USRBINPATH}/env python,' ${S}/tools/g-ir-tool-template.in
-}
-
-# Configure target build to use native tools of itself and to use a qemu wrapper
-# and optionally to generate introspection data
-EXTRA_OECONF_class-target += "--enable-host-gi \
-                              --enable-gi-cross-wrapper=${B}/g-ir-scanner-qemuwrapper \
-                              --enable-gi-ldd-wrapper=${B}/g-ir-scanner-lddwrapper \
-                              ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection-data', '--disable-introspection-data', d)} \
-                             "
-
-
-do_compile_prepend_class-target() {
-        # This prevents g-ir-scanner from writing cache data to $HOME
-        export GI_SCANNER_DISABLE_CACHE=1
-
-        # Needed to run g-ir unit tests, which won't be able to find the built libraries otherwise
-        export GIR_EXTRA_LIBS_PATH=$B/.libs
-}
-
-# Our wrappers need to be available system-wide, because they will be used 
-# to build introspection files for all other gobject-based packages
-do_install_append_class-target() {
-        install -d ${D}${bindir}/
-        install ${B}/g-ir-scanner-qemuwrapper ${D}${bindir}/
-        install ${B}/g-ir-scanner-wrapper ${D}${bindir}/
-        install ${B}/g-ir-compiler-wrapper ${D}${bindir}/
-        install ${B}/g-ir-scanner-lddwrapper ${D}${bindir}/
-}
-
-# .typelib files are needed at runtime and so they go to the main package
-FILES_${PN}_append = " ${libdir}/girepository-*/*.typelib"
-
-# .gir files go to dev package, as they're needed for developing (but not for running)
-# things that depends on introspection.
-FILES_${PN}-dev_append = " ${datadir}/gir-*/*.gir"
-
-# These are used by gobject-based packages
-# to generate transient introspection binaries
-FILES_${PN}-dev_append = " ${datadir}/gobject-introspection-1.0/gdump.c \
-               ${datadir}/gobject-introspection-1.0/Makefile.introspection"
-
-# These are used by dependent packages (e.g. pygobject) to build their
-# testsuites.
-FILES_${PN}-dev_append = " ${datadir}/gobject-introspection-1.0/tests/*.c \
-                   ${datadir}/gobject-introspection-1.0/tests/*.h"
-
-FILES_${PN}-dbg += "${libdir}/gobject-introspection/giscanner/.debug/"
-FILES_${PN}-staticdev += "${libdir}/gobject-introspection/giscanner/*.a"
-
-# we need target versions of introspection tools in sysroot so that they can be run via qemu
-# when building introspection files in other packages
-SYSROOT_PREPROCESS_FUNCS_append_class-target += "gi_binaries_sysroot_preprocess"
-
-gi_binaries_sysroot_preprocess() {
-        sysroot_stage_dir ${D}${bindir} ${SYSROOT_DESTDIR}${bindir}
-
-        # Also, tweak the binary names in introspection pkgconfig file, so that it picks up our 
-        # wrappers which do the cross-compile and qemu magic.
-        sed -i \
-           -e "s|g_ir_scanner=.*|g_ir_scanner=${bindir}/g-ir-scanner-wrapper|" \
-           -e "s|g_ir_compiler=.*|g_ir_compiler=${bindir}/g-ir-compiler-wrapper|" \
-           ${SYSROOT_DESTDIR}${libdir}/pkgconfig/gobject-introspection-1.0.pc
-}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.48.0.bb b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.48.0.bb
new file mode 100644
index 0000000..abaa485
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.48.0.bb
@@ -0,0 +1,173 @@
+SUMMARY = "Middleware layer between GObject-using C libraries and language bindings"
+HOMEPAGE = "https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "libs"
+LICENSE = "LGPLv2+ & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=90d577535a3898e1ae5dbf0ae3509a8c \
+                    file://tools/compiler.c;endline=20;md5=fc5007fc20022720e6c0b0cdde41fabd \
+                    file://giscanner/sourcescanner.c;endline=22;md5=194d6e0c1d00662f32d030ce44de8d39 \
+                    file://girepository/giregisteredtypeinfo.c;endline=21;md5=661847611ae6979465415f31a759ba27"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/1.48/${BPN}-${PV}.tar.xz \
+           file://0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch \
+           file://0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch \
+           file://0003-giscanner-add-use-binary-wrapper-option.patch \
+           file://0004-giscanner-add-a-use-ldd-wrapper-option.patch \
+           file://0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch \
+           "
+SRC_URI[md5sum] = "01301fa9019667d48e927353e08bc218"
+SRC_URI[sha256sum] = "fa275aaccdbfc91ec0bc9a6fd0562051acdba731e7d584b64a277fec60e75877"
+
+inherit autotools pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even
+BBCLASSEXTEND = "native"
+
+# needed for writing out the qemu wrapper script
+export STAGING_DIR_HOST
+export B
+
+DEPENDS_append = " libffi zlib glib-2.0 python3 flex-native bison-native"
+
+# target build needs qemu to run temporary introspection binaries created
+# on the fly by g-ir-scanner and a native version of itself to run
+# native versions of its own tools during build.
+# Also prelink-rtld is used to find out library dependencies of introspection binaries
+# (standard ldd doesn't work when cross-compiling).
+DEPENDS_class-target_append = " gobject-introspection-native qemu-native prelink-native"
+
+SSTATE_SCAN_FILES += "g-ir-scanner-qemuwrapper g-ir-scanner-wrapper g-ir-compiler-wrapper g-ir-scanner-lddwrapper Gio-2.0.gir"
+
+do_configure_prepend_class-native() {
+        # Tweak the native python scripts so that they don't refer to the
+        # full path of native python binary (the solution is taken from glib-2.0 recipe)
+        # This removes the risk of exceeding Linux kernel's shebang line limit (128 bytes)
+        sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
+}
+
+do_configure_prepend_class-target() {
+        # Write out a qemu wrapper that will be given to gi-scanner so that it
+        # can run target helper binaries through that.
+        qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+        cat > ${B}/g-ir-scanner-qemuwrapper << EOF
+#!/bin/sh
+# Use a modules directory which doesn't exist so we don't load random things
+# which may then get deleted (or their dependencies) and potentially segfault
+export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
+
+$qemu_binary "\$@"
+if [ \$? -ne 0 ]; then
+    echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
+    echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
+    exit 1
+fi
+EOF
+        chmod +x ${B}/g-ir-scanner-qemuwrapper
+
+        # Write out a wrapper for g-ir-scanner itself, which will be used when building introspection files
+        # for glib-based packages. This wrapper calls the native version of the scanner, and tells it to use
+        # a qemu wrapper for running transient target binaries produced by the scanner, and an include directory 
+        # from the target sysroot.
+        cat > ${B}/g-ir-scanner-wrapper << EOF
+#!/bin/sh
+# This prevents g-ir-scanner from writing cache data to $HOME
+export GI_SCANNER_DISABLE_CACHE=1
+
+g-ir-scanner --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 "\$@"
+EOF
+        chmod +x ${B}/g-ir-scanner-wrapper
+
+        # Write out a wrapper for g-ir-compiler, which runs the target version of it through qemu.
+        # g-ir-compiler writes out the raw content of a C struct to disk, and therefore is architecture dependent.
+        cat > ${B}/g-ir-compiler-wrapper << EOF
+#!/bin/sh
+${STAGING_BINDIR}/g-ir-scanner-qemuwrapper ${STAGING_BINDIR}/g-ir-compiler "\$@"
+EOF
+        chmod +x ${B}/g-ir-compiler-wrapper
+
+        # Write out a wrapper to use instead of ldd, which does not work when a binary is built
+        # for a different architecture
+        cat > ${B}/g-ir-scanner-lddwrapper << EOF
+#!/bin/sh
+prelink-rtld --root=$STAGING_DIR_HOST "\$@"
+EOF
+        chmod +x ${B}/g-ir-scanner-lddwrapper
+
+        # Also tweak the target python scripts so that they don't refer to the
+        # native version of python binary (the solution is taken from glib-2.0 recipe)
+        sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
+}
+
+# Configure target build to use native tools of itself and to use a qemu wrapper
+# and optionally to generate introspection data
+EXTRA_OECONF_class-target += "--enable-host-gi \
+                              --enable-gi-cross-wrapper=${B}/g-ir-scanner-qemuwrapper \
+                              --enable-gi-ldd-wrapper=${B}/g-ir-scanner-lddwrapper \
+                              ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection-data', '--disable-introspection-data', d)} \
+                             "
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[doctool] = "--enable-doctool,--disable-doctool,python3-mako,"
+
+do_compile_prepend() {
+        # This prevents g-ir-scanner from writing cache data to $HOME
+        export GI_SCANNER_DISABLE_CACHE=1
+
+        # Needed to run g-ir unit tests, which won't be able to find the built libraries otherwise
+        export GIR_EXTRA_LIBS_PATH=$B/.libs
+}
+
+# Our wrappers need to be available system-wide, because they will be used 
+# to build introspection files for all other gobject-based packages
+do_install_append_class-target() {
+        install -d ${D}${bindir}/
+        install ${B}/g-ir-scanner-qemuwrapper ${D}${bindir}/
+        install ${B}/g-ir-scanner-wrapper ${D}${bindir}/
+        install ${B}/g-ir-compiler-wrapper ${D}${bindir}/
+        install ${B}/g-ir-scanner-lddwrapper ${D}${bindir}/
+}
+
+# .typelib files are needed at runtime and so they go to the main package
+FILES_${PN}_append = " ${libdir}/girepository-*/*.typelib"
+
+# .gir files go to dev package, as they're needed for developing (but not for running)
+# things that depends on introspection.
+FILES_${PN}-dev_append = " ${datadir}/gir-*/*.gir"
+
+# These are used by gobject-based packages
+# to generate transient introspection binaries
+FILES_${PN}-dev_append = " ${datadir}/gobject-introspection-1.0/gdump.c \
+               ${datadir}/gobject-introspection-1.0/Makefile.introspection"
+
+# These are used by dependent packages (e.g. pygobject) to build their
+# testsuites.
+FILES_${PN}-dev_append = " ${datadir}/gobject-introspection-1.0/tests/*.c \
+                   ${datadir}/gobject-introspection-1.0/tests/*.h"
+
+FILES_${PN}-dbg += "${libdir}/gobject-introspection/giscanner/.debug/"
+FILES_${PN}-staticdev += "${libdir}/gobject-introspection/giscanner/*.a"
+
+# we need target versions of introspection tools in sysroot so that they can be run via qemu
+# when building introspection files in other packages
+SYSROOT_DIRS_append_class-target = " ${bindir}"
+
+SYSROOT_PREPROCESS_FUNCS_append_class-target = " gi_binaries_sysroot_preprocess"
+gi_binaries_sysroot_preprocess() {
+        # Tweak the binary names in the introspection pkgconfig file, so that it
+        # picks up our wrappers which do the cross-compile and qemu magic.
+        sed -i \
+           -e "s|g_ir_scanner=.*|g_ir_scanner=${bindir}/g-ir-scanner-wrapper|" \
+           -e "s|g_ir_compiler=.*|g_ir_compiler=${bindir}/g-ir-compiler-wrapper|" \
+           ${SYSROOT_DESTDIR}${libdir}/pkgconfig/gobject-introspection-1.0.pc
+}
+
+# Need to ensure ld.so.conf exists so prelink-native works
+# both before we build and if we install from sstate
+do_configure[prefuncs] += "gobject_introspection_preconfigure"
+python gobject_introspection_preconfigure () {
+    oe.utils.write_ld_so_conf(d)
+}
+
+SSTATEPOSTINSTFUNCS += "gobject_introspection_postinst"
+python gobject_introspection_postinst () {
+    if d.getVar("BB_CURRENTTASK", True).startswith("populate_sysroot"):
+        oe.utils.write_ld_so_conf(d)
+}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.19.3.bb b/import-layers/yocto-poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.19.3.bb
deleted file mode 100644
index 25fdaba..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.19.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "GNOME desktop-wide GSettings schemas"
-HOMEPAGE = "http://live.gnome.org/gsettings-desktop-schemas"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = "glib-2.0 intltool-native"
-
-inherit gnomebase gsettings gettext gobject-introspection
-
-SRC_URI[archive.md5sum] = "fdc92abcffe46821be423193b275cf8b"
-SRC_URI[archive.sha256sum] = "9084989b75ca9b3fc5984c8a0d297a93d3d124f51cadd2bdaaaa75a783c80635"
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.20.0.bb b/import-layers/yocto-poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.20.0.bb
new file mode 100644
index 0000000..bb924ce
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.20.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "GNOME desktop-wide GSettings schemas"
+HOMEPAGE = "http://live.gnome.org/gsettings-desktop-schemas"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "glib-2.0 intltool-native"
+
+inherit gnomebase gsettings gettext gobject-introspection upstream-version-is-even
+
+SRC_URI[archive.md5sum] = "c5d87ea480aa9bf66b134ddb5b8ea0f8"
+SRC_URI[archive.sha256sum] = "55a41b533c0ab955e0a36a84d73829451c88b027d8d719955d8f695c35c6d9c1"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+.inc b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+.inc
index 5bbfe6b..c240baa 100644
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+.inc
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+.inc
@@ -58,7 +58,14 @@
 	${libdir}/gtk-2.0/modules/libferret.so \
 	"
 
-GTKBASE_RRECOMMENDS ?= "liberation-fonts gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm shared-mime-info"
+GTKBASE_RRECOMMENDS ?= "liberation-fonts \
+                        gdk-pixbuf-loader-png \
+                        gdk-pixbuf-loader-jpeg \
+                        gdk-pixbuf-loader-gif \
+                        gdk-pixbuf-loader-xpm \
+                        shared-mime-info \
+                        gnome-theme-adwaita \
+                        "
 GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
 
 RRECOMMENDS_${PN} = "${GTKBASE_RRECOMMENDS}"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3.inc b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3.inc
index bd29300..83e9b92 100644
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3.inc
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3.inc
@@ -6,7 +6,7 @@
 SECTION = "libs"
 
 DEPENDS = "glib-2.0 cairo pango atk jpeg libpng gdk-pixbuf \
-           docbook-utils-native gdk-pixbuf-native libepoxy"
+           docbook-utils-native gdk-pixbuf-native"
 
 LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
 
@@ -21,6 +21,8 @@
     # Do this because the configure script is running ./libtool directly
     rm -f libtool
     ln -s ${TARGET_PREFIX}libtool libtool
+    #delete a file that will get confused with generated one in ${B}
+    rm -f ${S}/gtk/gtktypefuncs.c
 }
 
 EXTRA_OECONF += " \
@@ -29,19 +31,25 @@
                  --enable-modules \
                  --disable-cups \
                  --disable-colord \
-"
+                 WAYLAND_PROTOCOLS_SYSROOT_DIR=${STAGING_DIR}/${MACHINE} \
+                 ${@bb.utils.contains("DISTRO_FEATURES", "x11", "", "--disable-gtk-doc", d)} \
+                 "
+EXTRA_OECONF[vardepsexclude] = "MACHINE"
 
 do_compile_prepend() {
         export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs"
 }
 
 PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)} \
+                   ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "opengl", "", d)} \
                    ${@bb.utils.contains("DISTRO_FEATURES", "opengl x11", "glx", "", d)} \
                    ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)}"
 
 PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes"
+# this is provided by oe-core patch that removes epoxy/gl dependency from a X11 build
+PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,libepoxy"
 PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,,libgl"
-PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,wayland libxkbcommon virtual/mesa wayland-native"
+PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,wayland wayland-protocols libxkbcommon virtual/mesa wayland-native"
 
 do_install_append() {
 	mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-3.0
@@ -61,10 +69,6 @@
                     ${datadir}/icons/hicolor/*/apps/gtk3-demo*.png \
                     ${datadir}/icons/hicolor/*/apps/gtk3-widget-factory*.png"
 
-# The demo uses PNG files and mime type sniffing, so ensure that these
-# dependencies are present.
-RDEPENDS_${PN}-demo += "gdk-pixbuf-loader-png shared-mime-info"
-
 FILES_${PN}_append = " ${bindir}/gtk-update-icon-cache-3.0 \
                ${bindir}/gtk-query-immodules-3.0 \
                ${bindir}/gtk-launch \
@@ -75,6 +79,7 @@
 FILES_${PN}-dev += " \
                     ${datadir}/gtk-3.0/gtkbuilder.rng \
                     ${datadir}/gtk-3.0/include \
+                    ${datadir}/gettext/its \
                     ${libdir}/gtk-3.0/include \
                     ${libdir}/gtk-3.0/${LIBV}/loaders/*.la \
                     ${libdir}/gtk-3.0/${LIBV}/immodules/*.la \
@@ -84,9 +89,22 @@
                     ${bindir}/gtk-builder-convert \
                     ${bindir}/gtk-encode-symbolic-svg \
                     ${bindir}/gtk-builder-tool \
+                    ${bindir}/gtk-query-settings \
                     "
 
-RRECOMMENDS_${PN} = "adwaita-icon-theme-symbolic"
+GTKBASE_RRECOMMENDS ?= "liberation-fonts \
+                        gdk-pixbuf-loader-png \
+                        gdk-pixbuf-loader-jpeg \
+                        gdk-pixbuf-loader-gif \
+                        gdk-pixbuf-loader-xpm \
+                        shared-mime-info \
+                        adwaita-icon-theme-symbolic \
+                        "
+GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
+
+RRECOMMENDS_${PN} = "${GTKBASE_RRECOMMENDS}"
+RRECOMMENDS_${PN}_libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
+RDEPENDS_${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}"
 
 PACKAGES_DYNAMIC += "^gtk3-immodule-.* ^gtk3-printbackend-.*"
 
@@ -110,4 +128,3 @@
     if (d.getVar('DEBIAN_NAMES', True)):
         d.setVar(d.expand('PKG_${PN}'), '${MLPREFIX}libgtk-3.0')
 }
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch
new file mode 100644
index 0000000..0bda1f1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch
@@ -0,0 +1,47 @@
+From 5a73a5b92566e314bbc8a1bd40f1ec204837c111 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 21 Jun 2016 14:53:56 +0300
+Subject: [PATCH 1/4] Hardcoded libtool
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 23d3077..b6931d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -610,7 +610,7 @@ AC_MSG_CHECKING([whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+   auto)
+     export SED
+-    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
++    deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
+     if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
+       enable_explicit_deps=yes
+     else
+@@ -876,7 +876,7 @@ else
+     dnl Now we check to see if our libtool supports shared lib deps
+     dnl (in a rather ugly way even)
+     if $dynworks; then
+-        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
+         module_deplibs_check=`$module_libtool_config | \
+             grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+             sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1630,7 +1630,7 @@ AC_SUBST(GTK_PRINT_BACKENDS)
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+   GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"`
+   GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"`
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0001-Redo-focus-handling-in-treeview-once-more.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0001-Redo-focus-handling-in-treeview-once-more.patch
new file mode 100644
index 0000000..e819add
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0001-Redo-focus-handling-in-treeview-once-more.patch
@@ -0,0 +1,39 @@
+Upstream-Status: Backport [29faa2db]
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+
+
+From 29faa2db44b04b9cf7f4d96e32691f424490c730 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen@redhat.com>
+Date: Sun, 11 Sep 2016 11:47:55 -0400
+Subject: [PATCH] Redo focus handling in treeview once more
+
+The fix for bug 767468 had some unintended side-effects. This is
+an attempt at doing the same fix (don't grab focus when we are
+grab-shadowed), while avoiding the breakage, by using GTK+'s
+internal tracking for grab-shadowed-ness.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=770508
+---
+ gtk/gtktreeview.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
+index a7463cc..73d3557 100644
+--- a/gtk/gtktreeview.c
++++ b/gtk/gtktreeview.c
+@@ -3050,11 +3050,10 @@ static void
+ grab_focus_and_unset_draw_keyfocus (GtkTreeView *tree_view)
+ {
+   GtkWidget *widget = GTK_WIDGET (tree_view);
+-  GtkWidget *grab_widget = gtk_grab_get_current ();
+ 
+   if (gtk_widget_get_can_focus (widget) &&
+       !gtk_widget_has_focus (widget) &&
+-      (!grab_widget || grab_widget == widget))
++      !_gtk_widget_get_shadowed (widget))
+     gtk_widget_grab_focus (widget);
+ 
+   tree_view->priv->draw_keyfocus = 0;
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
new file mode 100644
index 0000000..989716e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
@@ -0,0 +1,60 @@
+From d63b926f8c8d8b5c9f9ec33d078b775f0409d88a Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Fri, 16 Oct 2015 16:35:16 +0300
+Subject: [PATCH 2/4] Do not try to initialize GL without libGL
+
+_gdk_x11_screen_update_visuals_for_gl() will end up calling epoxys
+GLX api which will exit() if libGL.so.1 is not present. We do not
+want that to happen and we don't want every app to have to set
+"GDK_GL=disabled" environment variable: so use #ifdef set based on
+opengl distro feature.
+
+Upstream is not interested in the fix as it is: Either epoxy should be
+fixed (to not exit) or GTK+ possibly could do some additional probing
+before calling epoxy APIs.
+
+Upstream-Status: Denied
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.ac            | 7 +++++++
+ gdk/x11/gdkvisual-x11.c | 5 +++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index b6931d6..e27da49 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -342,6 +342,13 @@ AC_ARG_ENABLE(mir-backend,
+                               [enable the Mir gdk backend])],
+ 			      [backend_set=yes])
+ 
++AC_ARG_ENABLE(glx,
++              [AS_HELP_STRING([--enable-glx],
++                              [When enabled Gdk will try to initialize GLX])])
++AS_IF([test "x$enable_glx" != "xno"], [
++  AC_DEFINE([HAVE_GLX], [], [GLX will be available at runtime])
++])
++
+ if test -z "$backend_set"; then
+   if test "$platform_win32" = yes; then
+     enable_win32_backend=yes
+diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c
+index 81479d8..3c8c5c0 100644
+--- a/gdk/x11/gdkvisual-x11.c
++++ b/gdk/x11/gdkvisual-x11.c
+@@ -306,7 +306,12 @@ _gdk_x11_screen_init_visuals (GdkScreen *screen)
+   /* If GL is available we want to pick better default/rgba visuals,
+      as we care about glx details such as alpha/depth/stencil depth,
+      stereo and double buffering */
++  /* update_visuals_for_gl() will end up calling epoxy GLX api which
++     will exit if libgl is not there: so only do this if we know GL
++     is available */
++#ifdef HAVE_GLX
+   _gdk_x11_screen_update_visuals_for_gl (screen);
++#endif
+ }
+ 
+ gint
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
new file mode 100644
index 0000000..0912c44
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
@@ -0,0 +1,954 @@
+From a8fa547fdc1416b330aced805f5343ad912932ae Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 21 Jun 2016 15:11:39 +0300
+Subject: [PATCH 3/4] Add --disable-opengl configure option
+
+--disable-opengl will remove the dependency on libepoxy and on the
+OpenGL APIs. This is useful for those who want to keep using gtk+3
+without the "opengl" distro feature.
+
+GtkGLArea is still part of the API (it just doesn't work) even when
+OpenGL is disabled. GdkX11GLContext was removed from the Gtk API
+completely: that object exposes GL API elements so it had to be at
+the very least modified.
+
+The patch is _not_ great from a maintenance point of view and
+modifying the library API is also a fairly nasty thing to do.
+Long-term it would be good to find an alternative solution to this
+(maybe a no-op backend for libepoxy?)
+
+Upstream-Status: Inappropriate [Evil eye expected from upstream]
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.ac                      | 13 +++++++++++--
+ demos/gtk-demo/glarea.c           | 13 +++++++++++++
+ docs/tools/Makefile.am            |  9 +++++++--
+ docs/tools/widgets.c              |  4 +++-
+ gdk/gdkdisplay.c                  |  4 +++-
+ gdk/gdkgl.c                       | 10 ++++++++++
+ gdk/gdkglcontext.c                |  6 ++++++
+ gdk/gdkwindow.c                   | 13 +++++++++++++
+ gdk/x11/Makefile.am               | 30 ++++++++++++++++++++++++++----
+ gdk/x11/gdkdisplay-x11.c          |  6 +++++-
+ gdk/x11/gdkscreen-x11.c           |  5 +++++
+ gdk/x11/gdkwindow-x11.c           |  4 ++++
+ gdk/x11/gdkx-autocleanups.h       |  2 ++
+ gdk/x11/gdkx-with-gl-context.h    | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gdk/x11/gdkx-without-gl-context.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gdk/x11/gdkx.h                    | 59 -----------------------------------------------------------
+ gtk/Makefile.am                   |  3 +--
+ gtk/gtkglarea.c                   | 20 +++++++++++++++++++-
+ gtk/inspector/general.c           |  6 ++++++
+ tests/Makefile.am                 | 10 +++++++---
+ testsuite/gtk/objects-finalize.c  |  2 ++
+ 21 files changed, 260 insertions(+), 76 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index a01824e..dde9dc5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -342,6 +342,15 @@ AC_ARG_ENABLE(mir-backend,
+                               [enable the Mir gdk backend])],
+ 			      [backend_set=yes])
+ 
++AC_ARG_ENABLE(opengl,
++              [AS_HELP_STRING([--enable-opengl],
++                              [When enabled, Gtk+ will use libepoxy and exposes GtkGLArea widget ])])
++AS_IF([test "x$enable_opengl" != "xno"], [
++  AC_DEFINE([HAVE_OPENGL], [1], [libepoxy and opengl APIs are available at buildtime])
++  EPOXY_PACKAGES="epoxy >= epoxy_required_version"
++])
++AM_CONDITIONAL([HAVE_OPENGL],[test "x$enable_opengl" != "xno"])
++
+ AC_ARG_ENABLE(glx,
+               [AS_HELP_STRING([--enable-glx],
+                               [When enabled Gdk will try to initialize GLX])])
+@@ -1333,7 +1342,7 @@ CFLAGS="$saved_cflags"
+ LDFLAGS="$saved_ldflags"
+ 
+ GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
+-GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends epoxy >= epoxy_required_version"
++GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends $EPOXY_PACKAGES"
+ 
+ PKG_CHECK_MODULES(GDK_DEP, $GDK_PACKAGES $GDK_PRIVATE_PACKAGES)
+ GDK_DEP_LIBS="$GDK_EXTRA_LIBS $GDK_DEP_LIBS $MATH_LIB"
+@@ -1367,7 +1376,7 @@ fi
+ PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)
+ 
+ GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version"
+-GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= epoxy_required_version"
++GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $EPOXY_PACKAGES"
+ if test "x$enable_x11_backend" = xyes -o "x$enable_wayland_backend" = xyes; then
+   GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2"
+ fi
+diff --git a/demos/gtk-demo/glarea.c b/demos/gtk-demo/glarea.c
+index 3aba729..c6c79f7 100644
+--- a/demos/gtk-demo/glarea.c
++++ b/demos/gtk-demo/glarea.c
+@@ -5,7 +5,9 @@
+ 
+ #include <math.h>
+ #include <gtk/gtk.h>
++#if HAVE_OPENGL
+ #include <epoxy/gl.h>
++#endif
+ 
+ static GtkWidget *demo_window = NULL;
+ 
+@@ -23,6 +25,8 @@ enum {
+ /* Rotation angles on each axis */
+ static float rotation_angles[N_AXIS] = { 0.0 };
+ 
++#ifdef HAVE_OPENGL
++
+ /* The object we are drawing */
+ static const GLfloat vertex_data[] = {
+   0.f,   0.5f,   0.f, 1.f,
+@@ -213,6 +217,7 @@ compute_mvp (float *res,
+ static GLuint position_buffer;
+ static GLuint program;
+ static GLuint mvp_location;
++#endif
+ 
+ /* We need to set up our state when we realize the GtkGLArea widget */
+ static void
+@@ -223,8 +228,10 @@ realize (GtkWidget *widget)
+   if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
+     return;
+ 
++#ifdef HAVE_OPENGL
+   init_buffers (&position_buffer, NULL);
+   init_shaders (&program, &mvp_location);
++#endif
+ }
+ 
+ /* We should tear down the state when unrealizing */
+@@ -236,10 +243,13 @@ unrealize (GtkWidget *widget)
+   if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL)
+     return;
+ 
++#ifdef HAVE_OPENGL
+   glDeleteBuffers (1, &position_buffer);
+   glDeleteProgram (program);
++#endif
+ }
+ 
++#ifdef HAVE_OPENGL
+ static void
+ draw_triangle (void)
+ {
+@@ -272,6 +282,7 @@ draw_triangle (void)
+   glBindBuffer (GL_ARRAY_BUFFER, 0);
+   glUseProgram (0);
+ }
++#endif
+ 
+ static gboolean
+ render (GtkGLArea    *area,
+@@ -280,6 +291,7 @@ render (GtkGLArea    *area,
+   if (gtk_gl_area_get_error (area) != NULL)
+     return FALSE;
+ 
++#ifdef HAVE_OPENGL
+   /* Clear the viewport */
+   glClearColor (0.5, 0.5, 0.5, 1.0);
+   glClear (GL_COLOR_BUFFER_BIT);
+@@ -289,6 +301,7 @@ render (GtkGLArea    *area,
+ 
+   /* Flush the contents of the pipeline */
+   glFlush ();
++#endif
+ 
+   return TRUE;
+ }
+diff --git a/docs/tools/Makefile.am b/docs/tools/Makefile.am
+index 6a6d70f..5cdf312 100644
+--- a/docs/tools/Makefile.am
++++ b/docs/tools/Makefile.am
+@@ -9,13 +9,18 @@ AM_CPPFLAGS = \
+ 	$(GTK_DEBUG_FLAGS)		\
+ 	$(GTK_DEP_CFLAGS)
+ 
++if HAVE_OPENGL
++GEARS_LDADD = $(top_builddir)/tests/gtkgears.o
++endif
++
+ DEPS = \
+-	$(top_builddir)/gtk/libgtk-3.la
++	$(top_builddir)/gtk/libgtk-3.la	\
++	$(GEARS_LDADD)
+ 
+ LDADDS = \
+ 	$(top_builddir)/gtk/libgtk-3.la	\
+ 	$(top_builddir)/gdk/libgdk-3.la	\
+-	$(top_builddir)/tests/gtkgears.o \
++	$(GEARS_LDADD)			\
+ 	$(GTK_DEP_LIBS)			\
+ 	$(GDK_DEP_LIBS)			\
+ 	-lm
+diff --git a/docs/tools/widgets.c b/docs/tools/widgets.c
+index 932daf1..54239d6 100644
+--- a/docs/tools/widgets.c
++++ b/docs/tools/widgets.c
+@@ -1526,9 +1526,11 @@ create_gl_area (void)
+   widget = gtk_frame_new (NULL);
+   gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN);
+ 
++#ifdef HAVE_OPENGL
+   gears = gtk_gears_new ();
+   gtk_container_add (GTK_CONTAINER (widget), gears);
+- 
++#endif
++
+   info = new_widget_info ("glarea", widget, MEDIUM);
+ 
+   return info;
+diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
+index 6150ef7..2223629 100644
+--- a/gdk/gdkdisplay.c
++++ b/gdk/gdkdisplay.c
+@@ -2360,7 +2360,9 @@ gboolean
+ gdk_display_make_gl_context_current (GdkDisplay   *display,
+                                      GdkGLContext *context)
+ {
+-  return GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current (display, context);
++  if (GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current)
++    return GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current (display, context);
++  return FALSE;
+ }
+ 
+ GdkRenderingMode
+diff --git a/gdk/gdkgl.c b/gdk/gdkgl.c
+index e8ba770..ba7c84b 100644
+--- a/gdk/gdkgl.c
++++ b/gdk/gdkgl.c
+@@ -22,7 +22,9 @@
+ 
+ #include "gdkinternals.h"
+ 
++#ifdef HAVE_OPENGL
+ #include <epoxy/gl.h>
++#endif
+ #include <math.h>
+ #include <string.h>
+ 
+@@ -36,6 +38,7 @@ gdk_cairo_surface_mark_as_direct (cairo_surface_t *surface,
+                                g_object_ref (window),  g_object_unref);
+ }
+ 
++#ifdef HAVE_OPENGL
+ static const char *
+ get_vertex_type_name (int type)
+ {
+@@ -254,6 +257,7 @@ use_texture_rect_program (GdkGLContextPaintData *paint_data)
+       glUseProgram (paint_data->current_program->program);
+     }
+ }
++#endif
+ 
+ void
+ gdk_gl_texture_quads (GdkGLContext *paint_context,
+@@ -261,6 +265,7 @@ gdk_gl_texture_quads (GdkGLContext *paint_context,
+                       int n_quads,
+                       GdkTexturedQuad *quads)
+ {
++#ifdef HAVE_OPENGL
+   GdkGLContextPaintData *paint_data  = gdk_gl_context_get_paint_data (paint_context);
+   GdkGLContextProgram *program;
+   GdkWindow *window = gdk_gl_context_get_window (paint_context);
+@@ -324,6 +329,7 @@ gdk_gl_texture_quads (GdkGLContext *paint_context,
+ 
+   glDisableVertexAttribArray (program->position_location);
+   glDisableVertexAttribArray (program->uv_location);
++#endif
+ }
+ 
+ /* x,y,width,height describes a rectangle in the gl render buffer
+@@ -372,6 +378,7 @@ gdk_cairo_draw_from_gl (cairo_t              *cr,
+                         int                   width,
+                         int                   height)
+ {
++#ifdef HAVE_OPENGL
+   GdkGLContext *paint_context;
+   cairo_surface_t *image;
+   cairo_matrix_t matrix;
+@@ -692,6 +699,7 @@ gdk_cairo_draw_from_gl (cairo_t              *cr,
+   if (clip_region)
+     cairo_region_destroy (clip_region);
+ 
++#endif
+ }
+ 
+ /* This is always called with the paint context current */
+@@ -699,6 +707,7 @@ void
+ gdk_gl_texture_from_surface (cairo_surface_t *surface,
+ 			     cairo_region_t  *region)
+ {
++#ifdef HAVE_OPENGL
+   GdkGLContext *paint_context;
+   cairo_surface_t *image;
+   double device_x_offset, device_y_offset;
+@@ -799,4 +808,5 @@ gdk_gl_texture_from_surface (cairo_surface_t *surface,
+ 
+   glDisable (GL_SCISSOR_TEST);
+   glDeleteTextures (1, &texture_id);
++#endif
+ }
+diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c
+index 00a33eb..bd8a793 100644
+--- a/gdk/gdkglcontext.c
++++ b/gdk/gdkglcontext.c
+@@ -85,7 +85,9 @@
+ #include "gdkintl.h"
+ #include "gdk-private.h"
+ 
++#ifdef HAVE_OPENGL
+ #include <epoxy/gl.h>
++#endif
+ 
+ typedef struct {
+   GdkDisplay *display;
+@@ -239,6 +241,7 @@ gdk_gl_context_upload_texture (GdkGLContext    *context,
+                                int              height,
+                                guint            texture_target)
+ {
++#ifdef HAVE_OPENGL
+   g_return_if_fail (GDK_IS_GL_CONTEXT (context));
+ 
+   glPixelStorei (GL_UNPACK_ALIGNMENT, 4);
+@@ -246,6 +249,7 @@ gdk_gl_context_upload_texture (GdkGLContext    *context,
+   glTexImage2D (texture_target, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,
+                 cairo_image_surface_get_data (image_surface));
+   glPixelStorei (GL_UNPACK_ROW_LENGTH, 0);
++#endif
+ }
+ 
+ static void
+@@ -635,6 +639,7 @@ gdk_gl_context_realize (GdkGLContext  *context,
+ static void
+ gdk_gl_context_check_extensions (GdkGLContext *context)
+ {
++#ifdef HAVE_OPENGL
+   GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
+   gboolean has_npot, has_texture_rectangle;
+ 
+@@ -677,6 +682,7 @@ gdk_gl_context_check_extensions (GdkGLContext *context)
+                        priv->use_texture_rectangle ? "yes" : "no"));
+ 
+   priv->extensions_checked = TRUE;
++#endif
+ }
+ 
+ /**
+diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
+index 66ebb9d..74a0c3a 100644
+--- a/gdk/gdkwindow.c
++++ b/gdk/gdkwindow.c
+@@ -44,7 +44,9 @@
+ 
+ #include <math.h>
+ 
++#ifdef HAVE_OPENGL
+ #include <epoxy/gl.h>
++#endif
+ 
+ /* for the use of round() */
+ #include "fallback-c89.c"
+@@ -2759,6 +2761,13 @@ gdk_window_get_paint_gl_context (GdkWindow  *window,
+ {
+   GError *internal_error = NULL;
+ 
++#ifndef HAVE_OPENGL
++  g_set_error_literal (error, GDK_GL_ERROR,
++                       GDK_GL_ERROR_NOT_AVAILABLE,
++                       _("GL support disabled with --disable-opengl"));
++  return NULL;
++#endif
++
+   if (_gdk_gl_flags & GDK_GL_DISABLE)
+     {
+       g_set_error_literal (error, GDK_GL_ERROR,
+@@ -2955,6 +2964,7 @@ gdk_window_begin_paint_region (GdkWindow       *window,
+         }
+       else
+         {
++#ifdef HAVE_OPENGL
+ 	  gdk_gl_context_make_current (context);
+           /* With gl we always need a surface to combine the gl
+              drawing with the native drawing. */
+@@ -2969,6 +2979,7 @@ gdk_window_begin_paint_region (GdkWindow       *window,
+           glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ 
+           glViewport (0, 0, ww, wh);
++#endif
+         }
+     }
+ 
+@@ -3117,6 +3128,7 @@ gdk_window_end_paint (GdkWindow *window)
+ 
+           gdk_gl_context_make_current (window->gl_paint_context);
+ 
++#ifdef HAVE_OPENGL
+           if (!cairo_region_is_empty (opaque_region))
+             gdk_gl_texture_from_surface (window->current_paint.surface,
+                                          opaque_region);
+@@ -3127,6 +3139,7 @@ gdk_window_end_paint (GdkWindow *window)
+                                            window->current_paint.need_blend_region);
+               glDisable(GL_BLEND);
+             }
++#endif
+ 
+           cairo_region_destroy (opaque_region);
+ 
+diff --git a/gdk/x11/Makefile.am b/gdk/x11/Makefile.am
+index c488a31..4ce3c07 100644
+--- a/gdk/x11/Makefile.am
++++ b/gdk/x11/Makefile.am
+@@ -39,8 +39,6 @@ libgdk_x11_la_SOURCES = 	\
+ 	gdkeventtranslator.c	\
+ 	gdkeventtranslator.h	\
+ 	gdkgeometry-x11.c  	\
+-	gdkglcontext-x11.c	\
+-	gdkglcontext-x11.h	\
+ 	gdkkeys-x11.c		\
+ 	gdkmain-x11.c		\
+ 	gdkproperty-x11.c	\
+@@ -53,14 +51,32 @@ libgdk_x11_la_SOURCES = 	\
+ 	gdkwindow-x11.h		\
+ 	gdkxftdefaults.c	\
+ 	gdkxid.c		\
+-	gdkx.h			\
+ 	gdkprivate-x11.h	\
+ 	xsettings-client.h	\
+ 	xsettings-client.c
+ 
++if HAVE_OPENGL
++libgdk_x11_la_SOURCES +=        \
++	gdkglcontext-x11.c	\
++	gdkglcontext-x11.h
++endif
++
+ libgdkinclude_HEADERS = 	\
+ 	gdkx.h
+ 
++if HAVE_OPENGL
++GDKX_HEADER = gdkx-with-gl-context.h
++else
++GDKX_HEADER = gdkx-without-gl-context.h
++endif
++
++BUILT_SOURCES = gdkx.h
++
++.PHONY: gdkx.h
++gdkx.h:
++	$(AM_V_GEN) cd $(srcdir) \
++	&& (cmp -s $(GDKX_HEADER) gdkx.h || cp $(GDKX_HEADER) gdkx.h )
++
+ libgdkx11include_HEADERS = 	\
+ 	gdkx-autocleanups.h	\
+ 	gdkx11applaunchcontext.h \
+@@ -74,7 +90,6 @@ libgdkx11include_HEADERS = 	\
+ 	gdkx11display.h		\
+ 	gdkx11displaymanager.h	\
+ 	gdkx11dnd.h		\
+-	gdkx11glcontext.h	\
+ 	gdkx11keys.h		\
+ 	gdkx11property.h	\
+ 	gdkx11screen.h		\
+@@ -83,9 +98,16 @@ libgdkx11include_HEADERS = 	\
+ 	gdkx11visual.h		\
+ 	gdkx11window.h
+ 
++if HAVE_OPENGL
++libgdkx11include_HEADERS += gdkx11glcontext.h
++endif
++
+ # We need to include all these C files here since the conditionals
+ # don't seem to be correctly expanded for the dist files.
+ EXTRA_DIST += 			\
++	gdkx.h			\
+ 	gdksettings.c
+ 
++MAINTAINERCLEANFILES = gdkx.h
++
+ -include $(top_srcdir)/git.mk
+diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
+index de91c64..42d50f6 100644
+--- a/gdk/x11/gdkdisplay-x11.c
++++ b/gdk/x11/gdkdisplay-x11.c
+@@ -37,7 +37,9 @@
+ #include "gdkdisplay-x11.h"
+ #include "gdkprivate-x11.h"
+ #include "gdkscreen-x11.h"
++#ifdef HAVE_OPENGL
+ #include "gdkglcontext-x11.h"
++#endif
+ #include "gdk-private.h"
+ 
+ #include <glib.h>
+@@ -2959,7 +2961,9 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
+   display_class->text_property_to_utf8_list = _gdk_x11_display_text_property_to_utf8_list;
+   display_class->utf8_to_string_target = _gdk_x11_display_utf8_to_string_target;
+ 
+-  display_class->make_gl_context_current = gdk_x11_display_make_gl_context_current;
++#ifdef HAVE_OPENGL
++   display_class->make_gl_context_current = gdk_x11_display_make_gl_context_current;
++#endif
+ 
+   display_class->get_default_seat = gdk_x11_display_get_default_seat;
+ 
+diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
+index 9d8ed20..bd46b00 100644
+--- a/gdk/x11/gdkscreen-x11.c
++++ b/gdk/x11/gdkscreen-x11.c
+@@ -1968,3 +1968,8 @@ gdk_x11_screen_get_current_desktop (GdkScreen *screen)
+ {
+   return get_netwm_cardinal_property (screen, "_NET_CURRENT_DESKTOP");
+ }
++
++#ifndef HAVE_OPENGL
++/* Function from in gdk/x11/gdkglcontext-x11.c */
++void _gdk_x11_screen_update_visuals_for_gl (GdkScreen *screen) {}
++#endif
+diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
+index 9ed087a..30d6eb7 100644
+--- a/gdk/x11/gdkwindow-x11.c
++++ b/gdk/x11/gdkwindow-x11.c
+@@ -36,7 +36,9 @@
+ #include "gdkasync.h"
+ #include "gdkeventsource.h"
+ #include "gdkdisplay-x11.h"
++#ifdef HAVE_OPENGL
+ #include "gdkglcontext-x11.h"
++#endif
+ #include "gdkprivate-x11.h"
+ #include "gdk-private.h"
+ 
+@@ -5782,7 +5784,9 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass)
+   impl_class->set_opaque_region = gdk_x11_window_set_opaque_region;
+   impl_class->set_shadow_width = gdk_x11_window_set_shadow_width;
+   impl_class->show_window_menu = gdk_x11_window_show_window_menu;
++#ifdef HAVE_OPENGL
+   impl_class->create_gl_context = gdk_x11_window_create_gl_context;
+   impl_class->invalidate_for_new_frame = gdk_x11_window_invalidate_for_new_frame;
++#endif
+   impl_class->get_unscaled_size = gdk_x11_window_get_unscaled_size;
+ }
+diff --git a/gdk/x11/gdkx-autocleanups.h b/gdk/x11/gdkx-autocleanups.h
+index edb0ea7..a317d61 100644
+--- a/gdk/x11/gdkx-autocleanups.h
++++ b/gdk/x11/gdkx-autocleanups.h
+@@ -30,7 +30,9 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11DeviceXI2, g_object_unref)
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Display, g_object_unref)
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11DisplayManager, g_object_unref)
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11DragContext, g_object_unref)
++#ifdef HAVE_OPENGL
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11GLContext, g_object_unref)
++#endif
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Keymap, g_object_unref)
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Screen, g_object_unref)
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Visual, g_object_unref)
+diff --git a/gdk/x11/gdkx-with-gl-context.h b/gdk/x11/gdkx-with-gl-context.h
+new file mode 100644
+index 0000000..ae05fa6
+--- /dev/null
++++ b/gdk/x11/gdkx-with-gl-context.h
+@@ -0,0 +1,59 @@
++/* GDK - The GIMP Drawing Kit
++ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
++ */
++
++/*
++ * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
++ * file for a list of people on the GTK+ Team.  See the ChangeLog
++ * files for a list of changes.  These files are distributed with
++ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
++ */
++
++#ifndef __GDK_X_H__
++#define __GDK_X_H__
++
++#include <gdk/gdk.h>
++
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++#define __GDKX_H_INSIDE__
++
++#include <gdk/x11/gdkx11applaunchcontext.h>
++#include <gdk/x11/gdkx11cursor.h>
++#include <gdk/x11/gdkx11device.h>
++#include <gdk/x11/gdkx11device-core.h>
++#include <gdk/x11/gdkx11device-xi2.h>
++#include <gdk/x11/gdkx11devicemanager.h>
++#include <gdk/x11/gdkx11devicemanager-core.h>
++#include <gdk/x11/gdkx11devicemanager-xi2.h>
++#include <gdk/x11/gdkx11display.h>
++#include <gdk/x11/gdkx11displaymanager.h>
++#include <gdk/x11/gdkx11dnd.h>
++#include <gdk/x11/gdkx11glcontext.h>
++#include <gdk/x11/gdkx11keys.h>
++#include <gdk/x11/gdkx11property.h>
++#include <gdk/x11/gdkx11screen.h>
++#include <gdk/x11/gdkx11selection.h>
++#include <gdk/x11/gdkx11utils.h>
++#include <gdk/x11/gdkx11visual.h>
++#include <gdk/x11/gdkx11window.h>
++
++#include <gdk/x11/gdkx-autocleanups.h>
++
++#undef __GDKX_H_INSIDE__
++
++#endif /* __GDK_X_H__ */
+diff --git a/gdk/x11/gdkx-without-gl-context.h b/gdk/x11/gdkx-without-gl-context.h
+new file mode 100644
+index 0000000..c9e2617
+--- /dev/null
++++ b/gdk/x11/gdkx-without-gl-context.h
+@@ -0,0 +1,58 @@
++/* GDK - The GIMP Drawing Kit
++ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
++ */
++
++/*
++ * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
++ * file for a list of people on the GTK+ Team.  See the ChangeLog
++ * files for a list of changes.  These files are distributed with
++ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
++ */
++
++#ifndef __GDK_X_H__
++#define __GDK_X_H__
++
++#include <gdk/gdk.h>
++
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++#define __GDKX_H_INSIDE__
++
++#include <gdk/x11/gdkx11applaunchcontext.h>
++#include <gdk/x11/gdkx11cursor.h>
++#include <gdk/x11/gdkx11device.h>
++#include <gdk/x11/gdkx11device-core.h>
++#include <gdk/x11/gdkx11device-xi2.h>
++#include <gdk/x11/gdkx11devicemanager.h>
++#include <gdk/x11/gdkx11devicemanager-core.h>
++#include <gdk/x11/gdkx11devicemanager-xi2.h>
++#include <gdk/x11/gdkx11display.h>
++#include <gdk/x11/gdkx11displaymanager.h>
++#include <gdk/x11/gdkx11dnd.h>
++#include <gdk/x11/gdkx11keys.h>
++#include <gdk/x11/gdkx11property.h>
++#include <gdk/x11/gdkx11screen.h>
++#include <gdk/x11/gdkx11selection.h>
++#include <gdk/x11/gdkx11utils.h>
++#include <gdk/x11/gdkx11visual.h>
++#include <gdk/x11/gdkx11window.h>
++
++#include <gdk/x11/gdkx-autocleanups.h>
++
++#undef __GDKX_H_INSIDE__
++
++#endif /* __GDK_X_H__ */
+diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h
+deleted file mode 100644
+index ae05fa6..0000000
+--- a/gdk/x11/gdkx.h
++++ /dev/null
+@@ -1,59 +0,0 @@
+-/* GDK - The GIMP Drawing Kit
+- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public
+- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/*
+- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
+- * file for a list of people on the GTK+ Team.  See the ChangeLog
+- * files for a list of changes.  These files are distributed with
+- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+- */
+-
+-#ifndef __GDK_X_H__
+-#define __GDK_X_H__
+-
+-#include <gdk/gdk.h>
+-
+-#include <X11/Xlib.h>
+-#include <X11/Xutil.h>
+-
+-#define __GDKX_H_INSIDE__
+-
+-#include <gdk/x11/gdkx11applaunchcontext.h>
+-#include <gdk/x11/gdkx11cursor.h>
+-#include <gdk/x11/gdkx11device.h>
+-#include <gdk/x11/gdkx11device-core.h>
+-#include <gdk/x11/gdkx11device-xi2.h>
+-#include <gdk/x11/gdkx11devicemanager.h>
+-#include <gdk/x11/gdkx11devicemanager-core.h>
+-#include <gdk/x11/gdkx11devicemanager-xi2.h>
+-#include <gdk/x11/gdkx11display.h>
+-#include <gdk/x11/gdkx11displaymanager.h>
+-#include <gdk/x11/gdkx11dnd.h>
+-#include <gdk/x11/gdkx11glcontext.h>
+-#include <gdk/x11/gdkx11keys.h>
+-#include <gdk/x11/gdkx11property.h>
+-#include <gdk/x11/gdkx11screen.h>
+-#include <gdk/x11/gdkx11selection.h>
+-#include <gdk/x11/gdkx11utils.h>
+-#include <gdk/x11/gdkx11visual.h>
+-#include <gdk/x11/gdkx11window.h>
+-
+-#include <gdk/x11/gdkx-autocleanups.h>
+-
+-#undef __GDKX_H_INSIDE__
+-
+-#endif /* __GDK_X_H__ */
+diff --git a/gtk/Makefile.am b/gtk/Makefile.am
+index 6a53a2b..49a35e6 100644
+--- a/gtk/Makefile.am
++++ b/gtk/Makefile.am
+@@ -1351,14 +1351,13 @@ gtkprivatetypebuiltins.c: $(gtk_private_type_h_sources)  gtkprivatetypebuiltins.
+ 	&& cp xgen-gptbc gtkprivatetypebuiltins.c  \
+ 	&& rm -f xgen-gptbc
+ 
+-
+ gtktypefuncs.c: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_srcdir)/gtk/*.h $(top_srcdir)/gtk/a11y/*.h $(top_srcdir)/gtk/deprecated/*.h $(top_srcdir)/gdk/*.h Makefile
+ 	$(AM_V_GEN) (echo '#undef GTK_COMPILATION' && echo '#include <gtk/gtkx.h>') > xgen-gtfsrc.c && \
+ 	  echo 'G_GNUC_BEGIN_IGNORE_DEPRECATIONS' > xgen-gtf && \
+ 	  ${CPP} $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) xgen-gtfsrc.c | \
+ 	  $(GREP) -o '\bg[td]k_[a-zA-Z0-9_]*_get_type\b' | \
+ 	  sort | uniq | \
+-	  $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; }' >> xgen-gtf \
++	  $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; s/^.*gdk_x11_gl.*$$/#ifdef HAVE_OPENGL\n&\n#endif/; }' >> xgen-gtf \
+ 	&& cp xgen-gtf $@ && rm -f xgen-gtf
+ gtktestutils.c: gtktypefuncs.c
+ 
+diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c
+index 245fc6b..4214ad1 100644
+--- a/gtk/gtkglarea.c
++++ b/gtk/gtkglarea.c
+@@ -28,7 +28,9 @@
+ #include "gtkprivate.h"
+ #include "gtkrender.h"
+ 
++#ifdef HAVE_OPENGL
+ #include <epoxy/gl.h>
++#endif
+ 
+ /**
+  * SECTION:gtkglarea
+@@ -357,9 +359,12 @@ gtk_gl_area_real_create_context (GtkGLArea *area)
+ static void
+ gtk_gl_area_resize (GtkGLArea *area, int width, int height)
+ {
++#ifdef HAVE_OPENGL
+   glViewport (0, 0, width, height);
++#endif
+ }
+ 
++#ifdef HAVE_OPENGL
+ /*
+  * Creates all the buffer objects needed for rendering the scene
+  */
+@@ -467,6 +472,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
+ 
+   priv->needs_render = TRUE;
+ }
++#endif
+ 
+ /**
+  * gtk_gl_area_attach_buffers:
+@@ -485,6 +491,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
+ void
+ gtk_gl_area_attach_buffers (GtkGLArea *area)
+ {
++#ifdef HAVE_OPENGL
+   GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
+ 
+   g_return_if_fail (GTK_IS_GL_AREA (area));
+@@ -517,11 +524,13 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
+         glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT,
+                                       GL_RENDERBUFFER_EXT, priv->depth_stencil_buffer);
+     }
++#endif
+ }
+ 
+ static void
+ gtk_gl_area_delete_buffers (GtkGLArea *area)
+ {
++#ifdef HAVE_OPENGL
+   GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
+ 
+   if (priv->context == NULL)
+@@ -553,6 +562,7 @@ gtk_gl_area_delete_buffers (GtkGLArea *area)
+       glDeleteFramebuffersEXT (1, &priv->frame_buffer);
+       priv->frame_buffer = 0;
+     }
++#endif
+ }
+ 
+ static void
+@@ -663,6 +673,7 @@ gtk_gl_area_draw (GtkWidget *widget,
+   GtkGLArea *area = GTK_GL_AREA (widget);
+   GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
+   gboolean unused;
++#ifdef HAVE_OPENGL
+   int w, h, scale;
+   GLenum status;
+ 
+@@ -674,7 +685,6 @@ gtk_gl_area_draw (GtkWidget *widget,
+                                      gtk_widget_get_allocated_height (widget));
+       return FALSE;
+     }
+-
+   if (priv->context == NULL)
+     return FALSE;
+ 
+@@ -720,6 +730,14 @@ gtk_gl_area_draw (GtkWidget *widget,
+     }
+ 
+   return TRUE;
++#else
++  if (priv->error != NULL)
++      gtk_gl_area_draw_error_screen (area,
++                                     cr,
++                                     gtk_widget_get_allocated_width (widget),
++                                     gtk_widget_get_allocated_height (widget));
++  return FALSE;
++#endif
+ }
+ 
+ static gboolean
+diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c
+index 4eab3a7..c4e900e 100644
+--- a/gtk/inspector/general.c
++++ b/gtk/inspector/general.c
+@@ -33,8 +33,10 @@
+ 
+ #ifdef GDK_WINDOWING_X11
+ #include "x11/gdkx.h"
++#ifdef HAVE_OPENGL
+ #include <epoxy/glx.h>
+ #endif
++#endif
+ 
+ #ifdef GDK_WINDOWING_WIN32
+ #include "win32/gdkwin32.h"
+@@ -147,6 +149,7 @@ append_extension_row (GtkInspectorGeneral *gen,
+   gtk_size_group_add_widget (GTK_SIZE_GROUP (gen->priv->labels), label);
+ }
+ 
++#ifdef HAVE_OPENGL
+ #ifdef GDK_WINDOWING_X11
+ static void
+ append_glx_extension_row (GtkInspectorGeneral *gen,
+@@ -156,6 +159,7 @@ append_glx_extension_row (GtkInspectorGeneral *gen,
+   append_extension_row (gen, ext, epoxy_has_glx_extension (dpy, 0, ext));
+ }
+ #endif
++#endif
+ 
+ #ifdef GDK_WINDOWING_WAYLAND
+ static void
+@@ -171,6 +175,7 @@ append_egl_extension_row (GtkInspectorGeneral *gen,
+ static void
+ init_gl (GtkInspectorGeneral *gen)
+ {
++#ifdef HAVE_OPENGL
+ #ifdef GDK_WINDOWING_X11
+   if (GDK_IS_X11_DISPLAY (gdk_display_get_default ()))
+     {
+@@ -197,6 +202,7 @@ init_gl (GtkInspectorGeneral *gen)
+     }
+   else
+ #endif
++#endif
+ #ifdef GDK_WINDOWING_WAYLAND
+   if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ()))
+     {
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 681807d..2941a36 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -80,8 +80,6 @@ noinst_PROGRAMS =  $(TEST_PROGS)	\
+ 	testfullscreen			\
+ 	testgeometry			\
+ 	testgiconpixbuf			\
+-	testglarea			\
+-	testglblending			\
+ 	testgrid			\
+ 	testgtk				\
+ 	testheaderbar			\
+@@ -169,11 +167,17 @@ noinst_PROGRAMS =  $(TEST_PROGS)	\
+ 	testactionbar			\
+ 	testwindowsize			\
+ 	testpopover			\
+-	gdkgears			\
+ 	listmodel			\
+ 	testpopup			\
+ 	$(NULL)
+ 
++if HAVE_OPENGL
++noinst_PROGRAMS +=
++	testglarea                      \
++	testglblending                  \
++	gdkgears
++endif
++
+ if USE_X11
+ noinst_PROGRAMS += testerrors
+ endif
+diff --git a/testsuite/gtk/objects-finalize.c b/testsuite/gtk/objects-finalize.c
+index e0ebee0..703643c 100644
+--- a/testsuite/gtk/objects-finalize.c
++++ b/testsuite/gtk/objects-finalize.c
+@@ -115,8 +115,10 @@ main (int argc, char **argv)
+ 	  all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_CORE &&
+ 	  all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_XI2 &&
+ 	  all_types[i] != GDK_TYPE_X11_DISPLAY_MANAGER &&
++#ifdef HAVE_OPENGL
+ 	  all_types[i] != GDK_TYPE_X11_GL_CONTEXT &&
+ #endif
++#endif
+ 	  /* Not allowed to finalize a GdkPixbufLoader without calling gdk_pixbuf_loader_close() */
+ 	  all_types[i] != GDK_TYPE_PIXBUF_LOADER &&
+ 	  all_types[i] != gdk_pixbuf_simple_anim_iter_get_type())
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0004-configure.ac-Fix-wayland-protocols-path.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0004-configure.ac-Fix-wayland-protocols-path.patch
new file mode 100644
index 0000000..634b3a4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/0004-configure.ac-Fix-wayland-protocols-path.patch
@@ -0,0 +1,36 @@
+From 97b78e566634579bbae51be914aeaaa921137a8b Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Thu, 9 Jun 2016 11:21:36 +0300
+Subject: [PATCH 4/4] configure.ac: Fix wayland-protocols path
+
+The wayland-protocols directory is used during build: Fix the path
+to point to sysroot specified in recipe.
+
+Normally PKG_CONFIG_SYSROOT_DIR could be used in configure.ac but that
+breaks multilib gtk+ as it would point to multilib sysroot when the
+(allarch) wayland-protocols is actually in the machine sysroot.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index a3e9beb..dde9dc5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -461,7 +461,7 @@ fi
+ if test "$enable_wayland_backend" = "yes"; then
+   # For the cairo image backend
+   cairo_backends="$cairo_backends cairo"
+-  AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
++  AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, ${WAYLAND_PROTOCOLS_SYSROOT_DIR}`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
+   GDK_BACKENDS="$GDK_BACKENDS wayland"
+   GDK_WINDOWING="$GDK_WINDOWING
+ #define GDK_WINDOWING_WAYLAND"
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch
deleted file mode 100644
index c8c480c..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/Do-not-try-to-initialize-GL-without-libGL.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From fc22058a10db913534f11348f86681fe9e1838e5 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Fri, 16 Oct 2015 16:35:16 +0300
-Subject: [PATCH] Do not try to initialize GL without libGL
-
-_gdk_x11_screen_update_visuals_for_gl() will end up calling epoxys
-GLX api which will exit() if libGL.so.1 is not present. We do not
-want that to happen and we don't want every app to have to set
-"GDK_GL=disabled" environment variable: so use #ifdef set based on
-opengl distro feature.
-
-Upstream is not interested in the fix as it is: Either epoxy should be
-fixed (to not exit) or GTK+ possibly could do some additional probing
-before calling epoxy APIs.
-
-Upstream-Status: Denied
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- configure.ac            | 7 +++++++
- gdk/x11/gdkvisual-x11.c | 5 +++++
- 2 files changed, 12 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 729a62e..58cc1ac 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -328,6 +328,13 @@ AC_ARG_ENABLE(mir-backend,
-                               [enable the Mir gdk backend])],
- 			      [backend_set=yes])
- 
-+AC_ARG_ENABLE(glx,
-+              [AS_HELP_STRING([--enable-glx],
-+                              [When enabled Gdk will try to initialize GLX])])
-+AS_IF([test "x$enable_glx" != "xno"], [
-+  AC_DEFINE([HAVE_GLX], [], [GLX will be available at runtime])
-+])
-+
- if test -z "$backend_set"; then
-   if test "$platform_win32" = yes; then
-     enable_win32_backend=yes
-diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c
-index f3b062d..c8243f4 100644
---- a/gdk/x11/gdkvisual-x11.c
-+++ b/gdk/x11/gdkvisual-x11.c
-@@ -345,7 +345,12 @@ _gdk_x11_screen_init_visuals (GdkScreen *screen)
-   /* If GL is available we want to pick better default/rgba visuals,
-      as we care about glx details such as alpha/depth/stencil depth,
-      stereo and double buffering */
-+  /* update_visuals_for_gl() will end up calling epoxy GLX api which
-+     will exit if libgl is not there: so only do this if we know GL
-+     is available */
-+#ifdef HAVE_GLX
-   _gdk_x11_screen_update_visuals_for_gl (screen);
-+#endif
- }
- 
- gint
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/Dont-force-csd.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/Dont-force-csd.patch
deleted file mode 100644
index 32d8a84..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/Dont-force-csd.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-window: Check if we can use CSD before enabling them
-
-Upstream-Status: Backport
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
-
-From c5e5ee67490e7e7af56052d8f8beb75db002c2f1 Mon Sep 17 00:00:00 2001
-From: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed, 3 Jun 2015 14:07:29 +0100
-Subject: window: Check if we can use CSD before enabling them
-
-The change in 03213b9509fc1df16c66194ea168aed6c15110e9 changed the rules
-as to when CSD can be enabled, but it also unconditionally enables CSD
-with the implicit assumption that client-side shadows were the real
-issue, and that we could work around that by drawing our own borders.
-This also means that setting a titlebar for a GtkWindow will enable CSD
-unconditionally.
-
-In reality, some window managers (like Matchbox) *only* support
-server-side decorations, and will ignore all hints to the contrary, to
-the point of drawing decorations at random locations on top of the
-window.
-
-Since CSD are enabled unconditionally, the GTK_CSD environment variable
-is also not a suitable escape hatch.
-
-In the grand tradition of asking ourselves if we should do something
-just because we can, we should split the environment checks from the
-checks on what the user requested; by doing that, we can also check
-when enabling client-side decorations, and ideally bail out if needed.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=750343
-
-diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
-index 423c6bd..9fe882f 100644
---- a/gtk/gtkwindow.c
-+++ b/gtk/gtkwindow.c
-@@ -4056,6 +4056,32 @@ gtk_window_supports_client_shadow (GtkWindow *window)
-   return TRUE;
- }
- 
-+static gboolean
-+gtk_window_can_use_csd (GtkWindow *window)
-+{
-+  const gchar *csd_env;
-+
-+#ifdef GDK_WINDOWING_BROADWAY
-+  if (GDK_IS_BROADWAY_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
-+    return TRUE;
-+#endif
-+
-+#ifdef GDK_WINDOWING_WAYLAND
-+  if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
-+    return TRUE;
-+#endif
-+
-+#ifdef GDK_WINDOWING_MIR
-+  if (GDK_IS_MIR_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
-+    return TRUE;
-+#endif
-+
-+  csd_env = g_getenv ("GTK_CSD");
-+
-+  /* If GTK_CSD is unset we default to CSD support */
-+  return csd_env == NULL || (strcmp (csd_env, "1") == 0);
-+}
-+
- static void
- gtk_window_enable_csd (GtkWindow *window)
- {
-@@ -4063,6 +4089,10 @@ gtk_window_enable_csd (GtkWindow *window)
-   GtkWidget *widget = GTK_WIDGET (window);
-   GdkVisual *visual;
- 
-+  /* If the environment does not support CSD, then there's no point in enabling them */
-+  if (!gtk_window_can_use_csd (window))
-+    return;
-+
-   /* We need a visual with alpha for client shadows */
-   if (priv->use_client_shadow)
-     {
-@@ -5839,7 +5869,6 @@ static gboolean
- gtk_window_should_use_csd (GtkWindow *window)
- {
-   GtkWindowPrivate *priv = window->priv;
--  const gchar *csd_env;
- 
-   if (priv->csd_requested)
-     return TRUE;
-@@ -5850,24 +5879,7 @@ gtk_window_should_use_csd (GtkWindow *window)
-   if (priv->type == GTK_WINDOW_POPUP)
-     return FALSE;
- 
--#ifdef GDK_WINDOWING_BROADWAY
--  if (GDK_IS_BROADWAY_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
--    return TRUE;
--#endif
--
--#ifdef GDK_WINDOWING_WAYLAND
--  if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
--    return TRUE;
--#endif
--
--#ifdef GDK_WINDOWING_MIR
--  if (GDK_IS_MIR_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
--    return TRUE;
--#endif
--
--  csd_env = g_getenv ("GTK_CSD");
--
--  return (g_strcmp0 (csd_env, "1") == 0);
-+  return gtk_window_can_use_csd (window);
- }
- 
- static void
--- 
-cgit v0.10.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/hardcoded_libtool.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/hardcoded_libtool.patch
deleted file mode 100644
index 3b4beeb..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3/hardcoded_libtool.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-
-Index: gtk+-3.8.2/configure.ac
-===================================================================
---- gtk+-3.8.2.orig/configure.ac
-+++ gtk+-3.8.2/configure.ac
-@@ -531,7 +531,7 @@ AC_MSG_CHECKING([Whether to write depend
- case $enable_explicit_deps in
-   auto)
-     export SED
--    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
-+    deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
-     if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
-       enable_explicit_deps=yes
-     else
-@@ -793,7 +793,7 @@ else
-     dnl Now we check to see if our libtool supports shared lib deps
-     dnl (in a rather ugly way even)
-     if $dynworks; then
--        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
-+        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
-         module_deplibs_check=`$module_libtool_config | \
-             grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
-             sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
-@@ -1528,7 +1528,7 @@ fi
- # We are using gmodule-no-export now, but I'm leaving the stripping
- # code in place for now, since pango and atk still require gmodule.
- export SED
--export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-+export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
- if test -n "$export_dynamic"; then
-   GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"`
-   GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3_3.18.8.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3_3.18.8.bb
deleted file mode 100644
index b76c0cc..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3_3.18.8.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require gtk+3.inc
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
-           file://hardcoded_libtool.patch \
-           file://Dont-force-csd.patch \
-           file://Do-not-try-to-initialize-GL-without-libGL.patch \
-          "
-
-SRC_URI[md5sum] = "9671acb41dc13561d19233f1a75cf184"
-SRC_URI[sha256sum] = "1c53ef1bb55364698f7183ecd185b547f92f4a3a7abfafd531400232e2e052f8"
-
-S = "${WORKDIR}/gtk+-${PV}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
-                    file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
-                    file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
-                    file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3_3.20.9.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3_3.20.9.bb
new file mode 100644
index 0000000..38e095a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+3_3.20.9.bb
@@ -0,0 +1,20 @@
+require gtk+3.inc
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
+           file://0001-Hardcoded-libtool.patch \
+           file://0002-Do-not-try-to-initialize-GL-without-libGL.patch \
+           file://0003-Add-disable-opengl-configure-option.patch \
+           file://0004-configure.ac-Fix-wayland-protocols-path.patch \
+           file://0001-Redo-focus-handling-in-treeview-once-more.patch \
+          "
+SRC_URI[md5sum] = "cc76cac5e18c772c6784bf19a3dff08b"
+SRC_URI[sha256sum] = "83a609ba2f3424b5509e73967c49c67833af466d6f91081b24ee5c64fce6ac17"
+
+S = "${WORKDIR}/gtk+-${PV}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+                    file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
+                    file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
+                    file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+_2.24.29.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+_2.24.29.bb
deleted file mode 100644
index cf55d20..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+_2.24.29.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-require gtk+.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
-                    file://gtk/gtk.h;endline=27;md5=c59e0b4490dd135a5726ebf851f9b17f \
-                    file://gdk/gdk.h;endline=27;md5=07db285ec208fb3e0bf7d861b0614202 \
-                    file://tests/testgtk.c;endline=27;md5=262db5db5f776f9863e56df31423e24c"
-SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-${PV}.tar.xz \
-           file://xsettings.patch \
-           file://hardcoded_libtool.patch \
-           file://toggle-font.diff;striplevel=0 \
-           file://doc-fixes.patch \
-           file://strict-prototypes.patch \
-	  "
-
-SRC_URI[md5sum] = "1b7a3689f65617387b5b54520f4439e8"
-SRC_URI[sha256sum] = "0741c59600d3d810a223866453dc2bbb18ce4723828681ba24aa6519c37631b8"
-
-EXTRA_OECONF = "--enable-xkb --disable-glibtest --disable-cups --disable-xinerama"
-
-LIBV = "2.10.0"
-
-PACKAGES_DYNAMIC += "^gtk-immodule-.* ^gtk-printbackend-.*"
-
-python populate_packages_prepend () {
-    gtk_libdir = d.expand('${libdir}/gtk-2.0/${LIBV}')
-    immodules_root = os.path.join(gtk_libdir, 'immodules')
-    printmodules_root = os.path.join(gtk_libdir, 'printbackends');
-
-    d.setVar('GTKIMMODULES_PACKAGES', ' '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s')))
-    do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
-
-    if (d.getVar('DEBIAN_NAMES', True)):
-        d.setVar(d.expand('PKG_${PN}'), '${MLPREFIX}libgtk-2.0')
-}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+_2.24.30.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+_2.24.30.bb
new file mode 100644
index 0000000..4fe990d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk+_2.24.30.bb
@@ -0,0 +1,34 @@
+require gtk+.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://gtk/gtk.h;endline=27;md5=c59e0b4490dd135a5726ebf851f9b17f \
+                    file://gdk/gdk.h;endline=27;md5=07db285ec208fb3e0bf7d861b0614202 \
+                    file://tests/testgtk.c;endline=27;md5=262db5db5f776f9863e56df31423e24c"
+SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-${PV}.tar.xz \
+           file://xsettings.patch \
+           file://hardcoded_libtool.patch \
+           file://toggle-font.diff;striplevel=0 \
+           file://doc-fixes.patch \
+           file://strict-prototypes.patch \
+	  "
+
+SRC_URI[md5sum] = "04568ba5c58b75e3c7543e45628ad789"
+SRC_URI[sha256sum] = "0d15cec3b6d55c60eac205b1f3ba81a1ed4eadd9d0f8e7c508bc7065d0c4ca50"
+
+EXTRA_OECONF = "--enable-xkb --disable-glibtest --disable-cups --disable-xinerama"
+
+LIBV = "2.10.0"
+
+PACKAGES_DYNAMIC += "^gtk-immodule-.* ^gtk-printbackend-.*"
+
+python populate_packages_prepend () {
+    gtk_libdir = d.expand('${libdir}/gtk-2.0/${LIBV}')
+    immodules_root = os.path.join(gtk_libdir, 'immodules')
+    printmodules_root = os.path.join(gtk_libdir, 'printbackends');
+
+    d.setVar('GTKIMMODULES_PACKAGES', ' '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s')))
+    do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
+
+    if (d.getVar('DEBIAN_NAMES', True)):
+        d.setVar(d.expand('PKG_${PN}'), '${MLPREFIX}libgtk-2.0')
+}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.18.8.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.18.8.bb
deleted file mode 100644
index 793f14a..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.18.8.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-SUMMARY = "Native icon utils for GTK+"
-DESCRIPTION = "gtk-update-icon-cache and gtk-encode-symbolic-svg built from GTK+ natively, for build time and on-host postinst script execution."
-SECTION = "libs"
-
-DEPENDS = "glib-2.0-native gdk-pixbuf-native librsvg-native"
-
-LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
-          file://Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch"
-SRC_URI[md5sum] = "9671acb41dc13561d19233f1a75cf184"
-SRC_URI[sha256sum] = "1c53ef1bb55364698f7183ecd185b547f92f4a3a7abfafd531400232e2e052f8"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
-                    file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
-                    file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
-                    file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
-
-S = "${WORKDIR}/gtk+-${PV}"
-
-inherit pkgconfig native upstream-version-is-even
-
-PKG_CONFIG_FOR_BUILD = "${STAGING_BINDIR_NATIVE}/pkg-config-native"
-
-do_configure() {
-	# Quite ugly but defines enough to compile the tools.
-	if ! test -f gtk/config.h; then
-		echo "#define GETTEXT_PACKAGE \"gtk30\"" >> gtk/config.h
-		echo "#define HAVE_UNISTD_H 1" >> gtk/config.h
-		echo "#define HAVE_FTW_H 1" >> gtk/config.h
-	fi
-	if ! test -f gdk/config.h; then
-		touch gdk/config.h
-	fi
-}
-
-do_compile() {
-	${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
-		${S}/gtk/updateiconcache.c \
-		$(${PKG_CONFIG_FOR_BUILD} --cflags --libs gdk-pixbuf-2.0) \
-		-o gtk-update-icon-cache
-
-	${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
-		${S}/gtk/encodesymbolic.c \
-		$(${PKG_CONFIG_FOR_BUILD} --cflags --libs gio-2.0 gdk-pixbuf-2.0) \
-		-o gtk-encode-symbolic-svg
-}
-
-do_install() {
-	install -d ${D}${bindir}
-	install -m 0755 ${B}/gtk-update-icon-cache ${D}${bindir}
-	install -m 0755 ${B}/gtk-encode-symbolic-svg ${D}${bindir}
-
-	create_wrapper ${D}/${bindir}/gtk-update-icon-cache \
-		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
-	create_wrapper ${D}/${bindir}/gtk-encode-symbolic-svg \
-		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
-}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.20.9.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.20.9.bb
new file mode 100644
index 0000000..71c1d62
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.20.9.bb
@@ -0,0 +1,60 @@
+SUMMARY = "Native icon utils for GTK+"
+DESCRIPTION = "gtk-update-icon-cache and gtk-encode-symbolic-svg built from GTK+ natively, for build time and on-host postinst script execution."
+SECTION = "libs"
+
+DEPENDS = "glib-2.0-native gdk-pixbuf-native librsvg-native"
+
+LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
+          file://Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch"
+SRC_URI[md5sum] = "cc76cac5e18c772c6784bf19a3dff08b"
+SRC_URI[sha256sum] = "83a609ba2f3424b5509e73967c49c67833af466d6f91081b24ee5c64fce6ac17"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+                    file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
+                    file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
+                    file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
+
+S = "${WORKDIR}/gtk+-${PV}"
+
+inherit pkgconfig native upstream-version-is-even
+
+PKG_CONFIG_FOR_BUILD = "${STAGING_BINDIR_NATIVE}/pkg-config-native"
+
+do_configure() {
+	# Quite ugly but defines enough to compile the tools.
+	if ! test -f gtk/config.h; then
+		echo "#define GETTEXT_PACKAGE \"gtk30\"" >> gtk/config.h
+		echo "#define HAVE_UNISTD_H 1" >> gtk/config.h
+		echo "#define HAVE_FTW_H 1" >> gtk/config.h
+	fi
+	if ! test -f gdk/config.h; then
+		touch gdk/config.h
+	fi
+}
+
+do_compile() {
+	${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
+		${S}/gtk/updateiconcache.c \
+		$(${PKG_CONFIG_FOR_BUILD} --cflags --libs gdk-pixbuf-2.0) \
+		-o gtk-update-icon-cache
+
+	${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
+		${S}/gtk/encodesymbolic.c \
+		$(${PKG_CONFIG_FOR_BUILD} --cflags --libs gio-2.0 gdk-pixbuf-2.0) \
+		-o gtk-encode-symbolic-svg
+}
+
+do_install() {
+	install -d ${D}${bindir}
+	install -m 0755 ${B}/gtk-update-icon-cache ${D}${bindir}
+	install -m 0755 ${B}/gtk-encode-symbolic-svg ${D}${bindir}
+
+	create_wrapper ${D}/${bindir}/gtk-update-icon-cache \
+		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
+	create_wrapper ${D}/${bindir}/gtk-encode-symbolic-svg \
+		GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
+}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc-stub/files/0001-Revert-Import-introspection-stub-machinery-too.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc-stub/files/0001-Revert-Import-introspection-stub-machinery-too.patch
deleted file mode 100644
index 80b0521..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc-stub/files/0001-Revert-Import-introspection-stub-machinery-too.patch
+++ /dev/null
@@ -1,305 +0,0 @@
-From d636be29bf95396b4e27fcd17ff84cb7091cca91 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 8 Oct 2015 15:37:40 +0300
-Subject: [PATCH] Revert "Import introspection stub machinery too"
-
-This reverts commit 3dfd0a09de696ec8c544762747f8a0f77153622e.
-As we provide the full introspection support, we need to remove
-the stubs from this package that conflict with it.
-
-Upstream-Status: Pending [review on oe-core list]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Makefile               |   4 --
- Makefile.introspection | 163 -------------------------------------------------
- introspection.m4       |  96 -----------------------------
- 3 files changed, 263 deletions(-)
- delete mode 100644 Makefile.introspection
- delete mode 100644 introspection.m4
-
-diff --git a/Makefile b/Makefile
-index 7cb6ce5..ad4231a 100644
---- a/Makefile
-+++ b/Makefile
-@@ -23,7 +23,3 @@ install: $(bin_programs)
- 
- 	mkdir -p $(DESTDIR)$(datarootdir)/aclocal/
- 	install -m 0644 $(srcdir)/gtk-doc.m4 $(DESTDIR)$(datarootdir)/aclocal/gtk-doc.m4
--
--	mkdir -p $(DESTDIR)$(datarootdir)/gobject-introspection-1.0
--	install -m 0644 $(srcdir)/Makefile.introspection $(DESTDIR)$(datarootdir)/gobject-introspection-1.0/Makefile.introspection
--	install -m 0644 $(srcdir)/introspection.m4 $(DESTDIR)$(datarootdir)/aclocal/introspection.m4
-diff --git a/Makefile.introspection b/Makefile.introspection
-deleted file mode 100644
-index 755dd15..0000000
---- a/Makefile.introspection
-+++ /dev/null
-@@ -1,163 +0,0 @@
--# -*- Mode: make -*-
--# Copyright 2009-2010 Johan Dahlin
--#
--# This file is free software; the author(s) gives unlimited
--# permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--#
--# * Input variables:
--#
--#   INTROSPECTION_GIRS - List of GIRS that should be generated
--#   INTROSPECTION_SCANNER - Command to invoke scanner, normally set by
--#      GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
--#   INTROSPECTION_SCANNER_ARGS - Additional args to pass in to the scanner
--#   INTROSPECTION_SCANNER_ENV - Environment variables to set before running
--#      the scanner
--#   INTROSPECTION_COMPILER - Command to invoke compiler, normally set by
--#      GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
--#   INTROSPECTION_COMPILER_ARGS - Additional args to pass in to the compiler
--#
--# * Simple tutorial
--#
--# Add this to configure.ac:
--#   -Wno-portability to AM_INIT_AUTOMAKE
--#   GOBJECT_INTROSPECTION_CHECK([0.6.7])
--#
--# Add this to Makefile.am where your library/program is built:
--#   include $(INTROSPECTION_MAKEFILE)
--#   INTROSPECTION_GIRS = YourLib-1.0.gir
--#   YourLib_1_0_gir_NAMESPACE = YourLib
--#   YourLib_1_0_gir_VERSION = 1.0
--#   YourLib_1_0_gir_LIBS = libyourlib.la
--#   YourLib_1_0_gir_FILES = $(libyourlib_1_0_SOURCES)
--#   girdir = $(datadir)/gir-1.0
--#   dist_gir_DATA = YourLib-1.0.gir
--#   typelibdir = $(libdir)/girepository-1.0
--#   typelib_DATA = YourLib-1.0.typelib
--#   CLEANFILES = $(dist_gir_DATA) $(typelib_DATA)
--#
--
--# Make sure the required variables are set, these should under normal
--# circumstances come from introspection.m4
--$(if $(INTROSPECTION_SCANNER),,$(error Need to define INTROSPECTION_SCANNER))
--$(if $(INTROSPECTION_COMPILER),,$(error Need to define INTROSPECTION_COMPILER))
--
--# Private functions
--
--## Transform the gir filename to something which can reference through a variable
--## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir
--_gir_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1))))
--
--# Namespace and Version is either fetched from the gir filename
--# or the _NAMESPACE/_VERSION variable combo
--_gir_namespace = $(or $($(_gir_name)_NAMESPACE),$(firstword $(subst -, ,$(notdir $(1)))))
--_gir_version = $(or $($(_gir_name)_VERSION),$(lastword $(subst -, ,$(1:.gir=))))
--
--# _PROGRAM is an optional variable which needs it's own --program argument
--_gir_program = $(if $($(_gir_name)_PROGRAM),--program=$($(_gir_name)_PROGRAM))
--
--# Variables which provides a list of things
--_gir_libraries = $(foreach lib,$($(_gir_name)_LIBS),--library=$(lib))
--_gir_packages = $(foreach pkg,$($(_gir_name)_PACKAGES),--pkg=$(pkg))
--_gir_includes = $(foreach include,$($(_gir_name)_INCLUDES),--include=$(include))
--_gir_export_packages = $(foreach pkg,$($(_gir_name)_EXPORT_PACKAGES),--pkg-export=$(pkg))
--
--# Reuse the LIBTOOL variable from automake if it's set, but
--# work around MSYS weirdness: When running g-ir-scanner, MSYS changes
--# a command-line argument --libtool="/bin/sh ../../libtool" into
--# --libtool=c:/opt/msys/1.0/bin/libtool. So just use sh.exe without path
--# because we already "know" where the libtool configure produced is.
--_gir_libtool = $(if $(findstring MINGW32,$(shell uname -s)),--libtool="$(top_builddir)/libtool",$(if $(LIBTOOL),--libtool="$(LIBTOOL)"))
--
--# Macros for AM_SILENT_RULES prettiness
--_gir_verbosity = $(if $(AM_DEFAULT_VERBOSITY),$(AM_DEFAULT_VERBOSITY),1)
--
--_gir_silent_scanner_prefix = $(_gir_silent_scanner_prefix_$(V))
--_gir_silent_scanner_prefix_ = $(_gir_silent_scanner_prefix_$(_gir_verbosity))
--_gir_silent_scanner_prefix_0 = @echo "  GISCAN $(1)";
--_gir_silent_scanner_opts = $(_gir_silent_scanner_opts_$(V))
--_gir_silent_scanner_opts_ = $(_gir_silent_scanner_opts_$(_gir_verbosity))
--_gir_silent_scanner_opts_0 = --quiet
--
--_gir_silent_compiler = $(_gir_silent_compiler_$(V))
--_gir_silent_compiler_ = $(_gir_silent_compiler_$(_gir_verbosity))
--_gir_silent_compiler_0 = @echo "  GICOMP $(1)";
--
--#
--# Creates a GIR by scanning C headers/sources
--# $(1) - Name of the gir file (output)
--#
--# If output is Gtk-2.0.gir then you should name the variables like
--# Gtk_2_0_gir_NAMESPACE, Gtk_2_0_gir_VERSION etc.
--# Required variables:
--# FILES - C sources and headers which should be scanned
--#
--# One of these variables are required:
--# LIBS - Library where the symbol represented in the gir can be found
--# PROGRAM - Program where the symbol represented in the gir can be found
--#
--# Optional variables
--# NAMESPACE - Namespace of the gir, first letter capital,
--#   rest should be lower case, for instance: 'Gtk', 'Clutter', 'ClutterGtk'.
--#   If not present the namespace will be fetched from the gir filename,
--#   the part before the first dash. For 'Gtk-2.0', namespace will be 'Gtk'.
--# VERSION - Version of the gir, if not present, will be fetched from gir
--# filename, the part after the first dash. For 'Gtk-2.0', version will be '2.0'.
--# LIBTOOL - Command to invoke libtool, usually set by automake
--# SCANNERFLAGS - Flags to pass in to the scanner, see g-ir-scanner(1) for a list
--# CFLAGS - Flags to pass in to the parser when scanning headers
--# LDFLAGS - Linker flags used by the scanner
--# PACKAGES - list of pkg-config names which cflags are required to parse
--#   the headers of this gir
--# INCLUDES - Gir files to include without the .gir suffix, for instance
--#   GLib-2.0, Gtk-2.0. This is needed for all libraries which you depend on that
--#   provides introspection information.
--# EXPORT_PACKAGES - list of pkg-config names that are provided by this gir.
--#   By default the names in the PACKAGES variable will be used.
--#
--
--define introspection-scanner
--
--# Basic sanity check, to make sure required variables are set
--$(if $($(_gir_name)_FILES),,$(error Need to define $(_gir_name)_FILES))
--$(if $(or $(findstring --header-only,$($(_gir_name)_SCANNERFLAGS)),
--          $($(_gir_name)_LIBS),
--          $($(_gir_name)_PROGRAM)),,
--    $(error Need to define $(_gir_name)_LIBS or $(_gir_name)_PROGRAM))
--
--# Only dependencies we know are actually filenames goes into _FILES, make
--# sure these are built before running the scanner. Libraries and programs
--# needs to be added manually.
--$(1): $$($(_gir_name)_FILES)
--	@ $(MKDIR_P) $(dir $(1))
--	$(_gir_silent_scanner_prefix) $(INTROSPECTION_SCANNER_ENV) $(INTROSPECTION_SCANNER) $(_gir_silent_scanner_opts) \
--	$(INTROSPECTION_SCANNER_ARGS) \
--	  --namespace=$(_gir_namespace) \
--	  --nsversion=$(_gir_version) \
--	  $(_gir_libtool) \
--	  $(_gir_packages) \
--	  $(_gir_includes) \
--	  $(_gir_export_packages) \
--	  $(_gir_program) \
--	  $(_gir_libraries) \
--	  $($(_gir_name)_SCANNERFLAGS) \
--	  $($(_gir_name)_CFLAGS) \
--	  $($(_gir_name)_LDFLAGS) \
--	  $$^ \
--	  --output $(1)
--endef
--
--$(foreach gir,$(INTROSPECTION_GIRS),$(eval $(call introspection-scanner,$(gir))))
--
--#
--# Compiles a gir into a typelib
--# $(1): gir filename (input)
--# $(2): typelib filename (output)
--#
--define introspection-compiler
--$(_gir_silent_compiler) $(INTROSPECTION_COMPILER) $(INTROSPECTION_COMPILER_ARGS) --includedir=. $(1) -o $(2)
--endef
--
--# Simple rule to compile a typelib.
--%.typelib: %.gir
--	$(call introspection-compiler,$<,$@)
-diff --git a/introspection.m4 b/introspection.m4
-deleted file mode 100644
-index d89c3d9..0000000
---- a/introspection.m4
-+++ /dev/null
-@@ -1,96 +0,0 @@
--dnl -*- mode: autoconf -*-
--dnl Copyright 2009 Johan Dahlin
--dnl
--dnl This file is free software; the author(s) gives unlimited
--dnl permission to copy and/or distribute it, with or without
--dnl modifications, as long as this notice is preserved.
--dnl
--
--# serial 1
--
--m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
--[
--    AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
--    AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
--    AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
--
--    dnl enable/disable introspection
--    m4_if([$2], [require],
--    [dnl
--        enable_introspection=yes
--    ],[dnl
--        AC_ARG_ENABLE(introspection,
--                  AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
--                                 [Enable introspection for this build]),, 
--                                 [enable_introspection=auto])
--    ])dnl
--
--    AC_MSG_CHECKING([for gobject-introspection])
--
--    dnl presence/version checking
--    AS_CASE([$enable_introspection],
--    [no], [dnl
--        found_introspection="no (disabled, use --enable-introspection to enable)"
--    ],dnl
--    [yes],[dnl
--        PKG_CHECK_EXISTS([gobject-introspection-1.0],,
--                         AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
--        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
--                         found_introspection=yes,
--                         AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
--    ],dnl
--    [auto],[dnl
--        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
--	dnl Canonicalize enable_introspection
--	enable_introspection=$found_introspection
--    ],dnl
--    [dnl	
--        AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
--    ])dnl
--
--    AC_MSG_RESULT([$found_introspection])
--
--    INTROSPECTION_SCANNER=
--    INTROSPECTION_COMPILER=
--    INTROSPECTION_GENERATE=
--    INTROSPECTION_GIRDIR=
--    INTROSPECTION_TYPELIBDIR=
--    if test "x$found_introspection" = "xyes"; then
--       INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
--       INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
--       INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
--       INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
--       INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
--       INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
--       INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
--       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
--    fi
--    AC_SUBST(INTROSPECTION_SCANNER)
--    AC_SUBST(INTROSPECTION_COMPILER)
--    AC_SUBST(INTROSPECTION_GENERATE)
--    AC_SUBST(INTROSPECTION_GIRDIR)
--    AC_SUBST(INTROSPECTION_TYPELIBDIR)
--    AC_SUBST(INTROSPECTION_CFLAGS)
--    AC_SUBST(INTROSPECTION_LIBS)
--    AC_SUBST(INTROSPECTION_MAKEFILE)
--
--    AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
--])
--
--
--dnl Usage:
--dnl   GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
--
--AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
--[
--  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
--])
--
--dnl Usage:
--dnl   GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
--
--
--AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
--[
--  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
--])
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc-stub/gtk-doc-stub_git.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc-stub/gtk-doc-stub_git.bb
deleted file mode 100644
index 84e49c1..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc-stub/gtk-doc-stub_git.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Stub implementation of gtk-doc"
-DESCRIPTION = "Stub implementation of gtk-doc, as we don't want to build the API documentation"
-SECTION = "x11/base"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-PROVIDES = "gtk-doc"
-
-SRCREV = "1dea266593edb766d6d898c79451ef193eb17cfa"
-PV = "1.1+git${SRCPV}"
-
-SRC_URI = "git://git.gnome.org/${BPN} \
-	   file://0001-Revert-Import-introspection-stub-machinery-too.patch \
-	  "
-
-S = "${WORKDIR}/git"
-
-do_configure() {
-	./configure --prefix=${prefix} \
-                    --sysconfdir=${sysconfdir} \
-                    --bindir=${bindir} \
-                    --libdir=${libdir} \
-                    --datadir=${datadir} \
-                    --datarootdir=${datadir}
-}
-
-do_install() {
-	oe_runmake install DESTDIR="${D}"
-}
-
-FILES_${PN} += "${datadir}"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-error-out-if-perl-is-not-found-or-its-version.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-error-out-if-perl-is-not-found-or-its-version.patch
new file mode 100644
index 0000000..4a90287
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-error-out-if-perl-is-not-found-or-its-version.patch
@@ -0,0 +1,40 @@
+From e733241fb580f032efbbe684ec35d4c9d27f1595 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 8 Sep 2016 13:38:39 +0300
+Subject: [PATCH] Do not error out if perl is not found or its version is too
+ old.
+
+This allows use to avoid depending on perl-native if we're not going
+to use it (when api-docs are disabled).
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 2a61d6e..29415bd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -36,7 +36,7 @@ dnl Check for Perl.
+ dnl
+ AC_PATH_PROG([PERL], [perl])
+ if test -z "$PERL"; then
+-	AC_MSG_ERROR([perl not found])
++	AC_MSG_WARN([perl not found])
+ fi
+ 
+ AC_MSG_CHECKING([if Perl version >= 5.18.0])
+@@ -44,7 +44,7 @@ if "$PERL" -e "require v5.18.0"; then
+ 	AC_MSG_RESULT([yes])
+ else
+ 	AC_MSG_RESULT([no])
+-	AC_MSG_ERROR([perl >= 5.18.0 is required for gtk-doc])
++	AC_MSG_WARN([perl >= 5.18.0 is required for gtk-doc])
+ fi
+ 
+ dnl
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-error-out-if-xsltproc-is-not-found.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-error-out-if-xsltproc-is-not-found.patch
new file mode 100644
index 0000000..99ae4d4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-error-out-if-xsltproc-is-not-found.patch
@@ -0,0 +1,31 @@
+From 8b7fbbb405959f2868ad6eadd7dd00018758a8a5 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 7 Sep 2016 14:52:04 +0300
+Subject: [PATCH] Do not error out if xsltproc is not found.
+
+This allows us to drop the hard xsltproc dependency, if we're not
+going to actually run the gtkdoc scripts (when api documentation is
+disabled).
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index b0c88d7..2a61d6e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -58,7 +58,7 @@ dnl Check for xsltproc
+ dnl
+ AC_PATH_PROG([XSLTPROC], [xsltproc])
+ if test -z "$XSLTPROC"; then
+-	AC_MSG_ERROR([xsltproc not found])
++	AC_MSG_WARN([xsltproc not found])
+ fi
+ 
+ dnl
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch
new file mode 100644
index 0000000..477fc9a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch
@@ -0,0 +1,139 @@
+From 6fab82b93c7bd301eb42448515b02f7cb3306897 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 31 Aug 2016 16:44:46 +0300
+Subject: [PATCH] Do not hardocode paths to perl/python in scripts.
+
+Doing so when the interpreters are somewhere deep in a sysroot directory
+can reach the shebang line limit, and resulting scripts wouldn't work
+on targets either.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gtkdoc-check.in     | 2 +-
+ gtkdoc-common.pl.in | 2 +-
+ gtkdoc-depscan.in   | 2 +-
+ gtkdoc-fixxref.in   | 2 +-
+ gtkdoc-mkdb.in      | 2 +-
+ gtkdoc-mktmpl.in    | 2 +-
+ gtkdoc-rebase.in    | 2 +-
+ gtkdoc-scan.in      | 2 +-
+ gtkdoc-scangobj.in  | 2 +-
+ tests/tools.sh.in   | 4 ++--
+ 10 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/gtkdoc-check.in b/gtkdoc-check.in
+index 560d69b..b60857f 100755
+--- a/gtkdoc-check.in
++++ b/gtkdoc-check.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/gtkdoc-common.pl.in b/gtkdoc-common.pl.in
+index 4747396..cfadb78 100644
+--- a/gtkdoc-common.pl.in
++++ b/gtkdoc-common.pl.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/gtkdoc-depscan.in b/gtkdoc-depscan.in
+index 83af01b..917e247 100644
+--- a/gtkdoc-depscan.in
++++ b/gtkdoc-depscan.in
+@@ -1,4 +1,4 @@
+-#!@PYTHON@
++#!/usr/bin/env python
+ 
+ import gzip, os.path, re
+ 
+diff --git a/gtkdoc-fixxref.in b/gtkdoc-fixxref.in
+index 3d9e8d0..d55190b 100755
+--- a/gtkdoc-fixxref.in
++++ b/gtkdoc-fixxref.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/gtkdoc-mkdb.in b/gtkdoc-mkdb.in
+index 8dd6d5e..d808750 100755
+--- a/gtkdoc-mkdb.in
++++ b/gtkdoc-mkdb.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/gtkdoc-mktmpl.in b/gtkdoc-mktmpl.in
+index c64dfd3..2f46c18 100755
+--- a/gtkdoc-mktmpl.in
++++ b/gtkdoc-mktmpl.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/gtkdoc-rebase.in b/gtkdoc-rebase.in
+index 375482d..cf05b45 100644
+--- a/gtkdoc-rebase.in
++++ b/gtkdoc-rebase.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/gtkdoc-scan.in b/gtkdoc-scan.in
+index 048e5c9..78c6136 100755
+--- a/gtkdoc-scan.in
++++ b/gtkdoc-scan.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/gtkdoc-scangobj.in b/gtkdoc-scangobj.in
+index fb66b76..67ee8f7 100644
+--- a/gtkdoc-scangobj.in
++++ b/gtkdoc-scangobj.in
+@@ -1,4 +1,4 @@
+-#!@PERL@ -w
++#!/usr/bin/env perl
+ # -*- cperl -*-
+ #
+ # gtk-doc - GTK DocBook documentation generator.
+diff --git a/tests/tools.sh.in b/tests/tools.sh.in
+index a114a42..7073883 100644
+--- a/tests/tools.sh.in
++++ b/tests/tools.sh.in
+@@ -11,7 +11,7 @@ echo "Running suite(s): gtk-doc-$suite";
+ 
+ # test perl scripts
+ for file in gtkdoc-check gtkdoc-fixxref gtkdoc-mkdb gtkdoc-mktmpl gtkdoc-rebase gtkdoc-scan gtkdoc-scangobj ; do
+-  @PERL@ -cwT `which $file`
++  perl -cwT `which $file`
+   if test $? = 1 ; then failed=`expr $failed + 1`; fi
+   tested=`expr $tested + 1`
+ done
+@@ -34,7 +34,7 @@ done
+ 
+ 
+ # test python scripts
+-@PYTHON@ -m py_compile `which gtkdoc-depscan`
++python -m py_compile `which gtkdoc-depscan`
+ if test $? != 0 ; then failed=`expr $failed + 1`; fi
+ tested=`expr $tested + 1`
+ 
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch
new file mode 100644
index 0000000..c768870
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch
@@ -0,0 +1,34 @@
+Use native pkg-config when looking for gtk-doc.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/gtk-doc.m4 b/gtk-doc.m4
+index 3675543..94881ae 100644
+--- a/gtk-doc.m4
++++ b/gtk-doc.m4
+@@ -1,6 +1,6 @@
+ dnl -*- mode: autoconf -*-
+
+-# serial 2
++# serial 2.1
+
+ dnl Usage:
+ dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
+@@ -10,11 +10,16 @@ AC_DEFUN([GTK_DOC_CHECK],
+   AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+   AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+
++  gtkdoc_pkgconfig_save=$PKG_CONFIG
++  PKG_CONFIG=pkg-config-native
++
+   ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"])
+   AC_MSG_CHECKING([for gtk-doc])
+   PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no])
+   AC_MSG_RESULT($have_gtk_doc)
+
++  PKG_CONFIG=$gtkdoc_pkgconfig_save
++
+   if test "$have_gtk_doc" = "no"; then
+       AC_MSG_WARN([
+   You will not be able to create source packages with 'make dist'
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/gtk-doc_1.25.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/gtk-doc_1.25.bb
new file mode 100644
index 0000000..6af996e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/gtk-doc/gtk-doc_1.25.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Documentation generator for glib-based software"
+DESCRIPTION = "Gtk-doc is a set of scripts that extract specially formatted comments \
+               from glib-based software and produce a set of html documentation files from them"
+HOMEPAGE = "http://www.gtk.org/gtk-doc/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit gnomebase
+
+# Configure the scripts correctly (and build their dependencies) only if they are actually
+# going to be used; otheriwse we need only the m4/makefile includes from the gtk-doc tarball.
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "api-documentation", "working-scripts", "", d)}"
+
+# This will cause target gtk-doc to hardcode paths of native dependencies
+# into its scripts. This means that target gtk-doc package is broken;
+# hopefully no one minds because its scripts are not used for anything during build
+# and shouldn't be used on targets.
+PACKAGECONFIG[working-scripts] = "--with-highlight=source-highlight,--with-highlight=no,libxslt-native xmlto-native source-highlight-native perl-native"
+
+# We cannot use host perl, because it may be too old for gtk-doc
+EXTRANATIVEPATH += "perl-native"
+
+SRC_URI += "file://0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch \
+            file://0001-Do-not-error-out-if-xsltproc-is-not-found.patch \
+            file://0001-Do-not-error-out-if-perl-is-not-found-or-its-version.patch \
+           "
+SRC_URI_append_class-native = " file://pkg-config-native.patch"
+
+SRC_URI[archive.md5sum] = "0dc6570953112a464a409fb99258ccbc"
+SRC_URI[archive.sha256sum] = "1ea46ed400e6501f975acaafea31479cea8f32f911dca4dff036f59e6464fd42"
+
+BBCLASSEXTEND = "native"
+
+# Do not check for XML catalogs when building because that
+# information is not used for anything during build. Recipe
+# dependencies make sure we have all the right bits.
+do_configure_prepend() {
+        sed -i -e 's,^JH_CHECK_XML_CATALOG.*,,' ${S}/configure.ac
+}
+
+FILES_${PN} += "${datadir}/sgml"
+FILES_${PN}-dev += "${libdir}/cmake"
+FILES_${PN}-doc = ""
+
+SYSROOT_PREPROCESS_FUNCS_append_class-native = " gtkdoc_makefiles_sysroot_preprocess"
+gtkdoc_makefiles_sysroot_preprocess() {
+        # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries
+        # instead of libtool wrapper or running them directly
+        sed -i \
+           -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \
+           ${SYSROOT_DESTDIR}${datadir}/gtk-doc/data/gtk-doc*make
+}
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines-2.20.2/glib-2.32.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines-2.20.2/glib-2.32.patch
deleted file mode 100644
index f0b878d..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines-2.20.2/glib-2.32.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 8d49a386f467cbf8e0842d2218126f643e50f834 Mon Sep 17 00:00:00 2001
-From: Dominique Leuenberger <dimstar@opensuse.org>
-Date: Sun, 27 Nov 2011 14:24:57 +0000
-Subject: Fix build with glib 2.31: Only glib.h can be #include'd. Fixes bug #664914
-
-Upstream-Status: Backport
-
----
-diff --git a/engines/clearlooks/src/animation.c b/engines/clearlooks/src/animation.c
-index 1f7a41f..56a9286 100644
---- a/engines/clearlooks/src/animation.c
-+++ b/engines/clearlooks/src/animation.c
-@@ -28,7 +28,7 @@
- #include "animation.h"
- 
- #ifdef HAVE_WORKING_ANIMATION
--#include <glib/gtimer.h>
-+#include <glib.h>
- 
- struct _AnimationInfo {
- 	GTimer *timer;
---
-cgit v0.9.0.2
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines-2.20.2/substitute-tests.patch b/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines-2.20.2/substitute-tests.patch
deleted file mode 100644
index 5c557ba..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines-2.20.2/substitute-tests.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-Upstream-Status: Pending
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurd gtk-engines-2.20.2/configure.ac gtk-engines-2.20.2/configure.ac
---- gtk-engines-2.20.2/configure.ac	2010-10-01 15:42:37.000000000 +0300
-+++ gtk-engines-2.20.2/configure.ac	2013-08-20 02:50:27.930510565 +0300
-@@ -166,6 +166,9 @@
-
- AC_SUBST(DEVELOPMENT_CFLAGS)
-
-+AC_SUBST([exported_symbols_tests], [[$(EXPORTED_SYMBOLS_TESTS)]])
-+AC_SUBST([torture_test_tests], [[$(TORTURE_TEST_TESTS)]])
-+
- AM_CONFIG_HEADER([engines/support/config.h])
-
- AC_CONFIG_FILES([
-diff -Nurd gtk-engines-2.20.2/test/Makefile.am gtk-engines-2.20.2/test/Makefile.am
---- gtk-engines-2.20.2/test/Makefile.am	2010-09-19 18:18:21.000000000 +0300
-+++ gtk-engines-2.20.2/test/Makefile.am	2013-08-20 02:50:36.842510865 +0300
-@@ -66,7 +66,7 @@
- # Prefix with exported_
- EXPORTED_SYMBOLS_TESTS = $(patsubst %,exported_%,$(BUILD_ENGINES))
-
--TESTS += $(EXPORTED_SYMBOLS_TESTS)
-+TESTS += @exported_symbols_tests@
-
-
- #############################################################
-@@ -88,7 +88,7 @@
- TORTURE_TEST_TESTS = torture_buildin $(patsubst %,torture_%,$(TORTURE_TEST_ENGINES))
-
- # Add TORTURE_TEST_ENGINES to list of tests
--TESTS += $(TORTURE_TEST_TESTS)
-+TESTS += @torture_test_tests@
-
- # Possible other tests:
- #  - An extensive theme switch tests that loads/unloads the engine
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines_2.20.2.bb b/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines_2.20.2.bb
deleted file mode 100644
index c0ac911..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/gtk-engines/gtk-engines_2.20.2.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "GTK+ theme engines"
-HOMEPAGE = "http://www.gnome.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-SECTION = "x11/base"
-DEPENDS = "intltool-native gtk+ gettext-native"
-
-PR = "r3"
-
-PACKAGES += "${PN}-schemas"
-PACKAGES_DYNAMIC += "^gtk-engine-.* ^gtk-theme-.*"
-
-RDEPENDS_gtk-theme-redmond = "gtk-engine-redmond95"
-RDEPENDS_gtk-theme-metal = "gtk-engine-metal"
-RDEPENDS_gtk-theme-mist = "gtk-engine-mist"
-RDEPENDS_gtk-theme-crux = "gtk-engine-crux-engine"
-RDEPENDS_gtk-theme-lighthouseblue = "gtk-engine-lighthouseblue"
-RDEPENDS_gtk-theme-thinice = "gtk-engine-thinice"
-RDEPENDS_gtk-theme-industrial = "gtk-engine-industrial"
-RDEPENDS_gtk-theme-clearlooks = "gtk-engine-clearlooks"
-
-FILES_${PN} = ""
-FILES_${PN}-dev += "${libdir}/gtk-2.0/*/engines/*.la"
-FILES_${PN}-schemas = "${datadir}/gtk-engines/*.xml"
-
-CFLAGS_prepend = "-DHAVE_ANIMATION "
-
-RDEPENDS_${PN}-dev = ""
-
-inherit gnomebase
-GNOME_COMPRESS_TYPE="bz2"
-
-inherit distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-
-# This picks stable releases in the 2.x series (but not 2.90 onwards,
-# which were GNOME 3 betas).
-UPSTREAM_CHECK_REGEX = "(?P<pver>2\.([0-8]*[02468])+(\.\d+)+)"
-
-python populate_packages_prepend() {
-    engines_root = os.path.join(d.getVar('libdir', True), "gtk-2.0/2.10.0/engines")
-    themes_root = os.path.join(d.getVar('datadir', True), "themes")
-
-    do_split_packages(d, engines_root, '^lib(.*)\.so$', 'gtk-engine-%s', 'GTK %s theme engine', extra_depends='')
-    do_split_packages(d, themes_root, '(.*)', 'gtk-theme-%s', 'GTK theme %s', allow_dirs=True, extra_depends='')
-    # TODO: mark theme packages as arch all
-}
-
-SRC_URI += "file://glib-2.32.patch \
-            file://substitute-tests.patch"
-SRC_URI[archive.md5sum] = "5deb287bc6075dc21812130604c7dc4f"
-SRC_URI[archive.sha256sum] = "15b680abca6c773ecb85253521fa100dd3b8549befeecc7595b10209d62d66b5"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/json-glib/json-glib_1.0.4.bb b/import-layers/yocto-poky/meta/recipes-gnome/json-glib/json-glib_1.0.4.bb
deleted file mode 100644
index 3ce38ce..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/json-glib/json-glib_1.0.4.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "JSON-GLib implements a full JSON parser using GLib and GObject"
-DESCRIPTION = "Use JSON-GLib it is possible to parse and generate valid JSON\
- data structures, using a DOM-like API. JSON-GLib also offers GObject \
-integration, providing the ability to serialize and deserialize GObject \
-instances to and from JSON data types."
-HOMEPAGE = "http://live.gnome.org/JsonGlib"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-
-DEPENDS = "glib-2.0"
-
-SRC_URI[archive.md5sum] = "3131b0417ecde3da1ae72acceaa375cf"
-SRC_URI[archive.sha256sum] = "80f3593cb6bd13f1465828e46a9f740e2e9bd3cd2257889442b3e62bd6de05cd"
-
-inherit gnomebase gettext lib_package gobject-introspection
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/json-glib/json-glib_1.2.2.bb b/import-layers/yocto-poky/meta/recipes-gnome/json-glib/json-glib_1.2.2.bb
new file mode 100644
index 0000000..8df2a42
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/json-glib/json-glib_1.2.2.bb
@@ -0,0 +1,18 @@
+SUMMARY = "JSON-GLib implements a full JSON parser using GLib and GObject"
+DESCRIPTION = "Use JSON-GLib it is possible to parse and generate valid JSON\
+ data structures, using a DOM-like API. JSON-GLib also offers GObject \
+integration, providing the ability to serialize and deserialize GObject \
+instances to and from JSON data types."
+HOMEPAGE = "http://live.gnome.org/JsonGlib"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+DEPENDS = "glib-2.0"
+
+SRC_URI[archive.md5sum] = "c1daefb8d0fb59612af0c072c8aabb58"
+SRC_URI[archive.sha256sum] = "ea128ab52a824fcd06e5448fbb2bd8d9a13740d51c66d445828edba71321a621"
+
+inherit gnomebase gettext lib_package gobject-introspection gtk-doc
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/glade-cruft.patch b/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/glade-cruft.patch
deleted file mode 100644
index c5d5864..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/glade-cruft.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-Upstream-Status: Pending
-
-diff -ur libglade-2.4.0~/configure.in libglade-2.4.0/configure.in
---- libglade-2.4.0~/configure.in	2004-05-17 12:38:31.000000000 +0100
-+++ libglade-2.4.0/configure.in	2004-07-28 16:53:09.000000000 +0100
-@@ -147,6 +147,18 @@
- AM_CONDITIONAL(HAVE_PYTHON, $have_python)
- AC_SUBST(PYTHON)
- 
-+AC_MSG_CHECKING([for cruft in libgtk])
-+AC_TRY_LINK([
-+#include <gtk/gtk.h>
-+#include <stdio.h>
-+],      [ gtk_tree_get_type (); return 0; ],
-+        [ AC_MSG_RESULT(yes)
-+          have_cruft=yes ],
-+        [ AC_MSG_RESULT(no)
-+	  AC_DEFINE(DISABLE_CRUFT,,[leave out support for old, broken widgets])
-+          have_cruft=no ])
-+AC_SUBST(DISABLE_CRUFT)
-+
- dnl add debugging options ...
- changequote(,)dnl
- if test "x$GCC" = xyes; then
-Only in libglade-2.4.0: configure.in.orig
-diff -ur libglade-2.4.0~/glade/glade-gtk.c libglade-2.4.0/glade/glade-gtk.c
---- libglade-2.4.0~/glade/glade-gtk.c	2004-03-13 13:47:35.000000000 +0000
-+++ libglade-2.4.0/glade/glade-gtk.c	2004-07-28 16:53:52.000000000 +0100
-@@ -213,6 +213,8 @@
- 	gtk_clist_column_titles_hide (GTK_CLIST (w));
- }
- 
-+#ifndef DISABLE_CRUFT
-+
- static void
- tree_set_selection_mode (GladeXML *xml, GtkWidget *w,
- 			 const char *name, const char *value)
-@@ -238,6 +240,8 @@
-     gtk_tree_set_view_lines (GTK_TREE (w), BOOL (value));
- }
- 
-+#endif
-+
- static void
- list_set_selection_mode (GladeXML *xml, GtkWidget *w,
- 			 const char *name, const char *value)
-@@ -254,6 +258,7 @@
-     gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (w), BOOL (value));
- }
- 
-+#ifndef DISABLE_CRUFT
- static void
- text_set_text (GladeXML *xml, GtkWidget *w,
- 	       const char *name, const char *value)
-@@ -262,6 +267,7 @@
- 
-     gtk_editable_insert_text (GTK_EDITABLE (w), value, -1, &pos);
- }
-+#endif
- 
- static void
- radio_menu_item_set_group (GladeXML *xml, GtkWidget *w,
-@@ -1125,13 +1131,17 @@
-     glade_register_custom_prop (GTK_TYPE_CLIST, "selection_mode", clist_set_selection_mode);
-     glade_register_custom_prop (GTK_TYPE_CLIST, "shadow_type", clist_set_shadow_type);
-     glade_register_custom_prop (GTK_TYPE_CLIST, "show_titles", clist_set_show_titles);
-+#ifndef DISABLE_CRUFT
-     glade_register_custom_prop (GTK_TYPE_TREE, "selection_mode", tree_set_selection_mode);
-     glade_register_custom_prop (GTK_TYPE_TREE, "view_mode", tree_set_view_mode);
-     glade_register_custom_prop (GTK_TYPE_TREE, "view_line", tree_set_view_line);
-+#endif
-     glade_register_custom_prop (GTK_TYPE_LIST, "selection_mode", list_set_selection_mode);
-     glade_register_custom_prop (GTK_TYPE_CHECK_MENU_ITEM, "always_show_toggle",
- 				check_menu_item_set_always_show_toggle);
-+#ifndef DISABLE_CRUFT
-     glade_register_custom_prop (GTK_TYPE_TEXT, "text", text_set_text);
-+#endif
-     glade_register_custom_prop (GTK_TYPE_RADIO_MENU_ITEM, "group",
- 				radio_menu_item_set_group);
-     glade_register_custom_prop (GTK_TYPE_TOOLBAR, "tooltips", toolbar_set_tooltips);
-@@ -1288,8 +1298,10 @@
- 			   glade_standard_build_children, NULL);
-     glade_register_widget (GTK_TYPE_TEAROFF_MENU_ITEM, glade_standard_build_widget,
- 			   NULL, NULL);
-+#ifndef DISABLE_CRUFT
-     glade_register_widget (GTK_TYPE_TEXT, glade_standard_build_widget,
- 			   NULL, NULL);
-+#endif
-     glade_register_widget (GTK_TYPE_TEXT_VIEW, glade_standard_build_widget,
- 			   NULL, NULL);
-     glade_register_widget (GTK_TYPE_TIPS_QUERY, glade_standard_build_widget,
-@@ -1304,8 +1316,10 @@
- 			   glade_standard_build_children, NULL);
-     glade_register_widget (GTK_TYPE_TOOL_BUTTON, glade_standard_build_widget,
- 			   NULL, NULL);
-+#ifndef DISABLE_CRUFT
-     glade_register_widget (GTK_TYPE_TREE, glade_standard_build_widget,
- 			   NULL, NULL);
-+#endif
-     glade_register_widget (GTK_TYPE_TREE_VIEW, glade_standard_build_widget,
- 			   NULL, NULL);
-     glade_register_widget (GTK_TYPE_VBUTTON_BOX, glade_standard_build_widget,
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/no-xml2.patch b/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/no-xml2.patch
deleted file mode 100644
index dc4c092..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/no-xml2.patch
+++ /dev/null
@@ -1,501 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-diff -urN libglade-2.4.2.orig/configure.in libglade-2.4.2/configure.in
---- libglade-2.4.2.orig/configure.in	2005-02-11 12:42:58.000000000 +0100
-+++ libglade-2.4.2/configure.in	2005-03-22 01:22:00.000000000 +0100
-@@ -52,11 +52,33 @@
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
- 
- PKG_CHECK_MODULES(LIBGLADE, [dnl
--  libxml-2.0 >= required_libxml_version dnl
-   atk >= required_atk_version dnl
-   gtk+-2.0 >= required_gtk_version dnl
-   glib-2.0 >= required_glib_version])
- 
-+disable_xml2=no
-+AC_ARG_WITH([libxml2],
-+  AC_HELP_STRING([--without-libxml2], [Don't use libxml2, use Glib's GMarkupParser instead]),
-+  [disable_xml2=yes],
-+  [disable_xml2=no])
-+
-+AC_MSG_CHECKING([if we are using libxml2])
-+if test "x$disable_xml2" == "xno"; then
-+  AC_MSG_RESULT(yes)
-+  PKG_CHECK_MODULES(XML2, libxml-2.0 >= 2.4.10)
-+  PKGCFG_REQUIRE_LIBXML2="libxml-2.0"
-+  LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS $XML2_CFLAGS"
-+  LIBGLADE_LIBS="$LIBGLADE_LIBS $XML2_LIBS"
-+else
-+  LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS -DUSE_GMARKUP_PARSER"
-+  PKGCFG_REQUIRE_LIBXML2=""
-+  AC_MSG_RESULT(no)
-+fi
-+
-+AC_SUBST(XML2_LIBS)
-+AC_SUBST(XML2_CFLAGS)
-+AC_SUBST(PKGCFG_REQUIRE_LIBXML2)
-+
- AC_MSG_CHECKING([for native Win32])
- case "$host" in
-   *-*-mingw*)
-@@ -116,6 +138,21 @@
-   fi
- fi
- 
-+if test "x$disable_xml2" == "xyes"; then
-+  echo "*****************************************************"
-+  echo "  You chose to disable libxml2 and use Glib's"
-+  echo "  GMarkupParser instead." 
-+  echo  
-+  echo "  Please bear in mind that using libglade with"
-+  echo "  GMarkupParser is an experimental feature only."
-+  echo
-+  echo "  Please post problems or success stories to"
-+  echo "  the glade-devel mailing list. Thank you."
-+  echo "*****************************************************"
-+fi
-+
-+
-+
- GTK_DOC_CHECK(1.0)
- 
- dnl gettext stuff ... there is no message catalog for libglade -- libglade
-diff -urN libglade-2.4.2.orig/glade/glade-parser.c libglade-2.4.2/glade/glade-parser.c
---- libglade-2.4.2.orig/glade/glade-parser.c	2004-11-11 11:56:13.000000000 +0100
-+++ libglade-2.4.2/glade/glade-parser.c	2005-03-22 01:20:00.000000000 +0100
-@@ -34,7 +34,15 @@
- #  define dgettext(Domain, String) (String)
- #endif
- 
--#include <libxml/parser.h>
-+#ifdef USE_GMARKUP_PARSER
-+#  include <zlib.h>
-+#else
-+#  include <libxml/parser.h>
-+#endif
-+
-+#ifdef USE_GMARKUP_PARSER
-+#  define xmlChar gchar
-+#endif
- 
- #include "glade-parser.h"
- #include "glade-private.h"
-@@ -508,7 +516,9 @@
-     case PARSER_START:
- 	if (!strcmp(name, "glade-interface")) {
- 	    state->state = PARSER_GLADE_INTERFACE;
--#if 0
-+
-+#ifndef USE_GMARKUP_PARSER
-+ #if 0
- 	    /* check for correct XML namespace */
- 	    for (i = 0; attrs && attrs[i] != NULL; i += 2) {
- 		if (!strcmp(attrs[i], "xmlns") &&
-@@ -518,7 +528,9 @@
- 		    g_warning("unknown attribute `%s' for <glade-interface>",
- 			      attrs[i]);
- 	    }
-+ #endif
- #endif
-+
- 	} else {
- 	    g_warning("Expected <glade-interface>.  Got <%s>.", name);
- 	    state->prev_state = state->state;
-@@ -1063,12 +1075,18 @@
-     }
- }
- 
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlEntityPtr
- glade_parser_get_entity(GladeParseState *state, const xmlChar *name)
- {
-     return xmlGetPredefinedEntity(name);
- }
- 
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_warning(GladeParseState *state, const char *msg, ...)
- {
-@@ -1079,6 +1097,10 @@
-     va_end(args);
- }
- 
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1089,6 +1111,10 @@
-     va_end(args);
- }
- 
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- glade_parser_fatal_error(GladeParseState *state, const char *msg, ...)
- {
-@@ -1099,6 +1125,10 @@
-     va_end(args);
- }
- 
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static xmlSAXHandler glade_parser = {
-     (internalSubsetSAXFunc)NULL,                       /* internalSubset */
-     (isStandaloneSAXFunc)NULL,                         /* isStandalone */
-@@ -1126,6 +1156,82 @@
-     (fatalErrorSAXFunc)glade_parser_fatal_error,       /* fatalError */
- };
- 
-+#else /* USE_GMARKUP_PARSER */
-+
-+static void
-+glade_parser_start_element_wrapper(GMarkupParseContext *context,
-+                                   const gchar         *name, 
-+                                   const gchar        **attr_names,
-+                                   const gchar        **attr_values,
-+                                   gpointer             state,
-+                                   GError             **error)
-+{
-+    guint i = 0;
-+
-+    /* Pack attribute names/values from two separate
-+     *  arrays (GMarkupParser style) into one single
-+     *  array (libxml SAXParser style). This is not
-+     *  very efficient, but we do it to make the
-+     *  GMarkupParser code as little invasive as
-+     *  possible. */
-+
-+    while (attr_names[i] != NULL) {
-+      ++i;
-+    }
-+
-+    if (1)
-+    {
-+        const gchar *attr[(i*2)+1];
-+        guint j, k;
-+       
-+        for (j=0, k=0;  k < i;  j += 2)
-+        {
-+            attr[j] = attr_names[k];
-+            attr[j+1] = attr_values[k];
-+            ++k;
-+        }
-+        attr[i*2] = NULL;
-+
-+        glade_parser_start_element((GladeParseState*)state, name, attr);
-+    }
-+}
-+
-+static void
-+glade_parser_end_element_wrapper(GMarkupParseContext *context, 
-+                                 const gchar         *name,
-+                                 gpointer             state,
-+                                 GError             **err)
-+{
-+    glade_parser_end_element((GladeParseState*)state, name);
-+}
-+
-+static void
-+glade_parser_characters_wrapper(GMarkupParseContext *context, 
-+                                const gchar         *chars, 
-+                                gsize                len,
-+                                gpointer             state,
-+                                GError             **err)
-+{
-+    glade_parser_characters((GladeParseState*)state, chars, (int) len);
-+}
-+
-+static void
-+glade_parser_error(GMarkupParseContext *context, GError *err, gpointer data)
-+{
-+    g_log("Glade-Parser", G_LOG_LEVEL_CRITICAL, "%s", err->message);
-+}
-+
-+static const GMarkupParser   glade_parser = {
-+    glade_parser_start_element_wrapper,  /* element open   */
-+    glade_parser_end_element_wrapper,    /* element close  */
-+    glade_parser_characters_wrapper,     /* text content   */
-+    NULL,                                /* passthrough    */
-+    glade_parser_error,                  /* parse error    */
-+};
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- static void
- widget_info_free(GladeWidgetInfo *info)
- {
-@@ -1191,6 +1297,9 @@
-  *
-  * Returns: the GladeInterface structure for the XML file.
-  */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_file(const gchar *file, const gchar *domain)
- {
-@@ -1222,6 +1331,31 @@
-     return state.interface;
- }
- 
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+GladeInterface *
-+glade_parser_parse_file(const gchar *file, const gchar *domain)
-+{
-+    GladeInterface  *interface;
-+    GError          *err     = NULL;
-+    gchar           *content = NULL;
-+    gsize            clen;
-+
-+    if (!g_file_get_contents(file, &content, &clen, &err)) {
-+        g_warning("could not load glade file: %s", err->message);
-+        g_error_free(err);
-+        return NULL;
-+    }
-+
-+    interface = glade_parser_parse_buffer(content, (gint) clen, domain);
-+
-+    g_free(content);
-+
-+    return interface;
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
- /**
-  * glade_parser_parse_buffer
-  * @buffer: a buffer in memory containing XML data.
-@@ -1237,6 +1371,9 @@
-  *
-  * Returns: the GladeInterface structure for the XML buffer.
-  */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- GladeInterface *
- glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
- {
-@@ -1263,6 +1400,161 @@
-     return state.interface;
- }
- 
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+
-+static GladeInterface *
-+glade_parser_parse_buffer_internal(const gchar *buffer, gint len, const gchar *domain)
-+{
-+	GMarkupParseContext  *context;
-+	GladeParseState       state = { 0 };
-+	GError               *err   = NULL;
-+
-+	state.interface = NULL;
-+	if (domain)
-+		state.domain = domain;
-+	else
-+		state.domain = textdomain(NULL);
-+
-+	/* FIXME: This strstr() is not safe, as it ignores the len
-+	 *        argument and assumes the buffer is NUL-terminated */
-+	if (strstr(buffer, "<?xml") == NULL) {
-+		g_warning("No XML header found in document!");
-+		return NULL;
-+	}
-+
-+	context = g_markup_parse_context_new(&glade_parser, (GMarkupParseFlags) 0, &state, NULL);
-+
-+	glade_parser_start_document(&state);
-+
-+	if (!g_markup_parse_context_parse(context, buffer, (gssize) len, &err)) {
-+		g_warning("document not well formed: %s", err->message);
-+		g_error_free(err);
-+		if (state.interface)
-+			glade_interface_destroy (state.interface);
-+		return NULL;
-+	}
-+
-+	glade_parser_end_document(&state);
-+
-+	if (state.state != PARSER_FINISH) {
-+		g_warning("did not finish in PARSER_FINISH state!");
-+
-+		if (state.interface)
-+			glade_interface_destroy(state.interface);
-+
-+		return NULL;
-+	}
-+
-+	return state.interface;
-+}
-+
-+struct _gzip_rfc1952_hdr
-+{
-+	guint8	id1, id2, cm, flags;
-+	guint32 mtime;
-+	guint8  xflags;
-+	guint8  os;
-+};
-+
-+static GladeInterface *
-+glade_parser_parse_gzipped_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+	struct _gzip_rfc1952_hdr *hdr = (struct _gzip_rfc1952_hdr*)buffer;
-+	struct z_stream_s         zstream;
-+	GladeInterface           *interface;
-+	const guint8             *cbuf;              /* start of compressed data */
-+	guint8                   *decompress_buf;
-+	gulong                    decompress_len = 0;
-+	gint                      ret;
-+
-+	g_assert(hdr != NULL && hdr->id1 == 0x1f && hdr->id2 == 0x8b);
-+
-+	if (hdr->cm != Z_DEFLATED) {
-+		g_warning("Unknown decompression method %u", (guint) hdr->cm);
-+		return NULL;
-+	}
-+
-+	/* Uncompressed size (modulo 2^32) is last
-+	 *  4 bytes of gzipped file, and little endian.
-+	 *  See RFC 1952 */
-+	decompress_len = GUINT32_FROM_LE(*((guint32*)(((guint8*)buffer) + len - 4)));
-+
-+	/* paranoid mode: glade files > 5MB are unlikely */
-+	g_return_val_if_fail(decompress_len < 5*1024*1024, NULL);
-+
-+	decompress_buf = g_malloc0(decompress_len + 1); /* +1 for NUL-terminator */
-+
-+	/* find start of compressed data, skipping header stuff */
-+	cbuf = (guint8*)buffer + 10;
-+	if (hdr->flags & 0x04) {
-+		guint16 xlen = GUINT16_FROM_LE(*((guint16*)cbuf));
-+		cbuf += xlen + 2;
-+	}
-+	if (hdr->flags & 0x08) {
-+		guint16 onamelen = strlen(cbuf);
-+		cbuf += onamelen + 1;
-+	}
-+	if (hdr->flags & 0x10) {
-+		guint16 commentlen = strlen(cbuf);
-+		cbuf += commentlen + 1;
-+	}
-+	if (hdr->flags & 0x02)
-+	{
-+		cbuf += 2; /* skip header CRC16 */
-+	}
-+
-+	zstream.next_in  = (void*)cbuf;
-+	zstream.avail_in = (uLongf) len - ((void*)cbuf-(void*)buffer) - 4 - 4 +1; 
-+	zstream.next_out = decompress_buf;
-+	zstream.avail_out= decompress_len;
-+	zstream.zalloc   = Z_NULL;
-+	zstream.zfree    = Z_NULL;
-+	zstream.opaque   = Z_NULL;
-+
-+	ret = inflateInit2(&zstream, -MAX_WBITS);
-+
-+	if (ret != Z_OK) {
-+		g_warning("inflateInit2() failed. zlib error code: %d", ret);
-+		g_free(decompress_buf);
-+		return NULL;
-+	}
-+
-+	ret = inflate(&zstream, Z_FINISH);
-+
-+	if (ret != Z_STREAM_END) {
-+		g_warning("zlib decompression failed. zlib error code: %d", ret);
-+		g_free(decompress_buf);
-+		return NULL;
-+	}
-+
-+	interface = glade_parser_parse_buffer_internal(decompress_buf, decompress_len, domain);
-+
-+	g_free(decompress_buf);
-+
-+	return interface;
-+}
-+
-+GladeInterface *
-+glade_parser_parse_buffer(const gchar *buffer, gint len, const gchar *domain)
-+{
-+	g_return_val_if_fail(buffer != NULL, NULL);
-+	g_return_val_if_fail(len > 0, NULL);
-+
-+	/* Check if buffer is gzipped */
-+	if (buffer[0] == 0x1f && buffer[1] == (gchar)0x8b) {
-+		return glade_parser_parse_gzipped_buffer(buffer, len, domain);
-+	}
-+
-+	/* Buffer is cleartext. */
-+	return glade_parser_parse_buffer_internal(buffer, len, domain);
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- static void
- dump_widget(xmlNode *parent, GladeWidgetInfo *info, gint indent)
- {
-@@ -1382,6 +1674,8 @@
- 	xmlNodeAddContent(widget, "  ");
- }
- 
-+#endif /* !defined(USE_GMARKUP_PARSER) */
-+
- /**
-  * glade_interface_dump
-  * @interface: the GladeInterface
-@@ -1390,6 +1684,9 @@
-  * This function dumps the contents of a GladeInterface into a file as
-  * XML.  It is intended mainly as a debugging tool.
-  */
-+
-+#ifndef USE_GMARKUP_PARSER
-+
- void
- glade_interface_dump(GladeInterface *interface, const gchar *filename)
- {
-@@ -1428,6 +1725,17 @@
-     xmlFreeDoc(doc);
- }
- 
-+#else /* defined(USE_GMARKUP_PARSER) */
-+
-+void
-+glade_interface_dump(GladeInterface *interface, const gchar *filename)
-+{
-+    g_warning("glade_interface_dump() is only available with libxml2.");
-+}
-+
-+#endif /* USE_GMARKUP_PARSER */
-+
-+
- #if 0
- int
- main(int argc, char **argv) {
-diff -urN libglade-2.4.2.orig/libglade-2.0.pc.in libglade-2.4.2/libglade-2.0.pc.in
---- libglade-2.4.2.orig/libglade-2.0.pc.in	2001-12-12 15:28:23.000000000 +0100
-+++ libglade-2.4.2/libglade-2.0.pc.in	2005-03-22 01:20:00.000000000 +0100
-@@ -11,7 +11,7 @@
- Name: Libglade
- Description: a library for dynamically loading GLADE interface files
- Version: @VERSION@
--Requires: gtk+-2.0 libxml-2.0
-+Requires: gtk+-2.0 @PKGCFG_REQUIRE_LIBXML2@
- Libs: -L${libdir} -lglade-2.0
- Cflags: -I${includedir}/libglade-2.0
- 
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/python_environment.patch b/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/python_environment.patch
deleted file mode 100644
index b5b2ec4..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade-2.6.4/python_environment.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Using @PYTHON@ for this path would result in the build system python being 
-referred to. Instead we want to locate python from the environment.
-
-Upstream-Status: Inappropriate [configuration]
-
-diff -ruN libglade-2.6.4-orig//libglade-convert.in libglade-2.6.4/libglade-convert.in
---- libglade-2.6.4-orig//libglade-convert.in	2011-09-22 10:18:28.991164003 +0800
-+++ libglade-2.6.4/libglade-convert.in	2011-09-22 10:18:55.431164003 +0800
-@@ -1,4 +1,4 @@
--#!@PYTHON@
-+#!/usr/bin/env python
- # -*- mode: python -*-
- 
- # yes, this requires python 2.x and an XML parser module (eg. PyExpat)
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade_2.6.4.bb b/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade_2.6.4.bb
deleted file mode 100644
index 553e19c..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/libglade/libglade_2.6.4.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Runtime support for the GTK+ interface builder"
-HOMEPAGE = "http://library.gnome.org/devel/libglade/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2 & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605 \
-                    file://glade/glade.h;endline=22;md5=a04f461c964ba4b57a172d1fbcd8f8fc \
-                    file://glade/glade-gtk.c;endline=22;md5=766f993433e2642fec87936d319990ff"
-
-SECTION = "libs"
-PR = "r5"
-DEPENDS = "zlib gdk-pixbuf gtk+"
-
-inherit autotools pkgconfig gnomebase gtk-doc distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-GNOME_COMPRESS_TYPE="bz2"
-
-SRC_URI += "file://glade-cruft.patch file://no-xml2.patch file://python_environment.patch"
-
-SRC_URI[archive.md5sum] = "d1776b40f4e166b5e9c107f1c8fe4139"
-SRC_URI[archive.sha256sum] = "64361e7647839d36ed8336d992fd210d3e8139882269bed47dc4674980165dec"
-
-EXTRA_OECONF += "--without-libxml2"
-
-CFLAGS += "-lz"
-
-PACKAGES += " ${PN}-data"
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-data = "${datadir}/xml/libglade/glade-2.0.dtd"
-FILES_${PN}-dev += "${bindir}/libglade-convert"
-#RDEPENDS_${PN} = "${PN}-data"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libgudev/libgudev_230.bb b/import-layers/yocto-poky/meta/recipes-gnome/libgudev/libgudev_230.bb
index 6a10502..709553b 100644
--- a/import-layers/yocto-poky/meta/recipes-gnome/libgudev/libgudev_230.bb
+++ b/import-layers/yocto-poky/meta/recipes-gnome/libgudev/libgudev_230.bb
@@ -10,5 +10,7 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
-inherit gnomebase gobject-introspection
+inherit gnomebase gobject-introspection gtk-doc
 
+UPSTREAM_CHECK_URI = "http://ftp.gnome.org/pub/GNOME/sources/libgudev/"
+UPSTREAM_CHECK_REGEX = "(?P<pver>(\d+))"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.13.bb b/import-layers/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.13.bb
deleted file mode 100644
index 2ac52f7..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.13.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "Library for rendering SVG files"
-HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/librsvg/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://rsvg.h;beginline=3;endline=24;md5=20b4113c4909bbf0d67e006778302bc6"
-
-SECTION = "x11/utils"
-DEPENDS = "cairo gdk-pixbuf glib-2.0 libcroco libxml2 pango"
-BBCLASSEXTEND = "native"
-
-inherit autotools pkgconfig gnomebase gtk-doc pixbufcache upstream-version-is-even gobject-introspection
-
-SRC_URI += "file://gtk-option.patch"
-
-SRC_URI[archive.md5sum] = "ad03780e12c56e52474d8edf86976c73"
-SRC_URI[archive.sha256sum] = "4d6ea93ec05f5dabe7262d711d246a0a99b2311e215360dd3dcabd6afe3b9804"
-
-CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
-
-# The older ld (2.22) on the host (Centos 6.5) doesn't have the
-# -Bsymbolic-functions option, we can disable it for native.
-EXTRA_OECONF_append_class-native = " --enable-Bsymbolic=auto"
-
-PACKAGECONFIG ??= "gdkpixbuf"
-# The gdk-pixbuf loader
-PACKAGECONFIG[gdkpixbuf] = "--enable-pixbuf-loader,--disable-pixbuf-loader,gdk-pixbuf-native"
-# GTK+ test application (rsvg-view)
-PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
-
-do_install_append() {
-	# Loadable modules don't need .a or .la on Linux
-	rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la
-}
-
-PACKAGES =+ "librsvg-gtk rsvg"
-FILES_rsvg = "${bindir}/rsvg* \
-	      ${datadir}/pixmaps/svg-viewer.svg \
-	      ${datadir}/themes"
-FILES_librsvg-gtk = "${libdir}/gdk-pixbuf-2.0/*/*/*.so"
-
-PIXBUF_PACKAGES = "librsvg-gtk"
-
-PIXBUFCACHE_SYSROOT_DEPS_append_class-native = " harfbuzz-native:do_populate_sysroot_setscene pango-native:do_populate_sysroot_setscene icu-native:do_populate_sysroot_setscene"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.16.bb b/import-layers/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.16.bb
new file mode 100644
index 0000000..49243c8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.16.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Library for rendering SVG files"
+HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/librsvg/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://rsvg.h;beginline=3;endline=24;md5=20b4113c4909bbf0d67e006778302bc6"
+
+SECTION = "x11/utils"
+DEPENDS = "cairo gdk-pixbuf glib-2.0 libcroco libxml2 pango"
+BBCLASSEXTEND = "native"
+
+inherit autotools pkgconfig gnomebase gtk-doc pixbufcache upstream-version-is-even gobject-introspection
+
+SRC_URI += "file://gtk-option.patch"
+
+SRC_URI[archive.md5sum] = "f474fe37177a2bf8050787df2046095c"
+SRC_URI[archive.sha256sum] = "d48bcf6b03fa98f07df10332fb49d8c010786ddca6ab34cbba217684f533ff2e"
+
+CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
+
+# The older ld (2.22) on the host (Centos 6.5) doesn't have the
+# -Bsymbolic-functions option, we can disable it for native.
+EXTRA_OECONF_append_class-native = " --enable-Bsymbolic=auto"
+
+PACKAGECONFIG ??= "gdkpixbuf"
+# The gdk-pixbuf loader
+PACKAGECONFIG[gdkpixbuf] = "--enable-pixbuf-loader,--disable-pixbuf-loader,gdk-pixbuf-native"
+# GTK+ test application (rsvg-view)
+PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
+
+do_install_append() {
+	# Loadable modules don't need .a or .la on Linux
+	rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la
+}
+
+PACKAGES =+ "librsvg-gtk rsvg"
+FILES_rsvg = "${bindir}/rsvg* \
+	      ${datadir}/pixmaps/svg-viewer.svg \
+	      ${datadir}/themes"
+FILES_librsvg-gtk = "${libdir}/gdk-pixbuf-2.0/*/*/*.so"
+
+PIXBUF_PACKAGES = "librsvg-gtk"
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libsecret/libsecret_0.18.4.bb b/import-layers/yocto-poky/meta/recipes-gnome/libsecret/libsecret_0.18.4.bb
deleted file mode 100644
index beaaba0..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/libsecret/libsecret_0.18.4.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "libsecret is a library for storing and retrieving passwords and other secrets"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6"
-
-inherit gnomebase gtk-doc vala gobject-introspection
-
-DEPENDS += "glib-2.0 libgcrypt gettext-native intltool-native"
-
-EXTRA_OECONF += "--disable-manpages"
-
-SRC_URI[archive.md5sum] = "5190da1ee686437046bc10068f120d1d"
-SRC_URI[archive.sha256sum] = "0f29b51698198e6999c91f4adce3119c8c457f546b133a85baea5ea9010a19ed"
-
-# http://errors.yoctoproject.org/Errors/Details/20228/
-ARM_INSTRUCTION_SET = "arm"
-
-# vapigen.m4 bundled with the tarball does not yet have our cross-compilation fixes
-do_configure_prepend() {
-    rm -f ${S}/build/m4/vapigen.m4
-}
-
-# Secret-1: poky/build-mips64/tmp/work/mips64-poky-linux/libgpg-error/1.19-r0/libgpg-error-1.19/src/posix-lock.c:119: get_lock_object: Assertion `!"sizeof lock obj"' failed.
-# qemu: uncaught target signal 6 (Aborted) - core dumped
-EXTRA_OECONF_append_mips64 = " --disable-introspection"
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libsecret/libsecret_0.18.5.bb b/import-layers/yocto-poky/meta/recipes-gnome/libsecret/libsecret_0.18.5.bb
new file mode 100644
index 0000000..bcb3046
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/libsecret/libsecret_0.18.5.bb
@@ -0,0 +1,25 @@
+SUMMARY = "libsecret is a library for storing and retrieving passwords and other secrets"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6"
+
+inherit gnomebase gtk-doc vala gobject-introspection
+
+DEPENDS += "glib-2.0 libgcrypt gettext-native intltool-native"
+
+EXTRA_OECONF += "--disable-manpages"
+
+SRC_URI[archive.md5sum] = "2d688825921313da8731313b0a7f394c"
+SRC_URI[archive.sha256sum] = "9ce7bd8dd5831f2786c935d82638ac428fa085057cc6780aba0e39375887ccb3"
+
+# http://errors.yoctoproject.org/Errors/Details/20228/
+ARM_INSTRUCTION_SET = "arm"
+
+# vapigen.m4 bundled with the tarball does not yet have our cross-compilation fixes
+do_configure_prepend() {
+    rm -f ${S}/build/m4/vapigen.m4
+}
+
+# Secret-1: poky/build-mips64/tmp/work/mips64-poky-linux/libgpg-error/1.19-r0/libgpg-error-1.19/src/posix-lock.c:119: get_lock_object: Assertion `!"sizeof lock obj"' failed.
+# qemu: uncaught target signal 6 (Aborted) - core dumped
+EXTRA_OECONF_append_mips64 = " --disable-introspection --disable-gtk-doc"
+
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libwnck/libwnck3_3.14.1.bb b/import-layers/yocto-poky/meta/recipes-gnome/libwnck/libwnck3_3.14.1.bb
deleted file mode 100644
index 495894b..0000000
--- a/import-layers/yocto-poky/meta/recipes-gnome/libwnck/libwnck3_3.14.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Window navigation construction toolkit"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-BPN = "libwnck"
-
-SECTION = "x11/libs"
-DEPENDS = "gtk+3 gdk-pixbuf-native libxres"
-
-PACKAGECONFIG ??= "startup-notification"
-PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
-
-inherit gnomebase gobject-introspection
-SRC_URI[archive.md5sum] = "d96c0b74c4dc5fdae758964098603c90"
-SRC_URI[archive.sha256sum] = "bb643c9c423c8aa79c59973ce27ce91d3b180d1e9907902278fb79391f52befa"
-
-inherit distro_features_check
-# libxres means x11 only
-REQUIRED_DISTRO_FEATURES = "x11"
-
diff --git a/import-layers/yocto-poky/meta/recipes-gnome/libwnck/libwnck3_3.20.1.bb b/import-layers/yocto-poky/meta/recipes-gnome/libwnck/libwnck3_3.20.1.bb
new file mode 100644
index 0000000..fd4ef69
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-gnome/libwnck/libwnck3_3.20.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Window navigation construction toolkit"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+BPN = "libwnck"
+
+SECTION = "x11/libs"
+DEPENDS = "intltool-native gtk+3 gdk-pixbuf-native libxres"
+
+PACKAGECONFIG ??= "startup-notification"
+PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
+
+inherit gnomebase gobject-introspection gtk-doc
+SRC_URI[archive.md5sum] = "487938d65d4bfae1f2501052b1bd7492"
+SRC_URI[archive.sha256sum] = "1cb03716bc477058dfdf3ebfa4f534de3b13b1aa067fcd064d0b7813291cba72"
+
+inherit distro_features_check
+# libxres means x11 only
+REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/builder/files/builder_session.sh b/import-layers/yocto-poky/meta/recipes-graphics/builder/files/builder_session.sh
index 001a033..4e509a7 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/builder/files/builder_session.sh
+++ b/import-layers/yocto-poky/meta/recipes-graphics/builder/files/builder_session.sh
@@ -23,8 +23,8 @@
     xdg-mime default epiphany.desktop x-scheme-handler/https
     xdg-mime default epiphany.desktop text/html
 
-    #register text files with leafpad text editor
-    xdg-mime default leafpad.desktop text/plain
+    #register text files with l3afpad text editor
+    xdg-mime default l3afpad.desktop text/plain
 fi
 
 cd /home/builder/poky
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo.inc b/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo.inc
index c7e686d..c4b6f32 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo.inc
+++ b/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo.inc
@@ -36,7 +36,7 @@
                  --enable-tee \
                 "
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig upstream-version-is-even gtk-doc
 
 # We don't depend on binutils so we need to disable this
 export ac_cv_lib_bfd_bfd_openr="no"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo_1.14.6.bb b/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo_1.14.6.bb
index 20b4668..d2c1e12 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo_1.14.6.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/cairo/cairo_1.14.6.bb
@@ -7,8 +7,6 @@
 SRC_URI[md5sum] = "23a0b2f0235431d35238df1d3a517fdb"
 SRC_URI[sha256sum] = "613cb38447b76a93ff7235e17acd55a78b52ea84a9df128c3f2257f8eaa7b252"
 
-UPSTREAM_CHECK_REGEX = "cairo-(?P<pver>\d+(\.\d+)+)\.tar"
-
 PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils"
 
 SUMMARY_${PN} = "The Cairo 2D vector graphics library"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
index 127f0a1..e3e4cde 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
@@ -10,10 +10,11 @@
 LICENSE = "OFL-1.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=df91e3ffcab8cfb972a66bf11255188d"
 
-PV = "0.0.21+git${SRCPV}"
+PV = "0.0.24"
 
-SRCREV = "611c169df5287c059d63b0c8f0570647c75c9189"
+SRCREV = "07b6ea2cbbebfc360aa4668612a376be5e214eaa"
 SRC_URI = "git://git.gnome.org/cantarell-fonts;protocol=git;branch=master"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!0\.13)(?!0\.10\.1)\d+\.\d+(\.\d+)+)"
 
 S = "${WORKDIR}/git"
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch
new file mode 100644
index 0000000..7b3c198
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch
@@ -0,0 +1,143 @@
+From 3a0404dfbc65c6a864e01d1200a48074e19d5def Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 2 Sep 2016 14:28:38 +0300
+Subject: [PATCH] Remove clutter.types as it is build configuration-specific.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ doc/reference/clutter.types | 122 --------------------------------------------
+ 1 file changed, 122 deletions(-)
+ delete mode 100644 doc/reference/clutter.types
+
+diff --git a/doc/reference/clutter.types b/doc/reference/clutter.types
+deleted file mode 100644
+index 0037acc..0000000
+--- a/doc/reference/clutter.types
++++ /dev/null
+@@ -1,122 +0,0 @@
+-cally_actor_get_type
+-cally_clone_get_type
+-cally_group_get_type
+-cally_rectangle_get_type
+-cally_root_get_type
+-cally_stage_get_type
+-cally_text_get_type
+-cally_texture_get_type
+-cally_util_get_type
+-clutter_action_get_type
+-clutter_actor_box_get_type
+-clutter_actor_get_type
+-clutter_actor_meta_get_type
+-clutter_align_constraint_get_type
+-clutter_alpha_get_type
+-clutter_animatable_get_type
+-clutter_animation_get_type
+-clutter_animator_get_type
+-clutter_animator_key_get_type
+-clutter_backend_get_type
+-clutter_behaviour_depth_get_type
+-clutter_behaviour_ellipse_get_type
+-clutter_behaviour_get_type
+-clutter_behaviour_opacity_get_type
+-clutter_behaviour_path_get_type
+-clutter_behaviour_rotate_get_type
+-clutter_behaviour_scale_get_type
+-clutter_bin_layout_get_type
+-clutter_bind_constraint_get_type
+-clutter_binding_pool_get_type
+-clutter_blur_effect_get_type
+-clutter_box_get_type
+-clutter_box_layout_get_type
+-clutter_brightness_contrast_effect_get_type
+-clutter_cairo_texture_get_type
+-clutter_canvas_get_type
+-clutter_child_meta_get_type
+-clutter_click_action_get_type
+-clutter_clip_node_get_type
+-clutter_clone_get_type
+-clutter_color_get_type
+-clutter_color_node_get_type
+-clutter_colorize_effect_get_type
+-clutter_constraint_get_type
+-clutter_container_get_type
+-clutter_content_get_type
+-clutter_deform_effect_get_type
+-clutter_desaturate_effect_get_type
+-clutter_device_manager_get_type
+-clutter_drag_action_get_type
+-clutter_drop_action_get_type
+-clutter_effect_get_type
+-clutter_event_get_type
+-clutter_event_sequence_get_type
+-clutter_fixed_layout_get_type
+-clutter_flow_layout_get_type
+-clutter_fog_get_type
+-clutter_geometry_get_type
+-clutter_gesture_action_get_type
+-clutter_glx_texture_pixmap_get_type
+-clutter_grid_layout_get_type
+-clutter_group_get_type
+-clutter_image_get_type
+-clutter_input_device_get_type
+-clutter_interval_get_type
+-clutter_keyframe_transition_get_type
+-clutter_knot_get_type
+-clutter_layout_manager_get_type
+-clutter_layout_meta_get_type
+-clutter_list_model_get_type
+-clutter_margin_get_type
+-clutter_media_get_type
+-clutter_model_get_type
+-clutter_model_iter_get_type
+-clutter_offscreen_effect_get_type
+-clutter_page_turn_effect_get_type
+-clutter_paint_node_get_type
+-clutter_paint_volume_get_type
+-clutter_pan_action_get_type
+-clutter_param_color_get_type
+-clutter_param_fixed_get_type
+-clutter_param_units_get_type
+-clutter_path_constraint_get_type
+-clutter_path_get_type
+-clutter_path_node_get_type
+-clutter_perspective_get_type
+-clutter_pipeline_node_get_type
+-clutter_point_get_type
+-clutter_property_transition_get_type
+-clutter_rect_get_type
+-clutter_rectangle_get_type
+-clutter_rotate_action_get_type
+-clutter_score_get_type
+-clutter_script_get_type
+-clutter_scriptable_get_type
+-clutter_scroll_actor_get_type
+-clutter_settings_get_type
+-clutter_shader_effect_get_type
+-clutter_shader_float_get_type
+-clutter_shader_get_type
+-clutter_shader_int_get_type
+-clutter_shader_matrix_get_type
+-clutter_size_get_type
+-clutter_snap_constraint_get_type
+-clutter_stage_get_type
+-clutter_stage_manager_get_type
+-clutter_state_get_type
+-clutter_state_key_get_type
+-clutter_swipe_action_get_type
+-clutter_table_layout_get_type
+-clutter_tap_action_get_type
+-clutter_text_buffer_get_type
+-clutter_text_get_type
+-clutter_text_node_get_type
+-clutter_texture_get_type
+-clutter_texture_node_get_type
+-clutter_timeline_get_type
+-clutter_transition_get_type
+-clutter_transition_group_get_type
+-clutter_units_get_type
+-clutter_vertex_get_type
+-clutter_zoom_action_get_type
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0/0001-build-Use-AC_COMPILE_IFELSE.patch b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0/0001-build-Use-AC_COMPILE_IFELSE.patch
deleted file mode 100644
index c4edff3..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0/0001-build-Use-AC_COMPILE_IFELSE.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 483a4bb00e7dd2f14d86e167c8013c8638723c33 Mon Sep 17 00:00:00 2001
-From: Emmanuele Bassi <ebassi@gnome.org>
-Date: Thu, 18 Feb 2016 17:19:09 +0000
-Subject: [PATCH] build: Use AC_COMPILE_IFELSE
-
-Instead of AC_TRY_COMPILE, which has been deprecated by newer autoconf.
----
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- configure.ac | 66 ++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 33 insertions(+), 33 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4d72e0c..8ca3f94 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -348,24 +348,25 @@ AS_IF([test "x$enable_wayland" != xno],
-         # We need to manually check for Wayland support in Cogl because
-         # the windowing systems are not exposed in the pkg-config file
-         saved_CFLAGS="${CFLAGS}"
--        CFLAGS="`$PKG_CONFIG --cflags $CLUTTER_BASE_PC_FILES`"
-+        CFLAGS="`$PKG_CONFIG --cflags cogl-1.0`"
- 
-         AC_MSG_CHECKING([for Wayland Cogl backend])
--        AC_TRY_COMPILE([#include <cogl/cogl.h>],
--                       [
--                         #ifndef COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT
--                         #error "No Wayland support in Cogl"
--                         #endif
--                         int main (void) { return 0; }
--                       ],
--                       [
--                         AC_MSG_RESULT(yes)
--                         have_cogl_wayland=yes
--                       ],
--                       [
--                         AC_MSG_RESULT(no)
--                         have_cogl_wayland=no
--                       ])
-+
-+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+#include <cogl/cogl.h>
-+]],
-+[[
-+#ifndef COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT
-+#error Cogl compiled without Wayland support
-+#endif
-+]])], [
-+          AC_MSG_RESULT(yes)
-+          have_cogl_wayland=yes
-+        ], [
-+          AC_MSG_RESULT(no)
-+          have_cogl_wayland=no
-+        ])
-+
-         CFLAGS="${saved_CFLAGS}"
-         AS_IF([test "x$have_cogl_wayland" = xyes],
-               [
-@@ -499,26 +500,25 @@ AS_IF([test "x$enable_mir" = "xyes"],
-         # We need to manually check for Mir support in Cogl because
-         # the windowing systems are not exposed in the pkg-config file
-         saved_CFLAGS="${CFLAGS}"
--        CFLAGS="`$PKG_CONFIG --cflags $CLUTTER_BASE_PC_FILES`"
-+        CFLAGS="`$PKG_CONFIG --cflags cogl-1.0`"
- 
-         AC_MSG_CHECKING([for Mir Cogl backend])
--        AC_TRY_COMPILE([#include <cogl/cogl.h>],
--                       [
--                        #ifndef COGL_HAS_EGL_PLATFORM_MIR_SUPPORT
--                        #error "No Mir support in Cogl"
--                        #endif
--                        int main (void) { return 0; }
--                       ],
--                       [
--                         AC_MSG_RESULT(yes)
--                         have_cogl_mir=yes
--                       ],
--                       [
--                         AC_MSG_RESULT(no)
--                         have_cogl_mir=no
--                       ])
- 
--        CFLAGS="${saved_CFLAGS}"
-+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-+#include <cogl/cogl.h>
-+]],
-+[[
-+#ifndef COGL_HAS_EGL_PLATFORM_MIR_SUPPORT
-+#error Cogl compiled without Mir support
-+#endif
-+]])], [
-+          AC_MSG_RESULT(yes)
-+          have_cogl_mir=yes
-+        ], [
-+          AC_MSG_RESULT(no)
-+          have_cogl_mir=no
-+        ])
-+
-         AS_IF([test "x$have_cogl_mir" = xno], [AC_MSG_ERROR("*** Cogl is missing Mir support.")])
- 
-         PKG_CHECK_EXISTS([mirclient],
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0_1.24.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0_1.24.2.bb
deleted file mode 100644
index c53b3e7..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0_1.24.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require clutter-1.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI[archive.md5sum] = "3b98e1b33719982a5736ae42cbf7183e"
-SRC_URI[archive.sha256sum] = "9631c98cb4bcbfec15e1bbe9eaa6eef0f127201552fce40d7d28f2133803cd63"
-SRC_URI += "file://install-examples.patch \
-            file://run-installed-tests-with-tap-output.patch \
-            file://0001-build-Use-AC_COMPILE_IFELSE.patch \
-            file://run-ptest"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0_1.26.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0_1.26.0.bb
new file mode 100644
index 0000000..dfa1cfe
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-1.0_1.26.0.bb
@@ -0,0 +1,10 @@
+require clutter-1.0.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI[archive.md5sum] = "b065e9ca53d1f6bc1ec26aeb27338bb7"
+SRC_URI[archive.sha256sum] = "67514e7824b3feb4723164084b36d6ce1ae41cb3a9897e9f1a56c8334993ce06"
+SRC_URI += "file://install-examples.patch \
+            file://run-installed-tests-with-tap-output.patch \
+            file://0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch \
+            file://run-ptest"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.16.bb b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.16.bb
deleted file mode 100644
index fcf5242..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.16.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require clutter-gst-3.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
-                    file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4"
-
-SRC_URI[archive.md5sum] = "ca24eb92a0d34fc9e66fd686a965d51c"
-SRC_URI[archive.sha256sum] = "803e8b7265e63e0581e21fd0c6064792dfe951512e9f515e9e7a9b452caaf9f0"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.18.bb b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.18.bb
new file mode 100644
index 0000000..9626cd9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.18.bb
@@ -0,0 +1,7 @@
+require clutter-gst-3.0.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4"
+
+SRC_URI[archive.md5sum] = "3e4f64477f26d9cfd2db06d3aaed203a"
+SRC_URI[archive.sha256sum] = "0aec0d0c6020cd19a5bb0dab1165a92748f81a9a3acdfabb0f966d5f53bc8093"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.6.6.bb b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.6.6.bb
deleted file mode 100644
index 23257bb..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.6.6.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require clutter-gtk-1.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-
-SRC_URI[archive.md5sum] = "79dc3d7a8645f87d83a9ccca8a08aa8e"
-SRC_URI[archive.sha256sum] = "9440a68600f58d00fe0af35383738943e8ead9907f4cf507a102d96822434a28"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.0.bb
new file mode 100644
index 0000000..675365c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.0.bb
@@ -0,0 +1,6 @@
+require clutter-gtk-1.0.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+SRC_URI[archive.md5sum] = "351cf9229cf941d36b441ede2236d742"
+SRC_URI[archive.sha256sum] = "742ef9d68ece36cbb1b2e1a4a6fbdad932f6645360be7e6de75abbb140dfbf1d"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/cogl/cogl-1.0.inc b/import-layers/yocto-poky/meta/recipes-graphics/cogl/cogl-1.0.inc
index 690ea3b..7a79aa7 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/cogl/cogl-1.0.inc
+++ b/import-layers/yocto-poky/meta/recipes-graphics/cogl/cogl-1.0.inc
@@ -73,3 +73,5 @@
 RPROVIDES_libcogl = "cogl-1.0"
 RCONFLICTS_libcogl = "cogl-1.0"
 RREPLACES_libcogl = "cogl-1.0"
+
+COMPATIBLE_HOST_armv4 = 'null'
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb-examples/configure.in-Fix-string-argument-syntax.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb-examples/configure.in-Fix-string-argument-syntax.patch
deleted file mode 100644
index 0717ea6..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb-examples/configure.in-Fix-string-argument-syntax.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 88077ed156a714f32bb408f422278d61611ffd41 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Sat, 26 Jul 2014 16:57:46 -0300
-Subject: [PATCH] configure.in: Fix string argument syntax
-
-Upstream-Status: Submitted
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- configure.in |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.in b/configure.in
-index bfe1b82..e939bbd 100644
---- a/configure.in
-+++ b/configure.in
-@@ -65,7 +65,7 @@ fi)
- 
- DIRECTFB_REQUIRED_VERSION=1.4.14
- 
--PKG_CHECK_MODULES(DIRECTFB, directfb >= $DIRECTFB_REQUIRED_VERSION,[ WATER=`$PKG_CONFIG --variable=water directfb` ],
-+PKG_CHECK_MODULES([DIRECTFB], directfb >= $DIRECTFB_REQUIRED_VERSION,[ WATER=`$PKG_CONFIG --variable=water directfb` ],
- 	AC_MSG_ERROR([$DIRECTFB_PKG_ERRORS
- *** DirectFB $DIRECTFB_REQUIRED_VERSION or newer is required. The latest version
- *** of DirectFB is available from http://www.directfb.org/.]))
--- 
-1.7.10.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb-examples_1.7.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb-examples_1.7.0.bb
deleted file mode 100644
index 7907c5c..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb-examples_1.7.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Example DirectFB applications"
-DESCRIPTION = "The DirectFB-examples package contains a set of simple DirectFB \
-      applications that can be used to test and demonstrate various DirectFB \
-      features"
-DEPENDS = "directfb"
-SECTION = "libs"
-LICENSE = "MIT"
-
-SRC_URI = " \
-           http://downloads.yoctoproject.org/mirror/sources/DirectFB-examples-${PV}.tar.gz \
-           file://configure.in-Fix-string-argument-syntax.patch \
-          "
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=ecf6fd2b19915afc4da56043926ca18f"
-
-S = "${WORKDIR}/DirectFB-examples-${PV}"
-
-inherit autotools pkgconfig
-
-SRC_URI[md5sum] = "8b60c867af295481c32a8c7fc5802307"
-SRC_URI[sha256sum] = "9a2104cc4da8123c8371813551b66b943198979f745cbebc034bb5e10844122a"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb.inc b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb.inc
deleted file mode 100644
index f6b7cbe..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb.inc
+++ /dev/null
@@ -1,79 +0,0 @@
-SUMMARY = "Graphics abstraction library for the Linux Framebuffer Device"
-DESCRIPTION = "DirectFB is a thin library that provides developers \
-with hardware graphics acceleration, input device handling and \
-abstraction, an integrated windowing system with support for \
-translucent windows and multiple display layers on top of the \
-Linux framebuffer device."
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
-
-HOMEPAGE = "http://directfb.org"
-DEPENDS = "jpeg libpng freetype zlib tslib sysfsutils"
-
-SRC_URI = "http://downloads.yoctoproject.org/mirror/sources/DirectFB-${PV}.tar.gz \
-           file://configurefix.patch \
-           file://fusion.patch \
-           file://bashism.patch \
-           file://0001-gfx-direct-Aboid-usng-VLAs-and-printf-formats.patch \
-           file://compar_fn_t.patch \
-           file://union-sigval.patch \
-           file://use-PTHREAD_MUTEX_RECURSIVE.patch \
-          "
-
-S = "${WORKDIR}/DirectFB-${PV}"
-
-LDFLAGS_append =" -lts -lm"
-
-# Workaround for linking issues seen with armv7a + gold
-LDFLAGS_append_arm = "${@base_contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-
-BINCONFIG = "${bindir}/directfb-config"
-
-inherit autotools binconfig-disabled pkgconfig
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[jpeg2000] = "--enable-jpeg2000,--disable-jpeg2000,jasper"
-PACKAGECONFIG[drmkms] = "--enable-drmkms,--disable-drmkms,libdrm"
-PACKAGECONFIG[tiff] = "--enable-tiff,--disable-tiff,tiff"
-PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp"
-
-EXTRA_OECONF = "\
-  --with-gfxdrivers=none \
-  --enable-freetype=yes \
-  --enable-zlib \
-  --disable-imlib2 \
-  --disable-mesa \
-  --disable-sdl \
-  --disable-vnc \
-  --disable-x11 \
-"
-
-#Once -fno-omit-frame-pointer option of gcc is added into TARGET_CLFAGS as default
-#this will cause directfb build failure on x86 arch, so filter out it.
-TARGET_CFLAGS_remove_x86 = "-fno-omit-frame-pointer"
-
-#PACKAGES_DYNAMIC += "^directfb-inputdrivers-.*"
-#
-#python populate_packages_prepend () {
-#    inputdrivers_libdir = d.expand('${libdir}/directfb-${RV}/inputdrivers')
-#    do_split_packages(d, inputdrivers_libdir, '*.so$', 'directfb-inputdrivers-%s', 'Directfb plugin for %s')
-#}
-
-# NOTE: monolithic packaging for now, should improve that eventually
-
-FILES_${PN}-dev += "\
-  ${bindir}/directfb-config \
-  ${libdir}/directfb-${RV}/systems/*.la \
-  ${libdir}/directfb-${RV}/inputdrivers/*.la \
-  ${libdir}/directfb-${RV}/interfaces/*/*.la \
-  ${libdir}/directfb-${RV}/wm/*.la \
-"
-
-FILES_${PN} += "\
-  ${libdir}/directfb-${RV}/systems/*.so \
-  ${libdir}/directfb-${RV}/inputdrivers/*.so \
-  ${libdir}/directfb-${RV}/interfaces/*/*.so \
-  ${libdir}/directfb-${RV}/wm/*.so \
-  ${datadir}/directfb-${PV} \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/0001-gfx-direct-Aboid-usng-VLAs-and-printf-formats.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/0001-gfx-direct-Aboid-usng-VLAs-and-printf-formats.patch
deleted file mode 100644
index 76e0f75..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/0001-gfx-direct-Aboid-usng-VLAs-and-printf-formats.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f43ef44806ffb8e3b35d99070dde9b6cc1714d3d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 8 Sep 2015 21:32:20 +0000
-Subject: [PATCH] gfx,direct: Aboid usng VLAs and printf formats
-
-VLAs are flagged by clang when using non-POD types, therefore replace
-the usage with alloca which is exact same allocation on stack
-
- __attribute__((__format__ (__printf__))) is not portable as used here
- therefore disable the check for clang here, we lose no functionality
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- lib/direct/util.h | 2 +-
- src/gfx/util.cpp  | 8 ++++----
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/lib/direct/util.h b/lib/direct/util.h
-index 72941e9..8e7fa4a 100644
---- a/lib/direct/util.h
-+++ b/lib/direct/util.h
-@@ -98,7 +98,7 @@
- #define D_CONST_FUNC
- #endif
- 
--#if __GNUC__ >= 3
-+#if __GNUC__ >= 3 && !defined __clang__
- #define D_FORMAT_PRINTF(n)         __attribute__((__format__ (__printf__, n, n+1)))
- #define D_FORMAT_VPRINTF(n)        __attribute__((__format__ (__printf__, n, 0)))
- #else
-diff --git a/src/gfx/util.cpp b/src/gfx/util.cpp
-index 40032bc..d1015d4 100644
---- a/src/gfx/util.cpp
-+++ b/src/gfx/util.cpp
-@@ -294,8 +294,8 @@ dfb_gfx_copy_regions_stereo( CoreSurface           *source,
- {
-      unsigned int i, n = 0;
-      DFBRectangle rect = { 0, 0, source->config.size.w, source->config.size.h };
--     DFBRectangle rects[num];
--     DFBPoint     points[num];
-+     DFBRectangle *rects =  (DFBRectangle*)alloca( sizeof(struct DFBRectangle) * num);
-+     DFBPoint *points =  (DFBPoint*)alloca( sizeof(struct DFBPoint) * num);
- 
-      for (i=0; i<num; i++) {
-           DFB_REGION_ASSERT( &regions[i] );
-@@ -351,8 +351,8 @@ dfb_gfx_copy_regions_client( CoreSurface             *source,
- {
-      unsigned int             i, n = 0;
-      DFBRectangle             rect = { 0, 0, source->config.size.w, source->config.size.h };
--     DFBRectangle             rects[num];
--     DFBPoint                 points[num];
-+     DFBRectangle            *rects =  (DFBRectangle*)alloca( sizeof(struct DFBRectangle) * num);
-+     DFBPoint                *points =  (DFBPoint*)alloca( sizeof(struct DFBPoint) * num);
-      CoreGraphicsStateClient *client = _client ? _client : &StateClient::Get()->client;
-      CardState               *state  = client->state;
-      CardState                backup;
--- 
-2.5.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/bashism.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/bashism.patch
deleted file mode 100644
index 2ef4e93..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/bashism.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-${x//y/} is a bash syntax. Replace with something dash compatible
-
-RP 2015/5/3
-Upstream-Status: Pending
-
-Index: DirectFB-1.7.7/configure.in
-===================================================================
---- DirectFB-1.7.7.orig/configure.in
-+++ DirectFB-1.7.7/configure.in
-@@ -2696,7 +2696,7 @@ AM_CONDITIONAL(BUILD_TOOLS, test "$with_
- AM_CONDITIONAL(CROSS_COMPILING, test "$cross_compiling" = "yes")
- 
- CFLAGS="$CFLAGS $DFB_INTERNAL_CFLAGS"
--CXXFLAGS="$CXXFLAGS ${CFLAGS//-Werror-implicit-function-declaration/}"
-+CXXFLAGS="$CXXFLAGS $(printf '%s\n' "$CFLAGS" | sed 's/-Werror-implicit-function-declaration//g')"
- DFB_LDFLAGS="$LDFLAGS $ZLIB_LIBS"
- 
- CFLAGS="$CFLAGS $CFLAGS_STD"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/compar_fn_t.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/compar_fn_t.patch
deleted file mode 100644
index ee4d900..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/compar_fn_t.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-test for __compar_fn_t and if not defined by libc then define it
-help make directfb compile with musl
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: DirectFB-1.7.7/configure.in
-===================================================================
---- DirectFB-1.7.7.orig/configure.in
-+++ DirectFB-1.7.7/configure.in
-@@ -112,6 +112,17 @@ AC_CHECK_SIZEOF(long)
- AC_CHECK_SIZEOF(long long)
- AC_CHECK_FUNCS(fork)
- 
-+AC_CACHE_CHECK([for compar_fn_t in stdlib.h],ccache_cv_COMPAR_FN_T, [
-+    AC_TRY_COMPILE(
-+        [#include <stdlib.h>],
-+        [void test_fn(void) { qsort(NULL, 0, 0, (__compar_fn_t)NULL); }],
-+        ccache_cv_COMPAR_FN_T=yes,
-+        ccache_cv_COMPAR_FN_T=no)])
-+if test x"$ccache_cv_COMPAR_FN_T" = x"yes"; then
-+   AC_DEFINE(HAVE_COMPAR_FN_T, 1,
-+             Define to 1 if you have the `__compar_fn_t' typedef.)
-+fi
-+
- AC_PATH_PROGS(PERL, perl5 perl)
- 
- AC_PATH_PROG(MAN2HTML, man2html, no)
-Index: DirectFB-1.7.7/inputdrivers/lirc/lirc.c
-===================================================================
---- DirectFB-1.7.7.orig/inputdrivers/lirc/lirc.c
-+++ DirectFB-1.7.7/inputdrivers/lirc/lirc.c
-@@ -59,6 +59,11 @@
- 
- #include <core/input_driver.h>
- 
-+#if HAVE_COMPAR_FN_T
-+#define COMPAR_FN_T __compar_fn_t
-+#else
-+typedef int (*COMPAR_FN_T)(const void *, const void *);
-+#endif
- 
- DFB_INPUT_DRIVER( lirc )
- 
-@@ -97,7 +102,7 @@ static DFBInputDeviceKeySymbol lirc_pars
-           qsort ( keynames,
-                   D_ARRAY_SIZE( keynames ),
-                   sizeof(keynames[0]),
--                  (__compar_fn_t) keynames_sort_compare );
-+                  (COMPAR_FN_T) keynames_sort_compare );
-           keynames_sorted = true;
-      }
- 
-@@ -124,7 +129,7 @@ static DFBInputDeviceKeySymbol lirc_pars
-                symbol_name = bsearch( name, keynames,
-                                       D_ARRAY_SIZE( keynames ),
-                                       sizeof(keynames[0]),
--                                      (__compar_fn_t) keynames_compare );
-+                                      (COMPAR_FN_T) keynames_compare );
-                if (symbol_name)
-                     return symbol_name->symbol;
-                break;
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/configurefix.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/configurefix.patch
deleted file mode 100644
index dd8c019..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/configurefix.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Libtool needs these set correctly else we end up with pointless rpaths
-such as the QA warnings:
-
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfblayer contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbmaster contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/mkdgifft contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbdump contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbinput contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbfx contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbscreen contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/mkdgiff contains probably-redundant RPATH /usr/libWARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbinspector contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/mkdfiff contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbinfo contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbpenmount contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/bin/dfbg contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/libfusion-1.4.so.6 contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/libdirectfb-1.4.so.6.0.9 contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/libdirectfb-1.4.so.6 contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/libfusion-1.4.so.6.0.9 contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/systems/libdirectfb_fbdev.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/systems/libdirectfb_devmem.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/systems/libdirectfb_dummy.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_v4l.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/ICoreResourceManager/libicoreresourcemanager_test.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBFont/libidirectfbfont_ft2.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/interfaces/IDirectFBFont/libidirectfbfont_dgiff.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/wm/libdirectfbwm_default.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_zytronic.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_penmount.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_linux_input.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_serialmouse.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_mutouch.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_tslib.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_joystick.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_sonypi.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_lirc.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_wm97xx_ts.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_ps2mouse.so contains probably-redundant RPATH /usr/lib
-WARNING: QA Issue: directfb: /work/i586-poky-linux/directfb-1.4.15-r1/packages-split/directfb/usr/lib/directfb-1.4-6/inputdrivers/libdirectfb_keyboard.so contains probably-redundant RPATH /usr/lib
-
-Upstream-Status: Pending
-
-RP 2012/03/16
-
-Index: DirectFB-1.4.15/configure.in
-===================================================================
---- DirectFB-1.4.15.orig/configure.in	2012-03-16 13:32:23.692402879 +0000
-+++ DirectFB-1.4.15/configure.in	2012-03-16 13:33:22.312400960 +0000
-@@ -97,13 +97,6 @@
- AC_CHECK_SIZEOF(long long)
- AC_CHECK_FUNCS(fork)
- 
--
--## Work around libstuhl during cross build...
--if test "$host" != "$build"; then
--  sys_lib_dlsearch_path_spec=""
--  sys_lib_search_path_spec=""
--fi
--
- AC_PATH_PROGS(PERL, perl5 perl)
- 
- AC_PATH_PROG(MAN2HTML, man2html, no)
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/fusion.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/fusion.patch
deleted file mode 100644
index 1f81a67..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/fusion.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-directfb: Fix for hangs in direct_test, fusion_skirmish on exit
-
-Upstream-Status: Pending
-Signed-off-by: Lauren Post <lauren.post@freescale.com>
-
---- a/lib/fusion/fusion.c	2013-01-18 22:57:11.000000000 +0800
-+++ b/lib/fusion/fusion.c	2013-07-04 10:42:56.502699119 +0800
-@@ -2853,9 +2853,14 @@
-           direct_mutex_lock( &world->event_dispatcher_mutex );
- 
-           while (1) {
--               if (!world->event_dispatcher_buffers)
-+               if (!world->event_dispatcher_buffers){
-                     direct_waitqueue_wait( &world->event_dispatcher_cond, &world->event_dispatcher_mutex );
--
-+                    if (world->dispatch_stop) {
-+                         D_DEBUG_AT( Fusion_Main_Dispatch, "  -> IGNORING (dispatch_stop!)\n" );
-+                         direct_mutex_unlock( &world->event_dispatcher_mutex );
-+                         return NULL;
-+                    }
-+               }
-                buf = (FusionEventDispatcherBuffer *)world->event_dispatcher_buffers;
-                D_MAGIC_ASSERT( buf, FusionEventDispatcherBuffer );
- 
-@@ -2872,6 +2877,11 @@
- //D_INFO("waiting...\n");
-                     D_ASSERT( buf->read_pos == buf->write_pos );
-                     direct_waitqueue_wait( &world->event_dispatcher_cond, &world->event_dispatcher_mutex );
-+		      if (world->dispatch_stop) {
-+                         D_DEBUG_AT( Fusion_Main_Dispatch, "  -> IGNORING (dispatch_stop!)\n" );
-+                         direct_mutex_unlock( &world->event_dispatcher_mutex );
-+                         return NULL;
-+                    }
-                }
- 
-                buf = (FusionEventDispatcherBuffer *)world->event_dispatcher_buffers;
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/union-sigval.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/union-sigval.patch
deleted file mode 100644
index 29f45c7..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/union-sigval.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-This patch is taken from gentoo musl overlay
-sigval_t is glibc only construct, we use a union of sigval
-which pretty much is same effect as sigval_t
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-diff -Naur DirectFB-1.7.6.orig/lib/direct/os/linux/glibc/system.c DirectFB-1.7.6/lib/direct/os/linux/glibc/system.c
---- DirectFB-1.7.6.orig/lib/direct/os/linux/glibc/system.c	2014-07-15 02:54:58.000000000 -0400
-+++ DirectFB-1.7.6/lib/direct/os/linux/glibc/system.c	2015-07-18 16:55:35.077989166 -0400
-@@ -111,7 +111,7 @@
- void
- direct_trap( const char *domain, int sig )
- {
--     sigval_t val;
-+     union sigval val;
- 
-      if (direct_config->delay_trap_ms) {
-           D_LOG( Direct_Trap, VERBOSE, "NOT RAISING signal %d from %s, waiting for %dms... attach gdb --pid=%d\n", sig, domain, direct_config->delay_trap_ms, getpid() );
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/use-PTHREAD_MUTEX_RECURSIVE.patch b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/use-PTHREAD_MUTEX_RECURSIVE.patch
deleted file mode 100644
index ac48f68..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb/use-PTHREAD_MUTEX_RECURSIVE.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-Remove use of DIRECT_RECURSIVE_MUTEX_INITIALIZER its not portable
-use portable way to initialize recursive mutex using pthread_once() and direct_recursive_mutex_init()
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: DirectFB-1.7.7/lib/direct/os/linux/glibc/mutex.h
-===================================================================
---- DirectFB-1.7.7.orig/lib/direct/os/linux/glibc/mutex.h
-+++ DirectFB-1.7.7/lib/direct/os/linux/glibc/mutex.h
-@@ -46,7 +46,6 @@ struct __D_DirectMutex {
- /**********************************************************************************************************************/
- 
- #define DIRECT_MUTEX_INITIALIZER(name)            { PTHREAD_MUTEX_INITIALIZER }
--#define DIRECT_RECURSIVE_MUTEX_INITIALIZER(name)  { PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP }
- 
- #endif
- 
-Index: DirectFB-1.7.7/lib/direct/trace.c
-===================================================================
---- DirectFB-1.7.7.orig/lib/direct/trace.c
-+++ DirectFB-1.7.7/lib/direct/trace.c
-@@ -89,8 +89,15 @@ struct __D_DirectTraceBuffer {
- /**************************************************************************************************/
- 
- static DirectLink  *buffers;
--static DirectMutex  buffers_lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(buffers_lock);
- 
-+static pthread_once_t buffers_lock_init_once = PTHREAD_ONCE_INIT;
-+static DirectMutex buffers_lock;
-+
-+static void
-+buffers_lock_init( void )
-+{
-+     direct_recursive_mutex_init(&buffers_lock);
-+}
- /**************************************************************************************************/
- 
- __dfb_no_instrument_function__
-@@ -113,6 +120,7 @@ get_trace_buffer( void )
- 
-           D_MAGIC_SET( buffer, DirectTraceBuffer );
- 
-+          pthread_once(&buffers_lock_init_once, buffers_lock_init);
-           direct_mutex_lock( &buffers_lock );
-           direct_list_append( &buffers, &buffer->link );
-           direct_mutex_unlock( &buffers_lock );
-@@ -138,8 +146,14 @@ typedef struct {
- } SymbolTable;
- 
- static DirectLink  *tables      = NULL;
--static DirectMutex  tables_lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(tables_lock);
-+static pthread_once_t tables_lock_init_once = PTHREAD_ONCE_INIT;
-+static DirectMutex tables_lock;
- 
-+static void
-+tables_lock_init( void )
-+{
-+     direct_recursive_mutex_init(&tabless_lock);
-+}
- 
- __dfb_no_instrument_function__
- static void
-@@ -370,6 +384,7 @@ direct_trace_lookup_symbol( const char *
-      Symbol      *symbol;
-      SymbolTable *table;
- 
-+     pthread_once(&tables_lock_init_once, tables_lock_init);
-      direct_mutex_lock( &tables_lock );
- 
-      table = find_table( filename );
-@@ -514,6 +529,7 @@ direct_trace_print_stacks()
-      DirectTraceBuffer *b;
-      DirectTraceBuffer *buffer = get_trace_buffer();
- 
-+     pthread_once(&buffers_lock_init_once, buffers_lock_init);
-      direct_mutex_lock( &buffers_lock );
- 
-      if (buffer && buffer->level)
-@@ -611,6 +627,7 @@ direct_trace_free_buffer( DirectTraceBuf
-      D_MAGIC_ASSERT( buffer, DirectTraceBuffer );
- 
-      if (buffer->thread) {
-+          pthread_once(&buffers_lock_init_once, buffers_lock_init);
-           direct_mutex_lock( &buffers_lock );
-           direct_list_remove( &buffers, &buffer->link );
-           direct_mutex_unlock( &buffers_lock );
-Index: DirectFB-1.7.7/src/directfb.c
-===================================================================
---- DirectFB-1.7.7.orig/src/directfb.c
-+++ DirectFB-1.7.7/src/directfb.c
-@@ -99,6 +99,15 @@ const unsigned int directfb_micro_versio
- const unsigned int directfb_binary_age    = DIRECTFB_BINARY_AGE;
- const unsigned int directfb_interface_age = DIRECTFB_INTERFACE_AGE;
- 
-+static pthread_once_t lock_init_once = PTHREAD_ONCE_INIT;
-+static DirectMutex lock;
-+
-+static void
-+lock_init( void )
-+{
-+     direct_recursive_mutex_init(&lock);
-+}
-+
- const char *
- DirectFBCheckVersion( unsigned int required_major,
-                       unsigned int required_minor,
-@@ -215,8 +224,7 @@ DirectFBCreate( IDirectFB **interface_pt
-      if (dfb_config->remote.host)
-           return CreateRemote( dfb_config->remote.host, dfb_config->remote.port, interface_ptr );
- 
--     static DirectMutex lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(lock);
--
-+     pthread_once(&lock_init_once, lock_init);
-      direct_mutex_lock( &lock );
- 
-      if (!dfb_config->no_singleton && idirectfb_singleton) {
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb_1.7.7.bb b/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb_1.7.7.bb
deleted file mode 100644
index c6c070e..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/directfb/directfb_1.7.7.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require directfb.inc
-
-RV = "1.7-7"
-
-LEAD_SONAME = "libdirectfb-1.7.so.0"
-
-SRC_URI[md5sum] = "152cf1863b1a3a28aa1370e9053440bf"
-SRC_URI[sha256sum] = "b785c638dc31b8fe3a7c81be1475c89b2255ab3d67b777c747d3fbc52f8027a3"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch b/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch
new file mode 100644
index 0000000..bf52637
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch
@@ -0,0 +1,56 @@
+From e6bd4205b0b546afe991ae6f72256645f4404ad4 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Mon, 5 Sep 2016 14:41:37 +0300
+Subject: [PATCH libdrm] configure.ac: Allow explicit enabling of cunit tests
+
+Add --with-cunit to make it easier to do reproducible builds. Default
+is still to probe cunit and build opportunistically.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Submitted [mailing list]
+---
+ configure.ac | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index e3048c7..918d21d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -137,6 +137,12 @@ AC_ARG_ENABLE(install-test-programs,
+ 		  [Install test programs (default: no)]),
+ 		  [INSTALL_TESTS=$enableval], [INSTALL_TESTS=no])
+ 
++AC_ARG_WITH([cunit],
++            [AS_HELP_STRING([--with-cunit],
++                            [Build tests that use cunit (default: auto)])],
++            [],
++            [with_cunit=auto])
++
+ dnl ===========================================================================
+ dnl check compiler flags
+ AC_DEFUN([LIBDRM_CC_TRY_FLAG], [
+@@ -372,7 +378,7 @@ if test "x$RADEON" = xyes; then
+ 	AC_DEFINE(HAVE_RADEON, 1, [Have radeon support])
+ fi
+ 
+-if test "x$AMDGPU" != xno; then
++if test "x$with_cunit" != xno -a "x$AMDGPU" != xno; then
+ 	# Detect cunit library
+ 	PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no])
+ 	# If pkg-config does not find cunit, check it using AC_CHECK_LIB.  We
+@@ -399,7 +406,11 @@ if test "x$AMDGPU" = xyes; then
+ 	AC_DEFINE(HAVE_CUNIT, [test "x$have_cunit" != "xno"], [Enable CUNIT Have amdgpu support])
+ 
+ 	if test "x$have_cunit" = "xno"; then
+-		AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
++		if test "x$with_cunit" = "xyes"; then
++			AC_MSG_ERROR([Could not find cunit library but --with-cunit was given])
++		elif test "x$with_cunit" = "xauto"; then
++			AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
++		fi
+ 	fi
+ fi
+ 
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch b/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch
index 286e548..4708bf1 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch
@@ -19,6 +19,6 @@
   */
  
 +#include <config.h>
+ #include <errno.h>
  #include <stdio.h>
  #include <stdlib.h>
- #include <sys/stat.h>
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm_2.4.67.bb b/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm_2.4.67.bb
deleted file mode 100644
index ddd697f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm_2.4.67.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "Userspace interface to the kernel DRM services"
-DESCRIPTION = "The runtime library for accessing the kernel DRM services.  DRM \
-stands for \"Direct Rendering Manager\", which is the kernel portion of the \
-\"Direct Rendering Infrastructure\" (DRI).  DRI is required for many hardware \
-accelerated OpenGL drivers."
-HOMEPAGE = "http://dri.freedesktop.org"
-SECTION = "x11/base"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
-PROVIDES = "drm"
-DEPENDS = "libpthread-stubs udev libpciaccess"
-
-SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.bz2 \
-           file://installtests.patch \
-           file://fix_O_CLOEXEC_undeclared.patch \
-          "
-
-SRC_URI[md5sum] = "b844c6af34e613ebf52f80b3cd8d7055"
-SRC_URI[sha256sum] = "ee5b71e1113be37544d0752681c12f040c01f782e2933df7d7bc21fd0d10cebe"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF += "--disable-cairo-tests \
-                 --enable-omap-experimental-api \
-                 --enable-install-test-programs \
-                 --disable-manpages \
-                 --disable-valgrind \
-                "
-
-ALLOW_EMPTY_${PN}-drivers = "1"
-PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \
-             ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu"
-
-RRECOMMENDS_${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \
-                             ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu"
-
-FILES_${PN}-tests = "${bindir}/*"
-FILES_${PN}-radeon = "${libdir}/libdrm_radeon.so.*"
-FILES_${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*"
-FILES_${PN}-omap = "${libdir}/libdrm_omap.so.*"
-FILES_${PN}-intel = "${libdir}/libdrm_intel.so.*"
-FILES_${PN}-exynos = "${libdir}/libdrm_exynos.so.*"
-FILES_${PN}-kms = "${libdir}/libkms*.so.*"
-FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*"
-FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.*"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm_2.4.70.bb b/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm_2.4.70.bb
new file mode 100644
index 0000000..a2b5282
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/drm/libdrm_2.4.70.bb
@@ -0,0 +1,47 @@
+SUMMARY = "Userspace interface to the kernel DRM services"
+DESCRIPTION = "The runtime library for accessing the kernel DRM services.  DRM \
+stands for \"Direct Rendering Manager\", which is the kernel portion of the \
+\"Direct Rendering Infrastructure\" (DRI).  DRI is required for many hardware \
+accelerated OpenGL drivers."
+HOMEPAGE = "http://dri.freedesktop.org"
+SECTION = "x11/base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
+PROVIDES = "drm"
+DEPENDS = "libpthread-stubs udev libpciaccess"
+
+SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.bz2 \
+           file://installtests.patch \
+           file://fix_O_CLOEXEC_undeclared.patch \
+           file://0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch \
+          "
+
+SRC_URI[md5sum] = "920957cfe25a80efb02be9bd90bf3c1e"
+SRC_URI[sha256sum] = "b17d4b39ed97ca0e4cffa0db06ff609e617bac94646ec38e8e0579d530540e7b"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "--disable-cairo-tests \
+                 --without-cunit \
+                 --enable-omap-experimental-api \
+                 --enable-install-test-programs \
+                 --disable-manpages \
+                 --disable-valgrind \
+                "
+
+ALLOW_EMPTY_${PN}-drivers = "1"
+PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \
+             ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu"
+
+RRECOMMENDS_${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \
+                             ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu"
+
+FILES_${PN}-tests = "${bindir}/*"
+FILES_${PN}-radeon = "${libdir}/libdrm_radeon.so.*"
+FILES_${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*"
+FILES_${PN}-omap = "${libdir}/libdrm_omap.so.*"
+FILES_${PN}-intel = "${libdir}/libdrm_intel.so.*"
+FILES_${PN}-exynos = "${libdir}/libdrm_exynos.so.*"
+FILES_${PN}-kms = "${libdir}/libkms*.so.*"
+FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*"
+FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.*"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig/0001-Revert-changes-made-to-FcConfigAppFontAddDir-recentl.patch b/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig/0001-Revert-changes-made-to-FcConfigAppFontAddDir-recentl.patch
deleted file mode 100644
index f2fd5d4..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig/0001-Revert-changes-made-to-FcConfigAppFontAddDir-recentl.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 46ec6a52d4cc447cc3ff4a13b2067ecb76c9db2e Mon Sep 17 00:00:00 2001
-From: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri, 26 Jun 2015 17:02:13 -0700
-Subject: [PATCH] Revert changes made to FcConfigAppFontAddDir() recently
-
-In 32ac7c75e8db0135ef37cf86f92d8b9be000c8bb the behavior of
-FcConfigAppFontAddFile/Dir() were changed to return false
-if not fonts were found.  While this is welldefined and useful
-for AddFile(), it's quite problematic for AddDir().  For example,
-if the directory is empty, is that a failure or success?  Worse,
-the false value from AddDir() was being propagated all the way
-to FcInit() returning false now.  This only happened upon memory
-allocation failure before, and some clients assert that FcInit()
-is successful.
-
-With this change, AddDir() is reverted back to what it was.
-AddFont() change (which was actually in fcdir.c) from the original
-commit is left in.
-
-Upstream-Status: backport
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- doc/fcconfig.fncs |    2 +-
- src/fccfg.c       |   29 +++++++++++------------------
- src/fcint.h       |    3 ---
- src/fcstr.c       |    8 --------
- 4 files changed, 12 insertions(+), 30 deletions(-)
-
-Index: fontconfig-2.11.94/doc/fcconfig.fncs
-===================================================================
---- fontconfig-2.11.94.orig/doc/fcconfig.fncs
-+++ fontconfig-2.11.94/doc/fcconfig.fncs
-@@ -232,7 +232,7 @@ the current configuration is used.
- @DESC@
- Scans the specified directory for fonts, adding each one found to the
- application-specific set of fonts. Returns FcFalse
--if the fonts cannot be added (due to allocation failure or no fonts found).
-+if the fonts cannot be added (due to allocation failure).
- Otherwise returns FcTrue. If <parameter>config</parameter> is NULL,
- the current configuration is used.
- @@
-Index: fontconfig-2.11.94/src/fccfg.c
-===================================================================
---- fontconfig-2.11.94.orig/src/fccfg.c
-+++ fontconfig-2.11.94/src/fccfg.c
-@@ -368,7 +368,6 @@ FcConfigAddDirList (FcConfig *config, Fc
-     FcStrList	    *dirlist;
-     FcChar8	    *dir;
-     FcCache	    *cache;
--    FcBool	     ret = FcFalse;
- 
-     dirlist = FcStrListCreate (dirSet);
-     if (!dirlist)
-@@ -383,10 +382,9 @@ FcConfigAddDirList (FcConfig *config, Fc
- 	    continue;
- 	FcConfigAddCache (config, cache, set, dirSet);
- 	FcDirCacheUnload (cache);
--	ret = FcTrue;
-     }
-     FcStrListDone (dirlist);
--    return ret;
-+    return FcTrue;
- }
- 
- /*
-@@ -2199,7 +2197,6 @@ FcConfigAppFontAddFile (FcConfig    *con
-     FcStrSet	*subdirs;
-     FcStrList	*sublist;
-     FcChar8	*subdir;
--    FcBool	 ret = FcFalse;
- 
-     if (!config)
-     {
-@@ -2229,19 +2226,16 @@ FcConfigAppFontAddFile (FcConfig    *con
- 	FcStrSetDestroy (subdirs);
- 	return FcFalse;
-     }
--    if (subdirs->num == 0)
--	ret = FcTrue;
--    else if ((sublist = FcStrListCreate (subdirs)))
-+    if ((sublist = FcStrListCreate (subdirs)))
-     {
- 	while ((subdir = FcStrListNext (sublist)))
- 	{
--	    if (FcConfigAppFontAddDir (config, subdir))
--		ret = FcTrue;
-+	    FcConfigAppFontAddDir (config, subdir);
- 	}
- 	FcStrListDone (sublist);
-     }
-     FcStrSetDestroy (subdirs);
--    return ret;
-+    return FcTrue;
- }
- 
- FcBool
-@@ -2250,7 +2244,6 @@ FcConfigAppFontAddDir (FcConfig	    *con
- {
-     FcFontSet	*set;
-     FcStrSet	*dirs;
--    FcBool	 ret = FcTrue;
- 
-     if (!config)
-     {
-@@ -2269,8 +2262,8 @@ FcConfigAppFontAddDir (FcConfig	    *con
- 	set = FcFontSetCreate ();
- 	if (!set)
- 	{
--	    ret = FcFalse;
--	    goto bail;
-+	    FcStrSetDestroy (dirs);
-+	    return FcFalse;
- 	}
- 	FcConfigSetFonts (config, set, FcSetApplication);
-     }
-@@ -2278,10 +2271,12 @@ FcConfigAppFontAddDir (FcConfig	    *con
-     FcStrSetAddFilename (dirs, dir);
- 
-     if (!FcConfigAddDirList (config, FcSetApplication, dirs))
--	ret = FcFalse;
--bail:
-+    {
-+	FcStrSetDestroy (dirs);
-+	return FcFalse;
-+    }
-     FcStrSetDestroy (dirs);
--    return ret;
-+    return FcTrue;
- }
- 
- void
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig_2.11.94.bb b/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig_2.11.94.bb
deleted file mode 100644
index b427947..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig_2.11.94.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Generic font configuration library"
-DESCRIPTION = "Fontconfig is a font configuration and customization library, which \
-does not depend on the X Window System. It is designed to locate \
-fonts within the system and select them according to requirements \
-specified by applications. \
-Fontconfig is not a rasterization library, nor does it impose a \
-particular rasterization library on the application. The X-specific \
-library 'Xft' uses fontconfig along with freetype to specify and \
-rasterize fonts."
-
-HOMEPAGE = "http://www.fontconfig.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig"
-
-LICENSE = "MIT-style & MIT & PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7a0449e9bc5370402a94c00204beca3d \
-                    file://src/fcfreetype.c;endline=45;md5=5d9513e3196a1fbfdfa94051c09dfc84 \
-                    file://src/fccache.c;beginline=1199;endline=1214;md5=0326cfeb4a7333dd4dd25fbbc4b9f27f"
-
-SECTION = "libs"
-
-DEPENDS = "expat freetype zlib"
-
-SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz \
-           file://revert-static-pkgconfig.patch \
-           file://0001-Revert-changes-made-to-FcConfigAppFontAddDir-recentl.patch \
-           "
-SRC_URI[md5sum] = "479be870c7f83f15f87bac085b61d641"
-SRC_URI[sha256sum] = "73f6d323c7bcfbde25d78397675191d55b8f4139132c6a9444410f3a2d8a9a95"
-
-PACKAGES =+ "fontconfig-utils"
-FILES_${PN} =+ "${datadir}/xml/*"
-FILES_fontconfig-utils = "${bindir}/*"
-
-# Work around past breakage in debian.bbclass
-RPROVIDES_fontconfig-utils = "libfontconfig-utils"
-RREPLACES_fontconfig-utils = "libfontconfig-utils"
-RCONFLICTS_fontconfig-utils = "libfontconfig-utils"
-DEBIAN_NOAUTONAME_fontconfig-utils = "1"
-
-inherit autotools pkgconfig
-
-FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig"
-
-# comma separated list of additional directories
-# /usr/share/fonts is already included by default (you can change it with --with-default-fonts)
-FONTCONFIG_FONT_DIRS ?= "no"
-
-EXTRA_OECONF = " --disable-docs --with-default-fonts=${datadir}/fonts --with-cache-dir=${FONTCONFIG_CACHE_DIR} --with-add-fonts=${FONTCONFIG_FONT_DIRS}"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.1.bb
new file mode 100644
index 0000000..115f558
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.1.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Generic font configuration library"
+DESCRIPTION = "Fontconfig is a font configuration and customization library, which \
+does not depend on the X Window System. It is designed to locate \
+fonts within the system and select them according to requirements \
+specified by applications. \
+Fontconfig is not a rasterization library, nor does it impose a \
+particular rasterization library on the application. The X-specific \
+library 'Xft' uses fontconfig along with freetype to specify and \
+rasterize fonts."
+
+HOMEPAGE = "http://www.fontconfig.org"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig"
+
+LICENSE = "MIT-style & MIT & PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7a0449e9bc5370402a94c00204beca3d \
+                    file://src/fcfreetype.c;endline=45;md5=5d9513e3196a1fbfdfa94051c09dfc84 \
+                    file://src/fccache.c;beginline=1360;endline=1375;md5=0326cfeb4a7333dd4dd25fbbc4b9f27f"
+
+SECTION = "libs"
+
+DEPENDS = "expat freetype zlib"
+
+SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz \
+           file://revert-static-pkgconfig.patch \
+           "
+SRC_URI[md5sum] = "ce55e525c37147eee14cc2de6cc09f6c"
+SRC_URI[sha256sum] = "a9f42d03949f948a3a4f762287dbc16e53a927c91a07ee64207ebd90a9e5e292"
+
+PACKAGES =+ "fontconfig-utils"
+FILES_${PN} =+ "${datadir}/xml/*"
+FILES_fontconfig-utils = "${bindir}/*"
+
+# Work around past breakage in debian.bbclass
+RPROVIDES_fontconfig-utils = "libfontconfig-utils"
+RREPLACES_fontconfig-utils = "libfontconfig-utils"
+RCONFLICTS_fontconfig-utils = "libfontconfig-utils"
+DEBIAN_NOAUTONAME_fontconfig-utils = "1"
+
+inherit autotools pkgconfig
+
+FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig"
+
+# comma separated list of additional directories
+# /usr/share/fonts is already included by default (you can change it with --with-default-fonts)
+FONTCONFIG_FONT_DIRS ?= "no"
+
+EXTRA_OECONF = " --disable-docs --with-default-fonts=${datadir}/fonts --with-cache-dir=${FONTCONFIG_CACHE_DIR} --with-add-fonts=${FONTCONFIG_FONT_DIRS}"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/freetype/freetype_2.6.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/freetype/freetype_2.6.3.bb
deleted file mode 100644
index 3ed9070..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/freetype/freetype_2.6.3.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Freetype font rendering library"
-DESCRIPTION = "FreeType is a software font engine that is designed to be small, efficient, \
-highly customizable, and portable while capable of producing high-quality output (glyph \
-images). It can be used in graphics libraries, display servers, font conversion tools, text \
-image generation tools, and many other products as well."
-HOMEPAGE = "http://www.freetype.org/"
-BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=freetype"
-SECTION = "libs"
-
-LICENSE = "FreeType | GPLv2+"
-LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=4af6221506f202774ef74f64932878a1 \
-                    file://docs/FTL.TXT;md5=d479e83797f699fe873b38dadd0fcd4c \
-                    file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
-           file://use-right-libtool.patch"
-
-SRC_URI[md5sum] = "0037b25a8c090bc8a1218e867b32beb1"
-SRC_URI[sha256sum] = "371e707aa522acf5b15ce93f11183c725b8ed1ee8546d7b3af549863045863a2"
-
-inherit autotools pkgconfig binconfig-disabled multilib_header
-
-# Adapt autotools to work with the minimal autoconf usage in freetype
-AUTOTOOLS_SCRIPT_PATH = "${S}/builds/unix"
-CONFIGURE_SCRIPT = "${S}/configure"
-EXTRA_AUTORECONF += "--exclude=autoheader --exclude=automake"
-
-PACKAGECONFIG ??= "zlib"
-
-PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
-# harfbuzz results in a circular dependency so enabling is non-trivial
-PACKAGECONFIG[harfbuzz] = "--with-harfbuzz,--without-harfbuzz,harfbuzz"
-PACKAGECONFIG[pixmap] = "--with-png,--without-png,libpng"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
-
-EXTRA_OECONF = "CC_BUILD='${BUILD_CC}'"
-
-TARGET_CPPFLAGS += "-D_FILE_OFFSET_BITS=64"
-
-do_install_append() {
-	oe_multilib_header freetype2/freetype/config/ftconfig.h
-}
-
-BINCONFIG = "${bindir}/freetype-config"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/freetype/freetype_2.6.5.bb b/import-layers/yocto-poky/meta/recipes-graphics/freetype/freetype_2.6.5.bb
new file mode 100644
index 0000000..97dde3a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/freetype/freetype_2.6.5.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Freetype font rendering library"
+DESCRIPTION = "FreeType is a software font engine that is designed to be small, efficient, \
+highly customizable, and portable while capable of producing high-quality output (glyph \
+images). It can be used in graphics libraries, display servers, font conversion tools, text \
+image generation tools, and many other products as well."
+HOMEPAGE = "http://www.freetype.org/"
+BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=freetype"
+SECTION = "libs"
+
+LICENSE = "FreeType | GPLv2+"
+LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=4af6221506f202774ef74f64932878a1 \
+                    file://docs/FTL.TXT;md5=13b25413274c9b3b09b63e4028216ff4 \
+                    file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
+           file://use-right-libtool.patch"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/freetype/files/freetype2/"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
+
+SRC_URI[md5sum] = "6a386964e18ba28cb93370e57a19031b"
+SRC_URI[sha256sum] = "e20a6e1400798fd5e3d831dd821b61c35b1f9a6465d6b18a53a9df4cf441acf0"
+
+inherit autotools pkgconfig binconfig-disabled multilib_header
+
+# Adapt autotools to work with the minimal autoconf usage in freetype
+AUTOTOOLS_SCRIPT_PATH = "${S}/builds/unix"
+CONFIGURE_SCRIPT = "${S}/configure"
+EXTRA_AUTORECONF += "--exclude=autoheader --exclude=automake"
+
+PACKAGECONFIG ??= "zlib"
+
+PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
+# harfbuzz results in a circular dependency so enabling is non-trivial
+PACKAGECONFIG[harfbuzz] = "--with-harfbuzz,--without-harfbuzz,harfbuzz"
+PACKAGECONFIG[pixmap] = "--with-png,--without-png,libpng"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
+
+EXTRA_OECONF = "CC_BUILD='${BUILD_CC}'"
+
+TARGET_CPPFLAGS += "-D_FILE_OFFSET_BITS=64"
+
+do_install_append() {
+	oe_multilib_header freetype2/freetype/config/ftconfig.h
+}
+
+BINCONFIG = "${bindir}/freetype-config"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/glew/glew_1.13.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/glew/glew_1.13.0.bb
deleted file mode 100644
index a25c405..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/glew/glew_1.13.0.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "OpenGL extension loading library"
-DESCRIPTION = "The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library."
-HOMEPAGE = "http://glew.sourceforge.net/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=67586"
-SECTION = "x11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ac251558de685c6b9478d89be3149c2"
-
-DEPENDS = "virtual/libx11 virtual/libgl libglu libxext libxi libxmu"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \
-           file://no-strip.patch"
-
-SRC_URI[md5sum] = "7cbada3166d2aadfc4169c4283701066"
-SRC_URI[sha256sum] = "aa25dc48ed84b0b64b8d41cdd42c8f40f149c37fa2ffa39cd97f42c78d128bc7"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/glew/files/glew"
-UPSTREAM_CHECK_REGEX = "/glew/(?P<pver>(\d+[\.\-_]*)+)/"
-
-inherit lib_package pkgconfig distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-# Override SYSTEM to avoid calling config.guess, we're cross-compiling.  Pass
-# our CFLAGS via POPT as that's the optimisation variable and safely
-# overwritten.
-EXTRA_OEMAKE = "SYSTEM='linux' \
-                CC='${CC}' LD='${CC}' STRIP='' \
-                LDFLAGS.EXTRA='${LDFLAGS}' \
-                POPT='${CFLAGS}' \
-                GLEW_PREFIX='${prefix}' BINDIR='${bindir}' \
-                LIBDIR='${libdir}' INCDIR='${includedir}/GL'"
-
-do_compile() {
-	oe_runmake
-}
-
-do_install() {
-	oe_runmake 'DESTDIR=${D}' install.all
-}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/glew/glew_2.0.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/glew/glew_2.0.0.bb
new file mode 100644
index 0000000..489dd7c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/glew/glew_2.0.0.bb
@@ -0,0 +1,40 @@
+SUMMARY = "OpenGL extension loading library"
+DESCRIPTION = "The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library."
+HOMEPAGE = "http://glew.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=67586"
+SECTION = "x11"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ac251558de685c6b9478d89be3149c2"
+
+DEPENDS = "virtual/libx11 virtual/libgl libglu libxext libxi libxmu"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \
+           file://no-strip.patch"
+
+SRC_URI[md5sum] = "2a2cd7c98f13854d2fcddae0d2b20411"
+SRC_URI[sha256sum] = "c572c30a4e64689c342ba1624130ac98936d7af90c3103f9ce12b8a0c5736764"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/glew/files/glew"
+UPSTREAM_CHECK_REGEX = "/glew/(?P<pver>(\d+[\.\-_]*)+)/"
+
+inherit lib_package pkgconfig distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+# Override SYSTEM to avoid calling config.guess, we're cross-compiling.  Pass
+# our CFLAGS via POPT as that's the optimisation variable and safely
+# overwritten.
+EXTRA_OEMAKE = "SYSTEM='linux' \
+                CC='${CC}' LD='${CC}' STRIP='' \
+                LDFLAGS.EXTRA='${LDFLAGS}' \
+                POPT='${CFLAGS}' \
+                GLEW_PREFIX='${prefix}' BINDIR='${bindir}' \
+                LIBDIR='${libdir}' INCDIR='${includedir}/GL' PKGDIR='${libdir}/pkgconfig'"
+
+do_compile() {
+	oe_runmake
+}
+
+do_install() {
+	oe_runmake 'DESTDIR=${D}' install.all
+}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.2.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.2.3.bb
deleted file mode 100644
index cfe885f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.2.3.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Text shaping library"
-DESCRIPTION = "HarfBuzz is an OpenType text shaping engine."
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e021dd6dda6ff1e6b1044002fc662b9b \
-                    file://src/hb-ucdn/COPYING;md5=994ba0f1295f15b4bda4999a5bbeddef \
-"
-
-DEPENDS = "glib-2.0 cairo fontconfig freetype"
-
-SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.bz2"
-
-SRC_URI[md5sum] = "da8d97e262e6ef8288e1ae76369421bd"
-SRC_URI[sha256sum] = "8216d2404aaab7fde87be0365a90d64aa6c55928e104557cfcb37b54a096cb8c"
-
-inherit autotools pkgconfig lib_package
-
-PACKAGECONFIG ??= "icu"
-PACKAGECONFIG[icu] = "--with-icu,--without-icu,icu"
-
-EXTRA_OECONF = " \
-    --with-cairo \
-    --with-fontconfig \
-    --with-freetype \
-    --with-glib \
-    --without-graphite2 \
-"
-
-PACKAGES =+ "${PN}-icu ${PN}-icu-dev"
-
-FILES_${PN}-icu = "${libdir}/libharfbuzz-icu.so.*"
-FILES_${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \
-                       ${libdir}/libharfbuzz-icu.so \
-                       ${libdir}/pkgconfig/harfbuzz-icu.pc \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.3.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.3.0.bb
new file mode 100644
index 0000000..f24c443
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.3.0.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Text shaping library"
+DESCRIPTION = "HarfBuzz is an OpenType text shaping engine."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e021dd6dda6ff1e6b1044002fc662b9b \
+                    file://src/hb-ucdn/COPYING;md5=994ba0f1295f15b4bda4999a5bbeddef \
+"
+
+DEPENDS = "glib-2.0 cairo fontconfig freetype"
+
+SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.bz2"
+
+SRC_URI[md5sum] = "a82d49ff67197bc3c96ea34b98880c52"
+SRC_URI[sha256sum] = "b04be31633efee2cae1d62d46434587302554fa837224845a62565ec68a0334d"
+
+inherit autotools pkgconfig lib_package gtk-doc
+
+PACKAGECONFIG ??= "icu"
+PACKAGECONFIG[icu] = "--with-icu,--without-icu,icu"
+
+EXTRA_OECONF = " \
+    --with-cairo \
+    --with-fontconfig \
+    --with-freetype \
+    --with-glib \
+    --without-graphite2 \
+"
+
+PACKAGES =+ "${PN}-icu ${PN}-icu-dev"
+
+FILES_${PN}-icu = "${libdir}/libharfbuzz-icu.so.*"
+FILES_${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \
+                       ${libdir}/libharfbuzz-icu.so \
+                       ${libdir}/pkgconfig/harfbuzz-icu.pc \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/images/core-image-directfb.bb b/import-layers/yocto-poky/meta/recipes-graphics/images/core-image-directfb.bb
deleted file mode 100644
index 5641195..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/images/core-image-directfb.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "An image that uses DirectFB instead of X11"
-LICENSE = "MIT"
-
-
-LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
-                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-inherit core-image distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "directfb"
-CONFLICT_DISTRO_FEATURES = "x11"
-
-IMAGE_INSTALL += "\
-	${CORE_IMAGE_BASE_INSTALL} \
-	packagegroup-core-full-cmdline \
-	packagegroup-core-directfb \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/images/core-image-weston.bb b/import-layers/yocto-poky/meta/recipes-graphics/images/core-image-weston.bb
index 52e271d..e36655f 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/images/core-image-weston.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/images/core-image-weston.bb
@@ -9,3 +9,4 @@
 REQUIRED_DISTRO_FEATURES = "wayland"
 
 CORE_IMAGE_BASE_INSTALL += "weston weston-init weston-examples gtk+3-demo clutter-1.0-examples"
+CORE_IMAGE_BASE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'weston-xwayland matchbox-terminal', '', d)}"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.0.bb
new file mode 100644
index 0000000..c9e70d7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Hardware accelerated JPEG compression/decompression library"
+DESCRIPTION = "libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression"
+HOMEPAGE = "http://libjpeg-turbo.org/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://cdjpeg.h;endline=13;md5=05bab7c7ad899d85bfba60da1a1271f2 \
+                    file://jpeglib.h;endline=16;md5=f67d70e547a2662c079781c72f877f72 \
+                    file://djpeg.c;endline=11;md5=b90b6d2b4119f9e5807cd273f525d2af \
+"
+DEPENDS = "nasm-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "3fc5d9b6a8bce96161659ae7a9939257"
+SRC_URI[sha256sum] = "9f397c31a67d2b00ee37597da25898b03eb282ccd87b135a50a69993b6a2035f"
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/"
+UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/"
+
+PE= "1"
+
+# Drop-in replacement for jpeg
+PROVIDES = "jpeg"
+RPROVIDES_${PN} += "jpeg"
+RREPLACES_${PN} += "jpeg"
+RCONFLICTS_${PN} += "jpeg"
+
+inherit autotools pkgconfig
+
+# Work around missing x32 ABI support
+EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--without-simd", "", d)}"
+
+# Work around missing non-floating point ABI support in MIPS
+EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "--without-simd", "", d)}"
+
+# Provide a workaround if Altivec unit is not present in PPC
+EXTRA_OECONF_append_class-target_powerpc = "${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "--without-simd", d)}"
+EXTRA_OECONF_append_class-target_powerpc64 = "${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "--without-simd", d)}"
+
+PACKAGES =+ "jpeg-tools libturbojpeg"
+
+DESCRIPTION_jpeg-tools = "The jpeg-tools package includes client programs to access libjpeg functionality.  These tools allow for the compression, decompression, transformation and display of JPEG files and benchmarking of the libjpeg library."
+FILES_jpeg-tools = "${bindir}/*"
+
+DESCRIPTION_libturbojpeg = "A SIMD-accelerated JPEG codec which provides only TurboJPEG APIs"
+FILES_libturbojpeg = "${libdir}/libturbojpeg.so.*"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/jpeg/libjpeg-turbo_8d+1.4.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/jpeg/libjpeg-turbo_8d+1.4.2.bb
deleted file mode 100644
index 4859431..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/jpeg/libjpeg-turbo_8d+1.4.2.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression"
-HOMEPAGE = "http://libjpeg-turbo.org/"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://cdjpeg.h;endline=12;md5=cad955d15145c3fdceec6855e078e953 \
-                    file://jpeglib.h;endline=14;md5=dfc803dc51ae21178d1376ec73c4454d \
-                    file://djpeg.c;endline=9;md5=e93a8f2061e8a0ac71c7a485c10489e2 \
-"
-
-DEPENDS = "nasm-native"
-
-BASEPV = "${@d.getVar('PV',True).split('+')[1]}"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${BASEPV}.tar.gz"
-SRC_URI[md5sum] = "86b0d5f7507c2e6c21c00219162c3c44"
-SRC_URI[sha256sum] = "521bb5d3043e7ac063ce3026d9a59cc2ab2e9636c655a2515af5f4706122233e"
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/"
-UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/"
-
-S = "${WORKDIR}/${BPN}-${BASEPV}"
-
-# Drop-in replacement for jpeg
-PROVIDES = "jpeg"
-RPROVIDES_${PN} += "jpeg"
-RREPLACES_${PN} += "jpeg"
-RCONFLICTS_${PN} += "jpeg"
-
-inherit autotools pkgconfig
-
-# Work around missing x32 ABI support
-EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--without-simd", "", d)}"
-
-PACKAGES =+ "jpeg-tools libturbojpeg"
-
-DESCRIPTION_jpeg-tools = "The jpeg-tools package includes client programs to access libjpeg functionality.  These tools allow for the compression, decompression, transformation and display of JPEG files and benchmarking of the libjpeg library."
-FILES_jpeg-tools = "${bindir}/*"
-
-DESCRIPTION_libturbojpeg = "A SIMD-accelerated JPEG codec which provides only TurboJPEG APIs"
-FILES_libturbojpeg = "${libdir}/libturbojpeg.so.*"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox/libpng.patch b/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox/libpng.patch
deleted file mode 100644
index 8cd507f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox/libpng.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 19c3d242034748b3c60765683e1ff4e2df970205 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Tue, 10 Dec 2013 11:37:32 +0000
-Subject: [PATCH] configure: improve libpng detection
-
-Instead of looking for "libpng12" explicitly though pkg-config and then falling
-back to library hunting, just use pkg-config to find "libpng" which is provided
-by both libpng12 and libpng16.
-
-This also makes the libpng detection deterministic.
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- configure.ac | 29 +++++------------------------
- 1 file changed, 5 insertions(+), 24 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 8a28076..65d7c79 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -34,7 +34,7 @@ AC_ARG_ENABLE(jpeg,
-   enable_jpeg=$enableval, enable_jpeg=no)
- 
- AC_ARG_ENABLE(png,
--  [  --disable-png           disable png support [default=no]],
-+  [  --disable-png           disable PNG support [default=enabled]],
-      enable_png=$enableval, enable_png=yes )
- 
- AC_ARG_ENABLE(doxygen-docs,     
-@@ -156,29 +156,10 @@ fi
- dnl ------ Check for PNG ---------------------------------------------------
- 
- if test x$enable_png != xno; then
--  AC_MSG_CHECKING(for libpng12)
--  if test x$PKG_CONFIG != xno && $PKG_CONFIG --exists libpng12; then 
--        AC_MSG_RESULT(yes)
--        PNG_LIBS=`$PKG_CONFIG --libs libpng12`
--	PNG_CFLAGS=`$PKG_CONFIG --cflags libpng12`
--        AC_DEFINE(USE_PNG, [1], [Use Png])
--	SUPPORTS_PNG=1
--	PNG_REQUIRED="libpng12"
--  else
--	AC_MSG_RESULT(no)
--        # AC_CHECK_HEADERS(png.h, [ have_png_h="yes" ], [ have_png_h="no" ] )
--        AC_CHECK_LIB([png], [png_create_read_struct], [have_png="yes"], [have_png="no"])
--
--        if test x$have_png=xyes && test x$have_png_h=xyes; then 
--            AC_DEFINE(USE_PNG, [1], [Use Png])
--	    SUPPORTS_PNG=1
--            PNG_LIBS="-lpng -lz"
--            MB_EXTRA_LIBS="$MB_EXTRA_LIBS $PNG_LIBS"
--        else
--	    AC_MSG_WARN([*** Cannot find PNG, disabling support])
--            enable_png=no
--	fi
--  fi
-+  PKG_CHECK_MODULES(PNG, libpng)
-+  AC_DEFINE(USE_PNG, [1], [Use PNG])
-+  SUPPORTS_PNG=1
-+  PNG_REQUIRED="libpng"
- fi
- 
- 
--- 
-1.8.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb b/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb
deleted file mode 100644
index f2eb675..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Matchbox window manager core library"
-SECTION = "x11/libs"
-HOMEPAGE = "http://matchbox-project.org/"
-BUGTRACKER = "http://bugzilla.yoctoproject.com/"
-
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
-                    file://libmb/mbexp.c;endline=20;md5=28c0aef3b23e308464f5dae6a11b0d2f \
-                    file://libmb/mbdotdesktop.c;endline=21;md5=5a287156b3207e851c1d68d09c439b51"
-
-DEPENDS = "virtual/libx11 libxext"
-
-SRC_URI = "http://downloads.yoctoproject.org/releases/matchbox/${BPN}/${PV}/${BPN}-${PV}.tar.bz2 \
-           file://libpng.patch"
-
-SRC_URI[md5sum] = "fc6cc807f55a3e7c752d8013176875d7"
-SRC_URI[sha256sum] = "254cab52e304a3512c8df4be59d690cf3921bbb68a28ede7fe26b93534217b53"
-
-inherit autotools pkgconfig distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-PACKAGECONFIG ??= "jpeg png xft xsettings"
-PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
-PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
-PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
-PACKAGECONFIG[xft] = "--enable-xft,--disable-xft,libxft"
-PACKAGECONFIG[xsettings] = "--enable-xsettings,--disable-xsettings,libxsettings-client"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb b/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
new file mode 100644
index 0000000..ce45e48
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Matchbox window manager core library"
+SECTION = "x11/libs"
+HOMEPAGE = "http://matchbox-project.org/"
+BUGTRACKER = "http://bugzilla.yoctoproject.com/"
+
+LICENSE = "LGPLv2+ & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
+                    file://COPYING.MIT;md5=f45ed9332b4f50a35adf2065adde4ca7 \
+                    file://libmb/mbexp.c;endline=20;md5=28c0aef3b23e308464f5dae6a11b0d2f \
+                    file://libmb/xsettings-client.c;endline=20;md5=4b106a387602db8d91a50d5cdfd65031"
+
+DEPENDS = "virtual/libx11 libxext"
+
+#SRCREV for 1.12
+SRCREV = "e846ee434f8e23d9db38af13c523f791495e0e87"
+SRC_URI = "git://git.yoctoproject.org/${BPN}"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+PACKAGECONFIG ??= "jpeg png xft"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
+PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
+PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
+PACKAGECONFIG[xft] = "--enable-xft,--disable-xft,libxft"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libsdl2/libsdl2/0001-src-video-make-it-compatible-with-wayland-1.10.patch b/import-layers/yocto-poky/meta/recipes-graphics/libsdl2/libsdl2/0001-src-video-make-it-compatible-with-wayland-1.10.patch
new file mode 100644
index 0000000..44e6d4d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/libsdl2/libsdl2/0001-src-video-make-it-compatible-with-wayland-1.10.patch
@@ -0,0 +1,57 @@
+From b1ed3533433501ec52c8289a5b3a294e57e7f798 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <martin.jansa@gmail.com>
+Date: Thu, 26 May 2016 11:31:52 +0000
+Subject: [PATCH] src/video: make it compatible with wayland 1.10
+
+| build/.libs/SDL_waylandevents.o: In function `wl_registry_bind':
+| /usr/include/wayland-client-protocol.h:305: undefined reference to `wl_proxy_marshal_constructor_versioned'
+| /usr/include/wayland-client-protocol.h:305: undefined reference to `wl_proxy_marshal_constructor_versioned'
+| build/.libs/SDL_waylandkeyboard.o: In function `wl_registry_bind':
+| /usr/include/wayland-client-protocol.h:305: undefined reference to `wl_proxy_marshal_constructor_versioned'
+| /usr/include/wayland-client-protocol.h:305: undefined reference to `wl_proxy_marshal_constructor_versioned'
+| build/.libs/SDL_waylandvideo.o: In function `wl_registry_bind':
+| /usr/include/wayland-client-protocol.h:305: undefined reference to `wl_proxy_marshal_constructor_versioned'
+| collect2: error: ld returned 1 exit status
+| make: *** [build/libSDL2.la] Error 1
+| ERROR: oe_runmake failed
+
+Upstream-Status: Pending
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+---
+ src/video/wayland/SDL_waylanddyn.h | 1 +
+ src/video/wayland/SDL_waylandsym.h | 4 ++++
+ src/video/webos/SDL_waylanddyn.h   | 1 +
+ src/video/webos/SDL_waylandsym.h   | 4 ++++
+ 4 files changed, 10 insertions(+)
+
+diff --git a/src/video/wayland/SDL_waylanddyn.h b/src/video/wayland/SDL_waylanddyn.h
+index 8d9313a..c7b0157 100644
+--- a/src/video/wayland/SDL_waylanddyn.h
++++ b/src/video/wayland/SDL_waylanddyn.h
+@@ -79,6 +79,7 @@ void SDL_WAYLAND_UnloadSymbols(void);
+ #define wl_proxy_get_user_data (*WAYLAND_wl_proxy_get_user_data)
+ #define wl_proxy_add_listener (*WAYLAND_wl_proxy_add_listener)
+ #define wl_proxy_marshal_constructor (*WAYLAND_wl_proxy_marshal_constructor)
++#define wl_proxy_marshal_constructor_versioned (*WAYLAND_wl_proxy_marshal_constructor_versioned)
+ 
+ #define wl_seat_interface (*WAYLAND_wl_seat_interface)
+ #define wl_surface_interface (*WAYLAND_wl_surface_interface)
+diff --git a/src/video/wayland/SDL_waylandsym.h b/src/video/wayland/SDL_waylandsym.h
+index c3b4fa5..b9a0d97 100644
+--- a/src/video/wayland/SDL_waylandsym.h
++++ b/src/video/wayland/SDL_waylandsym.h
+@@ -55,6 +55,10 @@ SDL_WAYLAND_SYM(void, wl_list_insert_list, (struct wl_list *, struct wl_list *))
+ SDL_WAYLAND_MODULE(WAYLAND_CLIENT_1_4)
+ SDL_WAYLAND_SYM(struct wl_proxy *, wl_proxy_marshal_constructor, (struct wl_proxy *, uint32_t opcode, const struct wl_interface *interface, ...))
+ 
++/* These functions are available in Wayland >= 1.10 */
++SDL_WAYLAND_MODULE(WAYLAND_CLIENT_1_10)
++SDL_WAYLAND_SYM(struct wl_proxy *, wl_proxy_marshal_constructor_versioned, (struct wl_proxy *proxy, uint32_t opcode, const struct wl_interface *interface, uint32_t version, ...))
++
+ SDL_WAYLAND_INTERFACE(wl_seat_interface)
+ SDL_WAYLAND_INTERFACE(wl_surface_interface)
+ SDL_WAYLAND_INTERFACE(wl_shm_pool_interface)
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.4.bb b/import-layers/yocto-poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.4.bb
index 4282307..844ff33 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.4.bb
@@ -15,7 +15,9 @@
 DEPENDS_class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/nativesdk-libx11 nativesdk-libxrandr nativesdk-libxrender nativesdk-libxext', '', d)}"
 
 SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz \
-           file://linkage.patch"
+           file://linkage.patch \
+           file://0001-src-video-make-it-compatible-with-wayland-1.10.patch \
+"
 
 S = "${WORKDIR}/SDL2-${PV}"
 
@@ -44,7 +46,7 @@
     ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
 "
 PACKAGECONFIG[alsa]       = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib,"
-PACKAGECONFIG[directfb]   = "--enable-video-directfb --disable-video-directfb,directfb"
+PACKAGECONFIG[directfb]   = "--enable-video-directfb,--disable-video-directfb,directfb"
 PACKAGECONFIG[gles2]      = "--enable-video-opengles,--disable-video-opengles,virtual/libgles2"
 PACKAGECONFIG[opengl]     = "--enable-video-opengl,--disable-video-opengl,virtual/libgl"
 PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/MIT-style-license b/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/MIT-style-license
deleted file mode 100644
index 628de98..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/MIT-style-license
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright © 2001 Red Hat, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Red Hat not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission.  Red Hat makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author:  Owen Taylor, Red Hat, Inc.
- */
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/link-x11.patch b/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/link-x11.patch
deleted file mode 100644
index d08d0d5..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/link-x11.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: Xsettings-client-0.10/Makefile.am
-===================================================================
---- Xsettings-client-0.10.orig/Makefile.am	2008-02-07 14:49:54.000000000 +0000
-+++ Xsettings-client-0.10/Makefile.am	2008-02-07 14:50:00.000000000 +0000
-@@ -9,4 +9,4 @@
- 
- libXsettings_client_la_SOURCES= $(source_c) $(source_h)
- 
--libXsettings_client_la_LIBADD      = @X_LIBS@
-\ No newline at end of file
-+libXsettings_client_la_LIBADD      = @X_LIBS@ -lX11
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/obsolete_automake_macros.patch b/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/obsolete_automake_macros.patch
deleted file mode 100644
index 905d08e..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client/obsolete_automake_macros.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Pending
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurd Xsettings-client-0.10/configure.ac Xsettings-client-0.10/configure.ac
---- Xsettings-client-0.10/configure.ac	2003-03-28 12:39:51.000000000 +0200
-+++ Xsettings-client-0.10/configure.ac	2013-01-11 07:37:21.491597743 +0200
-@@ -1,7 +1,7 @@
- # Process this file with autoconf to produce a configure script.
- AC_INIT(xsettings-client.c)
- AM_INIT_AUTOMAKE(Xsettings-client, 0.10)
--AM_CONFIG_HEADER(config.h)
-+AC_CONFIG_HEADERS(config.h)
-
- CFLAGS="-Os -Wall"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb b/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb
deleted file mode 100644
index 67c5e27..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "utility functions for the Xsettings protocol"
-DESCRIPTION = "Libraries used for applications making use of the Xsettings configuration \
-setting propagation protocol. Controls setting of double click timeout, drag-and-drop \
-threshold, and default foreground and background colors for all applications running within a \
-desktop."
-HOMEPAGE = "http://matchbox-project.org/sources/optional-dependencies/"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-SECTION = "x/libs"
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
-                    file://xsettings-client.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
-                    file://xsettings-common.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b"
-DEPENDS = "virtual/libx11"
-
-PR = "r5"
-
-headers = "xsettings-common.h xsettings-client.h"
-
-SRC_URI = "http://downloads.yoctoproject.org/releases/matchbox/optional-dependencies/Xsettings-client-0.10.tar.gz \
-        file://MIT-style-license \
-        file://link-x11.patch;apply=yes \
-        file://obsolete_automake_macros.patch \
-"
-
-SRC_URI[md5sum] = "c14aa9db6c097e0306dac97fb7da1add"
-SRC_URI[sha256sum] = "f274a4bc969ae192994a856b7f786c6fce96bae77f96c1c2b71dd97599e06e43"
-
-S = "${WORKDIR}/Xsettings-client-0.10"
-
-inherit autotools gettext distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-do_configure_prepend() {
-    # This package doesn't ship with its own COPYING file and
-    # autotools will install a GPLv2 one instead of the actual MIT-style license here.
-    # Add the correct license here to avoid confusion.
-    cp -f ${WORKDIR}/MIT-style-license ${S}/COPYING
-}
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.1.bb
new file mode 100644
index 0000000..c3d2d23
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.1.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Matchbox lightweight window manager"
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=a7e844465edbcf79c282369f93caa835 \
+                    file://src/main.c;endline=21;md5=3e5d9f832b527b0d72dbe8e3c4c60b95 \
+                    file://src/wm.c;endline=21;md5=8dc9d24477d87ef5dfbc2e4927146aab"
+
+SECTION = "x11/wm"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification expat gconf libxcursor libxfixes"
+
+# SRCREV tagged 1.2.1
+SRCREV = "9fd1806dfa7c8f2202db18b7bc880857a3019f8c"
+SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager \
+           file://kbdconfig"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+FILES_${PN} = "${bindir}/* \
+               ${datadir}/matchbox \
+               ${sysconfdir}/matchbox \
+               ${datadir}/themes/blondie/matchbox \
+               ${datadir}/themes/Default/matchbox \
+               ${datadir}/themes/MBOpus/matchbox"
+
+EXTRA_OECONF = " --enable-startup-notification \
+                 --disable-xrm \
+                 --enable-expat \
+                 --with-expat-lib=${STAGING_LIBDIR} \
+                 --with-expat-includes=${STAGING_INCDIR}"
+
+do_install_prepend() {
+	install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
+}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb
deleted file mode 100644
index aa76828..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Matchbox lightweight window manager"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=a7e844465edbcf79c282369f93caa835 \
-                    file://src/main.c;endline=21;md5=3e5d9f832b527b0d72dbe8e3c4c60b95 \
-                    file://src/wm.c;endline=21;md5=8dc9d24477d87ef5dfbc2e4927146aab"
-
-SECTION = "x11/wm"
-DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification expat gconf libxcursor libxfixes"
-
-SRCREV = "8178e70d5c742c4cd63b51df228cc8aa3594d518"
-PV = "1.2+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager \
-           file://kbdconfig"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-FILES_${PN} = "${bindir}/* \
-               ${datadir}/matchbox \
-               ${sysconfdir}/matchbox \
-               ${datadir}/themes/blondie/matchbox \
-               ${datadir}/themes/Default/matchbox \
-               ${datadir}/themes/MBOpus/matchbox"
-
-EXTRA_OECONF = " --enable-startup-notification \
-                 --disable-xrm \
-                 --enable-expat \
-                 --with-expat-lib=${STAGING_LIBDIR} \
-                 --with-expat-includes=${STAGING_INCDIR}"
-
-do_install_prepend() {
-	install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
-}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/menu-cache/menu-cache_1.0.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/menu-cache/menu-cache_1.0.1.bb
index eb80cd3bb..a1a8e26 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/menu-cache/menu-cache_1.0.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/menu-cache/menu-cache_1.0.1.bb
@@ -6,7 +6,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=0964c689fcf4c21c6797ea87408416b6"
 
 SECTION = "x11/libs"
-DEPENDS = "glib-2.0 intltool-native libfm-extra"
+DEPENDS = "glib-2.0 libfm-extra"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/menu-cache-${PV}.tar.xz"
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/files/clang-compile-PR89599.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/files/clang-compile-PR89599.patch
new file mode 100644
index 0000000..48bd325
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/files/clang-compile-PR89599.patch
@@ -0,0 +1,116 @@
+From 5ec140c17b54c25920091501b665b9aa809cc5e8 Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Mon, 11 Jul 2016 10:44:25 -0700
+Subject: mapi: Massage code to allow clang to compile.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+According to https://llvm.org/bugs/show_bug.cgi?id=19778#c3 this code
+was violating the spec, resulting in it failing to compile.
+
+Cc: mesa-stable@lists.freedesktop.org
+Co-authored-by: Tomasz Paweł Gajc <tpgxyz@gmail.com>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89599
+Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
+
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+diff --git a/configure.ac b/configure.ac
+index 3799d8d..1ca8359 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -226,6 +226,7 @@ AX_GCC_FUNC_ATTRIBUTE([packed])
+ AX_GCC_FUNC_ATTRIBUTE([pure])
+ AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
+ AX_GCC_FUNC_ATTRIBUTE([unused])
++AX_GCC_FUNC_ATTRIBUTE([visibility])
+ AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
+ AX_GCC_FUNC_ATTRIBUTE([weak])
+ 
+diff --git a/src/mapi/entry_x86-64_tls.h b/src/mapi/entry_x86-64_tls.h
+index 38faccc..c5262a1 100644
+--- a/src/mapi/entry_x86-64_tls.h
++++ b/src/mapi/entry_x86-64_tls.h
+@@ -25,6 +25,11 @@
+  *    Chia-I Wu <olv@lunarg.com>
+  */
+ 
++#ifdef HAVE_FUNC_ATTRIBUTE_VISIBIITY
++#define HIDDEN __attribute__((visibility("hidden")))
++#else
++#define HIDDEN
++#endif
+ 
+ __asm__(".text\n"
+         ".balign 32\n"
+@@ -54,8 +59,8 @@ entry_patch_public(void)
+ {
+ }
+ 
+-static char
+-x86_64_entry_start[];
++extern char
++x86_64_entry_start[] HIDDEN;
+ 
+ mapi_func
+ entry_get_public(int slot)
+diff --git a/src/mapi/entry_x86_tls.h b/src/mapi/entry_x86_tls.h
+index 46d2ece..231b409 100644
+--- a/src/mapi/entry_x86_tls.h
++++ b/src/mapi/entry_x86_tls.h
+@@ -27,6 +27,12 @@
+ 
+ #include <string.h>
+ 
++#ifdef HAVE_FUNC_ATTRIBUTE_VISIBIITY
++#define HIDDEN __attribute__((visibility("hidden")))
++#else
++#define HIDDEN
++#endif
++
+ __asm__(".text");
+ 
+ __asm__("x86_current_tls:\n\t"
+@@ -71,8 +77,8 @@ __asm__(".text");
+ extern unsigned long
+ x86_current_tls();
+ 
+-static char x86_entry_start[];
+-static char x86_entry_end[];
++extern char x86_entry_start[] HIDDEN;
++extern char x86_entry_end[] HIDDEN;
+ 
+ void
+ entry_patch_public(void)
+diff --git a/src/mapi/entry_x86_tsd.h b/src/mapi/entry_x86_tsd.h
+index ea7bacb..03d9735 100644
+--- a/src/mapi/entry_x86_tsd.h
++++ b/src/mapi/entry_x86_tsd.h
+@@ -25,6 +25,11 @@
+  *    Chia-I Wu <olv@lunarg.com>
+  */
+ 
++#ifdef HAVE_FUNC_ATTRIBUTE_VISIBIITY
++#define HIDDEN __attribute__((visibility("hidden")))
++#else
++#define HIDDEN
++#endif
+ 
+ #define X86_ENTRY_SIZE 32
+ 
+@@ -58,8 +63,8 @@ __asm__(".balign 32\n"
+ #include <string.h>
+ #include "u_execmem.h"
+ 
+-static const char x86_entry_start[];
+-static const char x86_entry_end[];
++extern const char x86_entry_start[] HIDDEN;
++extern const char x86_entry_end[] HIDDEN;
+ 
+ void
+ entry_patch_public(void)
+-- 
+cgit v0.10.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch
new file mode 100644
index 0000000..d2d6755
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch
@@ -0,0 +1,29 @@
+Configure checks for compiler to be gcc and then it enables asm_offsets
+generation. see
+
+https://cgit.freedesktop.org/mesa/mesa/commit/?id=73c9b4b0e05fc66629ba250846948dc55c0e7a0d
+
+However, we missed the check when enabling this on cross compilation
+when architecture for both host and target is x86
+
+Fixes errors like
+./gen_matypes > matypes.h
+/bin/bash: ./gen_matypes: No such file or directory
+
+-Khem
+
+Upstream-Status: Submitted
+
+Index: mesa-12.0.1/configure.ac
+===================================================================
+--- mesa-12.0.1.orig/configure.ac
++++ mesa-12.0.1/configure.ac
+@@ -732,7 +732,7 @@ test "x$enable_asm" = xno && AC_MSG_RESU
+ if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
+     case "$host_cpu" in
+     i?86 | x86_64 | amd64)
+-        if test "x$host_cpu" != "x$target_cpu"; then
++        if test "x$host_cpu" != "x$target_cpu" -o "x$acv_mesa_CLANG" = xyes; then
+             enable_asm=no
+             AC_MSG_RESULT([no, cross compiling])
+         fi
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch
deleted file mode 100644
index 09054cb..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 36829a8d7ad2888515fbee95c2a70b3d636d7538 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Wed, 9 Jul 2014 14:30:33 +0200
-Subject: [PATCH 2/9] Correctly implement with AC_WITH(glut) so that
- --without-glut works.
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Upstream-Status: Submitted (https://patchwork.freedesktop.org/patch/64417/)
-
----
- configure.ac | 26 +++++++++++++++-----------
- 1 file changed, 15 insertions(+), 11 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index c4ee12b..9445424 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -67,21 +67,25 @@ DEMO_CFLAGS="$DEMO_CFLAGS $GL_CFLAGS"
- DEMO_LIBS="$DEMO_LIBS $GL_LIBS"
- 
- dnl Check for GLUT
--GLUT_CFLAGS=""
--GLUT_LIBS=-lglut
--glut_enabled=yes
-+glut_enabled=no
- AC_ARG_WITH([glut],
- 	[AS_HELP_STRING([--with-glut=DIR],
- 			[glut install directory])],
- 	[GLUT_CFLAGS="-I$withval/include"
--	 GLUT_LIBS="-L$withval/lib -lglut"])
--AC_CHECK_HEADER([GL/glut.h],
--		[],
--		[glut_enabled=no])
--AC_CHECK_LIB([glut],
--		[glutInit],
--		[],
--		[glut_enabled=no])
-+	 GLUT_LIBS="-L$withval/lib -lglut"],
-+	[GLUT_CFLAGS=""
-+	 GLUT_LIBS="-lglut"]
-+        )
-+AS_IF([test "x$with_glut" != xno],
-+      [AC_CHECK_HEADER([GL/glut.h],
-+                       [],
-+                       [glut_enabled=no])
-+       AC_CHECK_LIB([glut],
-+                    [glutInit],
-+                    [],
-+                    [glut_enabled=no])
-+       glut_enabled=yes
-+])
- 
- dnl Check for FreeGLUT 2.6 or later
- AC_EGREP_HEADER([glutInitContextProfile],
--- 
-2.0.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch
index 6b58c2b..f6b59a1 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch
@@ -1,8 +1,7 @@
-From b25e9c675cf560b8b037dc855c6b3b1d09957867 Mon Sep 17 00:00:00 2001
+From 779438770bedf3d53e6ad8f7cd6889b7f50daf3b Mon Sep 17 00:00:00 2001
 From: Martin Jansa <Martin.Jansa@gmail.com>
 Date: Wed, 9 Jul 2014 14:23:41 +0200
-Subject: [PATCH 3/9] configure: Allow to disable demos which require GLEW or
- GLU
+Subject: [PATCH] configure: Allow to disable demos which require GLEW or GLU
 
 * in some systems without X11 support we don't have GLEW, but
   mesa-demos are still useful
@@ -10,17 +9,20 @@
 Upstream-Status: Pending
 
 Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+Port to 8.3.0
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
 ---
  configure.ac                  | 49 ++++++++++++++++++++---------
- src/Makefile.am               | 14 ++++++---
+ src/Makefile.am               | 18 ++++++++---
  src/demos/Makefile.am         | 73 ++++++++++++++++++++++++-------------------
  src/egl/Makefile.am           |  8 +++--
- src/egl/opengles1/Makefile.am | 44 +++++++++++++++-----------
- src/egl/opengles2/Makefile.am | 33 ++++++++++---------
- 6 files changed, 135 insertions(+), 86 deletions(-)
+ src/egl/opengles1/Makefile.am | 10 ++++--
+ src/egl/opengles2/Makefile.am | 29 ++++++++---------
+ 6 files changed, 117 insertions(+), 70 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 9445424..bc4c8d1 100644
+index 0525b09..28834cd 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -93,25 +93,44 @@ AC_EGREP_HEADER([glutInitContextProfile],
@@ -92,10 +94,11 @@
  AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes")
  AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes")
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 1647d64..754c47c 100644
+index 1647d64..8b89dee 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -23,14 +23,18 @@
+@@ -22,15 +22,19 @@
+ # Authors:
  #    Eric Anholt <eric@anholt.net>
  
 +if HAVE_GLEW
@@ -116,7 +119,7 @@
  	objviewer \
  	osdemos \
  	perf \
-@@ -40,8 +39,12 @@ SUBDIRS = \
+@@ -40,8 +44,12 @@ SUBDIRS = \
  	slang \
  	tests \
  	tools \
@@ -289,10 +292,10 @@
 +	openvg
 +endif
 diff --git a/src/egl/opengles1/Makefile.am b/src/egl/opengles1/Makefile.am
-index 7a9828d..3455e75 100644
+index fa397c2..21853e8 100644
 --- a/src/egl/opengles1/Makefile.am
 +++ b/src/egl/opengles1/Makefile.am
-@@ -36,28 +36,43 @@ AM_LDFLAGS = \
+@@ -36,9 +36,12 @@ AM_LDFLAGS = \
  	$(EGL_LIBS) \
  	-lm
  
@@ -301,42 +304,13 @@
  if HAVE_EGL
  if HAVE_GLESV1
 -noinst_PROGRAMS = \
--	bindtex \
--	clear \
-+noinst_PROGRAMS += \
- 	drawtex_screen \
-+	gears_screen \
-+	torus_screen \
-+	tri_screen
-+
-+drawtex_screen_SOURCES = drawtex.c
-+gears_screen_SOURCES = gears.c
-+torus_screen_SOURCES = torus.c
-+tri_screen_SOURCES = tri.c
-+
-+drawtex_screen_LDADD = ../eglut/libeglut_screen.la
-+gears_screen_LDADD = ../eglut/libeglut_screen.la
-+torus_screen_LDADD = ../eglut/libeglut_screen.la
-+tri_screen_LDADD = ../eglut/libeglut_screen.la
-+
 +if HAVE_X11
-+noinst_PROGRAMS += \
-+	clear
-+
 +bin_PROGRAMS = \
-+	bindtex \
+ 	bindtex \
+ 	clear \
  	drawtex_x11 \
- 	eglfbdev \
- 	es1_info \
--	gears_screen \
- 	gears_x11 \
- 	msaa \
- 	pbuffer\
- 	render_tex \
- 	texture_from_pixmap \
--	torus_screen \
+@@ -52,8 +55,6 @@ noinst_PROGRAMS = \
  	torus_x11 \
--	tri_screen \
  	tri_x11 \
  	two_win
 -endif
@@ -344,26 +318,7 @@
  
  bindtex_LDADD = $(X11_LIBS)
  es1_info_LDADD = $(X11_LIBS)
-@@ -71,22 +86,15 @@ two_win_LDADD = $(X11_LIBS)
- clear_LDADD = ../eglut/libeglut_x11.la $(EGL_LIBS) $(X11_LIBS)
- clear_LDFLAGS =
- 
--drawtex_screen_SOURCES = drawtex.c
--gears_screen_SOURCES = gears.c
--torus_screen_SOURCES = torus.c
--tri_screen_SOURCES = tri.c
--
- drawtex_x11_SOURCES = drawtex.c
- gears_x11_SOURCES = gears.c
- torus_x11_SOURCES = torus.c
- tri_x11_SOURCES = tri.c
- 
--drawtex_screen_LDADD = ../eglut/libeglut_screen.la
--gears_screen_LDADD = ../eglut/libeglut_screen.la
--torus_screen_LDADD = ../eglut/libeglut_screen.la
--tri_screen_LDADD = ../eglut/libeglut_screen.la
--
- drawtex_x11_LDADD = ../eglut/libeglut_x11.la
+@@ -76,3 +77,6 @@ drawtex_x11_LDADD = ../eglut/libeglut_x11.la
  gears_x11_LDADD = ../eglut/libeglut_x11.la
  torus_x11_LDADD = ../eglut/libeglut_x11.la
  tri_x11_LDADD = ../eglut/libeglut_x11.la
@@ -371,35 +326,35 @@
 +endif
 +endif
 diff --git a/src/egl/opengles2/Makefile.am b/src/egl/opengles2/Makefile.am
-index 41c1b80..74af460 100644
+index b80ba50..17f8d49 100644
 --- a/src/egl/opengles2/Makefile.am
 +++ b/src/egl/opengles2/Makefile.am
-@@ -36,26 +36,29 @@ AM_LDFLAGS = \
+@@ -33,27 +33,28 @@ AM_LDFLAGS = \
+ 	$(EGL_LIBS) \
+ 	-lm
+ 
++bin_PROGRAMS =
++
  if HAVE_EGL
  if HAVE_GLESV2
- bin_PROGRAMS = \
+-bin_PROGRAMS =
+-if HAVE_X11
+-bin_PROGRAMS += \
 -	es2_info \
--	es2gears_screen \
 -	es2gears_x11 \
 -	es2tri
-+	es2gears_screen
-+
-+es2gears_screen_SOURCES = es2gears.c
-+es2gears_screen_LDADD = ../eglut/libeglut_screen.la
-+
+-endif
  if HAVE_WAYLAND
  bin_PROGRAMS += es2gears_wayland
 -endif
 -endif
--endif
++
++es2gears_wayland_SOURCES = es2gears.c
++es2gears_wayland_LDADD = ../eglut/libeglut_wayland.la
+ endif
  
 -es2_info_LDADD = $(X11_LIBS)
 -es2tri_LDADD = $(X11_LIBS)
-+es2gears_wayland_SOURCES = es2gears.c
-+es2gears_wayland_LDADD = ../eglut/libeglut_wayland.la
-+endif
- 
--es2gears_screen_SOURCES = es2gears.c
 +if HAVE_X11
 +bin_PROGRAMS += \
 +	es2tri \
@@ -409,8 +364,6 @@
 +es2_info_LDADD = $(X11_LIBS)
  es2gears_x11_SOURCES = es2gears.c
 -
--es2gears_screen_LDADD = ../eglut/libeglut_screen.la
--
  es2gears_x11_LDADD = ../eglut/libeglut_x11.la
 +es2tri_LDADD = $(X11_LIBS)
 +endif
@@ -420,5 +373,5 @@
 -es2gears_wayland_SOURCES = es2gears.c
 -es2gears_wayland_LDADD = ../eglut/libeglut_wayland.la
 -- 
-2.0.0
+2.1.4
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch
deleted file mode 100644
index aac2a37..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch
+++ /dev/null
@@ -1,267 +0,0 @@
-From 453353a221de9c64479f4372565d2cd8591b36cc Mon Sep 17 00:00:00 2001
-From: Frank Binns <frank.binns@imgtec.com>
-Date: Fri, 29 Jun 2012 11:26:04 +0100
-Subject: [PATCH 5/9] Fix build when EGL_MESA_screen_surface extension isn't
- present
-
-The EGL demos won't build against EGL implementations that don't support
-the EGL_MESA_screen_surface extension. Fix this, in most cases, by
-wrapping relevant bits of code in #ifdef EGL_MESA_screen_surface.
-
-Signed-off-by: Frank Binns <frank.binns@imgtec.com>
-
-Applied and fixed up in Yocto by...
-
-Integrated-by: Tom Zanussi <tom.zanussi@linux.intel.com>
-
-Upstream-Status: Pending
----
- src/egl/eglut/eglut.c        |  9 +++++++--
- src/egl/eglut/eglut_screen.c | 14 ++++++++++++++
- src/egl/opengl/demo1.c       |  2 ++
- src/egl/opengl/demo2.c       |  7 ++++++-
- src/egl/opengl/demo3.c       |  7 ++++++-
- 5 files changed, 35 insertions(+), 4 deletions(-)
-
-diff --git a/src/egl/eglut/eglut.c b/src/egl/eglut/eglut.c
-index 2ee6f15..f6a2ad4 100644
---- a/src/egl/eglut/eglut.c
-+++ b/src/egl/eglut/eglut.c
-@@ -76,8 +76,9 @@ _eglutNow(void)
- static void
- _eglutDestroyWindow(struct eglut_window *win)
- {
--   if (_eglut->surface_type != EGL_PBUFFER_BIT &&
--       _eglut->surface_type != EGL_SCREEN_BIT_MESA)
-+
-+   if (_eglut->surface_type == EGL_WINDOW_BIT ||
-+       _eglut->surface_type == EGL_PIXMAP_BIT)
-       eglDestroySurface(_eglut->dpy, win->surface);
- 
-    _eglutNativeFiniWindow(win);
-@@ -175,7 +176,9 @@ _eglutCreateWindow(const char *title, int x, int y, int w, int h)
-             win->config, win->native.u.pixmap, NULL);
-       break;
-    case EGL_PBUFFER_BIT:
-+#ifdef EGL_MESA_screen_surface
-    case EGL_SCREEN_BIT_MESA:
-+#endif
-       win->surface = win->native.u.surface;
-       break;
-    default:
-@@ -289,8 +292,10 @@ eglutDestroyWindow(int win)
-    if (window->index != win)
-       return;
- 
-+#ifdef EGL_MESA_screen_surface
-    /* XXX it causes some bug in st/egl KMS backend */
-    if ( _eglut->surface_type != EGL_SCREEN_BIT_MESA)
-+#endif
-       eglMakeCurrent(_eglut->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
- 
-    _eglutDestroyWindow(_eglut->current);
-diff --git a/src/egl/eglut/eglut_screen.c b/src/egl/eglut/eglut_screen.c
-index 021a8f1..094a4e2 100644
---- a/src/egl/eglut/eglut_screen.c
-+++ b/src/egl/eglut/eglut_screen.c
-@@ -35,26 +35,33 @@
- 
- #define MAX_MODES 100
- 
-+#ifdef EGL_MESA_screen_surface
- static EGLScreenMESA kms_screen;
- static EGLModeMESA kms_mode;
- static EGLint kms_width, kms_height;
-+#endif
- 
- void
- _eglutNativeInitDisplay(void)
- {
-+#ifdef EGL_MESA_screen_surface
-    _eglut->native_dpy = EGL_DEFAULT_DISPLAY;
-    _eglut->surface_type = EGL_SCREEN_BIT_MESA;
-+#endif
- }
- 
- void
- _eglutNativeFiniDisplay(void)
- {
-+#ifdef EGL_MESA_screen_surface
-    kms_screen = 0;
-    kms_mode = 0;
-    kms_width = 0;
-    kms_height = 0;
-+#endif
- }
- 
-+#ifdef EGL_MESA_screen_surface
- static void
- init_kms(void)
- {
-@@ -94,19 +101,23 @@ init_kms(void)
-    kms_width = width;
-    kms_height = height;
- }
-+#endif
- 
- void
- _eglutNativeInitWindow(struct eglut_window *win, const char *title,
-                        int x, int y, int w, int h)
- {
-+#ifdef EGL_MESA_screen_surface
-    EGLint surf_attribs[16];
-    EGLint i;
-+#endif
-    const char *exts;
- 
-    exts = eglQueryString(_eglut->dpy, EGL_EXTENSIONS);
-    if (!exts || !strstr(exts, "EGL_MESA_screen_surface"))
-       _eglutFatal("EGL_MESA_screen_surface is not supported\n");
- 
-+#ifdef EGL_MESA_screen_surface
-    init_kms();
- 
-    i = 0;
-@@ -128,14 +139,17 @@ _eglutNativeInitWindow(struct eglut_window *win, const char *title,
- 
-    win->native.width = kms_width;
-    win->native.height = kms_height;
-+#endif
- }
- 
- void
- _eglutNativeFiniWindow(struct eglut_window *win)
- {
-+#ifdef EGL_MESA_screen_surface
-    eglShowScreenSurfaceMESA(_eglut->dpy,
-          kms_screen, EGL_NO_SURFACE, 0);
-    eglDestroySurface(_eglut->dpy, win->native.u.surface);
-+#endif
- }
- 
- void
-diff --git a/src/egl/opengl/demo1.c b/src/egl/opengl/demo1.c
-index d892734..3a3564c 100644
---- a/src/egl/opengl/demo1.c
-+++ b/src/egl/opengl/demo1.c
-@@ -18,6 +18,7 @@
- static void
- TestScreens(EGLDisplay dpy)
- {
-+#ifdef EGL_MESA_screen_surface
- #define MAX 8
-    EGLScreenMESA screens[MAX];
-    EGLint numScreens;
-@@ -28,6 +29,7 @@ TestScreens(EGLDisplay dpy)
-    for (i = 0; i < numScreens; i++) {
-       printf(" Screen %d handle: %d\n", i, (int) screens[i]);
-    }
-+#endif
- }
- 
- /**
-diff --git a/src/egl/opengl/demo2.c b/src/egl/opengl/demo2.c
-index 505b474..bfef59e 100644
---- a/src/egl/opengl/demo2.c
-+++ b/src/egl/opengl/demo2.c
-@@ -16,6 +16,7 @@
- 
- /*#define FRONTBUFFER*/
- 
-+#ifdef EGL_MESA_screen_surface
- static void _subset_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2,
-                           GLfloat r, GLfloat g, GLfloat b)
- {
-@@ -95,12 +96,13 @@ TestScreens(EGLDisplay dpy)
-       printf(" Screen %d handle: %d\n", i, (int) screens[i]);
-    }
- }
--
-+#endif
- 
- int
- main(int argc, char *argv[])
- {
-    int maj, min;
-+#ifdef EGL_MESA_screen_surface
-    EGLContext ctx;
-    EGLSurface pbuffer, screen_surf;
-    EGLConfig configs[10];
-@@ -115,6 +117,7 @@ main(int argc, char *argv[])
-    EGLModeMESA mode;
-    EGLScreenMESA screen;
-    EGLint count;
-+#endif
- 
-    EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-    assert(d);
-@@ -132,6 +135,7 @@ main(int argc, char *argv[])
-       exit(1);
-    }
- 
-+#ifdef EGL_MESA_screen_surface
-    eglGetConfigs(d, configs, 10, &numConfigs);
-    printf("Got %d EGL configs:\n", numConfigs);
-    for (i = 0; i < numConfigs; i++) {
-@@ -211,6 +215,7 @@ main(int argc, char *argv[])
-    eglDestroySurface(d, pbuffer);
-    eglDestroyContext(d, ctx);
-    eglTerminate(d);
-+#endif
- 
-    return 0;
- }
-diff --git a/src/egl/opengl/demo3.c b/src/egl/opengl/demo3.c
-index f84ca23..31b5d8b 100644
---- a/src/egl/opengl/demo3.c
-+++ b/src/egl/opengl/demo3.c
-@@ -46,7 +46,7 @@ GLubyte OpenGL_bits[] = {
-    0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00, 
- };
- 
--
-+#ifdef EGL_MESA_screen_surface
- static void Init(void)
- {
- 
-@@ -551,11 +551,13 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height)
-       fclose(f);
-    }
- }
-+#endif
- 
- int
- main(int argc, char *argv[])
- {
-    int maj, min;
-+#ifdef EGL_MESA_screen_surface
-    EGLContext ctx;
-    EGLSurface screen_surf;
-    EGLConfig configs[10];
-@@ -566,6 +568,7 @@ main(int argc, char *argv[])
-    const GLubyte *bitmap;
-    EGLint screenAttribs[32];
-    EGLint i;
-+#endif
- 
-    EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-    assert(d);
-@@ -583,6 +586,7 @@ main(int argc, char *argv[])
-       exit(1);
-    }
- 
-+#ifdef EGL_MESA_screen_surface
-    eglGetConfigs(d, configs, 10, &numConfigs);
-    eglGetScreensMESA(d, &screen, 1, &count);
-    eglGetModesMESA(d, screen, &mode, 1, &count);
-@@ -642,6 +646,7 @@ main(int argc, char *argv[])
-    eglDestroySurface(d, screen_surf);
-    eglDestroyContext(d, ctx);
-    eglTerminate(d);
-+#endif
- 
-    return 0;
- }
--- 
-2.0.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch
deleted file mode 100644
index 12e0805..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 6a19dba1d275579c73e7763b0554410ff4e1e650 Mon Sep 17 00:00:00 2001
-From: Frank Binns <frank.binns@imgtec.com>
-Date: Fri, 29 Jun 2012 12:00:26 +0100
-Subject: [PATCH 6/9] Query display for EGL_MESA_screen_surface extension
- before using it
-
-This code makes heavy use of the EGL_MESA_screen_surface extension so
-check the display to determine if it's supported by the underlying EGL
-implementation. If it doesn't then bail.
-
-Signed-off-by: Frank Binns <frank.binns@imgtec.com>
-
-Applied and fixed up in Yocto by...
-
-Integrated-by: Tom Zanussi <tom.zanussi@linux.intel.com>
-
-Upstream-Status: Pending
----
- src/egl/opengl/demo1.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/egl/opengl/demo1.c b/src/egl/opengl/demo1.c
-index 3a3564c..06e2138 100644
---- a/src/egl/opengl/demo1.c
-+++ b/src/egl/opengl/demo1.c
-@@ -110,6 +110,12 @@ main(int argc, char *argv[])
-    printf("EGL version = %d.%d\n", maj, min);
-    printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR));
- 
-+   if (!strstr(eglQueryString(d, EGL_EXTENSIONS),
-+               "EGL_MESA_screen_surface")) {
-+      printf("EGL_MESA_screen_surface is not supported\n");
-+      exit(1);
-+   }
-+
-    eglGetConfigs(d, NULL, 0, &numConfigs);
-    configs = malloc(sizeof(*configs) *numConfigs);
-    eglGetConfigs(d, configs, numConfigs, &numConfigs);
--- 
-2.0.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch
index 89d2fac..6b676cd 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch
@@ -1,11 +1,13 @@
-From d930b2da57f7c9efb80c8cef8f8adad15bbbc0d3 Mon Sep 17 00:00:00 2001
+From c59e286fa4e818ca015dd40e4725636309970ea8 Mon Sep 17 00:00:00 2001
 From: Martin Jansa <Martin.Jansa@gmail.com>
 Date: Thu, 10 Jul 2014 14:30:52 +0200
-Subject: [PATCH 7/9] Install few more test programs
+Subject: [PATCH] Install few more test programs
 
 Upstream-Status: Pending
 
 Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
 ---
  src/egl/opengl/Makefile.am    |  2 +-
  src/egl/opengles1/Makefile.am | 10 ++++------
@@ -13,7 +15,7 @@
  3 files changed, 6 insertions(+), 8 deletions(-)
 
 diff --git a/src/egl/opengl/Makefile.am b/src/egl/opengl/Makefile.am
-index 0c7228f..87b2f1a 100644
+index fe7faa9..3e48141 100644
 --- a/src/egl/opengl/Makefile.am
 +++ b/src/egl/opengl/Makefile.am
 @@ -50,7 +50,7 @@ endif
@@ -22,42 +24,11 @@
  if HAVE_EGL
 -noinst_PROGRAMS = \
 +bin_PROGRAMS = \
- 	demo1 \
- 	demo2 \
- 	demo3 \
-diff --git a/src/egl/opengles1/Makefile.am b/src/egl/opengles1/Makefile.am
-index 3455e75..516e516 100644
---- a/src/egl/opengles1/Makefile.am
-+++ b/src/egl/opengles1/Makefile.am
-@@ -36,11 +36,11 @@ AM_LDFLAGS = \
- 	$(EGL_LIBS) \
- 	-lm
- 
--noinst_PROGRAMS =
-+bin_PROGRAMS =
- 
- if HAVE_EGL
- if HAVE_GLESV1
--noinst_PROGRAMS += \
-+bin_PROGRAMS += \
- 	drawtex_screen \
- 	gears_screen \
- 	torus_screen \
-@@ -57,10 +57,8 @@ torus_screen_LDADD = ../eglut/libeglut_screen.la
- tri_screen_LDADD = ../eglut/libeglut_screen.la
- 
- if HAVE_X11
--noinst_PROGRAMS += \
--	clear
--
--bin_PROGRAMS = \
-+bin_PROGRAMS += \
-+	clear \
- 	bindtex \
- 	drawtex_x11 \
- 	eglfbdev \
+ 	eglinfo \
+ 	peglgears \
+ 	$(EGL_DRM_DEMOS) \
 diff --git a/src/egl/openvg/Makefile.am b/src/egl/openvg/Makefile.am
-index 7318a43..b545225 100644
+index b0f1212..5fd1cf8 100644
 --- a/src/egl/openvg/Makefile.am
 +++ b/src/egl/openvg/Makefile.am
 @@ -49,7 +49,7 @@ endif
@@ -66,9 +37,9 @@
  if HAVE_VG
 -noinst_PROGRAMS = \
 +bin_PROGRAMS = \
- 	lion_screen \
- 	sp_screen \
  	$(EGL_X11_DEMOS)
+ endif
+ endif
 -- 
-2.0.0
+2.1.4
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0010-sharedtex_mt-fix-rendering-thread-hang.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0010-sharedtex_mt-fix-rendering-thread-hang.patch
deleted file mode 100644
index 04e1b44..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0010-sharedtex_mt-fix-rendering-thread-hang.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 525fa9ded72d22b53c5eb366f61e2ac1d407a2db Mon Sep 17 00:00:00 2001
-From: Awais Belal <awais_belal@mentor.com>
-Date: Thu, 8 Oct 2015 13:49:31 +0500
-Subject: [PATCH] sharedtex_mt: fix rendering thread hang
-
-XNextEvent is a blocking call which locks up the display mutex
-this causes the rendering threads to hang when they try call
-glXSwapBuffers() as that tries to take the same mutex in
-underlying calls through XCopyArea().
-So we only go to XNextEvent when it has at least one event
-and we wouldn't lock indefinitely.
-
-Signed-off-by: Awais Belal <awais_belal@mentor.com>
-Upstream-Status: Backport (2b304e765695d385fd3bf414e6e444020bedb0a8)
-
----
- src/xdemos/sharedtex_mt.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/src/xdemos/sharedtex_mt.c b/src/xdemos/sharedtex_mt.c
-index a90903a..1d503c4 100644
---- a/src/xdemos/sharedtex_mt.c
-+++ b/src/xdemos/sharedtex_mt.c
-@@ -420,9 +420,14 @@ Resize(struct window *h, unsigned int width, unsigned int height)
- static void
- EventLoop(void)
- {
-+   int i;
-+   XEvent event;
-    while (1) {
--      int i;
--      XEvent event;
-+      /* Do we have an event? */
-+      if (XPending(gDpy) == 0) {
-+         usleep(10000);
-+         continue;
-+      }
-       XNextEvent(gDpy, &event);
-       for (i = 0; i < NumWindows; i++) {
- 	 struct window *h = &Windows[i];
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch
new file mode 100644
index 0000000..c687647
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch
@@ -0,0 +1,44 @@
+From 3aa84c47e88a4c38446ce1323abf6f2c77389104 Mon Sep 17 00:00:00 2001
+From: Prabhu <prabhu.sundararaj@freescale.com>
+Date: Mon, 16 Nov 2015 17:09:32 -0600
+Subject: [PATCH] mesa-demos: OpenVG demos with single frame need eglSwapBuffer
+
+sp and text demos rendering single frame. to display the
+single frame rendered needed a eglSwapBuffer to diplay to window.
+Hence added eglutPostRedisplay to display the frame
+
+Upstream-Status: Pending
+
+Signed-off-by: Prabhu <prabhu.sundararaj@freescale.com>
+---
+ src/egl/openvg/sp.c   | 1 +
+ src/egl/openvg/text.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/egl/openvg/sp.c b/src/egl/openvg/sp.c
+index a20c0a3..468e91e 100644
+--- a/src/egl/openvg/sp.c
++++ b/src/egl/openvg/sp.c
+@@ -500,6 +500,7 @@ draw(void)
+    }
+ 
+    vgFlush();
++   eglutPostRedisplay();
+ }
+ 
+ 
+diff --git a/src/egl/openvg/text.c b/src/egl/openvg/text.c
+index f5c6de8..492581c 100644
+--- a/src/egl/openvg/text.c
++++ b/src/egl/openvg/text.c
+@@ -360,6 +360,7 @@ display(void)
+ {
+    vgClear(0, 0, width, height);
+    glyph_string_draw(10.0, 10.0);
++   eglutPostRedisplay();
+ }
+ 
+ 
+-- 
+2.5.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch
new file mode 100644
index 0000000..e7be4df
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch
@@ -0,0 +1,62 @@
+From 322af294390a7f4e1524c5a79312be6cbebce988 Mon Sep 17 00:00:00 2001
+From: Awais Belal <awais_belal@mentor.com>
+Date: Wed, 11 Nov 2015 17:22:12 +0500
+Subject: [PATCH] only build GLX demos if needed
+
+There are platforms that default to EGL only configurations
+in which case the GLX applications are not required
+at all. Allow the user to control generation of these
+demos as needed through a configure switch.
+
+Signed-off-by: Awais Belal <awais_belal@mentor.com>
+Upstream-Status: Pending
+---
+ configure.ac    | 9 +++++++++
+ src/Makefile.am | 6 +++++-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index f8ec7e3..1a4d96d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -132,6 +132,11 @@ if test "x$enable_glu" = xyes; then
+     DEMO_LIBS="$DEMO_LIBS $GLU_LIBS"
+ fi
+ 
++AC_ARG_ENABLE([glx-demos],
++    [AS_HELP_STRING([--enable-glx-demos],
++        [enable GLX demos @<:@default=auto@:>@])],
++    [glx_demos_enabled="$enableval"],
++    [glx_demos_enabled=yes])
+ AC_ARG_ENABLE([egl],
+     [AS_HELP_STRING([--enable-egl],
+         [enable EGL library @<:@default=auto@:>@])],
+@@ -325,6 +333,7 @@ AC_SUBST([WAYLAND_LIBS])
+ 
+ AM_CONDITIONAL(HAVE_GLU, test "x$glu_enabled" = "xyes")
+ AM_CONDITIONAL(HAVE_GLEW, test "x$glew_enabled" = "xyes")
++AM_CONDITIONAL(HAVE_GLX, test "x$glx_demos_enabled" = "xyes")
+ AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes")
+ AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes")
+ AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes")
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 8b89dee..a4d7e8f 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -44,8 +44,12 @@ SUBDIRS = \
+ 	slang \
+ 	tests \
+ 	tools \
+-	wgl \
++	wgl
++
++if HAVE_GLX
++SUBDIRS += \
+ 	xdemos
++endif
+ 
+ if HAVE_GLEW
+ SUBDIRS += \
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
deleted file mode 100644
index 557b8c6..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-SUMMARY = "Mesa demo applications"
-DESCRIPTION = "This package includes the demonstration application, such as glxgears. \
-These applications can be used for Mesa validation and benchmarking."
-HOMEPAGE = "http://mesa3d.org"
-BUGTRACKER = "https://bugs.freedesktop.org"
-SECTION = "x11"
-
-LICENSE = "MIT & PD"
-LIC_FILES_CHKSUM = "file://src/xdemos/glxgears.c;beginline=1;endline=20;md5=914225785450eff644a86c871d3ae00e \
-                    file://src/xdemos/glxdemo.c;beginline=1;endline=8;md5=b01d5ab1aee94d35b7efaa2ef48e1a06"
-
-SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/demos/${PV}/${BPN}-${PV}.tar.bz2 \
-    file://0001-mesa-demos-Add-missing-data-files.patch \
-    file://0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch \
-    file://0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch \
-    file://0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch \
-    file://0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch \
-    file://0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch \
-    file://0007-Install-few-more-test-programs.patch \
-    file://0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch \
-    file://0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch \
-    file://0010-sharedtex_mt-fix-rendering-thread-hang.patch \
-"
-SRC_URI[md5sum] = "72613a2c8c013716db02e3ff59d29061"
-SRC_URI[sha256sum] = "e4bfecb5816ddd4b7b37c1bc876b63f1f7f06fda5879221a9774d0952f90ba92"
-
-inherit autotools pkgconfig distro_features_check
-# depends on virtual/egl, virtual/libgl ...
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-PACKAGECONFIG ?= "drm osmesa freetype2 gbm egl gles1 gles2 \
-                  ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 glew glu', '', d)}"
-
-# The Wayland code doesn't work with Wayland 1.0, so disable it for now
-#${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
-
-EXTRA_OECONF = "--with-system-data-files"
-
-PACKAGECONFIG[drm] = "--enable-libdrm,--disable-libdrm,libdrm"
-PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl"
-PACKAGECONFIG[freetype2] = "--enable-freetype2,--disable-freetype2,freetype"
-PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/libgl"
-PACKAGECONFIG[gles1] = "--enable-gles1,--disable-gles1,virtual/libgles1"
-PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2"
-PACKAGECONFIG[glut] = "--with-glut=${STAGING_EXECPREFIXDIR},--without-glut,"
-PACKAGECONFIG[osmesa] = "--enable-osmesa,--disable-osmesa,"
-PACKAGECONFIG[vg] = "--enable-vg,--disable-vg,virtual/libopenvg"
-PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,virtual/libgl wayland"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11"
-PACKAGECONFIG[glew] = "--enable-glew,--disable-glew,glew"
-PACKAGECONFIG[glu] = "--enable-glu,--disable-glu,virtual/libgl"
-
-do_install_append() {
-	# it can be completely empty when all PACKAGECONFIG options are disabled
-	rmdir --ignore-fail-on-non-empty ${D}${bindir}
-
-	if [ -f ${D}${bindir}/clear ]; then
-        	mv ${D}${bindir}/clear ${D}${bindir}/clear.mesa-demos
-	fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb
new file mode 100644
index 0000000..fab0bdb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb
@@ -0,0 +1,59 @@
+SUMMARY = "Mesa demo applications"
+DESCRIPTION = "This package includes the demonstration application, such as glxgears. \
+These applications can be used for Mesa validation and benchmarking."
+HOMEPAGE = "http://mesa3d.org"
+BUGTRACKER = "https://bugs.freedesktop.org"
+SECTION = "x11"
+
+LICENSE = "MIT & PD"
+LIC_FILES_CHKSUM = "file://src/xdemos/glxgears.c;beginline=1;endline=20;md5=914225785450eff644a86c871d3ae00e \
+                    file://src/xdemos/glxdemo.c;beginline=1;endline=8;md5=b01d5ab1aee94d35b7efaa2ef48e1a06"
+
+SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/demos/${PV}/${BPN}-${PV}.tar.bz2 \
+           file://0001-mesa-demos-Add-missing-data-files.patch \
+           file://0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch \
+           file://0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch \
+           file://0007-Install-few-more-test-programs.patch \
+           file://0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch \
+           file://0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch \
+           file://0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch \
+           file://0013-only-build-GLX-demos-if-needed.patch \
+           "
+SRC_URI[md5sum] = "628e75c23c17394f11a316c36f8e4164"
+SRC_URI[sha256sum] = "c173154bbd0d5fb53d732471984def42fb1b14ac85fcb834138fb9518b3e0bef"
+
+inherit autotools pkgconfig distro_features_check
+# depends on virtual/egl, virtual/libgl ...
+REQUIRED_DISTRO_FEATURES = "opengl x11"
+
+PACKAGECONFIG ?= "drm osmesa freetype2 gbm egl gles1 gles2 \
+                  x11 glew glu glx"
+
+# The Wayland code doesn't work with Wayland 1.0, so disable it for now
+#${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
+
+EXTRA_OECONF = "--with-system-data-files"
+
+PACKAGECONFIG[drm] = "--enable-libdrm,--disable-libdrm,libdrm"
+PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl"
+PACKAGECONFIG[freetype2] = "--enable-freetype2,--disable-freetype2,freetype"
+PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/libgl"
+PACKAGECONFIG[gles1] = "--enable-gles1,--disable-gles1,virtual/libgles1"
+PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2"
+PACKAGECONFIG[glut] = "--with-glut=${STAGING_EXECPREFIXDIR},--without-glut,"
+PACKAGECONFIG[osmesa] = "--enable-osmesa,--disable-osmesa,"
+PACKAGECONFIG[vg] = "--enable-vg,--disable-vg,virtual/libopenvg"
+PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,virtual/libgl wayland"
+PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11"
+PACKAGECONFIG[glew] = "--enable-glew,--disable-glew,glew"
+PACKAGECONFIG[glu] = "--enable-glu,--disable-glu,virtual/libgl"
+PACKAGECONFIG[glx] = "--enable-glx-demos,--disable-glx-demos"
+
+do_install_append() {
+	# it can be completely empty when all PACKAGECONFIG options are disabled
+	rmdir --ignore-fail-on-non-empty ${D}${bindir}
+
+	if [ -f ${D}${bindir}/clear ]; then
+        	mv ${D}${bindir}/clear ${D}${bindir}/clear.mesa-demos
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-gl_11.1.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-gl_11.1.1.bb
deleted file mode 100644
index fc2bca9..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-gl_11.1.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require mesa_${PV}.bb
-
-SUMMARY += " (OpenGL only, no EGL/GLES)"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/mesa:"
-
-PROVIDES = "virtual/libgl virtual/mesa"
-
-S = "${WORKDIR}/mesa-${PV}"
-
-PACKAGECONFIG ??= "dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
-
-EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-gl_12.0.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-gl_12.0.1.bb
new file mode 100644
index 0000000..f06a3e9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa-gl_12.0.1.bb
@@ -0,0 +1,13 @@
+require mesa_${PV}.bb
+
+SUMMARY += " (OpenGL only, no EGL/GLES)"
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/mesa:"
+
+PROVIDES = "virtual/libgl virtual/mesa"
+
+S = "${WORKDIR}/mesa-${PV}"
+
+PACKAGECONFIG ??= "dri ${MESA_CRYPTO} ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa.inc b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa.inc
index 442479a..e4880ff 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa.inc
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa.inc
@@ -10,7 +10,7 @@
 BUGTRACKER = "https://bugs.freedesktop.org"
 SECTION = "x11"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://docs/license.html;md5=6a23445982a7a972ac198e93cc1cb3de"
+LIC_FILES_CHKSUM = "file://docs/license.html;md5=899fbe7e42d494c7c8c159c7001693d5"
 
 PE = "2"
 
@@ -24,11 +24,13 @@
 
 EXTRA_OECONF = "--enable-shared-glapi"
 
-PACKAGECONFIG ??= "egl gles dri ${MESA_CRYPTO} \
+PACKAGECONFIG ??= "gbm egl gles dri ${MESA_CRYPTO} \
 		${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}\
 		${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}\
 		"
 
+PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm"
+
 X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes"
 PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}"
 PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc"
@@ -37,7 +39,7 @@
 DRIDRIVERS = "swrast"
 DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915"
 DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915"
-PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS} --enable-gbm, --disable-dri, dri2proto libdrm"
+PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm"
 PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence"
 
 PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-gles2"
@@ -140,16 +142,17 @@
         d.setVar("RREPLACES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
 
     import re
-    dri_drivers_root = os.path.join(d.getVar('libdir', True), "dri")
-    dri_pkgs = os.listdir(d.getVar('PKGD', True) + dri_drivers_root)
-    lib_name = d.expand("${MLPREFIX}mesa-megadriver")
-    for p in dri_pkgs:
-        m = re.match('^(.*)_dri\.so$', p)
-        if m:
-            pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1))
-            d.appendVar("RPROVIDES_%s" % lib_name, pkg_name)
-            d.appendVar("RCONFLICTS_%s" % lib_name, pkg_name)
-            d.appendVar("RREPLACES_%s" % lib_name, pkg_name)
+    dri_drivers_root = oe.path.join(d.getVar('PKGD', True), d.getVar('libdir', True), "dri")
+    if os.path.isdir(dri_drivers_root):
+        dri_pkgs = os.listdir(dri_drivers_root)
+        lib_name = d.expand("${MLPREFIX}mesa-megadriver")
+        for p in dri_pkgs:
+            m = re.match('^(.*)_dri\.so$', p)
+            if m:
+                pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1))
+                d.appendVar("RPROVIDES_%s" % lib_name, pkg_name)
+                d.appendVar("RCONFLICTS_%s" % lib_name, pkg_name)
+                d.appendVar("RREPLACES_%s" % lib_name, pkg_name)
 
     pipe_drivers_root = os.path.join(d.getVar('libdir', True), "gallium-pipe")
     do_split_packages(d, pipe_drivers_root, '^pipe_(.*)\.so$', 'mesa-driver-pipe-%s', 'Mesa %s pipe driver', extra_depends='')
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa_11.1.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa_11.1.1.bb
deleted file mode 100644
index 502afcf..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa_11.1.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/mesa-${PV}.tar.xz \
-           file://replace_glibc_check_with_linux.patch \
-"
-
-SRC_URI[md5sum] = "1043dfb907beecb2a761272455960427"
-SRC_URI[sha256sum] = "64db074fc514136b5fb3890111f0d50604db52f0b1e94ba3fcb0fe8668a7fd20"
-
-#because we cannot rely on the fact that all apps will use pkgconfig,
-#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER
-do_install_append() {
-    if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then
-        sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if defined(MESA_EGL_NO_X11_HEADERS) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
-    fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa_12.0.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa_12.0.1.bb
new file mode 100644
index 0000000..80189e3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mesa/mesa_12.0.1.bb
@@ -0,0 +1,18 @@
+require ${BPN}.inc
+
+SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/mesa-${PV}.tar.xz \
+           file://replace_glibc_check_with_linux.patch \
+           file://clang-compile-PR89599.patch \
+           file://disable-asm-on-non-gcc.patch \
+"
+
+SRC_URI[md5sum] = "972fd5ad5a63aeabf173fb9adefc6522"
+SRC_URI[sha256sum] = "bab24fb79f78c876073527f515ed871fc9c81d816f66c8a0b051d8d653896389"
+
+#because we cannot rely on the fact that all apps will use pkgconfig,
+#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER
+do_install_append() {
+    if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then
+        sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if defined(MESA_EGL_NO_X11_HEADERS) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
+    fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mx/mx-1.0/fix-build-dir.patch b/import-layers/yocto-poky/meta/recipes-graphics/mx/mx-1.0/fix-build-dir.patch
deleted file mode 100644
index 3c8a832..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/mx/mx-1.0/fix-build-dir.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Fix build for S != B
-
-This patch is specific to version 1.4.x
-Upstream-Status: Submitted @ https://github.com/clutter-project/mx/issues/81
-Signed-off-by: Tomas Frydrych <tomas@sleepfive.com>
---
-Index: git/docs/reference/libmx-gtk/Makefile.am
-===================================================================
---- git.orig/docs/reference/libmx-gtk/Makefile.am	2013-05-08 15:07:02.027154788 +0100
-+++ git/docs/reference/libmx-gtk/Makefile.am	2013-05-08 15:14:33.684318650 +0100
-@@ -1,3 +1,6 @@
-+EXTRA_DIST=
-+CLEANFILES=
-+
- ## Process this file with automake to produce Makefile.in
- 
- # We require automake 1.6 at least.
-@@ -77,7 +80,7 @@
- GTKDOC_LIBS=$(MX_LIBS) $(top_builddir)/mx-gtk/libmx-gtk-$(MX_API_VERSION).la
- 
- # This includes the standard gtk-doc make rules, copied by gtkdocize.
--include $(top_srcdir)/gtk-doc.make
-+include $(top_builddir)/gtk-doc.make
- 
- # Other files to distribute
- EXTRA_DIST += version.xml.in
-Index: git/docs/reference/libmx/Makefile.am
-===================================================================
---- git.orig/docs/reference/libmx/Makefile.am	2013-05-08 15:07:02.027154788 +0100
-+++ git/docs/reference/libmx/Makefile.am	2013-05-08 15:14:24.456378135 +0100
-@@ -1,3 +1,6 @@
-+EXTRA_DIST=
-+CLEANFILES=
-+
- ## Process this file with automake to produce Makefile.in
- 
- # We require automake 1.6 at least.
-@@ -106,7 +109,7 @@
- GTKDOC_LIBS=$(MX_LIBS) $(top_builddir)/mx/libmx-$(MX_API_VERSION).la
- 
- # This includes the standard gtk-doc make rules, copied by gtkdocize.
--include $(top_srcdir)/gtk-doc.make
-+include $(top_builddir)/gtk-doc.make
- 
- # Other files to distribute
- EXTRA_DIST += version.xml.in
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb b/import-layers/yocto-poky/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb
index 5545c1e..58a6997 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb
@@ -8,7 +8,6 @@
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>^\d+(\.(?!99)\d+)+)"
 
 SRC_URI = "git://github.com/clutter-project/mx.git;branch=mx-1.4 \
-	   file://fix-build-dir.patch \
 	   file://fix-test-includes.patch \
 	  "
 S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/mx/mx.inc b/import-layers/yocto-poky/meta/recipes-graphics/mx/mx.inc
index 4f10957..d304837 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/mx/mx.inc
+++ b/import-layers/yocto-poky/meta/recipes-graphics/mx/mx.inc
@@ -1,16 +1,15 @@
 SUMMARY = "Clutter based UI widget library"
 LICENSE = "LGPLv2.1"
 
-inherit clutter autotools-brokensep distro_features_check gobject-introspection
+inherit clutter autotools distro_features_check gobject-introspection gtk-doc
 # depends on clutter-1.0 which depends on cogl-1.0
 REQUIRED_DISTRO_FEATURES = "opengl"
 
-DEPENDS = "clutter-1.0 dbus-glib gdk-pixbuf"
+DEPENDS = "intltool-native clutter-1.0 dbus-glib gdk-pixbuf"
 
 SRC_URI = "http://source.clutter-project.org/sources/mx/${@get_verdir("${PV}")}/mx-${PV}.tar.xz"
 
-EXTRA_OECONF = "--disable-gtk-doc		\
-	        --disable-gtk-widgets		\
+EXTRA_OECONF = "--disable-gtk-widgets		\
 		--with-dbus			\
 		--with-winsys=none		\
 		--without-clutter-imcontext	\
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
index 5734b27..87c700e 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "Clutter package groups"
-LICENSE = "MIT"
 
 PR = "r6"
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb
deleted file mode 100644
index a657a1a..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-directfb.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "DirectFB without X11"
-LICENSE = "MIT"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-inherit packagegroup
-
-TOUCH = ' ${@bb.utils.contains("MACHINE_FEATURES", "touchscreen", "tslib tslib-calibrate tslib-tests", "",d)}'
-
-RDEPENDS_${PN} = " \
-		directfb \
-		directfb-examples \
-		pango \
-		fontconfig \
-		${TOUCH} \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
index 17301a0..7ea72d5 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
@@ -1,6 +1,5 @@
 SUMMARY = "Basic X11 session"
 DESCRIPTION = "Packages required to set up a basic working X11 session"
-LICENSE = "MIT"
 PR = "r1"
 
 inherit packagegroup distro_features_check
@@ -11,7 +10,6 @@
     packagegroup-core-x11-xserver \
     packagegroup-core-x11-utils \
     dbus \
-    pointercal \
     matchbox-terminal \
     matchbox-wm \
     mini-x-session \
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
index c53f1b7..6b50028 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "X11 display server"
-LICENSE = "MIT"
 PR = "r40"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
index 3537d8c..4291424 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
@@ -2,7 +2,6 @@
 # Copyright (C) 2011 Intel Corporation
 #
 
-LICENSE = "MIT"
 PR = "r40"
 
 inherit packagegroup distro_features_check
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/pango/pango/0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch b/import-layers/yocto-poky/meta/recipes-graphics/pango/pango/0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch
new file mode 100644
index 0000000..6784a10
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/pango/pango/0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch
@@ -0,0 +1,147 @@
+From 526a6a9fc9a1cfe75c521c8bb39b61754fe42fe8 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 2 Sep 2016 14:00:24 +0300
+Subject: [PATCH] Enforce recreation of docs/pango.types; it is build
+ configuration-specific.
+
+In particular, it needs to exclude references to PangoXft if Xft is not available.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ docs/Makefile.am | 17 ++++--------
+ docs/pango.types | 80 --------------------------------------------------------
+ 2 files changed, 5 insertions(+), 92 deletions(-)
+ delete mode 100644 docs/pango.types
+
+diff --git a/docs/Makefile.am b/docs/Makefile.am
+index f5f1317..8947a99 100644
+--- a/docs/Makefile.am
++++ b/docs/Makefile.am
+@@ -49,6 +49,10 @@ IGNORE_HFILES=			\
+ 	pangocoretext-private.h		\
+ 	pangoatsui-private.h
+ 
++if !HAVE_XFT
++IGNORE_HFILES += pangoxft pangoxft-render.h
++endif
++
+ # CFLAGS and LDFLAGS for compiling scan program. Only needed
+ # if $(DOC_MODULE).types is non-empty.
+ INCLUDES =               	\
+@@ -103,16 +107,6 @@ include $(top_srcdir)/gtk-doc.make
+ # This line really belongs in gtk-doc.mk
+ $(REPORT_FILES): sgml-build.stamp
+ 
+-pango.types:
+-	@echo "Rebuilding $@"
+-	@LANG=C; LIST=$$(grep 'pango_[_a-zA-Z0-9]*_get_type' $(HFILE_GLOB) | grep -v '\(private\|atsui\|core_text\|win32\)' | sed 's/\([^:]*:\).*\(pango[_a-zA-Z0-9]*_get_type\).*/\1\2/') && \
+-	echo "$$LIST" | sed 's/.*\/\(pango\/.*\):.*/#include <\1>/' | sort -u > $@.tmp && \
+-	echo >> $@.tmp && \
+-	echo "$$LIST" | cut -d : -f 2 | sort -u >> $@.tmp && \
+-	mv $@.tmp $@
+-
+-BUILT_SOURCES = pango.types
+-
+ ########################################################################
+ 
+ MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+@@ -120,8 +114,7 @@ EXTRA_DIST +=				\
+ 	layout.fig			\
+ 	layout.eps			\
+ 	version.xml.in			\
+-	check.docs			\
+-	pango.types
++	check.docs
+ 
+ # force doc rebulid after configure
+ dist-hook-local: dist-local-check-no-cross-references all-local
+diff --git a/docs/pango.types b/docs/pango.types
+deleted file mode 100644
+index 7d93cda..0000000
+--- a/docs/pango.types
++++ /dev/null
+@@ -1,80 +0,0 @@
+-#include <pango/pango-attributes.h>
+-#include <pango/pango-context.h>
+-#include <pango/pango-engine.h>
+-#include <pango/pango-enum-types.h>
+-#include <pango/pango-font.h>
+-#include <pango/pango-fontmap.h>
+-#include <pango/pango-fontset.h>
+-#include <pango/pango-glyph-item.h>
+-#include <pango/pango-glyph.h>
+-#include <pango/pango-item.h>
+-#include <pango/pango-language.h>
+-#include <pango/pango-layout.h>
+-#include <pango/pango-matrix.h>
+-#include <pango/pango-ot.h>
+-#include <pango/pango-renderer.h>
+-#include <pango/pango-tabs.h>
+-#include <pango/pangocairo-fc.h>
+-#include <pango/pangocairo.h>
+-#include <pango/pangofc-decoder.h>
+-#include <pango/pangofc-font.h>
+-#include <pango/pangofc-fontmap.h>
+-#include <pango/pangoft2.h>
+-#include <pango/pangoxft-render.h>
+-#include <pango/pangoxft.h>
+-
+-pango_alignment_get_type
+-pango_attr_list_get_type
+-pango_attr_type_get_type
+-pango_bidi_type_get_type
+-pango_cairo_fc_font_map_get_type
+-pango_cairo_font_get_type
+-pango_cairo_font_map_get_type
+-pango_color_get_type
+-pango_context_get_type
+-pango_coverage_level_get_type
+-pango_direction_get_type
+-pango_ellipsize_mode_get_type
+-pango_engine_get_type
+-pango_engine_lang_get_type
+-pango_engine_shape_get_type
+-pango_fc_decoder_get_type
+-pango_fc_font_get_type
+-pango_fc_font_map_get_type
+-pango_font_description_get_type
+-pango_font_face_get_type
+-pango_font_family_get_type
+-pango_font_get_type
+-pango_font_map_get_type
+-pango_font_mask_get_type
+-pango_font_metrics_get_type
+-pango_fontset_get_type
+-pango_fontset_simple_get_type
+-pango_ft2_font_map_get_type
+-pango_glyph_item_get_type
+-pango_glyph_item_iter_get_type
+-pango_glyph_string_get_type
+-pango_gravity_get_type
+-pango_gravity_hint_get_type
+-pango_item_get_type
+-pango_language_get_type
+-pango_layout_get_type
+-pango_layout_iter_get_type
+-pango_layout_line_get_type
+-pango_matrix_get_type
+-pango_ot_info_get_type
+-pango_ot_ruleset_get_type
+-pango_render_part_get_type
+-pango_renderer_get_type
+-pango_script_get_type
+-pango_stretch_get_type
+-pango_style_get_type
+-pango_tab_align_get_type
+-pango_tab_array_get_type
+-pango_underline_get_type
+-pango_variant_get_type
+-pango_weight_get_type
+-pango_wrap_mode_get_type
+-pango_xft_font_get_type
+-pango_xft_font_map_get_type
+-pango_xft_renderer_get_type
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/pango/pango_1.38.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/pango/pango_1.38.1.bb
deleted file mode 100644
index 7fc65fd..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/pango/pango_1.38.1.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "Framework for layout and rendering of internationalized text"
-DESCRIPTION = "Pango is a library for laying out and rendering of text, \
-with an emphasis on internationalization. Pango can be used anywhere \
-that text layout is needed, though most of the work on Pango so far has \
-been done in the context of the GTK+ widget toolkit. Pango forms the \
-core of text and font handling for GTK+-2.x."
-HOMEPAGE = "http://www.pango.org/"
-BUGTRACKER = "http://bugzilla.gnome.org"
-SECTION = "libs"
-LICENSE = "LGPLv2.0+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
-
-inherit gnomebase gtk-doc ptest-gnome upstream-version-is-even gobject-introspection
-
-SRC_URI += "file://run-ptest \
-            file://0001-Drop-introspection-macros-from-acinclude.m4.patch \
-"
-
-SRC_URI[archive.md5sum] = "7fde35d4a127b55ce8bbcefe109bc80d"
-SRC_URI[archive.sha256sum] = "1320569f6c6d75d6b66172b2d28e59c56ee864ee9df202b76799c4506a214eb7"
-
-DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
-PACKAGECONFIG[x11] = "--with-xft,--without-xft,virtual/libx11 libxft"
-
-EXTRA_AUTORECONF = ""
-
-EXTRA_OECONF = " \
-	        --disable-debug \
-	        "
-
-LEAD_SONAME = "libpango-1.0*"
-LIBV = "1.8.0"
-
-# This binary needs to be compiled for the host architecture.  This isn't pretty!
-do_compile_prepend_class-target () {
-	if ${@base_contains('DISTRO_FEATURES', 'ptest', 'true', 'false', d)}; then
-		make CC="${BUILD_CC}" CFLAGS="" LDFLAGS="" AM_CPPFLAGS="$(pkg-config-native --cflags glib-2.0)" gen_all_unicode_LDADD="$(pkg-config-native --libs glib-2.0)" -C ${B}/tests gen-all-unicode
-	fi
-}
-
-FILES_${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}"
-FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la"
-
-RDEPENDS_${PN}-ptest += "liberation-fonts cantarell-fonts"
-
-RPROVIDES_${PN} += "pango-modules pango-module-indic-lang \
-                    pango-module-basic-fc pango-module-arabic-lang"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/pango/pango_1.40.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/pango/pango_1.40.1.bb
new file mode 100644
index 0000000..f9f344a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/pango/pango_1.40.1.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Framework for layout and rendering of internationalized text"
+DESCRIPTION = "Pango is a library for laying out and rendering of text, \
+with an emphasis on internationalization. Pango can be used anywhere \
+that text layout is needed, though most of the work on Pango so far has \
+been done in the context of the GTK+ widget toolkit. Pango forms the \
+core of text and font handling for GTK+-2.x."
+HOMEPAGE = "http://www.pango.org/"
+BUGTRACKER = "http://bugzilla.gnome.org"
+SECTION = "libs"
+LICENSE = "LGPLv2.0+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
+inherit gnomebase gtk-doc ptest-gnome upstream-version-is-even gobject-introspection
+
+SRC_URI += "file://run-ptest \
+            file://0001-Drop-introspection-macros-from-acinclude.m4.patch \
+            file://0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch \
+"
+SRC_URI[archive.md5sum] = "6fc88c6529890d6c8e03074d57a3eceb"
+SRC_URI[archive.sha256sum] = "e27af54172c72b3ac6be53c9a4c67053e16c905e02addcf3a603ceb2005c1a40"
+
+DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[x11] = "--with-xft,--without-xft,virtual/libx11 libxft"
+
+EXTRA_AUTORECONF = ""
+
+EXTRA_OECONF = " \
+	        --disable-debug \
+	        "
+
+LEAD_SONAME = "libpango-1.0*"
+LIBV = "1.8.0"
+
+# This binary needs to be compiled for the host architecture.  This isn't pretty!
+do_compile_prepend_class-target () {
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'true', 'false', d)}; then
+		make CC="${BUILD_CC}" CFLAGS="" LDFLAGS="${BUILD_LDFLAGS}" AM_CPPFLAGS="$(pkg-config-native --cflags glib-2.0)" gen_all_unicode_LDADD="$(pkg-config-native --libs glib-2.0)" -C ${B}/tests gen-all-unicode
+	fi
+}
+
+FILES_${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}"
+FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la"
+
+RDEPENDS_${PN}-ptest += "liberation-fonts cantarell-fonts"
+
+RPROVIDES_${PN} += "pango-modules pango-module-indic-lang \
+                    pango-module-basic-fc pango-module-arabic-lang"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-Link-test-utils-with-ldl.patch b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-Link-test-utils-with-ldl.patch
new file mode 100644
index 0000000..2e1c947
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-Link-test-utils-with-ldl.patch
@@ -0,0 +1,41 @@
+Backport patch to fix build with gold linker.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Backport
+
+
+
+From 93a7113485cf1c55fd7076116faf5b3a690706b2 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 30 Aug 2016 17:17:28 +0300
+Subject: [PATCH] cmake: Link test utils with "-ldl"
+
+Without this linking CXX executables (e.g. fbo-blit-stretch) fails
+with gold linker:
+
+| libpiglitutil_gl.so.0: error: undefined reference to 'dlsym'
+| libpiglitutil_gl.so.0: error: undefined reference to 'dlerror'
+| libpiglitutil_gl.so.0: error: undefined reference to 'dlopen'
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
+---
+ tests/util/CMakeLists.txt | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tests/util/CMakeLists.txt b/tests/util/CMakeLists.txt
+index e1f8073..3d5bef5 100644
+--- a/tests/util/CMakeLists.txt
++++ b/tests/util/CMakeLists.txt
+@@ -11,6 +11,8 @@ set_source_files_properties(
+ 	PROPERTIES GENERATED 1
+ 	)
+ 
++link_libraries(${CMAKE_DL_LIBS})
++
+ if(HAVE_LIBCACA)
+     link_libraries(caca)
+ endif()
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-Link-utils-with-xcb-explicitly.patch b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-Link-utils-with-xcb-explicitly.patch
new file mode 100644
index 0000000..845804d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-Link-utils-with-xcb-explicitly.patch
@@ -0,0 +1,54 @@
+From 73e4fbc5777eddd89bb0fb16e90343551fe3e0ef Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 5 Jul 2016 10:56:23 +0300
+Subject: [PATCH] cmake: Link utils with xcb explicitly
+
+Linking with g++ can reportedly lead to:
+
+libpiglitutil_gl.so.0: error: undefined reference to 'xcb_connect'
+libpiglitutil_gl.so.0: error: undefined reference to 'xcb_get_setup'
+libpiglitutil_gl.so.0: error: undefined reference to 'xcb_setup_roots_iterator'
+
+This may have appeared now because xcb-dri2 used to overlink publicly
+but now does not.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Accepted
+---
+ CMakeLists.txt            | 1 +
+ tests/util/CMakeLists.txt | 2 ++
+ 2 files changed, 3 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8e2abba..2e1a473 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -151,6 +151,7 @@ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ 
+ 	pkg_check_modules(LIBDRM QUIET libdrm)
+ 	pkg_check_modules(LIBDRM_INTEL QUIET libdrm_intel)
++	pkg_check_modules(XCB QUIET xcb)
+ 	pkg_check_modules(XCB_DRI2 QUIET xcb-dri2)
+ 	pkg_check_modules(GLPROTO QUIET glproto)
+ ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+diff --git a/tests/util/CMakeLists.txt b/tests/util/CMakeLists.txt
+index fb22ffa..e1f8073 100644
+--- a/tests/util/CMakeLists.txt
++++ b/tests/util/CMakeLists.txt
+@@ -121,11 +121,13 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ 
+ 		list(APPEND UTIL_GL_LIBS
+ 			${LIBDRM_LDFLAGS}
++			${XCB_LDFLAGS}
+ 			${XCB_DRI2_LDFLAGS}
+ 		)
+ 
+ 		list(APPEND UTIL_GL_INCLUDES
+ 			${LIBDRM_INCLUDE_DIRS}
++			${XCB_INCLUDE_DIRS}
+ 			${XCB_DRI2_INCLUDE_DIRS}
+ 		)
+ 
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-install-bash-completions-in-the-right-place.patch b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-install-bash-completions-in-the-right-place.patch
new file mode 100644
index 0000000..e07e810
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-cmake-install-bash-completions-in-the-right-place.patch
@@ -0,0 +1,35 @@
+From 26faa2c157a27a18a9f767976730fe0c115e3af4 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Wed, 13 Jul 2016 19:19:02 +0300
+Subject: [PATCH] cmake: install bash-completions in the right place
+
+The completionsdir variable is a full path and should not be
+prefixed.
+
+This does mean the files may be installed outside of
+CMAKE_INSTALL_PREFIX -- the alternative is more difficult and
+means that bash completion files may be installed where
+bash-completion can't find them.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Submitted [mailing list]
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8e2abba..784a8f9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -532,7 +532,7 @@ install (
+ if (BASH_COMPLETION_FOUND)
+ 	install(
+ 		FILES completions/bash/piglit
+-		DESTINATION ${CMAKE_INSTALL_PREFIX}/${BASH_COMPLETION_COMPLETIONSDIR}/
++		DESTINATION ${BASH_COMPLETION_COMPLETIONSDIR}/
+ 	)
+ endif (BASH_COMPLETION_FOUND)
+ 
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-tests-Fix-missing-include-of-Xutil.h.patch b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-tests-Fix-missing-include-of-Xutil.h.patch
deleted file mode 100644
index c27cc04..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-tests-Fix-missing-include-of-Xutil.h.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
-
-From e40e0a25f996d2e205c4bdec2c8a5cc7f74e5065 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Mon, 15 Jun 2015 16:25:30 -0300
-Subject: tests: Fix missing include of Xutil.h
-
-The EGL tests rely on Xutil.h being included. Some EGL implementation
-does not explitly include it by default and then the build fails.
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
-Reviewed-by: Neil Roberts <neil@linux.intel.com>
-
-diff --git a/tests/egl/egl-configless-context.c b/tests/egl/egl-configless-context.c
-index 0504a26..154b55c 100644
---- a/tests/egl/egl-configless-context.c
-+++ b/tests/egl/egl-configless-context.c
-@@ -32,6 +32,7 @@
- /* Chunks of code in this file are taken from egl-util.c */
- 
- #include <X11/Xlib.h>
-+#include <X11/Xutil.h>
- 
- #include "piglit-util-gl.h"
- #include "piglit-util-egl.h"
--- 
-cgit v0.10.2
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch
new file mode 100644
index 0000000..f851a92
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch
@@ -0,0 +1,54 @@
+From 0fc2c2932699cfd68be96c820fddfdd79b48b788 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Jul 2016 07:52:19 +0000
+Subject: [PATCH] tests: Use FE_UPWARD only if its defined in fenv.h
+
+On ARM, musl does not define FE_* when arch does not have
+VFP, (which is right interpretation), therefore check if
+its defined before using it
+
+Fixes errors like
+
+tests/general/roundmode-pixelstore.c:82:19: error: 'FE_UPWARD' undeclared (first use in this function)
+  ret = fesetround(FE_UPWARD);
+                   ^~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ tests/general/roundmode-getintegerv.c | 2 ++
+ tests/general/roundmode-pixelstore.c  | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/tests/general/roundmode-getintegerv.c b/tests/general/roundmode-getintegerv.c
+index 28ecfaf..5c27579 100644
+--- a/tests/general/roundmode-getintegerv.c
++++ b/tests/general/roundmode-getintegerv.c
+@@ -81,7 +81,9 @@ piglit_init(int argc, char **argv)
+ {
+ 	int ret;
+ 	bool pass = true;
++#ifdef FE_UPWARD
+ 	ret = fesetround(FE_UPWARD);
++#endif
+ 	if (ret != 0) {
+ 		printf("Couldn't set rounding mode\n");
+ 		piglit_report_result(PIGLIT_SKIP);
+diff --git a/tests/general/roundmode-pixelstore.c b/tests/general/roundmode-pixelstore.c
+index 9284f43..3fcb396 100644
+--- a/tests/general/roundmode-pixelstore.c
++++ b/tests/general/roundmode-pixelstore.c
+@@ -79,7 +79,9 @@ piglit_init(int argc, char **argv)
+ {
+ 	int ret;
+ 	bool pass = true;
++#ifdef FE_UPWARD
+ 	ret = fesetround(FE_UPWARD);
++#endif
+ 	if (ret != 0) {
+ 		printf("Couldn't set rounding mode\n");
+ 		piglit_report_result(PIGLIT_SKIP);
+-- 
+1.8.3.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit_git.bb
index 607f236..82adcde 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/piglit/piglit_git.bb
@@ -3,18 +3,22 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=b2beded7103a3d8a442a2a0391d607b0"
 
 SRC_URI = "git://anongit.freedesktop.org/piglit \
-           file://0001-tests-Fix-missing-include-of-Xutil.h.patch"
+           file://0001-cmake-install-bash-completions-in-the-right-place.patch \
+           file://0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch \
+           file://0001-cmake-Link-utils-with-xcb-explicitly.patch \
+           file://0001-cmake-Link-test-utils-with-ldl.patch \
+           "
 
-# From 2015-02-19
-SRCREV = "c4585427913e4cb28994b4bfb11d49778273aa2c"
+# From 2016-07-07
+SRCREV = "c39e41a86551eb390b8da23232dc8577639403d0"
 # (when PV goes above 1.0 remove the trailing r)
 PV = "1.0+gitr${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-DEPENDS = "virtual/libx11 libxrender waffle virtual/libgl libglu python-mako-native python-numpy-native"
+DEPENDS = "libpng virtual/libx11 libxrender waffle virtual/libgl libglu python3-mako-native python3-numpy-native python3-six-native"
 
-inherit cmake pythonnative distro_features_check
+inherit cmake python3native distro_features_check bash-completion
 # depends on virtual/libx11
 REQUIRED_DISTRO_FEATURES = "x11"
 
@@ -34,10 +38,15 @@
    fi
 }
 
-RDEPENDS_${PN} = "waffle python python-mako python-json python-subprocess \
-	python-argparse python-importlib python-unixadmin python-xml \
-	python-multiprocessing python-textutils python-netserver python-shell \
+do_install() {
+	oe_runmake -C ${B} 'DESTDIR=${D}' install/strip
+}
+
+RDEPENDS_${PN} = "waffle python3 python3-mako python3-json \
+	python3-subprocess python3-misc python3-importlib \
+	python3-unixadmin python3-xml python3-multiprocessing \
+	python3-six python3-shell python3-io python3-argparse \
 	mesa-demos bash \
 	"
 
-INSANE_SKIP_${PN} += "dev-so"
+INSANE_SKIP_${PN} += "dev-so already-stripped"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
index 0e1a792..6c3bcd8 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
@@ -13,7 +13,7 @@
 S = "${WORKDIR}"
 
 do_compile () {
-	${CC} -o pong-clock pong-clock-no-flicker.c `pkg-config --cflags --libs x11 xau xdmcp`
+	${CC} ${CFLAGS} ${LDFLAGS} -o pong-clock pong-clock-no-flicker.c `pkg-config --cflags --libs x11 xau xdmcp`
 }
 
 do_install () {
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib/ts.conf b/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib/ts.conf
deleted file mode 100644
index 1b0da93..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib/ts.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-# Uncomment if you wish to use the linux input layer event interface
-module_raw input
-
-# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
-# module_raw collie
-
-# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
-# module_raw corgi
-
-# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
-# module_raw ucb1x00
-
-# Uncomment if you're using an HP iPaq h3600 or similar
-# module_raw h3600
-
-# Uncomment if you're using a Hitachi Webpad
-# module_raw mk712
-
-# Uncomment if you're using an IBM Arctic II
-# module_raw arctic2
-
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib/tslib.sh b/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib/tslib.sh
deleted file mode 100644
index 7068e8d..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib/tslib.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-if [ -e /dev/input/touchscreen0 ]; then
-    TSLIB_TSDEVICE=/dev/input/touchscreen0
-
-    export TSLIB_TSDEVICE
-fi
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib_1.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib_1.1.bb
deleted file mode 100644
index b0264c3..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/tslib/tslib_1.1.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "An abstraction layer for touchscreen panel events"
-DESCRIPTION = "Tslib is an abstraction layer for touchscreen panel \
-events, as well as a filter stack for the manipulation of those events. \
-Tslib is generally used on embedded devices to provide a common user \
-space interface to touchscreen functionality."
-HOMEPAGE = "http://tslib.berlios.de/"
-
-AUTHOR = "Russell King w/ plugins by Chris Larson et. al."
-SECTION = "base"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f30a9716ef3762e3467a2f62bf790f0a"
-
-SRC_URI = "https://github.com/kergoth/tslib/releases/download/${PV}/tslib-${PV}.tar.xz;downloadfilename=tslib-${PV}.tar.xz \
-           file://ts.conf \
-           file://tslib.sh \
-"
-
-SRC_URI[md5sum] = "14771f8607b341bb4b297819d37e837d"
-SRC_URI[sha256sum] = "fe35e5f710ea933b118f710e2ce4403ac076fe69926b570333867d4de082a51c"
-
-UPSTREAM_CHECK_URI = "https://github.com/kergoth/tslib/releases"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--enable-shared --disable-h3600 --enable-input --disable-corgi --disable-collie --disable-mk712 --disable-arctic2 --disable-ucb1x00"
-
-do_install_prepend() {
-	install -m 0644 ${WORKDIR}/ts.conf ${S}/etc/ts.conf
-}
-
-do_install_append() {
-	install -d ${D}${sysconfdir}/profile.d/
-	install -m 0755 ${WORKDIR}/tslib.sh ${D}${sysconfdir}/profile.d/
-}
-
-# People should consider using udev's /dev/input/touchscreen0 symlink
-# instead of detect-stylus
-#RDEPENDS_tslib-conf_weird-machine = "detect-stylus"
-RPROVIDES_tslib-conf = "libts-0.0-conf"
-
-PACKAGES =+ "tslib-conf tslib-tests tslib-calibrate"
-DEBIAN_NOAUTONAME_tslib-conf = "1"
-DEBIAN_NOAUTONAME_tslib-tests = "1"
-DEBIAN_NOAUTONAME_tslib-calibrate = "1"
-
-RDEPENDS_${PN} = "tslib-conf"
-RRECOMMENDS_${PN} = "pointercal"
-
-FILES_${PN}-dev += "${libdir}/ts/*.la"
-FILES_tslib-conf = "${sysconfdir}/ts.conf ${sysconfdir}/profile.d/tslib.sh ${datadir}/tslib"
-FILES_${PN} = "${libdir}/*.so.* ${libdir}/ts/*.so*"
-FILES_tslib-calibrate += "${bindir}/ts_calibrate"
-FILES_tslib-tests = "${bindir}/ts_harvest ${bindir}/ts_print ${bindir}/ts_print_raw ${bindir}/ts_test"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch
index 97c63bd..b52b496 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch
@@ -1,7 +1,7 @@
 This is a workaround upstream suggests for use with kernel 4.1.
 
 Upstream-Status: Inappropriate [temporary work-around]
-Signed-Off-By: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
 
 
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput_1.1.4.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput_1.1.4.bb
deleted file mode 100644
index 4167679..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput_1.1.4.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Library to handle input devices in Wayland compositors"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2184aef38ff137ed33ce9a63b9d1eb8f"
-
-DEPENDS = "libevdev udev mtdev"
-
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
-           file://touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch \
-"
-SRC_URI[md5sum] = "0945318141c1a9f52857bbf65d175f32"
-SRC_URI[sha256sum] = "302cb76209b9c57a5a318e178f9bc446eede8ea79386103b5291cbfaa5fab5b6"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
-PACKAGECONFIG[gui] = "--enable-event-gui,--disable-event-gui,cairo gtk+3"
-
-FILES_${PN} += "${libdir}/udev/"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput_1.4.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput_1.4.1.bb
new file mode 100644
index 0000000..3580392
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/libinput_1.4.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Library to handle input devices in Wayland compositors"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2184aef38ff137ed33ce9a63b9d1eb8f"
+
+DEPENDS = "libevdev udev mtdev"
+
+SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
+           file://touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch \
+"
+SRC_URI[md5sum] = "2e7ba577ed74d8d1baeb07dbd4fb912a"
+SRC_URI[sha256sum] = "26e7b3ab499358caba499705680ea7e5851af2bd37dc32f2be64181610d6392a"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
+PACKAGECONFIG[libwacom] = "--enable-libwacom,--disable-libwacom,libwacom"
+PACKAGECONFIG[gui] = "--enable-event-gui,--disable-event-gui,cairo gtk+3"
+
+UDEVDIR = "`pkg-config --variable=udevdir udev`"
+
+EXTRA_OECONF += "--with-udev-dir=${UDEVDIR}"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland-protocols_1.7.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland-protocols_1.7.bb
new file mode 100644
index 0000000..1d2f0db
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland-protocols_1.7.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Collection of additional Wayland protocols"
+DESCRIPTION = "Wayland protocols that add functionality not \
+available in the Wayland core protocol. Such protocols either add \
+completely new functionality, or extend the functionality of some other \
+protocol either in Wayland core, or some other protocol in \
+wayland-protocols."
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
+                    file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
+
+SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+           "
+SRC_URI[md5sum] = "9acfc9556f7cfedc44d97af60da66a5f"
+SRC_URI[sha256sum] = "635f2a937d318f1fecb97b54074ca211486e38af943868dd0fa82ea38d091c1f"
+
+inherit allarch autotools pkgconfig
+
+PACKAGES = "${PN}"
+FILES_${PN} += "${datadir}/pkgconfig/wayland-protocols.pc"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland/0001-scanner-Use-unit32_t-instead-of-uint.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland/0001-scanner-Use-unit32_t-instead-of-uint.patch
new file mode 100644
index 0000000..dece95c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland/0001-scanner-Use-unit32_t-instead-of-uint.patch
@@ -0,0 +1,30 @@
+From 5516d32e694badca35b6c71b02a3f08f650308bf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 15 Jul 2016 16:23:48 -0700
+Subject: [PATCH] scanner: Use unit32_t instead of uint
+
+uint32_t is C99 defined stdint type
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Submitted
+---
+ src/scanner.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/scanner.c b/src/scanner.c
+index 5f06e8e..10a4023 100644
+--- a/src/scanner.c
++++ b/src/scanner.c
+@@ -808,7 +808,7 @@ find_enumeration(struct protocol *protocol,
+ 	struct interface *i;
+ 	struct enumeration *e;
+ 	char *enum_name;
+-	uint idx = 0, j;
++	uint32_t idx = 0, j;
+ 
+ 	for (j = 0; j + 1 < strlen(enum_attribute); j++) {
+ 		if (enum_attribute[j] == '.') {
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland_1.11.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland_1.11.0.bb
new file mode 100644
index 0000000..3413406
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland_1.11.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Wayland, a protocol between a compositor and clients"
+DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \
+as well as a C library implementation of that protocol. The compositor can be \
+a standalone display server running on Linux kernel modesetting and evdev \
+input devices, an X application, or a wayland client itself. The clients can \
+be traditional applications, X servers (rootless or fullscreen) or other \
+display servers."
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \
+                    file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce"
+
+SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+           file://0001-scanner-Use-unit32_t-instead-of-uint.patch \
+           "
+SRC_URI[md5sum] = "fccf680be066e234729d5b69e0bd0fa9"
+SRC_URI[sha256sum] = "9540925f7928becfdf5e3b84c70757f6589bf1ceef09bea78784d8e4772c0db0"
+
+EXTRA_OECONF_class-native = "--disable-documentation --disable-libraries"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native nativesdk"
+
+DEPENDS = "expat libxml2 libffi wayland-native"
+
+EXTRA_OECONF = "--disable-documentation --with-host-scanner"
+
+# Wayland installs a M4 macro for other projects to use, which uses the target
+# pkg-config to find files.  Replace pkg-config with pkg-config-native.
+do_install_append_class-native() {
+  sed -e 's,PKG_CHECK_MODULES(.*),,g' \
+      -e 's,$PKG_CONFIG,pkg-config-native,g' \
+      -i ${D}/${datadir}/aclocal/wayland-scanner.m4
+}
+
+sysroot_stage_all_append_class-target () {
+	rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4
+	cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/
+}
+
+FILES_${PN} = "${libdir}/*${SOLIBS}"
+FILES_${PN}-dev += "${bindir} ${datadir}/wayland"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland_1.9.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland_1.9.0.bb
deleted file mode 100644
index d12ac18..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/wayland_1.9.0.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Wayland, a protocol between a compositor and clients"
-DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \
-as well as a C library implementation of that protocol. The compositor can be \
-a standalone display server running on Linux kernel modesetting and evdev \
-input devices, an X application, or a wayland client itself. The clients can \
-be traditional applications, X servers (rootless or fullscreen) or other \
-display servers."
-HOMEPAGE = "http://wayland.freedesktop.org"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \
-                    file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce"
-
-SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "5e141b3f2a7005d6c89d6f233c87c317"
-SRC_URI[sha256sum] = "9c8770720aa0034479735f58a4dc4ca9b172ecfede28f5134312e135b7301efa"
-
-EXTRA_OECONF_class-native = "--disable-documentation --disable-libraries"
-
-inherit autotools pkgconfig
-
-BBCLASSEXTEND = "native nativesdk"
-
-DEPENDS = "expat libffi wayland-native"
-
-EXTRA_OECONF = "--disable-documentation --with-host-scanner"
-
-# Wayland installs a M4 macro for other projects to use, which uses the target
-# pkg-config to find files.  Replace pkg-config with pkg-config-native.
-do_install_append_class-native() {
-  sed -e 's,PKG_CHECK_MODULES(.*),,g' \
-      -e 's,$PKG_CONFIG,pkg-config-native,g' \
-      -i ${D}/${datadir}/aclocal/wayland-scanner.m4
-}
-
-sysroot_stage_all_append_class-target () {
-	rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4
-	cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/
-}
-
-FILES_${PN} = "${libdir}/*${SOLIBS}"
-FILES_${PN}-dev += "${bindir} ${datadir}/wayland"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init.bb
index 653541e..291cd16 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init.bb
@@ -3,16 +3,19 @@
 LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
 
 SRC_URI = "file://init \
-           file://weston.service"
+           file://weston.service \
+           file://weston-start"
 
 S = "${WORKDIR}"
 
 do_install() {
-	install -d ${D}/${sysconfdir}/init.d
-	install -m755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston
+	install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston
+	install -Dm0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service
 
-	install -d ${D}${systemd_system_unitdir}
-	install -m0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}
+	# Install weston-start script
+	install -Dm755 ${WORKDIR}/weston-start ${D}${bindir}/weston-start
+	sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start
+	sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start
 }
 
 inherit allarch update-rc.d distro_features_check systemd
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/init b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/init
index 2e938f4..d3e87c6 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/init
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/init
@@ -31,14 +31,7 @@
   start)
         . /etc/profile
 
-        # This is all a nasty hack
-        if test -z "$XDG_RUNTIME_DIR"; then
-                export XDG_RUNTIME_DIR=/run/user/root
-                mkdir --parents $XDG_RUNTIME_DIR
-                chmod 0700 $XDG_RUNTIME_DIR
-        fi
-
-        openvt -s weston -- $OPTARGS
+        weston-start -- $OPTARGS
   ;;
 
   stop)
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/weston-start b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/weston-start
new file mode 100755
index 0000000..e72fbaa
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/weston-start
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Copyright (C) 2016 O.S. Systems Software LTDA.
+# Copyright (C) 2016 Freescale Semiconductor
+
+export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
+
+usage() {
+    cat <<EOF
+    $0 [<openvt arguments>] [-- <weston options>]
+EOF
+}
+
+## Module support
+modules_dir=@DATADIR@/weston-start
+
+# Add weston extra argument
+add_weston_argument() {
+	weston_args="$weston_args $1"
+}
+
+# Add openvt extra argument
+add_openvt_argument() {
+	openvt_args="$openvt_args $1"
+}
+
+if [ -n "$WAYLAND_DISPLAY" ]; then
+	echo "ERROR: A Wayland compositor is already running, nested Weston instance is not supported yet."
+	exit 1
+fi
+if [ -n "$DISPLAY" ]; then
+	launcher="weston"
+else
+	launcher="weston-launch --"
+fi
+
+openvt_args="-s"
+while [ -n "$1" ]; do
+	if [ "$1" = "--" ]; then
+		shift
+		break
+	fi
+	openvt_args="$openvt_args $1"
+	shift
+done
+
+weston_args=$*
+
+# Load and run modules
+if [ -d "$modules_dir" ]; then
+	for m in "$modules_dir"/*; do
+		# Skip backup files
+		if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then
+			continue
+		fi
+
+		# process module
+		. $m
+	done
+fi
+
+if test -z "$XDG_RUNTIME_DIR"; then
+    export XDG_RUNTIME_DIR=/run/user/`id -u`
+    if ! test -d "$XDG_RUNTIME_DIR"; then
+        mkdir --parents $XDG_RUNTIME_DIR
+        chmod 0700 $XDG_RUNTIME_DIR
+    fi
+fi
+
+exec openvt $openvt_args -- $launcher $weston_args --log=@LOCALSTATEDIR@/log/weston.log
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/weston.service b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/weston.service
index 4f1f7ff..689ce41 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/weston.service
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston-init/weston.service
@@ -1,14 +1,11 @@
 [Unit]
-Description=Weston Wayland compositor startup
+Description=Weston Wayland Compositor
 RequiresMountsFor=/run
 
 [Service]
 User=root
 EnvironmentFile=-/etc/default/weston
-Environment="XDG_RUNTIME_DIR=/run/user/root"
-ExecStartPre=/bin/mkdir -p /run/user/root
-ExecStartPre=/bin/chmod 0700 /run/user/root
-ExecStart=/usr/bin/openvt -v -e /usr/bin/weston -- $OPTARGS
+ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS
 
 [Install]
 WantedBy=multi-user.target
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch
new file mode 100644
index 0000000..00118d7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch
@@ -0,0 +1,34 @@
+From 1cfc1434a5d385a74de593ec7601674dba39e2fe Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Wed, 11 May 2016 16:16:30 +0300
+Subject: [PATCH] configure.ac: Fix wayland-protocols path
+
+The wayland-protocols directory is used during build: Fix the path
+to point to sysroot specified in recipe.
+
+Normally PKG_CONFIG_SYSROOT_DIR could be used in configure.ac but that
+breaks multilib weston as it would point to multilib sysroot when the
+(allarch) wayland-protocols is actually in the machine sysroot.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index bc7c329..15a05d3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -187,7 +187,7 @@ PKG_CHECK_MODULES(LIBINPUT_BACKEND, [libinput >= 0.8.0])
+ PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES])
+ 
+ PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.2],
+-		  [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
++		  [ac_wayland_protocols_pkgdatadir=${WAYLAND_PROTOCOLS_SYSROOT_DIR}`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
+ AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
+ 
+ AC_ARG_ENABLE(wayland-compositor, [  --enable-wayland-compositor],,
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch
new file mode 100644
index 0000000..91ef727
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch
@@ -0,0 +1,28 @@
+From ba02b8abe4e2afac2bfbf2559972d5059d75a041 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Sat, 16 Jul 2016 22:50:19 +0300
+Subject: [PATCH weston] shared: include stdint.h for int32_t
+
+This fixes build on musl.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Submitted
+---
+ shared/xalloc.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/shared/xalloc.h b/shared/xalloc.h
+index 85fccb4..484de2d 100644
+--- a/shared/xalloc.h
++++ b/shared/xalloc.h
+@@ -30,6 +30,7 @@
+ extern "C" {
+ #endif
+ 
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
new file mode 100644
index 0000000..5542036
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
@@ -0,0 +1,173 @@
+From d02226b3d5872b184c1d50c7f4706ac9467ffb81 Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Fri, 15 Jul 2016 11:00:15 +0300
+Subject: [PATCH] weston-launch: Provide a default version that doesn't require
+ PAM
+
+weston-launch requires PAM for starting weston as a non-root user.
+
+Since starting weston as root is a valid use case by itself, if
+PAM is not available, provide a default version of weston-launch
+without non-root-user support.
+
+Upstream-Status: Pending
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+---
+ configure.ac        |  9 +++++++--
+ src/weston-launch.c | 20 ++++++++++++++++++++
+ 2 files changed, 27 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 32fdde7..240966f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -416,13 +416,17 @@ AC_ARG_ENABLE(resize-optimization,
+ AS_IF([test "x$enable_resize_optimization" = "xyes"],
+       [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])
+ 
++AC_ARG_WITH(pam,
++            AS_HELP_STRING([--with-pam], [Use PAM]),
++            [use_pam=$withval], [use_pam=yes])
+ AC_ARG_ENABLE(weston-launch, [  --enable-weston-launch],, enable_weston_launch=yes)
+ AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch == xyes)
+-if test x$enable_weston_launch == xyes; then
++if test x$enable_weston_launch = xyes -a x$use_pam = xyes; then
+   WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no])
+   if test x$have_pam == xno; then
+-    AC_ERROR([weston-launch requires pam])
++    AC_ERROR([PAM support is explicitly requested, but libpam couldn't be found])
+   fi
++  AC_DEFINE([HAVE_PAM], [1], [Define if PAM is available])
+ fi
+ 
+ AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")
+@@ -673,6 +677,7 @@ AC_MSG_RESULT([
+ 	Enable developer documentation	${enable_devdocs}
+ 
+ 	weston-launch utility		${enable_weston_launch}
++	PAM support			${use_pam}
+ 	systemd-login support		${have_systemd_login}
+ 	systemd notify support		${enable_systemd_notify}
+ 
+diff --git a/src/weston-launch.c b/src/weston-launch.c
+index b8b2ba0..a865061 100644
+--- a/src/weston-launch.c
++++ b/src/weston-launch.c
+@@ -51,7 +51,9 @@
+ 
+ #include <pwd.h>
+ #include <grp.h>
++#ifdef HAVE_PAM
+ #include <security/pam_appl.h>
++#endif
+ 
+ #ifdef HAVE_SYSTEMD_LOGIN
+ #include <systemd/sd-login.h>
+@@ -93,8 +95,10 @@ drmSetMaster(int drm_fd)
+ #endif
+ 
+ struct weston_launch {
++#ifdef HAVE_PAM
+ 	struct pam_conv pc;
+ 	pam_handle_t *ph;
++#endif
+ 	int tty;
+ 	int ttynr;
+ 	int sock[2];
+@@ -181,6 +185,7 @@ weston_launch_allowed(struct weston_launch *wl)
+ 	return false;
+ }
+ 
++#ifdef HAVE_PAM
+ static int
+ pam_conversation_fn(int msg_count,
+ 		    const struct pam_message **messages,
+@@ -221,6 +226,7 @@ setup_pam(struct weston_launch *wl)
+ 
+ 	return 0;
+ }
++#endif
+ 
+ static int
+ setup_launcher_socket(struct weston_launch *wl)
+@@ -414,6 +420,7 @@ quit(struct weston_launch *wl, int status)
+ 	close(wl->signalfd);
+ 	close(wl->sock[0]);
+ 
++#ifdef HAVE_PAM
+ 	if (wl->new_user) {
+ 		err = pam_close_session(wl->ph, 0);
+ 		if (err)
+@@ -421,6 +428,7 @@ quit(struct weston_launch *wl, int status)
+ 				err, pam_strerror(wl->ph, err));
+ 		pam_end(wl->ph, err);
+ 	}
++#endif
+ 
+ 	if (ioctl(wl->tty, KDSKBMUTE, 0) &&
+ 	    ioctl(wl->tty, KDSKBMODE, wl->kb_mode))
+@@ -600,6 +608,7 @@ setup_session(struct weston_launch *wl)
+ 	setenv("HOME", wl->pw->pw_dir, 1);
+ 	setenv("SHELL", wl->pw->pw_shell, 1);
+ 
++#ifdef HAVE_PAM
+ 	env = pam_getenvlist(wl->ph);
+ 	if (env) {
+ 		for (i = 0; env[i]; ++i) {
+@@ -608,6 +617,7 @@ setup_session(struct weston_launch *wl)
+ 		}
+ 		free(env);
+ 	}
++#endif
+ }
+ 
+ static void
+@@ -665,7 +675,9 @@ static void
+ help(const char *name)
+ {
+ 	fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name);
++#ifdef HAVE_PAM
+ 	fprintf(stderr, "  -u, --user      Start session as specified username\n");
++#endif
+ 	fprintf(stderr, "  -t, --tty       Start session on alternative tty\n");
+ 	fprintf(stderr, "  -v, --verbose   Be verbose\n");
+ 	fprintf(stderr, "  -h, --help      Display this help message\n");
+@@ -678,7 +690,9 @@ main(int argc, char *argv[])
+ 	int i, c;
+ 	char *tty = NULL;
+ 	struct option opts[] = {
++#ifdef HAVE_PAM
+ 		{ "user",    required_argument, NULL, 'u' },
++#endif
+ 		{ "tty",     required_argument, NULL, 't' },
+ 		{ "verbose", no_argument,       NULL, 'v' },
+ 		{ "help",    no_argument,       NULL, 'h' },
+@@ -690,9 +704,13 @@ main(int argc, char *argv[])
+ 	while ((c = getopt_long(argc, argv, "u:t::vh", opts, &i)) != -1) {
+ 		switch (c) {
+ 		case 'u':
++#ifdef HAVE_PAM
+ 			wl.new_user = optarg;
+ 			if (getuid() != 0)
+ 				error(1, 0, "Permission denied. -u allowed for root only");
++#else
++			error(1, 0, "-u is unsupported in this weston-launch build");
++#endif
+ 			break;
+ 		case 't':
+ 			tty = optarg;
+@@ -730,8 +748,10 @@ main(int argc, char *argv[])
+ 	if (setup_tty(&wl, tty) < 0)
+ 		exit(EXIT_FAILURE);
+ 
++#ifdef HAVE_PAM
+ 	if (wl.new_user && setup_pam(&wl) < 0)
+ 		exit(EXIT_FAILURE);
++#endif
+ 
+ 	if (setup_launcher_socket(&wl) < 0)
+ 		exit(EXIT_FAILURE);
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/explicit-enable-disable-systemd.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/explicit-enable-disable-systemd.patch
deleted file mode 100644
index a40eaf1..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/explicit-enable-disable-systemd.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 8e1efcd40b3bad81c83744e2e120d70c2b567ef2 Mon Sep 17 00:00:00 2001
-From: Frederico Cadete <frederico@cadete.eu>
-Date: Mon, 28 Sep 2015 00:30:10 +0200
-Subject: configure.ac: add explicit enable/disable for systemd-login support
-
-Otherwise, auto-enable depending on whether the system has the necessary
-libraries.
-
-[Updated help text as per pq suggestion -- bwh]
-
-Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
-Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
-Upstream-Status: Backport
-Backported from Weston git:
-http://cgit.freedesktop.org/wayland/weston/commit/?id=8e1efc
-
-Signed-off-by: Joshua Lock <joshua.lock@collabora.co.uk>
-
-diff --git a/configure.ac b/configure.ac
-index a9cd429..67e80d0 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -380,18 +380,30 @@ AC_ARG_ENABLE(resize-optimization,
- AS_IF([test "x$enable_resize_optimization" = "xyes"],
-       [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])
- 
--PKG_CHECK_MODULES(SYSTEMD_LOGIN,
--                  [libsystemd >= 209],
--                  [have_systemd_login_209=yes;have_systemd_login=yes],
--                  [have_systemd_login_209=no;have_systemd_login=no])
--
--# Older versions of systemd package systemd-login separately. Fall back on that
--AS_IF([test x$have_systemd_login != xyes],[
--      PKG_CHECK_MODULES(SYSTEMD_LOGIN,
--                        [libsystemd-login >= 198],
--                        [have_systemd_login=yes],
--                        [have_systemd_login=no])
--      ])
-+AC_ARG_ENABLE(systemd-login,
-+              AS_HELP_STRING([--enable-systemd-login],
-+                             [Enable logind support]),,
-+              enable_systemd_login=auto)
-+if test x$enable_systemd_login != xno; then
-+  PKG_CHECK_MODULES(SYSTEMD_LOGIN,
-+                    [libsystemd >= 209],
-+                    [have_systemd_login_209=yes;have_systemd_login=yes],
-+                    [have_systemd_login_209=no;have_systemd_login=no])
-+
-+  # Older versions of systemd package systemd-login separately. Fall back on that
-+  AS_IF([test x$have_systemd_login != xyes],[
-+        PKG_CHECK_MODULES(SYSTEMD_LOGIN,
-+                          [libsystemd-login >= 198],
-+                          [have_systemd_login=yes],
-+                          [have_systemd_login=no])
-+        ])
-+else
-+  have_systemd_login=no
-+fi
-+
-+if test "x$have_systemd_login" = "xno" -a "x$enable_systemd_login" = "xyes"; then
-+  AC_MSG_ERROR([systemd-login support explicitly enabled, but can't find libsystemd>=209 or libsystemd-login])
-+fi
- 
- AS_IF([test "x$have_systemd_login" = "xyes"],
-       [AC_DEFINE([HAVE_SYSTEMD_LOGIN], [1], [Have systemd-login])])
--- 
-cgit v0.10.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/libsystemd.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/libsystemd.patch
deleted file mode 100644
index 2d28d56..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/libsystemd.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 5eb025a867b42f8bc7bc73279eac8de58e51a13e Mon Sep 17 00:00:00 2001
-From: Frederico Cadete <frederico@cadete.eu>
-Date: Mon, 28 Sep 2015 00:30:09 +0200
-Subject: configure.ac: add support for new versions of systemd
-
-Starting from systemd version 209, a single libsystemd.pc is provided.
-For previous versions, fall back on libsystemd-login.pc.
-
-Signed-off-by: Frederico Cadete <frederico@cadete.eu>
-Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
-Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
-
-Upstream-Status: Backport
-Backported from Weston git:
-http://cgit.freedesktop.org/wayland/weston/commit/?id=5eb025
-
-Signed-off-by: Joshua Lock <joshua.lock@collabora.co.uk>
-
-diff --git a/configure.ac b/configure.ac
-index 045291c..a9cd429 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -380,14 +380,23 @@ AC_ARG_ENABLE(resize-optimization,
- AS_IF([test "x$enable_resize_optimization" = "xyes"],
-       [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])
- 
--PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libsystemd-login >= 198],
--                  [have_systemd_login=yes], [have_systemd_login=no])
-+PKG_CHECK_MODULES(SYSTEMD_LOGIN,
-+                  [libsystemd >= 209],
-+                  [have_systemd_login_209=yes;have_systemd_login=yes],
-+                  [have_systemd_login_209=no;have_systemd_login=no])
-+
-+# Older versions of systemd package systemd-login separately. Fall back on that
-+AS_IF([test x$have_systemd_login != xyes],[
-+      PKG_CHECK_MODULES(SYSTEMD_LOGIN,
-+                        [libsystemd-login >= 198],
-+                        [have_systemd_login=yes],
-+                        [have_systemd_login=no])
-+      ])
-+
- AS_IF([test "x$have_systemd_login" = "xyes"],
-       [AC_DEFINE([HAVE_SYSTEMD_LOGIN], [1], [Have systemd-login])])
- AM_CONDITIONAL(HAVE_SYSTEMD_LOGIN, test "x$have_systemd_login" = "xyes")
- 
--PKG_CHECK_MODULES(SYSTEMD_LOGIN_209, [libsystemd-login >= 209],
--                  [have_systemd_login_209=yes], [have_systemd_login_209=no])
- AS_IF([test "x$have_systemd_login_209" = "xyes"],
-       [AC_DEFINE([HAVE_SYSTEMD_LOGIN_209], [1], [Have systemd-login >= 209])])
- 
--- 
-cgit v0.10.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-lcms-explicitly-configurable.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-lcms-explicitly-configurable.patch
deleted file mode 100644
index 35e6d6f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-lcms-explicitly-configurable.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-weston-1.5.0/configure.ac: make lcms explicitly configurable
-
-The lcms package is outside of openembedded-core, so make it
-explicitly configurable. Make it deterministic, so that if lcms
-dependencies are missing, autoconf throws a fatal error. Follow
-upstream style to make it more likely to be merged.
-
-Upstream-Status: Pending
-
-Index: weston-1.5.0/configure.ac
-===================================================================
---- weston-1.5.0.orig/configure.ac
-+++ weston-1.5.0/configure.ac
-@@ -491,12 +491,24 @@ AC_ARG_ENABLE(demo-clients-install,
- 			     enable_demo_clients_install=no)
- AM_CONDITIONAL(INSTALL_DEMO_CLIENTS, [test "x$enable_demo_clients_install" = "xyes"])
- 
--PKG_CHECK_MODULES(LCMS, lcms2,
--                  [have_lcms=yes], [have_lcms=no])
--if test "x$have_lcms" = xyes; then
--       AC_DEFINE(HAVE_LCMS, 1, [Have lcms support])
-+AC_ARG_ENABLE(lcms,
-+              AS_HELP_STRING([--disable-lcms],
-+                             [Disable lcms support]),,
-+              enable_lcms=auto)
-+AM_CONDITIONAL(HAVE_LCMS, [test "x$enable_lcms" = xyes])
-+if test "x$enable_lcms" != "xno"; then
-+        PKG_CHECK_MODULES(LCMS, 
-+                         lcms2,
-+                         [have_lcms=yes],
-+                         [have_lcms=no])
-+        if test "x$have_lcms" = "xno" -a "x$enable_lcms" = "xyes"; then
-+          AC_MSG_ERROR([lcms support explicitly requested, but lcms couldn't be found])
-+        fi
-+        if test "x$have_lcms" = "xyes"; then
-+                enable_lcms=yes
-+                AC_DEFINE(HAVE_LCMS, 1, [Have lcms support])
-+        fi
- fi
--AM_CONDITIONAL(HAVE_LCMS, [test "x$have_lcms" = xyes])
- 
- AC_PATH_PROG([wayland_scanner], [wayland-scanner])
- if test x$wayland_scanner = x; then
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-libwebp-explicitly-configurable.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-libwebp-explicitly-configurable.patch
deleted file mode 100644
index ad07d4f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-libwebp-explicitly-configurable.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-
-The libwebp package is outside of openembedded-core, so make it
-explicitly configurable. Make it deterministic, so that if libwebp 
-dependencies are missing, autoconf throws a fatal error.
-
-Upstream-Status: Pending
-
-Index: weston-1.5.0/configure.ac
-===================================================================
---- weston-1.5.0.orig/configure.ac
-+++ weston-1.5.0/configure.ac
-@@ -268,9 +268,22 @@ fi
- 
- PKG_CHECK_MODULES(PIXMAN, [pixman-1])
- PKG_CHECK_MODULES(PNG, [libpng])
--PKG_CHECK_MODULES(WEBP, [libwebp], [have_webp=yes], [have_webp=no])
--AS_IF([test "x$have_webp" = "xyes"],
--      [AC_DEFINE([HAVE_WEBP], [1], [Have webp])])
-+AC_ARG_ENABLE(webp,
-+              AS_HELP_STRING([--disable-webp],
-+                             [Disable libwebp support]),,
-+              enable_webp=auto)
-+AM_CONDITIONAL(HAVE_WEBP, [test "x$enable_webp" = xyes])
-+AS_IF([test "x$enable_webp" != "xno"],
-+    PKG_CHECK_MODULES(WEBP,
-+                     [libwebp],
-+                     [have_webp=yes],
-+                     [have_webp=no])
-+    AS_IF([test "x$have_webp" = "xno" -a "x$enable_webp" = "xyes"],
-+        AC_MSG_ERROR([libwebp support explicitly request, but lipwebp could not be found]))
-+    AS_IF([test "x$have_webp" = "xyes"],
-+        [enable_webp=yes]
-+        [AC_DEFINE([HAVE_WEBP], [1], [Have webp])])
-+)
- 
- AC_ARG_ENABLE(vaapi-recorder, [  --enable-vaapi-recorder],,
- 	      enable_vaapi_recorder=auto)
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-weston-launch-exit-for-unrecognized-option.patch b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-weston-launch-exit-for-unrecognized-option.patch
new file mode 100644
index 0000000..0c408a4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/make-weston-launch-exit-for-unrecognized-option.patch
@@ -0,0 +1,33 @@
+From e8b615250f700f7854b423aaaf0a0aeea92c05a9 Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Sat, 7 May 2016 08:51:58 -0300
+Subject: [PATCH] weston-launch: Handle invalid command line options
+Organization: O.S. Systems Software LTDA.
+
+Exit the program if an unrecognized command line option is found.
+
+Upstream-Status: Submitted
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+
+ src/weston-launch.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/weston-launch.c b/src/weston-launch.c
+index b8dfb17..9987d8e 100644
+--- a/src/weston-launch.c
++++ b/src/weston-launch.c
+@@ -703,6 +703,8 @@ main(int argc, char *argv[])
+ 		case 'h':
+ 			help("weston-launch");
+ 			exit(EXIT_FAILURE);
++		default:
++			exit(EXIT_FAILURE);
+ 		}
+ 	}
+ 
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/xwayland.weston-start b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/xwayland.weston-start
new file mode 100644
index 0000000..b483c97
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/xwayland.weston-start
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if type Xwayland  >/dev/null 2>/dev/null; then
+	mkdir -p /tmp/.X11-unix
+
+	add_weston_argument "--modules=xwayland.so"
+fi
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston_1.11.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston_1.11.0.bb
new file mode 100644
index 0000000..3ad309d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston_1.11.0.bb
@@ -0,0 +1,117 @@
+SUMMARY = "Weston, a Wayland compositor"
+DESCRIPTION = "Weston is the reference implementation of a Wayland compositor"
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
+                    file://src/compositor.c;endline=23;md5=1d535fed266cf39f6d8c0647f52ac331"
+
+SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+           file://weston.png \
+           file://weston.desktop \
+           file://0001-make-error-portable.patch \
+           file://0001-configure.ac-Fix-wayland-protocols-path.patch \
+           file://0001-shared-include-stdint.h-for-int32_t.patch \
+           file://xwayland.weston-start \
+           file://make-weston-launch-exit-for-unrecognized-option.patch \
+           file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
+"
+SRC_URI[md5sum] = "bc6f90a2039163804aecfa663b69c4c2"
+SRC_URI[sha256sum] = "05e086e9f186a06843b9f7a5e1abf19347b1a6e4be26d7e74927abc17b6b7125"
+
+inherit autotools pkgconfig useradd distro_features_check
+# depends on virtual/egl
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg"
+DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native"
+
+EXTRA_OECONF = "--enable-setuid-install \
+                --disable-rpi-compositor \
+                --disable-rdp-compositor \
+                WAYLAND_PROTOCOLS_SYSROOT_DIR=${STAGING_DIR}/${MACHINE} \
+                "
+EXTRA_OECONF[vardepsexclude] = "MACHINE"
+
+EXTRA_OECONF_append_qemux86 = "\
+		WESTON_NATIVE_BACKEND=fbdev-backend.so \
+		"
+EXTRA_OECONF_append_qemux86-64 = "\
+		WESTON_NATIVE_BACKEND=fbdev-backend.so \
+		"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+                   clients launch"
+#
+# Compositor choices
+#
+# Weston on KMS
+PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa mtdev"
+# Weston on Wayland (nested Weston)
+PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa"
+# Weston on X11
+PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo"
+# Headless Weston
+PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor"
+# Weston on framebuffer
+PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev"
+# weston-launch
+PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,drm"
+# VA-API desktop recorder
+PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva"
+# Weston with EGL support
+PACKAGECONFIG[egl] = "--enable-egl --enable-simple-egl-clients,--disable-egl --disable-simple-egl-clients,virtual/egl"
+# Weston with cairo glesv2 support
+PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo"
+# Weston with lcms support
+PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms"
+# Weston with webp support
+PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
+# Weston with unwinding support
+PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind"
+# Weston with systemd-login support
+PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus"
+# Weston with Xwayland support (requires X11 and Wayland)
+PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland"
+# colord CMS support
+PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord"
+# Clients support
+PACKAGECONFIG[clients] = "--enable-clients --enable-simple-clients --enable-demo-clients-install,--disable-clients --disable-simple-clients"
+# Weston with PAM support
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
+
+do_install_append() {
+	# Weston doesn't need the .la files to load modules, so wipe them
+	rm -f ${D}/${libdir}/weston/*.la
+
+	# If X11, ship a desktop file to launch it
+	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "x11" ]; then
+		install -d ${D}${datadir}/applications
+		install ${WORKDIR}/weston.desktop ${D}${datadir}/applications
+
+		install -d ${D}${datadir}/icons/hicolor/48x48/apps
+		install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps
+	fi
+
+	if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then
+		install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
+	fi
+}
+
+PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)}"
+PACKAGES += "${PN}-examples"
+
+FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}"
+FILES_${PN}-examples = "${bindir}/*"
+
+FILES_${PN}-xwayland = "${libdir}/${BPN}/xwayland.so"
+RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland"
+
+RDEPENDS_${PN} += "xkeyboard-config"
+RRECOMMENDS_${PN} = "liberation-fonts"
+RRECOMMENDS_${PN}-dev += "wayland-protocols"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system weston-launch"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston_1.9.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston_1.9.0.bb
deleted file mode 100644
index 16a788d..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/wayland/weston_1.9.0.bb
+++ /dev/null
@@ -1,103 +0,0 @@
-SUMMARY = "Weston, a Wayland compositor"
-DESCRIPTION = "Weston is the reference implementation of a Wayland compositor"
-HOMEPAGE = "http://wayland.freedesktop.org"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
-                    file://src/compositor.c;endline=23;md5=1d535fed266cf39f6d8c0647f52ac331"
-
-SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
-           file://weston.png \
-           file://weston.desktop \
-           file://make-lcms-explicitly-configurable.patch \
-           file://make-libwebp-explicitly-configurable.patch \
-           file://0001-make-error-portable.patch \
-           file://libsystemd.patch \
-           file://explicit-enable-disable-systemd.patch \
-"
-SRC_URI[md5sum] = "66bbba12f546570b4d97f676bc79a28e"
-SRC_URI[sha256sum] = "9c1b03f3184fa0b0dfdf67e215048085156e1a2ca344af6613fed36794ac48cf"
-
-inherit autotools pkgconfig useradd distro_features_check
-# depends on virtual/egl
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg"
-DEPENDS += "wayland libinput virtual/egl pango wayland-native"
-
-EXTRA_OECONF = "--enable-setuid-install \
-                --enable-simple-clients \
-                --enable-clients \
-                --enable-demo-clients-install \
-                --disable-rpi-compositor \
-                --disable-rdp-compositor \
-                "
-
-EXTRA_OECONF_append_qemux86 = "\
-		WESTON_NATIVE_BACKEND=fbdev-backend.so \
-		"
-EXTRA_OECONF_append_qemux86-64 = "\
-		WESTON_NATIVE_BACKEND=fbdev-backend.so \
-		"
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'launch', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-                  "
-#
-# Compositor choices
-#
-# Weston on KMS
-PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa mtdev"
-# Weston on Wayland (nested Weston)
-PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa"
-# Weston on X11
-PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo"
-# Headless Weston
-PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor"
-# Weston on framebuffer
-PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev"
-# weston-launch
-PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,libpam drm"
-# VA-API desktop recorder
-PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva"
-# Weston with EGL support
-PACKAGECONFIG[egl] = "--enable-egl --enable-simple-egl-clients,--disable-egl --disable-simple-egl-clients,virtual/egl"
-# Weston with cairo glesv2 support
-PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo"
-# Weston with lcms support
-PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms"
-# Weston with webp support
-PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp"
-# Weston with unwinding support
-PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind"
-# Weston with systemd-login support
-PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus"
-# Weston with Xwayland support
-PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland,libxcb libxcursor cairo"
-# colord CMS support
-PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord"
-
-do_install_append() {
-	# Weston doesn't need the .la files to load modules, so wipe them
-	rm -f ${D}/${libdir}/weston/*.la
-
-	# If X11, ship a desktop file to launch it
-	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "x11" ]; then
-		install -d ${D}${datadir}/applications
-		install ${WORKDIR}/weston.desktop ${D}${datadir}/applications
-
-		install -d ${D}${datadir}/icons/hicolor/48x48/apps
-		install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps
-        fi
-}
-
-PACKAGES += "${PN}-examples"
-
-FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}"
-FILES_${PN}-examples = "${bindir}/*"
-
-RDEPENDS_${PN} += "xkeyboard-config"
-RRECOMMENDS_${PN} = "liberation-fonts"
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system weston-launch"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common/Xserver.in b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common/Xserver.in
deleted file mode 100644
index b8eed76..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common/Xserver.in
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-#
-
-XSERVER=/usr/bin/Xorg
-
-. /etc/profile
-
-ARGS=" -br -pn @BLANK_ARGS@"
-
-DISPLAY=':0'
-
-exec xinit /etc/X11/Xsession -- $XSERVER $DISPLAY $ARGS $*
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession.d/13xdgbasedirs.sh b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession.d/13xdgbasedirs.sh
index 91594b9..6bd40b2 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession.d/13xdgbasedirs.sh
+++ b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession.d/13xdgbasedirs.sh
@@ -7,7 +7,7 @@
 # In the ideal case where SystemD is booting and userspace is initiated by a
 # SystemD user session this will have been set already, so don't overwrite it.
 
-if [ -z "$XGD_RUNTIME_DIR" ]; then
-	XDG_RUNTIME_DIR="/tmp"
-        export XDG_RUNTIME_DIR
+if [ -z "$XDG_RUNTIME_DIR" ]; then
+    XDG_RUNTIME_DIR="/tmp"
+    export XDG_RUNTIME_DIR
 fi
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common_0.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common_0.1.bb
index 6d7c347..ab9a939 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common_0.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/x11-common_0.1.bb
@@ -9,22 +9,14 @@
 REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI = "file://etc \
-           file://Xserver.in \
            file://gplv2-license.patch"
 
 S = "${WORKDIR}"
 
-PACKAGECONFIG ??= "blank"
-# dpms and screen saver will be on only if 'blank' is in PACKAGECONFIG
-PACKAGECONFIG[blank] = ""
-
 do_install() {
 	cp -R ${S}/etc ${D}${sysconfdir}
-	sed -e 's/@BLANK_ARGS@/${@bb.utils.contains('PACKAGECONFIG', 'blank', '', '-s 0 -dpms', d)}/' \
-		${S}/Xserver.in > ${D}${sysconfdir}/X11/Xserver
-
 	chmod -R 755 ${D}${sysconfdir}
 }
 
-RDEPENDS_${PN} = "dbus-x11 xmodmap xdpyinfo xtscal xinit formfactor"
+RDEPENDS_${PN} = "dbus-x11 xmodmap xdpyinfo xinput-calibrator formfactor"
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init.bb b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init.bb
index b68d40e..a6d0d5e 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init.bb
@@ -5,10 +5,10 @@
 PR = "r31"
 
 SRC_URI = "file://xserver-nodm \
-           file://Xusername \
+           file://Xserver \
            file://gplv2-license.patch \
-           file://xserver-nodm.service \
-           file://xserver-nodm.conf \
+           file://xserver-nodm.service.in \
+           file://xserver-nodm.conf.in \
 "
 
 S = "${WORKDIR}"
@@ -16,35 +16,44 @@
 # Since we refer to ROOTLESS_X which is normally enabled per-machine
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
-inherit update-rc.d systemd
+inherit update-rc.d systemd distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+PACKAGECONFIG ??= "blank"
+# dpms and screen saver will be on only if 'blank' is in PACKAGECONFIG
+PACKAGECONFIG[blank] = ""
 
 do_install() {
-    install -d ${D}${sysconfdir}/init.d
-    install xserver-nodm ${D}${sysconfdir}/init.d
+    install -d ${D}${sysconfdir}/default
+    install xserver-nodm.conf.in ${D}${sysconfdir}/default/xserver-nodm
+    install -d ${D}${sysconfdir}/xserver-nodm
+    install Xserver ${D}${sysconfdir}/xserver-nodm/Xserver
+
+    BLANK_ARGS="${@bb.utils.contains('PACKAGECONFIG', 'blank', '', '-s 0 -dpms', d)}"
+    if [ "${ROOTLESS_X}" = "1" ] ; then
+        XUSER_HOME="/home/xuser"
+        XUSER="xuser"
+    else
+        XUSER_HOME=${ROOT_HOME}
+        XUSER="root"
+    fi
+    sed -i "s:@HOME@:${XUSER_HOME}:; s:@USER@:${XUSER}:; s:@BLANK_ARGS@:${BLANK_ARGS}:" \
+        ${D}${sysconfdir}/default/xserver-nodm
 
     if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-        install -d ${D}${sysconfdir}/default
-        install xserver-nodm.conf ${D}${sysconfdir}/default/xserver-nodm
         install -d ${D}${systemd_unitdir}/system
-        install -m 0644 ${WORKDIR}/xserver-nodm.service ${D}${systemd_unitdir}/system
-        if [ "${ROOTLESS_X}" = "1" ] ; then
-            sed -i 's!^HOME=.*!HOME=/home/xuser!' ${D}${sysconfdir}/default/xserver-nodm
-            sed -i 's!^User=.*!User=xuser!' ${D}${systemd_unitdir}/system/xserver-nodm.service
-        else
-            sed -i 's!^HOME=.*!HOME=${ROOT_HOME}!' ${D}${sysconfdir}/default/xserver-nodm
-            sed -i '/^User=/d' ${D}${systemd_unitdir}/system/xserver-nodm.service
-        fi
+        install -m 0644 ${WORKDIR}/xserver-nodm.service.in ${D}${systemd_unitdir}/system/xserver-nodm.service
+        sed -i "s:@USER@:${XUSER}:" ${D}${systemd_unitdir}/system/xserver-nodm.service
     fi
 
     if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-        if [ "${ROOTLESS_X}" = "1" ] ; then
-            install -d ${D}${sysconfdir}/X11
-            install Xusername ${D}${sysconfdir}/X11
-        fi
+        install -d ${D}${sysconfdir}/init.d
+        install xserver-nodm ${D}${sysconfdir}/init.d
     fi
 }
 
-RDEPENDS_${PN} = "${@base_conditional('ROOTLESS_X', '1', 'xuser-account', '', d)}"
+RDEPENDS_${PN} = "xinit ${@base_conditional('ROOTLESS_X', '1', 'xuser-account', '', d)}"
 
 INITSCRIPT_NAME = "xserver-nodm"
 INITSCRIPT_PARAMS = "start 9 5 . stop 20 0 1 2 3 6 ."
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/Xserver b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/Xserver
new file mode 100644
index 0000000..0edbfbf
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/Xserver
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# This script is only needed to make sure /etc/X11/xserver-common
+# can affect XSERVER, ARGS & DPI: otherwise systemd could just use
+# /etc/default/xserver-nodm as EnvironmentFile and sysvinit could just
+# source the same file
+
+. /etc/profile
+
+# load default values for XSERVER, ARGS, DISPLAY...
+. /etc/default/xserver-nodm
+
+# Allow xserver-common to override ARGS, XSERVER, DPI
+if [ -e /etc/X11/xserver-common ] ; then
+    . /etc/X11/xserver-common
+    if [ ! -e $XSERVER ] ; then
+        XSERVER=$(which $XSERVER)
+    fi
+fi
+
+if [ -n "$DPI" ] ; then
+    ARGS="$ARGS -dpi $DPI"
+fi
+
+exec xinit /etc/X11/Xsession -- $XSERVER $DISPLAY $ARGS $*
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/Xusername b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/Xusername
deleted file mode 100644
index 7060e5e..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/Xusername
+++ /dev/null
@@ -1 +0,0 @@
-xuser
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
index bfa0a8d..6c54855 100755
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
+++ b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
@@ -26,10 +26,11 @@
 case "$1" in
   start)
        . /etc/profile
-       username=root
+
+       #default for USER
+       . /etc/default/xserver-nodm
        echo "Starting Xserver"
-       if [ -f /etc/X11/Xusername ]; then
-           username=`cat /etc/X11/Xusername`
+       if [ "$USER" != "root" ]; then
            # setting for rootless X
            chmod o+w /var/log
            chmod g+r /dev/tty[0-3]
@@ -38,8 +39,9 @@
                chmod o+rw /dev/hidraw*
            fi
        fi
+
        # Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211]
-       su -l -c '/etc/X11/Xserver&' $username 
+       su -l -c '/etc/xserver-nodm/Xserver &' $USER
        # Wait for the desktop to say its finished loading
        # before loading the rest of the system
        # dbus-wait org.matchbox_project.desktop Loaded
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf
deleted file mode 100644
index 3c0582a..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf
+++ /dev/null
@@ -1 +0,0 @@
-HOME=/home/root
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf.in b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf.in
new file mode 100644
index 0000000..757c23d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf.in
@@ -0,0 +1,7 @@
+# common environment file for sysvinit and systemd
+
+XSERVER=/usr/bin/Xorg
+DISPLAY=:0
+ARGS=" -br -pn @BLANK_ARGS@ "
+HOME=@HOME@
+USER=@USER@
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service
deleted file mode 100644
index 62d979f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Xserver startup without a display manager
-
-[Service]
-User=root
-EnvironmentFile=/etc/default/xserver-nodm
-ExecStart=/etc/X11/Xserver
-
-[Install]
-Alias=display-manager.service
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in
new file mode 100644
index 0000000..324a26f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in
@@ -0,0 +1,10 @@
+[Unit]
+Description=Xserver startup without a display manager
+
+[Service]
+EnvironmentFile=/etc/default/xserver-nodm
+User=@USER@
+ExecStart=/etc/xserver-nodm/Xserver
+
+[Install]
+Alias=display-manager.service
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/pointercal-xinput/qemuall/pointercal.xinput b/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/pointercal-xinput/qemuall/pointercal.xinput
new file mode 100644
index 0000000..a816d6d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/pointercal-xinput/qemuall/pointercal.xinput
@@ -0,0 +1,2 @@
+# Dummy pointercal.xinput file to prevent xinput_calibrator
+# from running on qemu startup
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/add-geometry-input-when-calibrating.patch b/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/add-geometry-input-when-calibrating.patch
index 9351331..9dc94ae 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/add-geometry-input-when-calibrating.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/add-geometry-input-when-calibrating.patch
@@ -1,33 +1,34 @@
-Upstream-Status: Inappropriate [no longer maintained]
-
-From 93abf28d602da637376b78de8c88b7ab5cf13b4f Mon Sep 17 00:00:00 2001
-From: Jonathan David <jonathan.david@ni.com>
-Date: Mon, 30 Nov 2015 12:12:20 -0600
+From 1cb83759632bb218559c4d0d65ff79f868c03dc5 Mon Sep 17 00:00:00 2001
+From: "Maxin B. John" <maxin.john@intel.com>
+Date: Tue, 9 Aug 2016 17:03:31 +0300
 Subject: [PATCH] add geometry input when calibrating
 
 Send monitor geometry to xinput_calibrator when running the script
+Update:
+        Remove bashism
+
+Upstream-Status: Inappropriate [no longer maintained]
 
 Signed-off-by: Jonathan David <jonathan.david@ni.com>
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
 ---
- scripts/xinput_calibrator_pointercal.sh | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
+ scripts/xinput_calibrator_pointercal.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/scripts/xinput_calibrator_pointercal.sh b/scripts/xinput_calibrator_pointercal.sh
-index 0ada7da..6a3aded 100755
+index fccb197..fea7c2f 100755
 --- a/scripts/xinput_calibrator_pointercal.sh
 +++ b/scripts/xinput_calibrator_pointercal.sh
-@@ -37,7 +37,10 @@ done
- 
- [ "$USER" != "root" ] && CALFILE=$USER_CALFILE
+@@ -24,7 +24,8 @@ if [ -e $CALFILE ] ; then
+   fi
+ fi
  
 -CALDATA=`$BINARY --output-type xinput -v | tee $LOGFILE | grep '    xinput set' | sed 's/^    //g; s/$/;/g'`
-+read RESOLUTION <<< $(xrandr | awk -F '[[:space:]+]' '/ connected/ \
-+  { if ($3 != "primary") print $3; if ($3 == "primary") print $4 }')
-+
++RESOLUTION=$(xrandr | awk -F '[[:space:]+]' '/ connected/ { if ($3 != "primary") print $3; if ($3 == "primary") print $4 }')
 +CALDATA=`$BINARY --geometry $RESOLUTION --output-type xinput -v | tee $LOGFILE | grep '    xinput set' | sed 's/^    //g; s/$/;/g'`
  if [ ! -z "$CALDATA" ] ; then
    echo $CALDATA > $CALFILE
    echo "Calibration data stored in $CALFILE (log in $LOGFILE)"
 -- 
-1.9.1
+2.4.0
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
index ac5b70c..57c3a7a 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
@@ -34,5 +34,5 @@
 }
 
 FILES_${PN} += "${sysconfdir}/xdg/autostart"
-RDEPENDS_${PN} = "xinput formfactor"
+RDEPENDS_${PN} = "xinput formfactor xrandr"
 RRECOMMENDS_${PN} = "pointercal-xinput"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xauth_1.0.9.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xauth_1.0.9.bb
index b173f4f..59b3323 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xauth_1.0.9.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xauth_1.0.9.bb
@@ -10,3 +10,6 @@
 
 SRC_URI[md5sum] = "7d6003f32838d5b688e2c8a131083271"
 SRC_URI[sha256sum] = "56ce1523eb48b1f8a4f4244fe1c3d8e6af1a3b7d4b0e6063582421b0b68dc28f"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xhost_1.0.7.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xhost_1.0.7.bb
index 825737f..f23d258 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xhost_1.0.7.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xhost_1.0.7.bb
@@ -15,3 +15,6 @@
 
 SRC_URI[md5sum] = "f5d490738b148cb7f2fe760f40f92516"
 SRC_URI[sha256sum] = "93e619ee15471f576cfb30c663e18f5bc70aca577a63d2c2c03f006a7837c29a"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xrandr_1.4.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xrandr_1.4.3.bb
deleted file mode 100644
index 41bd420..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xrandr_1.4.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "XRandR: X Resize, Rotate and Reflect extension command"
-
-DESCRIPTION = "Xrandr is used to set the size, orientation and/or \
-reflection of the outputs for a screen. It can also set the screen \
-size."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fe1608bdb33cf8c62a4438f7d34679b3"
-DEPENDS += "libxrandr libxrender"
-PE = "1"
-
-SRC_URI[md5sum] = "441fdb98d2abc6051108b7075d948fc7"
-SRC_URI[sha256sum] = "7154ac3486b86923692f2d6cdb2991a2ee72bc32af2c4379a6f1c068f204be1b"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb
new file mode 100644
index 0000000..ea68979
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb
@@ -0,0 +1,15 @@
+require xorg-app-common.inc
+
+SUMMARY = "XRandR: X Resize, Rotate and Reflect extension command"
+
+DESCRIPTION = "Xrandr is used to set the size, orientation and/or \
+reflection of the outputs for a screen. It can also set the screen \
+size."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fe1608bdb33cf8c62a4438f7d34679b3"
+DEPENDS += "libxrandr libxrender"
+PE = "1"
+
+SRC_URI[md5sum] = "ebffac98021b8f1dc71da0c1918e9b57"
+SRC_URI[sha256sum] = "c1cfd4e1d4d708c031d60801e527abc9b6d34b85f2ffa2cadd21f75ff38151cd"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.1.bb
deleted file mode 100644
index cf77ad2..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require xorg-driver-input.inc
-
-SUMMARY = "X.Org X server -- event devices (evdev) input driver"
-
-DESCRIPTION = "evdev is an Xorg input driver for Linux's generic event \
-devices. It therefore supports all input devices that the kernel knows \
-about, including most mice and keyboards. \
-\
-The evdev driver can serve as both a pointer and a keyboard input \
-device, and may be used as both the core keyboard and the core pointer. \
-Multiple input devices are supported by multiple instances of this \
-driver, with one Load directive for evdev in the Module section of your \
-xorg.conf for each input device that will use this driver. "
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=fefe33b1cf0cacba0e72e3b0fa0f0e16"
-
-DEPENDS += "mtdev libevdev"
-
-SRC_URI[md5sum] = "96d89d9406a02f5e36bdaa4edd9a243a"
-SRC_URI[sha256sum] = "af9c2b47f5b272ae56b45da6bd84610fc9a3d80a4b32c8215842a39d862de017"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.3.bb
new file mode 100644
index 0000000..f81c3ec
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.3.bb
@@ -0,0 +1,20 @@
+require xorg-driver-input.inc
+
+SUMMARY = "X.Org X server -- event devices (evdev) input driver"
+
+DESCRIPTION = "evdev is an Xorg input driver for Linux's generic event \
+devices. It therefore supports all input devices that the kernel knows \
+about, including most mice and keyboards. \
+\
+The evdev driver can serve as both a pointer and a keyboard input \
+device, and may be used as both the core keyboard and the core pointer. \
+Multiple input devices are supported by multiple instances of this \
+driver, with one Load directive for evdev in the Module section of your \
+xorg.conf for each input device that will use this driver. "
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=fefe33b1cf0cacba0e72e3b0fa0f0e16"
+
+DEPENDS += "mtdev libevdev"
+
+SRC_URI[md5sum] = "aa3363ce5061d0c4d1e7f7019b99716d"
+SRC_URI[sha256sum] = "5aa21ba4be8df927e5676a99c7f4f0343abc089f5451b7e73e39536f29b332a2"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.16.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.16.0.bb
deleted file mode 100644
index 0252baf..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.16.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-driver-input.inc
-
-SUMMARY = "Generic input driver for the X.Org server based on libinput"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0"
-
-DEPENDS += "libinput"
-
-SRC_URI[md5sum] = "2c8cb520f88da7bafaceebc0b34ea1d4"
-SRC_URI[sha256sum] = "fdade531e91e79acf6dce8ac55fa4f65abe3f1358c5d3d777ae48dbc74b76f49"
-
-FILES_${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.19.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.19.0.bb
new file mode 100644
index 0000000..5e5c471
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.19.0.bb
@@ -0,0 +1,11 @@
+require xorg-driver-input.inc
+
+SUMMARY = "Generic input driver for the X.Org server based on libinput"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0"
+
+DEPENDS += "libinput"
+
+SRC_URI[md5sum] = "52c38b1369764243bfcf6ead1e4c6d32"
+SRC_URI[sha256sum] = "6c5d30dc7c8b8ae34261340e1dc9cbb8ef435078e084b8ef507527a8a21af477"
+
+FILES_${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb
index 8615b48..92a1b25 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb
@@ -23,4 +23,4 @@
 
 EXTRA_OECONF = "--with-udev-rules-dir=${nonarch_base_libdir}/udev/rules.d"
 
-FILES_${PN} += "${nonarch_base_libdir}/udev/rules.d/ ${datadir}/X11/xorg.conf.d"
+FILES_${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-gen8-Fix-the-YUV-RGB-shader.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-gen8-Fix-the-YUV-RGB-shader.patch
deleted file mode 100644
index 3576219..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-gen8-Fix-the-YUV-RGB-shader.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From c43617b739e358064396912c7a7a8028ca91d201 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
-Date: Thu, 16 Apr 2015 20:40:39 +0300
-Subject: [PATCH] gen8: Fix the YUV->RGB shader
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Use the correct register (Yn_01) with first half of the
-Y samples instead of using the register (Yn_23) with the
-second half twice when computing the green channel.
-
-Also use the Yn_01 register name instead of Yn for the red
-channel as well, just for a bit of extra consistency.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89807
-Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Tested-by: Chris Wilson <chris@chris-wilson.co.uk>
-
-Upstream-Status: Backport
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
----
- src/render_program/exa_wm_yuv_rgb.g8a | 4 ++--
- src/render_program/exa_wm_yuv_rgb.g8b | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/render_program/exa_wm_yuv_rgb.g8a b/src/render_program/exa_wm_yuv_rgb.g8a
-index 7def093..34973ba 100644
---- a/src/render_program/exa_wm_yuv_rgb.g8a
-+++ b/src/render_program/exa_wm_yuv_rgb.g8a
-@@ -76,7 +76,7 @@ add (16)    Cbn<1>F		Cb<8,8,1>F	-0.501961F  { compr align1 };
-     /* 
-      * R = Y + Cr * 1.596
-      */
--mov (8)    acc0<1>F		Yn<8,8,1>F		    { compr align1 };
-+mov (8)    acc0<1>F		Yn_01<8,8,1>F		    { compr align1 };
- mac.sat(8) src_sample_r_01<1>F	Crn_01<8,8,1>F	1.596F	    { compr align1 };
-      
- mov (8)    acc0<1>F		Yn_23<8,8,1>F		    { compr align1 };
-@@ -84,7 +84,7 @@ mac.sat(8) src_sample_r_23<1>F	Crn_23<8,8,1>F	1.596F	    { compr align1 };
-     /*
-      * G = Crn * -0.813 + Cbn * -0.392 + Y
-      */
--mov (8)    acc0<1>F		Yn_23<8,8,1>F		    { compr align1 };
-+mov (8)    acc0<1>F		Yn_01<8,8,1>F		    { compr align1 };
- mac (8)    acc0<1>F		Crn_01<8,8,1>F    	-0.813F	    { compr align1 };
- mac.sat(8) src_sample_g_01<1>F	Cbn_01<8,8,1>F    	-0.392F	    { compr align1 };
- 
-diff --git a/src/render_program/exa_wm_yuv_rgb.g8b b/src/render_program/exa_wm_yuv_rgb.g8b
-index 4494953..2cd6fc4 100644
---- a/src/render_program/exa_wm_yuv_rgb.g8b
-+++ b/src/render_program/exa_wm_yuv_rgb.g8b
-@@ -6,7 +6,7 @@
-    { 0x80600048, 0x21c03ae8, 0x3e8d02c0, 0x3fcc49ba },
-    { 0x00600001, 0x24003ae0, 0x008d0320, 0x00000000 },
-    { 0x80600048, 0x21e03ae8, 0x3e8d02e0, 0x3fcc49ba },
--   { 0x00600001, 0x24003ae0, 0x008d0320, 0x00000000 },
-+   { 0x00600001, 0x24003ae0, 0x008d0300, 0x00000000 },
-    { 0x00600048, 0x24003ae0, 0x3e8d02c0, 0xbf5020c5 },
-    { 0x80600048, 0x22003ae8, 0x3e8d0340, 0xbec8b439 },
-    { 0x00600001, 0x24003ae0, 0x008d0320, 0x00000000 },
--- 
-2.5.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-uxa-fix-the-call-to-PixmapSyncDirtyHelper-broken-by-.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-uxa-fix-the-call-to-PixmapSyncDirtyHelper-broken-by-.patch
deleted file mode 100644
index 29924bb..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-uxa-fix-the-call-to-PixmapSyncDirtyHelper-broken-by-.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2c5063938cc809f624e56efd4673041fa8141e81 Mon Sep 17 00:00:00 2001
-From: Martin Peres <martin.peres@linux.intel.com>
-Date: Thu, 9 Jul 2015 11:26:38 +0300
-Subject: [PATCH] uxa: fix the call to PixmapSyncDirtyHelper, broken by
- xserver's 90db5ed
-
-[ickle: switch to HAS_DIRTYTRACKING_ROTATION as suggested by Dave Airlie]
-Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
-
-Upstream-Status: Backport
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
----
- src/compat-api.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/compat-api.h b/src/compat-api.h
-index aa93bee..293e9d7 100644
---- a/src/compat-api.h
-+++ b/src/compat-api.h
-@@ -247,3 +247,7 @@ static inline void FreePixmap(PixmapPtr pixmap)
- #endif
- 
- #endif
-+
-+#if HAS_DIRTYTRACKING_ROTATION
-+#define PixmapSyncDirtyHelper(d, dd) PixmapSyncDirtyHelper(d)
-+#endif
--- 
-2.5.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch
index dda508d..3dddd33 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch
@@ -12,6 +12,6 @@
 index bd654f3..78a0e0d 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -251 +251 @@ fi
--PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-present x11-xcb xshmfence x11 xrender xext libdrm], [x11_dri3="yes"], [x11_dri3="no"])
-+#PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-present x11-xcb xshmfence x11 xrender xext libdrm], [x11_dri3="yes"], [x11_dri3="no"])
+@@ -279 +279 @@ fi
+-PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-xfixes xcb-present x11-xcb xshmfence x11 xcomposite xdamage xrender xrandr xxf86vm xext libdrm], [x11_dri3="yes"], [x11_dri3="no"])
++#PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-xfixes xcb-present x11-xcb xshmfence x11 xcomposite xdamage xrender xrandr xxf86vm xext libdrm], [x11_dri3="yes"], [x11_dri3="no"])
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/sna-Protect-against-ABI-breakage-in-recent-versions-.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/sna-Protect-against-ABI-breakage-in-recent-versions-.patch
deleted file mode 100644
index 589d52e..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/sna-Protect-against-ABI-breakage-in-recent-versions-.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 7fe2b2948652443ff43d907855bd7a051d54d309 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris@chris-wilson.co.uk>
-Date: Thu, 19 Mar 2015 23:14:17 +0000
-Subject: [PATCH] sna: Protect against ABI breakage in recent versions of
- libdrm
-
-commit 7fe2b2948652443ff43d907855bd7a051d54d309 upstream.
-
-Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-Upstream-Status: Backport
-Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-
-diff --git a/src/sna/kgem.c b/src/sna/kgem.c
-index 11f0828f2bbc..6f16cbac87f2 100644
---- a/src/sna/kgem.c
-+++ b/src/sna/kgem.c
-@@ -182,6 +182,15 @@ struct local_i915_gem_caching {
- #define LOCAL_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + LOCAL_I915_GEM_SET_CACHING, struct local_i915_gem_caching)
- #define LOCAL_IOCTL_I915_GEM_GET_CACHING DRM_IOW(DRM_COMMAND_BASE + LOCAL_I915_GEM_GET_CACHING, struct local_i915_gem_caching)
- 
-+struct local_i915_gem_mmap {
-+	uint32_t handle;
-+	uint32_t pad;
-+	uint64_t offset;
-+	uint64_t size;
-+	uint64_t addr_ptr;
-+};
-+#define LOCAL_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct local_i915_gem_mmap)
-+
- struct local_i915_gem_mmap2 {
- 	uint32_t handle;
- 	uint32_t pad;
-@@ -514,15 +523,15 @@ retry_wc:
- 
- static void *__kgem_bo_map__cpu(struct kgem *kgem, struct kgem_bo *bo)
- {
--	struct drm_i915_gem_mmap mmap_arg;
-+	struct local_i915_gem_mmap arg;
- 	int err;
- 
- retry:
--	VG_CLEAR(mmap_arg);
--	mmap_arg.handle = bo->handle;
--	mmap_arg.offset = 0;
--	mmap_arg.size = bytes(bo);
--	if ((err = do_ioctl(kgem->fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg))) {
-+	VG_CLEAR(arg);
-+	arg.handle = bo->handle;
-+	arg.offset = 0;
-+	arg.size = bytes(bo);
-+	if ((err = do_ioctl(kgem->fd, LOCAL_IOCTL_I915_GEM_MMAP, &arg))) {
- 		assert(err != EINVAL);
- 
- 		if (__kgem_throttle_retire(kgem, 0))
-@@ -536,10 +545,10 @@ retry:
- 		return NULL;
- 	}
- 
--	VG(VALGRIND_MAKE_MEM_DEFINED(mmap_arg.addr_ptr, bytes(bo)));
-+	VG(VALGRIND_MAKE_MEM_DEFINED(arg.addr_ptr, bytes(bo)));
- 
- 	DBG(("%s: caching CPU vma for %d\n", __FUNCTION__, bo->handle));
--	return bo->map__cpu = (void *)(uintptr_t)mmap_arg.addr_ptr;
-+	return bo->map__cpu = (void *)(uintptr_t)arg.addr_ptr;
- }
- 
- static int gem_write(int fd, uint32_t handle,
--- 
-2.4.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/udev-fstat.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/udev-fstat.patch
deleted file mode 100644
index 0e675ee..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/udev-fstat.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 12af8a575d1518d40416f83195049157c3a062a5 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris@chris-wilson.co.uk>
-Date: Tue, 24 Feb 2015 15:25:40 +0000
-Subject: sna: udev integration depends on fstat and sys/stat.h
-
-src/sna/sna_driver.c: In function 'sna_handle_uevents':
-src/sna/sna_driver.c:759:2: error: implicit declaration of function 'fstat' [-Werror=implicit-function-declaration]
-
-Also take the opportunity to include udev support in the configure
-summary.
-
-Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-
-diff --git a/configure.ac b/configure.ac
-index 7476e2b..de3a4b3 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -197,11 +197,15 @@ AC_ARG_ENABLE(udev,
- 
- if test "x$UDEV" != "xno"; then
- 	PKG_CHECK_MODULES(UDEV, [libudev], [udev="yes"], [udev="no"])
-+	AC_CHECK_HEADERS([sys/stat.h], [], [udev="no"])
- 	if test "x$UDEV" = "xyes" -a "x$udev" != "xyes"; then
- 		AC_MSG_ERROR([udev support requested but not found (libudev)])
- 	fi
- 	if test "x$udev" = "xyes"; then
- 		AC_DEFINE(HAVE_UDEV,1,[Enable udev-based monitor hotplug detection])
-+		udev_msg=" yes"
-+	else
-+		udev_msg=" no"
- 	fi
- fi
- 
-@@ -911,6 +915,7 @@ echo "  Support for Kernel Mode Setting? $KMS"
- echo "  Support for legacy User Mode Setting (for i810)? $UMS"
- echo "  Support for Direct Rendering Infrastructure:$dri_msg"
- echo "  Support for Xv motion compensation (XvMC and libXvMC):$xvmc_msg"
-+echo "  Support for display hotplug notifications (udev):$udev_msg"
- echo "  Build additional tools and utilities?$tools_msg"
- if test -n "$xp_msg"; then
- echo "  Experimental support:$xp_msg"
-diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
-index 8c0d0b5..bc20ef0 100644
---- a/src/sna/sna_driver.c
-+++ b/src/sna/sna_driver.c
-@@ -740,6 +740,8 @@ sna_wakeup_handler(WAKEUPHANDLER_ARGS_DECL)
- }
- 
- #if HAVE_UDEV
-+#include <sys/stat.h>
-+
- static void
- sna_handle_uevents(int fd, void *closure)
- {
--- 
-cgit v0.10.2
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.99.917.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.99.917.bb
deleted file mode 100644
index d75b44f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.99.917.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-require xorg-driver-video.inc
-
-SUMMARY = "X.Org X server -- Intel integrated graphics chipsets driver"
-
-DESCRIPTION = "intel is an Xorg driver for Intel integrated graphics \
-chipsets. The driver supports depths 8, 15, 16 and 24. On some chipsets, \
-the driver supports hardware accelerated 3D via the Direct Rendering \
-Infrastructure (DRI)."
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
-
-SRC_URI += "file://disable-x11-dri3.patch \
-            file://always_include_xorg_server.h.patch \
-            file://sna-Protect-against-ABI-breakage-in-recent-versions-.patch \
-            file://udev-fstat.patch \
-            file://0001-uxa-fix-the-call-to-PixmapSyncDirtyHelper-broken-by-.patch \
-            file://0001-gen8-Fix-the-YUV-RGB-shader.patch \
-           "
-
-SRC_URI[md5sum] = "fa196a66e52c0c624fe5d350af7a5e7b"
-SRC_URI[sha256sum] = "00b781eea055582820a123c47b62411bdf6aabf4f03dc0568faec55faf9667c9"
-
-DEPENDS += "virtual/libx11 drm libpciaccess pixman"
-
-PACKAGECONFIG ??= "xvmc sna udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri1 dri2', '', d)}"
-
-PACKAGECONFIG[dri] = "--enable-dri,--disable-dri"
-PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1,xf86driproto"
-PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,dri2proto"
-PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,dri3proto"
-PACKAGECONFIG[sna] = "--enable-sna,--disable-sna"
-PACKAGECONFIG[uxa] = "--enable-uxa,--disable-uxa"
-PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
-PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc xcb-util"
-PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxrandr libxdamage libxfixes libxcursor libxtst libxext libxrender"
-
-# --enable-kms-only option is required by ROOTLESS_X
-EXTRA_OECONF += '${@base_conditional( "ROOTLESS_X", "1", " --enable-kms-only", "", d )}'
-
-COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-
-FILES_${PN} += "${datadir}/polkit-1"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
new file mode 100644
index 0000000..06cc730
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
@@ -0,0 +1,43 @@
+require xorg-driver-video.inc
+
+SUMMARY = "X.Org X server -- Intel integrated graphics chipsets driver"
+
+DESCRIPTION = "intel is an Xorg driver for Intel integrated graphics \
+chipsets. The driver supports depths 8, 15, 16 and 24. On some chipsets, \
+the driver supports hardware accelerated 3D via the Direct Rendering \
+Infrastructure (DRI)."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
+
+SRCREV = "8f33f80100096f7790c7b819ce37a3ed8ce8b5fa"
+PV = "2.99.917+git${SRCPV}"
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel \
+           file://disable-x11-dri3.patch \
+           file://always_include_xorg_server.h.patch \
+           "
+
+SRC_URI[md5sum] = "fa196a66e52c0c624fe5d350af7a5e7b"
+SRC_URI[sha256sum] = "00b781eea055582820a123c47b62411bdf6aabf4f03dc0568faec55faf9667c9"
+
+DEPENDS += "virtual/libx11 drm libpciaccess pixman"
+
+PACKAGECONFIG ??= "xvmc sna udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri1 dri2', '', d)}"
+
+PACKAGECONFIG[dri] = "--enable-dri,--disable-dri"
+PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1,xf86driproto"
+PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,dri2proto"
+PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,dri3proto"
+PACKAGECONFIG[sna] = "--enable-sna,--disable-sna"
+PACKAGECONFIG[uxa] = "--enable-uxa,--disable-uxa"
+PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
+PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc xcb-util"
+PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxrandr libxdamage libxfixes libxcursor libxtst libxext libxrender"
+
+# --enable-kms-only option is required by ROOTLESS_X
+EXTRA_OECONF += '${@base_conditional( "ROOTLESS_X", "1", " --enable-kms-only", "", d )}'
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+FILES_${PN} += "${datadir}/polkit-1"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb
index 90846d8..36766f2 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb
@@ -9,7 +9,7 @@
 PE = "1"
 PR = "${INC_PR}.1"
 
-DEPENDS = "mkfontscale-native font-util-native"
+DEPENDS = "mkfontscale-native mkfontdir-native font-util-native"
 RDEPENDS_${PN} = ""
 
 SRC_URI += "file://nocompiler.patch"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb
index 2285124..34646ff 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb
@@ -19,7 +19,4 @@
 SRC_URI[md5sum] = "23756dab809f9ec5011bb27fb2c3c7d6"
 SRC_URI[sha256sum] = "aa7ebdb0715106dd255082f2310dbaa2cd7e225957c2a77d719720c7cc92b921"
 
-SYSROOT_PREPROCESS_FUNCS += "fontutil_sysroot_preprocess"
-fontutil_sysroot_preprocess () {
-	sysroot_stage_dir ${D}${datadir}/fonts/ ${SYSROOT_DESTDIR}${datadir}/fonts/
-}
+SYSROOT_DIRS_BLACKLIST_remove = "${datadir}/fonts"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb
index 5049b7e..b361ad6 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb
@@ -23,5 +23,6 @@
 SRC_URI[md5sum] = "addfb1e897ca8079531669c7c7711726"
 SRC_URI[sha256sum] = "8f7032f2c1c64352b5423f6b48a8ebdc339cc63064af34d66a6c9aa79759e202"
 
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
 PACKAGECONFIG[arc4] = "ac_cv_lib_bsd_arc4random_buf=yes,ac_cv_lib_bsd_arc4random_buf=no,libbsd"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb
index 1925136..da4ed92 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb
@@ -26,3 +26,6 @@
 
 SRC_URI[md5sum] = "499a7773c65aba513609fe651853c5f3"
 SRC_URI[sha256sum] = "0baca8c9f5d934450a70896c4ad38d06475521255ca63b717a6510fdb6e287bd"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch
new file mode 100644
index 0000000..8992386
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch
@@ -0,0 +1,62 @@
+From 8740a288ca468433141341347aa115b9544891d3 Mon Sep 17 00:00:00 2001
+From: Thomas Klausner <wiz@NetBSD.org>
+Date: Thu, 19 May 2016 17:31:18 +0200
+Subject: [PATCH] Fix inconsistent use of tabs vs. space.
+
+Needed for at least python-3.5.x.
+
+Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
+Signed-off-by: Uli Schlachter <psychon@znc.in>
+
+Upstream-Status: Backport
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ src/c_client.py | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/c_client.py b/src/c_client.py
+index 57de3fb..043338d 100644
+--- a/src/c_client.py
++++ b/src/c_client.py
+@@ -1364,7 +1364,7 @@ def _c_serialize(context, self):
+             _c('    unsigned int xcb_align_to = 0;')
+         if self.is_switch:
+             _c('    unsigned int xcb_padding_offset = %d;',
+-	       self.get_align_offset() )
++               self.get_align_offset() )
+         prefix = [('_aux', '->', self)]
+         aux_ptr = 'xcb_out'
+ 
+@@ -1390,7 +1390,7 @@ def _c_serialize(context, self):
+         _c('    unsigned int xcb_align_to = 0;')
+         if self.is_switch:
+             _c('    unsigned int xcb_padding_offset = %d;',
+-	       self.get_align_offset() )
++               self.get_align_offset() )
+ 
+     elif 'sizeof' == context:
+         param_names = [p[2] for p in params]
+@@ -1930,14 +1930,14 @@ def _c_accessors_list(self, field):
+                     # from the request size and divide that by the member size
+                     return '(((R->length * 4) - sizeof('+ self.c_type + '))/'+'sizeof('+field.type.member.c_wiretype+'))'
+                 else:
+-		    # use the accessor to get the start of the list, then
+-		    # compute the length of it by subtracting it from
++                    # use the accessor to get the start of the list, then
++                    # compute the length of it by subtracting it from
+                     # the adress of the first byte after the end of the
+                     # request
+-		    after_end_of_request = '(((char*)R) + R->length * 4)'
+-		    start_of_list = '%s(R)' % (field.c_accessor_name)
++                    after_end_of_request = '(((char*)R) + R->length * 4)'
++                    start_of_list = '%s(R)' % (field.c_accessor_name)
+                     bytesize_of_list = '%s - (char*)(%s)' % (after_end_of_request, start_of_list)
+-		    return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype)
++                    return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype)
+             else:
+                 raise Exception(
+                     "lengthless lists with varsized members are not supported. Fieldname '%s'"
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb_1.11.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb_1.11.1.bb
deleted file mode 100644
index 0856c19..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb_1.11.1.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "XCB: The X protocol C binding library"
-DESCRIPTION = "The X protocol C-language Binding (XCB) is a replacement \
-for Xlib featuring a small footprint, latency hiding, direct access to \
-the protocol, improved threading support, and extensibility."
-HOMEPAGE = "http://xcb.freedesktop.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
-SECTION = "x11/libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7"
-
-SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.bz2 \
-           file://xcbincludedir.patch \
-           file://disable-check.patch \
-           file://gcc-mips-pr68302-mips-workaround.patch \
-          "
-SRC_URI[md5sum] = "f97a65e6158775de518ac391935634c2"
-SRC_URI[sha256sum] = "b720fd6c7d200e5371affdb3f049cc8f88cff9aed942ff1b824d95eedbf69d30"
-
-BBCLASSEXTEND = "native nativesdk"
-
-DEPENDS = "xcb-proto xproto libxau libpthread-stubs libxdmcp"
-
-PACKAGES_DYNAMIC = "^libxcb-.*"
-
-FILES_${PN} = "${libdir}/libxcb.so.*"
-
-inherit autotools pkgconfig distro_features_check
-
-# The libxau and others requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-REQUIRED_DISTRO_FEATURES_class-native = ""
-
-python populate_packages_prepend () {
-    do_split_packages(d, '${libdir}', '^libxcb-(.*)\.so\..*$', 'libxcb-%s', 'XCB library module for %s', allow_links=True)
-}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb_1.12.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb_1.12.bb
new file mode 100644
index 0000000..a38bdea
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcb_1.12.bb
@@ -0,0 +1,39 @@
+SUMMARY = "XCB: The X protocol C binding library"
+DESCRIPTION = "The X protocol C-language Binding (XCB) is a replacement \
+for Xlib featuring a small footprint, latency hiding, direct access to \
+the protocol, improved threading support, and extensibility."
+HOMEPAGE = "http://xcb.freedesktop.org"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
+SECTION = "x11/libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7"
+
+SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.bz2 \
+           file://xcbincludedir.patch \
+           file://disable-check.patch \
+           file://gcc-mips-pr68302-mips-workaround.patch \
+           file://Fix-inconsistent-use-of-tabs-vs.-space.patch \
+          "
+SRC_URI[md5sum] = "28e552bd78bc1050b6b26ca1db0e5bb6"
+SRC_URI[sha256sum] = "4adfb1b7c67e99bc9c2ccb110b2f175686576d2f792c8a71b9c8b19014057b5b"
+
+BBCLASSEXTEND = "native nativesdk"
+
+DEPENDS = "xcb-proto xproto libxau libpthread-stubs libxdmcp"
+
+PACKAGES_DYNAMIC = "^libxcb-.*"
+
+FILES_${PN} = "${libdir}/libxcb.so.*"
+
+inherit autotools pkgconfig distro_features_check
+
+# The libxau and others requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+REQUIRED_DISTRO_FEATURES_class-native = ""
+
+export PYTHON = "python3"
+
+python populate_packages_prepend () {
+    do_split_packages(d, '${libdir}', '^libxcb-(.*)\.so\..*$', 'libxcb-%s', 'XCB library module for %s', allow_links=True)
+}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcursor_1.1.14.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcursor_1.1.14.bb
index a8e4f24..1762904 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcursor_1.1.14.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxcursor_1.1.14.bb
@@ -12,7 +12,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=8902e6643f7bcd7793b23dcd5d8031a4"
 
 DEPENDS += "libxrender libxfixes"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
 PE = "1"
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb
index efa8b65..063e531 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb
@@ -13,7 +13,7 @@
 LICENSE = "MIT-style"
 LIC_FILES_CHKSUM = "file://COPYING;md5=879ce266785414bd1cbc3bc2f4d9d7c8"
 
-DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp"
+DEPENDS += "xproto virtual/libx11 xextproto"
 PROVIDES = "xext"
 
 PE = "1"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxext_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxext_git.bb
deleted file mode 100644
index b799186..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxext_git.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require xorg-lib-common.inc
-
-SUMMARY = "XExt: X Extension library"
-
-DESCRIPTION = "libXext provides an X Window System client interface to \
-several extensions to the X protocol.  The supported protocol extensions \
-are DOUBLE-BUFFER, DPMS, Extended-Visual-Information, LBX, MIT_SHM, \
-MIT_SUNDRY-NONSTANDARD, Multi-Buffering, SECURITY, SHAPE, SYNC, TOG-CUP, \
-XC-APPGROUP, XC-MISC, XTEST.  libXext also provides a small set of \
-utility functions to aid authors of client APIs for X protocol \
-extensions."
-
-DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp"
-PROVIDES = "xext"
-SRCREV = "d1f3bc77a48c8e42771579e3fdf3370b35d3209d"
-PE = "1"
-PV = "1.0.99.1+gitr${SRCPV}"
-
-XORG_PN = "libXext"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/${XORG_PN}"
-S = "${WORKDIR}/git/"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.1.bb
deleted file mode 100644
index 6e2740c..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "XFixes: X Fixes extension library"
-
-DESCRIPTION = "X applications have often needed to work around various \
-shortcomings in the core X window system.  This extension is designed to \
-provide the minimal server-side support necessary to eliminate problems \
-caused by these workarounds."
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0"
-
-DEPENDS += "virtual/libx11 xproto fixesproto xextproto"
-
-PE = "1"
-
-XORG_PN = "libXfixes"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "b985b85f8b9386c85ddcfe1073906b4d"
-SRC_URI[sha256sum] = "63bec085084fa3caaee5180490dd871f1eb2020ba9e9b39a30f93693ffc34767"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.2.bb
new file mode 100644
index 0000000..f078aed
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.2.bb
@@ -0,0 +1,22 @@
+SUMMARY = "XFixes: X Fixes extension library"
+
+DESCRIPTION = "X applications have often needed to work around various \
+shortcomings in the core X window system.  This extension is designed to \
+provide the minimal server-side support necessary to eliminate problems \
+caused by these workarounds."
+
+require xorg-lib-common.inc
+
+LICENSE = "MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0"
+
+DEPENDS += "virtual/libx11 xproto fixesproto xextproto"
+
+PE = "1"
+
+XORG_PN = "libXfixes"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "544d73df94e638ba7b64147be416e576"
+SRC_URI[sha256sum] = "9bd20edfec084a1bed481d48dd4815dee88139fffad091418cdda081129a9aea"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.1.bb
index 1b6e33c..e01f331 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.1.bb
@@ -20,3 +20,6 @@
 
 SRC_URI[md5sum] = "96f76ba94b4c909230bac1e2dcd551c4"
 SRC_URI[sha256sum] = "b70898527c73f9758f551bbab612af611b8a0962202829568d94f3edf4d86098"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb
index 027c804..bb03f44 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb
@@ -18,3 +18,5 @@
 
 SRC_URI[md5sum] = "9336dc46ae3bf5f81c247f7131461efd"
 SRC_URI[sha256sum] = "7a45699f1773095a3f821e491cbd5e10c887c5a5fce5d8d3fced15c2ff7698e2"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.5.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.5.0.bb
deleted file mode 100644
index de22a81..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.5.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Generic XKB keymap library"
-DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \
-processes a reduced subset of keymaps as defined by the XKB specification."
-HOMEPAGE = "http://www.xkbcommon.org"
-LIC_FILES_CHKSUM = "file://COPYING;md5=09457b156e3155972abebcaaaa0cb434"
-LICENSE = "MIT & MIT-style"
-
-DEPENDS = "util-macros flex-native bison-native"
-
-SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "2e1faeafcc609c30af3a561a91e84158"
-SRC_URI[sha256sum] = "90bd7824742b9a6f52a6cf80e2cadd6f5349cf600a358d08260772615b89d19c"
-
-UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-docs"
-
-PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,libxcb xkeyboard-config,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.6.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.6.1.bb
new file mode 100644
index 0000000..fc08109
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.6.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Generic XKB keymap library"
+DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \
+processes a reduced subset of keymaps as defined by the XKB specification."
+HOMEPAGE = "http://www.xkbcommon.org"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=09457b156e3155972abebcaaaa0cb434"
+LICENSE = "MIT & MIT-style"
+
+DEPENDS = "util-macros flex-native bison-native"
+
+SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "67a8f322b5fa32352272e811bb90dd73"
+SRC_URI[sha256sum] = "5b0887b080b42169096a61106661f8d35bae783f8b6c58f97ebcd3af83ea8760"
+
+UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-docs"
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,libxcb xkeyboard-config,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb
index 003baec..d5935ff 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb
@@ -30,3 +30,6 @@
 
 SRC_URI[md5sum] = "41d92ab627dfa06568076043f3e089e4"
 SRC_URI[sha256sum] = "756edc7c383254eef8b4e1b733c3bf1dc061b523c9f9833ac7058378b8349d0b"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.9.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.9.bb
index 9fde040..44cb2e0 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.9.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.9.bb
@@ -11,7 +11,7 @@
 LICENSE = "MIT-style"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8bc71986d3b9b3639f6dfd6fac8f196"
 
-DEPENDS += "virtual/libx11 renderproto xproto xdmcp"
+DEPENDS += "virtual/libx11 renderproto xproto"
 
 PE = "1"
 
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch
index ce6c756..ffc2c15 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch
@@ -3,7 +3,7 @@
 This fixes compilation with x32 toolchain.
 
 Received this patch from H.J. Lu <hjl.tools@gmail.com>
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1
 
 
 --- libXt-1.1.1/include/X11/Xtos.h.x32	2011-02-08 07:56:40.000000000 -0800
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch
new file mode 100644
index 0000000..782c1db
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch
@@ -0,0 +1,33 @@
+From 0ccd906b904d21536d5ab41c6196760e3e5d72cb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 17 May 2016 17:30:00 -0700
+Subject: [PATCH] test/utils: Check for FE_INVALID definition before use
+
+Some architectures e.g. nios2 do not support all exceptions
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ test/utils.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/test/utils.c b/test/utils.c
+index f8e42a5..fe32b1e 100644
+--- a/test/utils.c
++++ b/test/utils.c
+@@ -978,9 +978,11 @@ enable_invalid_exceptions (void)
+ {
+ #ifdef HAVE_FENV_H
+ #ifdef HAVE_FEENABLEEXCEPT
++#ifdef FE_INVALID
+     feenableexcept (FE_INVALID);
+ #endif
+ #endif
++#endif
+ }
+ 
+ void *
+-- 
+2.8.2
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/0001-v3-test-add-a-check-for-FE_DIVBYZERO.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/0001-v3-test-add-a-check-for-FE_DIVBYZERO.patch
deleted file mode 100644
index 6b7c1e6..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/0001-v3-test-add-a-check-for-FE_DIVBYZERO.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From fcd5eb9bd0e8674a6f4987a8fce7dc1ba8f9320c Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Thu, 17 Sep 2015 03:08:36 +0200
-Subject: [PATCH] [v3] test: add a check for FE_DIVBYZERO
-
-Some architectures, such as Microblaze and Nios2, currently do not
-implement FE_DIVBYZERO, even though they have <fenv.h> and
-feenableexcept(). This commit adds a configure.ac check to verify
-whether FE_DIVBYZERO is defined or not, and if not, disables the
-problematic code in test/utils.c.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Backport [commit 4297e9058]
----
-Changes v1 -> v2:
-
- * Use the ac_cv_have_decl_FE_DIVBYZERO variable, which is
-   automatically set by AC_CHECK_DECL, to decide whether or not
-   HAVE_FEDIVBYZERO should be defined.
-
-Changes v2 -> v3:
-
- * Use action-if-yes of AC_CHECK_DECL as suggested in
-   http://lists.freedesktop.org/archives/pixman/2014-February/003176.html
----
- configure.ac | 5 +++++
- test/utils.c | 2 ++
- 2 files changed, 7 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index f93cc30..424bfd3 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -891,6 +891,11 @@ if test x$have_feenableexcept = xyes; then
-    AC_DEFINE(HAVE_FEENABLEEXCEPT, 1, [Whether we have feenableexcept()])
- fi
- 
-+AC_CHECK_DECL([FE_DIVBYZERO],
-+	[AC_DEFINE(HAVE_FEDIVBYZERO, 1, [Whether we have FE_DIVBYZERO])],
-+	[],
-+	[[#include <fenv.h>]])
-+
- AC_CHECK_FUNC(gettimeofday, have_gettimeofday=yes, have_gettimeofday=no)
- AC_CHECK_HEADER(sys/time.h, have_sys_time_h=yes, have_sys_time_h=no)
- if test x$have_gettimeofday = xyes && test x$have_sys_time_h = xyes; then
-diff --git a/test/utils.c b/test/utils.c
-index 222d4d5..8657966 100644
---- a/test/utils.c
-+++ b/test/utils.c
-@@ -966,9 +966,11 @@ enable_divbyzero_exceptions (void)
- {
- #ifdef HAVE_FENV_H
- #ifdef HAVE_FEENABLEEXCEPT
-+#ifdef HAVE_FEDIVBYZERO
-     feenableexcept (FE_DIVBYZERO);
-+#endif
- #endif
- #endif
- }
- 
- void
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/mips-export-revert.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/mips-export-revert.patch
deleted file mode 100644
index 14a5fd2..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman/mips-export-revert.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Revert a commit in pixman 0.32.6 which breaks compliation on MIPS machines with
-errors such as:
-
-pixman-0.32.6/pixman/pixman-mips-dspr2-asm.S:4267:
-Error: invalid operands `mflo $14,$ac3'
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
---- b/pixman/pixman-mips-dspr2-asm.h
-+++ a/pixman/pixman-mips-dspr2-asm.h
-@@ -72,10 +72,7 @@
- #define LEAF_MIPS32R2(symbol)                           \
-                 .globl  symbol;                         \
-                 .align  2;                              \
--#ifdef __ELF__
--                .hidden symbol;                         \
-                 .type   symbol, @function;              \
--#endif
-                 .ent    symbol, 0;                      \
- symbol:         .frame  sp, 0, ra;                      \
-                 .set    push;                           \
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman_0.32.8.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman_0.32.8.bb
deleted file mode 100644
index 553ce36..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman_0.32.8.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Pixman: Pixel Manipulation library"
-
-DESCRIPTION = "Pixman provides a library for manipulating pixel regions \
--- a set of Y-X banded rectangles, image compositing using the \
-Porter/Duff model and implicit mask generation for geometric primitives \
-including trapezoids, triangles, and rectangles."
-
-require xorg-lib-common.inc
-
-# see http://cairographics.org/releases/ - only even minor versions are stable
-UPSTREAM_CHECK_REGEX = "pixman-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
-
-LICENSE = "MIT & MIT-style & PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=14096c769ae0cbb5fcb94ec468be11b3 \
-                    file://pixman/pixman-matrix.c;endline=25;md5=ba6e8769bfaaee2c41698755af04c4be \
-                    file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \
-                   "
-DEPENDS += "zlib libpng"
-BBCLASSEXTEND = "native nativesdk"
-
-PE = "1"
-
-IWMMXT = "--disable-arm-iwmmxt"
-LOONGSON_MMI = "--disable-loongson-mmi"
-# If target supports neon then disable the 'simd' (ie VFPv2) fallback, otherwise disable neon.
-NEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--disable-arm-simd", "--disable-arm-neon" ,d)}"
-
-EXTRA_OECONF = "--disable-gtk ${IWMMXT} ${LOONGSON_MMI} ${NEON}"
-EXTRA_OECONF_class-native = "--disable-gtk"
-EXTRA_OECONF_class-nativesdk = "--disable-gtk"
-
-SRC_URI += "\
-            file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \
-            file://mips-export-revert.patch \
-	    file://asm_include.patch \
-	    file://0001-v3-test-add-a-check-for-FE_DIVBYZERO.patch \
-"
-
-SRC_URI[md5sum] = "18d6b62abdb7bc0f8e6b0ddf48986b2c"
-SRC_URI[sha256sum] = "5c63dbb3523fc4d86ed4186677815918a941b7cb390d5eec4f55cb5d66b59fb1"
-
-REQUIRED_DISTRO_FEATURES = ""
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman_0.34.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman_0.34.0.bb
new file mode 100644
index 0000000..c4ca621
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/pixman_0.34.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Pixman: Pixel Manipulation library"
+
+DESCRIPTION = "Pixman provides a library for manipulating pixel regions \
+-- a set of Y-X banded rectangles, image compositing using the \
+Porter/Duff model and implicit mask generation for geometric primitives \
+including trapezoids, triangles, and rectangles."
+
+require xorg-lib-common.inc
+
+# see http://cairographics.org/releases/ - only even minor versions are stable
+UPSTREAM_CHECK_REGEX = "pixman-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
+
+LICENSE = "MIT & MIT-style & PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=14096c769ae0cbb5fcb94ec468be11b3 \
+                    file://pixman/pixman-matrix.c;endline=25;md5=ba6e8769bfaaee2c41698755af04c4be \
+                    file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \
+                   "
+DEPENDS += "zlib libpng"
+BBCLASSEXTEND = "native nativesdk"
+
+PE = "1"
+
+IWMMXT = "--disable-arm-iwmmxt"
+LOONGSON_MMI = "--disable-loongson-mmi"
+# If target supports neon then disable the 'simd' (ie VFPv2) fallback, otherwise disable neon.
+NEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--disable-arm-simd", "--disable-arm-neon" ,d)}"
+
+EXTRA_OECONF = "--disable-gtk ${IWMMXT} ${LOONGSON_MMI} ${NEON}"
+EXTRA_OECONF_class-native = "--disable-gtk"
+EXTRA_OECONF_class-nativesdk = "--disable-gtk"
+
+SRC_URI += "\
+            file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \
+	    file://asm_include.patch \
+	    file://0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch \
+"
+
+SRC_URI[md5sum] = "002a4fcb644ddfcb4b0e4191576a0d59"
+SRC_URI[sha256sum] = "39ba3438f3d17c464b0cb8be006dacbca0ab5aee97ebde69fec7ecdbf85794a0"
+
+REQUIRED_DISTRO_FEATURES = ""
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.16.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.16.bb
deleted file mode 100644
index 16a1f4f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.16.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Keyboard configuration database for X Window"
-
-DESCRIPTION = "The non-arch keyboard configuration database for X \
-Window.  The goal is to provide the consistent, well-structured, \
-frequently released open source of X keyboard configuration data for X \
-Window System implementations.  The project is targeted to XKB-based \
-systems."
-
-HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
-
-SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
-SRC_URI[md5sum] = "bf6aa31195584cfce01b2194c3e5ea26"
-SRC_URI[sha256sum] = "1e8a1f212c96b7f71ca0b05da361cac1816d27baae1d8e03e7b53049b58d1d58"
-
-SECTION = "x11/libs"
-DEPENDS = "intltool-native virtual/gettext util-macros libxslt-native"
-
-EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
-
-FILES_${PN} += "${datadir}/X11/xkb"
-
-inherit autotools pkgconfig gettext
-
-do_install_append () {
-    install -d ${D}${datadir}/X11/xkb/compiled
-    cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
-}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.18.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.18.bb
new file mode 100644
index 0000000..79fcbd8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.18.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Keyboard configuration database for X Window"
+
+DESCRIPTION = "The non-arch keyboard configuration database for X \
+Window.  The goal is to provide the consistent, well-structured, \
+frequently released open source of X keyboard configuration data for X \
+Window System implementations.  The project is targeted to XKB-based \
+systems."
+
+HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
+
+SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "c28cf45616bfec276879360bc36c6b27"
+SRC_URI[sha256sum] = "c41d917d6c8a59feb7ccbda51c40a6ada824fdd1e9684b52dd48c9530617ddd0"
+
+SECTION = "x11/libs"
+DEPENDS = "intltool-native virtual/gettext util-macros libxslt-native"
+
+EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
+
+FILES_${PN} += "${datadir}/X11/xkb"
+
+inherit autotools pkgconfig gettext
+
+do_install_append () {
+    install -d ${D}${datadir}/X11/xkb/compiled
+    cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
+}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/dri2proto_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/dri2proto_git.bb
deleted file mode 100644
index 9074f48..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/dri2proto_git.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "DRI2: Direct Rendering Infrastructure 2 headers"
-
-DESCRIPTION = "This package provides the wire protocol for the Direct \
-Rendering Ifnrastructure 2.  DIR is required for may hardware \
-accelerated OpenGL drivers."
-
-SRCREV = "66c56ab10d917e3f47f93178d7eac6430970d3c4"
-PV = "1.99.3+git${SRCPV}"
-PR = "r2"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/dri2proto"
-
-LIC_FILES_CHKSUM="file://COPYING;md5=2e396fa91834f8786032cad2da5638f3"
-
-S = "${WORKDIR}/git"
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.1.bb
deleted file mode 100644
index 7e8e0c1..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XI: X Input extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Input \
-extension.  The extension supports input devices other then the core X \
-keyboard and pointer."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e562cc0f6587b961f032211d8160f31e \
-                    file://XI2proto.h;endline=48;md5=1ac1581e61188da2885cc14ff49b20be"
-
-PE = "1"
-
-inherit gettext
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "6caebead4b779ba031727f66a7ffa358"
-SRC_URI[sha256sum] = "5a47ee62053a6acef3a83f506312494be1461068d0b9269d818839703b95c1d1"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb
new file mode 100644
index 0000000..eb5e66b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb
@@ -0,0 +1,22 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XI: X Input extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Input \
+extension.  The extension supports input devices other then the core X \
+keyboard and pointer."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e562cc0f6587b961f032211d8160f31e \
+                    file://XI2proto.h;endline=48;md5=1ac1581e61188da2885cc14ff49b20be"
+
+PE = "1"
+
+inherit gettext
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "b290a463af7def483e6e190de460f31a"
+SRC_URI[sha256sum] = "893a6af55733262058a27b38eeb1edc733669f01d404e8581b167f03c03ef31d"
+
+EXTRA_OECONF += "--without-asciidoc"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_git.bb
deleted file mode 100644
index 6520f3b..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/inputproto_git.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XI: X Input extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Input \
-extension.  The extension supports input devices other then the core X \
-keyboard and pointer."
-
-PR = "r1"
-PE = "1"
-SRCREV = "7203036522ba9d4b224d282d6afc2d0b947711ee"
-PV = "1.9.99.12+git${SRCPV}"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/inputproto"
-S = "${WORKDIR}/git"
-
-inherit gettext
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.2.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.2.bb
deleted file mode 100644
index 53aa759..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.2.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xv: X Video extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Video \
-extension.  This extension alows for accerlated drawing of videos."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ce3472a119a864085fa4155cb0979a7b"
-
-PE = "1"
-
-SRC_URI[md5sum] = "e658641595327d3990eab70fdb55ca8b"
-SRC_URI[sha256sum] = "8dae168cb820fcd32f564879afb3f24d27c176300d9af66819a18265539bd4b6"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb
new file mode 100644
index 0000000..6f97a26
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb
@@ -0,0 +1,14 @@
+require xorg-proto-common.inc
+
+SUMMARY = "Xv: X Video extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Video \
+extension.  This extension alows for accerlated drawing of videos."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ce3472a119a864085fa4155cb0979a7b"
+
+PE = "1"
+
+SRC_URI[md5sum] = "fe86de8ea3eb53b5a8f52956c5cd3174"
+SRC_URI[sha256sum] = "c7803889fd08e6fcaf7b68cc394fb038b2325d1f315e571a6954577e07cca702"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto.inc b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto.inc
deleted file mode 100644
index 8703d63..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto.inc
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "XCB: The X protocol C binding headers"
-DESCRIPTION = "Function prototypes for the X protocol C-language Binding \
-(XCB).  XCB is a replacement for Xlib featuring a small footprint, \
-latency hiding, direct access to the protocol, improved threading \
-support, and extensibility."
-HOMEPAGE = "http://xcb.freedesktop.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
-
-SECTION = "x11/libs"
-LICENSE = "MIT-X"
-
-SRC_URI = "http://xcb.freedesktop.org/dist/xcb-proto-${PV}.tar.bz2 \
-           file://no-python-native.patch"
-
-inherit autotools pkgconfig
-
-PACKAGES += "python-xcbgen"
-
-FILES_${PN} = ""
-FILES_${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/*.xsd"
-FILES_python-xcbgen = "${libdir}/xcb-proto"
-
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch
new file mode 100644
index 0000000..89ec666
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch
@@ -0,0 +1,215 @@
+From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001
+From: Thomas Klausner <wiz@NetBSD.org>
+Date: Thu, 19 May 2016 17:30:04 +0200
+Subject: [PATCH 1/2] Make whitespace use consistent.
+
+At least python-3.5.x complains about this forcefully.
+
+Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
+Signed-off-by: Uli Schlachter <psychon@znc.in>
+
+Upstream-Status: Backport
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ xcbgen/align.py | 96 ++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 48 insertions(+), 48 deletions(-)
+
+diff --git a/xcbgen/align.py b/xcbgen/align.py
+index 5e31838..d4c12ee 100644
+--- a/xcbgen/align.py
++++ b/xcbgen/align.py
+@@ -16,12 +16,12 @@ class Alignment(object):
+         return self.align == other.align and self.offset == other.offset
+ 
+     def __str__(self):
+-	return "(align=%d, offset=%d)" % (self.align, self.offset)
++        return "(align=%d, offset=%d)" % (self.align, self.offset)
+ 
+     @staticmethod
+     def for_primitive_type(size):
+-	# compute the required start_alignment based on the size of the type
+-	if size % 8 == 0:
++        # compute the required start_alignment based on the size of the type
++        if size % 8 == 0:
+             # do 8-byte primitives require 8-byte alignment in X11?
+             return Alignment(8,0)
+         elif size % 4 == 0:
+@@ -33,7 +33,7 @@ class Alignment(object):
+ 
+ 
+     def align_after_fixed_size(self, size):
+-	new_offset = (self.offset + size) % self.align
++        new_offset = (self.offset + size) % self.align
+         return Alignment(self.align, new_offset)
+ 
+ 
+@@ -41,7 +41,7 @@ class Alignment(object):
+         '''
+         Assuming the given external_align, checks whether
+         self is fulfilled for all cases.
+-	Returns True if yes, False otherwise.
++        Returns True if yes, False otherwise.
+         '''
+         if self.align == 1 and self.offset == 0:
+             # alignment 1 with offset 0 is always fulfilled
+@@ -55,9 +55,9 @@ class Alignment(object):
+             # the external align guarantees less alignment -> not guaranteed
+             return False
+ 
+-	if external_align.align % self.align != 0:
++        if external_align.align % self.align != 0:
+             # the external align cannot be divided by our align
+-	    # -> not guaranteed
++            # -> not guaranteed
+             # (this can only happen if there are alignments that are not
+             # a power of 2, which is highly discouraged. But better be
+             # safe and check for it)
+@@ -72,7 +72,7 @@ class Alignment(object):
+ 
+     def combine_with(self, other):
+         # returns the alignment that is guaranteed when
+-	# both, self or other, can happen
++        # both, self or other, can happen
+         new_align = gcd(self.align, other.align)
+         new_offset_candidate1 = self.offset % new_align
+         new_offset_candidate2 = other.offset % new_align
+@@ -83,8 +83,8 @@ class Alignment(object):
+             new_align = gcd(new_align, offset_diff)
+             new_offset_candidate1 = self.offset % new_align
+             new_offset_candidate2 = other.offset % new_align
+-	    assert new_offset_candidate1 == new_offset_candidate2
+-	    new_offset = new_offset_candidate1
++            assert new_offset_candidate1 == new_offset_candidate2
++            new_offset = new_offset_candidate1
+         # return the result
+         return Alignment(new_align, new_offset)
+ 
+@@ -92,44 +92,44 @@ class Alignment(object):
+ class AlignmentLog(object):
+ 
+     def __init__(self):
+-	self.ok_list = []
+-	self.fail_list = []
+-	self.verbosity = 1
++        self.ok_list = []
++        self.fail_list = []
++        self.verbosity = 1
+ 
+     def __str__(self):
+-	result = ""
++        result = ""
+ 
+-	# output the OK-list
+-	for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
+-	    stacksize = len(callstack)
++        # output the OK-list
++        for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
++            stacksize = len(callstack)
+             indent = '  ' * stacksize
+-	    if self.ok_callstack_is_relevant(callstack):
++            if self.ok_callstack_is_relevant(callstack):
+                 if field_name is None or field_name == "":
+-	            result += ("    %sok: %s:\n\t%sbefore: %s, after: %s\n"
+-		        % (indent, str(type_obj), indent, str(align_before), str(align_after)))
+-	        else:
+-		    result += ("    %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
+-		        % (indent, str(field_name), str(type_obj),
+-		           indent, str(align_before), str(align_after)))
++                    result += ("    %sok: %s:\n\t%sbefore: %s, after: %s\n"
++                        % (indent, str(type_obj), indent, str(align_before), str(align_after)))
++                else:
++                    result += ("    %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
++                        % (indent, str(field_name), str(type_obj),
++                           indent, str(align_before), str(align_after)))
+                 if self.verbosity >= 1:
+-		    result += self.callstack_to_str(indent, callstack)
++                    result += self.callstack_to_str(indent, callstack)
+ 
+-	# output the fail-list
+-	for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
+-	    stacksize = len(callstack)
++        # output the fail-list
++        for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
++            stacksize = len(callstack)
+             indent = '  ' * stacksize
+-	    if field_name is None or field_name == "":
+-	        result += ("    %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
+-		    % (indent, str(align_before), indent, str(type_obj), indent, reason))
+-	    else:
+-		result += ("    %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
+-		    % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
++            if field_name is None or field_name == "":
++                result += ("    %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
++                    % (indent, str(align_before), indent, str(type_obj), indent, reason))
++            else:
++                result += ("    %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
++                    % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
+ 
+             if self.verbosity >= 1:
+-	        result += self.callstack_to_str(indent, callstack)
++                result += self.callstack_to_str(indent, callstack)
+ 
+ 
+-	return result
++        return result
+ 
+ 
+     def callstack_to_str(self, indent, callstack):
+@@ -137,41 +137,41 @@ class AlignmentLog(object):
+         for stack_elem in callstack:
+             result += "\t  %s%s\n" % (indent, str(stack_elem))
+         result += "\t%s]\n" % indent
+-	return result
++        return result
+ 
+ 
+     def ok_callstack_is_relevant(self, ok_callstack):
+         # determine whether an ok callstack is relevant for logging
+-	if self.verbosity >= 2:
+-	    return True
++        if self.verbosity >= 2:
++            return True
+ 
+         # empty callstacks are always relevant
+-	if len(ok_callstack) == 0:
++        if len(ok_callstack) == 0:
+             return True
+ 
+-	# check whether the ok_callstack is a subset or equal to a fail_callstack
++        # check whether the ok_callstack is a subset or equal to a fail_callstack
+         for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list:
+             if len(ok_callstack) <= len(fail_callstack):
+                 zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)])
+-		is_subset = all([i == j for i, j in zipped])
+-		if is_subset:
++                is_subset = all([i == j for i, j in zipped])
++                if is_subset:
+                     return True
+ 
+         return False
+ 
+ 
+     def ok(self, align_before, field_name, type_obj, callstack, align_after):
+-	self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
++        self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
+ 
+     def fail(self, align_before, field_name, type_obj, callstack, reason):
+-	self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
++        self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
+ 
+     def append(self, other):
+-	self.ok_list.extend(other.ok_list)
+-	self.fail_list.extend(other.fail_list)
++        self.ok_list.extend(other.ok_list)
++        self.fail_list.extend(other.fail_list)
+ 
+     def ok_count(self):
+-	return len(self.ok_list)
++        return len(self.ok_list)
+ 
+ 
+ 
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch
new file mode 100644
index 0000000..542acb8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch
@@ -0,0 +1,75 @@
+From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001
+From: Thomas Klausner <wiz@NetBSD.org>
+Date: Thu, 19 May 2016 17:30:05 +0200
+Subject: [PATCH 2/2] print() is a function and needs parentheses.
+
+Fixes build with python-3.x.
+
+Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
+Signed-off-by: Uli Schlachter <psychon@znc.in>
+
+Upstream-Status: Backport
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ xcbgen/xtypes.py | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py
+index c3b5758..b83b119 100644
+--- a/xcbgen/xtypes.py
++++ b/xcbgen/xtypes.py
+@@ -501,7 +501,7 @@ class ComplexType(Type):
+                 int(required_start_align_element.get('align', "4"), 0),
+                 int(required_start_align_element.get('offset', "0"), 0))
+             if verbose_align_log:
+-                print "Explicit start-align for %s: %s\n" % (self, self.required_start_align)
++                print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align))
+ 
+     def resolve(self, module):
+         if self.resolved:
+@@ -592,7 +592,7 @@ class ComplexType(Type):
+                 if verbose_align_log:
+                     print ("calc_required_start_align: %s has start-align %s"
+                         % (str(self), str(self.required_start_align)))
+-                    print "Details:\n" + str(log)
++                    print ("Details:\n" + str(log))
+                 if self.required_start_align.offset != 0:
+                     print (("WARNING: %s\n\thas start-align with non-zero offset: %s"
+                         + "\n\tsuggest to add explicit definition with:"
+@@ -619,12 +619,12 @@ class ComplexType(Type):
+             for offset in range(0,align):
+                 align_candidate = Alignment(align, offset)
+                 if verbose_align_log:
+-                    print "trying %s for %s" % (str(align_candidate), str(self))
++                    print ("trying %s for %s" % (str(align_candidate), str(self)))
+                 my_log = AlignmentLog()
+                 if self.is_possible_start_align(align_candidate, callstack, my_log):
+                     log.append(my_log)
+                     if verbose_align_log:
+-                        print "found start-align %s for %s" % (str(align_candidate), str(self))
++                        print ("found start-align %s for %s" % (str(align_candidate), str(self)))
+                     return align_candidate
+                 else:
+                     my_ok_count = my_log.ok_count()
+@@ -641,7 +641,7 @@ class ComplexType(Type):
+         # none of the candidates applies
+         # this type has illegal internal aligns for all possible start_aligns
+         if verbose_align_log:
+-            print "didn't find start-align for %s" % str(self)
++            print ("didn't find start-align for %s" % str(self))
+         log.append(best_log)
+         return None
+ 
+@@ -900,7 +900,7 @@ class SwitchType(ComplexType):
+     # aux function for unchecked_get_alignment_after
+     def get_align_for_selected_case_field(self, case_field, start_align, callstack, log):
+         if verbose_align_log:
+-            print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))
++            print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)))
+         total_align = start_align
+         for field in self.bitcases:
+             my_callstack = callstack[:]
+-- 
+2.9.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch
index f808e19..09b6088 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto/no-python-native.patch
@@ -20,7 +20,7 @@
 -AM_PATH_PYTHON([2.5])
 +pythondir="${libdir}/xcb-proto"
 +AC_SUBST(pythondir)
-+PYTHON="python"
++PYTHON="python3"
 +AC_SUBST(PYTHON)
 
  xcbincludedir='${datadir}/xcb'
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.11.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.11.bb
deleted file mode 100644
index 5bc5a11..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.11.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-include xcb-proto.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \
-                    file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65"
-
-
-SRC_URI[md5sum] = "6bf2797445dc6d43e9e4707c082eff9c"
-SRC_URI[sha256sum] = "b4aceee6502a0ce45fc39b33c541a2df4715d00b72e660ebe8c5bb444771e32e"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb
new file mode 100644
index 0000000..bc04bc4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb
@@ -0,0 +1,40 @@
+SUMMARY = "XCB: The X protocol C binding headers"
+DESCRIPTION = "Function prototypes for the X protocol C-language Binding \
+(XCB).  XCB is a replacement for Xlib featuring a small footprint, \
+latency hiding, direct access to the protocol, improved threading \
+support, and extensibility."
+HOMEPAGE = "http://xcb.freedesktop.org"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
+
+SECTION = "x11/libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \
+                    file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65"
+
+SRC_URI = "http://xcb.freedesktop.org/dist/xcb-proto-${PV}.tar.bz2 \
+           file://no-python-native.patch \
+           file://0001-Make-whitespace-use-consistent.patch \
+           file://0002-print-is-a-function-and-needs-parentheses.patch \
+           "
+SRC_URI[md5sum] = "14e60919f859560f28426a685a555962"
+SRC_URI[sha256sum] = "5922aba4c664ab7899a29d92ea91a87aa4c1fc7eb5ee550325c3216c480a4906"
+
+inherit autotools pkgconfig
+
+PACKAGES += "python-xcbgen"
+
+FILES_${PN} = ""
+FILES_${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/*.xsd"
+FILES_python-xcbgen = "${libdir}/xcb-proto"
+
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install_append() {
+    # Makefile's do_install creates .pyc files for python3, now also create
+    # them for python2 so that they will be recorded by manifest, and can be
+    # cleaned correctly.
+    python -m py_compile ${D}${libdir}/xcb-proto/xcbgen/*.py
+}
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_git.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_git.bb
deleted file mode 100644
index 2ea4d04..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xcb-proto_git.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-
-include xcb-proto.inc
-SRCREV = "d81ca233e98be8fa59e8c90d262c0516944c5a66"
-PV = "1.2+gitr${SRCPV}"
-PR = "r4"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xcb/proto"
-S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb
index d00774e..dde7e9d 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb
@@ -15,3 +15,5 @@
 
 SRC_URI[md5sum] = "9959fe0bfb22a0e7260433b8d199590a"
 SRC_URI[sha256sum] = "977574bb3dc192ecd9c55f59f991ec1dff340be3e31392c95deff423da52485b"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch
index 540ad27..8a5ff58 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch
@@ -8,7 +8,7 @@
 This fixes compilation with x32 toolchain.
 
 Received this patch from H.J. Lu <hjl.tools@gmail.com>
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1
 
 --- xproto-7.0.22/Xmd.h.x32	2009-07-11 04:19:50.000000000 -0700
 +++ xproto-7.0.22/Xmd.h	2011-11-30 17:14:19.290395893 -0800
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.28.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.28.bb
deleted file mode 100644
index 7427a7d..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.28.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xlib: C Language X interface headers"
-
-DESCRIPTION = "This package provides the basic headers for the X Window \
-System."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b9e051107d5628966739a0b2e9b32676"
-
-PE = "1"
-
-SRC_URI += "file://xproto_fix_for_x32.patch"
-
-EXTRA_OECONF_append = " --enable-specs=no"
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "3ce2f230c5d8fa929f326ad1f0fa40a8"
-SRC_URI[sha256sum] = "29e85568d1f68ceef8a2c081dad9bc0e5500a53cfffde24b564dc43d46ddf6ca"
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.29.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.29.bb
new file mode 100644
index 0000000..412b6a2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-proto/xproto_7.0.29.bb
@@ -0,0 +1,19 @@
+require xorg-proto-common.inc
+
+SUMMARY = "Xlib: C Language X interface headers"
+
+DESCRIPTION = "This package provides the basic headers for the X Window \
+System."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b9e051107d5628966739a0b2e9b32676"
+
+PE = "1"
+
+SRC_URI += "file://xproto_fix_for_x32.patch"
+
+EXTRA_OECONF_append = " --enable-specs=no"
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "eeeae1f47d43a33ef0d5c56727410326"
+SRC_URI[sha256sum] = "6c1a477092ca73233902b8d5f33012635c4b0208f17e7833cc7efe5c93ba9f8a"
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/10-preload-modules.conf b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/10-preload-modules.conf
index 7ceb6fd..72e4fbf 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/10-preload-modules.conf
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/10-preload-modules.conf
@@ -3,7 +3,7 @@
     Load "fb"
     Load "shadow"
     Load "shadowfb"
+    Load "int10"
     Load "vbe"
     Load "vgahw"
 EndSection
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index f4c5469..29503b1 100644
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -69,7 +69,7 @@
              xf86-video-modesetting"
 
 SUMMARY_xf86-video-modesetting = "X.Org X server -- modesetting display driver"
-INSANE_SKIP_xf86-video-modesetting = "xorg-driver-abi"
+INSANE_SKIP_${MLPREFIX}xf86-video-modesetting = "xorg-driver-abi"
 
 XSERVER_RRECOMMENDS = "xkeyboard-config rgb xserver-xf86-config xkbcomp"
 RRECOMMENDS_${PN} += "${XSERVER_RRECOMMENDS}"
@@ -131,6 +131,7 @@
 # DRI3 requires xshmfence to also be enabled
 PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,dri3proto"
 PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,glproto virtual/libgl virtual/libx11"
+PACKAGECONFIG[glamor] = "--enable-glamor,--disable-glamor,libepoxy,libegl"
 PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind"
 PACKAGECONFIG[xshmfence] = "--enable-xshmfence,--disable-xshmfence,libxshmfence"
 PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
@@ -167,9 +168,10 @@
         }
         p = subprocess.Popen(args="pkg-config --variable=%s xorg-server" % abis[name],
                              shell=True, env=newenv, stdout=subprocess.PIPE)
-        output = p.communicate()[0]
+        stdout, stderr = p.communicate()
+        output = stdout.decode("utf-8").split(".")[0]
         mlprefix = d.getVar('MLPREFIX', True) or ''
-        return "%sxorg-abi-%s-%s" % (mlprefix, name, output.split(".")[0])
+        return "%sxorg-abi-%s-%s" % (mlprefix, name, output)
 
     pn = d.getVar("PN", True)
     d.appendVar("RPROVIDES_" + pn, " " + get_abi("input"))
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/configure.ac-Use-libsystemd-in-REQUIRED_LIBS-check.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/configure.ac-Use-libsystemd-in-REQUIRED_LIBS-check.patch
deleted file mode 100644
index cd30999..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/configure.ac-Use-libsystemd-in-REQUIRED_LIBS-check.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0c2153d468229f56e6fef71d2f002e0cae14aa55 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Mon, 16 Nov 2015 16:18:40 +0200
-Subject: [PATCH] configure.ac: Use libsystemd in REQUIRED_LIBS check
-
-REQUIRED_LIBS needs to be set to the correct systemd library,
-otherwise the later check will either fail or use the wrong
-pc file.
-
-Upstream-Status: Submitted [xorg-devel@lists.x.org]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- configure.ac | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 96c0242..f63eca1 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -837,9 +837,16 @@ AC_ARG_WITH([systemd-daemon],
- 		[support systemd socket activation (default: auto)]),
- 	[WITH_SYSTEMD_DAEMON=$withval], [WITH_SYSTEMD_DAEMON=auto])
- PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
--                  [HAVE_SYSTEMD_DAEMON=yes],
-+                  [REQUIRED_SYSTEMD_DAEMON=libsystemd-daemon],
-                   [PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd],
--                                     [HAVE_SYSTEMD_DAEMON=yes], [HAVE_SYSTEMD_DAEMON=no])])
-+                                     [REQUIRED_SYSTEMD_DAEMON=libsystemd],
-+                                     [REQUIRED_SYSTEMD_DAEMON=])])
-+if test "x$REQUIRED_SYSTEMD_DAEMON" = x; then
-+        HAVE_SYSTEMD_DAEMON=no
-+else
-+        HAVE_SYSTEMD_DAEMON=yes
-+fi
-+
- if test "x$WITH_SYSTEMD_DAEMON" = xauto; then
- 	WITH_SYSTEMD_DAEMON="$HAVE_SYSTEMD_DAEMON"
- fi
-@@ -848,7 +855,7 @@ if test "x$WITH_SYSTEMD_DAEMON" = xyes; then
- 		AC_MSG_ERROR([systemd support requested but no library has been found])
- 	fi
- 	AC_DEFINE(HAVE_SYSTEMD_DAEMON, 1, [Define to 1 if libsystemd-daemon is available])
--	REQUIRED_LIBS="$REQUIRED_LIBS libsystemd-daemon"
-+	REQUIRED_LIBS="$REQUIRED_LIBS $REQUIRED_SYSTEMD_DAEMON"
- fi
- AM_CONDITIONAL([HAVE_SYSTEMD_DAEMON], [test "x$HAVE_SYSTEMD_DAEMON" = "xyes"])
- 
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/modesetting_libdrm_requirements.patch b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/modesetting_libdrm_requirements.patch
deleted file mode 100644
index 5f186cb..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/modesetting_libdrm_requirements.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From bf23db42a4e5943129501223a47b48884cdeb62f Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Wed, 27 Jan 2016 11:50:13 -0500
-Subject: modesetting: Require sufficiently new libdrm
-
-Bugzilla: https://bugs.freedesktop.org/93883
-Signed-off-by: Adam Jackson <ajax@redhat.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-Reviewed-by: Julien Cristau <jcristau@debian.org>
-
-Upstream-Status: Backport
-Signed-off-by: Johannes Pointner <johannes.pointner@gmail.com>
-
-diff --git a/configure.ac b/configure.ac
-index ac3bb64..312fc69 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2035,8 +2035,7 @@ if test "x$XORG" = xyes; then
- 
- 	if test "x$DRM" = xyes; then
- 		dnl 2.4.46 is required for cursor hotspot support.
--		PKG_CHECK_EXISTS(libdrm >= 2.4.46)
--		XORG_DRIVER_MODESETTING=yes
-+		PKG_CHECK_EXISTS(libdrm >= 2.4.46, XORG_DRIVER_MODESETTING=yes, XORG_DRIVER_MODESETTING=no)
- 	fi
- 
- 	AC_SUBST([XORG_LIBS])
--- 
-cgit v0.10.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.18.0.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.18.0.bb
deleted file mode 100644
index eb79b40..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.18.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-require xserver-xorg.inc
-
-SRC_URI += "file://configure.ac-Use-libsystemd-in-REQUIRED_LIBS-check.patch \
-            file://musl-arm-inb-outb.patch \
-            file://modesetting_libdrm_requirements.patch \
-           "
-SRC_URI[md5sum] = "3c1c1057d3ad27380d8dd87ffcc182cd"
-SRC_URI[sha256sum] = "195670819695d9cedd8dde95fbe069be0d0f488a77797a2d409f9f702daf312e"
-
-# These extensions are now integrated into the server, so declare the migration
-# path for in-place upgrades.
-
-RREPLACES_${PN} =  "${PN}-extension-dri \
-                    ${PN}-extension-dri2 \
-                    ${PN}-extension-record \
-                    ${PN}-extension-extmod \
-                    ${PN}-extension-dbe \
-                   "
-RPROVIDES_${PN} =  "${PN}-extension-dri \
-                    ${PN}-extension-dri2 \
-                    ${PN}-extension-record \
-                    ${PN}-extension-extmod \
-                    ${PN}-extension-dbe \
-                   "
-RCONFLICTS_${PN} = "${PN}-extension-dri \
-                    ${PN}-extension-dri2 \
-                    ${PN}-extension-record \
-                    ${PN}-extension-extmod \
-                    ${PN}-extension-dbe \
-                   "
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.18.4.bb b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.18.4.bb
new file mode 100644
index 0000000..6700565
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.18.4.bb
@@ -0,0 +1,27 @@
+require xserver-xorg.inc
+
+SRC_URI += "file://musl-arm-inb-outb.patch"
+SRC_URI[md5sum] = "d4842dfe3bd9a9d062f2fa1df9104a46"
+SRC_URI[sha256sum] = "278459b2c31d61a15655d95a72fb79930c480a6bb8cf9226e48a07df8b1d31c8"
+
+# These extensions are now integrated into the server, so declare the migration
+# path for in-place upgrades.
+
+RREPLACES_${PN} =  "${PN}-extension-dri \
+                    ${PN}-extension-dri2 \
+                    ${PN}-extension-record \
+                    ${PN}-extension-extmod \
+                    ${PN}-extension-dbe \
+                   "
+RPROVIDES_${PN} =  "${PN}-extension-dri \
+                    ${PN}-extension-dri2 \
+                    ${PN}-extension-record \
+                    ${PN}-extension-extmod \
+                    ${PN}-extension-dbe \
+                   "
+RCONFLICTS_${PN} = "${PN}-extension-dri \
+                    ${PN}-extension-dri2 \
+                    ${PN}-extension-record \
+                    ${PN}-extension-extmod \
+                    ${PN}-extension-dbe \
+                   "
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh b/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh
deleted file mode 100644
index fa43617..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-. /etc/formfactor/config
-
-if [ "$HAVE_TOUCHSCREEN" = "1" ]; then
-	n=1
-	while [ ! -z $TSLIB_TSDEVICE ] && [ ! -f /etc/pointercal ] && [ $n -le 5 ]
-	do
-	   /usr/bin/xtscal
-	   sleep 1
-	   n=$(($n+1))
-	done
-fi
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/change-cross.patch b/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/change-cross.patch
deleted file mode 100644
index 1da7717..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/change-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Upstream-Status: Pending
-
---- tmp/main.c.orig	2007-01-02 15:39:54.000000000 +0000
-+++ tmp/main.c	2007-01-02 15:39:54.000000000 +0000
-@@ -131,9 +131,10 @@
- {
-   XRenderFillRectangles (dpy, PictOpSrc, pict, &rect_color, rectangles, 2);
- 
--  XFillArc (dpy, crosshair_w, crosshair_gc, (CROSSHAIR_SIZE / 2) - (WIDTH / 2) - 1, 
--	    (CROSSHAIR_SIZE / 2) - (WIDTH / 2) - 1,
--	    WIDTH + 1, WIDTH + 1, 0, 360 * 64);
-+  XFillRectangle (dpy, crosshair_w, crosshair_gc,
-+		  (CROSSHAIR_SIZE / 2) - (WIDTH / 2),
-+		  (CROSSHAIR_SIZE / 2) - (WIDTH / 2),
-+		  WIDTH, WIDTH);
- }
- 
- void
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/cleanup.patch b/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/cleanup.patch
deleted file mode 100644
index f7b0854..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/cleanup.patch
+++ /dev/null
@@ -1,621 +0,0 @@
----
- Makefile.am  |    9 --
- configure.ac |    3 
- gpe-dist.am  |   12 ---
- h3600_ts.h   |  216 -----------------------------------------------------------
- main.c       |  210 ++-------------------------------------------------------
- xtscal.in    |   19 -----
- 6 files changed, 14 insertions(+), 455 deletions(-)
-
-Upstream-Status: Pending
-
-Index: xtscal-0.6.3/xtscal.in
-===================================================================
---- xtscal-0.6.3.orig/xtscal.in	2004-09-10 20:10:36.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,19 +0,0 @@
--#!/bin/sh
--
--module_id() {
--    # Get model name
--    echo `grep "^Hardware" /proc/cpuinfo | sed -e "s/.*: *//" | tr a-z A-Z`
--}
--
--case `module_id` in
--	"HP IPAQ H3100" | "HP IPAQ H3800" )
--		ARGS="-rotate 90" ;;
--	"HP IPAQ H3600" | "HP IPAQ H3700" | "HP IPAQ H3900" | *COLLIE | *POODLE)
--		ARGS="-rotate 270" ;;
--	# H2200: works without rotation
--esac
--
--# the things we do for autoconf
--prefix=@prefix@
--exec_prefix=@exec_prefix@
--exec @libexecdir@/xtscal.bin $ARGS $*
-Index: xtscal-0.6.3/main.c
-===================================================================
---- xtscal-0.6.3.orig/main.c	2007-07-01 01:12:52.000000000 +0100
-+++ xtscal-0.6.3/main.c	2007-07-01 01:12:55.000000000 +0100
-@@ -22,12 +22,10 @@
- #include <X11/Xlib.h>
- 
- #include <X11/extensions/Xrender.h>
--#include <X11/extensions/Xrandr.h>
- #include <X11/Xft/Xft.h>
- #include <X11/extensions/xcalibrate.h>
- #include <X11/keysym.h>
- 
--#include "h3600_ts.h"
- #include "calibrate.h"
- 
- Display *dpy;
-@@ -45,15 +43,11 @@ XftColor xftcol;
- XftDraw *xftdraw;
- XftFont *xftfont;
- int screen_x, screen_y;
--int ts_fd;
- int samples;
- Pixmap bg_pixmap;
- int flag_debug;
--int rotation = 0;
- int error_base, event_base;
- 
--int using_xcalibrate;
--
- int moving;
- 
- #define CROSSHAIR_SIZE	25
-@@ -63,7 +57,6 @@ int moving;
- #define ENOUGH 5
- #define MAX_SAMPLES 40
- 
--#define RAW_DEVICE "/dev/h3600_tsraw"
- #define FONTNAME "sans-10"
- 
- struct point 
-@@ -287,12 +280,8 @@ sort_by_y (const void* a, const void *b)
- void
- set_calibration (calibration *cal)
- {
--  TS_CAL tc;
--  int xtrans, ytrans, xscale, yscale, xyscale, yxscale;
-   calibration ocal = *cal;
- 
--  if (using_xcalibrate)
--    {
-       FILE *fp;
-       if (flag_debug)
- 	printf ("constants are: %d %d %d %d %d %d %d\n", cal->a[1], cal->a[2], cal->a[0], cal->a[4], cal->a[5], cal->a[3], cal->a[6]);
-@@ -304,29 +293,6 @@ set_calibration (calibration *cal)
- 	}
-       fprintf (fp, "%d %d %d %d %d %d %d\n", cal->a[1], cal->a[2], cal->a[0], cal->a[4], cal->a[5], cal->a[3], cal->a[6]);
-       fclose (fp); 
--      return;
--    }
--
--  xtrans = cal->a[0] / cal->a[6];
--  ytrans = cal->a[3] / cal->a[6];
--  xscale = cal->a[1] * 256 / cal->a[6];
--  yscale = cal->a[5] * 256 / cal->a[6];
--  xyscale = cal->a[2] * 256 / cal->a[6];
--  yxscale = cal->a[4] * 256 / cal->a[6];
--  
--  tc.xtrans = xtrans;
--  tc.ytrans = ytrans;
--  tc.xscale = xscale;
--  tc.yscale = yscale;
--  tc.xyswap = 0;
--
--  printf ("%d %d %d %d %d\n", tc.xscale, tc.xtrans, tc.yscale, tc.ytrans, tc.xyswap);
--
--  if (ioctl (ts_fd, TS_SET_CAL, (void *)&tc) != 0)
--    {
--      perror ("TS_SET_CAL");
--      exit (1);
--    }
- }
- 
- void
-@@ -398,80 +364,13 @@ handle_ts_event (int x, int y, int press
- }
- 
- void
--read_ts (void)
--{
--  TS_EVENT ts_ev;
--  int r;
--
--  r = read (ts_fd, &ts_ev, sizeof (ts_ev));
--  if (r == sizeof (ts_ev))
--    handle_ts_event (ts_ev.x, ts_ev.y, ts_ev.pressure);
--}
--
--void
--do_cal (char **args)
--{
--  TS_CAL tc;
--
--  tc.xscale = atoi (args[0]);
--  tc.xtrans = atoi (args[1]);
--  tc.yscale = atoi (args[2]);
--  tc.ytrans = atoi (args[3]);
--  tc.xyswap = atoi (args[4]);
--
--  if (flag_debug)
--    fprintf (stderr, "setting: %d %d %d %d %d\n", 
--	     tc.xtrans, tc.ytrans, tc.xscale, tc.yscale, tc.xyswap);
--    
--  if (ioctl (ts_fd, TS_SET_CAL, (void *)&tc) != 0)
--    {
--      perror ("TS_SET_CAL");
--      exit (1);
--    }
--  
--  exit (0);
--}
--
--void
--show_cal (void)
--{
--  TS_CAL tc;
--
--  if (ioctl (ts_fd, TS_GET_CAL, (void *)&tc) != 0)
--    {
--      perror ("TS_GET_CAL");
--      exit (1);
--    }
--
--  printf ("%d %d %d %d %d\n", tc.xscale, tc.xtrans, tc.yscale, tc.ytrans, tc.xyswap);
--}
--
--void
- usage (const char *name)
- {
--  fprintf (stderr, "usage: %s -view\n", name);
--  fprintf (stderr, "       %s [-rotate <0 | 90 | 180 | 270>]\n", name);
--  fprintf (stderr, "       %s -cal <xs> <xt> <ys> <yt> <xyswap>\n", name);
--
-+  fprintf (stderr, "usage: %s [-debug]\n", name);
-   exit (1);
- }
- 
- int
--xrr_supported (void)
--{
--  int xrr_event_base, xrr_error_base;
--  int xrr_major, xrr_minor;
--
--  if (XRRQueryExtension (dpy, &xrr_event_base, &xrr_error_base) == False
--      || XRRQueryVersion (dpy, &xrr_major, &xrr_minor) == 0
--      || xrr_major != 1
--      || xrr_minor < 1)
--    return 0;
--
--  return 1;
--}
--
--int
- main (int argc, char *argv[])
- {
-   XSetWindowAttributes attributes;
-@@ -480,31 +379,11 @@ main (int argc, char *argv[])
-   int max_fd;
-   GC bg_gc;
-   int i;
--  int have_xrandr;
- 
-   for (i = 1; i < argc; i++)
-     {
--      if (!strcmp (argv[i], "-view"))
--	{
--	  show_cal ();
--	  exit (0);
--	}
--      else if (!strcmp (argv[i], "-debug"))
-+      if (!strcmp (argv[i], "-debug"))
- 	flag_debug = 1;
--      else if (!strcmp (argv[i], "-cal"))
--	{
--	  if (argc > (i + 5))
--	    do_cal (argv + i + 1);
--	  else
--	    usage (argv[0]);
--	}
--      else if (!strcmp (argv[i], "-rotate"))
--	{
--	  if (argc > (i + 1))
--	    rotation = atoi (argv[++i]);
--	  else
--	    usage (argv[0]);
--	}
-       else
- 	usage (argv[0]);
-     }
-@@ -531,48 +410,11 @@ main (int argc, char *argv[])
- 	  fprintf (stderr, "failed to set raw mode: error %d\n", r);
- 	  exit (1);
- 	}
--
--      using_xcalibrate = 1;
--    }
--
--  have_xrandr = xrr_supported ();
--  if (have_xrandr)
--    {
--      XRRScreenConfiguration *rr_screen;
--      Rotation current_rotation;
--
--      if (flag_debug)
--	fprintf (stderr, "XRANDR is supported\n");
--
--      rr_screen = XRRGetScreenInfo (dpy, RootWindow (dpy, screen));
--
--      XRRRotations (dpy, screen, &current_rotation);
--
--      XRRFreeScreenConfigInfo (rr_screen);
--
--      if (flag_debug)
--	fprintf (stderr, "Current RANDR rotation is %d\n", current_rotation);
--
--      switch (current_rotation)
--	{
--	case RR_Rotate_270:
--	  rotation += 90;
--	case RR_Rotate_180:
--	  rotation += 90;
--	case RR_Rotate_90:
--	  rotation += 90;
--	  rotation %= 360;
--	case RR_Rotate_0:
--	  break;
--	default:
--	  fprintf (stderr, "Unknown RANDR rotation: %d\n", current_rotation);
--	  break;
--	}
-     }
-   else
-     {
--      if (flag_debug)
--	fprintf (stderr, "XRANDR not supported\n");
-+      perror ("XCALIBRATE extension missing");
-+      exit (1);
-     }
- 
-   attributes.override_redirect = flag_debug ? False : True;
-@@ -666,45 +508,17 @@ main (int argc, char *argv[])
- 
-   for (i = 0; i < NR_POINTS; i++)
-     {
--      switch (rotation)
--	{
--	case 0:
--	  cal.xfb[i] = cal.xscr[i];
--	  cal.yfb[i] = cal.yscr[i];
--	  break;
--	case 90:
--	  cal.xfb[i] = cal.yscr[i];
--	  cal.yfb[i] = screen_x - cal.xscr[i];
--	  break;
--	case 180:
--	  cal.xfb[i] = screen_x - cal.xscr[i];
--	  cal.yfb[i] = screen_y - cal.yscr[i];
--	  break;
--	case 270:
--	  cal.xfb[i] = screen_y - cal.yscr[i];
--	  cal.yfb[i] = cal.xscr[i];
--	  break;
--	}
-+      cal.xfb[i] = cal.xscr[i];
-+      cal.yfb[i] = cal.yscr[i];
-+      XCalibrateScreenToCoord (dpy, &cal.xfb[i], &cal.yfb[i]);
- 
-       if (flag_debug)
--	printf ("rotation %d: (%d,%d) -> (%d,%d)\n", rotation, 
-+	printf ("rotation conversion: (%d,%d) -> (%d,%d)\n",
- 		cal.xscr[i], cal.yscr[i], cal.xfb[i], cal.yfb[i]);
-     }
- 
-   next_event ();
- 
--  if (!using_xcalibrate)
--    {
--      ts_fd = open (RAW_DEVICE, O_RDONLY);
--      if (ts_fd < 0)
--	{
--	  perror (RAW_DEVICE);
--	  exit (1);
--	}
--    }
--
--  max_fd = (xfd > ts_fd) ? xfd : ts_fd;
--
-   for (;;)
-     {
-       fd_set fds;
-@@ -713,12 +527,8 @@ main (int argc, char *argv[])
- 
-       FD_ZERO (&fds);
-       FD_SET (xfd, &fds);
--      if (ts_fd != -1)
--	FD_SET (ts_fd, &fds);
- 
--      select (max_fd + 1, &fds, NULL, NULL, NULL);
--      
--      if (ts_fd != -1 && FD_ISSET (ts_fd, &fds))
--	read_ts ();
-+      select (xfd + 1, &fds, NULL, NULL, NULL);
-     }
- }
-+
-Index: xtscal-0.6.3/configure.ac
-===================================================================
---- xtscal-0.6.3.orig/configure.ac	2004-09-10 20:11:12.000000000 +0100
-+++ xtscal-0.6.3/configure.ac	2007-07-01 01:12:55.000000000 +0100
-@@ -9,8 +9,7 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2])
- # Checks for programs.
- AC_PROG_CC
- 
--PKG_CHECK_MODULES(XTSCAL, x11 xft xext xrandr xcalibrate)
-+PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate)
- 
- AC_CONFIG_FILES([Makefile])
--AC_CONFIG_FILES([xtscal])
- AC_OUTPUT
-Index: xtscal-0.6.3/gpe-dist.am
-===================================================================
---- xtscal-0.6.3.orig/gpe-dist.am	2004-06-02 23:07:13.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,12 +0,0 @@
--CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
--
--dist-upload: dist
--	scp $(PACKAGE)-$(VERSION).tar.bz2 $(USER)@handhelds.org:/home/ftp/pub/projects/gpe/source/
--
--tag:
--	cvs tag $(CVSTAG)
--
--retag:
--	cvs tag -F $(CVSTAG)
--
--source: tag dist-upload
-Index: xtscal-0.6.3/h3600_ts.h
-===================================================================
---- xtscal-0.6.3.orig/h3600_ts.h	2003-07-05 17:27:10.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,216 +0,0 @@
--/*
--*
--* Driver for the H3600 Touch Screen and other Atmel controlled devices.
--*
--* Copyright 2000 Compaq Computer Corporation.
--*
--* Use consistent with the GNU GPL is permitted,
--* provided that this copyright notice is
--* preserved in its entirety in all copies and derived works.
--*
--* COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED,
--* AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS
--* FITNESS FOR ANY PARTICULAR PURPOSE.
--*
--* Author: Charles Flynn.
--*
--*/
--
--
--#ifndef __H3600_TS_H__
--#define __H3600_TS_H__
--
--#include <linux/ioctl.h>
--
--enum h3600_ts_minor_devices {
--	TS_MINOR    = 0,
--	TSRAW_MINOR = 1,
--	KEY_MINOR   = 2
--};
--
--typedef struct h3600_ts_calibration {
--        int xscale;
--        int xtrans;
--        int yscale;
--        int ytrans;
--        int xyswap;
--} TS_CAL;
--
--typedef struct h3600_ts_event {
--        unsigned short pressure;
--        unsigned short x;
--        unsigned short y;
--        unsigned short pad;
--} TS_EVENT;
--
--/* Deprecated - do not use */
--typedef struct h3600_ts_return {
--        unsigned short pressure;
--        unsigned short x;
--        unsigned short y;
--        unsigned short pad;
--} TS_RET;
--
--enum power_button_mode {
--   PBM_SUSPEND           = 0,
--   PBM_GENERATE_KEYPRESS = 1
--};
--
--
--/* ++++++++++++++ +++++++++++++++++++++++++++++++++++++ */
--
--typedef struct therm_dev {
--	short data;
--} THERM_DEV;
--
--#define H3600_BATT_CHEM_ALKALINE        0x01
--#define H3600_BATT_CHEM_NICD            0x02
--#define H3600_BATT_CHEM_NIMH            0x03
--#define H3600_BATT_CHEM_LION            0x04
--#define H3600_BATT_CHEM_LIPOLY          0x05
--#define H3600_BATT_CHEM_NOT_INSTALLED   0x06
--#define H3600_BATT_CHEM_UNKNOWN         0xff
--
--/* These should match the apm_bios.h definitions */
--#define H3600_AC_STATUS_AC_OFFLINE	0x00
--#define H3600_AC_STATUS_AC_ONLINE	0x01
--#define H3600_AC_STATUS_AC_BACKUP	0x02   /* What does this mean? */
--#define H3600_AC_STATUS_AC_UNKNOWN	0xff
--
--/* These bitfields are rarely "or'd" together */
--#define H3600_BATT_STATUS_HIGH		0x01
--#define H3600_BATT_STATUS_LOW		0x02
--#define H3600_BATT_STATUS_CRITICAL	0x04
--#define H3600_BATT_STATUS_CHARGING	0x08
--#define H3600_BATT_STATUS_CHARGE_MAIN   0x10
--#define H3600_BATT_STATUS_DEAD          0x20   /* Battery will not charge */
--#define H3600_BATT_NOT_INSTALLED        0x20   /* For expansion pack batteries */
--#define H3600_BATT_STATUS_FULL          0x40   /* Battery fully charged (and connected to AC) */
--#define H3600_BATT_STATUS_NOBATT	0x80
--#define H3600_BATT_STATUS_UNKNOWN	0xff
--
--struct battery_data {
--	unsigned char  chemistry;
--	unsigned char  status;
--	unsigned short voltage;    /* Voltage for battery #0; unknown for battery #1 */
--	unsigned short percentage; /* Percentage of full charge */
--	unsigned short life;       /* Life remaining in minutes */
--};
--
--struct h3600_battery {
--        unsigned char       ac_status;
--	unsigned char       battery_count;  /* How many batteries we have */
--	struct battery_data battery[2];
--};
--
--/* -------- EEPROM and SPI Interfaces ---------------*/
--
--#define EEPROM_RD_BUFSIZ 6	/* EEPROM reads are 16 bits */
--#define EEPROM_WR_BUFSIZ 5	/* Allow room for 8bit 'addr' field in buffer*/ 
--#define SPI_RD_BUFSIZ	 16	/* SPI reads are 8 bits */
--#define SPI_WR_BUFSIZ	 7
--
--/* The EEPROM is where internal programs are stored on the Amtel.
--   You probably don't want to read or write these values */
--
--typedef struct h3600_eeprom_read_request {
--	unsigned char addr;    /* 8bit Address Offset 0-255 */
--	unsigned char len;     /* Number of 16bit words to read 0-128  */
--	unsigned short buff[EEPROM_RD_BUFSIZ];
--} EEPROM_READ;
--
--typedef struct h3600_eeprom_write_request {
--	unsigned char len;	/* used only to compute the number of bytes to send */
--	unsigned char addr;    /* 0-128  */
--	unsigned short buff[EEPROM_WR_BUFSIZ];
--} EEPROM_WRITE;
--
--/* The SPI bus connects to EEPROMs located on sleeves plugged into
--   the iPAQ.  You may want to read these values  */
--
--typedef struct h3600_spi_read_request {
--	unsigned short addr;    /* 16bit Address Offset 0-128 */
--	unsigned char len;      /* Number of bytes to read */
--	unsigned char buff[SPI_RD_BUFSIZ];
--} SPI_READ;
--
--#define SPI_READ_STATUS_BYTE  0xffff   /* Use this address to read the status byte */
--
--typedef struct h3600_spi_write_request {
--	unsigned short len;	/* used only to compute the number of bytes to send */
--	unsigned short addr;	/* this 16bit address accesses a single byte */
--	unsigned char  buff[SPI_WR_BUFSIZ];
--} SPI_WRITE;
--
--
--/* -------- end of EEPROM and SPI Interfaces ---------------*/
--
--/* User space structures for IOCTL calls */
--
--typedef struct h3600_ts_version {
--	unsigned char host_version[8];	/* ascii "x.yy" */
--	unsigned char pack_version[8];	/* ascii "x.yy" */
--	unsigned char boot_type;		/* TODO ?? */
--} VER_RET;
--
--typedef struct h3600_ts_led {
--        unsigned char OffOnBlink;       /* 0=off 1=on 2=Blink */
--        unsigned char TotalTime;        /* Units of 5 seconds */
--        unsigned char OnTime;           /* units of 100m/s */
--        unsigned char OffTime;          /* units of 100m/s */
--} LED_IN;
--
--enum flite_mode {
--        FLITE_MODE1 = 1,
--	FLITE_AUTO_MODE   = 1,     /* for reference only */
--	FLITE_MANUAL_MODE = 2,     /* Use this normally? */
--	FLITE_GET_LIGHT_SENSOR = 3 /* Returns light reading in "brightness" field */
--};
--enum flite_pwr {
--        FLITE_PWR_OFF = 0,
--        FLITE_PWR_ON  = 1
--};
--
--typedef struct h3600_ts_flite {
--        unsigned char mode;
--        unsigned char pwr;
--        unsigned char brightness;
--} FLITE_IN;
--
--/*************************** Updated "universal" structures *******************/
--
--/* Sets backlight for both H3100 and H3600 models - technically "frontlight" for H3600 */
--struct h3600_ts_backlight {
--	enum flite_pwr power;          /* 0 = off, 1 = on */
--	unsigned char  brightness;     /* 0 - 255         */
--};
--
--struct h3600_ts_contrast {            /* Only useful on H3100 model */
--	unsigned char contrast;       /* 0 - 255 */
--};
--
--/* IOCTL cmds  user or kernel space */
--
--/* Use 'f' as magic number */
--#define IOC_H3600_TS_MAGIC  'f'
--
--/* TODO: Some of these IOWR values are just plain wrong */
--#define GET_VERSION		_IOR(IOC_H3600_TS_MAGIC,  1, struct h3600_ts_version )
--#define READ_EEPROM		_IOWR(IOC_H3600_TS_MAGIC, 2, struct h3600_eeprom_read_request)
--#define WRITE_EEPROM		_IOWR(IOC_H3600_TS_MAGIC, 3, struct h3600_eeprom_write_request)
--#define GET_THERMAL		_IOR(IOC_H3600_TS_MAGIC,  4, struct therm_dev)
--#define LED_ON			_IOW(IOC_H3600_TS_MAGIC,  5, struct h3600_ts_led)
--#define GET_BATTERY_STATUS	_IOR(IOC_H3600_TS_MAGIC,  6, struct h3600_battery)
--#define FLITE_ON		_IOW(IOC_H3600_TS_MAGIC,  7, struct h3600_ts_flite)
--#define READ_SPI		_IOWR(IOC_H3600_TS_MAGIC, 8, struct h3600_spi_read_request)
--#define WRITE_SPI		_IOWR(IOC_H3600_TS_MAGIC, 9, struct h3600_spi_write_request)
--#define TS_GET_CAL		_IOR(IOC_H3600_TS_MAGIC, 10, struct h3600_ts_calibration)
--#define TS_SET_CAL		_IOW(IOC_H3600_TS_MAGIC, 11, struct h3600_ts_calibration)
--
--/* New IOCTL interfaces - defined to be more user friendly */
--#define TS_GET_BACKLIGHT        _IOR(IOC_H3600_TS_MAGIC, 20, struct h3600_ts_backlight)
--#define TS_SET_BACKLIGHT        _IOW(IOC_H3600_TS_MAGIC, 20, struct h3600_ts_backlight)
--#define TS_GET_CONTRAST         _IOR(IOC_H3600_TS_MAGIC, 21, struct h3600_ts_contrast)
--#define TS_SET_CONTRAST         _IOW(IOC_H3600_TS_MAGIC, 21, struct h3600_ts_contrast)
--
--#endif
-Index: xtscal-0.6.3/Makefile.am
-===================================================================
---- xtscal-0.6.3.orig/Makefile.am	2004-06-02 23:07:13.000000000 +0100
-+++ xtscal-0.6.3/Makefile.am	2007-07-02 12:51:02.000000000 +0100
-@@ -1,11 +1,8 @@
--libexec_PROGRAMS = xtscal.bin
--bin_SCRIPTS = xtscal
-+bin_PROGRAMS = xtscal
- 
--xtscal_bin_SOURCES = main.c calibrate.c calibrate.h h3600_ts.h
-+xtscal_SOURCES = main.c calibrate.c calibrate.h
- 
--xtscal_bin_LDADD = @XTSCAL_LIBS@
-+xtscal_LDADD = @XTSCAL_LIBS@
- 
- INCLUDES = @XTSCAL_CFLAGS@ -DNR_POINTS=5
- 
--include gpe-dist.am
--
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch b/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch
deleted file mode 100644
index 3e4533f..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-after gcc linking has changed, all the libraries must be explicitely specified 
-This patch avoids this linking error:
-
-| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux  -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o xtscal main.o calibrate.o -lX11 -lXft -lXext -lXcalibrate^M
-| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: ^?: invalid DSO for symbol `XRenderChangePicture' definition^M
-| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so.1: could not read symbols: Bad value^M
-| collect2: ld returned 1 exit status^M
-| make: *** [xtscal] Error 1
-
-Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: 2011/01/11
-
-Upstream-Status: Pending
-
-Index: xtscal-0.6.3/configure.ac
-===================================================================
---- xtscal-0.6.3.orig/configure.ac
-+++ xtscal-0.6.3/configure.ac
-@@ -9,7 +9,7 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2])
- # Checks for programs.
- AC_PROG_CC
- 
--PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate)
-+PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate xrender)
- 
- AC_CONFIG_FILES([Makefile])
- AC_OUTPUT
diff --git a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb b/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb
deleted file mode 100644
index 4bfddf0..0000000
--- a/import-layers/yocto-poky/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Touchscreen calibration utility"
-
-DESCRIPTION = "Basic touchscreen calibration utility"
-
-HOMEPAGE = "http://gpe.linuxtogo.org"
-BUGTRACKER = "http://bugs.linuxtogo.org"
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://main.c;endline=10;md5=8721bcb08ae9f24e5fe4c82941873c87"
-
-SECTION = "x11/base"
-
-DEPENDS = "virtual/libx11 libxft libxcalibrate"
-
-PR = "r13"
-
-SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2 \
-           file://change-cross.patch \
-           file://cleanup.patch \
-           file://dso_linking_change_build_fix.patch \
-           file://30xTs_Calibrate.sh"
-
-SRC_URI[md5sum] = "9bcab80b474d5454477d1ca166a68c34"
-SRC_URI[sha256sum] = "27b9dc2203de9b1706ca39fa6ca80ecab8807909ec901c4a345b8e41178800a1"
-
-inherit autotools pkgconfig distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-do_install_append() {
-    install -d ${D}${sysconfdir}/X11/Xsession.d/
-    install -m 0755 ${WORKDIR}/30xTs_Calibrate.sh ${D}${sysconfdir}/X11/Xsession.d/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/cryptodev.inc b/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/cryptodev.inc
index ade7ef9..160ab30 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/cryptodev.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/cryptodev.inc
@@ -3,7 +3,9 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRC_URI = "http://download.gna.org/cryptodev-linux/cryptodev-linux-${PV}.tar.gz"
+SRC_URI = "http://download.gna.org/cryptodev-linux/cryptodev-linux-${PV}.tar.gz \
+           file://06d6b560c6e45dc317dae47c74706fa43f4a31d8.patch \
+           file://cb186f682679383e8b5806240927903730ce85d9.patch"
 
 SRC_URI[md5sum] = "02644cc4cd02301e0b503a332eb2f0b5"
 SRC_URI[sha256sum] = "67fabde9fb67b286a96c4f45b594b0eccd0f761b495705c18f2ae9461b831376"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/files/06d6b560c6e45dc317dae47c74706fa43f4a31d8.patch b/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/files/06d6b560c6e45dc317dae47c74706fa43f4a31d8.patch
new file mode 100644
index 0000000..cb556e1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/files/06d6b560c6e45dc317dae47c74706fa43f4a31d8.patch
@@ -0,0 +1,54 @@
+From f14b4706b0d04988e7e5bc8c4d2aefef9f029d9d Mon Sep 17 00:00:00 2001
+From: Michael Weiser <michael.weiser@gmx.de>
+Date: Fri, 5 Aug 2016 18:43:55 +0200
+Subject: [PATCH] Adjust to recent user page API changes
+
+4.6.0 basically renamed get_user_pages() to get_user_pages_remote() and
+introduced a new get_user_pages() that always works on the current
+task.[1] Distinguish the two APIs based on kernel version we're
+compiling for.
+
+Also, there seems to have been a massive cleansing of
+page_cache_release(page) in favour of put_page(page)[2] which was an
+alias for put_page(page)[3] since 2.6.0. Before that beginning with
+2.4.0 both page_cache_release(page) and put_page(page) have been aliases
+for __free_page(page). So using put_page() instead of
+page_cache_release(page) will produce identical code for anything after
+2.4.0.
+
+[1] https://lkml.org/lkml/2016/2/10/555
+[2] https://www.spinics.net/lists/linux-fsdevel/msg95923.html
+[3] https://www.spinics.net/lists/linux-fsdevel/msg95922.html
+---
+ zc.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+Upstream-Status: Backport [from master for 4.8 kernels]
+
+Index: cryptodev-linux-1.8/zc.c
+===================================================================
+--- cryptodev-linux-1.8.orig/zc.c
++++ cryptodev-linux-1.8/zc.c
+@@ -59,7 +59,12 @@ int __get_userbuf(uint8_t __user *addr,
+ 	}
+ 
+ 	down_read(&mm->mmap_sem);
+-	ret = get_user_pages(task, mm,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0))
++	ret = get_user_pages_remote(
++#else
++	ret = get_user_pages(
++#endif
++			task, mm,
+ 			(unsigned long)addr, pgcount, write, 0, pg, NULL);
+ 	up_read(&mm->mmap_sem);
+ 	if (ret != pgcount)
+@@ -119,7 +124,7 @@ void release_user_pages(struct csession
+ 		else
+ 			ses->readonly_pages--;
+ 
+-		page_cache_release(ses->pages[i]);
++		put_page(ses->pages[i]);
+ 	}
+ 	ses->used_pages = 0;
+ }
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/files/cb186f682679383e8b5806240927903730ce85d9.patch b/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/files/cb186f682679383e8b5806240927903730ce85d9.patch
new file mode 100644
index 0000000..eb0eab6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/cryptodev/files/cb186f682679383e8b5806240927903730ce85d9.patch
@@ -0,0 +1,279 @@
+From cb186f682679383e8b5806240927903730ce85d9 Mon Sep 17 00:00:00 2001
+From: Michael Weiser <michael.weiser@gmx.de>
+Date: Fri, 5 Aug 2016 17:26:27 +0200
+Subject: [PATCH] Support skcipher in addition to ablkcipher API
+
+The ablkcipher API is being phased out[1]. The unified skcipher API
+seems to have made its entry with 4.3.[3, 4] By what can be seen from
+migration patches[1.ff.], it's a drop-in replacement.
+
+Also, deallocators such as crypto_free_skcipher() are NULL-safe now[2].
+
+Add a new header cipherapi.h to aid migration from ablkcipher to skcipher and
+retain support for old kernels. Make it decide which API to use and provide
+appropriate function calls and type definitions. Since the ablkcipher and
+skcipher APIs are so similar, those are mainly defines for corresponding
+pseudo-functions in namespace cryptodev_ derived directly from their API
+counterparts.
+
+Compiles and works (i.e. checks pass) with Debian testing 4.6.4 kernel
+as well as 4.8-rc2+ Linus git tree as of today. (Both require a fix for
+changed page access API[5].)
+
+[1] https://www.spinics.net/lists/linux-crypto/msg18133.html
+[2] https://www.spinics.net/lists/linux-crypto/msg18154.html, line 120
+[3] https://www.spinics.net/lists/linux-crypto/msg16373.html
+[4] https://www.spinics.net/lists/linux-crypto/msg16294.html
+[5] https://github.com/cryptodev-linux/cryptodev-linux/pull/14
+---
+ cipherapi.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ cryptlib.c  | 40 ++++++++++++++++++----------------------
+ cryptlib.h  |  6 ++++--
+ ioctl.c     |  4 ++--
+ 4 files changed, 84 insertions(+), 26 deletions(-)
+ create mode 100644 cipherapi.h
+
+Upstream-Status: Backport [from master for 4.8 kernels]
+
+Index: cryptodev-linux-1.8/cipherapi.h
+===================================================================
+--- /dev/null
++++ cryptodev-linux-1.8/cipherapi.h
+@@ -0,0 +1,60 @@
++#ifndef CIPHERAPI_H
++# define CIPHERAPI_H
++
++#include <linux/version.h>
++
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
++# include <linux/crypto.h>
++
++typedef struct ablkcipher_alg cryptodev_blkcipher_alg_t;
++typedef struct crypto_ablkcipher cryptodev_crypto_blkcipher_t;
++typedef struct ablkcipher_request cryptodev_blkcipher_request_t;
++
++# define cryptodev_crypto_alloc_blkcipher crypto_alloc_ablkcipher
++# define cryptodev_crypto_blkcipher_alg crypto_ablkcipher_alg
++# define cryptodev_crypto_blkcipher_blocksize crypto_ablkcipher_blocksize
++# define cryptodev_crypto_blkcipher_ivsize crypto_ablkcipher_ivsize
++# define cryptodev_crypto_blkcipher_alignmask crypto_ablkcipher_alignmask
++# define cryptodev_crypto_blkcipher_setkey crypto_ablkcipher_setkey
++
++static inline void cryptodev_crypto_free_blkcipher(cryptodev_crypto_blkcipher_t *c) {
++	if (c)
++		crypto_free_ablkcipher(c);
++}
++
++# define cryptodev_blkcipher_request_alloc ablkcipher_request_alloc
++# define cryptodev_blkcipher_request_set_callback ablkcipher_request_set_callback
++
++static inline void cryptodev_blkcipher_request_free(cryptodev_blkcipher_request_t *r) {
++	if (r)
++		ablkcipher_request_free(r);
++}
++
++# define cryptodev_blkcipher_request_set_crypt ablkcipher_request_set_crypt
++# define cryptodev_crypto_blkcipher_encrypt crypto_ablkcipher_encrypt
++# define cryptodev_crypto_blkcipher_decrypt crypto_ablkcipher_decrypt
++# define cryptodev_crypto_blkcipher_tfm crypto_ablkcipher_tfm
++#else
++#include <crypto/skcipher.h>
++
++typedef struct skcipher_alg cryptodev_blkcipher_alg_t;
++typedef struct crypto_skcipher cryptodev_crypto_blkcipher_t;
++typedef struct skcipher_request cryptodev_blkcipher_request_t;
++
++# define cryptodev_crypto_alloc_blkcipher crypto_alloc_skcipher
++# define cryptodev_crypto_blkcipher_alg crypto_skcipher_alg
++# define cryptodev_crypto_blkcipher_blocksize crypto_skcipher_blocksize
++# define cryptodev_crypto_blkcipher_ivsize crypto_skcipher_ivsize
++# define cryptodev_crypto_blkcipher_alignmask crypto_skcipher_alignmask
++# define cryptodev_crypto_blkcipher_setkey crypto_skcipher_setkey
++# define cryptodev_crypto_free_blkcipher crypto_free_skcipher
++# define cryptodev_blkcipher_request_alloc skcipher_request_alloc
++# define cryptodev_blkcipher_request_set_callback skcipher_request_set_callback
++# define cryptodev_blkcipher_request_free skcipher_request_free
++# define cryptodev_blkcipher_request_set_crypt skcipher_request_set_crypt
++# define cryptodev_crypto_blkcipher_encrypt crypto_skcipher_encrypt
++# define cryptodev_crypto_blkcipher_decrypt crypto_skcipher_decrypt
++# define cryptodev_crypto_blkcipher_tfm crypto_skcipher_tfm
++#endif
++
++#endif
+Index: cryptodev-linux-1.8/cryptlib.c
+===================================================================
+--- cryptodev-linux-1.8.orig/cryptlib.c
++++ cryptodev-linux-1.8/cryptlib.c
+@@ -23,7 +23,6 @@
+  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+  */
+ 
+-#include <linux/crypto.h>
+ #include <linux/mm.h>
+ #include <linux/highmem.h>
+ #include <linux/ioctl.h>
+@@ -37,6 +36,7 @@
+ #include <linux/rtnetlink.h>
+ #include <crypto/authenc.h>
+ #include "cryptodev_int.h"
++#include "cipherapi.h"
+ 
+ 
+ struct cryptodev_result {
+@@ -133,15 +133,15 @@ int cryptodev_cipher_init(struct cipher_
+ 	int ret;
+ 
+ 	if (aead == 0) {
+-		struct ablkcipher_alg *alg;
++		cryptodev_blkcipher_alg_t *alg;
+ 
+-		out->async.s = crypto_alloc_ablkcipher(alg_name, 0, 0);
++		out->async.s = cryptodev_crypto_alloc_blkcipher(alg_name, 0, 0);
+ 		if (unlikely(IS_ERR(out->async.s))) {
+ 			ddebug(1, "Failed to load cipher %s", alg_name);
+ 				return -EINVAL;
+ 		}
+ 
+-		alg = crypto_ablkcipher_alg(out->async.s);
++		alg = cryptodev_crypto_blkcipher_alg(out->async.s);
+ 		if (alg != NULL) {
+ 			/* Was correct key length supplied? */
+ 			if (alg->max_keysize > 0 &&
+@@ -154,11 +154,11 @@ int cryptodev_cipher_init(struct cipher_
+ 			}
+ 		}
+ 
+-		out->blocksize = crypto_ablkcipher_blocksize(out->async.s);
+-		out->ivsize = crypto_ablkcipher_ivsize(out->async.s);
+-		out->alignmask = crypto_ablkcipher_alignmask(out->async.s);
++		out->blocksize = cryptodev_crypto_blkcipher_blocksize(out->async.s);
++		out->ivsize = cryptodev_crypto_blkcipher_ivsize(out->async.s);
++		out->alignmask = cryptodev_crypto_blkcipher_alignmask(out->async.s);
+ 
+-		ret = crypto_ablkcipher_setkey(out->async.s, keyp, keylen);
++		ret = cryptodev_crypto_blkcipher_setkey(out->async.s, keyp, keylen);
+ 	} else {
+ 		out->async.as = crypto_alloc_aead(alg_name, 0, 0);
+ 		if (unlikely(IS_ERR(out->async.as))) {
+@@ -191,14 +191,14 @@ int cryptodev_cipher_init(struct cipher_
+ 	init_completion(&out->async.result->completion);
+ 
+ 	if (aead == 0) {
+-		out->async.request = ablkcipher_request_alloc(out->async.s, GFP_KERNEL);
++		out->async.request = cryptodev_blkcipher_request_alloc(out->async.s, GFP_KERNEL);
+ 		if (unlikely(!out->async.request)) {
+ 			derr(1, "error allocating async crypto request");
+ 			ret = -ENOMEM;
+ 			goto error;
+ 		}
+ 
+-		ablkcipher_request_set_callback(out->async.request,
++		cryptodev_blkcipher_request_set_callback(out->async.request,
+ 					CRYPTO_TFM_REQ_MAY_BACKLOG,
+ 					cryptodev_complete, out->async.result);
+ 	} else {
+@@ -218,10 +218,8 @@ int cryptodev_cipher_init(struct cipher_
+ 	return 0;
+ error:
+ 	if (aead == 0) {
+-		if (out->async.request)
+-			ablkcipher_request_free(out->async.request);
+-		if (out->async.s)
+-			crypto_free_ablkcipher(out->async.s);
++		cryptodev_blkcipher_request_free(out->async.request);
++		cryptodev_crypto_free_blkcipher(out->async.s);
+ 	} else {
+ 		if (out->async.arequest)
+ 			aead_request_free(out->async.arequest);
+@@ -237,10 +235,8 @@ void cryptodev_cipher_deinit(struct ciph
+ {
+ 	if (cdata->init) {
+ 		if (cdata->aead == 0) {
+-			if (cdata->async.request)
+-				ablkcipher_request_free(cdata->async.request);
+-			if (cdata->async.s)
+-				crypto_free_ablkcipher(cdata->async.s);
++			cryptodev_blkcipher_request_free(cdata->async.request);
++			cryptodev_crypto_free_blkcipher(cdata->async.s);
+ 		} else {
+ 			if (cdata->async.arequest)
+ 				aead_request_free(cdata->async.arequest);
+@@ -289,10 +285,10 @@ ssize_t cryptodev_cipher_encrypt(struct
+ 	reinit_completion(&cdata->async.result->completion);
+ 
+ 	if (cdata->aead == 0) {
+-		ablkcipher_request_set_crypt(cdata->async.request,
++		cryptodev_blkcipher_request_set_crypt(cdata->async.request,
+ 			(struct scatterlist *)src, dst,
+ 			len, cdata->async.iv);
+-		ret = crypto_ablkcipher_encrypt(cdata->async.request);
++		ret = cryptodev_crypto_blkcipher_encrypt(cdata->async.request);
+ 	} else {
+ 		aead_request_set_crypt(cdata->async.arequest,
+ 			(struct scatterlist *)src, dst,
+@@ -311,10 +307,10 @@ ssize_t cryptodev_cipher_decrypt(struct
+ 
+ 	reinit_completion(&cdata->async.result->completion);
+ 	if (cdata->aead == 0) {
+-		ablkcipher_request_set_crypt(cdata->async.request,
++		cryptodev_blkcipher_request_set_crypt(cdata->async.request,
+ 			(struct scatterlist *)src, dst,
+ 			len, cdata->async.iv);
+-		ret = crypto_ablkcipher_decrypt(cdata->async.request);
++		ret = cryptodev_crypto_blkcipher_decrypt(cdata->async.request);
+ 	} else {
+ 		aead_request_set_crypt(cdata->async.arequest,
+ 			(struct scatterlist *)src, dst,
+Index: cryptodev-linux-1.8/cryptlib.h
+===================================================================
+--- cryptodev-linux-1.8.orig/cryptlib.h
++++ cryptodev-linux-1.8/cryptlib.h
+@@ -3,6 +3,8 @@
+ 
+ #include <linux/version.h>
+ 
++#include "cipherapi.h"
++
+ struct cipher_data {
+ 	int init; /* 0 uninitialized */
+ 	int blocksize;
+@@ -12,8 +14,8 @@ struct cipher_data {
+ 	int alignmask;
+ 	struct {
+ 		/* block ciphers */
+-		struct crypto_ablkcipher *s;
+-		struct ablkcipher_request *request;
++		cryptodev_crypto_blkcipher_t *s;
++		cryptodev_blkcipher_request_t *request;
+ 
+ 		/* AEAD ciphers */
+ 		struct crypto_aead *as;
+Index: cryptodev-linux-1.8/ioctl.c
+===================================================================
+--- cryptodev-linux-1.8.orig/ioctl.c
++++ cryptodev-linux-1.8/ioctl.c
+@@ -34,7 +34,6 @@
+  */
+ 
+ #include <crypto/hash.h>
+-#include <linux/crypto.h>
+ #include <linux/mm.h>
+ #include <linux/highmem.h>
+ #include <linux/ioctl.h>
+@@ -53,6 +52,7 @@
+ #include "cryptodev_int.h"
+ #include "zc.h"
+ #include "version.h"
++#include "cipherapi.h"
+ 
+ MODULE_AUTHOR("Nikos Mavrogiannopoulos <nmav@gnutls.org>");
+ MODULE_DESCRIPTION("CryptoDev driver");
+@@ -765,7 +765,7 @@ static int get_session_info(struct fcryp
+ 
+ 	if (ses_ptr->cdata.init) {
+ 		if (ses_ptr->cdata.aead == 0)
+-			tfm = crypto_ablkcipher_tfm(ses_ptr->cdata.async.s);
++			tfm = cryptodev_crypto_blkcipher_tfm(ses_ptr->cdata.async.s);
+ 		else
+ 			tfm = crypto_aead_tfm(ses_ptr->cdata.async.as);
+ 		tfm_info_to_alg_info(&siop->cipher_info, tfm);
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
index 445d03a..d8041dd 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
@@ -1,10 +1,10 @@
 SUMMARY = "Tools for managing Yocto Project style branched kernels"
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=d8d1d729a70cd5f52972f8884b80743d"
+LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=a6c2fa8aef1bda400e2828845ba0d06c"
 
 DEPENDS = "git-native"
 
-SRCREV = "17d89d1861b532bbf1a81c1f024953e440db8de7"
+SRCREV = "9a3995ee8daabf37e92e1b51b133cf8582d85809"
 PR = "r12"
 PV = "0.2+git${SRCPV}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools.inc b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools.inc
index 758a3a7..bdfe024 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools.inc
@@ -22,6 +22,10 @@
 INSANE_SKIP_${PN} = "arch"
 
 do_compile_prepend() {
+    # Remove the prepackaged config.h from the source tree as it overrides
+    # the same file generated by configure and placed in the build tree
+    rm -f ${S}/include/config.h
+
     # Remove the '*.d' file to make sure the recompile is OK
     for dep in `find ${B} -type f -name '*.d'`; do
         dep_no_d="`echo $dep | sed 's#.d$##'`"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump
index 3fb133f..2347205 100755
--- a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump
+++ b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump
@@ -8,23 +8,7 @@
 #
 
 #default
-KDUMP_KVER="`uname -r`"
-KDUMP_KIMAGE="/boot/bzImage-${KDUMP_KVER}"
-KDUMP_CMDLINE="`cat /proc/cmdline`"
-KDUMP_CMDLINE_APPEND="kdump_needed maxcpus=1 irqpoll reset_devices"
-KDUMP_VMCORE_PATH="/var/crash/`date +"%Y-%m-%d"`"
-
-#get right kernel image
-march="`uname -m`"
-case ${march} in
-	x86*|i?86)
-		;;
-		*)
-		KDUMP_KIMAGE="/boot/uImage-${KDUMP_KVER}"
-		;;
-esac
-
-KEXEC=usr/sbin/kexec
+KEXEC=/usr/sbin/kexec
 KEXEC_ARGS="-p"
 
 MAKEDUMPFILE=/usr/bin/makedumpfile
@@ -34,6 +18,9 @@
 
 if [ -f /etc/sysconfig/kdump.conf ]; then
 	. /etc/sysconfig/kdump.conf
+else
+	echo "no /etc/sysconfig/kdump.conf"
+	exit 1;
 fi
 
 do_check()
@@ -41,24 +28,33 @@
 	#check makedumpfile
 	if [ ! -e ${MAKEDUMPFILE} -o ! -x ${MAKEDUMPFILE} ] ;then
 		echo "No makedumpfile found."
-		return 1;
+		exit 0
 	fi
 
 	#check kexec
 	if [ ! -e ${KEXEC} -o ! -x ${KEXEC} ] ;then
 		echo "No kexec found."
-		return 1;
+		exit 0
 	fi
 
 	#check whether kdump kernel image exists on the system
-	if [ ! -f ${KDUMP_KIMAGE} ]; then
+	if [ -z "${KDUMP_KIMAGE}" -o ! -f "${KDUMP_KIMAGE}" ]; then
 		echo "No kdump kernel image found."
-		return 1
+		exit 0
+	fi
+
+	if [ "${KDUMP_CMDLINE}"x = "x" ] ; then
+		echo "KDUMP_CMDLINE is not configured"
+		exit 0
 	fi
 }
 
 do_save_vmcore()
 {
+	if [ ${KDUMP_VMCORE_PATH}x = x ]; then
+		KDUMP_VMCORE_PATH="/var/crash/`date +"%Y-%m-%d"`"
+	fi
+
 	mkdir -p ${KDUMP_VMCORE_PATH}
 	echo "Saving a vmcore to ${KDUMP_VMCORE_PATH}."
 
@@ -101,20 +97,6 @@
 		return 1
 	fi
 
-	#handle kdump cmdline parameters, remove some useless options
-	kcmdline=""
-	for x in `cat /proc/cmdline`; do
-		case $x in
-			crashkernel*)
-				;;
-			*)
-				kcmdline="${kcmdline} $x"
-				;;
-		esac
-	done
-
-	KDUMP_CMDLINE="${kcmdline} ${KDUMP_CMDLINE_APPEND}"
-
 	#Load the kdump kernel image
 	${KEXEC} ${KEXEC_ARGS} "${KDUMP_KIMAGE}" --append="${KDUMP_CMDLINE}"
 	if [ $? != 0 ]; then
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump.conf b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump.conf
index 42a2435..38190d2 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump.conf
+++ b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kdump.conf
@@ -1,13 +1,9 @@
 #the kdump kernel version string.
 #KDUMP_KVER="`uname -r`"
 
-#this will be passed to the kdump kernel as kdump kernel command line, it
-#usually comes from /proc/cmdline
+#this will be passed to the kdump kernel as kdump kernel command line
 #KDUMP_CMDLINE="`cat /proc/cmdline`"
 
-# append arguments to the kdump commandline
-#KDUMP_CMDLINE_APPEND="kdump_needed maxcpus=1 irqpoll reset_devices"
-
 #the kernel image for kdump
 #KDUMP_KIMAGE="/boot/bzImage-${KDUMP_KVER}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kexec-tools-Refine-kdump-device_tree-sort.patch b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kexec-tools-Refine-kdump-device_tree-sort.patch
deleted file mode 100644
index e198eb6..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools/kexec-tools-Refine-kdump-device_tree-sort.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-kexec-tools: Refine kdump device_tree sort
-
-The commit b02d735bf was to rearrange the device-tree entries, and
-assumed that these entries are sorted in the ascending order. but
-acctually when I was validating kexec and kdump, the order of
-serial node still is changed. So the patch is to sort these entries
-by the directory name in ascending order.
-
-Upstream-Status: Pending
-
-Signed-off-by: Yang Wei <Wei.Yang@windriver.com>
-Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
----
- kexec/arch/ppc/fs2dt.c |   13 ++++++++++---
- kexec/fs2dt.c          |   13 ++++++++++---
- 2 files changed, 20 insertions(+), 6 deletions(-)
-
-Index: kexec-tools-2.0.10/kexec/arch/ppc/fs2dt.c
-===================================================================
---- kexec-tools-2.0.10.orig/kexec/arch/ppc/fs2dt.c
-+++ kexec-tools-2.0.10/kexec/arch/ppc/fs2dt.c
-@@ -296,6 +296,9 @@ static int comparefunc(const void *dentr
- {
- 	char *str1 = (*(struct dirent **)dentry1)->d_name;
- 	char *str2 = (*(struct dirent **)dentry2)->d_name;
-+	char* ptr1 = strchr(str1, '@');
-+	char* ptr2 = strchr(str2, '@');
-+	int len1, len2;
- 
- 	/*
- 	 * strcmp scans from left to right and fails to idetify for some
-@@ -303,9 +306,13 @@ static int comparefunc(const void *dentr
- 	 * Therefore, we get the wrong sorted order like memory@10000000 and
- 	 * memory@f000000.
- 	 */
--	if (strchr(str1, '@') && strchr(str2, '@') &&
--		(strlen(str1) > strlen(str2)))
--		return 1;
-+	if (ptr1 && ptr2) {
-+		len1 = ptr1 - str1;
-+		len2 = ptr2 - str2;
-+		if (!strncmp(str1, str2, len1 >len2 ? len1: len2) &&
-+					(strlen(str1) > strlen(str2)))
-+				return 1;
-+	}
- 
- 	return strcmp(str1, str2);
- }
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools_2.0.11.bb b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools_2.0.11.bb
deleted file mode 100644
index c1c97af..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools_2.0.11.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-require kexec-tools.inc
-export LDFLAGS = "-L${STAGING_LIBDIR}"
-EXTRA_OECONF = " --with-zlib=yes"
-
-SRC_URI += "file://kexec-tools-Refine-kdump-device_tree-sort.patch \
-            file://kexec-aarch64.patch \
-            file://kexec-x32.patch \
-            file://0002-powerpc-change-the-memory-size-limit.patch \
-            file://0001-purgatory-Pass-r-directly-to-linker.patch \
-            file://0001-vmcore-dmesg-Define-_GNU_SOURCE.patch \
-         "
-
-SRC_URI[md5sum] = "86de066859f289048f1b286af6f03f78"
-SRC_URI[sha256sum] = "84f652ebf1de3f7b9de757a50cdbf6d5639d88c1d5b5ef9f525edde5ef9590c2"
-
-PACKAGES =+ "kexec kdump vmcore-dmesg"
-
-ALLOW_EMPTY_${PN} = "1"
-RRECOMMENDS_${PN} = "kexec kdump vmcore-dmesg"
-
-FILES_kexec = "${sbindir}/kexec"
-FILES_kdump = "${sbindir}/kdump ${sysconfdir}/init.d/kdump \
-               ${sysconfdir}/sysconfig/kdump.conf"
-FILES_vmcore-dmesg = "${sbindir}/vmcore-dmesg"
-
-inherit update-rc.d
-
-INITSCRIPT_PACKAGES = "kdump"
-INITSCRIPT_NAME_kdump = "kdump"
-INITSCRIPT_PARAMS_kdump = "start 56 2 3 4 5 . stop 56 0 1 6 ."
-
-do_install_append () {
-        install -d ${D}${sysconfdir}/init.d
-        install -m 0755 ${WORKDIR}/kdump ${D}${sysconfdir}/init.d/kdump
-        install -d ${D}${sysconfdir}/sysconfig
-        install -m 0644 ${WORKDIR}/kdump.conf ${D}${sysconfdir}/sysconfig
-}
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools_2.0.12.bb b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools_2.0.12.bb
new file mode 100644
index 0000000..59376c8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/kexec/kexec-tools_2.0.12.bb
@@ -0,0 +1,37 @@
+require kexec-tools.inc
+export LDFLAGS = "-L${STAGING_LIBDIR}"
+EXTRA_OECONF = " --with-zlib=yes"
+
+SRC_URI += " \
+            file://kexec-aarch64.patch \
+            file://kexec-x32.patch \
+            file://0002-powerpc-change-the-memory-size-limit.patch \
+            file://0001-purgatory-Pass-r-directly-to-linker.patch \
+            file://0001-vmcore-dmesg-Define-_GNU_SOURCE.patch \
+         "
+
+SRC_URI[md5sum] = "10ddaae0e86af54407b164a1f5a39cc3"
+SRC_URI[sha256sum] = "cc7b60dad0da202004048a6179d8a53606943062dd627a2edba45a8ea3a85135"
+
+PACKAGES =+ "kexec kdump vmcore-dmesg"
+
+ALLOW_EMPTY_${PN} = "1"
+RRECOMMENDS_${PN} = "kexec kdump vmcore-dmesg"
+
+FILES_kexec = "${sbindir}/kexec"
+FILES_kdump = "${sbindir}/kdump ${sysconfdir}/init.d/kdump \
+               ${sysconfdir}/sysconfig/kdump.conf"
+FILES_vmcore-dmesg = "${sbindir}/vmcore-dmesg"
+
+inherit update-rc.d
+
+INITSCRIPT_PACKAGES = "kdump"
+INITSCRIPT_NAME_kdump = "kdump"
+INITSCRIPT_PARAMS_kdump = "start 56 2 3 4 5 . stop 56 0 1 6 ."
+
+do_install_append () {
+        install -d ${D}${sysconfdir}/init.d
+        install -m 0755 ${WORKDIR}/kdump ${D}${sysconfdir}/init.d/kdump
+        install -d ${D}${sysconfdir}/sysconfig
+        install -m 0644 ${WORKDIR}/kdump.conf ${D}${sysconfdir}/sysconfig
+}
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb b/import-layers/yocto-poky/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
index c2c2589..5c7dd52 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
@@ -41,10 +41,6 @@
 	chmod +x ${D}${bindir_crossscripts}/depmodwrapper
 }
 
-SYSROOT_PREPROCESS_FUNCS += "depmodwrapper_sysroot_preprocess"
-
-depmodwrapper_sysroot_preprocess () {
-	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
-}
+SYSROOT_DIRS += "${bindir_crossscripts}"
 
 inherit nopackages
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/kmod/kmod.inc b/import-layers/yocto-poky/meta/recipes-kernel/kmod/kmod.inc
index 0bcdcf6..166b3f0 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/kmod/kmod.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/kmod/kmod.inc
@@ -9,16 +9,14 @@
 LICENSE_libkmod = "LGPL-2.1+"
 SECTION = "base"
 
-DEPENDS += "pkgconfig-native"
-
 LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
                     file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
                    "
-inherit autotools gtk-doc
+inherit autotools gtk-doc pkgconfig
 
-SRCREV = "42f32b8ae45ad8e3a1da29c9b20af9b5e2e9e676"
+SRCREV = "65a885df5f6f15222b44fd695c5eaca17e837a14"
 # Lookout for PV bump too when SRCREV is changed
-PV = "22+git${SRCPV}"
+PV = "23+git${SRCPV}"
 
 SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \
            file://depmod-search.conf \
@@ -35,7 +33,7 @@
 PACKAGECONFIG[logging] = " --enable-logging,--disable-logging"
 
 do_configure_prepend () {
-        gtkdocize --docdir ${S}/libkmod/docs || touch ${S}/libkmod/docs/gtk-doc.make
+        gtkdocize --docdir ${S}/libkmod/docs --srcdir ${S}
 }
 
 do_configure_append () {
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/libpfm/files/fix-misleading-indentation-error.patch b/import-layers/yocto-poky/meta/recipes-kernel/libpfm/files/fix-misleading-indentation-error.patch
new file mode 100644
index 0000000..25d47ef
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/libpfm/files/fix-misleading-indentation-error.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Pending
+
+Fix compile error:
+
+| syst_count.c:346:3: error: this 'for' clause does not guard... [-Werror=misleading-indentation] 
+|    for(c=cmin ; c < cmax; c++) 
+|       ^~~ 
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/perf_examples/syst_count.c b/perf_examples/syst_count.c
+index 0d53078..2dfb9b9 100644
+--- a/perf_examples/syst_count.c
++++ b/perf_examples/syst_count.c
+@@ -343,8 +343,9 @@ measure(void)
+ 
+ 		for (delay = 1 ; delay <= options.delay; delay++) {
+ 
+-		for(c=cmin ; c < cmax; c++)
+-			start_cpu(c);
++			for(c=cmin ; c < cmax; c++) {
++				start_cpu(c);
++			}
+ 
+ 			if (0) {
+ 				tv.tv_sec = 0;
+@@ -353,8 +354,9 @@ measure(void)
+ 			} else
+ 				sleep(1);
+ 
+-		for(c=cmin ; c < cmax; c++)
+-			stop_cpu(c);
++			for(c=cmin ; c < cmax; c++) {
++				stop_cpu(c);
++			}
+ 
+ 			for(c = cmin; c < cmax; c++) {
+ 				printf("# %'ds -----\n", delay);
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/libpfm/libpfm4_4.6.0.bb b/import-layers/yocto-poky/meta/recipes-kernel/libpfm/libpfm4_4.6.0.bb
index 0b024ad..4136eac 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/libpfm/libpfm4_4.6.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/libpfm/libpfm4_4.6.0.bb
@@ -14,6 +14,7 @@
 
 SRC_URI = "http://downloads.sourceforge.net/project/perfmon2/${BPN}/libpfm-${PV}.tar.gz \
            file://0001-Makefile-Add-LDFLAGS-variable-to-SLDFLAGS.patch \
+           file://fix-misleading-indentation-error.patch \
           "
 
 SRC_URI[md5sum] = "5077b9022440e4951d96f2d0e73bd487"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
index a4e64d5..8e68ae8 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
@@ -55,13 +55,14 @@
     & Firmware-xc4000 \
     & Firmware-xc5000 \
     & Firmware-xc5000c \
+    & WHENCE \
 "
 
 LIC_FILES_CHKSUM = "\
     file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
     file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
     file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
-    file://LICENSE.amdgpu;md5=a8592c24c2672062e03c7392fc7fe3bc \
+    file://LICENSE.amdgpu;md5=3fe8a3430700a518990c3b3d75297209 \
     file://LICENSE.amd-ucode;md5=3a0de451253cc1edbf30a3c621effee3 \
     file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \
     file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \
@@ -97,7 +98,7 @@
     file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \
     file://LICENSE.QualcommAtheros_ath10k;md5=b5fe244fb2b532311de1472a3bc06da5 \
     file://LICENCE.r8a779x_usb3;md5=4c1671656153025d7076105a5da7e498 \
-    file://LICENSE.radeon;md5=6c7f97c6c62bdd9596d0238bb205118c \
+    file://LICENSE.radeon;md5=69612f4f7b141a97659cb1d609a1bde2 \
     file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \
     file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \
     file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
@@ -111,6 +112,7 @@
     file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
     file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
     file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
+    file://WHENCE;md5=f514a0c53c5d73c2fe98d5861103f0c6 \
 "
 
 # These are not common licenses, set NO_GENERIC_LICENSE for them
@@ -168,13 +170,20 @@
 NO_GENERIC_LICENSE[Firmware-xc4000] = "LICENCE.xc4000"
 NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000"
 NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c"
+NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
 
-SRCREV = "5f8ca0c1db6106a2d6d7e85eee778917ff03c3de"
+SRCREV = "42ad5367dd38371b2a1bb263b6efa85f9b92fc93"
 PE = "1"
 PV = "0.0+git${SRCPV}"
 
 SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"
 
+# Some devices need a specific version, not the latest
+SRC_URI += "https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/linux-firmware.git/plain/iwlwifi-8000C-19.ucode;name=iwlwifi-19"
+
+SRC_URI[iwlwifi-19.md5sum] = "132fbaee36beec5e98714f0bd66f7a1d"
+SRC_URI[iwlwifi-19.sha256sum] = "2034470df64d323b827c4f2d4d0d55be2846b7360179b5574aa28ff77b6c9471"
+
 S = "${WORKDIR}/git"
 
 inherit allarch update-alternatives
@@ -204,6 +213,9 @@
 
 	# fixup wl12xx location, after 2.6.37 the kernel searches a different location for it
 	( cd ${D}/lib/firmware ; ln -sf ti-connectivity/* . )
+
+        # Copy the iwlwifi ucode
+        cp ${WORKDIR}/iwlwifi-8000C-19.ucode ${D}/lib/firmware/
 }
 
 
@@ -213,11 +225,12 @@
              ${PN}-ti-connectivity-license ${PN}-wl12xx ${PN}-wl18xx \
              ${PN}-vt6656-license ${PN}-vt6656 \
              ${PN}-rtl-license ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su \
-             ${PN}-broadcom-license ${PN}-bcm4329 ${PN}-bcm4330 ${PN}-bcm4334 ${PN}-bcm43340 ${PN}-bcm4339 ${PN}-bcm4354 \
-             ${PN}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k \
+             ${PN}-broadcom-license ${PN}-bcm4329 ${PN}-bcm4330 ${PN}-bcm4334 ${PN}-bcm43340 ${PN}-bcm4339 ${PN}-bcm43430 ${PN}-bcm4354 \
+             ${PN}-atheros-license ${PN}-ar9170 ${PN}-carl9170 ${PN}-ath6k ${PN}-ath9k \
              ${PN}-ar3k-license  ${PN}-ar3k  ${PN}-ath10k-license  ${PN}-ath10k  \
              \
-             ${PN}-iwlwifi-license ${PN}-iwlwifi-135-6 \
+             ${PN}-iwlwifi-license ${PN}-iwlwifi \
+             ${PN}-iwlwifi-135-6 \
              ${PN}-iwlwifi-3160-7 ${PN}-iwlwifi-3160-8 ${PN}-iwlwifi-3160-9 \
              ${PN}-iwlwifi-6000-4 ${PN}-iwlwifi-6000g2a-5 ${PN}-iwlwifi-6000g2a-6 \
              ${PN}-iwlwifi-6000g2b-5 ${PN}-iwlwifi-6000g2b-6 \
@@ -225,8 +238,11 @@
              ${PN}-iwlwifi-7260 \
              ${PN}-iwlwifi-7265 \
              ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \
+             ${PN}-iwlwifi-misc \
              ${PN}-i915-license ${PN}-i915 \
              ${PN}-adsp-sst-license ${PN}-adsp-sst \
+             ${PN}-bnx2-mips \
+             ${PN}-whence-license \
              ${PN}-license \
              "
 
@@ -234,11 +250,15 @@
 LICENSE_${PN}-ar9170 = "Firmware-atheros_firmware"
 LICENSE_${PN}-ath6k = "Firmware-atheros_firmware"
 LICENSE_${PN}-ath9k = "Firmware-atheros_firmware"
+LICENSE_${PN}-atheros-license = "Firmware-atheros_firmware"
 
 FILES_${PN}-atheros-license = "/lib/firmware/LICENCE.atheros_firmware"
 FILES_${PN}-ar9170 = " \
   /lib/firmware/ar9170*.fw \
 "
+FILES_${PN}-carl9170 = " \
+  /lib/firmware/carl9170*.fw \
+"
 FILES_${PN}-ath6k = " \
   /lib/firmware/ath6k \
 "
@@ -250,12 +270,15 @@
 "
 
 RDEPENDS_${PN}-ar9170 += "${PN}-atheros-license"
+RDEPENDS_${PN}-carl9170 += "${PN}-atheros-license"
 RDEPENDS_${PN}-ath6k += "${PN}-atheros-license"
 RDEPENDS_${PN}-ath9k += "${PN}-atheros-license"
 
 # For QualCommAthos
 LICENSE_${PN}-ar3k = "Firmware-qualcommAthos_ar3k"
+LICENSE_${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k"
 LICENSE_${PN}-ath10k = "Firmware-qualcommAthos_ath10k"
+LICENSE_${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k"
 
 FILES_${PN}-ar3k-license = "/lib/firmware/LICENSE.QualcommAtheros_ar3k"
 FILES_${PN}-ar3k = " \
@@ -272,6 +295,7 @@
 
 # For ralink
 LICENSE_${PN}-ralink = "Firmware-ralink-firmware"
+LICENSE_${PN}-ralink-license = "Firmware-ralink-firmware"
 
 FILES_${PN}-ralink-license = "/lib/firmware/LICENCE.ralink-firmware.txt"
 FILES_${PN}-ralink = " \
@@ -282,6 +306,7 @@
 
 # For radeon
 LICENSE_${PN}-radeon = "Firmware-radeon"
+LICENSE_${PN}-radeon-license = "Firmware-radeon"
 
 FILES_${PN}-radeon-license = "/lib/firmware/LICENSE.radeon"
 FILES_${PN}-radeon = " \
@@ -295,6 +320,7 @@
 LICENSE_${PN}-sd8688 = "Firmware-Marvell"
 LICENSE_${PN}-sd8787 = "Firmware-Marvell"
 LICENSE_${PN}-sd8797 = "Firmware-Marvell"
+LICENSE_${PN}-marvell-license = "Firmware-Marvell"
 
 FILES_${PN}-marvell-license = "/lib/firmware/LICENCE.Marvell"
 FILES_${PN}-sd8686 = " \
@@ -321,6 +347,7 @@
 LICENSE_${PN}-rtl8192cu = "Firmware-rtlwifi_firmware"
 LICENSE_${PN}-rtl8192ce = "Firmware-rtlwifi_firmware"
 LICENSE_${PN}-rtl8192su = "Firmware-rtlwifi_firmware"
+LICENSE_${PN}-rtl-license = "Firmware-rtlwifi_firmware"
 
 FILES_${PN}-rtl-license = " \
   /lib/firmware/LICENCE.rtlwifi_firmware.txt \
@@ -342,6 +369,7 @@
 # For ti-connectivity
 LICENSE_${PN}-wl12xx = "Firmware-ti-connectivity"
 LICENSE_${PN}-wl18xx = "Firmware-ti-connectivity"
+LICENSE_${PN}-ti-connectivity-license = "Firmware-ti-connectivity"
 
 FILES_${PN}-ti-connectivity-license = "/lib/firmware/LICENCE.ti-connectivity"
 FILES_${PN}-wl12xx = " \
@@ -360,6 +388,7 @@
 
 # For vt6656
 LICENSE_${PN}-vt6656 = "Firmware-via_vt6656"
+LICENSE_${PN}-vt6656-license = "Firmware-via_vt6656"
 
 FILES_${PN}-vt6656-license = "/lib/firmware/LICENCE.via_vt6656"
 FILES_${PN}-vt6656 = " \
@@ -379,7 +408,9 @@
 LICENSE_${PN}-bcm4334 = "Firmware-broadcom_bcm43xx"
 LICENSE_${PN}-bcm43340 = "Firmware-broadcom_bcm43xx"
 LICENSE_${PN}-bcm4339 = "Firmware-broadcom_bcm43xx"
+LICENSE_${PN}-bcm43430 = "Firmware-broadcom_bcm43xx"
 LICENSE_${PN}-bcm4354 = "Firmware-broadcom_bcm43xx"
+LICENSE_${PN}-broadcom-license = "Firmware-broadcom_bcm43xx"
 
 FILES_${PN}-broadcom-license = " \
   /lib/firmware/LICENCE.broadcom_bcm43xx \
@@ -399,6 +430,9 @@
 FILES_${PN}-bcm4339 = " \
   /lib/firmware/brcm/brcmfmac4339-sdio.bin \
 "
+FILES_${PN}-bcm43430 = " \
+  /lib/firmware/brcm/brcmfmac43430-sdio.bin \
+"
 FILES_${PN}-bcm4354 = " \
   /lib/firmware/brcm/brcmfmac4354-sdio.bin \
 "
@@ -417,15 +451,33 @@
 ALTERNATIVE_TARGET_linux-firmware-bcm4330[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4330-sdio.bin"
 ALTERNATIVE_linux-firmware-bcm4339 = "brcmfmac-sdio.bin"
 ALTERNATIVE_TARGET_linux-firmware-bcm4339[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4339-sdio.bin"
+ALTERNATIVE_PRIORITY_linux-firmware-bcm4339[brcmfmac-sdio.bin] = "20"
+ALTERNATIVE_linux-firmware-bcm43430 = "brcmfmac-sdio.bin"
+ALTERNATIVE_TARGET_linux-firmware-bcm43430[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac43430-sdio.bin"
 
 RDEPENDS_${PN}-bcm4329 += "${PN}-broadcom-license"
 RDEPENDS_${PN}-bcm4330 += "${PN}-broadcom-license"
 RDEPENDS_${PN}-bcm4334 += "${PN}-broadcom-license"
 RDEPENDS_${PN}-bcm43340 += "${PN}-broadcom-license"
 RDEPENDS_${PN}-bcm4339 += "${PN}-broadcom-license"
+RDEPENDS_${PN}-bcm43430 += "${PN}-broadcom-license"
 RDEPENDS_${PN}-bcm4354 += "${PN}-broadcom-license"
 
+# For Broadcom bnx2-mips
+#
+# which is a separate case to the other Broadcom firmwares since its
+# license is contained in the shared WHENCE file.
+
+LICENSE_${PN}-bnx2-mips = "WHENCE"
+LICENSE_${PN}-whence-license = "WHENCE"
+
+FILES_${PN}-bnx2-mips = "/lib/firmware/bnx2/bnx2-mips-09-6.2.1b.fw"
+FILES_${PN}-whence-license = "/lib/firmware/WHENCE"
+
+RDEPENDS_${PN}-bnx2-mips += "${PN}-whence-license"
+
 # For iwlwifi
+LICENSE_${PN}-iwlwifi           = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-135-6     = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-3160-7    = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-3160-8    = "Firmware-iwlwifi_firmware"
@@ -433,7 +485,7 @@
 LICENSE_${PN}-iwlwifi-6000-4    = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-6000g2a-6 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware"
+LICENSE_${PN}-iwlwifi-6000g2b-5 = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-6000g2b-6 = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-6050-4    = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-6050-5    = "Firmware-iwlwifi_firmware"
@@ -442,6 +494,8 @@
 LICENSE_${PN}-iwlwifi-7265d     = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-8000c     = "Firmware-iwlwifi_firmware"
 LICENSE_${PN}-iwlwifi-8265      = "Firmware-iwlwifi_firmware"
+LICENSE_${PN}-iwlwifi-misc      = "Firmware-iwlwifi_firmware"
+LICENSE_${PN}-iwlwifi-license   = "Firmware-iwlwifi_firmware"
 
 
 FILES_${PN}-iwlwifi-license = "/lib/firmware/LICENCE.iwlwifi_firmware"
@@ -461,6 +515,7 @@
 FILES_${PN}-iwlwifi-7265d   = "/lib/firmware/iwlwifi-7265D-*.ucode"
 FILES_${PN}-iwlwifi-8000c   = "/lib/firmware/iwlwifi-8000C-*.ucode"
 FILES_${PN}-iwlwifi-8265   = "/lib/firmware/iwlwifi-8265-*.ucode"
+FILES_${PN}-iwlwifi-misc   = "/lib/firmware/iwlwifi-*.ucode"
 
 RDEPENDS_${PN}-iwlwifi-135-6     = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-3160-7    = "${PN}-iwlwifi-license"
@@ -469,7 +524,7 @@
 RDEPENDS_${PN}-iwlwifi-6000-4    = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-6000g2a-6 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license"
+RDEPENDS_${PN}-iwlwifi-6000g2b-5 = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-6000g2b-6 = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-6050-4    = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-6050-5    = "${PN}-iwlwifi-license"
@@ -478,6 +533,15 @@
 RDEPENDS_${PN}-iwlwifi-7265d     = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-8000c     = "${PN}-iwlwifi-license"
 RDEPENDS_${PN}-iwlwifi-8265      = "${PN}-iwlwifi-license"
+RDEPENDS_${PN}-iwlwifi-misc      = "${PN}-iwlwifi-license"
+
+# -iwlwifi-misc is a "catch all" package that includes all the iwlwifi
+# firmwares that are not already included in other -iwlwifi- packages.
+# -iwlwifi is a virtual package that depends upon all iwlwifi packages.
+# These are distinct in order to allow the -misc firmwares to be installed
+# without pulling in every other iwlwifi package.
+ALLOW_EMPTY_${PN}-iwlwifi = "1"
+ALLOW_EMPTY_${PN}-iwlwifi-misc = "1"
 
 # Handle package updating for the newly merged iwlwifi groupings
 RPROVIDES_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
@@ -489,12 +553,14 @@
 RCONFLICTS_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
 
 LICENSE_${PN}-i915       = "Firmware-i915"
+LICENSE_${PN}-i915-license = "Firmware-i915"
 FILES_${PN}-i915-license = "/lib/firmware/LICENSE.i915"
 FILES_${PN}-i915         = "/lib/firmware/i915"
 RDEPENDS_${PN}-i915      = "${PN}-i915-license"
 
 FILES_${PN}-adsp-sst-license      = "/lib/firmware/LICENCE.adsp_sst"
 LICENSE_${PN}-adsp-sst            = "Firmware-adsp_sst"
+LICENSE_${PN}-adsp-sst-license    = "Firmware-adsp_sst"
 FILES_${PN}-adsp-sst              = "/lib/firmware/intel/dsp_fw*"
 RDEPENDS_${PN}-adsp-sst           = "${PN}-adsp-sst-license"
 
@@ -534,6 +600,7 @@
     & Firmware-r8a779x_usb3 \
     & Firmware-radeon \
     & Firmware-ralink_a_mediatek_company_firmware \
+    & Firmware-ralink-firmware \
     & Firmware-siano \
     & Firmware-tda7706-firmware \
     & Firmware-ti-connectivity \
@@ -543,14 +610,20 @@
     & Firmware-xc4000 \
     & Firmware-xc5000 \
     & Firmware-xc5000c \
+    & WHENCE \
 "
 
 FILES_${PN}-license += "/lib/firmware/LICEN*"
 FILES_${PN} += "/lib/firmware/*"
 RDEPENDS_${PN} += "${PN}-license"
+RDEPENDS_${PN} += "${PN}-whence-license"
 
 # Make linux-firmware depend on all of the split-out packages.
+# Make linux-firmware-iwlwifi depend on all of the split-out iwlwifi packages.
 python populate_packages_prepend () {
     firmware_pkgs = oe.utils.packages_filter_out_system(d)
     d.appendVar('RDEPENDS_linux-firmware', ' ' + ' '.join(firmware_pkgs))
+
+    iwlwifi_pkgs = filter(lambda x: x.find('-iwlwifi-') != -1, firmware_pkgs)
+    d.appendVar('RDEPENDS_linux-firmware-iwlwifi', ' ' + ' '.join(iwlwifi_pkgs))
 }
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
index 2ba6ed5..078d752 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
@@ -18,9 +18,10 @@
 # But you have some kernel headers you need for some driver? That is fine
 # but get them from STAGING_KERNEL_DIR where the kernel installs itself.
 # This will make the package using them machine specific but this is much
-# better than having a machine specific C library. This does mean your 
-# recipe needs a DEPENDS += "virtual/kernel" but again, that is fine and
-# makes total sense.
+# better than having a machine specific C library. This does mean your
+# recipe needs a
+#    do_configure[depends] += "virtual/kernel:do_shared_workdir"
+# but again, that is fine and makes total sense.
 #
 # There can also be a case where your kernel extremely old and you want
 # an older libc ABI for that old kernel. The headers installed by this
@@ -49,8 +50,7 @@
 
 S = "${WORKDIR}/linux-${PV}"
 
-# For the kernel, we don't want the '-e MAKEFLAGS=' in EXTRA_OEMAKE.
-EXTRA_OEMAKE = ""
+EXTRA_OEMAKE = " HOSTCC="${BUILD_CC}" HOSTCPP="${BUILD_CPP}""
 
 do_configure() {
 	oe_runmake allnoconfig
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch
index 6ad4798..8bb775c 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch
@@ -11,10 +11,10 @@
  include/uapi/linux/libc-compat.h | 25 ++++++++-----------------
  1 file changed, 8 insertions(+), 17 deletions(-)
 
-Index: linux-4.4/include/uapi/linux/libc-compat.h
+Index: linux-4.8-rc4/include/uapi/linux/libc-compat.h
 ===================================================================
---- linux-4.4.orig/include/uapi/linux/libc-compat.h
-+++ linux-4.4/include/uapi/linux/libc-compat.h
+--- linux-4.8-rc4.orig/include/uapi/linux/libc-compat.h
++++ linux-4.8-rc4/include/uapi/linux/libc-compat.h
 @@ -48,13 +48,12 @@
  #ifndef _UAPI_LIBC_COMPAT_H
  #define _UAPI_LIBC_COMPAT_H
@@ -23,16 +23,17 @@
 -#if defined(__GLIBC__)
 +#ifndef __KERNEL__ /* we're used from userspace */
  
--/* Coordinate with glibc netinet/in.h header. */
-+/* Coordinate with libc netinet/in.h header. */
- #if defined(_NETINET_IN_H)
+-/* Coordinate with glibc net/if.h header. */
+-#if defined(_NET_IF_H) && defined(__USE_MISC)
++/* Coordinate with libc net/if.h header. */
++#if defined(_NET_IF_H)
  
 -/* GLIBC headers included first so don't define anything
 +/* LIBC headers included first so don't define anything
   * that would already be defined. */
- #define __UAPI_DEF_IN_ADDR		0
- #define __UAPI_DEF_IN_IPPROTO		0
-@@ -64,15 +63,7 @@
+ 
+ #define __UAPI_DEF_IF_IFCONF 0
+@@ -98,15 +97,7 @@
  #define __UAPI_DEF_IN_CLASS		0
  
  #define __UAPI_DEF_IN6_ADDR		0
@@ -48,7 +49,7 @@
  #define __UAPI_DEF_SOCKADDR_IN6		0
  #define __UAPI_DEF_IPV6_MREQ		0
  #define __UAPI_DEF_IPPROTO_V6		0
-@@ -80,10 +71,10 @@
+@@ -114,10 +105,10 @@
  #define __UAPI_DEF_IN6_PKTINFO		0
  #define __UAPI_DEF_IP6_MTUINFO		0
  
@@ -61,7 +62,7 @@
   * __UAPI_DEF_* defines and adjust appropriately. */
  #define __UAPI_DEF_IN_ADDR		1
  #define __UAPI_DEF_IN_IPPROTO		1
-@@ -93,7 +84,7 @@
+@@ -127,7 +118,7 @@
  #define __UAPI_DEF_IN_CLASS		1
  
  #define __UAPI_DEF_IN6_ADDR		1
@@ -70,16 +71,16 @@
   * coordinate. */
  #define __UAPI_DEF_IN6_ADDR_ALT		1
  #define __UAPI_DEF_SOCKADDR_IN6		1
-@@ -115,7 +106,7 @@
+@@ -149,7 +140,7 @@
  /* If we did not see any headers from any supported C libraries,
   * or we are being included in the kernel, then define everything
   * that we need. */
 -#else /* !defined(__GLIBC__) */
 +#else /* __KERNEL__ */
  
- /* Definitions for in.h */
- #define __UAPI_DEF_IN_ADDR		1
-@@ -138,6 +129,6 @@
+ /* Definitions for if.h */
+ #define __UAPI_DEF_IF_IFCONF 1
+@@ -182,6 +173,6 @@
  /* Definitions for xattr.h */
  #define __UAPI_DEF_XATTR		1
  
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
index c617093..8dc1edc 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
@@ -11,10 +11,10 @@
  include/uapi/linux/libc-compat.h | 6 ++++++
  2 files changed, 9 insertions(+), 1 deletion(-)
 
-diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
-index aa63ed0..e94da57 100644
---- a/include/uapi/linux/if_ether.h
-+++ b/include/uapi/linux/if_ether.h
+Index: linux-4.8-rc4/include/uapi/linux/if_ether.h
+===================================================================
+--- linux-4.8-rc4.orig/include/uapi/linux/if_ether.h
++++ linux-4.8-rc4/include/uapi/linux/if_ether.h
 @@ -22,6 +22,7 @@
  #define _UAPI_LINUX_IF_ETHER_H
  
@@ -23,7 +23,7 @@
  
  /*
   *	IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
-@@ -134,11 +135,12 @@
+@@ -138,11 +139,12 @@
   *	This is an Ethernet frame header.
   */
  
@@ -37,10 +37,10 @@
 +#endif
  
  #endif /* _UAPI_LINUX_IF_ETHER_H */
-diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
-index afe15c2..7d0c78a 100644
---- a/include/uapi/linux/libc-compat.h
-+++ b/include/uapi/linux/libc-compat.h
+Index: linux-4.8-rc4/include/uapi/linux/libc-compat.h
+===================================================================
+--- linux-4.8-rc4.orig/include/uapi/linux/libc-compat.h
++++ linux-4.8-rc4/include/uapi/linux/libc-compat.h
 @@ -50,6 +50,12 @@
  
  #ifndef __KERNEL__ /* we're used from userspace */
@@ -51,9 +51,6 @@
 +#define __UAPI_DEF_ETHHDR 1
 +#endif
 +
- /* Coordinate with libc netinet/in.h header. */
- #if defined(_NETINET_IN_H)
+ /* Coordinate with libc net/if.h header. */
+ #if defined(_NET_IF_H) && defined(__USE_MISC)
  
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch
index 6d9e8d8..b5c4e17 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch
@@ -13,10 +13,10 @@
  include/uapi/linux/kernel.h | 2 ++
  1 file changed, 2 insertions(+)
 
-diff --git a/include/uapi/linux/kernel.h b/include/uapi/linux/kernel.h
-index 321e399..e8ff821 100644
---- a/include/uapi/linux/kernel.h
-+++ b/include/uapi/linux/kernel.h
+Index: linux-4.8-rc4/include/uapi/linux/kernel.h
+===================================================================
+--- linux-4.8-rc4.orig/include/uapi/linux/kernel.h
++++ linux-4.8-rc4/include/uapi/linux/kernel.h
 @@ -1,7 +1,9 @@
  #ifndef _UAPI_LINUX_KERNEL_H
  #define _UAPI_LINUX_KERNEL_H
@@ -27,6 +27,3 @@
  
  /*
   * 'kernel.h' contains some often-used function prototypes etc
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.8.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.8.bb
new file mode 100644
index 0000000..77e0870
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.8.bb
@@ -0,0 +1,12 @@
+require linux-libc-headers.inc
+
+PV = "4.8"
+
+SRC_URI_append_libc-musl = "\
+    file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch \
+    file://0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch \
+    file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \
+   "
+
+SRC_URI[md5sum] = "c1af0afbd3df35c1ccdc7a5118cd2d07"
+SRC_URI[sha256sum] = "3e9150065f193d3d94bcf46a1fe9f033c7ef7122ab71d75a7fb5a2f0c9a7e11a"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/kernel-devsrc.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/kernel-devsrc.bb
index 196c8c7..0fdd0ad 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -28,9 +28,6 @@
 do_compile[noexec] = "1"
 do_populate_sysroot[noexec] = "1"
 
-# Define where the kernel headers are installed on the target as well as where
-# they are staged.
-KERNEL_SRC_PATH = "/usr/src/kernel"
 S = "${STAGING_KERNEL_DIR}"
 B = "${STAGING_KERNEL_BUILDDIR}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dtb.inc b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dtb.inc
index 74f5ef8..8528d64 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dtb.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dtb.inc
@@ -33,12 +33,13 @@
 do_install_append() {
 	for DTB in ${KERNEL_DEVICETREE}; do
 		DTB=`normalize_dtb "${DTB}"`
-		DTB_BASE_NAME=`basename ${DTB} .dtb`
+		DTB_EXT=${DTB##*.}
+		DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
 		for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
 			symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
 			DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
 			DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
-			install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb
+			install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT}
 		done
 	done
 }
@@ -46,7 +47,8 @@
 do_deploy_append() {
 	for DTB in ${KERNEL_DEVICETREE}; do
 		DTB=`normalize_dtb "${DTB}"`
-		DTB_BASE_NAME=`basename ${DTB} .dtb`
+		DTB_EXT=${DTB##*.}
+		DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
 		for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
 			base_name=${type}"-"${KERNEL_IMAGE_BASE_NAME}
 			symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
@@ -54,8 +56,8 @@
 			DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
 			DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
 			install -d ${DEPLOYDIR}
-			install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb
-			ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb
+			install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}
+			ln -sf ${DTB_NAME}.${DTB_EXT} ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.${DTB_EXT}
 		done
 	done
 }
@@ -65,9 +67,10 @@
 	for DTB in ${KERNEL_DEVICETREE}; do
 		for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
 			symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
+			DTB_EXT=${DTB##*.}
 			DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`
 			DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
-			update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
+			update-alternatives --install /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.${DTB_EXT} ${DTB_BASE_NAME}.${DTB_EXT} /boot/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT} ${KERNEL_PRIORITY} || true
 		done
 	done
 }
@@ -77,9 +80,10 @@
 	for DTB in ${KERNEL_DEVICETREE}; do
 		for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
 			symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
+			DTB_EXT=${DTB##*.}
 			DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`
 			DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
-			update-alternatives --remove ${DTB_BASE_NAME}.dtb /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
+			update-alternatives --remove ${DTB_BASE_NAME}.${DTB_EXT} /boot/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT} ${KERNEL_PRIORITY} || true
 		done
 	done
 }
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dummy.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dummy.bb
index cc0e4e6..994ac74 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dummy.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-dummy.bb
@@ -18,6 +18,8 @@
 ALLOW_EMPTY_kernel-modules = "1"
 DESCRIPTION_kernel-modules = "Kernel modules meta package"
 
+INHIBIT_DEFAULT_DEPS = "1"
+
 #COMPATIBLE_MACHINE = "your_machine"
 
 PR = "r1"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-dev.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
index 3085263..9154bb7 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
@@ -14,14 +14,6 @@
 # provide this .inc to set specific revisions
 include recipes-kernel/linux/linux-yocto-dev-revisions.inc
 
-# Skip processing of this recipe if it is not explicitly specified as the
-# PREFERRED_PROVIDER for virtual/kernel. This avoids network access required
-# by the use of AUTOREV SRCREVs, which are the default for this recipe.
-python () {
-    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != "linux-yocto-dev":
-        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-dev to enable it")
-}
-
 KBRANCH = "standard/base"
 KMETA = "kernel-meta"
 
@@ -36,12 +28,14 @@
 SRCREV_machine ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 SRCREV_meta ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 
-LINUX_VERSION ?= "4.6-rc+"
+LINUX_VERSION ?= "4.8-rc+"
 LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}"
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
 COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64)"
 
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
+
 # Functionality flags
 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
 KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb
index a138957..b95fb58 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb
@@ -2,13 +2,22 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-SRCREV_machine ?= "28d8cfdbcb18a6eef202099cca66430fd3b6eae0"
-SRCREV_meta ?= "a4f88c3fad887e1c559d03ae1b531ca267137b69"
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != "linux-yocto-rt":
+        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
+SRCREV_machine ?= "966ddde490030166010c5770f8f86cdd0e961c76"
+SRCREV_meta ?= "3c3197e65b6f2f5514853c1fe78ae8ffc131b02c"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.1.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.1;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "4.1.18"
+LINUX_VERSION ?= "4.1.33"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
index d81ca13..6c11382 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
@@ -1,14 +1,23 @@
-KBRANCH ?= "standard/preempt-rt"
+KBRANCH ?= "standard/preempt-rt/base"
 
 require recipes-kernel/linux/linux-yocto.inc
 
-SRCREV_machine ?= "2bc112a6ccd16800a4c45e47ccb3018a1042abdf"
-SRCREV_meta ?= "bcc65090840f51a6ac937297be5c22fe268d01ab"
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != "linux-yocto-rt":
+        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
+SRCREV_machine ?= "652b564985db555b549ef73405aea6c38919eefc"
+SRCREV_meta ?= "3030330b066a33ce21164a8b30d0503cf9f68e5b"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.4.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.4;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "4.4.3"
+LINUX_VERSION ?= "4.4.26"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb
new file mode 100644
index 0000000..e51c9cd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb
@@ -0,0 +1,38 @@
+KBRANCH ?= "standard/preempt-rt/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != "linux-yocto-rt":
+        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
+SRCREV_machine ?= "4057556c041f6aac0d29aa3425587d414c9a0090"
+SRCREV_meta ?= "83110d94edeb856a3667b62903ed4ae91c24117d"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.8.git;branch=${KBRANCH};name=machine \
+           git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.8;destsuffix=${KMETA}"
+
+LINUX_VERSION ?= "4.8.3"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
+
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
+KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc"
+KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb
index 28c7213..ba01702 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb
@@ -4,13 +4,13 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "4.1.18"
+LINUX_VERSION ?= "4.1.33"
 
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine ?= "91f62d4a0a31919d9b2ccdaf881130f99b61fc5e"
-SRCREV_meta ?= "a4f88c3fad887e1c559d03ae1b531ca267137b69"
+SRCREV_machine ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_meta ?= "3c3197e65b6f2f5514853c1fe78ae8ffc131b02c"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb
index 684e880..76c4163 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb
@@ -4,13 +4,13 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "4.4.3"
+LINUX_VERSION ?= "4.4.26"
 
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine ?= "1a72cec834de2c80b5563f8afbeea7664fd5ee05"
-SRCREV_meta ?= "bcc65090840f51a6ac937297be5c22fe268d01ab"
+SRCREV_machine ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_meta ?= "3030330b066a33ce21164a8b30d0503cf9f68e5b"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb
new file mode 100644
index 0000000..c8ddbd9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb
@@ -0,0 +1,25 @@
+KBRANCH ?= "standard/tiny/common-pc"
+LINUX_KERNEL_TYPE = "tiny"
+KCONFIG_MODE = "--allnoconfig"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+LINUX_VERSION ?= "4.8.3"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+SRCREV_machine ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_meta ?= "83110d94edeb856a3667b62903ed4ae91c24117d"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.8.git;branch=${KBRANCH};name=machine \
+           git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.8;destsuffix=${KMETA}"
+
+COMPATIBLE_MACHINE = "(qemux86$)"
+
+# Functionality flags
+KERNEL_FEATURES = ""
+
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto.inc b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto.inc
index 6b161fc..09cd1f1 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto.inc
@@ -8,6 +8,15 @@
 
 INC_PR = "r4"
 
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids network access required
+# by the use of AUTOREV SRCREVs, which are the default for this recipe.
+python () {
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != d.getVar("PN", True):
+        d.delVar("BB_DONT_CACHE")
+        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to %s to enable it" % (d.getVar("PN", True)))
+}
+
 DEPENDS += "xz-native bc-native"
 DEPENDS_append_aarch64 = " libgcc"
 KERNEL_CC_append_aarch64 = " ${TOOLCHAIN_OPTIONS}"
@@ -17,6 +26,8 @@
 KERNEL_CC_append_nios2 = " ${TOOLCHAIN_OPTIONS}"
 KERNEL_LD_append_nios2 = " ${TOOLCHAIN_OPTIONS}"
 
+KERNEL_FEATURES_append_qemuall=" features/debug/printk.scc"
+
 # A KMACHINE is the mapping of a yocto $MACHINE to what is built
 # by the kernel. This is typically the branch that should be built,
 # and it can be specific to the machine or shared
@@ -35,6 +46,7 @@
 #   2: report options that are not hardware related, but set by a BSP
 KCONF_AUDIT_LEVEL ?= "1"
 KCONF_BSP_AUDIT_LEVEL ?= "0"
+KMETA_AUDIT ?= "yes"
 
 LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}"
 
@@ -52,6 +64,7 @@
 }
 
 # extra tasks
-addtask kernel_link_vmlinux after do_compile before do_install
+addtask kernel_version_sanity_check after do_kernel_metadata do_kernel_checkout before do_compile
+addtask kernel_link_images after do_compile before do_strip
 addtask validate_branches before do_patch after do_kernel_checkout
 addtask kernel_configcheck after do_configure before do_compile
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.1.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.1.bb
index aecb517..788a8ea 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.1.bb
@@ -11,20 +11,20 @@
 KBRANCH_qemux86-64 ?= "standard/base"
 KBRANCH_qemumips64 ?= "standard/mti-malta64"
 
-SRCREV_machine_qemuarm ?= "232e2d88841c7e20857350275d80f5585ed93734"
-SRCREV_machine_qemuarm64 ?= "91f62d4a0a31919d9b2ccdaf881130f99b61fc5e"
-SRCREV_machine_qemumips ?= "7d3690c0762f11e038f14310a50ca1cdc813cc22"
-SRCREV_machine_qemuppc ?= "91f62d4a0a31919d9b2ccdaf881130f99b61fc5e"
-SRCREV_machine_qemux86 ?= "91f62d4a0a31919d9b2ccdaf881130f99b61fc5e"
-SRCREV_machine_qemux86-64 ?= "91f62d4a0a31919d9b2ccdaf881130f99b61fc5e"
-SRCREV_machine_qemumips64 ?= "b71e4cd7d45f03048ad31e2a36dfe5a43f021b51"
-SRCREV_machine ?= "91f62d4a0a31919d9b2ccdaf881130f99b61fc5e"
-SRCREV_meta ?= "a4f88c3fad887e1c559d03ae1b531ca267137b69"
+SRCREV_machine_qemuarm ?= "d67ef485ce1420df11bda2d9f6fb78ef50c1adff"
+SRCREV_machine_qemuarm64 ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_machine_qemumips ?= "65116339cfd210990c9c4710cdfec3ebd59abb0e"
+SRCREV_machine_qemuppc ?= "30816907653b57f1f3d5f9a7a2f6339bab14a680"
+SRCREV_machine_qemux86 ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_machine_qemux86-64 ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_machine_qemumips64 ?= "f7a0b532b6ac81757d85b0c9a928f45a87c9e364"
+SRCREV_machine ?= "f4d0900b2851e829e990e0f64b09ed3b8e355fae"
+SRCREV_meta ?= "3c3197e65b6f2f5514853c1fe78ae8ffc131b02c"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.1.git;name=machine;branch=${KBRANCH}; \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.1;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "4.1.18"
+LINUX_VERSION ?= "4.1.33"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.4.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.4.bb
index 3c5ee1b..e3a3d90 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.4.bb
@@ -11,20 +11,20 @@
 KBRANCH_qemux86-64 ?= "standard/base"
 KBRANCH_qemumips64 ?= "standard/mti-malta64"
 
-SRCREV_machine_qemuarm ?= "ec9167bcb0ccd4897177c5e235af68b5890aa326"
-SRCREV_machine_qemuarm64 ?= "1a72cec834de2c80b5563f8afbeea7664fd5ee05"
-SRCREV_machine_qemumips ?= "900f98d3ab6498bc7f4ff6b7a489db3bca4e6417"
-SRCREV_machine_qemuppc ?= "1a72cec834de2c80b5563f8afbeea7664fd5ee05"
-SRCREV_machine_qemux86 ?= "1a72cec834de2c80b5563f8afbeea7664fd5ee05"
-SRCREV_machine_qemux86-64 ?= "1a72cec834de2c80b5563f8afbeea7664fd5ee05"
-SRCREV_machine_qemumips64 ?= "4b08dfb1fb3bc7659e8f3e13665597d9a9f0816d"
-SRCREV_machine ?= "1a72cec834de2c80b5563f8afbeea7664fd5ee05"
-SRCREV_meta ?= "bcc65090840f51a6ac937297be5c22fe268d01ab"
+SRCREV_machine_qemuarm ?= "187bcc13f3023c3ae0a3ba5c69ae85c4e5e693ac"
+SRCREV_machine_qemuarm64 ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_qemumips ?= "2f273556495dd2871f08c73fc3f40d1ad546c638"
+SRCREV_machine_qemuppc ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_qemux86 ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_qemux86-64 ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_machine_qemumips64 ?= "0a19cacf5738876666a4b530a9fa14f05b355299"
+SRCREV_machine ?= "ca6a08bd7f86ebef11f763d26f787f7d65270473"
+SRCREV_meta ?= "3030330b066a33ce21164a8b30d0503cf9f68e5b"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.4.git;name=machine;branch=${KBRANCH}; \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.4;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "4.4.3"
+LINUX_VERSION ?= "4.4.26"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb
new file mode 100644
index 0000000..13778b9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb
@@ -0,0 +1,44 @@
+KBRANCH ?= "standard/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# board specific branches
+KBRANCH_qemuarm  ?= "standard/arm-versatile-926ejs"
+KBRANCH_qemuarm64 ?= "standard/qemuarm64"
+KBRANCH_qemumips ?= "standard/mti-malta32"
+KBRANCH_qemuppc  ?= "standard/qemuppc"
+KBRANCH_qemux86  ?= "standard/base"
+KBRANCH_qemux86-64 ?= "standard/base"
+KBRANCH_qemumips64 ?= "standard/mti-malta64"
+
+SRCREV_machine_qemuarm ?= "4cc544ad09ad704322cb66fe4ba197a6a05dc71f"
+SRCREV_machine_qemuarm64 ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_qemumips ?= "c285969d4f9376a671167ecf397578c8ad3e6a75"
+SRCREV_machine_qemuppc ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_qemux86 ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_qemux86-64 ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_machine_qemumips64 ?= "64f96ba530e58456070f26b0f3fcce3f64988b72"
+SRCREV_machine ?= "1adf9d36338dc3c63cdbf6f98bcbdc7bba42a794"
+SRCREV_meta ?= "83110d94edeb856a3667b62903ed4ae91c24117d"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.8.git;name=machine;branch=${KBRANCH}; \
+           git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.8;destsuffix=${KMETA}"
+
+LINUX_VERSION ?= "4.8.3"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
+
+COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
+KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc"
+KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace/0001-Fix-invalid-pointer-free-with-trace-collection.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace/0001-Fix-invalid-pointer-free-with-trace-collection.patch
deleted file mode 100644
index 3e2c4e1..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace/0001-Fix-invalid-pointer-free-with-trace-collection.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From e4cad900994cf286d971796a947fea782dfc6651 Mon Sep 17 00:00:00 2001
-From: Francis Giraldeau <francis.giraldeau@gmail.com>
-Date: Mon, 15 Jun 2015 11:43:02 -0400
-Subject: [PATCH] Fix invalid pointer free with trace collection
-
-Upstream-Status: Submitted
-
-Patch proposed by Li RongQing related to bug# 790
-
-Signed-off-by: Mikael Beckius <mikael.beckius@windriver.com>
-Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
----
- lib/context.c | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/lib/context.c b/lib/context.c
-index 45aab34..8d3770f 100644
---- a/lib/context.c
-+++ b/lib/context.c
-@@ -79,7 +79,7 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path,
- 	struct bt_trace_descriptor *td;
- 	struct bt_format *fmt;
- 	struct bt_trace_handle *handle;
--	int ret, closeret;
-+	int ret;
- 
- 	if (!ctx || !format_name || (!path && !stream_list))
- 		return -EINVAL;
-@@ -159,10 +159,8 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path,
- 	return handle->id;
- 
- error:
--	closeret = fmt->close_trace(td);
--	if (closeret) {
--		fprintf(stderr, "Error in close_trace callback\n");
--	}
-+	if (handle)
-+		bt_context_remove_trace(ctx, handle->id);
- end:
- 	return ret;
- }
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace/0001-lttng-live-Include-sys-param.h-for-MAXNAMLEN-definti.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace/0001-lttng-live-Include-sys-param.h-for-MAXNAMLEN-definti.patch
deleted file mode 100644
index eb16cd1..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace/0001-lttng-live-Include-sys-param.h-for-MAXNAMLEN-definti.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 8331b87845cafdda40e59a682f2ca8120ed0c472 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 08:17:40 +0000
-Subject: [PATCH] lttng-live: Include sys/param.h for MAXNAMLEN defintion
-
-exposed on musl based systems
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: pending
-
- formats/lttng-live/lttng-live.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/formats/lttng-live/lttng-live.h b/formats/lttng-live/lttng-live.h
-index 4ab641d..808ed2b 100644
---- a/formats/lttng-live/lttng-live.h
-+++ b/formats/lttng-live/lttng-live.h
-@@ -25,6 +25,7 @@
-  */
- 
- #include <stdint.h>
-+#include <sys/param.h>
- #include "lttng-viewer-abi.h"
- 
- #define LTTNG_DEFAULT_NETWORK_VIEWER_PORT	5344
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace_1.3.1.bb b/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace_1.3.1.bb
deleted file mode 100644
index 1766026..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace_1.3.1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Babeltrace - Trace Format Babel Tower"
-DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log."
-HOMEPAGE = "http://www.efficios.com/babeltrace/"
-BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace"
-
-LICENSE = "MIT & GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa"
-
-DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
-
-inherit autotools pkgconfig
-
-SRCREV = "6e2b9096c77138593097335b9b27202d98918089"
-
-SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-1.3 \
-           file://0001-Fix-invalid-pointer-free-with-trace-collection.patch \
-           file://0001-lttng-live-Include-sys-param.h-for-MAXNAMLEN-definti.patch \
-"
-
-S = "${WORKDIR}/git"
-
-do_configure_prepend () {
-	( cd ${S}; ${S}/bootstrap )
-}
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace_1.4.0.bb b/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace_1.4.0.bb
new file mode 100644
index 0000000..0fadeb0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/babeltrace_1.4.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Babeltrace - Trace Format Babel Tower"
+DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log."
+HOMEPAGE = "http://www.efficios.com/babeltrace/"
+BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace"
+
+LICENSE = "MIT & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa"
+
+DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://www.efficios.com/files/babeltrace/babeltrace-${PV}.tar.bz2 \
+"
+
+EXTRA_OECONF = "--disable-debug-info"
+
+SRC_URI[md5sum] = "fa99064048af5c9c6ff00e489ac809c2"
+SRC_URI[sha256sum] = "9469eeb22617cd12668683b04c27003e5337e9ac66ade914988df3642fc0d0e4"
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch
new file mode 100644
index 0000000..6a91f32
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch
@@ -0,0 +1,49 @@
+From 1b0e574d680101105a6c1e8931c78824f5a97a42 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon, 5 Sep 2016 17:08:56 +0000
+Subject: [PATCH] Makefile: Do not fail if CONFIG_TRACEPOINTS is not enabled
+Organization: O.S. Systems Software LTDA.
+
+The lttng-modules are being pulled by the tools-profile image feature,
+however, not every kernel has the CONFIG_TRACEPOINTS feature enabled.
+
+This change makes the build do not fail when CONFIG_TRACEPOINTS is not
+available, allowing it to be kept being pulled by default.
+
+Upstream-Status: Inapropriate [embedded specific]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ Makefile | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 8602649..75550cc 100644
+--- a/Makefile
++++ b/Makefile
+@@ -8,10 +8,7 @@ ifneq ($(KERNELRELEASE),)
+   # and defines the modules to be built.
+ 
+   ifdef CONFIG_LOCALVERSION	# Check if dot-config is included.
+-    ifeq ($(CONFIG_TRACEPOINTS),)
+-      $(error The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration)
+-    endif # CONFIG_TRACEPOINTS
+-  endif # ifdef CONFIG_LOCALVERSION
++    ifneq ($(CONFIG_TRACEPOINTS),)
+ 
+   TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))
+ 
+@@ -94,6 +91,10 @@ ifneq ($(KERNELRELEASE),)
+   obj-$(CONFIG_LTTNG) += lib/
+   obj-$(CONFIG_LTTNG) += tests/
+ 
++    else
++      $(warning The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration)
++    endif # CONFIG_TRACEPOINTS
++  endif # ifdef CONFIG_LOCALVERSION
+ else # KERNELRELEASE
+ 
+ # This part of the Makefile is used when the 'make' command is runned in the
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-modules_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-modules_git.bb
index 2eb1a51..7014541 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-modules_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-modules_git.bb
@@ -8,12 +8,13 @@
 
 inherit module
 
-SRCREV = "45e0ebd91f995cc73c2b0d5c60cf9d12e8c838bf"
-PV = "2.7.1+git${SRCPV}"
+SRCREV = "6e4fc6f36d68fb3c8d40113f8670eb6e9c8ffd76"
+PV = "2.8.0+git${SRCPV}"
 
 COMPATIBLE_HOST = '(x86_64|i.86|powerpc|aarch64|mips|nios2|arm).*-linux'
 
-SRC_URI = "git://git.lttng.org/lttng-modules.git;branch=stable-2.7"
+SRC_URI = "git://git.lttng.org/lttng-modules.git;branch=stable-2.8 \
+           file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch"
 
 export INSTALL_MOD_DIR="kernel/lttng-modules"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-error.h-common-error.h.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-error.h-common-error.h.patch
new file mode 100644
index 0000000..6c8a9b2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-error.h-common-error.h.patch
@@ -0,0 +1,33 @@
+From 6712db617fe9155ea236f6840c2bd18dbec4c871 Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjeanson@efficios.com>
+Date: Wed, 15 Jun 2016 17:18:03 -0400
+Subject: [PATCH] Fix: error.h -> common/error.h
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Backport
+
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
+Signed-off-by: Peter Liu <peter.x.liu@external.atlascopco.com>
+---
+ src/bin/lttng-sessiond/agent.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bin/lttng-sessiond/agent.c b/src/bin/lttng-sessiond/agent.c
+index 7cbbbde..310a7e8 100644
+--- a/src/bin/lttng-sessiond/agent.c
++++ b/src/bin/lttng-sessiond/agent.c
+@@ -29,7 +29,7 @@
+ #include "agent.h"
+ #include "ust-app.h"
+ #include "utils.h"
+-#include "error.h"
++#include "common/error.h"
+ 
+ #define AGENT_RET_CODE_INDEX(code) (code - AGENT_RET_CODE_SUCCESS)
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/Revert-Build-look-for-python-3.0-when-building-pytho.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/Revert-Build-look-for-python-3.0-when-building-pytho.patch
deleted file mode 100644
index d05c04c..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/Revert-Build-look-for-python-3.0-when-building-pytho.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Fri, 4 Dec 2015 16:11:41 +0000
-Subject: [PATCH] Revert "Build: look for python >= 3.0 when building python bindings"
-Organization: O.S. Systems Software LTDA.
-
-This reverts commit 227703a2ceada3c104edd56756d48455ca4c271a.
-
-Upstream-Status: Pending
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4dee4b4..6608bcd 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -339,7 +339,7 @@ AM_CONDITIONAL([PYTHON_BINDING], [test "x${enable_python_binding:-yes}" = xyes])
- 
- if test "x${enable_python_binding:-yes}" = xyes; then
-   AX_PKG_SWIG($swig_version, [], [ AC_MSG_ERROR([SWIG $swig_version or newer is needed]) ])
--  AM_PATH_PYTHON([3.0])
-+  AM_PATH_PYTHON
- 
-   AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for python, bypassing python-config])
-   AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
index e758815..6230063 100755
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
@@ -1,4 +1,5 @@
 #!/bin/sh
-
-make -C tests installcheck
-
+# Without --ignore-exit, the tap harness causes any FAILs within a
+# test plan to raise ERRORs; this is just noise.
+makeargs="LOG_DRIVER_FLAGS=--ignore-exit"
+make -t all >/dev/null 2>&1 && exec make -s $makeargs check 2>/dev/null
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/runtest-2.4.0.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/runtest-2.4.0.patch
deleted file mode 100644
index 958bce4..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/runtest-2.4.0.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index 584f59b..c2bcabd 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -12,3 +12,9 @@ dist_doc_DATA = LICENSE \
- dist_noinst_DATA = CodingStyle
- 
- EXTRA_DIST = extras/lttng-bash_completion gpl-2.0.txt lgpl-2.1.txt
-+
-+install-ptest:
-+	cp -r $(srcdir)/tests $(DESTDIR)
-+	for m in $$(find $(DESTDIR)/tests -name Makefile); do \
-+          sed -i -e 's|^Makefile:|_Makefile:|' $$m; \
-+        done
-diff --git a/tests/run.sh b/tests/run.sh
-index c6c50fd..6455359 100755
---- a/tests/run.sh
-+++ b/tests/run.sh
-@@ -19,4 +19,7 @@
- 
- [ -z "$1" ] && echo "Error: No testlist. Please specify a testlist to run." && exit 1
- 
--prove --merge --exec '' - < $1
-+prove --merge -v --exec '' - < $1 | sed \
-+  -e 's|^ok \(.*\)|PASS: \1|' \
-+  -e 's|^not ok \(.*\)|FAIL: \1|' \
-+  | egrep -h 'PASS|FAIL'
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/stop-using-SIGUNUSED.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/stop-using-SIGUNUSED.patch
deleted file mode 100644
index bd4f7d1..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools/stop-using-SIGUNUSED.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 1f54181c2df1fb92c3323a6dbf8273fb66b883b6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Galarneau?=
- <jeremie.galarneau@efficios.com>
-Date: Sat, 17 Oct 2015 19:41:47 -0400
-Subject: [PATCH] Port: Don't use SIGUNUSED which is not defined on Solaris
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-Organization: O.S. Systems Software LTDA.
-
-Upstream-Status: Backport [2.8.0]
-
-Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
----
- src/common/runas.c | 18 +++++-------------
- 1 file changed, 5 insertions(+), 13 deletions(-)
-
-diff --git a/src/common/runas.c b/src/common/runas.c
-index 57f7382..0825470 100644
---- a/src/common/runas.c
-+++ b/src/common/runas.c
-@@ -530,21 +530,13 @@ int run_as_rmdir_recursive(const char *path, uid_t uid, gid_t gid)
- static
- int reset_sighandler(void)
- {
--	int sig, ret = 0;
-+	int sig;
- 
--	for (sig = SIGHUP; sig <= SIGUNUSED; sig++) {
--		/* Skip unblockable signals. */
--		if (sig == SIGKILL || sig == SIGSTOP) {
--			continue;
--		}
--		if (signal(sig, SIG_DFL) == SIG_ERR) {
--			PERROR("reset signal %d", sig);
--			ret = -1;
--			goto end;
--		}
-+	DBG("Resetting run_as worker signal handlers to default");
-+	for (sig = 1; sig <= 31; sig++) {
-+		(void) signal(sig, SIG_DFL);
- 	}
--end:
--	return ret;
-+	return 0;
- }
- 
- static
--- 
-2.6.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools_git.bb
index 8bd0989..bfc657b 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-tools_git.bb
@@ -9,40 +9,41 @@
                     file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://lgpl-2.1.txt;md5=0f0d71500e6a57fd24d825f33242b9ca"
 
-DEPENDS = "liburcu popt libxml2"
+DEPENDS = "liburcu popt libxml2 util-linux"
 RDEPENDS_${PN} = "libgcc"
-RDEPENDS_${PN}-ptest += "make perl bash"
+RDEPENDS_${PN}-ptest += "make perl bash gawk ${PN} babeltrace procps"
+# babelstats.pl wants getopt-long
+RDEPENDS_${PN}-ptest += "perl-module-getopt-long"
 
-SRCREV = "a90f2c1e10b759782653a81815625e9d1bbb75ca"
-PV = "2.7.1+git${SRCPV}"
+SRCREV = "d11e0dba0df9024b8613c51e167a379b91e8b20b"
+PV = "2.8.1+git${SRCPV}"
 
-PYTHON_OPTION = "am_cv_python_pyexecdir='${libdir}/python${PYTHON_BASEVERSION}/site-packages' \
-                 am_cv_python_pythondir='${libdir}/python${PYTHON_BASEVERSION}/site-packages' \
-                 PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}' \
+PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
+                 am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
+                 PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \
 "
 PACKAGECONFIG ??= "lttng-ust"
-PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python swig-native"
-PACKAGECONFIG[lttng-ust] = "--enable-lttng-ust, --disable-lttng-ust, lttng-ust"
+PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native"
+PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust"
 PACKAGECONFIG[kmod] = "--enable-kmod, --disable-kmod, kmod"
+PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native"
 PACKAGECONFIG_remove_libc-musl = "lttng-ust"
 
-SRC_URI = "git://git.lttng.org/lttng-tools.git;branch=stable-2.7 \
-           file://Revert-Build-look-for-python-3.0-when-building-pytho.patch \
-           file://stop-using-SIGUNUSED.patch \
-           file://runtest-2.4.0.patch \
+SRC_URI = "git://git.lttng.org/lttng-tools.git;branch=stable-2.8 \
+           file://0001-Fix-error.h-common-error.h.patch \
            file://run-ptest"
 
 S = "${WORKDIR}/git"
 
-inherit autotools-brokensep ptest pkgconfig useradd
+inherit autotools-brokensep ptest pkgconfig useradd python3-dir
 
 USERADD_PACKAGES = "${PN}"
 GROUPADD_PARAM_${PN} = "tracing"
 
 FILES_${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \
-                ${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
-FILES_${PN}-staticdev += "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*.a"
-FILES_${PN}-dev += "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*.la"
+                ${PYTHON_SITEPACKAGES_DIR}/*"
+FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
 
 # Since files are installed into ${libdir}/lttng/libexec we match 
 # the libexec insane test so skip it.
@@ -52,31 +53,64 @@
 
 do_configure_prepend () {
 	# Delete a shipped m4 file that overrides our patched one
-	rm -f ${S}/config/libxml.m4
+	rm -f ${S}/m4/libxml.m4
 }
 
 do_install_ptest () {
-	chmod +x ${D}${PTEST_PATH}/tests/utils/utils.sh
-	for i in `find ${D}${PTEST_PATH} -perm /u+x -type f`; do
-		sed -e "s:\$TESTDIR.*/src/bin/lttng/\$LTTNG_BIN:\$LTTNG_BIN:g" \
-		  -e "s:\$TESTDIR/../src/bin/lttng-sessiond/\$SESSIOND_BIN:\$SESSIOND_BIN:g" \
-		  -e "s:\$DIR/../src/bin/lttng-sessiond/\$SESSIOND_BIN:\$SESSIOND_BIN:g" \
-		  -e "s:\$TESTDIR/../src/bin/lttng-consumerd/:${libdir}/lttng/libexec/:g" \
-		  -e "s:\$DIR/../src/bin/lttng-consumerd/:${libdir}/lttng/libexec/:g" \
-		  -e "s:\$TESTDIR/../src/bin/lttng-relayd/\$RELAYD_BIN:\$RELAYD_BIN:g" \
-		  -e "s:\$DIR/../src/bin/lttng-sessiond/lttng-sessiond:\$SESSIOND_BIN:g" \
-		  -e "s:\$DIR/../src/bin/lttng-relayd/\$RELAYD_BIN:\$RELAYD_BIN:g" \
-		  -e "s:\$DIR/../bin/lttng-relayd/\$RELAYD_BIN:\$RELAYD_BIN:g" \
-		  -i $i
+	mkdir -p ${D}${PTEST_PATH}
+
+	cp -a -T ${B} ${D}${PTEST_PATH}
+
+	# Prevent attempts to update Makefiles during test runs, and
+	# silence "Making check in $SUBDIR" messages.
+	find ${D}${PTEST_PATH} -name Makefile -type f -exec \
+		sed -i -e 's!^Makefile:!_Makefile:!' \
+		-e '/echo "Making $$target in $$subdir"; \\/d' {} +
+
+	# Prevent attempts to update version.h during test runs.
+	sed -i -e '/^\.PHONY: version\.h$/d' ${D}${PTEST_PATH}/include/Makefile
+
+	# Silence "Making check in $SUBDIR" messages.
+	find ${D}${PTEST_PATH} -name Makefile -type f -exec \
+		sed -i -e '/echo "Making $$target in $$subdir"; \\/d' {} +
+
+	# Substitute links to installed binaries.
+	for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd ; do
+		orig="${D}${PTEST_PATH}/src/bin/${prog}/${prog}"
+		rm "$orig"
+		case "$prog" in
+			lttng-consumerd)
+				ln -s "${libdir}/lttng/libexec/$prog" "$orig"
+				;;
+			*)
+				ln -s "${bindir}/$prog" "$orig"
+				;;
+		esac
 	done
 
-	# Update libdir references in copied .la files
-	for i in `find ${D}${PTEST_PATH} -type f -name *.la`; do
-		sed -i -e 's#${S}/tests/#${STAGING_DIR}${PTEST_PATH}#g' $i
+	# Remove libtool artifacts.
+	find ${D}${PTEST_PATH} \( -name '*.l[ao]' -o -name '*.lai' \) -delete
+
+	# Remove object files and archives.
+	find ${D}${PTEST_PATH} -name '*.[oa]' -type f -delete
+
+	# Remove Makefile.am and Makefile.in.
+	find ${D}${PTEST_PATH} -name 'Makefile.*' -type f -delete
+
+	# Remove autom4te.cache.
+	rm -rf ${D}${PTEST_PATH}/autom4te.cache
+
+	# Replace libtool wrapper scripts (which won't work on the
+	# target) with their corresponding binaries.
+	for prog in unit/ini_config/ini_config \
+		regression/tools/live/live_test \
+		regression/tools/health/health_check ; do
+		basename=${prog##*/}
+		ldir=${D}${PTEST_PATH}/tests/${prog%/*}
+		mv -f ${ldir}/.libs/${basename} ${ldir}
 	done
 
-	sed -e "s:src/bin:bin:g" -e "s:lt-::g" \
-	-i ${D}${PTEST_PATH}/tests/utils/utils.sh
-	sed -e "s:ini_config:\.libs\/ini_config:" \
-	-i ${D}${PTEST_PATH}/tests/unit/ini_config/test_ini_config
+	# checkpatch.pl is unneeded on target and causes file-rdeps QA
+	# warnings.
+	rm -f ${D}${PTEST_PATH}/extras/checkpatch.pl
 }
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-add-support-for-aarch64_be.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-add-support-for-aarch64_be.patch
deleted file mode 100644
index 9b37a4a..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-add-support-for-aarch64_be.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-lttng-ust: add support for aarch64_be
-
-Upstream-Status: Pending
-
-Signed-off-by: Tudor Florea <tudor.florea@enea.com>
-
-diff --ruN a/configure.ac b/configure.ac
---- a/configure.ac	2016-02-18 14:54:54.651713647 +0100
-+++ b/configure.ac	2016-02-18 14:56:11.057865297 +0100
-@@ -240,6 +240,7 @@
- 	s390x) NO_UNALIGNED_ACCESS=1 ;;
-         arm*) NO_UNALIGNED_ACCESS=1 ;;
- 	aarch64) NO_UNALIGNED_ACCESS=1 ;;
-+        aarch64_be) NO_UNALIGNED_ACCESS=1 ;;
- 	mips*) NO_UNALIGNED_ACCESS=1 ;;
- 	tile*) NO_UNALIGNED_ACCESS=1 ;;
- 	*)
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch
index b68a989..caf0b8b 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch
@@ -11,7 +11,7 @@
 --- a/doc/Makefile.am
 +++ b/doc/Makefile.am
 @@ -1,4 +1,4 @@
--SUBDIRS = . examples
+-SUBDIRS = . man examples
 +SUBDIRS = .
  
  dist_man_MANS = man/lttng-gen-tp.1 \
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust_git.bb
index 15d925d..baff71f 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/lttng/lttng-ust_git.bb
@@ -11,22 +11,30 @@
 inherit autotools lib_package
 
 DEPENDS = "liburcu util-linux"
-RDEPENDS_${PN}-bin = "python-core"
+RDEPENDS_${PN}-bin = "python3-core"
 
 # For backwards compatibility after rename
 RPROVIDES_${PN} = "lttng2-ust"
 RREPLACES_${PN} = "lttng2-ust"
 RCONFLICTS_${PN} = "lttng2-ust"
 
-SRCREV = "f89c1a3cf2b06a4970b9154c00ff6409870aefb5"
+SRCREV = "514a87f3b64181e384399935a5708a8f85b0cc83"
 PE = "2"
-PV = "2.7.1+git${SRCPV}"
+PV = "2.8.1+git${SRCPV}"
 
-SRC_URI = "git://git.lttng.org/lttng-ust.git;branch=stable-2.7 \
+SRC_URI = "git://git.lttng.org/lttng-ust.git;branch=stable-2.8 \
            file://lttng-ust-doc-examples-disable.patch \
-           file://lttng-ust-add-support-for-aarch64_be.patch \
           "
 
+EXTRA_OECONF += "--disable-man-pages"
+
+do_install_append() {
+        # Patch python tools to use Python 3; they should be source compatible, but
+        # still refer to Python 2 in the shebang
+        sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${bindir}/lttng-gen-tp
+}
+
+
 S = "${WORKDIR}/git"
 
 do_configure_prepend () {
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofile.inc b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofile.inc
index cf3ad43..96ef43d 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofile.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofile.inc
@@ -24,7 +24,9 @@
            file://oprofile-cross-compile-tests.patch \
            file://run-ptest \
            file://root-home-dir.patch \
-           file://0001-Add-rmb-definition-for-NIOS2-architecture.patch"
+           file://0001-Add-rmb-definition-for-NIOS2-architecture.patch \
+           file://0001-Fix-FTBFS-problem-with-GCC-6.patch \
+"
 
 SRC_URI_append_libc-musl = " file://musl.patch"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofile/0001-Fix-FTBFS-problem-with-GCC-6.patch b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofile/0001-Fix-FTBFS-problem-with-GCC-6.patch
new file mode 100644
index 0000000..d372fd5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofile/0001-Fix-FTBFS-problem-with-GCC-6.patch
@@ -0,0 +1,51 @@
+From 39d4d46a0bd504ac708ffe72df87bf74cd12ad30 Mon Sep 17 00:00:00 2001
+From: William Cohen <wcohen@redhat.com>
+Date: Fri, 5 Feb 2016 17:30:19 -0500
+Subject: [PATCH] Fix FTBFS problem with GCC-6
+
+GCC-6 is pickier about some of the type conversions causing the Fedora
+24 mass rebuild the build of oprofile failed with:
+
+make[3]: Entering directory '/builddir/build/BUILD/oprofile-1.1.0/libutil++'
+g++ -DHAVE_CONFIG_H -I. -I..  -I ../libutil -I ../libop -I ../libpp   -W -Wall -fno-common -ftemplate-depth-50 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c -o op_bfd.o op_bfd.cpp
+op_bfd.cpp: In member function 'void op_bfd::get_symbol_range(symbol_index_t, long long unsigned int&, long long unsigned int&) const':
+op_bfd.cpp:538:47: error: cannot convert 'std::ostream {aka std::basic_ostream<char>}' to 'const bool' in initialization
+  bool const verbose = cverb << (vbfd & vlevel1);
+                                               ^
+op_bfd.cpp:546:7: error: in argument to unary !
+  if (!verbose)
+       ^~~~~~~
+
+Avoid the intermediate bool type to make GCC-6 happy.
+
+Signed-off-by: William Cohen <wcohen@redhat.com>
+---
+Upstream-Status: Backport
+
+ libutil++/op_bfd.cpp | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/libutil++/op_bfd.cpp b/libutil++/op_bfd.cpp
+index 389c920..f2eb42b 100644
+--- a/libutil++/op_bfd.cpp
++++ b/libutil++/op_bfd.cpp
+@@ -535,15 +535,13 @@ void op_bfd::get_symbol_range(symbol_index_t sym_idx,
+ {
+ 	op_bfd_symbol const & sym = syms[sym_idx];
+ 
+-	bool const verbose = cverb << (vbfd & vlevel1);
+-
+ 	if (anon_obj)
+ 		start = sym.vma();
+ 	else
+ 		start = sym.filepos();
+ 	end = start + sym.size();
+ 
+-	if (!verbose)
++	if (!(cverb << (vbfd & vlevel1)))
+ 		return;
+ 
+ 	io_state state(cverb << (vbfd & vlevel1));
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server/init b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server/init
deleted file mode 100755
index 2544ea4..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server/init
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          oprofile-server
-# Required-Start:    $network
-# Required-Stop:     $network
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: OProfileUI server
-# Description:       
-### END INIT INFO
-
-. /etc/init.d/functions
-
-case "$1" in
-  start)
-        echo "Starting OProfileUI server"
-	. /etc/profile
-	/usr/bin/oprofile-server &
-  ;;
-
-  stop)
-        echo "Stopping OProfileUI server"
-        killproc oprofile-server
-  ;;
-
-  restart)
-	$0 stop
-        sleep 1
-        $0 start
-  ;;
-
-  *)
-        echo "usage: $0 { start | stop | restart }"
-  ;;
-esac
-
-exit 0
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server/oprofileui-server.service b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server/oprofileui-server.service
deleted file mode 100644
index 1a2cbe6..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server/oprofileui-server.service
+++ /dev/null
@@ -1,6 +0,0 @@
-[Unit]
-Description=OProfileUI Server
-After=network.target
-
-[Service]
-ExecStart=/bin/sh -c ". @SYSCONFDIR@/profile; @BINDIR@/oprofile-server"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server_git.bb
deleted file mode 100644
index cc3477b..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui-server_git.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-require oprofileui.inc
-
-SRCREV = "389e1875af4721d52c7e65cf9cfffb69b0ed6a59"
-PV = "0.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://git.yoctoproject.org/oprofileui \
-           file://init \
-           file://oprofileui-server.service "
-
-DEPENDS += "intltool-native gettext-native"
-
-EXTRA_OECONF += "--disable-client --enable-server"
-
-RDEPENDS_${PN} = "oprofile avahi-daemon"
-
-do_install_append() {
-	install -d ${D}${sysconfdir}/init.d
-	install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/oprofileui-server
-
-	install -d ${D}${systemd_unitdir}/system
-	install -m 0644 ${WORKDIR}/oprofileui-server.service ${D}${systemd_unitdir}/system/
-	sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
-		-e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/oprofileui-server.service
-}
-
-inherit update-rc.d systemd
-
-INITSCRIPT_NAME = "oprofileui-server"
-INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
-
-SYSTEMD_SERVICE_${PN} = "oprofileui-server.service"
-SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui.inc b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui.inc
deleted file mode 100644
index 8fcf014..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "User Interface for the System-Wide Profiler"
-DESCRIPTION = "User interface for the OProfile tool"
-HOMEPAGE = "http://labs.o-hand.com/oprofileui/"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-SECTION = "x11"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-DEPENDS = "glib-2.0 avahi intltool-native"
-
-inherit autotools pkgconfig gettext
-
-EXTRA_OECONF = "--with-avahi"
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui_git.bb
deleted file mode 100644
index 86f3d8e..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/oprofile/oprofileui_git.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require oprofileui.inc
-
-DEPENDS += "gtk+ libglade libxml2 avahi-ui gconf gettext-native"
-
-inherit distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-
-SRCREV = "389e1875af4721d52c7e65cf9cfffb69b0ed6a59"
-PV = "0.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://git.yoctoproject.org/oprofileui"
-
-EXTRA_OECONF += "--enable-client --disable-server"
-
-PACKAGES =+ "oprofileui-viewer"
-
-FILES_oprofileui-viewer = "${bindir}/oparchconv ${bindir}/oprofile-viewer ${datadir}/applications/ ${datadir}/oprofileui/ ${datadir}/icons"
-RDEPENDS_oprofileui-viewer = "oprofile"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/perf/perf.bb b/import-layers/yocto-poky/meta/recipes-kernel/perf/perf.bb
index 3d6ffb3..471023d 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/perf/perf.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/perf/perf.bb
@@ -30,6 +30,8 @@
     ${SCRIPTING_DEPENDS} \
     ${LIBUNWIND_DEPENDS} \
     bison flex xz \
+    xmlto-native \
+    asciidoc-native \
 "
 
 do_configure[depends] += "virtual/kernel:do_shared_workdir"
@@ -40,10 +42,6 @@
 
 # needed for building the tools/perf Python bindings
 inherit python-dir
-export STAGING_INCDIR
-export STAGING_LIBDIR
-export BUILD_SYS
-export HOST_SYS
 export PYTHON_SITEPACKAGES_DIR
 
 #kernel 3.1+ supports WERROR to disable warnings as errors
@@ -81,6 +79,7 @@
     ARCH=${ARCH} \
     CC="${CC}" \
     AR="${AR}" \
+    LD="${LD}" \
     EXTRA_CFLAGS="-ldw" \
     perfexecdir=${libexecdir} \
     NO_GTK2=1 ${TUI_DEFINES} NO_DWARF=1 ${LIBUNWIND_DEFINES} \
@@ -94,14 +93,12 @@
     'sharedir=${datadir}' \
     'sysconfdir=${sysconfdir}' \
     'perfexecdir=${libexecdir}/perf-core' \
-    \
     'ETC_PERFCONFIG=${@os.path.relpath(sysconfdir, prefix)}' \
     'sharedir=${@os.path.relpath(datadir, prefix)}' \
     'mandir=${@os.path.relpath(mandir, prefix)}' \
     'infodir=${@os.path.relpath(infodir, prefix)}' \
 "
 
-
 do_compile() {
 	# Linux kernel build system is expected to do the right thing
 	unset CFLAGS
@@ -136,11 +133,24 @@
     # with each other if its in the shared source directory
     #
     if [ -e "${S}/tools/perf/config/Makefile" ]; then
+        perfconfig="${S}/tools/perf/config/Makefile"
+    fi
+    if [ -e "${S}/tools/perf/Makefile.config" ]; then
+        perfconfig="${S}/tools/perf/Makefile.config"
+    fi
+    if [ -n "${perfconfig}" ]; then
         # Match $(prefix)/$(lib) and $(prefix)/lib
         sed -i -e 's,^libdir = \($(prefix)/.*lib\),libdir ?= \1,' \
                -e 's,^perfexecdir = \(.*\),perfexecdir ?= \1,' \
                -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \
-            ${S}/tools/perf/config/Makefile
+            ${perfconfig}
+    fi
+    # The man pages installation is "$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)"
+    # in ${S}/tools/perf/Documentation/Makefile, if the mandir set to '?=', it
+    # will use the relative path 'share/man', in the way it will resulting in
+    # incorrect installation for man pages.
+    if [ -e "${S}/tools/perf/Documentation/Makefile" ]; then
+	sed -i 's,^mandir?=,mandir:=,' ${S}/tools/perf/Documentation/Makefile
     fi
     if [ -e "${S}/tools/perf/Makefile.perf" ]; then
         sed -i -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \
@@ -160,10 +170,12 @@
     if [ -e "${S}/tools/perf/Makefile.perf" ]; then
         sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/perf/Makefile.perf
         sed -i 's,AR = $(CROSS_COMPILE)ar,#AR,' ${S}/tools/perf/Makefile.perf
+        sed -i 's,LD = $(CROSS_COMPILE)ld,#LD,' ${S}/tools/perf/Makefile.perf
     fi
     if [ -e "${S}/tools/lib/api/Makefile" ]; then
         sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/lib/api/Makefile
         sed -i 's,AR = $(CROSS_COMPILE)ar,#AR,' ${S}/tools/lib/api/Makefile
+        sed -i 's,LD = $(CROSS_COMPILE)ld,#LD,' ${S}/tools/lib/api/Makefile
     fi
     if [ -e "${S}/tools/lib/subcmd/Makefile" ]; then
         sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/lib/subcmd/Makefile
@@ -201,6 +213,7 @@
 PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python"
 
 RDEPENDS_${PN} += "elfutils bash"
+RDEPENDS_${PN}-doc += "man"
 RDEPENDS_${PN}-archive =+ "bash"
 RDEPENDS_${PN}-python =+ "bash python python-modules"
 RDEPENDS_${PN}-perl =+ "bash perl perl-modules"
@@ -209,10 +222,11 @@
 RSUGGESTS_SCRIPTING = "${@perf_feature_enabled('perf-scripting', '${PN}-perl ${PN}-python', '',d)}"
 RSUGGESTS_${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}"
 
+#FILES_${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core /usr/lib64/traceevent ${libdir}/traceevent"
 FILES_${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent"
 FILES_${PN}-archive = "${libdir}/perf/perf-core/perf-archive"
 FILES_${PN}-tests = "${libdir}/perf/perf-core/tests ${libexecdir}/perf-core/tests"
-FILES_${PN}-python = "${libdir}/python*/site-packages ${libdir}/perf/perf-core/scripts/python"
+FILES_${PN}-python = "${libdir}/perf/perf-core/scripts/python ${PYTHON_SITEPACKAGES_DIR}"
 FILES_${PN}-python += "${libexecdir}/perf-core/scripts/python/*"
 FILES_${PN}-perl = "${libdir}/perf/perf-core/scripts/perl"
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Avoid-building-docs.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Avoid-building-docs.patch
new file mode 100644
index 0000000..202f354
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Avoid-building-docs.patch
@@ -0,0 +1,42 @@
+From 27df521c68e7c8b5b050dab15f40aa15fd03623a Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Wed, 4 May 2016 14:58:24 +0300
+Subject: [PATCH] Avoid building docs
+
+Upstream-Status: Inappropriate
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ Makefile.am | 2 +-
+ m4/yelp.m4  | 6 ------
+ 2 files changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index b919a3f..3a3851d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = daemon data help lib po src tools tests
++SUBDIRS = daemon data lib po src tools tests
+ 
+ EXTRA_DIST = AUTHORS tap-test COPYING.gpl-2
+ 
+diff --git a/m4/yelp.m4 b/m4/yelp.m4
+index 5db847f..1b6ede4 100644
+--- a/m4/yelp.m4
++++ b/m4/yelp.m4
+@@ -27,12 +27,6 @@ AC_ARG_WITH([help-dir],
+ HELP_DIR="$with_help_dir"
+ AC_SUBST(HELP_DIR)
+ 
+-AC_ARG_VAR([ITSTOOL], [Path to the `itstool` command])
+-AC_CHECK_PROG([ITSTOOL], [itstool], [itstool])
+-if test x"$ITSTOOL" = x; then
+-  AC_MSG_ERROR([itstool not found])
+-fi
+-
+ AC_ARG_VAR([XMLLINT], [Path to the `xmllint` command])
+ AC_CHECK_PROG([XMLLINT], [xmllint], [xmllint])
+ if test x"$XMLLINT" = x; then
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Disable-check-for-polkit-for-UI.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Disable-check-for-polkit-for-UI.patch
new file mode 100644
index 0000000..6085232
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Disable-check-for-polkit-for-UI.patch
@@ -0,0 +1,32 @@
+From 765d578145e31ddc9495adfab8037ade33c6a9cc Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Wed, 4 May 2016 10:59:36 +0300
+Subject: [PATCH] Disable check for polkit for UI
+
+The check is not technically required: sysprof just needs
+to be able to access system perf counters at runtime.
+
+Upstream-Status: Pending
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8559597..ecf93ad 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -131,8 +131,8 @@ AS_IF([test "$enable_gtk" = auto],[
+ 	AS_IF([test "$have_gtk" = "yes" && test "$have_polkit" = "yes"],[enable_gtk=yes],[enable_gtk=no])
+ ])
+ AS_IF([test "$enable_gtk" = "yes"],[
+-	AS_IF([test "$have_gtk" = "yes" && test "$have_polkit" = "yes"],[],[
+-		AC_MSG_ERROR([--enable-gtk requires gtk+-3.0 >= gtk_required_version and polkit-gobject-1])
++	AS_IF([test "$have_gtk" = "yes"],[],[
++		AC_MSG_ERROR([--enable-gtk requires gtk+-3.0 >= gtk_required_version])
+ 	])
+ ])
+ AM_CONDITIONAL(ENABLE_GTK, test "$enable_gtk" = "yes")
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Forward-port-mips-arm-memory-barrier-patches.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Forward-port-mips-arm-memory-barrier-patches.patch
new file mode 100644
index 0000000..92e804f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-Forward-port-mips-arm-memory-barrier-patches.patch
@@ -0,0 +1,38 @@
+From a2d385e504323641b1127821833c61e77301c90b Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Sat, 11 Jun 2016 22:45:37 +0300
+Subject: [PATCH] Forward port mips & arm memory barrier patches
+
+Upstream-Status: Pending
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ lib/util/util.h | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/lib/util/util.h b/lib/util/util.h
+index 591722d..0768056 100644
+--- a/lib/util/util.h
++++ b/lib/util/util.h
+@@ -29,4 +29,19 @@
+ #define read_barrier()           asm volatile("" ::: "memory")
+ #endif
+ 
++#ifdef __arm__
++/*
++ * Use the __kuser_memory_barrier helper in the CPU helper page. See
++ * arch/arm/kernel/entry-armv.S in the kernel source for details.
++ */
++#define read_barrier()         ((void(*)(void))0xffff0fa0)()
++#endif
++
++#ifdef __mips__
++#define read_barrier()         asm volatile(".set   mips2\n\t" \
++                                            "sync\n\t" \
++                                            ".set   mips0" ::: "memory")
++#endif
++
++
+ #endif /* SP_UTIL_H */
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-callgraph-Use-U64_TO_POINTER.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-callgraph-Use-U64_TO_POINTER.patch
new file mode 100644
index 0000000..ac1384c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-callgraph-Use-U64_TO_POINTER.patch
@@ -0,0 +1,29 @@
+From 05816e6f9cd65b2624bb04de65fdf61031c7017f Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Fri, 10 Jun 2016 14:01:54 +0300
+Subject: [PATCH] callgraph: Use U64_TO_POINTER
+
+This fixes a "cast to pointer from integer of different size" on i586.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Pending
+---
+ lib/sp-callgraph-view.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/sp-callgraph-view.c b/lib/sp-callgraph-view.c
+index 02cc17b..58315b0 100644
+--- a/lib/sp-callgraph-view.c
++++ b/lib/sp-callgraph-view.c
+@@ -135,7 +135,7 @@ build_functions_store (StackNode *node,
+ 
+   gtk_list_store_append (state->store, &iter);
+   gtk_list_store_set (state->store, &iter,
+-                      COLUMN_NAME, (const gchar *)node->data,
++                      COLUMN_NAME, U64_TO_POINTER(node->data),
+                       COLUMN_SELF, 100.0 * size / state->profile_size,
+                       COLUMN_TOTAL, 100.0 * total / state->profile_size,
+                       COLUMN_POINTER, node,
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-configure-Add-option-to-enable-disable-polkit.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-configure-Add-option-to-enable-disable-polkit.patch
new file mode 100644
index 0000000..158d997
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/0001-configure-Add-option-to-enable-disable-polkit.patch
@@ -0,0 +1,41 @@
+From 2b4005d72d3393933a7914be102ea65505c536cc Mon Sep 17 00:00:00 2001
+From: "Maxin B. John" <maxin.john@intel.com>
+Date: Thu, 21 Jul 2016 11:53:31 +0300
+Subject: [PATCH] configure: Add option to enable/disable polkit
+
+Changes the configure behaviour from autodetecting the polkit by default
+to having an option to disable it explicitly
+
+Upstream-Status: Pending
+
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+ configure.ac | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 2246d5a..3d3fe0f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -104,10 +104,18 @@ PKG_CHECK_MODULES(GTK,
+                   [gtk+-3.0 >= gtk_required_version],
+                   [have_gtk=yes],
+                   [have_gtk=no])
++AC_ARG_ENABLE([polkit],
++                   AS_HELP_STRING([--disable-polkit], [Do not use Polkit]),
++                   [enable_polkit="$enableval"], [enable_polkit="yes"])
++
++AS_IF([test "x$enable_polkit" = "xyes"], [
+ PKG_CHECK_MODULES(POLKIT,
+                   [polkit-gobject-1],
+                   [have_polkit=yes],
+                   [have_polkit=no])
++                                         ])
++AM_CONDITIONAL([HAVE_POLKIT], [test "x$enable_polkit" = "xyes"])
++
+ PKG_CHECK_MODULES(SYSTEMD,
+                   [libsystemd >= systemd_required_version],
+                   [have_systemd=yes],
+-- 
+2.4.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch
index dcc2cbe..f75ddad 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch
+++ b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch
@@ -7,8 +7,8 @@
 
 Index: git/elfparser.h
 ===================================================================
---- git.orig/elfparser.h	2011-07-16 18:57:41.000000000 -0700
-+++ git/elfparser.h	2011-07-16 20:28:54.733829895 -0700
+--- git.orig/lib/util/elfparser.h	2011-07-16 18:57:41.000000000 -0700
++++ git/lib/util/elfparser.h	2011-07-16 20:28:54.733829895 -0700
 @@ -17,6 +17,10 @@
   */
  #include <glib.h>
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/gui-argument.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/gui-argument.patch
deleted file mode 100644
index d2c053e..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/gui-argument.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Add the ability to explicitly enable/disable GUI support
-
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-Upstream-Status: Pending
-
---- git.orig/configure.ac
-+++ git/configure.ac
-@@ -62,12 +62,24 @@ KMICRO=`uname -r | cut -d"." -f 3 | cut
- # Pkgconfig dependencies
- 
- core_dep="glib-2.0 >= 2.6.0"
--gui_dep="gtk+-2.0 > 2.6.0 gdk-pixbuf-2.0 pangoft2 libglade-2.0"
- 
- PKG_CHECK_MODULES(CORE_DEP, $core_dep, [], AC_MSG_ERROR([sysprof dependencies not satisfied]))
- 
--build_gui=yes
--PKG_CHECK_MODULES(GUI_DEP, $gui_dep, [], build_gui=no)
-+gui_dep="gtk+-2.0 > 2.6.0 gdk-pixbuf-2.0 pangoft2 libglade-2.0"
-+
-+AC_ARG_ENABLE([gui],
-+  [AS_HELP_STRING([--disable-gui],
-+    [Disable GUI functionality (requires gtk+, gdk-pixbuf, pangoft2, libglade) @<:@default=auto@:>@])],
-+  [],
-+  [enable_gui=auto])
-+
-+build_gui=no
-+AS_IF([test "x$enable_gui" != xno],
-+  [PKG_CHECK_MODULES(GUI_DEP, $gui_dep, build_gui=yes,
-+    [if test "x$enable_gui" != xauto; then
-+       AC_MSG_FAILURE(
-+         [--enable-gui was given, but gui dependencies were not satisfied])
-+     fi])])
- 
- AM_CONDITIONAL([BUILD_GUI], [test "$build_gui" = yes])
- 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/rmb-arm.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/rmb-arm.patch
deleted file mode 100644
index c53ac64..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/rmb-arm.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Upstream-Status: Pending
-
-Index: git/util.h
-===================================================================
---- git.orig/util.h	2010-12-07 22:41:57.156243001 -0600
-+++ git/util.h	2010-12-07 22:43:47.616243002 -0600
-@@ -37,4 +37,13 @@
- #define cpu_relax()     asm volatile("" ::: "memory");
- #endif
- 
-+#ifdef __arm__
-+/*
-+ * Use the __kuser_memory_barrier helper in the CPU helper page. See
-+ * arch/arm/kernel/entry-armv.S in the kernel source for details.
-+ */
-+#define rmb()		((void(*)(void))0xffff0fa0)()
-+#define cpu_relax()	asm volatile("":::"memory")
-+#endif
-+
- #endif
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/rmb-mips.patch b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/rmb-mips.patch
deleted file mode 100644
index e055b8a..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/files/rmb-mips.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Upstream-Status: Pending
-
-Index: git/util.h
-===================================================================
---- git.orig/util.h	2010-12-08 01:22:44.486243001 -0600
-+++ git/util.h	2010-12-08 01:23:27.836243001 -0600
-@@ -37,4 +37,15 @@
- #define cpu_relax()     asm volatile("" ::: "memory");
- #endif
- 
-+#ifdef __mips__
-+#define rmb()		asm volatile(					\
-+				".set	mips2\n\t"			\
-+				"sync\n\t"				\
-+				".set	mips0"				\
-+				: /* no output */			\
-+				: /* no input */			\
-+				: "memory")
-+#define cpu_relax()	asm volatile("" ::: "memory")
-+#endif
-+
- #endif
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/sysprof_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/sysprof_git.bb
index 84c6aad..8d8b626 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/sysprof/sysprof_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/sysprof/sysprof_git.bb
@@ -1,31 +1,40 @@
 SUMMARY = "System-wide Performance Profiler for Linux"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://src/sp-application.c;endline=17;md5=40e55577ef122c88fe20052acda64875"
+
+inherit gnomebase gettext systemd
 
 DEPENDS = "glib-2.0"
 
-SRCREV = "cd44ee6644c3641507fb53b8a2a69137f2971219"
-PV = "1.2.0+git${SRCPV}"
+S = "${WORKDIR}/git"
+SRCREV = "9c6cec9b49766bf77c1713bc5a7c6d651e628068"
+PV = "3.20.0+git${SRCPV}"
 
 SRC_URI = "git://git.gnome.org/sysprof \
            file://define-NT_GNU_BUILD_ID.patch \
-           file://gui-argument.patch \
+           file://0001-configure-Add-option-to-enable-disable-polkit.patch \
+           file://0001-Disable-check-for-polkit-for-UI.patch \
+           file://0001-Avoid-building-docs.patch \
+           file://0001-callgraph-Use-U64_TO_POINTER.patch \
+           file://0001-Forward-port-mips-arm-memory-barrier-patches.patch \
           "
+SRC_URI[archive.md5sum] = "d56e8492033b60e247634731e7f760b9"
+SRC_URI[archive.sha256sum] = "4a338ad41bfffae87ef281f6e75c9660b3e0c6671bf5233be0c3f55a5e5b1ce5"
 
-SRC_URI_append_arm  = " file://rmb-arm.patch"
-SRC_URI_append_armeb  = " file://rmb-arm.patch"
-SRC_URI_append_mips = " file://rmb-mips.patch"
-SRC_URI_append_mips64 = " file://rmb-mips.patch"
-SRC_URI_append_mips64n32 = " file://rmb-mips.patch"
+AUTOTOOLS_AUXDIR = "${S}/build-aux"
 
-S = "${WORKDIR}/git"
+EXTRA_OECONF = "--enable-compile-warnings"
 
-inherit autotools pkgconfig
+PACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'gtk', '', d)}"
+PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3"
+PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit,polkit dbus"
 
-PACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK2DISTROFEATURES}', 'gui', '', d)}"
-PACKAGECONFIG[gui] = "--enable-gui,--disable-gui,gtk+ gdk-pixbuf pango libglade"
+SOLIBS = ".so"
+FILES_SOLIBSDEV = ""
+FILES_${PN} += "${datadir}/icons/"
+
+SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'sysprof2.service', '', d)}"
 
 # We do not yet work for aarch64.
-#
 COMPATIBLE_HOST = "^(?!aarch64).*"
-
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
index 3686c2f..46820ef 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
@@ -13,8 +13,6 @@
 
 FILES_${PN} += "${datadir}/systemtap/runtime/uprobes"
 
-EXTRA_OEMAKE = ""
-
 # Compile and install the uprobes kernel module on machines with utrace
 # support.  Note that staprun expects it in the systemtap/runtime directory,
 # not in /lib/modules.
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/docproc-build-fix.patch b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/docproc-build-fix.patch
deleted file mode 100644
index 33a8994..0000000
--- a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/docproc-build-fix.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
-
-Index: git/doc/SystemTap_Tapset_Reference/Makefile.am
-===================================================================
---- git.orig/doc/SystemTap_Tapset_Reference/Makefile.am	2012-04-13 08:43:46.263339003 -0500
-+++ git/doc/SystemTap_Tapset_Reference/Makefile.am	2012-04-13 09:31:22.470083915 -0500
-@@ -27,6 +27,10 @@
- noinst_PROGRAMS = docproc
- SRCTREE=$(abs_top_srcdir)/
- DOCPROC=$(abs_builddir)/docproc
-+docproc_LINK = $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@
-+
-+docproc.o: $(srcdir)/docproc.c
-+	$(CC_FOR_BUILD) -c $(CFLAGS_FOR_BUILD) -o $@ $(srcdir)/docproc.c
- 
- all: $(PDFDOCS) stamp-htmldocs stamp-mandocs
- tapsets.xml: docproc $(shell find $(SRCTREE)/tapset -name '*.stp')
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch
new file mode 100644
index 0000000..7d43a79
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch
@@ -0,0 +1,28 @@
+Add an option to explicitly disable the monitor (and therefore the dependency on
+json-c and ncurses).
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/configure.ac b/configure.ac
+index cd781a2..e56079a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -570,13 +574,16 @@ dnl See if we have enough libraries and tools to build the virt server
+ fi
+ AM_CONDITIONAL([BUILD_VIRT], [test "${have_libvirt}" == "yes" -a "${have_libxml2}" == "yes" -a "$enable_virt" != "no"])
+
++AC_ARG_ENABLE([monitor], AS_HELP_STRING([--disable-monitor],[Disable monitor]))
++if test "$enable_monitor" != "no"; then
+ dnl Check for presence of json-c and ncurses for use in monitor mode
+ PKG_CHECK_MODULES([jsonc], [json-c], [have_jsonc=yes], [have_jsonc=no])
+ PKG_CHECK_MODULES([ncurses], [ncurses], [have_ncurses=yes], [have_ncurses=no])
+-AM_CONDITIONAL([HAVE_MONITOR_LIBS], [test "${have_jsonc}" == "yes" -a "${have_ncurses}" == "yes"])
+ if test "${have_jsonc}" == "yes" -a "${have_ncurses}" == yes; then
+   AC_DEFINE([HAVE_MONITOR_LIBS],[1],[Define to 1 if json-c and ncurses libraries are installed])
+ fi
++fi
++AM_CONDITIONAL([HAVE_MONITOR_LIBS], [test "${have_jsonc}" == "yes" -a "${have_ncurses}" == "yes" -a "$enable_monitor" != "no"])
+
+ AC_CACHE_CHECK([for assembler .section "?" flags support], stap_cv_sectionq, [
+ old_CFLAGS="$CFLAGS"
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.bb b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.bb
index 97064b8..43bf69e 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.bb
@@ -2,17 +2,14 @@
 
 require systemtap_git.inc
 
-DEPENDS = "elfutils sqlite3 systemtap-native"
-DEPENDS_class-native = "elfutils-native sqlite3-native gettext-native"
-DEPENDS_class-nativesdk = "nativesdk-elfutils nativesdk-sqlite3 nativesdk-gettext"
+DEPENDS = "boost elfutils"
 
-RDEPENDS_${PN} += "python bash"
-RDEPENDS_${PN}_class-native += "python-native"
-RDEPENDS_${PN}_class-nativesdk += "python-native"
+RDEPENDS_${PN} += "python3-core bash"
 
 EXTRA_OECONF += "--with-libelf=${STAGING_DIR_TARGET} --without-rpm \
             --without-nss --without-avahi --without-dyninst \
             --disable-server --disable-grapher --enable-prologues \
+            --with-python3 \
             ac_cv_prog_have_javac=no \
             ac_cv_prog_have_jar=no "
 
@@ -20,8 +17,10 @@
 
 EXTRA_OECONF += "${STAP_DOCS} "
 
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ??= "sqlite monitor"
 PACKAGECONFIG[libvirt] = "--enable-libvirt,--disable-libvirt,libvirt"
+PACKAGECONFIG[sqlite] = "--enable-sqlite,--disable-sqlite,sqlite3"
+PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor,ncurses json-c"
 
 inherit autotools gettext pkgconfig
 
diff --git a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.inc b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.inc
index 656f15f..304eb99 100644
--- a/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.inc
+++ b/import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap_git.inc
@@ -1,14 +1,14 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRCREV = "7009f2f782e52d6105fe68d6ea2a9820a1099c06"
-PV = "2.9"
+SRCREV = "616ec7a0b916df7785d911b824c3df6eb022b213"
+PV = "3.0"
 
 SRC_URI = "git://sourceware.org/git/systemtap.git \
-           file://docproc-build-fix.patch \
            file://obsolete_automake_macros.patch \
            file://system_map_location.patch \
            file://configure-allow-to-disable-libvirt.patch \
            file://x32_abi_time.patch \
+           file://monitor-option.patch \
           "
 
 # systemtap doesn't support mips
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib/0001-topology-Add-missing-include-sys-stat.h.patch b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib/0001-topology-Add-missing-include-sys-stat.h.patch
deleted file mode 100644
index 0ead0cd..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib/0001-topology-Add-missing-include-sys-stat.h.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 3f1dba9a821b53b42001605f9a126a958804884f Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai@suse.de>
-Date: Mon, 9 Nov 2015 13:37:26 +0100
-Subject: [PATCH] topology: Add missing include sys/stat.h
-
-Necessary for proper definitions of S_IRUSR & co. Otherwise it
-results in compile errors with old glibc and uclibc:
-  parser.c: In function 'snd_tplg_build_file':
-  parser.c:262: error: 'S_IRUSR' undeclared (first use in this function)
-  parser.c:262: error: (Each undeclared identifier is reported only once
-  parser.c:262: error: for each function it appears in.)
-
-Upstream-Status: Backport
-
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- src/topology/parser.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/topology/parser.c b/src/topology/parser.c
-index 80a0ae0..18bb9c7 100644
---- a/src/topology/parser.c
-+++ b/src/topology/parser.c
-@@ -16,6 +16,7 @@
-            Liam Girdwood <liam.r.girdwood@linux.intel.com>
- */
- 
-+#include <sys/stat.h>
- #include "list.h"
- #include "tplg_local.h"
- 
--- 
-2.4.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib/avoid-including-sys-poll.h-directly.patch b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib/avoid-including-sys-poll.h-directly.patch
index 161619b..3d44585 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib/avoid-including-sys-poll.h-directly.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib/avoid-including-sys-poll.h-directly.patch
@@ -1,4 +1,4 @@
-From 7dcf46969e85c881c901df4b49309e9091cad16a Mon Sep 17 00:00:00 2001
+From c2c13cf0c469862cd39b2a69862002331ab7c8cb Mon Sep 17 00:00:00 2001
 From: Andre McCurdy <armccurdy@gmail.com>
 Date: Tue, 9 Feb 2016 14:01:18 -0800
 Subject: [PATCH] avoid including <sys/poll.h> directly
@@ -24,7 +24,7 @@
  12 files changed, 12 insertions(+), 12 deletions(-)
 
 diff --git a/aserver/aserver.c b/aserver/aserver.c
-index 1579da7..ef64248 100644
+index ac20706..46f731a 100644
 --- a/aserver/aserver.c
 +++ b/aserver/aserver.c
 @@ -20,7 +20,7 @@
@@ -62,7 +62,7 @@
  #include <stdarg.h>
  #include <endian.h>
 diff --git a/include/local.h b/include/local.h
-index b429f5d..e05898f 100644
+index 317f2e3..6a43a47 100644
 --- a/include/local.h
 +++ b/include/local.h
 @@ -47,7 +47,7 @@
@@ -73,20 +73,20 @@
 +#include <poll.h>
  #include <sys/types.h>
  #include <errno.h>
- #include <linux/types.h>
+ #if defined(__linux__)
 diff --git a/src/control/control.c b/src/control/control.c
-index 4a28cf6..071c5db 100644
+index 6c00b8e..fd0c303 100644
 --- a/src/control/control.c
 +++ b/src/control/control.c
-@@ -48,7 +48,7 @@ and IEC958 structure.
+@@ -90,7 +90,7 @@ I/O operations.
  #include <string.h>
  #include <fcntl.h>
  #include <signal.h>
 -#include <sys/poll.h>
 +#include <poll.h>
+ #include <stdbool.h>
  #include "control_local.h"
  
- /**
 diff --git a/src/control/control_shm.c b/src/control/control_shm.c
 index bd07d4a..9a2e268 100644
 --- a/src/control/control_shm.c
@@ -101,7 +101,7 @@
  #include <sys/uio.h>
  #include <sys/mman.h>
 diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c
-index fd3877c..52ac093 100644
+index c3925cc..18f1dd5 100644
 --- a/src/pcm/pcm_direct.c
 +++ b/src/pcm/pcm_direct.c
 @@ -30,7 +30,7 @@
@@ -114,7 +114,7 @@
  #include <sys/sem.h>
  #include <sys/wait.h>
 diff --git a/src/pcm/pcm_mmap.c b/src/pcm/pcm_mmap.c
-index 5c4fbe1..2cfa7db 100644
+index 1948289..4cf220a 100644
 --- a/src/pcm/pcm_mmap.c
 +++ b/src/pcm/pcm_mmap.c
 @@ -22,7 +22,7 @@
@@ -153,7 +153,7 @@
  #include <sys/mman.h>
  #include <netinet/in.h>
 diff --git a/src/seq/seq.c b/src/seq/seq.c
-index 620ca3f..681cef1 100644
+index 9279830..d2027cb 100644
 --- a/src/seq/seq.c
 +++ b/src/seq/seq.c
 @@ -777,7 +777,7 @@ void event_filter(snd_seq_t *seq, snd_seq_event_t *ev)
@@ -179,5 +179,5 @@
  #include <sys/shm.h>
  #include "list.h"
 -- 
-1.9.1
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.0.bb
deleted file mode 100644
index a73da28..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.0.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "ALSA sound library"
-HOMEPAGE = "http://www.alsa-project.org"
-BUGTRACKER = "https://bugtrack.alsa-project.org/alsa-bug/login_page.php"
-SECTION = "libs/multimedia"
-LICENSE = "LGPLv2.1 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
-                    file://src/socket.c;beginline=1;endline=26;md5=11ff89a8a7a4a690a5c78effe8159545"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# configure.in sets -D__arm__ on the command line for any arm system
-# (not just those with the ARM instruction set), this should be removed,
-# (or replaced by a permitted #define).
-#FIXME: remove the following
-ARM_INSTRUCTION_SET = "arm"
-
-SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/${BP}.tar.bz2 \
-           file://Check-if-wordexp-function-is-supported.patch \
-           file://avoid-including-sys-poll.h-directly.patch \
-           file://0001-topology-Add-missing-include-sys-stat.h.patch \
-"
-SRC_URI[md5sum] = "69515ca73c3c4a212ef45160dea846c1"
-SRC_URI[sha256sum] = "dfde65d11e82b68f82e562ab6228c1fb7c78854345d3c57e2c68a9dd3dae1f15"
-
-inherit autotools pkgconfig
-
-require alsa-fpu.inc
-EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
-
-EXTRA_OECONF = "--disable-python"
-
-EXTRA_OECONF_append_libc-uclibc = " --with-versioned=no "
-
-PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc"
-FILES_${PN} += "${libdir}/${BPN}/smixer/*.so"
-FILES_${PN}-dev += "${libdir}/${BPN}/smixer/*.la"
-FILES_libasound = "${libdir}/libasound.so.*"
-FILES_alsa-server = "${bindir}/*"
-FILES_alsa-conf = "${datadir}/alsa/"
-FILES_alsa-conf-base = "\
-${datadir}/alsa/alsa.conf \
-${datadir}/alsa/cards/aliases.conf \
-${datadir}/alsa/pcm/default.conf \
-${datadir}/alsa/pcm/dmix.conf \
-${datadir}/alsa/pcm/dsnoop.conf"
-
-RDEPENDS_libasound = "alsa-conf-base alsa-conf"
-# upgrade path
-RPROVIDES_${PN}-dev = "alsa-dev"
-RREPLACES_${PN}-dev = "alsa-dev"
-RCONFLICTS_${PN}-dev = "alsa-dev"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.2.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.2.bb
new file mode 100644
index 0000000..e313da7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.2.bb
@@ -0,0 +1,44 @@
+SUMMARY = "ALSA sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
+SECTION = "libs/multimedia"
+LICENSE = "LGPLv2.1 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
+                    file://src/socket.c;beginline=1;endline=26;md5=11ff89a8a7a4a690a5c78effe8159545"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/${BP}.tar.bz2 \
+           file://Check-if-wordexp-function-is-supported.patch \
+           file://avoid-including-sys-poll.h-directly.patch \
+"
+SRC_URI[md5sum] = "1946e6438b8262a7b8fdadacd0e06ba7"
+SRC_URI[sha256sum] = "d38dacd9892b06b8bff04923c380b38fb2e379ee5538935ff37e45b395d861d6"
+
+inherit autotools pkgconfig
+
+require alsa-fpu.inc
+EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
+
+EXTRA_OECONF = "--disable-python"
+
+EXTRA_OECONF_append_libc-uclibc = " --with-versioned=no "
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc"
+FILES_${PN} += "${libdir}/${BPN}/smixer/*.so"
+FILES_${PN}-dev += "${libdir}/${BPN}/smixer/*.la"
+FILES_libasound = "${libdir}/libasound.so.*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base alsa-conf"
+# upgrade path
+RPROVIDES_${PN}-dev = "alsa-dev"
+RREPLACES_${PN}-dev = "alsa-dev"
+RCONFLICTS_${PN}-dev = "alsa-dev"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins/0001-pph-include-config.h-from-rate_speexrate.c.patch b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins/0001-pph-include-config.h-from-rate_speexrate.c.patch
deleted file mode 100644
index 8e5b6a2..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins/0001-pph-include-config.h-from-rate_speexrate.c.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 4350314c941489833a8baa930e16512e55f72a13 Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Wed, 27 Jan 2016 13:22:38 +0200
-Subject: [PATCH] pph: include config.h from rate_speexrate.c
-
-Fixes compilation against libspeexdsp 1.2rc3.
-
-rate_speexrate.c includes speex_resampler.h, which depends on config.h
-by referencing the HAVE_SPEEX_SPEEXDSP_TYPES_H macro. AFAIK it's not
-a good idea to include config.h from headers (I don't know/remember
-why, though), which is why I include config.h from rate_speexrate.c
-instead of speex_resampler.h.
-
-Upstream-Status: Accepted [expected in 1.1.1]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- pph/rate_speexrate.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/pph/rate_speexrate.c b/pph/rate_speexrate.c
-index 0a1325c..8fc4cef 100644
---- a/pph/rate_speexrate.c
-+++ b/pph/rate_speexrate.c
-@@ -28,6 +28,7 @@
-    POSSIBILITY OF SUCH DAMAGE.
- */
- 
-+#include "config.h"
- #include <stdio.h>
- #include <alsa/asoundlib.h>
- #include <alsa/pcm_rate.h>
--- 
-2.7.0.rc3
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.0.bb
deleted file mode 100644
index fec6575..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.0.bb
+++ /dev/null
@@ -1,105 +0,0 @@
-SUMMARY = "ALSA Plugins"
-HOMEPAGE = "http://alsa-project.org"
-SECTION = "multimedia"
-
-# The primary license of alsa-plugins is LGPLv2.1.
-#
-# m4/attributes.m4 is licensed under GPLv2+. m4/attributes.m4 is part of the
-# build system, and doesn't affect the licensing of the build result.
-#
-# The samplerate plugin source code is licensed under GPLv2+ to be consistent
-# with the libsamplerate license. However, if the licensee has a commercial
-# license for libsamplerate, the samplerate plugin may be used under the terms
-# of LGPLv2.1 like the rest of the plugins.
-LICENSE = "LGPLv2.1 & GPLv2+"
-LIC_FILES_CHKSUM = "\
-        file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
-        file://COPYING.GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
-        file://m4/attributes.m4;endline=33;md5=b25958da44c02231e3641f1bccef53eb \
-        file://rate/rate_samplerate.c;endline=35;md5=fd77bce85f4a338c0e8ab18430b69fae \
-"
-
-SRC_URI = "\
-        ftp://ftp.alsa-project.org/pub/plugins/${BP}.tar.bz2 \
-        file://0001-pph-include-config.h-from-rate_speexrate.c.patch \
-"
-SRC_URI[md5sum] = "b123e42ed881b9adbc99e4040f257c39"
-SRC_URI[sha256sum] = "3b83c329953bef99f5fe25ae04ec4a455fe6514939f3b45a5321966652b2c9ee"
-
-DEPENDS += "alsa-lib"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "\
-        samplerate \
-        speexdsp \
-        ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \
-"
-PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec,libav"
-PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
-PACKAGECONFIG[maemo-plugin] = "--enable-maemo-plugin,--disable-maemo-plugin"
-PACKAGECONFIG[maemo-resource-manager] = "--enable-maemo-resource-manager,--disable-maemo-resource-manager,dbus"
-PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
-PACKAGECONFIG[samplerate] = "--enable-samplerate,--disable-samplerate,libsamplerate0"
-PACKAGECONFIG[speexdsp] = "--with-speex=lib,--with-speex=no,speexdsp"
-
-PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'alsa-plugins-pulseaudio-conf', '', d)}"
-
-PACKAGES_DYNAMIC = "^libasound-module-.*"
-
-# The alsa-plugins package doesn't itself contain anything, it just depends on
-# all built plugins.
-ALLOW_EMPTY_${PN} = "1"
-
-do_install_append() {
-	rm ${D}${libdir}/alsa-lib/*.la
-
-	# We use the example as is, so just drop the .example suffix.
-	if [ "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'yes', 'no', d)}" = "yes" ]; then
-		mv ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf.example ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf
-	fi
-}
-
-python populate_packages_prepend() {
-    plugindir = bb.data.expand('${libdir}/alsa-lib/', d)
-    packages = " ".join(do_split_packages(d, plugindir, '^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends=''))
-    d.setVar("RDEPENDS_alsa-plugins", packages)
-}
-
-# The rate plugins create some symlinks. For example, the samplerate plugin
-# creates these links to the main plugin file:
-#
-#   libasound_module_rate_samplerate_best.so
-#   libasound_module_rate_samplerate_linear.so
-#   libasound_module_rate_samplerate_medium.so
-#   libasound_module_rate_samplerate_order.so
-#
-# The other rate plugins create similar links. We have to add the links to
-# FILES manually, because do_split_packages() skips the links (which is good,
-# because we wouldn't want do_split_packages() to create separate packages for
-# the symlinks).
-#
-# The symlinks cause QA errors, because usually it's a bug if a non
-# -dev/-dbg/-nativesdk package contains links to .so files, but in this case
-# the errors are false positives, so we disable the QA checks.
-FILES_${MLPREFIX}libasound-module-rate-lavcrate += "${libdir}/alsa-lib/*rate_lavcrate_*.so"
-FILES_${MLPREFIX}libasound-module-rate-samplerate += "${libdir}/alsa-lib/*rate_samplerate_*.so"
-FILES_${MLPREFIX}libasound-module-rate-speexrate += "${libdir}/alsa-lib/*rate_speexrate_*.so"
-INSANE_SKIP_${MLPREFIX}libasound-module-rate-lavcrate = "dev-so"
-INSANE_SKIP_${MLPREFIX}libasound-module-rate-samplerate = "dev-so"
-INSANE_SKIP_${MLPREFIX}libasound-module-rate-speexrate = "dev-so"
-
-# 50-pulseaudio.conf defines a device named "pulse" that applications can use
-# if they explicitly want to use the PulseAudio plugin.
-# 99-pulseaudio-default.conf configures the "default" device to use the
-# PulseAudio plugin.
-FILES_${PN}-pulseaudio-conf += "\
-        ${datadir}/alsa/alsa.conf.d/50-pulseaudio.conf \
-        ${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf \
-"
-
-RDEPENDS_${PN}-pulseaudio-conf += "\
-        libasound-module-conf-pulse \
-        libasound-module-ctl-pulse \
-        libasound-module-pcm-pulse \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.1.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.1.bb
new file mode 100644
index 0000000..c95ea54
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.1.bb
@@ -0,0 +1,103 @@
+SUMMARY = "ALSA Plugins"
+HOMEPAGE = "http://alsa-project.org"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
+SECTION = "multimedia"
+
+# The primary license of alsa-plugins is LGPLv2.1.
+#
+# m4/attributes.m4 is licensed under GPLv2+. m4/attributes.m4 is part of the
+# build system, and doesn't affect the licensing of the build result.
+#
+# The samplerate plugin source code is licensed under GPLv2+ to be consistent
+# with the libsamplerate license. However, if the licensee has a commercial
+# license for libsamplerate, the samplerate plugin may be used under the terms
+# of LGPLv2.1 like the rest of the plugins.
+LICENSE = "LGPLv2.1 & GPLv2+"
+LIC_FILES_CHKSUM = "\
+        file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
+        file://COPYING.GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
+        file://m4/attributes.m4;endline=33;md5=b25958da44c02231e3641f1bccef53eb \
+        file://rate/rate_samplerate.c;endline=35;md5=fd77bce85f4a338c0e8ab18430b69fae \
+"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/plugins/${BP}.tar.bz2"
+SRC_URI[md5sum] = "69f9f3e2de3c97fc71d496e91e271fe5"
+SRC_URI[sha256sum] = "8ea4d1e082c36528a896a2581e5eb62d4dc2683238e353050d0d624e65f901f1"
+
+DEPENDS += "alsa-lib"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "\
+        samplerate \
+        speexdsp \
+        ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \
+"
+PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec,libav"
+PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[maemo-plugin] = "--enable-maemo-plugin,--disable-maemo-plugin"
+PACKAGECONFIG[maemo-resource-manager] = "--enable-maemo-resource-manager,--disable-maemo-resource-manager,dbus"
+PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
+PACKAGECONFIG[samplerate] = "--enable-samplerate,--disable-samplerate,libsamplerate0"
+PACKAGECONFIG[speexdsp] = "--with-speex=lib,--with-speex=no,speexdsp"
+
+PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'alsa-plugins-pulseaudio-conf', '', d)}"
+
+PACKAGES_DYNAMIC = "^libasound-module-.*"
+
+# The alsa-plugins package doesn't itself contain anything, it just depends on
+# all built plugins.
+ALLOW_EMPTY_${PN} = "1"
+
+do_install_append() {
+	rm ${D}${libdir}/alsa-lib/*.la
+
+	# We use the example as is, so just drop the .example suffix.
+	if [ "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'yes', 'no', d)}" = "yes" ]; then
+		mv ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf.example ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf
+	fi
+}
+
+python populate_packages_prepend() {
+    plugindir = bb.data.expand('${libdir}/alsa-lib/', d)
+    packages = " ".join(do_split_packages(d, plugindir, '^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends=''))
+    d.setVar("RDEPENDS_alsa-plugins", packages)
+}
+
+# The rate plugins create some symlinks. For example, the samplerate plugin
+# creates these links to the main plugin file:
+#
+#   libasound_module_rate_samplerate_best.so
+#   libasound_module_rate_samplerate_linear.so
+#   libasound_module_rate_samplerate_medium.so
+#   libasound_module_rate_samplerate_order.so
+#
+# The other rate plugins create similar links. We have to add the links to
+# FILES manually, because do_split_packages() skips the links (which is good,
+# because we wouldn't want do_split_packages() to create separate packages for
+# the symlinks).
+#
+# The symlinks cause QA errors, because usually it's a bug if a non
+# -dev/-dbg/-nativesdk package contains links to .so files, but in this case
+# the errors are false positives, so we disable the QA checks.
+FILES_${MLPREFIX}libasound-module-rate-lavcrate += "${libdir}/alsa-lib/*rate_lavcrate_*.so"
+FILES_${MLPREFIX}libasound-module-rate-samplerate += "${libdir}/alsa-lib/*rate_samplerate_*.so"
+FILES_${MLPREFIX}libasound-module-rate-speexrate += "${libdir}/alsa-lib/*rate_speexrate_*.so"
+INSANE_SKIP_${MLPREFIX}libasound-module-rate-lavcrate = "dev-so"
+INSANE_SKIP_${MLPREFIX}libasound-module-rate-samplerate = "dev-so"
+INSANE_SKIP_${MLPREFIX}libasound-module-rate-speexrate = "dev-so"
+
+# 50-pulseaudio.conf defines a device named "pulse" that applications can use
+# if they explicitly want to use the PulseAudio plugin.
+# 99-pulseaudio-default.conf configures the "default" device to use the
+# PulseAudio plugin.
+FILES_${PN}-pulseaudio-conf += "\
+        ${datadir}/alsa/alsa.conf.d/50-pulseaudio.conf \
+        ${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf \
+"
+
+RDEPENDS_${PN}-pulseaudio-conf += "\
+        libasound-module-conf-pulse \
+        libasound-module-ctl-pulse \
+        libasound-module-pcm-pulse \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-tools/0001-Cus428Midi-Explicitly-cast-constant-to-char-type.patch b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-tools/0001-Cus428Midi-Explicitly-cast-constant-to-char-type.patch
new file mode 100644
index 0000000..bf95cac
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-tools/0001-Cus428Midi-Explicitly-cast-constant-to-char-type.patch
@@ -0,0 +1,75 @@
+From 1cc0aa4dbd3c7f1267809e0e1ca57d46f4803bfd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 17 Apr 2016 23:25:18 +0000
+Subject: [PATCH] Cus428Midi: Explicitly cast constant to char type
+
+This is flagged by gcc6
+Cus428Midi.cc:83:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ us428control/Cus428Midi.cc | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/us428control/Cus428Midi.cc b/us428control/Cus428Midi.cc
+index b9e6783..bef7bb1 100644
+--- a/us428control/Cus428Midi.cc
++++ b/us428control/Cus428Midi.cc
+@@ -32,22 +32,22 @@ char Cus428Midi::KnobParam[] = {
+ 	0x2A,
+ 	0x29,
+ 	0x28,
+-	-1,
++	static_cast<char>(-1),
+ 	0x10,
+ 	0x11,
+ 	0x18,
+ 	0x19,
+ 	0x1A,
+-	-1,
+-	-1,
+-	-1,
+-	-1,
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
+ 	0x2C,
+ 	0x2D,
+ 	0x2E,
+ 	0x2F,
+-	-1,
+-	-1,
++	static_cast<char>(-1),
++	static_cast<char>(-1),
+ 	0x20,
+ 	0x21,
+ 	0x22,
+@@ -64,14 +64,14 @@ char Cus428Midi::KnobParam[] = {
+ 	5,
+ 	6,
+ 	7,
+-	-1,
+-	-1,
+-	-1,
+-	-1,
+-	-1,
+-	-1,
+-	-1,
+-	-1,
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
++	static_cast<char>(-1),
+ 	0x30,
+ 	0x31,
+ 	0x32,
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-tools_1.1.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-tools_1.1.0.bb
index 9e633f1..8d4a146 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-tools_1.1.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-tools_1.1.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Advanced tools for certain ALSA sound card drivers"
 HOMEPAGE = "http://www.alsa-project.org"
-BUGTRACKER = "https://bugtrack.alsa-project.org/alsa-bug/login_page.php"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
 SECTION = "console/utils"
 LICENSE = "GPLv2 & LGPLv2+"
 DEPENDS = "alsa-lib ncurses glib-2.0"
@@ -10,11 +10,11 @@
 
 SRC_URI = "ftp://ftp.alsa-project.org/pub/tools/${BP}.tar.bz2 \
            file://autotools.patch \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', \
-                                'file://makefile_no_gtk.patch', d)} \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'file://makefile_no_gtk.patch', d)} \
            file://gitcompile_hdajacksensetest \
            file://0001-as10k1-Make-output_tram_line-static-inline.patch \
-          "
+           file://0001-Cus428Midi-Explicitly-cast-constant-to-char-type.patch \
+           "
 
 SRC_URI[md5sum] = "b476a5afaa3ea3230855553ad59d259d"
 SRC_URI[sha256sum] = "7d34558c590a50294b36576d257316a1ac5cd951eb8cd7d330e09f8cc757ab51"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.0.bb
deleted file mode 100644
index a98f9b9..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require alsa-utils_${PV}.bb
-
-SUMMARY = "Shell scripts that show help info and create ALSA configuration files"
-PROVIDES = "alsa-utils-alsaconf"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/alsa-utils:"
-
-PACKAGES = "${PN}"
-RDEPENDS_${PN} += "bash"
-
-FILES_${PN} = "${sbindir}/alsaconf \
-               ${sbindir}/alsa-info.sh \
-              "
-
-S = "${WORKDIR}/alsa-utils-${PV}"
-
-do_install() {
-	install -d ${D}${sbindir}
-	install -m 0755 ${B}/alsaconf/alsaconf ${D}${sbindir}/
-	install -m 0755 ${S}/alsa-info/alsa-info.sh ${D}${sbindir}/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.2.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.2.bb
new file mode 100644
index 0000000..fef79d9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.2.bb
@@ -0,0 +1,25 @@
+require alsa-utils_${PV}.bb
+
+SUMMARY = "Shell scripts that show help info and create ALSA configuration files"
+PROVIDES = "alsa-utils-alsaconf"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/alsa-utils:"
+
+PACKAGES = "${PN}"
+RDEPENDS_${PN} += "bash"
+
+FILES_${PN} = "${sbindir}/alsaconf \
+               ${sbindir}/alsa-info.sh \
+               ${sbindir}/alsabat-test.sh \
+              "
+
+S = "${WORKDIR}/alsa-utils-${PV}"
+
+do_install() {
+	install -d ${D}${sbindir}
+	install -m 0755 ${B}/alsaconf/alsaconf ${D}${sbindir}/
+	install -m 0755 ${S}/alsa-info/alsa-info.sh ${D}${sbindir}/
+	if ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'true', 'false', d)}; then
+		install -m 0755 ${S}/bat/alsabat-test.sh ${D}${sbindir}/
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils/0001-alsabat-rename-to-avoid-naming-conflict.patch b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils/0001-alsabat-rename-to-avoid-naming-conflict.patch
deleted file mode 100644
index b6d7d4f..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils/0001-alsabat-rename-to-avoid-naming-conflict.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 28c29dece6c434e7d3d01e805555ba7ddf6fba65 Mon Sep 17 00:00:00 2001
-From: "Lu, Han" <han.lu@intel.com>
-Date: Wed, 3 Feb 2016 14:20:33 +0800
-Subject: [PATCH] alsabat: rename to avoid naming conflict
-
-alsa-utils as well as bareos-bat (as well a some Bacula packages)
-all contain a program called /usr/bin/bat, which causes conflicts on
-various distributions ("basic audio tester" vs "bareos administration
-tool"("bacula administration tool")).
-Rename to avoid conflict.
-
-Signed-off-by: Lu, Han <han.lu@intel.com>
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
-
-Upstream-Status: Accepted [expected in version 1.1.1]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- bat/Makefile.am          | 10 +++++-----
- bat/{bat.1 => alsabat.1} | 43 ++++++++++++++++++++++---------------------
- bat/bat.c                |  2 +-
- 3 files changed, 28 insertions(+), 27 deletions(-)
- rename bat/{bat.1 => alsabat.1} (72%)
-
-diff --git a/bat/Makefile.am b/bat/Makefile.am
-index 842ae6b..985f00c 100644
---- a/bat/Makefile.am
-+++ b/bat/Makefile.am
-@@ -1,9 +1,9 @@
--bin_PROGRAMS = bat
--man_MANS = bat.1
-+bin_PROGRAMS = alsabat
-+man_MANS = alsabat.1
- 
--EXTRA_DIST = bat.1
-+EXTRA_DIST = alsabat.1
- 
--bat_SOURCES = \
-+alsabat_SOURCES = \
- 	bat.c \
- 	common.c \
- 	analyze.c \
-@@ -21,4 +21,4 @@ noinst_HEADERS = \
- AM_CPPFLAGS = \
- 	      -Wall -I$(top_srcdir)/include
- 
--bat_LDADD = @FFTW_LIB@
-+alsabat_LDADD = @FFTW_LIB@
-diff --git a/bat/bat.1 b/bat/alsabat.1
-similarity index 72%
-rename from bat/bat.1
-rename to bat/alsabat.1
-index e00fc27..8d0b9c0 100644
---- a/bat/bat.1
-+++ b/bat/alsabat.1
-@@ -1,23 +1,23 @@
--.TH BAT 1 "20th October 2015"
-+.TH ALSABAT 1 "20th October 2015"
- .SH NAME
--bat \- command\-line sound tester for ALSA sound card driver
-+alsabat \- command\-line sound tester for ALSA sound card driver
- 
- .SH SYNOPSIS
--\fBbat\fP [\fIflags\fP]
-+\fBalsabat\fP [\fIflags\fP]
- 
- .SH DESCRIPTION
--\fBBAT(Basic Audio Tester)\fP is a simple command\-line utility intended
--to help automate audio driver and sound server testing with little human
--interaction. BAT can be used to test audio quality, stress test features
--and test audio before and after PM state changes.
-+\fBALSABAT(ALSA Basic Audio Tester)\fP is a simple command\-line utility
-+intended to help automate audio driver and sound server testing with little
-+human interaction. ALSABAT can be used to test audio quality, stress test
-+features and test audio before and after PM state changes.
- 
--BAT's design is relatively simple. BAT plays an audio stream and captures
--the same stream in either a digital or analog loop back. It then compares
--the captured stream using a FFT to the original to determine if the test
--case passes or fails.
-+ALSABAT's design is relatively simple. ALSABAT plays an audio stream and
-+captures the same stream in either a digital or analog loop back. It then
-+compares the captured stream using a FFT to the original to determine if
-+the test case passes or fails.
- 
--BAT can either run wholly on the target machine being tested (standalone
--mode) or can run as a client/server mode where by bat client runs on the
-+ALSABAT can either run wholly on the target machine being tested (standalone
-+mode) or can run as a client/server mode where by alsabat client runs on the
- target and runs as a server on a separate tester machine. The client/server
- mode still requires some manual interaction for synchronization, but this
- is actively being developed for future releases.
-@@ -93,8 +93,8 @@ Frequencies with amplitude larger than threshold will be recognized as a
- peak, and the frequency with largest peak value will be recognized as a
- detected frequency.
- .br
--BAT then compares the detected frequency to target frequency, to decide
--if the detecting passes or fails.
-+ALSABAT then compares the detected frequency to target frequency, to
-+decide if the detecting passes or fails.
- .br
- The default value is 3.0.
- .TP
-@@ -117,18 +117,19 @@ Target WAV file to save capture test content.
- .TP
- \fI\-\-local\fP
- Internal loopback mode.
--Playback, capture and analysis internal to BAT only. This is intended for
--developers to test new BAT features as no audio is routed outside of BAT.
-+Playback, capture and analysis internal to ALSABAT only. This is intended
-+for developers to test new ALSABAT features as no audio is routed outside
-+of ALSABAT.
- 
- .SH EXAMPLES
- 
- .TP
--\fBbat \-P plughw:0,0 \-C plughw:0,0 \-c 2 \-f S32_LE \-F 250\fR
-+\fBalsabat \-P plughw:0,0 \-C plughw:0,0 \-c 2 \-f S32_LE \-F 250\fR
- Generate and play a sine wave of 250 Hertz with 2 channel and S32_LE format,
- and then capture and analyze.
- 
- .TP
--\fBbat \-P plughw:0,0 \-C plughw:0,0 \-\-file 500Hz.wav\fR
-+\fBalsabat \-P plughw:0,0 \-C plughw:0,0 \-\-file 500Hz.wav\fR
- Play the RIFF WAV file "500Hz.wav" which contains 500 Hertz waveform LPCM
- data, and then capture and analyze.
- 
-@@ -152,7 +153,7 @@ Currently only support RIFF WAV format with PCM data. Please report any bugs to
- the alsa-devel mailing list.
- 
- .SH AUTHOR
--\fBbat\fP is by Liam Girdwood <liam.r.girdwood@linux.intel.com>, Bernard Gautier
--<bernard.gautier@intel.com> and Han Lu <han.lu@intel.com>.
-+\fBalsabat\fP is by Liam Girdwood <liam.r.girdwood@linux.intel.com>, Bernard
-+Gautier <bernard.gautier@intel.com> and Han Lu <han.lu@intel.com>.
- This document is by Liam Girdwood <liam.r.girdwood@linux.intel.com> and Han Lu
- <han.lu@intel.com>.
-diff --git a/bat/bat.c b/bat/bat.c
-index 086b9fa..ddb60b7 100644
---- a/bat/bat.c
-+++ b/bat/bat.c
-@@ -272,7 +272,7 @@ static void test_capture(struct bat *bat)
- static void usage(struct bat *bat)
- {
- 	fprintf(bat->log,
--_("Usage: bat [-options]...\n"
-+_("Usage: alsabat [-options]...\n"
- "\n"
- "  -h, --help             this help\n"
- "  -D                     pcm device for both playback and capture\n"
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.0.bb
deleted file mode 100644
index af40488..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.0.bb
+++ /dev/null
@@ -1,102 +0,0 @@
-SUMMARY = "ALSA sound utilities"
-HOMEPAGE = "http://www.alsa-project.org"
-BUGTRACKER = "https://bugtrack.alsa-project.org/alsa-bug/login_page.php"
-SECTION = "console/utils"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
-                    file://alsactl/utils.c;beginline=1;endline=20;md5=fe9526b055e246b5558809a5ae25c0b9"
-DEPENDS = "alsa-lib ncurses libsamplerate0"
-
-PACKAGECONFIG ??= "udev"
-PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftw"
-PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,,udev"
-PACKAGECONFIG[xmlto] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-
-SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
-           file://0001-alsactl-don-t-let-systemd-unit-restore-the-volume-wh.patch \
-           file://0001-alsabat-rename-to-avoid-naming-conflict.patch \
-          "
-
-SRC_URI[md5sum] = "b9d6102fbbd0b68040bb77023ed30c0c"
-SRC_URI[sha256sum] = "3b1c3135b76e14532d3dd23fb15759ddd7daf9ffbc183f7a9a0a3a86374748f1"
-
-# lazy hack. needs proper fixing in gettext.m4, see
-# http://bugs.openembedded.org/show_bug.cgi?id=2348
-# please close bug and remove this comment when properly fixed
-#
-EXTRA_OECONF_append_libc-uclibc = " --disable-nls"
-
-inherit autotools gettext pkgconfig
-
-# This are all packages that we need to make. Also, the now empty alsa-utils
-# ipk depends on them.
-
-ALSA_UTILS_PKGS = "\
-             ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \
-             alsa-utils-alsamixer \
-             alsa-utils-alsatplg \
-             alsa-utils-midi \
-             alsa-utils-aplay \
-             alsa-utils-amixer \
-             alsa-utils-aconnect \
-             alsa-utils-iecset \
-             alsa-utils-speakertest \
-             alsa-utils-aseqnet \
-             alsa-utils-aseqdump \
-             alsa-utils-alsactl \
-             alsa-utils-alsaloop \
-             alsa-utils-alsaucm \
-            "
-
-PACKAGES += "${ALSA_UTILS_PKGS}"
-RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}"
-
-FILES_${PN} = ""
-FILES_alsa-utils-alsabat     = "${bindir}/alsabat"
-FILES_alsa-utils-alsatplg    = "${bindir}/alsatplg"
-FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
-FILES_alsa-utils-amixer      = "${bindir}/amixer"
-FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
-FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/"
-FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
-FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
-FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
-FILES_alsa-utils-iecset      = "${bindir}/iecset"
-FILES_alsa-utils-alsactl     = "${sbindir}/alsactl */udev/rules.d */*/udev/rules.d ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
-FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
-FILES_alsa-utils-alsaloop    = "${bindir}/alsaloop"
-FILES_alsa-utils-alsaucm     = "${bindir}/alsaucm"
-
-SUMMARY_alsa-utils-alsabat      = "Command-line sound tester for ALSA sound card driver"
-SUMMARY_alsa-utils-alsatplg     = "Converts topology text files into binary format for kernel"
-SUMMARY_alsa-utils-aplay        = "Play (and record) sound files using ALSA"
-SUMMARY_alsa-utils-amixer       = "Command-line control for ALSA mixer and settings"
-SUMMARY_alsa-utils-alsamixer    = "ncurses-based control for ALSA mixer and settings"
-SUMMARY_alsa-utils-speakertest  = "ALSA surround speaker test utility"
-SUMMARY_alsa-utils-midi         = "Miscellaneous MIDI utilities for ALSA"
-SUMMARY_alsa-utils-aconnect     = "ALSA sequencer connection manager"
-SUMMARY_alsa-utils-aseqnet      = "Network client/server for ALSA sequencer"
-SUMMARY_alsa-utils-iecset       = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits"
-SUMMARY_alsa-utils-alsactl      = "Saves/restores ALSA-settings in /etc/asound.state"
-SUMMARY_alsa-utils-aseqdump     = "Shows the events received at an ALSA sequencer port"
-SUMMARY_alsa-utils-alsaloop     = "ALSA PCM loopback utility"
-SUMMARY_alsa-utils-alsaucm      = "ALSA Use Case Manager"
-
-RRECOMMENDS_alsa-utils-alsactl = "alsa-states"
-
-ALLOW_EMPTY_alsa-utils = "1"
-
-do_install() {
-	autotools_do_install
-
-	# We don't ship this here because it requires a dependency on bash.
-	# See alsa-utils-scripts_${PV}.bb
-	rm ${D}${sbindir}/alsaconf
-	rm ${D}${sbindir}/alsa-info.sh
-
-	if ${@bb.utils.contains('PACKAGECONFIG', 'udev', 'false', 'true', d)}; then
-	   # This is where alsa-utils will install its rules if we don't tell it anything else.
-	   rm -rf ${D}/lib/udev
-	   rmdir --ignore-fail-on-non-empty ${D}/lib
-	fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.2.bb b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.2.bb
new file mode 100644
index 0000000..a22d999
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.2.bb
@@ -0,0 +1,109 @@
+SUMMARY = "ALSA sound utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
+SECTION = "console/utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+                    file://alsactl/utils.c;beginline=1;endline=20;md5=fe9526b055e246b5558809a5ae25c0b9"
+DEPENDS = "alsa-lib ncurses libsamplerate0"
+
+PACKAGECONFIG ??= "udev"
+
+# alsabat can be built also without fftw support (with reduced functionality).
+# It would be better to always enable alsabat, but provide an option for
+# enabling/disabling fftw. The configure script doesn't support that, however
+# (at least in any obvious way), so for now we only support alsabat with fftw
+# or no alsabat at all.
+PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf"
+
+PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,,udev"
+PACKAGECONFIG[xmlto] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
+           file://0001-alsactl-don-t-let-systemd-unit-restore-the-volume-wh.patch \
+          "
+
+SRC_URI[md5sum] = "38ac7c781f80c41c02b4664d8cbafa87"
+SRC_URI[sha256sum] = "7af603c0877d1251599d65b4fbc372e63a54371b888f5c26c6a86ac1d0519071"
+
+# lazy hack. needs proper fixing in gettext.m4, see
+# http://bugs.openembedded.org/show_bug.cgi?id=2348
+# please close bug and remove this comment when properly fixed
+#
+EXTRA_OECONF_append_libc-uclibc = " --disable-nls"
+
+inherit autotools gettext pkgconfig
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depends on them.
+
+ALSA_UTILS_PKGS = "\
+             ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \
+             alsa-utils-alsamixer \
+             alsa-utils-alsatplg \
+             alsa-utils-midi \
+             alsa-utils-aplay \
+             alsa-utils-amixer \
+             alsa-utils-aconnect \
+             alsa-utils-iecset \
+             alsa-utils-speakertest \
+             alsa-utils-aseqnet \
+             alsa-utils-aseqdump \
+             alsa-utils-alsactl \
+             alsa-utils-alsaloop \
+             alsa-utils-alsaucm \
+            "
+
+PACKAGES += "${ALSA_UTILS_PKGS}"
+RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}"
+
+FILES_${PN} = ""
+FILES_alsa-utils-alsabat     = "${bindir}/alsabat"
+FILES_alsa-utils-alsatplg    = "${bindir}/alsatplg"
+FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer      = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/"
+FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset      = "${bindir}/iecset"
+FILES_alsa-utils-alsactl     = "${sbindir}/alsactl */udev/rules.d */*/udev/rules.d ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
+FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
+FILES_alsa-utils-alsaloop    = "${bindir}/alsaloop"
+FILES_alsa-utils-alsaucm     = "${bindir}/alsaucm"
+
+SUMMARY_alsa-utils-alsabat      = "Command-line sound tester for ALSA sound card driver"
+SUMMARY_alsa-utils-alsatplg     = "Converts topology text files into binary format for kernel"
+SUMMARY_alsa-utils-aplay        = "Play (and record) sound files using ALSA"
+SUMMARY_alsa-utils-amixer       = "Command-line control for ALSA mixer and settings"
+SUMMARY_alsa-utils-alsamixer    = "ncurses-based control for ALSA mixer and settings"
+SUMMARY_alsa-utils-speakertest  = "ALSA surround speaker test utility"
+SUMMARY_alsa-utils-midi         = "Miscellaneous MIDI utilities for ALSA"
+SUMMARY_alsa-utils-aconnect     = "ALSA sequencer connection manager"
+SUMMARY_alsa-utils-aseqnet      = "Network client/server for ALSA sequencer"
+SUMMARY_alsa-utils-iecset       = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits"
+SUMMARY_alsa-utils-alsactl      = "Saves/restores ALSA-settings in /etc/asound.state"
+SUMMARY_alsa-utils-aseqdump     = "Shows the events received at an ALSA sequencer port"
+SUMMARY_alsa-utils-alsaloop     = "ALSA PCM loopback utility"
+SUMMARY_alsa-utils-alsaucm      = "ALSA Use Case Manager"
+
+RRECOMMENDS_alsa-utils-alsactl = "alsa-states"
+
+ALLOW_EMPTY_alsa-utils = "1"
+
+do_install() {
+	autotools_do_install
+
+	# We don't ship this here because it requires a dependency on bash.
+	# See alsa-utils-scripts_${PV}.bb
+	rm ${D}${sbindir}/alsaconf
+	rm ${D}${sbindir}/alsa-info.sh
+	rm -f ${D}${sbindir}/alsabat-test.sh
+
+	if ${@bb.utils.contains('PACKAGECONFIG', 'udev', 'false', 'true', d)}; then
+		# This is where alsa-utils will install its rules if we don't tell it anything else.
+		rm -rf ${D}/lib/udev
+		rmdir --ignore-fail-on-non-empty ${D}/lib
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch b/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch
new file mode 100644
index 0000000..69429af
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch
@@ -0,0 +1,32 @@
+It will add -mips64r6 and -mips64r2 to cmdline which will
+cause conflicts
+
+in OE we user mips32r2 and mips64r2 for mips arch versions
+so there is no benefit of detecting it automatically by
+poking at tools especially in cross env
+
+Fixes errors like
+
+linking -mnan=2008 module with previous -mnan=legacy modules
+failed to merge target specific data of file
+
+-Khem
+Upstream-Status: Inappropriate [OE-Specific]
+
+Index: ffmpeg-3.1.1/configure
+===================================================================
+--- ffmpeg-3.1.1.orig/configure
++++ ffmpeg-3.1.1/configure
+@@ -5220,12 +5220,9 @@ elif enabled mips; then
+ 
+     # Enable minimum ISA based on selected options
+     if enabled mips64; then
+-        enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6'
+         enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2'
+         disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64'
+     else
+-        enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6'
+-        enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5'
+         enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2'
+         disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32'
+     fi
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg_3.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg_3.0.bb
deleted file mode 100644
index 1dfbb9b..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg_3.0.bb
+++ /dev/null
@@ -1,139 +0,0 @@
-SUMMARY = "A complete, cross-platform solution to record, convert and stream audio and video."
-DESCRIPTION = "FFmpeg is the leading multimedia framework, able to decode, encode, transcode, \
-               mux, demux, stream, filter and play pretty much anything that humans and machines \
-               have created. It supports the most obscure ancient formats up to the cutting edge."
-HOMEPAGE = "https://www.ffmpeg.org/"
-SECTION = "libs"
-
-LICENSE = "GPLv2+"
-LICENSE_FLAGS = "commercial"
-
-LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
-                    file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz"
-
-SRC_URI[md5sum] = "ef9b6634bb7c920efc940b4d55adf7b2"
-SRC_URI[sha256sum] = "12f32cee41c74435f608c30793fd616bdf53467bb513278e273e135a4c58e470"
-
-# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
-ARM_INSTRUCTION_SET = "arm"
-
-# Should be API compatible with libav (which was a fork of ffmpeg)
-# libpostproc was previously packaged from a separate recipe
-PROVIDES = "libav libpostproc"
-
-DEPENDS = "alsa-lib zlib libogg yasm-native"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "avdevice avfilter avcodec avformat swresample swscale postproc \
-                   bzlib gpl lzma theora x264 \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xv', '', d)}"
-
-# libraries to build in addition to avutil
-PACKAGECONFIG[avdevice] = "--enable-avdevice,--disable-avdevice"
-PACKAGECONFIG[avfilter] = "--enable-avfilter,--disable-avfilter"
-PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec"
-PACKAGECONFIG[avformat] = "--enable-avformat,--disable-avformat"
-PACKAGECONFIG[swresample] = "--enable-swresample,--disable-swresample"
-PACKAGECONFIG[swscale] = "--enable-swscale,--disable-swscale"
-PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc"
-PACKAGECONFIG[avresample] = "--enable-avresample,--disable-avresample"
-
-# features to support
-PACKAGECONFIG[bzlib] = "--enable-bzlib,--disable-bzlib,bzip2"
-PACKAGECONFIG[faac] = "--enable-libfaac,--disable-libfaac,faac"
-PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl"
-PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm"
-PACKAGECONFIG[jack] = "--enable-indev=jack,--disable-indev=jack,jack"
-PACKAGECONFIG[libvorbis] = "--enable-libvorbis,--disable-libvorbis,libvorbis"
-PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz"
-PACKAGECONFIG[mp3lame] = "--enable-libmp3lame,--disable-libmp3lame,lame"
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
-PACKAGECONFIG[schroedinger] = "--enable-libschroedinger,--disable-libschroedinger,schroedinger"
-PACKAGECONFIG[speex] = "--enable-libspeex,--disable-libspeex,speex"
-PACKAGECONFIG[theora] = "--enable-libtheora,--disable-libtheora,libtheora"
-PACKAGECONFIG[vaapi] = "--enable-vaapi,--disable-vaapi,libva"
-PACKAGECONFIG[vpx] = "--enable-libvpx,--disable-libvpx,libvpx"
-PACKAGECONFIG[x11] = "--enable-x11grab,--disable-x11grab,virtual/libx11 libxfixes libxext xproto virtual/libsdl"
-PACKAGECONFIG[x264] = "--enable-libx264,--disable-libx264,x264"
-PACKAGECONFIG[xv] = "--enable-outdev=xv,--disable-outdev=xv,libxv"
-
-# Check codecs that require --enable-nonfree
-USE_NONFREE = "${@bb.utils.contains_any('PACKAGECONFIG', [ 'faac', 'openssl' ], 'yes', '', d)}"
-
-EXTRA_OECONF = " \
-    --disable-stripping \
-    --enable-pic \
-    --enable-shared \
-    --enable-pthreads \
-    ${@bb.utils.contains('USE_NONFREE', 'yes', '--enable-nonfree', '', d)} \
-    \
-    --cross-prefix=${TARGET_PREFIX} \
-    \
-    --ld="${CCLD}" \
-    --arch=${TARGET_ARCH} \
-    --target-os="linux" \
-    --enable-cross-compile \
-    --extra-cflags="${TARGET_CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" \
-    --extra-ldflags="${TARGET_LDFLAGS}" \
-    --sysroot="${STAGING_DIR_TARGET}" \
-    --enable-hardcoded-tables \
-    ${EXTRA_FFCONF} \
-    --libdir=${libdir} \
-    --shlibdir=${libdir} \
-    --datadir=${datadir}/ffmpeg \
-"
-
-do_configure() {
-    ${S}/configure ${EXTRA_OECONF}
-}
-
-PACKAGES_DYNAMIC += "^lib(av(codec|device|filter|format|util|resample)|swscale|swresample|postproc).*"
-
-# ffmpeg disables PIC on some platforms (e.g. x86-32)
-INSANE_SKIP_${MLPREFIX}libavcodec = "textrel"
-INSANE_SKIP_${MLPREFIX}libavdevice = "textrel"
-INSANE_SKIP_${MLPREFIX}libavfilter = "textrel"
-INSANE_SKIP_${MLPREFIX}libavformat = "textrel"
-INSANE_SKIP_${MLPREFIX}libavutil = "textrel"
-INSANE_SKIP_${MLPREFIX}libavresample = "textrel"
-INSANE_SKIP_${MLPREFIX}libswscale = "textrel"
-INSANE_SKIP_${MLPREFIX}libswresample = "textrel"
-INSANE_SKIP_${MLPREFIX}libpostproc = "textrel"
-
-python populate_packages_prepend() {
-    av_libdir = d.expand('${libdir}')
-    av_pkgconfig = d.expand('${libdir}/pkgconfig')
-
-    # Runtime package
-    do_split_packages(d, av_libdir, '^lib(.*)\.so\..*',
-                      output_pattern='lib%s',
-                      description='libav %s library',
-                      extra_depends='',
-                      prepend=True,
-                      allow_links=True)
-
-    # Development packages (-dev, -staticdev)
-    do_split_packages(d, av_libdir, '^lib(.*)\.so$',
-                      output_pattern='lib%s-dev',
-                      description='libav %s development package',
-                      extra_depends='${PN}-dev',
-                      prepend=True,
-                      allow_links=True)
-    do_split_packages(d, av_pkgconfig, '^lib(.*)\.pc$',
-                      output_pattern='lib%s-dev',
-                      description='libav %s development package',
-                      extra_depends='${PN}-dev',
-                      prepend=True)
-    do_split_packages(d, av_libdir, '^lib(.*)\.a$',
-                      output_pattern='lib%s-staticdev',
-                      description='libav %s development package - static library',
-                      extra_depends='${PN}-dev',
-                      prepend=True,
-                      allow_links=True)
-
-}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg_3.1.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg_3.1.3.bb
new file mode 100644
index 0000000..050f1ee
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/ffmpeg/ffmpeg_3.1.3.bb
@@ -0,0 +1,142 @@
+SUMMARY = "A complete, cross-platform solution to record, convert and stream audio and video."
+DESCRIPTION = "FFmpeg is the leading multimedia framework, able to decode, encode, transcode, \
+               mux, demux, stream, filter and play pretty much anything that humans and machines \
+               have created. It supports the most obscure ancient formats up to the cutting edge."
+HOMEPAGE = "https://www.ffmpeg.org/"
+SECTION = "libs"
+
+LICENSE = "GPLv2+"
+LICENSE_FLAGS = "commercial"
+
+LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
+                    file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \
+           file://mips64_cpu_detection.patch \
+          "
+SRC_URI[md5sum] = "72769316a4b2b8809c7f6d5a8b6766f4"
+SRC_URI[sha256sum] = "f8575c071e2a64437aeb70c8c030b385cddbe0b5cde20c9b18a6def840128822"
+
+# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
+ARM_INSTRUCTION_SET = "arm"
+
+# Should be API compatible with libav (which was a fork of ffmpeg)
+# libpostproc was previously packaged from a separate recipe
+PROVIDES = "libav libpostproc"
+
+DEPENDS = "alsa-lib zlib libogg yasm-native"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "avdevice avfilter avcodec avformat swresample swscale postproc \
+                   bzlib gpl lzma theora x264 \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xv', '', d)}"
+
+# libraries to build in addition to avutil
+PACKAGECONFIG[avdevice] = "--enable-avdevice,--disable-avdevice"
+PACKAGECONFIG[avfilter] = "--enable-avfilter,--disable-avfilter"
+PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec"
+PACKAGECONFIG[avformat] = "--enable-avformat,--disable-avformat"
+PACKAGECONFIG[swresample] = "--enable-swresample,--disable-swresample"
+PACKAGECONFIG[swscale] = "--enable-swscale,--disable-swscale"
+PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc"
+PACKAGECONFIG[avresample] = "--enable-avresample,--disable-avresample"
+
+# features to support
+PACKAGECONFIG[bzlib] = "--enable-bzlib,--disable-bzlib,bzip2"
+PACKAGECONFIG[faac] = "--enable-libfaac,--disable-libfaac,faac"
+PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl"
+PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm"
+PACKAGECONFIG[jack] = "--enable-indev=jack,--disable-indev=jack,jack"
+PACKAGECONFIG[libvorbis] = "--enable-libvorbis,--disable-libvorbis,libvorbis"
+PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz"
+PACKAGECONFIG[mp3lame] = "--enable-libmp3lame,--disable-libmp3lame,lame"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
+PACKAGECONFIG[schroedinger] = "--enable-libschroedinger,--disable-libschroedinger,schroedinger"
+PACKAGECONFIG[speex] = "--enable-libspeex,--disable-libspeex,speex"
+PACKAGECONFIG[theora] = "--enable-libtheora,--disable-libtheora,libtheora"
+PACKAGECONFIG[vaapi] = "--enable-vaapi,--disable-vaapi,libva"
+PACKAGECONFIG[vpx] = "--enable-libvpx,--disable-libvpx,libvpx"
+PACKAGECONFIG[x11] = "--enable-x11grab,--disable-x11grab,virtual/libx11 libxfixes libxext xproto virtual/libsdl"
+PACKAGECONFIG[x264] = "--enable-libx264,--disable-libx264,x264"
+PACKAGECONFIG[xv] = "--enable-outdev=xv,--disable-outdev=xv,libxv"
+
+# Check codecs that require --enable-nonfree
+USE_NONFREE = "${@bb.utils.contains_any('PACKAGECONFIG', [ 'faac', 'openssl' ], 'yes', '', d)}"
+
+EXTRA_OECONF = " \
+    --disable-stripping \
+    --enable-pic \
+    --enable-shared \
+    --enable-pthreads \
+    ${@bb.utils.contains('USE_NONFREE', 'yes', '--enable-nonfree', '', d)} \
+    \
+    --cross-prefix=${TARGET_PREFIX} \
+    \
+    --ld="${CCLD}" \
+    --cc="${CC}" \
+    --cxx="${CXX}" \
+    --arch=${TARGET_ARCH} \
+    --target-os="linux" \
+    --enable-cross-compile \
+    --extra-cflags="${TARGET_CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" \
+    --extra-ldflags="${TARGET_LDFLAGS}" \
+    --sysroot="${STAGING_DIR_TARGET}" \
+    --enable-hardcoded-tables \
+    ${EXTRA_FFCONF} \
+    --libdir=${libdir} \
+    --shlibdir=${libdir} \
+    --datadir=${datadir}/ffmpeg \
+"
+
+do_configure() {
+    ${S}/configure ${EXTRA_OECONF}
+}
+
+PACKAGES_DYNAMIC += "^lib(av(codec|device|filter|format|util|resample)|swscale|swresample|postproc).*"
+
+# ffmpeg disables PIC on some platforms (e.g. x86-32)
+INSANE_SKIP_${MLPREFIX}libavcodec = "textrel"
+INSANE_SKIP_${MLPREFIX}libavdevice = "textrel"
+INSANE_SKIP_${MLPREFIX}libavfilter = "textrel"
+INSANE_SKIP_${MLPREFIX}libavformat = "textrel"
+INSANE_SKIP_${MLPREFIX}libavutil = "textrel"
+INSANE_SKIP_${MLPREFIX}libavresample = "textrel"
+INSANE_SKIP_${MLPREFIX}libswscale = "textrel"
+INSANE_SKIP_${MLPREFIX}libswresample = "textrel"
+INSANE_SKIP_${MLPREFIX}libpostproc = "textrel"
+
+python populate_packages_prepend() {
+    av_libdir = d.expand('${libdir}')
+    av_pkgconfig = d.expand('${libdir}/pkgconfig')
+
+    # Runtime package
+    do_split_packages(d, av_libdir, '^lib(.*)\.so\..*',
+                      output_pattern='lib%s',
+                      description='libav %s library',
+                      extra_depends='',
+                      prepend=True,
+                      allow_links=True)
+
+    # Development packages (-dev, -staticdev)
+    do_split_packages(d, av_libdir, '^lib(.*)\.so$',
+                      output_pattern='lib%s-dev',
+                      description='libav %s development package',
+                      extra_depends='${PN}-dev',
+                      prepend=True,
+                      allow_links=True)
+    do_split_packages(d, av_pkgconfig, '^lib(.*)\.pc$',
+                      output_pattern='lib%s-dev',
+                      description='libav %s development package',
+                      extra_depends='${PN}-dev',
+                      prepend=True)
+    do_split_packages(d, av_libdir, '^lib(.*)\.a$',
+                      output_pattern='lib%s-staticdev',
+                      description='libav %s development package - static library',
+                      extra_depends='${PN}-dev',
+                      prepend=True,
+                      allow_links=True)
+
+}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch
new file mode 100644
index 0000000..e3f1c4f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch
@@ -0,0 +1,32 @@
+From 220c2659a45dd354270a465c45197970dae5f548 Mon Sep 17 00:00:00 2001
+From: "Maxin B. John" <maxin.john@intel.com>
+Date: Fri, 5 Aug 2016 17:52:18 +0300
+Subject: [PATCH] gtk-play: provide similar behaviour for quit and close
+
+In x86 targets, gtk-play just pause rather than quitting the application
+when we click the close button (delete-event). Change the callback function
+to get similar behaviour when we click on "Quit" menu option.
+
+Upstream-Status: Accepted
+
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+ gtk/gtk-play.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c
+index a520bef..16afc6b 100644
+--- a/gtk/gtk-play.c
++++ b/gtk/gtk-play.c
+@@ -177,7 +177,7 @@ load_from_builder (const gchar * filename, gboolean register_sig_handler,
+ static void
+ delete_event_cb (GtkWidget * widget, GdkEvent * event, GtkPlay * play)
+ {
+-  gst_player_stop (play->player);
++  gtk_widget_destroy (GTK_WIDGET (play));
+ }
+ 
+ static void
+-- 
+2.4.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop
index 9fd207b..7ddd456 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop
@@ -1,7 +1,7 @@
 [Desktop Entry]
 Name=Media Player
 Comment=Basic media player
-Icon=audio-player
+Icon=multimedia-player
 TryExec=gtk-play
 Exec=gtk-play
 StartupNotify=true
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch
deleted file mode 100644
index 2cd18bb..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-As the rest of Sato is GTK+ 2, patch gtk-play to use GTK+ 2.  When the rest of
-Sato has been ported to GTK+ 3 this patch can be dropped.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-
-diff --git a/configure.ac b/configure.ac
-index b8af13b..90ab74c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -60,7 +60,7 @@ AC_SUBST(GLIB_PREFIX)
- GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-1.0`"
- AC_SUBST(GST_PREFIX)
- 
--PKG_CHECK_MODULES(GTK, [gtk+-3.0], [have_gtk="yes"], [have_gtk="no"])
-+PKG_CHECK_MODULES(GTK, [gtk+-2.0], [have_gtk="yes"], [have_gtk="no"])
- AM_CONDITIONAL(HAVE_GTK, test "x$have_gtk" != "xno")
- 
- GOBJECT_INTROSPECTION_CHECK([1.31.1])
-diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c
-index f015077..954d6fb 100644
---- a/gtk/gtk-play.c
-+++ b/gtk/gtk-play.c
-@@ -34,6 +34,46 @@ typedef struct
-   gulong seekbar_value_changed_signal_id;
- } GtkPlay;
- 
-+/* Compat stubs */
-+GtkWidget *
-+gtk_box_new (GtkOrientation orientation,
-+             gint spacing)
-+{
-+  switch (orientation) {
-+  case GTK_ORIENTATION_HORIZONTAL:
-+    return gtk_hbox_new (FALSE, spacing);
-+  case GTK_ORIENTATION_VERTICAL:
-+    return gtk_vbox_new (FALSE, spacing);
-+  }
-+}
-+
-+GtkWidget*
-+gtk_button_new_from_icon_name (const gchar *icon_name,
-+                               GtkIconSize  size)
-+{
-+  GtkWidget *button;
-+  GtkWidget *image;
-+
-+  image = gtk_image_new_from_icon_name (icon_name, size);
-+  button =  g_object_new (GTK_TYPE_BUTTON,
-+                         "image", image,
-+                         NULL);
-+  return button;
-+}
-+
-+GtkWidget *
-+gtk_scale_new_with_range (GtkOrientation orientation,
-+                          gdouble min,
-+                          gdouble max,
-+                          gdouble step)
-+{
-+  switch (orientation) {
-+  case GTK_ORIENTATION_HORIZONTAL:
-+    return gtk_hscale_new_with_range (min, max, step);
-+  case GTK_ORIENTATION_VERTICAL:
-+    return gtk_vscale_new_with_range (min, max, step);
-+  }
-+}
- 
- static void
- set_title (GtkPlay * play, const gchar * title)
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb
index 8129169..2a4c9dc 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb
@@ -1,39 +1,37 @@
 SUMMARY = "GStreamer playback helper library and examples"
 LICENSE = "LGPL-2.0+"
-LIC_FILES_CHKSUM = "file://lib/gst/player/gstplayer.c;beginline=1;endline=19;md5=03aeca9d8295f811817909075a15ff65"
+LIC_FILES_CHKSUM = "file://gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9"
 
-DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gtk+"
+DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3"
 
 SRC_URI = "git://github.com/sdroege/gst-player.git \
-           file://filechooser.patch \
-           file://gtk2.patch \
-           file://Fix-pause-play.patch \
-           file://Add-error-signal-emission-for-missing-plugins.patch \
+           file://filechooser.patch;apply=0 \
+           file://Fix-pause-play.patch;apply=0 \
+           file://Add-error-signal-emission-for-missing-plugins.patch;apply=0 \
+           file://0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch \
            file://gst-player.desktop"
 
-SRCREV = "5386c5b984d40ef5434673ed62204e69aaf52645"
+SRCREV = "ea90e63c1064503f9ba5d59aa4ca604f13ca5def"
+PV = "0.0.1+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-inherit autotools gtk-doc lib_package pkgconfig distro_features_check gobject-introspection
+inherit autotools pkgconfig distro_features_check
 
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
 do_configure_prepend() {
 	touch ${S}/ChangeLog
 }
 
-EXTRA_OECONF += "ac_cv_path_VALGRIND=no ac_cv_path_GDB=no"
-
 do_install_append() {
 	install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop
 }
 
-FILES_${PN}-bin += "${datadir}/applications/*.desktop"
-
-RDEPENDS_${PN}-bin = "gstreamer1.0-plugins-base-playback"
-RRECOMMENDS_${PN}-bin = "gstreamer1.0-plugins-base-meta \
-                         gstreamer1.0-plugins-good-meta \
-                         gstreamer1.0-plugins-bad-meta \
-                         ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \
-                         ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}"
+RDEPENDS_${PN} = "gstreamer1.0-plugins-base-playback"
+RRECOMMENDS_${PN} = "gstreamer1.0-plugins-base-meta \
+                     gstreamer1.0-plugins-good-meta \
+                     gstreamer1.0-plugins-bad-meta \
+                      ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \
+                     ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}"
+RPROVIDES_${PN} += "${PN}-bin"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc
index 363101e..ea01163 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc
@@ -7,7 +7,7 @@
 
 DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base zlib bzip2 xz"
 
-inherit autotools pkgconfig upstream-version-is-even
+inherit autotools pkgconfig upstream-version-is-even gtk-doc
 
 # CAUTION: Using the system libav is not recommended. Since the libav API is changing all the time,
 # compilation errors (and other, more subtle bugs) can happen. It is usually better to rely on the
@@ -18,6 +18,7 @@
 PACKAGECONFIG[libav] = "--with-system-libav,,libav"
 PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
 PACKAGECONFIG[yasm] = "--enable-yasm,--disable-yasm,yasm-native"
+PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind"
 
 GSTREAMER_1_0_DEBUG ?= "--disable-debug"
 
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.6.3.bb
deleted file mode 100644
index 687230a..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.6.3.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-include gstreamer1.0-libav.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
-                    file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
-                    file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
-                    file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-SRC_URI = " \
-    http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \
-    file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \
-    file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \
-"
-
-SRC_URI[md5sum] = "cfe9a06913d4fd4067e9e47f6e05fac2"
-SRC_URI[sha256sum] = "857b9c060a0337de38c6d26238c47352433c02eabf26c2f860c854dbc35bd4ab"
-
-S = "${WORKDIR}/gst-libav-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.8.3.bb
new file mode 100644
index 0000000..3d86221
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.8.3.bb
@@ -0,0 +1,20 @@
+include gstreamer1.0-libav.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
+                    file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
+                    file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
+                    file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI = " \
+    http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \
+    file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \
+    file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \
+"
+
+SRC_URI[md5sum] = "b51a736147bacb40f85827a4e0ae0d2c"
+SRC_URI[sha256sum] = "9006a05990089f7155ee0e848042f6bb24e52ab1d0a59ff8d1b5d7e33001a495"
+
+S = "${WORKDIR}/gst-libav-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb
index ebc8a5e..f4604a3 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb
@@ -15,20 +15,20 @@
 # and remove the ffmpeg sources from SRC_URI below. However, first note the
 # warnings in gstreamer1.0-libav.inc
 SRC_URI = " \
-    git://anongit.freedesktop.org/gstreamer/gst-libav;name=base \
+    git://anongit.freedesktop.org/gstreamer/gst-libav;branch=1.8;name=base \
     git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \
     git://source.ffmpeg.org/ffmpeg;destsuffix=git/gst-libs/ext/libav;name=ffmpeg;branch=release/3.0 \
     file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \
     file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \
 "
 
-PV = "1.7.2+git${SRCPV}"
+PV = "1.8.2+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
 
-SRCREV_base = "6c4878b6abc916b7f6f25b8926c4859119acf1ec"
-SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0"
-SRCREV_ffmpeg = "c40983a6f631d22fede713d535bb9c31d5c9740c"
+SRCREV_base = "f285cf0fd799cc3b46b5cecaaa439d5a2a38a9b7"
+SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275"
+SRCREV_ffmpeg = "c66f4d1ae64dffaf456d05cbdade02054446f499"
 SRCREV_FORMAT = "base"
 
 S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc
index 0fff612..07e5b7d 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc
@@ -7,11 +7,10 @@
 
 DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
 
-inherit autotools pkgconfig gettext
+inherit autotools pkgconfig gettext gtk-doc upstream-version-is-even
 
 acpaths = "-I ${S}/common/m4 -I ${S}/m4"
 
-PR = "r1"
 
 GSTREAMER_1_0_OMX_TARGET ?= "bellagio"
 GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
index 9e2b94e..0fe5564 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
@@ -21,7 +21,7 @@
     ${PACKAGECONFIG_GL} \
     ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
     ${@bb.utils.contains('DISTRO_FEATURES', 'directfb', 'directfb', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
     bz2 curl dash dtls hls neon rsvg sbc smoothstreaming sndfile uvch264 webp \
 "
 
@@ -32,13 +32,16 @@
 PACKAGECONFIG[dash]            = "--enable-dash,--disable-dash,libxml2"
 PACKAGECONFIG[directfb]        = "--enable-directfb,--disable-directfb,directfb"
 PACKAGECONFIG[dtls]            = "--enable-dtls,--disable-dtls,openssl"
+PACKAGECONFIG[egl]             = "--enable-egl,--disable-egl,virtual/egl"
 PACKAGECONFIG[faac]            = "--enable-faac,--disable-faac,faac"
 PACKAGECONFIG[faad]            = "--enable-faad,--disable-faad,faad2"
 PACKAGECONFIG[flite]           = "--enable-flite,--disable-flite,flite-alsa"
 PACKAGECONFIG[fluidsynth]      = "--enable-fluidsynth,--disable-fluidsynth,fluidsynth"
 PACKAGECONFIG[gles2]           = "--enable-gles2,--disable-gles2,virtual/libgles2"
 PACKAGECONFIG[gtk]             = "--enable-gtk3,--disable-gtk3,gtk+3"
-PACKAGECONFIG[hls]             = "--enable-hls,--disable-hls,nettle"
+# ensure OpenSSL is used for HLS AES description instead of nettle
+# (OpenSSL is a shared dependency with dtls)
+PACKAGECONFIG[hls]             = "--enable-hls --with-hls-crypto=openssl,--disable-hls,openssl"
 PACKAGECONFIG[libmms]          = "--enable-libmms,--disable-libmms,libmms"
 PACKAGECONFIG[libssh2]         = "--enable-libssh2,--disable-libssh2,libssh2"
 PACKAGECONFIG[modplug]         = "--enable-modplug,--disable-modplug,libmodplug"
@@ -46,7 +49,9 @@
 PACKAGECONFIG[openal]          = "--enable-openal,--disable-openal,openal-soft"
 PACKAGECONFIG[opencv]          = "--enable-opencv,--disable-opencv,opencv"
 PACKAGECONFIG[opengl]          = "--enable-opengl,--disable-opengl,virtual/libgl libglu"
-PACKAGECONFIG[opus]            = "--enable-opus,--disable-opus,libopus"
+# the opus encoder/decoder elements are now in the -base package,
+# but the opus parser remains in -bad
+PACKAGECONFIG[opusparse]       = "--enable-opus,--disable-opus,libopus"
 PACKAGECONFIG[resindvd]        = "--enable-resindvd,--disable-resindvd,libdvdread libdvdnav"
 PACKAGECONFIG[rsvg]            = "--enable-rsvg,--disable-rsvg,librsvg"
 PACKAGECONFIG[rtmp]            = "--enable-rtmp,--disable-rtmp,rtmpdump"
@@ -58,19 +63,19 @@
 PACKAGECONFIG[uvch264]         = "--enable-uvch264,--disable-uvch264,libusb1 libgudev"
 PACKAGECONFIG[voaacenc]        = "--enable-voaacenc,--disable-voaacenc,vo-aacenc"
 PACKAGECONFIG[voamrwbenc]      = "--enable-voamrwbenc,--disable-voamrwbenc,vo-amrwbenc"
-PACKAGECONFIG[wayland]         = "--enable-wayland --enable-egl,--disable-wayland --disable-egl,wayland virtual/egl"
+PACKAGECONFIG[wayland]         = "--enable-wayland,--disable-wayland,wayland-native wayland"
 PACKAGECONFIG[webp]            = "--enable-webp,--disable-webp,libwebp"
 
 # these plugins have not been ported to 1.0 (yet):
-#   apexsink dc1394 lv2 linsys musepack nas timidity teletextdec sdl xvid wininet
-#   acm gsettings sndio cdxaparse dccp faceoverlay hdvparse tta mve nuvdemux
-#   patchdetect real sdi videomeasure gsettings
+#   apexsink dc1394 lv2 linsys musepack nas timidity sdl xvid wininet
+#   sndio cdxaparse dccp faceoverlay hdvparse tta mve nuvdemux
+#   patchdetect sdi videomeasure
 
 # these plugins have no corresponding library in OE-core or meta-openembedded:
-#   openni2 winks direct3d directsound winscreencap
+#   openni2 winks direct3d directsound winscreencap acm
 #   apple_media android_media avc bs2b chromaprint daala dts gme gsm kate ladspa
-#   libde265 mimic mpeg2enc mplex ofa openh264 opensles pvr soundtouch spandsp
-#   spc vdpau wasapi x265 zbar
+#   libde265 mimic mpeg2enc mplex nvenc ofa openh264 opensles pvr soundtouch spandsp
+#   spc teletextdec tinyalsa vdpau vulkan wasapi x265 zbar
 
 # qt5 support is disabled, because it is not present in OE core, and requires more work than
 # just adding a packageconfig (it requires access to moc, uic, rcc, and qmake paths).
@@ -81,6 +86,7 @@
     --enable-decklink \
     --enable-dvb \
     --enable-fbdev \
+    --enable-netsim \
     --enable-shm \
     --enable-vcd \
     --disable-acm \
@@ -109,6 +115,7 @@
     --disable-mplex \
     --disable-musepack \
     --disable-nas \
+    --disable-nvenc \
     --disable-ofa \
     --disable-openexr \
     --disable-openh264 \
@@ -125,7 +132,9 @@
     --disable-spc \
     --disable-teletextdec \
     --disable-timidity \
+    --disable-tinyalsa \
     --disable-vdpau \
+    --disable-vulkan \
     --disable-wasapi \
     --disable-wildmidi \
     --disable-wininet \
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
index 154d340..33efc50 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
@@ -17,7 +17,7 @@
 index f968357..7cc2c7a 100644
 --- a/gst-libs/gst/gl/Makefile.am
 +++ b/gst-libs/gst/gl/Makefile.am
-@@ -149,7 +149,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@
+@@ -167,7 +167,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@
  		--library=libgstgl-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
@@ -30,7 +30,7 @@
 index 09eb97c..b746885 100644
 --- a/gst-libs/gst/insertbin/Makefile.am
 +++ b/gst-libs/gst/insertbin/Makefile.am
-@@ -43,7 +43,7 @@ GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GS
+@@ -44,7 +44,7 @@ GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GS
  		--library=libgstinsertbin-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch
deleted file mode 100644
index 1085e95..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c6b37a80806f9128de47f1ccc3f2354f8d436bb6 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 24 Sep 2015 19:47:32 +0300
-Subject: [PATCH] glimagesink: Downrank to marginal
-
-On desktop, where there is good OpenGL, xvimagesink will come up first,
-on other platforms, OpenGL can't be trusted because it's either software (like
-in a VM) or broken (like on embedded)., so let ximagesink come above.
-
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=751684]
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- ext/gl/gstopengl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
-index a4b2540..0ccaacd 100644
---- a/ext/gl/gstopengl.c
-+++ b/ext/gl/gstopengl.c
-@@ -101,7 +101,7 @@ plugin_init (GstPlugin * plugin)
- #endif
- 
-   if (!gst_element_register (plugin, "glimagesink",
--          GST_RANK_SECONDARY, gst_gl_image_sink_bin_get_type ())) {
-+          GST_RANK_MARGINAL, gst_gl_image_sink_bin_get_type ())) {
-     return FALSE;
-   }
- 
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch
new file mode 100755
index 0000000..51f4eb4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch
@@ -0,0 +1,634 @@
+From 8a0e97f7e672301cc76e394855e8c7a3448b0249 Mon Sep 17 00:00:00 2001
+From: Haihua Hu <jared.hu@nxp.com>
+Date: Fri, 8 Apr 2016 16:47:15 +0800
+Subject: [PATCH 4/6] [glplugin] enable gldeinterlace on OpenGL ES
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+1.Porting the exist deinterlace shader and OpenGL callback
+  to be compatible with OpenGL ES.
+2.Add a our blur vertical shader to gldeinterlace.
+3.Add a property named “method” to let user choose which
+  deinterlace function to use. Default to choose blur vertical
+  method for better performance.
+
+Upstream-Status: Backport [1.9.1]
+
+https://bugzilla.gnome.org/show_bug.cgi?id=764873
+
+Signed-off-by: Haihua Hu <jared.hu@nxp.com>
+---
+ ext/gl/Makefile.am        |   4 +-
+ ext/gl/gstgldeinterlace.c | 344 +++++++++++++++++++++++++++++++++++-----------
+ ext/gl/gstgldeinterlace.h |   6 +-
+ ext/gl/gstopengl.c        |  13 +-
+ 4 files changed, 275 insertions(+), 92 deletions(-)
+
+diff --git a/ext/gl/Makefile.am b/ext/gl/Makefile.am
+index 5d55f54..46419a7 100644
+--- a/ext/gl/Makefile.am
++++ b/ext/gl/Makefile.am
+@@ -40,6 +40,7 @@ libgstopengl_la_SOURCES = \
+ 	gstglfilterapp.c \
+ 	gstglviewconvert.c \
+ 	gstglstereosplit.c \
++	gstgldeinterlace.c \
+ 	gstglstereomix.c
+ 
+ noinst_HEADERS = \
+@@ -63,20 +64,19 @@ noinst_HEADERS = \
+ 	gstglfilterapp.h \
+ 	gstglstereosplit.h \
+ 	gstglstereomix.h \
++	gstgldeinterlace.h \
+ 	gstglviewconvert.h
+ 
+ # full opengl required
+ if USE_OPENGL
+ libgstopengl_la_SOURCES += \
+ 	gstglfilterglass.c \
+-	gstgldeinterlace.c \
+ 	gltestsrc.c \
+ 	gstgltestsrc.c \
+ 	gstglmosaic.c
+ 
+ noinst_HEADERS += \
+ 	gstglfilterglass.h \
+-	gstgldeinterlace.h \
+ 	gltestsrc.h \
+ 	gstgltestsrc.h \
+ 	gstglmosaic.h \
+diff --git a/ext/gl/gstgldeinterlace.c b/ext/gl/gstgldeinterlace.c
+index bd0eff0..c1250dc 100644
+--- a/ext/gl/gstgldeinterlace.c
++++ b/ext/gl/gstgldeinterlace.c
+@@ -43,7 +43,8 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+ 
+ enum
+ {
+-  PROP_0
++  PROP_0,
++  PROP_METHOD
+ };
+ 
+ #define DEBUG_INIT \
+@@ -57,17 +58,23 @@ static void gst_gl_deinterlace_set_property (GObject * object,
+ static void gst_gl_deinterlace_get_property (GObject * object,
+     guint prop_id, GValue * value, GParamSpec * pspec);
+ 
++static gboolean gst_gl_deinterlace_start (GstBaseTransform * trans);
+ static gboolean gst_gl_deinterlace_reset (GstBaseTransform * trans);
+-static gboolean gst_gl_deinterlace_init_shader (GstGLFilter * filter);
++static gboolean gst_gl_deinterlace_init_fbo (GstGLFilter * filter);
+ static gboolean gst_gl_deinterlace_filter (GstGLFilter * filter,
+     GstBuffer * inbuf, GstBuffer * outbuf);
+ static gboolean gst_gl_deinterlace_filter_texture (GstGLFilter * filter,
+     guint in_tex, guint out_tex);
+-static void gst_gl_deinterlace_callback (gint width, gint height,
++static void gst_gl_deinterlace_vfir_callback (gint width, gint height,
++    guint texture, gpointer stuff);
++static void gst_gl_deinterlace_greedyh_callback (gint width, gint height,
+     guint texture, gpointer stuff);
+ 
+ /* *INDENT-OFF* */
+ static const gchar *greedyh_fragment_source =
++  "#ifdef GL_ES\n"
++  "precision mediump float;\n"
++  "#endif\n"
+   "uniform sampler2D tex;\n"
+   "uniform sampler2D tex_prev;\n"
+   "uniform float max_comb;\n"
+@@ -75,35 +82,35 @@ static const gchar *greedyh_fragment_source =
+   "uniform float motion_sense;\n"
+   "uniform float width;\n"
+   "uniform float height;\n"
++  "varying vec2 v_texcoord;\n"
+ 
+   "void main () {\n"
+-  "  vec2 texcoord = gl_TexCoord[0].xy;\n"
+-  "  if (int(mod(texcoord.y * height, 2.0)) == 0) {\n"
+-  "    gl_FragColor = vec4(texture2D(tex_prev, texcoord).rgb, 1.0);\n"
++  "  if (int(mod(v_texcoord.y * height, 2.0)) == 0) {\n"
++  "    gl_FragColor = vec4(texture2D(tex_prev, v_texcoord).rgb, 1.0);\n"
+   "  } else {\n"
+   "    vec2 texcoord_L1_a1, texcoord_L3_a1, texcoord_L1, texcoord_L3, texcoord_L1_1, texcoord_L3_1;\n"
+   "    vec3 L1_a1, L3_a1, L1, L3, L1_1, L3_1;\n"
+ 
+-  "    texcoord_L1 = vec2(texcoord.x, texcoord.y - 1.0 / height);\n"
+-  "    texcoord_L3 = vec2(texcoord.x, texcoord.y + 1.0 / height);\n"
++  "    texcoord_L1 = vec2(v_texcoord.x, v_texcoord.y - 1.0 / height);\n"
++  "    texcoord_L3 = vec2(v_texcoord.x, v_texcoord.y + 1.0 / height);\n"
+   "    L1 = texture2D(tex_prev, texcoord_L1).rgb;\n"
+   "    L3 = texture2D(tex_prev, texcoord_L3).rgb;\n"
+-  "    if (texcoord.x == 1.0 && texcoord.y == 1.0) {\n"
++  "    if (v_texcoord.x == 1.0 && v_texcoord.y == 1.0) {\n"
+   "      L1_1 = L1;\n"
+   "      L3_1 = L3;\n"
+   "    } else {\n"
+-  "      texcoord_L1_1 = vec2(texcoord.x + 1.0 / width, texcoord.y - 1.0 / height);\n"
+-  "      texcoord_L3_1 = vec2(texcoord.x + 1.0 / width, texcoord.y + 1.0 / height);\n"
++  "      texcoord_L1_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y - 1.0 / height);\n"
++  "      texcoord_L3_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y + 1.0 / height);\n"
+   "      L1_1 = texture2D(tex_prev, texcoord_L1_1).rgb;\n"
+   "      L3_1 = texture2D(tex_prev, texcoord_L3_1).rgb;\n"
+   "    }\n"
+ 
+-  "    if (int(ceil(texcoord.x + texcoord.y)) == 0) {\n"
++  "    if (int(ceil(v_texcoord.x + v_texcoord.y)) == 0) {\n"
+   "      L1_a1 = L1;\n"
+   "      L3_a1 = L3;\n"
+   "    } else {\n"
+-  "      texcoord_L1_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y - 1.0 / height);\n"
+-  "      texcoord_L3_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y + 1.0 / height);\n"
++  "      texcoord_L1_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y - 1.0 / height);\n"
++  "      texcoord_L3_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y + 1.0 / height);\n"
+   "      L1_a1 = texture2D(tex_prev, texcoord_L1_a1).rgb;\n"
+   "      L3_a1 = texture2D(tex_prev, texcoord_L3_a1).rgb;\n"
+   "    }\n"
+@@ -113,8 +120,8 @@ static const gchar *greedyh_fragment_source =
+   "    vec3 avg_1 = (L1_1 + L3_1) / 2.0;\n"
+   "    vec3 avg_s = (avg_a1 + avg_1) / 2.0;\n"
+   "    vec3 avg_sc = (avg_s + avg) / 2.0;\n"
+-  "    vec3 L2 = texture2D(tex, texcoord).rgb;\n"
+-  "    vec3 LP2 = texture2D(tex_prev, texcoord).rgb;\n"
++  "    vec3 L2 = texture2D(tex, v_texcoord).rgb;\n"
++  "    vec3 LP2 = texture2D(tex_prev, v_texcoord).rgb;\n"
+   "    vec3 best;\n"
+   "    if (abs(L2.r - avg_sc.r) < abs(LP2.r - avg_sc.r)) {\n"
+   "      best.r = L2.r;\n" "    } else {\n"
+@@ -144,8 +151,87 @@ static const gchar *greedyh_fragment_source =
+   "    gl_FragColor = vec4(last, 1.0);\n"
+   "  }\n"
+   "}\n";
++
++const gchar *vfir_fragment_source =
++  "#ifdef GL_ES\n"
++  "precision mediump float;\n"
++  "#endif\n"
++  "uniform sampler2D tex;\n"
++  "uniform float width;\n"
++  "uniform float height;\n"
++  "varying vec2 v_texcoord;\n"
++  "void main()\n"
++  "{\n"
++  "  vec2 topcoord, botcoord;\n"
++  "  vec4 cur_color, top_color, bot_color;\n"
++  "  topcoord.x = v_texcoord.x;\n"
++  "  botcoord.x = v_texcoord.x;\n"
++  "  if (v_texcoord.y == 0.0 || v_texcoord.y == 1.0) {\n"
++  "    topcoord.y = v_texcoord.y ;\n"
++  "    botcoord.y = v_texcoord.y ;\n"
++  "  }\n"
++  "  else {\n"
++  "    topcoord.y = v_texcoord.y - 1.0/height;\n"
++  "    botcoord.y = v_texcoord.y + 1.0/height;\n"
++  "  }\n"
++  "  cur_color = texture2D(tex, v_texcoord);\n"
++  "  top_color = texture2D(tex, topcoord);\n"
++  "  bot_color = texture2D(tex, botcoord);\n"
++  "  gl_FragColor = 0.5*cur_color + 0.25*top_color + 0.25*bot_color;\n"
++  "}";
+ /* *INDENT-ON* */
+ 
++/* dont' forget to edit the following when a new method is added */
++typedef enum
++{
++  GST_GL_DEINTERLACE_VFIR,
++  GST_GL_DEINTERLACE_GREEDYH
++} GstGLDeinterlaceMethod;
++
++static const GEnumValue *
++gst_gl_deinterlace_get_methods (void)
++{
++  static const GEnumValue method_types[] = {
++    {GST_GL_DEINTERLACE_VFIR, "Blur Vertical", "vfir"},
++    {GST_GL_DEINTERLACE_GREEDYH, "Motion Adaptive: Advanced Detection",
++          "greedhy"},
++    {0, NULL, NULL}
++  };
++  return method_types;
++}
++
++#define GST_TYPE_GL_DEINTERLACE_METHODS (gst_gl_deinterlace_method_get_type ())
++static GType
++gst_gl_deinterlace_method_get_type (void)
++{
++  static GType gl_deinterlace_method_type = 0;
++  if (!gl_deinterlace_method_type) {
++    gl_deinterlace_method_type =
++        g_enum_register_static ("GstGLDeinterlaceMethod",
++        gst_gl_deinterlace_get_methods ());
++  }
++  return gl_deinterlace_method_type;
++}
++
++static void
++gst_gl_deinterlace_set_method (GstGLDeinterlace * deinterlace,
++    guint method_types)
++{
++  switch (method_types) {
++    case GST_GL_DEINTERLACE_VFIR:
++      deinterlace->deinterlacefunc = gst_gl_deinterlace_vfir_callback;
++      deinterlace->current_method = method_types;
++      break;
++    case GST_GL_DEINTERLACE_GREEDYH:
++      deinterlace->deinterlacefunc = gst_gl_deinterlace_greedyh_callback;
++      deinterlace->current_method = method_types;
++      break;
++    default:
++      g_assert_not_reached ();
++      break;
++  }
++}
++
+ static void
+ gst_gl_deinterlace_class_init (GstGLDeinterlaceClass * klass)
+ {
+@@ -163,25 +249,60 @@ gst_gl_deinterlace_class_init (GstGLDeinterlaceClass * klass)
+       "Deinterlacing based on fragment shaders",
+       "Julien Isorce <julien.isorce@mail.com>");
+ 
++  g_object_class_install_property (gobject_class,
++      PROP_METHOD,
++      g_param_spec_enum ("method",
++          "Deinterlace Method",
++          "Select which deinterlace method apply to GL video texture",
++          GST_TYPE_GL_DEINTERLACE_METHODS,
++          GST_GL_DEINTERLACE_VFIR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
++  GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_deinterlace_start;
+   GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_deinterlace_reset;
+ 
+   GST_GL_FILTER_CLASS (klass)->filter = gst_gl_deinterlace_filter;
+   GST_GL_FILTER_CLASS (klass)->filter_texture =
+       gst_gl_deinterlace_filter_texture;
+-  GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_shader;
++  GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_fbo;
+ 
+-  GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api = GST_GL_API_OPENGL;
++  GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api =
++      GST_GL_API_OPENGL | GST_GL_API_GLES2 | GST_GL_API_OPENGL3;
+ }
+ 
+ static void
+ gst_gl_deinterlace_init (GstGLDeinterlace * filter)
+ {
+-  filter->shader = NULL;
++  filter->shaderstable = NULL;
++  filter->deinterlacefunc = gst_gl_deinterlace_vfir_callback;
++  filter->current_method = GST_GL_DEINTERLACE_VFIR;
+   filter->prev_buffer = NULL;
+   filter->prev_tex = 0;
+ }
+ 
+ static gboolean
++gst_gl_deinterlace_start (GstBaseTransform * trans)
++{
++  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans);
++
++  deinterlace_filter->shaderstable = g_hash_table_new (g_str_hash, g_str_equal);
++
++  return GST_BASE_TRANSFORM_CLASS (parent_class)->start (trans);
++}
++
++static void
++gst_gl_deinterlace_ghash_func_clean (gpointer key, gpointer value,
++    gpointer data)
++{
++  GstGLShader *shader = (GstGLShader *) value;
++  GstGLFilter *filter = (GstGLFilter *) data;
++
++  //blocking call, wait the opengl thread has destroyed the shader
++  gst_gl_context_del_shader (GST_GL_BASE_FILTER (filter)->context, shader);
++
++  value = NULL;
++}
++
++static gboolean
+ gst_gl_deinterlace_reset (GstBaseTransform * trans)
+ {
+   GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans);
+@@ -189,10 +310,17 @@ gst_gl_deinterlace_reset (GstBaseTransform * trans)
+   gst_buffer_replace (&deinterlace_filter->prev_buffer, NULL);
+ 
+   //blocking call, wait the opengl thread has destroyed the shader
+-  if (deinterlace_filter->shader)
+-    gst_gl_context_del_shader (GST_GL_BASE_FILTER (trans)->context,
+-        deinterlace_filter->shader);
+-  deinterlace_filter->shader = NULL;
++  if (deinterlace_filter->shaderstable) {
++    /* release shaders in the gl thread */
++    g_hash_table_foreach (deinterlace_filter->shaderstable,
++        gst_gl_deinterlace_ghash_func_clean, deinterlace_filter);
++
++    /* clean the htable without calling values destructors
++     * because shaders have been released in the glthread
++     * through the foreach func */
++    g_hash_table_unref (deinterlace_filter->shaderstable);
++    deinterlace_filter->shaderstable = NULL;
++  }
+ 
+   return GST_BASE_TRANSFORM_CLASS (parent_class)->stop (trans);
+ }
+@@ -201,9 +329,12 @@ static void
+ gst_gl_deinterlace_set_property (GObject * object, guint prop_id,
+     const GValue * value, GParamSpec * pspec)
+ {
+-  //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
++  GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
+ 
+   switch (prop_id) {
++    case PROP_METHOD:
++      gst_gl_deinterlace_set_method (filter, g_value_get_enum (value));
++      break;
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -214,9 +345,12 @@ static void
+ gst_gl_deinterlace_get_property (GObject * object, guint prop_id,
+     GValue * value, GParamSpec * pspec)
+ {
+-  //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
++  GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
+ 
+   switch (prop_id) {
++    case PROP_METHOD:
++      g_value_set_enum (value, filter->current_method);
++      break;
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -224,13 +358,9 @@ gst_gl_deinterlace_get_property (GObject * object, guint prop_id,
+ }
+ 
+ static gboolean
+-gst_gl_deinterlace_init_shader (GstGLFilter * filter)
++gst_gl_deinterlace_init_fbo (GstGLFilter * filter)
+ {
+-  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
+-
+-  //blocking call, wait the opengl thread has compiled the shader
+-  return gst_gl_context_gen_shader (GST_GL_BASE_FILTER (filter)->context, 0,
+-      greedyh_fragment_source, &deinterlace_filter->shader);
++  return TRUE;
+ }
+ 
+ static gboolean
+@@ -241,7 +371,7 @@ gst_gl_deinterlace_filter_texture (GstGLFilter * filter, guint in_tex,
+ 
+   //blocking call, use a FBO
+   gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
+-      gst_gl_deinterlace_callback, deinterlace_filter);
++      deinterlace_filter->deinterlacefunc, deinterlace_filter);
+ 
+   return TRUE;
+ }
+@@ -259,36 +389,104 @@ gst_gl_deinterlace_filter (GstGLFilter * filter, GstBuffer * inbuf,
+   return TRUE;
+ }
+ 
+-//opengl scene, params: input texture (not the output filter->texture)
++static GstGLShader *
++gst_gl_deinterlace_get_fragment_shader (GstGLFilter * filter,
++    const gchar * shader_name, const gchar * shader_source)
++{
++  GstGLShader *shader = NULL;
++  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
++  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
++
++  shader = g_hash_table_lookup (deinterlace_filter->shaderstable, shader_name);
++
++  if (!shader) {
++    GError *error = NULL;
++
++    if (!(shader = gst_gl_shader_new_link_with_stages (context, &error,
++                gst_glsl_stage_new_default_vertex (context),
++                gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
++                    GST_GLSL_VERSION_NONE,
++                    GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
++                    shader_source), NULL))) {
++      GST_ELEMENT_ERROR (deinterlace_filter, RESOURCE, NOT_FOUND,
++          ("Failed to initialize %s shader", shader_name), (NULL));
++    }
++
++    filter->draw_attr_position_loc =
++        gst_gl_shader_get_attribute_location (shader, "a_position");
++    filter->draw_attr_texture_loc =
++        gst_gl_shader_get_attribute_location (shader, "a_texcoord");
++  }
++
++  g_hash_table_insert (deinterlace_filter->shaderstable, (gchar *) shader_name,
++      shader);
++
++  return shader;
++}
++
+ static void
+-gst_gl_deinterlace_callback (gint width, gint height, guint texture,
++gst_gl_deinterlace_vfir_callback (gint width, gint height, guint texture,
+     gpointer stuff)
+ {
+-  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (stuff);
++  GstGLShader *shader;
+   GstGLFilter *filter = GST_GL_FILTER (stuff);
+-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
++  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
++  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
++  GstGLFuncs *gl = context->gl_vtable;
++
++  shader = gst_gl_deinterlace_get_fragment_shader (deinterlace_filter, "vfir",
++      vfir_fragment_source);
++
++  if (!shader)
++    return;
++
++#if GST_GL_HAVE_OPENGL
++  if (USING_OPENGL (context)) {
++    gl->MatrixMode (GL_PROJECTION);
++    gl->LoadIdentity ();
++  }
++#endif
++
++  gst_gl_shader_use (shader);
++
++  gl->ActiveTexture (GL_TEXTURE0);
++  gl->BindTexture (GL_TEXTURE_2D, texture);
++
++  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
++  gst_gl_shader_set_uniform_1f (shader, "width",
++      GST_VIDEO_INFO_WIDTH (&filter->out_info));
++  gst_gl_shader_set_uniform_1f (shader, "height",
++      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
++
++  gst_gl_filter_draw_texture (filter, texture, width, height);
++}
++
++static void
++gst_gl_deinterlace_greedyh_callback (gint width, gint height, guint texture,
++    gpointer stuff)
++{
++  GstGLShader *shader;
++  GstGLFilter *filter = GST_GL_FILTER (stuff);
++  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
++  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
++  GstGLFuncs *gl = context->gl_vtable;
+   guint temp;
+ 
+-  GLfloat verts[] = { -1.0, -1.0,
+-    1.0, -1.0,
+-    1.0, 1.0,
+-    -1.0, 1.0
+-  };
+-  GLfloat texcoords0[] = { 0.0f, 0.0f,
+-    1.0f, 0.0f,
+-    1.0f, 1.0f,
+-    0.0f, 1.0f
+-  };
+-  GLfloat texcoords1[] = { 0.0f, 0.0f,
+-    1.0f, 0.0f,
+-    1.0f, 1.0f,
+-    0.0f, 1.0f
+-  };
++  shader =
++      gst_gl_deinterlace_get_fragment_shader (deinterlace_filter, "greedhy",
++      greedyh_fragment_source);
+ 
+-  gl->MatrixMode (GL_PROJECTION);
+-  gl->LoadIdentity ();
++  if (!shader)
++    return;
+ 
+-  gst_gl_shader_use (deinterlace_filter->shader);
++#if GST_GL_HAVE_OPENGL
++  if (USING_OPENGL (context)) {
++    gl->MatrixMode (GL_PROJECTION);
++    gl->LoadIdentity ();
++  }
++#endif
++
++  gst_gl_shader_use (shader);
+ 
+   if (G_UNLIKELY (deinterlace_filter->prev_tex == 0)) {
+     gst_gl_context_gen_texture (GST_GL_BASE_FILTER (filter)->context,
+@@ -298,44 +496,24 @@ gst_gl_deinterlace_callback (gint width, gint height, guint texture,
+         GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+   } else {
+     gl->ActiveTexture (GL_TEXTURE1);
+-    gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex_prev", 1);
++    gst_gl_shader_set_uniform_1i (shader, "tex_prev", 1);
+     gl->BindTexture (GL_TEXTURE_2D, deinterlace_filter->prev_tex);
+   }
+ 
+   gl->ActiveTexture (GL_TEXTURE0);
+-  gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex", 0);
++  gl->BindTexture (GL_TEXTURE_2D, texture);
+ 
+-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "max_comb",
+-      5.0f / 255.0f);
+-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_threshold",
+-      25.0f / 255.0f);
+-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_sense",
+-      30.0f / 255.0f);
++  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
++  gst_gl_shader_set_uniform_1f (shader, "max_comb", 5.0f / 255.0f);
++  gst_gl_shader_set_uniform_1f (shader, "motion_threshold", 25.0f / 255.0f);
++  gst_gl_shader_set_uniform_1f (shader, "motion_sense", 30.0f / 255.0f);
+ 
+-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "width",
++  gst_gl_shader_set_uniform_1f (shader, "width",
+       GST_VIDEO_INFO_WIDTH (&filter->out_info));
+-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "height",
++  gst_gl_shader_set_uniform_1f (shader, "height",
+       GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+ 
+-  gl->ClientActiveTexture (GL_TEXTURE0);
+-
+-  gl->EnableClientState (GL_TEXTURE_COORD_ARRAY);
+-  gl->EnableClientState (GL_VERTEX_ARRAY);
+-
+-  gl->VertexPointer (2, GL_FLOAT, 0, &verts);
+-  gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords0);
+-
+-  gl->ClientActiveTexture (GL_TEXTURE1);
+-  gl->EnableClientState (GL_TEXTURE_COORD_ARRAY);
+-  gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords1);
+-
+-  gl->DrawArrays (GL_TRIANGLE_FAN, 0, 4);
+-
+-  gl->DisableClientState (GL_VERTEX_ARRAY);
+-  gl->DisableClientState (GL_TEXTURE_COORD_ARRAY);
+-
+-  gl->ClientActiveTexture (GL_TEXTURE0);
+-  gl->DisableClientState (GL_TEXTURE_COORD_ARRAY);
++  gst_gl_filter_draw_texture (filter, texture, width, height);
+ 
+   if (texture == filter->in_tex_id) {
+     temp = filter->in_tex_id;
+diff --git a/ext/gl/gstgldeinterlace.h b/ext/gl/gstgldeinterlace.h
+index a81a2e7..58a9c0c 100644
+--- a/ext/gl/gstgldeinterlace.h
++++ b/ext/gl/gstgldeinterlace.h
+@@ -38,9 +38,13 @@ typedef struct _GstGLDeinterlaceClass GstGLDeinterlaceClass;
+ struct _GstGLDeinterlace
+ {
+   GstGLFilter  filter;
+-  GstGLShader  *shader;
++
++  GLCB	       deinterlacefunc; 
++  GHashTable   *shaderstable;
+   GstBuffer    *prev_buffer;
+   guint         prev_tex;
++
++  gint	       current_method;
+ };
+ 
+ struct _GstGLDeinterlaceClass
+diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
+index 50676c4..135862a 100644
+--- a/ext/gl/gstopengl.c
++++ b/ext/gl/gstopengl.c
+@@ -62,6 +62,7 @@
+ #include "gstglstereosplit.h"
+ #include "gstglstereomix.h"
+ #include "gstglviewconvert.h"
++#include "gstgldeinterlace.h"
+ 
+ #if HAVE_GRAPHENE
+ #include "gstgltransformation.h"
+@@ -77,7 +78,6 @@
+ #include "gstgltestsrc.h"
+ #include "gstglfilterglass.h"
+ /* #include "gstglfilterreflectedscreen.h" */
+-#include "gstgldeinterlace.h"
+ #include "gstglmosaic.h"
+ #if HAVE_PNG
+ #include "gstgldifferencematte.h"
+@@ -226,6 +226,12 @@ plugin_init (GstPlugin * plugin)
+           GST_RANK_NONE, GST_TYPE_GL_STEREO_MIX)) {
+     return FALSE;
+   }
++
++  if (!gst_element_register (plugin, "gldeinterlace",
++          GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
++    return FALSE;
++  }
++
+ #if HAVE_JPEG
+ #if HAVE_PNG
+   if (!gst_element_register (plugin, "gloverlay",
+@@ -250,11 +256,6 @@ plugin_init (GstPlugin * plugin)
+     return FALSE;
+   }
+ #endif
+-  if (!gst_element_register (plugin, "gldeinterlace",
+-          GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
+-    return FALSE;
+-  }
+-
+   if (!gst_element_register (plugin, "glmosaic",
+           GST_RANK_NONE, GST_TYPE_GL_MOSAIC)) {
+     return FALSE;
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch
deleted file mode 100755
index 3491a15..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 95cda7fbcf1a81289d9315c801c8e2b3d896f4cb Mon Sep 17 00:00:00 2001
-From: Haihua Hu <b55597@freescale.com>
-Date: Mon, 30 Nov 2015 09:36:09 +0800
-Subject: [PATCH 2/5] [glplugin] glwindow: fix memory leak of navigation
- thread
-
-When exit navigation thread, call g_thread_join() to release
-the resource hold by it.
-
-Upstream-Status: Backport [1.7.1]
-
-bugzilla URL: https://bugzilla.gnome.org/show_bug.cgi?id=758820
-
-Signed-off-by: Haihua Hu <b55597@freescale.com>
----
- gst-libs/gst/gl/gstglwindow.c |    3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c
-index 44b74ca..42ef296 100644
---- a/gst-libs/gst/gl/gstglwindow.c
-+++ b/gst-libs/gst/gl/gstglwindow.c
-@@ -343,6 +343,9 @@ gst_gl_window_finalize (GObject * object)
-     while (window->nav_alive) {
-       g_cond_wait (&window->nav_destroy_cond, &window->nav_lock);
-     }
-+    /* release resource hold by navigation thread */
-+    g_thread_join(window->priv->navigation_thread);
-+    window->priv->navigation_thread = NULL;
-     g_mutex_unlock (&window->nav_lock);
-   }
- 
--- 
-1.7.9.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glcolorconvert-implement-multiple-render-targets-for.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glcolorconvert-implement-multiple-render-targets-for.patch
new file mode 100755
index 0000000..31d8e05
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glcolorconvert-implement-multiple-render-targets-for.patch
@@ -0,0 +1,244 @@
+From 127e517568490fc147211d8b2fb4da01cecbbeb5 Mon Sep 17 00:00:00 2001
+From: Matthew Waters <matthew@centricular.com>
+Date: Thu, 31 Mar 2016 19:50:28 +1100
+Subject: [PATCH 5/6] glcolorconvert: implement multiple render targets for
+ GLES3
+
+There are numerous slight differences required between Desktop GL and GLES3 for
+multiple render targets.
+
+1. gl_FragData doesn't exist at all and one is required to use
+   'layout (location = ?) out ...' instead.
+2. gl_FragColor doesn't exist, same as 1
+3. texture2D() has been deprecated
+
+Fortunately most of these have been taken care of with GL3 and the shader
+mangling already exists so just expand the conditions they are used in.  The
+gl_FragData issue requires a new mangle pass though.  We also use this new
+pass on desktop GL for consistency.
+
+Upstream-Status: Backport [1.9.1]
+
+---
+ gst-libs/gst/gl/gstglcolorconvert.c | 125 ++++++++++++++++++++++++++++--------
+ 1 file changed, 99 insertions(+), 26 deletions(-)
+
+diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
+index 490ec54..f478faa 100644
+--- a/gst-libs/gst/gl/gstglcolorconvert.c
++++ b/gst-libs/gst/gl/gstglcolorconvert.c
+@@ -1802,10 +1802,11 @@ _mangle_sampler_type (const gchar * str, GstGLTextureTarget from,
+ 
+ static gchar *
+ _mangle_varying_attribute (const gchar * str, guint shader_type,
+-    GstGLAPI gl_api)
++    GstGLAPI gl_api, guint gl_major, guint gl_minor)
+ {
+-  if (gl_api & GST_GL_API_OPENGL3) {
+-    if (shader_type == GL_VERTEX_SHADER) {
++  if (shader_type == GL_VERTEX_SHADER) {
++    if ((gl_api & GST_GL_API_OPENGL3) || (gl_api & GST_GL_API_GLES2
++            && gl_major >= 3)) {
+       gchar *tmp, *tmp2;
+       GRegex *regex;
+ 
+@@ -1821,7 +1822,10 @@ _mangle_varying_attribute (const gchar * str, guint shader_type,
+ 
+       g_free (tmp);
+       return tmp2;
+-    } else if (shader_type == GL_FRAGMENT_SHADER) {
++    }
++  } else if (shader_type == GL_FRAGMENT_SHADER) {
++    if ((gl_api & GST_GL_API_OPENGL3) || (gl_api & GST_GL_API_GLES2
++            && gl_major > 3)) {
+       gchar *tmp;
+       GRegex *regex;
+ 
+@@ -1837,28 +1841,48 @@ _mangle_varying_attribute (const gchar * str, guint shader_type,
+ }
+ 
+ static gchar *
+-_mangle_frag_color (const gchar * str)
++_mangle_frag_color_data (const gchar * str)
+ {
+   GRegex *regex;
+-  gchar *ret;
++  gchar *ret, *tmp;
+ 
+   regex = g_regex_new ("gl_FragColor", 0, 0, NULL);
+   ret = g_regex_replace_literal (regex, str, -1, 0, "fragColor", 0, NULL);
+   g_regex_unref (regex);
+ 
++  tmp = ret;
++  /* search and replace 'gl_FragData[NUM]' into fragColor_NUM */
++  regex = g_regex_new ("gl_FragData\\[(\\d+)\\]", 0, 0, NULL);
++  ret = g_regex_replace (regex, tmp, -1, 0, "fragColor_\\1", 0, NULL);
++  g_regex_unref (regex);
++  g_free (tmp);
++
+   return ret;
+ }
+ 
+ static void
+-_mangle_version_profile_from_gl_api (GstGLAPI gl_api, GstGLSLVersion * version,
+-    GstGLSLProfile * profile)
++_mangle_version_profile_from_gl_api (GstGLAPI gl_api, gint gl_major,
++    gint gl_minor, GstGLSLVersion * version, GstGLSLProfile * profile)
+ {
++  *version = GST_GLSL_VERSION_NONE;
++  *profile = GST_GLSL_PROFILE_NONE;
++
+   if (gl_api & GST_GL_API_OPENGL3) {
+-    *version = GST_GLSL_VERSION_150;
+-    *profile = GST_GLSL_PROFILE_NONE;
++    if (gl_major > 3 || gl_minor >= 3) {
++      *version = GST_GLSL_VERSION_330;
++      *profile = GST_GLSL_PROFILE_CORE;
++    } else {
++      *version = GST_GLSL_VERSION_150;
++      *profile = GST_GLSL_PROFILE_NONE;
++    }
+   } else if (gl_api & GST_GL_API_GLES2) {
+-    *version = GST_GLSL_VERSION_100;
+-    *profile = GST_GLSL_PROFILE_ES;
++    if (gl_major >= 3) {
++      *version = GST_GLSL_VERSION_300;
++      *profile = GST_GLSL_PROFILE_ES;
++    } else if (gl_major >= 2) {
++      *version = GST_GLSL_VERSION_100;
++      *profile = GST_GLSL_PROFILE_ES;
++    }
+   } else if (gl_api & GST_GL_API_OPENGL) {
+     *version = GST_GLSL_VERSION_110;
+     *profile = GST_GLSL_PROFILE_COMPATIBILITY;
+@@ -1867,22 +1891,28 @@ _mangle_version_profile_from_gl_api (GstGLAPI gl_api, GstGLSLVersion * version,
+ 
+ static gchar *
+ _mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from,
+-    GstGLTextureTarget to, GstGLAPI gl_api, GstGLSLVersion * version,
+-    GstGLSLProfile * profile)
++    GstGLTextureTarget to, GstGLAPI gl_api, gint gl_major, gint gl_minor,
++    GstGLSLVersion * version, GstGLSLProfile * profile)
+ {
+   gchar *tmp, *tmp2;
+ 
++  _mangle_version_profile_from_gl_api (gl_api, gl_major, gl_minor, version,
++      profile);
+   tmp = _mangle_texture_access (str, from, to, gl_api);
+   tmp2 = _mangle_sampler_type (tmp, from, to);
+   g_free (tmp);
+-  tmp = _mangle_varying_attribute (tmp2, shader_type, gl_api);
++  tmp =
++      _mangle_varying_attribute (tmp2, shader_type, gl_api, gl_major, gl_minor);
+   g_free (tmp2);
+-  if (shader_type == GL_FRAGMENT_SHADER && gl_api & GST_GL_API_OPENGL3) {
+-    tmp2 = _mangle_frag_color (tmp);
+-    g_free (tmp);
+-    tmp = tmp2;
++  if (shader_type == GL_FRAGMENT_SHADER) {
++    if ((*profile == GST_GLSL_PROFILE_ES && *version >= GST_GLSL_VERSION_300)
++        || (*profile == GST_GLSL_PROFILE_CORE
++            && *version >= GST_GLSL_VERSION_150)) {
++      tmp2 = _mangle_frag_color_data (tmp);
++      g_free (tmp);
++      tmp = tmp2;
++    }
+   }
+-  _mangle_version_profile_from_gl_api (gl_api, version, profile);
+   return tmp;
+ }
+ 
+@@ -1899,15 +1929,18 @@ _create_shader (GstGLColorConvert * convert)
+   const gchar *strings[2];
+   GError *error = NULL;
+   GstGLAPI gl_api;
++  gint gl_major, gl_minor;
+   int i;
+ 
+   gl_api = gst_gl_context_get_gl_api (convert->context);
++  gst_gl_context_get_gl_version (convert->context, &gl_major, &gl_minor);
+ 
+   ret = gst_gl_shader_new (convert->context);
+ 
+   tmp =
+       _mangle_shader (text_vertex_shader, GL_VERTEX_SHADER, info->templ->target,
+-      convert->priv->from_texture_target, gl_api, &version, &profile);
++      convert->priv->from_texture_target, gl_api, gl_major, gl_minor, &version,
++      &profile);
+ 
+   tmp1 = gst_glsl_version_profile_to_string (version, profile);
+   version_str = g_strdup_printf ("#version %s\n", tmp1);
+@@ -1945,9 +1978,37 @@ _create_shader (GstGLColorConvert * convert)
+   if (info->templ->uniforms)
+     g_string_append (str, info->templ->uniforms);
+ 
+-  if (gl_api & GST_GL_API_OPENGL3) {
+-    g_string_append_c (str, '\n');
+-    g_string_append (str, "out vec4 fragColor;\n");
++  g_string_append_c (str, '\n');
++
++  /* GL 3.3+ and GL ES 3.x */
++  if ((profile == GST_GLSL_PROFILE_CORE && version >= GST_GLSL_VERSION_330)
++      || (profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)) {
++    if (info->out_n_textures > 1) {
++      gint i;
++
++      for (i = 0; i < info->out_n_textures; i++) {
++        g_string_append_printf (str,
++            "layout(location = %d) out vec4 fragColor_%d;\n", i, i);
++      }
++    } else {
++      g_string_append (str, "layout (location = 0) out vec4 fragColor;\n");
++    }
++  } else if (profile == GST_GLSL_PROFILE_CORE
++      && version >= GST_GLSL_VERSION_150) {
++    /* no layout specifiers, use glBindFragDataLocation instead */
++    if (info->out_n_textures > 1) {
++      gint i;
++
++      for (i = 0; i < info->out_n_textures; i++) {
++        gchar *var_name = g_strdup_printf ("fragColor_%d", i);
++        g_string_append_printf (str, "out vec4 %s;\n", var_name);
++        gst_gl_shader_bind_frag_data_location (ret, i, var_name);
++        g_free (var_name);
++      }
++    } else {
++      g_string_append (str, "out vec4 fragColor;\n");
++      gst_gl_shader_bind_frag_data_location (ret, 0, "fragColor");
++    }
+   }
+ 
+   for (i = 0; i < MAX_FUNCTIONS; i++) {
+@@ -1959,7 +2020,19 @@ _create_shader (GstGLColorConvert * convert)
+     g_string_append_c (str, '\n');
+   }
+ 
+-  g_string_append (str, "\nvarying vec2 v_texcoord;\nvoid main (void) {\n");
++  {
++    const gchar *varying = NULL;
++
++    if ((profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)
++        || (profile == GST_GLSL_PROFILE_CORE
++            && version >= GST_GLSL_VERSION_150)) {
++      varying = "in";
++    } else {
++      varying = "varying";
++    }
++    g_string_append_printf (str, "\n%s vec2 v_texcoord;\nvoid main (void) {\n",
++        varying);
++  }
+   if (info->frag_body) {
+     g_string_append (str, "vec2 texcoord;\n");
+     if (convert->priv->from_texture_target == GST_GL_TEXTURE_TARGET_RECTANGLE
+@@ -1975,7 +2048,7 @@ _create_shader (GstGLColorConvert * convert)
+   tmp = g_string_free (str, FALSE);
+   info->frag_prog = _mangle_shader (tmp, GL_FRAGMENT_SHADER,
+       info->templ->target, convert->priv->from_texture_target, gl_api,
+-      &version, &profile);
++      gl_major, gl_minor, &version, &profile);
+   g_free (tmp);
+ 
+   strings[1] = info->frag_prog;
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch
new file mode 100755
index 0000000..b75f402
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch
@@ -0,0 +1,32 @@
+From b069672ace2b762f400ca6d318571cbedf5141f2 Mon Sep 17 00:00:00 2001
+From: Matthew Waters <matthew@centricular.com>
+Date: Thu, 31 Mar 2016 20:00:37 +1100
+Subject: [PATCH 1/3] glcolorconvert: don't use the predefined variable name
+ sample
+
+Using 'sample' as a variable name is an error in GLES3
+
+Upstream-Status: Backport [1.9.1]
+---
+ gst-libs/gst/gl/gstglcolorconvert.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
+index f478faa..c23624f 100644
+--- a/gst-libs/gst/gl/gstglcolorconvert.c
++++ b/gst-libs/gst/gl/gstglcolorconvert.c
+@@ -261,9 +261,9 @@ static const struct shader_templ templ_RGB_to_PLANAR_YUV =
+     "    for (int j = 0; j < int(chroma_sampling.y); j++) {\n"
+     "      int n = (i+1)*(j+1);\n"
+     "      delta.y = float(j);\n"
+-    "      vec4 sample = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n"
++    "      vec4 s = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n"
+            /* rolling average */
+-    "      uv_texel = (float(n-1) * uv_texel + sample) / float(n);\n"
++    "      uv_texel = (float(n-1) * uv_texel + s) / float(n);\n"
+     "    }\n"
+     "  }\n"
+     "}\n"
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glshader-add-glBindFragDataLocation.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glshader-add-glBindFragDataLocation.patch
new file mode 100755
index 0000000..57e9d1a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glshader-add-glBindFragDataLocation.patch
@@ -0,0 +1,77 @@
+From 38221080181229d520522a20bcb1663ca19f7aff Mon Sep 17 00:00:00 2001
+From: Matthew Waters <matthew@centricular.com>
+Date: Thu, 31 Mar 2016 19:25:32 +1100
+Subject: [PATCH 2/3] glshader: add glBindFragDataLocation
+
+There are some cases where it's needed for binding in/out variables in shaders.
+e.g. glsl 150 (gl 3.2) doesn't support the 'layout (location = ?)' specifiers in
+the shader source so we have to bind them ourselves.
+
+Upstream-Status: Backport [1.9.1]
+---
+ gst-libs/gst/gl/glprototypes/shaders.h | 10 ++++++++++
+ gst-libs/gst/gl/gstglshader.c          | 20 ++++++++++++++++++++
+ gst-libs/gst/gl/gstglshader.h          |  1 +
+ 3 files changed, 31 insertions(+)
+
+diff --git a/gst-libs/gst/gl/glprototypes/shaders.h b/gst-libs/gst/gl/glprototypes/shaders.h
+index 817e479..6d828db 100644
+--- a/gst-libs/gst/gl/glprototypes/shaders.h
++++ b/gst-libs/gst/gl/glprototypes/shaders.h
+@@ -362,3 +362,13 @@ GST_GL_EXT_FUNCTION (void, UniformMatrix3x4fv,
+ GST_GL_EXT_FUNCTION (void, UniformMatrix4x3fv,
+                      (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
+ GST_GL_EXT_END ()
++
++GST_GL_EXT_BEGIN (bind_frag_data,
++                  GST_GL_API_OPENGL | GST_GL_API_OPENGL3,
++                  3, 0,
++                  255, 255,
++                  "\0",
++                  "\0")
++GST_GL_EXT_FUNCTION (void, BindFragDataLocation,
++                     (GLuint program, GLuint index, const GLchar * name))
++GST_GL_EXT_END ()
+diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c
+index 9d96784..9f09236 100644
+--- a/gst-libs/gst/gl/gstglshader.c
++++ b/gst-libs/gst/gl/gstglshader.c
+@@ -1306,3 +1306,23 @@ gst_gl_shader_bind_attribute_location (GstGLShader * shader, GLuint index,
+ 
+   gl->BindAttribLocation (priv->program_handle, index, name);
+ }
++
++void
++gst_gl_shader_bind_frag_data_location (GstGLShader * shader,
++    guint index, const gchar * name)
++{
++  GstGLShaderPrivate *priv;
++  GstGLFuncs *gl;
++
++  g_return_if_fail (shader != NULL);
++  if (!_ensure_program (shader))
++    g_return_if_fail (shader->priv->program_handle);
++  priv = shader->priv;
++  gl = shader->context->gl_vtable;
++  g_return_if_fail (gl->BindFragDataLocation);
++
++  GST_TRACE_OBJECT (shader, "binding program %i frag data \'%s\' location %i",
++      (int) priv->program_handle, name, index);
++
++  gl->BindFragDataLocation (priv->program_handle, index, name);
++}
+diff --git a/gst-libs/gst/gl/gstglshader.h b/gst-libs/gst/gl/gstglshader.h
+index 21410e2..2200b89 100644
+--- a/gst-libs/gst/gl/gstglshader.h
++++ b/gst-libs/gst/gl/gstglshader.h
+@@ -104,6 +104,7 @@ void gst_gl_shader_set_uniform_matrix_4x3fv (GstGLShader *shader, const gchar *n
+ 
+ gint gst_gl_shader_get_attribute_location  (GstGLShader *shader, const gchar *name);
+ void gst_gl_shader_bind_attribute_location (GstGLShader * shader, guint index, const gchar * name);
++void gst_gl_shader_bind_frag_data_location (GstGLShader * shader, guint index, const gchar * name);
+ 
+ G_END_DECLS
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch
new file mode 100755
index 0000000..79ef4c8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch
@@ -0,0 +1,51 @@
+From 764fd69f8482eca9f925cefe72ebae090ae59d43 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Tue, 19 Apr 2016 19:27:33 +0300
+Subject: [PATCH 3/3] glcolorconvert: GLES3 deprecates texture2D() and it does
+ not work at all in newer versions than 3.3
+
+Use the newer texture() function instead. This fixes glimagesink and other
+things on various Android devices.
+
+Upstream-Status: Backport [1.9.1]
+
+https://bugzilla.gnome.org/show_bug.cgi?id=765266
+---
+ gst-libs/gst/gl/gstglcolorconvert.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
+index c23624f..f472d5d 100644
+--- a/gst-libs/gst/gl/gstglcolorconvert.c
++++ b/gst-libs/gst/gl/gstglcolorconvert.c
+@@ -1716,7 +1716,7 @@ _unbind_buffer (GstGLColorConvert * convert)
+ 
+ static gchar *
+ _mangle_texture_access (const gchar * str, GstGLTextureTarget from,
+-    GstGLTextureTarget to, GstGLAPI gl_api)
++    GstGLTextureTarget to, GstGLAPI gl_api, guint gl_major, guint gl_minor)
+ {
+   const gchar *from_str = NULL, *to_str = NULL;
+   gchar *ret, *tmp;
+@@ -1730,7 +1730,8 @@ _mangle_texture_access (const gchar * str, GstGLTextureTarget from,
+   if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+     from_str = "texture2D";
+ 
+-  if (gl_api & GST_GL_API_OPENGL3) {
++  if ((gl_api & GST_GL_API_OPENGL3) || (gl_api & GST_GL_API_GLES2
++          && gl_major >= 3)) {
+     to_str = "texture";
+   } else {
+     if (to == GST_GL_TEXTURE_TARGET_2D)
+@@ -1898,7 +1899,7 @@ _mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from,
+ 
+   _mangle_version_profile_from_gl_api (gl_api, gl_major, gl_minor, version,
+       profile);
+-  tmp = _mangle_texture_access (str, from, to, gl_api);
++  tmp = _mangle_texture_access (str, from, to, gl_api, gl_major, gl_minor);
+   tmp2 = _mangle_sampler_type (tmp, from, to);
+   g_free (tmp);
+   tmp =
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0008-gl-implement-GstGLMemoryEGL.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0008-gl-implement-GstGLMemoryEGL.patch
new file mode 100644
index 0000000..a67381c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0008-gl-implement-GstGLMemoryEGL.patch
@@ -0,0 +1,495 @@
+From 806bbe75b0b6947f589bce3960c28fee51b5c6c2 Mon Sep 17 00:00:00 2001
+From: Gwang Yoon Hwang <yoon@igalia.com>
+Date: Thu, 21 Jan 2016 22:18:17 +0900
+Subject: [PATCH] gl: implement GstGLMemoryEGL
+
+Because current GstEGLImageMemory does not inherit GstGLMemory, GLUpload
+allocates additional GLMemory and upload the decoded contents from the decoder
+which uses EGLImage (e.g. gst-omx in RPi).
+
+This work adds GstGLMemoryEGL to avoid this overhead. Decoders allocate
+GstGLMemoryEGL and decode its contents to the EGLImage of GstGLMemoryEGL.  And
+GLUpload uses this memory without allocation of additional textures and blit
+operations.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=760916
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ gst-libs/gst/gl/egl/Makefile.am        |   2 +
+ gst-libs/gst/gl/egl/gstgldisplay_egl.c |   2 +
+ gst-libs/gst/gl/egl/gstglmemoryegl.c   | 241 +++++++++++++++++++++++++++++++++
+ gst-libs/gst/gl/egl/gstglmemoryegl.h   | 108 +++++++++++++++
+ gst-libs/gst/gl/gstgl_fwd.h            |   4 +
+ gst-libs/gst/gl/gstgldisplay.c         |   2 +
+ gst-libs/gst/gl/gstglupload.c          |   8 ++
+ 7 files changed, 367 insertions(+)
+ create mode 100644 gst-libs/gst/gl/egl/gstglmemoryegl.c
+ create mode 100644 gst-libs/gst/gl/egl/gstglmemoryegl.h
+
+diff --git a/gst-libs/gst/gl/egl/Makefile.am b/gst-libs/gst/gl/egl/Makefile.am
+index b808178..878f16c 100644
+--- a/gst-libs/gst/gl/egl/Makefile.am
++++ b/gst-libs/gst/gl/egl/Makefile.am
+@@ -5,6 +5,7 @@ noinst_LTLIBRARIES = libgstgl-egl.la
+ libgstgl_egl_la_SOURCES = \
+ 	gstgldisplay_egl.c \
+ 	gstglcontext_egl.c \
++	gstglmemoryegl.c \
+ 	gsteglimagememory.c
+ 
+ noinst_HEADERS =
+@@ -13,6 +14,7 @@ libgstgl_eglincludedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/gl/egl
+ libgstgl_eglinclude_HEADERS = \
+ 	gstgldisplay_egl.h \
+ 	gstglcontext_egl.h \
++	gstglmemoryegl.h \
+ 	gsteglimagememory.h \
+ 	gstegl.h
+ 
+diff --git a/gst-libs/gst/gl/egl/gstgldisplay_egl.c b/gst-libs/gst/gl/egl/gstgldisplay_egl.c
+index 9acf4f0..20816c2 100644
+--- a/gst-libs/gst/gl/egl/gstgldisplay_egl.c
++++ b/gst-libs/gst/gl/egl/gstgldisplay_egl.c
+@@ -24,6 +24,7 @@
+ 
+ #include <gst/gl/egl/gstgldisplay_egl.h>
+ #include <gst/gl/egl/gsteglimagememory.h>
++#include <gst/gl/egl/gstglmemoryegl.h>
+ 
+ GST_DEBUG_CATEGORY_STATIC (gst_gl_display_debug);
+ #define GST_CAT_DEFAULT gst_gl_display_debug
+@@ -51,6 +52,7 @@ gst_gl_display_egl_init (GstGLDisplayEGL * display_egl)
+   display_egl->foreign_display = FALSE;
+ 
+   gst_egl_image_memory_init ();
++  gst_gl_memory_egl_init_once ();
+ }
+ 
+ static void
+diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.c b/gst-libs/gst/gl/egl/gstglmemoryegl.c
+new file mode 100644
+index 0000000..03cf432
+--- /dev/null
++++ b/gst-libs/gst/gl/egl/gstglmemoryegl.c
+@@ -0,0 +1,241 @@
++/*
++ * GStreamer
++ * Copyright (C) 2012 Collabora Ltd.
++ *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
++ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
++ * Copyright (C) 2015 Igalia
++ *    Author: Gwang Yoon Hwang <yoon@igalia.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
++ * Boston, MA 02110-1301, USA.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include <string.h>
++
++#include <gst/gl/egl/gstglmemoryegl.h>
++
++static GstAllocator *_gl_memory_egl_allocator;
++
++GST_DEBUG_CATEGORY_STATIC (GST_CAT_GL_MEMORY);
++#define GST_CAT_DEFAULT GST_CAT_GL_MEMORY
++
++#define parent_class gst_gl_memory_egl_allocator_parent_class
++G_DEFINE_TYPE (GstGLMemoryEGLAllocator, gst_gl_memory_egl_allocator,
++    GST_TYPE_GL_MEMORY_ALLOCATOR);
++
++gboolean
++gst_is_gl_memory_egl (GstMemory * mem)
++{
++  return mem != NULL && mem->allocator != NULL
++      && g_type_is_a (G_OBJECT_TYPE (mem->allocator),
++      GST_TYPE_GL_MEMORY_EGL_ALLOCATOR);
++}
++
++static GstGLMemoryEGL *
++_gl_mem_get_parent (GstGLMemoryEGL * gl_mem)
++{
++  GstGLMemoryEGL *parent = (GstGLMemoryEGL *)gl_mem->mem.mem.mem.parent;
++  return parent ? parent : gl_mem;
++}
++
++EGLImageKHR
++gst_gl_memory_egl_get_image (GstGLMemoryEGL * mem)
++{
++  g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)),
++                        EGL_NO_IMAGE_KHR);
++  return _gl_mem_get_parent(mem)->image;
++}
++
++EGLDisplay
++gst_gl_memory_egl_get_display (GstGLMemoryEGL * mem)
++{
++  g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)), NULL);
++  return GST_GL_CONTEXT_EGL(_gl_mem_get_parent(mem))->egl_display;
++}
++
++GstVideoGLTextureOrientation
++gst_gl_memory_egl_get_orientation (GstGLMemoryEGL * mem)
++{
++  g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)),
++      GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL);
++
++  return _gl_mem_get_parent(mem)->orientation;
++}
++
++void
++gst_gl_memory_egl_set_orientation (GstGLMemoryEGL * mem,
++    GstVideoGLTextureOrientation orientation)
++{
++  g_return_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)));
++
++  _gl_mem_get_parent(mem)->orientation = orientation;
++}
++
++static GstMemory *
++_gl_mem_alloc (GstAllocator * allocator, gsize size,
++               GstAllocationParams * params)
++{
++  g_warning ("Use gst_gl_base_memory_allocator_alloc() to allocate from this "
++      "GstGLMemoryEGL allocator");
++
++  return NULL;
++}
++
++static void
++_gl_mem_destroy (GstGLMemoryEGL * mem)
++{
++  /* Shared memory should not destroy all the data */
++  if (!mem->mem.mem.mem.parent) {
++    GstGLContextEGL *context = GST_GL_CONTEXT_EGL(mem->mem.mem.context);
++    context->eglDestroyImage (context->egl_display, mem->image);
++  }
++
++  GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class)->destroy ((GstGLBaseMemory
++          *) mem);
++}
++
++static void
++_gl_mem_init (GstGLMemoryEGL * mem, GstAllocator * allocator,
++    GstMemory * parent, GstGLContext * context, GstGLTextureTarget target,
++    GstAllocationParams * params, GstVideoInfo * info,
++    guint plane, GstVideoAlignment * valign, gpointer user_data,
++    GDestroyNotify notify)
++{
++  gst_gl_memory_init ((GstGLMemory *) mem, allocator, parent,
++      context, target, params, info, plane, valign, user_data, notify);
++}
++
++static GstGLMemoryEGL *
++_gl_mem_egl_alloc (GstGLBaseMemoryAllocator * allocator,
++    GstGLVideoAllocationParams * params)
++{
++  guint alloc_flags = params->parent.alloc_flags;
++  GstGLMemoryEGL *mem;
++
++  g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
++      NULL);
++  g_return_val_if_fail ((alloc_flags &
++      GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) == 0, NULL);
++  g_return_val_if_fail ((alloc_flags &
++      GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) == 0, NULL);
++
++  mem = g_new0 (GstGLMemoryEGL, 1);
++  mem->image = EGL_NO_IMAGE_KHR;
++
++  _gl_mem_init (mem, GST_ALLOCATOR_CAST (allocator), NULL,
++      params->parent.context, params->target, params->parent.alloc_params,
++      params->v_info, params->plane, params->valign, params->parent.user_data,
++      params->parent.notify);
++
++  return mem;
++}
++
++static gboolean
++_gl_mem_create (GstGLMemoryEGL * gl_mem, GError ** error)
++{
++  GstGLContextEGL *context = GST_GL_CONTEXT_EGL (gl_mem->mem.mem.context);
++  GstGLBaseMemoryAllocatorClass *alloc_class;
++
++  if (!gst_gl_context_check_feature (GST_GL_CONTEXT (context),
++                                     "EGL_KHR_image_base")) {
++    g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_WRONG_API,
++                 "EGL_KHR_image_base is not supported");
++    return FALSE;
++  }
++
++  alloc_class = GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class);
++  if (!alloc_class->create ((GstGLBaseMemory *) gl_mem, error))
++    return FALSE;
++
++  gl_mem->image = context->eglCreateImage (context->egl_display,
++      context->egl_context, EGL_GL_TEXTURE_2D_KHR,
++      (EGLClientBuffer) GSIZE_TO_POINTER (gl_mem->mem.tex_id), NULL);
++
++  GST_TRACE ("Generating EGLImage handle:%p from a texture:%u",
++              gl_mem->image, gl_mem->mem.tex_id);
++
++  if (eglGetError () != EGL_SUCCESS) {
++    g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
++                 "Failed to create EGLImage");
++    return FALSE;
++  }
++
++  return TRUE;
++}
++
++static GstMemory *
++_gl_mem_copy (GstGLMemoryEGL * src, gssize offset, gssize size)
++{
++  GST_CAT_ERROR (GST_CAT_GL_MEMORY, "GstGLMemoryEGL does not support copy");
++  return NULL;
++}
++
++static void
++gst_gl_memory_egl_allocator_class_init (GstGLMemoryEGLAllocatorClass * klass)
++{
++  GstGLBaseMemoryAllocatorClass *gl_base;
++  GstGLMemoryAllocatorClass *gl_tex;
++  GstAllocatorClass *allocator_class;
++
++  gl_tex = (GstGLMemoryAllocatorClass *) klass;
++  gl_base = (GstGLBaseMemoryAllocatorClass *) klass;
++  allocator_class = (GstAllocatorClass *) klass;
++
++  gl_base->alloc = (GstGLBaseMemoryAllocatorAllocFunction) _gl_mem_egl_alloc;
++  gl_base->create = (GstGLBaseMemoryAllocatorCreateFunction) _gl_mem_create;
++  gl_base->destroy = (GstGLBaseMemoryAllocatorDestroyFunction) _gl_mem_destroy;
++  gl_tex->copy = (GstGLBaseMemoryAllocatorCopyFunction) _gl_mem_copy;
++
++  allocator_class->alloc = _gl_mem_alloc;
++}
++
++static void
++gst_gl_memory_egl_allocator_init (GstGLMemoryEGLAllocator * allocator)
++{
++  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
++
++  alloc->mem_type = GST_GL_MEMORY_EGL_ALLOCATOR_NAME;
++
++  GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
++}
++
++/**
++ * gst_gl_memory_egl_init_once:
++ *
++ * Initializes the GL Memory allocator. It is safe to call this function
++ * multiple times.  This must be called before any other GstGLMemoryEGL operation.
++ */
++void
++gst_gl_memory_egl_init_once (void)
++{
++  static volatile gsize _init = 0;
++
++  if (g_once_init_enter (&_init)) {
++    gst_gl_memory_init_once ();
++
++    GST_DEBUG_CATEGORY_INIT (GST_CAT_GL_MEMORY, "glmemory", 0,
++        "OpenGL Texture with EGLImage memory");
++
++    _gl_memory_egl_allocator = g_object_new (GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, NULL);
++
++    gst_allocator_register (GST_GL_MEMORY_EGL_ALLOCATOR_NAME,
++        gst_object_ref (_gl_memory_egl_allocator));
++    g_once_init_leave (&_init, 1);
++  }
++}
+diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.h b/gst-libs/gst/gl/egl/gstglmemoryegl.h
+new file mode 100644
+index 0000000..7256d33
+--- /dev/null
++++ b/gst-libs/gst/gl/egl/gstglmemoryegl.h
+@@ -0,0 +1,108 @@
++/*
++ * GStreamer
++ * Copyright (C) 2012 Collabora Ltd.
++ *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
++ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
++ * Boston, MA 02110-1301, USA.
++ */
++
++#ifndef _GST_GL_MEMORY_EGL_H_
++#define _GST_GL_MEMORY_EGL_H_
++
++#include <gst/gst.h>
++#include <gst/gstallocator.h>
++#include <gst/gstmemory.h>
++#include <gst/video/video.h>
++
++#include <gst/gl/gl.h>
++#include "gstglcontext_egl.h"
++
++#include <gst/gl/gstglmemory.h>
++
++G_BEGIN_DECLS
++
++#define GST_TYPE_GL_MEMORY_EGL_ALLOCATOR (gst_gl_memory_egl_allocator_get_type())
++GType gst_gl_memory_egl_allocator_get_type(void);
++
++#define GST_IS_GL_MEMORY_EGL_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR))
++#define GST_IS_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR))
++#define GST_GL_MEMORY_EGL_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocatorClass))
++#define GST_GL_MEMORY_EGL_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocator))
++#define GST_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLAllocatorClass))
++#define GST_GL_MEMORY_EGL_ALLOCATOR_CAST(obj)            ((GstGLMemoryEGLAllocator *)(obj))
++
++typedef void (*GstEGLImageDestroyNotify) (GstGLContextEGL * context,
++    gpointer data);
++
++typedef struct _GstEGLImageMemory GstEGLImageMemory;
++
++
++/**
++ * GstGLMemoryEGL:
++ *
++ * Private instance
++ */
++struct _GstGLMemoryEGL
++{
++  GstGLMemory mem;
++
++  EGLImageKHR image;
++  GstVideoGLTextureOrientation orientation;
++};
++
++/**
++ * GST_GL_MEMORY_EGL_ALLOCATOR:
++ *
++ * The name of the GL Memory EGL allocator
++ */
++#define GST_GL_MEMORY_EGL_ALLOCATOR_NAME "GLMemoryEGL"
++
++void          gst_gl_memory_egl_init_once               (void);
++gboolean      gst_is_gl_memory_egl                      (GstMemory * mem);
++
++EGLImageKHR   gst_gl_memory_egl_get_image               (GstGLMemoryEGL * mem);
++EGLDisplay    gst_gl_memory_egl_get_display             (GstGLMemoryEGL * mem);
++
++GstVideoGLTextureOrientation gst_gl_memory_egl_get_orientation
++                                                        (GstGLMemoryEGL * mem);
++
++void          gst_gl_memory_egl_set_orientation         (GstGLMemoryEGL * mem,
++                                      GstVideoGLTextureOrientation orientation);
++
++/**
++ * GstGLAllocator
++ *
++ * Opaque #GstGLAllocator struct
++ */
++struct _GstGLMemoryEGLAllocator
++{
++  GstGLMemoryAllocator parent;
++};
++
++/**
++ * GstGLAllocatorClass:
++ *
++ * The #GstGLAllocatorClass only contains private data
++ */
++struct _GstGLMemoryEGLAllocatorClass
++{
++  GstGLMemoryAllocatorClass parent_class;
++};
++
++G_END_DECLS
++
++#endif /* _GST_GL_MEMORY_EGL_H_ */
+diff --git a/gst-libs/gst/gl/gstgl_fwd.h b/gst-libs/gst/gl/gstgl_fwd.h
+index fb64ff6..73e17bd 100644
+--- a/gst-libs/gst/gl/gstgl_fwd.h
++++ b/gst-libs/gst/gl/gstgl_fwd.h
+@@ -55,6 +55,10 @@ typedef struct _GstGLMemoryPBO GstGLMemoryPBO;
+ typedef struct _GstGLMemoryPBOAllocator GstGLMemoryPBOAllocator;
+ typedef struct _GstGLMemoryPBOAllocatorClass GstGLMemoryPBOAllocatorClass;
+ 
++typedef struct _GstGLMemoryEGL GstGLMemoryEGL;
++typedef struct _GstGLMemoryEGLAllocator GstGLMemoryEGLAllocator;
++typedef struct _GstGLMemoryEGLAllocatorClass GstGLMemoryEGLAllocatorClass;
++
+ typedef struct _GstGLSLStage        GstGLSLStage;
+ typedef struct _GstGLSLStagePrivate GstGLSLStagePrivate;
+ typedef struct _GstGLSLStageClass   GstGLSLStageClass;
+diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c
+index 60dec6a..34770d0 100644
+--- a/gst-libs/gst/gl/gstgldisplay.c
++++ b/gst-libs/gst/gl/gstgldisplay.c
+@@ -68,6 +68,7 @@
+ #if GST_GL_HAVE_PLATFORM_EGL
+ #include <gst/gl/egl/gstgldisplay_egl.h>
+ #include <gst/gl/egl/gsteglimagememory.h>
++#include <gst/gl/egl/gstglmemoryegl.h>
+ #endif
+ 
+ GST_DEBUG_CATEGORY_STATIC (gst_context);
+@@ -144,6 +145,7 @@ gst_gl_display_init (GstGLDisplay * display)
+ 
+ #if GST_GL_HAVE_PLATFORM_EGL
+   gst_egl_image_memory_init ();
++  gst_gl_memory_egl_init_once ();
+ #endif
+ }
+ 
+diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
+index 16ed5ea..73a9029 100644
+--- a/gst-libs/gst/gl/gstglupload.c
++++ b/gst-libs/gst/gl/gstglupload.c
+@@ -29,6 +29,7 @@
+ 
+ #if GST_GL_HAVE_PLATFORM_EGL
+ #include "egl/gsteglimagememory.h"
++#include "egl/gstglmemoryegl.h"
+ #endif
+ 
+ #if GST_GL_HAVE_DMABUF
+@@ -301,6 +302,13 @@ _gl_memory_upload_propose_allocation (gpointer impl, GstQuery * decide_query,
+             context));
+     gst_query_add_allocation_param (query, allocator, &params);
+     gst_object_unref (allocator);
++
++#if GST_GL_HAVE_PLATFORM_EGL
++    allocator =
++        GST_ALLOCATOR (gst_allocator_find (GST_GL_MEMORY_EGL_ALLOCATOR_NAME));
++    gst_query_add_allocation_param (query, allocator, &params);
++    gst_object_unref (allocator);
++#endif
+   }
+ 
+   n_pools = gst_query_get_n_allocation_pools (query);
+-- 
+2.5.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch
new file mode 100644
index 0000000..c81fb0f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch
@@ -0,0 +1,32 @@
+From c6b37a80806f9128de47f1ccc3f2354f8d436bb6 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 24 Sep 2015 19:47:32 +0300
+Subject: [PATCH] glimagesink: Downrank to marginal
+
+On desktop, where there is good OpenGL, xvimagesink will come up first,
+on other platforms, OpenGL can't be trusted because it's either software (like
+in a VM) or broken (like on embedded)., so let ximagesink come above.
+
+Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=751684]
+
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ ext/gl/gstopengl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
+index a4b2540..0ccaacd 100644
+--- a/ext/gl/gstopengl.c
++++ b/ext/gl/gstopengl.c
+@@ -118,7 +118,7 @@ plugin_init (GstPlugin * plugin)
+ #endif
+ 
+   if (!gst_element_register (plugin, "glimagesink",
+-          GST_RANK_SECONDARY, gst_gl_image_sink_bin_get_type ())) {
++          GST_RANK_MARGINAL, gst_gl_image_sink_bin_get_type ())) {
+     return FALSE;
+   }
+ 
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bb
deleted file mode 100644
index 8eb47c2..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-include gstreamer1.0-plugins-bad.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \
-                    file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 \
-                    file://gst/tta/crc32.h;beginline=12;endline=29;md5=27db269c575d1e5317fffca2d33b3b50 \
-                    file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a"
-
-# Note: The mpg123 plugin was moved to gst-plugins-ugly prior to the 1.7.2
-# release, so this line should be removed during the update to 1.8.x
-# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=08d8aefcdaaf89ecb6dd53ec1e4f95cd42d01664
-PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123"
-
-# Note: The gsettings plug-in was dropped prior to the 1.7.2 release,
-# so this line should be removed during the update to 1.8.x
-# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=914291808ad10621d6a74031f3d46d45eef5a3a3
-EXTRA_OECONF += "--disable-gsettings"
-
-SRC_URI = " \
-    http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \
-    file://configure-allow-to-disable-libssh2.patch \
-    file://0001-glimagesink-Downrank-to-marginal.patch \
-    file://0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch \
-"
-
-SRC_URI[md5sum] = "4857adcafe41e4b9b8805cf88303bd55"
-SRC_URI[sha256sum] = "971b29101d6a9c5e3fe94d99d977a227f58f0b2d29b6ca2c7f292052542b3a61"
-
-S = "${WORKDIR}/gst-plugins-bad-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.3.bb
new file mode 100644
index 0000000..108f4db
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.3.bb
@@ -0,0 +1,26 @@
+include gstreamer1.0-plugins-bad.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \
+                    file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 \
+                    file://gst/tta/crc32.h;beginline=12;endline=29;md5=27db269c575d1e5317fffca2d33b3b50 \
+                    file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a"
+
+SRC_URI = " \
+    http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \
+    file://configure-allow-to-disable-libssh2.patch \
+    file://fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch \
+    file://avoid-including-sys-poll.h-directly.patch \
+    file://ensure-valid-sentinels-for-gst_structure_get-etc.patch \
+    file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \
+    file://0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch \
+    file://0003-glcolorconvert-implement-multiple-render-targets-for.patch \
+    file://0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch \
+    file://0005-glshader-add-glBindFragDataLocation.patch \
+    file://0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch \
+    file://0008-gl-implement-GstGLMemoryEGL.patch \
+    file://0009-glimagesink-Downrank-to-marginal.patch \
+"
+SRC_URI[md5sum] = "955281a43e98c5464563fa049e0a0911"
+SRC_URI[sha256sum] = "7899fcb18e6a1af2888b19c90213af018a57d741c6e72ec56b133bc73ec8509b"
+
+S = "${WORKDIR}/gst-plugins-bad-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb
index ef6581b..1370380 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb
@@ -8,7 +8,7 @@
                     file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a"
 
 SRC_URI = " \
-    git://anongit.freedesktop.org/gstreamer/gst-plugins-bad;name=base \
+    git://anongit.freedesktop.org/gstreamer/gst-plugins-bad;branch=1.8;name=base \
     git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \
     file://configure-allow-to-disable-libssh2.patch \
     file://fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch \
@@ -17,36 +17,16 @@
     file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \
 "
 
-PV = "1.7.2+git${SRCPV}"
+PV = "1.8.2+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
 
-SRCREV_base = "50ae46cc0f8827bf966920d9c221e5cf86e811ba"
-SRCREV_common = "a25397448942079002622be231e9ec49b985745a"
+SRCREV_base = "5e73b5a4843d9675246f4efec158624475ed9586"
+SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275"
 SRCREV_FORMAT = "base"
 
 S = "${WORKDIR}/git"
 
-# over-ride the default hls PACKAGECONFIG in gstreamer1.0-plugins-bad.inc to
-# pass an additional --with-hls-crypto=XXX option (new in 1.7.x) and switch HLS
-# AES decryption from nettle to openssl (ie a shared dependency with dtls).
-# This should move back to the common .inc once the main recipe updates to 1.8.x
-PACKAGECONFIG[hls] = "--enable-hls --with-hls-crypto=openssl,--disable-hls,openssl"
-
-# The tinyalsa plugin was added prior to the 1.7.2 release
-# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=c8bd74fa9a81398f57d976c478d2043f30188684
-PACKAGECONFIG[tinyalsa] = "--enable-tinyalsa,--disable-tinyalsa,tinyalsa"
-
-# The vulkan based video sink plugin was added prior to the 1.7.2 release
-# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=5de6dd9f40629562acf90e35e1fa58464d66617d
-PACKAGECONFIG[vulkan] = "--enable-vulkan,--disable-vulkan,libxcb"
-
-# The dependency-less netsim plugin was added prior to the 1.7.2 release
-# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=e3f9e854f08e82bfab11182c5a2aa6f9a0c73cd5
-EXTRA_OECONF += " \
-    --enable-netsim \
-"
-
 do_configure_prepend() {
 	${S}/autogen.sh --noconfigure
 }
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc
index 7381458..a04f155 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc
@@ -31,6 +31,7 @@
 PACKAGECONFIG[gio-unix-2.0] = "--enable-gio_unix_2_0,--disable-gio_unix_2_0,glib-2.0"
 PACKAGECONFIG[ivorbis]      = "--enable-ivorbis,--disable-ivorbis,tremor"
 PACKAGECONFIG[ogg]          = "--enable-ogg,--disable-ogg,libogg"
+PACKAGECONFIG[opus]         = "--enable-opus,--disable-opus,libopus"
 PACKAGECONFIG[pango]        = "--enable-pango,--disable-pango,pango"
 PACKAGECONFIG[theora]       = "--enable-theora,--disable-theora,libtheora"
 PACKAGECONFIG[visual]       = "--enable-libvisual,--disable-libvisual,libvisual"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
index 781e4d8..094bdac 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
@@ -24,7 +24,7 @@
 index 9361bf9..bc7f53a 100644
 --- a/gst-libs/gst/allocators/Makefile.am
 +++ b/gst-libs/gst/allocators/Makefile.am
-@@ -37,7 +37,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
+@@ -38,7 +38,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
  		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
  		--library=libgstallocators-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
@@ -37,7 +37,7 @@
 index 6d6de8d..dcc2fe0 100644
 --- a/gst-libs/gst/app/Makefile.am
 +++ b/gst-libs/gst/app/Makefile.am
-@@ -52,7 +52,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
+@@ -53,7 +53,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
  		--library=libgstapp-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
@@ -50,7 +50,7 @@
 index 275d222..2374196 100644
 --- a/gst-libs/gst/audio/Makefile.am
 +++ b/gst-libs/gst/audio/Makefile.am
-@@ -106,7 +106,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
+@@ -116,7 +116,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
  		--include=GstTag-@GST_API_VERSION@ \
@@ -63,7 +63,7 @@
 index 09b3d68..f545354 100644
 --- a/gst-libs/gst/fft/Makefile.am
 +++ b/gst-libs/gst/fft/Makefile.am
-@@ -64,7 +64,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO
+@@ -65,7 +65,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO
  		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
  		--library=libgstfft-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
@@ -76,7 +76,7 @@
 index 64d5eb0..91dc214 100644
 --- a/gst-libs/gst/pbutils/Makefile.am
 +++ b/gst-libs/gst/pbutils/Makefile.am
-@@ -94,7 +94,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
+@@ -99,7 +99,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
  		--include=GstTag-@GST_API_VERSION@ \
  		--include=GstVideo-@GST_API_VERSION@ \
  		--include=GstAudio-@GST_API_VERSION@ \
@@ -102,7 +102,7 @@
 index fdd01c1..f5445c1 100644
 --- a/gst-libs/gst/rtp/Makefile.am
 +++ b/gst-libs/gst/rtp/Makefile.am
-@@ -64,7 +64,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
+@@ -65,7 +65,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
  		--library=libgstrtp-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
@@ -115,7 +115,7 @@
 index ede5706..9b0b258 100644
 --- a/gst-libs/gst/rtsp/Makefile.am
 +++ b/gst-libs/gst/rtsp/Makefile.am
-@@ -71,7 +71,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+@@ -72,7 +72,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
  		--include=Gio-2.0 \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstSdp-@GST_API_VERSION@ \
@@ -128,7 +128,7 @@
 index a90f30b..0e149b8 100644
 --- a/gst-libs/gst/sdp/Makefile.am
 +++ b/gst-libs/gst/sdp/Makefile.am
-@@ -31,7 +31,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
+@@ -32,7 +32,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
  		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
  		--library=libgstsdp-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
@@ -141,7 +141,7 @@
 index c534a4d..cafafd3 100644
 --- a/gst-libs/gst/tag/Makefile.am
 +++ b/gst-libs/gst/tag/Makefile.am
-@@ -44,7 +44,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
+@@ -45,7 +45,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
  		--library=libgsttag-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
@@ -154,7 +154,7 @@
 index 5d31fa1..ac64eb3 100644
 --- a/gst-libs/gst/video/Makefile.am
 +++ b/gst-libs/gst/video/Makefile.am
-@@ -113,7 +113,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
+@@ -116,7 +116,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
  		--library=libgstvideo-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
index 85fcacb..0a8bc9b 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
@@ -24,7 +24,7 @@
 index bc7f53a..0ef5f86 100644
 --- a/gst-libs/gst/allocators/Makefile.am
 +++ b/gst-libs/gst/allocators/Makefile.am
-@@ -34,7 +34,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
+@@ -35,7 +35,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
  		--c-include "gst/allocators/allocators.h" \
  		-I$(top_srcdir)/gst-libs \
  		-I$(top_builddir)/gst-libs \
@@ -33,7 +33,7 @@
  		--library=libgstallocators-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--libtool="$(LIBTOOL)" \
-@@ -58,7 +58,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -59,7 +59,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		$(INTROSPECTION_COMPILER) \
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
@@ -46,7 +46,7 @@
 index dcc2fe0..dc076cb 100644
 --- a/gst-libs/gst/app/Makefile.am
 +++ b/gst-libs/gst/app/Makefile.am
-@@ -47,8 +47,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
+@@ -48,8 +48,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
  		--c-include "gst/app/app.h" \
  		-I$(top_srcdir)/gst-libs \
  		-I$(top_builddir)/gst-libs \
@@ -61,7 +61,7 @@
 index 2374196..295eb42 100644
 --- a/gst-libs/gst/audio/Makefile.am
 +++ b/gst-libs/gst/audio/Makefile.am
-@@ -96,12 +96,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
+@@ -106,12 +106,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
  		-I$(top_srcdir)/gst-libs \
  		-I$(top_builddir)/gst-libs \
  		--c-include "gst/audio/audio.h" \
@@ -78,7 +78,7 @@
  		--library-path="$(top_builddir)/gst-libs/gst/tag/" \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
-@@ -130,8 +130,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -140,8 +140,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
  		--includedir="$(top_builddir)/gst-libs/gst/tag/" \
@@ -93,7 +93,7 @@
 index f545354..1bb6243 100644
 --- a/gst-libs/gst/fft/Makefile.am
 +++ b/gst-libs/gst/fft/Makefile.am
-@@ -61,7 +61,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO
+@@ -62,7 +62,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO
  		--c-include "gst/fft/fft.h" \
  		-I$(top_srcdir)/gst-libs \
  		-I$(top_builddir)/gst-libs \
@@ -102,7 +102,7 @@
  		--library=libgstfft-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--libtool="$(LIBTOOL)" \
-@@ -85,7 +85,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -86,7 +86,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		$(INTROSPECTION_COMPILER) \
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
@@ -115,7 +115,7 @@
 index 91dc214..dc8e1d3 100644
 --- a/gst-libs/gst/pbutils/Makefile.am
 +++ b/gst-libs/gst/pbutils/Makefile.am
-@@ -79,14 +79,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
+@@ -84,14 +84,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
  		--c-include "gst/pbutils/pbutils.h" \
  		-I$(top_srcdir)/gst-libs \
  		-I$(top_builddir)/gst-libs \
@@ -134,7 +134,7 @@
  		--library-path="$(top_builddir)/gst-libs/gst/tag/" \
  		--library-path="$(top_builddir)/gst-libs/gst/video/" \
  		--library-path="$(top_builddir)/gst-libs/gst/audio/" \
-@@ -119,8 +119,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -124,8 +124,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		$(INTROSPECTION_COMPILER) \
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
@@ -175,7 +175,7 @@
 index f5445c1..527c0b4 100644
 --- a/gst-libs/gst/rtp/Makefile.am
 +++ b/gst-libs/gst/rtp/Makefile.am
-@@ -59,8 +59,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
+@@ -60,8 +60,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
  		--c-include "gst/rtp/rtp.h" \
  		-I$(top_builddir)/gst-libs \
  		-I$(top_srcdir)/gst-libs \
@@ -186,7 +186,7 @@
  		--library=libgstrtp-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
-@@ -87,8 +87,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -88,8 +88,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		$(INTROSPECTION_COMPILER) \
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
@@ -201,7 +201,7 @@
 index 9b0b258..4f6d9f8 100644
 --- a/gst-libs/gst/rtsp/Makefile.am
 +++ b/gst-libs/gst/rtsp/Makefile.am
-@@ -66,7 +66,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+@@ -67,7 +67,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
  		-I$(top_builddir)/gst-libs \
  		-I$(top_srcdir)/gst-libs \
  		--add-include-path=$(builddir)/../sdp \
@@ -210,7 +210,7 @@
  		--library=libgstrtsp-@GST_API_VERSION@.la \
  		--include=Gio-2.0 \
  		--include=Gst-@GST_API_VERSION@ \
-@@ -96,7 +96,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -97,7 +97,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
  		--includedir=$(builddir)/../sdp \
@@ -223,7 +223,7 @@
 index 0e149b8..9aa0512 100644
 --- a/gst-libs/gst/sdp/Makefile.am
 +++ b/gst-libs/gst/sdp/Makefile.am
-@@ -28,7 +28,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
+@@ -29,7 +29,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
  		--warn-all \
  		--c-include "gst/sdp/sdp.h" \
  		-I$(top_srcdir)/gst-libs \
@@ -232,7 +232,7 @@
  		--library=libgstsdp-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--libtool="$(LIBTOOL)" \
-@@ -52,7 +52,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -53,7 +53,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		$(INTROSPECTION_COMPILER) \
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
@@ -245,7 +245,7 @@
 index cafafd3..ba99279 100644
 --- a/gst-libs/gst/tag/Makefile.am
 +++ b/gst-libs/gst/tag/Makefile.am
-@@ -39,8 +39,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
+@@ -40,8 +40,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
  		--c-include "gst/tag/tag.h" \
  		-I$(top_srcdir)/gst-libs \
  		-I$(top_builddir)/gst-libs \
@@ -256,7 +256,7 @@
  		--library=libgsttag-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
-@@ -67,8 +67,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -68,8 +68,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		$(INTROSPECTION_COMPILER) \
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
@@ -271,7 +271,7 @@
 index ac64eb3..342c8c6 100644
 --- a/gst-libs/gst/video/Makefile.am
 +++ b/gst-libs/gst/video/Makefile.am
-@@ -108,8 +108,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
+@@ -111,8 +111,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
  		--c-include "gst/video/video.h" \
  		-I$(top_srcdir)/gst-libs \
  		-I$(top_builddir)/gst-libs \
@@ -282,7 +282,7 @@
  		--library=libgstvideo-@GST_API_VERSION@.la \
  		--include=Gst-@GST_API_VERSION@ \
  		--include=GstBase-@GST_API_VERSION@ \
-@@ -136,8 +136,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+@@ -139,8 +139,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
  		$(INTROSPECTION_COMPILER) \
  		--includedir=$(srcdir) \
  		--includedir=$(builddir) \
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
index 42d99c1..4adf605 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
@@ -14,7 +14,7 @@
 index 4f6d9f8..0afa370 100644
 --- a/gst-libs/gst/rtsp/Makefile.am
 +++ b/gst-libs/gst/rtsp/Makefile.am
-@@ -74,7 +74,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+@@ -75,7 +75,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
  		--libtool="$(LIBTOOL)" \
  		--pkg gio-2.0 \
  		--pkg gstreamer-@GST_API_VERSION@ \
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
index 7813915..b924e38 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
@@ -51,7 +51,7 @@
          GST_WARNING_OBJECT (self, "seek to 0 bytes failed");
        }
  
-@@ -1632,8 +1630,10 @@ gst_sub_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+@@ -1641,8 +1639,10 @@ gst_sub_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
        gst_event_parse_segment (event, &s);
        if (s->format == GST_FORMAT_TIME)
          gst_event_copy_segment (event, &self->segment);
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch
deleted file mode 100755
index 096a6f4..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 5be6ed00aad028d9cbb4e0c63af0be69d335c71e Mon Sep 17 00:00:00 2001
-From: Song Bing <b06498@freescale.com>
-Date: Fri, 11 Dec 2015 21:42:00 +0800
-Subject: [PATCH] convertframe: Support video crop when convert frame
-
-Get thumbnail will user convertframe to convert video frame to
-desired video format and size. But haven't process crop meta on
-the video buffer. Add support video crop.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=759329
-
-Upstream-Status: Backport [1.7.1]
-
----
- gst-libs/gst/video/convertframe.c | 65 +++++++++++++++++++++++++++++++++------
- 1 file changed, 56 insertions(+), 9 deletions(-)
-
-diff --git a/gst-libs/gst/video/convertframe.c b/gst-libs/gst/video/convertframe.c
-index aa9c3d3..942a51e 100644
---- a/gst-libs/gst/video/convertframe.c
-+++ b/gst-libs/gst/video/convertframe.c
-@@ -110,12 +110,23 @@ fail:
- static GstElement *
- build_convert_frame_pipeline (GstElement ** src_element,
-     GstElement ** sink_element, const GstCaps * from_caps,
--    const GstCaps * to_caps, GError ** err)
-+    GstVideoCropMeta * cmeta, const GstCaps * to_caps, GError ** err)
- {
--  GstElement *src = NULL, *csp = NULL, *vscale = NULL;
--  GstElement *sink = NULL, *encoder = NULL, *pipeline;
-+  GstElement *vcrop = NULL, *csp = NULL, *csp2 = NULL, *vscale = NULL;
-+  GstElement *src = NULL, *sink = NULL, *encoder = NULL, *pipeline;
-+  GstVideoInfo info;
-   GError *error = NULL;
- 
-+  if (cmeta) {
-+    if (!create_element ("videocrop", &vcrop, &error)) {
-+      g_warning
-+          ("build_convert_frame_pipeline: Buffer has crop metadata but videocrop element is not found. Cropping will be disabled");
-+    } else {
-+      if (!create_element ("videoconvert", &csp2, &error))
-+        goto no_elements;
-+    }
-+  }
-+
-   /* videoscale is here to correct for the pixel-aspect-ratio for us */
-   GST_DEBUG ("creating elements");
-   if (!create_element ("appsrc", &src, &error) ||
-@@ -133,15 +144,42 @@ build_convert_frame_pipeline (GstElement ** src_element,
- 
-   GST_DEBUG ("adding elements");
-   gst_bin_add_many (GST_BIN (pipeline), src, csp, vscale, sink, NULL);
-+  if (vcrop)
-+    gst_bin_add_many (GST_BIN (pipeline), vcrop, csp2, NULL);
- 
-   /* set caps */
-   g_object_set (src, "caps", from_caps, NULL);
-+  if (vcrop) {
-+    gst_video_info_from_caps (&info, from_caps);
-+    g_object_set (vcrop, "left", cmeta->x, NULL);
-+    g_object_set (vcrop, "top", cmeta->y, NULL);
-+    g_object_set (vcrop, "right", GST_VIDEO_INFO_WIDTH (&info) - cmeta->width,
-+        NULL);
-+    g_object_set (vcrop, "bottom",
-+        GST_VIDEO_INFO_HEIGHT (&info) - cmeta->height, NULL);
-+    GST_DEBUG ("crop meta [x,y,width,height]: %d %d %d %d", cmeta->x, cmeta->y,
-+        cmeta->width, cmeta->height);
-+  }
-   g_object_set (sink, "caps", to_caps, NULL);
- 
-   /* FIXME: linking is still way too expensive, profile this properly */
--  GST_DEBUG ("linking src->csp");
--  if (!gst_element_link_pads (src, "src", csp, "sink"))
--    goto link_failed;
-+  if (vcrop) {
-+    GST_DEBUG ("linking src->csp2");
-+    if (!gst_element_link_pads (src, "src", csp2, "sink"))
-+      goto link_failed;
-+
-+    GST_DEBUG ("linking csp2->vcrop");
-+    if (!gst_element_link_pads (csp2, "src", vcrop, "sink"))
-+      goto link_failed;
-+
-+    GST_DEBUG ("linking vcrop->csp");
-+    if (!gst_element_link_pads (vcrop, "src", csp, "sink"))
-+      goto link_failed;
-+  } else {
-+    GST_DEBUG ("linking src->csp");
-+    if (!gst_element_link_pads (src, "src", csp, "sink"))
-+      goto link_failed;
-+  }
- 
-   GST_DEBUG ("linking csp->vscale");
-   if (!gst_element_link_pads_full (csp, "src", vscale, "sink",
-@@ -193,8 +231,12 @@ no_elements:
-   {
-     if (src)
-       gst_object_unref (src);
-+    if (vcrop)
-+      gst_object_unref (vcrop);
-     if (csp)
-       gst_object_unref (csp);
-+    if (csp2)
-+      gst_object_unref (csp2);
-     if (vscale)
-       gst_object_unref (vscale);
-     if (sink)
-@@ -209,7 +251,11 @@ no_elements:
- no_pipeline:
-   {
-     gst_object_unref (src);
-+    if (vcrop)
-+      gst_object_unref (vcrop);
-     gst_object_unref (csp);
-+    if (csp2)
-+      gst_object_unref (csp2);
-     gst_object_unref (vscale);
-     gst_object_unref (sink);
- 
-@@ -282,7 +328,8 @@ gst_video_convert_sample (GstSample * sample, const GstCaps * to_caps,
-   }
- 
-   pipeline =
--      build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy, &err);
-+      build_convert_frame_pipeline (&src, &sink, from_caps,
-+      gst_buffer_get_video_crop_meta (buf), to_caps_copy, &err);
-   if (!pipeline)
-     goto no_pipeline;
- 
-@@ -646,8 +693,8 @@ gst_video_convert_sample_async (GstSample * sample,
-   }
- 
-   pipeline =
--      build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy,
--      &error);
-+      build_convert_frame_pipeline (&src, &sink, from_caps,
-+      gst_buffer_get_video_crop_meta (buf), to_caps_copy, &error);
-   if (!pipeline)
-     goto no_pipeline;
- 
--- 
-2.5.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch
index 3256717..5341e3c 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch
@@ -17,7 +17,7 @@
 index 6728e58..32daae4 100644
 --- a/gst/encoding/gstencodebin.c
 +++ b/gst/encoding/gstencodebin.c
-@@ -1138,8 +1138,7 @@ _create_stream_group (GstEncodeBin * ebin, GstEncodingProfile * sprof,
+@@ -1228,8 +1228,7 @@ _create_stream_group (GstEncodeBin * ebin, GstEncodingProfile * sprof,
     * We only use a 1buffer long queue here, the actual queueing will be done
     * in the input queue */
    last = sgroup->outqueue = gst_element_factory_make ("queue", NULL);
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch
index 284abbe..c8e6287 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch
@@ -19,7 +19,7 @@
 index 9b6c478..ae2294a
 --- a/gst-libs/gst/tag/gsttagdemux.c
 +++ b/gst-libs/gst/tag/gsttagdemux.c
-@@ -1708,6 +1708,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
+@@ -1769,6 +1769,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
        }
        break;
      }
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch
index 01e944d..413eff0 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch
@@ -25,8 +25,8 @@
 index 9c52aeb..26cacd6 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -747,9 +747,16 @@ AC_SUBST(FT2_CFLAGS)
- AC_SUBST(FT2_LIBS)
+@@ -752,9 +752,16 @@ AC_SUBST(FT2_CFLAGS)
+ fi dnl of EXT plugins
  
  dnl *** gio-unix-2.0 for tests/check/pipelines/tcp.c ***
 +AC_ARG_ENABLE([gio_unix_2_0],
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.6.3.bb
deleted file mode 100644
index 429dc93..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.6.3.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-include gstreamer1.0-plugins-base.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
-                    file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
-                    file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
-
-# Note: The dependency on freetype was dropped shortly after the 1.7.1 release
-# so these lines should be removed during the update to 1.8.x
-# http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=183610c035dd6955c9b3540b940aec50474af031
-DEPENDS += "freetype"
-EXTRA_OECONF += "--disable-freetypetest"
-
-SRC_URI = " \
-    http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \
-    file://get-caps-from-src-pad-when-query-caps.patch \
-    file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
-    file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \
-    file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch \
-    file://0005-convertframe-Support-video-crop-when-convert-frame.patch \
-"
-
-SRC_URI[md5sum] = "3ddde0ad598ef69f58d6a2e87f8b460f"
-SRC_URI[sha256sum] = "b6154f8fdba4877e95efd94610ef0ada4f0171cd12eb829a3c3c97345d9c7a75"
-
-S = "${WORKDIR}/gst-plugins-base-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.8.3.bb
new file mode 100644
index 0000000..986b5ac
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.8.3.bb
@@ -0,0 +1,19 @@
+include gstreamer1.0-plugins-base.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
+                    file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
+                    file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
+
+SRC_URI = " \
+    http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \
+    file://get-caps-from-src-pad-when-query-caps.patch \
+    file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
+    file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \
+    file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch \
+    file://make-gio_unix_2_0-dependency-configurable.patch \
+"
+
+SRC_URI[md5sum] = "4d03dd81828ea6b98a44c8f1ab7f4976"
+SRC_URI[sha256sum] = "114871d4d63606b4af424a8433cd923e4ff66896b244bb7ac97b9da47f71e79e"
+
+S = "${WORKDIR}/gst-plugins-base-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb
index 38a9fcc..3c2b504 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb
@@ -7,17 +7,21 @@
                     file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
 
 SRC_URI = " \
-    git://anongit.freedesktop.org/gstreamer/gst-plugins-base;name=base \
+    git://anongit.freedesktop.org/gstreamer/gst-plugins-base;branch=1.8;name=base \
     git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \
+    file://get-caps-from-src-pad-when-query-caps.patch \
+    file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
+    file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \
+    file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch \
     file://make-gio_unix_2_0-dependency-configurable.patch \
 "
 
-PV = "1.7.2+git${SRCPV}"
+PV = "1.8.2+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
 
-SRCREV_base = "97e108bebaa58821f4566a74cbf0135e93407c01"
-SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0"
+SRCREV_base = "70f3750773bf5dba4098f6d72d63aa6c84f1f539"
+SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275"
 SRCREV_FORMAT = "base"
 
 S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc
index 4621bf8..f1e30ab 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc
@@ -23,12 +23,12 @@
 PACKAGECONFIG[jack]       = "--enable-jack,--disable-jack,jack"
 PACKAGECONFIG[jpeg]       = "--enable-jpeg,--disable-jpeg,jpeg"
 PACKAGECONFIG[libpng]     = "--enable-libpng,--disable-libpng,libpng"
-PACKAGECONFIG[libv4l2]    = "--with-libv4l2,--without-libv4l2,libv4l2"
+PACKAGECONFIG[libv4l2]    = "--with-libv4l2,--without-libv4l2,v4l-utils"
 PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio"
 PACKAGECONFIG[soup]       = "--enable-soup,--disable-soup,libsoup-2.4"
 PACKAGECONFIG[speex]      = "--enable-speex,--disable-speex,speex"
 PACKAGECONFIG[taglib]     = "--enable-taglib,--disable-taglib,taglib"
-PACKAGECONFIG[v4l2]       = "--enable-gst_v4l2,--disable-gst_v4l2"
+PACKAGECONFIG[v4l2]       = "--enable-gst_v4l2 --enable-v4l2-probe,--disable-gst_v4l2"
 PACKAGECONFIG[vpx]        = "--enable-vpx,--disable-vpx,libvpx"
 PACKAGECONFIG[wavpack]    = "--enable-wavpack,--disable-wavpack,wavpack"
 PACKAGECONFIG[x11]        = "--enable-x,--disable-x,${X11DEPENDS}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch
old mode 100755
new mode 100644
index d1973d4..a2cbb70
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch
@@ -17,7 +17,7 @@
 index 7913d9a..1749d39 100644
 --- a/gst/rtp/gstrtpmp4gpay.c
 +++ b/gst/rtp/gstrtpmp4gpay.c
-@@ -390,6 +390,7 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
+@@ -391,6 +391,7 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
    const GValue *codec_data;
    const gchar *media_type = NULL;
    gboolean res;
@@ -25,7 +25,7 @@
  
    rtpmp4gpay = GST_RTP_MP4G_PAY (payload);
  
-@@ -400,7 +401,6 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
+@@ -401,7 +402,6 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
      GST_LOG_OBJECT (rtpmp4gpay, "got codec_data");
      if (G_VALUE_TYPE (codec_data) == GST_TYPE_BUFFER) {
        GstBuffer *buffer;
@@ -33,7 +33,7 @@
  
        buffer = gst_value_get_buffer (codec_data);
        GST_LOG_OBJECT (rtpmp4gpay, "configuring codec_data");
-@@ -426,6 +426,23 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
+@@ -427,6 +427,23 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
  
        rtpmp4gpay->config = gst_buffer_copy (buffer);
      }
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.6.3.bb
deleted file mode 100644
index 0b4f436..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.6.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-include gstreamer1.0-plugins-good.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-                    file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \
-                    file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
-
-SRC_URI = " \
-    http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
-    file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \
-"
-
-SRC_URI[md5sum] = "a1958df7aa498b42793e2f2048673815"
-SRC_URI[sha256sum] = "24b19db70b2a83461ebddfe20033db432dadfdb5d4b54ffb1dfa0d830134a177"
-
-S = "${WORKDIR}/gst-plugins-good-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.8.3.bb
new file mode 100644
index 0000000..5cc6578
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.8.3.bb
@@ -0,0 +1,17 @@
+include gstreamer1.0-plugins-good.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \
+                    file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
+
+SRC_URI = " \
+    http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
+    file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \
+    file://avoid-including-sys-poll.h-directly.patch \
+    file://ensure-valid-sentinel-for-gst_structure_get.patch \
+"
+
+SRC_URI[md5sum] = "473ebb1f15c67de99ddb6e4d027c0876"
+SRC_URI[sha256sum] = "a1d6579ba203a7734927c24b90bf6590d846c5a5fcec01a48201018c8ad2827a"
+
+S = "${WORKDIR}/gst-plugins-good-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb
index 9cadc9a..9b79af2 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb
@@ -7,18 +7,19 @@
                     file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
 
 SRC_URI = " \
-    git://anongit.freedesktop.org/gstreamer/gst-plugins-good;name=base \
+    git://anongit.freedesktop.org/gstreamer/gst-plugins-good;branch=1.8;name=base \
     git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \
     file://avoid-including-sys-poll.h-directly.patch \
     file://ensure-valid-sentinel-for-gst_structure_get.patch \
+    file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \
 "
 
-PV = "1.7.2+git${SRCPV}"
+PV = "1.8.2+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
 
-SRCREV_base = "1b6fdce67c15d59957e395b1957aa625322092d4"
-SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0"
+SRCREV_base = "9f73b5818f98cd045e7049bb313da1c943635109"
+SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275"
 SRCREV_FORMAT = "base"
 
 S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc
index aff2230..708ad7a 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc
@@ -9,7 +9,7 @@
 
 PACKAGECONFIG ??= " \
     ${GSTREAMER_ORC} \
-    a52dec lame mad mpeg2dec \
+    a52dec lame mpg123 mpeg2dec \
 "
 
 PACKAGECONFIG[a52dec]   = "--enable-a52dec,--disable-a52dec,liba52"
@@ -20,6 +20,7 @@
 PACKAGECONFIG[lame]     = "--enable-lame,--disable-lame,lame"
 PACKAGECONFIG[mad]      = "--enable-mad,--disable-mad,libmad"
 PACKAGECONFIG[mpeg2dec] = "--enable-mpeg2dec,--disable-mpeg2dec,mpeg2dec"
+PACKAGECONFIG[mpg123]   = "--enable-mpg123,--disable-mpg123,mpg123"
 PACKAGECONFIG[x264]     = "--enable-x264,--disable-x264,x264"
 
 EXTRA_OECONF += " \
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.6.3.bb
deleted file mode 100644
index 7edfb81..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.6.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-include gstreamer1.0-plugins-ugly.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-                    file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
-
-SRC_URI = " \
-    http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
-"
-
-SRC_URI[md5sum] = "dbd92afb3816cbfa90ab1f197144a2e2"
-SRC_URI[sha256sum] = "2fecf7b7c7882f8f62f1900048f4013f98c214fb3d3303d8d812245bb41fd064"
-
-S = "${WORKDIR}/gst-plugins-ugly-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.8.3.bb
new file mode 100644
index 0000000..2745937
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.8.3.bb
@@ -0,0 +1,13 @@
+include gstreamer1.0-plugins-ugly.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
+
+SRC_URI = " \
+    http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
+"
+
+SRC_URI[md5sum] = "4fc66c77253b0ad5ce224bda654b2e7d"
+SRC_URI[sha256sum] = "6fa2599fdd072d31fbaf50c34af406e2be944a010b1f4eab67a5fe32a0310693"
+
+S = "${WORKDIR}/gst-plugins-ugly-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb
index 69afe4c..22cca3a 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb
@@ -6,24 +6,20 @@
                     file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
 
 SRC_URI = " \
-    git://anongit.freedesktop.org/gstreamer/gst-plugins-ugly;name=base \
+    git://anongit.freedesktop.org/gstreamer/gst-plugins-ugly;branch=1.8;name=base \
     git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \
 "
 
-PV = "1.7.2+git${SRCPV}"
+PV = "1.8.2+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
 
-SRCREV_base = "8bdb68edbc605e21314b608e7a39bdbaab7302b8"
-SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0"
+SRCREV_base = "79fe43c00925455a37fab6fc428e7f08655a9bbd"
+SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275"
 SRCREV_FORMAT = "base"
 
 S = "${WORKDIR}/git"
 
-# The mpg123 plugin was added prior to the 1.7.2 release
-# https://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/commit/?id=43bd45ba991ef3247957ca37cdcb52f4b8c0acb1
-PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123"
-
 do_configure_prepend() {
 	${S}/autogen.sh --noconfigure
 }
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
index 2dcec50..9cfcec3 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
@@ -5,7 +5,7 @@
 
 DEPENDS = "gstreamer1.0 glib-2.0-native"
 
-inherit autotools pkgconfig upstream-version-is-even gobject-introspection
+inherit autotools pkgconfig upstream-version-is-even gobject-introspection gtk-doc
 
 acpaths = "-I ${S}/common/m4 -I ${S}/m4"
 
@@ -33,8 +33,21 @@
 delete_pkg_m4_file() {
 	# This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
 	rm "${S}/common/m4/pkg.m4" || true
+	rm -f "${S}/common/m4/gtk-doc.m4"
 }
 
-do_configure[prefuncs] += " delete_pkg_m4_file"
+# gstreamer is not using system-wide makefiles (which we patch in gtkdoc recipe,
+# but its own custom ones, which we have to patch here
+patch_gtk_doc_makefiles() {
+        # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries
+        # instead of libtool wrapper or running them directly
+        # Also substitute a bogus plugin scanner, as trying to run the real one is causing issues during build on x86_64.
+        sed -i \
+           -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \
+           -e "s|\$(GTKDOC_EXTRA_ENVIRONMENT)|\$(GTKDOC_EXTRA_ENVIRONMENT) GST_PLUGIN_SCANNER_1_0=\$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy|" \
+           ${S}/common/gtk-doc*mak
+}
+
+do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles"
 
 PACKAGES_DYNAMIC = "^${PN}-.*"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc
index ae6d364..13ba40d 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc
@@ -13,12 +13,26 @@
 
 S = "${WORKDIR}/${PNREAL}-${PV}"
 
-inherit autotools pkgconfig upstream-version-is-even gobject-introspection
+inherit autotools pkgconfig upstream-version-is-even gobject-introspection gtk-doc
+
+# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well
+LIBV = "1.0"
+require gst-plugins-package.inc
 
 delete_pkg_m4_file() {
         # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
         rm "${S}/common/m4/pkg.m4" || true
 }
 
-do_configure[prefuncs] += " delete_pkg_m4_file"
+# gstreamer is not using system-wide makefiles (which we patch in gtkdoc recipe,
+# but its own custom ones, which we have to patch here
+patch_gtk_doc_makefiles() {
+        # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries
+        # instead of libtool wrapper or running them directly
+        sed -i \
+           -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \
+           ${S}/common/gtk-doc*mak
+}
+
+do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles"
 
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.6.2.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.6.2.bb
deleted file mode 100644
index 5bdae6c..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.6.2.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-include gstreamer1.0-rtsp-server.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
-
-SRC_URI[md5sum] = "a1cafefb5fc14ac5d7e7d8cdbdfa9694"
-SRC_URI[sha256sum] = "0f51f9879556c0950203c766b09a1b62f1f25b17f9a7d516e01b13ecf93c8858"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.8.3.bb
new file mode 100644
index 0000000..17059d0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.8.3.bb
@@ -0,0 +1,6 @@
+include gstreamer1.0-rtsp-server.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
+
+SRC_URI[md5sum] = "e4b07b10dd65b6c26c9ca5f72e59297b"
+SRC_URI[sha256sum] = "010f06800c1c957851d1352e5ec7a8ba3ce6a857fec1b8afc7d1a9e5f53288bf"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc
index 10b4668..cb0bd82 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc
@@ -8,7 +8,7 @@
 
 DEPENDS = "glib-2.0 glib-2.0-native libcap libxml2 bison-native flex-native"
 
-inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection
+inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection gtk-doc
 
 # This way common/m4/introspection.m4 will come first
 # (it has a custom INTROSPECTION_INIT macro, and so must be used instead of our common introspection.m4 file)
@@ -20,16 +20,16 @@
 
 PACKAGECONFIG ??= ""
 
-PACKAGECONFIG[check] = "--enable-check,--disable-check"
 PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
 PACKAGECONFIG[tests] = "--enable-tests,--disable-tests"
 PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind,"
+PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks,"
+PACKAGECONFIG[trace-historic] = "--enable-trace,--disable-trace,"
 
 EXTRA_OECONF = " \
     --disable-dependency-tracking \
     --disable-docbook \
     --disable-examples \
-    --disable-gtk-doc \
 "
 
 CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no"
@@ -49,9 +49,22 @@
 delete_pkg_m4_file() {
         # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
         rm "${S}/common/m4/pkg.m4" || true
+        rm -f "${S}/common/m4/gtk-doc.m4"
 }
 
-do_configure[prefuncs] += " delete_pkg_m4_file"
+# gstreamer is not using system-wide makefiles (which we patch in gtkdoc recipe,
+# but its own custom ones, which we have to patch here
+patch_gtk_doc_makefiles() {
+        # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries
+        # instead of libtool wrapper or running them directly
+        # Also substitute a bogus plugin scanner, as trying to run the real one is causing issues during build on x86_64.
+        sed -i \
+           -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \
+           -e "s|\$(GTKDOC_EXTRA_ENVIRONMENT)|\$(GTKDOC_EXTRA_ENVIRONMENT) GST_PLUGIN_SCANNER_1_0=\$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy|" \
+           ${S}/common/gtk-doc*mak
+}
+
+do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles"
 
 do_compile_prepend() {
         export GIR_EXTRA_LIBS_PATH="${B}/gst/.libs:${B}/libs/gst/base/.libs"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch
deleted file mode 100644
index 94f5cc5..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 6b26f3dbf9bf577d71534ab7410de66d06e46ba2 Mon Sep 17 00:00:00 2001
-From: Carlos Rafael Giani <dv@pseudoterminal.org>
-Date: Sat, 6 Apr 2013 23:52:11 +0200
-Subject: [PATCH] Fix crash with gst-inspect Chris Lord <chris@openedhand.com>
-
-Upstream-Status: Pending
-
-Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
----
- tools/gst-inspect.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/gst-inspect.c b/tools/gst-inspect.c
-index 23b7c44..b79b02e 100644
---- a/tools/gst-inspect.c
-+++ b/tools/gst-inspect.c
-@@ -1556,7 +1556,7 @@ main (int argc, char *argv[])
-   g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE);
-   g_option_context_add_group (ctx, gst_init_get_option_group ());
-   if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
--    g_printerr ("Error initializing: %s\n", err->message);
-+    g_printerr ("Error initializing: %s\n", err ? err->message : "(null)");
-     return -1;
-   }
-   g_option_context_free (ctx);
--- 
-1.8.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.6.3.bb
deleted file mode 100644
index ba1b83b..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.6.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-include gstreamer1.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
-                    file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
-
-SRC_URI = " \
-    http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \
-    file://0001-Fix-crash-with-gst-inspect.patch \
-"
-
-SRC_URI[md5sum] = "b4cdeb2b9cb20dd6ac022a4f417eae0d"
-SRC_URI[sha256sum] = "22f9568d67b87cf700a111f381144bd37cb93790a77e4e331db01fe854a37f24"
-
-S = "${WORKDIR}/gstreamer-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.8.3.bb
new file mode 100644
index 0000000..d3561eb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.8.3.bb
@@ -0,0 +1,13 @@
+include gstreamer1.0.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
+                    file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
+
+SRC_URI = " \
+    http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \
+"
+
+SRC_URI[md5sum] = "e88dad542df9d986822e982105d2b530"
+SRC_URI[sha256sum] = "66b37762d4fdcd63bce5a2bec57e055f92420e95037361609900278c0db7c53f"
+
+S = "${WORKDIR}/gstreamer-${PV}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb
index 7715bb2..6112f2a 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb
@@ -6,25 +6,20 @@
                     file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
 
 SRC_URI = " \
-    git://anongit.freedesktop.org/gstreamer/gstreamer;name=base \
+    git://anongit.freedesktop.org/gstreamer/gstreamer;branch=1.8;name=base \
     git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \
 "
 
-PV = "1.7.2+git${SRCPV}"
+PV = "1.8.2+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
 
-SRCREV_base = "9e33bfa2c7a5f43da2c49b0a8235fd43cba9feaf"
-SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0"
+SRCREV_base = "3de8a4f728a7194a12b784ec4085f6a8e7d9b5bd"
+SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275"
 SRCREV_FORMAT = "base"
 
 S = "${WORKDIR}/git"
 
-# The option to configure tracer hooks was added prior to the 1.7.2 release
-# https://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=e5ca47236e4df4683707f0bcf99181a937d358d5
-PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks,"
-PACKAGECONFIG[trace-historic] = "--enable-trace,--disable-trace,"
-
 do_configure_prepend() {
 	${S}/autogen.sh --noconfigure
 }
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/lame/lame/lame-3.99.5_fix_for_automake-1.12.x.patch b/import-layers/yocto-poky/meta/recipes-multimedia/lame/lame/lame-3.99.5_fix_for_automake-1.12.x.patch
index 571a1d0..51baef2 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/lame/lame/lame-3.99.5_fix_for_automake-1.12.x.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/lame/lame/lame-3.99.5_fix_for_automake-1.12.x.patch
@@ -4,7 +4,7 @@
 | doc/man/Makefile.am:3: error: automatic de-ANSI-fication support has been removed
 | autoreconf: automake failed with exit status: 1
 
-Signed-Off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/07/13
 
 Index: lame-3.99.5/configure.in
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/add-pkgconfig.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/add-pkgconfig.patch
deleted file mode 100644
index b49dc8c..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/add-pkgconfig.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Here is a patch for adding pkg-config support to libmad.
-It would make life a bit easier for distro maintainers if this was applied.
-In case you didn't know, pkg-config is a tool for providing LDFLAGS and
-CFLAGS for packages using shared libraries. It's on freedesktop.org.
-Debian has already been distributing the pkg-config file mad.pc with
-libmad for some time, and people developing on debian (notably xmms2 
-developers) have started relying on this support being present, causing
-some confusion for people installing from source and on some BSDs which
-do not provide mad.pc (google: pkgconfig libmad).
-
-EMH
-
-Upstream-Status: Inappropriate [configuration]
-
---h31gzZEtNLTqOjlF
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: attachment; filename=&quot;libmad-0.15.1b-pkgconfig.patch&quot;
-
-diff -Naur libmad-0.15.1b.old/configure.ac libmad-0.15.1b/configure.ac
---- libmad-0.15.1b.old/configure.ac	2004-01-23 10:41:32.000000000 +0100
-+++ libmad-0.15.1b/configure.ac	2004-08-07 02:25:24.633462168 +0200
-@@ -429,5 +429,5 @@
- dnl AC_SUBST(LTLIBOBJS)
- 
- AC_CONFIG_FILES([Makefile msvc++/Makefile  \
--	libmad.list])
-+	libmad.list mad.pc])
- AC_OUTPUT
-diff -Naur libmad-0.15.1b.old/mad.pc.in libmad-0.15.1b/mad.pc.in
---- libmad-0.15.1b.old/mad.pc.in	1970-01-01 01:00:00.000000000 +0100
-+++ libmad-0.15.1b/mad.pc.in	2004-08-07 02:04:59.617692872 +0200
-@@ -0,0 +1,14 @@
-+# libmad pkg-config source file
-+
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+
-+Name: mad
-+Description: MPEG Audio Decoder
-+Version: @VERSION@
-+Requires:
-+Conflicts:
-+Libs: -L${libdir} -lmad -lm
-+Cflags: -I${includedir}
-diff -Naur libmad-0.15.1b.old/Makefile.am libmad-0.15.1b/Makefile.am
---- libmad-0.15.1b.old/Makefile.am	2004-02-17 03:02:03.000000000 +0100
-+++ libmad-0.15.1b/Makefile.am	2004-08-07 02:03:19.859858368 +0200
-@@ -24,6 +24,9 @@
- SUBDIRS =		
- DIST_SUBDIRS =		msvc++
- 
-+pkgconfigdir =		$(libdir)/pkgconfig
-+pkgconfig_DATA =	mad.pc
-+
- lib_LTLIBRARIES =	libmad.la
- include_HEADERS =	mad.h
- 
-@@ -34,7 +37,8 @@
- minimad_LDADD =		libmad.la
- 
- EXTRA_DIST =		mad.h.sed  \
--			CHANGES COPYRIGHT CREDITS README TODO VERSION
-+			CHANGES COPYRIGHT CREDITS README TODO VERSION \
-+			mad.pc.in
- 
- exported_headers =	version.h fixed.h bit.h timer.h stream.h frame.h  \
- 			synth.h decoder.h
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/automake-foreign.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/automake-foreign.patch
deleted file mode 100644
index 3e54424..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/automake-foreign.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Pass foreign to AM_INIT_AUTOMAKE so it doesn't enforce GNU strictness.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/configure.ac b/configure.ac
-index e602fd3..e075b86 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -29 +29 @@ AC_CONFIG_SRCDIR([decoder.h])
--AM_INIT_AUTOMAKE
-+AM_INIT_AUTOMAKE([foreign])
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch
deleted file mode 100644
index 01c7aa3..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-gcc 4.4 did this: The MIPS port no longer recognizes the h  asm constraint. It was necessary to remove this constraint in order to avoid generating unpredictable code sequences. 
-
-so the libmad build with gcc-4.5.0 was failing.
-
-Found a solution here:
-
-http://us.generation-nt.com/answer/bug-568418-libmad0-dev-mpg321-compilation-errors-mips-mipsel-architectures-help-169033451.html
-
-Upstream-Status: Pending
-
-2010/07/29
-Nitin A Kamble <nitin.a.kamble@intel.com>
-
-Index: libmad-0.15.1b/fixed.h
-===================================================================
---- libmad-0.15.1b.orig/fixed.h
-+++ libmad-0.15.1b/fixed.h
-@@ -297,6 +297,15 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t
- 
- /* --- MIPS ---------------------------------------------------------------- */
- 
-+# elif defined(FPM_MIPS) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
-+    typedef unsigned int u64_di_t __attribute__ ((mode (DI)));
-+#   define MAD_F_MLX(hi, lo, x, y) \
-+    do { \
-+        u64_di_t __ll = (u64_di_t) (x) * (y); \
-+        hi = __ll >> 32; \
-+        lo = __ll; \
-+     } while (0)
-+
- # elif defined(FPM_MIPS)
- 
- /*
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/no-force-mem.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/no-force-mem.patch
deleted file mode 100644
index d5e6d20..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/no-force-mem.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-This option no longer exists in gcc 3.4.1
-
-RP - 18/07/2008
-
-Upstream-Status: Inappropriate [configuration]
-
-Index: libmad-0.15.1b/configure.ac
-===================================================================
---- libmad-0.15.1b.orig/configure.ac	2008-07-18 15:45:30.000000000 +0100
-+++ libmad-0.15.1b/configure.ac	2008-07-18 15:45:37.000000000 +0100
-@@ -140,7 +140,6 @@
-     case "$optimize" in
- 	-O|"-O "*)
- 	    optimize="-O"
--	    optimize="$optimize -fforce-mem"
- 	    optimize="$optimize -fforce-addr"
- 	    : #x optimize="$optimize -finline-functions"
- 	    : #- optimize="$optimize -fstrength-reduce"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/obsolete_automake_macros.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/obsolete_automake_macros.patch
deleted file mode 100644
index cc87d29..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad/obsolete_automake_macros.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Submitted [https://sourceforge.net/tracker/?group_id=12349&atid=112349]
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurd libmad-0.15.1b/configure.ac libmad-0.15.1b/configure.ac
---- libmad-0.15.1b/configure.ac	2004-01-23 11:41:32.000000000 +0200
-+++ libmad-0.15.1b/configure.ac	2013-01-03 08:28:23.718693697 +0200
-@@ -28,7 +28,7 @@
-
- AM_INIT_AUTOMAKE
-
--AM_CONFIG_HEADER([config.h])
-+AC_CONFIG_HEADERS([config.h])
-
- dnl System type.
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad_0.15.1b.bb b/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad_0.15.1b.bb
deleted file mode 100644
index d431abd..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libmad/libmad_0.15.1b.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "MPEG Audio Decoder library"
-HOMEPAGE = "http://sourceforge.net/projects/mad/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=12349&atid=112349"
-LICENSE = "GPLv2+"
-LICENSE_FLAGS = "commercial"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-			file://COPYRIGHT;md5=8e55eb14894e782b84488d5a239bc23d \
-			file://version.h;beginline=1;endline=8;md5=aa07311dd39288d4349f28e1de516454"
-SECTION = "libs"
-DEPENDS = "libid3tag"
-PR = "r3"
-
-SRC_URI = "ftp://ftp.mars.org/pub/mpeg/libmad-${PV}.tar.gz \
-           file://no-force-mem.patch \
-           file://add-pkgconfig.patch \
-           file://fix_for_mips_with_gcc-4.5.0.patch \
-           file://obsolete_automake_macros.patch \
-           file://automake-foreign.patch \
-"
-
-SRC_URI[md5sum] = "1be543bc30c56fb6bea1d7bf6a64e66c"
-SRC_URI[sha256sum] = "bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690" 
-
-S = "${WORKDIR}/libmad-${PV}"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "-enable-speed --enable-shared"
-EXTRA_OECONF_append_arm = " --enable-fpm=arm"
-
-do_configure_prepend () {
-#	damn picky automake...
-	touch NEWS AUTHORS ChangeLog
-}
-
-ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libpng/libpng_1.6.21.bb b/import-layers/yocto-poky/meta/recipes-multimedia/libpng/libpng_1.6.21.bb
deleted file mode 100644
index 58cef1f..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libpng/libpng_1.6.21.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "PNG image format decoding library"
-HOMEPAGE = "http://www.libpng.org/"
-SECTION = "libs"
-LICENSE = "Libpng"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=06a1b6fde6d93170bb72201c8000bf3d \
-                    file://png.h;endline=112;md5=9a8b5f83e1e8046df672deab87f235be"
-DEPENDS = "zlib"
-
-SRC_URI = "${GENTOO_MIRROR}/libpng-${PV}.tar.xz \
-          "
-SRC_URI[md5sum] = "3bacb4728f6694a64ad9052769d6a4ce"
-SRC_URI[sha256sum] = "6c8f1849eb9264219bf5d703601e5abe92a58651ecae927a03d1a1aa15ee2083"
-
-BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
-
-inherit autotools binconfig-disabled pkgconfig
-
-# Work around missing symbols
-EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off" ,d)}"
-
-PACKAGES =+ "${PN}-tools"
-
-FILES_${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libpng/libpng_1.6.24.bb b/import-layers/yocto-poky/meta/recipes-multimedia/libpng/libpng_1.6.24.bb
new file mode 100644
index 0000000..f91ab7f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libpng/libpng_1.6.24.bb
@@ -0,0 +1,25 @@
+SUMMARY = "PNG image format decoding library"
+HOMEPAGE = "http://www.libpng.org/"
+SECTION = "libs"
+LICENSE = "Libpng"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5089214833586ba444048fd1dbbc76a4 \
+                    file://png.h;endline=149;md5=376d8ff7f69b7c4ad3a09f4672cec696"
+DEPENDS = "zlib"
+
+SRC_URI = "${GENTOO_MIRROR}/libpng-${PV}.tar.xz \
+          "
+SRC_URI[md5sum] = "ffcdbd549814787fa8010c372e35ff25"
+SRC_URI[sha256sum] = "7932dc9e5e45d55ece9d204e90196bbb5f2c82741ccb0f7e10d07d364a6fd6dd"
+
+BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
+
+inherit autotools binconfig-disabled pkgconfig
+
+# Work around missing symbols
+EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off" ,d)}"
+
+PACKAGES =+ "${PN}-tools"
+
+FILES_${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.26.bb b/import-layers/yocto-poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.26.bb
deleted file mode 100644
index 80435d4..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.26.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Audio format Conversion library"
-HOMEPAGE = "http://www.mega-nerd.com/libsndfile"
-AUTHOR = "Erik de Castro Lopo"
-DEPENDS = "flac libogg libvorbis sqlite3"
-SECTION = "libs/multimedia"
-LICENSE = "LGPLv2.1"
-
-SRC_URI = "http://www.mega-nerd.com/libsndfile/files/libsndfile-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "ec810a0c60c08772a8a5552704b63393"
-SRC_URI[sha256sum] = "cd6520ec763d1a45573885ecb1f8e4e42505ac12180268482a44b28484a25092"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e77fe93202736b47c07035910f47974a"
-
-S = "${WORKDIR}/libsndfile-${PV}"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)}"
-PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
-
-inherit autotools lib_package pkgconfig
-
-do_configure_prepend_arm() {
-	export ac_cv_sys_largefile_source=1
-	export ac_cv_sys_file_offset_bits=64
-}
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.27.bb b/import-layers/yocto-poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.27.bb
new file mode 100644
index 0000000..ec41719
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.27.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Audio format Conversion library"
+HOMEPAGE = "http://www.mega-nerd.com/libsndfile"
+AUTHOR = "Erik de Castro Lopo"
+DEPENDS = "flac libogg libvorbis sqlite3"
+SECTION = "libs/multimedia"
+LICENSE = "LGPLv2.1"
+
+SRC_URI = "http://www.mega-nerd.com/libsndfile/files/libsndfile-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "fd1d97c6077f03b5d984d7956ffedb7a"
+SRC_URI[sha256sum] = "a391952f27f4a92ceb2b4c06493ac107896ed6c76be9a613a4731f076d30fac0"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e77fe93202736b47c07035910f47974a"
+
+S = "${WORKDIR}/libsndfile-${PV}"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)}"
+PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
+
+inherit autotools lib_package pkgconfig
+
+do_configure_prepend_arm() {
+	export ac_cv_sys_largefile_source=1
+	export ac_cv_sys_file_offset_bits=64
+}
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch
new file mode 100644
index 0000000..39c5059
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch
@@ -0,0 +1,137 @@
+From f94a29a822f5528d2334592760fbb7938f15eb55 Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Sat, 26 Dec 2015 17:32:03 +0000
+Subject: [PATCH] * libtiff/tif_getimage.c: fix out-of-bound reads in
+ TIFFRGBAImage interface in case of unsupported values of
+ SamplesPerPixel/ExtraSamples for LogLUV / CIELab. Add explicit call to
+ TIFFRGBAImageOK() in TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by
+ limingxing and CVE-2015-8683 reported by zzf of Alibaba.
+
+Upstream-Status: Backport
+CVE: CVE-2015-8665
+CVE: CVE-2015-8683
+https://github.com/vadz/libtiff/commit/f94a29a822f5528d2334592760fbb7938f15eb55
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ ChangeLog              |  8 ++++++++
+ libtiff/tif_getimage.c | 35 ++++++++++++++++++++++-------------
+ 2 files changed, 30 insertions(+), 13 deletions(-)
+
+Index: tiff-4.0.6/libtiff/tif_getimage.c
+===================================================================
+--- tiff-4.0.6.orig/libtiff/tif_getimage.c
++++ tiff-4.0.6/libtiff/tif_getimage.c
+@@ -182,20 +182,22 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[102
+ 				    "Planarconfiguration", td->td_planarconfig);
+ 				return (0);
+ 			}
+-			if( td->td_samplesperpixel != 3 )
++			if( td->td_samplesperpixel != 3 || colorchannels != 3 )
+             {
+                 sprintf(emsg,
+-                        "Sorry, can not handle image with %s=%d",
+-                        "Samples/pixel", td->td_samplesperpixel);
++                        "Sorry, can not handle image with %s=%d, %s=%d",
++                        "Samples/pixel", td->td_samplesperpixel,
++                        "colorchannels", colorchannels);
+                 return 0;
+             }
+ 			break;
+ 		case PHOTOMETRIC_CIELAB:
+-            if( td->td_samplesperpixel != 3 || td->td_bitspersample != 8 )
++            if( td->td_samplesperpixel != 3 || colorchannels != 3 || td->td_bitspersample != 8 )
+             {
+                 sprintf(emsg,
+-                        "Sorry, can not handle image with %s=%d and %s=%d",
++                        "Sorry, can not handle image with %s=%d, %s=%d and %s=%d",
+                         "Samples/pixel", td->td_samplesperpixel,
++                        "colorchannels", colorchannels,
+                         "Bits/sample", td->td_bitspersample);
+                 return 0;
+             }
+@@ -255,6 +257,9 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, T
+ 	int colorchannels;
+ 	uint16 *red_orig, *green_orig, *blue_orig;
+ 	int n_color;
++	
++	if( !TIFFRGBAImageOK(tif, emsg) )
++		return 0;
+ 
+ 	/* Initialize to normal values */
+ 	img->row_offset = 0;
+@@ -2508,29 +2513,33 @@ PickContigCase(TIFFRGBAImage* img)
+ 		case PHOTOMETRIC_RGB:
+ 			switch (img->bitspersample) {
+ 				case 8:
+-					if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
++					if (img->alpha == EXTRASAMPLE_ASSOCALPHA &&
++						img->samplesperpixel >= 4)
+ 						img->put.contig = putRGBAAcontig8bittile;
+-					else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
++					else if (img->alpha == EXTRASAMPLE_UNASSALPHA &&
++							 img->samplesperpixel >= 4)
+ 					{
+ 						if (BuildMapUaToAa(img))
+ 							img->put.contig = putRGBUAcontig8bittile;
+ 					}
+-					else
++					else if( img->samplesperpixel >= 3 )
+ 						img->put.contig = putRGBcontig8bittile;
+ 					break;
+ 				case 16:
+-					if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
++					if (img->alpha == EXTRASAMPLE_ASSOCALPHA &&
++						img->samplesperpixel >=4 )
+ 					{
+ 						if (BuildMapBitdepth16To8(img))
+ 							img->put.contig = putRGBAAcontig16bittile;
+ 					}
+-					else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
++					else if (img->alpha == EXTRASAMPLE_UNASSALPHA &&
++							 img->samplesperpixel >=4 )
+ 					{
+ 						if (BuildMapBitdepth16To8(img) &&
+ 						    BuildMapUaToAa(img))
+ 							img->put.contig = putRGBUAcontig16bittile;
+ 					}
+-					else
++					else if( img->samplesperpixel >=3 )
+ 					{
+ 						if (BuildMapBitdepth16To8(img))
+ 							img->put.contig = putRGBcontig16bittile;
+@@ -2539,7 +2548,7 @@ PickContigCase(TIFFRGBAImage* img)
+ 			}
+ 			break;
+ 		case PHOTOMETRIC_SEPARATED:
+-			if (buildMap(img)) {
++			if (img->samplesperpixel >=4 && buildMap(img)) {
+ 				if (img->bitspersample == 8) {
+ 					if (!img->Map)
+ 						img->put.contig = putRGBcontig8bitCMYKtile;
+@@ -2635,7 +2644,7 @@ PickContigCase(TIFFRGBAImage* img)
+ 			}
+ 			break;
+ 		case PHOTOMETRIC_CIELAB:
+-			if (buildMap(img)) {
++			if (img->samplesperpixel == 3 && buildMap(img)) {
+ 				if (img->bitspersample == 8)
+ 					img->put.contig = initCIELabConversion(img);
+ 				break;
+Index: tiff-4.0.6/ChangeLog
+===================================================================
+--- tiff-4.0.6.orig/ChangeLog
++++ tiff-4.0.6/ChangeLog
+@@ -1,3 +1,11 @@
++2015-12-26  Even Rouault <even.rouault at spatialys.com>
++
++   * libtiff/tif_getimage.c: fix out-of-bound reads in TIFFRGBAImage
++   interface in case of unsupported values of SamplesPerPixel/ExtraSamples
++   for LogLUV / CIELab. Add explicit call to TIFFRGBAImageOK() in
++   TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by limingxing and
++   CVE-2015-8683 reported by zzf of Alibaba.
++
+ 2015-09-12  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+ 
+ 	* libtiff 4.0.6 released.
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8781.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8781.patch
new file mode 100644
index 0000000..0846f0f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8781.patch
@@ -0,0 +1,195 @@
+From aaab5c3c9d2a2c6984f23ccbc79702610439bc65 Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Sun, 27 Dec 2015 16:25:11 +0000
+Subject: [PATCH] * libtiff/tif_luv.c: fix potential out-of-bound writes in
+ decode functions in non debug builds by replacing assert()s by regular if
+ checks (bugzilla #2522). Fix potential out-of-bound reads in case of short
+ input data.
+
+Upstream-Status: Backport
+
+https://github.com/vadz/libtiff/commit/aaab5c3c9d2a2c6984f23ccbc79702610439bc65
+hand applied Changelog changes
+
+CVE: CVE-2015-8781
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+---
+ ChangeLog         |  7 +++++++
+ libtiff/tif_luv.c | 55 ++++++++++++++++++++++++++++++++++++++++++++-----------
+ 2 files changed, 51 insertions(+), 11 deletions(-)
+
+Index: tiff-4.0.4/ChangeLog
+===================================================================
+--- tiff-4.0.4.orig/ChangeLog
++++ tiff-4.0.4/ChangeLog
+@@ -1,3 +1,10 @@
++2015-12-27  Even Rouault <even.rouault at spatialys.com>
++
++	* libtiff/tif_luv.c: fix potential out-of-bound writes in decode
++	functions in non debug builds by replacing assert()s by regular if
++	checks (bugzilla #2522).
++	Fix potential out-of-bound reads in case of short input data.
++
+ 2015-12-26  Even Rouault <even.rouault at spatialys.com>
+ 
+ 	* libtiff/tif_getimage.c: fix out-of-bound reads in TIFFRGBAImage
+Index: tiff-4.0.4/libtiff/tif_luv.c
+===================================================================
+--- tiff-4.0.4.orig/libtiff/tif_luv.c
++++ tiff-4.0.4/libtiff/tif_luv.c
+@@ -202,7 +202,11 @@ LogL16Decode(TIFF* tif, uint8* op, tmsiz
+ 	if (sp->user_datafmt == SGILOGDATAFMT_16BIT)
+ 		tp = (int16*) op;
+ 	else {
+-		assert(sp->tbuflen >= npixels);
++		if(sp->tbuflen < npixels) {
++			TIFFErrorExt(tif->tif_clientdata, module,
++						 "Translation buffer too short");
++			return (0);
++		}
+ 		tp = (int16*) sp->tbuf;
+ 	}
+ 	_TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0]));
+@@ -211,9 +215,11 @@ LogL16Decode(TIFF* tif, uint8* op, tmsiz
+ 	cc = tif->tif_rawcc;
+ 	/* get each byte string */
+ 	for (shft = 2*8; (shft -= 8) >= 0; ) {
+-		for (i = 0; i < npixels && cc > 0; )
++		for (i = 0; i < npixels && cc > 0; ) {
+ 			if (*bp >= 128) {		/* run */
+-				rc = *bp++ + (2-128);   /* TODO: potential input buffer overrun when decoding corrupt or truncated data */
++				if( cc < 2 )
++					break;
++				rc = *bp++ + (2-128);
+ 				b = (int16)(*bp++ << shft);
+ 				cc -= 2;
+ 				while (rc-- && i < npixels)
+@@ -223,6 +229,7 @@ LogL16Decode(TIFF* tif, uint8* op, tmsiz
+ 				while (--cc && rc-- && i < npixels)
+ 					tp[i++] |= (int16)*bp++ << shft;
+ 			}
++		}
+ 		if (i != npixels) {
+ #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+ 			TIFFErrorExt(tif->tif_clientdata, module,
+@@ -268,13 +275,17 @@ LogLuvDecode24(TIFF* tif, uint8* op, tms
+ 	if (sp->user_datafmt == SGILOGDATAFMT_RAW)
+ 		tp = (uint32 *)op;
+ 	else {
+-		assert(sp->tbuflen >= npixels);
++		if(sp->tbuflen < npixels) {
++			TIFFErrorExt(tif->tif_clientdata, module,
++						 "Translation buffer too short");
++			return (0);
++		}
+ 		tp = (uint32 *) sp->tbuf;
+ 	}
+ 	/* copy to array of uint32 */
+ 	bp = (unsigned char*) tif->tif_rawcp;
+ 	cc = tif->tif_rawcc;
+-	for (i = 0; i < npixels && cc > 0; i++) {
++	for (i = 0; i < npixels && cc >= 3; i++) {
+ 		tp[i] = bp[0] << 16 | bp[1] << 8 | bp[2];
+ 		bp += 3;
+ 		cc -= 3;
+@@ -325,7 +336,11 @@ LogLuvDecode32(TIFF* tif, uint8* op, tms
+ 	if (sp->user_datafmt == SGILOGDATAFMT_RAW)
+ 		tp = (uint32*) op;
+ 	else {
+-		assert(sp->tbuflen >= npixels);
++		if(sp->tbuflen < npixels) {
++			TIFFErrorExt(tif->tif_clientdata, module,
++						 "Translation buffer too short");
++			return (0);
++		}
+ 		tp = (uint32*) sp->tbuf;
+ 	}
+ 	_TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0]));
+@@ -334,11 +349,13 @@ LogLuvDecode32(TIFF* tif, uint8* op, tms
+ 	cc = tif->tif_rawcc;
+ 	/* get each byte string */
+ 	for (shft = 4*8; (shft -= 8) >= 0; ) {
+-		for (i = 0; i < npixels && cc > 0; )
++		for (i = 0; i < npixels && cc > 0; ) {
+ 			if (*bp >= 128) {		/* run */
++				if( cc < 2 )
++					break;
+ 				rc = *bp++ + (2-128);
+ 				b = (uint32)*bp++ << shft;
+-				cc -= 2;                /* TODO: potential input buffer overrun when decoding corrupt or truncated data */
++				cc -= 2;
+ 				while (rc-- && i < npixels)
+ 					tp[i++] |= b;
+ 			} else {			/* non-run */
+@@ -346,6 +363,7 @@ LogLuvDecode32(TIFF* tif, uint8* op, tms
+ 				while (--cc && rc-- && i < npixels)
+ 					tp[i++] |= (uint32)*bp++ << shft;
+ 			}
++		}
+ 		if (i != npixels) {
+ #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+ 			TIFFErrorExt(tif->tif_clientdata, module,
+@@ -413,6 +431,7 @@ LogLuvDecodeTile(TIFF* tif, uint8* bp, t
+ static int
+ LogL16Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ {
++	static const char module[] = "LogL16Encode";
+ 	LogLuvState* sp = EncoderState(tif);
+ 	int shft;
+ 	tmsize_t i;
+@@ -433,7 +452,11 @@ LogL16Encode(TIFF* tif, uint8* bp, tmsiz
+ 		tp = (int16*) bp;
+ 	else {
+ 		tp = (int16*) sp->tbuf;
+-		assert(sp->tbuflen >= npixels);
++		if(sp->tbuflen < npixels) {
++			TIFFErrorExt(tif->tif_clientdata, module,
++						 "Translation buffer too short");
++			return (0);
++		}
+ 		(*sp->tfunc)(sp, bp, npixels);
+ 	}
+ 	/* compress each byte string */
+@@ -506,6 +529,7 @@ LogL16Encode(TIFF* tif, uint8* bp, tmsiz
+ static int
+ LogLuvEncode24(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ {
++	static const char module[] = "LogLuvEncode24";
+ 	LogLuvState* sp = EncoderState(tif);
+ 	tmsize_t i;
+ 	tmsize_t npixels;
+@@ -521,7 +545,11 @@ LogLuvEncode24(TIFF* tif, uint8* bp, tms
+ 		tp = (uint32*) bp;
+ 	else {
+ 		tp = (uint32*) sp->tbuf;
+-		assert(sp->tbuflen >= npixels);
++		if(sp->tbuflen < npixels) {
++			TIFFErrorExt(tif->tif_clientdata, module,
++						 "Translation buffer too short");
++			return (0);
++		}
+ 		(*sp->tfunc)(sp, bp, npixels);
+ 	}
+ 	/* write out encoded pixels */
+@@ -553,6 +581,7 @@ LogLuvEncode24(TIFF* tif, uint8* bp, tms
+ static int
+ LogLuvEncode32(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ {
++	static const char module[] = "LogLuvEncode32";
+ 	LogLuvState* sp = EncoderState(tif);
+ 	int shft;
+ 	tmsize_t i;
+@@ -574,7 +603,11 @@ LogLuvEncode32(TIFF* tif, uint8* bp, tms
+ 		tp = (uint32*) bp;
+ 	else {
+ 		tp = (uint32*) sp->tbuf;
+-		assert(sp->tbuflen >= npixels);
++		if(sp->tbuflen < npixels) {
++			TIFFErrorExt(tif->tif_clientdata, module,
++						 "Translation buffer too short");
++			return (0);
++		}
+ 		(*sp->tfunc)(sp, bp, npixels);
+ 	}
+ 	/* compress each byte string */
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8784.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8784.patch
new file mode 100644
index 0000000..0caf800
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8784.patch
@@ -0,0 +1,73 @@
+From b18012dae552f85dcc5c57d3bf4e997a15b1cc1c Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Sun, 27 Dec 2015 16:55:20 +0000
+Subject: [PATCH] * libtiff/tif_next.c: fix potential out-of-bound write in
+ NeXTDecode() triggered by http://lcamtuf.coredump.cx/afl/vulns/libtiff5.tif
+ (bugzilla #2508)
+
+Upstream-Status: Backport
+https://github.com/vadz/libtiff/commit/b18012dae552f85dcc5c57d3bf4e997a15b1cc1c
+hand applied Changelog changes
+
+CVE:  CVE-2015-8784
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ ChangeLog          |  6 ++++++
+ libtiff/tif_next.c | 10 ++++++++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+Index: tiff-4.0.4/ChangeLog
+===================================================================
+--- tiff-4.0.4.orig/ChangeLog
++++ tiff-4.0.4/ChangeLog
+@@ -1,5 +1,11 @@
+ 2015-12-27  Even Rouault <even.rouault at spatialys.com>
+ 
++	* libtiff/tif_next.c: fix potential out-of-bound write in NeXTDecode()
++	triggered by http://lcamtuf.coredump.cx/afl/vulns/libtiff5.tif
++	(bugzilla #2508)
++
++2015-12-27  Even Rouault <even.rouault at spatialys.com>
++
+ 	* libtiff/tif_luv.c: fix potential out-of-bound writes in decode
+ 	functions in non debug builds by replacing assert()s by regular if
+ 	checks (bugzilla #2522).
+Index: tiff-4.0.4/libtiff/tif_next.c
+===================================================================
+--- tiff-4.0.4.orig/libtiff/tif_next.c
++++ tiff-4.0.4/libtiff/tif_next.c
+@@ -37,7 +37,7 @@
+ 	case 0:	op[0]  = (unsigned char) ((v) << 6); break;	\
+ 	case 1:	op[0] |= (v) << 4; break;	\
+ 	case 2:	op[0] |= (v) << 2; break;	\
+-	case 3:	*op++ |= (v);	   break;	\
++	case 3:	*op++ |= (v);	   op_offset++; break;	\
+ 	}					\
+ }
+ 
+@@ -106,6 +106,7 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize
+ 			uint32 imagewidth = tif->tif_dir.td_imagewidth;
+             if( isTiled(tif) )
+                 imagewidth = tif->tif_dir.td_tilewidth;
++            tmsize_t op_offset = 0;
+ 
+ 			/*
+ 			 * The scanline is composed of a sequence of constant
+@@ -122,10 +123,15 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize
+ 				 * bounds, potentially resulting in a security
+ 				 * issue.
+ 				 */
+-				while (n-- > 0 && npixels < imagewidth)
++				while (n-- > 0 && npixels < imagewidth && op_offset < scanline)
+ 					SETPIXEL(op, grey);
+ 				if (npixels >= imagewidth)
+ 					break;
++                if (op_offset >= scanline ) {
++                    TIFFErrorExt(tif->tif_clientdata, module, "Invalid data for scanline %ld",
++                        (long) tif->tif_row);
++                    return (0);
++                }
+ 				if (cc == 0)
+ 					goto bad;
+ 				n = *bp++, cc--;
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-3186.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-3186.patch
new file mode 100644
index 0000000..4a08aba
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-3186.patch
@@ -0,0 +1,24 @@
+Buffer overflow in the readextension function in gif2tiff.c
+allows remote attackers to cause a denial of service via a crafted GIF file.
+
+External References:
+https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-3186
+https://bugzilla.redhat.com/show_bug.cgi?id=1319503
+
+CVE: CVE-2016-3186
+Upstream-Status: Backport (RedHat)
+https://bugzilla.redhat.com/attachment.cgi?id=1144235&action=diff
+
+Signed-off-by: Yi Zhao <yi.zhao@windirver.com>
+
+--- tiff-4.0.6/tools/gif2tiff.c	2016-04-06 15:43:01.586048341 +0200
++++ tiff-4.0.6/tools/gif2tiff.c	2016-04-06 15:48:05.523207710 +0200
+@@ -349,7 +349,7 @@
+     int status = 1;
+ 
+     (void) getc(infile);
+-    while ((count = getc(infile)) && count <= 255)
++    while ((count = getc(infile)) && count >= 0 && count <= 255)
+         if (fread(buf, 1, count, infile) != (size_t) count) {
+             fprintf(stderr, "short read from file %s (%s)\n",
+                     filename, strerror(errno));
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5321.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5321.patch
new file mode 100644
index 0000000..63c6650
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5321.patch
@@ -0,0 +1,49 @@
+From d9783e4a1476b6787a51c5ae9e9b3156527589f0 Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Mon, 11 Jul 2016 21:26:03 +0000
+Subject: [PATCH 1/2] * tools/tiffcrop.c: Avoid access outside of stack
+ allocated array on a tiled separate TIFF with more than 8 samples per pixel.
+ Reported by Kaixiang Zhang of the Cloud Security Team, Qihoo 360
+ (CVE-2016-5321, bugzilla #2558)
+
+CVE: CVE-2016-5321
+Upstream-Status: Backport
+https://github.com/vadz/libtiff/commit/d9783e4a1476b6787a51c5ae9e9b3156527589f0
+
+Signed-off-by: Yi Zhao <yi.zhao@windirver.com>
+---
+ ChangeLog        | 7 +++++++
+ tools/tiffcrop.c | 2 +-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index e98d54d..4e0302f 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,10 @@
++2016-07-11 Even Rouault <even.rouault at spatialys.com>
++
++	* tools/tiffcrop.c: Avoid access outside of stack allocated array
++	on a tiled separate TIFF with more than 8 samples per pixel.
++	Reported by Kaixiang Zhang of the Cloud Security Team, Qihoo 360
++	(CVE-2016-5321, bugzilla #2558)
++
+ 2015-12-27  Even Rouault <even.rouault at spatialys.com>
+
+	* libtiff/tif_next.c: fix potential out-of-bound write in NeXTDecode()
+diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
+index d959ae3..6fc8fc1 100644
+--- a/tools/tiffcrop.c
++++ b/tools/tiffcrop.c
+@@ -989,7 +989,7 @@ static int  readSeparateTilesIntoBuffer (TIFF* in, uint8 *obuf,
+     nrow = (row + tl > imagelength) ? imagelength - row : tl;
+     for (col = 0; col < imagewidth; col += tw)
+       {
+-      for (s = 0; s < spp; s++)
++      for (s = 0; s < spp && s < MAX_SAMPLES; s++)
+         {  /* Read each plane of a tile set into srcbuffs[s] */
+ 	tbytes = TIFFReadTile(in, srcbuffs[s], col, row, 0, s);
+         if (tbytes < 0  && !ignore)
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5323.patch b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5323.patch
new file mode 100644
index 0000000..41eab91
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5323.patch
@@ -0,0 +1,107 @@
+From 2f79856097f423eb33796a15fcf700d2ea41bf31 Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Mon, 11 Jul 2016 21:38:31 +0000
+Subject: [PATCH 2/2] (CVE-2016-5321 / CVE-2016-5323 , bugzilla #2558 / #2559)
+
+CVE: CVE-2016-5323
+Upstream-Status: Backport
+https://github.com/vadz/libtiff/commit/2f79856097f423eb33796a15fcf700d2ea41bf31
+
+Signed-off-by: Yi Zhao <yi.zhao@windirver.com>
+---
+ ChangeLog        |  2 +-
+ tools/tiffcrop.c | 16 ++++++++--------
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 4e0302f..62dc1b5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -3,7 +3,7 @@
+ 	* tools/tiffcrop.c: Avoid access outside of stack allocated array
+ 	on a tiled separate TIFF with more than 8 samples per pixel.
+ 	Reported by Kaixiang Zhang of the Cloud Security Team, Qihoo 360
+-	(CVE-2016-5321, bugzilla #2558)
++	(CVE-2016-5321 / CVE-2016-5323 , bugzilla #2558 / #2559)
+ 
+ 2016-07-10 Even Rouault <even.rouault at spatialys.com>
+ 
+diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
+index 6fc8fc1..27abc0b 100644
+--- a/tools/tiffcrop.c
++++ b/tools/tiffcrop.c
+@@ -3738,7 +3738,7 @@ combineSeparateSamples8bits (uint8 *in[], uint8 *out, uint32 cols,
+ 
+       matchbits = maskbits << (8 - src_bit - bps); 
+       /* load up next sample from each plane */
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+         {
+ 	src = in[s] + src_offset + src_byte;
+         buff1 = ((*src) & matchbits) << (src_bit);
+@@ -3837,7 +3837,7 @@ combineSeparateSamples16bits (uint8 *in[], uint8 *out, uint32 cols,
+       src_bit  = bit_offset % 8;
+ 
+       matchbits = maskbits << (16 - src_bit - bps); 
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+         {
+ 	src = in[s] + src_offset + src_byte;
+         if (little_endian)
+@@ -3947,7 +3947,7 @@ combineSeparateSamples24bits (uint8 *in[], uint8 *out, uint32 cols,
+       src_bit  = bit_offset % 8;
+ 
+       matchbits = maskbits << (32 - src_bit - bps); 
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+         {
+ 	src = in[s] + src_offset + src_byte;
+         if (little_endian)
+@@ -4073,7 +4073,7 @@ combineSeparateSamples32bits (uint8 *in[], uint8 *out, uint32 cols,
+       src_bit  = bit_offset % 8;
+ 
+       matchbits = maskbits << (64 - src_bit - bps); 
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+ 	{
+ 	src = in[s] + src_offset + src_byte;
+ 	if (little_endian)
+@@ -4263,7 +4263,7 @@ combineSeparateTileSamples8bits (uint8 *in[], uint8 *out, uint32 cols,
+ 
+       matchbits = maskbits << (8 - src_bit - bps); 
+       /* load up next sample from each plane */
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+         {
+ 	src = in[s] + src_offset + src_byte;
+         buff1 = ((*src) & matchbits) << (src_bit);
+@@ -4362,7 +4362,7 @@ combineSeparateTileSamples16bits (uint8 *in[], uint8 *out, uint32 cols,
+       src_bit  = bit_offset % 8;
+ 
+       matchbits = maskbits << (16 - src_bit - bps); 
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+         {
+ 	src = in[s] + src_offset + src_byte;
+         if (little_endian)
+@@ -4471,7 +4471,7 @@ combineSeparateTileSamples24bits (uint8 *in[], uint8 *out, uint32 cols,
+       src_bit  = bit_offset % 8;
+ 
+       matchbits = maskbits << (32 - src_bit - bps); 
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+         {
+ 	src = in[s] + src_offset + src_byte;
+         if (little_endian)
+@@ -4597,7 +4597,7 @@ combineSeparateTileSamples32bits (uint8 *in[], uint8 *out, uint32 cols,
+       src_bit  = bit_offset % 8;
+ 
+       matchbits = maskbits << (64 - src_bit - bps); 
+-      for (s = 0; s < spp; s++)
++      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+ 	{
+ 	src = in[s] + src_offset + src_byte;
+ 	if (little_endian)
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb
index e2e24e0..8147bc4 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb
@@ -1,10 +1,15 @@
 SUMMARY = "Provides support for the Tag Image File Format (TIFF)"
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=34da3db46fab7501992f9615d7e158cf"
-HOMEPAGE = "http://www.remotesensing.org/libtiff/"
 
-SRC_URI = "ftp://ftp.remotesensing.org/pub/libtiff/tiff-${PV}.tar.gz \
+SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \
            file://libtool2.patch \
+           file://CVE-2015-8665_8683.patch \
+           file://CVE-2015-8781.patch \
+           file://CVE-2015-8784.patch \
+           file://CVE-2016-3186.patch \
+           file://CVE-2016-5321.patch \
+           file://CVE-2016-5323.patch \
           "
 
 SRC_URI[md5sum] = "d1d2e940dea0b5ad435f21f03d96dd72"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/mpg123/mpg123_1.23.6.bb b/import-layers/yocto-poky/meta/recipes-multimedia/mpg123/mpg123_1.23.6.bb
new file mode 100644
index 0000000..6ee457d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/mpg123/mpg123_1.23.6.bb
@@ -0,0 +1,63 @@
+SUMMARY = "Audio decoder for MPEG-1 Layer 1/2/3"
+DESCRIPTION = "The core of mpg123 is an MPEG-1 Layer 1/2/3 decoding library, which can be used by other programs. \
+mpg123 also comes with a command-line tool which can playback using ALSA, PulseAudio, OSS, and several other APIs, \
+and also can write the decoded audio to WAV."
+HOMEPAGE = "http://mpg123.de/"
+BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1e86753638d3cf2512528b99079bc4f3"
+
+SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
+
+SRC_URI[md5sum] = "ed22a3e664f076fa05131a3454ef8166"
+SRC_URI[sha256sum] = "4073d9c60a43872f6f5a3a322f5ea21ab7f0869d2ed25e79c3eb8521fa3c32d4"
+
+inherit autotools pkgconfig
+
+# The options should be mutually exclusive for configuration script.
+# If both alsa and pulseaudio are specified (as in the default distro features)
+# pulseaudio takes precedence.
+PACKAGECONFIG_ALSA = "${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)}"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '${PACKAGECONFIG_ALSA}', d)}"
+
+PACKAGECONFIG[alsa] = "--with-default-audio=alsa,,alsa-lib"
+PACKAGECONFIG[esd] = ",,esound"
+PACKAGECONFIG[jack] = ",,jack"
+PACKAGECONFIG[openal] = ",,openal-soft"
+PACKAGECONFIG[portaudio] = ",,portaudio-v19"
+PACKAGECONFIG[pulseaudio] = "--with-default-audio=pulse,,pulseaudio"
+PACKAGECONFIG[sdl] = ",,libsdl"
+
+# Following are possible sound output modules:
+# alsa arts coreaudio dummy esd jack nas openal os2 oss portaudio pulse sdl sndio sun tinyalsa win32 win32_wasapi
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'alsa', 'alsa', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'esd', 'esd', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'jack', 'jack', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'openal', 'openal', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'portaudio', 'portaudio', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'pulse', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'sdl', 'sdl', '', d)}"
+
+EXTRA_OECONF = " \
+    --enable-shared \
+    --with-audio='${AUDIOMODS}' \
+    --with-module-suffix=.so \
+    ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \
+    ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \
+"
+
+# The x86 assembler optimisations contains text relocations and there are no
+# upstream plans to fix them: http://sourceforge.net/p/mpg123/bugs/168/
+INSANE_SKIP_${PN}_append_x86 = " textrel"
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:47: Error: selected processor does not support Thumb mode `smull r5,r6,r7,r4'
+#| {standard input}:48: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r5,r5,lsr#24'
+#...
+#| make[3]: *** [equalizer.lo] Error 1
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
index 0b05ce4..7e54ad4 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
@@ -3,11 +3,12 @@
 AUTHOR = "Lennart Poettering"
 SECTION = "libs/multimedia"
 LICENSE = "GPLv2+ & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://GPL;md5=4325afd396febcb659c36b49533135d4 \
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d9ae089c8dc5339f8ac9d8563038a29f \
+                    file://GPL;md5=4325afd396febcb659c36b49533135d4 \
                     file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
                     file://src/pulsecore/resampler.h;beginline=4;endline=21;md5=09794012ae16912c0270f3280cc8ff84"
 
-DEPENDS = "libatomic-ops libsndfile1 libtool"
+DEPENDS = "libatomic-ops libsndfile1 libtool intltool-native"
 # optional
 DEPENDS += "udev alsa-lib glib-2.0 gconf"
 DEPENDS += "json-c gdbm speexdsp libxml-parser-perl-native libcap"
@@ -30,6 +31,7 @@
 		--without-zsh-completion-dir \
 		--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d \
                 ac_cv_header_valgrind_memcheck_h=no \
+                --disable-tests \
 "
 
 # soxr (the SoX Resampler library) doesn't seem to be currently packaged in
@@ -41,6 +43,7 @@
                    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
                    ${@bb.utils.contains('DISTRO_FEATURES', '3g', 'ofono', '', d)} \
                    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
                    dbus \
                    "
 
@@ -57,6 +60,8 @@
 # able to use pulseaudio autospawn for root as well.
 PACKAGECONFIG[autospawn-for-root] = ",,,"
 PACKAGECONFIG[lirc] = "--enable-lirc,--disable-lirc,lirc"
+PACKAGECONFIG[webrtc] = "--enable-webrtc-aec,--disable-webrtc-aec,webrtc-audio-processing"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
 
 EXTRA_OECONF_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}"
 EXTRA_OECONF_append_armeb = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-Revert-module-switch-on-port-available-Route-to-pref.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-Revert-module-switch-on-port-available-Route-to-pref.patch
deleted file mode 100644
index 1c1e2fb..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-Revert-module-switch-on-port-available-Route-to-pref.patch
+++ /dev/null
@@ -1,268 +0,0 @@
-From b8b9b3da94a0c27090ceba243fdf54fb518c5489 Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Mon, 1 Feb 2016 15:34:59 +0200
-Subject: [PATCH] Revert "module-switch-on-port-available: Route to preferred
- profile"
-
-This reverts commit e87100d41ef6d14f8dc7f803582191d9f8d8f183.
-
-The reverted commit had some unwanted consequences:
-https://bugs.freedesktop.org/show_bug.cgi?id=93903
-https://bugs.freedesktop.org/show_bug.cgi?id=93946
-
-The first regression has a fix here:
-https://patchwork.freedesktop.org/patch/72053/
-
-The second regression, however, doesn't have a fix yet. Therefore,
-it's best to revert the offending patch for now.
-
-Upstream-Status: Inappropriate [Upstream plans to fix the issues
-properly.]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- src/modules/module-switch-on-port-available.c | 172 ++++++++++----------------
- 1 file changed, 67 insertions(+), 105 deletions(-)
-
-diff --git a/src/modules/module-switch-on-port-available.c b/src/modules/module-switch-on-port-available.c
-index 5dd9786..8de68a3 100644
---- a/src/modules/module-switch-on-port-available.c
-+++ b/src/modules/module-switch-on-port-available.c
-@@ -74,25 +74,22 @@ static bool profile_good_for_input(pa_card_profile *profile) {
- static int try_to_switch_profile(pa_device_port *port) {
-     pa_card_profile *best_profile = NULL, *profile;
-     void *state;
--    unsigned best_prio = 0;
- 
--    pa_log_debug("Finding best profile for port %s, preferred = %s",
--                 port->name, pa_strnull(port->preferred_profile));
-+    pa_log_debug("Finding best profile");
- 
-     PA_HASHMAP_FOREACH(profile, port->profiles, state) {
-         bool good = false;
--        const char *name;
--        unsigned prio = profile->priority;
-+
-+        if (best_profile && best_profile->priority >= profile->priority)
-+            continue;
- 
-         /* We make a best effort to keep other direction unchanged */
-         switch (port->direction) {
-             case PA_DIRECTION_OUTPUT:
--                name = profile->output_name;
-                 good = profile_good_for_output(profile);
-                 break;
- 
-             case PA_DIRECTION_INPUT:
--                name = profile->input_name;
-                 good = profile_good_for_input(profile);
-                 break;
-         }
-@@ -100,15 +97,7 @@ static int try_to_switch_profile(pa_device_port *port) {
-         if (!good)
-             continue;
- 
--        /* Give a high bonus in case this is the preferred profile */
--        if (port->preferred_profile && pa_streq(name ? name : profile->name, port->preferred_profile))
--            prio += 1000000;
--
--        if (best_profile && best_prio >= prio)
--            continue;
--
-         best_profile = profile;
--        best_prio = prio;
-     }
- 
-     if (!best_profile) {
-@@ -124,125 +113,98 @@ static int try_to_switch_profile(pa_device_port *port) {
-     return 0;
- }
- 
--struct port_pointers {
--    pa_device_port *port;
--    pa_sink *sink;
--    pa_source *source;
--    bool is_possible_profile_active;
--    bool is_preferred_profile_active;
--    bool is_port_active;
--};
--
--static const char* profile_name_for_dir(pa_card_profile *cp, pa_direction_t dir) {
--    if (dir == PA_DIRECTION_OUTPUT && cp->output_name)
--        return cp->output_name;
--    if (dir == PA_DIRECTION_INPUT && cp->input_name)
--        return cp->input_name;
--    return cp->name;
--}
--
--static struct port_pointers find_port_pointers(pa_device_port *port) {
--    struct port_pointers pp = { .port = port };
-+static void find_sink_and_source(pa_card *card, pa_device_port *port, pa_sink **si, pa_source **so) {
-+    pa_sink *sink = NULL;
-+    pa_source *source = NULL;
-     uint32_t state;
--    pa_card *card;
--
--    pa_assert(port);
--    pa_assert_se(card = port->card);
- 
-     switch (port->direction) {
-         case PA_DIRECTION_OUTPUT:
--            PA_IDXSET_FOREACH(pp.sink, card->sinks, state)
--                if (port == pa_hashmap_get(pp.sink->ports, port->name))
-+            PA_IDXSET_FOREACH(sink, card->sinks, state)
-+                if (port == pa_hashmap_get(sink->ports, port->name))
-                     break;
-             break;
- 
-         case PA_DIRECTION_INPUT:
--            PA_IDXSET_FOREACH(pp.source, card->sources, state)
--                if (port == pa_hashmap_get(pp.source->ports, port->name))
-+            PA_IDXSET_FOREACH(source, card->sources, state)
-+                if (port == pa_hashmap_get(source->ports, port->name))
-                     break;
-             break;
-     }
- 
--    pp.is_possible_profile_active =
--        card->active_profile == pa_hashmap_get(port->profiles, card->active_profile->name);
--    pp.is_preferred_profile_active = pp.is_possible_profile_active && (!port->preferred_profile ||
--        pa_safe_streq(port->preferred_profile, profile_name_for_dir(card->active_profile, port->direction)));
--    pp.is_port_active = (pp.sink && pp.sink->active_port == port) || (pp.source && pp.source->active_port == port);
--
--    return pp;
-+    *si = sink;
-+    *so = source;
- }
- 
--/* Switches to a port, switching profiles if necessary or preferred */
--static bool switch_to_port(pa_device_port *port) {
--    struct port_pointers pp = find_port_pointers(port);
-+static pa_hook_result_t port_available_hook_callback(pa_core *c, pa_device_port *port, void* userdata) {
-+    pa_card* card;
-+    pa_sink *sink;
-+    pa_source *source;
-+    bool is_active_profile, is_active_port;
- 
--    if (pp.is_port_active)
--        return true; /* Already selected */
-+    if (port->available == PA_AVAILABLE_UNKNOWN)
-+        return PA_HOOK_OK;
- 
--    pa_log_debug("Trying to switch to port %s", port->name);
--    if (!pp.is_preferred_profile_active) {
--        if (try_to_switch_profile(port) < 0) {
--            if (pp.is_possible_profile_active)
--                return false;
--        }
--        else
--            /* Now that profile has changed, our sink and source pointers must be updated */
--            pp = find_port_pointers(port);
--    }
-+    card = port->card;
- 
--    if (pp.source)
--        pa_source_set_port(pp.source, port->name, false);
--    if (pp.sink)
--        pa_sink_set_port(pp.sink, port->name, false);
--    return true;
--}
-+    if (!card) {
-+        pa_log_warn("Port %s does not have a card", port->name);
-+        return PA_HOOK_OK;
-+    }
- 
--/* Switches away from a port, switching profiles if necessary or preferred */
--static bool switch_from_port(pa_device_port *port) {
--    struct port_pointers pp = find_port_pointers(port);
--    pa_device_port *p, *best_port = NULL;
--    void *state;
-+    if (pa_idxset_size(card->sinks) == 0 && pa_idxset_size(card->sources) == 0)
-+        /* This card is not initialized yet. We'll handle it in
-+           sink_new / source_new callbacks later. */
-+        return PA_HOOK_OK;
- 
--    if (!pp.is_port_active)
--        return true; /* Already deselected */
-+    find_sink_and_source(card, port, &sink, &source);
- 
--    /* Try to find a good enough port to switch to */
--    PA_HASHMAP_FOREACH(p, port->card->ports, state)
--        if (p->direction == port->direction && p != port && p->available != PA_AVAILABLE_NO &&
--           (!best_port || best_port->priority < p->priority))
--           best_port = p;
-+    is_active_profile = card->active_profile == pa_hashmap_get(port->profiles, card->active_profile->name);
-+    is_active_port = (sink && sink->active_port == port) || (source && source->active_port == port);
- 
--    pa_log_debug("Trying to switch away from port %s, found %s", port->name, best_port ? best_port->name : "no better option");
-+    if (port->available == PA_AVAILABLE_NO && !is_active_port)
-+        return PA_HOOK_OK;
- 
--    if (best_port)
--        return switch_to_port(best_port);
-+    if (port->available == PA_AVAILABLE_YES) {
-+        if (is_active_port)
-+            return PA_HOOK_OK;
- 
--    return false;
--}
-+        if (!is_active_profile) {
-+            if (try_to_switch_profile(port) < 0)
-+                return PA_HOOK_OK;
- 
-+            pa_assert(card->active_profile == pa_hashmap_get(port->profiles, card->active_profile->name));
- 
--static pa_hook_result_t port_available_hook_callback(pa_core *c, pa_device_port *port, void* userdata) {
--    pa_assert(port);
-+            /* Now that profile has changed, our sink and source pointers must be updated */
-+            find_sink_and_source(card, port, &sink, &source);
-+        }
- 
--    if (!port->card) {
--        pa_log_warn("Port %s does not have a card", port->name);
--        return PA_HOOK_OK;
-+        if (source)
-+            pa_source_set_port(source, port->name, false);
-+        if (sink)
-+            pa_sink_set_port(sink, port->name, false);
-     }
- 
--    if (pa_idxset_size(port->card->sinks) == 0 && pa_idxset_size(port->card->sources) == 0)
--        /* This card is not initialized yet. We'll handle it in
--           sink_new / source_new callbacks later. */
--        return PA_HOOK_OK;
-+    if (port->available == PA_AVAILABLE_NO) {
-+        if (sink) {
-+            pa_device_port *p2 = pa_device_port_find_best(sink->ports);
-+
-+            if (p2 && p2->available != PA_AVAILABLE_NO)
-+                pa_sink_set_port(sink, p2->name, false);
-+            else {
-+                /* Maybe try to switch to another profile? */
-+            }
-+        }
- 
--    switch (port->available) {
--    case PA_AVAILABLE_YES:
--        switch_to_port(port);
--        break;
--    case PA_AVAILABLE_NO:
--        switch_from_port(port);
--        break;
--    default:
--        break;
-+        if (source) {
-+            pa_device_port *p2 = pa_device_port_find_best(source->ports);
-+
-+            if (p2 && p2->available != PA_AVAILABLE_NO)
-+                pa_source_set_port(source, p2->name, false);
-+            else {
-+                /* Maybe try to switch to another profile? */
-+            }
-+        }
-     }
- 
-     return PA_HOOK_OK;
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch
new file mode 100644
index 0000000..2f72ceb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch
@@ -0,0 +1,61 @@
+From 9c3cdfcd198ef9727ea542f284ac6d8c1bcd7a3a Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen <tanuk@iki.fi>
+Date: Fri, 23 Oct 2015 12:36:34 +0300
+Subject: [PATCH 1/5] alsa, bluetooth: fail if user-requested profile doesn't
+ exist
+
+If we can't fulfill the user request fully, I think we shouldn't
+fulfill it at all, to make it clear that the requested operation
+didn't succeed.
+
+Upstream-Status: Accepted [expected in 10.0]
+
+Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
+---
+ src/modules/alsa/module-alsa-card.c          | 11 +++++++++--
+ src/modules/bluetooth/module-bluez4-device.c |  7 +++++--
+ 2 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
+index e5cc4ae..d761683 100644
+--- a/src/modules/alsa/module-alsa-card.c
++++ b/src/modules/alsa/module-alsa-card.c
+@@ -799,8 +799,15 @@ int pa__init(pa_module *m) {
+         goto fail;
+     }
+ 
+-    if ((profile = pa_modargs_get_value(u->modargs, "profile", NULL)))
+-        pa_card_new_data_set_profile(&data, profile);
++    if ((profile = pa_modargs_get_value(u->modargs, "profile", NULL))) {
++        if (pa_hashmap_get(data.profiles, profile))
++            pa_card_new_data_set_profile(&data, profile);
++        else {
++            pa_log("No such profile: %s", profile);
++            pa_card_new_data_done(&data);
++            goto fail;
++        }
++    }
+ 
+     u->card = pa_card_new(m->core, &data);
+     pa_card_new_data_done(&data);
+diff --git a/src/modules/bluetooth/module-bluez4-device.c b/src/modules/bluetooth/module-bluez4-device.c
+index 9a921a5..a2de525 100644
+--- a/src/modules/bluetooth/module-bluez4-device.c
++++ b/src/modules/bluetooth/module-bluez4-device.c
+@@ -2301,8 +2301,11 @@ static int add_card(struct userdata *u) {
+     if ((default_profile = pa_modargs_get_value(u->modargs, "profile", NULL))) {
+         if (pa_hashmap_get(data.profiles, default_profile))
+             pa_card_new_data_set_profile(&data, default_profile);
+-        else
+-            pa_log_warn("Profile '%s' not valid or not supported by device.", default_profile);
++        else {
++            pa_log("Profile '%s' not valid or not supported by device.", default_profile);
++            pa_card_new_data_done(&data);
++            return -1;
++        }
+     }
+ 
+     u->card = pa_card_new(u->core, &data);
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch
deleted file mode 100644
index 84c9519..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-From d1c02971867bea10afcafc82c965414012c4d6bd Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Fri, 23 Oct 2015 12:23:13 +0300
-Subject: [PATCH 1/4] card: add pa_card_profile.ports
-
-Having ports accessible from pa_card_profile allows checking whether all ports
-of a profile are unavailable, and therefore helps with managing the profile
-availability (implemented in a later patch).
-
-http://bugzilla.yoctoproject.org/show_bug.cgi?id=8448
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
-Rebased on 8.0.
-
-Upstream-Status: Denied [The patch set needs some work to be accepted.
-The review thread:
-http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/24301]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- src/modules/alsa/alsa-mixer.c                |  4 +++-
- src/modules/alsa/alsa-ucm.c                  |  1 +
- src/modules/bluetooth/module-bluez4-device.c |  6 ++++++
- src/modules/bluetooth/module-bluez5-device.c |  6 ++++++
- src/pulsecore/card.c                         | 15 +++++++++++++++
- src/pulsecore/card.h                         |  4 ++++
- src/pulsecore/device-port.c                  |  7 ++++++-
- 7 files changed, 41 insertions(+), 2 deletions(-)
-
-diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
-index 1fe2a02..5b76b06 100644
---- a/src/modules/alsa/alsa-mixer.c
-+++ b/src/modules/alsa/alsa-mixer.c
-@@ -4783,8 +4783,10 @@ static pa_device_port* device_port_alsa_init(pa_hashmap *ports, /* card ports */
-         path->port = p;
-     }
- 
--    if (cp)
-+    if (cp) {
-         pa_hashmap_put(p->profiles, cp->name, cp);
-+        pa_card_profile_add_port(cp, p);
-+    }
- 
-     if (extra) {
-         pa_hashmap_put(extra, p->name, p);
-diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c
-index 42f3242..68fcc26 100644
---- a/src/modules/alsa/alsa-ucm.c
-+++ b/src/modules/alsa/alsa-ucm.c
-@@ -791,6 +791,7 @@ static void ucm_add_port_combination(
-     if (cp) {
-         pa_log_debug("Adding profile %s to port %s.", cp->name, port->name);
-         pa_hashmap_put(port->profiles, cp->name, cp);
-+        pa_card_profile_add_port(cp, port);
-     }
- 
-     if (hash) {
-diff --git a/src/modules/bluetooth/module-bluez4-device.c b/src/modules/bluetooth/module-bluez4-device.c
-index 9a921a5..adecb32 100644
---- a/src/modules/bluetooth/module-bluez4-device.c
-+++ b/src/modules/bluetooth/module-bluez4-device.c
-@@ -2180,6 +2180,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         p->max_sink_channels = 2;
-         p->max_source_channels = 0;
-         pa_hashmap_put(output_port->profiles, p->name, p);
-+        pa_card_profile_add_port(p, output_port);
- 
-         d = PA_CARD_PROFILE_DATA(p);
-         *d = PA_BLUEZ4_PROFILE_A2DP;
-@@ -2191,6 +2192,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         p->max_sink_channels = 0;
-         p->max_source_channels = 2;
-         pa_hashmap_put(input_port->profiles, p->name, p);
-+        pa_card_profile_add_port(p, input_port);
- 
-         d = PA_CARD_PROFILE_DATA(p);
-         *d = PA_BLUEZ4_PROFILE_A2DP_SOURCE;
-@@ -2203,6 +2205,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         p->max_source_channels = 1;
-         pa_hashmap_put(input_port->profiles, p->name, p);
-         pa_hashmap_put(output_port->profiles, p->name, p);
-+        pa_card_profile_add_port(p, input_port);
-+        pa_card_profile_add_port(p, output_port);
- 
-         d = PA_CARD_PROFILE_DATA(p);
-         *d = PA_BLUEZ4_PROFILE_HSP;
-@@ -2215,6 +2219,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         p->max_source_channels = 1;
-         pa_hashmap_put(input_port->profiles, p->name, p);
-         pa_hashmap_put(output_port->profiles, p->name, p);
-+        pa_card_profile_add_port(p, input_port);
-+        pa_card_profile_add_port(p, output_port);
- 
-         d = PA_CARD_PROFILE_DATA(p);
-         *d = PA_BLUEZ4_PROFILE_HFGW;
-diff --git a/src/modules/bluetooth/module-bluez5-device.c b/src/modules/bluetooth/module-bluez5-device.c
-index 84e6d55..b015c67 100644
---- a/src/modules/bluetooth/module-bluez5-device.c
-+++ b/src/modules/bluetooth/module-bluez5-device.c
-@@ -1790,6 +1790,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         cp->max_sink_channels = 2;
-         cp->max_source_channels = 0;
-         pa_hashmap_put(output_port->profiles, cp->name, cp);
-+        pa_card_profile_add_port(cp, output_port);
- 
-         p = PA_CARD_PROFILE_DATA(cp);
-         *p = PA_BLUETOOTH_PROFILE_A2DP_SINK;
-@@ -1801,6 +1802,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         cp->max_sink_channels = 0;
-         cp->max_source_channels = 2;
-         pa_hashmap_put(input_port->profiles, cp->name, cp);
-+        pa_card_profile_add_port(cp, input_port);
- 
-         p = PA_CARD_PROFILE_DATA(cp);
-         *p = PA_BLUETOOTH_PROFILE_A2DP_SOURCE;
-@@ -1813,6 +1815,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         cp->max_source_channels = 1;
-         pa_hashmap_put(input_port->profiles, cp->name, cp);
-         pa_hashmap_put(output_port->profiles, cp->name, cp);
-+        pa_card_profile_add_port(cp, input_port);
-+        pa_card_profile_add_port(cp, output_port);
- 
-         p = PA_CARD_PROFILE_DATA(cp);
-         *p = PA_BLUETOOTH_PROFILE_HEADSET_HEAD_UNIT;
-@@ -1825,6 +1829,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid
-         cp->max_source_channels = 1;
-         pa_hashmap_put(input_port->profiles, cp->name, cp);
-         pa_hashmap_put(output_port->profiles, cp->name, cp);
-+        pa_card_profile_add_port(cp, input_port);
-+        pa_card_profile_add_port(cp, output_port);
- 
-         p = PA_CARD_PROFILE_DATA(cp);
-         *p = PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY;
-diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
-index b6cbbf7..f92ac87 100644
---- a/src/pulsecore/card.c
-+++ b/src/pulsecore/card.c
-@@ -45,6 +45,7 @@ pa_card_profile *pa_card_profile_new(const char *name, const char *description,
-     c->name = pa_xstrdup(name);
-     c->description = pa_xstrdup(description);
-     c->available = PA_AVAILABLE_UNKNOWN;
-+    c->ports = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- 
-     return c;
- }
-@@ -52,6 +53,14 @@ pa_card_profile *pa_card_profile_new(const char *name, const char *description,
- void pa_card_profile_free(pa_card_profile *c) {
-     pa_assert(c);
- 
-+    if (c->ports) {
-+        pa_device_port *port;
-+        void *state;
-+        PA_HASHMAP_FOREACH(port, c->ports, state)
-+            pa_hashmap_remove (port->profiles, c->name);
-+        pa_hashmap_free(c->ports);
-+    }
-+
-     pa_xfree(c->input_name);
-     pa_xfree(c->output_name);
-     pa_xfree(c->name);
-@@ -59,6 +68,12 @@ void pa_card_profile_free(pa_card_profile *c) {
-     pa_xfree(c);
- }
- 
-+void pa_card_profile_add_port(pa_card_profile *profile, pa_device_port *port) {
-+    pa_assert(profile);
-+
-+    pa_hashmap_put(profile->ports, port->name, port);
-+}
-+
- void pa_card_profile_set_available(pa_card_profile *c, pa_available_t available) {
-     pa_core *core;
- 
-diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
-index 30bfc0e..fff9057 100644
---- a/src/pulsecore/card.h
-+++ b/src/pulsecore/card.h
-@@ -50,6 +50,8 @@ struct pa_card_profile {
-     unsigned priority;
-     pa_available_t available; /* PA_AVAILABLE_UNKNOWN, PA_AVAILABLE_NO or PA_AVAILABLE_YES */
- 
-+    pa_hashmap *ports; /* port name -> pa_device_port */
-+
-     /* We probably want to have different properties later on here */
-     unsigned n_sinks;
-     unsigned n_sources;
-@@ -107,6 +109,8 @@ typedef struct pa_card_new_data {
- pa_card_profile *pa_card_profile_new(const char *name, const char *description, size_t extra);
- void pa_card_profile_free(pa_card_profile *c);
- 
-+void pa_card_profile_add_port(pa_card_profile *profile, pa_device_port *port);
-+
- /* The profile's available status has changed */
- void pa_card_profile_set_available(pa_card_profile *c, pa_available_t available);
- 
-diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c
-index 5807d3e..d12dfbc 100644
---- a/src/pulsecore/device-port.c
-+++ b/src/pulsecore/device-port.c
-@@ -107,8 +107,13 @@ static void device_port_free(pa_object *o) {
-     if (p->proplist)
-         pa_proplist_free(p->proplist);
- 
--    if (p->profiles)
-+    if (p->profiles) {
-+        pa_card_profile *profile;
-+        void *state;
-+        PA_HASHMAP_FOREACH(profile, p->profiles, state)
-+            pa_hashmap_remove (profile->ports, p->name);
-         pa_hashmap_free(p->profiles);
-+    }
- 
-     pa_xfree(p->preferred_profile);
-     pa_xfree(p->name);
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch
index bc32775..33f7709 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch
@@ -1,4 +1,4 @@
-From 1cb5647f76dc8cd7bacbce2a64fac9e6c2dc3b16 Mon Sep 17 00:00:00 2001
+From babec3a50dd710d26b72f6c6d43bd79b04e954a6 Mon Sep 17 00:00:00 2001
 From: Tanu Kaskinen <tanu.kaskinen@linux.intel.com>
 Date: Tue, 28 Apr 2015 14:32:43 +0300
 Subject: [PATCH] client-conf: Add allow-autospawn-for-root
@@ -24,10 +24,10 @@
  5 files changed, 13 insertions(+), 1 deletion(-)
 
 diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in
-index 1002dbe..0058490 100644
+index b88898c..e737c96 100644
 --- a/man/pulse-client.conf.5.xml.in
 +++ b/man/pulse-client.conf.5.xml.in
-@@ -71,6 +71,15 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
+@@ -82,6 +82,15 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
      </option>
  
      <option>
@@ -44,7 +44,7 @@
        run when autospawning. Defaults to a path configured at compile
        time.</p>
 diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c
-index 83331f8..0474583 100644
+index a3c9486..9f68ee5 100644
 --- a/src/pulse/client-conf.c
 +++ b/src/pulse/client-conf.c
 @@ -138,6 +138,7 @@ void pa_client_conf_load(pa_client_conf *c, bool load_from_x11, bool load_from_e
@@ -56,13 +56,13 @@
          { "disable-shm",            pa_config_parse_bool,     &c->disable_shm, NULL },
          { "enable-shm",             pa_config_parse_not_bool, &c->disable_shm, NULL },
 diff --git a/src/pulse/client-conf.h b/src/pulse/client-conf.h
-index eac705a..131393a 100644
+index 7691ec7..19db7ed 100644
 --- a/src/pulse/client-conf.h
 +++ b/src/pulse/client-conf.h
 @@ -38,6 +38,7 @@ typedef struct pa_client_conf {
      char *cookie_file_from_application;
      char *cookie_file_from_client_conf;
-     bool autospawn, disable_shm, auto_connect_localhost, auto_connect_display;
+     bool autospawn, disable_shm, disable_memfd, auto_connect_localhost, auto_connect_display;
 +    bool allow_autospawn_for_root;
      size_t shm_size;
  } pa_client_conf;
@@ -80,10 +80,10 @@
  ; extra-arguments = --log-target=syslog
  
 diff --git a/src/pulse/context.c b/src/pulse/context.c
-index 4bc445f..d6c3f6d 100644
+index 69be5f4..d6e13e8 100644
 --- a/src/pulse/context.c
 +++ b/src/pulse/context.c
-@@ -976,7 +976,7 @@ int pa_context_connect(
+@@ -1027,7 +1027,7 @@ int pa_context_connect(
      if (!(flags & PA_CONTEXT_NOAUTOSPAWN) && c->conf->autospawn) {
  
  #ifdef HAVE_GETUID
@@ -93,5 +93,5 @@
          else {
              c->do_autospawn = true;
 -- 
-1.9.3
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch
deleted file mode 100644
index be3655b..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 339eb179baa7810113f6456accc05b3a32c1cdba Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Fri, 23 Oct 2015 12:36:34 +0300
-Subject: [PATCH 2/4] alsa, bluetooth: fail if user-requested profile doesn't
- exist
-
-If we can't fulfill the user request fully, I think we shouldn't
-fulfill it at all, to make it clear that the requested operation
-didn't succeed.
-
-http://bugzilla.yoctoproject.org/show_bug.cgi?id=8448
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
-Upstream-Status: Denied [The patch set needs some work to be accepted.
-The review thread:
-http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/24301]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- src/modules/alsa/module-alsa-card.c          | 10 ++++++++--
- src/modules/bluetooth/module-bluez4-device.c |  6 ++++--
- 2 files changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
-index a7fec04..32f517e 100644
---- a/src/modules/alsa/module-alsa-card.c
-+++ b/src/modules/alsa/module-alsa-card.c
-@@ -754,8 +754,14 @@ int pa__init(pa_module *m) {
-         goto fail;
-     }
- 
--    if ((profile = pa_modargs_get_value(u->modargs, "profile", NULL)))
--        pa_card_new_data_set_profile(&data, profile);
-+    if ((profile = pa_modargs_get_value(u->modargs, "profile", NULL))) {
-+        if (pa_hashmap_get(data.profiles, profile))
-+            pa_card_new_data_set_profile(&data, profile);
-+        else {
-+            pa_log("No such profile: %s", profile);
-+            goto fail;
-+        }
-+    }
- 
-     u->card = pa_card_new(m->core, &data);
-     pa_card_new_data_done(&data);
-diff --git a/src/modules/bluetooth/module-bluez4-device.c b/src/modules/bluetooth/module-bluez4-device.c
-index b40c6a0..94e6988 100644
---- a/src/modules/bluetooth/module-bluez4-device.c
-+++ b/src/modules/bluetooth/module-bluez4-device.c
-@@ -2310,8 +2310,10 @@ static int add_card(struct userdata *u) {
-     if ((default_profile = pa_modargs_get_value(u->modargs, "profile", NULL))) {
-         if (pa_hashmap_get(data.profiles, default_profile))
-             pa_card_new_data_set_profile(&data, default_profile);
--        else
--            pa_log_warn("Profile '%s' not valid or not supported by device.", default_profile);
-+        else {
-+            pa_log("Profile '%s' not valid or not supported by device.", default_profile);
-+            return -1;
-+        }
-     }
- 
-     u->card = pa_card_new(u->core, &data);
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-card-don-t-allow-the-CARD_NEW-hook-to-fail.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-card-don-t-allow-the-CARD_NEW-hook-to-fail.patch
new file mode 100644
index 0000000..80c291f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-card-don-t-allow-the-CARD_NEW-hook-to-fail.patch
@@ -0,0 +1,37 @@
+From d4e6d07fef28d1bd8bfbceab4cc196ef54c23dd8 Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen <tanuk@iki.fi>
+Date: Tue, 7 Jun 2016 16:51:00 +0300
+Subject: [PATCH 2/5] card: don't allow the CARD_NEW hook to fail
+
+There is currently no use for allowing modules to cancel card creation,
+and I don't see need for that in the future either. Let's simplify
+things by removing the failure handling code.
+
+Upstream-Status: Accepted [expected in 10.0]
+
+Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
+---
+ src/pulsecore/card.c | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
+index 410746b..0ac70b9 100644
+--- a/src/pulsecore/card.c
++++ b/src/pulsecore/card.c
+@@ -149,12 +149,7 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
+     }
+ 
+     pa_card_new_data_set_name(data, name);
+-
+-    if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_CARD_NEW], data) < 0) {
+-        pa_xfree(c);
+-        pa_namereg_unregister(core, name);
+-        return NULL;
+-    }
++    pa_hook_fire(&core->hooks[PA_CORE_HOOK_CARD_NEW], data);
+ 
+     c->core = core;
+     c->name = pa_xstrdup(data->name);
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0003-card-move-profile-selection-after-pa_card_new.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0003-card-move-profile-selection-after-pa_card_new.patch
index 0e77801..e0f424b 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0003-card-move-profile-selection-after-pa_card_new.patch
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0003-card-move-profile-selection-after-pa_card_new.patch
@@ -1,61 +1,62 @@
-From 13e85dd1763e99d21a60323671b9a5df08bdae75 Mon Sep 17 00:00:00 2001
+From 0b98309fdbcd36fa92ab53e33c51b485b905e294 Mon Sep 17 00:00:00 2001
 From: Tanu Kaskinen <tanuk@iki.fi>
 Date: Fri, 23 Oct 2015 12:59:53 +0300
-Subject: [PATCH 3/4] card: move profile selection after pa_card_new()
+Subject: [PATCH 3/5] card: move profile selection after pa_card_new()
 
 I want module-alsa-card to set the availability of unavailable
 profiles before the initial card profile gets selected, so that the
 selection logic can use correct availability information.
 module-alsa-card initializes the jack state after calling
 pa_card_new(), however, and the profile selection happens in
-pa_card_new(). This patch solves that by introducing pa_card_put() and
-moving the profile selection code there.
+pa_card_new(). This patch solves that by moving parts of pa_card_new()
+to pa_card_choose_initial_profile() and pa_card_put().
+
+pa_card_choose_initial_profile() applies the profile selection policy,
+so module-alsa-card can first call pa_card_new(), then initialize the
+jack state, and then call pa_card_choose_initial_profile(). After that
+module-alsa-card can still override the profile selection policy, in
+case module-alsa-card was loaded with the "profile" argument. Finally,
+pa_card_put() finalizes the card creation.
 
 An alternative solution would have been to move the jack
 initialization to happen before pa_card_new() and use pa_card_new_data
 instead of pa_card in the jack initialization code, but I disliked
 that idea (I want to get rid of the "new data" pattern eventually).
 
-The CARD_NEW hook is used when applying the initial profile policy, so
-that was moved to pa_card_put(). That required changing the hook data
-from pa_card_new_data to pa_card. module-card-restore now uses
-pa_card_set_profile() instead of pa_card_new_data_set_profile(). That
-required adding a state variable to pa_card, because
-pa_card_set_profile() needs to distinguish between setting the initial
-profile and setting the profile in other situations.
-
 The order in which the initial profile policy is applied is reversed
 in this patch. Previously the first one to set it won, now the last
 one to set it wins. I think this is better, because if you have N
 parties that want to set the profile, we avoid checking N times
 whether someone else has already set the profile.
 
-http://bugzilla.yoctoproject.org/show_bug.cgi?id=8448
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
-Rebased on 8.0.
-
-Upstream-Status: Denied [The patch set needs some work to be accepted.
-The review thread:
-http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/24301]
+Upstream-Status: Accepted [expected in 10.0]
 
 Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
 ---
- src/modules/alsa/module-alsa-card.c          | 19 +++----
- src/modules/bluetooth/module-bluez4-device.c | 18 +++----
- src/modules/bluetooth/module-bluez5-device.c |  1 +
- src/modules/macosx/module-coreaudio-device.c |  1 +
- src/modules/module-card-restore.c            | 24 +++++----
- src/pulsecore/card.c                         | 81 +++++++++++++++-------------
- src/pulsecore/card.h                         |  7 +++
- 7 files changed, 86 insertions(+), 65 deletions(-)
+ src/modules/alsa/module-alsa-card.c          | 32 +++++----
+ src/modules/bluetooth/module-bluez4-device.c | 31 +++++----
+ src/modules/bluetooth/module-bluez5-device.c |  2 +
+ src/modules/macosx/module-coreaudio-device.c |  2 +
+ src/modules/module-card-restore.c            | 36 +++++++---
+ src/pulsecore/card.c                         | 99 +++++++++++++++++-----------
+ src/pulsecore/card.h                         |  9 +++
+ src/pulsecore/core.h                         |  1 +
+ 8 files changed, 143 insertions(+), 69 deletions(-)
 
 diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
-index 9e8cde2..fe240f0 100644
+index d761683..1976230 100644
 --- a/src/modules/alsa/module-alsa-card.c
 +++ b/src/modules/alsa/module-alsa-card.c
-@@ -770,15 +770,6 @@ int pa__init(pa_module *m) {
+@@ -671,7 +671,7 @@ int pa__init(pa_module *m) {
+     struct userdata *u;
+     pa_reserve_wrapper *reserve = NULL;
+     const char *description;
+-    const char *profile = NULL;
++    const char *profile_str = NULL;
+     char *fn = NULL;
+     bool namereg_fail = false;
+ 
+@@ -799,16 +799,6 @@ int pa__init(pa_module *m) {
          goto fail;
      }
  
@@ -64,6 +65,7 @@
 -            pa_card_new_data_set_profile(&data, profile);
 -        else {
 -            pa_log("No such profile: %s", profile);
+-            pa_card_new_data_done(&data);
 -            goto fail;
 -        }
 -    }
@@ -71,28 +73,47 @@
      u->card = pa_card_new(m->core, &data);
      pa_card_new_data_done(&data);
  
-@@ -789,6 +780,16 @@ int pa__init(pa_module *m) {
-     u->card->set_profile = card_set_profile;
+@@ -822,6 +812,26 @@ int pa__init(pa_module *m) {
+             (pa_hook_cb_t) card_suspend_changed, u);
  
      init_jacks(u);
-+    pa_card_put(u->card);
 +
-+    if ((profile = pa_modargs_get_value(u->modargs, "profile", NULL))) {
-+        u->card->active_profile = pa_hashmap_get(u->card->profiles, profile);
-+        if (!u->card->active_profile) {
-+            pa_log("No such profile: %s", profile);
++    pa_card_choose_initial_profile(u->card);
++
++    /* If the "profile" modarg is given, we have to override whatever the usual
++     * policy chose in pa_card_choose_initial_profile(). */
++    profile_str = pa_modargs_get_value(u->modargs, "profile", NULL);
++    if (profile_str) {
++        pa_card_profile *profile;
++
++        profile = pa_hashmap_get(u->card->profiles, profile_str);
++        if (!profile) {
++            pa_log("No such profile: %s", profile_str);
 +            goto fail;
 +        }
++
++        pa_card_set_profile(u->card, profile, false);
 +    }
 +
++    pa_card_put(u->card);
++
      init_profile(u);
      init_eld_ctls(u);
  
 diff --git a/src/modules/bluetooth/module-bluez4-device.c b/src/modules/bluetooth/module-bluez4-device.c
-index dd18217..5d0d3db 100644
+index a2de525..13fb7ab 100644
 --- a/src/modules/bluetooth/module-bluez4-device.c
 +++ b/src/modules/bluetooth/module-bluez4-device.c
-@@ -2304,15 +2304,6 @@ static int add_card(struct userdata *u) {
+@@ -2238,7 +2238,7 @@ static int add_card(struct userdata *u) {
+     pa_bluez4_profile_t *d;
+     pa_bluez4_form_factor_t ff;
+     char *n;
+-    const char *default_profile;
++    const char *profile_str;
+     const pa_bluez4_device *device;
+     const pa_bluez4_uuid *uuid;
+ 
+@@ -2298,16 +2298,6 @@ static int add_card(struct userdata *u) {
      *d = PA_BLUEZ4_PROFILE_OFF;
      pa_hashmap_put(data.profiles, p->name, p);
  
@@ -101,6 +122,7 @@
 -            pa_card_new_data_set_profile(&data, default_profile);
 -        else {
 -            pa_log("Profile '%s' not valid or not supported by device.", default_profile);
+-            pa_card_new_data_done(&data);
 -            return -1;
 -        }
 -    }
@@ -108,127 +130,126 @@
      u->card = pa_card_new(u->core, &data);
      pa_card_new_data_done(&data);
  
-@@ -2323,6 +2314,15 @@ static int add_card(struct userdata *u) {
- 
+@@ -2319,6 +2309,25 @@ static int add_card(struct userdata *u) {
      u->card->userdata = u;
      u->card->set_profile = card_set_profile;
-+    pa_card_put(u->card);
+ 
++    pa_card_choose_initial_profile(u->card);
 +
-+    if ((default_profile = pa_modargs_get_value(u->modargs, "profile", NULL))) {
-+        u->card->active_profile = pa_hashmap_get(u->card->profiles, default_profile);
-+        if (!u->card->active_profile) {
-+            pa_log("Profile '%s' not valid or not supported by device.", default_profile);
++    /* If the "profile" modarg is given, we have to override whatever the usual
++     * policy chose in pa_card_choose_initial_profile(). */
++    profile_str = pa_modargs_get_value(u->modargs, "profile", NULL);
++    if (profile_str) {
++        pa_card_profile *profile;
++
++        profile = pa_hashmap_get(u->card->profiles, profile_str);
++        if (!profile) {
++            pa_log("No such profile: %s", profile_str);
 +            return -1;
 +        }
++
++        pa_card_set_profile(u->card, profile, false);
 +    }
- 
++
++    pa_card_put(u->card);
++
      d = PA_CARD_PROFILE_DATA(u->card->active_profile);
  
+     if (*d != PA_BLUEZ4_PROFILE_OFF && (!device->transports[*d] ||
 diff --git a/src/modules/bluetooth/module-bluez5-device.c b/src/modules/bluetooth/module-bluez5-device.c
-index b015c67..7b90a31 100644
+index 84e6d55..498d0e1 100644
 --- a/src/modules/bluetooth/module-bluez5-device.c
 +++ b/src/modules/bluetooth/module-bluez5-device.c
-@@ -1959,6 +1959,7 @@ static int add_card(struct userdata *u) {
+@@ -1953,6 +1953,8 @@ static int add_card(struct userdata *u) {
  
      u->card->userdata = u;
      u->card->set_profile = set_profile_cb;
++    pa_card_choose_initial_profile(u->card);
 +    pa_card_put(u->card);
  
      p = PA_CARD_PROFILE_DATA(u->card->active_profile);
      u->profile = *p;
 diff --git a/src/modules/macosx/module-coreaudio-device.c b/src/modules/macosx/module-coreaudio-device.c
-index 0c92d42..7190ee9 100644
+index 6c9e55d..d91c656 100644
 --- a/src/modules/macosx/module-coreaudio-device.c
 +++ b/src/modules/macosx/module-coreaudio-device.c
-@@ -807,6 +807,7 @@ int pa__init(pa_module *m) {
+@@ -821,6 +821,8 @@ int pa__init(pa_module *m) {
      pa_card_new_data_done(&card_new_data);
      u->card->userdata = u;
      u->card->set_profile = card_set_profile;
++    pa_card_choose_initial_profile(u->card);
 +    pa_card_put(u->card);
  
      u->rtpoll = pa_rtpoll_new();
      pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
 diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c
-index f906843..dce6674 100644
+index 7545aa5..718a0dd 100644
 --- a/src/modules/module-card-restore.c
 +++ b/src/modules/module-card-restore.c
-@@ -515,34 +515,38 @@ static pa_hook_result_t port_offset_change_callback(pa_core *c, pa_device_port *
-     return PA_HOOK_OK;
- }
- 
--static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new_data, struct userdata *u) {
-+static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card *card, struct userdata *u) {
-     struct entry *e;
-     void *state;
-     pa_device_port *p;
-     struct port_info *p_info;
- 
--    pa_assert(new_data);
-+    pa_assert(c);
-+    pa_assert(card);
-+    pa_assert(u);
- 
--    if (!(e = entry_read(u, new_data->name)))
-+    if (!(e = entry_read(u, card->name)))
+@@ -551,16 +551,6 @@ static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new
+     if (!(e = entry_read(u, new_data->name)))
          return PA_HOOK_OK;
  
-     if (e->profile[0]) {
+-    if (e->profile[0]) {
 -        if (!new_data->active_profile) {
 -            pa_card_new_data_set_profile(new_data, e->profile);
 -            pa_log_info("Restored profile '%s' for card %s.", new_data->active_profile, new_data->name);
 -            new_data->save_profile = true;
-+        pa_card_profile *profile;
- 
-+        profile = pa_hashmap_get(card->profiles, e->profile);
-+        if (profile) {
-+            pa_card_set_profile(card, profile, true);
-+            pa_log_info("Restored profile '%s' for card %s.", card->active_profile->name, card->name);
-         } else
+-
+-        } else
 -            pa_log_debug("Not restoring profile for card %s, because already set.", new_data->name);
-+            pa_log_debug("Tried to restore profile %s for card %s, but the card doesn't have such profile.",
-+                         e->profile, card->name);
-     }
- 
+-    }
+-
      /* Always restore the latency offsets because their
       * initial value is always 0 */
  
--    pa_log_info("Restoring port latency offsets for card %s.", new_data->name);
-+    pa_log_info("Restoring port latency offsets for card %s.", card->name);
+@@ -590,6 +580,30 @@ static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new
+     return PA_HOOK_OK;
+ }
  
-     PA_HASHMAP_FOREACH(p_info, e->ports, state)
--        if ((p = pa_hashmap_get(new_data->ports, p_info->name))) {
-+        if ((p = pa_hashmap_get(card->ports, p_info->name))) {
-             p->latency_offset = p_info->offset;
-             if (!p->preferred_profile && p_info->profile)
-                 pa_device_port_set_preferred_profile(p, p_info->profile);
++static pa_hook_result_t card_choose_initial_profile_callback(pa_core *core, pa_card *card, struct userdata *u) {
++    struct entry *e;
++
++    if (!(e = entry_read(u, card->name)))
++        return PA_HOOK_OK;
++
++    if (e->profile[0]) {
++        pa_card_profile *profile;
++
++        profile = pa_hashmap_get(card->profiles, e->profile);
++        if (profile) {
++            pa_log_info("Restoring profile '%s' for card %s.", card->active_profile->name, card->name);
++            pa_card_set_profile(card, profile, true);
++        } else {
++            pa_log_debug("Tried to restore profile %s for card %s, but the card doesn't have such profile.",
++                         e->profile, card->name);
++        }
++    }
++
++    entry_free(e);
++
++    return PA_HOOK_OK;
++}
++
+ static pa_hook_result_t card_preferred_port_changed_callback(pa_core *core, pa_card_preferred_port_changed_hook_data *data,
+                                                              struct userdata *u) {
+     struct entry *e;
+@@ -634,6 +648,8 @@ int pa__init(pa_module*m) {
+     u->module = m;
+ 
+     pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_CARD_NEW], PA_HOOK_EARLY, (pa_hook_cb_t) card_new_hook_callback, u);
++    pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_CARD_CHOOSE_INITIAL_PROFILE], PA_HOOK_NORMAL,
++                           (pa_hook_cb_t) card_choose_initial_profile_callback, u);
+     pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_CARD_PUT], PA_HOOK_NORMAL, (pa_hook_cb_t) card_put_hook_callback, u);
+     pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_CARD_PREFERRED_PORT_CHANGED], PA_HOOK_NORMAL, (pa_hook_cb_t) card_preferred_port_changed_callback, u);
+     pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_CARD_PROFILE_CHANGED], PA_HOOK_NORMAL, (pa_hook_cb_t) card_profile_changed_callback, u);
 diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
-index f92ac87..1a6e705 100644
+index 0ac70b9..a0c3d93 100644
 --- a/src/pulsecore/card.c
 +++ b/src/pulsecore/card.c
-@@ -148,6 +148,7 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
-     pa_assert(!pa_hashmap_isempty(data->profiles));
- 
-     c = pa_xnew0(pa_card, 1);
-+    c->state = PA_CARD_STATE_INIT;
- 
-     if (!(name = pa_namereg_register(core, data->name, PA_NAMEREG_CARD, c, data->namereg_fail))) {
-         pa_xfree(c);
-@@ -156,12 +157,6 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
- 
-     pa_card_new_data_set_name(data, name);
- 
--    if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_CARD_NEW], data) < 0) {
--        pa_xfree(c);
--        pa_namereg_unregister(core, name);
--        return NULL;
--    }
--
-     c->core = core;
-     c->name = pa_xstrdup(data->name);
-     c->proplist = pa_proplist_copy(data->proplist);
-@@ -184,38 +179,43 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
-     PA_HASHMAP_FOREACH(port, c->ports, state)
-         port->card = c;
+@@ -176,38 +176,56 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
+     c->preferred_input_port = data->preferred_input_port;
+     c->preferred_output_port = data->preferred_output_port;
  
 -    if (data->active_profile)
 -        if ((c->active_profile = pa_hashmap_get(c->profiles, data->active_profile)))
@@ -252,50 +273,85 @@
 -            PA_HASHMAP_FOREACH(profile, c->profiles, state)
 -                if (!c->active_profile || profile->priority > c->active_profile->priority)
 -                    c->active_profile = profile;
--        }
--        pa_assert(c->active_profile);
-+void pa_card_put(pa_card *card) {
++void pa_card_choose_initial_profile(pa_card *card) {
 +    pa_card_profile *profile;
 +    void *state;
++    pa_card_profile *best = NULL;
 +
 +    pa_assert(card);
 +
++    /* By default, pick the highest priority profile that is not unavailable,
++     * or if all profiles are unavailable, pick the profile with the highest
++     * priority regardless of its availability. */
++
 +    PA_HASHMAP_FOREACH(profile, card->profiles, state) {
 +        if (profile->available == PA_AVAILABLE_NO)
 +            continue;
 +
-+        if (!card->active_profile || profile->priority > card->active_profile->priority)
-+            card->active_profile = profile;
++        if (!best || profile->priority > best->priority)
++            best = profile;
++    }
++
++    if (!best) {
++        PA_HASHMAP_FOREACH(profile, card->profiles, state) {
++            if (!best || profile->priority > best->priority)
++                best = profile;
+         }
+-        pa_assert(c->active_profile);
      }
++    pa_assert(best);
  
 -    pa_device_init_description(c->proplist, c);
 -    pa_device_init_icon(c->proplist, true);
 -    pa_device_init_intended_roles(c->proplist);
-+    /* If all profiles are unavailable, then we still need to pick one */
-+    if (!card->active_profile) {
-+        PA_HASHMAP_FOREACH(profile, card->profiles, state)
-+            if (!card->active_profile || profile->priority > card->active_profile->priority)
-+                card->active_profile = profile;
-+    }
-+    pa_assert(card->active_profile);
++    card->active_profile = best;
++    card->save_profile = false;
  
 -    pa_assert_se(pa_idxset_put(core->cards, c, &c->index) >= 0);
-+    pa_hook_fire(&card->core->hooks[PA_CORE_HOOK_CARD_NEW], card);
++    /* Let policy modules override the default. */
++    pa_hook_fire(&card->core->hooks[PA_CORE_HOOK_CARD_CHOOSE_INITIAL_PROFILE], card);
++}
  
 -    pa_log_info("Created %u \"%s\"", c->index, c->name);
 -    pa_subscription_post(core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_NEW, c->index);
-+    pa_assert_se(pa_idxset_put(card->core->cards, card, &card->index) >= 0);
-+    card->state = PA_CARD_STATE_LINKED;
++void pa_card_put(pa_card *card) {
++    pa_assert(card);
  
 -    pa_hook_fire(&core->hooks[PA_CORE_HOOK_CARD_PUT], c);
 -    return c;
++    pa_assert_se(pa_idxset_put(card->core->cards, card, &card->index) >= 0);
++    card->linked = true;
++
 +    pa_log_info("Created %u \"%s\"", card->index, card->name);
 +    pa_hook_fire(&card->core->hooks[PA_CORE_HOOK_CARD_PUT], card);
 +    pa_subscription_post(card->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_NEW, card->index);
  }
  
  void pa_card_free(pa_card *c) {
-@@ -306,20 +306,27 @@ int pa_card_set_profile(pa_card *c, pa_card_profile *profile, bool save) {
+@@ -218,15 +236,15 @@ void pa_card_free(pa_card *c) {
+ 
+     core = c->core;
+ 
+-    pa_hook_fire(&core->hooks[PA_CORE_HOOK_CARD_UNLINK], c);
+-
+-    pa_namereg_unregister(core, c->name);
+-
+-    pa_idxset_remove_by_data(c->core->cards, c, NULL);
++    if (c->linked) {
++        pa_hook_fire(&core->hooks[PA_CORE_HOOK_CARD_UNLINK], c);
+ 
+-    pa_log_info("Freed %u \"%s\"", c->index, c->name);
++        pa_idxset_remove_by_data(c->core->cards, c, NULL);
++        pa_log_info("Freed %u \"%s\"", c->index, c->name);
++        pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_REMOVE, c->index);
++    }
+ 
+-    pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_REMOVE, c->index);
++    pa_namereg_unregister(core, c->name);
+ 
+     pa_assert(pa_idxset_isempty(c->sinks));
+     pa_idxset_free(c->sinks, NULL);
+@@ -298,20 +316,27 @@ int pa_card_set_profile(pa_card *c, pa_card_profile *profile, bool save) {
          return 0;
      }
  
@@ -307,7 +363,7 @@
 +     * be probably good to change this so that also the initial profile can be
 +     * set up in set_profile(), but if set_profile() fails, that would need
 +     * some better handling than what we do here currently. */
-+    if (c->state != PA_CARD_STATE_INIT && (r = c->set_profile(c, profile)) < 0)
++    if (c->linked && (r = c->set_profile(c, profile)) < 0)
          return r;
  
 -    pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE, c->index);
@@ -321,7 +377,7 @@
          update_port_preferred_profile(c);
  
 -    pa_hook_fire(&c->core->hooks[PA_CORE_HOOK_CARD_PROFILE_CHANGED], c);
-+    if (c->state != PA_CARD_STATE_INIT) {
++    if (c->linked) {
 +        pa_log_info("Changed profile of card %u \"%s\" to %s", c->index, c->name, profile->name);
 +        pa_hook_fire(&c->core->hooks[PA_CORE_HOOK_CARD_PROFILE_CHANGED], c);
 +        pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE, c->index);
@@ -330,37 +386,44 @@
      return 0;
  }
 diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
-index fff9057..a944301 100644
+index d4970e3..fd1fe0a 100644
 --- a/src/pulsecore/card.h
 +++ b/src/pulsecore/card.h
-@@ -34,6 +34,11 @@ typedef enum pa_available {
-     PA_AVAILABLE_YES = 2,
- } pa_available_t;
+@@ -86,6 +86,8 @@ struct pa_card {
  
-+typedef enum pa_card_state {
-+    PA_CARD_STATE_INIT,
-+    PA_CARD_STATE_LINKED,
-+} pa_card_state_t;
+     pa_suspend_cause_t suspend_cause;
+ 
++    bool linked;
 +
- struct pa_card_profile {
-     pa_card *card;
-     char *name;
-@@ -66,6 +71,7 @@ struct pa_card_profile {
+     void *userdata;
  
- struct pa_card {
-     uint32_t index;
-+    pa_card_state_t state;
-     pa_core *core;
- 
-     char *name;
-@@ -120,6 +126,7 @@ void pa_card_new_data_set_profile(pa_card_new_data *data, const char *profile);
+     int (*set_profile)(pa_card *c, pa_card_profile *profile);
+@@ -128,6 +130,13 @@ void pa_card_new_data_set_preferred_port(pa_card_new_data *data, pa_direction_t
  void pa_card_new_data_done(pa_card_new_data *data);
  
  pa_card *pa_card_new(pa_core *c, pa_card_new_data *data);
++
++/* Select the initial card profile according to the configured policies. This
++ * must be called between pa_card_new() and pa_card_put(), after the port and
++ * profile availablities have been initialized. */
++void pa_card_choose_initial_profile(pa_card *card);
++
 +void pa_card_put(pa_card *c);
  void pa_card_free(pa_card *c);
  
  void pa_card_add_profile(pa_card *c, pa_card_profile *profile);
+diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
+index 00d7f2f..802111b 100644
+--- a/src/pulsecore/core.h
++++ b/src/pulsecore/core.h
+@@ -118,6 +118,7 @@ typedef enum pa_core_hook {
+     PA_CORE_HOOK_CLIENT_PROPLIST_CHANGED,
+     PA_CORE_HOOK_CLIENT_SEND_EVENT,
+     PA_CORE_HOOK_CARD_NEW,
++    PA_CORE_HOOK_CARD_CHOOSE_INITIAL_PROFILE,
+     PA_CORE_HOOK_CARD_PUT,
+     PA_CORE_HOOK_CARD_UNLINK,
+     PA_CORE_HOOK_CARD_PREFERRED_PORT_CHANGED,
 -- 
-2.7.0
+2.8.1
 
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0004-alsa-set-availability-for-some-unavailable-profiles.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0004-alsa-set-availability-for-some-unavailable-profiles.patch
deleted file mode 100644
index e0efa70..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0004-alsa-set-availability-for-some-unavailable-profiles.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 690d567e298f6687b61c82660b051df5b25482ee Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Fri, 23 Oct 2015 13:37:11 +0300
-Subject: [PATCH 4/4] alsa: set availability for (some) unavailable profiles
-
-The alsa card hasn't so far set any availability for profiles. That
-caused an issue with some HDMI hardware: the sound card has two HDMI
-outputs, but only the second of them is actually usable. The
-unavailable port is marked as unavailable and the available port is
-marked as available, but this information isn't propagated to the
-profile availability. Without profile availability information, the
-initial profile policy picks the unavailable one, since it has a
-higher priority value.
-
-This patch adds simple logic for marking some profiles unavailable:
-if the profile only contains unavailable ports, the profile is
-unavailable too. This can be improved in the future so that if a
-profile contains sinks or sources that only contain unavailable ports,
-the profile should be marked as unavailable. Implementing that
-requires adding more information about the sinks and sources to
-pa_card_profile, however.
-
-BugLink: https://bugzilla.yoctoproject.org/show_bug.cgi?id=8448
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
-Rebased on 8.0.
-
-Upstream-Status: Denied [The patch set needs some work to be accepted.
-The review thread:
-http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/24301]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- src/modules/alsa/module-alsa-card.c | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
-index fe240f0..bdbdc12 100644
---- a/src/modules/alsa/module-alsa-card.c
-+++ b/src/modules/alsa/module-alsa-card.c
-@@ -366,6 +366,8 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) {
-     void *state;
-     pa_alsa_jack *jack;
-     struct temp_port_avail *tp, *tports;
-+    pa_device_port *port;
-+    pa_card_profile *profile;
- 
-     pa_assert(u);
- 
-@@ -412,6 +414,29 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) {
-            pa_device_port_set_available(tp->port, tp->avail);
- 
-     pa_xfree(tports);
-+
-+    /* Update profile availabilities. The logic could be improved; for now we
-+     * only set obviously unavailable profiles (those that contain only
-+     * unavailable ports) to PA_AVAILABLE_NO and all others to
-+     * PA_AVAILABLE_UNKNOWN. */
-+    PA_HASHMAP_FOREACH(profile, u->card->profiles, state) {
-+        void *state2;
-+        pa_available_t available = PA_AVAILABLE_NO;
-+
-+        /* Don't touch the "off" profile. */
-+        if (pa_hashmap_size(profile->ports) == 0)
-+            continue;
-+
-+        PA_HASHMAP_FOREACH(port, profile->ports, state2) {
-+            if (port->available != PA_AVAILABLE_NO) {
-+                available = PA_AVAILABLE_UNKNOWN;
-+                break;
-+            }
-+        }
-+
-+        pa_card_profile_set_available(profile, available);
-+    }
-+
-     return 0;
- }
- 
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0004-card-remove-pa_card_new_data.active_profile.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0004-card-remove-pa_card_new_data.active_profile.patch
new file mode 100644
index 0000000..480f2ce
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0004-card-remove-pa_card_new_data.active_profile.patch
@@ -0,0 +1,72 @@
+From 375bc56fd3d66f40a9650224e5bfea4002494ade Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen <tanuk@iki.fi>
+Date: Fri, 23 Oct 2015 13:50:35 +0300
+Subject: [PATCH 4/5] card: remove pa_card_new_data.active_profile
+
+It's not being used any more.
+
+Upstream-Status: Accepted [expected in 10.0]
+
+Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
+---
+ src/pulsecore/card.c | 8 --------
+ src/pulsecore/card.h | 5 -----
+ 2 files changed, 13 deletions(-)
+
+diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
+index a0c3d93..bc5b75b 100644
+--- a/src/pulsecore/card.c
++++ b/src/pulsecore/card.c
+@@ -96,13 +96,6 @@ void pa_card_new_data_set_name(pa_card_new_data *data, const char *name) {
+     data->name = pa_xstrdup(name);
+ }
+ 
+-void pa_card_new_data_set_profile(pa_card_new_data *data, const char *profile) {
+-    pa_assert(data);
+-
+-    pa_xfree(data->active_profile);
+-    data->active_profile = pa_xstrdup(profile);
+-}
+-
+ void pa_card_new_data_set_preferred_port(pa_card_new_data *data, pa_direction_t direction, pa_device_port *port) {
+     pa_assert(data);
+ 
+@@ -125,7 +118,6 @@ void pa_card_new_data_done(pa_card_new_data *data) {
+         pa_hashmap_free(data->ports);
+ 
+     pa_xfree(data->name);
+-    pa_xfree(data->active_profile);
+ }
+ 
+ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
+diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
+index fd1fe0a..5699475 100644
+--- a/src/pulsecore/card.h
++++ b/src/pulsecore/card.h
+@@ -101,15 +101,11 @@ typedef struct pa_card_new_data {
+     pa_module *module;
+ 
+     pa_hashmap *profiles;
+-    char *active_profile;
+-
+     pa_hashmap *ports;
+     pa_device_port *preferred_input_port;
+     pa_device_port *preferred_output_port;
+ 
+     bool namereg_fail:1;
+-
+-    bool save_profile:1;
+ } pa_card_new_data;
+ 
+ typedef struct {
+@@ -125,7 +121,6 @@ void pa_card_profile_set_available(pa_card_profile *c, pa_available_t available)
+ 
+ pa_card_new_data *pa_card_new_data_init(pa_card_new_data *data);
+ void pa_card_new_data_set_name(pa_card_new_data *data, const char *name);
+-void pa_card_new_data_set_profile(pa_card_new_data *data, const char *profile);
+ void pa_card_new_data_set_preferred_port(pa_card_new_data *data, pa_direction_t direction, pa_device_port *port);
+ void pa_card_new_data_done(pa_card_new_data *data);
+ 
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0005-alsa-set-availability-for-some-unavailable-profiles.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0005-alsa-set-availability-for-some-unavailable-profiles.patch
new file mode 100644
index 0000000..5563d2c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0005-alsa-set-availability-for-some-unavailable-profiles.patch
@@ -0,0 +1,79 @@
+From ae6a01ba204b480bda6a5b4431be3d22e53a7006 Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen <tanuk@iki.fi>
+Date: Fri, 23 Oct 2015 13:37:11 +0300
+Subject: [PATCH 5/5] alsa: set availability for (some) unavailable profiles
+
+The alsa card hasn't so far set any availability for profiles. That
+caused an issue with some HDMI hardware: the sound card has two HDMI
+outputs, but only the second of them is actually usable. The
+unavailable port is marked as unavailable and the available port is
+marked as available, but this information isn't propagated to the
+profile availability. Without profile availability information, the
+initial profile policy picks the unavailable one, since it has a
+higher priority value.
+
+This patch adds simple logic for marking some profiles unavailable:
+if the profile only contains unavailable ports, the profile is
+unavailable too. This can be improved in the future so that if a
+profile contains sinks or sources that only contain unavailable ports,
+the profile should be marked as unavailable. Implementing that
+requires adding more information about the sinks and sources to
+pa_card_profile, however.
+
+BugLink: https://bugzilla.yoctoproject.org/show_bug.cgi?id=8448
+
+Upstream-Status: Accepted [expected in 10.0]
+
+Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
+---
+ src/modules/alsa/module-alsa-card.c | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
+index 1976230..323e08a 100644
+--- a/src/modules/alsa/module-alsa-card.c
++++ b/src/modules/alsa/module-alsa-card.c
+@@ -366,6 +366,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) {
+     void *state;
+     pa_alsa_jack *jack;
+     struct temp_port_avail *tp, *tports;
++    pa_card_profile *profile;
+ 
+     pa_assert(u);
+ 
+@@ -426,6 +427,32 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) {
+         if (tp->avail == PA_AVAILABLE_NO)
+            pa_device_port_set_available(tp->port, tp->avail);
+ 
++    /* Update profile availabilities. The logic could be improved; for now we
++     * only set obviously unavailable profiles (those that contain only
++     * unavailable ports) to PA_AVAILABLE_NO and all others to
++     * PA_AVAILABLE_UNKNOWN. */
++    PA_HASHMAP_FOREACH(profile, u->card->profiles, state) {
++        pa_device_port *port;
++        void *state2;
++        pa_available_t available = PA_AVAILABLE_NO;
++
++        /* Don't touch the "off" profile. */
++        if (profile->n_sources == 0 && profile->n_sinks == 0)
++            continue;
++
++        PA_HASHMAP_FOREACH(port, u->card->ports, state2) {
++            if (!pa_hashmap_get(port->profiles, profile->name))
++                continue;
++
++            if (port->available != PA_AVAILABLE_NO) {
++                available = PA_AVAILABLE_UNKNOWN;
++                break;
++            }
++        }
++
++        pa_card_profile_set_available(profile, available);
++    }
++
+     pa_xfree(tports);
+     return 0;
+ }
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio_8.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio_8.0.bb
deleted file mode 100644
index b01ba8f..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio_8.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require pulseaudio.inc
-
-SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
-           file://0001-padsp-Make-it-compile-on-musl.patch \
-           file://0001-client-conf-Add-allow-autospawn-for-root.patch \
-           file://volatiles.04_pulse \
-           file://0001-card-add-pa_card_profile.ports.patch \
-           file://0002-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch \
-           file://0003-card-move-profile-selection-after-pa_card_new.patch \
-           file://0004-alsa-set-availability-for-some-unavailable-profiles.patch \
-           file://0001-Revert-module-switch-on-port-available-Route-to-pref.patch \
-"
-SRC_URI[md5sum] = "8678442ba0bb4b4c33ac6f62542962df"
-SRC_URI[sha256sum] = "690eefe28633466cfd1ab9d85ebfa9376f6b622deec6bfee5091ac9737cd1989"
-
-do_compile_prepend() {
-    mkdir -p ${S}/libltdl
-    cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl
-}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio_9.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio_9.0.bb
new file mode 100644
index 0000000..00f5442
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio_9.0.bb
@@ -0,0 +1,19 @@
+require pulseaudio.inc
+
+SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
+           file://0001-padsp-Make-it-compile-on-musl.patch \
+           file://0001-client-conf-Add-allow-autospawn-for-root.patch \
+           file://0001-alsa-bluetooth-fail-if-user-requested-profile-doesn-.patch \
+           file://0002-card-don-t-allow-the-CARD_NEW-hook-to-fail.patch \
+           file://0003-card-move-profile-selection-after-pa_card_new.patch \
+           file://0004-card-remove-pa_card_new_data.active_profile.patch \
+           file://0005-alsa-set-availability-for-some-unavailable-profiles.patch \
+           file://volatiles.04_pulse \
+"
+SRC_URI[md5sum] = "da7162541b3a9bc20576dbd0d7d1489a"
+SRC_URI[sha256sum] = "c3d3d66b827f18fbe903fe3df647013f09fc1e2191c035be1ee2d82a9e404686"
+
+do_compile_prepend() {
+    mkdir -p ${S}/libltdl
+    cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl
+}
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/webp/libwebp_0.5.0.bb b/import-layers/yocto-poky/meta/recipes-multimedia/webp/libwebp_0.5.0.bb
deleted file mode 100644
index c89adac..0000000
--- a/import-layers/yocto-poky/meta/recipes-multimedia/webp/libwebp_0.5.0.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "WebP is an image format designed for the Web"
-DESCRIPTION = "WebP is a method of lossy and lossless compression that can be \
-               used on a large variety of photographic, translucent and \
-               graphical images found on the web. The degree of lossy \
-               compression is adjustable so a user can choose the trade-off \
-               between file size and image quality. WebP typically achieves \
-               an average of 30% more compression than JPEG and JPEG 2000, \
-               without loss of image quality."
-HOMEPAGE = "https://developers.google.com/speed/webp/"
-SECTION = "libs"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6e8dee932c26f2dab503abf70c96d8bb \
-                    file://PATENTS;md5=c6926d0cb07d296f886ab6e0cc5a85b7"
-
-SRC_URI = "http://downloads.webmproject.org/releases/webp/${BP}.tar.gz"
-SRC_URI[md5sum] = "ba81eb9bf23e3c69a2f5cc8dcdb5938f"
-SRC_URI[sha256sum] = "5cd3bb7b623aff1f4e70bd611dc8dbabbf7688fd5eb225b32e02e09e37dfb274"
-
-UPSTREAM_CHECK_URI = "http://downloads.webmproject.org/releases/webp/index.html"
-
-EXTRA_OECONF = " \
-    --disable-experimental \
-    --disable-wic \
-    --enable-libwebpmux \
-    --enable-libwebpdemux \
-    --enable-threading \
-"
-
-inherit autotools lib_package
-
-PACKAGECONFIG ??= ""
-
-# libwebpdecoder is a subset of libwebp, don't build it unless requested
-PACKAGECONFIG[decoder] = "--enable-libwebpdecoder,--disable-libwebpdecoder"
-
-# Apply for examples programs: cwebp and dwebp
-PACKAGECONFIG[gif] = "--enable-gif,--disable-gif,giflib"
-PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
-PACKAGECONFIG[png] = "--enable-png,--disable-png,,libpng"
-PACKAGECONFIG[tiff] = "--enable-tiff,--disable-tiff,tiff"
-
-# Apply only for example program vwebp
-PACKAGECONFIG[gl] = "--enable-gl,--disable-gl,mesa-glut"
-
-PACKAGES =+ "${PN}-gif2webp"
-
-DESCRIPTION_${PN}-gif2webp = "Simple tool to convert animated GIFs to WebP"
-FILES_${PN}-gif2webp = "${bindir}/gif2webp"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/webp/libwebp_0.5.1.bb b/import-layers/yocto-poky/meta/recipes-multimedia/webp/libwebp_0.5.1.bb
new file mode 100644
index 0000000..b882db7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/webp/libwebp_0.5.1.bb
@@ -0,0 +1,54 @@
+SUMMARY = "WebP is an image format designed for the Web"
+DESCRIPTION = "WebP is a method of lossy and lossless compression that can be \
+               used on a large variety of photographic, translucent and \
+               graphical images found on the web. The degree of lossy \
+               compression is adjustable so a user can choose the trade-off \
+               between file size and image quality. WebP typically achieves \
+               an average of 30% more compression than JPEG and JPEG 2000, \
+               without loss of image quality."
+HOMEPAGE = "https://developers.google.com/speed/webp/"
+SECTION = "libs"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6e8dee932c26f2dab503abf70c96d8bb \
+                    file://PATENTS;md5=c6926d0cb07d296f886ab6e0cc5a85b7"
+
+SRC_URI = "http://downloads.webmproject.org/releases/webp/${BP}.tar.gz"
+SRC_URI[md5sum] = "3d7db92ebba5b4f679413d25c6040881"
+SRC_URI[sha256sum] = "6ad66c6fcd60a023de20b6856b03da8c7d347269d76b1fd9c3287e8b5e8813df"
+
+UPSTREAM_CHECK_URI = "http://downloads.webmproject.org/releases/webp/index.html"
+
+EXTRA_OECONF = " \
+    --disable-experimental \
+    --disable-wic \
+    --enable-libwebpmux \
+    --enable-libwebpdemux \
+    --enable-threading \
+"
+# Do not trust configure to determine if neon is available.
+#
+EXTRA_OECONF_append_arm = " \
+    ${@bb.utils.contains("TUNE_FEATURES","neon","--enable-neon","--disable-neon",d)} \
+"
+
+inherit autotools lib_package
+
+PACKAGECONFIG ??= ""
+
+# libwebpdecoder is a subset of libwebp, don't build it unless requested
+PACKAGECONFIG[decoder] = "--enable-libwebpdecoder,--disable-libwebpdecoder"
+
+# Apply for examples programs: cwebp and dwebp
+PACKAGECONFIG[gif] = "--enable-gif,--disable-gif,giflib"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
+PACKAGECONFIG[png] = "--enable-png,--disable-png,,libpng"
+PACKAGECONFIG[tiff] = "--enable-tiff,--disable-tiff,tiff"
+
+# Apply only for example program vwebp
+PACKAGECONFIG[gl] = "--enable-gl,--disable-gl,mesa-glut"
+
+PACKAGES =+ "${PN}-gif2webp"
+
+DESCRIPTION_${PN}-gif2webp = "Simple tool to convert animated GIFs to WebP"
+FILES_${PN}-gif2webp = "${bindir}/gif2webp"
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/x264/x264_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/x264/x264_git.bb
index 0a69909..393310f 100644
--- a/import-layers/yocto-poky/meta/recipes-multimedia/x264/x264_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-multimedia/x264/x264_git.bb
@@ -42,14 +42,12 @@
     ./configure ${EXTRA_OECONF}
 }
 
-# Get rid of -e
-EXTRA_OEMAKE = ""
 AS = "${TARGET_PREFIX}gcc"
 
 do_install() {
     oe_runmake install DESTDIR=${D}
 }
 
-# PIC can't be enabled for 32-bit x86
-INSANE_SKIP_${PN}_append_x86 = " textrel"
+# PIC can't be enabled for few BSP's
+INSANE_SKIP_${PN}_append = " textrel"
 
diff --git a/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt-sdk.bb b/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt-sdk.bb
index db7d581..7ddf671 100644
--- a/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt-sdk.bb
+++ b/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt-sdk.bb
@@ -1,5 +1,13 @@
 require recipes-core/images/core-image-minimal.bb
 
+# Skip processing of this recipe if linux-yocto-rt is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers.
+python () {
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != "linux-yocto-rt":
+        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
 DESCRIPTION = "Small image capable of booting a device with a test suite and \
 tools for real-time use. It includes the full meta-toolchain, development \
 headers and libraries to form a standalone SDK."
diff --git a/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt.bb b/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt.bb
index cab6f8b..9c86f25 100644
--- a/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt.bb
+++ b/import-layers/yocto-poky/meta/recipes-rt/images/core-image-rt.bb
@@ -1,5 +1,13 @@
 require recipes-core/images/core-image-minimal.bb
 
+# Skip processing of this recipe if linux-yocto-rt is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers.
+python () {
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != "linux-yocto-rt":
+        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
 DESCRIPTION = "A small image just capable of allowing a device to boot plus a \
 real-time test suite and tools appropriate for real-time use."
 DEPENDS = "linux-yocto-rt"
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Set-CC-AR-variable-only-if-it-doesn-t-have-.patch b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Set-CC-AR-variable-only-if-it-doesn-t-have-.patch
deleted file mode 100644
index 00fcc7d..0000000
--- a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Set-CC-AR-variable-only-if-it-doesn-t-have-.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 9640dde4241e1314b8e8ea35b0c8dab0b30ae51f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 3 Jan 2016 10:50:56 -0800
-Subject: [PATCH] Makefile: Set CC/AR variable only if it doesn't have a value
-
-This helps it compile with clang or any other compilers besides gcc
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 1e4b7d1..2c2d396 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 0.96
--CC=$(CROSS_COMPILE)gcc
--AR=$(CROSS_COMPILE)ar
-+CC?=$(CROSS_COMPILE)gcc
-+AR?=$(CROSS_COMPILE)ar
- 
- OBJDIR = bld
- 
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/rt_bmark.py b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/rt_bmark.py
index e2280e4..080a655 100755
--- a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/rt_bmark.py
+++ b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/rt_bmark.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 
 # SPDX-License-Identifier:     BSD-3-Clause
@@ -106,8 +106,8 @@
 
 def log(*msg):
         tmp = "".join(map(str, msg)) # 'map(str, ...' allows numbers
-        for line in tmp.split("\n"):
-                print "#", line
+        for line in tmp.splitlines():
+                print("#", line)
 
 #-------------------------------------------------------------------------------
 # Like log(), but with a timestamp added
@@ -265,7 +265,7 @@
        "-d", str(interval_delta),
        "-l", str(loop_count)
        )
-rex = re.compile("C:\s*(\d+).*Min:\s*(\d+).*Avg:\s*(\d+).*Max:\s*(\d+)")
+rex = re.compile(b"C:\s*(\d+).*Min:\s*(\d+).*Avg:\s*(\d+).*Max:\s*(\d+)")
 
 def run_cyclictest_once():
         res = subprocess.check_output(cmd)
@@ -283,7 +283,7 @@
         avg_sum = 0
         avg_cnt = 0
 
-        for line in res.split("\n"):
+        for line in res.splitlines():
                 m = rex.search(line)
                 if m is not None:
                         minlist.append(int(m.group(2)))
@@ -324,7 +324,7 @@
         t = time.time()
         max_list = []
 
-        for i in xrange(0, suite_size):
+        for i in range(0, suite_size):
                 tmp_min, tmp_avg, tmp_max = run_cyclictest_once()
 
                 msg = "%2d/%2d:" % (i+1, suite_size)
@@ -376,11 +376,11 @@
                         log()
                         log("PASS")
 
-                        print
-                        print tc_name(name), "[Min/us,Avg/us,Max/us]:",
-                        print "%d,%.1f,%d" % (bm_min,bm_avg, bm_max)
-                        print "PASS:", tc_name(name)
-                        print
+                        print()
+                        print(tc_name(name), "[Min/us,Avg/us,Max/us]:",)
+                        print("%d,%.1f,%d" % (bm_min,bm_avg, bm_max))
+                        print("PASS:", tc_name(name))
+                        print()
 
                 except Exception:
                         log()
@@ -391,9 +391,9 @@
                         log("WD: ", os.getcwd())
                         log()
                         log("FAIL")
-                        print
-                        print "FAIL:", tc_name(name)
-                        print
+                        print()
+                        print("FAIL:", tc_name(name))
+                        print()
 
 #-------------------------------------------------------------------------------
 
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/run-ptest b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/run-ptest
index 8e6d3e3..b7c5e29 100644
--- a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/run-ptest
+++ b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/files/run-ptest
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-python ./rt_bmark.py
+python3 ./rt_bmark.py
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_0.96.bb b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_0.96.bb
deleted file mode 100644
index 962069e..0000000
--- a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_0.96.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Hardware latency detector"
-DESCRIPTION = "Python utility for controlling the kernel hardware latency detection module (hwlat_detector.ko)."
-HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
-SECTION = "tests"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-require rt-tests.inc
-
-EXTRA_OEMAKE += "PYLIB=${libdir}/python${PYTHON_BASEVERSION}/dist-packages"
-
-do_compile() {
-	oe_runmake hwlatdetect
-}
-
-do_install() {
-        oe_runmake install_hwlatdetect DESTDIR=${D} SBINDIR=${sbindir} \
-	           MANDIR=${mandir} INCLUDEDIR=${includedir}
-}
-
-FILES_${PN} += "${libdir}/python${PYTHON_BASEVERSION}/dist-packages/hwlatdetect.py"
-RDEPENDS_${PN} = "python python-subprocess python-textutils"
-RRECOMMENDS_${PN} = "kernel-module-hwlat-detector"
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_2.0.bb b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_2.0.bb
new file mode 100644
index 0000000..012b2dd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_2.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Hardware latency detector"
+DESCRIPTION = "Python utility for controlling the kernel hardware latency detection module (hwlat_detector.ko)."
+HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
+SECTION = "tests"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+require rt-tests.inc
+inherit python3-dir
+
+EXTRA_OEMAKE += "PYLIB=${libdir}/python${PYTHON_BASEVERSION}/dist-packages"
+
+do_compile() {
+	oe_runmake hwlatdetect
+}
+
+do_install() {
+        oe_runmake install_hwlatdetect DESTDIR=${D} SBINDIR=${sbindir} \
+	           MANDIR=${mandir} INCLUDEDIR=${includedir}
+
+        sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${libdir}/python${PYTHON_BASEVERSION}/dist-packages/hwlatdetect.py
+}
+
+FILES_${PN} += "${libdir}/python${PYTHON_BASEVERSION}/dist-packages/hwlatdetect.py"
+RDEPENDS_${PN} = "python3 python3-subprocess python3-textutils"
+RRECOMMENDS_${PN} = "kernel-module-hwlat-detector"
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests.inc b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests.inc
index 76f9b3a..d832828 100644
--- a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests.inc
+++ b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests.inc
@@ -1,13 +1,9 @@
 # Version v0.96
-PV = "0.96"
-SRCREV = "24f8c0175e04bab78e7555698e34d7002b01c87f"
+SRCREV = "e1b1537a20b35af75a49bf55dcf70296f8a62467"
 
 SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git"
 
 S = "${WORKDIR}/git"
 
-# need to append rt-tests' default CFLAGS to ours
-CFLAGS += "-I${S}/src/include -D_GNU_SOURCE -Wall -Wno-nonnull"
-
 # calling 'uname -m' is broken on crossbuilds
 EXTRA_OEMAKE = "NUMA=0"
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_0.96.bb b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_0.96.bb
deleted file mode 100644
index 2f96fea..0000000
--- a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_0.96.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Real-Time preemption testcases"
-HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
-SECTION = "tests"
-DEPENDS = "linux-libc-headers virtual/libc"
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
-                    file://src/cyclictest/cyclictest.c;beginline=7;endline=9;md5=e768b8da44555fe63f65e5c497844cb5 \
-                    file://src/pi_tests/pi_stress.c;beginline=6;endline=19;md5=bd426a634a43ec612e9fbf125dfcc949"
-
-require rt-tests.inc
-inherit ptest
-
-SRC_URI += "file://0001-Makefile-Set-CC-AR-variable-only-if-it-doesn-t-have-.patch \
-            file://run-ptest \
-            file://rt_bmark.py \
-           "
-# Do not install hwlatdetect
-EXTRA_OEMAKE += "PYLIB='' CROSS_COMPILE=${TARGET_PREFIX}"
-
-CFLAGS_prepend = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
-
-do_install() {
-        oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \
-                           INCLUDEDIR=${includedir}
-}
-
-do_install_ptest() {
-        cp ${WORKDIR}/rt_bmark.py ${D}${PTEST_PATH}
-}
-
-RDEPENDS_${PN}-ptest += " stress python python-subprocess python-multiprocessing python-datetime python-re python-lang"
-
-FILES_${PN} += "${prefix}/src/backfire"
diff --git a/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_2.0.bb b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_2.0.bb
new file mode 100644
index 0000000..4336c50
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_2.0.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Real-Time preemption testcases"
+HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
+SECTION = "tests"
+DEPENDS = "linux-libc-headers virtual/libc"
+LICENSE = "GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://src/cyclictest/cyclictest.c;beginline=7;endline=9;md5=e768b8da44555fe63f65e5c497844cb5 \
+                    file://src/pi_tests/pi_stress.c;beginline=6;endline=19;md5=bd426a634a43ec612e9fbf125dfcc949"
+
+require rt-tests.inc
+inherit ptest
+
+SRC_URI += " \
+            file://run-ptest \
+            file://rt_bmark.py \
+           "
+# Do not install hwlatdetect
+EXTRA_OEMAKE += "PYLIB=''"
+
+do_install() {
+        oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \
+                           INCLUDEDIR=${includedir}
+}
+
+do_install_ptest() {
+        cp ${WORKDIR}/rt_bmark.py ${D}${PTEST_PATH}
+}
+
+RDEPENDS_${PN}-ptest += " stress python3 python3-subprocess python3-multiprocessing python3-datetime python3-re python3-lang python3-misc"
+
+FILES_${PN} += "${prefix}/src/backfire"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/gtk-engines/gtk-sato-engine.inc b/import-layers/yocto-poky/meta/recipes-sato/gtk-engines/gtk-sato-engine.inc
deleted file mode 100644
index 93538ed..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/gtk-engines/gtk-sato-engine.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Sato theme engine for GTK+"
-HOMEPAGE = "http://www.o-hand.com"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "LGPLv2.1 & LGPLv2+"
-
-SECTION = "x11/base"
-DEPENDS = "gtk+"
-RDEPENDS_gtk-theme-sato = "gtk-sato-engine"
-
-inherit distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-
-PACKAGES += "gtk-theme-sato"
-FILES_${PN} = "${libdir}/gtk-2.0/*/engines/*.so "
-FILES_${PN}-dev = "${libdir}/gtk-2.0/*/engines/*.la"
-FILES_gtk-theme-sato = "${datadir}/icons ${datadir}/themes"
-
-inherit autotools-brokensep pkgconfig
-
-do_configure_prepend() {
-	for i in `ls gtk-common`; do
-		ln -sf ../gtk-common/$i gtk2-engine/$i
-	done
-}
diff --git a/import-layers/yocto-poky/meta/recipes-sato/gtk-engines/gtk-sato-engine_git.bb b/import-layers/yocto-poky/meta/recipes-sato/gtk-engines/gtk-sato-engine_git.bb
deleted file mode 100644
index da4d98a..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/gtk-engines/gtk-sato-engine_git.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require gtk-sato-engine.inc
-
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-                    file://src/sato-utils.h;endline=24;md5=708f28cfe7fe028d497aaf4389b80b62 \
-                    file://src/sato-main.c;endline=24;md5=b5e5dddebca570275becb51b526e4c5a"
-
-SRCREV = "4740ad8d53aba4368ce3e03b06cfdc69eb86dcdc"
-PV = "0.3.3+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF += "${@bb.utils.contains('MACHINE_FEATURES', 'qvga', '--with-mode=qvga', '',d)}"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/l3afpad/l3afpad_git.bb b/import-layers/yocto-poky/meta/recipes-sato/l3afpad/l3afpad_git.bb
new file mode 100644
index 0000000..ccfda26
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/l3afpad/l3afpad_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Simple GTK+ Text Editor"
+HOMEPAGE = "https://github.com/stevenhoneyman/l3afpad"
+
+# Note that COPYING seems to mistakenly contain LGPLv2.1.
+# The source code is marked GPLv2+ and COPYING used to contain
+# that as well.
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://src/l3afpad.h;endline=20;md5=8848fd645cd45115d8cb47ca5c42a50e \
+                    file://src/utils.c;endline=20;md5=ae4792f69d3bb7b7ba91d582ba9b1a05"
+
+DEPENDS = "gtk+3 intltool-native gettext-native"
+
+PV = "0.8.18.1.11+git${SRCPV}"
+SRC_URI = "git://github.com/stevenhoneyman/l3afpad.git"
+SRCREV ="3cdccdc9505643e50f8208171d9eee5de11a42ff"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig distro_features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+EXTRA_OECONF = "--disable-emacs --disable-print"
+FILES_${PN} += "${datadir}/icons"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/leafpad/files/leafpad.desktop b/import-layers/yocto-poky/meta/recipes-sato/leafpad/files/leafpad.desktop
deleted file mode 100644
index c7e2d5b..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/leafpad/files/leafpad.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Notes
-Exec=/usr/bin/leafpad
-Comment=Text Editor
-Icon=accessories-text-editor
-Terminal=false
-Type=Application
-Categories=GTK;Utility;TextEditor;
-X-MB-SingleInstance=true
-StartupNotify=true
diff --git a/import-layers/yocto-poky/meta/recipes-sato/leafpad/files/owl-menu.patch b/import-layers/yocto-poky/meta/recipes-sato/leafpad/files/owl-menu.patch
deleted file mode 100644
index 2ebf74a..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/leafpad/files/owl-menu.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Upstream-Status: Inappropriate [enable feature]
-
---- tmp/src/menu.c.orig	2007-04-23 12:08:41.000000000 +0100
-+++ tmp/src/menu.c	2007-04-23 12:08:41.000000000 +0100
-@@ -152,7 +152,7 @@
- 	}
- 	
- 	accel_group = gtk_accel_group_new();
--	ifactory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
-+	ifactory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", accel_group);
- 	gtk_item_factory_set_translate_func(ifactory, menu_translate, NULL, NULL);
- 	gtk_item_factory_create_items(ifactory, nmenu_items, menu_items, NULL);
- 	gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
-
---- tmp/src/window.c.orig	2007-04-23 12:14:07.000000000 +0100
-+++ tmp/src/window.c	2007-04-23 12:14:07.000000000 +0100
-@@ -18,6 +18,8 @@
-  */
- 
- #include "leafpad.h"
-+#include <libowl/owlwindowmenu.h>
-+
- /*
- static void cb_scroll_event(GtkAdjustment *adj, GtkWidget *view)
- {
-@@ -52,7 +54,6 @@
- 	gtk_container_add(GTK_CONTAINER(window), vbox);
- 	
- 	menubar = create_menu_bar(window);
--	gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
- 	
- 	sw = gtk_scrolled_window_new(NULL, NULL);
- 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
-
---- tmp/src/main.c.orig	2007-04-23 12:15:03.000000000 +0100
-+++ tmp/src/main.c	2007-04-23 12:15:03.000000000 +0100
-@@ -244,6 +244,7 @@
- 	Conf *conf;
- 	GtkItemFactory *ifactory;
- 	gchar *stdin_data = NULL;
-+	GtkWidget *menu;
- 	
- 	bindtextdomain(PACKAGE, LOCALEDIR);
- 	bind_textdomain_codeset(PACKAGE, "UTF-8");
-@@ -293,7 +294,10 @@
- 		conf->autoindent);
- 	
- 	gtk_widget_show_all(pub->mw->window);
-+	owl_set_window_menu (GTK_WINDOW(pub->mw->window),
-+			     GTK_MENU(pub->mw->menubar));
-+	
- 	g_free(conf->fontname);
- 	g_free(conf);
- 	
-
---- tmp/src/Makefile.am.orig	2007-04-23 12:17:54.000000000 +0100
-+++ tmp/src/Makefile.am	2007-04-23 12:17:54.000000000 +0100
-@@ -27,4 +27,4 @@
- 	i18n.h
- 
- leafpad_CFLAGS  = $(GTK_CFLAGS) $(GNOMEPRINT_CFLAGS)
--leafpad_LDADD   = $(GTK_LIBS) $(INTLLIBS) $(GNOMEPRINT_LIBS)
-+leafpad_LDADD   = $(GTK_LIBS) $(INTLLIBS) $(GNOMEPRINT_LIBS) -lowl
diff --git a/import-layers/yocto-poky/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb b/import-layers/yocto-poky/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb
deleted file mode 100644
index 093b89f..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Simple GTK+ Text Editor"
-HOMEPAGE = "http://tarot.freeshell.org/leafpad/"
-
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://src/leafpad.h;endline=20;md5=d3d6a89f5e61e8b13bdea537511ba1fa \
-                    file://src/utils.c;endline=20;md5=0d2cc6584ba3202448bb274f62739571"
-
-DEPENDS = "gtk+ intltool-native libowl gettext-native"
-# The libowl requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
-	   file://leafpad.desktop"
-
-SRC_URI[md5sum] = "254a72fc67505e3aa52884c729cd7b97"
-SRC_URI[sha256sum] = "959d22ae07f22803bc66ff40d373a854532a6e4732680bf8a96a3fbcb9f80a2c"
-PR = "r2"
-
-SRC_URI_append_poky = " file://owl-menu.patch;apply=yes "
-
-inherit autotools pkgconfig distro_features_check
-
-EXTRA_OECONF = " --enable-chooser --disable-emacs --disable-print"
-
-do_install_append () {
-        install -d ${D}/${datadir}
-        install -d ${D}/${datadir}/applications
-        install -m 0644 ${WORKDIR}/leafpad.desktop ${D}/${datadir}/applications
-}
-
-FILES_${PN} += "${datadir}/applications/leafpad.desktop"
-
-PACKAGES += "leafpad-stock-icons"
-FILES_leafpad-stock-icons = "${datadir}/icons/hicolor/"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/libowl/libowl_git.bb b/import-layers/yocto-poky/meta/recipes-sato/libowl/libowl_git.bb
deleted file mode 100644
index 9cc47db..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/libowl/libowl_git.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "OpenedHand Widget Library"
-HOMEPAGE = "http://www.o-hand.com"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2 & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://libowl/owlpaned.h;endline=20;md5=7fef844c4cc01b10541a7ab6ab5971af \
-                    file://libowl/owltreemodelslice.h;endline=20;md5=a5421f2cdae8debe5e4c48c09a02beb9 \
-                    file://libowl/owlcolourswatch.h;endline=24;md5=063c415c58719d536990ca8f606b5730"
-
-SECTION = "libs"
-DEPENDS = "gtk+"
-SRCREV = "6ebc8ac8f8575278dd40a535cadefa26374e44b1"
-PV = "0.1+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig distro_features_check
-
-# Requires gdk/gdkx.h which is provided by gtk when x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/files/no-handed.patch b/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/files/no-handed.patch
index 8256949..1cb184f 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/files/no-handed.patch
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/files/no-handed.patch
@@ -1,10 +1,13 @@
 Upstream-Status: Inappropriate [configuration]
+---
+ appearance/mb-appearance.c | 4 ++++
+ 1 file changed, 4 insertions(+)
 
-Index: appearance/mb-appearance.c
-===================================================================
---- appearance/mb-appearance.c	(revision 1614)
-+++ appearance/mb-appearance.c	(working copy)
-@@ -300,11 +300,13 @@
+diff --git a/appearance/mb-appearance.c b/appearance/mb-appearance.c
+index 6af8376..71fd57b 100644
+--- a/appearance/mb-appearance.c
++++ b/appearance/mb-appearance.c
+@@ -317,11 +317,13 @@ on_gconf_value_changed (GConfClient* client, const gchar* key, GConfValue* value
      gtk_font_button_set_font_name (GTK_FONT_BUTTON (font_button),
                                     gconf_value_get_string (value));
    } else if (strcmp (key, HANDED_KEY) == 0) {
@@ -18,18 +21,19 @@
    }
  }
  
-@@ -395,12 +397,13 @@
-   gtk_container_add (GTK_CONTAINER (align), font_button);
+@@ -408,10 +410,12 @@ main (int argc, char **argv) {
  
    /* Left/Right Handed */
--  
+   
 +#if 0
-   frame = new_frame (_("Orientation"), &align);
-   gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 0);
    handed_check = gtk_check_button_new_with_mnemonic (_("_Left-handed"));
+   frame = new_frame (_("Orientation"),handed_check);
+   gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 0);
    g_signal_connect (handed_check, "toggled", G_CALLBACK (on_handed_set), NULL);
-   gtk_container_add (GTK_CONTAINER (align), handed_check);
 +#endif
  
    gconf_client_add_dir (gconf, INTERFACE_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
    g_signal_connect (gconf, "value-changed", G_CALLBACK (on_gconf_value_changed), NULL);
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb
new file mode 100644
index 0000000..b993a94
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Matchbox GTK+ theme configuration application"
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://appearance/mb-appearance.c;endline=25;md5=ea92333cf8a6802639d62d874c114a28"
+
+DEPENDS = "gconf gtk+3"
+RDEPENDS_${PN} = "settings-daemon"
+
+# SRCREV tagged 0.2
+SRCREV = "ef2192ce98d9374ffdad5f78544c3f8f353c16aa"
+SRC_URI = "git://git.yoctoproject.org/${BPN} \
+           file://no-handed.patch"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig distro_features_check
+
+# The settings-daemon requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_git.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_git.bb
deleted file mode 100644
index 5f73a4c..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_git.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Matchbox GTK+ theme configuration application"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://appearance/mb-appearance.c;endline=25;md5=ea92333cf8a6802639d62d874c114a28"
-
-DEPENDS = "gconf gtk+"
-RDEPENDS_${PN} = "settings-daemon"
-
-SRCREV = "3ed74dfb7c57be088a5ab36e446c0ccde9fa1028"
-PV = "0.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN} \
-        file://no-handed.patch;striplevel=0"
-
-inherit autotools pkgconfig distro_features_check
-
-# The settings-daemon requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_git.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_git.bb
deleted file mode 100644
index 1979cbb..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_git.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Matchbox desktop folders for the Sato environment"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-SECTION = "x11"
-DEPENDS = ""
-RCONFLICTS_${PN} = "matchbox-common"
-
-SRCREV = "810b0b08eb79e4685202da2ec347b990bb467e07"
-PV = "0.1+git${SRCPV}"
-PR = "r1"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-FILES_${PN} += "${datadir}"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/0001-Do-nothing-on-delete-event-when-not-STANDALONE.patch b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/0001-Do-nothing-on-delete-event-when-not-STANDALONE.patch
deleted file mode 100644
index 46397dc..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/0001-Do-nothing-on-delete-event-when-not-STANDALONE.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 5fe37ef38500f858a22ecdf9bf69bf06e213bf68 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 22 Mar 2016 12:41:35 +0200
-Subject: [PATCH] Do nothing on delete-event when not STANDALONE
-
-This prevents an opportunistic alt-F4 from closing the desktop.
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-
-Upstream-Status: Backport
----
- src/desktop.c | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/src/desktop.c b/src/desktop.c
-index d4fc2fb..94b4ddf 100644
---- a/src/desktop.c
-+++ b/src/desktop.c
-@@ -122,6 +122,15 @@ load_items (TakuMenu *menu)
- 
- }
- 
-+#ifndef STANDALONE
-+static gboolean
-+delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data)
-+{
-+  /* prevent default handler from destroying the window */
-+  return TRUE;
-+}
-+#endif
-+
- static void
- workarea_changed (int x, int y, int w, int h)
- {
-@@ -144,11 +153,11 @@ create_desktop (void)
-   gtk_icon_size_register ("taku-icon", 64, 64);
- 
-   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
--  g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL);
-   gtk_widget_set_name (window, "TakuWindow");
-   gtk_window_set_title (GTK_WINDOW (window), _("Desktop"));
- 
- #ifndef STANDALONE
-+  g_signal_connect (window, "delete-event", G_CALLBACK (delete_event_cb), NULL);
-   gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DESKTOP);
-   gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE);
- 
-@@ -156,6 +165,7 @@ create_desktop (void)
-   screen_w = gdk_screen_get_width (screen);
-   screen_h = gdk_screen_get_height (screen);
- #else
-+  g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL);
-   screen_w = 640;
-   screen_h = 480;
- #endif
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/All.directory b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/All.directory
new file mode 100644
index 0000000..dfa41e3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/All.directory
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Name=All
+Icon=mbfolder.png
+Type=Directory
+Match=meta-all
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Applications.directory b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Applications.directory
new file mode 100644
index 0000000..a7e3501
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Applications.directory
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=Applications
+Comment=Applications
+Icon=gnome-applications.png
+Type=Directory
+Match=AudioVideo;Audio;Video;Graphics;Network;Office;Utility;System;Development;meta-fallback;
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Games.directory b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Games.directory
new file mode 100644
index 0000000..1b0928c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Games.directory
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Games
+Name[de]=Spiele
+Comment=Games of all kind
+Comment[de]=Spiele aller Art
+Icon=mbfolder.png
+Type=Directory
+Match=Game
+
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Root.order b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Root.order
new file mode 100644
index 0000000..01a86d2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Root.order
@@ -0,0 +1,4 @@
+Applications
+Games
+Settings
+All
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Settings.directory b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Settings.directory
new file mode 100644
index 0000000..5dde365
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/files/vfolders/Settings.directory
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Settings
+Name[de]=Einstellungen
+Comment=Settings for your handheld computer
+Comment[de]=Einstellungen für Ihren Handheld-Computer
+Icon=mbfolder.png
+Type=Directory
+Match=Settings
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.1.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.1.bb
new file mode 100644
index 0000000..d9a2f22
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Matchbox Window Manager Desktop"
+HOMEPAGE = "http://matchbox-project.org/"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/desktop.c;endline=20;md5=36c9bf295e6007f3423095f405af5a2d \
+                    file://src/main.c;endline=19;md5=2044244f97a195c25b7dc602ac7e9a00"
+
+DEPENDS = "gtk+3 startup-notification dbus"
+SECTION = "x11/wm"
+
+# SRCREV tagged 2.1
+SRCREV = "c8473519a0f37488b8b3e839e275b000cdde0b80"
+SRC_URI = "git://git.yoctoproject.org/${BPN}-2 \
+           file://vfolders/* \
+           "
+
+EXTRA_OECONF = "--enable-startup-notification --with-dbus"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig distro_features_check
+
+# The startup-notification requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+
+do_install_append() {
+    install -d ${D}${datadir}/matchbox/vfolders/
+    install -m 0644 ${WORKDIR}/vfolders/* ${D}${datadir}/matchbox/vfolders/
+}
+
+FILES_${PN} += "${datadir}/matchbox/vfolders/"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb
deleted file mode 100644
index dbe8c11..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Matchbox Window Manager Desktop"
-HOMEPAGE = "http://matchbox-project.org/"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://libtaku/eggsequence.h;endline=20;md5=b91f68f7642a1459fa1f4c9df94a8f15 \
-                    file://src/desktop.c;endline=20;md5=36c9bf295e6007f3423095f405af5a2d \
-                    file://src/main.c;endline=19;md5=2044244f97a195c25b7dc602ac7e9a00"
-
-DEPENDS = "gtk+ startup-notification dbus"
-SECTION = "x11/wm"
-SRCREV = "71e3e6e04271e9d5a14f1c231ef100c7f320134d"
-PV = "2.0+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN}-2 \
-           file://0001-Do-nothing-on-delete-event-when-not-STANDALONE.patch \
-           "
-
-EXTRA_OECONF = "--enable-startup-notification --with-dbus"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig distro_features_check
-
-# The startup-notification requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb
new file mode 100644
index 0000000..465f134
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb
@@ -0,0 +1,59 @@
+SUMMARY = "Matchbox virtual keyboard for X11"
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+SECTION = "x11"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://src/matchbox-keyboard.h;endline=17;md5=9d6586c69e4a926f3cb0b4425f24ba3c \
+                    file://applet/applet.c;endline=18;md5=4a0f721724746b14d95b51ddd42b95e7"
+
+DEPENDS = "libfakekey expat libxft"
+
+#SRCREV for 0.1.1
+SRCREV = "630d89068dc0a1e9199306d405cb32f892dfa4d3"
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=matchbox-keyboard-0-1 \
+           file://0001-desktop-file-Hide-the-keyboard-from-app-list.patch \
+           file://80matchboxkeyboard.sh"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gettext gtk-immodules-cache distro_features_check
+
+# The libxft, libfakekey and matchbox-panel-2 requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF = "--disable-cairo"
+
+PACKAGECONFIG ??= "gtk3-im applet"
+PACKAGECONFIG[applet] = "--enable-applet,--disable-applet,matchbox-panel-2"
+PACKAGECONFIG[gtk2-im] = "--enable-gtk-im,--disable-gtk-im,gtk+"
+PACKAGECONFIG[gtk3-im] = "--enable-gtk3-im,--disable-gtk3-im,gtk+3"
+
+PACKAGES += "${PN}-im ${PN}-applet"
+
+FILES_${PN} = "${bindir}/ \
+	       ${sysconfdir} \
+	       ${datadir}/applications \
+	       ${datadir}/pixmaps \
+	       ${datadir}/matchbox-keyboard"
+
+FILES_${PN}-im = "${libdir}/gtk-2.0/*/immodules/*.so \
+                  ${libdir}/gtk-3.0/*/immodules/*.so"
+
+FILES_${PN}-applet = "${libdir}/matchbox-panel/*.so"
+
+
+do_install_append () {
+	install -d ${D}/${sysconfdir}/X11/Xsession.d/
+	install -m 755 ${WORKDIR}/80matchboxkeyboard.sh ${D}/${sysconfdir}/X11/Xsession.d/
+
+	rm -f ${D}${libdir}/gtk-2.0/*/immodules/*.la
+	rm -f ${D}${libdir}/gtk-3.0/*/immodules/*.la
+	rm -f ${D}${libdir}/matchbox-panel/*.la
+}
+
+GTKIMMODULES_PACKAGES = "${PN}-im"
+
+RDEPENDS_${PN} = "formfactor dbus-wait"
+RRECOMMENDS_${PN} = "${PN}-applet"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
deleted file mode 100644
index eba1970..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "Matchbox virtual keyboard for X11"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-SECTION = "x11"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
-                    file://src/matchbox-keyboard.h;endline=17;md5=9d6586c69e4a926f3cb0b4425f24ba3c \
-                    file://applet/applet.c;endline=18;md5=4a0f721724746b14d95b51ddd42b95e7"
-
-DEPENDS = "libfakekey expat libxft gtk+ matchbox-panel-2"
-
-SRCREV = "ebc330eac8b9d38e9aef9f01e7241c904bd01073"
-PV = "0.0+git${SRCPV}"
-PR = "r4"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN};branch=matchbox-keyboard-0-1 \
-           file://0001-desktop-file-Hide-the-keyboard-from-app-list.patch \
-           file://80matchboxkeyboard.sh"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig gettext gtk-immodules-cache distro_features_check
-
-# The libxft, libfakekey and matchbox-panel-2 requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = "--disable-cairo --enable-gtk-im --enable-applet"
-
-PACKAGES += "${PN}-im ${PN}-applet"
-
-FILES_${PN} = "${bindir}/ \
-	       ${sysconfdir} \
-	       ${datadir}/applications \
-	       ${datadir}/pixmaps \
-	       ${datadir}/matchbox-keyboard"
-
-FILES_${PN}-im = "${libdir}/gtk-2.0/*/immodules/*.so"
-
-FILES_${PN}-applet = "${libdir}/matchbox-panel/*.so"
-
-
-do_install_append () {
-	install -d ${D}/${sysconfdir}/X11/Xsession.d/
-	install -m 755 ${WORKDIR}/80matchboxkeyboard.sh ${D}/${sysconfdir}/X11/Xsession.d/
-
-	rm -f ${D}${libdir}/gtk-2.0/*/immodules/*.la
-	rm -f ${D}${libdir}/matchbox-panel/*.la
-}
-
-GTKIMMODULES_PACKAGES = "${PN}-im"
-
-RDEPENDS_${PN} = "formfactor dbus-wait"
-RRECOMMENDS_${PN} = "${PN}-applet"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/0001-applets-systray-Allow-icons-to-be-smaller.patch b/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/0001-applets-systray-Allow-icons-to-be-smaller.patch
new file mode 100644
index 0000000..d13dd3d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/0001-applets-systray-Allow-icons-to-be-smaller.patch
@@ -0,0 +1,34 @@
+From f83a9179696b2d060ee4860733dafbf38bbd4b87 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Wed, 28 Sep 2016 15:05:41 +0300
+Subject: [PATCH] applets/systray: Allow icons to be smaller
+
+Don't expand/fill the systray items, align them in the center of the
+systray panel. This makes sure the icons are drawn at the size they
+expect.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Submitted
+---
+ applets/systray/systray.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/applets/systray/systray.c b/applets/systray/systray.c
+index 39698a8..94a5753 100644
+--- a/applets/systray/systray.c
++++ b/applets/systray/systray.c
+@@ -29,8 +29,9 @@ on_realize (GtkWidget *widget, gpointer user_data)
+   tray = (GtkWidget *)na_tray_new_for_screen (screen, orientation);
+ 
+   gtk_widget_show (tray);
+-
+-  gtk_container_add (GTK_CONTAINER (widget), tray);
++  gtk_widget_set_valign (tray, GTK_ALIGN_CENTER);
++  gtk_widget_set_halign (tray, GTK_ALIGN_CENTER);
++  gtk_box_pack_start (GTK_BOX (widget), tray, FALSE, FALSE, 0);
+ }
+ 
+ G_MODULE_EXPORT GtkWidget *
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/0001-showdesktop-Make-sure-active-state-is-initialized.patch b/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/0001-showdesktop-Make-sure-active-state-is-initialized.patch
deleted file mode 100644
index 3bab6d2..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/0001-showdesktop-Make-sure-active-state-is-initialized.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a0b5fca04da208990f3c40e65dbb045da4cdb35e Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Sun, 20 Mar 2016 13:24:37 +0200
-Subject: [PATCH] showdesktop: Make sure active state is initialized
-
-There are cases (in qemu at least) where set_active()
-is never called on startup. Make sure we initialize the active
-state so the icon gets loaded and the applet is not confused
-about the current state.
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-
-Upstream-Status: Backport
----
- applets/showdesktop/showdesktop.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/applets/showdesktop/showdesktop.c b/applets/showdesktop/showdesktop.c
-index 61dd5c2..33c13e1 100644
---- a/applets/showdesktop/showdesktop.c
-+++ b/applets/showdesktop/showdesktop.c
-@@ -181,6 +181,12 @@ button_clicked_cb (GtkButton         *button,
- 	            &xev);
- }
- 
-+static void
-+realize_cb (GtkWidget *button, ShowDesktopApplet *applet)
-+{
-+        sync_applet (applet);
-+}
-+
- G_MODULE_EXPORT GtkWidget *
- mb_panel_applet_create (const char    *id,
-                         GtkOrientation orientation)
-@@ -216,6 +222,10 @@ mb_panel_applet_create (const char    *id,
-                           "clicked",
-                           G_CALLBACK (button_clicked_cb),
-                           applet);
-+        g_signal_connect (button,
-+                          "realize",
-+                          G_CALLBACK (realize_cb),
-+                          applet);
- 
-         g_object_weak_ref (G_OBJECT (button),
-                            (GWeakNotify) show_desktop_applet_free,
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/silence-warnings.patch b/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/silence-warnings.patch
deleted file mode 100644
index 45ba9a0..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/files/silence-warnings.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-Don't warn if the machine doesn't actually have a battery, or if the applets
-string contains consecutive separators.
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/applets/battery/battery-acpi.c b/applets/battery/battery-acpi.c
-index 6515cb0..c44dd12 100644
---- a/applets/battery/battery-acpi.c
-+++ b/applets/battery/battery-acpi.c
-@@ -14,8 +14,6 @@ int batt_state, ac_state;
- int pm_support(void)
- {
- 	if(check_acpi_support() == NOT_SUPPORTED){
--		g_warning("No ACPI support\n");
--
- 		return 0;
- 	}
- 
-@@ -32,8 +30,9 @@ const char* pm_battery_icon(void)
- 	const char *icon;
- 	battery_t *binfo;
- 
-+        /* No battery available (not present, disabled, or something
-+           else. Silently do nothing. */
- 	if (batt_state != SUCCESS) {
--		g_warning("Couldnt initialize ACPI battery\n");
- 		return NULL;
- 	}
- 
-diff --git a/applets/battery/battery-apm.c b/applets/battery/battery-apm.c
-index 5467438..2f39cb6 100644
---- a/applets/battery/battery-apm.c
-+++ b/applets/battery/battery-apm.c
-@@ -10,8 +10,6 @@
- int pm_support(void)
- {
- 	if (1 == apm_exists ()) {
--                g_warning ("No APM support");
--
-                 return 0;
-         }
- 
-diff --git a/matchbox-panel/mb-panel.c b/matchbox-panel/mb-panel.c
-index 2d8cafd..828a36d 100644
---- a/matchbox-panel/mb-panel.c
-+++ b/matchbox-panel/mb-panel.c
-@@ -110,10 +110,15 @@ load_applets (const char    *applets_desc,
-         applets = g_strsplit (applets_desc, ",", -1);
- 
-         for (i = 0; applets[i]; i++) {
-+                char *s;
-                 char **bits;
-                 GtkWidget *applet;
- 
--                bits = g_strsplit (applets[i], ":", 2);
-+                s = applets[i];
-+                if (s == NULL || s[0] == '\0')
-+                        continue;
-+
-+                bits = g_strsplit (s, ":", 2);
- 
-                 applet = load_applet (bits[0],
-                                       bits[1],
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb
new file mode 100644
index 0000000..d38e7f6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Simple GTK+ based panel for handheld devices"
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://matchbox-panel/mb-panel.h;endline=10;md5=0b7db28f4b6863fb853d0467e590019a \
+                    file://applets/startup/startup.c;endline=22;md5=7cbcea60b667f609495222faf3e07917"
+
+DEPENDS = "gnome-common gtk+3 startup-notification dbus dbus-glib dbus-glib-native"
+DEPENDS += " ${@bb.utils.contains("MACHINE_FEATURES", "acpi", "libacpi", "",d)}"
+DEPENDS += " ${@bb.utils.contains("MACHINE_FEATURES", "apm", "apmd", "",d)}"
+
+# The startup-notification requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+
+# SRCREV tagged 2.11
+SRCREV = "850d5fffde7dbfb32015916524d88014cc2cfb30"
+
+RPROVIDES_${PN} = "matchbox-panel"
+RREPLACES_${PN} = "matchbox-panel"
+RCONFLICTS_${PN} = "matchbox-panel"
+
+SRC_URI = "git://git.yoctoproject.org/${BPN} \
+           file://0001-applets-systray-Allow-icons-to-be-smaller.patch \
+           "
+
+EXTRA_OECONF = "--enable-startup-notification --enable-dbus"
+EXTRA_OECONF += " ${@bb.utils.contains("MACHINE_FEATURES", "acpi", "--with-battery=acpi", "",d)}"
+EXTRA_OECONF += " ${@bb.utils.contains("MACHINE_FEATURES", "apm", "--with-battery=apm", "",d)}"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${libdir}/matchbox-panel/*.so \
+                ${datadir}/matchbox-panel/brightness/*.png \
+                ${datadir}/matchbox-panel/startup/*.png \
+                ${datadir}/icons/"
+FILES_${PN}-dev += "${libdir}/matchbox-panel/*.la"
+
+inherit autotools pkgconfig distro_features_check
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_git.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_git.bb
deleted file mode 100644
index 98c3ae4..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_git.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Simple GTK+ based panel for handheld devices"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://matchbox-panel/mb-panel.h;endline=10;md5=0b7db28f4b6863fb853d0467e590019a \
-                    file://applets/startup/startup.c;endline=22;md5=b0a64fbef3097d79f8264e6907a98f03"
-
-DEPENDS = "gnome-common gtk+ startup-notification dbus dbus-glib"
-DEPENDS += " ${@bb.utils.contains("MACHINE_FEATURES", "acpi", "libacpi", "",d)}"
-DEPENDS += " ${@bb.utils.contains("MACHINE_FEATURES", "apm", "apmd", "",d)}"
-
-# The startup-notification requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRCREV = "26a3a67b41c50e0ae163d8fe86ccf7a0f0a671ae"
-PV = "2.0+git${SRCPV}"
-
-RPROVIDES_${PN} = "matchbox-panel"
-RREPLACES_${PN} = "matchbox-panel"
-RCONFLICTS_${PN} = "matchbox-panel"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN} \
-           file://0001-showdesktop-Make-sure-active-state-is-initialized.patch \
-           file://silence-warnings.patch"
-
-EXTRA_OECONF = "--enable-startup-notification --enable-dbus"
-EXTRA_OECONF += " ${@bb.utils.contains("MACHINE_FEATURES", "acpi", "--with-battery=acpi", "",d)}"
-EXTRA_OECONF += " ${@bb.utils.contains("MACHINE_FEATURES", "apm", "--with-battery=apm", "",d)}"
-
-S = "${WORKDIR}/git"
-
-FILES_${PN} += "${libdir}/matchbox-panel/*.so \
-                ${datadir}/matchbox-panel/brightness/*.png \
-                ${datadir}/matchbox-panel/startup/*.png "
-FILES_${PN}-dev += "${libdir}/matchbox-panel/*.la"
-
-inherit autotools pkgconfig distro_features_check
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato/index.theme b/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato/index.theme
new file mode 100644
index 0000000..c9260cf
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato/index.theme
@@ -0,0 +1,7 @@
+[X-GNOME-Metatheme]
+Encoding=UTF-8
+Type=X-GNOME-Metatheme
+Name=Sato
+GtkTheme=Adwaita
+IconTheme=Sato
+MatchboxTheme=Sato
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session b/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session
index 42ce483..f6313bd 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session
@@ -14,11 +14,6 @@
     KEYBOARD_APPLET="keyboard"
 fi
 
-# Tell GTK+3 we really want server side decorations, even with
-# GtkHeaderBar using applications: Without that mb-panel will render
-# on top of the client side decorations.
-export GTK_CSD=0
-
 matchbox-desktop &
 
 # Lines containing feature-[foo] are removed at build time if the machine
@@ -28,6 +23,6 @@
 END_APPLETS=clock,battery,$KEYBOARD_APPLET,systray,startup-notify,notify
 END_APPLETS=openmoko-panel-gsm,$END_APPLETS # feature-phone
 
-matchbox-panel --titlebar --start-applets $START_APPLETS --end-applets $END_APPLETS &
+matchbox-panel --start-applets $START_APPLETS --end-applets $END_APPLETS &
 
-exec matchbox-window-manager -theme Sato -use_desktop_mode decorated -use_cursor $SHOWCURSOR $@
+exec matchbox-window-manager -theme Sato -use_cursor $SHOWCURSOR $@
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
index 76de18a..42c742f 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
@@ -7,7 +7,7 @@
 
 SECTION = "x11"
 DEPENDS = "gconf-native"
-RDEPENDS_${PN} = "formfactor gtk-sato-engine matchbox-theme-sato gtk-theme-sato matchbox-panel-2 matchbox-desktop-sato matchbox-session gconf"
+RDEPENDS_${PN} = "formfactor matchbox-theme-sato matchbox-panel-2 matchbox-desktop matchbox-session gconf"
 PR = "r30"
 
 # This package is architecture specific because the session script is modified
@@ -19,9 +19,12 @@
 # The matchbox-theme-sato requires x11 in DISTRO_FEATURES
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI = "file://session"
+SRC_URI = "file://session \
+           file://index.theme"
 S = "${WORKDIR}"
 
+FILES_${PN} += "${datadir}/themes/Sato/index.theme"
+
 do_install() {
 	# This is the set of machine features that the script has markers for
 	FEATURES="phone"
@@ -34,6 +37,7 @@
 		fi
 	done
 
+	install -D ${S}/index.theme ${D}/${datadir}/themes/Sato/index.theme
 	install -d ${D}/${sysconfdir}/matchbox
 	sed -f "$SCRIPT" ${S}/session > ${D}/${sysconfdir}/matchbox/session
         chmod +x ${D}/${sysconfdir}/matchbox/session
@@ -44,7 +48,8 @@
 		#type, name, value
 		gconftool-2 --config-source=xml::$D${sysconfdir}/gconf/gconf.xml.defaults --direct --type $1 --set /desktop/poky/interface/$2 "$3"
 	}
-	set_value string theme Sato
+	set_value string theme Adwaita
+	set_value string matchbox_theme Sato
 	set_value string icon_theme Sato
 	set_value bool touchscreen true
 	set_value string font_name "Sans 9"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.1.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.1.bb
new file mode 100644
index 0000000..4488191
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Lightweight GTK+ terminal application"
+HOMEPAGE = "http://www.matchbox-project.org/"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://main.c;endline=20;md5=96e39176d9e355639a0b8b1c7a840820"
+
+DEPENDS = "gtk+3 vte"
+SECTION = "x11/utils"
+
+#SRCREV tagged 0.1
+SRCREV = "3ad357db2302760b8a8817b5f4478dd87479442f"
+SRC_URI = "git://git.yoctoproject.org/${BPN}"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig distro_features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-terminal/matchbox-terminal_git.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-terminal/matchbox-terminal_git.bb
deleted file mode 100644
index c8cbd57..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-terminal/matchbox-terminal_git.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Lightweight GTK+ terminal application"
-HOMEPAGE = "http://www.matchbox-project.org/"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://main.c;endline=20;md5=96e39176d9e355639a0b8b1c7a840820"
-
-DEPENDS = "gtk+ vte"
-SECTION = "x11/utils"
-SRCREV = "452bca253492a97a587f440289b9ab27d217353e"
-PV = "0.0+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig distro_features_check
-
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.1.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.1.bb
deleted file mode 100644
index f6786dd..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.1.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require matchbox-theme-sato.inc
-
-PR = "r1"
-
-SRC_URI = "http://pokylinux.org/releases/sato/matchbox-theme-sato-0.1.tar.gz"
-
-SRC_URI[md5sum] = "72ae272ef7803141a3dcb69e670cff97"
-SRC_URI[sha256sum] = "5b59f9646edbfb907a309332db3bd6fa7080dc1fe24df549480cfae7d974a3fb"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb
new file mode 100644
index 0000000..7a043d3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb
@@ -0,0 +1,8 @@
+require matchbox-theme-sato.inc
+
+# SRCREV tagged 0.2
+SRCREV = "df085ba9cdaeaf2956890b0e29d7ea1779bf6c78"
+SRC_URI = "git://git.yoctoproject.org/matchbox-sato"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
+
+S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_git.bb b/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_git.bb
deleted file mode 100644
index 0d3569d..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_git.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require matchbox-theme-sato.inc
-
-SRCREV = "f72cf4ed7d71ad9e47b0f2d3dbc593bc2f3e76f8"
-PV = "0.2+git${SRCPV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "git://git.yoctoproject.org/matchbox-sato"
-
-EXTRA_OECONF += "${@bb.utils.contains('MACHINE_FEATURES', 'qvga', '--with-mode=qvga', '',d)}"
-
-S = "${WORKDIR}/git"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb b/import-layers/yocto-poky/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
index 8ba4923..6fb1b67 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
+++ b/import-layers/yocto-poky/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
@@ -3,7 +3,6 @@
 #
 
 SUMMARY = "Sato desktop"
-LICENSE = "MIT"
 PR = "r33"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -31,9 +30,8 @@
     matchbox-keyboard-im \
     matchbox-config-gtk \
     xcursor-transparent-theme \
-    sato-icon-theme \
+    adwaita-icon-theme \
     settings-daemon \
-    gtk-sato-engine \
     shutdown-desktop \
     libsdl \
     ${NETWORK_MANAGER} \
@@ -48,8 +46,8 @@
 
 SUMMARY_${PN}-apps = "Sato desktop - applications"
 RDEPENDS_${PN}-apps = "\
-    leafpad \
-    gst-player-bin \
+    l3afpad \
+    gst-player \
     matchbox-terminal \
     sato-screenshot \
     ${FILEMANAGER} \
@@ -58,5 +56,5 @@
 
 SUMMARY_${PN}-games = "Sato desktop - games"
 RDEPENDS_${PN}-games = "\
-    oh-puzzles \
+    puzzles \
     "
diff --git a/import-layers/yocto-poky/meta/recipes-sato/pcmanfm/pcmanfm_1.2.4.bb b/import-layers/yocto-poky/meta/recipes-sato/pcmanfm/pcmanfm_1.2.4.bb
index a6b0aac..a6bf213 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/pcmanfm/pcmanfm_1.2.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-sato/pcmanfm/pcmanfm_1.2.4.bb
@@ -7,8 +7,7 @@
                     file://src/gseal-gtk-compat.h;endline=21;md5=46922c8691f58d124f9420fe16149ce2"
 
 SECTION = "x11"
-DEPENDS = "gtk+ startup-notification libfm intltool-native gettext-native"
-DEPENDS_append_poky = " libowl"
+DEPENDS = "gtk+3 startup-notification libfm intltool-native gettext-native"
 
 
 COMPATIBLE_HOST = '(x86_64.*|i.86.*|aarch64.*|arm.*|mips.*|powerpc.*|sh.*)-(linux|freebsd.*)'
@@ -30,6 +29,8 @@
 # The startup-notification requires x11 in DISTRO_FEATURES
 REQUIRED_DISTRO_FEATURES = "x11"
 
+EXTRA_OECONF = "--with-gtk=3"
+
 do_install_append () {
 	install -d ${D}/${datadir}
 	install -d ${D}/${datadir}/pixmaps/
diff --git a/import-layers/yocto-poky/meta/recipes-sato/puzzles/files/oh-puzzles-owl-menu.patch b/import-layers/yocto-poky/meta/recipes-sato/puzzles/files/oh-puzzles-owl-menu.patch
deleted file mode 100644
index 7e2c3ab..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/puzzles/files/oh-puzzles-owl-menu.patch
+++ /dev/null
@@ -1,203 +0,0 @@
-This patch enable owl menu, which is hidden in the title bar to save space on
-small screen. It has not been used for a long time, rebase needed.
-
-Upstream-Status: Inappropriate [enable feature]
-
-Index: src/gtk.c
-===================================================================
---- src/gtk.c	(revision 22)
-+++ src/gtk.c	(working copy)
-@@ -28,6 +28,8 @@
- #include <gdk/gdkx.h>
- #include <gdk-pixbuf/gdk-pixbuf.h>
- 
-+#include <libowl/owlwindowmenu.h>
-+
- #include <librsvg/rsvg.h>
- 
- #include <X11/Xlib.h>
-@@ -1237,6 +1239,7 @@
-     }
- }
- 
-+#if 0
- static void
- add_widget (GtkUIManager *merge,
- 	    GtkWidget *widget,
-@@ -1247,10 +1250,11 @@
-     gtk_box_pack_start (box, widget, FALSE, FALSE, 0);
- 
-     toplevel = gtk_widget_get_toplevel (GTK_WIDGET (box));
--    gtk_widget_show_all (toplevel);
- }
-+#endif
- 
- static GtkActionEntry toplevel_actions[] = {
-+    { "Top", NULL, "" },
-     { "Game", NULL, N_("Game") },
-     { "Settings", NULL, N_("Settings") },
-     { "Help", NULL, N_("Help") },
-@@ -1303,11 +1307,13 @@
- 			frontend *fe)
- {
-     GString *xml;
-+    GError *error = NULL;
-     gboolean presets = FALSE;
-     GSList *radio_group = NULL;
-     int i;
- 
--    xml = g_string_new ("<ui><menubar><placeholder name=\"TypePlaceholder\">"
-+    xml = g_string_new ("<ui><menubar><menu name=\"TopMenu\" action=\"Top\">"
-+			"<placeholder name=\"TypePlaceholder\">"
- 			"<menu name=\"SettingsMenu\" action=\"Settings\">");
- 
-     for (i = 0; i < midend_num_presets(fe->me); i++) {
-@@ -1359,8 +1365,14 @@
- 			 "<menuitem name=\"CustomMenu\" action=\"Custom\"/>");
-     }
-     
--    g_string_append (xml, "</menu></placeholder></menubar></ui>");
--    gtk_ui_manager_add_ui_from_string (merge, xml->str, -1, NULL);
-+    g_string_append (xml, "</menu></placeholder></menu></menubar></ui>");
-+
-+    gtk_ui_manager_add_ui_from_string (merge, xml->str, -1, &error);
-+    if (error != NULL) {
-+	g_warning ("Error adding custom: %s", error->message);
-+	g_error_free (error);
-+    }
-+
-     g_string_free (xml, TRUE);
- }
- 
-@@ -1434,6 +1446,7 @@
- new_window(char *arg, char **error)
- {
-     frontend *fe;
-+    GError *err = NULL;
-     GtkBox *vbox;
-     GtkUIManager *merge;
-     GtkActionGroup *actions;
-@@ -1496,8 +1509,6 @@
-     gtk_window_add_accel_group(GTK_WINDOW(fe->window), fe->accelgroup);
- 
-     merge = gtk_ui_manager_new ();
--    g_signal_connect (G_OBJECT (merge), "add_widget",
--		      G_CALLBACK (add_widget), vbox);
- 
-     actions = gtk_action_group_new ("PuzzleActions");
-     gtk_action_group_add_actions (actions, toplevel_actions,
-@@ -1509,22 +1520,39 @@
- 
-     gtk_ui_manager_insert_action_group (merge, actions, 0);
-     
--    gtk_ui_manager_add_ui_from_file (merge, DATADIR "/oh-puzzles/ui/menu.xml", NULL);
-+    gtk_ui_manager_add_ui_from_file (merge, DATADIR "/oh-puzzles/ui/menu.xml", 
-+				     &err);
-+    if (err != NULL) {
-+	g_warning ("Error making UI: %s", err->message);
-+	g_error_free (err);
-+	err = NULL;
-+    }
- 
-     if (thegame.can_solve) {
--	    char *str = "<ui><menubar><menu name=\"GameMenu\" action=\"Game\">"
-+	char *str = "<ui><menubar><menu name=\"TopMenu\" action=\"Top\">"
-+	    "<menu name=\"GameMenu\" action=\"Game\">"
- 	    "<placeholder name=\"SolvePlaceholder\">"
- 	    "<separator name=\"SolveSep\"/>"
- 	    "<menuitem name=\"SolveMenu\" action=\"Solve\"/>"
--	    "</placeholder></menu></menubar></ui>";
-+	    "</placeholder></menu></menu></menubar></ui>";
- 
--	gtk_ui_manager_add_ui_from_string (merge, str, -1, NULL);
-+	gtk_ui_manager_add_ui_from_string (merge, str, -1, &err);
-+	if (err != NULL) {
-+	    g_warning ("Error adding solve. %s", err->message);
-+	    g_error_free (err);
-+	}
-     }
- 
-     if ((n = midend_num_presets(fe->me)) > 0 || thegame.can_configure) {
- 	generate_settings_menu (merge, actions, fe);
-     }
- 
-+    /* Do this so that the menu is packed now instead of in the idle loop */
-+    gtk_ui_manager_ensure_update (merge);
-+
-+    owl_set_window_menu_item (GTK_WINDOW (fe->window),
-+			      GTK_MENU_ITEM (gtk_ui_manager_get_widget (merge, "/menubar/TopMenu")));
-+    
-     setup_colours (fe);
-     setup_pixbufs (fe);
- 
-@@ -1572,7 +1600,7 @@
-                           GDK_BUTTON_RELEASE_MASK |
- 			  GDK_BUTTON_MOTION_MASK);
- 
--    /* The window is shown once the menubar has been added */
-+    gtk_widget_show_all (fe->window);
-     return fe;
- }
- 
-Index: src/menu.xml
-===================================================================
---- src/menu.xml	(revision 22)
-+++ src/menu.xml	(working copy)
-@@ -1,26 +1,25 @@
- <ui>
- <menubar>
--<menu name="GameMenu" action="Game">
--	<menuitem name="NewMenu" action="New"/>
--	<menuitem name="RestartMenu" action="Restart"/>
--<!--	<menuitem name="SpecificMenu" action="Specific"/> -->
--	<menuitem name="RandomMenu" action="Random"/>
--	<separator name="GameSep1"/>
--	<menuitem name="LoadMenu" action="Load"/>
--	<menuitem name="SaveMenu" action="Save"/>
--	<separator name="GameSep2"/>
--	<menuitem name="UndoMenu" action="Undo"/>
--	<menuitem name="RedoMenu" action="Redo"/>
--	<placeholder name="CopyPlaceholder"/>
--	<placeholder name="SolvePlaceholder"/>
--	<separator name="GameSep3"/>
--	<menuitem name="QuitMenu" action="Quit"/>
--</menu>
-+<menu name="TopMenu" action="Top">
-+	<menu name="GameMenu" action="Game">
-+		<menuitem name="NewMenu" action="New"/>
-+		<menuitem name="RestartMenu" action="Restart"/>
-+	<!--	<menuitem name="SpecificMenu" action="Specific"/> -->
-+		<menuitem name="RandomMenu" action="Random"/>
-+		<separator name="GameSep1"/>
-+		<menuitem name="LoadMenu" action="Load"/>
-+		<menuitem name="SaveMenu" action="Save"/>
-+		<separator name="GameSep2"/>
-+		<menuitem name="UndoMenu" action="Undo"/>
-+		<menuitem name="RedoMenu" action="Redo"/>
-+		<placeholder name="CopyPlaceholder"/>
-+		<placeholder name="SolvePlaceholder"/>
-+	</menu>
- 
--<placeholder name="TypePlaceholder"/>
--
--<menu name="HelpMenu" action="Help">
-+	<placeholder name="TypePlaceholder"/>
- 	<menuitem name="AboutMenu" action="About"/>
-+	<menuitem name="QuitMenu" action="Quit"/>
-+
- </menu>
- </menubar>
- </ui>
-Index: src/Makefile.am
-===================================================================
---- src/Makefile.am	(revision 22)
-+++ src/Makefile.am	(working copy)
-@@ -10,7 +10,7 @@
- 	lightup loopy map mines net netslide pattern pegs rect samegame \
- 	sixteen slant solo tents twiddle untangle
- 
--libpuzzles_la_LIBADD = $(PUZZLES_LIBS)
-+libpuzzles_la_LIBADD = $(PUZZLES_LIBS) -lowl
- libpuzzles_la_SOURCES = combi.c \
- 			configuration.c \
- 			drawing.c \
diff --git a/import-layers/yocto-poky/meta/recipes-sato/puzzles/oh-puzzles_git.bb b/import-layers/yocto-poky/meta/recipes-sato/puzzles/oh-puzzles_git.bb
deleted file mode 100644
index dfa68a6..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/puzzles/oh-puzzles_git.bb
+++ /dev/null
@@ -1,73 +0,0 @@
-SUMMARY = "Portable Puzzle Collection"
-HOMEPAGE = "http://o-hand.com/"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=f56ec6772dd1c7c367067bbea8ea1675 \
-                    file://src/tree234.h;endline=28;md5=a188e6d250430ca094a54a82f48472a7 \
-                    file://src/tree234.c;endline=28;md5=b4feb1976feebf8f1379093ed52f2945"
-
-SECTION = "x11"
-DEPENDS = "gtk+ gconf intltool-native librsvg gettext-native"
-
-# libowl requires x11 in DISTRO_FEATURES
-DEPENDS_append_poky = " ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libowl', '', d)}"
-
-# Requires gdk/gdkx.h which is provided by gtk when x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRCREV = "92f1a20e4b72eed7a35b00984d9793b51dc2fb3b"
-PV = "0.2+git${SRCPV}"
-PR = "r10"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
-SRC_URI_append_poky = " file://oh-puzzles-owl-menu.patch;striplevel=0 "
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig distro_features_check
-
-bindir = "/usr/games"
-
-EXTRA_OEMAKE += "GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1"
-
-do_install_append () {
-    install -d ${D}/${datadir}/applications/
-
-    cd ${D}/${prefix}/games
-    for prog in *; do
-	if [ -x $prog ]; then
-            # Convert prog to Title Case
-            title=$(echo $prog | sed 's/\(^\| \)./\U&/g')
-	    echo "making ${D}/${datadir}/applications/$prog.desktop"
-	    cat <<STOP > ${D}/${datadir}/applications/$prog.desktop
-[Desktop Entry]
-Name=$title
-Exec=${prefix}/games/$prog
-Icon=applications-games
-Terminal=false
-Type=Application
-Categories=Game;
-StartupNotify=true
-X-MB-SingleInstance=true
-Comment=Play $title.
-STOP
-        fi
-    done
-}
-
-PACKAGES += "${PN}-extra"
-RDEPENDS_${PN}-extra += "oh-puzzles"
-
-FILES_${PN} = "/usr/share/pixmaps /usr/share/oh-puzzles/"
-FILES_${PN}-extra = "/usr/games/ /usr/share/applications /etc/gconf/schemas"
-
-python __anonymous () {
-    var = bb.data.expand("FILES_${PN}", d, 1)
-    data = d.getVar(var, True)
-    for name in ("bridges", "fifteen", "inertia", "map", "samegame", "slant"):
-        data = data + " /usr/games/%s" % name
-        data = data + " /usr/share/applications/%s.desktop" % name
-        data = data + " /etc/gconf/schemas/%s.schemas" % name
-    d.setVar(var, data)
-}
diff --git a/import-layers/yocto-poky/meta/recipes-sato/puzzles/puzzles_git.bb b/import-layers/yocto-poky/meta/recipes-sato/puzzles/puzzles_git.bb
index 346f43b..20b9889 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/puzzles/puzzles_git.bb
+++ b/import-layers/yocto-poky/meta/recipes-sato/puzzles/puzzles_git.bb
@@ -21,45 +21,54 @@
 
 S = "${WORKDIR}/git"
 
-inherit autotools-brokensep distro_features_check pkgconfig
+inherit autotools distro_features_check pkgconfig
 
-PACKAGECONFIG ??= "gtk2"
+CFLAGS_append = " -Wno-deprecated-declarations"
+
+PACKAGECONFIG ??= "gtk3"
 PACKAGECONFIG[gtk2] = "--with-gtk=2,,gtk+,"
 PACKAGECONFIG[gtk3] = "--with-gtk=3,,gtk+3,"
 
-do_configure_prepend () {
-    ./mkfiles.pl
+PACKAGES += "${PN}-extra"
+FILES_${PN} = ""
+FILES_${PN}-extra = "${prefix}/bin ${datadir}/applications"
+
+python __anonymous () {
+    var = d.expand("FILES_${PN}")
+    data = d.getVar(var, False)
+    for name in ("bridges", "fifteen", "inertia", "map", "samegame", "slant"):
+        data = data + " ${bindir}/%s" % name
+        data = data + " ${datadir}/applications/%s.desktop" % name
+    d.setVar(var, data)
 }
 
-FILES_${PN} = "${prefix}/bin/* ${datadir}/applications/*"
+do_configure_prepend () {
+    cd ${S}
+    ./mkfiles.pl
+    cd ${B}
+}
 
-do_install () {
-    rm -rf ${D}/*
-    export prefix=${D}
-    export DESTDIR=${D}
-    install -d ${D}/${prefix}/bin/
-    oe_runmake install
-
-
-    install -d ${D}/${datadir}/applications/
+do_install_append () {
+    # net conflicts with Samba, so rename it
+    mv ${D}${bindir}/net ${D}${bindir}/puzzles-net
 
     # Create desktop shortcuts
+    install -d ${D}/${datadir}/applications/
     cd ${D}/${prefix}/bin
     for prog in *; do
 	if [ -x $prog ]; then
             # Convert prog to Title Case
-            title=$(echo $prog | sed 's/\(^\| \)./\U&/g')
+            title=$(echo $prog | sed 's/puzzles-//' | sed 's/\(^\| \)./\U&/g')
 	    echo "making ${D}/${datadir}/applications/$prog.desktop"
 	    cat <<STOP > ${D}/${datadir}/applications/$prog.desktop
 [Desktop Entry]
 Name=$title
-Exec=${prefix}/bin/$prog
+Exec=${bindir}/$prog
 Icon=applications-games
 Terminal=false
 Type=Application
 Categories=Game;
 StartupNotify=true
-X-MB-SingleInstance=true
 STOP
         fi
     done
diff --git a/import-layers/yocto-poky/meta/recipes-sato/sato-icon-theme/sato-icon-theme/0001-Inherit-the-GNOME-icon-theme.patch b/import-layers/yocto-poky/meta/recipes-sato/sato-icon-theme/sato-icon-theme/0001-Inherit-the-GNOME-icon-theme.patch
deleted file mode 100644
index 2c176ee..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/sato-icon-theme/sato-icon-theme/0001-Inherit-the-GNOME-icon-theme.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b9f02989310a3c920589f1aa646bcbf16b2572a0 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Wed, 13 Jun 2012 11:07:33 +0100
-Subject: [PATCH] Inherit the GNOME icon theme
-
-If the GNOME icon theme isn't installed this is a no-op, but if it is then
-you'll get fallback from Sato to GNOME for icons that are not in Sato.
-
-As applications that use the full GNOME icon theme depend on gnome-icon-theme,
-this just works.
-
-Upstream-Status: Backport
----
- index.theme |    1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/index.theme b/index.theme
-index c4b03a7..688fbbf 100644
---- a/index.theme
-+++ b/index.theme
-@@ -1,6 +1,7 @@
- [Icon Theme]
- Name=Sato
- Comment=Sato icon theme
-+Inherits=Adwaita
- 
- Directories=16x16/apps,16x16/status,16x16/stock,16x16/places,16x16/mimetypes,16x16/devices,16x16/actions,22x22/apps,22x22/status,22x22/stock,22x22/places,22x22/mimetypes,22x22/devices,22x22/actions,32x32/apps,32x32/status,32x32/stock,32x32/places,32x32/mimetypes,32x32/devices,32x32/actions,48x48/apps,48x48/status,48x48/stock,48x48/places,48x48/mimetypes,48x48/devices,48x48/actions,64x64/apps,64x64/status,64x64/stock,64x64/places,64x64/mimetypes,64x64/devices,64x64/actions,
- 
--- 
-1.7.10
-
diff --git a/import-layers/yocto-poky/meta/recipes-sato/sato-icon-theme/sato-icon-theme_0.4.1.bb b/import-layers/yocto-poky/meta/recipes-sato/sato-icon-theme/sato-icon-theme_0.4.1.bb
deleted file mode 100644
index ced735f..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/sato-icon-theme/sato-icon-theme_0.4.1.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Sato icon theme"
-HOMEPAGE = "http://www.o-hand.com"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "CC-BY-SA-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=56a830bbe6e4697fe6cbbae01bb7c2b2"
-SECTION = "x11"
-
-PR = "r6"
-
-DEPENDS = "icon-naming-utils-native libxml-simple-perl-native"
-
-SRC_URI = "http://pokylinux.org/releases/sato/${BPN}-${PV}.tar.gz \
-           file://0001-Inherit-the-GNOME-icon-theme.patch"
-
-SRC_URI[md5sum] = "86a847f3128a43a9cf23b7029a656f50"
-SRC_URI[sha256sum] = "0b0a2807a6a96918ac799a86094ec3e8e2c892be0fd679a4232c2a77f2f61732"
-
-inherit autotools pkgconfig allarch gtk-icon-cache perlnative
-
-# The configure script uses pkg-config to find native binaries to execute, so
-# tell it to use our pkg-config-native wrapper.
-export PKG_CONFIG = "pkg-config-native"
-
-FILES_${PN} += "${datadir}/icons/Sato"
-
-do_install_append() {
-	find ${D}${datadir}/icons/Sato/ -maxdepth 1 -type d -exec ln -s preferences-system.png {}/apps/preferences-desktop.png \;
-	find ${D}${datadir}/icons/Sato/ -maxdepth 1 -type d -exec ln -s file-manager.png {}/apps/system-file-manager.png \;
-	find ${D}${datadir}/icons/Sato/ -maxdepth 1 -type d -exec ln -s ../apps/terminal.png {}/places/computer.png \;
-}
-
-# Explictly setting "Sato" as the default icon theme to avoid flickering from
-# the desktop and settings daemon racing.  This shouldn't be done here but in the sato image
-pkg_postinst_${PN} () {
-    mkdir -p $D/etc/gtk-2.0
-
-    grep -s -q -e ^gtk-icon-theme-name.*\"Sato\" $D/etc/gtk-2.0/gtkrc || \
-        echo 'gtk-icon-theme-name = "Sato"' >> $D/etc/gtk-2.0/gtkrc
-}
diff --git a/import-layers/yocto-poky/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb b/import-layers/yocto-poky/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb
new file mode 100644
index 0000000..f3305ae
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Ultra-simple screen capture utility, aimed at handheld devices"
+HOMEPAGE = "http://www.o-hand.com"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+
+LICENSE = "GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://main.c;endline=9;md5=023e14d6404d0a961eb97cbd011fc141 \
+                    file://screenshot-ui.h;endline=9;md5=638d9ffa83e9325a36df224166ed6ad0"
+
+DEPENDS = "matchbox-panel-2 gtk+3"
+
+# SRCREV tagged 0.3
+SRCREV = "9250fa5a012d84ff45984e8c4345ee7635227756"
+SRC_URI = "git://git.yoctoproject.org/screenshot"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig distro_features_check
+
+FILES_${PN} += "${libdir}/matchbox-panel/*.so"
+
+do_install_append () {
+	rm ${D}${libdir}/matchbox-panel/*.la
+}
+
+# The matchbox-panel-2 requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/sato-screenshot/sato-screenshot_git.bb b/import-layers/yocto-poky/meta/recipes-sato/sato-screenshot/sato-screenshot_git.bb
deleted file mode 100644
index 1b2b65d..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/sato-screenshot/sato-screenshot_git.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Ultra-simple screen capture utility, aimed at handheld devices"
-HOMEPAGE = "http://www.o-hand.com"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://main.c;endline=9;md5=023e14d6404d0a961eb97cbd011fc141 \
-                    file://screenshot-ui.h;endline=9;md5=638d9ffa83e9325a36df224166ed6ad0"
-
-DEPENDS = "matchbox-panel-2"
-SRCREV = "3a9688e8a01b63a78f402b4e7c0b8b005fcdfa29"
-PV = "0.1+git${SRCPV}"
-PR = "r2"
-
-SRC_URI = "git://git.yoctoproject.org/screenshot"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig distro_features_check
-
-FILES_${PN} += "${libdir}/matchbox-panel/*.so"
-
-do_install_append () {
-	rm ${D}${libdir}/matchbox-panel/*.la
-}
-
-# The matchbox-panel-2 requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/files/dso_linking_change_build_fix.patch b/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/files/dso_linking_change_build_fix.patch
deleted file mode 100644
index 5943744..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/files/dso_linking_change_build_fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-after gcc linking has changed, all the libraries must be explicitely specified to for linking. 
-This patch avoids this linking error:
-
-| make  all-am^M
-| make[1]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/settings-daemon-0.0+svnr2059-r3/settings-daemon'^M
-| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -Wall -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o settings-daemon settings_daemon-xsettings-common.o settings_daemon-xsettings-manager.o settings_daemon-settings-daemon.o -pthread -lgconf-2 -ldbus-glib-1 -ldbus-1 -lpthread -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0^M
-| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: *^A: invalid DSO for symbol `XCreateSimpleWindow' definition^M
-| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so.6: could not read symbols: Bad value^M
-| collect2: ld returned 1 exit status^M
-| make[1]: *** [settings-daemon] Error 1^M
-| make[1]: Leaving directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/settings-daemon-0.0+svnr2059-r3/settings-daemon'^M
-| make: *** [all] Error 2^M
-
-Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: 2011/01/11
-
-Index: settings-daemon/configure.ac
-===================================================================
---- settings-daemon.orig/configure.ac
-+++ settings-daemon/configure.ac
-@@ -14,7 +14,7 @@ AC_PROG_CC
- 
- 
- dnl TODO: make gconf optional
--PKG_CHECK_MODULES(APP, [gconf-2.0 gdk-x11-2.0])
-+PKG_CHECK_MODULES(APP, [gconf-2.0 gdk-x11-2.0 x11])
- 
- 
- AC_SUBST(APP_CFLAGS)
diff --git a/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb b/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb
new file mode 100644
index 0000000..ceaecca
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Provides a bridge between gconf and xsettings"
+HOMEPAGE = "http://svn.o-hand.com/view/matchbox/trunk/settings-daemon/"
+BUGTRACKER = "http://bugzilla.yoctoproject.org/"
+LICENSE = "MIT-style"
+LIC_FILES_CHKSUM = "file://xsettings-manager.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
+                    file://xsettings-common.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b"
+DEPENDS = "gconf glib-2.0 gtk+3"
+SECTION = "x11"
+
+# SRCREV tagged 0.0.2
+SRCREV = "b2e5da502f8c5ff75e9e6da771372ef8e40fd9a2"
+SRC_URI = "git://git.yoctoproject.org/xsettings-daemon \
+           file://addsoundkeys.patch;apply=yes \
+           file://70settings-daemon.sh \
+           "
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gconf distro_features_check
+
+FILES_${PN} = 	"${bindir}/* ${sysconfdir}"
+
+# Requires gdk-x11-2.0 which is provided by gtk when x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+
+do_install_append () {
+	install -d ${D}/${sysconfdir}/X11/Xsession.d
+	install -m 755 ${WORKDIR}/70settings-daemon.sh ${D}/${sysconfdir}/X11/Xsession.d/
+}
diff --git a/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/settings-daemon_git.bb b/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/settings-daemon_git.bb
deleted file mode 100644
index c061553..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/settings-daemon/settings-daemon_git.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Provides a bridge between gconf and xsettings"
-HOMEPAGE = "http://svn.o-hand.com/view/matchbox/trunk/settings-daemon/"
-BUGTRACKER = "http://bugzilla.yoctoproject.org/"
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://xsettings-manager.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
-                    file://xsettings-common.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b"
-DEPENDS = "gconf glib-2.0 gtk+"
-SECTION = "x11"
-SRCREV = "9a99528b02255450db81176abd9bbcc1dab9a4c1"
-PV = "0.0+git${SRCPV}"
-
-
-SRC_URI = "git://git.yoctoproject.org/xsettings-daemon \
-           file://addsoundkeys.patch;apply=yes \
-           file://70settings-daemon.sh \
-           file://dso_linking_change_build_fix.patch"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig gconf distro_features_check
-
-FILES_${PN} = 	"${bindir}/* ${sysconfdir}"
-
-# Requires gdk-x11-2.0 which is provided by gtk when x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-do_install_append () {
-	install -d ${D}/${sysconfdir}/X11/Xsession.d
-	install -m 755 ${WORKDIR}/70settings-daemon.sh ${D}/${sysconfdir}/X11/Xsession.d/
-}
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch
new file mode 100644
index 0000000..615fe4f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch
@@ -0,0 +1,48 @@
+From 5760d346b42807b596f479c81f7a6b42eb36065e Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 29 Aug 2016 16:38:11 +0300
+Subject: [PATCH] Fix racy parallel build of WebKit2-4.0.gir
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Source/WebKit2/PlatformGTK.cmake | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/Source/WebKit2/PlatformGTK.cmake b/Source/WebKit2/PlatformGTK.cmake
+index adaa010..f18cf8a 100644
+--- a/Source/WebKit2/PlatformGTK.cmake
++++ b/Source/WebKit2/PlatformGTK.cmake
+@@ -906,8 +906,9 @@ endif ()
+ string(REGEX MATCHALL "-L[^ ]*"
+     INTROSPECTION_ADDITIONAL_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
+ 
+-add_custom_command(
+-    OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
++# This is a target and not a command because it's used to build another .gir
++# and a .typelib, which would trigger two racy parallel builds when using command
++add_custom_target(WebKit2-${WEBKITGTK_API_VERSION}-gir
+     DEPENDS WebKit2
+     DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
+     COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
+@@ -950,7 +951,7 @@ add_custom_command(
+ add_custom_command(
+     OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
+     DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
+-    DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
++    DEPENDS WebKit2-${WEBKITGTK_API_VERSION}-gir
+     COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS}
+         LDFLAGS="${INTROSPECTION_ADDITIONAL_LDFLAGS}"
+         ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
+@@ -1004,7 +1005,7 @@ add_custom_command(
+ 
+ add_custom_command(
+     OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.typelib
+-    DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
++    DEPENDS WebKit2-${WEBKITGTK_API_VERSION}-gir
+     COMMAND ${INTROSPECTION_COMPILER} --includedir=${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir -o ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.typelib
+ )
+ 
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch
index 3d004db..93a69c0 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch
@@ -13,11 +13,11 @@
  Source/cmake/OptionsGTK.cmake | 6 ------
  1 file changed, 6 deletions(-)
 
-diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
-index e5f1f5b..4698036 100644
---- a/Source/cmake/OptionsGTK.cmake
-+++ b/Source/cmake/OptionsGTK.cmake
-@@ -443,12 +443,6 @@ if (USE_LIBHYPHEN)
+Index: webkitgtk-2.12.1/Source/cmake/OptionsGTK.cmake
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/cmake/OptionsGTK.cmake
++++ webkitgtk-2.12.1/Source/cmake/OptionsGTK.cmake
+@@ -424,12 +424,6 @@ if (USE_LIBHYPHEN)
      endif ()
  endif ()
  
@@ -27,9 +27,6 @@
 -    set(ENABLE_INTROSPECTION OFF)
 -endif ()
 -
- set(DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR ${DERIVED_SOURCES_DIR}/webkitdom)
- set(DERIVED_SOURCES_WEBKITGTK_DIR ${DERIVED_SOURCES_DIR}/webkitgtk)
- set(DERIVED_SOURCES_WEBKITGTK_API_DIR ${DERIVED_SOURCES_WEBKITGTK_DIR}/webkit)
--- 
-2.7.0
-
+ # Override the cached variable, gtk-doc does not really work when building on Mac.
+ if (APPLE)
+     set(ENABLE_GTKDOC OFF)
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch
new file mode 100644
index 0000000..586dd23
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch
@@ -0,0 +1,49 @@
+From 4eeeaec775e190cf3f5885d7c6717acebd0201a8 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 11 Aug 2016 17:13:51 +0300
+Subject: [PATCH] Tweak gtkdoc settings so that gtkdoc generation works under
+ OpenEmbedded build system
+
+This requires setting a few environment variables so that the transient
+binary is build and linked correctly, and disabling the tweaks to RUN
+variable from gtkdoc.py script so that our qemu wrapper is taken into use.
+
+Upstream-Status: Inappropriate [oe-specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Source/PlatformGTK.cmake | 2 +-
+ Tools/gtk/gtkdoc.py      | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Source/PlatformGTK.cmake b/Source/PlatformGTK.cmake
+index af4d2e3..b7b93c7 100644
+--- a/Source/PlatformGTK.cmake
++++ b/Source/PlatformGTK.cmake
+@@ -25,7 +25,7 @@ macro(ADD_GTKDOC_GENERATOR _stamp_name _extra_args)
+     add_custom_command(
+         OUTPUT "${CMAKE_BINARY_DIR}/${_stamp_name}"
+         DEPENDS ${DocumentationDependencies}
+-        COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=${CMAKE_C_FLAGS} ${CMAKE_SOURCE_DIR}/Tools/gtk/generate-gtkdoc ${_extra_args}
++        COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=${CMAKE_C_FLAGS} LD=${CMAKE_C_COMPILER} LDFLAGS=${CMAKE_C_LINK_FLAGS} RUN=${CMAKE_BINARY_DIR}/gtkdoc-qemuwrapper GIR_EXTRA_LIBS_PATH=${CMAKE_BINARY_DIR}/lib ${CMAKE_SOURCE_DIR}/Tools/gtk/generate-gtkdoc ${_extra_args}
+         COMMAND touch ${_stamp_name}
+         WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
+     )
+diff --git a/Tools/gtk/gtkdoc.py b/Tools/gtk/gtkdoc.py
+index 4c8237b..c0205f0 100644
+--- a/Tools/gtk/gtkdoc.py
++++ b/Tools/gtk/gtkdoc.py
+@@ -318,9 +318,9 @@ class GTKDoc(object):
+                     additional_ldflags = '%s %s' % (additional_ldflags, arg)
+             ldflags = ' "-L%s" %s ' % (self.library_path, additional_ldflags) + ldflags
+             current_ld_library_path = env.get('LD_LIBRARY_PATH')
+-            if current_ld_library_path:
++            if current_ld_library_path and 'RUN' not in env:
+                 env['RUN'] = 'LD_LIBRARY_PATH="%s:%s" ' % (self.library_path, current_ld_library_path)
+-            else:
++            elif 'RUN' not in env:
+                 env['RUN'] = 'LD_LIBRARY_PATH="%s" ' % self.library_path
+ 
+         if ldflags:
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
new file mode 100644
index 0000000..25b3c9f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
@@ -0,0 +1,223 @@
+From 53a00058184cd710c6f4375f4daab49d7e885a30 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 17 Apr 2016 12:35:41 -0700
+Subject: [PATCH] WebKitMacros: Append to -I and not to -isystem
+
+gcc-6 has now introduced stdlib.h in libstdc++ for better
+compliance and its including the C library stdlib.h using
+include_next which is sensitive to order of system header
+include paths. Its infact better to not tinker with the
+system header include paths at all. Since adding /usr/include
+to -system is redundant and compiler knows about it moreover
+now with gcc6 it interferes with compiler's functioning
+and ends up with compile errors e.g.
+
+/usr/include/c++/6.0.0/cstdlib:75:25: fatal error: stdlib.h: No such file or directory
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ Source/cmake/WebKitMacros.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: webkitgtk-2.12.1/Source/JavaScriptCore/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/JavaScriptCore/CMakeLists.txt
++++ webkitgtk-2.12.1/Source/JavaScriptCore/CMakeLists.txt
+@@ -1311,7 +1311,7 @@ add_subdirectory(shell)
+ 
+ WEBKIT_WRAP_SOURCELIST(${JavaScriptCore_SOURCES})
+ include_directories(${JavaScriptCore_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
+ add_library(JavaScriptCore ${JavaScriptCore_LIBRARY_TYPE} ${JavaScriptCore_HEADERS} ${JavaScriptCore_SOURCES})
+ target_link_libraries(JavaScriptCore ${JavaScriptCore_LIBRARIES})
+ set_target_properties(JavaScriptCore PROPERTIES COMPILE_DEFINITIONS "BUILDING_JavaScriptCore")
+Index: webkitgtk-2.12.1/Source/WTF/wtf/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/WTF/wtf/CMakeLists.txt
++++ webkitgtk-2.12.1/Source/WTF/wtf/CMakeLists.txt
+@@ -286,7 +286,7 @@ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+ 
+ WEBKIT_WRAP_SOURCELIST(${WTF_SOURCES})
+ include_directories(${WTF_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${WTF_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${WTF_SYSTEM_INCLUDE_DIRECTORIES})
+ add_library(WTF ${WTF_LIBRARY_TYPE} ${WTF_HEADERS} ${WTF_SOURCES})
+ target_link_libraries(WTF ${WTF_LIBRARIES})
+ set_target_properties(WTF PROPERTIES COMPILE_DEFINITIONS "BUILDING_WTF")
+Index: webkitgtk-2.12.1/Source/WebCore/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/WebCore/CMakeLists.txt
++++ webkitgtk-2.12.1/Source/WebCore/CMakeLists.txt
+@@ -3748,7 +3748,7 @@ WEBKIT_WRAP_SOURCELIST(${WebCore_IDL_FIL
+ WEBKIT_WRAP_SOURCELIST(${WebCoreTestSupport_IDL_FILES} ${WebCoreTestSupport_SOURCES})
+ 
+ include_directories(${WebCore_INCLUDE_DIRECTORIES} ${WebCoreTestSupport_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${WebCore_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${WebCore_SYSTEM_INCLUDE_DIRECTORIES})
+ 
+ if (MSVC)
+     ADD_PRECOMPILED_HEADER("WebCorePrefix.h" "WebCorePrefix.cpp" WebCore_SOURCES)
+Index: webkitgtk-2.12.1/Source/WebKit/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/WebKit/CMakeLists.txt
++++ webkitgtk-2.12.1/Source/WebKit/CMakeLists.txt
+@@ -28,7 +28,7 @@ set(WebKit_LIBRARIES
+ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+ 
+ include_directories(${WebKit_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${WebKit_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${WebKit_SYSTEM_INCLUDE_DIRECTORIES})
+ 
+ if (MSVC)
+     ADD_PRECOMPILED_HEADER("WebKitPrefix.h" "win/WebKitPrefix.cpp" WebKit_SOURCES)
+Index: webkitgtk-2.12.1/Source/WebKit2/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/WebKit2/CMakeLists.txt
++++ webkitgtk-2.12.1/Source/WebKit2/CMakeLists.txt
+@@ -756,7 +756,7 @@ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+ GENERATE_WEBKIT2_MESSAGE_SOURCES(WebKit2_DERIVED_SOURCES "${WebKit2_MESSAGES_IN_FILES}")
+ 
+ include_directories(${WebKit2_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${WebKit2_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${WebKit2_SYSTEM_INCLUDE_DIRECTORIES})
+ add_library(WebKit2 ${WebKit2_LIBRARY_TYPE} ${WebKit2_SOURCES} ${WebKit2_DERIVED_SOURCES})
+ 
+ add_dependencies(WebKit2 WebCore ${WEBKIT2_EXTRA_DEPENDENCIES})
+Index: webkitgtk-2.12.1/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
++++ webkitgtk-2.12.1/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
+@@ -42,7 +42,7 @@ set(WebKitTestNetscapePlugin_SYSTEM_INCL
+ )
+ 
+ include_directories(${WebKitTestNetscapePlugin_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${WebKitTestNetscapePlugin_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${WebKitTestNetscapePlugin_SYSTEM_INCLUDE_DIRECTORIES})
+ 
+ set(WebKitTestNetscapePlugin_LIBRARIES
+     ${X11_LIBRARIES}
+Index: webkitgtk-2.12.1/Tools/ImageDiff/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Tools/ImageDiff/CMakeLists.txt
++++ webkitgtk-2.12.1/Tools/ImageDiff/CMakeLists.txt
+@@ -14,7 +14,7 @@ set(IMAGE_DIFF_LIBRARIES
+ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+ 
+ include_directories(${IMAGE_DIFF_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${IMAGE_DIFF_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${IMAGE_DIFF_SYSTEM_INCLUDE_DIRECTORIES})
+ add_executable(ImageDiff ${IMAGE_DIFF_SOURCES})
+ target_link_libraries(ImageDiff ${IMAGE_DIFF_LIBRARIES})
+ set_target_properties(ImageDiff PROPERTIES FOLDER "Tools")
+Index: webkitgtk-2.12.1/Tools/MiniBrowser/gtk/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Tools/MiniBrowser/gtk/CMakeLists.txt
++++ webkitgtk-2.12.1/Tools/MiniBrowser/gtk/CMakeLists.txt
+@@ -55,7 +55,7 @@ endif ()
+ add_definitions(-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_6)
+ 
+ include_directories(${MiniBrowser_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${MiniBrowser_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${MiniBrowser_SYSTEM_INCLUDE_DIRECTORIES})
+ add_executable(MiniBrowser ${MiniBrowser_SOURCES})
+ target_link_libraries(MiniBrowser ${MiniBrowser_LIBRARIES})
+ set_target_properties(MiniBrowser PROPERTIES FOLDER "Tools")
+Index: webkitgtk-2.12.1/Tools/WebKitTestRunner/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Tools/WebKitTestRunner/CMakeLists.txt
++++ webkitgtk-2.12.1/Tools/WebKitTestRunner/CMakeLists.txt
+@@ -115,7 +115,7 @@ GENERATE_BINDINGS(WebKitTestRunner_SOURC
+ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+ 
+ include_directories(${WebKitTestRunner_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${WebKitTestRunner_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${WebKitTestRunner_SYSTEM_INCLUDE_DIRECTORIES})
+ 
+ add_library(TestRunnerInjectedBundle SHARED ${WebKitTestRunnerInjectedBundle_SOURCES})
+ target_link_libraries(TestRunnerInjectedBundle ${WebKitTestRunner_LIBRARIES})
+Index: webkitgtk-2.12.1/Source/WebCore/PlatformGTK.cmake
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/WebCore/PlatformGTK.cmake
++++ webkitgtk-2.12.1/Source/WebCore/PlatformGTK.cmake
+@@ -324,7 +324,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
+         ${GTK2_INCLUDE_DIRS}
+         ${GDK2_INCLUDE_DIRS}
+     )
+-    target_include_directories(WebCorePlatformGTK2 SYSTEM PRIVATE
++    target_include_directories(WebCorePlatformGTK2 PRIVATE
+         ${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
+     )
+     target_link_libraries(WebCorePlatformGTK2
+@@ -366,7 +366,7 @@ WEBKIT_SET_EXTRA_COMPILER_FLAGS(WebCoreP
+ target_include_directories(WebCorePlatformGTK PRIVATE
+     ${WebCore_INCLUDE_DIRECTORIES}
+ )
+-target_include_directories(WebCorePlatformGTK SYSTEM PRIVATE
++target_include_directories(WebCorePlatformGTK PRIVATE
+     ${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
+     ${GTK_INCLUDE_DIRS}
+     ${GDK_INCLUDE_DIRS}
+@@ -384,7 +384,7 @@ include_directories(
+     "${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}"
+ )
+ 
+-include_directories(SYSTEM
++include_directories(
+     ${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
+ )
+ 
+Index: webkitgtk-2.12.1/Tools/TestWebKitAPI/PlatformGTK.cmake
+===================================================================
+--- webkitgtk-2.12.1.orig/Tools/TestWebKitAPI/PlatformGTK.cmake
++++ webkitgtk-2.12.1/Tools/TestWebKitAPI/PlatformGTK.cmake
+@@ -20,7 +20,7 @@ include_directories(
+     ${WEBKIT2_DIR}/UIProcess/API/gtk
+ )
+ 
+-include_directories(SYSTEM
++include_directories(
+     ${GDK3_INCLUDE_DIRS}
+     ${GLIB_INCLUDE_DIRS}
+     ${GTK3_INCLUDE_DIRS}
+Index: webkitgtk-2.12.1/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
++++ webkitgtk-2.12.1/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
+@@ -23,7 +23,7 @@ include_directories(
+     ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk
+ )
+ 
+-include_directories(SYSTEM
++include_directories(
+     ${ATSPI_INCLUDE_DIRS}
+     ${GLIB_INCLUDE_DIRS}
+     ${GSTREAMER_INCLUDE_DIRS}
+Index: webkitgtk-2.12.1/Source/WebKit2/PlatformGTK.cmake
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/WebKit2/PlatformGTK.cmake
++++ webkitgtk-2.12.1/Source/WebKit2/PlatformGTK.cmake
+@@ -816,7 +816,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
+     target_include_directories(WebKitPluginProcess2 PRIVATE
+         ${WebKit2CommonIncludeDirectories}
+     )
+-    target_include_directories(WebKitPluginProcess2 SYSTEM PRIVATE
++    target_include_directories(WebKitPluginProcess2 PRIVATE
+          ${WebKit2CommonSystemIncludeDirectories}
+          ${GTK2_INCLUDE_DIRS}
+          ${GDK2_INCLUDE_DIRS}
+Index: webkitgtk-2.12.1/Source/JavaScriptCore/shell/CMakeLists.txt
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/JavaScriptCore/shell/CMakeLists.txt
++++ webkitgtk-2.12.1/Source/JavaScriptCore/shell/CMakeLists.txt
+@@ -20,7 +20,7 @@ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+ 
+ WEBKIT_WRAP_SOURCELIST(${JSC_SOURCES})
+ include_directories(./ ${JavaScriptCore_INCLUDE_DIRECTORIES})
+-include_directories(SYSTEM ${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
++include_directories(${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
+ add_executable(jsc ${JSC_SOURCES})
+ target_link_libraries(jsc ${JSC_LIBRARIES})
+ set_target_properties(jsc PROPERTIES FOLDER "JavaScriptCore")
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
index 44b43cd..3f71297 100644
--- a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
@@ -13,28 +13,25 @@
  Source/WebKit2/PlatformGTK.cmake | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/Source/WebKit2/PlatformGTK.cmake b/Source/WebKit2/PlatformGTK.cmake
-index 706f1e8..14a1c3b 100644
---- a/Source/WebKit2/PlatformGTK.cmake
-+++ b/Source/WebKit2/PlatformGTK.cmake
-@@ -884,7 +884,7 @@ add_custom_command(
+Index: webkitgtk-2.12.1/Source/WebKit2/PlatformGTK.cmake
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/WebKit2/PlatformGTK.cmake
++++ webkitgtk-2.12.1/Source/WebKit2/PlatformGTK.cmake
+@@ -910,7 +910,7 @@ add_custom_command(
      OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
      DEPENDS WebKit2
      DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
 -    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations LDFLAGS=
 +    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
-         LD_LIBRARY_PATH="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
+         ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
          ${INTROSPECTION_SCANNER}
          --quiet
-@@ -930,7 +930,7 @@ add_custom_command(
+@@ -951,7 +951,7 @@ add_custom_command(
      OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
      DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
      DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
 -    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations
 +    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS}
          LDFLAGS="${INTROSPECTION_ADDITIONAL_LDFLAGS}"
-         LD_LIBRARY_PATH="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
+         ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
          ${INTROSPECTION_SCANNER}
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/musl-fixes.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/musl-fixes.patch
new file mode 100644
index 0000000..4fdd56f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/musl-fixes.patch
@@ -0,0 +1,48 @@
+Replace __GLIBC__ with __linux__ since musl also supports it
+so checking __linux__ is more accomodating
+
+See http://git.alpinelinux.org/cgit/aports/tree/community/webkit2gtk/musl-fixes.patch?id=219435d86d7e8fac9474344a7431c62bd2525184
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: webkitgtk-2.12.1/Source/JavaScriptCore/heap/MachineStackMarker.cpp
+===================================================================
+--- webkitgtk-2.12.1.orig/Source/JavaScriptCore/heap/MachineStackMarker.cpp
++++ webkitgtk-2.12.1/Source/JavaScriptCore/heap/MachineStackMarker.cpp
+@@ -566,7 +566,7 @@ void* MachineThreads::Thread::Registers:
+ #error Unknown Architecture
+ #endif
+ 
+-#elif defined(__GLIBC__) && ENABLE(JIT)
++#elif defined(__linux__) && ENABLE(JIT)
+ 
+ #if CPU(X86)
+     return reinterpret_cast<void*>((uintptr_t) regs.machineContext.gregs[REG_ESP]);
+@@ -665,7 +665,7 @@ void* MachineThreads::Thread::Registers:
+ #error Unknown Architecture
+ #endif
+ 
+-#elif defined(__GLIBC__)
++#elif defined(__linux__) // glibc and musl
+ 
+ // The following sequence depends on glibc's sys/ucontext.h.
+ #if CPU(X86)
+@@ -747,7 +747,7 @@ void* MachineThreads::Thread::Registers:
+ #error Unknown Architecture
+ #endif
+ 
+-#elif defined(__GLIBC__)
++#elif defined(__linux__) // glibc and musl
+ 
+ // The following sequence depends on glibc's sys/ucontext.h.
+ #if CPU(X86)
+@@ -838,7 +838,7 @@ void* MachineThreads::Thread::Registers:
+ #error Unknown Architecture
+ #endif
+ 
+-#elif defined(__GLIBC__)
++#elif defined(__linux__) // glibc and musl
+ 
+ // The following sequence depends on glibc's sys/ucontext.h.
+ #if CPU(X86)
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/files/ppc-musl-fix.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/ppc-musl-fix.patch
new file mode 100644
index 0000000..5f58e49
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/files/ppc-musl-fix.patch
@@ -0,0 +1,26 @@
+ucontext structure is different between musl and glibc for ppc
+therefore its not enough just to check for arch alone, we also
+need to check for libc type.
+
+Fixes errors like
+
+Source/JavaScriptCore/heap/MachineStackMarker.cpp:90:65: error: 'struct mcontext_t' has no member named 'uc_regs'; did you mean 'gregs'?
+     thread->suspendedMachineContext = *userContext->uc_mcontext.uc_regs;
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: webkitgtk-2.12.3/Source/JavaScriptCore/heap/MachineStackMarker.cpp
+===================================================================
+--- webkitgtk-2.12.3.orig/Source/JavaScriptCore/heap/MachineStackMarker.cpp
++++ webkitgtk-2.12.3/Source/JavaScriptCore/heap/MachineStackMarker.cpp
+@@ -86,7 +86,7 @@ static void pthreadSignalHandlerSuspendR
+     }
+ 
+     ucontext_t* userContext = static_cast<ucontext_t*>(ucontext);
+-#if CPU(PPC)
++#if CPU(PPC) && defined(__GLIBC__)
+     thread->suspendedMachineContext = *userContext->uc_mcontext.uc_regs;
+ #else
+     thread->suspendedMachineContext = userContext->uc_mcontext;
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-backtrace-on-linux-when-using-glibc.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-backtrace-on-linux-when-using-glibc.patch
deleted file mode 100644
index d7e4ef6..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-backtrace-on-linux-when-using-glibc.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 0b68ad206d2d90df78d91cad4da19152084014cf Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 16 Sep 2015 05:15:04 +0000
-Subject: [PATCH] Enable backtrace on linux when using glibc
-
-We dont have backtrace() implemented on non-glibc libc's on linux
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Accepted
-
- Source/WTF/wtf/Assertions.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp
-index 191d53f..a4d86b5 100644
---- a/Source/WTF/wtf/Assertions.cpp
-+++ b/Source/WTF/wtf/Assertions.cpp
-@@ -68,7 +68,7 @@
- #include <unistd.h>
- #endif
- 
--#if OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))
-+#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))
- #include <cxxabi.h>
- #include <dlfcn.h>
- #include <execinfo.h>
-@@ -225,7 +225,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f
- 
- void WTFGetBacktrace(void** stack, int* size)
- {
--#if OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))
-+#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))
-     *size = backtrace(stack, *size);
- #elif OS(WINDOWS)
-     // The CaptureStackBackTrace function is available in XP, but it is not defined
--- 
-2.5.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-non-glibc-libraries-on-linux.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-non-glibc-libraries-on-linux.patch
deleted file mode 100644
index 77ebf37..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-non-glibc-libraries-on-linux.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 30e2ef302a329850ba55c7c458c98cbf396186ec Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 21:47:34 +0000
-Subject: [PATCH] Fix build with non-glibc libraries on linux
-
-qualify isnan() calls with std namespace
-malloc_trim is glibc specific API so guard it with __GLIBC__
-let ctype be used on non-glibc ( musl ) C library
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Accepted
-
- Source/JavaScriptCore/runtime/Options.cpp                    | 2 +-
- Source/WTF/wtf/DisallowCType.h                               | 2 +-
- Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp | 2 ++
- 3 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/Source/JavaScriptCore/runtime/Options.cpp b/Source/JavaScriptCore/runtime/Options.cpp
-index fe830b4..c49aade 100644
---- a/Source/JavaScriptCore/runtime/Options.cpp
-+++ b/Source/JavaScriptCore/runtime/Options.cpp
-@@ -610,7 +610,7 @@ bool Option::operator==(const Option& other) const
-     case Options::Type::unsignedType:
-         return m_entry.unsignedVal == other.m_entry.unsignedVal;
-     case Options::Type::doubleType:
--        return (m_entry.doubleVal == other.m_entry.doubleVal) || (isnan(m_entry.doubleVal) && isnan(other.m_entry.doubleVal));
-+        return (m_entry.doubleVal == other.m_entry.doubleVal) || (std::isnan(m_entry.doubleVal) && std::isnan(other.m_entry.doubleVal));
-     case Options::Type::int32Type:
-         return m_entry.int32Val == other.m_entry.int32Val;
-     case Options::Type::optionRangeType:
-diff --git a/Source/WTF/wtf/DisallowCType.h b/Source/WTF/wtf/DisallowCType.h
-index d85e767..dc6bcab 100644
---- a/Source/WTF/wtf/DisallowCType.h
-+++ b/Source/WTF/wtf/DisallowCType.h
-@@ -40,7 +40,7 @@
- // are used from wx headers. On GTK+ for Mac many GTK+ files include <libintl.h>
- // or <glib/gi18n-lib.h>, which in turn include <xlocale/_ctype.h> which uses
- // isacii(). 
--#if !(OS(DARWIN) && PLATFORM(GTK)) && !PLATFORM(EFL) && !defined(_LIBCPP_VERSION)
-+#if !(OS(DARWIN) && PLATFORM(GTK)) && !PLATFORM(EFL) && !defined(_LIBCPP_VERSION) && defined(__GLIBC__)
- 
- #include <ctype.h>
- 
-diff --git a/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp b/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp
-index ea61909..1495642 100644
---- a/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp
-+++ b/Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp
-@@ -202,7 +202,9 @@ void MemoryPressureHandler::respondToMemoryPressure(Critical critical, Synchrono
- void MemoryPressureHandler::platformReleaseMemory(Critical)
- {
-     ReliefLogger log("Run malloc_trim");
-+#ifdef __GLIBC__
-     malloc_trim(0);
-+#endif
- }
- 
- void MemoryPressureHandler::ReliefLogger::platformLog()
--- 
-2.6.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/clang.patch b/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/clang.patch
deleted file mode 100644
index e526713..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk/clang.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Clang's builtin for clear_cache accepts char* and errors out when using void*,
-using char* work on both gcc and clang since char* is auto-converted to void* in gcc case
-
-Source/JavaScriptCore/assembler/ARM64Assembler.h:2857:33: error: cannot initialize a parameter of type 'char *' with an rvalue of type 'void *'
-        __builtin___clear_cache(reinterpret_cast<void*>(begin), reinterpret_cast<void*>(end));
-                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-1 error generated.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Accepted
-
-Index: webkitgtk-2.8.5/Source/JavaScriptCore/assembler/ARM64Assembler.h
-===================================================================
---- webkitgtk-2.8.5.orig/Source/JavaScriptCore/assembler/ARM64Assembler.h
-+++ webkitgtk-2.8.5/Source/JavaScriptCore/assembler/ARM64Assembler.h
-@@ -2854,7 +2854,7 @@ public:
- #if OS(LINUX) && COMPILER(GCC)
-     static inline void linuxPageFlush(uintptr_t begin, uintptr_t end)
-     {
--        __builtin___clear_cache(reinterpret_cast<void*>(begin), reinterpret_cast<void*>(end));
-+        __builtin___clear_cache(reinterpret_cast<char*>(begin), reinterpret_cast<char*>(end));
-     }
- #endif
- 
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk_2.10.7.bb b/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk_2.10.7.bb
deleted file mode 100644
index 8eb6b9f..0000000
--- a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk_2.10.7.bb
+++ /dev/null
@@ -1,88 +0,0 @@
-SUMMARY = "WebKit web rendering engine for the GTK+ platform"
-HOMEPAGE = "http://www.webkitgtk.org/"
-BUGTRACKER = "http://bugs.webkit.org/"
-
-LICENSE = "BSD & LGPLv2+"
-LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
-                    file://Source/WebKit/LICENSE;md5=4646f90082c40bcf298c285f8bab0b12 \
-                    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
-		    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
-		    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
-		   "
-
-SRC_URI = "\
-  http://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
-  file://clang.patch \
-  file://0001-Enable-backtrace-on-linux-when-using-glibc.patch \
-  file://0001-Fix-build-with-non-glibc-libraries-on-linux.patch \
-  file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
-  file://0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch \
-  file://0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch \
-  "
-SRC_URI[md5sum] = "84832b9d8329413b4f1d87df5f7e8efe"
-SRC_URI[sha256sum] = "990d62c82ed6dede31a6ff0a82d847f16b812842ff3e1093d17113627652864e"
-
-inherit cmake lib_package pkgconfig perlnative pythonnative distro_features_check upstream-version-is-even gobject-introspection
-
-# depends on libxt
-REQUIRED_DISTRO_FEATURES = "x11"
-
-DEPENDS = "zlib libsoup-2.4 curl libxml2 cairo libxslt libxt libidn gnutls \
-           gtk+3 gstreamer1.0 gstreamer1.0-plugins-base flex-native gperf-native sqlite3 \
-	   pango icu bison-native gnome-common gawk intltool-native libwebp \
-	   atk udev harfbuzz jpeg libpng pulseaudio librsvg libtheora libvorbis libxcomposite libxtst \
-	   ruby-native libnotify gstreamer1.0-plugins-bad \
-          "
-
-PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', 'wayland' ,d)} \
-                   ${@base_contains('DISTRO_FEATURES', 'opengl', 'webgl', '' ,d)} \
-                   enchant \
-                   gtk2 \
-                   libsecret \
-                  "
-
-PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland"
-PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11"
-PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
-PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant"
-PACKAGECONFIG[gtk2] = "-DENABLE_PLUGIN_PROCESS_GTK2=ON,-DENABLE_PLUGIN_PROCESS_GTK2=OFF,gtk+"
-PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
-PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/libgl"
-PACKAGECONFIG[libsecret] = "-DENABLE_CREDENTIAL_STORAGE=ON,-DENABLE_CREDENTIAL_STORAGE=OFF,libsecret"
-PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
-
-EXTRA_OECMAKE = " \
-		-DPORT=GTK \
-		-DCMAKE_BUILD_TYPE=Release \
-		${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
-		-DENABLE_GTKDOC=OFF \
-		-DENABLE_MINIBROWSER=ON \
-		"
-
-# Javascript JIT is not supported on powerpc
-EXTRA_OECMAKE_append_powerpc = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE_append_powerpc64 = " -DENABLE_JIT=OFF "
-
-# ARM JIT code does not build on ARMv5/6 anymore, apparently they test only on v7 onwards
-EXTRA_OECMAKE_append_armv5 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE_append_armv6 = " -DENABLE_JIT=OFF "
-
-# binutils 2.25.1 has a bug on aarch64:
-# https://sourceware.org/bugzilla/show_bug.cgi?id=18430
-EXTRA_OECMAKE_append_aarch64 = " -DUSE_LD_GOLD=OFF "
-
-# JIT not supported on MIPS either
-EXTRA_OECMAKE_append_mips = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE_append_mips64 = " -DENABLE_JIT=OFF "
-
-FILES_${PN} += "${libdir}/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so"
-
-# http://errors.yoctoproject.org/Errors/Details/20370/
-ARM_INSTRUCTION_SET = "arm"
-
-# Invalid data memory access: 0x00000000
-# ...
-# qemu: uncaught target signal 11 (Segmentation fault) - core dumped
-# Segmentation fault
-EXTRA_OECMAKE_append_powerpc = " -DENABLE_INTROSPECTION=OFF "
-
diff --git a/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk_2.12.5.bb b/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk_2.12.5.bb
new file mode 100644
index 0000000..941d0e2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-sato/webkit/webkitgtk_2.12.5.bb
@@ -0,0 +1,108 @@
+SUMMARY = "WebKit web rendering engine for the GTK+ platform"
+HOMEPAGE = "http://www.webkitgtk.org/"
+BUGTRACKER = "http://bugs.webkit.org/"
+
+LICENSE = "BSD & LGPLv2+"
+LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
+                    file://Source/WebKit/LICENSE;md5=4646f90082c40bcf298c285f8bab0b12 \
+                    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
+		    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
+		    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
+		   "
+
+SRC_URI = "\
+  http://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
+  file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
+  file://0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch \
+  file://0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch \
+  file://0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch \
+  file://musl-fixes.patch \
+  file://ppc-musl-fix.patch \
+  file://0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch \
+  file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
+  "
+SRC_URI[md5sum] = "7a9ea00ec195488db90fdeb2d174ddaf"
+SRC_URI[sha256sum] = "6b147854b864a5f115fadb97b2b6200b2f696db015216a34e7298d11c88b1c40"
+
+inherit cmake lib_package pkgconfig gobject-introspection perlnative distro_features_check upstream-version-is-even gtk-doc
+
+# We cannot inherit pythonnative because that would conflict with inheriting python3native
+# (which is done by gobject-introspection). But webkit only needs the path to native Python 2.x binary
+# so we simply set it explicitly here.
+EXTRANATIVEPATH += "python-native"
+
+# depends on libxt
+REQUIRED_DISTRO_FEATURES = "x11"
+
+DEPENDS = "zlib libsoup-2.4 curl libxml2 cairo libxslt libxt libidn gnutls \
+           gtk+3 gstreamer1.0 gstreamer1.0-plugins-base flex-native gperf-native sqlite3 \
+	   pango icu bison-native gawk intltool-native libwebp \
+	   atk udev harfbuzz jpeg libpng pulseaudio librsvg libtheora libvorbis libxcomposite libxtst \
+	   ruby-native libnotify gstreamer1.0-plugins-bad \
+          "
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'wayland' ,d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'webgl', '' ,d)} \
+                   enchant \
+                   libsecret \
+                  "
+
+PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland"
+PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11"
+PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
+PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant"
+PACKAGECONFIG[gtk2] = "-DENABLE_PLUGIN_PROCESS_GTK2=ON,-DENABLE_PLUGIN_PROCESS_GTK2=OFF,gtk+"
+PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
+PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/libgl"
+PACKAGECONFIG[libsecret] = "-DENABLE_CREDENTIAL_STORAGE=ON,-DENABLE_CREDENTIAL_STORAGE=OFF,libsecret"
+PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
+
+EXTRA_OECMAKE = " \
+		-DPORT=GTK \
+		-DCMAKE_BUILD_TYPE=Release \
+		${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
+		${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \
+		-DENABLE_MINIBROWSER=ON \
+		"
+
+# Javascript JIT is not supported on powerpc
+EXTRA_OECMAKE_append_powerpc = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE_append_powerpc64 = " -DENABLE_JIT=OFF "
+
+# ARM JIT code does not build on ARMv4/5/6 anymore
+EXTRA_OECMAKE_append_armv5 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE_append_armv6 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE_append_armv4 = " -DENABLE_JIT=OFF "
+
+# binutils 2.25.1 has a bug on aarch64:
+# https://sourceware.org/bugzilla/show_bug.cgi?id=18430
+EXTRA_OECMAKE_append_aarch64 = " -DUSE_LD_GOLD=OFF "
+EXTRA_OECMAKE_append_mips = " -DUSE_LD_GOLD=OFF "
+EXTRA_OECMAKE_append_mips64 = " -DUSE_LD_GOLD=OFF "
+EXTRA_OECMAKE_append_toolchain-clang = " -DUSE_LD_GOLD=OFF "
+
+# JIT not supported on MIPS either
+EXTRA_OECMAKE_append_mips = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE_append_mips64 = " -DENABLE_JIT=OFF "
+
+SECURITY_CFLAGS_remove_aarch64 = "-fpie"
+SECURITY_CFLAGS_append_aarch64 = " -fPIE"
+
+FILES_${PN} += "${libdir}/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so"
+
+# http://errors.yoctoproject.org/Errors/Details/20370/
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_armv6 = "arm"
+
+# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
+# https://bugs.webkit.org/show_bug.cgi?id=159880
+# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
+# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
+ARM_INSTRUCTION_SET_armv7a = "thumb"
+ARM_INSTRUCTION_SET_armv7r = "thumb"
+ARM_INSTRUCTION_SET_armv7ve = "thumb"
+
+# WebKit2-4.0: ../../libgpg-error-1.21/src/posix-lock.c:119: get_lock_object: Assertion `!"sizeof lock obj"' failed.
+# qemu: uncaught target signal 6 (Aborted) - core dumped
+EXTRA_OECMAKE_append_mips64 = " -DENABLE_INTROSPECTION=OFF -DENABLE_GTKDOC=OFF"
diff --git a/import-layers/yocto-poky/meta/recipes-support/apr/apr_1.5.2.bb b/import-layers/yocto-poky/meta/recipes-support/apr/apr_1.5.2.bb
index db15305..302c935 100644
--- a/import-layers/yocto-poky/meta/recipes-support/apr/apr_1.5.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/apr/apr_1.5.2.bb
@@ -38,6 +38,9 @@
 # x86_64-linux-libtool:   error: specify a tag with '--tag'
 CCACHE = ""
 
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
 do_configure_prepend() {
 	# Avoid absolute paths for grep since it causes failures
 	# when using sstate between different hosts with different
diff --git a/import-layers/yocto-poky/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb b/import-layers/yocto-poky/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
index d61c8be..bd0cfdf 100644
--- a/import-layers/yocto-poky/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
@@ -1,7 +1,7 @@
 # Copyright (C) 2015 Khem Raj <raj.khem@gmail.com>
 # Released under the MIT license (see COPYING.MIT for the terms)
 
-DESCRIPTION = "Glibc hierarchical argument parsing standalone library"
+SUMMARY = "Glibc hierarchical argument parsing standalone library"
 HOMEPAGE = "http://www.lysator.liu.se/~nisse/misc/"
 LICENSE = "LGPL-2.1"
 LIC_FILES_CHKSUM = "file://argp.h;beginline=1;endline=20;md5=008b7e53dea6f9e1d9fdef0d9cf3184a"
diff --git a/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-atk_2.18.1.bb b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-atk_2.18.1.bb
deleted file mode 100644
index b8a93f3..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-atk_2.18.1.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "AT-SPI 2 Toolkit Bridge"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e9f288ba982d60518f375b5898283886"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "d7040a55df975865ab0d74a4b325afb5"
-SRC_URI[sha256sum] = "c4b15f9386d34d464ddad5f6cc85669742c016df87141ceee93513245979c12d"
-
-DEPENDS = "dbus glib-2.0 atk at-spi2-core"
-
-inherit autotools pkgconfig distro_features_check upstream-version-is-even
-
-# The at-spi2-core requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-PACKAGES =+ "${PN}-gnome ${PN}-gtk2"
-
-FILES_${PN}-gnome = "${libdir}/gnome-settings-daemon-3.0/gtk-modules"
-FILES_${PN}-gtk2 = "${libdir}/gtk-2.0/modules/libatk-bridge.*"
diff --git a/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-atk_2.20.1.bb b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-atk_2.20.1.bb
new file mode 100644
index 0000000..d4120b6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-atk_2.20.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "AT-SPI 2 Toolkit Bridge"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e9f288ba982d60518f375b5898283886"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "23309b6f8e1623871ace6347fb734dce"
+SRC_URI[sha256sum] = "2358a794e918e8f47ce0c7370eee8fc8a6207ff1afe976ec9ff547a03277bf8e"
+
+DEPENDS = "dbus glib-2.0 atk at-spi2-core"
+
+inherit autotools pkgconfig distro_features_check upstream-version-is-even
+
+# The at-spi2-core requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+
+PACKAGES =+ "${PN}-gnome ${PN}-gtk2"
+
+FILES_${PN}-gnome = "${libdir}/gnome-settings-daemon-3.0/gtk-modules"
+FILES_${PN}-gtk2 = "${libdir}/gtk-2.0/modules/libatk-bridge.*"
diff --git a/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core/0001-build-Add-with-systemduserunitdir.patch b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core/0001-build-Add-with-systemduserunitdir.patch
new file mode 100644
index 0000000..4103eaa
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core/0001-build-Add-with-systemduserunitdir.patch
@@ -0,0 +1,49 @@
+From 2f47c975ebe52b6916a45ade023ae3bac21bb0e0 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 21 Jun 2016 16:00:02 +0300
+Subject: [PATCH] build: Add --with-systemduserunitdir
+
+Default to "pkg-config --variable=systemduserunitdir systemd" but
+allow overriding the value.
+
+Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=767911]
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ bus/Makefile.am | 2 +-
+ configure.ac    | 7 +++++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/bus/Makefile.am b/bus/Makefile.am
+index b189e02..52fbb0b 100644
+--- a/bus/Makefile.am
++++ b/bus/Makefile.am
+@@ -26,7 +26,7 @@ dbusservice_DATA = org.a11y.Bus.service
+ org.a11y.Bus.service: org.a11y.Bus.service.in
+ 	sed -e $(substitutions) $< > $@.tmp && mv $@.tmp $@
+ 
+-systemd_userdir = $(prefix)/lib/systemd/user
++systemd_userdir = $(systemduserunitdir)
+ systemd_user_DATA = at-spi-dbus-bus.service
+ at-spi-dbus-bus.service: at-spi-dbus-bus.service.in Makefile
+ 	sed -e $(substitutions) $< > $@.tmp && mv $@.tmp $@
+diff --git a/configure.ac b/configure.ac
+index f9061c2..2b8eeed 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -183,6 +183,13 @@ else
+ fi
+ AC_SUBST(DBUS_SERVICES_DIR)
+ 
++AC_ARG_WITH([systemduserunitdir],
++            AS_HELP_STRING([--with-systemduserunitdir=DIR],
++                           [Directory for systemd service files]),
++            [],
++            [with_systemduserunitdir=$($PKG_CONFIG --variable=systemduserunitdir systemd)])
++AC_SUBST([systemduserunitdir], [$with_systemduserunitdir])
++
+ AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
+ 
+ GOBJECT_INTROSPECTION_CHECK([0.9.6])
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core_2.18.3.bb b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core_2.18.3.bb
deleted file mode 100644
index eced597..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core_2.18.3.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Assistive Technology Service Provider Interface (dbus core)"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e9f288ba982d60518f375b5898283886"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
-           file://0001-nls.m4-Take-it-from-gettext-0.15.patch \
-          "
-
-SRC_URI[md5sum] = "fc18801e56f6ce6914126f837d42f556"
-SRC_URI[sha256sum] = "ada26add94155f97d0f601a20cb7a0e3fd3ba1588c3520b7288316494027d629"
-
-DEPENDS = "dbus glib-2.0 virtual/libx11 libxi libxtst intltool-native gettext-native"
-
-inherit autotools gtk-doc pkgconfig distro_features_check upstream-version-is-even gobject-introspection
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = "--disable-xevie --with-dbus-daemondir=${bindir}"
-
-FILES_${PN} += "${datadir}/dbus-1/services/*.service \
-                ${datadir}/dbus-1/accessibility-services/*.service"
diff --git a/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core_2.20.2.bb b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core_2.20.2.bb
new file mode 100644
index 0000000..199243a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/atk/at-spi2-core_2.20.2.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Assistive Technology Service Provider Interface (dbus core)"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e9f288ba982d60518f375b5898283886"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
+           file://0001-nls.m4-Take-it-from-gettext-0.15.patch \
+           file://0001-build-Add-with-systemduserunitdir.patch \
+          "
+
+SRC_URI[md5sum] = "f6f6303da2e72317f881703f40bf0c62"
+SRC_URI[sha256sum] = "88a4de9d43139f13cca531b47b901bc1b56e0ab06ba899126644abd4ac16a143"
+
+DEPENDS = "dbus glib-2.0 virtual/libx11 libxi libxtst intltool-native"
+
+inherit autotools gtk-doc gettext systemd pkgconfig distro_features_check upstream-version-is-even gobject-introspection
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF = "--disable-xevie \
+                --with-systemduserunitdir=${systemd_user_unitdir} \
+                --with-dbus-daemondir=${bindir}"
+
+FILES_${PN} += "${datadir}/dbus-1/services/*.service \
+                ${datadir}/dbus-1/accessibility-services/*.service \
+                ${datadir}/defaults/at-spi2 \
+                ${systemd_user_unitdir}/at-spi-dbus-bus.service \
+                "
diff --git a/import-layers/yocto-poky/meta/recipes-support/atk/atk_2.18.0.bb b/import-layers/yocto-poky/meta/recipes-support/atk/atk_2.18.0.bb
deleted file mode 100644
index 3c0e82d..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/atk/atk_2.18.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Accessibility toolkit for GNOME"
-HOMEPAGE = "http://live.gnome.org/GAP/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "x11/libs"
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
-                    file://atk/atkutil.c;endline=18;md5=6fd31cd2fdc9b30f619ca8d819bc12d3 \
-                    file://atk/atk.h;endline=18;md5=fcd7710187e0eae485e356c30d1b0c3b"
-
-DEPENDS = "glib-2.0"
-
-inherit gnomebase gtk-doc upstream-version-is-even gobject-introspection
-
-SRC_URI[archive.md5sum] = "fd3678f35004b4c92e3da39356996054"
-SRC_URI[archive.sha256sum] = "ce6c48d77bf951083029d5a396dd552d836fff3c1715d3a7022e917e46d0c92b"
-
-BBCLASSEXTEND = "native"
-
-EXTRA_OECONF = "--disable-glibtest \
-               "
diff --git a/import-layers/yocto-poky/meta/recipes-support/atk/atk_2.20.0.bb b/import-layers/yocto-poky/meta/recipes-support/atk/atk_2.20.0.bb
new file mode 100644
index 0000000..0422354
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/atk/atk_2.20.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Accessibility toolkit for GNOME"
+HOMEPAGE = "http://live.gnome.org/GAP/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/libs"
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://atk/atkutil.c;endline=18;md5=6fd31cd2fdc9b30f619ca8d819bc12d3 \
+                    file://atk/atk.h;endline=18;md5=fcd7710187e0eae485e356c30d1b0c3b"
+
+DEPENDS = "glib-2.0"
+
+inherit gnomebase gtk-doc gettext upstream-version-is-even gobject-introspection
+
+SRC_URI[archive.md5sum] = "5187b0972f4d3905f285540b31395e20"
+SRC_URI[archive.sha256sum] = "493a50f6c4a025f588d380a551ec277e070b28a82e63ef8e3c06b3ee7c1238f0"
+
+BBCLASSEXTEND = "native"
+
+EXTRA_OECONF = "--disable-glibtest \
+               "
diff --git a/import-layers/yocto-poky/meta/recipes-support/attr/acl.inc b/import-layers/yocto-poky/meta/recipes-support/attr/acl.inc
index 198fb4f..37a0218 100644
--- a/import-layers/yocto-poky/meta/recipes-support/attr/acl.inc
+++ b/import-layers/yocto-poky/meta/recipes-support/attr/acl.inc
@@ -14,6 +14,7 @@
            file://acl-fix-the-order-of-expected-output-of-getfacl.patch \
            file://test-fix-insufficient-quoting-of.patch \
            file://test-fixups-on-SELinux-machines-for-root-testcases.patch \
+           file://test-fix-directory-permissions.patch \
 "
 
 require ea-acl.inc
@@ -33,7 +34,7 @@
 inherit ptest
 
 do_install_ptest() {
-	tar -cf - test/ --exclude nfs | ( cd ${D}${PTEST_PATH} && tar -xf - )
+	tar -c --exclude=nfs test/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
 	mkdir ${D}${PTEST_PATH}/include
 	cp ${S}/include/builddefs ${S}/include/buildmacros ${S}/include/buildrules ${D}${PTEST_PATH}/include/
 }
diff --git a/import-layers/yocto-poky/meta/recipes-support/attr/acl/run-ptest b/import-layers/yocto-poky/meta/recipes-support/attr/acl/run-ptest
index 3b31cc9..a56946d 100644
--- a/import-layers/yocto-poky/meta/recipes-support/attr/acl/run-ptest
+++ b/import-layers/yocto-poky/meta/recipes-support/attr/acl/run-ptest
@@ -1,7 +1,64 @@
 #!/bin/sh
+#
+#This script is used to run acl test suites
 
-gpasswd -a daemon bin
-make -C test -k tests root-tests |sed \
- -e 's|^\[.*\] \(.*\) -- ok$|PASS: \1|' \
- -e 's|^\[.*\] \(.*\) -- failed|FAIL: \1|'
-gpasswd -d daemon bin
+#umask 077
+
+EXT3_IMAGE=ext3.img
+EXT3_MOUNT_POINT=/mnt/ext3
+
+trap 'rm -f ${EXT3_IMAGE}' EXIT
+
+dd if=/dev/zero of=${EXT3_IMAGE} bs=1M count=1
+if [ "$?" -eq 0 ]; then
+	echo "PASS: dump ext3.img"
+else
+	echo "FAIL: dump ext3.img"
+	exit 1
+fi
+
+mkfs.ext3 -F ${EXT3_IMAGE}
+if [ "$?" -eq 0 ]; then
+	echo "PASS: mkfs.ext3 -F ext3.img"
+else
+	echo "FAIL: mkfs.ext3 -F ext3.img"
+	exit 1
+fi
+
+if [ -d $EXT3_MOUNT_POINT ]; then
+	echo "mount point exist"
+else
+	mkdir -p $EXT3_MOUNT_POINT
+fi
+
+
+mount -o loop,rw,acl  ${EXT3_IMAGE} $EXT3_MOUNT_POINT
+if [ "$?" -eq 0 ]; then
+	echo "PASS: mount ext3.img"
+else
+	echo "FAIL: mount ext3.img"
+	exit 1
+fi
+
+cp -rf ./test/ $EXT3_MOUNT_POINT
+
+cd $EXT3_MOUNT_POINT/test/
+
+if	sed -e 's!^bin:x:2:$!bin:x:2:daemon!' < /etc/group > gtmp
+then	if	cp /etc/group group.orig;
+	then	cp gtmp /etc/group
+		make  -k tests root-tests | sed \
+			-e 's|^\[.*\] \(.*\) -- ok$|PASS: \1|' \
+	  		-e 's|^\[.*\] \(.*\) -- failed|FAIL: \1|'
+		cp group.orig /etc/group
+	else	echo "FAIL: couldn't save original group file."
+		exit 1
+	fi
+else	echo "FAIL: couldn't create modified group file."
+	exit 1
+fi
+
+cd -
+umount $EXT3_MOUNT_POINT
+rm -rf $EXT3_MOUNT_POINT
+rm $EXT3_IMAGE
diff --git a/import-layers/yocto-poky/meta/recipes-support/attr/acl/test-fix-directory-permissions.patch b/import-layers/yocto-poky/meta/recipes-support/attr/acl/test-fix-directory-permissions.patch
new file mode 100644
index 0000000..cd4510c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/attr/acl/test-fix-directory-permissions.patch
@@ -0,0 +1,24 @@
+commit c45bae84817a70fef6c2b661a07a492a0d23ae85
+Author: Peter Seebach <peter.seebach@windriver.com>
+Date:   Wed May 11 15:16:06 2016 -0500
+
+    Fix permissions on temporary directory
+
+    The temporary directory's permissions have to allow other users to
+    view the directory. A default umask of 022 is common, but not mandatory,
+    and secure systems may have more restrictive defaults.
+
+    Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
+
+diff --git a/test/root/permissions.test b/test/root/permissions.test
+index 42615f5..098b52a 100644
+--- a/test/root/permissions.test
++++ b/test/root/permissions.test
+@@ -16,6 +16,7 @@ Cry immediately if we are not running as root.
+ First, set up a temporary directory and create a regular file with
+ defined permissions.
+ 
++	$ umask 022
+ 	$ mkdir d
+ 	$ cd d
+ 	$ umask 027
diff --git a/import-layers/yocto-poky/meta/recipes-support/attr/attr.inc b/import-layers/yocto-poky/meta/recipes-support/attr/attr.inc
index 6860978..e8b5d05 100644
--- a/import-layers/yocto-poky/meta/recipes-support/attr/attr.inc
+++ b/import-layers/yocto-poky/meta/recipes-support/attr/attr.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://savannah.nongnu.org/projects/attr/"
 SECTION = "libs"
 
-DEPENDS = "ncurses virtual/libintl"
+DEPENDS = "virtual/libintl"
 
 LICENSE = "LGPLv2.1+ & GPLv2+"
 LICENSE_${PN} = "GPLv2+"
@@ -26,7 +26,7 @@
 inherit ptest
 
 do_install_ptest() {
-	tar -cf - test/ --exclude ext | ( cd ${D}${PTEST_PATH} && tar -xf - )
+	tar -c --exclude=ext test/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
 	mkdir ${D}${PTEST_PATH}/include
 	for i in builddefs buildmacros buildrules; \
 	  do cp ${S}/include/$i ${D}${PTEST_PATH}/include/; \
diff --git a/import-layers/yocto-poky/meta/recipes-support/attr/attr_2.4.47.bb b/import-layers/yocto-poky/meta/recipes-support/attr/attr_2.4.47.bb
index 44eee39..556c8e4 100644
--- a/import-layers/yocto-poky/meta/recipes-support/attr/attr_2.4.47.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/attr/attr_2.4.47.bb
@@ -2,9 +2,9 @@
 
 # configure.ac was missing from the release tarball. This should be fixed in
 # future releases of attr, remove this when updating the recipe.
-SRC_URI_append += "file://attr-Missing-configure.ac.patch \
-                   file://dont-use-decl-macros.patch \
-                  "
+SRC_URI += "file://attr-Missing-configure.ac.patch \
+            file://dont-use-decl-macros.patch \
+           "
 
 SRC_URI[md5sum] = "84f58dec00b60f2dc8fd1c9709291cc7"
 SRC_URI[sha256sum] = "25772f653ac5b2e3ceeb89df50e4688891e21f723c460636548971652af0a859"
diff --git a/import-layers/yocto-poky/meta/recipes-support/bash-completion/bash-completion_2.1.bb b/import-layers/yocto-poky/meta/recipes-support/bash-completion/bash-completion_2.1.bb
deleted file mode 100644
index 8b257d2..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/bash-completion/bash-completion_2.1.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Programmable Completion for Bash 4"
-HOMEPAGE = "http://bash-completion.alioth.debian.org/"
-BUGTRACKER = "https://alioth.debian.org/projects/bash-completion/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SECTION = "console/utils"
-
-SRC_URI="http://bash-completion.alioth.debian.org/files/${BPN}-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "4e2a9f11a4042a38ee79ddcd048e8b9e"
-SRC_URI[sha256sum] = "2b606804a7d5f823380a882e0f7b6c8a37b0e768e72c3d4107c51fbe8a46ae4f"
-UPSTREAM_CHECK_REGEX = "bash-completion-(?P<pver>(?!2008).+)\.tar"
-
-PARALLEL_MAKE = ""
-
-inherit autotools
-
-do_install_append() {
-	# compatdir
-	install -d ${D}${sysconfdir}/bash_completion.d/
-	echo '. ${datadir}/${BPN}/bash_completion' >${D}${sysconfdir}/bash_completion
-
-	# Delete files already provided by util-linux
-	local i
-	for i in cal dmesg eject hexdump hwclock ionice look renice rtcwake su; do
-		rm ${D}${datadir}/${BPN}/completions/$i
-	done
-
-	# Delete files for networkmanager
-	rm ${D}${datadir}/${BPN}/completions/nmcli
-}
-
-RDEPENDS_${PN} = "bash"
-
-# Some recipes are providing ${PN}-bash-completion packages
-PACKAGES =+ "${PN}-extra"
-FILES_${PN}-extra = "${datadir}/${BPN}/completions/ \
-    ${datadir}/${BPN}/helpers/"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/bash-completion/bash-completion_2.4.bb b/import-layers/yocto-poky/meta/recipes-support/bash-completion/bash-completion_2.4.bb
new file mode 100644
index 0000000..42719f1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/bash-completion/bash-completion_2.4.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Programmable Completion for Bash 4"
+HOMEPAGE = "http://bash-completion.alioth.debian.org/"
+BUGTRACKER = "https://alioth.debian.org/projects/bash-completion/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SECTION = "console/utils"
+
+SRC_URI = "https://github.com/scop/bash-completion/releases/download/${PV}/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "1ea94864fb2b2446fbbdf82f10bd25df"
+SRC_URI[sha256sum] = "c0f76b5202fec9ef8ffba82f5605025ca003f27cfd7a85115f838ba5136890f6"
+UPSTREAM_CHECK_REGEX = "bash-completion-(?P<pver>(?!2008).+)\.tar"
+UPSTREAM_CHECK_URI = "https://github.com/scop/bash-completion/releases"
+
+PARALLEL_MAKE = ""
+
+inherit autotools
+
+do_install_append() {
+	# compatdir
+	install -d ${D}${sysconfdir}/bash_completion.d/
+	echo '. ${datadir}/${BPN}/bash_completion' >${D}${sysconfdir}/bash_completion
+
+	# Delete files already provided by util-linux
+	local i
+	for i in mount umount; do
+		rm ${D}${datadir}/${BPN}/completions/$i
+	done
+}
+
+RDEPENDS_${PN} = "bash"
+
+# Some recipes are providing ${PN}-bash-completion packages
+PACKAGES =+ "${PN}-extra"
+FILES_${PN}-extra = "${datadir}/${BPN}/completions/ \
+    ${datadir}/${BPN}/helpers/"
+
+FILES_${PN}-dev += "${datadir}/cmake"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/0001-fix-build-with-musl.patch b/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/0001-fix-build-with-musl.patch
deleted file mode 100644
index ab907fc..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/0001-fix-build-with-musl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 829a89e7f5785239a9384e3afd46c900f9d76ada Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 31 Aug 2015 19:55:32 +0000
-Subject: [PATCH] fix build with musl
-
-signal.h already includes bits/sigcontext.h
-Documentation seems to indicate that if you need the definitions in
-sigcontext.h, you are supposed to include signal.h and not sigcontext.h.
-
-a good fix should be to remove glibc
-specific understanding, in those ifdef's
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- os_dep.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/os_dep.c b/os_dep.c
-index 08c501d..5cb7873 100644
---- a/os_dep.c
-+++ b/os_dep.c
-@@ -41,7 +41,7 @@
- #   else /* __GLIBC__ < 2 */
-       /* libc5 doesn't have <sigcontext.h>: go directly with the kernel   */
-       /* one.  Check LINUX_VERSION_CODE to see which we should reference. */
--#     include <asm/sigcontext.h>
-+#     include <signal.h>
- #   endif /* __GLIBC__ < 2 */
- # endif
- #endif /* LINUX && !POWERPC */
--- 
-2.5.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/0002-Altera-NIOS2-support.patch b/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/0002-Altera-NIOS2-support.patch
deleted file mode 100644
index c73c540..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/0002-Altera-NIOS2-support.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 2571df0e30b4976d7a12dbc6fbec4f1c4027924d Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Thu, 28 Jan 2016 04:13:13 +0100
-Subject: [PATCH] Altera NIOS2 support
-
-Add simple nios2 configuration support.
-
-* include/private/gcconfig.h (NIOS2): New macro.
-* include/private/gcconfig.h (mach_type_known, CPP_WORDSZ, MACH_TYPE,
-OS_TYPE, DYNAMIC_LOADING, _end, __data_start, DATASTART, DATAEND,
-ALIGNMENT, HBLKSIZE, HBLKSIZE, LINUX_STACKBOTTOM, NO_GETCONTEXT):
-Define for NIOS2.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Backport [ https://github.com/ivmai/bdwgc.git 2571df0e30b4976d7a12dbc6fbec4f1c4027924d ]
----
- include/private/gcconfig.h | 24 +++++++++++++++++++++++-
- 1 file changed, 23 insertions(+), 1 deletion(-)
-
-diff --git a/include/private/gcconfig.h b/include/private/gcconfig.h
-index c467c26..92d4727 100644
---- a/include/private/gcconfig.h
-+++ b/include/private/gcconfig.h
-@@ -181,6 +181,10 @@
- #    endif
- #    define mach_type_known
- # endif
-+# if defined(__NIOS2__) || defined(__NIOS2) || defined(__nios2__)
-+#   define NIOS2 /* Altera NIOS2 */
-+#   define mach_type_known
-+# endif
- # if defined(DGUX) && (defined(i386) || defined(__i386__))
- #    define I386
- #    ifndef _USING_DGUX
-@@ -1658,6 +1662,24 @@
- #   endif
- # endif
- 
-+# ifdef NIOS2
-+#  define CPP_WORDSZ 32
-+#  define MACH_TYPE "NIOS2"
-+#  ifdef LINUX
-+#    define OS_TYPE "LINUX"
-+#    define DYNAMIC_LOADING
-+     extern int _end[];
-+     extern int __data_start[];
-+#    define DATASTART ((ptr_t)(__data_start))
-+#    define DATAEND ((ptr_t)(_end))
-+#    define ALIGNMENT 4
-+#    ifndef HBLKSIZE
-+#      define HBLKSIZE 4096
-+#    endif
-+#    define LINUX_STACKBOTTOM
-+#  endif /* Linux */
-+# endif
-+
- # ifdef HP_PA
- #   define MACH_TYPE "HP_PA"
- #   ifdef __LP64__
-@@ -2622,6 +2644,7 @@
- #if ((defined(UNIX_LIKE) && (defined(DARWIN) || defined(HURD) \
-                              || defined(OPENBSD) || defined(ARM32) \
--                             || defined(MIPS) || defined(AVR32))) \
-+                             || defined(MIPS) || defined(AVR32) \
-+                             || defined(NIOS2))) \
-      || (defined(LINUX) && (defined(SPARC) || defined(M68K))) \
-      || ((defined(RTEMS) || defined(PLATFORM_ANDROID)) && defined(I386))) \
-     && !defined(NO_GETCONTEXT)
--- 
-2.7.0
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/musl_header_fix.patch b/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/musl_header_fix.patch
new file mode 100644
index 0000000..4a18496
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc/musl_header_fix.patch
@@ -0,0 +1,27 @@
+Add missing header to avoid:
+
+| 1472659610.016355: ../git/pthread_stop_world.c: In function 'GC_brief_async_signal_safe_sleep':
+| 1472659610.0540252: ../git/pthread_stop_world.c:397:22: error: storage size of 'tv' isn't known
+| 1472659610.0540252:        struct timeval tv;
+| 1472659610.0540252:                       ^~
+| 1472659610.054099: ../git/pthread_stop_world.c:397:22: warning: unused variable 'tv' [-Wunused-variable]
+| 1472659610.054099:        struct timeval tv;
+| 1472659610.054099:                       ^~
+| 1472659610.054099: Makefile:1530: recipe for target 'pthread_stop_world.lo' failed
+
+in musl builds.
+
+Upstream-Status: Pending
+
+Index: git/pthread_stop_world.c
+===================================================================
+--- git.orig/pthread_stop_world.c
++++ git/pthread_stop_world.c
+@@ -45,6 +45,7 @@
+ #include <semaphore.h>
+ #include <errno.h>
+ #include <unistd.h>
++#include <sys/time.h>
+ #include "atomic_ops.h"
+ 
+ /* It's safe to call original pthread_sigmask() here.   */
diff --git a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc_7.4.2.bb b/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc_7.4.2.bb
deleted file mode 100644
index 8d4dab3..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc_7.4.2.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "A garbage collector for C and C++"
-
-DESCRIPTION = "The Boehm-Demers-Weiser conservative garbage collector can be\
- used as a garbage collecting replacement for C malloc or C++ new. It allows\
- you to allocate memory basically as you normally would, without explicitly\
- deallocating memory that is no longer useful. The collector automatically\
- recycles memory when it determines that it can no longer be otherwise\
- accessed.\
-  The collector is also used by a number of programming language\
- implementations that either use C as intermediate code, want to facilitate\
- easier interoperation with C libraries, or just prefer the simple collector\
- interface.\
-  Alternatively, the garbage collector may be used as a leak detector for C\
- or C++ programs, though that is not its primary goal.\
-  Empirically, this collector works with most unmodified C programs, simply\
- by replacing malloc with GC_malloc calls, replacing realloc with GC_realloc\
- calls, and removing free calls."
-
-HOMEPAGE = "http://www.hboehm.info/gc/"
-SECTION = "devel"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://README.QUICK;md5=55f5088f90a982fed7af9a4897047ef7"
-
-SRCREV = "e31cdc288ffbee5bf25f948e19deb5a7ce846971"
-SRC_URI = "git://github.com/ivmai/bdwgc.git;branch=release-7_4 \
-           file://0001-fix-build-with-musl.patch \
-           file://0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch \
-           file://0002-Altera-NIOS2-support.patch \
-          "
-
-FILES_${PN}-doc = "${datadir}"
-
-S = "${WORKDIR}/git"
-
-ARM_INSTRUCTION_SET = "arm"
-
-inherit autotools pkgconfig
-
-# by default use external libatomic-ops
-PACKAGECONFIG ??= "libatomic-ops"
-PACKAGECONFIG[libatomic-ops] = "--with-libatomic-ops=yes,--with-libatomic-ops=no,libatomic-ops"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc_7.6.0.bb b/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc_7.6.0.bb
new file mode 100644
index 0000000..dcb68f0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/bdwgc/bdwgc_7.6.0.bb
@@ -0,0 +1,42 @@
+SUMMARY = "A garbage collector for C and C++"
+
+DESCRIPTION = "The Boehm-Demers-Weiser conservative garbage collector can be\
+ used as a garbage collecting replacement for C malloc or C++ new. It allows\
+ you to allocate memory basically as you normally would, without explicitly\
+ deallocating memory that is no longer useful. The collector automatically\
+ recycles memory when it determines that it can no longer be otherwise\
+ accessed.\
+  The collector is also used by a number of programming language\
+ implementations that either use C as intermediate code, want to facilitate\
+ easier interoperation with C libraries, or just prefer the simple collector\
+ interface.\
+  Alternatively, the garbage collector may be used as a leak detector for C\
+ or C++ programs, though that is not its primary goal.\
+  Empirically, this collector works with most unmodified C programs, simply\
+ by replacing malloc with GC_malloc calls, replacing realloc with GC_realloc\
+ calls, and removing free calls."
+
+HOMEPAGE = "http://www.hboehm.info/gc/"
+SECTION = "devel"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.QUICK;md5=4f81f24ec69726c312487c2ac740e9e3"
+
+SRCREV = "8ac1d84a40eb7a431fec1b8097e3f24b48fb23fa"
+SRC_URI = "git://github.com/ivmai/bdwgc.git \
+           file://0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch \
+           file://musl_header_fix.patch \
+          "
+
+FILES_${PN}-doc = "${datadir}"
+
+S = "${WORKDIR}/git"
+
+ARM_INSTRUCTION_SET = "arm"
+
+inherit autotools pkgconfig
+
+# by default use external libatomic-ops
+PACKAGECONFIG ??= "libatomic-ops"
+PACKAGECONFIG[libatomic-ops] = "--with-libatomic-ops=yes,--with-libatomic-ops=no,libatomic-ops"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/bmap-tools/bmap-tools_3.2.bb b/import-layers/yocto-poky/meta/recipes-support/bmap-tools/bmap-tools_3.2.bb
new file mode 100644
index 0000000..e10f5fd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/bmap-tools/bmap-tools_3.2.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Tools to generate block map (AKA bmap) and flash images using bmap"
+DESCRIPTION = "Bmap-tools - tools to generate block map (AKA bmap) and flash images using \
+bmap. Bmaptool is a generic tool for creating the block map (bmap) for a file, \
+and copying files using the block map. The idea is that large file containing \
+unused blocks, like raw system image files, can be copied or flashed a lot \
+faster with bmaptool than with traditional tools like "dd" or "cp"."
+HOMEPAGE = "http://git.infradead.org/users/dedekind/bmap-tools.git"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "ftp://ftp.infradead.org/pub/${BPN}/${BPN}-${PV}.tgz"
+SRC_URI[md5sum] = "92cdad1cb4dfa0cca7176c8e22752616"
+SRC_URI[sha256sum] = "cc6c7f7dc0a37e2a32deb127308e24e6c4b80bfb54f3803c308efab02bf2d434"
+
+RDEPENDS_${PN} = "python-core python-compression"
+
+inherit setuptools
+
+BBCLASSEXTEND = "native"
+
+do_install_append_class-native() {
+    sed -i -e 's|^#!.*/usr/bin/env python|#! /usr/bin/env nativepython|' ${D}${bindir}/bmaptool
+}
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/bjam-native_1.60.0.bb b/import-layers/yocto-poky/meta/recipes-support/boost/bjam-native_1.61.0.bb
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/boost/bjam-native_1.60.0.bb
rename to import-layers/yocto-poky/meta/recipes-support/boost/bjam-native_1.61.0.bb
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.60.0.inc b/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.60.0.inc
deleted file mode 100644
index a38693e..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.60.0.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-# The Boost web site provides free peer-reviewed portable
-# C++ source libraries. The emphasis is on libraries which
-# work well with the C++ Standard Library. The libraries are
-# intended to be widely useful, and are in regular use by
-# thousands of programmers across a broad spectrum of applications.
-HOMEPAGE = "http://www.boost.org/"
-LICENSE = "BSL-1.0 & MIT & Python-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
-
-BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
-BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
-BOOST_P = "boost_${BOOST_VER}"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/boost/${BOOST_P}.tar.bz2"
-
-SRC_URI[md5sum] = "65a840e1a0b13a558ff19eeb2c4f0cbe"
-SRC_URI[sha256sum] = "686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b"
-
-S = "${WORKDIR}/${BOOST_P}"
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.61.0.inc b/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.61.0.inc
new file mode 100644
index 0000000..cd9d8a4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.61.0.inc
@@ -0,0 +1,19 @@
+# The Boost web site provides free peer-reviewed portable
+# C++ source libraries. The emphasis is on libraries which
+# work well with the C++ Standard Library. The libraries are
+# intended to be widely useful, and are in regular use by
+# thousands of programmers across a broad spectrum of applications.
+HOMEPAGE = "http://www.boost.org/"
+LICENSE = "BSL-1.0 & MIT & Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+BOOST_VER = "${@"_".join(d.getVar("PV", True).split("."))}"
+BOOST_MAJ = "${@"_".join(d.getVar("PV", True).split(".")[0:2])}"
+BOOST_P = "boost_${BOOST_VER}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/boost/${BOOST_P}.tar.bz2"
+
+SRC_URI[md5sum] = "6095876341956f65f9d35939ccea1a9f"
+SRC_URI[sha256sum] = "a547bd06c2fd9a71ba1d169d9cf0339da7ebf4753849a8f7d6fdb8feee99b640"
+
+S = "${WORKDIR}/${BOOST_P}"
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc b/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc
index 982446c..ef16533 100644
--- a/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc
@@ -8,11 +8,14 @@
 BOOST_LIBS = "\
 	atomic \
 	chrono \
+	container \
 	date_time \
+	exception \
 	filesystem \
 	graph \
 	iostreams \
 	log \
+	math \
 	program_options \
 	random \
 	regex \
@@ -22,12 +25,30 @@
 	timer \
 	test \
 	thread \
+	wave \
 	"
 
-# optional boost-python library
-PACKAGECONFIG ??= ""
+# only supported by x86 and powerpc
+BOOST_LIBS_append_x86 = " context coroutine"
+BOOST_LIBS_append_x86-64 = " context coroutine"
+BOOST_LIBS_append_powerpc = " context coroutine"
+# need consistent settings for native builds (x86 override not applied for native)
+BOOST_LIBS_remove_class-native = " context coroutine"
+
+# optional libraries
+PACKAGECONFIG ??= "locale"
+PACKAGECONFIG[locale] = ",,icu"
+PACKAGECONFIG[graph_parallel] = ",,,boost-mpi mpich"
+PACKAGECONFIG[mpi] = ",,mpich"
 PACKAGECONFIG[python] = ",,python python3"
-BOOST_LIBS += "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python python3', '', d)}"
+
+BOOST_LIBS += "\
+    ${@bb.utils.contains('PACKAGECONFIG', 'locale', 'locale', '', d)} \
+    ${@bb.utils.contains('PACKAGECONFIG', 'graph_parallel', 'graph_parallel mpi', \
+                         bb.utils.contains('PACKAGECONFIG', 'mpi', 'mpi', '', d), d)} \
+    ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python python3', '', d)} \
+"
+
 inherit python-dir
 PYTHON_ROOT = "${STAGING_DIR_HOST}/${prefix}"
 
@@ -54,6 +75,10 @@
 }
 
 # Override the contents of specific packages
+FILES_${PN}-graph = "${libdir}/libboost_graph.so.*"
+FILES_${PN}-graph_parallel = "${libdir}/libboost_graph_parallel.so.*"
+FILES_${PN}-locale = "${libdir}/libboost_locale.so.*"
+FILES_${PN}-mpi = "${libdir}/mpi.so ${libdir}/libboost_mpi*.so.*"
 FILES_boost-serialization = "${libdir}/libboost_serialization*.so.* \
 	${libdir}/libboost_wserialization*.so.*"
 FILES_boost-test = "${libdir}/libboost_prg_exec_monitor*.so.* \
@@ -142,7 +167,7 @@
 BOOST_PARALLEL_MAKE = "${@get_boost_parallel_make(d)}"
 BJAM_OPTS    = '${BOOST_PARALLEL_MAKE} -d+2 -q \
 		${BJAM_TOOLS} \
-		-sBOOST_BUILD_USER_CONFIG=${S}/tools/build/example/user-config.jam \
+		-sBOOST_BUILD_USER_CONFIG=${WORKDIR}/user-config.jam \
 		--build-dir=${S}/${TARGET_SYS} \
 		--disable-icu \
 		${BJAM_EXTRA}'
@@ -150,25 +175,26 @@
 # Native compilation of bzip2 isn't working
 BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1'
 
-do_boostconfig() {
-	cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp
+do_configure() {
+	cp -f ${S}/boost/config/platform/linux.hpp ${S}/boost/config/platform/linux-gnueabi.hpp
 
 	# D2194:Fixing the failure of "error: duplicate initialization of gcc with the following parameters" during compilation.
-	sed -i "/^using gcc : 4.3.1/d" ${S}/tools/build/example/user-config.jam
-	sed -i "/^using python : ${PYTHON_BASEVERSION}"/d ${S}/tools/build/example/user-config.jam
-	echo 'using gcc : 4.3.1 : ${CXX} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;' >> ${S}/tools/build/example/user-config.jam
-	echo "using python : ${PYTHON_BASEVERSION} : : ${STAGING_INCDIR}/python${PYTHON_BASEVERSION} ;" >> ${S}/tools/build/example/user-config.jam
-	echo "using python : 3.5 : : ${STAGING_INCDIR}/python3.5m ;" >> ${S}/tools/build/example/user-config.jam
+	rm -f ${WORKDIR}/user-config.jam
+	echo 'using gcc : 4.3.1 : ${CXX} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;' >> ${WORKDIR}/user-config.jam
+	echo "using python : ${PYTHON_BASEVERSION} : : ${STAGING_INCDIR}/python${PYTHON_BASEVERSION} ;" >> ${WORKDIR}/user-config.jam
+	echo "using python : 3.5 : : ${STAGING_INCDIR}/python3.5m ;" >> ${WORKDIR}/user-config.jam
+
+	if ${@bb.utils.contains('BOOST_LIBS', 'mpi', 'true', 'false', d)}; then
+		echo "using mpi : : <find-shared-library>mpi ;" >> ${WORKDIR}/user-config.jam
+	fi
 
 	CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-bjam=bjam --with-toolset=gcc --with-python-root=${PYTHON_ROOT}
-	sed -i '/^using python/d' project-config.jam
+	sed -i '/^using python/d' ${S}/project-config.jam
 }
 
-do_boostconfig[dirs] = "${S}"
-addtask do_boostconfig after do_patch before do_configure
-
 do_compile() {
 	set -ex
+	rm -rf ${S}/${TARGET_SYS}
 	bjam ${BJAM_OPTS} --prefix=${prefix} \
 		--exec-prefix=${exec_prefix} \
 		--libdir=${libdir} \
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch
deleted file mode 100644
index df7e71f..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From f50e7bc9fed323c5705c0ed992c03e80eeec1dd6 Mon Sep 17 00:00:00 2001
-From: Jonathan Wakely <jwakely@redhat.com>
-Date: Mon, 14 Sep 2015 15:05:24 +0100
-Subject: [PATCH] Do not qualify <fenv.h> names that might be macros.
-
-The patch was imported from the boost-test git repository
-(https://github.com/boostorg/test) as of commit id
-f50e7bc9fed323c5705c0ed992c03e80eeec1dd6.
-  
-Upstream-Status: Accepted [commit f50e7bc9fed in develop branch]
-
-Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
----
- include/boost/test/impl/execution_monitor.ipp | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/include/boost/test/impl/execution_monitor.ipp b/include/boost/test/impl/execution_monitor.ipp
-index b3e873e..a7bdce2 100644
---- a/include/boost/test/impl/execution_monitor.ipp
-+++ b/include/boost/test/impl/execution_monitor.ipp
-@@ -1380,8 +1380,8 @@ enable( unsigned mask )
- 
-     return ~old_cw & BOOST_FPE_ALL;
- #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H)
--    ::feclearexcept(BOOST_FPE_ALL);
--    int res = ::feenableexcept( mask );
-+    feclearexcept(BOOST_FPE_ALL);
-+    int res = feenableexcept( mask );
-     return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res;
- #else
-     /* Not Implemented  */
-@@ -1417,8 +1417,8 @@ disable( unsigned mask )
- 
-     return ~old_cw & BOOST_FPE_ALL;
- #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H)
--    ::feclearexcept(BOOST_FPE_ALL);
--    int res = ::fedisableexcept( mask );
-+    feclearexcept(BOOST_FPE_ALL);
-+    int res = fedisableexcept( mask );
-     return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res;
- #else
-     /* Not Implemented */
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-boost-asio-detail-socket_types.hpp-fix-poll.h-includ.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-boost-asio-detail-socket_types.hpp-fix-poll.h-includ.patch
new file mode 100644
index 0000000..8a85aac
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-boost-asio-detail-socket_types.hpp-fix-poll.h-includ.patch
@@ -0,0 +1,49 @@
+From 40192301130dcd913aa6d9cb9dba9e5f8dbd9d16 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Wed, 24 Aug 2016 21:01:43 +0100
+Subject: [PATCH 1/4] use POSIX poll.h instead of sys/poll.h
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+POSIX specifies that <poll.h> is the correct header to
+include for poll()
+  http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html
+whereas <sys/poll.h> is only needed for ancient glibc (<2.3),
+so let's follow POSIX instead.
+
+As a side-effect, this silences a warning when compiling
+against the musl C-library:
+
+In file included from ./boost/asio/detail/socket_types.hpp:61:0,
+                 from ./boost/asio/ip/address_v4.hpp:21,
+                 from ./boost/asio/ip/address.hpp:21,
+                 from libs/log/src/init_from_settings.cpp:65:
+<sysroot>/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
+ #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
+  ^~~~~~~
+
+etc.
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+---
+Upstream-Status: Submitted https://svn.boost.org/trac/boost/ticket/12419
+ boost/asio/detail/socket_types.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/boost/asio/detail/socket_types.hpp b/boost/asio/detail/socket_types.hpp
+index e8c7109..7e65d3c 100644
+--- a/boost/asio/detail/socket_types.hpp
++++ b/boost/asio/detail/socket_types.hpp
+@@ -58,7 +58,7 @@
+ #else
+ # include <sys/ioctl.h>
+ # if !defined(__SYMBIAN32__)
+-#  include <sys/poll.h>
++#  include <poll.h>
+ # endif
+ # include <sys/types.h>
+ # include <sys/stat.h>
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/0002-boost-test-execution_monitor.hpp-fix-mips-soft-float.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0002-boost-test-execution_monitor.hpp-fix-mips-soft-float.patch
new file mode 100644
index 0000000..569c987
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0002-boost-test-execution_monitor.hpp-fix-mips-soft-float.patch
@@ -0,0 +1,145 @@
+From 5c349a1c391c9ce171a1c80f5164fae764f27dba Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Wed, 24 Aug 2016 20:58:59 +0100
+Subject: [PATCH 2/4] boost/test/execution_monitor.hpp: fix mips soft float
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+gcc.compile.c++ <builddir>/boost/bin.v2/libs/test/build/gcc-4.3.1/release/threading-multi/execution_monitor.o
+
+    "mipsel-poky-linux-musl-g++" "-mel" "-mabi=32" "-msoft-float" "-march=mips32r2" "-mips16" "-minterlink-compressed" "-mtune=24kec" "-mdsp" "-Wl,-O1" "-Wl,--as-needed" "-fstack-protector-strong" "-Wl,-z,relro,-z,now" "--sysroot=<sysroot>"  -ftemplate-depth-128 -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=<srcdir>=/usr/src/debug/boost/1.61.0-r0 -fdebug-prefix-map=<sysroot_host>= -fdebug-prefix-map=<sysroot>= -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -fvisibility-inlines-hidden -O3 -finline-functions -Wno-inline -Wall -pedantic -pthread -fPIC -Wno-variadic-macros -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_TEST_DYN_LINK=1 -DBOOST_TIMER_DYN_LINK=1 -DNDEBUG  -I"." -c -o "<builddir>/boost/bin.v2/libs/test/build/gcc-4.3.1/release/threading-multi/execution_monitor.o" "libs/test/src/execution_monitor.cpp"
+
+In file included from ./boost/test/impl/execution_monitor.ipp:31:0,
+                 from libs/test/src/execution_monitor.cpp:16:
+./boost/test/execution_monitor.hpp:491:27: error: 'FE_DIVBYZERO' was not declared in this scope
+     BOOST_FPE_DIVBYZERO = FE_DIVBYZERO,
+                           ^~~~~~~~~~~~
+./boost/test/execution_monitor.hpp:492:27: error: 'FE_INEXACT' was not declared in this scope
+     BOOST_FPE_INEXACT   = FE_INEXACT,
+                           ^~~~~~~~~~
+./boost/test/execution_monitor.hpp:493:27: error: 'FE_INVALID' was not declared in this scope
+     BOOST_FPE_INVALID   = FE_INVALID,
+                           ^~~~~~~~~~
+./boost/test/execution_monitor.hpp:494:27: error: 'FE_OVERFLOW' was not declared in this scope
+     BOOST_FPE_OVERFLOW  = FE_OVERFLOW,
+                           ^~~~~~~~~~~
+./boost/test/execution_monitor.hpp:495:27: error: 'FE_UNDERFLOW' was not declared in this scope
+     BOOST_FPE_UNDERFLOW = FE_UNDERFLOW,
+                           ^~~~~~~~~~~~
+
+The reason is that some (notably FPU-less) architectures,
+including mips*-nf, don't define/implement some of the
+floating point constants, even though fenv.h is
+available.
+
+The key point is:
+  A fully standards conforming fenv.h does not have to
+  define any FE_* macros, and if it does define them,
+  then it defines macros only for the FP exceptions it
+  actually supports.
+
+So correct usage requires a triple check:
+1) Check BOOST_NO_FENV_H to see if the header is supported.
+2) Include the header and then check FE_ALL_EXCEPT to see
+   if any FP exceptions are supported.
+3) Before using the individual FE_* macros, you need to
+   check for their existence too as not all may be
+   supported.
+
+https://svn.boost.org/trac/boost/ticket/11756
+
+Other projects have similar issues, e.g. pixman, and
+apply similar work-arounds:
+  https://lists.freedesktop.org/archives/pixman/2014-February/003172.html
+
+Architectures are notably also allowed to define FE_ALL_EXCEPT to 0!
+Keeping this in mind, and knowing that the compiler will eliminate
+code that can't be executed, we can change BOOST_FPE_ALL to be 0 for
+the case of compiling using Clang and/or fenv.h being unavailable
+as well, which allows simplification of the #ifdef's in
+execution_monitor.ipp a bit.
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+---
+Upstream-Status: Submitted https://svn.boost.org/trac/boost/ticket/11756
+ boost/test/execution_monitor.hpp      | 26 +++++++++++++++++++++++++-
+ boost/test/impl/execution_monitor.ipp | 10 ++++++++--
+ 2 files changed, 33 insertions(+), 3 deletions(-)
+
+diff --git a/boost/test/execution_monitor.hpp b/boost/test/execution_monitor.hpp
+index 0eee497..44fe59d 100644
+--- a/boost/test/execution_monitor.hpp
++++ b/boost/test/execution_monitor.hpp
+@@ -486,15 +486,39 @@ enum masks {
+     BOOST_FPE_ALL       = MCW_EM,
+ #elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) \
+     || defined(__ARM_PCS)
+-    BOOST_FPE_ALL       = 1,
++    BOOST_FPE_ALL       = 0,
+ #else
++#if defined(FE_DIVBYZERO)
+     BOOST_FPE_DIVBYZERO = FE_DIVBYZERO,
++#else
++    BOOST_FPE_DIVBYZERO = 0,
++#endif
++#if defined(FE_INEXACT)
+     BOOST_FPE_INEXACT   = FE_INEXACT,
++#else
++    BOOST_FPE_INEXACT   = 0,
++#endif
++#if defined(FE_INVALID)
+     BOOST_FPE_INVALID   = FE_INVALID,
++#else
++    BOOST_FPE_INVALID   = 0,
++#endif
++#if defined(FE_OVERFLOW)
+     BOOST_FPE_OVERFLOW  = FE_OVERFLOW,
++#else
++    BOOST_FPE_OVERFLOW  = 0,
++#endif
++#if defined(FE_UNDERFLOW)
+     BOOST_FPE_UNDERFLOW = FE_UNDERFLOW,
++#else
++    BOOST_FPE_UNDERFLOW = 0,
++#endif
+ 
++#if defined(FE_ALL_EXCEPT)
+     BOOST_FPE_ALL       = FE_ALL_EXCEPT,
++#else
++    BOOST_FPE_ALL       = 0,
++#endif
+ #endif
+     BOOST_FPE_INV       = BOOST_FPE_ALL+1
+ };
+diff --git a/boost/test/impl/execution_monitor.ipp b/boost/test/impl/execution_monitor.ipp
+index f7fc8ea..d1088b9 100644
+--- a/boost/test/impl/execution_monitor.ipp
++++ b/boost/test/impl/execution_monitor.ipp
+@@ -1381,7 +1381,10 @@ enable( unsigned mask )
+ #endif
+ 
+     return ~old_cw & BOOST_FPE_ALL;
+-#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H)
++#elif defined(__GLIBC__) && defined(__USE_GNU)
++    if (BOOST_FPE_ALL == 0)
++        /* Not Implemented */
++        return 0;
+     feclearexcept(BOOST_FPE_ALL);
+     int res = feenableexcept( mask );
+     return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res;
+@@ -1418,7 +1421,10 @@ disable( unsigned mask )
+ #endif
+ 
+     return ~old_cw & BOOST_FPE_ALL;
+-#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H)
++#elif defined(__GLIBC__) && defined(__USE_GNU)
++    if (BOOST_FPE_ALL == 0)
++        /* Not Implemented */
++        return BOOST_FPE_INV;
+     feclearexcept(BOOST_FPE_ALL);
+     int res = fedisableexcept( mask );
+     return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res;
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/0003-smart_ptr-mips-assembly-doesn-t-compile-in-mips16e-m.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0003-smart_ptr-mips-assembly-doesn-t-compile-in-mips16e-m.patch
new file mode 100644
index 0000000..2b48d0d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0003-smart_ptr-mips-assembly-doesn-t-compile-in-mips16e-m.patch
@@ -0,0 +1,60 @@
+From 4f19d72ca94418431e068cfd4ffb96ed9b289f6c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Wed, 24 Aug 2016 17:34:59 +0100
+Subject: [PATCH 3/4] smart_ptr: mips assembly doesn't compile in mips16e mode
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+gcc.compile.c++ <builddir>/boost/bin.v2/libs/date_time/build/gcc-4.3.1/release/threading-multi/gregorian/greg_month.o
+
+    "mipsel-poky-linux-musl-g++" "-mel" "-mabi=32" "-msoft-float" "-march=mips32r2" "-mips16" "-minterlink-compressed" "-mtune=24kec" "-mdsp" "-Wl,-O1" "-Wl,--as-needed" "-fstack-protector-strong" "-Wl,-z,relro,-z,now" "--sysroot=<sysroot>"  -ftemplate-depth-128 -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=<srcdir>=/usr/src/debug/boost/1.61.0-r0 -fdebug-prefix-map=<sysroot_host>= -fdebug-prefix-map=<sysroot>= -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -fvisibility-inlines-hidden -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC  -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DDATE_TIME_INLINE -DNDEBUG  -I"." -c -o "<builddir>/boost/bin.v2/libs/date_time/build/gcc-4.3.1/release/threading-multi/gregorian/greg_month.o" "libs/date_time/src/gregorian/greg_month.cpp"
+
+{standard input}: Assembler messages:
+{standard input}:17603: Warning: the `dsp' extension requires MIPS32 revision 2 or greater
+{standard input}:17604: Error: unrecognized opcode `ll $3,4($16)'
+{standard input}:17606: Error: unrecognized opcode `sc $2,4($16)'
+{standard input}:17734: Error: unrecognized opcode `ll $3,8($16)'
+{standard input}:17736: Error: unrecognized opcode `sc $2,8($16)'
+{standard input}:18084: Error: unrecognized opcode `ll $3,4($4)'
+{standard input}:18086: Error: unrecognized opcode `sc $2,4($4)'
+{standard input}:18318: Error: unrecognized opcode `ll $3,8($4)'
+{standard input}:18320: Error: unrecognized opcode `sc $2,8($4)'
+{standard input}:19921: Error: unrecognized opcode `ll $3,4($2)'
+{standard input}:19923: Error: unrecognized opcode `sc $3,4($2)'
+{standard input}:20199: Error: unrecognized opcode `ll $4,4($16)'
+{standard input}:20201: Error: unrecognized opcode `sc $2,4($16)'
+{standard input}:23392: Error: unrecognized opcode `ll $4,8($16)'
+{standard input}:23394: Error: unrecognized opcode `sc $2,8($16)'
+...failed updating 1 target...
+
+boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp
+contains hand-written MIPS assembly, which is not compatible
+with the MIPS16e instruction set.
+
+By not using this file in MIPS16e mode, we fallback to using
+g++ 4.1+ __sync intrinsics (__sync_fetch_and_add() and
+__sync_val_compare_and_swap()) which are working fine.
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+---
+Upstream-Status: Backport https://svn.boost.org/trac/boost/ticket/12418
+ boost/smart_ptr/detail/sp_counted_base.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/boost/smart_ptr/detail/sp_counted_base.hpp b/boost/smart_ptr/detail/sp_counted_base.hpp
+index 0addf07..0995ca8 100644
+--- a/boost/smart_ptr/detail/sp_counted_base.hpp
++++ b/boost/smart_ptr/detail/sp_counted_base.hpp
+@@ -65,7 +65,7 @@
+ #elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) ) && !defined(__PATHSCALE__) && !defined( _AIX )
+ # include <boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp>
+ 
+-#elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) ) && !defined(__PATHSCALE__)
++#elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) ) && !defined(__PATHSCALE__) && !defined( __mips16 )
+ # include <boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp>
+ 
+ #elif defined( BOOST_SP_HAS_SYNC )
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/0004-Use-atomic-by-default-when-BOOST_NO_CXX11_HDR_ATOMIC.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0004-Use-atomic-by-default-when-BOOST_NO_CXX11_HDR_ATOMIC.patch
new file mode 100644
index 0000000..ab7826b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0004-Use-atomic-by-default-when-BOOST_NO_CXX11_HDR_ATOMIC.patch
@@ -0,0 +1,59 @@
+From c234cc557f60729e071d6da59747c1a9289555c5 Mon Sep 17 00:00:00 2001
+From: Peter Dimov <pdimov@pdimov.com>
+Date: Sun, 28 Aug 2016 21:28:21 +0300
+Subject: [PATCH 4/4] Use <atomic> by default when BOOST_NO_CXX11_HDR_ATOMIC is
+ not defined
+
+---
+Upstream-Status: Backport [https://github.com/boostorg/smart_ptr/commit/20fedcff2ca3143503ec4e876d47745ab0ec7b0c]
+Signed-off-by: André Draszik <git@andred.net>
+ boost/smart_ptr/detail/atomic_count.hpp    | 3 +++
+ boost/smart_ptr/detail/sp_counted_base.hpp | 3 +++
+ boost/smart_ptr/detail/spinlock.hpp        | 3 +++
+ 3 files changed, 9 insertions(+)
+
+diff --git a/boost/smart_ptr/detail/atomic_count.hpp b/boost/smart_ptr/detail/atomic_count.hpp
+index 8aefd44..6e4f71a 100644
+--- a/boost/smart_ptr/detail/atomic_count.hpp
++++ b/boost/smart_ptr/detail/atomic_count.hpp
+@@ -73,6 +73,9 @@
+ #elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 )
+ # include <boost/smart_ptr/detail/atomic_count_nt.hpp>
+ 
++#elif !defined( BOOST_NO_CXX11_HDR_ATOMIC )
++# include <boost/smart_ptr/detail/atomic_count_std_atomic.hpp>
++
+ #elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) ) && !defined( __PATHSCALE__ )
+ # include <boost/smart_ptr/detail/atomic_count_gcc_x86.hpp>
+ 
+diff --git a/boost/smart_ptr/detail/sp_counted_base.hpp b/boost/smart_ptr/detail/sp_counted_base.hpp
+index 0995ca8..83ede23 100644
+--- a/boost/smart_ptr/detail/sp_counted_base.hpp
++++ b/boost/smart_ptr/detail/sp_counted_base.hpp
+@@ -44,6 +44,9 @@
+ #elif defined( BOOST_SP_HAS_CLANG_C11_ATOMICS )
+ # include <boost/smart_ptr/detail/sp_counted_base_clang.hpp>
+ 
++#elif !defined( BOOST_NO_CXX11_HDR_ATOMIC )
++# include <boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp>
++
+ #elif defined( __SNC__ )
+ # include <boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp>
+ 
+diff --git a/boost/smart_ptr/detail/spinlock.hpp b/boost/smart_ptr/detail/spinlock.hpp
+index 19f93d7..0b618df 100644
+--- a/boost/smart_ptr/detail/spinlock.hpp
++++ b/boost/smart_ptr/detail/spinlock.hpp
+@@ -43,6 +43,9 @@
+ #elif defined( BOOST_SP_USE_PTHREADS )
+ #  include <boost/smart_ptr/detail/spinlock_pt.hpp>
+ 
++#elif !defined( BOOST_NO_CXX11_HDR_ATOMIC )
++#  include <boost/smart_ptr/detail/spinlock_std_atomic.hpp>
++
+ #elif defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ )
+ #  include <boost/smart_ptr/detail/spinlock_gcc_arm.hpp>
+ 
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/boost-CVE-2012-2677.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/boost-CVE-2012-2677.patch
new file mode 100644
index 0000000..917617a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/boost-CVE-2012-2677.patch
@@ -0,0 +1,112 @@
+Reference
+
+https://svn.boost.org/trac/boost/changeset/78326
+
+Upstream-Status: Backport
+CVE: CVE-2012-2677
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+
+diff --git a/boost/pool/pool.hpp.old b/boost/pool/pool.hpp
+index c47b11f..417a1e0 100644
+--- a/boost/pool/pool.hpp.old
++++ b/boost/pool/pool.hpp
+@@ -26,6 +26,8 @@
+ 
+ #include <boost/pool/poolfwd.hpp>
+ 
++// std::numeric_limits
++#include <boost/limits.hpp>
+ // boost::integer::static_lcm
+ #include <boost/integer/common_factor_ct.hpp>
+ // boost::simple_segregated_storage
+@@ -355,6 +357,15 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t
+       return s;
+     }
+ 
++    size_type max_chunks() const
++    { //! Calculated maximum number of memory chunks that can be allocated in a single call by this Pool.
++      size_type partition_size = alloc_size();
++      size_type POD_size = integer::static_lcm<sizeof(size_type), sizeof(void *)>::value + sizeof(size_type);
++      size_type max_chunks = (std::numeric_limits<size_type>::max() - POD_size) / alloc_size();
++
++      return max_chunks;
++    }
++
+     static void * & nextof(void * const ptr)
+     { //! \returns Pointer dereferenced.
+       //! (Provided and used for the sake of code readability :)
+@@ -375,6 +386,8 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t
+       //!   the first time that object needs to allocate system memory.
+       //!   The default is 32. This parameter may not be 0.
+       //! \param nmax_size is the maximum number of chunks to allocate in one block.
++      set_next_size(nnext_size);
++      set_max_size(nmax_size);
+     }
+ 
+     ~pool()
+@@ -398,8 +411,8 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t
+     }
+     void set_next_size(const size_type nnext_size)
+     { //! Set number of chunks to request from the system the next time that object needs to allocate system memory. This value should never be set to 0.
+-      //! \returns nnext_size.
+-      next_size = start_size = nnext_size;
++      BOOST_USING_STD_MIN();
++      next_size = start_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_size, max_chunks());
+     }
+     size_type get_max_size() const
+     { //! \returns max_size.
+@@ -407,7 +420,8 @@ class pool: protected simple_segregated_storage < typename UserAllocator::size_t
+     }
+     void set_max_size(const size_type nmax_size)
+     { //! Set max_size.
+-      max_size = nmax_size;
++      BOOST_USING_STD_MIN();
++      max_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, max_chunks());
+     }
+     size_type get_requested_size() const
+     { //!   \returns the requested size passed into the constructor.
+@@ -708,9 +722,9 @@ void * pool<UserAllocator>::malloc_need_resize()
+ 
+   BOOST_USING_STD_MIN();
+   if(!max_size)
+-    next_size <<= 1;
++    set_next_size(next_size << 1);
+   else if( next_size*partition_size/requested_size < max_size)
+-    next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
++    set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size));
+ 
+   //  initialize it,
+   store().add_block(node.begin(), node.element_size(), partition_size);
+@@ -748,9 +762,9 @@ void * pool<UserAllocator>::ordered_malloc_need_resize()
+ 
+   BOOST_USING_STD_MIN();
+   if(!max_size)
+-    next_size <<= 1;
++    set_next_size(next_size << 1);
+   else if( next_size*partition_size/requested_size < max_size)
+-    next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
++    set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size));
+ 
+   //  initialize it,
+   //  (we can use "add_block" here because we know that
+@@ -792,6 +806,8 @@ void * pool<UserAllocator>::ordered_malloc(const size_type n)
+ { //! Gets address of a chunk n, allocating new memory if not already available.
+   //! \returns Address of chunk n if allocated ok.
+   //! \returns 0 if not enough memory for n chunks.
++  if (n > max_chunks())
++    return 0;
+ 
+   const size_type partition_size = alloc_size();
+   const size_type total_req_size = n * requested_size;
+@@ -840,9 +856,9 @@ void * pool<UserAllocator>::ordered_malloc(const size_type n)
+ 
+   BOOST_USING_STD_MIN();
+   if(!max_size)
+-    next_size <<= 1;
++    set_next_size(next_size << 1);
+   else if( next_size*partition_size/requested_size < max_size)
+-    next_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size*requested_size/ partition_size);
++    set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_size * requested_size / partition_size));
+ 
+   //  insert it into the list,
+   //   handle border case.
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/boost-math-disable-pch-for-gcc.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/boost-math-disable-pch-for-gcc.patch
new file mode 100644
index 0000000..595ba17
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/boost-math-disable-pch-for-gcc.patch
@@ -0,0 +1,31 @@
+From cabfcba1ff7511ffd6b91ca244288d44f585aad2 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Fri, 23 Sep 2016 01:04:50 -0700
+Subject: [PATCH] boost-math: disable pch for gcc
+
+Upstream-Status: Inappropriate [*]
+
+* It's a work around for a defect when build in parallel:
+https://svn.boost.org/trac/boost/ticket/12477
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ libs/math/build/Jamfile.v2 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libs/math/build/Jamfile.v2 b/libs/math/build/Jamfile.v2
+index e19fb2e..82472a7 100644
+--- a/libs/math/build/Jamfile.v2
++++ b/libs/math/build/Jamfile.v2
+@@ -13,7 +13,7 @@ project
+       #<toolset>intel-linux:<pch>off
+       <toolset>intel-darwin:<pch>off
+       <toolset>msvc-7.1:<pch>off
+-      <toolset>gcc,<target-os>windows:<pch>off
++      <toolset>gcc:<pch>off
+       #<toolset>gcc:<cxxflags>-fvisibility=hidden
+       <toolset>intel-linux:<cxxflags>-fvisibility=hidden
+       #<toolset>sun:<cxxflags>-xldscope=hidden
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.60.0.bb b/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.60.0.bb
deleted file mode 100644
index 4d824c8..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.60.0.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-include boost-${PV}.inc
-include boost.inc
-
-SRC_URI += "\
-    file://arm-intrinsics.patch \
-    file://0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch;striplevel=2 \
-    file://consider-hardfp.patch \
-"
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.61.0.bb b/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.61.0.bb
new file mode 100644
index 0000000..40e3870
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.61.0.bb
@@ -0,0 +1,13 @@
+include boost-${PV}.inc
+include boost.inc
+
+SRC_URI += "\
+    file://arm-intrinsics.patch \
+    file://consider-hardfp.patch \
+    file://boost-CVE-2012-2677.patch \
+    file://0001-boost-asio-detail-socket_types.hpp-fix-poll.h-includ.patch \
+    file://0002-boost-test-execution_monitor.hpp-fix-mips-soft-float.patch \
+    file://0003-smart_ptr-mips-assembly-doesn-t-compile-in-mips16e-m.patch \
+    file://0004-Use-atomic-by-default-when-BOOST_NO_CXX11_HDR_ATOMIC.patch \
+    file://boost-math-disable-pch-for-gcc.patch \
+"
diff --git a/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch b/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch
index 4b4b287..4a8ae5f 100644
--- a/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch
@@ -6,9 +6,13 @@
 
 | Running hooks in [...]/rootfs/etc/ca-certificates/update.d...
 | [...]/usr/sbin/update-ca-certificates: line 194: Not: command not found
+| [...]/usr/sbin/update-ca-certificates: line 230: Not a directory: --: command not found
+| E: Not a directory: -- exited with code 127.
+
 
 Upstream-Status: Inappropriate
 Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
 ---
  sbin/update-ca-certificates | 4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
@@ -24,7 +28,7 @@
 -  VERBOSE_ARG=
 -  [ "$verbose" = 0 ] || VERBOSE_ARG="--verbose"
 -  eval run-parts "$VERBOSE_ARG" --test -- "$HOOKSDIR" | while read hook
-+  eval run-parts --test -- "$HOOKSDIR" | while read hook
++  eval run-parts --test "$HOOKSDIR" | while read hook
    do
      ( cat "$ADDED"
        cat "$REMOVED" ) | "$hook" || echo "E: $hook exited with code $?."
diff --git a/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-remove-c-rehash.patch b/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-remove-c-rehash.patch
deleted file mode 100644
index bf02723..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-remove-c-rehash.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Upstream-Status: Pending
-
-From 111e905fe931da1a3800accfc675cc01c8ee080c Mon Sep 17 00:00:00 2001
-From: Ulf Samuelsson <ulf@emagii.com>
-Date: Tue, 28 Feb 2012 06:42:58 +0100
-Subject: [PATCH] update-ca-certificates: remove c rehash
-
-Updated earlier patch to apply clean on 2012-02-12
-Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
----
- sbin/update-ca-certificates |   20 ++++++++++----------
- 1 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/sbin/update-ca-certificates b/sbin/update-ca-certificates
-index 5375950..c567e3d 100755
---- a/sbin/update-ca-certificates
-+++ b/sbin/update-ca-certificates
-@@ -132,16 +132,16 @@ rm -f "$CERTBUNDLE"
- ADDED_CNT=$(wc -l < "$ADDED")
- REMOVED_CNT=$(wc -l < "$REMOVED")
-
--if [ "$ADDED_CNT" -gt 0 ] || [ "$REMOVED_CNT" -gt 0 ]
--then
--  # only run if set of files has changed
--  if [ "$verbose" = 0 ]
--  then
--    c_rehash . > /dev/null
--  else
--    c_rehash .
--  fi
--fi
-+#if [ "$ADDED_CNT" -gt 0 ] || [ "$REMOVED_CNT" -gt 0 ]
-+#then
-+#  # only run if set of files has changed
-+#  if [ "$verbose" = 0 ]
-+#  then
-+#    c_rehash . > /dev/null
-+#  else
-+#    c_rehash .
-+#  fi
-+#fi
-
- chmod 0644 "$TEMPBUNDLE"
- mv -f "$TEMPBUNDLE" "$CERTBUNDLE"
---
-1.7.4.1
diff --git a/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates_20160104.bb b/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates_20160104.bb
index e0f1939..1bea067 100644
--- a/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates_20160104.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/ca-certificates/ca-certificates_20160104.bb
@@ -9,12 +9,12 @@
 
 # This is needed to ensure we can run the postinst at image creation time
 DEPENDS = "ca-certificates-native"
-DEPENDS_class-native = ""
+DEPENDS_class-native = "openssl-native"
+DEPENDS_class-nativesdk = "ca-certificates-native openssl-native"
 
 SRCREV = "f54715702c5c0581c9461f78fd84e2c8d2ec243c"
 
 SRC_URI = "git://anonscm.debian.org/collab-maint/ca-certificates.git \
-           file://0001-update-ca-certificates-remove-c-rehash.patch \
            file://0002-update-ca-certificates-use-SYSROOT.patch \
            file://0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch \
            file://update-ca-certificates-support-Toybox.patch \
@@ -77,4 +77,6 @@
     SYSROOT="${D}${base_prefix}" ${D}${sbindir}/update-ca-certificates
 }
 
+RDEPENDS_${PN} += "openssl"
+
 BBCLASSEXTEND += "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/consolekit/consolekit_0.4.6.bb b/import-layers/yocto-poky/meta/recipes-support/consolekit/consolekit_0.4.6.bb
index 2974e36..ceac0fe 100644
--- a/import-layers/yocto-poky/meta/recipes-support/consolekit/consolekit_0.4.6.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/consolekit/consolekit_0.4.6.bb
@@ -30,7 +30,7 @@
 PACKAGECONFIG[policykit] = "--with-polkit,--without-polkit,polkit"
 PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--with-systemdsystemunitdir="
 
-FILES_${PN} += "${localstatedir}/log/ConsoleKit ${exec_prefix}/lib/ConsoleKit \
+FILES_${PN} += "${exec_prefix}/lib/ConsoleKit \
                 ${libdir}/ConsoleKit  ${systemd_unitdir} ${base_libdir} \
                 ${datadir}/dbus-1 ${datadir}/PolicyKit ${datadir}/polkit*"
 
@@ -45,6 +45,6 @@
 			> ${D}${sysconfdir}/tmpfiles.d/consolekit.conf
 	fi
 
-	# Remove /var/run from package as console-kit-daemon will populate it on startup
-	rm -fr "${D}${localstatedir}/run"
+	# Remove /var/ directories as the daemon creates them as required
+	rm -rf ${D}${localstatedir}
 }
diff --git a/import-layers/yocto-poky/meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch b/import-layers/yocto-poky/meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch
new file mode 100644
index 0000000..74e5d99
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch
@@ -0,0 +1,43 @@
+[PATCH] replace krb5-config with pkg-config
+
+Upstream-Status:  Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index e99b303..dc93f39 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1196,7 +1196,7 @@ AC_ARG_WITH(gssapi,
+   fi
+ ])
+ 
+-: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
++KRB5CONFIG=`which pkg-config`
+ 
+ save_CPPFLAGS="$CPPFLAGS"
+ AC_MSG_CHECKING([if GSS-API support is requested])
+@@ -1207,7 +1207,7 @@ if test x"$want_gss" = xyes; then
+      if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
+         GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
+      elif test -f "$KRB5CONFIG"; then
+-        GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
++        GSSAPI_INCS=`$KRB5CONFIG --cflags mit-krb5-gssapi`
+      elif test "$GSSAPI_ROOT" != "yes"; then
+         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
+      fi
+@@ -1300,7 +1300,7 @@ if test x"$want_gss" = xyes; then
+         elif test -f "$KRB5CONFIG"; then
+            dnl krb5-config doesn't have --libs-only-L or similar, put everything
+            dnl into LIBS
+-           gss_libs=`$KRB5CONFIG --libs gssapi`
++           gss_libs=`$KRB5CONFIG --libs mit-krb5-gssapi`
+            LIBS="$gss_libs $LIBS"
+         else
+            case $host in
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/curl/curl_7.47.1.bb b/import-layers/yocto-poky/meta/recipes-support/curl/curl_7.47.1.bb
deleted file mode 100644
index c2173d8..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/curl/curl_7.47.1.bb
+++ /dev/null
@@ -1,68 +0,0 @@
-SUMMARY = "Command line tool and library for client-side URL transfers"
-HOMEPAGE = "http://curl.haxx.se/"
-BUGTRACKER = "http://curl.haxx.se/mail/list.cgi?list=curl-tracker"
-SECTION = "console/network"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;beginline=8;md5=3a34942f4ae3fbf1a303160714e664ac"
-
-SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2"
-
-# curl likes to set -g0 in CFLAGS, so we stop it
-# from mucking around with debug options
-#
-SRC_URI += " file://configure_ac.patch"
-
-SRC_URI[md5sum] = "9ea3123449439bbd960cd25cf98796fb"
-SRC_URI[sha256sum] = "ddc643ab9382e24bbe4747d43df189a0a6ce38fcb33df041b9cb0b3cd47ae98f"
-
-inherit autotools pkgconfig binconfig multilib_header
-
-PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)} gnutls proxy zlib"
-PACKAGECONFIG_class-native = "ipv6 proxy ssl zlib"
-PACKAGECONFIG_class-nativesdk = "ipv6 proxy ssl zlib"
-
-PACKAGECONFIG[dict] = "--enable-dict,--disable-dict,"
-PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
-PACKAGECONFIG[gopher] = "--enable-gopher,--disable-gopher,"
-PACKAGECONFIG[imap] = "--enable-imap,--disable-imap,"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,"
-PACKAGECONFIG[ldaps] = "--enable-ldaps,--disable-ldaps,"
-PACKAGECONFIG[libidn] = "--with-libidn,--without-libidn,libidn"
-PACKAGECONFIG[libssh2] = "--with-libssh2,--without-libssh2,libssh2"
-PACKAGECONFIG[pop3] = "--enable-pop3,--disable-pop3,"
-PACKAGECONFIG[proxy] = "--enable-proxy,--disable-proxy,"
-PACKAGECONFIG[rtmpdump] = "--with-librtmp,--without-librtmp,rtmpdump"
-PACKAGECONFIG[rtsp] = "--enable-rtsp,--disable-rtsp,"
-PACKAGECONFIG[smb] = "--enable-smb,--disable-smb,"
-PACKAGECONFIG[smtp] = "--enable-smtp,--disable-smtp,"
-PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openssl"
-PACKAGECONFIG[telnet] = "--enable-telnet,--disable-telnet,"
-PACKAGECONFIG[tftp] = "--enable-tftp,--disable-tftp,"
-PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"
-
-EXTRA_OECONF = " \
-    --enable-crypto-auth \
-    --with-ca-bundle=${sysconfdir}/ssl/certs/ca-certificates.crt \
-    --without-libmetalink \
-    --without-libpsl \
-    --without-nghttp2 \
-"
-
-do_install_append() {
-	oe_multilib_header curl/curlbuild.h
-}
-
-do_install_append_class-target() {
-	# cleanup buildpaths from curl-config
-	sed -i -e 's,${STAGING_DIR_HOST},,g' ${D}${bindir}/curl-config
-}
-
-PACKAGES =+ "lib${BPN}"
-
-FILES_lib${BPN} = "${libdir}/lib*.so.*"
-RRECOMMENDS_lib${BPN} += "ca-certificates"
-
-FILES_${PN} += "${datadir}/zsh"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/curl/curl_7.50.1.bb b/import-layers/yocto-poky/meta/recipes-support/curl/curl_7.50.1.bb
new file mode 100644
index 0000000..a21419a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/curl/curl_7.50.1.bb
@@ -0,0 +1,71 @@
+SUMMARY = "Command line tool and library for client-side URL transfers"
+HOMEPAGE = "http://curl.haxx.se/"
+BUGTRACKER = "http://curl.haxx.se/mail/list.cgi?list=curl-tracker"
+SECTION = "console/network"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;beginline=8;md5=3a34942f4ae3fbf1a303160714e664ac"
+
+SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \
+           file://0001-replace-krb5-config-with-pkg-config.patch \
+"
+
+# curl likes to set -g0 in CFLAGS, so we stop it
+# from mucking around with debug options
+#
+SRC_URI += " file://configure_ac.patch"
+
+SRC_URI[md5sum] = "015f6a0217ca6f2c5442ca406476920b"
+SRC_URI[sha256sum] = "3c12c5f54ccaa1d40abc65d672107dcc75d3e1fcb38c267484334280096e5156"
+
+inherit autotools pkgconfig binconfig multilib_header
+
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)} gnutls proxy zlib"
+PACKAGECONFIG_class-native = "ipv6 proxy ssl zlib"
+PACKAGECONFIG_class-nativesdk = "ipv6 proxy ssl zlib"
+
+PACKAGECONFIG[dict] = "--enable-dict,--disable-dict,"
+PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
+PACKAGECONFIG[gopher] = "--enable-gopher,--disable-gopher,"
+PACKAGECONFIG[imap] = "--enable-imap,--disable-imap,"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,"
+PACKAGECONFIG[ldaps] = "--enable-ldaps,--disable-ldaps,"
+PACKAGECONFIG[libidn] = "--with-libidn,--without-libidn,libidn"
+PACKAGECONFIG[libssh2] = "--with-libssh2,--without-libssh2,libssh2"
+PACKAGECONFIG[pop3] = "--enable-pop3,--disable-pop3,"
+PACKAGECONFIG[proxy] = "--enable-proxy,--disable-proxy,"
+PACKAGECONFIG[rtmpdump] = "--with-librtmp,--without-librtmp,rtmpdump"
+PACKAGECONFIG[rtsp] = "--enable-rtsp,--disable-rtsp,"
+PACKAGECONFIG[smb] = "--enable-smb,--disable-smb,"
+PACKAGECONFIG[smtp] = "--enable-smtp,--disable-smtp,"
+PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openssl"
+PACKAGECONFIG[telnet] = "--enable-telnet,--disable-telnet,"
+PACKAGECONFIG[tftp] = "--enable-tftp,--disable-tftp,"
+PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"
+PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5"
+
+EXTRA_OECONF = " \
+    --enable-crypto-auth \
+    --with-ca-bundle=${sysconfdir}/ssl/certs/ca-certificates.crt \
+    --without-libmetalink \
+    --without-libpsl \
+    --without-nghttp2 \
+"
+
+do_install_append() {
+	oe_multilib_header curl/curlbuild.h
+}
+
+do_install_append_class-target() {
+	# cleanup buildpaths from curl-config
+	sed -i -e 's,${STAGING_DIR_HOST},,g' ${D}${bindir}/curl-config
+}
+
+PACKAGES =+ "lib${BPN}"
+
+FILES_lib${BPN} = "${libdir}/lib*.so.*"
+RRECOMMENDS_lib${BPN} += "ca-certificates"
+
+FILES_${PN} += "${datadir}/zsh"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch b/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch
index d4c6bb8..68a2131 100644
--- a/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch
@@ -14,10 +14,10 @@
  dist/Makefile.in |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/dist/Makefile.in b/dist/Makefile.in
-index 0a42375..d9e05b9 100644
---- a/dist/Makefile.in
-+++ b/dist/Makefile.in
+Index: db-6.0.30/dist/Makefile.in
+===================================================================
+--- db-6.0.30.orig/dist/Makefile.in
++++ db-6.0.30/dist/Makefile.in
 @@ -863,7 +863,7 @@ $(libdb_version): $(C_OBJS)
  	$(LN) -s $(libdb_version) $(libdb)
  
@@ -27,6 +27,3 @@
  	$(SOLINK) $(SOFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) \
  		$(LIBCSO_LIBS)
  	$(RM) $(libdb)
--- 
-1.7.9.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch b/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch
index 329bff5..8680408 100644
--- a/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch
@@ -15,10 +15,10 @@
  Makefile.in |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/Makefile.in b/Makefile.in
-index e451f70..0a42375 100644
---- a/Makefile.in
-+++ b/Makefile.in
+Index: db-6.0.30/dist/Makefile.in
+===================================================================
+--- db-6.0.30.orig/dist/Makefile.in
++++ db-6.0.30/dist/Makefile.in
 @@ -863,7 +863,7 @@ $(libdb_version): $(C_OBJS)
  	$(LN) -s $(libdb_version) $(libdb)
  
diff --git a/import-layers/yocto-poky/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch b/import-layers/yocto-poky/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
index 34e8db8..6a8eada 100644
--- a/import-layers/yocto-poky/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
@@ -10,9 +10,11 @@
 
 Author: jbowler@nslu2-linux.org
 
---- db-5.1.19/src/dbinc/mutex_int.h.orig	2011-01-05 19:21:42.181805366 -0600
-+++ db-5.1.19/src/dbinc/mutex_int.h	2011-01-05 19:24:53.141853117 -0600
-@@ -474,6 +474,25 @@
+Index: db-6.0.30/src/dbinc/mutex_int.h
+===================================================================
+--- db-6.0.30.orig/src/dbinc/mutex_int.h
++++ db-6.0.30/src/dbinc/mutex_int.h
+@@ -474,6 +474,25 @@ typedef unsigned char tsl_t;
  
  #ifdef LOAD_ACTUAL_MUTEX_CODE
  /* gcc/arm: 0 is clear, 1 is set. */
@@ -38,7 +40,7 @@
  #define	MUTEX_SET(tsl) ({						\
  	int __r;							\
  	__asm__ volatile(						\
-@@ -484,6 +503,7 @@
+@@ -484,6 +503,7 @@ typedef unsigned char tsl_t;
  	    );								\
  	__r & 1;							\
  })
diff --git a/import-layers/yocto-poky/meta/recipes-support/db/db/fix-parallel-build.patch b/import-layers/yocto-poky/meta/recipes-support/db/db/fix-parallel-build.patch
index 2c7f1e1..27632e1 100644
--- a/import-layers/yocto-poky/meta/recipes-support/db/db/fix-parallel-build.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/db/db/fix-parallel-build.patch
@@ -6,9 +6,11 @@
 
 Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
 
---- dist.orig/Makefile.in	2012-05-11 19:57:48.000000000 +0200
-+++ dist/Makefile.in	2013-10-31 18:17:11.875532522 +0100
-@@ -1034,7 +1034,7 @@
+Index: db-6.0.30/dist/Makefile.in
+===================================================================
+--- db-6.0.30.orig/dist/Makefile.in
++++ db-6.0.30/dist/Makefile.in
+@@ -1041,7 +1041,7 @@ db_recover: db_recover@o@ util_sig@o@ $(
  	    db_recover@o@ util_sig@o@ $(DEF_LIB) $(LIBS)
  	$(POSTLINK) $@
  
diff --git a/import-layers/yocto-poky/meta/recipes-support/db/db_5.3.28.bb b/import-layers/yocto-poky/meta/recipes-support/db/db_5.3.28.bb
index c724f04..0b51a1d 100644
--- a/import-layers/yocto-poky/meta/recipes-support/db/db_5.3.28.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/db/db_5.3.28.bb
@@ -15,15 +15,17 @@
 VIRTUAL_NAME ?= "virtual/db"
 RCONFLICTS_${PN} = "db3"
 
+PR = "r1"
+
 SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
-SRC_URI += "file://arm-thumb-mutex_db5.patch;patchdir=.. \
+SRC_URI += "file://arm-thumb-mutex_db5.patch \
             file://fix-parallel-build.patch \
            "
 
 SRC_URI[md5sum] = "b99454564d5b4479750567031d66fe24"
 SRC_URI[sha256sum] = "e0a992d740709892e81f9d93f06daf305cf73fb81b545afe72478043172c3628"
 
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=ed1158e31437f4f87cdd4ab2b8613955"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ed1158e31437f4f87cdd4ab2b8613955"
 
 inherit autotools
 
@@ -36,14 +38,6 @@
 # to select the correct db in the build (distro) .conf
 PROVIDES += "${VIRTUAL_NAME}"
 
-# bitbake isn't quite clever enough to deal with sleepycat,
-# the distribution sits in the expected directory, but all
-# the builds must occur from a sub-directory.  The following
-# persuades bitbake to go to the right place
-S = "${WORKDIR}/db-${PV}/dist"
-B = "${WORKDIR}/db-${PV}/build_unix"
-SPDX_S = "${WORKDIR}/db-${PV}"
-
 # The executables go in a separate package - typically there
 # is no need to install these unless doing real database
 # management on the system.
@@ -75,21 +69,23 @@
 MUTEX = ""
 MUTEX_arm = "${ARM_MUTEX}"
 MUTEX_armeb = "${ARM_MUTEX}"
-EXTRA_OECONF += "${MUTEX}"
-EXTRA_OEMAKE_class-target = "LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool"
+EXTRA_OECONF += "${MUTEX} STRIP=true"
+EXTRA_OEMAKE_append_class-target = " LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool"
+
+AUTOTOOLS_SCRIPT_PATH = "${S}/dist"
 
 # Cancel the site stuff - it's set for db3 and destroys the
 # configure.
 CONFIG_SITE = ""
 do_configure() {
-	gnu-configize --force ${S}
-	export STRIP="true"
+    cd ${B}
+	gnu-configize --force ${AUTOTOOLS_SCRIPT_PATH}
 	oe_runconf
 }
 
 do_compile_prepend() {
-	sed -i -e 's|hardcode_into_libs=yes|hardcode_into_libs=no|' \
-		${B}/libtool
+    # Stop libtool adding RPATHs
+    sed -i -e 's|hardcode_into_libs=yes|hardcode_into_libs=no|' ${B}/libtool
 }
 
 do_install_append() {
@@ -114,4 +110,3 @@
 INSANE_SKIP_${PN}-cxx = "dev-so"
 
 BBCLASSEXTEND = "native nativesdk"
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/db/db_6.0.30.bb b/import-layers/yocto-poky/meta/recipes-support/db/db_6.0.30.bb
deleted file mode 100644
index 50a469b..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/db/db_6.0.30.bb
+++ /dev/null
@@ -1,124 +0,0 @@
-# Version 6 of the Berkeley DB from Oracle (formerly Sleepycat)
-#
-# At present this package only installs the DB code
-# itself (shared libraries, .a in the dev package),
-# documentation and headers.
-#
-# The headers have the same names as those as v3
-# of the DB, only one version can be used *for dev*
-# at once - DB3 and DB6 can both be installed on the
-# same system at the same time if really necessary.
-SECTION = "libs"
-SUMMARY = "Berkeley Database v6"
-HOMEPAGE = "http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html"
-LICENSE = "AGPL-3.0"
-VIRTUAL_NAME ?= "virtual/db"
-RCONFLICTS_${PN} = "db3"
-
-# Note, when upgraded to 6.1.x, a patch in RPM will need to be removed to activate db 6.1 support.
-
-SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
-SRC_URI += "file://arm-thumb-mutex_db5.patch;patchdir=.. \
-            file://fix-parallel-build.patch \
-            file://Makefile-let-libso_target-depend-on-bt_rec.patch \
-            file://Makefile-let-libdb-6.0.la-depend-os_map.l.patch;patchdir=.. \
-           "
-
-SRC_URI[md5sum] = "ad28eb86ad3203b5422844db179c585b"
-SRC_URI[sha256sum] = "608e4b1cf390e9bf54c0ef00c5bd9ca76d36e2261b9f4d33d54516f3f6a20fd2"
-
-# Exclude NC versions which lack AES encryption
-UPSTREAM_CHECK_REGEX = "db-(?P<pver>\d+\.\d+(\.\d+)?).tar"
-UPSTREAM_CHECK_URI = "http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html"
-
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=1ec8b0b17cc31513fe35ab10716f8490"
-
-inherit autotools
-
-# Put virtual/db in any appropriate provider of a
-# relational database, use it as a dependency in
-# place of a specific db and use:
-#
-# PREFERRED_PROVIDER_virtual/db
-#
-# to select the correct db in the build (distro) .conf
-PROVIDES += "${VIRTUAL_NAME}"
-
-# bitbake isn't quite clever enough to deal with sleepycat,
-# the distribution sits in the expected directory, but all
-# the builds must occur from a sub-directory.  The following
-# persuades bitbake to go to the right place
-S = "${WORKDIR}/db-${PV}/dist"
-B = "${WORKDIR}/db-${PV}/build_unix"
-SPDX_S = "${WORKDIR}/db-${PV}"
-
-# The executables go in a separate package - typically there
-# is no need to install these unless doing real database
-# management on the system.
-inherit lib_package
-
-PACKAGES =+ "${PN}-cxx"
-FILES_${PN}-cxx = "${libdir}/*cxx*so"
-
-
-# The dev package has the .so link (as in db3) and the .a's -
-# it is therefore incompatible (cannot be installed at the
-# same time) as the db3 package
-# sort out the .so since they do version prior to the .so
-SOLIBS = "-6*.so"
-FILES_SOLIBSDEV = "${libdir}/libdb.so ${libdir}/libdb_cxx.so"
-
-#configuration - set in local.conf to override
-# All the --disable-* options replace --enable-smallbuild, which breaks a bunch of stuff (eg. postfix)
-DB6_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disable-replication --disable-verify --disable-compat185 --disable-sql"
-
-EXTRA_OECONF = "${DB6_CONFIG} --enable-shared --enable-cxx --with-sysroot"
-
-# Override the MUTEX setting here, the POSIX library is
-# the default - "POSIX/pthreads/library".
-# Don't ignore the nice SWP instruction on the ARM:
-# These enable the ARM assembler mutex code
-ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
-MUTEX = ""
-MUTEX_arm = "${ARM_MUTEX}"
-MUTEX_armeb = "${ARM_MUTEX}"
-EXTRA_OECONF += "${MUTEX}"
-EXTRA_OEMAKE_class-target = "LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool"
-
-# Cancel the site stuff - it's set for db3 and destroys the
-# configure.
-CONFIG_SITE = ""
-do_configure() {
-	gnu-configize --force ${S}
-	export STRIP="true"
-	oe_runconf
-}
-
-do_compile_prepend() {
-	sed -i -e 's|hardcode_into_libs=yes|hardcode_into_libs=no|' \
-		${B}/libtool
-}
-
-do_install_append() {
-	mkdir -p ${D}/${includedir}/db60
-	mv ${D}/${includedir}/db.h ${D}/${includedir}/db60/.
-	mv ${D}/${includedir}/db_cxx.h ${D}/${includedir}/db60/.
-	ln -s db60/db.h ${D}/${includedir}/db.h
-	ln -s db60/db_cxx.h ${D}/${includedir}/db_cxx.h
-
-	# The docs end up in /usr/docs - not right.
-	if test -d "${D}/${prefix}/docs"
-	then
-		mkdir -p "${D}/${datadir}"
-		test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
-		mv "${D}/${prefix}/docs" "${D}/${docdir}"
-	fi
-
-	chown -R root:root ${D}
-}
-
-INSANE_SKIP_${PN} = "dev-so"
-INSANE_SKIP_${PN}-cxx = "dev-so"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/db/db_6.0.35.bb b/import-layers/yocto-poky/meta/recipes-support/db/db_6.0.35.bb
new file mode 100644
index 0000000..32afbe8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/db/db_6.0.35.bb
@@ -0,0 +1,122 @@
+# Version 6 of the Berkeley DB from Oracle (formerly Sleepycat)
+#
+# At present this package only installs the DB code
+# itself (shared libraries, .a in the dev package),
+# documentation and headers.
+#
+# The headers have the same names as those as v3
+# of the DB, only one version can be used *for dev*
+# at once - DB3 and DB6 can both be installed on the
+# same system at the same time if really necessary.
+SECTION = "libs"
+SUMMARY = "Berkeley Database v6"
+HOMEPAGE = "http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html"
+LICENSE = "AGPL-3.0"
+VIRTUAL_NAME ?= "virtual/db"
+RCONFLICTS_${PN} = "db3"
+
+PR = "r1"
+
+# Note, when upgraded to 6.1.x, a patch in RPM will need to be removed to activate db 6.1 support.
+SRC_URI = "http://distfiles.gentoo.org/distfiles/db-${PV}.tar.gz \
+           file://arm-thumb-mutex_db5.patch \
+           file://fix-parallel-build.patch \
+           file://Makefile-let-libso_target-depend-on-bt_rec.patch \
+           file://Makefile-let-libdb-6.0.la-depend-os_map.l.patch \
+           "
+
+SRC_URI[md5sum] = "c65a4d3e930a116abaaf69edfc697f25"
+SRC_URI[sha256sum] = "24421affa8ae436fe427ae4f5f2d1634da83d3d55a5ad6354a98eeedb825de55"
+
+# Exclude NC versions which lack AES encryption
+UPSTREAM_CHECK_REGEX = "db-(?P<pver>\d+\.\d+(\.\d+)?).tar"
+UPSTREAM_CHECK_URI = "http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1ec8b0b17cc31513fe35ab10716f8490"
+
+# Put virtual/db in any appropriate provider of a
+# relational database, use it as a dependency in
+# place of a specific db and use:
+#
+# PREFERRED_PROVIDER_virtual/db
+#
+# to select the correct db in the build (distro) .conf
+PROVIDES += "${VIRTUAL_NAME}"
+
+inherit autotools
+
+# The executables go in a separate package - typically there
+# is no need to install these unless doing real database
+# management on the system.
+inherit lib_package
+
+PACKAGES =+ "${PN}-cxx"
+FILES_${PN}-cxx = "${libdir}/*cxx*so"
+
+# The dev package has the .so link (as in db3) and the .a's -
+# it is therefore incompatible (cannot be installed at the
+# same time) as the db3 package
+# sort out the .so since they do version prior to the .so
+SOLIBS = "-6*.so"
+FILES_SOLIBSDEV = "${libdir}/libdb.so ${libdir}/libdb_cxx.so"
+
+#configuration - set in local.conf to override
+# All the --disable-* options replace --enable-smallbuild, which breaks a bunch of stuff (eg. postfix)
+DB6_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disable-replication --disable-verify --disable-compat185 --disable-sql"
+
+EXTRA_OECONF = "${DB6_CONFIG} --enable-shared --enable-cxx --with-sysroot"
+
+# Cancel the site stuff - it's set for db3 and destroys the configure.
+CONFIG_SITE = ""
+
+AUTOTOOLS_SCRIPT_PATH = "${S}/dist"
+
+do_configure() {
+	cd ${B}
+	gnu-configize --force ${AUTOTOOLS_SCRIPT_PATH}
+	oe_runconf
+}
+
+# Override the MUTEX setting here, the POSIX library is
+# the default - "POSIX/pthreads/library".
+# Don't ignore the nice SWP instruction on the ARM:
+# These enable the ARM assembler mutex code
+ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
+MUTEX = ""
+MUTEX_arm = "${ARM_MUTEX}"
+MUTEX_armeb = "${ARM_MUTEX}"
+EXTRA_OECONF += "${MUTEX}"
+EXTRA_OEMAKE_append_class-target = " LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool"
+EXTRA_OEMAKE += "STRIP=true"
+
+do_compile_prepend() {
+	# Stop libtool adding RPATHs
+	sed -i -e 's|hardcode_into_libs=yes|hardcode_into_libs=no|' ${B}/libtool
+}
+
+do_install_append() {
+	mkdir -p ${D}/${includedir}/db60
+	mv ${D}/${includedir}/db.h ${D}/${includedir}/db60/.
+	mv ${D}/${includedir}/db_cxx.h ${D}/${includedir}/db60/.
+	ln -s db60/db.h ${D}/${includedir}/db.h
+	ln -s db60/db_cxx.h ${D}/${includedir}/db_cxx.h
+
+	# The docs end up in /usr/docs - not right.
+	if test -d "${D}/${prefix}/docs"
+	then
+		mkdir -p "${D}/${datadir}"
+		test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
+		mv "${D}/${prefix}/docs" "${D}/${docdir}"
+	fi
+
+	chown -R root:root ${D}
+}
+
+# libdb isn't versioned in the typical manner (libdb-6.0.so is the full library
+# name) so skip these checks.
+INSANE_SKIP_${PN} = "dev-so"
+INSANE_SKIP_${PN}-cxx = "dev-so"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RECIPE_NO_UPDATE_REASON = "latest db does not work with RPM-5.x due to changes in locking semantics"
diff --git a/import-layers/yocto-poky/meta/recipes-support/debianutils/debianutils_4.7.bb b/import-layers/yocto-poky/meta/recipes-support/debianutils/debianutils_4.7.bb
deleted file mode 100644
index 6a1d5bf..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/debianutils/debianutils_4.7.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "Miscellaneous utilities specific to Debian"
-SECTION = "base"
-LICENSE = "GPLv2 & SMAIL_GPL"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=f01a5203d50512fc4830b4332b696a9f"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20160204T040501Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz"
-# the package is taken from snapshots.debian.org; that source is static and goes stale
-# so we check the latest upstream from a directory that does get updated
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/"
-
-SRC_URI[md5sum] = "00186f527b35e2cecd4db593c6d512d0"
-SRC_URI[sha256sum] = "a269cacd40f52f2fa5d5636357714a49e8538459c16d77772efaa23711fe53d9"
-
-inherit autotools update-alternatives
-
-do_configure_prepend() {
-    sed -i -e 's:tempfile.1 which.1:which.1:g' ${S}/Makefile.am
-}
-
-do_install_append() {
-    if [ "${base_bindir}" != "${bindir}" ]; then
-        # Debian places some utils into ${base_bindir} as does busybox
-        install -d ${D}${base_bindir}
-        for app in run-parts tempfile; do
-            mv ${D}${bindir}/$app ${D}${base_bindir}/$app
-        done
-    fi
-}
-
-# Note that we package the update-alternatives name.
-#
-PACKAGES =+ "${PN}-run-parts"
-FILES_${PN}-run-parts = "${base_bindir}/run-parts.debianutils"
-
-RDEPENDS_${PN} += "${PN}-run-parts"
-
-
-ALTERNATIVE_PRIORITY="30"
-ALTERNATIVE_${PN} = "add-shell installkernel remove-shell savelog tempfile which"
-ALTERNATIVE_${PN}-run-parts = "run-parts"
-
-ALTERNATIVE_LINK_NAME[add-shell]="${sbindir}/add-shell"
-ALTERNATIVE_LINK_NAME[installkernel]="${sbindir}/installkernel"
-ALTERNATIVE_LINK_NAME[remove-shell]="${sbindir}/remove-shell"
-ALTERNATIVE_LINK_NAME[run-parts]="${base_bindir}/run-parts"
-ALTERNATIVE_LINK_NAME[savelog]="${bindir}/savelog"
-ALTERNATIVE_LINK_NAME[tempfile]="${base_bindir}/tempfile"
-ALTERNATIVE_LINK_NAME[which]="${bindir}/which"
diff --git a/import-layers/yocto-poky/meta/recipes-support/debianutils/debianutils_4.8.bb b/import-layers/yocto-poky/meta/recipes-support/debianutils/debianutils_4.8.bb
new file mode 100644
index 0000000..d969fd3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/debianutils/debianutils_4.8.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Miscellaneous utilities specific to Debian"
+SECTION = "base"
+LICENSE = "GPLv2 & SMAIL_GPL"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=f01a5203d50512fc4830b4332b696a9f"
+
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160629T224408Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz"
+# the package is taken from snapshots.debian.org; that source is static and goes stale
+# so we check the latest upstream from a directory that does get updated
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/"
+
+SRC_URI[md5sum] = "66a37e5ff17be431319bd0b43e9a46b5"
+SRC_URI[sha256sum] = "afa95bbe6b6fd3ef3c0c838b2d7232f09fabeff593ca4b5583cffa6748567ee2"
+
+inherit autotools update-alternatives
+
+do_configure_prepend() {
+    sed -i -e 's:tempfile.1 which.1:which.1:g' ${S}/Makefile.am
+}
+
+do_install_append() {
+    if [ "${base_bindir}" != "${bindir}" ]; then
+        # Debian places some utils into ${base_bindir} as does busybox
+        install -d ${D}${base_bindir}
+        for app in run-parts tempfile; do
+            mv ${D}${bindir}/$app ${D}${base_bindir}/$app
+        done
+    fi
+}
+
+# Note that we package the update-alternatives name.
+#
+PACKAGES =+ "${PN}-run-parts"
+FILES_${PN}-run-parts = "${base_bindir}/run-parts.debianutils"
+
+RDEPENDS_${PN} += "${PN}-run-parts"
+
+
+ALTERNATIVE_PRIORITY="30"
+ALTERNATIVE_${PN} = "add-shell installkernel remove-shell savelog tempfile which"
+ALTERNATIVE_${PN}-run-parts = "run-parts"
+
+ALTERNATIVE_LINK_NAME[add-shell]="${sbindir}/add-shell"
+ALTERNATIVE_LINK_NAME[installkernel]="${sbindir}/installkernel"
+ALTERNATIVE_LINK_NAME[remove-shell]="${sbindir}/remove-shell"
+ALTERNATIVE_LINK_NAME[run-parts]="${base_bindir}/run-parts"
+ALTERNATIVE_LINK_NAME[savelog]="${bindir}/savelog"
+ALTERNATIVE_LINK_NAME[tempfile]="${base_bindir}/tempfile"
+ALTERNATIVE_LINK_NAME[which]="${bindir}/which"
diff --git a/import-layers/yocto-poky/meta/recipes-support/enchant/enchant_1.6.0.bb b/import-layers/yocto-poky/meta/recipes-support/enchant/enchant_1.6.0.bb
index 97a4761..44eb2e3 100644
--- a/import-layers/yocto-poky/meta/recipes-support/enchant/enchant_1.6.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/enchant/enchant_1.6.0.bb
@@ -7,7 +7,7 @@
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=dfcbabf9131dc9a95febef6753a2958b \
                     file://src/enchant.h;beginline=1;endline=29;md5=8d881caa1d37523567e1d8f726675a18"
 
-DEPENDS = "aspell glib-2.0"
+DEPENDS = "glib-2.0"
 
 inherit autotools pkgconfig
 
@@ -18,15 +18,17 @@
 SRC_URI[md5sum] = "de11011aff801dc61042828041fb59c7"
 SRC_URI[sha256sum] = "2fac9e7be7e9424b2c5570d8affe568db39f7572c10ed48d4e13cddf03f7097f"
 
-EXTRA_OECONF = "--with-aspell-prefix=${STAGING_DIR_HOST}${prefix} \
-		--enable-aspell br_cv_binreloc=no \
-		"
+PACKAGECONFIG ??= "aspell"
+PACKAGECONFIG[aspell]  = " --with-aspell-prefix=${STAGING_DIR_HOST}${prefix}  --enable-aspell,  --disable-aspell,  aspell,  aspell"
+PACKAGECONFIG[ispell]  = " --with-ispell-prefix=${STAGING_DIR_HOST}${prefix}  --enable-ispell,  --disable-ispell,  ispell,  ispell"
+PACKAGECONFIG[uspell]  = " --with-uspell-prefix=${STAGING_DIR_HOST}${prefix}  --enable-uspell,  --disable-uspell,  uspell,  uspell"
+PACKAGECONFIG[hspell]  = " --with-hspell-prefix=${STAGING_DIR_HOST}${prefix}  --enable-hspell,  --disable-hspell,  hspell,  hspell"
+PACKAGECONFIG[myspell] = "--with-myspell-prefix=${STAGING_DIR_HOST}${prefix} --enable-myspell, --disable-myspell, myspell, myspell"
+
+EXTRA_OECONF = "br_cv_binreloc=no"
 
 export CXXFLAGS += " -L${STAGING_LIBDIR} -lstdc++ "
 
 FILES_${PN} = "${bindir} ${libdir}/*${SOLIBS} ${datadir}/${BPN} ${libdir}/${BPN}/*.so"
 FILES_${PN}-dev += "${libdir}/${BPN}/*{SOLIBSDEV} ${libdir}/${BPN}/*.la"
 FILES_${PN}-staticdev += "${libdir}/${BPN}/*.a"
-
-RDEPENDS_${PN} += "aspell"
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/gdbm/gdbm_1.11.bb b/import-layers/yocto-poky/meta/recipes-support/gdbm/gdbm_1.11.bb
deleted file mode 100644
index adf8c5b..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/gdbm/gdbm_1.11.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "Key/value database library with extensible hashing"
-HOMEPAGE = "http://www.gnu.org/software/gdbm/"
-SECTION = "libs"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=241da1b9fe42e642cbb2c24d5e0c4d24"
-
-
-SRC_URI = "${GNU_MIRROR}/gdbm/gdbm-${PV}.tar.gz \
-           file://run-ptest \
-           file://ptest.patch \
-          "
-
-SRC_URI[md5sum] = "72c832680cf0999caedbe5b265c8c1bd"
-SRC_URI[sha256sum] = "8d912f44f05d0b15a4a5d96a76f852e905d051bb88022fcdfd98b43be093e3c3"
-
-inherit autotools gettext texinfo lib_package ptest
-
-# Needed for dbm python module
-EXTRA_OECONF = "-enable-libgdbm-compat"
-
-# Stop presence of dbm/nbdm on the host contaminating builds
-CACHED_CONFIGUREVARS += "ac_cv_lib_ndbm_main=no ac_cv_lib_dbm_main=no"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_append () {
-    # Create a symlink to ndbm.h and gdbm.h in include/gdbm to let other packages to find
-    # these headers
-    install -d ${D}${includedir}/gdbm
-    ln -sf ../ndbm.h ${D}/${includedir}/gdbm/ndbm.h
-    ln -sf ../gdbm.h ${D}/${includedir}/gdbm/gdbm.h
-}
-
-RDEPENDS_${PN}-ptest += "diffutils"
-
-do_compile_ptest() {
-    oe_runmake -C tests buildtests
-}
-
-PACKAGES =+ "${PN}-compat \
-            "
-FILES_${PN}-compat = "${libdir}/libgdbm_compat${SOLIBS} \
-                     "
diff --git a/import-layers/yocto-poky/meta/recipes-support/gdbm/gdbm_1.12.bb b/import-layers/yocto-poky/meta/recipes-support/gdbm/gdbm_1.12.bb
new file mode 100644
index 0000000..c380073
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gdbm/gdbm_1.12.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Key/value database library with extensible hashing"
+HOMEPAGE = "http://www.gnu.org/software/gdbm/"
+SECTION = "libs"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=241da1b9fe42e642cbb2c24d5e0c4d24"
+
+
+SRC_URI = "${GNU_MIRROR}/gdbm/gdbm-${PV}.tar.gz \
+           file://run-ptest \
+           file://ptest.patch \
+          "
+
+SRC_URI[md5sum] = "9ce96ff4c99e74295ea19040931c8fb9"
+SRC_URI[sha256sum] = "d97b2166ee867fd6ca5c022efee80702d6f30dd66af0e03ed092285c3af9bcea"
+
+inherit autotools gettext texinfo lib_package ptest
+
+# Needed for dbm python module
+EXTRA_OECONF = "-enable-libgdbm-compat"
+
+# Stop presence of dbm/nbdm on the host contaminating builds
+CACHED_CONFIGUREVARS += "ac_cv_lib_ndbm_main=no ac_cv_lib_dbm_main=no"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install_append () {
+    # Create a symlink to ndbm.h and gdbm.h in include/gdbm to let other packages to find
+    # these headers
+    install -d ${D}${includedir}/gdbm
+    ln -sf ../ndbm.h ${D}/${includedir}/gdbm/ndbm.h
+    ln -sf ../gdbm.h ${D}/${includedir}/gdbm/gdbm.h
+}
+
+RDEPENDS_${PN}-ptest += "diffutils"
+
+do_compile_ptest() {
+    oe_runmake -C tests buildtests
+}
+
+PACKAGES =+ "${PN}-compat \
+            "
+FILES_${PN}-compat = "${libdir}/libgdbm_compat${SOLIBS} \
+                     "
diff --git a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-4.2.1/gmp_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-4.2.1/gmp_fix_for_automake-1.12.patch
index 63aed05..26fd8ef 100644
--- a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-4.2.1/gmp_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-4.2.1/gmp_fix_for_automake-1.12.patch
@@ -5,7 +5,7 @@
 | configure.in:2240: error: automatic de-ANSI-fication support has been removed
 | Makefile.am:28: error: automatic de-ANSI-fication support has been removed
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/02
 
 
diff --git a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.0/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.0/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch
rename to import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/0001-Append-the-user-provided-flags-to-the-auto-detected-.patch
diff --git a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/0001-confiure.ac-Believe-the-cflags-from-environment.patch b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/0001-confiure.ac-Believe-the-cflags-from-environment.patch
new file mode 100644
index 0000000..6653676
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/0001-confiure.ac-Believe-the-cflags-from-environment.patch
@@ -0,0 +1,52 @@
+From ae1a4c37417a3bbbf8ea1cab198982b0cad47e29 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 12 Aug 2016 17:08:13 +0000
+Subject: [PATCH] confiure.ac: Believe the cflags from environment
+
+In some toolchains e.g. OpenEmbedded -march options
+are passed on compiler cmdline, it does not use
+the expected target triplets to make these decision
+during configure.
+
+Secondly, dont set armv4 for march when no selection
+is made, since it is passed from cmdline
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Inappropriate[OE-Specific]
+
+ configure.ac | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 857ea3b..359e919 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -607,15 +607,6 @@ case $host in
+     GMP_INCLUDE_MPN(arm/arm-defs.m4)
+     CALLING_CONVENTIONS_OBJS='arm32call.lo arm32check.lo'
+ 
+-    # This is needed for clang, which is not content with flags like -mfpu=neon
+-    # alone.
+-    case $host in
+-      *-*-*eabi)
+-        gcc_cflags_fpmode="-mfloat-abi=softfp" ;;
+-      *-*-*eabihf)
+-        gcc_cflags_fpmode="-mfloat-abi=hard" ;;
+-    esac
+-
+     # FIXME: We make mandatory compiler options optional here.  We should
+     # either enforce them, or organise to strip paths as the corresponding
+     # options fail.
+@@ -686,8 +677,6 @@ case $host in
+ 	;;
+       *)
+ 	path="arm"
+-	gcc_cflags_arch="-march=armv4"
+-	GMP_DEFINE_RAW(["define(<NOTHUMB>,1)"])
+ 	;;
+     esac
+     ;;
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.0/amd64.patch b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/amd64.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.0/amd64.patch
rename to import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/amd64.patch
diff --git a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.0/use-includedir.patch b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/use-includedir.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.0/use-includedir.patch
rename to import-layers/yocto-poky/meta/recipes-support/gmp/gmp-6.1.1/use-includedir.patch
diff --git a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp_6.1.0.bb b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp_6.1.0.bb
deleted file mode 100644
index de827f5..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp_6.1.0.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-require gmp.inc
-
-LICENSE = "GPLv2+ | LGPLv3+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                   file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
-                   file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-"
-
-REVISION = ""
-SRC_URI = "https://gmplib.org/download/${BPN}/${BP}${REVISION}.tar.bz2 \
-           file://amd64.patch \
-           file://use-includedir.patch \
-           file://0001-Append-the-user-provided-flags-to-the-auto-detected-.patch \
-           "
-
-SRC_URI[md5sum] = "86ee6e54ebfc4a90b643a65e402c4048"
-SRC_URI[sha256sum] = "498449a994efeba527885c10405993427995d3f86b8768d8cdf8d9dd7c6b73e8"
-
-acpaths = ""
-
-EXTRA_OECONF += " --enable-cxx=detect"
-
-PACKAGES =+ "libgmpxx"
-FILES_libgmpxx = "${libdir}/libgmpxx${SOLIBS}"
-
-do_install_append_class-target() {
-        sed -i "s|--sysroot=${STAGING_DIR_HOST}||g" ${D}${includedir}/gmp.h
-}
-
-SSTATE_SCAN_FILES += "gmp.h"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gmp/gmp_6.1.1.bb b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp_6.1.1.bb
new file mode 100644
index 0000000..303c3ef
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gmp/gmp_6.1.1.bb
@@ -0,0 +1,38 @@
+require gmp.inc
+
+LICENSE = "GPLv2+ | LGPLv3+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                   file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
+                   file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+"
+
+REVISION = ""
+SRC_URI = "https://gmplib.org/download/${BPN}/${BP}${REVISION}.tar.bz2 \
+           file://amd64.patch \
+           file://use-includedir.patch \
+           file://0001-Append-the-user-provided-flags-to-the-auto-detected-.patch \
+           file://0001-confiure.ac-Believe-the-cflags-from-environment.patch \
+           "
+
+SRC_URI[md5sum] = "4c175f86e11eb32d8bf9872ca3a8e11d"
+SRC_URI[sha256sum] = "a8109865f2893f1373b0a8ed5ff7429de8db696fc451b1036bd7bdf95bbeffd6"
+
+acpaths = ""
+
+EXTRA_OECONF += " --enable-cxx=detect"
+
+PACKAGES =+ "libgmpxx"
+FILES_libgmpxx = "${libdir}/libgmpxx${SOLIBS}"
+
+do_install_append_class-target() {
+        sed -i "s|--sysroot=${STAGING_DIR_HOST}||g" ${D}${includedir}/gmp.h
+}
+
+SSTATE_SCAN_FILES += "gmp.h"
+
+# Doesn't compile in MIPS16e mode due to use of hand-written
+# assembly
+MIPS_INSTRUCTION_SET = "mips"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_1.4.7.bb b/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_1.4.7.bb
index b4ccbfe..6ccffd5 100644
--- a/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_1.4.7.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_1.4.7.bb
@@ -9,7 +9,7 @@
 
 PR = "r9"
 
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-${PV}.tar.bz2 \
+SRC_URI = "${GNUPG_MIRROR}/gnupg/gnupg-${PV}.tar.bz2 \
            file://long-long-thumb.patch \
            file://configure.patch \
            file://mips_gcc4.4.patch \
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_2.1.11.bb b/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_2.1.11.bb
deleted file mode 100644
index 8e2189b..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_2.1.11.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "GNU Privacy Guard - encryption and signing tools (2.x)"
-HOMEPAGE = "http://www.gnupg.org/"
-LICENSE = "GPLv3 & LGPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
-                    file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6"
-
-DEPENDS = "npth libassuan libksba zlib bzip2 readline libgcrypt"
-
-inherit autotools gettext texinfo pkgconfig
-
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/${BPN}/${BPN}-${PV}.tar.bz2 \
-           file://pkgconfig.patch \
-           file://use-pkgconfig-instead-of-npth-config.patch \
-           file://dirmngr-uses-libgpg-error.patch \
-           file://autogen.sh-fix-find-version-for-beta-checking.patch \
-          "
-
-SRC_URI[md5sum] = "873302c475c4c90badb67daac90ebd5d"
-SRC_URI[sha256sum] = "b7b0fb2c8c5d47d7ec916d4a1097c0ddcb94a12bb1c0ac424ad86b1ee316b61a"
-
-EXTRA_OECONF = "--disable-ldap \
-		--disable-ccid-driver \
-		--with-zlib=${STAGING_LIBDIR}/.. \
-		--with-bzip2=${STAGING_LIBDIR}/.. \
-                --with-readline=${STAGING_LIBDIR}/.. \
-               "
-RRECOMMENDS_${PN} = "pinentry"
-
-do_configure_prepend () {
-	# Else these could be used in prefernce to those in aclocal-copy
-	rm -f ${S}/m4/gpg-error.m4
-	rm -f ${S}/m4/libassuan.m4
-	rm -f ${S}/m4/ksba.m4
-	rm -f ${S}/m4/libgcrypt.m4
-}
-
-do_install_append() {
-	ln -sf gpg2 ${D}${bindir}/gpg
-	ln -sf gpgv2 ${D}${bindir}/gpgv
-}
-
-RDEPENDS_${PN} = "gnutls"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_2.1.14.bb b/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_2.1.14.bb
new file mode 100644
index 0000000..5ea9b96
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnupg/gnupg_2.1.14.bb
@@ -0,0 +1,46 @@
+SUMMARY = "GNU Privacy Guard - encryption and signing tools (2.x)"
+HOMEPAGE = "http://www.gnupg.org/"
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
+                    file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6"
+
+DEPENDS = "npth libassuan libksba zlib bzip2 readline libgcrypt"
+
+inherit autotools gettext texinfo pkgconfig
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://pkgconfig.patch \
+           file://use-pkgconfig-instead-of-npth-config.patch \
+           file://dirmngr-uses-libgpg-error.patch \
+           file://autogen.sh-fix-find-version-for-beta-checking.patch \
+          "
+
+SRC_URI[md5sum] = "46cf0a42ffad6c2615cafd633580b2de"
+SRC_URI[sha256sum] = "9450dee9693b6a12bf0c374dae77b66c30f69ff8f35fc9266ab8dd76998eba42"
+
+EXTRA_OECONF = "--disable-ldap \
+		--disable-ccid-driver \
+		--with-zlib=${STAGING_LIBDIR}/.. \
+		--with-bzip2=${STAGING_LIBDIR}/.. \
+                --with-readline=${STAGING_LIBDIR}/.. \
+               "
+RRECOMMENDS_${PN} = "pinentry"
+
+do_configure_prepend () {
+	# Else these could be used in prefernce to those in aclocal-copy
+	rm -f ${S}/m4/gpg-error.m4
+	rm -f ${S}/m4/libassuan.m4
+	rm -f ${S}/m4/ksba.m4
+	rm -f ${S}/m4/libgcrypt.m4
+}
+
+do_install_append() {
+	ln -sf gpg2 ${D}${bindir}/gpg
+	ln -sf gpgv2 ${D}${bindir}/gpgv
+}
+
+RDEPENDS_${PN} = "gnutls"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls.inc b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls.inc
index e7c91eb..51b9d2b 100644
--- a/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls.inc
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls.inc
@@ -8,8 +8,9 @@
 LICENSE_${PN}-bin = "GPLv3+"
 LICENSE_${PN}-openssl = "GPLv3+"
 
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://COPYING.LESSER;md5=a6f89e2100d9b6cdffcea4f398e37343"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=71391c8e0c1cfe68077e7fce3b586283 \
+                    file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://doc/COPYING.LESSER;md5=a6f89e2100d9b6cdffcea4f398e37343"
 
 DEPENDS = "nettle gmp virtual/libiconv"
 DEPENDS_append_libc-musl = " argp-standalone"
@@ -18,11 +19,10 @@
 
 SRC_URI = "ftp://ftp.gnutls.org/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz"
 
-inherit autotools texinfo binconfig pkgconfig gettext lib_package
+inherit autotools texinfo binconfig pkgconfig gettext lib_package gtk-doc
 
 PACKAGECONFIG ??= "libidn zlib"
 
-PACKAGECONFIG[docs] = "--enable-doc,--disable-doc"
 PACKAGECONFIG[libidn] = "--with-idn,--without-idn,libidn"
 PACKAGECONFIG[libtasn1] = "--with-included-libtasn1=no,--with-included-libtasn1,libtasn1"
 PACKAGECONFIG[p11-kit] = "--with-p11-kit,--without-p11-kit,p11-kit"
@@ -30,7 +30,7 @@
 PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
 
 EXTRA_OECONF = " \
-    --disable-crywrap \
+    --enable-doc \
     --disable-libdane \
     --disable-guile \
     --disable-rpath \
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls/0001-Use-correct-include-dir-with-minitasn.patch b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls/0001-Use-correct-include-dir-with-minitasn.patch
new file mode 100644
index 0000000..d7dd7cf
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls/0001-Use-correct-include-dir-with-minitasn.patch
@@ -0,0 +1,31 @@
+From 2651b08477f42dd7a05ea7d6df410fb2c46de4fb Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Wed, 31 Aug 2016 11:04:06 +0300
+Subject: [PATCH] Use correct include dir with minitasn
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This allows compiling certtool-cfg without libtasn headers.
+
+Upstream-Status: Submitted [https://gitlab.com/gnutls/gnutls/merge_requests/54]
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ src/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 182f3a5..cf65388 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -146,6 +146,7 @@ libcmd_cli_debug_la_SOURCES = cli-debug-args.def cli-debug-args.c cli-debug-args
+ COMMON_LIBS = $(LIBOPTS) $(LTLIBINTL)
+ if ENABLE_MINITASN1
+ COMMON_LIBS += ../lib/minitasn1/libminitasn1.la ../gl/libgnu.la 
++AM_CPPFLAGS += -I$(top_srcdir)/lib/minitasn1
+ else
+ COMMON_LIBS += $(LIBTASN1_LIBS)
+ endif
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls/CVE-2016-7444.patch b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls/CVE-2016-7444.patch
new file mode 100644
index 0000000..215be5a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls/CVE-2016-7444.patch
@@ -0,0 +1,35 @@
+CVE: CVE-2016-7444
+Upstream-Status: Backport
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+
+Upstream commit follows:
+
+
+From 964632f37dfdfb914ebc5e49db4fa29af35b1de9 Mon Sep 17 00:00:00 2001
+From: Nikos Mavrogiannopoulos <nmav@gnutls.org>
+Date: Sat, 27 Aug 2016 17:00:22 +0200
+Subject: [PATCH] ocsp: corrected the comparison of the serial size in OCSP response
+
+Previously the OCSP certificate check wouldn't verify the serial length
+and could succeed in cases it shouldn't.
+
+Reported by Stefan Buehler.
+---
+ lib/x509/ocsp.c | 1 +
+ 1 file changed, 1 insertion(+), 0 deletions(-)
+
+diff --git a/lib/x509/ocsp.c b/lib/x509/ocsp.c
+index 92db9b6..8181f2e 100644
+--- a/lib/x509/ocsp.c
++++ b/lib/x509/ocsp.c
+@@ -1318,6 +1318,7 @@ gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_t resp,
+ 		gnutls_assert();
+ 		goto cleanup;
+ 	}
++	cserial.size = t;
+ 
+ 	if (rserial.size != cserial.size
+ 	    || memcmp(cserial.data, rserial.data, rserial.size) != 0) {
+--
+libgit2 0.24.0
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls_3.4.9.bb b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls_3.4.9.bb
deleted file mode 100644
index b652f6f..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls_3.4.9.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require gnutls.inc
-
-SRC_URI += "file://correct_rpl_gettimeofday_signature.patch \
-            file://0001-configure.ac-fix-sed-command.patch \
-            file://use-pkg-config-to-locate-zlib.patch \
-           "
-SRC_URI[md5sum] = "1b3b6d55d0e2b6d01a54f53129f1da9b"
-SRC_URI[sha256sum] = "48594fadba33d450f796ec69526cf2bce6ff9bc3dc90fbd7bf38dc3601f57c3f"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls_3.5.3.bb b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls_3.5.3.bb
new file mode 100644
index 0000000..b2dbb07
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/gnutls_3.5.3.bb
@@ -0,0 +1,13 @@
+require gnutls.inc
+
+SRC_URI += "file://correct_rpl_gettimeofday_signature.patch \
+            file://0001-configure.ac-fix-sed-command.patch \
+            file://use-pkg-config-to-locate-zlib.patch \
+            file://0001-Use-correct-include-dir-with-minitasn.patch \
+            file://CVE-2016-7444.patch \
+           "
+SRC_URI[md5sum] = "6c2c7f40ddf52933ee3ca474cb8cb63c"
+SRC_URI[sha256sum] = "92c4bc999a10a1b95299ebefaeea8333f19d8a98d957a35b5eae74881bdb1fef"
+
+# x86 .text relocations should be fixed from 3.5.5 onwards
+INSANE_SKIP_${PN}_append_x86 = " textrel"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch
new file mode 100644
index 0000000..ae64394
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch
@@ -0,0 +1,28 @@
+From 908e9fa4c1172f09e0e45420a403dc25ed0a466c Mon Sep 17 00:00:00 2001
+From: Nikos Mavrogiannopoulos <nmav@redhat.com>
+Date: Tue, 26 Jul 2016 08:45:33 +0200
+Subject: [PATCH 1/4] configure: don't add -Werror to build flags
+
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ configure.ac | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7a14e04..066f5fe 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -70,8 +70,6 @@ AC_ARG_ENABLE([gcc-warnings],
+ )
+ 
+ if test "$gl_gcc_warnings" = yes; then
+-  gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
+-
+   nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
+   nw="$nw -Wc++-compat"             # We don't care strongly about C++ compilers
+   nw="$nw -Wtraditional"            # Warns on #elif which we use often
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0002-ASN.y-corrected-compiler-warning.patch b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0002-ASN.y-corrected-compiler-warning.patch
new file mode 100644
index 0000000..dd36422
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0002-ASN.y-corrected-compiler-warning.patch
@@ -0,0 +1,28 @@
+From 3542c01618fcde83b29640ea2c60bfd2629ae0b7 Mon Sep 17 00:00:00 2001
+From: Nikos Mavrogiannopoulos <nmav@redhat.com>
+Date: Tue, 26 Jul 2016 08:47:49 +0200
+Subject: [PATCH 2/4] ASN.y: corrected compiler warning
+
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ lib/ASN1.y | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/ASN1.y b/lib/ASN1.y
+index 731415d..6db638f 100644
+--- a/lib/ASN1.y
++++ b/lib/ASN1.y
+@@ -621,7 +621,7 @@ _asn1_create_errorDescription (int error, char *error_desc)
+     case ASN1_NAME_TOO_LONG:
+       snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE,
+                 "%s:%u: name too long (more than %u characters)", file_name,
+-                line_number, ASN1_MAX_NAME_SIZE);
++                line_number, (unsigned)ASN1_MAX_NAME_SIZE);
+       break;
+     case ASN1_IDENTIFIER_NOT_FOUND:
+       snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE,
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0003-parser_aux-corrected-potential-null-pointer-derefere.patch b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0003-parser_aux-corrected-potential-null-pointer-derefere.patch
new file mode 100644
index 0000000..2420143
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0003-parser_aux-corrected-potential-null-pointer-derefere.patch
@@ -0,0 +1,73 @@
+From c8903aa27dc9de1d9efeed9d1f7894f1019548f7 Mon Sep 17 00:00:00 2001
+From: Nikos Mavrogiannopoulos <nmav@redhat.com>
+Date: Tue, 26 Jul 2016 08:49:15 +0200
+Subject: [PATCH 3/4] parser_aux: corrected potential null pointer dereferences
+
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ lib/parser_aux.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/lib/parser_aux.c b/lib/parser_aux.c
+index 2285b20..12ee16f 100644
+--- a/lib/parser_aux.c
++++ b/lib/parser_aux.c
+@@ -637,7 +637,7 @@ _asn1_change_integer_value (asn1_node node)
+ 		      p = NULL;
+ 		      break;
+ 		    }
+-		  if (p->right)
++		  if (p && p->right)
+ 		    {
+ 		      p = p->right;
+ 		      break;
+@@ -753,7 +753,7 @@ _asn1_expand_object_id (asn1_node node)
+ 
+       if (move == RIGHT)
+ 	{
+-	  if (p->right)
++	  if (p && p->right)
+ 	    p = p->right;
+ 	  else
+ 	    move = UP;
+@@ -828,7 +828,7 @@ _asn1_expand_object_id (asn1_node node)
+ 
+       if (move == RIGHT)
+ 	{
+-	  if (p->right)
++	  if (p && p->right)
+ 	    p = p->right;
+ 	  else
+ 	    move = UP;
+@@ -898,7 +898,7 @@ _asn1_type_set_config (asn1_node node)
+ 
+       if (move == RIGHT)
+ 	{
+-	  if (p->right)
++	  if (p && p->right)
+ 	    p = p->right;
+ 	  else
+ 	    move = UP;
+@@ -1007,7 +1007,7 @@ _asn1_check_identifier (asn1_node node)
+ 		  p = NULL;
+ 		  break;
+ 		}
+-	      if (p->right)
++	      if (p && p->right)
+ 		{
+ 		  p = p->right;
+ 		  break;
+@@ -1067,7 +1067,7 @@ _asn1_set_default_tag (asn1_node node)
+ 		  p = NULL;
+ 		  break;
+ 		}
+-	      if (p->right)
++	      if (p && p->right)
+ 		{
+ 		  p = p->right;
+ 		  break;
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0004-tools-eliminated-compiler-warnings.patch b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0004-tools-eliminated-compiler-warnings.patch
new file mode 100644
index 0000000..7bda0e6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1/0004-tools-eliminated-compiler-warnings.patch
@@ -0,0 +1,56 @@
+From d647bb2fa1bd288a6ac02c18318f3cba2a34c3a0 Mon Sep 17 00:00:00 2001
+From: Nikos Mavrogiannopoulos <nmav@redhat.com>
+Date: Tue, 26 Jul 2016 08:50:24 +0200
+Subject: [PATCH 4/4] tools: eliminated compiler warnings
+
+---
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ src/asn1Coding.c   | 2 +-
+ src/asn1Decoding.c | 2 +-
+ src/asn1Parser.c   | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/asn1Coding.c b/src/asn1Coding.c
+index d4df593..b516bfe 100644
+--- a/src/asn1Coding.c
++++ b/src/asn1Coding.c
+@@ -188,7 +188,7 @@ main (int argc, char *argv[])
+ 	default:
+ 	  fprintf (stderr,
+ 		   "asn1Coding: ?? getopt returned character code Ox%x ??\n",
+-		   option_result);
++		   (unsigned)option_result);
+ 	}
+     }
+ 
+diff --git a/src/asn1Decoding.c b/src/asn1Decoding.c
+index 078963e..20f91ac 100644
+--- a/src/asn1Decoding.c
++++ b/src/asn1Decoding.c
+@@ -131,7 +131,7 @@ main (int argc, char *argv[])
+ 	default:
+ 	  fprintf (stderr,
+ 		   "asn1Decoding: ?? getopt returned character code Ox%x ??\n",
+-		   option_result);
++		   (unsigned)option_result);
+ 	}
+     }
+ 
+diff --git a/src/asn1Parser.c b/src/asn1Parser.c
+index 7a3ae67..475bfc9 100644
+--- a/src/asn1Parser.c
++++ b/src/asn1Parser.c
+@@ -139,7 +139,7 @@ main (int argc, char *argv[])
+ 	default:
+ 	  fprintf (stderr,
+ 		   "asn1Parser: ?? getopt returned character code Ox%x ??\n",
+-		   option_result);
++		   (unsigned)option_result);
+ 	}
+ 
+     }
+-- 
+1.9.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1_4.7.bb b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1_4.7.bb
deleted file mode 100644
index 7f08569..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1_4.7.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Library for ASN.1 and DER manipulation"
-HOMEPAGE = "http://www.gnu.org/software/libtasn1/"
-
-LICENSE = "GPLv3+ & LGPLv2.1+"
-LICENSE_${PN}-bin = "GPLv3+"
-LICENSE_${PN} = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-                    file://README;endline=8;md5=c3803a3e8ca5ab5eb1e5912faa405351"
-
-SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
-           file://dont-depend-on-help2man.patch \
-           "
-
-SRC_URI[md5sum] = "12d10ca4ae0a3b95f7aa06a076da39ec"
-SRC_URI[sha256sum] = "a40780dc93fc6d819170240e8ece25352058a85fd1d2347ce0f143667d8f11c9"
-
-inherit autotools texinfo binconfig lib_package
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1_4.9.bb b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1_4.9.bb
new file mode 100644
index 0000000..b8ff9ea
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/gnutls/libtasn1_4.9.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Library for ASN.1 and DER manipulation"
+HOMEPAGE = "http://www.gnu.org/software/libtasn1/"
+
+LICENSE = "GPLv3+ & LGPLv2.1+"
+LICENSE_${PN}-bin = "GPLv3+"
+LICENSE_${PN} = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+                    file://README;endline=8;md5=c3803a3e8ca5ab5eb1e5912faa405351"
+
+SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
+           file://dont-depend-on-help2man.patch \
+           file://0001-configure-don-t-add-Werror-to-build-flags.patch \
+           file://0002-ASN.y-corrected-compiler-warning.patch \
+           file://0003-parser_aux-corrected-potential-null-pointer-derefere.patch \
+           file://0004-tools-eliminated-compiler-warnings.patch \
+           "
+
+SRC_URI[md5sum] = "3018d0f466a32b66dde41bb122e6cab6"
+SRC_URI[sha256sum] = "4f6f7a8fd691ac2b8307c8ca365bad711db607d4ad5966f6938a9d2ecd65c920"
+
+inherit autotools texinfo binconfig lib_package gtk-doc
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/gpgme/gpgme_1.6.0.bb b/import-layers/yocto-poky/meta/recipes-support/gpgme/gpgme_1.6.0.bb
index 86eda23..a2d0587 100644
--- a/import-layers/yocto-poky/meta/recipes-support/gpgme/gpgme_1.6.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/gpgme/gpgme_1.6.0.bb
@@ -9,7 +9,8 @@
                     file://src/gpgme.h.in;endline=23;md5=5027eec93a996272a9a0a6a86cf35775 \
                     file://src/engine.h;endline=22;md5=4b6d8ba313d9b564cc4d4cfb1640af9d"
 
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gpgme/${BP}.tar.bz2 \
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/gpgme/${BP}.tar.bz2 \
            file://gpgme.pc \
            file://pkgconfig.patch \
           "
diff --git a/import-layers/yocto-poky/meta/recipes-support/icu/icu/icu-release-56-1-flagparser-fix.patch b/import-layers/yocto-poky/meta/recipes-support/icu/icu/icu-release-56-1-flagparser-fix.patch
deleted file mode 100644
index 1519d84..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/icu/icu/icu-release-56-1-flagparser-fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-icu: Ticket #11959: pkgdata dies when compiled with lots'o'flags
-
-See: http://bugs.icu-project.org/trac/ticket/11959
-
-The patch avoids premature failure which results in a segfault.
-
-Upstream-Status: Backport of r38081
-Signed-off-by: Mike Crowe <mac@mcrowe.com>
-
-Index: source/tools/toolutil/flagparser.c
-===================================================================
---- source/tools/toolutil/flagparser.c	(revision 38046)
-+++ source/tools/toolutil/flagparser.c	(working copy)
-@@ -96,8 +96,8 @@
-     uprv_free(buffer);
- 
-     T_FileStream_close(f);
--    
--    if (U_FAILURE(*status)) {
-+
-+    if (U_FAILURE(*status) && *status != U_BUFFER_OVERFLOW_ERROR) {
-         return -1;
-     }
- 
diff --git a/import-layers/yocto-poky/meta/recipes-support/icu/icu_56.1.bb b/import-layers/yocto-poky/meta/recipes-support/icu/icu_56.1.bb
deleted file mode 100644
index db0de10..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/icu/icu_56.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-require icu.inc
-
-LIC_FILES_CHKSUM = "file://../license.html;md5=64eff4aadff4d104d6d437c4fde0e6d7"
-
-def icu_download_version(d):
-    pvsplit = d.getVar('PV', True).split('.')
-    return pvsplit[0] + "_" + pvsplit[1]
-
-ICU_PV = "${@icu_download_version(d)}"
-
-# http://errors.yoctoproject.org/Errors/Details/20486/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-BASE_SRC_URI = "http://download.icu-project.org/files/icu4c/${PV}/icu4c-${ICU_PV}-src.tgz"
-SRC_URI = "${BASE_SRC_URI} \
-           file://icu-pkgdata-large-cmd.patch \
-           file://fix-install-manx.patch \
-           file://icu-release-56-1-flagparser-fix.patch \
-          "
-
-SRC_URI_append_class-target = "\
-           file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
-          "
-SRC_URI[md5sum] = "c4a2d71ff56aec5ebfab2a3f059be99d"
-SRC_URI[sha256sum] = "3a64e9105c734dcf631c0b3ed60404531bce6c0f5a64bfe1a6402a4cc2314816"
-
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
-UPSTREAM_CHECK_URI = "http://download.icu-project.org/files/icu4c/"
diff --git a/import-layers/yocto-poky/meta/recipes-support/icu/icu_57.1.bb b/import-layers/yocto-poky/meta/recipes-support/icu/icu_57.1.bb
new file mode 100644
index 0000000..90c2b82
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/icu/icu_57.1.bb
@@ -0,0 +1,28 @@
+require icu.inc
+
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=787d3b37867445c1cdd6f6167bd0e347"
+
+def icu_download_version(d):
+    pvsplit = d.getVar('PV', True).split('.')
+    return pvsplit[0] + "_" + pvsplit[1]
+
+ICU_PV = "${@icu_download_version(d)}"
+
+# http://errors.yoctoproject.org/Errors/Details/20486/
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+BASE_SRC_URI = "http://download.icu-project.org/files/icu4c/${PV}/icu4c-${ICU_PV}-src.tgz"
+SRC_URI = "${BASE_SRC_URI} \
+           file://icu-pkgdata-large-cmd.patch \
+           file://fix-install-manx.patch \
+          "
+
+SRC_URI_append_class-target = "\
+           file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
+          "
+SRC_URI[md5sum] = "976734806026a4ef8bdd17937c8898b9"
+SRC_URI[sha256sum] = "ff8c67cb65949b1e7808f2359f2b80f722697048e90e7cfc382ec1fe229e9581"
+
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
+UPSTREAM_CHECK_URI = "http://download.icu-project.org/files/icu4c/"
diff --git a/import-layers/yocto-poky/meta/recipes-support/iso-codes/iso-codes_3.65.bb b/import-layers/yocto-poky/meta/recipes-support/iso-codes/iso-codes_3.65.bb
deleted file mode 100644
index 0b78dc4..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/iso-codes/iso-codes_3.65.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "ISO language, territory, currency, script codes and their translations"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fbc093901857fcd118f065f900982c24"
-
-SRC_URI = "https://pkg-isocodes.alioth.debian.org/downloads/iso-codes-${PV}.tar.xz"
-SRC_URI[md5sum] = "890a08d4f962748e0a0758a8aa471896"
-SRC_URI[sha256sum] = "834de5193c8489eedeaf6509457a9b13476702386ae1f3ed4f391a349d630320"
-
-# inherit gettext cannot be used, because it adds gettext-native to BASEDEPENDS which
-# are inhibited by allarch
-DEPENDS = "gettext-native"
-
-inherit allarch autotools
-
-FILES_${PN} += "${datadir}/xml/"
diff --git a/import-layers/yocto-poky/meta/recipes-support/iso-codes/iso-codes_3.70.bb b/import-layers/yocto-poky/meta/recipes-support/iso-codes/iso-codes_3.70.bb
new file mode 100644
index 0000000..7edd8b7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/iso-codes/iso-codes_3.70.bb
@@ -0,0 +1,15 @@
+SUMMARY = "ISO language, territory, currency, script codes and their translations"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "https://pkg-isocodes.alioth.debian.org/downloads/iso-codes-${PV}.tar.xz"
+SRC_URI[md5sum] = "c61f8f02eecf978d3710ff594e43ca7e"
+SRC_URI[sha256sum] = "41e2fbaec2ed57e767b94f175d0dcd31b627aeb23b75cd604605a6fb6109d61f"
+
+# inherit gettext cannot be used, because it adds gettext-native to BASEDEPENDS which
+# are inhibited by allarch
+DEPENDS = "gettext-native"
+
+inherit allarch autotools
+
+FILES_${PN} += "${datadir}/xml/"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libassuan/libassuan_2.4.2.bb b/import-layers/yocto-poky/meta/recipes-support/libassuan/libassuan_2.4.2.bb
deleted file mode 100644
index f376d63..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libassuan/libassuan_2.4.2.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "IPC library used by GnuPG and GPGME"
-HOMEPAGE = "http://www.gnupg.org/related_software/libassuan/"
-BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
-
-LICENSE = "GPLv3+ & LGPLv2.1+"
-LICENSE_${PN} = "LGPLv2.1+"
-LICENSE_${PN}-doc = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
-                    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-                    file://src/assuan.c;endline=20;md5=0f465544183405055ec179869fc5b5ba \
-                    file://src/assuan-defs.h;endline=20;md5=20cd55535260ca1779edae5c7b80b21e"
-
-DEPENDS = "libgpg-error"
-
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libassuan/libassuan-${PV}.tar.bz2 \
-	   file://libassuan-add-pkgconfig-support.patch"
-
-SRC_URI[md5sum] = "70151995c2330ae1261c0a7ca34cf478"
-SRC_URI[sha256sum] = "bb06dc81380b74bf1b64d5849be5c0409a336f3b4c45f20ac688e86d1b5bcb20"
-
-BINCONFIG = "${bindir}/libassuan-config"
-
-inherit autotools texinfo binconfig-disabled pkgconfig
-
-do_configure_prepend () {
-	# Else these could be used in preference to those in aclocal-copy
-	rm -f ${S}/m4/*.m4
-}
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libassuan/libassuan_2.4.3.bb b/import-layers/yocto-poky/meta/recipes-support/libassuan/libassuan_2.4.3.bb
new file mode 100644
index 0000000..1b3916d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libassuan/libassuan_2.4.3.bb
@@ -0,0 +1,31 @@
+SUMMARY = "IPC library used by GnuPG and GPGME"
+HOMEPAGE = "http://www.gnupg.org/related_software/libassuan/"
+BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
+
+LICENSE = "GPLv3+ & LGPLv2.1+"
+LICENSE_${PN} = "LGPLv2.1+"
+LICENSE_${PN}-doc = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
+                    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://src/assuan.c;endline=20;md5=0f465544183405055ec179869fc5b5ba \
+                    file://src/assuan-defs.h;endline=20;md5=20cd55535260ca1779edae5c7b80b21e"
+
+DEPENDS = "libgpg-error"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/libassuan/libassuan-${PV}.tar.bz2 \
+	   file://libassuan-add-pkgconfig-support.patch"
+
+SRC_URI[md5sum] = "8e01a7c72d3e5d154481230668e6eb5a"
+SRC_URI[sha256sum] = "22843a3bdb256f59be49842abf24da76700354293a066d82ade8134bb5aa2b71"
+
+BINCONFIG = "${bindir}/libassuan-config"
+
+inherit autotools texinfo binconfig-disabled pkgconfig
+
+do_configure_prepend () {
+	# Else these could be used in preference to those in aclocal-copy
+	rm -f ${S}/m4/*.m4
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.4.2.bb b/import-layers/yocto-poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.4.2.bb
deleted file mode 100644
index fdb70d8..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.4.2.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "A library for atomic integer operations"
-HOMEPAGE = "https://github.com/ivmai/libatomic_ops/"
-SECTION = "optional"
-PROVIDES += "libatomics-ops"
-LICENSE = "GPLv2 & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://doc/LICENSING.txt;md5=e00dd5c8ac03a14c5ae5225a4525fa2d \
-		   "
-
-SRC_URI = "\
-	http://www.ivmaisoft.com/_bin/atomic_ops/libatomic_ops-${PV}.tar.gz \
-	file://0001-Add-initial-nios2-architecture-support.patch \
-	"
-
-SRC_URI[md5sum] = "1d6538604b314d2fccdf86915e5c0857"
-SRC_URI[sha256sum] = "04fa615f62992547bcbda562260e28b504bc4c06e2f985f267f3ade30304b5dd"
-
-S = "${WORKDIR}/libatomic_ops-${PV}"
-
-ALLOW_EMPTY_${PN} = "1"
-
-ARM_INSTRUCTION_SET = "arm"
-
-inherit autotools pkgconfig
-
-do_install_append() {
-	# those contain only docs, not necessary for now.
-	install -m 0755 -d ${D}${docdir}
-	mv ${D}${datadir}/libatomic_ops ${D}${docdir}/${BPN}
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.4.4.bb b/import-layers/yocto-poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.4.4.bb
new file mode 100644
index 0000000..930c1b8
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.4.4.bb
@@ -0,0 +1,32 @@
+SUMMARY = "A library for atomic integer operations"
+HOMEPAGE = "https://github.com/ivmai/libatomic_ops/"
+SECTION = "optional"
+PROVIDES += "libatomics-ops"
+LICENSE = "GPLv2 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://doc/LICENSING.txt;md5=e00dd5c8ac03a14c5ae5225a4525fa2d \
+		   "
+
+SRC_URI = "\
+	http://www.ivmaisoft.com/_bin/atomic_ops/libatomic_ops-${PV}.tar.gz \
+	file://0001-Add-initial-nios2-architecture-support.patch \
+	"
+
+SRC_URI[md5sum] = "426d804baae12c372967a6d183e25af2"
+SRC_URI[sha256sum] = "bf210a600dd1becbf7936dd2914cf5f5d3356046904848dcfd27d0c8b12b6f8f"
+
+S = "${WORKDIR}/libatomic_ops-${PV}"
+
+ALLOW_EMPTY_${PN} = "1"
+
+ARM_INSTRUCTION_SET = "arm"
+
+inherit autotools pkgconfig
+
+do_install_append() {
+	# those contain only docs, not necessary for now.
+	install -m 0755 -d ${D}${docdir}
+	mv ${D}${datadir}/libatomic_ops ${D}${docdir}/${BPN}
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd_0.8.2.bb b/import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd_0.8.2.bb
deleted file mode 100644
index 3335386..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd_0.8.2.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2013 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-SUMMARY = "Library of utility functions from BSD systems"
-DESCRIPTION = "This library provides useful functions commonly found on BSD systems, \
-               and lacking on others like GNU systems, thus making it easier to port \
-               projects with strong BSD origins, without needing to embed the same \
-               code over and over again on each project."
-
-HOMEPAGE = "http://libbsd.freedesktop.org/wiki/"
-# There seems to be more licenses used in the code, I don't think we want to list them all here, complete list:
-# OE @ ~/projects/libbsd $ grep ^License: COPYING  | sort
-# License: BSD-2-clause
-# License: BSD-2-clause
-# License: BSD-2-clause-NetBSD
-# License: BSD-2-clause-author
-# License: BSD-2-clause-verbatim
-# License: BSD-3-clause
-# License: BSD-3-clause
-# License: BSD-3-clause
-# License: BSD-3-clause-Peter-Wemm
-# License: BSD-3-clause-Regents
-# License: BSD-4-clause-Christopher-G-Demetriou
-# License: BSD-4-clause-Niels-Provos
-# License: BSD-5-clause-Peter-Wemm
-# License: Beerware
-# License: Expat
-# License: ISC
-# License: ISC-Original
-# License: public-domain
-# License: public-domain-Colin-Plumb
-LICENSE = "BSD-4-Clause & ISC & PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=145ec05a217d8f879f29cfc5f83084be"
-SECTION = "libs"
-
-SRC_URI = " \
-    http://libbsd.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
-"
-
-SRC_URI[md5sum] = "cdee252ccff978b50ad2336278c506c9"
-SRC_URI[sha256sum] = "b2f644cae94a6e2fe109449c20ad79a0f6ee4faec2205b07eefa0020565e250a"
-
-inherit autotools pkgconfig
diff --git a/import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd_0.8.3.bb b/import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd_0.8.3.bb
new file mode 100644
index 0000000..92121ef
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd_0.8.3.bb
@@ -0,0 +1,43 @@
+# Copyright (C) 2013 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Library of utility functions from BSD systems"
+DESCRIPTION = "This library provides useful functions commonly found on BSD systems, \
+               and lacking on others like GNU systems, thus making it easier to port \
+               projects with strong BSD origins, without needing to embed the same \
+               code over and over again on each project."
+
+HOMEPAGE = "http://libbsd.freedesktop.org/wiki/"
+# There seems to be more licenses used in the code, I don't think we want to list them all here, complete list:
+# OE @ ~/projects/libbsd $ grep ^License: COPYING  | sort
+# License: BSD-2-clause
+# License: BSD-2-clause
+# License: BSD-2-clause-NetBSD
+# License: BSD-2-clause-author
+# License: BSD-2-clause-verbatim
+# License: BSD-3-clause
+# License: BSD-3-clause
+# License: BSD-3-clause
+# License: BSD-3-clause-Peter-Wemm
+# License: BSD-3-clause-Regents
+# License: BSD-4-clause-Christopher-G-Demetriou
+# License: BSD-4-clause-Niels-Provos
+# License: BSD-5-clause-Peter-Wemm
+# License: Beerware
+# License: Expat
+# License: ISC
+# License: ISC-Original
+# License: public-domain
+# License: public-domain-Colin-Plumb
+LICENSE = "BSD-4-Clause & ISC & PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0b9c89d861915b86655b96e5e32fa2aa"
+SECTION = "libs"
+
+SRC_URI = " \
+    http://libbsd.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+"
+
+SRC_URI[md5sum] = "e935c1bb6cc98a4a43cb1da22795493a"
+SRC_URI[sha256sum] = "934b634f4dfd865b6482650b8f522c70ae65c463529de8be907b53c89c3a34a8"
+
+inherit autotools pkgconfig
diff --git a/import-layers/yocto-poky/meta/recipes-support/libcap-ng/libcap-ng_0.7.7.bb b/import-layers/yocto-poky/meta/recipes-support/libcap-ng/libcap-ng_0.7.7.bb
deleted file mode 100644
index 5715467..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libcap-ng/libcap-ng_0.7.7.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "An alternate posix capabilities library"
-DESCRIPTION = "The libcap-ng library is intended to make programming \
-with POSIX capabilities much easier than the traditional libcap library."
-HOMEPAGE = "http://freecode.com/projects/libcap-ng"
-SECTION = "base"
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-		    file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
-
-SRC_URI = "http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-${PV}.tar.gz \
-           file://python.patch"
-
-inherit lib_package autotools pythonnative
-
-SRC_URI[md5sum] = "3d7d126b29e2869a0257c17c8b0d9b2e"
-SRC_URI[sha256sum] = "615549ce39b333f6b78baee0c0b4ef18bc726c6bf1cca123dfd89dd963f6d06b"
-
-DEPENDS += "swig-native python"
-
-EXTRA_OECONF += "--without-python3"
-
-EXTRA_OEMAKE += "PYLIBVER='python${PYTHON_BASEVERSION}' PYINC='${STAGING_INCDIR}/${PYLIBVER}'"
-
-PACKAGES += "${PN}-python"
-
-FILES_${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}"
-
-BBCLASSEXTEND = "native"
-
-do_install_append() {
-	# Moving libcap-ng to base_libdir
-	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
-		mkdir -p ${D}/${base_libdir}/
-		mv -f ${D}${libdir}/libcap-ng.so.* ${D}${base_libdir}/
-		relpath=${@os.path.relpath("${base_libdir}", "${libdir}")}
-		ln -sf ${relpath}/libcap-ng.so.0.0.0 ${D}${libdir}/libcap-ng.so
-	fi
-}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libcap-ng/libcap-ng_0.7.8.bb b/import-layers/yocto-poky/meta/recipes-support/libcap-ng/libcap-ng_0.7.8.bb
new file mode 100644
index 0000000..3583194
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libcap-ng/libcap-ng_0.7.8.bb
@@ -0,0 +1,37 @@
+SUMMARY = "An alternate posix capabilities library"
+DESCRIPTION = "The libcap-ng library is intended to make programming \
+with POSIX capabilities much easier than the traditional libcap library."
+HOMEPAGE = "http://freecode.com/projects/libcap-ng"
+SECTION = "base"
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+		    file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
+
+SRC_URI = "http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-${PV}.tar.gz \
+           file://python.patch"
+
+inherit lib_package autotools python3native
+
+SRC_URI[md5sum] = "0dece96644bd798020e170fbf7663802"
+SRC_URI[sha256sum] = "c21af997445cd4107a55d386f955c5ea6f6e96ead693e9151277c0ab5f97d05f"
+
+DEPENDS += "swig-native python3"
+
+EXTRA_OECONF += "--with-python --with-python3"
+EXTRA_OEMAKE += "PYLIBVER='python${PYTHON_BASEVERSION}${PYTHON_ABI}' PYINC='${STAGING_INCDIR}/${PYLIBVER}'"
+
+PACKAGES += "${PN}-python"
+
+FILES_${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}"
+
+BBCLASSEXTEND = "native"
+
+do_install_append() {
+	# Moving libcap-ng to base_libdir
+	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+		mkdir -p ${D}/${base_libdir}/
+		mv -f ${D}${libdir}/libcap-ng.so.* ${D}${base_libdir}/
+		relpath=${@os.path.relpath("${base_libdir}", "${libdir}")}
+		ln -sf ${relpath}/libcap-ng.so.0.0.0 ${D}${libdir}/libcap-ng.so
+	fi
+}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libcap/files/0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch b/import-layers/yocto-poky/meta/recipes-support/libcap/files/0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch
new file mode 100644
index 0000000..05c771a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libcap/files/0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch
@@ -0,0 +1,32 @@
+Ensure the XATTR_NAME_CAPS is defined when it is used
+
+Upstream-Status: Pending
+
+VFS_CAP_U32 can not ensure that XATTR_NAME_CAPS is defined, and failed to build
+libcap-native in old release, like CentOS release 6.7 (Final), with the blow
+error:
+     cap_file.c: In function ‘cap_get_fd’:
+     cap_file.c:199: error: ‘XATTR_NAME_CAPS’ undeclared (first use in this function)
+     cap_file.c:199: error: (Each undeclared identifier is reported only once
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ libcap/cap_file.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libcap/cap_file.c b/libcap/cap_file.c
+index 40756ea..e27ca80 100644
+--- a/libcap/cap_file.c
++++ b/libcap/cap_file.c
+@@ -25,7 +25,7 @@ extern int fremovexattr(int, const char *);
+ 
+ #include "libcap.h"
+ 
+-#ifdef VFS_CAP_U32
++#if defined (VFS_CAP_U32) && defined (XATTR_NAME_CAPS)
+ 
+ #if VFS_CAP_U32 != __CAP_BLKS
+ # error VFS representation of capabilities is not the same size as kernel
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libcap/libcap_2.24.bb b/import-layers/yocto-poky/meta/recipes-support/libcap/libcap_2.24.bb
deleted file mode 100644
index a701019..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libcap/libcap_2.24.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "Library for getting/setting POSIX.1e capabilities"
-HOMEPAGE = "http://sites.google.com/site/fullycapable/"
-
-# no specific GPL version required
-LICENSE = "BSD | GPLv2"
-LIC_FILES_CHKSUM = "file://License;md5=3f84fd6f29d453a56514cb7e4ead25f1"
-
-DEPENDS = "hostperl-runtime-native"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "d43ab9f680435a7fff35b4ace8d45b80"
-SRC_URI[sha256sum] = "cee4568f78dc851d726fc93f25f4ed91cc223b1fe8259daa4a77158d174e6c65"
-
-inherit lib_package
-
-# do NOT pass target cflags to host compilations
-#
-do_configure() {
-	# libcap uses := for compilers, fortunately, it gives us a hint
-	# on what should be replaced with ?=
-	sed -e 's,:=,?=,g' -i Make.Rules
-	sed -e 's,^BUILD_CFLAGS ?= $(.*CFLAGS),BUILD_CFLAGS := $(BUILD_CFLAGS),' -i Make.Rules
-
-	# disable gperf detection
-	sed -e '/shell gperf/cifeq (,yes)' -i libcap/Makefile
-}
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)}"
-PACKAGECONFIG_class-native ??= ""
-
-PACKAGECONFIG[attr] = "LIBATTR=yes,LIBATTR=no,attr"
-PACKAGECONFIG[pam] = "PAM_CAP=yes,PAM_CAP=no,libpam"
-
-EXTRA_OEMAKE = " \
-  INDENT=  \
-  lib=${@os.path.basename('${libdir}')} \
-  RAISE_SETFCAP=no \
-  DYNAMIC=yes \
-"
-
-EXTRA_OEMAKE_append_class-target = " SYSTEM_HEADERS=${STAGING_INCDIR}"
-
-# these are present in the libcap defaults, so include in our CFLAGS too
-CFLAGS += "-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
-
-do_compile() {
-	oe_runmake ${EXTRA_OECONF}
-}
-
-do_install() {
-	oe_runmake install \
-		${EXTRA_OECONF} \
-		DESTDIR="${D}" \
-		prefix="${prefix}" \
-		SBINDIR="${D}${sbindir}"
-}
-
-do_install_append() {
-	# Move the library to base_libdir
-	install -d ${D}${base_libdir}
-	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
-		mv ${D}${libdir}/libcap* ${D}${base_libdir}
-                if [ -d ${D}${libdir}/security ]; then
-			mv ${D}${libdir}/security ${D}${base_libdir}
-		fi
-	fi
-}
-
-FILES_${PN}-dev += "${base_libdir}/*.so"
-
-# pam files
-FILES_${PN} += "${base_libdir}/security/*.so"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libcap/libcap_2.25.bb b/import-layers/yocto-poky/meta/recipes-support/libcap/libcap_2.25.bb
new file mode 100644
index 0000000..7ced4be
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libcap/libcap_2.25.bb
@@ -0,0 +1,77 @@
+SUMMARY = "Library for getting/setting POSIX.1e capabilities"
+HOMEPAGE = "http://sites.google.com/site/fullycapable/"
+
+# no specific GPL version required
+LICENSE = "BSD | GPLv2"
+LIC_FILES_CHKSUM = "file://License;md5=3f84fd6f29d453a56514cb7e4ead25f1"
+
+DEPENDS = "hostperl-runtime-native"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz \
+           file://0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch \
+"
+SRC_URI[md5sum] = "6666b839e5d46c2ad33fc8aa2ceb5f77"
+SRC_URI[sha256sum] = "693c8ac51e983ee678205571ef272439d83afe62dd8e424ea14ad9790bc35162"
+
+inherit lib_package
+
+# do NOT pass target cflags to host compilations
+#
+do_configure() {
+	# libcap uses := for compilers, fortunately, it gives us a hint
+	# on what should be replaced with ?=
+	sed -e 's,:=,?=,g' -i Make.Rules
+	sed -e 's,^BUILD_CFLAGS ?= $(.*CFLAGS),BUILD_CFLAGS := $(BUILD_CFLAGS),' -i Make.Rules
+
+	# disable gperf detection
+	sed -e '/shell gperf/cifeq (,yes)' -i libcap/Makefile
+}
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)}"
+PACKAGECONFIG_class-native ??= ""
+
+PACKAGECONFIG[attr] = "LIBATTR=yes,LIBATTR=no,attr"
+PACKAGECONFIG[pam] = "PAM_CAP=yes,PAM_CAP=no,libpam"
+
+EXTRA_OEMAKE = " \
+  INDENT=  \
+  lib=${@os.path.basename('${libdir}')} \
+  RAISE_SETFCAP=no \
+  DYNAMIC=yes \
+"
+
+EXTRA_OEMAKE_append_class-target = " SYSTEM_HEADERS=${STAGING_INCDIR}"
+
+# these are present in the libcap defaults, so include in our CFLAGS too
+CFLAGS += "-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
+
+do_compile() {
+	oe_runmake ${PACKAGECONFIG_CONFARGS}
+}
+
+do_install() {
+	oe_runmake install \
+		${PACKAGECONFIG_CONFARGS} \
+		DESTDIR="${D}" \
+		prefix="${prefix}" \
+		SBINDIR="${sbindir}"
+}
+
+do_install_append() {
+	# Move the library to base_libdir
+	install -d ${D}${base_libdir}
+	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+		mv ${D}${libdir}/libcap* ${D}${base_libdir}
+                if [ -d ${D}${libdir}/security ]; then
+			mv ${D}${libdir}/security ${D}${base_libdir}
+		fi
+	fi
+}
+
+FILES_${PN}-dev += "${base_libdir}/*.so"
+
+# pam files
+FILES_${PN} += "${base_libdir}/security/*.so"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libevdev/libevdev_1.4.6.bb b/import-layers/yocto-poky/meta/recipes-support/libevdev/libevdev_1.4.6.bb
deleted file mode 100644
index c8163e3..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libevdev/libevdev_1.4.6.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Wrapper library for evdev devices"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libevdev/"
-SECTION = "libs"
-
-LICENSE = "MIT-X"
-LIC_FILES_CHKSUM = "file://COPYING;md5=75aae0d38feea6fda97ca381cb9132eb \
-                    file://libevdev/libevdev.h;endline=21;md5=7ff4f0b5113252c2f1a828e0bbad98d1"
-
-SRC_URI = "http://www.freedesktop.org/software/libevdev/${BP}.tar.xz"
-
-SRC_URI[md5sum] = "9b3f25bd8fb0f8efa4944d34668dddc0"
-SRC_URI[sha256sum] = "7b2ae1a0c7f9f7a96198ddc8fd167f090f233d6cbd8168b847e4f968445132d3"
-
-inherit autotools pkgconfig
diff --git a/import-layers/yocto-poky/meta/recipes-support/libevdev/libevdev_1.5.2.bb b/import-layers/yocto-poky/meta/recipes-support/libevdev/libevdev_1.5.2.bb
new file mode 100644
index 0000000..c76e1d7
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libevdev/libevdev_1.5.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Wrapper library for evdev devices"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libevdev/"
+SECTION = "libs"
+
+LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75aae0d38feea6fda97ca381cb9132eb \
+                    file://libevdev/libevdev.h;endline=21;md5=7ff4f0b5113252c2f1a828e0bbad98d1"
+
+SRC_URI = "http://www.freedesktop.org/software/libevdev/${BP}.tar.xz"
+
+SRC_URI[md5sum] = "96ad6edb5ce5c4428f1b183cc180ff8c"
+SRC_URI[sha256sum] = "5ee2163656a61f5703cb5c08a05c9471ffb7b640bfbe2c55194ea50d908f629b"
+
+inherit autotools pkgconfig
diff --git a/import-layers/yocto-poky/meta/recipes-support/libevent/libevent/run-ptest b/import-layers/yocto-poky/meta/recipes-support/libevent/libevent/run-ptest
index d521688..0241851 100644
--- a/import-layers/yocto-poky/meta/recipes-support/libevent/libevent/run-ptest
+++ b/import-layers/yocto-poky/meta/recipes-support/libevent/libevent/run-ptest
@@ -4,7 +4,7 @@
 for test in ./test/*
 do
 	$test
-	if [ $? -eq 0 ]
+	if [ $? -ne 0 ]
 	then
 		fail=1
 	fi
diff --git a/import-layers/yocto-poky/meta/recipes-support/libffi/libffi/0001-mips-fix-MIPS-softfloat-build-issue.patch b/import-layers/yocto-poky/meta/recipes-support/libffi/libffi/0001-mips-fix-MIPS-softfloat-build-issue.patch
new file mode 100644
index 0000000..61c9eb3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libffi/libffi/0001-mips-fix-MIPS-softfloat-build-issue.patch
@@ -0,0 +1,177 @@
+From 655e82c92d5c3875aee04322f1993d6b0774a7bf Mon Sep 17 00:00:00 2001
+From: Yousong Zhou <yszhou4tech@gmail.com>
+Date: Mon, 15 Aug 2016 15:00:13 +0800
+Subject: [PATCH] mips: fix MIPS softfloat build issue
+
+The patch for o32.S is taken from OpenWrt packages repo 3a7a4bf "libffi:
+fix MIPS softfloat build issue with current binutils"
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
+---
+Upstream-Status: Backport [https://github.com/libffi/libffi/commit/2ded2a4f494165c93293afc14ab0be1243cf8c49]
+ src/mips/n32.S | 17 +++++++++++++++++
+ src/mips/o32.S | 17 +++++++++++++++++
+ 2 files changed, 34 insertions(+)
+
+diff --git a/src/mips/n32.S b/src/mips/n32.S
+index c6985d3..8f25994 100644
+--- a/src/mips/n32.S
++++ b/src/mips/n32.S
+@@ -107,6 +107,16 @@ loadregs:
+ 
+ 	REG_L	t6, 3*FFI_SIZEOF_ARG($fp)  # load the flags word into t6.
+ 
++#ifdef __mips_soft_float
++	REG_L	a0, 0*FFI_SIZEOF_ARG(t9)
++	REG_L	a1, 1*FFI_SIZEOF_ARG(t9)
++	REG_L	a2, 2*FFI_SIZEOF_ARG(t9)
++	REG_L	a3, 3*FFI_SIZEOF_ARG(t9)
++	REG_L	a4, 4*FFI_SIZEOF_ARG(t9)
++	REG_L	a5, 5*FFI_SIZEOF_ARG(t9)
++	REG_L	a6, 6*FFI_SIZEOF_ARG(t9)
++	REG_L	a7, 7*FFI_SIZEOF_ARG(t9)
++#else
+ 	and	t4, t6, ((1<<FFI_FLAG_BITS)-1)
+ 	REG_L	a0, 0*FFI_SIZEOF_ARG(t9)
+ 	beqz	t4, arg1_next
+@@ -193,6 +203,7 @@ arg7_next:
+ arg8_doublep:	
+  	l.d	$f19, 7*FFI_SIZEOF_ARG(t9)	
+ arg8_next:	
++#endif
+ 
+ callit:		
+ 	# Load the function pointer
+@@ -214,6 +225,7 @@ retint:
+ 	b	epilogue
+ 
+ retfloat:
++#ifndef __mips_soft_float
+ 	bne     t6, FFI_TYPE_FLOAT, retdouble
+ 	jal	t9
+ 	REG_L	t4, 4*FFI_SIZEOF_ARG($fp)
+@@ -272,6 +284,7 @@ retstruct_f_d:
+ 	s.s	$f0, 0(t4)
+ 	s.d	$f2, 8(t4)
+ 	b	epilogue
++#endif
+ 
+ retstruct_d_soft:
+ 	bne	t6, FFI_TYPE_STRUCT_D_SOFT, retstruct_f_soft
+@@ -429,6 +442,7 @@ ffi_closure_N32:
+ 	REG_S	a6, A6_OFF2($sp)
+ 	REG_S	a7, A7_OFF2($sp)
+ 
++#ifndef __mips_soft_float
+ 	# Store all possible float/double registers.
+ 	s.d	$f12, F12_OFF2($sp)
+ 	s.d	$f13, F13_OFF2($sp)
+@@ -438,6 +452,7 @@ ffi_closure_N32:
+ 	s.d	$f17, F17_OFF2($sp)
+ 	s.d	$f18, F18_OFF2($sp)
+ 	s.d	$f19, F19_OFF2($sp)
++#endif
+ 
+ 	# Call ffi_closure_mips_inner_N32 to do the real work.
+ 	LA	t9, ffi_closure_mips_inner_N32
+@@ -458,6 +473,7 @@ cls_retint:
+ 	b	cls_epilogue
+ 
+ cls_retfloat:
++#ifndef __mips_soft_float
+ 	bne     v0, FFI_TYPE_FLOAT, cls_retdouble
+ 	l.s	$f0, V0_OFF2($sp)
+ 	b	cls_epilogue
+@@ -500,6 +516,7 @@ cls_retstruct_f_d:
+ 	l.s	$f0, V0_OFF2($sp)
+ 	l.d	$f2, V1_OFF2($sp)
+ 	b	cls_epilogue
++#endif
+ 	
+ cls_retstruct_small2:	
+ 	REG_L	v0, V0_OFF2($sp)
+diff --git a/src/mips/o32.S b/src/mips/o32.S
+index eb27981..429dd0a 100644
+--- a/src/mips/o32.S
++++ b/src/mips/o32.S
+@@ -82,13 +82,16 @@ sixteen:
+ 		
+ 	ADDU	$sp, 4 * FFI_SIZEOF_ARG		# adjust $sp to new args
+ 
++#ifndef __mips_soft_float
+ 	bnez	t0, pass_d			# make it quick for int
++#endif
+ 	REG_L	a0, 0*FFI_SIZEOF_ARG($sp)	# just go ahead and load the
+ 	REG_L	a1, 1*FFI_SIZEOF_ARG($sp)	# four regs.
+ 	REG_L	a2, 2*FFI_SIZEOF_ARG($sp)
+ 	REG_L	a3, 3*FFI_SIZEOF_ARG($sp)
+ 	b	call_it
+ 
++#ifndef __mips_soft_float
+ pass_d:
+ 	bne	t0, FFI_ARGS_D, pass_f
+ 	l.d	$f12, 0*FFI_SIZEOF_ARG($sp)	# load $fp regs from args
+@@ -130,6 +133,7 @@ pass_f_d:
+  #	bne	t0, FFI_ARGS_F_D, call_it
+ 	l.s	$f12, 0*FFI_SIZEOF_ARG($sp)	# load $fp regs from args
+ 	l.d	$f14, 2*FFI_SIZEOF_ARG($sp)	# passing double and float
++#endif
+ 
+ call_it:	
+ 	# Load the function pointer
+@@ -158,14 +162,23 @@ retfloat:
+ 	bne     t2, FFI_TYPE_FLOAT, retdouble
+ 	jalr	t9
+ 	REG_L	t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
++#ifndef __mips_soft_float
+ 	s.s	$f0, 0(t0)
++#else
++	REG_S	v0, 0(t0)
++#endif
+ 	b	epilogue
+ 
+ retdouble:	
+ 	bne	t2, FFI_TYPE_DOUBLE, noretval
+ 	jalr	t9
+ 	REG_L	t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
++#ifndef __mips_soft_float
+ 	s.d	$f0, 0(t0)
++#else
++	REG_S	v1, 4(t0)
++	REG_S	v0, 0(t0)
++#endif
+ 	b	epilogue
+ 	
+ noretval:	
+@@ -261,9 +274,11 @@ $LCFI7:
+ 	li	$13, 1		# FFI_O32
+ 	bne	$16, $13, 1f	# Skip fp save if FFI_O32_SOFT_FLOAT
+ 	
++#ifndef __mips_soft_float
+ 	# Store all possible float/double registers.
+ 	s.d	$f12, FA_0_0_OFF2($fp)
+ 	s.d	$f14, FA_1_0_OFF2($fp)
++#endif
+ 1:	
+ 	# Call ffi_closure_mips_inner_O32 to do the work.
+ 	la	t9, ffi_closure_mips_inner_O32
+@@ -281,6 +296,7 @@ $LCFI7:
+ 	li	$13, 1		# FFI_O32
+ 	bne	$16, $13, 1f	# Skip fp restore if FFI_O32_SOFT_FLOAT
+ 
++#ifndef __mips_soft_float
+ 	li	$9, FFI_TYPE_FLOAT
+ 	l.s	$f0, V0_OFF2($fp)
+ 	beq	$8, $9, closure_done
+@@ -288,6 +304,7 @@ $LCFI7:
+ 	li	$9, FFI_TYPE_DOUBLE
+ 	l.d	$f0, V0_OFF2($fp)
+ 	beq	$8, $9, closure_done
++#endif
+ 1:	
+ 	REG_L	$3, V1_OFF2($fp)
+ 	REG_L	$2, V0_OFF2($fp)
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libffi/libffi_3.2.1.bb b/import-layers/yocto-poky/meta/recipes-support/libffi/libffi_3.2.1.bb
index 72e25fb..43eee8e 100644
--- a/import-layers/yocto-poky/meta/recipes-support/libffi/libffi_3.2.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/libffi/libffi_3.2.1.bb
@@ -12,6 +12,7 @@
 SRC_URI = "ftp://sourceware.org/pub/libffi/${BP}.tar.gz \
            file://not-win32.patch \
 	   file://0001-mips-Use-compiler-internal-define-for-linux.patch \
+           file://0001-mips-fix-MIPS-softfloat-build-issue.patch \
 	   "
 
 SRC_URI[md5sum] = "83b89587607e3eb65c70d361f13bab43"
@@ -23,4 +24,8 @@
 
 FILES_${PN}-dev += "${libdir}/libffi-${PV}"
 
+# Doesn't compile in MIPS16e mode due to use of hand-written
+# assembly
+MIPS_INSTRUCTION_SET = "mips"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libfm/libfm_1.2.4.bb b/import-layers/yocto-poky/meta/recipes-support/libfm/libfm_1.2.4.bb
index 866b11a..2218f9c 100644
--- a/import-layers/yocto-poky/meta/recipes-support/libfm/libfm_1.2.4.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/libfm/libfm_1.2.4.bb
@@ -9,7 +9,7 @@
 
 
 SECTION = "x11/libs"
-DEPENDS = "glib-2.0 pango gtk+ menu-cache intltool-native libexif libfm-extra gettext-native"
+DEPENDS = "glib-2.0 pango gtk+3 menu-cache intltool-native libexif libfm-extra gettext-native"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz"
 
@@ -17,7 +17,9 @@
 SRC_URI[sha256sum] = "7804f6f28cb3d1bc8ffb3151ab7ff0c063b27c5f9b06c682eb903e01cf25502f"
 
 inherit autotools pkgconfig gtk-doc distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+EXTRA_OECONF = "--with-gtk=3"
 
 do_configure[dirs] =+ "${S}/m4"
 
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/add-pkgconfig-support.patch b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/add-pkgconfig-support.patch
index 67ddfc6..69589f5 100644
--- a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/add-pkgconfig-support.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/add-pkgconfig-support.patch
@@ -4,61 +4,32 @@
 
 RP 2014/5/22
 
-Index: libgcrypt-1.2.4/configure.ac
-===================================================================
---- libgcrypt-1.2.4.orig/configure.ac	2008-03-19 22:14:50.000000000 +0000
-+++ libgcrypt-1.2.4/configure.ac	2008-03-19 22:14:58.000000000 +0000
-@@ -807,6 +807,7 @@
+Rebase to 1.7.0
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac        |  1 +
+ src/libgcrypt.m4    | 71 +++--------------------------------------------------
+ src/libgcrypt.pc.in | 33 +++++++++++++++++++++++++
+ 3 files changed, 38 insertions(+), 67 deletions(-)
+ create mode 100644 src/libgcrypt.pc.in
+
+diff --git a/configure.ac b/configure.ac
+index f683e21..566e1c8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2314,6 +2314,7 @@ random/Makefile
  doc/Makefile
  src/Makefile
  src/gcrypt.h
 +src/libgcrypt.pc
  src/libgcrypt-config
+ src/versioninfo.rc
  tests/Makefile
- w32-dll/Makefile
-Index: libgcrypt-1.2.4/src/libgcrypt.pc.in
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ libgcrypt-1.2.4/src/libgcrypt.pc.in	2008-03-19 22:14:58.000000000 +0000
-@@ -0,0 +1,33 @@
-+# Process this file with autoconf to produce a pkg-config metadata file.
-+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation
-+# Author: Simon Josefsson
-+#
-+# This file is free software; as a special exception the author gives
-+# unlimited permission to copy and/or distribute it, with or without
-+# modifications, as long as this notice is preserved.
-+#
-+# This file is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+
-+# API info
-+api_version=@LIBGCRYPT_CONFIG_API_VERSION@
-+host=@LIBGCRYPT_CONFIG_HOST@
-+
-+# Misc information.
-+symmetric_ciphers=@LIBGCRYPT_CIPHERS@
-+asymmetric_ciphers=@LIBGCRYPT_PUBKEY_CIPHERS@
-+digests=@LIBGCRYPT_DIGESTS@
-+
-+Name: libgcrypt
-+Description: GNU crypto library
-+URL: http://www.gnupg.org
-+Version: @VERSION@
-+Libs: -L${libdir} -lgcrypt
-+Libs.private: -L${libdir} -lgpg-error
-+Cflags: -I${includedir} 
-Index: libgcrypt-1.6.1/src/libgcrypt.m4
-===================================================================
---- libgcrypt-1.6.1.orig/src/libgcrypt.m4	2013-12-16 17:44:32.000000000 +0000
-+++ libgcrypt-1.6.1/src/libgcrypt.m4	2014-05-13 21:25:37.478389833 +0000
-@@ -22,17 +22,7 @@
+diff --git a/src/libgcrypt.m4 b/src/libgcrypt.m4
+index c67cfec..4ea5f2c 100644
+--- a/src/libgcrypt.m4
++++ b/src/libgcrypt.m4
+@@ -29,30 +29,6 @@ dnl is added to the gpg_config_script_warn variable.
  dnl
  AC_DEFUN([AM_PATH_LIBGCRYPT],
  [ AC_REQUIRE([AC_CANONICAL_HOST])
@@ -66,17 +37,30 @@
 -            AC_HELP_STRING([--with-libgcrypt-prefix=PFX],
 -                           [prefix where LIBGCRYPT is installed (optional)]),
 -     libgcrypt_config_prefix="$withval", libgcrypt_config_prefix="")
--  if test x$libgcrypt_config_prefix != x ; then
--     if test x${LIBGCRYPT_CONFIG+set} != xset ; then
--        LIBGCRYPT_CONFIG=$libgcrypt_config_prefix/bin/libgcrypt-config
+-  if test x"${LIBGCRYPT_CONFIG}" = x ; then
+-     if test x"${libgcrypt_config_prefix}" != x ; then
+-        LIBGCRYPT_CONFIG="${libgcrypt_config_prefix}/bin/libgcrypt-config"
+-     else
+-       case "${SYSROOT}" in
+-         /*)
+-           if test -x "${SYSROOT}/bin/libgcrypt-config" ; then
+-             LIBGCRYPT_CONFIG="${SYSROOT}/bin/libgcrypt-config"
+-           fi
+-           ;;
+-         '')
+-           ;;
+-          *)
+-           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
+-           ;;
+-       esac
 -     fi
 -  fi
- 
--  AC_PATH_TOOL(LIBGCRYPT_CONFIG, libgcrypt-config, no)
+-
+-  AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
    tmp=ifelse([$1], ,1:1.2.0,$1)
    if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
       req_libgcrypt_api=`echo "$tmp"     | sed 's/\(.*\):\(.*\)/\1/'`
-@@ -42,48 +32,13 @@
+@@ -62,48 +38,13 @@ AC_DEFUN([AM_PATH_LIBGCRYPT],
       min_libgcrypt_version="$tmp"
    fi
  
@@ -128,7 +112,7 @@
          if test "$tmp" -gt 0 ; then
             AC_MSG_CHECKING([LIBGCRYPT API version])
             if test "$req_libgcrypt_api" -eq "$tmp" ; then
-@@ -96,10 +51,8 @@
+@@ -116,10 +57,8 @@ AC_DEFUN([AM_PATH_LIBGCRYPT],
       fi
    fi
    if test $ok = yes; then
@@ -140,7 +124,7 @@
      if test x"$libgcrypt_config_host" != xnone ; then
        if test x"$libgcrypt_config_host" != x"$host" ; then
    AC_MSG_WARN([[
-@@ -113,8 +66,6 @@
+@@ -134,8 +73,6 @@ AC_DEFUN([AM_PATH_LIBGCRYPT],
        fi
      fi
    else
@@ -149,3 +133,45 @@
      ifelse([$3], , :, [$3])
    fi
    AC_SUBST(LIBGCRYPT_CFLAGS)
+diff --git a/src/libgcrypt.pc.in b/src/libgcrypt.pc.in
+new file mode 100644
+index 0000000..2fc8f53
+--- /dev/null
++++ b/src/libgcrypt.pc.in
+@@ -0,0 +1,33 @@
++# Process this file with autoconf to produce a pkg-config metadata file.
++# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation
++# Author: Simon Josefsson
++#
++# This file is free software; as a special exception the author gives
++# unlimited permission to copy and/or distribute it, with or without
++# modifications, as long as this notice is preserved.
++#
++# This file is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
++# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++# API info
++api_version=@LIBGCRYPT_CONFIG_API_VERSION@
++host=@LIBGCRYPT_CONFIG_HOST@
++
++# Misc information.
++symmetric_ciphers=@LIBGCRYPT_CIPHERS@
++asymmetric_ciphers=@LIBGCRYPT_PUBKEY_CIPHERS@
++digests=@LIBGCRYPT_DIGESTS@
++
++Name: libgcrypt
++Description: GNU crypto library
++URL: http://www.gnupg.org
++Version: @VERSION@
++Libs: -L${libdir} -lgcrypt
++Libs.private: -L${libdir} -lgpg-error
++Cflags: -I${includedir} 
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/fix-undefined-reference-to-pthread.patch b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/fix-undefined-reference-to-pthread.patch
new file mode 100644
index 0000000..e7de8ba
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/fix-undefined-reference-to-pthread.patch
@@ -0,0 +1,27 @@
+From cc0e2b403d33892963513a3ba98e4ae5a05a4d3c Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Sun, 12 Jun 2016 04:44:29 -0400
+Subject: [PATCH] tests/Makefile.am: fix undefined reference to `pthread_create'
+
+Add missing '-lpthread' to CFLAGS
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index d462f30..bef6dd7 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -62,4 +62,4 @@ EXTRA_DIST = README rsa-16k.key cavs_tests.sh cavs_driver.pl \
+ 
+ LDADD = $(standard_ldadd) $(GPG_ERROR_LIBS)
+ t_lock_LDADD = $(standard_ldadd) $(GPG_ERROR_MT_LIBS)
+-t_lock_CFLAGS = $(GPG_ERROR_MT_CFLAGS)
++t_lock_CFLAGS = $(GPG_ERROR_MT_CFLAGS) -lpthread
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt.inc b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt.inc
index 5478253..15805cd 100644
--- a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt.inc
+++ b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt.inc
@@ -14,10 +14,12 @@
 
 DEPENDS = "libgpg-error libcap"
 
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-${PV}.tar.gz \
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.gz \
            file://add-pkgconfig-support.patch \
            file://libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch \
            file://fix-ICE-failure-on-mips-with-option-O-and-g.patch \
+           file://fix-undefined-reference-to-pthread.patch \
 "
 
 BINCONFIG = "${bindir}/libgcrypt-config"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt_1.6.5.bb b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt_1.6.5.bb
deleted file mode 100644
index 717a23f..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt_1.6.5.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require libgcrypt.inc
-
-SRC_URI[md5sum] = "f24fcb684932d4b5ed85f2f05cb1d9f8"
-SRC_URI[sha256sum] = "202bf109ccf2d614565c849f3e5687b94cde972167b35261e094252367627bc6"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt_1.7.3.bb b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt_1.7.3.bb
new file mode 100644
index 0000000..ddd7c53
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libgcrypt/libgcrypt_1.7.3.bb
@@ -0,0 +1,4 @@
+require libgcrypt.inc
+
+SRC_URI[md5sum] = "bb5b00cb70b1215833857fd690080fbb"
+SRC_URI[sha256sum] = "c98470cf6a781f2af4bdfda710ad39f0f54b5044e8c43b878d4005737d6c213f"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error/0001-libgpg-error-Add-nios2-support.patch b/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error/0001-libgpg-error-Add-nios2-support.patch
deleted file mode 100644
index dab1c13..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error/0001-libgpg-error-Add-nios2-support.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From b2af652f43991e4ce6297917da542a9eb5135939 Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Thu, 17 Sep 2015 03:28:06 +0200
-Subject: [PATCH] libgpg-error: Add nios2 support
-
-Add configuration for the NIOS2 processor.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Submitted
----
- src/syscfg/lock-obj-pub.nios2-unknown-linux-gnu.h | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
- create mode 100644 src/syscfg/lock-obj-pub.nios2-unknown-linux-gnu.h
-
-diff --git a/src/syscfg/lock-obj-pub.nios2-unknown-linux-gnu.h b/src/syscfg/lock-obj-pub.nios2-unknown-linux-gnu.h
-new file mode 100644
-index 0000000..3a24571
---- /dev/null
-+++ b/src/syscfg/lock-obj-pub.nios2-unknown-linux-gnu.h
-@@ -0,0 +1,23 @@
-+## lock-obj-pub.nios2-unknown-linux-gnu.h
-+## File created by gen-posix-lock-obj - DO NOT EDIT
-+## To be included by mkheader into gpg-error.h
-+
-+typedef struct
-+{
-+  long _vers;
-+  union {
-+    volatile char _priv[24];
-+    long _x_align;
-+    long *_xp_align;
-+  } u;
-+} gpgrt_lock_t;
-+
-+#define GPGRT_LOCK_INITIALIZER {1,{{0,0,0,0,0,0,0,0, \
-+                                    0,0,0,0,0,0,0,0, \
-+                                    0,0,0,0,0,0,0,0}}}
-+##
-+## Local Variables:
-+## mode: c
-+## buffer-read-only: t
-+## End:
-+##
--- 
-2.5.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error_1.21.bb b/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error_1.21.bb
deleted file mode 100644
index 0dd1602..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error_1.21.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Small library that defines common error values for all GnuPG components"
-HOMEPAGE = "http://www.gnupg.org/related_software/libgpg-error/"
-BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
-                    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-                    file://src/gpg-error.h.in;endline=23;md5=93d3155af141ae3b369a5d09ca9d6234 \
-                    file://src/init.c;endline=20;md5=8f5a9b59634f4aebcd0ec9d3ebd53bfe"
-
-
-SECTION = "libs"
-
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-${PV}.tar.bz2 \
-           file://pkgconfig.patch \
-	   file://0001-libgpg-error-Add-nios2-support.patch \
-	  "
-SRC_URI[md5sum] = "ab0b5aba6d0a185b41d07bda804fd8b2"
-SRC_URI[sha256sum] = "b7dbdb3cad63a740e9f0c632a1da32d4afdb694ec86c8625c98ea0691713b84d"
-
-BINCONFIG = "${bindir}/gpg-error-config"
-
-inherit autotools binconfig-disabled pkgconfig gettext
-CPPFLAGS += "-P"
-do_compile_prepend() {
-	TARGET_FILE=linux-gnu
-	if [ ${TARGET_OS} != "linux" ]; then
-		TARGET_FILE=${TARGET_OS}
-	fi
-
-	case ${TARGET_ARCH} in
-	  aarch64_be) TUPLE=aarch64-unknown-linux-gnu ;;
-	  arm)	      TUPLE=arm-unknown-linux-gnueabi ;;
-	  armeb)      TUPLE=arm-unknown-linux-gnueabi ;;
-	  i586|i686)  TUPLE=i686-pc-linux-gnu ;;
-	  mips64el)   TUPLE=mipsel-unknown-linux-gnu ;;
-	  mips64)     TUPLE=mips-unknown-linux-gnu ;;
-	  x86_64)     TUPLE=x86_64-pc-linux-gnu ;;
-	  *)          TUPLE=${TARGET_ARCH}-unknown-linux-gnu ;; 
-	esac
-
-	cp ${S}/src/syscfg/lock-obj-pub.$TUPLE.h \
-	  ${S}/src/syscfg/lock-obj-pub.$TARGET_FILE.h
-}
-
-do_install_append() {
-	# we don't have common lisp in OE
-	rm -rf "${D}${datadir}/common-lisp/"
-}
-
-FILES_${PN}-dev += "${bindir}/gpg-error"
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error_1.24.bb b/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error_1.24.bb
new file mode 100644
index 0000000..84a882a
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libgpg-error/libgpg-error_1.24.bb
@@ -0,0 +1,53 @@
+SUMMARY = "Small library that defines common error values for all GnuPG components"
+HOMEPAGE = "http://www.gnupg.org/related_software/libgpg-error/"
+BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+                    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://src/gpg-error.h.in;endline=23;md5=cf562f60b9dba7df20d6ee3f97ea1d5a \
+                    file://src/init.c;endline=20;md5=872b2389fe9bae7ffb80d2b91225afbc"
+
+
+SECTION = "libs"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/libgpg-error/libgpg-error-${PV}.tar.bz2 \
+           file://pkgconfig.patch \
+	  "
+SRC_URI[md5sum] = "feb42198c0aaf3b28eabe8f41a34b983"
+SRC_URI[sha256sum] = "9268e1cc487de5e6e4460fca612a06e4f383072ac43ae90603e5e46783d3e540"
+
+BINCONFIG = "${bindir}/gpg-error-config"
+
+inherit autotools binconfig-disabled pkgconfig gettext
+CPPFLAGS += "-P"
+do_compile_prepend() {
+	TARGET_FILE=linux-gnu
+	if [ ${TARGET_OS} != "linux" ]; then
+		TARGET_FILE=${TARGET_OS}
+	fi
+
+	case ${TARGET_ARCH} in
+	  aarch64_be) TUPLE=aarch64-unknown-linux-gnu ;;
+	  arm)	      TUPLE=arm-unknown-linux-gnueabi ;;
+	  armeb)      TUPLE=arm-unknown-linux-gnueabi ;;
+	  i586|i686)  TUPLE=i686-pc-linux-gnu ;;
+	  mips*el)    TUPLE=mipsel-unknown-linux-gnu ;;
+	  mips*)      TUPLE=mips-unknown-linux-gnu ;;
+	  x86_64)     TUPLE=x86_64-pc-linux-gnu ;;
+	  *)          TUPLE=${TARGET_ARCH}-unknown-linux-gnu ;; 
+	esac
+
+	cp ${S}/src/syscfg/lock-obj-pub.$TUPLE.h \
+	  ${S}/src/syscfg/lock-obj-pub.$TARGET_FILE.h
+}
+
+do_install_append() {
+	# we don't have common lisp in OE
+	rm -rf "${D}${datadir}/common-lisp/"
+}
+
+FILES_${PN}-dev += "${bindir}/gpg-error"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libical/libical/0001-CMakeLists.txt-libical.pc.in-fix-iculibs-remove-full.patch b/import-layers/yocto-poky/meta/recipes-support/libical/libical/0001-CMakeLists.txt-libical.pc.in-fix-iculibs-remove-full.patch
new file mode 100644
index 0000000..6db75f5
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libical/libical/0001-CMakeLists.txt-libical.pc.in-fix-iculibs-remove-full.patch
@@ -0,0 +1,44 @@
+From 1a41069c0dc054e59cd76fc3d8cf7cc2a78b5e8d Mon Sep 17 00:00:00 2001
+From: Allen Winter <allen.winter@kdab.com>
+Date: Sat, 3 Sep 2016 16:56:29 -0400
+Subject: [PATCH] CMakeLists.txt, libical.pc.in - fix iculibs (remove full path) ISSUE: 227
+
+Upstream-Status: Backport
+
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+----
+diff -Naur libical-2.0.0-orig/CMakeLists.txt libical-2.0.0/CMakeLists.txt
+--- libical-2.0.0-orig/CMakeLists.txt	2016-09-08 18:05:06.166049345 +0300
++++ libical-2.0.0/CMakeLists.txt	2016-09-08 18:05:45.201561334 +0300
+@@ -128,6 +128,7 @@
+ #  RSCALE info at http://tools.ietf.org/html/rfc7529
+ find_package(ICU)
+ if(ICU_FOUND)
++  set(ICUUC_LIBS "-licuuc") #for libical.pc
+   set(HAVE_LIBICU 1)
+   if(ICU_MAJOR_VERSION VERSION_GREATER 50)
+     set(HAVE_ICU_DANGI TRUE)
+@@ -137,6 +138,7 @@
+ endif()
+ if(ICU_I18N_FOUND)
+   set(HAVE_LIBICU_I18N 1)
++  set(ICUI18N_LIBS "-licui18n") #for libical.pc
+ endif()
+ 
+ # MSVC specific definitions
+diff -Naur libical-2.0.0-orig/libical.pc.in libical-2.0.0/libical.pc.in
+--- libical-2.0.0-orig/libical.pc.in	2015-12-28 23:44:53.000000000 +0200
++++ libical-2.0.0/libical.pc.in	2016-09-08 18:09:12.991963597 +0300
+@@ -3,10 +3,10 @@
+ libdir=@libdir@
+ includedir=@includedir@
+ threadslib=@PTHREAD_LIBS@
+-iculib=@ICU_LIBRARIES@ @ICU_I18N_LIBRARIES@
++iculibs=@ICUUC_LIBS@ @ICUI18N_LIBS@
+ 
+ Name: libical
+ Description: An implementation of basic iCAL protocols
+ Version: @VERSION@
+-Libs: -L${libdir} -lical -licalss -licalvcal ${threadslib} ${iculib}
++Libs: -L${libdir} -lical -licalss -licalvcal ${threadslib} ${iculibs}
+ Cflags: -I${includedir}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libical/libical_2.0.0.bb b/import-layers/yocto-poky/meta/recipes-support/libical/libical_2.0.0.bb
index 1042e6f..d4fe868 100644
--- a/import-layers/yocto-poky/meta/recipes-support/libical/libical_2.0.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/libical/libical_2.0.0.bb
@@ -8,6 +8,7 @@
 
 SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
            file://Remove-cmake-check-for-Perl.patch \
+           file://0001-CMakeLists.txt-libical.pc.in-fix-iculibs-remove-full.patch \
            "
 DEPENDS = "icu"
 
@@ -15,13 +16,6 @@
 SRC_URI[sha256sum] = "654c11f759c19237be39f6ad401d917e5a05f36f1736385ed958e60cf21456da"
 UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
 
-inherit cmake
+inherit cmake pkgconfig
 
 FILES_${PN}-dev += "${libdir}/cmake/*"
-
-#
-# Turn specific library paths in the pkgconfig file into standard library entries
-#
-do_install_append () {
-	sed -i -e "s#${STAGING_LIBDIR}/lib\([a-z0-9]*\)\.so#-l\1#g" ${D}${libdir}/pkgconfig/libical.pc
-}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libksba/libksba_1.3.3.bb b/import-layers/yocto-poky/meta/recipes-support/libksba/libksba_1.3.3.bb
deleted file mode 100644
index bc21164..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libksba/libksba_1.3.3.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Easy API to create and parse X.509 and CMS related objects"
-HOMEPAGE = "http://www.gnupg.org/related_software/libksba/"
-LICENSE = "GPLv2+ | LGPLv3+ | GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fd541d83f75d038c4e0617b672ed8bda \
-                    file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.GPLv3;md5=2f31b266d3440dd7ee50f92cf67d8e6c \
-                    file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
-                   "
-
-DEPENDS = "libgpg-error"
-
-BINCONFIG = "${bindir}/ksba-config"
-
-inherit autotools binconfig-disabled pkgconfig texinfo
-
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/${BPN}/${BPN}-${PV}.tar.bz2 \
-           file://ksba-add-pkgconfig-support.patch"
-
-SRC_URI[md5sum] = "a5dd3c57fca254935f5cf8db26e39065"
-SRC_URI[sha256sum] = "0c7f5ffe34d0414f6951d9880a46fcc2985c487f7c36369b9f11ad41131c7786"
-
-do_configure_prepend () {
-	# Else these could be used in preference to those in aclocal-copy
-	rm -f ${S}/m4/gpg-error.m4
-}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libksba/libksba_1.3.4.bb b/import-layers/yocto-poky/meta/recipes-support/libksba/libksba_1.3.4.bb
new file mode 100644
index 0000000..e68255c
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libksba/libksba_1.3.4.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Easy API to create and parse X.509 and CMS related objects"
+HOMEPAGE = "http://www.gnupg.org/related_software/libksba/"
+LICENSE = "GPLv2+ | LGPLv3+ | GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fd541d83f75d038c4e0617b672ed8bda \
+                    file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.GPLv3;md5=2f31b266d3440dd7ee50f92cf67d8e6c \
+                    file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+                   "
+
+DEPENDS = "libgpg-error"
+
+BINCONFIG = "${bindir}/ksba-config"
+
+inherit autotools binconfig-disabled pkgconfig texinfo
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://ksba-add-pkgconfig-support.patch"
+
+SRC_URI[md5sum] = "2bfc3d69053db7b6983b5627706033f4"
+SRC_URI[sha256sum] = "f6c2883cebec5608692d8730843d87f237c0964d923bbe7aa89c05f20558ad4f"
+
+do_configure_prepend () {
+	# Else these could be used in preference to those in aclocal-copy
+	rm -f ${S}/m4/gpg-error.m4
+}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0001-lib-add-utility-function-nl_strerror_l.patch b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0001-lib-add-utility-function-nl_strerror_l.patch
new file mode 100644
index 0000000..b734028
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0001-lib-add-utility-function-nl_strerror_l.patch
@@ -0,0 +1,146 @@
+From 683f27fbb68ca2028a7b3468f17164d484df2759 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Thu, 25 Aug 2016 13:14:59 +0100
+Subject: [PATCH 1/3] lib: add utility function nl_strerror_l()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+libnl currently uses strerror_r() throughout, but this is
+problematic because there is a non-standard GNU version
+implemented in glibc, and the standard POSIX version, which
+differ in signature. When using glibc, one can choose
+between the two versions using feature test macros
+_GNU_SOURCE and _POSIX_C_SOURCE.
+
+Given libnl is built using the former, we always get the
+glibc special version, and all code so far has been written
+for that non-standard version.
+
+Other C libraries like musl on the other hand only try
+to be posix compliant, and only ever provide the posix
+version of strerror_r(), which has a different signature.
+
+The alternative is to use strerror_l() rather than
+strerror_r() http://austingroupbugs.net/view.php?id=655
+- this will avoid the non-confirming versions issue
+- strerror_l() is now recommended by POSIX to replace
+  strerror_r() usage
+
+So rather than changing all uses of strerror_r() to be in
+line with posix, we are going to switch to the recommended
+interface strerror_l().
+
+Since strerror_l() is slightly more difficuly to use, we
+add a little (private) wrapper that we can use from all
+current callsites of strerror_r().
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+Reviewed-by: Stephane Ayotte <sayotte@tycoint.com>
+Signed-off-by: Thomas Haller <thaller@redhat.com>
+---
+Upstream-Status: Backport https://github.com/thom311/libnl/commit/683f27fbb68ca2028a7b3468f17164d484df2759
+ include/Makefile.am             |  1 +
+ include/netlink-private/utils.h | 17 +++++++++++++++++
+ lib/utils.c                     | 24 ++++++++++++++++++++++++
+ libnl-3.sym                     |  5 +++++
+ 4 files changed, 47 insertions(+)
+ create mode 100644 include/netlink-private/utils.h
+
+diff --git a/include/Makefile.am b/include/Makefile.am
+index 804e984..f8b977a 100644
+--- a/include/Makefile.am
++++ b/include/Makefile.am
+@@ -166,6 +166,7 @@ noinst_HEADERS = \
+ 	netlink-private/socket.h \
+ 	netlink-private/tc.h \
+ 	netlink-private/types.h \
++	netlink-private/utils.h \
+ 	netlink-private/cache-api.h \
+ 	netlink-private/object-api.h \
+ 	netlink-private/route/link/api.h \
+diff --git a/include/netlink-private/utils.h b/include/netlink-private/utils.h
+new file mode 100644
+index 0000000..77aadb3
+--- /dev/null
++++ b/include/netlink-private/utils.h
+@@ -0,0 +1,17 @@
++/*
++ * netlink-private/utils.h	Local Utility Functions
++ *
++ *	This library is free software; you can redistribute it and/or
++ *	modify it under the terms of the GNU Lesser General Public
++ *	License as published by the Free Software Foundation version 2.1
++ *	of the License.
++ *
++ * Copyright (c) 2003-2012 Thomas Graf <tgraf@suug.ch>
++ */
++
++#ifndef NETLINK_UTILS_PRIV_H_
++#define NETLINK_UTILS_PRIV_H_
++
++extern const char *	nl_strerror_l(int err);
++
++#endif
+diff --git a/lib/utils.c b/lib/utils.c
+index 61c3d95..c1c1b72 100644
+--- a/lib/utils.c
++++ b/lib/utils.c
+@@ -25,10 +25,12 @@
+  */
+ 
+ #include <netlink-private/netlink.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/utils.h>
+ #include <linux/socket.h>
+ #include <stdlib.h> /* exit() */
++#include <locale.h>
+ 
+ /**
+  * Global variable indicating the desired level of debugging output.
+@@ -118,6 +120,28 @@ int __nl_read_num_str_file(const char *path, int (*cb)(long, const char *))
+ 
+ 	return 0;
+ }
++
++const char *nl_strerror_l(int err)
++{
++	int errno_save = errno;
++	locale_t loc = newlocale(LC_MESSAGES_MASK, "", (locale_t)0);
++	const char *buf;
++
++	if (loc == (locale_t)0) {
++		if (errno == ENOENT)
++			loc = newlocale(LC_MESSAGES_MASK,
++					"POSIX", (locale_t)0);
++	}
++	if (loc != (locale_t)0) {
++		buf = strerror_l(err, loc);
++		freelocale(loc);
++	} else {
++		buf = "newlocale() failed";
++	}
++
++	errno = errno_save;
++	return buf;
++}
+ /** @endcond */
+ 
+ /**
+diff --git a/libnl-3.sym b/libnl-3.sym
+index 4e09bdd..9119e66 100644
+--- a/libnl-3.sym
++++ b/libnl-3.sym
+@@ -351,3 +351,8 @@ libnl_3_2_28 {
+ global:
+ 	nl_object_diff64;
+ } libnl_3_2_27;
++
++libnl_3_2_29 {
++global:
++	nl_strerror_l;
++} libnl_3_2_28;
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0002-lib-switch-to-using-strerror_l-instead-of-strerror_r.patch b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0002-lib-switch-to-using-strerror_l-instead-of-strerror_r.patch
new file mode 100644
index 0000000..6347ec0
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0002-lib-switch-to-using-strerror_l-instead-of-strerror_r.patch
@@ -0,0 +1,403 @@
+From c1948ec29b8dcdc58d2d92700c325abdeab111a6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Thu, 25 Aug 2016 13:15:00 +0100
+Subject: [PATCH 2/3] lib: switch to using strerror_l() instead of strerror_r()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+glibc provides two versions of strerror_r(), which
+can be chosen between using feature test macros
+_GNU_SOURCE and _POSIX_C_SOURCE. libnl is built using
+the former, hence we get the glibc special version,
+and all code so far has been written for this.
+
+Other C libraries like musl on the other hand only try
+to be posix compliant, and only ever provide the posix
+version of strerror_r(), which has a different signature.
+
+Uses in libnl hence generally cause printf() of an *int*
+with a *string format* specifier for that reason.
+
+Additionally, strerror_r() has been deprecated:
+  http://austingroupbugs.net/view.php?id=655
+
+Switch to using strerror_l() (via our wrapper just
+introduced).
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+Reviewed-by: Stephane Ayotte <sayotte@tycoint.com>
+Signed-off-by: Thomas Haller <thaller@redhat.com>
+---
+Upstream-Status: Backport https://github.com/thom311/libnl/commit/c1948ec29b8dcdc58d2d92700c325abdeab111a6
+ lib/cache_mngr.c        |  5 ++---
+ lib/fib_lookup/lookup.c |  3 ++-
+ lib/handlers.c          |  4 ++--
+ lib/msg.c               |  4 ++--
+ lib/nl.c                | 26 +++++++++-----------------
+ lib/route/route_obj.c   |  3 ++-
+ lib/socket.c            | 33 +++++++++++----------------------
+ 7 files changed, 30 insertions(+), 48 deletions(-)
+
+diff --git a/lib/cache_mngr.c b/lib/cache_mngr.c
+index b9eb345..1f23eb1 100644
+--- a/lib/cache_mngr.c
++++ b/lib/cache_mngr.c
+@@ -33,6 +33,7 @@
+  */
+ 
+ #include <netlink-private/netlink.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/cache.h>
+ #include <netlink/utils.h>
+@@ -392,10 +393,8 @@ int nl_cache_mngr_poll(struct nl_cache_mngr *mngr, int timeout)
+ 	ret = poll(&fds, 1, timeout);
+ 	NL_DBG(3, "Cache manager %p, poll() returned %d\n", mngr, ret);
+ 	if (ret < 0) {
+-		char buf[64];
+-
+ 		NL_DBG(4, "nl_cache_mngr_poll(%p): poll() failed with %d (%s)\n",
+-			mngr, errno, strerror_r(errno, buf, sizeof(buf)));
++			mngr, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+diff --git a/lib/fib_lookup/lookup.c b/lib/fib_lookup/lookup.c
+index 43b6126..efc862b 100644
+--- a/lib/fib_lookup/lookup.c
++++ b/lib/fib_lookup/lookup.c
+@@ -17,6 +17,7 @@
+  */
+ 
+ #include <netlink-private/netlink.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/attr.h>
+ #include <netlink/utils.h>
+@@ -133,7 +134,7 @@ static void result_dump_line(struct nl_object *obj, struct nl_dump_params *p)
+ 		     nl_rtntype2str(res->fr_type, buf, sizeof(buf)));
+ 	nl_dump(p, "scope %s error %s (%d)\n",
+ 		rtnl_scope2str(res->fr_scope, buf, sizeof(buf)),
+-		strerror_r(-res->fr_error, buf, sizeof(buf)), res->fr_error);
++		nl_strerror_l(-res->fr_error), res->fr_error);
+ }
+ 
+ static void result_dump_details(struct nl_object *obj, struct nl_dump_params *p)
+diff --git a/lib/handlers.c b/lib/handlers.c
+index 97a0d9c..4a48b99 100644
+--- a/lib/handlers.c
++++ b/lib/handlers.c
+@@ -26,6 +26,7 @@
+  */
+ 
+ #include <netlink-private/netlink.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/utils.h>
+ #include <netlink/msg.h>
+@@ -79,10 +80,9 @@ static int nl_error_handler_verbose(struct sockaddr_nl *who,
+ 				    struct nlmsgerr *e, void *arg)
+ {
+ 	FILE *ofd = arg ? arg : stderr;
+-	char buf[256];
+ 
+ 	fprintf(ofd, "-- Error received: %s\n-- Original message: ",
+-		strerror_r(-e->error, buf, sizeof(buf)));
++		nl_strerror_l(-e->error));
+ 	print_header_content(ofd, &e->msg);
+ 	fprintf(ofd, "\n");
+ 
+diff --git a/lib/msg.c b/lib/msg.c
+index e8a7e99..9af3f3a 100644
+--- a/lib/msg.c
++++ b/lib/msg.c
+@@ -27,6 +27,7 @@
+  */
+ 
+ #include <netlink-private/netlink.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/utils.h>
+ #include <netlink/cache.h>
+@@ -913,11 +914,10 @@ static void dump_error_msg(struct nl_msg *msg, FILE *ofd)
+ 	fprintf(ofd, "  [ERRORMSG] %zu octets\n", sizeof(*err));
+ 
+ 	if (nlmsg_len(hdr) >= sizeof(*err)) {
+-		char buf[256];
+ 		struct nl_msg *errmsg;
+ 
+ 		fprintf(ofd, "    .error = %d \"%s\"\n", err->error,
+-			strerror_r(-err->error, buf, sizeof(buf)));
++			nl_strerror_l(-err->error));
+ 		fprintf(ofd, "  [ORIGINAL MESSAGE] %zu octets\n", sizeof(*hdr));
+ 
+ 		errmsg = nlmsg_inherit(&err->msg);
+diff --git a/lib/nl.c b/lib/nl.c
+index 123f657..a45c3ea 100644
+--- a/lib/nl.c
++++ b/lib/nl.c
+@@ -27,6 +27,7 @@
+ 
+ #include <netlink-private/netlink.h>
+ #include <netlink-private/socket.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/utils.h>
+ #include <netlink/handlers.h>
+@@ -105,7 +106,6 @@ int nl_connect(struct nl_sock *sk, int protocol)
+ 	int errsv;
+ 	socklen_t addrlen;
+ 	struct sockaddr_nl local = { 0 };
+-	char buf[64];
+ 	int try_bind = 1;
+ 
+ #ifdef SOCK_CLOEXEC
+@@ -119,7 +119,7 @@ int nl_connect(struct nl_sock *sk, int protocol)
+ 	if (sk->s_fd < 0) {
+ 		errsv = errno;
+ 		NL_DBG(4, "nl_connect(%p): socket() failed with %d (%s)\n", sk, errsv,
+-			strerror_r(errsv, buf, sizeof(buf)));
++			nl_strerror_l(errsv));
+ 		err = -nl_syserr2nlerr(errsv);
+ 		goto errout;
+ 	}
+@@ -158,7 +158,7 @@ int nl_connect(struct nl_sock *sk, int protocol)
+ 				_nl_socket_used_ports_set(used_ports, port);
+ 			} else {
+ 				NL_DBG(4, "nl_connect(%p): bind() for port %u failed with %d (%s)\n",
+-					sk, (unsigned) port, errsv, strerror_r(errsv, buf, sizeof(buf)));
++					sk, (unsigned) port, errsv, nl_strerror_l(errsv));
+ 				_nl_socket_used_ports_release_all(used_ports);
+ 				err = -nl_syserr2nlerr(errsv);
+ 				goto errout;
+@@ -172,7 +172,7 @@ int nl_connect(struct nl_sock *sk, int protocol)
+ 		if (err != 0) {
+ 			errsv = errno;
+ 			NL_DBG(4, "nl_connect(%p): bind() failed with %d (%s)\n",
+-				sk, errsv, strerror_r(errsv, buf, sizeof(buf)));
++				sk, errsv, nl_strerror_l(errsv));
+ 			err = -nl_syserr2nlerr(errsv);
+ 			goto errout;
+ 		}
+@@ -183,7 +183,7 @@ int nl_connect(struct nl_sock *sk, int protocol)
+ 			  &addrlen);
+ 	if (err < 0) {
+ 		NL_DBG(4, "nl_connect(%p): getsockname() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, buf, sizeof(buf)));
++			sk, errno, nl_strerror_l(errno));
+ 		err = -nl_syserr2nlerr(errno);
+ 		goto errout;
+ 	}
+@@ -280,10 +280,8 @@ int nl_sendto(struct nl_sock *sk, void *buf, size_t size)
+ 	ret = sendto(sk->s_fd, buf, size, 0, (struct sockaddr *)
+ 		     &sk->s_peer, sizeof(sk->s_peer));
+ 	if (ret < 0) {
+-		char errbuf[64];
+-
+ 		NL_DBG(4, "nl_sendto(%p): sendto() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, errbuf, sizeof(errbuf)));
++			sk, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+@@ -343,10 +341,8 @@ int nl_sendmsg(struct nl_sock *sk, struct nl_msg *msg, struct msghdr *hdr)
+ 
+ 	ret = sendmsg(sk->s_fd, hdr, 0);
+ 	if (ret < 0) {
+-		char errbuf[64];
+-
+ 		NL_DBG(4, "nl_sendmsg(%p): sendmsg() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, errbuf, sizeof(errbuf)));
++			sk, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+@@ -706,15 +702,13 @@ retry:
+ 		goto abort;
+ 	}
+ 	if (n < 0) {
+-		char errbuf[64];
+-
+ 		if (errno == EINTR) {
+ 			NL_DBG(3, "recvmsg() returned EINTR, retrying\n");
+ 			goto retry;
+ 		}
+ 
+ 		NL_DBG(4, "nl_sendmsg(%p): nl_recv() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, errbuf, sizeof(errbuf)));
++			sk, errno, nl_strerror_l(errno));
+ 		retval = -nl_syserr2nlerr(errno);
+ 		goto abort;
+ 	}
+@@ -980,10 +974,8 @@ continue_reading:
+ 					goto out;
+ 				}
+ 			} else if (e->error) {
+-				char buf[64];
+-
+ 				NL_DBG(4, "recvmsgs(%p): RTNETLINK responded with %d (%s)\n",
+-					sk, -e->error, strerror_r(-e->error, buf, sizeof(buf)));
++					sk, -e->error, nl_strerror_l(-e->error));
+ 
+ 				/* Error message reported back from kernel. */
+ 				if (cb->cb_err) {
+diff --git a/lib/route/route_obj.c b/lib/route/route_obj.c
+index 7347ed2..21b67b1 100644
+--- a/lib/route/route_obj.c
++++ b/lib/route/route_obj.c
+@@ -31,6 +31,7 @@
+  */
+ 
+ #include <netlink-private/netlink.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/cache.h>
+ #include <netlink/utils.h>
+@@ -259,7 +260,7 @@ static void route_dump_details(struct nl_object *a, struct nl_dump_params *p)
+ 	if ((r->ce_mask & ROUTE_ATTR_CACHEINFO) && r->rt_cacheinfo.rtci_error) {
+ 		nl_dump_line(p, "    cacheinfo error %d (%s)\n",
+ 			r->rt_cacheinfo.rtci_error,
+-			strerror_r(-r->rt_cacheinfo.rtci_error, buf, sizeof(buf)));
++			nl_strerror_l(-r->rt_cacheinfo.rtci_error));
+ 	}
+ 
+ 	if (r->ce_mask & ROUTE_ATTR_METRICS) {
+diff --git a/lib/socket.c b/lib/socket.c
+index 97b2f69..55153b4 100644
+--- a/lib/socket.c
++++ b/lib/socket.c
+@@ -33,6 +33,7 @@
+ 
+ #include <netlink-private/netlink.h>
+ #include <netlink-private/socket.h>
++#include <netlink-private/utils.h>
+ #include <netlink/netlink.h>
+ #include <netlink/utils.h>
+ #include <netlink/handlers.h>
+@@ -449,11 +450,9 @@ int nl_socket_add_memberships(struct nl_sock *sk, int group, ...)
+ 		err = setsockopt(sk->s_fd, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP,
+ 						 &group, sizeof(group));
+ 		if (err < 0) {
+-			char buf[64];
+-
+ 			va_end(ap);
+ 			NL_DBG(4, "nl_socket_add_memberships(%p): setsockopt() failed with %d (%s)\n",
+-				sk, errno, strerror_r(errno, buf, sizeof(buf)));
++				sk, errno, nl_strerror_l(errno));
+ 			return -nl_syserr2nlerr(errno);
+ 		}
+ 
+@@ -501,11 +500,9 @@ int nl_socket_drop_memberships(struct nl_sock *sk, int group, ...)
+ 		err = setsockopt(sk->s_fd, SOL_NETLINK, NETLINK_DROP_MEMBERSHIP,
+ 						 &group, sizeof(group));
+ 		if (err < 0) {
+-			char buf[64];
+-
+ 			va_end(ap);
+ 			NL_DBG(4, "nl_socket_drop_memberships(%p): setsockopt() failed with %d (%s)\n",
+-				sk, errno, strerror_r(errno, buf, sizeof(buf)));
++				sk, errno, nl_strerror_l(errno));
+ 			return -nl_syserr2nlerr(errno);
+ 		}
+ 
+@@ -619,7 +616,6 @@ int nl_socket_set_fd(struct nl_sock *sk, int protocol, int fd)
+ {
+ 	int err = 0;
+ 	socklen_t addrlen;
+-	char buf[64];
+ 	struct sockaddr_nl local = { 0 };
+ 	int so_type = -1, so_protocol = -1;
+ 
+@@ -633,7 +629,7 @@ int nl_socket_set_fd(struct nl_sock *sk, int protocol, int fd)
+ 	                  &addrlen);
+ 	if (err < 0) {
+ 		NL_DBG(4, "nl_socket_set_fd(%p,%d): getsockname() failed with %d (%s)\n",
+-		       sk, fd, errno, strerror_r(errno, buf, sizeof(buf)));
++		       sk, fd, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 	if (addrlen != sizeof(local))
+@@ -648,7 +644,7 @@ int nl_socket_set_fd(struct nl_sock *sk, int protocol, int fd)
+ 	err = getsockopt(fd, SOL_SOCKET, SO_TYPE, &so_type, &addrlen);
+ 	if (err < 0) {
+ 		NL_DBG(4, "nl_socket_set_fd(%p,%d): getsockopt() for SO_TYPE failed with %d (%s)\n",
+-		       sk, fd, errno, strerror_r(errno, buf, sizeof(buf)));
++		       sk, fd, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 	if (addrlen != sizeof(so_type))
+@@ -666,7 +662,7 @@ int nl_socket_set_fd(struct nl_sock *sk, int protocol, int fd)
+ 		if (errno == ENOPROTOOPT)
+ 			goto no_so_protocol;
+ 		NL_DBG(4, "nl_socket_set_fd(%p,%d): getsockopt() for SO_PROTOCOL failed with %d (%s)\n",
+-		       sk, fd, errno, strerror_r(errno, buf, sizeof(buf)));
++		       sk, fd, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 	if (addrlen != sizeof(so_protocol))
+@@ -709,10 +705,8 @@ int nl_socket_set_nonblocking(const struct nl_sock *sk)
+ 		return -NLE_BAD_SOCK;
+ 
+ 	if (fcntl(sk->s_fd, F_SETFL, O_NONBLOCK) < 0) {
+-		char buf[64];
+-
+ 		NL_DBG(4, "nl_socket_set_nonblocking(%p): fcntl() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, buf, sizeof(buf)));
++			sk, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+@@ -813,7 +807,6 @@ int nl_socket_modify_err_cb(struct nl_sock *sk, enum nl_cb_kind kind,
+ int nl_socket_set_buffer_size(struct nl_sock *sk, int rxbuf, int txbuf)
+ {
+ 	int err;
+-	char buf[64];
+ 
+ 	if (rxbuf <= 0)
+ 		rxbuf = 32768;
+@@ -828,7 +821,7 @@ int nl_socket_set_buffer_size(struct nl_sock *sk, int rxbuf, int txbuf)
+ 			 &txbuf, sizeof(txbuf));
+ 	if (err < 0) {
+ 		NL_DBG(4, "nl_socket_set_buffer_size(%p): setsockopt() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, buf, sizeof(buf)));
++			sk, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+@@ -836,7 +829,7 @@ int nl_socket_set_buffer_size(struct nl_sock *sk, int rxbuf, int txbuf)
+ 			 &rxbuf, sizeof(rxbuf));
+ 	if (err < 0) {
+ 		NL_DBG(4, "nl_socket_set_buffer_size(%p): setsockopt() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, buf, sizeof(buf)));
++			sk, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+@@ -890,10 +883,8 @@ int nl_socket_set_passcred(struct nl_sock *sk, int state)
+ 	err = setsockopt(sk->s_fd, SOL_SOCKET, SO_PASSCRED,
+ 			 &state, sizeof(state));
+ 	if (err < 0) {
+-		char buf[64];
+-
+ 		NL_DBG(4, "nl_socket_set_passcred(%p): setsockopt() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, buf, sizeof(buf)));
++			sk, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+@@ -922,10 +913,8 @@ int nl_socket_recv_pktinfo(struct nl_sock *sk, int state)
+ 	err = setsockopt(sk->s_fd, SOL_NETLINK, NETLINK_PKTINFO,
+ 			 &state, sizeof(state));
+ 	if (err < 0) {
+-		char buf[64];
+-
+ 		NL_DBG(4, "nl_socket_recv_pktinfo(%p): setsockopt() failed with %d (%s)\n",
+-			sk, errno, strerror_r(errno, buf, sizeof(buf)));
++			sk, errno, nl_strerror_l(errno));
+ 		return -nl_syserr2nlerr(errno);
+ 	}
+ 
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0003-src-switch-to-using-strerror_l-instead-of-strerror_r.patch b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0003-src-switch-to-using-strerror_l-instead-of-strerror_r.patch
new file mode 100644
index 0000000..a0f5a78
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl/0003-src-switch-to-using-strerror_l-instead-of-strerror_r.patch
@@ -0,0 +1,82 @@
+From 6c2d111177e91184073c44f83d4a6182aaba06d7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Thu, 25 Aug 2016 13:15:01 +0100
+Subject: [PATCH 3/3] src: switch to using strerror_l() instead of strerror_r()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+glibc provides two versions of strerror_r(), which
+can be chosen between using feature test macros
+_GNU_SOURCE and _POSIX_C_SOURCE. libnl is built using
+the former, hence we get the glibc special version,
+and all code so far has been written for this.
+
+Other C libraries like musl on the other hand only try
+to be posix compliant, and only ever provide the posix
+version of strerror_r(), which has a different signature.
+
+Uses in libnl hence generally cause printf() of an *int*
+with a *string format* specifier for that reason.
+
+Additionally, strerror_r() has been deprecated:
+  http://austingroupbugs.net/view.php?id=655
+
+Switch to using strerror_l().
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+Reviewed-by: Stephane Ayotte <sayotte@tycoint.com>
+Signed-off-by: Thomas Haller <thaller@redhat.com>
+---
+Upstream-Status: Backport https://github.com/thom311/libnl/commit/6c2d111177e91184073c44f83d4a6182aaba06d7
+ src/lib/utils.c | 20 +++++++++++++++++---
+ 1 file changed, 17 insertions(+), 3 deletions(-)
+
+diff --git a/src/lib/utils.c b/src/lib/utils.c
+index 467aaed..5878f27 100644
+--- a/src/lib/utils.c
++++ b/src/lib/utils.c
+@@ -22,6 +22,7 @@
+  */
+ 
+ #include <netlink/cli/utils.h>
++#include <locale.h>
+ 
+ /**
+  * Parse a text based 32 bit unsigned integer argument
+@@ -70,7 +71,6 @@ void nl_cli_print_version(void)
+ void nl_cli_fatal(int err, const char *fmt, ...)
+ {
+ 	va_list ap;
+-	char buf[256];
+ 
+ 	fprintf(stderr, "Error: ");
+ 
+@@ -79,8 +79,22 @@ void nl_cli_fatal(int err, const char *fmt, ...)
+ 		vfprintf(stderr, fmt, ap);
+ 		va_end(ap);
+ 		fprintf(stderr, "\n");
+-	} else
+-		fprintf(stderr, "%s\n", strerror_r(err, buf, sizeof(buf)));
++	} else {
++		char *buf;
++		locale_t loc = newlocale(LC_MESSAGES_MASK, "", (locale_t)0);
++		if (loc == (locale_t)0) {
++			if (errno == ENOENT)
++				loc = newlocale(LC_MESSAGES_MASK,
++						"POSIX", (locale_t)0);
++			if (loc == (locale_t)0)
++				buf = "newlocale() failed";
++		}
++		if (loc != (locale_t)0)
++			buf = strerror_l(err, loc);
++		fprintf(stderr, "%s\n", buf);
++		if (loc != (locale_t)0)
++			freelocale(loc);
++	}
+ 
+ 	exit(abs(err));
+ }
+-- 
+2.9.3
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libnl/libnl_3.2.25.bb b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl_3.2.25.bb
deleted file mode 100644
index cabe841..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libnl/libnl_3.2.25.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "A library for applications dealing with netlink sockets"
-HOMEPAGE = "http://www.infradead.org/~tgr/libnl/"
-SECTION = "libs/network"
-
-PE = "1"
-PR = "r1"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = "flex-native bison-native"
-
-SRC_URI = "http://www.infradead.org/~tgr/${BPN}/files/${BP}.tar.gz \
-           file://fix-pktloc_syntax_h-race.patch \
-           file://fix-pc-file.patch \
-          "
-
-SRC_URI[md5sum] = "03f74d0cd5037cadc8cdfa313bbd195c"
-SRC_URI[sha256sum] = "8beb7590674957b931de6b7f81c530b85dc7c1ad8fbda015398bc1e8d1ce8ec5"
-
-inherit autotools pkgconfig
-
-FILES_${PN} = "${libdir}/libnl-3.so.* \
-               ${libdir}/libnl.so.* \
-               ${sysconfdir}"
-RREPLACES_${PN} = "libnl2"
-RCONFLICTS_${PN} = "libnl2"
-FILES_${PN}-staticdev += "${libdir}/libnl/cli/*/*.a"
-
-PACKAGES += "${PN}-cli ${PN}-route ${PN}-nf ${PN}-genl ${PN}-idiag"
-FILES_${PN}-cli   = "${libdir}/libnl-cli-3.so.* \
-                     ${libdir}/libnl/cli/*/*.so \
-                     ${libdir}/libnl/cli/*/*.la \
-                     ${sbindir}/nl-*"
-FILES_${PN}-route = "${libdir}/libnl-route-3.so.*"
-FILES_${PN}-idiag = "${libdir}/libnl-idiag-3.so.*"
-FILES_${PN}-nf    = "${libdir}/libnl-nf-3.so.*"
-FILES_${PN}-genl  = "${libdir}/libnl-genl-3.so.* \
-                     ${libdir}/libnl-genl.so.* \
-                     ${sbindir}/genl-ctrl-list"
-RREPLACES_${PN}-genl = "libnl-genl2 libnl-genl-3-200"
-RCONFLICTS_${PN}-genl = "libnl-genl2 libnl-genl-3-200"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libnl/libnl_3.2.28.bb b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl_3.2.28.bb
new file mode 100644
index 0000000..26982f3
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libnl/libnl_3.2.28.bb
@@ -0,0 +1,48 @@
+SUMMARY = "A library for applications dealing with netlink sockets"
+HOMEPAGE = "http://www.infradead.org/~tgr/libnl/"
+SECTION = "libs/network"
+
+PE = "1"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "flex-native bison-native"
+
+SRC_URI = "https://github.com/thom311/${BPN}/releases/download/${BPN}${@d.getVar('PV', True).replace('.','_')}/${BP}.tar.gz \
+           file://fix-pktloc_syntax_h-race.patch \
+           file://fix-pc-file.patch \
+           file://0001-lib-add-utility-function-nl_strerror_l.patch \
+           file://0002-lib-switch-to-using-strerror_l-instead-of-strerror_r.patch \
+           file://0003-src-switch-to-using-strerror_l-instead-of-strerror_r.patch \
+"
+UPSTREAM_CHECK_URI = "https://github.com/thom311/${BPN}/releases"
+
+SRC_URI[md5sum] = "bab12db1eb94a42129f712a44be91a67"
+SRC_URI[sha256sum] = "cd608992c656e8f6e3ab6c1391b162a5a51c49336b9219f7f390e61fc5437c41"
+
+inherit autotools pkgconfig
+
+FILES_${PN} = "${libdir}/libnl-3.so.* \
+               ${libdir}/libnl.so.* \
+               ${sysconfdir}"
+RREPLACES_${PN} = "libnl2"
+RCONFLICTS_${PN} = "libnl2"
+FILES_${PN}-dev += "${libdir}/libnl/cli/*/*.la"
+FILES_${PN}-staticdev += "${libdir}/libnl/cli/*/*.a"
+
+PACKAGES += "${PN}-cli ${PN}-genl ${PN}-idiag ${PN}-nf ${PN}-route ${PN}-xfrm"
+FILES_${PN}-cli   = "${libdir}/libnl-cli-3.so.* \
+                     ${libdir}/libnl/cli/*/*.so \
+                     ${bindir}/genl-ctrl-list \
+                     ${bindir}/idiag-socket-details \
+                     ${bindir}/nf-* \
+                     ${bindir}/nl-*"
+FILES_${PN}-genl  = "${libdir}/libnl-genl-3.so.* \
+                     ${libdir}/libnl-genl.so.*"
+FILES_${PN}-idiag = "${libdir}/libnl-idiag-3.so.*"
+FILES_${PN}-nf    = "${libdir}/libnl-nf-3.so.*"
+FILES_${PN}-route = "${libdir}/libnl-route-3.so.*"
+FILES_${PN}-xfrm  = "${libdir}/libnl-xfrm-3.so.*"
+RREPLACES_${PN}-genl = "libnl-genl2"
+RCONFLICTS_${PN}-genl = "libnl-genl2"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libpcre/libpcre_8.38.bb b/import-layers/yocto-poky/meta/recipes-support/libpcre/libpcre_8.38.bb
deleted file mode 100644
index 384c2fe..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libpcre/libpcre_8.38.bb
+++ /dev/null
@@ -1,79 +0,0 @@
-DESCRIPTION = "The PCRE library is a set of functions that implement regular \
-expression pattern matching using the same syntax and semantics as Perl 5. PCRE \
-has its own native API, as well as a set of wrapper functions that correspond \
-to the POSIX regular expression API."
-SUMMARY = "Perl Compatible Regular Expressions"
-HOMEPAGE = "http://www.pcre.org"
-SECTION = "devel"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=7e4937814aee14758c1c95b59c80c44d"
-SRC_URI = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${PV}.tar.bz2 \
-           file://pcre-cross.patch \
-           file://fix-pcre-name-collision.patch \
-           file://run-ptest \
-           file://Makefile \
-"
-
-SRC_URI[md5sum] = "00aabbfe56d5a48b270f999b508c5ad2"
-SRC_URI[sha256sum] = "b9e02d36e23024d6c02a2e5b25204b3a4fa6ade43e0a5f869f254f49535079df"
-
-S = "${WORKDIR}/pcre-${PV}"
-
-PROVIDES += "pcre"
-DEPENDS += "bzip2 zlib"
-
-PACKAGECONFIG ??= "pcre8 unicode-properties"
-
-PACKAGECONFIG[pcre8] = "--enable-pcre8,--disable-pcre8"
-PACKAGECONFIG[pcre16] = "--enable-pcre16,--disable-pcre16"
-PACKAGECONFIG[pcre32] = "--enable-pcre32,--disable-pcre32"
-PACKAGECONFIG[pcretest-readline] = "--enable-pcretest-libreadline,--disable-pcretest-libreadline,readline,"
-PACKAGECONFIG[unicode-properties] = "--enable-unicode-properties,--disable-unicode-properties"
-
-BINCONFIG = "${bindir}/pcre-config"
-
-inherit autotools binconfig-disabled ptest
-
-EXTRA_OECONF = "\
-    --enable-newline-is-lf \
-    --enable-rebuild-chartables \
-    --enable-utf \
-    --with-link-size=2 \
-    --with-match-limit=10000000 \
-"
-
-# Set LINK_SIZE in BUILD_CFLAGS given that the autotools bbclass use it to
-# set CFLAGS_FOR_BUILD, required for the libpcre build.
-BUILD_CFLAGS =+ "-DLINK_SIZE=2 -I${B}"
-CFLAGS += "-D_REENTRANT"
-CXXFLAGS_append_powerpc = " -lstdc++"
-
-PACKAGES =+ "libpcrecpp libpcreposix pcregrep pcregrep-doc pcretest pcretest-doc"
-
-SUMMARY_libpcrecpp = "${SUMMARY} - C++ wrapper functions"
-SUMMARY_libpcreposix = "${SUMMARY} - C wrapper functions based on the POSIX regex API"
-SUMMARY_pcregrep = "grep utility that uses perl 5 compatible regexes"
-SUMMARY_pcregrep-doc = "grep utility that uses perl 5 compatible regexes - docs"
-SUMMARY_pcretest = "program for testing Perl-comatible regular expressions"
-SUMMARY_pcretest-doc = "program for testing Perl-comatible regular expressions - docs"
-
-FILES_libpcrecpp = "${libdir}/libpcrecpp.so.*"
-FILES_libpcreposix = "${libdir}/libpcreposix.so.*"
-FILES_pcregrep = "${bindir}/pcregrep"
-FILES_pcregrep-doc = "${mandir}/man1/pcregrep.1"
-FILES_pcretest = "${bindir}/pcretest"
-FILES_pcretest-doc = "${mandir}/man1/pcretest.1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_ptest() {
-	t=${D}${PTEST_PATH}
-	cp ${WORKDIR}/Makefile $t
-	cp -r ${S}/testdata $t
-	for i in pcre_stringpiece_unittest pcregrep pcretest; \
-	  do cp ${B}/.libs/$i $t; \
-	done
-	for i in RunTest RunGrepTest test-driver; \
-	  do cp ${S}/$i $t; \
-	done
-}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libpcre/libpcre_8.39.bb b/import-layers/yocto-poky/meta/recipes-support/libpcre/libpcre_8.39.bb
new file mode 100644
index 0000000..2d4668b
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libpcre/libpcre_8.39.bb
@@ -0,0 +1,81 @@
+DESCRIPTION = "The PCRE library is a set of functions that implement regular \
+expression pattern matching using the same syntax and semantics as Perl 5. PCRE \
+has its own native API, as well as a set of wrapper functions that correspond \
+to the POSIX regular expression API."
+SUMMARY = "Perl Compatible Regular Expressions"
+HOMEPAGE = "http://www.pcre.org"
+SECTION = "devel"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=b8221cbf43c5587f90ccf228f1185cc2"
+SRC_URI = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${PV}.tar.bz2 \
+           file://pcre-cross.patch \
+           file://fix-pcre-name-collision.patch \
+           file://run-ptest \
+           file://Makefile \
+"
+
+SRC_URI[md5sum] = "e3fca7650a0556a2647821679d81f585"
+SRC_URI[sha256sum] = "b858099f82483031ee02092711689e7245586ada49e534a06e678b8ea9549e8b"
+
+S = "${WORKDIR}/pcre-${PV}"
+
+PROVIDES += "pcre"
+DEPENDS += "bzip2 zlib"
+
+PACKAGECONFIG ??= "pcre8 unicode-properties"
+
+PACKAGECONFIG[pcre8] = "--enable-pcre8,--disable-pcre8"
+PACKAGECONFIG[pcre16] = "--enable-pcre16,--disable-pcre16"
+PACKAGECONFIG[pcre32] = "--enable-pcre32,--disable-pcre32"
+PACKAGECONFIG[pcretest-readline] = "--enable-pcretest-libreadline,--disable-pcretest-libreadline,readline,"
+PACKAGECONFIG[unicode-properties] = "--enable-unicode-properties,--disable-unicode-properties"
+
+BINCONFIG = "${bindir}/pcre-config"
+
+inherit autotools binconfig-disabled ptest
+
+EXTRA_OECONF = "\
+    --enable-newline-is-lf \
+    --enable-rebuild-chartables \
+    --enable-utf \
+    --with-link-size=2 \
+    --with-match-limit=10000000 \
+"
+
+# Set LINK_SIZE in BUILD_CFLAGS given that the autotools bbclass use it to
+# set CFLAGS_FOR_BUILD, required for the libpcre build.
+BUILD_CFLAGS =+ "-DLINK_SIZE=2 -I${B}"
+CFLAGS += "-D_REENTRANT"
+CXXFLAGS_append_powerpc = " -lstdc++"
+
+export CCLD_FOR_BUILD ="${BUILD_CCLD}"
+
+PACKAGES =+ "libpcrecpp libpcreposix pcregrep pcregrep-doc pcretest pcretest-doc"
+
+SUMMARY_libpcrecpp = "${SUMMARY} - C++ wrapper functions"
+SUMMARY_libpcreposix = "${SUMMARY} - C wrapper functions based on the POSIX regex API"
+SUMMARY_pcregrep = "grep utility that uses perl 5 compatible regexes"
+SUMMARY_pcregrep-doc = "grep utility that uses perl 5 compatible regexes - docs"
+SUMMARY_pcretest = "program for testing Perl-comatible regular expressions"
+SUMMARY_pcretest-doc = "program for testing Perl-comatible regular expressions - docs"
+
+FILES_libpcrecpp = "${libdir}/libpcrecpp.so.*"
+FILES_libpcreposix = "${libdir}/libpcreposix.so.*"
+FILES_pcregrep = "${bindir}/pcregrep"
+FILES_pcregrep-doc = "${mandir}/man1/pcregrep.1"
+FILES_pcretest = "${bindir}/pcretest"
+FILES_pcretest-doc = "${mandir}/man1/pcretest.1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install_ptest() {
+	t=${D}${PTEST_PATH}
+	cp ${WORKDIR}/Makefile $t
+	cp -r ${S}/testdata $t
+	for i in pcre_stringpiece_unittest pcregrep pcretest; \
+	  do cp ${B}/.libs/$i $t; \
+	done
+	for i in RunTest RunGrepTest test-driver; \
+	  do cp ${S}/$i $t; \
+	done
+}
diff --git a/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy/0001-test-Include-sys-select.h-for-select.patch b/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy/0001-test-Include-sys-select.h-for-select.patch
deleted file mode 100644
index 5ae52f2..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy/0001-test-Include-sys-select.h-for-select.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From f5f2c2289eb35eb804c1c35e46ca41b58e4cae01 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 6 Apr 2015 14:13:49 -0700
-Subject: [PATCH] test: Include <sys/select.h> for select()
-
-As per posix we need to include this file otherwise we end up with errors like
-
-/home/kraj/work/bleeding/openembedded-core/build/tmp-musl/work/mips32r2-oe-linux-musl/libproxy/0.4.11-r0/libproxy-0.4.11/libproxy/test/get-pac-test.cpp: In member function 'bool TestServer::loop()':
-/home/kraj/work/bleeding/openembedded-core/build/tmp-musl/work/mips32r2-oe-linux-musl/libproxy/0.4.11-r0/libproxy-0.4.11/libproxy/test/get-pac-test.cpp:80:4: error: 'fd_set' was not declared in this scope
-    fd_set fds;
-    ^
-/home/kraj/work/bleeding/openembedded-core/build/tmp-musl/work/mips32r2-oe-linux-musl/libproxy/0.4.11-r0/libproxy-0.4.11/libproxy/test/get-pac-test.cpp:89:14: error: 'fds' was not declared in this scope
-    FD_ZERO (&fds);
-<JIRA TICKET #1>, <JIRA TICKET #2>, <JIRA TICKET #n> : <one line summary of change>
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libproxy/test/get-pac-test.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libproxy/test/get-pac-test.cpp b/libproxy/test/get-pac-test.cpp
-index a61fc4b..bda4646 100644
---- a/libproxy/test/get-pac-test.cpp
-+++ b/libproxy/test/get-pac-test.cpp
-@@ -3,6 +3,7 @@
- #include <sstream>
- #include <string>
- 
-+#include <sys/select.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
--- 
-2.1.4
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy_0.4.11.bb b/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy_0.4.11.bb
deleted file mode 100644
index 8cc90bb..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy_0.4.11.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Library providing automatic proxy configuration management"
-HOMEPAGE = "http://code.google.com/p/libproxy/"
-BUGTRACKER = "http://code.google.com/p/libproxy/issues/list"
-SECTION = "libs"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
-                    file://utils/proxy.c;beginline=1;endline=18;md5=55152a1006d7dafbef32baf9c30a99c0"
-
-DEPENDS = "glib-2.0"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/libp/${BPN}/${BPN}_${PV}.orig.tar.gz \
-           file://0001-test-Include-sys-select.h-for-select.patch \
-          "
-
-SRC_URI[md5sum] = "3cd1ae2a4abecf44b3f24d6639d2cd84"
-SRC_URI[sha256sum] = "dc3f33de54163718f82b3e7c496a7de97f8862578414b8ecaad3cbfe4821864b"
-
-inherit cmake pkgconfig
-
-PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gnome', '', d)} gnome3"
-PACKAGECONFIG[gnome] = "-DWITH_GNOME=yes,-DWITH_GNOME=no,gconf"
-PACKAGECONFIG[gnome3] = "-DWITH_GNOME3=yes,-DWITH_GNOME3=no"
-
-EXTRA_OECMAKE += " \
-    -DWITH_KDE4=no \
-    -DWITH_MOZJS=no \
-    -DWITH_NM=no \
-    -DWITH_PERL=no \
-    -DWITH_PYTHON=no \
-    -DWITH_WEBKIT=no \
-    -DLIB_INSTALL_DIR=${libdir} \
-    -DLIBEXEC_INSTALL_DIR=${libexecdir} \
-"
-
-FILES_${PN} += "${libdir}/${BPN}/${PV}/modules"
-FILES_${PN}-dev += "${datadir}/cmake"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy_0.4.13.bb b/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy_0.4.13.bb
new file mode 100644
index 0000000..3940e22
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libproxy/libproxy_0.4.13.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Library providing automatic proxy configuration management"
+HOMEPAGE = "https://github.com/libproxy/libproxy"
+BUGTRACKER = "https://github.com/libproxy/libproxy/issues"
+SECTION = "libs"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://utils/proxy.c;beginline=1;endline=18;md5=55152a1006d7dafbef32baf9c30a99c0"
+
+DEPENDS = "glib-2.0"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/archive/${PV}.tar.gz"
+
+UPSTREAM_CHECK_URI = "https://github.com/libproxy/libproxy/releases"
+
+SRC_URI[md5sum] = "de293bb311f185a2ffa3492700a694c2"
+SRC_URI[sha256sum] = "d610bc0ef81a18ba418d759c5f4f87bf7102229a9153fb397d7d490987330ffd"
+
+inherit cmake pkgconfig
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gnome', '', d)} gnome3"
+PACKAGECONFIG[gnome] = "-DWITH_GNOME=yes,-DWITH_GNOME=no,gconf"
+PACKAGECONFIG[gnome3] = "-DWITH_GNOME3=yes,-DWITH_GNOME3=no"
+
+EXTRA_OECMAKE += " \
+    -DWITH_KDE4=no \
+    -DWITH_MOZJS=no \
+    -DWITH_NM=no \
+    -DWITH_PERL=no \
+    -DWITH_PYTHON=no \
+    -DWITH_WEBKIT=no \
+    -DLIB_INSTALL_DIR=${libdir} \
+    -DLIBEXEC_INSTALL_DIR=${libexecdir} \
+"
+
+FILES_${PN} += "${libdir}/${BPN}/${PV}/modules"
+FILES_${PN}-dev += "${datadir}/cmake"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libsoup/libsoup-2.4_2.52.2.bb b/import-layers/yocto-poky/meta/recipes-support/libsoup/libsoup-2.4_2.52.2.bb
deleted file mode 100644
index f6e3db2..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libsoup/libsoup-2.4_2.52.2.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "An HTTP library implementation in C"
-HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "x11/gnome/libs"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 intltool-native"
-
-SHRT_VER = "${@d.getVar('PV', True).split('.')[0]}.${@d.getVar('PV', True).split('.')[1]}"
-
-SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "e4757d09012ed93822b1ee41435fec24"
-SRC_URI[sha256sum] = "db55628b5c7d952945bb71b236469057c8dfb8dea0c271513579c6273c2093dc"
-
-S = "${WORKDIR}/libsoup-${PV}"
-
-inherit autotools gettext pkgconfig upstream-version-is-even gobject-introspection
-
-# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[gnome] = "--with-gnome,--without-gnome"
-
-EXTRA_OECONF = "--disable-vala"
-
-# When built without gnome support, libsoup-2.4 will contain only one shared lib
-# and will therefore become subject to renaming by debian.bbclass. Prevent
-# renaming in order to keep the package name consistent regardless of whether
-# gnome support is enabled or disabled.
-DEBIAN_NOAUTONAME_${PN} = "1"
-
-# glib-networking is needed for SSL, proxies, etc.
-RRECOMMENDS_${PN} = "glib-networking"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libsoup/libsoup-2.4_2.54.1.bb b/import-layers/yocto-poky/meta/recipes-support/libsoup/libsoup-2.4_2.54.1.bb
new file mode 100644
index 0000000..b93a9fd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libsoup/libsoup-2.4_2.54.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "An HTTP library implementation in C"
+HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 intltool-native"
+
+SHRT_VER = "${@d.getVar('PV', True).split('.')[0]}.${@d.getVar('PV', True).split('.')[1]}"
+
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "73b1fb774de16c29b380f87016f9f9dd"
+SRC_URI[sha256sum] = "47b42c232034734d66e5f093025843a5d8cc4b2357c011085a2fd04ef02dd633"
+
+S = "${WORKDIR}/libsoup-${PV}"
+
+inherit autotools gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
+
+# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gnome] = "--with-gnome,--without-gnome"
+PACKAGECONFIG[gssapi] = "--with-gssapi,--without-gssapi,krb5"
+
+EXTRA_OECONF = "--disable-vala"
+
+# When built without gnome support, libsoup-2.4 will contain only one shared lib
+# and will therefore become subject to renaming by debian.bbclass. Prevent
+# renaming in order to keep the package name consistent regardless of whether
+# gnome support is enabled or disabled.
+DEBIAN_NOAUTONAME_${PN} = "1"
+
+# glib-networking is needed for SSL, proxies, etc.
+RRECOMMENDS_${PN} = "glib-networking"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-Fix-build-on-mips-musl.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-Fix-build-on-mips-musl.patch
deleted file mode 100644
index 5426fcc..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-Fix-build-on-mips-musl.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From e623c7703945a5eb6c9a30586ec5e23b2f7396f6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 23 Mar 2016 06:08:59 +0000
-Subject: [PATCH] Fix build on mips/musl
-
-Do not include endian.h on musl it includes
-further headers which can not be compiled in __ASSEMBLER__
- mode
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/coredump/_UCD_internal.h | 34 ++++++++++++++++++++++++++++++++++
- src/mips/getcontext.S        |  3 +--
- 2 files changed, 35 insertions(+), 2 deletions(-)
-
-diff --git a/src/coredump/_UCD_internal.h b/src/coredump/_UCD_internal.h
-index 3c95a2a..80acc15 100644
---- a/src/coredump/_UCD_internal.h
-+++ b/src/coredump/_UCD_internal.h
-@@ -34,6 +34,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
- #ifdef HAVE_SYS_PROCFS_H
- #include <sys/procfs.h> /* struct elf_prstatus */
- #endif
-+#include <sys/reg.h>
- #include <errno.h>
- #include <string.h>
- #include <limits.h>
-@@ -44,6 +45,39 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
- 
- #include "libunwind_i.h"
- 
-+#ifndef __GLIBC__
-+#define EF_REG0			6
-+#define EF_REG1			7
-+#define EF_REG2			8
-+#define EF_REG3			9
-+#define EF_REG4			10
-+#define EF_REG5			11
-+#define EF_REG6			12
-+#define EF_REG7			13
-+#define EF_REG8			14
-+#define EF_REG9			15
-+#define EF_REG10		16
-+#define EF_REG11		17
-+#define EF_REG12		18
-+#define EF_REG13		19
-+#define EF_REG14		20
-+#define EF_REG15		21
-+#define EF_REG16		22
-+#define EF_REG17		23
-+#define EF_REG18		24
-+#define EF_REG19		25
-+#define EF_REG20		26
-+#define EF_REG21		27
-+#define EF_REG22		28
-+#define EF_REG23		29
-+#define EF_REG24		30
-+#define EF_REG25		31
-+#define EF_REG28		34
-+#define EF_REG29		35
-+#define EF_REG30		36
-+#define EF_REG31		37
-+#endif
-+
- 
- #if SIZEOF_OFF_T == 4
- typedef uint32_t uoff_t;
-diff --git a/src/mips/getcontext.S b/src/mips/getcontext.S
-index d1dbd57..de9b681 100644
---- a/src/mips/getcontext.S
-+++ b/src/mips/getcontext.S
-@@ -24,12 +24,11 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
- 
- #include "offsets.h"
--#include <endian.h>
- 
- 	.text
- 
- #if _MIPS_SIM == _ABIO32
--# if __BYTE_ORDER == __BIG_ENDIAN
-+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
- #  define OFFSET 4
- # else
- #  define OFFSET 0
--- 
-1.8.3.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch
deleted file mode 100644
index af972f8..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 396b6c7ab737e2bff244d640601c436a26260ca1 Mon Sep 17 00:00:00 2001
-From: Arun Sharma <arun@sharma-home.net>
-Date: Fri, 19 Jun 2015 19:47:22 -0700
-Subject: [PATCH] Invalid dwarf opcodes can cause references beyond the end of
- the array.
-
-Upstream-Status: backport
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- include/dwarf_i.h |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/dwarf_i.h b/include/dwarf_i.h
-index 1e6231e..4a02a7d 100644
---- a/include/dwarf_i.h
-+++ b/include/dwarf_i.h
-@@ -20,7 +20,7 @@
- extern const uint8_t dwarf_to_unw_regnum_map[DWARF_REGNUM_MAP_LENGTH];
- /* REG is evaluated multiple times; it better be side-effects free!  */
- # define dwarf_to_unw_regnum(reg)					  \
--  (((reg) <= DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
-+  (((reg) < DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
- #endif
- 
- #ifdef UNW_LOCAL_ONLY
--- 
-1.7.9.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-disable-tests.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-disable-tests.patch
deleted file mode 100644
index 7309ffd..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-disable-tests.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b07435a90bd636ee718e2238fb46c74a6dd5e069 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 22 Mar 2016 16:41:13 +0000
-Subject: [PATCH] disable tests
-
-Tests use getcontext() API which is
-not there on musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Inappropriate [MUSL-only]
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index e24fe1e..15380e4 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -39,7 +39,7 @@ endif
- 
- nodist_include_HEADERS = include/libunwind-common.h
- 
--SUBDIRS = src tests doc
-+SUBDIRS = src doc
- 
- noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h	\
- 	include/compiler.h include/libunwind_i.h include/mempool.h	\
--- 
-1.8.3.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/AArch64-port.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/AArch64-port.patch
deleted file mode 100644
index 228ec32..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/AArch64-port.patch
+++ /dev/null
@@ -1,2529 +0,0 @@
-From ac6c0a6535975f1dc2da6e4e2766614baac2a14a Mon Sep 17 00:00:00 2001
-From: Yvan Roux <yvan.roux@linaro.org>
-Date: Sat, 11 May 2013 09:18:23 -0600
-Subject: [PATCH] AArch64 port.
-
-Upstream-Status: Backport
-
----
- Makefile.am                          |    6 
- README                               |    1 
- configure.ac                         |    6 
- include/libunwind-aarch64.h          |  187 ++++++++++++++++++++++
- include/libunwind.h.in               |    4 
- include/tdep-aarch64/dwarf-config.h  |   52 ++++++
- include/tdep-aarch64/jmpbuf.h        |   33 +++
- include/tdep-aarch64/libunwind_i.h   |  294 +++++++++++++++++++++++++++++++++++
- include/tdep/dwarf-config.h          |    4 
- include/tdep/jmpbuf.h                |    2 
- include/tdep/libunwind_i.h.in        |    4 
- src/Makefile.am                      |   39 ++++
- src/aarch64/Gcreate_addr_space.c     |   60 +++++++
- src/aarch64/Gget_proc_info.c         |   39 ++++
- src/aarch64/Gget_save_loc.c          |  100 +++++++++++
- src/aarch64/Gglobal.c                |   57 ++++++
- src/aarch64/Ginit.c                  |  187 ++++++++++++++++++++++
- src/aarch64/Ginit_local.c            |   55 ++++++
- src/aarch64/Ginit_remote.c           |   45 +++++
- src/aarch64/Gis_signal_frame.c       |   64 +++++++
- src/aarch64/Gregs.c                  |  113 +++++++++++++
- src/aarch64/Gresume.c                |  177 +++++++++++++++++++++
- src/aarch64/Gstep.c                  |  129 +++++++++++++++
- src/aarch64/Lcreate_addr_space.c     |    5 
- src/aarch64/Lget_proc_info.c         |    5 
- src/aarch64/Lget_save_loc.c          |    5 
- src/aarch64/Lglobal.c                |    5 
- src/aarch64/Linit.c                  |    5 
- src/aarch64/Linit_local.c            |    5 
- src/aarch64/Linit_remote.c           |    5 
- src/aarch64/Lis_signal_frame.c       |    5 
- src/aarch64/Lregs.c                  |    5 
- src/aarch64/Lresume.c                |    5 
- src/aarch64/Lstep.c                  |    5 
- src/aarch64/gen-offsets.c            |   68 ++++++++
- src/aarch64/init.h                   |  127 +++++++++++++++
- src/aarch64/is_fpreg.c               |   32 +++
- src/aarch64/offsets.h                |   49 +++++
- src/aarch64/regname.c                |  106 ++++++++++++
- src/aarch64/siglongjmp.S             |   12 +
- src/aarch64/unwind_i.h               |   43 +++++
- src/coredump/_UCD_access_reg_linux.c |    5 
- src/ptrace/_UPT_reg_offset.c         |   36 ++++
- 43 files changed, 2184 insertions(+), 7 deletions(-)
- create mode 100644 include/libunwind-aarch64.h
- create mode 100644 include/tdep-aarch64/dwarf-config.h
- create mode 100644 include/tdep-aarch64/jmpbuf.h
- create mode 100644 include/tdep-aarch64/libunwind_i.h
- create mode 100644 src/aarch64/Gcreate_addr_space.c
- create mode 100644 src/aarch64/Gget_proc_info.c
- create mode 100644 src/aarch64/Gget_save_loc.c
- create mode 100644 src/aarch64/Gglobal.c
- create mode 100644 src/aarch64/Ginit.c
- create mode 100644 src/aarch64/Ginit_local.c
- create mode 100644 src/aarch64/Ginit_remote.c
- create mode 100644 src/aarch64/Gis_signal_frame.c
- create mode 100644 src/aarch64/Gregs.c
- create mode 100644 src/aarch64/Gresume.c
- create mode 100644 src/aarch64/Gstep.c
- create mode 100644 src/aarch64/Lcreate_addr_space.c
- create mode 100644 src/aarch64/Lget_proc_info.c
- create mode 100644 src/aarch64/Lget_save_loc.c
- create mode 100644 src/aarch64/Lglobal.c
- create mode 100644 src/aarch64/Linit.c
- create mode 100644 src/aarch64/Linit_local.c
- create mode 100644 src/aarch64/Linit_remote.c
- create mode 100644 src/aarch64/Lis_signal_frame.c
- create mode 100644 src/aarch64/Lregs.c
- create mode 100644 src/aarch64/Lresume.c
- create mode 100644 src/aarch64/Lstep.c
- create mode 100644 src/aarch64/gen-offsets.c
- create mode 100644 src/aarch64/init.h
- create mode 100644 src/aarch64/is_fpreg.c
- create mode 100644 src/aarch64/offsets.h
- create mode 100644 src/aarch64/regname.c
- create mode 100644 src/aarch64/siglongjmp.S
- create mode 100644 src/aarch64/unwind_i.h
-
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2,6 +2,9 @@ include_HEADERS = include/libunwind-dyna
-     include/libunwind-ptrace.h \
-     include/libunwind-coredump.h
- 
-+if ARCH_AARCH64
-+include_HEADERS += include/libunwind-aarch64.h
-+endif
- if ARCH_ARM
- include_HEADERS += include/libunwind-arm.h
- endif
-@@ -41,6 +44,9 @@ SUBDIRS = src tests doc
- noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h	\
- 	include/compiler.h include/libunwind_i.h include/mempool.h	\
- 	include/remote.h						\
-+	include/tdep-aarch64/dwarf-config.h				\
-+	include/tdep-aarch64/jmpbuf.h					\
-+	include/tdep-aarch64/libunwind_i.h				\
- 	include/tdep-arm/dwarf-config.h	include/tdep-arm/ex_tables.h	\
- 	include/tdep-arm/jmpbuf.h include/tdep-arm/libunwind_i.h	\
- 	include/tdep-ia64/jmpbuf.h include/tdep-ia64/rse.h 		\
---- a/README
-+++ b/README
-@@ -9,6 +9,7 @@ several architecture/operating-system co
-  Linux/IA-64:	Fully tested and supported.
-  Linux/PARISC:	Works well, but C library missing unwind-info.
-  HP-UX/IA-64:	Mostly works but known to have some serious limitations.
-+ Linux/AArch64:	Newly added.
-  Linux/PPC64:	Newly added.
-  Linux/SuperH:	Newly added.
-  FreeBSD/i386:	Newly added.
---- a/configure.ac
-+++ b/configure.ac
-@@ -104,7 +104,7 @@ SET_ARCH([$target_cpu],[target_arch])
- 
- AC_ARG_ENABLE(coredump,
- 	AS_HELP_STRING([--enable-coredump],[building libunwind-coredump library]),,
--        [AS_CASE([$host_arch], [arm*|mips*|sh*|x86*], [enable_coredump=yes], [enable_coredump=no])]
-+        [AS_CASE([$host_arch], [aarch64*|arm*|mips*|sh*|x86*], [enable_coredump=yes], [enable_coredump=no])]
- )
- 
- AC_MSG_CHECKING([if we should build libunwind-coredump])
-@@ -121,6 +121,7 @@ AC_MSG_RESULT([$target_os])
- 
- AM_CONDITIONAL(BUILD_COREDUMP, test x$enable_coredump = xyes)
- AM_CONDITIONAL(REMOTE_ONLY, test x$target_arch != x$host_arch)
-+AM_CONDITIONAL(ARCH_AARCH64, test x$target_arch = xaarch64)
- AM_CONDITIONAL(ARCH_ARM, test x$target_arch = xarm)
- AM_CONDITIONAL(ARCH_IA64, test x$target_arch = xia64)
- AM_CONDITIONAL(ARCH_HPPA, test x$target_arch = xhppa)
-@@ -137,7 +138,7 @@ AM_CONDITIONAL(OS_FREEBSD, expr x$target
- AC_MSG_CHECKING([for ELF helper width])
- case "${target_arch}" in
- (arm|hppa|ppc32|x86|sh) use_elf32=yes; AC_MSG_RESULT([32]);;
--(ia64|ppc64|x86_64)    use_elf64=yes; AC_MSG_RESULT([64]);;
-+(aarch64|ia64|ppc64|x86_64)    use_elf64=yes; AC_MSG_RESULT([64]);;
- (mips)                 use_elfxx=yes; AC_MSG_RESULT([xx]);;
- *)                     AC_MSG_ERROR([Unknown ELF target: ${target_arch}])
- esac
-@@ -186,6 +187,7 @@ AS_HELP_STRING([--enable-cxx-exceptions]
- # C++ exception handling doesn't work too well on x86
- case $target_arch in
-   x86*) enable_cxx_exceptions=no;;
-+  aarch64*) enable_cxx_exceptions=no;;
-   arm*) enable_cxx_exceptions=no;;
-   mips*) enable_cxx_exceptions=no;;
-   *) enable_cxx_exceptions=yes;;
---- /dev/null
-+++ b/include/libunwind-aarch64.h
-@@ -0,0 +1,187 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2001-2004 Hewlett-Packard Co
-+	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#ifndef LIBUNWIND_H
-+#define LIBUNWIND_H
-+
-+#if defined(__cplusplus) || defined(c_plusplus)
-+extern "C" {
-+#endif
-+
-+#include <inttypes.h>
-+#include <stddef.h>
-+#include <ucontext.h>
-+
-+#define UNW_TARGET	aarch64
-+#define UNW_TARGET_AARCH64	1
-+
-+#define _U_TDEP_QP_TRUE	0	/* see libunwind-dynamic.h  */
-+
-+/* This needs to be big enough to accommodate "struct cursor", while
-+   leaving some slack for future expansion.  Changing this value will
-+   require recompiling all users of this library.  Stack allocation is
-+   relatively cheap and unwind-state copying is relatively rare, so we
-+   want to err on making it rather too big than too small.  */
-+
-+#define UNW_TDEP_CURSOR_LEN	4096
-+
-+typedef uint64_t unw_word_t;
-+typedef int64_t unw_sword_t;
-+
-+typedef long double unw_tdep_fpreg_t;
-+
-+typedef struct
-+  {
-+    /* no aarch64-specific auxiliary proc-info */
-+  }
-+unw_tdep_proc_info_t;
-+
-+typedef enum
-+  {
-+    /* 64-bit general registers.  */
-+    UNW_AARCH64_X0,
-+    UNW_AARCH64_X1,
-+    UNW_AARCH64_X2,
-+    UNW_AARCH64_X3,
-+    UNW_AARCH64_X4,
-+    UNW_AARCH64_X5,
-+    UNW_AARCH64_X6,
-+    UNW_AARCH64_X7,
-+    UNW_AARCH64_X8,
-+
-+    /* Temporary registers.  */
-+    UNW_AARCH64_X9,
-+    UNW_AARCH64_X10,
-+    UNW_AARCH64_X11,
-+    UNW_AARCH64_X12,
-+    UNW_AARCH64_X13,
-+    UNW_AARCH64_X14,
-+    UNW_AARCH64_X15,
-+
-+    /* Intra-procedure-call temporary registers.  */
-+    UNW_AARCH64_X16,
-+    UNW_AARCH64_X17,
-+
-+    /* Callee-saved registers.  */
-+    UNW_AARCH64_X18,
-+    UNW_AARCH64_X19,
-+    UNW_AARCH64_X20,
-+    UNW_AARCH64_X21,
-+    UNW_AARCH64_X22,
-+    UNW_AARCH64_X23,
-+    UNW_AARCH64_X24,
-+    UNW_AARCH64_X25,
-+    UNW_AARCH64_X26,
-+    UNW_AARCH64_X27,
-+    UNW_AARCH64_X28,
-+
-+    /* 64-bit frame pointer.  */
-+    UNW_AARCH64_X29,
-+
-+    /* 64-bit link register.  */
-+    UNW_AARCH64_X30,
-+
-+    /* 64-bit stack pointer.  */
-+    UNW_AARCH64_SP =  31,
-+    UNW_AARCH64_PC,
-+    UNW_AARCH64_PSTATE,
-+
-+    /* 128-bit FP/Advanced SIMD registers.  */
-+    UNW_AARCH64_V0 = 64,
-+    UNW_AARCH64_V1,
-+    UNW_AARCH64_V2,
-+    UNW_AARCH64_V3,
-+    UNW_AARCH64_V4,
-+    UNW_AARCH64_V5,
-+    UNW_AARCH64_V6,
-+    UNW_AARCH64_V7,
-+    UNW_AARCH64_V8,
-+    UNW_AARCH64_V9,
-+    UNW_AARCH64_V10,
-+    UNW_AARCH64_V11,
-+    UNW_AARCH64_V12,
-+    UNW_AARCH64_V13,
-+    UNW_AARCH64_V14,
-+    UNW_AARCH64_V15,
-+    UNW_AARCH64_V16,
-+    UNW_AARCH64_V17,
-+    UNW_AARCH64_V18,
-+    UNW_AARCH64_V19,
-+    UNW_AARCH64_V20,
-+    UNW_AARCH64_V21,
-+    UNW_AARCH64_V22,
-+    UNW_AARCH64_V23,
-+    UNW_AARCH64_V24,
-+    UNW_AARCH64_V25,
-+    UNW_AARCH64_V26,
-+    UNW_AARCH64_V27,
-+    UNW_AARCH64_V28,
-+    UNW_AARCH64_V29,
-+    UNW_AARCH64_V30,
-+    UNW_AARCH64_V31,
-+
-+    UNW_AARCH64_FPSR,
-+    UNW_AARCH64_FPCR,
-+
-+    /* For AArch64, the CFA is the value of SP (x31) at the call site of the
-+       previous frame.  */
-+    UNW_AARCH64_CFA = UNW_AARCH64_SP,
-+
-+    UNW_TDEP_LAST_REG = UNW_AARCH64_FPCR,
-+
-+    UNW_TDEP_IP = UNW_AARCH64_X30,
-+    UNW_TDEP_SP = UNW_AARCH64_SP,
-+    UNW_TDEP_EH = UNW_AARCH64_X0,
-+
-+  }
-+aarch64_regnum_t;
-+
-+/* Use R0 through R3 to pass exception handling information.  */
-+#define UNW_TDEP_NUM_EH_REGS	4
-+
-+typedef struct unw_tdep_save_loc
-+  {
-+    /* Additional target-dependent info on a save location.  */
-+  }
-+unw_tdep_save_loc_t;
-+
-+
-+/* On AArch64, we can directly use ucontext_t as the unwind context.  */
-+typedef ucontext_t unw_tdep_context_t;
-+
-+#include "libunwind-common.h"
-+#include "libunwind-dynamic.h"
-+
-+#define unw_tdep_getcontext(uc)         (getcontext (uc), 0)
-+#define unw_tdep_is_fpreg		UNW_ARCH_OBJ(is_fpreg)
-+
-+extern int unw_tdep_is_fpreg (int);
-+
-+#if defined(__cplusplus) || defined(c_plusplus)
-+}
-+#endif
-+
-+#endif /* LIBUNWIND_H */
---- a/include/libunwind.h.in
-+++ b/include/libunwind.h.in
-@@ -3,7 +3,9 @@
- 
- #ifndef UNW_REMOTE_ONLY
- 
--#if defined __arm__
-+#if defined __aarch64__
-+#include "libunwind-aarch64.h"
-+#elif defined __arm__
- # include "libunwind-arm.h"
- #elif defined __hppa__
- # include "libunwind-hppa.h"
---- /dev/null
-+++ b/include/tdep-aarch64/dwarf-config.h
-@@ -0,0 +1,52 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#ifndef dwarf_config_h
-+#define dwarf_config_h
-+
-+/* This matches the value udes by GCC (see
-+   gcc/config/aarch64/aarch64.h:DWARF_FRAME_REGISTERS.  */
-+#define DWARF_NUM_PRESERVED_REGS	97
-+
-+/* Return TRUE if the ADDR_SPACE uses big-endian byte-order.  */
-+#define dwarf_is_big_endian(addr_space)	0
-+
-+#define dwarf_to_unw_regnum(reg) (((reg) <= UNW_AARCH64_V31) ? (reg) : 0)
-+
-+/* Convert a pointer to a dwarf_cursor structure to a pointer to
-+   unw_cursor_t.  */
-+#define dwarf_to_cursor(c)	((unw_cursor_t *) (c))
-+
-+typedef struct dwarf_loc
-+  {
-+    unw_word_t val;
-+#ifndef UNW_LOCAL_ONLY
-+    unw_word_t type;		/* see DWARF_LOC_TYPE_* macros.  */
-+#endif
-+  }
-+dwarf_loc_t;
-+
-+#endif /* dwarf_config_h */
---- /dev/null
-+++ b/include/tdep-aarch64/jmpbuf.h
-@@ -0,0 +1,33 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+/* Use glibc's jump-buffer indices; NPTL peeks at SP: */
-+
-+/* FIXME for AArch64  */
-+
-+#define JB_SP		13
-+#define JB_RP		14
-+#define JB_MASK_SAVED	15
-+#define JB_MASK		16
---- /dev/null
-+++ b/include/tdep-aarch64/libunwind_i.h
-@@ -0,0 +1,294 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2001-2005 Hewlett-Packard Co
-+	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#ifndef AARCH64_LIBUNWIND_I_H
-+#define AARCH64_LIBUNWIND_I_H
-+
-+/* Target-dependent definitions that are internal to libunwind but need
-+   to be shared with target-independent code.  */
-+
-+#include <stdlib.h>
-+#include <libunwind.h>
-+
-+#include "elf64.h"
-+#include "mempool.h"
-+#include "dwarf.h"
-+
-+typedef struct
-+  {
-+    /* no aarch64-specific fast trace */
-+  }
-+unw_tdep_frame_t;
-+
-+#ifdef UNW_LOCAL_ONLY
-+
-+typedef unw_word_t aarch64_loc_t;
-+
-+#else /* !UNW_LOCAL_ONLY */
-+
-+typedef struct aarch64_loc
-+  {
-+    unw_word_t w0, w1;
-+  }
-+aarch64_loc_t;
-+
-+#endif /* !UNW_LOCAL_ONLY */
-+
-+struct unw_addr_space
-+  {
-+    struct unw_accessors acc;
-+    int big_endian;
-+    unw_caching_policy_t caching_policy;
-+#ifdef HAVE_ATOMIC_OPS_H
-+    AO_t cache_generation;
-+#else
-+    uint32_t cache_generation;
-+#endif
-+    unw_word_t dyn_generation;          /* see dyn-common.h */
-+    unw_word_t dyn_info_list_addr;	/* (cached) dyn_info_list_addr */
-+    struct dwarf_rs_cache global_cache;
-+    struct unw_debug_frame_list *debug_frames;
-+   };
-+
-+struct cursor
-+  {
-+    struct dwarf_cursor dwarf;          /* must be first */
-+    enum
-+      {
-+        AARCH64_SCF_NONE,
-+        AARCH64_SCF_LINUX_RT_SIGFRAME,
-+      }
-+    sigcontext_format;
-+    unw_word_t sigcontext_addr;
-+    unw_word_t sigcontext_sp;
-+    unw_word_t sigcontext_pc;
-+  };
-+
-+#define DWARF_GET_LOC(l)        ((l).val)
-+
-+#ifdef UNW_LOCAL_ONLY
-+# define DWARF_NULL_LOC         DWARF_LOC (0, 0)
-+# define DWARF_IS_NULL_LOC(l)   (DWARF_GET_LOC (l) == 0)
-+# define DWARF_LOC(r, t)        ((dwarf_loc_t) { .val = (r) })
-+# define DWARF_IS_REG_LOC(l)    0
-+# define DWARF_REG_LOC(c,r)     (DWARF_LOC((unw_word_t)                      \
-+                                 tdep_uc_addr((c)->as_arg, (r)), 0))
-+# define DWARF_MEM_LOC(c,m)     DWARF_LOC ((m), 0)
-+# define DWARF_FPREG_LOC(c,r)   (DWARF_LOC((unw_word_t)                      \
-+                                 tdep_uc_addr((c)->as_arg, (r)), 0))
-+
-+static inline int
-+dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *val = *(unw_fpreg_t *) DWARF_GET_LOC (loc);
-+  return 0;
-+}
-+
-+static inline int
-+dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *(unw_fpreg_t *) DWARF_GET_LOC (loc) = val;
-+  return 0;
-+}
-+
-+static inline int
-+dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *val = *(unw_word_t *) DWARF_GET_LOC (loc);
-+  return 0;
-+}
-+
-+static inline int
-+dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *(unw_word_t *) DWARF_GET_LOC (loc) = val;
-+  return 0;
-+}
-+
-+#else /* !UNW_LOCAL_ONLY */
-+# define DWARF_LOC_TYPE_FP      (1 << 0)
-+# define DWARF_LOC_TYPE_REG     (1 << 1)
-+# define DWARF_NULL_LOC         DWARF_LOC (0, 0)
-+# define DWARF_IS_NULL_LOC(l)                                           \
-+                ({ dwarf_loc_t _l = (l); _l.val == 0 && _l.type == 0; })
-+# define DWARF_LOC(r, t)        ((dwarf_loc_t) { .val = (r), .type = (t) })
-+# define DWARF_IS_REG_LOC(l)    (((l).type & DWARF_LOC_TYPE_REG) != 0)
-+# define DWARF_IS_FP_LOC(l)     (((l).type & DWARF_LOC_TYPE_FP) != 0)
-+# define DWARF_REG_LOC(c,r)     DWARF_LOC((r), DWARF_LOC_TYPE_REG)
-+# define DWARF_MEM_LOC(c,m)     DWARF_LOC ((m), 0)
-+# define DWARF_FPREG_LOC(c,r)   DWARF_LOC((r), (DWARF_LOC_TYPE_REG      \
-+                                                | DWARF_LOC_TYPE_FP))
-+
-+static inline int
-+dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
-+{
-+  char *valp = (char *) &val;
-+  unw_word_t addr;
-+  int ret;
-+
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
-+                                       val, 0, c->as_arg);
-+
-+  addr = DWARF_GET_LOC (loc);
-+  if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
-+                                       0, c->as_arg)) < 0)
-+    return ret;
-+
-+  return (*c->as->acc.access_mem) (c->as, addr + 4, (unw_word_t *) valp + 1, 0,
-+                                   c->as_arg);
-+}
-+
-+static inline int
-+dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
-+{
-+  char *valp = (char *) &val;
-+  unw_word_t addr;
-+  int ret;
-+
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
-+                                       &val, 1, c->as_arg);
-+
-+  addr = DWARF_GET_LOC (loc);
-+  if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
-+                                       1, c->as_arg)) < 0)
-+    return ret;
-+
-+  return (*c->as->acc.access_mem) (c->as, addr + 4, (unw_word_t *) valp + 1,
-+                                   1, c->as_arg);
-+}
-+
-+static inline int
-+dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
-+{
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  /* If a code-generator were to save a value of type unw_word_t in a
-+     floating-point register, we would have to support this case.  I
-+     suppose it could happen with MMX registers, but does it really
-+     happen?  */
-+  assert (!DWARF_IS_FP_LOC (loc));
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
-+                                     0, c->as_arg);
-+  else
-+    return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
-+                                     0, c->as_arg);
-+}
-+
-+static inline int
-+dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
-+{
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  /* If a code-generator were to save a value of type unw_word_t in a
-+     floating-point register, we would have to support this case.  I
-+     suppose it could happen with MMX registers, but does it really
-+     happen?  */
-+  assert (!DWARF_IS_FP_LOC (loc));
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val,
-+                                     1, c->as_arg);
-+  else
-+    return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val,
-+                                     1, c->as_arg);
-+}
-+
-+#endif /* !UNW_LOCAL_ONLY */
-+
-+
-+
-+#define tdep_getcontext_trace           unw_getcontext
-+#define tdep_init_done			UNW_OBJ(init_done)
-+#define tdep_init			UNW_OBJ(init)
-+/* Platforms that support UNW_INFO_FORMAT_TABLE need to define
-+   tdep_search_unwind_table.  */
-+#define tdep_search_unwind_table	dwarf_search_unwind_table
-+#define tdep_find_unwind_table	        dwarf_find_unwind_table
-+#define tdep_uc_addr			UNW_OBJ(uc_addr)
-+#define tdep_get_elf_image		UNW_ARCH_OBJ(get_elf_image)
-+#define tdep_access_reg			UNW_OBJ(access_reg)
-+#define tdep_access_fpreg		UNW_OBJ(access_fpreg)
-+#define tdep_fetch_frame(c,ip,n)	do {} while(0)
-+#define tdep_cache_frame(c,rs)		do {} while(0)
-+#define tdep_reuse_frame(c,rs)		do {} while(0)
-+#define tdep_stash_frame(c,rs)		do {} while(0)
-+#define tdep_trace(cur,addr,n)		(-UNW_ENOINFO)
-+
-+#ifdef UNW_LOCAL_ONLY
-+# define tdep_find_proc_info(c,ip,n)                            \
-+        dwarf_find_proc_info((c)->as, (ip), &(c)->pi, (n),      \
-+                                       (c)->as_arg)
-+# define tdep_put_unwind_info(as,pi,arg)                \
-+        dwarf_put_unwind_info((as), (pi), (arg))
-+#else
-+# define tdep_find_proc_info(c,ip,n)                                    \
-+        (*(c)->as->acc.find_proc_info)((c)->as, (ip), &(c)->pi, (n),    \
-+                                       (c)->as_arg)
-+# define tdep_put_unwind_info(as,pi,arg)                \
-+        (*(as)->acc.put_unwind_info)((as), (pi), (arg))
-+#endif
-+
-+#define tdep_get_as(c)                  ((c)->dwarf.as)
-+#define tdep_get_as_arg(c)              ((c)->dwarf.as_arg)
-+#define tdep_get_ip(c)                  ((c)->dwarf.ip)
-+#define tdep_big_endian(as)             ((as)->big_endian)
-+
-+extern int tdep_init_done;
-+
-+extern void tdep_init (void);
-+extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip,
-+				     unw_dyn_info_t *di, unw_proc_info_t *pi,
-+				     int need_unwind_info, void *arg);
-+extern void *tdep_uc_addr (unw_tdep_context_t *uc, int reg);
-+extern int tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip,
-+			       unsigned long *segbase, unsigned long *mapoff,
-+			       char *path, size_t pathlen);
-+extern int tdep_access_reg (struct cursor *c, unw_regnum_t reg,
-+			    unw_word_t *valp, int write);
-+extern int tdep_access_fpreg (struct cursor *c, unw_regnum_t reg,
-+			      unw_fpreg_t *valp, int write);
-+
-+#endif /* AARCH64_LIBUNWIND_I_H */
---- a/include/tdep/dwarf-config.h
-+++ b/include/tdep/dwarf-config.h
-@@ -1,7 +1,9 @@
- /* Provide a real file - not a symlink - as it would cause multiarch conflicts
-    when multiple different arch releases are installed simultaneously.  */
- 
--#if defined __arm__
-+#if defined __aarch64__
-+# include "tdep-aarch64/dwarf-config.h"
-+#elif defined __arm__
- # include "tdep-arm/dwarf-config.h"
- #elif defined __hppa__
- # include "tdep-hppa/dwarf-config.h"
---- a/include/tdep/jmpbuf.h
-+++ b/include/tdep/jmpbuf.h
-@@ -3,6 +3,8 @@
- 
- #ifndef UNW_REMOTE_ONLY
- 
-+#if defined __aarch64__
-+# include "tdep-aarch64/jmpbuf.h"
- #if defined __arm__
- # include "tdep-arm/jmpbuf.h"
- #elif defined __hppa__
---- a/include/tdep/libunwind_i.h.in
-+++ b/include/tdep/libunwind_i.h.in
-@@ -3,7 +3,9 @@
- 
- #ifndef UNW_REMOTE_ONLY
- 
--#if defined __arm__
-+#if defined __aarch64__
-+# include "tdep-aarch64/libunwind_i.h"
-+#elif defined __arm__
- # include "tdep-arm/libunwind_i.h"
- #elif defined __hppa__
- # include "tdep-hppa/libunwind_i.h"
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -170,6 +170,28 @@ libunwind_elfxx_la_SOURCES = elfxx.c
- noinst_LTLIBRARIES += $(LIBUNWIND_ELF)
- libunwind_la_LIBADD += $(LIBUNWIND_ELF)
- 
-+# The list of files that go into libunwind and libunwind-aarch64:
-+noinst_HEADERS += aarch64/init.h aarch64/offsets.h aarch64/unwind_i.h
-+libunwind_la_SOURCES_aarch64_common = $(libunwind_la_SOURCES_common)	    \
-+	aarch64/is_fpreg.c aarch64/regname.c
-+
-+# The list of files that go into libunwind:
-+libunwind_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common)	    \
-+	$(libunwind_la_SOURCES_local)					    \
-+	aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c 		    \
-+	aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c	    \
-+	aarch64/Linit_local.c aarch64/Linit_remote.c 			    \
-+	aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c 	    \
-+	aarch64/Lstep.c
-+
-+libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \
-+	$(libunwind_la_SOURCES_generic)					      \
-+	aarch64/Gcreate_addr_space.c aarch64/Gget_proc_info.c 		      \
-+	aarch64/Gget_save_loc.c aarch64/Gglobal.c aarch64/Ginit.c 	      \
-+	aarch64/Ginit_local.c aarch64/Ginit_remote.c			      \
-+	aarch64/Gis_signal_frame.c aarch64/Gregs.c aarch64/Gresume.c	      \
-+	aarch64/Gstep.c
-+
- # The list of files that go into libunwind and libunwind-arm:
- noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h
- libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common)	    \
-@@ -418,6 +440,18 @@ if OS_FREEBSD
-  libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_freebsd.c
- endif
- 
-+if ARCH_AARCH64
-+ lib_LTLIBRARIES += libunwind-aarch64.la
-+ libunwind_la_SOURCES = $(libunwind_la_SOURCES_aarch64)
-+ libunwind_aarch64_la_SOURCES = $(libunwind_aarch64_la_SOURCES_aarch64)
-+ libunwind_aarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
-+ libunwind_aarch64_la_LIBADD = libunwind-dwarf-generic.la
-+ libunwind_aarch64_la_LIBADD += libunwind-elf64.la
-+if !REMOTE_ONLY
-+ libunwind_aarch64_la_LIBADD += libunwind.la -lc
-+endif
-+ libunwind_setjmp_la_SOURCES += aarch64/siglongjmp.S
-+else
- if ARCH_ARM
-  lib_LTLIBRARIES += libunwind-arm.la
-  libunwind_la_SOURCES = $(libunwind_la_SOURCES_arm)
-@@ -545,6 +579,7 @@ endif # ARCH_MIPS
- endif # ARCH_HPPA
- endif # ARCH_IA64
- endif # ARCH_ARM
-+endif # ARCH_AARCH64
- 
- # libunwind-setjmp depends on libunwind-$(arch). Therefore must be added
- # at the end.
-@@ -567,7 +602,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -I
- AM_CCASFLAGS = $(AM_CPPFLAGS)
- noinst_HEADERS += unwind/unwind-internal.h
- 
--EXTRA_DIST =	$(libunwind_la_SOURCES_arm)			\
-+EXTRA_DIST =	$(libunwind_la_SOURCES_aarch64)			\
-+		$(libunwind_la_SOURCES_arm)			\
- 		$(libunwind_la_SOURCES_hppa)			\
- 		$(libunwind_la_SOURCES_ia64)			\
- 		$(libunwind_la_SOURCES_mips)			\
-@@ -579,6 +615,7 @@ EXTRA_DIST =	$(libunwind_la_SOURCES_arm)
- 		$(libunwind_la_SOURCES_common)			\
- 		$(libunwind_la_SOURCES_local)			\
- 		$(libunwind_la_SOURCES_generic)			\
-+		$(libunwind_aarch64_la_SOURCES_aarch64)		\
- 		$(libunwind_arm_la_SOURCES_arm)			\
- 		$(libunwind_hppa_la_SOURCES_hppa)		\
- 		$(libunwind_ia64_la_SOURCES_ia64)		\
---- /dev/null
-+++ b/src/aarch64/Gcreate_addr_space.c
-@@ -0,0 +1,60 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include <string.h>
-+#include <stdlib.h>
-+
-+#include "unwind_i.h"
-+
-+PROTECTED unw_addr_space_t
-+unw_create_addr_space (unw_accessors_t *a, int byte_order)
-+{
-+#ifdef UNW_LOCAL_ONLY
-+  return NULL;
-+#else
-+  unw_addr_space_t as;
-+
-+  /* AArch64 supports little-endian and big-endian. */
-+  if (byte_order != 0 && byte_order != __LITTLE_ENDIAN
-+      && byte_order != __BIG_ENDIAN)
-+    return NULL;
-+
-+  as = malloc (sizeof (*as));
-+  if (!as)
-+    return NULL;
-+
-+  memset (as, 0, sizeof (*as));
-+
-+  as->acc = *a;
-+
-+  /* Default to little-endian for AArch64. */
-+  if (byte_order == 0 || byte_order == __LITTLE_ENDIAN)
-+    as->big_endian = 0;
-+  else
-+    as->big_endian = 1;
-+
-+  return as;
-+#endif
-+}
---- /dev/null
-+++ b/src/aarch64/Gget_proc_info.c
-@@ -0,0 +1,39 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+
-+PROTECTED int
-+unw_get_proc_info (unw_cursor_t *cursor, unw_proc_info_t *pi)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  int ret;
-+
-+  ret = dwarf_make_proc_info (&c->dwarf);
-+  if (ret < 0)
-+    return ret;
-+
-+  *pi = c->dwarf.pi;
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/Gget_save_loc.c
-@@ -0,0 +1,100 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+
-+PROTECTED int
-+unw_get_save_loc (unw_cursor_t *cursor, int reg, unw_save_loc_t *sloc)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  dwarf_loc_t loc;
-+
-+  switch (reg)
-+    {
-+    case UNW_AARCH64_X0:
-+    case UNW_AARCH64_X1:
-+    case UNW_AARCH64_X2:
-+    case UNW_AARCH64_X3:
-+    case UNW_AARCH64_X4:
-+    case UNW_AARCH64_X5:
-+    case UNW_AARCH64_X6:
-+    case UNW_AARCH64_X7:
-+    case UNW_AARCH64_X8:
-+    case UNW_AARCH64_X9:
-+    case UNW_AARCH64_X10:
-+    case UNW_AARCH64_X11:
-+    case UNW_AARCH64_X12:
-+    case UNW_AARCH64_X13:
-+    case UNW_AARCH64_X14:
-+    case UNW_AARCH64_X15:
-+    case UNW_AARCH64_X16:
-+    case UNW_AARCH64_X17:
-+    case UNW_AARCH64_X18:
-+    case UNW_AARCH64_X19:
-+    case UNW_AARCH64_X20:
-+    case UNW_AARCH64_X21:
-+    case UNW_AARCH64_X22:
-+    case UNW_AARCH64_X23:
-+    case UNW_AARCH64_X24:
-+    case UNW_AARCH64_X25:
-+    case UNW_AARCH64_X26:
-+    case UNW_AARCH64_X27:
-+    case UNW_AARCH64_X28:
-+    case UNW_AARCH64_X29:
-+    case UNW_AARCH64_X30:
-+    case UNW_AARCH64_SP:
-+    case UNW_AARCH64_PC:
-+    case UNW_AARCH64_PSTATE:
-+      loc = c->dwarf.loc[reg];
-+      break;
-+
-+    default:
-+      loc = DWARF_NULL_LOC;	/* default to "not saved" */
-+      break;
-+    }
-+
-+  memset (sloc, 0, sizeof (*sloc));
-+
-+  if (DWARF_IS_NULL_LOC (loc))
-+    {
-+      sloc->type = UNW_SLT_NONE;
-+      return 0;
-+    }
-+
-+#if !defined(UNW_LOCAL_ONLY)
-+  if (DWARF_IS_REG_LOC (loc))
-+    {
-+      sloc->type = UNW_SLT_REG;
-+      sloc->u.regnum = DWARF_GET_LOC (loc);
-+    }
-+  else
-+#endif
-+    {
-+      sloc->type = UNW_SLT_MEMORY;
-+      sloc->u.addr = DWARF_GET_LOC (loc);
-+    }
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/Gglobal.c
-@@ -0,0 +1,57 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+#include "dwarf_i.h"
-+
-+HIDDEN define_lock (aarch64_lock);
-+HIDDEN int tdep_init_done;
-+
-+HIDDEN void
-+tdep_init (void)
-+{
-+  intrmask_t saved_mask;
-+
-+  sigfillset (&unwi_full_mask);
-+
-+  lock_acquire (&aarch64_lock, saved_mask);
-+  {
-+    if (tdep_init_done)
-+      /* another thread else beat us to it... */
-+      goto out;
-+
-+    mi_init ();
-+
-+    dwarf_init ();
-+
-+#ifndef UNW_REMOTE_ONLY
-+    aarch64_local_addr_space_init ();
-+#endif
-+    tdep_init_done = 1;	/* signal that we're initialized... */
-+  }
-+ out:
-+  lock_release (&aarch64_lock, saved_mask);
-+}
---- /dev/null
-+++ b/src/aarch64/Ginit.c
-@@ -0,0 +1,187 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "unwind_i.h"
-+
-+#ifdef UNW_REMOTE_ONLY
-+
-+/* unw_local_addr_space is a NULL pointer in this case.  */
-+PROTECTED unw_addr_space_t unw_local_addr_space;
-+
-+#else /* !UNW_REMOTE_ONLY */
-+
-+static struct unw_addr_space local_addr_space;
-+
-+PROTECTED unw_addr_space_t unw_local_addr_space = &local_addr_space;
-+
-+static inline void *
-+uc_addr (ucontext_t *uc, int reg)
-+{
-+  if (reg >= UNW_AARCH64_X0 && reg <= UNW_AARCH64_V31)
-+    return &uc->uc_mcontext.regs[reg];
-+  else
-+    return NULL;
-+}
-+
-+# ifdef UNW_LOCAL_ONLY
-+
-+HIDDEN void *
-+tdep_uc_addr (ucontext_t *uc, int reg)
-+{
-+  return uc_addr (uc, reg);
-+}
-+
-+# endif /* UNW_LOCAL_ONLY */
-+
-+HIDDEN unw_dyn_info_list_t _U_dyn_info_list;
-+
-+/* XXX fix me: there is currently no way to locate the dyn-info list
-+       by a remote unwinder.  On ia64, this is done via a special
-+       unwind-table entry.  Perhaps something similar can be done with
-+       DWARF2 unwind info.  */
-+
-+static void
-+put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg)
-+{
-+  /* it's a no-op */
-+}
-+
-+static int
-+get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr,
-+			void *arg)
-+{
-+  *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list;
-+  return 0;
-+}
-+
-+static int
-+access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write,
-+	    void *arg)
-+{
-+  if (write)
-+    {
-+      Debug (16, "mem[%lx] <- %lx\n", addr, *val);
-+      *(unw_word_t *) addr = *val;
-+    }
-+  else
-+    {
-+      *val = *(unw_word_t *) addr;
-+      Debug (16, "mem[%lx] -> %lx\n", addr, *val);
-+    }
-+  return 0;
-+}
-+
-+static int
-+access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write,
-+	    void *arg)
-+{
-+  unw_word_t *addr;
-+  ucontext_t *uc = arg;
-+
-+  if (unw_is_fpreg (reg))
-+    goto badreg;
-+
-+  if (!(addr = uc_addr (uc, reg)))
-+    goto badreg;
-+
-+  if (write)
-+    {
-+      *(unw_word_t *) addr = *val;
-+      Debug (12, "%s <- %lx\n", unw_regname (reg), *val);
-+    }
-+  else
-+    {
-+      *val = *(unw_word_t *) addr;
-+      Debug (12, "%s -> %lx\n", unw_regname (reg), *val);
-+    }
-+  return 0;
-+
-+ badreg:
-+  Debug (1, "bad register number %u\n", reg);
-+  return -UNW_EBADREG;
-+}
-+
-+static int
-+access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val,
-+	      int write, void *arg)
-+{
-+  ucontext_t *uc = arg;
-+  unw_fpreg_t *addr;
-+
-+  if (!unw_is_fpreg (reg))
-+    goto badreg;
-+
-+  if (!(addr = uc_addr (uc, reg)))
-+    goto badreg;
-+
-+  if (write)
-+    {
-+      Debug (12, "%s <- %08lx.%08lx.%08lx\n", unw_regname (reg),
-+	     ((long *)val)[0], ((long *)val)[1], ((long *)val)[2]);
-+      *(unw_fpreg_t *) addr = *val;
-+    }
-+  else
-+    {
-+      *val = *(unw_fpreg_t *) addr;
-+      Debug (12, "%s -> %08lx.%08lx.%08lx\n", unw_regname (reg),
-+	     ((long *)val)[0], ((long *)val)[1], ((long *)val)[2]);
-+    }
-+  return 0;
-+
-+ badreg:
-+  Debug (1, "bad register number %u\n", reg);
-+  /* attempt to access a non-preserved register */
-+  return -UNW_EBADREG;
-+}
-+
-+static int
-+get_static_proc_name (unw_addr_space_t as, unw_word_t ip,
-+		      char *buf, size_t buf_len, unw_word_t *offp,
-+		      void *arg)
-+{
-+  return _Uelf64_get_proc_name (as, getpid (), ip, buf, buf_len, offp);
-+}
-+
-+HIDDEN void
-+aarch64_local_addr_space_init (void)
-+{
-+  memset (&local_addr_space, 0, sizeof (local_addr_space));
-+  local_addr_space.caching_policy = UNW_CACHE_GLOBAL;
-+  local_addr_space.acc.find_proc_info = dwarf_find_proc_info;
-+  local_addr_space.acc.put_unwind_info = put_unwind_info;
-+  local_addr_space.acc.get_dyn_info_list_addr = get_dyn_info_list_addr;
-+  local_addr_space.acc.access_mem = access_mem;
-+  local_addr_space.acc.access_reg = access_reg;
-+  local_addr_space.acc.access_fpreg = access_fpreg;
-+  local_addr_space.acc.resume = aarch64_local_resume;
-+  local_addr_space.acc.get_proc_name = get_static_proc_name;
-+  unw_flush_cache (&local_addr_space, 0, 0);
-+}
-+
-+#endif /* !UNW_REMOTE_ONLY */
---- /dev/null
-+++ b/src/aarch64/Ginit_local.c
-@@ -0,0 +1,55 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2011-2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+#include "init.h"
-+
-+#ifdef UNW_REMOTE_ONLY
-+
-+PROTECTED int
-+unw_init_local (unw_cursor_t *cursor, unw_context_t *uc)
-+{
-+  return -UNW_EINVAL;
-+}
-+
-+#else /* !UNW_REMOTE_ONLY */
-+
-+PROTECTED int
-+unw_init_local (unw_cursor_t *cursor, unw_context_t *uc)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+
-+  if (!tdep_init_done)
-+    tdep_init ();
-+
-+  Debug (1, "(cursor=%p)\n", c);
-+
-+  c->dwarf.as = unw_local_addr_space;
-+  c->dwarf.as_arg = uc;
-+
-+  return common_init (c, 1);
-+}
-+
-+#endif /* !UNW_REMOTE_ONLY */
---- /dev/null
-+++ b/src/aarch64/Ginit_remote.c
-@@ -0,0 +1,45 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "init.h"
-+#include "unwind_i.h"
-+
-+PROTECTED int
-+unw_init_remote (unw_cursor_t *cursor, unw_addr_space_t as, void *as_arg)
-+{
-+#ifdef UNW_LOCAL_ONLY
-+  return -UNW_EINVAL;
-+#else /* !UNW_LOCAL_ONLY */
-+  struct cursor *c = (struct cursor *) cursor;
-+
-+  if (!tdep_init_done)
-+    tdep_init ();
-+
-+  Debug (1, "(cursor=%p)\n", c);
-+
-+  c->dwarf.as = as;
-+  c->dwarf.as_arg = as_arg;
-+  return common_init (c, 0);
-+#endif /* !UNW_LOCAL_ONLY */
-+}
---- /dev/null
-+++ b/src/aarch64/Gis_signal_frame.c
-@@ -0,0 +1,64 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+
-+/* The restorer stub will always have the form:
-+
-+   d2801168        movz    x8, #0x8b
-+   d4000001        svc     #0x0
-+*/
-+
-+PROTECTED int
-+unw_is_signal_frame (unw_cursor_t *cursor)
-+{
-+#ifdef __linux__
-+  struct cursor *c = (struct cursor *) cursor;
-+  unw_word_t w0, ip;
-+  unw_addr_space_t as;
-+  unw_accessors_t *a;
-+  void *arg;
-+  int ret;
-+
-+  as = c->dwarf.as;
-+  a = unw_get_accessors (as);
-+  arg = c->dwarf.as_arg;
-+
-+  ip = c->dwarf.ip;
-+
-+  ret = (*a->access_mem) (as, ip, &w0, 0, arg);
-+  if (ret < 0)
-+    return ret;
-+
-+  /* FIXME: distinguish 32bit insn vs 64bit registers.  */
-+  if (w0 != 0xd4000001d2801168)
-+    return 0;
-+
-+  return 1;
-+
-+#else
-+  return -UNW_ENOINFO;
-+#endif
-+}
---- /dev/null
-+++ b/src/aarch64/Gregs.c
-@@ -0,0 +1,113 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+
-+HIDDEN int
-+tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp,
-+		 int write)
-+{
-+  dwarf_loc_t loc = DWARF_NULL_LOC;
-+  unsigned int mask;
-+
-+  switch (reg)
-+    {
-+    case UNW_AARCH64_X0:
-+    case UNW_AARCH64_X1:
-+    case UNW_AARCH64_X2:
-+    case UNW_AARCH64_X3:
-+      mask = 1 << reg;
-+      if (write)
-+        {
-+          c->dwarf.eh_args[reg] = *valp;
-+          c->dwarf.eh_valid_mask |= mask;
-+          return 0;
-+        }
-+      else if ((c->dwarf.eh_valid_mask & mask) != 0)
-+        {
-+          *valp = c->dwarf.eh_args[reg];
-+          return 0;
-+        }
-+      else
-+        loc = c->dwarf.loc[reg];
-+      break;
-+
-+    case UNW_AARCH64_X4:
-+    case UNW_AARCH64_X5:
-+    case UNW_AARCH64_X6:
-+    case UNW_AARCH64_X7:
-+    case UNW_AARCH64_X8:
-+    case UNW_AARCH64_X9:
-+    case UNW_AARCH64_X10:
-+    case UNW_AARCH64_X11:
-+    case UNW_AARCH64_X12:
-+    case UNW_AARCH64_X13:
-+    case UNW_AARCH64_X14:
-+    case UNW_AARCH64_X15:
-+    case UNW_AARCH64_X16:
-+    case UNW_AARCH64_X17:
-+    case UNW_AARCH64_X18:
-+    case UNW_AARCH64_X19:
-+    case UNW_AARCH64_X20:
-+    case UNW_AARCH64_X21:
-+    case UNW_AARCH64_X22:
-+    case UNW_AARCH64_X23:
-+    case UNW_AARCH64_X24:
-+    case UNW_AARCH64_X25:
-+    case UNW_AARCH64_X26:
-+    case UNW_AARCH64_X27:
-+    case UNW_AARCH64_X28:
-+    case UNW_AARCH64_X29:
-+    case UNW_AARCH64_X30:
-+    case UNW_AARCH64_PC:
-+    case UNW_AARCH64_PSTATE:
-+      loc = c->dwarf.loc[reg];
-+      break;
-+
-+    case UNW_AARCH64_SP:
-+      if (write)
-+        return -UNW_EREADONLYREG;
-+      *valp = c->dwarf.cfa;
-+      return 0;
-+
-+    default:
-+      Debug (1, "bad register number %u\n", reg);
-+      return -UNW_EBADREG;
-+    }
-+
-+  if (write)
-+    return dwarf_put (&c->dwarf, loc, *valp);
-+  else
-+    return dwarf_get (&c->dwarf, loc, valp);
-+}
-+
-+HIDDEN int
-+tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, unw_fpreg_t *valp,
-+		   int write)
-+{
-+  Debug (1, "bad register number %u\n", reg);
-+  return -UNW_EBADREG;
-+}
---- /dev/null
-+++ b/src/aarch64/Gresume.c
-@@ -0,0 +1,177 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2011-2013 Linaro Limited
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+#include "offsets.h"
-+
-+#ifndef UNW_REMOTE_ONLY
-+
-+HIDDEN inline int
-+aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
-+{
-+#ifdef __linux__
-+  struct cursor *c = (struct cursor *) cursor;
-+  unw_tdep_context_t *uc = c->dwarf.as_arg;
-+
-+  if (c->sigcontext_format == AARCH64_SCF_NONE)
-+    {
-+      /* Since there are no signals involved here we restore the non scratch
-+	 registers only.  */
-+      unsigned long regs[11];
-+      regs[0] = uc->uc_mcontext.regs[19];
-+      regs[1] = uc->uc_mcontext.regs[20];
-+      regs[2] = uc->uc_mcontext.regs[21];
-+      regs[3] = uc->uc_mcontext.regs[22];
-+      regs[4] = uc->uc_mcontext.regs[23];
-+      regs[5] = uc->uc_mcontext.regs[24];
-+      regs[6] = uc->uc_mcontext.regs[25];
-+      regs[7] = uc->uc_mcontext.regs[26];
-+      regs[8] = uc->uc_mcontext.regs[27];
-+      regs[9] = uc->uc_mcontext.regs[28];
-+      regs[10] = uc->uc_mcontext.regs[30]; /* LR */
-+      unsigned long sp = uc->uc_mcontext.sp;
-+
-+      struct regs_overlay {
-+        char x[sizeof(regs)];
-+      };
-+
-+      asm volatile (
-+        "ldp x19, x20, [%0]\n"
-+        "ldp x21, x22, [%0,16]\n"
-+        "ldp x23, x24, [%0,32]\n"
-+        "ldp x25, x26, [%0,48]\n"
-+        "ldp x27, x28, [%0,64]\n"
-+        "ldr x30, [%0,80]\n"
-+        "mov sp, %1\n"
-+        "ret \n"
-+        :
-+        : "r" (regs),
-+          "r" (sp),
-+          "m" (*(struct regs_overlay *)regs)
-+      );
-+    }
-+  else
-+    {
-+      struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr;
-+
-+      if (c->dwarf.eh_valid_mask & 0x1) sc->regs[0] = c->dwarf.eh_args[0];
-+      if (c->dwarf.eh_valid_mask & 0x2) sc->regs[1] = c->dwarf.eh_args[1];
-+      if (c->dwarf.eh_valid_mask & 0x4) sc->regs[2] = c->dwarf.eh_args[2];
-+      if (c->dwarf.eh_valid_mask & 0x8) sc->regs[3] = c->dwarf.eh_args[3];
-+
-+      sc->regs[4] = uc->uc_mcontext.regs[4];
-+      sc->regs[5] = uc->uc_mcontext.regs[5];
-+      sc->regs[6] = uc->uc_mcontext.regs[6];
-+      sc->regs[7] = uc->uc_mcontext.regs[7];
-+      sc->regs[8] = uc->uc_mcontext.regs[8];
-+      sc->regs[9] = uc->uc_mcontext.regs[9];
-+      sc->regs[10] = uc->uc_mcontext.regs[10];
-+      sc->regs[11] = uc->uc_mcontext.regs[11];
-+      sc->regs[12] = uc->uc_mcontext.regs[12];
-+      sc->regs[13] = uc->uc_mcontext.regs[13];
-+      sc->regs[14] = uc->uc_mcontext.regs[14];
-+      sc->regs[15] = uc->uc_mcontext.regs[15];
-+      sc->regs[16] = uc->uc_mcontext.regs[16];
-+      sc->regs[17] = uc->uc_mcontext.regs[17];
-+      sc->regs[18] = uc->uc_mcontext.regs[18];
-+      sc->regs[19] = uc->uc_mcontext.regs[19];
-+      sc->regs[20] = uc->uc_mcontext.regs[20];
-+      sc->regs[21] = uc->uc_mcontext.regs[21];
-+      sc->regs[22] = uc->uc_mcontext.regs[22];
-+      sc->regs[23] = uc->uc_mcontext.regs[23];
-+      sc->regs[24] = uc->uc_mcontext.regs[24];
-+      sc->regs[25] = uc->uc_mcontext.regs[25];
-+      sc->regs[26] = uc->uc_mcontext.regs[26];
-+      sc->regs[27] = uc->uc_mcontext.regs[27];
-+      sc->regs[28] = uc->uc_mcontext.regs[28];
-+      sc->regs[29] = uc->uc_mcontext.regs[29];
-+      sc->regs[30] = uc->uc_mcontext.regs[30];
-+      sc->sp = uc->uc_mcontext.sp;
-+      sc->pc = uc->uc_mcontext.pc;
-+      sc->pstate = uc->uc_mcontext.pstate;
-+
-+      asm volatile (
-+        "mov sp, %0\n"
-+        "ret %1\n"
-+        : : "r" (c->sigcontext_sp), "r" (c->sigcontext_pc)
-+      );
-+   }
-+  unreachable();
-+#else
-+  printf ("%s: implement me\n", __FUNCTION__);
-+#endif
-+  return -UNW_EINVAL;
-+}
-+
-+#endif /* !UNW_REMOTE_ONLY */
-+
-+static inline void
-+establish_machine_state (struct cursor *c)
-+{
-+  unw_addr_space_t as = c->dwarf.as;
-+  void *arg = c->dwarf.as_arg;
-+  unw_fpreg_t fpval;
-+  unw_word_t val;
-+  int reg;
-+
-+  Debug (8, "copying out cursor state\n");
-+
-+  for (reg = 0; reg <= UNW_AARCH64_PSTATE; ++reg)
-+    {
-+      Debug (16, "copying %s %d\n", unw_regname (reg), reg);
-+      if (unw_is_fpreg (reg))
-+	{
-+	  if (tdep_access_fpreg (c, reg, &fpval, 0) >= 0)
-+	    as->acc.access_fpreg (as, reg, &fpval, 1, arg);
-+	}
-+      else
-+	{
-+	  if (tdep_access_reg (c, reg, &val, 0) >= 0)
-+	    as->acc.access_reg (as, reg, &val, 1, arg);
-+	}
-+    }
-+}
-+
-+PROTECTED int
-+unw_resume (unw_cursor_t *cursor)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+
-+  Debug (1, "(cursor=%p)\n", c);
-+
-+  if (!c->dwarf.ip)
-+    {
-+      /* This can happen easily when the frame-chain gets truncated
-+	 due to bad or missing unwind-info.  */
-+      Debug (1, "refusing to resume execution at address 0\n");
-+      return -UNW_EINVAL;
-+    }
-+
-+  establish_machine_state (c);
-+
-+  return (*c->dwarf.as->acc.resume) (c->dwarf.as, (unw_cursor_t *) c,
-+				     c->dwarf.as_arg);
-+}
---- /dev/null
-+++ b/src/aarch64/Gstep.c
-@@ -0,0 +1,129 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2011-2013 Linaro Limited
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+#include "offsets.h"
-+
-+PROTECTED int
-+unw_handle_signal_frame (unw_cursor_t *cursor)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  int ret;
-+  unw_word_t sc_addr, sp, sp_addr = c->dwarf.cfa;
-+  struct dwarf_loc sp_loc = DWARF_LOC (sp_addr, 0);
-+
-+  if ((ret = dwarf_get (&c->dwarf, sp_loc, &sp)) < 0)
-+    return -UNW_EUNSPEC;
-+
-+  ret = unw_is_signal_frame (cursor);
-+  Debug(1, "unw_is_signal_frame()=%d\n", ret);
-+
-+  /* Save the SP and PC to be able to return execution at this point
-+     later in time (unw_resume).  */
-+  c->sigcontext_sp = c->dwarf.cfa;
-+  c->sigcontext_pc = c->dwarf.ip;
-+
-+  if (ret)
-+    {
-+      c->sigcontext_format = AARCH64_SCF_LINUX_RT_SIGFRAME;
-+      sc_addr = sp_addr + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF;
-+    }
-+  else
-+    return -UNW_EUNSPEC;
-+
-+  c->sigcontext_addr = sc_addr;
-+
-+  /* Update the dwarf cursor.
-+     Set the location of the registers to the corresponding addresses of the
-+     uc_mcontext / sigcontext structure contents.  */
-+  c->dwarf.loc[UNW_AARCH64_X0]  = DWARF_LOC (sc_addr + LINUX_SC_X0_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X1]  = DWARF_LOC (sc_addr + LINUX_SC_X1_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X2]  = DWARF_LOC (sc_addr + LINUX_SC_X2_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X3]  = DWARF_LOC (sc_addr + LINUX_SC_X3_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X4]  = DWARF_LOC (sc_addr + LINUX_SC_X4_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X5]  = DWARF_LOC (sc_addr + LINUX_SC_X5_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X6]  = DWARF_LOC (sc_addr + LINUX_SC_X6_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X7]  = DWARF_LOC (sc_addr + LINUX_SC_X7_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X8]  = DWARF_LOC (sc_addr + LINUX_SC_X8_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X9]  = DWARF_LOC (sc_addr + LINUX_SC_X9_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X10] = DWARF_LOC (sc_addr + LINUX_SC_X10_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X11] = DWARF_LOC (sc_addr + LINUX_SC_X11_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X12] = DWARF_LOC (sc_addr + LINUX_SC_X12_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X13] = DWARF_LOC (sc_addr + LINUX_SC_X13_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X14] = DWARF_LOC (sc_addr + LINUX_SC_X14_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X15] = DWARF_LOC (sc_addr + LINUX_SC_X15_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X16] = DWARF_LOC (sc_addr + LINUX_SC_X16_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X17] = DWARF_LOC (sc_addr + LINUX_SC_X17_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X18] = DWARF_LOC (sc_addr + LINUX_SC_X18_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X19] = DWARF_LOC (sc_addr + LINUX_SC_X19_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X20] = DWARF_LOC (sc_addr + LINUX_SC_X20_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X21] = DWARF_LOC (sc_addr + LINUX_SC_X21_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X22] = DWARF_LOC (sc_addr + LINUX_SC_X22_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X23] = DWARF_LOC (sc_addr + LINUX_SC_X23_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X24] = DWARF_LOC (sc_addr + LINUX_SC_X24_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X25] = DWARF_LOC (sc_addr + LINUX_SC_X25_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X26] = DWARF_LOC (sc_addr + LINUX_SC_X26_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X27] = DWARF_LOC (sc_addr + LINUX_SC_X27_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X28] = DWARF_LOC (sc_addr + LINUX_SC_X28_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X29] = DWARF_LOC (sc_addr + LINUX_SC_X29_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X30] = DWARF_LOC (sc_addr + LINUX_SC_X30_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_SP]  = DWARF_LOC (sc_addr + LINUX_SC_SP_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_PC]  = DWARF_LOC (sc_addr + LINUX_SC_PC_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_PSTATE]  = DWARF_LOC (sc_addr + LINUX_SC_PSTATE_OFF, 0);
-+
-+  /* Set SP/CFA and PC/IP.  */
-+  dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_SP], &c->dwarf.cfa);
-+  dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_PC], &c->dwarf.ip);
-+
-+  c->dwarf.pi_valid = 0;
-+
-+  return 1;
-+}
-+
-+PROTECTED int
-+unw_step (unw_cursor_t *cursor)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  int ret;
-+
-+  Debug (1, "(cursor=%p, ip=0x%016lx, cfa=0x%016lx))\n",
-+	 c, c->dwarf.ip, c->dwarf.cfa);
-+
-+  /* Check if this is a signal frame. */
-+  if (unw_is_signal_frame (cursor))
-+    return unw_handle_signal_frame (cursor);
-+
-+  ret = dwarf_step (&c->dwarf);
-+  Debug(1, "dwarf_step()=%d\n", ret);
-+
-+  if (unlikely (ret == -UNW_ESTOPUNWIND))
-+    return ret;
-+
-+  if (unlikely (ret < 0))
-+    return 0;
-+
-+  return (c->dwarf.ip == 0) ? 0 : 1;
-+}
---- /dev/null
-+++ b/src/aarch64/Lcreate_addr_space.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gcreate_addr_space.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lget_proc_info.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gget_proc_info.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lget_save_loc.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gget_save_loc.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lglobal.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gglobal.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Linit.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Ginit.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Linit_local.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Ginit_local.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Linit_remote.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Ginit_remote.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lis_signal_frame.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gis_signal_frame.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lregs.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gregs.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lresume.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gresume.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lstep.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gstep.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/gen-offsets.c
-@@ -0,0 +1,68 @@
-+#include <stdio.h>
-+#include <stddef.h>
-+#include <ucontext.h>
-+#include <asm/sigcontext.h>
-+
-+#define UC(N,X) \
-+  printf ("#define LINUX_UC_" N "_OFF\t0x%X\n", offsetof (ucontext_t, X))
-+
-+#define SC(N,X) \
-+  printf ("#define LINUX_SC_" N "_OFF\t0x%X\n", offsetof (struct sigcontext, X))
-+
-+int
-+main (void)
-+{
-+  printf (
-+"/* Linux-specific definitions: */\n\n"
-+
-+"/* Define various structure offsets to simplify cross-compilation.  */\n\n"
-+
-+"/* Offsets for AArch64 Linux \"ucontext_t\":  */\n\n");
-+
-+  UC ("FLAGS", uc_flags);
-+  UC ("LINK", uc_link);
-+  UC ("STACK", uc_stack);
-+  UC ("MCONTEXT", uc_mcontext);
-+  UC ("SIGMASK", uc_sigmask);
-+
-+  printf ("\n/* Offsets for AArch64 Linux \"struct sigcontext\":  */\n\n");
-+
-+  SC ("R0",  regs[0]);
-+  SC ("R1",  regs[1]);
-+  SC ("R2",  regs[2]);
-+  SC ("R3",  regs[3]);
-+  SC ("R4",  regs[4]);
-+  SC ("R5",  regs[5]);
-+  SC ("R6",  regs[6]);
-+  SC ("R7",  regs[7]);
-+  SC ("R8",  regs[8]);
-+  SC ("R9",  regs[9]);
-+  SC ("R10", regs[10]);
-+  SC ("R11", regs[11]);
-+  SC ("R12", regs[12]);
-+  SC ("R13", regs[13]);
-+  SC ("R14", regs[14]);
-+  SC ("R15", regs[15]);
-+  SC ("R16", regs[16]);
-+  SC ("R17", regs[17]);
-+  SC ("R18", regs[18]);
-+  SC ("R19", regs[19]);
-+  SC ("R20", regs[20]);
-+  SC ("R21", regs[21]);
-+  SC ("R22", regs[22]);
-+  SC ("R23", regs[23]);
-+  SC ("R24", regs[24]);
-+  SC ("R25", regs[25]);
-+  SC ("R26", regs[26]);
-+  SC ("R27", regs[27]);
-+  SC ("R28", regs[28]);
-+  SC ("R29", regs[29]);
-+  SC ("R30", regs[30]);
-+  SC ("R31", regs[31]);
-+
-+  SC ("PC", pc);
-+  SC ("SP", sp);
-+  SC ("Fault", fault_address);
-+  SC ("state", pstate);
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/init.h
-@@ -0,0 +1,127 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+
-+static inline int
-+common_init (struct cursor *c, unsigned use_prev_instr)
-+{
-+  int ret, i;
-+
-+  c->dwarf.loc[UNW_AARCH64_X0]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X0);
-+  c->dwarf.loc[UNW_AARCH64_X1]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X1);
-+  c->dwarf.loc[UNW_AARCH64_X2]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X2);
-+  c->dwarf.loc[UNW_AARCH64_X3]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X3);
-+  c->dwarf.loc[UNW_AARCH64_X4]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X4);
-+  c->dwarf.loc[UNW_AARCH64_X5]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X5);
-+  c->dwarf.loc[UNW_AARCH64_X6]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X6);
-+  c->dwarf.loc[UNW_AARCH64_X7]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X7);
-+  c->dwarf.loc[UNW_AARCH64_X8]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X8);
-+  c->dwarf.loc[UNW_AARCH64_X9]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X9);
-+  c->dwarf.loc[UNW_AARCH64_X10] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X10);
-+  c->dwarf.loc[UNW_AARCH64_X11] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X11);
-+  c->dwarf.loc[UNW_AARCH64_X12] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X12);
-+  c->dwarf.loc[UNW_AARCH64_X13] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X13);
-+  c->dwarf.loc[UNW_AARCH64_X14] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X14);
-+  c->dwarf.loc[UNW_AARCH64_X15] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X15);
-+  c->dwarf.loc[UNW_AARCH64_X16] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X16);
-+  c->dwarf.loc[UNW_AARCH64_X17] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X17);
-+  c->dwarf.loc[UNW_AARCH64_X18] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X18);
-+  c->dwarf.loc[UNW_AARCH64_X19] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X19);
-+  c->dwarf.loc[UNW_AARCH64_X20] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X20);
-+  c->dwarf.loc[UNW_AARCH64_X21] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X21);
-+  c->dwarf.loc[UNW_AARCH64_X22] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X22);
-+  c->dwarf.loc[UNW_AARCH64_X23] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X23);
-+  c->dwarf.loc[UNW_AARCH64_X24] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X24);
-+  c->dwarf.loc[UNW_AARCH64_X25] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X25);
-+  c->dwarf.loc[UNW_AARCH64_X26] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X26);
-+  c->dwarf.loc[UNW_AARCH64_X27] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X27);
-+  c->dwarf.loc[UNW_AARCH64_X28] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X28);
-+  c->dwarf.loc[UNW_AARCH64_X29] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X29);
-+  c->dwarf.loc[UNW_AARCH64_X30] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X30);
-+  c->dwarf.loc[UNW_AARCH64_SP]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_SP);
-+  c->dwarf.loc[UNW_AARCH64_PC]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_PC);
-+  c->dwarf.loc[UNW_AARCH64_PSTATE] = DWARF_REG_LOC (&c->dwarf,
-+                                                    UNW_AARCH64_PSTATE);
-+  c->dwarf.loc[UNW_AARCH64_V0]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V0);
-+  c->dwarf.loc[UNW_AARCH64_V1]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V1);
-+  c->dwarf.loc[UNW_AARCH64_V2]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V2);
-+  c->dwarf.loc[UNW_AARCH64_V3]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V3);
-+  c->dwarf.loc[UNW_AARCH64_V4]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V4);
-+  c->dwarf.loc[UNW_AARCH64_V5]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V5);
-+  c->dwarf.loc[UNW_AARCH64_V6]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V6);
-+  c->dwarf.loc[UNW_AARCH64_V7]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V7);
-+  c->dwarf.loc[UNW_AARCH64_V8]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V8);
-+  c->dwarf.loc[UNW_AARCH64_V9]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V9);
-+  c->dwarf.loc[UNW_AARCH64_V10] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V10);
-+  c->dwarf.loc[UNW_AARCH64_V11] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V11);
-+  c->dwarf.loc[UNW_AARCH64_V12] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V12);
-+  c->dwarf.loc[UNW_AARCH64_V13] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V13);
-+  c->dwarf.loc[UNW_AARCH64_V14] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V14);
-+  c->dwarf.loc[UNW_AARCH64_V15] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V15);
-+  c->dwarf.loc[UNW_AARCH64_V16] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V16);
-+  c->dwarf.loc[UNW_AARCH64_V17] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V17);
-+  c->dwarf.loc[UNW_AARCH64_V18] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V18);
-+  c->dwarf.loc[UNW_AARCH64_V19] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V19);
-+  c->dwarf.loc[UNW_AARCH64_V20] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V20);
-+  c->dwarf.loc[UNW_AARCH64_V21] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V21);
-+  c->dwarf.loc[UNW_AARCH64_V22] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V22);
-+  c->dwarf.loc[UNW_AARCH64_V23] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V23);
-+  c->dwarf.loc[UNW_AARCH64_V24] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V24);
-+  c->dwarf.loc[UNW_AARCH64_V25] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V25);
-+  c->dwarf.loc[UNW_AARCH64_V26] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V26);
-+  c->dwarf.loc[UNW_AARCH64_V27] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V27);
-+  c->dwarf.loc[UNW_AARCH64_V28] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V28);
-+  c->dwarf.loc[UNW_AARCH64_V29] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V29);
-+  c->dwarf.loc[UNW_AARCH64_V30] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V30);
-+  c->dwarf.loc[UNW_AARCH64_V31] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V31);
-+
-+  for (i = UNW_AARCH64_PSTATE + 1; i < UNW_AARCH64_V0; ++i)
-+    c->dwarf.loc[i] = DWARF_NULL_LOC;
-+
-+  ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_PC], &c->dwarf.ip);
-+  if (ret < 0)
-+    return ret;
-+
-+  ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_SP], &c->dwarf.cfa);
-+  if (ret < 0)
-+    return ret;
-+
-+  c->sigcontext_format = AARCH64_SCF_NONE;
-+  c->sigcontext_addr = 0;
-+  c->sigcontext_sp = 0;
-+  c->sigcontext_pc = 0;
-+
-+  c->dwarf.args_size = 0;
-+  c->dwarf.ret_addr_column = 0;
-+  c->dwarf.stash_frames = 0;
-+  c->dwarf.use_prev_instr = use_prev_instr;
-+  c->dwarf.pi_valid = 0;
-+  c->dwarf.pi_is_dynamic = 0;
-+  c->dwarf.hint = 0;
-+  c->dwarf.prev_rs = 0;
-+
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/is_fpreg.c
-@@ -0,0 +1,32 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "libunwind_i.h"
-+
-+PROTECTED int
-+unw_is_fpreg (int regnum)
-+{
-+  return (regnum >= UNW_AARCH64_V0 && regnum <= UNW_AARCH64_V31);
-+}
---- /dev/null
-+++ b/src/aarch64/offsets.h
-@@ -0,0 +1,49 @@
-+/* Linux-specific definitions: */
-+
-+/* Define various structure offsets to simplify cross-compilation.  */
-+
-+/* Offsets for AArch64 Linux "ucontext_t":  */
-+
-+#define LINUX_UC_FLAGS_OFF	0x0
-+#define LINUX_UC_LINK_OFF	0x8
-+#define LINUX_UC_STACK_OFF	0x10
-+#define LINUX_UC_SIGMASK_OFF	0x28
-+#define LINUX_UC_MCONTEXT_OFF	0xb0
-+
-+/* Offsets for AArch64 Linux "struct sigcontext":  */
-+
-+#define LINUX_SC_FAULTADDRESS_OFF	0x00
-+#define LINUX_SC_X0_OFF		0x008
-+#define LINUX_SC_X1_OFF		0x010
-+#define LINUX_SC_X2_OFF		0x018
-+#define LINUX_SC_X3_OFF		0x020
-+#define LINUX_SC_X4_OFF		0x028
-+#define LINUX_SC_X5_OFF		0x030
-+#define LINUX_SC_X6_OFF		0x038
-+#define LINUX_SC_X7_OFF		0x040
-+#define LINUX_SC_X8_OFF		0x048
-+#define LINUX_SC_X9_OFF		0x050
-+#define LINUX_SC_X10_OFF	0x058
-+#define LINUX_SC_X11_OFF	0x060
-+#define LINUX_SC_X12_OFF	0x068
-+#define LINUX_SC_X13_OFF	0x070
-+#define LINUX_SC_X14_OFF	0x078
-+#define LINUX_SC_X15_OFF	0x080
-+#define LINUX_SC_X16_OFF	0x088
-+#define LINUX_SC_X17_OFF	0x090
-+#define LINUX_SC_X18_OFF	0x098
-+#define LINUX_SC_X19_OFF	0x0a0
-+#define LINUX_SC_X20_OFF	0x0a8
-+#define LINUX_SC_X21_OFF	0x0b0
-+#define LINUX_SC_X22_OFF	0x0b8
-+#define LINUX_SC_X23_OFF	0x0c0
-+#define LINUX_SC_X24_OFF	0x0c8
-+#define LINUX_SC_X25_OFF	0x0d0
-+#define LINUX_SC_X26_OFF	0x0d8
-+#define LINUX_SC_X27_OFF	0x0e0
-+#define LINUX_SC_X28_OFF	0x0e8
-+#define LINUX_SC_X29_OFF	0x0f0
-+#define LINUX_SC_X30_OFF	0x0f8
-+#define LINUX_SC_SP_OFF		0x100
-+#define LINUX_SC_PC_OFF		0x108
-+#define LINUX_SC_PSTATE_OFF	0x110
---- /dev/null
-+++ b/src/aarch64/regname.c
-@@ -0,0 +1,106 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include "unwind_i.h"
-+
-+static const char *const regname[] =
-+  {
-+    [UNW_AARCH64_X0] = "x0",
-+    [UNW_AARCH64_X1] = "x1",
-+    [UNW_AARCH64_X2] = "x2",
-+    [UNW_AARCH64_X3] = "x3",
-+    [UNW_AARCH64_X4] = "x4",
-+    [UNW_AARCH64_X5] = "x5",
-+    [UNW_AARCH64_X6] = "x6",
-+    [UNW_AARCH64_X7] = "x7",
-+    [UNW_AARCH64_X8] = "x8",
-+    [UNW_AARCH64_X9] = "x9",
-+    [UNW_AARCH64_X10] = "x10",
-+    [UNW_AARCH64_X11] = "x11",
-+    [UNW_AARCH64_X12] = "x12",
-+    [UNW_AARCH64_X13] = "x13",
-+    [UNW_AARCH64_X14] = "x14",
-+    [UNW_AARCH64_X15] = "x15",
-+    [UNW_AARCH64_X16] = "ip0",
-+    [UNW_AARCH64_X17] = "ip1",
-+    [UNW_AARCH64_X18] = "x18",
-+    [UNW_AARCH64_X19] = "x19",
-+    [UNW_AARCH64_X20] = "x20",
-+    [UNW_AARCH64_X21] = "x21",
-+    [UNW_AARCH64_X22] = "x22",
-+    [UNW_AARCH64_X23] = "x23",
-+    [UNW_AARCH64_X24] = "x24",
-+    [UNW_AARCH64_X25] = "x25",
-+    [UNW_AARCH64_X26] = "x26",
-+    [UNW_AARCH64_X27] = "x27",
-+    [UNW_AARCH64_X28] = "x28",
-+    [UNW_AARCH64_X29] = "fp",
-+    [UNW_AARCH64_X30] = "lr",
-+    [UNW_AARCH64_SP] = "sp",
-+    [UNW_AARCH64_PC] = "pc",
-+    [UNW_AARCH64_V0] = "v0",
-+    [UNW_AARCH64_V1] = "v1",
-+    [UNW_AARCH64_V2] = "v2",
-+    [UNW_AARCH64_V3] = "v3",
-+    [UNW_AARCH64_V4] = "v4",
-+    [UNW_AARCH64_V5] = "v5",
-+    [UNW_AARCH64_V6] = "v6",
-+    [UNW_AARCH64_V7] = "v7",
-+    [UNW_AARCH64_V8] = "v8",
-+    [UNW_AARCH64_V9] = "v9",
-+    [UNW_AARCH64_V10] = "v10",
-+    [UNW_AARCH64_V11] = "v11",
-+    [UNW_AARCH64_V12] = "v12",
-+    [UNW_AARCH64_V13] = "v13",
-+    [UNW_AARCH64_V14] = "v14",
-+    [UNW_AARCH64_V15] = "v15",
-+    [UNW_AARCH64_V16] = "v16",
-+    [UNW_AARCH64_V17] = "v17",
-+    [UNW_AARCH64_V18] = "v18",
-+    [UNW_AARCH64_V19] = "v19",
-+    [UNW_AARCH64_V20] = "v20",
-+    [UNW_AARCH64_V21] = "v21",
-+    [UNW_AARCH64_V22] = "v22",
-+    [UNW_AARCH64_V23] = "v23",
-+    [UNW_AARCH64_V24] = "v24",
-+    [UNW_AARCH64_V25] = "v25",
-+    [UNW_AARCH64_V26] = "v26",
-+    [UNW_AARCH64_V27] = "v27",
-+    [UNW_AARCH64_V28] = "v28",
-+    [UNW_AARCH64_V29] = "v29",
-+    [UNW_AARCH64_V30] = "v30",
-+    [UNW_AARCH64_V31] = "v31",
-+    [UNW_AARCH64_FPSR] = "fpsr",
-+    [UNW_AARCH64_FPCR] = "fpcr",
-+  };
-+
-+PROTECTED const char *
-+unw_regname (unw_regnum_t reg)
-+{
-+  if (reg < (unw_regnum_t) ARRAY_SIZE (regname) && regname[reg] != NULL)
-+    return regname[reg];
-+  else
-+    return "???";
-+}
---- /dev/null
-+++ b/src/aarch64/siglongjmp.S
-@@ -0,0 +1,12 @@
-+	/* Dummy implementation for now.  */
-+
-+	.global _UI_siglongjmp_cont
-+	.global _UI_longjmp_cont
-+
-+_UI_siglongjmp_cont:
-+_UI_longjmp_cont:
-+	ret
-+#ifdef __linux__
-+ /* We do not need executable stack.  */
-+ .section  .note.GNU-stack,"",%progbits
-+#endif
---- /dev/null
-+++ b/src/aarch64/unwind_i.h
-@@ -0,0 +1,43 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#ifndef unwind_i_h
-+#define unwind_i_h
-+
-+#include <stdint.h>
-+
-+#include <libunwind-aarch64.h>
-+
-+#include "libunwind_i.h"
-+
-+#define aarch64_lock			UNW_OBJ(lock)
-+#define aarch64_local_resume		UNW_OBJ(local_resume)
-+#define aarch64_local_addr_space_init	UNW_OBJ(local_addr_space_init)
-+
-+extern void aarch64_local_addr_space_init (void);
-+extern int aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor,
-+			     void *arg);
-+
-+#endif /* unwind_i_h */
---- a/src/coredump/_UCD_access_reg_linux.c
-+++ b/src/coredump/_UCD_access_reg_linux.c
-@@ -39,7 +39,10 @@ _UCD_access_reg (unw_addr_space_t as,
-       return -UNW_EINVAL;
-     }
- 
--#if defined(UNW_TARGET_ARM)
-+#if defined(UNW_TARGET_AARCH64)
-+  if (regnum < 0 || regnum >= UNW_AARCH64_FPCR)
-+    goto badreg;
-+#elif defined(UNW_TARGET_ARM)
-   if (regnum < 0 || regnum >= 16)
-     goto badreg;
- #elif defined(UNW_TARGET_SH)
---- a/src/ptrace/_UPT_reg_offset.c
-+++ b/src/ptrace/_UPT_reg_offset.c
-@@ -1,6 +1,7 @@
- /* libunwind - a platform-independent unwind library
-    Copyright (C) 2003-2004 Hewlett-Packard Co
- 	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-+   Copyright (C) 2013 Linaro Limited
- 
- This file is part of libunwind.
- 
-@@ -501,6 +502,41 @@ const int _UPT_reg_offset[UNW_REG_LAST +
-     [UNW_ARM_R15]      = 0x3c,
- #elif defined(UNW_TARGET_MIPS)
- #elif defined(UNW_TARGET_SH)
-+#elif defined(UNW_TARGET_AARCH64)
-+    [UNW_AARCH64_X0]       = 0x00,
-+    [UNW_AARCH64_X1]       = 0x08,
-+    [UNW_AARCH64_X2]       = 0x10,
-+    [UNW_AARCH64_X3]       = 0x18,
-+    [UNW_AARCH64_X4]       = 0x20,
-+    [UNW_AARCH64_X5]       = 0x28,
-+    [UNW_AARCH64_X6]       = 0x30,
-+    [UNW_AARCH64_X7]       = 0x38,
-+    [UNW_AARCH64_X8]       = 0x40,
-+    [UNW_AARCH64_X9]       = 0x48,
-+    [UNW_AARCH64_X10]      = 0x50,
-+    [UNW_AARCH64_X11]      = 0x58,
-+    [UNW_AARCH64_X12]      = 0x60,
-+    [UNW_AARCH64_X13]      = 0x68,
-+    [UNW_AARCH64_X14]      = 0x70,
-+    [UNW_AARCH64_X15]      = 0x78,
-+    [UNW_AARCH64_X16]      = 0x80,
-+    [UNW_AARCH64_X17]      = 0x88,
-+    [UNW_AARCH64_X18]      = 0x90,
-+    [UNW_AARCH64_X19]      = 0x98,
-+    [UNW_AARCH64_X20]      = 0xa0,
-+    [UNW_AARCH64_X21]      = 0xa8,
-+    [UNW_AARCH64_X22]      = 0xb0,
-+    [UNW_AARCH64_X23]      = 0xb8,
-+    [UNW_AARCH64_X24]      = 0xc0,
-+    [UNW_AARCH64_X25]      = 0xc8,
-+    [UNW_AARCH64_X26]      = 0xd0,
-+    [UNW_AARCH64_X27]      = 0xd8,
-+    [UNW_AARCH64_X28]      = 0xe0,
-+    [UNW_AARCH64_X29]      = 0xe8,
-+    [UNW_AARCH64_X30]      = 0xf0,
-+    [UNW_AARCH64_SP]       = 0xf8,
-+    [UNW_AARCH64_PC]       = 0x100,
-+    [UNW_AARCH64_PSTATE]   = 0x108
- #else
- # error Fix me.
- #endif
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch
deleted file mode 100644
index dc0f5c1..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Fix test case link failure on PowerPC systems with Altivec
-
-Upstream-Status:backport
-
-On systems where the system compiler supports Altivec by default,
-the libunwind Makefile will attempt to build an extra test case
-ppc64-test-altivec.  Unfortunately, the link step will fail since
-the Makefile does not actually link against the libunwind library.
-
-Fixed by adding the appropriate LDADD macro.
-
-Signed-off-by: Ulrich Weigand <address@hidden>
----
- tests/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 0e30536..9c76628 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -201,3 +201,4 @@ Lia64_test_rbs_LDADD = $(LIBUNWIND_local)
- Lia64_test_readonly_LDADD = $(LIBUNWIND_local)
- ia64_test_dyn1_LDADD = $(LIBUNWIND)
- ia64_test_sig_LDADD = $(LIBUNWIND)
-+ppc64_test_altivec_LDADD = $(LIBUNWIND)
--- 
-1.8.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Link-libunwind-to-libgcc_s-rather-than-libgcc.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Link-libunwind-to-libgcc_s-rather-than-libgcc.patch
deleted file mode 100644
index 0e55c91..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Link-libunwind-to-libgcc_s-rather-than-libgcc.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 508ca17a7be01d1cc960d9a07d0af4513948fb8d Mon Sep 17 00:00:00 2001
-From: Thierry Reding <treding@nvidia.com>
-Date: Fri, 27 Jun 2014 08:40:33 +0200
-Subject: [PATCH] Link libunwind to libgcc_s rather than libgcc
-
-For some architectures, -lgcc and -lgcc_s are not equivalent. On ARM for
-example, libgcc_s.so.1 contains some symbols needed by libunwind which
-are not present in libgcc.
-
-This causes the following link error when building the X.Org X server
-with libunwind support:
-
-	  CCLD     Xorg
-	/usr/lib/libunwind.so: undefined reference to `__aeabi_unwind_cpp_pr0'
-	/usr/lib/libunwind.so: undefined reference to `__aeabi_unwind_cpp_pr1'
-
-Linking against libgcc_s explicitly solves this problem.
-
-Upstream-Status: Backport
-
-Signed-off-by: Thierry Reding <treding@nvidia.com>
-Signed-off-by: Jonathan Liu <net147@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index cffe19b..3beb5f2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -258,7 +258,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#ifndef __INTEL_COMPILER
- 
- if test x$GCC = xyes -a x$intel_compiler != xyes; then
-   CFLAGS="${CFLAGS} -fexceptions -Wall -Wsign-compare"
--  LIBCRTS="-lgcc"
-+  LIBCRTS="-lgcc_s"
- fi
- AC_MSG_RESULT([$intel_compiler])
- 
--- 
-2.3.2
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Support-building-with-older-compilers.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Support-building-with-older-compilers.patch
deleted file mode 100644
index 268b702..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Support-building-with-older-compilers.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 10b064ffe902d5af31bb49bd8e4f03c545f8d462 Mon Sep 17 00:00:00 2001
-From: Ladislav Michl <ladis@linux-mips.org>
-Date: Tue, 13 Nov 2012 11:19:47 +0100
-Subject: [PATCH] Support building with older compilers.
-
-Add a check for __builtin_unreachable.
-
-Upstream-Status: Pending
----
- configure.ac          |   11 +++++++++++
- include/libunwind_i.h |    6 ++++++
- src/arm/Gresume.c     |    2 +-
- src/sh/Gresume.c      |    2 +-
- 4 files changed, 19 insertions(+), 2 deletions(-)
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -285,6 +285,17 @@ if test x$have__builtin___clear_cache =
- fi
- AC_MSG_RESULT([$have__builtin___clear_cache])
- 
-+AC_MSG_CHECKING([for __builtin_unreachable])
-+AC_LINK_IFELSE(
-+  [AC_LANG_PROGRAM([[]], [[__builtin_unreachable()]])],
-+  [have__builtin_unreachable=yes],
-+  [have__builtin_unreachable=no])
-+if test x$have__builtin_unreachable = xyes; then
-+  AC_DEFINE([HAVE__BUILTIN_UNREACHABLE], [1],
-+            [Defined if __builtin_unreachable() is available])
-+fi
-+AC_MSG_RESULT([$have__builtin_unreachable])
-+
- AC_MSG_CHECKING([for __sync atomics])
- AC_LINK_IFELSE(
-   [AC_LANG_PROGRAM([[]], [[
---- a/include/libunwind_i.h
-+++ b/include/libunwind_i.h
-@@ -72,6 +72,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DE
- # endif
- #endif
- 
-+#if defined(HAVE__BUILTIN_UNREACHABLE)
-+# define unreachable() __builtin_unreachable()
-+#else
-+# define unreachable() do { } while (1)
-+#endif
-+
- #ifdef DEBUG
- # define UNW_DEBUG	1
- #else
---- a/src/arm/Gresume.c
-+++ b/src/arm/Gresume.c
-@@ -96,7 +96,7 @@ arm_local_resume (unw_addr_space_t as, u
- 	: : "r" (c->sigcontext_sp), "r" (c->sigcontext_pc)
-       );
-    }
--  __builtin_unreachable();
-+  unreachable();
- #else
-   printf ("%s: implement me\n", __FUNCTION__);
- #endif
---- a/src/sh/Gresume.c
-+++ b/src/sh/Gresume.c
-@@ -109,7 +109,7 @@ sh_local_resume (unw_addr_space_t as, un
- 	  "r" (c->sigcontext_pc)
-       );
-    }
--  __builtin_unreachable();
-+  unreachable();
- #endif
-   return -UNW_EINVAL;
- }
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind.inc b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind.inc
index 1c342d3..e4ae8df 100644
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind.inc
+++ b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind.inc
@@ -18,15 +18,6 @@
 ATOMICOPS_armv4 = "-DAO_USE_PTHREAD_DEFS=1"
 ATOMICOPS ?= ""
 
-LDFLAGS_append_x86 = " -fuse-ld=gold"
-LDFLAGS_append_x86-64 = " -fuse-ld=gold"
-
-LDFLAGS_append_arm = " -fuse-ld=gold"
-LDFLAGS_append_aarch64 = " -fuse-ld=gold"
-
-LDFLAGS_append_powerpc = " -fuse-ld=gold -mbss-plt"
-LDFLAGS_append_powerpc64 = " -fuse-ld=gold -mbss-plt"
-
 SECURITY_LDFLAGS_append_libc-musl = " -lssp_nonshared -lssp"
 
 BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch
new file mode 100644
index 0000000..8bcc252
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch
@@ -0,0 +1,81 @@
+From e623c7703945a5eb6c9a30586ec5e23b2f7396f6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 23 Mar 2016 06:08:59 +0000
+Subject: [PATCH] Fix build on mips/musl
+
+Do not include endian.h on musl it includes
+further headers which can not be compiled in __ASSEMBLER__
+ mode
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ src/coredump/_UCD_internal.h | 34 ++++++++++++++++++++++++++++++++++
+ src/mips/getcontext.S        |  3 +--
+ 2 files changed, 35 insertions(+), 2 deletions(-)
+
+Index: git/src/coredump/_UCD_internal.h
+===================================================================
+--- git.orig/src/coredump/_UCD_internal.h
++++ git/src/coredump/_UCD_internal.h
+@@ -44,6 +44,41 @@ WITH THE SOFTWARE OR THE USE OR OTHER DE
+ 
+ #include "libunwind_i.h"
+ 
++#ifndef __GLIBC__
++#include <sys/reg.h>
++
++#define EF_REG0			6
++#define EF_REG1			7
++#define EF_REG2			8
++#define EF_REG3			9
++#define EF_REG4			10
++#define EF_REG5			11
++#define EF_REG6			12
++#define EF_REG7			13
++#define EF_REG8			14
++#define EF_REG9			15
++#define EF_REG10		16
++#define EF_REG11		17
++#define EF_REG12		18
++#define EF_REG13		19
++#define EF_REG14		20
++#define EF_REG15		21
++#define EF_REG16		22
++#define EF_REG17		23
++#define EF_REG18		24
++#define EF_REG19		25
++#define EF_REG20		26
++#define EF_REG21		27
++#define EF_REG22		28
++#define EF_REG23		29
++#define EF_REG24		30
++#define EF_REG25		31
++#define EF_REG28		34
++#define EF_REG29		35
++#define EF_REG30		36
++#define EF_REG31		37
++#endif
++
+ 
+ #if SIZEOF_OFF_T == 4
+ typedef uint32_t uoff_t;
+Index: git/src/mips/getcontext.S
+===================================================================
+--- git.orig/src/mips/getcontext.S
++++ git/src/mips/getcontext.S
+@@ -24,12 +24,11 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+ 
+ #include "offsets.h"
+-#include <endian.h>
+ 
+ 	.text
+ 
+ #if _MIPS_SIM == _ABIO32
+-# if __BYTE_ORDER == __BIG_ENDIAN
++# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+ #  define OFFSET 4
+ # else
+ #  define OFFSET 0
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-add-knobs-to-disable-enable-tests.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-add-knobs-to-disable-enable-tests.patch
new file mode 100644
index 0000000..673a5bb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-add-knobs-to-disable-enable-tests.patch
@@ -0,0 +1,69 @@
+From 459e471fcc33d300f7bbcdaf3e0dc338d9dc15b9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Apr 2016 16:56:34 +0000
+Subject: [PATCH] add knobs to disable/enable tests
+
+Some tests do not compile on musl libc
+in general its good to have such a knob
+since not all builds may want to enable
+tests
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.am  |  6 +++++-
+ configure.ac | 12 ++++++++++--
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 6a3ed9e..0c29b3e 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -42,7 +42,11 @@ endif
+ 
+ nodist_include_HEADERS = include/libunwind-common.h
+ 
+-SUBDIRS = src tests
++SUBDIRS = src
++
++if CONFIG_TESTS
++SUBDIRS += tests
++endif
+ 
+ if CONFIG_DOCS
+ SUBDIRS += doc
+diff --git a/configure.ac b/configure.ac
+index 85d78f8..d362387 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -129,6 +129,10 @@ AC_ARG_ENABLE(documentation,
+ 	AS_HELP_STRING([--disable-documentation],[Disable generating the man pages]),,
+ 	[enable_documentation=yes])
+ 
++AC_ARG_ENABLE(tests,
++	AS_HELP_STRING([--disable-tests],[Disable building tests]),,
++	[enable_tests=yes])
++
+ AC_MSG_CHECKING([if we should build libunwind-setjmp])
+ AC_MSG_RESULT([$enable_setjmp])
+ 
+@@ -395,9 +399,13 @@ AM_CONDITIONAL([CONFIG_DOCS], [test x$enable_documentation = xyes])
+ if test "x$enable_documentation" = "xyes"; then
+   AC_CONFIG_FILES(doc/Makefile doc/common.tex)
+ fi
++AM_CONDITIONAL([CONFIG_TESTS], [test x$enable_tests = xyes])
++if test "x$enable_tests" = "xyes"; then
++  AC_CONFIG_FILES(tests/Makefile tests/check-namespace.sh)
++fi
++
+ 
+-AC_CONFIG_FILES(Makefile src/Makefile tests/Makefile tests/check-namespace.sh
+-		include/libunwind-common.h
++AC_CONFIG_FILES(Makefile src/Makefile include/libunwind-common.h
+                 include/libunwind.h include/tdep/libunwind_i.h)
+ AC_CONFIG_FILES(src/unwind/libunwind.pc src/coredump/libunwind-coredump.pc
+                 src/ptrace/libunwind-ptrace.pc src/setjmp/libunwind-setjmp.pc
+-- 
+1.8.3.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-backtrace-Use-only-with-glibc-and-uclibc.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-backtrace-Use-only-with-glibc-and-uclibc.patch
rename to import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch
new file mode 100644
index 0000000..ca0641f
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch
@@ -0,0 +1,248 @@
+From e0eea53c77fce8537c58a072b684043507987bcc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Jul 2016 01:07:53 +0000
+Subject: [PATCH] ppc32: Consider ucontext mismatches between glibc and musl
+
+This helps in porting libunwind onto musl based systems
+ptrace.h change is required again an error that surfaces
+with musl
+
+/mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/asm/ptrace.h:31:8: error: redefinition of 'struct pt_regs'
+ struct pt_regs {
+        ^~~~~~~
+In file included from /mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/sys/user.h:11:0,
+                 from /mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/sys/procfs.h:9,
+                 from ../../git/src/ptrace/_UPT_internal.h:40,
+                 from ../../git/src/ptrace/_UPT_reg_offset.c:27:
+/mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/bits/user.h:1:8: note: originally defined here
+ struct pt_regs {
+        ^~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ src/ppc32/Ginit.c            |   6 +-
+ src/ppc32/ucontext_i.h       | 158 ++++++++++++++++++++++---------------------
+ src/ptrace/_UPT_reg_offset.c |   7 ++
+ 3 files changed, 92 insertions(+), 79 deletions(-)
+
+diff --git a/src/ppc32/Ginit.c b/src/ppc32/Ginit.c
+index f2e6e82..617aaa1 100644
+--- a/src/ppc32/Ginit.c
++++ b/src/ppc32/Ginit.c
+@@ -48,12 +48,12 @@ uc_addr (ucontext_t *uc, int reg)
+   void *addr;
+ 
+   if ((unsigned) (reg - UNW_PPC32_R0) < 32)
+-    addr = &uc->uc_mcontext.uc_regs->gregs[reg - UNW_PPC32_R0];
++    addr = &uc->GET_UC_REGS->gregs[reg - UNW_PPC32_R0];
+ 
+   else
+   if ( ((unsigned) (reg - UNW_PPC32_F0) < 32) &&
+        ((unsigned) (reg - UNW_PPC32_F0) >= 0) )
+-    addr = &uc->uc_mcontext.uc_regs->fpregs.fpregs[reg - UNW_PPC32_F0];
++    addr = &uc->GET_UC_REGS->fpregs.fpregs[reg - UNW_PPC32_F0];
+ 
+   else
+     {
+@@ -76,7 +76,7 @@ uc_addr (ucontext_t *uc, int reg)
+         default:
+           return NULL;
+         }
+-      addr = &uc->uc_mcontext.uc_regs->gregs[gregs_idx];
++      addr = &uc->GET_UC_REGS->gregs[gregs_idx];
+     }
+   return addr;
+ }
+diff --git a/src/ppc32/ucontext_i.h b/src/ppc32/ucontext_i.h
+index c6ba806..b79f15c 100644
+--- a/src/ppc32/ucontext_i.h
++++ b/src/ppc32/ucontext_i.h
+@@ -46,83 +46,89 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+    various structure members. */
+ static ucontext_t dmy_ctxt UNUSED;
+ 
+-#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[0] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[1] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[2] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[3] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[4] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[5] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[6] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[7] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[8] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[9] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[10] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[11] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[12] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[13] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[14] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[15] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[16] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[17] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[18] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[19] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[20] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[21] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[22] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[23] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[24] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[25] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[26] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[27] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[28] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[29] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[30] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[31] - (void *)&dmy_ctxt)
++#ifdef __GLIBC__
++#define GET_UC_REGS uc_mcontext.uc_regs
++#else
++#define GET_UC_REGS uc_regs
++#endif
++
++#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[0] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[1] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[2] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[3] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[4] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[5] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[6] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[7] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[8] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[9] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[10] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[11] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[12] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[13] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[14] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[15] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[16] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[17] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[18] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[19] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[20] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[21] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[22] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[23] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[24] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[25] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[26] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[27] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[28] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[29] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[30] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[31] - (void *)&dmy_ctxt)
+ 
+-#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[MSR_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CTR_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[LINK_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[XER_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CCR_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[SOFTE_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[TRAP_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DAR_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DSISR_IDX] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[RESULT_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[MSR_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[CTR_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.GET_UC_REGS->gregs[LINK_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.GET_UC_REGS->gregs[XER_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[CCR_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.GET_UC_REGS->gregs[SOFTE_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.GET_UC_REGS->gregs[TRAP_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[DAR_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[DSISR_IDX] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.GET_UC_REGS->gregs[RESULT_IDX] - (void *)&dmy_ctxt)
+ 
+-#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[0] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[1] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[2] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[3] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[4] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[5] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[6] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[7] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[8] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[9] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[10] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[11] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[12] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[13] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[14] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[15] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[16] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[17] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[18] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[19] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[20] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[21] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[22] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[23] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[24] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[25] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[26] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[27] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[28] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[29] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[30] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[31] - (void *)&dmy_ctxt)
+-#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[32] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[0] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[1] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[2] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[3] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[4] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[5] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[6] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[7] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[8] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[9] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[10] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[11] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[12] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[13] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[14] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[15] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[16] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[17] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[18] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[19] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[20] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[21] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[22] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[23] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[24] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[25] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[26] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[27] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[28] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[29] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[30] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[31] - (void *)&dmy_ctxt)
++#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[32] - (void *)&dmy_ctxt)
+ 
+ #endif
+diff --git a/src/ptrace/_UPT_reg_offset.c b/src/ptrace/_UPT_reg_offset.c
+index 68461a2..fcc43f7 100644
+--- a/src/ptrace/_UPT_reg_offset.c
++++ b/src/ptrace/_UPT_reg_offset.c
+@@ -27,6 +27,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+ #include "_UPT_internal.h"
+ 
+ #include <stddef.h>
++#if !defined(__GLIBC__)
++# define pt_regs uapi_pt_regs
++#endif
++#include <asm/ptrace.h>
++#if !defined(__GLIBC__)
++# undef pt_regs
++#endif
+ 
+ #ifdef HAVE_ASM_PTRACE_OFFSETS_H
+ # include <asm/ptrace_offsets.h>
+-- 
+1.8.3.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-x86-Stub-out-x86_local_resume.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/0001-x86-Stub-out-x86_local_resume.patch
rename to import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind-1.1/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
rename to import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch
new file mode 100644
index 0000000..79f63fd
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch
@@ -0,0 +1,37 @@
+If you:
+
+TCLIBC=musl bitbake unwind
+TCLIBC=musl bitbake gcc-runtime -c cleansstate
+TCLIBC=musl bitbake gcc-runtime
+
+you will see libstdc++ fail to build due to finding libunwind's header file.
+
+Khem: "When we build any of gcc components they expect to use internal version 
+and that works with glibc based gcc since the search headers first look into gcc 
+headers, however with musl the gcc headers are searched after the standard 
+headers ( which is by design the right thing )."
+
+This patch hacks around the issue by looking for a define used during gcc-runtime's 
+build and skipping to the internal header in that case.
+
+[YOCTO #10129]
+
+RP 2016/8/18
+
+Upstream-Status: Inappropriate [really need to fix gcc]
+
+Index: git/include/unwind.h
+===================================================================
+--- git.orig/include/unwind.h
++++ git/include/unwind.h
+@@ -23,6 +23,10 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER L
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+ 
++#ifdef _GLIBCXX_SHARED
++#include_next <unwind.h>
++#endif
++
+ #ifndef _UNWIND_H
+ #define _UNWIND_H
+ 
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind_1.1.bb b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind_1.1.bb
deleted file mode 100644
index aff8409..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind_1.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require libunwind.inc
-
-SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
-           file://Support-building-with-older-compilers.patch \
-           file://AArch64-port.patch \
-           file://Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch \
-           file://Link-libunwind-to-libgcc_s-rather-than-libgcc.patch \
-           file://0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch \
-           file://Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch \
-           file://0001-backtrace-Use-only-with-glibc-and-uclibc.patch \
-"
-SRC_URI_append_libc-musl = "\
-           file://0001-x86-Stub-out-x86_local_resume.patch \
-           file://0001-disable-tests.patch \
-           file://0001-Fix-build-on-mips-musl.patch \
-"
-SRC_URI[md5sum] = "fb4ea2f6fbbe45bf032cd36e586883ce"
-SRC_URI[sha256sum] = "9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a"
-
-# http://errors.yoctoproject.org/Errors/Details/20487/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind_git.bb b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind_git.bb
new file mode 100644
index 0000000..4249430
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libunwind/libunwind_git.bb
@@ -0,0 +1,29 @@
+require libunwind.inc
+
+PV = "1.1+git${SRCPV}"
+
+SRCREV = "bc8698fd7ed13a629a8ec3cb2a89bd74f9d8b5c0"
+
+SRC_URI = "git://git.sv.gnu.org/libunwind.git \
+           file://Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch \
+           file://0001-backtrace-Use-only-with-glibc-and-uclibc.patch \
+           file://0001-x86-Stub-out-x86_local_resume.patch \
+           file://0001-Fix-build-on-mips-musl.patch \
+           file://0001-add-knobs-to-disable-enable-tests.patch \
+           file://0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \
+           "
+
+SRC_URI_append_libc-musl = " file://musl-header-conflict.patch"
+EXTRA_OECONF_append_libc-musl = " --disable-documentation --disable-tests "
+
+# http://errors.yoctoproject.org/Errors/Details/20487/
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+# see https://sourceware.org/bugzilla/show_bug.cgi?id=19987
+SECURITY_CFLAGS_remove_aarch64 = "-fpie"
+SECURITY_CFLAGS_append_aarch64 = " -fPIE"
+
+S = "${WORKDIR}/git"
+
+LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
diff --git a/import-layers/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.1.bb b/import-layers/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.1.bb
deleted file mode 100644
index aadc32f..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.1.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Userspace RCU (read-copy-update) library"
-HOMEPAGE = "http://lttng.org/urcu"
-BUGTRACKER = "http://lttng.org/project/issues"
-
-LICENSE = "LGPLv2.1+ & MIT-style"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e548d28737289d75a8f1e01ba2fd7825 \
-                    file://urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \
-                    file://urcu/uatomic/x86.h;beginline=4;endline=21;md5=58e50bbd8a2f073bb5500e6554af0d0b"
-
-SRC_URI = " \
-	http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2 \
-	file://0001-Support-for-NIOS2-architecture.patch \
-        file://0002-Support-for-aarch64_be.patch \
-	"
-
-SRC_URI[md5sum] = "124eaeea06863271c0bdf2a0cc1d8e4b"
-SRC_URI[sha256sum] = "f8d278e9d95bec97c9ba954fc4c3fb584936bc0010713a8fe358b916bafd8715"
-
-S = "${WORKDIR}/userspace-rcu-${PV}"
-CFLAGS_append_libc-uclibc = " -D_GNU_SOURCE"
-inherit autotools
diff --git a/import-layers/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.2.bb b/import-layers/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.2.bb
new file mode 100644
index 0000000..23fb8c4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.2.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Userspace RCU (read-copy-update) library"
+HOMEPAGE = "http://lttng.org/urcu"
+BUGTRACKER = "http://lttng.org/project/issues"
+
+LICENSE = "LGPLv2.1+ & MIT-style"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e548d28737289d75a8f1e01ba2fd7825 \
+                    file://urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \
+                    file://urcu/uatomic/x86.h;beginline=4;endline=21;md5=58e50bbd8a2f073bb5500e6554af0d0b"
+
+SRC_URI = " \
+	http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2 \
+	file://0001-Support-for-NIOS2-architecture.patch \
+        file://0002-Support-for-aarch64_be.patch \
+	"
+
+SRC_URI[md5sum] = "49f86e68c1e2f41d303381a271b791d1"
+SRC_URI[sha256sum] = "8f7fa313b1e0a3f742cea24ce63a39c0efe63e615a769e2961e55bd2663ecaa3"
+
+S = "${WORKDIR}/userspace-rcu-${PV}"
+CFLAGS_append_libc-uclibc = " -D_GNU_SOURCE"
+inherit autotools
diff --git a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/0001-Use-pkg-config-to-find-gcrypt-and-libxml2.patch b/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/0001-Use-pkg-config-to-find-gcrypt-and-libxml2.patch
new file mode 100644
index 0000000..7186706
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/0001-Use-pkg-config-to-find-gcrypt-and-libxml2.patch
@@ -0,0 +1,130 @@
+From ed71ac9548a2bb6ecd2dc5ad880c604975f872b0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 2 Jun 2016 14:20:04 +0300
+Subject: [PATCH] Use pkg-config to find gcrypt and libxml2.
+
+Upstream-Status: Pending [libxml2 is upstreamable]
+
+RP 2014/5/22
+
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.in | 70 +++++++++++-------------------------------------------------
+ 1 file changed, 12 insertions(+), 58 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 8bdf45a..0b2b312 100644
+--- a/configure.in
++++ b/configure.in
+@@ -377,6 +377,8 @@ AC_SUBST(pythondir)
+ AC_SUBST(PYTHON_SUBDIR)
+ AC_SUBST(PYTHON_LIBS)
+ 
++PKG_PROG_PKG_CONFIG
++
+ AC_ARG_WITH(crypto, [  --with-crypto           Add crypto support to exslt (on)])
+ WITH_CRYPTO=0
+ CRYPTO_TESTDIR=
+@@ -394,27 +396,14 @@ case $host in
+     CRYPTO_TESTDIR=crypto
+     ;;
+   *)
+-    AC_PATH_TOOL(LIBGCRYPT_CONFIG, libgcrypt-config, no)
+-    if test "$LIBGCRYPT_CONFIG" != "no" ; then
+-      LIBGCRYPT_VERSION=`$LIBGCRYPT_CONFIG --version`
+-      if test VERSION_TO_NUMBER(echo $LIBGCRYPT_VERSION) -lt VERSION_TO_NUMBER(echo "1.1.42")
+-      then
+-        LIBGCRYPT_CFLAGS=""
+-        LIBGCRYPT_LIBS=""
+-        echo 'gcrypt library version < 1.1.42 - Crypto extensions will not be available.'
+-      else
+-        LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --cflags`
+-        LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --libs`
+-        AC_DEFINE(HAVE_GCRYPT, 1, [Define if gcrypt library is available.])
+-        echo 'Crypto extensions will be available.'
++    PKG_CHECK_MODULES(LIBGCRYPT, [libgcrypt >= 1.1.42], [
++          AC_DEFINE(HAVE_GCRYPT, 1, [Define if gcrypt library is available.])
++          echo 'Crypto extensions will be available.'
+         WITH_CRYPTO=1
+         CRYPTO_TESTDIR=crypto
+-      fi
+-    else
+-      LIBGCRYPT_CFLAGS=""
+-      LIBGCRYPT_LIBS=""
+-      echo 'Crypto extensions will not be available. Install libgcrypt and reconfigure to make available.'
+-    fi
++       ], [
++          echo 'Crypto extensions will not be available. Install libgcrypt >= 1.1.42 and reconfigure to make available.'
++        ])
+ esac
+ fi
+ AC_SUBST(WITH_CRYPTO)
+@@ -476,24 +465,8 @@ dnl original work - Mathieu Lacage 30/03/2000
+ dnl some tweaking - David Härdeman 30/10/2001
+ dnl
+ 
+-LIBXML_CONFIG_PREFIX=""
+ LIBXML_SRC=""
+ 
+-AC_ARG_WITH(libxml-prefix,
+-        [  --with-libxml-prefix=[PFX]		Specify location of libxml config],
+-	LIBXML_CONFIG_PREFIX=$withval
+-)
+-        
+-AC_ARG_WITH(libxml-include-prefix,
+-        [  --with-libxml-include-prefix=[PFX]	Specify location of libxml headers],
+-        LIBXML_CFLAGS="-I$withval"
+-)
+-
+-AC_ARG_WITH(libxml-libs-prefix,
+-        [  --with-libxml-libs-prefix=[PFX]	Specify location of libxml libs],
+-        LIBXML_LIBS="-L$withval"
+-)
+-
+ AC_ARG_WITH(libxml-src,
+ 	[  --with-libxml-src=[DIR]              For libxml thats not installed yet (sets all three above)],
+ 	LIBXML_SRC="$withval"
+@@ -556,28 +529,9 @@ then
+ 	fi
+ fi
+ 
+-dnl
+-dnl make sure xml2-config is executable,
+-dnl test version and init our variables
+-dnl
+-
+-if ${XML_CONFIG} --libs print > /dev/null 2>&1
+-then
+-	XMLVERS=`$XML_CONFIG --version`
+-	if test VERSION_TO_NUMBER(echo $XMLVERS) -ge VERSION_TO_NUMBER(echo $LIBXML_REQUIRED_VERSION)
+-	then
+-		AC_MSG_RESULT($XMLVERS found)
+-	else
+-		AC_MSG_ERROR(Version $XMLVERS found. You need at least libxml2 $LIBXML_REQUIRED_VERSION for this version of libxslt)
+-	fi
+-	LIBXML_LIBS="$LIBXML_LIBS `$XML_CONFIG --libs`"
+-	if test "x$LIBXML_SRC" = "x"; then
+-		LIBXML_CFLAGS="$LIBXML_CFLAGS `$XML_CONFIG --cflags`"
+-	fi
+-else
+-	AC_MSG_ERROR([Could not find libxml2 anywhere, check ftp://xmlsoft.org/.])
+-fi
+-
++PKG_CHECK_MODULES(LIBXML, [libxml-2.0 >= $LIBXML_REQUIRED_VERSION],,
++    [AC_MSG_ERROR([Could not find libxml-2.0 >= $LIBXML_REQUIRED_VERSION anywhere, check ftp://xmlsoft.org/.])]
++)
+ 
+ AC_SUBST(CFLAGS)
+ AC_SUBST(CPPFLAGS)
+@@ -602,7 +556,7 @@ fi
+ 
+ if test "$with_plugins" = "yes" ; then
+   AC_MSG_CHECKING([libxml2 module support])
+-  WITH_MODULES="`$XML_CONFIG --modules`"
++  WITH_MODULES="`$PKG_CONFIG --variable=modules libxml-2.0`"
+   if test "${WITH_MODULES}" = "1"; then
+     AC_MSG_RESULT(yes)
+   else
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/CVE-2015-7995.patch b/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/CVE-2015-7995.patch
deleted file mode 100644
index f4113ef..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/CVE-2015-7995.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 7ca19df892ca22d9314e95d59ce2abdeff46b617 Mon Sep 17 00:00:00 2001
-From: Daniel Veillard <veillard@redhat.com>
-Date: Thu, 29 Oct 2015 19:33:23 +0800
-Subject: Fix for type confusion in preprocessing attributes
-
-CVE-2015-7995 http://www.openwall.com/lists/oss-security/2015/10/27/10
-We need to check that the parent node is an element before dereferencing
-its namespace
-
-Upstream-Status: Backport
-CVE: CVE-2015-7995
-
-https://git.gnome.org/browse/libxslt/commit/?id=7ca19df892ca22d9314e95d59ce2abdeff46b617
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- libxslt/preproc.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-Index: libxslt-1.1.28/libxslt/preproc.c
-===================================================================
---- libxslt-1.1.28.orig/libxslt/preproc.c
-+++ libxslt-1.1.28/libxslt/preproc.c
-@@ -2245,7 +2245,8 @@ xsltStylePreCompute(xsltStylesheetPtr st
- 	} else if (IS_XSLT_NAME(inst, "attribute")) {
- 	    xmlNodePtr parent = inst->parent;
- 
--	    if ((parent == NULL) || (parent->ns == NULL) ||
-+	    if ((parent == NULL) ||
-+	        (parent->type != XML_ELEMENT_NODE) || (parent->ns == NULL) ||
- 		((parent->ns != inst->ns) &&
- 		 (!xmlStrEqual(parent->ns->href, inst->ns->href))) ||
- 		(!xmlStrEqual(parent->name, BAD_CAST "attribute-set"))) {
diff --git a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/pkgconfig.patch b/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/pkgconfig.patch
deleted file mode 100644
index 89d14c9..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/pkgconfig.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-Use pkg-config to find gcrypt and libxml2.
-
-Upstream-Status: Pending [libxml2 is upstreamable]
-
-RP 2014/5/22
-
-Index: libxslt-1.1.28/configure.in
-===================================================================
---- libxslt-1.1.28.orig/configure.in	2014-05-13 16:46:02.278474967 +0000
-+++ libxslt-1.1.28/configure.in	2014-05-13 16:53:56.510472561 +0000
-@@ -376,6 +376,8 @@
- AC_SUBST(PYTHON_SUBDIR)
- AC_SUBST(PYTHON_LIBS)
- 
-+PKG_PROG_PKG_CONFIG
-+
- AC_ARG_WITH(crypto, [  --with-crypto           Add crypto support to exslt (on)])
- WITH_CRYPTO=0
- if test "$with_crypto" = "no" ; then
-@@ -391,26 +393,13 @@
-     WITH_CRYPTO=1
-     ;;
-   *)
--    AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
--    if test "$LIBGCRYPT_CONFIG" != "no" ; then
--      LIBGCRYPT_VERSION=`$LIBGCRYPT_CONFIG --version`
--      if test VERSION_TO_NUMBER(echo $LIBGCRYPT_VERSION) -lt VERSION_TO_NUMBER(echo "1.1.42")
--      then
--        LIBGCRYPT_CFLAGS=""
--        LIBGCRYPT_LIBS=""
--        echo 'gcrypt library version < 1.1.42 - Crypto extensions will not be available.'
--      else
--        LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --cflags`
--        LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --libs`
--        AC_DEFINE(HAVE_GCRYPT, 1, [Define if gcrypt library is available.])
--        echo 'Crypto extensions will be available.'
-+    PKG_CHECK_MODULES(LIBGCRYPT, [libgcrypt >= 1.1.42], [
-+          AC_DEFINE(HAVE_GCRYPT, 1, [Define if gcrypt library is available.])
-+          echo 'Crypto extensions will be available.'
- 		WITH_CRYPTO=1
--      fi
--    else
--      LIBGCRYPT_CFLAGS=""
--      LIBGCRYPT_LIBS=""
--      echo 'Crypto extensions will not be available. Install libgcrypt and reconfigure to make available.'
--    fi
-+	], [
-+          echo 'Crypto extensions will not be available. Install libgcrypt >= 1.1.42 and reconfigure to make available.'
-+        ])
- esac
- fi
- AC_SUBST(WITH_CRYPTO)
-@@ -471,24 +460,8 @@
- dnl some tweaking - David Härdeman 30/10/2001
- dnl
- 
--LIBXML_CONFIG_PREFIX=""
- LIBXML_SRC=""
- 
--AC_ARG_WITH(libxml-prefix,
--        [  --with-libxml-prefix=[PFX]		Specify location of libxml config],
--	LIBXML_CONFIG_PREFIX=$withval
--)
--        
--AC_ARG_WITH(libxml-include-prefix,
--        [  --with-libxml-include-prefix=[PFX]	Specify location of libxml headers],
--        LIBXML_CFLAGS="-I$withval"
--)
--
--AC_ARG_WITH(libxml-libs-prefix,
--        [  --with-libxml-libs-prefix=[PFX]	Specify location of libxml libs],
--        LIBXML_LIBS="-L$withval"
--)
--
- AC_ARG_WITH(libxml-src,
- 	[  --with-libxml-src=[DIR]              For libxml thats not installed yet (sets all three above)],
- 	LIBXML_SRC="$withval"
-@@ -551,28 +524,9 @@
- 	fi
- fi
- 
--dnl
--dnl make sure xml2-config is executable,
--dnl test version and init our variables
--dnl
--
--if ${XML_CONFIG} --libs print > /dev/null 2>&1
--then
--	XMLVERS=`$XML_CONFIG --version`
--	if test VERSION_TO_NUMBER(echo $XMLVERS) -ge VERSION_TO_NUMBER(echo $LIBXML_REQUIRED_VERSION)
--	then
--		AC_MSG_RESULT($XMLVERS found)
--	else
--		AC_MSG_ERROR(Version $XMLVERS found. You need at least libxml2 $LIBXML_REQUIRED_VERSION for this version of libxslt)
--	fi
--	LIBXML_LIBS="$LIBXML_LIBS `$XML_CONFIG --libs`"
--	if test "x$LIBXML_SRC" = "x"; then
--		LIBXML_CFLAGS="$LIBXML_CFLAGS `$XML_CONFIG --cflags`"
--	fi
--else
--	AC_MSG_ERROR([Could not find libxml2 anywhere, check ftp://xmlsoft.org/.])
--fi
--
-+PKG_CHECK_MODULES(LIBXML, [libxml-2.0 >= $LIBXML_REQUIRED_VERSION],,
-+    [AC_MSG_ERROR([Could not find libxml-2.0 >= $LIBXML_REQUIRED_VERSION anywhere, check ftp://xmlsoft.org/.])]
-+)
- 
- AC_SUBST(CFLAGS)
- AC_SUBST(CPPFLAGS)
-@@ -597,7 +551,7 @@
- 
- if test "$with_plugins" = "yes" ; then
-   AC_MSG_CHECKING([libxml2 module support])
--  WITH_MODULES="`$XML_CONFIG --modules`"
-+  WITH_MODULES="`$PKG_CONFIG --variable=modules libxml-2.0`"
-   if test "${WITH_MODULES}" = "1"; then
-     AC_MSG_RESULT(yes)
-   else
diff --git a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt_1.1.28.bb b/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt_1.1.28.bb
deleted file mode 100644
index 23ac599..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt_1.1.28.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "GNOME XSLT library"
-HOMEPAGE = "http://xmlsoft.org/XSLT/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://Copyright;md5=0cd9a07afbeb24026c9b03aecfeba458"
-
-SECTION = "libs"
-DEPENDS = "libxml2"
-
-SRC_URI = "ftp://xmlsoft.org/libxslt/libxslt-${PV}.tar.gz \
-           file://pkgconfig_fix.patch \
-           file://pkgconfig.patch \
-           file://CVE-2015-7995.patch"
-
-SRC_URI[md5sum] = "9667bf6f9310b957254fdcf6596600b7"
-SRC_URI[sha256sum] = "5fc7151a57b89c03d7b825df5a0fae0a8d5f05674c0e7cf2937ecec4d54a028c"
-
-UPSTREAM_CHECK_REGEX = "libxslt-(?P<pver>\d+(\.\d+)+)\.tar"
-
-S = "${WORKDIR}/libxslt-${PV}"
-
-BINCONFIG = "${bindir}/xslt-config"
-
-inherit autotools pkgconfig binconfig-disabled lib_package
-
-# We don't DEPEND on binutils for ansidecl.h so ensure we don't use the header
-do_configure_prepend () {
-	sed -i -e 's/ansidecl.h//' ${S}/configure.in
-
-	# The timestamps in the 1.1.28 tarball are messed up causing this file to
-	# appear out of date.  Touch it so that we don't try to regenerate it.
-	touch ${S}/doc/xsltproc.1
-}
-
-EXTRA_OECONF = "--without-python --without-debug --without-mem-debug --without-crypto"
-# older versions of this recipe had ${PN}-utils
-RPROVIDES_${PN}-bin += "${PN}-utils"
-RCONFLICTS_${PN}-bin += "${PN}-utils"
-RREPLACES_${PN}-bin += "${PN}-utils"
-
-
-do_install_append_class-native () {
-    create_wrapper ${D}/${bindir}/xsltproc XML_CATALOG_FILES=${sysconfdir}/xml/catalog.xml
-}
-
-FILES_${PN} += "${libdir}/libxslt-plugins"
-FILES_${PN}-dev += "${libdir}/xsltConf.sh"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt_1.1.29.bb b/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt_1.1.29.bb
new file mode 100644
index 0000000..be747e6
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt_1.1.29.bb
@@ -0,0 +1,50 @@
+SUMMARY = "GNOME XSLT library"
+HOMEPAGE = "http://xmlsoft.org/XSLT/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://Copyright;md5=0cd9a07afbeb24026c9b03aecfeba458"
+
+SECTION = "libs"
+DEPENDS = "libxml2"
+
+SRC_URI = "ftp://xmlsoft.org/libxslt/libxslt-${PV}.tar.gz \
+           file://pkgconfig_fix.patch \
+           file://0001-Use-pkg-config-to-find-gcrypt-and-libxml2.patch \
+           "
+
+SRC_URI[md5sum] = "a129d3c44c022de3b9dcf6d6f288d72e"
+SRC_URI[sha256sum] = "b5976e3857837e7617b29f2249ebb5eeac34e249208d31f1fbf7a6ba7a4090ce"
+
+UPSTREAM_CHECK_REGEX = "libxslt-(?P<pver>\d+(\.\d+)+)\.tar"
+
+S = "${WORKDIR}/libxslt-${PV}"
+
+BINCONFIG = "${bindir}/xslt-config"
+
+inherit autotools pkgconfig binconfig-disabled lib_package
+
+# We don't DEPEND on binutils for ansidecl.h so ensure we don't use the header
+do_configure_prepend () {
+	sed -i -e 's/ansidecl.h//' ${S}/configure.in
+
+	# The timestamps in the 1.1.28 tarball are messed up causing this file to
+	# appear out of date.  Touch it so that we don't try to regenerate it.
+	touch ${S}/doc/xsltproc.1
+}
+
+EXTRA_OECONF = "--without-python --without-debug --without-mem-debug --without-crypto"
+# older versions of this recipe had ${PN}-utils
+RPROVIDES_${PN}-bin += "${PN}-utils"
+RCONFLICTS_${PN}-bin += "${PN}-utils"
+RREPLACES_${PN}-bin += "${PN}-utils"
+
+
+do_install_append_class-native () {
+    create_wrapper ${D}/${bindir}/xsltproc XML_CATALOG_FILES=${sysconfdir}/xml/catalog.xml
+}
+
+FILES_${PN} += "${libdir}/libxslt-plugins"
+FILES_${PN}-dev += "${libdir}/xsltConf.sh"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libyaml/files/libyaml-CVE-2014-9130.patch b/import-layers/yocto-poky/meta/recipes-support/libyaml/files/libyaml-CVE-2014-9130.patch
deleted file mode 100644
index 61fa7e5..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libyaml/files/libyaml-CVE-2014-9130.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User Kirill Simonov <xi@resolvent.net>
-# Date 1417197312 21600
-# Node ID 2b9156756423e967cfd09a61d125d883fca6f4f2
-# Parent  053f53a381ff6adbbc93a31ab7fdee06a16c8a33
-Removed invalid simple key assertion (thank to Jonathan Gray).
-
-The patch comes from 
-
-https://bitbucket.org/xi/libyaml/commits/2b9156756423e967cfd09a61d125d883fca6f4f2
-
-Upstream-Status: Backport
-CVE: CVE-2014-9130
-
-Signed-off-by: Yue Tao <yue.tao@windriver.com>
-
-diff -r 053f53a381ff -r 2b9156756423 src/scanner.c
---- a/src/scanner.c	Wed Mar 26 13:55:54 2014 -0500
-+++ b/src/scanner.c	Fri Nov 28 11:55:12 2014 -0600
-@@ -1106,13 +1106,6 @@
-             && parser->indent == (ptrdiff_t)parser->mark.column);
- 
-     /*
--     * A simple key is required only when it is the first token in the current
--     * line.  Therefore it is always allowed.  But we add a check anyway.
--     */
--
--    assert(parser->simple_key_allowed || !required);    /* Impossible. */
--
--    /*
-      * If the current position may start a simple key, save it.
-      */
- 
diff --git a/import-layers/yocto-poky/meta/recipes-support/libyaml/libyaml_0.1.6.bb b/import-layers/yocto-poky/meta/recipes-support/libyaml/libyaml_0.1.6.bb
deleted file mode 100644
index b015577..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/libyaml/libyaml_0.1.6.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "LibYAML is a YAML 1.1 parser and emitter written in C."
-DESCRIPTION = "LibYAML is a C library for parsing and emitting data in YAML 1.1, \
-a human-readable data serialization format. "
-HOMEPAGE = "http://pyyaml.org/wiki/LibYAML"
-SECTION = "libs/devel"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6015f088759b10e0bc2bf64898d4ae17"
-
-SRC_URI = "http://pyyaml.org/download/libyaml/yaml-${PV}.tar.gz \
-           file://libyaml-CVE-2014-9130.patch \
-          "
-
-SRC_URI[md5sum] = "5fe00cda18ca5daeb43762b80c38e06e"
-SRC_URI[sha256sum] = "7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749"
-
-S = "${WORKDIR}/yaml-${PV}"
-
-inherit autotools
-
-BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/libyaml/libyaml_0.1.7.bb b/import-layers/yocto-poky/meta/recipes-support/libyaml/libyaml_0.1.7.bb
new file mode 100644
index 0000000..5c422ef
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/libyaml/libyaml_0.1.7.bb
@@ -0,0 +1,20 @@
+SUMMARY = "LibYAML is a YAML 1.1 parser and emitter written in C."
+DESCRIPTION = "LibYAML is a C library for parsing and emitting data in YAML 1.1, \
+a human-readable data serialization format. "
+HOMEPAGE = "http://pyyaml.org/wiki/LibYAML"
+SECTION = "libs/devel"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6015f088759b10e0bc2bf64898d4ae17"
+
+SRC_URI = "http://pyyaml.org/download/libyaml/yaml-${PV}.tar.gz \
+          "
+
+SRC_URI[md5sum] = "1abf45bd3a96374fa55ca63b32f9f2f9"
+SRC_URI[sha256sum] = "8088e457264a98ba451a90b8661fcb4f9d6f478f7265d48322a196cec2480729"
+
+S = "${WORKDIR}/yaml-${PV}"
+
+inherit autotools
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/yocto-poky/meta/recipes-support/lzo/lzo/run-ptest b/import-layers/yocto-poky/meta/recipes-support/lzo/lzo/run-ptest
index 2ea7745..6acb89f 100644
--- a/import-layers/yocto-poky/meta/recipes-support/lzo/lzo/run-ptest
+++ b/import-layers/yocto-poky/meta/recipes-support/lzo/lzo/run-ptest
@@ -1,8 +1,33 @@
 #!/bin/sh
 
 ./lzotest -mavail -n10 -q /etc/services
+if [ $? -eq 0 ]; then
+  echo 'PASS: lzotest'
+else
+  echo 'FAIL: lzotest'
+fi
 LZOTEST=./lzotest /bin/sh -e "./check.sh" "/etc"
 ./align
+if [ $? -eq 0 ]; then
+  echo 'PASS: align'
+else
+  echo 'FAIL: align'
+fi
 ./chksum
+if [ $? -eq 0 ]; then
+  echo 'PASS: chksum'
+else
+  echo 'FAIL: chksum'
+fi
 ./simple
+if [ $? -eq 0 ]; then
+  echo 'PASS: simple'
+else
+  echo 'FAIL: simple'
+fi
 ./testmini
+if [ $? -eq 0 ]; then
+  echo 'PASS: testmini'
+else
+  echo 'FAIL: testmini'
+fi
diff --git a/import-layers/yocto-poky/meta/recipes-support/lzop/lzop/lzop-1.03-gcc6.patch b/import-layers/yocto-poky/meta/recipes-support/lzop/lzop/lzop-1.03-gcc6.patch
new file mode 100644
index 0000000..72b3397
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/lzop/lzop/lzop-1.03-gcc6.patch
@@ -0,0 +1,37 @@
+gcc-6 has additional errors e.g.
+
+./test.c:1:12: error: variably modified '__acc_cta' at file scope
+ extern int __acc_cta[1-2*!((1l << (8*8 -1)) < 0)];
+            ^~~~~~~~~
+
+This is rightly pointed out since that index is undefined
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+--- a/src/miniacc.h.orig	2016-02-10 16:09:23.247315866 +0100
++++ a/src/miniacc.h	2016-02-10 16:12:14.973297054 +0100
+@@ -4469,12 +4469,12 @@
+ #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
+ #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
+ #else
+-    ACCCHK_ASSERT((1   << (8*SIZEOF_INT-1)) < 0)
++    ACCCHK_ASSERT((int)(1u   << (8*SIZEOF_INT-1)) < 0)
+ #endif
+     ACCCHK_ASSERT((1u  << (8*SIZEOF_INT-1)) > 0)
+ #if 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
+ #else
+-    ACCCHK_ASSERT((1l  << (8*SIZEOF_LONG-1)) < 0)
++    ACCCHK_ASSERT((long)(1ul  << (8*SIZEOF_LONG-1)) < 0)
+ #endif
+     ACCCHK_ASSERT((1ul << (8*SIZEOF_LONG-1)) > 0)
+ #if defined(acc_int16e_t)
+@@ -4703,7 +4703,7 @@
+ #elif 1 && (ACC_CC_LCC || ACC_CC_LCCWIN32) && !defined(ACCCHK_CFG_PEDANTIC)
+ #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
+ #elif !(ACC_BROKEN_INTEGRAL_PROMOTION) && (SIZEOF_INT > 1)
+-    ACCCHK_ASSERT( (((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0)
++    ACCCHK_ASSERT( (int)((unsigned int)((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0)
+ #endif
+ #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0560))
+ #  pragma option pop
diff --git a/import-layers/yocto-poky/meta/recipes-support/lzop/lzop_1.03.bb b/import-layers/yocto-poky/meta/recipes-support/lzop/lzop_1.03.bb
index 07d6289..649e724 100644
--- a/import-layers/yocto-poky/meta/recipes-support/lzop/lzop_1.03.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/lzop/lzop_1.03.bb
@@ -15,15 +15,15 @@
            file://acinclude.m4 \
            file://x32_abi_miniacc_h.patch \
            file://0001-use-static-inlines-as-the-external-inline-definition.patch \
+           file://lzop-1.03-gcc6.patch \
           "
 SRC_URI[md5sum] = "006c5e27fb78cdd14a628fdfa5aa1905"
 SRC_URI[sha256sum] = "c1425b8c77d49f5a679d5a126c90ea6ad99585a55e335a613cae59e909dbb2c9"
 
 inherit autotools
 
-do_configure () {
-    ln -sf  ../acinclude.m4 ${S}/acinclude.m4
-    autotools_do_configure
+do_configure_prepend () {
+    install -Dm 0644 ${WORKDIR}/acinclude.m4 ${S}/acinclude.m4
 }
 
 BBCLASSEXTEND += "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr-3.1.3/long-long-thumb.patch b/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr/long-long-thumb.patch
similarity index 100%
rename from import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr-3.1.3/long-long-thumb.patch
rename to import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr/long-long-thumb.patch
diff --git a/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr_3.1.3.bb b/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr_3.1.3.bb
deleted file mode 100644
index ee8a238..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr_3.1.3.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require mpfr.inc
-
-LICENSE = "GPLv3 & LGPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-		    file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6"
-DEPENDS = "gmp"
-
-SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.xz \
-           file://long-long-thumb.patch \
-           "
-
-SRC_URI[md5sum] = "6969398cd2fbc56a6af570b5273c56a9"
-SRC_URI[sha256sum] = "6835a08bd992c8257641791e9a6a2b35b02336c8de26d0a8577953747e514a16"
-
-UPSTREAM_CHECK_URI = "http://www.mpfr.org/mpfr-current/"
-
-S = "${WORKDIR}/mpfr-${PV}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr_3.1.4.bb b/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr_3.1.4.bb
new file mode 100644
index 0000000..230a862
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/mpfr/mpfr_3.1.4.bb
@@ -0,0 +1,18 @@
+require mpfr.inc
+
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+		    file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6"
+DEPENDS = "gmp"
+
+SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.xz \
+           file://long-long-thumb.patch \
+           "
+SRC_URI[md5sum] = "064b2c18185038e404a401b830d59be8"
+SRC_URI[sha256sum] = "761413b16d749c53e2bfd2b1dfaa3b027b0e793e404b90b5fbaeef60af6517f5"
+
+UPSTREAM_CHECK_URI = "http://www.mpfr.org/mpfr-current/"
+
+S = "${WORKDIR}/mpfr-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/yocto-poky/meta/recipes-support/nettle/nettle_2.7.1.bb b/import-layers/yocto-poky/meta/recipes-support/nettle/nettle_2.7.1.bb
index d4df0a3..ae8e311 100644
--- a/import-layers/yocto-poky/meta/recipes-support/nettle/nettle_2.7.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/nettle/nettle_2.7.1.bb
@@ -1,6 +1,6 @@
 require nettle.inc
 
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPLv2.1+ & GPLv2"
 LICENSE_${PN} = "LGPLv2.1+"
 
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
diff --git a/import-layers/yocto-poky/meta/recipes-support/npth/npth_1.2.bb b/import-layers/yocto-poky/meta/recipes-support/npth/npth_1.2.bb
index 1b3962e..66aa347 100644
--- a/import-layers/yocto-poky/meta/recipes-support/npth/npth_1.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/npth/npth_1.2.bb
@@ -6,7 +6,8 @@
     file://COPYING;md5=751419260aa954499f7abaabaa882bbe\
     file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6\
     "
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/npth/npth-${PV}.tar.bz2 \
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/npth/npth-${PV}.tar.bz2 \
            file://pkgconfig.patch \
           "
 
diff --git a/import-layers/yocto-poky/meta/recipes-support/nspr/nspr_4.12.bb b/import-layers/yocto-poky/meta/recipes-support/nspr/nspr_4.12.bb
index 168341b..fa6d523 100644
--- a/import-layers/yocto-poky/meta/recipes-support/nspr/nspr_4.12.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/nspr/nspr_4.12.bb
@@ -147,6 +147,9 @@
 
 inherit autotools
 
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
 do_compile_prepend() {
 	oe_runmake CROSS_COMPILE=1 CFLAGS="-DXP_UNIX" LDFLAGS="" CC=gcc -C config export
 }
diff --git a/import-layers/yocto-poky/meta/recipes-support/nss/nss/0001-Fix-build-failure-on-opensuse-13.1.patch b/import-layers/yocto-poky/meta/recipes-support/nss/nss/0001-Fix-build-failure-on-opensuse-13.1.patch
deleted file mode 100644
index cb3ad00..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/nss/nss/0001-Fix-build-failure-on-opensuse-13.1.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 8758c6a4508a5ca01505a8d69a269c912ce10bee Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 18 Jan 2016 18:26:16 +0000
-Subject: [PATCH] Fix build failure on opensuse 13.1
-
-Upstream-Status: Inappropriate [gcc 4.8 specific issue]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- nss/cmd/modutil/install-ds.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/nss/cmd/modutil/install-ds.h b/nss/cmd/modutil/install-ds.h
-index 3a3afb3..433efe0 100644
---- a/nss/cmd/modutil/install-ds.h
-+++ b/nss/cmd/modutil/install-ds.h
-@@ -243,7 +243,7 @@ struct Pk11Install_Info_str {
- Pk11Install_Info*
- Pk11Install_Info_new();
- void
--Pk11Install_Info_init();
-+Pk11Install_Info_init(Pk11Install_Info* _this);
- void
- Pk11Install_Info_delete(Pk11Install_Info* _this);
- /*// Returns NULL for success, error message if parse error.*/
--- 
-1.8.4.5
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch b/import-layers/yocto-poky/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
new file mode 100644
index 0000000..86b1b60
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
@@ -0,0 +1,33 @@
+clang 3.9 add this warning to rightly flag undefined
+behavior, we relegate this to be just a warning instead
+of error and keep the behavior as it was. Right fix would
+be to not pass enum to the function with variadic arguments
+as last named argument
+
+Fixes errors like
+ocsp.c:2220:22: error: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Werror,-Wvarargs]
+        va_start(ap, responseType0);
+                     ^
+ocsp.c:2200:43: note: parameter of type 'SECOidTag' is declared here
+                                SECOidTag responseType0, ...)
+
+see
+https://www.securecoding.cert.org/confluence/display/cplusplus/EXP58-CPP.+Pass+an+object+of+the+correct+type+to+va_start
+for more details
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+Index: nss-3.24/nss/coreconf/Werror.mk
+===================================================================
+--- nss-3.24.orig/nss/coreconf/Werror.mk
++++ nss-3.24/nss/coreconf/Werror.mk
+@@ -54,7 +54,7 @@ ifndef WARNING_CFLAGS
+     ifdef CC_IS_CLANG
+       # -Qunused-arguments : clang objects to arguments that it doesn't understand
+       #    and fixing this would require rearchitecture
+-      WARNING_CFLAGS += -Qunused-arguments
++      WARNING_CFLAGS += -Qunused-arguments -Wno-error=varargs
+       # -Wno-parentheses-equality : because clang warns about macro expansions
+       WARNING_CFLAGS += $(call disable_warning,parentheses-equality)
+       ifdef BUILD_OPT
diff --git a/import-layers/yocto-poky/meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch b/import-layers/yocto-poky/meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch
index 866de07..181c69a 100644
--- a/import-layers/yocto-poky/meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/nss/nss/nss-fix-nsinstall-build.patch
@@ -16,11 +16,11 @@
 
 Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
 ===================================================
-diff --git a/nss/coreconf/nsinstall/Makefile b/nss/coreconf/nsinstall/Makefile
-index 1850bcb..5aee84f 100644
---- a/nss/coreconf/nsinstall/Makefile
-+++ b/nss/coreconf/nsinstall/Makefile
-@@ -18,6 +18,12 @@ INTERNAL_TOOLS  = 1
+Index: nss-3.24/nss/coreconf/nsinstall/Makefile
+===================================================================
+--- nss-3.24.orig/nss/coreconf/nsinstall/Makefile
++++ nss-3.24/nss/coreconf/nsinstall/Makefile
+@@ -18,6 +18,13 @@ INTERNAL_TOOLS  = 1
  
  include $(DEPTH)/coreconf/config.mk
  
@@ -29,6 +29,7 @@
 +# to clean the '-m64' from ARCHFLAG and LDFLAGS.
 +ARCHFLAG =
 +LDFLAGS =
++CFLAGS =
 +
  ifeq (,$(filter-out OS2 WIN%,$(OS_TARGET)))
  PROGRAM		=
diff --git a/import-layers/yocto-poky/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch b/import-layers/yocto-poky/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch
new file mode 100644
index 0000000..9caaaeb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch
@@ -0,0 +1,23 @@
+nss does not build on mips with clang because wrong types are used?
+
+pqg.c:339:16: error: comparison of constant 18446744073709551615 with expression of type 'unsigned long' is always true [-Werror,-Wtautological-constant-out-of-range-compare]
+     if (addend < MP_DIGIT_MAX) {
+       ~~~~~~ ^ ~~~~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+Index: nss-3.24/nss/lib/freebl/pqg.c
+===================================================================
+--- nss-3.24.orig/nss/lib/freebl/pqg.c
++++ nss-3.24/nss/lib/freebl/pqg.c
+@@ -322,8 +322,8 @@ generate_h_candidate(SECItem *hit, mp_in
+ 
+ static SECStatus
+ addToSeed(const SECItem * seed,
+-          unsigned long   addend,
+-          int             seedlen, /* g in 186-1 */
++          unsigned long long  addend,
++          int                 seedlen, /* g in 186-1 */
+           SECItem * seedout)
+ {
+     mp_int s, sum, modulus, tmp;
diff --git a/import-layers/yocto-poky/meta/recipes-support/nss/nss_3.21.bb b/import-layers/yocto-poky/meta/recipes-support/nss/nss_3.21.bb
deleted file mode 100644
index d2e2411..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/nss/nss_3.21.bb
+++ /dev/null
@@ -1,240 +0,0 @@
-SUMMARY = "Mozilla's SSL and TLS implementation"
-DESCRIPTION = "Network Security Services (NSS) is a set of libraries \
-designed to support cross-platform development of \
-security-enabled client and server applications. \
-Applications built with NSS can support SSL v2 and v3, \
-TLS, PKCS 5, PKCS 7, PKCS 11, PKCS 12, S/MIME, X.509 \
-v3 certificates, and other security standards."
-HOMEPAGE = "http://www.mozilla.org/projects/security/pki/nss/"
-SECTION = "libs"
-
-LICENSE = "MPL-2.0 | (MPL-2.0 & GPL-2.0+) | (MPL-2.0 & LGPL-2.1+)"
-
-LIC_FILES_CHKSUM = "file://nss/COPYING;md5=3b1e88e1b9c0b5a4b2881d46cce06a18 \
-                    file://nss/lib/freebl/mpi/doc/LICENSE;md5=491f158d09d948466afce85d6f1fe18f \
-                    file://nss/lib/freebl/mpi/doc/LICENSE-MPL;md5=5d425c8f3157dbf212db2ec53d9e5132"
-
-SRC_URI = "\
-    http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_21_RTM/src/${BP}.tar.gz \
-    file://nss-fix-support-cross-compiling.patch \
-    file://nss-no-rpath-for-cross-compiling.patch \
-    file://nss-fix-incorrect-shebang-of-perl.patch \
-    file://nss-fix-nsinstall-build.patch \
-    file://0001-Fix-build-failure-on-opensuse-13.1.patch \
-    file://nss.pc.in \
-    file://signlibs.sh \
-"
-
-SRC_URI[md5sum] = "3c8b2ed880dd3a8d86c9e0151afe6eba"
-SRC_URI[sha256sum] = "3f7a5b027d7cdd5c0e4ff7544da33fdc6f56c2f8c27fff02938fd4a6fbe87239"
-
-UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases"
-UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes"
-
-inherit siteinfo
-
-DEPENDS = "sqlite3 nspr zlib nss-native"
-DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
-RDEPENDS_${PN}-smime = "perl"
-
-TD = "${S}/tentative-dist"
-TDS = "${S}/tentative-dist-staging"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_configure_prepend_libc-musl () {
-    sed -i -e '/-DHAVE_SYS_CDEFS_H/d' ${S}/nss/lib/dbm/config/config.mk
-}
-
-do_compile_prepend_class-native() {
-    export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
-    export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
-}
-
-do_compile_prepend_class-nativesdk() {
-    export LDFLAGS=""
-}
-
-do_compile_prepend_class-native() {
-    # Need to set RPATH so that chrpath will do its job correctly
-    RPATH="-Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} -Wl,-rpath-link,${STAGING_BASE_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_BASE_LIBDIR_NATIVE}"
-}
-
-do_compile() {
-    export CROSS_COMPILE=1
-    export NATIVE_CC="gcc"
-    export BUILD_OPT=1
-
-    export FREEBL_NO_DEPEND=1
-    export FREEBL_LOWHASH=1
-
-    export LIBDIR=${libdir}
-    export MOZILLA_CLIENT=1
-    export NS_USE_GCC=1
-    export NSS_USE_SYSTEM_SQLITE=1
-    export NSS_ENABLE_ECC=1
-
-    export OS_RELEASE=3.4
-    export OS_TARGET=Linux
-    export OS_ARCH=Linux
-
-    if [ "${TARGET_ARCH}" = "powerpc" ]; then
-        OS_TEST=ppc
-    elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
-        OS_TEST=ppc64
-    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
-        OS_TEST=mips
-    else
-        OS_TEST="${TARGET_ARCH}"
-    fi
-
-    if [ "${SITEINFO_BITS}" = "64" ]; then
-        export USE_64=1
-    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
-        export USE_X32=1
-    fi
-
-    export NSS_DISABLE_GTESTS=1
-
-    # We can modify CC in the environment, but if we set it via an
-    # argument to make, nsinstall, a host program, will also build with it!
-    #
-    export CC="${CC} -g"
-    make -C ./nss CCC="${CXX} -g" \
-        OS_TEST=${OS_TEST} \
-        RPATH="${RPATH}"
-}
-
-
-do_install_prepend_class-nativesdk() {
-    export LDFLAGS=""
-}
-
-do_install() {
-    export CROSS_COMPILE=1
-    export NATIVE_CC="gcc"
-    export BUILD_OPT=1
-
-    export FREEBL_NO_DEPEND=1
-
-    export LIBDIR=${libdir}
-    export MOZILLA_CLIENT=1
-    export NS_USE_GCC=1
-    export NSS_USE_SYSTEM_SQLITE=1
-    export NSS_ENABLE_ECC=1
-
-    export OS_RELEASE=3.4
-    export OS_TARGET=Linux
-    export OS_ARCH=Linux
-
-    if [ "${TARGET_ARCH}" = "powerpc" ]; then
-        OS_TEST=ppc
-    elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
-        OS_TEST=ppc64
-    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
-        OS_TEST=mips
-    else
-        OS_TEST="${TARGET_ARCH}"
-    fi
-    if [ "${SITEINFO_BITS}" = "64" ]; then
-        export USE_64=1
-    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
-        export USE_X32=1
-    fi
-
-    export NSS_DISABLE_GTESTS=1
-
-    make -C ./nss \
-        CCC="${CXX}" \
-        OS_TEST=${OS_TEST} \
-        SOURCE_LIB_DIR="${TD}/${libdir}" \
-        SOURCE_BIN_DIR="${TD}/${bindir}" \
-        install
-
-    install -d ${D}/${libdir}/
-    for file in ${S}/dist/*.OBJ/lib/*.so; do
-        echo "Installing `basename $file`..."
-        cp $file  ${D}/${libdir}/
-    done
-
-    for shared_lib in ${TD}/${libdir}/*.so.*; do
-        if [ -f $shared_lib ]; then
-            cp $shared_lib ${D}/${libdir}
-            ln -sf $(basename $shared_lib) ${D}/${libdir}/$(basename $shared_lib .1oe)
-        fi
-    done
-    for shared_lib in ${TD}/${libdir}/*.so; do
-        if [ -f $shared_lib -a ! -e ${D}/${libdir}/$shared_lib ]; then
-            cp $shared_lib ${D}/${libdir}
-        fi
-    done
-
-    install -d ${D}/${includedir}/nss3
-    install -m 644 -t ${D}/${includedir}/nss3 dist/public/nss/*
-
-    install -d ${D}/${bindir}
-    for binary in ${TD}/${bindir}/*; do
-        install -m 755 -t ${D}/${bindir} $binary
-    done
-}
-
-do_install_append() {
-    # Create empty .chk files for the NSS libraries at build time. They could
-    # be regenerated at target's boot time.
-    for file in libsoftokn3.chk libfreebl3.chk libnssdbm3.chk; do
-        touch ${D}/${libdir}/$file
-        chmod 755 ${D}/${libdir}/$file
-    done
-    install -D -m 755 ${WORKDIR}/signlibs.sh ${D}/${bindir}/signlibs.sh
-
-    install -d ${D}${libdir}/pkgconfig/
-    sed 's/%NSS_VERSION%/${PV}/' ${WORKDIR}/nss.pc.in | sed 's/%NSPR_VERSION%/4.9.2/' > ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OEPREFIX:${prefix}:g ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OEEXECPREFIX:${exec_prefix}:g ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OELIBDIR:${libdir}:g ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OEINCDIR:${includedir}/nss3:g ${D}${libdir}/pkgconfig/nss.pc
-}
-
-do_install_append_class-target() {
-    # Create a blank certificate
-    mkdir -p ${D}${sysconfdir}/pki/nssdb/
-    touch ./empty_password
-    certutil -N -d ${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
-    chmod 644 ${D}${sysconfdir}/pki/nssdb/*.db
-    rm ./empty_password
-}
-
-pkg_postinst_${PN} () {
-    if [ -n "$D" ]; then
-        for I in $D/${libdir}/lib*.chk; do
-            DN=`dirname $I`
-            BN=`basename $I .chk`
-            FN=$DN/$BN.so
-            shlibsign -i $FN
-	    if [ $? -ne 0 ]; then
-	       exit 1
-	    fi
-        done
-        exit 0
-    fi
-    signlibs.sh
-}
-
-PACKAGES =+ "${PN}-smime"
-FILES_${PN}-smime = "\
-    ${bindir}/smime \
-"
-FILES_${PN} = "\
-    ${sysconfdir} \
-    ${bindir} \
-    ${libdir}/lib*.chk \
-    ${libdir}/lib*.so \
-    "
-FILES_${PN}-dev = "\
-    ${libdir}/nss \
-    ${libdir}/pkgconfig/* \
-    ${includedir}/* \
-    "
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/nss/nss_3.25.bb b/import-layers/yocto-poky/meta/recipes-support/nss/nss_3.25.bb
new file mode 100644
index 0000000..eff09eb
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/nss/nss_3.25.bb
@@ -0,0 +1,242 @@
+SUMMARY = "Mozilla's SSL and TLS implementation"
+DESCRIPTION = "Network Security Services (NSS) is a set of libraries \
+designed to support cross-platform development of \
+security-enabled client and server applications. \
+Applications built with NSS can support SSL v2 and v3, \
+TLS, PKCS 5, PKCS 7, PKCS 11, PKCS 12, S/MIME, X.509 \
+v3 certificates, and other security standards."
+HOMEPAGE = "http://www.mozilla.org/projects/security/pki/nss/"
+SECTION = "libs"
+
+LICENSE = "MPL-2.0 | (MPL-2.0 & GPL-2.0+) | (MPL-2.0 & LGPL-2.1+)"
+
+LIC_FILES_CHKSUM = "file://nss/COPYING;md5=3b1e88e1b9c0b5a4b2881d46cce06a18 \
+                    file://nss/lib/freebl/mpi/doc/LICENSE;md5=491f158d09d948466afce85d6f1fe18f \
+                    file://nss/lib/freebl/mpi/doc/LICENSE-MPL;md5=5d425c8f3157dbf212db2ec53d9e5132"
+
+SRC_URI = "\
+    http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_25_RTM/src/${BP}.tar.gz \
+    file://nss-fix-support-cross-compiling.patch \
+    file://nss-no-rpath-for-cross-compiling.patch \
+    file://nss-fix-incorrect-shebang-of-perl.patch \
+    file://nss-fix-nsinstall-build.patch \
+    file://disable-Wvarargs-with-clang.patch \
+    file://pqg.c-ULL_addend.patch \
+    file://nss.pc.in \
+    file://signlibs.sh \
+"
+SRC_URI[md5sum] = "23169c406adc8ac3672d34bf9ea2433d"
+SRC_URI[sha256sum] = "5d1ad475da19d0c033a716350dc5f8a747999d3eba5ac07ee0368c5bad6e2359"
+
+UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases"
+UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes"
+
+inherit siteinfo
+
+DEPENDS = "sqlite3 nspr zlib nss-native"
+DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
+RDEPENDS_${PN}-smime = "perl"
+
+TD = "${S}/tentative-dist"
+TDS = "${S}/tentative-dist-staging"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_configure_prepend_libc-musl () {
+    sed -i -e '/-DHAVE_SYS_CDEFS_H/d' ${S}/nss/lib/dbm/config/config.mk
+}
+
+do_compile_prepend_class-native() {
+    export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}
+    export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
+    export NSS_ENABLE_WERROR=0
+}
+
+do_compile_prepend_class-nativesdk() {
+    export LDFLAGS=""
+}
+
+do_compile_prepend_class-native() {
+    # Need to set RPATH so that chrpath will do its job correctly
+    RPATH="-Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} -Wl,-rpath-link,${STAGING_BASE_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_BASE_LIBDIR_NATIVE}"
+}
+
+do_compile() {
+    export CROSS_COMPILE=1
+    export NATIVE_CC="gcc"
+    export NATIVE_FLAGS="${HOST_CFLAGS}"
+    export BUILD_OPT=1
+
+    export FREEBL_NO_DEPEND=1
+    export FREEBL_LOWHASH=1
+
+    export LIBDIR=${libdir}
+    export MOZILLA_CLIENT=1
+    export NS_USE_GCC=1
+    export NSS_USE_SYSTEM_SQLITE=1
+    export NSS_ENABLE_ECC=1
+
+    export OS_RELEASE=3.4
+    export OS_TARGET=Linux
+    export OS_ARCH=Linux
+
+    if [ "${TARGET_ARCH}" = "powerpc" ]; then
+        OS_TEST=ppc
+    elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
+        OS_TEST=ppc64
+    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
+        OS_TEST=mips
+    else
+        OS_TEST="${TARGET_ARCH}"
+    fi
+
+    if [ "${SITEINFO_BITS}" = "64" ]; then
+        export USE_64=1
+    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
+        export USE_X32=1
+    fi
+
+    export NSS_DISABLE_GTESTS=1
+
+    # We can modify CC in the environment, but if we set it via an
+    # argument to make, nsinstall, a host program, will also build with it!
+    #
+    export CC="${CC} -g"
+    make -C ./nss CCC="${CXX} -g" \
+        OS_TEST=${OS_TEST} \
+        RPATH="${RPATH}"
+}
+
+
+do_install_prepend_class-nativesdk() {
+    export LDFLAGS=""
+}
+
+do_install() {
+    export CROSS_COMPILE=1
+    export NATIVE_CC="gcc"
+    export BUILD_OPT=1
+
+    export FREEBL_NO_DEPEND=1
+
+    export LIBDIR=${libdir}
+    export MOZILLA_CLIENT=1
+    export NS_USE_GCC=1
+    export NSS_USE_SYSTEM_SQLITE=1
+    export NSS_ENABLE_ECC=1
+
+    export OS_RELEASE=3.4
+    export OS_TARGET=Linux
+    export OS_ARCH=Linux
+
+    if [ "${TARGET_ARCH}" = "powerpc" ]; then
+        OS_TEST=ppc
+    elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
+        OS_TEST=ppc64
+    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
+        OS_TEST=mips
+    else
+        OS_TEST="${TARGET_ARCH}"
+    fi
+    if [ "${SITEINFO_BITS}" = "64" ]; then
+        export USE_64=1
+    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
+        export USE_X32=1
+    fi
+
+    export NSS_DISABLE_GTESTS=1
+
+    make -C ./nss \
+        CCC="${CXX}" \
+        OS_TEST=${OS_TEST} \
+        SOURCE_LIB_DIR="${TD}/${libdir}" \
+        SOURCE_BIN_DIR="${TD}/${bindir}" \
+        install
+
+    install -d ${D}/${libdir}/
+    for file in ${S}/dist/*.OBJ/lib/*.so; do
+        echo "Installing `basename $file`..."
+        cp $file  ${D}/${libdir}/
+    done
+
+    for shared_lib in ${TD}/${libdir}/*.so.*; do
+        if [ -f $shared_lib ]; then
+            cp $shared_lib ${D}/${libdir}
+            ln -sf $(basename $shared_lib) ${D}/${libdir}/$(basename $shared_lib .1oe)
+        fi
+    done
+    for shared_lib in ${TD}/${libdir}/*.so; do
+        if [ -f $shared_lib -a ! -e ${D}/${libdir}/$shared_lib ]; then
+            cp $shared_lib ${D}/${libdir}
+        fi
+    done
+
+    install -d ${D}/${includedir}/nss3
+    install -m 644 -t ${D}/${includedir}/nss3 dist/public/nss/*
+
+    install -d ${D}/${bindir}
+    for binary in ${TD}/${bindir}/*; do
+        install -m 755 -t ${D}/${bindir} $binary
+    done
+}
+
+do_install_append() {
+    # Create empty .chk files for the NSS libraries at build time. They could
+    # be regenerated at target's boot time.
+    for file in libsoftokn3.chk libfreebl3.chk libnssdbm3.chk; do
+        touch ${D}/${libdir}/$file
+        chmod 755 ${D}/${libdir}/$file
+    done
+    install -D -m 755 ${WORKDIR}/signlibs.sh ${D}/${bindir}/signlibs.sh
+
+    install -d ${D}${libdir}/pkgconfig/
+    sed 's/%NSS_VERSION%/${PV}/' ${WORKDIR}/nss.pc.in | sed 's/%NSPR_VERSION%/4.9.2/' > ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OEPREFIX:${prefix}:g ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OEEXECPREFIX:${exec_prefix}:g ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OELIBDIR:${libdir}:g ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OEINCDIR:${includedir}/nss3:g ${D}${libdir}/pkgconfig/nss.pc
+}
+
+do_install_append_class-target() {
+    # Create a blank certificate
+    mkdir -p ${D}${sysconfdir}/pki/nssdb/
+    touch ./empty_password
+    certutil -N -d ${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
+    chmod 644 ${D}${sysconfdir}/pki/nssdb/*.db
+    rm ./empty_password
+}
+
+pkg_postinst_${PN} () {
+    if [ -n "$D" ]; then
+        for I in $D/${libdir}/lib*.chk; do
+            DN=`dirname $I`
+            BN=`basename $I .chk`
+            FN=$DN/$BN.so
+            shlibsign -i $FN
+	    if [ $? -ne 0 ]; then
+	       exit 1
+	    fi
+        done
+        exit 0
+    fi
+    signlibs.sh
+}
+
+PACKAGES =+ "${PN}-smime"
+FILES_${PN}-smime = "\
+    ${bindir}/smime \
+"
+FILES_${PN} = "\
+    ${sysconfdir} \
+    ${bindir} \
+    ${libdir}/lib*.chk \
+    ${libdir}/lib*.so \
+    "
+FILES_${PN}-dev = "\
+    ${libdir}/nss \
+    ${libdir}/pkgconfig/* \
+    ${includedir}/* \
+    "
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/p11-kit/p11-kit_0.22.1.bb b/import-layers/yocto-poky/meta/recipes-support/p11-kit/p11-kit_0.22.1.bb
index a4efff1..38fa09b 100644
--- a/import-layers/yocto-poky/meta/recipes-support/p11-kit/p11-kit_0.22.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/p11-kit/p11-kit_0.22.1.bb
@@ -2,7 +2,7 @@
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://COPYING;md5=02933887f609807fbb57aa4237d14a50"
 
-inherit autotools gettext pkgconfig upstream-version-is-even
+inherit autotools gettext pkgconfig upstream-version-is-even gtk-doc
 
 DEPENDS = "libtasn1 libffi"
 
@@ -12,6 +12,26 @@
 
 EXTRA_OECONF = "--without-trust-paths"
 
+# This recipe does not use the standard gtk-doc m4 macros, and so the ./configure flags
+# that control gtk-doc build are non-standard
+EXTRA_OECONF_prepend_class-target = "${@bb.utils.contains('GTKDOC_ENABLED', 'True', '--enable-doc --enable-doc-html --disable-doc-pdf', \
+                                                                                    '--disable-doc', d)} "
+
+# When building native recipes, disable gtkdoc, as it is not necessary,
+# pulls in additional dependencies, and makes build times longer
+EXTRA_OECONF_prepend_class-native = "--disable-doc "
+EXTRA_OECONF_prepend_class-nativesdk = "--disable-doc "
+
+UNKNOWN_CONFIGURE_WHITELIST_append = " --enable-gtk-doc-html --disable-gtk-doc-pdf --enable-gtk-doc --disable-gtk-doc"
+
+# p11-kit relies on these two being copied from source tree
+# instead of being regenerated by gtkdoc-scan, but doesn't setup
+# dependencies correctly when there is a parallel build. Let's pre-copy
+# them instead.
+do_compile_prepend () {
+        cp ${S}/doc/manual/p11-kit-overrides.txt ${S}/doc/manual/p11-kit-sections.txt ${B}/doc/manual/
+}
+
 FILES_${PN} += " \
     ${libdir}/p11-kit-proxy.so \
     ${libdir}/pkcs11/*.so \
diff --git a/import-layers/yocto-poky/meta/recipes-support/pinentry/pinentry_0.9.2.bb b/import-layers/yocto-poky/meta/recipes-support/pinentry/pinentry_0.9.2.bb
index d6b7130..d315a99 100644
--- a/import-layers/yocto-poky/meta/recipes-support/pinentry/pinentry_0.9.2.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/pinentry/pinentry_0.9.2.bb
@@ -12,7 +12,8 @@
 
 DEPENDS = "gettext-native"
 
-SRC_URI = "ftp://ftp.gnupg.org/gcrypt/${BPN}/${BPN}-${PV}.tar.bz2"
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2"
 
 SRC_URI[md5sum] = "f51d454f921111b5156a2291cbf70278"
 SRC_URI[sha256sum] = "fd8bc1592ceb22bb492b07cb29b1b140bb882c859e6503b974254c0a4b4134d1"
diff --git a/import-layers/yocto-poky/meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch b/import-layers/yocto-poky/meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch
index 91bca96..7d74aad 100644
--- a/import-layers/yocto-poky/meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch
+++ b/import-layers/yocto-poky/meta/recipes-support/popt/popt/popt_fix_for_automake-1.12.patch
@@ -4,7 +4,7 @@
 
 | configure.ac:49: error: automatic de-ANSI-fication support has been removed
 
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
 2012/05/02
 
 Index: popt-1.16/configure.ac
diff --git a/import-layers/yocto-poky/meta/recipes-support/popt/popt_1.16.bb b/import-layers/yocto-poky/meta/recipes-support/popt/popt_1.16.bb
index cb13a81..478288f 100644
--- a/import-layers/yocto-poky/meta/recipes-support/popt/popt_1.16.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/popt/popt_1.16.bb
@@ -6,6 +6,8 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=cb0613c30af2a8249b8dcc67d3edb06d"
 PR = "r3"
 
+DEPENDS = "virtual/libiconv"
+
 SRC_URI = "http://rpm5.org/files/popt/popt-${PV}.tar.gz \
            file://pkgconfig_fix.patch \
            file://popt_fix_for_automake-1.12.patch \
diff --git a/import-layers/yocto-poky/meta/recipes-support/ptest-runner/ptest-runner_2.0.bb b/import-layers/yocto-poky/meta/recipes-support/ptest-runner/ptest-runner_2.0.bb
index 7081afb..9d45513 100644
--- a/import-layers/yocto-poky/meta/recipes-support/ptest-runner/ptest-runner_2.0.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/ptest-runner/ptest-runner_2.0.bb
@@ -7,8 +7,8 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
 
-SRCREV = "8bfdf946e784f4d5757bebee1fbc4b4a3d7a95c4"
-PV = "2.0+git${SRCPV}"
+SRCREV = "e2aa4256745377b784c8691f546041b59f6e046b"
+PV = "2.0.1+git${SRCPV}"
 
 SRC_URI = "git://git.yoctoproject.org/ptest-runner2"
 S = "${WORKDIR}/git"
@@ -22,5 +22,5 @@
 }
 
 do_install () {
-	install -D -m 0755 ${WORKDIR}/git/ptest-runner ${D}${bindir}/ptest-runner
+	install -D -m 0755 ${S}/ptest-runner ${D}${bindir}/ptest-runner
 }
diff --git a/import-layers/yocto-poky/meta/recipes-support/serf/serf_1.3.8.bb b/import-layers/yocto-poky/meta/recipes-support/serf/serf_1.3.8.bb
index b5059d5..c498d90 100644
--- a/import-layers/yocto-poky/meta/recipes-support/serf/serf_1.3.8.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/serf/serf_1.3.8.bb
@@ -1,11 +1,13 @@
 SUMMARY = "High-Performance Asynchronous HTTP Client Library"
-SRC_URI = "${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.gz \
+SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/s/${BPN}/${BPN}_${PV}.orig.tar.gz \
            file://norpath.patch \
            file://env.patch"
 
 SRC_URI[md5sum] = "713beaf05d7f3329de121e218e2fcb93"
 SRC_URI[sha256sum] = "77134cd5010664ca023585bce50978bd4005906ed280ff889f591f86df7c59e4"
 
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/s/serf/"
+
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
diff --git a/import-layers/yocto-poky/meta/recipes-support/source-highlight/files/0001-source-highlight.pc.in-do-not-add-Boost-s-libraries-.patch b/import-layers/yocto-poky/meta/recipes-support/source-highlight/files/0001-source-highlight.pc.in-do-not-add-Boost-s-libraries-.patch
new file mode 100644
index 0000000..b0aa5d1
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/source-highlight/files/0001-source-highlight.pc.in-do-not-add-Boost-s-libraries-.patch
@@ -0,0 +1,30 @@
+From 9aa01fd5f9d8b2b98c34684dc8f68115750ef41c Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 12 Jul 2016 17:15:13 +0300
+Subject: [PATCH] source-highlight.pc.in: do not add Boost's libraries and
+ includes
+
+This breaks when compiling in sysroots; a proper way is to use Depends
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ source-highlight.pc.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/source-highlight.pc.in b/source-highlight.pc.in
+index 79ab63e..64114a7 100644
+--- a/source-highlight.pc.in
++++ b/source-highlight.pc.in
+@@ -7,6 +7,6 @@ Name: libsource-highlight
+ Description: GNU Source-highlight library.
+ URL: http://www.gnu.org/software/src-highlite/
+ Version: @VERSION@
+-Libs: -L${libdir} -lsource-highlight @BOOST_LDFLAGS@ @BOOST_REGEX_LIB@
+-Cflags: -I${includedir} @BOOST_CPPFLAGS@
++Libs: -L${libdir} -lsource-highlight
++Cflags: -I${includedir}
+ 
+-- 
+2.8.1
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/source-highlight/source-highlight_3.1.8.bb b/import-layers/yocto-poky/meta/recipes-support/source-highlight/source-highlight_3.1.8.bb
new file mode 100644
index 0000000..85923e4
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/source-highlight/source-highlight_3.1.8.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Syntax highlight utility"
+DESCRIPTION = "Source-highlight converts source code to formatted text with syntax highlighting."
+HOMEPAGE = "https://www.gnu.org/software/src-highlite/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ff95bfe019feaf92f524b73dd79e76eb"
+
+SRC_URI = "${GNU_MIRROR}/src-highlite/${BPN}-${PV}.tar.gz \
+           file://0001-source-highlight.pc.in-do-not-add-Boost-s-libraries-.patch"
+SRC_URI[md5sum] = "3243470706ef5fefdc3e43b5306a4e41"
+SRC_URI[sha256sum] = "01336a7ea1d1ccc374201f7b81ffa94d0aecb33afc7d6903ebf9fbf33a55ada3"
+
+inherit autotools
+
+DEPENDS_append = " boost"
+
+DEPENDS_append_class-target = " source-highlight-native"
+
+EXTRA_OECONF = "--with-boost=yes --with-boost-libdir=${STAGING_DIR_TARGET}${libdir}"
+
+BBCLASSEXTEND = "native"
+
+# source-highlight is using its own binary from the build tree to make documentation
+# let's substitute the native binary instead
+do_configure_prepend_class-target () {
+        sed -i -e 's,^SRCHILITEEXE = $(top_builddir).*,SRCHILITEEXE = source-highlight,' ${S}/doc/Makefile.am
+}
+
+RDEPENDS_source-highlight += "bash"
diff --git a/import-layers/yocto-poky/meta/recipes-support/sqlite/files/0001-revert-ad601c7962-that-brings-2-increase-of-build-ti.patch b/import-layers/yocto-poky/meta/recipes-support/sqlite/files/0001-revert-ad601c7962-that-brings-2-increase-of-build-ti.patch
new file mode 100644
index 0000000..26540b2
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/sqlite/files/0001-revert-ad601c7962-that-brings-2-increase-of-build-ti.patch
@@ -0,0 +1,56 @@
+From 4b286b441e8efa9a34eb0db8227748ebffd91c35 Mon Sep 17 00:00:00 2001
+From: Jianxun Zhang <jianxun.zhang@linux.intel.com>
+Date: Thu, 13 Oct 2016 09:24:21 -0700
+Subject: [PATCH] revert ad601c7962 that brings 2% increase of build time.
+
+The comment of the change in sqlite fossil project is:
+"For in-memory databases, it does not matter if pcache
+entries are marked "clean" or "writable"."
+
+Upstream Status: Inappropriate
+
+Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com>
+---
+ sqlite3.c | 12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
+
+diff --git a/sqlite3.c b/sqlite3.c
+index ccddfe6..ecae550 100644
+--- a/sqlite3.c
++++ b/sqlite3.c
+@@ -13146,7 +13146,7 @@ struct PgHdr {
+   sqlite3_pcache_page *pPage;    /* Pcache object page handle */
+   void *pData;                   /* Page data */
+   void *pExtra;                  /* Extra content */
+-  PgHdr *pDirty;                 /* Transient list of dirty sorted by pgno */
++  PgHdr *pDirty;                 /* Transient list of dirty pages */
+   Pager *pPager;                 /* The pager this page is part of */
+   Pgno pgno;                     /* Page number for this page */
+ #ifdef SQLITE_CHECK_PAGES
+@@ -43504,13 +43504,7 @@ bitvec_end:
+ /* #include "sqliteInt.h" */
+ 
+ /*
+-** A complete page cache is an instance of this structure.  Every
+-** entry in the cache holds a single page of the database file.  The
+-** btree layer only operates on the cached copy of the database pages.
+-**
+-** A page cache entry is "clean" if it exactly matches what is currently
+-** on disk.  A page is "dirty" if it has been modified and needs to be
+-** persisted to disk.
++** A complete page cache is an instance of this structure.
+ **
+ ** pDirty, pDirtyTail, pSynced:
+ **   All dirty pages are linked into the doubly linked list using
+@@ -48314,7 +48308,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){
+   pPager->pInJournal = 0;
+   pPager->nRec = 0;
+   if( rc==SQLITE_OK ){
+-    if( pagerFlushOnCommit(pPager, bCommit) ){
++    if( MEMDB || pagerFlushOnCommit(pPager, bCommit) ){
+       sqlite3PcacheCleanAll(pPager->pPCache);
+     }else{
+       sqlite3PcacheClearWritable(pPager->pPCache);
+-- 
+2.7.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3/fix-disable-static-shell.patch b/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3/fix-disable-static-shell.patch
deleted file mode 100644
index 6f39ae2..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3/fix-disable-static-shell.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From ede5db83e38cc8ad8c9be291cd8985f7ad99f291 Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Tue, 16 Feb 2016 14:00:00 -0800
-Subject: [PATCH] fix --disable-static-shell
-
-Upstream sqlite seems to be moving further and further away from
-allowing the sqlite3 command line tool to be dynamically linked with
-sqlite.
-
-The --disable-static-shell configure option added in 3.10.0 no longer
-has any effect in 3.11.0. For now patch things up and make it work.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- Makefile.am  | 13 +++++++++++--
- configure.ac |  2 +-
- 2 files changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 0e09cfc..608c0fd 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -6,9 +6,18 @@ libsqlite3_la_SOURCES = sqlite3.c
- libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8
- 
- bin_PROGRAMS = sqlite3
--sqlite3_SOURCES = shell.c sqlite3.c sqlite3.h
--sqlite3_LDADD = @READLINE_LIBS@
-+sqlite3_SOURCES = shell.c sqlite3.h
-+EXTRA_sqlite3_SOURCES = sqlite3.c
-+sqlite3_LDADD = @EXTRA_SHELL_OBJ@ @READLINE_LIBS@
- sqlite3_DEPENDENCIES = @EXTRA_SHELL_OBJ@
-+
-+# Warning: Adding SQLITE_ENABLE_EXPLAIN_COMMENTS to sqlite3_CFLAGS doesn't
-+# actually have any effect if we link the sqlite3 command line tool with the
-+# libsqlite3.so shared library (which will contain a version of sqlite3.c
-+# compiled with the default AM_CFLAGS above). If SQLITE_ENABLE_EXPLAIN_COMMENTS
-+# debug is required, then sqlite3 must not be configured with
-+# --disable-static-shell
-+
- sqlite3_CFLAGS = $(AM_CFLAGS) -DSQLITE_ENABLE_EXPLAIN_COMMENTS
- 
- include_HEADERS = sqlite3.h sqlite3ext.h
-diff --git a/configure.ac b/configure.ac
-index 8e7fd69..ada559e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -130,7 +130,7 @@ AC_ARG_ENABLE(static-shell, [AS_HELP_STRING(
-   [statically link libsqlite3 into shell tool [default=yes]])], 
-   [], [enable_static_shell=yes])
- if test x"$enable_static_shell" == "xyes"; then
--  EXTRA_SHELL_OBJ=sqlite3.$OBJEXT
-+  EXTRA_SHELL_OBJ=sqlite3-sqlite3.$OBJEXT
- else
-   EXTRA_SHELL_OBJ=libsqlite3.la
- fi
--- 
-1.9.1
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3_3.11.0.bb b/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3_3.11.0.bb
deleted file mode 100644
index 992d20c..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3_3.11.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require sqlite3.inc
-
-LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=65f0a57ca6928710b418c094b3570bb0"
-
-SRC_URI = "http://www.sqlite.org/2016/sqlite-autoconf-${SQLITE_PV}.tar.gz \
-           file://fix-disable-static-shell.patch \
-"
-
-SRC_URI[md5sum] = "a6cdc3e0a6e5087d620037ae0c48720d"
-SRC_URI[sha256sum] = "508d4dcbcf7a7181e95c717a1dc4ae3c0880b3d593be0c4b40abb6c3a0e201fb"
diff --git a/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3_3.14.1.bb b/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3_3.14.1.bb
new file mode 100644
index 0000000..7c8fa40
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/sqlite/sqlite3_3.14.1.bb
@@ -0,0 +1,12 @@
+require sqlite3.inc
+
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=65f0a57ca6928710b418c094b3570bb0"
+
+SRC_URI = "\
+  http://www.sqlite.org/2016/sqlite-autoconf-${SQLITE_PV}.tar.gz \
+  file://0001-revert-ad601c7962-that-brings-2-increase-of-build-ti.patch \
+  "
+
+SRC_URI[md5sum] = "3634a90a3f49541462bcaed3474b2684"
+SRC_URI[sha256sum] = "bc7182476900017becb81565ecea7775d46ab747a97281aa610f4f45881c47a6"
diff --git a/import-layers/yocto-poky/meta/recipes-support/user-creation/xuser-account_0.1.bb b/import-layers/yocto-poky/meta/recipes-support/user-creation/xuser-account_0.1.bb
index 13ba677..81817d1 100644
--- a/import-layers/yocto-poky/meta/recipes-support/user-creation/xuser-account_0.1.bb
+++ b/import-layers/yocto-poky/meta/recipes-support/user-creation/xuser-account_0.1.bb
@@ -21,7 +21,6 @@
 FILES_${PN} = "${sysconfdir}/dbus-1/system.d/system-xuser.conf"
 
 USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system shutdown"
 USERADD_PARAM_${PN} = "--create-home \
                        --groups video,tty,audio,input,shutdown,disk \
                        --user-group xuser"
diff --git a/import-layers/yocto-poky/meta/recipes-support/vte/vte-0.28.2/cve-2012-2738.patch b/import-layers/yocto-poky/meta/recipes-support/vte/vte-0.28.2/cve-2012-2738.patch
deleted file mode 100644
index 9b99803..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/vte/vte-0.28.2/cve-2012-2738.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-Upstream-Status: Backport
-CVE: CVE-2012-2738
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From e524b0b3bd8fad844ffa73927c199545b892cdbd Mon Sep 17 00:00:00 2001
-From: Christian Persch <chpe@gnome.org>
-Date: Sat, 19 May 2012 19:36:09 +0200
-Subject: [PATCH 1/2] emulation: Limit integer arguments to 65535
-
-To guard against malicious sequences containing excessively big numbers,
-limit all parsed numbers to 16 bit range. Doing this here in the parsing
-routine is a catch-all guard; this doesn't preclude enforcing
-more stringent limits in the handlers themselves.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=676090
----
- src/table.c  | 2 +-
- src/vteseq.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/table.c b/src/table.c
-index 140e8c8..85cf631 100644
---- a/src/table.c
-+++ b/src/table.c
-@@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array,
- 		if (G_UNLIKELY (*array == NULL)) {
- 			*array = g_value_array_new(1);
- 		}
--		g_value_set_long(&value, total);
-+		g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT));
- 		g_value_array_append(*array, &value);
- 	} while (i++ < arginfo->length);
- 	g_value_unset(&value);
-diff --git a/src/vteseq.c b/src/vteseq.c
-index 7ef4c8c..10991db 100644
---- a/src/vteseq.c
-+++ b/src/vteseq.c
-@@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal,
-                               GValueArray *params,
-                               VteTerminalSequenceHandler handler)
- {
--        vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
-+        vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT);
- }
- 
- static void
--- 
-2.4.9 (Apple Git-60)
-
-
-From cf1ad453a8def873c49cf6d88162593402f32bb2 Mon Sep 17 00:00:00 2001
-From: Christian Persch <chpe@gnome.org>
-Date: Sat, 19 May 2012 20:04:12 +0200
-Subject: [PATCH 2/2] emulation: Limit repetitions
-
-Don't allow malicious sequences to cause excessive repetitions.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=676090
----
- src/vteseq.c | 25 ++++++++++++++++++-------
- 1 file changed, 18 insertions(+), 7 deletions(-)
-
-diff --git a/src/vteseq.c b/src/vteseq.c
-index 10991db..209522f 100644
---- a/src/vteseq.c
-+++ b/src/vteseq.c
-@@ -1392,7 +1392,7 @@ vte_sequence_handler_dc (VteTerminal *terminal, GValueArray *params)
- static void
- vte_sequence_handler_DC (VteTerminal *terminal, GValueArray *params)
- {
--	vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_dc);
-+	vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_dc);
- }
- 
- /* Delete a line at the current cursor position. */
-@@ -1785,7 +1785,7 @@ vte_sequence_handler_reverse_index (VteTerminal *terminal, GValueArray *params)
- static void
- vte_sequence_handler_RI (VteTerminal *terminal, GValueArray *params)
- {
--	vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_nd);
-+	vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_nd);
- }
- 
- /* Save cursor (position). */
-@@ -2777,8 +2777,7 @@ vte_sequence_handler_insert_lines (VteTerminal *terminal, GValueArray *params)
- {
- 	GValue *value;
- 	VteScreen *screen;
--	long param, end, row;
--	int i;
-+	long param, end, row, i, limit;
- 	screen = terminal->pvt->screen;
- 	/* The default is one. */
- 	param = 1;
-@@ -2796,7 +2795,13 @@ vte_sequence_handler_insert_lines (VteTerminal *terminal, GValueArray *params)
- 	} else {
- 		end = screen->insert_delta + terminal->row_count - 1;
- 	}
--	/* Insert the new lines at the cursor. */
-+
-+	/* Only allow to insert as many lines as there are between this row
-+         * and the end of the scrolling region. See bug #676090.
-+         */
-+        limit = end - row + 1;
-+        param = MIN (param, limit);
-+
- 	for (i = 0; i < param; i++) {
- 		/* Clear a line off the end of the region and add one to the
- 		 * top of the region. */
-@@ -2817,8 +2822,7 @@ vte_sequence_handler_delete_lines (VteTerminal *terminal, GValueArray *params)
- {
- 	GValue *value;
- 	VteScreen *screen;
--	long param, end, row;
--	int i;
-+	long param, end, row, i, limit;
- 
- 	screen = terminal->pvt->screen;
- 	/* The default is one. */
-@@ -2837,6 +2841,13 @@ vte_sequence_handler_delete_lines (VteTerminal *terminal, GValueArray *params)
- 	} else {
- 		end = screen->insert_delta + terminal->row_count - 1;
- 	}
-+
-+        /* Only allow to delete as many lines as there are between this row
-+         * and the end of the scrolling region. See bug #676090.
-+         */
-+        limit = end - row + 1;
-+        param = MIN (param, limit);
-+
- 	/* Clear them from below the current cursor. */
- 	for (i = 0; i < param; i++) {
- 		/* Insert a line at the end of the region and remove one from
--- 
-2.4.9 (Apple Git-60)
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/vte/vte-0.28.2/obsolete_automake_macros.patch b/import-layers/yocto-poky/meta/recipes-support/vte/vte-0.28.2/obsolete_automake_macros.patch
deleted file mode 100644
index 6763d37..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/vte/vte-0.28.2/obsolete_automake_macros.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=691545]
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurd vte-0.28.2/gnome-pty-helper/configure.in vte-0.28.2/gnome-pty-helper/configure.in
---- vte-0.28.2/gnome-pty-helper/configure.in	2010-07-15 20:08:44.000000000 +0300
-+++ vte-0.28.2/gnome-pty-helper/configure.in	2013-01-11 14:50:34.971027440 +0200
-@@ -8,7 +8,6 @@
- AC_ISC_POSIX
- AC_PROG_CC
- AC_STDC_HEADERS
--AM_PROG_CC_STDC
-
- if test -z "$enable_maintainer_mode"; then
-   enable_maintainer_mode=yes
diff --git a/import-layers/yocto-poky/meta/recipes-support/vte/vte.inc b/import-layers/yocto-poky/meta/recipes-support/vte/vte.inc
deleted file mode 100644
index 8565cc2..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/vte/vte.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Virtual terminal emulator GTK+ widget library"
-BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
-LICENSE = "LGPLv2.0"
-DEPENDS = " glib-2.0 gtk+ intltool-native ncurses"
-RDEPENDS_libvte = "vte-termcap"
-
-inherit gnome gtk-doc distro_features_check upstream-version-is-even gobject-introspection
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-
-EXTRA_OECONF = "--disable-python"
-
-PACKAGES =+ "libvte vte-termcap"
-FILES_libvte = "${libdir}/*.so.* ${libexecdir}/gnome-pty-helper"
-FILES_vte-termcap = "${datadir}/vte/termcap-0.0"
-
diff --git a/import-layers/yocto-poky/meta/recipes-support/vte/vte/0001-Add-m4-vapigen.m4.patch b/import-layers/yocto-poky/meta/recipes-support/vte/vte/0001-Add-m4-vapigen.m4.patch
new file mode 100644
index 0000000..1c5630e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/vte/vte/0001-Add-m4-vapigen.m4.patch
@@ -0,0 +1,119 @@
+From 08ca1c48b25c332b75bba2a6b5d757da006e955b Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Fri, 7 Oct 2016 16:27:57 +0300
+Subject: [PATCH] Add m4/vapigen.m4
+
+Building without vala will fail if we don't have a vapigen.m4.
+
+Upstream-Status: Pending
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ m4/vapigen.m4 | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 96 insertions(+)
+ create mode 100644 m4/vapigen.m4
+
+diff --git a/m4/vapigen.m4 b/m4/vapigen.m4
+new file mode 100644
+index 0000000..f2df12f
+--- /dev/null
++++ b/m4/vapigen.m4
+@@ -0,0 +1,96 @@
++dnl vapigen.m4
++dnl
++dnl Copyright 2012 Evan Nemerson
++dnl
++dnl This library is free software; you can redistribute it and/or
++dnl modify it under the terms of the GNU Lesser General Public
++dnl License as published by the Free Software Foundation; either
++dnl version 2.1 of the License, or (at your option) any later version.
++dnl
++dnl This library is distributed in the hope that it will be useful,
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++dnl Lesser General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU Lesser General Public
++dnl License along with this library; if not, write to the Free Software
++dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
++
++# VAPIGEN_CHECK([VERSION], [API_VERSION], [FOUND-INTROSPECTION], [DEFAULT])
++# --------------------------------------
++# Check vapigen existence and version
++#
++# See http://live.gnome.org/Vala/UpstreamGuide for detailed documentation
++AC_DEFUN([VAPIGEN_CHECK],
++[
++  AC_BEFORE([GOBJECT_INTROSPECTION_CHECK],[$0])
++  AC_BEFORE([GOBJECT_INTROSPECTION_REQUIRE],[$0])
++
++  AC_ARG_ENABLE([vala],
++    [AS_HELP_STRING([--enable-vala[=@<:@no/auto/yes@:>@]],[build Vala bindings @<:@default=]ifelse($4,,auto,$4)[@:>@])],,[
++      AS_IF([test "x$4" = "x"], [
++          enable_vala=auto
++        ], [
++          enable_vala=$4
++        ])
++    ])
++
++  AS_CASE([$enable_vala], [no], [enable_vala=no],
++      [yes], [
++        AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [
++            AC_MSG_ERROR([Vala bindings require GObject Introspection])
++          ])
++      ], [auto], [
++        AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [
++            enable_vala=no
++          ])
++      ], [
++        AC_MSG_ERROR([Invalid argument passed to --enable-vala, should be one of @<:@no/auto/yes@:>@])
++      ])
++
++  AS_IF([test "x$2" = "x"], [
++      vapigen_pkg_name=vapigen
++    ], [
++      vapigen_pkg_name=vapigen-$2
++    ])
++  AS_IF([test "x$1" = "x"], [
++      vapigen_pkg="$vapigen_pkg_name"
++    ], [
++      vapigen_pkg="$vapigen_pkg_name >= $1"
++    ])
++
++  PKG_PROG_PKG_CONFIG
++
++  PKG_CHECK_EXISTS([$vapigen_pkg], [
++      AS_IF([test "$enable_vala" = "auto"], [
++          enable_vala=yes
++        ])
++    ], [
++      AS_CASE([$enable_vala], [yes], [
++          AC_MSG_ERROR([$vapigen_pkg not found])
++        ], [auto], [
++          enable_vala=no
++        ])
++    ])
++
++  AC_MSG_CHECKING([for vala])
++
++  AS_CASE([$enable_vala],
++    [yes], [
++      VAPIGEN=`$PKG_CONFIG --variable=vapigen vapigen`
++      VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir vapigen`/vala/Makefile.vapigen
++      AS_IF([test "x$2" = "x"], [
++          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir vapigen`
++        ], [
++          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned vapigen`
++        ])
++    ])
++
++  AC_MSG_RESULT([$enable_vala])
++
++  AC_SUBST([VAPIGEN])
++  AC_SUBST([VAPIGEN_VAPIDIR])
++  AC_SUBST([VAPIGEN_MAKEFILE])
++
++  AM_CONDITIONAL(ENABLE_VAPIGEN, test "x$enable_vala" = "xyes")
++])
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/vte/vte/0001-Don-t-enable-stack-protection-by-default.patch b/import-layers/yocto-poky/meta/recipes-support/vte/vte/0001-Don-t-enable-stack-protection-by-default.patch
new file mode 100644
index 0000000..fcfc559
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/vte/vte/0001-Don-t-enable-stack-protection-by-default.patch
@@ -0,0 +1,29 @@
+From b0a579d83e355545b64742c997fe8b1d58bf4207 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Mon, 13 Jun 2016 11:05:00 +0300
+Subject: [PATCH] Don't enable stack-protection by default
+
+These are set by security_flags.inc.
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.ac | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 068d072..d580f84 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -138,8 +138,6 @@ m4_define([compiler_flags_common],[ dnl
+   -fno-common dnl
+   -fdiagnostics-show-option dnl
+   -fno-strict-aliasing dnl
+-  -fstack-protector dnl
+-  -fstack-protector-strong dnl
+   -fno-semantic-interposition dnl
+   -Wno-deprecated-declarations dnl
+ ])
+-- 
+2.1.4
+
diff --git a/import-layers/yocto-poky/meta/recipes-support/vte/vte_0.28.2.bb b/import-layers/yocto-poky/meta/recipes-support/vte/vte_0.28.2.bb
deleted file mode 100644
index 74087ca..0000000
--- a/import-layers/yocto-poky/meta/recipes-support/vte/vte_0.28.2.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require vte.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
-
-PR = "r6"
-
-SRC_URI += "file://obsolete_automake_macros.patch \
-            file://cve-2012-2738.patch \
-           "
-
-CFLAGS += "-D_GNU_SOURCE"
-
-SRC_URI[archive.md5sum] = "497f26e457308649e6ece32b3bb142ff"
-SRC_URI[archive.sha256sum] = "86cf0b81aa023fa93ed415653d51c96767f20b2d7334c893caba71e42654b0ae"
-
-RECIPE_NO_UPDATE_REASON = "matchbox-terminal needs to be ported over to new vte first"
diff --git a/import-layers/yocto-poky/meta/recipes-support/vte/vte_0.44.2.bb b/import-layers/yocto-poky/meta/recipes-support/vte/vte_0.44.2.bb
new file mode 100644
index 0000000..a0b671e
--- /dev/null
+++ b/import-layers/yocto-poky/meta/recipes-support/vte/vte_0.44.2.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Virtual terminal emulator GTK+ widget library"
+BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
+LICENSE = "LGPLv2.1+"
+DEPENDS = "glib-2.0 gtk+3 intltool-native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+inherit gnomebase gtk-doc distro_features_check upstream-version-is-even gobject-introspection
+
+# vapigen.m4 is required when vala is not present (but the one from vala should be used normally)
+SRC_URI += "file://0001-Don-t-enable-stack-protection-by-default.patch \
+            ${@bb.utils.contains('PACKAGECONFIG', 'vala', '', 'file://0001-Add-m4-vapigen.m4.patch', d) } \
+            "
+SRC_URI[archive.md5sum] = "eca8f8a9d9f9bb8e9d592d0acfeec015"
+SRC_URI[archive.sha256sum] = "a1ea594814bb136a3a9a6c7656b46240571f6a198825c1111007fe99194b0949"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+# Instead of "inherit vala" we do the relevant settings here so we can
+# set DEPENDS based on PACKAGECONFIG.
+
+# Our patched version of Vala looks in STAGING_DATADIR for .vapi files
+export STAGING_DATADIR
+# Upstream Vala >= 0.11 looks in XDG_DATA_DIRS for .vapi files
+export XDG_DATA_DIRS = "${STAGING_DATADIR}"
+
+# Package additional files
+FILES_${PN}-dev += "${datadir}/vala/vapi/*"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[vala] = "--enable-vala,--disable-vala,vala-native vala"
+PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+EXTRA_OECONF = "--disable-test-application"
+
+# libtool adds "-nostdlib" when g++ is used. This breaks PIE builds.
+# Use libtool-cross (which has a hack to prevent that) instead.
+EXTRA_OEMAKE_class-target = "LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool"
+
+PACKAGES =+ "libvte"
+FILES_libvte = "${libdir}/*.so.* ${libdir}/girepository-1.0/*"
diff --git a/import-layers/yocto-poky/meta/site/arm-common b/import-layers/yocto-poky/meta/site/arm-common
index a3c979f..198c98c 100644
--- a/import-layers/yocto-poky/meta/site/arm-common
+++ b/import-layers/yocto-poky/meta/site/arm-common
@@ -113,7 +113,6 @@
 rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
 rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
 rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
 rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
 rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
 rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
diff --git a/import-layers/yocto-poky/meta/site/common-linux b/import-layers/yocto-poky/meta/site/common-linux
index 0a752a4..2958716 100644
--- a/import-layers/yocto-poky/meta/site/common-linux
+++ b/import-layers/yocto-poky/meta/site/common-linux
@@ -61,3 +61,6 @@
 
 # apache
 ac_cv_o_nonblock_inherited=${ac_cv_o_nonblock_inherited=no}
+
+# rsync
+rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
diff --git a/import-layers/yocto-poky/meta/site/ix86-common b/import-layers/yocto-poky/meta/site/ix86-common
index 23b8e8b..f4cf0b8 100644
--- a/import-layers/yocto-poky/meta/site/ix86-common
+++ b/import-layers/yocto-poky/meta/site/ix86-common
@@ -154,7 +154,6 @@
 rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
 rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
 rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
 rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
 rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
 rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
diff --git a/import-layers/yocto-poky/meta/site/mips64el-linux b/import-layers/yocto-poky/meta/site/mips64el-linux
index 8b61eb0..680171d 100644
--- a/import-layers/yocto-poky/meta/site/mips64el-linux
+++ b/import-layers/yocto-poky/meta/site/mips64el-linux
@@ -35,6 +35,7 @@
 ac_cv_alignof_guint32=4
 ac_cv_alignof_guint64=8
 ac_cv_alignof_unsigned_long=8
+ac_cv_sizeof_ssize_t=8
 
 # libpcap
 ac_cv_linux_vers=${ac_cv_linux_vers=2}
diff --git a/import-layers/yocto-poky/meta/site/mipsisa32r6-linux b/import-layers/yocto-poky/meta/site/mipsisa32r6-linux
new file mode 100644
index 0000000..72a54f9
--- /dev/null
+++ b/import-layers/yocto-poky/meta/site/mipsisa32r6-linux
@@ -0,0 +1,79 @@
+# general
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=no}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present}
+
+# openssh
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=no}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+
+# glib
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# startup-notification
+lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ncftp
+wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
+wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
+
+# db
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+
+# rrdtool
+rd_cv_ieee_works=${rd_cv_ieee_works=yes}
+# ac_cv_path_PERL=${ac_cv_path_PERL=no}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+
+# intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+# lmbench
+ac_cv_uint=${ac_cv_unit=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# evolution-data-server
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
+
diff --git a/import-layers/yocto-poky/meta/site/mipsisa32r6el-linux b/import-layers/yocto-poky/meta/site/mipsisa32r6el-linux
new file mode 100644
index 0000000..696b1be
--- /dev/null
+++ b/import-layers/yocto-poky/meta/site/mipsisa32r6el-linux
@@ -0,0 +1,79 @@
+# general
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=no}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present}
+
+# openssh
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=no}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+
+# glib
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# startup-notification
+lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ncftp
+wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
+wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
+wi_cv_unix_domain_sockets=${wi_cv_unix_domain_sockets=yes}
+
+# db
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+
+# rrdtool
+rd_cv_ieee_works=${rd_cv_ieee_works=yes}
+# ac_cv_path_PERL=${ac_cv_path_PERL=no}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+
+# intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+#lmbench
+ac_cv_uint=${ac_cv_unit=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# evolution-data-server
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
diff --git a/import-layers/yocto-poky/meta/site/mipsisa64r6-linux b/import-layers/yocto-poky/meta/site/mipsisa64r6-linux
new file mode 100644
index 0000000..ed0fbbe
--- /dev/null
+++ b/import-layers/yocto-poky/meta/site/mipsisa64r6-linux
@@ -0,0 +1,83 @@
+# general
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=no}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present}
+
+# openssh
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=no}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+
+# glib
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=8
+ac_cv_alignof_unsigned_long=8
+ac_cv_sizeof_ssize_t=8
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# startup-notification
+lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ncftp
+wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
+wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
+
+# db
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+
+# rrdtool
+rd_cv_ieee_works=${rd_cv_ieee_works=yes}
+# ac_cv_path_PERL=${ac_cv_path_PERL=no}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+
+# intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+# lmbench
+ac_cv_uint=${ac_cv_unit=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# eds-dbus
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
+
diff --git a/import-layers/yocto-poky/meta/site/mipsisa64r6el-linux b/import-layers/yocto-poky/meta/site/mipsisa64r6el-linux
new file mode 100644
index 0000000..680171d
--- /dev/null
+++ b/import-layers/yocto-poky/meta/site/mipsisa64r6el-linux
@@ -0,0 +1,83 @@
+# general
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=no}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present}
+
+# openssh
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=no}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+
+# glib
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=8
+ac_cv_alignof_unsigned_long=8
+ac_cv_sizeof_ssize_t=8
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# startup-notification
+lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ncftp
+wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
+wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
+wi_cv_unix_domain_sockets=${wi_cv_unix_domain_sockets=yes}
+
+# db
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+
+# rrdtool
+rd_cv_ieee_works=${rd_cv_ieee_works=yes}
+# ac_cv_path_PERL=${ac_cv_path_PERL=no}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+
+# intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+#lmbench
+ac_cv_uint=${ac_cv_unit=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# eds-dbus
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
diff --git a/import-layers/yocto-poky/meta/site/nios2-linux b/import-layers/yocto-poky/meta/site/nios2-linux
index 95c09d3..2f4e570 100644
--- a/import-layers/yocto-poky/meta/site/nios2-linux
+++ b/import-layers/yocto-poky/meta/site/nios2-linux
@@ -171,7 +171,6 @@
 rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
 rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
 rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
 rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
 rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
 rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
diff --git a/import-layers/yocto-poky/meta/site/sh-common b/import-layers/yocto-poky/meta/site/sh-common
index 5cbf36a..fc4d6ad 100644
--- a/import-layers/yocto-poky/meta/site/sh-common
+++ b/import-layers/yocto-poky/meta/site/sh-common
@@ -216,7 +216,6 @@
 rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
 rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
 rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
-rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
 rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
 rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
 rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
diff --git a/import-layers/yocto-poky/scripts/bitbake-whatchanged b/import-layers/yocto-poky/scripts/bitbake-whatchanged
index af54d16..0207777 100755
--- a/import-layers/yocto-poky/scripts/bitbake-whatchanged
+++ b/import-layers/yocto-poky/scripts/bitbake-whatchanged
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 
@@ -17,7 +17,6 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
-from __future__ import print_function
 import os
 import sys
 import getopt
@@ -25,7 +24,7 @@
 import re
 import warnings
 import subprocess
-from optparse import OptionParser
+import argparse
 
 scripts_path = os.path.abspath(os.path.dirname(os.path.abspath(sys.argv[0])))
 lib_path = scripts_path + '/lib'
@@ -38,6 +37,8 @@
 if not bitbakepath:
     sys.stderr.write("Unable to find bitbake by searching parent directory of this script or PATH\n")
     sys.exit(1)
+scriptpath.add_oe_lib_path()
+import argparse_oe
 
 import bb.siggen
 import bb.process
@@ -118,7 +119,7 @@
     Print the newly added tasks
     """
     added = {}
-    for k in d_new.keys():
+    for k in list(d_new.keys()):
         if k not in d_old:
             # Add the new one to added dict, and remove it from
             # d_new, so the remaining ones are the changed ones
@@ -153,7 +154,7 @@
     """
     pvchanged = {}
     counter = 0
-    for k in d_new.keys():
+    for k in list(d_new.keys()):
         if d_new.get(k).get(vr) != d_old.get(k).get(vr):
             counter += 1
             pn, task = split_pntask(k)
@@ -219,9 +220,7 @@
     3) Use bb.siggen.compare_sigfiles to diff the old and new stamps
     """
 
-    parser = OptionParser(
-        version = "1.0",
-        usage = """%prog [options] [package ...]
+    parser = argparse_oe.ArgumentParser(usage = """%(prog)s [options] [package ...]
 print what will be done between the current and last builds, for example:
 
     $ bitbake core-image-sato
@@ -236,17 +235,9 @@
     The "nostamp" task is not included.
 """
 )
-    parser.add_option("-v", "--verbose", help = "print the verbose changes",
-               action = "store_true", dest = "verbose")
-
-    options, args = parser.parse_args(sys.argv)
-
-    verbose = options.verbose
-
-    if len(args) != 2:
-        parser.error("Incorrect number of arguments")
-    else:
-        recipe = args[1]
+    parser.add_argument("recipe", help="recipe to check")
+    parser.add_argument("-v", "--verbose", help = "print the verbose changes", action = "store_true")
+    args = parser.parse_args()
 
     # Get the STAMPS_DIR
     print("Figuring out the STAMPS_DIR ...")
@@ -256,7 +247,7 @@
     except:
         raise
     if not stampsdir:
-        print("ERROR: No STAMPS_DIR found for '%s'" % recipe, file=sys.stderr)
+        print("ERROR: No STAMPS_DIR found for '%s'" % args.recipe, file=sys.stderr)
         return 2
     stampsdir = stampsdir.rstrip("\n")
     if not os.path.isdir(stampsdir):
@@ -272,7 +263,7 @@
     try:
         # Generate the new stamps dir
         print("Generating the new stamps ... (need several minutes)")
-        cmdline = "STAMPS_DIR=%s bitbake -S none %s" % (new_stampsdir, recipe)
+        cmdline = "STAMPS_DIR=%s bitbake -S none %s" % (new_stampsdir, args.recipe)
         # FIXME
         # The "bitbake -S" may fail, not fatal error, the stamps will still
         # be generated, this might be a bug of "bitbake -S".
@@ -287,7 +278,7 @@
 
         # Remove the same one from both stamps.
         cnt_unchanged = 0
-        for k in new_dict.keys():
+        for k in list(new_dict.keys()):
             if k in old_dict:
                 cnt_unchanged += 1
                 del(new_dict[k])
@@ -310,17 +301,17 @@
         # PV (including PE) and PR changed
         # Let the bb.siggen handle them if verbose
         cnt_rv = {}
-        if not verbose:
+        if not args.verbose:
             for i in ('pv', 'pr'):
                cnt_rv[i] = print_vrchanged(new_recon, old_recon, i)
 
         # Dependencies changed (use bitbake-diffsigs)
-        cnt_dep = print_depchanged(new_recon, old_recon, verbose)
+        cnt_dep = print_depchanged(new_recon, old_recon, args.verbose)
 
         total_changed = cnt_added + (cnt_rv.get('pv') or 0) + (cnt_rv.get('pr') or 0) + cnt_dep
 
         print("\n=== Summary: (%s changed, %s unchanged)" % (total_changed, cnt_unchanged))
-        if verbose:
+        if args.verbose:
             print("Newly added: %s\nDependencies changed: %s\n" % \
                 (cnt_added, cnt_dep))
         else:
diff --git a/import-layers/yocto-poky/scripts/buildhistory-collect-srcrevs b/import-layers/yocto-poky/scripts/buildhistory-collect-srcrevs
index f3eb76b..8a03580 100755
--- a/import-layers/yocto-poky/scripts/buildhistory-collect-srcrevs
+++ b/import-layers/yocto-poky/scripts/buildhistory-collect-srcrevs
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Collects the recorded SRCREV values from buildhistory and reports on them
 #
@@ -103,7 +103,7 @@
                     if options.reportall or value != orig:
                         all_srcrevs[curdir].append((pn, name, srcrev))
 
-    for curdir, srcrevs in sorted(all_srcrevs.iteritems()):
+    for curdir, srcrevs in sorted(all_srcrevs.items()):
         if srcrevs:
             print('# %s' % curdir)
             for pn, name, srcrev in srcrevs:
diff --git a/import-layers/yocto-poky/scripts/buildhistory-diff b/import-layers/yocto-poky/scripts/buildhistory-diff
index dfebcdd..d8ca12d 100755
--- a/import-layers/yocto-poky/scripts/buildhistory-diff
+++ b/import-layers/yocto-poky/scripts/buildhistory-diff
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Report significant differences in the buildhistory repository since a specific revision
 #
@@ -14,7 +14,7 @@
 try:
     import git
 except ImportError:
-    print("Please install GitPython (python-git) 0.3.1 or later in order to use this script")
+    print("Please install GitPython (python3-git) 0.3.4 or later in order to use this script")
     sys.exit(1)
 
 def main():
diff --git a/import-layers/yocto-poky/scripts/buildstats-diff b/import-layers/yocto-poky/scripts/buildstats-diff
new file mode 100755
index 0000000..f918a6d
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/buildstats-diff
@@ -0,0 +1,564 @@
+#!/usr/bin/python3
+#
+# Script for comparing buildstats from two different builds
+#
+# Copyright (c) 2016, Intel Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+import argparse
+import glob
+import json
+import logging
+import math
+import os
+import re
+import sys
+from collections import namedtuple
+from datetime import datetime, timedelta, tzinfo
+from operator import attrgetter
+
+# Setup logging
+logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
+log = logging.getLogger()
+
+
+class ScriptError(Exception):
+    """Exception for internal error handling of this script"""
+    pass
+
+
+class TimeZone(tzinfo):
+    """Simple fixed-offset tzinfo"""
+    def __init__(self, seconds, name):
+        self._offset = timedelta(seconds=seconds)
+        self._name = name
+
+    def utcoffset(self, dt):
+        return self._offset
+
+    def tzname(self, dt):
+        return self._name
+
+    def dst(self, dt):
+        return None
+
+TIMEZONES = {'UTC': TimeZone(0, 'UTC'),
+             'EET': TimeZone(7200, 'EET'),
+             'EEST': TimeZone(10800, 'EEST')}
+
+taskdiff_fields = ('pkg', 'pkg_op', 'task', 'task_op', 'value1', 'value2',
+                   'absdiff', 'reldiff')
+TaskDiff = namedtuple('TaskDiff', ' '.join(taskdiff_fields))
+
+
+def to_datetime_obj(obj):
+    """Helper for getting timestamps in datetime format"""
+    if isinstance(obj, datetime):
+        return obj
+    else:
+        return datetime.utcfromtimestamp(obj).replace(tzinfo=TIMEZONES['UTC'])
+
+
+class BSTask(dict):
+    def __init__(self, *args, **kwargs):
+        self['start_time'] = None
+        self['elapsed_time'] = None
+        self['status'] = None
+        self['iostat'] = {}
+        self['rusage'] = {}
+        self['child_rusage'] = {}
+        super(BSTask, self).__init__(*args, **kwargs)
+
+    @property
+    def cputime(self):
+        """Sum of user and system time taken by the task"""
+        return self['rusage']['ru_stime'] + self['rusage']['ru_utime'] + \
+               self['child_rusage']['ru_stime'] + self['child_rusage']['ru_utime']
+
+    @property
+    def walltime(self):
+        """Elapsed wall clock time"""
+        return self['elapsed_time'].total_seconds()
+
+    @property
+    def read_bytes(self):
+        """Bytes read from the block layer"""
+        return self['iostat']['read_bytes']
+
+    @property
+    def write_bytes(self):
+        """Bytes written to the block layer"""
+        return self['iostat']['write_bytes']
+
+    @property
+    def read_ops(self):
+        """Number of read operations on the block layer"""
+        return self['rusage']['ru_inblock'] + self['child_rusage']['ru_inblock']
+
+    @property
+    def write_ops(self):
+        """Number of write operations on the block layer"""
+        return self['rusage']['ru_oublock'] + self['child_rusage']['ru_oublock']
+
+
+def read_buildstats_file(buildstat_file):
+    """Convert buildstat text file into dict/json"""
+    bs_task = BSTask()
+    log.debug("Reading task buildstats from %s", buildstat_file)
+    with open(buildstat_file) as fobj:
+        for line in fobj.readlines():
+            key, val = line.split(':', 1)
+            val = val.strip()
+            if key == 'Started':
+                start_time = to_datetime_obj(float(val))
+                bs_task['start_time'] = start_time
+            elif key == 'Ended':
+                end_time = to_datetime_obj(float(val))
+            elif key.startswith('IO '):
+                split = key.split()
+                bs_task['iostat'][split[1]] = int(val)
+            elif key.find('rusage') >= 0:
+                split = key.split()
+                ru_key = split[-1]
+                if ru_key in ('ru_stime', 'ru_utime'):
+                    val = float(val)
+                else:
+                    val = int(val)
+                ru_type = 'rusage' if split[0] == 'rusage' else \
+                                                  'child_rusage'
+                bs_task[ru_type][ru_key] = val
+            elif key == 'Status':
+                bs_task['status'] = val
+    bs_task['elapsed_time'] = end_time - start_time
+    return bs_task
+
+
+def read_buildstats_dir(bs_dir):
+    """Read buildstats directory"""
+    def split_nevr(nevr):
+        """Split name and version information from recipe "nevr" string"""
+        n_e_v, revision = nevr.rsplit('-', 1)
+        match = re.match(r'^(?P<name>\S+)-((?P<epoch>[0-9]{1,5})_)?(?P<version>[0-9]\S*)$',
+                         n_e_v)
+        if not match:
+            # If we're not able to parse a version starting with a number, just
+            # take the part after last dash
+            match = re.match(r'^(?P<name>\S+)-((?P<epoch>[0-9]{1,5})_)?(?P<version>[^-]+)$',
+                             n_e_v)
+        name = match.group('name')
+        version = match.group('version')
+        epoch = match.group('epoch')
+        return name, epoch, version, revision
+
+    if not os.path.isfile(os.path.join(bs_dir, 'build_stats')):
+        raise ScriptError("{} does not look like a buildstats directory".format(bs_dir))
+
+    log.debug("Reading buildstats directory %s", bs_dir)
+
+    buildstats = {}
+    subdirs = os.listdir(bs_dir)
+    for dirname in subdirs:
+        recipe_dir = os.path.join(bs_dir, dirname)
+        if not os.path.isdir(recipe_dir):
+            continue
+        name, epoch, version, revision = split_nevr(dirname)
+        recipe_bs = {'nevr': dirname,
+                     'name': name,
+                     'epoch': epoch,
+                     'version': version,
+                     'revision': revision,
+                     'tasks': {}}
+        for task in os.listdir(recipe_dir):
+            recipe_bs['tasks'][task] = [read_buildstats_file(
+                    os.path.join(recipe_dir, task))]
+        if name in buildstats:
+            raise ScriptError("Cannot handle multiple versions of the same "
+                              "package ({})".format(name))
+        buildstats[name] = recipe_bs
+
+    return buildstats
+
+
+def bs_append(dst, src):
+    """Append data from another buildstats"""
+    if set(dst.keys()) != set(src.keys()):
+        raise ScriptError("Refusing to join buildstats, set of packages is "
+                          "different")
+    for pkg, data in dst.items():
+        if data['nevr'] != src[pkg]['nevr']:
+            raise ScriptError("Refusing to join buildstats, package version "
+                              "differs: {} vs. {}".format(data['nevr'], src[pkg]['nevr']))
+        if set(data['tasks'].keys()) != set(src[pkg]['tasks'].keys()):
+            raise ScriptError("Refusing to join buildstats, set of tasks "
+                              "in {} differ".format(pkg))
+        for taskname, taskdata in data['tasks'].items():
+            taskdata.extend(src[pkg]['tasks'][taskname])
+
+
+def read_buildstats_json(path):
+    """Read buildstats from JSON file"""
+    buildstats = {}
+    with open(path) as fobj:
+        bs_json = json.load(fobj)
+    for recipe_bs in bs_json:
+        if recipe_bs['name'] in buildstats:
+            raise ScriptError("Cannot handle multiple versions of the same "
+                              "package ({})".format(recipe_bs['name']))
+
+        if recipe_bs['epoch'] is None:
+            recipe_bs['nevr'] = "{}-{}-{}".format(recipe_bs['name'], recipe_bs['version'], recipe_bs['revision'])
+        else:
+            recipe_bs['nevr'] = "{}-{}_{}-{}".format(recipe_bs['name'], recipe_bs['epoch'], recipe_bs['version'], recipe_bs['revision'])
+
+        for task, data in recipe_bs['tasks'].copy().items():
+            recipe_bs['tasks'][task] = [BSTask(data)]
+
+        buildstats[recipe_bs['name']] = recipe_bs
+
+    return buildstats
+
+
+def read_buildstats(path, multi):
+    """Read buildstats"""
+    if not os.path.exists(path):
+        raise ScriptError("No such file or directory: {}".format(path))
+
+    if os.path.isfile(path):
+        return read_buildstats_json(path)
+
+    if os.path.isfile(os.path.join(path, 'build_stats')):
+        return read_buildstats_dir(path)
+
+    # Handle a non-buildstat directory
+    subpaths = sorted(glob.glob(path + '/*'))
+    if len(subpaths) > 1:
+        if multi:
+            log.info("Averaging over {} buildstats from {}".format(
+                     len(subpaths), path))
+        else:
+            raise ScriptError("Multiple buildstats found in '{}'. Please give "
+                              "a single buildstat directory of use the --multi "
+                              "option".format(path))
+    bs = None
+    for subpath in subpaths:
+        if os.path.isfile(subpath):
+            tmpbs = read_buildstats_json(subpath)
+        else:
+            tmpbs = read_buildstats_dir(subpath)
+        if not bs:
+            bs = tmpbs
+        else:
+            log.debug("Joining buildstats")
+            bs_append(bs, tmpbs)
+
+    if not bs:
+        raise ScriptError("No buildstats found under {}".format(path))
+    return bs
+
+
+def print_ver_diff(bs1, bs2):
+    """Print package version differences"""
+    pkgs1 = set(bs1.keys())
+    pkgs2 = set(bs2.keys())
+    new_pkgs = pkgs2 - pkgs1
+    deleted_pkgs = pkgs1 - pkgs2
+
+    echanged = []
+    vchanged = []
+    rchanged = []
+    unchanged = []
+    common_pkgs = pkgs2.intersection(pkgs1)
+    if common_pkgs:
+        for pkg in common_pkgs:
+            if bs1[pkg]['epoch'] != bs2[pkg]['epoch']:
+                echanged.append(pkg)
+            elif bs1[pkg]['version'] != bs2[pkg]['version']:
+                vchanged.append(pkg)
+            elif bs1[pkg]['revision'] != bs2[pkg]['revision']:
+                rchanged.append(pkg)
+            else:
+                unchanged.append(pkg)
+
+    maxlen = max([len(pkg) for pkg in pkgs1.union(pkgs2)])
+    fmt_str = "  {:{maxlen}} ({})"
+#    if unchanged:
+#        print("\nUNCHANGED PACKAGES:")
+#        print("-------------------")
+#        maxlen = max([len(pkg) for pkg in unchanged])
+#        for pkg in sorted(unchanged):
+#            print(fmt_str.format(pkg, bs2[pkg]['nevr'], maxlen=maxlen))
+
+    if new_pkgs:
+        print("\nNEW PACKAGES:")
+        print("-------------")
+        for pkg in sorted(new_pkgs):
+            print(fmt_str.format(pkg, bs2[pkg]['nevr'], maxlen=maxlen))
+
+    if deleted_pkgs:
+        print("\nDELETED PACKAGES:")
+        print("-----------------")
+        for pkg in sorted(deleted_pkgs):
+            print(fmt_str.format(pkg, bs1[pkg]['nevr'], maxlen=maxlen))
+
+    fmt_str = "  {0:{maxlen}} {1:<20}    ({2})"
+    if rchanged:
+        print("\nREVISION CHANGED:")
+        print("-----------------")
+        for pkg in sorted(rchanged):
+            field1 = "{} -> {}".format(pkg, bs1[pkg]['revision'], bs2[pkg]['revision'])
+            field2 = "{} -> {}".format(bs1[pkg]['nevr'], bs2[pkg]['nevr'])
+            print(fmt_str.format(pkg, field1, field2, maxlen=maxlen))
+
+    if vchanged:
+        print("\nVERSION CHANGED:")
+        print("----------------")
+        for pkg in sorted(vchanged):
+            field1 = "{} -> {}".format(bs1[pkg]['version'], bs2[pkg]['version'])
+            field2 = "{} -> {}".format(bs1[pkg]['nevr'], bs2[pkg]['nevr'])
+            print(fmt_str.format(pkg, field1, field2, maxlen=maxlen))
+
+    if echanged:
+        print("\nEPOCH CHANGED:")
+        print("--------------")
+        for pkg in sorted(echanged):
+            field1 = "{} -> {}".format(pkg, bs1[pkg]['epoch'], bs2[pkg]['epoch'])
+            field2 = "{} -> {}".format(bs1[pkg]['nevr'], bs2[pkg]['nevr'])
+            print(fmt_str.format(pkg, field1, field2, maxlen=maxlen))
+
+
+def print_task_diff(bs1, bs2, val_type, min_val=0, min_absdiff=0, sort_by=('absdiff',)):
+    """Diff task execution times"""
+    def val_to_str(val, human_readable=False):
+        """Convert raw value to printable string"""
+        def hms_time(secs):
+            """Get time in human-readable HH:MM:SS format"""
+            h = int(secs / 3600)
+            m = int((secs % 3600) / 60)
+            s = secs % 60
+            if h == 0:
+                return "{:02d}:{:04.1f}".format(m, s)
+            else:
+                return "{:d}:{:02d}:{:04.1f}".format(h, m, s)
+
+        if 'time' in val_type:
+            if human_readable:
+                return hms_time(val)
+            else:
+                return "{:.1f}s".format(val)
+        elif 'bytes' in val_type and human_readable:
+                prefix = ['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi']
+                dec = int(math.log(val, 2) / 10)
+                prec = 1 if dec > 0 else 0
+                return "{:.{prec}f}{}B".format(val / (2 ** (10 * dec)),
+                                               prefix[dec], prec=prec)
+        elif 'ops' in val_type and human_readable:
+                prefix = ['', 'k', 'M', 'G', 'T', 'P']
+                dec = int(math.log(val, 1000))
+                prec = 1 if dec > 0 else 0
+                return "{:.{prec}f}{}ops".format(val / (1000 ** dec),
+                                                 prefix[dec], prec=prec)
+        return str(int(val))
+
+    def sum_vals(buildstats):
+        """Get cumulative sum of all tasks"""
+        total = 0.0
+        for recipe_data in buildstats.values():
+            for bs_task in recipe_data['tasks'].values():
+                total += sum([getattr(b, val_type) for b in bs_task]) / len(bs_task)
+        return total
+
+    tasks_diff = []
+
+    if min_val:
+        print("Ignoring tasks less than {} ({})".format(
+                val_to_str(min_val, True), val_to_str(min_val)))
+    if min_absdiff:
+        print("Ignoring differences less than {} ({})".format(
+                val_to_str(min_absdiff, True), val_to_str(min_absdiff)))
+
+    # Prepare the data
+    pkgs = set(bs1.keys()).union(set(bs2.keys()))
+    for pkg in pkgs:
+        tasks1 = bs1[pkg]['tasks'] if pkg in bs1 else {}
+        tasks2 = bs2[pkg]['tasks'] if pkg in bs2 else {}
+        if not tasks1:
+            pkg_op = '+ '
+        elif not tasks2:
+            pkg_op = '- '
+        else:
+            pkg_op = '  '
+
+        for task in set(tasks1.keys()).union(set(tasks2.keys())):
+            task_op = '  '
+            if task in tasks1:
+                # Average over all values
+                val1 = [getattr(b, val_type) for b in bs1[pkg]['tasks'][task]]
+                val1 = sum(val1) / len(val1)
+            else:
+                task_op = '+ '
+                val1 = 0
+            if task in tasks2:
+                # Average over all values
+                val2 = [getattr(b, val_type) for b in bs2[pkg]['tasks'][task]]
+                val2 = sum(val2) / len(val2)
+            else:
+                val2 = 0
+                task_op = '- '
+
+            if val1 == 0:
+                reldiff = float('inf')
+            else:
+                reldiff = 100 * (val2 - val1) / val1
+
+            if max(val1, val2) < min_val:
+                log.debug("Filtering out %s:%s (%s)", pkg, task,
+                          val_to_str(max(val1, val2)))
+                continue
+            if abs(val2 - val1) < min_absdiff:
+                log.debug("Filtering out %s:%s (difference of %s)", pkg, task,
+                          val_to_str(val2-val1))
+                continue
+            tasks_diff.append(TaskDiff(pkg, pkg_op, task, task_op, val1, val2,
+                                       val2-val1, reldiff))
+
+    # Sort our list
+    for field in reversed(sort_by):
+        if field.startswith('-'):
+            field = field[1:]
+            reverse = True
+        else:
+            reverse = False
+        tasks_diff = sorted(tasks_diff, key=attrgetter(field), reverse=reverse)
+
+    linedata = [('  ', 'PKG', '  ', 'TASK', 'ABSDIFF', 'RELDIFF',
+                val_type.upper() + '1', val_type.upper() + '2')]
+    field_lens = dict([('len_{}'.format(i), len(f)) for i, f in enumerate(linedata[0])])
+
+    # Prepare fields in string format and measure field lengths
+    for diff in tasks_diff:
+        task_prefix = diff.task_op if diff.pkg_op == '  ' else '  '
+        linedata.append((diff.pkg_op, diff.pkg, task_prefix, diff.task,
+                         val_to_str(diff.absdiff),
+                         '{:+.1f}%'.format(diff.reldiff),
+                         val_to_str(diff.value1),
+                         val_to_str(diff.value2)))
+        for i, field in enumerate(linedata[-1]):
+            key = 'len_{}'.format(i)
+            if len(field) > field_lens[key]:
+                field_lens[key] = len(field)
+
+    # Print data
+    print()
+    for fields in linedata:
+        print("{:{len_0}}{:{len_1}}  {:{len_2}}{:{len_3}}  {:>{len_4}}  {:>{len_5}}  {:>{len_6}} -> {:{len_7}}".format(
+                *fields, **field_lens))
+
+    # Print summary of the diffs
+    total1 = sum_vals(bs1)
+    total2 = sum_vals(bs2)
+    print("\nCumulative {}:".format(val_type))
+    print ("  {}    {:+.1f}%    {} ({}) -> {} ({})".format(
+                val_to_str(total2 - total1), 100 * (total2-total1) / total1,
+                val_to_str(total1, True), val_to_str(total1),
+                val_to_str(total2, True), val_to_str(total2)))
+
+
+def parse_args(argv):
+    """Parse cmdline arguments"""
+    description="""
+Script for comparing buildstats of two separate builds."""
+    parser = argparse.ArgumentParser(
+            formatter_class=argparse.ArgumentDefaultsHelpFormatter,
+            description=description)
+
+    min_val_defaults = {'cputime': 3.0,
+                        'read_bytes': 524288,
+                        'write_bytes': 524288,
+                        'read_ops': 500,
+                        'write_ops': 500,
+                        'walltime': 5}
+    min_absdiff_defaults = {'cputime': 1.0,
+                            'read_bytes': 131072,
+                            'write_bytes': 131072,
+                            'read_ops': 50,
+                            'write_ops': 50,
+                            'walltime': 2}
+
+    parser.add_argument('--debug', '-d', action='store_true',
+                        help="Verbose logging")
+    parser.add_argument('--ver-diff', action='store_true',
+                        help="Show package version differences and exit")
+    parser.add_argument('--diff-attr', default='cputime',
+                        choices=min_val_defaults.keys(),
+                        help="Buildstat attribute which to compare")
+    parser.add_argument('--min-val', default=min_val_defaults, type=float,
+                        help="Filter out tasks less than MIN_VAL. "
+                             "Default depends on --diff-attr.")
+    parser.add_argument('--min-absdiff', default=min_absdiff_defaults, type=float,
+                        help="Filter out tasks whose difference is less than "
+                             "MIN_ABSDIFF, Default depends on --diff-attr.")
+    parser.add_argument('--sort-by', default='absdiff',
+                        help="Comma-separated list of field sort order. "
+                             "Prepend the field name with '-' for reversed sort. "
+                             "Available fields are: {}".format(', '.join(taskdiff_fields)))
+    parser.add_argument('--multi', action='store_true',
+                        help="Read all buildstats from the given paths and "
+                             "average over them")
+    parser.add_argument('buildstats1', metavar='BUILDSTATS1', help="'Left' buildstat")
+    parser.add_argument('buildstats2', metavar='BUILDSTATS2', help="'Right' buildstat")
+
+    args = parser.parse_args(argv)
+
+    # We do not nedd/want to read all buildstats if we just want to look at the
+    # package versions
+    if args.ver_diff:
+        args.multi = False
+
+    # Handle defaults for the filter arguments
+    if args.min_val is min_val_defaults:
+        args.min_val = min_val_defaults[args.diff_attr]
+    if args.min_absdiff is min_absdiff_defaults:
+        args.min_absdiff = min_absdiff_defaults[args.diff_attr]
+
+    return args
+
+
+def main(argv=None):
+    """Script entry point"""
+    args = parse_args(argv)
+    if args.debug:
+        log.setLevel(logging.DEBUG)
+
+    # Validate sort fields
+    sort_by = []
+    for field in args.sort_by.split(','):
+        if field.lstrip('-') not in taskdiff_fields:
+            log.error("Invalid sort field '%s' (must be one of: %s)" %
+                      (field, ', '.join(taskdiff_fields)))
+            sys.exit(1)
+        sort_by.append(field)
+
+    try:
+        bs1 = read_buildstats(args.buildstats1, args.multi)
+        bs2 = read_buildstats(args.buildstats2, args.multi)
+
+        if args.ver_diff:
+            print_ver_diff(bs1, bs2)
+        else:
+            print_task_diff(bs1, bs2, args.diff_attr, args.min_val,
+                            args.min_absdiff, sort_by)
+    except ScriptError as err:
+        log.error(str(err))
+        return 1
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/import-layers/yocto-poky/scripts/cleanup-workdir b/import-layers/yocto-poky/scripts/cleanup-workdir
index 01ebd52..98769f6 100755
--- a/import-layers/yocto-poky/scripts/cleanup-workdir
+++ b/import-layers/yocto-poky/scripts/cleanup-workdir
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Copyright (c) 2012 Wind River Systems, Inc.
 #
@@ -27,7 +27,7 @@
 parser = None
 
 def err_quit(msg):
-    print msg
+    print(msg)
     parser.print_usage()
     sys.exit(1)
 
@@ -43,19 +43,19 @@
     pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
     output = pipe.communicate()[0]
     if pipe.returncode != 0:
-        print "Execute command '%s' failed." % cmd
+        print("Execute command '%s' failed." % cmd)
         sys.exit(1)
-    return output
+    return output.decode('utf-8')
 
 def get_cur_arch_dirs(workdir, arch_dirs):
     pattern = workdir + '/(.*?)/'
 
-    cmd = "bitbake -e | grep ^SDK_ARCH="
+    cmd = "bitbake -e | grep ^SDK_SYS="
     output = run_command(cmd)
-    sdk_arch = output.split('"')[1]
+    sdk_sys = output.split('"')[1]
 
     # select thest 5 packages to get the dirs of current arch
-    pkgs = ['hicolor-icon-theme', 'base-files', 'acl-native', 'binutils-crosssdk-' + sdk_arch, 'nativesdk-autoconf']
+    pkgs = ['hicolor-icon-theme', 'base-files', 'acl-native', 'binutils-crosssdk-' + sdk_sys, 'nativesdk-autoconf']
 
     for pkg in pkgs:
         cmd = "bitbake -e " + pkg + " | grep ^IMAGE_ROOTFS="
@@ -84,7 +84,7 @@
     if os.getcwd() != builddir:
         err_quit("Please run %s under: %s\n" % (os.path.basename(args[0]), builddir))
 
-    print 'Updating bitbake caches...'
+    print('Updating bitbake caches...')
     cmd = "bitbake -s"
     output = run_command(cmd)
 
@@ -129,13 +129,13 @@
 
     # won't fail just in case
     if not tmpdir or not image_rootfs:
-        print "Can't get TMPDIR or IMAGE_ROOTFS."
+        print("Can't get TMPDIR or IMAGE_ROOTFS.")
         return 1
 
     pattern = tmpdir + '/(.*?)/(.*?)/'
     m = re.match(pattern, image_rootfs)
     if not m:
-        print "Can't get WORKDIR."
+        print("Can't get WORKDIR.")
         return 1
 
     workdir = os.path.join(tmpdir, m.group(1))
@@ -178,13 +178,13 @@
         break
 
     for d in obsolete_dirs:
-        print "Deleting %s" % d
+        print("Deleting %s" % d)
         shutil.rmtree(d, True)
 
     if len(obsolete_dirs):
-        print '\nTotal %d items.' % len(obsolete_dirs)
+        print('\nTotal %d items.' % len(obsolete_dirs))
     else:
-        print '\nNo obsolete directory found under %s.' % workdir
+        print('\nNo obsolete directory found under %s.' % workdir)
 
     return 0
 
diff --git a/import-layers/yocto-poky/scripts/combo-layer b/import-layers/yocto-poky/scripts/combo-layer
index 9127041..b90bfc8 100755
--- a/import-layers/yocto-poky/scripts/combo-layer
+++ b/import-layers/yocto-poky/scripts/combo-layer
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -26,10 +26,14 @@
 import logging
 import subprocess
 import tempfile
-import ConfigParser
+import configparser
 import re
+import copy
+import pipes
+import shutil
 from collections import OrderedDict
 from string import Template
+from functools import reduce
 
 __version__ = "0.2.1"
 
@@ -73,7 +77,7 @@
                 else:
                     # Apply special type transformations for some properties.
                     # Type matches the RawConfigParser.get*() methods.
-                    types = {'signoff': 'boolean', 'update': 'boolean'}
+                    types = {'signoff': 'boolean', 'update': 'boolean', 'history': 'boolean'}
                     if name in types:
                         value = getattr(parser, 'get' + types[name])(section, name)
                     self.repos[repo][name] = value
@@ -84,7 +88,7 @@
                     self.commit_msg_template = value
 
         logger.debug("Loading config file %s" % self.conffile)
-        self.parser = ConfigParser.ConfigParser()
+        self.parser = configparser.ConfigParser()
         with open(self.conffile) as f:
             self.parser.readfp(f)
 
@@ -113,7 +117,7 @@
 
                 self.localconffile = lcfile
                 logger.debug("Loading local config file %s" % self.localconffile)
-                self.localparser = ConfigParser.ConfigParser()
+                self.localparser = configparser.ConfigParser()
                 with open(self.localconffile) as f:
                     self.localparser.readfp(f)
 
@@ -174,28 +178,28 @@
             logger.error("ERROR: patchutils package is missing, please install it (e.g. # apt-get install patchutils)")
             sys.exit(1)
 
-def runcmd(cmd,destdir=None,printerr=True,out=None):
+def runcmd(cmd,destdir=None,printerr=True,out=None,env=None):
     """
         execute command, raise CalledProcessError if fail
         return output if succeed
     """
     logger.debug("run cmd '%s' in %s" % (cmd, os.getcwd() if destdir is None else destdir))
     if not out:
-        out = os.tmpfile()
+        out = tempfile.TemporaryFile()
         err = out
     else:
-        err = os.tmpfile()
+        err = tempfile.TemporaryFile()
     try:
-        subprocess.check_call(cmd, stdout=out, stderr=err, cwd=destdir, shell=isinstance(cmd, str))
-    except subprocess.CalledProcessError,e:
+        subprocess.check_call(cmd, stdout=out, stderr=err, cwd=destdir, shell=isinstance(cmd, str), env=env or os.environ)
+    except subprocess.CalledProcessError as e:
         err.seek(0)
         if printerr:
             logger.error("%s" % err.read())
         raise e
 
     err.seek(0)
-    output = err.read()
-    logger.debug("output: %s" % output )
+    output = err.read().decode('utf-8')
+    logger.debug("output: %s" % output.replace(chr(0), '\\0'))
     return output
 
 def action_init(conf, args):
@@ -426,7 +430,7 @@
                     runcmd('git replace --graft %s %s' % (start, startrev))
             try:
                 runcmd(merge)
-            except Exception, error:
+            except Exception as error:
                 logger.info('''Merging component repository history failed, perhaps because of merge conflicts.
 It may be possible to commit anyway after resolving these conflicts.
 
@@ -478,32 +482,32 @@
         sys.exit(1)
 
 def check_patch(patchfile):
-    f = open(patchfile)
+    f = open(patchfile, 'rb')
     ln = f.readline()
     of = None
     in_patch = False
     beyond_msg = False
-    pre_buf = ''
+    pre_buf = b''
     while ln:
         if not beyond_msg:
-            if ln == '---\n':
+            if ln == b'---\n':
                 if not of:
                     break
                 in_patch = False
                 beyond_msg = True
-            elif ln.startswith('--- '):
+            elif ln.startswith(b'--- '):
                 # We have a diff in the commit message
                 in_patch = True
                 if not of:
                     print('WARNING: %s contains a diff in its commit message, indenting to avoid failure during apply' % patchfile)
-                    of = open(patchfile + '.tmp', 'w')
+                    of = open(patchfile + '.tmp', 'wb')
                     of.write(pre_buf)
-                    pre_buf = ''
-            elif in_patch and not ln[0] in '+-@ \n\r':
+                    pre_buf = b''
+            elif in_patch and not ln[0] in b'+-@ \n\r':
                 in_patch = False
         if of:
             if in_patch:
-                of.write(' ' + ln)
+                of.write(b' ' + ln)
             else:
                 of.write(ln)
         else:
@@ -516,7 +520,7 @@
 
 def drop_to_shell(workdir=None):
     if not sys.stdin.isatty():
-        print "Not a TTY so can't drop to shell for resolution, exiting."
+        print("Not a TTY so can't drop to shell for resolution, exiting.")
         return False
 
     shell = os.environ.get('SHELL', 'bash')
@@ -526,7 +530,7 @@
           '       exit 1  -- abort\n' % shell);
     ret = subprocess.call([shell], cwd=workdir)
     if ret != 0:
-        print "Aborting"
+        print("Aborting")
         return False
     else:
         return True
@@ -610,8 +614,12 @@
 def action_update(conf, args):
     """
         update the component repos
-        generate the patch list
-        apply the generated patches
+        either:
+           generate the patch list
+           apply the generated patches
+        or:
+           re-creates the entire component history and merges them
+           into the current branch with a merge commit
     """
     components = [arg.split(':')[0] for arg in args[1:]]
     revisions = {}
@@ -624,10 +632,22 @@
     # make sure combo repo is clean
     check_repo_clean(os.getcwd())
 
-    import uuid
-    patch_dir = "patch-%s" % uuid.uuid4()
-    if not os.path.exists(patch_dir):
-        os.mkdir(patch_dir)
+    # Check whether we keep the component histories. Must be
+    # set either via --history command line parameter or consistently
+    # in combo-layer.conf. Mixing modes is (currently, and probably
+    # permanently because it would be complicated) not supported.
+    if conf.history:
+        history = True
+    else:
+        history = None
+        for name in repos:
+            repo = conf.repos[name]
+            repo_history = repo.get('history', False)
+            if history is None:
+                history = repo_history
+            elif history != repo_history:
+                logger.error("'history' property is set inconsistently")
+                sys.exit(1)
 
     # Step 1: update the component repos
     if conf.nopull:
@@ -635,6 +655,17 @@
     else:
         action_pull(conf, ['arg0'] + components)
 
+    if history:
+        update_with_history(conf, components, revisions, repos)
+    else:
+        update_with_patches(conf, components, revisions, repos)
+
+def update_with_patches(conf, components, revisions, repos):
+    import uuid
+    patch_dir = "patch-%s" % uuid.uuid4()
+    if not os.path.exists(patch_dir):
+        os.mkdir(patch_dir)
+
     for name in repos:
         revision = revisions.get(name, None)
         repo = conf.repos[name]
@@ -711,6 +742,21 @@
     runcmd("rm -rf %s" % patch_dir)
 
     # Step 7: commit the updated config file if it's being tracked
+    commit_conf_file(conf, components)
+
+def conf_commit_msg(conf, components):
+    # create the "components" string
+    component_str = "all components"
+    if len(components) > 0:
+        # otherwise tell which components were actually changed
+        component_str = ", ".join(components)
+
+    # expand the template with known values
+    template = Template(conf.commit_msg_template)
+    msg = template.substitute(components = component_str)
+    return msg
+
+def commit_conf_file(conf, components, commit=True):
     relpath = os.path.relpath(conf.conffile)
     try:
         output = runcmd("git status --porcelain %s" % relpath, printerr=False)
@@ -718,23 +764,15 @@
         # Outside the repository
         output = None
     if output:
-        logger.info("Committing updated configuration file")
         if output.lstrip().startswith("M"):
-
-            # create the "components" string
-            component_str = "all components"
-            if len(components) > 0:
-                # otherwise tell which components were actually changed
-                component_str = ", ".join(components)
-
-            # expand the template with known values
-            template = Template(conf.commit_msg_template)
-            raw_msg = template.substitute(components = component_str)
-
-            # sanitize the string before using it in command line
-            msg = raw_msg.replace('"', '\\"')
-
-            runcmd('git commit -m "%s" %s' % (msg, relpath))
+            logger.info("Committing updated configuration file")
+            if commit:
+                msg = conf_commit_msg(conf, components)
+                runcmd('git commit -m'.split() + [msg, relpath])
+            else:
+                runcmd('git add %s' % relpath)
+            return True
+    return False
 
 def apply_patchlist(conf, repos):
     """
@@ -852,6 +890,418 @@
         else:
             logger.info(patch_filename)
 
+def update_with_history(conf, components, revisions, repos):
+    '''Update all components with full history.
+
+    Works by importing all commits reachable from a component's
+    current head revision.  If those commits are rooted in an already
+    imported commit, their content gets mixed with the content of the
+    combined repo of that commit (new or modified files overwritten,
+    removed files removed).
+
+    The last commit is an artificial merge commit that merges all the
+    updated components into the combined repository.
+
+    The HEAD ref only gets updated at the very end. All intermediate work
+    happens in a worktree which will get garbage collected by git eventually
+    after a failure.
+    '''
+    # Remember current HEAD and what we need to add to it.
+    head = runcmd("git rev-parse HEAD").strip()
+    additional_heads = {}
+
+    # Track the mapping between original commit and commit in the
+    # combined repo. We do not have to distinguish between components,
+    # because commit hashes are different anyway. Often we can
+    # skip find_revs() entirely (for example, when all new commits
+    # are derived from the last imported revision).
+    #
+    # Using "head" (typically the merge commit) instead of the actual
+    # commit for the component leads to a nicer history in the combined
+    # repo.
+    old2new_revs = {}
+    for name in repos:
+        repo = conf.repos[name]
+        revision = repo['last_revision']
+        if revision:
+            old2new_revs[revision] = head
+
+    def add_p(parents):
+        '''Insert -p before each entry.'''
+        parameters = []
+        for p in parents:
+            parameters.append('-p')
+            parameters.append(p)
+        return parameters
+
+    # Do all intermediate work with a separate work dir and index,
+    # chosen via env variables (can't use "git worktree", it is too
+    # new). This is useful (no changes to current work tree unless the
+    # update succeeds) and required (otherwise we end up temporarily
+    # removing the combo-layer hooks that we currently use when
+    # importing a new component).
+    #
+    # Not cleaned up after a failure at the moment.
+    wdir = os.path.join(os.getcwd(), ".git", "combo-layer")
+    windex = wdir + ".index"
+    if os.path.isdir(wdir):
+        shutil.rmtree(wdir)
+    os.mkdir(wdir)
+    wenv = copy.deepcopy(os.environ)
+    wenv["GIT_WORK_TREE"] = wdir
+    wenv["GIT_INDEX_FILE"] = windex
+    # This one turned out to be needed in practice.
+    wenv["GIT_OBJECT_DIRECTORY"] = os.path.join(os.getcwd(), ".git", "objects")
+    wargs = {"destdir": wdir, "env": wenv}
+
+    for name in repos:
+        revision = revisions.get(name, None)
+        repo = conf.repos[name]
+        ldir = repo['local_repo_dir']
+        dest_dir = repo['dest_dir']
+        branch = repo.get('branch', "master")
+        hook = repo.get('hook', None)
+        largs = {"destdir": ldir, "env": None}
+        file_include = repo.get('file_filter', '').split()
+        file_include.sort() # make sure that short entries like '.' come first.
+        file_exclude = repo.get('file_exclude', '').split()
+
+        def include_file(file):
+            if not file_include:
+                # No explicit filter set, include file.
+                return True
+            for filter in file_include:
+                if filter == '.':
+                    # Another special case: include current directory and thus all files.
+                    return True
+                if os.path.commonprefix((filter, file)) == filter:
+                    # Included in directory or direct file match.
+                    return True
+                # Check for wildcard match *with* allowing * to match /, i.e.
+                # src/*.c does match src/foobar/*.c. That's not how it is done elsewhere
+                # when passing the filtering to "git archive", but it is unclear what
+                # the intended semantic is (the comment on file_exclude that "append a * wildcard
+                # at the end" to match the full content of a directories implies that
+                # slashes are indeed not special), so here we simply do what's easy to
+                # implement in Python.
+                logger.debug('fnmatch(%s, %s)' % (file, filter))
+                if fnmatch.fnmatchcase(file, filter):
+                    return True
+            return False
+
+        def exclude_file(file):
+            for filter in file_exclude:
+                if fnmatch.fnmatchcase(file, filter):
+                    return True
+            return False
+
+        def file_filter(files):
+            '''Clean up file list so that only included files remain.'''
+            index = 0
+            while index < len(files):
+                file = files[index]
+                if not include_file(file) or exclude_file(file):
+                    del files[index]
+                else:
+                    index += 1
+
+
+        # Generate the revision list.
+        logger.info("Analyzing commits from %s..." % name)
+        top_revision = revision or branch
+        if not check_rev_branch(name, ldir, top_revision, branch):
+            sys.exit(1)
+
+        last_revision = repo['last_revision']
+        rev_list_args = "--full-history --sparse --topo-order --reverse"
+        if not last_revision:
+            logger.info("Warning: last_revision of component %s is not set, starting from the first commit" % name)
+            rev_list_args = rev_list_args + ' ' + top_revision
+        else:
+            if not check_rev_branch(name, ldir, last_revision, branch):
+                sys.exit(1)
+            rev_list_args = "%s %s..%s" % (rev_list_args, last_revision, top_revision)
+
+            # By definition, the current HEAD contains the latest imported
+            # commit of each component. We use that as initial mapping even
+            # though the commits do not match exactly because
+            # a) it always works (in contrast to find_revs, which relies on special
+            #    commit messages)
+            # b) it is faster than find_revs, which will only be called on demand
+            #    and can be skipped entirely in most cases
+            # c) last but not least, the combined history looks nicer when all
+            #    new commits are rooted in the same merge commit
+            old2new_revs[last_revision] = head
+
+        # We care about all commits (--full-history and --sparse) and
+        # we want reconstruct the topology and thus do not care
+        # about ordering by time (--topo-order). We ask for the ones
+        # we need to import first to be listed first (--reverse).
+        revs = runcmd("git rev-list %s" % rev_list_args, **largs).split()
+        logger.debug("To be imported: %s" % revs)
+        # Now 'revs' contains all revisions reachable from the top revision.
+        # All revisions derived from the 'last_revision' definitely are new,
+        # whereas the others may or may not have been imported before. For
+        # a linear history in the component, that second set will be empty.
+        # To distinguish between them, we also get the shorter list
+        # of revisions starting at the ancestor.
+        if last_revision:
+            ancestor_revs = runcmd("git rev-list --ancestry-path %s" % rev_list_args, **largs).split()
+        else:
+            ancestor_revs = []
+        logger.debug("Ancestors: %s" % ancestor_revs)
+
+        # Now import each revision.
+        logger.info("Importing commits from %s..." % name)
+        def import_rev(rev):
+            global scanned_revs
+
+            # If it is part of the new commits, we definitely need
+            # to import it. Otherwise we need to check, we might have
+            # imported it before. If it was imported and we merely
+            # fail to find it because commit messages did not track
+            # the mapping, then we end up importing it again. So
+            # combined repos using "updating with history" really should
+            # enable the "From ... rev:" commit header modifications.
+            if rev not in ancestor_revs and rev not in old2new_revs and not scanned_revs:
+                logger.debug("Revision %s triggers log analysis." % rev)
+                find_revs(old2new_revs, head)
+                scanned_revs = True
+            new_rev = old2new_revs.get(rev, None)
+            if new_rev:
+                return new_rev
+
+            # If the commit is not in the original list of revisions
+            # to be imported, then it must be a parent of one of those
+            # commits and it was skipped during earlier imports or not
+            # found. Importing such merge commits leads to very ugly
+            # history (long cascade of merge commits which all point
+            # to to older commits) when switching from "update via
+            # patches" to "update with history".
+            #
+            # We can avoid importing merge commits if all non-merge commits
+            # reachable from it were already imported. In that case we
+            # can root the new commits in the current head revision.
+            def is_imported(prev):
+                parents = runcmd("git show --no-patch --pretty=format:%P " + prev, **largs).split()
+                if len(parents) > 1:
+                    for p in parents:
+                        if not is_imported(p):
+                            logger.debug("Must import %s because %s is not imported." % (rev, p))
+                            return False
+                    return True
+                elif prev in old2new_revs:
+                    return True
+                else:
+                    logger.debug("Must import %s because %s is not imported." % (rev, prev))
+                    return False
+            if rev not in revs and is_imported(rev):
+                old2new_revs[rev] = head
+                return head
+
+            # Need to import rev. Collect some information about it.
+            logger.debug("Importing %s" % rev)
+            (parents, author_name, author_email, author_timestamp, body) = \
+                runcmd("git show --no-patch --pretty=format:%P%x00%an%x00%ae%x00%at%x00%B " + rev, **largs).split(chr(0))
+            parents = parents.split()
+            if parents:
+                # Arbitrarily pick the first parent as base. It may or may not have
+                # been imported before. For example, if the parent is a merge commit
+                # and previously the combined repository used patching as update
+                # method, then the actual merge commit parent never was imported.
+                # To cover this, We recursively import parents.
+                parent = parents[0]
+                new_parent = import_rev(parent)
+                # Clean index and working tree. TODO: can we combine this and the
+                # next into one command with less file IO?
+                # "git reset --hard" does not work, it changes HEAD of the parent
+                # repo, which we wanted to avoid. Probably need to keep
+                # track of the rev that corresponds to the index and use apply_commit().
+                runcmd("git rm -q --ignore-unmatch -rf .", **wargs)
+                # Update index and working tree to match the parent.
+                runcmd("git checkout -q -f %s ." % new_parent, **wargs)
+            else:
+                parent = None
+                # Clean index and working tree.
+                runcmd("git rm -q --ignore-unmatch -rf .", **wargs)
+
+            # Modify index and working tree such that it mirrors the commit.
+            apply_commit(parent, rev, largs, wargs, dest_dir, file_filter=file_filter)
+
+            # Now commit.
+            new_tree = runcmd("git write-tree", **wargs).strip()
+            env = copy.deepcopy(wenv)
+            env['GIT_AUTHOR_NAME'] = author_name
+            env['GIT_AUTHOR_EMAIL'] = author_email
+            env['GIT_AUTHOR_DATE'] = author_timestamp
+            if hook:
+                # Need to turn the verbatim commit message into something resembling a patch header
+                # for the hook.
+                with tempfile.NamedTemporaryFile(delete=False) as patch:
+                    patch.write('Subject: [PATCH] ')
+                    patch.write(body)
+                    patch.write('\n---\n')
+                    patch.close()
+                    runcmd([hook, patch.name, rev, name])
+                    with open(patch.name) as f:
+                        body = f.read()[len('Subject: [PATCH] '):][:-len('\n---\n')]
+
+            # We can skip non-merge commits that did not change any files. Those are typically
+            # the result of file filtering, although they could also have been introduced
+            # intentionally upstream, in which case we drop some information here.
+            if len(parents) == 1:
+                parent_rev = import_rev(parents[0])
+                old_tree = runcmd("git show -s --pretty=format:%T " + parent_rev, **wargs).strip()
+                commit = old_tree != new_tree
+                if not commit:
+                    new_rev = parent_rev
+            else:
+                commit = True
+            if commit:
+                new_rev = runcmd("git commit-tree".split() + add_p([import_rev(p) for p in parents]) +
+                                 ["-m", body, new_tree],
+                                 env=env).strip()
+            old2new_revs[rev] = new_rev
+
+            return new_rev
+
+        if revs:
+            for rev in revs:
+                import_rev(rev)
+            # Remember how to update our current head. New components get added,
+            # updated components get the delta between current head and the updated component
+            # applied.
+            additional_heads[old2new_revs[revs[-1]]] = head if repo['last_revision'] else None
+            repo['last_revision'] = revs[-1]
+
+    # Now construct the final merge commit. We create the tree by
+    # starting with the head and applying the changes from each
+    # components imported head revision.
+    if additional_heads:
+        runcmd("git reset --hard", **wargs)
+        for rev, base in additional_heads.items():
+            apply_commit(base, rev, wargs, wargs, None)
+
+        # Commit with all component branches as parents as well as the previous head.
+        logger.info("Writing final merge commit...")
+        msg = conf_commit_msg(conf, components)
+        new_tree = runcmd("git write-tree", **wargs).strip()
+        new_rev = runcmd("git commit-tree".split() +
+                         add_p([head] + list(additional_heads.keys())) +
+                         ["-m", msg, new_tree],
+                         **wargs).strip()
+        # And done! This is the first time we change the HEAD in the actual work tree.
+        runcmd("git reset --hard %s" % new_rev)
+
+        # Update and stage the (potentially modified)
+        # combo-layer.conf, but do not commit separately.
+        for name in repos:
+            repo = conf.repos[name]
+            rev = repo['last_revision']
+            conf.update(name, "last_revision", rev)
+        if commit_conf_file(conf, components, False):
+            # Must augment the previous commit.
+            runcmd("git commit --amend -C HEAD")
+
+
+scanned_revs = False
+def find_revs(old2new, head):
+    '''Construct mapping from original commit hash to commit hash in
+    combined repo by looking at the commit messages. Depends on the
+    "From ... rev: ..." convention.'''
+    logger.info("Analyzing log messages to find previously imported commits...")
+    num_known = len(old2new)
+    log = runcmd("git log --grep='From .* rev: [a-fA-F0-9][a-fA-F0-9]*' --pretty=format:%H%x00%B%x00 " + head).split(chr(0))
+    regex = re.compile(r'From .* rev: ([a-fA-F0-9]+)')
+    for new_rev, body in zip(*[iter(log)]* 2):
+        # Use the last one, in the unlikely case there are more than one.
+        rev = regex.findall(body)[-1]
+        if rev not in old2new:
+            old2new[rev] = new_rev.strip()
+    logger.info("Found %d additional commits, leading to: %s" % (len(old2new) - num_known, old2new))
+
+
+def apply_commit(parent, rev, largs, wargs, dest_dir, file_filter=None):
+    '''Compare revision against parent, remove files deleted in the
+    commit, re-write new or modified ones. Moves them into dest_dir.
+    Optionally filters files.
+    '''
+    if not dest_dir:
+        dest_dir = "."
+    # -r recurses into sub-directories, given is the full overview of
+    # what changed.  We do not care about copy/edits or renames, so we
+    # can disable those with --no-renames (but we still parse them,
+    # because it was not clear from git documentation whether C and M
+    # lines can still occur).
+    logger.debug("Applying changes between %s and %s in %s" % (parent, rev, largs["destdir"]))
+    delete = []
+    update = []
+    if parent:
+        # Apply delta.
+        changes = runcmd("git diff-tree --no-commit-id --no-renames --name-status -r --raw -z %s %s" % (parent, rev), **largs).split(chr(0))
+        for status, name in zip(*[iter(changes)]*2):
+            if status[0] in "ACMRT":
+                update.append(name)
+            elif status[0] in "D":
+                delete.append(name)
+            else:
+                logger.error("Unknown status %s of file %s in revision %s" % (status, name, rev))
+                sys.exit(1)
+    else:
+        # Copy all files.
+        update.extend(runcmd("git ls-tree -r --name-only -z %s" % rev, **largs).split(chr(0)))
+
+    # Include/exclude files as define in the component config.
+    # Both updated and deleted file lists get filtered, because it might happen
+    # that a file gets excluded, pulled from a different component, and then the
+    # excluded file gets deleted. In that case we must keep the copy.
+    if file_filter:
+        file_filter(update)
+        file_filter(delete)
+
+    # We export into a tar archive here and extract with tar because it is simple (no
+    # need to implement file and symlink writing ourselves) and gives us some degree
+    # of parallel IO. The downside is that we have to pass the list of files via
+    # command line parameters - hopefully there will never be too many at once.
+    if update:
+        target = os.path.join(wargs["destdir"], dest_dir)
+        if not os.path.isdir(target):
+            os.makedirs(target)
+        quoted_target = pipes.quote(target)
+        # os.sysconf('SC_ARG_MAX') is lying: running a command with
+        # string length 629343 already failed with "Argument list too
+        # long" although SC_ARG_MAX = 2097152. "man execve" explains
+        # the limitations, but those are pretty complicated. So here
+        # we just hard-code a fixed value which is more likely to work.
+        max_cmdsize = 64 * 1024
+        while update:
+            quoted_args = []
+            unquoted_args = []
+            cmdsize = 100 + len(quoted_target)
+            while update:
+                quoted_next = pipes.quote(update[0])
+                size_next = len(quoted_next) + len(dest_dir) + 1
+                logger.debug('cmdline length %d + %d < %d?' % (cmdsize, size_next, os.sysconf('SC_ARG_MAX')))
+                if cmdsize + size_next < max_cmdsize:
+                    quoted_args.append(quoted_next)
+                    unquoted_args.append(update.pop(0))
+                    cmdsize += size_next
+                else:
+                    logger.debug('Breaking the cmdline at length %d' % cmdsize)
+                    break
+            logger.debug('Final cmdline length %d / %d' % (cmdsize, os.sysconf('SC_ARG_MAX')))
+            cmd = "git archive %s %s | tar -C %s -xf -" % (rev, ' '.join(quoted_args), quoted_target)
+            logger.debug('First cmdline length %d' % len(cmd))
+            runcmd(cmd, **largs)
+            cmd = "git add -f".split() + [os.path.join(dest_dir, x) for x in unquoted_args]
+            logger.debug('Second cmdline length %d' % reduce(lambda x, y: x + len(y), cmd, 0))
+            runcmd(cmd, **wargs)
+    if delete:
+        for path in delete:
+            if dest_dir:
+                path = os.path.join(dest_dir, path)
+        runcmd("git rm -f --ignore-unmatch".split() + [os.path.join(dest_dir, x) for x in delete], **wargs)
+
 def action_error(conf, args):
     logger.info("invalid action %s" % args[0])
 
diff --git a/import-layers/yocto-poky/scripts/contrib/bbvars.py b/import-layers/yocto-poky/scripts/contrib/bbvars.py
index 0896d64..d8d0594 100755
--- a/import-layers/yocto-poky/scripts/contrib/bbvars.py
+++ b/import-layers/yocto-poky/scripts/contrib/bbvars.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,12 +24,12 @@
 import re
 
 def usage():
-    print 'Usage: %s -d FILENAME [-d FILENAME]* -m METADIR [-m MATADIR]*' % os.path.basename(sys.argv[0])
-    print '  -d FILENAME         documentation file to search'
-    print '  -h, --help          display this help and exit'
-    print '  -m METADIR          meta directory to search for recipes'
-    print '  -t FILENAME         documentation config file (for doc tags)'
-    print '  -T                  Only display variables with doc tags (requires -t)'
+    print('Usage: %s -d FILENAME [-d FILENAME]* -m METADIR [-m MATADIR]*' % os.path.basename(sys.argv[0]))
+    print('  -d FILENAME         documentation file to search')
+    print('  -h, --help          display this help and exit')
+    print('  -m METADIR          meta directory to search for recipes')
+    print('  -t FILENAME         documentation config file (for doc tags)')
+    print('  -T                  Only display variables with doc tags (requires -t)')
 
 def recipe_bbvars(recipe):
     ''' Return a unique set of every bbvar encountered in the recipe '''
@@ -37,9 +37,9 @@
     vset = set()
     try:
         r = open(recipe)
-    except IOError as (errno, strerror):
-        print 'WARNING: Failed to open recipe ', recipe
-        print strerror
+    except IOError as err:
+        print('WARNING: Failed to open recipe ', recipe)
+        print(err.args[1])
 
     for line in r:
         # Strip any comments from the line
@@ -59,8 +59,8 @@
     for root,dirs,files in os.walk(metadir):
         for name in files:
             if name.find(".bb") >= 0:
-                for key in recipe_bbvars(os.path.join(root,name)).iterkeys():
-                    if bbvars.has_key(key):
+                for key in recipe_bbvars(os.path.join(root,name)).keys():
+                    if key in bbvars:
                         bbvars[key] = bbvars[key] + 1
                     else:
                         bbvars[key] = 1
@@ -71,9 +71,9 @@
     for doc in docfiles:
         try:
             f = open(doc)
-        except IOError as (errno, strerror):
-            print 'WARNING: Failed to open doc ', doc
-            print strerror
+        except IOError as err:
+            print('WARNING: Failed to open doc ', doc)
+            print(err.args[1])
         for line in f:
             if prog.match(line):
                 return True
@@ -87,8 +87,8 @@
 
     try:
         f = open(docconf)
-    except IOError as (errno, strerror):
-        return strerror
+    except IOError as err:
+        return err.args[1]
 
     for line in f:
         m = prog.search(line)
@@ -109,8 +109,8 @@
     # Collect and validate input
     try:
         opts, args = getopt.getopt(sys.argv[1:], "d:hm:t:T", ["help"])
-    except getopt.GetoptError, err:
-        print '%s' % str(err)
+    except getopt.GetoptError as err:
+        print('%s' % str(err))
         usage()
         sys.exit(2)
 
@@ -122,13 +122,13 @@
             if os.path.isfile(a):
                 docfiles.append(a)
             else:
-                print 'ERROR: documentation file %s is not a regular file' % (a)
+                print('ERROR: documentation file %s is not a regular file' % a)
                 sys.exit(3)
         elif o == '-m':
             if os.path.isdir(a):
                 metadirs.append(a)
             else:
-                print 'ERROR: meta directory %s is not a directory' % (a)
+                print('ERROR: meta directory %s is not a directory' % a)
                 sys.exit(4)
         elif o == "-t":
             if os.path.isfile(a):
@@ -139,31 +139,31 @@
             assert False, "unhandled option"
 
     if len(docfiles) == 0:
-        print 'ERROR: no docfile specified'
+        print('ERROR: no docfile specified')
         usage()
         sys.exit(5)
 
     if len(metadirs) == 0:
-        print 'ERROR: no metadir specified'
+        print('ERROR: no metadir specified')
         usage()
         sys.exit(6)
 
     if onlydoctags and docconf == "":
-        print 'ERROR: no docconf specified'
+        print('ERROR: no docconf specified')
         usage()
         sys.exit(7)
 
     # Collect all the variable names from the recipes in the metadirs
     for m in metadirs:
-        for key,cnt in collect_bbvars(m).iteritems():
-            if bbvars.has_key(key):
+        for key,cnt in collect_bbvars(m).items():
+            if key in bbvars:
                 bbvars[key] = bbvars[key] + cnt
             else:
                 bbvars[key] = cnt
 
     # Check each var for documentation
     varlen = 0
-    for v in bbvars.iterkeys():
+    for v in bbvars.keys():
         if len(v) > varlen:
             varlen = len(v)
         if not bbvar_is_documented(v, docfiles):
@@ -172,14 +172,14 @@
     varlen = varlen + 1
 
     # Report all undocumented variables
-    print 'Found %d undocumented bb variables (out of %d):' % (len(undocumented), len(bbvars))
+    print('Found %d undocumented bb variables (out of %d):' % (len(undocumented), len(bbvars)))
     header = '%s%s%s' % (str("VARIABLE").ljust(varlen), str("COUNT").ljust(6), str("DOCTAG").ljust(7))
-    print header
-    print str("").ljust(len(header), '=')
+    print(header)
+    print(str("").ljust(len(header), '='))
     for v in undocumented:
         doctag = bbvar_doctag(v, docconf)
         if not onlydoctags or not doctag == "":
-            print '%s%s%s' % (v.ljust(varlen), str(bbvars[v]).ljust(6), doctag)
+            print('%s%s%s' % (v.ljust(varlen), str(bbvars[v]).ljust(6), doctag))
 
 
 if __name__ == "__main__":
diff --git a/import-layers/yocto-poky/scripts/contrib/build-perf-test-wrapper.sh b/import-layers/yocto-poky/scripts/contrib/build-perf-test-wrapper.sh
new file mode 100755
index 0000000..e03ea97
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/contrib/build-perf-test-wrapper.sh
@@ -0,0 +1,153 @@
+#!/bin/bash
+#
+# Build performance test script wrapper
+#
+# Copyright (c) 2016, Intel Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+#
+# This script is a simple wrapper around the actual build performance tester
+# script. This script initializes the build environment, runs
+# oe-build-perf-test and archives the results.
+
+script=`basename $0`
+archive_dir=~/perf-results/archives
+
+usage () {
+cat << EOF
+Usage: $script [-h] [-c COMMITISH] [-C GIT_REPO]
+
+Optional arguments:
+  -h                show this help and exit.
+  -a ARCHIVE_DIR    archive results tarball here, give an empty string to
+                    disable tarball archiving (default: $archive_dir)
+  -c COMMITISH      test (checkout) this commit
+  -C GIT_REPO       commit results into Git
+  -w WORK_DIR       work dir for this script
+                    (default: GIT_TOP_DIR/build-perf-test)
+EOF
+}
+
+
+# Parse command line arguments
+commitish=""
+while getopts "ha:c:C:w:" opt; do
+    case $opt in
+        h)  usage
+            exit 0
+            ;;
+        a)  archive_dir=`realpath "$OPTARG"`
+            ;;
+        c)  commitish=$OPTARG
+            ;;
+        C)  results_repo=`realpath "$OPTARG"`
+            commit_results=("--commit-results" "$results_repo")
+            ;;
+        w)  base_dir=`realpath "$OPTARG"`
+            ;;
+        *)  usage
+            exit 1
+            ;;
+    esac
+done
+
+# Check positional args
+shift "$((OPTIND - 1))"
+if [ $# -ne 0 ]; then
+    echo "ERROR: No positional args are accepted."
+    usage
+    exit 1
+fi
+
+echo "Running on `uname -n`"
+if ! git_topdir=$(git rev-parse --show-toplevel); then
+        echo "The current working dir doesn't seem to be a git clone. Please cd there before running `basename $0`"
+        exit 1
+fi
+
+cd "$git_topdir"
+
+if [ -n "$commitish" ]; then
+    # Checkout correct revision
+    echo "Checking out $commitish"
+    git fetch &> /dev/null
+    git checkout HEAD^0 &> /dev/null
+    git branch -D $commitish &> /dev/null
+    if ! git checkout -f $commitish &> /dev/null; then
+        echo "Git checkout failed"
+        exit 1
+    fi
+fi
+
+# Setup build environment
+if [ -z "$base_dir" ]; then
+    base_dir="$git_topdir/build-perf-test"
+fi
+echo "Using working dir $base_dir"
+
+timestamp=`date "+%Y%m%d%H%M%S"`
+git_rev=$(git rev-parse --short HEAD)  || exit 1
+build_dir="$base_dir/build-$git_rev-$timestamp"
+results_dir="$base_dir/results-$git_rev-$timestamp"
+globalres_log="$base_dir/globalres.log"
+machine="qemux86"
+
+mkdir -p "$base_dir"
+source ./oe-init-build-env $build_dir >/dev/null || exit 1
+
+# Additional config
+auto_conf="$build_dir/conf/auto.conf"
+echo "MACHINE = \"$machine\"" > "$auto_conf"
+echo 'BB_NUMBER_THREADS = "8"' >> "$auto_conf"
+echo 'PARALLEL_MAKE = "-j 8"' >> "$auto_conf"
+echo "DL_DIR = \"$base_dir/downloads\"" >> "$auto_conf"
+# Disabling network sanity check slightly reduces the variance of timing results
+echo 'CONNECTIVITY_CHECK_URIS = ""' >> "$auto_conf"
+# Possibility to define extra settings
+if [ -f "$base_dir/auto.conf.extra" ]; then
+    cat "$base_dir/auto.conf.extra" >> "$auto_conf"
+fi
+
+# Run actual test script
+oe-build-perf-test --out-dir "$results_dir" \
+                   --globalres-file "$globalres_log" \
+                   --lock-file "$base_dir/oe-build-perf.lock" \
+                   "${commit_results[@]}" \
+                   --commit-results-branch "{tester_host}/{git_branch}/$machine" \
+                   --commit-results-tag "{tester_host}/{git_branch}/$machine/{git_commit_count}-g{git_commit}/{tag_num}"
+
+case $? in
+    1)  echo "ERROR: oe-build-perf-test script failed!"
+        exit 1
+        ;;
+    2)  echo "NOTE: some tests failed!"
+        ;;
+esac
+
+echo -ne "\n\n-----------------\n"
+echo "Global results file:"
+echo -ne "\n"
+
+cat "$globalres_log"
+
+if [ -n "$archive_dir" ]; then
+    echo -ne "\n\n-----------------\n"
+    echo "Archiving results in $archive_dir"
+    mkdir -p "$archive_dir"
+    results_basename=`basename "$results_dir"`
+    results_dirname=`dirname "$results_dir"`
+    tar -czf "$archive_dir/`uname -n`-${results_basename}.tar.gz" -C "$results_dirname" "$results_basename"
+fi
+
+rm -rf "$build_dir"
+rm -rf "$results_dir"
+
+echo "DONE"
diff --git a/import-layers/yocto-poky/scripts/contrib/ddimage b/import-layers/yocto-poky/scripts/contrib/ddimage
index a503f11..ab92995 100755
--- a/import-layers/yocto-poky/scripts/contrib/ddimage
+++ b/import-layers/yocto-poky/scripts/contrib/ddimage
@@ -100,5 +100,9 @@
 fi
 
 echo "Writing image..."
-dd if="$IMAGE" of="$DEVICE" bs="$BLOCKSIZE"
+if which pv >/dev/null 2>&1; then
+	pv "$IMAGE" | dd of="$DEVICE" bs="$BLOCKSIZE"
+else
+	dd if="$IMAGE" of="$DEVICE" bs="$BLOCKSIZE"
+fi
 sync
diff --git a/import-layers/yocto-poky/scripts/contrib/devtool-stress.py b/import-layers/yocto-poky/scripts/contrib/devtool-stress.py
index 8cf92ca..d555c51 100755
--- a/import-layers/yocto-poky/scripts/contrib/devtool-stress.py
+++ b/import-layers/yocto-poky/scripts/contrib/devtool-stress.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # devtool stress tester
 #
@@ -43,15 +43,15 @@
     tinfoil = bb.tinfoil.Tinfoil()
     tinfoil.prepare(False)
 
-    pkg_pn = tinfoil.cooker.recipecache.pkg_pn
-    (latest_versions, preferred_versions) = bb.providers.findProviders(tinfoil.config_data, tinfoil.cooker.recipecache, pkg_pn)
+    pkg_pn = tinfoil.cooker.recipecaches[''].pkg_pn
+    (latest_versions, preferred_versions) = bb.providers.findProviders(tinfoil.config_data, tinfoil.cooker.recipecaches[''], pkg_pn)
 
     skip_classes = args.skip_classes.split(',')
 
     recipelist = []
     for pn in sorted(pkg_pn):
         pref = preferred_versions[pn]
-        inherits = [os.path.splitext(os.path.basename(f))[0] for f in tinfoil.cooker.recipecache.inherits[pref[1]]]
+        inherits = [os.path.splitext(os.path.basename(f))[0] for f in tinfoil.cooker.recipecaches[''].inherits[pref[1]]]
         for cls in skip_classes:
             if cls in inherits:
                 break
@@ -121,14 +121,18 @@
             sys.stdout.write('Testing %s ' % (pn + ' ').ljust(40, '.'))
             sys.stdout.flush()
             failed = False
+            skipped = None
 
             srctree = os.path.join(tmpdir, pn)
             try:
                 bb.process.run('devtool extract %s %s' % (pn, srctree))
-            except bb.process.CmdError as exc:
-                failed = True
-                with open('stress_%s_extract.log' % pn, 'w') as f:
-                    f.write(str(exc))
+            except bb.process.ExecutionError as exc:
+                if exc.exitcode == 4:
+                    skipped = 'incompatible'
+                else:
+                    failed = True
+                    with open('stress_%s_extract.log' % pn, 'w') as f:
+                        f.write(str(exc))
 
             if os.path.exists(srctree):
                 shutil.rmtree(srctree)
@@ -136,6 +140,8 @@
             if failed:
                 print('failed')
                 failures += 1
+            elif skipped:
+                print('skipped (%s)' % skipped)
             else:
                 print('ok')
     except KeyboardInterrupt:
@@ -162,29 +168,34 @@
             sys.stdout.flush()
             failed = False
             reset = True
+            skipped = None
 
             srctree = os.path.join(tmpdir, pn)
             try:
                 bb.process.run('devtool modify -x %s %s' % (pn, srctree))
-            except bb.process.CmdError as exc:
-                with open('stress_%s_modify.log' % pn, 'w') as f:
-                    f.write(str(exc))
-                failed = 'modify'
-                reset = False
-
-            if not failed:
-                try:
-                    bb.process.run('bitbake -c install %s' % pn)
-                except bb.process.CmdError as exc:
-                    with open('stress_%s_install.log' % pn, 'w') as f:
+            except bb.process.ExecutionError as exc:
+                if exc.exitcode == 4:
+                    skipped = 'incompatible'
+                else:
+                    with open('stress_%s_modify.log' % pn, 'w') as f:
                         f.write(str(exc))
-                    failed = 'build'
-            if reset:
-                try:
-                    bb.process.run('devtool reset %s' % pn)
-                except bb.process.CmdError as exc:
-                    print('devtool reset failed: %s' % str(exc))
-                    break
+                    failed = 'modify'
+                    reset = False
+
+            if not skipped:
+                if not failed:
+                    try:
+                        bb.process.run('bitbake -c install %s' % pn)
+                    except bb.process.CmdError as exc:
+                        with open('stress_%s_install.log' % pn, 'w') as f:
+                            f.write(str(exc))
+                        failed = 'build'
+                if reset:
+                    try:
+                        bb.process.run('devtool reset %s' % pn)
+                    except bb.process.CmdError as exc:
+                        print('devtool reset failed: %s' % str(exc))
+                        break
 
             if os.path.exists(srctree):
                 shutil.rmtree(srctree)
@@ -192,6 +203,8 @@
             if failed:
                 print('failed (%s)' % failed)
                 failures += 1
+            elif skipped:
+                print('skipped (%s)' % skipped)
             else:
                 print('ok')
     except KeyboardInterrupt:
@@ -210,9 +223,10 @@
     parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true')
     parser.add_argument('-r', '--resume-from', help='Resume from specified recipe', metavar='PN')
     parser.add_argument('-o', '--only', help='Only test specified recipes (comma-separated without spaces, wildcards allowed)', metavar='PNLIST')
-    parser.add_argument('-s', '--skip', help='Skip specified recipes (comma-separated without spaces, wildcards allowed)', metavar='PNLIST')
+    parser.add_argument('-s', '--skip', help='Skip specified recipes (comma-separated without spaces, wildcards allowed)', metavar='PNLIST', default='gcc-source-*,kernel-devsrc,package-index,perf,meta-world-pkgdata,glibc-locale,glibc-mtrace,glibc-scripts,os-release')
     parser.add_argument('-c', '--skip-classes', help='Skip recipes inheriting specified classes (comma-separated) - default %(default)s', metavar='CLASSLIST', default='native,nativesdk,cross,cross-canadian,image,populate_sdk,meta,packagegroup')
     subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
+    subparsers.required = True
 
     parser_modify = subparsers.add_parser('modify',
                                           help='Run "devtool modify" followed by a build with bitbake on matching recipes',
diff --git a/import-layers/yocto-poky/scripts/contrib/graph-tool b/import-layers/yocto-poky/scripts/contrib/graph-tool
index 6dc7d33..1df5b8c 100755
--- a/import-layers/yocto-poky/scripts/contrib/graph-tool
+++ b/import-layers/yocto-poky/scripts/contrib/graph-tool
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Simple graph query utility
 # useful for getting answers from .dot files produced by bitbake -g
@@ -30,8 +30,7 @@
         print('ERROR: Please install the networkx python module')
         sys.exit(1)
 
-    graph = networkx.DiGraph(networkx.read_dot(dotfile))
-
+    graph = networkx.DiGraph(networkx.nx_pydot.read_dot(dotfile))
     def node_missing(node):
         import difflib
         close_matches = difflib.get_close_matches(node, graph.nodes(), cutoff=0.7)
@@ -53,11 +52,11 @@
 
     fromnode = args[1]
     tonode = args[2]
-    paths = list(get_path_networkx(args[0], fromnode, tonode))
-    if paths:
-        for path in paths:
-            print ' -> '.join(path)
-    else:
+
+    path = None
+    for path in get_path_networkx(args[0], fromnode, tonode):
+        print(" -> ".join(map(str, path)))
+    if not path:
         print("ERROR: no path from %s to %s in graph" % (fromnode, tonode))
         sys.exit(1)
 
diff --git a/import-layers/yocto-poky/scripts/contrib/list-packageconfig-flags.py b/import-layers/yocto-poky/scripts/contrib/list-packageconfig-flags.py
index 2f3b8b0..389fb97 100755
--- a/import-layers/yocto-poky/scripts/contrib/list-packageconfig-flags.py
+++ b/import-layers/yocto-poky/scripts/contrib/list-packageconfig-flags.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -37,7 +37,6 @@
     sys.stderr.write("Unable to find bitbake by searching parent directory of this script or PATH\n")
     sys.exit(1)
 
-import bb.cache
 import bb.cooker
 import bb.providers
 import bb.tinfoil
@@ -45,7 +44,7 @@
 def get_fnlist(bbhandler, pkg_pn, preferred):
     ''' Get all recipe file names '''
     if preferred:
-        (latest_versions, preferred_versions) = bb.providers.findProviders(bbhandler.config_data, bbhandler.cooker.recipecache, pkg_pn)
+        (latest_versions, preferred_versions) = bb.providers.findProviders(bbhandler.config_data, bbhandler.cooker.recipecaches[''], pkg_pn)
 
     fn_list = []
     for pn in sorted(pkg_pn):
@@ -58,11 +57,11 @@
 
 def get_recipesdata(bbhandler, preferred):
     ''' Get data of all available recipes which have PACKAGECONFIG flags '''
-    pkg_pn = bbhandler.cooker.recipecache.pkg_pn
+    pkg_pn = bbhandler.cooker.recipecaches[''].pkg_pn
 
     data_dict = {}
     for fn in get_fnlist(bbhandler, pkg_pn, preferred):
-        data = bb.cache.Cache.loadDataFull(fn, bbhandler.cooker.collection.get_file_appends(fn), bbhandler.config_data)
+        data = bbhandler.parse_recipe_file(fn)
         flags = data.getVarFlags("PACKAGECONFIG")
         flags.pop('doc', None)
         if flags:
@@ -86,7 +85,7 @@
     ''' Collect available PACKAGECONFIG flags and all affected pkgs '''
     # flag_dict = {'flag': ['pkg1', 'pkg2',...]}
     flag_dict = {}
-    for pkgname, flaglist in pkg_dict.iteritems():
+    for pkgname, flaglist in pkg_dict.items():
         for flag in flaglist:
             if flag in flag_dict:
                 flag_dict[flag].append(pkgname)
@@ -104,8 +103,8 @@
     pkgname_len += 1
 
     header = '%-*s%s' % (pkgname_len, str("RECIPE NAME"), str("PACKAGECONFIG FLAGS"))
-    print header
-    print str("").ljust(len(header), '=')
+    print(header)
+    print(str("").ljust(len(header), '='))
     for pkgname in sorted(pkg_dict):
         print('%-*s%s' % (pkgname_len, pkgname, ' '.join(pkg_dict[pkgname])))
 
@@ -115,28 +114,28 @@
     flag_len = len("PACKAGECONFIG FLAG") + 5
 
     header = '%-*s%s' % (flag_len, str("PACKAGECONFIG FLAG"), str("RECIPE NAMES"))
-    print header
-    print str("").ljust(len(header), '=')
+    print(header)
+    print(str("").ljust(len(header), '='))
 
     for flag in sorted(flag_dict):
         print('%-*s%s' % (flag_len, flag, '  '.join(sorted(flag_dict[flag]))))
 
 def display_all(data_dict):
     ''' Display all pkgs and PACKAGECONFIG information '''
-    print str("").ljust(50, '=')
+    print(str("").ljust(50, '='))
     for fn in data_dict:
         print('%s' % data_dict[fn].getVar("P", True))
-        print fn
+        print(fn)
         packageconfig = data_dict[fn].getVar("PACKAGECONFIG", True) or ''
         if packageconfig.strip() == '':
             packageconfig = 'None'
         print('PACKAGECONFIG %s' % packageconfig)
 
-        for flag,flag_val in data_dict[fn].getVarFlags("PACKAGECONFIG").iteritems():
+        for flag,flag_val in data_dict[fn].getVarFlags("PACKAGECONFIG").items():
             if flag == "doc":
                 continue
             print('PACKAGECONFIG[%s] %s' % (flag, flag_val))
-        print ''
+        print('')
 
 def main():
     pkg_dict = {}
@@ -160,20 +159,20 @@
 
     options, args = parser.parse_args(sys.argv)
 
-    bbhandler = bb.tinfoil.Tinfoil()
-    bbhandler.prepare()
-    print("Gathering recipe data...")
-    data_dict = get_recipesdata(bbhandler, options.preferred)
+    with bb.tinfoil.Tinfoil() as bbhandler:
+        bbhandler.prepare()
+        print("Gathering recipe data...")
+        data_dict = get_recipesdata(bbhandler, options.preferred)
 
-    if options.listtype == 'flags':
-        pkg_dict = collect_pkgs(data_dict)
-        flag_dict = collect_flags(pkg_dict)
-        display_flags(flag_dict)
-    elif options.listtype == 'recipes':
-        pkg_dict = collect_pkgs(data_dict)
-        display_pkgs(pkg_dict)
-    elif options.listtype == 'all':
-        display_all(data_dict)
+        if options.listtype == 'flags':
+            pkg_dict = collect_pkgs(data_dict)
+            flag_dict = collect_flags(pkg_dict)
+            display_flags(flag_dict)
+        elif options.listtype == 'recipes':
+            pkg_dict = collect_pkgs(data_dict)
+            display_pkgs(pkg_dict)
+        elif options.listtype == 'all':
+            display_all(data_dict)
 
 if __name__ == "__main__":
     main()
diff --git a/import-layers/yocto-poky/scripts/contrib/mkefidisk.sh b/import-layers/yocto-poky/scripts/contrib/mkefidisk.sh
index 333284f..d8db3c0 100755
--- a/import-layers/yocto-poky/scripts/contrib/mkefidisk.sh
+++ b/import-layers/yocto-poky/scripts/contrib/mkefidisk.sh
@@ -369,8 +369,8 @@
 # Installing to $DEVICE
 #
 debug "Mounting images and device in preparation for installation"
-mount -o loop $HDDIMG $HDDIMG_MNT >$OUT 2>&1 || error "Failed to mount $HDDIMG"
-mount -o loop $HDDIMG_MNT/rootfs.img $HDDIMG_ROOTFS_MNT >$OUT 2>&1 || error "Failed to mount rootfs.img"
+mount -o ro,loop $HDDIMG $HDDIMG_MNT >$OUT 2>&1 || error "Failed to mount $HDDIMG"
+mount -o ro,loop $HDDIMG_MNT/rootfs.img $HDDIMG_ROOTFS_MNT >$OUT 2>&1 || error "Failed to mount rootfs.img"
 mount $ROOTFS $ROOTFS_MNT >$OUT 2>&1 || error "Failed to mount $ROOTFS on $ROOTFS_MNT"
 mount $BOOTFS $BOOTFS_MNT >$OUT 2>&1 || error "Failed to mount $BOOTFS on $BOOTFS_MNT"
 
diff --git a/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-2.7.py b/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-2.7.py
index d93c943..f2ecf8d 100755
--- a/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-2.7.py
+++ b/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-2.7.py
@@ -97,7 +97,7 @@
         # generate package variables
         #
 
-        for name, data in sorted(self.packages.iteritems()):
+        for name, data in sorted(self.packages.items()):
             desc, deps, files = data
 
             #
@@ -130,7 +130,7 @@
         self.out( 'SUMMARY_${PN}-modules="All Python modules"' )
         line = 'RDEPENDS_${PN}-modules="'
 
-        for name, data in sorted(self.packages.iteritems()):
+        for name, data in sorted(self.packages.items()):
             if name not in ['${PN}-dev', '${PN}-distutils-staticdev']:
                 line += "%s " % name
 
@@ -153,7 +153,7 @@
             os.unlink(sys.argv[1])
         except Exception:
             sys.exc_clear()
-        outfile = file( sys.argv[1], "w" )
+        outfile = open( sys.argv[1], "w" )
     else:
         outfile = sys.stdout
 
diff --git a/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-3.5.py b/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-3.5.py
index 367b4b8..2906cc6 100755
--- a/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-3.5.py
+++ b/import-layers/yocto-poky/scripts/contrib/python/generate-manifest-3.5.py
@@ -100,7 +100,7 @@
         # generate package variables
         #
 
-        for name, data in sorted(self.packages.iteritems()):
+        for name, data in sorted(self.packages.items()):
             desc, deps, files = data
 
             #
@@ -133,7 +133,7 @@
         self.out( 'SUMMARY_${PN}-modules="All Python modules"' )
         line = 'RDEPENDS_${PN}-modules="'
 
-        for name, data in sorted(self.packages.iteritems()):
+        for name, data in sorted(self.packages.items()):
             if name not in ['${PN}-dev', '${PN}-distutils-staticdev']:
                 line += "%s " % name
 
@@ -156,7 +156,7 @@
             os.unlink(sys.argv[1])
         except Exception:
             sys.exc_clear()
-        outfile = file( sys.argv[1], "w" )
+        outfile = open( sys.argv[1], "w" )
     else:
         outfile = sys.stdout
 
@@ -167,7 +167,7 @@
     #
 
     m.addPackage( "${PN}-core", "Python interpreter and core modules", "${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math",
-    "__future__.* _abcoll.* abc.* ast.* copy.* copyreg.* ConfigParser.* " +
+    "__future__.* _abcoll.* abc.* ast.* copy.* copyreg.* configparser.* " +
     "genericpath.* getopt.* linecache.* new.* " +
     "os.* posixpath.* struct.* " +
     "warnings.* site.* stat.* " +
@@ -208,6 +208,9 @@
     m.addPackage( "${PN}-audio", "Python Audio Handling", "${PN}-core",
     "wave.* chunk.* sndhdr.* lib-dynload/ossaudiodev.*.so lib-dynload/audioop.*.so audiodev.* sunaudio.* sunau.* toaiff.*" )
 
+    m.addPackage( "${PN}-argparse", "Python command line argument parser", "${PN}-core ${PN}-codecs ${PN}-textutils",
+    "argparse.*" )
+
     m.addPackage( "${PN}-asyncio", "Python Asynchronous I/O, event loop, coroutines and tasks", "${PN}-core",
     "asyncio" )
 
@@ -217,8 +220,8 @@
     m.addPackage( "${PN}-compile", "Python bytecode compilation support", "${PN}-core",
     "py_compile.* compileall.*" )
 
-    m.addPackage( "${PN}-compression", "Python high-level compression support", "${PN}-core ${PN}-codecs",
-    "gzip.* zipfile.* tarfile.* lib-dynload/bz2.*.so" )
+    m.addPackage( "${PN}-compression", "Python high-level compression support", "${PN}-core ${PN}-codecs ${PN}-importlib ${PN}-threading ${PN}-shell",
+    "gzip.* zipfile.* tarfile.* lib-dynload/bz2.*.so lib-dynload/zlib.*.so" )
 
     m.addPackage( "${PN}-crypt", "Python basic cryptographic and hashing support", "${PN}-core",
     "hashlib.* md5.* sha.* lib-dynload/crypt.*.so lib-dynload/_hashlib.*.so lib-dynload/_sha256.*.so lib-dynload/_sha512.*.so" )
@@ -229,11 +232,11 @@
     m.addPackage( "${PN}-curses", "Python curses support", "${PN}-core",
     "curses lib-dynload/_curses.*.so lib-dynload/_curses_panel.*.so" ) # directory + low level module
 
-    m.addPackage( "${PN}-ctypes", "Python C types support", "${PN}-core",
+    m.addPackage( "${PN}-ctypes", "Python C types support", "${PN}-core ${PN}-subprocess",
     "ctypes lib-dynload/_ctypes.*.so lib-dynload/_ctypes_test.*.so" ) # directory + low level module
 
     m.addPackage( "${PN}-datetime", "Python calendar and time support", "${PN}-core ${PN}-codecs",
-    "_strptime.* calendar.* lib-dynload/datetime.*.so" )
+    "_strptime.* calendar.* datetime.* lib-dynload/_datetime.*.so" )
 
     m.addPackage( "${PN}-db", "Python file-based database support", "${PN}-core",
     "anydbm.* dumbdbm.* whichdb.* dbm lib-dynload/_dbm.*.so" )
@@ -256,13 +259,16 @@
     m.addPackage( "${PN}-email", "Python email support", "${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient",
     "imaplib.* email" ) # package
 
+    m.addPackage( "${PN}-enum", "Python support for enumerations", "${PN}-core",
+    "enum.*" )
+
     m.addPackage( "${PN}-fcntl", "Python's fcntl interface", "${PN}-core",
     "lib-dynload/fcntl.*.so" )
 
     m.addPackage( "${PN}-html", "Python HTML processing support", "${PN}-core",
     "formatter.* htmlentitydefs.* htmllib.* markupbase.* sgmllib.* HTMLParser.* " )
 
-    m.addPackage( "${PN}-importlib", "Python import implementation library", "${PN}-core",
+    m.addPackage( "${PN}-importlib", "Python import implementation library", "${PN}-core ${PN}-lang",
     "importlib" )
 
     m.addPackage( "${PN}-gdbm", "Python GNU database support", "${PN}-core",
@@ -278,10 +284,10 @@
     m.addPackage( "${PN}-json", "Python JSON support", "${PN}-core ${PN}-math ${PN}-re",
     "json lib-dynload/_json.*.so" ) # package
 
-    m.addPackage( "${PN}-lang", "Python low-level language support", "${PN}-core",
+    m.addPackage( "${PN}-lang", "Python low-level language support", "${PN}-core ${PN}-importlib",
     "lib-dynload/_bisect.*.so lib-dynload/_collections.*.so lib-dynload/_heapq.*.so lib-dynload/_weakref.*.so lib-dynload/_functools.*.so " +
     "lib-dynload/array.*.so lib-dynload/itertools.*.so lib-dynload/operator.*.so lib-dynload/parser.*.so " +
-    "atexit.* bisect.* code.* codeop.* collections.* _collections_abc.* dis.* functools.* heapq.* inspect.* keyword.* opcode.* symbol.* repr.* token.* " +
+    "atexit.* bisect.* code.* codeop.* collections.* _collections_abc.* contextlib.* dis.* functools.* heapq.* inspect.* keyword.* opcode.* operator.* symbol.* repr.* token.* " +
     "tokenize.* traceback.* weakref.*" )
 
     m.addPackage( "${PN}-logging", "Python logging support", "${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold",
@@ -290,7 +296,7 @@
     m.addPackage( "${PN}-mailbox", "Python mailbox format support", "${PN}-core ${PN}-mime",
     "mailbox.*" )
 
-    m.addPackage( "${PN}-math", "Python math support", "${PN}-core",
+    m.addPackage( "${PN}-math", "Python math support", "${PN}-core ${PN}-crypt",
     "lib-dynload/cmath.*.so lib-dynload/math.*.so lib-dynload/_random.*.so random.* sets.*" )
 
     m.addPackage( "${PN}-mime", "Python MIME handling APIs", "${PN}-core ${PN}-io",
@@ -336,11 +342,17 @@
     m.addPackage( "${PN}-resource", "Python resource control interface", "${PN}-core",
     "lib-dynload/resource.*.so" )
 
-    m.addPackage( "${PN}-shell", "Python shell-like functionality", "${PN}-core ${PN}-re",
+    m.addPackage( "${PN}-selectors", "Python High-level I/O multiplexing", "${PN}-core",
+    "selectors.*" )
+
+    m.addPackage( "${PN}-shell", "Python shell-like functionality", "${PN}-core ${PN}-re ${PN}-compression",
     "cmd.* commands.* dircache.* fnmatch.* glob.* popen2.* shlex.* shutil.*" )
 
-    m.addPackage( "${PN}-subprocess", "Python subprocess support", "${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle",
-    "subprocess.*" )
+    m.addPackage( "${PN}-signal", "Python set handlers for asynchronous events support", "${PN}-core ${PN}-enum",
+    "signal.*" )
+
+    m.addPackage( "${PN}-subprocess", "Python subprocess support", "${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle ${PN}-threading ${PN}-signal ${PN}-selectors",
+    "subprocess.* lib-dynload/_posixsubprocess.*.so" )
 
     m.addPackage( "${PN}-sqlite3", "Python Sqlite3 database support", "${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading",
     "lib-dynload/_sqlite3.*.so sqlite3/dbapi2.* sqlite3/__init__.* sqlite3/dump.*" )
@@ -361,7 +373,7 @@
     "test" ) # package
 
     m.addPackage( "${PN}-threading", "Python threading & synchronization support", "${PN}-core ${PN}-lang",
-    "_threading_local.* dummy_thread.* dummy_threading.* mutex.* threading.* Queue.*" )
+    "_threading_local.* dummy_thread.* dummy_threading.* mutex.* threading.* queue.*" )
 
     m.addPackage( "${PN}-tkinter", "Python Tcl/Tk bindings", "${PN}-core",
     "lib-dynload/_tkinter.*.so lib-tk tkinter" ) # package
diff --git a/import-layers/yocto-poky/scripts/contrib/uncovered b/import-layers/yocto-poky/scripts/contrib/uncovered
new file mode 100755
index 0000000..a8399ad
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/contrib/uncovered
@@ -0,0 +1,39 @@
+#!/bin/bash -eur
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# Find python modules uncovered by oe-seltest
+#
+# Copyright (c) 2016, Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Author: Ed Bartosh <ed.bartosh@linux.intel.com>
+#
+
+if [ ! "$#" -eq 1 -o -t 0 ] ; then
+    echo 'Usage: coverage report | ./scripts/contrib/uncovered <dir>' 1>&2
+    exit 1
+fi
+
+path=$(readlink -ev $1)
+
+if [ ! -d "$path" ] ; then
+    echo "directory $1 doesn't exist" 1>&2
+    exit 1
+fi
+
+diff -u <(grep "$path" | grep -v '0%$' | cut -f1 -d: | sort) \
+     <(find $path | xargs file | grep 'Python script' | cut -f1 -d:| sort) | \
+     grep "^+$path" | cut -c2-
diff --git a/import-layers/yocto-poky/scripts/contrib/verify-homepage.py b/import-layers/yocto-poky/scripts/contrib/verify-homepage.py
index 265ff65..d39dd1d 100755
--- a/import-layers/yocto-poky/scripts/contrib/verify-homepage.py
+++ b/import-layers/yocto-poky/scripts/contrib/verify-homepage.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # This script can be used to verify HOMEPAGE values for all recipes in
 # the current configuration.
@@ -7,7 +7,7 @@
 import sys
 import os
 import subprocess
-import urllib2
+import urllib.request
 
 
 # Allow importing scripts/lib modules
@@ -33,30 +33,30 @@
         return 0
 
 def verifyHomepage(bbhandler):
-    pkg_pn = bbhandler.cooker.recipecache.pkg_pn
+    pkg_pn = bbhandler.cooker.recipecaches[''].pkg_pn
     pnlist = sorted(pkg_pn)
     count = 0
     checked = []
     for pn in pnlist:
         for fn in pkg_pn[pn]:
             # There's no point checking multiple BBCLASSEXTENDed variants of the same recipe
-            realfn, _ = bb.cache.Cache.virtualfn2realfn(fn)
+            realfn, _, _ = bb.cache.virtualfn2realfn(fn)
             if realfn in checked:
                 continue
-            data = bb.cache.Cache.loadDataFull(realfn, bbhandler.cooker.collection.get_file_appends(realfn), bbhandler.config_data)
+            data = bbhandler.parse_recipe_file(realfn)
             homepage = data.getVar("HOMEPAGE", True)
             if homepage:
                 try:
-                    urllib2.urlopen(homepage, timeout=5)
+                    urllib.request.urlopen(homepage, timeout=5)
                 except Exception:
                     count = count + wgetHomepage(os.path.basename(realfn), homepage)
             checked.append(realfn)
     return count
 
 if __name__=='__main__':
-    bbhandler = bb.tinfoil.Tinfoil()
-    bbhandler.prepare()
-    logger.info("Start verifying HOMEPAGE:")
-    failcount = verifyHomepage(bbhandler)
-    logger.info("Finished verifying HOMEPAGE.")
-    logger.info("Summary: %s failed" % failcount)
+    with bb.tinfoil.Tinfoil() as bbhandler:
+        bbhandler.prepare()
+        logger.info("Start verifying HOMEPAGE:")
+        failcount = verifyHomepage(bbhandler)
+        logger.info("Finished verifying HOMEPAGE.")
+        logger.info("Summary: %s failed" % failcount)
diff --git a/import-layers/yocto-poky/scripts/cp-noerror b/import-layers/yocto-poky/scripts/cp-noerror
index 28eb90d..35eb211 100755
--- a/import-layers/yocto-poky/scripts/cp-noerror
+++ b/import-layers/yocto-poky/scripts/cp-noerror
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Allow copying of $1 to $2 but if files in $1 disappear during the copy operation,
 # don't error.
@@ -33,16 +33,16 @@
                 shutil.copy2(srcname, dstname)
         # catch the Error from the recursive copytree so that we can
         # continue with other files
-        except shutil.Error, err:
+        except shutil.Error as err:
             errors.extend(err.args[0])
-        except EnvironmentError, why:
+        except EnvironmentError as why:
             errors.append((srcname, dstname, str(why)))
     try:
         shutil.copystat(src, dst)
-    except OSError, why:
+    except OSError as why:
         errors.extend((src, dst, str(why)))
     if errors:
-        raise shutil.Error, errors
+        raise shutil.Error(errors)
 
 try:
     copytree(sys.argv[1], sys.argv[2])
diff --git a/import-layers/yocto-poky/scripts/create-pull-request b/import-layers/yocto-poky/scripts/create-pull-request
index 479ad6e..a88f35a 100755
--- a/import-layers/yocto-poky/scripts/create-pull-request
+++ b/import-layers/yocto-poky/scripts/create-pull-request
@@ -39,13 +39,15 @@
   -l local branch     Local branch name (default: HEAD)
   -c                  Create an RFC (Request for Comment) patch series
   -h                  Display this help message
+  -a                  Automatically push local branch (-l) to remote branch (-b),
+                      or set CPR_CONTRIB_AUTO_PUSH in env
   -i commit_id        Ending commit (default: HEAD)
   -m msg_body_file    The file containing a blurb to be inserted into the summary email
   -o output_dir       Specify the output directory for the messages (default: pull-PID)
   -p prefix           Use [prefix N/M] instead of [PATCH N/M] as the subject prefix
   -r relative_to      Starting commit (default: master)
   -s subject          The subject to be inserted into the summary email
-  -u remote           The git remote where the branch is located
+  -u remote           The git remote where the branch is located, or set CPR_CONTRIB_REMOTE in env
   -d relative_dir     Generate patches relative to directory
 
  Examples:
@@ -58,8 +60,9 @@
 EOM
 }
 
+REMOTE="$CPR_CONTRIB_REMOTE"
 # Parse and validate arguments
-while getopts "b:cd:hi:m:o:p:r:s:u:l:" OPT; do
+while getopts "b:acd:hi:m:o:p:r:s:u:l:" OPT; do
 	case $OPT in
 	b)
 		BRANCH="$OPTARG"
@@ -101,35 +104,45 @@
 		;;
 	u)
 		REMOTE="$OPTARG"
-		REMOTE_URL=$(git config remote.$REMOTE.url)
-		if [ $? -ne 0 ]; then
-			echo "ERROR: git config failed to find a url for '$REMOTE'"
-			echo
-			echo "To add a remote url for $REMOTE, use:"
-			echo "  git config remote.$REMOTE.url <url>"
-			exit 1
-		fi
-
-		# Rewrite private URLs to public URLs
-		# Determine the repository name for use in the WEB_URL later
-		case "$REMOTE_URL" in
-		*@*)
-			USER_RE="[A-Za-z0-9_.@][A-Za-z0-9_.@-]*\$\?"
-			PROTO_RE="[a-z][a-z+]*://"
-			GIT_RE="\(^\($PROTO_RE\)\?$USER_RE@\)\([^:/]*\)[:/]\(.*\)"
-			REMOTE_URL=${REMOTE_URL%.git}
-			REMOTE_REPO=$(echo $REMOTE_URL | sed "s#$GIT_RE#\4#")
-			REMOTE_URL=$(echo $REMOTE_URL | sed "s#$GIT_RE#git://\3/\4#")
-			;;
-		*)
-			echo "WARNING: Unrecognized remote URL: $REMOTE_URL"
-			echo "         The pull and browse URLs will likely be incorrect"
-			;;
-		esac
+		;;
+	a)
+		CPR_CONTRIB_AUTO_PUSH="1"
 		;;
 	esac
 done
 
+if [ -z "$REMOTE" ]; then
+	echo "ERROR: Missing parameter -u or CPR_CONTRIB_REMOTE in env, no git remote!"
+	usage
+	exit 1
+fi
+
+REMOTE_URL=$(git config remote.$REMOTE.url)
+if [ $? -ne 0 ]; then
+	echo "ERROR: git config failed to find a url for '$REMOTE'"
+	echo
+	echo "To add a remote url for $REMOTE, use:"
+	echo "  git config remote.$REMOTE.url <url>"
+	exit 1
+fi
+
+# Rewrite private URLs to public URLs
+# Determine the repository name for use in the WEB_URL later
+case "$REMOTE_URL" in
+*@*)
+	USER_RE="[A-Za-z0-9_.@][A-Za-z0-9_.@-]*\$\?"
+	PROTO_RE="[a-z][a-z+]*://"
+	GIT_RE="\(^\($PROTO_RE\)\?$USER_RE@\)\([^:/]*\)[:/]\(.*\)"
+	REMOTE_URL=${REMOTE_URL%.git}
+	REMOTE_REPO=$(echo $REMOTE_URL | sed "s#$GIT_RE#\4#")
+	REMOTE_URL=$(echo $REMOTE_URL | sed "s#$GIT_RE#git://\3/\4#")
+	;;
+*)
+	echo "WARNING: Unrecognized remote URL: $REMOTE_URL"
+	echo "         The pull and browse URLs will likely be incorrect"
+	;;
+esac
+
 if [ -z "$BRANCH" ]; then
 	BRANCH=$(git branch | grep -e "^\* " | cut -d' ' -f2)
 	echo "NOTE: Assuming remote branch '$BRANCH', use -b to override."
@@ -140,12 +153,6 @@
 	echo "NOTE: Assuming local branch HEAD, use -l to override."
 fi
 
-if [ -z "$REMOTE_URL" ]; then
-	echo "ERROR: Missing parameter -u, no git remote!"
-	usage
-	exit 1
-fi
-
 if [ $RFC -eq 1 ]; then
 	PREFIX="RFC $PREFIX"
 fi
@@ -171,6 +178,11 @@
 # Perform a sanity test on the web URL. Issue a warning if it is not
 # accessible, but do not abort as users may want to run offline.
 if [ -n "$WEB_URL" ]; then
+	if [ "$CPR_CONTRIB_AUTO_PUSH" = "1" ]; then
+		echo "Pushing '$BRANCH' on '$REMOTE' as requested..."
+		git push $REMOTE $L_BRANCH:$BRANCH
+		echo ""
+	fi
 	wget --no-check-certificate -q $WEB_URL -O /dev/null
 	if [ $? -ne 0 ]; then
 		echo "WARNING: Branch '$BRANCH' was not found on the contrib git tree."
@@ -217,6 +229,7 @@
 fi
 if [ $? -ne 0 ]; then
 	echo "ERROR: git request-pull reported an error"
+	rm -rf $ODIR
 	exit 1
 fi
 
@@ -249,7 +262,13 @@
 	sed -i "/BLURB HERE/ d" "$CL"
 fi
 
-# If the user specified a subject, replace the SUBJECT token with it.
+# Set subject automatically if there is only one patch
+patch_cnt=`git log --pretty=oneline ${RELATIVE_TO}..${L_BRANCH} | wc -l`
+if [ -z "$SUBJECT" -a $patch_cnt -eq 1 ]; then
+    SUBJECT="`git log --format=%s ${RELATIVE_TO}..${L_BRANCH}`"
+fi
+
+# Replace the SUBJECT token with it.
 if [ -n "$SUBJECT" ]; then
 	sed -i -e "s/\*\*\* SUBJECT HERE \*\*\*/$SUBJECT/" "$CL"
 fi
diff --git a/import-layers/yocto-poky/scripts/devtool b/import-layers/yocto-poky/scripts/devtool
index 4780390..0c32c50 100755
--- a/import-layers/yocto-poky/scripts/devtool
+++ b/import-layers/yocto-poky/scripts/devtool
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # OpenEmbedded Development tool
 #
@@ -22,7 +22,7 @@
 import argparse
 import glob
 import re
-import ConfigParser
+import configparser
 import subprocess
 import logging
 
@@ -51,12 +51,12 @@
 
     def __init__(self, filename):
         self.config_file = filename
-        self.config_obj = ConfigParser.SafeConfigParser()
+        self.config_obj = configparser.SafeConfigParser()
 
     def get(self, section, option, default=None):
         try:
             ret = self.config_obj.get(section, option)
-        except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
+        except (configparser.NoOptionError, configparser.NoSectionError):
             if default != None:
                 ret = default
             else:
@@ -86,6 +86,11 @@
         with open(self.config_file, 'w') as f:
             self.config_obj.write(f)
 
+    def set(self, section, option, value):
+        if not self.config_obj.has_section(section):
+            self.config_obj.add_section(section)
+        self.config_obj.set(section, option, value)
+
 class Context:
     def __init__(self, **kwargs):
         self.__dict__.update(kwargs)
@@ -174,13 +179,16 @@
         # Add a README file
         with open(os.path.join(workspacedir, 'README'), 'w') as f:
             f.write('This layer was created by the OpenEmbedded devtool utility in order to\n')
-            f.write('contain recipes and bbappends. In most instances you should use the\n')
+            f.write('contain recipes and bbappends that are currently being worked on. The idea\n')
+            f.write('is that the contents is temporary - once you have finished working on a\n')
+            f.write('recipe you use the appropriate method to move the files you have been\n')
+            f.write('working on to a proper layer. In most instances you should use the\n')
             f.write('devtool utility to manage files within it rather than modifying files\n')
             f.write('directly (although recipes added with "devtool add" will often need\n')
             f.write('direct modification.)\n')
-            f.write('\nIf you no longer need to use devtool you can remove the path to this\n')
-            f.write('workspace layer from your conf/bblayers.conf file (and then delete the\n')
-            f.write('layer, if you wish).\n')
+            f.write('\nIf you no longer need to use devtool or the workspace layer\'s contents\n')
+            f.write('you can remove the path to this workspace layer from your conf/bblayers.conf\n')
+            f.write('file (and then delete the layer, if you wish).\n')
             f.write('\nNote that by default, if devtool fetches and unpacks source code, it\n')
             f.write('will place it in a subdirectory of a "sources" subdirectory of the\n')
             f.write('layer. If you prefer it to be elsewhere you can specify the source\n')
@@ -281,18 +289,17 @@
 
     if global_args.bbpath is None:
         tinfoil = setup_tinfoil(config_only=True, basepath=basepath)
-        global_args.bbpath = tinfoil.config_data.getVar('BBPATH', True)
-    else:
-        tinfoil = None
+        try:
+            global_args.bbpath = tinfoil.config_data.getVar('BBPATH', True)
+        finally:
+            tinfoil.shutdown()
 
     for path in [scripts_path] + global_args.bbpath.split(':'):
         pluginpath = os.path.join(path, 'lib', 'devtool')
         scriptutils.load_plugins(logger, plugins, pluginpath)
 
-    if tinfoil:
-        tinfoil.shutdown()
-
     subparsers = parser.add_subparsers(dest="subparser_name", title='subcommands', metavar='<subcommand>')
+    subparsers.required = True
 
     subparsers.add_subparser_group('sdk', 'SDK maintenance', -2)
     subparsers.add_subparser_group('advanced', 'Advanced', -1)
@@ -325,7 +332,7 @@
     except DevtoolError as err:
         if str(err):
             logger.error(str(err))
-        ret = 1
+        ret = err.exitcode
     except argparse_oe.ArgumentUsageError as ae:
         parser.error_subcommand(ae.message, ae.subcommand)
 
diff --git a/import-layers/yocto-poky/scripts/gen-lockedsig-cache b/import-layers/yocto-poky/scripts/gen-lockedsig-cache
index 0986a21..49de74e 100755
--- a/import-layers/yocto-poky/scripts/gen-lockedsig-cache
+++ b/import-layers/yocto-poky/scripts/gen-lockedsig-cache
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import os
 import sys
@@ -15,15 +15,27 @@
 
 if len(sys.argv) < 5:
     print("Incorrect number of arguments specified")
-    print("syntax: gen-lockedsig-cache <locked-sigs.inc> <input-cachedir> <output-cachedir> <nativelsbstring>")
+    print("syntax: gen-lockedsig-cache <locked-sigs.inc> <input-cachedir> <output-cachedir> <nativelsbstring> [filterfile]")
     sys.exit(1)
 
+filterlist = []
+if len(sys.argv) > 5:
+    print('Reading filter file %s' % sys.argv[5])
+    with open(sys.argv[5]) as f:
+        for l in f.readlines():
+            if ":" in l:
+                filterlist.append(l.rstrip())
+
 print('Reading %s' % sys.argv[1])
 sigs = []
 with open(sys.argv[1]) as f:
     for l in f.readlines():
         if ":" in l:
-            sigs.append(l.split(":")[2].split()[0])
+            task, sig = l.split()[0].rsplit(':', 1)
+            if filterlist and not task in filterlist:
+                print('Filtering out %s' % task)
+            else:
+                sigs.append(sig)
 
 print('Gathering file list')
 files = set()
@@ -45,13 +57,14 @@
     destdir = os.path.dirname(dst)
     mkdir(destdir)
 
+    src = os.path.realpath(f)
     if os.path.exists(dst):
         os.remove(dst)
-    if (os.stat(f).st_dev == os.stat(destdir).st_dev):
+    if (os.stat(src).st_dev == os.stat(destdir).st_dev):
         print('linking')
-        os.link(f, dst)
+        os.link(src, dst)
     else:
         print('copying')
-        shutil.copyfile(f, dst)
+        shutil.copyfile(src, dst)
 
 print('Done!')
diff --git a/import-layers/yocto-poky/scripts/lib/argparse_oe.py b/import-layers/yocto-poky/scripts/lib/argparse_oe.py
index bf3ebad..bf6eb17 100644
--- a/import-layers/yocto-poky/scripts/lib/argparse_oe.py
+++ b/import-layers/yocto-poky/scripts/lib/argparse_oe.py
@@ -14,23 +14,35 @@
         kwargs.setdefault('formatter_class', OeHelpFormatter)
         self._subparser_groups = OrderedDict()
         super(ArgumentParser, self).__init__(*args, **kwargs)
+        self._positionals.title = 'arguments'
+        self._optionals.title = 'options'
 
     def error(self, message):
-        sys.stderr.write('ERROR: %s\n' % message)
-        self.print_help()
+        """error(message: string)
+
+        Prints a help message incorporating the message to stderr and
+        exits.
+        """
+        self._print_message('%s: error: %s\n' % (self.prog, message), sys.stderr)
+        self.print_help(sys.stderr)
         sys.exit(2)
 
     def error_subcommand(self, message, subcommand):
         if subcommand:
-            for action in self._actions:
-                if isinstance(action, argparse._SubParsersAction):
-                    for choice, subparser in action.choices.items():
-                        if choice == subcommand:
-                            subparser.error(message)
-                            return
+            action = self._get_subparser_action()
+            try:
+                subparser = action._name_parser_map[subcommand]
+            except KeyError:
+                self.error('no subparser for name "%s"' % subcommand)
+            else:
+                subparser.error(message)
+
         self.error(message)
 
     def add_subparsers(self, *args, **kwargs):
+        if 'dest' not in kwargs:
+            kwargs['dest'] = '_subparser_name'
+
         ret = super(ArgumentParser, self).add_subparsers(*args, **kwargs)
         # Need a way of accessing the parent parser
         ret._parent_parser = self
@@ -43,6 +55,38 @@
     def add_subparser_group(self, groupname, groupdesc, order=0):
         self._subparser_groups[groupname] = (groupdesc, order)
 
+    def parse_args(self, args=None, namespace=None):
+        """Parse arguments, using the correct subparser to show the error."""
+        args, argv = self.parse_known_args(args, namespace)
+        if argv:
+            message = 'unrecognized arguments: %s' % ' '.join(argv)
+            if self._subparsers:
+                subparser = self._get_subparser(args)
+                subparser.error(message)
+            else:
+                self.error(message)
+            sys.exit(2)
+        return args
+
+    def _get_subparser(self, args):
+        action = self._get_subparser_action()
+        if action.dest == argparse.SUPPRESS:
+            self.error('cannot get subparser, the subparser action dest is suppressed')
+
+        name = getattr(args, action.dest)
+        try:
+            return action._name_parser_map[name]
+        except KeyError:
+            self.error('no subparser for name "%s"' % name)
+
+    def _get_subparser_action(self):
+        if not self._subparsers:
+            self.error('cannot return the subparser action, no subparsers added')
+
+        for action in self._subparsers._group_actions:
+            if isinstance(action, argparse._SubParsersAction):
+                return action
+
 
 class ArgumentSubParser(ArgumentParser):
     def __init__(self, *args, **kwargs):
@@ -51,10 +95,6 @@
         if 'order' in kwargs:
             self._order = kwargs.pop('order')
         super(ArgumentSubParser, self).__init__(*args, **kwargs)
-        for agroup in self._action_groups:
-            if agroup.title == 'optional arguments':
-                agroup.title = 'options'
-                break
 
     def parse_known_args(self, args=None, namespace=None):
         # This works around argparse not handling optional positional arguments being
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/engine.py b/import-layers/yocto-poky/scripts/lib/bsp/engine.py
index 66e2162..07a15bb 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/engine.py
+++ b/import-layers/yocto-poky/scripts/lib/bsp/engine.py
@@ -34,23 +34,22 @@
 import os
 import sys
 from abc import ABCMeta, abstractmethod
-from tags import *
+from .tags import *
 import shlex
 import json
 import subprocess
 import shutil
 
-class Line():
+class Line(metaclass=ABCMeta):
     """
     Generic (abstract) container representing a line that will appear
     in the BSP-generating program.
     """
-    __metaclass__ = ABCMeta
 
     def __init__(self, line):
         self.line = line
         self.generated_line = ""
-        self.prio = sys.maxint
+        self.prio = sys.maxsize
         self.discard = False
 
     @abstractmethod
@@ -155,7 +154,7 @@
         try:
             self.prio = int(props["prio"])
         except KeyError:
-            self.prio = sys.maxint
+            self.prio = sys.maxsize
 
     def gen(self, context = None):
         try:
@@ -201,7 +200,7 @@
 
         msg += " [default: " + default_choice + "]"
 
-        line = name + " = default(raw_input(\"" + msg + " \"), " + name + ")"
+        line = name + " = default(input(\"" + msg + " \"), " + name + ")"
 
         return line
 
@@ -314,16 +313,15 @@
 
         msg += " [default: " + default_choice + "]"
 
-        line = name + " = boolean(raw_input(\"" + msg + " \"), " + name + ")"
+        line = name + " = boolean(input(\"" + msg + " \"), " + name + ")"
 
         return line
 
 
-class ListInputLine(InputLine):
+class ListInputLine(InputLine, metaclass=ABCMeta):
     """
     Base class for List-based Input lines. e.g. Choicelist, Checklist.
     """
-    __metaclass__ = ABCMeta
 
     def __init__(self, props, tag, lineno):
         InputLine.__init__(self, props, tag, lineno)
@@ -464,9 +462,9 @@
         choices_str = self.gen_choices_str(choicepairs)
         choices_val_list = self.gen_choices_val_list(choicepairs)
         if checklist:
-            choiceval = default(find_choicevals(raw_input(msg + "\n" + choices_str), choices_val_list), default_choice)
+            choiceval = default(find_choicevals(input(msg + "\n" + choices_str), choices_val_list), default_choice)
         else:
-            choiceval = default(find_choiceval(raw_input(msg + "\n" + choices_str), choices_val_list), default_choice)
+            choiceval = default(find_choiceval(input(msg + "\n" + choices_str), choices_val_list), default_choice)
 
         return choiceval
 
@@ -540,12 +538,12 @@
     """
     msg = input_str.strip() + " "
 
-    giturl = default(raw_input(msg), name)
+    giturl = default(input(msg), name)
 
     while True:
         if verify_git_repo(giturl):
             return giturl
-        giturl = default(raw_input(msg), name)
+        giturl = default(input(msg), name)
 
 
 def get_verified_file(input_str, name, filename_can_be_null):
@@ -555,14 +553,14 @@
     """
     msg = input_str.strip() + " "
 
-    filename = default(raw_input(msg), name)
+    filename = default(input(msg), name)
 
     while True:
         if not filename and filename_can_be_null:
             return filename
         if os.path.isfile(filename):
             return filename
-        filename = default(raw_input(msg), name)
+        filename = default(input(msg), name)
 
 
 def replace_file(replace_this, with_this):
@@ -1263,13 +1261,13 @@
             return None
         end = filename.find(CLOSE_TAG, opentag_start)
         if end == -1:
-            print "No close tag found for open tag in filename %s" % filename
+            print("No close tag found for open tag in filename %s" % filename)
             sys.exit(1)
 
         # we have a {{ tag i.e. code
         tag = filename[opentag_start + len(OPEN_TAG):end].strip()
         if not tag.lstrip().startswith(IF_TAG):
-            print "Only 'if' tags are allowed in file or directory names, filename: %s" % filename
+            print("Only 'if' tags are allowed in file or directory names, filename: %s" % filename)
             sys.exit(1)
 
         return CodeLine(tag)
@@ -1286,7 +1284,7 @@
     def __init__(self, codeline):
         InputLine.__init__(self, {}, "", 0)
         self.group = []
-        self.prio = sys.maxint
+        self.prio = sys.maxsize
         self.group.append(codeline)
 
     def append(self, line):
@@ -1364,7 +1362,7 @@
         of = open("bspgen.out", "w")
         of.write(buf)
         of.close()
-    exec buf
+    exec(buf)
 
 
 def gen_target(files, context = None):
@@ -1387,7 +1385,7 @@
     Generate user-specified entries for input values instead of
     generating input prompts.
     """
-    for name, val in properties.iteritems():
+    for name, val in properties.items():
         program_line = name + " = \"" + val + "\""
         program_lines.append(program_line)
 
@@ -1515,7 +1513,7 @@
 
     arches = os.listdir(arch_path)
     if arch not in arches or arch == "common":
-        print "Invalid karch, exiting\n"
+        print("Invalid karch, exiting\n")
         sys.exit(1)
 
     target = os.path.join(arch_path, arch)
@@ -1541,7 +1539,7 @@
     expand_common - boolean, use the contents of (for bsp layers) arch/common
     """
     if os.path.exists(layer_output_dir):
-        print "\nlayer output dir already exists, exiting. (%s)" % layer_output_dir
+        print("\nlayer output dir already exists, exiting. (%s)" % layer_output_dir)
         sys.exit(1)
 
     properties = None
@@ -1549,11 +1547,13 @@
     if properties_file:
         try:
             infile = open(properties_file, "r")
+            properties = json.load(infile)
         except IOError:
-            print "Couldn't open properties file %s for reading, exiting" % properties_file
+            print("Couldn't open properties file %s for reading, exiting" % properties_file)
             sys.exit(1)
-
-        properties = json.load(infile)
+        except ValueError:
+            print("Wrong format on properties file %s, exiting" % properties_file)
+            sys.exit(1)
 
     if properties_str and not properties:
         properties = json.loads(properties_str)
@@ -1597,8 +1597,8 @@
     """
     yocto_common_create(layer_name, "layer", scripts_path, layer_output_dir, codedump, properties_file, properties, False)
 
-    print "\nNew layer created in %s.\n" % (layer_output_dir)
-    print "Don't forget to add it to your BBLAYERS (for details see %s/README)." % (layer_output_dir)
+    print("\nNew layer created in %s.\n" % layer_output_dir)
+    print("Don't forget to add it to your BBLAYERS (for details see %s/README)." % layer_output_dir)
 
 
 def yocto_bsp_create(machine, arch, scripts_path, bsp_output_dir, codedump, properties_file, properties=None):
@@ -1616,21 +1616,21 @@
     """
     yocto_common_create(machine, arch, scripts_path, bsp_output_dir, codedump, properties_file, properties)
 
-    print "\nNew %s BSP created in %s" % (arch, bsp_output_dir)
+    print("\nNew %s BSP created in %s" % (arch, bsp_output_dir))
 
 
 def print_dict(items, indent = 0):
     """
     Print the values in a possibly nested dictionary.
     """
-    for key, val in items.iteritems():
-        print "    "*indent + "\"%s\" :" % key,
+    for key, val in items.items():
+        print("    "*indent + "\"%s\" :" % key)
         if type(val) == dict:
-            print "{"
+            print("{")
             print_dict(val, indent + 1)
-            print "    "*indent + "}"
+            print("    "*indent + "}")
         else:
-            print "%s" % val
+            print("%s" % val)
 
 
 def get_properties(input_lines):
@@ -1681,7 +1681,7 @@
         try:
             of = open(properties_file, "w")
         except IOError:
-            print "Couldn't open properties file %s for writing, exiting" % properties_file
+            print("Couldn't open properties file %s for writing, exiting" % properties_file)
             sys.exit(1)
 
         json.dump(properties, of, indent=1)
@@ -1755,10 +1755,10 @@
     """
     if type == "choicelist":
         for value in values_list:
-            print "[\"%s\", \"%s\"]" % (value[0], value[1])
+            print("[\"%s\", \"%s\"]" % (value[0], value[1]))
     elif type == "boolean":
         for value in values_list:
-            print "[\"%s\", \"%s\"]" % (value[0], value[1])
+            print("[\"%s\", \"%s\"]" % (value[0], value[1]))
 
 
 def yocto_layer_list_property_values(arch, property, scripts_path, properties_file, expand_common=True):
@@ -1789,7 +1789,7 @@
 
     input_line = find_input_line(property, input_lines)
     if not input_line:
-        print "Couldn't find values for property %s" % property
+        print("Couldn't find values for property %s" % property)
         return
 
     values_list = []
@@ -1818,7 +1818,7 @@
         try:
             of = open(properties_file, "w")
         except IOError:
-            print "Couldn't open properties file %s for writing, exiting" % properties_file
+            print("Couldn't open properties file %s for writing, exiting" % properties_file)
             sys.exit(1)
 
         json.dump(values_list, of)
@@ -1826,44 +1826,28 @@
     print_values(type, values_list)
 
 
-def yocto_bsp_list(args, scripts_path, properties_file):
+def yocto_bsp_list(args, scripts_path):
     """
     Print available architectures, or the complete list of properties
     defined by the BSP, or the possible values for a particular BSP
     property.
     """
-    if len(args) < 1:
-        return False
-
-    if args[0] == "karch":
+    if args.karch == "karch":
         lib_path = scripts_path + '/lib'
         bsp_path = lib_path + '/bsp'
         arch_path = bsp_path + '/substrate/target/arch'
-        print "Architectures available:"
+        print("Architectures available:")
         for arch in os.listdir(arch_path):
             if arch == "common" or arch == "layer":
                 continue
-            print "    %s" % arch
-        return True
-    else:
-        arch = args[0]
+            print("    %s" % arch)
+        return
 
-    if len(args) < 2 or len(args) > 3:
-        return False
+    if args.properties:
+        yocto_layer_list_properties(args.karch, scripts_path, args.properties_file)
+    elif args.property:
+        yocto_layer_list_property_values(args.karch, args.property, scripts_path, args.properties_file)
 
-    if len(args) == 2:
-        if args[1] == "properties":
-            yocto_layer_list_properties(arch, scripts_path, properties_file)
-        else:
-            return False
-
-    if len(args) == 3:
-        if args[1] == "property":
-            yocto_layer_list_property_values(arch, args[2], scripts_path, properties_file)
-        else:
-            return False
-
-    return True
 
 
 def yocto_layer_list(args, scripts_path, properties_file):
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/help.py b/import-layers/yocto-poky/scripts/lib/bsp/help.py
index 85a09dd..4f0d772 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/help.py
+++ b/import-layers/yocto-poky/scripts/lib/bsp/help.py
@@ -42,7 +42,7 @@
 
     help = subcommands.get(subcommand, subcommand_error)[2]
     pager = subprocess.Popen('less', stdin=subprocess.PIPE)
-    pager.communicate(help)
+    pager.communicate(bytes(help, 'UTF-8'))
 
     return True
 
@@ -183,9 +183,9 @@
 yocto_bsp_list_usage = """
 
  usage: yocto-bsp list karch
-        yocto-bsp list <karch> properties
+        yocto-bsp list <karch> --properties
                 [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
-        yocto-bsp list <karch> property <xxx>
+        yocto-bsp list <karch> --property <xxx>
                 [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
 
  This command enumerates the complete set of possible values for a
@@ -213,9 +213,9 @@
 
 SYNOPSIS
     yocto-bsp list karch
-    yocto-bsp list <karch> properties
+    yocto-bsp list <karch> --properties
             [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
-    yocto-bsp list <karch> property <xxx>
+    yocto-bsp list <karch> --property <xxx>
             [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
 
 DESCRIPTION
@@ -246,9 +246,9 @@
     object will consist of the set of name:value pairs corresponding
     to the (possibly nested) dictionary of properties defined by the
     input statements used by the BSP.  Some example output for the
-    'list properties' command:
+    'list --properties' command:
 
-    $ yocto-bsp list arm properties
+    $ yocto-bsp list arm --properties
     "touchscreen" : {
         "msg" : Does your BSP have a touchscreen? (y/N)
         "default" : n
@@ -310,11 +310,11 @@
     name:value pairs corresponding to the array of property values
     associated with the property.
 
-    $ yocto-bsp list i386 property xserver_choice
+    $ yocto-bsp list i386 --property xserver_choice
         ["xserver_vesa", "VESA xserver support"]
         ["xserver_i915", "i915 xserver support"]
 
-    $ yocto-bsp list arm property base_kbranch_linux_yocto_3_0
+    $ yocto-bsp list arm --property base_kbranch_linux_yocto_3_0
         Getting branches from remote repo git://git.yoctoproject.org/linux-yocto-3.0...
         ["yocto/base", "yocto/base"]
         ["yocto/eg20t", "yocto/eg20t"]
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/kernel.py b/import-layers/yocto-poky/scripts/lib/bsp/kernel.py
index ba68b60..a3ee325 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/kernel.py
+++ b/import-layers/yocto-poky/scripts/lib/bsp/kernel.py
@@ -29,11 +29,10 @@
 import sys
 import os
 import shutil
-from tags import *
+from .tags import *
 import glob
 import subprocess
-from engine import create_context
-
+from .engine import create_context
 
 def find_bblayers():
     """
@@ -42,7 +41,7 @@
     try:
         builddir = os.environ["BUILDDIR"]
     except KeyError:
-        print "BUILDDIR not found, exiting. (Did you forget to source oe-init-build-env?)"
+        print("BUILDDIR not found, exiting. (Did you forget to source oe-init-build-env?)")
         sys.exit(1)
     bblayers_conf = os.path.join(builddir, "conf/bblayers.conf")
 
@@ -50,10 +49,10 @@
 
     bitbake_env_cmd = "bitbake -e"
     bitbake_env_lines = subprocess.Popen(bitbake_env_cmd, shell=True,
-                                         stdout=subprocess.PIPE).stdout.read()
+                                         stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     if not bitbake_env_lines:
-        print "Couldn't get '%s' output, exiting." % bitbake_env_cmd
+        print("Couldn't get '%s' output, exiting." % bitbake_env_cmd)
         sys.exit(1)
 
     for line in bitbake_env_lines.split('\n'):
@@ -62,8 +61,7 @@
             break
 
     if not bblayers:
-        print "Couldn't find BBLAYERS in %s output, exiting." % \
-            bitbake_env_cmd
+        print("Couldn't find BBLAYERS in %s output, exiting." % bitbake_env_cmd)
         sys.exit(1)
 
     raw_layers = bblayers.split()
@@ -110,8 +108,8 @@
         if layer.endswith(machine):
             return layer
 
-    print "Unable to find the BSP layer for machine %s." % machine
-    print "Please make sure it is listed in bblayers.conf"
+    print("Unable to find the BSP layer for machine %s." % machine)
+    print("Please make sure it is listed in bblayers.conf")
     sys.exit(1)
 
 
@@ -190,8 +188,8 @@
     """
     config_items = read_config_items(scripts_path, machine)
 
-    print "The current set of machine-specific kernel config items for %s is:" % machine
-    print gen_choices_str(config_items)
+    print("The current set of machine-specific kernel config items for %s is:" % machine)
+    print(gen_choices_str(config_items))
 
 
 def yocto_kernel_config_rm(scripts_path, machine):
@@ -202,9 +200,9 @@
     """
     config_items = read_config_items(scripts_path, machine)
 
-    print "Specify the kernel config items to remove:"
-    input = raw_input(gen_choices_str(config_items))
-    rm_choices = input.split()
+    print("Specify the kernel config items to remove:")
+    inp = input(gen_choices_str(config_items))
+    rm_choices = inp.split()
     rm_choices.sort()
 
     removed = []
@@ -213,18 +211,18 @@
         try:
             idx = int(choice) - 1
         except ValueError:
-            print "Invalid choice (%s), exiting" % choice
+            print("Invalid choice (%s), exiting" % choice)
             sys.exit(1)
         if idx < 0 or idx >= len(config_items):
-            print "Invalid choice (%d), exiting" % (idx + 1)
+            print("Invalid choice (%d), exiting" % (idx + 1))
             sys.exit(1)
         removed.append(config_items.pop(idx))
 
     write_config_items(scripts_path, machine, config_items)
 
-    print "Removed items:"
+    print("Removed items:")
     for r in removed:
-        print "\t%s" % r
+        print("\t%s" % r)
 
 
 def yocto_kernel_config_add(scripts_path, machine, config_items):
@@ -239,7 +237,7 @@
 
     for item in config_items:
         if not item.startswith("CONFIG") or (not "=y" in item and not "=m" in item):
-            print "Invalid config item (%s), exiting" % item
+            print("Invalid config item (%s), exiting" % item)
             sys.exit(1)
         if item not in cur_items and item not in new_items:
             new_items.append(item)
@@ -249,16 +247,16 @@
     if len(new_items) > 0:
         cur_items.extend(new_items)
         write_config_items(scripts_path, machine, cur_items)
-        print "Added item%s:" % ("" if len(new_items)==1 else "s")
+        print("Added item%s:" % ("" if len(new_items)==1 else "s"))
         for n in new_items:
-            print "\t%s" % n
+            print("\t%s" % n)
 
     if len(dup_items) > 0:
         output="The following item%s already exist%s in the current configuration, ignoring %s:" % \
             (("","s", "it") if len(dup_items)==1 else ("s", "", "them" ))
-        print output
+        print(output)
         for n in dup_items:
-            print "\t%s" % n
+            print("\t%s" % n)
 
 def find_current_kernel(bsp_layer, machine):
     """
@@ -347,8 +345,8 @@
     """
     patches = read_patch_items(scripts_path, machine)
 
-    print "The current set of machine-specific patches for %s is:" % machine
-    print gen_choices_str(patches)
+    print("The current set of machine-specific patches for %s is:" % machine)
+    print(gen_choices_str(patches))
 
 
 def yocto_kernel_patch_rm(scripts_path, machine):
@@ -358,26 +356,26 @@
     """
     patches = read_patch_items(scripts_path, machine)
 
-    print "Specify the patches to remove:"
-    input = raw_input(gen_choices_str(patches))
-    rm_choices = input.split()
+    print("Specify the patches to remove:")
+    inp = input(gen_choices_str(patches))
+    rm_choices = inp.split()
     rm_choices.sort()
 
     removed = []
 
     filesdir = find_filesdir(scripts_path, machine)
     if not filesdir:
-        print "Couldn't rm patch(es) since we couldn't find a 'files' dir"
+        print("Couldn't rm patch(es) since we couldn't find a 'files' dir")
         sys.exit(1)
 
     for choice in reversed(rm_choices):
         try:
             idx = int(choice) - 1
         except ValueError:
-            print "Invalid choice (%s), exiting" % choice
+            print("Invalid choice (%s), exiting" % choice)
             sys.exit(1)
         if idx < 0 or idx >= len(patches):
-            print "Invalid choice (%d), exiting" % (idx + 1)
+            print("Invalid choice (%d), exiting" % (idx + 1))
             sys.exit(1)
         filesdir_patch = os.path.join(filesdir, patches[idx])
         if os.path.isfile(filesdir_patch):
@@ -387,9 +385,9 @@
 
     write_patch_items(scripts_path, machine, patches)
 
-    print "Removed patches:"
+    print("Removed patches:")
     for r in removed:
-        print "\t%s" % r
+        print("\t%s" % r)
 
 
 def yocto_kernel_patch_add(scripts_path, machine, patches):
@@ -401,19 +399,19 @@
 
     for patch in patches:
         if os.path.basename(patch) in existing_patches:
-            print "Couldn't add patch (%s) since it's already been added" % os.path.basename(patch)
+            print("Couldn't add patch (%s) since it's already been added" % os.path.basename(patch))
             sys.exit(1)
 
     filesdir = find_filesdir(scripts_path, machine)
     if not filesdir:
-        print "Couldn't add patch (%s) since we couldn't find a 'files' dir to add it to" % os.path.basename(patch)
+        print("Couldn't add patch (%s) since we couldn't find a 'files' dir to add it to" % os.path.basename(patch))
         sys.exit(1)
 
     new_patches = []
 
     for patch in patches:
         if not os.path.isfile(patch):
-            print "Couldn't find patch (%s), exiting" % patch
+            print("Couldn't find patch (%s), exiting" % patch)
             sys.exit(1)
         basename = os.path.basename(patch)
         filesdir_patch = os.path.join(filesdir, basename)
@@ -424,9 +422,9 @@
     cur_items.extend(new_patches)
     write_patch_items(scripts_path, machine, cur_items)
 
-    print "Added patches:"
+    print("Added patches:")
     for n in new_patches:
-        print "\t%s" % n
+        print("\t%s" % n)
 
 
 def inc_pr(line):
@@ -461,7 +459,7 @@
 
     kernel = find_current_kernel(layer, machine)
     if not kernel:
-        print "Couldn't determine the kernel for this BSP, exiting."
+        print("Couldn't determine the kernel for this BSP, exiting.")
         sys.exit(1)
 
     kernel_bbfile = os.path.join(layer, "recipes-kernel/linux/" + kernel + ".bbappend")
@@ -597,8 +595,8 @@
     """
     features = read_features(scripts_path, machine)
 
-    print "The current set of machine-specific features for %s is:" % machine
-    print gen_choices_str(features)
+    print("The current set of machine-specific features for %s is:" % machine)
+    print(gen_choices_str(features))
 
 
 def yocto_kernel_feature_rm(scripts_path, machine):
@@ -609,9 +607,9 @@
     """
     features = read_features(scripts_path, machine)
 
-    print "Specify the features to remove:"
-    input = raw_input(gen_choices_str(features))
-    rm_choices = input.split()
+    print("Specify the features to remove:")
+    inp = input(gen_choices_str(features))
+    rm_choices = inp.split()
     rm_choices.sort()
 
     removed = []
@@ -620,18 +618,18 @@
         try:
             idx = int(choice) - 1
         except ValueError:
-            print "Invalid choice (%s), exiting" % choice
+            print("Invalid choice (%s), exiting" % choice)
             sys.exit(1)
         if idx < 0 or idx >= len(features):
-            print "Invalid choice (%d), exiting" % (idx + 1)
+            print("Invalid choice (%d), exiting" % (idx + 1))
             sys.exit(1)
         removed.append(features.pop(idx))
 
     write_features(scripts_path, machine, features)
 
-    print "Removed features:"
+    print("Removed features:")
     for r in removed:
-        print "\t%s" % r
+        print("\t%s" % r)
 
 
 def yocto_kernel_feature_add(scripts_path, machine, features):
@@ -643,7 +641,7 @@
 
     for item in features:
         if not item.endswith(".scc"):
-            print "Invalid feature (%s), exiting" % item
+            print("Invalid feature (%s), exiting" % item)
             sys.exit(1)
         new_items.append(item)
 
@@ -652,9 +650,9 @@
 
     write_features(scripts_path, machine, cur_items)
 
-    print "Added features:"
+    print("Added features:")
     for n in new_items:
-        print "\t%s" % n
+        print("\t%s" % n)
 
 
 def find_feature_url(git_url):
@@ -714,7 +712,7 @@
                                         feature_dir + "/" + file)
                 f = open(fullpath)
                 feature_desc = find_feature_desc(f.readlines())
-                print feature_dir + "/" + file + ": " + feature_desc
+                print(feature_dir + "/" + file + ": " + feature_desc)
 
 
 def yocto_kernel_available_features_list(scripts_path, machine):
@@ -725,7 +723,7 @@
     layer = find_bsp_layer(machine)
     kernel = find_current_kernel(layer, machine)
     if not kernel:
-        print "Couldn't determine the kernel for this BSP, exiting."
+        print("Couldn't determine the kernel for this BSP, exiting.")
         sys.exit(1)
 
     context = create_context(machine, "arch", scripts_path)
@@ -735,9 +733,9 @@
     feature_url = find_feature_url(giturl)
 
     feature_cmd = "wget -q -O - " + feature_url
-    tmp = subprocess.Popen(feature_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(feature_cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
-    print "The current set of kernel features available to %s is:\n" % machine
+    print("The current set of kernel features available to %s is:\n" % machine)
 
     if tmp:
         tmpline = tmp.split("\n")
@@ -754,9 +752,9 @@
                 feature_type = feature_def[0].strip()
                 feature = feature_def[1].strip()
                 desc = get_feature_desc(giturl, feature)
-                print "%s: %s" % (feature, desc)
+                print("%s: %s" % (feature, desc))
 
-    print "[local]"
+    print("[local]")
 
     print_feature_descs(layer, "cfg")
     print_feature_descs(layer, "features")
@@ -786,7 +784,7 @@
     """
     feature_desc_url = find_feature_desc_url(git_url, feature)
     feature_desc_cmd = "wget -q -O - " + feature_desc_url
-    tmp = subprocess.Popen(feature_desc_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(feature_desc_cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     return find_feature_desc(tmp.split("\n"))
 
@@ -800,7 +798,7 @@
 
     kernel = find_current_kernel(layer, machine)
     if not kernel:
-        print "Couldn't determine the kernel for this BSP, exiting."
+        print("Couldn't determine the kernel for this BSP, exiting.")
         sys.exit(1)
 
     context = create_context(machine, "arch", scripts_path)
@@ -810,7 +808,7 @@
 
     desc = get_feature_desc(giturl, feature)
 
-    print desc
+    print(desc)
 
 
 def check_feature_name(feature_name):
@@ -818,11 +816,11 @@
     Sanity-check the feature name for create/destroy.  Return False if not OK.
     """
     if not feature_name.endswith(".scc"):
-        print "Invalid feature name (must end with .scc) [%s], exiting" % feature_name
+        print("Invalid feature name (must end with .scc) [%s], exiting" % feature_name)
         return False
 
     if "/" in feature_name:
-        print "Invalid feature name (don't specify directory) [%s], exiting" % feature_name
+        print("Invalid feature name (don't specify directory) [%s], exiting" % feature_name)
         return False
 
     return True
@@ -836,11 +834,11 @@
         return False
 
     if feature_items[1].endswith(".patch") or feature_items[1].startswith("CONFIG_"):
-        print "Missing description and/or compatibilty [%s], exiting" % feature_items[1]
+        print("Missing description and/or compatibilty [%s], exiting" % feature_items[1])
         return False
 
     if feature_items[2].endswith(".patch") or feature_items[2].startswith("CONFIG_"):
-        print "Missing description and/or compatibility [%s], exiting" % feature_items[1]
+        print("Missing description and/or compatibility [%s], exiting" % feature_items[1])
         return False
 
     return True
@@ -868,7 +866,7 @@
             if ("=y" in item or "=m" in item):
                 cfg_items.append(item)
         else:
-            print "Invalid feature item (must be .patch or CONFIG_*) [%s], exiting" % item
+            print("Invalid feature item (must be .patch or CONFIG_*) [%s], exiting" % item)
             sys.exit(1)
 
     feature_dirname = "cfg"
@@ -877,7 +875,7 @@
 
     filesdir = find_filesdir(scripts_path, machine)
     if not filesdir:
-        print "Couldn't add feature (%s), no 'files' dir found" % feature
+        print("Couldn't add feature (%s), no 'files' dir found" % feature)
         sys.exit(1)
 
     featdir = os.path.join(filesdir, feature_dirname)
@@ -886,7 +884,7 @@
 
     for patch in patches:
         if not os.path.isfile(patch):
-            print "Couldn't find patch (%s), exiting" % patch
+            print("Couldn't find patch (%s), exiting" % patch)
             sys.exit(1)
         basename = os.path.basename(patch)
         featdir_patch = os.path.join(featdir, basename)
@@ -910,8 +908,8 @@
     new_feature_file.write("kconf non-hardware " + feature_basename + ".cfg\n")
     new_feature_file.close()
 
-    print "Added feature:"
-    print "\t%s" % feature_dirname + "/" + feature
+    print("Added feature:")
+    print("\t%s" % feature_dirname + "/" + feature)
 
 
 def feature_in_use(scripts_path, machine, feature):
@@ -949,18 +947,18 @@
 
     if feature_in_use(scripts_path, machine, "features/" + feature) or \
             feature_in_use(scripts_path, machine, "cfg/" + feature):
-        print "Feature %s is in use (use 'feature rm' to un-use it first), exiting" % feature
+        print("Feature %s is in use (use 'feature rm' to un-use it first), exiting" % feature)
         sys.exit(1)
 
     filesdir = find_filesdir(scripts_path, machine)
     if not filesdir:
-        print "Couldn't destroy feature (%s), no 'files' dir found" % feature
+        print("Couldn't destroy feature (%s), no 'files' dir found" % feature)
         sys.exit(1)
 
     feature_dirname = "features"
     featdir = os.path.join(filesdir, feature_dirname)
     if not os.path.exists(featdir):
-        print "Couldn't find feature directory (%s)" % feature_dirname
+        print("Couldn't find feature directory (%s)" % feature_dirname)
         sys.exit(1)
 
     feature_fqn = os.path.join(featdir, feature)
@@ -968,11 +966,11 @@
         feature_dirname = "cfg"
         featdir = os.path.join(filesdir, feature_dirname)
         if not os.path.exists(featdir):
-            print "Couldn't find feature directory (%s)" % feature_dirname
+            print("Couldn't find feature directory (%s)" % feature_dirname)
             sys.exit(1)
         feature_fqn = os.path.join(featdir, feature_filename)
         if not os.path.exists(feature_fqn):
-            print "Couldn't find feature (%s)" % feature
+            print("Couldn't find feature (%s)" % feature)
             sys.exit(1)
 
     f = open(feature_fqn, "r")
@@ -989,8 +987,8 @@
 
     feature_remove(scripts_path, machine, feature)
 
-    print "Removed feature:"
-    print "\t%s" % feature_dirname + "/" + feature
+    print("Removed feature:")
+    print("\t%s" % feature_dirname + "/" + feature)
 
 
 def base_branches(context):
@@ -999,10 +997,10 @@
     """
     giturl = find_giturl(context)
 
-    print "Getting branches from remote repo %s..." % giturl
+    print("Getting branches from remote repo %s..." % giturl)
 
     gitcmd = "git ls-remote %s *heads* 2>&1" % (giturl)
-    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     branches = []
 
@@ -1029,10 +1027,10 @@
     """
     giturl = find_giturl(context)
 
-    print "Getting branches from remote repo %s..." % giturl
+    print("Getting branches from remote repo %s..." % giturl)
 
     gitcmd = "git ls-remote %s *heads* 2>&1" % (giturl)
-    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     branches = []
 
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc
index 405972d..8a88157 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc
@@ -3,7 +3,7 @@
 
 define KARCH arm
 
-include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
+include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}} nopatch
 {{ if need_new_kbranch == "y": }}
 define KTYPE {{=new_kbranch}}
 branch {{=machine}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall
index 00cf360..0120ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall
@@ -1,5 +1,5 @@
 {{ if kernel_choice != "custom": }}
-{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.4) kernel? (y/n)" default:"y"}}
+{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.8) kernel? (y/n)" default:"y"}}
 
 {{ if kernel_choice != "custom" and use_default_kernel == "n": }}
-{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.4"}}
+{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.8"}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
new file mode 100644
index 0000000..5fb45d9
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
@@ -0,0 +1,33 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-tiny.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-patches.scc \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..7c0df8b
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,32 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-standard.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf
index d5abe4f..4745c1c 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf
@@ -33,7 +33,7 @@
 
 {{ input type:"boolean" name:"xserver" prio:"50" msg:"Do you need support for X? (y/n)" default:"y" }}
 
-{{ if xserver == "y" and (kernel_choice == "linux-yocto_4.4" or kernel_choice == "linux-yocto_4.1"): }}
+{{ if xserver == "y": }}
 {{ input type:"choicelist" name:"xserver_choice" prio:"50" msg:"Please select an xserver for this machine:" default:"xserver_vesa" }}
 {{ input type:"choice" val:"xserver_vesa" msg:"VESA xserver support" }}
 {{ input type:"choice" val:"xserver_i915" msg:"i915 xserver support" }}
@@ -41,15 +41,7 @@
 {{ input type:"choice" val:"xserver_fbdev" msg:"fbdev xserver support" }}
 {{ input type:"choice" val:"xserver_modesetting" msg:"modesetting xserver support" }}
 
-{{ if xserver == "y" and kernel_choice == "custom": }}
-{{ input type:"choicelist" name:"xserver_choice" prio:"50" msg:"Please select an xserver for this machine:" default:"xserver_vesa" }}
-{{ input type:"choice" val:"xserver_vesa" msg:"VESA xserver support" }}
-{{ input type:"choice" val:"xserver_i915" msg:"i915 xserver support" }}
-{{ input type:"choice" val:"xserver_i965" msg:"i965 xserver support" }}
-{{ input type:"choice" val:"xserver_fbdev" msg:"fbdev xserver support" }}
-{{ input type:"choice" val:"xserver_modesetting" msg:"modesetting xserver support" }}
-
-{{ if xserver == "y" and kernel_choice != "linux-yocto_4.4" and kernel_choice != "linux-yocto_4.1" and kernel_choice != "custom": xserver_choice = "xserver_i915" }}
+{{ if xserver == "y" and kernel_choice != "linux-yocto_4.8" and kernel_choice != "linux-yocto_4.4" and kernel_choice != "linux-yocto_4.1" and kernel_choice != "custom": xserver_choice = "xserver_i915" }}
 
 {{ if xserver == "y": }}
 XSERVER ?= "${XSERVER_X86_BASE} \
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc
index 67a54be..38d1ca5 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc
@@ -3,7 +3,7 @@
 
 define KARCH i386
 
-include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
+include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}} nopatch
 {{ if need_new_kbranch == "y": }}
 define KTYPE {{=new_kbranch}}
 branch {{=machine}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall
index 00cf360..0120ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall
@@ -1,5 +1,5 @@
 {{ if kernel_choice != "custom": }}
-{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.4) kernel? (y/n)" default:"y"}}
+{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.8) kernel? (y/n)" default:"y"}}
 
 {{ if kernel_choice != "custom" and use_default_kernel == "n": }}
-{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.4"}}
+{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.8"}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
new file mode 100644
index 0000000..5fb45d9
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
@@ -0,0 +1,33 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-tiny.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-patches.scc \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..137d8fa
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,32 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-standard.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc
index 7c9dc52..b34f3d3 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc
@@ -3,7 +3,7 @@
 
 define KARCH mips
 
-include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
+include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}} nopatch
 {{ if need_new_kbranch == "y": }}
 define KTYPE {{=new_kbranch}}
 branch {{=machine}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall
index 00cf360..0120ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall
@@ -1,5 +1,5 @@
 {{ if kernel_choice != "custom": }}
-{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.4) kernel? (y/n)" default:"y"}}
+{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.8) kernel? (y/n)" default:"y"}}
 
 {{ if kernel_choice != "custom" and use_default_kernel == "n": }}
-{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.4"}}
+{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.8"}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
new file mode 100644
index 0000000..5fb45d9
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
@@ -0,0 +1,33 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-tiny.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-patches.scc \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..7c0df8b
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,32 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-standard.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/files/machine-standard.scc b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/files/machine-standard.scc
index 7c9dc52..b34f3d3 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/files/machine-standard.scc
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/files/machine-standard.scc
@@ -3,7 +3,7 @@
 
 define KARCH mips
 
-include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
+include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}} nopatch
 {{ if need_new_kbranch == "y": }}
 define KTYPE {{=new_kbranch}}
 branch {{=machine}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/kernel-list.noinstall b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/kernel-list.noinstall
index 00cf360..0120ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/kernel-list.noinstall
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/kernel-list.noinstall
@@ -1,5 +1,5 @@
 {{ if kernel_choice != "custom": }}
-{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.4) kernel? (y/n)" default:"y"}}
+{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.8) kernel? (y/n)" default:"y"}}
 
 {{ if kernel_choice != "custom" and use_default_kernel == "n": }}
-{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.4"}}
+{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.8"}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
new file mode 100644
index 0000000..5fb45d9
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
@@ -0,0 +1,33 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-tiny.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-patches.scc \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..accf9d5
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/mips64/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,32 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/edgerouter" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/edgerouter" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-standard.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc
index 89b344f..c166fcd 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc
@@ -3,7 +3,7 @@
 
 define KARCH powerpc
 
-include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
+include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}} nopatch
 {{ if need_new_kbranch == "y": }}
 define KTYPE {{=new_kbranch}}
 branch {{=machine}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall
index 00cf360..0120ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall
@@ -1,5 +1,5 @@
 {{ if kernel_choice != "custom": }}
-{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.4) kernel? (y/n)" default:"y"}}
+{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.8) kernel? (y/n)" default:"y"}}
 
 {{ if kernel_choice != "custom" and use_default_kernel == "n": }}
-{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.4"}}
+{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.8"}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
new file mode 100644
index 0000000..5fb45d9
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
@@ -0,0 +1,33 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-tiny.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-patches.scc \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..7c0df8b
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,32 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-standard.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc
index 14554da..43cf642 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc
@@ -4,15 +4,15 @@
 define KARCH {{=qemuarch}}
 
 {{ if qemuarch == "i386" or qemuarch == "x86_64": }}
-include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
+include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}} nopatch
 {{ if qemuarch == "arm": }}
-include bsp/arm-versatile-926ejs/arm-versatile-926ejs-standard
+include bsp/arm-versatile-926ejs/arm-versatile-926ejs-standard nopatch
 {{ if qemuarch == "powerpc": }}
-include bsp/qemu-ppc32/qemu-ppc32-standard
+include bsp/qemu-ppc32/qemu-ppc32-standard nopatch
 {{ if qemuarch == "mips": }}
-include bsp/mti-malta32/mti-malta32-be-standard
+include bsp/mti-malta32/mti-malta32-be-standard nopatch
 {{ if qemuarch == "mips64": }}
-include bsp/mti-malta64/mti-malta64-be-standard
+include bsp/mti-malta64/mti-malta64-be-standard nopatch
 {{ if need_new_kbranch == "y": }}
 define KTYPE {{=new_kbranch}}
 branch {{=machine}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg
index d560784..3fa4ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg
@@ -1 +1,3 @@
-# yocto-bsp-filename {{=machine}}.cfg
\ No newline at end of file
+# yocto-bsp-filename {{=machine}}.cfg
+{{ if qemuarch == "i386": }}
+# CONFIG_64BIT is not set
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall
index 00cf360..0120ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall
@@ -1,5 +1,5 @@
 {{ if kernel_choice != "custom": }}
-{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.4) kernel? (y/n)" default:"y"}}
+{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.8) kernel? (y/n)" default:"y"}}
 
 {{ if kernel_choice != "custom" and use_default_kernel == "n": }}
-{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.4"}}
+{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.8"}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
new file mode 100644
index 0000000..c1635d6
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
@@ -0,0 +1,62 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/common-pc" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "mips64": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "mips64": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-tiny.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-patches.scc \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..e8c3fc8
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,61 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base your new BSP branch on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose an existing machine branch to use for this BSP:" default:"standard/arm-versatile-926ejs" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/qemuppc" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard"  prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard"  prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/mti-malta32" }}
+
+{{ if need_new_kbranch == "n" and qemuarch == "mips64": }}
+{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips64" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/mti-malta64" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "y" and qemuarch == "mips64": }}
+{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips64" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-standard.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc
index 9c9cc90..a2b2910 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc
@@ -3,7 +3,7 @@
 
 define KARCH x86_64
 
-include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
+include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}} nopatch
 {{ if need_new_kbranch == "y": }}
 define KTYPE {{=new_kbranch}}
 branch {{=machine}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall
index 00cf360..0120ed0 100644
--- a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall
@@ -1,5 +1,5 @@
 {{ if kernel_choice != "custom": }}
-{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.4) kernel? (y/n)" default:"y"}}
+{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (4.8) kernel? (y/n)" default:"y"}}
 
 {{ if kernel_choice != "custom" and use_default_kernel == "n": }}
-{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.4"}}
+{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_4.8"}}
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
new file mode 100644
index 0000000..5fb45d9
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_4.8.bbappend
@@ -0,0 +1,33 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-tiny.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-patches.scc \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_4.8.bbappend b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_4.8.bbappend
new file mode 100644
index 0000000..7c0df8b
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_4.8.bbappend
@@ -0,0 +1,32 @@
+# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_4.8": }} this
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
+
+{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
+
+{{ if need_new_kbranch == "y": }}
+{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
+
+{{ if need_new_kbranch == "n": }}
+KBRANCH_{{=machine}}  = "{{=existing_kbranch}}"
+
+{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
+{{ if smp == "y": }}
+KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
+
+SRC_URI += "file://{{=machine}}-standard.scc \
+            file://{{=machine}}-user-config.cfg \
+            file://{{=machine}}-user-features.scc \
+           "
+
+# replace these SRCREVs with the real commit ids once you've had
+# the appropriate changes committed to the upstream linux-yocto repo
+SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "${AUTOREV}"
+#LINUX_VERSION = "4.8"
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/__init__.py b/import-layers/yocto-poky/scripts/lib/devtool/__init__.py
index ff97dfc..e675133 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/__init__.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/__init__.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Development tool - utility functions for plugins
 #
@@ -26,10 +26,11 @@
 
 logger = logging.getLogger('devtool')
 
-
 class DevtoolError(Exception):
     """Exception for handling devtool errors"""
-    pass
+    def __init__(self, message, exitcode=1):
+        super(DevtoolError, self).__init__(message)
+        self.exitcode = exitcode
 
 
 def exec_build_env_command(init_path, builddir, cmd, watch=False, **options):
@@ -59,7 +60,7 @@
 def exec_watch(cmd, **options):
     """Run program with stdout shown on sys.stdout"""
     import bb
-    if isinstance(cmd, basestring) and not "shell" in options:
+    if isinstance(cmd, str) and not "shell" in options:
         options["shell"] = True
 
     process = subprocess.Popen(
@@ -69,6 +70,7 @@
     buf = ''
     while True:
         out = process.stdout.read(1)
+        out = out.decode('utf-8')
         if out:
             sys.stdout.write(out)
             sys.stdout.flush()
@@ -144,8 +146,7 @@
                             not path.startswith(config.workspace_path)]
     else:
         append_files = None
-    return oe.recipeutils.parse_recipe(recipefile, append_files,
-                                       tinfoil.config_data)
+    return oe.recipeutils.parse_recipe(tinfoil.cooker, recipefile, append_files)
 
 def check_workspace_recipe(workspace, pn, checksrc=True, bbclassextend=False):
     """
@@ -155,7 +156,7 @@
 
     workspacepn = pn
 
-    for recipe, value in workspace.iteritems():
+    for recipe, value in workspace.items():
         if recipe == pn:
             break
         if bbclassextend:
@@ -195,15 +196,18 @@
         b_is_s = False
     return b_is_s
 
-def setup_git_repo(repodir, version, devbranch, basetag='devtool-base'):
+def setup_git_repo(repodir, version, devbranch, basetag='devtool-base', d=None):
     """
     Set up the git repository for the source tree
     """
     import bb.process
+    import oe.patch
     if not os.path.exists(os.path.join(repodir, '.git')):
         bb.process.run('git init', cwd=repodir)
         bb.process.run('git add .', cwd=repodir)
-        commit_cmd = ['git', 'commit', '-q']
+        commit_cmd = ['git']
+        oe.patch.GitApplyTree.gitCommandUserOptions(commit_cmd, d=d)
+        commit_cmd += ['commit', '-q']
         stdout, _ = bb.process.run('git status --porcelain', cwd=repodir)
         if not stdout:
             commit_cmd.append('--allow-empty')
@@ -255,3 +259,32 @@
             elif variant in ['native', 'cross', 'crosssdk']:
                 targets.append('%s-%s' % (pn, variant))
     return targets
+
+def ensure_npm(config, basepath, fixed_setup=False):
+    """
+    Ensure that npm is available and either build it or show a
+    reasonable error message
+    """
+    tinfoil = setup_tinfoil(config_only=True, basepath=basepath)
+    try:
+        nativepath = tinfoil.config_data.getVar('STAGING_BINDIR_NATIVE', True)
+    finally:
+        tinfoil.shutdown()
+
+    npmpath = os.path.join(nativepath, 'npm')
+    if not os.path.exists(npmpath):
+        logger.info('Building nodejs-native')
+        try:
+            exec_build_env_command(config.init_path, basepath,
+                                'bitbake -q nodejs-native', watch=True)
+        except bb.process.ExecutionError as e:
+            if "Nothing PROVIDES 'nodejs-native'" in e.stdout:
+                if fixed_setup:
+                    msg = 'nodejs-native is required for npm but is not available within this SDK'
+                else:
+                    msg = 'nodejs-native is required for npm but is not available - you will likely need to add a layer that provides nodejs'
+                raise DevtoolError(msg)
+            else:
+                raise
+        if not os.path.exists(npmpath):
+            raise DevtoolError('Built nodejs-native but npm binary still could not be found at %s' % npmpath)
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/build.py b/import-layers/yocto-poky/scripts/lib/devtool/build.py
index 48f6fe1..6be549d 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/build.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/build.py
@@ -27,7 +27,7 @@
 
 
 def _set_file_values(fn, values):
-    remaining = values.keys()
+    remaining = list(values.keys())
 
     def varfunc(varname, origvalue, op, newlines):
         newvalue = values.get(varname, origvalue)
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/build_image.py b/import-layers/yocto-poky/scripts/lib/devtool/build_image.py
index e51d766..ae75511 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/build_image.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/build_image.py
@@ -18,6 +18,7 @@
 """Devtool plugin containing the build-image subcommand."""
 
 import os
+import errno
 import logging
 
 from bb.process import ExecutionError
@@ -34,7 +35,7 @@
     for recipe in workspace:
         data = parse_recipe(config, tinfoil, recipe, True)
         if 'class-target' in data.getVar('OVERRIDES', True).split(':'):
-            if recipe in data.getVar('PACKAGES', True):
+            if recipe in data.getVar('PACKAGES', True).split():
                 result.append(recipe)
             else:
                 logger.warning("Skipping recipe %s as it doesn't produce a "
@@ -72,70 +73,89 @@
     return result
 
 def build_image_task(config, basepath, workspace, image, add_packages=None, task=None, extra_append=None):
-    appendfile = os.path.join(config.workspace_path, 'appends',
-                              '%s.bbappend' % image)
-
     # remove <image>.bbappend to make sure setup_tinfoil doesn't
     # break because of it
-    if os.path.isfile(appendfile):
-        os.unlink(appendfile)
+    target_basename = config.get('SDK', 'target_basename', '')
+    if target_basename:
+        appendfile = os.path.join(config.workspace_path, 'appends',
+                                  '%s.bbappend' % target_basename)
+        try:
+            os.unlink(appendfile)
+        except OSError as exc:
+            if exc.errno != errno.ENOENT:
+                raise
 
     tinfoil = setup_tinfoil(basepath=basepath)
-    rd = parse_recipe(config, tinfoil, image, True)
-    if not rd:
-        # Error already shown
-        return (1, None)
-    if not bb.data.inherits_class('image', rd):
-        raise TargetNotImageError()
-
-    outputdir = None
     try:
-        if workspace or add_packages:
-            if add_packages:
-                packages = add_packages
-            else:
-                packages = _get_packages(tinfoil, workspace, config)
-        else:
-            packages = None
-        if not task:
-            if not packages and not add_packages and workspace:
-                logger.warning('No recipes in workspace, building image %s unmodified', image)
-            elif not packages:
-                logger.warning('No packages to add, building image %s unmodified', image)
+        rd = parse_recipe(config, tinfoil, image, True)
+        if not rd:
+            # Error already shown
+            return (1, None)
+        if not bb.data.inherits_class('image', rd):
+            raise TargetNotImageError()
 
-        if packages or extra_append:
-            bb.utils.mkdirhier(os.path.dirname(appendfile))
-            with open(appendfile, 'w') as afile:
-                if packages:
-                    # include packages from workspace recipes into the image
-                    afile.write('IMAGE_INSTALL_append = " %s"\n' % ' '.join(packages))
-                    if not task:
-                        logger.info('Building image %s with the following '
-                                    'additional packages: %s', image, ' '.join(packages))
-                if extra_append:
-                    for line in extra_append:
-                        afile.write('%s\n' % line)
+        # Get the actual filename used and strip the .bb and full path
+        target_basename = rd.getVar('FILE', True)
+        target_basename = os.path.splitext(os.path.basename(target_basename))[0]
+        config.set('SDK', 'target_basename', target_basename)
+        config.write()
 
-        if task in ['populate_sdk', 'populate_sdk_ext']:
-            outputdir = rd.getVar('SDK_DEPLOY', True)
-        else:
-            outputdir = rd.getVar('DEPLOY_DIR_IMAGE', True)
+        appendfile = os.path.join(config.workspace_path, 'appends',
+                                '%s.bbappend' % target_basename)
 
-        tinfoil.shutdown()
-
-        options = ''
-        if task:
-            options += '-c %s' % task
-
-        # run bitbake to build image (or specified task)
+        outputdir = None
         try:
-            exec_build_env_command(config.init_path, basepath,
-                                   'bitbake %s %s' % (options, image), watch=True)
-        except ExecutionError as err:
-            return (err.exitcode, None)
+            if workspace or add_packages:
+                if add_packages:
+                    packages = add_packages
+                else:
+                    packages = _get_packages(tinfoil, workspace, config)
+            else:
+                packages = None
+            if not task:
+                if not packages and not add_packages and workspace:
+                    logger.warning('No recipes in workspace, building image %s unmodified', image)
+                elif not packages:
+                    logger.warning('No packages to add, building image %s unmodified', image)
+
+            if packages or extra_append:
+                bb.utils.mkdirhier(os.path.dirname(appendfile))
+                with open(appendfile, 'w') as afile:
+                    if packages:
+                        # include packages from workspace recipes into the image
+                        afile.write('IMAGE_INSTALL_append = " %s"\n' % ' '.join(packages))
+                        if not task:
+                            logger.info('Building image %s with the following '
+                                        'additional packages: %s', image, ' '.join(packages))
+                    if extra_append:
+                        for line in extra_append:
+                            afile.write('%s\n' % line)
+
+            if task in ['populate_sdk', 'populate_sdk_ext']:
+                outputdir = rd.getVar('SDK_DEPLOY', True)
+            else:
+                outputdir = rd.getVar('DEPLOY_DIR_IMAGE', True)
+
+            tmp_tinfoil = tinfoil
+            tinfoil = None
+            tmp_tinfoil.shutdown()
+
+            options = ''
+            if task:
+                options += '-c %s' % task
+
+            # run bitbake to build image (or specified task)
+            try:
+                exec_build_env_command(config.init_path, basepath,
+                                    'bitbake %s %s' % (options, image), watch=True)
+            except ExecutionError as err:
+                return (err.exitcode, None)
+        finally:
+            if os.path.isfile(appendfile):
+                os.unlink(appendfile)
     finally:
-        if os.path.isfile(appendfile):
-            os.unlink(appendfile)
+        if tinfoil:
+            tinfoil.shutdown()
     return (0, outputdir)
 
 
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/deploy.py b/import-layers/yocto-poky/scripts/lib/devtool/deploy.py
index 66644cc..c4c7bf6 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/deploy.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/deploy.py
@@ -85,7 +85,7 @@
             lines.append('do')
             lines.append('    checkpath=`dirname "$checkpath"`')
             lines.append('done')
-            lines.append('freespace=`df -P $checkpath | sed "1d" | awk \'{ print $4 }\'`')
+            lines.append(r'freespace=$(df -P $checkpath | sed -nre "s/^(\S+\s+){3}([0-9]+).*/\2/p")')
             # First line of the file is the total space
             lines.append('total=`head -n1 $3`')
             lines.append('if [ $total -gt $freespace ] ; then')
@@ -155,83 +155,86 @@
 
     tinfoil = setup_tinfoil(basepath=basepath)
     try:
-        rd = oe.recipeutils.parse_recipe_simple(tinfoil.cooker, args.recipename, tinfoil.config_data)
-    except Exception as e:
-        raise DevtoolError('Exception parsing recipe %s: %s' %
-                           (args.recipename, e))
-    recipe_outdir = rd.getVar('D', True)
-    if not os.path.exists(recipe_outdir) or not os.listdir(recipe_outdir):
-        raise DevtoolError('No files to deploy - have you built the %s '
-                           'recipe? If so, the install step has not installed '
-                           'any files.' % args.recipename)
+        try:
+            rd = oe.recipeutils.parse_recipe_simple(tinfoil.cooker, args.recipename, tinfoil.config_data)
+        except Exception as e:
+            raise DevtoolError('Exception parsing recipe %s: %s' %
+                            (args.recipename, e))
+        recipe_outdir = rd.getVar('D', True)
+        if not os.path.exists(recipe_outdir) or not os.listdir(recipe_outdir):
+            raise DevtoolError('No files to deploy - have you built the %s '
+                            'recipe? If so, the install step has not installed '
+                            'any files.' % args.recipename)
 
-    filelist = []
-    ftotalsize = 0
-    for root, _, files in os.walk(recipe_outdir):
-        for fn in files:
-            # Get the size in kiB (since we'll be comparing it to the output of du -k)
-            # MUST use lstat() here not stat() or getfilesize() since we don't want to
-            # dereference symlinks
-            fsize = int(math.ceil(float(os.lstat(os.path.join(root, fn)).st_size)/1024))
-            ftotalsize += fsize
-            # The path as it would appear on the target
-            fpath = os.path.join(destdir, os.path.relpath(root, recipe_outdir), fn)
-            filelist.append((fpath, fsize))
+        filelist = []
+        ftotalsize = 0
+        for root, _, files in os.walk(recipe_outdir):
+            for fn in files:
+                # Get the size in kiB (since we'll be comparing it to the output of du -k)
+                # MUST use lstat() here not stat() or getfilesize() since we don't want to
+                # dereference symlinks
+                fsize = int(math.ceil(float(os.lstat(os.path.join(root, fn)).st_size)/1024))
+                ftotalsize += fsize
+                # The path as it would appear on the target
+                fpath = os.path.join(destdir, os.path.relpath(root, recipe_outdir), fn)
+                filelist.append((fpath, fsize))
 
-    if args.dry_run:
-        print('Files to be deployed for %s on target %s:' % (args.recipename, args.target))
-        for item, _ in filelist:
-            print('  %s' % item)
-        return 0
+        if args.dry_run:
+            print('Files to be deployed for %s on target %s:' % (args.recipename, args.target))
+            for item, _ in filelist:
+                print('  %s' % item)
+            return 0
 
 
-    extraoptions = ''
-    if args.no_host_check:
-        extraoptions += '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
-    if not args.show_status:
-        extraoptions += ' -q'
+        extraoptions = ''
+        if args.no_host_check:
+            extraoptions += '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
+        if not args.show_status:
+            extraoptions += ' -q'
 
-    # In order to delete previously deployed files and have the manifest file on
-    # the target, we write out a shell script and then copy it to the target
-    # so we can then run it (piping tar output to it).
-    # (We cannot use scp here, because it doesn't preserve symlinks.)
-    tmpdir = tempfile.mkdtemp(prefix='devtool')
-    try:
-        tmpscript = '/tmp/devtool_deploy.sh'
-        tmpfilelist = os.path.join(os.path.dirname(tmpscript), 'devtool_deploy.list')
-        shellscript = _prepare_remote_script(deploy=True,
-                                             verbose=args.show_status,
-                                             nopreserve=args.no_preserve,
-                                             nocheckspace=args.no_check_space)
-        # Write out the script to a file
-        with open(os.path.join(tmpdir, os.path.basename(tmpscript)), 'w') as f:
-            f.write(shellscript)
-        # Write out the file list
-        with open(os.path.join(tmpdir, os.path.basename(tmpfilelist)), 'w') as f:
-            f.write('%d\n' % ftotalsize)
-            for fpath, fsize in filelist:
-                f.write('%s %d\n' % (fpath, fsize))
-        # Copy them to the target
-        ret = subprocess.call("scp %s %s/* %s:%s" % (extraoptions, tmpdir, args.target, os.path.dirname(tmpscript)), shell=True)
+        # In order to delete previously deployed files and have the manifest file on
+        # the target, we write out a shell script and then copy it to the target
+        # so we can then run it (piping tar output to it).
+        # (We cannot use scp here, because it doesn't preserve symlinks.)
+        tmpdir = tempfile.mkdtemp(prefix='devtool')
+        try:
+            tmpscript = '/tmp/devtool_deploy.sh'
+            tmpfilelist = os.path.join(os.path.dirname(tmpscript), 'devtool_deploy.list')
+            shellscript = _prepare_remote_script(deploy=True,
+                                                verbose=args.show_status,
+                                                nopreserve=args.no_preserve,
+                                                nocheckspace=args.no_check_space)
+            # Write out the script to a file
+            with open(os.path.join(tmpdir, os.path.basename(tmpscript)), 'w') as f:
+                f.write(shellscript)
+            # Write out the file list
+            with open(os.path.join(tmpdir, os.path.basename(tmpfilelist)), 'w') as f:
+                f.write('%d\n' % ftotalsize)
+                for fpath, fsize in filelist:
+                    f.write('%s %d\n' % (fpath, fsize))
+            # Copy them to the target
+            ret = subprocess.call("scp %s %s/* %s:%s" % (extraoptions, tmpdir, args.target, os.path.dirname(tmpscript)), shell=True)
+            if ret != 0:
+                raise DevtoolError('Failed to copy script to %s - rerun with -s to '
+                                'get a complete error message' % args.target)
+        finally:
+            shutil.rmtree(tmpdir)
+
+        # Now run the script
+        ret = exec_fakeroot(rd, 'tar cf - . | ssh %s %s \'sh %s %s %s %s\'' % (extraoptions, args.target, tmpscript, args.recipename, destdir, tmpfilelist), cwd=recipe_outdir, shell=True)
         if ret != 0:
-            raise DevtoolError('Failed to copy script to %s - rerun with -s to '
-                            'get a complete error message' % args.target)
+            raise DevtoolError('Deploy failed - rerun with -s to get a complete '
+                            'error message')
+
+        logger.info('Successfully deployed %s' % recipe_outdir)
+
+        files_list = []
+        for root, _, files in os.walk(recipe_outdir):
+            for filename in files:
+                filename = os.path.relpath(os.path.join(root, filename), recipe_outdir)
+                files_list.append(os.path.join(destdir, filename))
     finally:
-        shutil.rmtree(tmpdir)
-
-    # Now run the script
-    ret = exec_fakeroot(rd, 'tar cf - . | ssh %s %s \'sh %s %s %s %s\'' % (extraoptions, args.target, tmpscript, args.recipename, destdir, tmpfilelist), cwd=recipe_outdir, shell=True)
-    if ret != 0:
-        raise DevtoolError('Deploy failed - rerun with -s to get a complete '
-                           'error message')
-
-    logger.info('Successfully deployed %s' % recipe_outdir)
-
-    files_list = []
-    for root, _, files in os.walk(recipe_outdir):
-        for filename in files:
-            filename = os.path.relpath(os.path.join(root, filename), recipe_outdir)
-            files_list.append(os.path.join(destdir, filename))
+        tinfoil.shutdown()
 
     return 0
 
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/runqemu.py b/import-layers/yocto-poky/scripts/lib/devtool/runqemu.py
index daee7fb..ae25cee 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/runqemu.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/runqemu.py
@@ -30,9 +30,11 @@
     """Entry point for the devtool 'runqemu' subcommand"""
 
     tinfoil = setup_tinfoil(config_only=True, basepath=basepath)
-    machine = tinfoil.config_data.getVar('MACHINE', True)
-    bindir_native = tinfoil.config_data.getVar('STAGING_BINDIR_NATIVE', True)
-    tinfoil.shutdown()
+    try:
+        machine = tinfoil.config_data.getVar('MACHINE', True)
+        bindir_native = tinfoil.config_data.getVar('STAGING_BINDIR_NATIVE', True)
+    finally:
+        tinfoil.shutdown()
 
     if not glob.glob(os.path.join(bindir_native, 'qemu-system-*')):
         raise DevtoolError('QEMU is not available within this SDK')
@@ -46,7 +48,12 @@
         raise DevtoolError('Unable to determine image name to run, please specify one')
 
     try:
-        exec_build_env_command(config.init_path, basepath, 'runqemu %s %s %s' % (machine, imagename, " ".join(args.args)), watch=True)
+        # FIXME runqemu assumes that if OECORE_NATIVE_SYSROOT is set then it shouldn't
+        # run bitbake to find out the values of various environment variables, which
+        # isn't the case for the extensible SDK. Work around it for now.
+        newenv = dict(os.environ)
+        newenv.pop('OECORE_NATIVE_SYSROOT', '')
+        exec_build_env_command(config.init_path, basepath, 'runqemu %s %s %s' % (machine, imagename, " ".join(args.args)), watch=True, env=newenv)
     except bb.process.ExecutionError as e:
         # We've already seen the output since watch=True, so just ensure we return something to the user
         return e.exitcode
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/sdk.py b/import-layers/yocto-poky/scripts/lib/devtool/sdk.py
index 46fd12b..922277b 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/sdk.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/sdk.py
@@ -107,7 +107,7 @@
     return changedfiles
 
 def sdk_update(args, config, basepath, workspace):
-    # Fetch locked-sigs.inc file from remote/local destination
+    """Entry point for devtool sdk-update command"""
     updateserver = args.updateserver
     if not updateserver:
         updateserver = config.get('SDK', 'updateserver', '')
@@ -122,10 +122,9 @@
     else:
         logger.debug("Found conf/locked-sigs.inc in %s" % basepath)
 
-    if ':' in updateserver:
-        is_remote = True
-    else:
-        is_remote = False
+    if not '://' in updateserver:
+        logger.error("Update server must be a URL")
+        return -1
 
     layers_dir = os.path.join(basepath, 'layers')
     conf_dir = os.path.join(basepath, 'conf')
@@ -139,120 +138,85 @@
     finally:
         tinfoil.shutdown()
 
-    if not is_remote:
-        # devtool sdk-update /local/path/to/latest/sdk
-        new_locked_sig_file_path = os.path.join(updateserver, 'conf/locked-sigs.inc')
-        if not os.path.exists(new_locked_sig_file_path):
-            logger.error("%s doesn't exist or is not an extensible SDK" % updateserver)
-            return -1
-        else:
-            logger.debug("Found conf/locked-sigs.inc in %s" % updateserver)
-        update_dict = generate_update_dict(new_locked_sig_file_path, old_locked_sig_file_path)
-        logger.debug("update_dict = %s" % update_dict)
-        newsdk_path = updateserver
-        sstate_dir = os.path.join(newsdk_path, 'sstate-cache')
-        if not os.path.exists(sstate_dir):
-            logger.error("sstate-cache directory not found under %s" % newsdk_path)
-            return 1
-        sstate_objects = get_sstate_objects(update_dict, sstate_dir)
-        logger.debug("sstate_objects = %s" % sstate_objects)
-        if len(sstate_objects) == 0:
-            logger.info("No need to update.")
+    tmpsdk_dir = tempfile.mkdtemp()
+    try:
+        os.makedirs(os.path.join(tmpsdk_dir, 'conf'))
+        new_locked_sig_file_path = os.path.join(tmpsdk_dir, 'conf', 'locked-sigs.inc')
+        # Fetch manifest from server
+        tmpmanifest = os.path.join(tmpsdk_dir, 'conf', 'sdk-conf-manifest')
+        ret = subprocess.call("wget -q -O %s %s/conf/sdk-conf-manifest" % (tmpmanifest, updateserver), shell=True)
+        changedfiles = check_manifest(tmpmanifest, basepath)
+        if not changedfiles:
+            logger.info("Already up-to-date")
             return 0
-        logger.info("Installing sstate objects into %s", basepath)
-        install_sstate_objects(sstate_objects, updateserver.rstrip('/'), basepath)
-        logger.info("Updating configuration files")
-        new_conf_dir = os.path.join(updateserver, 'conf')
-        shutil.rmtree(conf_dir)
-        shutil.copytree(new_conf_dir, conf_dir)
-        logger.info("Updating layers")
-        new_layers_dir = os.path.join(updateserver, 'layers')
-        shutil.rmtree(layers_dir)
-        ret = subprocess.call("cp -a %s %s" % (new_layers_dir, layers_dir), shell=True)
-        if ret != 0:
-            logger.error("Copying %s to %s failed" % (new_layers_dir, layers_dir))
-            return ret
-    else:
-        # devtool sdk-update http://myhost/sdk
-        tmpsdk_dir = tempfile.mkdtemp()
-        try:
-            os.makedirs(os.path.join(tmpsdk_dir, 'conf'))
-            new_locked_sig_file_path = os.path.join(tmpsdk_dir, 'conf', 'locked-sigs.inc')
-            # Fetch manifest from server
-            tmpmanifest = os.path.join(tmpsdk_dir, 'conf', 'sdk-conf-manifest')
-            ret = subprocess.call("wget -q -O %s %s/conf/sdk-conf-manifest" % (tmpmanifest, updateserver), shell=True)
-            changedfiles = check_manifest(tmpmanifest, basepath)
-            if not changedfiles:
-                logger.info("Already up-to-date")
-                return 0
-            # Update metadata
-            logger.debug("Updating metadata via git ...")
-            #Check for the status before doing a fetch and reset
-            if os.path.exists(os.path.join(basepath, 'layers/.git')):
-                out = subprocess.check_output("git status --porcelain", shell=True, cwd=layers_dir)
-                if not out:
-                    ret = subprocess.call("git fetch --all; git reset --hard", shell=True, cwd=layers_dir)
-                else:
-                    logger.error("Failed to update metadata as there have been changes made to it. Aborting.");
-                    logger.error("Changed files:\n%s" % out);
-                    return -1
+        # Update metadata
+        logger.debug("Updating metadata via git ...")
+        #Check for the status before doing a fetch and reset
+        if os.path.exists(os.path.join(basepath, 'layers/.git')):
+            out = subprocess.check_output("git status --porcelain", shell=True, cwd=layers_dir)
+            if not out:
+                ret = subprocess.call("git fetch --all; git reset --hard", shell=True, cwd=layers_dir)
             else:
-                ret = -1
+                logger.error("Failed to update metadata as there have been changes made to it. Aborting.");
+                logger.error("Changed files:\n%s" % out);
+                return -1
+        else:
+            ret = -1
+        if ret != 0:
+            ret = subprocess.call("git clone %s/layers/.git" % updateserver, shell=True, cwd=tmpsdk_dir)
             if ret != 0:
-                ret = subprocess.call("git clone %s/layers/.git" % updateserver, shell=True, cwd=tmpsdk_dir)
-                if ret != 0:
-                    logger.error("Updating metadata via git failed")
-                    return ret
-            logger.debug("Updating conf files ...")
-            for changedfile in changedfiles:
-                ret = subprocess.call("wget -q -O %s %s/%s" % (changedfile, updateserver, changedfile), shell=True, cwd=tmpsdk_dir)
-                if ret != 0:
-                    logger.error("Updating %s failed" % changedfile)
-                    return ret
+                logger.error("Updating metadata via git failed")
+                return ret
+        logger.debug("Updating conf files ...")
+        for changedfile in changedfiles:
+            ret = subprocess.call("wget -q -O %s %s/%s" % (changedfile, updateserver, changedfile), shell=True, cwd=tmpsdk_dir)
+            if ret != 0:
+                logger.error("Updating %s failed" % changedfile)
+                return ret
 
-            # Check if UNINATIVE_CHECKSUM changed
-            uninative = False
-            if 'conf/local.conf' in changedfiles:
-                def read_uninative_checksums(fn):
-                    chksumitems = []
-                    with open(fn, 'r') as f:
-                        for line in f:
-                            if line.startswith('UNINATIVE_CHECKSUM'):
-                                splitline = re.split(r'[\[\]"\']', line)
-                                if len(splitline) > 3:
-                                    chksumitems.append((splitline[1], splitline[3]))
-                    return chksumitems
+        # Check if UNINATIVE_CHECKSUM changed
+        uninative = False
+        if 'conf/local.conf' in changedfiles:
+            def read_uninative_checksums(fn):
+                chksumitems = []
+                with open(fn, 'r') as f:
+                    for line in f:
+                        if line.startswith('UNINATIVE_CHECKSUM'):
+                            splitline = re.split(r'[\[\]"\']', line)
+                            if len(splitline) > 3:
+                                chksumitems.append((splitline[1], splitline[3]))
+                return chksumitems
 
-                oldsums = read_uninative_checksums(os.path.join(basepath, 'conf/local.conf'))
-                newsums = read_uninative_checksums(os.path.join(tmpsdk_dir, 'conf/local.conf'))
-                if oldsums != newsums:
-                    uninative = True
-                    for buildarch, chksum in newsums:
-                        uninative_file = os.path.join('downloads', 'uninative', chksum, '%s-nativesdk-libc.tar.bz2' % buildarch)
-                        mkdir(os.path.join(tmpsdk_dir, os.path.dirname(uninative_file)))
-                        ret = subprocess.call("wget -q -O %s %s/%s" % (uninative_file, updateserver, uninative_file), shell=True, cwd=tmpsdk_dir)
+            oldsums = read_uninative_checksums(os.path.join(basepath, 'conf/local.conf'))
+            newsums = read_uninative_checksums(os.path.join(tmpsdk_dir, 'conf/local.conf'))
+            if oldsums != newsums:
+                uninative = True
+                for buildarch, chksum in newsums:
+                    uninative_file = os.path.join('downloads', 'uninative', chksum, '%s-nativesdk-libc.tar.bz2' % buildarch)
+                    mkdir(os.path.join(tmpsdk_dir, os.path.dirname(uninative_file)))
+                    ret = subprocess.call("wget -q -O %s %s/%s" % (uninative_file, updateserver, uninative_file), shell=True, cwd=tmpsdk_dir)
 
-            # Ok, all is well at this point - move everything over
-            tmplayers_dir = os.path.join(tmpsdk_dir, 'layers')
-            if os.path.exists(tmplayers_dir):
-                shutil.rmtree(layers_dir)
-                shutil.move(tmplayers_dir, layers_dir)
-            for changedfile in changedfiles:
-                destfile = os.path.join(basepath, changedfile)
-                os.remove(destfile)
-                shutil.move(os.path.join(tmpsdk_dir, changedfile), destfile)
-            os.remove(os.path.join(conf_dir, 'sdk-conf-manifest'))
-            shutil.move(tmpmanifest, conf_dir)
-            if uninative:
-                shutil.rmtree(os.path.join(basepath, 'downloads', 'uninative'))
-                shutil.move(os.path.join(tmpsdk_dir, 'downloads', 'uninative'), os.path.join(basepath, 'downloads'))
+        # Ok, all is well at this point - move everything over
+        tmplayers_dir = os.path.join(tmpsdk_dir, 'layers')
+        if os.path.exists(tmplayers_dir):
+            shutil.rmtree(layers_dir)
+            shutil.move(tmplayers_dir, layers_dir)
+        for changedfile in changedfiles:
+            destfile = os.path.join(basepath, changedfile)
+            os.remove(destfile)
+            shutil.move(os.path.join(tmpsdk_dir, changedfile), destfile)
+        os.remove(os.path.join(conf_dir, 'sdk-conf-manifest'))
+        shutil.move(tmpmanifest, conf_dir)
+        if uninative:
+            shutil.rmtree(os.path.join(basepath, 'downloads', 'uninative'))
+            shutil.move(os.path.join(tmpsdk_dir, 'downloads', 'uninative'), os.path.join(basepath, 'downloads'))
 
-            if not sstate_mirrors:
-                with open(os.path.join(conf_dir, 'site.conf'), 'a') as f:
-                    f.write('SCONF_VERSION = "%s"\n' % site_conf_version)
-                    f.write('SSTATE_MIRRORS_append = " file://.* %s/sstate-cache/PATH \\n "\n' % updateserver)
-        finally:
-            shutil.rmtree(tmpsdk_dir)
+        if not sstate_mirrors:
+            with open(os.path.join(conf_dir, 'site.conf'), 'a') as f:
+                f.write('SCONF_VERSION = "%s"\n' % site_conf_version)
+                f.write('SSTATE_MIRRORS_append = " file://.* %s/sstate-cache/PATH \\n "\n' % updateserver)
+    finally:
+        shutil.rmtree(tmpsdk_dir)
 
     if not args.skip_prepare:
         # Find all potentially updateable tasks
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/standard.py b/import-layers/yocto-poky/scripts/lib/devtool/standard.py
index 77a82d5..4eff6f8 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/standard.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/standard.py
@@ -1,6 +1,6 @@
 # Development tool - standard commands plugin
 #
-# Copyright (C) 2014-2015 Intel Corporation
+# Copyright (C) 2014-2016 Intel Corporation
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 as
@@ -28,8 +28,9 @@
 import scriptutils
 import errno
 import glob
+import filecmp
 from collections import OrderedDict
-from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, setup_git_repo, recipe_to_append, get_bbclassextend_targets, DevtoolError
+from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, use_external_build, setup_git_repo, recipe_to_append, get_bbclassextend_targets, ensure_npm, DevtoolError
 from devtool import parse_recipe
 
 logger = logging.getLogger('devtool')
@@ -46,13 +47,13 @@
     # These are positional arguments, but because we're nice, allow
     # specifying e.g. source tree without name, or fetch URI without name or
     # source tree (if we can detect that that is what the user meant)
-    if '://' in args.recipename:
+    if scriptutils.is_src_url(args.recipename):
         if not args.fetchuri:
             if args.fetch:
                 raise DevtoolError('URI specified as positional argument as well as -f/--fetch')
             args.fetchuri = args.recipename
             args.recipename = ''
-    elif args.srctree and '://' in args.srctree:
+    elif scriptutils.is_src_url(args.srctree):
         if not args.fetchuri:
             if args.fetch:
                 raise DevtoolError('URI specified as positional argument as well as -f/--fetch')
@@ -63,13 +64,17 @@
             args.srctree = args.recipename
             args.recipename = None
         elif os.path.isdir(args.recipename):
-            logger.warn('Ambiguous argument %s - assuming you mean it to be the recipe name')
+            logger.warn('Ambiguous argument "%s" - assuming you mean it to be the recipe name' % args.recipename)
+
+    if args.srctree and os.path.isfile(args.srctree):
+        args.fetchuri = 'file://' + os.path.abspath(args.srctree)
+        args.srctree = ''
 
     if args.fetch:
         if args.fetchuri:
             raise DevtoolError('URI specified as positional argument as well as -f/--fetch')
         else:
-            # FIXME should show a warning that -f/--fetch is deprecated here
+            logger.warn('-f/--fetch option is deprecated - you can now simply specify the URL to fetch as a positional argument instead')
             args.fetchuri = args.fetch
 
     if args.recipename:
@@ -80,10 +85,6 @@
         if reason:
             raise DevtoolError(reason)
 
-        # FIXME this ought to be in validate_pn but we're using that in other contexts
-        if '/' in args.recipename:
-            raise DevtoolError('"/" is not a valid character in recipe names')
-
     if args.srctree:
         srctree = os.path.abspath(args.srctree)
         srctreeparent = None
@@ -127,6 +128,9 @@
         color = args.color
     extracmdopts = ''
     if args.fetchuri:
+        if args.fetchuri.startswith('npm://'):
+            ensure_npm(config, basepath, args.fixed_setup)
+
         source = args.fetchuri
         if srctree:
             extracmdopts += ' -x %s' % srctree
@@ -144,16 +148,28 @@
         extracmdopts += ' --also-native'
     if args.src_subdir:
         extracmdopts += ' --src-subdir "%s"' % args.src_subdir
+    if args.autorev:
+        extracmdopts += ' -a'
 
     tempdir = tempfile.mkdtemp(prefix='devtool')
     try:
-        try:
-            stdout, _ = exec_build_env_command(config.init_path, basepath, 'recipetool --color=%s create -o %s "%s" %s' % (color, tempdir, source, extracmdopts))
-        except bb.process.ExecutionError as e:
-            if e.exitcode == 15:
-                raise DevtoolError('Could not auto-determine recipe name, please specify it on the command line')
-            else:
-                raise DevtoolError('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
+        while True:
+            try:
+                stdout, _ = exec_build_env_command(config.init_path, basepath, 'recipetool --color=%s create -o %s "%s" %s' % (color, tempdir, source, extracmdopts))
+            except bb.process.ExecutionError as e:
+                if e.exitcode == 14:
+                    # FIXME this is a horrible hack that is unfortunately
+                    # necessary due to the fact that we can't run bitbake from
+                    # inside recipetool since recipetool keeps tinfoil active
+                    # with references to it throughout the code, so we have
+                    # to exit out and come back here to do it.
+                    ensure_npm(config, basepath, args.fixed_setup)
+                    continue
+                elif e.exitcode == 15:
+                    raise DevtoolError('Could not auto-determine recipe name, please specify it on the command line')
+                else:
+                    raise DevtoolError('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
+            break
 
         recipes = glob.glob(os.path.join(tempdir, '*.bb'))
         if recipes:
@@ -205,55 +221,57 @@
     for fn in os.listdir(recipedir):
         _add_md5(config, recipename, os.path.join(recipedir, fn))
 
-    if args.fetchuri and not args.no_git:
-        setup_git_repo(srctree, args.version, 'devtool')
-
-    initial_rev = None
-    if os.path.exists(os.path.join(srctree, '.git')):
-        (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
-        initial_rev = stdout.rstrip()
-
     tinfoil = setup_tinfoil(config_only=True, basepath=basepath)
-    rd = oe.recipeutils.parse_recipe(recipefile, None, tinfoil.config_data)
-    if not rd:
-        return 1
+    try:
+        rd = oe.recipeutils.parse_recipe(tinfoil.cooker, recipefile, None)
+        if not rd:
+            return 1
 
-    if args.src_subdir:
-        srctree = os.path.join(srctree, args.src_subdir)
+        if args.fetchuri and not args.no_git:
+            setup_git_repo(srctree, args.version, 'devtool', d=tinfoil.config_data)
 
-    bb.utils.mkdirhier(os.path.dirname(appendfile))
-    with open(appendfile, 'w') as f:
-        f.write('inherit externalsrc\n')
-        f.write('EXTERNALSRC = "%s"\n' % srctree)
+        initial_rev = None
+        if os.path.exists(os.path.join(srctree, '.git')):
+            (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
+            initial_rev = stdout.rstrip()
 
-        b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd)
-        if b_is_s:
-            f.write('EXTERNALSRC_BUILD = "%s"\n' % srctree)
-        if initial_rev:
-            f.write('\n# initial_rev: %s\n' % initial_rev)
+        if args.src_subdir:
+            srctree = os.path.join(srctree, args.src_subdir)
 
-        if args.binary:
-            f.write('do_install_append() {\n')
-            f.write('    rm -rf ${D}/.git\n')
-            f.write('    rm -f ${D}/singletask.lock\n')
-            f.write('}\n')
+        bb.utils.mkdirhier(os.path.dirname(appendfile))
+        with open(appendfile, 'w') as f:
+            f.write('inherit externalsrc\n')
+            f.write('EXTERNALSRC = "%s"\n' % srctree)
 
-        if bb.data.inherits_class('npm', rd):
-            f.write('do_install_append() {\n')
-            f.write('    # Remove files added to source dir by devtool/externalsrc\n')
-            f.write('    rm -f ${NPM_INSTALLDIR}/singletask.lock\n')
-            f.write('    rm -rf ${NPM_INSTALLDIR}/.git\n')
-            f.write('    rm -rf ${NPM_INSTALLDIR}/oe-local-files\n')
-            f.write('    for symlink in ${EXTERNALSRC_SYMLINKS} ; do\n')
-            f.write('        rm -f ${NPM_INSTALLDIR}/${symlink%%:*}\n')
-            f.write('    done\n')
-            f.write('}\n')
+            b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd)
+            if b_is_s:
+                f.write('EXTERNALSRC_BUILD = "%s"\n' % srctree)
+            if initial_rev:
+                f.write('\n# initial_rev: %s\n' % initial_rev)
 
-    _add_md5(config, recipename, appendfile)
+            if args.binary:
+                f.write('do_install_append() {\n')
+                f.write('    rm -rf ${D}/.git\n')
+                f.write('    rm -f ${D}/singletask.lock\n')
+                f.write('}\n')
 
-    logger.info('Recipe %s has been automatically created; further editing may be required to make it fully functional' % recipefile)
+            if bb.data.inherits_class('npm', rd):
+                f.write('do_install_append() {\n')
+                f.write('    # Remove files added to source dir by devtool/externalsrc\n')
+                f.write('    rm -f ${NPM_INSTALLDIR}/singletask.lock\n')
+                f.write('    rm -rf ${NPM_INSTALLDIR}/.git\n')
+                f.write('    rm -rf ${NPM_INSTALLDIR}/oe-local-files\n')
+                f.write('    for symlink in ${EXTERNALSRC_SYMLINKS} ; do\n')
+                f.write('        rm -f ${NPM_INSTALLDIR}/${symlink%%:*}\n')
+                f.write('    done\n')
+                f.write('}\n')
 
-    tinfoil.shutdown()
+        _add_md5(config, recipename, appendfile)
+
+        logger.info('Recipe %s has been automatically created; further editing may be required to make it fully functional' % recipefile)
+
+    finally:
+        tinfoil.shutdown()
 
     return 0
 
@@ -262,28 +280,30 @@
     """Check if the recipe is supported by devtool"""
     if pn == 'perf':
         raise DevtoolError("The perf recipe does not actually check out "
-                           "source and thus cannot be supported by this tool")
+                           "source and thus cannot be supported by this tool",
+                           4)
 
     if pn in ['kernel-devsrc', 'package-index'] or pn.startswith('gcc-source'):
-        raise DevtoolError("The %s recipe is not supported by this tool" % pn)
+        raise DevtoolError("The %s recipe is not supported by this tool" % pn, 4)
 
     if bb.data.inherits_class('image', d):
         raise DevtoolError("The %s recipe is an image, and therefore is not "
-                           "supported by this tool" % pn)
+                           "supported by this tool" % pn, 4)
 
     if bb.data.inherits_class('populate_sdk', d):
         raise DevtoolError("The %s recipe is an SDK, and therefore is not "
-                           "supported by this tool" % pn)
+                           "supported by this tool" % pn, 4)
 
     if bb.data.inherits_class('packagegroup', d):
         raise DevtoolError("The %s recipe is a packagegroup, and therefore is "
-                           "not supported by this tool" % pn)
+                           "not supported by this tool" % pn, 4)
 
     if bb.data.inherits_class('meta', d):
         raise DevtoolError("The %s recipe is a meta-recipe, and therefore is "
-                           "not supported by this tool" % pn)
+                           "not supported by this tool" % pn, 4)
 
     if bb.data.inherits_class('externalsrc', d) and d.getVar('EXTERNALSRC', True):
+        # Not an incompatibility error per se, so we don't pass the error code
         raise DevtoolError("externalsrc is currently enabled for the %s "
                            "recipe. This prevents the normal do_patch task "
                            "from working. You will need to disable this "
@@ -296,6 +316,13 @@
         bb.utils.mkdirhier(dst_d)
     shutil.move(src, dst)
 
+def _copy_file(src, dst):
+    """Copy a file. Creates all the directory components of destination path."""
+    dst_d = os.path.dirname(dst)
+    if dst_d:
+        bb.utils.mkdirhier(dst_d)
+    shutil.copy(src, dst)
+
 def _git_ls_tree(repodir, treeish='HEAD', recursive=False):
     """List contents of a git treeish"""
     import bb
@@ -319,7 +346,7 @@
     # becomes greater than that.
     path = os.path.normpath(path)
     recurse = True if len(path.split(os.path.sep)) > 1 else False
-    git_files = _git_ls_tree(srctree, 'HEAD', recurse).keys()
+    git_files = list(_git_ls_tree(srctree, 'HEAD', recurse).keys())
     if path in git_files:
         git_files.remove(path)
         return git_files
@@ -343,19 +370,21 @@
     if not tinfoil:
         # Error already shown
         return 1
+    try:
+        rd = parse_recipe(config, tinfoil, args.recipename, True)
+        if not rd:
+            return 1
 
-    rd = parse_recipe(config, tinfoil, args.recipename, True)
-    if not rd:
-        return 1
+        srctree = os.path.abspath(args.srctree)
+        initial_rev = _extract_source(srctree, args.keep_temp, args.branch, False, rd)
+        logger.info('Source tree extracted to %s' % srctree)
 
-    srctree = os.path.abspath(args.srctree)
-    initial_rev = _extract_source(srctree, args.keep_temp, args.branch, False, rd)
-    logger.info('Source tree extracted to %s' % srctree)
-
-    if initial_rev:
-        return 0
-    else:
-        return 1
+        if initial_rev:
+            return 0
+        else:
+            return 1
+    finally:
+        tinfoil.shutdown()
 
 def sync(args, config, basepath, workspace):
     """Entry point for the devtool 'sync' subcommand"""
@@ -365,19 +394,21 @@
     if not tinfoil:
         # Error already shown
         return 1
+    try:
+        rd = parse_recipe(config, tinfoil, args.recipename, True)
+        if not rd:
+            return 1
 
-    rd = parse_recipe(config, tinfoil, args.recipename, True)
-    if not rd:
-        return 1
+        srctree = os.path.abspath(args.srctree)
+        initial_rev = _extract_source(srctree, args.keep_temp, args.branch, True, rd)
+        logger.info('Source tree %s synchronized' % srctree)
 
-    srctree = os.path.abspath(args.srctree)
-    initial_rev = _extract_source(srctree, args.keep_temp, args.branch, True, rd)
-    logger.info('Source tree %s synchronized' % srctree)
-
-    if initial_rev:
-        return 0
-    else:
-        return 1
+        if initial_rev:
+            return 0
+        else:
+            return 1
+    finally:
+        tinfoil.shutdown()
 
 class BbTaskExecutor(object):
     """Class for executing bitbake tasks for a recipe
@@ -411,7 +442,10 @@
 
 class PatchTaskExecutor(BbTaskExecutor):
     def __init__(self, rdata):
+        import oe.patch
         self.check_git = False
+        self.useroptions = []
+        oe.patch.GitApplyTree.gitCommandUserOptions(self.useroptions, d=rdata)
         super(PatchTaskExecutor, self).__init__(rdata)
 
     def exec_func(self, func, report):
@@ -438,7 +472,7 @@
 
             stdout, _ = bb.process.run('git status --porcelain', cwd=srcsubdir)
             if stdout:
-                bb.process.run('git add .; git commit -a -m "Committing changes from %s\n\n%s"' % (func, GitApplyTree.ignore_commit_prefix + ' - from %s' % func), cwd=srcsubdir)
+                bb.process.run('git add .; git %s commit -a -m "Committing changes from %s\n\n%s"' % (' '.join(self.useroptions), func, GitApplyTree.ignore_commit_prefix + ' - from %s' % func), cwd=srcsubdir)
 
 
 def _prep_extract_operation(config, basepath, recipename, tinfoil=None):
@@ -496,7 +530,7 @@
 
         if 'noexec' in (d.getVarFlags('do_unpack', False) or []):
             raise DevtoolError("The %s recipe has do_unpack disabled, unable to "
-                               "extract source" % pn)
+                               "extract source" % pn, 4)
 
     if not sync:
         # Prepare for shutil.move later on
@@ -547,8 +581,14 @@
         recipe_patches = [os.path.basename(patch) for patch in
                           oe.recipeutils.get_recipe_patches(crd)]
         local_files = oe.recipeutils.get_recipe_local_files(crd)
+
+        # Ignore local files with subdir={BP}
+        srcabspath = os.path.abspath(srcsubdir)
         local_files = [fname for fname in local_files if
-                       os.path.exists(os.path.join(workdir, fname))]
+                       os.path.exists(os.path.join(workdir, fname)) and
+                       (srcabspath == workdir or not
+                       os.path.join(workdir, fname).startswith(srcabspath +
+                           os.sep))]
         if local_files:
             for fname in local_files:
                 _move_file(os.path.join(workdir, fname),
@@ -583,7 +623,7 @@
                            "doesn't use any source or the correct source "
                            "directory could not be determined" % pn)
 
-        setup_git_repo(srcsubdir, crd.getVar('PV', True), devbranch)
+        setup_git_repo(srcsubdir, crd.getVar('PV', True), devbranch, d=d)
 
         (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srcsubdir)
         initial_rev = stdout.rstrip()
@@ -703,128 +743,127 @@
                            args.recipename)
 
     tinfoil = setup_tinfoil(basepath=basepath)
-    rd = parse_recipe(config, tinfoil, args.recipename, True)
-    if not rd:
-        return 1
-
-    pn = rd.getVar('PN', True)
-    if pn != args.recipename:
-        logger.info('Mapping %s to %s' % (args.recipename, pn))
-    if pn in workspace:
-        raise DevtoolError("recipe %s is already in your workspace" %
-                           pn)
-
-    if args.srctree:
-        srctree = os.path.abspath(args.srctree)
-    else:
-        srctree = get_default_srctree(config, pn)
-
-    if args.no_extract and not os.path.isdir(srctree):
-        raise DevtoolError("--no-extract specified and source path %s does "
-                           "not exist or is not a directory" %
-                           srctree)
-    if not args.no_extract:
-        tinfoil = _prep_extract_operation(config, basepath, pn, tinfoil)
-        if not tinfoil:
-            # Error already shown
+    try:
+        rd = parse_recipe(config, tinfoil, args.recipename, True)
+        if not rd:
             return 1
 
-    recipefile = rd.getVar('FILE', True)
-    appendfile = recipe_to_append(recipefile, config, args.wildcard)
-    if os.path.exists(appendfile):
-        raise DevtoolError("Another variant of recipe %s is already in your "
-                           "workspace (only one variant of a recipe can "
-                           "currently be worked on at once)"
-                           % pn)
+        pn = rd.getVar('PN', True)
+        if pn != args.recipename:
+            logger.info('Mapping %s to %s' % (args.recipename, pn))
+        if pn in workspace:
+            raise DevtoolError("recipe %s is already in your workspace" %
+                            pn)
 
-    _check_compatible_recipe(pn, rd)
+        if args.srctree:
+            srctree = os.path.abspath(args.srctree)
+        else:
+            srctree = get_default_srctree(config, pn)
 
-    initial_rev = None
-    commits = []
-    if not args.no_extract:
-        initial_rev = _extract_source(srctree, False, args.branch, False, rd)
-        if not initial_rev:
-            return 1
-        logger.info('Source tree extracted to %s' % srctree)
-        # Get list of commits since this revision
-        (stdout, _) = bb.process.run('git rev-list --reverse %s..HEAD' % initial_rev, cwd=srctree)
-        commits = stdout.split()
-    else:
-        if os.path.exists(os.path.join(srctree, '.git')):
-            # Check if it's a tree previously extracted by us
-            try:
-                (stdout, _) = bb.process.run('git branch --contains devtool-base', cwd=srctree)
-            except bb.process.ExecutionError:
-                stdout = ''
-            for line in stdout.splitlines():
-                if line.startswith('*'):
-                    (stdout, _) = bb.process.run('git rev-parse devtool-base', cwd=srctree)
-                    initial_rev = stdout.rstrip()
+        if args.no_extract and not os.path.isdir(srctree):
+            raise DevtoolError("--no-extract specified and source path %s does "
+                            "not exist or is not a directory" %
+                            srctree)
+        if not args.no_extract:
+            tinfoil = _prep_extract_operation(config, basepath, pn, tinfoil)
+            if not tinfoil:
+                # Error already shown
+                return 1
+
+        recipefile = rd.getVar('FILE', True)
+        appendfile = recipe_to_append(recipefile, config, args.wildcard)
+        if os.path.exists(appendfile):
+            raise DevtoolError("Another variant of recipe %s is already in your "
+                            "workspace (only one variant of a recipe can "
+                            "currently be worked on at once)"
+                            % pn)
+
+        _check_compatible_recipe(pn, rd)
+
+        initial_rev = None
+        commits = []
+        if not args.no_extract:
+            initial_rev = _extract_source(srctree, False, args.branch, False, rd)
             if not initial_rev:
-                # Otherwise, just grab the head revision
-                (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
-                initial_rev = stdout.rstrip()
+                return 1
+            logger.info('Source tree extracted to %s' % srctree)
+            # Get list of commits since this revision
+            (stdout, _) = bb.process.run('git rev-list --reverse %s..HEAD' % initial_rev, cwd=srctree)
+            commits = stdout.split()
+        else:
+            if os.path.exists(os.path.join(srctree, '.git')):
+                # Check if it's a tree previously extracted by us
+                try:
+                    (stdout, _) = bb.process.run('git branch --contains devtool-base', cwd=srctree)
+                except bb.process.ExecutionError:
+                    stdout = ''
+                for line in stdout.splitlines():
+                    if line.startswith('*'):
+                        (stdout, _) = bb.process.run('git rev-parse devtool-base', cwd=srctree)
+                        initial_rev = stdout.rstrip()
+                if not initial_rev:
+                    # Otherwise, just grab the head revision
+                    (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
+                    initial_rev = stdout.rstrip()
 
-    # Check that recipe isn't using a shared workdir
-    s = os.path.abspath(rd.getVar('S', True))
-    workdir = os.path.abspath(rd.getVar('WORKDIR', True))
-    if s.startswith(workdir) and s != workdir and os.path.dirname(s) != workdir:
-        # Handle if S is set to a subdirectory of the source
-        srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1]
-        srctree = os.path.join(srctree, srcsubdir)
+        # Check that recipe isn't using a shared workdir
+        s = os.path.abspath(rd.getVar('S', True))
+        workdir = os.path.abspath(rd.getVar('WORKDIR', True))
+        if s.startswith(workdir) and s != workdir and os.path.dirname(s) != workdir:
+            # Handle if S is set to a subdirectory of the source
+            srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1]
+            srctree = os.path.join(srctree, srcsubdir)
 
-    bb.utils.mkdirhier(os.path.dirname(appendfile))
-    with open(appendfile, 'w') as f:
-        f.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n')
-        # Local files can be modified/tracked in separate subdir under srctree
-        # Mostly useful for packages with S != WORKDIR
-        f.write('FILESPATH_prepend := "%s:"\n' %
-                os.path.join(srctree, 'oe-local-files'))
+        bb.utils.mkdirhier(os.path.dirname(appendfile))
+        with open(appendfile, 'w') as f:
+            f.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n')
+            # Local files can be modified/tracked in separate subdir under srctree
+            # Mostly useful for packages with S != WORKDIR
+            f.write('FILESPATH_prepend := "%s:"\n' %
+                    os.path.join(srctree, 'oe-local-files'))
 
-        f.write('\ninherit externalsrc\n')
-        f.write('# NOTE: We use pn- overrides here to avoid affecting multiple variants in the case where the recipe uses BBCLASSEXTEND\n')
-        f.write('EXTERNALSRC_pn-%s = "%s"\n' % (pn, srctree))
+            f.write('\ninherit externalsrc\n')
+            f.write('# NOTE: We use pn- overrides here to avoid affecting multiple variants in the case where the recipe uses BBCLASSEXTEND\n')
+            f.write('EXTERNALSRC_pn-%s = "%s"\n' % (pn, srctree))
 
-        b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd)
-        if b_is_s:
-            f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree))
+            b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd)
+            if b_is_s:
+                f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree))
 
-        if bb.data.inherits_class('kernel', rd):
-            f.write('SRCTREECOVEREDTASKS = "do_validate_branches do_kernel_checkout '
-                    'do_fetch do_unpack do_patch do_kernel_configme do_kernel_configcheck"\n')
-            f.write('\ndo_configure_append() {\n'
-                    '    cp ${B}/.config ${S}/.config.baseline\n'
-                    '    ln -sfT ${B}/.config ${S}/.config.new\n'
-                    '}\n')
-        if initial_rev:
-            f.write('\n# initial_rev: %s\n' % initial_rev)
-            for commit in commits:
-                f.write('# commit: %s\n' % commit)
+            if bb.data.inherits_class('kernel', rd):
+                f.write('SRCTREECOVEREDTASKS = "do_validate_branches do_kernel_checkout '
+                        'do_fetch do_unpack do_patch do_kernel_configme do_kernel_configcheck"\n')
+                f.write('\ndo_configure_append() {\n'
+                        '    cp ${B}/.config ${S}/.config.baseline\n'
+                        '    ln -sfT ${B}/.config ${S}/.config.new\n'
+                        '}\n')
+            if initial_rev:
+                f.write('\n# initial_rev: %s\n' % initial_rev)
+                for commit in commits:
+                    f.write('# commit: %s\n' % commit)
 
-    _add_md5(config, pn, appendfile)
+        _add_md5(config, pn, appendfile)
 
-    logger.info('Recipe %s now set up to build from %s' % (pn, srctree))
+        logger.info('Recipe %s now set up to build from %s' % (pn, srctree))
 
-    tinfoil.shutdown()
+    finally:
+        tinfoil.shutdown()
 
     return 0
 
-def _get_patchset_revs(args, srctree, recipe_path):
+def _get_patchset_revs(srctree, recipe_path, initial_rev=None):
     """Get initial and update rev of a recipe. These are the start point of the
     whole patchset and start point for the patches to be re-generated/updated.
     """
     import bb
 
-    if args.initial_rev:
-        return args.initial_rev, args.initial_rev
-
-    # Parse initial rev from recipe
+    # Parse initial rev from recipe if not specified
     commits = []
-    initial_rev = None
     with open(recipe_path, 'r') as f:
         for line in f:
             if line.startswith('# initial_rev:'):
-                initial_rev = line.split(':')[-1].strip()
+                if not initial_rev:
+                    initial_rev = line.split(':')[-1].strip()
             elif line.startswith('# commit:'):
                 commits.append(line.split(':')[-1].strip())
 
@@ -835,7 +874,7 @@
         stdout, _ = bb.process.run('git rev-list --reverse %s..HEAD' %
                                    initial_rev, cwd=srctree)
         newcommits = stdout.split()
-        for i in xrange(min(len(commits), len(newcommits))):
+        for i in range(min(len(commits), len(newcommits))):
             if newcommits[i] == commits[i]:
                 update_rev = commits[i]
 
@@ -861,7 +900,7 @@
     entries = []
     for fname in filelist:
         basename = os.path.basename(fname)
-        for i in xrange(len(srcuri)):
+        for i in range(len(srcuri)):
             if (srcuri[i].startswith('file://') and
                     os.path.basename(srcuri[i].split(';')[0]) == basename):
                 entries.append(srcuri[i])
@@ -870,10 +909,10 @@
                 break
     return entries, remaining
 
-def _remove_source_files(args, files, destpath):
+def _remove_source_files(append, files, destpath):
     """Unlink existing patch files"""
     for path in files:
-        if args.append:
+        if append:
             if not destpath:
                 raise Exception('destpath should be set here')
             path = os.path.join(destpath, os.path.basename(path))
@@ -996,7 +1035,7 @@
         bb.process.run(['git', 'checkout', tree, '--', '.'], cwd=srctree,
                         env=dict(os.environ, GIT_WORK_TREE=destdir,
                                  GIT_INDEX_FILE=tmp_index))
-        new_set = _git_ls_tree(srctree, tree, True).keys()
+        new_set = list(_git_ls_tree(srctree, tree, True).keys())
     elif os.path.isdir(local_files_dir):
         # If not tracked by Git, just copy from working copy
         new_set = _ls_tree(os.path.join(srctree, 'oe-local-files'))
@@ -1026,15 +1065,47 @@
     if new_set is not None:
         for fname in new_set:
             if fname in existing_files:
-                updated[fname] = existing_files.pop(fname)
+                origpath = existing_files.pop(fname)
+                workpath = os.path.join(local_files_dir, fname)
+                if not filecmp.cmp(origpath, workpath):
+                    updated[fname] = origpath
             elif fname != '.gitignore':
                 added[fname] = None
 
+        workdir = rd.getVar('WORKDIR', True)
+        s = rd.getVar('S', True)
+        if not s.endswith(os.sep):
+            s += os.sep
+
+        if workdir != s:
+            # Handle files where subdir= was specified
+            for fname in list(existing_files.keys()):
+                # FIXME handle both subdir starting with BP and not?
+                fworkpath = os.path.join(workdir, fname)
+                if fworkpath.startswith(s):
+                    fpath = os.path.join(srctree, os.path.relpath(fworkpath, s))
+                    if os.path.exists(fpath):
+                        origpath = existing_files.pop(fname)
+                        if not filecmp.cmp(origpath, fpath):
+                            updated[fpath] = origpath
+
         removed = existing_files
     return (updated, added, removed)
 
 
-def _update_recipe_srcrev(args, srctree, rd, config_data):
+def _determine_files_dir(rd):
+    """Determine the appropriate files directory for a recipe"""
+    recipedir = rd.getVar('FILE_DIRNAME', True)
+    for entry in rd.getVar('FILESPATH', True).split(':'):
+        relpth = os.path.relpath(entry, recipedir)
+        if not os.sep in relpth:
+            # One (or zero) levels below only, so we don't put anything in machine-specific directories
+            if os.path.isdir(entry):
+                return entry
+    return os.path.join(recipedir, rd.getVar('BPN', True))
+
+
+def _update_recipe_srcrev(srctree, rd, appendlayerdir, wildcard_version, no_remove):
     """Implement the 'srcrev' mode of update-recipe"""
     import bb
     import oe.recipeutils
@@ -1063,7 +1134,7 @@
     try:
         local_files_dir = tempfile.mkdtemp(dir=tempdir)
         upd_f, new_f, del_f = _export_local_files(srctree, rd, local_files_dir)
-        if not args.no_remove:
+        if not no_remove:
             # Find list of existing patches in recipe file
             patches_dir = tempfile.mkdtemp(dir=tempdir)
             old_srcrev = (rd.getVar('SRCREV', False) or '')
@@ -1071,29 +1142,33 @@
                                                   patches_dir)
 
             # Remove deleted local files and "overlapping" patches
-            remove_files = del_f.values() + upd_p.values()
+            remove_files = list(del_f.values()) + list(upd_p.values())
             if remove_files:
                 removedentries = _remove_file_entries(srcuri, remove_files)[0]
                 update_srcuri = True
 
-        if args.append:
+        if appendlayerdir:
             files = dict((os.path.join(local_files_dir, key), val) for
-                          key, val in upd_f.items() + new_f.items())
+                          key, val in list(upd_f.items()) + list(new_f.items()))
             removevalues = {}
             if update_srcuri:
                 removevalues  = {'SRC_URI': removedentries}
                 patchfields['SRC_URI'] = '\\\n    '.join(srcuri)
             _, destpath = oe.recipeutils.bbappend_recipe(
-                    rd, args.append, files, wildcardver=args.wildcard_version,
+                    rd, appendlayerdir, files, wildcardver=wildcard_version,
                     extralines=patchfields, removevalues=removevalues)
         else:
-            files_dir = os.path.join(os.path.dirname(recipefile),
-                                     rd.getVar('BPN', True))
-            for basepath, path in upd_f.iteritems():
+            files_dir = _determine_files_dir(rd)
+            for basepath, path in upd_f.items():
                 logger.info('Updating file %s' % basepath)
-                _move_file(os.path.join(local_files_dir, basepath), path)
+                if os.path.isabs(basepath):
+                    # Original file (probably with subdir pointing inside source tree)
+                    # so we do not want to move it, just copy
+                    _copy_file(basepath, path)
+                else:
+                    _move_file(os.path.join(local_files_dir, basepath), path)
                 update_srcuri= True
-            for basepath, path in new_f.iteritems():
+            for basepath, path in new_f.items():
                 logger.info('Adding new file %s' % basepath)
                 _move_file(os.path.join(local_files_dir, basepath),
                            os.path.join(files_dir, basepath))
@@ -1109,21 +1184,21 @@
                     'point to a git repository where you have pushed your '
                     'changes')
 
-    _remove_source_files(args, remove_files, destpath)
+    _remove_source_files(appendlayerdir, remove_files, destpath)
     return True
 
-def _update_recipe_patch(args, config, workspace, srctree, rd, config_data):
+def _update_recipe_patch(recipename, workspace, srctree, rd, appendlayerdir, wildcard_version, no_remove, initial_rev):
     """Implement the 'patch' mode of update-recipe"""
     import bb
     import oe.recipeutils
 
     recipefile = rd.getVar('FILE', True)
-    append = workspace[args.recipename]['bbappend']
+    append = workspace[recipename]['bbappend']
     if not os.path.exists(append):
         raise DevtoolError('unable to find workspace bbappend for recipe %s' %
-                           args.recipename)
+                           recipename)
 
-    initial_rev, update_rev, changed_revs = _get_patchset_revs(args, srctree, append)
+    initial_rev, update_rev, changed_revs = _get_patchset_revs(srctree, append, initial_rev)
     if not initial_rev:
         raise DevtoolError('Unable to find initial revision - please specify '
                            'it with --initial-rev')
@@ -1134,13 +1209,13 @@
         upd_f, new_f, del_f = _export_local_files(srctree, rd, local_files_dir)
 
         remove_files = []
-        if not args.no_remove:
+        if not no_remove:
             # Get all patches from source tree and check if any should be removed
             all_patches_dir = tempfile.mkdtemp(dir=tempdir)
             upd_p, new_p, del_p = _export_patches(srctree, rd, initial_rev,
                                                   all_patches_dir)
             # Remove deleted local files and  patches
-            remove_files = del_f.values() + del_p.values()
+            remove_files = list(del_f.values()) + list(del_p.values())
 
         # Get updated patches from source tree
         patches_dir = tempfile.mkdtemp(dir=tempdir)
@@ -1150,11 +1225,11 @@
         updaterecipe = False
         destpath = None
         srcuri = (rd.getVar('SRC_URI', False) or '').split()
-        if args.append:
+        if appendlayerdir:
             files = dict((os.path.join(local_files_dir, key), val) for
-                         key, val in upd_f.items() + new_f.items())
+                         key, val in list(upd_f.items()) + list(new_f.items()))
             files.update(dict((os.path.join(patches_dir, key), val) for
-                              key, val in upd_p.items() + new_p.items()))
+                              key, val in list(upd_p.items()) + list(new_p.items())))
             if files or remove_files:
                 removevalues = None
                 if remove_files:
@@ -1165,17 +1240,23 @@
                                      item in remaining]
                         removevalues = {'SRC_URI': removedentries + remaining}
                 _, destpath = oe.recipeutils.bbappend_recipe(
-                                rd, args.append, files,
+                                rd, appendlayerdir, files,
+                                wildcardver=wildcard_version,
                                 removevalues=removevalues)
             else:
                 logger.info('No patches or local source files needed updating')
         else:
             # Update existing files
-            for basepath, path in upd_f.iteritems():
+            for basepath, path in upd_f.items():
                 logger.info('Updating file %s' % basepath)
-                _move_file(os.path.join(local_files_dir, basepath), path)
+                if os.path.isabs(basepath):
+                    # Original file (probably with subdir pointing inside source tree)
+                    # so we do not want to move it, just copy
+                    _copy_file(basepath, path)
+                else:
+                    _move_file(os.path.join(local_files_dir, basepath), path)
                 updatefiles = True
-            for basepath, path in upd_p.iteritems():
+            for basepath, path in upd_p.items():
                 patchfn = os.path.join(patches_dir, basepath)
                 if changed_revs is not None:
                     # Avoid updating patches that have not actually changed
@@ -1188,15 +1269,14 @@
                 _move_file(patchfn, path)
                 updatefiles = True
             # Add any new files
-            files_dir = os.path.join(os.path.dirname(recipefile),
-                                     rd.getVar('BPN', True))
-            for basepath, path in new_f.iteritems():
+            files_dir = _determine_files_dir(rd)
+            for basepath, path in new_f.items():
                 logger.info('Adding new file %s' % basepath)
                 _move_file(os.path.join(local_files_dir, basepath),
                            os.path.join(files_dir, basepath))
                 srcuri.append('file://%s' % basepath)
                 updaterecipe = True
-            for basepath, path in new_p.iteritems():
+            for basepath, path in new_p.items():
                 logger.info('Adding new patch %s' % basepath)
                 _move_file(os.path.join(patches_dir, basepath),
                            os.path.join(files_dir, basepath))
@@ -1216,7 +1296,7 @@
     finally:
         shutil.rmtree(tempdir)
 
-    _remove_source_files(args, remove_files, destpath)
+    _remove_source_files(appendlayerdir, remove_files, destpath)
     return True
 
 def _guess_recipe_update_mode(srctree, rdata):
@@ -1241,6 +1321,19 @@
 
     return 'patch'
 
+def _update_recipe(recipename, workspace, rd, mode, appendlayerdir, wildcard_version, no_remove, initial_rev):
+    srctree = workspace[recipename]['srctree']
+    if mode == 'auto':
+        mode = _guess_recipe_update_mode(srctree, rd)
+
+    if mode == 'srcrev':
+        updated = _update_recipe_srcrev(srctree, rd, appendlayerdir, wildcard_version, no_remove)
+    elif mode == 'patch':
+        updated = _update_recipe_patch(recipename, workspace, srctree, rd, appendlayerdir, wildcard_version, no_remove, initial_rev)
+    else:
+        raise DevtoolError('update_recipe: invalid mode %s' % mode)
+    return updated
+
 def update_recipe(args, config, basepath, workspace):
     """Entry point for the devtool 'update-recipe' subcommand"""
     check_workspace_recipe(workspace, args.recipename)
@@ -1254,28 +1347,20 @@
                                'destination layer "%s"' % args.append)
 
     tinfoil = setup_tinfoil(basepath=basepath, tracking=True)
+    try:
 
-    rd = parse_recipe(config, tinfoil, args.recipename, True)
-    if not rd:
-        return 1
+        rd = parse_recipe(config, tinfoil, args.recipename, True)
+        if not rd:
+            return 1
 
-    srctree = workspace[args.recipename]['srctree']
-    if args.mode == 'auto':
-        mode = _guess_recipe_update_mode(srctree, rd)
-    else:
-        mode = args.mode
+        updated = _update_recipe(args.recipename, workspace, rd, args.mode, args.append, args.wildcard_version, args.no_remove, args.initial_rev)
 
-    if mode == 'srcrev':
-        updated = _update_recipe_srcrev(args, srctree, rd, tinfoil.config_data)
-    elif mode == 'patch':
-        updated = _update_recipe_patch(args, config, workspace, srctree, rd, tinfoil.config_data)
-    else:
-        raise DevtoolError('update_recipe: invalid mode %s' % mode)
-
-    if updated:
-        rf = rd.getVar('FILE', True)
-        if rf.startswith(config.workspace_path):
-            logger.warn('Recipe file %s has been updated but is inside the workspace - you will need to move it (and any associated files next to it) out to the desired layer before using "devtool reset" in order to keep any changes' % rf)
+        if updated:
+            rf = rd.getVar('FILE', True)
+            if rf.startswith(config.workspace_path):
+                logger.warn('Recipe file %s has been updated but is inside the workspace - you will need to move it (and any associated files next to it) out to the desired layer before using "devtool reset" in order to keep any changes' % rf)
+    finally:
+        tinfoil.shutdown()
 
     return 0
 
@@ -1283,7 +1368,7 @@
 def status(args, config, basepath, workspace):
     """Entry point for the devtool 'status' subcommand"""
     if workspace:
-        for recipe, value in workspace.iteritems():
+        for recipe, value in workspace.items():
             recipefile = value['recipefile']
             if recipefile:
                 recipestr = ' (%s)' % recipefile
@@ -1295,23 +1380,10 @@
     return 0
 
 
-def reset(args, config, basepath, workspace):
-    """Entry point for the devtool 'reset' subcommand"""
-    import bb
-    if args.recipename:
-        if args.all:
-            raise DevtoolError("Recipe cannot be specified if -a/--all is used")
-        else:
-            check_workspace_recipe(workspace, args.recipename, checksrc=False)
-    elif not args.all:
-        raise DevtoolError("Recipe must be specified, or specify -a/--all to "
-                           "reset all recipes")
-    if args.all:
-        recipes = workspace.keys()
-    else:
-        recipes = [args.recipename]
+def _reset(recipes, no_clean, config, basepath, workspace):
+    """Reset one or more recipes"""
 
-    if recipes and not args.no_clean:
+    if recipes and not no_clean:
         if len(recipes) == 1:
             logger.info('Cleaning sysroot for recipe %s...' % recipes[0])
         else:
@@ -1323,7 +1395,7 @@
         for recipe in recipes:
             targets.append(recipe)
             recipefile = workspace[recipe]['recipefile']
-            if recipefile:
+            if recipefile and os.path.exists(recipefile):
                 targets.extend(get_bbclassextend_targets(recipefile, recipe))
         try:
             exec_build_env_command(config.init_path, basepath, 'bitbake -c clean %s' % ' '.join(targets))
@@ -1363,6 +1435,126 @@
                 # This is unlikely, but if it's empty we can just remove it
                 os.rmdir(srctree)
 
+
+def reset(args, config, basepath, workspace):
+    """Entry point for the devtool 'reset' subcommand"""
+    import bb
+    if args.recipename:
+        if args.all:
+            raise DevtoolError("Recipe cannot be specified if -a/--all is used")
+        else:
+            for recipe in args.recipename:
+                check_workspace_recipe(workspace, recipe, checksrc=False)
+    elif not args.all:
+        raise DevtoolError("Recipe must be specified, or specify -a/--all to "
+                           "reset all recipes")
+    if args.all:
+        recipes = list(workspace.keys())
+    else:
+        recipes = args.recipename
+
+    _reset(recipes, args.no_clean, config, basepath, workspace)
+
+    return 0
+
+
+def _get_layer(layername, d):
+    """Determine the base layer path for the specified layer name/path"""
+    layerdirs = d.getVar('BBLAYERS', True).split()
+    layers = {os.path.basename(p): p for p in layerdirs}
+    # Provide some shortcuts
+    if layername.lower() in ['oe-core', 'openembedded-core']:
+        layerdir = layers.get('meta', None)
+    else:
+        layerdir = layers.get(layername, None)
+    if layerdir:
+        layerdir = os.path.abspath(layerdir)
+    return layerdir or layername
+
+def finish(args, config, basepath, workspace):
+    """Entry point for the devtool 'finish' subcommand"""
+    import bb
+    import oe.recipeutils
+
+    check_workspace_recipe(workspace, args.recipename)
+
+    tinfoil = setup_tinfoil(basepath=basepath, tracking=True)
+    try:
+        rd = parse_recipe(config, tinfoil, args.recipename, True)
+        if not rd:
+            return 1
+
+        destlayerdir = _get_layer(args.destination, tinfoil.config_data)
+        origlayerdir = oe.recipeutils.find_layerdir(rd.getVar('FILE', True))
+
+        if not os.path.isdir(destlayerdir):
+            raise DevtoolError('Unable to find layer or directory matching "%s"' % args.destination)
+
+        if os.path.abspath(destlayerdir) == config.workspace_path:
+            raise DevtoolError('"%s" specifies the workspace layer - that is not a valid destination' % args.destination)
+
+        # If it's an upgrade, grab the original path
+        origpath = None
+        origfilelist = None
+        append = workspace[args.recipename]['bbappend']
+        with open(append, 'r') as f:
+            for line in f:
+                if line.startswith('# original_path:'):
+                    origpath = line.split(':')[1].strip()
+                elif line.startswith('# original_files:'):
+                    origfilelist = line.split(':')[1].split()
+
+        if origlayerdir == config.workspace_path:
+            # Recipe file itself is in workspace, update it there first
+            appendlayerdir = None
+            origrelpath = None
+            if origpath:
+                origlayerpath = oe.recipeutils.find_layerdir(origpath)
+                if origlayerpath:
+                    origrelpath = os.path.relpath(origpath, origlayerpath)
+            destpath = oe.recipeutils.get_bbfile_path(rd, destlayerdir, origrelpath)
+            if not destpath:
+                raise DevtoolError("Unable to determine destination layer path - check that %s specifies an actual layer and %s/conf/layer.conf specifies BBFILES. You may also need to specify a more complete path." % (args.destination, destlayerdir))
+        elif destlayerdir == origlayerdir:
+            # Same layer, update the original recipe
+            appendlayerdir = None
+            destpath = None
+        else:
+            # Create/update a bbappend in the specified layer
+            appendlayerdir = destlayerdir
+            destpath = None
+
+        # Remove any old files in the case of an upgrade
+        if origpath and origfilelist and oe.recipeutils.find_layerdir(origpath) == oe.recipeutils.find_layerdir(destlayerdir):
+            for fn in origfilelist:
+                fnp = os.path.join(origpath, fn)
+                try:
+                    os.remove(fnp)
+                except FileNotFoundError:
+                    pass
+
+        # Actually update the recipe / bbappend
+        _update_recipe(args.recipename, workspace, rd, args.mode, appendlayerdir, wildcard_version=True, no_remove=False, initial_rev=args.initial_rev)
+
+        if origlayerdir == config.workspace_path and destpath:
+            # Recipe file itself is in the workspace - need to move it and any
+            # associated files to the specified layer
+            logger.info('Moving recipe file to %s' % destpath)
+            recipedir = os.path.dirname(rd.getVar('FILE', True))
+            for root, _, files in os.walk(recipedir):
+                for fn in files:
+                    srcpath = os.path.join(root, fn)
+                    relpth = os.path.relpath(os.path.dirname(srcpath), recipedir)
+                    destdir = os.path.abspath(os.path.join(destpath, relpth))
+                    bb.utils.mkdirhier(destdir)
+                    shutil.move(srcpath, os.path.join(destdir, fn))
+
+    finally:
+        tinfoil.shutdown()
+
+    # Everything else has succeeded, we can now reset
+    _reset([args.recipename], no_clean=False, config=config, basepath=basepath, workspace=workspace)
+
     return 0
 
 
@@ -1390,10 +1582,11 @@
     parser_add.add_argument('--fetch', '-f', help='Fetch the specified URI and extract it to create the source tree (deprecated - pass as positional argument instead)', metavar='URI')
     parser_add.add_argument('--version', '-V', help='Version to use within recipe (PV)')
     parser_add.add_argument('--no-git', '-g', help='If fetching source, do not set up source tree as a git repository', action="store_true")
+    parser_add.add_argument('--autorev', '-a', help='When fetching from a git repository, set SRCREV in the recipe to a floating revision instead of fixed', action="store_true")
     parser_add.add_argument('--binary', '-b', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure). Useful with binary packages e.g. RPMs.', action='store_true')
     parser_add.add_argument('--also-native', help='Also add native variant (i.e. support building recipe for the build host as well as the target machine)', action='store_true')
     parser_add.add_argument('--src-subdir', help='Specify subdirectory within source tree to use', metavar='SUBDIR')
-    parser_add.set_defaults(func=add)
+    parser_add.set_defaults(func=add, fixed_setup=context.fixed_setup)
 
     parser_modify = subparsers.add_parser('modify', help='Modify the source for an existing recipe',
                                        description='Sets up the build environment to modify the source for an existing recipe. The default behaviour is to extract the source being fetched by the recipe into a git tree so you can work on it; alternatively if you already have your own pre-prepared source tree you can specify -n/--no-extract.',
@@ -1446,9 +1639,18 @@
     parser_status.set_defaults(func=status)
 
     parser_reset = subparsers.add_parser('reset', help='Remove a recipe from your workspace',
-                                         description='Removes the specified recipe from your workspace (resetting its state)',
+                                         description='Removes the specified recipe(s) from your workspace (resetting its state back to that defined by the metadata).',
                                          group='working', order=-100)
-    parser_reset.add_argument('recipename', nargs='?', help='Recipe to reset')
+    parser_reset.add_argument('recipename', nargs='*', help='Recipe to reset')
     parser_reset.add_argument('--all', '-a', action="store_true", help='Reset all recipes (clear workspace)')
     parser_reset.add_argument('--no-clean', '-n', action="store_true", help='Don\'t clean the sysroot to remove recipe output')
     parser_reset.set_defaults(func=reset)
+
+    parser_finish = subparsers.add_parser('finish', help='Finish working on a recipe in your workspace',
+                                         description='Pushes any committed changes to the specified recipe to the specified layer and removes it from your workspace. Roughly equivalent to an update-recipe followed by reset, except the update-recipe step will do the "right thing" depending on the recipe and the destination layer specified.',
+                                         group='working', order=-100)
+    parser_finish.add_argument('recipename', help='Recipe to finish')
+    parser_finish.add_argument('destination', help='Layer/path to put recipe into. Can be the name of a layer configured in your bblayers.conf, the path to the base of a layer, or a partial path inside a layer. %(prog)s will attempt to complete the path based on the layer\'s structure.')
+    parser_finish.add_argument('--mode', '-m', choices=['patch', 'srcrev', 'auto'], default='auto', help='Update mode (where %(metavar)s is %(choices)s; default is %(default)s)', metavar='MODE')
+    parser_finish.add_argument('--initial-rev', help='Override starting revision for patches')
+    parser_finish.set_defaults(func=finish)
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/upgrade.py b/import-layers/yocto-poky/scripts/lib/devtool/upgrade.py
index a085f78..a4239f1 100644
--- a/import-layers/yocto-poky/scripts/lib/devtool/upgrade.py
+++ b/import-layers/yocto-poky/scripts/lib/devtool/upgrade.py
@@ -70,18 +70,26 @@
 def _recipe_contains(rd, var):
     rf = rd.getVar('FILE', True)
     varfiles = oe.recipeutils.get_var_files(rf, [var], rd)
-    for var, fn in varfiles.iteritems():
+    for var, fn in varfiles.items():
         if fn and fn.startswith(os.path.dirname(rf) + os.sep):
             return True
     return False
 
 def _rename_recipe_dirs(oldpv, newpv, path):
     for root, dirs, files in os.walk(path):
+        # Rename directories with the version in their name
         for olddir in dirs:
             if olddir.find(oldpv) != -1:
                 newdir = olddir.replace(oldpv, newpv)
                 if olddir != newdir:
                     shutil.move(os.path.join(path, olddir), os.path.join(path, newdir))
+        # Rename any inc files with the version in their name (unusual, but possible)
+        for oldfile in files:
+            if oldfile.endswith('.inc'):
+                if oldfile.find(oldpv) != -1:
+                    newfile = oldfile.replace(oldpv, newpv)
+                    if oldfile != newfile:
+                        os.rename(os.path.join(path, oldfile), os.path.join(path, newfile))
 
 def _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path):
     oldrecipe = os.path.basename(oldrecipe)
@@ -97,7 +105,7 @@
     _rename_recipe_dirs(oldpv, newpv, path)
     return _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path)
 
-def _write_append(rc, srctree, same_dir, no_same_dir, rev, workspace, d):
+def _write_append(rc, srctree, same_dir, no_same_dir, rev, copied, workspace, d):
     """Writes an append file"""
     if not os.path.exists(rc):
         raise DevtoolError("bbappend not created because %s does not exist" % rc)
@@ -120,8 +128,12 @@
         b_is_s = use_external_build(same_dir, no_same_dir, d)
         if b_is_s:
             f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree))
+        f.write('\n')
         if rev:
-            f.write('\n# initial_rev: %s\n' % rev)
+            f.write('# initial_rev: %s\n' % rev)
+        if copied:
+            f.write('# original_path: %s\n' % os.path.dirname(d.getVar('FILE', True)))
+            f.write('# original_files: %s\n' % ' '.join(copied))
     return af
 
 def _cleanup_on_error(rf, srctree):
@@ -215,7 +227,9 @@
         for f in stdout.splitlines():
             __run('git add "%s"' % f)
 
-        __run('git commit -q -m "Commit of upstream changes at version %s" --allow-empty' % newpv)
+        useroptions = []
+        oe.patch.GitApplyTree.gitCommandUserOptions(useroptions, d=rd)
+        __run('git %s commit -q -m "Commit of upstream changes at version %s" --allow-empty' % (' '.join(useroptions), newpv))
         __run('git tag -f devtool-base-%s' % newpv)
 
     (stdout, _) = __run('git rev-parse HEAD')
@@ -228,16 +242,22 @@
             for patch in patches:
                 logger.warn("%s" % os.path.basename(patch))
     else:
+        __run('git checkout devtool-patched -b %s' % branch)
+        skiptag = False
         try:
-            __run('git checkout devtool-patched -b %s' % branch)
             __run('git rebase %s' % rev)
+        except bb.process.ExecutionError as e:
+            skiptag = True
+            if 'conflict' in e.stdout:
+                logger.warn('Command \'%s\' failed:\n%s\n\nYou will need to resolve conflicts in order to complete the upgrade.' % (e.command, e.stdout.rstrip()))
+            else:
+                logger.warn('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
+        if not skiptag:
             if uri.startswith('git://'):
                 suffix = 'new'
             else:
                 suffix = newpv
             __run('git tag -f devtool-patched-%s' % suffix)
-        except bb.process.ExecutionError as e:
-            logger.warn('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
 
     if tmpsrctree:
         if keep_temp:
@@ -253,7 +273,7 @@
     bpn = rd.getVar('BPN', True)
     path = os.path.join(workspace, 'recipes', bpn)
     bb.utils.mkdirhier(path)
-    oe.recipeutils.copy_recipe_files(rd, path)
+    copied, _ = oe.recipeutils.copy_recipe_files(rd, path)
 
     oldpv = rd.getVar('PV', True)
     if not newpv:
@@ -300,10 +320,10 @@
         newvalues['SRC_URI[md5sum]'] = md5
         newvalues['SRC_URI[sha256sum]'] = sha256
 
-    rd = oe.recipeutils.parse_recipe(fullpath, None, tinfoil.config_data)
+    rd = oe.recipeutils.parse_recipe(tinfoil.cooker, fullpath, None)
     oe.recipeutils.patch_recipe(rd, fullpath, newvalues)
 
-    return fullpath
+    return fullpath, copied
 
 def upgrade(args, config, basepath, workspace):
     """Entry point for the devtool 'upgrade' subcommand"""
@@ -316,48 +336,51 @@
         raise DevtoolError("If you specify --srcbranch/-B then you must use --srcrev/-S to specify the revision" % args.recipename)
 
     tinfoil = setup_tinfoil(basepath=basepath, tracking=True)
-    rd = parse_recipe(config, tinfoil, args.recipename, True)
-    if not rd:
-        return 1
-
-    pn = rd.getVar('PN', True)
-    if pn != args.recipename:
-        logger.info('Mapping %s to %s' % (args.recipename, pn))
-    if pn in workspace:
-        raise DevtoolError("recipe %s is already in your workspace" % pn)
-
-    if args.srctree:
-        srctree = os.path.abspath(args.srctree)
-    else:
-        srctree = standard.get_default_srctree(config, pn)
-
-    standard._check_compatible_recipe(pn, rd)
-    old_srcrev = rd.getVar('SRCREV', True)
-    if old_srcrev == 'INVALID':
-        old_srcrev = None
-    if old_srcrev and not args.srcrev:
-        raise DevtoolError("Recipe specifies a SRCREV value; you must specify a new one when upgrading")
-    if rd.getVar('PV', True) == args.version and old_srcrev == args.srcrev:
-        raise DevtoolError("Current and upgrade versions are the same version")
-
-    rf = None
     try:
-        rev1 = standard._extract_source(srctree, False, 'devtool-orig', False, rd)
-        rev2, md5, sha256 = _extract_new_source(args.version, srctree, args.no_patch,
-                                                args.srcrev, args.branch, args.keep_temp,
-                                                tinfoil, rd)
-        rf = _create_new_recipe(args.version, md5, sha256, args.srcrev, args.srcbranch, config.workspace_path, tinfoil, rd)
-    except bb.process.CmdError as e:
-        _upgrade_error(e, rf, srctree)
-    except DevtoolError as e:
-        _upgrade_error(e, rf, srctree)
-    standard._add_md5(config, pn, os.path.dirname(rf))
+        rd = parse_recipe(config, tinfoil, args.recipename, True)
+        if not rd:
+            return 1
 
-    af = _write_append(rf, srctree, args.same_dir, args.no_same_dir, rev2,
-                       config.workspace_path, rd)
-    standard._add_md5(config, pn, af)
-    logger.info('Upgraded source extracted to %s' % srctree)
-    logger.info('New recipe is %s' % rf)
+        pn = rd.getVar('PN', True)
+        if pn != args.recipename:
+            logger.info('Mapping %s to %s' % (args.recipename, pn))
+        if pn in workspace:
+            raise DevtoolError("recipe %s is already in your workspace" % pn)
+
+        if args.srctree:
+            srctree = os.path.abspath(args.srctree)
+        else:
+            srctree = standard.get_default_srctree(config, pn)
+
+        standard._check_compatible_recipe(pn, rd)
+        old_srcrev = rd.getVar('SRCREV', True)
+        if old_srcrev == 'INVALID':
+            old_srcrev = None
+        if old_srcrev and not args.srcrev:
+            raise DevtoolError("Recipe specifies a SRCREV value; you must specify a new one when upgrading")
+        if rd.getVar('PV', True) == args.version and old_srcrev == args.srcrev:
+            raise DevtoolError("Current and upgrade versions are the same version")
+
+        rf = None
+        try:
+            rev1 = standard._extract_source(srctree, False, 'devtool-orig', False, rd)
+            rev2, md5, sha256 = _extract_new_source(args.version, srctree, args.no_patch,
+                                                    args.srcrev, args.branch, args.keep_temp,
+                                                    tinfoil, rd)
+            rf, copied = _create_new_recipe(args.version, md5, sha256, args.srcrev, args.srcbranch, config.workspace_path, tinfoil, rd)
+        except bb.process.CmdError as e:
+            _upgrade_error(e, rf, srctree)
+        except DevtoolError as e:
+            _upgrade_error(e, rf, srctree)
+        standard._add_md5(config, pn, os.path.dirname(rf))
+
+        af = _write_append(rf, srctree, args.same_dir, args.no_same_dir, rev2,
+                        copied, config.workspace_path, rd)
+        standard._add_md5(config, pn, af)
+        logger.info('Upgraded source extracted to %s' % srctree)
+        logger.info('New recipe is %s' % rf)
+    finally:
+        tinfoil.shutdown()
     return 0
 
 def register_commands(subparsers, context):
@@ -371,7 +394,7 @@
     parser_upgrade.add_argument('recipename', help='Name of recipe to upgrade (just name - no version, path or extension)')
     parser_upgrade.add_argument('srctree',  nargs='?', help='Path to where to extract the source tree. If not specified, a subdirectory of %s will be used.' % defsrctree)
     parser_upgrade.add_argument('--version', '-V', help='Version to upgrade to (PV)')
-    parser_upgrade.add_argument('--srcrev', '-S', help='Source revision to upgrade to (if fetching from an SCM such as git)')
+    parser_upgrade.add_argument('--srcrev', '-S', help='Source revision to upgrade to (required if fetching from an SCM such as git)')
     parser_upgrade.add_argument('--srcbranch', '-B', help='Branch in source repository containing the revision to use (if fetching from an SCM such as git)')
     parser_upgrade.add_argument('--branch', '-b', default="devtool", help='Name for new development branch to checkout (default "%(default)s")')
     parser_upgrade.add_argument('--no-patch', action="store_true", help='Do not apply patches from the recipe to the new source code')
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/append.py b/import-layers/yocto-poky/scripts/lib/recipetool/append.py
index 558fd25..1e0fc1e 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/append.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/append.py
@@ -61,7 +61,7 @@
                       '/etc/gshadow': '/etc/gshadow should be managed through the useradd and extrausers classes',
                       '${sysconfdir}/hostname': '${sysconfdir}/hostname contents should be set by setting hostname_pn-base-files = "value" in configuration',}
 
-    for pthspec, message in invalidtargets.iteritems():
+    for pthspec, message in invalidtargets.items():
         if fnmatch.fnmatchcase(targetpath, d.expand(pthspec)):
             raise InvalidTargetFileError(d.expand(message))
 
@@ -90,7 +90,7 @@
                             if fnmatch.fnmatchcase(fullpth, targetpath):
                                 recipes[targetpath].append(pn)
                     elif line.startswith('pkg_preinst_') or line.startswith('pkg_postinst_'):
-                        scriptval = line.split(':', 1)[1].strip().decode('string_escape')
+                        scriptval = line.split(':', 1)[1].strip().encode('utf-8').decode('unicode_escape')
                         if 'update-alternatives --install %s ' % targetpath in scriptval:
                             recipes[targetpath].append('?%s' % pn)
                         elif targetpath_re.search(scriptval):
@@ -115,8 +115,7 @@
         # Error already logged
         return None
     append_files = tinfoil.cooker.collection.get_file_appends(recipefile)
-    rd = oe.recipeutils.parse_recipe(recipefile, append_files,
-                                    tinfoil.config_data)
+    rd = oe.recipeutils.parse_recipe(tinfoil.cooker, recipefile, append_files)
     return rd
 
 def determine_file_source(targetpath, rd):
@@ -152,7 +151,7 @@
         # Check patches
         srcpatches = []
         patchedfiles = oe.recipeutils.get_recipe_patched_files(rd)
-        for patch, filelist in patchedfiles.iteritems():
+        for patch, filelist in patchedfiles.items():
             for fileitem in filelist:
                 if fileitem[0] == srcpath:
                     srcpatches.append((patch, fileitem[1]))
@@ -172,7 +171,7 @@
     """Find the source path specified within a command"""
     command = cmdelements[0]
     if command in ['install', 'cp']:
-        helptext = subprocess.check_output('LC_ALL=C %s --help' % command, shell=True)
+        helptext = subprocess.check_output('LC_ALL=C %s --help' % command, shell=True).decode('utf-8')
         argopts = ''
         argopt_line_re = re.compile('^-([a-zA-Z0-9]), --[a-z-]+=')
         for line in helptext.splitlines():
@@ -270,7 +269,7 @@
     postinst_pns = []
 
     selectpn = None
-    for targetpath, pnlist in recipes.iteritems():
+    for targetpath, pnlist in recipes.items():
         for pn in pnlist:
             if pn.startswith('?'):
                 alternative_pns.append(pn[1:])
@@ -351,7 +350,7 @@
 
     copyfiles = {}
     extralines = extralines or []
-    for newfile, srcfile in files.iteritems():
+    for newfile, srcfile in files.items():
         src_destdir = os.path.dirname(srcfile)
         if not args.use_workdir:
             if rd.getVar('S', True) == rd.getVar('STAGING_KERNEL_DIR', True):
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/create.py b/import-layers/yocto-poky/scripts/lib/recipetool/create.py
index bb9fb9b..d427d32 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/create.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/create.py
@@ -24,7 +24,7 @@
 import json
 import logging
 import scriptutils
-import urlparse
+from urllib.parse import urlparse, urldefrag, urlsplit
 import hashlib
 
 logger = logging.getLogger('recipetool')
@@ -61,8 +61,8 @@
         libpaths = list(set([base_libdir, libdir]))
         libname_re = re.compile('^lib(.+)\.so.*$')
         pkglibmap = {}
-        for lib, item in shlib_providers.iteritems():
-            for path, pkg in item.iteritems():
+        for lib, item in shlib_providers.items():
+            for path, pkg in item.items():
                 if path in libpaths:
                     res = libname_re.match(lib)
                     if res:
@@ -74,7 +74,7 @@
 
         # Now turn it into a library->recipe mapping
         pkgdata_dir = d.getVar('PKGDATA_DIR', True)
-        for libname, pkg in pkglibmap.iteritems():
+        for libname, pkg in pkglibmap.items():
             try:
                 with open(os.path.join(pkgdata_dir, 'runtime', pkg)) as f:
                     for line in f:
@@ -167,7 +167,7 @@
         unmappedpc = []
         pcdeps = list(set(pcdeps))
         for pcdep in pcdeps:
-            if isinstance(pcdep, basestring):
+            if isinstance(pcdep, str):
                 recipe = recipemap.get(pcdep, None)
                 if recipe:
                     deps.append(recipe)
@@ -256,30 +256,56 @@
 
 def determine_from_filename(srcfile):
     """Determine name and version from a filename"""
-    part = ''
+    if is_package(srcfile):
+        # Force getting the value from the package metadata
+        return None, None
+
     if '.tar.' in srcfile:
-        namepart = srcfile.split('.tar.')[0].lower()
+        namepart = srcfile.split('.tar.')[0]
     else:
-        namepart = os.path.splitext(srcfile)[0].lower()
-    splitval = namepart.rsplit('_', 1)
+        namepart = os.path.splitext(srcfile)[0]
+    namepart = namepart.lower().replace('_', '-')
+    if namepart.endswith('.src'):
+        namepart = namepart[:-4]
+    if namepart.endswith('.orig'):
+        namepart = namepart[:-5]
+    splitval = namepart.split('-')
+    logger.debug('determine_from_filename: split name %s into: %s' % (srcfile, splitval))
+
+    ver_re = re.compile('^v?[0-9]')
+
+    pv = None
+    pn = None
     if len(splitval) == 1:
-        splitval = namepart.rsplit('-', 1)
-    pn = splitval[0].replace('_', '-')
-    if len(splitval) > 1:
-        if splitval[1][0] in '0123456789':
-            pv = splitval[1]
+        # Try to split the version out if there is no separator (or a .)
+        res = re.match('^([^0-9]+)([0-9.]+.*)$', namepart)
+        if res:
+            if len(res.group(1)) > 1 and len(res.group(2)) > 1:
+                pn = res.group(1).rstrip('.')
+                pv = res.group(2)
         else:
-            pn = '-'.join(splitval).replace('_', '-')
-            pv = None
+            pn = namepart
     else:
-        pv = None
+        if splitval[-1] in ['source', 'src']:
+            splitval.pop()
+        if len(splitval) > 2 and re.match('^(alpha|beta|stable|release|rc[0-9]|pre[0-9]|p[0-9]|[0-9]{8})', splitval[-1]) and ver_re.match(splitval[-2]):
+            pv = '-'.join(splitval[-2:])
+            if pv.endswith('-release'):
+                pv = pv[:-8]
+            splitval = splitval[:-2]
+        elif ver_re.match(splitval[-1]):
+            pv = splitval.pop()
+        pn = '-'.join(splitval)
+        if pv and pv.startswith('v'):
+            pv = pv[1:]
+    logger.debug('determine_from_filename: name = "%s" version = "%s"' % (pn, pv))
     return (pn, pv)
 
 def determine_from_url(srcuri):
     """Determine name and version from a URL"""
     pn = None
     pv = None
-    parseres = urlparse.urlparse(srcuri.lower().split(';', 1)[0])
+    parseres = urlparse(srcuri.lower().split(';', 1)[0])
     if parseres.path:
         if 'github.com' in parseres.netloc:
             res = re.search(r'.*/(.*?)/archive/(.*)-final\.(tar|zip)', parseres.path)
@@ -310,43 +336,66 @@
     # odd interactions with the urldata cache which lead to errors
     localdata.setVar('SRCREV', '${AUTOREV}')
     bb.data.update_data(localdata)
-    fetcher = bb.fetch2.Fetch([uri], localdata)
-    urldata = fetcher.ud
-    for u in urldata:
-        if urldata[u].method.supports_srcrev():
+    try:
+        fetcher = bb.fetch2.Fetch([uri], localdata)
+        urldata = fetcher.ud
+        for u in urldata:
+            if urldata[u].method.supports_srcrev():
+                return True
+    except bb.fetch2.FetchError as e:
+        logger.debug('FetchError in supports_srcrev: %s' % str(e))
+        # Fall back to basic check
+        if uri.startswith(('git://', 'gitsm://')):
             return True
     return False
 
 def reformat_git_uri(uri):
     '''Convert any http[s]://....git URI into git://...;protocol=http[s]'''
     checkuri = uri.split(';', 1)[0]
-    if checkuri.endswith('.git') or '/git/' in checkuri:
-        res = re.match('(https?)://([^;]+(\.git)?)(;.*)?$', uri)
+    if checkuri.endswith('.git') or '/git/' in checkuri or re.match('https?://github.com/[^/]+/[^/]+/?$', checkuri):
+        res = re.match('(http|https|ssh)://([^;]+(\.git)?)(;.*)?$', uri)
         if res:
             # Need to switch the URI around so that the git fetcher is used
             return 'git://%s;protocol=%s%s' % (res.group(2), res.group(1), res.group(4) or '')
+        elif '@' in checkuri:
+            # Catch e.g. git@git.example.com:repo.git
+            return 'git://%s;protocol=ssh' % checkuri.replace(':', '/', 1)
     return uri
 
+def is_package(url):
+    '''Check if a URL points to a package'''
+    checkurl = url.split(';', 1)[0]
+    if checkurl.endswith(('.deb', '.ipk', '.rpm', '.srpm')):
+        return True
+    return False
+
 def create_recipe(args):
     import bb.process
     import tempfile
     import shutil
+    import oe.recipeutils
 
     pkgarch = ""
     if args.machine:
         pkgarch = "${MACHINE_ARCH}"
 
+    extravalues = {}
     checksums = (None, None)
     tempsrc = ''
+    source = args.source
     srcsubdir = ''
     srcrev = '${AUTOREV}'
-    if '://' in args.source:
+
+    if os.path.isfile(source):
+        source = 'file://%s' % os.path.abspath(source)
+
+    if scriptutils.is_src_url(source):
         # Fetch a URL
-        fetchuri = reformat_git_uri(urlparse.urldefrag(args.source)[0])
+        fetchuri = reformat_git_uri(urldefrag(source)[0])
         if args.binary:
             # Assume the archive contains the directory structure verbatim
             # so we need to extract to a subdirectory
-            fetchuri += ';subdir=%s' % os.path.splitext(os.path.basename(urlparse.urlsplit(fetchuri).path))[0]
+            fetchuri += ';subdir=${BP}'
         srcuri = fetchuri
         rev_re = re.compile(';rev=([^;]+)')
         res = rev_re.search(srcuri)
@@ -357,10 +406,7 @@
         srctree = tempsrc
         if fetchuri.startswith('npm://'):
             # Check if npm is available
-            npm = bb.utils.which(tinfoil.config_data.getVar('PATH', True), 'npm')
-            if not npm:
-                logger.error('npm:// URL requested but npm is not available - you need to either build nodejs-native or install npm using your package manager')
-                sys.exit(1)
+            check_npm(tinfoil.config_data)
         logger.info('Fetching %s...' % srcuri)
         try:
             checksums = scriptutils.fetch_uri(tinfoil.config_data, fetchuri, srctree, srcrev)
@@ -377,19 +423,50 @@
                 srcsubdir = dirlist[0]
                 srctree = os.path.join(srctree, srcsubdir)
             else:
-                with open(singleitem, 'r') as f:
+                with open(singleitem, 'r', errors='surrogateescape') as f:
                     if '<html' in f.read(100).lower():
                         logger.error('Fetching "%s" returned a single HTML page - check the URL is correct and functional' % fetchuri)
                         sys.exit(1)
+        if os.path.exists(os.path.join(srctree, '.gitmodules')) and srcuri.startswith('git://'):
+            srcuri = 'gitsm://' + srcuri[6:]
+            logger.info('Fetching submodules...')
+            bb.process.run('git submodule update --init --recursive', cwd=srctree)
+
+        if is_package(fetchuri):
+            tmpfdir = tempfile.mkdtemp(prefix='recipetool-')
+            try:
+                pkgfile = None
+                try:
+                    fileuri = fetchuri + ';unpack=0'
+                    scriptutils.fetch_uri(tinfoil.config_data, fileuri, tmpfdir, srcrev)
+                    for root, _, files in os.walk(tmpfdir):
+                        for f in files:
+                            pkgfile = os.path.join(root, f)
+                            break
+                except bb.fetch2.BBFetchException as e:
+                    logger.warn('Second fetch to get metadata failed: %s' % str(e).rstrip())
+
+                if pkgfile:
+                    if pkgfile.endswith(('.deb', '.ipk')):
+                        stdout, _ = bb.process.run('ar x %s control.tar.gz' % pkgfile, cwd=tmpfdir)
+                        stdout, _ = bb.process.run('tar xf control.tar.gz ./control', cwd=tmpfdir)
+                        values = convert_debian(tmpfdir)
+                        extravalues.update(values)
+                    elif pkgfile.endswith(('.rpm', '.srpm')):
+                        stdout, _ = bb.process.run('rpm -qp --xml %s > pkginfo.xml' % pkgfile, cwd=tmpfdir)
+                        values = convert_rpm_xml(os.path.join(tmpfdir, 'pkginfo.xml'))
+                        extravalues.update(values)
+            finally:
+                shutil.rmtree(tmpfdir)
     else:
         # Assume we're pointing to an existing source tree
         if args.extract_to:
             logger.error('--extract-to cannot be specified if source is a directory')
             sys.exit(1)
-        if not os.path.isdir(args.source):
-            logger.error('Invalid source directory %s' % args.source)
+        if not os.path.isdir(source):
+            logger.error('Invalid source directory %s' % source)
             sys.exit(1)
-        srctree = args.source
+        srctree = source
         srcuri = ''
         if os.path.exists(os.path.join(srctree, '.git')):
             # Try to get upstream repo location from origin remote
@@ -401,7 +478,7 @@
                 for line in stdout.splitlines():
                     splitline = line.split()
                     if len(splitline) > 1:
-                        if splitline[0] == 'origin' and '://' in splitline[1]:
+                        if splitline[0] == 'origin' and scriptutils.is_src_url(splitline[1]):
                             srcuri = reformat_git_uri(splitline[1])
                             srcsubdir = 'git'
                             break
@@ -429,37 +506,12 @@
     lines_before.append('# Recipe created by %s' % os.path.basename(sys.argv[0]))
     lines_before.append('# This is the basis of a recipe and may need further editing in order to be fully functional.')
     lines_before.append('# (Feel free to remove these comments when editing.)')
-    lines_before.append('#')
-
-    licvalues = guess_license(srctree_use)
-    lic_files_chksum = []
-    if licvalues:
-        licenses = []
-        for licvalue in licvalues:
-            if not licvalue[0] in licenses:
-                licenses.append(licvalue[0])
-            lic_files_chksum.append('file://%s;md5=%s' % (licvalue[1], licvalue[2]))
-        lines_before.append('# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is')
-        lines_before.append('# your responsibility to verify that the values are complete and correct.')
-        if len(licvalues) > 1:
-            lines_before.append('#')
-            lines_before.append('# NOTE: multiple licenses have been detected; if that is correct you should separate')
-            lines_before.append('# these in the LICENSE value using & if the multiple licenses all apply, or | if there')
-            lines_before.append('# is a choice between the multiple licenses. If in doubt, check the accompanying')
-            lines_before.append('# documentation to determine which situation is applicable.')
-    else:
-        lines_before.append('# Unable to find any files that looked like license statements. Check the accompanying')
-        lines_before.append('# documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly.')
-        lines_before.append('#')
-        lines_before.append('# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if')
-        lines_before.append('# this is not accurate with respect to the licensing of the software being built (it')
-        lines_before.append('# will not be in most cases) you must specify the correct value before using this')
-        lines_before.append('# recipe for anything other than initial testing/development!')
-        licenses = ['CLOSED']
-    lines_before.append('LICENSE = "%s"' % ' '.join(licenses))
-    lines_before.append('LIC_FILES_CHKSUM = "%s"' % ' \\\n                    '.join(lic_files_chksum))
+    # We need a blank line here so that patch_recipe_lines can rewind before the LICENSE comments
     lines_before.append('')
 
+    handled = []
+    licvalues = handle_license_vars(srctree_use, lines_before, handled, extravalues, tinfoil.config_data)
+
     classes = []
 
     # FIXME This is kind of a hack, we probably ought to be using bitbake to do this
@@ -515,10 +567,16 @@
         lines_before.append('')
         lines_before.append('# Modify these as desired')
         lines_before.append('PV = "%s+git${SRCPV}"' % (realpv or '1.0'))
+        if not args.autorev and srcrev == '${AUTOREV}':
+            if os.path.exists(os.path.join(srctree, '.git')):
+                (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
+            srcrev = stdout.rstrip()
         lines_before.append('SRCREV = "%s"' % srcrev)
     lines_before.append('')
 
-    if srcsubdir:
+    if srcsubdir and not args.binary:
+        # (for binary packages we explicitly specify subdir= when fetching to
+        # match the default value of S, so we don't need to set it in that case)
         lines_before.append('S = "${WORKDIR}/%s"' % srcsubdir)
         lines_before.append('')
 
@@ -549,40 +607,36 @@
     handlers = [item[0] for item in handlers]
 
     # Apply the handlers
-    handled = []
-    handled.append(('license', licvalues))
-
     if args.binary:
         classes.append('bin_package')
         handled.append('buildsystem')
 
-    extravalues = {}
     for handler in handlers:
         handler.process(srctree_use, classes, lines_before, lines_after, handled, extravalues)
 
     extrafiles = extravalues.pop('extrafiles', {})
+    extra_pn = extravalues.pop('PN', None)
+    extra_pv = extravalues.pop('PV', None)
 
-    if not realpv:
-        realpv = extravalues.get('PV', None)
-        if realpv:
-            if not validate_pv(realpv):
-                realpv = None
-            else:
-                realpv = realpv.lower().split()[0]
-                if '_' in realpv:
-                    realpv = realpv.replace('_', '-')
-    if not pn:
-        pn = extravalues.get('PN', None)
-        if pn:
-            if pn.startswith('GNU '):
-                pn = pn[4:]
-            if ' ' in pn:
-                # Probably a descriptive identifier rather than a proper name
-                pn = None
-            else:
-                pn = pn.lower()
-                if '_' in pn:
-                    pn = pn.replace('_', '-')
+    if extra_pv and not realpv:
+        realpv = extra_pv
+        if not validate_pv(realpv):
+            realpv = None
+        else:
+            realpv = realpv.lower().split()[0]
+            if '_' in realpv:
+                realpv = realpv.replace('_', '-')
+    if extra_pn and not pn:
+        pn = extra_pn
+        if pn.startswith('GNU '):
+            pn = pn[4:]
+        if ' ' in pn:
+            # Probably a descriptive identifier rather than a proper name
+            pn = None
+        else:
+            pn = pn.lower()
+            if '_' in pn:
+                pn = pn.replace('_', '-')
 
     if not outfile:
         if not pn:
@@ -590,8 +644,11 @@
             # devtool looks for this specific exit code, so don't change it
             sys.exit(15)
         else:
-            if srcuri and srcuri.startswith(('git://', 'hg://', 'svn://')):
-                outfile = '%s_%s.bb' % (pn, srcuri.split(':', 1)[0])
+            if srcuri and srcuri.startswith(('gitsm://', 'git://', 'hg://', 'svn://')):
+                suffix = srcuri.split(':', 1)[0]
+                if suffix == 'gitsm':
+                    suffix = 'git'
+                outfile = '%s_%s.bb' % (pn, suffix)
             elif realpv:
                 outfile = '%s_%s.bb' % (pn, realpv)
             else:
@@ -610,7 +667,7 @@
         else:
             extraoutdir = os.path.join(os.path.dirname(outfile), pn)
         bb.utils.mkdirhier(extraoutdir)
-        for destfn, extrafile in extrafiles.iteritems():
+        for destfn, extrafile in extrafiles.items():
             shutil.move(extrafile, os.path.join(extraoutdir, destfn))
 
     lines = lines_before
@@ -662,6 +719,12 @@
         outlines.append('')
     outlines.extend(lines_after)
 
+    if extravalues:
+        if 'LICENSE' in extravalues and not licvalues:
+            # Don't blow away 'CLOSED' value that comments say we set
+            del extravalues['LICENSE']
+        _, outlines = oe.recipeutils.patch_recipe_lines(outlines, extravalues, trailing_newline=False)
+
     if args.extract_to:
         scriptutils.git_convert_standalone_clone(srctree)
         if os.path.isdir(args.extract_to):
@@ -679,14 +742,72 @@
         sys.stdout.write('\n'.join(outlines) + '\n')
     else:
         with open(outfile, 'w') as f:
-            f.write('\n'.join(outlines) + '\n')
+            lastline = None
+            for line in outlines:
+                if not lastline and not line:
+                    # Skip extra blank lines
+                    continue
+                f.write('%s\n' % line)
+                lastline = line
         logger.info('Recipe %s has been created; further editing may be required to make it fully functional' % outfile)
 
     if tempsrc:
-        shutil.rmtree(tempsrc)
+        if args.keep_temp:
+            logger.info('Preserving temporary directory %s' % tempsrc)
+        else:
+            shutil.rmtree(tempsrc)
 
     return 0
 
+def handle_license_vars(srctree, lines_before, handled, extravalues, d):
+    licvalues = guess_license(srctree, d)
+    lic_files_chksum = []
+    lic_unknown = []
+    if licvalues:
+        licenses = []
+        for licvalue in licvalues:
+            if not licvalue[0] in licenses:
+                licenses.append(licvalue[0])
+            lic_files_chksum.append('file://%s;md5=%s' % (licvalue[1], licvalue[2]))
+            if licvalue[0] == 'Unknown':
+                lic_unknown.append(licvalue[1])
+        lines_before.append('# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is')
+        lines_before.append('# your responsibility to verify that the values are complete and correct.')
+        if len(licvalues) > 1:
+            lines_before.append('#')
+            lines_before.append('# NOTE: multiple licenses have been detected; if that is correct you should separate')
+            lines_before.append('# these in the LICENSE value using & if the multiple licenses all apply, or | if there')
+            lines_before.append('# is a choice between the multiple licenses. If in doubt, check the accompanying')
+            lines_before.append('# documentation to determine which situation is applicable.')
+        if lic_unknown:
+            lines_before.append('#')
+            lines_before.append('# The following license files were not able to be identified and are')
+            lines_before.append('# represented as "Unknown" below, you will need to check them yourself:')
+            for licfile in lic_unknown:
+                lines_before.append('#   %s' % licfile)
+            lines_before.append('#')
+    else:
+        lines_before.append('# Unable to find any files that looked like license statements. Check the accompanying')
+        lines_before.append('# documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly.')
+        lines_before.append('#')
+        lines_before.append('# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if')
+        lines_before.append('# this is not accurate with respect to the licensing of the software being built (it')
+        lines_before.append('# will not be in most cases) you must specify the correct value before using this')
+        lines_before.append('# recipe for anything other than initial testing/development!')
+        licenses = ['CLOSED']
+    pkg_license = extravalues.pop('LICENSE', None)
+    if pkg_license:
+        if licenses == ['Unknown']:
+            lines_before.append('# NOTE: The following LICENSE value was determined from the original package metadata')
+            licenses = [pkg_license]
+        else:
+            lines_before.append('# NOTE: Original package metadata indicates license is: %s' % pkg_license)
+    lines_before.append('LICENSE = "%s"' % ' '.join(licenses))
+    lines_before.append('LIC_FILES_CHKSUM = "%s"' % ' \\\n                    '.join(lic_files_chksum))
+    lines_before.append('')
+    handled.append(('license', licvalues))
+    return licvalues
+
 def get_license_md5sums(d, static_only=False):
     import bb.utils
     md5sums = {}
@@ -751,7 +872,7 @@
 
     # Note: these are carefully constructed!
     license_title_re = re.compile('^\(?(#+ *)?(The )?.{1,10} [Ll]icen[sc]e( \(.{1,10}\))?\)?:?$')
-    license_statement_re = re.compile('^This (project|software) is( free software)? released under the .{1,10} [Ll]icen[sc]e:?$')
+    license_statement_re = re.compile('^(This (project|software) is( free software)? (released|licen[sc]ed)|(Released|Licen[cs]ed)) under the .{1,10} [Ll]icen[sc]e:?$')
     copyright_re = re.compile('^(#+)? *Copyright .*$')
 
     crunched_md5sums = {}
@@ -781,7 +902,7 @@
     # https://github.com/FFmpeg/FFmpeg/blob/master/COPYING.LGPLv3
     crunched_md5sums['2ebfb3bb49b9a48a075cc1425e7f4129'] = 'LGPLv3'
     lictext = []
-    with open(licfile, 'r') as f:
+    with open(licfile, 'r', errors='surrogateescape') as f:
         for line in f:
             # Drop opening statements
             if copyright_re.match(line):
@@ -792,14 +913,14 @@
                 continue
             # Squash spaces, and replace smart quotes, double quotes
             # and backticks with single quotes
-            line = oe.utils.squashspaces(line.strip()).decode("utf-8")
+            line = oe.utils.squashspaces(line.strip())
             line = line.replace(u"\u2018", "'").replace(u"\u2019", "'").replace(u"\u201c","'").replace(u"\u201d", "'").replace('"', '\'').replace('`', '\'')
             if line:
                 lictext.append(line)
 
     m = hashlib.md5()
     try:
-        m.update(' '.join(lictext))
+        m.update(' '.join(lictext).encode('utf-8'))
         md5val = m.hexdigest()
     except UnicodeEncodeError:
         md5val = None
@@ -807,9 +928,9 @@
     license = crunched_md5sums.get(md5val, None)
     return license, md5val, lictext
 
-def guess_license(srctree):
+def guess_license(srctree, d):
     import bb
-    md5sums = get_license_md5sums(tinfoil.config_data)
+    md5sums = get_license_md5sums(d)
 
     licenses = []
     licspecs = ['*LICEN[CS]E*', 'COPYING*', '*[Ll]icense*', 'LEGAL*', '[Ll]egal*', '*GPL*', 'README.lic*', 'COPYRIGHT*', '[Cc]opyright*']
@@ -842,7 +963,7 @@
     """
     pkglicenses = {pn: []}
     for license, licpath, _ in licvalues:
-        for pkgname, pkgpath in packages.iteritems():
+        for pkgname, pkgpath in packages.items():
             if licpath.startswith(pkgpath + '/'):
                 if pkgname in pkglicenses:
                     pkglicenses[pkgname].append(license)
@@ -854,7 +975,7 @@
             pkglicenses[pn].append(license)
     outlicenses = {}
     for pkgname in packages:
-        license = ' '.join(list(set(pkglicenses.get(pkgname, ['Unknown']))))
+        license = ' '.join(list(set(pkglicenses.get(pkgname, ['Unknown'])))) or 'Unknown'
         if license == 'Unknown' and pkgname in fallback_licenses:
             license = fallback_licenses[pkgname]
         outlines.append('LICENSE_%s = "%s"' % (pkgname, license))
@@ -869,7 +990,7 @@
             for line in f:
                 pkgmap[os.path.basename(line.rstrip())] = os.path.splitext(os.path.basename(fn))[0]
     recipemap = {}
-    for pc, pkg in pkgmap.iteritems():
+    for pc, pkg in pkgmap.items():
         pkgdatafile = os.path.join(pkgdatadir, 'runtime', pkg)
         if os.path.exists(pkgdatafile):
             with open(pkgdatafile, 'r') as f:
@@ -878,73 +999,84 @@
                         recipemap[pc] = line.split(':', 1)[1].strip()
     return recipemap
 
-def convert_pkginfo(pkginfofile):
-    values = {}
-    with open(pkginfofile, 'r') as f:
-        indesc = False
-        for line in f:
-            if indesc:
-                if line.strip():
-                    values['DESCRIPTION'] += ' ' + line.strip()
-                else:
-                    indesc = False
-            else:
-                splitline = line.split(': ', 1)
-                key = line[0]
-                value = line[1]
-                if key == 'LICENSE':
-                    for dep in value.split(','):
-                        dep = dep.split()[0]
-                        mapped = depmap.get(dep, '')
-                        if mapped:
-                            depends.append(mapped)
-                elif key == 'License':
-                    values['LICENSE'] = value
-                elif key == 'Summary':
-                    values['SUMMARY'] = value
-                elif key == 'Description':
-                    values['DESCRIPTION'] = value
-                    indesc = True
-    return values
-
 def convert_debian(debpath):
+    value_map = {'Package': 'PN',
+                 'Version': 'PV',
+                 'Section': 'SECTION',
+                 'License': 'LICENSE',
+                 'Homepage': 'HOMEPAGE'}
+
     # FIXME extend this mapping - perhaps use distro_alias.inc?
     depmap = {'libz-dev': 'zlib'}
 
     values = {}
     depends = []
-    with open(os.path.join(debpath, 'control')) as f:
+    with open(os.path.join(debpath, 'control'), 'r', errors='surrogateescape') as f:
         indesc = False
         for line in f:
             if indesc:
-                if line.strip():
+                if line.startswith(' '):
                     if line.startswith(' This package contains'):
                         indesc = False
                     else:
-                        values['DESCRIPTION'] += ' ' + line.strip()
+                        if 'DESCRIPTION' in values:
+                            values['DESCRIPTION'] += ' ' + line.strip()
+                        else:
+                            values['DESCRIPTION'] = line.strip()
                 else:
                     indesc = False
-            else:
+            if not indesc:
                 splitline = line.split(':', 1)
-                key = line[0]
-                value = line[1]
+                if len(splitline) < 2:
+                    continue
+                key = splitline[0]
+                value = splitline[1].strip()
                 if key == 'Build-Depends':
                     for dep in value.split(','):
                         dep = dep.split()[0]
                         mapped = depmap.get(dep, '')
                         if mapped:
                             depends.append(mapped)
-                elif key == 'Section':
-                    values['SECTION'] = value
                 elif key == 'Description':
                     values['SUMMARY'] = value
                     indesc = True
+                else:
+                    varname = value_map.get(key, None)
+                    if varname:
+                        values[varname] = value
 
-    if depends:
-        values['DEPENDS'] = ' '.join(depends)
+    #if depends:
+    #    values['DEPENDS'] = ' '.join(depends)
 
     return values
 
+def convert_rpm_xml(xmlfile):
+    '''Converts the output from rpm -qp --xml to a set of variable values'''
+    import xml.etree.ElementTree as ElementTree
+    rpmtag_map = {'Name': 'PN',
+                  'Version': 'PV',
+                  'Summary': 'SUMMARY',
+                  'Description': 'DESCRIPTION',
+                  'License': 'LICENSE',
+                  'Url': 'HOMEPAGE'}
+
+    values = {}
+    tree = ElementTree.parse(xmlfile)
+    root = tree.getroot()
+    for child in root:
+        if child.tag == 'rpmTag':
+            name = child.attrib.get('name', None)
+            if name:
+                varname = rpmtag_map.get(name, None)
+                if varname:
+                    values[varname] = child[0].text
+    return values
+
+
+def check_npm(d):
+    if not os.path.exists(os.path.join(d.getVar('STAGING_BINDIR_NATIVE', True), 'npm')):
+        logger.error('npm required to process specified source, but npm is not available - you need to build nodejs-native first')
+        sys.exit(14)
 
 def register_commands(subparsers):
     parser_create = subparsers.add_parser('create',
@@ -959,5 +1091,7 @@
     parser_create.add_argument('-b', '--binary', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure)', action='store_true')
     parser_create.add_argument('--also-native', help='Also add native variant (i.e. support building recipe for the build host as well as the target machine)', action='store_true')
     parser_create.add_argument('--src-subdir', help='Specify subdirectory within source tree to use', metavar='SUBDIR')
+    parser_create.add_argument('-a', '--autorev', help='When fetching from a git repository, set SRCREV in the recipe to a floating revision instead of fixed', action="store_true")
+    parser_create.add_argument('--keep-temp', action="store_true", help='Keep temporary directory (for debugging)')
     parser_create.set_defaults(func=create_recipe)
 
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys.py b/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys.py
index f84ec3d..e914e53 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys.py
@@ -44,7 +44,7 @@
             classes.append('cmake')
             values = CmakeRecipeHandler.extract_cmake_deps(lines_before, srctree, extravalues)
             classes.extend(values.pop('inherit', '').split())
-            for var, value in values.iteritems():
+            for var, value in values.items():
                 lines_before.append('%s = "%s"' % (var, value))
             lines_after.append('# Specify any options you want to pass to cmake using EXTRA_OECMAKE:')
             lines_after.append('EXTRA_OECMAKE = ""')
@@ -159,7 +159,7 @@
 
         def find_cmake_package(pkg):
             RecipeHandler.load_devel_filemap(tinfoil.config_data)
-            for fn, pn in RecipeHandler.recipecmakefilemap.iteritems():
+            for fn, pn in RecipeHandler.recipecmakefilemap.items():
                 splitname = fn.split('/')
                 if len(splitname) > 1:
                     if splitname[0].lower().startswith(pkg.lower()):
@@ -173,7 +173,7 @@
         def parse_cmake_file(fn, paths=None):
             searchpaths = (paths or []) + [os.path.dirname(fn)]
             logger.debug('Parsing file %s' % fn)
-            with open(fn, 'r') as f:
+            with open(fn, 'r', errors='surrogateescape') as f:
                 for line in f:
                     line = line.strip()
                     for handler in handlers:
@@ -348,13 +348,13 @@
             autoconf = True
             values = AutotoolsRecipeHandler.extract_autotools_deps(lines_before, srctree, extravalues)
             classes.extend(values.pop('inherit', '').split())
-            for var, value in values.iteritems():
+            for var, value in values.items():
                 lines_before.append('%s = "%s"' % (var, value))
         else:
             conffile = RecipeHandler.checkfiles(srctree, ['configure'])
             if conffile:
                 # Check if this is just a pre-generated autoconf configure script
-                with open(conffile[0], 'r') as f:
+                with open(conffile[0], 'r', errors='surrogateescape') as f:
                     for i in range(1, 10):
                         if 'Generated by GNU Autoconf' in f.readline():
                             autoconf = True
@@ -364,7 +364,7 @@
             # Last resort
             conffile = RecipeHandler.checkfiles(srctree, ['configure'])
             if conffile:
-                with open(conffile[0], 'r') as f:
+                with open(conffile[0], 'r', errors='surrogateescape') as f:
                     for line in f:
                         line = line.strip()
                         if line.startswith('VERSION=') or line.startswith('PACKAGE_VERSION='):
@@ -442,11 +442,12 @@
         ac_init_re = re.compile('AC_INIT\(\s*([^,]+),\s*([^,]+)[,)].*')
         am_init_re = re.compile('AM_INIT_AUTOMAKE\(\s*([^,]+),\s*([^,]+)[,)].*')
         define_re = re.compile('\s*(m4_)?define\(\s*([^,]+),\s*([^,]+)\)')
+        version_re = re.compile('([0-9.]+)')
 
         defines = {}
         def subst_defines(value):
             newvalue = value
-            for define, defval in defines.iteritems():
+            for define, defval in defines.items():
                 newvalue = newvalue.replace(define, defval)
             if newvalue != value:
                 return subst_defines(newvalue)
@@ -488,6 +489,7 @@
             for handler in handlers:
                 if handler.process_macro(srctree, keyword, value, process_value, libdeps, pcdeps, deps, outlines, inherits, values):
                     return
+            logger.debug('Found keyword %s with value "%s"' % (keyword, value))
             if keyword == 'PKG_CHECK_MODULES':
                 res = pkg_re.search(value)
                 if res:
@@ -569,10 +571,21 @@
                 deps.append('sqlite3')
             elif keyword == 'AX_LIB_TAGLIB':
                 deps.append('taglib')
-            elif keyword == 'AX_PKG_SWIG':
-                deps.append('swig')
+            elif keyword in ['AX_PKG_SWIG', 'AC_PROG_SWIG']:
+                deps.append('swig-native')
             elif keyword == 'AX_PROG_XSLTPROC':
                 deps.append('libxslt-native')
+            elif keyword in ['AC_PYTHON_DEVEL', 'AX_PYTHON_DEVEL', 'AM_PATH_PYTHON']:
+                pythonclass = 'pythonnative'
+                res = version_re.search(value)
+                if res:
+                    if res.group(1).startswith('3'):
+                        pythonclass = 'python3native'
+                # Avoid replacing python3native with pythonnative
+                if not pythonclass in inherits and not 'python3native' in inherits:
+                    if 'pythonnative' in inherits:
+                        inherits.remove('pythonnative')
+                    inherits.append(pythonclass)
             elif keyword == 'AX_WITH_CURSES':
                 deps.append('ncurses')
             elif keyword == 'AX_PATH_BDB':
@@ -638,7 +651,11 @@
                     'AX_LIB_SQLITE3',
                     'AX_LIB_TAGLIB',
                     'AX_PKG_SWIG',
+                    'AC_PROG_SWIG',
                     'AX_PROG_XSLTPROC',
+                    'AC_PYTHON_DEVEL',
+                    'AX_PYTHON_DEVEL',
+                    'AM_PATH_PYTHON',
                     'AX_WITH_CURSES',
                     'AX_PATH_BDB',
                     'AX_PATH_LIB_PCRE',
@@ -654,7 +671,7 @@
             nesting = 0
             in_keyword = ''
             partial = ''
-            with open(srcfile, 'r') as f:
+            with open(srcfile, 'r', errors='surrogateescape') as f:
                 for line in f:
                     if in_keyword:
                         partial += ' ' + line.strip()
@@ -682,7 +699,7 @@
                 process_macro(in_keyword, partial)
 
         if extravalues:
-            for k,v in extravalues.items():
+            for k,v in list(extravalues.items()):
                 if v:
                     if v.startswith('$') or v.startswith('@') or v.startswith('%'):
                         del extravalues[k]
@@ -737,7 +754,7 @@
         if 'buildsystem' in handled:
             return False
 
-        makefile = RecipeHandler.checkfiles(srctree, ['Makefile'])
+        makefile = RecipeHandler.checkfiles(srctree, ['Makefile', 'makefile', 'GNUmakefile'])
         if makefile:
             lines_after.append('# NOTE: this is a Makefile-only piece of software, so we cannot generate much of the')
             lines_after.append('# recipe automatically - you will need to examine the Makefile yourself and ensure')
@@ -753,7 +770,7 @@
             if scanfile and os.path.exists(scanfile):
                 values = AutotoolsRecipeHandler.extract_autotools_deps(lines_before, srctree, acfile=scanfile)
                 classes.extend(values.pop('inherit', '').split())
-                for var, value in values.iteritems():
+                for var, value in values.items():
                     if var == 'DEPENDS':
                         lines_before.append('# NOTE: some of these dependencies may be optional, check the Makefile and/or upstream documentation')
                     lines_before.append('%s = "%s"' % (var, value))
@@ -780,7 +797,7 @@
             if installtarget:
                 func.append('# This is a guess; additional arguments may be required')
                 makeargs = ''
-                with open(makefile[0], 'r') as f:
+                with open(makefile[0], 'r', errors='surrogateescape') as f:
                     for i in range(1, 100):
                         if 'DESTDIR' in f.readline():
                             makeargs += " 'DESTDIR=${D}'"
@@ -809,7 +826,7 @@
             version = None
             for fileitem in filelist:
                 linecount = 0
-                with open(fileitem, 'r') as f:
+                with open(fileitem, 'r', errors='surrogateescape') as f:
                     for line in f:
                         line = line.rstrip().strip('"\'')
                         linecount += 1
@@ -830,22 +847,35 @@
         if 'PV' in extravalues and 'PN' in extravalues:
             return
         filelist = RecipeHandler.checkfiles(srctree, ['*.spec'], recursive=True)
-        pn = None
-        pv = None
+        valuemap = {'Name': 'PN',
+                    'Version': 'PV',
+                    'Summary': 'SUMMARY',
+                    'Url': 'HOMEPAGE',
+                    'License': 'LICENSE'}
+        foundvalues = {}
         for fileitem in filelist:
             linecount = 0
-            with open(fileitem, 'r') as f:
+            with open(fileitem, 'r', errors='surrogateescape') as f:
                 for line in f:
-                    if line.startswith('Name:') and not pn:
-                        pn = line.split(':')[1].strip()
-                    if line.startswith('Version:') and not pv:
-                        pv = line.split(':')[1].strip()
-            if pv or pn:
-                if pv and not 'PV' in extravalues and validate_pv(pv):
-                    extravalues['PV'] = pv
-                if pn and not 'PN' in extravalues:
-                    extravalues['PN'] = pn
-                break
+                    for value, varname in valuemap.items():
+                        if line.startswith(value + ':') and not varname in foundvalues:
+                            foundvalues[varname] = line.split(':', 1)[1].strip()
+                            break
+                    if len(foundvalues) == len(valuemap):
+                        break
+        if 'PV' in foundvalues:
+            if not validate_pv(foundvalues['PV']):
+                del foundvalues['PV']
+        license = foundvalues.pop('LICENSE', None)
+        if license:
+            liccomment = '# NOTE: spec file indicates the license may be "%s"' % license
+            for i, line in enumerate(lines_before):
+                if line.startswith('LICENSE ='):
+                    lines_before.insert(i, liccomment)
+                    break
+            else:
+                lines_before.append(liccomment)
+        extravalues.update(foundvalues)
 
 def register_recipe_handlers(handlers):
     # Set priorities with some gaps so that other plugins can insert
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys_python.py b/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys_python.py
index c382330..e41d81a 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys_python.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/create_buildsys_python.py
@@ -61,8 +61,6 @@
     }
     # PN/PV are already set by recipetool core & desc can be extremely long
     excluded_fields = [
-        'Name',
-        'Version',
         'Description',
     ]
     setup_parse_map = {
@@ -88,8 +86,11 @@
     ]
     setuparg_multi_line_values = ['Description']
     replacements = [
+        ('License', r' +$', ''),
+        ('License', r'^ +', ''),
         ('License', r' ', '-'),
-        ('License', r'-License$', ''),
+        ('License', r'^GNU-', ''),
+        ('License', r'-[Ll]icen[cs]e(,?-[Vv]ersion)?', ''),
         ('License', r'^UNKNOWN$', ''),
 
         # Remove currently unhandled version numbers from these variables
@@ -218,6 +219,9 @@
             else:
                 info = self.get_setup_args_info(setupscript)
 
+        # Grab the license value before applying replacements
+        license_str = info.get('License', '').strip()
+
         self.apply_info_replacements(info)
 
         if uses_setuptools:
@@ -225,63 +229,53 @@
         else:
             classes.append('distutils')
 
+        if license_str:
+            for i, line in enumerate(lines_before):
+                if line.startswith('LICENSE = '):
+                    lines_before.insert(i, '# NOTE: License in setup.py/PKGINFO is: %s' % license_str)
+                    break
+
         if 'Classifier' in info:
+            existing_licenses = info.get('License', '')
             licenses = []
             for classifier in info['Classifier']:
                 if classifier in self.classifier_license_map:
                     license = self.classifier_license_map[classifier]
+                    if license == 'Apache' and 'Apache-2.0' in existing_licenses:
+                        license = 'Apache-2.0'
+                    elif license == 'GPL':
+                        if 'GPL-2.0' in existing_licenses or 'GPLv2' in existing_licenses:
+                            license = 'GPL-2.0'
+                        elif 'GPL-3.0' in existing_licenses or 'GPLv3' in existing_licenses:
+                            license = 'GPL-3.0'
+                    elif license == 'LGPL':
+                        if 'LGPL-2.1' in existing_licenses or 'LGPLv2.1' in existing_licenses:
+                            license = 'LGPL-2.1'
+                        elif 'LGPL-2.0' in existing_licenses or 'LGPLv2' in existing_licenses:
+                            license = 'LGPL-2.0'
+                        elif 'LGPL-3.0' in existing_licenses or 'LGPLv3' in existing_licenses:
+                            license = 'LGPL-3.0'
                     licenses.append(license)
 
             if licenses:
                 info['License'] = ' & '.join(licenses)
 
-
         # Map PKG-INFO & setup.py fields to bitbake variables
-        bbinfo = {}
-        for field, values in info.iteritems():
+        for field, values in info.items():
             if field in self.excluded_fields:
                 continue
 
             if field not in self.bbvar_map:
                 continue
 
-            if isinstance(values, basestring):
+            if isinstance(values, str):
                 value = values
             else:
                 value = ' '.join(str(v) for v in values if v)
 
             bbvar = self.bbvar_map[field]
-            if bbvar not in bbinfo and value:
-                bbinfo[bbvar] = value
-
-        comment_lic_line = None
-        for pos, line in enumerate(list(lines_before)):
-            if line.startswith('#') and 'LICENSE' in line:
-                comment_lic_line = pos
-            elif line.startswith('LICENSE =') and 'LICENSE' in bbinfo:
-                if line in ('LICENSE = "Unknown"', 'LICENSE = "CLOSED"'):
-                    lines_before[pos] = 'LICENSE = "{}"'.format(bbinfo['LICENSE'])
-                    if line == 'LICENSE = "CLOSED"' and comment_lic_line:
-                        lines_before[comment_lic_line:pos] = [
-                            '# WARNING: the following LICENSE value is a best guess - it is your',
-                            '# responsibility to verify that the value is complete and correct.'
-                        ]
-                del bbinfo['LICENSE']
-
-        src_uri_line = None
-        for pos, line in enumerate(lines_before):
-            if line.startswith('SRC_URI ='):
-                src_uri_line = pos
-
-        if bbinfo:
-            mdinfo = ['']
-            for k in sorted(bbinfo):
-                v = bbinfo[k]
-                mdinfo.append('{} = "{}"'.format(k, v))
-            if src_uri_line:
-                lines_before[src_uri_line-1:src_uri_line-1] = mdinfo
-            else:
-                lines_before.extend(mdinfo)
+            if bbvar not in extravalues and value:
+                extravalues[bbvar] = value
 
         mapped_deps, unmapped_deps = self.scan_setup_python_deps(srctree, setup_info, setup_non_literals)
 
@@ -294,8 +288,8 @@
                 lines_after.append('# The upstream names may not correspond exactly to bitbake package names.')
                 lines_after.append('#')
                 lines_after.append('# Uncomment this line to enable all the optional features.')
-                lines_after.append('#PACKAGECONFIG ?= "{}"'.format(' '.join(k.lower() for k in extras_req.iterkeys())))
-                for feature, feature_reqs in extras_req.iteritems():
+                lines_after.append('#PACKAGECONFIG ?= "{}"'.format(' '.join(k.lower() for k in extras_req)))
+                for feature, feature_reqs in extras_req.items():
                     unmapped_deps.difference_update(feature_reqs)
 
                     feature_req_deps = ('python-' + r.replace('.', '-').lower() for r in sorted(feature_reqs))
@@ -361,7 +355,7 @@
 
         # Naive mapping of setup() arguments to PKG-INFO field names
         for d in [info, non_literals]:
-            for key, value in d.items():
+            for key, value in list(d.items()):
                 new_key = _map(key)
                 if new_key != key:
                     del d[key]
@@ -436,14 +430,14 @@
                 return value
 
             value = info[variable]
-            if isinstance(value, basestring):
+            if isinstance(value, str):
                 new_value = replace_value(search, replace, value)
                 if new_value is None:
                     del info[variable]
                 elif new_value != value:
                     info[variable] = new_value
-            elif hasattr(value, 'iteritems'):
-                for dkey, dvalue in value.iteritems():
+            elif hasattr(value, 'items'):
+                for dkey, dvalue in list(value.items()):
                     new_list = []
                     for pos, a_value in enumerate(dvalue):
                         new_value = replace_value(search, replace, a_value)
@@ -504,8 +498,10 @@
         for dep in scanned_deps:
             mapped = provided_packages.get(dep)
             if mapped:
+                logger.debug('Mapped %s to %s' % (dep, mapped))
                 mapped_deps.add(mapped)
             else:
+                logger.debug('Could not map %s' % dep)
                 unmapped_deps.add(dep)
         return mapped_deps, unmapped_deps
 
@@ -516,7 +512,7 @@
         except (OSError, subprocess.CalledProcessError):
             pass
         else:
-            for line in dep_output.splitlines():
+            for line in dep_output.decode('utf-8').splitlines():
                 line = line.rstrip()
                 dep, filename = line.split('\t', 1)
                 if filename.endswith('/setup.py'):
@@ -558,7 +554,7 @@
                 else:
                     continue
 
-            for fn in files_info.iterkeys():
+            for fn in files_info:
                 for suffix in suffixes:
                     if fn.endswith(suffix):
                         break
@@ -566,6 +562,8 @@
                     continue
 
                 if fn.startswith(dynload_dir + os.sep):
+                    if '/.debug/' in fn:
+                        continue
                     base = os.path.basename(fn)
                     provided = base.split('.', 1)[0]
                     packages[provided] = os.path.basename(pkgdatafile)
@@ -608,7 +606,7 @@
     visitor.visit(parsed)
 
     non_literals, extensions = {}, []
-    for key, value in visitor.keywords.items():
+    for key, value in list(visitor.keywords.items()):
         if key == 'ext_modules':
             if isinstance(value, list):
                 for ext in value:
@@ -640,7 +638,7 @@
     def visit_setup(self, node):
         call = LiteralAstTransform().visit(node)
         self.keywords = call.keywords
-        for k, v in self.keywords.iteritems():
+        for k, v in self.keywords.items():
             if has_non_literals(v):
                self.non_literals.append(k)
 
@@ -706,10 +704,10 @@
 def has_non_literals(value):
     if isinstance(value, ast.AST):
         return True
-    elif isinstance(value, basestring):
+    elif isinstance(value, str):
         return False
-    elif hasattr(value, 'itervalues'):
-        return any(has_non_literals(v) for v in value.itervalues())
+    elif hasattr(value, 'values'):
+        return any(has_non_literals(v) for v in value.values())
     elif hasattr(value, '__iter__'):
         return any(has_non_literals(v) for v in value)
 
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/create_kernel.py b/import-layers/yocto-poky/scripts/lib/recipetool/create_kernel.py
index c6e86bd..7dac59f 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/create_kernel.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/create_kernel.py
@@ -59,7 +59,7 @@
                     kpatchlevel = -1
                     ksublevel = -1
                     kextraversion = ''
-                    with open(makefile, 'r') as f:
+                    with open(makefile, 'r', errors='surrogateescape') as f:
                         for i, line in enumerate(f):
                             if i > 10:
                                 break
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/create_kmod.py b/import-layers/yocto-poky/scripts/lib/recipetool/create_kmod.py
index fe39edb..7cf188d 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/create_kmod.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/create_kmod.py
@@ -53,7 +53,7 @@
                             break
                 else:
                     continue
-                with open(cfile, 'r') as f:
+                with open(cfile, 'r', errors='surrogateescape') as f:
                     for line in f:
                         if module_inc_re.match(line.strip()):
                             is_module = True
@@ -73,7 +73,7 @@
             in_install = False
             in_compile = False
             install_target = None
-            with open(makefile, 'r') as f:
+            with open(makefile, 'r', errors='surrogateescape') as f:
                 for line in f:
                     if line.startswith('install:'):
                         if not install_lines:
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/create_npm.py b/import-layers/yocto-poky/scripts/lib/recipetool/create_npm.py
index b3ffcdb..7bb844c 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/create_npm.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/create_npm.py
@@ -21,7 +21,7 @@
 import tempfile
 import shutil
 import json
-from recipetool.create import RecipeHandler, split_pkg_licenses
+from recipetool.create import RecipeHandler, split_pkg_licenses, handle_license_vars, check_npm
 
 logger = logging.getLogger('recipetool')
 
@@ -45,7 +45,7 @@
             license = data['license']
             if isinstance(license, dict):
                 license = license.get('type', None)
-        return None
+        return license
 
     def _shrinkwrap(self, srctree, localfilesdir, extravalues, lines_before):
         try:
@@ -83,6 +83,66 @@
         extravalues['extrafiles']['lockdown.json'] = tmpfile
         lines_before.append('NPM_LOCKDOWN := "${THISDIR}/${PN}/lockdown.json"')
 
+    def _handle_dependencies(self, d, deps, lines_before, srctree):
+        import scriptutils
+        # If this isn't a single module we need to get the dependencies
+        # and add them to SRC_URI
+        def varfunc(varname, origvalue, op, newlines):
+            if varname == 'SRC_URI':
+                if not origvalue.startswith('npm://'):
+                    src_uri = origvalue.split()
+                    changed = False
+                    for dep, depdata in deps.items():
+                        version = self.get_node_version(dep, depdata, d)
+                        if version:
+                            url = 'npm://registry.npmjs.org;name=%s;version=%s;subdir=node_modules/%s' % (dep, version, dep)
+                            scriptutils.fetch_uri(d, url, srctree)
+                            src_uri.append(url)
+                            changed = True
+                    if changed:
+                        return src_uri, None, -1, True
+            return origvalue, None, 0, True
+        updated, newlines = bb.utils.edit_metadata(lines_before, ['SRC_URI'], varfunc)
+        if updated:
+            del lines_before[:]
+            for line in newlines:
+                # Hack to avoid newlines that edit_metadata inserts
+                if line.endswith('\n'):
+                    line = line[:-1]
+                lines_before.append(line)
+        return updated
+
+    def _replace_license_vars(self, srctree, lines_before, handled, extravalues, d):
+        for item in handled:
+            if isinstance(item, tuple):
+                if item[0] == 'license':
+                    del item
+                    break
+
+        calledvars = []
+        def varfunc(varname, origvalue, op, newlines):
+            if varname in ['LICENSE', 'LIC_FILES_CHKSUM']:
+                for i, e in enumerate(reversed(newlines)):
+                    if not e.startswith('#'):
+                        stop = i
+                        while stop > 0:
+                            newlines.pop()
+                            stop -= 1
+                        break
+                calledvars.append(varname)
+                if len(calledvars) > 1:
+                    # The second time around, put the new license text in
+                    insertpos = len(newlines)
+                    handle_license_vars(srctree, newlines, handled, extravalues, d)
+                return None, None, 0, True
+            return origvalue, None, 0, True
+        updated, newlines = bb.utils.edit_metadata(lines_before, ['LICENSE', 'LIC_FILES_CHKSUM'], varfunc)
+        if updated:
+            del lines_before[:]
+            lines_before.extend(newlines)
+        else:
+            raise Exception('Did not find license variables')
+
     def process(self, srctree, classes, lines_before, lines_after, handled, extravalues):
         import bb.utils
         import oe
@@ -92,11 +152,13 @@
             return False
 
         def read_package_json(fn):
-            with open(fn, 'r') as f:
+            with open(fn, 'r', errors='surrogateescape') as f:
                 return json.loads(f.read())
 
         files = RecipeHandler.checkfiles(srctree, ['package.json'])
         if files:
+            check_npm(tinfoil.config_data)
+
             data = read_package_json(files[0])
             if 'name' in data and 'version' in data:
                 extravalues['PN'] = data['name']
@@ -104,9 +166,15 @@
                 classes.append('npm')
                 handled.append('buildsystem')
                 if 'description' in data:
-                    lines_before.append('SUMMARY = "%s"' % data['description'])
+                    extravalues['SUMMARY'] = data['description']
                 if 'homepage' in data:
-                    lines_before.append('HOMEPAGE = "%s"' % data['homepage'])
+                    extravalues['HOMEPAGE'] = data['homepage']
+
+                deps = data.get('dependencies', {})
+                updated = self._handle_dependencies(tinfoil.config_data, deps, lines_before, srctree)
+                if updated:
+                    # We need to redo the license stuff
+                    self._replace_license_vars(srctree, lines_before, handled, extravalues, tinfoil.config_data)
 
                 # Shrinkwrap
                 localfilesdir = tempfile.mkdtemp(prefix='recipetool-npm')
@@ -128,7 +196,7 @@
                     license = self._handle_license(data)
                     if license:
                         licenses['${PN}'] = license
-                    for pkgname, pkgitem in npmpackages.iteritems():
+                    for pkgname, pkgitem in npmpackages.items():
                         _, pdata = pkgitem
                         license = self._handle_license(pdata)
                         if license:
@@ -136,7 +204,7 @@
                     # Now write out the package-specific license values
                     # We need to strip out the json data dicts for this since split_pkg_licenses
                     # isn't expecting it
-                    packages = OrderedDict((x,y[0]) for x,y in npmpackages.iteritems())
+                    packages = OrderedDict((x,y[0]) for x,y in npmpackages.items())
                     packages['${PN}'] = ''
                     pkglicenses = split_pkg_licenses(licvalues, packages, lines_after, licenses)
                     all_licenses = list(set([item for pkglicense in pkglicenses.values() for item in pkglicense]))
@@ -148,9 +216,52 @@
                             lines_before[i] = 'LICENSE = "%s"' % ' & '.join(all_licenses)
                             break
 
+                # Need to move S setting after inherit npm
+                for i, line in enumerate(lines_before):
+                    if line.startswith('S ='):
+                        lines_before.pop(i)
+                        lines_after.insert(0, '# Must be set after inherit npm since that itself sets S')
+                        lines_after.insert(1, line)
+                        break
+
                 return True
 
         return False
 
+    # FIXME this is duplicated from lib/bb/fetch2/npm.py
+    def _parse_view(self, output):
+        '''
+        Parse the output of npm view --json; the last JSON result
+        is assumed to be the one that we're interested in.
+        '''
+        pdata = None
+        outdeps = {}
+        datalines = []
+        bracelevel = 0
+        for line in output.splitlines():
+            if bracelevel:
+                datalines.append(line)
+            elif '{' in line:
+                datalines = []
+                datalines.append(line)
+            bracelevel = bracelevel + line.count('{') - line.count('}')
+        if datalines:
+            pdata = json.loads('\n'.join(datalines))
+        return pdata
+
+    # FIXME this is effectively duplicated from lib/bb/fetch2/npm.py
+    # (split out from _getdependencies())
+    def get_node_version(self, pkg, version, d):
+        import bb.fetch2
+        pkgfullname = pkg
+        if version != '*' and not '/' in version:
+            pkgfullname += "@'%s'" % version
+        logger.debug(2, "Calling getdeps on %s" % pkg)
+        runenv = dict(os.environ, PATH=d.getVar('PATH', True))
+        fetchcmd = "npm view %s --json" % pkgfullname
+        output, _ = bb.process.run(fetchcmd, stderr=subprocess.STDOUT, env=runenv, shell=True)
+        data = self._parse_view(output)
+        return data.get('version', None)
+
 def register_recipe_handlers(handlers):
     handlers.append((NpmRecipeHandler(), 60))
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/newappend.py b/import-layers/yocto-poky/scripts/lib/recipetool/newappend.py
index bdf0693..fbdd7bc 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/newappend.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/newappend.py
@@ -39,16 +39,6 @@
     tinfoil = instance
 
 
-def _provide_to_pn(cooker, provide):
-    """Get the name of the preferred recipe for the specified provide."""
-    import bb.providers
-    filenames = cooker.recipecache.providers[provide]
-    eligible, foundUnique = bb.providers.filterProviders(filenames, provide, cooker.expanded_data, cooker.recipecache)
-    filename = eligible[0]
-    pn = cooker.recipecache.pkg_fn[filename]
-    return pn
-
-
 def _get_recipe_file(cooker, pn):
     import oe.recipeutils
     recipefile = oe.recipeutils.pn_to_recipe(cooker, pn)
@@ -70,8 +60,7 @@
 def newappend(args):
     import oe.recipeutils
 
-    pn = _provide_to_pn(tinfoil.cooker, args.target)
-    recipe_path = _get_recipe_file(tinfoil.cooker, pn)
+    recipe_path = _get_recipe_file(tinfoil.cooker, args.target)
 
     rd = tinfoil.config_data.createCopy()
     rd.setVar('FILE', recipe_path)
@@ -81,7 +70,7 @@
         return 1
 
     if not path_ok:
-        logger.warn('Unable to determine correct subdirectory path for bbappend file - check that what %s adds to BBFILES also matches .bbappend files. Using %s for now, but until you fix this the bbappend will not be applied.', os.path.join(destlayerdir, 'conf', 'layer.conf'), os.path.dirname(appendpath))
+        logger.warn('Unable to determine correct subdirectory path for bbappend file - check that what %s adds to BBFILES also matches .bbappend files. Using %s for now, but until you fix this the bbappend will not be applied.', os.path.join(args.destlayer, 'conf', 'layer.conf'), os.path.dirname(append_path))
 
     layerdirs = [os.path.abspath(layerdir) for layerdir in rd.getVar('BBLAYERS', True).split()]
     if not os.path.abspath(args.destlayer) in layerdirs:
diff --git a/import-layers/yocto-poky/scripts/lib/recipetool/setvar.py b/import-layers/yocto-poky/scripts/lib/recipetool/setvar.py
index 657d2b6..85701c0 100644
--- a/import-layers/yocto-poky/scripts/lib/recipetool/setvar.py
+++ b/import-layers/yocto-poky/scripts/lib/recipetool/setvar.py
@@ -51,7 +51,7 @@
     if args.recipe_only:
         patches = [oe.recipeutils.patch_recipe_file(args.recipefile, varvalues, patch=args.patch)]
     else:
-        rd = oe.recipeutils.parse_recipe(args.recipefile, None, tinfoil.config_data)
+        rd = oe.recipeutils.parse_recipe(tinfoil.cooker, args.recipefile, None)
         if not rd:
             return 1
         patches = oe.recipeutils.patch_recipe(rd, args.recipefile, varvalues, patch=args.patch)
diff --git a/import-layers/yocto-poky/scripts/lib/scriptutils.py b/import-layers/yocto-poky/scripts/lib/scriptutils.py
index aef19d3..5ccc027 100644
--- a/import-layers/yocto-poky/scripts/lib/scriptutils.py
+++ b/import-layers/yocto-poky/scripts/lib/scriptutils.py
@@ -103,7 +103,7 @@
     return ret
 
 def run_editor(fn):
-    if isinstance(fn, basestring):
+    if isinstance(fn, str):
         params = '"%s"' % fn
     else:
         params = ''
@@ -116,3 +116,16 @@
     except OSError as exc:
         logger.error("Execution of editor '%s' failed: %s", editor, exc)
         return 1
+
+def is_src_url(param):
+    """
+    Check if a parameter is a URL and return True if so
+    NOTE: be careful about changing this as it will influence how devtool/recipetool command line handling works
+    """
+    if not param:
+        return False
+    elif '://' in param:
+        return True
+    elif param.startswith('git@') or ('@' in param and param.endswith('.git')):
+        return True
+    return False
diff --git a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-gpt.wks b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-gpt.wks
index ea01cf3..8d7d8de 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-gpt.wks
+++ b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-gpt.wks
@@ -6,5 +6,5 @@
 part /boot --source bootimg-pcbios --ondisk sda --label boot --active --align 1024
 part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
 
-bootloader  --ptable gpt --timeout=0  --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=tty0"
+bootloader  --ptable gpt --timeout=0  --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=tty0 console=ttyS0,115200n8"
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-multi-rootfs.wks b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-multi-rootfs.wks
index 8a81f8f..f61d941 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-multi-rootfs.wks
+++ b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk-multi-rootfs.wks
@@ -19,5 +19,5 @@
 part / --source rootfs --rootfs-dir=rootfs1 --ondisk sda --fstype=ext4 --label platform --align 1024
 part /rescue --source rootfs --rootfs-dir=rootfs2 --ondisk sda --fstype=ext4 --label secondary --align 1024
 
-bootloader  --timeout=0  --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=tty0"
+bootloader  --timeout=0  --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=tty0 console=ttyS0,115200n8"
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk.wks b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk.wks
index 6db74a7..8c8e06b 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk.wks
+++ b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/directdisk.wks
@@ -4,5 +4,5 @@
 
 include common.wks.inc
 
-bootloader  --timeout=0  --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=tty0"
+bootloader  --timeout=0  --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=tty0 console=ttyS0,115200n8"
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkefidisk.wks b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkefidisk.wks
index 696e94e..9f534fe 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkefidisk.wks
+++ b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkefidisk.wks
@@ -4,8 +4,8 @@
 
 part /boot --source bootimg-efi --sourceparams="loader=grub-efi" --ondisk sda --label msdos --active --align 1024
 
-part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024
+part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
 
 part swap --ondisk sda --size 44 --label swap1 --fstype=swap
 
-bootloader  --timeout=10  --append="rootwait rootfstype=ext4 console=ttyPCH0,115200 console=tty0 vmalloc=256MB snd-hda-intel.enable_msi=0"
+bootloader --ptable gpt --timeout=5 --append="rootfstype=ext4 console=ttyS0,115200 console=tty0"
diff --git a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkgummidisk.wks b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkgummidisk.wks
index 66a22f6..f3ae090 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkgummidisk.wks
+++ b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/mkgummidisk.wks
@@ -8,4 +8,4 @@
 
 part swap --ondisk sda --size 44 --label swap1 --fstype=swap
 
-bootloader  --timeout=10  --append="rootwait rootfstype=ext4 console=ttyPCH0,115200 console=tty0 vmalloc=256MB snd-hda-intel.enable_msi=0"
+bootloader --ptable gpt --timeout=5  --append="rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0"
diff --git a/import-layers/yocto-poky/scripts/lib/wic/canned-wks/systemd-bootdisk.wks b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/systemd-bootdisk.wks
new file mode 100644
index 0000000..b900023
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/wic/canned-wks/systemd-bootdisk.wks
@@ -0,0 +1,11 @@
+# short-description: Create an EFI disk image with systemd-boot
+# long-description: Creates a partitioned EFI disk image that the user
+# can directly dd to boot media. The selected bootloader is systemd-boot.
+
+part /boot --source bootimg-efi --sourceparams="loader=systemd-boot" --ondisk sda --label msdos --active --align 1024
+
+part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024
+
+part swap --ondisk sda --size 44 --label swap1 --fstype=swap
+
+bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0"
diff --git a/import-layers/yocto-poky/scripts/lib/wic/conf.py b/import-layers/yocto-poky/scripts/lib/wic/conf.py
index f7d56d0..070ec30 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/conf.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/conf.py
@@ -70,7 +70,7 @@
         self.create = {}
 
         # initialize the values with defaults
-        for sec, vals in self.DEFAULTS.iteritems():
+        for sec, vals in self.DEFAULTS.items():
             setattr(self, sec, vals)
 
     def __set_ksconf(self, ksconf):
diff --git a/import-layers/yocto-poky/scripts/lib/wic/creator.py b/import-layers/yocto-poky/scripts/lib/wic/creator.py
index 5231297..8f7d150 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/creator.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/creator.py
@@ -24,7 +24,7 @@
 from wic.plugin import pluginmgr
 
 
-class Creator(object):
+class Creator():
     """${name}: create an image
 
     Usage:
@@ -41,7 +41,7 @@
 
         # get cmds from pluginmgr
         # mix-in do_subcmd interface
-        for subcmd, klass in pluginmgr.get_plugins('imager').iteritems():
+        for subcmd, klass in pluginmgr.get_plugins('imager').items():
             if not hasattr(klass, 'do_create'):
                 msger.warning("Unsupported subcmd: %s" % subcmd)
                 continue
@@ -69,6 +69,7 @@
         optparser.add_option('', '--tmpfs', action='store_true', dest='enabletmpfs',
                              help='Setup tmpdir as tmpfs to accelerate, experimental'
                                   ' feature, use it if you have more than 4G memory')
+        optparser.add_option('', '--bmap', action='store_true', help='generate .bmap')
         return optparser
 
     def postoptparse(self, options):
diff --git a/import-layers/yocto-poky/scripts/lib/wic/engine.py b/import-layers/yocto-poky/scripts/lib/wic/engine.py
index 76b93e8..5b10463 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/engine.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/engine.py
@@ -44,7 +44,7 @@
     Returns True if it is, false otherwise
     """
     if not os.environ.get("BUILDDIR"):
-        print "BUILDDIR not found, exiting. (Did you forget to source oe-init-build-env?)"
+        print("BUILDDIR not found, exiting. (Did you forget to source oe-init-build-env?)")
         sys.exit(1)
 
     return True
@@ -107,7 +107,7 @@
                                 desc = line[idx + len("short-description:"):].strip()
                                 break
                     basename = os.path.splitext(fname)[0]
-                    print "  %s\t\t%s" % (basename.ljust(30), desc)
+                    print("  %s\t\t%s" % (basename.ljust(30), desc))
 
 
 def list_canned_image_help(scripts_path, fullpath):
@@ -120,15 +120,15 @@
             if not found:
                 idx = line.find("long-description:")
                 if idx != -1:
-                    print
-                    print line[idx + len("long-description:"):].strip()
+                    print()
+                    print(line[idx + len("long-description:"):].strip())
                     found = True
                 continue
             if not line.strip():
                 break
             idx = line.find("#")
             if idx != -1:
-                print line[idx + len("#:"):].rstrip()
+                print(line[idx + len("#:"):].rstrip())
             else:
                 break
 
@@ -140,12 +140,12 @@
     plugins = pluginmgr.get_source_plugins()
 
     for plugin in plugins:
-        print "  %s" % plugin
+        print("  %s" % plugin)
 
 
 def wic_create(wks_file, rootfs_dir, bootimg_dir, kernel_dir,
                native_sysroot, scripts_path, image_output_dir,
-               compressor, debug):
+               compressor, bmap, debug):
     """Create image
 
     wks_file - user-defined OE kickstart file
@@ -156,6 +156,7 @@
     scripts_path - absolute path to /scripts dir
     image_output_dir - dirname to create for image
     compressor - compressor utility to compress the image
+    bmap - enable generation of .bmap
 
     Normally, the values for the build artifacts values are determined
     by 'wic -e' from the output of the 'bitbake -e' command given an
@@ -178,7 +179,7 @@
     try:
         oe_builddir = os.environ["BUILDDIR"]
     except KeyError:
-        print "BUILDDIR not found, exiting. (Did you forget to source oe-init-build-env?)"
+        print("BUILDDIR not found, exiting. (Did you forget to source oe-init-build-env?)")
         sys.exit(1)
 
     if debug:
@@ -186,10 +187,14 @@
 
     crobj = creator.Creator()
 
-    crobj.main(["direct", native_sysroot, kernel_dir, bootimg_dir, rootfs_dir,
-                wks_file, image_output_dir, oe_builddir, compressor or ""])
+    cmdline = ["direct", native_sysroot, kernel_dir, bootimg_dir, rootfs_dir,
+                wks_file, image_output_dir, oe_builddir, compressor or ""]
+    if bmap:
+        cmdline.append('--bmap')
 
-    print "\nThe image(s) were created using OE kickstart file:\n  %s" % wks_file
+    crobj.main(cmdline)
+
+    print("\nThe image(s) were created using OE kickstart file:\n  %s" % wks_file)
 
 
 def wic_list(args, scripts_path):
@@ -209,10 +214,10 @@
         wks_file = args[0]
         fullpath = find_canned_image(scripts_path, wks_file)
         if not fullpath:
-            print "No image named %s found, exiting. "\
+            print("No image named %s found, exiting. "\
                   "(Use 'wic list images' to list available images, or "\
                   "specify a fully-qualified OE kickstart (.wks) "\
-                  "filename)\n" % wks_file
+                  "filename)\n" % wks_file)
             sys.exit(1)
         list_canned_image_help(scripts_path, fullpath)
         return True
diff --git a/import-layers/yocto-poky/scripts/lib/wic/filemap.py b/import-layers/yocto-poky/scripts/lib/wic/filemap.py
new file mode 100644
index 0000000..f3240ba
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/lib/wic/filemap.py
@@ -0,0 +1,561 @@
+# Copyright (c) 2012 Intel, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License, version 2,
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+"""
+This module implements python implements a way to get file block. Two methods
+are supported - the FIEMAP ioctl and the 'SEEK_HOLE / SEEK_DATA' features of
+the file seek syscall. The former is implemented by the 'FilemapFiemap' class,
+the latter is implemented by the 'FilemapSeek' class. Both classes provide the
+same API. The 'filemap' function automatically selects which class can be used
+and returns an instance of the class.
+"""
+
+# Disable the following pylint recommendations:
+#   * Too many instance attributes (R0902)
+# pylint: disable=R0902
+
+import os
+import struct
+import array
+import fcntl
+import tempfile
+import logging
+
+def get_block_size(file_obj):
+    """
+    Returns block size for file object 'file_obj'. Errors are indicated by the
+    'IOError' exception.
+    """
+
+    from fcntl import ioctl
+    import struct
+
+    # Get the block size of the host file-system for the image file by calling
+    # the FIGETBSZ ioctl (number 2).
+    binary_data = ioctl(file_obj, 2, struct.pack('I', 0))
+    return struct.unpack('I', binary_data)[0]
+
+class ErrorNotSupp(Exception):
+    """
+    An exception of this type is raised when the 'FIEMAP' or 'SEEK_HOLE' feature
+    is not supported either by the kernel or the file-system.
+    """
+    pass
+
+class Error(Exception):
+    """A class for all the other exceptions raised by this module."""
+    pass
+
+
+class _FilemapBase(object):
+    """
+    This is a base class for a couple of other classes in this module. This
+    class simply performs the common parts of the initialization process: opens
+    the image file, gets its size, etc. The 'log' parameter is the logger object
+    to use for printing messages.
+    """
+
+    def __init__(self, image, log=None):
+        """
+        Initialize a class instance. The 'image' argument is full path to the
+        file or file object to operate on.
+        """
+
+        self._log = log
+        if self._log is None:
+            self._log = logging.getLogger(__name__)
+
+        self._f_image_needs_close = False
+
+        if hasattr(image, "fileno"):
+            self._f_image = image
+            self._image_path = image.name
+        else:
+            self._image_path = image
+            self._open_image_file()
+
+        try:
+            self.image_size = os.fstat(self._f_image.fileno()).st_size
+        except IOError as err:
+            raise Error("cannot get information about file '%s': %s"
+                        % (self._f_image.name, err))
+
+        try:
+            self.block_size = get_block_size(self._f_image)
+        except IOError as err:
+            raise Error("cannot get block size for '%s': %s"
+                        % (self._image_path, err))
+
+        self.blocks_cnt = self.image_size + self.block_size - 1
+        self.blocks_cnt //= self.block_size
+
+        try:
+            self._f_image.flush()
+        except IOError as err:
+            raise Error("cannot flush image file '%s': %s"
+                        % (self._image_path, err))
+
+        try:
+            os.fsync(self._f_image.fileno()),
+        except OSError as err:
+            raise Error("cannot synchronize image file '%s': %s "
+                        % (self._image_path, err.strerror))
+
+        self._log.debug("opened image \"%s\"" % self._image_path)
+        self._log.debug("block size %d, blocks count %d, image size %d"
+                        % (self.block_size, self.blocks_cnt, self.image_size))
+
+    def __del__(self):
+        """The class destructor which just closes the image file."""
+        if self._f_image_needs_close:
+            self._f_image.close()
+
+    def _open_image_file(self):
+        """Open the image file."""
+        try:
+            self._f_image = open(self._image_path, 'rb')
+        except IOError as err:
+            raise Error("cannot open image file '%s': %s"
+                        % (self._image_path, err))
+
+        self._f_image_needs_close = True
+
+    def block_is_mapped(self, block): # pylint: disable=W0613,R0201
+        """
+        This method has has to be implemented by child classes. It returns
+        'True' if block number 'block' of the image file is mapped and 'False'
+        otherwise.
+        """
+
+        raise Error("the method is not implemented")
+
+    def block_is_unmapped(self, block): # pylint: disable=W0613,R0201
+        """
+        This method has has to be implemented by child classes. It returns
+        'True' if block number 'block' of the image file is not mapped (hole)
+        and 'False' otherwise.
+        """
+
+        raise Error("the method is not implemented")
+
+    def get_mapped_ranges(self, start, count): # pylint: disable=W0613,R0201
+        """
+        This method has has to be implemented by child classes. This is a
+        generator which yields ranges of mapped blocks in the file. The ranges
+        are tuples of 2 elements: [first, last], where 'first' is the first
+        mapped block and 'last' is the last mapped block.
+
+        The ranges are yielded for the area of the file of size 'count' blocks,
+        starting from block 'start'.
+        """
+
+        raise Error("the method is not implemented")
+
+    def get_unmapped_ranges(self, start, count): # pylint: disable=W0613,R0201
+        """
+        This method has has to be implemented by child classes. Just like
+        'get_mapped_ranges()', but yields unmapped block ranges instead
+        (holes).
+        """
+
+        raise Error("the method is not implemented")
+
+
+# The 'SEEK_HOLE' and 'SEEK_DATA' options of the file seek system call
+_SEEK_DATA = 3
+_SEEK_HOLE = 4
+
+def _lseek(file_obj, offset, whence):
+    """This is a helper function which invokes 'os.lseek' for file object
+    'file_obj' and with specified 'offset' and 'whence'. The 'whence'
+    argument is supposed to be either '_SEEK_DATA' or '_SEEK_HOLE'. When
+    there is no more data or hole starting from 'offset', this function
+    returns '-1'.  Otherwise the data or hole position is returned."""
+
+    try:
+        return os.lseek(file_obj.fileno(), offset, whence)
+    except OSError as err:
+        # The 'lseek' system call returns the ENXIO if there is no data or
+        # hole starting from the specified offset.
+        if err.errno == os.errno.ENXIO:
+            return -1
+        elif err.errno == os.errno.EINVAL:
+            raise ErrorNotSupp("the kernel or file-system does not support "
+                               "\"SEEK_HOLE\" and \"SEEK_DATA\"")
+        else:
+            raise
+
+class FilemapSeek(_FilemapBase):
+    """
+    This class uses the 'SEEK_HOLE' and 'SEEK_DATA' to find file block mapping.
+    Unfortunately, the current implementation requires the caller to have write
+    access to the image file.
+    """
+
+    def __init__(self, image, log=None):
+        """Refer the '_FilemapBase' class for the documentation."""
+
+        # Call the base class constructor first
+        _FilemapBase.__init__(self, image, log)
+        self._log.debug("FilemapSeek: initializing")
+
+        self._probe_seek_hole()
+
+    def _probe_seek_hole(self):
+        """
+        Check whether the system implements 'SEEK_HOLE' and 'SEEK_DATA'.
+        Unfortunately, there seems to be no clean way for detecting this,
+        because often the system just fakes them by just assuming that all
+        files are fully mapped, so 'SEEK_HOLE' always returns EOF and
+        'SEEK_DATA' always returns the requested offset.
+
+        I could not invent a better way of detecting the fake 'SEEK_HOLE'
+        implementation than just to create a temporary file in the same
+        directory where the image file resides. It would be nice to change this
+        to something better.
+        """
+
+        directory = os.path.dirname(self._image_path)
+
+        try:
+            tmp_obj = tempfile.TemporaryFile("w+", dir=directory)
+        except IOError as err:
+            raise ErrorNotSupp("cannot create a temporary in \"%s\": %s"
+                              % (directory, err))
+
+        try:
+            os.ftruncate(tmp_obj.fileno(), self.block_size)
+        except OSError as err:
+            raise ErrorNotSupp("cannot truncate temporary file in \"%s\": %s"
+                               % (directory, err))
+
+        offs = _lseek(tmp_obj, 0, _SEEK_HOLE)
+        if offs != 0:
+            # We are dealing with the stub 'SEEK_HOLE' implementation which
+            # always returns EOF.
+            self._log.debug("lseek(0, SEEK_HOLE) returned %d" % offs)
+            raise ErrorNotSupp("the file-system does not support "
+                               "\"SEEK_HOLE\" and \"SEEK_DATA\" but only "
+                               "provides a stub implementation")
+
+        tmp_obj.close()
+
+    def block_is_mapped(self, block):
+        """Refer the '_FilemapBase' class for the documentation."""
+        offs = _lseek(self._f_image, block * self.block_size, _SEEK_DATA)
+        if offs == -1:
+            result = False
+        else:
+            result = (offs // self.block_size == block)
+
+        self._log.debug("FilemapSeek: block_is_mapped(%d) returns %s"
+                        % (block, result))
+        return result
+
+    def block_is_unmapped(self, block):
+        """Refer the '_FilemapBase' class for the documentation."""
+        return not self.block_is_mapped(block)
+
+    def _get_ranges(self, start, count, whence1, whence2):
+        """
+        This function implements 'get_mapped_ranges()' and
+        'get_unmapped_ranges()' depending on what is passed in the 'whence1'
+        and 'whence2' arguments.
+        """
+
+        assert whence1 != whence2
+        end = start * self.block_size
+        limit = end + count * self.block_size
+
+        while True:
+            start = _lseek(self._f_image, end, whence1)
+            if start == -1 or start >= limit or start == self.image_size:
+                break
+
+            end = _lseek(self._f_image, start, whence2)
+            if end == -1 or end == self.image_size:
+                end = self.blocks_cnt * self.block_size
+            if end > limit:
+                end = limit
+
+            start_blk = start // self.block_size
+            end_blk = end // self.block_size - 1
+            self._log.debug("FilemapSeek: yielding range (%d, %d)"
+                            % (start_blk, end_blk))
+            yield (start_blk, end_blk)
+
+    def get_mapped_ranges(self, start, count):
+        """Refer the '_FilemapBase' class for the documentation."""
+        self._log.debug("FilemapSeek: get_mapped_ranges(%d,  %d(%d))"
+                        % (start, count, start + count - 1))
+        return self._get_ranges(start, count, _SEEK_DATA, _SEEK_HOLE)
+
+    def get_unmapped_ranges(self, start, count):
+        """Refer the '_FilemapBase' class for the documentation."""
+        self._log.debug("FilemapSeek: get_unmapped_ranges(%d,  %d(%d))"
+                        % (start, count, start + count - 1))
+        return self._get_ranges(start, count, _SEEK_HOLE, _SEEK_DATA)
+
+
+# Below goes the FIEMAP ioctl implementation, which is not very readable
+# because it deals with the rather complex FIEMAP ioctl. To understand the
+# code, you need to know the FIEMAP interface, which is documented in the
+# "Documentation/filesystems/fiemap.txt" file in the Linux kernel sources.
+
+# Format string for 'struct fiemap'
+_FIEMAP_FORMAT = "=QQLLLL"
+# sizeof(struct fiemap)
+_FIEMAP_SIZE = struct.calcsize(_FIEMAP_FORMAT)
+# Format string for 'struct fiemap_extent'
+_FIEMAP_EXTENT_FORMAT = "=QQQQQLLLL"
+# sizeof(struct fiemap_extent)
+_FIEMAP_EXTENT_SIZE = struct.calcsize(_FIEMAP_EXTENT_FORMAT)
+# The FIEMAP ioctl number
+_FIEMAP_IOCTL = 0xC020660B
+# This FIEMAP ioctl flag which instructs the kernel to sync the file before
+# reading the block map
+_FIEMAP_FLAG_SYNC = 0x00000001
+# Size of the buffer for 'struct fiemap_extent' elements which will be used
+# when invoking the FIEMAP ioctl. The larger is the buffer, the less times the
+# FIEMAP ioctl will be invoked.
+_FIEMAP_BUFFER_SIZE = 256 * 1024
+
+class FilemapFiemap(_FilemapBase):
+    """
+    This class provides API to the FIEMAP ioctl. Namely, it allows to iterate
+    over all mapped blocks and over all holes.
+
+    This class synchronizes the image file every time it invokes the FIEMAP
+    ioctl in order to work-around early FIEMAP implementation kernel bugs.
+    """
+
+    def __init__(self, image, log=None):
+        """
+        Initialize a class instance. The 'image' argument is full the file
+        object to operate on.
+        """
+
+        # Call the base class constructor first
+        _FilemapBase.__init__(self, image, log)
+        self._log.debug("FilemapFiemap: initializing")
+
+        self._buf_size = _FIEMAP_BUFFER_SIZE
+
+        # Calculate how many 'struct fiemap_extent' elements fit the buffer
+        self._buf_size -= _FIEMAP_SIZE
+        self._fiemap_extent_cnt = self._buf_size // _FIEMAP_EXTENT_SIZE
+        assert self._fiemap_extent_cnt > 0
+        self._buf_size = self._fiemap_extent_cnt * _FIEMAP_EXTENT_SIZE
+        self._buf_size += _FIEMAP_SIZE
+
+        # Allocate a mutable buffer for the FIEMAP ioctl
+        self._buf = array.array('B', [0] * self._buf_size)
+
+        # Check if the FIEMAP ioctl is supported
+        self.block_is_mapped(0)
+
+    def _invoke_fiemap(self, block, count):
+        """
+        Invoke the FIEMAP ioctl for 'count' blocks of the file starting from
+        block number 'block'.
+
+        The full result of the operation is stored in 'self._buf' on exit.
+        Returns the unpacked 'struct fiemap' data structure in form of a python
+        list (just like 'struct.upack()').
+        """
+
+        if self.blocks_cnt != 0 and (block < 0 or block >= self.blocks_cnt):
+            raise Error("bad block number %d, should be within [0, %d]"
+                        % (block, self.blocks_cnt))
+
+        # Initialize the 'struct fiemap' part of the buffer. We use the
+        # '_FIEMAP_FLAG_SYNC' flag in order to make sure the file is
+        # synchronized. The reason for this is that early FIEMAP
+        # implementations had many bugs related to cached dirty data, and
+        # synchronizing the file is a necessary work-around.
+        struct.pack_into(_FIEMAP_FORMAT, self._buf, 0, block * self.block_size,
+                         count * self.block_size, _FIEMAP_FLAG_SYNC, 0,
+                         self._fiemap_extent_cnt, 0)
+
+        try:
+            fcntl.ioctl(self._f_image, _FIEMAP_IOCTL, self._buf, 1)
+        except IOError as err:
+            # Note, the FIEMAP ioctl is supported by the Linux kernel starting
+            # from version 2.6.28 (year 2008).
+            if err.errno == os.errno.EOPNOTSUPP:
+                errstr = "FilemapFiemap: the FIEMAP ioctl is not supported " \
+                         "by the file-system"
+                self._log.debug(errstr)
+                raise ErrorNotSupp(errstr)
+            if err.errno == os.errno.ENOTTY:
+                errstr = "FilemapFiemap: the FIEMAP ioctl is not supported " \
+                         "by the kernel"
+                self._log.debug(errstr)
+                raise ErrorNotSupp(errstr)
+            raise Error("the FIEMAP ioctl failed for '%s': %s"
+                        % (self._image_path, err))
+
+        return struct.unpack(_FIEMAP_FORMAT, self._buf[:_FIEMAP_SIZE])
+
+    def block_is_mapped(self, block):
+        """Refer the '_FilemapBase' class for the documentation."""
+        struct_fiemap = self._invoke_fiemap(block, 1)
+
+        # The 3rd element of 'struct_fiemap' is the 'fm_mapped_extents' field.
+        # If it contains zero, the block is not mapped, otherwise it is
+        # mapped.
+        result = bool(struct_fiemap[3])
+        self._log.debug("FilemapFiemap: block_is_mapped(%d) returns %s"
+                        % (block, result))
+        return result
+
+    def block_is_unmapped(self, block):
+        """Refer the '_FilemapBase' class for the documentation."""
+        return not self.block_is_mapped(block)
+
+    def _unpack_fiemap_extent(self, index):
+        """
+        Unpack a 'struct fiemap_extent' structure object number 'index' from
+        the internal 'self._buf' buffer.
+        """
+
+        offset = _FIEMAP_SIZE + _FIEMAP_EXTENT_SIZE * index
+        return struct.unpack(_FIEMAP_EXTENT_FORMAT,
+                             self._buf[offset : offset + _FIEMAP_EXTENT_SIZE])
+
+    def _do_get_mapped_ranges(self, start, count):
+        """
+        Implements most the functionality for the  'get_mapped_ranges()'
+        generator: invokes the FIEMAP ioctl, walks through the mapped extents
+        and yields mapped block ranges. However, the ranges may be consecutive
+        (e.g., (1, 100), (100, 200)) and 'get_mapped_ranges()' simply merges
+        them.
+        """
+
+        block = start
+        while block < start + count:
+            struct_fiemap = self._invoke_fiemap(block, count)
+
+            mapped_extents = struct_fiemap[3]
+            if mapped_extents == 0:
+                # No more mapped blocks
+                return
+
+            extent = 0
+            while extent < mapped_extents:
+                fiemap_extent = self._unpack_fiemap_extent(extent)
+
+                # Start of the extent
+                extent_start = fiemap_extent[0]
+                # Starting block number of the extent
+                extent_block = extent_start // self.block_size
+                # Length of the extent
+                extent_len = fiemap_extent[2]
+                # Count of blocks in the extent
+                extent_count = extent_len // self.block_size
+
+                # Extent length and offset have to be block-aligned
+                assert extent_start % self.block_size == 0
+                assert extent_len % self.block_size == 0
+
+                if extent_block > start + count - 1:
+                    return
+
+                first = max(extent_block, block)
+                last = min(extent_block + extent_count, start + count) - 1
+                yield (first, last)
+
+                extent += 1
+
+            block = extent_block + extent_count
+
+    def get_mapped_ranges(self, start, count):
+        """Refer the '_FilemapBase' class for the documentation."""
+        self._log.debug("FilemapFiemap: get_mapped_ranges(%d,  %d(%d))"
+                        % (start, count, start + count - 1))
+        iterator = self._do_get_mapped_ranges(start, count)
+        first_prev, last_prev = next(iterator)
+
+        for first, last in iterator:
+            if last_prev == first - 1:
+                last_prev = last
+            else:
+                self._log.debug("FilemapFiemap: yielding range (%d, %d)"
+                                % (first_prev, last_prev))
+                yield (first_prev, last_prev)
+                first_prev, last_prev = first, last
+
+        self._log.debug("FilemapFiemap: yielding range (%d, %d)"
+                        % (first_prev, last_prev))
+        yield (first_prev, last_prev)
+
+    def get_unmapped_ranges(self, start, count):
+        """Refer the '_FilemapBase' class for the documentation."""
+        self._log.debug("FilemapFiemap: get_unmapped_ranges(%d,  %d(%d))"
+                        % (start, count, start + count - 1))
+        hole_first = start
+        for first, last in self._do_get_mapped_ranges(start, count):
+            if first > hole_first:
+                self._log.debug("FilemapFiemap: yielding range (%d, %d)"
+                                % (hole_first, first - 1))
+                yield (hole_first, first - 1)
+
+            hole_first = last + 1
+
+        if hole_first < start + count:
+            self._log.debug("FilemapFiemap: yielding range (%d, %d)"
+                            % (hole_first, start + count - 1))
+            yield (hole_first, start + count - 1)
+
+def filemap(image, log=None):
+    """
+    Create and return an instance of a Filemap class - 'FilemapFiemap' or
+    'FilemapSeek', depending on what the system we run on supports. If the
+    FIEMAP ioctl is supported, an instance of the 'FilemapFiemap' class is
+    returned. Otherwise, if 'SEEK_HOLE' is supported an instance of the
+    'FilemapSeek' class is returned. If none of these are supported, the
+    function generates an 'Error' type exception.
+    """
+
+    try:
+        return FilemapFiemap(image, log)
+    except ErrorNotSupp:
+        return FilemapSeek(image, log)
+
+def sparse_copy(src_fname, dst_fname, offset=0, skip=0):
+    """Efficiently copy sparse file to or into another file."""
+    fmap = filemap(src_fname)
+    try:
+        dst_file = open(dst_fname, 'r+b')
+    except IOError:
+        dst_file = open(dst_fname, 'wb')
+
+    for first, last in fmap.get_mapped_ranges(0, fmap.blocks_cnt):
+        start = first * fmap.block_size
+        end = (last + 1) * fmap.block_size
+
+        if start < skip < end:
+            start = skip
+
+        fmap._f_image.seek(start, os.SEEK_SET)
+        dst_file.seek(offset + start, os.SEEK_SET)
+
+        chunk_size = 1024 * 1024
+        to_read = end - start
+        read = 0
+
+        while read < to_read:
+            if read + chunk_size > to_read:
+                chunk_size = to_read - read
+            chunk = fmap._f_image.read(chunk_size)
+            dst_file.write(chunk)
+            read += chunk_size
+    dst_file.close()
diff --git a/import-layers/yocto-poky/scripts/lib/wic/help.py b/import-layers/yocto-poky/scripts/lib/wic/help.py
index 405d25a..e5347ec 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/help.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/help.py
@@ -45,7 +45,7 @@
     if callable(hlp):
         hlp = hlp()
     pager = subprocess.Popen('less', stdin=subprocess.PIPE)
-    pager.communicate(hlp)
+    pager.communicate(hlp.encode('utf-8'))
 
     return True
 
@@ -55,7 +55,7 @@
     Subcommand help dispatcher.
     """
     if len(args) == 1 or not display_help(args[1], subcommands):
-        print usage_str
+        print(usage_str)
 
 
 def get_wic_plugins_help():
@@ -66,7 +66,7 @@
     result = wic_plugins_help
     for plugin_type in PLUGIN_TYPES:
         result += '\n\n%s PLUGINS\n\n' % plugin_type.upper()
-        for name, plugin in pluginmgr.get_plugins(plugin_type).iteritems():
+        for name, plugin in pluginmgr.get_plugins(plugin_type).items():
             result += "\n %s plugin:\n" % name
             if plugin.__doc__:
                 result += plugin.__doc__
@@ -152,7 +152,7 @@
         [-e | --image-name] [-s, --skip-build-check] [-D, --debug]
         [-r, --rootfs-dir] [-b, --bootimg-dir]
         [-k, --kernel-dir] [-n, --native-sysroot] [-f, --build-rootfs]
-        [-c, --compress-with]
+        [-c, --compress-with] [-m, --bmap]
 
 DESCRIPTION
     This command creates an OpenEmbedded image based on the 'OE
@@ -221,6 +221,9 @@
 
     The -c option is used to specify compressor utility to compress
     an image. gzip, bzip2 and xz compressors are supported.
+
+    The -m option is used to produce .bmap file for the image. This file
+    can be used to flash image using bmaptool utility.
 """
 
 wic_list_usage = """
@@ -738,6 +741,10 @@
                  in bootloader configuration before running wic. In this case .wks file can
                  be generated or modified to set preconfigured parition UUID using this option.
 
+         --system-id: This option is specific to wic. It specifies partition system id. It's useful
+                      for the harware that requires non-default partition system ids. The parameter
+                      in one byte long hex number either with 0x prefix or without it.
+
     * bootloader
 
       This command allows the user to specify various bootloader
diff --git a/import-layers/yocto-poky/scripts/lib/wic/imager/baseimager.py b/import-layers/yocto-poky/scripts/lib/wic/imager/baseimager.py
index 760cf8a..1a52dd8 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/imager/baseimager.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/imager/baseimager.py
@@ -16,7 +16,6 @@
 # with this program; if not, write to the Free Software Foundation, Inc., 59
 # Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-from __future__ import with_statement
 import os
 import tempfile
 import shutil
@@ -25,7 +24,7 @@
 from wic.utils.errors import CreatorError
 from wic.utils import runner
 
-class BaseImageCreator(object):
+class BaseImageCreator():
     """Base class for image creation.
 
     BaseImageCreator is the simplest creator class available; it will
@@ -68,7 +67,7 @@
                      }
 
             # update setting from createopts
-            for key in createopts.keys():
+            for key in createopts:
                 if key in optmap:
                     option = optmap[key]
                 else:
diff --git a/import-layers/yocto-poky/scripts/lib/wic/imager/direct.py b/import-layers/yocto-poky/scripts/lib/wic/imager/direct.py
index a1b4249..edf5e5d 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/imager/direct.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/imager/direct.py
@@ -26,20 +26,40 @@
 
 import os
 import shutil
+import uuid
 
 from wic import msger
-from wic.utils import fs_related
 from wic.utils.oe.misc import get_bitbake_var
 from wic.utils.partitionedfs import Image
 from wic.utils.errors import CreatorError, ImageError
 from wic.imager.baseimager import BaseImageCreator
 from wic.plugin import pluginmgr
-from wic.utils.oe.misc import exec_cmd
+from wic.utils.oe.misc import exec_cmd, exec_native_cmd
 
 disk_methods = {
     "do_install_disk":None,
 }
 
+class DiskImage():
+    """
+    A Disk backed by a file.
+    """
+    def __init__(self, device, size):
+        self.size = size
+        self.device = device
+        self.created = False
+
+    def exists(self):
+        return os.path.exists(self.device)
+
+    def create(self):
+        if self.created:
+            return
+        # create sparse disk image
+        cmd = "truncate %s -s %s" % (self.device, self.size)
+        exec_cmd(cmd)
+        self.created = True
+
 class DirectImageCreator(BaseImageCreator):
     """
     Installs a system into a file containing a partitioned disk image.
@@ -52,7 +72,8 @@
     """
 
     def __init__(self, oe_builddir, image_output_dir, rootfs_dir, bootimg_dir,
-                 kernel_dir, native_sysroot, compressor, creatoropts=None):
+                 kernel_dir, native_sysroot, compressor, creatoropts=None,
+                 bmap=False):
         """
         Initialize a DirectImageCreator instance.
 
@@ -74,6 +95,7 @@
         self.kernel_dir = kernel_dir
         self.native_sysroot = native_sysroot
         self.compressor = compressor
+        self.bmap = bmap
 
     def __get_part_num(self, num, parts):
         """calculate the real partition number, accounting for partitions not
@@ -221,12 +243,23 @@
 
         self.__image = Image(self.native_sysroot)
 
-        for part in parts:
+        disk_ids = {}
+        for num, part in enumerate(parts, 1):
             # as a convenience, set source to the boot partition source
             # instead of forcing it to be set via bootloader --source
             if not self.ks.bootloader.source and part.mountpoint == "/boot":
                 self.ks.bootloader.source = part.source
 
+            # generate parition UUIDs
+            if not part.uuid and part.use_uuid:
+                if self.ptable_format == 'gpt':
+                    part.uuid = str(uuid.uuid4())
+                else: # msdos partition table
+                    if part.disk not in disk_ids:
+                        disk_ids[part.disk] = int.from_bytes(os.urandom(4), 'little')
+                    disk_id = disk_ids[part.disk]
+                    part.uuid = '%0x-%02d' % (disk_id, self.__get_part_num(num, parts))
+
         fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
 
         shutil.rmtree(self.workdir)
@@ -267,7 +300,8 @@
                                        align=part.align,
                                        no_table=part.no_table,
                                        part_type=part.part_type,
-                                       uuid=part.uuid)
+                                       uuid=part.uuid,
+                                       system_id=part.system_id)
 
         if fstab_path:
             shutil.move(fstab_path + ".orig", fstab_path)
@@ -279,9 +313,9 @@
             full_path = self._full_path(self.__imgdir, disk_name, "direct")
             msger.debug("Adding disk %s as %s with size %s bytes" \
                         % (disk_name, full_path, disk['min_size']))
-            disk_obj = fs_related.DiskImage(full_path, disk['min_size'])
+            disk_obj = DiskImage(full_path, disk['min_size'])
             self.__disks[disk_name] = disk_obj
-            self.__image.add_disk(disk_name, disk_obj)
+            self.__image.add_disk(disk_name, disk_obj, disk_ids.get(disk_name))
 
         self.__image.create()
 
@@ -313,12 +347,17 @@
                                                         self.bootimg_dir,
                                                         self.kernel_dir,
                                                         self.native_sysroot)
-        # Compress the image
-        if self.compressor:
-            for disk_name, disk in self.__image.disks.items():
-                full_path = self._full_path(self.__imgdir, disk_name, "direct")
-                msger.debug("Compressing disk %s with %s" % \
-                            (disk_name, self.compressor))
+
+        for disk_name, disk in self.__image.disks.items():
+            full_path = self._full_path(self.__imgdir, disk_name, "direct")
+            # Generate .bmap
+            if self.bmap:
+                msger.debug("Generating bmap file for %s" % disk_name)
+                exec_native_cmd("bmaptool create %s -o %s.bmap" % (full_path, full_path),
+                                self.native_sysroot)
+            # Compress the image
+            if self.compressor:
+                msger.debug("Compressing disk %s with %s" % (disk_name, self.compressor))
                 exec_cmd("%s %s" % (self.compressor, full_path))
 
     def print_outimage_info(self):
@@ -375,6 +414,6 @@
         if not self.__image is None:
             try:
                 self.__image.cleanup()
-            except ImageError, err:
+            except ImageError as err:
                 msger.warning("%s" % err)
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/ksparser.py b/import-layers/yocto-poky/scripts/lib/wic/ksparser.py
index 8c3f808..0894e2b 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/ksparser.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/ksparser.py
@@ -51,7 +51,7 @@
     Converts size string in <num>[K|k|M|G] format into the integer value
     """
     if arg.isdigit():
-        return int(arg) * 1024L
+        return int(arg) * 1024
 
     if not arg[:-1].isdigit():
         raise ArgumentTypeError("Invalid size: %r" % arg)
@@ -60,9 +60,9 @@
     if arg.endswith("k") or arg.endswith("K"):
         return size
     if arg.endswith("M"):
-        return size * 1024L
+        return size * 1024
     if arg.endswith("G"):
-        return size * 1024L * 1024L
+        return size * 1024 * 1024
 
     raise ArgumentTypeError("Invalid size: %r" % arg)
 
@@ -92,7 +92,25 @@
         raise ArgumentTypeError("file not found: %s" % arg)
     return result
 
-class KickStart(object):
+def systemidtype(arg):
+    """
+    Custom type for ArgumentParser
+    Checks if the argument sutisfies system id requirements,
+    i.e. if it's one byte long integer > 0
+    """
+    error = "Invalid system type: %s. must be hex "\
+            "between 0x1 and 0xFF" % arg
+    try:
+        result = int(arg, 16)
+    except ValueError:
+        raise ArgumentTypeError(error)
+
+    if result <= 0 or result > 0xff:
+        raise ArgumentTypeError(error)
+
+    return arg
+
+class KickStart():
     """"Kickstart parser implementation."""
 
     def __init__(self, confpath):
@@ -106,10 +124,10 @@
         subparsers = parser.add_subparsers()
 
         part = subparsers.add_parser('part')
-        part.add_argument('mountpoint')
+        part.add_argument('mountpoint', nargs='?')
         part.add_argument('--active', action='store_true')
         part.add_argument('--align', type=int)
-        part.add_argument("--extra-space", type=sizetype, default=10*1024L)
+        part.add_argument("--extra-space", type=sizetype, default=10*1024)
         part.add_argument('--fsoptions', dest='fsopts')
         part.add_argument('--fstype')
         part.add_argument('--label')
@@ -121,6 +139,7 @@
         part.add_argument('--size', type=sizetype, default=0)
         part.add_argument('--source')
         part.add_argument('--sourceparams')
+        part.add_argument('--system-id', type=systemidtype)
         part.add_argument('--use-uuid', action='store_true')
         part.add_argument('--uuid')
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/msger.py b/import-layers/yocto-poky/scripts/lib/wic/msger.py
index b737554..fb8336d 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/msger.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/msger.py
@@ -21,18 +21,14 @@
 import re
 import time
 
-__ALL__ = ['set_mode',
-           'get_loglevel',
+__ALL__ = ['get_loglevel',
            'set_loglevel',
            'set_logfile',
-           'raw',
            'debug',
            'verbose',
            'info',
            'warning',
            'error',
-           'ask',
-           'pause',
           ]
 
 # COLORs in ANSI
@@ -70,10 +66,6 @@
         # skip
         return
 
-    # encode raw 'unicode' str to utf8 encoded str
-    if msg and isinstance(msg, unicode):
-        msg = msg.encode('utf-8', 'ignore')
-
     errormsg = ''
     if CATCHERR_BUFFILE_FD > 0:
         size = os.lseek(CATCHERR_BUFFILE_FD, 0, os.SEEK_END)
@@ -122,9 +114,6 @@
                 newline = True
 
     if msg is not None:
-        if isinstance(msg, unicode):
-            msg = msg.encode('utf8', 'ignore')
-
         stream.write('%s%s' % (head, msg))
         if newline:
             stream.write('\n')
@@ -159,7 +148,7 @@
     return head, msg
 
 def get_loglevel():
-    return (k for k, v in LOG_LEVELS.items() if v == LOG_LEVEL).next()
+    return next((k for k, v in LOG_LEVELS.items() if v == LOG_LEVEL))
 
 def set_loglevel(level):
     global LOG_LEVEL
@@ -182,9 +171,6 @@
     if msg:
         LOG_CONTENT += msg
 
-def raw(msg=''):
-    _general_print('', NO_COLOR, msg)
-
 def info(msg):
     head, msg = _split_msg('Info', msg)
     _general_print(head, INFO_COLOR, msg)
@@ -206,66 +192,6 @@
     _color_perror(head, ERR_COLOR, msg)
     sys.exit(1)
 
-def ask(msg, default=True):
-    _general_print('\rQ', ASK_COLOR, '')
-    try:
-        if default:
-            msg += '(Y/n) '
-        else:
-            msg += '(y/N) '
-        if INTERACTIVE:
-            while True:
-                repl = raw_input(msg)
-                if repl.lower() == 'y':
-                    return True
-                elif repl.lower() == 'n':
-                    return False
-                elif not repl.strip():
-                    # <Enter>
-                    return default
-
-                # else loop
-        else:
-            if default:
-                msg += ' Y'
-            else:
-                msg += ' N'
-            _general_print('', NO_COLOR, msg)
-
-            return default
-    except KeyboardInterrupt:
-        sys.stdout.write('\n')
-        sys.exit(2)
-
-def choice(msg, choices, default=0):
-    if default >= len(choices):
-        return None
-    _general_print('\rQ', ASK_COLOR, '')
-    try:
-        msg += " [%s] " % '/'.join(choices)
-        if INTERACTIVE:
-            while True:
-                repl = raw_input(msg)
-                if repl in choices:
-                    return repl
-                elif not repl.strip():
-                    return choices[default]
-        else:
-            msg += choices[default]
-            _general_print('', NO_COLOR, msg)
-
-            return choices[default]
-    except KeyboardInterrupt:
-        sys.stdout.write('\n')
-        sys.exit(2)
-
-def pause(msg=None):
-    if INTERACTIVE:
-        _general_print('\rQ', ASK_COLOR, '')
-        if msg is None:
-            msg = 'press <ENTER> to continue ...'
-        raw_input(msg)
-
 def set_logfile(fpath):
     global LOG_FILE_FP
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/partition.py b/import-layers/yocto-poky/scripts/lib/wic/partition.py
index f40d1bc..90f65a1 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/partition.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/partition.py
@@ -26,7 +26,6 @@
 
 import os
 import tempfile
-import uuid
 
 from wic.utils.oe.misc import msger, parse_sourceparams
 from wic.utils.oe.misc import exec_cmd, exec_native_cmd
@@ -38,7 +37,7 @@
     "do_configure_partition":None,
 }
 
-class Partition(object):
+class Partition():
 
     def __init__(self, args, lineno):
         self.args = args
@@ -57,10 +56,9 @@
         self.size = args.size
         self.source = args.source
         self.sourceparams = args.sourceparams
+        self.system_id = args.system_id
         self.use_uuid = args.use_uuid
         self.uuid = args.uuid
-        if args.use_uuid and not self.uuid:
-            self.uuid = str(uuid.uuid4())
 
         self.lineno = lineno
         self.source_file = ""
@@ -219,9 +217,7 @@
         msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
                     (extra_blocks, self.mountpoint, rootfs_size))
 
-        dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \
-            (rootfs, rootfs_size)
-        exec_cmd(dd_cmd)
+        exec_cmd("truncate %s -s %d" % (rootfs, rootfs_size * 1024))
 
         extra_imagecmd = "-i 8192"
 
@@ -254,9 +250,7 @@
         msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
                     (extra_blocks, self.mountpoint, rootfs_size))
 
-        dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=0 bs=1k" % \
-            (rootfs, rootfs_size)
-        exec_cmd(dd_cmd)
+        exec_cmd("truncate %s -s %d" % (rootfs, rootfs_size * 1024))
 
         label_str = ""
         if self.label:
@@ -284,14 +278,6 @@
         msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
                     (extra_blocks, self.mountpoint, blocks))
 
-        # Ensure total sectors is an integral number of sectors per
-        # track or mcopy will complain. Sectors are 512 bytes, and we
-        # generate images with 32 sectors per track. This calculation
-        # is done in blocks, thus the mod by 16 instead of 32. Apply
-        # sector count fix only when needed.
-        if blocks % 16 != 0:
-            blocks += (16 - (blocks % 16))
-
         label_str = "-n boot"
         if self.label:
             label_str = "-n %s" % self.label
@@ -319,9 +305,7 @@
         """
         Prepare an empty ext2/3/4 partition.
         """
-        dd_cmd = "dd if=/dev/zero of=%s bs=1k seek=%d count=0" % \
-            (rootfs, self.size)
-        exec_cmd(dd_cmd)
+        exec_cmd("truncate %s -s %d" % (rootfs, self.size * 1024))
 
         extra_imagecmd = "-i 8192"
 
@@ -338,9 +322,7 @@
         """
         Prepare an empty btrfs partition.
         """
-        dd_cmd = "dd if=/dev/zero of=%s bs=1k seek=%d count=0" % \
-            (rootfs, self.size)
-        exec_cmd(dd_cmd)
+        exec_cmd("truncate %s -s %d" % (rootfs, self.size * 1024))
 
         label_str = ""
         if self.label:
@@ -401,9 +383,7 @@
         """
         path = "%s/fs.%s" % (cr_workdir, self.fstype)
 
-        dd_cmd = "dd if=/dev/zero of=%s bs=1k seek=%d count=0" % \
-            (path, self.size)
-        exec_cmd(dd_cmd)
+        exec_cmd("truncate %s -s %d" % (path, self.size * 1024))
 
         import uuid
         label_str = ""
diff --git a/import-layers/yocto-poky/scripts/lib/wic/plugin.py b/import-layers/yocto-poky/scripts/lib/wic/plugin.py
index ccfdfcb..306b324 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/plugin.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/plugin.py
@@ -29,7 +29,7 @@
 PLUGIN_DIR = "/lib/wic/plugins" # relative to scripts
 SCRIPTS_PLUGIN_DIR = "scripts" + PLUGIN_DIR
 
-class PluginMgr(object):
+class PluginMgr():
     plugin_dirs = {}
 
     # make the manager class as singleton
@@ -42,7 +42,7 @@
 
     def __init__(self):
         wic_path = os.path.dirname(__file__)
-        eos = wic_path.find('scripts') + len('scripts')
+        eos = wic_path.rfind('scripts') + len('scripts')
         scripts_path = wic_path[:eos]
         self.scripts_path = scripts_path
         self.plugin_dir = scripts_path + PLUGIN_DIR
@@ -81,7 +81,7 @@
             # the value True/False means "loaded"
 
     def _load_all(self):
-        for (pdir, loaded) in self.plugin_dirs.iteritems():
+        for (pdir, loaded) in self.plugin_dirs.items():
             if loaded:
                 continue
 
@@ -97,7 +97,7 @@
                             self.plugin_dirs[pdir] = True
                             msger.debug("Plugin module %s:%s imported"\
                                         % (mod, pymod.__file__))
-                        except ImportError, err:
+                        except ImportError as err:
                             msg = 'Failed to load plugin %s/%s: %s' \
                                 % (os.path.basename(pdir), mod, err)
                             msger.warning(msg)
@@ -135,9 +135,9 @@
         None is returned.
         """
         return_methods = None
-        for _source_name, klass in self.get_plugins('source').iteritems():
+        for _source_name, klass in self.get_plugins('source').items():
             if _source_name == source_name:
-                for _method_name in methods.keys():
+                for _method_name in methods:
                     if not hasattr(klass, _method_name):
                         msger.warning("Unimplemented %s source interface for: %s"\
                                       % (_method_name, _source_name))
diff --git a/import-layers/yocto-poky/scripts/lib/wic/pluginbase.py b/import-layers/yocto-poky/scripts/lib/wic/pluginbase.py
index ee8fe95..e737dee 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/pluginbase.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/pluginbase.py
@@ -15,34 +15,26 @@
 # with this program; if not, write to the Free Software Foundation, Inc., 59
 # Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
+__all__ = ['ImagerPlugin', 'SourcePlugin', 'get_plugins']
+
+import sys
+from collections import defaultdict
+
 from wic import msger
 
-class _Plugin(object):
-    class __metaclass__(type):
-        def __init__(cls, name, bases, attrs):
-            if not hasattr(cls, 'plugins'):
-                cls.plugins = {}
+class PluginMeta(type):
+    plugins = defaultdict(dict)
+    def __new__(cls, name, bases, attrs):
+        class_type = type.__new__(cls, name, bases, attrs)
+        if 'name' in attrs:
+            cls.plugins[class_type.wic_plugin_type][attrs['name']] = class_type
 
-            elif 'wic_plugin_type' in attrs:
-                if attrs['wic_plugin_type'] not in cls.plugins:
-                    cls.plugins[attrs['wic_plugin_type']] = {}
+        return class_type
 
-            elif hasattr(cls, 'wic_plugin_type') and 'name' in attrs:
-                cls.plugins[cls.wic_plugin_type][attrs['name']] = cls
-
-        def show_plugins(cls):
-            for cls in cls.plugins[cls.wic_plugin_type]:
-                print cls
-
-        def get_plugins(cls):
-            return cls.plugins
-
-
-class ImagerPlugin(_Plugin):
+class ImagerPlugin(PluginMeta("Plugin", (), {})):
     wic_plugin_type = "imager"
 
-
-class SourcePlugin(_Plugin):
+class SourcePlugin(PluginMeta("Plugin", (), {})):
     wic_plugin_type = "source"
     """
     The methods that can be implemented by --source plugins.
@@ -99,10 +91,4 @@
         msger.debug("SourcePlugin: do_prepare_partition: part: %s" % part)
 
 def get_plugins(typen):
-    plugins = ImagerPlugin.get_plugins()
-    if typen in plugins:
-        return plugins[typen]
-    else:
-        return None
-
-__all__ = ['ImagerPlugin', 'SourcePlugin', 'get_plugins']
+    return PluginMeta.plugins.get(typen)
diff --git a/import-layers/yocto-poky/scripts/lib/wic/plugins/imager/direct_plugin.py b/import-layers/yocto-poky/scripts/lib/wic/plugins/imager/direct_plugin.py
index 6d3f46c..8fe3930 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/plugins/imager/direct_plugin.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/plugins/imager/direct_plugin.py
@@ -86,7 +86,8 @@
                                             kernel_dir,
                                             native_sysroot,
                                             compressor,
-                                            creatoropts)
+                                            creatoropts,
+                                            opts.bmap)
 
         try:
             creator.create()
diff --git a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-efi.py b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-efi.py
index a4734c9..8bc3622 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -84,7 +84,7 @@
     @classmethod
     def do_configure_gummiboot(cls, hdddir, creator, cr_workdir):
         """
-        Create loader-specific (gummiboot) config
+        Create loader-specific systemd-boot/gummiboot config
         """
         install_cmd = "install -d %s/loader" % hdddir
         exec_cmd(install_cmd)
@@ -149,7 +149,8 @@
         try:
             if source_params['loader'] == 'grub-efi':
                 cls.do_configure_grubefi(hdddir, creator, cr_workdir)
-            elif source_params['loader'] == 'gummiboot':
+            elif source_params['loader'] == 'gummiboot' \
+                 or source_params['loader'] == 'systemd-boot':
                 cls.do_configure_gummiboot(hdddir, creator, cr_workdir)
             else:
                 msger.error("unrecognized bootimg-efi loader: %s" % source_params['loader'])
@@ -189,7 +190,8 @@
                 exec_cmd(cp_cmd, True)
                 shutil.move("%s/grub.cfg" % cr_workdir,
                             "%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir)
-            elif source_params['loader'] == 'gummiboot':
+            elif source_params['loader'] == 'gummiboot' \
+                 or source_params['loader'] == 'systemd-boot':
                 cp_cmd = "cp %s/EFI/BOOT/* %s/EFI/BOOT" % (bootimg_dir, hdddir)
                 exec_cmd(cp_cmd, True)
             else:
@@ -197,6 +199,11 @@
         except KeyError:
             msger.error("bootimg-efi requires a loader, none specified")
 
+        startup = os.path.join(bootimg_dir, "startup.nsh")
+        if os.path.exists(startup):
+            cp_cmd = "cp %s %s/" % (startup, hdddir)
+            exec_cmd(cp_cmd, True)
+
         du_cmd = "du -bks %s" % hdddir
         out = exec_cmd(du_cmd)
         blocks = int(out.split()[0])
@@ -211,12 +218,6 @@
         msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
                     (extra_blocks, part.mountpoint, blocks))
 
-        # Ensure total sectors is an integral number of sectors per
-        # track or mcopy will complain. Sectors are 512 bytes, and we
-        # generate images with 32 sectors per track. This calculation is
-        # done in blocks, thus the mod by 16 instead of 32.
-        blocks += (16 - (blocks % 16))
-
         # dosfs image, created by mkdosfs
         bootimg = "%s/boot.img" % cr_workdir
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py
index 5b719bf..f204daa 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py
@@ -179,12 +179,6 @@
         msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
                     (extra_blocks, part.mountpoint, blocks))
 
-        # Ensure total sectors is an integral number of sectors per
-        # track or mcopy will complain. Sectors are 512 bytes, and we
-        # generate images with 32 sectors per track. This calculation is
-        # done in blocks, thus the mod by 16 instead of 32.
-        blocks += (16 - (blocks % 16))
-
         # dosfs image, created by mkdosfs
         bootimg = "%s/boot.img" % cr_workdir
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
index bc99283..3858fd4 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
@@ -27,6 +27,7 @@
 
 from wic import msger
 from wic.pluginbase import SourcePlugin
+from wic.utils.misc import get_custom_config
 from wic.utils.oe.misc import exec_cmd, exec_native_cmd, get_bitbake_var
 
 class IsoImagePlugin(SourcePlugin):
@@ -59,7 +60,7 @@
         """
         Create loader-specific (syslinux) config
         """
-        splash = os.path.join(cr_workdir, "/ISO/boot/splash.jpg")
+        splash = os.path.join(cr_workdir, "ISO/boot/splash.jpg")
         if os.path.exists(splash):
             splashline = "menu background splash.jpg"
         else:
@@ -94,33 +95,43 @@
         """
         Create loader-specific (grub-efi) config
         """
-        splash = os.path.join(cr_workdir, "/EFI/boot/splash.jpg")
-        if os.path.exists(splash):
-            splashline = "menu background splash.jpg"
+        configfile = creator.ks.bootloader.configfile
+        if configfile:
+            grubefi_conf = get_custom_config(configfile)
+            if grubefi_conf:
+                msger.debug("Using custom configuration file "
+                        "%s for grub.cfg" % configfile)
+            else:
+                msger.error("configfile is specified but failed to "
+                        "get it from %s." % configfile)
         else:
-            splashline = ""
+            splash = os.path.join(cr_workdir, "EFI/boot/splash.jpg")
+            if os.path.exists(splash):
+                splashline = "menu background splash.jpg"
+            else:
+                splashline = ""
 
-        bootloader = creator.ks.bootloader
+            bootloader = creator.ks.bootloader
 
-        grubefi_conf = ""
-        grubefi_conf += "serial --unit=0 --speed=115200 --word=8 "
-        grubefi_conf += "--parity=no --stop=1\n"
-        grubefi_conf += "default=boot\n"
-        grubefi_conf += "timeout=%s\n" % (bootloader.timeout or 10)
-        grubefi_conf += "\n"
-        grubefi_conf += "search --set=root --label %s " % part.label
-        grubefi_conf += "\n"
-        grubefi_conf += "menuentry 'boot'{\n"
+            grubefi_conf = ""
+            grubefi_conf += "serial --unit=0 --speed=115200 --word=8 "
+            grubefi_conf += "--parity=no --stop=1\n"
+            grubefi_conf += "default=boot\n"
+            grubefi_conf += "timeout=%s\n" % (bootloader.timeout or 10)
+            grubefi_conf += "\n"
+            grubefi_conf += "search --set=root --label %s " % part.label
+            grubefi_conf += "\n"
+            grubefi_conf += "menuentry 'boot'{\n"
 
-        kernel = "/bzImage"
+            kernel = "/bzImage"
 
-        grubefi_conf += "linux %s rootwait %s\n" \
-            % (kernel, bootloader.append)
-        grubefi_conf += "initrd /initrd \n"
-        grubefi_conf += "}\n"
+            grubefi_conf += "linux %s rootwait %s\n" \
+                            % (kernel, bootloader.append)
+            grubefi_conf += "initrd /initrd \n"
+            grubefi_conf += "}\n"
 
-        if splashline:
-            grubefi_conf += "%s\n" % splashline
+            if splashline:
+                grubefi_conf += "%s\n" % splashline
 
         msger.debug("Writing grubefi config %s/EFI/BOOT/grub.cfg" \
                         % cr_workdir)
@@ -430,12 +441,6 @@
                     % (part.mountpoint, blocks)
             msger.debug(msg)
 
-            # Ensure total sectors is an integral number of sectors per
-            # track or mcopy will complain. Sectors are 512 bytes, and we
-            # generate images with 32 sectors per track. This calculation is
-            # done in blocks, thus the mod by 16 instead of 32.
-            blocks += (16 - (blocks % 16))
-
             # dosfs image for EFI boot
             bootimg = "%s/efi.img" % isodir
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/rawcopy.py b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/rawcopy.py
index 0472f53..e0b11f9 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/plugins/source/rawcopy.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/plugins/source/rawcopy.py
@@ -20,6 +20,7 @@
 from wic import msger
 from wic.pluginbase import SourcePlugin
 from wic.utils.oe.misc import exec_cmd, get_bitbake_var
+from wic.filemap import sparse_copy
 
 class RawCopyPlugin(SourcePlugin):
     """
@@ -67,14 +68,12 @@
             return
 
         src = os.path.join(bootimg_dir, source_params['file'])
-        dst = os.path.join(cr_workdir, source_params['file'])
+        dst = os.path.join(cr_workdir, "%s.%s" % (source_params['file'], part.lineno))
 
         if 'skip' in source_params:
-            dd_cmd = "dd if=%s of=%s ibs=%s skip=1 conv=notrunc" % \
-                    (src, dst, source_params['skip'])
+            sparse_copy(src, dst, skip=source_params['skip'])
         else:
-            dd_cmd = "cp %s %s" % (src, dst)
-        exec_cmd(dd_cmd)
+            sparse_copy(src, dst)
 
         # get the size in the right units for kickstart (kB)
         du_cmd = "du -Lbks %s" % dst
diff --git a/import-layers/yocto-poky/scripts/lib/wic/utils/fs_related.py b/import-layers/yocto-poky/scripts/lib/wic/utils/fs_related.py
deleted file mode 100644
index 2e74461..0000000
--- a/import-layers/yocto-poky/scripts/lib/wic/utils/fs_related.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/env python -tt
-#
-# Copyright (c) 2007, Red Hat, Inc.
-# Copyright (c) 2009, 2010, 2011 Intel, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation; version 2 of the License
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc., 59
-# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-from __future__ import with_statement
-import os
-import errno
-
-from wic.utils.oe.misc import exec_cmd
-
-def makedirs(dirname):
-    """A version of os.makedirs() that doesn't throw an
-    exception if the leaf directory already exists.
-    """
-    try:
-        os.makedirs(dirname)
-    except OSError, err:
-        if err.errno != errno.EEXIST:
-            raise
-
-class Disk:
-    """
-    Generic base object for a disk.
-    """
-    def __init__(self, size, device=None):
-        self._device = device
-        self._size = size
-
-    def create(self):
-        pass
-
-    def cleanup(self):
-        pass
-
-    def get_device(self):
-        return self._device
-    def set_device(self, path):
-        self._device = path
-    device = property(get_device, set_device)
-
-    def get_size(self):
-        return self._size
-    size = property(get_size)
-
-
-class DiskImage(Disk):
-    """
-    A Disk backed by a file.
-    """
-    def __init__(self, image_file, size):
-        Disk.__init__(self, size)
-        self.image_file = image_file
-
-    def exists(self):
-        return os.path.exists(self.image_file)
-
-    def create(self):
-        if self.device is not None:
-            return
-
-        blocks = self.size / 1024
-        if self.size - blocks * 1024:
-            blocks += 1
-
-        # create disk image
-        dd_cmd = "dd if=/dev/zero of=%s bs=1024 seek=%d count=1" % \
-            (self.image_file, blocks)
-        exec_cmd(dd_cmd)
-
-        self.device = self.image_file
diff --git a/import-layers/yocto-poky/scripts/lib/wic/utils/oe/misc.py b/import-layers/yocto-poky/scripts/lib/wic/utils/oe/misc.py
index 81239ac..fe188c9 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/utils/oe/misc.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/utils/oe/misc.py
@@ -28,12 +28,14 @@
 
 import os
 from collections import defaultdict
+from distutils import spawn
 
 from wic import msger
 from wic.utils import runner
 
 # executable -> recipe pairs for exec_native_cmd
-NATIVE_RECIPES = {"mcopy": "mtools",
+NATIVE_RECIPES = {"bmaptool": "bmap-tools",
+                  "mcopy": "mtools",
                   "mkdosfs": "dosfstools",
                   "mkfs.btrfs": "btrfs-tools",
                   "mkfs.ext2": "e2fsprogs",
@@ -43,6 +45,7 @@
                   "mksquashfs": "squashfs-tools",
                   "mkswap": "util-linux",
                   "parted": "parted",
+                  "sfdisk": "util-linux",
                   "sgdisk": "gptfdisk",
                   "syslinux": "syslinux"
                  }
@@ -82,13 +85,6 @@
 
     return out
 
-def cmd_in_path(cmd, path):
-    import scriptpath
-
-    scriptpath.add_bitbake_lib_path()
-
-    return bb.utils.which(path, cmd) != "" or False
-
 def exec_native_cmd(cmd_and_args, native_sysroot, catch=3, pseudo=""):
     """
     Execute native command, catching stderr, stdout
@@ -111,7 +107,7 @@
     msger.debug("exec_native_cmd: %s" % cmd_and_args)
 
     # If the command isn't in the native sysroot say we failed.
-    if cmd_in_path(args[0], native_paths):
+    if spawn.find_executable(args[0], native_paths):
         ret, out = _exec_cmd(native_cmd_and_args, True, catch)
     else:
         ret = 127
@@ -186,8 +182,8 @@
                         for line in varsfile:
                             self._parse_line(line, image)
                 else:
-                    print "Couldn't get bitbake variable from %s." % fname
-                    print "File %s doesn't exist." % fname
+                    print("Couldn't get bitbake variable from %s." % fname)
+                    print("File %s doesn't exist." % fname)
                     return
             else:
                 # Get bitbake -e output
@@ -201,8 +197,8 @@
                 msger.set_loglevel(log_level)
 
                 if ret:
-                    print "Couldn't get '%s' output." % cmd
-                    print "Bitbake failed with error:\n%s\n" % lines
+                    print("Couldn't get '%s' output." % cmd)
+                    print("Bitbake failed with error:\n%s\n" % lines)
                     return
 
                 # Parse bitbake -e output
diff --git a/import-layers/yocto-poky/scripts/lib/wic/utils/partitionedfs.py b/import-layers/yocto-poky/scripts/lib/wic/utils/partitionedfs.py
index ad596d2..cb03009 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/utils/partitionedfs.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/utils/partitionedfs.py
@@ -22,6 +22,7 @@
 from wic import msger
 from wic.utils.errors import ImageError
 from wic.utils.oe.misc import exec_cmd, exec_native_cmd
+from wic.filemap import sparse_copy
 
 # Overhead of the MBR partitioning scheme (just one sector)
 MBR_OVERHEAD = 1
@@ -32,7 +33,7 @@
 # Size of a sector in bytes
 SECTOR_SIZE = 512
 
-class Image(object):
+class Image():
     """
     Generic base object for an image.
 
@@ -42,6 +43,7 @@
     def __init__(self, native_sysroot=None):
         self.disks = {}
         self.partitions = []
+        self.partimages = []
         # Size of a sector used in calculations
         self.sector_size = SECTOR_SIZE
         self._partitions_layed_out = False
@@ -66,15 +68,17 @@
                  'offset': 0,      # Offset of next partition (in sectors)
                  # Minimum required disk size to fit all partitions (in bytes)
                  'min_size': 0,
-                 'ptable_format': "msdos"} # Partition table format
+                 'ptable_format': "msdos", # Partition table format
+                 'identifier': None} # Disk system identifier
 
-    def add_disk(self, disk_name, disk_obj):
+    def add_disk(self, disk_name, disk_obj, identifier):
         """ Add a disk object which have to be partitioned. More than one disk
         can be added. In case of multiple disks, disk partitions have to be
         added for each disk separately with 'add_partition()". """
 
         self.__add_disk(disk_name)
         self.disks[disk_name]['disk'] = disk_obj
+        self.disks[disk_name]['identifier'] = identifier
 
     def __add_partition(self, part):
         """ This is a helper function for 'add_partition()' which adds a
@@ -87,14 +91,14 @@
 
     def add_partition(self, size, disk_name, mountpoint, source_file=None, fstype=None,
                       label=None, fsopts=None, boot=False, align=None, no_table=False,
-                      part_type=None, uuid=None):
+                      part_type=None, uuid=None, system_id=None):
         """ Add the next partition. Prtitions have to be added in the
         first-to-last order. """
 
         ks_pnum = len(self.partitions)
 
         # Converting kB to sectors for parted
-        size = size * 1024 / self.sector_size
+        size = size * 1024 // self.sector_size
 
         part = {'ks_pnum': ks_pnum, # Partition number in the KS file
                 'size': size, # In sectors
@@ -110,7 +114,8 @@
                 'align': align, # Partition alignment
                 'no_table' : no_table, # Partition does not appear in partition table
                 'part_type' : part_type, # Partition type
-                'uuid': uuid} # Partition UUID
+                'uuid': uuid, # Partition UUID
+                'system_id': system_id} # Partition system id
 
         self.__add_partition(part)
 
@@ -130,7 +135,7 @@
         for num in range(len(self.partitions)):
             part = self.partitions[num]
 
-            if not self.disks.has_key(part['disk_name']):
+            if part['disk_name'] not in self.disks:
                 raise ImageError("No disk %s for partition %s" \
                                  % (part['disk_name'], part['mountpoint']))
 
@@ -171,12 +176,12 @@
                 # gaps we could enlargea the previous partition?
 
                 # Calc how much the alignment is off.
-                align_sectors = disk['offset'] % (part['align'] * 1024 / self.sector_size)
+                align_sectors = disk['offset'] % (part['align'] * 1024 // self.sector_size)
 
                 if align_sectors:
                     # If partition is not aligned as required, we need
                     # to move forward to the next alignment point
-                    align_sectors = (part['align'] * 1024 / self.sector_size) - align_sectors
+                    align_sectors = (part['align'] * 1024 // self.sector_size) - align_sectors
 
                     msger.debug("Realignment for %s%s with %s sectors, original"
                                 " offset %s, target alignment is %sK." %
@@ -234,7 +239,7 @@
     def __format_disks(self):
         self.layout_partitions()
 
-        for dev in self.disks.keys():
+        for dev in self.disks:
             disk = self.disks[dev]
             msger.debug("Initializing partition table for %s" % \
                         (disk['disk'].device))
@@ -242,6 +247,12 @@
                             (disk['disk'].device, disk['ptable_format']),
                             self.native_sysroot)
 
+            if disk['identifier']:
+                msger.debug("Set disk identifier %x" % disk['identifier'])
+                with open(disk['disk'].device, 'r+b') as img:
+                    img.seek(0x1B8)
+                    img.write(disk['identifier'].to_bytes(4, 'little'))
+
         msger.debug("Creating partitions")
 
         for part in self.partitions:
@@ -296,7 +307,7 @@
                                          (part['num'], part['part_type'],
                                           disk['disk'].device), self.native_sysroot)
 
-            if part['uuid']:
+            if part['uuid'] and disk['ptable_format'] == "gpt":
                 msger.debug("partition %d: set UUID to %s" % \
                             (part['num'], part['uuid']))
                 exec_native_cmd("sgdisk --partition-guid=%d:%s %s" % \
@@ -310,6 +321,10 @@
                 exec_native_cmd("parted -s %s set %d %s on" % \
                                 (disk['disk'].device, part['num'], flag_name),
                                 self.native_sysroot)
+            if part['system_id']:
+                exec_native_cmd("sfdisk --part-type %s %s %s" % \
+                                (disk['disk'].device, part['num'], part['system_id']),
+                                self.native_sysroot)
 
             # Parted defaults to enabling the lba flag for fat16 partitions,
             # which causes compatibility issues with some firmware (and really
@@ -330,6 +345,10 @@
                     disk['disk'].cleanup()
                 except:
                     pass
+        # remove partition images
+        for image in self.partimages:
+            if os.path.isfile(image):
+                os.remove(image)
 
     def assemble(self, image_file):
         msger.debug("Installing partitions")
@@ -338,20 +357,19 @@
             source = part['source_file']
             if source:
                 # install source_file contents into a partition
-                cmd = "dd if=%s of=%s bs=%d seek=%d count=%d conv=notrunc" % \
-                      (source, image_file, self.sector_size,
-                       part['start'], part['size'])
-                exec_cmd(cmd)
+                sparse_copy(source, image_file, part['start'] * self.sector_size)
 
                 msger.debug("Installed %s in partition %d, sectors %d-%d, "
                             "size %d sectors" % \
                             (source, part['num'], part['start'],
                              part['start'] + part['size'] - 1, part['size']))
 
-                os.rename(source, image_file + '.p%d' % part['num'])
+                partimage = image_file + '.p%d' % part['num']
+                os.rename(source, partimage)
+                self.partimages.append(partimage)
 
     def create(self):
-        for dev in self.disks.keys():
+        for dev in self.disks:
             disk = self.disks[dev]
             disk['disk'].create()
 
diff --git a/import-layers/yocto-poky/scripts/lib/wic/utils/runner.py b/import-layers/yocto-poky/scripts/lib/wic/utils/runner.py
index 7431917..db536ba 100644
--- a/import-layers/yocto-poky/scripts/lib/wic/utils/runner.py
+++ b/import-layers/yocto-poky/scripts/lib/wic/utils/runner.py
@@ -65,9 +65,9 @@
         process = subprocess.Popen(cmdln_or_args, stdout=sout,
                                    stderr=serr, shell=shell)
         (sout, serr) = process.communicate()
-        # combine stdout and stderr, filter None out
-        out = ''.join(filter(None, [sout, serr]))
-    except OSError, err:
+        # combine stdout and stderr, filter None out and decode
+        out = ''.join([out.decode('utf-8') for out in [sout, serr] if out])
+    except OSError as err:
         if err.errno == 2:
             # [Errno 2] No such file or directory
             msger.error('Cannot run command: %s, lost dependency?' % cmd)
diff --git a/import-layers/yocto-poky/scripts/lnr b/import-layers/yocto-poky/scripts/lnr
index 9dacebe..5fed780 100755
--- a/import-layers/yocto-poky/scripts/lnr
+++ b/import-layers/yocto-poky/scripts/lnr
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python3
 
 # Create a *relative* symlink, just like ln --relative does but without needing
 # coreutils 8.16.
@@ -6,7 +6,7 @@
 import sys, os
 
 if len(sys.argv) != 3:
-   print "$ lnr TARGET LINK_NAME"
+   print("$ lnr TARGET LINK_NAME")
    sys.exit(1)
 
 target = sys.argv[1]
diff --git a/import-layers/yocto-poky/scripts/oe-build-perf-test b/import-layers/yocto-poky/scripts/oe-build-perf-test
new file mode 100755
index 0000000..638e195
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/oe-build-perf-test
@@ -0,0 +1,211 @@
+#!/usr/bin/python3
+#
+# Build performance test script
+#
+# Copyright (c) 2016, Intel Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+"""Build performance test script"""
+import argparse
+import errno
+import fcntl
+import logging
+import os
+import shutil
+import sys
+import unittest
+from datetime import datetime
+
+sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '/lib')
+import scriptpath
+scriptpath.add_oe_lib_path()
+import oeqa.buildperf
+from oeqa.buildperf import (BuildPerfTestLoader, BuildPerfTestResult,
+                            BuildPerfTestRunner, KernelDropCaches)
+from oeqa.utils.commands import runCmd
+from oeqa.utils.git import GitRepo, GitError
+
+
+# Set-up logging
+LOG_FORMAT = '[%(asctime)s] %(levelname)s: %(message)s'
+logging.basicConfig(level=logging.INFO, format=LOG_FORMAT,
+                    datefmt='%Y-%m-%d %H:%M:%S')
+log = logging.getLogger()
+
+
+def acquire_lock(lock_f):
+    """Acquire flock on file"""
+    log.debug("Acquiring lock %s", os.path.abspath(lock_f.name))
+    try:
+        fcntl.flock(lock_f, fcntl.LOCK_EX | fcntl.LOCK_NB)
+    except IOError as err:
+        if err.errno == errno.EAGAIN:
+            return False
+        raise
+    log.debug("Lock acquired")
+    return True
+
+
+def pre_run_sanity_check():
+    """Sanity check of build environment"""
+    build_dir = os.environ.get("BUILDDIR")
+    if not build_dir:
+        log.error("BUILDDIR not set. Please run the build environmnent setup "
+                  "script.")
+        return False
+    if os.getcwd() != build_dir:
+        log.error("Please run this script under BUILDDIR (%s)", build_dir)
+        return False
+
+    ret = runCmd('which bitbake', ignore_status=True)
+    if ret.status:
+        log.error("bitbake command not found")
+        return False
+    return True
+
+def init_git_repo(path):
+    """Check/create Git repository where to store results"""
+    path = os.path.abspath(path)
+    if os.path.isfile(path):
+        log.error("Invalid Git repo %s: path exists but is not a directory", path)
+        return False
+    if not os.path.isdir(path):
+        try:
+            os.mkdir(path)
+        except (FileNotFoundError, PermissionError) as err:
+            log.error("Failed to mkdir %s: %s", path, err)
+            return False
+    if not os.listdir(path):
+        log.info("Initializing a new Git repo at %s", path)
+        GitRepo.init(path)
+    try:
+        GitRepo(path, is_topdir=True)
+    except GitError:
+        log.error("No Git repository but a non-empty directory found at %s.\n"
+                  "Please specify a Git repository, an empty directory or "
+                  "a non-existing directory", path)
+        return False
+    return True
+
+
+def setup_file_logging(log_file):
+    """Setup loggin to file"""
+    log_dir = os.path.dirname(log_file)
+    if not os.path.exists(log_dir):
+        os.makedirs(log_dir)
+    formatter = logging.Formatter(LOG_FORMAT)
+    handler = logging.FileHandler(log_file)
+    handler.setFormatter(formatter)
+    log.addHandler(handler)
+
+
+def archive_build_conf(out_dir):
+    """Archive build/conf to test results"""
+    src_dir = os.path.join(os.environ['BUILDDIR'], 'conf')
+    tgt_dir = os.path.join(out_dir, 'build', 'conf')
+    os.makedirs(os.path.dirname(tgt_dir))
+    shutil.copytree(src_dir, tgt_dir)
+
+
+def parse_args(argv):
+    """Parse command line arguments"""
+    parser = argparse.ArgumentParser(
+        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+
+    parser.add_argument('-D', '--debug', action='store_true',
+                        help='Enable debug level logging')
+    parser.add_argument('--globalres-file',
+                        type=os.path.abspath,
+                        help="Append results to 'globalres' csv file")
+    parser.add_argument('--lock-file', default='./oe-build-perf.lock',
+                        metavar='FILENAME', type=os.path.abspath,
+                        help="Lock file to use")
+    parser.add_argument('-o', '--out-dir', default='results-{date}',
+                        type=os.path.abspath,
+                        help="Output directory for test results")
+    parser.add_argument('--log-file',
+                        default='{out_dir}/oe-build-perf-test.log',
+                        help="Log file of this script")
+    parser.add_argument('--run-tests', nargs='+', metavar='TEST',
+                        help="List of tests to run")
+    parser.add_argument('--commit-results', metavar='GIT_DIR',
+                        type=os.path.abspath,
+                        help="Commit result data to a (local) git repository")
+    parser.add_argument('--commit-results-branch', metavar='BRANCH',
+                        default="{git_branch}",
+                        help="Commit results to branch BRANCH.")
+    parser.add_argument('--commit-results-tag', metavar='TAG',
+                        default="{git_branch}/{git_commit_count}-g{git_commit}/{tag_num}",
+                        help="Tag results commit with TAG.")
+
+    return parser.parse_args(argv)
+
+
+def main(argv=None):
+    """Script entry point"""
+    args = parse_args(argv)
+
+    # Set-up log file
+    out_dir = args.out_dir.format(date=datetime.now().strftime('%Y%m%d%H%M%S'))
+    setup_file_logging(args.log_file.format(out_dir=out_dir))
+
+    if args.debug:
+        log.setLevel(logging.DEBUG)
+
+    lock_f = open(args.lock_file, 'w')
+    if not acquire_lock(lock_f):
+        log.error("Another instance of this script is running, exiting...")
+        return 1
+
+    if not pre_run_sanity_check():
+        return 1
+    if args.commit_results:
+        if not init_git_repo(args.commit_results):
+            return 1
+
+    # Check our capability to drop caches and ask pass if needed
+    KernelDropCaches.check()
+
+    # Load build perf tests
+    loader = BuildPerfTestLoader()
+    if args.run_tests:
+        suite = loader.loadTestsFromNames(args.run_tests, oeqa.buildperf)
+    else:
+        suite = loader.loadTestsFromModule(oeqa.buildperf)
+
+    archive_build_conf(out_dir)
+    runner = BuildPerfTestRunner(out_dir, verbosity=2)
+
+    # Suppress logger output to stderr so that the output from unittest
+    # is not mixed with occasional logger output
+    log.handlers[0].setLevel(logging.CRITICAL)
+
+    # Run actual tests
+    result = runner.run(suite)
+
+    # Restore logger output to stderr
+    log.handlers[0].setLevel(log.level)
+
+    if args.globalres_file:
+        result.update_globalres_file(args.globalres_file)
+    if args.commit_results:
+        result.git_commit_results(args.commit_results,
+                                  args.commit_results_branch,
+                                  args.commit_results_tag)
+    if result.wasSuccessful():
+        return 0
+
+    return 2
+
+
+if __name__ == '__main__':
+    sys.exit(main())
+
diff --git a/import-layers/yocto-poky/scripts/oe-buildenv-internal b/import-layers/yocto-poky/scripts/oe-buildenv-internal
index e04db03..9fae3b4 100755
--- a/import-layers/yocto-poky/scripts/oe-buildenv-internal
+++ b/import-layers/yocto-poky/scripts/oe-buildenv-internal
@@ -29,27 +29,31 @@
     return 1
 fi
 
-# Make sure we're not using python v3.x. This check can't go into
-# sanity.bbclass because bitbake's source code doesn't even pass
-# parsing stage when used with python v3, so we catch it here so we
-# can offer a meaningful error message.
-py_v3_check=$(/usr/bin/env python --version 2>&1 | grep "Python 3")
-if [ -n "$py_v3_check" ]; then
-    echo >&2 "Bitbake is not compatible with python v3"
-    echo >&2 "Please set up python v2 as your default python interpreter"
+# Make sure we're not using python v3.x as 'python', we don't support it.
+py_v2_check=$(/usr/bin/env python --version 2>&1 | grep "Python 3")
+if [ -n "$py_v2_check" ]; then
+    echo >&2 "OpenEmbedded requires 'python' to be python v2 (>= 2.7.3), not python v3."
+    echo >&2 "Please set up python v2 as your default 'python' interpreter."
     return 1
 fi
-unset py_v3_check
+unset py_v2_check
 
-# Similarly, we now have code that doesn't parse correctly with older
-# versions of Python, and rather than fixing that and being eternally
-# vigilant for any other new feature use, just check the version here.
-py_v26_check=$(python -c 'import sys; print sys.version_info >= (2,7,3)')
-if [ "$py_v26_check" != "True" ]; then
-    echo >&2 "BitBake requires Python 2.7.3 or later"
+py_v27_check=$(python -c 'import sys; print sys.version_info >= (2,7,3)')
+if [ "$py_v27_check" != "True" ]; then
+    echo >&2 "OpenEmbedded requires 'python' to be python v2 (>= 2.7.3), not python v3."
+    echo >&2 "Please upgrade your python v2."
+fi
+unset py_v27_check
+
+# We potentially have code that doesn't parse correctly with older versions 
+# of Python, and rather than fixing that and being eternally vigilant for 
+# any other new feature use, just check the version here.
+py_v34_check=$(python3 -c 'import sys; print(sys.version_info >= (3,4,0))')
+if [ "$py_v34_check" != "True" ]; then
+    echo >&2 "BitBake requires Python 3.4.0 or later as 'python3'"
     return 1
 fi
-unset py_v26_check
+unset py_v34_check
 
 if [ -z "$BDIR" ]; then
     if [ -z "$1" ]; then
@@ -92,7 +96,7 @@
 BUILDDIR=$(readlink -f "$BUILDDIR")
 
 if [ ! -d "$BITBAKEDIR" ]; then
-    echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist!  Please ensure a copy of bitbake exists at this location"
+    echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist!  Please ensure a copy of bitbake exists at this location or specify an alternative path on the command line"
     return 1
 fi
 
@@ -114,7 +118,7 @@
 HTTPS_PROXY https_proxy FTP_PROXY ftp_proxy FTPS_PROXY ftps_proxy ALL_PROXY \
 all_proxy NO_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY \
 SDKMACHINE BB_NUMBER_THREADS BB_NO_NETWORK PARALLEL_MAKE GIT_PROXY_COMMAND \
-SOCKS5_PASSWD SOCKS5_USER SCREENDIR STAMPS_DIR"
+SOCKS5_PASSWD SOCKS5_USER SCREENDIR STAMPS_DIR BBPATH_EXTRA BB_SETSCENE_ENFORCE"
 
 BB_ENV_EXTRAWHITE="$(echo $BB_ENV_EXTRAWHITE $BB_ENV_EXTRAWHITE_OE | tr ' ' '\n' | LC_ALL=C sort --unique | tr '\n' ' ')"
 
diff --git a/import-layers/yocto-poky/scripts/oe-check-sstate b/import-layers/yocto-poky/scripts/oe-check-sstate
new file mode 100755
index 0000000..d06efe4
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/oe-check-sstate
@@ -0,0 +1,121 @@
+#!/usr/bin/env python3
+
+# Query which tasks will be restored from sstate
+#
+# Copyright 2016 Intel Corporation
+# Authored-by:  Paul Eggleton <paul.eggleton@intel.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import sys
+import os
+import subprocess
+import tempfile
+import shutil
+import re
+
+scripts_path = os.path.dirname(os.path.realpath(__file__))
+lib_path = scripts_path + '/lib'
+sys.path = sys.path + [lib_path]
+import scriptutils
+import scriptpath
+scriptpath.add_bitbake_lib_path()
+import argparse_oe
+
+
+def translate_virtualfns(tasks):
+    import bb.tinfoil
+    tinfoil = bb.tinfoil.Tinfoil()
+    try:
+        tinfoil.prepare(False)
+
+        recipecaches = tinfoil.cooker.recipecaches
+        outtasks = []
+        for task in tasks:
+            (mc, fn, taskname) = bb.runqueue.split_tid(task)
+            if taskname.endswith('_setscene'):
+                taskname = taskname[:-9]
+            outtasks.append('%s:%s' % (recipecaches[mc].pkg_fn[fn], taskname))
+    finally:
+        tinfoil.shutdown()
+    return outtasks
+
+
+def check(args):
+    tmpdir = tempfile.mkdtemp(prefix='oe-check-sstate-')
+    try:
+        env = os.environ.copy()
+        if not args.same_tmpdir:
+            env['BB_ENV_EXTRAWHITE'] = env.get('BB_ENV_EXTRAWHITE', '') + ' TMPDIR_forcevariable'
+            env['TMPDIR_forcevariable'] = tmpdir
+
+        try:
+            output = subprocess.check_output(
+                    'bitbake -n %s' % ' '.join(args.target),
+                    stderr=subprocess.STDOUT,
+                    env=env,
+                    shell=True)
+
+            task_re = re.compile('NOTE: Running setscene task [0-9]+ of [0-9]+ \(([^)]+)\)')
+            tasks = []
+            for line in output.decode('utf-8').splitlines():
+                res = task_re.match(line)
+                if res:
+                    tasks.append(res.group(1))
+            outtasks = translate_virtualfns(tasks)
+        except subprocess.CalledProcessError as e:
+            print('ERROR: bitbake failed:\n%s' % e.output.decode('utf-8'))
+            return e.returncode
+    finally:
+        shutil.rmtree(tmpdir)
+
+    if args.log:
+        with open(args.log, 'wb') as f:
+            f.write(output)
+
+    if args.outfile:
+        with open(args.outfile, 'w') as f:
+            for task in outtasks:
+                f.write('%s\n' % task)
+    else:
+        for task in outtasks:
+            print(task)
+
+    return 0
+
+
+def main():
+    parser = argparse_oe.ArgumentParser(description='OpenEmbedded sstate check tool. Does a dry-run to check restoring the specified targets from shared state, and lists the tasks that would be restored. Set BB_SETSCENE_ENFORCE=1 in the environment if you wish to ensure real tasks are disallowed.')
+
+    parser.add_argument('target', nargs='+', help='Target to check')
+    parser.add_argument('-o', '--outfile', help='Write list to a file instead of stdout')
+    parser.add_argument('-l', '--log', help='Write full log to a file')
+    parser.add_argument('-s', '--same-tmpdir', action='store_true', help='Use same TMPDIR for check (list will then be dependent on what tasks have executed previously)')
+
+    parser.set_defaults(func=check)
+
+    args = parser.parse_args()
+
+    ret = args.func(args)
+    return ret
+
+
+if __name__ == "__main__":
+    try:
+        ret = main()
+    except Exception:
+        ret = 1
+        import traceback
+        traceback.print_exc()
+    sys.exit(ret)
diff --git a/import-layers/yocto-poky/scripts/oe-git-proxy b/import-layers/yocto-poky/scripts/oe-git-proxy
index 1247902..0078e95 100755
--- a/import-layers/yocto-poky/scripts/oe-git-proxy
+++ b/import-layers/yocto-poky/scripts/oe-git-proxy
@@ -86,13 +86,14 @@
 
 	# Match by netmask
 	if valid_ipv4 $GLOB; then
-		HOST_IP=$(gethostip -d $HOST)
-		if valid_ipv4 $HOST_IP; then
-			match_ipv4 $GLOB $HOST_IP
-			if [ $? -eq 0 ]; then
-				return 0
+		for HOST_IP in $(getent ahostsv4 $HOST | grep ' STREAM ' | cut -d ' ' -f 1) ; do
+			if valid_ipv4 $HOST_IP; then
+				match_ipv4 $GLOB $HOST_IP
+				if [ $? -eq 0 ]; then
+					return 0
+				fi
 			fi
-		fi
+		done
 	fi
 
 	return 1
diff --git a/import-layers/yocto-poky/scripts/oe-gnome-terminal-phonehome b/import-layers/yocto-poky/scripts/oe-gnome-terminal-phonehome
new file mode 100755
index 0000000..e023548
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/oe-gnome-terminal-phonehome
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# Gnome terminal won't tell us which PID a given command is run as 
+# or allow a single instance so we can't tell when it completes.
+# This allows us to figure out the PID of the target so we can tell 
+# when its done.
+#
+echo $$ > $1
+shift
+exec $@
diff --git a/import-layers/yocto-poky/scripts/oe-pkgdata-util b/import-layers/yocto-poky/scripts/oe-pkgdata-util
index a04e44d..bb917b4 100755
--- a/import-layers/yocto-poky/scripts/oe-pkgdata-util
+++ b/import-layers/yocto-poky/scripts/oe-pkgdata-util
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # OpenEmbedded pkgdata utility
 #
@@ -240,7 +240,7 @@
         sys.exit(1)
 
     if args.reverse:
-        items = mappings.values()
+        items = list(mappings.values())
     else:
         items = []
         for pkg in pkgs:
@@ -274,6 +274,61 @@
         items.extend(mappings.get(pkg, []))
     print('\n'.join(items))
 
+def package_info(args):
+    # Handle both multiple arguments and multiple values within an arg (old syntax)
+    packages = []
+    if args.file:
+        with open(args.file, 'r') as f:
+            for line in f:
+                splitline = line.split()
+                if splitline:
+                    packages.append(splitline[0])
+    else:
+        for pkgitem in args.pkg:
+            packages.extend(pkgitem.split())
+        if not packages:
+            logger.error("No packages specified")
+            sys.exit(1)
+
+    mappings = defaultdict(lambda: defaultdict(str))
+    for pkg in packages:
+        pkgfile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg)
+        if os.path.exists(pkgfile):
+            with open(pkgfile, 'r') as f:
+                for line in f:
+                    fields = line.rstrip().split(': ')
+                    if fields[0].endswith("_" + pkg):
+                        k = fields[0][:len(fields[0]) - len(pkg) - 1]
+                    else:
+                        k = fields[0]
+                    v = fields[1] if len(fields) == 2 else ""
+                    mappings[pkg][k] = v
+
+    if len(mappings) < len(packages):
+        missing = list(set(packages) - set(mappings.keys()))
+        logger.error("The following packages could not be found: %s" %
+                     ', '.join(missing))
+        sys.exit(1)
+
+    items = []
+    for pkg in packages:
+        pkg_version = mappings[pkg]['PKGV']
+        if mappings[pkg]['PKGE']:
+            pkg_version = mappings[pkg]['PKGE'] + ":" + pkg_version
+        if mappings[pkg]['PKGR']:
+            pkg_version = pkg_version + "-" + mappings[pkg]['PKGR']
+        recipe = mappings[pkg]['PN']
+        recipe_version = mappings[pkg]['PV']
+        if mappings[pkg]['PE']:
+            recipe_version = mappings[pkg]['PE'] + ":" + recipe_version
+        if mappings[pkg]['PR']:
+            recipe_version = recipe_version + "-" + mappings[pkg]['PR']
+        pkg_size = mappings[pkg]['PKGSIZE']
+
+        items.append("%s %s %s %s %s" %
+                     (pkg, pkg_version, recipe, recipe_version, pkg_size))
+    print('\n'.join(items))
+
 def get_recipe_pkgs(pkgdata_dir, recipe, unpackaged):
     recipedatafile = os.path.join(pkgdata_dir, recipe)
     if not os.path.exists(recipedatafile):
@@ -437,6 +492,7 @@
     parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true')
     parser.add_argument('-p', '--pkgdata-dir', help='Path to pkgdata directory (determined automatically if not specified)')
     subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
+    subparsers.required = True
 
     parser_lookup_pkg = subparsers.add_parser('lookup-pkg',
                                           help='Translate between recipe-space package names and runtime package names',
@@ -469,6 +525,13 @@
     parser_lookup_recipe.add_argument('pkg', nargs='+', help='Runtime package name to look up')
     parser_lookup_recipe.set_defaults(func=lookup_recipe)
 
+    parser_package_info = subparsers.add_parser('package-info',
+                                          help='Shows version, recipe and size information for one or more packages',
+                                          description='Looks up the specified runtime package(s) and display information')
+    parser_package_info.add_argument('pkg', nargs='*', help='Runtime package name to look up')
+    parser_package_info.add_argument('-f', '--file', help='Read package names from the specified file (one per line, first field only)')
+    parser_package_info.set_defaults(func=package_info)
+
     parser_find_path = subparsers.add_parser('find-path',
                                           help='Find package providing a target path',
                                           description='Finds the recipe-space package providing the specified target path')
@@ -506,7 +569,10 @@
             sys.exit(1)
         logger.debug('Found bitbake path: %s' % bitbakepath)
         tinfoil = tinfoil_init()
-        args.pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR', True)
+        try:
+            args.pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR', True)
+        finally:
+            tinfoil.shutdown()
         logger.debug('Value of PKGDATA_DIR is "%s"' % args.pkgdata_dir)
         if not args.pkgdata_dir:
             logger.error('Unable to determine pkgdata directory from PKGDATA_DIR')
diff --git a/import-layers/yocto-poky/scripts/oe-publish-sdk b/import-layers/yocto-poky/scripts/oe-publish-sdk
index 55872f2..4fe8974 100755
--- a/import-layers/yocto-poky/scripts/oe-publish-sdk
+++ b/import-layers/yocto-poky/scripts/oe-publish-sdk
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # OpenEmbedded SDK publishing tool
 
diff --git a/import-layers/yocto-poky/scripts/oe-run-native b/import-layers/yocto-poky/scripts/oe-run-native
new file mode 100755
index 0000000..496e34f
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/oe-run-native
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Copyright (c) 2016,  Intel Corporation.
+# All Rights Reserved
+#
+# This program is free software;  you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY;  without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+# the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program;  if not, see <http://www.gnu.org/licenses/>
+#
+
+#
+# This script is for running tools from native oe sysroot
+#
+
+if [ $# -lt 1 -o "$1" = '--help' -o "$1" = '-h' ] ; then
+    echo "Usage: $0 <native tool> [parameters]"
+    exit 1
+fi
+
+SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot 2> /dev/null`
+if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
+        echo "Error: Unable to find oe-find-native-sysroot script"
+        exit 1
+fi
+. $SYSROOT_SETUP_SCRIPT
+
+OLDPATH=$PATH
+
+# look for a tool only in native sysroot
+PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin
+tool=`/usr/bin/which $1 2>/dev/null`
+
+if [ -n "$tool" ] ; then
+    # add old path to allow usage of host tools
+    PATH=$PATH:$OLD_PATH $@
+else
+    echo "Error: Unable to find '$1' in native sysroot"
+    exit 1
+fi
diff --git a/import-layers/yocto-poky/scripts/oe-selftest b/import-layers/yocto-poky/scripts/oe-selftest
index 5e23ef0..d9ffd40 100755
--- a/import-layers/yocto-poky/scripts/oe-selftest
+++ b/import-layers/yocto-poky/scripts/oe-selftest
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Copyright (c) 2013 Intel Corporation
 #
@@ -34,6 +34,8 @@
 import time as t
 import re
 import fnmatch
+import collections
+import imp
 
 sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '/lib')
 import scriptpath
@@ -46,8 +48,19 @@
 from oeqa.utils.commands import runCmd, get_bb_var, get_test_layer
 from oeqa.selftest.base import oeSelfTest, get_available_machines
 
+try:
+    import xmlrunner
+    from xmlrunner.result import _XMLTestResult as TestResult
+    from xmlrunner import XMLTestRunner as _TestRunner
+except ImportError:
+    # use the base runner instead
+    from unittest import TextTestResult as TestResult
+    from unittest import TextTestRunner as _TestRunner
+
+log_prefix = "oe-selftest-" + t.strftime("%Y%m%d-%H%M%S")
+
 def logger_create():
-    log_file = "oe-selftest-" + t.strftime("%Y-%m-%d_%H:%M:%S") + ".log"
+    log_file = log_prefix + ".log"
     if os.path.exists("oe-selftest.log"): os.remove("oe-selftest.log")
     os.symlink(log_file, "oe-selftest.log")
 
@@ -211,7 +224,7 @@
     try:
         import importlib
         modlib = importlib.import_module(tmod)
-        for mod in vars(modlib).values():
+        for mod in list(vars(modlib).values()):
             if isinstance(mod, type(oeSelfTest)) and issubclass(mod, oeSelfTest) and mod is not oeSelfTest:
                 for test in dir(mod):
                     if test.startswith('test_') and hasattr(vars(mod)[test], '__call__'):
@@ -220,12 +233,12 @@
                         try:
                             tid = vars(mod)[test].test_case
                         except:
-                            print 'DEBUG: tc id missing for ' + str(test)
+                            print('DEBUG: tc id missing for ' + str(test))
                             tid = None
                         try:
                             ttag = vars(mod)[test].tag__feature
                         except:
-                            # print 'DEBUG: feature tag missing for ' + str(test)
+                            # print('DEBUG: feature tag missing for ' + str(test))
                             ttag = None
 
                         # NOTE: for some reason lstrip() doesn't work for mod.__module__
@@ -260,16 +273,22 @@
         result = []
         remaining = values[:]
         for key in keyword:
+            found = False
             if key in remaining:
                 # Regular matching of exact item
                 result.append(key)
                 remaining.remove(key)
+                found = True
             else:
                 # Wildcard matching
                 pattern = re.compile(fnmatch.translate(r"%s" % key))
                 added = [x for x in remaining if pattern.match(x)]
-                result.extend(added)
-                remaining = [x for x in remaining if x not in added]
+                if added:
+                    result.extend(added)
+                    remaining = [x for x in remaining if x not in added]
+                    found = True
+            if not found:
+                log.error("Failed to find test: %s" % key)
 
         return result
 
@@ -320,17 +339,17 @@
 
     ts = sorted([ (tc.tcid, tc.tctag, tc.tcname, tc.tcclass, tc.tcmodule) for tc in get_testsuite_by(criteria, keyword) ])
 
-    print '%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % ('id', 'tag', 'name', 'class', 'module')
-    print '_' * 150
+    print('%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % ('id', 'tag', 'name', 'class', 'module'))
+    print('_' * 150)
     for t in ts:
         if isinstance(t[1], (tuple, list)):
-            print '%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % (t[0], ', '.join(t[1]), t[2], t[3], t[4])
+            print('%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % (t[0], ', '.join(t[1]), t[2], t[3], t[4]))
         else:
-            print '%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % t
-    print '_' * 150
-    print 'Filtering by:\t %s' % criteria
-    print 'Looking for:\t %s' % ', '.join(str(x) for x in keyword)
-    print 'Total found:\t %s' % len(ts)
+            print('%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % t)
+    print('_' * 150)
+    print('Filtering by:\t %s' % criteria)
+    print('Looking for:\t %s' % ', '.join(str(x) for x in keyword))
+    print('Total found:\t %s' % len(ts))
 
 
 def list_tests():
@@ -338,16 +357,15 @@
 
     ts = get_all_tests()
 
-    print '%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % ('id', 'tag', 'name', 'class', 'module')
-    print '_' * 150
+    print('%-4s\t%-10s\t%-50s' % ('id', 'tag', 'test'))
+    print('_' * 80)
     for t in ts:
         if isinstance(t.tctag, (tuple, list)):
-            print '%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % (t.tcid, ', '.join(t.tctag), t.tcname, t.tcclass, t.tcmodule)
+            print('%-4s\t%-10s\t%-50s' % (t.tcid, ', '.join(t.tctag), '.'.join([t.tcmodule, t.tcclass, t.tcname])))
         else:
-            print '%-4s\t%-20s\t%-60s\t%-25s\t%-20s' % (t.tcid, t.tctag, t.tcname, t.tcclass, t.tcmodule)
-    print '_' * 150
-    print 'Total found:\t %s' % len(ts)
-
+            print('%-4s\t%-10s\t%-50s' % (t.tcid, t.tctag, '.'.join([t.tcmodule, t.tcclass, t.tcname])))
+    print('_' * 80)
+    print('Total found:\t %s' % len(ts))
 
 def list_tags():
     # Get all tags set to test cases
@@ -362,7 +380,7 @@
         else:
             tags.add(tc.tctag)
 
-    print 'Tags:\t%s' % ', '.join(str(x) for x in tags)
+    print('Tags:\t%s' % ', '.join(str(x) for x in tags))
 
 def coverage_setup(coverage_source, coverage_include, coverage_omit):
     """ Set up the coverage measurement for the testcases to be run """
@@ -370,7 +388,7 @@
     import subprocess
     builddir = os.environ.get("BUILDDIR")
     pokydir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-    curcommit= subprocess.check_output(["git", "--git-dir", os.path.join(pokydir, ".git"), "rev-parse", "HEAD"])
+    curcommit= subprocess.check_output(["git", "--git-dir", os.path.join(pokydir, ".git"), "rev-parse", "HEAD"]).decode('utf-8')
     coveragerc = "%s/.coveragerc" % builddir
     data_file = "%s/.coverage." % builddir
     data_file += datetime.datetime.now().strftime('%Y%m%dT%H%M%S')
@@ -415,7 +433,7 @@
         # Coverage under version 4 uses coverage.coverage
         from coverage import coverage as Coverage
 
-    import cStringIO as StringIO
+    import io as StringIO
     from coverage.misc import CoverageException
 
     cov_output = StringIO.StringIO()
@@ -443,22 +461,24 @@
     bbpath = get_bb_var('BBPATH').split(':')
     layer_libdirs = [p for p in (os.path.join(l, 'lib') for l in bbpath) if os.path.exists(p)]
     sys.path.extend(layer_libdirs)
-    reload(oeqa.selftest)
+    imp.reload(oeqa.selftest)
 
     if args.run_tests_by and len(args.run_tests_by) >= 2:
         valid_options = ['name', 'class', 'module', 'id', 'tag']
         if args.run_tests_by[0] not in valid_options:
-            print '--run-tests-by %s not a valid option. Choose one of <name|class|module|id|tag>.' % args.run_tests_by[0]
+            print('--run-tests-by %s not a valid option. Choose one of <name|class|module|id|tag>.' % args.run_tests_by[0])
             return 1
         else:
             criteria = args.run_tests_by[0]
             keyword = args.run_tests_by[1:]
             ts = sorted([ tc.fullpath for tc in get_testsuite_by(criteria, keyword) ])
+        if not ts:
+            return 1
 
     if args.list_tests_by and len(args.list_tests_by) >= 2:
         valid_options = ['name', 'class', 'module', 'id', 'tag']
         if args.list_tests_by[0] not in valid_options:
-            print '--list-tests-by %s not a valid option. Choose one of <name|class|module|id|tag>.' % args.list_tests_by[0]
+            print('--list-tests-by %s not a valid option. Choose one of <name|class|module|id|tag>.' % args.list_tests_by[0])
             return 1
         else:
             criteria = args.list_tests_by[0]
@@ -482,7 +502,7 @@
             info = ''
             if module.startswith('_'):
                 info = ' (hidden)'
-            print module + info
+            print(module + info)
             if args.list_allclasses:
                 try:
                     import importlib
@@ -490,13 +510,13 @@
                     for v in vars(modlib):
                         t = vars(modlib)[v]
                         if isinstance(t, type(oeSelfTest)) and issubclass(t, oeSelfTest) and t!=oeSelfTest:
-                            print " --", v
+                            print(" --", v)
                             for method in dir(t):
-                                if method.startswith("test_") and callable(vars(t)[method]):
-                                    print " --  --", method
+                                if method.startswith("test_") and isinstance(vars(t)[method], collections.Callable):
+                                    print(" --  --", method)
 
                 except (AttributeError, ImportError) as e:
-                    print e
+                    print(e)
                     pass
 
     if args.run_tests or args.run_all_tests or args.run_tests_by:
@@ -511,7 +531,8 @@
         suite = unittest.TestSuite()
         loader = unittest.TestLoader()
         loader.sortTestMethodsUsing = None
-        runner = unittest.TextTestRunner(verbosity=2, resultclass=buildResultClass(args))
+        runner = TestRunner(verbosity=2,
+                resultclass=buildResultClass(args))
         # we need to do this here, otherwise just loading the tests
         # will take 2 minutes (bitbake -e calls)
         oeSelfTest.testlayer_path = get_test_layer()
@@ -552,7 +573,7 @@
     """Build a Result Class to use in the testcase execution"""
     import site
 
-    class StampedResult(unittest.TextTestResult):
+    class StampedResult(TestResult):
         """
         Custom TestResult that prints the time when a test starts.  As oe-selftest
         can take a long time (ie a few hours) to run, timestamps help us understand
@@ -584,6 +605,10 @@
                 if self.coverage_installed:
                     log.info("Coverage is enabled")
 
+                    major_version = int(coverage.version.__version__[0])
+                    if major_version < 4:
+                        log.error("python coverage %s installed. Require version 4 or greater." % coverage.version.__version__)
+                        self.stop()
                     # In case the user has not set the variable COVERAGE_PROCESS_START,
                     # create a default one and export it. The COVERAGE_PROCESS_START
                     # value indicates where the coverage configuration file resides
@@ -622,6 +647,21 @@
 
     return StampedResult
 
+class TestRunner(_TestRunner):
+    """Test runner class aware of exporting tests."""
+    def __init__(self, *args, **kwargs):
+        try:
+            exportdir = os.path.join(os.getcwd(), log_prefix)
+            kwargsx = dict(**kwargs)
+            # argument specific to XMLTestRunner, if adding a new runner then
+            # also add logic to use other runner's args.
+            kwargsx['output'] = exportdir
+            kwargsx['descriptions'] = False
+            # done for the case where telling the runner where to export
+            super(TestRunner, self).__init__(*args, **kwargsx)
+        except TypeError:
+            log.info("test runner init'ed like unittest")
+            super(TestRunner, self).__init__(*args, **kwargs)
 
 if __name__ == "__main__":
     try:
diff --git a/import-layers/yocto-poky/scripts/oe-trim-schemas b/import-layers/yocto-poky/scripts/oe-trim-schemas
index 29fb3a1..66a1b8d 100755
--- a/import-layers/yocto-poky/scripts/oe-trim-schemas
+++ b/import-layers/yocto-poky/scripts/oe-trim-schemas
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python3
 
 import sys
 try:
diff --git a/import-layers/yocto-poky/scripts/oepydevshell-internal.py b/import-layers/yocto-poky/scripts/oepydevshell-internal.py
index f7b2e4e..a22bec3 100755
--- a/import-layers/yocto-poky/scripts/oepydevshell-internal.py
+++ b/import-layers/yocto-poky/scripts/oepydevshell-internal.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import os
 import sys
@@ -29,9 +29,6 @@
 pty = open(sys.argv[1], "w+b", 0)
 parent = int(sys.argv[2])
 
-# Don't buffer output by line endings
-sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
-sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0)
 nonblockingfd(pty)
 nonblockingfd(sys.stdin)
 
@@ -50,7 +47,7 @@
     # Need cbreak/noecho whilst in select so we trigger on any keypress
     cbreaknoecho(sys.stdin.fileno())
     # Send our PID to the other end so they can kill us.
-    pty.write(str(os.getpid()) + "\n")
+    pty.write(str(os.getpid()).encode('utf-8') + b"\n")
     while True:
         try:
             writers = []
@@ -59,17 +56,18 @@
             (ready, _, _) = select.select([pty, sys.stdin], writers , [], 0)
             try:
                 if pty in ready:
-                    i = i + pty.read()
+                    i = i + pty.read().decode('utf-8')
                 if i:
                     # Write a page at a time to avoid overflowing output 
                     # d.keys() is a good way to do that
                     sys.stdout.write(i[:4096])
+                    sys.stdout.flush()
                     i = i[4096:]
                 if sys.stdin in ready:
                     echonocbreak(sys.stdin.fileno())
-                    o = raw_input()
+                    o = input().encode('utf-8')
                     cbreaknoecho(sys.stdin.fileno())
-                    pty.write(o + "\n")
+                    pty.write(o + b"\n")
             except (IOError, OSError) as e:
                 if e.errno == 11:
                     continue
diff --git a/import-layers/yocto-poky/scripts/opkg-query-helper.py b/import-layers/yocto-poky/scripts/opkg-query-helper.py
index 2fb1a78..ce89491 100755
--- a/import-layers/yocto-poky/scripts/opkg-query-helper.py
+++ b/import-layers/yocto-poky/scripts/opkg-query-helper.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # OpenEmbedded opkg query helper utility
 #
diff --git a/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/main.py.in b/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/main.py.in
index 21bb0be..a954b12 100644
--- a/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/main.py.in
+++ b/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/main.py.in
@@ -16,8 +16,6 @@
 #  You should have received a copy of the GNU General Public License
 #  along with pybootchartgui. If not, see <http://www.gnu.org/licenses/>.
 
-from __future__ import print_function
-
 import sys
 import os
 import optparse
@@ -149,9 +147,7 @@
 					for time in res[4]:
 						if time is not None:
 							# output as ms
-							print(time * 10, file=f)
-						else:
-							print(file=f)
+							f.write(time * 10)
 				finally:
 					f.close()
 			filename = _get_filename(options.output)
diff --git a/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/parsing.py b/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/parsing.py
index d423b9f..a3a0b0b 100644
--- a/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/parsing.py
+++ b/import-layers/yocto-poky/scripts/pybootchartgui/pybootchartgui/parsing.py
@@ -13,9 +13,6 @@
 #  You should have received a copy of the GNU General Public License
 #  along with pybootchartgui. If not, see <http://www.gnu.org/licenses/>.
 
-
-from __future__ import with_statement
-
 import os
 import string
 import re
diff --git a/import-layers/yocto-poky/scripts/pythondeps b/import-layers/yocto-poky/scripts/pythondeps
index ff92e74..590b976 100755
--- a/import-layers/yocto-poky/scripts/pythondeps
+++ b/import-layers/yocto-poky/scripts/pythondeps
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Determine dependencies of python scripts or available python modules in a search path.
 #
@@ -187,7 +187,7 @@
     directory = os.path.realpath(directory)
 
     provides = dict((v, k) for k, v in get_provides(directory))
-    for filename, provide in provides.iteritems():
+    for filename, provide in provides.items():
         if os.path.isdir(filename):
             filename = os.path.join(filename, '__init__.py')
             ispkg = True
diff --git a/import-layers/yocto-poky/scripts/recipetool b/import-layers/yocto-poky/scripts/recipetool
index 6c66487..1052cd2 100755
--- a/import-layers/yocto-poky/scripts/recipetool
+++ b/import-layers/yocto-poky/scripts/recipetool
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Recipe creation tool
 #
@@ -60,6 +60,7 @@
     parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
                         help='show this help message and exit')
     subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
+    subparsers.required = True
 
     if global_args.debug:
         logger.setLevel(logging.DEBUG)
@@ -76,37 +77,40 @@
     scriptutils.logger_setup_color(logger, global_args.color)
 
     tinfoil = tinfoil_init(False)
-    for path in ([scripts_path] +
-                 tinfoil.config_data.getVar('BBPATH', True).split(':')):
-        pluginpath = os.path.join(path, 'lib', 'recipetool')
-        scriptutils.load_plugins(logger, plugins, pluginpath)
-
-    registered = False
-    for plugin in plugins:
-        if hasattr(plugin, 'register_commands'):
-            registered = True
-            plugin.register_commands(subparsers)
-        elif hasattr(plugin, 'register_command'):
-            # Legacy function name
-            registered = True
-            plugin.register_command(subparsers)
-        if hasattr(plugin, 'tinfoil_init'):
-            plugin.tinfoil_init(tinfoil)
-
-    if not registered:
-        logger.error("No commands registered - missing plugins?")
-        sys.exit(1)
-
-    args = parser.parse_args(unparsed_args, namespace=global_args)
-
     try:
-        if getattr(args, 'parserecipes', False):
-            tinfoil.config_data.disableTracking()
-            tinfoil.parseRecipes()
-            tinfoil.config_data.enableTracking()
-        ret = args.func(args)
-    except bb.BBHandledException:
-        ret = 1
+        for path in ([scripts_path] +
+                    tinfoil.config_data.getVar('BBPATH', True).split(':')):
+            pluginpath = os.path.join(path, 'lib', 'recipetool')
+            scriptutils.load_plugins(logger, plugins, pluginpath)
+
+        registered = False
+        for plugin in plugins:
+            if hasattr(plugin, 'register_commands'):
+                registered = True
+                plugin.register_commands(subparsers)
+            elif hasattr(plugin, 'register_command'):
+                # Legacy function name
+                registered = True
+                plugin.register_command(subparsers)
+            if hasattr(plugin, 'tinfoil_init'):
+                plugin.tinfoil_init(tinfoil)
+
+        if not registered:
+            logger.error("No commands registered - missing plugins?")
+            sys.exit(1)
+
+        args = parser.parse_args(unparsed_args, namespace=global_args)
+
+        try:
+            if getattr(args, 'parserecipes', False):
+                tinfoil.config_data.disableTracking()
+                tinfoil.parseRecipes()
+                tinfoil.config_data.enableTracking()
+            ret = args.func(args)
+        except bb.BBHandledException:
+            ret = 1
+    finally:
+        tinfoil.shutdown()
 
     return ret
 
diff --git a/import-layers/yocto-poky/scripts/relocate_sdk.py b/import-layers/yocto-poky/scripts/relocate_sdk.py
index 99fca86..e47b4d9 100755
--- a/import-layers/yocto-poky/scripts/relocate_sdk.py
+++ b/import-layers/yocto-poky/scripts/relocate_sdk.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2012 Intel Corporation
 #
diff --git a/import-layers/yocto-poky/scripts/runqemu b/import-layers/yocto-poky/scripts/runqemu
index d7fa941..dbe17ab 100755
--- a/import-layers/yocto-poky/scripts/runqemu
+++ b/import-layers/yocto-poky/scripts/runqemu
@@ -1,8 +1,9 @@
-#!/bin/bash
-#
+#!/usr/bin/env python3
+
 # Handle running OE images standalone with QEMU
 #
 # Copyright (C) 2006-2011 Linux Foundation
+# Copyright (c) 2016 Wind River Systems, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 as
@@ -17,530 +18,1010 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-usage() {
-    MYNAME=`basename $0`
-cat <<_EOF
+import os
+import sys
+import logging
+import subprocess
+import re
+import fcntl
+import shutil
+import glob
+import configparser
 
+class OEPathError(Exception):
+    """Custom Exception to give better guidance on missing binaries"""
+    def __init__(self, message):
+        self.message = "In order for this script to dynamically infer paths\n \
+kernels or filesystem images, you either need bitbake in your PATH\n \
+or to source oe-init-build-env before running this script.\n\n \
+Dynamic path inference can be avoided by passing a *.qemuboot.conf to\n \
+runqemu, i.e. `runqemu /path/to/my-image-name.qemuboot.conf`\n\n %s" % message
+
+
+def create_logger():
+    logger = logging.getLogger('runqemu')
+    logger.setLevel(logging.INFO)
+
+    # create console handler and set level to debug
+    ch = logging.StreamHandler()
+    ch.setLevel(logging.INFO)
+
+    # create formatter
+    formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
+
+    # add formatter to ch
+    ch.setFormatter(formatter)
+
+    # add ch to logger
+    logger.addHandler(ch)
+
+    return logger
+
+logger = create_logger()
+
+def print_usage():
+    print("""
 Usage: you can run this script with any valid combination
 of the following environment variables (in any order):
   KERNEL - the kernel image file to use
   ROOTFS - the rootfs image file or nfsroot directory to use
   MACHINE - the machine name (optional, autodetected from KERNEL filename if unspecified)
   Simplified QEMU command-line options can be passed with:
-    nographic - disables video console
-    serial - enables a serial console on /dev/ttyS0
-    kvm - enables KVM when running qemux86/qemux86-64 (VT-capable CPU required)
-    kvm-vhost - enables KVM with vhost support when running qemux86/qemux86-64 (VT-capable CPU required)
+    nographic - disable video console
+    serial - enable a serial console on /dev/ttyS0
+    slirp - enable user networking, no root privileges is required
+    kvm - enable KVM when running x86/x86_64 (VT-capable CPU required)
+    kvm-vhost - enable KVM with vhost when running x86/x86_64 (VT-capable CPU required)
     publicvnc - enable a VNC server open to all hosts
-  qemuparams="xyz" - specify custom parameters to QEMU
-  bootparams="xyz" - specify custom kernel parameters during boot
+    audio - enable audio
+  tcpserial=<port> - specify tcp serial port number
+  biosdir=<dir> - specify custom bios dir
+  biosfilename=<filename> - specify bios filename
+  qemuparams=<xyz> - specify custom parameters to QEMU
+  bootparams=<xyz> - specify custom kernel parameters during boot
+  help: print this text
 
 Examples:
-  $MYNAME qemuarm
-  $MYNAME qemux86-64 core-image-sato ext4
-  $MYNAME qemux86-64 wic-image-minimal wic
-  $MYNAME path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial
-  $MYNAME qemux86 iso/hddimg/vmdk/qcow2/vdi/ramfs/cpio.gz...
-  $MYNAME qemux86 qemuparams="-m 256"
-  $MYNAME qemux86 bootparams="psplash=false"
-  $MYNAME path/to/<image>-<machine>.vmdk
-  $MYNAME path/to/<image>-<machine>.wic
-_EOF
-    exit 1
-}
+  runqemu qemuarm
+  runqemu tmp/deploy/images/qemuarm
+  runqemu tmp/deploy/images/qemux86/.qemuboot.conf
+  runqemu qemux86-64 core-image-sato ext4
+  runqemu qemux86-64 wic-image-minimal wic
+  runqemu path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial
+  runqemu qemux86 iso/hddimg/vmdk/qcow2/vdi/ramfs/cpio.gz...
+  runqemu qemux86 qemuparams="-m 256"
+  runqemu qemux86 bootparams="psplash=false"
+  runqemu path/to/<image>-<machine>.vmdk
+  runqemu path/to/<image>-<machine>.wic
+""")
 
-if [ "x$1" = "x" ]; then
-    usage
-fi
+def check_tun():
+    """Check /dev/net/run"""
+    dev_tun = '/dev/net/tun'
+    if not os.path.exists(dev_tun):
+        raise Exception("TUN control device %s is unavailable; you may need to enable TUN (e.g. sudo modprobe tun)" % dev_tun)
 
-error() {
-    echo "Error: "$*
-    usage
-}
+    if not os.access(dev_tun, os.W_OK):
+        raise Exception("TUN control device %s is not writable, please fix (e.g. sudo chmod 666 %s)" % (dev_tun, dev_tun))
 
-MACHINE=${MACHINE:=""}
-KERNEL=${KERNEL:=""}
-ROOTFS=${ROOTFS:=""}
-FSTYPE=${FSTYPE:=""}
-LAZY_ROOTFS=""
-SCRIPT_QEMU_OPT=""
-SCRIPT_QEMU_EXTRA_OPT=""
-SCRIPT_KERNEL_OPT=""
-SERIALSTDIO=""
-TCPSERIAL_PORTNUM=""
-KVM_ENABLED="no"
-KVM_ACTIVE="no"
-VHOST_ENABLED="no"
-VHOST_ACTIVE="no"
-IS_VM="false"
+def check_libgl(qemu_bin):
+    cmd = 'ldd %s' % qemu_bin
+    logger.info('Running %s...' % cmd)
+    need_gl = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
+    if re.search('libGLU', need_gl):
+        # We can't run without a libGL.so
+        libgl = False
+        check_files = (('/usr/lib/libGL.so', '/usr/lib/libGLU.so'), \
+            ('/usr/lib64/libGL.so', '/usr/lib64/libGLU.so'), \
+            ('/usr/lib/*-linux-gnu/libGL.so', '/usr/lib/*-linux-gnu/libGLU.so'))
 
-# Determine whether the file is a kernel or QEMU image, and set the
-# appropriate variables
-process_filename() {
-    filename=$1
+        for (f1, f2) in check_files:
+            if re.search('\*', f1):
+                for g1 in glob.glob(f1):
+                    if libgl:
+                        break
+                    if os.path.exists(g1):
+                        for g2 in glob.glob(f2):
+                            if os.path.exists(g2):
+                                libgl = True
+                                break
+                if libgl:
+                    break
+            else:
+                if os.path.exists(f1) and os.path.exists(f2):
+                    libgl = True
+                    break
+        if not libgl:
+            logger.error("You need libGL.so and libGLU.so to exist in your library path to run the QEMU emulator.")
+            logger.error("Ubuntu package names are: libgl1-mesa-dev and libglu1-mesa-dev.")
+            logger.error("Fedora package names are: mesa-libGL-devel mesa-libGLU-devel.")
+            raise Exception('%s requires libGLU, but not found' % qemu_bin)
 
-    # Extract the filename extension
-    EXT=`echo $filename | awk -F . '{ print \$NF }'`
-    case /$EXT/ in
-	/bin/)
-		# A file ending in .bin is a kernel
-		[ -z "$KERNEL" ] && KERNEL=$filename || \
-		    error "conflicting KERNEL args [$KERNEL] and [$filename]"
-		;;
-	/ext[234]/|/jffs2/|/btrfs/)
-		# A file ending in a supportted fs type is a rootfs image
-		if [ -z "$FSTYPE" -o "$FSTYPE" = "$EXT" ]; then
-		    FSTYPE=$EXT
-		    ROOTFS=$filename
-		else
-		    error "conflicting FSTYPE types [$FSTYPE] and [$EXT]"
-		fi
-		;;
-	/hddimg/|/hdddirect/|/vmdk/|/wic/|/qcow2/|/vdi/)
-		FSTYPE=$EXT
-		VM=$filename
-		ROOTFS=$filename
-		IS_VM="true"
-		;;
-	*)
-		error "unknown file arg [$filename]"
-		;;
-    esac
-}
+def get_first_file(cmds):
+    """Return first file found in wildcard cmds"""
+    for cmd in cmds:
+        all_files = glob.glob(cmd)
+        if all_files:
+            for f in all_files:
+                if not os.path.isdir(f):
+                    return f
+    return ''
 
-check_fstype_conflicts() {
-    if [ -z "$FSTYPE" -o "$FSTYPE" = "$1" ]; then
-        FSTYPE=$1
-    else
-        error "conflicting FSTYPE types [$FSTYPE] and [$1]"
-    fi
-}
-# Parse command line args without requiring specific ordering. It's a
-# bit more complex, but offers a great user experience.
-while true; do
-    arg=${1}
-    case "$arg" in
-        "qemux86" | "qemux86-64" | "qemuarm" | "qemuarm64" | "qemumips" | "qemumipsel" | \
-        "qemumips64" | "qemush4"  | "qemuppc" | "qemumicroblaze" | "qemuzynq")
-            [ -z "$MACHINE" -o "$MACHINE" = "$arg" ] && MACHINE=$arg || \
-                error "conflicting MACHINE types [$MACHINE] and [$arg]"
-            ;;
-        "ext"[234] | "jffs2" | "nfs" | "btrfs")
-            check_fstype_conflicts $arg
-            ;;
-        "hddimg" | "hdddirect" | "wic" | "vmdk" | "qcow2" | "vdi" | "iso")
-            check_fstype_conflicts $arg
-            IS_VM="true"
-            ;;
-        "ramfs" | "cpio.gz")
-            FSTYPE=cpio.gz
-            ;;
-        "nographic")
-            SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -nographic"
-            SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
-            ;;
-        "serial")
-            SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -serial stdio"
-            SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
-            SERIALSTDIO="1"
-            ;;
-        "tcpserial="*)
-            TCPSERIAL_PORTNUM=${arg##tcpserial=}
-            ;;
-        "biosdir="*)
-            CUSTOMBIOSDIR="${arg##biosdir=}"
-	    ;;
-        "biosfilename="*)
-            SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -bios ${arg##biosfilename=}"
-            ;;
-        "qemuparams="*)
-            SCRIPT_QEMU_EXTRA_OPT="${arg##qemuparams=}"
+class BaseConfig(object):
+    def __init__(self):
+        # Vars can be merged with .qemuboot.conf, use a dict to manage them.
+        self.d = {
+            'MACHINE': '',
+            'DEPLOY_DIR_IMAGE': '',
+            'QB_KERNEL_ROOT': '/dev/vda',
+        }
 
-            # Warn user if they try to specify serial or kvm options
-            # to use simplified options instead
-            serial_option=`expr "$SCRIPT_QEMU_EXTRA_OPT" : '.*\(-serial\)'`
-            kvm_option=`expr "$SCRIPT_QEMU_EXTRA_OPT" : '.*\(-enable-kvm\)'`
-            vga_option=`expr "$SCRIPT_QEMU_EXTRA_OPT" : '.*\(-vga\)'`
-            [ ! -z "$serial_option" -o ! -z "$kvm_option" ] && \
-                echo "Please use simplified serial or kvm options instead"
-            ;;
-        "bootparams="*)
-            SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT ${arg##bootparams=}"
-            ;;
-        "audio")
-            if [ "x$MACHINE" = "xqemux86" -o "x$MACHINE" = "xqemux86-64" ]; then
-                echo "Enabling audio in qemu."
-                echo "Please install snd_intel8x0 or snd_ens1370 driver in linux guest."
-                QEMU_AUDIO_DRV="alsa"
-                SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -soundhw ac97,es1370"
-            fi
-            ;;
-        "kvm")
-            KVM_ENABLED="yes"
-            KVM_CAPABLE=`grep -q 'vmx\|svm' /proc/cpuinfo && echo 1`
-            ;;
-        "kvm-vhost")
-            KVM_ENABLED="yes"
-            KVM_CAPABLE=`grep -q 'vmx\|svm' /proc/cpuinfo && echo 1`
-            VHOST_ENABLED="yes"
-            ;;
-        "slirp")
-            SLIRP_ENABLED="yes"
-            ;;
-        "publicvnc")
-            SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -vnc :0"
-            ;;
-        *-image*)
-            [ -z "$ROOTFS" ] || \
-        		error "conflicting ROOTFS args [$ROOTFS] and [$arg]"
-            if [ -f "$arg" ]; then
-                process_filename $arg
-            elif [ -d "$arg" ]; then
-                # Handle the case where the nfsroot dir has -image-
-                # in the pathname
-                echo "Assuming $arg is an nfs rootfs"
-                FSTYPE=nfs
-                ROOTFS=$arg
-            else
-                ROOTFS=$arg
-                LAZY_ROOTFS="true"
-            fi
-            ;;
-        "") break ;;
-        *)
-            # A directory name is an nfs rootfs
-            if [ -d "$arg" ]; then
-                echo "Assuming $arg is an nfs rootfs"
-                if [ -z "$FSTYPE" -o "$FSTYPE" = "nfs" ]; then
-                    FSTYPE=nfs
-                else
-                    error "conflicting FSTYPE types [$arg] and nfs"
-                fi
+        self.qemu_opt = ''
+        self.qemu_opt_script = ''
+        self.nfs_dir = ''
+        self.clean_nfs_dir = False
+        self.nfs_server = ''
+        self.rootfs = ''
+        self.qemuboot = ''
+        self.qbconfload = False
+        self.kernel = ''
+        self.kernel_cmdline = ''
+        self.kernel_cmdline_script = ''
+        self.dtb = ''
+        self.fstype = ''
+        self.kvm_enabled = False
+        self.vhost_enabled = False
+        self.slirp_enabled = False
+        self.nfs_instance = 0
+        self.nfs_running = False
+        self.serialstdio = False
+        self.cleantap = False
+        self.saved_stty = ''
+        self.audio_enabled = False
+        self.tcpserial_portnum = ''
+        self.custombiosdir = ''
+        self.lock = ''
+        self.lock_descriptor = ''
+        self.bitbake_e = ''
+        self.snapshot = False
+        self.fstypes = ('ext2', 'ext3', 'ext4', 'jffs2', 'nfs', 'btrfs', 'cpio.gz', 'cpio', 'ramfs')
+        self.vmtypes = ('hddimg', 'hdddirect', 'wic', 'vmdk', 'qcow2', 'vdi', 'iso')
 
-                if [ -z "$ROOTFS" ]; then
-                    ROOTFS=$arg
-                else
-                    error "conflicting ROOTFS args [$ROOTFS] and [$arg]"
-                fi
-            elif [ -f "$arg" ]; then
-                process_filename $arg
-            else
-                error "unable to classify arg [$arg]"
-            fi
-            ;;
-    esac
-    shift
-done
+    def acquire_lock(self):
+        logger.info("Acquiring lockfile %s..." % self.lock)
+        try:
+            self.lock_descriptor = open(self.lock, 'w')
+            fcntl.flock(self.lock_descriptor, fcntl.LOCK_EX|fcntl.LOCK_NB)
+        except Exception as e:
+            logger.info("Acquiring lockfile %s failed: %s" % (self.lock, e))
+            if self.lock_descriptor:
+                self.lock_descriptor.close()
+            return False
+        return True
 
-if [ ! -c /dev/net/tun ] ; then
-	echo "TUN control device /dev/net/tun is unavailable; you may need to enable TUN (e.g. sudo modprobe tun)"
-	exit 1
-elif [ ! -w /dev/net/tun ] ; then
-	echo "TUN control device /dev/net/tun is not writable, please fix (e.g. sudo chmod 666 /dev/net/tun)"
-	exit 1
-fi
+    def release_lock(self):
+        fcntl.flock(self.lock_descriptor, fcntl.LOCK_UN)
+        self.lock_descriptor.close()
+        os.remove(self.lock)
 
-# Report errors for missing combinations of options
-if [ -z "$MACHINE" -a -z "$KERNEL" -a -z "$VM" -a "$FSTYPE" != "wic" ]; then
-    error "you must specify at least a MACHINE or KERNEL argument"
-fi
-if [ "$FSTYPE" = "nfs" -a -z "$ROOTFS" ]; then
-    error "NFS booting without an explicit ROOTFS path is not yet supported"
-fi
+    def get(self, key):
+        if key in self.d:
+            return self.d.get(key)
+        else:
+            return ''
 
-if [ -z "$MACHINE" ]; then
-    if [ "$IS_VM" = "true" ]; then
-        [ "x$FSTYPE" = "xwic" ] && filename=$ROOTFS || filename=$VM
-        MACHINE=`basename $filename | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm64\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
-        if [ -z "$MACHINE" ]; then
-            error "Unable to set MACHINE from image filename [$VM]"
-        fi
-        echo "Set MACHINE to [$MACHINE] based on image [$VM]"
-    else
-        MACHINE=`basename $KERNEL | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm64\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
-        if [ -z "$MACHINE" ]; then
-            error "Unable to set MACHINE from kernel filename [$KERNEL]"
-        fi
-        echo "Set MACHINE to [$MACHINE] based on kernel [$KERNEL]"
-    fi
-fi
+    def set(self, key, value):
+        self.d[key] = value
 
-YOCTO_KVM_WIKI="https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu"
-YOCTO_PARAVIRT_KVM_WIKI="https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM"
-# Detect KVM configuration
-if [ "x$KVM_ENABLED" = "xyes" ]; then
-    if [ -z "$KVM_CAPABLE" ]; then
-        echo "You are trying to enable KVM on a cpu without VT support."
-        echo "Remove kvm from the command-line, or refer"
-        echo "$YOCTO_KVM_WIKI";
-        exit 1;
-    fi
-    if [ "x$MACHINE" != "xqemux86" -a "x$MACHINE" != "xqemux86-64" ]; then
-        echo "KVM only support x86 & x86-64. Remove kvm from the command-line";
-        exit 1;
-    fi
-    if [ ! -e /dev/kvm ]; then
-        echo "Missing KVM device. Have you inserted kvm modules?"
-        echo "For further help see:"
-        echo "$YOCTO_KVM_WIKI";
-        exit 1;
-    fi
-    if [ -w /dev/kvm -a -r /dev/kvm ]; then
-        SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -enable-kvm"
-        KVM_ACTIVE="yes"
-    else
-        echo "You have no rights on /dev/kvm."
-        echo "Please change the ownership of this file as described at:"
-        echo "$YOCTO_KVM_WIKI";
-        exit 1;
-    fi
-    if [ "x$VHOST_ENABLED" = "xyes" ]; then
-        if [ ! -e /dev/vhost-net ]; then
-            echo "Missing virtio net device. Have you inserted vhost-net module?"
-            echo "For further help see:"
-            echo "$YOCTO_PARAVIRT_KVM_WIKI";
-            exit 1;
-        fi
+    def is_deploy_dir_image(self, p):
+        if os.path.isdir(p):
+            if not re.search('.qemuboot.conf$', '\n'.join(os.listdir(p)), re.M):
+                logger.info("Can't find required *.qemuboot.conf in %s" % p)
+                return False
+            if not re.search('-image-', '\n'.join(os.listdir(p))):
+                logger.info("Can't find *-image-* in %s" % p)
+                return False
+            return True
+        else:
+            return False
 
-        if [ -w /dev/vhost-net -a -r /dev/vhost-net ]; then
-            VHOST_ACTIVE="yes"
-        else
-            echo "You have no rights on /dev/vhost-net."
-            echo "Please change the ownership of this file as described at:"
-            echo "$YOCTO_KVM_WIKI";
-            exit 1;
-        fi
-    fi
-fi
+    def check_arg_fstype(self, fst):
+        """Check and set FSTYPE"""
+        if fst not in self.fstypes + self.vmtypes:
+            logger.warn("Maybe unsupported FSTYPE: %s" % fst)
+        if not self.fstype or self.fstype == fst:
+            if fst == 'ramfs':
+                fst = 'cpio.gz'
+            self.fstype = fst
+        else:
+            raise Exception("Conflicting: FSTYPE %s and %s" % (self.fstype, fst))
 
-machine2=`echo $MACHINE | tr 'a-z' 'A-Z' | sed 's/-/_/'`
-# MACHINE is now set for all cases
+    def set_machine_deploy_dir(self, machine, deploy_dir_image):
+        """Set MACHINE and DEPLOY_DIR_IMAGE"""
+        logger.info('MACHINE: %s' % machine)
+        self.set("MACHINE", machine)
+        logger.info('DEPLOY_DIR_IMAGE: %s' % deploy_dir_image)
+        self.set("DEPLOY_DIR_IMAGE", deploy_dir_image)
 
-# Defaults used when these vars need to be inferred
-QEMUX86_DEFAULT_KERNEL=bzImage-qemux86.bin
-QEMUX86_DEFAULT_FSTYPE=ext4
+    def check_arg_nfs(self, p):
+        if os.path.isdir(p):
+            self.nfs_dir = p
+        else:
+            m = re.match('(.*):(.*)', p)
+            self.nfs_server = m.group(1)
+            self.nfs_dir = m.group(2)
+        self.rootfs = ""
+        self.check_arg_fstype('nfs')
 
-QEMUX86_64_DEFAULT_KERNEL=bzImage-qemux86-64.bin
-QEMUX86_64_DEFAULT_FSTYPE=ext4
+    def check_arg_path(self, p):
+        """
+        - Check whether it is <image>.qemuboot.conf or contains <image>.qemuboot.conf
+        - Check whether is a kernel file
+        - Check whether is a image file
+        - Check whether it is a nfs dir
+        """
+        if p.endswith('.qemuboot.conf'):
+            self.qemuboot = p
+            self.qbconfload = True
+        elif re.search('\.bin$', p) or re.search('bzImage', p) or \
+             re.search('zImage', p) or re.search('vmlinux', p) or \
+             re.search('fitImage', p) or re.search('uImage', p):
+            self.kernel =  p
+        elif os.path.exists(p) and (not os.path.isdir(p)) and re.search('-image-', os.path.basename(p)):
+            self.rootfs = p
+            dirpath = os.path.dirname(p)
+            m = re.search('(.*)\.(.*)$', p)
+            if m:
+                qb = '%s%s' % (re.sub('\.rootfs$', '', m.group(1)), '.qemuboot.conf')
+                if os.path.exists(qb):
+                    self.qemuboot = qb
+                    self.qbconfload = True
+                else:
+                    logger.warn("%s doesn't exist" % qb)
+                fst = m.group(2)
+                self.check_arg_fstype(fst)
+            else:
+                raise Exception("Can't find FSTYPE from: %s" % p)
+        elif os.path.isdir(p) or re.search(':', arg) and re.search('/', arg):
+            if self.is_deploy_dir_image(p):
+                logger.info('DEPLOY_DIR_IMAGE: %s' % p)
+                self.set("DEPLOY_DIR_IMAGE", p)
+            else:
+                logger.info("Assuming %s is an nfs rootfs" % p)
+                self.check_arg_nfs(p)
+        else:
+            raise Exception("Unknown path arg %s" % p)
 
-QEMUARM_DEFAULT_KERNEL=zImage-qemuarm.bin
-QEMUARM_DEFAULT_FSTYPE=ext4
+    def check_arg_machine(self, arg):
+        """Check whether it is a machine"""
+        if self.get('MACHINE') and self.get('MACHINE') != arg or re.search('/', arg):
+            raise Exception("Unknown arg: %s" % arg)
+        elif self.get('MACHINE') == arg:
+            return
+        logger.info('Assuming MACHINE = %s' % arg)
 
-QEMUARM64_DEFAULT_KERNEL=Image-qemuarm64.bin
-QEMUARM64_DEFAULT_FSTYPE=ext4
+        # if we're running under testimage, or similarly as a child
+        # of an existing bitbake invocation, we can't invoke bitbake
+        # to validate the MACHINE setting and must assume it's correct...
+        # FIXME: testimage.bbclass exports these two variables into env,
+        # are there other scenarios in which we need to support being
+        # invoked by bitbake?
+        deploy = os.environ.get('DEPLOY_DIR_IMAGE')
+        bbchild = deploy and os.environ.get('OE_TMPDIR')
+        if bbchild:
+            self.set_machine_deploy_dir(arg, deploy)
+            return
+        # also check whether we're running under a sourced toolchain
+        # environment file
+        if os.environ.get('OECORE_NATIVE_SYSROOT'):
+            self.set("MACHINE", arg)
+            return
 
-QEMUMIPS_DEFAULT_KERNEL=vmlinux-qemumips.bin
-QEMUMIPS_DEFAULT_FSTYPE=ext4
+        cmd = 'MACHINE=%s bitbake -e' % arg
+        logger.info('Running %s...' % cmd)
+        self.bitbake_e = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
+        # bitbake -e doesn't report invalid MACHINE as an error, so
+        # let's check DEPLOY_DIR_IMAGE to make sure that it is a valid
+        # MACHINE.
+        s = re.search('^DEPLOY_DIR_IMAGE="(.*)"', self.bitbake_e, re.M)
+        if s:
+            deploy_dir_image = s.group(1)
+        else:
+            raise Exception("bitbake -e %s" % self.bitbake_e)
+        if self.is_deploy_dir_image(deploy_dir_image):
+            self.set_machine_deploy_dir(arg, deploy_dir_image)
+        else:
+            logger.error("%s not a directory valid DEPLOY_DIR_IMAGE" % deploy_dir_image)
+            self.set("MACHINE", arg)
 
-QEMUMIPSEL_DEFAULT_KERNEL=vmlinux-qemumipsel.bin
-QEMUMIPSEL_DEFAULT_FSTYPE=ext4
+    def check_args(self):
+        unknown_arg = ""
+        for arg in sys.argv[1:]:
+            if arg in self.fstypes + self.vmtypes:
+                self.check_arg_fstype(arg)
+            elif arg == 'nographic':
+                self.qemu_opt_script += ' -nographic'
+                self.kernel_cmdline_script += ' console=ttyS0'
+            elif arg == 'serial':
+                self.kernel_cmdline_script += ' console=ttyS0'
+                self.serialstdio = True
+            elif arg == 'audio':
+                logger.info("Enabling audio in qemu")
+                logger.info("Please install sound drivers in linux host")
+                self.audio_enabled = True
+            elif arg == 'kvm':
+                self.kvm_enabled = True
+            elif arg == 'kvm-vhost':
+                self.vhost_enabled = True
+            elif arg == 'slirp':
+                self.slirp_enabled = True
+            elif arg == 'snapshot':
+                self.snapshot = True
+            elif arg == 'publicvnc':
+                self.qemu_opt_script += ' -vnc :0'
+            elif arg.startswith('tcpserial='):
+                self.tcpserial_portnum = arg[len('tcpserial='):]
+            elif arg.startswith('biosdir='):
+                self.custombiosdir = arg[len('biosdir='):]
+            elif arg.startswith('biosfilename='):
+                self.qemu_opt_script += ' -bios %s' % arg[len('biosfilename='):]
+            elif arg.startswith('qemuparams='):
+                self.qemu_opt_script += ' %s' % arg[len('qemuparams='):]
+            elif arg.startswith('bootparams='):
+                self.kernel_cmdline_script += ' %s' % arg[len('bootparams='):]
+            elif os.path.exists(arg) or (re.search(':', arg) and re.search('/', arg)):
+                self.check_arg_path(os.path.abspath(arg))
+            elif re.search('-image-', arg):
+                # Lazy rootfs
+                self.rootfs = arg
+            else:
+                # At last, assume is it the MACHINE
+                if (not unknown_arg) or unknown_arg == arg:
+                    unknown_arg = arg
+                else:
+                    raise Exception("Can't handle two unknown args: %s %s" % (unknown_arg, arg))
+        # Check to make sure it is a valid machine
+        if unknown_arg:
+            if self.get('MACHINE') == unknown_arg:
+                return
+            if not self.get('DEPLOY_DIR_IMAGE'):
+                # Trying to get DEPLOY_DIR_IMAGE from env.
+                p = os.getenv('DEPLOY_DIR_IMAGE')
+                if p and self.is_deploy_dir_image(p):
+                    machine = os.path.basename(p)
+                    if unknown_arg == machine:
+                        self.set_machine_deploy_dir(machine, p)
+                        return
+                    else:
+                        logger.info('DEPLOY_DIR_IMAGE: %s' % p)
+                        self.set("DEPLOY_DIR_IMAGE", p)
+            self.check_arg_machine(unknown_arg)
 
-QEMUMIPS64_DEFAULT_KERNEL=vmlinux-qemumips64.bin
-QEMUMIPS64_DEFAULT_FSTYPE=ext4
+    def check_kvm(self):
+        """Check kvm and kvm-host"""
+        if not (self.kvm_enabled or self.vhost_enabled):
+            self.qemu_opt_script += ' %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU'))
+            return
 
-QEMUSH4_DEFAULT_KERNEL=vmlinux-qemumips.bin
-QEMUSH4_DEFAULT_FSTYPE=ext4
+        if not self.get('QB_CPU_KVM'):
+            raise Exception("QB_CPU_KVM is NULL, this board doesn't support kvm")
 
-QEMUPPC_DEFAULT_KERNEL=vmlinux-qemuppc.bin
-QEMUPPC_DEFAULT_FSTYPE=ext4
+        self.qemu_opt_script += ' %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU_KVM'))
+        yocto_kvm_wiki = "https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu"
+        yocto_paravirt_kvm_wiki = "https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM"
+        dev_kvm = '/dev/kvm'
+        dev_vhost = '/dev/vhost-net'
+        with open('/proc/cpuinfo', 'r') as f:
+            kvm_cap = re.search('vmx|svm', "".join(f.readlines()))
+        if not kvm_cap:
+            logger.error("You are trying to enable KVM on a cpu without VT support.")
+            logger.error("Remove kvm from the command-line, or refer:")
+            raise Exception(yocto_kvm_wiki)
 
-QEMUMICROBLAZE_DEFAULT_KERNEL=linux.bin.ub
-QEMUMICROBLAZE_DEFAULT_FSTYPE=cpio
+        if not os.path.exists(dev_kvm):
+            logger.error("Missing KVM device. Have you inserted kvm modules?")
+            logger.error("For further help see:")
+            raise Exception(yocto_kvm_wiki)
 
-QEMUZYNQ_DEFAULT_KERNEL=uImage
-QEMUZYNQ_DEFAULT_FSTYPE=cpio
+        if os.access(dev_kvm, os.W_OK|os.R_OK):
+            self.qemu_opt_script += ' -enable-kvm'
+        else:
+            logger.error("You have no read or write permission on /dev/kvm.")
+            logger.error("Please change the ownership of this file as described at:")
+            raise Exception(yocto_kvm_wiki)
 
-setup_path_vars() {
-    if [ -z "$OE_TMPDIR" ] ; then
-        PATHS_REQUIRED=true
-    elif [ "$1" = "1" -a -z "$DEPLOY_DIR_IMAGE" ] ; then
-        PATHS_REQUIRED=true
-    else
-        PATHS_REQUIRED=false
-    fi
+        if self.vhost_enabled:
+            if not os.path.exists(dev_vhost):
+                logger.error("Missing virtio net device. Have you inserted vhost-net module?")
+                logger.error("For further help see:")
+                raise Exception(yocto_paravirt_kvm_wiki)
 
-    if [ "$PATHS_REQUIRED" = "true" ]; then
-        # Try to get the variable values from bitbake
-        type -P bitbake &>/dev/null || {
-            echo "In order for this script to dynamically infer paths";
-            echo "to kernels or filesystem images, you either need";
-            echo "bitbake in your PATH or to source oe-init-build-env";
-            echo "before running this script" >&2;
-            exit 1; }
+        if not os.access(dev_kvm, os.W_OK|os.R_OK):
+                logger.error("You have no read or write permission on /dev/vhost-net.")
+                logger.error("Please change the ownership of this file as described at:")
+                raise Exception(yocto_kvm_wiki)
 
-        # We have bitbake in PATH, get the variable values from bitbake
-        BITBAKE_ENV_TMPFILE=`mktemp --tmpdir runqemu.XXXXXXXXXX`
-        if [ "$?" != "0" ] ; then
-            echo "Error: mktemp failed for bitbake environment output"
-            exit 1
-        fi
+    def check_fstype(self):
+        """Check and setup FSTYPE"""
+        if not self.fstype:
+            fstype = self.get('QB_DEFAULT_FSTYPE')
+            if fstype:
+                self.fstype = fstype
+            else:
+                raise Exception("FSTYPE is NULL!")
 
-        MACHINE=$MACHINE bitbake -e > $BITBAKE_ENV_TMPFILE
-        if [ -z "$OE_TMPDIR" ] ; then
-            OE_TMPDIR=`sed -n 's/^TMPDIR=\"\(.*\)\"/\1/p' $BITBAKE_ENV_TMPFILE`
-        fi
-        if [ -z "$DEPLOY_DIR_IMAGE" ] ; then
-            DEPLOY_DIR_IMAGE=`sed -n 's/^DEPLOY_DIR_IMAGE=\"\(.*\)\"/\1/p' $BITBAKE_ENV_TMPFILE`
-        fi
-        if [ -z "$OE_TMPDIR" ]; then
-            # Check for errors from bitbake that the user needs to know about
-            BITBAKE_OUTPUT=`cat $BITBAKE_ENV_TMPFILE | wc -l`
-            if [ "$BITBAKE_OUTPUT" -eq "0" ]; then
-                echo "Error: this script needs to be run from your build directory, or you need"
-                echo "to explicitly set OE_TMPDIR and DEPLOY_DIR_IMAGE in your environment"
-            else
-                echo "There was an error running bitbake to determine TMPDIR"
-                echo "Here is the output from 'bitbake -e':"
-                cat $BITBAKE_ENV_TMPFILE
-            fi
-            rm $BITBAKE_ENV_TMPFILE
-            exit 1
-        fi
-        rm $BITBAKE_ENV_TMPFILE
-    fi
-}
+    def check_rootfs(self):
+        """Check and set rootfs"""
 
-setup_sysroot() {
-    # Toolchain installs set up $OECORE_NATIVE_SYSROOT in their
-    # environment script. If that variable isn't set, we're
-    # either in an in-tree build scenario or the environment
-    # script wasn't source'd.
-    if [ -z "$OECORE_NATIVE_SYSROOT" ]; then
-        setup_path_vars
-        BUILD_ARCH=`uname -m`
-        BUILD_OS=`uname | tr '[A-Z]' '[a-z]'`
-        BUILD_SYS="$BUILD_ARCH-$BUILD_OS"
+        if self.fstype == 'nfs':
+            return
 
-        OECORE_NATIVE_SYSROOT=$OE_TMPDIR/sysroots/$BUILD_SYS
-    fi 
+        if self.rootfs and not os.path.exists(self.rootfs):
+            # Lazy rootfs
+            self.rootfs = "%s/%s-%s.%s" % (self.get('DEPLOY_DIR_IMAGE'),
+                    self.rootfs, self.get('MACHINE'),
+                    self.fstype)
+        elif not self.rootfs:
+            cmd_name = '%s/%s*.%s' % (self.get('DEPLOY_DIR_IMAGE'), self.get('IMAGE_NAME'), self.fstype)
+            cmd_link = '%s/%s*.%s' % (self.get('DEPLOY_DIR_IMAGE'), self.get('IMAGE_LINK_NAME'), self.fstype)
+            cmds = (cmd_name, cmd_link)
+            self.rootfs = get_first_file(cmds)
+            if not self.rootfs:
+                raise Exception("Failed to find rootfs: %s or %s" % cmds)
 
-    # Some recipes store the BIOS under $OE_TMPDIR/sysroots/$MACHINE,
-    # now defined as OECORE_MACHINE_SYSROOT. The latter is used when searching
-    # BIOS, VGA BIOS and keymaps.
-    if [ -z "$OECORE_MACHINE_SYSROOT" ]; then
-        OECORE_MACHINE_SYSROOT=$OE_TMPDIR/sysroots/$MACHINE
-    fi
-}
+        if not os.path.exists(self.rootfs):
+            raise Exception("Can't find rootfs: %s" % self.rootfs)
 
-# Locate a rootfs image to boot which matches our expected
-# machine and fstype. 
-findimage() {
-    where=$1
-    machine=$2
-    extension=$3
+    def check_kernel(self):
+        """Check and set kernel, dtb"""
+        # The vm image doesn't need a kernel
+        if self.fstype in self.vmtypes:
+            return
 
-    # Sort rootfs candidates by modification time - the most
-    # recently created one is the one we most likely want to boot.
-    filename=`ls -t1 $where/*-image*$machine.$extension 2>/dev/null | head -n1`
-    if [ "x$filename" != "x" ]; then
-        ROOTFS=$filename
-        return
-    fi
+        deploy_dir_image = self.get('DEPLOY_DIR_IMAGE')
+        if not self.kernel:
+            kernel_match_name = "%s/%s" % (deploy_dir_image, self.get('QB_DEFAULT_KERNEL'))
+            kernel_match_link = "%s/%s" % (deploy_dir_image, self.get('KERNEL_IMAGETYPE'))
+            kernel_startswith = "%s/%s*" % (deploy_dir_image, self.get('KERNEL_IMAGETYPE'))
+            cmds = (kernel_match_name, kernel_match_link, kernel_startswith)
+            self.kernel = get_first_file(cmds)
+            if not self.kernel:
+                raise Exception('KERNEL not found: %s, %s or %s' % cmds)
 
-    echo "Couldn't find a $machine rootfs image in $where."
-    exit 1
-}
+        if not os.path.exists(self.kernel):
+            raise Exception("KERNEL %s not found" % self.kernel)
 
-if [ -e "$ROOTFS" -a -z "$FSTYPE" ]; then
-    # Extract the filename extension
-    EXT=`echo $ROOTFS | awk -F . '{ print \$NF }'`
-    if [ "x$EXT" = "xext2" -o "x$EXT" = "xext3" -o \
-          "x$EXT" = "xjffs2" -o "x$EXT" = "xbtrfs" -o \
-          "x$EXT" = "xext4" ]; then
-        FSTYPE=$EXT
-    else
-        echo "Note: Unable to determine filesystem extension for $ROOTFS"
-        echo "We will use the default FSTYPE for $MACHINE"
-        # ...which is done further below...
-    fi
-fi
+        dtb = self.get('QB_DTB')
+        if dtb:
+            cmd_match = "%s/%s" % (deploy_dir_image, dtb)
+            cmd_startswith = "%s/%s*" % (deploy_dir_image, dtb)
+            cmd_wild = "%s/*.dtb" % deploy_dir_image
+            cmds = (cmd_match, cmd_startswith, cmd_wild)
+            self.dtb = get_first_file(cmds)
+            if not os.path.exists(self.dtb):
+                raise Exception('DTB not found: %s, %s or %s' % cmds)
 
-if [ -z "$KERNEL" -a "$IS_VM" = "false" ]; then \
-    setup_path_vars 1
-    eval kernel_file=\$${machine2}_DEFAULT_KERNEL
-    KERNEL=$DEPLOY_DIR_IMAGE/$kernel_file
+    def check_biosdir(self):
+        """Check custombiosdir"""
+        if not self.custombiosdir:
+            return
 
-    if [ -z "$KERNEL" ]; then
-        error "Unable to determine default kernel for MACHINE [$MACHINE]"
-    fi
-fi
-# KERNEL is now set for all cases
+        biosdir = ""
+        biosdir_native = "%s/%s" % (self.get('STAGING_DIR_NATIVE'), self.custombiosdir)
+        biosdir_host = "%s/%s" % (self.get('STAGING_DIR_HOST'), self.custombiosdir)
+        for i in (self.custombiosdir, biosdir_native, biosdir_host):
+            if os.path.isdir(i):
+                biosdir = i
+                break
 
-if [ -z "$FSTYPE" ]; then
-    eval FSTYPE=\$${machine2}_DEFAULT_FSTYPE
+        if biosdir:
+            logger.info("Assuming biosdir is: %s" % biosdir)
+            self.qemu_opt_script += ' -L %s' % biosdir
+        else:
+            logger.error("Custom BIOS directory not found. Tried: %s, %s, and %s" % (self.custombiosdir, biosdir_native, biosdir_host))
+            raise Exception("Invalid custombiosdir: %s" % self.custombiosdir)
 
-    if [ -z "$FSTYPE" ]; then
-        error "Unable to determine default fstype for MACHINE [$MACHINE]"
-    fi
-fi
+    def check_mem(self):
+        s = re.search('-m +([0-9]+)', self.qemu_opt_script)
+        if s:
+            self.set('QB_MEM', '-m %s' % s.group(1))
+        elif not self.get('QB_MEM'):
+            logger.info('QB_MEM is not set, use 512M by default')
+            self.set('QB_MEM', '-m 512')
 
-# FSTYPE is now set for all cases
+        self.kernel_cmdline_script += ' mem=%s' % self.get('QB_MEM').replace('-m','').strip() + 'M'
+        self.qemu_opt_script += ' %s' % self.get('QB_MEM')
 
-# Handle cases where a ROOTFS type is given instead of a filename, e.g.
-# core-image-sato
-if [ "$LAZY_ROOTFS" = "true" ]; then
-    setup_path_vars 1
-    echo "Assuming $ROOTFS really means $DEPLOY_DIR_IMAGE/$ROOTFS-$MACHINE.$FSTYPE"
-    if [ "$IS_VM" = "true" ]; then
-        VM=$DEPLOY_DIR_IMAGE/$ROOTFS-$MACHINE.$FSTYPE
-    else
-        ROOTFS=$DEPLOY_DIR_IMAGE/$ROOTFS-$MACHINE.$FSTYPE
-    fi
-fi
+    def check_tcpserial(self):
+        if self.tcpserial_portnum:
+            if self.get('QB_TCPSERIAL_OPT'):
+                self.qemu_opt_script += ' ' + self.get('QB_TCPSERIAL_OPT').replace('@PORT@', self.tcpserial_portnum)
+            else:
+                self.qemu_opt_script += ' -serial tcp:127.0.0.1:%s' % self.tcpserial_portnum
 
-if [ -z "$ROOTFS" ]; then
-    setup_path_vars 1
-    T=$DEPLOY_DIR_IMAGE
-    eval rootfs_list=\$${machine2}_DEFAULT_ROOTFS
-    findimage $T $MACHINE $FSTYPE
+    def check_and_set(self):
+        """Check configs sanity and set when needed"""
+        self.validate_paths()
+        check_tun()
+        # Check audio
+        if self.audio_enabled:
+            if not self.get('QB_AUDIO_DRV'):
+                raise Exception("QB_AUDIO_DRV is NULL, this board doesn't support audio")
+            if not self.get('QB_AUDIO_OPT'):
+                logger.warn('QB_AUDIO_OPT is NULL, you may need define it to make audio work')
+            else:
+                self.qemu_opt_script += ' %s' % self.get('QB_AUDIO_OPT')
+            os.putenv('QEMU_AUDIO_DRV', self.get('QB_AUDIO_DRV'))
+        else:
+            os.putenv('QEMU_AUDIO_DRV', 'none')
 
-    if [ -z "$ROOTFS" ]; then
-        error "Unable to determine default rootfs for MACHINE [$MACHINE]"
-    elif [ "$IS_VM" = "true" ]; then
-		VM=$ROOTFS
-    fi
-fi
-# ROOTFS is now set for all cases, now expand it to be an absolute path, it should exist at this point
+        self.check_kvm()
+        self.check_fstype()
+        self.check_rootfs()
+        self.check_kernel()
+        self.check_biosdir()
+        self.check_mem()
+        self.check_tcpserial()
 
-ROOTFS=`readlink -f $ROOTFS`
+    def read_qemuboot(self):
+        if not self.qemuboot:
+            if self.get('DEPLOY_DIR_IMAGE'):
+                deploy_dir_image = self.get('DEPLOY_DIR_IMAGE')
+            elif os.getenv('DEPLOY_DIR_IMAGE'):
+                deploy_dir_image = os.getenv('DEPLOY_DIR_IMAGE')
+            else:
+                logger.info("Can't find qemuboot conf file, DEPLOY_DIR_IMAGE is NULL!")
+                return
 
-echo ""
-echo "Continuing with the following parameters:"
-if [ "$IS_VM" = "false" ]; then
-    echo "KERNEL: [$KERNEL]"
-    echo "ROOTFS: [$ROOTFS]"
-else
-    echo "VM:   [$VM]"
-fi
-echo "FSTYPE: [$FSTYPE]"
+            if self.rootfs and not os.path.exists(self.rootfs):
+                # Lazy rootfs
+                machine = self.get('MACHINE')
+                if not machine:
+                    machine = os.path.basename(deploy_dir_image)
+                self.qemuboot = "%s/%s-%s.qemuboot.conf" % (deploy_dir_image,
+                        self.rootfs, machine)
+            else:
+                cmd = 'ls -t %s/*.qemuboot.conf' %  deploy_dir_image
+                logger.info('Running %s...' % cmd)
+                qbs = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
+                if qbs:
+                    self.qemuboot = qbs.split()[0]
+                    self.qbconfload = True
 
-setup_sysroot
-# OECORE_NATIVE_SYSROOT and OECORE_MACHINE_SYSROOT are now set for all cases
+        if not self.qemuboot:
+            # If we haven't found a .qemuboot.conf at this point it probably
+            # doesn't exist, continue without
+            return
 
-INTERNAL_SCRIPT="$0-internal"
-if [ ! -f "$INTERNAL_SCRIPT" -o ! -r "$INTERNAL_SCRIPT" ]; then
-INTERNAL_SCRIPT=`which runqemu-internal`
-fi
+        if not os.path.exists(self.qemuboot):
+            raise Exception("Failed to find <image>.qemuboot.conf!")
 
-# Specify directory for BIOS, VGA BIOS and keymaps
-if [ ! -z "$CUSTOMBIOSDIR" ]; then
-    if [ -d "$OECORE_NATIVE_SYSROOT/$CUSTOMBIOSDIR" ]; then
-        echo "Assuming biosdir is $OECORE_NATIVE_SYSROOT/$CUSTOMBIOSDIR"
-        SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -L $OECORE_NATIVE_SYSROOT/$CUSTOMBIOSDIR"
-    elif [ -d "$OECORE_MACHINE_SYSROOT/$CUSTOMBIOSDIR" ]; then
-        echo "Assuming biosdir is $OECORE_MACHINE_SYSROOT/$CUSTOMBIOSDIR"
-        SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -L $OECORE_MACHINE_SYSROOT/$CUSTOMBIOSDIR"
-    else
-        if [ ! -d "$CUSTOMBIOSDIR" ]; then
-            echo "Custom BIOS directory not found. Tried: $CUSTOMBIOSDIR"
-            echo "and $OECORE_NATIVE_SYSROOT/$CUSTOMBIOSDIR"
-            echo "and $OECORE_MACHINE_SYSROOT/$CUSTOMBIOSDIR"
-            exit 1;
-        fi
-        echo "Assuming biosdir is $CUSTOMBIOSDIR"
-        SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -L $CUSTOMBIOSDIR"
-    fi
-fi
+        logger.info('CONFFILE: %s' % self.qemuboot)
 
-. $INTERNAL_SCRIPT
-exit $?
+        cf = configparser.ConfigParser()
+        cf.read(self.qemuboot)
+        for k, v in cf.items('config_bsp'):
+            k_upper = k.upper()
+            self.set(k_upper, v)
+
+    def validate_paths(self):
+        """Ensure all relevant path variables are set"""
+        # When we're started with a *.qemuboot.conf arg assume that image
+        # artefacts are relative to that file, rather than in whatever
+        # directory DEPLOY_DIR_IMAGE in the conf file points to.
+        if self.qbconfload:
+            imgdir = os.path.dirname(self.qemuboot)
+            if imgdir != self.get('DEPLOY_DIR_IMAGE'):
+                logger.info('Setting DEPLOY_DIR_IMAGE to folder containing %s (%s)' % (self.qemuboot, imgdir))
+                self.set('DEPLOY_DIR_IMAGE', imgdir)
+
+        # If the STAGING_*_NATIVE directories from the config file don't exist
+        # and we're in a sourced OE build directory try to extract the paths
+        # from `bitbake -e`
+        havenative = os.path.exists(self.get('STAGING_DIR_NATIVE')) and \
+            os.path.exists(self.get('STAGING_BINDIR_NATIVE'))
+
+        if not havenative:
+            if not self.bitbake_e:
+                self.load_bitbake_env()
+
+            if self.bitbake_e:
+                native_vars = ['STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE']
+                for nv in native_vars:
+                    s = re.search('^%s="(.*)"' % nv, self.bitbake_e, re.M)
+                    if s and s.group(1) != self.get(nv):
+                        logger.info('Overriding conf file setting of %s to %s from Bitbake environment' % (nv, s.group(1)))
+                        self.set(nv, s.group(1))
+            else:
+                # when we're invoked from a running bitbake instance we won't
+                # be able to call `bitbake -e`, then try:
+                # - get OE_TMPDIR from environment and guess paths based on it
+                # - get OECORE_NATIVE_SYSROOT from environment (for sdk)
+                tmpdir = os.environ.get('OE_TMPDIR', None)
+                oecore_native_sysroot = os.environ.get('OECORE_NATIVE_SYSROOT', None)
+                if tmpdir:
+                    logger.info('Setting STAGING_DIR_NATIVE and STAGING_BINDIR_NATIVE relative to OE_TMPDIR (%s)' % tmpdir)
+                    hostos, _, _, _, machine = os.uname()
+                    buildsys = '%s-%s' % (machine, hostos.lower())
+                    staging_dir_native = '%s/sysroots/%s' % (tmpdir, buildsys)
+                    self.set('STAGING_DIR_NATIVE', staging_dir_native)
+                elif oecore_native_sysroot:
+                    logger.info('Setting STAGING_DIR_NATIVE to OECORE_NATIVE_SYSROOT (%s)' % oecore_native_sysroot)
+                    self.set('STAGING_DIR_NATIVE', oecore_native_sysroot)
+                if self.get('STAGING_DIR_NATIVE'):
+                    # we have to assume that STAGING_BINDIR_NATIVE is at usr/bin
+                    staging_bindir_native = '%s/usr/bin' % self.get('STAGING_DIR_NATIVE')
+                    logger.info('Setting STAGING_BINDIR_NATIVE to %s' % staging_bindir_native)
+                    self.set('STAGING_BINDIR_NATIVE', '%s/usr/bin' % self.get('STAGING_DIR_NATIVE'))
+
+    def print_config(self):
+        logger.info('Continuing with the following parameters:\n')
+        if not self.fstype in self.vmtypes:
+            print('KERNEL: [%s]' % self.kernel)
+            if self.dtb:
+                print('DTB: [%s]' % self.dtb)
+        print('MACHINE: [%s]' % self.get('MACHINE'))
+        print('FSTYPE: [%s]' % self.fstype)
+        if self.fstype  == 'nfs':
+            print('NFS_DIR: [%s]' % self.nfs_dir)
+        else:
+            print('ROOTFS: [%s]' % self.rootfs)
+        print('CONFFILE: [%s]' % self.qemuboot)
+        print('')
+
+    def setup_nfs(self):
+        if not self.nfs_server:
+            if self.slirp_enabled:
+                self.nfs_server = '10.0.2.2'
+            else:
+                self.nfs_server = '192.168.7.1'
+
+        nfs_instance = int(self.nfs_instance)
+
+        mountd_rpcport = 21111 + nfs_instance
+        nfsd_rpcport = 11111 + nfs_instance
+        nfsd_port = 3049 + 2 * nfs_instance
+        mountd_port = 3048 + 2 * nfs_instance
+        unfs_opts="nfsvers=3,port=%s,mountprog=%s,nfsprog=%s,udp,mountport=%s" % (nfsd_port, mountd_rpcport, nfsd_rpcport, mountd_port)
+        self.unfs_opts = unfs_opts
+
+        p = '%s/.runqemu-sdk/pseudo' % os.getenv('HOME')
+        os.putenv('PSEUDO_LOCALSTATEDIR', p)
+
+        # Extract .tar.bz2 or .tar.bz if no self.nfs_dir
+        if not self.nfs_dir:
+            src_prefix = '%s/%s' % (self.get('DEPLOY_DIR_IMAGE'), self.get('IMAGE_LINK_NAME'))
+            dest = "%s-nfsroot" % src_prefix
+            if os.path.exists('%s.pseudo_state' % dest):
+                logger.info('Use %s as NFS_DIR' % dest)
+                self.nfs_dir = dest
+            else:
+                src = ""
+                src1 = '%s.tar.bz2' % src_prefix
+                src2 = '%s.tar.gz' % src_prefix
+                if os.path.exists(src1):
+                    src = src1
+                elif os.path.exists(src2):
+                    src = src2
+                if not src:
+                    raise Exception("No NFS_DIR is set, and can't find %s or %s to extract" % (src1, src2))
+                logger.info('NFS_DIR not found, extracting %s to %s' % (src, dest))
+                cmd = 'runqemu-extract-sdk %s %s' % (src, dest)
+                logger.info('Running %s...' % cmd)
+                if subprocess.call(cmd, shell=True) != 0:
+                    raise Exception('Failed to run %s' % cmd)
+                self.clean_nfs_dir = True
+                self.nfs_dir = dest
+
+        # Start the userspace NFS server
+        cmd = 'runqemu-export-rootfs restart %s' % self.nfs_dir
+        logger.info('Running %s...' % cmd)
+        if subprocess.call(cmd, shell=True) != 0:
+            raise Exception('Failed to run %s' % cmd)
+
+        self.nfs_running = True
+
+
+    def setup_slirp(self):
+        if self.fstype == 'nfs':
+            self.setup_nfs()
+        self.kernel_cmdline_script += ' ip=dhcp'
+        self.set('NETWORK_CMD', self.get('QB_SLIRP_OPT'))
+
+    def setup_tap(self):
+        """Setup tap"""
+
+        # This file is created when runqemu-gen-tapdevs creates a bank of tap
+        # devices, indicating that the user should not bring up new ones using
+        # sudo.
+        nosudo_flag = '/etc/runqemu-nosudo'
+        self.qemuifup = shutil.which('runqemu-ifup')
+        self.qemuifdown = shutil.which('runqemu-ifdown')
+        ip = shutil.which('ip')
+        lockdir = "/tmp/qemu-tap-locks"
+
+        if not (self.qemuifup and self.qemuifdown and ip):
+            raise OEPathError("runqemu-ifup, runqemu-ifdown or ip not found")
+
+        if not os.path.exists(lockdir):
+            # There might be a race issue when multi runqemu processess are
+            # running at the same time.
+            try:
+                os.mkdir(lockdir)
+            except FileExistsError:
+                pass
+
+        cmd = '%s link' % ip
+        logger.info('Running %s...' % cmd)
+        ip_link = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
+        # Matches line like: 6: tap0: <foo>
+        possibles = re.findall('^[1-9]+: +(tap[0-9]+): <.*', ip_link, re.M)
+        tap = ""
+        for p in possibles:
+            lockfile = os.path.join(lockdir, p)
+            if os.path.exists('%s.skip' % lockfile):
+                logger.info('Found %s.skip, skipping %s' % (lockfile, p))
+                continue
+            self.lock = lockfile + '.lock'
+            if self.acquire_lock():
+                tap = p
+                logger.info("Using preconfigured tap device %s" % tap)
+                logger.info("If this is not intended, touch %s.skip to make runqemu skip %s." %(lockfile, tap))
+                break
+
+        if not tap:
+            if os.path.exists(nosudo_flag):
+                logger.error("Error: There are no available tap devices to use for networking,")
+                logger.error("and I see %s exists, so I am not going to try creating" % nosudo_flag)
+                raise Exception("a new one with sudo.")
+
+            gid = os.getgid()
+            uid = os.getuid()
+            logger.info("Setting up tap interface under sudo")
+            cmd = 'sudo %s %s %s %s' % (self.qemuifup, uid, gid, self.get('STAGING_DIR_NATIVE'))
+            tap = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8').rstrip('\n')
+            lockfile = os.path.join(lockdir, tap)
+            self.lock = lockfile + '.lock'
+            self.acquire_lock()
+            self.cleantap = True
+            logger.info('Created tap: %s' % tap)
+
+        if not tap:
+            logger.error("Failed to setup tap device. Run runqemu-gen-tapdevs to manually create.")
+            return 1
+        self.tap = tap
+        n0 = tap[3:]
+        n1 = int(n0) * 2 + 1
+        n2 = n1 + 1
+        self.nfs_instance = n0
+        if self.fstype == 'nfs':
+            self.setup_nfs()
+        self.kernel_cmdline_script += " ip=192.168.7.%s::192.168.7.%s:255.255.255.0" % (n2, n1)
+        mac = "52:54:00:12:34:%02x" % n2
+        qb_tap_opt = self.get('QB_TAP_OPT')
+        if qb_tap_opt:
+            qemu_tap_opt = qb_tap_opt.replace('@TAP@', tap).replace('@MAC@', mac)
+        else:
+            qemu_tap_opt = "-device virtio-net-pci,netdev=net0,mac=%s -netdev tap,id=net0,ifname=%s,script=no,downscript=no" % (mac, self.tap)
+
+        if self.vhost_enabled:
+            qemu_tap_opt += ',vhost=on'
+
+        self.set('NETWORK_CMD', qemu_tap_opt)
+
+    def setup_network(self):
+        cmd = "stty -g"
+        self.saved_stty = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
+        if self.slirp_enabled:
+            self.setup_slirp()
+        else:
+            self.setup_tap()
+
+        rootfs_format = self.fstype if self.fstype in ('vmdk', 'qcow2', 'vdi') else 'raw'
+
+        qb_rootfs_opt = self.get('QB_ROOTFS_OPT')
+        if qb_rootfs_opt:
+            self.rootfs_options = qb_rootfs_opt.replace('@ROOTFS@', self.rootfs)
+        else:
+            self.rootfs_options = '-drive file=%s,if=virtio,format=%s' % (self.rootfs, rootfs_format)
+
+        if self.fstype in ('cpio.gz', 'cpio'):
+            self.kernel_cmdline = 'root=/dev/ram0 rw debugshell'
+            self.rootfs_options = '-initrd %s' % self.rootfs
+        else:
+            if self.fstype in self.vmtypes:
+                if self.fstype == 'iso':
+                    vm_drive = '-cdrom %s' % self.rootfs
+                else:
+                    cmd1 = "grep -q 'root=/dev/sd' %s" % self.rootfs
+                    cmd2 = "grep -q 'root=/dev/hd' %s" % self.rootfs
+                    if subprocess.call(cmd1, shell=True) == 0:
+                        logger.info('Using scsi drive')
+                        vm_drive = '-drive if=none,id=hd,file=%s,format=%s -device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd' \
+                                       % (self.rootfs, rootfs_format)
+                    elif subprocess.call(cmd2, shell=True) == 0:
+                        logger.info('Using scsi drive')
+                        vm_drive = "%s,format=%s" % (self.rootfs, rootfs_format)
+                    else:
+                        logger.warn("Can't detect drive type %s" % self.rootfs)
+                        logger.warn('Tring to use virtio block drive')
+                        vm_drive = '-drive if=virtio,file=%s,format=%s' % (self.rootfs, rootfs_format)
+                self.rootfs_options = '%s -no-reboot' % vm_drive
+            self.kernel_cmdline = 'root=%s rw highres=off' % (self.get('QB_KERNEL_ROOT'))
+
+        if self.fstype == 'nfs':
+            self.rootfs_options = ''
+            k_root = '/dev/nfs nfsroot=%s:%s,%s' % (self.nfs_server, self.nfs_dir, self.unfs_opts)
+            self.kernel_cmdline = 'root=%s rw highres=off' % k_root
+
+        self.set('ROOTFS_OPTIONS', self.rootfs_options)
+
+    def guess_qb_system(self):
+        """attempt to determine the appropriate qemu-system binary"""
+        mach = self.get('MACHINE')
+        if not mach:
+            search = '.*(qemux86-64|qemux86|qemuarm64|qemuarm|qemumips64|qemumips64el|qemumipsel|qemumips|qemuppc).*'
+            if self.rootfs:
+                match = re.match(search, self.rootfs)
+                if match:
+                    mach = match.group(1)
+            elif self.kernel:
+                match = re.match(search, self.kernel)
+                if match:
+                    mach = match.group(1)
+
+        if not mach:
+            return None
+
+        if mach == 'qemuarm':
+            qbsys = 'arm'
+        elif mach == 'qemuarm64':
+            qbsys = 'aarch64'
+        elif mach == 'qemux86':
+            qbsys = 'i386'
+        elif mach == 'qemux86-64':
+            qbsys = 'x86_64'
+        elif mach == 'qemuppc':
+            qbsys = 'ppc'
+        elif mach == 'qemumips':
+            qbsys = 'mips'
+        elif mach == 'qemumips64':
+            qbsys = 'mips64'
+        elif mach == 'qemumipsel':
+            qbsys = 'mipsel'
+        elif mach == 'qemumips64el':
+            qbsys = 'mips64el'
+
+        return 'qemu-system-%s' % qbsys
+
+    def setup_final(self):
+        qemu_system = self.get('QB_SYSTEM_NAME')
+        if not qemu_system:
+            qemu_system = self.guess_qb_system()
+        if not qemu_system:
+            raise Exception("Failed to boot, QB_SYSTEM_NAME is NULL!")
+
+        qemu_bin = '%s/%s' % (self.get('STAGING_BINDIR_NATIVE'), qemu_system)
+        if not os.access(qemu_bin, os.X_OK):
+            raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin)
+
+        check_libgl(qemu_bin)
+
+        self.qemu_opt = "%s %s %s %s %s" % (qemu_bin, self.get('NETWORK_CMD'), self.qemu_opt_script, self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND'))
+
+        if self.snapshot:
+            self.qemu_opt += " -snapshot"
+
+        if self.serialstdio:
+            logger.info("Interrupt character is '^]'")
+            cmd = "stty intr ^]"
+            subprocess.call(cmd, shell=True)
+
+            first_serial = ""
+            if not re.search("-nographic", self.qemu_opt):
+                first_serial = "-serial mon:vc"
+            # We always want a ttyS1. Since qemu by default adds a serial
+            # port when nodefaults is not specified, it seems that all that
+            # would be needed is to make sure a "-serial" is there. However,
+            # it appears that when "-serial" is specified, it ignores the
+            # default serial port that is normally added.  So here we make
+            # sure to add two -serial if there are none. And only one if
+            # there is one -serial already.
+            serial_num = len(re.findall("-serial", self.qemu_opt))
+            if serial_num == 0:
+                self.qemu_opt += " %s %s" % (first_serial, self.get("QB_SERIAL_OPT"))
+            elif serial_num == 1:
+                self.qemu_opt += " %s" % self.get("QB_SERIAL_OPT")
+
+    def start_qemu(self):
+        if self.kernel:
+            kernel_opts = "-kernel %s -append '%s %s %s'" % (self.kernel, self.kernel_cmdline, self.kernel_cmdline_script, self.get('QB_KERNEL_CMDLINE_APPEND'))
+            if self.dtb:
+                kernel_opts += " -dtb %s" % self.dtb
+        else:
+            kernel_opts = ""
+        cmd = "%s %s" % (self.qemu_opt, kernel_opts)
+        logger.info('Running %s' % cmd)
+        if subprocess.call(cmd, shell=True) != 0:
+            raise Exception('Failed to run %s' % cmd)
+
+    def cleanup(self):
+        if self.cleantap:
+            cmd = 'sudo %s %s %s' % (self.qemuifdown, self.tap, self.get('STAGING_DIR_NATIVE'))
+            logger.info('Running %s' % cmd)
+            subprocess.call(cmd, shell=True)
+        if self.lock_descriptor:
+            logger.info("Releasing lockfile for tap device '%s'" % self.tap)
+            self.release_lock()
+
+        if self.nfs_running:
+            logger.info("Shutting down the userspace NFS server...")
+            cmd = "runqemu-export-rootfs stop %s" % self.nfs_dir
+            logger.info('Running %s' % cmd)
+            subprocess.call(cmd, shell=True)
+
+        if self.saved_stty:
+            cmd = "stty %s" % self.saved_stty
+            subprocess.call(cmd, shell=True)
+
+        if self.clean_nfs_dir:
+            logger.info('Removing %s' % self.nfs_dir)
+            shutil.rmtree(self.nfs_dir)
+            shutil.rmtree('%s.pseudo_state' % self.nfs_dir)
+
+    def load_bitbake_env(self, mach=None):
+        if self.bitbake_e:
+            return
+
+        bitbake = shutil.which('bitbake')
+        if not bitbake:
+            return
+
+        if not mach:
+            mach = self.get('MACHINE')
+
+        if mach:
+            cmd = 'MACHINE=%s bitbake -e' % mach
+        else:
+            cmd = 'bitbake -e'
+
+        logger.info('Running %s...' % cmd)
+        try:
+            self.bitbake_e = subprocess.check_output(cmd, shell=True).decode('utf-8')
+        except subprocess.CalledProcessError as err:
+            self.bitbake_e = ''
+            logger.warn("Couldn't run 'bitbake -e' to gather environment information:\n%s" % err.output.decode('utf-8'))
+
+def main():
+    if len(sys.argv) == 1 or "help" in sys.argv:
+        print_usage()
+        return 0
+    config = BaseConfig()
+    try:
+        config.check_args()
+    except Exception as esc:
+        logger.error(esc)
+        logger.error("Try 'runqemu help' on how to use it")
+        return 1
+    config.read_qemuboot()
+    config.check_and_set()
+    config.print_config()
+    try:
+        config.setup_network()
+        config.setup_final()
+        config.start_qemu()
+    finally:
+        config.cleanup()
+    return 0
+
+if __name__ == "__main__":
+    try:
+        ret = main()
+    except OEPathError as err:
+        ret = 1
+        logger.error(err.message)
+    except Exception as esc:
+        ret = 1
+        import traceback
+        traceback.print_exc()
+    sys.exit(ret)
diff --git a/import-layers/yocto-poky/scripts/runqemu-gen-tapdevs b/import-layers/yocto-poky/scripts/runqemu-gen-tapdevs
index 624deac..bfb60f4 100755
--- a/import-layers/yocto-poky/scripts/runqemu-gen-tapdevs
+++ b/import-layers/yocto-poky/scripts/runqemu-gen-tapdevs
@@ -69,32 +69,38 @@
        exit 1
 fi
 
-# Ensure we start with a clean slate
-for tap in `$IFCONFIG link | grep tap | awk '{ print \$2 }' | sed s/://`; do
-	echo "Note: Destroying pre-existing tap interface $tap..."
-	$TUNCTL -d $tap
-done
-
-echo "Creating $COUNT tap devices for UID: $TUID GID: $GID..."
-for ((index=0; index < $COUNT; index++)); do
-	echo "Creating tap$index"
-	ifup=`$RUNQEMU_IFUP $TUID $GID $SYSROOT 2>&1`
-	if [ $? -ne 0 ]; then
-		echo "Error running tunctl: $ifup"
-		exit 1
-	fi
-done
+if [ $COUNT -ge 0 ]; then
+	# Ensure we start with a clean slate
+	for tap in `$IFCONFIG link | grep tap | awk '{ print \$2 }' | sed s/://`; do
+		echo "Note: Destroying pre-existing tap interface $tap..."
+		$TUNCTL -d $tap
+	done
+	rm -f /etc/runqemu-nosudo
+else
+	echo "Error: Incorrect count: $COUNT"
+	exit 1
+fi
 
 if [ $COUNT -gt 0 ]; then
+	echo "Creating $COUNT tap devices for UID: $TUID GID: $GID..."
+	for ((index=0; index < $COUNT; index++)); do
+		echo "Creating tap$index"
+		ifup=`$RUNQEMU_IFUP $TUID $GID $SYSROOT 2>&1`
+		if [ $? -ne 0 ]; then
+			echo "Error running tunctl: $ifup"
+			exit 1
+		fi
+	done
+
 	echo "Note: For systems running NetworkManager, it's recommended"
 	echo "Note: that the tap devices be set as unmanaged in the"
 	echo "Note: NetworkManager.conf file. Add the following lines to"
 	echo "Note: /etc/NetworkManager/NetworkManager.conf"
 	echo "[keyfile]"
 	echo "unmanaged-devices=interface-name:tap*"
-fi
 
-# The runqemu script will check for this file, and if it exists,
-# will use the existing bank of tap devices without creating
-# additional ones via sudo.
-touch /etc/runqemu-nosudo
+	# The runqemu script will check for this file, and if it exists,
+	# will use the existing bank of tap devices without creating
+	# additional ones via sudo.
+	touch /etc/runqemu-nosudo
+fi
diff --git a/import-layers/yocto-poky/scripts/runqemu-internal b/import-layers/yocto-poky/scripts/runqemu-internal
deleted file mode 100755
index ac1c703..0000000
--- a/import-layers/yocto-poky/scripts/runqemu-internal
+++ /dev/null
@@ -1,717 +0,0 @@
-#!/bin/bash -x
-
-# Handle running OE images under qemu
-#
-# Copyright (C) 2006-2011 Linux Foundation
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-# Call setting:
-#   QEMU_MEMORY (optional) - set the amount of memory in the emualted system.
-#   SERIAL_LOGFILE (optional) - log the serial port output to a file
-#
-# Image options:
-#   MACHINE - the machine to run
-#   FSTYPE - the image type to run
-#   KERNEL - the kernel image file to use
-#   ROOTFS - the disk image file to use
-#
-
-mem_size=-1
-
-#Get rid of <> and get the contents of extra qemu running params
-SCRIPT_QEMU_EXTRA_OPT=`echo $SCRIPT_QEMU_EXTRA_OPT | sed -e 's/<//' -e 's/>//'`
-#if user set qemu memory, eg: -m 256 in qemu extra params, we need to do some 
-# validation check
-mem_set=`expr "$SCRIPT_QEMU_EXTRA_OPT" : '.*\(-m[[:space:]] *[0-9]*\)'`
-if [ ! -z "$mem_set" ] ; then
-#Get memory setting size from user input
-  mem_size=`echo $mem_set | sed 's/-m[[:space:]] *//'`
-fi
-
-# This file is created when runqemu-gen-tapdevs creates a bank of tap
-# devices, indicating that the user should not bring up new ones using
-# sudo.
-NOSUDO_FLAG="/etc/runqemu-nosudo"
-
-QEMUIFUP=`which runqemu-ifup 2> /dev/null`
-QEMUIFDOWN=`which runqemu-ifdown 2> /dev/null`
-if [ -z "$QEMUIFUP" -o ! -x "$QEMUIFUP" ]; then
-       echo "runqemu-ifup cannot be found or executed"
-       exit 1
-fi
-if [ -z "$QEMUIFDOWN" -o ! -x "$QEMUIFDOWN" ]; then
-       echo "runqemu-ifdown cannot be found or executed"
-       exit 1
-fi
-
-NFSRUNNING="false"
-
-#capture original stty values
-ORIG_STTY=$(stty -g)
-
-if [ "$SLIRP_ENABLED" = "yes" ]; then
-    KERNEL_NETWORK_CMD="ip=dhcp"
-    QEMU_TAP_CMD=""
-    QEMU_UI_OPTIONS="-show-cursor -usb -usbdevice tablet"
-    QEMU_NETWORK_CMD=""
-    DROOT="/dev/vda"
-    ROOTFS_OPTIONS="-drive file=$ROOTFS,if=virtio,format=raw"
-else
-        acquire_lock() {
-            lockfile=$1
-            if [ -z "$lockfile" ]; then
-                echo "Error: missing lockfile arg passed to acquire_lock()"
-                return 1
-            fi
-
-            touch $lockfile.lock 2>/dev/null
-            if [ $? -ne 0 ]; then
-                echo "Acquiring lockfile for $lockfile.lock failed"
-                return 1
-            fi
-            exec 8>$lockfile.lock
-            flock -n -x 8
-            if [ $? -ne 0 ]; then
-                exec 8>&-
-                return 1
-            fi
-
-            return 0
-        }
-
-        release_lock() {
-            lockfile=$1
-            if [ -z "$lockfile" ]; then
-                echo "Error: missing lockfile arg passed to release_lock()"
-                return 1
-            fi
-
-            rm -f $lockfile.lock
-            exec  8>&-
-        }
-
-        LOCKDIR="/tmp/qemu-tap-locks"
-        if [ ! -d "$LOCKDIR" ]; then
-            mkdir $LOCKDIR
-            chmod 777 $LOCKDIR
-        fi
-
-        IFCONFIG=`which ip 2> /dev/null`
-        if [ -z "$IFCONFIG" ]; then
-            IFCONFIG=/sbin/ip
-        fi
-        if [ ! -x "$IFCONFIG" ]; then
-               echo "$IFCONFIG cannot be executed"
-               exit 1
-        fi
-
-        POSSIBLE=`$IFCONFIG link | grep 'tap' | awk '{print $2}' | sed -e 's/://' -e 's/@.*//'`
-        TAP=""
-        LOCKFILE=""
-        USE_PRECONF_TAP="no"
-        for tap in $POSSIBLE; do
-            LOCKFILE="$LOCKDIR/$tap"
-            if [ -e "$LOCKFILE.skip" ]; then
-                echo "Found $LOCKFILE.skip, skipping $tap"
-                continue
-            fi
-            echo "Acquiring lockfile for $tap..."
-            acquire_lock $LOCKFILE
-            if [ $? -eq 0 ]; then
-                TAP=$tap
-                USE_PRECONF_TAP="yes"
-                break
-            fi
-        done
-
-        if [ "$TAP" = "" ]; then
-            if [ -e "$NOSUDO_FLAG" ]; then
-                echo "Error: There are no available tap devices to use for networking,"
-                echo "and I see $NOSUDO_FLAG exists, so I am not going to try creating"
-                echo "a new one with sudo."
-                exit 1
-            fi
-
-            GROUPID=`id -g`
-            USERID=`id -u`
-            echo "Setting up tap interface under sudo"
-            # Redirect stderr since we could see a LD_PRELOAD warning here if pseudo is loaded
-            # but inactive. This looks scary but is harmless
-            tap=`sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT 2> /dev/null`
-            if [ $? -ne 0 ]; then
-                # Re-run standalone to see verbose errors
-                sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT
-                return 1
-            fi
-            LOCKFILE="$LOCKDIR/$tap"
-            echo "Acquiring lockfile for $tap..."
-            acquire_lock $LOCKFILE
-            if [ $? -eq 0 ]; then
-                TAP=$tap
-            fi 
-        else
-            echo "Using preconfigured tap device '$TAP'"
-            echo "If this is not intended, touch $LOCKFILE.skip to make runqemu skip $TAP."
-        fi
-
-        cleanup() {
-            if [ ! -e "$NOSUDO_FLAG" -a "$USE_PRECONF_TAP" = "no" ]; then
-                # Redirect stderr since we could see a LD_PRELOAD warning here if pseudo is loaded
-                # but inactive. This looks scary but is harmless
-                sudo $QEMUIFDOWN $TAP $OECORE_NATIVE_SYSROOT 2> /dev/null
-            fi
-            echo "Releasing lockfile of preconfigured tap device '$TAP'"
-            release_lock $LOCKFILE
-
-            if [ "$NFSRUNNING" = "true" ]; then
-                echo "Shutting down the userspace NFS server..."
-                echo "runqemu-export-rootfs stop $ROOTFS"
-                runqemu-export-rootfs stop $ROOTFS
-            fi
-            # If QEMU crashes or somehow tty properties are not restored
-            # after qemu exits, we need to run stty sane
-            #stty sane
-
-            #instead of using stty sane we set the original stty values
-            stty ${ORIG_STTY}
-
-        }
-
-
-        n0=$(echo $TAP | sed 's/tap//')
-
-        case $n0 in
-            ''|*[!0-9]*)
-                echo "Error Couldn't turn $TAP into an interface number?"
-                exit 1
-                ;;
-        esac
-
-        n1=$(($n0 * 2 + 1))
-        n2=$(($n1 + 1))
-
-        KERNEL_NETWORK_CMD="ip=192.168.7.$n2::192.168.7.$n1:255.255.255.0"
-        QEMU_TAP_CMD="-net tap,vlan=0,ifname=$TAP,script=no,downscript=no"
-        if [ "$VHOST_ACTIVE" = "yes" ]; then
-            QEMU_NETWORK_CMD="-net nic,model=virtio $QEMU_TAP_CMD,vhost=on"
-        else
-            QEMU_NETWORK_CMD="-net nic,model=virtio $QEMU_TAP_CMD"
-        fi
-        DROOT="/dev/vda"
-        ROOTFS_OPTIONS="-drive file=$ROOTFS,if=virtio,format=raw"
-
-        KERNCMDLINE="mem=$QEMU_MEMORY"
-        QEMU_UI_OPTIONS="-show-cursor -usb -usbdevice tablet"
-
-        NFS_INSTANCE=`echo $TAP | sed 's/tap//'`
-        export NFS_INSTANCE
-
-        SERIALOPTS=""
-        if [ "x$SERIAL_LOGFILE" != "x" ]; then
-            SERIALOPTS="-serial file:$SERIAL_LOGFILE"
-        fi
-fi
-
-if [ ! -f "$KERNEL" -a "$IS_VM" = "false" ]; then
-    echo "Error: Kernel image file $KERNEL doesn't exist"
-    cleanup
-    return 1
-fi
-
-if [ "$FSTYPE" != "nfs" -a "$IS_VM" = "false" -a ! -f "$ROOTFS" ]; then
-    echo "Error: Image file $ROOTFS doesn't exist"
-    cleanup
-    return 1
-fi
-
-if [ "$NFS_SERVER" = "" ]; then
-    NFS_SERVER="192.168.7.1"
-    if [ "$SLIRP_ENABLED" = "yes" ]; then
-	NFS_SERVER="10.0.2.2"
-    fi
-fi
-
-if [ "$FSTYPE" = "nfs" ]; then
-    NFS_DIR=`echo $ROOTFS | sed 's/^[^:]*:\(.*\)/\1/'`
-    if [ "$NFS_INSTANCE" = "" ] ; then
-	NFS_INSTANCE=0
-    fi
-    MOUNTD_RPCPORT=$[ 21111 + $NFS_INSTANCE ]
-    NFSD_RPCPORT=$[ 11111 + $NFS_INSTANCE ]
-    NFSD_PORT=$[ 3049 + 2 * $NFS_INSTANCE ]
-    MOUNTD_PORT=$[ 3048 + 2 * $NFS_INSTANCE ]
-    UNFS_OPTS="nfsvers=3,port=$NFSD_PORT,mountprog=$MOUNTD_RPCPORT,nfsprog=$NFSD_RPCPORT,udp,mountport=$MOUNTD_PORT"
-
-    PSEUDO_LOCALSTATEDIR=~/.runqemu-sdk/pseudo
-    export PSEUDO_LOCALSTATEDIR
-
-    # Start the userspace NFS server
-    echo "runqemu-export-rootfs restart $ROOTFS"
-    runqemu-export-rootfs restart $ROOTFS
-    if [ $? != 0 ]; then
-        return 1
-    fi
-    NFSRUNNING="true"
-fi
-
-
-set_mem_size() {
-    if [ ! -z "$mem_set" ] ; then
-        #Get memory setting size from user input
-        mem_size=`echo $mem_set | sed 's/-m[[:space:]] *//'`
-    else
-        mem_size=$1
-    fi
-    # QEMU_MEMORY has 'M' appended to mem_size
-    QEMU_MEMORY="$mem_size"M
-
-}
-
-config_qemuarm() {
-    set_mem_size 128
-    QEMU=qemu-system-arm
-    MACHINE_SUBTYPE=versatilepb
-    export QEMU_AUDIO_DRV="none"
-    QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS"
-    if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
-        KERNCMDLINE="root=$DROOT rw console=ttyAMA0,115200 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY highres=off"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} $ROOTFS_OPTIONS -no-reboot $QEMU_UI_OPTIONS"
-    fi
-    if [ "$FSTYPE" = "nfs" ]; then
-        if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
-            echo "Error: NFS mount point $ROOTFS doesn't exist"
-            cleanup
-            return 1
-        fi
-        KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw console=ttyAMA0,115200 $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} --no-reboot $QEMU_UI_OPTIONS"
-    fi
-    if [ "$MACHINE" = "qemuarmv6" ]; then
-        QEMUOPTIONS="$QEMUOPTIONS -cpu arm1136"
-    fi
-    if [ "$MACHINE" = "qemuarmv7" ]; then
-        QEMUOPTIONS="$QEMUOPTIONS -cpu cortex-a8"
-    fi
-}
-
-config_qemuarm64() {
-    set_mem_size 512
-    QEMU=qemu-system-aarch64
-
-    QEMU_NETWORK_CMD="-netdev tap,id=net0,ifname=$TAP,script=no,downscript=no -device virtio-net-device,netdev=net0 "
-    DROOT="/dev/vda"
-    ROOTFS_OPTIONS="-drive id=disk0,file=$ROOTFS,if=none,format=raw -device virtio-blk-device,drive=disk0"
-
-    export QEMU_AUDIO_DRV="none"
-    if [ "x$SERIALSTDIO" = "x" ] ; then
-        QEMU_UI_OPTIONS="-nographic"
-    else
-        QEMU_UI_OPTIONS=""
-    fi
-    if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
-        KERNCMDLINE="root=$DROOT rw console=ttyAMA0,38400 mem=$QEMU_MEMORY highres=off $KERNEL_NETWORK_CMD"
-        # qemu-system-aarch64 only support '-machine virt -cpu cortex-a57' for now
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -machine virt -cpu cortex-a57 $ROOTFS_OPTIONS $QEMU_UI_OPTIONS"
-    fi
-    if [ "$FSTYPE" = "nfs" ]; then
-        if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
-            echo "Error: NFS mount point $ROOTFS doesn't exist"
-            cleanup
-            return 1
-        fi
-        KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw console=ttyAMA0,38400 mem=$QEMU_MEMORY highres=off $KERNEL_NETWORK_CMD"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -machine virt -cpu cortex-a57 $QEMU_UI_OPTIONS"
-    fi
-}
-
-config_qemux86() {
-    set_mem_size 256
-    QEMU=qemu-system-i386
-    if [ "$KVM_ACTIVE" = "yes" ]; then
-        CPU_SUBTYPE=kvm32
-    else
-        CPU_SUBTYPE=qemu32
-    fi
-    if [ ! -z "$vga_option" ]; then
-        QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS"
-    else
-        QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware"
-    fi
-    if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
-        KERNCMDLINE="vga=0 uvesafb.mode_option=640x480-32 root=$DROOT rw mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE $ROOTFS_OPTIONS $QEMU_UI_OPTIONS"
-    fi
-    if [ "${FSTYPE:0:4}" = "cpio" ]; then
-        KERNCMDLINE="vga=0 uvesafb.mode_option=640x480-32 root=/dev/ram0 rw mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE -initrd $ROOTFS $QEMU_UI_OPTIONS"
-    fi
-
-    if [ "$FSTYPE" = "nfs" ]; then
-        if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
-            echo "Error: NFS mount point $ROOTFS doesn't exist."
-            cleanup
-            return 1
-        fi
-        KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
-    fi
-    if [ "$IS_VM" = "true" ]; then
-        QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
-    fi
-    # Currently oprofile's event based interrupt mode doesn't work(Bug #828) in
-    # qemux86 and qemux86-64. We can use timer interrupt mode for now.
-    KERNCMDLINE="$KERNCMDLINE oprofile.timer=1"
-}
-
-config_qemux86_64() {
-    set_mem_size 256
-    QEMU=qemu-system-x86_64
-    if [ "$KVM_ACTIVE" = "yes" ]; then
-        CPU_SUBTYPE=kvm64
-    else
-        CPU_SUBTYPE=core2duo
-    fi
-    if [ ! -z "$vga_option" ]; then
-        QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS"
-    else
-        QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware"
-    fi
-    if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
-        KERNCMDLINE="vga=0 uvesafb.mode_option=640x480-32 root=$DROOT rw mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE $ROOTFS_OPTIONS $QEMU_UI_OPTIONS"
-    fi
-    if [ "$FSTYPE" = "nfs" ]; then
-        if [ "x$ROOTFS" = "x" ]; then
-            ROOTFS=/srv/nfs/qemux86-64
-        fi
-        if [ ! -d "$ROOTFS" ]; then
-            echo "Error: NFS mount point $ROOTFS doesn't exist."
-            cleanup
-            return 1
-        fi
-        KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE $QEMU_UI_OPTIONS"
-    fi
-    if [ "$IS_VM" = "true" ]; then
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE $QEMU_UI_OPTIONS"
-    fi
-    # Currently oprofile's event based interrupt mode doesn't work(Bug #828) in
-    # qemux86 and qemux86-64. We can use timer interrupt mode for now.
-    KERNCMDLINE="$KERNCMDLINE oprofile.timer=1"
-}
-
-config_qemumips() {
-    set_mem_size 256
-    case "$MACHINE" in
-       qemumips)   QEMU=qemu-system-mips ;;
-       qemumipsel) QEMU=qemu-system-mipsel ;;
-       qemumips64) QEMU=qemu-system-mips64 ;;
-    esac
-    MACHINE_SUBTYPE=malta
-    QEMU_UI_OPTIONS="-vga cirrus $QEMU_UI_OPTIONS"
-    if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
-        #KERNCMDLINE="root=/dev/hda console=ttyS0 console=tty0 $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        KERNCMDLINE="root=$DROOT rw console=ttyS0 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE $ROOTFS_OPTIONS -no-reboot $QEMU_UI_OPTIONS"
-    fi
-    if [ "$FSTYPE" = "nfs" ]; then
-        if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
-            echo "Error: NFS mount point $ROOTFS doesn't exist"
-            cleanup
-            return 1
-        fi
-        KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS"
-    fi
-}
-
-config_qemuppc() {
-    set_mem_size 256
-    QEMU=qemu-system-ppc
-    MACHINE_SUBTYPE=mac99
-    CPU_SUBTYPE=G4
-    QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS"
-    if [ "$SLIRP_ENABLED" = "yes" ]; then
-        QEMU_NETWORK_CMD=""
-    else
-        QEMU_NETWORK_CMD="-net nic,model=pcnet $QEMU_TAP_CMD"
-    fi
-    if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
-        KERNCMDLINE="root=$DROOT rw console=ttyS0 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE -M $MACHINE_SUBTYPE $ROOTFS_OPTIONS -no-reboot $QEMU_UI_OPTIONS"
-    fi
-    if [ "$FSTYPE" = "nfs" ]; then
-        if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
-            echo "Error: NFS mount point $ROOTFS doesn't exist"
-            cleanup
-            return 1
-        fi
-        KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS"
-    fi
-}
-
-config_qemush4() {
-    set_mem_size 1024
-    QEMU=qemu-system-sh4
-    MACHINE_SUBTYPE=r2d
-    QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS"
-    if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" -o "$FSTYPE" = "wic" ]; then
-        #KERNCMDLINE="root=/dev/hda console=ttyS0 console=tty0 $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        KERNCMDLINE="root=/dev/hda rw console=ttySC1 noiotrap earlyprintk=sh-sci.1 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -hda $ROOTFS -no-reboot $QEMU_UI_OPTIONS -monitor null -serial vc -serial stdio"
-        SERIALSTDIO="1"
-    fi
-    if [ "$FSTYPE" = "nfs" ]; then
-        if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
-            echo "Error: NFS mount point $ROOTFS doesn't exist"
-            cleanup
-            return 1
-        fi
-        KERNCMDLINE="root=/dev/nfs console=ttySC1 noiotrap earlyprintk=sh-sci.1 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS -monitor null -serial vc -serial stdio"
-        SERIALSTDIO="1"
-    fi
-}
-
-config_qemuzynq() {
-    set_mem_size 1024
-    QEMU=qemu-system-arm
-    QEMU_SYSTEM_OPTIONS="$QEMU_NETWORK_CMD -M xilinx-zynq-a9 -serial null -serial mon:stdio -dtb $KERNEL-$MACHINE.dtb"
-    # zynq serial ports are named 'ttyPS0' and 'ttyPS1', fixup the default values
-    SCRIPT_KERNEL_OPT=$(echo "$SCRIPT_KERNEL_OPT" | sed 's/console=ttyS/console=ttyPS/g')
-    if [ "${FSTYPE:0:3}" = "ext" -o "${FSTYPE:0:4}" = "cpio" ]; then
-        KERNCMDLINE="earlyprintk root=/dev/ram rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_SYSTEM_OPTIONS -initrd $ROOTFS"
-    fi
-}
-
-config_qemumicroblaze() {
-    set_mem_size 256
-    QEMU=qemu-system-microblazeel
-    QEMU_SYSTEM_OPTIONS="$QEMU_NETWORK_CMD -M petalogix-ml605 -serial mon:stdio"
-    if [ "${FSTYPE:0:3}" = "ext" -o "${FSTYPE:0:4}" = "cpio" ]; then
-        KERNCMDLINE="earlyprintk root=/dev/ram rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
-        QEMUOPTIONS="$QEMU_SYSTEM_OPTIONS -initrd $ROOTFS"
-    fi
-}
-
-case "$MACHINE" in
-    "qemuarm" | "qemuarmv6" | "qemuarmv7")
-        config_qemuarm
-        ;;
-    "qemuarm64")
-        config_qemuarm64
-        ;;
-    "qemux86")
-        config_qemux86
-        ;;
-    "qemux86-64")
-        config_qemux86_64
-        ;;
-    "qemumips" | "qemumipsel" | "qemumips64")
-        config_qemumips
-        ;;
-    "qemuppc")
-        config_qemuppc
-        ;;
-    "qemush4")
-        config_qemush4
-        ;;
-    "qemuzynq")
-        config_qemuzynq
-        ;;
-    "qemumicroblaze")
-        config_qemumicroblaze
-        ;;
-    *)
-        echo "Error: Unsupported machine type $MACHINE"
-        return 1
-    ;;
-esac
-
-# We need to specify -m <mem_size> to overcome a bug in qemu 0.14.0
-# https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/584480
-if [ -z "$mem_set" ] ; then
-  SCRIPT_QEMU_EXTRA_OPT="$SCRIPT_QEMU_EXTRA_OPT -m $mem_size"
-fi
-
-if [ "${FSTYPE:0:3}" = "ext" ]; then
-    KERNCMDLINE="$KERNCMDLINE rootfstype=$FSTYPE"
-fi
-
-if [ "$FSTYPE" = "cpio.gz" ]; then
-    QEMUOPTIONS="-initrd $ROOTFS -nographic"
-    KERNCMDLINE="root=/dev/ram0 console=ttyS0 debugshell"
-fi
-
-if [ "$FSTYPE" = "iso" ]; then
-    QEMUOPTIONS="$QEMU_NETWORK_CMD -cdrom $ROOTFS $QEMU_UI_OPTIONS"
-fi
-
-if [ "x$QEMUOPTIONS" = "x" ]; then
-    echo "Error: Unable to support this combination of options"
-    cleanup
-    return 1
-fi
-
-if [ "$TCPSERIAL_PORTNUM" != "" ]; then
-    if [ "$MACHINE" = "qemuarm64" ]; then
-        SCRIPT_QEMU_EXTRA_OPT="$SCRIPT_QEMU_EXTRA_OPT -device virtio-serial-device -chardev socket,id=virtcon,port=$TCPSERIAL_PORTNUM,host=127.0.0.1 -device virtconsole,chardev=virtcon"
-    else
-        SCRIPT_QEMU_EXTRA_OPT="$SCRIPT_QEMU_EXTRA_OPT -serial tcp:127.0.0.1:$TCPSERIAL_PORTNUM"
-    fi
-fi
-
-PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$PATH
-
-QEMUBIN=`which $QEMU 2> /dev/null`
-if [ ! -x "$QEMUBIN" ]; then
-    echo "Error: No QEMU binary '$QEMU' could be found."
-    cleanup
-    return 1
-fi
-
-NEED_GL=`ldd $QEMUBIN/$QEMU 2>&1 | grep libGLU`
-# We can't run without a libGL.so
-if [ "$NEED_GL" != "" ]; then
-    libgl='no'
-
-    [ -e /usr/lib/libGL.so -a -e /usr/lib/libGLU.so ] && libgl='yes'
-    [ -e /usr/lib64/libGL.so -a -e /usr/lib64/libGLU.so ] && libgl='yes'
-    [ -e /usr/lib/*-linux-gnu/libGL.so -a -e /usr/lib/*-linux-gnu/libGLU.so ] && libgl='yes'
-
-    if [ "$libgl" != 'yes' ]; then
-        echo "You need libGL.so and libGLU.so to exist in your library path to run the QEMU emulator.
-        Ubuntu package names are: libgl1-mesa-dev and libglu1-mesa-dev.
-        Fedora package names are: mesa-libGL-devel mesa-libGLU-devel."
-        return 1;
-    fi
-fi
-
-do_quit() {
-    cleanup
-    return 1
-}
-
-trap do_quit INT TERM QUIT
-
-# qemu got segfault if linked with nVidia's libgl
-GL_LD_PRELOAD=$LD_PRELOAD
-
-if ldd $QEMUBIN | grep -i nvidia &> /dev/null
-then
-cat << EOM
-WARNING: nVidia proprietary OpenGL libraries detected.
-nVidia's OpenGL libraries are known to have compatibility issues with qemu,
-resulting in a segfault. Please uninstall these drivers or ensure the mesa libGL
-libraries precede nvidia's via LD_PRELOAD(Already do it on Ubuntu 10).
-EOM
-
-# Automatically use Ubuntu system's mesa libGL, other distro can add its own path
-if grep -i ubuntu /etc/lsb-release &> /dev/null
-then
-    # precede nvidia's driver on Ubuntu 10
-    UBUNTU_MAIN_VERSION=`cat /etc/lsb-release |grep DISTRIB_RELEASE |cut -d=  -f 2| cut -d. -f 1`
-    if [ "$UBUNTU_MAIN_VERSION" = "10" ];
-    then
-        GL_PATH=""
-        if test -e /usr/lib/libGL.so
-        then 
-            GL_PATH="/usr/lib/libGL.so"
-        elif test -e /usr/lib/x86_64-linux-gnu/libGL.so
-        then
-            GL_PATH="/usr/lib/x86_64-linux-gnu/libGL.so"
-        fi
-
-        echo "Skip nVidia's libGL on Ubuntu 10!"
-        GL_LD_PRELOAD="$GL_PATH $LD_PRELOAD"
-    fi
-fi
-fi
-
-if [ "x$SERIALSTDIO" = "x1" ]; then
-        echo "Interrupt character is '^]'"
-        stty intr ^]
-fi
-
-
-# Preserve the multiplexing behavior for the monitor that would be there based
-# on whether nographic is used.
-if echo "$QEMUOPTIONS $SERIALOPTS $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT" | grep -- "-nographic"; then
-    FIRST_SERIAL_OPT="-serial mon:stdio"
-else
-    FIRST_SERIAL_OPT="-serial mon:vc"
-fi
-
-# qemuarm64 uses virtio for any additional serial ports so the normal mechanism
-# of using -serial will not work
-if [ "$MACHINE" = "qemuarm64" ]; then
-    SECOND_SERIAL_OPT="$SCRIPT_QEMU_EXTRA_OPT -device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
-else
-    SECOND_SERIAL_OPT="-serial null"
-fi
-
-# We always want a ttyS1. Since qemu by default adds a serial port when
-# nodefaults is not specified, it seems that all that would be needed is to
-# make sure a "-serial" is there. However, it appears that when "-serial" is
-# specified, it ignores the default serial port that is normally added.
-# So here we make sure to add two -serial if there are none. And only one
-# if there is one -serial already.
-NUM_SERIAL_OPTS=`echo $QEMUOPTIONS $SERIALOPTS $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT | sed -e 's/ /\n/g' | grep --count -- -serial`
-
-if [ "$NUM_SERIAL_OPTS" = "0" ]; then
-    SCRIPT_QEMU_EXTRA_OPT="$SCRIPT_QEMU_EXTRA_OPT $FIRST_SERIAL_OPT $SECOND_SERIAL_OPT"
-elif [ "$NUM_SERIAL_OPTS" = "1" ]; then
-    SCRIPT_QEMU_EXTRA_OPT="$SCRIPT_QEMU_EXTRA_OPT $SECOND_SERIAL_OPT"
-fi
-
-echo "Running $QEMU..."
-# -no-reboot is a mandatory option - see bug #100
-if [ "$IS_VM" = "true" ]; then
-    # Check root=/dev/sdX or root=/dev/vdX
-    [ ! -e "$VM" ] && error "VM image is not found!"
-    if grep -q 'root=/dev/sd' $VM; then
-        echo "Using scsi drive"
-        VM_DRIVE="-drive if=none,id=hd,file=$VM -device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd"
-    elif grep -q 'root=/dev/hd' $VM; then
-        echo "Using ide drive"
-        VM_DRIVE="$VM"
-    else
-        echo "Using virtio block drive"
-        VM_DRIVE="-drive if=virtio,file=$VM"
-    fi
-    QEMU_FIRE="$QEMUBIN $VM_DRIVE $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT"
-    echo $QEMU_FIRE
-    LD_PRELOAD="$GL_LD_PRELOAD" $QEMU_FIRE
-elif [ "$FSTYPE" = "iso" -o "$FSTYPE" = "wic" ]; then
-    QEMU_FIRE="$QEMUBIN $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT"
-    echo $QEMU_FIRE
-    LD_PRELOAD="$GL_LD_PRELOAD" $QEMU_FIRE
-else
-    QEMU_FIRE="$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SLIRP_CMD $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT"
-    echo $QEMU_FIRE -append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
-    LD_PRELOAD="$GL_LD_PRELOAD" $QEMU_FIRE -append "$KERNCMDLINE $SCRIPT_KERNEL_OPT"
-fi
-ret=$?
-if [ "$SLIRP_ENABLED" != "yes" ]; then
-        cleanup
-fi
-
-#set the original stty values before exit
-stty ${ORIG_STTY}
-trap - INT TERM QUIT
-
-return $ret
diff --git a/import-layers/yocto-poky/scripts/send-error-report b/import-layers/yocto-poky/scripts/send-error-report
index a29feff..15b5e84 100755
--- a/import-layers/yocto-poky/scripts/send-error-report
+++ b/import-layers/yocto-poky/scripts/send-error-report
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Sends an error report (if the report-error class was enabled) to a
 # remote server.
@@ -7,7 +7,7 @@
 # Author: Andreea Proca <andreea.b.proca@intel.com>
 # Author: Michael Wood <michael.g.wood@intel.com>
 
-import urllib2
+import urllib.request, urllib.error
 import sys
 import json
 import os
@@ -25,10 +25,10 @@
 logging.basicConfig(format='%(levelname)s: %(message)s')
 
 def getPayloadLimit(url):
-    req = urllib2.Request(url, None)
+    req = urllib.request.Request(url, None)
     try:
-        response = urllib2.urlopen(req)
-    except urllib2.URLError as e:
+        response = urllib.request.urlopen(req)
+    except urllib.error.URLError as e:
         # Use this opportunity to bail out if we can't even contact the server
         log.error("Could not contact server: " + url)
         log.error(e.reason)
@@ -44,12 +44,12 @@
 
 def ask_for_contactdetails():
     print("Please enter your name and your email (optionally), they'll be saved in the file you send.")
-    username = raw_input("Name (required): ")
-    email = raw_input("E-mail (not required): ")
+    username = input("Name (required): ")
+    email = input("E-mail (not required): ")
     return username, email
 
 def edit_content(json_file_path):
-    edit = raw_input("Review information before sending? (y/n): ")
+    edit = input("Review information before sending? (y/n): ")
     if 'y' in edit or 'Y' in edit:
         editor = os.environ.get('EDITOR', None)
         if editor:
@@ -108,7 +108,7 @@
         if max_log_size != 0:
             for fail in jsondata['failures']:
                 if len(fail['log']) > max_log_size:
-                    print "Truncating log to allow for upload"
+                    print("Truncating log to allow for upload")
                     fail['log'] = fail['log'][-max_log_size:]
 
         data = json.dumps(jsondata, indent=4, sort_keys=True)
@@ -125,7 +125,7 @@
         with open(args.error_file, 'r') as json_fp:
             data = json_fp.read()
 
-    return data
+    return data.encode('utf-8')
 
 
 def send_data(data, args):
@@ -136,14 +136,14 @@
     else:
         url = "http://"+args.server+"/ClientPost/"
 
-    req = urllib2.Request(url, data=data, headers=headers)
+    req = urllib.request.Request(url, data=data, headers=headers)
     try:
-        response = urllib2.urlopen(req)
-    except urllib2.HTTPError, e:
+        response = urllib.request.urlopen(req)
+    except urllib.error.HTTPError as e:
         logging.error(e.reason)
         sys.exit(1)
 
-    print response.read()
+    print(response.read())
 
 
 if __name__ == '__main__':
@@ -192,7 +192,7 @@
     args = arg_parse.parse_args()
 
     if (args.json == False):
-        print "Preparing to send errors to: "+args.server
+        print("Preparing to send errors to: "+args.server)
 
     data = prepare_data(args)
     send_data(data, args)
diff --git a/import-layers/yocto-poky/scripts/swabber-strace-attach b/import-layers/yocto-poky/scripts/swabber-strace-attach
deleted file mode 100755
index bb0391a..0000000
--- a/import-layers/yocto-poky/scripts/swabber-strace-attach
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-import subprocess
-
-# Detach from the controlling terminal and parent process by forking twice to daemonize ourselves,
-# then run the command passed as argv[1]. Send log data to argv[2].
-
-pid = os.fork()
-if (pid == 0):
-    os.setsid()
-    pid = os.fork()
-    if (pid != 0):
-        os._exit(0)
-else:
-    sys.exit()
-
-
-si = file(os.devnull, 'r')
-so = file(sys.argv[2], 'w')
-se = so
-
-# Replace those fds with our own
-os.dup2(si.fileno(), sys.stdin.fileno())
-os.dup2(so.fileno(), sys.stdout.fileno())
-os.dup2(se.fileno(), sys.stderr.fileno())
-
-ret = subprocess.call(sys.argv[1], shell=True)
-
-os._exit(ret)
-
diff --git a/import-layers/yocto-poky/scripts/sysroot-relativelinks.py b/import-layers/yocto-poky/scripts/sysroot-relativelinks.py
index ac26367..e44eba2 100755
--- a/import-layers/yocto-poky/scripts/sysroot-relativelinks.py
+++ b/import-layers/yocto-poky/scripts/sysroot-relativelinks.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import sys
 import os
 
diff --git a/import-layers/yocto-poky/scripts/test-dependencies.sh b/import-layers/yocto-poky/scripts/test-dependencies.sh
index 0170947..00c50e0 100755
--- a/import-layers/yocto-poky/scripts/test-dependencies.sh
+++ b/import-layers/yocto-poky/scripts/test-dependencies.sh
@@ -141,7 +141,7 @@
   bitbake -k $targets 2>&1 | tee -a ${OUTPUT1}/complete.log
   RESULT+=${PIPESTATUS[0]}
   grep "ERROR: Task.*failed" ${OUTPUT1}/complete.log > ${OUTPUT1}/failed-tasks.log
-  cat ${OUTPUT1}/failed-tasks.log | sed 's@.*/@@g; s@_.*@@g; s@\.bb, .*@@g' | sort -u > ${OUTPUT1}/failed-recipes.log
+  cat ${OUTPUT1}/failed-tasks.log | sed 's@.*/@@g; s@_.*@@g; s@\.bb, .*@@g; s@\.bb;.*@@g' | sort -u > ${OUTPUT1}/failed-recipes.log
 }
 
 build_every_recipe() {
@@ -178,7 +178,7 @@
       RESULT+=${RECIPE_RESULT}
       mv ${OUTPUTB}/${recipe}.log ${OUTPUTB}/failed/
       grep "ERROR: Task.*failed"  ${OUTPUTB}/failed/${recipe}.log | tee -a ${OUTPUTB}/failed-tasks.log
-      grep "ERROR: Task.*failed"  ${OUTPUTB}/failed/${recipe}.log | sed 's@.*/@@g; s@_.*@@g; s@\.bb, .*@@g' >> ${OUTPUTB}/failed-recipes.log
+      grep "ERROR: Task.*failed"  ${OUTPUTB}/failed/${recipe}.log | sed 's@.*/@@g; s@_.*@@g; s@\.bb, .*@@g; s@\.bb;.*@@g' >> ${OUTPUTB}/failed-recipes.log
       # and append also ${recipe} in case the failed task was from some dependency
       echo ${recipe} >> ${OUTPUTB}/failed-recipes.log
     else
diff --git a/import-layers/yocto-poky/scripts/test-remote-image b/import-layers/yocto-poky/scripts/test-remote-image
index 9c5b015..27b1cae 100755
--- a/import-layers/yocto-poky/scripts/test-remote-image
+++ b/import-layers/yocto-poky/scripts/test-remote-image
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Copyright (c) 2014 Intel Corporation
 #
@@ -92,13 +92,11 @@
     parser.add_argument('--skip-download', required=False, action="store_true", dest="skip_download", default=False, help='Skip downloading the images completely. This needs the correct files to be present in the directory specified by the target profile.')
     return parser
 
-class BaseTargetProfile(object):
+class BaseTargetProfile(object, metaclass=ABCMeta):
     """
     This class defines the meta profile for a specific target (MACHINE type + image type).
     """
 
-    __metaclass__ = ABCMeta
-
     def __init__(self, image_type):
         self.image_type = image_type
 
@@ -191,13 +189,11 @@
         return controller.get_extra_files()
 
 
-class BaseRepoProfile(object):
+class BaseRepoProfile(object, metaclass=ABCMeta):
     """
     This class defines the meta profile for an images repository.
     """
 
-    __metaclass__ = ABCMeta
-
     def __init__(self, repolink, localdir):
         self.localdir = localdir
         self.repolink = repolink
@@ -289,7 +285,7 @@
         result = bitbake("%s -c testimage" % image_type, ignore_status=True, postconfig=postconfig)
         testimage_results = ftools.read_file(os.path.join(get_bb_var("T", image_type), "log.do_testimage"))
         log.info('Runtime tests results for %s:' % image_type)
-        print testimage_results
+        print(testimage_results)
         return result
 
     # Start the procedure!
diff --git a/import-layers/yocto-poky/scripts/tiny/dirsize.py b/import-layers/yocto-poky/scripts/tiny/dirsize.py
index 40ff4ab..ddccc5a 100755
--- a/import-layers/yocto-poky/scripts/tiny/dirsize.py
+++ b/import-layers/yocto-poky/scripts/tiny/dirsize.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2011, Intel Corporation.
 # All rights reserved.
@@ -52,26 +52,22 @@
         self.size = 0
         self.records = []
 
-    def __cmp__(this, that):
+    def __lt__(this, that):
         if that is None:
-            return 1
+            return False
         if not isinstance(that, Record):
             raise TypeError
         if len(this.records) > 0 and len(that.records) == 0:
-            return -1
-        if len(this.records) == 0 and len(that.records) > 0:
-            return 1
-        if this.size < that.size:
-            return -1
+            return False
         if this.size > that.size:
-            return 1
-        return 0
+            return False
+        return True
 
     def show(self, minsize):
         total = 0
         if self.size <= minsize:
             return 0
-        print "%10d %s" % (self.size, self.path)
+        print("%10d %s" % (self.size, self.path))
         for r in self.records:
             total += r.show(minsize)
         if len(self.records) == 0:
@@ -85,8 +81,8 @@
         minsize = int(sys.argv[1])
     rootfs = Record.create(".")
     total = rootfs.show(minsize)
-    print "Displayed %d/%d bytes (%.2f%%)" % \
-          (total, rootfs.size, 100 * float(total) / rootfs.size)
+    print("Displayed %d/%d bytes (%.2f%%)" % \
+          (total, rootfs.size, 100 * float(total) / rootfs.size))
 
 
 if __name__ == "__main__":
diff --git a/import-layers/yocto-poky/scripts/tiny/ksize.py b/import-layers/yocto-poky/scripts/tiny/ksize.py
index 4006f2f..b9d2b19 100755
--- a/import-layers/yocto-poky/scripts/tiny/ksize.py
+++ b/import-layers/yocto-poky/scripts/tiny/ksize.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2011, Intel Corporation.
 # All rights reserved.
@@ -28,16 +28,14 @@
 import getopt
 import os
 from subprocess import *
-from string import join
-
 
 def usage():
     prog = os.path.basename(sys.argv[0])
-    print 'Usage: %s [OPTION]...' % (prog)
-    print '  -d,                 display an additional level of drivers detail'
-    print '  -h, --help          display this help and exit'
-    print ''
-    print 'Run %s from the top-level Linux kernel build directory.' % (prog)
+    print('Usage: %s [OPTION]...' % prog)
+    print('  -d,                 display an additional level of drivers detail')
+    print('  -h, --help          display this help and exit')
+    print('')
+    print('Run %s from the top-level Linux kernel build directory.' % prog)
 
 
 class Sizes:
@@ -55,8 +53,8 @@
             self.text = self.data = self.bss = self.total = 0
 
     def show(self, indent=""):
-        print "%-32s %10d | %10d %10d %10d" % \
-              (indent+self.title, self.total, self.text, self.data, self.bss)
+        print("%-32s %10d | %10d %10d %10d" % \
+              (indent+self.title, self.total, self.text, self.data, self.bss))
 
 
 class Report:
@@ -66,7 +64,7 @@
 
         p = Popen("ls " + path + "/*.o | grep -v built-in.o",
                   shell=True, stdout=PIPE, stderr=PIPE)
-        glob = join(p.communicate()[0].splitlines())
+        glob = ' '.join(p.communicate()[0].splitlines())
         oreport = Report(glob, path + "/*.o")
         oreport.sizes.title = path + "/*.o"
         r.parts.append(oreport)
@@ -101,22 +99,22 @@
 
     def show(self, indent=""):
         rule = str.ljust(indent, 80, '-')
-        print "%-32s %10s | %10s %10s %10s" % \
-              (indent+self.title, "total", "text", "data", "bss")
-        print rule
+        print("%-32s %10s | %10s %10s %10s" % \
+              (indent+self.title, "total", "text", "data", "bss"))
+        print(rule)
         self.sizes.show(indent)
-        print rule
+        print(rule)
         for p in self.parts:
             if p.sizes.total > 0:
                 p.sizes.show(indent)
-        print rule
-        print "%-32s %10d | %10d %10d %10d" % \
+        print(rule)
+        print("%-32s %10d | %10d %10d %10d" % \
               (indent+"sum", self.totals["total"], self.totals["text"],
-               self.totals["data"], self.totals["bss"])
-        print "%-32s %10d | %10d %10d %10d" % \
+               self.totals["data"], self.totals["bss"]))
+        print("%-32s %10d | %10d %10d %10d" % \
               (indent+"delta", self.deltas["total"], self.deltas["text"],
-               self.deltas["data"], self.deltas["bss"])
-        print "\n"
+               self.deltas["data"], self.deltas["bss"]))
+        print("\n")
 
     def __cmp__(this, that):
         if that is None:
@@ -133,8 +131,8 @@
 def main():
     try:
         opts, args = getopt.getopt(sys.argv[1:], "dh", ["help"])
-    except getopt.GetoptError, err:
-        print '%s' % str(err)
+    except getopt.GetoptError as err:
+        print('%s' % str(err))
         usage()
         sys.exit(2)
 
diff --git a/import-layers/yocto-poky/scripts/verify-bashisms b/import-layers/yocto-poky/scripts/verify-bashisms
new file mode 100755
index 0000000..0741e18
--- /dev/null
+++ b/import-layers/yocto-poky/scripts/verify-bashisms
@@ -0,0 +1,116 @@
+#!/usr/bin/env python3
+
+import sys, os, subprocess, re, shutil
+
+whitelist = (
+    # type is supported by dash
+    'if type systemctl >/dev/null 2>/dev/null; then',
+    'if type systemd-tmpfiles >/dev/null 2>/dev/null; then',
+    'if type update-rc.d >/dev/null 2>/dev/null; then',
+    'command -v',
+    # HOSTNAME is set locally
+    'buildhistory_single_commit "$CMDLINE" "$HOSTNAME"',
+    # False-positive, match is a grep not shell expression
+    'grep "^$groupname:[^:]*:[^:]*:\\([^,]*,\\)*$username\\(,[^,]*\\)*"',
+    # TODO verify dash's '. script args' behaviour
+    '. $target_sdk_dir/${oe_init_build_env_path} $target_sdk_dir >> $LOGFILE'
+    )
+
+def is_whitelisted(s):
+    for w in whitelist:
+        if w in s:
+            return True
+    return False
+
+def process(recipe, function, script):
+    import tempfile
+
+    if not script.startswith("#!"):
+        script = "#! /bin/sh\n" + script
+
+    fn = tempfile.NamedTemporaryFile(mode="w+t")
+    fn.write(script)
+    fn.flush()
+
+    try:
+        subprocess.check_output(("checkbashisms.pl", fn.name), universal_newlines=True, stderr=subprocess.STDOUT)
+        # No bashisms, so just return
+        return
+    except subprocess.CalledProcessError as e:
+        # TODO check exit code is 1
+
+        # Replace the temporary filename with the function and split it
+        output = e.output.replace(fn.name, function).splitlines()
+        if len(results) % 2 != 0:
+            print("Unexpected output from checkbashism: %s" % str(output))
+            return
+
+        # Turn the output into a list of (message, source) values
+        result = []
+        # Check the results against the whitelist
+        for message, source in zip(output[0::2], output[1::2]):
+            if not is_whitelisted(source):
+                result.append((message, source))
+        return result
+
+def get_tinfoil():
+    scripts_path = os.path.dirname(os.path.realpath(__file__))
+    lib_path = scripts_path + '/lib'
+    sys.path = sys.path + [lib_path]
+    import scriptpath
+    scriptpath.add_bitbake_lib_path()
+    import bb.tinfoil
+    tinfoil = bb.tinfoil.Tinfoil()
+    tinfoil.prepare()
+    # tinfoil.logger.setLevel(logging.WARNING)
+    return tinfoil
+
+if __name__=='__main__':
+    import shutil
+    if shutil.which("checkbashisms.pl") is None:
+        print("Cannot find checkbashisms.pl on $PATH")
+        sys.exit(1)
+
+    tinfoil = get_tinfoil()
+
+    # This is only the default configuration and should iterate over
+    # recipecaches to handle multiconfig environments
+    pkg_pn = tinfoil.cooker.recipecaches[""].pkg_pn
+
+    # TODO: use argparse and have --help
+    if len(sys.argv) > 1:
+        initial_pns = sys.argv[1:]
+    else:
+        initial_pns = sorted(pkg_pn)
+
+    pns = []
+    print("Generating file list...")
+    for pn in initial_pns:
+        for fn in pkg_pn[pn]:
+            # There's no point checking multiple BBCLASSEXTENDed variants of the same recipe
+            realfn, _, _ = bb.cache.virtualfn2realfn(fn)
+            if realfn not in pns:
+                pns.append(realfn)
+
+
+    def func(fn):
+        result = []
+        data = tinfoil.parse_recipe_file(fn)
+        for key in data.keys():
+            if data.getVarFlag(key, "func", True) and not data.getVarFlag(key, "python", True):
+                script = data.getVar(key, False)
+                if not script: continue
+                #print ("%s:%s" % (fn, key))
+                r = process(fn, key, script)
+                if r: result.extend(r)
+        return fn, result
+
+    print("Scanning scripts...\n")
+    import multiprocessing
+    pool = multiprocessing.Pool()
+    for pn,results in pool.imap(func, pns):
+        if results:
+            print(pn)
+            for message,source in results:
+                print(" %s\n  %s" % (message, source))
+            print()
diff --git a/import-layers/yocto-poky/scripts/wic b/import-layers/yocto-poky/scripts/wic
index 2286f20..fe2c33f 100755
--- a/import-layers/yocto-poky/scripts/wic
+++ b/import-layers/yocto-poky/scripts/wic
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -28,7 +28,6 @@
 # AUTHORS
 # Tom Zanussi <tom.zanussi (at] linux.intel.com>
 #
-
 __version__ = "0.2.0"
 
 # Python Standard Library modules
@@ -114,6 +113,7 @@
     parser.add_option("-c", "--compress-with", choices=("gzip", "bzip2", "xz"),
                       dest='compressor',
                       help="compress image with specified compressor")
+    parser.add_option("-m", "--bmap", action="store_true", help="generate .bmap")
     parser.add_option("-v", "--vars", dest='vars_dir',
                       help="directory with <image>.env files that store "
                            "bitbake variables")
@@ -140,8 +140,8 @@
             if not val:
                 missed.append(opt)
         if missed:
-            print "The following build artifacts are not specified:"
-            print "  " + ", ".join(missed)
+            print("The following build artifacts are not specified:")
+            print("  " + ", ".join(missed))
             sys.exit(1)
 
     if options.image_name:
@@ -153,12 +153,12 @@
         BB_VARS.vars_dir = options.vars_dir
 
     if options.build_check:
-        print "Checking basic build environment..."
+        print("Checking basic build environment...")
         if not engine.verify_build_env():
-            print "Couldn't verify build environment, exiting\n"
+            print("Couldn't verify build environment, exiting\n")
             sys.exit(1)
         else:
-            print "Done.\n"
+            print("Done.\n")
 
     bootimg_dir = ""
 
@@ -168,7 +168,7 @@
             if options.debug:
                 argv.append("--debug")
 
-            print "Building rootfs...\n"
+            print("Building rootfs...\n")
             if bitbake_main(BitBakeConfigParameters(argv),
                             cookerdata.CookerConfiguration()):
                 sys.exit(1)
@@ -179,7 +179,7 @@
                                          options.image_name)
     else:
         if options.build_rootfs:
-            print "Image name is not specified, exiting. (Use -e/--image-name to specify it)\n"
+            print("Image name is not specified, exiting. (Use -e/--image-name to specify it)\n")
             sys.exit(1)
 
     wks_file = args[0]
@@ -187,9 +187,9 @@
     if not wks_file.endswith(".wks"):
         wks_file = engine.find_canned_image(scripts_path, wks_file)
         if not wks_file:
-            print "No image named %s found, exiting.  (Use 'wic list images' "\
+            print("No image named %s found, exiting.  (Use 'wic list images' "\
                   "to list available images, or specify a fully-qualified OE "\
-                  "kickstart (.wks) filename)\n" % args[0]
+                  "kickstart (.wks) filename)\n" % args[0])
             sys.exit(1)
 
     image_output_dir = ""
@@ -204,16 +204,16 @@
         kernel_dir = options.kernel_dir
         native_sysroot = options.native_sysroot
         if rootfs_dir and not os.path.isdir(rootfs_dir):
-            print "--roofs-dir (-r) not found, exiting\n"
+            print("--roofs-dir (-r) not found, exiting\n")
             sys.exit(1)
         if not os.path.isdir(bootimg_dir):
-            print "--bootimg-dir (-b) not found, exiting\n"
+            print("--bootimg-dir (-b) not found, exiting\n")
             sys.exit(1)
         if not os.path.isdir(kernel_dir):
-            print "--kernel-dir (-k) not found, exiting\n"
+            print("--kernel-dir (-k) not found, exiting\n")
             sys.exit(1)
         if not os.path.isdir(native_sysroot):
-            print "--native-sysroot (-n) not found, exiting\n"
+            print("--native-sysroot (-n) not found, exiting\n")
             sys.exit(1)
     else:
         not_found = not_found_dir = ""
@@ -226,12 +226,12 @@
         if not_found:
             if not not_found_dir:
                 not_found_dir = "Completely missing artifact - wrong image (.wks) used?"
-            print "Build artifacts not found, exiting."
-            print "  (Please check that the build artifacts for the machine"
-            print "   selected in local.conf actually exist and that they"
-            print "   are the correct artifacts for the image (.wks file)).\n"
-            print "The artifact that couldn't be found was %s:\n  %s" % \
-                (not_found, not_found_dir)
+            print("Build artifacts not found, exiting.")
+            print("  (Please check that the build artifacts for the machine")
+            print("   selected in local.conf actually exist and that they")
+            print("   are the correct artifacts for the image (.wks file)).\n")
+            print("The artifact that couldn't be found was %s:\n  %s" % \
+                (not_found, not_found_dir))
             sys.exit(1)
 
     krootfs_dir = options.rootfs_dir
@@ -241,10 +241,10 @@
 
     rootfs_dir = rootfs_dir_to_args(krootfs_dir)
 
-    print "Creating image(s)...\n"
+    print("Creating image(s)...\n")
     engine.wic_create(wks_file, rootfs_dir, bootimg_dir, kernel_dir,
                       native_sysroot, scripts_path, image_output_dir,
-                      options.compressor, options.debug)
+                      options.compressor, options.bmap, options.debug)
 
 
 def wic_list_subcommand(args, usage_str):
@@ -294,7 +294,7 @@
 
 
 def start_logging(loglevel):
-    logging.basicConfig(filname='wic.log', filemode='w', level=loglevel)
+    logging.basicConfig(filename='wic.log', filemode='w', level=loglevel)
 
 
 def main(argv):
@@ -318,6 +318,6 @@
     try:
         sys.exit(main(sys.argv[1:]))
     except WicError as err:
-        print >> sys.stderr, "ERROR:", err
+        print("ERROR:", err, file=sys.stderr)
         sys.exit(1)
 
diff --git a/import-layers/yocto-poky/scripts/wipe-sysroot b/import-layers/yocto-poky/scripts/wipe-sysroot
index 9e067e8..5e6b1a4 100755
--- a/import-layers/yocto-poky/scripts/wipe-sysroot
+++ b/import-layers/yocto-poky/scripts/wipe-sysroot
@@ -51,4 +51,4 @@
 rm -rf $STAMPS_DIR/*/*/*.do_packagedata_setscene.*
 
 # The sstate manifests
-rm -rf $SSTATE_MANIFESTS/manifest-*.populate-sysroot
+rm -rf $SSTATE_MANIFESTS/manifest-*.populate_sysroot
diff --git a/import-layers/yocto-poky/scripts/yocto-bsp b/import-layers/yocto-poky/scripts/yocto-bsp
index 82a050e..6fb1f41 100755
--- a/import-layers/yocto-poky/scripts/yocto-bsp
+++ b/import-layers/yocto-poky/scripts/yocto-bsp
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -30,120 +30,128 @@
 # Tom Zanussi <tom.zanussi (at] intel.com>
 #
 
-__version__ = "0.1.0"
-
 import os
 import sys
-import optparse
+import argparse
 import logging
 
-scripts_path = os.path.abspath(os.path.dirname(os.path.abspath(sys.argv[0])))
-lib_path = scripts_path + '/lib'
-sys.path = sys.path + [lib_path]
+scripts_path = os.path.dirname(os.path.realpath(__file__))
+sys.path.insert(0, scripts_path + '/lib')
+import argparse_oe
 
 from bsp.help import *
 from bsp.engine import *
 
 
-def yocto_bsp_create_subcommand(args, usage_str):
+def do_create_bsp(args):
     """
     Command-line handling for BSP creation.  The real work is done by
     bsp.engine.yocto_bsp_create()
     """
-    parser = optparse.OptionParser(usage = usage_str)
-
-    parser.add_option("-o", "--outdir", dest = "outdir", action = "store",
-                      help = "name of BSP dir to create")
-    parser.add_option("-i", "--infile", dest = "properties_file", action = "store",
-                      help = "name of file containing the values for BSP properties as a JSON file")
-    parser.add_option("-c", "--codedump", dest = "codedump", action = "store_true",
-                      default = False, help = "dump the generated code to bspgen.out")
-    parser.add_option("-s", "--skip-git-check", dest = "git_check", action = "store_false",
-                      default = True, help = "skip the git connectivity check")
-    (options, args) = parser.parse_args(args)
-
-    if len(args) != 2:
-        logging.error("Wrong number of arguments, exiting\n")
-        parser.print_help()
-        sys.exit(1)
-
-    machine = args[0]
-    karch = args[1]
-
-    if options.outdir:
-        bsp_output_dir = options.outdir
+    if args.outdir:
+        bsp_output_dir = args.outdir
     else:
-        bsp_output_dir = "meta-" + machine
+        bsp_output_dir = "meta-" + args.bspname
 
-    if options.git_check and not options.properties_file:
-        print "Checking basic git connectivity..."
+    if args.git_check and not args.properties_file:
+        print("Checking basic git connectivity...")
         if not verify_git_repo(GIT_CHECK_URI):
-            print "Couldn't verify git connectivity, exiting\n"
-            print "Details: couldn't access %s" % GIT_CHECK_URI
-            print "         (this most likely indicates a network connectivity problem or"
-            print "         a misconfigured git intallation)"
+            print("Couldn't verify git connectivity, exiting\n")
+            print("Details: couldn't access %s" % GIT_CHECK_URI)
+            print("         (this most likely indicates a network connectivity problem or")
+            print("         a misconfigured git intallation)")
             sys.exit(1)
         else:
-            print "Done.\n"
+            print("Done.\n")
 
-    yocto_bsp_create(machine, karch, scripts_path, bsp_output_dir, options.codedump, options.properties_file)
+    yocto_bsp_create(args.bspname, args.karch, scripts_path, bsp_output_dir, args.codedump, args.properties_file)
 
 
-def yocto_bsp_list_subcommand(args, usage_str):
+def do_list_bsp(args):
     """
     Command-line handling for listing available BSP properties and
     values.  The real work is done by bsp.engine.yocto_bsp_list()
     """
-    parser = optparse.OptionParser(usage = usage_str)
+    yocto_bsp_list(args, scripts_path)
 
-    parser.add_option("-o", "--outfile", action = "store", dest = "properties_file",
-                      help = "dump the possible values for BSP properties to a JSON file")
+def do_help_bsp(args):
+    """
+    Command-line help tool
+    """
+    help_text = command_help.get(args.subcommand)
+    pager = subprocess.Popen('less', stdin=subprocess.PIPE)
+    pager.communicate(bytes(help_text,'UTF-8'))
 
-    (options, args) = parser.parse_args(args)
-
-    if not yocto_bsp_list(args, scripts_path, options.properties_file):
-        logging.error("Bad list arguments, exiting\n")
-        parser.print_help()
-        sys.exit(1)
-
-
-subcommands = {
-    "create": [yocto_bsp_create_subcommand,
-               yocto_bsp_create_usage,
-               yocto_bsp_create_help],
-    "list":   [yocto_bsp_list_subcommand,
-               yocto_bsp_list_usage,
-               yocto_bsp_list_help],
+command_help = {
+    "create": yocto_bsp_create_help,
+    "list":  yocto_bsp_list_help
 }
 
 
 def start_logging(loglevel):
-    logging.basicConfig(filname = 'yocto-bsp.log', filemode = 'w', level=loglevel)
+    logging.basicConfig(filename = 'yocto-bsp.log', filemode = 'w', level=loglevel)
 
 
 def main():
-    parser = optparse.OptionParser(version = "yocto-bsp version %s" % __version__,
-                                   usage = yocto_bsp_usage)
+    parser = argparse_oe.ArgumentParser(description='Create a customized Yocto BSP layer.',
+                      epilog="See '%(prog)s help <subcommand>' for more information on a specific command.")
 
-    parser.disable_interspersed_args()
-    parser.add_option("-D", "--debug", dest = "debug", action = "store_true",
+    parser.add_argument("-D", "--debug", action = "store_true",
                       default = False, help = "output debug information")
+    subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
+    subparsers.required = True
 
-    (options, args) = parser.parse_args()
+    create_parser = subparsers.add_parser('create', help='Create a new Yocto BSP',
+                                          description='Create a new Yocto BSP')
+    create_parser.add_argument('bspname', metavar='bsp-name', help='name for the new BSP')
+    create_parser.add_argument('karch', help='kernel architecture')
+    create_parser.add_argument("-o", "--outdir", help = "name of BSP dir to create")
+    create_parser.add_argument("-i", "--infile", dest = "properties_file",
+                      help = "name of file containing the values for BSP properties as a JSON file")
+    create_parser.add_argument("-c", "--codedump", action = "store_true", default = False,
+                      help = "dump the generated code to bspgen.out")
+    create_parser.add_argument("-s", "--skip-git-check", dest = "git_check", action = "store_false",
+                      default = True, help = "skip the git connectivity check")
+    create_parser.set_defaults(func=do_create_bsp)
+
+
+    list_parser = subparsers.add_parser('list', help='List available values for options and BSP properties')
+    list_parser.add_argument('karch', help='kernel architecture')
+    prop_group = list_parser.add_mutually_exclusive_group()
+    prop_group.add_argument("--properties", action = "store_true", default = False,
+                      help = "list all properties for the kernel architecture")
+    prop_group.add_argument("--property", help = "list available values for the property")
+    list_parser.add_argument("-o", "--outfile", dest = "properties_file",
+                      help = "dump the possible values for BSP properties to a JSON file")
+
+    list_parser.set_defaults(func=do_list_bsp)
+
+    help_parser = subparsers.add_parser('help',
+                      description='This command displays detailed help for the specified subcommand.')
+    help_parser.add_argument('subcommand', nargs='?')
+    help_parser.set_defaults(func=do_help_bsp)
+
+    args = parser.parse_args()
 
     loglevel = logging.INFO
-    if options.debug:
+    if args.debug:
         loglevel = logging.DEBUG
     start_logging(loglevel)
 
-    if len(args):
-        if args[0] == "help":
-            if len(args) == 1:
-                parser.print_help()
-                sys.exit()
+    if args._subparser_name == "list":
+        if not args.karch == "karch" and not args.properties and not args.property:
+            print ("yocto-bsp list: error: one of the arguments --properties --property is required")
+            list_parser.print_help()
 
-    invoke_subcommand(args, parser, yocto_bsp_help_usage, subcommands)
+    if args._subparser_name == "help":
+        if not args.subcommand:
+            parser.print_help()
+            return 0
+        elif not command_help.get(args.subcommand):
+            print ("yocto-bsp help: No manual entry for %s" % args.subcommand)
+            return 1
 
+    return args.func(args)
 
 if __name__ == "__main__":
     try:
@@ -153,4 +161,3 @@
         import traceback
         traceback.print_exc()
     sys.exit(ret)
-
diff --git a/import-layers/yocto-poky/scripts/yocto-kernel b/import-layers/yocto-poky/scripts/yocto-kernel
index daaad07..5c70d0c 100755
--- a/import-layers/yocto-poky/scripts/yocto-kernel
+++ b/import-layers/yocto-poky/scripts/yocto-kernel
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -351,7 +351,7 @@
 
 
 def start_logging(loglevel):
-    logging.basicConfig(filname = 'yocto-kernel.log', filemode = 'w', level=loglevel)
+    logging.basicConfig(filename = 'yocto-kernel.log', filemode = 'w', level=loglevel)
 
 
 def main():
diff --git a/import-layers/yocto-poky/scripts/yocto-layer b/import-layers/yocto-poky/scripts/yocto-layer
index 356972e..d58faca 100755
--- a/import-layers/yocto-poky/scripts/yocto-layer
+++ b/import-layers/yocto-poky/scripts/yocto-layer
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
@@ -113,7 +113,7 @@
 
 
 def start_logging(loglevel):
-    logging.basicConfig(filname = 'yocto-layer.log', filemode = 'w', level=loglevel)
+    logging.basicConfig(filename = 'yocto-layer.log', filemode = 'w', level=loglevel)
 
 
 def main():